diff --git a/.github/ISSUE_TEMPLATE.md b/.github/ISSUE_TEMPLATE.md index d7646ecb97b..582ca3e4268 100644 --- a/.github/ISSUE_TEMPLATE.md +++ b/.github/ISSUE_TEMPLATE.md @@ -13,5 +13,8 @@ Why do you think this is an important issue? **Steps to reproduce the problem**: The most important section. Review everything you did leading up to causing the issue. +**When did the problem start happening**: +If your report is about something that used to work but no longer does. When was the last time you remember it working? + **Possibly related stuff (which gamemode was it? What were you doing at the time? Was -anything else out of the ordinary happening?)**: Anything else you can tell us. \ No newline at end of file +anything else out of the ordinary happening?)**: Anything else you can tell us. diff --git a/.travis.yml b/.travis.yml index 1ee02d4bbee..e25b3495f45 100644 --- a/.travis.yml +++ b/.travis.yml @@ -18,8 +18,8 @@ addons: env: global: - - BYOND_MAJOR="511" - - BYOND_MINOR="1385" + - BYOND_MAJOR="512" + - BYOND_MINOR="1454" - BYOND_MACRO_COUNT=4 matrix: - DM_MAPFILE="cyberiad" diff --git a/README.md b/README.md index 5a182f9ddfd..2f4e16270c3 100644 --- a/README.md +++ b/README.md @@ -139,6 +139,3 @@ Creative Commons 3.0 BY-NC-SA license All other assets including icons and sound files are licensed under the Creative Commons 3.0 BY-SA license (https://creativecommons.org/licenses/by-sa/3.0/), unless otherwise indicated. - - - diff --git a/_maps/map_files/Delta/delta.dmm b/_maps/map_files/Delta/delta.dmm index 92b65f1abcc..b6177f3dc76 100644 --- a/_maps/map_files/Delta/delta.dmm +++ b/_maps/map_files/Delta/delta.dmm @@ -1842,8 +1842,8 @@ "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) "aJw" = (/obj/effect/spawner/window/reinforced,/obj/structure/cable{icon_state = "0-4"; d2 = 4},/turf/simulated/floor/plating,/area/security/prison) "aJx" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; tag = ""},/obj/machinery/seed_extractor,/turf/simulated/floor/plasteel,/area/security/prison) -"aJy" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; tag = ""},/obj/machinery/atmospherics/unary/vent_scrubber{on = 1},/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/security/prison) -"aJz" = (/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/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/security/prison) +"aJy" = (/turf/space,/obj/machinery/atmospherics/pipe/simple/heat_exchanging,/turf/simulated/floor/plating/airless/catwalk,/area/space) +"aJz" = (/turf/space,/obj/machinery/atmospherics/pipe/simple/visible/yellow,/turf/simulated/floor/plating/airless/catwalk,/area/space) "aJA" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; tag = ""},/obj/machinery/atmospherics/unary/vent_pump{on = 1},/turf/simulated/floor/plasteel,/area/security/prison) "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) @@ -1853,7 +1853,7 @@ "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) "aJI" = (/obj/structure/cable{d2 = 8; icon_state = "0-8"},/obj/machinery/power/terminal{icon_state = "term"; dir = 1},/obj/effect/landmark{name = "blobstart"},/turf/simulated/floor/plating,/area/maintenance/auxsolarport) -"aJJ" = (/turf/space,/obj/machinery/atmospherics/pipe/simple/heat_exchanging,/turf/simulated/floor/plating/airless/catwalk,/area/space) +"aJJ" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; tag = ""},/obj/machinery/atmospherics/unary/vent_scrubber{on = 1},/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel,/area/security/prison) "aJK" = (/obj/machinery/door/airlock/external{frequency = 1379; icon_state = "door_locked"; id_tag = "solar_tool_outer"; locked = 1; name = "Engineering External Access"; req_access = null; req_access_txt = "32"},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; tag = ""},/turf/simulated/floor/plasteel,/area/maintenance/auxsolarport) "aJL" = (/obj/machinery/atmospherics/unary/vent_pump/high_volume{dir = 4; frequency = 1379; id_tag = "solar_tool_pump"},/obj/machinery/embedded_controller/radio/airlock/airlock_controller{frequency = 1379; id_tag = "solar_tool_airlock"; pixel_x = 0; pixel_y = 25; req_access_txt = "32"; tag_airpump = "solar_tool_pump"; tag_chamber_sensor = "solar_tool_sensor"; tag_exterior_door = "solar_tool_outer"; tag_interior_door = "solar_tool_inner"},/obj/machinery/airlock_sensor{frequency = 1379; id_tag = "solar_tool_sensor"; pixel_x = 0; pixel_y = 32},/obj/effect/decal/warning_stripes/yellow,/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; tag = ""},/turf/simulated/floor/plasteel,/area/maintenance/auxsolarport) "aJM" = (/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"; tag = ""},/obj/machinery/atmospherics/unary/vent_pump{dir = 4; on = 1},/obj/effect/decal/warning_stripes/east,/turf/simulated/floor/plating,/area/maintenance/auxsolarport) @@ -1915,7 +1915,7 @@ "aKQ" = (/turf/simulated/shuttle/wall{tag = "icon-swall11"; icon_state = "swall11"; dir = 2},/area/shuttle/supply) "aKR" = (/obj/machinery/hydroponics/constructable,/obj/item/seeds/glowshroom,/turf/simulated/floor/plasteel,/area/security/prison) "aKS" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/item/reagent_containers/glass/bucket,/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plating,/area/security/prison) -"aKT" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/security/prison) +"aKT" = (/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/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel,/area/security/prison) "aKU" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/item/plant_analyzer,/turf/simulated/floor/plasteel,/area/security/prison) "aKV" = (/obj/machinery/hydroponics/constructable,/obj/item/seeds/ambrosia,/turf/simulated/floor/plating,/area/security/prison) "aKW" = (/turf/simulated/wall,/area/security/execution) @@ -1964,10 +1964,10 @@ "aLN" = (/obj/machinery/light,/obj/structure/closet/gmcloset,/obj/item/wrench,/obj/item/stack/sheet/glass/fifty,/obj/item/stack/sheet/metal/fifty,/obj/item/stack/cable_coil/random{pixel_x = 2; pixel_y = 3},/obj/item/stack/cable_coil/random,/turf/simulated/floor/plasteel{dir = 5; icon_state = "dark"; tag = "icon-vault (NORTHEAST)"},/area/crew_quarters/bar) "aLO" = (/obj/structure/table/wood,/obj/machinery/reagentgrinder,/turf/simulated/floor/plasteel{dir = 5; icon_state = "dark"; tag = "icon-vault (NORTHEAST)"},/area/crew_quarters/bar) "aLP" = (/obj/structure/table/wood,/obj/item/stack/packageWrap,/obj/item/hand_labeler,/turf/simulated/floor/plasteel{dir = 5; icon_state = "dark"; tag = "icon-vault (NORTHEAST)"},/area/crew_quarters/bar) -"aLQ" = (/turf/space,/obj/machinery/atmospherics/pipe/simple/visible/yellow,/turf/simulated/floor/plating/airless/catwalk,/area/space) +"aLQ" = (/turf/space,/obj/machinery/access_button{command = "cycle_exterior"; frequency = 1379; master_tag = "solar_tool_airlock"; name = "exterior access button"; pixel_x = 25; pixel_y = -25; req_access_txt = "32"},/obj/structure/cable{d2 = 4; icon_state = "0-4"},/turf/simulated/floor/plating/airless/catwalk,/area/maintenance/auxsolarport) "aLR" = (/obj/structure/chair/stool,/turf/simulated/floor/plasteel{icon_state = "redyellowfull"},/area/crew_quarters/bar/atrium) "aLS" = (/obj/structure/chair/stool,/obj/effect/landmark/start{name = "Civilian"},/turf/simulated/floor/plasteel{icon_state = "redyellowfull"},/area/crew_quarters/bar/atrium) -"aLT" = (/turf/space,/obj/machinery/access_button{command = "cycle_exterior"; frequency = 1379; master_tag = "solar_tool_airlock"; name = "exterior access button"; pixel_x = 25; pixel_y = -25; req_access_txt = "32"},/obj/structure/cable{d2 = 4; icon_state = "0-4"},/turf/simulated/floor/plating/airless/catwalk,/area/maintenance/auxsolarport) +"aLT" = (/turf/space,/obj/item/wrench,/turf/simulated/floor/plating/airless/catwalk,/area/space) "aLU" = (/turf/simulated/wall,/area/crew_quarters/bar/atrium) "aLV" = (/obj/machinery/navbeacon{codes_txt = "delivery;dir=4"; dir = 4; location = "QM #4"},/obj/machinery/camera{c_tag = "Cargo Office SouthWest"; dir = 4; network = list("SS13")},/obj/effect/decal/warning_stripes/yellow,/mob/living/simple_animal/bot/mulebot{home_destination = "QM #4"; suffix = "#4"},/turf/simulated/floor/plasteel,/area/quartermaster/storage) "aLW" = (/obj/structure/chair/office/dark{dir = 8},/obj/effect/landmark/start{name = "Cargo Technician"},/turf/simulated/floor/plasteel{dir = 9; icon_state = "brown"},/area/quartermaster/office) @@ -2054,7 +2054,7 @@ "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) -"aNC" = (/obj/machinery/atmospherics/unary/vent_pump{on = 1},/obj/item/soap/nanotrasen,/obj/machinery/shower{icon_state = "shower"; dir = 4},/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/security/prison) +"aNC" = (/obj/machinery/atmospherics/unary/vent_pump{on = 1},/obj/item/soap/nanotrasen,/obj/machinery/shower{icon_state = "shower"; dir = 4},/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel,/area/security/prison) "aND" = (/obj/structure/sign/electricshock{pixel_y = 32},/obj/structure/table,/obj/effect/decal/cleanable/cobweb,/obj/item/storage/fancy/crayons,/obj/item/storage/fancy/crayons,/turf/simulated/floor/plating,/area/security/prison) "aNE" = (/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/structure/table,/turf/simulated/floor/plating,/area/security/prison) "aNF" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; tag = ""},/obj/machinery/light/small{dir = 1},/obj/machinery/computer/security/telescreen/entertainment{pixel_y = 32},/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel{dir = 1; icon_state = "redcorner"},/area/security/prison) @@ -2124,15 +2124,15 @@ "aOR" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel{dir = 8; icon_state = "neutralfull"},/area/quartermaster/storage) "aOS" = (/obj/effect/decal/cleanable/dirt,/obj/effect/decal/warning_stripes/yellow/hollow,/turf/simulated/floor/plasteel{dir = 8; icon_state = "neutralfull"},/area/quartermaster/storage) "aOT" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 5; level = 1},/obj/machinery/light/small{dir = 8},/obj/structure/toilet{dir = 4},/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plating,/area/security/prison) -"aOU" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4; level = 1},/obj/effect/decal/cleanable/dirt,/obj/structure/sign/poster/official/cleanliness{pixel_y = 32},/obj/machinery/door/airlock{name = "Bathroom"},/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/security/prison) +"aOU" = (/turf/space,/obj/machinery/atmospherics/pipe/simple/visible/yellow{dir = 5},/turf/simulated/floor/plating/airless/catwalk,/area/space) "aOV" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4; level = 1},/turf/simulated/floor/plating,/area/security/prison) -"aOW" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4; level = 1},/obj/machinery/atmospherics/unary/vent_scrubber{on = 1},/mob/living/simple_animal/mouse,/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/security/prison) -"aOX" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4; level = 1},/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/security/prison) +"aOW" = (/turf/space,/obj/machinery/atmospherics/pipe/simple/visible/yellow{dir = 4},/turf/simulated/floor/plating/airless/catwalk,/area/space) +"aOX" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4; level = 1},/obj/effect/decal/cleanable/dirt,/obj/structure/sign/poster/official/cleanliness{pixel_y = 32},/obj/machinery/door/airlock{name = "Bathroom"},/turf/simulated/floor/plasteel,/area/security/prison) "aOY" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4; level = 1},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/structure/table,/obj/item/storage/pill_bottle/dice,/turf/simulated/floor/plating,/area/security/prison) "aOZ" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4; level = 1},/obj/structure/table,/obj/item/paper,/obj/item/pen,/turf/simulated/floor/plasteel,/area/security/prison) "aPa" = (/obj/machinery/atmospherics/pipe/manifold/hidden/supply,/obj/structure/chair/stool,/turf/simulated/floor/plasteel,/area/security/prison) -"aPb" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4; level = 1},/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/security/prison) -"aPc" = (/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 1; level = 1},/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/security/prison) +"aPb" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4; level = 1},/obj/machinery/atmospherics/unary/vent_scrubber{on = 1},/obj/effect/decal/cleanable/dirt,/mob/living/simple_animal/mouse,/turf/simulated/floor/plasteel,/area/security/prison) +"aPc" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4; level = 1},/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel,/area/security/prison) "aPd" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 8; external_pressure_bound = 100; on = 1; pressure_checks = 1},/turf/simulated/floor/plasteel{icon_state = "redcorner"; dir = 4},/area/security/prison) "aPe" = (/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plating,/area/security/prison) "aPf" = (/obj/machinery/alarm{dir = 8; pixel_x = 25; pixel_y = 0},/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plating,/area/security/prison) @@ -2208,7 +2208,7 @@ "aQx" = (/obj/structure/table,/obj/item/book/manual/chef_recipes,/obj/item/storage/box/donkpockets,/obj/item/clothing/head/chefhat,/turf/simulated/floor/plasteel,/area/security/prison) "aQy" = (/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 8; initialize_directions = 11; level = 1},/turf/simulated/floor/plasteel,/area/security/prison) "aQz" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor/plating,/area/security/prison) -"aQA" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/structure/chair/stool,/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/security/prison) +"aQA" = (/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 1; level = 1},/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel,/area/security/prison) "aQB" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 9},/obj/structure/table,/turf/simulated/floor/plating,/area/security/prison) "aQC" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/obj/structure/table,/obj/item/toy/cards/deck,/turf/simulated/floor/plasteel,/area/security/prison) "aQD" = (/obj/structure/chair/stool,/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plating,/area/security/prison) @@ -2299,7 +2299,7 @@ "aSk" = (/obj/structure/table,/obj/machinery/kitchen_machine/microwave,/turf/simulated/floor/plating,/area/security/prison) "aSl" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/plating,/area/security/prison) "aSm" = (/obj/machinery/light/small,/obj/item/twohanded/required/kirbyplants,/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel,/area/security/prison) -"aSn" = (/obj/machinery/newscaster{pixel_y = -32},/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/security/prison) +"aSn" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/structure/chair/stool,/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel,/area/security/prison) "aSo" = (/obj/machinery/camera{c_tag = "Perma-Brig General Population"; dir = 1; network = list("SS13","Security")},/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plating,/area/security/prison) "aSp" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel,/area/security/prison) "aSq" = (/obj/structure/disposalpipe/segment,/obj/effect/decal/warning_stripes/southwest,/turf/simulated/floor/plasteel,/area/quartermaster/storage) @@ -2533,11 +2533,11 @@ "aWK" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/structure/table/glass,/obj/item/storage/firstaid/regular,/turf/simulated/floor/plasteel{dir = 8; icon_state = "whitered"},/area/security/prison) "aWL" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/structure/bed/roller,/obj/machinery/iv_drip,/turf/simulated/floor/plasteel{dir = 4; icon_state = "whitered"},/area/security/prison) "aWM" = (/obj/machinery/atmospherics/unary/vent_scrubber{on = 1},/obj/machinery/flasher{pixel_x = -22},/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel{dir = 8; icon_state = "red"},/area/security/prison) -"aWN" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 6},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/security/prison) +"aWN" = (/obj/machinery/newscaster{pixel_y = -32},/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel,/area/security/prison) "aWO" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 9; level = 1},/obj/structure/table,/obj/item/paper,/obj/item/pen,/turf/simulated/floor/plasteel{dir = 4; icon_state = "red"},/area/security/prison) "aWP" = (/obj/machinery/atmospherics/unary/vent_scrubber{on = 1},/obj/machinery/flasher{pixel_x = -22},/turf/simulated/floor/plating,/area/security/prison) "aWQ" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 6},/turf/simulated/floor/plasteel{icon_state = "neutral"; dir = 1},/area/security/prison) -"aWR" = (/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 8; initialize_directions = 11; level = 1},/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/security/prison) +"aWR" = (/turf/space,/obj/structure/disposalpipe/trunk{dir = 4},/obj/structure/disposaloutlet{dir = 8},/turf/simulated/floor/plating/airless/catwalk,/area/maintenance/incinerator) "aWS" = (/obj/structure/table/reinforced,/obj/item/flashlight/lamp,/obj/item/radio/intercom{dir = 8; name = "station intercom (General)"; pixel_x = -28},/turf/simulated/floor/plasteel{dir = 10; icon_state = "darkred"},/area/security/execution) "aWT" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 8; initialize_directions = 11; level = 1},/turf/simulated/floor/plasteel{dir = 2; icon_state = "darkred"},/area/security/execution) "aWU" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 8; external_pressure_bound = 100; on = 1; pressure_checks = 1},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/firealarm{dir = 1; pixel_y = -24},/turf/simulated/floor/plasteel{dir = 2; icon_state = "darkred"},/area/security/execution) @@ -2700,9 +2700,9 @@ "aZV" = (/obj/machinery/door/airlock/external{frequency = 1379; icon_state = "door_locked"; id_tag = "perma_inner"; locked = 1; name = "Perma Brig Exterior Access"; req_access = null; req_access_txt = "67"},/obj/machinery/atmospherics/pipe/simple/hidden,/obj/effect/decal/warning_stripes/south,/turf/simulated/floor/plating,/area/security/prison) "aZW" = (/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/door/airlock/security/glass{name = "Prison Wing"; req_access_txt = "2"},/obj/effect/decal/warning_stripes/west,/turf/simulated/floor/plasteel,/area/security/prison) "aZX" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; tag = ""},/obj/effect/decal/warning_stripes/east,/turf/simulated/floor/plasteel,/area/security/prison) -"aZY" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; tag = ""},/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/security/prison) +"aZY" = (/turf/space,/obj/machinery/atmospherics/pipe/simple/visible{dir = 4},/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor/plating/airless/catwalk,/area/space) "aZZ" = (/obj/item/radio/intercom{dir = 4; name = "station intercom (General)"; pixel_x = 28},/obj/structure/chair/stool/bar,/turf/simulated/floor/plasteel{icon_state = "redyellowfull"},/area/crew_quarters/bar/atrium) -"baa" = (/obj/machinery/camera{c_tag = "Perma-Brig Escape Pod"; network = list("SS13","Security")},/obj/effect/decal/cleanable/dirt,/obj/machinery/atmospherics/unary/portables_connector{dir = 8},/obj/machinery/portable_atmospherics/canister/air,/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/security/prison) +"baa" = (/turf/space,/obj/machinery/atmospherics/pipe/simple/visible{dir = 9},/obj/structure/disposalpipe/segment{dir = 8; icon_state = "pipe-c"},/turf/simulated/floor/plating/airless/catwalk,/area/space) "bab" = (/obj/effect/spawner/window/reinforced,/turf/simulated/floor/plating,/area/security/prison) "bac" = (/obj/machinery/light/small{dir = 1},/turf/simulated/floor/plating,/area/security/prison) "bad" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; tag = ""},/obj/effect/decal/warning_stripes/yellow,/turf/simulated/floor/plasteel,/area/security/prison) @@ -2741,12 +2741,12 @@ "baK" = (/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 4; initialize_directions = 11; level = 1},/obj/machinery/door/firedoor,/obj/item/radio/intercom{dir = 0; name = "station intercom (General)"; pixel_x = -28},/obj/effect/decal/warning_stripes/south,/turf/simulated/floor/plasteel,/area/crew_quarters/sleep) "baL" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/door/firedoor,/obj/effect/decal/warning_stripes/south,/turf/simulated/floor/plasteel,/area/crew_quarters/sleep) "baM" = (/obj/structure/kitchenspike,/obj/effect/decal/warning_stripes/yellow/hollow,/turf/simulated/floor/plasteel,/area/crew_quarters/kitchen) -"baN" = (/turf/space,/obj/item/wrench,/turf/simulated/floor/plating/airless/catwalk,/area/space) +"baN" = (/turf/space,/obj/machinery/atmospherics/pipe/simple/visible/cyan{dir = 4; level = 2},/turf/simulated/floor/plating/airless/catwalk,/area/atmos) "baO" = (/obj/machinery/access_button{command = "cycle_exterior"; frequency = 1379; master_tag = "perma_airlock"; name = "exterior access button"; pixel_x = 20; pixel_y = -20; req_access_txt = "67"},/turf/space,/area/space) -"baP" = (/turf/space,/obj/machinery/atmospherics/pipe/simple/visible/yellow{dir = 5},/turf/simulated/floor/plating/airless/catwalk,/area/space) +"baP" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 6},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel{icon_state = "neutral"; dir = 1},/area/security/prison) "baQ" = (/obj/structure/sink/kitchen{pixel_y = 30},/obj/effect/decal/warning_stripes/southwest,/turf/simulated/floor/plasteel,/area/crew_quarters/kitchen) "baR" = (/obj/machinery/newscaster{pixel_x = -32; pixel_y = 0},/obj/item/twohanded/required/kirbyplants,/turf/simulated/floor/plasteel{icon_state = "redyellowfull"},/area/crew_quarters/bar/atrium) -"baS" = (/turf/space,/obj/machinery/atmospherics/pipe/simple/visible/yellow{dir = 4},/turf/simulated/floor/plating/airless/catwalk,/area/space) +"baS" = (/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 8; initialize_directions = 11; level = 1},/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel{icon_state = "neutral"; dir = 1},/area/security/prison) "baT" = (/obj/structure/disposalpipe/trunk{dir = 8},/obj/machinery/disposal,/turf/simulated/floor/plasteel{icon_state = "redyellowfull"},/area/crew_quarters/bar/atrium) "baU" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/light{icon_state = "tube1"; dir = 8},/obj/structure/extinguisher_cabinet{pixel_x = -25; pixel_y = 0},/turf/simulated/floor/plasteel{dir = 1; icon_state = "neutralcorner"},/area/hallway/primary/fore) "baV" = (/obj/machinery/light{dir = 8},/obj/machinery/alarm{dir = 1; pixel_y = -22},/obj/machinery/autolathe,/obj/machinery/light_switch{pixel_x = -22},/obj/machinery/firealarm{dir = 1; pixel_x = -24; pixel_y = -24},/turf/simulated/floor/plasteel{dir = 10; icon_state = "brown"},/area/quartermaster/office) @@ -2785,7 +2785,7 @@ "bbC" = (/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{dir = 1; icon_state = "brown"},/area/hallway/primary/fore) "bbD" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4; level = 1},/obj/machinery/light/small,/obj/structure/sign/securearea{pixel_y = -32},/obj/effect/decal/warning_stripes/east,/turf/simulated/floor/plasteel,/area/security/prison) "bbE" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4; level = 1},/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plating,/area/security/prison) -"bbF" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/obj/machinery/atmospherics/unary/vent_pump{dir = 8; external_pressure_bound = 100; on = 1; pressure_checks = 1},/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/security/prison) +"bbF" = (/turf/space,/obj/machinery/atmospherics/pipe/simple/visible/yellow{dir = 4; level = 2},/turf/simulated/floor/plating/airless/catwalk,/area/atmos) "bbG" = (/turf/simulated/floor/plating,/area/security/prison) "bbH" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4; level = 1},/obj/effect/decal/warning_stripes/yellow,/turf/simulated/floor/plasteel,/area/security/prison) "bbI" = (/obj/docking_port/mobile/pod{dir = 4; id = "pod3"; name = "escape pod 3"},/obj/machinery/door/airlock/shuttle{id_tag = "s_docking_airlock"; name = "Escape Pod Hatch"},/turf/simulated/shuttle/floor,/area/shuttle/pod_3) @@ -2858,7 +2858,7 @@ "bcX" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/door/firedoor,/obj/machinery/door/airlock/security/glass{name = "Prison Wing"; req_access_txt = "2"},/obj/effect/decal/warning_stripes/south,/turf/simulated/floor/plasteel,/area/security/prison) "bcY" = (/obj/structure/table/reinforced,/obj/machinery/light/small{dir = 8},/obj/structure/reagent_dispensers/peppertank{pixel_y = -32},/turf/simulated/floor/plasteel{icon_state = "vault"},/area/security/prison) "bcZ" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/turf/simulated/floor/plasteel{icon_state = "vault"},/area/security/prison) -"bda" = (/turf/space,/obj/structure/disposalpipe/trunk{dir = 4},/obj/structure/disposaloutlet{dir = 8},/turf/simulated/floor/plating/airless/catwalk,/area/maintenance/incinerator) +"bda" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; tag = ""},/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel,/area/security/prison) "bdb" = (/obj/machinery/light/small{dir = 8},/obj/structure/closet/secure_closet/brig,/turf/simulated/floor/plasteel{icon_state = "vault"},/area/security/prison) "bdc" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/obj/structure/closet/secure_closet/brig,/turf/simulated/floor/plasteel{icon_state = "vault"},/area/security/prison) "bdd" = (/obj/structure/closet/secure_closet/brig,/turf/simulated/floor/plasteel{icon_state = "vault"},/area/security/prison) @@ -3006,7 +3006,7 @@ "bfP" = (/turf/simulated/shuttle/floor,/area/shuttle/mining) "bfQ" = (/obj/structure/chair{dir = 1},/turf/simulated/shuttle/floor,/area/shuttle/mining) "bfR" = (/obj/structure/cable{d2 = 2; icon_state = "0-2"; pixel_y = 0},/obj/machinery/power/apc{dir = 1; name = "north bump"; pixel_x = 0; pixel_y = 24},/obj/structure/table/glass,/turf/simulated/floor/plasteel{dir = 9; icon_state = "whitered"},/area/security/medbay) -"bfS" = (/turf/space,/obj/machinery/atmospherics/pipe/simple/visible{dir = 4},/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor/plating/airless/catwalk,/area/space) +"bfS" = (/obj/machinery/camera{c_tag = "Perma-Brig Escape Pod"; network = list("SS13","Security")},/obj/effect/decal/cleanable/dirt,/obj/machinery/atmospherics/unary/portables_connector{dir = 8},/obj/machinery/portable_atmospherics/canister/air,/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel,/area/security/prison) "bfT" = (/obj/structure/extinguisher_cabinet{pixel_x = 0; pixel_y = -32},/obj/structure/closet/secure_closet/brig,/turf/simulated/floor/plasteel{icon_state = "vault"},/area/security/prison) "bfU" = (/obj/machinery/light/small{dir = 1},/obj/effect/landmark{name = "blobstart"},/obj/effect/decal/warning_stripes/east,/turf/simulated/floor/plasteel,/area/security/prison) "bfV" = (/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"; tag = ""},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 8; initialize_directions = 11; level = 1},/obj/effect/decal/warning_stripes/north,/turf/simulated/floor/plasteel,/area/security/prison) @@ -3499,7 +3499,7 @@ "bpo" = (/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1; layer = 2.9},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/construction/hallway) "bpp" = (/obj/structure/window/reinforced,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/construction/hallway) "bpq" = (/obj/structure/window/reinforced,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/construction/hallway) -"bpr" = (/turf/space,/obj/machinery/atmospherics/pipe/simple/visible{dir = 9},/obj/structure/disposalpipe/segment{dir = 8; icon_state = "pipe-c"},/turf/simulated/floor/plating/airless/catwalk,/area/space) +"bpr" = (/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_3) "bps" = (/obj/structure/window/reinforced,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/construction/hallway) "bpt" = (/obj/structure/window/reinforced{dir = 1; layer = 2.9},/obj/structure/window/reinforced{dir = 4},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/construction/hallway) "bpu" = (/obj/structure/lattice,/obj/structure/window/reinforced{dir = 8},/turf/space,/area/space) @@ -3791,7 +3791,7 @@ "buU" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/plasteel{dir = 1; icon_state = "neutralcorner"},/area/hallway/primary/central) "buV" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/obj/structure/disposalpipe/segment,/turf/simulated/floor/plasteel{dir = 8; icon_state = "neutralfull"},/area/hallway/primary/central) "buW" = (/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor/plasteel{icon_state = "neutralcorner"; dir = 2},/area/hallway/primary/central) -"buX" = (/turf/space,/obj/machinery/atmospherics/pipe/simple/visible/cyan{dir = 4; level = 2},/turf/simulated/floor/plating/airless/catwalk,/area/atmos) +"buX" = (/turf/space,/obj/machinery/atmospherics/pipe/simple/visible/green{dir = 4; level = 2},/turf/simulated/floor/plating/airless/catwalk,/area/atmos) "buY" = (/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/effect/decal/warning_stripes/yellow,/turf/simulated/floor/plasteel,/area/maintenance/starboard) "buZ" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/plasteel{dir = 8; icon_state = "neutralcorner"},/area/hallway/primary/central) "bva" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/turf/simulated/floor/plasteel{dir = 8; icon_state = "neutralfull"},/area/hallway/primary/central) @@ -3821,7 +3821,7 @@ "bvy" = (/obj/effect/spawner/window/reinforced,/obj/structure/cable,/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"},/turf/simulated/floor/plating,/area/security/hos) "bvz" = (/obj/machinery/ai_status_display,/turf/simulated/wall/r_wall,/area/turret_protected/ai) "bvA" = (/obj/item/twohanded/required/kirbyplants,/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"; tag = ""},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/turret_protected/ai) -"bvB" = (/turf/space,/obj/machinery/atmospherics/pipe/simple/visible/yellow{dir = 4; level = 2},/turf/simulated/floor/plating/airless/catwalk,/area/atmos) +"bvB" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/obj/machinery/atmospherics/unary/vent_pump{dir = 8; external_pressure_bound = 100; on = 1; pressure_checks = 1},/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel,/area/security/prison) "bvC" = (/obj/item/twohanded/required/kirbyplants,/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"; tag = ""},/obj/structure/sign/nosmoking_2{pixel_y = 32},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/turret_protected/ai) "bvD" = (/obj/machinery/atmospherics/unary/heat_reservoir/heater{dir = 1; on = 1},/turf/simulated/floor/plasteel{icon_state = "arrival"; dir = 10},/area/atmos) "bvE" = (/obj/machinery/atmospherics/pipe/simple/visible/cyan{dir = 5; level = 2},/obj/effect/decal/warning_stripes/southwest,/turf/simulated/floor/plasteel,/area/atmos) @@ -3886,7 +3886,7 @@ "bwL" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/turret_protected/ai) "bwM" = (/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 4},/obj/machinery/camera{c_tag = "AI Minisatellite NorthWest"; dir = 8; network = list("SS13","Minisat")},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/construction/hallway) "bwN" = (/turf/simulated/wall/r_wall,/area/engine/gravitygenerator) -"bwO" = (/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_3) +"bwO" = (/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_3) "bwP" = (/turf/simulated/wall/r_wall,/area/engine/break_room) "bwQ" = (/obj/machinery/ai_status_display,/turf/simulated/wall/r_wall,/area/engine/break_room) "bwR" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/wall/r_wall,/area/engine/break_room) @@ -4950,7 +4950,7 @@ "bRj" = (/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 4; initialize_directions = 11; level = 1},/turf/simulated/floor/plasteel,/area/security/brig) "bRk" = (/obj/structure/table/reinforced,/obj/machinery/alarm{dir = 4; pixel_x = -23; pixel_y = 0},/obj/machinery/light{dir = 8},/obj/item/clipboard,/obj/item/toy/figure/warden,/turf/simulated/floor/plasteel{dir = 8; icon_state = "red"},/area/security/warden) "bRl" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"; tag = ""},/turf/simulated/floor/plasteel,/area/security/warden) -"bRm" = (/turf/space,/obj/machinery/atmospherics/pipe/simple/visible/green{dir = 4; level = 2},/turf/simulated/floor/plating/airless/catwalk,/area/atmos) +"bRm" = (/turf/space,/obj/machinery/atmospherics/pipe/simple/visible/yellow{dir = 9},/turf/simulated/floor/plating/airless/catwalk,/area/space) "bRn" = (/obj/structure/rack,/obj/item/ammo_box/shotgun/rubbershot,/obj/item/ammo_box/shotgun/rubbershot,/obj/item/ammo_box/shotgun/rubbershot,/obj/item/ammo_box/shotgun/rubbershot,/obj/item/ammo_box/shotgun/rubbershot,/turf/simulated/floor/plasteel{icon_state = "vault"; dir = 8},/area/security/armoury) "bRo" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/structure/rack,/obj/item/gun/energy/laser{pixel_x = -3; pixel_y = 3},/obj/item/gun/energy/laser,/obj/item/gun/energy/laser{pixel_x = 3; pixel_y = -3},/turf/simulated/floor/plasteel,/area/security/armoury) "bRp" = (/obj/structure/rack,/obj/item/clothing/suit/armor/bulletproof,/obj/item/clothing/suit/armor/bulletproof,/obj/item/clothing/suit/armor/bulletproof,/obj/item/clothing/head/helmet/alt,/obj/item/clothing/head/helmet/alt,/obj/item/clothing/head/helmet/alt,/obj/item/storage/secure/safe{pixel_x = 32},/turf/simulated/floor/plasteel{icon_state = "vault"; dir = 8},/area/security/armoury) @@ -4970,7 +4970,7 @@ "bRD" = (/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 1; initialize_directions = 11; level = 1},/turf/simulated/floor/plasteel{icon_state = "grimy"},/area/turret_protected/aisat) "bRE" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4; level = 1},/obj/structure/showcase{density = 0; dir = 8; icon = 'icons/mob/robots.dmi'; icon_state = "robot_old"; name = "Cyborg Statue"; pixel_x = 9; pixel_y = 2},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/turret_protected/aisat) "bRF" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4; level = 1},/turf/simulated/wall/r_wall,/area/turret_protected/aisat) -"bRG" = (/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_3) +"bRG" = (/turf/space,/obj/structure/window/reinforced{dir = 1; layer = 2.9},/turf/simulated/floor/plating/airless/catwalk,/area/space) "bRH" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4; level = 1},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/turret_protected/aisat) "bRI" = (/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 1; initialize_directions = 11; level = 1},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/turret_protected/aisat) "bRJ" = (/obj/structure/window/reinforced{dir = 1; layer = 2.9},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4; level = 1},/obj/machinery/light/small{dir = 8},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/construction/hallway) @@ -5095,7 +5095,7 @@ "bTY" = (/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/firedoor,/obj/effect/decal/warning_stripes/yellow,/turf/simulated/floor/plasteel{dir = 1; icon_state = "neutralcorner"},/area/hallway/primary/port) "bTZ" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; tag = ""},/obj/machinery/atmospherics/pipe/manifold/hidden/supply,/turf/simulated/floor/plasteel{dir = 8; icon_state = "neutralfull"},/area/hallway/primary/port) "bUa" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; tag = ""},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4; level = 1},/turf/simulated/floor/plasteel{dir = 8; icon_state = "neutralfull"},/area/hallway/primary/port) -"bUb" = (/turf/space,/obj/machinery/atmospherics/pipe/simple/visible/yellow{dir = 9},/turf/simulated/floor/plating/airless/catwalk,/area/space) +"bUb" = (/turf/space,/obj/machinery/access_button{command = "cycle_exterior"; frequency = 1379; master_tag = "atmo_tank_airlock"; name = "exterior access button"; pixel_x = 20; pixel_y = -20; req_access_txt = "32"},/turf/simulated/floor/plating/airless/catwalk,/area/space) "bUc" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/structure/table/reinforced,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/engine/break_room) "bUd" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/engine/break_room) "bUe" = (/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/engine/break_room) @@ -5129,7 +5129,7 @@ "bUG" = (/obj/machinery/atmospherics/unary/vent_scrubber{on = 1},/turf/simulated/floor/plasteel{dir = 8; icon_state = "neutralfull"},/area/hallway/primary/port) "bUH" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor/plasteel{dir = 8; icon_state = "neutralfull"},/area/hallway/primary/port) "bUI" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 1; on = 1},/turf/simulated/floor/plasteel{dir = 8; icon_state = "neutralfull"},/area/hallway/primary/port) -"bUJ" = (/turf/space,/obj/structure/window/reinforced{dir = 1; layer = 2.9},/turf/simulated/floor/plating/airless/catwalk,/area/space) +"bUJ" = (/turf/space,/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4; level = 1},/turf/simulated/floor/plating/airless/catwalk,/area/space) "bUK" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/navbeacon{codes_txt = "patrol;next_patrol=engi1"; location = "hall3"},/turf/simulated/floor/plasteel{dir = 8; icon_state = "neutralfull"},/area/hallway/primary/central) "bUL" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/obj/machinery/navbeacon{codes_txt = "patrol;next_patrol=hall5"; location = "hall4"},/turf/simulated/floor/plasteel{dir = 8; icon_state = "neutralfull"},/area/hallway/primary/central) "bUM" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/light{dir = 4; icon_state = "tube1"},/turf/simulated/floor/plasteel{icon_state = "neutralcorner"; dir = 2},/area/hallway/primary/central) @@ -5151,7 +5151,7 @@ "bVc" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/light{dir = 8},/obj/machinery/camera{c_tag = "Central Ring Hallway East"; dir = 4; network = list("SS13")},/turf/simulated/floor/plasteel{dir = 8; icon_state = "neutralcorner"},/area/hallway/primary/central) "bVd" = (/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"; tag = ""},/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/machinery/navbeacon{codes_txt = "patrol;next_patrol=hall13"; location = "hall12"},/obj/effect/landmark{name = "lightsout"},/turf/simulated/floor/plasteel{dir = 8; icon_state = "neutralfull"},/area/hallway/primary/central) "bVe" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; tag = ""},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/navbeacon{codes_txt = "patrol;next_patrol=hall11"; location = "hall10"},/turf/simulated/floor/plasteel{dir = 8; icon_state = "neutralfull"},/area/hallway/primary/central) -"bVf" = (/turf/space,/obj/machinery/access_button{command = "cycle_exterior"; frequency = 1379; master_tag = "atmo_tank_airlock"; name = "exterior access button"; pixel_x = 20; pixel_y = -20; req_access_txt = "32"},/turf/simulated/floor/plating/airless/catwalk,/area/space) +"bVf" = (/turf/space,/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"; tag = ""},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 10},/turf/simulated/floor/plating/airless/catwalk,/area/space) "bVg" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; tag = ""},/turf/simulated/floor/plasteel{dir = 8; icon_state = "neutralfull"},/area/hallway/primary/starboard) "bVh" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; tag = ""},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor/plasteel{dir = 8; icon_state = "neutralfull"},/area/hallway/primary/starboard) "bVi" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; tag = ""},/obj/machinery/atmospherics/unary/vent_pump{on = 1},/turf/simulated/floor/plasteel{dir = 8; icon_state = "neutralfull"},/area/hallway/primary/starboard) @@ -5164,7 +5164,7 @@ "bVp" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; tag = ""},/obj/machinery/navbeacon{codes_txt = "patrol;next_patrol=hall12"; location = "hall11"},/obj/item/radio/beacon,/mob/living/simple_animal/bot/secbot/beepsky,/turf/simulated/floor/plasteel{dir = 8; icon_state = "neutralfull"},/area/hallway/primary/starboard) "bVq" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; tag = ""},/obj/structure/disposalpipe/sortjunction{dir = 1; icon_state = "pipe-j1s"; name = "Security Junction"; sortType = 13},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 5; level = 1},/turf/simulated/floor/plasteel{dir = 2; icon_state = "redcorner"},/area/hallway/primary/starboard) "bVr" = (/obj/structure/closet/secure_closet/engineering_chief,/obj/machinery/camera{c_tag = "Chief Engineer's Quarters"; network = list("Engineering","SS13")},/obj/machinery/light_switch{pixel_x = 26; pixel_y = 26},/obj/machinery/door_control{id = "ceprivacy"; name = "Privacy Shutters"; pixel_x = 24},/obj/effect/decal/warning_stripes/northwest,/turf/simulated/floor/plasteel,/area/crew_quarters/chief) -"bVs" = (/turf/space,/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4; level = 1},/turf/simulated/floor/plating/airless/catwalk,/area/space) +"bVs" = (/turf/space,/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"; tag = ""},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 6},/turf/simulated/floor/plating/airless/catwalk,/area/space) "bVt" = (/obj/structure/sign/vacuum{pixel_x = -32; pixel_y = 0},/obj/machinery/light/small,/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4; level = 1},/turf/simulated/floor/plasteel{icon_state = "vault"; dir = 8},/area/engine/break_room) "bVu" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; tag = ""},/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor/plasteel,/area/security/brig) "bVv" = (/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/disposalpipe/segment{dir = 8; icon_state = "pipe-c"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor/plasteel{dir = 8; icon_state = "neutralfull"},/area/security/brig) @@ -5281,8 +5281,8 @@ "bXC" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/door/firedoor,/obj/effect/decal/warning_stripes/yellow,/obj/machinery/door/airlock/public/glass,/turf/simulated/floor/plasteel{icon_state = "neutralcorner"; dir = 4},/area/hallway/primary/starboard) "bXD" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/camera{c_tag = "Primary Security Hallway"},/turf/simulated/floor/plasteel{icon_state = "neutralcorner"; dir = 4},/area/hallway/primary/starboard) "bXE" = (/obj/machinery/camera{c_tag = "Engineering Security Checkpoint"; dir = 8; network = list("SS13","Security")},/obj/item/radio/intercom{dir = 4; name = "station intercom (General)"; pixel_x = 28},/obj/structure/closet/secure_closet/security/engine,/turf/simulated/floor/plasteel{dir = 5; icon_state = "red"},/area/security/checkpoint/engineering) -"bXF" = (/turf/space,/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"; tag = ""},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 10},/turf/simulated/floor/plating/airless/catwalk,/area/space) -"bXG" = (/turf/space,/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"; tag = ""},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 6},/turf/simulated/floor/plating/airless/catwalk,/area/space) +"bXF" = (/turf/space,/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/access_button{command = "cycle_exterior"; frequency = 1379; master_tag = "station_ai_airlock"; name = "exterior access button"; pixel_x = 20; pixel_y = 20; req_access_txt = "10;13"},/turf/simulated/floor/plating/airless/catwalk,/area/space) +"bXG" = (/turf/space,/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor/plating/airless/catwalk,/area/space) "bXH" = (/obj/item/twohanded/required/kirbyplants,/obj/machinery/light,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/turret_protected/aisat) "bXI" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/turret_protected/aisat) "bXJ" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plasteel{icon_state = "vault"; dir = 8},/area/turret_protected/aisat) @@ -5302,7 +5302,7 @@ "bXX" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/obj/machinery/door/airlock/security/glass{name = "Armoury"; req_access_txt = "3"},/obj/effect/decal/warning_stripes/east,/obj/effect/decal/warning_stripes/west,/turf/simulated/floor/plasteel,/area/security/armoury) "bXY" = (/obj/structure/table/reinforced,/obj/item/storage/firstaid/fire,/obj/effect/decal/warning_stripes/yellow,/turf/simulated/floor/plasteel,/area/engine/engineering) "bXZ" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/structure/sign/securearea,/turf/simulated/wall,/area/engine/engineering) -"bYa" = (/turf/space,/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/access_button{command = "cycle_exterior"; frequency = 1379; master_tag = "station_ai_airlock"; name = "exterior access button"; pixel_x = 20; pixel_y = 20; req_access_txt = "10;13"},/turf/simulated/floor/plating/airless/catwalk,/area/space) +"bYa" = (/turf/space,/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor/plating/airless/catwalk,/area/space) "bYb" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/structure/sign/securearea{desc = "A warning sign which reads 'RADIOACTIVE AREA'"; icon_state = "radiation"; name = "RADIOACTIVE AREA"; pixel_x = 0; pixel_y = 0},/turf/simulated/wall,/area/engine/engineering) "bYc" = (/obj/structure/disposalpipe/trunk,/obj/machinery/disposal,/obj/effect/decal/warning_stripes/yellow,/turf/simulated/floor/plasteel,/area/engine/engineering) "bYd" = (/obj/effect/spawner/window/reinforced,/obj/structure/cable,/turf/simulated/floor/plating,/area/security/checkpoint/engineering) @@ -5313,8 +5313,8 @@ "bYi" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/door/airlock/maintenance,/turf/simulated/floor/plasteel,/area/maintenance/fpmaint2) "bYj" = (/turf/simulated/wall,/area/library) "bYk" = (/obj/effect/spawner/window/reinforced,/turf/simulated/floor/plating,/area/library) -"bYl" = (/turf/space,/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor/plating/airless/catwalk,/area/space) -"bYm" = (/turf/space,/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor/plating/airless/catwalk,/area/space) +"bYl" = (/turf/space,/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"; tag = ""},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 5; level = 1},/turf/simulated/floor/plating/airless/catwalk,/area/space) +"bYm" = (/turf/space,/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; tag = ""},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4; level = 1},/turf/simulated/floor/plating/airless/catwalk,/area/space) "bYn" = (/obj/structure/sign/directions/evac{pixel_y = -8},/obj/structure/sign/directions/medical{dir = 2},/obj/structure/sign/directions/security{dir = 2; pixel_y = 8},/turf/simulated/wall,/area/library) "bYo" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/alarm{dir = 4; icon_state = "alarm0"; pixel_x = -22},/obj/machinery/light/small,/obj/effect/decal/warning_stripes/southwest,/turf/simulated/floor/plasteel,/area/engine/engineering) "bYp" = (/obj/effect/spawner/window/reinforced,/obj/structure/cable{icon_state = "0-4"; d2 = 4},/obj/machinery/door/poddoor{density = 0; icon_state = "pdoor0"; id_tag = "hopprivacy"; name = "HoP Privacy Blast Doors"; opacity = 0},/turf/simulated/floor/plating,/area/crew_quarters/heads/hop) @@ -5337,7 +5337,7 @@ "bYG" = (/obj/structure/sign/directions/evac{pixel_y = -8},/obj/structure/sign/directions/medical{dir = 2},/obj/structure/sign/directions/security{dir = 4; pixel_y = 8},/turf/simulated/wall,/area/crew_quarters/courtroom) "bYH" = (/turf/simulated/wall,/area/crew_quarters/courtroom) "bYI" = (/obj/effect/spawner/window/reinforced,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor/plating,/area/crew_quarters/courtroom) -"bYJ" = (/turf/space,/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"; tag = ""},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 5; level = 1},/turf/simulated/floor/plating/airless/catwalk,/area/space) +"bYJ" = (/turf/space,/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 9},/turf/simulated/floor/plating/airless/catwalk,/area/space) "bYK" = (/obj/effect/spawner/window/reinforced,/turf/simulated/floor/plating,/area/crew_quarters/courtroom) "bYL" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; tag = ""},/obj/machinery/door/firedoor,/obj/effect/decal/warning_stripes/yellow,/obj/machinery/door/airlock/public/glass,/turf/simulated/floor/plasteel{dir = 8; icon_state = "neutralfull"},/area/hallway/primary/starboard) "bYM" = (/turf/simulated/wall,/area/lawoffice) @@ -5359,7 +5359,7 @@ "bZc" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4; level = 1},/obj/machinery/recharger,/obj/structure/table/reinforced,/obj/item/key/security,/obj/machinery/door_control{id = "Secure Armory"; name = "Secure Armory Shutter Control"; pixel_x = 7; pixel_y = -28; req_access_txt = "3"},/obj/effect/decal/warning_stripes/northeast,/turf/simulated/floor/plasteel,/area/security/armoury) "bZd" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4; level = 1},/turf/simulated/floor/plasteel,/area/security/armoury) "bZe" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 9; level = 1},/obj/structure/chair/office/dark,/turf/simulated/floor/plasteel,/area/security/armoury) -"bZf" = (/turf/space,/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; tag = ""},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4; level = 1},/turf/simulated/floor/plating/airless/catwalk,/area/space) +"bZf" = (/turf/space,/obj/structure/window/reinforced{dir = 4},/turf/simulated/floor/plating/airless/catwalk,/area/space) "bZg" = (/obj/structure/table/reinforced,/obj/structure/reagent_dispensers/peppertank{pixel_x = 32; pixel_y = 0},/obj/item/clothing/mask/gas/sechailer,/obj/item/clothing/mask/gas/sechailer,/obj/item/clothing/mask/gas/sechailer,/obj/item/flashlight/seclite,/obj/item/flashlight/seclite,/obj/item/flashlight/seclite,/turf/simulated/floor/plasteel{icon_state = "vault"; dir = 8},/area/security/armoury) "bZh" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/door/firedoor,/obj/machinery/flasher{id = null; pixel_x = -24; pixel_y = 0},/obj/machinery/door/airlock/highsecurity{name = "AI Upload Access"; req_access_txt = "16"},/turf/simulated/floor/plasteel{icon_state = "vault"; dir = 8},/area/turret_protected/aisat) "bZi" = (/obj/machinery/door/airlock/public/glass,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/crew_quarters/courtroom) @@ -5376,7 +5376,7 @@ "bZt" = (/obj/structure/disposalpipe/segment{dir = 1; icon_state = "pipe-c"},/obj/effect/decal/warning_stripes/north,/turf/simulated/floor/plasteel,/area/engine/engineering) "bZu" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 6},/obj/effect/decal/warning_stripes/north,/turf/simulated/floor/plasteel,/area/engine/engineering) "bZv" = (/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,/area/engine/engineering) -"bZw" = (/turf/space,/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 9},/turf/simulated/floor/plating/airless/catwalk,/area/space) +"bZw" = (/turf/space,/obj/structure/window/reinforced{dir = 8},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4; level = 1},/turf/simulated/floor/plating/airless/catwalk,/area/space) "bZx" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers,/obj/effect/decal/warning_stripes/north,/turf/simulated/floor/plasteel,/area/engine/engineering) "bZy" = (/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/structure/disposalpipe/sortjunction{name = "Engineering Junction"},/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 1; initialize_directions = 11; level = 1},/obj/effect/decal/warning_stripes/north,/turf/simulated/floor/plasteel,/area/engine/engineering) "bZz" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; tag = ""},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/effect/decal/warning_stripes/north,/turf/simulated/floor/plasteel,/area/engine/engineering) @@ -5792,7 +5792,7 @@ "cht" = (/turf/simulated/wall/r_wall,/area/teleporter) "chu" = (/obj/machinery/light,/obj/machinery/computer/monitor,/obj/structure/cable,/obj/effect/decal/warning_stripes/north,/turf/simulated/floor/plating,/area/turret_protected/aisat) "chv" = (/turf/simulated/wall/rust,/area/teleporter) -"chw" = (/turf/space,/obj/structure/window/reinforced{dir = 4},/turf/simulated/floor/plating/airless/catwalk,/area/space) +"chw" = (/turf/space,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4; level = 1},/turf/simulated/floor/plating/airless/catwalk,/area/space) "chx" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; tag = ""},/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4; level = 1},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plating,/area/teleporter) "chy" = (/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{dir = 10},/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plating,/area/teleporter) "chz" = (/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plating,/area/teleporter) @@ -5885,7 +5885,7 @@ "cji" = (/turf/simulated/floor/plasteel{dir = 2; icon_state = "blue"},/area/crew_quarters/courtroom) "cjj" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/wall,/area/lawoffice) "cjk" = (/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{name = "Internal Affairs Maintenance"; req_access_txt = "38"},/turf/simulated/floor/plating,/area/lawoffice) -"cjl" = (/turf/space,/obj/structure/window/reinforced{dir = 8},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4; level = 1},/turf/simulated/floor/plating/airless/catwalk,/area/space) +"cjl" = (/turf/space,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4; level = 1},/obj/structure/transit_tube{tag = "icon-D-NE"; icon_state = "D-NE"},/obj/structure/transit_tube{tag = "icon-D-SE"; icon_state = "D-SE"},/turf/simulated/floor/plating/airless/catwalk,/area/space) "cjm" = (/obj/structure/closet/crate,/obj/effect/spawner/lootdrop/maintenance{lootcount = 2; name = "2maintenance loot spawner"},/turf/simulated/floor/plating,/area/maintenance/starboard) "cjn" = (/obj/structure/girder,/turf/simulated/floor/plating,/area/maintenance/starboard) "cjo" = (/obj/structure/rack,/obj/item/book/manual/security_space_law,/obj/effect/spawner/lootdrop/maintenance,/turf/simulated/floor/plating,/area/maintenance/starboard) @@ -6115,7 +6115,7 @@ "cnE" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/obj/effect/decal/warning_stripes/east,/turf/simulated/floor/plasteel,/area/teleporter) "cnF" = (/obj/machinery/light/small{dir = 4; pixel_y = 0},/obj/effect/decal/warning_stripes/southeast,/turf/simulated/floor/plating,/area/security/range) "cnG" = (/obj/machinery/computer/teleporter,/turf/simulated/floor/plasteel,/area/teleporter) -"cnH" = (/turf/space,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4; level = 1},/turf/simulated/floor/plating/airless/catwalk,/area/space) +"cnH" = (/turf/space,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4; level = 1},/obj/structure/transit_tube{tag = "icon-E-SW-NW"; icon_state = "E-SW-NW"},/turf/simulated/floor/plating/airless/catwalk,/area/space) "cnI" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/item/twohanded/required/kirbyplants,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/crew_quarters/courtroom) "cnJ" = (/obj/item/twohanded/required/kirbyplants,/turf/simulated/floor/plasteel{icon_state = "neutral"},/area/crew_quarters/courtroom) "cnK" = (/obj/structure/filingcabinet/chestdrawer,/turf/simulated/floor/plasteel{icon_state = "neutral"},/area/crew_quarters/courtroom) @@ -6142,7 +6142,7 @@ "cof" = (/obj/machinery/particle_accelerator/control_box,/obj/structure/cable/yellow,/turf/simulated/floor/plating,/area/engine/engineering) "cog" = (/obj/effect/decal/cleanable/dirt,/obj/machinery/the_singularitygen,/turf/simulated/floor/plating,/area/engine/engineering) "coh" = (/obj/structure/cable/yellow{d2 = 8; icon_state = "0-8"},/obj/machinery/power/smes{charge = 2e+006},/obj/effect/decal/warning_stripes/yellow/hollow,/turf/simulated/floor/plasteel,/area/engine/engineering) -"coi" = (/turf/space,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4; level = 1},/obj/structure/transit_tube{tag = "icon-D-NE"; icon_state = "D-NE"},/obj/structure/transit_tube{tag = "icon-D-SE"; icon_state = "D-SE"},/turf/simulated/floor/plating/airless/catwalk,/area/space) +"coi" = (/turf/space,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4; level = 1},/obj/structure/transit_tube{icon_state = "E-W-Pass"},/turf/simulated/floor/plating/airless/catwalk,/area/space) "coj" = (/obj/structure/cable/yellow{d1 = 2; d2 = 8; icon_state = "2-8"},/obj/effect/decal/warning_stripes/northwest,/turf/simulated/floor/plasteel,/area/engine/engineering) "cok" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/effect/decal/warning_stripes/northwestcorner,/turf/simulated/floor/plasteel,/area/engine/engineering) "col" = (/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 8; initialize_directions = 11; level = 1},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/effect/decal/warning_stripes/northeastcorner,/turf/simulated/floor/plasteel,/area/engine/engineering) @@ -6359,14 +6359,14 @@ "cso" = (/obj/machinery/pipedispenser/disposal,/obj/effect/decal/warning_stripes/yellow/hollow,/turf/simulated/floor/plasteel,/area/engine/engine_smes) "csp" = (/obj/structure/cable/yellow{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/effect/decal/warning_stripes/southwest,/turf/simulated/floor/plating,/area/engine/engineering) "csq" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/effect/decal/warning_stripes/south,/turf/simulated/floor/plating,/area/engine/engineering) -"csr" = (/turf/space,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4; level = 1},/obj/structure/transit_tube{tag = "icon-E-SW-NW"; icon_state = "E-SW-NW"},/turf/simulated/floor/plating/airless/catwalk,/area/space) +"csr" = (/turf/space,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4; level = 1},/obj/structure/transit_tube,/turf/simulated/floor/plating/airless/catwalk,/area/space) "css" = (/obj/structure/table/reinforced,/obj/machinery/cell_charger,/obj/item/stock_parts/cell/high,/obj/effect/decal/warning_stripes/yellow,/turf/simulated/floor/plasteel,/area/engine/engineering) "cst" = (/obj/machinery/portable_atmospherics/canister/toxins,/obj/machinery/light/small{dir = 8},/obj/effect/decal/warning_stripes/yellow/hollow,/turf/simulated/floor/plasteel,/area/engine/engine_smes) "csu" = (/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/effect/decal/cleanable/dirt,/obj/effect/decal/warning_stripes/south,/turf/simulated/floor/plating,/area/engine/engineering) "csv" = (/obj/structure/cable/yellow{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/effect/decal/warning_stripes/southeast,/turf/simulated/floor/plating,/area/engine/engineering) "csw" = (/obj/item/twohanded/required/kirbyplants,/obj/effect/decal/cleanable/dirt,/obj/effect/decal/warning_stripes/yellow/hollow,/turf/simulated/floor/plasteel,/area/engine/engine_smes) "csx" = (/obj/machinery/power/emitter,/turf/simulated/floor/plating,/area/engine/engine_smes) -"csy" = (/turf/space,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4; level = 1},/obj/structure/transit_tube{icon_state = "E-W-Pass"},/turf/simulated/floor/plating/airless/catwalk,/area/space) +"csy" = (/turf/space,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4; level = 1},/obj/structure/transit_tube{tag = "icon-W-SE"; icon_state = "W-SE"},/turf/simulated/floor/plating/airless/catwalk,/area/space) "csz" = (/obj/structure/closet/crate{name = "solar pack crate"},/obj/effect/decal/warning_stripes/yellow/hollow,/turf/simulated/floor/plasteel,/area/engine/engine_smes) "csA" = (/obj/structure/rack,/obj/item/crowbar/red,/obj/item/wrench,/obj/item/tank/emergency_oxygen/engi,/obj/item/stack/sheet/mineral/plasma{amount = 5},/obj/effect/decal/warning_stripes/yellow/hollow,/turf/simulated/floor/plasteel,/area/engine/engine_smes) "csB" = (/obj/structure/table/reinforced,/obj/structure/extinguisher_cabinet{pixel_x = 0; pixel_y = -30},/obj/item/clipboard,/obj/item/folder/blue,/obj/item/firelock_electronics,/obj/item/stock_parts/console_screen,/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plating,/area/engine/engine_smes) @@ -6428,8 +6428,8 @@ "ctF" = (/obj/structure/table/reinforced,/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{dir = 5; icon_state = "yellow"},/area/engine/engineering) "ctG" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/status_display{pixel_x = 32},/obj/effect/decal/warning_stripes/east,/turf/simulated/floor/plasteel,/area/engine/engineering) "ctH" = (/obj/item/twohanded/required/kirbyplants,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/library) -"ctI" = (/turf/space,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4; level = 1},/obj/structure/transit_tube,/turf/simulated/floor/plating/airless/catwalk,/area/space) -"ctJ" = (/turf/space,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4; level = 1},/obj/structure/transit_tube{tag = "icon-W-SE"; icon_state = "W-SE"},/turf/simulated/floor/plating/airless/catwalk,/area/space) +"ctI" = (/turf/space,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4; level = 1},/obj/structure/transit_tube{tag = "icon-D-SW"; icon_state = "D-SW"},/obj/structure/window/reinforced{dir = 4},/turf/simulated/floor/plating/airless/catwalk,/area/space) +"ctJ" = (/turf/space,/obj/structure/transit_tube{tag = "icon-E-NW"; icon_state = "E-NW"},/obj/structure/window/reinforced{dir = 4},/turf/simulated/floor/plating/airless/catwalk,/area/space) "ctK" = (/obj/structure/table/wood,/obj/item/storage/fancy/crayons,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/library) "ctL" = (/obj/structure/table/wood,/obj/item/storage/fancy/candle_box,/obj/item/storage/fancy/candle_box,/obj/machinery/computer/security/telescreen/entertainment{pixel_x = 32; pixel_y = 0},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/library) "ctM" = (/obj/structure/dresser,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/library) @@ -6444,7 +6444,7 @@ "ctV" = (/obj/machinery/camera{c_tag = "Courtroom East"; dir = 8; network = list("SS13")},/turf/simulated/floor/plasteel{icon_state = "neutral"; dir = 4},/area/crew_quarters/courtroom) "ctW" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/door/firedoor,/obj/machinery/door/airlock/public/glass{name = "Library"},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/library) "ctX" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/door/firedoor,/obj/machinery/door/airlock/command/glass{name = "E.V.A."; req_access_txt = "0"; req_one_access_txt = "18"},/obj/effect/decal/warning_stripes/south,/turf/simulated/floor/plasteel,/area/ai_monitored/storage/eva) -"ctY" = (/turf/space,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4; level = 1},/obj/structure/transit_tube{tag = "icon-D-SW"; icon_state = "D-SW"},/obj/structure/window/reinforced{dir = 4},/turf/simulated/floor/plating/airless/catwalk,/area/space) +"ctY" = (/turf/space,/obj/structure/cable/yellow{d1 = 2; d2 = 4; icon_state = "2-4"},/turf/simulated/floor/plating/airless/catwalk,/area/space) "ctZ" = (/obj/effect/spawner/window/reinforced,/obj/structure/cable{icon_state = "0-4"; d2 = 4},/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"; tag = ""},/turf/simulated/floor/plating,/area/bridge/meeting_room) "cua" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; tag = ""},/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"; tag = ""},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/plasteel{dir = 8; icon_state = "neutralcorner"},/area/bridge/meeting_room) "cub" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; tag = ""},/obj/structure/table/wood,/obj/item/paper_bin,/turf/simulated/floor/plasteel{dir = 2; icon_state = "bluecorner"},/area/bridge/meeting_room) @@ -6728,7 +6728,7 @@ "czt" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/obj/effect/landmark{name = "blobstart"},/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel{dir = 1; icon_state = "neutralcorner"},/area/maintenance/fpmaint2) "czu" = (/obj/machinery/hologram/holopad,/obj/effect/decal/warning_stripes/yellow/hollow,/turf/simulated/floor/plasteel{dir = 8; icon_state = "neutralfull"},/area/engine/engine_smes) "czv" = (/turf/simulated/floor/plasteel{dir = 1; icon_state = "yellow"},/area/maintenance/fpmaint2) -"czw" = (/turf/space,/obj/structure/transit_tube{tag = "icon-E-NW"; icon_state = "E-NW"},/obj/structure/window/reinforced{dir = 4},/turf/simulated/floor/plating/airless/catwalk,/area/space) +"czw" = (/turf/space,/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plating/airless/catwalk,/area/space) "czx" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor/plasteel{icon_state = "neutralcorner"; dir = 4},/area/maintenance/fpmaint2) "czy" = (/obj/structure/table/wood,/obj/machinery/status_display{pixel_x = -32; pixel_y = 0},/obj/item/newspaper,/obj/item/newspaper,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/library) "czz" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 5; level = 1},/obj/structure/chair/office/dark{dir = 1},/turf/simulated/floor/plasteel{icon_state = "grimy"},/area/library) @@ -6856,7 +6856,7 @@ "cBR" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor/plasteel{icon_state = "neutralcorner"; dir = 2},/area/crew_quarters/locker) "cBS" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 4; initialize_directions = 11; level = 1},/turf/simulated/floor/plasteel{icon_state = "neutralcorner"; dir = 2},/area/crew_quarters/locker) "cBT" = (/obj/structure/disposalpipe/segment{dir = 1; icon_state = "pipe-c"},/turf/simulated/floor/plasteel{icon_state = "neutralcorner"; dir = 2},/area/crew_quarters/locker) -"cBU" = (/turf/space,/obj/structure/cable/yellow{d1 = 2; d2 = 4; icon_state = "2-4"},/turf/simulated/floor/plating/airless/catwalk,/area/space) +"cBU" = (/turf/space,/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/plating/airless/catwalk,/area/space) "cBV" = (/obj/structure/chair/office/dark,/obj/machinery/newscaster{pixel_x = -32; pixel_y = 0},/turf/simulated/floor/plasteel{icon_state = "grimy"},/area/crew_quarters/sleep) "cBW" = (/obj/item/twohanded/required/kirbyplants,/turf/simulated/floor/plasteel{icon_state = "wood"},/area/crew_quarters/sleep) "cBX" = (/obj/structure/bed,/obj/item/bedsheet/brown,/turf/simulated/floor/plasteel{icon_state = "wood"},/area/crew_quarters/sleep) @@ -7141,7 +7141,7 @@ "cHq" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 1; level = 1},/turf/simulated/floor/plasteel{dir = 8; icon_state = "neutralcorner"},/area/maintenance/fpmaint2) "cHr" = (/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 4; initialize_directions = 11; level = 1},/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel{dir = 8; icon_state = "neutralfull"},/area/maintenance/fpmaint2) "cHs" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 6},/turf/simulated/floor/plasteel{icon_state = "neutral"; dir = 4},/area/maintenance/fpmaint2) -"cHt" = (/turf/space,/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plating/airless/catwalk,/area/space) +"cHt" = (/turf/space,/obj/structure/cable/yellow{d1 = 2; d2 = 8; icon_state = "2-8"},/turf/simulated/floor/plating/airless/catwalk,/area/space) "cHu" = (/obj/effect/decal/cleanable/cobweb,/obj/effect/decal/cleanable/dirt,/obj/machinery/vending/artvend,/turf/simulated/floor/plasteel,/area/maintenance/starboard) "cHv" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/wall/r_wall,/area/maintenance/fpmaint2) "cHw" = (/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers,/obj/effect/decal/cleanable/dirt,/obj/machinery/light/small{dir = 8},/turf/simulated/floor/plating,/area/maintenance/fpmaint2) @@ -7230,7 +7230,7 @@ "cJb" = (/obj/structure/sign/directions/engineering{dir = 8; pixel_y = 8},/obj/structure/sign/directions/science{dir = 8; pixel_y = 1},/obj/structure/sign/directions/evac{pixel_y = -8},/turf/simulated/wall,/area/medical/research) "cJc" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/door/airlock/public/glass,/turf/simulated/floor/plasteel{dir = 8; icon_state = "neutralcorner"},/area/crew_quarters/locker) "cJd" = (/obj/structure/lattice,/obj/machinery/camera{c_tag = "Singularity SouthWest"; dir = 4; network = list("SS13","Singularity","Engineering")},/turf/space,/area/engine/engineering) -"cJe" = (/turf/space,/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/plating/airless/catwalk,/area/space) +"cJe" = (/turf/space,/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plating/airless/catwalk,/area/space) "cJf" = (/obj/structure/sign/directions/evac{pixel_y = -8},/obj/structure/sign/directions/medical{dir = 4},/obj/structure/sign/directions/security{dir = 4; pixel_y = 8},/turf/simulated/wall,/area/medical/medbay) "cJg" = (/obj/effect/spawner/window/reinforced,/turf/simulated/floor/plating,/area/medical/medbay) "cJh" = (/obj/machinery/door/firedoor,/obj/effect/decal/warning_stripes/south,/turf/simulated/floor/plasteel,/area/medical/medbay) @@ -7287,9 +7287,9 @@ "cKg" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/structure/rack,/obj/item/book/manual/engineering_guide,/obj/effect/spawner/lootdrop/maintenance,/turf/simulated/floor/plasteel,/area/maintenance/fpmaint2) "cKh" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor/plasteel,/area/maintenance/fpmaint2) "cKi" = (/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 9},/obj/effect/decal/warning_stripes/yellow,/turf/simulated/floor/plasteel{icon_state = "neutral"; dir = 4},/area/maintenance/fpmaint2) -"cKj" = (/turf/space,/obj/structure/cable/yellow{d1 = 2; d2 = 8; icon_state = "2-8"},/turf/simulated/floor/plating/airless/catwalk,/area/space) +"cKj" = (/turf/space,/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/cable/yellow{d1 = 1; d2 = 4; icon_state = "1-4"},/turf/simulated/floor/plating/airless/catwalk,/area/space) "cKk" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; tag = ""},/obj/effect/decal/warning_stripes/northwest,/turf/simulated/floor/plasteel,/area/toxins/xenobiology) -"cKl" = (/turf/space,/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plating/airless/catwalk,/area/space) +"cKl" = (/turf/space,/obj/structure/window/reinforced,/turf/simulated/floor/plating/airless/catwalk,/area/space) "cKm" = (/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"; tag = ""},/obj/effect/landmark{name = "blobstart"},/obj/effect/decal/warning_stripes/north,/obj/machinery/atmospherics/pipe/manifold/hidden/cyan{icon_state = "map"; dir = 8},/turf/simulated/floor/plasteel,/area/toxins/xenobiology) "cKn" = (/mob/living/carbon/slime,/turf/simulated/floor/greengrid,/area/toxins/xenobiology) "cKo" = (/turf/simulated/floor/greengrid,/area/toxins/xenobiology) @@ -7447,7 +7447,7 @@ "cNk" = (/obj/structure/cable{icon_state = "0-4"; d2 = 4},/obj/machinery/shieldwallgen,/obj/effect/decal/warning_stripes/southeast,/turf/simulated/floor/plating,/area/toxins/xenobiology) "cNl" = (/obj/structure/disposalpipe/trunk{dir = 1},/obj/machinery/disposal,/obj/structure/window/reinforced{dir = 8},/obj/structure/extinguisher_cabinet{pixel_x = 26; pixel_y = 32},/obj/effect/decal/warning_stripes/yellow/hollow,/turf/simulated/floor/plasteel,/area/toxins/xenobiology) "cNm" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; tag = ""},/obj/effect/decal/warning_stripes/yellow,/turf/simulated/floor/plasteel,/area/toxins/xenobiology) -"cNn" = (/turf/space,/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/cable/yellow{d1 = 1; d2 = 4; icon_state = "1-4"},/turf/simulated/floor/plating/airless/catwalk,/area/space) +"cNn" = (/turf/space,/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/cable/yellow{d1 = 2; d2 = 4; icon_state = "2-4"},/obj/structure/cable/yellow{d1 = 1; d2 = 4; icon_state = "1-4"},/turf/simulated/floor/plating/airless/catwalk,/area/space) "cNo" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/obj/machinery/door/firedoor,/obj/machinery/door/airlock/research{name = "Xenobiology Lab"; req_access_txt = "47"},/obj/machinery/atmospherics/pipe/simple/hidden/cyan,/turf/simulated/floor/plasteel,/area/toxins/xenobiology) "cNp" = (/obj/effect/spawner/window/reinforced,/obj/structure/cable{icon_state = "0-4"; d2 = 4},/turf/simulated/floor/plating,/area/toxins/xenobiology) "cNq" = (/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/machinery/door/poddoor{density = 0; icon_state = "pdoor0"; id_tag = "xeno4"; name = "Creature Cell #4"; opacity = 0},/obj/machinery/door/window/brigdoor{dir = 1; name = "Creature Pen"; req_access_txt = "47"},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/toxins/xenobiology) @@ -7485,7 +7485,7 @@ "cNW" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4; level = 1},/turf/simulated/floor/plasteel{dir = 4; icon_state = "whitebluecorner"; tag = "icon-whitebluecorner"},/area/medical/medbay) "cNX" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4; level = 1},/obj/machinery/door/firedoor,/obj/machinery/door/airlock/medical/glass{id_tag = "medbayfoyer"; name = "Medbay Entrance"; req_access_txt = "5"},/turf/simulated/floor/plasteel{tag = "icon-whiteblue (NORTH)"; icon_state = "whiteblue"; dir = 1},/area/medical/medbay) "cNY" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4; level = 1},/turf/simulated/floor/plasteel{tag = "icon-whitebluefull"; icon_state = "whitebluefull"},/area/medical/medbay) -"cNZ" = (/turf/space,/obj/structure/window/reinforced,/turf/simulated/floor/plating/airless/catwalk,/area/space) +"cNZ" = (/turf/space,/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/cable/yellow{d1 = 2; d2 = 4; icon_state = "2-4"},/turf/simulated/floor/plating/airless/catwalk,/area/space) "cOa" = (/obj/structure/table/reinforced,/obj/item/book/manual/security_space_law,/obj/item/radio,/obj/machinery/status_display{pixel_y = 32},/obj/machinery/door_control{id = "medbayfoyer"; name = "Medbay Front Doors"; pixel_x = -25; pixel_y = 25},/turf/simulated/floor/plasteel{icon_state = "red"; dir = 9},/area/security/checkpoint/medical) "cOb" = (/obj/structure/table/reinforced,/obj/machinery/light{dir = 1},/obj/machinery/recharger,/obj/item/radio/intercom{dir = 1; name = "station intercom (General)"; pixel_y = 25},/turf/simulated/floor/plasteel{dir = 1; icon_state = "red"},/area/security/checkpoint/medical) "cOc" = (/obj/machinery/firealarm{dir = 4; pixel_x = 24},/obj/structure/closet/secure_closet/security/med,/obj/machinery/ai_status_display{pixel_y = 32},/obj/structure/extinguisher_cabinet{pixel_x = 28; pixel_y = 30},/turf/simulated/floor/plasteel{icon_state = "red"; dir = 5},/area/security/checkpoint/medical) @@ -7498,7 +7498,7 @@ "cOj" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor/plasteel{dir = 8; icon_state = "cmo"},/area/medical/medbay2) "cOk" = (/obj/structure/table/glass,/obj/machinery/light{icon_state = "tube1"; dir = 4},/obj/machinery/alarm{dir = 8; icon_state = "alarm0"; pixel_x = 24},/obj/item/storage/firstaid/toxin{pixel_x = 6; pixel_y = 6},/obj/item/storage/firstaid/toxin{pixel_x = 3; pixel_y = 3},/obj/item/storage/firstaid/regular,/obj/item/storage/firstaid/toxin{pixel_x = -3; pixel_y = -3},/turf/simulated/floor/plasteel{dir = 8; icon_state = "neutral"},/area/medical/medbay2) "cOl" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/wall,/area/medical/medbay) -"cOm" = (/turf/space,/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/cable/yellow{d1 = 2; d2 = 4; icon_state = "2-4"},/obj/structure/cable/yellow{d1 = 1; d2 = 4; icon_state = "1-4"},/turf/simulated/floor/plating/airless/catwalk,/area/space) +"cOm" = (/turf/space,/obj/structure/cable/yellow{d1 = 1; d2 = 4; icon_state = "1-4"},/turf/simulated/floor/plating/airless/catwalk,/area/space) "cOn" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 9; level = 1},/obj/effect/decal/warning_stripes/yellow,/turf/simulated/floor/plasteel,/area/maintenance/starboard) "cOo" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/plating,/area/maintenance/starboard) "cOp" = (/obj/structure/table/wood,/obj/machinery/newscaster{pixel_x = -32; pixel_y = 0},/obj/item/paper_bin,/obj/item/pen,/turf/simulated/floor/plasteel{icon_state = "wood"},/area/crew_quarters/sleep) @@ -7574,7 +7574,7 @@ "cPH" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/effect/landmark{name = "lightsout"},/turf/simulated/floor/plasteel{dir = 1; icon_state = "whitebluecorner"; tag = "icon-whitebluecorner"},/area/medical/medbay) "cPI" = (/obj/structure/disposalpipe/segment{dir = 1; icon_state = "pipe-c"},/obj/machinery/atmospherics/unary/vent_pump{dir = 1; on = 1},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor/plasteel{dir = 1; icon_state = "whitebluecorner"; tag = "icon-whitebluecorner"},/area/medical/medbay) "cPJ" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor/plasteel{dir = 2; icon_state = "whitebluecorner"; tag = "icon-whitebluecorner"},/area/medical/medbay) -"cPK" = (/turf/space,/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/cable/yellow{d1 = 2; d2 = 4; icon_state = "2-4"},/turf/simulated/floor/plating/airless/catwalk,/area/space) +"cPK" = (/turf/space,/obj/structure/cable/yellow{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plating/airless/catwalk,/area/space) "cPL" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 10},/turf/simulated/floor/plasteel{tag = "icon-whitebluecorner (WEST)"; icon_state = "whitebluecorner"; dir = 8},/area/medical/medbay) "cPM" = (/obj/structure/disposalpipe/segment{dir = 2; icon_state = "pipe-c"},/obj/machinery/atmospherics/unary/vent_pump{dir = 4; on = 1},/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/medbay) "cPN" = (/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 4; initialize_directions = 11; level = 1},/turf/simulated/floor/plasteel{dir = 4; icon_state = "whitebluecorner"; tag = "icon-whitebluecorner"},/area/medical/medbay) @@ -7587,8 +7587,8 @@ "cPU" = (/obj/structure/table/glass,/obj/item/storage/firstaid/brute{pixel_x = 6; pixel_y = 6},/obj/item/storage/firstaid/brute{pixel_x = 3; pixel_y = 3},/obj/item/storage/firstaid/regular,/obj/item/storage/firstaid/brute{pixel_x = -3; pixel_y = -3},/turf/simulated/floor/plasteel{icon_state = "neutral"; dir = 4},/area/medical/medbay2) "cPV" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 1; on = 1},/turf/simulated/floor/plasteel{dir = 8; icon_state = "cmo"},/area/medical/medbay2) "cPW" = (/obj/structure/table/glass,/obj/machinery/requests_console{department = "Medbay"; departmentType = 1; name = "Medbay Requests Console"; pixel_x = 30; pixel_y = 0; pixel_z = 0},/obj/item/storage/firstaid/o2{pixel_x = 6; pixel_y = 6},/obj/item/storage/firstaid/o2{pixel_x = 3; pixel_y = 3},/obj/item/storage/firstaid/regular,/obj/item/storage/firstaid/o2{pixel_x = -3; pixel_y = -3},/turf/simulated/floor/plasteel{dir = 8; icon_state = "neutral"},/area/medical/medbay2) -"cPX" = (/turf/space,/obj/structure/cable/yellow{d1 = 1; d2 = 4; icon_state = "1-4"},/turf/simulated/floor/plating/airless/catwalk,/area/space) -"cPY" = (/turf/space,/obj/structure/cable/yellow{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plating/airless/catwalk,/area/space) +"cPX" = (/turf/space,/obj/structure/cable/yellow{d1 = 1; d2 = 8; icon_state = "1-8"},/turf/simulated/floor/plating/airless/catwalk,/area/space) +"cPY" = (/turf/space,/obj/machinery/access_button{command = "cycle_exterior"; frequency = 1379; master_tag = "sw_maint_airlock"; name = "exterior access button"; pixel_x = 24; pixel_y = 24; req_access_txt = "0"},/turf/simulated/floor/plating/airless/catwalk,/area/space) "cPZ" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/wall,/area/medical/medbay3) "cQa" = (/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/door/airlock/maintenance{name = "Medbay Maintenance"; req_access_txt = "5"},/turf/simulated/floor/plasteel,/area/medical/medbay3) "cQb" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/door/firedoor,/obj/machinery/door/airlock/medical/glass{id_tag = "medbayfoyer"; name = "Medbay Entrance"; req_access_txt = "5"},/turf/simulated/floor/plasteel{tag = "icon-whiteblue"; icon_state = "whiteblue"},/area/medical/medbay) @@ -8188,12 +8188,12 @@ "dbx" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/light/small{dir = 8},/turf/simulated/floor/plasteel{dir = 8; icon_state = "neutral"},/area/maintenance/starboard) "dby" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor/plasteel{icon_state = "neutral"; dir = 4},/area/maintenance/starboard) "dbz" = (/obj/effect/spawner/window/reinforced,/turf/simulated/floor/plating,/area/maintenance/gambling_den) -"dbA" = (/turf/space,/obj/structure/cable/yellow{d1 = 1; d2 = 8; icon_state = "1-8"},/turf/simulated/floor/plating/airless/catwalk,/area/space) +"dbA" = (/obj/item/hemostat,/obj/effect/decal/cleanable/dirt,/obj/machinery/newscaster{pixel_y = -32},/obj/structure/table/tray,/turf/simulated/floor/plating,/area/medical/surgery1) "dbB" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4; level = 1},/turf/simulated/floor/plating,/area/maintenance/gambling_den) "dbC" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4; level = 1},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/maintenance/gambling_den) "dbD" = (/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4; level = 1},/turf/simulated/floor/plating,/area/maintenance/gambling_den) "dbE" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; tag = ""},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4; level = 1},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/maintenance/gambling_den) -"dbF" = (/turf/space,/obj/machinery/access_button{command = "cycle_exterior"; frequency = 1379; master_tag = "sw_maint_airlock"; name = "exterior access button"; pixel_x = 24; pixel_y = 24; req_access_txt = "0"},/turf/simulated/floor/plating/airless/catwalk,/area/space) +"dbF" = (/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 1; initialize_directions = 11; level = 1},/obj/item/surgicaldrill,/obj/item/circular_saw,/obj/item/FixOVein,/obj/structure/table/tray,/turf/simulated/floor/plasteel{tag = "icon-whiteblue (NORTH)"; icon_state = "whiteblue"; dir = 1},/area/medical/surgery) "dbG" = (/obj/item/twohanded/required/kirbyplants,/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/maintenance/gambling_den) "dbH" = (/obj/machinery/atmospherics/pipe/manifold/hidden/supply,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/maintenance/gambling_den) "dbI" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 10},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/maintenance/gambling_den) @@ -9227,7 +9227,7 @@ "dvw" = (/obj/structure/morgue,/obj/effect/landmark{name = "revenantspawn"},/turf/simulated/floor/plating,/area/medical/morgue) "dvx" = (/obj/structure/morgue,/obj/effect/landmark{name = "revenantspawn"},/turf/simulated/floor/plasteel{icon_state = "vault"; dir = 8},/area/medical/morgue) "dvy" = (/obj/machinery/light/small{dir = 1},/turf/simulated/floor/plating,/area/medical/morgue) -"dvz" = (/obj/structure/filingcabinet/chestdrawer,/obj/effect/decal/cleanable/cobweb2,/turf/simulated/floor/plating,/area/medical/morgue) +"dvz" = (/obj/effect/decal/cleanable/cobweb2,/obj/structure/filingcabinet/chestdrawer/autopsy,/turf/simulated/floor/plating,/area/medical/morgue) "dvA" = (/obj/structure/bed/roller,/obj/effect/decal/cleanable/cobweb,/obj/machinery/iv_drip,/turf/simulated/floor/plasteel,/area/medical/morgue) "dvB" = (/obj/structure/bed/roller,/obj/machinery/iv_drip,/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel,/area/medical/morgue) "dvC" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/light/small{dir = 1},/turf/simulated/floor/plating,/area/medical/morgue) @@ -10005,7 +10005,7 @@ "dKu" = (/turf/simulated/floor/plasteel{dir = 8; icon_state = "neutralfull"},/area/shuttle/escape) "dKv" = (/obj/item/twohanded/required/kirbyplants,/obj/machinery/light{icon_state = "tube1"; dir = 4},/turf/simulated/floor/plasteel,/area/shuttle/escape) "dKw" = (/obj/machinery/status_display,/turf/simulated/shuttle/wall{icon_state = "swall3"; dir = 2},/area/shuttle/escape) -"dKx" = (/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 1; initialize_directions = 11; level = 1},/obj/structure/table/reinforced,/obj/item/surgicaldrill,/obj/item/circular_saw,/obj/item/FixOVein,/turf/simulated/floor/plasteel{tag = "icon-whiteblue (NORTH)"; icon_state = "whiteblue"; dir = 1},/area/medical/surgery) +"dKx" = (/turf/space,/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/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"},/turf/simulated/floor/plating/airless/catwalk,/area/maintenance/auxsolarstarboard) "dKy" = (/obj/structure/grille,/obj/structure/window/full/shuttle{icon_state = "16"},/turf/simulated/floor/plating,/area/shuttle/escape) "dKz" = (/obj/effect/spawner/window/reinforced,/obj/structure/cable{icon_state = "0-4"; d2 = 4},/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"; tag = ""},/turf/simulated/floor/plating,/area/medical/virology) "dKA" = (/obj/effect/spawner/window/reinforced,/obj/structure/cable{d2 = 2; icon_state = "0-2"},/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"; tag = ""},/turf/simulated/floor/plating,/area/medical/virology) @@ -10255,8 +10255,8 @@ "dPk" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 10; initialize_directions = 10; level = 1},/obj/structure/table,/obj/item/crowbar,/obj/item/wrench,/obj/item/restraints/handcuffs/cable,/obj/structure/disposalpipe/segment,/turf/simulated/floor/plasteel{dir = 2; icon_state = "whitegreen"; tag = "icon-whitehall (WEST)"},/area/medical/virology) "dPl" = (/obj/structure/table,/obj/item/storage/box/masks,/obj/item/storage/box/gloves,/obj/structure/sign/vacuum{pixel_y = -32},/turf/simulated/floor/plasteel{dir = 5; icon_state = "whitegreencorner"},/area/medical/virology) "dPm" = (/obj/effect/spawner/window/reinforced,/obj/structure/cable,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/plating,/area/medical/virology) -"dPn" = (/obj/structure/bed/roller,/obj/effect/decal/warning_stripes/yellow/hollow,/mob/living/carbon/human/monkey,/turf/simulated/floor/plasteel,/area/medical/virology) -"dPo" = (/obj/effect/landmark{name = "revenantspawn"},/obj/effect/decal/warning_stripes/yellow,/mob/living/carbon/human/monkey,/turf/simulated/floor/plasteel,/area/medical/virology) +"dPn" = (/turf/space,/obj/structure/cable{d2 = 2; icon_state = "0-2"; pixel_y = 0},/turf/simulated/floor/plating/airless/catwalk,/area/maintenance/auxsolarstarboard) +"dPo" = (/obj/structure/bed/roller,/obj/effect/decal/warning_stripes/yellow/hollow,/mob/living/carbon/human/monkey,/turf/simulated/floor/plasteel{dir = 8; icon_state = "whitegreencorner"},/area/medical/virology) "dPp" = (/obj/effect/spawner/window/reinforced,/turf/simulated/floor/plating,/area/maintenance/portsolar) "dPq" = (/turf/simulated/wall/r_wall,/area/maintenance/portsolar) "dPr" = (/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"; tag = ""},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/effect/spawner/random_spawners/blood_maybe,/turf/simulated/floor/plasteel{dir = 8; icon_state = "neutral"},/area/maintenance/fpmaint2) @@ -10326,7 +10326,7 @@ "dQD" = (/obj/machinery/field/generator{anchored = 1; state = 2},/obj/effect/decal/warning_stripes/southeast,/turf/simulated/floor/plating/airless,/area/space) "dQE" = (/obj/effect/decal/warning_stripes/southwestcorner,/turf/simulated/floor/plating/airless,/area/space) "dQF" = (/obj/structure/table,/obj/item/storage/firstaid/regular,/obj/effect/decal/warning_stripes/yellow,/turf/simulated/floor/plasteel{dir = 8; icon_state = "neutralfull"},/area/hallway/secondary/exit) -"dQG" = (/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/machinery/door/airlock/medical/glass{id_tag = null; name = "Monkey Pen"; req_access_txt = "39"},/obj/effect/decal/warning_stripes/yellow/partial{icon_state = "3"; dir = 1},/obj/effect/decal/warning_stripes/arrow{icon_state = "4"; dir = 1},/turf/simulated/floor/plasteel,/area/medical/virology) +"dQG" = (/obj/effect/landmark{name = "revenantspawn"},/obj/effect/decal/warning_stripes/yellow,/mob/living/carbon/human/monkey,/turf/simulated/floor/plasteel{dir = 2; icon_state = "whitegreen"; tag = "icon-whitehall (WEST)"},/area/medical/virology) "dQH" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/obj/structure/table/glass,/obj/item/reagent_containers/spray/cleaner,/obj/item/reagent_containers/dropper,/obj/machinery/alarm{dir = 4; pixel_x = -23; pixel_y = 0},/obj/effect/decal/warning_stripes/east,/turf/simulated/floor/plasteel,/area/medical/virology) "dQI" = (/obj/machinery/door/airlock/external{aiControlDisabled = 0; hackProof = 1; id_tag = "emergency_home"; name = "Escape Airlock"},/obj/effect/decal/warning_stripes/west,/turf/simulated/floor/plasteel,/area/security/checkpoint) "dQJ" = (/obj/structure/cable{d2 = 8; icon_state = "0-8"},/obj/machinery/power/terminal{icon_state = "term"; dir = 1},/obj/effect/landmark{name = "blobstart"},/turf/simulated/floor/plating,/area/maintenance/portsolar) @@ -10707,7 +10707,7 @@ "dXU" = (/obj/structure/table/reinforced,/obj/item/storage/firstaid/regular,/obj/item/clothing/gloves/color/latex,/obj/item/clothing/mask/surgical,/obj/machinery/status_display{pixel_y = -32},/turf/simulated/floor/plasteel,/area/medical/surgery1) "dXV" = (/obj/structure/table/wood,/obj/item/soulstone/anybody/chaplain,/obj/item/nullrod,/turf/simulated/floor/plasteel{icon_state = "grimy"},/area/chapel/office) "dXW" = (/obj/machinery/light/small{dir = 4; pixel_y = 8},/obj/machinery/atmospherics/pipe/simple/hidden{dir = 6},/obj/machinery/access_button{command = "cycle_interior"; frequency = 1379; master_tag = "arrival_south_airlock"; name = "interior access button"; pixel_x = -24; pixel_y = -24; req_access_txt = "10;13"},/obj/structure/sign/vacuum{pixel_x = -32},/turf/simulated/floor/plasteel,/area/hallway/secondary/exit) -"dXX" = (/obj/structure/table/reinforced,/obj/item/hemostat,/obj/effect/decal/cleanable/dirt,/obj/machinery/newscaster{pixel_y = -32},/turf/simulated/floor/plating,/area/medical/surgery1) +"dXX" = (/turf/space,/obj/machinery/access_button{command = "cycle_exterior"; frequency = 1379; master_tag = "sw_maint2_airlock"; name = "exterior access button"; pixel_x = 24; pixel_y = 24; req_access_txt = "0"},/turf/simulated/floor/plating/airless/catwalk,/area/space) "dXY" = (/obj/structure/table/reinforced,/obj/item/reagent_containers/blood/random,/obj/item/reagent_containers/blood/random,/obj/item/reagent_containers/syringe/epinephrine,/obj/item/reagent_containers/syringe,/obj/item/clothing/accessory/stethoscope,/obj/effect/decal/cleanable/dirt,/obj/machinery/status_display{pixel_y = -32},/turf/simulated/floor/plasteel,/area/medical/surgery1) "dXZ" = (/obj/structure/table/reinforced,/obj/structure/bedsheetbin,/obj/item/gun/syringe,/obj/machinery/light/small,/turf/simulated/floor/plasteel,/area/medical/surgery1) "dYa" = (/obj/effect/spawner/random_spawners/wall_rusted_maybe,/turf/simulated/wall,/area/medical/surgery1) @@ -10740,22 +10740,21 @@ "dYB" = (/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/greengrid,/area/medical/research) "dYC" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 4; on = 1},/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel{dir = 8; icon_state = "neutralfull"},/area/medical/research) "dYD" = (/obj/item/robot_parts/robot_suit,/obj/effect/decal/warning_stripes/yellow,/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel,/area/medical/research) -"dYE" = (/turf/space,/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/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"},/turf/simulated/floor/plating/airless/catwalk,/area/maintenance/auxsolarstarboard) -"dYF" = (/turf/space,/obj/structure/cable{d2 = 2; icon_state = "0-2"; pixel_y = 0},/turf/simulated/floor/plating/airless/catwalk,/area/maintenance/auxsolarstarboard) +"dYE" = (/obj/structure/bed/roller,/obj/effect/decal/warning_stripes/yellow/hollow,/mob/living/carbon/human/monkey,/turf/simulated/floor/plasteel{dir = 5; icon_state = "whitegreencorner"},/area/medical/virology) +"dYF" = (/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/machinery/door/airlock/medical/glass{id_tag = null; name = "Monkey Pen"; req_access_txt = "39"},/obj/effect/decal/warning_stripes/yellow/partial{icon_state = "3"; dir = 1},/obj/effect/decal/warning_stripes/arrow{icon_state = "4"; dir = 1},/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/virology) "dYG" = (/obj/item/twohanded/required/kirbyplants,/obj/effect/decal/warning_stripes/yellow,/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel,/area/medical/research) "dYH" = (/obj/item/twohanded/required/kirbyplants,/obj/structure/sign/poster/random{pixel_y = -32},/obj/effect/decal/warning_stripes/yellow,/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel,/area/medical/research) -"dYI" = (/turf/space,/obj/machinery/access_button{command = "cycle_exterior"; frequency = 1379; master_tag = "sw_maint2_airlock"; name = "exterior access button"; pixel_x = 24; pixel_y = 24; req_access_txt = "0"},/turf/simulated/floor/plating/airless/catwalk,/area/space) -"dYJ" = (/turf/space,/obj/structure/cable{icon_state = "0-4"; d2 = 4},/turf/simulated/floor/plating/airless/catwalk,/area/maintenance/portsolar) -"dYK" = (/turf/space,/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plating/airless/catwalk,/area/maintenance/portsolar) -"dYL" = (/turf/space,/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/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"},/turf/simulated/floor/plating/airless/catwalk,/area/maintenance/portsolar) -"dYM" = (/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/maintenance/portsolar) -"dYN" = (/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"},/turf/simulated/floor/plating/airless/catwalk,/area/maintenance/portsolar) -"dYO" = (/turf/space,/obj/structure/cable{d2 = 8; icon_state = "0-8"},/turf/simulated/floor/plating/airless/catwalk,/area/maintenance/portsolar) -"dYP" = (/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"},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plating/airless/catwalk,/area/maintenance/portsolar) -"dYQ" = (/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"},/turf/simulated/floor/plating/airless/catwalk,/area/maintenance/portsolar) -"dYR" = (/turf/space,/obj/machinery/access_button{command = "cycle_exterior"; frequency = 1379; master_tag = "arrival_south_airlock"; name = "exterior access button"; pixel_x = 24; pixel_y = 24; req_access_txt = "10;13"},/turf/simulated/floor/plating/airless/catwalk,/area/space) -"dYS" = (/turf/space,/obj/structure/cable{d2 = 2; icon_state = "0-2"; pixel_y = 0},/turf/simulated/floor/plating/airless/catwalk,/area/maintenance/portsolar) -"dYT" = (/turf/space,/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0},/turf/simulated/floor/plating/airless/catwalk,/area/maintenance/portsolar) +"dYI" = (/turf/space,/obj/structure/cable{icon_state = "0-4"; d2 = 4},/turf/simulated/floor/plating/airless/catwalk,/area/maintenance/portsolar) +"dYJ" = (/turf/space,/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plating/airless/catwalk,/area/maintenance/portsolar) +"dYK" = (/turf/space,/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/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"},/turf/simulated/floor/plating/airless/catwalk,/area/maintenance/portsolar) +"dYL" = (/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/maintenance/portsolar) +"dYM" = (/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"},/turf/simulated/floor/plating/airless/catwalk,/area/maintenance/portsolar) +"dYN" = (/turf/space,/obj/structure/cable{d2 = 8; icon_state = "0-8"},/turf/simulated/floor/plating/airless/catwalk,/area/maintenance/portsolar) +"dYO" = (/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"},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plating/airless/catwalk,/area/maintenance/portsolar) +"dYP" = (/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"},/turf/simulated/floor/plating/airless/catwalk,/area/maintenance/portsolar) +"dYQ" = (/turf/space,/obj/machinery/access_button{command = "cycle_exterior"; frequency = 1379; master_tag = "arrival_south_airlock"; name = "exterior access button"; pixel_x = 24; pixel_y = 24; req_access_txt = "10;13"},/turf/simulated/floor/plating/airless/catwalk,/area/space) +"dYR" = (/turf/space,/obj/structure/cable{d2 = 2; icon_state = "0-2"; pixel_y = 0},/turf/simulated/floor/plating/airless/catwalk,/area/maintenance/portsolar) +"dYS" = (/turf/space,/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0},/turf/simulated/floor/plating/airless/catwalk,/area/maintenance/portsolar) (1,1,1) = {" aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa @@ -10837,36 +10836,36 @@ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabjabjatYatYatYatYatYabjaEbabjatYatYatYatYatYabjabjabjaaaabjaAeaAiaAiaAiaEaatdaBhaCiaAgaCSazTazXaCgazZaAaaAbaChaAdaBfaCUaAgaCWaBlaCkabjalIawZaClaClaClaClaClaClaClaClaClaCmaClaClalIaCnaCoambauRalZayiaxbaCpaCqaxbaCraCsaxbaxbaCtaxeaCuaxeaEOaxeaFQaAzaCxaxeaBCaCyaCzayAaCAayAaAKaCBaCCaCDaCEaCFaCGaCHayAaCJaCKaDiaCLaCMaCNaCNaBSaBSaBSaFaaCOaBaaCPaCQaCRaCaaCbaCbaCbaCbaCbaCaacFaaaaaaabjaaaabjaaaabjaaaabjaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabiaaaaaaaaaabjaaaaaaabjaEcabjaaaaaaabjaaaaaaaaaabiabjaaaaaaaBVayGaAiayGaDCauKaCdaDeaCVaDhayPayMaCXaCYaCZaDaaDbayMayLaEeaDdaElaCeaDgaFzamhalZaClaDkaDlaDmaDnaDoaDpaDqaDraEkaFmaClaDsaDtaDuaDvaDwaDuaDxaDyaDzaDDaDBaEwaECaDEaDFaDGaDHaDHaDHaDHaDHaDHaDIaDHaDHaDJaCyaCzayAaDKayAaAKaBYaBIaCfaDNaCIaDjaDQaDSaDTaDWaDUaCNaDVaBSaEQaEXaEYaEZaFaaDXaDYaGPaGfaIgaHVaCbaCbaCbaCbaCbaCaacFaaaaaaabjaaaabjaaaabjaaaabjaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaZaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabiabiabjabiabiabjabjabjaEcabjabjabiabiabiabjabiabiabjabiabjaAeazRaAiayGaEaauKaCdaFdaEdaFlaCjaCjaEgaEhaAaaEiaEgaCTaDcaFVaEmaGhaEoauKaEpamhambaClaEqaEraEqaEqaEraEraEqaEsaEtaEraClaEuawXalIalIalIalIalIalIaEvaEJaExauVauVaEyaEyaEzaEAatNatNaprapravUapraHWaHXaEDaEEaEFayAaEGaDLaEIaDMaEKaDOaDPaDRaEHaEPayAaFpaDWaERaESaETaESaESaEUaEUaEVaFaaEWaFMaFNaFOaFPaFbaCbaCbaCbaCbaCbaCaacFabjabjabjabjabjabjacFacFacFacFaaaaaaaaaabiabiabiaaaaaaaaaaaaaaaabiabiaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaEcabjaaaaaaabjaaaaaaabjabjabjaaaabjaJJaITaDCaITaDCauKaCdaFdaFcaHcaDfaEfaFgaFhaCZaFhayMaEjaEjaFVaFjaGhaFkauKaLQamhambaClaGeaEraEqaEqaEraFnaEraEqaFoaHbaClaFqaFraFsaFtaFuaFvaFwaFxaFyaGMaFAaFAaFAaFAaFAaFAaFAaFAaFAaFAaFAaFAaFAaFAaFAaFBaCyaFCayAaFDayAaFEaFFaFGaFHaFIaFJaFKaFLayAaLVaGQaGRaCNaDVaCNaHzaIeaEQaEZaFaaEWaIfaFRaFSaBZaCaaFTaCbaCbaCbaFUaCaacFaaaaaaabjaaaaaaabjaaaabjaaaabjaaaaaaaaaabiabjabjabjaaaaaaaaaabjabjabjaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaEcabjaaaaaaabjaaaaaaabjabjabjaaaabjaJyaITaDCaITaDCauKaCdaFdaFcaHcaDfaEfaFgaFhaCZaFhayMaEjaEjaFVaFjaGhaFkauKaJzamhambaClaGeaEraEqaEqaEraFnaEraEqaFoaHbaClaFqaFraFsaFtaFuaFvaFwaFxaFyaGMaFAaFAaFAaFAaFAaFAaFAaFAaFAaFAaFAaFAaFAaFAaFAaFBaCyaFCayAaFDayAaFEaFFaFGaFHaFIaFJaFKaFLayAaLVaGQaGRaCNaDVaCNaHzaIeaEQaEZaFaaEWaIfaFRaFSaBZaCaaFTaCbaCbaCbaFUaCaacFaaaaaaabjaaaaaaabjaaaabjaaaabjaaaaaaaaaabiabjabjabjaaaaaaaaaabjabjabjaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaatcabjabjabjabjabjabjabjabjabjacFabjaBVaEaaBVaEaaBVaxHaxGaHoaFWaEnaFeaFfaFeaFiaFXaFYaFZaGaaFiaGbaGgaHpaGcatdaEpalIaqFaClaEraEraGjaGkaGkaGlaGmaEraFoaGnaClaEuaFraGoaGpaGqaGraGraGsaGtaGuaFAaGvaGwaGxaGyaGzaFAaGAaGBaGCaGDaGEaGFaGGaFAaGHaGIaGJaGKaGKaGKaGLaELaGNaGLaGOaGOaGOaGOaGOaJmaKbaDiaBSaDVaCNaCNaCNaCNaBSaKIaDXaKJaFNaKKaFPaFbaCbaCbaCbaCbaCbaGSacFabjabjabjabjabjabjabjabjaaaabjaaaaaaaaaabjabjaGTaGUaGVaGTaGVaGTaGTabjaaaabiabiaaaaaaaaaaaaaaaaGWabiaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaatZabjabjabjaGXaGYaGYaGYaGYaGZaHaaGZaGZaGZaHaaHaaGZatdaGdaJFaJHaHeaHfaHgaHhaHiaGiaHkaHhaHlaHmaHnaMEaJDaJGatdaLQalIambaClaHdaHjaHqaHraHsaHtaHuaHvaHwaHdaClaEuaFraHAaHBaHCaHDaHEaHFaHGaHHaHIaHJaHKaHLaHMaHNaHOaHNaHNaHNaHPaHNaHQaHRaFAaBCaCyaJcaHTaHUaIhaEMaJgaKvaHZaGOaIaaIbaIcaGOaIdaBSaDUaEQaKLaBSaEXaEQaMfaEZaKIaDXaIiaIkaIjaJsaJraCbaCbaCbaCbaCbaCaacFaaaaaaabjaaaaaaabjaaaabjabjabiabiabiabjabjabjaGTaIlaImaInaIoaIpaGTabjabjabjabjabjacFacFacFabjabjabiaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaatZabjaGXaGXaGXaIqaIraIsaGYaItaIuaIvaIwaIxaIyaIzaIAaGZaGZaGZaIBaICaIDaIEaIFaIGaIHaIIaIDaIJaIKaILaJDatdatdatdaEpalIalZaClaClaIMaClaClaClaHxaHyaClaIPaClaClaIQaFraFxaFxaFxaFxaFxaFxaIRaHSaHYaISaIVaIWaIXaIYaFAaIZaJaaIZaIZaJaaIZaJbaFAaBCaCyaKwaJdaJdaENaENaJfaKxaJhaJiaJjaJkaJlaMwaJnaJoaJpaJoaJqaBSaBSaBSaBSaBSaKIaNkaJEaJtaJuaJvaCaaCbaCbaCbaCbaCbaCaacFaaaaaaabjaaaaaaabjaaaabiaaaaaaabjaaaaaaaaaabjaJwaJxaJyaJzaJAaJBaJCaaaabjaaaabjaaaabjaaaabjaaaabjabiaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaatZaLTaJKaJLaKoaLlaJIaJMaLraMOaJNaJOaJOaJOaJPaJQaJRaJSaJUaGZaJTaJWaCkatdatdaJVaJZaJXatdatdaJYaKXauKatdabjaaaaLQalIaKaambauRauRalZalZauRaINaKcaKdaKeaKfaKfaKgaFraKhaKiaKjaKkaKlaFxaKmaIUaFAaKnaIXaIXaIXaKpaKqaKraKsaKsaKsaKsaKsaKsaFAaKtaKuaKwaJdaMaaNxaNpaKyaKxaKzaKAaKBaKCaKDaKEaKFaKGaKHaNwaOQaBSaOSaQnaEQaNwaKIaDXaJEaBZabjaaaaKMaKNaCbaKOaCbaKPaKQacFaaaaaaabjabjabjabjabjabiabjabjabjabjabjabjabjaGTaKRaKSaKTaKUaKVaGTabjabjabjabjaKWabjaaaabjaKWabjaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaatZabjabjabjaGXaGYaGYaGYaGYaGZaHaaGZaGZaGZaHaaHaaGZatdaGdaJFaJHaHeaHfaHgaHhaHiaGiaHkaHhaHlaHmaHnaMEaJDaJGatdaJzalIambaClaHdaHjaHqaHraHsaHtaHuaHvaHwaHdaClaEuaFraHAaHBaHCaHDaHEaHFaHGaHHaHIaHJaHKaHLaHMaHNaHOaHNaHNaHNaHPaHNaHQaHRaFAaBCaCyaJcaHTaHUaIhaEMaJgaKvaHZaGOaIaaIbaIcaGOaIdaBSaDUaEQaKLaBSaEXaEQaMfaEZaKIaDXaIiaIkaIjaJsaJraCbaCbaCbaCbaCbaCaacFaaaaaaabjaaaaaaabjaaaabjabjabiabiabiabjabjabjaGTaIlaImaInaIoaIpaGTabjabjabjabjabjacFacFacFabjabjabiaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaatZabjaGXaGXaGXaIqaIraIsaGYaItaIuaIvaIwaIxaIyaIzaIAaGZaGZaGZaIBaICaIDaIEaIFaIGaIHaIIaIDaIJaIKaILaJDatdatdatdaEpalIalZaClaClaIMaClaClaClaHxaHyaClaIPaClaClaIQaFraFxaFxaFxaFxaFxaFxaIRaHSaHYaISaIVaIWaIXaIYaFAaIZaJaaIZaIZaJaaIZaJbaFAaBCaCyaKwaJdaJdaENaENaJfaKxaJhaJiaJjaJkaJlaMwaJnaJoaJpaJoaJqaBSaBSaBSaBSaBSaKIaNkaJEaJtaJuaJvaCaaCbaCbaCbaCbaCbaCaacFaaaaaaabjaaaaaaabjaaaabiaaaaaaabjaaaaaaaaaabjaJwaJxaJJaKTaJAaJBaJCaaaabjaaaabjaaaabjaaaabjaaaabjabiaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaatZaLQaJKaJLaKoaLlaJIaJMaLraMOaJNaJOaJOaJOaJPaJQaJRaJSaJUaGZaJTaJWaCkatdatdaJVaJZaJXatdatdaJYaKXauKatdabjaaaaJzalIaKaambauRauRalZalZauRaINaKcaKdaKeaKfaKfaKgaFraKhaKiaKjaKkaKlaFxaKmaIUaFAaKnaIXaIXaIXaKpaKqaKraKsaKsaKsaKsaKsaKsaFAaKtaKuaKwaJdaMaaNxaNpaKyaKxaKzaKAaKBaKCaKDaKEaKFaKGaKHaNwaOQaBSaOSaQnaEQaNwaKIaDXaJEaBZabjaaaaKMaKNaCbaKOaCbaKPaKQacFaaaaaaabjabjabjabjabjabiabjabjabjabjabjabjabjaGTaKRaKSaSpaKUaKVaGTabjabjabjabjaKWabjaaaabjaKWabjaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabjabjaGXaGXaGXaKYaKZaLcaLaaLbaLkaLdaLeaLfaLgaLhaLiaLjaPsaLmaLnaLoaLqaLpaPEaLsaLtaLuaLqatdaLvaLwaMxatdabjabjaEpalIalJaLxasqaqlambaqlaLyaLzaLAalZaLBaLCalZaLDaFraLEaLFaLGaLHaLHaLIaLJaLKaFAaLLaLMaLNaLOaLPaFAaQtaTpaTpaTpaVQaTpaZZaLUaBCaCyaJcaQpaLWaLXaLYaLZaNyaJhaMbaMcaMdaMeaQoaMgaESaMhaBSaMiaMjaMkaMkaMjaMlaKIaDXaJEaBZabjaaaaMmaMnaMoaMoaMoaMnaMpaaaaaaaaaabjaaZaaaabjaaaabiaaaabjaGTaGTaGTaGTaGVaGTaMqaMraMsaMtaMqaGUaGTaMuaJCaGTaMvaIOaIOaIOaMvabjabiaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacFbaNacFacFaMyaMyaMyaMyaMzaMAaLkaMBaMCaMDaMIaMFaMGaMHaMKaMJaMLaMMaMNatdaRaaMPaMQaMRaNZatdaMSaMTaMUatdabjaaaaLQalIalIalIalIalIaqFaMVaMVaMWaMWaMWaMXaMYaMWaMZaFraNaaNbaNcaNdaNeaHFaNfaNgaFAaFAaFAaFAaFAaFAaFAaNhaNiaNiaNiaNiaNiaNjaLUaBCaCyaRHaJdaNlaNmaNnaNoaTiaJhaGOaNqaNraNsaGOaNtaCNaNuaEYaQqaBSaOSaQraEXaEZaKIaSwaQsaBZabjaaaaaaaNzaNAaNAaNAaNBaaaaaaaaaaaaabjaaaaaaabjaaaabjaaaabjaGUaNCaMqaNDaNEaNFaNGaNHaNIaNJaNKaNLaNMaNNaNOaNPaMvaNQaNRaNSaMvabjabiaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacFabjaNTaMyaMyaNUaNVaNWaNXaNYaOdaOaaObaOcaOhaObaObaOeaOfaOgaOgaOjaOgaOgaOgaOiaOmaOkaOgaOgaOgaOgaOgaOlabjabjbaPbaSaOobaSaFzalIambaMVaOpaOqaOraOsaOtaOuaMWaOvaOwaOxaOxaOxaOxaOxaOxaOyaOzaLUaOAaOBaOCaODaOEaOFaNiaOGaLRaLRaLRaNiaNiaOHaBCaCyaOIaGKaOJaOKaOLaNoaOMaONaGOaOOaOPaKEaGOaQuaBSaNuaCNaORaCNaCNaCNaBSaBSaKIaQvaQvaBZabjaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabjaaaaaaabjaaaabjabjabjaGUaOTaOUaOVaOWaOXaOVaOYaOZaPaaOVaPbaPcaPdaPeaPfaMvaPgaPhaPiaPjabjabiaaaaaZaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacFaaaaPkaPlaPmaPnaPoaPpaPqaPraPtaPBaPuaPvaPwaPwaPwaPxaPyaPzaPAaTraPAaPCaPAaPDaTTaPFaPGaPHaPHaPHaPIaOgabjaaaabjaaaabjaaaaLQalIambaMWaPJaPKaPLaPMaPNaPOaMVaOvaOwaPPaPQaPRaPSaPTaOxaOyaOzaLUaPUaPVaPWaPXaPYaPZaNiaQaaQbaQcaQdaLRaNiaOHaBCaCyaCzaGKaQeaQfaQgaQhaQiaJhaQjaQkaQlaQmaJiaSqaKKaTVaUjaUoaWuaWzaKKaWCaWGaXUaYtaYtaQwabjabjabjabjabjabjabjabjabjabjabiabiabiabiabiabiabjabjaGTaGTaGTaGTaGTaQxaQyaQzaQAaQBaQCaQDaQEaNOaQFaQGaQHaQIaMvaQJaQKaQLaMvabjaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacFabjaNTaMyaMyaQMaQNaQOaQNaQPaQQaQRaObaQSaQTaQUaQVaQWaQXaQYaQZaUMaQZaRbaRcaRdaTTaReaRfaRgaRhaRiaPHaOgabjabjabjabjabjabjaEpalIawZaMYaRjaRkaRlaRmaRnaRoaMWaMZaOwaRpaRqaRraRqaOnaRsaRtaRvaLUaRwaRxaPWaRyaRzaRAaNiaRBaRCaRDaREaRFaRGaXRaRIaRJaRKaGKaRLaRMaRNaROaGKaRPaMbaRQaRRaRSaRTaRUaRVazLaRWaRXaRVazLazLaRYaRZaSaaSaaSaaSbaScaSdaSeaSbaSfaSgaSgaSgabjaaaabjaaaaaaaaaaaaaaaaaaabjaGTaShaSiaSjaGTaSkaSlaSmaSnaSoaSpaQEaTbaSraQFaSsaPjaMvaMvaStaSuaSvaMvaMvaMvaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacFacFbdaaSxaMyaSyaMyaMyaMyaGZaSzaGZaOgaSAaSBaSCaSDaSEaSDaSFaSDaSDaSDaSGaSDaSDaSHaSIaSDaSDaSJaSKaSLaOgaSMaSNaSNaSNaSNaSNaLQalIawZaSOaSPaSPaRmaSQaSRaRmaSOaRuaSSaSUaSTaSWaSXaSVaSYaSZaTaaTcaTdaTeaTfaTgaRzaRAaNiaNiaNiaThaNiaNiaNiaZfaBCaTjaCzaGKaGKaJdaJeaTlaGKaTmaTnaToaNvaTqaTnaZtaTsaTtaDUaTuaBSaTvaTwaTxaSaaTyaTzaTAaTBaTCaTDaTEaSbaSfaSgaSgaSgabjabjabjabjabjabjabiabiabiabjaGTaTFaTGaTHaGTaMqaTIaMqaMqaMqaTJaMqaMqaMqaTKaMqaMvaTLaTMaTNaTOaTPaTQaTRaMvbaOabjaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabjaaaabjaTSbfSaTUbfSaTUbfSaTUbprabjaOgaTWaTXaTYaTZaUaaTZaUbaTZaTZaTZaUcaTZaTZaUdaUeaTZaTZaUfaUgaUhaUibuXaUkaUlaUmaUnaSNaEpamhalZaXeaUpaRmaUqaUraUsaUtaUuaUvaUwaUxaUyaUzaUyaUAaUBaUCaUDaUEaUFaUGaPXaUHaRzaRAaNiaLRaUIaUJaUIaUKaULbcwaDJaCyaCzaGKaUNaUOaUPaUQaURaUSaUTaUUaUVaUWayDaUXaUYaUZaDUaTuaBSaUZaVaaVbaVcaVdaVeaVfaVgaVhaViaVjaSbaSfaSfaSgaSfaaaabjaaaaaaabjaaaaaaaaaabjaaaaGTaVkaTGaVlaGUaVmaVnaVoaMqaVmaVpaVqaMqaVraVsaVtaMvaVuaVvaVwaVxaVyaVzaVAaPjaVBaMqaaaabiabiaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabjabjabiaaaabiabjaSNaSNaSNaSNaSNaSMaOgaVCaVDaVEaVFaVGaVFaVHaVIaVJaVIaVKaVIaVLaVMaVNaVOaVFaVPbcyaPHaObaSMaVRaVSaVTaVUaSNaLQamhalZaMWaOsaVVaRoaVWaVXaOsaMWaOvaOwaVYaVZaWaaWbaWcaOxaOyaWdaLUaWeaWfaPXaPXaRzaPZaNiaLSaWgaWhaWiaWjaNiaOHaBCaWkaTkaWmaWnaWoaWpaWqaWraWraWsaWraWsaWtbaiaWvaWwaWxaWybbhaWAaWAaWAaWBbbjaWDaWEaWFbbkaWHaWIaWJaSbaSfaSfaSgaSfaaaabjaaaaaaabjaaaaaaaaaabjaaaaGTaWKaTGaWLaGTaWMaWNaWOaMqaWPaWQaWOaMqaWPaWRaWOaMvaWSaWTaWUaWVaWWaWXaWYaPjaWZaMqabjabjabjabjaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabjabjabjabiabjaSNaXaaXbaXcaXdbvBaXfaXgaXhaXiaXjaXkaXlaXmaXnaXoaObaXpaObaXoaXqaXraXsaXtaXuaXvaXwaUibuXaUkaXxaUnaUnaSNaEpamhambaMWaMYaMWaMWaMWaMXaMWaMWaXyaOwaOxaOxaOxaOxaOxaOxaXzaXAaLUaXBaXCaXDaXEaXFaXGaXHaNiaLRaLRaLRaXIaNiaOHaBCaXJaWlaXKaXLaXNaXOaXPaXQaXMaXSaXQaXQaXTbcIaXVaXWaXXaXYaXZaYaaYbaYcaYdaYeaYfaYgaYgaYhaYiaViaYjaSbaSfaSgaSgaSgabjabjabjabjabjabjabjaGTaGTaGTaGTaYkaYlaYmaGTaYnaYoaMqaMqaYnaYpaMqaMqaYnaYqaMqaGTaGTaYraYsaGTaGTaGTaGTaGTaZVaMqaMqaMqaMqaMqaGTaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaZaaaaaaaaaabjaaaabiaaaaSNaYuaYvaYwaVRaSMaObaTWaYxaYyaYzaYAaYBaYCaYDaYEaYFaYGaYHaXoaYIaYJaXsaYKaYLaYMaYNaYOaSMaSNaSNaSNaSNaSNaLQalIambaBoaqlaYPaCoaYQaYRawgaYSaYTaYUavOalLaEyauVaYVaYWaYXaYYaYZaZaaYZaYZaYZaYZaYZaZbaNiaNiaNiaNiaNiaZcaLUaZdaZeaEFaJdaZgaZhaZiaZjaZjaZjaZkaZjaZjaZlaZmaZnaZoaZpaZqbcJbcKbcLaZuaZvaZwaZxaZyaZzaZAaZBaZCaZDaSbaSfaSgaSgaSgabjaaaaaaaaaabjaaaaaaaGVaZEaZFaZGaZHaZIaZJaZKaZLaZMaZKaZNaZOaZPaZQaZKaZRaZSaZKaZKaZTaZPaZUaZWaZXbadaZWaZYbrzbaababbacbwObaebaebafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabiabjabiabjaSNaXaaXabagbahbRmbajbakbalaYybamaYAbanbaobapaObbaqbarbasaObbatbaubavbawaXubaxbayaXfbvBaXdbazbaAbaBaSNaEpamhaqFbaCbaDalZalZaOvbaEbaFbaGbaHbaIbaJbaJbaJbaJbaJaHFbaKbaLaYZbaMbaQbcsbctbcuaYZbaRaTpaTpaNiaVQbRqbaTaLUbaUaCyaCzaGKbaVbaWbaXbaYbaZbaYbbabbbbbcbbdbbebbfbbgbcObbibbebbebbebelbeyaSbbblaSaaSbaSbaScbbmaSeaSbabjabjabjabjabjaaaaaaaaaabjaaaaaabbnbbobbpbbqbbrbbsbbtbbubbubbvbbubbwbbxbbvbbybbubbsbbvbbzbbubbsbbvbbAbbBbbDbbHbbBbbEbbFbbGbcWbbGbbIbbJbbKbbLaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabiaaaabiabjaSNaSNaSNaSNaSNaSMaYObbMbbNaYybambbObbPbbQbapaObbbRbbSbbTaObbbUaYJbbVaYKbbWbbXaPHaObaSMaVRbbYbbZbcaaSNaLQamhaqFbcbanyanyalZaOvbaEbccbcdbcebcfbcgbchbcibcjbckaFxbclbcmbcnbcobcpbcqbcrbcvaYZaZabcxbdTaYZbflbfoaZaaYZbfpbgwbgxaGKaGKbcAaZsaJdaGKaJdaJdaJdaZraGKbbebcDbcEbcFbcGbcHbbebfwbfCbfMbfNbfNbfNbgMbgVbgWbcPabjaaaaaabcQbcRbcSbcRbcTacFabjabjaaaaaaaGTbcUbcVaGTbcXaGVbdiaGTaGTaGTaGUbcYbcZbfTaMqbdbbdcbddaGTaJwbdeaJCaGTaGTaGTaGUaGTbdfbdgbdhbabbbGbRGbaebaebdjaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabiabjabjabjaSNbdkbdlbdmaXdbvBaXfaXgbdnbdobamaYAbanbdpbapaObbdqbdrbdsaObbataYJaXsaYKbbWbdtbdubajbRmbahbdvbaBbaBaSNaEpamhaqFalZambaqlalZaMZbaEbdwbdxbdybdzbdAbdBbdCbdDbdEbdFbdGbdHbdIbdJbdKbdLbdMbczaYZbdNbdPbdQbdRbdQbdSbdOaYZaBCaCyaCzbdUbdVbdWbdXbdYbbCbcBbcBbcBbcCbcMbbibedbeebefbegbehbbibeibejbekbhZbifbhZbembenbeobepbeqberbesbetbeubevbewbetacFaaaabjabjbexbexbexbexaGTbezbeAbeBaGTbfUbeCaGTaGTbeDaGTaGTaGTbeDaGUaGTaaaabjaaaabjabjabjabjaMqaMqbeDaMqaMqaMqaMqaMqaGTaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabiaaaabiaaaaSNbeEbeFbeGaVRaSMaObaTWbeHaYybeIbeJbanbeJbeKaXobeLbeMbeNaXobeOaYJaXsaYKbePbeQbeRaYOaSMaSNaSNaSNaSNaSNaLQalIambambbeSalIawZaMZbaEbeTbeUbeVbeWbeXbeYbeZbeUbfabfbbfcbfdaYZbfebffbfgbfhbfiaYZbfjbdQbfkbgvbfmbfnbdSbgIaBCaCybhMbfqbfrbfsbftbfubfubfvbfubfubfubcCbinbfxbfybfzbfAbfBbiobfDbfEbfFbfGbfHbfIbfJbfKbfLbbiblCblDbfObcSbfPbfQbfPbcSacFaaaabjaaabexbfRbhcbisaGTbfVbfWbfXbfYbhebfZaJCaaaabjaaaabjaaaabjaaaabjabjabjabjabjaaaaaaaaaabjaaaaaaaaaabjaaaabjaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabiabjabiabjaSNbdkbdkbgabahbRmbajbakbgbaYyaYJbgcbanbgdaXqaXobgebgfaObaXoaXnaXraXsbggbghbgibgjaXfbvBaXdbgkbglbgmaSNaEpamhalZbgnbgoareawZaOvbaEbaFbgpbaFbgqbaEbaFbaFbaFbaFaFxbgrbgsaYZbgtaYZbguaYZaYZaYZbgybdPbgAbgBbhNbdSbfnbgIaBCbgzbhYbjzbgCbgDbcNbdZbgGbeabdZbgGbgGbebbgJbgKbgLblEbgNbgObgJbgPbgQbgRbfAbgSbgSbgSbgTbgUblGblHblIblGbgYbfPbfPbfPbgZacFabjabjaaabhabhbblpbhdbexbhgbhfbkgbhhbhhbhibhhbhhbhhbhibhhbhhbhhbhhabjaaaabjaaaabjabjabjabjabjabjabjabjabiaaaabjaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabjaaaabiabjaSNaSNaSNaSNaSNaSMaYOaVCbbNaYyaYJaXkbhjaYAbhkbhlbhmbhnbhkbhobhkaYJaXsbanbhpbhqbhraObaSMaVRbhsbhtbhuaSNaLQamhawZbgnanyaqpambaMZbaEbhvbhwbhxbhybhzbhAbhBbhCbhDbhEbhFbhGbhHbhIbdQbhJbdQbdPbhKbhLbdQbhQbhRblibfnbdSbgIbhObhPblqblrbhSbhTbecbgEbhWbgFbgHbhWbhWbgHblJbiabibbicbidbieblKbigbihbiibijbikbilbilbilbimbbiblLblMbipbcSbfQbfQbfQbcSacFaaaabjaaabiqbirbqwbtGbitbiubivbiwbhhbixbiybizbiAbiBbiCbiDbiEbiFbiGbiGbiHbiIbiJbiGbiGaaaaaaabjaaaaaaaaaabiaaaabiaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabiabiabiabiabjabiabiabiabiaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabiabjabiabjaSNbiKbiLbiMaXdbvBaXfaXgbiNbdoaYJbiObiPbiQbanbiRaYJbiSbiTbiTbiUbiVbiWbiXbiYbiZbjabajbRmbahbjbbgmbgmaSNaEpamhaqFambanybjcaqFbjdbaEbjebjfbdxbjgbjhbjibjjbjkbjlbjmbjnbjobjpbjqbjrbjsbjtbjubjvbjubjvbjubjwbjubjxbjybnbbjAbjBbhMbfqbjCbfubjDbjEbfubftbfubfubfubjFbbibjGbjHbfybjIbjJbbibjKbjLbjMbjNbjObjPbjQbjRbjSbjTbeqberbjUbetbjVbjWbjXbetacFaaaabjaaabjYbjZbkabkbbkcbkdbkebkfbhibmObkhbkibkibkjbkkbklbkmbknbiGbkobkpbkqbkrbksbiGbiGbiGbiGbiGbiGaaaabiaaaabiaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabiaaabktbkubktbkubktaaaabiaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabiaaaabiaaaaSNbkvbkwbkxaVRaSMaObaTWbkybkzbkAbkBbkBbkCbkDbkEbkFbkGbkHbkIbkJbkKbkLbkMbkNbkObkPaOgbkQaSNaSNaSNaSNaSNaLQalIbkRaCoaqlambambbjdbaEbkSbkTbkUbkVbkWbkXbkYbkZblablbblcbldbleblfblgblhbljblkbllblmbloblnbncbnebQybQyaYZaBCaCybSBbdUblsbltblublvblwblxblublyblzblAbbeblBblNbnfbnhblFbbebniboDboFbsCbbebxybHGbJsbMnblOabjaaaaaablPbcRblQbcRblRaaaabjabjabjbexblSblTblUbjYblVblWblXblYblZbmabmbbmcbmdbmebklbkmbmfbmgbmhbmhbmibmhbmhbmjbmkbmlbmmbmnbiGabjabjabjabiaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabjabjabiabiabiabjabiabibmobmpbmqbmqbmqbmrbmsabiabiabjabiabiabiabiabiaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabiabjabjabjaSNbiKbiKbmtbahbRmbajbakbmubmvbmwbmxbmybmzbmAbmBbmCbmDbmEbmFbmGbmHbmIbmJbmKbmLbmMbmNbaSbaSaOobaSaOobaSbUbalIaqlalZaqpbmPaqFaEubaEbmQbkTbmRbkUbmSbmTbmUbmVbaFbmWbmXbmYaYZaYZaYZaYZaYZaYZbmZbmZbmZaZabmZbmZbmZaYZbnabyNbMabMbbndbfqbfqbhUbhVbdUbhXbhUbfqbfqbdUbbebbebbibNBbbibbebbebngbNCbQabngbngbngbngbngbnjbnkabjaaaaaaaaaaaaaaaaaaaaaabjbnlbnmbnnbnobnobnobnobnobnpbnqbnrbnsbntbnubnvbnwbnxbnybnzbnAbnBbnCbnDbnEbnFbnGbnHbnIbnJbnHbnKbnLbmgaaaabiaaaabiaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacFaLTacFacFaMyaMyaMyaMyaMzaMAaLkaMBaMCaMDaMIaMFaMGaMHaMKaMJaMLaMMaMNatdaRaaMPaMQaMRaNZatdaMSaMTaMUatdabjaaaaJzalIalIalIalIalIaqFaMVaMVaMWaMWaMWaMXaMYaMWaMZaFraNaaNbaNcaNdaNeaHFaNfaNgaFAaFAaFAaFAaFAaFAaFAaNhaNiaNiaNiaNiaNiaNjaLUaBCaCyaRHaJdaNlaNmaNnaNoaTiaJhaGOaNqaNraNsaGOaNtaCNaNuaEYaQqaBSaOSaQraEXaEZaKIaSwaQsaBZabjaaaaaaaNzaNAaNAaNAaNBaaaaaaaaaaaaabjaaaaaaabjaaaabjaaaabjaGUaNCaMqaNDaNEaNFaNGaNHaNIaNJaNKaNLaNMaNNaNOaNPaMvaNQaNRaNSaMvabjabiaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacFabjaNTaMyaMyaNUaNVaNWaNXaNYaOdaOaaObaOcaOhaObaObaOeaOfaOgaOgaOjaOgaOgaOgaOiaOmaOkaOgaOgaOgaOgaOgaOlabjabjaOUaOWaOoaOWaFzalIambaMVaOpaOqaOraOsaOtaOuaMWaOvaOwaOxaOxaOxaOxaOxaOxaOyaOzaLUaOAaOBaOCaODaOEaOFaNiaOGaLRaLRaLRaNiaNiaOHaBCaCyaOIaGKaOJaOKaOLaNoaOMaONaGOaOOaOPaKEaGOaQuaBSaNuaCNaORaCNaCNaCNaBSaBSaKIaQvaQvaBZabjaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabjaaaaaaabjaaaabjabjabjaGUaOTaOXaOVaPbaPcaOVaOYaOZaPaaOVaPcaQAaPdaPeaPfaMvaPgaPhaPiaPjabjabiaaaaaZaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacFaaaaPkaPlaPmaPnaPoaPpaPqaPraPtaPBaPuaPvaPwaPwaPwaPxaPyaPzaPAaTraPAaPCaPAaPDaTTaPFaPGaPHaPHaPHaPIaOgabjaaaabjaaaabjaaaaJzalIambaMWaPJaPKaPLaPMaPNaPOaMVaOvaOwaPPaPQaPRaPSaPTaOxaOyaOzaLUaPUaPVaPWaPXaPYaPZaNiaQaaQbaQcaQdaLRaNiaOHaBCaCyaCzaGKaQeaQfaQgaQhaQiaJhaQjaQkaQlaQmaJiaSqaKKaTVaUjaUoaWuaWzaKKaWCaWGaXUaYtaYtaQwabjabjabjabjabjabjabjabjabjabjabiabiabiabiabiabiabjabjaGTaGTaGTaGTaGTaQxaQyaQzaSnaQBaQCaQDaQEaNOaQFaQGaQHaQIaMvaQJaQKaQLaMvabjaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacFabjaNTaMyaMyaQMaQNaQOaQNaQPaQQaQRaObaQSaQTaQUaQVaQWaQXaQYaQZaUMaQZaRbaRcaRdaTTaReaRfaRgaRhaRiaPHaOgabjabjabjabjabjabjaEpalIawZaMYaRjaRkaRlaRmaRnaRoaMWaMZaOwaRpaRqaRraRqaOnaRsaRtaRvaLUaRwaRxaPWaRyaRzaRAaNiaRBaRCaRDaREaRFaRGaXRaRIaRJaRKaGKaRLaRMaRNaROaGKaRPaMbaRQaRRaRSaRTaRUaRVazLaRWaRXaRVazLazLaRYaRZaSaaSaaSaaSbaScaSdaSeaSbaSfaSgaSgaSgabjaaaabjaaaaaaaaaaaaaaaaaaabjaGTaShaSiaSjaGTaSkaSlaSmaWNaSoaSpaQEaTbaSraQFaSsaPjaMvaMvaStaSuaSvaMvaMvaMvaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacFacFaWRaSxaMyaSyaMyaMyaMyaGZaSzaGZaOgaSAaSBaSCaSDaSEaSDaSFaSDaSDaSDaSGaSDaSDaSHaSIaSDaSDaSJaSKaSLaOgaSMaSNaSNaSNaSNaSNaJzalIawZaSOaSPaSPaRmaSQaSRaRmaSOaRuaSSaSUaSTaSWaSXaSVaSYaSZaTaaTcaTdaTeaTfaTgaRzaRAaNiaNiaNiaThaNiaNiaNiaZfaBCaTjaCzaGKaGKaJdaJeaTlaGKaTmaTnaToaNvaTqaTnaZtaTsaTtaDUaTuaBSaTvaTwaTxaSaaTyaTzaTAaTBaTCaTDaTEaSbaSfaSgaSgaSgabjabjabjabjabjabjabiabiabiabjaGTaTFaTGaTHaGTaMqaTIaMqaMqaMqaTJaMqaMqaMqaTKaMqaMvaTLaTMaTNaTOaTPaTQaTRaMvbaOabjaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabjaaaabjaTSaZYaTUaZYaTUaZYaTUbaaabjaOgaTWaTXaTYaTZaUaaTZaUbaTZaTZaTZaUcaTZaTZaUdaUeaTZaTZaUfaUgaUhaUibaNaUkaUlaUmaUnaSNaEpamhalZaXeaUpaRmaUqaUraUsaUtaUuaUvaUwaUxaUyaUzaUyaUAaUBaUCaUDaUEaUFaUGaPXaUHaRzaRAaNiaLRaUIaUJaUIaUKaULbcwaDJaCyaCzaGKaUNaUOaUPaUQaURaUSaUTaUUaUVaUWayDaUXaUYaUZaDUaTuaBSaUZaVaaVbaVcaVdaVeaVfaVgaVhaViaVjaSbaSfaSfaSgaSfaaaabjaaaaaaabjaaaaaaaaaabjaaaaGTaVkaTGaVlaGUaVmaVnaVoaMqaVmaVpaVqaMqaVraVsaVtaMvaVuaVvaVwaVxaVyaVzaVAaPjaVBaMqaaaabiabiaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabjabjabiaaaabiabjaSNaSNaSNaSNaSNaSMaOgaVCaVDaVEaVFaVGaVFaVHaVIaVJaVIaVKaVIaVLaVMaVNaVOaVFaVPbcyaPHaObaSMaVRaVSaVTaVUaSNaJzamhalZaMWaOsaVVaRoaVWaVXaOsaMWaOvaOwaVYaVZaWaaWbaWcaOxaOyaWdaLUaWeaWfaPXaPXaRzaPZaNiaLSaWgaWhaWiaWjaNiaOHaBCaWkaTkaWmaWnaWoaWpaWqaWraWraWsaWraWsaWtbaiaWvaWwaWxaWybbhaWAaWAaWAaWBbbjaWDaWEaWFbbkaWHaWIaWJaSbaSfaSfaSgaSfaaaabjaaaaaaabjaaaaaaaaaabjaaaaGTaWKaTGaWLaGTaWMbaPaWOaMqaWPaWQaWOaMqaWPbaSaWOaMvaWSaWTaWUaWVaWWaWXaWYaPjaWZaMqabjabjabjabjaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabjabjabjabiabjaSNaXaaXbaXcaXdbbFaXfaXgaXhaXiaXjaXkaXlaXmaXnaXoaObaXpaObaXoaXqaXraXsaXtaXuaXvaXwaUibaNaUkaXxaUnaUnaSNaEpamhambaMWaMYaMWaMWaMWaMXaMWaMWaXyaOwaOxaOxaOxaOxaOxaOxaXzaXAaLUaXBaXCaXDaXEaXFaXGaXHaNiaLRaLRaLRaXIaNiaOHaBCaXJaWlaXKaXLaXNaXOaXPaXQaXMaXSaXQaXQaXTbcIaXVaXWaXXaXYaXZaYaaYbaYcaYdaYeaYfaYgaYgaYhaYiaViaYjaSbaSfaSgaSgaSgabjabjabjabjabjabjabjaGTaGTaGTaGTaYkaYlaYmaGTaYnaYoaMqaMqaYnaYpaMqaMqaYnaYqaMqaGTaGTaYraYsaGTaGTaGTaGTaGTaZVaMqaMqaMqaMqaMqaGTaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaZaaaaaaaaaabjaaaabiaaaaSNaYuaYvaYwaVRaSMaObaTWaYxaYyaYzaYAaYBaYCaYDaYEaYFaYGaYHaXoaYIaYJaXsaYKaYLaYMaYNaYOaSMaSNaSNaSNaSNaSNaJzalIambaBoaqlaYPaCoaYQaYRawgaYSaYTaYUavOalLaEyauVaYVaYWaYXaYYaYZaZaaYZaYZaYZaYZaYZaZbaNiaNiaNiaNiaNiaZcaLUaZdaZeaEFaJdaZgaZhaZiaZjaZjaZjaZkaZjaZjaZlaZmaZnaZoaZpaZqbcJbcKbcLaZuaZvaZwaZxaZyaZzaZAaZBaZCaZDaSbaSfaSgaSgaSgabjaaaaaaaaaabjaaaaaaaGVaZEaZFaZGaZHaZIaZJaZKaZLaZMaZKaZNaZOaZPaZQaZKaZRaZSaZKaZKaZTaZPaZUaZWaZXbadaZWbdabrzbfSbabbacbprbaebaebafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabiabjabiabjaSNaXaaXabagbahbuXbajbakbalaYybamaYAbanbaobapaObbaqbarbasaObbatbaubavbawaXubaxbayaXfbbFaXdbazbaAbaBaSNaEpamhaqFbaCbaDalZalZaOvbaEbaFbaGbaHbaIbaJbaJbaJbaJbaJaHFbaKbaLaYZbaMbaQbcsbctbcuaYZbaRaTpaTpaNiaVQbRqbaTaLUbaUaCyaCzaGKbaVbaWbaXbaYbaZbaYbbabbbbbcbbdbbebbfbbgbcObbibbebbebbebelbeyaSbbblaSaaSbaSbaScbbmaSeaSbabjabjabjabjabjaaaaaaaaaabjaaaaaabbnbbobbpbbqbbrbbsbbtbbubbubbvbbubbwbbxbbvbbybbubbsbbvbbzbbubbsbbvbbAbbBbbDbbHbbBbbEbvBbbGbcWbbGbbIbbJbbKbbLaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabiaaaabiabjaSNaSNaSNaSNaSNaSMaYObbMbbNaYybambbObbPbbQbapaObbbRbbSbbTaObbbUaYJbbVaYKbbWbbXaPHaObaSMaVRbbYbbZbcaaSNaJzamhaqFbcbanyanyalZaOvbaEbccbcdbcebcfbcgbchbcibcjbckaFxbclbcmbcnbcobcpbcqbcrbcvaYZaZabcxbdTaYZbflbfoaZaaYZbfpbgwbgxaGKaGKbcAaZsaJdaGKaJdaJdaJdaZraGKbbebcDbcEbcFbcGbcHbbebfwbfCbfMbfNbfNbfNbgMbgVbgWbcPabjaaaaaabcQbcRbcSbcRbcTacFabjabjaaaaaaaGTbcUbcVaGTbcXaGVbdiaGTaGTaGTaGUbcYbcZbfTaMqbdbbdcbddaGTaJwbdeaJCaGTaGTaGTaGUaGTbdfbdgbdhbabbbGbwObaebaebdjaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabiabjabjabjaSNbdkbdlbdmaXdbbFaXfaXgbdnbdobamaYAbanbdpbapaObbdqbdrbdsaObbataYJaXsaYKbbWbdtbdubajbuXbahbdvbaBbaBaSNaEpamhaqFalZambaqlalZaMZbaEbdwbdxbdybdzbdAbdBbdCbdDbdEbdFbdGbdHbdIbdJbdKbdLbdMbczaYZbdNbdPbdQbdRbdQbdSbdOaYZaBCaCyaCzbdUbdVbdWbdXbdYbbCbcBbcBbcBbcCbcMbbibedbeebefbegbehbbibeibejbekbhZbifbhZbembenbeobepbeqberbesbetbeubevbewbetacFaaaabjabjbexbexbexbexaGTbezbeAbeBaGTbfUbeCaGTaGTbeDaGTaGTaGTbeDaGUaGTaaaabjaaaabjabjabjabjaMqaMqbeDaMqaMqaMqaMqaMqaGTaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabiaaaabiaaaaSNbeEbeFbeGaVRaSMaObaTWbeHaYybeIbeJbanbeJbeKaXobeLbeMbeNaXobeOaYJaXsaYKbePbeQbeRaYOaSMaSNaSNaSNaSNaSNaJzalIambambbeSalIawZaMZbaEbeTbeUbeVbeWbeXbeYbeZbeUbfabfbbfcbfdaYZbfebffbfgbfhbfiaYZbfjbdQbfkbgvbfmbfnbdSbgIaBCaCybhMbfqbfrbfsbftbfubfubfvbfubfubfubcCbinbfxbfybfzbfAbfBbiobfDbfEbfFbfGbfHbfIbfJbfKbfLbbiblCblDbfObcSbfPbfQbfPbcSacFaaaabjaaabexbfRbhcbisaGTbfVbfWbfXbfYbhebfZaJCaaaabjaaaabjaaaabjaaaabjabjabjabjabjaaaaaaaaaabjaaaaaaaaaabjaaaabjaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabiabjabiabjaSNbdkbdkbgabahbuXbajbakbgbaYyaYJbgcbanbgdaXqaXobgebgfaObaXoaXnaXraXsbggbghbgibgjaXfbbFaXdbgkbglbgmaSNaEpamhalZbgnbgoareawZaOvbaEbaFbgpbaFbgqbaEbaFbaFbaFbaFaFxbgrbgsaYZbgtaYZbguaYZaYZaYZbgybdPbgAbgBbhNbdSbfnbgIaBCbgzbhYbjzbgCbgDbcNbdZbgGbeabdZbgGbgGbebbgJbgKbgLblEbgNbgObgJbgPbgQbgRbfAbgSbgSbgSbgTbgUblGblHblIblGbgYbfPbfPbfPbgZacFabjabjaaabhabhbblpbhdbexbhgbhfbkgbhhbhhbhibhhbhhbhhbhibhhbhhbhhbhhabjaaaabjaaaabjabjabjabjabjabjabjabjabiaaaabjaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabjaaaabiabjaSNaSNaSNaSNaSNaSMaYOaVCbbNaYyaYJaXkbhjaYAbhkbhlbhmbhnbhkbhobhkaYJaXsbanbhpbhqbhraObaSMaVRbhsbhtbhuaSNaJzamhawZbgnanyaqpambaMZbaEbhvbhwbhxbhybhzbhAbhBbhCbhDbhEbhFbhGbhHbhIbdQbhJbdQbdPbhKbhLbdQbhQbhRblibfnbdSbgIbhObhPblqblrbhSbhTbecbgEbhWbgFbgHbhWbhWbgHblJbiabibbicbidbieblKbigbihbiibijbikbilbilbilbimbbiblLblMbipbcSbfQbfQbfQbcSacFaaaabjaaabiqbirbqwbtGbitbiubivbiwbhhbixbiybizbiAbiBbiCbiDbiEbiFbiGbiGbiHbiIbiJbiGbiGaaaaaaabjaaaaaaaaaabiaaaabiaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabiabiabiabiabjabiabiabiabiaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabiabjabiabjaSNbiKbiLbiMaXdbbFaXfaXgbiNbdoaYJbiObiPbiQbanbiRaYJbiSbiTbiTbiUbiVbiWbiXbiYbiZbjabajbuXbahbjbbgmbgmaSNaEpamhaqFambanybjcaqFbjdbaEbjebjfbdxbjgbjhbjibjjbjkbjlbjmbjnbjobjpbjqbjrbjsbjtbjubjvbjubjvbjubjwbjubjxbjybnbbjAbjBbhMbfqbjCbfubjDbjEbfubftbfubfubfubjFbbibjGbjHbfybjIbjJbbibjKbjLbjMbjNbjObjPbjQbjRbjSbjTbeqberbjUbetbjVbjWbjXbetacFaaaabjaaabjYbjZbkabkbbkcbkdbkebkfbhibmObkhbkibkibkjbkkbklbkmbknbiGbkobkpbkqbkrbksbiGbiGbiGbiGbiGbiGaaaabiaaaabiaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabiaaabktbkubktbkubktaaaabiaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabiaaaabiaaaaSNbkvbkwbkxaVRaSMaObaTWbkybkzbkAbkBbkBbkCbkDbkEbkFbkGbkHbkIbkJbkKbkLbkMbkNbkObkPaOgbkQaSNaSNaSNaSNaSNaJzalIbkRaCoaqlambambbjdbaEbkSbkTbkUbkVbkWbkXbkYbkZblablbblcbldbleblfblgblhbljblkbllblmbloblnbncbnebQybQyaYZaBCaCybSBbdUblsbltblublvblwblxblublyblzblAbbeblBblNbnfbnhblFbbebniboDboFbsCbbebxybHGbJsbMnblOabjaaaaaablPbcRblQbcRblRaaaabjabjabjbexblSblTblUbjYblVblWblXblYblZbmabmbbmcbmdbmebklbkmbmfbmgbmhbmhbmibmhbmhbmjbmkbmlbmmbmnbiGabjabjabjabiaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabjabjabiabiabiabjabiabibmobmpbmqbmqbmqbmrbmsabiabiabjabiabiabiabiabiaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabiabjabjabjaSNbiKbiKbmtbahbuXbajbakbmubmvbmwbmxbmybmzbmAbmBbmCbmDbmEbmFbmGbmHbmIbmJbmKbmLbmMbmNaOWaOWaOoaOWaOoaOWbRmalIaqlalZaqpbmPaqFaEubaEbmQbkTbmRbkUbmSbmTbmUbmVbaFbmWbmXbmYaYZaYZaYZaYZaYZaYZbmZbmZbmZaZabmZbmZbmZaYZbnabyNbMabMbbndbfqbfqbhUbhVbdUbhXbhUbfqbfqbdUbbebbebbibNBbbibbebbebngbNCbQabngbngbngbngbngbnjbnkabjaaaaaaaaaaaaaaaaaaaaaabjbnlbnmbnnbnobnobnobnobnobnpbnqbnrbnsbntbnubnvbnwbnxbnybnzbnAbnBbnCbnDbnEbnFbnGbnHbnIbnJbnHbnKbnLbmgaaaabiaaaabiaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabiaaabkubktbktbkubktbkubnMbnNbnObnPbnObnQbnRbkubktbktbktbktbkuaaaabiaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabiaaaabiabjaSNaSNaSNaSNaSNaSMaOgbnSbnTaUibnUaUibnVbnWaObbnXaYKbnYbnZboabobbocbodboeaOgaOgaOgaOgaOgalIalIalIalIalIalIalIaqFalZarealIaqFaMZbaEbofbkTbkUbogbohboibmUbojbokbolbombonbooboobooboobopboobooboqbooborboobooboobooboobosbotboubovbovbovbovbowbgXbouboxbovbovboybozboybovboAbovboBboCboKboEbQgboGboGboHboIbngabjabjabjaaaaaaaaaaaaaaaaaaaaaabjboJboWboLboMboNboOboPboQboRboSbkfbhiboTboUboVbmdbqJboXboYboZbpabpbbpcbpdbpebpfbpgbphbpibpjbpjbpkbplabjabiaaaabiaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabibpmbpnbpobpobpobpobpobpobppbpqbvvbpqbpsbpobpobpobpobpobpobptbpuabiaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabiabjabiabjaSNbpvbpwbpxbahbRmbajbpybpzbpAbpBbpCbpDbpEbpFbpGbpHbpIbpJbpKbpLbpMbpNbpObpPbpQbpRbpSbpTbpUbpVbpWbpXbpYbpZbqabqbbqcbqdbqebqfbqgbaEbqhbkTbkUbqibqjbkUbmUbqkbqlbqmbqnbqobqpbqpbqpbqpbqpbqpbqpbqqbqpbqrbqpbqpbqpbqpbqpbqsbqtbqubqubqubqubqubqvdxVbqubqxbqubqubqubqubqubqubqvbqybqzbqAbngbngbngbqBbqCbqCbngbngaaaaaaabjaaabqDbqEbqFbqGbqHaaabqIbnobqLbqKbqMbqNbrubqObqPbqQbqRbqSbqTbqUbqVbqWbqXbqYbqZbrabrbbrcbrdbrebrfbrgbrhbribrjbrkbrlbrmbrnbroaaaabiabjabjaaaaaaaaaaaaaaZaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabibmobrpbrqbrrbrsbrsbrrbrsbrtbrsbUJbrsbrvbrsbrrbrsbrsbrrbrwbrpbmsabiaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabjaaaabiaaaaSNbrxbpvbryaVRaSMaObbvUbrAbrBbrCbrDbrEbrFaObbrGbrHbrIbrJbrKbmGbrLbrMbrNbrObrPbrQbrRbrSbrTbrUbrVbrWbrWbrWbrWbrXbrWbrWbrWbrYbrZbaEbsabkTbkUbsbbscbkUbmUbqkbsdbqmbsebsfbsgbshbshbshbshbsibshbshbshbsjbshbshbshbshbsibskbslbsmbsnbsobsobsobspbMLbsobsobsobsqbsobsobsobsobsrbssbstbsubsvaaaaaaabjaaaaaaaaaabjaaaaaaabjacFbswbsxbsybszbswbsAbsBbsBbsZbsDbsEbsEbsFbsGbsHbsIbsJbsKbsLbsMbsNbsObsPbsQbsRbsSbsTbsUbrobsVbmhbsWbmhbsXbsYbmkbtabtbbtRbiGabjabiaaaabiaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabibmobrpbpuabjabjaaaabjaaabtcbtdbtdbtdbteaaaabjaaaabjalWbpmbrpbmsabjaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabiabiabiabiabjabiabiabiabjabiabjabiabjaSNbpvbpvbtfaXdbvBaXfbtgbthaTZbtibtjbtkbtlaOgbtmaYKbrIbtnbtobtpbtqbtrbtsbttbtubtvbtwbtxbtybtzbtAbrWaaaaaaaaaaaaaaaaaaaaabrWaEubaEbmQbkTbkUbtBbtCbmRbmUbtDbgpbSgbtEcqmbsvbsvbtHbtHbtHbsvbtHbtHbtHbsvbtHbtHbtHbtHbsvbtHbtHbtHbsvbtHbtHbtHbtHbsvbtHbtHbtHbsvbtHbtHbtHbsvbsvcoEbSibSVbsvabjbtLbtLbtLbtLbtLbtLbtLaaaabjacFbtMbtNbtObtPbtQbtSbtTbtSbtVbtUbtWbtXbvlbtYbtZbuabubbkfbucbkjbudbuebuebufbugbklbuhbuibiGbujbukbulbumbunbiGbiGbiGbiGbiGbiGaaaabiaaaabiaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabibpmbpnbpobpobpobpobpobpobppbpqbvvbpqbpsbpobpobpobpobpobpobptbpuabiaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabiabjabiabjaSNbpvbpwbpxbahbuXbajbpybpzbpAbpBbpCbpDbpEbpFbpGbpHbpIbpJbpKbpLbpMbpNbpObpPbpQbpRbpSbpTbpUbpVbpWbpXbpYbpZbqabqbbqcbqdbqebqfbqgbaEbqhbkTbkUbqibqjbkUbmUbqkbqlbqmbqnbqobqpbqpbqpbqpbqpbqpbqpbqqbqpbqrbqpbqpbqpbqpbqpbqsbqtbqubqubqubqubqubqvdxVbqubqxbqubqubqubqubqubqubqvbqybqzbqAbngbngbngbqBbqCbqCbngbngaaaaaaabjaaabqDbqEbqFbqGbqHaaabqIbnobqLbqKbqMbqNbrubqObqPbqQbqRbqSbqTbqUbqVbqWbqXbqYbqZbrabrbbrcbrdbrebrfbrgbrhbribrjbrkbrlbrmbrnbroaaaabiabjabjaaaaaaaaaaaaaaZaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabibmobrpbrqbrrbrsbrsbrrbrsbrtbrsbRGbrsbrvbrsbrrbrsbrsbrrbrwbrpbmsabiaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabjaaaabiaaaaSNbrxbpvbryaVRaSMaObbvUbrAbrBbrCbrDbrEbrFaObbrGbrHbrIbrJbrKbmGbrLbrMbrNbrObrPbrQbrRbrSbrTbrUbrVbrWbrWbrWbrWbrXbrWbrWbrWbrYbrZbaEbsabkTbkUbsbbscbkUbmUbqkbsdbqmbsebsfbsgbshbshbshbshbsibshbshbshbsjbshbshbshbshbsibskbslbsmbsnbsobsobsobspbMLbsobsobsobsqbsobsobsobsobsrbssbstbsubsvaaaaaaabjaaaaaaaaaabjaaaaaaabjacFbswbsxbsybszbswbsAbsBbsBbsZbsDbsEbsEbsFbsGbsHbsIbsJbsKbsLbsMbsNbsObsPbsQbsRbsSbsTbsUbrobsVbmhbsWbmhbsXbsYbmkbtabtbbtRbiGabjabiaaaabiaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabibmobrpbpuabjabjaaaabjaaabtcbtdbtdbtdbteaaaabjaaaabjalWbpmbrpbmsabjaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabiabiabiabiabjabiabiabiabjabiabjabiabjaSNbpvbpvbtfaXdbbFaXfbtgbthaTZbtibtjbtkbtlaOgbtmaYKbrIbtnbtobtpbtqbtrbtsbttbtubtvbtwbtxbtybtzbtAbrWaaaaaaaaaaaaaaaaaaaaabrWaEubaEbmQbkTbkUbtBbtCbmRbmUbtDbgpbSgbtEcqmbsvbsvbtHbtHbtHbsvbtHbtHbtHbsvbtHbtHbtHbtHbsvbtHbtHbtHbsvbtHbtHbtHbtHbsvbtHbtHbtHbsvbtHbtHbtHbsvbsvcoEbSibSVbsvabjbtLbtLbtLbtLbtLbtLbtLaaaabjacFbtMbtNbtObtPbtQbtSbtTbtSbtVbtUbtWbtXbvlbtYbtZbuabubbkfbucbkjbudbuebuebufbugbklbuhbuibiGbujbukbulbumbunbiGbiGbiGbiGbiGbiGaaaabiaaaabiaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabibpmbrpbmsabjabjbtdbtdbtdbtcbtdbtdbtdbtebtdbtdbtdabjabjbmobrpbpuabiaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaZaaaaaaaaaaaaaaaabiaaaabjaaaaaaabjaaaabjaaaabjaaaabiabjaSNaSNaSNaSNaSNaSMaOgbuobupbeIbuqburbusbutaOgbuubuvbuwbuxbuybuzbuAbuBbuCbuDbuEbuFbuGbuHbuIbuJbuKbrWaaabuLbuMbuNbuObuLaaabrWaEubaEbuPbuQbeUbeUbeUbeUbuRbuSbuTbuUbuVbuWbvVbtHaaaaaaaaaabjaaaaaaaaaabjaaaaaaaaaaaaabjaaaaaaaaaabjaaaaaaaaaaaaabjaaaaaaaaaabjaaaaaaaaabtHbtIbuZbvabvbbtHaaabtLbvcbvdbvebvfbvgbtLabjbvhacFbswbvibvjbvkbswbsAbsBbsBbxJbvmbvnbvobvpbvqboJboRbubbkfbhhbvrbvsbvtbvubxNbvwbvtbvxbsUbiGbiGbiHbvybiJbiGbiGaaaabjaaaabjaaaaaaabiaaaabjaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabjbmobrpbmsabjbtdbtdbtdbvzbtcbvAbwFbvCbtebvzbtdbtdbtdabjbmobrpbmsabiaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabjaaaabiabiabiabiabjabiabiabiaaaabjabjabjabjabjacFbVfacFaOgbvDbvEbvFbvGbvHbvIbvJaOgaOgaOgbvKaOgbvLbvMaOkaOgbvNbvObvPbvQbvRbvSbvTbNSbuKbrXaaabuMbvWbvXbvYbuOaaabrXaOvbaEbvZbwabwabwabwabwabwabwbbaFbuUbuVbuWbxibtHabjabjabjabjabjabjabjabjbwcbwdbwdbwebwfbwgbwhbwibwfbwjbwkbwkbwlabjabjabjabjabjabjabjabjbtHbtIbwmbwnbwobwpbwpbwqbwrbwsbwtbwubwvbtLaaabvhacFbswbwwbwwbwxbswaaaaaabnobnobwybwzbnoboJbnobnoboRbubbwAbhhbhhbhhbwBbhhbhhbhhbwCbwDbwEbhhaaaabjaaaabjaaaaaaaaaabjabjabjabjabjabjaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabjbmobrpbmsabjbtdbtdbtdbvzbtcbvAbwFbvCbtebvzbtdbtdbtdabjbmobrpbmsabiaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabjaaaabiabiabiabiabjabiabiabiaaaabjabjabjabjabjacFbUbacFaOgbvDbvEbvFbvGbvHbvIbvJaOgaOgaOgbvKaOgbvLbvMaOkaOgbvNbvObvPbvQbvRbvSbvTbNSbuKbrXaaabuMbvWbvXbvYbuOaaabrXaOvbaEbvZbwabwabwabwabwabwabwbbaFbuUbuVbuWbxibtHabjabjabjabjabjabjabjabjbwcbwdbwdbwebwfbwgbwhbwibwfbwjbwkbwkbwlabjabjabjabjabjabjabjabjbtHbtIbwmbwnbwobwpbwpbwqbwrbwsbwtbwubwvbtLaaabvhacFbswbwwbwwbwxbswaaaaaabnobnobwybwzbnoboJbnobnoboRbubbwAbhhbhhbhhbwBbhhbhhbhhbwCbwDbwEbhhaaaabjaaaabjaaaaaaaaaabjabjabjabjabjabjaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabibmobwMbmsbtdbtdbtdbwGbwHbwIbwJbwKbwJbwLbwHbwGbtdbtdbtdbmobxMbmsabiaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabiabjabiabjabjabjabjabjabjabjabjabjabjabjabjbwNbwNbyjbwNbwPbwPbwQbwRbwPbwSbwTbwUbwPbwVbwWbwXbwPbwYbwZbxaaOgbxbbanaXsaYJbxcbxdbxebxfbxgbrWaaabxhbxjbAjbxkbxhaaabrWaIQbaEbaFbaFbaFbaFbaFbaFbaFbaFbaFbxlbuVbuWbxibtHaaaaaaaaaabjaaaaaaaaaabjaszbxmbxnbxobxpbxqbxrbxsbxtbxubxvbxwaszabjaaaaaaaaaabjaaaaaaaaabtHbtJbuZbtKbxzbxAbxAbxBbxCbxDbxEbxFbxGbtLabjbvhacFbtMbxHbwwbxIbswbsAbsBbsBbzibxKbxLbztbCNbxObnobxPbubbxQbxRbmfbxSbxSbxTbxSbwCbxUbxVbmfbhhaaaabiabjabjabjabjabjabjaaaaaaabjaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabibpmbxWbpubtdbtdbxXbxYbxZbyabybbycbydbyebyfbygbyhbtdbtdbpmbxWbpuabjaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabiaaaaaaabjbwNbwNbwNbwNbwNbwNbwNbwNbwNbwNbwNbwNbyibzMbykbylbymbynbyobypbyqbyrbysbylbytbyubyvbwPbywbyxbyyaOgbyzbyAbyBbyCbyDbyEbyFbyGbyHbrWbxhbxhbuMbyIbuObxhbxhbxhbyJaYRawgaxwaxubyKbyLbyMapratNbtFbyObyPbyQbwfbwfbwfbwfbwfbwfbwfbwfbwgbwebwfbyRbySbyTbyUbyVbyWbyVbyUbyTbyXbyYbwfbyZbwibwfbwfbwfbwfbwfbwfbwfbwfbzabvabzbbtHbtHbzcbwvbwubzdbwubwvbtLaaabvhacFbswbzebwwbwwbzfbtSbtTbtSbtVbzgbHSbCKbzhbzjbzkbzlbzmbnrbznbnBbzobzpbzqbxSbwCbzrbzsbIabhhabjabiaaaabiaaaabjaaaaaaabjabjabiabiabiabjaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabjbmobzubmsbtdbzvbzwbzxbzybzzbzzbLPbzzbzAbzBbzCbzDbzvbtdbmobzubmsabiaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabiabjabiabjbwNbzEbzEbzEbzEbzFbzGbzHbzIbzJbzKbwNbzLbBsbzLbylbzNbzNbzObzNbzPbzQbzRbylbzSbBmbzTbwPbzUbzVbzWaOgbzXbzYbzZbAabAbbAcbAdbAebAfbrWbAgbAhbAibAjbAibApbAkbxhbAlbAmbAnbAnbAnbAobBWbAnbAnbAnbAnbAqbuVbuWaotbArbAsaotbAtbAubAvaosbAwbAxbAybyUbyUbAzbyUbyUbyWbyUbyUbAAbyUbABbACbADbAEaosbAFbAGbAtaotbAsbAraotbAHbvabvbbtHaaabtLbvcbAIbAKbAJbvcbtLabjbvhacFbswbALbALbALbswbsAbsBbsBbsZbAMbANbANbAObAPbAQbARbASbATbAUbAVbAWbAXbAYbAVbAZbBabBbbBcbhhaaaabjaaaabiabjabiabiabiabjaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa @@ -10876,36 +10875,36 @@ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabibmobz aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabiabiabjabibpmbzubmsbtdbvzbzwbBfbBebBfbtdbtdbtdbwLbBhbBfbGqbvzbtdbmobzubpuabiabiabjabiaaaaaaaaaaaaaaaabjaaaaaaaaaabjaaaaaaabjaaaaaaabjaaaaaaabjaaaabiabjabjabjbwNbzEbGBbzEbzEbGrbGsbGubGvbGwbGxbwNbGybIpbGzbGzbGzbGzbGzbGzbGzbGzbylbGAbQpbGCbGDbGEbGFbGGbGHbGIbGIbGJbGKbGMbGLbGNbGObGQbGRbrWbGSbGTbGUbGPbGWbGXbGYbxhayibBVbGVbFnbHabGZbHbbHdbHebHcbHfbHgbvabHibHjbHjbHjbHjbHkbHkbHkbHlbHmbHkbHkbHnbHobHpbHqbHrbHsbHtbHubHvbHwbHnbHxbHybHxbHzbHxbHxbHxbHxbHxbHxbHxbHAbHBbHCbHDbHEbHFbuYbHHbHFbHFbHIbFSbHJbHKbHLbHMbHNbHObHPbFSbHQbHRbFSbMcbHTbHUbGabHVbHWbHXbHYbHZbNmbExbIbbIcbEybNVbIebLYbECbExabjabjabjabiabjabjaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabiaaabktbkubnMbzubpubtdbtdbzDbIgbIhbBfbIibIjbIkbIlbImbInbIobtdbtdbpmbzubnRbkubktaaaabiabjabjabjabjabjabjabjabjabjabjabjabjabjaaaaaaabjaaaaaaabjaaaabjaaaabiabjbwNbwNbwNbwNbwNbwNbwNbwNbwNbwNbwNbwNbLXbwTbGzbIqbIrbIsbItbIubIvbIwbKibKjbIzbEWbIAbEXbIBbICbHhbIEbIFbIGbIDbIHbIIbIKbILbIMbFhbrWbINbDFbIJbIPbIObBTbIRbxhapUbBVbIQbFnbFobHbbISbFobIUbITbIVcusbvabIXbHjbIYbIZbJabJbbJcbJdbJebJfbJgbHjbJhbJhbJhbJhbJhbJibJhbJhbJhbJhbJhbHxbJjbJkbJlbJmbJnbJobJpbJqbJrbHxbuZbvabvbbngbngbngbxxbngbqCbqCbJtbJubJvbJwbJxbJybJxbJzbJAbJBbJCbJDbFSbJEbJFbHUbGabJGbJHbJIbEubJJbJKbExbJLbJMbGpbJNbJNbJNbJNbJNbJNbJNabjabjabjabjaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabibmobJObJPbJPbJQbmsbtdbzvbJRbBfbJSbJTbJTbJUbJVbJTbJWbBfbzwbzvbtdbmobJXbJPbJPbJYbnRbkuaaaaaaabjaaaaaaabjaaaaaaaaaabjaaaaaaabjaaaaaaabjaaaaaaabjaaZabiabjabiabjabjabjabjabjabjabjabjabjbwPbJZbylbKabKbbKcbGzbKdbKebKfbKfbKgbKhbKkbKCbLWbKlbKmbKnbKobKpbKqbEWbIAbKrbKsbKtbIWbKvbKwbKxbIMbFhbrWbKybDFbKubIPbKzbBTbKBbxhapUbBVbKAbFnbFobKDbFobFobFqbFrbDQbDRbvabIXbKEbKFbKGbKHbKIbKJbKKbKLbKMbKNbKObJhbKPbKQbKRbKSbKTbKUbKVbKQbKWbJhbKXbKYbKZbLabLbbLcbLdbLebLfbLgbHxbuZbvabvbbLhbLibLjbLkbLlbLmbLnbLnbFSbLobLpbLqbLrbLsbLtbLubLvbLwbLxbFSbLybJFbLzbLAbLBbCSbLBbLCbubbLDbJLbLEbLFbLGbJNbLHbLIbLJbLKbLLbJNabjabiabjabjaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabibpmbzubLMbrrbrsaaabtdbtdbtdbwGbLNbLObNLbCUbwLbBfbLQbwGbtdbtdbtdaaabrsbLRbLSbLTbLUbLVbVsbVsbVsbVsbVsbVsbVsbVsbVsbXFabjabjabjabjabjabjabjabjabjabjabjaaaabiabiabjabiabiabjabiabjbXGbYabPDbPEbPFbMdbMebMfbGzbMgbMhbMibMjbMkbMlbMmbIxbNTbMobMpbMqbMrbMsbMtbMubMvbMwbMxbMybMzbMAbMBbILbIMbFhbrWbMCbDFbMDbIPbBRbBTbMEbxhbMFbBVbLZbMHbMIbMJbIUbMIbMKbMGbDQbDRbvabIXbKEbMMbMNbMObMPbMQbMRbMSbMTbMUbMVbJhbMWbMXbMXbMYbMZbMYbMXbMXbNabJhbNbbKYbLbbNcbNdbNebNfbNgbLfbNhbHxbuZbvabvbbLhbNibNjbNkbNlbTdbLnbNnbNobLpbNpbNqbNrbNsbNtbNubFSbNvbNwbFSbJEbNxbHUbGabNybNzbGdbNAbNHbLDbNIbNDbNEbNFbNGbLHbNJbPybPAbNKbJNabjabiaaaabjaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabjbmobRubmsbNMbNMbNMbNMbNMbNMbNMbNNbNMbNObNPbNQbNMbNRbNMbNMbNMbNMbNMbNMbNMbmobRvbLMbrraaaaaaabjaaaaaaabjaaaaaaaaabYlaaaaaaabjaaaaaaabjaaaaaaabjaaaabjaaaabjaaaabjaaaaaaabjaaaaaabYmabjbRwbVtbVzbNWbNXbNYbGzbNZbOabObbOcbOdbOebOfbGzbGzbGzbGzbGzbGzbOgbNUbOibylbOhbMxbOkbOlbOmbMBbOnbOobOpbrWbOqbOjbOrbOsbOtbOubOwbxhbOvbBVbOxbOybOzbOAbOBbFrbPYbPZbOCbODbvabIXbKEbOEbKGbOFbOGbOHbOIbOJbOKbOLbOMbONbOObOPbMXbMYbOQbMYbMXbORbOSbOTbOUbOVbOWbOXbOYbOZbLcbPabLcbPbbHxbuZbvabPcbLhbPdbPebPfbPgbPhbLnbPibPjbPkbPlbPmbPnbPobPpbPqbFSbPrbPsbFSbJEbJFbHUbGabHVblXbPtbHYbHZbLDbJLbPubPvbPwbPxbLHbQnbPzbQobPBbJNabjabiabjabiaaaaaaaaZaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabibpmbzubPCbNMbPGbPHbPObPPbPQbNMbPIbPJbSobPLbPMbPJbPIbNMbPNbQCbQDbRtbPNbNMbPRbzubPCbkubkubkubPSbPTbPUbPVbPWbPXabjbYJbVsbVsbVsbVsbVsbZfbZfbZfbZfbZfbZfbZfbZfbZfbZfbZfbZfbZfbZfbZfbZwabjbwPbwPbwPbQbbQcbQdbGzbQebQfbUqbQhbMkbMlbQibQjbQkbQlbQmbVrbGzbQqbQAbRSbQrbQsbKsbQtbQubQvbMBbILbIMbQwbrWbrWbrWbQxbUrbrWbrWbrWbxhbUtbBVbCebDQbDQbSebIVbDQbDQbOCbQBbSgbSibSzbHjbQEbQFbQGbKNbQHbQIbQJbKMbHjbHjbJhbQKbMYbMXbQLbQMbQLbMXbMYbQNbJhbHxbHxbQObQPbQQbQRbQSbHxbQTbQUbHxcoEbSibSVbQVbLhbQWbQXbQYbLhbLnbLnbLnbFSbFSbQZbRabRbbRcbFSbFSbFSbFSbFSbRdbJFbHUbGabRebRfbRgbRhbRibRjbExbRkbRlbWhbJNbRnbQnbRobQobRpbJNbWCabiabjabiaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabibmobRrbRsbNMbRxbSrbTcbUDbXmbNMbRybRzbRAbRBbRCbRDbREbRFbVjbRHbRHbRIbREbRFbRJbRKbRLbRLbRLbRLbRMbRNbROabjbRPbRQbRRabjaaaaaaabjaaaaaaabjaaaaaaabjaaaaaaabjaaaaaaabjaaaaaaabjaaaaaaabjabjabjchwbRTbNXbRUbNYbGzbRVbOabRWbRXbRYbRZbSabSbbScbSdbScbTVbSfbTWbShbTXbSjbSkbSlbSmbSnbXEbMBbILbSpbSqbVCbStbStbSubSvbStbStbSsbSwbSxbSybTYbStbStbTZbUabSAbStbSsbXybyObSCbSDbSEbSEbSEbSEbSEbSEbSFbSEbSGbSEaaabJhbSHbSIbMXbSJbSKbSLbMXbSMbSNbJhaaabHxbSObSPbSQbSRbSSbSTbSTbSTbSTbwmbwnbSUbXCbSWbSXbSYbSZbTabTbbQzbXDbTbbTbbTebTfbTbbTgbThbThbTibTbbQzbTjbTkbTlbLAbLBbLBbLBbTmbubbLDbExbTnbNEbTobNGbTpbQnbTqbQobTrbJNabjabjaaaabiaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabibpmbRrbTsbTtbTubTvbTwbTxbTybTzbTAbTBbTCbTDbTEbTFbTGbTHbTIbTJbTKbTLbTGbTMbTNbTObTPbTQbTRbTSbTTbTUcjlcnHcnHcoicsrcsyctIctIcsyctIctIcsyctIctIcsyctIctIcsyctIctIcsyctIctIcsyctIctIctIctIctJctYbUcbUdbUebUfbGzbUgbUhbUibUjbUkbUlbUmbUnbUobUpbUobWIbGzbWKbUsbWNbUubUvbUwbUxbUybUzbMBbUAbUBbUCcjAbUEbUEbUFbUGbUEbUEbUEbUHbUEbUFbWObUEbUEbUEbUEbUIbUEbUEbYBbUKbULbUMbUNbUObSEbUPbUQbURbUSbUTbUUbSEabjbJhbJhbJhbJhbJhbJhbJhbJhbJhbJhbJhabjbHxbUVbUWbUXbUYbUZbSTbVabVbbSTbVcbVdbVebYLbVgbVgbVgbVhbVgbVibVBbVgbVgbVgbVkbVlbVgbVmbVnbVobVgbVgbVBbVhbVpbVqbWebWrbWsbWebVubVvbVwbVxbVycsMbVAbXbbXobXqbVEbXrbVGbJNaaaabiabjabiaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabjbmobLTbVHbVIbVJbVKbVLbVMbVNbVIbVObVPbVQbVRbVSbVPbVTbVIbVUbVKbVMbVMbVTbVIbVVbVWbpqbpqbpqbpqbVXbVYbVZabjbWabWbbWcabjaaaaaaabjaaaaaaabjaaaaaaabjaaaaaaabjaaaaaaabjaaaaaaabjaaaaaaabjabjbWdczwbWfbWgcgDbWibGzbWjbWkbWlbWmbWnbIqbGzbOfbWobWpbWqbOfbGzbYocbRcfBbWtbWubWvbWwbWxbWybMBbWzbWAbWBcpPbWDbWEbWFbWGbWDbWDbWEbWHbWDbWFcgCbWDbWDbWDbWJbWDbWDbWDchbbWLbvabWMcgEcgFbWPbWQbWRbWSbWTbWUbWVbSEaaaaaaabjaaaaaaaaaabjaaaaaaaaaabjaaaaaabHxbHxbWWbHxbWXbHxbSTbWYbWZbSTbuZbvabXaciAbXcbXdbXcbXebXcbXfbVDbXcbXcbXcbXhbXebXibXjbXkbXlbXkcazbVDbXnbXBbXpbGabXVbXWbXsbEublWbXtbXubXvbXwbXxbXXbXzbXzbXAbYCbNKbJNaaaabiaaaabjaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabibpmbzubLMbrrbrsaaabtdbtdbtdbwGbLNbLObNLbCUbwLbBfbLQbwGbtdbtdbtdaaabrsbLRbLSbLTbLUbLVbUJbUJbUJbUJbUJbUJbUJbUJbUJbVfabjabjabjabjabjabjabjabjabjabjabjaaaabiabiabjabiabiabjabiabjbVsbXFbPDbPEbPFbMdbMebMfbGzbMgbMhbMibMjbMkbMlbMmbIxbNTbMobMpbMqbMrbMsbMtbMubMvbMwbMxbMybMzbMAbMBbILbIMbFhbrWbMCbDFbMDbIPbBRbBTbMEbxhbMFbBVbLZbMHbMIbMJbIUbMIbMKbMGbDQbDRbvabIXbKEbMMbMNbMObMPbMQbMRbMSbMTbMUbMVbJhbMWbMXbMXbMYbMZbMYbMXbMXbNabJhbNbbKYbLbbNcbNdbNebNfbNgbLfbNhbHxbuZbvabvbbLhbNibNjbNkbNlbTdbLnbNnbNobLpbNpbNqbNrbNsbNtbNubFSbNvbNwbFSbJEbNxbHUbGabNybNzbGdbNAbNHbLDbNIbNDbNEbNFbNGbLHbNJbPybPAbNKbJNabjabiaaaabjaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabjbmobRubmsbNMbNMbNMbNMbNMbNMbNMbNNbNMbNObNPbNQbNMbNRbNMbNMbNMbNMbNMbNMbNMbmobRvbLMbrraaaaaaabjaaaaaaabjaaaaaaaaabXGaaaaaaabjaaaaaaabjaaaaaaabjaaaabjaaaabjaaaabjaaaaaaabjaaaaaabYaabjbRwbVtbVzbNWbNXbNYbGzbNZbOabObbOcbOdbOebOfbGzbGzbGzbGzbGzbGzbOgbNUbOibylbOhbMxbOkbOlbOmbMBbOnbOobOpbrWbOqbOjbOrbOsbOtbOubOwbxhbOvbBVbOxbOybOzbOAbOBbFrbPYbPZbOCbODbvabIXbKEbOEbKGbOFbOGbOHbOIbOJbOKbOLbOMbONbOObOPbMXbMYbOQbMYbMXbORbOSbOTbOUbOVbOWbOXbOYbOZbLcbPabLcbPbbHxbuZbvabPcbLhbPdbPebPfbPgbPhbLnbPibPjbPkbPlbPmbPnbPobPpbPqbFSbPrbPsbFSbJEbJFbHUbGabHVblXbPtbHYbHZbLDbJLbPubPvbPwbPxbLHbQnbPzbQobPBbJNabjabiabjabiaaaaaaaaZaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabibpmbzubPCbNMbPGbPHbPObPPbPQbNMbPIbPJbSobPLbPMbPJbPIbNMbPNbQCbQDbRtbPNbNMbPRbzubPCbkubkubkubPSbPTbPUbPVbPWbPXabjbYlbUJbUJbUJbUJbUJbYmbYmbYmbYmbYmbYmbYmbYmbYmbYmbYmbYmbYmbYmbYmbYJabjbwPbwPbwPbQbbQcbQdbGzbQebQfbUqbQhbMkbMlbQibQjbQkbQlbQmbVrbGzbQqbQAbRSbQrbQsbKsbQtbQubQvbMBbILbIMbQwbrWbrWbrWbQxbUrbrWbrWbrWbxhbUtbBVbCebDQbDQbSebIVbDQbDQbOCbQBbSgbSibSzbHjbQEbQFbQGbKNbQHbQIbQJbKMbHjbHjbJhbQKbMYbMXbQLbQMbQLbMXbMYbQNbJhbHxbHxbQObQPbQQbQRbQSbHxbQTbQUbHxcoEbSibSVbQVbLhbQWbQXbQYbLhbLnbLnbLnbFSbFSbQZbRabRbbRcbFSbFSbFSbFSbFSbRdbJFbHUbGabRebRfbRgbRhbRibRjbExbRkbRlbWhbJNbRnbQnbRobQobRpbJNbWCabiabjabiaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabibmobRrbRsbNMbRxbSrbTcbUDbXmbNMbRybRzbRAbRBbRCbRDbREbRFbVjbRHbRHbRIbREbRFbRJbRKbRLbRLbRLbRLbRMbRNbROabjbRPbRQbRRabjaaaaaaabjaaaaaaabjaaaaaaabjaaaaaaabjaaaaaaabjaaaaaaabjaaaaaaabjabjabjbZfbRTbNXbRUbNYbGzbRVbOabRWbRXbRYbRZbSabSbbScbSdbScbTVbSfbTWbShbTXbSjbSkbSlbSmbSnbXEbMBbILbSpbSqbVCbStbStbSubSvbStbStbSsbSwbSxbSybTYbStbStbTZbUabSAbStbSsbXybyObSCbSDbSEbSEbSEbSEbSEbSEbSFbSEbSGbSEaaabJhbSHbSIbMXbSJbSKbSLbMXbSMbSNbJhaaabHxbSObSPbSQbSRbSSbSTbSTbSTbSTbwmbwnbSUbXCbSWbSXbSYbSZbTabTbbQzbXDbTbbTbbTebTfbTbbTgbThbThbTibTbbQzbTjbTkbTlbLAbLBbLBbLBbTmbubbLDbExbTnbNEbTobNGbTpbQnbTqbQobTrbJNabjabjaaaabiaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabibpmbRrbTsbTtbTubTvbTwbTxbTybTzbTAbTBbTCbTDbTEbTFbTGbTHbTIbTJbTKbTLbTGbTMbTNbTObTPbTQbTRbTSbTTbTUbZwchwchwcjlcnHcoicsrcsrcoicsrcsrcoicsrcsrcoicsrcsrcoicsrcsrcoicsrcsrcoicsrcsrcsrcsrcsyctIbUcbUdbUebUfbGzbUgbUhbUibUjbUkbUlbUmbUnbUobUpbUobWIbGzbWKbUsbWNbUubUvbUwbUxbUybUzbMBbUAbUBbUCcjAbUEbUEbUFbUGbUEbUEbUEbUHbUEbUFbWObUEbUEbUEbUEbUIbUEbUEbYBbUKbULbUMbUNbUObSEbUPbUQbURbUSbUTbUUbSEabjbJhbJhbJhbJhbJhbJhbJhbJhbJhbJhbJhabjbHxbUVbUWbUXbUYbUZbSTbVabVbbSTbVcbVdbVebYLbVgbVgbVgbVhbVgbVibVBbVgbVgbVgbVkbVlbVgbVmbVnbVobVgbVgbVBbVhbVpbVqbWebWrbWsbWebVubVvbVwbVxbVycsMbVAbXbbXobXqbVEbXrbVGbJNaaaabiabjabiaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabjbmobLTbVHbVIbVJbVKbVLbVMbVNbVIbVObVPbVQbVRbVSbVPbVTbVIbVUbVKbVMbVMbVTbVIbVVbVWbpqbpqbpqbpqbVXbVYbVZabjbWabWbbWcabjaaaaaaabjaaaaaaabjaaaaaaabjaaaaaaabjaaaaaaabjaaaaaaabjaaaaaaabjabjbWdctJbWfbWgcgDbWibGzbWjbWkbWlbWmbWnbIqbGzbOfbWobWpbWqbOfbGzbYocbRcfBbWtbWubWvbWwbWxbWybMBbWzbWAbWBcpPbWDbWEbWFbWGbWDbWDbWEbWHbWDbWFcgCbWDbWDbWDbWJbWDbWDbWDchbbWLbvabWMcgEcgFbWPbWQbWRbWSbWTbWUbWVbSEaaaaaaabjaaaaaaaaaabjaaaaaaaaaabjaaaaaabHxbHxbWWbHxbWXbHxbSTbWYbWZbSTbuZbvabXaciAbXcbXdbXcbXebXcbXfbVDbXcbXcbXcbXhbXebXibXjbXkbXlbXkcazbVDbXnbXBbXpbGabXVbXWbXsbEublWbXtbXubXvbXwbXxbXXbXzbXzbXAbYCbNKbJNaaaabiaaaabjaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabibpmbzubrqbNMccxcgIchuchEcmxbNMbPIbXHbXIbXJbPMbXKbXLbNMbPNbXMbXNbXObXPbNMbrwbzubrqbrrbrrbrrbPSbXQbXRbPVbXSbXTabjabjabjabjabjabjabjabjabjabjabjabjabjabjabjabjabjaaaabjabjbXUbXUbXUbXUbXUbXUbXUbXUbXUbXUbXUbXUbXUbXUbXUbXUbXUbXUbXYbYccxEcxEcxFbQrbXZciabYbbQrclobMBbMBbYdbMBbMBbYebYfbYgbYhbYhbYibYhbYjbYjbYkcqHcrsbYkbYjbYjbYjbYjbYjbYjbYjbYjbYjbYnbuZbvabWMbtHcnWbYpbYqbYrbYsbYtbWUbYubSEbYvbYvbYvbYvbYvbYwbYwbYwbYxbYxbYxbYxbYxbSTbYybYzbYAcbzcfabYDbYEbYFbSTbuZbvabuWbYGbYHbYIbZibYKbYHbYHbYHbYHbYHbYHbVFbYHbYMbYMbYNbYObYNbYMbYMbYPbYQbYRbYSbYTbYUbYSbYVbnqbYWbYXbYYbYZbZabZbbZcbZdbZecaPbZgbJNabjabiabjabjaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabibmobzubmsbNMbNMbNMbNMbNMbNMbNMbNMbNMbNObZhbNQbNMbNMbNMbNMbNMbNMbNMbNMbNMbmobzubmsabiaaaaaaabjaaaaaaabjaaaaaaaaaabjaaaaaaabjaaaaaaabjaaaaaaabjaaaaaaaaaaaaabjabjbXUbXUbXUbXUbZjbZjbZkbZlbZmbXUbXUbXUbZnbZlbZobZlcbcbXUbZpbZqbZrbZsbZtbZubZvbZvcbubZxbZybZzbZAbZBbZCbZDbZDbZEbXUbYhbZFbYhbYhbZGbZHbZIbYjbZJbZKbZLbZMbZNbZObYjbZPbZQbZRbYjbZSbZQbZRbYjbZTbZUbZVbtHcnWbZWbZXbWRbZYbZZbWUcaabSEcabcaccadcaebYvcafcagcahbYxcaicajcakcalbSTcamcancaocapcaqcarcascatbSTbwmbZUcaubYHcavcawcaxcayccObYKcaAcaBcaCcaDcaEcaFbYMcaGcaHcaIcaJcaKcaLbhfcaMbhfbLAbLBbLBbLBcaNcaOcgebExbJLcaQbGpbJNbJNcaRcaSbJNbJNbJNaaaabiaaaabjaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabibpmbzubnRbktbktbktbkuaaabJhcaTcaUcaVcaWcaXcaYcaVcaZcaTbJhaaabkubktbktbkubnMbzubpuabiabjabjabjabjabjabjabjabjabjabjabjabjabjabjabjabjabjabjabjabjabjabjabjabiaaacbabXUcbacbbcbbcbbcbdcbbcbebZlbZlbZlcdbcbbcbdcbbcbfcbgcbhcbicbjcbkcblcbmcbncbocbncbpcbqcbrcbscbtcfgcbvcbwcbxbXUcbycdgcbAcbBcbCcbDcbEbYjcbFcbGbZLcbHcbIcbJbYjcbKcbLcbMbYjcbNcbOcbMbYjbuZbvacbPcbQcpfbYpcbSbYrbYscbTcbUcbVbSEcbWcbXcbYcbZbYvccaccbcccbYxccdcceccfccgbSTcchcciccjcckcclccmccnccobSTbuZbvabuWbYHccpcawccqccqccqbYKccrccscctccuccvccwbXgccycczccAccBccCcaLccDccEccFbLAccGccHbhfccIccJbGgccKccLccMccNcggccPccPccQccRccSbLAaaaabiaaaabiaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabjbmobJXbJPbJPbJPbJPbJYbpubJhccTbMYccUccVccWccXccYbMYccZbJhbpmbJObJPbJPbJPbJPbJQbmsabiaaaaaaabjaaaaaaabjaaaaaaaaaabjaaaaaaabjaaaaaaabjaaaaaaabjaaaaaaaaaaaaabiabjcbabXUcbaabjcdccxGcxGcxGcxGcFLcbbdtIcxGcxGcxGcxGcgBbXUbXUcddbXUcdecdfcdhcdhcdhcdjcdicdkcdlcdmceTcdncdocdpcdqbXUcdrcdscdtcducdvbZHcdwbYjcdxcdycdzbZMcdAcdBbYjbYjcdCbYjbYjbYjcdCbYjbYjbuZbvabWMbtHcnWcdDcdEbWRbZYcdFcdGcdHbSEcdIcdJcdKcdLbYvcdMcdNcdObYxcdPcdQcdRcdSbSTcdTcdUcdVcdWcdXcdYcdZceabSTbuZbvabuWbYHcebceccedceeccqbYKcefcegcehceicejcekcelcemcenceocepceqcaLcercescetbGdceucevcewcexceycezceAceBceCceDceEceFceEceGceHbHWceIabjabjabjabiaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabiaaabrsbrrbrsbrrbLSbzubmsceJceKceLceMceNceOcePceQceLceRceSbmobzubLMbrrbrsbrrbrsaaaabjaaaaaaabjaaaaaaabjaaaaaaaaaabjaaaaaaabjaaaaaaabjaaaaaaabjaaaaaaabjabjabiaaacbabXUcbaaaaaaaabjaaaabjaaaacFabjacFaaaabjaaaabjaaacdcbXUceUceVceWceXceYceYceZcfccfbcfecfdceYcgHcffciXcfhcficfjcfkcflcfmcfncfobZHcfpbYjcfqcfrbZLbZMcfscftcfucfvcfwcfxcfycfzcfwcfAbYkbuZbvabWMctEcnWbYpcfCcfDbYsbYtbWUcfEbSEcfFcfGcfHcfIbYvcfJcfKcfLbYxcfMcfNcfOcfPbSTbSTbSTbSTcfQcfRbSTbSTbSTbSTbuZbvacfSbYHcayceccedcedcedcfTcfUcfVcfWcfXcfYcfZbYMcgacgbcgccgdcgScaLcgfchKcghcgicgjcgkbRgcglcgmbRjbLAcgncgocgpcgqcgrcgscgrcgoccSbLAaaaabiaaaabiaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabiabiabiabjabiabibmobzubmscgtcaUcgucgvcgwcgxcgycgzcgAcaUcgtbmobzubmsabiabiabiabjabiabiaaaaaaabjaaaaaaabjaaaaaaaaaabjaaaaaaabjaaaaaaabjaaaaaaabjaaaaaaabiaaaabjabjbXUbXUbXUcmCcBUcHtcHtcJecHtcHtcJecHtcHtcJecHtcHtcKjabjcgGcibciccidcgJcigcihcgMcfccgNcfecgOcgPcikbXUbXUbXUbXUbXUcbCcgRctScgTcEFctTcgVbYjcgWcgXbZLcbHcgYcgYcgYcgYcgZcgYcgYcgYcgZchactUchcbEpbSDchdchebSEchfchgchhchibWUchjbSEchkcfGchlchmbYvchnchochpbYxchqchrcfOchschtcgQcgQchvcsLchxchychzchAchtbuZbvachBcfTchCchDcaxcaxcaxcgKchFcgLchHchIcttctVbYMchLchMchNchOchPcaLbLAbLAbLAbLAbLAbLAbLAbGachQchRbLAbLAbLAbLAbLAbJIbLAbJIbLAbLAbLAaaaabiaaaabiaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabibpmchSbpubJhchTchUchVccUchWccUchXchYchZbJhbpmchSbpuabiaaaaaaabjaaaabjabjabiabiabiabjabiabiabiabiabjabiabiabiabiabjabiabiabiabiabiabjabiaaaabiaaaciebXUcieaaacKlcjHcjIcjJcjIcjIcjJcjIcjIcjJcjIcjIcjKcifcgGcibcjLcjMciicbncbncijcfccfbcjNcilcimcjObXUcincbAcipciqcdvcirciscdtcbCcbDcitbYjcgXciucivciwcixciycixcixcixcixcixcixcixcizctWbWLbvabHibSEbSEbSEciBciCciDbZZbWUciEbSEciFciGciHciIciJciKciLciMciNciOciPciQciRchtcgQcgQciSciSciTciUciSciSchtciVbwnciWcuiciYciZcjacjbcjacjccjdcjecjfcjgcjhcjibYMbYMbYMcjjcjkbYMbYMcHucjmcjncjocjpcjqcjrcjscjtcjucjvcjwcjxcjycjzcjBcjzckEcjraaaaaaaaaabjaaaabjaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabibmobrpbmsbJhbJhcjCcjDbMYcjEbMYcjFcjGbJhbJhbmobrpbmsabjaaaaaaabjaaaabjaaaabjaaaabjaaaaaaabjaaaabjaaaabjaaaaaaabjaaaabjaaaaaaabjaaaaaaabiabjabiabjciebXUcieaaacKlclpcnZabjabjcoaaaaacFabjabjcqNcifcobcdacgGcibcjPcjQcjRcjScjTcjUcfccgNcfecltcmMcmNbXUcjVciocjWcjXcjZckackbckbckcckdckeckfckgckgckhckickjckjckjckjckjckjckjckjckkcklbYkbuZbvackmbSEcknckociBckpckqckrbWUcksbSEbYvcktbYvckubYvciKciLckvbYxckwbYxckxbYxchtckyckzckAckBckCcjYckDckFckGckHckIckJbYKcaxcawckKckLccqbYKckMckNckOckPckQchJbYHckRckSckTckUckVckWckXckWckWckYckWckZclaclbclccldcleclfclfclgclgclhcliclfcljabjabjabjabjabjabiaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabibmocujbmsabjbJhbJhclkcllclmcaUclnbJhbJhabjbmocvSbmsabiabjabjabjabjabiabiabiabiabiabiabjabiabiabiabiabiabjabiabiabiabiabjabiabiabjabjabiaaaabiaaaciebXUcieaaacNncuOabjaaaaaaacFabjacFaaaaaaabjaaacobcgGcgGcgGclqclrclsbXUbXUcmPcfccfbcfecluclvclvclvclvclvclwclvclvclvclvclvclvclxclyclzclAclAclBbZMclCclCckjclCclCclDclEclFclGclHbYjbuZbvabIXbSEclIclJclKclLclMclNclOclPbSEaaaabjbHjclQclRclSclTclRclUclVbHjabjaaachtclWclXclYclZcmacmbcmccmdchtbuZbvacmebYHcmfcawccqcmgccqbYKcmhcmicmjcmkcmlcmmbYHcmncmocmpcmqcmrcmrcmscmrcmscmtcmucmvcmwcmycmzcmFcmAcmBcutcmDcmEcmHcmGcnFcmIaaaabjaaaabiaaaabjaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabibpmbrpbpuabjabjbJhcmJbJhcgtbJhcmKbJhabjabjbpmbrpbpuabiaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabjaaaabjabjbXUbXUbXUcmLcKlclpabjaaaacFacFacFacFacFaaaabjaaacobcgGcmQcmRcmScmTcmUcmWbXUcmOcfccgNcoccohcmVczHcopcmYcmZcnacIPcnccndcnecnfclwbZHcngbYjcnhcnicnjbZMckjckjckjckjckjcnkcnlcnmcnlcnnbYjbuZbvabIXbSEcnocnpciBbUTcnqcnrcnscntbSEaaaabjbHjcnucnvcnwcnxcnvcnvcnybHjabjaaachtcmXcnzcnAcnBcnCcnDcnEcnGchtbuZbvabuWbYHcvucawcaxcnIccqbYKcnJcnKcnLcnMcnMcnNbYHchGcnPcnPcnPcnPcnPcnPcnPcnPcnPcnQcnRcjrcnScnTcjrcjrcjrcjrcjrcjrcmIcnUcjrcmIaaaabiaaaabiaaaabjaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabibmobrpbPCbkubktbktcnVbktcNZbktcnXbktbktbkucnYbrpbmsabiaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabiaaaabiaaaciebXUcieaaacKlclpcuQacFacFcwtcjIcqOacFacFacFacFcobcgGcpicodcoecofcogcpkcppcojcokcfbcolcomconcoocqPcoscorcotcnbcndcoucphcovclvbZHcirbYjcowclCbZLbZMclCclCckjclCclCcoxcnlcnlcoycozbYjcoEbSibSzbSEbSEbSEbSEbSEcoAbSEcoBbSGbSEbHjcoCbHjcoDckvciKciLckvckvcoDbHjcoCbHjchtchtcoqchtcoFcoGchtcoHchtchtcoEbSicqmbYHcoIcawcaxcoJcoKbYHcoLcoMcoNcoOcoMcoPbYHcoQcoRcoRcoRcnPcoScoScoTcoTcnPcoUcoVcjncqicoXcoYboHcoZcpabngaaaabjaaaabjaaaaaaabjaaaabjaaaabiaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabjbpmcpbbpobpobpobpocpcbmqbmqbmqcpdbpobpobpobpocpebmsabjaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaZaaaabiabjabiabjciebXUcieaaacOmcuOaaaabjacFclpcpgcqQacFabjaaaaaacuPcpjcrdcplcpmcpncpocsmcpqcprcpscptcpucpvcpwcpxcpycpzcpzcpAcpzcpycpBcpCcpDcpEcpFcpGbYjcpHckjcivcpIcpJcpJcpJcpJcpKcpLcnlcnlcnlcpMbYjbuZcpNcpOcxOcpQcpQcpQcpQcpRcpQcpScpTcpUcpVcpWcpXcpYcpZcqacqbcqccqccqdcqecqfcqgcqccqccqhcqjcqkcqlcrecqccqccrQcqncqocqpbYHcqqcecchCcqrchCcqschCcqtcqtcqtcqtcqubYHcqvcqwcqwcqwcqxcqycqzcqAcqBcnPcqCcqDcqEcqEcqFcqGbHFcsbcqIcqJaaaabjaaaabjaaaaaaabjaaaabjaaaabjaaaaaaabjabjaaaaaaaaaaaaaaaaaaaaZaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabiaaabrsbrrbrsbrrbLScqKcqLbnPcqLcqMbLMbrrbrsbrrbrsaaaabiaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabjaaaabiaaaciebXUcieaaacKlclpacFacFacFcwvdvUcwuacFacFczicifcobcgGcpicqRcqScqTcqUcsncppcqWcqXcqYcqVcqZcracrbcsocrfcrgcrgcnbcnbcnbcrhcswclvcricrjbYjclCclCbZLbZMclCclCcrkclCclCcrlcrmcrncrocrpbYjbwmcrqcrrcBgcrtcrtcrucrtcrvcrwcrxcrycrzcrtcrAcrBcrCcrDcrEcrFcrGcrHcrIcrJcrKcrLcrLcrMcrNcrLcrOcrPcrLcrLcrLcsXcrRcrScrTbYHbYHbYIbZicrUbYHbYHbYHbYHbYHbYHbYHbYHbYHcrVcrWcrWcrXcrWcrYcrWcrZcsacscctccoVbqCcsdcsecsfboHcsgcshbngabjcsicsicsjcsjcsjcsjcsjcsjcsjcsjcsjcsjcsiabjaaaabiaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabiabiabiabiabjabibpmcskbpqbpqbpqcslbpuabiabiabiabjabiabiaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabiaaaabjabjbXUbXUbXUcmLcKlclpabjaaaacFacFacFacFacFaaaabjaaacobcgGcspcsqcsqcDGcsucsvbXUctFcfccgNcrccsscmVcstcuRcINcrgcsxcszcsAcuTcsBcsCclvcsDcsEbYjbYjbYkcsFcsGbYkbYjcsHbYjbYjbYjbYjcsIcsHcsJbYjbuZbvabqAcsKcsKcsKctXcsKcsKcsKcupcsKcsKcsKcsNbHjcsOcsPcsQcsRcsScsTcsUbHjcsNcsVcsVcsWcsYcsVcsVcsVcsZctactkcsVbuUbvactbcBhctdctectfctgcthcthcnOcthcthctjcthcthcwactlctmctnctoctpctqctrctscoWcnPctuctvbqBcjnbngbqCbngbngbngbngcqJcsictwctxctxctyctzctActBctBctBctCctDcsjabjaaaabjaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabiaaabrrbrsbrrbrsbrraaaabiaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabiaaaabiaaaciebXUcieaaacPKcuOabjaaaaaaacFabjacFaaaaaaabjaaacobcgGcgGcgGclqclrclsbXUbXUcuWcfccfbctGbXUclvclvclvclvclvclvclvclvclvclvclvclvbZHcirbYjbZOctHbZLbZMctOctNctKctLbYjctMctNctOctHctPbYjbuZbvactQcsKctRcBicvvcvwcvxcvwcvycvzcDscsKabjctZcuacubcuccudcuecufcugcuhabjcsVcukculcumcuXcvJcsVcsVcsVcsVcsVcunbvacuocCYcuqcuqcurcuscuqcuqcticuqcuqcuucuqcuvcuwcuxcrWcrWcuycuzcuAcuBcuCcuDcnPcuEcuFckVckWcuGcuHcuHckXckWcuHcLmcuIcuKcuLcuMcuMcuMcuMcuMcuMctBctCcuNcsjabjaaaabjaaaabiabiaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabiabiabiabiabjabiabiabiabiaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabiabjabiabjciebXUcieaaacKlclpdExabjabjacFaaadQCabjabjdQDcifcobcdacgGcibciccuUcuScxLcjTczjcfccgNcuVclvcwycuYcuZcvacwBclvcvbcvccvdcvccvccvecvfcvgbYjcvhcrncvicvjcvkcvlcvmcvnbYjcvocvpcvqbZNcvrbYjcvsbvabqAcsKcvtcvAcwScwTcwUcwWcwXcxQcvBcvCabjcsNcvDcvEcvEcvFcvGcvGcvHcsNabjcvIcvKcvLcvMcvNcvYcvOcvPcvQcvRcsVbqmbwnbsfddkbshbshcvTcvUbshbshdWObsobsocvWbsocvXcJccvZcxdcwbcwccwccwccwdcwecwfcnPcwgcmscwhcwhcwicwjcmqcmrcmrcmscwkcwlcwmcwncwocwpcwpcwpcwqcwocwrctCcwscsjabjabjabjabjabjabjabjabjabjaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabiaaaabiaaaciebXUcieaaacKldQEdvUdUEdvUdvUdUEdvUdvUdUEdvUdvUdUFcifcgGcibcjLcjMcwwcbncbncijcfccfbcrccwxcxHcwzcwAcwzcxIclvcdwbYhbYhbYhcfnbYhcwCcwDbYjcwEcwFcwGcwHcwIcwJcwKcwLbYjcwMcwNcwOcwPcbKbYjbuZbvacwQcsKcwRcyecyfcyqcwVczIcyfcBfcwYcsKcwZcxacxbcwZcxacxacxacwZcxccxacwZcsVcxecxgcxfcxhcxJcxicxjcxkcxlcsVcxmbvabuWcxncxncxncxncxncxncxocxncxncxncxncxncxncxncxpcrWcxqcxrcxscxtcxucxvcxwcnPaFxaFxaFxaFxaFxaFxaFxaFxaFxaFxaFxaFxctxcxxcxycxzcxAcxAcxBcxCcxDcsjcsjcsicsjcsjcsjcsjcsjcsicsjcsjabjabiaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabiabjabjabjbXUbXUbXUcJdcPXcHtcHtcPYcHtcHtcPYcHtcHtcPYcHtcHtdbAabjcgGcibcjPcidcgJczpczrcgMcfccgNcABcxKcAAcxMcxNcpycxRclvcdwcxPcxScxTcznczocxUcsEbYjcxVcxWcxXcxYcxZctOcyacybbYjbYjcycbYjbYjbYjbYjbuZbvabqAcsKcydcyecyfcyqcBjczIcyfcBkcygcsKcyhcyicyjcykcylcymcyncykcyocyicypcsVcyrcytcyscyucyIcyvcywcyxcyycsVcyzbvacyAcxncyBcyCcyDcyEcyFcyGcyHczUczUczUcyJcyFcyEcyKcyLcyMcyNcyOcyPcyQcyRcyScnPcyTcyUcyVaFxaKhcyWcyXaFxcyYcyZczaaFxczbczcctCczdczeczeczfczgczhcsjaaaabjaaaaaaabjaaaaaaabjaaacsjabjabiaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabiabiabiabjabiabibmobzubmscgtcaUcgucgvcgwcgxcgycgzcgAcaUcgtbmobzubmsabiabiabiabjabiabiaaaaaaabjaaaaaaabjaaaaaaaaaabjaaaaaaabjaaaaaaabjaaaaaaabjaaaaaaabiaaaabjabjbXUbXUbXUcmCctYczwczwcBUczwczwcBUczwczwcBUczwczwcHtabjcgGcibciccidcgJcigcihcgMcfccgNcfecgOcgPcikbXUbXUbXUbXUbXUcbCcgRctScgTcEFctTcgVbYjcgWcgXbZLcbHcgYcgYcgYcgYcgZcgYcgYcgYcgZchactUchcbEpbSDchdchebSEchfchgchhchibWUchjbSEchkcfGchlchmbYvchnchochpbYxchqchrcfOchschtcgQcgQchvcsLchxchychzchAchtbuZbvachBcfTchCchDcaxcaxcaxcgKchFcgLchHchIcttctVbYMchLchMchNchOchPcaLbLAbLAbLAbLAbLAbLAbLAbGachQchRbLAbLAbLAbLAbLAbJIbLAbJIbLAbLAbLAaaaabiaaaabiaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabibpmchSbpubJhchTchUchVccUchWccUchXchYchZbJhbpmchSbpuabiaaaaaaabjaaaabjabjabiabiabiabjabiabiabiabiabjabiabiabiabiabjabiabiabiabiabiabjabiaaaabiaaaciebXUcieaaacJecjHcjIcjJcjIcjIcjJcjIcjIcjJcjIcjIcjKcifcgGcibcjLcjMciicbncbncijcfccfbcjNcilcimcjObXUcincbAcipciqcdvcirciscdtcbCcbDcitbYjcgXciucivciwcixciycixcixcixcixcixcixcixcizctWbWLbvabHibSEbSEbSEciBciCciDbZZbWUciEbSEciFciGciHciIciJciKciLciMciNciOciPciQciRchtcgQcgQciSciSciTciUciSciSchtciVbwnciWcuiciYciZcjacjbcjacjccjdcjecjfcjgcjhcjibYMbYMbYMcjjcjkbYMbYMcHucjmcjncjocjpcjqcjrcjscjtcjucjvcjwcjxcjycjzcjBcjzckEcjraaaaaaaaaabjaaaabjaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabibmobrpbmsbJhbJhcjCcjDbMYcjEbMYcjFcjGbJhbJhbmobrpbmsabjaaaaaaabjaaaabjaaaabjaaaabjaaaaaaabjaaaabjaaaabjaaaaaaabjaaaabjaaaaaaabjaaaaaaabiabjabiabjciebXUcieaaacJeclpcnZabjabjcoaaaaacFabjabjcqNcifcobcdacgGcibcjPcjQcjRcjScjTcjUcfccgNcfecltcmMcmNbXUcjVciocjWcjXcjZckackbckbckcckdckeckfckgckgckhckickjckjckjckjckjckjckjckjckkcklbYkbuZbvackmbSEcknckociBckpckqckrbWUcksbSEbYvcktbYvckubYvciKciLckvbYxckwbYxckxbYxchtckyckzckAckBckCcjYckDckFckGckHckIckJbYKcaxcawckKckLccqbYKckMckNckOckPckQchJbYHckRckSckTckUckVckWckXckWckWckYckWckZclaclbclccldcleclfclfclgclgclhcliclfcljabjabjabjabjabjabiaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabibmocujbmsabjbJhbJhclkcllclmcaUclnbJhbJhabjbmocvSbmsabiabjabjabjabjabiabiabiabiabiabiabjabiabiabiabiabiabjabiabiabiabiabjabiabiabjabjabiaaaabiaaaciebXUcieaaacKjcuOabjaaaaaaacFabjacFaaaaaaabjaaacobcgGcgGcgGclqclrclsbXUbXUcmPcfccfbcfecluclvclvclvclvclvclwclvclvclvclvclvclvclxclyclzclAclAclBbZMclCclCckjclCclCclDclEclFclGclHbYjbuZbvabIXbSEclIclJclKclLclMclNclOclPbSEaaaabjbHjclQclRclSclTclRclUclVbHjabjaaachtclWclXclYclZcmacmbcmccmdchtbuZbvacmebYHcmfcawccqcmgccqbYKcmhcmicmjcmkcmlcmmbYHcmncmocmpcmqcmrcmrcmscmrcmscmtcmucmvcmwcmycmzcmFcmAcmBcutcmDcmEcmHcmGcnFcmIaaaabjaaaabiaaaabjaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabibpmbrpbpuabjabjbJhcmJbJhcgtbJhcmKbJhabjabjbpmbrpbpuabiaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabjaaaabjabjbXUbXUbXUcmLcJeclpabjaaaacFacFacFacFacFaaaabjaaacobcgGcmQcmRcmScmTcmUcmWbXUcmOcfccgNcoccohcmVczHcopcmYcmZcnacIPcnccndcnecnfclwbZHcngbYjcnhcnicnjbZMckjckjckjckjckjcnkcnlcnmcnlcnnbYjbuZbvabIXbSEcnocnpciBbUTcnqcnrcnscntbSEaaaabjbHjcnucnvcnwcnxcnvcnvcnybHjabjaaachtcmXcnzcnAcnBcnCcnDcnEcnGchtbuZbvabuWbYHcvucawcaxcnIccqbYKcnJcnKcnLcnMcnMcnNbYHchGcnPcnPcnPcnPcnPcnPcnPcnPcnPcnQcnRcjrcnScnTcjrcjrcjrcjrcjrcjrcmIcnUcjrcmIaaaabiaaaabiaaaabjaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabibmobrpbPCbkubktbktcnVbktcKlbktcnXbktbktbkucnYbrpbmsabiaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabiaaaabiaaaciebXUcieaaacJeclpcuQacFacFcwtcjIcqOacFacFacFacFcobcgGcpicodcoecofcogcpkcppcojcokcfbcolcomconcoocqPcoscorcotcnbcndcoucphcovclvbZHcirbYjcowclCbZLbZMclCclCckjclCclCcoxcnlcnlcoycozbYjcoEbSibSzbSEbSEbSEbSEbSEcoAbSEcoBbSGbSEbHjcoCbHjcoDckvciKciLckvckvcoDbHjcoCbHjchtchtcoqchtcoFcoGchtcoHchtchtcoEbSicqmbYHcoIcawcaxcoJcoKbYHcoLcoMcoNcoOcoMcoPbYHcoQcoRcoRcoRcnPcoScoScoTcoTcnPcoUcoVcjncqicoXcoYboHcoZcpabngaaaabjaaaabjaaaaaaabjaaaabjaaaabiaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabjbpmcpbbpobpobpobpocpcbmqbmqbmqcpdbpobpobpobpocpebmsabjaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaZaaaabiabjabiabjciebXUcieaaacNncuOaaaabjacFclpcpgcqQacFabjaaaaaacuPcpjcrdcplcpmcpncpocsmcpqcprcpscptcpucpvcpwcpxcpycpzcpzcpAcpzcpycpBcpCcpDcpEcpFcpGbYjcpHckjcivcpIcpJcpJcpJcpJcpKcpLcnlcnlcnlcpMbYjbuZcpNcpOcxOcpQcpQcpQcpQcpRcpQcpScpTcpUcpVcpWcpXcpYcpZcqacqbcqccqccqdcqecqfcqgcqccqccqhcqjcqkcqlcrecqccqccrQcqncqocqpbYHcqqcecchCcqrchCcqschCcqtcqtcqtcqtcqubYHcqvcqwcqwcqwcqxcqycqzcqAcqBcnPcqCcqDcqEcqEcqFcqGbHFcsbcqIcqJaaaabjaaaabjaaaaaaabjaaaabjaaaabjaaaaaaabjabjaaaaaaaaaaaaaaaaaaaaZaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabiaaabrsbrrbrsbrrbLScqKcqLbnPcqLcqMbLMbrrbrsbrrbrsaaaabiaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabjaaaabiaaaciebXUcieaaacJeclpacFacFacFcwvdvUcwuacFacFczicifcobcgGcpicqRcqScqTcqUcsncppcqWcqXcqYcqVcqZcracrbcsocrfcrgcrgcnbcnbcnbcrhcswclvcricrjbYjclCclCbZLbZMclCclCcrkclCclCcrlcrmcrncrocrpbYjbwmcrqcrrcBgcrtcrtcrucrtcrvcrwcrxcrycrzcrtcrAcrBcrCcrDcrEcrFcrGcrHcrIcrJcrKcrLcrLcrMcrNcrLcrOcrPcrLcrLcrLcsXcrRcrScrTbYHbYHbYIbZicrUbYHbYHbYHbYHbYHbYHbYHbYHbYHcrVcrWcrWcrXcrWcrYcrWcrZcsacscctccoVbqCcsdcsecsfboHcsgcshbngabjcsicsicsjcsjcsjcsjcsjcsjcsjcsjcsjcsjcsiabjaaaabiaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabiabiabiabiabjabibpmcskbpqbpqbpqcslbpuabiabiabiabjabiabiaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabiaaaabjabjbXUbXUbXUcmLcJeclpabjaaaacFacFacFacFacFaaaabjaaacobcgGcspcsqcsqcDGcsucsvbXUctFcfccgNcrccsscmVcstcuRcINcrgcsxcszcsAcuTcsBcsCclvcsDcsEbYjbYjbYkcsFcsGbYkbYjcsHbYjbYjbYjbYjcsIcsHcsJbYjbuZbvabqAcsKcsKcsKctXcsKcsKcsKcupcsKcsKcsKcsNbHjcsOcsPcsQcsRcsScsTcsUbHjcsNcsVcsVcsWcsYcsVcsVcsVcsZctactkcsVbuUbvactbcBhctdctectfctgcthcthcnOcthcthctjcthcthcwactlctmctnctoctpctqctrctscoWcnPctuctvbqBcjnbngbqCbngbngbngbngcqJcsictwctxctxctyctzctActBctBctBctCctDcsjabjaaaabjaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabiaaabrrbrsbrrbrsbrraaaabiaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabiaaaabiaaaciebXUcieaaacNZcuOabjaaaaaaacFabjacFaaaaaaabjaaacobcgGcgGcgGclqclrclsbXUbXUcuWcfccfbctGbXUclvclvclvclvclvclvclvclvclvclvclvclvbZHcirbYjbZOctHbZLbZMctOctNctKctLbYjctMctNctOctHctPbYjbuZbvactQcsKctRcBicvvcvwcvxcvwcvycvzcDscsKabjctZcuacubcuccudcuecufcugcuhabjcsVcukculcumcuXcvJcsVcsVcsVcsVcsVcunbvacuocCYcuqcuqcurcuscuqcuqcticuqcuqcuucuqcuvcuwcuxcrWcrWcuycuzcuAcuBcuCcuDcnPcuEcuFckVckWcuGcuHcuHckXckWcuHcLmcuIcuKcuLcuMcuMcuMcuMcuMcuMctBctCcuNcsjabjaaaabjaaaabiabiaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabiabiabiabiabjabiabiabiabiaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabiabjabiabjciebXUcieaaacJeclpdExabjabjacFaaadQCabjabjdQDcifcobcdacgGcibciccuUcuScxLcjTczjcfccgNcuVclvcwycuYcuZcvacwBclvcvbcvccvdcvccvccvecvfcvgbYjcvhcrncvicvjcvkcvlcvmcvnbYjcvocvpcvqbZNcvrbYjcvsbvabqAcsKcvtcvAcwScwTcwUcwWcwXcxQcvBcvCabjcsNcvDcvEcvEcvFcvGcvGcvHcsNabjcvIcvKcvLcvMcvNcvYcvOcvPcvQcvRcsVbqmbwnbsfddkbshbshcvTcvUbshbshdWObsobsocvWbsocvXcJccvZcxdcwbcwccwccwccwdcwecwfcnPcwgcmscwhcwhcwicwjcmqcmrcmrcmscwkcwlcwmcwncwocwpcwpcwpcwqcwocwrctCcwscsjabjabjabjabjabjabjabjabjabjaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabiaaaabiaaaciebXUcieaaacJedQEdvUdUEdvUdvUdUEdvUdvUdUEdvUdvUdUFcifcgGcibcjLcjMcwwcbncbncijcfccfbcrccwxcxHcwzcwAcwzcxIclvcdwbYhbYhbYhcfnbYhcwCcwDbYjcwEcwFcwGcwHcwIcwJcwKcwLbYjcwMcwNcwOcwPcbKbYjbuZbvacwQcsKcwRcyecyfcyqcwVczIcyfcBfcwYcsKcwZcxacxbcwZcxacxacxacwZcxccxacwZcsVcxecxgcxfcxhcxJcxicxjcxkcxlcsVcxmbvabuWcxncxncxncxncxncxncxocxncxncxncxncxncxncxncxpcrWcxqcxrcxscxtcxucxvcxwcnPaFxaFxaFxaFxaFxaFxaFxaFxaFxaFxaFxaFxctxcxxcxycxzcxAcxAcxBcxCcxDcsjcsjcsicsjcsjcsjcsjcsjcsicsjcsjabjabiaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabiabjabjabjbXUbXUbXUcJdcOmczwczwcPKczwczwcPKczwczwcPKczwczwcPXabjcgGcibcjPcidcgJczpczrcgMcfccgNcABcxKcAAcxMcxNcpycxRclvcdwcxPcxScxTcznczocxUcsEbYjcxVcxWcxXcxYcxZctOcyacybbYjbYjcycbYjbYjbYjbYjbuZbvabqAcsKcydcyecyfcyqcBjczIcyfcBkcygcsKcyhcyicyjcykcylcymcyncykcyocyicypcsVcyrcytcyscyucyIcyvcywcyxcyycsVcyzbvacyAcxncyBcyCcyDcyEcyFcyGcyHczUczUczUcyJcyFcyEcyKcyLcyMcyNcyOcyPcyQcyRcyScnPcyTcyUcyVaFxaKhcyWcyXaFxcyYcyZczaaFxczbczcctCczdczeczeczfczgczhcsjaaaabjaaaaaaabjaaaaaaabjaaacsjabjabiaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabiaaaabiaaaciebXUcieaaaaaaabjaaaabjaaaacFabjacFaaaabjaaaabjaaacCfbXUdWiceVcACczkczlczlczmcfccfbdWaczscCdczqczuczqdltclvcztcxPcAHcbCczvcAJcwCczxbYjczycrnczzczAcixczBczCcvlclzczDczEczFcbCczGbYhbuZbvabqAcsKdzRcyecyfcyqcBlczIcyfcBfcwYcsKczJczKczLczMczNczOczPczQczRczSczTcsVczWcytczVczXczZczYcAacAbcBvcsVbuUbvabuWcxncAccAdcAccAecAfcAgcAhcAfcAfcAicAfcAjcxncAkcrWcrWcrXcrXcrWcAlcxvcAmcnPaFvaFvcAnaFxcAocApcAqaFxcyYcArcAsbmWcAtczccuMcAucAucAucuMczgcAvcsjaaacAwcAxcAxcAycAxcAxcAzaaacsjabjaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabjaaaabiabjciebXUcieabjcdacCgcCgcCgcCgcbbcbbcbbcCgcCgcCgcCgdqQbXUbXUcddbXUcADcAEcAFcAFcAFcCecAGcANcAIcAOcAKcALcAMcARclvcitbYhcCicAPcAQcCqcCscASbYjbZKcATctHcAUcAVcAWcAXcAYcFMcBacgUcBbcBccBdbYhbuZbvabqAcsKcBecCDcCEcCFcCGcCHcCIcCJcBmcsKcBncBocyjcBpcBqcBrcBscBtcyocBocBucsVcBwcBxcBycBzcBBcBAcBCcBDcBHcsVbuUbvabuWcxncBEcBFcBFcBGcCUcBIcBJcBKcBKcBLcBMcBKcBNcBOcBPcBPcBPcBQcBRcBScBTcYhcnPcBVaFvaFwaFxcBWcAqcBXaFxcBYcArcAsbmWcBZczccuMcuMcuMcuMcuMczgcAvcsjabjcCacCbcCbcCccCbcCbcCaabjcsjabjabiaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabjaaaabiaaaciebXUciecbbcbbcbbcDtcbbcDucDvcDvcDvcDwcbbcDtcbbcChcCkcCjcbicClcDycCmcCncbncbocCocCpcCvcCrcDBcCtcCucCtcDCclvcCwcCxcCycCzcCAcbCcwCcsEbYjbYjbYjbYjbYjbYjbYjbYjbYjbYjcCBcgUcBccbCcgTbYhbuZbvabqAcsKcCCcDOcEbcEccEdcErcEscENcCKcsKcCLcCMcyjcCNcCOcCPcCQcCRcyocCScCTcsVcCVcCWcCXdtecDacCZcDbcDccDfcsVbuUcDdbuWcxncDecxncDecxncEjcDgcxncDhcxncDhcxncDhcxncDicDjcDkcDlcnPcDmcDncDocDpcnPcDqaFvaHAaFxcAqcAqaKkaFxcyYcArcAsaFxctxczccAucDrcDrcDrcAuczgcAvcsjaaacCacCbcCbcCbcCbcCbcCaaaacsjabjabjaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabjaaaabjabjbXUbXUbXUbXUcDxcDxdCxcDvdUGbXUbXUbXUdUHcDvdUIcDvdVybXUcDzdWbcDAcDEcdhcDFcDDduPcDHcDIcDJclvcDKcDLcDMcEDcGbclvcdwbYhcDNcEOcDPcDQcwCcDRcDScDTcDUcDScDScDScDTcDVcDScDTcDWcDXcDYcDZcEabYhbuZbvabqAcsKcsKcsKcsKcEPcEQcERcsKcsKcsKcsKcEecEfcxbcxacEgcEhcEicxacxccEfcEecsVcsVcsWcEkcsVcsVcsVcElcEpcEpcsVbuUbvabuWbngcEmcjpboGcxncEncDgcxncEocxncEqcxncFbcxncnPcnPcnPcnPcnPcnPcuJcuwcvVcnPaFxcEtaFxaFxaFxcEuaFxaFxbmWcEvbmWaFxctxczccEwcExcExcExcEyczgcxDcsjcsjcCacCbcCbcCbcCbcCbcCacsjcsjcsjcsicsjcsjaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaZaaaaaaaaaaaaaaaaaaaaaaaaaaaabjaaaabjaaaabjcEzcEzbXUbXUbXUbXUbXUbXUcEAbXUbXUbXUbXUbXUbXUbXUbXUbXUbXUbXUbXUbXUcEBcECdWhbXUbXUclvclvclvclvclvclvclvcitbYhcCxbYhbYhbYhcwCcEEcdtcgTcbCcbCcEFcgTdmybYhcgTcbCcEGcgUcbCcEHcEIcEJchccEKcELcFpcEMboycGYcHDcIfcITcIUcEScETcEUboyboycEVboyboycEWboqboocEXbooboocEYboocEZcFabooboocFfcGKcGKcGKcGLbosbEpcFcbngcFdboGcjncxncFecJlcxncxncxncDecDecFgcFgcFhcFicFjcFkaFxcFlcFmcFncFocFwcFqcFqcFqcFrcFqcFscFtcFucFvcFtcFtcFwcFxcFycFzczeczecFAcFBcFCcFDcFEcFFcFGcCbcCbcCbcCbcCbcFHcFFcFEcFIcFJcFKcsjaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacFacFacFacFacFdbFcGwcFNcIucFPcFQcbCcbCcFQcFRcFScFTcFUczDcFUcFVcFUcFWcFXcFYcFYcFZcGacGdcGccHlcGecGecGfcGgcGhcGicGicGicGjcGkcGicGlcGecGecGlcGmcGncGockcckbckbckbckbcGpcGqckcckbcGrcGscGtcGucGvcIzcGxcGybqudxVbqubqubqubqvbqubqubqxbqubqubqubqubqucGzbqubqucGAcGBbqubqubqubqubqubqubqvbqxbqubqubqubqubqubqudxVcGCcGDcGEcGFckWcGGcGHcGIcGJdzickVckWckWckWckWcLmcGFcLmcGMcGNcGOaFxcGPcGQcGRcGSbmWcGTcGUcGVcGWcGUcGUcGUcGUcGRcGUcGTbmWcGXcIscFzczeczeczecGZczgcHacsjcsicsjcCbcCbcCbcCbcCbcsjcsicsjcHbcHccHdcsjaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacFacFacFacFacFcPYcGwcFNcIucFPcFQcbCcbCcFQcFRcFScFTcFUczDcFUcFVcFUcFWcFXcFYcFYcFZcGacGdcGccHlcGecGecGfcGgcGhcGicGicGicGjcGkcGicGlcGecGecGlcGmcGncGockcckbckbckbckbcGpcGqckcckbcGrcGscGtcGucGvcIzcGxcGybqudxVbqubqubqubqvbqubqubqxbqubqubqubqubqucGzbqubqucGAcGBbqubqubqubqubqubqubqvbqxbqubqubqubqubqubqudxVcGCcGDcGEcGFckWcGGcGHcGIcGJdzickVckWckWckWckWcLmcGFcLmcGMcGNcGOaFxcGPcGQcGRcGSbmWcGTcGUcGVcGWcGUcGUcGUcGUcGRcGUcGTbmWcGXcIscFzczeczeczecGZczgcHacsjcsicsjcCbcCbcCbcCbcCbcsjcsicsjcHbcHccHdcsjaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabjaaaabjaaabYhbYhbYhbYhcHecHfcHgcHhcHhcFOcHjcHkcHhcHhcHhcHgcHfdWgcHmcHncHocHpdrscHqcpFcHrcdtcdtcBccbCcHscHvcHvcHvcHvcHvcHvcHvcHvcHvcHvdencHvcHvcHvcHvcHvcHvcHvcHvcHvcHvcHvcHvcHwcHxcHycHzcHAcHBbsocHCddlbsocHEcHFcHGbsobsobsobsobsocHCbsobsobspcHHcHIcHJcHKcHLcHMcHMcHMcHMcHMcHNcHMcHMcHMcHOcHMcHMcHMdWOcHPbshcHQcHRcmtcHScHTcHUcHVcHWcmtcHXcHXcHXcHXcHXcHXcHXcmvcHYcHZcIacIbcIccIdcIecImcIgcIgcIhcIicIgcIjcIkcIkcIlcIkcIkcImcIncIocIpcIqczeczecGZczgcHacsjcsicsjcCbcCbcCbcCbcCbcsjcsicsjcIrcJmcItcsjaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabjabjabiabjbYhcjVcJLbYhcIvcducIwcIxcIycJMcIAcIxcIxcIxcIxcIBcICcHicIAcIxcIxcIxcIxcirbZHdtUcHgcIFcdtcbCcIGcEzcIIcIJcIKcILcIMcSicIMcILcIMcSlcIMcILcIMcSqcIMcILcIOcIOcSCcIOcIOcEzcIQcIRcdwcISbYhbvVddmddncIVcIWcIXcIYcIYcIWcIWcIZcIWcIWcIYcJacIWcIWcJbdEjdEldEmcJfcJgcJgcJhcJhcJgcJgcJicJgcJgcJjcJhcJgcJgcJkdWPdWQdWRbngcJnboGboGboGcJocJpboGcJqcJrcJscJtcJucJvcJqctvcJwcJxaFxaFxaFxaFxaFxaFxaFxcEuaFxaFxaFxcJyaFxaFxbmWcEvbmWaFxcJzczccJAcJBcJBcJBcJCczgcJDcJEcJFcJGcCbcCbcCbcCbcCbcJHcJFcJEcJIcJJcFKcsjaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabiaaaabiaaacJKcJPcJQcjXcJNcJOcIxcKtcLxcJRcIDcJTcIxcJScJUcJVcJWcJXcJYcJZcKacKbcIxcKccKdcKecKfcKgcKhczDcKidgrcKkcKmcLQcILcIMcKncIMcILcIMcKocIMcILcIMcKncIMcILcIOcKpcKqcKpcIOcKrcKrcKscLBcKucKvcKvcKvcKvcKvcKwcKxcKycKycKzcKAcKBcKCcKDcKEcKFcKGcKHcKIcKJcKKcKLcJkcKMcKNcKOcKOcKPcKQcKRcKScKTcKUcKVcKWcKXcKYcKYcKYcKYbngcKZcLacLbcLcboGboGboGcJqcLdcLecLfcLfcLgcLhcLicLjcLkcLlcLmcGFcMEcLnaFxcAqcAqcLoaFxcLpcLpcLqaFxcyYcArcLraFxcLsczccLtcLucLucLucLtczgcLvcsjcsjcLwcCbcCbcCbcCbcCbcLwcsjcsjcsjcsicsjcsjaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa @@ -10921,19 +10920,19 @@ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabjabjabiabjcCxcCxcCxbYhbYhcJKbYhbYhbYhcCxcLzcLzcLzbYhbYhbYhbYhcwCcZkcZlcLzcLzcfncLPcXWczDczDcZmdHkcFUcKecZncFUcFUcZocEzcIMcKocIMdaDcIMcKncIMcILcIMcKocIMcIHdtodtHdhSdvNcKrcKrcKrcYscYtcYucZtcYvcYzcYAcZtcZtcYBcKIcZrcZxcTRcZscZzcZAcZBcWZddrcTRcTQcVAcKKcYCcXecXecZDdgodlWdoCdoEddVcXecKYcZHcZIcJgcKYcKYcZJcSHcRocMxcPOcZKcZLcMxcZMcZNcZPdbscUrdbtdbucXldbvcWdcWddbwdcDcUrcWdcWdcqCcZTdcFdcGdcHdcIddRdemdeodepdeqctudadcqJabjaaaabjaaaabjabjabjabjabjabjabjabjabjabjabiaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabiaaaabjabjabjaaaabjabjabjabjabjabjaMWdaeaUpdbGdagdahdaiaOsdajdakdalddddanaOscfndaockbdapdaqdapdapckcdaqdaqdaqdardascEzcIMdoQcIMcILcIMdpPcIMcILcIMdpZcIMcIHcNDdaudaudavdawdqqdaydazdaAdaBcZucNLdaCdaydtSdaydaEdaFdaGcNLcZvdaIdaJdaKdaLcWZdaMcVzdaNcVAcKKdaOdaPdaQdbddcgdaTdaUdaVdaWdaXdaYdaZcPGcPGcPGcPGdbadbbdbcdcidbedbfdbgcPGdbhdbidbjdbkdcAdebdbedbedbedbldbedbmdbcdbedbndbodbpdbqcXJderdlBduydxMdAXdemdGVcXJdbxdbybngbngcqJcqJcqJabjaaaaaaabiabiaaaabiabiaaaabiabiaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabiabiabjabiabiabiabjabiabiabiabjabjdbzaUpdfQdbBdbCdbDdbEdfTdbEdfUdhCdbHdbIdbJcZtdbKcZtdbLcZtdbLcZtcZtdbMcZtcZtcEGdbNcEzcEzddiddiddiddiddiddiddiddiddiddiddidbOcMmcMldbPdbQcMmcMldbRdbSdbTcZycMicMhcMidbVcMidbWdbRdbXdbYdaHdcacWZcWZdcbcWZdccdbUdcecVAcKKcYCdcfdcldchdcsdcjcXgcXkdckddLdcmdcndcodcpdcodcodcqdcrdcnddMdcodctdcudcpdcodcodcndcvdcqdcwdcodcpdcodcxdcodcqdcydcpdczdecdcBdcCcXJdHXdJOdMudNZdObdMudSCcXJcqCcMLbngdcJdcKdcLcqJabjabiaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabjaMWdcMdamdcNdcOdcPdcQdcRdcSdcTdcUdcVdcWdcXcZtdcYdcYdbZdcddcZcYAddcdkpddacZtcLAddfddgddhddiddbddoddpddqdxrdeKdeXdghdgiddscPnddtdduddvcPvcPvcPvddwddxddyddeddxddxddxddyddxddzddAddvddBddCddjddDddEddGddFddHcVzddJcVAcKKcYCddKcVDddZdfqddNddOddPddQdfwddSddTddUddUddUdlhddWddXddYdfrcNTcNTdeaddUddUdfEdfGdeddgAcNScNTdefcNTdegdXpdeedehdeicNTdejdekdelcXJdXSdXTdXUdXXdXYdXZdaSdYadetdmJdevdewdexdeybngabjabiaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabjaMWdcMdamdcNdcOdcPdcQdcRdcSdcTdcUdcVdcWdcXcZtdcYdcYdbZdcddcZcYAddcdkpddacZtcLAddfddgddhddiddbddoddpddqdxrdeKdeXdghdgiddscPnddtdduddvcPvcPvcPvddwddxddyddeddxddxddxddyddxddzddAddvddBddCddjddDddEddGddFddHcVzddJcVAcKKcYCddKcVDddZdfqddNddOddPddQdfwddSddTddUddUddUdlhddWddXddYdfrcNTcNTdeaddUddUdfEdfGdeddgAcNScNTdefcNTdegdXpdeedehdeicNTdejdekdelcXJdXSdXTdXUdbAdXYdXZdaSdYadetdmJdevdewdexdeybngabjabiaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadbzdbzdbzdafdezaSPdeAdeBdeCdeDdeDdeDdeEdeFdcXdeGcZtddIdeHdeJdeIdeIdeIdeIdeLdeMcZtcIEdeNdeOdePddideQdeRdeSdeTdeUdeVdeWdeWdgjddscZxdeYdhXdfadfbcKrdfcdBDdfedffdffdfgdfhdfidfjdfkdflcMedfmdfndfodfodfpdfodfsdfodfodfodfodftdfBdgwdfvdgDdgDdgDdgDdgEdfxdfxdfxdfydfzdfzdfzdfydfAdgxdgydgzcKYcJgcKYcJgcKYcJgcKYcZPdgBdildfCdfDdfDdfDdfDdfDdwpdfFdxAdfDdfDcWadfHdfIdfIdfIdfIdfIdfIdfJdfJdfIcWacSWbngdfKdfKdfKbngabjabiaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaZaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaZaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadbzaOsaUpaRmdkqaUpdfMdcXdcXdfNdfNaUpdfOdfPdcXdcXcZtdkwcAZdfSdeIcZwdkzdkAdfRdfXcZtcZtbYhdfYdfZddidgadgbdgcdgddgedgfdgcdggdgkddsdgldgmdeIdgndxEcKrdgpdgqdxPdffdgsdgtdhNdhOdhPdgudflcMfdgvdfndimdindiqdiqdirdiqdisditdfodgCcKKcSwdfvdgFdgGdgHdfvdgTdfydgIdgJdgKdgLdgMdgNdgOdfzdgPdgQdgRcJgdgSdgUdgVdiGdgScJgdgWdgXdgYdfDdgZdhadhbdfDdhcdhddhadhedhfdfDdhgdhhdhidhjdhkdhldhmdhndhodhpdfIdhqdmJdevdeudhsdhrbngabjabiaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaMWdhuaRjdhvdfLdhwdfMdcXdnHdcXaUpaUpdfOdhxdcXaUpcZtdhycAZdovdpSdhBdkzdridfRdhJdhEcZtdhzdhGdhHdhAdjfdhKdhLdhMdhRdhTdhUdhQdhVdTedhWdhYdhZdibdhWdWjdicdiddiadfgdiedifdjpdjqdjrdigdihdiidijdikdivdjOdjPdiodipdjRdjSdjTdfodiudoZdiwdixdkYdiydizdjVdjWdfydiAdiBdiCdiCdiDdiEdiFdiHdiJdiIdlccZNcMpdiLdiKdkecMpcZNdldcXxdiMdfDdhadhadhadiNdhcdhcdhcdhcdiOdfDdiPcSWdfIdiQdiRdiSdiTdiSdiSdiUdfIcqCdiVbngboGdhtdiXcqJabjabiaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadbzdhvduTduTdfLdiYdfMdfNaUpdiZdfNaUpdfOdjadcXaOscZtdjbdhDdpSdpSdeJdhFdhIdjgdjmdjmdjcdjddjjdjkdjldjndjodkxdjsdjtdjudjwdjxdjydjvdjzdjBdjCdjDdjzdjAdjEdjFdjJdjKdkLdjGdjHdjIdkQdkUdjLdjMdjNdfndmfdnxdnydjQdjQdjQdjSdnzdnBdnCdjUdledfvdkZdlfdmkdfvdmndfydjXdjYdjZdkadkbdkcdkddkidkfdkgdldcZNcMpdkkdkjdlkcMpcZNdldcVTdgYdfDdfFdkldfFdfCdfFdfFdfFdfFdfFdfDdiPdbydfIdkmdiSdiSdiSdiSdiTdkndfIdkodbybngdfKcqJcqJcqJabjaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaMWdWwdYmdYmdfLdkrdfMdfNdksdfNdcXdcXdktdkudcXdkvcZtdYndYodkydhJdYpdkBdYqdYrdcYdmRcZtdhzcLAdbNddidkCdkDdkEdkFdkGdkGdkHdkFddidkIdkJdkKdlRdkKdkMdkIdkNdkOdkPdffdlVdkRdkSdkTdzSdffdkVdkWdkXdnFdoydnxdladladlbdladjSdnzdoRdoScKKcSwdnIdnJdpfdpgdfvdqtdfydlgdoFdlidljdlqdlldlmdfzdlndlodkhcJgdFEdlrdlsdmjdJEcJgcYKcXxdludlvdlwdlxdlydlzdlAdJMdKxdlDdlEdlzdlFdbydfIdlGdiSdiSdiRdiSdiSdlHdhicqCdbycqJabjaaaabjaaaabjabiaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaMWdWwdYmdYmdfLdkrdfMdfNdksdfNdcXdcXdktdkudcXdkvcZtdYndYodkydhJdYpdkBdYqdYrdcYdmRcZtdhzcLAdbNddidkCdkDdkEdkFdkGdkGdkHdkFddidkIdkJdkKdlRdkKdkMdkIdkNdkOdkPdffdlVdkRdkSdkTdzSdffdkVdkWdkXdnFdoydnxdladladlbdladjSdnzdoRdoScKKcSwdnIdnJdpfdpgdfvdqtdfydlgdoFdlidljdlqdlldlmdfzdlndlodkhcJgdFEdlrdlsdmjdJEcJgcYKcXxdludlvdlwdlxdlydlzdlAdJMdbFdlDdlEdlzdlFdbydfIdlGdiSdiSdiRdiSdiSdlHdhicqCdbycqJabjaaaabjaaaabjabiaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadbzaUpaRmaRmdYsdYtdfMaUpdcXaUpdcXdfNdlIdlJaUpdlKcZtcZtcIWdbMdlLcZtcZtcIWcIWcIWcZtcZtdbMdlMdbNddidlNdlOdlPdlPdlPdlOdlQdlPdlPdkIdlYdlSdlTdlUdlZdkIdmddlXdnidfidnkdmadmbdmcdnndffdfldmedjNdfndoTdnxdnydmgdmgdmgdjSdnzdoRdoScKKdmhdfvdfvdfvdfvdfvdqudmldmldmldmldmmdnMdmodmldmldmpdKVdmrdmsdmtdmudmudmudmtdmsdmvcVTdgYdfFdmwdmxdAgdfDdmzdmxdmAdmBdmCdfDdmDdmJdmEdmLdmGdmHdmIdiSdiSdomdmKdqUdaddfKbngcqJcqJcqJabjaaaaaaaaaaaZaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadbzdbzdbzdmMddddYudmNdmOdmOdmOdmOdmOdmPdmQdcXdlKcZtdmVcYAdmSdeJcYAdmTdmUdmWdmXdoxdmYcZtdmZdnaddidnbdncdnddnednfdlPdngdnhdlPdkIdnrdlSdnjdlUdoIdkIdnldkOdnmdffdoJdnodnpdnqdoKdnsdntdnudnvdnwdoUdoVdoWdnAdipdoXdjSdpbdpcdnDcKKdnEdmidqidnGdYbdYcdYddnKdnLdnNdoadnOdnPdnQdnRdnSdlndlodkhdnTdnUdnVdnWdnXdnYdnTdgWdnZdobdofdocdoddoedogdoldohdoidojdokdptdqWdondfIdoodiSdiTdiSdiSdiRdopdfIdoqdadbngdiWdmFdotcqJabjabiaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabjaMWdoudYvdYuaRmaSPaUpdYtaRmdYuaSPdowdcXdafdbMdpTdYwdYxdYxdeIdeIdeJdeIdeIdjedozdbLcLAdoAddidlPdoBdlPdlPdERdlPdlPdoDdlPdkIdIgdvedoGdoHdoOdkIdIhdkOdnidfidpQdoLdoMdoNdqcdffdfldoPdIidfndqjdqkdqodILdqodrDdrEdrFdfodoYdoZdpadrGdrHdpddpedYidYjdphdpidpjdpkdpldpmdpndpodppdpqdprdpsdpzdpudpvdpwdpxdpydqvdpAdpBdpCdfFdpDdpEdpFdfDdpGdpHdpIdpJdpKdfDdiPdbydfJdpLdiSdiSdiRdiRdpMdpNdfJdoqdsmdevdpOdordosbngabjabiaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabjdbzdpRdcXdcXdcXaRmdYydYydYydYzdcXdcXdnHaUpdbMdpWdYAdYodYBdpVdeJdhJdkAdYrdfRdrgcZtdpXdbNddiddiddiddiddiddiddiddiddiddidkIdpYdwedqadqbdqgdkIdqddlXdqedffdqfdfidrvdqhdqfdffdrIdrNdsudqldqldqmdqmdqndqmdsHdqmdqpdqpdftdfBdsIdmidmidqrdqsdYkdYldsUdqwdqxdqydqzdqAdqBdqCdqDdqEdqFdkhdqGdqHdqIdqJdqKdqHdqGcYKcXxdgYdfDdqLdqMdqNdfDdqOdqPdLPdqRdqSdfDdiPcSWdfJdqTdoodtBdqVdtEdqXdqYdfJctudbyaeBaeBaeBaeBaeCabjabjabjabiabjabiabiabiabjabiabiabiaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabiabjaMWaOsdkrdqZdraaRmdrbdrcdrddrcdredrfdcXaOscZtdhJcAZdrldpUdrhdfVdfVdYCdrjdjhdsodjidrndrocYecFYcGacGacGacFYcGacYedrpdrqdkIdrrdCNdrtdrudrwdkIdrxdkOdrydffdsvdrzdrAdrBdrCdffdfldoPdkXdqldsJdsKdsLdsMdsLduedufdrJdrKdrLcKKdrMdceduhdrOdrPdrQdrRdrSdrTdrUdrVdrWdrXdrYdrZdsadsbdkgdscdmtdsddsedsfdsgdshdmtcYKcVTdsidfDdfDdfDdfDdfDdfDdfDdfDdfDdfDdfDdsjcSWdfIdfIdskdmKdfIdsldfIdfIdskdbxdbyaeBdtFdtGdRxaeCaeCaeCaaaabjaaaabjaaaabjaaaabjaaaabiaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabiabjaMWaMWdbzaMYdbzaUpaSPaUpaRmaUpdbzaMWdbzaMWcZtdsndeJdrldpUdspdkAdYDdfVdhJdfRdYodbMdsqdIfdsrcHhcHhdsscHhdsrcHfcHgdstcNhdkIcLydsydswdsxdsAdkIdszdsCdsBdffdXkdsDdsEdsFdsGdffdfldkWdkXdqldujdvkdvldvldvldvmdvrdwodcecVAcKKdnEdrKdsNdsOdsPdsQdsRdsSdsTdsVdsZdsWdsXdsYdtfdtadtbdtcdtddGaduldtgdthdtidtjdtkcYKcXxdgYcJgdtldtmdtndMidtpcKYdtqdtrdtsdttdtudtvdtwdtxdtsdtsdttdtydtxdtwdtzdtAduNdtCduOdtDdGqdGrdGsdGXdYEacgacpacpacpacpacpacpaaaabjaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabjabjabjabjabjdbzaUpdtJdtKdtLdlKdbzabjabjabjcZtdtMdhDdpSdfWdeJdfWdfWdrkdfWdYodtOcZtbYhbYhcJKcJKbYhcJKcJKbYhbYhcdvcirdtPdkIdrmdtRdtVdtTdtWdkIdtXdkOduYdffdvcdtYdtZduadubdffdfldoPducduddwqdwrdugdwsduidwsdxzdrJddJcVAcKKcSwdukdukdukdxGdukdumdundunduodundundundundundundupduqdukdmtdurdusdutduuduvdmtduwduxdgAdSdduzduzduAduBduCcKYdkoduDduEduFduGduHduIduIcqEduJduKdpOdpOduIduLduIduMaeBdGZdHZdIaaeCaeCaeCabjabjabjabjabjabjabjdYFabjabjabjabiabiabiabiabiaaaaaaaaaaaaaaZaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabiabjaMWaMWdbzaMYdbzaUpaSPaUpaRmaUpdbzaMWdbzaMWcZtdsndeJdrldpUdspdkAdYDdfVdhJdfRdYodbMdsqdIfdsrcHhcHhdsscHhdsrcHfcHgdstcNhdkIcLydsydswdsxdsAdkIdszdsCdsBdffdXkdsDdsEdsFdsGdffdfldkWdkXdqldujdvkdvldvldvldvmdvrdwodcecVAcKKdnEdrKdsNdsOdsPdsQdsRdsSdsTdsVdsZdsWdsXdsYdtfdtadtbdtcdtddGaduldtgdthdtidtjdtkcYKcXxdgYcJgdtldtmdtndMidtpcKYdtqdtrdtsdttdtudtvdtwdtxdtsdtsdttdtydtxdtwdtzdtAduNdtCduOdtDdGqdGrdGsdGXdKxacgacpacpacpacpacpacpaaaabjaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabjabjabjabjabjdbzaUpdtJdtKdtLdlKdbzabjabjabjcZtdtMdhDdpSdfWdeJdfWdfWdrkdfWdYodtOcZtbYhbYhcJKcJKbYhcJKcJKbYhbYhcdvcirdtPdkIdrmdtRdtVdtTdtWdkIdtXdkOduYdffdvcdtYdtZduadubdffdfldoPducduddwqdwrdugdwsduidwsdxzdrJddJcVAcKKcSwdukdukdukdxGdukdumdundunduodundundundundundundupduqdukdmtdurdusdutduuduvdmtduwduxdgAdSdduzduzduAduBduCcKYdkoduDduEduFduGduHduIduIcqEduJduKdpOdpOduIduLduIduMaeBdGZdHZdIaaeCaeCaeCabjabjabjabjabjabjabjdPnabjabjabjabiabiabiabiabiaaaaaaaaaaaaaaZaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacFaaaacFaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabiabiabjaaadbzdbzaMWdbzaMWdbzdbzaaaabjaaacZtduQduRdtQdYodhJdYGduSduUduVdYHduXcZtaaaabjaaaabjaaaabjaaaabjbYhcbCcgRcNhdkIduWdvZdvadvbdwcdkIdvddwddvfdffdffdffdffdvgdffdffdvhdvidvjdxBdxCdxDdvndvodvpdvqdXrdqpdqpdgCcKKcTWdukdvsdvtdvudvvdvwdvtdvxdvtdvxdvydvzdukdvAdvBdvCdvDdvEdmtdvFdvGdvHdvIdvJdmtcYKcXxdludvKdvLdvMdAqdvOdvPcKYdvQcWbaOxaOxaOxaOxaOxdvRdvRdvSdvSaOxbLnbLndvTbLnbLnaeBaeBaeCaeBaeCabjabjabjaaaabjaaaabjaaaaaaabGaaaaaaabjaaaabjaaaaaaabiaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabjaaaabjaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabiabjaaaaaaaaaabjaaaabjaaaaaaaaaabjaaacZtcZtcZtcZtcZtcZtcZtcZtcZtcZtcZtcZtcZtabjdkIdkKdkKdkIdkKdkKdkIdkIdvVdvWdvXdkIdvYdwfdwadwbdwgdkIdwhdxkdxndxodxpdwidwjdwkdwldwmdihdoPdgvdwndyMdyNduidyOduidwsdyQdyTdqpcKJdwtdwudukdwvdwwdwxdwydvxdwwdvxdwzdvxdwAdwwdwBdwwdwCdwDdwEdwFdmtdwGdwHdwIdwJdwGdmtdwKcVTdgYcKYcKYcKYcKYcKYcKYcKYctudwLaOxdwMdwNdwOdwPdwQdwRdwSdwTdwUdwVdwWdwXdwYdwZdxabLnabjabjabjaaaabjaaaabWabWabWabWabWabjabGabjabWabWabWabWabWaaaabjaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabjabjaaaabjabjaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaZaaaaaaaaaaaaaaaaaaabjabjabjabjacFacFacFacFabjabjabjabjabjabjabjabjabjabjabjabjabjabjabjabjabjabjdkKdxbdxcdxddxedxfdxgdkIdxhdWndxjdkIdxidxqdvadxmdXudkIdyCdyDdyEdyEdyFdwidxsdxtdxudxvdxwdxxdxydqldzVdzWdzXdAadzXdzXdAbdBOdqpcKJcKKdxFdBSdxHdxIdxJdxKdxLdQddxLdxLdxLdxNdxOdAodxQdxRdxSdxTdxUdmtdUDdvGdxWdxXdxYdmtdgWdxZdgYcJgdtldtmdtndQudtpcKYdyacWbdvSdybdycdyddybdyedyfdygdybdyhbLndyidwXdyjdykdyldymabjabiaaaaaaabiabjaceacfacfacfacfacgabGaciacjacjacjacjacjaaaabiaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa @@ -10943,8 +10942,8 @@ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacFabjabjdyodyodBEdBFdAHdBGdCAdyodyoabjabjacFabjabjabjabjabjabjabjabjabjabjabjabjabjabjabjabjabjabjabjabjabjabjabjabjabjabjabjabjabjacFabjacFabjabjabjabjabjabjacFabjacFabjabjabjabjabjabjacFabjacFdkIdkKdBAdkKdBBdkKdAUdkIdBAdWndxjdkIdkIdkIdWodkIdkIdkIdCKdCKdCLdCMdCMcKrcKrcKrcKrcKrcKudBhcKscKrdBIdBidBKdBCcKhdBMcKhdBNdBHcPxdBPdBQdBJdQsdBLdBUdBVdBWdBWdBUdBXdBYdBUdBZdCadCbdCcdCddCedBVdBVdCfdBYdBWdCadCgdbodChdCidCjdbodCkdClcmtdCmdClcmtdCndCoaOxdCpdybdycdybdCqdCrdygdzodCsbLndCtdCudCvdwZdCwdymabjabiaaaabiabjacfacfacfacfacfacgacpachacpaciacjacjacjacjacjaaaabiaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadyndCydCzdAHdAHdAHdAHdAHdDPaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabjaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadCBdCCdCDdCEdCEdCEdCFdkIdCGdEydCHdCIcFRcgTdbNcdtdCJcEzdDQdDRdCLdDSdEacKrdCOcZtdCPdCQdCRdCSdCTcZtdCUdCVdCWcGodBRdCYdBTdVjdCXdDbdDcdDddDadDfdDgdDhdDidDjdDkdDkdDldDhdDkdDmdDndDodDpdDkdDqdDmdDhdDidDmdDhdDrdDsdDtdDudDvdDwdDtdDxdDydDxdDzdDAdDxdDxdDBdDCdDDdDEdDFdDGdDHdDIdDJdDKdDLbLndDMdDNdDNdyjdDObLnabjabiabjabiaaaacoacoacoacoacoabjabjacpabjabjacoacoacoacoacoaaaabiaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacFabjabjdyodyodEcdEvdAHdEwdEKdyodyoabjabjacFabjabjabjabjabjabjabjabjabjabjabjabjabjabjabjabjabjabjabjabjabjabjabjabjabjabjabjabjabjabjabjabjabjabjabjabjabjabjacFabjacFabjabjabjabjabjabjacFabjacFdkIdDTdkIdkIdDTdkIdkIdkIdDUdDVdDWdDXdDXdDXdDYdDXdDZcEzdDQdDQdFndEadDScKrdEbdFTdEddEedEfdEgdEhcZtdEiciraosaosdDedEkaosaosdfudIMdPudXjdfudfudEodEpdEpdEodEqdEodEodEqdEodEodEqdEodEodEqdEodEodEqdEodEodEqdEodEpcKYdErdgXdEscKYbngcqJbngbngbngcqJbngbqCdDCdDCdEtdEtaOxaOxaOxdEtdEtdDCbLnbLndymdymdymdEubLnabjabiabjabiaaaaaaaaaaaaabjaaaaaaabjacpabjaaaaaaabjaaaaaaaaaaaaabjaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabjabjdyndyodFUdAHdFVdyodynabjabjaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabjaaaabjaaaaaaaaaaaaaaaaaaabjaaadYIdEAdEBdEEdEFdECdEDdWxdWydEGdEHcHhcHgcHfcHgcHgdEIdEJcEzdDQdDQdGOdDSdDScKrdELdEMdENdEOdEPdEQdXycZtdEScwDaosdETdEUdEVdEWaosdVwdEYdEZdFadFbdfuaaaabjaaaaaaabjaaaaaaabjaaaaaaabjaaaaaaabjaaaaaaabjaaaaaaaaaaaaabjcKYdFcdFddFecKYaaaabjaaaaaaabjaaaabjaaaabjaaaaaaabjabjabjabjaaaaaaabjabjabjabjabjabjabjabjabjabjaaaabiabjaaaabWabWabWabWabWabjacpabjabWabWabWabWabWaaaabiabiaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabjabjdyodyndFfdyndyoabjabjaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacFacFacFacFaaaaaaaaaaaaaaaabjaaaacFbYhdFgdFgdFgdFhdFidFjdFhdFgdFgdFkdFgdFgdFgdFlcEGdEJcEzdFmdFmdFmdFmdFmcKrdGYcZtdFodFpdFqdFrdFscZtdCUdFtaosdFudFvdVxdFxaotdWIdFzcKKdFAdFBdFCabjabjaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabjcTXdFDdTxdFFcTXaaaabjaaadFGdFGdFHdFGdFGdFGdFIdFJdFGdFGabjabjabjabjabjabiaaaabjabjabiabiabiaaaabjabjabjabjabjacfacfacfacfacfacgdYFaciacjacjacjacjacjaaaabjaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabjabjdyndyodFUdAHdFVdyodynabjabjaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabjaaaabjaaaaaaaaaaaaaaaaaaabjaaadXXdEAdEBdEEdEFdECdEDdWxdWydEGdEHcHhcHgcHfcHgcHgdEIdEJcEzdDQdDQdGOdDSdDScKrdELdEMdENdEOdEPdEQdXycZtdEScwDaosdETdEUdEVdEWaosdVwdEYdEZdFadFbdfuaaaabjaaaaaaabjaaaaaaabjaaaaaaabjaaaaaaabjaaaaaaabjaaaaaaaaaaaaabjcKYdFcdFddFecKYaaaabjaaaaaaabjaaaabjaaaabjaaaaaaabjabjabjabjaaaaaaabjabjabjabjabjabjabjabjabjabjaaaabiabjaaaabWabWabWabWabWabjacpabjabWabWabWabWabWaaaabiabiaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabjabjdyodyndFfdyndyoabjabjaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacFacFacFacFaaaaaaaaaaaaaaaabjaaaacFbYhdFgdFgdFgdFhdFidFjdFhdFgdFgdFkdFgdFgdFgdFlcEGdEJcEzdFmdFmdFmdFmdFmcKrdGYcZtdFodFpdFqdFrdFscZtdCUdFtaosdFudFvdVxdFxaotdWIdFzcKKdFAdFBdFCabjabjaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabjcTXdFDdTxdFFcTXaaaabjaaadFGdFGdFHdFGdFGdFGdFIdFJdFGdFGabjabjabjabjabjabiaaaabjabjabiabiabiaaaabjabjabjabjabjacfacfacfacfacfacgdPnaciacjacjacjacjacjaaaabjaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabjabjdyndyodynabjabjaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaZaaaaaaaaaaaaaaaaaaaaaaaaaaaabjaaaabjaaaaaaaaaaaaaaaabjaaaabjabjdFgdFKdFLdFMdFNdFOdFMdFPdFNdFQdFRdFSdFgcdvcEGdbNdHBdIbdIydFWdFXdFYcZtdFZcZtdICdGbdGcdGddGecZtdGfdGgaosdGhdGidGjdGkdGldGmdFzdWKdGodGpdFCaaaabjaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadFGdLadLbdLcdFGdFGdFHdFHdFGdGtdGudGvdGwdGxdGydGzdGAdGwdFGdFHdFGdFGabjabiaaaabiaaaaaaabjabjaaaabjaaaaaaabiaaaacoacoacoacoacoabjabGabjacoacoacoacoacoaaaabiaaaaaaaaaaaaaaaaaaaaaaaZaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabjabjaaaabjabjaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabjaaaabjabjabjabjabjabjabiaaaaaaabjdFgdGBdGCdGDdFNdFOdGEdGEdGFdGGdGHdGIdFgcbCcEGdGJdGKdGLdGMcdwdXlcfmdbMdbMcZtcKsdJycKucZtcZtdbMcgUcwDaosdGPdGQdGRdGSaszdWLdGUcKKdGodFBdFCabjabjaaaaaadYedYedYedGWdYedYedGWdYedYedGWdYedYedGWdYedYedYeaaaaaadFGdLddLQdLUdHadHbdHcdHddHedHfdHgdHhdHidHjdIjdHldHmdHndHodHpdHqdFGaaaabiabjabiabjabjabiabiabiabjabiabjabiaaaaaaaaaabjaaaaaaaaaabGaaaaaaaaaabjaaaaaaaaaabjaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabjaaaabjaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabjaaaabjaaaaaaaaaaaaaaaabiabjabiabjdFgdHrdHsdHsdFNdFOdHtdHsdGFdHudHvdHwdFgdHxdHydHzdHAdHAdKXdHCdHDdHAdHEdHFdHGdHHdHIdHJcFYdHKcYedHLdHMaosdHNdHOdHPdHQaosdWMdHSdHTdHUdHVdfuaaaabjaaadHWdYfdYfdYfdGWdYfdYfdGWdYfdYfdGWdYfdYfdGWdYfdYfdYfdHYaaadFGdLYdMadMvdFGdFGdIcdIcdFGdIddIedIkdJadJbdOidJcdJddIldImdIndIodFGaaaabjaaaabiaaaaaaaaaaaaaaaaaaaaaaaaabiabiabjabiabjabiabiaaaabGaaaabiabiabiabjabiabiabjaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa @@ -10952,33 +10951,33 @@ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabjaaaabjaaaaaaaaaaaaabiaaaabiabjdFgdJldJmdJndJodJpdIqdIudJqdJqdJrdJsdJtdFgcEGcitdXDdJudJvdJwdIxdJxdJxdJxdJxdXadJzdJxdJxdJxdJxdEzdJBdJCdJDdJDdJDdJDdXCdJDdJFdJDdJFdJGdJAdIOabjaaadJIdLOdJKdJKdJKdJLdJKdJLdJKdJKdJKdLOdJIdTzdYgdYhdXtdJIaaaaaaabjaaaabjaaaaaaabjaaadFGdJPdJQdJRdGwdJSdJTdJUdJVdJWdJXdJYdJZdFGabjabiaaaabiaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabiaaaabjaaaabjaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabjaaaabjabjabjabjabjabiaaaabiabjdFgdIqdHtdIudKadKbdKcdIudIqdIqdFgdFgdFgdFkdlMcfpdIxdKddJvdKedIxdKfdKgdKhdKidKjdKkdKhdKgdKldKmdEzdKndKodKodKodKodKodKpdKodKqdKodKqdMYdJHdIOabjaaadJIdKtdKudKudKudKudKudKudKudKudKudKvdKwdXBdJNdJNdXLdKyaaadKzdFJdFGdKAdKBdFGdFHdFGdFGdKCdIedKDdGwdGwdXEdIcdGwdGwdFGdIcdFGdFGabjabiaaaaaaaaaaaaaaaaaaaaZaaaaaaaaaaaaaaaaaaaaaaaaaaaabiabiabiabjabiaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabjaaaabjaaaaaaaaaaaZabiabjabiabjdFgdKEdIudHsdFNdKbdIpdJrdIudHsdFgdKFdKGdFkdKHcgVdIxdJudKIdKJdKKdKLdKLdKLdKLdKMdKNdKLdKLdKLdKrdKsdKndKodKodKodKodKodKpdKodKqdKodKqdMYdKPdIOabjaaadKydOydKudOzdKTdOydKudOzdKTdOydKudOzdITdKUdKUdKUdXMdKWaaadIcdMAdMGdNidNWdNXdNYdXGdJWdLedLfdLgdGwdLhdLidLjdLkdLldFGaaaabjaaaabjaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacFacFacFacFaaaaaaaaaabiaaaabjabjdFgdHtdIpdIudFNdKbdHsdIudIqdHtdFkdLmdIvdFgdLndLodIxdLpdLqdLrdKKdKLdLsdLtdLtdLudLvdLwdLxdLydKOdLAdLzdLCdLDdLEdLEdLEdLFdLGdLHdLIdLJdMYdLKdIOaaaaaadLLdOydKudOzdLMdOydKudOzdKwdOydKudKudOadXNdXNdXNdXOdKWaaadFGdOcdLRdLSdLjdLldLTdPgdLVdLWdIedLXdKBdPndLZdPodMbdPndFGabjabiabjabiaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabjaaaabjaaaabiaaaabiaaaabiabjdFgdMcdHsdMddFNdKbdIudIudMedMedFgdMfdMgdFkcNgcfmdIxdJudJvdMhdIxdXxdMjdMkdMjdKMdMldMjdMmdMndKmdModMpdMqdKpdKodKodKodKodKodMrdLGdMsdMYdKPdIOaaaaaadJIdOydKudOzdMtdOydKudOzdMtdOydKudKudOadXPdXPdXPdXRdLLaaadFIdQvdMwdMxdMydMydMzdQwdMBdMCdMDdMEdGwdGwdMFdQGdMHdGwdFGabjabiaaaabiaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacFacFacFacFaaaaaaaaaabiaaaabjabjdFgdHtdIpdIudFNdKbdHsdIudIqdHtdFkdLmdIvdFgdLndLodIxdLpdLqdLrdKKdKLdLsdLtdLtdLudLvdLwdLxdLydKOdLAdLzdLCdLDdLEdLEdLEdLFdLGdLHdLIdLJdMYdLKdIOaaaaaadLLdOydKudOzdLMdOydKudOzdKwdOydKudKudOadXNdXNdXNdXOdKWaaadFGdOcdLRdLSdLjdLldLTdPgdLVdLWdIedLXdKBdPodLZdQGdMbdYEdFGabjabiabjabiaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabjaaaabjaaaabiaaaabiaaaabiabjdFgdMcdHsdMddFNdKbdIudIudMedMedFgdMfdMgdFkcNgcfmdIxdJudJvdMhdIxdXxdMjdMkdMjdKMdMldMjdMmdMndKmdModMpdMqdKpdKodKodKodKodKodMrdLGdMsdMYdKPdIOaaaaaadJIdOydKudOzdMtdOydKudOzdMtdOydKudKudOadXPdXPdXPdXRdLLaaadFIdQvdMwdMxdMydMydMzdQwdMBdMCdMDdMEdGwdGwdMFdYFdMHdGwdFGabjabiaaaabiaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabjaaaabjaaaabiaaaabjaaaabiabjdFgdMIdMJdMgdMKdMLdMMdMNdMMdMNdMOdMPdGEdFkcsEcbCdIxdMQdMRdMSdIxdMTdMUdMTdMUdKMdMVdMUdMWdMXdJxdKsdMZdKodNadNbdNcdNbdOudNbdNcdNbdNddMYdKPdIOdIOdIOdJIdNedKudOzdNfdOydKudOzdNfdOydKudOzdITdNgdNgdNgdNhdJIaaadFGdQHdNjdNkdNldNmdNndLYdIcdNodNpdNqdNrdNsdNtdNudNvdNwdFGabjabiaaaabjaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabjacFacFacFabjabiaaaabiabjabiabjdFgdNxdNydNzdNAdMIdNBdNCdNDdNEdFgdNFdNGdFgcLPcdtdIxdJudNHdNIdIxdNJdNKdNJdNKdKMdNLdNKdNMdNKdKmdKsdMZdKodNadNNdNOdNPdNQdNNdNOdNPdNddMYdKPdKQdKPdKQdLBdNRdKudOzdKTdOydKudOzdKTdOydKudOzdNTdNUdJNdJNdNVdJIaaadFHdRfdRgdRhdRidWSdWTdWUdGwdOddOedOfdOgdOhdOidOjdOkdOldKBaaaabjaaaabjaaaaaaaaaaaaaaZaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabjaaaabjaaaabjabjaaaabiaaaaaaabjdFgdFgdFgdFgdFgdFgdFgdFgdFgdFgdFgdFgdFgdOmdOncgTdIxdIxdOodOpdIxdOqdMUdMTdOrdKMdOsdMUdMWdOtdJxdOvdMZdKodNadOwdXFdOwdOxdOwdPadOwdNddMYdKPdIOdIOdIOdJIdTLdKudKudKudKudKudKudKudKudKudWBdOAdIQdJJdJJdOCdIVaaadODdOEdFGdOFdKBdFGdIcdFGdFGdOGdOHdOIdHidOJdOKdOLdOMdONdFGabjabiaaaabjaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabjaaaabjaaaabjabjaaaabjabjabjabjabjbYhdOOcHgdOPcHgdOPcHncWocHfcWwcWncHfcWndOQcdtdORdOSdOTdOUdJxdOVdOWdOXdOWdOYdMldMjdMmdOZdJxdPbdPMdPcdPddPedPedPedPedPedPedPedPfdMYdKPdKQdKPdKQdNSdNRdKudOzdMtdOydKudOzdMtdOydKudOzdJIdKRdNRdNRdKSdJIaaaaaaabjabjaaaaaaabjaaaabjdFGdPjdPkdPldGwdPmdWVdGwdWWdPmdFGabjabiaaaabiaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabiabiabiabjabiabiabjabjabjdPpdPqdPqdPqdPqdPrdPsdPtdXodPvdPwdPxdPydPzdPxdPAdPBdPCcbCcdtdOSdPDdPEdJxdPFdPGdPHdPIdPJdPKdOrdPLdOrdKmdPYdMZdNddKpdKodKodKodPNdKodKodKodKodMYdKPdIOdIOdIOdJIdNedKudOzdNfdOydKudOzdLMdOydKudOzdJIdLNdOBdPhdPidKyaaaaaaaaaabiabiabjabiabiabjdFGdPSdPTdFGdFGdPUdPVdGwdPWdPXdFGabjabiabjabiaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabiabjabjabjabjabjabjdPpdPpdPpdPZdQadXHdPqcNgcbCcEzdQbdQcdQedQfcEzdQgdQndQccEzcEzcgTcdtdOSdQhdQidJxdMkdQjdQkdQkdQldQmdQkdMmdMjdJxdQodMZdNddNadNbdQpdNbdQFdNbdNbdNbdKodMYdKPdIOabjaaadKydOydKudOzdKTdOydKudOzdKTdOydKudOzdJIdPOdPPdPQdPRdKWaaaaaaaaaaaaaaaabjabjabjabjabjdWXdWYdWZdFGdQxdQydGwdQzdQAdFGabjaaaaaaabiaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabjdQBdQBdYJdYKdYLdQKdQLdQOdQQdQJdRbdRcdQMcgTcEzdQNcdtdRjdRjdQPdRkdRjcbCdQRdQSdXscbCdOSdQTdQUdJxdQVdQWdQXdKLdQYdKNdQXdQZdRadJxdRldMZdNddNadNNdNOdNPdNQdNNdNOdNPdRndMYdLKdIOabjaaadKWdOydKudOzdKwdOydKudOzdJIdOydKudNRdQtdNRdPPdPQdRddKWaaaaaaaaaaaaaaaabiabiaaaabiabjdXdabjdXedFGdXfdXgdGwdXgdXfdFGabjabiabjabiaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabjdQBdQBdYIdYJdYKdQKdQLdQOdQQdQJdRbdRcdQMcgTcEzdQNcdtdRjdRjdQPdRkdRjcbCdQRdQSdXscbCdOSdQTdQUdJxdQVdQWdQXdKLdQYdKNdQXdQZdRadJxdRldMZdNddNadNNdNOdNPdNQdNNdNOdNPdRndMYdLKdIOabjaaadKWdOydKudOzdKwdOydKudOzdJIdOydKudNRdQtdNRdPPdPQdRddKWaaaaaaaaaaaaaaaabiabiaaaabiabjdXdabjdXedFGdXfdXgdGwdXgdXfdFGabjabiabjabiaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabiabjdQBabjabjabjabjdPpdPpdPpdRodRpdRqdPqcdvcbCcEzdRmdRrdRBcbCdRCdREdRFcMTdRsdQScdtcisdOSdRtdRudJxdRvdRvdKLdRwdXIdRydLtdRzdRAdJxdEzdMZdNddNadOwdRGdOwdRHdOwdRGdOwdKodMYdKPdIOabjaaadLLdOydKudOzdMtdOydKudOzdMtdOydKudNRdQtdNRdPPdPQdRddKWaaaaaaaaaaaaaaaaaaaaaaaaabiabjabjabjabjdFGdFGdNrdFGdNrdFGdFGabjabiaaaabiaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabiabjdQBabjaaaaaaabjabjabjdPpdPqdPqdPqdPqcdtciscEzdRDdRKdRQdRZdSccdtdRQdRZdRIdRJdSndRLdIxdIxdRMdJxdRNdJxdJxdJxdJxdROdJxdRPdJxdJxdSodMpdRRdRSdRTdRTdRTdRTdRTdRTdRUdRVdMYdKPdIOdIOdIOdJIdKtdKudKudKudKudKudKudKudKudKudKvdJIdRedRWdRXdLOdLLaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabjabjabjaaaabjaaaabjabjabjabiaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabjdQBabjaaaaaaaaaaaaabjabjabjabjabjcCxdSndSpcEzdSacdtdRQdRZdSbdRKdSqcdtdSacEzcJKcJKdIxdXVdSedJxdSfdKmdSgdShdSidSjdSkdSldSmdSrdKPdSsdStdSudStdStdSBdStdXJdStdSDdStdSEdKPdKQdKPdKQdLBdNRdSvdSvdSvdSvdSwdSvdSvdSvdSvdLOdJIdRYdSxdSxdSydJIaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabiabiabjabiabjabiaaaabiabiaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaZaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabiabiabiabjabjabiabiabjdQBabjabiabiabiabiabiabjabiaaaabjbYhcJKcJKcEzdSAdSFdSGdSOdSQdSWdTgdSHdSIcEzabjabjdIxdIxdRMdIxdIxdIxdIxdIxdSJdSKdSLdSMdSNdIxdThdSPdSPdTidSRdSSdSTdSUdSPdSRdSVdTkdSXdSYdSZdTadTadOAdIQdTbdIRdISdIQdIUdITdSzdSzdITdIUdTddIQdIQdIQdIQdIVaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabjaaaabjaaaabjaaaabjaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabjaaaaaaaaaabjaaaaaaaaadQBaaaaaaaaaabjaaaaaaaaaaaaaaaabjabjabjabjdQSdTfdUidUldUScfndTjcitdVodTlcEzaaaabjdIxdTmdTndTodTpdTqdIxdTrdTsdTtdTudTvdTwdIxdXWdTydXKdTAdTBdTCdTDdTEdTadTFdTGdTHdTIdTJdQIdTKdQIdLBdTMdTMdTNdTNdTOdJIdTPdJKdJKdTQdJIdTcdTRdTSdTRdLOdITaaaaaaaaaaaaaaaaaaaaZaaaaaaaaaaaaaaaaaaaaaabiabiabiabiabiabiabiaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadTUaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabjaaadTVdTVdTVdTVdTVaaadQBaaadTVdTVdTVdTVdTVaaaabiaaaaaaabiabiabjcEzdQbdTWdTWdQSdQScEzdTWdTWdQbcEzaaaabjdTXdTYdTZdUadUbdUcdUddUcdUcdUedUfdUgdUhdIxdWzdSPdUjdUkdWAdUmdUndUodUpdUqdUrdUsdUtdUudUvdTadTadJIdUwdTMdTMdTMdTMdTbdUxdKudKudUydJIdUzdUAdUBdSvdUCdTTaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabiabjdYMdYNdYNdYNdYNdYOdQBdYJdYPdYPdYPdYPdYQabjabiabjabjabjabiabjabjabjabjabjabjabjabjabjabjabjabjabjabjdIxdUJdUKdULdUMdUNdIxdUOdSidUPdUQdUQdURdIxdWGdSPdUTdUUdUVdUWdUXdUYdTadUZdVadVbdVcdXQdVeabjaaadJIdUwdTMdTMdVfdVgdITdVhdKudKudVidOAdWCdVkdVldJKdVmdTTaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabiabjdYLdYMdYMdYMdYMdYNdQBdYIdYOdYOdYOdYOdYPabjabiabjabjabjabiabjabjabjabjabjabjabjabjabjabjabjabjabjabjdIxdUJdUKdULdUMdUNdIxdUOdSidUPdUQdUQdURdIxdWGdSPdUTdUUdUVdUWdUXdUYdTadUZdVadVbdVcdXQdVeabjaaadJIdUwdTMdTMdVfdVgdITdVhdKudKudVidOAdWCdVkdVldJKdVmdTTaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabiabiaaadVndVndVndVndVnabjdQBabjdVndVndVndVndVnaaaaaaaaaaaaaaaabjaaaabjabiabiabiabjabiabiabjabiabiabiaaaabjdIxdIxdTXdTXdTXdIxdIxdIxdTXdTXdTXdTXdIxdIxdWHdVpdVpdVqdVqdVqdVpdVpdVpdVpdVqdVqdVqdVpdVqaaaaaadJIdVrdVrdVsdVrdVgdJIdVtdVudVudUBdWDdWEdJIdWFdWFdWFdITaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabiaaaaaaaaaaaaabjaaaaaaabjdQBabjaaaaaaabjaaaaaaaaaaaaabiabjabiabiabiabjaaaabjaaaaaaabjaaaaaaabjaaaabjaaaabjabjabjabjaaaabjabjabjabjabjaaaaaaabjabjabjdYRabjabjabjaaaabjabjabjabjabjabjaaaabjabjabjaaaaaadVzdIQdITdIUdIUdIQdVAdVBdWJdWJdVBdTddIQdVCdIUdITdIQdVDaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabiaaaaaaaaaaaaabjaaaaaaabjdQBabjaaaaaaabjaaaaaaaaaaaaabiabjabiabiabiabjaaaabjaaaaaaabjaaaaaaabjaaaabjaaaabjabjabjabjaaaabjabjabjabjabjaaaaaaabjabjabjdYQabjabjabjaaaabjabjabjabjabjabjaaaabjabjabjaaaaaadVzdIQdITdIUdIUdIQdVAdVBdWJdWJdVBdTddIQdVCdIUdITdIQdVDaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabiaaadTVdTVdTVdTVdTVabjabjdQBabjabjdTVdTVdTVdTVdTVaaaabiaaaaaaaaaaaaabjabiabiabiabjabiabiabiabiabjabjabjabjabiabiabiabjabiabiaaaabiabiabjabjabiabiabjacFabjabiabjabjabjabiabiabiabiabjabjabjabiabiaaaaaaaaaaaaaaadVzdIVdVEdVFdVGdVGdVGdVGdVFdVHdOAdVDaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaZaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabjabjdYMdYNdYNdYNdYNdYOdQBdQBdQBdYJdYPdYPdYPdYPdYQabjabjaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabjaaaabjaaaaaaaaaaaaabjaaaaaaaaaabjaaaaaaaaaabjaaaaaaabjaaaaaaaaaabjaaaaaaaaaaaaaaaaaaaaadJIdVIdVJdVGdVGdVGdVKdVLdVMdJIaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabjabjdYLdYMdYMdYMdYMdYNdQBdQBdQBdYIdYOdYOdYOdYOdYPabjabjaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabjaaaabjaaaaaaaaaaaaabjaaaaaaaaaabjaaaaaaaaaabjaaaaaaabjaaaaaaaaaabjaaaaaaaaaaaaaaaaaaaaadJIdVIdVJdVGdVGdVGdVKdVLdVMdJIaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabjaaadVndVndVndVndVnabjabjdQBabjabjdVndVndVndVndVnaaaabiaaaaaaaaZaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabiabiabiabiabiabiabiabjabiabiabiabjabiabiabiabjabiabiabjabiabiabiabjabiabiaaaaaaaaaaaaaaaaaaaaadITdVNdVJdVOdVPdVQdVOdVLdVRdITaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabiaaaaaaaaaaaaabjaaaaaaabjdQBabjaaaaaaabjaaaaaaaaaaaaabiaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabjaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadJIdVSdVTdVUdVVdVWdVXdVYdVZdJIaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabiabiaaadTVdTVdTVdTVdTVabjdQBabjdTVdTVdTVdTVdTVaaaabjabjaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabiabiabiaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadVzdIQdITdITdITdITdITdITdIQdVDaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabiabjdYMdYNdYNdYNdYNdYOdQBdYJdYPdYPdYPdYPdYQabjabiaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaZaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaZaaaaaaabjaaadVndVndVndVndVnabjdYSabjdVndVndVndVndVnaaaabiaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabiaaaaaaaaaabjaaaaaaaaadYTaaaaaaaaaabjaaaaaaaaaabjaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaZaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabiabiabjabiabiabjabjaaadYTaaaabjabjabiabiabiabiabiaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabiabjdYLdYMdYMdYMdYMdYNdQBdYIdYOdYOdYOdYOdYPabjabiaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaZaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaZaaaaaaabjaaadVndVndVndVndVnabjdYRabjdVndVndVndVndVnaaaabiaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabiaaaaaaaaaabjaaaaaaaaadYSaaaaaaaaaabjaaaaaaaaaabjaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaZaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabiabiabjabiabiabjabjaaadYSaaaabjabjabiabiabiabiabiaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabiabjdWcabjabiaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabiaaaabjaaaabiaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaZaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabiabiabjabiabiaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaZaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa @@ -11014,4 +11013,3 @@ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa "} - diff --git a/_maps/map_files/MetaStation/MetaStation.v41A.II.dmm b/_maps/map_files/MetaStation/MetaStation.v41A.II.dmm index c6d50f5fbd5..aa149082912 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) @@ -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/door/poddoor{id_tag = "QMLoaddoor2"; name = "supply dock loading door"},/obj/machinery/conveyor/east{id = "QMLoad2"},/turf/simulated/shuttle/plating,/area/shuttle/supply) +"ayj" = (/obj/machinery/door/poddoor{id_tag = "QMLoaddoor2"; name = "supply dock loading door"},/obj/machinery/conveyor/east{id = "QMLoad2"},/obj/structure/plasticflaps/mining,/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) @@ -1481,7 +1481,7 @@ "aCy" = (/obj/machinery/light_switch{pixel_y = 28},/turf/simulated/floor/bluegrid{icon_state = "gcircuit"; luminosity = 2},/area/security/nuke_storage) "aCz" = (/obj/machinery/alarm{pixel_y = 23},/obj/machinery/light{dir = 1},/turf/simulated/floor/bluegrid{icon_state = "gcircuit"; luminosity = 2},/area/security/nuke_storage) "aCA" = (/obj/structure/table,/obj/item/folder/red,/obj/item/taperecorder{pixel_y = 0},/obj/item/radio/intercom{broadcasting = 1; frequency = 1424; listening = 0; name = "Interrogation Intercom"; pixel_y = -24},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/security/brig) -"aCB" = (/obj/structure/closet/fireaxecabinet{step_y = 30},/obj/structure/table/reinforced,/turf/simulated/floor/plasteel{icon_state = "vault"; dir = 8},/area/security/nuke_storage) +"aCB" = (/obj/structure/filingcabinet,/obj/item/folder/documents,/turf/simulated/floor/plasteel{icon_state = "vault"; dir = 8},/area/security/nuke_storage) "aCC" = (/turf/simulated/shuttle/floor,/area/shuttle/siberia) "aCD" = (/obj/structure/grille,/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"},/turf/simulated/floor/plating/airless,/area/engine/engineering) "aCE" = (/obj/machinery/alarm{pixel_y = 28},/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/quartermaster/sorting{name = "\improper Warehouse"}) @@ -1576,7 +1576,7 @@ "aEp" = (/obj/structure/cable/yellow{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/structure/disposalpipe/junction{dir = 4; icon_state = "pipe-j2"; tag = "icon-pipe-j1 (WEST)"},/turf/simulated/floor/plasteel,/area/crew_quarters/sleep) "aEq" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 8},/turf/simulated/floor/plasteel{dir = 2; icon_state = "neutralcorner"},/area/crew_quarters/sleep) "aEr" = (/obj/machinery/door/airlock/maintenance{req_access_txt = "12"},/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},/turf/simulated/floor/plating,/area/maintenance/starboard) -"aEs" = (/obj/item/ore/iron,/obj/effect/decal/warning_stripes/northwest,/turf/simulated/floor/plasteel,/area/quartermaster/miningdock{name = "\improper Mining Office"}) +"aEs" = (/obj/item/stack/ore/iron,/obj/effect/decal/warning_stripes/northwest,/turf/simulated/floor/plasteel,/area/quartermaster/miningdock{name = "\improper Mining Office"}) "aEt" = (/obj/effect/spawner/window/reinforced,/obj/structure/cable/yellow{d2 = 8; icon_state = "0-8"},/obj/structure/cable/yellow{d2 = 2; icon_state = "0-2"},/obj/machinery/door/poddoor{density = 0; icon_state = "open"; id_tag = "bridge blast"; name = "Bridge Blast Doors"; opacity = 0},/turf/simulated/floor/plating,/area/bridge) "aEu" = (/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},/turf/simulated/floor/plating,/area/maintenance/starboard) "aEv" = (/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/spawner/lootdrop{loot = list(/obj/structure/grille,/obj/structure/grille,/obj/structure/grille,/obj/structure/grille,/obj/structure/grille,/obj/item/cigbutt,/obj/item/trash/cheesie,/obj/item/trash/candy,/obj/item/trash/chips,/obj/item/trash/pistachios,/obj/item/trash/plate,/obj/item/trash/popcorn,/obj/item/trash/raisins,/obj/item/trash/sosjerky,/obj/item/trash/syndi_cakes); name = "maint grille or trash spawner"},/turf/simulated/floor/plating,/area/maintenance/starboard) @@ -1591,7 +1591,7 @@ "aEE" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/effect/decal/warning_stripes/west,/turf/simulated/floor/plasteel,/area/engine/engineering) "aEF" = (/obj/item/multitool,/turf/simulated/floor/plating/airless,/area/engine/engineering) "aEG" = (/obj/item/radio/off,/turf/simulated/floor/plating/airless,/area/engine/engineering) -"aEH" = (/obj/structure/closet/crate,/obj/item/ore/glass,/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/quartermaster/sorting{name = "\improper Warehouse"}) +"aEH" = (/obj/structure/closet/crate,/obj/item/stack/ore/glass,/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/quartermaster/sorting{name = "\improper Warehouse"}) "aEI" = (/obj/machinery/door/airlock/shuttle{name = "Mining Shuttle Airlock"; req_access_txt = "0"},/obj/docking_port/mobile{dir = 8; dwidth = 3; height = 5; id = "mining"; name = "mining shuttle"; width = 7},/obj/docking_port/stationary{dir = 8; dwidth = 3; height = 5; id = "mining_home"; name = "mining shuttle bay"; width = 7},/turf/simulated/shuttle/plating,/area/shuttle/mining) "aEJ" = (/obj/machinery/door/airlock/external{name = "Mining Dock Airlock"; req_access = null; req_access_txt = "0"},/turf/simulated/floor/plating,/area/quartermaster/miningdock{name = "\improper Mining Office"}) "aEK" = (/turf/simulated/floor/plasteel,/area/quartermaster/miningdock{name = "\improper Mining Office"}) @@ -1712,7 +1712,7 @@ "aGV" = (/obj/item/clothing/glasses/meson,/obj/structure/closet/crate,/obj/item/poster/random_contraband,/obj/effect/spawner/lootdrop/maintenance{lootcount = 2; name = "2maintenance loot spawner"},/turf/simulated/floor/plating,/area/maintenance/starboard) "aGW" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor/plating,/area/maintenance/starboard) "aGX" = (/obj/structure/rack{dir = 8; layer = 2.9},/obj/item/clothing/shoes/magboots,/obj/item/clothing/suit/space/hardsuit/engineering,/obj/item/clothing/mask/breath,/obj/item/clothing/head/helmet/space/hardsuit/engineering,/obj/effect/decal/warning_stripes/yellow/hollow,/turf/simulated/floor/plasteel,/area/engine/engineering) -"aGY" = (/obj/item/ore/silver,/obj/item/ore/silver,/obj/effect/decal/warning_stripes/southwest,/turf/simulated/floor/plasteel,/area/quartermaster/miningdock{name = "\improper Mining Office"}) +"aGY" = (/obj/item/stack/ore/silver,/obj/item/stack/ore/silver,/obj/effect/decal/warning_stripes/southwest,/turf/simulated/floor/plasteel,/area/quartermaster/miningdock{name = "\improper Mining Office"}) "aGZ" = (/obj/structure/reagent_dispensers/fueltank,/obj/machinery/camera{c_tag = "Mining Dock"; dir = 8; network = list("SS13")},/obj/effect/decal/warning_stripes/south,/turf/simulated/floor/plasteel,/area/quartermaster/miningdock{name = "\improper Mining Office"}) "aHa" = (/obj/effect/decal/warning_stripes/northwest,/turf/simulated/floor/plasteel,/area/engine/engineering) "aHb" = (/obj/effect/spawner/window/reinforced,/obj/structure/cable/yellow{d2 = 8; icon_state = "0-8"},/obj/structure/cable/yellow,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor/plating,/area/construction/Storage{name = "Storage Wing"}) @@ -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/structure/plasticflaps,/obj/machinery/conveyor/east{id = "QMLoad2"},/turf/simulated/floor/plating,/area/quartermaster/storage) +"aPf" = (/obj/machinery/conveyor/east{id = "QMLoad2"},/obj/structure/plasticflaps/mining,/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"}) @@ -2163,7 +2163,7 @@ "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/door/poddoor{id_tag = "QMLoaddoor"; name = "supply dock loading door"},/obj/machinery/conveyor/west{id = "QMLoad"},/turf/simulated/shuttle/plating,/area/shuttle/supply) +"aPH" = (/obj/machinery/door/airlock/external{id_tag = "supply_home"; name = "Supply Dock Airlock"; req_access_txt = "31"},/turf/simulated/floor/plating,/area/quartermaster/storage) "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) @@ -2171,7 +2171,7 @@ "aPM" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 10},/obj/structure/window/reinforced{dir = 1; pixel_y = 1},/obj/effect/decal/warning_stripes/arrow{icon_state = "4"; dir = 8},/obj/effect/decal/warning_stripes/yellow/partial{icon_state = "3"; dir = 8},/turf/simulated/floor/plasteel,/area/quartermaster/storage) "aPN" = (/obj/machinery/navbeacon{codes_txt = "delivery"; dir = 8; location = "QM #1"},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/door/window/northleft,/obj/machinery/light{dir = 4},/obj/effect/decal/warning_stripes/yellow,/mob/living/simple_animal/bot/mulebot{home_destination = "QM #1"; suffix = "#1"},/turf/simulated/floor/plasteel,/area/quartermaster/storage) "aPO" = (/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 4; initialize_directions = 11},/obj/structure/disposalpipe/segment,/turf/simulated/floor/plasteel,/area/quartermaster/storage) -"aPP" = (/obj/structure/closet/crate,/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 4},/obj/item/ore/glass,/obj/item/ore/iron,/obj/effect/decal/warning_stripes/yellow/hollow,/turf/simulated/floor/plasteel,/area/quartermaster/storage) +"aPP" = (/obj/structure/closet/crate,/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 4},/obj/item/stack/ore/glass,/obj/item/stack/ore/iron,/obj/effect/decal/warning_stripes/yellow/hollow,/turf/simulated/floor/plasteel,/area/quartermaster/storage) "aPQ" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/effect/decal/warning_stripes/yellow,/turf/simulated/floor/plasteel,/area/quartermaster/storage) "aPR" = (/obj/machinery/door/window/northleft{dir = 8; name = "MuleBot Supply Access"; req_access_txt = "50"},/obj/structure/plasticflaps{opacity = 1},/turf/simulated/floor/plating,/area/maintenance/fpmaint2{name = "Port Maintenance"}) "aPS" = (/obj/structure/sink{dir = 4; icon_state = "sink"; pixel_x = 11},/obj/structure/mirror{pixel_x = 28},/turf/simulated/floor/plasteel{icon_state = "freezerfloor"},/area/crew_quarters/locker/locker_toilet{name = "\improper Restrooms"}) @@ -2245,7 +2245,7 @@ "aRi" = (/obj/machinery/pipedispenser,/turf/simulated/floor/plating,/area/construction) "aRj" = (/obj/machinery/door/airlock/command/glass{name = "Bridge Access"; req_access_txt = "19"},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/door/poddoor{density = 0; icon_state = "open"; id_tag = "bridge blast"; name = "Bridge Blast Doors"; opacity = 0},/obj/machinery/door/firedoor,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/bridge) "aRk" = (/obj/machinery/door/airlock/shuttle{name = "Supply Shuttle Airlock"; req_access_txt = "31"},/turf/simulated/shuttle/plating,/area/shuttle/supply) -"aRl" = (/obj/machinery/door/airlock/external{name = "Supply Dock Airlock"; req_access_txt = "31"},/turf/simulated/floor/plating,/area/quartermaster/storage) +"aRl" = (/obj/machinery/door/poddoor{id_tag = "QMLoaddoor2"; name = "supply dock loading door"},/obj/machinery/conveyor/west{id = "QMLoad"},/obj/structure/plasticflaps/mining,/turf/simulated/shuttle/plating,/area/shuttle/supply) "aRm" = (/obj/machinery/light/small,/turf/simulated/floor/plating,/area/quartermaster/storage) "aRn" = (/obj/machinery/atmospherics/unary/portables_connector,/obj/machinery/portable_atmospherics/pump,/obj/effect/decal/warning_stripes/yellow,/turf/simulated/floor/plasteel{tag = "icon-vault"; icon_state = "vault"},/area/crew_quarters/locker) "aRo" = (/turf/simulated/floor/plasteel,/area/quartermaster/storage) @@ -2443,7 +2443,7 @@ "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/structure/plasticflaps,/obj/machinery/conveyor/west{id = "QMLoad"},/turf/simulated/floor/plating,/area/quartermaster/storage) +"aVb" = (/obj/machinery/conveyor/west{id = "QMLoad"},/obj/structure/plasticflaps/mining,/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/northwest/ccw{id = "QMLoad"},/turf/simulated/floor/plating,/area/quartermaster/storage) @@ -3399,7 +3399,7 @@ "bns" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 10},/obj/machinery/navbeacon{codes_txt = "patrol;next_patrol=14-Starboard-Central"; location = "13.3-Engineering-Central"},/turf/simulated/floor/plasteel{dir = 4; icon_state = "cautioncorner"},/area/hallway/primary/starboard) "bnt" = (/turf/simulated/wall/r_wall,/area/engine/break_room) "bnu" = (/obj/machinery/alarm{dir = 1; pixel_y = -22},/obj/machinery/light,/obj/machinery/camera{c_tag = "Brig - Hallway - Starboard"; dir = 1; network = list("SS13")},/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 2; initialize_directions = 11},/turf/simulated/floor/plasteel{dir = 2; icon_state = "redcorner"},/area/security/brig) -"bnv" = (/obj/structure/safe{knownby = list("captain")},/obj/item/clothing/head/bearpelt,/obj/item/folder/documents,/obj/item/reagent_containers/food/drinks/bottle/vodka/badminka,/obj/item/lighter/zippo/nt_rep,/obj/item/storage/fancy/cigarettes/cigpack_robustgold,/obj/item/stack/spacecash/c1000{amount = 100000},/turf/simulated/floor/plasteel{icon_state = "vault"; dir = 4},/area/security/nuke_storage) +"bnv" = (/obj/structure/table/wood,/obj/item/flashlight/lamp/green{pixel_x = 1; pixel_y = 5},/obj/item/radio/intercom{dir = 0; name = "Station Intercom (General)"; pixel_x = -27},/obj/machinery/computer/security/telescreen/entertainment{pixel_y = 32},/turf/simulated/floor/carpet,/area/crew_quarters/captain{name = "\improper Captain's Quarters"}) "bnw" = (/obj/item/folder/yellow,/obj/item/folder/yellow,/obj/machinery/light{dir = 1},/obj/structure/sign/securearea{pixel_y = 32},/obj/structure/table/glass,/turf/simulated/floor/plasteel{dir = 1; icon_state = "yellow"},/area/engine/break_room) "bnx" = (/turf/simulated/floor/plasteel{dir = 1; icon_state = "yellow"},/area/engine/break_room) "bny" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/disposalpipe/junction{tag = "icon-pipe-j2"; icon_state = "pipe-j2"; dir = 2},/turf/simulated/floor/plasteel{dir = 1; icon_state = "yellow"},/area/engine/break_room) @@ -3468,7 +3468,7 @@ "boJ" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"},/turf/simulated/floor/bluegrid,/area/turret_protected/ai) "boK" = (/obj/machinery/door/window{dir = 1; name = "Captain's Bedroom"; req_access_txt = "20"},/turf/simulated/floor/wood,/area/crew_quarters/captain{name = "\improper Captain's Quarters"}) "boL" = (/obj/structure/closet/secure_closet/captains,/obj/structure/window/reinforced{dir = 1; pixel_y = 2},/turf/simulated/floor/wood,/area/crew_quarters/captain{name = "\improper Captain's Quarters"}) -"boM" = (/obj/structure/safe{knownby = list("captain")},/obj/machinery/light_switch{pixel_y = -23},/obj/item/clothing/head/bearpelt,/obj/item/folder/documents,/obj/item/reagent_containers/food/drinks/bottle/vodka/badminka,/obj/item/lighter/zippo/nt_rep,/obj/item/storage/fancy/cigarettes/cigpack_robustgold,/obj/item/stack/spacecash/c1000{amount = 100000},/turf/simulated/floor/plasteel{icon_state = "vault"; dir = 4},/area/quartermaster/office{name = "\improper Cargo Office"}) +"boM" = (/obj/structure/rack,/obj/item/tank/emergency_oxygen/double,/obj/item/tank/jetpack/oxygen/captain,/obj/item/clothing/suit/space/captain,/obj/item/clothing/mask/gas,/obj/item/clothing/head/helmet/space/capspace,/obj/structure/window/reinforced{dir = 1; pixel_y = 2},/turf/simulated/floor/wood,/area/crew_quarters/captain{name = "\improper Captain's Quarters"}) "boN" = (/obj/item/restraints/legcuffs/beartrap,/obj/item/restraints/legcuffs/beartrap,/obj/structure/table,/obj/machinery/requests_console{department = "Janitorial"; departmentType = 1; pixel_x = -29},/obj/item/reagent_containers/spray/cleaner,/obj/machinery/camera{c_tag = "Custodial Closet"; dir = 4; network = list("SS13")},/obj/machinery/light/small{dir = 8},/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/janitor) "boO" = (/obj/structure/cable/yellow{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/structure/cable/yellow{d1 = 2; d2 = 4; icon_state = "2-4"},/obj/structure/disposalpipe/segment{dir = 4; icon_state = "pipe-c"},/turf/simulated/floor/plasteel,/area/hallway/primary/central) "boP" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{req_access_txt = 1},/obj/structure/disposalpipe/junction{icon_state = "pipe-j2"; dir = 4},/turf/simulated/floor/plasteel{dir = 2; icon_state = "neutralcorner"},/area/hallway/primary/central) @@ -3960,7 +3960,7 @@ "byh" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/navbeacon{codes_txt = "patrol;next_patrol=7-Command-Starboard"; location = "6-Port-Central"},/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor/plasteel,/area/hallway/primary/central) "byi" = (/obj/machinery/door_control{id = "hop"; name = "Privacy Shutters Control"; pixel_x = -24; pixel_y = -6; req_access_txt = "28"},/obj/machinery/light_switch{pixel_x = -25; pixel_y = 5},/turf/simulated/floor/carpet,/area/crew_quarters/heads) "byj" = (/obj/machinery/atmospherics/unary/vent_scrubber{dir = 2; on = 1; scrub_N2O = 1; scrub_Toxins = 1},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/carpet,/area/crew_quarters/heads) -"byk" = (/obj/structure/table/wood,/obj/item/flashlight/lamp/green{pixel_x = 1; pixel_y = 5},/obj/item/radio/intercom{dir = 0; name = "Station Intercom (General)"; pixel_x = -27},/obj/machinery/computer/security/telescreen/entertainment{pixel_y = 32},/obj/item/paper/safe_code{owner = "captain"},/turf/simulated/floor/carpet,/area/crew_quarters/captain{name = "\improper Captain's Quarters"}) +"byk" = (/obj/structure/safe,/obj/item/storage/secure/briefcase{contents = newlist(/obj/item/clothing/suit/armor/vest,/obj/item/gun/projectile/automatic/pistol,/obj/item/suppressor,/obj/item/clothing/mask/balaclava,/obj/item/bodybag,/obj/item/soap/nanotrasen)},/obj/item/storage/backpack/duffel{contents = newlist(/obj/item/clothing/under/lawyer,/obj/item/clothing/accessory/waistcoat,/obj/item/clothing/shoes/laceup,/obj/item/clothing/gloves/color/black,/obj/item/clothing/glasses/sunglasses,/obj/item/clothing/head/fedora); desc = "A large duffelbag for holding extra things. There is a NanoTrasen logo on the back."; icon_state = "duffel-syndieammo"; item_state = "duffel-syndieammo"},/obj/item/lazarus_injector,/obj/item/gun/energy/gun/advtaser,/obj/item/gun/projectile/revolver/russian,/obj/item/ammo_box/a357,/obj/item/clothing/accessory/stethoscope,/obj/item/book{desc = "An undeniably handy book."; icon_state = "bookknock"; name = "A Simpleton's Guide to Safe-cracking with Stethoscopes"},/turf/simulated/floor/plasteel{icon_state = "vault"; dir = 4},/area/security/nuke_storage) "byl" = (/obj/structure/cable/yellow{d2 = 2; icon_state = "0-2"},/obj/machinery/power/apc{dir = 1; name = "Head of Personnel APC"; pixel_y = 24},/obj/machinery/light{dir = 1},/turf/simulated/floor/carpet,/area/crew_quarters/heads) "bym" = (/turf/simulated/floor/carpet,/area/crew_quarters/heads) "byn" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 2; on = 1},/turf/simulated/floor/carpet,/area/crew_quarters/heads) @@ -6233,9 +6233,9 @@ "cpS" = (/obj/machinery/slot_machine{pixel_y = 2},/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) "cpT" = (/obj/structure/chair/stool,/obj/machinery/newscaster{pixel_x = -30},/turf/simulated/floor/plasteel{tag = "icon-cafeteria (NORTHEAST)"; icon_state = "cafeteria"; dir = 5},/area/medical/research{name = "Research Division"}) "cpU" = (/obj/structure/closet/secure_closet/medical2,/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/surgery1) -"cpV" = (/obj/item/surgicaldrill,/obj/item/stack/medical/bruise_pack/advanced,/obj/structure/table/glass,/obj/machinery/camera{c_tag = "Medbay Surgery 1 North"; network = list("SS13","Medbay")},/obj/machinery/light{dir = 1; in_use = 1},/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/surgery1) +"cpV" = (/obj/item/surgicaldrill,/obj/item/stack/medical/bruise_pack/advanced,/obj/machinery/camera{c_tag = "Medbay Surgery 1 North"; network = list("SS13","Medbay")},/obj/machinery/light{dir = 1; in_use = 1},/obj/structure/table/tray,/obj/item/scalpel,/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/surgery1) "cpW" = (/obj/structure/cable/yellow{d1 = 2; d2 = 8; icon_state = "2-8"},/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/surgery1) -"cpX" = (/obj/item/hemostat,/obj/item/scalpel,/obj/structure/table/glass,/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/surgery1) +"cpX" = (/obj/item/hemostat,/obj/structure/table/glass,/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/surgery1) "cpY" = (/obj/item/bonegel,/obj/item/bonesetter,/obj/structure/table/glass,/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/surgery1) "cpZ" = (/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/chemistry) "cqa" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/door/airlock/public/glass{autoclose = 0; frequency = 1449; heat_proof = 1; icon_state = "door_locked"; id_tag = "gas_turbine_interior"; locked = 1; name = "Incinerator Interior Airlock"; req_access_txt = "12"},/obj/machinery/atmospherics/pipe/simple/insulated{dir = 5},/turf/simulated/floor/engine/insulated,/area/maintenance/incinerator) @@ -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) @@ -7315,7 +7315,7 @@ "cKI" = (/turf/simulated/wall,/area/space) "cKJ" = (/obj/effect/decal/warning_stripes/west,/turf/simulated/floor/plating/airless,/area/toxins/test_area) "cKK" = (/obj/machinery/camera{active_power_usage = 0; c_tag = "Bomb Test Site"; desc = "A specially-reinforced camera with a long lasting battery, used to monitor the bomb testing site. An external light is attached to the top."; dir = 8; invuln = 1; light = null; luminosity = 3; name = "Hardened Bomb-Test Camera"; network = list("Toxins","Research","SS13"); use_power = 0},/obj/item/target/alien{anchored = 1},/obj/effect/decal/warning_stripes/east,/turf/simulated/floor/plating/airless,/area/toxins/test_area) -"cKL" = (/obj/item/surgicaldrill,/obj/item/stack/medical/bruise_pack/advanced,/obj/machinery/camera{c_tag = "Medbay Surgery 1 South"; dir = 1; network = list("SS13")},/obj/machinery/light,/obj/structure/table/glass,/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/surgery2) +"cKL" = (/obj/item/surgicaldrill,/obj/item/stack/medical/bruise_pack/advanced,/obj/machinery/camera{c_tag = "Medbay Surgery 1 South"; dir = 1; network = list("SS13")},/obj/machinery/light,/obj/structure/table/tray,/obj/item/scalpel,/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/surgery2) "cKM" = (/turf/simulated/wall,/area/medical/virology) "cKN" = (/obj/effect/spawner/window/reinforced,/turf/simulated/floor/plating,/area/toxins/server{name = "\improper Research Division Server Room"}) "cKO" = (/obj/machinery/door/firedoor,/obj/machinery/door/airlock/medical{name = "Test Subject Cell"; req_access_txt = "39"},/turf/simulated/floor/plasteel{icon_state = "freezerfloor"},/area/medical/virology) @@ -7386,7 +7386,7 @@ "cMb" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/item/radio/intercom{dir = 8; name = "Station Intercom (General)"; pixel_x = -28},/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/patient_b) "cMc" = (/obj/structure/table,/obj/item/stack/sheet/glass{amount = 20; pixel_x = -3; pixel_y = 6},/obj/item/stack/sheet/metal{amount = 50},/obj/item/stack/sheet/metal{amount = 50},/obj/item/stack/sheet/metal{amount = 50},/obj/item/stack/sheet/metal{amount = 50},/obj/item/stack/sheet/metal{amount = 50},/obj/item/stack/sheet/metal{amount = 50},/obj/structure/extinguisher_cabinet{pixel_x = 27},/obj/item/stack/packageWrap,/obj/item/stack/packageWrap,/obj/effect/decal/warning_stripes/yellow,/turf/simulated/floor/plasteel,/area/assembly/robotics) "cMd" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/medical/morgue) -"cMe" = (/obj/structure/filingcabinet/chestdrawer{desc = "A large drawer filled with autopsy reports."; name = "Autopsy Reports"},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/medical/morgue) +"cMe" = (/obj/structure/filingcabinet/chestdrawer/autopsy,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/medical/morgue) "cMf" = (/obj/machinery/camera{c_tag = "Morgue"; dir = 2; network = list("SS13","Medbay")},/obj/structure/morgue,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/medical/morgue) "cMg" = (/obj/structure/closet,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/hallway/primary/aft) "cMh" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{req_access_txt = 1},/turf/simulated/floor/plasteel{dir = 1; icon_state = "neutralcorner"},/area/hallway/primary/aft) @@ -7442,7 +7442,7 @@ "cNf" = (/obj/machinery/alarm{dir = 4; icon_state = "alarm0"; pixel_x = -22},/obj/machinery/light{icon_state = "tube1"; dir = 8},/obj/machinery/r_n_d/circuit_imprinter,/obj/effect/decal/warning_stripes/yellow/hollow,/turf/simulated/floor/plasteel,/area/assembly/robotics) "cNg" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/structure/disposalpipe/segment,/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/effect/decal/warning_stripes/east,/turf/simulated/floor/plasteel,/area/assembly/robotics) "cNh" = (/obj/effect/landmark/start{name = "Roboticist"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/effect/decal/warning_stripes/yellow/hollow,/turf/simulated/floor/plasteel,/area/assembly/robotics) -"cNi" = (/obj/item/hemostat,/obj/item/scalpel,/obj/structure/table/glass,/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/surgery2) +"cNi" = (/obj/item/hemostat,/obj/structure/table/glass,/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/surgery2) "cNj" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 9},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plasteel{dir = 8; icon_state = "whitepurplecorner"},/area/medical/research{name = "Research Division"}) "cNk" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/structure/cable/yellow{d1 = 1; d2 = 8; icon_state = "1-8"},/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/research{name = "Research Division"}) "cNl" = (/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 8; initialize_directions = 11},/turf/simulated/floor/plasteel{dir = 2; icon_state = "whitebluecorner"},/area/medical/research{name = "Research Division"}) @@ -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) @@ -8453,7 +8453,7 @@ "dgC" = (/obj/structure/chair/stool,/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) "dgD" = (/obj/machinery/camera{c_tag = "Quartermaster's Office"; dir = 8},/obj/machinery/light{dir = 4},/turf/simulated/floor/engine,/area/hallway/secondary/entry{name = "Arrivals"}) "dgE" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/light/small{dir = 1},/turf/simulated/floor/plating,/area/maintenance/starboard) -"dgF" = (/obj/structure/safe/floor{knownby = list("captain")},/obj/item/clothing/mask/cigarette/cigar/havana,/obj/item/lighter/zippo/nt_rep,/obj/item/reagent_containers/food/drinks/bottle/absinthe/premium,/obj/item/toy/figure/captain,/obj/item/gun/projectile/revolver/russian,/turf/simulated/floor/carpet,/area/crew_quarters/captain{name = "\improper Captain's Quarters"}) +"dgF" = (/obj/structure/reagent_dispensers/oil,/turf/simulated/floor/plasteel,/area/assembly/robotics) "dgG" = (/obj/structure/rack,/obj/item/stack/sheet/cardboard,/obj/item/radio/off,/obj/effect/spawner/lootdrop/maintenance,/obj/structure/cable/yellow{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) "dgH" = (/obj/structure/closet/l3closet,/obj/effect/decal/warning_stripes/southeast,/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/virology) "dgI" = (/obj/machinery/light/small,/turf/simulated/floor/plating,/area/maintenance/starboard) @@ -8469,7 +8469,6 @@ "dgS" = (/turf/simulated/wall/r_wall/coated,/area/toxins/mixing{name = "\improper Toxins Lab"}) "dgT" = (/obj/machinery/atmospherics/pipe/simple/visible{dir = 4},/turf/simulated/wall/r_wall/coated,/area/toxins/mixing{name = "\improper Toxins Lab"}) "dgU" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/wall/r_wall/coated,/area/toxins/server{name = "\improper Research Division Server Room"}) -"dgV" = (/obj/structure/rack,/obj/item/tank/emergency_oxygen/double,/obj/item/tank/jetpack/oxygen/captain,/obj/item/clothing/suit/space/captain,/obj/item/clothing/mask/gas,/obj/structure/window/reinforced{dir = 1; pixel_y = 2},/obj/item/crowbar/red,/obj/item/clothing/head/helmet/space/capspace,/turf/simulated/floor/wood,/area/crew_quarters/captain{name = "\improper Captain's Quarters"}) "dgW" = (/obj/machinery/computer/camera_advanced/xenobio,/turf/simulated/floor/plasteel{dir = 2; icon_state = "whitepurplecorner"},/area/toxins/xenobiology{name = "\improper Secure Lab"}) "dgY" = (/obj/structure/table,/obj/machinery/recharger{active_power_usage = 0; idle_power_usage = 0; use_power = 0},/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/shuttle/escape) "dgZ" = (/obj/structure/table,/obj/item/storage/box/handcuffs,/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/shuttle/escape) @@ -8555,33 +8554,33 @@ 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 aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaloalpakIammaoYajyaltajBajEalvalwajBakyalLakyakyabqabqaaaaaaaaaaaaaaaabqaaaabqabqamxaoMaoWanSaplamYapmatragBapoappapoagBapqapsaprapiaoqapvapuaovamOaptapwatCatDatEapCatGapyapzaohapGapFalqalqalqalqalqalqapIaokapNapLarfaqOakhamaambamccYbamdameamfamgamhaeNairairairairairaeNamiamjaeNaaaabqaaaabqaaaamkamkamkamkamkamkamkabqabqabqaeeabqabqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaehauraeGaeGaeGauoaehaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa @@ -8600,7 +8599,7 @@ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabqabqabqabqabqarAarAarAarAarAarAarAaCnarAabqabqabqabqaAAaoXatkarIalLaaaaCoaCpaCqaCpaCoayKayKayKaCsaCsaCsaCsaCtaCsaCsaCuaCuaCuaCuazRaCuaCwajgabqaBbaCxaCyaCzaDtaCBaBbaaaayMaCCaCCaDuayMaaaaaaakDayLaCGazwatJayLaCIazwakDayLaCJazwakDaCKalMaCLakDamEazzaANamEamEaCOaCOaCPaCQaCRaCOaCOaCSakDakDakDakDakDayGcccaQdaCUaQvavravravravravraCWaCXaCYazlazmavvavvavvaoGaCZasIarrasJasIaDadgIaxhaxhaxhaxhaxhaEzaDsbsFaDwaEnaEdaEnaESaDiaDiaDjaWzaEWaDfaFaaDfaFkaWzaDjaDiaFmaDnaCgabqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaarBabqabqabqarAarAarAarAataarAarAarAaDparAarAarAarAabqaaaabqalLcdnatkapdapfaaaaASaDqaDraDqaASayKaEsaEBaCsaFEaDvaFFaDxaDyaCsaDzaDAaDBaCEaCNaCuaCwajgaaaaBbaDEaDFaDGaDHaDIaBbaaaaxEaDJaCCaucayMaAfaAfamxaDMaDNaDOakDaDPaDNaDOakDaDQaDNaDOakDaDRaDSaDTakDaDUaDVaDWaDXaDYaCOaDZaEaaEbaEcaFHaEeaCSaEfaEgaEgaEgaEgaDdcccaRtaEkaRyaBIaEmaFKaEmavvaEoaEpaEqaEraEDaEuaEuaEvaBWaEwaxhaxhaxhaxhaxhaxhaxhaEAaEAaFMaGbaFNaEEaGCaGeaCgaCgaCgabqabqaDiaFSaEFaDiaDiaDiaDiaDiaEGaFSaDiaDCaGTaCgaCgaDoabqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabqarAarAarAarAarAarAarAabqarAabqabqarAarAabqabqapfapfauyatkapfapfaaaaCobxFaDqaDqaEIaEJaEKaEKaELaEMaENaEOaEPaEQaFOaFQaETbnWbkXaHxaCubMCajgaaaaBbaEXaEYaEZaHKaFbaBbaaaayMaFcaCCaCCaFdaFeaFfamxaFgaDNaFhakDaFgaDNaFiakDaFgaDNaFjakDaHLaFlaHNakDaFnaFoaFpaFqaFraCOaFsaFtaFuaFvaFwaFxaCSayGalWcajalWaFTalWaBIaTeaFDaThaBIaHVaFGaFGaHZaFIaFJaIcavvavvavvavvavvaoGaFLaxhaHHaGXaIzaIuaISaFRaGcaFWaFWaFWaFWaFUaIiaGdaHiaFYaCgaFZabqaaaabqaaaaaaaaaabqabqaaaaaaabqaaaaWAaEiaGTaCgaDoabqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabqaaaaaaaaaarAarAarAarAarAabqabqabqarAarAarAabeaaaabqabqabqapfaAgaoXaoXaECalLaaaaaaaASaDraDraDraASayKaGYaGZaIyaEMaEKaGfaGgaGhaCsaGicbmaGkaEHaGmaCubMCajgabqaBbaGnaGoaGpaGqbnvaBbaaaayMaGsaGsaGsayMaAfauFamxaAEaCFaCramxaAEaCFaCramxaAEaCFaCramxaGxaCHaGzamxamxazzaGAamxaGBaCOaIGaGDaIRbyDaGGaGHaCSayGajgajgajgaFyaWvaBIaGKaGLaBIaBIaGMaGNaGOaGPaGQaGRaGSazlaITaGUaypavvaGVaGWaxhaIVaHaaHgaHgaIvaCMaDsaHcbCjbALbALbALaJbaIWaJoaOaaDLarAaJxaJtaJtaJJaJtaJtaJJaJtaJtaJJaJtaJtaKaaWAaKpaCgaDoabqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabqaaaaaaaaaarAarAarAarAarAabqabqabqarAarAarAabeaaaabqabqabqapfaAgaoXaoXaECalLaaaaaaaASaDraDraDraASayKaGYaGZaIyaEMaEKaGfaGgaGhaCsaGicbmaGkaEHaGmaCubMCajgabqaBbaGnaGoaGpaGqbykaBbaaaayMaGsaGsaGsayMaAfauFamxaAEaCFaCramxaAEaCFaCramxaAEaCFaCramxaGxaCHaGzamxamxazzaGAamxaGBaCOaIGaGDaIRbyDaGGaGHaCSayGajgajgajgaFyaWvaBIaGKaGLaBIaBIaGMaGNaGOaGPaGQaGRaGSazlaITaGUaypavvaGVaGWaxhaIVaHaaHgaHgaIvaCMaDsaHcbCjbALbALbALaJbaIWaJoaOaaDLarAaJxaJtaJtaJJaJtaJtaJJaJtaJtaJJaJtaJtaKaaWAaKpaCgaDoabqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabqabqabqabqabqabqabqabqabqabqabqabqabqabqaHkaHlaHkabfaaaabqaaaabqapfaHmaHnanEatkapfapfaaaaCoaHoaHpaHqaCoayKayKayKaCsaHraEKaHsaGgaHtaCsaHuccwcjvciyaHyaCuaCwajgaaaaBbaHzaHAaHBaHCaBbaBbaaaaHDaHEaHEaHEaHFaHGaKraHGaHIaHJaHIaKxaHIaHJaHIaKDaHIaHJaHMaKLaHOaHPaHQaFCaHSaHTaHUamxazeaCSaKNaHWbHcaKSbIbaIaaCSayGaBIaKWaIdaHdaGJaGJaHeaIhaLcaIjaIkaIlaImaInaIoaIpayeaIqaIraIsaItavvasJaGWaxhaJIaIAaIwaIxaIDaJRaIEaIBaMXaIFaIFaIFaLwaLnaLEaOaaDLaMIaLNarAarAaPyarAarAaPyarAarAaPyarAarAaLNaWAaLOaCgaDoabqaaaaaaaaaaaaaaaaaaaaDaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabqaaaabqaaaaaaabqabqaaaaHkaJKaHkabqabqabqabqabqapfauJcgocgoaHXaIJapfaaaaIKaARaILaARaIMabqabqabqayKaINaIOaIPaIQaMbaCsaJSaMqclWcliaMzaCuaCwajgaaaabqaaaaGaaIYaGuaaaabqaaaaHGaAfaAfaAfaHGaHGaJaaMGaJcaJdaJeaJfaJgaJhaJhaJiaJhaJjaJgaJkaJlaJmaJnaERaJpaJqaJramxazeaCSaCSaJsaMJaCSbNVaCSaCScmUaBIaBIaBIaJvaJwaMKaIeaJzaJAaJBaJCaJDaJEaJFaJFaJGaJHavvavvavvavvavvaubaGWaxhaJTaJLaJOaJMaJQaGvaKTaJPaLsaJUaJZaJVaMUaMQaLEaOaaDLaDLaLNarAaJWaaaaaaaaaaaaaJWaaaaaaaJWarAaLNaIfaKpaCgaNdabqabqabqabqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabqaaaabqaaaaaaaaaabqaaaaHkaHlaHkaHkaGwaGwaGwaHkaHkaHkaHkaHkapdatkapfaaaaaaaaaaaaaaaaaaaaaaaaabqayKaNgbOgaKdaKeaKfaCsaLoaKhaCuaCuaCuaCuaKiajgaKjaGyaHjaHbaKgaHRaIZaIXaKjaHGaNyaKsaKsaKtaKuaKvaKwaNDaKyaKzbPXaNJaTiaNLaKEaKCaKFaKGaKHaKIaKJaKKaJNaObaOiaOhamxazeaKPaCSaKQaKRaCSaLMaFTcajcmUaBIaOwaKXaKYaKZaBIaLaaLbaONaBIaLdaLeaLfaLgaLfaLhaLiaLjaLkaLlaLmavvasJaGWaxhaLqaLpaLuaLraLRaFRaOXaLtaLsaLUaCgaCgaPaaNdaCgaDLaDLaDLaLNarAaaaaaaaaaaaaaaaaLxaaaaaaaaaaTMaPgaIfaKpaCgaDoabqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa @@ -8608,22 +8607,22 @@ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabqabqaaaaaaaaaaaaaaaaHkaMLaMLaMLaLBaLBaLBaLBaLBaLBaMLaMLaMMaHkaHvalLaaaaMNaMOaMOaMOaMOaMOaMNabqabqaKlavKaMVaMSaMTaMYaNbaMWaMZaNYaNcaOxaOfaNXaNaaRBaNeaNfaRGaNhaNiaNjaNkaNlcDtaRNbTqaKmaaaaaaaaaabqaaaaaaaaaabqaaaaaaaaaaKoaNraNsaNtaMkaNuaNvaNwaNxaRSaNzaNAaNBaNCaMkaSDaRWaNFaNGaJXaMnaAVaBIaSJaNKaJwaPSaBIaTgaBIaNMaBIaNNaNOaNPaNQaNQaNQaNQaNQaNQaNQaNQaNQbuCaNRaxhaNSaNTaNUaNVaCgaPKaIAaMFaOvaOgaPLaTlaTJaOcaOdaOeaTKaDLaLNarAaJWabqabqaOmaPdaOqabqaOjaaaarAaLNaWAaTOaCgaDoabqabqaaaaaaaaaaaaaaaaaaaaaaaaabqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabdaaaaUUaUUaUUaUUaUUaaaabdaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaDaaaaaaaaaaaaaaaaaaabqaaaaaaaaaaaaaaaaaaaHkaOkaLBaLBaLBaLBaLBaLBaLBaLBaMLaMLaMLaOlaPeapfaaaaMNaOnaMOaMOaMOaMOaMNaTUaKlaKlawbaxXaOraOraOsaOtaOuaOWaPMaPNapfaOyapfapfapfapfaOzaOAavxaOCaKnavxaOAaOAaOAaOAaOFaaaaaaaOGaOGaOGaOGaOGaOGaOGaaaaaaaMfaOHaOIaOJaOKaOLaNAaOMaUaaOOavBaOQaORaOSaMkaOTaOUaOVaNHaKVaMnbViaBIaBIaBIaOZaOZaBIaBIaBIaBIaBIbVmbWpbVoaNQaUfaPqaPhaPIaPzaPiaPjaNQaPkaGWaxhaNTaNTaPlaOdbXuaHaaPnaPoaPpaUhaCgaUFaPsaPtaPuaPvaRfaUKaUMarAaaaaaaabqaRhcspaSkabqaaaaaaaTMaPgaIfaLOaCgaDoabqaaaaaaaaaaaaaaaaaaaaaaaaabqabqabqaaaaaaaaaaaaaaaabdabdabdabdabdabdabdaXHaXIaWBaXJaWBaXKaXOabdabdabdabdabdabdabdaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabqaaaaaaaaaaaaaaaabqaHkaPAaLBaLBaLBaLBaPBaLBaLBaLBaLBaMLaPDaHkaECapfaaaaMNaMOaMOaMOaMOaMOayjaPfaOpaPfaPEaSmaPJaPQaPPaQFaQEaPOaQGaQHaPRbwqaPTaPTaPTaPTaPVaOAaYOaPXaPYaPZaQaaQbaQcbeBaQeaQfaQgaQgaQhaUPaQjaQkaQlaQmaQmaQnaQoaQpaKGaNtaMkaQqaNAaQraNAaQsaNAaQtaNAaNAaMkaQubeLaOVaQwaQxaMnbXQaQzaQAaQBaQCaQDaRnaQIaVpaVmaVraQJaQKaQLaNQaQMaQNaQNaQNaQOaQPaQQaNQawvaGWaxhaQSaQSaQTaOdbXuaJLaQUaMFaSEaSnaPLbELaVsaRbaRcaRdaSoaDLaLNarAaaaaReabqaSpaTIaTGabqabqaJWarAaLNaWAaKpaCgaDoabqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabdaaaaUUaUUaUUaUUaUVaXNbbXbbWbbYbbWbbZbgUaUVaUUaUUaUUaUUaaaabdaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaGwaLBaLBaLBaLBaLBaLBaLBaLBaLBaLBaRiaHkaHkatkapfabqaMNaMOaMOaMOaMOaMOaRkaRlaRmaRlaSbaSmaRoaRoaRpaRoaOuaRqaSjaSlapfapfapfapfapfapfazSaOAbgkaRuaRvaRwaRxaRxaRxbgyaOFaaaaOGaVwaRAaRAaRAaRAaRAaVAaOGaaaaMfaRCaMiaMjaMkaRDaREaRFaNAaSyaNAaRHaRIaNAaRJaRKaRLaRMaVBaROaMnbYFaQVaQVaQVaQVaQWaRTaRTaRUaRUaRVaVHaRXaRYaRZaSaaSBaSAaSBaScaSdaSeaNQaSfaGWaxhaQSaSgaShaSiaCgaSCaIAaMFaLsaVNaCgaWbaWgaTRaTRaTRaTVaDLaLNarAaaaaaaabqabqabqabqabqaaaaaaarAaLNaWAaKpaCgaDoabqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabdaXHbcbbcabcabcabcabcabzhbzhbdJbzhbzhbcabcabcabcabcaaXKaXOabdaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaGwaLBaLBaLBaLBaLBaLBaLBaLBaLBaLBaRiaHkaHkatkapfabqaMNaMOaMOaMOaMOaMOaRkaPHaRmaPHaSbaSmaRoaRoaRpaRoaOuaRqaSjaSlapfapfapfapfapfapfazSaOAbgkaRuaRvaRwaRxaRxaRxbgyaOFaaaaOGaVwaRAaRAaRAaRAaRAaVAaOGaaaaMfaRCaMiaMjaMkaRDaREaRFaNAaSyaNAaRHaRIaNAaRJaRKaRLaRMaVBaROaMnbYFaQVaQVaQVaQVaQWaRTaRTaRUaRUaRVaVHaRXaRYaRZaSaaSBaSAaSBaScaSdaSeaNQaSfaGWaxhaQSaSgaShaSiaCgaSCaIAaMFaLsaVNaCgaWbaWgaTRaTRaTRaTVaDLaLNarAaaaaaaabqabqabqabqabqaaaaaaarAaLNaWAaKpaCgaDoabqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabdaXHbcbbcabcabcabcabcabzhbzhbdJbzhbzhbcabcabcabcabcaaXKaXOabdaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaSqaSraSsaaaaGwaLBaLBaLBaLBaLBaLBaStaSuaSuaSvaSwaHkaqBatkapfabqaMNaMOaMOaMOaMOaSxaMNaTUaKlaKlaSFaSmaSzaSNaSGaUcaTLaTEaUdaUtaLKaSIaWhaSKbZaapfaSMaOAaUwaRuaSOaSPaSQaSQaSRaSSaOFaaaaMgaSUaRAaSVaSWaSXaRAaSYaMgaaaaMfaMhaMiaMjaMkaSZaTaaTbaTcaTdaTcbjbaTfaWiaMkaWkaUOaTjaTkaWlaMnaTmaToaToaTpaTqaTraTsaTtaTuaTvaTwaTxaTyaTzaTAaTBaTCaTDaQXaTFaUbaTHaNQasIaGWaxhaCgaCgaCgaCgaCgaFRaWnaQYaURaWpaCgaCgaPaaNdaCgaDLaDLaDLaLNarAaaaaaaaaaabqaaaaaaaaaaaaaaaaTMaPgaIfaKpaCgaDoabqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabdaXHbdMbdKbdNbdNbdNbdNbdNbdNbdObdNbdNbdNbdNbdNbdNbdPbdMaXOabdaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacGaTNaWraTNacJaHkaLBaLBaLBaLBaLBaLBaLBaLBaLBaTPaTQaHkauAaWsapfaaaaMNaMOaMOaMOaMOaMOaTSaRlaTTaRlaSbaSmaRoaRoaRpaRoaOuaOWaVaaVdaTWaTXaTYaTZaWtapfaVkaUTaUQaRuaRuaUebmJaRuaUgaWuaOFaaaaMPaUjaUkaUlaUmaUlaUkaUnaNpaaaaMfaMhaUpaUqaMkaNqaNqaNqaNqaUsaNqaNqaOoaNqaMkaMncjdaUvconaMnaMnaWyaToaTpaTqaUyaUzaTnaToaTqaTqaTpaUAaUBaUCaUDaUEaSBaSAaSBaScaUGaUHaNQaUIaGWaxhaWNaULaWXaSTaVgaVfaIAaMFaLsaVhaJZaViaXsaXoaLEaOaaDLaDLaLNarAaJWaaaaaaaJWaaaaaaaaaaaaaJWarAaLNaIfaKpaCgaNdabqabqabqabqabqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabdaXHbdMbeWbeXbeXbeXbeXbeXbeXbdObeXbeXbeXbeXbeXbeXbeYbdMaXOabdaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaWDaTNaUWaTNaWDaHkaPAaMLaLBaLBaLBaLBaLBaLBaLBaUYaUZaHkaHvapdapfaaaaMNaMOaMOaMOaMOaMOaPHaVbaRzaVbaVeaSmaRoaXwaWSaYiaYhaVjaOuaVvaVlaXtaVnaVoaXBapfaVqaOAaYjaRuaRubmKaVtaVuaUgaRRaOFaaaaOGaXEaVxaUkaVyaRAaVzaXGaOGaaaaMfaXRaOIaOJaVCaVDaVEaVEaVEaNCaVEaVEaVFaVGaMkaXZaVIaVJaVKaVLcaHaVKcbeaVOaVOaVPaVQaVRaVSaVTaVUaVVaVSaVWaVXaNQaVYaVZaWaaWaaWcaWdaWeaNQasJaWfaxhaYEaYDaYGaUKaYQaYNaWmaYSaZcaYWaZeaZdaZhaZgaLEbMOaDLbeZaLNarAarAddZarAarAddZarAarAddZarAarAaLNaWAaLOaCgaDoabqaaaaaaaaaaaaaaaaaaaaaaaaabqabqaaaaaaaaaaaaaaaabdabdaXHbdMbeWbeXbeXbeXbeXaXLaXLaXMaXLaXLbeXbeXbeXbeXbeYbdMaXOabdabdaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacGaTNaWraTNacJaHkaLBaLBaLBaLBaLBaLBaLBaLBaLBaTPaTQaHkauAaWsapfaaaaMNaMOaMOaMOaMOaMOaTSaPHaTTaPHaSbaSmaRoaRoaRpaRoaOuaOWaVaaVdaTWaTXaTYaTZaWtapfaVkaUTaUQaRuaRuaUebmJaRuaUgaWuaOFaaaaMPaUjaUkaUlaUmaUlaUkaUnaNpaaaaMfaMhaUpaUqaMkaNqaNqaNqaNqaUsaNqaNqaOoaNqaMkaMncjdaUvconaMnaMnaWyaToaTpaTqaUyaUzaTnaToaTqaTqaTpaUAaUBaUCaUDaUEaSBaSAaSBaScaUGaUHaNQaUIaGWaxhaWNaULaWXaSTaVgaVfaIAaMFaLsaVhaJZaViaXsaXoaLEaOaaDLaDLaLNarAaJWaaaaaaaJWaaaaaaaaaaaaaJWarAaLNaIfaKpaCgaNdabqabqabqabqabqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabdaXHbdMbeWbeXbeXbeXbeXbeXbeXbdObeXbeXbeXbeXbeXbeXbeYbdMaXOabdaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaWDaTNaUWaTNaWDaHkaPAaMLaLBaLBaLBaLBaLBaLBaLBaUYaUZaHkaHvapdapfaaaaMNaMOaMOaMOaMOaMOaRlaVbaRzaVbaVeaSmaRoaXwaWSaYiaYhaVjaOuaVvaVlaXtaVnaVoaXBapfaVqaOAaYjaRuaRubmKaVtaVuaUgaRRaOFaaaaOGaXEaVxaUkaVyaRAaVzaXGaOGaaaaMfaXRaOIaOJaVCaVDaVEaVEaVEaNCaVEaVEaVFaVGaMkaXZaVIaVJaVKaVLcaHaVKcbeaVOaVOaVPaVQaVRaVSaVTaVUaVVaVSaVWaVXaNQaVYaVZaWaaWaaWcaWdaWeaNQasJaWfaxhaYEaYDaYGaUKaYQaYNaWmaYSaZcaYWaZeaZdaZhaZgaLEbMOaDLbeZaLNarAarAddZarAarAddZarAarAddZarAarAaLNaWAaLOaCgaDoabqaaaaaaaaaaaaaaaaaaaaaaaaabqabqaaaaaaaaaaaaaaaabdabdaXHbdMbeWbeXbeXbeXbeXaXLaXLaXMaXLaXLbeXbeXbeXbeXbeYbdMaXOabdabdaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabqabqaWDbkjaWFblyaWDaHkaLBaMLaWHaWIaWJaLBaLBaLBaLBaUYaWKaHkaHvapdalLaaaaMNaOnaMOaMOaMOaMOaMNaTUaKlaKlaWLaSmaRoaRoaRpaRoaOuaVjaWMaXnaVlaWOaWPaWQaWRapfazSaOAbanaWTaWTaWUaWVaRuaUgaWWaOFabqaOGaOGaOGaZxaWYaWZaOGaOGaOGabqaMfaOHaXaaMjaXbaXcaVEaVEaVEaXdaVEaVEaXeaNCaXbaQCaXfaXgaXhaToayuaToaTnaTpaToaXjaToaXkaTpaTqaToaTqaTpaXlaXmaNQaZAaXraXpaXvaXuaPiaQQaNQaZBaGWaxhaZIaXxaXFaZMaXQaXyaXzaXAcczccyccHccHbaoaZOaLEaOaaDLarAdeaaJtaJtbapaJtaJtbapaJtaJtbapaJtaJtdecaWAaKpaCgaDoabqaaaaaaaaaaaaaaaaaaaaaaaaaaaabqaaaaaaaaaaaaaaaabdaaabgMbdMbeWbeXbeXaXLaXLaXLaXLbfabpvaXLaXLaXLbeXbeXbeYbdMbMnaaaabdaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabqaaaaWDayCaYaaYgaXSaHkaXTaMLaXUaXVaXWaMLaMLaMLaXXaXYbavaHkaYmaYbapfabqaYcaYdaMOaMOaMOaYeaYfabqabqaKlaWLaYoaPJaPQbarbaTbasaYkaYlbaFaYnaYnaYnaYnaYnapfaYXaYpaYqaYraYraYsaYtaYuaYvaYwaUoaaaaaaaaaaOGaOGaYyaOGaOGaaaaaaaaaaKoaNraYzaMjaYAaYBaYCbaObaLaNCaNCaYFbaSaNCaYAaQCaYHaYIaYJaYKcdPaYKaYMbbebmLaYPaYKaYKaYKaYKaYKaYKbbuaYRbbvaNQaNQaNQaNQaVcaNQaNQaNQaNQaoGaGWaxhaYVaYUaYUaSTaYZaYYaZwaZfbawbbwbaAaQUbbCbaBaHiccuaCgaaaabqaaaabqaaaaaaaaaaaaabqaaaaaaabqabqaWAbbIaESaCgaDoabqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabdclHbcbbfcbfbbgNaXLaXLbdIbdIbdIbgPbbJbdIbdIaXLaXLbgNbgQbgSbgRaWCabdaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabqaaaaWDaWDaZiaZjaWDaWDaWDaZkaWDaWDaZlaZmaWDaWDaWDaZnaWDaWDaWqapfapfabqaZpaZqaZraZraZraZqaZsabqabqaZtaZuaSmaRoaRoaRpaRoaOuaZvaOubaCaYnbbPaZyaZzbbTapfazSaOAbbVaZCaZDaZEaZFaZGaZHbcdaOFaZJaUraZJaZLbclaZNbcoaZLaZJaUraZJaMfaZPaZQaZRaZSaMkaMkaMkaMkaZTaZUaZVaNCaZWaMkaQCaZXaTraZYaZZaZZaZZaZZaoGaoGaoGbaababbacbadbaebafaZZbagbagaoGbahazyazybaDazyazyazybakazybalaxhbambambambambbMbaUbcrbbObctbcqbatbaEbcGbcCaCgaCgaCgabqabqaDibaGbaxaDiaDiaDiaDiaDiaDibaGaDibdpaESaCgaCgaDoabqaaaaaaaaaaaaaaaaaaaaaaaaabqaaaaaaaaaaaaaaaaaaabdaXHbgTbicbeXbeXaXLbdIbidbifbdubihbdwbiibidbdIaXLbeXbeXbijbgTaXOabdaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabqaaaaaaaUNbaHbaJbaIbdBbaKbaJbaXbbFbbdbbFbbSbdHbbFbcfbcebaMaYTbdQapfaaaaaabaPbaQbaQbaQbaRaaaabqaZtbdTaWLaSmaRoaRobcubdCaOubaVbaWbcgbaYbaZbbabbbbbcapfazSaOAaOAaOAavxavxayPaOFbdVbdVaOFbbgbbhbbiaZLbbjbbkbblaZLbbmbbnbbobbpbbqbbrbbsbbtbeHbeDbeRaMkaMkaYAaLLaYAaMkaMkayubbybbzayubbAbbBbeSbbDbbEbcjaoGaoGaoGaoGbbGaoGaoGaoGaoGaoGaoGaGWasIasJbbHbbHbbHbbHbbHbbHbbHbambfrbfdbbKbamazobdDbambbNbfeaFRaFRbckbcpbftaEnbfzaEnaGTaDiaDibbUaDiaCDaDfbfBaDfaDmaDibbUaDiaFmaDnaCgabqabqabqabqabqabqabqabqabqabqabqabqabqabqabqabqabqabqabdaXHbdMbeWbeXaXLaXLbdIbfCbilbdLbnQbimbfNbfHbdIaXLaXLbeXbeYbdMaXOabdaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabqabqaaaaUNbcydgxdgxbgadgxdgxdgxbcRbchbcibcSbcTbcTbcTbcUbcmbcnbghapfaaaaaaabqabqaaaaaaabqabqabqaZtbcVbffbdmbcsaRobfgbfxbcvbcwbcxbgzbczbcAceSbgDbcDapfazBbcFbdqbcHbcIbcJbcKbcLbcMbcNbcObcPbcQbcPbdFbgFbdSbgHbdUbcPbcWbcXbcXbcYbcZbdabcXbcXbdbbdcbdcbdcbddbdebdcbdcbdfbdcbdgbdhbdcbdcbdcbdibdjaoGbdkbdobdWbdnbdobdYbdobecbdobdrazybakbalaubasJbbHbdsbdtbgObdvbhdbdxbambdybdzbdzbdAbdzbhfbambfybctbhobdEbdEbdEbdEbdEaTRaCgbdGaDfaDfbhAaDfaFkaCgaCgaCgbdGaDfbhAaDfaFkaCgabqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabdaXHbdMbeWbeXaXLaXLbdIbjQbilbdIbjRbdIbhHbjSbdIbdIaXLbeXbeYbdMaXOabdaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabqabqaUNaUNbhRaUNaWDaUNbdRaUNbcydgxbeObedaUNbdRaUNbePbhVbeQbdXapfapfapfapfalLalLalLapfapfapfaZtbfhbdZbdZbdZbdZbeaaRobebbfqbfpbeeaYnaYnaYnaYnaWjapfapfbegapfapfbehbeibejbekbelbembenbekbelbeobepbembeqbekbekbekbelbekbekberbesbekbekbekbekbekbekbekbetbeubekbekbenbevbewbekbekbekbekbexbeybezbezbezbeAbezbezbezaoGbmMaoGaGWaoGaoGbeCbeCbeCbeCbiabeEbeEbeFbeGbiebambeIbeJbeKbmNbeMbeNbambigbikbfsbdEbizbiJbiAbdEbeUaCgaCgaCgaCgaCgaCgaCgaCgazMaCgaCgaCgaCgaCgaNdaCgabqabfabqabqabqabqabqabqabqabqabqabqabqabqabqabqabqabqabqabdaXHbdMbeWbeXaXLaXLbjWbjVbjYbjXblFblDbiUblGblJbdIaXLbeXbeYbdMaXOabdaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabqaaaaUNabqaaaabqaaaaUNaYgaUNbhbbhbbhWbhjaUNaYgaUNaUNaWDbfubfibfjbgAcEgcEgavUbflavUavUcHrbgBbfobgKbgCbgCbgVbjdbiIbjubfvboMbhXbiPbfwbjfceXbfwbjJbjgbfDbfEceYbfGbjlbfIbfJbfKbfKbfLbfMbjAbfObfPbfQbfRbfSbfSbfSbfSbfSbfSbfSbfTbfUbfVbfVbfVbfVbfVbfVbfVbfVbfWbfXbfYbfZbfVbjDbfWbfVbfVbgbbgcbgdbezbgebgfbggbjFbgibezbgjbksbuCaGWaoGaaabeCbgmbgnbeCbgobgpbgqbgrbgsbgtbambgubgvbgwbgxcfdbjGbambktbkwbkvbdEbjObgEbjPbdEbgGaOdaOdaOdaOdaOdaOdaOdaOdaOdaOdbjTbgLbjTbgLaefaefaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabdabdaXHbdMbeWbeXaXLaXLbdIblKbilbdIblLbdIbhHbjSbdIbdIaXLbeXbeYbdMaXOabdabdabdaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabqaaaaUNabqaaaabqaaaaUNaYgaUNbhbbhbbhWbhjaUNaYgaUNaUNaWDbfubfibfjbgAcEgcEgavUbflavUavUcHrbgBbfobgKbgCbgCbgVbjdbiIbjubfvbfwbhXbiPbfwbjfceXbfwbjJbjgbfDbfEceYbfGbjlbfIbfJbfKbfKbfLbfMbjAbfObfPbfQbfRbfSbfSbfSbfSbfSbfSbfSbfTbfUbfVbfVbfVbfVbfVbfVbfVbfVbfWbfXbfYbfZbfVbjDbfWbfVbfVbgbbgcbgdbezbgebgfbggbjFbgibezbgjbksbuCaGWaoGaaabeCbgmbgnbeCbgobgpbgqbgrbgsbgtbambgubgvbgwbgxcfdbjGbambktbkwbkvbdEbjObgEbjPbdEbgGaOdaOdaOdaOdaOdaOdaOdaOdaOdaOdbjTbgLbjTbgLaefaefaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabdabdaXHbdMbeWbeXaXLaXLbdIblKbilbdIblLbdIbhHbjSbdIbdIaXLbeXbeYbdMaXOabdabdabdaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabqabqabqabqabqabqaaaaUNbdRaUNaUNaUNaUNaUNaUNbdRaUNaaaaWDbkybgWbgXbgXbgXbgXbgXbgXbgXbgXbgYazQbfwbfwaXibkEaXibfwbfwbfwbhcbfwbkxbhebkKbhgbhhbhibkSbhkbhlbhmbhnbfGblIbfIbhpblhbhqbhrbhqbhsbhqbhtbhubhtaYxaYxaYxaYxaYxaYxaYxaYxaYxaYxaYxaYxaYxaYxaYxaYxaYxbhwbhwbhxbhwbhwbhwbhwbhwbrNbhybfIbhzbezblMbhBbhCbhDbhEbezbhFbhGbuCaGWapeaaaaZKbhIbhJbbxbhLbhMbhNbhObhPbhQbambmmbhSbhTbhTbhUbmEbambkTbltbkTbdEbhYbhZbmGbdEaChaCgaCgaCgaCgaCgaCgaCgaCgaCgaDLaFRaFRaTRaFRabqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabqabqabqaaaaaaaaaabdaaabgMbdMbeWbeXaXLaXLbdIbfCbilbdIbdIbdIbhHbfHbdIbdIaXLbeXbeYbdMbMnaUUaaaabdaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabinbiobipbiobiqbiobiobiqbiobipbirbisaWDbkybitbiubivbiwbixbiybmSbmPbgXbgYbiCbiDbiEbiFbiGbiFbiGbiHbiGbmdbfwbnqbiKbiLbiMbiNbazblubiQbiRbiSbiTaAMbiVbiWbiXbhqbiYbiZbjabhKbhqbjcbmObjeabqabqabqabqabqabqabqabqabqabqabqabqabqabqabqabqabqbhwbykbnAbjhbjibjjbjkbnEbhwbjmbjnbjobezbjpbjqbjrbjsbjtbezaoGaoGaoGbmRaoGaaabeCbjvbjwbeCbjxbjybjzbnJbjBbjCbambnMbnLbombobbjHbjIbamaFRbmhaFRbdEbjKbjLbjMbdEdeWavPdfadfcdfbdfdasXdfeanqanqaaaaaaaFRbgLaFRabqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabqabqabqaUUaUUbooaXNbmHblNbfbbgNaXLaXLbdIbidbilbmTboHbowboJbidbdIbdIaXLbgNbgQbnNbnPbnOaWCabdaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabinbiobiobjZbkabkbbkcbkdbkebkfbkgbkhbkbbkiblVaUNbkybgWbbLbklbkmbknbkobkpbkqbkrcIibocbkubpmbpmbppbpobpybfwbfwbfwbfwbkzbkAbkBbkCbkDaXibmibhkbhlbkFbkGbkHbkIbfIbkJbhqboNbkLbkMbkNbkObkPbkQbccabqabqaBVaCVaBYaDKbkWaEhaCVaDKbkWaEhaBYaBYaEtabqabqbhwbmobladgFblcblbbldblebhwblfbfIblgbwlbezbkkaODbkRbezbezbllblmaoGblnaoGblobeCbeCbeCbeCbbHbbHbbHblpblqbbHbambambambambamaGtaFPbambmubofbmubdEbkUblwbkVbdEdffdfhdfgdfgdfjdfkdfkdfkdflabqaaaaaaaaaaWwaaaabqaaaaaaaaaaaaaaaaaDaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaWwbnRblEbnTbnSbnUbicbeXbeXaXLaXLbdIbogbptbdLbqZbpubphbpqbdIbdIaXLbeXbeXbrcbijbrfaXOabdaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabinbiobipbiobiqbiobiobiqbiobipbirbisaWDbkybitbiubivbiwbixbiybmSbmPbgXbgYbiCbiDbiEbiFbiGbiFbiGbiHbiGbmdbfwbnqbiKbiLbiMbiNbazblubiQbiRbiSbiTaAMbiVbiWbiXbhqbiYbiZbjabhKbhqbjcbmObjeabqabqabqabqabqabqabqabqabqabqabqabqabqabqabqabqabqbhwbnvbnAbjhbjibjjbjkbnEbhwbjmbjnbjobezbjpbjqbjrbjsbjtbezaoGaoGaoGbmRaoGaaabeCbjvbjwbeCbjxbjybjzbnJbjBbjCbambnMbnLbombobbjHbjIbamaFRbmhaFRbdEbjKbjLbjMbdEdeWavPdfadfcdfbdfdasXdfeanqanqaaaaaaaFRbgLaFRabqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabqabqabqaUUaUUbooaXNbmHblNbfbbgNaXLaXLbdIbidbilbmTboHbowboJbidbdIbdIaXLbgNbgQbnNbnPbnOaWCabdaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabinbiobiobjZbkabkbbkcbkdbkebkfbkgbkhbkbbkiblVaUNbkybgWbbLbklbkmbknbkobkpbkqbkrcIibocbkubpmbpmbppbpobpybfwbfwbfwbfwbkzbkAbkBbkCbkDaXibmibhkbhlbkFbkGbkHbkIbfIbkJbhqboNbkLbkMbkNbkObkPbkQbccabqabqaBVaCVaBYaDKbkWaEhaCVaDKbkWaEhaBYaBYaEtabqabqbhwbmoblablbblcblbbldblebhwblfbfIblgbwlbezbkkaODbkRbezbezbllblmaoGblnaoGblobeCbeCbeCbeCbbHbbHbbHblpblqbbHbambambambambamaGtaFPbambmubofbmubdEbkUblwbkVbdEdffdfhdfgdfgdfjdfkdfkdfkdflabqaaaaaaaaaaWwaaaabqaaaaaaaaaaaaaaaaaDaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaWwbnRblEbnTbnSbnUbicbeXbeXaXLaXLbdIbogbptbdLbqZbpubphbpqbdIbdIaXLbeXbeXbrcbijbrfaXOabdaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaablOblPblQblRbkbblSblTblSblTblSblTblSbkbblUbnFaUNbkyblWbgXblXblYcfgbmabmbbmcbgXbqkbmebmfbmgbpsbpDbmjbmkbmlbpFbmnbpEbmpbmqbmrbmsbmtbqWbmvbmwbmxbmybmzbmAbiVbfIbpIbhqbmQbmCbmDbpQbhqbmFbpUbjeabqabqaIbboBbopbpVbpYbqfbqdbqhbqgcfhbqjbqlaIHabqabqbhwbmUbmVbmWbmXbmYbmZbnabhwbhybnbbncbndbnebnfbnebngbnhbnibnebnebnebnjbnebnkbnlbnmbnnbnebnebnobnkbngbnjbnpbqBbnobnrbnsbntbrPbrbbnwbnxbnybnzbrRbnBbnCbnDblidfmdftdfqdfxdfudfydeZaoNdflabqaaaaaaaaaaWwaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabqaaaaaaaaaaWwbnRblEbnKbrgbrhbeWbrjbeXaXLaXLbdIbqXbrmbifbrIbrnbrQbrabdIbdIaXLbeXbeXbeXbeYbrfaXOabdaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaDaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabiqbkbbkbbipbkbblSblTblSbnVblSblTblSbkbblUbnFaUNbrUbnXbnYbnZboablkbrlblkbiubiubodboebhcbfwbrHbrKbohboibojbokbolbfwbskbonbojbkCbssbfwbrXboqborbosbotaAMbkIbfIbkJbhqboubovbsEboxbhqboybozbjebkWaJYbkWbsbboCboDboEboDboFboDboEboDboGbscbkWaJYbkWbhwboIboIboIbsHboKboLdgVbhwbsVboOboPboQboRboSboRboTboRboUboRboRboRboVboRboWboXboYboZboRboRbpabpbbpcboVbpdboVbpebpfbpgbntbsYbpibpibpjbpkbpibpidfzdfBdfAbljbsZdfIbtadfKdfJbtcdfLdgKazDabqaaaaaaaaaabqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabqbpraaaaaaaaaabqbsdbsdboobsebsfbeWbsnaXLaXLaXLbsMbdIblHblHbtdbdIbdIbdIbdIbrkaXLaXLaXLbeXbeYbdMaXOabdaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaDaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabiqbkbbkbbipbkbblSblTblSbnVblSblTblSbkbblUbnFaUNbrUbnXbnYbnZboablkbrlblkbiubiubodboebhcbfwbrHbrKbohboibojbokbolbfwbskbonbojbkCbssbfwbrXboqborbosbotaAMbkIbfIbkJbhqboubovbsEboxbhqboybozbjebkWaJYbkWbsbboCboDboEboDboFboDboEboDboGbscbkWaJYbkWbhwboIboIboIbsHboKboLboMbhwbsVboOboPboQboRboSboRboTboRboUboRboRboRboVboRboWboXboYboZboRboRbpabpbbpcboVbpdboVbpebpfbpgbntbsYbpibpibpjbpkbpibpidfzdfBdfAbljbsZdfIbtadfKdfJbtcdfLdgKazDabqaaaaaaaaaabqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabqbpraaaaaaaaaabqbsdbsdboobsebsfbeWbsnaXLaXLaXLbsMbdIblHblHbtdbdIbdIbdIbdIbrkaXLaXLaXLbeXbeYbdMaXOabdaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaablObpwbpxblRbkbblSblTblSblTblSblTblSbkbblUbnFaUNbuxbpzbpAbpBbpCbrVbrVbutbtDbpBbpGbpHbtLbfwbpJbpKbpLbpMbpNbpObpPbfwbtObpRbpSbpTbtRbfwbsibpWbpXbtSbpZbfGbqabjnbqbbqcbqcbqcbqcbqcbhtbtPbqebhtbkWbubbtYbtTboEboEboEboEbqiboEboEboEboEbtZbumbuEbkWbqmbqnbqobqpbqqbqrbqrbqsbhwbqtbqubqvbqwbqxbqybqxbqzbqxbqAbqxbqxbuVbqxbqxbqCbqDbqxbqEbuVbqFbqGbqCbqHbqxbqIbqJbqKbqLbqMblsbqObqPbqQbqRbpnbqSbqSbqTdgMdgLdgOdgNdgPanqanqanqanqanqanqanqanqabqabqabqabqabqabqabqabqabqabqabqabqabqabqabqabqabqabqaaaabqbsPbsRbsQbsSbrdcKIaXNbsfbsTbsUaXLbsWbuWbsXbribvfbvdbtbbvgbvmbrkbtebvobtgbtfaXLbeXbeYbdMaXOabdaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabrobiobiobjZbrpbkbbrqbkbbrrbrsbkbbrtbkbbkibruaUNbkybrvbrwbrxbrybrzbrAbrBbrCbrxbrDbrEbrFbfwbrGaXibuublvbfwbfwbfwbfwbfwaXibrJblxbfwbfwaAMbrLbrMaAMaAMbzObehbfIbrObqcbvpcfjbvqbqcbrSbrTbuBbvnbuwburbrYbrZbsabsabvWbwfbwebvWbvWbsabsabsgbshbvrbkWbhwboIboIboIbsjboIboIboIbhwbvsbfIbslbZiblCbsoblCbsmbspbspbspbspbspbspaoGaoGbsqaoGaoGaoGbsrbmBaoGaoGaoGbstaoGbsubsvbswbbfbsybszbsAbsBbqSbsCbsCbsDbqUbvtbjNbntbvubsGbvvbsIbsJbsJbsKbsLabqaaaaaaabqaaaaaaaaaaaaaaaaaaabqaaaaaaaaaaaaaaaaaaabqaaaaaabuLbudbuMabqbuObuNbuQbuPbuSbuRbuTbBebvwbuUbvxbribuYbuXbvabuZbvcbvbbvebvXbwabvZaXLbvhbvibdMaXOabdaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabrobiobthbiobiqbiobiobiqbiobipbtibtjaWDbuDbtlbtmbfGbtnbtobtpbtobtqbfGbtrbtsbttbtubtvbtwbtxbtybtzbtwbtAbtBbtwbtvbtvbtCbtvbwbbtEbtFbtGbtHbtvbtIbtJbtKbkJaKqbtMbtNbwcbqcbjebjebjebjebkWbwgbtQboEboEboEbtUboEbtVbtWbtXboEboEbwnbuabAkbucbhwbwmbuebufbugbuhboIbuibhwbujbfIbukboAdedbunbuobsmbupbuqbwpbusbxebxHbuvbxIbuHaoGbuybuzbuAbuIcbXaoGarrbvjaoGbwobuFbuGbqNbwHbwHbwHbwJbuJbqSbqSbuKaZobvkbwvbwrbwFbwybwMbwLbwUbwUbwXbwWbwYbwYbwYbxibxlbwYbwYbwYbwYbwYbxibwYbwYbwYbwYbwYbwYbxibwYbxlbxmbxnbxobxobxqbxpbxtbxsbxvbxubxxbxwbxzbxybxBbxAbxDbxCbzebxEbzgbzfbzjbzibzlbzkbznbzmbzpbzoaWCabdaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa @@ -8666,19 +8665,19 @@ 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 +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaupaaaaaaaaaaaaaaaaaaaaacmHaaaaaaaaaaaaabqaaaaaaaupaaacHZcHZcHZcFvcHZcHZcHZaaaabqaaaaaaaaaabqaaaabqabqabqaaabZUcWIchychychychycNZchydefcWUcwncXrcXlcXlcXwcXAcXycXYcImcYocYndfFcIncYIcYycYNcNEcImcMgcMhcgxcmmcIxcNQcOacMkcLodgFcMlcObcNecJpcMocMpcMqdgScKxcfHchuckedgTcYTcKBcOrcOccPmcEKcjnchyceNchycMxbZUabqaaaaaaaaaaaaabqaaaaaaaaaaaaaaaaaaaaaabqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabqabqcALcFNcRGcFNcALabqabqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaarBabearBarBarBaaaaaaaaacmHaaaaaaaaaarBarBarBauparBabqcHZcIRcIScIRcITcIRcHZcHZcFvcHZcFvcHZcHZaaaaaaabqaaaaaacHZcHZcHZcHZcHZbZUcKVbZUcDUcYOcDecRLdfOcRUcRUcRUcRUcRUcRUcImcImcImcImcYWcImcImcImcImbZUcNScgxcmmcIxcNfcOacLocLrcLocNhcPEcNYckzcNjcNkcNlcOkdgUdgUdgUdgUdgUcNocNncNpcQgcNrcEKchycuVchPchybZUbZUbZUabqabqaaaaaaabqaaaaaaaaaaaaaaaaaaaaaabqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabqabqcFNcALcFNabqabqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabqaaaabqaaaaaaaaaarBabqcNtabqarBaaaaaaabqaaaaaaabqaaacHZcJHcJIcJJcJKcJHcGXcOGcJNcJOcJPcOHcHZaaacZmcIacIacIacLRdfRdfQcOIcHZcZvcZqcZwcDUcZIcZycZQcZOcOUdeidafdaddakcRUcNRcmVcmVcmWcQhcjecmYcmYcQicNVcNWcNXcCQcIxcOdcQkcQvcQvcQvcQwcQDcOVcOecOfcOgcOhcOicOjcPicOlcJLcOncOocOpclncQEcOscOtcmYcmYcOucOvcOwcOxbZUbZUbZUaWwaaaabqaaaaaaaaaaaaaaaaaaaaaabqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabqabqabqabqabqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabqaaaaaaaaaarBaaaabqaaaarBaaaaaaabqabqabqabqabqcHZcKMcHjcKOcHucKMcKMcPzcKRcKScKTcPKcHZaaadaodfTcMMcMNcMOdfUcMBdfVcMRdaydaxdaMdaLdaOdaNdaPcYCdaUdaQdbbdaVdbfcRUcOMbZUbZUbZUbZUbZUbZUbZUbZUczIcONcOOcOPcOQcORcOScOTcPRcOXcOWcLrcPoclCcOZcPacPbcPccPdcPecPfcPgcPhcQqcOpclNcPjbZUbZUbZUbZUbZUdenclGcQFclJcQrclJcPUabqabqaaaaaaaaaaaaaaaaaaaaaabqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa @@ -8689,26 +8688,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 @@ -8762,4 +8761,3 @@ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa "} - diff --git a/_maps/map_files/MetaStation/z2.dmm b/_maps/map_files/MetaStation/z2.dmm index 5b657ff7a0a..8b20d888049 100644 --- a/_maps/map_files/MetaStation/z2.dmm +++ b/_maps/map_files/MetaStation/z2.dmm @@ -2,556 +2,501 @@ "ab" = (/turf/space,/area/space) "ac" = (/turf/space/transit/east{dir = 8},/area/space) "ad" = (/turf/space/transit,/area/syndicate_station/transit) -"ae" = (/obj/docking_port/stationary/transit{dir = 4; dwidth = 1; height = 4; id = "pod3_transit"; name = "pod 3 in transit"; width = 3},/turf/space/transit/east{dir = 8},/area/space) -"af" = (/obj/docking_port/stationary/transit{dir = 4; dwidth = 1; height = 4; id = "pod4_transit"; name = "pod 4 in transit"; width = 3},/turf/space/transit/east{dir = 8},/area/space) -"ag" = (/obj/docking_port/stationary/transit{dir = 2; dwidth = 5; height = 14; id = "emergency_transit"; name = "emergency in transit"; width = 25},/turf/space/transit,/area/space) -"ah" = (/obj/docking_port/stationary/transit{dir = 1; dwidth = 1; height = 4; id = "pod1_transit"; name = "pod 1 in transit"; width = 3},/turf/space/transit,/area/space) -"ai" = (/obj/docking_port/stationary/transit{dir = 1; dwidth = 1; height = 4; id = "pod2_transit"; name = "pod 2 in transit"; width = 3},/turf/space/transit,/area/space) -"aj" = (/obj/docking_port/stationary{dir = 1; dwidth = 1; height = 4; id = "pod1_away"; name = "recovery ship bay 1"; width = 3},/turf/space,/area/shuttle/escape_pod1/centcom) -"ak" = (/obj/docking_port/stationary{dir = 1; dwidth = 1; height = 4; id = "pod2_away"; name = "recovery ship bay 2"; width = 3},/turf/space,/area/shuttle/escape_pod2/centcom) -"al" = (/obj/docking_port/stationary{dir = 4; dwidth = 1; height = 4; id = "pod3_away"; name = "recovery ship bay 3"; width = 3},/turf/space,/area/shuttle/escape_pod3/centcom) +"ae" = (/obj/docking_port/stationary/transit{dir = 4;dwidth = 1;height = 4;id = "pod3_transit";name = "pod 3 in transit";width = 3},/turf/space/transit/east{dir = 8},/area/space) +"af" = (/obj/docking_port/stationary/transit{dir = 4;dwidth = 1;height = 4;id = "pod4_transit";name = "pod 4 in transit";width = 3},/turf/space/transit/east{dir = 8},/area/space) +"ag" = (/obj/docking_port/stationary/transit{dir = 2;dwidth = 5;height = 14;id = "emergency_transit";name = "emergency in transit";width = 25},/turf/space/transit,/area/space) +"ah" = (/obj/docking_port/stationary/transit{dir = 1;dwidth = 1;height = 4;id = "pod1_transit";name = "pod 1 in transit";width = 3},/turf/space/transit,/area/space) +"ai" = (/obj/docking_port/stationary/transit{dir = 1;dwidth = 1;height = 4;id = "pod2_transit";name = "pod 2 in transit";width = 3},/turf/space/transit,/area/space) +"aj" = (/obj/docking_port/stationary{dir = 1;dwidth = 1;height = 4;id = "pod1_away";name = "recovery ship bay 1";width = 3},/turf/space,/area/shuttle/escape_pod1/centcom) +"ak" = (/obj/docking_port/stationary{dir = 1;dwidth = 1;height = 4;id = "pod2_away";name = "recovery ship bay 2";width = 3},/turf/space,/area/shuttle/escape_pod2/centcom) +"al" = (/obj/docking_port/stationary{dir = 4;dwidth = 1;height = 4;id = "pod3_away";name = "recovery ship bay 3";width = 3},/turf/space,/area/shuttle/escape_pod3/centcom) "am" = (/turf/unsimulated/floor/snow,/area/syndicate_mothership) -"an" = (/obj/docking_port/stationary{dir = 4; dwidth = 1; height = 4; id = "pod4_away"; name = "recovery ship bay 4"; width = 3},/turf/space,/area/shuttle/escape_pod5/centcom) -"ao" = (/obj/docking_port/stationary/transit{dir = 8; dwidth = 2; height = 5; id = "laborcamp_transit"; name = "labor in transit"; width = 9},/turf/space/transit,/area/space) -"ap" = (/turf/unsimulated/wall{tag = "icon-iron6"; icon_state = "iron6"},/area/space) -"aq" = (/obj/structure/window/reinforced,/turf/unsimulated/wall{tag = "icon-iron12"; icon_state = "iron12"},/area/space) -"ar" = (/turf/unsimulated/wall{tag = "icon-iron14"; icon_state = "iron14"},/area/space) -"as" = (/turf/unsimulated/wall{tag = "icon-iron10"; icon_state = "iron10"},/area/space) +"an" = (/obj/docking_port/stationary{dir = 4;dwidth = 1;height = 4;id = "pod4_away";name = "recovery ship bay 4";width = 3},/turf/space,/area/shuttle/escape_pod5/centcom) +"ao" = (/obj/docking_port/stationary/transit{dir = 8;dwidth = 2;height = 5;id = "laborcamp_transit";name = "labor in transit";width = 9},/turf/space/transit,/area/space) +"ap" = (/turf/unsimulated/wall{tag = "icon-iron6";icon_state = "iron6"},/area/space) +"aq" = (/obj/structure/window/reinforced,/turf/unsimulated/wall{tag = "icon-iron12";icon_state = "iron12"},/area/space) +"ar" = (/turf/unsimulated/wall{tag = "icon-iron14";icon_state = "iron14"},/area/space) +"as" = (/turf/unsimulated/wall{tag = "icon-iron10";icon_state = "iron10"},/area/space) "at" = (/obj/structure/flora/grass/brown,/turf/unsimulated/floor/snow,/area/syndicate_mothership) "au" = (/obj/structure/flora/bush,/turf/unsimulated/floor/snow,/area/syndicate_mothership) "av" = (/obj/structure/flora/tree/pine{pixel_x = 1},/turf/unsimulated/floor/snow,/area/syndicate_mothership) -"aw" = (/obj/docking_port/stationary{area_type = /area/syndicate_mothership; dir = 1; dwidth = 5; height = 14; id = "emergency_syndicate"; name = "404 Not Found"; turf_type = /turf/unsimulated/floor/snow; width = 25},/turf/unsimulated/floor/snow,/area/syndicate_mothership) +"aw" = (/obj/docking_port/stationary{area_type = /area/syndicate_mothership;dir = 1;dwidth = 5;height = 14;id = "emergency_syndicate";name = "404 Not Found";turf_type = /turf/unsimulated/floor/snow;width = 25},/turf/unsimulated/floor/snow,/area/syndicate_mothership) "ax" = (/turf/unsimulated/floor/snow,/turf/unsimulated/floor/snow{icon_state = "gravsnow_corner"},/area/syndicate_mothership) -"ay" = (/obj/machinery/door/airlock/external{id_tag = "syndicate_away"; req_access_txt = "150"},/turf/unsimulated/floor{icon_state = "bar"; dir = 2},/area/syndicate_mothership) +"ay" = (/obj/machinery/door/airlock/external{id_tag = "syndicate_away";req_access_txt = "150"},/turf/unsimulated/floor{icon_state = "bar";dir = 2},/area/syndicate_mothership) "az" = (/turf/unsimulated/floor/snow,/area/space) -"aA" = (/turf/unsimulated/wall/fakeglass{icon_state = "fakewindows"; dir = 1},/area/syndicate_mothership) -"aB" = (/turf/unsimulated/wall/fakeglass{dir = 0; icon_state = "fakewindows"; tag = "icon-fakewindows (EAST)"},/area/syndicate_mothership) -"aC" = (/turf/unsimulated/floor/snow,/turf/unsimulated/floor/snow{tag = "icon-gravsnow_corner (WEST)"; icon_state = "gravsnow_corner"; dir = 8},/area/syndicate_mothership) -"aD" = (/turf/unsimulated/floor/snow,/turf/unsimulated/floor/snow{tag = "icon-gravsnow_corner (SOUTHEAST)"; icon_state = "gravsnow_corner"; dir = 6},/area/syndicate_mothership) -"aE" = (/turf/unsimulated/floor/snow,/turf/unsimulated/floor/snow{tag = "icon-gravsnow_corner (SOUTHWEST)"; icon_state = "gravsnow_corner"; dir = 10},/area/syndicate_mothership) -"aF" = (/obj/docking_port/stationary/transit{dir = 2; dwidth = 2; height = 18; id = "skipjack_transit"; name = "skipjack in transit"; width = 19},/turf/space/transit,/area/space) -"aG" = (/obj/structure/window/reinforced{dir = 4},/turf/unsimulated/wall{tag = "icon-iron3"; icon_state = "iron3"},/area/space) -"aH" = (/turf/simulated/floor/holofloor{tag = "icon-asteroid"; icon_state = "asteroid"; dir = 2},/area/holodeck/source_desert) -"aI" = (/turf/simulated/floor/holofloor{tag = "icon-asteroid6"; icon_state = "asteroid6"; dir = 2},/area/holodeck/source_desert) -"aJ" = (/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/turf/unsimulated/wall{tag = "icon-iron3"; icon_state = "iron3"},/area/space) +"aA" = (/turf/unsimulated/wall/fakeglass{icon_state = "fakewindows";dir = 1},/area/syndicate_mothership) +"aB" = (/turf/unsimulated/wall/fakeglass{dir = 0;icon_state = "fakewindows";tag = "icon-fakewindows (EAST)"},/area/syndicate_mothership) +"aC" = (/turf/unsimulated/floor/snow,/turf/unsimulated/floor/snow{tag = "icon-gravsnow_corner (WEST)";icon_state = "gravsnow_corner";dir = 8},/area/syndicate_mothership) +"aD" = (/turf/unsimulated/floor/snow,/turf/unsimulated/floor/snow{tag = "icon-gravsnow_corner (SOUTHEAST)";icon_state = "gravsnow_corner";dir = 6},/area/syndicate_mothership) +"aE" = (/turf/unsimulated/floor/snow,/turf/unsimulated/floor/snow{tag = "icon-gravsnow_corner (SOUTHWEST)";icon_state = "gravsnow_corner";dir = 10},/area/syndicate_mothership) +"aF" = (/obj/docking_port/stationary/transit{dir = 2;dwidth = 2;height = 18;id = "skipjack_transit";name = "skipjack in transit";width = 19},/turf/space/transit,/area/space) +"aG" = (/obj/structure/window/reinforced{dir = 4},/turf/unsimulated/wall{tag = "icon-iron3";icon_state = "iron3"},/area/space) +"aH" = (/turf/simulated/floor/holofloor{tag = "icon-asteroid";icon_state = "asteroid";dir = 2},/area/holodeck/source_desert) +"aI" = (/turf/simulated/floor/holofloor{tag = "icon-asteroid6";icon_state = "asteroid6";dir = 2},/area/holodeck/source_desert) +"aJ" = (/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/turf/unsimulated/wall{tag = "icon-iron3";icon_state = "iron3"},/area/space) "aK" = (/obj/structure/flora/ausbushes/fullgrass,/turf/simulated/floor/holofloor/grass,/area/holodeck/source_picnicarea) "aL" = (/obj/structure/flora/ausbushes/sparsegrass,/turf/simulated/floor/holofloor/grass,/area/holodeck/source_picnicarea) -"aM" = (/obj/structure/rack,/obj/item/clothing/under/dress/dress_saloon,/obj/item/clothing/head/hairflower,/turf/simulated/floor/holofloor{tag = "icon-cult"; icon_state = "cult"; dir = 2},/area/holodeck/source_theatre) -"aN" = (/obj/effect/landmark/costume,/obj/structure/rack,/turf/simulated/floor/holofloor{tag = "icon-cult"; icon_state = "cult"; dir = 2},/area/holodeck/source_theatre) -"aO" = (/turf/simulated/floor/holofloor{icon_state = "engine"; name = "Holodeck Projector Floor"},/area/holodeck/source_wildlife) -"aP" = (/turf/simulated/floor/holofloor{icon_state = "engine"; name = "Holodeck Projector Floor"},/area/holodeck/source_plating) -"aQ" = (/turf/simulated/floor/holofloor{icon_state = "engine"; name = "Burn-Mix Floor"; nitrogen = 0; oxygen = 2500; temperature = 370; toxins = 5000},/area/holodeck/source_burntest) -"aR" = (/turf/simulated/floor/holofloor{dir = 9; icon_state = "red"},/area/holodeck/source_emptycourt) -"aS" = (/turf/simulated/floor/holofloor{dir = 1; icon_state = "red"},/area/holodeck/source_emptycourt) -"aT" = (/turf/simulated/floor/holofloor{dir = 5; icon_state = "red"},/area/holodeck/source_emptycourt) -"aU" = (/obj/structure/window/reinforced{dir = 8},/turf/unsimulated/wall{tag = "icon-iron3"; icon_state = "iron3"},/area/space) +"aM" = (/obj/structure/rack,/obj/item/clothing/under/dress/dress_saloon,/obj/item/clothing/head/hairflower,/turf/simulated/floor/holofloor{tag = "icon-cult";icon_state = "cult";dir = 2},/area/holodeck/source_theatre) +"aN" = (/obj/effect/landmark/costume,/obj/structure/rack,/turf/simulated/floor/holofloor{tag = "icon-cult";icon_state = "cult";dir = 2},/area/holodeck/source_theatre) +"aO" = (/turf/simulated/floor/holofloor{icon_state = "engine";name = "Holodeck Projector Floor"},/area/holodeck/source_wildlife) +"aP" = (/turf/simulated/floor/holofloor{icon_state = "engine";name = "Holodeck Projector Floor"},/area/holodeck/source_plating) +"aQ" = (/turf/simulated/floor/holofloor{icon_state = "engine";name = "Burn-Mix Floor";nitrogen = 0;oxygen = 2500;temperature = 370;toxins = 5000},/area/holodeck/source_burntest) +"aR" = (/turf/simulated/floor/holofloor{dir = 9;icon_state = "red"},/area/holodeck/source_emptycourt) +"aS" = (/turf/simulated/floor/holofloor{dir = 1;icon_state = "red"},/area/holodeck/source_emptycourt) +"aT" = (/turf/simulated/floor/holofloor{dir = 5;icon_state = "red"},/area/holodeck/source_emptycourt) +"aU" = (/obj/structure/window/reinforced{dir = 8},/turf/unsimulated/wall{tag = "icon-iron3";icon_state = "iron3"},/area/space) "aV" = (/turf/unsimulated/wall,/area/vox_station) -"aW" = (/turf/unsimulated/floor/snow,/turf/unsimulated/floor/snow{tag = "icon-gravsnow_corner (EAST)"; icon_state = "gravsnow_corner"; dir = 4},/area/syndicate_mothership) -"aX" = (/obj/machinery/computer/shuttle/syndicate/recall,/turf/unsimulated/floor{icon_state = "bar"; dir = 2},/area/syndicate_mothership) -"aY" = (/turf/unsimulated/wall/fakeglass{icon_state = "fakewindows"; dir = 8},/area/syndicate_mothership) -"aZ" = (/obj/structure/flora/ausbushes/fullgrass,/turf/simulated/floor/holofloor{tag = "icon-asteroid"; icon_state = "asteroid"; dir = 2},/area/holodeck/source_desert) -"ba" = (/turf/simulated/floor/holofloor{tag = "icon-asteroid8 (EAST)"; icon_state = "asteroid8"; dir = 4},/area/holodeck/source_desert) +"aW" = (/turf/unsimulated/floor/snow,/turf/unsimulated/floor/snow{tag = "icon-gravsnow_corner (EAST)";icon_state = "gravsnow_corner";dir = 4},/area/syndicate_mothership) +"aX" = (/obj/machinery/computer/shuttle/syndicate/recall,/turf/unsimulated/floor{icon_state = "bar";dir = 2},/area/syndicate_mothership) +"aY" = (/turf/unsimulated/wall/fakeglass{icon_state = "fakewindows";dir = 8},/area/syndicate_mothership) +"aZ" = (/obj/structure/flora/ausbushes/fullgrass,/turf/simulated/floor/holofloor{tag = "icon-asteroid";icon_state = "asteroid";dir = 2},/area/holodeck/source_desert) +"ba" = (/turf/simulated/floor/holofloor{tag = "icon-asteroid8 (EAST)";icon_state = "asteroid8";dir = 4},/area/holodeck/source_desert) "bb" = (/obj/structure/flora/ausbushes/ywflowers,/turf/simulated/floor/holofloor/grass,/area/holodeck/source_picnicarea) "bc" = (/obj/structure/flora/ausbushes/brflowers,/turf/simulated/floor/holofloor/grass,/area/holodeck/source_picnicarea) -"bd" = (/turf/simulated/floor/holofloor{tag = "icon-cult"; icon_state = "cult"; dir = 2},/area/holodeck/source_theatre) -"be" = (/obj/effect/landmark{name = "Holocarp Spawn"},/turf/simulated/floor/holofloor{icon_state = "engine"; name = "Holodeck Projector Floor"},/area/holodeck/source_wildlife) -"bf" = (/obj/effect/landmark{name = "Atmospheric Test Start"},/turf/simulated/floor/holofloor{icon_state = "engine"; name = "Burn-Mix Floor"; nitrogen = 0; oxygen = 2500; temperature = 370; toxins = 5000},/area/holodeck/source_burntest) -"bg" = (/turf/simulated/floor/holofloor{dir = 8; icon_state = "red"},/area/holodeck/source_emptycourt) +"bd" = (/turf/simulated/floor/holofloor{tag = "icon-cult";icon_state = "cult";dir = 2},/area/holodeck/source_theatre) +"be" = (/obj/effect/landmark{name = "Holocarp Spawn"},/turf/simulated/floor/holofloor{icon_state = "engine";name = "Holodeck Projector Floor"},/area/holodeck/source_wildlife) +"bf" = (/obj/effect/landmark{name = "Atmospheric Test Start"},/turf/simulated/floor/holofloor{icon_state = "engine";name = "Burn-Mix Floor";nitrogen = 0;oxygen = 2500;temperature = 370;toxins = 5000},/area/holodeck/source_burntest) +"bg" = (/turf/simulated/floor/holofloor{dir = 8;icon_state = "red"},/area/holodeck/source_emptycourt) "bh" = (/turf/simulated/floor/holofloor,/area/holodeck/source_emptycourt) -"bi" = (/turf/simulated/floor/holofloor{dir = 4; icon_state = "red"},/area/holodeck/source_emptycourt) -"bj" = (/turf/simulated/floor/holofloor{tag = "icon-asteroid2 (EAST)"; icon_state = "asteroid2"; dir = 4},/area/holodeck/source_desert) -"bk" = (/turf/simulated/floor/holofloor/grass,/obj/structure/flora/ausbushes/brflowers,/turf/simulated/floor/holofloor{tag = "icon-wood_siding2 (EAST)"; icon_state = "wood_siding2"; dir = 4},/area/holodeck/source_picnicarea) -"bl" = (/turf/simulated/floor/holofloor/grass,/obj/structure/flora/ausbushes/ywflowers,/turf/simulated/floor/holofloor{tag = "icon-wood_siding2 (EAST)"; icon_state = "wood_siding2"; dir = 4},/area/holodeck/source_picnicarea) -"bm" = (/obj/structure/flora/ausbushes/sparsegrass,/turf/simulated/floor/holofloor{tag = "icon-asteroid"; icon_state = "asteroid"; dir = 2},/area/holodeck/source_desert) -"bn" = (/turf/simulated/floor/holofloor{tag = "icon-asteroid11 (EAST)"; icon_state = "asteroid11"; dir = 4},/area/holodeck/source_desert) -"bo" = (/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/holofloor{tag = "icon-asteroid"; icon_state = "asteroid"; dir = 2},/area/holodeck/source_picnicarea) -"bp" = (/turf/simulated/floor/holofloor{tag = "icon-wood (EAST)"; icon_state = "wood"; dir = 4},/turf/simulated/floor/holofloor{tag = "icon-siding1"; icon_state = "siding1"; dir = 2},/area/holodeck/source_theatre) -"bq" = (/turf/simulated/floor/holofloor{tag = "icon-rampbottom"; icon_state = "rampbottom"; dir = 2},/area/holodeck/source_theatre) -"br" = (/turf/simulated/floor/holofloor{tag = "icon-asteroid7"; icon_state = "asteroid7"; dir = 2},/area/holodeck/source_desert) -"bs" = (/turf/simulated/floor/holofloor/grass,/obj/structure/flora/ausbushes/grassybush,/turf/simulated/floor/holofloor{tag = "icon-wood_siding5"; icon_state = "wood_siding5"; dir = 2},/area/holodeck/source_picnicarea) -"bt" = (/obj/structure/chair/stool,/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/holofloor{tag = "icon-asteroid"; icon_state = "asteroid"; dir = 2},/area/holodeck/source_picnicarea) -"bu" = (/obj/structure/table/wood,/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/holofloor{tag = "icon-asteroid"; icon_state = "asteroid"; dir = 2},/area/holodeck/source_picnicarea) -"bv" = (/turf/simulated/floor/holofloor/grass,/obj/structure/flora/ausbushes/grassybush,/turf/simulated/floor/holofloor{tag = "icon-wood_siding9"; icon_state = "wood_siding9"; dir = 2},/area/holodeck/source_picnicarea) -"bw" = (/turf/simulated/floor/holofloor{tag = "icon-wood (EAST)"; icon_state = "wood"; dir = 4},/area/holodeck/source_theatre) -"bx" = (/turf/simulated/floor/holofloor{tag = "icon-carpet6-2 (EAST)"; icon_state = "carpet6-2"; dir = 4},/area/holodeck/source_theatre) -"by" = (/turf/simulated/floor/holofloor{tag = "icon-carpet14-10 (EAST)"; icon_state = "carpet14-10"; dir = 4},/area/holodeck/source_theatre) -"bz" = (/turf/simulated/floor/holofloor{tag = "icon-carpet10-8 (EAST)"; icon_state = "carpet10-8"; dir = 4},/area/holodeck/source_theatre) -"bA" = (/turf/simulated/floor/holofloor{tag = "icon-asteroid5"; icon_state = "asteroid5"; dir = 2},/area/holodeck/source_desert) -"bB" = (/turf/simulated/floor/holofloor/grass,/obj/structure/flora/ausbushes/grassybush,/turf/simulated/floor/holofloor{tag = "icon-wood_siding6"; icon_state = "wood_siding6"; dir = 2},/area/holodeck/source_picnicarea) -"bC" = (/turf/simulated/floor/holofloor/grass,/obj/structure/flora/ausbushes/grassybush,/turf/simulated/floor/holofloor{tag = "icon-wood_siding10"; icon_state = "wood_siding10"; dir = 2},/area/holodeck/source_picnicarea) -"bD" = (/obj/structure/chair/stool,/turf/simulated/floor/holofloor{tag = "icon-carpet7-3 (EAST)"; icon_state = "carpet7-3"; dir = 4},/area/holodeck/source_theatre) -"bE" = (/obj/structure/chair/stool,/turf/simulated/floor/holofloor{tag = "icon-carpet15-15 (EAST)"; icon_state = "carpet15-15"; dir = 4},/area/holodeck/source_theatre) -"bF" = (/obj/structure/chair/stool,/turf/simulated/floor/holofloor{tag = "icon-carpet11-12 (EAST)"; icon_state = "carpet11-12"; dir = 4},/area/holodeck/source_theatre) -"bG" = (/turf/simulated/floor/holofloor{dir = 8; icon_state = "green"},/area/holodeck/source_emptycourt) -"bH" = (/turf/simulated/floor/holofloor{dir = 4; icon_state = "green"},/area/holodeck/source_emptycourt) -"bI" = (/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) -"bJ" = (/turf/simulated/floor/holofloor{tag = "icon-carpet2-0 (EAST)"; icon_state = "carpet2-0"; dir = 4},/area/holodeck/source_theatre) -"bK" = (/obj/machinery/light{dir = 1; on = 1},/turf/unsimulated/floor{icon_state = "bar"; dir = 2},/area/syndicate_mothership) -"bL" = (/obj/machinery/light{dir = 4},/turf/unsimulated/floor{icon_state = "bar"; dir = 2},/area/syndicate_mothership) -"bM" = (/mob/living/simple_animal/pet/cat/Syndi,/turf/unsimulated/floor{icon_state = "bar"; dir = 2},/area/syndicate_mothership) -"bN" = (/obj/machinery/door/airlock/external{id_tag = "syndicate_away"; req_access_txt = "150"},/turf/unsimulated/floor{icon_state = "dark"},/area/syndicate_mothership) -"bO" = (/obj/docking_port/stationary{area_type = /area/syndicate_mothership; dheight = 9; dir = 2; dwidth = 5; height = 22; id = "syndicate_away"; name = "syndicate recon outpost"; turf_type = /turf/unsimulated/floor/snow; width = 18},/turf/space,/area/space) -"bP" = (/turf/unsimulated/floor/snow,/turf/unsimulated/floor/snow{tag = "icon-gravsnow_corner (NORTHEAST)"; icon_state = "gravsnow_corner"; dir = 5},/area/syndicate_mothership) -"bQ" = (/turf/simulated/floor/holofloor/grass,/obj/structure/flora/ausbushes/brflowers,/turf/simulated/floor/holofloor{tag = "icon-wood_siding1"; icon_state = "wood_siding1"; dir = 2},/area/holodeck/source_picnicarea) -"bR" = (/turf/simulated/floor/holofloor/grass,/obj/structure/flora/ausbushes/ywflowers,/turf/simulated/floor/holofloor{tag = "icon-wood_siding1"; icon_state = "wood_siding1"; dir = 2},/area/holodeck/source_picnicarea) -"bS" = (/turf/simulated/floor/holofloor{tag = "icon-carpet3-0 (EAST)"; icon_state = "carpet3-0"; dir = 4},/area/holodeck/source_theatre) -"bT" = (/turf/unsimulated/floor{tag = "icon-dark"; icon_state = "dark"},/area/vox_station) -"bU" = (/obj/structure/sign/securearea{desc = "A warning sign which reads 'FOURTH WALL'."; name = "\improper FOURTH WALL"; pixel_x = -32},/turf/unsimulated/floor/snow,/area/syndicate_mothership) -"bV" = (/turf/simulated/floor/holofloor{tag = "icon-asteroid1 (EAST)"; icon_state = "asteroid1"; dir = 4},/area/holodeck/source_desert) -"bW" = (/turf/unsimulated/floor/snow,/turf/unsimulated/floor/snow{icon_state = "gravsnow_corner"},/turf/unsimulated/floor/snow{tag = "icon-gravsnow_corner (NORTH)"; icon_state = "gravsnow_corner"; dir = 1},/area/syndicate_mothership) -"bX" = (/turf/simulated/floor/holofloor{tag = "icon-asteroid3 (EAST)"; icon_state = "asteroid3"; dir = 4},/area/holodeck/source_desert) -"bY" = (/turf/simulated/floor/holofloor{tag = "icon-carpet1-0 (EAST)"; icon_state = "carpet1-0"; dir = 4},/area/holodeck/source_theatre) -"bZ" = (/obj/structure/chair/stool,/turf/simulated/floor/holofloor{tag = "icon-carpet5-1 (EAST)"; icon_state = "carpet5-1"; dir = 4},/area/holodeck/source_theatre) -"ca" = (/obj/structure/chair/stool,/turf/simulated/floor/holofloor{tag = "icon-carpet13-5 (EAST)"; icon_state = "carpet13-5"; dir = 4},/area/holodeck/source_theatre) -"cb" = (/obj/structure/chair/stool,/turf/simulated/floor/holofloor{tag = "icon-carpet9-4 (EAST)"; icon_state = "carpet9-4"; dir = 4},/area/holodeck/source_theatre) -"cc" = (/turf/simulated/floor/holofloor{dir = 10; icon_state = "green"},/area/holodeck/source_emptycourt) -"cd" = (/turf/simulated/floor/holofloor{dir = 2; icon_state = "green"},/area/holodeck/source_emptycourt) -"ce" = (/turf/simulated/floor/holofloor{dir = 6; icon_state = "green"},/area/holodeck/source_emptycourt) -"cf" = (/obj/effect/decal/warning_stripes/southeastcorner,/obj/item/radio/intercom/syndicate{pixel_x = -28},/turf/unsimulated/floor{dir = 2; icon_state = "wood"},/area/syndicate_mothership) -"cg" = (/obj/structure/sign/double/map/left{pixel_y = -32},/obj/effect/decal/warning_stripes/west,/obj/machinery/light,/obj/structure/rack/skeletal_bar/left,/obj/item/reagent_containers/food/drinks/bottle/vodka,/turf/unsimulated/floor{dir = 2; icon_state = "wood"},/area/syndicate_mothership) -"ch" = (/turf/unsimulated/wall{tag = "icon-iron3"; icon_state = "iron3"},/area/space) -"ci" = (/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/turf/unsimulated/wall{tag = "icon-iron12"; icon_state = "iron12"},/area/space) +"bi" = (/turf/simulated/floor/holofloor{dir = 4;icon_state = "red"},/area/holodeck/source_emptycourt) +"bj" = (/turf/simulated/floor/holofloor{tag = "icon-asteroid2 (EAST)";icon_state = "asteroid2";dir = 4},/area/holodeck/source_desert) +"bk" = (/turf/simulated/floor/holofloor/grass,/obj/structure/flora/ausbushes/brflowers,/turf/simulated/floor/holofloor{tag = "icon-wood_siding2 (EAST)";icon_state = "wood_siding2";dir = 4},/area/holodeck/source_picnicarea) +"bl" = (/turf/simulated/floor/holofloor/grass,/obj/structure/flora/ausbushes/ywflowers,/turf/simulated/floor/holofloor{tag = "icon-wood_siding2 (EAST)";icon_state = "wood_siding2";dir = 4},/area/holodeck/source_picnicarea) +"bm" = (/obj/structure/flora/ausbushes/sparsegrass,/turf/simulated/floor/holofloor{tag = "icon-asteroid";icon_state = "asteroid";dir = 2},/area/holodeck/source_desert) +"bn" = (/turf/simulated/floor/holofloor{tag = "icon-asteroid11 (EAST)";icon_state = "asteroid11";dir = 4},/area/holodeck/source_desert) +"bo" = (/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/holofloor{tag = "icon-asteroid";icon_state = "asteroid";dir = 2},/area/holodeck/source_picnicarea) +"bp" = (/turf/simulated/floor/holofloor{tag = "icon-wood (EAST)";icon_state = "wood";dir = 4},/turf/simulated/floor/holofloor{tag = "icon-siding1";icon_state = "siding1";dir = 2},/area/holodeck/source_theatre) +"bq" = (/turf/simulated/floor/holofloor{tag = "icon-rampbottom";icon_state = "rampbottom";dir = 2},/area/holodeck/source_theatre) +"br" = (/turf/simulated/floor/holofloor{tag = "icon-asteroid7";icon_state = "asteroid7";dir = 2},/area/holodeck/source_desert) +"bs" = (/turf/simulated/floor/holofloor/grass,/obj/structure/flora/ausbushes/grassybush,/turf/simulated/floor/holofloor{tag = "icon-wood_siding5";icon_state = "wood_siding5";dir = 2},/area/holodeck/source_picnicarea) +"bu" = (/obj/structure/table/wood,/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/holofloor{tag = "icon-asteroid";icon_state = "asteroid";dir = 2},/area/holodeck/source_picnicarea) +"bv" = (/turf/simulated/floor/holofloor/grass,/obj/structure/flora/ausbushes/grassybush,/turf/simulated/floor/holofloor{tag = "icon-wood_siding9";icon_state = "wood_siding9";dir = 2},/area/holodeck/source_picnicarea) +"bw" = (/turf/simulated/floor/holofloor{tag = "icon-wood (EAST)";icon_state = "wood";dir = 4},/area/holodeck/source_theatre) +"bx" = (/turf/simulated/floor/holofloor{tag = "icon-carpet6-2 (EAST)";icon_state = "carpet6-2";dir = 4},/area/holodeck/source_theatre) +"by" = (/turf/simulated/floor/holofloor{tag = "icon-carpet14-10 (EAST)";icon_state = "carpet14-10";dir = 4},/area/holodeck/source_theatre) +"bz" = (/turf/simulated/floor/holofloor{tag = "icon-carpet10-8 (EAST)";icon_state = "carpet10-8";dir = 4},/area/holodeck/source_theatre) +"bA" = (/turf/simulated/floor/holofloor{tag = "icon-asteroid5";icon_state = "asteroid5";dir = 2},/area/holodeck/source_desert) +"bB" = (/turf/simulated/floor/holofloor/grass,/obj/structure/flora/ausbushes/grassybush,/turf/simulated/floor/holofloor{tag = "icon-wood_siding6";icon_state = "wood_siding6";dir = 2},/area/holodeck/source_picnicarea) +"bC" = (/turf/simulated/floor/holofloor/grass,/obj/structure/flora/ausbushes/grassybush,/turf/simulated/floor/holofloor{tag = "icon-wood_siding10";icon_state = "wood_siding10";dir = 2},/area/holodeck/source_picnicarea) +"bG" = (/turf/simulated/floor/holofloor{dir = 8;icon_state = "green"},/area/holodeck/source_emptycourt) +"bH" = (/turf/simulated/floor/holofloor{dir = 4;icon_state = "green"},/area/holodeck/source_emptycourt) +"bI" = (/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) +"bJ" = (/turf/simulated/floor/holofloor{tag = "icon-carpet2-0 (EAST)";icon_state = "carpet2-0";dir = 4},/area/holodeck/source_theatre) +"bK" = (/obj/machinery/light{dir = 1;on = 1},/turf/unsimulated/floor{icon_state = "bar";dir = 2},/area/syndicate_mothership) +"bL" = (/obj/machinery/light{dir = 4},/turf/unsimulated/floor{icon_state = "bar";dir = 2},/area/syndicate_mothership) +"bM" = (/mob/living/simple_animal/pet/cat/Syndi,/turf/unsimulated/floor{icon_state = "bar";dir = 2},/area/syndicate_mothership) +"bN" = (/obj/machinery/door/airlock/external{id_tag = "syndicate_away";req_access_txt = "150"},/turf/unsimulated/floor{icon_state = "dark"},/area/syndicate_mothership) +"bO" = (/obj/docking_port/stationary{area_type = /area/syndicate_mothership;dheight = 9;dir = 2;dwidth = 5;height = 22;id = "syndicate_away";name = "syndicate recon outpost";turf_type = /turf/unsimulated/floor/snow;width = 18},/turf/space,/area/space) +"bP" = (/turf/unsimulated/floor/snow,/turf/unsimulated/floor/snow{tag = "icon-gravsnow_corner (NORTHEAST)";icon_state = "gravsnow_corner";dir = 5},/area/syndicate_mothership) +"bQ" = (/turf/simulated/floor/holofloor/grass,/obj/structure/flora/ausbushes/brflowers,/turf/simulated/floor/holofloor{tag = "icon-wood_siding1";icon_state = "wood_siding1";dir = 2},/area/holodeck/source_picnicarea) +"bR" = (/turf/simulated/floor/holofloor/grass,/obj/structure/flora/ausbushes/ywflowers,/turf/simulated/floor/holofloor{tag = "icon-wood_siding1";icon_state = "wood_siding1";dir = 2},/area/holodeck/source_picnicarea) +"bS" = (/turf/simulated/floor/holofloor{tag = "icon-carpet3-0 (EAST)";icon_state = "carpet3-0";dir = 4},/area/holodeck/source_theatre) +"bT" = (/turf/unsimulated/floor{tag = "icon-dark";icon_state = "dark"},/area/vox_station) +"bU" = (/obj/structure/sign/securearea{desc = "A warning sign which reads 'FOURTH WALL'.";name = "\improper FOURTH WALL";pixel_x = -32},/turf/unsimulated/floor/snow,/area/syndicate_mothership) +"bV" = (/turf/simulated/floor/holofloor{tag = "icon-asteroid1 (EAST)";icon_state = "asteroid1";dir = 4},/area/holodeck/source_desert) +"bW" = (/turf/unsimulated/floor/snow,/turf/unsimulated/floor/snow{icon_state = "gravsnow_corner"},/turf/unsimulated/floor/snow{tag = "icon-gravsnow_corner (NORTH)";icon_state = "gravsnow_corner";dir = 1},/area/syndicate_mothership) +"bX" = (/turf/simulated/floor/holofloor{tag = "icon-asteroid3 (EAST)";icon_state = "asteroid3";dir = 4},/area/holodeck/source_desert) +"bY" = (/turf/simulated/floor/holofloor{tag = "icon-carpet1-0 (EAST)";icon_state = "carpet1-0";dir = 4},/area/holodeck/source_theatre) +"cc" = (/turf/simulated/floor/holofloor{dir = 10;icon_state = "green"},/area/holodeck/source_emptycourt) +"cd" = (/turf/simulated/floor/holofloor{dir = 2;icon_state = "green"},/area/holodeck/source_emptycourt) +"ce" = (/turf/simulated/floor/holofloor{dir = 6;icon_state = "green"},/area/holodeck/source_emptycourt) +"cf" = (/obj/effect/decal/warning_stripes/southeastcorner,/obj/item/radio/intercom/syndicate{pixel_x = -28},/turf/unsimulated/floor{dir = 2;icon_state = "wood"},/area/syndicate_mothership) +"cg" = (/obj/structure/sign/double/map/left{pixel_y = -32},/obj/effect/decal/warning_stripes/west,/obj/machinery/light,/obj/structure/rack/skeletal_bar/left,/obj/item/reagent_containers/food/drinks/bottle/vodka,/turf/unsimulated/floor{dir = 2;icon_state = "wood"},/area/syndicate_mothership) +"ch" = (/turf/unsimulated/wall{tag = "icon-iron3";icon_state = "iron3"},/area/space) +"ci" = (/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/turf/unsimulated/wall{tag = "icon-iron12";icon_state = "iron12"},/area/space) "cj" = (/turf/unsimulated/wall,/area/space) -"ck" = (/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/turf/unsimulated/wall{tag = "icon-iron12"; icon_state = "iron12"},/area/space) -"cl" = (/turf/unsimulated/wall{tag = "icon-iron11"; icon_state = "iron11"},/area/space) -"cm" = (/obj/structure/sign/double/map/right{pixel_y = -32},/obj/structure/rack/skeletal_bar/right,/obj/item/reagent_containers/food/drinks/bottle/gin,/turf/unsimulated/floor{dir = 2; icon_state = "wood"},/area/syndicate_mothership) -"cn" = (/turf/unsimulated/floor/snow,/turf/unsimulated/floor/snow{tag = "icon-gravsnow_corner (NORTH)"; icon_state = "gravsnow_corner"; dir = 1},/area/syndicate_mothership) -"co" = (/obj/machinery/door/airlock/centcom{name = "Shuttle Dock #2"; opacity = 1; req_access_txt = "150"},/turf/unsimulated/floor{icon_state = "bar"; dir = 2},/area/syndicate_mothership) -"cp" = (/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) +"ck" = (/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/turf/unsimulated/wall{tag = "icon-iron12";icon_state = "iron12"},/area/space) +"cl" = (/turf/unsimulated/wall{tag = "icon-iron11";icon_state = "iron11"},/area/space) +"cm" = (/obj/structure/sign/double/map/right{pixel_y = -32},/obj/structure/rack/skeletal_bar/right,/obj/item/reagent_containers/food/drinks/bottle/gin,/turf/unsimulated/floor{dir = 2;icon_state = "wood"},/area/syndicate_mothership) +"cn" = (/turf/unsimulated/floor/snow,/turf/unsimulated/floor/snow{tag = "icon-gravsnow_corner (NORTH)";icon_state = "gravsnow_corner";dir = 1},/area/syndicate_mothership) +"co" = (/obj/machinery/door/airlock/centcom{name = "Shuttle Dock #2";opacity = 1;req_access_txt = "150"},/turf/unsimulated/floor{icon_state = "bar";dir = 2},/area/syndicate_mothership) +"cp" = (/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) "cq" = (/turf/unsimulated/floor/snow,/obj/structure/flora/tree/pine{pixel_x = 1},/turf/unsimulated/floor/snow{icon_state = "gravsnow_corner"},/area/syndicate_mothership) -"cr" = (/turf/simulated/floor/holofloor{tag = "icon-1 (NORTHEAST)"; icon_state = "1"; dir = 5},/area/holodeck/source_space) -"cs" = (/turf/simulated/floor/holofloor{tag = "icon-17 (NORTHEAST)"; icon_state = "17"; dir = 5},/area/holodeck/source_space) -"ct" = (/turf/simulated/floor/holofloor{tag = "icon-22 (NORTHEAST)"; icon_state = "22"; dir = 5},/area/holodeck/source_space) -"cu" = (/turf/simulated/floor/holofloor{tag = "icon-snow"; icon_state = "snow"},/area/holodeck/source_snowfield) -"cv" = (/turf/simulated/floor/holofloor{tag = "icon-grimy"; icon_state = "grimy"; dir = 2},/area/holodeck/source_meetinghall) -"cw" = (/turf/simulated/floor/holofloor{dir = 9; icon_state = "red"},/area/holodeck/source_basketball) -"cx" = (/obj/structure/holohoop,/turf/simulated/floor/holofloor{dir = 1; icon_state = "red"},/area/holodeck/source_basketball) -"cy" = (/turf/simulated/floor/holofloor{dir = 5; icon_state = "red"},/area/holodeck/source_basketball) +"cr" = (/turf/simulated/floor/holofloor{tag = "icon-1 (NORTHEAST)";icon_state = "1";dir = 5},/area/holodeck/source_space) +"cs" = (/turf/simulated/floor/holofloor{tag = "icon-17 (NORTHEAST)";icon_state = "17";dir = 5},/area/holodeck/source_space) +"ct" = (/turf/simulated/floor/holofloor{tag = "icon-22 (NORTHEAST)";icon_state = "22";dir = 5},/area/holodeck/source_space) +"cu" = (/turf/simulated/floor/holofloor{tag = "icon-snow";icon_state = "snow"},/area/holodeck/source_snowfield) +"cv" = (/turf/simulated/floor/holofloor{tag = "icon-grimy";icon_state = "grimy";dir = 2},/area/holodeck/source_meetinghall) +"cw" = (/turf/simulated/floor/holofloor{dir = 9;icon_state = "red"},/area/holodeck/source_basketball) +"cx" = (/obj/structure/holohoop,/turf/simulated/floor/holofloor{dir = 1;icon_state = "red"},/area/holodeck/source_basketball) +"cy" = (/turf/simulated/floor/holofloor{dir = 5;icon_state = "red"},/area/holodeck/source_basketball) "cz" = (/turf/simulated/floor/beach/sand,/area/holodeck/source_beach) -"cA" = (/obj/structure/table/holotable,/obj/machinery/readybutton{pixel_y = 0},/turf/simulated/floor/holofloor{dir = 9; icon_state = "red"},/area/holodeck/source_thunderdomecourt) -"cB" = (/obj/structure/table/holotable,/obj/item/clothing/head/helmet/thunderdome,/obj/item/clothing/suit/armor/tdome/red,/obj/item/clothing/under/color/red,/obj/item/holo/esword/red,/turf/simulated/floor/holofloor{dir = 1; icon_state = "red"},/area/holodeck/source_thunderdomecourt) -"cC" = (/obj/structure/table/holotable,/turf/simulated/floor/holofloor{dir = 5; icon_state = "red"},/area/holodeck/source_thunderdomecourt) -"cD" = (/obj/structure/table/holotable,/obj/item/clothing/gloves/boxing/hologlove,/turf/simulated/floor/holofloor{dir = 9; icon_state = "red"},/area/holodeck/source_boxingcourt) -"cE" = (/turf/simulated/floor/holofloor{dir = 1; icon_state = "red"},/area/holodeck/source_boxingcourt) -"cF" = (/obj/structure/table/holotable,/obj/item/clothing/gloves/boxing/hologlove,/turf/simulated/floor/holofloor{dir = 5; icon_state = "red"},/area/holodeck/source_boxingcourt) -"cG" = (/obj/docking_port/stationary/transit{dir = 8; dwidth = 2; height = 12; id = "ferry_transit"; name = "ferry in transit"; turf_type = /turf/space/transit/horizontal; width = 5},/turf/space/transit/horizontal,/area/space) -"cH" = (/obj/structure/flora/grass/both,/turf/simulated/floor/holofloor{tag = "icon-snow"; icon_state = "snow"},/area/holodeck/source_snowfield) -"cI" = (/turf/simulated/floor/holofloor{tag = "icon-carpet4-0 (EAST)"; icon_state = "carpet4-0"; dir = 4},/area/holodeck/source_meetinghall) -"cJ" = (/turf/simulated/floor/holofloor{tag = "icon-carpetsymbol (SOUTHEAST)"; icon_state = "carpetsymbol"; dir = 6},/area/holodeck/source_meetinghall) -"cK" = (/turf/simulated/floor/holofloor{tag = "icon-carpet8-0 (EAST)"; icon_state = "carpet8-0"; dir = 4},/area/holodeck/source_meetinghall) -"cL" = (/turf/simulated/floor/holofloor{dir = 8; icon_state = "red"},/area/holodeck/source_basketball) +"cA" = (/obj/structure/table/holotable,/obj/machinery/readybutton{pixel_y = 0},/turf/simulated/floor/holofloor{dir = 9;icon_state = "red"},/area/holodeck/source_thunderdomecourt) +"cB" = (/obj/structure/table/holotable,/obj/item/clothing/head/helmet/thunderdome,/obj/item/clothing/suit/armor/tdome/red,/obj/item/clothing/under/color/red,/obj/item/holo/esword/red,/turf/simulated/floor/holofloor{dir = 1;icon_state = "red"},/area/holodeck/source_thunderdomecourt) +"cC" = (/obj/structure/table/holotable,/turf/simulated/floor/holofloor{dir = 5;icon_state = "red"},/area/holodeck/source_thunderdomecourt) +"cD" = (/obj/structure/table/holotable,/obj/item/clothing/gloves/boxing/hologlove,/turf/simulated/floor/holofloor{dir = 9;icon_state = "red"},/area/holodeck/source_boxingcourt) +"cE" = (/turf/simulated/floor/holofloor{dir = 1;icon_state = "red"},/area/holodeck/source_boxingcourt) +"cF" = (/obj/structure/table/holotable,/obj/item/clothing/gloves/boxing/hologlove,/turf/simulated/floor/holofloor{dir = 5;icon_state = "red"},/area/holodeck/source_boxingcourt) +"cG" = (/obj/docking_port/stationary/transit{dir = 8;dwidth = 2;height = 12;id = "ferry_transit";name = "ferry in transit";turf_type = /turf/space/transit/horizontal;width = 5},/turf/space/transit/horizontal,/area/space) +"cH" = (/obj/structure/flora/grass/both,/turf/simulated/floor/holofloor{tag = "icon-snow";icon_state = "snow"},/area/holodeck/source_snowfield) +"cI" = (/turf/simulated/floor/holofloor{tag = "icon-carpet4-0 (EAST)";icon_state = "carpet4-0";dir = 4},/area/holodeck/source_meetinghall) +"cJ" = (/turf/simulated/floor/holofloor{tag = "icon-carpetsymbol (SOUTHEAST)";icon_state = "carpetsymbol";dir = 6},/area/holodeck/source_meetinghall) +"cK" = (/turf/simulated/floor/holofloor{tag = "icon-carpet8-0 (EAST)";icon_state = "carpet8-0";dir = 4},/area/holodeck/source_meetinghall) +"cL" = (/turf/simulated/floor/holofloor{dir = 8;icon_state = "red"},/area/holodeck/source_basketball) "cM" = (/turf/simulated/floor/holofloor,/area/holodeck/source_basketball) -"cN" = (/turf/simulated/floor/holofloor{dir = 4; icon_state = "red"},/area/holodeck/source_basketball) +"cN" = (/turf/simulated/floor/holofloor{dir = 4;icon_state = "red"},/area/holodeck/source_basketball) "cO" = (/obj/effect/overlay/palmtree_r,/turf/simulated/floor/beach/sand,/area/holodeck/source_beach) "cP" = (/obj/effect/overlay/palmtree_l,/obj/effect/overlay/coconut,/turf/simulated/floor/beach/sand,/area/holodeck/source_beach) -"cQ" = (/turf/simulated/floor/holofloor{dir = 8; icon_state = "red"},/area/holodeck/source_thunderdomecourt) +"cQ" = (/turf/simulated/floor/holofloor{dir = 8;icon_state = "red"},/area/holodeck/source_thunderdomecourt) "cR" = (/turf/simulated/floor/holofloor,/area/holodeck/source_thunderdomecourt) -"cS" = (/turf/simulated/floor/holofloor{dir = 4; icon_state = "red"},/area/holodeck/source_thunderdomecourt) -"cT" = (/turf/simulated/floor/holofloor{dir = 8; icon_state = "red"},/area/holodeck/source_boxingcourt) +"cS" = (/turf/simulated/floor/holofloor{dir = 4;icon_state = "red"},/area/holodeck/source_thunderdomecourt) +"cT" = (/turf/simulated/floor/holofloor{dir = 8;icon_state = "red"},/area/holodeck/source_boxingcourt) "cU" = (/turf/simulated/floor/holofloor,/area/holodeck/source_boxingcourt) -"cV" = (/turf/simulated/floor/holofloor{dir = 4; icon_state = "red"},/area/holodeck/source_boxingcourt) -"cW" = (/obj/vox/win_button,/turf/unsimulated/floor{tag = "icon-light_on"; icon_state = "light_on"},/area/vox_station) -"cX" = (/obj/structure/flora/tree/pine,/turf/simulated/floor/holofloor{tag = "icon-snow"; icon_state = "snow"},/area/holodeck/source_snowfield) -"cY" = (/obj/structure/table/wood,/turf/simulated/floor/holofloor{tag = "icon-grimy"; icon_state = "grimy"; dir = 2},/area/holodeck/source_meetinghall) -"cZ" = (/turf/simulated/floor/holofloor{dir = 1; icon_state = "red"},/area/holodeck/source_basketball) -"da" = (/obj/structure/flora/grass/green,/turf/simulated/floor/holofloor{tag = "icon-snow"; icon_state = "snow"},/area/holodeck/source_snowfield) -"db" = (/obj/structure/chair/stool,/turf/simulated/floor/holofloor{tag = "icon-carpet6-0 (EAST)"; icon_state = "carpet6-0"; dir = 4},/area/holodeck/source_meetinghall) -"dc" = (/obj/structure/chair/stool,/turf/simulated/floor/holofloor{tag = "icon-carpet14-0 (EAST)"; icon_state = "carpet14-0"; dir = 4},/area/holodeck/source_meetinghall) -"dd" = (/obj/structure/chair/stool,/turf/simulated/floor/holofloor{tag = "icon-carpet10-0 (EAST)"; icon_state = "carpet10-0"; dir = 4},/area/holodeck/source_meetinghall) -"de" = (/turf/simulated/floor/holofloor{dir = 10; icon_state = "red"},/area/holodeck/source_basketball) -"df" = (/turf/simulated/floor/holofloor{dir = 2; icon_state = "red"},/area/holodeck/source_basketball) -"dg" = (/turf/simulated/floor/holofloor{dir = 6; icon_state = "red"},/area/holodeck/source_basketball) +"cV" = (/turf/simulated/floor/holofloor{dir = 4;icon_state = "red"},/area/holodeck/source_boxingcourt) +"cW" = (/obj/vox/win_button,/turf/unsimulated/floor{tag = "icon-light_on";icon_state = "light_on"},/area/vox_station) +"cX" = (/obj/structure/flora/tree/pine,/turf/simulated/floor/holofloor{tag = "icon-snow";icon_state = "snow"},/area/holodeck/source_snowfield) +"cY" = (/obj/structure/table/wood,/turf/simulated/floor/holofloor{tag = "icon-grimy";icon_state = "grimy";dir = 2},/area/holodeck/source_meetinghall) +"cZ" = (/turf/simulated/floor/holofloor{dir = 1;icon_state = "red"},/area/holodeck/source_basketball) +"da" = (/obj/structure/flora/grass/green,/turf/simulated/floor/holofloor{tag = "icon-snow";icon_state = "snow"},/area/holodeck/source_snowfield) +"de" = (/turf/simulated/floor/holofloor{dir = 10;icon_state = "red"},/area/holodeck/source_basketball) +"df" = (/turf/simulated/floor/holofloor{dir = 2;icon_state = "red"},/area/holodeck/source_basketball) +"dg" = (/turf/simulated/floor/holofloor{dir = 6;icon_state = "red"},/area/holodeck/source_basketball) "dh" = (/obj/item/clothing/under/rainbow,/obj/item/clothing/glasses/sunglasses,/turf/simulated/floor/beach/sand,/area/holodeck/source_beach) -"di" = (/obj/structure/holowindow,/turf/simulated/floor/holofloor{dir = 8; icon_state = "red"},/area/holodeck/source_thunderdomecourt) +"di" = (/obj/structure/holowindow,/turf/simulated/floor/holofloor{dir = 8;icon_state = "red"},/area/holodeck/source_thunderdomecourt) "dj" = (/obj/structure/holowindow,/turf/simulated/floor/holofloor,/area/holodeck/source_thunderdomecourt) -"dk" = (/obj/structure/holowindow,/turf/simulated/floor/holofloor{dir = 4; icon_state = "red"},/area/holodeck/source_thunderdomecourt) -"dl" = (/obj/machinery/computer/shuttle/ferry,/turf/unsimulated/floor{tag = "icon-warndark (WEST)"; icon_state = "warndark"; dir = 8},/area/centcom/ferry) -"dm" = (/obj/structure/flora/tree/dead,/turf/simulated/floor/holofloor{tag = "icon-snow"; icon_state = "snow"},/area/holodeck/source_snowfield) -"dn" = (/obj/structure/chair/stool,/turf/simulated/floor/holofloor{tag = "icon-carpet7-0 (EAST)"; icon_state = "carpet7-0"; dir = 4},/area/holodeck/source_meetinghall) -"do" = (/obj/structure/chair/stool,/turf/simulated/floor/holofloor{tag = "icon-carpet15-0 (EAST)"; icon_state = "carpet15-0"; dir = 4},/area/holodeck/source_meetinghall) -"dp" = (/obj/structure/chair/stool,/turf/simulated/floor/holofloor{tag = "icon-carpet11-0 (EAST)"; icon_state = "carpet11-0"; dir = 4},/area/holodeck/source_meetinghall) -"dq" = (/turf/simulated/floor/holofloor{dir = 9; icon_state = "green"},/area/holodeck/source_basketball) -"dr" = (/turf/simulated/floor/holofloor{dir = 1; icon_state = "green"},/area/holodeck/source_basketball) -"ds" = (/turf/simulated/floor/holofloor{dir = 5; icon_state = "green"},/area/holodeck/source_basketball) +"dk" = (/obj/structure/holowindow,/turf/simulated/floor/holofloor{dir = 4;icon_state = "red"},/area/holodeck/source_thunderdomecourt) +"dl" = (/obj/machinery/computer/shuttle/ferry,/turf/unsimulated/floor{tag = "icon-warndark (WEST)";icon_state = "warndark";dir = 8},/area/centcom/ferry) +"dm" = (/obj/structure/flora/tree/dead,/turf/simulated/floor/holofloor{tag = "icon-snow";icon_state = "snow"},/area/holodeck/source_snowfield) +"dq" = (/turf/simulated/floor/holofloor{dir = 9;icon_state = "green"},/area/holodeck/source_basketball) +"dr" = (/turf/simulated/floor/holofloor{dir = 1;icon_state = "green"},/area/holodeck/source_basketball) +"ds" = (/turf/simulated/floor/holofloor{dir = 5;icon_state = "green"},/area/holodeck/source_basketball) "dt" = (/obj/item/beach_ball,/turf/simulated/floor/beach/sand,/area/holodeck/source_beach) -"du" = (/obj/structure/holowindow{dir = 1},/turf/simulated/floor/holofloor{dir = 8; icon_state = "green"},/area/holodeck/source_thunderdomecourt) +"du" = (/obj/structure/holowindow{dir = 1},/turf/simulated/floor/holofloor{dir = 8;icon_state = "green"},/area/holodeck/source_thunderdomecourt) "dv" = (/obj/structure/holowindow{dir = 1},/turf/simulated/floor/holofloor,/area/holodeck/source_thunderdomecourt) -"dw" = (/obj/structure/holowindow{dir = 1},/turf/simulated/floor/holofloor{dir = 4; icon_state = "green"},/area/holodeck/source_thunderdomecourt) -"dx" = (/turf/simulated/floor/holofloor{dir = 8; icon_state = "green"},/area/holodeck/source_boxingcourt) -"dy" = (/turf/simulated/floor/holofloor{dir = 4; icon_state = "green"},/area/holodeck/source_boxingcourt) -"dz" = (/obj/docking_port/stationary/transit{dir = 8; dwidth = 5; height = 7; id = "supply_transit"; name = "supply in transit"; width = 12},/turf/space/transit,/area/space) -"dA" = (/turf/simulated/floor/holofloor{dir = 8; icon_state = "green"},/area/holodeck/source_basketball) +"dw" = (/obj/structure/holowindow{dir = 1},/turf/simulated/floor/holofloor{dir = 4;icon_state = "green"},/area/holodeck/source_thunderdomecourt) +"dx" = (/turf/simulated/floor/holofloor{dir = 8;icon_state = "green"},/area/holodeck/source_boxingcourt) +"dy" = (/turf/simulated/floor/holofloor{dir = 4;icon_state = "green"},/area/holodeck/source_boxingcourt) +"dz" = (/obj/docking_port/stationary/transit{dir = 8;dwidth = 5;height = 7;id = "supply_transit";name = "supply in transit";width = 12},/turf/space/transit,/area/space) +"dA" = (/turf/simulated/floor/holofloor{dir = 8;icon_state = "green"},/area/holodeck/source_basketball) "dB" = (/obj/item/beach_ball/holoball,/turf/simulated/floor/holofloor,/area/holodeck/source_basketball) -"dC" = (/turf/simulated/floor/holofloor{dir = 4; icon_state = "green"},/area/holodeck/source_basketball) -"dD" = (/turf/simulated/floor/holofloor{dir = 8; icon_state = "green"},/area/holodeck/source_thunderdomecourt) -"dE" = (/turf/simulated/floor/holofloor{dir = 4; icon_state = "green"},/area/holodeck/source_thunderdomecourt) -"dF" = (/obj/structure/flora/grass/brown,/turf/simulated/floor/holofloor{tag = "icon-snow"; icon_state = "snow"},/area/holodeck/source_snowfield) -"dG" = (/turf/simulated/floor/holofloor{dir = 2; icon_state = "green"},/area/holodeck/source_basketball) -"dH" = (/turf/simulated/floor/holofloor{icon_state = "sand"; name = "Soft sand"},/area/holodeck/source_beach) -"dI" = (/obj/structure/chair/stool,/turf/simulated/floor/holofloor{tag = "icon-carpet5-0 (EAST)"; icon_state = "carpet5-0"; dir = 4},/area/holodeck/source_meetinghall) -"dJ" = (/obj/structure/chair/stool,/turf/simulated/floor/holofloor{tag = "icon-carpet13-0 (EAST)"; icon_state = "carpet13-0"; dir = 4},/area/holodeck/source_meetinghall) -"dK" = (/obj/structure/chair/stool,/turf/simulated/floor/holofloor{tag = "icon-carpet9-0 (EAST)"; icon_state = "carpet9-0"; dir = 4},/area/holodeck/source_meetinghall) +"dC" = (/turf/simulated/floor/holofloor{dir = 4;icon_state = "green"},/area/holodeck/source_basketball) +"dD" = (/turf/simulated/floor/holofloor{dir = 8;icon_state = "green"},/area/holodeck/source_thunderdomecourt) +"dE" = (/turf/simulated/floor/holofloor{dir = 4;icon_state = "green"},/area/holodeck/source_thunderdomecourt) +"dF" = (/obj/structure/flora/grass/brown,/turf/simulated/floor/holofloor{tag = "icon-snow";icon_state = "snow"},/area/holodeck/source_snowfield) +"dG" = (/turf/simulated/floor/holofloor{dir = 2;icon_state = "green"},/area/holodeck/source_basketball) +"dH" = (/turf/simulated/floor/holofloor{icon_state = "sand";name = "Soft sand"},/area/holodeck/source_beach) "dL" = (/turf/simulated/floor/beach/coastline,/area/holodeck/source_beach) -"dM" = (/turf/simulated/floor/holofloor{dir = 10; icon_state = "green"},/area/holodeck/source_basketball) -"dN" = (/obj/structure/holohoop{dir = 1},/turf/simulated/floor/holofloor{dir = 2; icon_state = "green"},/area/holodeck/source_basketball) -"dO" = (/turf/simulated/floor/holofloor{dir = 6; icon_state = "green"},/area/holodeck/source_basketball) +"dM" = (/turf/simulated/floor/holofloor{dir = 10;icon_state = "green"},/area/holodeck/source_basketball) +"dN" = (/obj/structure/holohoop{dir = 1},/turf/simulated/floor/holofloor{dir = 2;icon_state = "green"},/area/holodeck/source_basketball) +"dO" = (/turf/simulated/floor/holofloor{dir = 6;icon_state = "green"},/area/holodeck/source_basketball) "dP" = (/turf/simulated/floor/beach/water,/area/holodeck/source_beach) -"dQ" = (/obj/structure/table/holotable,/turf/simulated/floor/holofloor{dir = 10; icon_state = "green"},/area/holodeck/source_thunderdomecourt) -"dR" = (/obj/structure/table/holotable,/obj/item/clothing/head/helmet/thunderdome,/obj/item/clothing/suit/armor/tdome/green,/obj/item/clothing/under/color/green,/obj/item/holo/esword/green,/turf/simulated/floor/holofloor{dir = 2; icon_state = "green"},/area/holodeck/source_thunderdomecourt) -"dS" = (/obj/structure/table/holotable,/obj/machinery/readybutton{pixel_y = 0},/turf/simulated/floor/holofloor{dir = 6; icon_state = "green"},/area/holodeck/source_thunderdomecourt) -"dT" = (/obj/structure/table/holotable,/obj/item/clothing/gloves/boxing/hologlove{icon_state = "boxinggreen"; item_state = "boxinggreen"},/turf/simulated/floor/holofloor{dir = 10; icon_state = "green"},/area/holodeck/source_boxingcourt) -"dU" = (/turf/simulated/floor/holofloor{dir = 2; icon_state = "green"},/area/holodeck/source_boxingcourt) -"dV" = (/obj/structure/table/holotable,/obj/item/clothing/gloves/boxing/hologlove{icon_state = "boxinggreen"; item_state = "boxinggreen"},/turf/simulated/floor/holofloor{dir = 6; icon_state = "green"},/area/holodeck/source_boxingcourt) -"dW" = (/turf/unsimulated/wall{tag = "icon-iron5"; icon_state = "iron5"},/area/space) -"dX" = (/obj/structure/window/reinforced{dir = 1},/turf/unsimulated/wall{tag = "icon-iron12"; icon_state = "iron12"},/area/space) -"dY" = (/turf/unsimulated/wall{tag = "icon-iron13"; icon_state = "iron13"},/area/space) -"dZ" = (/turf/unsimulated/wall{tag = "icon-iron9"; icon_state = "iron9"},/area/space) +"dQ" = (/obj/structure/table/holotable,/turf/simulated/floor/holofloor{dir = 10;icon_state = "green"},/area/holodeck/source_thunderdomecourt) +"dR" = (/obj/structure/table/holotable,/obj/item/clothing/head/helmet/thunderdome,/obj/item/clothing/suit/armor/tdome/green,/obj/item/clothing/under/color/green,/obj/item/holo/esword/green,/turf/simulated/floor/holofloor{dir = 2;icon_state = "green"},/area/holodeck/source_thunderdomecourt) +"dS" = (/obj/structure/table/holotable,/obj/machinery/readybutton{pixel_y = 0},/turf/simulated/floor/holofloor{dir = 6;icon_state = "green"},/area/holodeck/source_thunderdomecourt) +"dT" = (/obj/structure/table/holotable,/obj/item/clothing/gloves/boxing/hologlove{icon_state = "boxinggreen";item_state = "boxinggreen"},/turf/simulated/floor/holofloor{dir = 10;icon_state = "green"},/area/holodeck/source_boxingcourt) +"dU" = (/turf/simulated/floor/holofloor{dir = 2;icon_state = "green"},/area/holodeck/source_boxingcourt) +"dV" = (/obj/structure/table/holotable,/obj/item/clothing/gloves/boxing/hologlove{icon_state = "boxinggreen";item_state = "boxinggreen"},/turf/simulated/floor/holofloor{dir = 6;icon_state = "green"},/area/holodeck/source_boxingcourt) +"dW" = (/turf/unsimulated/wall{tag = "icon-iron5";icon_state = "iron5"},/area/space) +"dX" = (/obj/structure/window/reinforced{dir = 1},/turf/unsimulated/wall{tag = "icon-iron12";icon_state = "iron12"},/area/space) +"dY" = (/turf/unsimulated/wall{tag = "icon-iron13";icon_state = "iron13"},/area/space) +"dZ" = (/turf/unsimulated/wall{tag = "icon-iron9";icon_state = "iron9"},/area/space) "ea" = (/turf/unsimulated/wall,/area/tdome/arena_source) "eb" = (/obj/machinery/igniter,/turf/simulated/floor/plasteel,/area/tdome/arena_source) "ec" = (/turf/simulated/floor/plasteel,/area/tdome/arena_source) "ed" = (/obj/structure/rack,/obj/item/clothing/under/color/red,/obj/item/clothing/shoes/brown,/obj/item/clothing/suit/armor/tdome/red,/obj/item/clothing/head/helmet/thunderdome,/obj/item/melee/baton/loaded,/obj/item/melee/energy/sword/saber/red,/turf/unsimulated/floor{icon_state = "dark"},/area/tdome/arena_source) -"ee" = (/obj/machinery/door/poddoor{id_tag = "thunderdomegen"; name = "General Supply"},/turf/unsimulated/floor{icon_state = "dark"},/area/tdome/arena_source) -"ef" = (/obj/machinery/door/poddoor{id_tag = "thunderdome"; name = "Thunderdome Blast Door"},/turf/unsimulated/floor{name = "plating"},/area/tdome/arena_source) -"eg" = (/turf/simulated/floor/plasteel{icon_state = "red"; dir = 8},/area/tdome/arena_source) -"eh" = (/turf/simulated/floor/plasteel{icon_state = "green"; dir = 4},/area/tdome/arena_source) +"ee" = (/obj/machinery/door/poddoor{id_tag = "thunderdomegen";name = "General Supply"},/turf/unsimulated/floor{icon_state = "dark"},/area/tdome/arena_source) +"ef" = (/obj/machinery/door/poddoor{id_tag = "thunderdome";name = "Thunderdome Blast Door"},/turf/unsimulated/floor{name = "plating"},/area/tdome/arena_source) +"eg" = (/turf/simulated/floor/plasteel{icon_state = "red";dir = 8},/area/tdome/arena_source) +"eh" = (/turf/simulated/floor/plasteel{icon_state = "green";dir = 4},/area/tdome/arena_source) "ei" = (/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/baton/loaded,/obj/item/melee/energy/sword/saber/green,/turf/unsimulated/floor{icon_state = "dark"},/area/tdome/arena_source) "ej" = (/turf/simulated/floor/bluegrid,/area/tdome/arena_source) -"ek" = (/obj/machinery/flasher{id = "tdomeflash"; name = "Thunderdome Flash"},/turf/simulated/floor/bluegrid,/area/tdome/arena_source) -"el" = (/obj/machinery/door/poddoor{id_tag = "thunderdomehea"; name = "Heavy Supply"},/turf/unsimulated/floor{icon_state = "dark"},/area/tdome/arena_source) +"ek" = (/obj/machinery/flasher{id = "tdomeflash";name = "Thunderdome Flash"},/turf/simulated/floor/bluegrid,/area/tdome/arena_source) +"el" = (/obj/machinery/door/poddoor{id_tag = "thunderdomehea";name = "Heavy Supply"},/turf/unsimulated/floor{icon_state = "dark"},/area/tdome/arena_source) "em" = (/obj/structure/rack,/obj/item/clothing/under/color/red,/obj/item/clothing/shoes/brown,/obj/item/clothing/suit/armor/vest,/obj/item/clothing/head/helmet/swat,/obj/item/gun/energy/laser,/turf/unsimulated/floor{icon_state = "dark"},/area/tdome/arena_source) "en" = (/obj/structure/rack,/obj/item/clothing/under/color/green,/obj/item/clothing/shoes/brown,/obj/item/clothing/suit/armor/vest,/obj/item/clothing/head/helmet/swat,/obj/item/gun/energy/laser,/turf/unsimulated/floor{icon_state = "dark"},/area/tdome/arena_source) -"eo" = (/obj/docking_port/stationary{dir = 8; dwidth = 2; height = 12; id = "ferry_away"; name = "centcom bay 2"; width = 5},/turf/space,/area/space) -"ep" = (/turf/unsimulated/wall/fakeglass{tag = "icon-fakewindows2 (WEST)"; icon_state = "fakewindows2"; dir = 8},/area/vox_station) -"eq" = (/turf/unsimulated/wall/fakeglass{tag = "icon-fakewindows (WEST)"; icon_state = "fakewindows"; dir = 8},/area/vox_station) -"er" = (/turf/unsimulated/wall/fakeglass{tag = "icon-fakewindows (EAST)"; icon_state = "fakewindows"; dir = 4},/area/vox_station) -"es" = (/obj/machinery/door/airlock/centcom,/turf/unsimulated/floor{tag = "icon-dark"; icon_state = "dark"},/area/vox_station) -"et" = (/obj/structure/girder/displaced,/turf/unsimulated/floor{tag = "icon-dark"; icon_state = "dark"},/area/vox_station) -"eu" = (/obj/structure/closet/crate,/turf/unsimulated/floor{tag = "icon-dark"; icon_state = "dark"},/area/vox_station) -"ev" = (/obj/structure/chair/comfy/red,/obj/effect/landmark{name = "voxstart"},/turf/unsimulated/floor{tag = "icon-dark"; icon_state = "dark"},/area/vox_station) -"ew" = (/obj/structure/kitchenspike,/turf/unsimulated/floor{tag = "icon-dark"; icon_state = "dark"},/area/vox_station) -"ex" = (/obj/structure/table/wood,/turf/unsimulated/floor{tag = "icon-dark"; icon_state = "dark"},/area/vox_station) +"eo" = (/obj/docking_port/stationary{dir = 8;dwidth = 2;height = 12;id = "ferry_away";name = "centcom bay 2";width = 5},/turf/space,/area/space) +"ep" = (/turf/unsimulated/wall/fakeglass{tag = "icon-fakewindows2 (WEST)";icon_state = "fakewindows2";dir = 8},/area/vox_station) +"eq" = (/turf/unsimulated/wall/fakeglass{tag = "icon-fakewindows (WEST)";icon_state = "fakewindows";dir = 8},/area/vox_station) +"er" = (/turf/unsimulated/wall/fakeglass{tag = "icon-fakewindows (EAST)";icon_state = "fakewindows";dir = 4},/area/vox_station) +"es" = (/obj/machinery/door/airlock/centcom,/turf/unsimulated/floor{tag = "icon-dark";icon_state = "dark"},/area/vox_station) +"et" = (/obj/structure/girder/displaced,/turf/unsimulated/floor{tag = "icon-dark";icon_state = "dark"},/area/vox_station) +"eu" = (/obj/structure/closet/crate,/turf/unsimulated/floor{tag = "icon-dark";icon_state = "dark"},/area/vox_station) +"ew" = (/obj/structure/kitchenspike,/turf/unsimulated/floor{tag = "icon-dark";icon_state = "dark"},/area/vox_station) +"ex" = (/obj/structure/table/wood,/turf/unsimulated/floor{tag = "icon-dark";icon_state = "dark"},/area/vox_station) "ey" = (/turf/unsimulated/wall,/area/start) "ez" = (/obj/effect/landmark/start,/turf/unsimulated/floor,/area/start) "eA" = (/turf/unsimulated/wall/splashscreen,/area/start) "eB" = (/turf/space,/area/shuttle/escape_pod1/centcom) "eC" = (/turf/space,/area/shuttle/escape_pod2/centcom) -"eD" = (/turf/simulated/shuttle/wall{icon_state = "swall_s6"; dir = 2},/area/centcom/evac) -"eE" = (/obj/structure/shuttle/engine/propulsion{icon_state = "propulsion_r"; dir = 1},/turf/simulated/shuttle/plating,/area/centcom/evac) -"eF" = (/obj/structure/shuttle/engine/propulsion{icon_state = "propulsion"; dir = 1},/turf/simulated/shuttle/plating,/area/centcom/evac) -"eG" = (/obj/structure/shuttle/engine/propulsion{icon_state = "propulsion_l"; dir = 1},/turf/simulated/shuttle/plating,/area/centcom/evac) -"eH" = (/turf/simulated/shuttle/wall{icon_state = "swall_s10"; dir = 2},/area/centcom/evac) -"eI" = (/turf/simulated/shuttle/wall{icon_state = "swall3"; dir = 2},/area/centcom/evac) -"eJ" = (/obj/structure/window/reinforced,/obj/structure/shuttle/engine/heater{icon_state = "heater"; dir = 1},/turf/simulated/floor/plating/airless,/area/centcom/evac) -"eK" = (/turf/simulated/shuttle/wall{icon_state = "swall7"; dir = 2},/area/centcom/evac) -"eL" = (/turf/simulated/shuttle/wall{icon_state = "swall8"; dir = 2},/area/centcom/evac) +"eD" = (/turf/simulated/shuttle/wall{icon_state = "swall_s6";dir = 2},/area/centcom/evac) +"eE" = (/obj/structure/shuttle/engine/propulsion{icon_state = "propulsion_r";dir = 1},/turf/simulated/shuttle/plating,/area/centcom/evac) +"eF" = (/obj/structure/shuttle/engine/propulsion{icon_state = "propulsion";dir = 1},/turf/simulated/shuttle/plating,/area/centcom/evac) +"eG" = (/obj/structure/shuttle/engine/propulsion{icon_state = "propulsion_l";dir = 1},/turf/simulated/shuttle/plating,/area/centcom/evac) +"eH" = (/turf/simulated/shuttle/wall{icon_state = "swall_s10";dir = 2},/area/centcom/evac) +"eI" = (/turf/simulated/shuttle/wall{icon_state = "swall3";dir = 2},/area/centcom/evac) +"eJ" = (/obj/structure/window/reinforced,/obj/structure/shuttle/engine/heater{icon_state = "heater";dir = 1},/turf/simulated/floor/plating/airless,/area/centcom/evac) +"eK" = (/turf/simulated/shuttle/wall{icon_state = "swall7";dir = 2},/area/centcom/evac) +"eL" = (/turf/simulated/shuttle/wall{icon_state = "swall8";dir = 2},/area/centcom/evac) "eM" = (/obj/machinery/door/airlock/shuttle,/turf/simulated/shuttle/plating,/area/centcom/evac) -"eN" = (/turf/simulated/shuttle/wall{icon_state = "swall0"; dir = 2},/area/centcom/evac) +"eN" = (/turf/simulated/shuttle/wall{icon_state = "swall0";dir = 2},/area/centcom/evac) "eO" = (/obj/structure/shuttle/window,/obj/structure/grille,/turf/simulated/shuttle/plating,/area/centcom/evac) -"eP" = (/turf/simulated/shuttle/wall{icon_state = "swall4"; dir = 2},/area/centcom/evac) -"eQ" = (/turf/simulated/shuttle/wall{icon_state = "swall11"; dir = 2},/area/centcom/evac) +"eP" = (/turf/simulated/shuttle/wall{icon_state = "swall4";dir = 2},/area/centcom/evac) +"eQ" = (/turf/simulated/shuttle/wall{icon_state = "swall11";dir = 2},/area/centcom/evac) "eR" = (/turf/simulated/shuttle/plating,/area/centcom/evac) -"eS" = (/turf/simulated/shuttle/plating,/turf/simulated/shuttle/wall{icon_state = "swall_f6"; dir = 2},/area/centcom/evac) -"eT" = (/turf/simulated/shuttle/floor,/turf/simulated/shuttle/wall{icon_state = "swall_f9"; dir = 2},/area/centcom/evac) +"eS" = (/turf/simulated/shuttle/plating,/turf/simulated/shuttle/wall{icon_state = "swall_f6";dir = 2},/area/centcom/evac) +"eT" = (/turf/simulated/shuttle/floor,/turf/simulated/shuttle/wall{icon_state = "swall_f9";dir = 2},/area/centcom/evac) "eU" = (/obj/structure/closet/emcloset,/turf/simulated/shuttle/floor,/area/centcom/evac) -"eV" = (/obj/item/chair/stool,/obj/effect/landmark{name = "voxstart"},/turf/unsimulated/floor{tag = "icon-dark"; icon_state = "dark"},/area/vox_station) -"eW" = (/obj/structure/table,/obj/item/storage/firstaid/toxin{pixel_x = -2; pixel_y = 4},/obj/item/storage/firstaid/toxin,/turf/simulated/shuttle/floor,/area/centcom/evac) -"eX" = (/obj/structure/table,/obj/item/storage/firstaid/fire,/obj/item/storage/firstaid/fire{pixel_x = -2; pixel_y = 4},/turf/simulated/shuttle/floor,/area/centcom/evac) -"eY" = (/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/centcom/evac) +"eW" = (/obj/structure/table,/obj/item/storage/firstaid/toxin{pixel_x = -2;pixel_y = 4},/obj/item/storage/firstaid/toxin,/turf/simulated/shuttle/floor,/area/centcom/evac) +"eX" = (/obj/structure/table,/obj/item/storage/firstaid/fire,/obj/item/storage/firstaid/fire{pixel_x = -2;pixel_y = 4},/turf/simulated/shuttle/floor,/area/centcom/evac) +"eY" = (/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/centcom/evac) "eZ" = (/obj/machinery/door/airlock/centcom{opacity = 1},/turf/unsimulated/floor,/area/vox_station) -"fa" = (/turf/simulated/shuttle/floor,/turf/simulated/shuttle/wall{icon_state = "swall_f5"; dir = 2},/area/centcom/evac) -"fb" = (/turf/simulated/shuttle/plating,/turf/simulated/shuttle/wall{dir = 2; icon_state = "swall_f10"; layer = 2},/area/centcom/evac) -"fc" = (/turf/simulated/shuttle/wall{icon_state = "swall1"; dir = 2},/area/centcom/evac) +"fa" = (/turf/simulated/shuttle/floor,/turf/simulated/shuttle/wall{icon_state = "swall_f5";dir = 2},/area/centcom/evac) +"fb" = (/turf/simulated/shuttle/plating,/turf/simulated/shuttle/wall{dir = 2;icon_state = "swall_f10";layer = 2},/area/centcom/evac) +"fc" = (/turf/simulated/shuttle/wall{icon_state = "swall1";dir = 2},/area/centcom/evac) "fd" = (/turf/simulated/shuttle/floor,/area/centcom/evac) "fe" = (/turf/simulated/shuttle/floor{icon_state = "floor2"},/area/centcom/evac) -"ff" = (/turf/simulated/shuttle/wall{icon_state = "swall_s5"; dir = 2},/area/centcom/evac) -"fg" = (/turf/simulated/shuttle/wall{icon_state = "swall_s9"; dir = 2},/area/centcom/evac) -"fh" = (/turf/simulated/shuttle/wall{icon_state = "swall12"; dir = 2},/area/centcom/evac) -"fi" = (/turf/simulated/shuttle/wall{icon_state = "swallc1"; dir = 2},/area/centcom/evac) +"ff" = (/turf/simulated/shuttle/wall{icon_state = "swall_s5";dir = 2},/area/centcom/evac) +"fg" = (/turf/simulated/shuttle/wall{icon_state = "swall_s9";dir = 2},/area/centcom/evac) +"fh" = (/turf/simulated/shuttle/wall{icon_state = "swall12";dir = 2},/area/centcom/evac) +"fi" = (/turf/simulated/shuttle/wall{icon_state = "swallc1";dir = 2},/area/centcom/evac) "fj" = (/obj/structure/table/reinforced,/obj/item/paper_bin,/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/centcom/evac) "fk" = (/obj/structure/table/reinforced,/obj/item/storage/fancy/donut_box,/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/centcom/evac) "fl" = (/obj/structure/table/reinforced,/obj/item/pen,/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/centcom/evac) "fm" = (/obj/structure/table/reinforced,/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/centcom/evac) -"fn" = (/obj/machinery/sleeper{icon_state = "sleeper-open"; dir = 8},/turf/simulated/shuttle/floor,/area/centcom/evac) -"fo" = (/obj/structure/chair{dir = 8},/turf/simulated/shuttle/floor,/area/centcom/evac) -"fp" = (/turf/simulated/shuttle/wall{icon_state = "swallc2"; dir = 2},/area/centcom/evac) +"fn" = (/obj/machinery/sleeper{icon_state = "sleeper-open";dir = 8},/turf/simulated/shuttle/floor,/area/centcom/evac) +"fp" = (/turf/simulated/shuttle/wall{icon_state = "swallc2";dir = 2},/area/centcom/evac) "fq" = (/obj/machinery/computer/secure_data,/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/centcom/evac) -"fr" = (/obj/structure/chair{dir = 1},/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/centcom/evac) -"fs" = (/obj/structure/chair{dir = 4},/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/centcom/evac) "ft" = (/obj/structure/table/reinforced,/obj/item/clipboard,/obj/item/stamp,/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/centcom/evac) "fu" = (/obj/structure/table,/obj/item/flash,/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/centcom/evac) "fv" = (/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/centcom/evac) -"fw" = (/obj/structure/chair{dir = 4},/turf/simulated/shuttle/floor,/area/centcom/evac) "fx" = (/turf/space,/area/shuttle/escape_pod3/centcom) "fy" = (/obj/structure/table,/obj/item/storage/box/handcuffs,/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/centcom/evac) -"fz" = (/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 = "floor4"},/area/centcom/evac) +"fz" = (/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 = "floor4"},/area/centcom/evac) "fA" = (/turf/unsimulated/floor,/area/vox_station) -"fB" = (/obj/structure/bed,/turf/simulated/shuttle/floor,/area/centcom/evac) "fC" = (/obj/structure/grille,/obj/structure/shuttle/window,/turf/simulated/shuttle/plating,/area/centcom/evac) "fD" = (/obj/machinery/door/airlock/shuttle,/turf/simulated/shuttle/floor{icon_state = "floor2"},/area/centcom/evac) -"fE" = (/obj/docking_port/stationary{dir = 2; dwidth = 2; height = 18; id = "skipjack_away"; name = "vox bay 1"; width = 19},/turf/space,/area/space) -"fF" = (/turf/simulated/shuttle/wall{icon_state = "swall2"; dir = 2},/area/centcom/evac) +"fE" = (/obj/docking_port/stationary{dir = 2;dwidth = 2;height = 18;id = "skipjack_away";name = "vox bay 1";width = 19},/turf/space,/area/space) +"fF" = (/turf/simulated/shuttle/wall{icon_state = "swall2";dir = 2},/area/centcom/evac) "fG" = (/obj/structure/table,/obj/structure/bedsheetbin,/turf/simulated/shuttle/floor,/area/centcom/evac) "fH" = (/obj/structure/table,/obj/item/hand_labeler,/turf/simulated/shuttle/floor,/area/centcom/evac) "fI" = (/obj/structure/table,/obj/item/storage/box/donkpockets,/turf/simulated/shuttle/floor,/area/centcom/evac) -"fJ" = (/turf/simulated/shuttle/wall{icon_state = "swall14"; dir = 2},/area/centcom/evac) -"fK" = (/turf/simulated/shuttle/wall{icon_state = "swallc4"; dir = 2},/area/centcom/evac) -"fL" = (/obj/machinery/door/airlock/shuttle{name = "Cockpit"; req_access_txt = "109"},/turf/simulated/shuttle/floor{icon_state = "floor2"},/area/centcom/evac) +"fJ" = (/turf/simulated/shuttle/wall{icon_state = "swall14";dir = 2},/area/centcom/evac) +"fK" = (/turf/simulated/shuttle/wall{icon_state = "swallc4";dir = 2},/area/centcom/evac) +"fL" = (/obj/machinery/door/airlock/shuttle{name = "Cockpit";req_access_txt = "109"},/turf/simulated/shuttle/floor{icon_state = "floor2"},/area/centcom/evac) "fM" = (/obj/structure/table,/obj/item/radio/off,/turf/simulated/shuttle/floor,/area/centcom/evac) -"fN" = (/obj/structure/chair{dir = 4; name = "Prosecution"},/turf/simulated/shuttle/floor,/area/centcom/evac) "fO" = (/obj/structure/filingcabinet,/turf/simulated/shuttle/floor,/area/centcom/evac) -"fP" = (/obj/structure/chair,/turf/simulated/shuttle/floor,/area/centcom/evac) "fQ" = (/obj/structure/table,/obj/item/storage/lockbox,/turf/simulated/shuttle/floor,/area/centcom/evac) "fR" = (/obj/structure/table,/turf/simulated/shuttle/floor,/area/centcom/evac) "fS" = (/obj/machinery/computer/shuttle,/turf/simulated/shuttle/floor,/area/centcom/evac) "fT" = (/obj/structure/table,/obj/item/clipboard,/obj/item/pen,/turf/simulated/shuttle/floor,/area/centcom/evac) "fU" = (/obj/structure/table,/obj/item/paper_bin,/turf/simulated/shuttle/floor,/area/centcom/evac) "fV" = (/turf/unsimulated/wall,/area/centcom/suppy) -"fW" = (/obj/docking_port/stationary/transit{dheight = 9; dir = 2; dwidth = 5; height = 22; id = "syndicate_transit"; name = "syndicate in transit"; width = 18},/turf/space/transit,/area/syndicate_station/transit) -"fX" = (/obj/docking_port/stationary{dir = 8; dwidth = 5; height = 7; id = "supply_away"; name = "supply centcom"; width = 12},/turf/space,/area/space) +"fW" = (/obj/docking_port/stationary/transit{dheight = 9;dir = 2;dwidth = 5;height = 22;id = "syndicate_transit";name = "syndicate in transit";width = 18},/turf/space/transit,/area/syndicate_station/transit) +"fX" = (/obj/docking_port/stationary{dir = 8;dwidth = 5;height = 7;id = "supply_away";name = "supply centcom";width = 12},/turf/space,/area/space) "fY" = (/turf/space,/area/centcom/evac) -"fZ" = (/obj/machinery/door/airlock/external{name = "Port Docking Bay 1"; id_tag = "emergency_away"},/turf/unsimulated/floor{icon_state = "floor"},/area/centcom/evac) -"ga" = (/obj/machinery/computer/shuttle,/turf/unsimulated/floor{tag = "icon-cultdamage"; icon_state = "cultdamage"},/area/wizard_station) -"gb" = (/obj/structure/cult/talisman{desc = "A altar dedicated to the Wizard's Federation"},/obj/item/kitchen/knife/ritual,/turf/unsimulated/floor{tag = "icon-cult"; icon_state = "cult"},/area/wizard_station) -"gc" = (/obj/structure/closet,/turf/unsimulated/floor{tag = "icon-warningcorner (NORTH)"; icon_state = "warningcorner"; dir = 1},/area/centcom/suppy) -"gd" = (/obj/structure/closet/secure_closet/cargotech,/turf/unsimulated/floor{dir = 1; icon_state = "loadingarea"},/area/centcom/suppy) -"ge" = (/obj/structure/closet/secure_closet/quartermaster,/turf/unsimulated/floor{dir = 1; icon_state = "loadingarea"},/area/centcom/suppy) +"fZ" = (/obj/machinery/door/airlock/external{name = "Port Docking Bay 1";id_tag = "emergency_away"},/turf/unsimulated/floor{icon_state = "floor"},/area/centcom/evac) +"ga" = (/obj/machinery/computer/shuttle,/turf/unsimulated/floor{tag = "icon-cultdamage";icon_state = "cultdamage"},/area/wizard_station) +"gb" = (/obj/structure/cult/talisman{desc = "A altar dedicated to the Wizard's Federation"},/obj/item/kitchen/knife/ritual,/turf/unsimulated/floor{tag = "icon-cult";icon_state = "cult"},/area/wizard_station) +"gc" = (/obj/structure/closet,/turf/unsimulated/floor{tag = "icon-warningcorner (NORTH)";icon_state = "warningcorner";dir = 1},/area/centcom/suppy) +"gd" = (/obj/structure/closet/secure_closet/cargotech,/turf/unsimulated/floor{dir = 1;icon_state = "loadingarea"},/area/centcom/suppy) +"ge" = (/obj/structure/closet/secure_closet/quartermaster,/turf/unsimulated/floor{dir = 1;icon_state = "loadingarea"},/area/centcom/suppy) "gf" = (/obj/structure/closet,/turf/unsimulated/floor{icon_state = "floor"},/area/centcom/suppy) -"gg" = (/obj/docking_port/stationary/transit{dir = 8; dwidth = 3; height = 5; id = "mining_transit"; name = "mining in transit"; width = 7},/turf/space/transit,/area/space) -"gh" = (/turf/unsimulated/wall/fakeglass{icon_state = "fakewindows2"; dir = 6},/area/centcom/suppy) -"gi" = (/turf/unsimulated/floor{dir = 8; heat_capacity = 1; icon_state = "warning"},/area/centcom/suppy) +"gg" = (/obj/docking_port/stationary/transit{dir = 8;dwidth = 3;height = 5;id = "mining_transit";name = "mining in transit";width = 7},/turf/space/transit,/area/space) +"gh" = (/turf/unsimulated/wall/fakeglass{icon_state = "fakewindows2";dir = 6},/area/centcom/suppy) +"gi" = (/turf/unsimulated/floor{dir = 8;heat_capacity = 1;icon_state = "warning"},/area/centcom/suppy) "gj" = (/turf/unsimulated/floor{icon_state = "floor"},/area/centcom/suppy) "gk" = (/turf/unsimulated/wall,/area/centcom) "gl" = (/turf/space/transit/horizontal,/area/space) -"gm" = (/obj/machinery/door/airlock/centcom{name = "Supply Shuttle"; req_access_txt = "106"},/turf/unsimulated/floor{icon_state = "delivery"},/area/centcom/suppy) +"gm" = (/obj/machinery/door/airlock/centcom{name = "Supply Shuttle";req_access_txt = "106"},/turf/unsimulated/floor{icon_state = "delivery"},/area/centcom/suppy) "gn" = (/turf/unsimulated/wall/fakedoor,/area/centcom/suppy) "go" = (/obj/effect/landmark{name = "prisonwarp"},/turf/unsimulated/floor{name = "plating"},/area/centcom) -"gp" = (/obj/docking_port/stationary/transit{dwidth = 3; height = 5; id = "science_transit"; name = "science in transit"; turf_type = /turf/space/transit/horizontal; width = 7},/turf/space/transit/horizontal,/area/space) -"gq" = (/obj/machinery/computer/supplycomp,/turf/unsimulated/floor{dir = 8; heat_capacity = 1; icon_state = "warning"},/area/centcom/suppy) -"gr" = (/obj/docking_port/stationary/transit{dwidth = 3; height = 7; id = "steel_rain_transit"; name = "steel_rain in transit"; width = 7},/turf/space/transit/horizontal,/area/space) -"gs" = (/turf/unsimulated/wall/fakeglass{icon_state = "fakewindows"; dir = 1},/area/centcom/suppy) -"gt" = (/obj/structure/urinal{pixel_y = 28},/turf/unsimulated/floor{icon_state = "freezerfloor"; dir = 2},/area/syndicate_mothership) -"gu" = (/turf/unsimulated/wall/fakeglass{icon_state = "fakewindows2"; dir = 1},/area/centcom/suppy) -"gv" = (/obj/structure/closet/crate,/turf/unsimulated/floor{tag = "icon-plating"; icon_state = "plating"},/area/centcom/suppy) -"gw" = (/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) -"gx" = (/obj/structure/mirror{pixel_x = 28},/obj/structure/sink{dir = 4; icon_state = "sink"; pixel_x = 11; pixel_y = 0},/turf/unsimulated/floor{icon_state = "freezerfloor"; dir = 2},/area/syndicate_mothership) -"gy" = (/obj/structure/toilet{dir = 8},/obj/structure/window/reinforced/tinted{dir = 1},/obj/machinery/door/window{dir = 8; name = "Tactical Toilet"; opacity = 1; req_access_txt = "150"},/turf/unsimulated/floor{icon_state = "freezerfloor"; dir = 2},/area/syndicate_mothership) +"gp" = (/obj/docking_port/stationary/transit{dwidth = 3;height = 5;id = "science_transit";name = "science in transit";turf_type = /turf/space/transit/horizontal;width = 7},/turf/space/transit/horizontal,/area/space) +"gq" = (/obj/machinery/computer/supplycomp,/turf/unsimulated/floor{dir = 8;heat_capacity = 1;icon_state = "warning"},/area/centcom/suppy) +"gr" = (/obj/docking_port/stationary/transit{dwidth = 3;height = 7;id = "steel_rain_transit";name = "steel_rain in transit";width = 7},/turf/space/transit/horizontal,/area/space) +"gs" = (/turf/unsimulated/wall/fakeglass{icon_state = "fakewindows";dir = 1},/area/centcom/suppy) +"gt" = (/obj/structure/urinal{pixel_y = 28},/turf/unsimulated/floor{icon_state = "freezerfloor";dir = 2},/area/syndicate_mothership) +"gu" = (/turf/unsimulated/wall/fakeglass{icon_state = "fakewindows2";dir = 1},/area/centcom/suppy) +"gv" = (/obj/structure/closet/crate,/turf/unsimulated/floor{tag = "icon-plating";icon_state = "plating"},/area/centcom/suppy) +"gw" = (/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) +"gx" = (/obj/structure/mirror{pixel_x = 28},/obj/structure/sink{dir = 4;icon_state = "sink";pixel_x = 11;pixel_y = 0},/turf/unsimulated/floor{icon_state = "freezerfloor";dir = 2},/area/syndicate_mothership) +"gy" = (/obj/structure/toilet{dir = 8},/obj/structure/window/reinforced/tinted{dir = 1},/obj/machinery/door/window{dir = 8;name = "Tactical Toilet";opacity = 1;req_access_txt = "150"},/turf/unsimulated/floor{icon_state = "freezerfloor";dir = 2},/area/syndicate_mothership) "gz" = (/turf/unsimulated/wall/fakeglass,/area/centcom/suppy) -"gA" = (/obj/machinery/door/airlock/centcom{name = "Crate Storage"; req_access_txt = "106"},/turf/unsimulated/floor{icon_state = "floor"},/area/centcom/suppy) -"gB" = (/obj/machinery/light{dir = 1; on = 1},/turf/simulated/floor/plating/airless,/area/syndicate_mothership) +"gA" = (/obj/machinery/door/airlock/centcom{name = "Crate Storage";req_access_txt = "106"},/turf/unsimulated/floor{icon_state = "floor"},/area/centcom/suppy) +"gB" = (/obj/machinery/light{dir = 1;on = 1},/turf/simulated/floor/plating/airless,/area/syndicate_mothership) "gC" = (/obj/effect/decal/warning_stripes/southeastcorner,/turf/simulated/floor/plating/airless,/area/syndicate_mothership) "gD" = (/turf/simulated/floor/plating/airless,/area/syndicate_mothership) "gE" = (/obj/effect/decal/warning_stripes/south,/turf/simulated/floor/plating/airless,/area/syndicate_mothership) -"gF" = (/obj/structure/table,/obj/item/paper_bin,/turf/unsimulated/floor{tag = "icon-warningcorner (EAST)"; icon_state = "warningcorner"; dir = 4},/area/centcom/suppy) +"gF" = (/obj/structure/table,/obj/item/paper_bin,/turf/unsimulated/floor{tag = "icon-warningcorner (EAST)";icon_state = "warningcorner";dir = 4},/area/centcom/suppy) "gG" = (/obj/structure/table,/obj/item/clipboard,/obj/item/coin/silver,/turf/unsimulated/floor,/area/centcom/suppy) -"gH" = (/obj/structure/table,/obj/item/pen/blue{pixel_x = 4; pixel_y = 4},/obj/item/pen/red,/obj/item/pen{pixel_x = 8; pixel_y = 8},/turf/unsimulated/floor{icon_state = "floor"},/area/centcom/suppy) +"gH" = (/obj/structure/table,/obj/item/pen/blue{pixel_x = 4;pixel_y = 4},/obj/item/pen/red,/obj/item/pen{pixel_x = 8;pixel_y = 8},/turf/unsimulated/floor{icon_state = "floor"},/area/centcom/suppy) "gI" = (/turf/unsimulated/floor,/area/centcom/suppy) "gJ" = (/obj/effect/decal/warning_stripes/south,/obj/machinery/light{dir = 1},/turf/simulated/floor/plating/airless,/area/syndicate_mothership) "gK" = (/obj/effect/decal/warning_stripes/southwestcorner,/turf/simulated/floor/plating/airless,/area/syndicate_mothership) "gL" = (/obj/machinery/light{dir = 1},/turf/simulated/floor/plating/airless,/area/syndicate_mothership) -"gM" = (/obj/machinery/door/airlock/centcom{name = "Centcom Supply"; req_access_txt = "106"},/turf/unsimulated/floor{tag = "icon-brown"; icon_state = "brown"},/area/centcom/suppy) +"gM" = (/obj/machinery/door/airlock/centcom{name = "Centcom Supply";req_access_txt = "106"},/turf/unsimulated/floor{tag = "icon-brown";icon_state = "brown"},/area/centcom/suppy) "gN" = (/turf/unsimulated/wall,/area/centcom/evac) "gO" = (/turf/unsimulated/wall,/area/centcom/control) "gP" = (/obj/structure/flora/ausbushes/brflowers,/turf/unsimulated/floor/grass,/area/centcom/control) -"gQ" = (/turf/unsimulated/wall/fakeglass{icon_state = "fakewindows"; dir = 1},/area/centcom/control) -"gR" = (/turf/unsimulated/floor{dir = 1; icon_state = "green"},/area/centcom/control) -"gS" = (/turf/unsimulated/floor{tag = "icon-darkred (NORTHWEST)"; icon_state = "darkred"; dir = 9},/area/centcom/evac) -"gT" = (/turf/unsimulated/floor{tag = "icon-darkred (NORTH)"; icon_state = "darkred"; dir = 1},/area/centcom/evac) -"gU" = (/obj/structure/table,/obj/item/storage/box/handcuffs,/turf/unsimulated/floor{tag = "icon-darkred (NORTHEAST)"; icon_state = "darkred"; dir = 5},/area/centcom/evac) +"gQ" = (/turf/unsimulated/wall/fakeglass{icon_state = "fakewindows";dir = 1},/area/centcom/control) +"gR" = (/turf/unsimulated/floor{dir = 1;icon_state = "green"},/area/centcom/control) +"gS" = (/turf/unsimulated/floor{tag = "icon-darkred (NORTHWEST)";icon_state = "darkred";dir = 9},/area/centcom/evac) +"gT" = (/turf/unsimulated/floor{tag = "icon-darkred (NORTH)";icon_state = "darkred";dir = 1},/area/centcom/evac) +"gU" = (/obj/structure/table,/obj/item/storage/box/handcuffs,/turf/unsimulated/floor{tag = "icon-darkred (NORTHEAST)";icon_state = "darkred";dir = 5},/area/centcom/evac) "gV" = (/turf/unsimulated/wall,/area/centcom/ferry) "gW" = (/obj/structure/flora/ausbushes/palebush,/turf/unsimulated/floor/grass,/area/centcom/control) -"gX" = (/turf/unsimulated/wall/fakeglass{icon_state = "fakewindows2"; dir = 1},/area/centcom/control) +"gX" = (/turf/unsimulated/wall/fakeglass{icon_state = "fakewindows2";dir = 1},/area/centcom/control) "gY" = (/turf/unsimulated/floor{icon_state = "floor"},/area/centcom/control) "gZ" = (/turf/unsimulated/wall/fakedoor{name = "Centcom Security"},/area/centcom/evac) "ha" = (/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/evac) -"hb" = (/obj/structure/table/wood,/obj/item/paper_bin{pixel_y = 4},/obj/item/pen,/turf/unsimulated/floor{dir = 8; icon_state = "wood"},/area/centcom/ferry) -"hc" = (/turf/unsimulated/floor{dir = 8; icon_state = "wood"},/area/centcom/ferry) -"hd" = (/obj/structure/mirror{pixel_y = 32},/obj/structure/dresser,/turf/unsimulated/floor{dir = 8; icon_state = "wood"},/area/centcom/ferry) -"he" = (/obj/machinery/vending/autodrobe,/turf/unsimulated/floor{dir = 8; icon_state = "wood"},/area/centcom/ferry) +"hb" = (/obj/structure/table/wood,/obj/item/paper_bin{pixel_y = 4},/obj/item/pen,/turf/unsimulated/floor{dir = 8;icon_state = "wood"},/area/centcom/ferry) +"hc" = (/turf/unsimulated/floor{dir = 8;icon_state = "wood"},/area/centcom/ferry) +"hd" = (/obj/structure/mirror{pixel_y = 32},/obj/structure/dresser,/turf/unsimulated/floor{dir = 8;icon_state = "wood"},/area/centcom/ferry) +"he" = (/obj/machinery/vending/autodrobe,/turf/unsimulated/floor{dir = 8;icon_state = "wood"},/area/centcom/ferry) "hf" = (/turf/unsimulated/wall/fakeglass,/area/centcom/control) -"hg" = (/obj/structure/table/reinforced,/obj/item/clipboard,/turf/unsimulated/floor{tag = "icon-darkred (WEST)"; icon_state = "darkred"; dir = 8},/area/centcom/evac) -"hh" = (/obj/structure/chair/office/dark,/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/evac) +"hg" = (/obj/structure/table/reinforced,/obj/item/clipboard,/turf/unsimulated/floor{tag = "icon-darkred (WEST)";icon_state = "darkred";dir = 8},/area/centcom/evac) "hi" = (/obj/effect/decal/warning_stripes/southeast,/turf/simulated/floor/plating/airless,/area/syndicate_mothership) "hj" = (/turf/simulated/shuttle/wall{icon_state = "wall3"},/area/shuttle/assault_pod) -"hk" = (/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) -"hl" = (/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) +"hk" = (/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) +"hl" = (/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) "hm" = (/obj/effect/decal/warning_stripes/southwest,/turf/simulated/floor/plating/airless,/area/syndicate_mothership) -"hn" = (/obj/item/radio/intercom/syndicate{pixel_x = 0; pixel_y = 25},/obj/item/twohanded/required/kirbyplants,/turf/unsimulated/floor{icon_state = "bar"; dir = 2},/area/syndicate_mothership) +"hn" = (/obj/item/radio/intercom/syndicate{pixel_x = 0;pixel_y = 25},/obj/item/twohanded/required/kirbyplants,/turf/unsimulated/floor{icon_state = "bar";dir = 2},/area/syndicate_mothership) "ho" = (/obj/effect/decal/warning_stripes/east,/turf/simulated/floor/plating/airless,/area/syndicate_mothership) -"hp" = (/obj/structure/table/wood,/turf/unsimulated/floor{dir = 8; icon_state = "wood"},/area/centcom/ferry) -"hq" = (/obj/structure/chair/comfy/black{dir = 8},/obj/effect/landmark{name = "ERT Director"},/turf/unsimulated/floor{dir = 8; icon_state = "wood"},/area/centcom/ferry) -"hr" = (/turf/unsimulated/wall/fakeglass{icon_state = "fakewindows2"; dir = 6},/area/centcom/control) -"hs" = (/obj/machinery/door/window/northleft{dir = 2; name = "Centcom Security"; req_access_txt = "101"},/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/evac) -"ht" = (/obj/structure/table/reinforced,/turf/unsimulated/floor{tag = "icon-darkred (SOUTHWEST)"; icon_state = "darkred"; dir = 10},/area/centcom/evac) -"hu" = (/obj/structure/table/reinforced,/obj/item/pen,/turf/unsimulated/floor{tag = "icon-darkred"; icon_state = "darkred"; dir = 2},/area/centcom/evac) -"hv" = (/obj/structure/table/reinforced,/obj/item/paper_bin,/turf/unsimulated/floor{tag = "icon-darkred"; icon_state = "darkred"; dir = 2},/area/centcom/evac) -"hw" = (/obj/structure/chair{dir = 4},/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/shuttle/assault_pod) -"hx" = (/obj/structure/chair{dir = 8},/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/shuttle/assault_pod) +"hp" = (/obj/structure/table/wood,/turf/unsimulated/floor{dir = 8;icon_state = "wood"},/area/centcom/ferry) +"hr" = (/turf/unsimulated/wall/fakeglass{icon_state = "fakewindows2";dir = 6},/area/centcom/control) +"hs" = (/obj/machinery/door/window/northleft{dir = 2;name = "Centcom Security";req_access_txt = "101"},/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/evac) +"ht" = (/obj/structure/table/reinforced,/turf/unsimulated/floor{tag = "icon-darkred (SOUTHWEST)";icon_state = "darkred";dir = 10},/area/centcom/evac) +"hu" = (/obj/structure/table/reinforced,/obj/item/pen,/turf/unsimulated/floor{tag = "icon-darkred";icon_state = "darkred";dir = 2},/area/centcom/evac) +"hv" = (/obj/structure/table/reinforced,/obj/item/paper_bin,/turf/unsimulated/floor{tag = "icon-darkred";icon_state = "darkred";dir = 2},/area/centcom/evac) "hy" = (/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/shuttle/assault_pod) "hz" = (/obj/effect/decal/warning_stripes/west,/turf/simulated/floor/plating/airless,/area/syndicate_mothership) -"hA" = (/obj/structure/chair{dir = 1},/obj/machinery/light/small,/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/shuttle/assault_pod) "hB" = (/turf/simulated/floor/plating,/area/syndicate_mothership) "hC" = (/obj/machinery/door/airlock/external{req_access_txt = "150"},/turf/simulated/floor/plating,/area/syndicate_mothership) "hD" = (/obj/machinery/light,/turf/simulated/floor/plating,/area/syndicate_mothership) -"hE" = (/obj/structure/chair{dir = 8},/obj/machinery/light/small{tag = "icon-bulb1 (EAST)"; icon_state = "bulb1"; dir = 4},/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/shuttle/assault_pod) -"hF" = (/obj/structure/chair{dir = 4},/obj/machinery/light/small{tag = "icon-bulb1 (WEST)"; icon_state = "bulb1"; dir = 8},/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/shuttle/assault_pod) "hG" = (/obj/machinery/computer/shuttle/syndicate/drop_pod,/turf/simulated/shuttle/wall{icon_state = "wall3"},/area/shuttle/assault_pod) -"hH" = (/obj/structure/chair,/obj/machinery/light/small{dir = 1},/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/shuttle/assault_pod) -"hI" = (/obj/item/mop,/obj/structure/mirror{pixel_x = 28},/obj/item/twohanded/required/kirbyplants,/turf/unsimulated/floor{icon_state = "freezerfloor"; dir = 2},/area/syndicate_mothership) -"hJ" = (/obj/machinery/vending/clothing,/turf/unsimulated/floor{dir = 8; icon_state = "wood"},/area/centcom/ferry) +"hI" = (/obj/item/mop,/obj/structure/mirror{pixel_x = 28},/obj/item/twohanded/required/kirbyplants,/turf/unsimulated/floor{icon_state = "freezerfloor";dir = 2},/area/syndicate_mothership) +"hJ" = (/obj/machinery/vending/clothing,/turf/unsimulated/floor{dir = 8;icon_state = "wood"},/area/centcom/ferry) "hK" = (/turf/unsimulated/floor/grass,/area/centcom/control) -"hL" = (/turf/unsimulated/floor{icon_state = "greencorner"; dir = 8},/area/centcom/control) +"hL" = (/turf/unsimulated/floor{icon_state = "greencorner";dir = 8},/area/centcom/control) "hM" = (/turf/unsimulated/floor{icon_state = "greencorner"},/area/centcom/control) -"hN" = (/obj/item/twohanded/required/kirbyplants,/turf/unsimulated/floor{icon_state = "green"; dir = 9},/area/centcom/evac) -"hO" = (/obj/structure/chair,/turf/unsimulated/floor{dir = 1; icon_state = "green"},/area/centcom/evac) -"hP" = (/turf/unsimulated/floor{dir = 1; icon_state = "green"},/area/centcom/evac) -"hQ" = (/obj/structure/rack,/turf/unsimulated/floor{dir = 1; icon_state = "green"},/area/centcom/evac) -"hR" = (/obj/structure/rack,/obj/item/storage/fancy/crayons,/obj/item/toy/sword,/turf/unsimulated/floor{dir = 1; icon_state = "green"},/area/centcom/evac) -"hS" = (/turf/unsimulated/wall/fakeglass{icon_state = "fakewindows"; dir = 1},/area/centcom/evac) +"hN" = (/obj/item/twohanded/required/kirbyplants,/turf/unsimulated/floor{icon_state = "green";dir = 9},/area/centcom/evac) +"hP" = (/turf/unsimulated/floor{dir = 1;icon_state = "green"},/area/centcom/evac) +"hQ" = (/obj/structure/rack,/turf/unsimulated/floor{dir = 1;icon_state = "green"},/area/centcom/evac) +"hR" = (/obj/structure/rack,/obj/item/storage/fancy/crayons,/obj/item/toy/sword,/turf/unsimulated/floor{dir = 1;icon_state = "green"},/area/centcom/evac) +"hS" = (/turf/unsimulated/wall/fakeglass{icon_state = "fakewindows";dir = 1},/area/centcom/evac) "hT" = (/obj/structure/flora/tree/pine{pixel_x = 1},/obj/structure/flora/grass/brown,/turf/unsimulated/floor/snow,/area/syndicate_mothership) "hU" = (/obj/effect/decal/warning_stripes/northeast,/turf/simulated/floor/plating/airless,/area/syndicate_mothership) "hV" = (/obj/effect/decal/warning_stripes/northeastcorner,/turf/simulated/floor/plating/airless,/area/syndicate_mothership) -"hW" = (/obj/machinery/door/airlock/centcom{aiControlDisabled = 1; name = "Assault Pod"; opacity = 1; req_one_access_txt = "150"},/obj/docking_port/mobile/assault_pod,/turf/simulated/floor/plating,/area/shuttle/assault_pod) -"hX" = (/obj/machinery/door/airlock/centcom{name = "Dressing Room"; opacity = 1; req_access_txt = "0"},/turf/unsimulated/floor{dir = 8; icon_state = "wood"},/area/centcom/ferry) -"hY" = (/obj/structure/chair{dir = 4},/turf/unsimulated/floor{icon_state = "green"; dir = 8},/area/centcom/control) -"hZ" = (/turf/unsimulated/floor{icon_state = "greencorner"; dir = 4},/area/centcom/control) -"ia" = (/obj/structure/chair{dir = 4},/turf/unsimulated/floor{icon_state = "green"; dir = 8},/area/centcom/evac) +"hW" = (/obj/machinery/door/airlock/centcom{aiControlDisabled = 1;name = "Assault Pod";opacity = 1;req_one_access_txt = "150"},/obj/docking_port/mobile/assault_pod,/turf/simulated/floor/plating,/area/shuttle/assault_pod) +"hX" = (/obj/machinery/door/airlock/centcom{name = "Dressing Room";opacity = 1;req_access_txt = "0"},/turf/unsimulated/floor{dir = 8;icon_state = "wood"},/area/centcom/ferry) +"hZ" = (/turf/unsimulated/floor{icon_state = "greencorner";dir = 4},/area/centcom/control) "ib" = (/turf/unsimulated/floor{icon_state = "floor"},/area/centcom/evac) -"ic" = (/turf/unsimulated/wall/fakeglass{icon_state = "fakewindows2"; dir = 1},/area/centcom/evac) +"ic" = (/turf/unsimulated/wall/fakeglass{icon_state = "fakewindows2";dir = 1},/area/centcom/evac) "id" = (/obj/effect/decal/warning_stripes/northwest,/turf/simulated/floor/plating/airless,/area/syndicate_mothership) "ie" = (/obj/effect/decal/warning_stripes/northwestcorner,/turf/simulated/floor/plating/airless,/area/syndicate_mothership) "if" = (/obj/machinery/light,/turf/simulated/floor/plating/airless,/area/syndicate_mothership) "ig" = (/obj/effect/decal/warning_stripes/north,/turf/simulated/floor/plating/airless,/area/syndicate_mothership) "ih" = (/obj/effect/decal/warning_stripes/north,/obj/machinery/light,/turf/simulated/floor/plating/airless,/area/syndicate_mothership) "ii" = (/turf/unsimulated/floor{name = "plating"},/area/centcom/ferry) -"ij" = (/turf/unsimulated/wall/fakeglass{icon_state = "fakewindows"; dir = 1},/area/centcom/ferry) -"ik" = (/turf/unsimulated/floor{tag = "icon-warndark (WEST)"; icon_state = "warndark"; dir = 8},/area/centcom/ferry) +"ij" = (/turf/unsimulated/wall/fakeglass{icon_state = "fakewindows";dir = 1},/area/centcom/ferry) +"ik" = (/turf/unsimulated/floor{tag = "icon-warndark (WEST)";icon_state = "warndark";dir = 8},/area/centcom/ferry) "il" = (/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/ferry) -"im" = (/turf/unsimulated/floor{tag = "icon-darkgreen (EAST)"; icon_state = "darkgreen"; dir = 4},/area/centcom/ferry) -"in" = (/turf/unsimulated/floor{dir = 4; heat_capacity = 1; icon_state = "warning"},/area/centcom/control) -"io" = (/obj/machinery/door/airlock/centcom{name = "Centcom Customs"; opacity = 1; req_access_txt = "109"},/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/control) +"im" = (/turf/unsimulated/floor{tag = "icon-darkgreen (EAST)";icon_state = "darkgreen";dir = 4},/area/centcom/ferry) +"in" = (/turf/unsimulated/floor{dir = 4;heat_capacity = 1;icon_state = "warning"},/area/centcom/control) +"io" = (/obj/machinery/door/airlock/centcom{name = "Centcom Customs";opacity = 1;req_access_txt = "109"},/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/control) "ip" = (/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/control) "iq" = (/obj/structure/table,/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/control) -"ir" = (/turf/unsimulated/wall/fakeglass{tag = "icon-fakewindows (SOUTHWEST)"; icon_state = "fakewindows"; dir = 10},/area/centcom/evac) -"is" = (/turf/unsimulated/wall/fakeglass{icon_state = "fakewindows2"; dir = 8},/area/centcom/evac) -"it" = (/turf/unsimulated/wall/fakeglass{icon_state = "fakewindows"; dir = 4},/area/centcom/evac) -"iu" = (/obj/machinery/door/airlock/centcom{name = "Centcom Security"; opacity = 1; req_access_txt = "0"},/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/evac) -"iv" = (/turf/unsimulated/wall/fakeglass{icon_state = "fakewindows"; dir = 8},/area/centcom/evac) -"iw" = (/obj/item/soap/syndie,/obj/structure/mopbucket,/obj/machinery/light{dir = 1},/turf/unsimulated/floor{icon_state = "freezerfloor"; dir = 2},/area/syndicate_mothership) -"ix" = (/obj/structure/table/wood,/obj/item/pizzabox,/obj/item/paicard/syndicate,/turf/unsimulated/floor{icon_state = "bar"; dir = 2},/area/syndicate_mothership) -"iy" = (/obj/structure/table/wood,/obj/item/toy/nuke,/turf/unsimulated/floor{dir = 2; icon_state = "wood"},/area/syndicate_mothership) +"ir" = (/turf/unsimulated/wall/fakeglass{tag = "icon-fakewindows (SOUTHWEST)";icon_state = "fakewindows";dir = 10},/area/centcom/evac) +"is" = (/turf/unsimulated/wall/fakeglass{icon_state = "fakewindows2";dir = 8},/area/centcom/evac) +"it" = (/turf/unsimulated/wall/fakeglass{icon_state = "fakewindows";dir = 4},/area/centcom/evac) +"iu" = (/obj/machinery/door/airlock/centcom{name = "Centcom Security";opacity = 1;req_access_txt = "0"},/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/evac) +"iv" = (/turf/unsimulated/wall/fakeglass{icon_state = "fakewindows";dir = 8},/area/centcom/evac) +"iw" = (/obj/item/soap/syndie,/obj/structure/mopbucket,/obj/machinery/light{dir = 1},/turf/unsimulated/floor{icon_state = "freezerfloor";dir = 2},/area/syndicate_mothership) +"ix" = (/obj/structure/table/wood,/obj/item/pizzabox,/obj/item/paicard/syndicate,/turf/unsimulated/floor{icon_state = "bar";dir = 2},/area/syndicate_mothership) +"iy" = (/obj/structure/table/wood,/obj/item/toy/nuke,/turf/unsimulated/floor{dir = 2;icon_state = "wood"},/area/syndicate_mothership) "iz" = (/obj/effect/landmark{name = "Commando"},/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/ferry) -"iA" = (/obj/structure/chair/office/dark,/obj/effect/landmark{name = "Response Team"},/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/ferry) -"iB" = (/obj/structure/chair/office/dark{dir = 8},/obj/effect/landmark{name = "Response Team"},/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/ferry) -"iC" = (/obj/structure/chair/office/dark{dir = 4},/obj/effect/landmark{name = "Response Team"},/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/ferry) "iD" = (/turf/unsimulated/floor{name = "plating"},/area/space) -"iE" = (/turf/unsimulated/wall/fakeglass{icon_state = "fakewindows2"; dir = 1},/area/centcom/ferry) -"iF" = (/obj/structure/chair/office/dark{dir = 1},/obj/effect/landmark{name = "Response Team"},/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/ferry) +"iE" = (/turf/unsimulated/wall/fakeglass{icon_state = "fakewindows2";dir = 1},/area/centcom/ferry) "iG" = (/obj/structure/table,/obj/item/paper_bin,/obj/item/pen,/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/control) -"iH" = (/obj/structure/chair/office/dark,/turf/unsimulated/floor{icon_state = "floor"},/area/centcom/evac) -"iI" = (/obj/structure/table/reinforced,/obj/structure/window/reinforced{dir = 4},/turf/unsimulated/floor{icon_state = "green"; dir = 4},/area/centcom/evac) -"iJ" = (/turf/unsimulated/floor{tag = "icon-yellowsiding (WEST)"; icon_state = "yellowsiding"; dir = 8},/area/centcom/evac) -"iK" = (/turf/unsimulated/floor{dir = 4; heat_capacity = 1; icon_state = "warning"},/area/centcom/evac) +"iI" = (/obj/structure/table/reinforced,/obj/structure/window/reinforced{dir = 4},/turf/unsimulated/floor{icon_state = "green";dir = 4},/area/centcom/evac) +"iJ" = (/turf/unsimulated/floor{tag = "icon-yellowsiding (WEST)";icon_state = "yellowsiding";dir = 8},/area/centcom/evac) +"iK" = (/turf/unsimulated/floor{dir = 4;heat_capacity = 1;icon_state = "warning"},/area/centcom/evac) "iL" = (/turf/unsimulated/wall/fakeglass{dir = 1},/area/centcom/evac) -"iM" = (/obj/machinery/door/airlock/external{name = "Port Docking Bay 1"; id_tag = "emergency_away"},/turf/unsimulated/floor{dir = 4; heat_capacity = 1; icon_state = "warning"},/area/centcom/evac) -"iN" = (/obj/machinery/door/airlock/external{name = "Port Docking Bay 1"; id_tag = "emergency_away"},/turf/space,/area/centcom/evac) -"iO" = (/obj/docking_port/stationary{dir = 2; dwidth = 5; height = 14; id = "emergency_away"; name = "emergency centcom"; width = 25},/turf/space,/area/space) -"iP" = (/obj/machinery/door/airlock/centcom{name = "Thunderdome"; opacity = 1; req_access_txt = "101"},/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/tdome/tdomeadmin) -"iQ" = (/turf/unsimulated/floor{icon_state = "redbluefull"; dir = 2},/area/tdome/tdomeadmin) -"iR" = (/obj/structure/chair,/obj/effect/landmark{name = "tdomeobserve"},/turf/unsimulated/floor{icon_state = "redbluefull"; dir = 2},/area/tdome/tdomeadmin) +"iM" = (/obj/machinery/door/airlock/external{name = "Port Docking Bay 1";id_tag = "emergency_away"},/turf/unsimulated/floor{dir = 4;heat_capacity = 1;icon_state = "warning"},/area/centcom/evac) +"iN" = (/obj/machinery/door/airlock/external{name = "Port Docking Bay 1";id_tag = "emergency_away"},/turf/space,/area/centcom/evac) +"iO" = (/obj/docking_port/stationary{dir = 2;dwidth = 5;height = 14;id = "emergency_away";name = "emergency centcom";width = 25},/turf/space,/area/space) +"iP" = (/obj/machinery/door/airlock/centcom{name = "Thunderdome";opacity = 1;req_access_txt = "101"},/turf/unsimulated/floor{icon_state = "vault";dir = 5},/area/tdome/tdomeadmin) +"iQ" = (/turf/unsimulated/floor{icon_state = "redbluefull";dir = 2},/area/tdome/tdomeadmin) "iS" = (/turf/unsimulated/wall,/area/syndicate_mothership) "iT" = (/turf/unsimulated/wall/fakedoor{name = "Thunderdome"},/area/tdome/tdomeadmin) -"iU" = (/obj/machinery/computer/security/telescreen,/turf/unsimulated/floor{icon_state = "redbluefull"; dir = 2},/area/tdome/tdomeadmin) +"iU" = (/obj/machinery/computer/security/telescreen,/turf/unsimulated/floor{icon_state = "redbluefull";dir = 2},/area/tdome/tdomeadmin) "iV" = (/turf/unsimulated/floor{icon_state = "redyellowfull"},/area/tdome/tdomeobserve) -"iW" = (/obj/structure/chair{dir = 1},/obj/effect/landmark{name = "tdomeadmin"},/turf/unsimulated/floor{icon_state = "redyellowfull"},/area/tdome/tdomeobserve) "iX" = (/obj/structure/table,/obj/machinery/computer/security/telescreen{pixel_y = 0},/turf/unsimulated/floor{icon_state = "redyellowfull"},/area/tdome/tdomeobserve) -"iY" = (/obj/machinery/flasher_button{id = "tdomeflash"; pixel_x = 0; pixel_y = 0},/obj/structure/table,/turf/unsimulated/floor{icon_state = "redyellowfull"},/area/tdome/tdomeobserve) -"iZ" = (/obj/structure/sign/securearea{desc = "A warning sign which reads 'EXTERNAL AIRLOCK'"; icon_state = "space"; layer = 4; name = "EXTERNAL AIRLOCK"; pixel_x = 0},/turf/unsimulated/wall/fakeglass{icon_state = "fakewindows"; dir = 8},/area/centcom/ferry) -"ja" = (/turf/unsimulated/wall/fakeglass{tag = "icon-fakewindows (SOUTHEAST)"; icon_state = "fakewindows"; dir = 6},/area/centcom/ferry) -"jb" = (/turf/unsimulated/floor{icon_state = "green"; dir = 4},/area/centcom/control) -"jc" = (/obj/machinery/door_control{desc = "A remote control switch for port-side blast doors."; icon_state = "doorctrl0"; id = "CentComPort"; name = "Security Doors"; pixel_y = 28; req_access_txt = "101"},/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/control) -"jd" = (/obj/structure/chair/office/dark{dir = 8},/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/control) -"je" = (/obj/structure/table,/obj/item/stamp{pixel_x = -3; pixel_y = 3},/obj/item/stamp/denied{pixel_x = 4; pixel_y = -2},/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/control) -"jf" = (/turf/unsimulated/floor{icon_state = "greencorner"; dir = 1},/area/centcom/evac) +"iY" = (/obj/machinery/flasher_button{id = "tdomeflash";pixel_x = 0;pixel_y = 0},/obj/structure/table,/turf/unsimulated/floor{icon_state = "redyellowfull"},/area/tdome/tdomeobserve) +"iZ" = (/obj/structure/sign/securearea{desc = "A warning sign which reads 'EXTERNAL AIRLOCK'";icon_state = "space";layer = 4;name = "EXTERNAL AIRLOCK";pixel_x = 0},/turf/unsimulated/wall/fakeglass{icon_state = "fakewindows";dir = 8},/area/centcom/ferry) +"ja" = (/turf/unsimulated/wall/fakeglass{tag = "icon-fakewindows (SOUTHEAST)";icon_state = "fakewindows";dir = 6},/area/centcom/ferry) +"jb" = (/turf/unsimulated/floor{icon_state = "green";dir = 4},/area/centcom/control) +"jc" = (/obj/machinery/door_control{desc = "A remote control switch for port-side blast doors.";icon_state = "doorctrl0";id = "CentComPort";name = "Security Doors";pixel_y = 28;req_access_txt = "101"},/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/control) +"je" = (/obj/structure/table,/obj/item/stamp{pixel_x = -3;pixel_y = 3},/obj/item/stamp/denied{pixel_x = 4;pixel_y = -2},/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/control) +"jf" = (/turf/unsimulated/floor{icon_state = "greencorner";dir = 1},/area/centcom/evac) "jg" = (/obj/structure/table/reinforced,/obj/item/paper_bin,/turf/unsimulated/floor{icon_state = "green"},/area/centcom/evac) "jh" = (/obj/structure/table/reinforced,/obj/item/pen,/turf/unsimulated/floor{icon_state = "green"},/area/centcom/evac) -"ji" = (/obj/structure/table/reinforced,/obj/item/toy/carpplushie,/obj/structure/window/reinforced{dir = 4},/turf/unsimulated/floor{icon_state = "green"; dir = 6},/area/centcom/evac) -"jj" = (/obj/structure/chair/comfy/brown{dir = 1},/turf/unsimulated/floor{icon_state = "redyellowfull"},/area/tdome/tdomeobserve) +"ji" = (/obj/structure/table/reinforced,/obj/item/toy/carpplushie,/obj/structure/window/reinforced{dir = 4},/turf/unsimulated/floor{icon_state = "green";dir = 6},/area/centcom/evac) "jk" = (/obj/machinery/computer/security/telescreen{pixel_y = -32},/turf/unsimulated/floor{icon_state = "redyellowfull"},/area/tdome/tdomeobserve) "jl" = (/turf/unsimulated/wall/fakedoor{name = "Thunderdome Admin"},/area/tdome/tdomeobserve) -"jm" = (/obj/structure/table,/obj/machinery/door_control{id = "thunderdomehea"; name = "Heavy Supply Control"; pixel_y = 0; req_access_txt = "102"},/turf/unsimulated/floor{icon_state = "floor"},/area/tdome/tdomeobserve) -"jn" = (/obj/structure/table,/obj/machinery/door_control{id = "thunderdomegen"; name = "General Supply Control"; pixel_y = 0; req_access_txt = "102"},/turf/unsimulated/floor{icon_state = "floor"},/area/tdome/tdomeobserve) -"jo" = (/obj/structure/table,/obj/machinery/door_control{id = "thunderdome"; name = "Main Blast Doors Control"; pixel_y = 0; req_access_txt = "102"},/turf/unsimulated/floor{icon_state = "floor"},/area/tdome/tdomeobserve) +"jm" = (/obj/structure/table,/obj/machinery/door_control{id = "thunderdomehea";name = "Heavy Supply Control";pixel_y = 0;req_access_txt = "102"},/turf/unsimulated/floor{icon_state = "floor"},/area/tdome/tdomeobserve) +"jn" = (/obj/structure/table,/obj/machinery/door_control{id = "thunderdomegen";name = "General Supply Control";pixel_y = 0;req_access_txt = "102"},/turf/unsimulated/floor{icon_state = "floor"},/area/tdome/tdomeobserve) +"jo" = (/obj/structure/table,/obj/machinery/door_control{id = "thunderdome";name = "Main Blast Doors Control";pixel_y = 0;req_access_txt = "102"},/turf/unsimulated/floor{icon_state = "floor"},/area/tdome/tdomeobserve) "jp" = (/obj/effect/landmark/shuttle_import,/turf/space,/area/space) -"jq" = (/turf/simulated/shuttle/wall{icon_state = "swall_s6"; dir = 2},/area/shuttle/escape) -"jr" = (/turf/simulated/shuttle/wall{tag = "icon-swall12"; icon_state = "swall12"; dir = 2},/area/shuttle/escape) -"js" = (/turf/simulated/shuttle/wall{icon_state = "swall_s10"; dir = 2},/area/shuttle/escape) -"jt" = (/obj/machinery/door/airlock/external{name = "Ferry Airlock"; req_access_txt = "0"},/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/ferry) -"ju" = (/turf/unsimulated/floor{tag = "icon-warndark (EAST)"; icon_state = "warndark"; dir = 4},/area/centcom/ferry) -"jv" = (/turf/unsimulated/floor{tag = "icon-darkgreencorners (EAST)"; icon_state = "darkgreencorners"; dir = 4},/area/centcom/ferry) -"jw" = (/turf/unsimulated/wall/fakeglass{icon_state = "fakewindows2"; dir = 6},/area/centcom/ferry) -"jx" = (/turf/unsimulated/floor{icon_state = "greencorner"; dir = 1},/area/centcom/control) -"jy" = (/obj/structure/table/reinforced,/obj/machinery/door/window/brigdoor{base_state = "rightsecure"; dir = 1; icon_state = "rightsecure"; name = "Centcom Customs"; req_access_txt = "109"},/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/control) -"jz" = (/turf/unsimulated/floor{tag = "icon-warningcorner (NORTH)"; icon_state = "warningcorner"; dir = 1},/area/centcom/evac) -"jA" = (/turf/unsimulated/floor{tag = "icon-yellowsiding (NORTH)"; icon_state = "yellowsiding"; dir = 1},/area/centcom/evac) -"jB" = (/turf/unsimulated/floor{tag = "icon-yellowcornersiding (NORTH)"; icon_state = "yellowcornersiding"; dir = 1},/area/centcom/evac) -"jC" = (/turf/simulated/shuttle/wall{tag = "icon-swall3"; icon_state = "swall3"; dir = 2},/area/shuttle/escape) -"jD" = (/obj/structure/chair/sofa/right,/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/shuttle/escape) +"jq" = (/turf/simulated/shuttle/wall{icon_state = "swall_s6";dir = 2},/area/shuttle/escape) +"jr" = (/turf/simulated/shuttle/wall{tag = "icon-swall12";icon_state = "swall12";dir = 2},/area/shuttle/escape) +"js" = (/turf/simulated/shuttle/wall{icon_state = "swall_s10";dir = 2},/area/shuttle/escape) +"jt" = (/obj/machinery/door/airlock/external{name = "Ferry Airlock";req_access_txt = "0"},/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/ferry) +"ju" = (/turf/unsimulated/floor{tag = "icon-warndark (EAST)";icon_state = "warndark";dir = 4},/area/centcom/ferry) +"jv" = (/turf/unsimulated/floor{tag = "icon-darkgreencorners (EAST)";icon_state = "darkgreencorners";dir = 4},/area/centcom/ferry) +"jw" = (/turf/unsimulated/wall/fakeglass{icon_state = "fakewindows2";dir = 6},/area/centcom/ferry) +"jx" = (/turf/unsimulated/floor{icon_state = "greencorner";dir = 1},/area/centcom/control) +"jy" = (/obj/structure/table/reinforced,/obj/machinery/door/window/brigdoor{base_state = "rightsecure";dir = 1;icon_state = "rightsecure";name = "Centcom Customs";req_access_txt = "109"},/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/control) +"jz" = (/turf/unsimulated/floor{tag = "icon-warningcorner (NORTH)";icon_state = "warningcorner";dir = 1},/area/centcom/evac) +"jA" = (/turf/unsimulated/floor{tag = "icon-yellowsiding (NORTH)";icon_state = "yellowsiding";dir = 1},/area/centcom/evac) +"jB" = (/turf/unsimulated/floor{tag = "icon-yellowcornersiding (NORTH)";icon_state = "yellowcornersiding";dir = 1},/area/centcom/evac) +"jC" = (/turf/simulated/shuttle/wall{tag = "icon-swall3";icon_state = "swall3";dir = 2},/area/shuttle/escape) "jE" = (/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/shuttle/escape) -"jF" = (/obj/structure/chair/sofa,/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/shuttle/escape) -"jG" = (/obj/structure/chair/sofa/corner,/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/shuttle/escape) -"jH" = (/obj/machinery/door/airlock/external{id_tag = "specops_away"; name = "Shuttle Hatch"; req_access_txt = "109"},/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/evac) -"jI" = (/obj/machinery/door/airlock/shuttle,/obj/docking_port/mobile/emergency/backup{dwidth = 11; roundstart_move = null},/obj/docking_port/stationary{dir = 4; dwidth = 3; height = 8; id = "backup_away"; name = "Backup Shuttle Dock"; width = 8},/turf/unsimulated/floor{icon_state = "floor"},/area/shuttle/escape) -"jJ" = (/obj/machinery/door/airlock/external{id_tag = "specops_away"; name = "Shuttle Hatch"; req_access_txt = "109"},/turf/unsimulated/floor{icon_state = "floor"},/area/centcom/control) +"jH" = (/obj/machinery/door/airlock/external{id_tag = "specops_away";name = "Shuttle Hatch";req_access_txt = "109"},/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/evac) +"jI" = (/obj/machinery/door/airlock/shuttle,/obj/docking_port/mobile/emergency/backup{dwidth = 11;roundstart_move = null},/obj/docking_port/stationary{dir = 4;dwidth = 3;height = 8;id = "backup_away";name = "Backup Shuttle Dock";width = 8},/turf/unsimulated/floor{icon_state = "floor"},/area/shuttle/escape) +"jJ" = (/obj/machinery/door/airlock/external{id_tag = "specops_away";name = "Shuttle Hatch";req_access_txt = "109"},/turf/unsimulated/floor{icon_state = "floor"},/area/centcom/control) "jK" = (/obj/machinery/light/spot,/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/shuttle/escape) -"jL" = (/turf/simulated/shuttle/wall{icon_state = "swall_s5"; dir = 2},/area/shuttle/escape) -"jM" = (/turf/simulated/shuttle/wall{icon_state = "swall_s9"; dir = 2},/area/shuttle/escape) -"jN" = (/obj/machinery/shuttle_manipulator,/turf/unsimulated/floor{tag = "icon-light_on"; icon_state = "light_on"},/area/centcom/ferry) -"jO" = (/turf/unsimulated/floor{tag = "icon-light_on"; icon_state = "light_on"},/area/centcom/ferry) -"jP" = (/turf/unsimulated/wall/fakeglass{icon_state = "fakewindows"; dir = 5},/area/centcom/ferry) -"jQ" = (/obj/machinery/door/airlock/centcom{name = "Transport Shuttle"; opacity = 1; req_access_txt = "101"},/turf/unsimulated/floor{icon_state = "floor"},/area/centcom/ferry) +"jL" = (/turf/simulated/shuttle/wall{icon_state = "swall_s5";dir = 2},/area/shuttle/escape) +"jM" = (/turf/simulated/shuttle/wall{icon_state = "swall_s9";dir = 2},/area/shuttle/escape) +"jN" = (/obj/machinery/shuttle_manipulator,/turf/unsimulated/floor{tag = "icon-light_on";icon_state = "light_on"},/area/centcom/ferry) +"jO" = (/turf/unsimulated/floor{tag = "icon-light_on";icon_state = "light_on"},/area/centcom/ferry) +"jP" = (/turf/unsimulated/wall/fakeglass{icon_state = "fakewindows";dir = 5},/area/centcom/ferry) +"jQ" = (/obj/machinery/door/airlock/centcom{name = "Transport Shuttle";opacity = 1;req_access_txt = "101"},/turf/unsimulated/floor{icon_state = "floor"},/area/centcom/ferry) "jR" = (/turf/unsimulated/floor{icon_state = "floor"},/area/centcom/ferry) -"jS" = (/obj/machinery/door/airlock/centcom{name = "Centcom Docks"; opacity = 1; req_access_txt = "101"},/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/control) -"jT" = (/turf/unsimulated/floor{dir = 8; icon_state = "vault"},/area/centcom/control) -"jU" = (/obj/machinery/door/poddoor/preopen{id_tag = "CentComPort"; name = "security door"},/turf/unsimulated/floor{tag = "icon-loadingarea (WEST)"; icon_state = "loadingarea"; dir = 8},/area/centcom/control) -"jV" = (/turf/unsimulated/floor{dir = 8; heat_capacity = 1; icon_state = "warning"},/area/centcom/evac) -"jW" = (/obj/structure/sign/securearea{desc = "A warning sign which reads 'EXTERNAL AIRLOCK'"; icon_state = "space"; layer = 4; name = "EXTERNAL AIRLOCK"; pixel_x = 0},/turf/unsimulated/wall,/area/centcom/evac) -"jX" = (/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) -"jY" = (/obj/structure/chair/stool,/turf/unsimulated/floor{icon_state = "bar"; dir = 2},/area/syndicate_mothership) -"jZ" = (/obj/structure/chair/stool,/obj/effect/landmark{name = "Syndicate-Spawn"},/obj/effect/decal/warning_stripes/east,/turf/unsimulated/floor{icon_state = "bar"; dir = 2},/area/syndicate_mothership) -"ka" = (/obj/item/twohanded/required/kirbyplants,/turf/unsimulated/floor{icon_state = "bar"; dir = 2},/area/syndicate_mothership) -"kb" = (/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) -"kc" = (/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) -"kd" = (/obj/machinery/door_control{id = "nukeop_ready"; name = "Mission Launch Control"; pixel_x = -26; pixel_y = -2; req_access_txt = "151"},/obj/item/twohanded/required/kirbyplants,/turf/unsimulated/floor{icon_state = "bar"; dir = 2},/area/syndicate_mothership) -"ke" = (/turf/unsimulated/floor{tag = "icon-darkgreencorners"; icon_state = "darkgreencorners"},/area/centcom/ferry) -"kf" = (/turf/unsimulated/floor{tag = "icon-warningcorner (EAST)"; icon_state = "warningcorner"; dir = 4},/area/centcom/evac) -"kg" = (/turf/unsimulated/floor{tag = "icon-yellowsiding"; icon_state = "yellowsiding"},/area/centcom/evac) -"kh" = (/turf/unsimulated/floor{tag = "icon-yellowcornersiding (WEST)"; icon_state = "yellowcornersiding"; dir = 8},/area/centcom/evac) -"ki" = (/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) +"jS" = (/obj/machinery/door/airlock/centcom{name = "Centcom Docks";opacity = 1;req_access_txt = "101"},/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/control) +"jT" = (/turf/unsimulated/floor{dir = 8;icon_state = "vault"},/area/centcom/control) +"jU" = (/obj/machinery/door/poddoor/preopen{id_tag = "CentComPort";name = "security door"},/turf/unsimulated/floor{tag = "icon-loadingarea (WEST)";icon_state = "loadingarea";dir = 8},/area/centcom/control) +"jV" = (/turf/unsimulated/floor{dir = 8;heat_capacity = 1;icon_state = "warning"},/area/centcom/evac) +"jW" = (/obj/structure/sign/securearea{desc = "A warning sign which reads 'EXTERNAL AIRLOCK'";icon_state = "space";layer = 4;name = "EXTERNAL AIRLOCK";pixel_x = 0},/turf/unsimulated/wall,/area/centcom/evac) +"jX" = (/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) +"ka" = (/obj/item/twohanded/required/kirbyplants,/turf/unsimulated/floor{icon_state = "bar";dir = 2},/area/syndicate_mothership) +"kb" = (/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) +"kc" = (/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) +"kd" = (/obj/machinery/door_control{id = "nukeop_ready";name = "Mission Launch Control";pixel_x = -26;pixel_y = -2;req_access_txt = "151"},/obj/item/twohanded/required/kirbyplants,/turf/unsimulated/floor{icon_state = "bar";dir = 2},/area/syndicate_mothership) +"ke" = (/turf/unsimulated/floor{tag = "icon-darkgreencorners";icon_state = "darkgreencorners"},/area/centcom/ferry) +"kf" = (/turf/unsimulated/floor{tag = "icon-warningcorner (EAST)";icon_state = "warningcorner";dir = 4},/area/centcom/evac) +"kg" = (/turf/unsimulated/floor{tag = "icon-yellowsiding";icon_state = "yellowsiding"},/area/centcom/evac) +"kh" = (/turf/unsimulated/floor{tag = "icon-yellowcornersiding (WEST)";icon_state = "yellowcornersiding";dir = 8},/area/centcom/evac) +"ki" = (/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) "kj" = (/turf/unsimulated/wall/fakeglass,/area/centcom/ferry) -"kk" = (/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) -"kl" = (/obj/structure/chair{dir = 8},/turf/unsimulated/floor{icon_state = "green"; dir = 4},/area/centcom/control) -"km" = (/turf/unsimulated/floor{tag = "icon-redcorner (WEST)"; icon_state = "redcorner"; dir = 8},/area/centcom/evac) -"kn" = (/obj/structure/table/reinforced,/obj/item/paper_bin,/turf/unsimulated/floor{tag = "icon-red (NORTH)"; icon_state = "red"; dir = 1},/area/centcom/evac) -"ko" = (/obj/structure/table/reinforced,/obj/item/pen,/turf/unsimulated/floor{tag = "icon-red (NORTH)"; icon_state = "red"; dir = 1},/area/centcom/evac) -"kp" = (/obj/structure/table/reinforced,/obj/structure/window/reinforced{dir = 4},/turf/unsimulated/floor{tag = "icon-red (NORTHEAST)"; icon_state = "red"; dir = 5},/area/centcom/evac) -"kq" = (/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) +"kk" = (/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) +"km" = (/turf/unsimulated/floor{tag = "icon-redcorner (WEST)";icon_state = "redcorner";dir = 8},/area/centcom/evac) +"kn" = (/obj/structure/table/reinforced,/obj/item/paper_bin,/turf/unsimulated/floor{tag = "icon-red (NORTH)";icon_state = "red";dir = 1},/area/centcom/evac) +"ko" = (/obj/structure/table/reinforced,/obj/item/pen,/turf/unsimulated/floor{tag = "icon-red (NORTH)";icon_state = "red";dir = 1},/area/centcom/evac) +"kp" = (/obj/structure/table/reinforced,/obj/structure/window/reinforced{dir = 4},/turf/unsimulated/floor{tag = "icon-red (NORTHEAST)";icon_state = "red";dir = 5},/area/centcom/evac) +"kq" = (/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) "kr" = (/turf/unsimulated/floor/snow,/obj/structure/flora/tree/pine,/turf/unsimulated/floor/snow{icon_state = "gravsnow_corner"},/area/syndicate_mothership) -"ks" = (/obj/structure/chair/stool,/turf/unsimulated/floor{tag = "icon-dark"; icon_state = "dark"},/area/syndicate_mothership) "kt" = (/turf/unsimulated/floor/snow,/obj/structure/flora/grass/brown,/turf/unsimulated/floor/snow{icon_state = "gravsnow_corner"},/area/syndicate_mothership) -"ku" = (/turf/unsimulated/wall/fakeglass{icon_state = "fakewindows"; dir = 8},/area/centcom/ferry) -"kv" = (/turf/unsimulated/wall/fakeglass{icon_state = "fakewindows2"; dir = 8},/area/centcom/ferry) -"kw" = (/turf/unsimulated/wall/fakeglass{icon_state = "fakewindows"; dir = 4},/area/centcom/ferry) -"kx" = (/obj/machinery/door/airlock/centcom{name = "briefing room"; opacity = 1; req_access_txt = "101"},/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/ferry) -"ky" = (/obj/structure/chair{dir = 4},/turf/unsimulated/floor{dir = 8; icon_state = "red"},/area/centcom/evac) -"kz" = (/obj/structure/chair/office/dark{dir = 1},/turf/unsimulated/floor{icon_state = "floor"},/area/centcom/evac) -"kA" = (/obj/structure/table/reinforced,/obj/structure/window/reinforced{dir = 4},/turf/unsimulated/floor{tag = "icon-red (EAST)"; icon_state = "red"; dir = 4},/area/centcom/evac) -"kB" = (/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) -"kC" = (/obj/structure/shuttle/engine/propulsion{dir = 8; icon_state = "propulsion"; tag = "icon-propulsion (EAST)"},/turf/space/transit,/area/wizard_station) -"kD" = (/obj/structure/shuttle/engine/propulsion{dir = 4; icon_state = "propulsion"},/turf/space/transit,/area/wizard_station) +"ku" = (/turf/unsimulated/wall/fakeglass{icon_state = "fakewindows";dir = 8},/area/centcom/ferry) +"kv" = (/turf/unsimulated/wall/fakeglass{icon_state = "fakewindows2";dir = 8},/area/centcom/ferry) +"kw" = (/turf/unsimulated/wall/fakeglass{icon_state = "fakewindows";dir = 4},/area/centcom/ferry) +"kx" = (/obj/machinery/door/airlock/centcom{name = "briefing room";opacity = 1;req_access_txt = "101"},/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/ferry) +"kA" = (/obj/structure/table/reinforced,/obj/structure/window/reinforced{dir = 4},/turf/unsimulated/floor{tag = "icon-red (EAST)";icon_state = "red";dir = 4},/area/centcom/evac) +"kB" = (/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) +"kC" = (/obj/structure/shuttle/engine/propulsion{dir = 8;icon_state = "propulsion";tag = "icon-propulsion (EAST)"},/turf/space/transit,/area/wizard_station) +"kD" = (/obj/structure/shuttle/engine/propulsion{dir = 4;icon_state = "propulsion"},/turf/space/transit,/area/wizard_station) "kE" = (/turf/unsimulated/wall/abductor{icon_state = "alien21"},/area/abductor_ship) -"kF" = (/obj/structure/dresser,/obj/structure/mirror{pixel_x = 0; pixel_y = 30},/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/ferry) -"kG" = (/obj/structure/table/reinforced,/obj/item/paper_bin{pixel_x = -3; pixel_y = 5},/obj/item/pen/blue,/turf/unsimulated/floor{dir = 8; icon_state = "vault"},/area/centcom/ferry) -"kH" = (/obj/structure/chair/office/dark{dir = 8},/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/ferry) +"kF" = (/obj/structure/dresser,/obj/structure/mirror{pixel_x = 0;pixel_y = 30},/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/ferry) +"kG" = (/obj/structure/table/reinforced,/obj/item/paper_bin{pixel_x = -3;pixel_y = 5},/obj/item/pen/blue,/turf/unsimulated/floor{dir = 8;icon_state = "vault"},/area/centcom/ferry) "kI" = (/turf/unsimulated/wall/abductor{icon_state = "alien20"},/area/abductor_ship) "kJ" = (/turf/unsimulated/wall/abductor{icon_state = "alien23"},/area/abductor_ship) "kK" = (/turf/unsimulated/wall/abductor{icon_state = "alien22"},/area/abductor_ship) @@ -564,13 +509,13 @@ "kR" = (/turf/unsimulated/wall/abductor{icon_state = "alien19"},/area/abductor_ship) "kS" = (/turf/unsimulated/wall/abductor{icon_state = "alien18"},/area/abductor_ship) "kT" = (/obj/machinery/abductor/experiment{team = 4},/turf/unsimulated/floor/abductor,/area/abductor_ship) -"kU" = (/turf/unsimulated/floor{tag = "icon-darkblue (EAST)"; icon_state = "darkblue"; dir = 4},/area/centcom/ferry) +"kU" = (/turf/unsimulated/floor{tag = "icon-darkblue (EAST)";icon_state = "darkblue";dir = 4},/area/centcom/ferry) "kV" = (/turf/unsimulated/wall,/area/tdome/tdomeobserve) -"kW" = (/turf/unsimulated/wall/fakeglass{icon_state = "fakewindows"; dir = 9},/area/tdome/tdomeobserve) -"kX" = (/turf/unsimulated/wall/fakeglass{icon_state = "fakewindows"; dir = 4},/area/tdome/tdomeobserve) -"kY" = (/obj/machinery/door/airlock/centcom{name = "Thunderdome"; opacity = 1; req_access_txt = "101"},/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/tdome/tdomeobserve) -"kZ" = (/turf/unsimulated/wall/fakeglass{icon_state = "fakewindows"; dir = 8},/area/tdome/tdomeobserve) -"la" = (/turf/unsimulated/wall/fakeglass{icon_state = "fakewindows"; dir = 5},/area/tdome/tdomeobserve) +"kW" = (/turf/unsimulated/wall/fakeglass{icon_state = "fakewindows";dir = 9},/area/tdome/tdomeobserve) +"kX" = (/turf/unsimulated/wall/fakeglass{icon_state = "fakewindows";dir = 4},/area/tdome/tdomeobserve) +"kY" = (/obj/machinery/door/airlock/centcom{name = "Thunderdome";opacity = 1;req_access_txt = "101"},/turf/unsimulated/floor{icon_state = "vault";dir = 5},/area/tdome/tdomeobserve) +"kZ" = (/turf/unsimulated/wall/fakeglass{icon_state = "fakewindows";dir = 8},/area/tdome/tdomeobserve) +"la" = (/turf/unsimulated/wall/fakeglass{icon_state = "fakewindows";dir = 5},/area/tdome/tdomeobserve) "lb" = (/obj/machinery/abductor/pad{team = 4},/turf/unsimulated/floor/abductor,/area/abductor_ship) "lc" = (/obj/machinery/abductor/console{team = 4},/turf/unsimulated/floor/abductor,/area/abductor_ship) "ld" = (/turf/unsimulated/wall/abductor{icon_state = "alien14"},/area/abductor_ship) @@ -582,23 +527,22 @@ "lj" = (/turf/unsimulated/wall/abductor{icon_state = "alien12"},/area/abductor_ship) "lk" = (/obj/effect/landmark/abductor/scientist,/turf/unsimulated/floor/abductor,/area/abductor_ship) "ll" = (/obj/structure/table/abductor,/obj/item/retractor/alien,/obj/item/hemostat/alien,/turf/unsimulated/floor/abductor,/area/abductor_ship) -"lm" = (/turf/unsimulated/wall/fakeglass{tag = "icon-fakewindows (WEST)"; icon_state = "fakewindows"; dir = 8},/area/syndicate_mothership) -"ln" = (/turf/unsimulated/wall/fakeglass{tag = "icon-fakewindows (EAST)"; icon_state = "fakewindows"; dir = 4},/area/syndicate_mothership) +"lm" = (/turf/unsimulated/wall/fakeglass{tag = "icon-fakewindows (WEST)";icon_state = "fakewindows";dir = 8},/area/syndicate_mothership) +"ln" = (/turf/unsimulated/wall/fakeglass{tag = "icon-fakewindows (EAST)";icon_state = "fakewindows";dir = 4},/area/syndicate_mothership) "lo" = (/obj/structure/reagent_dispensers/water_cooler,/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/ferry) -"lp" = (/obj/structure/table/reinforced,/turf/unsimulated/floor{dir = 8; icon_state = "vault"},/area/centcom/ferry) +"lp" = (/obj/structure/table/reinforced,/turf/unsimulated/floor{dir = 8;icon_state = "vault"},/area/centcom/ferry) "lq" = (/obj/effect/landmark/abductor/agent,/turf/unsimulated/floor/abductor,/area/abductor_ship) -"lr" = (/obj/structure/extinguisher_cabinet{pixel_x = 28},/turf/unsimulated/floor{tag = "icon-darkbrown (EAST)"; icon_state = "darkbrown"; dir = 4},/area/centcom/ferry) +"lr" = (/obj/structure/extinguisher_cabinet{pixel_x = 28},/turf/unsimulated/floor{tag = "icon-darkbrown (EAST)";icon_state = "darkbrown";dir = 4},/area/centcom/ferry) "ls" = (/obj/structure/table,/turf/unsimulated/floor{icon_state = "floor"},/area/tdome/tdomeobserve) "lt" = (/turf/unsimulated/floor{icon_state = "floor"},/area/tdome/tdomeobserve) "lu" = (/turf/unsimulated/wall/fakeglass,/area/tdome/tdomeobserve) -"lv" = (/turf/unsimulated/floor{icon_state = "neutral"; dir = 8},/area/tdome/tdomeobserve) -"lw" = (/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/tdome/tdomeobserve) -"lx" = (/turf/unsimulated/floor{icon_state = "neutral"; dir = 4},/area/tdome/tdomeobserve) -"ly" = (/obj/item/twohanded/required/kirbyplants,/turf/unsimulated/floor{icon_state = "red"; dir = 10},/area/centcom/evac) -"lz" = (/obj/structure/chair{dir = 1},/turf/unsimulated/floor{icon_state = "red"; dir = 2},/area/centcom/evac) -"lA" = (/turf/unsimulated/floor{icon_state = "red"; dir = 2},/area/centcom/evac) -"lB" = (/obj/structure/rack,/obj/item/toy/katana,/turf/unsimulated/floor{icon_state = "red"; dir = 2},/area/centcom/evac) -"lC" = (/obj/structure/rack,/obj/item/storage/fancy/crayons,/obj/item/toy/sword,/turf/unsimulated/floor{icon_state = "red"; dir = 2},/area/centcom/evac) +"lv" = (/turf/unsimulated/floor{icon_state = "neutral";dir = 8},/area/tdome/tdomeobserve) +"lw" = (/turf/unsimulated/floor{icon_state = "vault";dir = 5},/area/tdome/tdomeobserve) +"lx" = (/turf/unsimulated/floor{icon_state = "neutral";dir = 4},/area/tdome/tdomeobserve) +"ly" = (/obj/item/twohanded/required/kirbyplants,/turf/unsimulated/floor{icon_state = "red";dir = 10},/area/centcom/evac) +"lA" = (/turf/unsimulated/floor{icon_state = "red";dir = 2},/area/centcom/evac) +"lB" = (/obj/structure/rack,/obj/item/toy/katana,/turf/unsimulated/floor{icon_state = "red";dir = 2},/area/centcom/evac) +"lC" = (/obj/structure/rack,/obj/item/storage/fancy/crayons,/obj/item/toy/sword,/turf/unsimulated/floor{icon_state = "red";dir = 2},/area/centcom/evac) "lD" = (/turf/unsimulated/wall/fakeglass,/area/centcom/evac) "lE" = (/obj/machinery/optable/abductor,/turf/unsimulated/floor/abductor,/area/abductor_ship) "lF" = (/turf/unsimulated/wall/abductor{icon_state = "alien13"},/area/abductor_ship) @@ -611,244 +555,238 @@ "lM" = (/turf/unsimulated/wall/abductor{icon_state = "alien6"},/area/abductor_ship) "lN" = (/obj/machinery/abductor/gland_dispenser,/turf/unsimulated/floor/abductor,/area/abductor_ship) "lO" = (/turf/unsimulated/wall/abductor{icon_state = "alien7"},/area/abductor_ship) -"lP" = (/obj/structure/table,/obj/item/storage/fancy/crayons,/obj/item/storage/fancy/crayons,/turf/unsimulated/floor{icon_state = "freezerfloor"; dir = 2},/area/syndicate_mothership) -"lQ" = (/obj/machinery/washing_machine,/turf/unsimulated/floor{icon_state = "freezerfloor"; dir = 2},/area/syndicate_mothership) -"lR" = (/obj/structure/bed/abductor,/turf/unsimulated/floor/abductor,/area/abductor_ship) +"lP" = (/obj/structure/table,/obj/item/storage/fancy/crayons,/obj/item/storage/fancy/crayons,/turf/unsimulated/floor{icon_state = "freezerfloor";dir = 2},/area/syndicate_mothership) +"lQ" = (/obj/machinery/washing_machine,/turf/unsimulated/floor{icon_state = "freezerfloor";dir = 2},/area/syndicate_mothership) "lS" = (/obj/machinery/vending/cigarette,/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/ferry) "lT" = (/obj/structure/table/abductor,/obj/item/surgicaldrill/alien,/obj/item/circular_saw/alien,/turf/unsimulated/floor/abductor,/area/abductor_ship) "lU" = (/turf/unsimulated/wall/abductor{icon_state = "alien9"},/area/abductor_ship) "lV" = (/turf/unsimulated/wall/abductor{icon_state = "alien8"},/area/abductor_ship) -"lW" = (/turf/unsimulated/floor{tag = "icon-darkred (EAST)"; icon_state = "darkred"; dir = 4},/area/centcom/ferry) -"lX" = (/obj/structure/chair/office/dark{dir = 4},/turf/unsimulated/floor{icon_state = "floor"},/area/tdome/tdomeobserve) +"lW" = (/turf/unsimulated/floor{tag = "icon-darkred (EAST)";icon_state = "darkred";dir = 4},/area/centcom/ferry) "lY" = (/obj/structure/table/reinforced,/turf/unsimulated/floor{icon_state = "floor"},/area/tdome/tdomeobserve) -"lZ" = (/obj/structure/chair/office/dark{dir = 8},/turf/unsimulated/floor{icon_state = "floor"},/area/tdome/tdomeobserve) "ma" = (/turf/unsimulated/wall/abductor{icon_state = "alien2"},/area/abductor_ship) "mb" = (/turf/unsimulated/wall/abductor,/area/abductor_ship) "mc" = (/turf/unsimulated/wall/abductor{icon_state = "alien4"},/area/abductor_ship) "md" = (/turf/unsimulated/wall/abductor{icon_state = "alien3"},/area/abductor_ship) "me" = (/turf/unsimulated/wall/abductor{icon_state = "alien5"},/area/abductor_ship) -"mf" = (/obj/item/shard{color = "#008000"; icon_state = "small"},/obj/structure/grille/broken{color = "#008000"},/turf/simulated/floor/plating/airless,/area/wizard_station) -"mg" = (/turf/unsimulated/wall/fakeglass{color = "#008000"; dir = 8; icon_state = "fakewindows2"},/area/wizard_station) -"mh" = (/turf/unsimulated/wall/fakeglass{color = "#008000"; dir = 4; icon_state = "fakewindows"},/area/wizard_station) -"mi" = (/turf/unsimulated/wall{tag = "icon-uranium2"; icon_state = "uranium2"},/area/wizard_station) +"mf" = (/obj/item/shard{color = "#008000";icon_state = "small"},/obj/structure/grille/broken{color = "#008000"},/turf/simulated/floor/plating/airless,/area/wizard_station) +"mg" = (/turf/unsimulated/wall/fakeglass{color = "#008000";dir = 8;icon_state = "fakewindows2"},/area/wizard_station) +"mh" = (/turf/unsimulated/wall/fakeglass{color = "#008000";dir = 4;icon_state = "fakewindows"},/area/wizard_station) +"mi" = (/turf/unsimulated/wall{tag = "icon-uranium2";icon_state = "uranium2"},/area/wizard_station) "mj" = (/obj/machinery/abductor/experiment{team = 2},/turf/unsimulated/floor/abductor,/area/abductor_ship) "mk" = (/obj/machinery/abductor/pad{team = 2},/turf/unsimulated/floor/abductor,/area/abductor_ship) "ml" = (/obj/machinery/abductor/console{team = 2},/turf/unsimulated/floor/abductor,/area/abductor_ship) "mm" = (/obj/machinery/abductor/experiment{team = 3},/turf/unsimulated/floor/abductor,/area/abductor_ship) -"mn" = (/turf/unsimulated/floor{icon_state = "bar"; dir = 2},/area/syndicate_mothership) -"mo" = (/obj/machinery/vending/syndisnack,/turf/unsimulated/floor{icon_state = "bar"; dir = 2},/area/syndicate_mothership) -"mp" = (/obj/machinery/vending/syndicigs,/turf/unsimulated/floor{icon_state = "bar"; dir = 2},/area/syndicate_mothership) +"mn" = (/turf/unsimulated/floor{icon_state = "bar";dir = 2},/area/syndicate_mothership) +"mo" = (/obj/machinery/vending/syndisnack,/turf/unsimulated/floor{icon_state = "bar";dir = 2},/area/syndicate_mothership) +"mp" = (/obj/machinery/vending/syndicigs,/turf/unsimulated/floor{icon_state = "bar";dir = 2},/area/syndicate_mothership) "mq" = (/obj/machinery/abductor/pad{team = 3},/turf/unsimulated/floor/abductor,/area/abductor_ship) "mr" = (/obj/machinery/abductor/console{team = 3},/turf/unsimulated/floor/abductor,/area/abductor_ship) "ms" = (/obj/machinery/computer/camera_advanced/abductor{team = 2},/turf/unsimulated/floor/abductor,/area/abductor_ship) "mt" = (/obj/machinery/computer/camera_advanced/abductor{team = 3},/turf/unsimulated/floor/abductor,/area/abductor_ship) "mu" = (/obj/machinery/vending/coffee,/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/ferry) "mv" = (/obj/structure/table/reinforced,/obj/item/clothing/mask/gas,/obj/item/clothing/mask/gas,/obj/item/clothing/mask/gas,/obj/item/clothing/mask/gas,/obj/item/clothing/mask/gas,/obj/item/clothing/mask/gas,/obj/item/clothing/mask/gas,/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/ferry) -"mw" = (/turf/unsimulated/wall/fakeglass{icon_state = "fakewindows2"; dir = 6},/area/tdome/tdomeobserve) +"mw" = (/turf/unsimulated/wall/fakeglass{icon_state = "fakewindows2";dir = 6},/area/tdome/tdomeobserve) "mx" = (/obj/effect/landmark/abductor/scientist{team = 2},/turf/unsimulated/floor/abductor,/area/abductor_ship) "my" = (/obj/effect/landmark/abductor/agent{team = 2},/turf/unsimulated/floor/abductor,/area/abductor_ship) "mz" = (/obj/effect/landmark/abductor/scientist{team = 3},/turf/unsimulated/floor/abductor,/area/abductor_ship) "mA" = (/obj/effect/landmark/abductor/agent{team = 3},/turf/unsimulated/floor/abductor,/area/abductor_ship) -"mB" = (/obj/machinery/computer/communications,/turf/unsimulated/floor{dir = 8; icon_state = "vault"},/area/centcom/ferry) +"mB" = (/obj/machinery/computer/communications,/turf/unsimulated/floor{dir = 8;icon_state = "vault"},/area/centcom/ferry) "mH" = (/obj/structure/lattice,/turf/space/transit,/area/wizard_station) -"mI" = (/obj/item/shard{color = "#008000"},/turf/unsimulated/floor{tag = "icon-cultdamage5"; icon_state = "cultdamage5"},/area/wizard_station) -"mK" = (/turf/unsimulated/floor{tag = "icon-cult"; icon_state = "cult"},/area/wizard_station) -"mL" = (/turf/unsimulated/wall{tag = "icon-uranium5"; icon_state = "uranium5"},/area/wizard_station) -"mM" = (/turf/unsimulated/wall{tag = "icon-uranium10"; icon_state = "uranium10"},/area/wizard_station) -"mR" = (/obj/structure/noticeboard{pixel_x = -32},/obj/item/paper/syndimemo,/turf/unsimulated/floor{icon_state = "bar"; dir = 2},/area/syndicate_mothership) -"mT" = (/mob/living/simple_animal/pet/fox/Syndifox,/turf/unsimulated/floor{icon_state = "bar"; dir = 2},/area/syndicate_mothership) -"mU" = (/obj/effect/decal/warning_stripes/southeastcorner,/turf/unsimulated/floor{icon_state = "bar"; dir = 2},/area/syndicate_mothership) -"mV" = (/obj/effect/decal/warning_stripes/south,/turf/unsimulated/floor{icon_state = "bar"; dir = 2},/area/syndicate_mothership) +"mI" = (/obj/item/shard{color = "#008000"},/turf/unsimulated/floor{tag = "icon-cultdamage5";icon_state = "cultdamage5"},/area/wizard_station) +"mK" = (/turf/unsimulated/floor{tag = "icon-cult";icon_state = "cult"},/area/wizard_station) +"mL" = (/turf/unsimulated/wall{tag = "icon-uranium5";icon_state = "uranium5"},/area/wizard_station) +"mM" = (/turf/unsimulated/wall{tag = "icon-uranium10";icon_state = "uranium10"},/area/wizard_station) +"mR" = (/obj/structure/noticeboard{pixel_x = -32},/obj/item/paper/syndimemo,/turf/unsimulated/floor{icon_state = "bar";dir = 2},/area/syndicate_mothership) +"mT" = (/mob/living/simple_animal/pet/fox/Syndifox,/turf/unsimulated/floor{icon_state = "bar";dir = 2},/area/syndicate_mothership) +"mU" = (/obj/effect/decal/warning_stripes/southeastcorner,/turf/unsimulated/floor{icon_state = "bar";dir = 2},/area/syndicate_mothership) +"mV" = (/obj/effect/decal/warning_stripes/south,/turf/unsimulated/floor{icon_state = "bar";dir = 2},/area/syndicate_mothership) "mY" = (/obj/structure/table/wood,/obj/item/storage/box/drinkingglasses,/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/ferry) "na" = (/obj/structure/table/reinforced,/obj/item/storage/box/syringes,/obj/item/gun/syringe/rapidsyringe,/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/ferry) -"nb" = (/turf/unsimulated/floor{dir = 8; icon_state = "red"},/area/tdome/tdomeobserve) -"nc" = (/turf/unsimulated/floor{icon_state = "green"; dir = 4},/area/tdome/tdomeobserve) -"nl" = (/obj/structure/lattice,/obj/item/shard{color = "#008000"; icon_state = "medium"},/turf/space/transit,/area/wizard_station) -"nm" = (/obj/effect/decal/cleanable/blood/splatter,/turf/unsimulated/floor{tag = "icon-cultdamage2"; icon_state = "cultdamage2"},/area/wizard_station) -"nn" = (/turf/unsimulated/floor{tag = "icon-cultdamage3"; icon_state = "cultdamage3"},/area/wizard_station) -"no" = (/obj/effect/decal/cleanable/blood/gibs/body,/turf/unsimulated/floor{tag = "icon-cult"; icon_state = "cult"},/area/wizard_station) -"np" = (/turf/unsimulated/wall{tag = "icon-uranium3"; icon_state = "uranium3"},/area/wizard_station) -"nu" = (/obj/machinery/light{icon_state = "tube1"; dir = 8},/turf/unsimulated/floor{icon_state = "bar"; dir = 2},/area/syndicate_mothership) -"nv" = (/obj/structure/table/wood,/obj/item/reagent_containers/food/drinks/cans/beer{pixel_x = -2; pixel_y = 5},/turf/unsimulated/floor{icon_state = "bar"; dir = 2},/area/syndicate_mothership) +"nb" = (/turf/unsimulated/floor{dir = 8;icon_state = "red"},/area/tdome/tdomeobserve) +"nc" = (/turf/unsimulated/floor{icon_state = "green";dir = 4},/area/tdome/tdomeobserve) +"nl" = (/obj/structure/lattice,/obj/item/shard{color = "#008000";icon_state = "medium"},/turf/space/transit,/area/wizard_station) +"nm" = (/obj/effect/decal/cleanable/blood/splatter,/turf/unsimulated/floor{tag = "icon-cultdamage2";icon_state = "cultdamage2"},/area/wizard_station) +"nn" = (/turf/unsimulated/floor{tag = "icon-cultdamage3";icon_state = "cultdamage3"},/area/wizard_station) +"no" = (/obj/effect/decal/cleanable/blood/gibs/body,/turf/unsimulated/floor{tag = "icon-cult";icon_state = "cult"},/area/wizard_station) +"np" = (/turf/unsimulated/wall{tag = "icon-uranium3";icon_state = "uranium3"},/area/wizard_station) +"nu" = (/obj/machinery/light{icon_state = "tube1";dir = 8},/turf/unsimulated/floor{icon_state = "bar";dir = 2},/area/syndicate_mothership) +"nv" = (/obj/structure/table/wood,/obj/item/reagent_containers/food/drinks/cans/beer{pixel_x = -2;pixel_y = 5},/turf/unsimulated/floor{icon_state = "bar";dir = 2},/area/syndicate_mothership) "ny" = (/obj/machinery/computer/telecrystals/uplinker,/turf/unsimulated/floor{icon_state = "floor4"},/area/syndicate_mothership) "nB" = (/obj/structure/table/wood,/obj/item/reagent_containers/food/drinks/bottle/rum,/obj/item/reagent_containers/food/drinks/bottle/vodka{pixel_x = -5},/obj/item/reagent_containers/food/drinks/bottle/whiskey{pixel_x = 5},/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/ferry) -"nC" = (/turf/unsimulated/floor{tag = "icon-darkblue"; icon_state = "darkblue"; dir = 2},/area/centcom/ferry) -"nD" = (/obj/structure/extinguisher_cabinet{pixel_y = -28},/turf/unsimulated/floor{tag = "icon-darkbrown"; icon_state = "darkbrown"; dir = 2},/area/centcom/ferry) -"nE" = (/turf/unsimulated/floor{tag = "icon-darkred"; icon_state = "darkred"; dir = 2},/area/centcom/ferry) +"nC" = (/turf/unsimulated/floor{tag = "icon-darkblue";icon_state = "darkblue";dir = 2},/area/centcom/ferry) +"nD" = (/obj/structure/extinguisher_cabinet{pixel_y = -28},/turf/unsimulated/floor{tag = "icon-darkbrown";icon_state = "darkbrown";dir = 2},/area/centcom/ferry) +"nE" = (/turf/unsimulated/floor{tag = "icon-darkred";icon_state = "darkred";dir = 2},/area/centcom/ferry) "nF" = (/obj/structure/table/reinforced,/obj/item/storage/box/emps,/obj/item/gun/energy/ionrifle,/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/ferry) "nG" = (/obj/structure/table/reinforced,/obj/item/grenade/plastic/c4,/obj/item/grenade/plastic/c4{pixel_x = 7},/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/ferry) -"nH" = (/turf/unsimulated/floor{icon_state = "red"; dir = 10},/area/tdome/tdomeobserve) -"nI" = (/turf/unsimulated/floor{icon_state = "red"; dir = 2},/area/tdome/tdomeobserve) +"nH" = (/turf/unsimulated/floor{icon_state = "red";dir = 10},/area/tdome/tdomeobserve) +"nI" = (/turf/unsimulated/floor{icon_state = "red";dir = 2},/area/tdome/tdomeobserve) "nJ" = (/turf/unsimulated/floor{icon_state = "green"},/area/tdome/tdomeobserve) -"nK" = (/turf/unsimulated/floor{icon_state = "green"; dir = 6},/area/tdome/tdomeobserve) -"nX" = (/obj/structure/showcase{desc = "A strange machine supposedly from another world. The Wizard Federation has been meddling with it for years."; icon_state = "processor"; name = "byond random number generator"},/turf/unsimulated/floor{tag = "icon-cultdamage7"; icon_state = "cultdamage7"},/area/wizard_station) -"nY" = (/turf/unsimulated/floor{tag = "icon-cultdamage"; icon_state = "cultdamage"},/area/wizard_station) -"nZ" = (/obj/effect/decal/cleanable/blood,/turf/unsimulated/floor{tag = "icon-cult"; icon_state = "cult"},/area/wizard_station) -"oa" = (/obj/structure/showcase{desc = "A historical figure of great importance to the wizard federation. He spent his long life learning magic, stealing artifacts, and harassing idiots with swords. May he rest forever, Rodney."; icon = 'icons/mob/mob.dmi'; icon_state = "nim"; name = "wizard of yendor showcase"},/turf/unsimulated/floor{tag = "icon-cultdamage4"; icon_state = "cultdamage4"},/area/wizard_station) -"od" = (/turf/unsimulated/wall/fakeglass{tag = "icon-fakewindows (NORTHWEST)"; icon_state = "fakewindows"; dir = 9},/area/syndicate_mothership) -"oe" = (/turf/unsimulated/wall/fakeglass{tag = "icon-fakewindows2 (WEST)"; icon_state = "fakewindows2"; dir = 8},/area/syndicate_mothership) -"of" = (/obj/structure/table/wood,/obj/item/reagent_containers/food/snacks/mushroompizzaslice{pixel_x = -5; pixel_y = 5},/turf/unsimulated/floor{icon_state = "bar"; dir = 2},/area/syndicate_mothership) -"og" = (/obj/structure/table/wood,/obj/item/reagent_containers/food/drinks/cans/beer{pixel_x = 5; pixel_y = -2},/obj/item/toy/cards/deck/syndicate{pixel_x = -6; pixel_y = 6},/turf/unsimulated/floor{icon_state = "bar"; dir = 2},/area/syndicate_mothership) +"nK" = (/turf/unsimulated/floor{icon_state = "green";dir = 6},/area/tdome/tdomeobserve) +"nX" = (/obj/structure/showcase{desc = "A strange machine supposedly from another world. The Wizard Federation has been meddling with it for years.";icon_state = "processor";name = "byond random number generator"},/turf/unsimulated/floor{tag = "icon-cultdamage7";icon_state = "cultdamage7"},/area/wizard_station) +"nY" = (/turf/unsimulated/floor{tag = "icon-cultdamage";icon_state = "cultdamage"},/area/wizard_station) +"nZ" = (/obj/effect/decal/cleanable/blood,/turf/unsimulated/floor{tag = "icon-cult";icon_state = "cult"},/area/wizard_station) +"oa" = (/obj/structure/showcase{desc = "A historical figure of great importance to the wizard federation. He spent his long life learning magic, stealing artifacts, and harassing idiots with swords. May he rest forever, Rodney.";icon = 'icons/mob/mob.dmi';icon_state = "nim";name = "wizard of yendor showcase"},/turf/unsimulated/floor{tag = "icon-cultdamage4";icon_state = "cultdamage4"},/area/wizard_station) +"od" = (/turf/unsimulated/wall/fakeglass{tag = "icon-fakewindows (NORTHWEST)";icon_state = "fakewindows";dir = 9},/area/syndicate_mothership) +"oe" = (/turf/unsimulated/wall/fakeglass{tag = "icon-fakewindows2 (WEST)";icon_state = "fakewindows2";dir = 8},/area/syndicate_mothership) +"of" = (/obj/structure/table/wood,/obj/item/reagent_containers/food/snacks/mushroompizzaslice{pixel_x = -5;pixel_y = 5},/turf/unsimulated/floor{icon_state = "bar";dir = 2},/area/syndicate_mothership) +"og" = (/obj/structure/table/wood,/obj/item/reagent_containers/food/drinks/cans/beer{pixel_x = 5;pixel_y = -2},/obj/item/toy/cards/deck/syndicate{pixel_x = -6;pixel_y = 6},/turf/unsimulated/floor{icon_state = "bar";dir = 2},/area/syndicate_mothership) "oh" = (/turf/unsimulated/wall/fakedoor,/area/centcom/ferry) -"ol" = (/turf/unsimulated/wall/fakeglass{color = "#008000"; dir = 6; icon_state = "fakewindows2"},/area/wizard_station) -"om" = (/obj/effect/forcefield,/obj/structure/door_assembly{anchored = 1; icon_state = "door_as_uranium1"; name = "Bridge"},/turf/unsimulated/floor{tag = "icon-cult"; icon_state = "cult"},/area/wizard_station) -"on" = (/turf/unsimulated/wall{tag = "icon-uranium6"; icon_state = "uranium6"},/area/wizard_station) -"oo" = (/turf/unsimulated/wall{tag = "icon-uranium9"; icon_state = "uranium9"},/area/wizard_station) -"op" = (/turf/unsimulated/wall/fakeglass{tag = "icon-fakewindows2 (NORTH)"; icon_state = "fakewindows2"; dir = 1},/area/syndicate_mothership) +"ol" = (/turf/unsimulated/wall/fakeglass{color = "#008000";dir = 6;icon_state = "fakewindows2"},/area/wizard_station) +"om" = (/obj/effect/forcefield,/obj/structure/door_assembly{anchored = 1;icon_state = "door_as_uranium1";name = "Bridge"},/turf/unsimulated/floor{tag = "icon-cult";icon_state = "cult"},/area/wizard_station) +"on" = (/turf/unsimulated/wall{tag = "icon-uranium6";icon_state = "uranium6"},/area/wizard_station) +"oo" = (/turf/unsimulated/wall{tag = "icon-uranium9";icon_state = "uranium9"},/area/wizard_station) +"op" = (/turf/unsimulated/wall/fakeglass{tag = "icon-fakewindows2 (NORTH)";icon_state = "fakewindows2";dir = 1},/area/syndicate_mothership) "oq" = (/turf/unsimulated/floor{icon_state = "floor"},/area/syndicate_mothership) "or" = (/obj/machinery/light,/turf/unsimulated/floor{icon_state = "floor"},/area/syndicate_mothership) -"ot" = (/obj/machinery/door/poddoor{id_tag = "nukeop_ready"; name = "Shuttle Dock Door"},/turf/unsimulated/floor{icon_state = "dark"},/area/syndicate_mothership) -"oy" = (/obj/effect/decal/remains/human,/obj/effect/decal/cleanable/blood,/turf/unsimulated/floor{tag = "icon-cultdamage6"; icon_state = "cultdamage6"},/area/wizard_station) -"oz" = (/obj/effect/decal/cleanable/blood/splatter,/turf/unsimulated/floor{tag = "icon-cultdamage"; icon_state = "cultdamage"},/area/wizard_station) -"oA" = (/obj/structure/mirror{pixel_x = 28},/turf/unsimulated/floor{tag = "icon-cult"; icon_state = "cult"},/area/wizard_station) +"ot" = (/obj/machinery/door/poddoor{id_tag = "nukeop_ready";name = "Shuttle Dock Door"},/turf/unsimulated/floor{icon_state = "dark"},/area/syndicate_mothership) +"oy" = (/obj/effect/decal/remains/human,/obj/effect/decal/cleanable/blood,/turf/unsimulated/floor{tag = "icon-cultdamage6";icon_state = "cultdamage6"},/area/wizard_station) +"oz" = (/obj/effect/decal/cleanable/blood/splatter,/turf/unsimulated/floor{tag = "icon-cultdamage";icon_state = "cultdamage"},/area/wizard_station) +"oA" = (/obj/structure/mirror{pixel_x = 28},/turf/unsimulated/floor{tag = "icon-cult";icon_state = "cult"},/area/wizard_station) "oD" = (/turf/unsimulated/wall/fakeglass,/area/syndicate_mothership) -"oK" = (/turf/simulated/shuttle/wall{icon_state = "swall0"; dir = 2},/area/wizard_station) +"oK" = (/turf/simulated/shuttle/wall{icon_state = "swall0";dir = 2},/area/wizard_station) "oL" = (/turf/unsimulated/wall/fakedoor{name = "Squad 4 Pod"},/area/wizard_station) -"oM" = (/turf/simulated/shuttle/wall{icon_state = "swall4"; dir = 2},/area/wizard_station) -"oN" = (/turf/unsimulated/floor{tag = "icon-cult"; icon_state = "cult"},/turf/simulated/shuttle/wall{icon_state = "swall_f10"; dir = 2},/area/wizard_station) -"oO" = (/obj/effect/forcefield,/turf/unsimulated/floor{tag = "icon-cult"; icon_state = "cult"},/area/wizard_station) -"oP" = (/turf/unsimulated/floor{tag = "icon-cultdamage7"; icon_state = "cultdamage7"},/area/wizard_station) -"oQ" = (/obj/effect/forcefield,/turf/unsimulated/floor{tag = "icon-cultdamage"; icon_state = "cultdamage"},/area/wizard_station) -"oX" = (/obj/structure/table/wood,/obj/item/storage/box/drinkingglasses,/obj/item/reagent_containers/food/drinks/bottle/rum,/turf/unsimulated/floor{dir = 2; icon_state = "wood"},/area/syndicate_mothership) -"oY" = (/obj/structure/table/wood,/turf/unsimulated/floor{dir = 2; icon_state = "wood"},/area/syndicate_mothership) -"oZ" = (/obj/structure/table/wood,/obj/item/syndicatedetonator,/turf/unsimulated/floor{dir = 2; icon_state = "wood"},/area/syndicate_mothership) -"pa" = (/obj/effect/decal/warning_stripes/northeastcorner,/turf/unsimulated/floor{icon_state = "bar"; dir = 2},/area/syndicate_mothership) -"pb" = (/obj/effect/decal/warning_stripes/north,/turf/unsimulated/floor{icon_state = "bar"; dir = 2},/area/syndicate_mothership) -"pc" = (/obj/machinery/door/airlock/centcom{name = "Restroom"; opacity = 1; req_access_txt = "150"},/turf/unsimulated/floor{icon_state = "bar"; dir = 2},/area/syndicate_mothership) -"pd" = (/turf/unsimulated/floor{icon_state = "freezerfloor"; dir = 2},/area/syndicate_mothership) -"pi" = (/obj/structure/shuttle/engine/heater{tag = "icon-heater (WEST)"; icon_state = "heater"; dir = 8},/turf/simulated/floor/plating/airless,/area/wizard_station) +"oM" = (/turf/simulated/shuttle/wall{icon_state = "swall4";dir = 2},/area/wizard_station) +"oN" = (/turf/unsimulated/floor{tag = "icon-cult";icon_state = "cult"},/turf/simulated/shuttle/wall{icon_state = "swall_f10";dir = 2},/area/wizard_station) +"oO" = (/obj/effect/forcefield,/turf/unsimulated/floor{tag = "icon-cult";icon_state = "cult"},/area/wizard_station) +"oP" = (/turf/unsimulated/floor{tag = "icon-cultdamage7";icon_state = "cultdamage7"},/area/wizard_station) +"oQ" = (/obj/effect/forcefield,/turf/unsimulated/floor{tag = "icon-cultdamage";icon_state = "cultdamage"},/area/wizard_station) +"oX" = (/obj/structure/table/wood,/obj/item/storage/box/drinkingglasses,/obj/item/reagent_containers/food/drinks/bottle/rum,/turf/unsimulated/floor{dir = 2;icon_state = "wood"},/area/syndicate_mothership) +"oY" = (/obj/structure/table/wood,/turf/unsimulated/floor{dir = 2;icon_state = "wood"},/area/syndicate_mothership) +"oZ" = (/obj/structure/table/wood,/obj/item/syndicatedetonator,/turf/unsimulated/floor{dir = 2;icon_state = "wood"},/area/syndicate_mothership) +"pa" = (/obj/effect/decal/warning_stripes/northeastcorner,/turf/unsimulated/floor{icon_state = "bar";dir = 2},/area/syndicate_mothership) +"pb" = (/obj/effect/decal/warning_stripes/north,/turf/unsimulated/floor{icon_state = "bar";dir = 2},/area/syndicate_mothership) +"pc" = (/obj/machinery/door/airlock/centcom{name = "Restroom";opacity = 1;req_access_txt = "150"},/turf/unsimulated/floor{icon_state = "bar";dir = 2},/area/syndicate_mothership) +"pd" = (/turf/unsimulated/floor{icon_state = "freezerfloor";dir = 2},/area/syndicate_mothership) +"pi" = (/obj/structure/shuttle/engine/heater{tag = "icon-heater (WEST)";icon_state = "heater";dir = 8},/turf/simulated/floor/plating/airless,/area/wizard_station) "pj" = (/obj/effect/decal/cleanable/blood/gibs/body,/turf/unsimulated/floor{icon_state = "floor"},/area/wizard_station) "pk" = (/turf/unsimulated/floor{icon_state = "floor"},/area/wizard_station) "pl" = (/obj/machinery/door/poddoor/preopen,/obj/effect/decal/cleanable/blood/splatter,/turf/simulated/floor/plating/airless,/area/wizard_station) -"pm" = (/obj/effect/forcefield,/turf/unsimulated/floor{tag = "icon-cultdamage7"; icon_state = "cultdamage7"},/area/wizard_station) -"pn" = (/obj/effect/forcefield,/turf/unsimulated/floor{tag = "icon-cultdamage5"; icon_state = "cultdamage5"},/area/wizard_station) -"pv" = (/obj/effect/landmark{name = "Syndicate-Spawn"},/obj/effect/decal/warning_stripes/south,/turf/unsimulated/floor{dir = 2; icon_state = "wood"},/area/syndicate_mothership) -"pw" = (/obj/effect/decal/warning_stripes/south,/turf/unsimulated/floor{dir = 2; icon_state = "wood"},/area/syndicate_mothership) -"px" = (/obj/effect/decal/warning_stripes/southwestcorner,/turf/unsimulated/floor{dir = 2; icon_state = "wood"},/area/syndicate_mothership) -"py" = (/obj/machinery/door/window{dir = 4; name = "Uplink Management Control"; req_access_txt = "151"},/turf/unsimulated/floor{dir = 2; icon_state = "wood"},/area/syndicate_mothership) -"pD" = (/turf/simulated/shuttle/wall{icon_state = "swall12"; dir = 2},/area/wizard_station) -"pE" = (/turf/unsimulated/floor{tag = "icon-cult"; icon_state = "cult"},/turf/simulated/shuttle/wall{icon_state = "swall_f9"; dir = 2},/area/wizard_station) -"pF" = (/turf/unsimulated/floor{tag = "icon-cultdamage5"; icon_state = "cultdamage5"},/area/wizard_station) -"pG" = (/obj/effect/decal/cleanable/blood/gibs/body,/turf/unsimulated/floor{tag = "icon-cultdamage2"; icon_state = "cultdamage2"},/area/wizard_station) -"pH" = (/obj/structure/table/wood/poker,/obj/item/toy/cards/cardhand,/turf/unsimulated/floor{tag = "icon-cultdamage2"; icon_state = "cultdamage2"},/area/wizard_station) +"pm" = (/obj/effect/forcefield,/turf/unsimulated/floor{tag = "icon-cultdamage7";icon_state = "cultdamage7"},/area/wizard_station) +"pn" = (/obj/effect/forcefield,/turf/unsimulated/floor{tag = "icon-cultdamage5";icon_state = "cultdamage5"},/area/wizard_station) +"pv" = (/obj/effect/landmark{name = "Syndicate-Spawn"},/obj/effect/decal/warning_stripes/south,/turf/unsimulated/floor{dir = 2;icon_state = "wood"},/area/syndicate_mothership) +"pw" = (/obj/effect/decal/warning_stripes/south,/turf/unsimulated/floor{dir = 2;icon_state = "wood"},/area/syndicate_mothership) +"px" = (/obj/effect/decal/warning_stripes/southwestcorner,/turf/unsimulated/floor{dir = 2;icon_state = "wood"},/area/syndicate_mothership) +"py" = (/obj/machinery/door/window{dir = 4;name = "Uplink Management Control";req_access_txt = "151"},/turf/unsimulated/floor{dir = 2;icon_state = "wood"},/area/syndicate_mothership) +"pD" = (/turf/simulated/shuttle/wall{icon_state = "swall12";dir = 2},/area/wizard_station) +"pE" = (/turf/unsimulated/floor{tag = "icon-cult";icon_state = "cult"},/turf/simulated/shuttle/wall{icon_state = "swall_f9";dir = 2},/area/wizard_station) +"pF" = (/turf/unsimulated/floor{tag = "icon-cultdamage5";icon_state = "cultdamage5"},/area/wizard_station) +"pG" = (/obj/effect/decal/cleanable/blood/gibs/body,/turf/unsimulated/floor{tag = "icon-cultdamage2";icon_state = "cultdamage2"},/area/wizard_station) +"pH" = (/obj/structure/table/wood/poker,/obj/item/toy/cards/cardhand,/turf/unsimulated/floor{tag = "icon-cultdamage2";icon_state = "cultdamage2"},/area/wizard_station) "pP" = (/obj/machinery/computer/telecrystals/boss,/turf/unsimulated/floor{icon_state = "floor4"},/area/syndicate_mothership) -"pS" = (/obj/machinery/door/airlock/multi_tile/glass{name = "Equipment Room"; req_access_txt = "150"},/turf/unsimulated/floor{icon_state = "bar"; dir = 2},/area/syndicate_mothership) +"pS" = (/obj/machinery/door/airlock/multi_tile/glass{name = "Equipment Room";req_access_txt = "150"},/turf/unsimulated/floor{icon_state = "bar";dir = 2},/area/syndicate_mothership) "pT" = (/obj/structure/lattice,/obj/effect/forcefield,/turf/space/transit,/area/wizard_station) -"pU" = (/obj/machinery/vending/magivend,/turf/unsimulated/floor{tag = "icon-cult"; icon_state = "cult"},/area/wizard_station) -"pV" = (/obj/machinery/vending/snack,/turf/unsimulated/floor{tag = "icon-cultdamage"; icon_state = "cultdamage"},/area/wizard_station) -"qc" = (/turf/unsimulated/floor{dir = 2; icon_state = "stage_stairs"},/area/syndicate_mothership) -"qd" = (/obj/machinery/mech_bay_recharge_port/upgraded,/obj/structure/cable{icon_state = "0-2"; d2 = 2},/turf/unsimulated/floor,/area/syndicate_mothership) +"pU" = (/obj/machinery/vending/magivend,/turf/unsimulated/floor{tag = "icon-cult";icon_state = "cult"},/area/wizard_station) +"pV" = (/obj/machinery/vending/snack,/turf/unsimulated/floor{tag = "icon-cultdamage";icon_state = "cultdamage"},/area/wizard_station) +"qc" = (/turf/unsimulated/floor{dir = 2;icon_state = "stage_stairs"},/area/syndicate_mothership) +"qd" = (/obj/machinery/mech_bay_recharge_port/upgraded,/obj/structure/cable{icon_state = "0-2";d2 = 2},/turf/unsimulated/floor,/area/syndicate_mothership) "qe" = (/turf/simulated/floor/mech_bay_recharge_floor,/area/syndicate_mothership) "qf" = (/obj/machinery/computer/mech_bay_power_console,/turf/unsimulated/floor,/area/syndicate_mothership) -"qg" = (/obj/machinery/vending/tool,/turf/unsimulated/floor{tag = "icon-dark"; icon_state = "dark"},/area/syndicate_mothership) -"qh" = (/turf/unsimulated/wall/fakeglass{icon_state = "fakewindows2"; dir = 8},/area/tdome/tdomeobserve) -"qi" = (/turf/unsimulated/wall{tag = "icon-uranium8"; icon_state = "uranium8"},/area/wizard_station) -"qj" = (/obj/structure/door_assembly{anchored = 1; icon_state = "door_as_uranium1"; name = "Break Room"},/turf/unsimulated/floor{tag = "icon-cult"; icon_state = "cult"},/area/wizard_station) -"qk" = (/turf/unsimulated/wall{tag = "icon-uranium4"; icon_state = "uranium4"},/area/wizard_station) -"ql" = (/turf/unsimulated/wall{tag = "icon-uranium12"; icon_state = "uranium12"},/area/wizard_station) -"qm" = (/turf/unsimulated/wall{tag = "icon-uranium14"; icon_state = "uranium14"},/area/wizard_station) -"qn" = (/obj/machinery/door/airlock{icon = 'icons/obj/doors/airlocks/station/uranium.dmi'; name = "Break Room"},/turf/unsimulated/floor{tag = "icon-cult"; icon_state = "cult"},/area/wizard_station) -"qr" = (/obj/machinery/light{icon_state = "tube1"; dir = 8},/turf/unsimulated/floor{tag = "icon-dark"; icon_state = "dark"},/area/syndicate_mothership) -"qs" = (/turf/unsimulated/floor{tag = "icon-dark"; icon_state = "dark"},/area/syndicate_mothership) +"qg" = (/obj/machinery/vending/tool,/turf/unsimulated/floor{tag = "icon-dark";icon_state = "dark"},/area/syndicate_mothership) +"qh" = (/turf/unsimulated/wall/fakeglass{icon_state = "fakewindows2";dir = 8},/area/tdome/tdomeobserve) +"qi" = (/turf/unsimulated/wall{tag = "icon-uranium8";icon_state = "uranium8"},/area/wizard_station) +"qj" = (/obj/structure/door_assembly{anchored = 1;icon_state = "door_as_uranium1";name = "Break Room"},/turf/unsimulated/floor{tag = "icon-cult";icon_state = "cult"},/area/wizard_station) +"qk" = (/turf/unsimulated/wall{tag = "icon-uranium4";icon_state = "uranium4"},/area/wizard_station) +"ql" = (/turf/unsimulated/wall{tag = "icon-uranium12";icon_state = "uranium12"},/area/wizard_station) +"qm" = (/turf/unsimulated/wall{tag = "icon-uranium14";icon_state = "uranium14"},/area/wizard_station) +"qn" = (/obj/machinery/door/airlock{icon = 'icons/obj/doors/airlocks/station/uranium.dmi';name = "Break Room"},/turf/unsimulated/floor{tag = "icon-cult";icon_state = "cult"},/area/wizard_station) +"qr" = (/obj/machinery/light{icon_state = "tube1";dir = 8},/turf/unsimulated/floor{tag = "icon-dark";icon_state = "dark"},/area/syndicate_mothership) +"qs" = (/turf/unsimulated/floor{tag = "icon-dark";icon_state = "dark"},/area/syndicate_mothership) "qt" = (/turf/unsimulated/wall,/area/tdome/arena) "qu" = (/obj/machinery/igniter,/turf/simulated/floor/plasteel,/area/tdome/arena) "qv" = (/turf/simulated/floor/plasteel,/area/tdome/arena) -"qw" = (/turf/unsimulated/wall{tag = "icon-uranium1"; icon_state = "uranium1"},/area/wizard_station) -"qx" = (/obj/structure/chair/wood/wings,/turf/unsimulated/floor{tag = "icon-cult"; icon_state = "cult"},/area/wizard_station) -"qy" = (/obj/structure/table/wood,/obj/item/stack/medical/bruise_pack,/obj/item/stack/medical/ointment,/turf/unsimulated/floor{tag = "icon-cult"; icon_state = "cult"},/area/wizard_station) -"qz" = (/obj/structure/table/wood,/obj/item/retractor,/turf/unsimulated/floor{tag = "icon-cult"; icon_state = "cult"},/area/wizard_station) -"qA" = (/obj/structure/table/wood,/obj/item/clothing/suit/wizrobe/magusblue,/obj/item/clothing/head/wizard/magus,/obj/item/twohanded/staff,/turf/unsimulated/floor{tag = "icon-cult"; icon_state = "cult"},/area/wizard_station) -"qB" = (/obj/structure/table/wood,/obj/item/clothing/suit/wizrobe/magusred,/obj/item/clothing/head/wizard/magus,/obj/item/twohanded/staff,/turf/unsimulated/floor{tag = "icon-cult"; icon_state = "cult"},/area/wizard_station) -"qC" = (/obj/structure/rack,/obj/item/clothing/head/helmet/space/hardsuit/wizard,/turf/unsimulated/floor{tag = "icon-cult"; icon_state = "cult"},/area/wizard_station) -"qD" = (/obj/effect/decal/cleanable/blood/splatter,/turf/unsimulated/floor{tag = "icon-cult"; icon_state = "cult"},/area/wizard_station) -"qO" = (/turf/unsimulated/wall/fakeglass{dir = 8; icon_state = "fakewindows3"; tag = "icon-fakewindows (WEST)"},/area/syndicate_mothership) +"qw" = (/turf/unsimulated/wall{tag = "icon-uranium1";icon_state = "uranium1"},/area/wizard_station) +"qy" = (/obj/structure/table/wood,/obj/item/stack/medical/bruise_pack,/obj/item/stack/medical/ointment,/turf/unsimulated/floor{tag = "icon-cult";icon_state = "cult"},/area/wizard_station) +"qz" = (/obj/structure/table/wood,/obj/item/retractor,/turf/unsimulated/floor{tag = "icon-cult";icon_state = "cult"},/area/wizard_station) +"qA" = (/obj/structure/table/wood,/obj/item/clothing/suit/wizrobe/magusblue,/obj/item/clothing/head/wizard/magus,/obj/item/twohanded/staff,/turf/unsimulated/floor{tag = "icon-cult";icon_state = "cult"},/area/wizard_station) +"qB" = (/obj/structure/table/wood,/obj/item/clothing/suit/wizrobe/magusred,/obj/item/clothing/head/wizard/magus,/obj/item/twohanded/staff,/turf/unsimulated/floor{tag = "icon-cult";icon_state = "cult"},/area/wizard_station) +"qC" = (/obj/structure/rack,/obj/item/clothing/head/helmet/space/hardsuit/wizard,/turf/unsimulated/floor{tag = "icon-cult";icon_state = "cult"},/area/wizard_station) +"qD" = (/obj/effect/decal/cleanable/blood/splatter,/turf/unsimulated/floor{tag = "icon-cult";icon_state = "cult"},/area/wizard_station) +"qO" = (/turf/unsimulated/wall/fakeglass{dir = 8;icon_state = "fakewindows3";tag = "icon-fakewindows (WEST)"},/area/syndicate_mothership) "qQ" = (/obj/structure/rack,/obj/item/clothing/under/color/red,/obj/item/clothing/shoes/brown,/obj/item/clothing/suit/armor/tdome/red,/obj/item/clothing/head/helmet/thunderdome,/obj/item/melee/baton/loaded,/obj/item/melee/energy/sword/saber/red,/turf/unsimulated/floor{icon_state = "dark"},/area/tdome/arena) -"qR" = (/obj/machinery/door/poddoor{id_tag = "thunderdomegen"; name = "General Supply"},/turf/unsimulated/floor{icon_state = "dark"},/area/tdome/arena) +"qR" = (/obj/machinery/door/poddoor{id_tag = "thunderdomegen";name = "General Supply"},/turf/unsimulated/floor{icon_state = "dark"},/area/tdome/arena) "qS" = (/obj/effect/landmark{name = "tdome2"},/turf/unsimulated/floor{name = "plating"},/area/tdome/tdome2) -"qT" = (/obj/machinery/door/poddoor{id_tag = "thunderdome"; name = "Thunderdome Blast Door"},/turf/unsimulated/floor{name = "plating"},/area/tdome/arena) -"qU" = (/turf/simulated/floor/plasteel{icon_state = "red"; dir = 8},/area/tdome/arena) -"qV" = (/turf/simulated/floor/plasteel{icon_state = "green"; dir = 4},/area/tdome/arena) +"qT" = (/obj/machinery/door/poddoor{id_tag = "thunderdome";name = "Thunderdome Blast Door"},/turf/unsimulated/floor{name = "plating"},/area/tdome/arena) +"qU" = (/turf/simulated/floor/plasteel{icon_state = "red";dir = 8},/area/tdome/arena) +"qV" = (/turf/simulated/floor/plasteel{icon_state = "green";dir = 4},/area/tdome/arena) "qW" = (/obj/effect/landmark{name = "tdome1"},/turf/unsimulated/floor{name = "plating"},/area/tdome/tdome1) "qX" = (/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/baton/loaded,/obj/item/melee/energy/sword/saber/green,/turf/unsimulated/floor{icon_state = "dark"},/area/tdome/arena) -"qY" = (/turf/unsimulated/wall/fakeglass{color = "#008000"; dir = 1; icon_state = "fakewindows"},/area/wizard_station) -"qZ" = (/obj/structure/cult/tome,/turf/unsimulated/floor{tag = "icon-cult"; icon_state = "cult"},/area/wizard_station) -"ra" = (/obj/structure/closet/crate{icon_state = "crateopen"; opened = 1},/obj/item/clothing/suit/wizrobe/red,/obj/item/clothing/head/wizard/red,/obj/item/twohanded/staff,/obj/item/clothing/shoes/sandal,/turf/unsimulated/floor{tag = "icon-cult"; icon_state = "cult"},/area/wizard_station) -"rb" = (/obj/effect/decal/cleanable/blood/splatter,/obj/structure/rack,/obj/item/clothing/suit/space/hardsuit/wizard,/turf/unsimulated/floor{tag = "icon-cultdamage"; icon_state = "cultdamage"},/area/wizard_station) -"rc" = (/turf/unsimulated/floor{tag = "icon-cult"; icon_state = "cult"},/turf/simulated/shuttle/wall{icon_state = "swall_f6"; dir = 2},/area/wizard_station) -"rd" = (/turf/simulated/shuttle/wall{icon_state = "swall8"; dir = 2},/area/wizard_station) -"rj" = (/obj/structure/closet/syndicate/personal,/turf/unsimulated/floor{icon_state = "vault"; dir = 8},/area/syndicate_mothership) -"rk" = (/obj/structure/table,/obj/item/gun/energy/ionrifle,/turf/unsimulated/floor{tag = "icon-dark"; icon_state = "dark"},/area/syndicate_mothership) +"qY" = (/turf/unsimulated/wall/fakeglass{color = "#008000";dir = 1;icon_state = "fakewindows"},/area/wizard_station) +"qZ" = (/obj/structure/cult/tome,/turf/unsimulated/floor{tag = "icon-cult";icon_state = "cult"},/area/wizard_station) +"ra" = (/obj/structure/closet/crate{icon_state = "crateopen";opened = 1},/obj/item/clothing/suit/wizrobe/red,/obj/item/clothing/head/wizard/red,/obj/item/twohanded/staff,/obj/item/clothing/shoes/sandal,/turf/unsimulated/floor{tag = "icon-cult";icon_state = "cult"},/area/wizard_station) +"rb" = (/obj/effect/decal/cleanable/blood/splatter,/obj/structure/rack,/obj/item/clothing/suit/space/hardsuit/wizard,/turf/unsimulated/floor{tag = "icon-cultdamage";icon_state = "cultdamage"},/area/wizard_station) +"rc" = (/turf/unsimulated/floor{tag = "icon-cult";icon_state = "cult"},/turf/simulated/shuttle/wall{icon_state = "swall_f6";dir = 2},/area/wizard_station) +"rd" = (/turf/simulated/shuttle/wall{icon_state = "swall8";dir = 2},/area/wizard_station) +"rj" = (/obj/structure/closet/syndicate/personal,/turf/unsimulated/floor{icon_state = "vault";dir = 8},/area/syndicate_mothership) +"rk" = (/obj/structure/table,/obj/item/gun/energy/ionrifle,/turf/unsimulated/floor{tag = "icon-dark";icon_state = "dark"},/area/syndicate_mothership) "rl" = (/obj/machinery/recharger{pixel_y = 4},/obj/effect/landmark{name = "tdome2"},/turf/unsimulated/floor{name = "plating"},/area/tdome/tdome2) "rm" = (/obj/machinery/recharger{pixel_y = 4},/obj/effect/landmark{name = "tdome1"},/turf/unsimulated/floor{name = "plating"},/area/tdome/tdome1) -"rn" = (/turf/unsimulated/wall/fakeglass{color = "#008000"; dir = 1; icon_state = "fakewindows2"},/area/wizard_station) -"ro" = (/obj/structure/bookcase,/turf/unsimulated/floor{tag = "icon-cult"; icon_state = "cult"},/area/wizard_station) +"rn" = (/turf/unsimulated/wall/fakeglass{color = "#008000";dir = 1;icon_state = "fakewindows2"},/area/wizard_station) +"ro" = (/obj/structure/bookcase,/turf/unsimulated/floor{tag = "icon-cult";icon_state = "cult"},/area/wizard_station) "rp" = (/obj/structure/grille/broken{color = "#008000"},/turf/simulated/floor/plating,/area/wizard_station) -"rr" = (/obj/item/clothing/shoes/sandal/marisa,/obj/item/clothing/suit/wizrobe/marisa,/obj/item/clothing/head/wizard/marisa,/obj/item/twohanded/staff/broom,/turf/unsimulated/floor{tag = "icon-cult"; icon_state = "cult"},/area/wizard_station) -"rs" = (/obj/effect/decal/cleanable/blood/splatter,/mob/living/simple_animal/hostile/creature{name = "Experiment 35b"},/turf/unsimulated/floor{tag = "icon-cult"; icon_state = "cult"},/area/wizard_station) +"rr" = (/obj/item/clothing/shoes/sandal/marisa,/obj/item/clothing/suit/wizrobe/marisa,/obj/item/clothing/head/wizard/marisa,/obj/item/twohanded/staff/broom,/turf/unsimulated/floor{tag = "icon-cult";icon_state = "cult"},/area/wizard_station) +"rs" = (/obj/effect/decal/cleanable/blood/splatter,/mob/living/simple_animal/hostile/creature{name = "Experiment 35b"},/turf/unsimulated/floor{tag = "icon-cult";icon_state = "cult"},/area/wizard_station) "rt" = (/obj/machinery/door/poddoor/preopen,/obj/effect/decal/cleanable/blood/splatter,/obj/effect/decal/cleanable/blood/gibs/body,/turf/simulated/floor/plating/airless,/area/wizard_station) "ru" = (/obj/effect/decal/cleanable/blood/splatter,/obj/effect/decal/remains/human,/turf/unsimulated/floor{icon_state = "floor"},/area/wizard_station) "rv" = (/obj/effect/decal/cleanable/blood/splatter,/obj/effect/decal/cleanable/blood/gibs/body,/turf/unsimulated/floor{icon_state = "floor"},/area/wizard_station) -"rw" = (/obj/structure/shuttle/engine/heater{icon_state = "heater"; dir = 4},/turf/simulated/floor/plating/airless,/area/wizard_station) -"rC" = (/obj/machinery/camera{pixel_x = 11; pixel_y = -9; network = list("thunder"); c_tag = "Red Team"},/obj/effect/landmark{name = "tdome2"},/turf/unsimulated/floor{name = "plating"},/area/tdome/tdome2) +"rw" = (/obj/structure/shuttle/engine/heater{icon_state = "heater";dir = 4},/turf/simulated/floor/plating/airless,/area/wizard_station) +"rC" = (/obj/machinery/camera{pixel_x = 11;pixel_y = -9;network = list("thunder");c_tag = "Red Team"},/obj/effect/landmark{name = "tdome2"},/turf/unsimulated/floor{name = "plating"},/area/tdome/tdome2) "rD" = (/turf/simulated/floor/bluegrid,/area/tdome/arena) -"rE" = (/obj/machinery/flasher{id = "tdomeflash"; name = "Thunderdome Flash"},/turf/simulated/floor/bluegrid,/area/tdome/arena) -"rF" = (/obj/machinery/camera{pixel_x = 12; pixel_y = -10; network = list("thunder"); c_tag = "Green Team"},/obj/effect/landmark{name = "tdome1"},/turf/unsimulated/floor{name = "plating"},/area/tdome/tdome1) +"rE" = (/obj/machinery/flasher{id = "tdomeflash";name = "Thunderdome Flash"},/turf/simulated/floor/bluegrid,/area/tdome/arena) +"rF" = (/obj/machinery/camera{pixel_x = 12;pixel_y = -10;network = list("thunder");c_tag = "Green Team"},/obj/effect/landmark{name = "tdome1"},/turf/unsimulated/floor{name = "plating"},/area/tdome/tdome1) "rG" = (/turf/unsimulated/wall/fakeglass{color = "#008000"},/area/wizard_station) -"rH" = (/obj/item/shard{color = "#008000"; icon_state = "medium"},/obj/structure/grille/broken{color = "#008000"},/turf/simulated/floor/plating,/area/wizard_station) -"rI" = (/obj/effect/landmark/start{name = "wizard"},/turf/unsimulated/floor{tag = "icon-cultdamage5"; icon_state = "cultdamage5"},/area/wizard_station) -"rJ" = (/obj/effect/decal/remains/human,/obj/effect/decal/cleanable/blood/splatter,/turf/unsimulated/floor{tag = "icon-cult"; icon_state = "cult"},/area/wizard_station) -"rK" = (/turf/unsimulated/floor{tag = "icon-cult"; icon_state = "cult"},/turf/simulated/shuttle/wall{icon_state = "swall_f5"; dir = 2},/area/wizard_station) +"rH" = (/obj/item/shard{color = "#008000";icon_state = "medium"},/obj/structure/grille/broken{color = "#008000"},/turf/simulated/floor/plating,/area/wizard_station) +"rI" = (/obj/effect/landmark/start{name = "wizard"},/turf/unsimulated/floor{tag = "icon-cultdamage5";icon_state = "cultdamage5"},/area/wizard_station) +"rJ" = (/obj/effect/decal/remains/human,/obj/effect/decal/cleanable/blood/splatter,/turf/unsimulated/floor{tag = "icon-cult";icon_state = "cult"},/area/wizard_station) +"rK" = (/turf/unsimulated/floor{tag = "icon-cult";icon_state = "cult"},/turf/simulated/shuttle/wall{icon_state = "swall_f5";dir = 2},/area/wizard_station) "rL" = (/turf/unsimulated/wall/fakedoor{name = "Squad 3 Pod"},/area/wizard_station) -"rV" = (/obj/machinery/camera{pixel_x = 10; network = list("thunder"); c_tag = "Arena"},/turf/simulated/floor/bluegrid,/area/tdome/arena) -"rW" = (/obj/structure/chair/wood/wings{tag = "icon-wooden_chair_wings (NORTH)"; icon_state = "wooden_chair_wings"; dir = 1},/turf/unsimulated/floor{tag = "icon-cult"; icon_state = "cult"},/area/wizard_station) -"rX" = (/obj/structure/cult/pylon,/turf/unsimulated/floor{tag = "icon-cult"; icon_state = "cult"},/area/wizard_station) -"rY" = (/obj/effect/decal/cleanable/blood/splatter,/obj/structure/rack,/obj/item/twohanded/staff,/turf/unsimulated/floor{tag = "icon-cultdamage"; icon_state = "cultdamage"},/area/wizard_station) -"rZ" = (/obj/effect/decal/cleanable/blood/splatter,/turf/unsimulated/floor{tag = "icon-cultdamage4"; icon_state = "cultdamage4"},/area/wizard_station) -"sa" = (/obj/effect/decal/cleanable/blood/splatter,/obj/effect/forcefield,/turf/unsimulated/floor{tag = "icon-cultdamage"; icon_state = "cultdamage"},/area/wizard_station) -"sb" = (/turf/unsimulated/floor{tag = "icon-cultdamage4"; icon_state = "cultdamage4"},/area/wizard_station) -"sf" = (/obj/structure/door_assembly{anchored = 1; icon_state = "door_as_uranium1"; name = "Corridor A"},/turf/unsimulated/floor{tag = "icon-cult"; icon_state = "cult"},/area/wizard_station) -"sg" = (/turf/unsimulated/wall{tag = "icon-uranium15"; icon_state = "uranium15"},/area/wizard_station) -"sh" = (/obj/machinery/door/airlock{icon = 'icons/obj/doors/airlocks/station/uranium.dmi'; name = "Corridor A"},/turf/unsimulated/floor{tag = "icon-cult"; icon_state = "cult"},/area/wizard_station) -"so" = (/obj/effect/forcefield,/turf/unsimulated/floor{tag = "icon-cultdamage3"; icon_state = "cultdamage3"},/area/wizard_station) -"ss" = (/obj/machinery/door/poddoor{id_tag = "thunderdomehea"; name = "Heavy Supply"},/turf/unsimulated/floor{icon_state = "dark"},/area/tdome/arena) -"st" = (/turf/unsimulated/floor{tag = "icon-cultdamage2"; icon_state = "cultdamage2"},/area/wizard_station) +"rV" = (/obj/machinery/camera{pixel_x = 10;network = list("thunder");c_tag = "Arena"},/turf/simulated/floor/bluegrid,/area/tdome/arena) +"rX" = (/obj/structure/cult/pylon,/turf/unsimulated/floor{tag = "icon-cult";icon_state = "cult"},/area/wizard_station) +"rY" = (/obj/effect/decal/cleanable/blood/splatter,/obj/structure/rack,/obj/item/twohanded/staff,/turf/unsimulated/floor{tag = "icon-cultdamage";icon_state = "cultdamage"},/area/wizard_station) +"rZ" = (/obj/effect/decal/cleanable/blood/splatter,/turf/unsimulated/floor{tag = "icon-cultdamage4";icon_state = "cultdamage4"},/area/wizard_station) +"sa" = (/obj/effect/decal/cleanable/blood/splatter,/obj/effect/forcefield,/turf/unsimulated/floor{tag = "icon-cultdamage";icon_state = "cultdamage"},/area/wizard_station) +"sb" = (/turf/unsimulated/floor{tag = "icon-cultdamage4";icon_state = "cultdamage4"},/area/wizard_station) +"sf" = (/obj/structure/door_assembly{anchored = 1;icon_state = "door_as_uranium1";name = "Corridor A"},/turf/unsimulated/floor{tag = "icon-cult";icon_state = "cult"},/area/wizard_station) +"sg" = (/turf/unsimulated/wall{tag = "icon-uranium15";icon_state = "uranium15"},/area/wizard_station) +"sh" = (/obj/machinery/door/airlock{icon = 'icons/obj/doors/airlocks/station/uranium.dmi';name = "Corridor A"},/turf/unsimulated/floor{tag = "icon-cult";icon_state = "cult"},/area/wizard_station) +"so" = (/obj/effect/forcefield,/turf/unsimulated/floor{tag = "icon-cultdamage3";icon_state = "cultdamage3"},/area/wizard_station) +"ss" = (/obj/machinery/door/poddoor{id_tag = "thunderdomehea";name = "Heavy Supply"},/turf/unsimulated/floor{icon_state = "dark"},/area/tdome/arena) +"st" = (/turf/unsimulated/floor{tag = "icon-cultdamage2";icon_state = "cultdamage2"},/area/wizard_station) "su" = (/obj/effect/forcefield,/turf/space,/area/wizard_station) -"sv" = (/obj/effect/decal/remains/human,/turf/unsimulated/floor{tag = "icon-cultdamage"; icon_state = "cultdamage"},/area/wizard_station) +"sv" = (/obj/effect/decal/remains/human,/turf/unsimulated/floor{tag = "icon-cultdamage";icon_state = "cultdamage"},/area/wizard_station) "sw" = (/obj/structure/rack,/obj/item/clothing/under/color/red,/obj/item/clothing/shoes/brown,/obj/item/clothing/suit/armor/vest,/obj/item/clothing/head/helmet/swat,/obj/item/gun/energy/laser,/turf/unsimulated/floor{icon_state = "dark"},/area/tdome/arena) -"sx" = (/turf/unsimulated/wall/fakeglass{icon_state = "fakewindows"; dir = 8},/area/tdome/tdomeadmin) -"sy" = (/turf/unsimulated/wall/fakeglass{icon_state = "fakewindows2"; dir = 8},/area/tdome/tdomeadmin) -"sz" = (/turf/unsimulated/wall/fakeglass{icon_state = "fakewindows"; dir = 4},/area/tdome/tdomeadmin) +"sx" = (/turf/unsimulated/wall/fakeglass{icon_state = "fakewindows";dir = 8},/area/tdome/tdomeadmin) +"sy" = (/turf/unsimulated/wall/fakeglass{icon_state = "fakewindows2";dir = 8},/area/tdome/tdomeadmin) +"sz" = (/turf/unsimulated/wall/fakeglass{icon_state = "fakewindows";dir = 4},/area/tdome/tdomeadmin) "sA" = (/obj/structure/rack,/obj/item/clothing/under/color/green,/obj/item/clothing/shoes/brown,/obj/item/clothing/suit/armor/vest,/obj/item/clothing/head/helmet/swat,/obj/item/gun/energy/laser,/turf/unsimulated/floor{icon_state = "dark"},/area/tdome/arena) "sB" = (/obj/structure/lattice,/obj/effect/forcefield,/turf/space,/area/wizard_station) "sC" = (/obj/effect/forcefield,/turf/space/transit,/area/wizard_station) -"sI" = (/obj/machinery/door/airlock{icon = 'icons/obj/doors/airlocks/station/uranium.dmi'; name = "Personal Quarters"},/turf/unsimulated/floor{tag = "icon-cult"; icon_state = "cult"},/area/wizard_station) +"sI" = (/obj/machinery/door/airlock{icon = 'icons/obj/doors/airlocks/station/uranium.dmi';name = "Personal Quarters"},/turf/unsimulated/floor{tag = "icon-cult";icon_state = "cult"},/area/wizard_station) "sJ" = (/turf/unsimulated/wall,/area/tdome/tdomeadmin) -"sM" = (/obj/structure/table/wood,/obj/effect/landmark{name = "Teleport-Scroll"},/obj/item/dice/d20,/obj/item/dice,/turf/unsimulated/floor{dir = 9; icon_state = "carpetside"},/area/wizard_station) -"sN" = (/turf/unsimulated/floor{dir = 1; icon_state = "carpetside"},/area/wizard_station) -"sO" = (/turf/unsimulated/floor{dir = 5; icon_state = "carpetside"},/area/wizard_station) -"sP" = (/turf/unsimulated/floor{tag = "icon-cult"; icon_state = "cult"},/turf/simulated/shuttle/wall{dir = 2; icon_state = "swall_f10"; layer = 2},/area/wizard_station) -"sQ" = (/turf/unsimulated/floor{tag = "icon-cultdamage6"; icon_state = "cultdamage6"},/area/wizard_station) -"sV" = (/turf/unsimulated/floor{dir = 8; icon_state = "carpetside"},/area/wizard_station) -"sW" = (/obj/structure/bed,/obj/item/bedsheet/wiz,/turf/unsimulated/floor{icon_state = "carpet"; dir = 2},/area/wizard_station) -"sX" = (/turf/unsimulated/floor{dir = 4; icon_state = "carpetside"},/area/wizard_station) -"sY" = (/turf/simulated/shuttle/wall{icon_state = "swall1"; dir = 2},/area/wizard_station) -"sZ" = (/turf/simulated/shuttle/wall{icon_state = "swall3"; dir = 2},/area/wizard_station) -"ta" = (/obj/structure/dresser,/obj/item/storage/backpack/satchel,/turf/unsimulated/floor{dir = 10; icon_state = "carpetside"},/area/wizard_station) -"tb" = (/turf/unsimulated/floor{dir = 2; icon_state = "carpetside"},/area/wizard_station) -"tc" = (/obj/structure/table/wood,/obj/item/storage/bag/tray,/turf/unsimulated/floor{dir = 6; icon_state = "carpetside"},/area/wizard_station) +"sM" = (/obj/structure/table/wood,/obj/effect/landmark{name = "Teleport-Scroll"},/obj/item/dice/d20,/obj/item/dice,/turf/unsimulated/floor{dir = 9;icon_state = "carpetside"},/area/wizard_station) +"sN" = (/turf/unsimulated/floor{dir = 1;icon_state = "carpetside"},/area/wizard_station) +"sO" = (/turf/unsimulated/floor{dir = 5;icon_state = "carpetside"},/area/wizard_station) +"sP" = (/turf/unsimulated/floor{tag = "icon-cult";icon_state = "cult"},/turf/simulated/shuttle/wall{dir = 2;icon_state = "swall_f10";layer = 2},/area/wizard_station) +"sQ" = (/turf/unsimulated/floor{tag = "icon-cultdamage6";icon_state = "cultdamage6"},/area/wizard_station) +"sV" = (/turf/unsimulated/floor{dir = 8;icon_state = "carpetside"},/area/wizard_station) +"sX" = (/turf/unsimulated/floor{dir = 4;icon_state = "carpetside"},/area/wizard_station) +"sY" = (/turf/simulated/shuttle/wall{icon_state = "swall1";dir = 2},/area/wizard_station) +"sZ" = (/turf/simulated/shuttle/wall{icon_state = "swall3";dir = 2},/area/wizard_station) +"ta" = (/obj/structure/dresser,/obj/item/storage/backpack/satchel,/turf/unsimulated/floor{dir = 10;icon_state = "carpetside"},/area/wizard_station) +"tb" = (/turf/unsimulated/floor{dir = 2;icon_state = "carpetside"},/area/wizard_station) +"tc" = (/obj/structure/table/wood,/obj/item/storage/bag/tray,/turf/unsimulated/floor{dir = 6;icon_state = "carpetside"},/area/wizard_station) "td" = (/turf/unsimulated/wall/fakedoor{name = "Squad 2 Pod"},/area/wizard_station) -"te" = (/turf/unsimulated/wall{tag = "icon-uranium13"; icon_state = "uranium13"},/area/wizard_station) +"te" = (/turf/unsimulated/wall{tag = "icon-uranium13";icon_state = "uranium13"},/area/wizard_station) "tf" = (/turf/simulated/shuttle/wall,/area/wizard_station) "tg" = (/obj/structure/shuttle/engine/heater,/obj/structure/window/reinforced{dir = 1},/turf/simulated/shuttle/plating,/area/wizard_station) "th" = (/turf/unsimulated/wall,/area/centcom/holding) -"ti" = (/obj/structure/table/wood,/turf/unsimulated/floor{tag = "icon-cult"; icon_state = "cult"},/area/wizard_station) -"tj" = (/obj/structure/table/wood,/obj/item/gun/magic/wand{desc = "Used in emergency's to reignite magma engines. This one appears spent."; name = "wand of emergency engine ignition"},/turf/unsimulated/floor{tag = "icon-cult"; icon_state = "cult"},/area/wizard_station) +"ti" = (/obj/structure/table/wood,/turf/unsimulated/floor{tag = "icon-cult";icon_state = "cult"},/area/wizard_station) +"tj" = (/obj/structure/table/wood,/obj/item/gun/magic/wand{desc = "Used in emergency's to reignite magma engines. This one appears spent.";name = "wand of emergency engine ignition"},/turf/unsimulated/floor{tag = "icon-cult";icon_state = "cult"},/area/wizard_station) "tk" = (/obj/structure/shuttle/engine/propulsion{icon_state = "propulsion_l"},/turf/space,/area/wizard_station) -"tl" = (/obj/structure/table,/turf/unsimulated/floor{icon_state = "freezerfloor"; dir = 2},/area/centcom/holding) -"tm" = (/turf/unsimulated/floor{icon_state = "freezerfloor"; dir = 2},/area/centcom/holding) -"tn" = (/obj/structure/closet/secure_closet/bar{req_access_txt = "25"},/turf/unsimulated/floor{icon_state = "freezerfloor"; dir = 2},/area/centcom/holding) -"to" = (/obj/structure/reagent_dispensers/beerkeg,/turf/unsimulated/floor{icon_state = "freezerfloor"; dir = 2},/area/centcom/holding) -"tp" = (/obj/structure/table,/obj/item/storage/box/donkpockets{pixel_x = 3; pixel_y = 3},/obj/item/storage/box/donkpockets{pixel_x = 3; pixel_y = 3},/obj/item/storage/box/donkpockets{pixel_x = 3; pixel_y = 3},/obj/item/storage/box/donkpockets{pixel_x = 3; pixel_y = 3},/turf/unsimulated/floor{icon_state = "freezerfloor"; dir = 2},/area/centcom/holding) +"tl" = (/obj/structure/table,/turf/unsimulated/floor{icon_state = "freezerfloor";dir = 2},/area/centcom/holding) +"tm" = (/turf/unsimulated/floor{icon_state = "freezerfloor";dir = 2},/area/centcom/holding) +"tn" = (/obj/structure/closet/secure_closet/bar{req_access_txt = "25"},/turf/unsimulated/floor{icon_state = "freezerfloor";dir = 2},/area/centcom/holding) +"to" = (/obj/structure/reagent_dispensers/beerkeg,/turf/unsimulated/floor{icon_state = "freezerfloor";dir = 2},/area/centcom/holding) +"tp" = (/obj/structure/table,/obj/item/storage/box/donkpockets{pixel_x = 3;pixel_y = 3},/obj/item/storage/box/donkpockets{pixel_x = 3;pixel_y = 3},/obj/item/storage/box/donkpockets{pixel_x = 3;pixel_y = 3},/obj/item/storage/box/donkpockets{pixel_x = 3;pixel_y = 3},/turf/unsimulated/floor{icon_state = "freezerfloor";dir = 2},/area/centcom/holding) "tq" = (/obj/structure/rack,/obj/item/camera,/turf/unsimulated/floor{icon_state = "cafeteria"},/area/centcom/holding) "tr" = (/obj/structure/rack,/obj/item/toy/sword,/turf/unsimulated/floor{icon_state = "cafeteria"},/area/centcom/holding) "ts" = (/obj/structure/rack,/obj/item/gun/projectile/revolver/capgun,/turf/unsimulated/floor{icon_state = "cafeteria"},/area/centcom/holding) @@ -856,28 +794,25 @@ "tu" = (/turf/unsimulated/beach/sand,/area/centcom/holding) "tv" = (/obj/effect/overlay/palmtree_r,/obj/effect/overlay/coconut,/turf/unsimulated/beach/sand,/area/centcom/holding) "tw" = (/obj/effect/overlay/palmtree_l,/turf/unsimulated/beach/sand,/area/centcom/holding) -"tx" = (/obj/machinery/door/airlock{icon = 'icons/obj/doors/airlocks/station/uranium.dmi'; name = "Engine Room B"},/turf/space,/area/wizard_station) -"ty" = (/obj/structure/table,/obj/item/clothing/head/that,/turf/unsimulated/floor{icon_state = "freezerfloor"; dir = 2},/area/centcom/holding) -"tz" = (/obj/structure/chair/stool{pixel_y = 8},/turf/unsimulated/floor{icon_state = "cafeteria"},/area/centcom/holding) +"tx" = (/obj/machinery/door/airlock{icon = 'icons/obj/doors/airlocks/station/uranium.dmi';name = "Engine Room B"},/turf/space,/area/wizard_station) +"ty" = (/obj/structure/table,/obj/item/clothing/head/that,/turf/unsimulated/floor{icon_state = "freezerfloor";dir = 2},/area/centcom/holding) "tA" = (/obj/item/camera,/turf/unsimulated/beach/sand,/area/centcom/holding) -"tB" = (/obj/structure/cult/forge{desc = "A engine used in powering the wizards ship"; name = "magma engine"},/turf/unsimulated/floor{tag = "icon-cult"; icon_state = "cult"},/area/wizard_station) -"tC" = (/obj/structure/table,/obj/item/reagent_containers/food/drinks/shaker,/turf/unsimulated/floor{icon_state = "freezerfloor"; dir = 2},/area/centcom/holding) -"tD" = (/obj/structure/table,/obj/item/lighter/zippo,/turf/unsimulated/floor{icon_state = "freezerfloor"; dir = 2},/area/centcom/holding) -"tE" = (/obj/structure/table,/obj/item/dice/d20,/turf/unsimulated/floor{icon_state = "freezerfloor"; dir = 2},/area/centcom/holding) -"tF" = (/obj/structure/chair/stool{pixel_y = 8},/obj/item/clothing/head/bandana{pixel_y = -10},/obj/item/clothing/glasses/sunglasses,/turf/unsimulated/beach/sand,/area/centcom/holding) -"tG" = (/obj/structure/chair/stool{pixel_y = 8},/turf/unsimulated/beach/sand,/area/centcom/holding) -"tH" = (/turf/unsimulated/wall{tag = "icon-uranium11"; icon_state = "uranium11"},/area/wizard_station) -"tI" = (/obj/structure/window/reinforced{color = "#008000"; dir = 1},/turf/unsimulated/floor{tag = "icon-lava"; icon_state = "lava"},/area/wizard_station) -"tJ" = (/turf/unsimulated/wall{tag = "icon-uranium7"; icon_state = "uranium7"},/area/wizard_station) +"tB" = (/obj/structure/cult/forge{desc = "A engine used in powering the wizards ship";name = "magma engine"},/turf/unsimulated/floor{tag = "icon-cult";icon_state = "cult"},/area/wizard_station) +"tC" = (/obj/structure/table,/obj/item/reagent_containers/food/drinks/shaker,/turf/unsimulated/floor{icon_state = "freezerfloor";dir = 2},/area/centcom/holding) +"tD" = (/obj/structure/table,/obj/item/lighter/zippo,/turf/unsimulated/floor{icon_state = "freezerfloor";dir = 2},/area/centcom/holding) +"tE" = (/obj/structure/table,/obj/item/dice/d20,/turf/unsimulated/floor{icon_state = "freezerfloor";dir = 2},/area/centcom/holding) +"tH" = (/turf/unsimulated/wall{tag = "icon-uranium11";icon_state = "uranium11"},/area/wizard_station) +"tI" = (/obj/structure/window/reinforced{color = "#008000";dir = 1},/turf/unsimulated/floor{tag = "icon-lava";icon_state = "lava"},/area/wizard_station) +"tJ" = (/turf/unsimulated/wall{tag = "icon-uranium7";icon_state = "uranium7"},/area/wizard_station) "tK" = (/obj/structure/rack,/obj/item/clothing/head/that,/obj/item/clothing/under/suit_jacket,/obj/item/clothing/accessory/waistcoat,/turf/unsimulated/floor{icon_state = "cafeteria"},/area/centcom/holding) "tL" = (/obj/item/beach_ball,/turf/unsimulated/beach/sand,/area/centcom/holding) -"tM" = (/obj/structure/shuttle/engine/heater,/turf/unsimulated/floor{tag = "icon-lava"; icon_state = "lava"},/area/wizard_station) +"tM" = (/obj/structure/shuttle/engine/heater,/turf/unsimulated/floor{tag = "icon-lava";icon_state = "lava"},/area/wizard_station) "tN" = (/obj/structure/rack,/obj/item/storage/fancy/crayons,/turf/unsimulated/floor{icon_state = "cafeteria"},/area/centcom/holding) "tO" = (/obj/structure/window/reinforced{dir = 4},/turf/unsimulated/floor{icon_state = "cafeteria"},/area/centcom/holding) "tP" = (/obj/structure/shuttle/engine/propulsion,/turf/space,/area/space) "tQ" = (/turf/unsimulated/beach/coastline,/area/centcom/holding) "tR" = (/obj/item/clothing/head/collectable/paper,/turf/unsimulated/beach/coastline,/area/centcom/holding) -"tS" = (/obj/structure/rack,/obj/item/clothing/shoes/laceup,/obj/item/clothing/under/suit_jacket/female{desc = "A black trouser suit for women. Very formal."; name = "black suit"; pixel_x = 3; pixel_y = 1},/turf/unsimulated/floor{icon_state = "cafeteria"},/area/centcom/holding) +"tS" = (/obj/structure/rack,/obj/item/clothing/shoes/laceup,/obj/item/clothing/under/suit_jacket/female{desc = "A black trouser suit for women. Very formal.";name = "black suit";pixel_x = 3;pixel_y = 1},/turf/unsimulated/floor{icon_state = "cafeteria"},/area/centcom/holding) "tT" = (/obj/structure/table,/turf/unsimulated/floor{icon_state = "cafeteria"},/area/centcom/holding) "tU" = (/turf/unsimulated/beach/water,/area/centcom/holding) "tV" = (/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/unsimulated/floor{name = "plating"},/area/centcom/holding) @@ -885,6 +820,634 @@ "tX" = (/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/unsimulated/floor{name = "plating"},/area/centcom/holding) "tY" = (/obj/effect/landmark{name = "Holding Facility"},/turf/unsimulated/floor{icon_state = "engine"},/area/centcom/holding) "wP" = (/turf/space,/area/shuttle/escape_pod5/centcom) +"wQ" = (/obj/structure/chair/stool,/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/holofloor{tag = "icon-asteroid";icon_state = "asteroid";dir = 2},/area/holodeck/source_picnicarea) +"wR" = (/obj/structure/chair/stool,/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/holofloor{tag = "icon-asteroid";icon_state = "asteroid";dir = 2},/area/holodeck/source_picnicarea) +"wS" = (/obj/structure/chair/stool,/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/holofloor{tag = "icon-asteroid";icon_state = "asteroid";dir = 2},/area/holodeck/source_picnicarea) +"wT" = (/obj/structure/chair/stool,/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/holofloor{tag = "icon-asteroid";icon_state = "asteroid";dir = 2},/area/holodeck/source_picnicarea) +"wU" = (/obj/structure/chair/stool,/turf/simulated/floor/holofloor{tag = "icon-carpet7-3 (EAST)";icon_state = "carpet7-3";dir = 4},/area/holodeck/source_theatre) +"wV" = (/obj/structure/chair/stool,/turf/simulated/floor/holofloor{tag = "icon-carpet15-15 (EAST)";icon_state = "carpet15-15";dir = 4},/area/holodeck/source_theatre) +"wW" = (/obj/structure/chair/stool,/turf/simulated/floor/holofloor{tag = "icon-carpet11-12 (EAST)";icon_state = "carpet11-12";dir = 4},/area/holodeck/source_theatre) +"wX" = (/obj/structure/chair/stool,/turf/simulated/floor/holofloor{tag = "icon-carpet7-3 (EAST)";icon_state = "carpet7-3";dir = 4},/area/holodeck/source_theatre) +"wY" = (/obj/structure/chair/stool,/turf/simulated/floor/holofloor{tag = "icon-carpet15-15 (EAST)";icon_state = "carpet15-15";dir = 4},/area/holodeck/source_theatre) +"wZ" = (/obj/structure/chair/stool,/turf/simulated/floor/holofloor{tag = "icon-carpet11-12 (EAST)";icon_state = "carpet11-12";dir = 4},/area/holodeck/source_theatre) +"xa" = (/obj/structure/chair/stool,/turf/simulated/floor/holofloor{tag = "icon-carpet7-3 (EAST)";icon_state = "carpet7-3";dir = 4},/area/holodeck/source_theatre) +"xb" = (/obj/structure/chair/stool,/turf/simulated/floor/holofloor{tag = "icon-carpet15-15 (EAST)";icon_state = "carpet15-15";dir = 4},/area/holodeck/source_theatre) +"xc" = (/obj/structure/chair/stool,/turf/simulated/floor/holofloor{tag = "icon-carpet11-12 (EAST)";icon_state = "carpet11-12";dir = 4},/area/holodeck/source_theatre) +"xd" = (/obj/structure/chair/stool,/turf/simulated/floor/holofloor{tag = "icon-carpet7-3 (EAST)";icon_state = "carpet7-3";dir = 4},/area/holodeck/source_theatre) +"xe" = (/obj/structure/chair/stool,/turf/simulated/floor/holofloor{tag = "icon-carpet15-15 (EAST)";icon_state = "carpet15-15";dir = 4},/area/holodeck/source_theatre) +"xf" = (/obj/structure/chair/stool,/turf/simulated/floor/holofloor{tag = "icon-carpet11-12 (EAST)";icon_state = "carpet11-12";dir = 4},/area/holodeck/source_theatre) +"xg" = (/obj/structure/chair/stool,/turf/simulated/floor/holofloor{tag = "icon-carpet5-1 (EAST)";icon_state = "carpet5-1";dir = 4},/area/holodeck/source_theatre) +"xh" = (/obj/structure/chair/stool,/turf/simulated/floor/holofloor{tag = "icon-carpet13-5 (EAST)";icon_state = "carpet13-5";dir = 4},/area/holodeck/source_theatre) +"xi" = (/obj/structure/chair/stool,/turf/simulated/floor/holofloor{tag = "icon-carpet9-4 (EAST)";icon_state = "carpet9-4";dir = 4},/area/holodeck/source_theatre) +"xj" = (/obj/structure/chair/stool,/turf/simulated/floor/holofloor{tag = "icon-carpet6-0 (EAST)";icon_state = "carpet6-0";dir = 4},/area/holodeck/source_meetinghall) +"xk" = (/obj/structure/chair/stool,/turf/simulated/floor/holofloor{tag = "icon-carpet14-0 (EAST)";icon_state = "carpet14-0";dir = 4},/area/holodeck/source_meetinghall) +"xl" = (/obj/structure/chair/stool,/turf/simulated/floor/holofloor{tag = "icon-carpet10-0 (EAST)";icon_state = "carpet10-0";dir = 4},/area/holodeck/source_meetinghall) +"xm" = (/obj/structure/chair/stool,/turf/simulated/floor/holofloor{tag = "icon-carpet7-0 (EAST)";icon_state = "carpet7-0";dir = 4},/area/holodeck/source_meetinghall) +"xn" = (/obj/structure/chair/stool,/turf/simulated/floor/holofloor{tag = "icon-carpet15-0 (EAST)";icon_state = "carpet15-0";dir = 4},/area/holodeck/source_meetinghall) +"xo" = (/obj/structure/chair/stool,/turf/simulated/floor/holofloor{tag = "icon-carpet11-0 (EAST)";icon_state = "carpet11-0";dir = 4},/area/holodeck/source_meetinghall) +"xp" = (/obj/structure/chair/stool,/turf/simulated/floor/holofloor{tag = "icon-carpet7-0 (EAST)";icon_state = "carpet7-0";dir = 4},/area/holodeck/source_meetinghall) +"xq" = (/obj/structure/chair/stool,/turf/simulated/floor/holofloor{tag = "icon-carpet15-0 (EAST)";icon_state = "carpet15-0";dir = 4},/area/holodeck/source_meetinghall) +"xr" = (/obj/structure/chair/stool,/turf/simulated/floor/holofloor{tag = "icon-carpet11-0 (EAST)";icon_state = "carpet11-0";dir = 4},/area/holodeck/source_meetinghall) +"xs" = (/obj/structure/chair/stool,/turf/simulated/floor/holofloor{tag = "icon-carpet7-0 (EAST)";icon_state = "carpet7-0";dir = 4},/area/holodeck/source_meetinghall) +"xt" = (/obj/structure/chair/stool,/turf/simulated/floor/holofloor{tag = "icon-carpet15-0 (EAST)";icon_state = "carpet15-0";dir = 4},/area/holodeck/source_meetinghall) +"xu" = (/obj/structure/chair/stool,/turf/simulated/floor/holofloor{tag = "icon-carpet11-0 (EAST)";icon_state = "carpet11-0";dir = 4},/area/holodeck/source_meetinghall) +"xv" = (/obj/structure/chair/stool,/turf/simulated/floor/holofloor{tag = "icon-carpet5-0 (EAST)";icon_state = "carpet5-0";dir = 4},/area/holodeck/source_meetinghall) +"xw" = (/obj/structure/chair/stool,/turf/simulated/floor/holofloor{tag = "icon-carpet13-0 (EAST)";icon_state = "carpet13-0";dir = 4},/area/holodeck/source_meetinghall) +"xx" = (/obj/structure/chair/stool,/turf/simulated/floor/holofloor{tag = "icon-carpet9-0 (EAST)";icon_state = "carpet9-0";dir = 4},/area/holodeck/source_meetinghall) +"xy" = (/obj/structure/chair/comfy/red,/obj/effect/landmark{name = "voxstart"},/turf/unsimulated/floor{tag = "icon-dark";icon_state = "dark"},/area/vox_station) +"xz" = (/obj/item/chair/stool,/obj/effect/landmark{name = "voxstart"},/turf/unsimulated/floor{tag = "icon-dark";icon_state = "dark"},/area/vox_station) +"xA" = (/obj/item/chair/stool,/obj/effect/landmark{name = "voxstart"},/turf/unsimulated/floor{tag = "icon-dark";icon_state = "dark"},/area/vox_station) +"xB" = (/obj/item/chair/stool,/obj/effect/landmark{name = "voxstart"},/turf/unsimulated/floor{tag = "icon-dark";icon_state = "dark"},/area/vox_station) +"xC" = (/obj/item/chair/stool,/obj/effect/landmark{name = "voxstart"},/turf/unsimulated/floor{tag = "icon-dark";icon_state = "dark"},/area/vox_station) +"xD" = (/obj/item/chair/stool,/obj/effect/landmark{name = "voxstart"},/turf/unsimulated/floor{tag = "icon-dark";icon_state = "dark"},/area/vox_station) +"xE" = (/obj/structure/chair{dir = 8},/turf/simulated/shuttle/floor,/area/centcom/evac) +"xF" = (/obj/structure/chair{dir = 1},/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/centcom/evac) +"xG" = (/obj/structure/chair{dir = 4},/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/centcom/evac) +"xH" = (/obj/structure/chair{dir = 8},/turf/simulated/shuttle/floor,/area/centcom/evac) +"xI" = (/obj/structure/chair{dir = 8},/turf/simulated/shuttle/floor,/area/centcom/evac) +"xJ" = (/obj/structure/chair{dir = 4},/turf/simulated/shuttle/floor,/area/centcom/evac) +"xK" = (/obj/structure/chair{dir = 8},/turf/simulated/shuttle/floor,/area/centcom/evac) +"xL" = (/obj/structure/chair{dir = 8},/turf/simulated/shuttle/floor,/area/centcom/evac) +"xM" = (/obj/structure/chair{dir = 4},/turf/simulated/shuttle/floor,/area/centcom/evac) +"xN" = (/obj/structure/chair{dir = 8},/turf/simulated/shuttle/floor,/area/centcom/evac) +"xO" = (/obj/structure/bed,/turf/simulated/shuttle/floor,/area/centcom/evac) +"xP" = (/obj/structure/bed,/turf/simulated/shuttle/floor,/area/centcom/evac) +"xQ" = (/obj/structure/chair{dir = 8},/turf/simulated/shuttle/floor,/area/centcom/evac) +"xR" = (/obj/structure/chair{dir = 4},/turf/simulated/shuttle/floor,/area/centcom/evac) +"xS" = (/obj/structure/chair{dir = 8},/turf/simulated/shuttle/floor,/area/centcom/evac) +"xT" = (/obj/structure/bed,/turf/simulated/shuttle/floor,/area/centcom/evac) +"xU" = (/obj/structure/bed,/turf/simulated/shuttle/floor,/area/centcom/evac) +"xV" = (/obj/structure/chair{dir = 8},/turf/simulated/shuttle/floor,/area/centcom/evac) +"xW" = (/obj/structure/chair{dir = 4},/turf/simulated/shuttle/floor,/area/centcom/evac) +"xX" = (/obj/structure/chair{dir = 8},/turf/simulated/shuttle/floor,/area/centcom/evac) +"xY" = (/obj/structure/bed,/turf/simulated/shuttle/floor,/area/centcom/evac) +"xZ" = (/obj/structure/bed,/turf/simulated/shuttle/floor,/area/centcom/evac) +"ya" = (/obj/structure/bed,/turf/simulated/shuttle/floor,/area/centcom/evac) +"yb" = (/obj/structure/bed,/turf/simulated/shuttle/floor,/area/centcom/evac) +"yc" = (/obj/structure/bed,/turf/simulated/shuttle/floor,/area/centcom/evac) +"yd" = (/obj/structure/chair{dir = 8},/turf/simulated/shuttle/floor,/area/centcom/evac) +"ye" = (/obj/structure/chair{dir = 4;name = "Prosecution"},/turf/simulated/shuttle/floor,/area/centcom/evac) +"yf" = (/obj/structure/chair,/turf/simulated/shuttle/floor,/area/centcom/evac) +"yg" = (/obj/structure/chair/sofa/right,/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/shuttle/escape) +"yh" = (/obj/structure/chair/sofa,/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/shuttle/escape) +"yi" = (/obj/structure/chair/sofa,/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/shuttle/escape) +"yj" = (/obj/structure/chair/sofa,/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/shuttle/escape) +"yk" = (/obj/structure/chair/sofa,/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/shuttle/escape) +"yl" = (/obj/structure/chair/sofa/corner,/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/shuttle/escape) +"ym" = (/obj/structure/chair/office/dark,/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/evac) +"yn" = (/obj/structure/chair/comfy/black{dir = 8},/obj/effect/landmark{name = "ERT Director"},/turf/unsimulated/floor{dir = 8;icon_state = "wood"},/area/centcom/ferry) +"yo" = (/obj/structure/chair,/turf/unsimulated/floor{dir = 1;icon_state = "green"},/area/centcom/evac) +"yp" = (/obj/structure/chair,/turf/unsimulated/floor{dir = 1;icon_state = "green"},/area/centcom/evac) +"yq" = (/obj/structure/chair,/turf/unsimulated/floor{dir = 1;icon_state = "green"},/area/centcom/evac) +"yr" = (/obj/structure/chair{dir = 4},/turf/unsimulated/floor{icon_state = "green";dir = 8},/area/centcom/control) +"ys" = (/obj/structure/chair{dir = 4},/turf/unsimulated/floor{icon_state = "green";dir = 8},/area/centcom/evac) +"yt" = (/obj/structure/chair{dir = 4},/turf/unsimulated/floor{icon_state = "green";dir = 8},/area/centcom/control) +"yu" = (/obj/structure/chair{dir = 4},/turf/unsimulated/floor{icon_state = "green";dir = 8},/area/centcom/evac) +"yv" = (/obj/structure/chair{dir = 4},/turf/unsimulated/floor{icon_state = "green";dir = 8},/area/centcom/control) +"yw" = (/obj/structure/chair{dir = 4},/turf/unsimulated/floor{icon_state = "green";dir = 8},/area/centcom/evac) +"yx" = (/obj/structure/chair/office/dark,/turf/unsimulated/floor{icon_state = "floor"},/area/centcom/evac) +"yy" = (/obj/structure/chair{dir = 4},/turf/unsimulated/floor{icon_state = "green";dir = 8},/area/centcom/control) +"yz" = (/obj/structure/chair/office/dark{dir = 8},/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/control) +"yA" = (/obj/structure/chair{dir = 4},/turf/unsimulated/floor{icon_state = "green";dir = 8},/area/centcom/control) +"yB" = (/obj/structure/chair{dir = 8},/turf/unsimulated/floor{icon_state = "green";dir = 4},/area/centcom/control) +"yC" = (/obj/structure/chair{dir = 4},/turf/unsimulated/floor{icon_state = "green";dir = 8},/area/centcom/control) +"yD" = (/obj/structure/chair{dir = 8},/turf/unsimulated/floor{icon_state = "green";dir = 4},/area/centcom/control) +"yE" = (/obj/structure/chair{dir = 4},/turf/unsimulated/floor{dir = 8;icon_state = "red"},/area/centcom/evac) +"yF" = (/obj/structure/chair/office/dark{dir = 1},/turf/unsimulated/floor{icon_state = "floor"},/area/centcom/evac) +"yG" = (/obj/structure/chair/office/dark{dir = 8},/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/ferry) +"yH" = (/obj/structure/chair{dir = 4},/turf/unsimulated/floor{icon_state = "green";dir = 8},/area/centcom/control) +"yI" = (/obj/structure/chair{dir = 8},/turf/unsimulated/floor{icon_state = "green";dir = 4},/area/centcom/control) +"yJ" = (/obj/structure/chair{dir = 4},/turf/unsimulated/floor{dir = 8;icon_state = "red"},/area/centcom/evac) +"yK" = (/obj/structure/chair/office/dark,/obj/effect/landmark{name = "Response Team"},/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/ferry) +"yL" = (/obj/structure/chair/office/dark,/obj/effect/landmark{name = "Response Team"},/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/ferry) +"yM" = (/obj/structure/chair{dir = 4},/turf/unsimulated/floor{dir = 8;icon_state = "red"},/area/centcom/evac) +"yN" = (/obj/structure/chair/office/dark{dir = 8},/obj/effect/landmark{name = "Response Team"},/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/ferry) +"yO" = (/obj/structure/chair{dir = 1},/turf/unsimulated/floor{icon_state = "red";dir = 2},/area/centcom/evac) +"yP" = (/obj/structure/chair{dir = 1},/turf/unsimulated/floor{icon_state = "red";dir = 2},/area/centcom/evac) +"yQ" = (/obj/structure/chair{dir = 1},/turf/unsimulated/floor{icon_state = "red";dir = 2},/area/centcom/evac) +"yR" = (/obj/structure/chair/office/dark{dir = 4},/obj/effect/landmark{name = "Response Team"},/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/ferry) +"yS" = (/obj/structure/chair/office/dark{dir = 4},/turf/unsimulated/floor{icon_state = "floor"},/area/tdome/tdomeobserve) +"yT" = (/obj/structure/chair/office/dark{dir = 8},/turf/unsimulated/floor{icon_state = "floor"},/area/tdome/tdomeobserve) +"yU" = (/obj/structure/chair/office/dark{dir = 8},/obj/effect/landmark{name = "Response Team"},/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/ferry) +"yV" = (/obj/structure/chair/office/dark{dir = 1},/obj/effect/landmark{name = "Response Team"},/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/ferry) +"yW" = (/obj/structure/chair/office/dark{dir = 1},/obj/effect/landmark{name = "Response Team"},/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/ferry) +"yX" = (/turf/unsimulated/wall,/area/ai_multicam_room) +"yY" = (/turf/unsimulated/wall,/area/ai_multicam_room) +"yZ" = (/turf/unsimulated/wall,/area/ai_multicam_room) +"za" = (/turf/unsimulated/wall,/area/ai_multicam_room) +"zb" = (/turf/unsimulated/wall,/area/ai_multicam_room) +"zc" = (/turf/unsimulated/wall,/area/ai_multicam_room) +"zd" = (/turf/unsimulated/wall,/area/ai_multicam_room) +"ze" = (/turf/unsimulated/wall,/area/ai_multicam_room) +"zf" = (/turf/unsimulated/wall,/area/ai_multicam_room) +"zg" = (/turf/unsimulated/wall,/area/ai_multicam_room) +"zh" = (/turf/unsimulated/wall,/area/ai_multicam_room) +"zi" = (/turf/unsimulated/wall,/area/ai_multicam_room) +"zj" = (/turf/unsimulated/wall,/area/ai_multicam_room) +"zk" = (/turf/unsimulated/wall,/area/ai_multicam_room) +"zl" = (/turf/unsimulated/wall,/area/ai_multicam_room) +"zm" = (/turf/unsimulated/wall,/area/ai_multicam_room) +"zn" = (/turf/unsimulated/wall,/area/ai_multicam_room) +"zo" = (/turf/unsimulated/wall,/area/ai_multicam_room) +"zp" = (/turf/unsimulated/wall,/area/ai_multicam_room) +"zq" = (/turf/unsimulated/wall,/area/ai_multicam_room) +"zr" = (/turf/unsimulated/wall,/area/ai_multicam_room) +"zs" = (/turf/unsimulated/wall,/area/ai_multicam_room) +"zt" = (/turf/unsimulated/ai_visible,/area/ai_multicam_room) +"zu" = (/turf/unsimulated/ai_visible,/area/ai_multicam_room) +"zv" = (/turf/unsimulated/ai_visible,/area/ai_multicam_room) +"zw" = (/turf/unsimulated/ai_visible,/area/ai_multicam_room) +"zx" = (/turf/unsimulated/ai_visible,/area/ai_multicam_room) +"zy" = (/turf/unsimulated/ai_visible,/area/ai_multicam_room) +"zz" = (/turf/unsimulated/ai_visible,/area/ai_multicam_room) +"zA" = (/turf/unsimulated/ai_visible,/area/ai_multicam_room) +"zB" = (/turf/unsimulated/ai_visible,/area/ai_multicam_room) +"zC" = (/turf/unsimulated/ai_visible,/area/ai_multicam_room) +"zD" = (/turf/unsimulated/ai_visible,/area/ai_multicam_room) +"zE" = (/turf/unsimulated/ai_visible,/area/ai_multicam_room) +"zF" = (/turf/unsimulated/ai_visible,/area/ai_multicam_room) +"zG" = (/turf/unsimulated/ai_visible,/area/ai_multicam_room) +"zH" = (/turf/unsimulated/ai_visible,/area/ai_multicam_room) +"zI" = (/turf/unsimulated/ai_visible,/area/ai_multicam_room) +"zJ" = (/turf/unsimulated/ai_visible,/area/ai_multicam_room) +"zK" = (/turf/unsimulated/ai_visible,/area/ai_multicam_room) +"zL" = (/turf/unsimulated/ai_visible,/area/ai_multicam_room) +"zM" = (/turf/unsimulated/wall,/area/ai_multicam_room) +"zN" = (/turf/unsimulated/wall,/area/ai_multicam_room) +"zO" = (/turf/unsimulated/ai_visible,/area/ai_multicam_room) +"zP" = (/turf/unsimulated/ai_visible,/area/ai_multicam_room) +"zQ" = (/turf/unsimulated/ai_visible,/area/ai_multicam_room) +"zR" = (/turf/unsimulated/ai_visible,/area/ai_multicam_room) +"zS" = (/turf/unsimulated/ai_visible,/area/ai_multicam_room) +"zT" = (/turf/unsimulated/ai_visible,/area/ai_multicam_room) +"zU" = (/turf/unsimulated/ai_visible,/area/ai_multicam_room) +"zV" = (/turf/unsimulated/ai_visible,/area/ai_multicam_room) +"zW" = (/turf/unsimulated/ai_visible,/area/ai_multicam_room) +"zX" = (/turf/unsimulated/ai_visible,/area/ai_multicam_room) +"zY" = (/turf/unsimulated/ai_visible,/area/ai_multicam_room) +"zZ" = (/turf/unsimulated/ai_visible,/area/ai_multicam_room) +"Aa" = (/turf/unsimulated/ai_visible,/area/ai_multicam_room) +"Ab" = (/turf/unsimulated/ai_visible,/area/ai_multicam_room) +"Ac" = (/turf/unsimulated/ai_visible,/area/ai_multicam_room) +"Ad" = (/turf/unsimulated/ai_visible,/area/ai_multicam_room) +"Ae" = (/turf/unsimulated/ai_visible,/area/ai_multicam_room) +"Af" = (/turf/unsimulated/ai_visible,/area/ai_multicam_room) +"Ag" = (/turf/unsimulated/ai_visible,/area/ai_multicam_room) +"Ah" = (/turf/unsimulated/wall,/area/ai_multicam_room) +"Ai" = (/turf/unsimulated/wall,/area/ai_multicam_room) +"Aj" = (/turf/unsimulated/ai_visible,/area/ai_multicam_room) +"Ak" = (/turf/unsimulated/ai_visible,/area/ai_multicam_room) +"Al" = (/turf/unsimulated/ai_visible,/area/ai_multicam_room) +"Am" = (/turf/unsimulated/ai_visible,/area/ai_multicam_room) +"An" = (/turf/unsimulated/ai_visible,/area/ai_multicam_room) +"Ao" = (/turf/unsimulated/ai_visible,/area/ai_multicam_room) +"Ap" = (/turf/unsimulated/ai_visible,/area/ai_multicam_room) +"Aq" = (/turf/unsimulated/ai_visible,/area/ai_multicam_room) +"Ar" = (/turf/unsimulated/ai_visible,/area/ai_multicam_room) +"As" = (/turf/unsimulated/ai_visible,/area/ai_multicam_room) +"At" = (/turf/unsimulated/ai_visible,/area/ai_multicam_room) +"Au" = (/turf/unsimulated/ai_visible,/area/ai_multicam_room) +"Av" = (/turf/unsimulated/ai_visible,/area/ai_multicam_room) +"Aw" = (/turf/unsimulated/ai_visible,/area/ai_multicam_room) +"Ax" = (/turf/unsimulated/ai_visible,/area/ai_multicam_room) +"Ay" = (/turf/unsimulated/ai_visible,/area/ai_multicam_room) +"Az" = (/turf/unsimulated/ai_visible,/area/ai_multicam_room) +"AA" = (/turf/unsimulated/ai_visible,/area/ai_multicam_room) +"AB" = (/turf/unsimulated/ai_visible,/area/ai_multicam_room) +"AC" = (/turf/unsimulated/wall,/area/ai_multicam_room) +"AD" = (/turf/unsimulated/wall,/area/ai_multicam_room) +"AE" = (/turf/unsimulated/ai_visible,/area/ai_multicam_room) +"AF" = (/turf/unsimulated/ai_visible,/area/ai_multicam_room) +"AG" = (/turf/unsimulated/ai_visible,/area/ai_multicam_room) +"AH" = (/turf/unsimulated/ai_visible,/area/ai_multicam_room) +"AI" = (/turf/unsimulated/ai_visible,/area/ai_multicam_room) +"AJ" = (/turf/unsimulated/ai_visible,/area/ai_multicam_room) +"AK" = (/turf/unsimulated/ai_visible,/area/ai_multicam_room) +"AL" = (/turf/unsimulated/ai_visible,/area/ai_multicam_room) +"AM" = (/turf/unsimulated/ai_visible,/area/ai_multicam_room) +"AN" = (/turf/unsimulated/ai_visible,/area/ai_multicam_room) +"AO" = (/turf/unsimulated/ai_visible,/area/ai_multicam_room) +"AP" = (/turf/unsimulated/ai_visible,/area/ai_multicam_room) +"AQ" = (/turf/unsimulated/ai_visible,/area/ai_multicam_room) +"AR" = (/turf/unsimulated/ai_visible,/area/ai_multicam_room) +"AS" = (/turf/unsimulated/ai_visible,/area/ai_multicam_room) +"AT" = (/turf/unsimulated/ai_visible,/area/ai_multicam_room) +"AU" = (/turf/unsimulated/ai_visible,/area/ai_multicam_room) +"AV" = (/turf/unsimulated/ai_visible,/area/ai_multicam_room) +"AW" = (/turf/unsimulated/ai_visible,/area/ai_multicam_room) +"AX" = (/turf/unsimulated/wall,/area/ai_multicam_room) +"AY" = (/turf/unsimulated/wall,/area/ai_multicam_room) +"AZ" = (/turf/unsimulated/ai_visible,/area/ai_multicam_room) +"Ba" = (/turf/unsimulated/ai_visible,/area/ai_multicam_room) +"Bb" = (/turf/unsimulated/ai_visible,/area/ai_multicam_room) +"Bc" = (/turf/unsimulated/ai_visible,/area/ai_multicam_room) +"Bd" = (/turf/unsimulated/ai_visible,/area/ai_multicam_room) +"Be" = (/turf/unsimulated/ai_visible,/area/ai_multicam_room) +"Bf" = (/turf/unsimulated/ai_visible,/area/ai_multicam_room) +"Bg" = (/turf/unsimulated/ai_visible,/area/ai_multicam_room) +"Bh" = (/turf/unsimulated/ai_visible,/area/ai_multicam_room) +"Bi" = (/turf/unsimulated/ai_visible,/area/ai_multicam_room) +"Bj" = (/turf/unsimulated/ai_visible,/area/ai_multicam_room) +"Bk" = (/turf/unsimulated/ai_visible,/area/ai_multicam_room) +"Bl" = (/turf/unsimulated/ai_visible,/area/ai_multicam_room) +"Bm" = (/turf/unsimulated/ai_visible,/area/ai_multicam_room) +"Bn" = (/turf/unsimulated/ai_visible,/area/ai_multicam_room) +"Bo" = (/turf/unsimulated/ai_visible,/area/ai_multicam_room) +"Bp" = (/turf/unsimulated/ai_visible,/area/ai_multicam_room) +"Bq" = (/turf/unsimulated/ai_visible,/area/ai_multicam_room) +"Br" = (/turf/unsimulated/ai_visible,/area/ai_multicam_room) +"Bs" = (/turf/unsimulated/wall,/area/ai_multicam_room) +"Bt" = (/turf/unsimulated/wall,/area/ai_multicam_room) +"Bu" = (/turf/unsimulated/ai_visible,/area/ai_multicam_room) +"Bv" = (/turf/unsimulated/ai_visible,/area/ai_multicam_room) +"Bw" = (/turf/unsimulated/ai_visible,/area/ai_multicam_room) +"Bx" = (/turf/unsimulated/ai_visible,/area/ai_multicam_room) +"By" = (/turf/unsimulated/ai_visible,/area/ai_multicam_room) +"Bz" = (/turf/unsimulated/ai_visible,/area/ai_multicam_room) +"BA" = (/turf/unsimulated/ai_visible,/area/ai_multicam_room) +"BB" = (/turf/unsimulated/ai_visible,/area/ai_multicam_room) +"BC" = (/turf/unsimulated/ai_visible,/area/ai_multicam_room) +"BD" = (/turf/unsimulated/ai_visible,/area/ai_multicam_room) +"BE" = (/turf/unsimulated/ai_visible,/area/ai_multicam_room) +"BF" = (/turf/unsimulated/ai_visible,/area/ai_multicam_room) +"BG" = (/turf/unsimulated/ai_visible,/area/ai_multicam_room) +"BH" = (/turf/unsimulated/ai_visible,/area/ai_multicam_room) +"BI" = (/turf/unsimulated/ai_visible,/area/ai_multicam_room) +"BJ" = (/turf/unsimulated/ai_visible,/area/ai_multicam_room) +"BK" = (/turf/unsimulated/ai_visible,/area/ai_multicam_room) +"BL" = (/turf/unsimulated/ai_visible,/area/ai_multicam_room) +"BM" = (/turf/unsimulated/ai_visible,/area/ai_multicam_room) +"BN" = (/turf/unsimulated/wall,/area/ai_multicam_room) +"BO" = (/turf/unsimulated/wall,/area/ai_multicam_room) +"BP" = (/turf/unsimulated/ai_visible,/area/ai_multicam_room) +"BQ" = (/turf/unsimulated/ai_visible,/area/ai_multicam_room) +"BR" = (/turf/unsimulated/ai_visible,/area/ai_multicam_room) +"BS" = (/turf/unsimulated/ai_visible,/area/ai_multicam_room) +"BT" = (/turf/unsimulated/ai_visible,/area/ai_multicam_room) +"BU" = (/turf/unsimulated/ai_visible,/area/ai_multicam_room) +"BV" = (/turf/unsimulated/ai_visible,/area/ai_multicam_room) +"BW" = (/turf/unsimulated/ai_visible,/area/ai_multicam_room) +"BX" = (/turf/unsimulated/ai_visible,/area/ai_multicam_room) +"BY" = (/turf/unsimulated/ai_visible,/area/ai_multicam_room) +"BZ" = (/turf/unsimulated/ai_visible,/area/ai_multicam_room) +"Ca" = (/turf/unsimulated/ai_visible,/area/ai_multicam_room) +"Cb" = (/turf/unsimulated/ai_visible,/area/ai_multicam_room) +"Cc" = (/turf/unsimulated/ai_visible,/area/ai_multicam_room) +"Cd" = (/turf/unsimulated/ai_visible,/area/ai_multicam_room) +"Ce" = (/turf/unsimulated/ai_visible,/area/ai_multicam_room) +"Cf" = (/turf/unsimulated/ai_visible,/area/ai_multicam_room) +"Cg" = (/turf/unsimulated/ai_visible,/area/ai_multicam_room) +"Ch" = (/turf/unsimulated/ai_visible,/area/ai_multicam_room) +"Ci" = (/turf/unsimulated/wall,/area/ai_multicam_room) +"Cj" = (/obj/structure/chair/wood/wings,/turf/unsimulated/floor{tag = "icon-cult";icon_state = "cult"},/area/wizard_station) +"Ck" = (/obj/structure/chair/wood/wings,/turf/unsimulated/floor{tag = "icon-cult";icon_state = "cult"},/area/wizard_station) +"Cl" = (/turf/unsimulated/wall,/area/ai_multicam_room) +"Cm" = (/turf/unsimulated/ai_visible,/area/ai_multicam_room) +"Cn" = (/turf/unsimulated/ai_visible,/area/ai_multicam_room) +"Co" = (/turf/unsimulated/ai_visible,/area/ai_multicam_room) +"Cp" = (/turf/unsimulated/ai_visible,/area/ai_multicam_room) +"Cq" = (/turf/unsimulated/ai_visible,/area/ai_multicam_room) +"Cr" = (/turf/unsimulated/ai_visible,/area/ai_multicam_room) +"Cs" = (/turf/unsimulated/ai_visible,/area/ai_multicam_room) +"Ct" = (/turf/unsimulated/ai_visible,/area/ai_multicam_room) +"Cu" = (/turf/unsimulated/ai_visible,/area/ai_multicam_room) +"Cv" = (/turf/unsimulated/ai_visible,/area/ai_multicam_room) +"Cw" = (/turf/unsimulated/ai_visible,/area/ai_multicam_room) +"Cx" = (/turf/unsimulated/ai_visible,/area/ai_multicam_room) +"Cy" = (/turf/unsimulated/ai_visible,/area/ai_multicam_room) +"Cz" = (/turf/unsimulated/ai_visible,/area/ai_multicam_room) +"CA" = (/turf/unsimulated/ai_visible,/area/ai_multicam_room) +"CB" = (/turf/unsimulated/ai_visible,/area/ai_multicam_room) +"CC" = (/turf/unsimulated/ai_visible,/area/ai_multicam_room) +"CD" = (/turf/unsimulated/ai_visible,/area/ai_multicam_room) +"CE" = (/turf/unsimulated/ai_visible,/area/ai_multicam_room) +"CF" = (/turf/unsimulated/wall,/area/ai_multicam_room) +"CG" = (/obj/structure/chair/stool,/turf/unsimulated/floor{icon_state = "bar";dir = 2},/area/syndicate_mothership) +"CH" = (/obj/structure/chair/stool,/turf/unsimulated/floor{icon_state = "bar";dir = 2},/area/syndicate_mothership) +"CI" = (/turf/unsimulated/wall,/area/ai_multicam_room) +"CJ" = (/turf/unsimulated/ai_visible,/area/ai_multicam_room) +"CK" = (/turf/unsimulated/ai_visible,/area/ai_multicam_room) +"CL" = (/turf/unsimulated/ai_visible,/area/ai_multicam_room) +"CM" = (/turf/unsimulated/ai_visible,/area/ai_multicam_room) +"CN" = (/turf/unsimulated/ai_visible,/area/ai_multicam_room) +"CO" = (/turf/unsimulated/ai_visible,/area/ai_multicam_room) +"CP" = (/turf/unsimulated/ai_visible,/area/ai_multicam_room) +"CQ" = (/turf/unsimulated/ai_visible,/area/ai_multicam_room) +"CR" = (/turf/unsimulated/ai_visible,/area/ai_multicam_room) +"CS" = (/turf/unsimulated/ai_visible,/area/ai_multicam_room) +"CT" = (/turf/unsimulated/ai_visible,/area/ai_multicam_room) +"CU" = (/turf/unsimulated/ai_visible,/area/ai_multicam_room) +"CV" = (/turf/unsimulated/ai_visible,/area/ai_multicam_room) +"CW" = (/turf/unsimulated/ai_visible,/area/ai_multicam_room) +"CX" = (/turf/unsimulated/ai_visible,/area/ai_multicam_room) +"CY" = (/turf/unsimulated/ai_visible,/area/ai_multicam_room) +"CZ" = (/turf/unsimulated/ai_visible,/area/ai_multicam_room) +"Da" = (/turf/unsimulated/ai_visible,/area/ai_multicam_room) +"Db" = (/turf/unsimulated/ai_visible,/area/ai_multicam_room) +"Dc" = (/turf/unsimulated/wall,/area/ai_multicam_room) +"Dd" = (/obj/structure/chair/stool,/turf/unsimulated/floor{icon_state = "bar";dir = 2},/area/syndicate_mothership) +"De" = (/obj/structure/chair/stool,/turf/unsimulated/floor{icon_state = "bar";dir = 2},/area/syndicate_mothership) +"Df" = (/obj/structure/chair/stool,/obj/effect/landmark{name = "Syndicate-Spawn"},/obj/effect/decal/warning_stripes/east,/turf/unsimulated/floor{icon_state = "bar";dir = 2},/area/syndicate_mothership) +"Dg" = (/turf/unsimulated/wall,/area/ai_multicam_room) +"Dh" = (/turf/unsimulated/ai_visible,/area/ai_multicam_room) +"Di" = (/turf/unsimulated/ai_visible,/area/ai_multicam_room) +"Dj" = (/turf/unsimulated/ai_visible,/area/ai_multicam_room) +"Dk" = (/turf/unsimulated/ai_visible,/area/ai_multicam_room) +"Dl" = (/turf/unsimulated/ai_visible,/area/ai_multicam_room) +"Dm" = (/turf/unsimulated/ai_visible,/area/ai_multicam_room) +"Dn" = (/turf/unsimulated/ai_visible,/area/ai_multicam_room) +"Do" = (/turf/unsimulated/ai_visible,/area/ai_multicam_room) +"Dp" = (/turf/unsimulated/ai_visible,/area/ai_multicam_room) +"Dq" = (/obj/effect/landmark/ai_multicam_room,/turf/unsimulated/ai_visible,/area/ai_multicam_room) +"Dr" = (/turf/unsimulated/ai_visible,/area/ai_multicam_room) +"Ds" = (/turf/unsimulated/ai_visible,/area/ai_multicam_room) +"Dt" = (/turf/unsimulated/ai_visible,/area/ai_multicam_room) +"Du" = (/turf/unsimulated/ai_visible,/area/ai_multicam_room) +"Dv" = (/turf/unsimulated/ai_visible,/area/ai_multicam_room) +"Dw" = (/turf/unsimulated/ai_visible,/area/ai_multicam_room) +"Dx" = (/turf/unsimulated/ai_visible,/area/ai_multicam_room) +"Dy" = (/turf/unsimulated/ai_visible,/area/ai_multicam_room) +"Dz" = (/turf/unsimulated/ai_visible,/area/ai_multicam_room) +"DA" = (/turf/unsimulated/wall,/area/ai_multicam_room) +"DB" = (/obj/structure/chair/stool,/turf/unsimulated/floor{icon_state = "bar";dir = 2},/area/syndicate_mothership) +"DC" = (/obj/structure/chair/stool,/turf/unsimulated/floor{icon_state = "bar";dir = 2},/area/syndicate_mothership) +"DD" = (/obj/structure/chair/stool,/obj/effect/landmark{name = "Syndicate-Spawn"},/obj/effect/decal/warning_stripes/east,/turf/unsimulated/floor{icon_state = "bar";dir = 2},/area/syndicate_mothership) +"DE" = (/turf/unsimulated/wall,/area/ai_multicam_room) +"DF" = (/turf/unsimulated/ai_visible,/area/ai_multicam_room) +"DG" = (/turf/unsimulated/ai_visible,/area/ai_multicam_room) +"DH" = (/turf/unsimulated/ai_visible,/area/ai_multicam_room) +"DI" = (/turf/unsimulated/ai_visible,/area/ai_multicam_room) +"DJ" = (/turf/unsimulated/ai_visible,/area/ai_multicam_room) +"DK" = (/turf/unsimulated/ai_visible,/area/ai_multicam_room) +"DL" = (/turf/unsimulated/ai_visible,/area/ai_multicam_room) +"DM" = (/turf/unsimulated/ai_visible,/area/ai_multicam_room) +"DN" = (/turf/unsimulated/ai_visible,/area/ai_multicam_room) +"DO" = (/turf/unsimulated/ai_visible,/area/ai_multicam_room) +"DP" = (/turf/unsimulated/ai_visible,/area/ai_multicam_room) +"DQ" = (/turf/unsimulated/ai_visible,/area/ai_multicam_room) +"DR" = (/turf/unsimulated/ai_visible,/area/ai_multicam_room) +"DS" = (/turf/unsimulated/ai_visible,/area/ai_multicam_room) +"DT" = (/turf/unsimulated/ai_visible,/area/ai_multicam_room) +"DU" = (/turf/unsimulated/ai_visible,/area/ai_multicam_room) +"DV" = (/turf/unsimulated/ai_visible,/area/ai_multicam_room) +"DW" = (/turf/unsimulated/ai_visible,/area/ai_multicam_room) +"DX" = (/turf/unsimulated/ai_visible,/area/ai_multicam_room) +"DY" = (/turf/unsimulated/wall,/area/ai_multicam_room) +"DZ" = (/obj/structure/chair/wood/wings{tag = "icon-wooden_chair_wings (NORTH)";icon_state = "wooden_chair_wings";dir = 1},/turf/unsimulated/floor{tag = "icon-cult";icon_state = "cult"},/area/wizard_station) +"Ea" = (/obj/structure/chair/wood/wings{tag = "icon-wooden_chair_wings (NORTH)";icon_state = "wooden_chair_wings";dir = 1},/turf/unsimulated/floor{tag = "icon-cult";icon_state = "cult"},/area/wizard_station) +"Eb" = (/obj/structure/chair/stool,/obj/effect/landmark{name = "Syndicate-Spawn"},/obj/effect/decal/warning_stripes/east,/turf/unsimulated/floor{icon_state = "bar";dir = 2},/area/syndicate_mothership) +"Ec" = (/obj/structure/chair{dir = 4},/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/shuttle/assault_pod) +"Ed" = (/obj/structure/chair{dir = 8},/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/shuttle/assault_pod) +"Ee" = (/turf/unsimulated/wall,/area/ai_multicam_room) +"Ef" = (/turf/unsimulated/ai_visible,/area/ai_multicam_room) +"Eg" = (/turf/unsimulated/ai_visible,/area/ai_multicam_room) +"Eh" = (/turf/unsimulated/ai_visible,/area/ai_multicam_room) +"Ei" = (/turf/unsimulated/ai_visible,/area/ai_multicam_room) +"Ej" = (/turf/unsimulated/ai_visible,/area/ai_multicam_room) +"Ek" = (/turf/unsimulated/ai_visible,/area/ai_multicam_room) +"El" = (/turf/unsimulated/ai_visible,/area/ai_multicam_room) +"Em" = (/turf/unsimulated/ai_visible,/area/ai_multicam_room) +"En" = (/turf/unsimulated/ai_visible,/area/ai_multicam_room) +"Eo" = (/turf/unsimulated/ai_visible,/area/ai_multicam_room) +"Ep" = (/turf/unsimulated/ai_visible,/area/ai_multicam_room) +"Eq" = (/turf/unsimulated/ai_visible,/area/ai_multicam_room) +"Er" = (/turf/unsimulated/ai_visible,/area/ai_multicam_room) +"Es" = (/turf/unsimulated/ai_visible,/area/ai_multicam_room) +"Et" = (/turf/unsimulated/ai_visible,/area/ai_multicam_room) +"Eu" = (/turf/unsimulated/ai_visible,/area/ai_multicam_room) +"Ev" = (/turf/unsimulated/ai_visible,/area/ai_multicam_room) +"Ew" = (/turf/unsimulated/ai_visible,/area/ai_multicam_room) +"Ex" = (/turf/unsimulated/ai_visible,/area/ai_multicam_room) +"Ey" = (/turf/unsimulated/wall,/area/ai_multicam_room) +"Ez" = (/obj/structure/chair/stool,/turf/unsimulated/floor{icon_state = "bar";dir = 2},/area/syndicate_mothership) +"EA" = (/obj/structure/chair/stool,/turf/unsimulated/floor{icon_state = "bar";dir = 2},/area/syndicate_mothership) +"EB" = (/obj/structure/chair/stool,/turf/unsimulated/floor{icon_state = "bar";dir = 2},/area/syndicate_mothership) +"EC" = (/obj/structure/chair/stool,/obj/effect/landmark{name = "Syndicate-Spawn"},/obj/effect/decal/warning_stripes/east,/turf/unsimulated/floor{icon_state = "bar";dir = 2},/area/syndicate_mothership) +"ED" = (/obj/structure/chair{dir = 4},/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/shuttle/assault_pod) +"EE" = (/obj/structure/chair{dir = 1},/obj/machinery/light/small,/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/shuttle/assault_pod) +"EF" = (/obj/structure/chair{dir = 8},/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/shuttle/assault_pod) +"EG" = (/turf/unsimulated/wall,/area/ai_multicam_room) +"EH" = (/turf/unsimulated/ai_visible,/area/ai_multicam_room) +"EI" = (/turf/unsimulated/ai_visible,/area/ai_multicam_room) +"EJ" = (/turf/unsimulated/ai_visible,/area/ai_multicam_room) +"EK" = (/turf/unsimulated/ai_visible,/area/ai_multicam_room) +"EL" = (/turf/unsimulated/ai_visible,/area/ai_multicam_room) +"EM" = (/turf/unsimulated/ai_visible,/area/ai_multicam_room) +"EN" = (/turf/unsimulated/ai_visible,/area/ai_multicam_room) +"EO" = (/turf/unsimulated/ai_visible,/area/ai_multicam_room) +"EP" = (/turf/unsimulated/ai_visible,/area/ai_multicam_room) +"EQ" = (/turf/unsimulated/ai_visible,/area/ai_multicam_room) +"ER" = (/turf/unsimulated/ai_visible,/area/ai_multicam_room) +"ES" = (/turf/unsimulated/ai_visible,/area/ai_multicam_room) +"ET" = (/turf/unsimulated/ai_visible,/area/ai_multicam_room) +"EU" = (/turf/unsimulated/ai_visible,/area/ai_multicam_room) +"EV" = (/turf/unsimulated/ai_visible,/area/ai_multicam_room) +"EW" = (/turf/unsimulated/ai_visible,/area/ai_multicam_room) +"EX" = (/turf/unsimulated/ai_visible,/area/ai_multicam_room) +"EY" = (/turf/unsimulated/ai_visible,/area/ai_multicam_room) +"EZ" = (/turf/unsimulated/ai_visible,/area/ai_multicam_room) +"Fa" = (/turf/unsimulated/wall,/area/ai_multicam_room) +"Fb" = (/obj/structure/chair{dir = 8},/obj/machinery/light/small{tag = "icon-bulb1 (EAST)";icon_state = "bulb1";dir = 4},/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/shuttle/assault_pod) +"Fc" = (/obj/structure/chair{dir = 4},/obj/machinery/light/small{tag = "icon-bulb1 (WEST)";icon_state = "bulb1";dir = 8},/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/shuttle/assault_pod) +"Fd" = (/turf/unsimulated/wall,/area/ai_multicam_room) +"Fe" = (/turf/unsimulated/ai_visible,/area/ai_multicam_room) +"Ff" = (/turf/unsimulated/ai_visible,/area/ai_multicam_room) +"Fg" = (/turf/unsimulated/ai_visible,/area/ai_multicam_room) +"Fh" = (/turf/unsimulated/ai_visible,/area/ai_multicam_room) +"Fi" = (/turf/unsimulated/ai_visible,/area/ai_multicam_room) +"Fj" = (/turf/unsimulated/ai_visible,/area/ai_multicam_room) +"Fk" = (/turf/unsimulated/ai_visible,/area/ai_multicam_room) +"Fl" = (/turf/unsimulated/ai_visible,/area/ai_multicam_room) +"Fm" = (/turf/unsimulated/ai_visible,/area/ai_multicam_room) +"Fn" = (/turf/unsimulated/ai_visible,/area/ai_multicam_room) +"Fo" = (/turf/unsimulated/ai_visible,/area/ai_multicam_room) +"Fp" = (/turf/unsimulated/ai_visible,/area/ai_multicam_room) +"Fq" = (/turf/unsimulated/ai_visible,/area/ai_multicam_room) +"Fr" = (/turf/unsimulated/ai_visible,/area/ai_multicam_room) +"Fs" = (/turf/unsimulated/ai_visible,/area/ai_multicam_room) +"Ft" = (/turf/unsimulated/ai_visible,/area/ai_multicam_room) +"Fu" = (/turf/unsimulated/ai_visible,/area/ai_multicam_room) +"Fv" = (/turf/unsimulated/ai_visible,/area/ai_multicam_room) +"Fw" = (/turf/unsimulated/ai_visible,/area/ai_multicam_room) +"Fx" = (/turf/unsimulated/wall,/area/ai_multicam_room) +"Fy" = (/obj/structure/chair{dir = 4},/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/shuttle/assault_pod) +"Fz" = (/obj/structure/chair,/obj/machinery/light/small{dir = 1},/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/shuttle/assault_pod) +"FA" = (/turf/unsimulated/wall,/area/ai_multicam_room) +"FB" = (/turf/unsimulated/ai_visible,/area/ai_multicam_room) +"FC" = (/turf/unsimulated/ai_visible,/area/ai_multicam_room) +"FD" = (/turf/unsimulated/ai_visible,/area/ai_multicam_room) +"FE" = (/turf/unsimulated/ai_visible,/area/ai_multicam_room) +"FF" = (/turf/unsimulated/ai_visible,/area/ai_multicam_room) +"FG" = (/turf/unsimulated/ai_visible,/area/ai_multicam_room) +"FH" = (/turf/unsimulated/ai_visible,/area/ai_multicam_room) +"FI" = (/turf/unsimulated/ai_visible,/area/ai_multicam_room) +"FJ" = (/turf/unsimulated/ai_visible,/area/ai_multicam_room) +"FK" = (/turf/unsimulated/ai_visible,/area/ai_multicam_room) +"FL" = (/turf/unsimulated/ai_visible,/area/ai_multicam_room) +"FM" = (/turf/unsimulated/ai_visible,/area/ai_multicam_room) +"FN" = (/turf/unsimulated/ai_visible,/area/ai_multicam_room) +"FO" = (/turf/unsimulated/ai_visible,/area/ai_multicam_room) +"FP" = (/turf/unsimulated/ai_visible,/area/ai_multicam_room) +"FQ" = (/turf/unsimulated/ai_visible,/area/ai_multicam_room) +"FR" = (/turf/unsimulated/ai_visible,/area/ai_multicam_room) +"FS" = (/turf/unsimulated/ai_visible,/area/ai_multicam_room) +"FT" = (/turf/unsimulated/ai_visible,/area/ai_multicam_room) +"FU" = (/turf/unsimulated/wall,/area/ai_multicam_room) +"FV" = (/obj/structure/chair{dir = 4},/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/shuttle/assault_pod) +"FW" = (/obj/structure/chair{dir = 8},/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/shuttle/assault_pod) +"FX" = (/obj/structure/chair,/obj/effect/landmark{name = "tdomeobserve"},/turf/unsimulated/floor{icon_state = "redbluefull";dir = 2},/area/tdome/tdomeadmin) +"FY" = (/obj/structure/chair,/obj/effect/landmark{name = "tdomeobserve"},/turf/unsimulated/floor{icon_state = "redbluefull";dir = 2},/area/tdome/tdomeadmin) +"FZ" = (/obj/structure/chair,/obj/effect/landmark{name = "tdomeobserve"},/turf/unsimulated/floor{icon_state = "redbluefull";dir = 2},/area/tdome/tdomeadmin) +"Ga" = (/obj/structure/chair,/obj/effect/landmark{name = "tdomeobserve"},/turf/unsimulated/floor{icon_state = "redbluefull";dir = 2},/area/tdome/tdomeadmin) +"Gb" = (/obj/structure/chair,/obj/effect/landmark{name = "tdomeobserve"},/turf/unsimulated/floor{icon_state = "redbluefull";dir = 2},/area/tdome/tdomeadmin) +"Gc" = (/obj/structure/chair,/obj/effect/landmark{name = "tdomeobserve"},/turf/unsimulated/floor{icon_state = "redbluefull";dir = 2},/area/tdome/tdomeadmin) +"Gd" = (/obj/structure/chair,/obj/effect/landmark{name = "tdomeobserve"},/turf/unsimulated/floor{icon_state = "redbluefull";dir = 2},/area/tdome/tdomeadmin) +"Ge" = (/obj/structure/chair,/obj/effect/landmark{name = "tdomeobserve"},/turf/unsimulated/floor{icon_state = "redbluefull";dir = 2},/area/tdome/tdomeadmin) +"Gf" = (/obj/structure/chair,/obj/effect/landmark{name = "tdomeobserve"},/turf/unsimulated/floor{icon_state = "redbluefull";dir = 2},/area/tdome/tdomeadmin) +"Gg" = (/obj/structure/chair,/obj/effect/landmark{name = "tdomeobserve"},/turf/unsimulated/floor{icon_state = "redbluefull";dir = 2},/area/tdome/tdomeadmin) +"Gh" = (/turf/unsimulated/wall,/area/ai_multicam_room) +"Gi" = (/turf/unsimulated/ai_visible,/area/ai_multicam_room) +"Gj" = (/turf/unsimulated/ai_visible,/area/ai_multicam_room) +"Gk" = (/turf/unsimulated/ai_visible,/area/ai_multicam_room) +"Gl" = (/turf/unsimulated/ai_visible,/area/ai_multicam_room) +"Gm" = (/turf/unsimulated/ai_visible,/area/ai_multicam_room) +"Gn" = (/turf/unsimulated/ai_visible,/area/ai_multicam_room) +"Go" = (/turf/unsimulated/ai_visible,/area/ai_multicam_room) +"Gp" = (/turf/unsimulated/ai_visible,/area/ai_multicam_room) +"Gq" = (/turf/unsimulated/ai_visible,/area/ai_multicam_room) +"Gr" = (/turf/unsimulated/ai_visible,/area/ai_multicam_room) +"Gs" = (/turf/unsimulated/ai_visible,/area/ai_multicam_room) +"Gt" = (/turf/unsimulated/ai_visible,/area/ai_multicam_room) +"Gu" = (/turf/unsimulated/ai_visible,/area/ai_multicam_room) +"Gv" = (/turf/unsimulated/ai_visible,/area/ai_multicam_room) +"Gw" = (/turf/unsimulated/ai_visible,/area/ai_multicam_room) +"Gx" = (/turf/unsimulated/ai_visible,/area/ai_multicam_room) +"Gy" = (/turf/unsimulated/ai_visible,/area/ai_multicam_room) +"Gz" = (/turf/unsimulated/ai_visible,/area/ai_multicam_room) +"GA" = (/turf/unsimulated/ai_visible,/area/ai_multicam_room) +"GB" = (/turf/unsimulated/wall,/area/ai_multicam_room) +"GC" = (/turf/unsimulated/wall,/area/ai_multicam_room) +"GD" = (/turf/unsimulated/ai_visible,/area/ai_multicam_room) +"GE" = (/turf/unsimulated/ai_visible,/area/ai_multicam_room) +"GF" = (/turf/unsimulated/ai_visible,/area/ai_multicam_room) +"GG" = (/turf/unsimulated/ai_visible,/area/ai_multicam_room) +"GH" = (/turf/unsimulated/ai_visible,/area/ai_multicam_room) +"GI" = (/turf/unsimulated/ai_visible,/area/ai_multicam_room) +"GJ" = (/turf/unsimulated/ai_visible,/area/ai_multicam_room) +"GK" = (/turf/unsimulated/ai_visible,/area/ai_multicam_room) +"GL" = (/turf/unsimulated/ai_visible,/area/ai_multicam_room) +"GM" = (/turf/unsimulated/ai_visible,/area/ai_multicam_room) +"GN" = (/turf/unsimulated/ai_visible,/area/ai_multicam_room) +"GO" = (/turf/unsimulated/ai_visible,/area/ai_multicam_room) +"GP" = (/turf/unsimulated/ai_visible,/area/ai_multicam_room) +"GQ" = (/turf/unsimulated/ai_visible,/area/ai_multicam_room) +"GR" = (/turf/unsimulated/ai_visible,/area/ai_multicam_room) +"GS" = (/turf/unsimulated/ai_visible,/area/ai_multicam_room) +"GT" = (/turf/unsimulated/ai_visible,/area/ai_multicam_room) +"GU" = (/turf/unsimulated/ai_visible,/area/ai_multicam_room) +"GV" = (/turf/unsimulated/ai_visible,/area/ai_multicam_room) +"GW" = (/turf/unsimulated/wall,/area/ai_multicam_room) +"GX" = (/obj/structure/chair,/obj/effect/landmark{name = "tdomeobserve"},/turf/unsimulated/floor{icon_state = "redbluefull";dir = 2},/area/tdome/tdomeadmin) +"GY" = (/obj/structure/chair,/obj/effect/landmark{name = "tdomeobserve"},/turf/unsimulated/floor{icon_state = "redbluefull";dir = 2},/area/tdome/tdomeadmin) +"GZ" = (/obj/structure/chair,/obj/effect/landmark{name = "tdomeobserve"},/turf/unsimulated/floor{icon_state = "redbluefull";dir = 2},/area/tdome/tdomeadmin) +"Ha" = (/obj/structure/chair,/obj/effect/landmark{name = "tdomeobserve"},/turf/unsimulated/floor{icon_state = "redbluefull";dir = 2},/area/tdome/tdomeadmin) +"Hb" = (/obj/structure/chair,/obj/effect/landmark{name = "tdomeobserve"},/turf/unsimulated/floor{icon_state = "redbluefull";dir = 2},/area/tdome/tdomeadmin) +"Hc" = (/obj/structure/chair,/obj/effect/landmark{name = "tdomeobserve"},/turf/unsimulated/floor{icon_state = "redbluefull";dir = 2},/area/tdome/tdomeadmin) +"Hd" = (/obj/structure/chair,/obj/effect/landmark{name = "tdomeobserve"},/turf/unsimulated/floor{icon_state = "redbluefull";dir = 2},/area/tdome/tdomeadmin) +"He" = (/obj/structure/chair,/obj/effect/landmark{name = "tdomeobserve"},/turf/unsimulated/floor{icon_state = "redbluefull";dir = 2},/area/tdome/tdomeadmin) +"Hf" = (/obj/structure/chair,/obj/effect/landmark{name = "tdomeobserve"},/turf/unsimulated/floor{icon_state = "redbluefull";dir = 2},/area/tdome/tdomeadmin) +"Hg" = (/obj/structure/chair,/obj/effect/landmark{name = "tdomeobserve"},/turf/unsimulated/floor{icon_state = "redbluefull";dir = 2},/area/tdome/tdomeadmin) +"Hh" = (/turf/unsimulated/wall,/area/ai_multicam_room) +"Hi" = (/turf/unsimulated/ai_visible,/area/ai_multicam_room) +"Hj" = (/turf/unsimulated/ai_visible,/area/ai_multicam_room) +"Hk" = (/turf/unsimulated/ai_visible,/area/ai_multicam_room) +"Hl" = (/turf/unsimulated/ai_visible,/area/ai_multicam_room) +"Hm" = (/turf/unsimulated/ai_visible,/area/ai_multicam_room) +"Hn" = (/turf/unsimulated/ai_visible,/area/ai_multicam_room) +"Ho" = (/turf/unsimulated/ai_visible,/area/ai_multicam_room) +"Hp" = (/turf/unsimulated/ai_visible,/area/ai_multicam_room) +"Hq" = (/turf/unsimulated/ai_visible,/area/ai_multicam_room) +"Hr" = (/turf/unsimulated/ai_visible,/area/ai_multicam_room) +"Hs" = (/turf/unsimulated/ai_visible,/area/ai_multicam_room) +"Ht" = (/turf/unsimulated/ai_visible,/area/ai_multicam_room) +"Hu" = (/turf/unsimulated/ai_visible,/area/ai_multicam_room) +"Hv" = (/turf/unsimulated/ai_visible,/area/ai_multicam_room) +"Hw" = (/turf/unsimulated/ai_visible,/area/ai_multicam_room) +"Hx" = (/turf/unsimulated/ai_visible,/area/ai_multicam_room) +"Hy" = (/turf/unsimulated/ai_visible,/area/ai_multicam_room) +"Hz" = (/turf/unsimulated/ai_visible,/area/ai_multicam_room) +"HA" = (/turf/unsimulated/ai_visible,/area/ai_multicam_room) +"HB" = (/turf/unsimulated/wall,/area/ai_multicam_room) +"HC" = (/obj/structure/bed,/obj/item/bedsheet/wiz,/turf/unsimulated/floor{icon_state = "carpet";dir = 2},/area/wizard_station) +"HD" = (/obj/structure/chair/stool,/turf/unsimulated/floor{tag = "icon-dark";icon_state = "dark"},/area/syndicate_mothership) +"HE" = (/turf/unsimulated/wall,/area/ai_multicam_room) +"HF" = (/turf/unsimulated/ai_visible,/area/ai_multicam_room) +"HG" = (/turf/unsimulated/ai_visible,/area/ai_multicam_room) +"HH" = (/turf/unsimulated/ai_visible,/area/ai_multicam_room) +"HI" = (/turf/unsimulated/ai_visible,/area/ai_multicam_room) +"HJ" = (/turf/unsimulated/ai_visible,/area/ai_multicam_room) +"HK" = (/turf/unsimulated/ai_visible,/area/ai_multicam_room) +"HL" = (/turf/unsimulated/ai_visible,/area/ai_multicam_room) +"HM" = (/turf/unsimulated/ai_visible,/area/ai_multicam_room) +"HN" = (/turf/unsimulated/ai_visible,/area/ai_multicam_room) +"HO" = (/turf/unsimulated/ai_visible,/area/ai_multicam_room) +"HP" = (/turf/unsimulated/ai_visible,/area/ai_multicam_room) +"HQ" = (/turf/unsimulated/ai_visible,/area/ai_multicam_room) +"HR" = (/turf/unsimulated/ai_visible,/area/ai_multicam_room) +"HS" = (/turf/unsimulated/ai_visible,/area/ai_multicam_room) +"HT" = (/turf/unsimulated/ai_visible,/area/ai_multicam_room) +"HU" = (/turf/unsimulated/ai_visible,/area/ai_multicam_room) +"HV" = (/turf/unsimulated/ai_visible,/area/ai_multicam_room) +"HW" = (/turf/unsimulated/ai_visible,/area/ai_multicam_room) +"HX" = (/turf/unsimulated/ai_visible,/area/ai_multicam_room) +"HY" = (/turf/unsimulated/wall,/area/ai_multicam_room) +"HZ" = (/turf/unsimulated/wall,/area/ai_multicam_room) +"Ia" = (/turf/unsimulated/wall,/area/ai_multicam_room) +"Ib" = (/turf/unsimulated/wall,/area/ai_multicam_room) +"Ic" = (/turf/unsimulated/wall,/area/ai_multicam_room) +"Id" = (/turf/unsimulated/wall,/area/ai_multicam_room) +"Ie" = (/turf/unsimulated/wall,/area/ai_multicam_room) +"If" = (/turf/unsimulated/wall,/area/ai_multicam_room) +"Ig" = (/turf/unsimulated/wall,/area/ai_multicam_room) +"Ih" = (/turf/unsimulated/wall,/area/ai_multicam_room) +"Ii" = (/turf/unsimulated/wall,/area/ai_multicam_room) +"Ij" = (/turf/unsimulated/wall,/area/ai_multicam_room) +"Ik" = (/turf/unsimulated/wall,/area/ai_multicam_room) +"Il" = (/turf/unsimulated/wall,/area/ai_multicam_room) +"Im" = (/turf/unsimulated/wall,/area/ai_multicam_room) +"In" = (/turf/unsimulated/wall,/area/ai_multicam_room) +"Io" = (/turf/unsimulated/wall,/area/ai_multicam_room) +"Ip" = (/turf/unsimulated/wall,/area/ai_multicam_room) +"Iq" = (/turf/unsimulated/wall,/area/ai_multicam_room) +"Ir" = (/turf/unsimulated/wall,/area/ai_multicam_room) +"Is" = (/turf/unsimulated/wall,/area/ai_multicam_room) +"It" = (/turf/unsimulated/wall,/area/ai_multicam_room) +"Iu" = (/obj/structure/chair{dir = 1},/obj/effect/landmark{name = "tdomeadmin"},/turf/unsimulated/floor{icon_state = "redyellowfull"},/area/tdome/tdomeobserve) +"Iv" = (/obj/structure/chair{dir = 1},/obj/effect/landmark{name = "tdomeadmin"},/turf/unsimulated/floor{icon_state = "redyellowfull"},/area/tdome/tdomeobserve) +"Iw" = (/obj/structure/chair{dir = 1},/obj/effect/landmark{name = "tdomeadmin"},/turf/unsimulated/floor{icon_state = "redyellowfull"},/area/tdome/tdomeobserve) +"Ix" = (/obj/structure/chair{dir = 1},/obj/effect/landmark{name = "tdomeadmin"},/turf/unsimulated/floor{icon_state = "redyellowfull"},/area/tdome/tdomeobserve) +"Iy" = (/obj/structure/chair{dir = 1},/obj/effect/landmark{name = "tdomeadmin"},/turf/unsimulated/floor{icon_state = "redyellowfull"},/area/tdome/tdomeobserve) +"Iz" = (/obj/structure/chair/comfy/brown{dir = 1},/turf/unsimulated/floor{icon_state = "redyellowfull"},/area/tdome/tdomeobserve) +"IA" = (/obj/structure/chair{dir = 1},/obj/effect/landmark{name = "tdomeadmin"},/turf/unsimulated/floor{icon_state = "redyellowfull"},/area/tdome/tdomeobserve) +"IB" = (/obj/structure/chair{dir = 1},/obj/effect/landmark{name = "tdomeadmin"},/turf/unsimulated/floor{icon_state = "redyellowfull"},/area/tdome/tdomeobserve) +"IC" = (/obj/structure/chair{dir = 1},/obj/effect/landmark{name = "tdomeadmin"},/turf/unsimulated/floor{icon_state = "redyellowfull"},/area/tdome/tdomeobserve) +"ID" = (/obj/structure/chair{dir = 1},/obj/effect/landmark{name = "tdomeadmin"},/turf/unsimulated/floor{icon_state = "redyellowfull"},/area/tdome/tdomeobserve) +"IE" = (/obj/structure/chair{dir = 1},/obj/effect/landmark{name = "tdomeadmin"},/turf/unsimulated/floor{icon_state = "redyellowfull"},/area/tdome/tdomeobserve) +"IF" = (/obj/structure/chair/stool{pixel_y = 8},/turf/unsimulated/floor{icon_state = "cafeteria"},/area/centcom/holding) +"IG" = (/obj/structure/chair/stool{pixel_y = 8},/obj/item/clothing/head/bandana{pixel_y = -10},/obj/item/clothing/glasses/sunglasses,/turf/unsimulated/beach/sand,/area/centcom/holding) +"IH" = (/obj/structure/chair/stool{pixel_y = 8},/turf/unsimulated/beach/sand,/area/centcom/holding) +"II" = (/obj/structure/chair/stool{pixel_y = 8},/turf/unsimulated/floor{icon_state = "cafeteria"},/area/centcom/holding) +"IJ" = (/obj/structure/chair/stool{pixel_y = 8},/turf/unsimulated/floor{icon_state = "cafeteria"},/area/centcom/holding) +"IK" = (/obj/structure/chair/stool{pixel_y = 8},/turf/unsimulated/floor{icon_state = "cafeteria"},/area/centcom/holding) +"IL" = (/obj/structure/chair/stool{pixel_y = 8},/turf/unsimulated/floor{icon_state = "cafeteria"},/area/centcom/holding) +"IM" = (/obj/structure/chair/stool{pixel_y = 8},/turf/unsimulated/floor{icon_state = "cafeteria"},/area/centcom/holding) +"IN" = (/obj/structure/chair/stool{pixel_y = 8},/turf/unsimulated/floor{icon_state = "cafeteria"},/area/centcom/holding) +"IO" = (/obj/structure/chair/stool{pixel_y = 8},/turf/unsimulated/floor{icon_state = "cafeteria"},/area/centcom/holding) +"IP" = (/obj/structure/chair/stool{pixel_y = 8},/turf/unsimulated/floor{icon_state = "cafeteria"},/area/centcom/holding) +"IQ" = (/obj/structure/bed/abductor,/turf/unsimulated/floor/abductor,/area/abductor_ship) +"IR" = (/obj/structure/bed/abductor,/turf/unsimulated/floor/abductor,/area/abductor_ship) +"IS" = (/obj/structure/bed/abductor,/turf/unsimulated/floor/abductor,/area/abductor_ship) +"IT" = (/obj/structure/bed/abductor,/turf/unsimulated/floor/abductor,/area/abductor_ship) (1,1,1) = {" aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaababababababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabababababababababababababababababababababababababababababababababababababababababababababababababababababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababapaqaqaqaqaqaraqaqaqaqaqaraqaqaqaqaqaraqaqaqaqaqaraqaqaqaqaqaraqaqaqaqaqaraqaqaqaqaqas @@ -892,22 +1455,22 @@ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaababababab aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaababababababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaababababacacacacacacacacacacacacacacacacacacacacacacacacabababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababaGaHaZaHaHbaaJbbbcbbbcbbaJbdbdbdbdbdaJaObeaObeaOaJaPaPaPaPaPaJaQbfaQbfaQaJbgbhbhbhbiaU aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaababababababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaababababacacacacacacacacacacacacacacacacacacacacacacacacabababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababaGaHbjaHaHaHaJbkblbkblbkaJbdbdbdbdbdaJaOaOaOaOaOaJaPaPaPaPaPaJaQaQaQaQaQaJbgbhbhbhbiaU aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaababababababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaababababacacacacacacacacacacacacacacacacacacacacacacacacabababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababaGaHaHbmbnaHaJboboboboboaJbpbpbpbpbqaJaOaOaOaOaOaJaPaPaPaPaPaJaQaQaQaQaQaJbgbhbhbhbiaU -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaababababababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaababababacacacacacacacacacacacacacacacacacacacacacacacacabababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababaGbraHaHaHaHaJbsbtbubtbvaJbwbxbybzbwaJaOaObeaOaOaJaPaPaPaPaPaJaQaQaQaQaQaJbgbhbhbhbiaU -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaababababababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaababababacacacacacacacacacacacacacacacacacacacacacacacacabababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababaGaHbraHaHbAaJbBbtbubtbCaJbwbDbEbFbwaJaOaObeaOaOaJaPaPaPaPaPaJaQaQaQaQaQaJbGbhbhbhbHaU -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaababababababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaababababacacacacacacacacacacacacacacacacacacacacacacacacabababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababaGaHaZbraHbmaJboboboboboaJbJbDbEbFbJaJaOaOaOaOaOaJaPaPaPaPaPaJaQaQaQaQaQaJbGbhbhbhbHaU -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaababababababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaababababacacacacacacacacacacacacacacacacacacacacacacacacabababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababaGaHaHaHbraHaJbQbRbQbRbQaJbSbDbEbFbSaJaOaOaOaOaOaJaPaPaPaPaPaJaQaQaQaQaQaJbGbhbhbhbHaU -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaababababababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaababababacacacacacacacacacaeacacacacacacacacacacacacacacabababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababaGaHbVaHaHbraJbbbcbbbcbbaJbSbDbEbFbSaJaObeaObeaOaJaPaPaPaPaPaJaQbfaQbfaQaJbGbhbhbhbHaU -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaababababababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaababababacacacacacacacacacacacacacacacacacacacacacacacacabababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababaGbmaHbXaHaZaJaKaLaKaLaKaJbYbZcacbbYaJaOaOaOaOaOaJaPaPaPaPaPaJaQaQaQaQaQaJcccdcdcdceaU +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaababababababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaababababacacacacacacacacacacacacacacacacacacacacacacacacabababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababaGbraHaHaHaHaJbswQbuwRbvaJbwbxbybzbwaJaOaObeaOaOaJaPaPaPaPaPaJaQaQaQaQaQaJbgbhbhbhbiaU +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaababababababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaababababacacacacacacacacacacacacacacacacacacacacacacacacabababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababaGaHbraHaHbAaJbBwSbuwTbCaJbwwUwVwWbwaJaOaObeaOaOaJaPaPaPaPaPaJaQaQaQaQaQaJbGbhbhbhbHaU +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaababababababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaababababacacacacacacacacacacacacacacacacacacacacacacacacabababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababaGaHaZbraHbmaJboboboboboaJbJwXwYwZbJaJaOaOaOaOaOaJaPaPaPaPaPaJaQaQaQaQaQaJbGbhbhbhbHaU +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaababababababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaababababacacacacacacacacacacacacacacacacacacacacacacacacabababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababaGaHaHaHbraHaJbQbRbQbRbQaJbSxaxbxcbSaJaOaOaOaOaOaJaPaPaPaPaPaJaQaQaQaQaQaJbGbhbhbhbHaU +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaababababababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaababababacacacacacacacacacaeacacacacacacacacacacacacacacabababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababaGaHbVaHaHbraJbbbcbbbcbbaJbSxdxexfbSaJaObeaObeaOaJaPaPaPaPaPaJaQbfaQbfaQaJbGbhbhbhbHaU +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaababababababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaababababacacacacacacacacacacacacacacacacacacacacacacacacabababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababaGbmaHbXaHaZaJaKaLaKaLaKaJbYxgxhxibYaJaOaOaOaOaOaJaPaPaPaPaPaJaQaQaQaQaQaJcccdcdcdceaU aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaababababababababaaaaaaaaaaaaaaaaaaaaaaaaaaaadzaaaaaaaaababababacacacacacacacacacacacacacacacacacacacacacacacacabababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaaaaaaaaaaaaaaaaaaahaaaaaaaaaaaiaaaaaaaaaaaaaaaaabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababchcicicicicicjcicicicicicjcicicicicicjckckckckckcjckckckckckcjckckckckckcjckckckckckcl aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaababababababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaababababacacacacacacacacacacacacacacacacacacacacacacacacabababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababaGcrcsctcrcsaJcucucucucuaJcvcvcvcvcvaJcwcwcxcycyaJczczczczczaJcAcBcBcBcCaJcDcEcEcEcFaU aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaababababababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaababababacacacacacacacacacacacacacacacacacacacacacacacacabababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababaGcsctcrcsctaJcucHcucucuaJcvcIcJcKcvaJcLcLcMcNcNaJczcOczcPczaJcQcRcRcRcSaJcTcUcUcUcVaU aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaagaaaaaaaaaaaaaaaaaaaaaaaaaaababababababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaababababacacacacacacacacacafacacacacacacacacacacacacacacabababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababaGctcrcsctcraJcucucucXcuaJcvcYcYcYcvaJcLcZcZcZcNaJczczczczczaJcQcRcRcRcSaJcTcUcUcUcVaU aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaababababababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaababababacacacacacacacacacacacacacacacacacacacacacacacacabababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababaGcrcsctcrcsaJcucucucucuaJcvcvcvcvcvaJcLcMcMcMcNaJczczczczczaJcQcRcRcRcSaJcTcUcUcUcVaU -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaababababababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaababababacacacacacacacacacacacacacacacacacacacacacacacacabababaaaaaaaaaaaaaaaaaaaaaaaaaaaoaaaaaaaaaaaaaaaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababaGcsctcrcsctaJcucucudacuaJcvdbdcddcvaJdedfdfdfdgaJczdhczczczaJdidjdjdjdkaJcTcUcUcUcVaU -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaababababababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaababababacacacacacacacacacacacacacacacacacacacacacacacacabababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababaGctcrcsctcraJcudmcucucuaJcvdndodpcvaJdqdrdrdrdsaJczczczdtczaJdudvdvdvdwaJdxcUcUcUdyaU -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaababababababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaababababacacacacacacacacacacacacacacacacacacacacacacacacabababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababaGcrcsctcrcsaJcucucucucHaJcvdndodpcvaJdAcMdBcMdCaJczczczczczaJdDcRcRcRdEaJdxcUcUcUdyaU -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaababababababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaababababacacacacacacacacacacacacacacacacacacacacacacacacabababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababaGcsctcrcsctaJdFcucucucuaJcvdndodpcvaJdAdGdGdGdCaJdHdHdHdHdHaJdDcRcRcRdEaJdxcUcUcUdyaU -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaababababababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaababababacacacacacacacacacacacacacacacacacacacacacacacacabababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababaGctcrcsctcraJcudacudmcuaJcvdIdJdKcvaJdAdAcMdCdCaJdLdLdLdLdLaJdDcRcRcRdEaJdxcUcUcUdyaU +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaababababababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaababababacacacacacacacacacacacacacacacacacacacacacacacacabababaaaaaaaaaaaaaaaaaaaaaaaaaaaoaaaaaaaaaaaaaaaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababaGcsctcrcsctaJcucucudacuaJcvxjxkxlcvaJdedfdfdfdgaJczdhczczczaJdidjdjdjdkaJcTcUcUcUcVaU +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaababababababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaababababacacacacacacacacacacacacacacacacacacacacacacacacabababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababaGctcrcsctcraJcudmcucucuaJcvxmxnxocvaJdqdrdrdrdsaJczczczdtczaJdudvdvdvdwaJdxcUcUcUdyaU +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaababababababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaababababacacacacacacacacacacacacacacacacacacacacacacacacabababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababaGcrcsctcrcsaJcucucucucHaJcvxpxqxrcvaJdAcMdBcMdCaJczczczczczaJdDcRcRcRdEaJdxcUcUcUdyaU +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaababababababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaababababacacacacacacacacacacacacacacacacacacacacacacacacabababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababaGcsctcrcsctaJdFcucucucuaJcvxsxtxucvaJdAdGdGdGdCaJdHdHdHdHdHaJdDcRcRcRdEaJdxcUcUcUdyaU +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaababababababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaababababacacacacacacacacacacacacacacacacacacacacacacacacabababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababaGctcrcsctcraJcudacudmcuaJcvxvxwxxcvaJdAdAcMdCdCaJdLdLdLdLdLaJdDcRcRcRdEaJdxcUcUcUdyaU aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaababababababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaababababacacacacacacacacacacacacacacacacacacacacacacacacabababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababaGcrcsctcrcsaJcucucucudFaJcvcvcvcvcvaJdMdMdNdOdOaJdPdPdPdPdPaJdQdRdRdRdSaJdTdUdUdUdVaU aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaababababababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaababababacacacacacacacacacacacacacacacacacacacacacacacacabababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababdWdXdXdXdXdXdYdXdXdXdXdXdYdXdXdXdXdXdYdXdXdXdXdXdYdXdXdXdXdXdYdXdXdXdXdXdYdXdXdXdXdXdZ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaababababababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaababababacacacacacacacacacacacacacacacacacacacacacacacacabababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababeaeaeaeaeaeaeaeaeaebecececececececececececececebeaeaeaeaeaeaeaeaea @@ -955,10 +1518,10 @@ ababababababababababababababababababglglglglglglglglglglglglglglglglglglglglglgl ababababababababababababababababababglglglglglglglglglglglglglglglglglglglglglglglglabababababababababababababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabababglglglglglglglglglglglglglglglglglglglglglglglglglglglababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababaVbTbTbTaVabababababababababababababababababababababababababababababababababababababababababababab ababababababababababababababababababglglglglglglglglglglglglglglglglglglglglglglglglabababababababababababababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabababglglglglglglglglglglglglglglglglglglglglglglglglglglglababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababaVaVaVaVaVeqepepepepepepeperaVaVesaVaVabababababababababababababababababababababababababababababababababababababababababababab ababababababababababababababababababglglglglglglglglglglglglglglglglglglglglglglglglabababababababababababababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabababglglglglglglglglglglglglglglglglglglglglglglglglglglglababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababaVeteteteubTbTbTbTbTbTbTbTeueueubTetaVabababababababababababababababababababababababababababababababababababababababababababab -ababababababababababababababababababglglglglglglglglglglglglglglglglglglglglglglglglabababababababababababababababababababababababababababababababababababababababababababababababababababababababglglglglglglglglglglglglglglglglglglglglglglglglglglglababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababaVeubTbTbTbTbTbTbTevbTbTbTbTbTbTbTetaVabababababababababababababababababababababababababababababababababababababababababababab +ababababababababababababababababababglglglglglglglglglglglglglglglglglglglglglglglglabababababababababababababababababababababababababababababababababababababababababababababababababababababababglglglglglglglglglglglglglglglglglglglglglglglglglglglababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababaVeubTbTbTbTbTbTbTxybTbTbTbTbTbTbTetaVabababababababababababababababababababababababababababababababababababababababababababab ababababababababababababababababababglglglglglglglglglglglglglglglglglglglglglglglglabglglglglglglglglglglglglglglglglglglglglglglglabababababababababababababababababababababababababababababababglglglglglglglglglglglglglglglglglglglglglglglglglglglababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababaVewbTbTbTbTbTbTexexexbTbTbTbTbTbTetaVabababababababababababababababababababababababababababababababababababababababababababab -ababababababababababababababababababglglglglglglglglglglglglglglglglglglglglglglglglabglglglglglglglglglglglglglglglglglglglglglglglababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababaVewbTbTbTbTbTeVexexexeVbTbTbTbTbTeuaVabababababababababababababababababababababababababababababababababababababababababababab -ababababababababababababababababababglglglglglglglglglglglglglglglglglglglglglglglglabglglglglglglglglglglglglglglglglglglglglglglglababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababaVewbTbTbTbTbTbTeVeVeVbTbTbTbTbTbTbTaVabababababababababababababababababababababababababababababababababababababababababababab +ababababababababababababababababababglglglglglglglglglglglglglglglglglglglglglglglglabglglglglglglglglglglglglglglglglglglglglglglglababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababaVewbTbTbTbTbTxzexexexxAbTbTbTbTbTeuaVabababababababababababababababababababababababababababababababababababababababababababab +ababababababababababababababababababglglglglglglglglglglglglglglglglglglglglglglglglabglglglglglglglglglglglglglglglglglglglglglglglababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababaVewbTbTbTbTbTbTxBxCxDbTbTbTbTbTbTbTaVabababababababababababababababababababababababababababababababababababababababababababab ababababababababababababababababababglglglglglglglglglglglglglglglglglglglglglglglglabglglglglglglglglglglglglglglglglglglglglglglglababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababaVbTbTbTbTbTbTbTbTbTbTbTbTbTbTbTbTbTaVabababababababababababababababababababababababababababababababababababababababababababab ababababababababababababababababababglglglglglglglglglglglglglglglglglglglglglglglglabglglglglglglglglglglglglglglglglglglglglglglglababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababaVbTbTeueteteubTbTbTbTbTbTbTbTbTbTbTaVabababababababababababababababababababababababababababababababababababababababababababab eyeyeyeyeyeyeyeyeyeyeyeyeyeyeyabababglglglglglglglglglglglglglglglglglglglglglglglglabglglglglglglglglglglglglglglglglglglglglglglglababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababaVaVeZaVaVaVaVaVaVaVaVaVaVaVaVaVeZaVaVabababababababababababababababababababababababababababababababababababababababababababab @@ -1003,19 +1566,19 @@ abababababababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababeIeReReSeTeUfeeWeXeYfeeUfafbeReReIababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababeIeReRfcfdfdfefdfdfdfefdfdfceReReIababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababfffbeReMfdfefefefefefefefdeMeReSfgababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab -ababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababfffhfifjfkflfmfefnfdfefofpfhfgabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab -ababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababeIfqfrfsftfefdfdfefoeIabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab -ababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababeIfufvfvfmfefofwfefofcfxfxfxfxabababababababababababababababababababababababababababababababababababababababababababababjpabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab -ababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababeIfyfvfvfzfefofwfefeeMalfxfxfxabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab -ababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababeKfhfhfhfifefdfdfefoeNfxfxfxfxabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab -ababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababeIfBfefBeIfefofwfefofCabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab -ababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababeIfBfefBfcfefofwfefoeNwPwPwPwPabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab -ababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababeIfBfefefDfefefefefeeManwPwPwPabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab -ababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababeIfBfefBfFfefdfdfdfdfFwPwPwPwPabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab -ababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababeIfBfefBeIfefGfHfIeUeIabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab +ababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababfffhfifjfkflfmfefnfdfexEfpfhfgabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab +ababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababeIfqxFxGftfefdfdfexHeIabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab +ababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababeIfufvfvfmfexIxJfexKfcfxfxfxfxabababababababababababababababababababababababababababababababababababababababababababababjpabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab +ababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababeIfyfvfvfzfexLxMfefeeMalfxfxfxabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab +ababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababeKfhfhfhfifefdfdfexNeNfxfxfxfxabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab +ababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababeIxOfexPeIfexQxRfexSfCabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab +ababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababeIxTfexUfcfexVxWfexXeNwPwPwPwPabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab +ababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababeIxYfefefDfefefefefeeManwPwPwPabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab +ababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababeIxZfeyafFfefdfdfdfdfFwPwPwPwPabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab +ababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababeIybfeyceIfefGfHfIeUeIabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab ababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababfffJfJfhfKfLePfhfJfJfgabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab -abababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababffeQfMfofefNfOeKfgababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab -ababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababeIfIfdfPfdfMeIabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab +abababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababffeQfMydfeyefOeKfgababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab +ababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababeIfIfdyffdfMeIabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab ababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababeIfQfRfSfTfUeIabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab ababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababfffCfCfCfCfCfgabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab ababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab @@ -1032,50 +1595,50 @@ abababababababababababababababababababababababababababababababababababababababab ababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababfVabababababababgsgigjgjgjgjfVfVfVfVfVabgkgkgkgkgkgkgkgkgkabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab ababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababfVabababababababgugigjgjgjgjfVgvgvgvfVabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab ababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababfVabababababababgzgigjgjgjgjgAgvgvgvfVabgkgkgkgkgkgkgkgkgkabababababababababjqjrjrjrjrjrjrjrjsabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab -ababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababfVabababababababfVgFgGgHgjgIfVgvgvgvfVabgkgogkgogkgogkgogkabababababababababjCjEjDjFjFjFjFjGjCabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab +ababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababfVabababababababfVgFgGgHgjgIfVgvgvgvfVabgkgogkgogkgogkgogkabababababababababjCjEygyhyiyjykyljCabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab ababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababfVabababababababfVfVfVfVfVgMfVfVfVfVfVabgkgkgkgkgkgkgkgkgkabgNgNgNgNgNgNababjCjEjEjEjEjEjEjEjCabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababababababababababababababiSiSiSiSiSiSiSiSiSiSiSiSiSiSiSiSiSiSiSiSiSiSiSiSiSiSiSiSiSiSiSiSiSiSababababababababababababababababababababababababababababababababababfVfVfVfVfVfVfVgOgPgPgPgQgRgQgPgPgPgOabgkgogkgogkgogkgogkabgNgSgTgTgUgNgOgOjCjEjEjEjEjEjEjEjCabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababababababababababababababiSamamamamamamamamamamamamamamamamamatamamamamamamamamamamamamamamiSababababababababababababababababababababababababababababababababababababgVgVgVgVgVgOgPgWgPgXgYgXgPgWgPgOabgkgkgkgkgkgkgkgkgkabgZhahahahajHgYjJjIjEjEjEjEjEjEjEjCabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab -abababababababababababababababababababababababababababababababababababababababababababababababiSamamamamamamatamamamamamamamamamamamamamamamamamamamamamamamamamiSababababababababababababababababababababababababababababababababababababgVhbhchdhegVgPgPgPhfgYhfgPgPgPgOabababababababababababgNhahghhhagNgOgOjCjEjEjEjEjEjEjEjCabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab -abababababababababababababababababababababababababababababababababababababababababababababababiSamamamatavamamamavamamamamatamavamamamamamamamatamamavamamamatamiSababababababababababababababababababababababababababababababababababababgVhphqhchcgVhrgOhrgOgYgOhrgOhrgOabababgNgNgNgNgNgNgNgNgNhshthuhvgNababjCjEjEjEjEjEjEjEjCabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab -abababababababababababababababababababababababababababababababababababababababababababababababiSamavamatamamavamamamavamamamamamatamamavamamamamamamamatavamamamiSababababababababababababababababababababababababababababababababababababgVhchchchJgVhKgQhLgYgYgYhMhrhKgOabababgNhNhOhOhOhPhQhRhShahahahagNababjCjEjEjEjKjEjEjEjCabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab -abababababababababababababababababababababababababababababababababababababababababababababababiSamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamiSabababababababababababababababababababababababgVgVgVgVgVgVgVgVgVgVgVgVgVgVgVgVhXgVgVhKgXhYgYgYgYhZgOhrgOgOgOgOgNiaibibibibibibichahahahagNababjLjrjrjrjrjrjrjrjMabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab -abababababababababababababababababababababababababababababababababababababababababababababababiSamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamiSabababababababababababababababababababababababgViiiiiiiiiiiiiiiiiiiiiiiiiiijikilimgVhKgXhYgYgYgYgYgYinioipipiqgNiaibibibibibibirisitiuivgNfYfYababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab -ababababababababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabababababababiSamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamiSabababababababababababababababababababababababgViiiDabababababababababiDiiiEikizimgVhKgXhYgYgYgYhMgOhrgOgOipiGgNiaibibibibibiHiIiJibibiKgNfYfYababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab -ababababababababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabababababababiSamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamiSabababababababababababababababababababababababgViDabababababababababababiZjadlizimgVhKhfhYgYgYgYjbhrhKgOjcjdjegNjfibibibibjgjhjiiJibibiKgNfYfYababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab +abababababababababababababababababababababababababababababababababababababababababababababababiSamamamamamamatamamamamamamamamamamamamamamamamamamamamamamamamamiSababababababababababababababababababababababababababababababababababababgVhbhchdhegVgPgPgPhfgYhfgPgPgPgOabababababababababababgNhahgymhagNgOgOjCjEjEjEjEjEjEjEjCabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab +abababababababababababababababababababababababababababababababababababababababababababababababiSamamamatavamamamavamamamamatamavamamamamamamamatamamavamamamatamiSababababababababababababababababababababababababababababababababababababgVhpynhchcgVhrgOhrgOgYgOhrgOhrgOabababgNgNgNgNgNgNgNgNgNhshthuhvgNababjCjEjEjEjEjEjEjEjCabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab +abababababababababababababababababababababababababababababababababababababababababababababababiSamavamatamamavamamamavamamamamamatamamavamamamamamamamatavamamamiSababababababababababababababababababababababababababababababababababababgVhchchchJgVhKgQhLgYgYgYhMhrhKgOabababgNhNyoypyqhPhQhRhShahahahagNababjCjEjEjEjKjEjEjEjCabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab +abababababababababababababababababababababababababababababababababababababababababababababababiSamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamiSabababababababababababababababababababababababgVgVgVgVgVgVgVgVgVgVgVgVgVgVgVgVhXgVgVhKgXyrgYgYgYhZgOhrgOgOgOgOgNysibibibibibibichahahahagNababjLjrjrjrjrjrjrjrjMabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab +abababababababababababababababababababababababababababababababababababababababababababababababiSamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamiSabababababababababababababababababababababababgViiiiiiiiiiiiiiiiiiiiiiiiiiijikilimgVhKgXytgYgYgYgYgYinioipipiqgNyuibibibibibibirisitiuivgNfYfYababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab +ababababababababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabababababababiSamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamiSabababababababababababababababababababababababgViiiDabababababababababiDiiiEikizimgVhKgXyvgYgYgYhMgOhrgOgOipiGgNywibibibibibyxiIiJibibiKgNfYfYababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab +ababababababababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabababababababiSamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamiSabababababababababababababababababababababababgViDabababababababababababiZjadlizimgVhKhfyygYgYgYjbhrhKgOjcyzjegNjfibibibibjgjhjiiJibibiKgNfYfYababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab ababababababababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabababababababiSamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamiSabababababababababababababababababababababababgVabababababababababababeojtjuikizjvgVjwgVjxgYgYgYhZgOhrgOhrjyhrgNjzibibibibjAjAjAjBibibiKgNababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab ababababababababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabababababababiSamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamiSabababababababababababababababababababababababgViDabababababababababababiZjPikiziljQjRjRgYgYgYgYgYgYinjSipjTipjUjVibibibibibibibibibibiKjWababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab ababababababababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabababababababiSamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamiSabababababababababababababababababababababababgViiiDabababababababababiDiiiEikizkegVjwgVhLgYgYgYhMgOhrgOgOgOgOgNkfibibibibkgkgkgkhibibiKgNgNgNgNgNgNgNgNgNababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab -ababababababababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabababababababiSamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamiSabababababababababababababababababababababababgViiiiiiiiiiiiiiiiiiiiiiiiiikjikilimgVhKgQhYgYgYgYklgQhKgOabababgNkmibibibibknkokpiJibibibibibibibibibibibgNababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab -ababababababababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabababababababiSamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamiSabababababababababababababababababababababababgVgVgVgVgVgVgVkukvkvkwgVgVgVgVgVkxgVgVhKgXhYgYgYgYklgXhKgOabababgNkyibibibibibkzkAiJibibibibibibibibibibibgNababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab -ababababababababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabababababababiSamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamiSababababababababababababababababababababababababababgVilkFilililililililkGkHilililgVhKhfhYgYgYgYklhfhKgOabababgNkyibibibibibibibibibibibibibibibibibibibgNababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab -ababababababababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabababababababiSamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamiSababababababababababababababababababababababababababgVililililiAiliAililililililkUgVkVkVkWkXkYkZlakVkVkVabababgNkyibibibibibibibiLfZiLiMiLisisisiLfZiLfZiLababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab -ababababababababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabababababababiSamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamiSababababababababababababababababababababababababababgVloilillplplplpiBililililillrgVlsltlulvlwlxlultltkVabababgNlylzlzlzlAlBlClAicibiciKicabababicibicibicababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab -ababababababababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabababababababiSamamamamamamamamamamamamawamamamamamamamamamamamamamamamamamamamiSababababababababababababababababababababababababababgVlSiliCmBjNjOlpilililililillWgVltlXlYlvlwlxlYlZltkVabababgNgNgNgNgNgNgNgNgNlDiNlDiNlDababablDfZlDfZlDababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab -ababababababababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamfmgmhmiaaaaaaaaaaaaaaaaaaaaaaabababababababiSamamamamamamamamamiSayiSayiSaCamaWiSayiSayiSaCamamamamamamamatamiSababababababababababababababababababababababababababgVmuilillplplplpiBilililililmvgVmwltmwlvlwlxmwltmwkVabababababababababababababababababababababiOabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab -ababababababababababaaaaaaaaaaaaaaaaaaaaaaaaaamHaamIgamKmLmMaaaaaaaaaaaaaaaaaaaaabababababababiSamamamamamamamamamaAmnaAmnaAaCamaWaAmnaAmnaAaCamamatamamamamamamiSababababababababababababababababababababababababababgVmYililiFiliFilililililililnagVnbltltlvlwlxltltnckVabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab +ababababababababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabababababababiSamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamiSabababababababababababababababababababababababgViiiiiiiiiiiiiiiiiiiiiiiiiikjikilimgVhKgQyAgYgYgYyBgQhKgOabababgNkmibibibibknkokpiJibibibibibibibibibibibgNababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab +ababababababababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabababababababiSamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamiSabababababababababababababababababababababababgVgVgVgVgVgVgVkukvkvkwgVgVgVgVgVkxgVgVhKgXyCgYgYgYyDgXhKgOabababgNyEibibibibibyFkAiJibibibibibibibibibibibgNababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab +ababababababababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabababababababiSamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamiSababababababababababababababababababababababababababgVilkFilililililililkGyGilililgVhKhfyHgYgYgYyIhfhKgOabababgNyJibibibibibibibibibibibibibibibibibibibgNababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab +ababababababababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabababababababiSamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamiSababababababababababababababababababababababababababgVililililyKilyLililililililkUgVkVkVkWkXkYkZlakVkVkVabababgNyMibibibibibibibiLfZiLiMiLisisisiLfZiLfZiLababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab +ababababababababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabababababababiSamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamiSababababababababababababababababababababababababababgVloilillplplplpyNililililillrgVlsltlulvlwlxlultltkVabababgNlyyOyPyQlAlBlClAicibiciKicabababicibicibicababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab +ababababababababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabababababababiSamamamamamamamamamamamamawamamamamamamamamamamamamamamamamamamamiSababababababababababababababababababababababababababgVlSilyRmBjNjOlpilililililillWgVltySlYlvlwlxlYyTltkVabababgNgNgNgNgNgNgNgNgNlDiNlDiNlDababablDfZlDfZlDababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab +ababababababababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamfmgmhmiaaaaaaaaaaaaaaaaaaaaaaabababababababiSamamamamamamamamamiSayiSayiSaCamaWiSayiSayiSaCamamamamamamamatamiSababababababababababababababababababababababababababgVmuilillplplplpyUilililililmvgVmwltmwlvlwlxmwltmwkVabababababababababababababababababababababiOabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab +ababababababababababaaaaaaaaaaaaaaaaaaaaaaaaaamHaamIgamKmLmMaaaaaaaaaaaaaaaaaaaaabababababababiSamamamamamamamamamaAmnaAmnaAaCamaWaAmnaAmnaAaCamamatamamamamamamiSababababababababababababababababababababababababababgVmYililyVilyWilililililililnagVnbltltlvlwlxltltnckVabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab ababababababababababaaaaaaaaaaaaaaaaaaaaaaaaaamHnlnmnnmKnonpaaaaaaaaaaaaaaaaaaaaabababababababiSamamamamamamamavamaBmnaBmnaBaEaxaDaBmnaBmnaBaEavaxaxamamavamamamiSababababababababababababababababababababababababababgVnBilililililililnCnDnEnFnanGgVnHnInIlvlwlxnJnJnKkVabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab -ababababababababababaaaaaaaaaaaaaaaaaaaaaaaaaanpnXnYnonZoanpaaaaaaaaaaaaaaaaaaaaabababababababiSamavamamatavamamaWiSayiSayiSaYoelniSayiSayiSiSiSiSiSbIamamatamamiSababababababababababababababababababababababababababgVgVgVgVgVohgVgVgVgVgVgVgVgVgVgVkVkVkVkVlwkVkVkVkVkVabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab -ababababababababababaaaaaaaaaaaaaaaaaaaaaaaaaamLmMolomolonooaaaaaaaaaaaaaaaaaaaaabababababababiSamamavamamamamataWiSbKmnmnmnbKmnmnmnbKmnmnmnbKmnmniSaCamamamavamiSabababababababababababababababababababababababababababababababababababababababababababababkVlwkVabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab -ababababababababababaaaaaaaaaaaaaaaaaaaaaaaamHmHoooyozoAmLaaaaaaaaaaaaaaaaaaaaaaabababababababiSamamamamavamamamaWiSmnmnmnmnmnmnmnmnmnmnmnmnmnmnmniSaCatamamamamiSabababababababababababababababababababababababababababababababababababababababababababababkVkYkVabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab -ababababababababababaaaaaaaaaaaaaaaaaaaaaaoKoLoMoNoOoPmKoQmHaaaaaaaaaaaaaaaaaaaaabababababababiSavamamamamavamavaWiSaYoeoeoeoeoeoeoeoeoeoeoelniSbLiSaCamavamatamiSabababababababababababababababababababababababababababababababababababababababababababababkVlwkVabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab -ababababababababababaaaaaaaaaaaaaaaaaaaakCpipjpkploOmKnYpmpnmHmHaaaaaaaaaaaaaaaaabababababababiSamamavatamamaxaxaxbWbWbWbWcncncncncncncncncnbPiSmniSbIamatamamamiSabababababababababababababababababababababababababababababababababababababababababababababkVlwkVabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab -ababababababababababaaaaaaaaaaaaaaaaaamHaaoMpDpDpEoOmKpFnYpnaapGpHaaaaaaaaaaaaaaabababababababiSamamamamamazabababababababazatamamavamamaxaxaDiSmniSaCamamamamamiSabababababababababababababababababababababababababababababababababababababababababababababkVlwkVabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab -ababababababababababaaaaaaaaaaaaaaaaaaoQmHaaaamHpTpUnnpVnnoQmHmHaaaaaaaaaaaaaaaaabababababababiSatavamamamabababababababababbIamamamataDiSiSqOiScoiScpaxcqaxcqaxiSabababababababababababababababababababababababababababababababababababababababababababababkVlwkVabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab -ababababababababababaaaaaaaaaaaaaaonqiqjqkqlqmqlqlqiqnqkqlqlqmqlqlaamHaaaaaaaaaaabababababababiSamamamamamabababababababababaCamamamaWiSiSlPlQhkmniSiSiSiSiSiSiSiSabababababababababababababababababababababababababababababababababababababababababababababkVlwkVabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab -ababababababababababaaaaaaaaaaaaaaqwqxmKmKqxqwqyqzmKmKmKqAqBqwqCozoQqDmHmHaaaaaaabababababababiSamamamamamabababababababababaCavamauaWiSaXmnmnmnmnhnmompiSgtiwhIiSabababababababababababababababababababababababababababababababababababababababababababababkVlwkVabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab -ababababababababababaaaaaaaaaaaaaaqYqZmKmKqZqYqDqDmKmKmKmKraqYrbrcpDpDrdaaaaaaaaabababababababiSamhTamamamazabababababababazamamamamgwiSmRmnjYjYmTmnmUmVpcpdpdgxiSiSiSiSiSiSiSiSiSiSiSiSababababababababababababababababababababababababababababababababababkVlwkVabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab -ababababababababababaaaaaaaaaaaaaarnromKnYmKrppFnYmKgbmKmKrrrnrsrtrurvrwkDaaaaaaabababababababiSamamamamamamamabababababcpaxaxaxaxcqaDiSnujYnvixjYmnjZnyiSpdgyiSiSgBgDgCgEgEgJgEgEgKgLiSababababababababababababababababababababababababababababababababababkVlwkVabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab -ababababababababababaaaaaaaaaaaaaarGqZmKnnpFrHnnmKmKrImKmKmKrGrJrKrdrLoKaaaaaaaaabababababababiSamamamavamamamabababababodoeoeoeoeoelniSkajYofogjYmnjZnyiSiSiSiSiSgDgChijXhjhlhjkbhmgKiSababababababababababababababababababababababababababababababababababkVlwkVabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab -ababababababababababaaaaaaaaaaaaaamirWmKmKrWmirXmKnYnnmKmKrXmirYrZsasbaaaaaaaaaaabababababababiSatamazabababababababababopoqoroqoqoqoqotmnbMmnmnmnmnjZnyiSiSiSiSiSgDhojXhjhwhyhxhjkbhziSababababababababababababababababababababababababababababababababababkVlwkVabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab -ababababababababababaaaaaaaaaaaaaamLqisfqkqlsgqlqiolsholqkqlsgqlqimHmHmHaaaaaaaaabababababababiSamamababababababababababoDbNlmoeoeoelniSkdjYjYjYkamnjZnylmoeoeoeoeoeoehjhwhyhAhyhxhjhziSababababababababababababababababababababababababababababababababababkVlwkVabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab -ababababababababababaaaaaaaaaaaaaaaaaapTnYaamHaamHsooPpTaaaamHaaaaaaaamHaaaaaaaaabababababababiSamamabababababababababababbOabazamambPiSoXoYoZoYiymnpapbhChBhBhDhBhBhChlhyhEhGhFhyhlhziSababababababababababababababababababababababababababababababababababkVlwkVabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab -ababababababababababaaaaaaaaaaaaaaaaaamHmHaastnYaasusvpTmHaapFaaaaaaaaaaaaaaaaaaabababababababiSbUamababababababababababababababkcamaWiScfpvpwpxpymnmnmnlmoeoeoeoeoeoehjhwhyhHhyhyhjhziSabababababababababababababababababababababababababababsJsJsJsJsJsJsJsJiPsJsJsJsJsJsJsJsJababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab -ababababababababababaaaaaaaaaaaaaaaaaaaaaaaamHmHaasBnYsCaaaaaamHaaaaaaaaaaaaaaaaabababababababiSavamababababababababababababababaCamaWiSiSnypPcgcmiSpSmniSiSiSiSiSgDhokihjhwhyhxhjkkhziSabababababababababababababababababababababababababababsJiQiRiRiRiRiRiQiQiQiRiRiRiRiRiQsJababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab -ababababababababababaaaaaaaaaaaaaaaaaaaaaaaaaamHqmqisIqkqmmHaamHmHaaaaaaaaaaaaaaabababababababiSamamababababababababababababababaEamamamiSiSiSiSiSiSqcqcqdqeqfqgiSgDhVhUkihjhWhjkkidieiSabababababababababababababababababababababababababababiTiQiQiQiUiQiQiQiQiQiQiQiUiQiQiQiTababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab -ababababababababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaqwsMsNsOqwstrcplsPsQmHaaaaaaaaaaabababababababiSamazabababababababababababababababazamamamcncnkqbPiSqrqsqsqsqsqsiSifgDhVigigihigigieifiSabababababababababababababababababababababababababababsJiQiRiRiRiRiRiQiQiQiRiRiRiRiRiQsJababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab -ababababababababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaolsVsWsXolnYsYpksZmKnpaaaaaaaaaaabababababababiSamabababababababababababababababababaCamamatamamaWqOqsqsqsqsqsksiSiSiSiSiSiSiSiSiSiSiSiSabababababababababababababababababababababababababababsJsxsysysysysysysysysysysysysyszsJababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab -ababababababababababaaaaaaaaaaaaaaaaaaaaaaaaoPmHmitatbtcminntdpksZaamHaaaaaaaaaaabababababababiSamabababababababababababababababababaCamamaukrktaDiSrjrjrjrjrjrkiSababababababababababababababababababababababababababababababqtqtqtqtqtqtqtqtqtquqvqvqvqvqvqvqvqvqvqvqvqvqvquqtqtqtqtqtqtqtqtqtababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab +ababababababababababaaaaaaaaaaaaaaaaaaaaaaaaaanpnXnYnonZoanpaaaaaaaaaaaaaaaaaaaaabababababababiSamavamamatavamamaWiSayiSayiSaYoelniSayiSayiSiSiSiSiSbIamamatamamiSababababababababababababababababababababababababababgVgVgVgVgVohgVgVgVgVgVgVgVgVgVgVkVkVkVkVlwkVkVkVkVkVabababababababababababababababababababababababababababababababababababababababababababababababababababababyXyYyZzazbzczdzezfzgzhzizjzkzlzmznzozpzqzrabababababababababababababababababababababababababababababababababababababababababababababababab +ababababababababababaaaaaaaaaaaaaaaaaaaaaaaaaamLmMolomolonooaaaaaaaaaaaaaaaaaaaaabababababababiSamamavamamamamataWiSbKmnmnmnbKmnmnmnbKmnmnmnbKmnmniSaCamamamavamiSabababababababababababababababababababababababababababababababababababababababababababababkVlwkVabababababababababababababababababababababababababababababababababababababababababababababababababababababababababzsztzuzvzwzxzyzzzAzBzCzDzEzFzGzHzIzJzKzLzMabababababababababababababababababababababababababababababababababababababababababababababababab +ababababababababababaaaaaaaaaaaaaaaaaaaaaaaamHmHoooyozoAmLaaaaaaaaaaaaaaaaaaaaaaabababababababiSamamamamavamamamaWiSmnmnmnmnmnmnmnmnmnmnmnmnmnmnmniSaCatamamamamiSabababababababababababababababababababababababababababababababababababababababababababababkVkYkVabababababababababababababababababababababababababababababababababababababababababababababababababababababababababzNzOzPzQzRzSzTzUzVzWzXzYzZAaAbAcAdAeAfAgAhabababababababababababababababababababababababababababababababababababababababababababababababab +ababababababababababaaaaaaaaaaaaaaaaaaaaaaoKoLoMoNoOoPmKoQmHaaaaaaaaaaaaaaaaaaaaabababababababiSavamamamamavamavaWiSaYoeoeoeoeoeoeoeoeoeoeoelniSbLiSaCamavamatamiSabababababababababababababababababababababababababababababababababababababababababababababkVlwkVabababababababababababababababababababababababababababababababababababababababababababababababababababababababababAiAjAkAlAmAnAoApAqArAsAtAuAvAwAxAyAzAAABACabababababababababababababababababababababababababababababababababababababababababababababababab +ababababababababababaaaaaaaaaaaaaaaaaaaakCpipjpkploOmKnYpmpnmHmHaaaaaaaaaaaaaaaaabababababababiSamamavatamamaxaxaxbWbWbWbWcncncncncncncncncnbPiSmniSbIamatamamamiSabababababababababababababababababababababababababababababababababababababababababababababkVlwkVabababababababababababababababababababababababababababababababababababababababababababababababababababababababababADAEAFAGAHAIAJAKALAMANAOAPAQARASATAUAVAWAXabababababababababababababababababababababababababababababababababababababababababababababababab +ababababababababababaaaaaaaaaaaaaaaaaamHaaoMpDpDpEoOmKpFnYpnaapGpHaaaaaaaaaaaaaaabababababababiSamamamamamazabababababababazatamamavamamaxaxaDiSmniSaCamamamamamiSabababababababababababababababababababababababababababababababababababababababababababababkVlwkVabababababababababababababababababababababababababababababababababababababababababababababababababababababababababAYAZBaBbBcBdBeBfBgBhBiBjBkBlBmBnBoBpBqBrBsabababababababababababababababababababababababababababababababababababababababababababababababab +ababababababababababaaaaaaaaaaaaaaaaaaoQmHaaaamHpTpUnnpVnnoQmHmHaaaaaaaaaaaaaaaaabababababababiSatavamamamabababababababababbIamamamataDiSiSqOiScoiScpaxcqaxcqaxiSabababababababababababababababababababababababababababababababababababababababababababababkVlwkVabababababababababababababababababababababababababababababababababababababababababababababababababababababababababBtBuBvBwBxByBzBABBBCBDBEBFBGBHBIBJBKBLBMBNabababababababababababababababababababababababababababababababababababababababababababababababab +ababababababababababaaaaaaaaaaaaaaonqiqjqkqlqmqlqlqiqnqkqlqlqmqlqlaamHaaaaaaaaaaabababababababiSamamamamamabababababababababaCamamamaWiSiSlPlQhkmniSiSiSiSiSiSiSiSabababababababababababababababababababababababababababababababababababababababababababababkVlwkVabababababababababababababababababababababababababababababababababababababababababababababababababababababababababBOBPBQBRBSBTBUBVBWBXBYBZCaCbCcCdCeCfCgChCiabababababababababababababababababababababababababababababababababababababababababababababababab +ababababababababababaaaaaaaaaaaaaaqwCjmKmKCkqwqyqzmKmKmKqAqBqwqCozoQqDmHmHaaaaaaabababababababiSamamamamamabababababababababaCavamauaWiSaXmnmnmnmnhnmompiSgtiwhIiSabababababababababababababababababababababababababababababababababababababababababababababkVlwkVabababababababababababababababababababababababababababababababababababababababababababababababababababababababababClCmCnCoCpCqCrCsCtCuCvCwCxCyCzCACBCCCDCECFabababababababababababababababababababababababababababababababababababababababababababababababab +ababababababababababaaaaaaaaaaaaaaqYqZmKmKqZqYqDqDmKmKmKmKraqYrbrcpDpDrdaaaaaaaaabababababababiSamhTamamamazabababababababazamamamamgwiSmRmnCGCHmTmnmUmVpcpdpdgxiSiSiSiSiSiSiSiSiSiSiSiSababababababababababababababababababababababababababababababababababkVlwkVabababababababababababababababababababababababababababababababababababababababababababababababababababababababababCICJCKCLCMCNCOCPCQCRCSCTCUCVCWCXCYCZDaDbDcabababababababababababababababababababababababababababababababababababababababababababababababab +ababababababababababaaaaaaaaaaaaaarnromKnYmKrppFnYmKgbmKmKrrrnrsrtrurvrwkDaaaaaaabababababababiSamamamamamamamabababababcpaxaxaxaxcqaDiSnuDdnvixDemnDfnyiSpdgyiSiSgBgDgCgEgEgJgEgEgKgLiSababababababababababababababababababababababababababababababababababkVlwkVabababababababababababababababababababababababababababababababababababababababababababababababababababababababababDgDhDiDjDkDlDmDnDoDpDqDrDsDtDuDvDwDxDyDzDAabababababababababababababababababababababababababababababababababababababababababababababababab +ababababababababababaaaaaaaaaaaaaarGqZmKnnpFrHnnmKmKrImKmKmKrGrJrKrdrLoKaaaaaaaaabababababababiSamamamavamamamabababababodoeoeoeoeoelniSkaDBofogDCmnDDnyiSiSiSiSiSgDgChijXhjhlhjkbhmgKiSababababababababababababababababababababababababababababababababababkVlwkVabababababababababababababababababababababababababababababababababababababababababababababababababababababababababDEDFDGDHDIDJDKDLDMDNDODPDQDRDSDTDUDVDWDXDYabababababababababababababababababababababababababababababababababababababababababababababababab +ababababababababababaaaaaaaaaaaaaamiDZmKmKEamirXmKnYnnmKmKrXmirYrZsasbaaaaaaaaaaabababababababiSatamazabababababababababopoqoroqoqoqoqotmnbMmnmnmnmnEbnyiSiSiSiSiSgDhojXhjEchyEdhjkbhziSababababababababababababababababababababababababababababababababababkVlwkVabababababababababababababababababababababababababababababababababababababababababababababababababababababababababEeEfEgEhEiEjEkElEmEnEoEpEqErEsEtEuEvEwExEyabababababababababababababababababababababababababababababababababababababababababababababababab +ababababababababababaaaaaaaaaaaaaamLqisfqkqlsgqlqiolsholqkqlsgqlqimHmHmHaaaaaaaaabababababababiSamamababababababababababoDbNlmoeoeoelniSkdEzEAEBkamnECnylmoeoeoeoeoeoehjEDhyEEhyEFhjhziSababababababababababababababababababababababababababababababababababkVlwkVabababababababababababababababababababababababababababababababababababababababababababababababababababababababababEGEHEIEJEKELEMENEOEPEQERESETEUEVEWEXEYEZFaabababababababababababababababababababababababababababababababababababababababababababababababab +ababababababababababaaaaaaaaaaaaaaaaaapTnYaamHaamHsooPpTaaaamHaaaaaaaamHaaaaaaaaabababababababiSamamabababababababababababbOabazamambPiSoXoYoZoYiymnpapbhChBhBhDhBhBhChlhyFbhGFchyhlhziSababababababababababababababababababababababababababababababababababkVlwkVabababababababababababababababababababababababababababababababababababababababababababababababababababababababababFdFeFfFgFhFiFjFkFlFmFnFoFpFqFrFsFtFuFvFwFxabababababababababababababababababababababababababababababababababababababababababababababababab +ababababababababababaaaaaaaaaaaaaaaaaamHmHaastnYaasusvpTmHaapFaaaaaaaaaaaaaaaaaaabababababababiSbUamababababababababababababababkcamaWiScfpvpwpxpymnmnmnlmoeoeoeoeoeoehjFyhyFzhyhyhjhziSabababababababababababababababababababababababababababsJsJsJsJsJsJsJsJiPsJsJsJsJsJsJsJsJababababababababababababababababababababababababababababababababababababababababababababababababababFAFBFCFDFEFFFGFHFIFJFKFLFMFNFOFPFQFRFSFTFUabababababababababababababababababababababababababababababababababababababababababababababababab +ababababababababababaaaaaaaaaaaaaaaaaaaaaaaamHmHaasBnYsCaaaaaamHaaaaaaaaaaaaaaaaabababababababiSavamababababababababababababababaCamaWiSiSnypPcgcmiSpSmniSiSiSiSiSgDhokihjFVhyFWhjkkhziSabababababababababababababababababababababababababababsJiQFXFYFZGaGbiQiQiQGcGdGeGfGgiQsJababababababababababababababababababababababababababababababababababababababababababababababababababGhGiGjGkGlGmGnGoGpGqGrGsGtGuGvGwGxGyGzGAGBabababababababababababababababababababababababababababababababababababababababababababababababab +ababababababababababaaaaaaaaaaaaaaaaaaaaaaaaaamHqmqisIqkqmmHaamHmHaaaaaaaaaaaaaaabababababababiSamamababababababababababababababaEamamamiSiSiSiSiSiSqcqcqdqeqfqgiSgDhVhUkihjhWhjkkidieiSabababababababababababababababababababababababababababiTiQiQiQiUiQiQiQiQiQiQiQiUiQiQiQiTababababababababababababababababababababababababababababababababababababababababababababababababababGCGDGEGFGGGHGIGJGKGLGMGNGOGPGQGRGSGTGUGVGWabababababababababababababababababababababababababababababababababababababababababababababababab +ababababababababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaqwsMsNsOqwstrcplsPsQmHaaaaaaaaaaabababababababiSamazabababababababababababababababazamamamcncnkqbPiSqrqsqsqsqsqsiSifgDhVigigihigigieifiSabababababababababababababababababababababababababababsJiQGXGYGZHaHbiQiQiQHcHdHeHfHgiQsJababababababababababababababababababababababababababababababababababababababababababababababababababHhHiHjHkHlHmHnHoHpHqHrHsHtHuHvHwHxHyHzHAHBabababababababababababababababababababababababababababababababababababababababababababababababab +ababababababababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaolsVHCsXolnYsYpksZmKnpaaaaaaaaaaabababababababiSamabababababababababababababababababaCamamatamamaWqOqsqsqsqsqsHDiSiSiSiSiSiSiSiSiSiSiSiSabababababababababababababababababababababababababababsJsxsysysysysysysysysysysysysyszsJababababababababababababababababababababababababababababababababababababababababababababababababababHEHFHGHHHIHJHKHLHMHNHOHPHQHRHSHTHUHVHWHXHYabababababababababababababababababababababababababababababababababababababababababababababababab +ababababababababababaaaaaaaaaaaaaaaaaaaaaaaaoPmHmitatbtcminntdpksZaamHaaaaaaaaaaabababababababiSamabababababababababababababababababaCamamaukrktaDiSrjrjrjrjrjrkiSababababababababababababababababababababababababababababababqtqtqtqtqtqtqtqtqtquqvqvqvqvqvqvqvqvqvqvqvqvqvquqtqtqtqtqtqtqtqtqtababababababababababababababababababababababababababababababababababababababababababHZIaIbIcIdIeIfIgIhIiIjIkIlImInIoIpIqIrIsItabababababababababababababababababababababababababababababababababababababababababababababababab ababababababababababaaaaaaaaaaaaaaaaaaaaaaaamHqmteqiolqkteqmtftgsZaamHaaaaaaaaaaabababababababiSamabababababababababababababababababaCamamaWiSiSiSiSiSiSiSiSiSiSiSababababababababababababababababababababababababababababababqtqQqRqSqSqSqSqSqTqUqvqvqvqvqvqvqvqvqvqvqvqvqvqVqTqWqWqWqWqWqRqXqtababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab ababababababababababaaaaaaaaaaaaaaaaaaaaaaaamHqwmKtitjtimKqwaatkaaaamHaaaaaaaaaaabababababababiSamabababababababababababababababababkBavamamiSababababababababababababababababababababababababababababababababababababababababqtqQqRqSrlqSrlqSqTqUqvqvqvqvqvqvqvqvqvqvqvqvqvqVqTqWrmqWrmqWqRqXqtababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab ababababababababababaaaaaaaaaaaaaaaaaaaaaamHnYtxmKmKmKmKmKtxaaaaaaaanYaaaaaaaaaaabababababababiSamabababababababababababababababababaCamamamiSababababababababababababababababababababababababababababababababababababababababqtqQqRqSqSrCqSqSqTqUqvqvqvqvqvrDrErDqvqvqvqvqvqVqTqWqWrFqWqWqRqXqtababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab @@ -1084,7 +1647,7 @@ ababababababababababaaaaaaaaaaaaaaaaaaaamHqlqltHtItItItItItJaaaaaaaaaaaaaaaaaaaa ababababababababababaaaaaaaaaaaaaaaaaaaaaaaaaamLqitMtMtMqkooaaaaaaaaaaaaaaaaaaaaabababababababiSamazabababazamamamamamamamazabababazamamavamiSababababababababababababababababababababababababababababababababababababababababqtqQqRqSqSqSqSqSqTqUqvqvqvqvqvqvqvqvqvqvqvqvqvqVqTqWqWqWqWqWqRqXqtababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab ababababababababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaatPtPtPaaaaaaaaaaaaaaaaaaaaaaaaabababababababiSamamamamamamamamamamamamamamamamamamamamamamiSababababababababababababababababababababababababababababababababababababababababqtqtqtssssssssssqtquqvqvqvqvqvqvqvqvqvqvqvqvqvquqtssssssssssqtqtqtababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab ababababababababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabababababababiSiSiSiSiSiSiSiSiSiSiSiSiSiSiSiSiSiSiSiSiSiSiSiSababababababababababababababababababababababababababababababababababababababababababqtswswswswswkVkZqhqhqhqhqhqhqhqhqhqhqhqhqhkXkVsAsAsAsAsAqtababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab -abababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababqtqtqtqtqtqtkViViWiWiWiWiWiXjjiYiWiWiWiWiWiVkVqtqtqtqtqtqtababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab +abababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababqtqtqtqtqtqtkViVIuIvIwIxIyiXIziYIAIBICIDIEiVkVqtqtqtqtqtqtababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababkViViViVjkiVltltltltltiVjkiViViVkVababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababkVkVjlkVkVkVkVjmjojnkVkVkVkVjlkVkVababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababkVkVkVkVkVababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab @@ -1095,12 +1658,12 @@ abababababababababababababababababababababababababababababababababababababababab ababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababthththththththththththththththththththababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababthtltmtntototmtptqtrtstttutvtutututwthababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab -abababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababthtltmtmtmtmtmtytttttttztutututAtututhababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab -abababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababthtltmtCtltDtltEtttttttttututFtutGtvthababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab -abababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababthtKtttztztztztztttttttttutututLtututhababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab +abababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababthtltmtmtmtmtmtyttttttIFtutututAtututhababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab +abababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababthtltmtCtltDtltEtttttttttutuIGtuIHtvthababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab +abababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababthtKttIIIJIKILIMtttttttttutututLtututhababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababthtNtttttttttttttttttttttOtutututututhababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab -abababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababthtNtttttttttttttttttztttOtQtQtQtRtQthababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab -abababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababthtStttttttttttttttztTtztOtUtUtUtUtUthababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab +abababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababthtNttttttttttttttttINtttOtQtQtQtRtQthababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab +abababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababthtSttttttttttttttIOtTIPtOtUtUtUtUtUthababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababththtVtWtWtXthththththththththththththababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab ababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababthtYtYtYtYthababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab ababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababthtYtYtYtYthababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab @@ -1111,7 +1674,7 @@ abababababababababababababababababababababababababababababababababababababababab ababababababababababababababababababababababababababababababababababababababababababababababababababldlflelelelhlgabldlilelelelhlgabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab ababababababababababababababababababababababababababababababababababababababababababababababababababljlllklElqlGlFabljlllHlElIlGlFabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababababababababababababababababablJlKlelelelhlLablJlKlelelelhlLabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab -abababababababababababababababababababababababababababababababababababababababababababababababababablMlOlNlTlRlVlUablMlOlNlTlRlVlUabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab +abababababababababababababababababababababababababababababababababababababababababababababababababablMlOlNlTIQlVlUablMlOlNlTIRlVlUabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababababababababababababababababababmbmamdmcmeabababmbmamdmcmeababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab ababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababababababababababababababababababkIkEkKkJkLabababkIkEkKkJkLababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab @@ -1119,7 +1682,7 @@ abababababababababababababababababababababababababababababababababababababababab ababababababababababababababababababababababababababababababababababababababababababababababababababldmslelelelhlgabldmtlelelelhlgabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab ababababababababababababababababababababababababababababababababababababababababababababababababababljllmxlEmylGlFabljllmzlEmAlGlFabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababababababababababababababababablJlKlelelelhlLablJlKlelelelhlLabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab -abababababababababababababababababababababababababababababababababababababababababababababababababablMlOlNlTlRlVlUablMlOlNlTlRlVlUabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab +abababababababababababababababababababababababababababababababababababababababababababababababababablMlOlNlTISlVlUablMlOlNlTITlVlUabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababababababababababababababababababmbmamdmcmeabababmbmamdmcmeababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab ababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab ababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab @@ -1143,4 +1706,3 @@ abababababababababababababababababababababababababababababababababababababababab ababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab ababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab "} - diff --git a/_maps/map_files/MetaStation/z4.dmm b/_maps/map_files/MetaStation/z4.dmm index 51fc57cc738..e7e0eba3e75 100644 --- a/_maps/map_files/MetaStation/z4.dmm +++ b/_maps/map_files/MetaStation/z4.dmm @@ -164,14 +164,14 @@ "dh" = (/obj/structure/cable{d1 = 1;d2 = 2;icon_state = "1-2";pixel_y = 0},/turf/simulated/wall,/area/derelict/bridge/access) "di" = (/turf/simulated/wall/r_wall,/area/derelict/gravity_generator) "dj" = (/obj/machinery/light/small,/turf/simulated/floor/plasteel,/area/derelict/solar_control) -"dk" = (/obj/item/ore/iron,/obj/item/ore/iron,/obj/item/ore/iron,/turf/space,/area/space) +"dk" = (/obj/item/stack/ore/iron,/obj/item/stack/ore/iron,/obj/item/stack/ore/iron,/turf/space,/area/space) "dl" = (/turf/simulated/floor/plating/airless{icon_state = "damaged2"},/area/derelict/gravity_generator) "dm" = (/obj/machinery/light/small{dir = 1},/turf/simulated/floor/plating/airless{icon_state = "damaged5"},/area/derelict/gravity_generator) "dn" = (/obj/machinery/door/airlock/maintenance,/obj/structure/cable{d1 = 1;d2 = 2;icon_state = "1-2"},/turf/simulated/floor/plasteel,/area/derelict/bridge/access) "do" = (/turf/simulated/wall,/area/derelict/bridge/access) "dp" = (/obj/structure/cable{d1 = 1;d2 = 2;icon_state = "1-2"},/turf/simulated/floor/plasteel,/area/derelict/bridge/access) "dq" = (/turf/simulated/floor/plating/airless{icon_state = "damaged4"},/area/derelict/gravity_generator) -"dr" = (/obj/item/ore/slag,/turf/simulated/floor/plating/airless{icon_state = "damaged4"},/area/derelict/gravity_generator) +"dr" = (/obj/item/stack/ore/slag,/turf/simulated/floor/plating/airless{icon_state = "damaged4"},/area/derelict/gravity_generator) "ds" = (/turf/simulated/floor/plating/airless{icon_state = "damaged5"},/area/derelict/gravity_generator) "dt" = (/turf/simulated/floor/plasteel,/area/derelict/bridge/access) "du" = (/obj/structure/rack,/obj/item/melee/classic_baton,/turf/simulated/floor/plasteel,/area/derelict/bridge/access) @@ -184,7 +184,7 @@ "dB" = (/obj/structure/cable{d1 = 4;d2 = 8;icon_state = "4-8"},/turf/simulated/floor/plasteel,/area/derelict/bridge/access) "dC" = (/obj/item/screwdriver,/turf/simulated/floor/plating/airless{icon_state = "damaged5"},/area/derelict/gravity_generator) "dD" = (/obj/machinery/gravity_generator/main/station{on = 0},/turf/simulated/floor/plating/airless,/area/derelict/gravity_generator) -"dE" = (/obj/item/ore/slag,/turf/space,/area/space) +"dE" = (/obj/item/stack/ore/slag,/turf/space,/area/space) "dF" = (/obj/structure/cable{d1 = 1;d2 = 4;icon_state = "1-4"},/turf/simulated/wall,/area/derelict/bridge/access) "dG" = (/obj/structure/cable{d1 = 2;d2 = 4;icon_state = "2-4"},/obj/structure/cable{d1 = 2;d2 = 8;icon_state = "2-8"},/turf/simulated/floor/plasteel,/area/derelict/bridge/access) "dH" = (/obj/structure/cable{d1 = 2;d2 = 8;icon_state = "2-8"},/turf/simulated/floor/plasteel,/area/derelict/bridge/access) @@ -355,7 +355,7 @@ "gQ" = (/obj/structure/cable{d1 = 1;d2 = 8;icon_state = "1-8"},/obj/effect/landmark/damageturf,/turf/simulated/floor/plating/airless,/area/derelict/hallway/primary) "gR" = (/obj/structure/cable,/obj/machinery/power/apc{dir = 0;name = "Worn-out APC";pixel_y = -24},/turf/simulated/floor/plating/airless,/area/derelict/bridge/access) "gS" = (/obj/machinery/light/small{dir = 4},/turf/simulated/floor/plating/airless,/area/derelict/bridge/access) -"gT" = (/obj/item/ore/slag,/turf/simulated/floor/plating/airless,/area/derelict/singularity_engine) +"gT" = (/obj/item/stack/ore/slag,/turf/simulated/floor/plating/airless,/area/derelict/singularity_engine) "gU" = (/obj/item/shard,/turf/simulated/floor/plating/airless,/area/derelict/singularity_engine) "gV" = (/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plating/airless,/area/derelict/singularity_engine) "gW" = (/turf/simulated/wall/r_wall,/area/derelict/hallway/primary) diff --git a/_maps/map_files/RandomRuins/SpaceRuins/onehalf.dmm b/_maps/map_files/RandomRuins/SpaceRuins/onehalf.dmm index c95082eac76..982be66cace 100644 --- a/_maps/map_files/RandomRuins/SpaceRuins/onehalf.dmm +++ b/_maps/map_files/RandomRuins/SpaceRuins/onehalf.dmm @@ -29,7 +29,7 @@ "aC" = (/obj/machinery/light{dir = 8},/turf/simulated/floor/plasteel,/area/ruin/onehalf/dorms_med) "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) +"aF" = (/obj/structure/disposalpipe/trunk,/obj/item/stack/ore/diamond,/turf/simulated/floor/plating/airless,/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) @@ -153,7 +153,7 @@ "cY" = (/obj/structure/grille,/obj/structure/window/full/reinforced,/obj/structure/cable{d2 = 4; icon_state = "0-4"},/obj/structure/cable,/obj/machinery/door/poddoor/preopen{id_tag = "onehalf bridge"; name = "bridge blast door"},/turf/simulated/floor/plating,/area/ruin/onehalf/bridge) "cZ" = (/obj/structure/lattice,/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"},/turf/space,/area/space) "db" = (/obj/structure/table,/obj/item/flashlight,/turf/simulated/floor/plasteel,/area/ruin/onehalf/bridge) -"dc" = (/obj/structure/table,/obj/item/ore/bluespace_crystal,/obj/item/coin/plasma,/turf/simulated/floor/plasteel,/area/ruin/onehalf/bridge) +"dc" = (/obj/structure/table,/obj/item/stack/ore/bluespace_crystal,/obj/item/coin/plasma,/turf/simulated/floor/plasteel,/area/ruin/onehalf/bridge) "dd" = (/obj/structure/closet/firecloset/full,/turf/simulated/floor/plasteel,/area/ruin/onehalf/bridge) "de" = (/obj/machinery/light,/obj/structure/table,/obj/item/storage/firstaid,/turf/simulated/floor/plasteel,/area/ruin/onehalf/bridge) "df" = (/obj/structure/lattice,/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/space,/area/space) diff --git a/_maps/map_files/RandomZLevels/academy.dmm b/_maps/map_files/RandomZLevels/academy.dmm index 0f9a12fc6f3..4830397aea6 100644 --- a/_maps/map_files/RandomZLevels/academy.dmm +++ b/_maps/map_files/RandomZLevels/academy.dmm @@ -97,7 +97,7 @@ "bS" = (/obj/effect/landmark{name = "awaystart"},/turf/simulated/floor/plasteel{icon_state = "showroomfloor"},/area/awaymission/academy/headmaster) "bT" = (/turf/simulated/floor/plasteel{icon_state = "showroomfloor"},/area/awaymission/academy/headmaster) "bU" = (/obj/structure/grille,/obj/structure/cable{icon_state = "0-2"; d2 = 2},/obj/structure/cable{d2 = 8; icon_state = "0-8"},/obj/structure/window/reinforced{dir = 5},/turf/simulated/floor/plating,/area/awaymission/academy/headmaster) -"bV" = (/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/awaymission/academy/classrooms) +"bV" = (/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel,/area/awaymission/academy/classrooms) "bW" = (/turf/simulated/shuttle/wall{tag = "icon-swall3"; icon_state = "swall3"; dir = 2},/area/awaymission/academy/classrooms) "bX" = (/obj/effect/decal/cleanable/ash,/turf/simulated/floor/engine,/area/awaymission/academy/classrooms) "bY" = (/obj/structure/target_stake,/turf/simulated/floor/engine,/area/awaymission/academy/classrooms) @@ -114,7 +114,7 @@ "cj" = (/obj/effect/decal/cleanable/blood/oil,/turf/simulated/floor/plating,/area/awaymission/academy/classrooms) "ck" = (/obj/machinery/door/airlock/plasma,/turf/simulated/floor/carpet,/area/awaymission/academy/headmaster) "cl" = (/turf/simulated/floor/plasteel{tag = "icon-vault (NORTHEAST)"; icon_state = "vault"; dir = 5},/area/awaymission/academy/headmaster) -"cm" = (/obj/structure/table,/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/awaymission/academy/classrooms) +"cm" = (/obj/structure/table,/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel,/area/awaymission/academy/classrooms) "cn" = (/obj/machinery/computer/area_atmos/area,/turf/simulated/floor/plasteel{tag = "icon-vault (NORTHEAST)"; icon_state = "vault"; dir = 5},/area/awaymission/academy/headmaster) "co" = (/obj/machinery/portable_atmospherics/scrubber/huge/stationary,/turf/simulated/floor/plating,/area/awaymission/academy/headmaster) "cp" = (/obj/structure/chair/stool,/turf/simulated/floor/plasteel{icon_state = "showroomfloor"},/area/awaymission/academy/headmaster) @@ -154,7 +154,7 @@ "cX" = (/obj/effect/decal/warning_stripes/southeast,/turf/simulated/floor/plating,/area/awaymission/academy/classrooms) "cY" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plasteel,/area/awaymission/academy/classrooms) "cZ" = (/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"},/turf/simulated/floor/plasteel,/area/awaymission/academy/classrooms) -"da" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/awaymission/academy/classrooms) +"da" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel,/area/awaymission/academy/classrooms) "db" = (/obj/machinery/light{dir = 8},/turf/simulated/floor/wood,/area/awaymission/academy/classrooms) "dc" = (/turf/simulated/floor/wood,/area/awaymission/academy/classrooms) "dd" = (/obj/machinery/light{icon_state = "tube1"; dir = 4},/turf/simulated/floor/wood,/area/awaymission/academy/classrooms) @@ -171,7 +171,7 @@ "do" = (/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"},/turf/simulated/floor/plasteel,/area/awaymission/academy/classrooms) "dp" = (/turf/simulated/floor/mech_bay_recharge_floor,/area/awaymission/academy/classrooms) "dq" = (/obj/machinery/mech_bay_recharge_port,/obj/structure/cable{icon_state = "0-2"; d2 = 2},/turf/simulated/floor/plating,/area/awaymission/academy/classrooms) -"dr" = (/obj/machinery/light{icon_state = "tube1"; dir = 4},/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/awaymission/academy/classrooms) +"dr" = (/obj/machinery/light{icon_state = "tube1"; dir = 4},/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel,/area/awaymission/academy/classrooms) "ds" = (/obj/structure/chair/wood/normal{dir = 1},/turf/simulated/floor/wood,/area/awaymission/academy/classrooms) "dt" = (/turf/simulated/floor/plasteel{icon_state = "green"; dir = 8},/area/awaymission/academy/classrooms) "du" = (/obj/structure/chair/stool,/turf/simulated/floor/plasteel,/area/awaymission/academy/classrooms) diff --git a/_maps/map_files/RandomZLevels/moonoutpost19.dmm b/_maps/map_files/RandomZLevels/moonoutpost19.dmm index 12e7ca4df90..870a6f075a8 100644 --- a/_maps/map_files/RandomZLevels/moonoutpost19.dmm +++ b/_maps/map_files/RandomZLevels/moonoutpost19.dmm @@ -41,7 +41,7 @@ "aO" = (/obj/machinery/gateway{dir = 8},/turf/simulated/floor/plasteel{dir = 8; icon_state = "vault"},/area/awaycontent/a4{has_gravity = 1; name = "Syndicate Outpost"}) "aP" = (/obj/machinery/light{icon_state = "tube1"; dir = 4},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/awaycontent/a4{has_gravity = 1; name = "Syndicate Outpost"}) "aQ" = (/obj/machinery/gateway{dir = 4},/turf/simulated/floor/plasteel{dir = 8; icon_state = "vault"},/area/awaycontent/a4{has_gravity = 1; name = "Syndicate Outpost"}) -"aR" = (/obj/item/ore/iron{pixel_x = 7; pixel_y = -6},/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}) +"aR" = (/obj/item/stack/ore/iron{pixel_x = 7; pixel_y = -6},/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}) "aS" = (/obj/structure/alien/weeds,/mob/living/simple_animal/hostile/alien/queen/large{desc = "A gigantic alien who is in charge of the hive and all of its loyal servants."; name = "alien queen"; pixel_x = -16; 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}) "aT" = (/turf/simulated/wall,/area/awaycontent/a4{has_gravity = 1; name = "Syndicate Outpost"}) "aU" = (/turf/simulated/floor/plasteel{dir = 8; icon_state = "darkredcorners"; tag = "icon-darkredcorners (WEST)"},/area/awaycontent/a4{has_gravity = 1; name = "Syndicate Outpost"}) @@ -175,11 +175,11 @@ "ds" = (/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 = "150"},/obj/item/stack/spacecash/c50,/turf/simulated/floor/wood,/area/awaycontent/a4{has_gravity = 1; name = "Syndicate Outpost"}) "dt" = (/obj/structure/bed,/obj/item/bedsheet/syndie,/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/wood,/area/awaycontent/a4{has_gravity = 1; name = "Syndicate Outpost"}) "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}) +"dv" = (/obj/item/stack/ore/iron,/obj/item/stack/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/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}) +"dz" = (/obj/item/stack/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/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"}) @@ -192,7 +192,7 @@ "dJ" = (/obj/item/pickaxe/drill,/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}) "dK" = (/turf/simulated/floor/plasteel/airless{icon_plating = "asteroidplating"; icon_state = "asteroidplating"; name = "plating"},/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}) "dL" = (/obj/machinery/light/small{dir = 1},/turf/simulated/floor/plasteel/airless{icon_plating = "asteroidplating"; icon_state = "asteroidplating"; name = "plating"},/area/awaycontent/a4{has_gravity = 1; name = "Syndicate Outpost"}) -"dM" = (/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}) +"dM" = (/obj/item/stack/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}) "dN" = (/obj/structure/alien/weeds{icon_state = "weeds1"},/obj/structure/bed/nest,/obj/item/tank/oxygen,/obj/item/clothing/suit/space/syndicate/orange,/obj/item/clothing/mask/gas,/obj/item/clothing/head/helmet/space/syndicate/orange,/obj/item/clothing/mask/facehugger{icon_state = "facehugger_impregnated"; item_state = "facehugger_impregnated"; stat = 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/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}) "dO" = (/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/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}) "dP" = (/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}) @@ -462,15 +462,15 @@ "iT" = (/obj/structure/chair{dir = 1},/obj/machinery/light/small{dir = 4},/turf/simulated/floor/plasteel{icon_state = "bar"},/area/awaycontent/a1{has_gravity = 1; name = "MO19 Arrivals"}) "iU" = (/obj/machinery/computer/security/telescreen/entertainment{pixel_x = 0; pixel_y = 0},/turf/simulated/wall/rust,/area/awaycontent/a1{has_gravity = 1; name = "MO19 Arrivals"}) "iV" = (/obj/machinery/vending/boozeomat{req_access_txt = "0"},/turf/simulated/floor/plasteel{tag = "icon-cafeteria (NORTHEAST)"; icon_state = "cafeteria"; dir = 5},/area/awaycontent/a1{has_gravity = 1; name = "MO19 Arrivals"}) -"iW" = (/obj/structure/table,/obj/machinery/microwave{pixel_x = -3; pixel_y = 6},/obj/effect/landmark/burnturf,/turf/simulated/floor/plasteel{burnt = 1; dir = 8; icon_state = "floorscorched2"; tag = "icon-floorscorched2 (WEST)"},/area/awaycontent/a1{has_gravity = 1; name = "MO19 Arrivals"}) -"iX" = (/obj/structure/table,/obj/machinery/microwave{pixel_x = -3; pixel_y = 6},/turf/simulated/floor/plasteel{burnt = 1; dir = 8; icon_state = "floorscorched2"; tag = "icon-floorscorched2 (WEST)"},/area/awaycontent/a1{has_gravity = 1; name = "MO19 Arrivals"}) +"iW" = (/obj/structure/table,/obj/machinery/microwave{pixel_x = -3; pixel_y = 6},/turf/simulated/floor/plating/airless,/area/awaycontent/a1{has_gravity = 1; name = "MO19 Arrivals"}) +"iX" = (/obj/structure/table,/obj/machinery/microwave{pixel_x = -3; pixel_y = 6},/obj/effect/landmark/burnturf,/turf/simulated/floor/plating/airless,/area/awaycontent/a1{has_gravity = 1; name = "MO19 Arrivals"}) "iY" = (/turf/simulated/floor/plasteel{tag = "icon-cafeteria (NORTHEAST)"; icon_state = "cafeteria"; dir = 5},/area/awaycontent/a1{has_gravity = 1; name = "MO19 Arrivals"}) "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/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"}) +"je" = (/obj/machinery/vending/snack,/obj/structure/sign/poster/official/ue_no{pixel_y = 32},/turf/simulated/floor/plating/airless,/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"}) "jh" = (/obj/machinery/vending/coffee,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/awaycontent/a1{has_gravity = 1; name = "MO19 Arrivals"}) @@ -486,7 +486,7 @@ "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/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"}) +"ju" = (/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/plating/airless,/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/table,/obj/item/book/manual/detective,/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel,/area/awaycontent/a1{has_gravity = 1; name = "MO19 Arrivals"}) @@ -646,7 +646,7 @@ "mv" = (/obj/machinery/light/small{dir = 4},/obj/structure/window/reinforced{dir = 1},/turf/simulated/shuttle/floor{icon_state = "floor2"},/area/awaycontent/a1{has_gravity = 1; name = "MO19 Arrivals"}) "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"}) +"my" = (/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,/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"}) @@ -665,7 +665,7 @@ "mO" = (/obj/machinery/door/airlock/external,/turf/simulated/floor/plating,/area/awaycontent/a1{has_gravity = 1; name = "MO19 Arrivals"}) "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"}) +"mR" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/camera{c_tag = "Dormitories"; dir = 4; network = list("MO19")},/turf/simulated/floor/plating/airless,/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"}) @@ -727,7 +727,7 @@ "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"}) -"ob" = (/obj/structure/chair/comfy/black{dir = 8},/turf/simulated/floor/plasteel/airless{icon_state = "floorscorched2"; name = "floor"},/area/awaycontent/a1{has_gravity = 1; name = "MO19 Arrivals"}) +"ob" = (/obj/structure/chair/comfy/black{dir = 8},/turf/simulated/floor/plating/airless,/area/awaycontent/a1{has_gravity = 1; name = "MO19 Arrivals"}) "oc" = (/obj/machinery/light/small{dir = 4},/obj/effect/decal/cleanable/generic,/turf/simulated/floor/plasteel/airless{icon_state = "neutralcorner"; name = "floor"},/area/awaycontent/a1{has_gravity = 1; name = "MO19 Arrivals"}) "od" = (/obj/structure/disposalpipe/segment,/turf/simulated/floor/plasteel/airless{icon_plating = "asteroidplating"; icon_state = "asteroidplating"; name = "plating"},/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}) "oe" = (/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}) @@ -776,7 +776,6 @@ "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"}) "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"}) "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"}) @@ -845,19 +844,19 @@ aaaaaaaaaaaaaaabababababababababababababababababababababababababeTeUeTfafPhChChC aaaaaaaaaaaaaaabababababababababababababababababababababababababeUhukbfOfPhChDhNkfhxhxhxhxeJhOicideJflflhGhPeadAaZaZaZaZaZaZaZhJhQhShRhThJhVhUhJhJaZaZaZhWaZaZaZaZdAabababababababababababababababababababababababaaaaaaaaaaaaaa aaaaaaaaaaaaaaabababababababababababababababababababababababababeUfeiLhMeVhChYhZiaibieipiteaeakieadZigiiihijdZdAaZaZaZaZaZaZdAhKhKhJikilhJinimiohKisisishKdAdAdAdAdAabababdAdAdAdAdAabababababababababababababababaaaaaaaaaaaaaa aaaaaaaaaaaaaaabababababababababababababababababababababababababeUfOeVfPeVhCkjirhDhCiviuiwdZiMifiNeadZdZeaeaeaaZaZaZaZhWaZaZdAhKixiyimimiziAimiBhKiDiCiEhKhKhKhJhJhKhJhKdAdAaZaZaZdAdAababababababababababababababaaaaaaaaaaaaaa -aaaaaaaaaaaaaaabababababababababababababababababababababababababeTkkeViHiFhDhCiIiJiKiOiPjcdZjdifjneadAdAaZaZaZaZohaZhKhKisishKhKhKhKiAimhKiQiQhJhKiSiRiTiUhKiViXiWiYiZhKdAaZaZaZaZaZdAababababababababababababababaaaaaaaaaaaaaa -aaaaaaaaaaaaaaabababababababababababababababababababababababababeTfOfPjadZeadZeaeaeadZeaeaeaeJkieJeadAaZaZaZhWaZjbaZhJjsjxjijejgjhhJjfhKhJhJhJhJjjjkjkjljmjqiYjoiYiYjphJaZaZaZaZaZaZdAdAabababababababababababababaaaaaaaaaaaaaa -aaaaaaaaaaaaaaababababababababababababababababababababdAdAdAdAdAeTknfPfPeajEjIjvjMjwjIjUjuhKjykCjzhJhKkdkdkdhJkdkekdhJjGjFjFjHjFjFkDjFjLjVkgjKjOjljljljNjmjTiYjQjRjojSisaZaZaZaZaZaZaZdAdAababababababababababababaaaaaaaaaaaaaa -aaaaaaaaaaaaaaababababababababababababababababababdAdAdAdAdAdAdAeUkcfrgikhjWjWklkulikWkAkFlRlJmomnlJmpmykGkIkPkQkHkGkRnAkAlililikUnUnNnNoklhlhoqopopopoporotoskqkrkskthKaZaZaZaZaZaZaZaZdAababababababababababababaaaaaaaaaaaaaa +aaaaaaaaaaaaaaabababababababababababababababababababababababababeTkkeViHiFhDhCiIiJiKiOiPjcdZjdifjneadAdAaZaZaZaZohaZhKhKisishKhKhKhKiAimhKiQiQhJhKiSiRiTiUhKiViWiXiYiZhKdAaZaZaZaZaZdAababababababababababababababaaaaaaaaaaaaaa +aaaaaaaaaaaaaaabababababababababababababababababababababababababeTfOfPjadZeadZeaeaeadZeaeaeaeJkieJeadAaZaZaZhWaZjbaZhJjsjxjioajgjhhJjfhKhJhJhJhJjjjkjkjljmjqiYjoiYiYjphJaZaZaZaZaZaZdAdAabababababababababababababaaaaaaaaaaaaaa +aaaaaaaaaaaaaaababababababababababababababababababababdAdAdAdAdAeTknfPfPeajEjIjvjMjwjIjUjehKjykCjzhJhKkdkdkdhJkdkekdhJjGjFjFjHjFjFkDjFjLjVkgjKjOjljljljNjmjTiYjQjRjojSisaZaZaZaZaZaZaZdAdAababababababababababababaaaaaaaaaaaaaa +aaaaaaaaaaaaaaababababababababababababababababababdAdAdAdAdAdAdAeUkcfrgikhjWjWklkulikWkAkFlRlJmomnlJmpjukGkIkPkQkHkGkRnAkAlililikUnUnNnNoklhlhoqopopopoporotoskqkrkskthKaZaZaZaZaZaZaZaZdAababababababababababababaaaaaaaaaaaaaa aaaaaaaaaaaaaaabababababababababababababababababdAdAdAdAdAaZaZaZeTeTeUeUkmkwkvkwkxkwkvkvkwkzkyoujFlvkBlGkEkTlHjFlGlIkJmhjHhJhKhJhJmzkKjFoxjFjHkojljlkLkMjmjTiYiYkpiYkNhKaZaZaZaZaZdAdAdAdAababababababababababababaaaaaaaaaaaaaa aaaaaaaaaaaaaaabababababababababababababababababdAdAdAaZaZaZaZaZaZaZaZhJhJisisishJisisishJhJkOoymShKhJkdlllmhJhJhJhJhKozkShJkVoAhKkXhKkYoBlakZjOlbjNjljljmjTiYiYiYlchKhKhJhJhKaZdAdAabababababababababababababababaaaaaaaaaaaaaa aaaaaaaaaaaaaaabababababababababababababababababdAdAaZaZaZaZaZaZaZaZaZaZaZaZaZaZldlelfaZaZhJlgnanrhKdAaZaZlkljhKnbnbhKoDlElplolqhKlnhKhKhJhKhKhKlrlsjllthKhKluiYiYiYoElxlwlyhKdAdAababababababababababababababababaaaaaaaaaaaaaa aaaaaaaaaaaaaaabababababababababababababababababdAdAaZaZaZaZldlelelzlelAlBlClAlBlDlKlFaZaZisnvnFnGhKdAaZaZaZaZhJlOlOhKoGmihKlMlNhJlPlOlQlPlnlOkXjljkjljloHlSlSlTlSlUhKlxlxlVhKababababababababababababababababababaaaaaaaaaaaaaa aaaaaaaaaaaaaaabababababababababababababababababdAdAaZaZaZldlWlXlYlZmambmcmdmemdmflKmgaZaZisnvnHisisaZaZaZaZaZhJnBlOoJoGmihJhKhKhJlOmkhJhJhJhKhKmjmjjkmlhKlSlTlSlSmmhKoLoKoMhJababababababababababababababababababaaaaaaaaaaaaaa aaaaaaaaaaaaaaabababababababababababababababababdAdAaZaZaZlBmqmcmrlDmsmdmtmumtmdmcmvlDismxisnvnKisaZaZaZaZaZaZhKoOoQoPoRmQhJmAmBhKlOmMhKabababhKmCmCmDhJhKhKmEmFmGhJhJhKhKhJhJababababababababababababababababababaaaaaaaaaaaaaa -aaaaaaaaaaaaaaabababababababababababababababababdAdAaZaZaZlBmHmdmsmImsmsmJmKmJmsmsmsmLmNlPmOjHnXhJmPaZaZaZaZaZhKoTlOhJoUmRmUmTmVhKlOnbhJabababhKhKhJhJhKdAhKisisishJaZaZaZaZdAababababababababababababababababababaaaaaaaaaaaaaa +aaaaaaaaaaaaaaabababababababababababababababababdAdAaZaZaZlBmHmdmsmImsmsmJmKmJmsmsmsmLmNlPmOjHnXhJmPaZaZaZaZaZhKoTlOhJoUmymUmTmVhKlOnbhJabababhKhKhJhJhKdAhKisisishJaZaZaZaZdAababababababababababababababababababaaaaaaaaaaaaaa aaaaaaaaaaaaaaabababababababababababababababababdAdAaZaZaZlBmWmcmXmYmsmdmtmumtmdmcmZmYisisisnvooisaZaZaZaZaZaZhJoWoXhJoYlLhKncoZhKlQnlhJhJhJdKaZaZdAdAdAdAaZaZaZaZljaZaZaZdAdAababababababababababababababababababaaaaaaaaaaaaaa -aaaaaaaaaaaaaaabababababababababababababababababdAdAaZaZaZnenfnglYlZmanhmcmdnimdmflKlFaZaZisnvovisaZaZaZaZaZaZhJpaoXhKpbmwhKhKhKhJnnnmmOnpmOdKaZaZdAdAaZaZaZaZaZaZaZaZaZaZdAabababababababababababababababababababaaaaaaaaaaaaaa +aaaaaaaaaaaaaaabababababababababababababababababdAdAaZaZaZnenfnglYlZmanhmcmdnimdmflKlFaZaZisnvovisaZaZaZaZaZaZhJpaoXhKmRmwhKhKhKhJnnnmmOnpmOdKaZaZdAdAaZaZaZaZaZaZaZaZaZaZdAabababababababababababababababababababaaaaaaaaaaaaaa aaaaaaaaaaaaaaabababababababababababababababababdAdAaZaZaZaZnelelenolelAlBlClAlBmYlKmgaZaZisowovisaZaZaZaZdAdAhJhJhJhKndmikXlPlnlnnunthJlnhJnxaZdAdAdAaZaZaZaZaZaZaZaZaZdAdAabababababababababababababababababababaaaaaaaaaaaaaa aaaaaaaaaaaaaaabababababababababababababababababdAdAdAaZaZaZaZaZaZaZaZaZaZaZaZaZnelenwaZaZhJmOmOhJhJdAdAdAdAdAaZkdnznyoCnEhJhKhJhJhKpehJhJhJaZdAdAabdAdAdAaZaZaZaZaZdAdAdAababababababababababababababababababababaaaaaaaaaaaaaa aaaaaaaaaaaaaaabababababababababababababababababdAdAdAdAdAaZaZaZaZaZaZaZaZaZaZaZaZaZaZaZaZhJnBlPnChJdAdAaZaZaZnDnjnkoFoImQhKnInJhKlPlOnqhKaZaZdAdAabababdAdAaZaZaZdAdAababababababababababababababababababababababaaaaaaaaaaaaaa diff --git a/_maps/map_files/RandomZLevels/stationCollision.dmm b/_maps/map_files/RandomZLevels/stationCollision.dmm index f50207e42c3..72a1a9ac6af 100644 --- a/_maps/map_files/RandomZLevels/stationCollision.dmm +++ b/_maps/map_files/RandomZLevels/stationCollision.dmm @@ -25,13 +25,13 @@ "ay" = (/obj/structure/window/reinforced/tinted,/obj/machinery/portable_atmospherics/scrubber,/turf/simulated/floor/plasteel/airless,/area/awaymission/northblock) "az" = (/obj/structure/window/reinforced/tinted,/obj/machinery/portable_atmospherics/pump,/turf/simulated/floor/plasteel/airless,/area/awaymission/northblock) "aA" = (/obj/structure/window/reinforced/tinted,/obj/structure/window/reinforced/tinted{dir = 4; icon_state = "twindow"; tag = ""},/obj/structure/closet/secure_closet/engineering_electrical,/turf/simulated/floor/plasteel/airless,/area/awaymission/northblock) -"aB" = (/turf/simulated/floor/plasteel/airless{icon_state = "floorscorched2"},/area/awaymission/northblock) +"aB" = (/obj/effect/decal/warning_stripes/yellow/hollow,/turf/simulated/floor/plasteel,/area/awaymission/northblock) "aC" = (/turf/simulated/shuttle/wall{icon_state = "wall3"},/area/awaymission/syndishuttle) "aD" = (/turf/space,/turf/simulated/shuttle/wall{dir = 1; icon_state = "diagonalWall3"},/area/awaymission/syndishuttle) "aE" = (/obj/machinery/door/airlock/engineering,/turf/simulated/floor/plating/airless,/area/awaymission/northblock) "aF" = (/obj/effect/landmark/burnturf,/turf/simulated/floor/plating/airless,/area/awaymission/northblock) "aG" = (/obj/effect/decal/remains/robot,/obj/effect/landmark/damageturf,/turf/simulated/floor/plasteel/airless,/area/awaymission/northblock) -"aH" = (/obj/effect/landmark/burnturf,/turf/simulated/floor/plasteel/airless{icon_state = "floorscorched2"},/area/awaymission/northblock) +"aH" = (/obj/machinery/door/airlock/engineering,/obj/effect/landmark/damageturf,/turf/simulated/floor/plating/airless,/area/awaymission/northblock) "aI" = (/obj/structure/shuttle/engine/propulsion{tag = "icon-burst_l (EAST)"; icon_state = "burst_l"; dir = 4},/turf/space,/area/awaymission/syndishuttle) "aJ" = (/turf/simulated/floor/plating/airless,/area/awaymission/syndishuttle) "aK" = (/turf/space,/area/awaymission/syndishuttle) @@ -46,7 +46,7 @@ "aT" = (/obj/structure/closet/secure_closet/engineering_welding,/obj/machinery/light,/turf/simulated/floor/plasteel,/area/awaymission/northblock) "aU" = (/obj/machinery/mech_bay_recharge_port,/turf/simulated/floor/plasteel,/area/awaymission/northblock) "aV" = (/obj/structure/chair/office/dark{dir = 4},/turf/simulated/floor/plasteel,/area/awaymission/northblock) -"aW" = (/turf/simulated/floor/plasteel{icon_state = "bot"; dir = 1},/area/awaymission/northblock) +"aW" = (/obj/structure/girder/reinforced,/obj/effect/landmark/damageturf,/turf/simulated/floor/plating/airless,/area/awaymission/research) "aX" = (/obj/machinery/portable_atmospherics/canister/toxins{destroyed = 1},/turf/simulated/shuttle/plating,/area/awaymission/syndishuttle) "aY" = (/turf/simulated/shuttle/plating,/turf/simulated/shuttle/wall{icon_state = "diagonalWall3"},/area/awaymission/syndishuttle) "aZ" = (/turf/simulated/shuttle/wall{icon_state = "wall3"},/area/space) @@ -71,7 +71,7 @@ "bs" = (/obj/structure/lattice,/turf/space,/area/awaymission/syndishuttle) "bt" = (/obj/machinery/door/airlock/centcom,/turf/simulated/shuttle/plating,/area/awaymission/syndishuttle) "bu" = (/turf/simulated/floor/plasteel/airless{tag = "icon-blue (SOUTHEAST)"; icon_state = "blue"; dir = 6},/area/awaymission/northblock) -"bv" = (/obj/machinery/door/airlock/engineering,/obj/effect/landmark/damageturf,/turf/simulated/floor/plasteel/airless{icon_state = "floorscorched2"},/area/awaymission/northblock) +"bv" = (/obj/effect/decal/warning_stripes/northwest,/mob/living/simple_animal/hostile/alien/sentinel,/turf/simulated/floor/plasteel,/area/awaymission/research) "bw" = (/obj/effect/landmark/damageturf,/turf/simulated/floor/plating/airless,/area/awaymission/research) "bx" = (/turf/simulated/wall/r_wall,/area/awaymission/research) "by" = (/obj/machinery/portable_atmospherics/canister/toxins,/turf/simulated/shuttle/plating,/area/awaymission/syndishuttle) @@ -81,16 +81,16 @@ "bC" = (/obj/structure/window/reinforced{dir = 1},/turf/simulated/floor/plasteel/airless{icon_state = "blue"},/area/awaymission/northblock) "bD" = (/turf/simulated/floor/plasteel/airless{tag = "icon-blue (NORTH)"; icon_state = "blue"; dir = 1},/area/awaymission/northblock) "bE" = (/turf/space,/turf/simulated/shuttle/wall{dir = 4; icon_state = "diagonalWall3"},/area/awaymission/syndishuttle) -"bF" = (/obj/structure/girder/reinforced,/obj/effect/landmark/damageturf,/turf/simulated/floor/plasteel/airless{icon_state = "floorscorched2"},/area/awaymission/research) +"bF" = (/obj/effect/decal/warning_stripes/north,/turf/simulated/floor/plasteel,/area/awaymission/research) "bG" = (/obj/machinery/light{dir = 4},/obj/structure/window/reinforced,/obj/structure/sign/securearea{pixel_x = 32},/obj/item/clothing/under/rank/security,/obj/effect/decal/remains/human,/obj/item/gun/energy/laser/practice/sc_laser,/obj/item/clothing/suit/armor/vest,/obj/item/clothing/head/helmet,/turf/simulated/floor/plasteel{icon_state = "showroomfloor"},/area/awaymission/research) -"bH" = (/turf/simulated/floor/plasteel{dir = 1; icon_state = "warning"},/area/awaymission/research) +"bH" = (/obj/item/shard,/obj/effect/decal/warning_stripes/northeast,/turf/simulated/floor/plasteel,/area/awaymission/research) "bI" = (/obj/structure/sign/securearea{pixel_x = 32},/obj/item/clothing/under/rank/security,/obj/effect/decal/remains/human,/obj/item/gun/energy/laser/practice/sc_laser,/obj/item/clothing/suit/armor/vest,/obj/item/clothing/head/helmet,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/awaymission/research) "bJ" = (/turf/simulated/floor/plasteel{icon_state = "showroomfloor"},/area/awaymission/research) "bK" = (/obj/machinery/light{dir = 1},/turf/simulated/floor/plasteel{icon_state = "showroomfloor"},/area/awaymission/research) -"bL" = (/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plasteel{dir = 9; icon_state = "warning"},/area/awaymission/research) -"bM" = (/obj/machinery/door/window/eastleft,/turf/simulated/floor/plasteel{dir = 5; icon_state = "warning"},/area/awaymission/research) -"bN" = (/obj/machinery/door/window/westright,/turf/simulated/floor/plasteel{dir = 9; icon_state = "warning"},/area/awaymission/research) -"bO" = (/obj/structure/window/reinforced{dir = 4},/turf/simulated/floor/plasteel{dir = 5; icon_state = "warning"},/area/awaymission/research) +"bL" = (/obj/structure/window/reinforced{dir = 8},/obj/effect/decal/warning_stripes/northwest,/turf/simulated/floor/plasteel,/area/awaymission/research) +"bM" = (/obj/machinery/door/window/eastleft,/obj/effect/decal/warning_stripes/northeast,/turf/simulated/floor/plasteel,/area/awaymission/research) +"bN" = (/obj/machinery/door/window/westright,/obj/effect/decal/warning_stripes/northwest,/turf/simulated/floor/plasteel,/area/awaymission/research) +"bO" = (/obj/structure/window/reinforced{dir = 4},/obj/effect/decal/warning_stripes/northeast,/turf/simulated/floor/plasteel,/area/awaymission/research) "bP" = (/obj/structure/filingcabinet/filingcabinet,/turf/simulated/floor/plasteel{icon_state = "showroomfloor"},/area/awaymission/research) "bQ" = (/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/machinery/door/window/eastleft,/obj/machinery/door/window/westright,/turf/simulated/floor/plasteel{icon_state = "showroomfloor"},/area/awaymission/research) "bR" = (/mob/living/simple_animal/lizard,/turf/simulated/floor/grass,/area/awaymission/research) @@ -100,26 +100,26 @@ "bV" = (/obj/structure/shuttle/engine/heater{tag = "icon-heater (NORTH)"; icon_state = "heater"; dir = 1},/turf/simulated/shuttle/plating,/area/awaymission/syndishuttle) "bW" = (/turf/simulated/shuttle/plating,/turf/simulated/shuttle/wall{dir = 8; icon_state = "diagonalWall3"},/area/awaymission/syndishuttle) "bX" = (/turf/simulated/floor/plasteel/airless{tag = "icon-blue (NORTHEAST)"; icon_state = "blue"; dir = 5},/area/awaymission/northblock) -"bY" = (/obj/effect/landmark/damageturf,/turf/simulated/floor/plasteel/airless{icon_state = "floorscorched2"},/area/awaymission/research) -"bZ" = (/turf/simulated/floor/plasteel{dir = 8; icon_state = "warning"},/area/awaymission/research) +"bY" = (/obj/effect/decal/warning_stripes/west,/turf/simulated/floor/plasteel,/area/awaymission/research) +"bZ" = (/obj/structure/window/reinforced{dir = 4},/obj/effect/decal/warning_stripes/east,/mob/living/simple_animal/hostile/alien,/turf/simulated/floor/plasteel,/area/awaymission/research) "ca" = (/turf/simulated/floor/plasteel,/area/awaymission/research) -"cb" = (/obj/structure/window/reinforced{dir = 4},/turf/simulated/floor/plasteel{dir = 4; icon_state = "warning"},/area/awaymission/research) +"cb" = (/obj/structure/window/reinforced{dir = 8},/obj/effect/decal/warning_stripes/west,/turf/simulated/floor/plasteel,/area/awaymission/research) "cc" = (/obj/structure/table/holotable,/obj/item/gun/energy/floragun{pixel_x = 2; pixel_y = 3},/obj/machinery/light,/turf/simulated/floor/plasteel{icon_state = "showroomfloor"},/area/awaymission/research) -"cd" = (/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plasteel{dir = 8; icon_state = "warning"},/area/awaymission/research) +"cd" = (/obj/structure/window/reinforced{dir = 4},/obj/effect/decal/warning_stripes/east,/turf/simulated/floor/plasteel,/area/awaymission/research) "ce" = (/mob/living/simple_animal/hostile/creature{name = "Experiment 35b"},/turf/simulated/floor/plasteel,/area/awaymission/research) "cf" = (/obj/machinery/dna_scannernew,/turf/simulated/floor/plasteel{icon_state = "showroomfloor"},/area/awaymission/research) "cg" = (/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/grass,/area/awaymission/research) "ch" = (/obj/machinery/power/emitter{anchored = 1; state = 2},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/awaymission/research) "ci" = (/obj/machinery/atmospherics/pipe/simple{dir = 4; icon_state = "intact"; level = 2},/obj/effect/landmark/damageturf,/turf/simulated/floor/plating/airless,/area/awaymission/northblock) -"cj" = (/obj/machinery/door/window/southleft,/turf/simulated/floor/plasteel{dir = 10; icon_state = "warning"},/area/awaymission/research) +"cj" = (/obj/machinery/door/window/southleft,/obj/effect/decal/warning_stripes/southwest,/turf/simulated/floor/plasteel,/area/awaymission/research) "ck" = (/obj/item/clothing/suit/space/syndicate,/obj/item/clothing/under/syndicate,/obj/item/clothing/head/helmet/space/syndicate,/obj/effect/decal/remains/human{desc = "This guy seemed to have died in terrible way! Half his remains are dust."; icon_state = "remains"; name = "Syndicate agent remains"},/obj/effect/decal/cleanable/blood/splatter,/obj/item/clothing/shoes/brown,/obj/item/toy/sword,/turf/simulated/floor/plasteel{icon_state = "grimy"},/area/awaymission/northblock) -"cl" = (/obj/item/shard{icon_state = "medium"},/obj/item/shard{icon_state = "small"},/obj/structure/alien/weeds/node,/turf/simulated/floor/plasteel{dir = 6; icon_state = "warning"},/area/awaymission/research) +"cl" = (/obj/item/shard{icon_state = "small"},/obj/effect/decal/warning_stripes/south,/turf/simulated/floor/plasteel,/area/awaymission/research) "cm" = (/obj/structure/table,/obj/item/clipboard,/obj/item/paper,/obj/item/paper,/turf/simulated/floor/plasteel{icon_state = "showroomfloor"},/area/awaymission/research) -"cn" = (/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced,/mob/living/simple_animal/hostile/hivebot,/turf/simulated/floor/plasteel{dir = 10; icon_state = "warning"},/area/awaymission/research) -"co" = (/obj/structure/window/reinforced,/turf/simulated/floor/plasteel{dir = 2; icon_state = "warning"},/area/awaymission/research) -"cp" = (/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced,/turf/simulated/floor/plasteel{dir = 6; icon_state = "warning"},/area/awaymission/research) +"cn" = (/obj/item/shard{icon_state = "medium"},/obj/item/shard{icon_state = "small"},/obj/structure/alien/weeds/node,/obj/effect/decal/warning_stripes/southeast,/turf/simulated/floor/plasteel,/area/awaymission/research) +"co" = (/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced,/obj/effect/decal/warning_stripes/southwest,/mob/living/simple_animal/hostile/hivebot,/turf/simulated/floor/plasteel,/area/awaymission/research) +"cp" = (/obj/structure/window/reinforced,/obj/effect/decal/warning_stripes/south,/turf/simulated/floor/plasteel,/area/awaymission/research) "cq" = (/obj/machinery/door/window/southright,/turf/simulated/floor/plasteel{icon_state = "showroomfloor"},/area/awaymission/research) -"cr" = (/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced,/turf/simulated/floor/plasteel{dir = 10; icon_state = "warning"},/area/awaymission/research) +"cr" = (/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced,/obj/effect/decal/warning_stripes/southeast,/turf/simulated/floor/plasteel,/area/awaymission/research) "cs" = (/obj/structure/chair/office/light{dir = 4},/turf/simulated/floor/plasteel{icon_state = "showroomfloor"},/area/awaymission/research) "ct" = (/obj/machinery/computer/scan_consolenew,/turf/simulated/floor/plasteel{icon_state = "showroomfloor"},/area/awaymission/research) "cu" = (/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/grass,/area/awaymission/research) @@ -132,7 +132,7 @@ "cB" = (/obj/structure/window/reinforced,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/awaymission/research) "cC" = (/obj/structure/shuttle/engine/propulsion{tag = "icon-propulsion_l (EAST)"; icon_state = "propulsion_l"; dir = 4},/turf/space,/area/awaymission/syndishuttle) "cD" = (/turf/simulated/floor/plating/airless,/turf/simulated/shuttle/wall{dir = 8; icon_state = "diagonalWall3"},/area/awaymission/syndishuttle) -"cE" = (/obj/machinery/portable_atmospherics/canister/toxins{destroyed = 1},/obj/effect/landmark/damageturf,/turf/simulated/floor/plasteel/airless{icon_state = "floorscorched2"},/area/awaymission/northblock) +"cE" = (/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced,/obj/effect/decal/warning_stripes/southwest,/turf/simulated/floor/plasteel,/area/awaymission/research) "cF" = (/obj/machinery/door/window/eastleft,/turf/simulated/floor/plasteel{icon_state = "showroomfloor"},/area/awaymission/research) "cG" = (/obj/machinery/power/emitter{anchored = 1; dir = 1; icon_state = "emitter"; state = 2},/turf/simulated/floor/plasteel{icon_state = "showroomfloor"},/area/awaymission/research) "cH" = (/obj/structure/bed,/obj/item/bedsheet/captain,/obj/item/clothing/under/rank/captain,/obj/effect/decal/remains/human,/obj/effect/decal/cleanable/blood/splatter,/obj/item/gun/energy/laser/practice/sc_laser,/turf/simulated/floor/plasteel{icon_state = "grimy"},/area/awaymission/northblock) @@ -145,7 +145,7 @@ "cO" = (/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/awaymission/research) "cP" = (/obj/machinery/light{icon_state = "tube1"; dir = 4},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/awaymission/research) "cQ" = (/obj/structure/lattice,/obj/machinery/atmospherics/pipe/simple,/turf/space,/area/awaymission/northblock) -"cR" = (/obj/machinery/atmospherics/pipe/simple{dir = 9; icon_state = "intact"; level = 2},/obj/effect/landmark/damageturf,/turf/simulated/floor/plasteel/airless{icon_state = "floorscorched2"},/area/awaymission/northblock) +"cR" = (/obj/machinery/portable_atmospherics/canister/toxins{destroyed = 1},/obj/effect/landmark/damageturf,/turf/simulated/floor/plating/airless,/area/awaymission/northblock) "cS" = (/obj/structure/closet/firecloset,/turf/simulated/floor/plasteel{icon_state = "showroomfloor"},/area/awaymission/research) "cT" = (/obj/structure/alien/weeds/node,/turf/simulated/floor/plasteel{icon_state = "showroomfloor"},/area/awaymission/research) "cU" = (/mob/living/carbon/alien/humanoid/hunter{fireloss = 200; stat = 2},/turf/simulated/floor/plasteel{icon_state = "showroomfloor"},/area/awaymission/research) @@ -156,8 +156,8 @@ "cZ" = (/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/awaymission/research) "da" = (/obj/machinery/door/airlock/atmos{name = "Airlock"},/turf/simulated/floor/plasteel,/area/awaymission/northblock) "db" = (/obj/machinery/shower{tag = "icon-shower (EAST)"; icon_state = "shower"; dir = 4},/obj/structure/window/reinforced/tinted,/turf/simulated/floor/plasteel,/area/awaymission/research) -"dc" = (/obj/machinery/light/small{dir = 1},/turf/simulated/floor/plasteel{icon_state = "delivery"},/area/awaymission/research) -"dd" = (/obj/structure/closet/l3closet/scientist,/turf/simulated/floor/plasteel{icon_state = "delivery"},/area/awaymission/research) +"dc" = (/obj/machinery/atmospherics/pipe/simple{dir = 9; icon_state = "intact"; level = 2},/obj/effect/landmark/damageturf,/turf/simulated/floor/plating/airless,/area/awaymission/northblock) +"dd" = (/obj/machinery/light/small{dir = 1},/obj/effect/decal/warning_stripes/yellow,/turf/simulated/floor/plasteel,/area/awaymission/research) "de" = (/obj/machinery/light{icon_state = "tube1"; dir = 8},/obj/structure/window/reinforced{dir = 1},/turf/simulated/floor/plasteel{icon_state = "showroomfloor"},/area/awaymission/research) "df" = (/obj/machinery/door/window/northleft{name = "Windoor"},/turf/simulated/floor/plasteel{icon_state = "showroomfloor"},/area/awaymission/research) "dg" = (/obj/structure/window/reinforced{dir = 1},/turf/simulated/floor/plasteel{icon_state = "showroomfloor"},/area/awaymission/research) @@ -170,9 +170,9 @@ "dn" = (/obj/machinery/power/emitter{anchored = 1; dir = 8; state = 2},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/awaymission/research) "do" = (/obj/machinery/atmospherics/pipe/simple,/obj/effect/landmark/damageturf,/turf/simulated/floor/plating/airless,/area/awaymission/northblock) "dp" = (/obj/structure/closet/firecloset,/turf/simulated/floor/plasteel,/area/awaymission/northblock) -"dq" = (/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"; tag = ""},/obj/effect/landmark/burnturf,/turf/simulated/floor/plasteel/airless{icon_state = "floorscorched2"},/area/awaymission/northblock) +"dq" = (/obj/structure/closet/l3closet/scientist,/obj/effect/decal/warning_stripes/yellow,/turf/simulated/floor/plasteel,/area/awaymission/research) "dr" = (/obj/machinery/door/airlock/highsecurity{name = "Security Airlock"},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/turf/simulated/floor/plasteel,/area/awaymission/research) -"ds" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/turf/simulated/floor/plasteel{icon_state = "delivery"},/area/awaymission/research) +"ds" = (/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"; tag = ""},/obj/effect/landmark/burnturf,/turf/simulated/floor/plating/airless,/area/awaymission/northblock) "dt" = (/obj/machinery/door/window/westright{name = "Windoor"},/obj/machinery/door/window/eastright{name = "Windoor"},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/turf/simulated/floor/plasteel{icon_state = "showroomfloor"},/area/awaymission/research) "du" = (/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"; tag = ""},/turf/simulated/floor/plasteel{icon_state = "showroomfloor"},/area/awaymission/research) "dv" = (/obj/machinery/door/airlock/hatch{name = "High-Security Airlock"},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/awaymission/research) @@ -180,9 +180,9 @@ "dx" = (/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"; tag = ""},/turf/simulated/floor/plasteel/airless,/area/awaymission/northblock) "dy" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/turf/simulated/floor/plasteel/airless,/area/awaymission/northblock) "dz" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/turf/simulated/floor/plasteel/airless{tag = "icon-blue (EAST)"; icon_state = "blue"; dir = 4},/area/awaymission/northblock) -"dA" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/obj/effect/landmark/damageturf,/turf/simulated/floor/plasteel/airless{icon_state = "floorscorched2"},/area/awaymission/northblock) +"dA" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/obj/effect/decal/warning_stripes/yellow,/turf/simulated/floor/plasteel,/area/awaymission/research) "dB" = (/obj/machinery/shower{dir = 4; icon_state = "shower"; pixel_y = -10; tag = "icon-shower (EAST)"},/obj/structure/window/reinforced/tinted{dir = 1},/turf/simulated/floor/plasteel,/area/awaymission/research) -"dC" = (/turf/simulated/floor/plasteel{icon_state = "delivery"},/area/awaymission/research) +"dC" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/obj/effect/landmark/damageturf,/turf/simulated/floor/plating/airless,/area/awaymission/northblock) "dD" = (/obj/structure/window/reinforced,/obj/structure/cable,/obj/machinery/power/apc/noalarm{cell_type = 7500; dir = 8; name = "Research APC"; pixel_x = -28},/turf/simulated/floor/plasteel{icon_state = "showroomfloor"},/area/awaymission/research) "dE" = (/obj/machinery/door/window/southright{name = "Windoor"},/obj/effect/decal/remains/human,/turf/simulated/floor/plasteel{icon_state = "showroomfloor"},/area/awaymission/research) "dF" = (/obj/structure/window/reinforced,/turf/simulated/floor/plasteel{icon_state = "showroomfloor"},/area/awaymission/research) @@ -200,7 +200,7 @@ "dR" = (/obj/structure/sign/goldenplaque{pixel_y = 31},/obj/effect/landmark/damageturf,/turf/simulated/floor/plasteel/airless,/area/awaymission/northblock) "dS" = (/obj/machinery/light/small{dir = 1},/obj/effect/landmark/burnturf,/turf/simulated/floor/plasteel/airless,/area/awaymission/northblock) "dT" = (/obj/structure/sign/atmosplaque{pixel_y = 31},/obj/effect/landmark/damageturf,/turf/simulated/floor/plasteel/airless,/area/awaymission/northblock) -"dU" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/obj/effect/landmark/burnturf,/turf/simulated/floor/plasteel/airless{icon_state = "floorscorched2"},/area/awaymission/northblock) +"dU" = (/obj/effect/decal/warning_stripes/yellow,/turf/simulated/floor/plasteel,/area/awaymission/research) "dV" = (/obj/structure/window/reinforced{dir = 4},/turf/simulated/floor/plasteel{icon_state = "showroomfloor"},/area/awaymission/research) "dW" = (/obj/structure/table,/obj/item/stack/cable_coil{amount = 5},/obj/item/screwdriver,/turf/simulated/floor/plasteel{icon_state = "showroomfloor"},/area/awaymission/research) "dX" = (/obj/structure/computerframe{anchored = 1},/turf/simulated/floor/plasteel{icon_state = "showroomfloor"},/area/awaymission/research) @@ -215,7 +215,7 @@ "eg" = (/obj/structure/computerframe{anchored = 1},/turf/simulated/floor/plasteel/airless{dir = 1; icon_state = "bluecorner"},/area/awaymission/northblock) "eh" = (/obj/machinery/sleeper,/turf/simulated/shuttle/floor{icon_state = "floor4"; nitrogen = 0.01; oxygen = 0.01; temperature = 2.7},/area/awaymission/syndishuttle) "ei" = (/obj/machinery/vending/snack,/turf/simulated/shuttle/floor{icon_state = "floor4"; nitrogen = 0.01; oxygen = 0.01; temperature = 2.7},/area/awaymission/syndishuttle) -"ej" = (/obj/machinery/light{icon_state = "tube1"; dir = 8},/obj/effect/landmark/damageturf,/turf/simulated/floor/plasteel/airless{icon_state = "floorscorched2"},/area/awaymission/northblock) +"ej" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/obj/effect/landmark/burnturf,/turf/simulated/floor/plating/airless,/area/awaymission/northblock) "ek" = (/obj/structure/window/reinforced,/obj/machinery/door/window/brigdoor/eastleft,/turf/simulated/floor/plasteel{icon_state = "showroomfloor"},/area/awaymission/research) "el" = (/obj/machinery/atmospherics/unary/cold_sink/freezer{current_temperature = 80},/turf/simulated/floor/plasteel{icon_state = "showroomfloor"},/area/awaymission/research) "em" = (/obj/machinery/atmospherics/unary/vent_pump,/turf/simulated/floor/plasteel{icon_state = "showroomfloor"},/area/awaymission/research) @@ -230,15 +230,15 @@ "ev" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/obj/effect/landmark/burnturf,/turf/simulated/floor/plasteel/airless,/area/awaymission/northblock) "ew" = (/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"; tag = ""},/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"; tag = ""},/obj/effect/landmark/burnturf,/turf/simulated/floor/plating/airless,/area/awaymission/northblock) "ex" = (/obj/machinery/vending/coffee,/turf/simulated/shuttle/floor{icon_state = "floor4"; nitrogen = 0.01; oxygen = 0.01; temperature = 2.7},/area/awaymission/syndishuttle) -"ey" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/turf/simulated/floor/plasteel/airless{icon_state = "floorscorched2"},/area/awaymission/northblock) +"ey" = (/obj/machinery/light{icon_state = "tube1"; dir = 8},/obj/effect/landmark/damageturf,/turf/simulated/floor/plating/airless,/area/awaymission/northblock) "ez" = (/obj/structure/window/reinforced{dir = 8},/obj/effect/landmark/burnturf,/turf/simulated/floor/plasteel/airless,/area/awaymission/northblock) "eA" = (/obj/structure/AIcore,/turf/simulated/floor/greengrid,/area/awaymission/research) "eB" = (/obj/machinery/hologram/holopad,/turf/simulated/floor/greengrid,/area/awaymission/research) "eC" = (/turf/simulated/floor/greengrid,/area/awaymission/research) "eD" = (/obj/structure/window/reinforced{dir = 4},/turf/simulated/floor/greengrid,/area/awaymission/research) -"eE" = (/obj/machinery/atmospherics/pipe/manifold{dir = 8; icon_state = "manifold"; level = 2},/turf/simulated/floor/plasteel{icon_state = "showroomfloor"},/area/awaymission/research) -"eF" = (/obj/machinery/atmospherics/pipe/simple{dir = 4; icon_state = "intact"; level = 2},/turf/simulated/floor/plasteel{icon_state = "showroomfloor"},/area/awaymission/research) -"eG" = (/obj/machinery/atmospherics/pipe/simple{dir = 9; icon_state = "intact"; level = 2},/obj/machinery/light/small{dir = 4},/turf/simulated/floor/plasteel{icon_state = "showroomfloor"},/area/awaymission/research) +"eE" = (/obj/machinery/atmospherics/pipe/manifold/visible{dir = 8},/turf/simulated/floor/plasteel{icon_state = "showroomfloor"},/area/awaymission/research) +"eF" = (/obj/machinery/atmospherics/pipe/simple/visible{dir = 4},/turf/simulated/floor/plasteel{icon_state = "showroomfloor"},/area/awaymission/research) +"eG" = (/obj/machinery/light/small{dir = 4},/obj/machinery/atmospherics/pipe/simple/visible{dir = 9},/turf/simulated/floor/plasteel{icon_state = "showroomfloor"},/area/awaymission/research) "eH" = (/obj/structure/shuttle/engine/heater{tag = "icon-heater (WEST)"; icon_state = "heater"; dir = 8},/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/turf/simulated/floor/plating/airless,/area/awaymission/research) "eI" = (/obj/structure/window/reinforced{dir = 8},/obj/structure/grille,/obj/item/shard{icon_state = "small"},/turf/simulated/floor/plating,/area/awaymission/northblock) "eJ" = (/obj/structure/closet/syndicate,/turf/simulated/shuttle/floor{icon_state = "floor4"; nitrogen = 0.01; oxygen = 0.01; temperature = 2.7},/area/awaymission/syndishuttle) @@ -259,7 +259,7 @@ "eY" = (/obj/effect/landmark/burnturf,/turf/simulated/floor/plasteel/airless,/area/awaymission/midblock) "eZ" = (/turf/simulated/floor/plasteel,/area/awaymission/northblock) "fa" = (/obj/effect/landmark/damageturf,/turf/simulated/floor/plasteel/airless,/area/awaymission/midblock) -"fb" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/turf/simulated/floor/plasteel/airless{icon_state = "floorscorched2"},/area/awaymission/northblock) +"fb" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/turf/simulated/floor/plating/airless,/area/awaymission/northblock) "fc" = (/obj/structure/table,/obj/item/stock_parts/capacitor,/obj/item/stock_parts/capacitor{pixel_x = -3},/obj/item/stock_parts/scanning_module{pixel_x = 3; pixel_y = 3},/obj/item/stock_parts/scanning_module{pixel_y = -3},/turf/simulated/floor/plasteel{icon_state = "showroomfloor"},/area/awaymission/research) "fd" = (/obj/structure/chair{dir = 1},/turf/simulated/floor/plasteel{icon_state = "showroomfloor"},/area/awaymission/research) "fe" = (/obj/structure/table,/obj/item/stock_parts/manipulator,/obj/item/stock_parts/manipulator{pixel_x = -3; pixel_y = 3},/obj/item/stock_parts/micro_laser{pixel_x = -3; pixel_y = -3},/obj/item/stock_parts/micro_laser{pixel_x = 3; pixel_y = 3},/turf/simulated/floor/plasteel{icon_state = "showroomfloor"},/area/awaymission/research) @@ -275,7 +275,7 @@ "fo" = (/obj/structure/closet/secure_closet/captains,/turf/simulated/floor/plasteel{icon_state = "grimy"},/area/awaymission/northblock) "fp" = (/turf/simulated/floor/plasteel{icon_state = "grimy"},/area/awaymission/northblock) "fq" = (/turf/simulated/floor/plasteel/airless,/area/awaymission/midblock) -"fr" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/obj/effect/landmark/burnturf,/turf/simulated/floor/plasteel/airless{icon_state = "floorscorched2"},/area/awaymission/midblock) +"fr" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/turf/simulated/floor/plating/airless,/area/awaymission/northblock) "fs" = (/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"; tag = ""},/obj/effect/landmark/burnturf,/turf/simulated/floor/plasteel/airless,/area/awaymission/midblock) "ft" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/obj/effect/landmark/damageturf,/turf/simulated/floor/plasteel/airless,/area/awaymission/midblock) "fu" = (/obj/structure/table,/obj/item/storage/toolbox/mechanical,/obj/item/storage/toolbox/mechanical{pixel_y = 5},/obj/item/stock_parts/console_screen,/turf/simulated/floor/plasteel{icon_state = "showroomfloor"},/area/awaymission/research) @@ -316,7 +316,7 @@ "gd" = (/obj/structure/chair/comfy/brown{dir = 1},/turf/simulated/floor/plasteel{icon_state = "grimy"},/area/awaymission/northblock) "ge" = (/obj/item/storage/secure/safe/sc_ssafe{pixel_x = 4; pixel_y = -26},/turf/simulated/floor/plasteel{icon_state = "grimy"},/area/awaymission/northblock) "gf" = (/obj/effect/decal/remains/human{desc = "This guy seemed to have died in terrible way! Half his remains are dust."; icon_state = "remains"; name = "Syndicate agent remains"},/obj/item/ammo_casing/c10mm,/obj/item/clothing/under/syndicate,/obj/effect/decal/cleanable/blood/splatter,/obj/item/gun/projectile/shotgun/toy/tommygun,/turf/simulated/floor/plasteel,/area/awaymission/midblock) -"gg" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/turf/simulated/floor/plasteel/airless{icon_state = "floorscorched2"},/area/awaymission/midblock) +"gg" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/obj/effect/landmark/burnturf,/turf/simulated/floor/plating/airless,/area/awaymission/midblock) "gh" = (/obj/structure/closet/wardrobe/generic,/turf/simulated/floor/plasteel,/area/awaymission/midblock) "gi" = (/turf/simulated/floor/plasteel,/area/awaymission/midblock) "gj" = (/obj/structure/closet/wardrobe/pjs,/obj/structure/window/reinforced/tinted{dir = 8; icon_state = "twindow"; tag = ""},/obj/structure/window/reinforced/tinted{dir = 4; icon_state = "twindow"; tag = ""},/obj/machinery/light/small{dir = 1},/turf/simulated/floor/plasteel,/area/awaymission/midblock) @@ -326,7 +326,7 @@ "gn" = (/obj/machinery/gibber,/turf/simulated/floor/plasteel,/area/awaymission/midblock) "go" = (/obj/machinery/vending/boozeomat,/obj/machinery/light/small{dir = 1},/turf/simulated/floor/plasteel,/area/awaymission/midblock) "gp" = (/obj/structure/table,/obj/item/book/manual/barman_recipes,/obj/item/reagent_containers/food/drinks/shaker,/turf/simulated/floor/plasteel,/area/awaymission/midblock) -"gq" = (/mob/living/simple_animal/hostile/alien/sentinel,/turf/simulated/floor/plasteel{dir = 9; icon_state = "warning"},/area/awaymission/research) +"gq" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/turf/simulated/floor/plating/airless,/area/awaymission/midblock) "gr" = (/obj/structure/table,/turf/simulated/floor/plasteel,/area/awaymission/midblock) "gs" = (/obj/structure/chair/stool,/turf/simulated/floor/plasteel,/area/awaymission/midblock) "gt" = (/obj/structure/chair,/turf/simulated/floor/plasteel,/area/awaymission/midblock) @@ -339,9 +339,9 @@ "gA" = (/obj/machinery/light/small{dir = 8},/turf/simulated/floor/plasteel,/area/awaymission/midblock) "gB" = (/obj/machinery/door/window/eastleft{name = "Windoor"},/obj/machinery/door/window/westleft{name = "Windoor"},/turf/simulated/floor/plasteel,/area/awaymission/midblock) "gC" = (/obj/machinery/light/small{dir = 4},/turf/simulated/floor/plasteel,/area/awaymission/midblock) -"gD" = (/obj/item/shard,/turf/simulated/floor/plasteel{dir = 5; icon_state = "warning"},/area/awaymission/research) -"gE" = (/obj/structure/window/reinforced{dir = 4},/mob/living/simple_animal/hostile/alien,/turf/simulated/floor/plasteel{dir = 4; icon_state = "warning"},/area/awaymission/research) -"gF" = (/obj/item/shard{icon_state = "small"},/turf/simulated/floor/plasteel{dir = 2; icon_state = "warning"},/area/awaymission/research) +"gD" = (/obj/structure/sign/vacuum{pixel_y = 32},/obj/effect/decal/remains/human,/obj/effect/decal/warning_stripes/south,/turf/simulated/floor/plasteel,/area/awaymission/arrivalblock) +"gE" = (/obj/effect/decal/remains/human,/obj/effect/decal/warning_stripes/southwestcorner,/turf/simulated/floor/plasteel,/area/awaymission/arrivalblock) +"gF" = (/turf/simulated/floor/plating/airless,/area/awaymission/midblock) "gG" = (/obj/structure/table,/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/turf/simulated/floor/plasteel,/area/awaymission/midblock) "gH" = (/obj/structure/chair/stool,/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"; tag = ""},/turf/simulated/floor/plasteel,/area/awaymission/midblock) "gI" = (/obj/structure/chair{dir = 4},/turf/simulated/floor/plasteel,/area/awaymission/midblock) @@ -355,15 +355,15 @@ "gQ" = (/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 4},/obj/structure/grille,/turf/simulated/shuttle/plating,/area/awaymission/arrivalblock) "gR" = (/obj/machinery/door/unpowered/shuttle{name = "Shuttle Airlock"},/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/awaymission/arrivalblock) "gS" = (/obj/machinery/door/airlock/external{welded = 1},/turf/simulated/floor/plating,/area/awaymission/arrivalblock) -"gT" = (/obj/structure/sign/vacuum{pixel_y = 32},/obj/effect/decal/remains/human,/turf/simulated/floor/plasteel{dir = 2; icon_state = "warning"},/area/awaymission/arrivalblock) -"gU" = (/obj/effect/decal/remains/human,/turf/simulated/floor/plasteel{tag = "icon-warningcorner (NORTH)"; icon_state = "warningcorner"; dir = 1},/area/awaymission/arrivalblock) +"gT" = (/obj/effect/decal/warning_stripes/southwest,/turf/simulated/floor/plasteel,/area/awaymission/arrivalblock) +"gU" = (/obj/structure/girder,/obj/effect/landmark/damageturf,/turf/simulated/floor/plating/airless,/area/awaymission/arrivalblock) "gV" = (/obj/machinery/computer/security,/turf/simulated/floor/plasteel{icon_state = "red"; dir = 9},/area/awaymission/arrivalblock) "gW" = (/obj/machinery/computer/secure_data,/turf/simulated/floor/plasteel{icon_state = "red"; dir = 1},/area/awaymission/arrivalblock) "gX" = (/obj/structure/table,/obj/item/melee/baton,/obj/item/clothing/head/warden,/turf/simulated/floor/plasteel{icon_state = "red"; dir = 1},/area/awaymission/arrivalblock) "gY" = (/obj/structure/closet/wardrobe/red,/obj/machinery/light{dir = 1},/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plasteel{icon_state = "red"; dir = 1},/area/awaymission/arrivalblock) "gZ" = (/obj/structure/closet/secure_closet/security,/turf/simulated/floor/plasteel{icon_state = "red"; dir = 1},/area/awaymission/arrivalblock) "ha" = (/obj/structure/closet/secure_closet/security,/turf/simulated/floor/plasteel{icon_state = "red"; dir = 5},/area/awaymission/arrivalblock) -"hb" = (/turf/simulated/floor/plasteel/airless{icon_state = "floorscorched2"},/area/awaymission/midblock) +"hb" = (/obj/effect/decal/warning_stripes/east,/turf/simulated/floor/plasteel,/area/awaymission/gateroom) "hc" = (/obj/structure/bed,/obj/item/bedsheet/blue,/obj/structure/window/reinforced/tinted{dir = 1},/turf/simulated/floor/plasteel,/area/awaymission/midblock) "hd" = (/obj/structure/window/reinforced/tinted{dir = 4; icon_state = "twindow"; tag = ""},/obj/structure/window/reinforced/tinted{dir = 8; icon_state = "twindow"; tag = ""},/turf/simulated/floor/plasteel,/area/awaymission/midblock) "he" = (/obj/structure/bed,/obj/item/bedsheet/purple,/obj/structure/window/reinforced/tinted{dir = 1},/obj/effect/decal/remains/human,/turf/simulated/floor/plasteel,/area/awaymission/midblock) @@ -379,7 +379,7 @@ "ho" = (/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 4},/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/turf/simulated/shuttle/plating,/area/awaymission/arrivalblock) "hp" = (/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 4},/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/turf/simulated/floor/plating,/area/awaymission/arrivalblock) "hq" = (/obj/effect/decal/remains/human,/turf/simulated/floor/plasteel,/area/awaymission/arrivalblock) -"hr" = (/turf/simulated/floor/plasteel{dir = 10; icon_state = "warning"},/area/awaymission/arrivalblock) +"hr" = (/obj/effect/decal/warning_stripes/west,/turf/simulated/floor/plasteel,/area/awaymission/gateroom) "hs" = (/obj/structure/table/reinforced,/turf/simulated/floor/plasteel,/area/awaymission/arrivalblock) "ht" = (/obj/structure/chair{dir = 1},/obj/effect/decal/remains/human,/turf/simulated/floor/plasteel{icon_state = "red"; dir = 8},/area/awaymission/arrivalblock) "hu" = (/turf/simulated/floor/plasteel,/area/awaymission/arrivalblock) @@ -437,7 +437,7 @@ "iu" = (/obj/structure/closet/secure_closet/freezer/kitchen,/turf/simulated/floor/plasteel,/area/awaymission/midblock) "iv" = (/obj/machinery/door/window/eastright{name = "Windoor"},/turf/simulated/floor/plasteel,/area/awaymission/midblock) "iw" = (/obj/item/ammo_casing/c10mm,/turf/simulated/floor/plasteel,/area/awaymission/midblock) -"ix" = (/obj/structure/girder,/obj/effect/landmark/damageturf,/turf/simulated/floor/plasteel/airless{icon_state = "floorscorched2"},/area/awaymission/arrivalblock) +"ix" = (/obj/structure/chair/comfy/brown{dir = 4},/turf/simulated/floor/wood,/area/awaymission/southblock) "iy" = (/obj/item/ammo_casing/c10mm,/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/obj/effect/decal/cleanable/blood/splatter,/turf/simulated/floor/plasteel,/area/awaymission/midblock) "iz" = (/obj/effect/landmark/damageturf,/turf/simulated/floor/plasteel/airless,/area/awaymission/southblock) "iA" = (/obj/item/ammo_casing/c10mm,/obj/item/ammo_casing/c10mm,/turf/simulated/floor/plasteel,/area/awaymission/midblock) @@ -455,6 +455,8 @@ "iM" = (/obj/effect/decal/remains/human,/obj/effect/decal/cleanable/blood/splatter,/turf/simulated/floor/plasteel,/area/awaymission/arrivalblock) "iN" = (/obj/structure/toilet{dir = 4},/turf/simulated/floor/plasteel{icon_state = "red"; dir = 9},/area/awaymission/arrivalblock) "iO" = (/turf/simulated/floor/plasteel{icon_state = "red"; dir = 1},/area/awaymission/arrivalblock) +"iP" = (/obj/machinery/light{icon_state = "tube1"; dir = 8},/obj/effect/decal/warning_stripes/east,/turf/simulated/floor/plasteel,/area/awaymission/gateroom) +"iQ" = (/obj/machinery/light{dir = 4; icon_state = "tube1"},/obj/effect/decal/warning_stripes/west,/turf/simulated/floor/plasteel,/area/awaymission/gateroom) "iR" = (/obj/machinery/light{icon_state = "tube1"; dir = 8},/turf/simulated/floor/plasteel/airless,/area/awaymission/southblock) "iS" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/turf/simulated/floor/plasteel/airless,/area/awaymission/southblock) "iT" = (/turf/simulated/floor/plasteel/airless,/area/awaymission/southblock) @@ -467,7 +469,10 @@ "ja" = (/obj/structure/closet/wardrobe/orange,/turf/simulated/floor/plasteel{icon_state = "red"; dir = 10},/area/awaymission/arrivalblock) "jb" = (/obj/structure/bed,/turf/simulated/floor/plasteel{icon_state = "red"},/area/awaymission/arrivalblock) "jc" = (/obj/structure/chair/stool,/obj/machinery/light/small,/turf/simulated/floor/plasteel{icon_state = "red"},/area/awaymission/arrivalblock) +"jd" = (/obj/structure/shuttle/engine/propulsion{tag = "icon-propulsion_r"; icon_state = "propulsion_r"},/obj/structure/shuttle/engine/propulsion,/turf/space,/area/awaymission/arrivalblock) "je" = (/turf/space,/area/awaymission/arrivalblock) +"jf" = (/obj/structure/shuttle/engine/propulsion,/turf/space,/area/awaymission/arrivalblock) +"jg" = (/obj/structure/shuttle/engine/propulsion{tag = "icon-propulsion_l"; icon_state = "propulsion_l"},/obj/structure/shuttle/engine/propulsion{tag = "icon-burst_l"; icon_state = "burst_l"},/obj/structure/shuttle/engine/propulsion{tag = "icon-propulsion_l"; icon_state = "propulsion_l"},/obj/structure/shuttle/engine/propulsion,/turf/space,/area/awaymission/arrivalblock) "jh" = (/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"; tag = ""},/turf/simulated/floor/plasteel/airless,/area/awaymission/southblock) "ji" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/turf/simulated/floor/plasteel/airless,/area/awaymission/southblock) "jj" = (/obj/item/ammo_casing/c10mm{pixel_y = 4},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/turf/simulated/floor/plasteel/airless,/area/awaymission/southblock) @@ -498,11 +503,11 @@ "jI" = (/obj/structure/table,/obj/item/pen,/turf/simulated/floor/plasteel{icon_state = "whitehall"; dir = 1},/area/awaymission/southblock) "jJ" = (/obj/structure/noticeboard{dir = 1; pixel_y = 32},/obj/structure/chair{dir = 8},/turf/simulated/floor/plasteel{icon_state = "white"},/area/awaymission/southblock) "jK" = (/turf/simulated/floor/plasteel,/area/awaymission/southblock) -"jL" = (/turf/simulated/floor/plasteel{dir = 4; icon_state = "warning"},/area/awaymission/gateroom) +"jL" = (/obj/structure/table,/obj/item/paper/pamphlet{pixel_x = 2; pixel_y = 2},/obj/item/paper/pamphlet{pixel_x = -2; pixel_y = -2},/obj/effect/decal/warning_stripes/northeastcorner,/turf/simulated/floor/plasteel,/area/awaymission/gateroom) "jM" = (/obj/machinery/gateway{dir = 9},/turf/simulated/floor/plasteel,/area/awaymission/gateroom) "jN" = (/obj/machinery/gateway{dir = 1},/turf/simulated/floor/plasteel,/area/awaymission/gateroom) "jO" = (/obj/machinery/gateway{dir = 5},/turf/simulated/floor/plasteel,/area/awaymission/gateroom) -"jP" = (/turf/simulated/floor/plasteel{dir = 8; icon_state = "warning"},/area/awaymission/gateroom) +"jP" = (/obj/effect/landmark{name = "awaystart"},/obj/effect/decal/warning_stripes/north,/turf/simulated/floor/plasteel,/area/awaymission/gateroom) "jQ" = (/turf/simulated/floor/wood,/area/awaymission/southblock) "jR" = (/obj/structure/bookcase,/turf/simulated/floor/wood,/area/awaymission/southblock) "jS" = (/obj/structure/chair/comfy/brown{dir = 1},/turf/simulated/floor/wood,/area/awaymission/southblock) @@ -523,50 +528,49 @@ "kh" = (/obj/machinery/gateway{dir = 8},/turf/simulated/floor/plasteel,/area/awaymission/gateroom) "ki" = (/obj/structure/cable{icon_state = "0-2"; pixel_y = 1; d2 = 2},/obj/machinery/gateway/centeraway{calibrated = 0},/turf/simulated/floor/plasteel,/area/awaymission/gateroom) "kj" = (/obj/machinery/gateway{dir = 4},/turf/simulated/floor/plasteel,/area/awaymission/gateroom) -"kk" = (/obj/structure/chair/comfy/brown{tag = "icon-comfychair_brown (EAST)"; icon_state = "comfychair_brown"; dir = 4},/turf/simulated/floor/wood,/area/awaymission/southblock) +"kk" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/obj/effect/landmark{name = "awaystart"},/obj/effect/decal/warning_stripes/north,/turf/simulated/floor/plasteel,/area/awaymission/gateroom) "kl" = (/obj/structure/shuttle/engine/heater,/obj/structure/window/reinforced{dir = 1},/turf/simulated/floor/plating/airless,/area/awaymission/arrivalblock) "km" = (/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 1},/obj/structure/grille,/turf/simulated/floor/plating,/area/awaymission/arrivalblock) "kn" = (/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/structure/grille,/turf/simulated/floor/plating,/area/awaymission/arrivalblock) "ko" = (/obj/machinery/door/airlock/external{welded = 1},/turf/simulated/floor/plasteel,/area/awaymission/arrivalblock) "kp" = (/obj/machinery/door/airlock/medical,/turf/simulated/floor/plasteel,/area/awaymission/southblock) -"kq" = (/obj/machinery/light{icon_state = "tube1"; dir = 8},/turf/simulated/floor/plasteel{dir = 4; icon_state = "warning"},/area/awaymission/gateroom) +"kq" = (/obj/structure/table,/obj/item/camera,/obj/effect/decal/warning_stripes/northwestcorner,/turf/simulated/floor/plasteel,/area/awaymission/gateroom) "kr" = (/obj/machinery/gateway{dir = 10},/turf/simulated/floor/plasteel,/area/awaymission/gateroom) "ks" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/obj/machinery/gateway,/turf/simulated/floor/plasteel,/area/awaymission/gateroom) "kt" = (/obj/machinery/gateway{dir = 6},/turf/simulated/floor/plasteel,/area/awaymission/gateroom) -"ku" = (/obj/machinery/light{dir = 4; icon_state = "tube1"},/turf/simulated/floor/plasteel{dir = 8; icon_state = "warning"},/area/awaymission/gateroom) +"ku" = (/obj/structure/chair/comfy/brown{dir = 8},/turf/simulated/floor/wood,/area/awaymission/southblock) "kv" = (/obj/machinery/light/small{dir = 8},/turf/simulated/floor/wood,/area/awaymission/southblock) "kw" = (/obj/structure/chair/comfy/brown,/turf/simulated/floor/wood,/area/awaymission/southblock) -"kx" = (/obj/structure/shuttle/engine/propulsion{tag = "icon-propulsion_r"; icon_state = "propulsion_r"},/obj/structure/shuttle/engine/propulsion,/turf/simulated/shuttle/plating,/area/awaymission/arrivalblock) -"ky" = (/obj/structure/shuttle/engine/propulsion,/turf/simulated/shuttle/plating,/area/awaymission/arrivalblock) -"kz" = (/obj/structure/shuttle/engine/propulsion{tag = "icon-propulsion_l"; icon_state = "propulsion_l"},/obj/structure/shuttle/engine/propulsion{tag = "icon-burst_l"; icon_state = "burst_l"},/obj/structure/shuttle/engine/propulsion{tag = "icon-propulsion_l"; icon_state = "propulsion_l"},/obj/structure/shuttle/engine/propulsion,/turf/simulated/shuttle/plating,/area/awaymission/arrivalblock) +"kx" = (/obj/machinery/suit_storage_unit/standard_unit,/obj/effect/decal/warning_stripes/northeast,/turf/simulated/floor/plasteel,/area/awaymission/gateroom) +"ky" = (/obj/machinery/suit_storage_unit/standard_unit,/obj/effect/decal/warning_stripes/northwest,/turf/simulated/floor/plasteel,/area/awaymission/gateroom) +"kz" = (/obj/machinery/suit_storage_unit/standard_unit,/obj/effect/decal/warning_stripes/east,/turf/simulated/floor/plasteel,/area/awaymission/gateroom) "kA" = (/obj/structure/shuttle/engine/propulsion{tag = "icon-propulsion_l (NORTH)"; icon_state = "propulsion_l"; dir = 1},/obj/structure/window/reinforced,/turf/space,/area/awaymission/arrivalblock) "kB" = (/obj/structure/shuttle/engine/propulsion{tag = "icon-propulsion_r (NORTH)"; icon_state = "propulsion_r"; dir = 1},/obj/structure/window/reinforced,/turf/space,/area/awaymission/arrivalblock) +"kC" = (/obj/machinery/suit_storage_unit/standard_unit,/obj/effect/decal/warning_stripes/west,/turf/simulated/floor/plasteel,/area/awaymission/gateroom) "kD" = (/obj/machinery/vending/hydronutrients,/turf/simulated/floor/plasteel,/area/awaymission/arrivalblock) "kE" = (/obj/machinery/vending/hydroseeds,/turf/simulated/floor/plasteel,/area/awaymission/arrivalblock) "kF" = (/obj/structure/sink/kitchen{pixel_y = 32},/turf/simulated/floor/plasteel,/area/awaymission/arrivalblock) "kG" = (/obj/item/clothing/shoes/syndigaloshes,/obj/item/clothing/under/syndicate,/obj/effect/decal/remains/human{desc = "This guy seemed to have died in terrible way! Half his remains are dust."; icon_state = "remains"; name = "Syndicate agent remains"},/obj/item/paper/sc_safehint_paper_hydro,/turf/simulated/floor/plasteel,/area/awaymission/arrivalblock) "kH" = (/obj/machinery/vending/medical,/turf/simulated/floor/plasteel{icon_state = "white"},/area/awaymission/southblock) "kI" = (/obj/structure/bed/roller,/turf/simulated/floor/plasteel{icon_state = "whitehall"; dir = 1},/area/awaymission/southblock) -"kJ" = (/obj/structure/table,/obj/item/paper/pamphlet{pixel_x = 2; pixel_y = 2},/obj/item/paper/pamphlet{pixel_x = -2; pixel_y = -2},/turf/simulated/floor/plasteel{tag = "icon-warningcorner (WEST)"; icon_state = "warningcorner"; dir = 8},/area/awaymission/gateroom) -"kK" = (/obj/effect/landmark{name = "awaystart"},/turf/simulated/floor/plasteel{dir = 1; icon_state = "warning"},/area/awaymission/gateroom) -"kL" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/obj/effect/landmark{name = "awaystart"},/turf/simulated/floor/plasteel{dir = 1; icon_state = "warning"},/area/awaymission/gateroom) -"kM" = (/obj/structure/table,/obj/item/camera,/turf/simulated/floor/plasteel{tag = "icon-warningcorner (EAST)"; icon_state = "warningcorner"; dir = 4},/area/awaymission/gateroom) -"kN" = (/obj/structure/chair/comfy/brown{tag = "icon-comfychair_brown (WEST)"; icon_state = "comfychair_brown"; dir = 8},/turf/simulated/floor/wood,/area/awaymission/southblock) +"kJ" = (/obj/machinery/suit_storage_unit/standard_unit,/obj/effect/decal/warning_stripes/southeast,/turf/simulated/floor/plasteel,/area/awaymission/gateroom) +"kK" = (/obj/machinery/suit_storage_unit/standard_unit,/obj/effect/decal/warning_stripes/southwest,/turf/simulated/floor/plasteel,/area/awaymission/gateroom) +"kL" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/obj/effect/decal/warning_stripes/north,/turf/simulated/floor/plasteel,/area/awaymission/southblock) +"kM" = (/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/warning_stripes/north,/turf/simulated/floor/plasteel,/area/awaymission/southblock) +"kN" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/obj/effect/decal/warning_stripes/northeast,/turf/simulated/floor/plasteel,/area/awaymission/southblock) "kO" = (/obj/structure/chair{dir = 4},/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/awaymission/arrivalblock) "kP" = (/obj/structure/chair,/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/awaymission/arrivalblock) "kQ" = (/obj/structure/chair{dir = 8},/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/awaymission/arrivalblock) "kR" = (/turf/simulated/floor/plasteel{tag = "icon-whitehall (WEST)"; icon_state = "whitehall"; dir = 8},/area/awaymission/southblock) "kS" = (/obj/machinery/light/small{dir = 4},/turf/simulated/floor/plasteel{icon_state = "whitehall"; dir = 4},/area/awaymission/southblock) "kT" = (/turf/simulated/floor/plasteel{icon_state = "whitehall"; dir = 4},/area/awaymission/southblock) -"kU" = (/obj/machinery/suit_storage_unit/standard_unit,/turf/simulated/floor/plasteel{dir = 5; icon_state = "warning"},/area/awaymission/gateroom) +"kU" = (/obj/effect/decal/warning_stripes/south,/turf/simulated/floor/plasteel,/area/awaymission/southblock) "kV" = (/obj/effect/landmark{name = "awaystart"},/turf/simulated/floor/plasteel,/area/awaymission/gateroom) "kW" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/obj/effect/landmark{name = "awaystart"},/turf/simulated/floor/plasteel,/area/awaymission/gateroom) -"kX" = (/obj/machinery/suit_storage_unit/standard_unit,/turf/simulated/floor/plasteel{dir = 9; icon_state = "warning"},/area/awaymission/gateroom) +"kX" = (/obj/effect/decal/warning_stripes/southeast,/turf/simulated/floor/plasteel,/area/awaymission/southblock) "kY" = (/obj/structure/window/reinforced/tinted{dir = 8; icon_state = "twindow"; tag = ""},/obj/structure/window/reinforced/tinted{dir = 1},/turf/simulated/floor/plasteel,/area/awaymission/southblock) "kZ" = (/obj/structure/window/reinforced/tinted{dir = 1},/turf/simulated/floor/plasteel,/area/awaymission/southblock) "la" = (/obj/structure/bed,/obj/structure/window/reinforced/tinted,/obj/item/bedsheet/medical,/obj/structure/window/reinforced/tinted{dir = 1},/turf/simulated/floor/plasteel{icon_state = "whitehall"; dir = 4},/area/awaymission/southblock) -"lb" = (/obj/machinery/suit_storage_unit/standard_unit,/turf/simulated/floor/plasteel{dir = 4; icon_state = "warning"},/area/awaymission/gateroom) -"lc" = (/obj/machinery/suit_storage_unit/standard_unit,/turf/simulated/floor/plasteel{dir = 8; icon_state = "warning"},/area/awaymission/gateroom) "ld" = (/obj/machinery/light/small,/turf/simulated/floor/wood,/area/awaymission/southblock) "le" = (/obj/structure/reagent_dispensers/watertank,/turf/simulated/floor/plasteel,/area/awaymission/arrivalblock) "lf" = (/obj/structure/table,/obj/item/book/manual/hydroponics_pod_people,/turf/simulated/floor/plasteel,/area/awaymission/arrivalblock) @@ -574,8 +578,6 @@ "lh" = (/obj/machinery/light{icon_state = "tube1"; dir = 8},/turf/simulated/floor/plasteel{tag = "icon-whitehall (WEST)"; icon_state = "whitehall"; dir = 8},/area/awaymission/southblock) "li" = (/obj/structure/window/reinforced/tinted{dir = 8; icon_state = "twindow"; tag = ""},/turf/simulated/floor/plasteel,/area/awaymission/southblock) "lj" = (/obj/structure/bed,/obj/structure/window/reinforced/tinted,/obj/item/bedsheet/medical,/turf/simulated/floor/plasteel{icon_state = "whitehall"; dir = 4},/area/awaymission/southblock) -"lk" = (/obj/machinery/suit_storage_unit/standard_unit,/turf/simulated/floor/plasteel{dir = 6; icon_state = "warning"},/area/awaymission/gateroom) -"ll" = (/obj/machinery/suit_storage_unit/standard_unit,/turf/simulated/floor/plasteel{dir = 10; icon_state = "warning"},/area/awaymission/gateroom) "lm" = (/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 1},/obj/structure/grille,/turf/simulated/floor/plating,/area/awaymission/southblock) "ln" = (/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/grille,/turf/simulated/floor/plating,/area/awaymission/southblock) "lo" = (/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/structure/grille,/turf/simulated/floor/plating,/area/awaymission/southblock) @@ -602,9 +604,6 @@ "lL" = (/obj/machinery/light{icon_state = "tube1"; dir = 8},/turf/simulated/floor/plasteel,/area/awaymission/southblock) "lM" = (/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"; tag = ""},/turf/simulated/floor/plasteel,/area/awaymission/southblock) "lN" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/turf/simulated/floor/plasteel,/area/awaymission/southblock) -"lO" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/turf/simulated/floor/plasteel{dir = 1; icon_state = "warning"},/area/awaymission/southblock) -"lP" = (/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/plasteel{dir = 1; icon_state = "warning"},/area/awaymission/southblock) -"lQ" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/turf/simulated/floor/plasteel{dir = 5; icon_state = "warning"},/area/awaymission/southblock) "lR" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/obj/machinery/door/airlock/engineering,/turf/simulated/floor/plasteel,/area/awaymission/gateroom) "lS" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/turf/simulated/floor/plasteel,/area/awaymission/gateroom) "lT" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/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/plasteel,/area/awaymission/gateroom) @@ -614,8 +613,6 @@ "lX" = (/obj/structure/bed/roller,/turf/simulated/floor/plasteel{icon_state = "white"},/area/awaymission/southblock) "lY" = (/obj/structure/window/reinforced/tinted{dir = 8; icon_state = "twindow"; tag = ""},/turf/simulated/floor/plasteel{icon_state = "whitehall"; dir = 2},/area/awaymission/southblock) "lZ" = (/obj/machinery/sleeper{dir = 1},/turf/simulated/floor/plasteel{icon_state = "whitehall"; dir = 2},/area/awaymission/southblock) -"mb" = (/turf/simulated/floor/plasteel{icon_state = "warning"},/area/awaymission/southblock) -"mc" = (/turf/simulated/floor/plasteel{dir = 6; icon_state = "warning"},/area/awaymission/southblock) "md" = (/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"; tag = ""},/obj/machinery/light/small,/turf/simulated/floor/plasteel,/area/awaymission/gateroom) "me" = (/obj/machinery/power/apc/noalarm{dir = 4; name = "Gateroom APC"; pixel_x = 28; pixel_y = 0},/obj/structure/cable{d2 = 8; icon_state = "0-8"},/turf/simulated/floor/plasteel,/area/awaymission/gateroom) @@ -637,51 +634,51 @@ aaaaaaaaaaaaaaaaafafagaeagagafafagagagaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaagag aaaaaaaaaaaaaaaaafadahafadagahadafafadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadadadadadagadadadadadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaagaaaaaaaaaaaaaaajajajajajajajajajajajajajajajaaaaaaaaaaaaaaagaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaagakaaaaaaaaaaakajalamanaoapaqarapasatauauauajakaaaaaaaaaaakagaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaafakakaaaaaaakakajavawaxayafazaAanaBaqaBaFaBajakakaaaaaaakakagaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaCaDafafagagagagagagaEafanaqaFafaGapaBaqafaqaFaBaEagagagagagagagagaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaDaaaaaaaIaJaKaaaaaaaaaaakakajaqaqamaqaqaFaHaBaLaFaBaMaNajakakaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aCaCaDaaaaaaaaaCaDaaaaaOaPaQaDaaaaaaaaaaakafafafaqaRaSbcbcaTaUaBamaVaWajakaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aCaXaYaDaaaaaaaCaCaCaCaCaCaCaCaCaCaZaabaaaafajajajajajbbbvajajajajajajajaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -bdbebfaYaDaaaaaCeheheierepexeJeKeJaCaCaaaqajaFbcaqaHaHapbcajaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -bobpbqbraCaCaCaCeKeKeKeKeKeKeKeKeJaCaCaKaKaCaCbsaHbcbcaHapajaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -bobpbqbfbteKeKeKeKeKeKeKeKeKeKeKeKeLeKeKeKeKeKeLbwbFbxbxbxbxbxbxbxbxbxbxbxbxbxbxbxbxbxbxbxakaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -bobpbqbyaCaCaCaCeKeKeWffeXfhfgeKeJaCaCaCaCaCaKbEbYgqbHgDbJbKbLbHbMbJbNbHbObPbKbQbRbSbSbTbxakakaaaaaaaaaaaaaaaabxbxbxbxbxaaaaaaaa -bUbVbfbWbEaaaaaCfifieKffeXeKfgeKeJaCaCbEafajbcbcbFbZcagEbJbJcdcacbbJcdcecbbJbJcfcgbSbSbSbxakakakakakakakbxbxbxbxchchchbxbxbxaaaa -aCbfbWbEaaaaaaaCaCaCaCaCaCaCaCaCaCaCbEafciajbcbcbxcjgFclcmbJcncocpcqcrcocpbJcsctcucvcwcxbxakakaaaaaaaacyczcAcAcAcAcBcAcAcAbxbxaa -aCaCbEaaaaaaaaaCbEaaaacCaPcDafafafafafaqbcajbccEbxbJbJcFbJbJbJcGhhbJbJcGcmcIbJcJbJbJbJbJbxakaaaaaaaacycKcAcLcAcBcMcNcOcBcAcPbxaa -aaaaaaaaaaaaaabEaaaaaaaKaJafafafafafcQafcRajbcbcbxbxbxbxbxcScTcUbJbJbJbJcTbJbJbJbJbJbJbJbxbxbxbxbxcVbxbxcWcAcXcYcYcYcYcYcZcAbxbx -aaaaaaaaaaaaaaaaaaaaaaaCafafaeaqafaeaqaqaqdaaHbcbxdbdcddbxdedfdgdgdgdgdgdgdgdfdgdgdgdghibxdibIbxbxdkcAdlcAcAcMcYcYcYdmcYcOcAdnbx -aaaaaaaaaaaaafafafafafafajajajaqdoaqanandpajaHdqdrdsdsdsdtdubJbJbJbJbJbJcIbJbJbJbJbJbJbJdvcAcAdvcAcAcAdlcAcXcNcYcYcYcYcYcNcZdnbx -aaaaaaaaaaaaafafafafbgbibhbjajafajajajajajajaHdAbxdBdCddbxdDdEdFdGdFdFdFdFdFdGdHdFdFdFbGbxcAbIbxbxcAdJdlcAcAdKcYcYcYcYcYdLcAdnbx -aaaaaaaaaaaaajafbkafdNanblbmafbnafdRdSdTamajbcdUbxbxbxbxbxcSdVbJbJbJdWdXdYdZbJbJeaeaeaeabxbxbxbxbxcVbxbxcWcAcXcYcYcYcYcYcZcAbxbx -aaaaaaaaaaaaebbzbuanaeaeanbAafbCbBbDbDbDbXajejdUbxdFdFdFekbJdVbJbJbJbJbJbJdZbJbJeaelbJembxakaaaaaaaacycKcAcAcAendKcNdLencAcPbxaa -aaaaaaaaaaaaeodweqanaeanandxesetdyetevetdzeseyewbxeAeBeCeDbJdVbJbJbJbJbJbJdZbJbJeaeEeFeGbxakakaaaaaaaacyeHcAcAcAcAencAcAcAbxbxaa -aaaaaaaaaaaaeIdMafanafanandOajdPbAbgbgbgbuajbcdAbxeCeCeCeDbJdVeNbJeOePePeQeRbJbJeSeTbJeUbxakakakakakakakbxbxbxbxeVeVeVbxbxbxaaaa -aaaaaaaaaaaaajajdQbXecanecbmajbnezapeMeZapajbcfbbxeAeBeCeDbJdVfcbJbJfdbJfedZbJbJeaeaeaeabxakakaaaaaaaaaaaaaaaabxbxbxbxbxaaaaaaaa -aaaaaaaaaaaaafajajeeedefbDegajajajfjajajajajaBfbbxeCeCeCeDbJdVfkbJbJbJbJfldZbJfmbJbJbJfnbxakaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaajajajajajajajfofpfpajfqfqeYfafrbxeAeBeCeDbJdVfufvfwfxfyfzdZbJccbJbJbJfBbxaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaafakakaaaaaaakakajavawaxayafazaAanagaqagaFagajakakaaaaaaakakagaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaCaDafafagagagagagagaEafanaqaFafaGapagaqafaqaFagaEagagagagagagagagaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaDaaaaaaaIaJaKaaaaaaaaaaakakajaqaqamaqaqaFaFagaLaFagaMaNajakakaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aCaCaDaaaaaaaaaCaDaaaaaOaPaQaDaaaaaaaaaaakafafafaqaRaSaqaqaTaUagamaVaBajakaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aCaXaYaDaaaaaaaCaCaCaCaCaCaCaCaCaCaZaabaaaafajajajajajbbaHajajajajajajajaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +bdbebfaYaDaaaaaCeheheierepexeJeKeJaCaCaaaqajaFbcaqaFaFapaqajaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +bobpbqbraCaCaCaCeKeKeKeKeKeKeKeKeJaCaCaKaKaCaCbsaFaqaqaFapajaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +bobpbqbfbteKeKeKeKeKeKeKeKeKeKeKeKeLeKeKeKeKeKeLbwaWbxbxbxbxbxbxbxbxbxbxbxbxbxbxbxbxbxbxbxakaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +bobpbqbyaCaCaCaCeKeKeWffeXfhfgeKeJaCaCaCaCaCaKbEbwbvbFbHbJbKbLbFbMbJbNbFbObPbKbQbRbSbSbTbxakakaaaaaaaaaaaaaaaabxbxbxbxbxaaaaaaaa +bUbVbfbWbEaaaaaCfifieKffeXeKfgeKeJaCaCbEafajaqaqaWbYcabZbJbJcbcacdbJcbcecdbJbJcfcgbSbSbSbxakakakakakakakbxbxbxbxchchchbxbxbxaaaa +aCbfbWbEaaaaaaaCaCaCaCaCaCaCaCaCaCaCbEafciajaqaqbxcjclcncmbJcocpcrcqcEcpcrbJcsctcucvcwcxbxakakaaaaaaaacyczcAcAcAcAcBcAcAcAbxbxaa +aCaCbEaaaaaaaaaCbEaaaacCaPcDafafafafafaqaqajaqcRbxbJbJcFbJbJbJcGhhbJbJcGcmcIbJcJbJbJbJbJbxakaaaaaaaacycKcAcLcAcBcMcNcOcBcAcPbxaa +aaaaaaaaaaaaaabEaaaaaaaKaJafafafafafcQafdcajaqaqbxbxbxbxbxcScTcUbJbJbJbJcTbJbJbJbJbJbJbJbxbxbxbxbxcVbxbxcWcAcXcYcYcYcYcYcZcAbxbx +aaaaaaaaaaaaaaaaaaaaaaaCafafaeaqafaeaqaqaqdaaFaqbxdbdddqbxdedfdgdgdgdgdgdgdgdfdgdgdgdghibxdibIbxbxdkcAdlcAcAcMcYcYcYdmcYcOcAdnbx +aaaaaaaaaaaaafafafafafafajajajaqdoaqanandpajaFdsdrdAdAdAdtdubJbJbJbJbJbJcIbJbJbJbJbJbJbJdvcAcAdvcAcAcAdlcAcXcNcYcYcYcYcYcNcZdnbx +aaaaaaaaaaaaafafafafbgbibhbjajafajajajajajajaFdCbxdBdUdqbxdDdEdFdGdFdFdFdFdFdGdHdFdFdFbGbxcAbIbxbxcAdJdlcAcAdKcYcYcYcYcYdLcAdnbx +aaaaaaaaaaaaajafbkafdNanblbmafbnafdRdSdTamajaqejbxbxbxbxbxcSdVbJbJbJdWdXdYdZbJbJeaeaeaeabxbxbxbxbxcVbxbxcWcAcXcYcYcYcYcYcZcAbxbx +aaaaaaaaaaaaebbzbuanaeaeanbAafbCbBbDbDbDbXajeyejbxdFdFdFekbJdVbJbJbJbJbJbJdZbJbJeaelbJembxakaaaaaaaacycKcAcAcAendKcNdLencAcPbxaa +aaaaaaaaaaaaeodweqanaeanandxesetdyetevetdzesfbewbxeAeBeCeDbJdVbJbJbJbJbJbJdZbJbJeaeEeFeGbxakakaaaaaaaacyeHcAcAcAcAencAcAcAbxbxaa +aaaaaaaaaaaaeIdMafanafanandOajdPbAbgbgbgbuajaqdCbxeCeCeCeDbJdVeNbJeOePePeQeRbJbJeSeTbJeUbxakakakakakakakbxbxbxbxeVeVeVbxbxbxaaaa +aaaaaaaaaaaaajajdQbXecanecbmajbnezapeMeZapajaqfrbxeAeBeCeDbJdVfcbJbJfdbJfedZbJbJeaeaeaeabxakakaaaaaaaaaaaaaaaabxbxbxbxbxaaaaaaaa +aaaaaaaaaaaaafajajeeedefbDegajajajfjajajajajagfrbxeCeCeCeDbJdVfkbJbJbJbJfldZbJfmbJbJbJfnbxakaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaajajajajajajajfofpfpajfqfqeYfaggbxeAeBeCeDbJdVfufvfwfxfyfzdZbJccbJbJbJfBbxaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaajfpfpckajfEfsftftfFbxbxbxbxbxbxbxbxbxbxbxbxbxbxbxbxbxbxbxbxbxfIfIfIfIfIfIfIfJfKaaaaaaaaaaaaaaaaaaaa aafLfMfNfOfPfMfQaaaaaaaaaaaaajfRfpfSajfqfTfUfUfUfUfUfUfUfUfUfUfUfUfUfUfUfUfUfUfUfUfUfUfUfIfVfWfVfXfVfXfWfXfYfKaaaaaaaaaaaaaaaaaa -aafZgagbgcgbgafZaaaaaaaaaaaaajgdgecHajfqggfUghgigjgigkfUglgmgnfUgogpgigrgsgigigtgifUfqfqfIfVfXfVfXfVfXgufXfXgvaaaaaaaaaaaaaaaaaa +aafZgagbgcgbgafZaaaaaaaaaaaaajgdgecHajfqgqfUghgigjgigkfUglgmgnfUgogpgigrgsgigigtgifUfqfqfIfVfXfVfXfVfXgufXfXgvaaaaaaaaaaaaaaaaaa aagwgxgbgbgbgxgygzgzgzgzgzgzgzgzgzgzgzfqfTfUgAgigBgigCfUgigigCfUdhdIdjgGgHgigIgrgJfUfqfqgKgLgLgMgLgLgLgNgOgPgvaaaaaaaaaaaaaaaaaa -aagQgbgbgbgbgbgRgSgTgUgzgVgWgXgYgZhagzhbfTfUhchchdhehffUhgfUfUfUgigrgrgrhjgigigihkfUfqfqgKgLgLgLgLgLgLfXhlhmgvaaaaaaaaaaaaaaaaaa -aahngcgcgbgcgchohphqhrhshthuhueuhwhxgzhyhzfUgAgihdgigCfUgihAhBhCgigrgsgihDgigIgrgJfUfEfqfIfVfXfVfXfVfXgufXfXgvaaaaaaaaaaaaaaaaaa +aagQgbgbgbgbgbgRgSgDgEgzgVgWgXgYgZhagzgFfTfUhchchdhehffUhgfUfUfUgigrgrgrhjgigigihkfUfqfqgKgLgLgLgLgLgLfXhlhmgvaaaaaaaaaaaaaaaaaa +aahngcgcgbgcgchohphqgThshthuhueuhwhxgzhyhzfUgAgihdgigCfUgihAhBhCgigrgsgihDgigIgrgJfUfEfqfIfVfXfVfXfVfXgufXfXgvaaaaaaaaaaaaaaaaaa aafZgbgbgbgbgbfZhEhuhqgzhFhuhGhHhIhJgzeYfTfUhKgigBgihLfUhMgigihNgigrgsgihOhPhQgifAfUfqfqfIfVhSfVfXfVfXhSfXhThUaaaaaaaaaaaaaaaaaa aafZgcgcgbgcgcfZhVhWhugzhXhYhYhZhZiaibicfGfUgigihdgigifUiegigigigigrifigfCigiiijikfUfqfqfIfIfIfIfIfIfIfIfJhUaaaaaaaaaaaaaaaaaaaa aafZgbgbgbgbgbfZhVilimgzinioioioioipgzfqfTfUiqhKhdhLhLfUirisitiugiiviwfDiygfiAiBgifUfqfqfUaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aagwgcgcgbgcgcgwiCiDhugzgziEiFiGgziHgzfqfTfUfUfUhgfUfUfUfUfUfUfUfUfUfUfUiIiJfUfUfUfUfqfqfUaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aagQgbgbgbgbgbiKiLhqiMgziNiOiOiOfHidgziRiSiTiTiUiViTiTiTiTiTiWiTiTiTiTiTiSiTiTiTiTiTiTiXiYaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aahngcgcgbgcgchniZhuilgzjajbjbjcihjeixizjhjijijijjjkjijijijijijijijijijljmiTjniTiTiTiTiTiYaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aahngcgcgbgcgchniZhuilgzjajbjbjcihjegUizjhjijijijjjkjijijijijijijijijijljmiTjniTiTiTiTiTiYaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aafZgbgbgbgbgbfZhEiDilgzgzgzgzgzgzjogzgzgzjpjpiYiYjqiYiYiYiYjriYiYiYjsjtjujujujujujujujsiYiYiYjvjwjxaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aafZgcgcgbgcgcfZhVhuhqjyjzjAiljBhujChuhuhuhuhuiYjDjEjFiYjGjHjHjIjJiYjKjEjujLjMjNjOjPjujQjQjRjRjSjQjTaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aafZgbgbgbgbgbfZjUjViDhqhWhujWjyhujXhuhuhuhuhuiYjYjZkaiYkbkckdkekfiYjKkgjujLkhkikjjPjujQjQjQjQjQkkjTaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aafZklklklklklfZgzkmknkokmkngzgzgzgzgzjpgzgzgziYiYiYiYiYiYiYkpiYjriYjKjEjukqkrksktkujukvjQkwjQjQjQjTaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aagakxkykykykzgaaafLkAgRkBfQaagzkDkEkFhukGjzhuiYkfjHkfiYkHjHjHkIkfiYjKjEjukJkKkLkKkMjujQkkjQkNjQjQjTaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaafZkOkPkQfZaagzhuhujzhuhujzhuiYkRjKkSiYkRjKjKjKkTiYjKjEjukUkVkWkVkXjujQjQjSjQjQkkjTaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaafZkOgbkQfZaagzhujzhujzhuhuhuiYkfkdkfkpkRjKkYkZlaiYjKjEjulbkVkWkVlcjukkjQjQldkwjQjTaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaafZkOgckQfZaagzlehulfhulghuhuiYiYiYiYiYlhjKlijKljiYjKjEjulkkVkWkVlljujujujujulmlnloaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aafZgcgcgbgcgcfZhVhuhqjyjzjAiljBhujChuhuhuhuhuiYjDjEjFiYjGjHjHjIjJiYjKjEjuhbjMjNjOhrjujQjQjRjRjSjQjTaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aafZgbgbgbgbgbfZjUjViDhqhWhujWjyhujXhuhuhuhuhuiYjYjZkaiYkbkckdkekfiYjKkgjuhbkhkikjhrjujQjQjQjQjQixjTaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aafZklklklklklfZgzkmknkokmkngzgzgzgzgzjpgzgzgziYiYiYiYiYiYiYkpiYjriYjKjEjuiPkrksktiQjukvjQkwjQjQjQjTaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aagajdjfjfjfjggaaafLkAgRkBfQaagzkDkEkFhukGjzhuiYkfjHkfiYkHjHjHkIkfiYjKjEjujLjPkkjPkqjujQixjQkujQjQjTaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaafZkOkPkQfZaagzhuhujzhuhujzhuiYkRjKkSiYkRjKjKjKkTiYjKjEjukxkVkWkVkyjujQjQjSjQjQixjTaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaafZkOgbkQfZaagzhujzhujzhuhuhuiYkfkdkfkpkRjKkYkZlaiYjKjEjukzkVkWkVkCjujSjQjQldkwjQjTaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaafZkOgckQfZaagzlehulfhulghuhuiYiYiYiYiYlhjKlijKljiYjKjEjukJkVkWkVkKjujujujujulmlnloaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaahvlqlrlqhRaagzlthuluhulvjzhuiYlwlxlyiYkRjKlijKlziYjKlAjujujulBjujujulClDlEjuaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaagzltlFlGlHhuhuhuiYlIkfkfkpkRjKlJjKlKiYlLlMlNlOlOlPlOlQlRlSlTlUjuaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaagzgzgzgzgzgzgzgziYlVlWlXiYkfkdlYlZkfiYjKjKjKmbmbmbmbmcjulCmdmejuaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaagzltlFlGlHhuhuhuiYlIkfkfkpkRjKlJjKlKiYlLlMlNkLkLkMkLkNlRlSlTlUjuaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaagzgzgzgzgzgzgzgziYlVlWlXiYkfkdlYlZkfiYjKjKjKkUkUkUkUkXjulCmdmejuaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaiYiYiYiYiYiYiYiYiYiYiYiYiYiYiYiYiYiYiYjujujujujuaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -"} \ No newline at end of file +"} diff --git a/_maps/map_files/RandomZLevels/undergroundoutpost45.dmm b/_maps/map_files/RandomZLevels/undergroundoutpost45.dmm index 5ccc7db7a4c..9d94eae452d 100644 --- a/_maps/map_files/RandomZLevels/undergroundoutpost45.dmm +++ b/_maps/map_files/RandomZLevels/undergroundoutpost45.dmm @@ -7,22 +7,22 @@ "ag" = (/turf/simulated/shuttle/wall{tag = "icon-swallc1"; icon_state = "swallc1"; dir = 2},/area/awaycontent/a1{has_gravity = 1; name = "UO45 Central Hall"}) "ah" = (/turf/simulated/shuttle/wall{icon_state = "swall3"; dir = 2},/area/awaycontent/a1{has_gravity = 1; name = "UO45 Central Hall"}) "ai" = (/obj/effect/decal/cleanable/dirt,/obj/effect/landmark/damageturf,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/awaycontent/a1{has_gravity = 1; name = "UO45 Central Hall"}) -"aj" = (/obj/effect/landmark/damageturf,/turf/simulated/floor/plasteel{burnt = 1; dir = 8; icon_state = "floorscorched2"; tag = "icon-floorscorched2 (WEST)"},/area/awaycontent/a1{has_gravity = 1; name = "UO45 Central Hall"}) +"aj" = (/obj/machinery/light/small{active_power_usage = 0; dir = 8; icon_state = "bulb-broken"; status = 2},/turf/simulated/floor/plating,/area/awaycontent/a1{has_gravity = 1; name = "UO45 Central Hall"}) "ak" = (/obj/effect/landmark/damageturf,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/awaycontent/a1{has_gravity = 1; name = "UO45 Central Hall"}) -"al" = (/obj/machinery/door_control{desc = "A remote control-switch to send the elevator to the basement floor."; id = "UO45_useless"; name = "B1"; pixel_x = 6; pixel_y = -24; req_access_txt = "0"},/obj/machinery/door_control{desc = "A remote control-switch for the elevator doors."; id = "UO45_Elevator"; name = "Elevator Doors"; pixel_x = -6; pixel_y = -24; req_access_txt = "0"},/obj/machinery/door_control{desc = "A remote control-switch to send the elevator to the ground floor."; id = "UO45_useless"; name = "G1"; pixel_x = 6; pixel_y = -34; req_access_txt = "0"},/obj/effect/landmark/burnturf,/turf/simulated/floor/plasteel{burnt = 1; dir = 8; icon_state = "floorscorched2"; tag = "icon-floorscorched2 (WEST)"},/area/awaycontent/a1{has_gravity = 1; name = "UO45 Central Hall"}) +"al" = (/obj/machinery/door_control{desc = "A remote control-switch to send the elevator to the basement floor."; id = "UO45_useless"; name = "B1"; pixel_x = 6; pixel_y = -24; req_access_txt = "0"},/obj/machinery/door_control{desc = "A remote control-switch for the elevator doors."; id = "UO45_Elevator"; name = "Elevator Doors"; pixel_x = -6; pixel_y = -24; req_access_txt = "0"},/obj/machinery/door_control{desc = "A remote control-switch to send the elevator to the ground floor."; id = "UO45_useless"; name = "G1"; pixel_x = 6; pixel_y = -34; req_access_txt = "0"},/obj/effect/landmark/burnturf,/turf/simulated/floor/plating,/area/awaycontent/a1{has_gravity = 1; name = "UO45 Central Hall"}) "am" = (/turf/simulated/wall/r_wall/rust,/area/awaycontent/a1{has_gravity = 1; name = "UO45 Central Hall"}) -"an" = (/obj/machinery/light/small{active_power_usage = 0; dir = 8; icon_state = "bulb-broken"; status = 2},/turf/simulated/floor/plasteel{burnt = 1; dir = 8; icon_state = "floorscorched2"; tag = "icon-floorscorched2 (WEST)"},/area/awaycontent/a1{has_gravity = 1; name = "UO45 Central Hall"}) +"an" = (/obj/machinery/door/poddoor{id_tag = "UO45_Elevator"; name = "Elevator Door"},/obj/effect/decal/warning_stripes/yellow,/turf/simulated/floor/plasteel,/area/awaycontent/a1{has_gravity = 1; name = "UO45 Central Hall"}) "ao" = (/obj/effect/landmark/damageturf,/turf/simulated/floor/plasteel{icon_state = "darkblue"; tag = "icon-darkblue"; temperature = 273.15},/area/awaycontent/a1{has_gravity = 1; name = "UO45 Central Hall"}) "ap" = (/turf/simulated/floor/plasteel{icon_state = "dark"},/area/awaycontent/a1{has_gravity = 1; name = "UO45 Central Hall"}) "aq" = (/obj/effect/decal/cleanable/dirt,/obj/machinery/light/small{active_power_usage = 0; dir = 4; icon_state = "bulb-broken"; status = 2},/turf/simulated/floor/plating,/area/awaycontent/a1{has_gravity = 1; name = "UO45 Central Hall"}) -"ar" = (/obj/machinery/door/poddoor{id_tag = "UO45_Elevator"; name = "Elevator Door"},/obj/effect/landmark/damageturf,/turf/simulated/floor/plasteel{burnt = 1; dir = 8; icon_state = "floorscorched2"; tag = "icon-floorscorched2 (WEST)"},/area/awaycontent/a1{has_gravity = 1; name = "UO45 Central Hall"}) +"ar" = (/obj/machinery/door/poddoor{id_tag = "UO45_Elevator"; name = "Elevator Door"},/obj/effect/landmark/damageturf,/turf/simulated/floor/plating,/area/awaycontent/a1{has_gravity = 1; name = "UO45 Central Hall"}) "as" = (/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel{icon_state = "darkblue"; tag = "icon-darkblue"; temperature = 273.15},/area/awaycontent/a1{has_gravity = 1; name = "UO45 Central Hall"}) "at" = (/obj/effect/landmark/damageturf,/turf/simulated/floor/plating,/area/awaycontent/a1{has_gravity = 1; name = "UO45 Central Hall"}) "au" = (/turf/simulated/floor/plasteel{tag = "icon-darkblue (SOUTHEAST)"; icon_state = "darkblue"; dir = 6},/area/awaycontent/a1{has_gravity = 1; name = "UO45 Central Hall"}) "av" = (/turf/simulated/shuttle/wall{tag = "icon-swallc3"; icon_state = "swallc3"; dir = 2},/area/awaycontent/a1{has_gravity = 1; name = "UO45 Central Hall"}) "aw" = (/turf/simulated/shuttle/wall{icon_state = "swall8"; dir = 2},/area/awaycontent/a1{has_gravity = 1; name = "UO45 Central Hall"}) "ax" = (/obj/effect/landmark/burnturf,/turf/simulated/floor/plating,/area/awaycontent/a1{has_gravity = 1; name = "UO45 Central Hall"}) -"ay" = (/obj/machinery/door/poddoor{id_tag = "UO45_Elevator"; name = "Elevator Door"},/turf/simulated/floor/plasteel{icon_state = "delivery"; name = "floor"},/area/awaycontent/a1{has_gravity = 1; name = "UO45 Central Hall"}) +"ay" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel,/area/awaycontent/a1{has_gravity = 1; name = "UO45 Central Hall"}) "az" = (/turf/simulated/shuttle/wall{icon_state = "swall4"; dir = 2},/area/awaycontent/a1{has_gravity = 1; name = "UO45 Central Hall"}) "aA" = (/turf/simulated/shuttle/wall{tag = "icon-swallc4"; icon_state = "swallc4"; dir = 2},/area/awaycontent/a1{has_gravity = 1; name = "UO45 Central Hall"}) "aB" = (/turf/simulated/wall,/area/awaycontent/a1{has_gravity = 1; name = "UO45 Central Hall"}) @@ -34,7 +34,7 @@ "aH" = (/turf/simulated/floor/plasteel,/area/awaycontent/a1{has_gravity = 1; name = "UO45 Central Hall"}) "aI" = (/obj/structure/sign/poster/official/nanotrasen_logo{pixel_y = 32},/turf/simulated/floor/plasteel,/area/awaycontent/a1{has_gravity = 1; name = "UO45 Central Hall"}) "aJ" = (/obj/machinery/vending/cigarette,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/awaycontent/a1{has_gravity = 1; name = "UO45 Central Hall"}) -"aK" = (/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel{dir = 8; icon_state = "floorgrime"; tag = "icon-floorgrime (WEST)"},/area/awaycontent/a1{has_gravity = 1; name = "UO45 Central Hall"}) +"aK" = (/obj/item/twohanded/required/kirbyplants{layer = 5},/obj/effect/decal/cleanable/dirt,/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel,/area/awaycontent/a1{has_gravity = 1; name = "UO45 Central Hall"}) "aL" = (/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/awaycontent/a1{has_gravity = 1; name = "UO45 Central Hall"}) "aM" = (/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel,/area/awaycontent/a1{has_gravity = 1; name = "UO45 Central Hall"}) "aN" = (/obj/machinery/vending/cola,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/awaycontent/a1{has_gravity = 1; name = "UO45 Central Hall"}) @@ -166,7 +166,7 @@ "dj" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/effect/decal/cleanable/dirt,/obj/effect/landmark/burnturf,/turf/simulated/floor/plating,/area/awaycontent/a1{has_gravity = 1; name = "UO45 Central Hall"}) "dk" = (/obj/machinery/atmospherics/unary/vent_scrubber{dir = 8; on = 1; scrub_N2O = 0; scrub_Toxins = 0},/obj/effect/landmark/damageturf,/turf/simulated/floor/plating,/area/awaycontent/a1{has_gravity = 1; name = "UO45 Central Hall"}) "dl" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 9},/turf/simulated/floor/plating,/area/awaycontent/a1{has_gravity = 1; name = "UO45 Central Hall"}) -"dm" = (/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 = "UO45 Central Hall"}) +"dm" = (/obj/machinery/r_n_d/destructive_analyzer,/obj/effect/decal/warning_stripes/north,/turf/simulated/floor/plasteel,/area/awaycontent/a5{has_gravity = 1; name = "UO45 Research"}) "dn" = (/obj/machinery/light{dir = 1},/turf/simulated/floor/plasteel,/area/awaycontent/a1{has_gravity = 1; name = "UO45 Central Hall"}) "do" = (/obj/machinery/firealarm{dir = 2; pixel_x = 0; pixel_y = 24},/turf/simulated/floor/plasteel,/area/awaycontent/a1{has_gravity = 1; name = "UO45 Central Hall"}) "dp" = (/obj/item/twohanded/required/kirbyplants{layer = 5},/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel{dir = 2; icon_state = "greencorner"; tag = "icon-greencorner"},/area/awaycontent/a1{has_gravity = 1; name = "UO45 Central Hall"}) @@ -304,7 +304,7 @@ "fR" = (/obj/machinery/light/small,/obj/machinery/alarm/monitor{dir = 1; frequency = 1439; locked = 0; pixel_y = -23; req_access = null},/obj/machinery/atmospherics/unary/vent_scrubber{dir = 1; on = 1; scrub_N2O = 0; scrub_Toxins = 0},/obj/structure/dresser,/turf/simulated/floor/carpet,/area/awaycontent/a1{has_gravity = 1; name = "UO45 Central Hall"}) "fS" = (/obj/structure/table/wood,/obj/machinery/newscaster{pixel_x = 0; pixel_y = -28},/turf/simulated/floor/carpet,/area/awaycontent/a1{has_gravity = 1; name = "UO45 Central Hall"}) "fT" = (/obj/structure/bed,/obj/item/bedsheet,/turf/simulated/floor/carpet,/area/awaycontent/a1{has_gravity = 1; name = "UO45 Central Hall"}) -"fU" = (/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/awaycontent/a1{has_gravity = 1; name = "UO45 Central Hall"}) +"fU" = (/obj/effect/decal/cleanable/dirt,/obj/effect/decal/warning_stripes/north,/turf/simulated/floor/plasteel,/area/awaycontent/a5{has_gravity = 1; name = "UO45 Research"}) "fV" = (/obj/structure/extinguisher_cabinet{pixel_x = 0; pixel_y = -28},/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel,/area/awaycontent/a1{has_gravity = 1; name = "UO45 Central Hall"}) "fW" = (/obj/machinery/firealarm{dir = 1; pixel_x = 0; pixel_y = -24},/obj/machinery/camera{c_tag = "Central Hallway"; dir = 1; network = list("UO45")},/turf/simulated/floor/plasteel,/area/awaycontent/a1{has_gravity = 1; name = "UO45 Central Hall"}) "fX" = (/obj/machinery/vending/snack,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/awaycontent/a1{has_gravity = 1; name = "UO45 Central Hall"}) @@ -390,11 +390,11 @@ "hz" = (/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/awaycontent/a2{has_gravity = 1; name = "UO45 Crew Quarters"}) "hA" = (/obj/structure/closet/firecloset,/turf/simulated/floor/plating,/area/awaycontent/a6{has_gravity = 1; name = "UO45 Gateway"}) "hB" = (/obj/effect/decal/cleanable/dirt,/obj/machinery/light/small{dir = 1},/obj/item/storage/box/lights/mixed,/turf/simulated/floor/plating,/area/awaycontent/a6{has_gravity = 1; name = "UO45 Gateway"}) -"hC" = (/obj/machinery/r_n_d/destructive_analyzer,/turf/simulated/floor/plasteel{dir = 1; icon_state = "warning"},/area/awaycontent/a5{has_gravity = 1; name = "UO45 Research"}) -"hD" = (/obj/machinery/r_n_d/protolathe,/turf/simulated/floor/plasteel{dir = 1; icon_state = "warning"},/area/awaycontent/a5{has_gravity = 1; name = "UO45 Research"}) -"hE" = (/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel{dir = 1; icon_state = "warning"},/area/awaycontent/a5{has_gravity = 1; name = "UO45 Research"}) +"hC" = (/obj/machinery/r_n_d/protolathe,/obj/effect/decal/warning_stripes/north,/turf/simulated/floor/plasteel,/area/awaycontent/a5{has_gravity = 1; name = "UO45 Research"}) +"hD" = (/obj/effect/decal/warning_stripes/west,/turf/simulated/floor/plasteel{icon_state = "white"},/area/awaycontent/a5{has_gravity = 1; name = "UO45 Research"}) +"hE" = (/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/awaycontent/a5{has_gravity = 1; name = "UO45 Research"}) "hF" = (/obj/machinery/atmospherics/unary/vent_scrubber{dir = 2; on = 1; scrub_N2O = 0; scrub_Toxins = 0},/turf/simulated/floor/plasteel{icon_state = "white"},/area/awaycontent/a5{has_gravity = 1; name = "UO45 Research"}) -"hG" = (/turf/simulated/floor/plasteel{dir = 8; icon_state = "warnwhite"},/area/awaycontent/a5{has_gravity = 1; name = "UO45 Research"}) +"hG" = (/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/awaycontent/a5{has_gravity = 1; name = "UO45 Research"}) "hH" = (/obj/structure/grille,/obj/structure/window/full/reinforced,/turf/simulated/floor/plating,/area/awaycontent/a5{has_gravity = 1; name = "UO45 Research"}) "hI" = (/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/awaycontent/a5{has_gravity = 1; name = "UO45 Research"}) "hJ" = (/obj/structure/table,/obj/item/trash/chips,/obj/machinery/computer/security/telescreen/entertainment{pixel_x = 0; pixel_y = 32},/turf/simulated/floor/plasteel{icon_state = "bar"},/area/awaycontent/a2{has_gravity = 1; name = "UO45 Crew Quarters"}) @@ -439,11 +439,11 @@ "iw" = (/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 = "201"},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/awaycontent/a6{has_gravity = 1; name = "UO45 Gateway"}) "ix" = (/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/awaycontent/a6{has_gravity = 1; name = "UO45 Gateway"}) "iy" = (/obj/machinery/door/airlock{name = "Emergency Supplies"},/turf/simulated/floor/plating,/area/awaycontent/a6{has_gravity = 1; name = "UO45 Gateway"}) -"iz" = (/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/awaycontent/a5{has_gravity = 1; name = "UO45 Research"}) -"iA" = (/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/awaycontent/a5{has_gravity = 1; name = "UO45 Research"}) -"iB" = (/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/awaycontent/a5{has_gravity = 1; name = "UO45 Research"}) +"iz" = (/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/awaycontent/a5{has_gravity = 1; name = "UO45 Research"}) +"iA" = (/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/awaycontent/a5{has_gravity = 1; name = "UO45 Research"}) +"iB" = (/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/awaycontent/a6{has_gravity = 1; name = "UO45 Gateway"}) "iC" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 9},/turf/simulated/floor/plasteel{icon_state = "white"},/area/awaycontent/a5{has_gravity = 1; name = "UO45 Research"}) -"iD" = (/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/awaycontent/a5{has_gravity = 1; name = "UO45 Research"}) +"iD" = (/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/awaycontent/a6{has_gravity = 1; name = "UO45 Gateway"}) "iE" = (/obj/machinery/disposal,/obj/structure/disposalpipe/trunk{dir = 8},/turf/simulated/floor/plasteel{dir = 8; icon_state = "whitehall"},/area/awaycontent/a5{has_gravity = 1; name = "UO45 Research"}) "iF" = (/obj/machinery/atmospherics/unary/vent_pump{on = 1},/turf/simulated/floor/plasteel,/area/awaycontent/a2{has_gravity = 1; name = "UO45 Crew Quarters"}) "iG" = (/obj/structure/table,/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel{icon_state = "bar"},/area/awaycontent/a2{has_gravity = 1; name = "UO45 Crew Quarters"}) @@ -455,11 +455,11 @@ "iM" = (/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 = "201"},/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/awaycontent/a2{has_gravity = 1; name = "UO45 Crew Quarters"}) "iN" = (/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/awaycontent/a1{has_gravity = 1; name = "UO45 Central Hall"}) "iO" = (/obj/structure/closet/emcloset,/obj/item/clothing/mask/breath,/obj/effect/landmark/damageturf,/turf/simulated/floor/plating,/area/awaycontent/a1{has_gravity = 1; name = "UO45 Central Hall"}) -"iP" = (/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/awaycontent/a6{has_gravity = 1; name = "UO45 Gateway"}) +"iP" = (/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("UO45","UO45R")},/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel,/area/awaycontent/a6{has_gravity = 1; name = "UO45 Gateway"}) "iQ" = (/obj/structure/table,/obj/machinery/recharger,/turf/simulated/floor/plasteel,/area/awaycontent/a6{has_gravity = 1; name = "UO45 Gateway"}) "iR" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0; tag = ""},/turf/simulated/floor/plasteel,/area/awaycontent/a6{has_gravity = 1; name = "UO45 Gateway"}) "iS" = (/obj/structure/grille,/obj/structure/window/full/reinforced,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor/plating,/area/awaycontent/a6{has_gravity = 1; name = "UO45 Gateway"}) -"iT" = (/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/awaycontent/a6{has_gravity = 1; name = "UO45 Gateway"}) +"iT" = (/obj/structure/closet/l3closet/scientist,/obj/effect/decal/warning_stripes/north,/turf/simulated/floor/plasteel,/area/awaycontent/a6{has_gravity = 1; name = "UO45 Gateway"}) "iU" = (/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers,/obj/structure/chair{tag = "icon-chair (WEST)"; icon_state = "chair"; dir = 8},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/awaycontent/a6{has_gravity = 1; name = "UO45 Gateway"}) "iV" = (/obj/machinery/atmospherics/unary/vent_pump{on = 1},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/structure/chair{tag = "icon-chair (WEST)"; icon_state = "chair"; dir = 8},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/awaycontent/a6{has_gravity = 1; name = "UO45 Gateway"}) "iW" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/wall,/area/awaycontent/a6{has_gravity = 1; name = "UO45 Gateway"}) @@ -474,7 +474,7 @@ "jf" = (/obj/machinery/disposal,/obj/structure/disposalpipe/trunk{dir = 4},/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{dir = 5; icon_state = "cafeteria"; tag = "icon-cafeteria (NORTHEAST)"},/area/awaycontent/a2{has_gravity = 1; name = "UO45 Crew Quarters"}) "jg" = (/obj/structure/closet/secure_closet{icon_state = "secure"; locked = 0; name = "kitchen Cabinet"; req_access_txt = "201"},/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/awaycontent/a2{has_gravity = 1; name = "UO45 Crew Quarters"}) "jh" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 4; on = 1},/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel,/area/awaycontent/a6{has_gravity = 1; name = "UO45 Gateway"}) -"ji" = (/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("UO45","UO45R")},/turf/simulated/floor/plasteel{dir = 8; icon_state = "floorgrime"; tag = "icon-floorgrime (WEST)"},/area/awaycontent/a6{has_gravity = 1; name = "UO45 Gateway"}) +"ji" = (/obj/structure/closet/l3closet/scientist,/obj/effect/decal/warning_stripes/northeast,/turf/simulated/floor/plasteel,/area/awaycontent/a6{has_gravity = 1; name = "UO45 Gateway"}) "jj" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor/plasteel,/area/awaycontent/a6{has_gravity = 1; name = "UO45 Gateway"}) "jk" = (/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/awaycontent/a6{has_gravity = 1; name = "UO45 Gateway"}) "jl" = (/obj/structure/grille,/obj/structure/window/full/reinforced,/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor/plating,/area/awaycontent/a6{has_gravity = 1; name = "UO45 Gateway"}) @@ -498,10 +498,10 @@ "jD" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/wall/rust,/area/awaycontent/a2{has_gravity = 1; name = "UO45 Crew Quarters"}) "jE" = (/obj/effect/landmark/burnturf,/turf/simulated/floor/plasteel,/area/awaycontent/a6{has_gravity = 1; name = "UO45 Gateway"}) "jF" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 9},/turf/simulated/wall/r_wall,/area/awaycontent/a1{has_gravity = 1; name = "UO45 Central Hall"}) -"jG" = (/obj/structure/closet/l3closet/scientist,/turf/simulated/floor/plasteel{dir = 5; icon_state = "warning"},/area/awaycontent/a6{has_gravity = 1; name = "UO45 Gateway"}) -"jH" = (/obj/structure/closet/l3closet/scientist,/turf/simulated/floor/plasteel{dir = 1; icon_state = "warning"},/area/awaycontent/a6{has_gravity = 1; name = "UO45 Gateway"}) +"jG" = (/obj/structure/closet/secure_closet{icon_broken = "secureresbroken"; icon_closed = "secureres"; icon_locked = "secureres1"; icon_off = "secureresoff"; icon_opened = "secureresopen"; icon_state = "secureres"; locked = 0; name = "scientist's locker"; req_access_txt = "201"},/obj/item/tank/air,/obj/item/clothing/mask/gas,/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel{icon_state = "white"},/area/awaycontent/a5{has_gravity = 1; name = "UO45 Research"}) +"jH" = (/obj/machinery/light/small{dir = 1},/obj/structure/closet/secure_closet{icon_broken = "secureresbroken"; icon_closed = "secureres"; icon_locked = "secureres1"; icon_off = "secureresoff"; icon_opened = "secureresopen"; icon_state = "secureres"; locked = 0; name = "scientist's locker"; req_access_txt = "201"},/obj/item/clothing/gloves/color/latex,/turf/simulated/floor/plasteel{icon_state = "white"},/area/awaycontent/a5{has_gravity = 1; name = "UO45 Research"}) "jI" = (/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel,/area/awaycontent/a6{has_gravity = 1; name = "UO45 Gateway"}) -"jJ" = (/turf/simulated/floor/plasteel{dir = 8; icon_state = "floorgrime"; tag = "icon-floorgrime (WEST)"},/area/awaycontent/a6{has_gravity = 1; name = "UO45 Gateway"}) +"jJ" = (/obj/structure/sign/securearea{pixel_y = 32},/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel,/area/awaycontent/a6{has_gravity = 1; name = "UO45 Gateway"}) "jK" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/unary/vent_scrubber{dir = 4; on = 1; scrub_N2O = 0; scrub_Toxins = 0},/turf/simulated/floor/plasteel{icon_state = "white"},/area/awaycontent/a6{has_gravity = 1; name = "UO45 Gateway"}) "jL" = (/obj/machinery/alarm/monitor{dir = 8; frequency = 1439; locked = 0; pixel_x = 23; pixel_y = 0; req_access = null},/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 4; initialize_directions = 11; tag = "icon-manifold-r-f (EAST)"},/turf/simulated/floor/plasteel{icon_state = "white"},/area/awaycontent/a6{has_gravity = 1; name = "UO45 Gateway"}) "jM" = (/obj/machinery/light/small,/turf/simulated/floor/plating/airless/asteroid,/area/awaycontent/a2{has_gravity = 1; name = "UO45 Crew Quarters"}) @@ -530,8 +530,8 @@ "kj" = (/obj/item/twohanded/required/kirbyplants{layer = 5},/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel{icon_state = "white"},/area/awaycontent/a5{has_gravity = 1; name = "UO45 Research"}) "kk" = (/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel{dir = 1; icon_state = "whitepurplecorner"},/area/awaycontent/a5{has_gravity = 1; name = "UO45 Research"}) "kl" = (/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor/plasteel{dir = 1; icon_state = "whitepurple"},/area/awaycontent/a5{has_gravity = 1; name = "UO45 Research"}) -"km" = (/obj/machinery/light/small{dir = 1},/obj/structure/closet/secure_closet{icon_broken = "secureresbroken"; icon_closed = "secureres"; icon_locked = "secureres1"; icon_off = "secureresoff"; icon_opened = "secureresopen"; icon_state = "secureres"; locked = 0; name = "scientist's locker"; req_access_txt = "201"},/obj/item/clothing/gloves/color/latex,/turf/simulated/floor/plasteel,/area/awaycontent/a5{has_gravity = 1; name = "UO45 Research"}) -"kn" = (/obj/structure/closet/secure_closet{icon_broken = "secureresbroken"; icon_closed = "secureres"; icon_locked = "secureres1"; icon_off = "secureresoff"; icon_opened = "secureresopen"; icon_state = "secureres"; locked = 0; name = "scientist's locker"; req_access_txt = "201"},/obj/item/tank/air,/obj/item/clothing/mask/gas,/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel,/area/awaycontent/a5{has_gravity = 1; name = "UO45 Research"}) +"km" = (/obj/structure/dispenser/oxygen,/obj/effect/decal/cleanable/dirt,/obj/effect/decal/warning_stripes/north,/turf/simulated/floor/plasteel,/area/awaycontent/a6{has_gravity = 1; name = "UO45 Gateway"}) +"kn" = (/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/awaycontent/a6{has_gravity = 1; name = "UO45 Gateway"}) "ko" = (/obj/machinery/light{dir = 8},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel,/area/awaycontent/a2{has_gravity = 1; name = "UO45 Crew Quarters"}) "kp" = (/obj/machinery/alarm/monitor{frequency = 1439; locked = 0; pixel_y = 23; req_access = null},/turf/simulated/floor/plasteel,/area/awaycontent/a2{has_gravity = 1; name = "UO45 Crew Quarters"}) "kq" = (/obj/machinery/door/firedoor,/obj/machinery/door/airlock/public/glass{name = "Diner"},/turf/simulated/floor/plasteel,/area/awaycontent/a2{has_gravity = 1; name = "UO45 Crew Quarters"}) @@ -544,10 +544,10 @@ "kx" = (/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/awaycontent/a1{has_gravity = 1; name = "UO45 Central Hall"}) "ky" = (/obj/structure/closet/l3closet/general,/turf/simulated/floor/plating,/area/awaycontent/a1{has_gravity = 1; name = "UO45 Central Hall"}) "kz" = (/obj/structure/table,/obj/item/storage/belt/utility,/obj/item/clothing/head/welding,/obj/structure/sign/biohazard{pixel_x = 0; pixel_y = 32},/obj/item/assembly/prox_sensor,/obj/item/assembly/prox_sensor,/turf/simulated/floor/plasteel{dir = 4; icon_state = "warndark"; tag = "icon-warndark (EAST)"},/area/awaycontent/a6{has_gravity = 1; name = "UO45 Gateway"}) -"kA" = (/obj/structure/sign/securearea{pixel_y = 32},/turf/simulated/floor/plasteel{dir = 8; icon_state = "floorgrime"; tag = "icon-floorgrime (WEST)"},/area/awaycontent/a6{has_gravity = 1; name = "UO45 Gateway"}) -"kB" = (/obj/structure/dispenser/oxygen,/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel{dir = 1; icon_state = "warning"},/area/awaycontent/a6{has_gravity = 1; name = "UO45 Gateway"}) -"kC" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/light/small{dir = 4},/turf/simulated/floor/plasteel{dir = 1; icon_state = "warning"},/area/awaycontent/a6{has_gravity = 1; name = "UO45 Gateway"}) -"kD" = (/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/awaycontent/a6{has_gravity = 1; name = "UO45 Gateway"}) +"kA" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/light/small{dir = 4},/obj/effect/decal/warning_stripes/north,/turf/simulated/floor/plasteel,/area/awaycontent/a6{has_gravity = 1; name = "UO45 Gateway"}) +"kB" = (/obj/machinery/door/firedoor,/obj/machinery/door/poddoor/preopen{id_tag = "UO45_biohazard"; name = "biohazard containment door"},/obj/effect/decal/warning_stripes/yellow,/turf/simulated/floor/plasteel{icon_state = "white"},/area/awaycontent/a5{has_gravity = 1; name = "UO45 Research"}) +"kC" = (/obj/structure/chair{tag = "icon-chair (WEST)"; icon_state = "chair"; dir = 8},/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel,/area/awaycontent/a2{has_gravity = 1; name = "UO45 Crew Quarters"}) +"kD" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/portable_atmospherics/scrubber,/obj/structure/window/basic{tag = "icon-window (EAST)"; icon_state = "window"; dir = 4},/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel{icon_state = "white"},/area/awaycontent/a5{has_gravity = 1; name = "UO45 Research"}) "kE" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/light/small{dir = 8},/obj/structure/sign/securearea{pixel_x = -32},/turf/simulated/floor/plasteel{icon_state = "white"},/area/awaycontent/a6{has_gravity = 1; name = "UO45 Gateway"}) "kF" = (/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 = "201"},/turf/simulated/floor/plasteel{icon_state = "white"},/area/awaycontent/a6{has_gravity = 1; name = "UO45 Gateway"}) "kG" = (/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers,/turf/simulated/floor/plasteel{icon_state = "white"},/area/awaycontent/a6{has_gravity = 1; name = "UO45 Gateway"}) @@ -569,7 +569,7 @@ "kW" = (/obj/structure/extinguisher_cabinet{pixel_x = 0; pixel_y = 30},/turf/simulated/floor/plasteel{tag = "icon-whitepurplecorner (EAST)"; icon_state = "whitepurplecorner"; dir = 4},/area/awaycontent/a5{has_gravity = 1; name = "UO45 Research"}) "kX" = (/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel{tag = "icon-whitepurplecorner (EAST)"; icon_state = "whitepurplecorner"; dir = 4},/area/awaycontent/a5{has_gravity = 1; name = "UO45 Research"}) "kY" = (/turf/simulated/floor/plasteel{dir = 4; icon_state = "whitepurple"},/area/awaycontent/a5{has_gravity = 1; name = "UO45 Research"}) -"kZ" = (/obj/machinery/door/firedoor,/obj/machinery/door/poddoor/preopen{id_tag = "UO45_biohazard"; name = "biohazard containment door"},/turf/simulated/floor/plasteel{icon_state = "delivery"; name = "floor"},/area/awaycontent/a5{has_gravity = 1; name = "UO45 Research"}) +"kZ" = (/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,/turf/simulated/floor/plasteel{icon_state = "white"},/area/awaycontent/a5{has_gravity = 1; name = "UO45 Research"}) "la" = (/obj/machinery/shower{pixel_y = 15},/turf/simulated/floor/plasteel{dir = 1; icon_state = "warnwhite"},/area/awaycontent/a5{has_gravity = 1; name = "UO45 Research"}) "lb" = (/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/space) "lc" = (/obj/structure/sink{pixel_y = 25},/turf/simulated/floor/plasteel{dir = 5; icon_state = "warnwhite"},/area/awaycontent/a5{has_gravity = 1; name = "UO45 Research"}) @@ -614,7 +614,7 @@ "lP" = (/obj/machinery/door/airlock/research{name = "Research Division Access"; req_access_txt = "201"},/turf/simulated/floor/plasteel{icon_state = "white"},/area/awaycontent/a5{has_gravity = 1; name = "UO45 Research"}) "lQ" = (/obj/machinery/atmospherics/unary/vent_scrubber{dir = 2; on = 1; scrub_N2O = 0; scrub_Toxins = 0},/turf/simulated/floor/plasteel,/area/awaycontent/a2{has_gravity = 1; name = "UO45 Crew Quarters"}) "lR" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor/plasteel{dir = 8; icon_state = "purple"; tag = "icon-purple (WEST)"},/area/awaycontent/a2{has_gravity = 1; name = "UO45 Crew Quarters"}) -"lS" = (/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/awaycontent/a2{has_gravity = 1; name = "UO45 Crew Quarters"}) +"lS" = (/obj/structure/chair{dir = 1},/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel,/area/awaycontent/a2{has_gravity = 1; name = "UO45 Crew Quarters"}) "lT" = (/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/awaycontent/a2{has_gravity = 1; name = "UO45 Crew Quarters"}) "lU" = (/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/awaycontent/a2{has_gravity = 1; name = "UO45 Crew Quarters"}) "lV" = (/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/awaycontent/a2{has_gravity = 1; name = "UO45 Crew Quarters"}) @@ -628,8 +628,8 @@ "md" = (/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,/obj/effect/decal/cleanable/dirt,/obj/effect/landmark/damageturf,/turf/simulated/floor/plating,/area/awaycontent/a5{has_gravity = 1; name = "UO45 Research"}) "me" = (/turf/simulated/floor/plasteel{icon_state = "white"},/area/awaycontent/a6{has_gravity = 1; name = "UO45 Gateway"}) "mf" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 1; external_pressure_bound = 101.325; on = 1; pressure_checks = 1},/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel{icon_state = "white"},/area/awaycontent/a6{has_gravity = 1; name = "UO45 Gateway"}) -"mg" = (/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,/turf/simulated/floor/plasteel,/area/awaycontent/a5{has_gravity = 1; name = "UO45 Research"}) -"mh" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/portable_atmospherics/scrubber,/obj/structure/window/basic{tag = "icon-window (EAST)"; icon_state = "window"; dir = 4},/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel,/area/awaycontent/a5{has_gravity = 1; name = "UO45 Research"}) +"mg" = (/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/awaycontent/a2{has_gravity = 1; name = "UO45 Crew Quarters"}) +"mh" = (/obj/machinery/light/small{dir = 8},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel,/area/awaycontent/a2{has_gravity = 1; name = "UO45 Crew Quarters"}) "mi" = (/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/door/airlock/command{name = "Research Director's Office"; req_access_txt = "201"},/turf/simulated/floor/plasteel{dir = 5; icon_state = "cafeteria"; tag = "icon-cafeteria (NORTHEAST)"},/area/awaycontent/a5{has_gravity = 1; name = "UO45 Research"}) "mj" = (/obj/structure/grille,/obj/structure/window/full/reinforced,/obj/machinery/door/poddoor/shutters/preopen{id_tag = "UO45_rdprivacy"; name = "privacy shutters"},/turf/simulated/floor/plating,/area/awaycontent/a5{has_gravity = 1; name = "UO45 Research"}) "mk" = (/obj/structure/grille,/obj/structure/window/full/reinforced,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/door/poddoor/shutters/preopen{id_tag = "UO45_rdprivacy"; name = "privacy shutters"},/turf/simulated/floor/plating,/area/awaycontent/a5{has_gravity = 1; name = "UO45 Research"}) @@ -638,8 +638,8 @@ "mn" = (/obj/structure/closet/firecloset,/turf/simulated/floor/plasteel{dir = 10; icon_state = "warnwhite"},/area/awaycontent/a5{has_gravity = 1; name = "UO45 Research"}) "mo" = (/obj/structure/closet/emcloset,/turf/simulated/floor/plasteel{dir = 6; icon_state = "warnwhite"},/area/awaycontent/a5{has_gravity = 1; name = "UO45 Research"}) "mp" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/structure/sign/securearea{pixel_x = -32; pixel_y = 0},/turf/simulated/floor/plasteel{dir = 1; icon_state = "purplecorner"; tag = "icon-purplecorner (NORTH)"},/area/awaycontent/a2{has_gravity = 1; name = "UO45 Crew Quarters"}) -"mq" = (/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/awaycontent/a2{has_gravity = 1; name = "UO45 Crew Quarters"}) -"mr" = (/obj/structure/chair{dir = 1},/turf/simulated/floor/plasteel{dir = 8; icon_state = "floorgrime"; tag = "icon-floorgrime (WEST)"},/area/awaycontent/a2{has_gravity = 1; name = "UO45 Crew Quarters"}) +"mq" = (/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,/turf/simulated/floor/plasteel,/area/awaycontent/a2{has_gravity = 1; name = "UO45 Crew Quarters"}) +"mr" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel,/area/awaycontent/a2{has_gravity = 1; name = "UO45 Crew Quarters"}) "ms" = (/obj/structure/table/wood,/obj/machinery/newscaster{pixel_x = 0; pixel_y = 32},/turf/simulated/floor/carpet,/area/awaycontent/a2{has_gravity = 1; name = "UO45 Crew Quarters"}) "mt" = (/obj/structure/bed,/obj/item/bedsheet,/turf/simulated/floor/carpet,/area/awaycontent/a2{has_gravity = 1; name = "UO45 Crew Quarters"}) "mu" = (/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/awaycontent/a2{has_gravity = 1; name = "UO45 Crew Quarters"}) @@ -647,7 +647,7 @@ "mw" = (/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 = "201"},/obj/item/clothing/under/pj/red,/turf/simulated/floor/carpet,/area/awaycontent/a2{has_gravity = 1; name = "UO45 Crew Quarters"}) "mx" = (/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},/turf/simulated/floor/carpet,/area/awaycontent/a2{has_gravity = 1; name = "UO45 Crew Quarters"}) "my" = (/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/awaycontent/a2{has_gravity = 1; name = "UO45 Crew Quarters"}) -"mz" = (/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/awaycontent/a2{has_gravity = 1; name = "UO45 Crew Quarters"}) +"mz" = (/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/awaycontent/a2{has_gravity = 1; name = "UO45 Crew Quarters"}) "mA" = (/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plating,/area/awaycontent/a3{has_gravity = 1; name = "UO45 Engineering"}) "mB" = (/obj/structure/closet/crate,/obj/item/stack/sheet/metal{amount = 50},/obj/item/stack/sheet/glass{amount = 50},/obj/item/stack/rods{amount = 50},/turf/simulated/floor/plating,/area/awaycontent/a3{has_gravity = 1; name = "UO45 Engineering"}) "mC" = (/obj/structure/table,/obj/item/hand_labeler,/obj/item/flashlight,/obj/item/flashlight,/obj/item/flashlight,/turf/simulated/floor/plating,/area/awaycontent/a6{has_gravity = 1; name = "UO45 Gateway"}) @@ -680,7 +680,7 @@ "nd" = (/obj/structure/table/wood,/turf/simulated/floor/plasteel{dir = 1; icon_state = "neutral"},/area/awaycontent/a2{has_gravity = 1; name = "UO45 Crew Quarters"}) "ne" = (/obj/structure/chair/comfy/black{tag = "icon-comfychair (EAST)"; icon_state = "comfychair"; dir = 4},/turf/simulated/floor/plasteel{dir = 1; icon_state = "neutral"},/area/awaycontent/a2{has_gravity = 1; name = "UO45 Crew Quarters"}) "nf" = (/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/awaycontent/a2{has_gravity = 1; name = "UO45 Crew Quarters"}) -"ng" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor/plasteel{dir = 8; icon_state = "floorgrime"; tag = "icon-floorgrime (WEST)"},/area/awaycontent/a2{has_gravity = 1; name = "UO45 Crew Quarters"}) +"ng" = (/obj/machinery/atmospherics/pipe/simple/visible/cyan{dir = 10; initialize_directions = 10},/obj/machinery/portable_atmospherics/scrubber,/obj/effect/decal/warning_stripes/yellow/hollow,/turf/simulated/floor/plasteel,/area/awaycontent/a3{has_gravity = 1; name = "UO45 Engineering"}) "nh" = (/obj/structure/table,/obj/item/cartridge/signal/toxins,/obj/item/cartridge/signal/toxins{pixel_x = -4; pixel_y = 2},/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel{dir = 5; icon_state = "cafeteria"; tag = "icon-cafeteria (NORTHEAST)"},/area/awaycontent/a5{has_gravity = 1; name = "UO45 Research"}) "ni" = (/obj/machinery/door/poddoor{id_tag = "UO45_Secure Storage"; name = "secure storage"},/turf/simulated/floor/plating,/area/awaycontent/a3{has_gravity = 1; name = "UO45 Engineering"}) "nj" = (/turf/simulated/wall/r_wall/rust,/area/awaycontent/a3{has_gravity = 1; name = "UO45 Engineering"}) @@ -738,7 +738,7 @@ "oj" = (/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/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel{dir = 4; icon_state = "neutralcorner"},/area/awaycontent/a2{has_gravity = 1; name = "UO45 Crew Quarters"}) "ok" = (/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/awaycontent/a2{has_gravity = 1; name = "UO45 Crew Quarters"}) "ol" = (/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/awaycontent/a2{has_gravity = 1; name = "UO45 Crew Quarters"}) -"om" = (/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},/turf/simulated/floor/plasteel{dir = 8; icon_state = "floorgrime"; tag = "icon-floorgrime (WEST)"},/area/awaycontent/a2{has_gravity = 1; name = "UO45 Crew Quarters"}) +"om" = (/obj/machinery/portable_atmospherics/canister/air,/obj/effect/decal/warning_stripes/yellow/hollow,/turf/simulated/floor/plasteel,/area/awaycontent/a3{has_gravity = 1; name = "UO45 Engineering"}) "on" = (/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/awaycontent/a2{has_gravity = 1; name = "UO45 Crew Quarters"}) "oo" = (/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/awaycontent/a2{has_gravity = 1; name = "UO45 Crew Quarters"}) "op" = (/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 = "Dormitories"},/turf/simulated/floor/plasteel,/area/awaycontent/a2{has_gravity = 1; name = "UO45 Crew Quarters"}) @@ -765,7 +765,7 @@ "oK" = (/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/awaycontent/a2{has_gravity = 1; name = "UO45 Crew Quarters"}) "oL" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor/plasteel{icon_state = "neutral"},/area/awaycontent/a2{has_gravity = 1; name = "UO45 Crew Quarters"}) "oM" = (/obj/machinery/atmospherics/pipe/manifold/hidden/supply,/turf/simulated/floor/plasteel{dir = 2; icon_state = "neutralcorner"},/area/awaycontent/a2{has_gravity = 1; name = "UO45 Crew Quarters"}) -"oN" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor/plasteel{dir = 8; icon_state = "floorgrime"; tag = "icon-floorgrime (WEST)"},/area/awaycontent/a2{has_gravity = 1; name = "UO45 Crew Quarters"}) +"oN" = (/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/awaycontent/a2{has_gravity = 1; name = "UO45 Crew Quarters"}) "oO" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor/plasteel{dir = 8; icon_state = "neutralcorner"},/area/awaycontent/a2{has_gravity = 1; name = "UO45 Crew Quarters"}) "oP" = (/obj/machinery/light/small,/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor/plasteel{icon_state = "neutral"},/area/awaycontent/a2{has_gravity = 1; name = "UO45 Crew Quarters"}) "oQ" = (/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 9},/turf/simulated/floor/plasteel{dir = 6; icon_state = "neutral"},/area/awaycontent/a2{has_gravity = 1; name = "UO45 Crew Quarters"}) @@ -787,12 +787,12 @@ "pg" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/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 = "UO45_biohazard"; name = "Biohazard Door Control"; pixel_x = 0; pixel_y = -24; req_access_txt = "201"},/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel{icon_state = "red"},/area/awaycontent/a5{has_gravity = 1; name = "UO45 Research"}) "ph" = (/obj/structure/filingcabinet,/turf/simulated/floor/plasteel{dir = 10; icon_state = "red"},/area/awaycontent/a5{has_gravity = 1; name = "UO45 Research"}) "pi" = (/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 = "201"},/obj/machinery/atmospherics/unary/vent_scrubber{dir = 2; on = 1; scrub_N2O = 0; scrub_Toxins = 0},/obj/item/restraints/handcuffs,/obj/item/flash,/obj/item/reagent_containers/spray/pepper,/turf/simulated/floor/plasteel{dir = 6; icon_state = "red"},/area/awaycontent/a5{has_gravity = 1; name = "UO45 Research"}) -"pj" = (/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/awaycontent/a3{has_gravity = 1; name = "UO45 Engineering"}) +"pj" = (/obj/machinery/light/small{dir = 8},/obj/machinery/firealarm{dir = 8; pixel_x = -24},/obj/effect/landmark/burnturf,/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel,/area/awaycontent/a3{has_gravity = 1; name = "UO45 Engineering"}) "pk" = (/turf/simulated/floor/plasteel{dir = 8; icon_state = "neutralcorner"},/area/awaycontent/a2{has_gravity = 1; name = "UO45 Crew Quarters"}) "pl" = (/obj/item/twohanded/required/kirbyplants{layer = 5},/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel{dir = 10; icon_state = "neutral"},/area/awaycontent/a2{has_gravity = 1; name = "UO45 Crew Quarters"}) "pm" = (/obj/machinery/light/small{dir = 4},/obj/machinery/firealarm{dir = 4; pixel_x = 24},/turf/simulated/floor/plasteel{dir = 4; icon_state = "neutral"},/area/awaycontent/a2{has_gravity = 1; name = "UO45 Crew Quarters"}) "pn" = (/obj/machinery/door/airlock{name = "Unisex Restrooms"; req_access_txt = "0"},/turf/simulated/floor/plasteel{icon_state = "freezerfloor"},/area/awaycontent/a2{has_gravity = 1; name = "UO45 Crew Quarters"}) -"po" = (/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/awaycontent/a2{has_gravity = 1; name = "UO45 Crew Quarters"}) +"po" = (/obj/machinery/atmospherics/unary/vent_pump{on = 1},/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel,/area/awaycontent/a3{has_gravity = 1; name = "UO45 Engineering"}) "pp" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/door/airlock{id_tag = "awaydorm4"; name = "Dorm 4"},/turf/simulated/floor/plasteel,/area/awaycontent/a2{has_gravity = 1; name = "UO45 Crew Quarters"}) "pq" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/wall/rust,/area/awaycontent/a2{has_gravity = 1; name = "UO45 Crew Quarters"}) "pr" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/door/airlock{id_tag = "awaydorm6"; name = "Dorm 6"},/turf/simulated/floor/plasteel,/area/awaycontent/a2{has_gravity = 1; name = "UO45 Crew Quarters"}) @@ -866,9 +866,9 @@ "qH" = (/obj/structure/closet/secure_closet{icon_broken = "secureengbroken"; icon_closed = "secureeng"; icon_locked = "secureeng1"; icon_off = "secureengoff"; icon_opened = "secureengopen"; icon_state = "secureeng1"; locked = 1; name = "engineer's locker"; req_access_txt = "201"},/obj/structure/window/reinforced{dir = 8},/obj/item/storage/backpack/satchel_eng,/obj/item/clothing/suit/storage/hazardvest,/obj/item/clothing/mask/gas,/obj/item/clothing/glasses/meson,/obj/machinery/atmospherics/pipe/simple/visible/purple{dir = 4},/turf/simulated/floor/plasteel{dir = 1; icon_state = "yellow"},/area/awaycontent/a3{has_gravity = 1; name = "UO45 Engineering"}) "qI" = (/obj/machinery/computer/general_air_control/large_tank_control{frequency = 1443; input_tag = "UO45_air_in"; name = "Mixed Air Supply Control"; output_tag = "UO45_air_out"; pressure_setting = 2000; sensors = list("UO45_air_sensor" = "Tank")},/obj/machinery/atmospherics/pipe/simple/visible/cyan,/turf/simulated/floor/plasteel{dir = 9; icon_state = "arrival"; tag = "icon-arrival (NORTHWEST)"},/area/awaycontent/a3{has_gravity = 1; name = "UO45 Engineering"}) "qJ" = (/obj/machinery/light{dir = 1},/obj/machinery/camera{c_tag = "Atmospherics"; dir = 2; network = list("UO45")},/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/atmospherics/pipe/simple/visible/purple{dir = 10},/turf/simulated/floor/plasteel{dir = 1; icon_state = "yellowcorner"},/area/awaycontent/a3{has_gravity = 1; name = "UO45 Engineering"}) -"qK" = (/obj/machinery/atmospherics/pipe/simple/visible/cyan{dir = 10; initialize_directions = 10},/obj/machinery/portable_atmospherics/scrubber,/turf/simulated/floor/plasteel{dir = 2; icon_state = "bot"},/area/awaycontent/a3{has_gravity = 1; name = "UO45 Engineering"}) +"qK" = (/obj/machinery/atmospherics/pipe/simple/visible/cyan{dir = 9},/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel,/area/awaycontent/a3{has_gravity = 1; name = "UO45 Engineering"}) "qL" = (/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/awaycontent/a3{has_gravity = 1; name = "UO45 Engineering"}) -"qM" = (/obj/machinery/portable_atmospherics/canister/air,/turf/simulated/floor/plasteel{dir = 2; icon_state = "bot"},/area/awaycontent/a3{has_gravity = 1; name = "UO45 Engineering"}) +"qM" = (/obj/machinery/atmospherics/pipe/simple/visible/cyan,/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel,/area/awaycontent/a3{has_gravity = 1; name = "UO45 Engineering"}) "qN" = (/obj/machinery/atmospherics/pipe/simple/visible{dir = 4},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/awaycontent/a5{has_gravity = 1; name = "UO45 Research"}) "qO" = (/obj/machinery/door/airlock/command/glass{name = "Server Room"; req_access_txt = "201"},/obj/machinery/atmospherics/pipe/simple/visible{dir = 4},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/awaycontent/a5{has_gravity = 1; name = "UO45 Research"}) "qP" = (/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/awaycontent/a5{has_gravity = 1; name = "UO45 Research"}) @@ -884,8 +884,8 @@ "qZ" = (/obj/structure/table/wood,/obj/machinery/newscaster{pixel_x = 0; pixel_y = -28},/obj/item/pen,/turf/simulated/floor/carpet,/area/awaycontent/a2{has_gravity = 1; name = "UO45 Crew Quarters"}) "ra" = (/obj/structure/chair/wood/normal{dir = 8},/turf/simulated/floor/carpet,/area/awaycontent/a2{has_gravity = 1; name = "UO45 Crew Quarters"}) "rb" = (/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/awaycontent/a2{has_gravity = 1; name = "UO45 Crew Quarters"}) -"rc" = (/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/awaycontent/a2{has_gravity = 1; name = "UO45 Crew Quarters"}) -"rd" = (/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/awaycontent/a3{has_gravity = 1; name = "UO45 Engineering"}) +"rc" = (/obj/machinery/atmospherics/pipe/simple/visible/cyan,/obj/machinery/portable_atmospherics/scrubber,/obj/effect/decal/warning_stripes/yellow/hollow,/turf/simulated/floor/plasteel,/area/awaycontent/a3{has_gravity = 1; name = "UO45 Engineering"}) +"rd" = (/obj/machinery/atmospherics/binary/pump{dir = 4; name = "Waste In"; on = 1},/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel,/area/awaycontent/a3{has_gravity = 1; name = "UO45 Engineering"}) "re" = (/obj/structure/disposalpipe/segment,/turf/simulated/floor/plating,/area/awaycontent/a2{has_gravity = 1; name = "UO45 Crew Quarters"}) "rf" = (/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/awaycontent/a5{has_gravity = 1; name = "UO45 Research"}) "rg" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/structure/extinguisher_cabinet{pixel_x = -25; pixel_y = 0},/turf/simulated/floor/plasteel,/area/awaycontent/a2{has_gravity = 1; name = "UO45 Crew Quarters"}) @@ -895,15 +895,15 @@ "rk" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 6},/obj/structure/table,/obj/item/storage/box,/obj/item/storage/box,/obj/structure/reagent_dispensers/peppertank{pixel_x = 0; pixel_y = 30},/turf/simulated/floor/plasteel{dir = 5; icon_state = "red"},/area/awaycontent/a3{has_gravity = 1; name = "UO45 Engineering"}) "rl" = (/turf/simulated/floor/plasteel,/area/awaycontent/a3{has_gravity = 1; name = "UO45 Engineering"}) "rm" = (/obj/machinery/light/small{dir = 1},/obj/structure/table,/obj/item/tank/emergency_oxygen{pixel_x = -8; pixel_y = 0},/obj/item/tank/emergency_oxygen{pixel_x = -8; pixel_y = 0},/obj/item/clothing/mask/breath{pixel_x = 4; pixel_y = 0},/obj/item/clothing/mask/breath{pixel_x = 4; pixel_y = 0},/obj/machinery/newscaster{pixel_y = 32},/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel{dir = 1; icon_state = "red"},/area/awaycontent/a3{has_gravity = 1; name = "UO45 Engineering"}) -"rn" = (/obj/machinery/atmospherics/pipe/simple/visible/cyan{dir = 9},/turf/simulated/floor/plasteel{dir = 8; icon_state = "floorgrime"; tag = "icon-floorgrime (WEST)"},/area/awaycontent/a3{has_gravity = 1; name = "UO45 Engineering"}) -"ro" = (/obj/machinery/atmospherics/pipe/simple/visible/cyan,/obj/machinery/portable_atmospherics/scrubber,/turf/simulated/floor/plasteel{dir = 2; icon_state = "bot"},/area/awaycontent/a3{has_gravity = 1; name = "UO45 Engineering"}) +"rn" = (/obj/machinery/atmospherics/binary/pump{dir = 1; name = "Unfiltered to Mix"; on = 1},/obj/structure/sign/nosmoking_2{pixel_x = 32},/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel,/area/awaycontent/a3{has_gravity = 1; name = "UO45 Engineering"}) +"ro" = (/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/awaycontent/a3{has_gravity = 1; name = "UO45 Engineering"}) "rp" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/wall/r_wall,/area/awaycontent/a3{has_gravity = 1; name = "UO45 Engineering"}) "rq" = (/obj/structure/cable{icon_state = "0-4"; d2 = 4},/obj/machinery/power/apc/noalarm{cell_type = 15000; dir = 8; locked = 1; name = "UO45 Engineering APC"; pixel_x = -25; pixel_y = 0; req_access = list(201); start_charge = 100},/obj/machinery/atmospherics/unary/vent_pump{dir = 8; on = 1},/turf/simulated/floor/plasteel,/area/awaycontent/a3{has_gravity = 1; name = "UO45 Engineering"}) "rr" = (/obj/machinery/atmospherics/binary/pump{dir = 8; name = "Air to Distro"; on = 1},/turf/simulated/floor/plasteel,/area/awaycontent/a3{has_gravity = 1; name = "UO45 Engineering"}) "rs" = (/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/awaycontent/a3{has_gravity = 1; name = "UO45 Engineering"}) "rt" = (/obj/machinery/atmospherics/pipe/simple/visible/cyan{dir = 4; level = 2},/turf/simulated/floor/plasteel,/area/awaycontent/a3{has_gravity = 1; name = "UO45 Engineering"}) "ru" = (/obj/effect/decal/cleanable/dirt,/obj/machinery/atmospherics/pipe/simple/visible/cyan{dir = 4; level = 2},/turf/simulated/floor/plasteel,/area/awaycontent/a3{has_gravity = 1; name = "UO45 Engineering"}) -"rv" = (/obj/machinery/atmospherics/pipe/simple/visible/cyan,/turf/simulated/floor/plasteel{dir = 8; icon_state = "floorgrime"; tag = "icon-floorgrime (WEST)"},/area/awaycontent/a3{has_gravity = 1; name = "UO45 Engineering"}) +"rv" = (/obj/machinery/light,/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/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel,/area/awaycontent/a3{has_gravity = 1; name = "UO45 Engineering"}) "rw" = (/obj/machinery/atmospherics/pipe/simple/visible/cyan{dir = 4; level = 2},/obj/machinery/atmospherics/binary/pump{dir = 1; name = "Mix to Exterior"; on = 1},/turf/simulated/floor/plasteel,/area/awaycontent/a3{has_gravity = 1; name = "UO45 Engineering"}) "rx" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/effect/landmark/damageturf,/turf/simulated/floor/plating,/area/awaycontent/a5{has_gravity = 1; name = "UO45 Research"}) "ry" = (/obj/structure/table,/obj/item/folder/white,/obj/item/pen,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/awaycontent/a5{has_gravity = 1; name = "UO45 Research"}) @@ -937,7 +937,7 @@ "sa" = (/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,/area/awaycontent/a3{has_gravity = 1; name = "UO45 Engineering"}) "sb" = (/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/awaycontent/a3{has_gravity = 1; name = "UO45 Engineering"}) "sc" = (/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{dir = 4},/turf/simulated/floor/plasteel,/area/awaycontent/a3{has_gravity = 1; name = "UO45 Engineering"}) -"sd" = (/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/awaycontent/a3{has_gravity = 1; name = "UO45 Engineering"}) +"sd" = (/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/awaycontent/a3{has_gravity = 1; name = "UO45 Engineering"}) "se" = (/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 = "UO45_EngineeringOffice"; name = "Privacy Shutters"},/obj/machinery/door/window/southleft{base_state = "left"; dir = 4; icon_state = "left"; name = "Engineering Reception"; req_access_txt = "201"},/obj/item/paper_bin{pixel_x = 1; pixel_y = 9},/obj/item/pen,/turf/simulated/floor/plasteel,/area/awaycontent/a3{has_gravity = 1; name = "UO45 Engineering"}) "sf" = (/obj/machinery/atmospherics/pipe/simple/visible/yellow{dir = 4},/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel{dir = 5; icon_state = "green"},/area/awaycontent/a3{has_gravity = 1; name = "UO45 Engineering"}) "sg" = (/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 1; initialize_directions = 14; tag = "icon-manifold-b-f (NORTH)"},/turf/simulated/floor/plasteel,/area/awaycontent/a3{has_gravity = 1; name = "UO45 Engineering"}) @@ -976,7 +976,7 @@ "sN" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor/plasteel,/area/awaycontent/a3{has_gravity = 1; name = "UO45 Engineering"}) "sO" = (/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 1; initialize_directions = 14; tag = "icon-manifold-r-f (NORTH)"},/obj/structure/table,/obj/item/book/manual/security_space_law,/turf/simulated/floor/plasteel{dir = 4; icon_state = "red"},/area/awaycontent/a3{has_gravity = 1; name = "UO45 Engineering"}) "sP" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0; tag = ""},/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 1; initialize_directions = 14; tag = "icon-manifold-r-f (NORTH)"},/turf/simulated/floor/plasteel,/area/awaycontent/a3{has_gravity = 1; name = "UO45 Engineering"}) -"sQ" = (/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/awaycontent/a3{has_gravity = 1; name = "UO45 Engineering"}) +"sQ" = (/obj/machinery/atmospherics/pipe/simple/visible/green{dir = 9},/turf/simulated/floor/plating,/area/awaycontent/a3{has_gravity = 1; name = "UO45 Engineering"}) "sR" = (/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 = "UO45_EngineeringOffice"; name = "Privacy Shutters"},/obj/machinery/door/window/southleft{base_state = "right"; dir = 4; icon_state = "right"; name = "Engineering Reception"; req_access_txt = "201"},/obj/item/folder/red,/turf/simulated/floor/plasteel,/area/awaycontent/a3{has_gravity = 1; name = "UO45 Engineering"}) "sS" = (/obj/machinery/computer/general_air_control/large_tank_control{frequency = 1441; input_tag = "UO45_waste_in"; name = "Gas Mix Tank Control"; output_tag = "UO45_waste_out"; sensors = list("UO45_waste_sensor" = "Tank")},/obj/machinery/atmospherics/pipe/simple/visible/green{dir = 6},/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel{dir = 6; icon_state = "green"},/area/awaycontent/a3{has_gravity = 1; name = "UO45 Engineering"}) "sT" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor/plasteel,/area/awaycontent/a3{has_gravity = 1; name = "UO45 Engineering"}) @@ -1012,7 +1012,7 @@ "tx" = (/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{icon_state = "yellow"},/area/awaycontent/a3{has_gravity = 1; name = "UO45 Engineering"}) "ty" = (/obj/machinery/computer/security{network = list("UO45")},/obj/machinery/door_control{desc = "A remote control-switch for the security privacy shutters."; id = "UO45_EngineeringOffice"; name = "Privacy Shutters"; pixel_x = -24; pixel_y = 6; req_access_txt = "201"},/turf/simulated/floor/plasteel{dir = 8; icon_state = "red"},/area/awaycontent/a3{has_gravity = 1; name = "UO45 Engineering"}) "tz" = (/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 8; initialize_directions = 7; tag = "icon-manifold-r-f (WEST)"},/obj/item/screwdriver{pixel_y = 10},/obj/item/radio/off,/turf/simulated/floor/plasteel{dir = 4; icon_state = "red"},/area/awaycontent/a3{has_gravity = 1; name = "UO45 Engineering"}) -"tA" = (/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/awaycontent/a3{has_gravity = 1; name = "UO45 Engineering"}) +"tA" = (/obj/structure/closet/firecloset,/obj/effect/decal/warning_stripes/northwest,/turf/simulated/floor/plating,/area/awaycontent/a5{has_gravity = 1; name = "UO45 Research"}) "tB" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 1; external_pressure_bound = 101.325; on = 1; pressure_checks = 1},/obj/effect/decal/cleanable/dirt,/obj/effect/landmark/burnturf,/turf/simulated/floor/plating,/area/awaycontent/a5{has_gravity = 1; name = "UO45 Research"}) "tC" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor/plasteel,/area/awaycontent/a3{has_gravity = 1; name = "UO45 Engineering"}) "tD" = (/obj/machinery/atmospherics/pipe/simple/visible/purple{dir = 6},/obj/machinery/atmospherics/unary/vent_scrubber{dir = 8; on = 1; scrub_N2O = 0; scrub_Toxins = 0},/turf/simulated/floor/plasteel,/area/awaycontent/a3{has_gravity = 1; name = "UO45 Engineering"}) @@ -1045,29 +1045,29 @@ "ue" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/meter,/turf/simulated/wall/r_wall,/area/awaycontent/a3{has_gravity = 1; name = "UO45 Engineering"}) "uf" = (/obj/machinery/door/firedoor,/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/machinery/door/airlock/engineering{name = "Engineering Foyer"; req_access_txt = "201"},/turf/simulated/floor/plasteel,/area/awaycontent/a3{has_gravity = 1; name = "UO45 Engineering"}) "ug" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor/plasteel{icon_state = "red"},/area/awaycontent/a3{has_gravity = 1; name = "UO45 Engineering"}) -"uh" = (/obj/machinery/atmospherics/unary/portables_connector{dir = 1},/obj/machinery/portable_atmospherics/canister/air,/turf/simulated/floor/plasteel{dir = 2; icon_state = "bot"},/area/awaycontent/a3{has_gravity = 1; name = "UO45 Engineering"}) +"uh" = (/obj/machinery/atmospherics/pipe/manifold/visible{dir = 8; initialize_directions = 11},/obj/effect/decal/warning_stripes/north,/turf/simulated/floor/plating,/area/awaycontent/a5{has_gravity = 1; name = "UO45 Research"}) "ui" = (/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/awaycontent/a3{has_gravity = 1; name = "UO45 Engineering"}) -"uj" = (/obj/machinery/light,/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},/turf/simulated/floor/plasteel{dir = 8; icon_state = "floorgrime"; tag = "icon-floorgrime (WEST)"},/area/awaycontent/a3{has_gravity = 1; name = "UO45 Engineering"}) +"uj" = (/obj/structure/table/reinforced,/obj/item/wrench,/obj/machinery/atmospherics/pipe/simple/visible{dir = 10},/obj/effect/decal/warning_stripes/northeast,/turf/simulated/floor/plating,/area/awaycontent/a5{has_gravity = 1; name = "UO45 Research"}) "uk" = (/obj/machinery/atmospherics/binary/pump{dir = 0; name = "Air to External"; on = 1},/turf/simulated/floor/plasteel,/area/awaycontent/a3{has_gravity = 1; name = "UO45 Engineering"}) "ul" = (/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/awaycontent/a3{has_gravity = 1; name = "UO45 Engineering"}) -"um" = (/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/awaycontent/a3{has_gravity = 1; name = "UO45 Engineering"}) +"um" = (/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/awaycontent/a3{has_gravity = 1; name = "UO45 Engineering"}) "un" = (/obj/machinery/atmospherics/pipe/simple/visible/green{dir = 4},/obj/machinery/computer/general_air_control/large_tank_control{frequency = 1441; input_tag = "UO45_n2_in"; name = "Nitrogen Supply Control"; output_tag = "UO45_n2_out"; sensors = list("UO45_n2_sensor" = "Tank")},/obj/machinery/atmospherics/pipe/simple/visible/cyan,/turf/simulated/floor/plasteel{dir = 6; icon_state = "red"},/area/awaycontent/a3{has_gravity = 1; name = "UO45 Engineering"}) "uo" = (/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 = "UO45_o2_in"; name = "Oxygen Supply Control"; output_tag = "UO45_o2_out"; sensors = list("UO45_o2_sensor" = "Tank")},/turf/simulated/floor/plasteel{dir = 6; icon_state = "blue"},/area/awaycontent/a3{has_gravity = 1; name = "UO45 Engineering"}) "up" = (/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/awaycontent/a3{has_gravity = 1; name = "UO45 Engineering"}) -"uq" = (/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/awaycontent/a3{has_gravity = 1; name = "UO45 Engineering"}) -"ur" = (/obj/machinery/atmospherics/pipe/manifold/visible{dir = 8; initialize_directions = 11},/turf/simulated/floor/plating{dir = 1; icon_state = "warnplate"},/area/awaycontent/a5{has_gravity = 1; name = "UO45 Research"}) -"us" = (/obj/structure/closet/firecloset,/turf/simulated/floor/plating{dir = 9; icon_state = "warnplate"},/area/awaycontent/a5{has_gravity = 1; name = "UO45 Research"}) -"ut" = (/obj/structure/table/reinforced,/obj/item/wrench,/obj/machinery/atmospherics/pipe/simple/visible{dir = 10},/turf/simulated/floor/plating{dir = 5; icon_state = "warnplate"},/area/awaycontent/a5{has_gravity = 1; name = "UO45 Research"}) +"uq" = (/obj/machinery/light/small{dir = 8},/obj/effect/decal/cleanable/dirt,/obj/effect/decal/warning_stripes/west,/turf/simulated/floor/plating,/area/awaycontent/a5{has_gravity = 1; name = "UO45 Research"}) +"ur" = (/obj/machinery/atmospherics/binary/valve{dir = 2},/obj/effect/decal/warning_stripes/east,/turf/simulated/floor/plating,/area/awaycontent/a5{has_gravity = 1; name = "UO45 Research"}) +"us" = (/obj/machinery/light{dir = 1},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/alarm/monitor{frequency = 1439; locked = 0; pixel_y = 23; req_access = null},/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel,/area/awaycontent/a3{has_gravity = 1; name = "UO45 Engineering"}) +"ut" = (/obj/machinery/door/firedoor,/obj/machinery/door/poddoor/preopen{id_tag = "UO45_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/awaycontent/a3{has_gravity = 1; name = "UO45 Engineering"}) "uu" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/effect/landmark/damageturf,/turf/simulated/floor/plating,/area/awaycontent/a2{has_gravity = 1; name = "UO45 Crew Quarters"}) "uv" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/computer/general_air_control{frequency = 1441; name = "Tank Monitor"; sensors = list("UO45_n2_sensor" = "Nitrogen", "UO45_o2_sensor" = "Oxygen", "UO45_waste_sensor" = "Gas Mix Tank")},/turf/simulated/floor/plasteel{dir = 9; icon_state = "caution"},/area/awaycontent/a3{has_gravity = 1; name = "UO45 Engineering"}) "uw" = (/turf/simulated/mineral/random/labormineral,/area/awaycontent/a5{has_gravity = 1; name = "UO45 Research"}) "ux" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/door/airlock/external,/turf/simulated/floor/plating,/area/awaycontent/a5{has_gravity = 1; name = "UO45 Research"}) "uy" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/wall,/area/awaycontent/a5{has_gravity = 1; name = "UO45 Research"}) -"uz" = (/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/awaycontent/a3{has_gravity = 1; name = "UO45 Engineering"}) +"uz" = (/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 = "UO45_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/awaycontent/a3{has_gravity = 1; name = "UO45 Engineering"}) "uA" = (/obj/machinery/door/airlock/maintenance{req_access_txt = "0"; req_one_access_txt = "0"},/turf/simulated/floor/plating,/area/awaycontent/a2{has_gravity = 1; name = "UO45 Crew Quarters"}) "uB" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/plasteel,/area/awaycontent/a3{has_gravity = 1; name = "UO45 Engineering"}) -"uC" = (/obj/machinery/light/small{dir = 8},/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plating{dir = 8; icon_state = "warnplate"},/area/awaycontent/a5{has_gravity = 1; name = "UO45 Research"}) -"uD" = (/obj/machinery/atmospherics/binary/valve{dir = 2},/turf/simulated/floor/plating{dir = 4; icon_state = "warnplate"},/area/awaycontent/a5{has_gravity = 1; name = "UO45 Research"}) +"uC" = (/obj/machinery/door/firedoor,/obj/structure/sign/securearea{pixel_y = 32},/obj/machinery/door/poddoor/preopen{id_tag = "UO45_Engineering"; name = "engineering security door"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/effect/decal/warning_stripes/yellow,/turf/simulated/floor/plasteel,/area/awaycontent/a3{has_gravity = 1; name = "UO45 Engineering"}) +"uD" = (/obj/machinery/portable_atmospherics/scrubber,/obj/effect/decal/warning_stripes/southwest,/turf/simulated/floor/plating,/area/awaycontent/a5{has_gravity = 1; name = "UO45 Research"}) "uE" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0; tag = ""},/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 8; initialize_directions = 7; tag = "icon-manifold-r-f (WEST)"},/turf/simulated/floor/plasteel,/area/awaycontent/a3{has_gravity = 1; name = "UO45 Engineering"}) "uF" = (/turf/simulated/wall,/area/awaycontent/a3{has_gravity = 1; name = "UO45 Engineering"}) "uG" = (/obj/machinery/door/airlock/security/glass{name = "Security Office"; req_access_txt = "201"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor/plasteel,/area/awaycontent/a3{has_gravity = 1; name = "UO45 Engineering"}) @@ -1076,28 +1076,30 @@ "uJ" = (/obj/structure/grille,/obj/structure/window/full/reinforced,/obj/machinery/meter{layer = 3.3},/obj/machinery/atmospherics/pipe/simple/visible/green,/turf/simulated/floor/plating,/area/awaycontent/a3{has_gravity = 1; name = "UO45 Engineering"}) "uK" = (/obj/structure/grille,/obj/structure/window/full/reinforced,/obj/machinery/meter{layer = 3.3},/obj/machinery/atmospherics/pipe/simple/visible/cyan,/turf/simulated/floor/plating,/area/awaycontent/a3{has_gravity = 1; name = "UO45 Engineering"}) "uL" = (/obj/machinery/atmospherics/binary/valve{dir = 2},/turf/simulated/floor/plating,/area/awaycontent/a5{has_gravity = 1; name = "UO45 Research"}) -"uM" = (/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/awaycontent/a4{has_gravity = 1; name = "UO45 Mining"}) -"uN" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/firealarm{dir = 4; pixel_x = 24},/obj/structure/closet/crate,/obj/item/stack/sheet/mineral/plasma{amount = 6},/obj/effect/landmark/burnturf,/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/awaycontent/a4{has_gravity = 1; name = "UO45 Mining"}) -"uO" = (/obj/machinery/atmospherics/unary/vent_scrubber{dir = 1; on = 1; scrub_N2O = 0; scrub_Toxins = 0},/obj/effect/landmark/burnturf,/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/awaycontent/a4{has_gravity = 1; name = "UO45 Mining"}) +"uM" = (/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/awaycontent/a5{has_gravity = 1; name = "UO45 Research"}) +"uN" = (/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/awaycontent/a5{has_gravity = 1; name = "UO45 Research"}) +"uO" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 9},/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel,/area/awaycontent/a3{has_gravity = 1; name = "UO45 Engineering"}) "uP" = (/obj/machinery/atmospherics/unary/vent_scrubber{dir = 1; on = 1; scrub_N2O = 0; scrub_Toxins = 0},/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plating,/area/awaycontent/a5{has_gravity = 1; name = "UO45 Research"}) +"uQ" = (/obj/machinery/light/small{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel,/area/awaycontent/a3{has_gravity = 1; name = "UO45 Engineering"}) "uR" = (/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plating,/area/awaycontent/a2{has_gravity = 1; name = "UO45 Crew Quarters"}) "uS" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor/plasteel{dir = 1; icon_state = "browncorner"},/area/awaycontent/a2{has_gravity = 1; name = "UO45 Crew Quarters"}) "uT" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/computer/general_air_control{frequency = 1443; level = 3; name = "Distribution and Waste Monitor"; sensors = list("UO45_mair_in_meter" = "Mixed Air In", "UO45_air_sensor" = "Mixed Air Supply Tank", "UO45_mair_out_meter" = "Mixed Air Out", "UO45_dloop_atm_meter" = "Distribution Loop", "UO45_wloop_atm_meter" = "Waste Loop")},/turf/simulated/floor/plasteel{dir = 8; icon_state = "caution"},/area/awaycontent/a3{has_gravity = 1; name = "UO45 Engineering"}) -"uU" = (/obj/machinery/light{dir = 1},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/alarm/monitor{frequency = 1439; locked = 0; pixel_y = 23; req_access = null},/turf/simulated/floor/plasteel{dir = 8; icon_state = "floorgrime"; tag = "icon-floorgrime (WEST)"},/area/awaycontent/a3{has_gravity = 1; name = "UO45 Engineering"}) +"uU" = (/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/awaycontent/a3{has_gravity = 1; name = "UO45 Engineering"}) "uV" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 5; level = 1},/obj/structure/chair/office/dark{dir = 8},/turf/simulated/floor/plasteel,/area/awaycontent/a3{has_gravity = 1; name = "UO45 Engineering"}) "uW" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/structure/sign/securearea{pixel_x = 32; pixel_y = 0},/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel{dir = 5; icon_state = "yellow"},/area/awaycontent/a3{has_gravity = 1; name = "UO45 Engineering"}) "uX" = (/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/awaycontent/a3{has_gravity = 1; name = "UO45 Engineering"}) -"uY" = (/obj/machinery/door/firedoor,/obj/machinery/door/poddoor/preopen{id_tag = "UO45_Engineering"; name = "engineering security door"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor/plasteel{icon_state = "delivery"; name = "floor"},/area/awaycontent/a3{has_gravity = 1; name = "UO45 Engineering"}) -"uZ" = (/obj/machinery/door/firedoor,/obj/structure/sign/securearea{pixel_y = 32},/obj/machinery/door/poddoor/preopen{id_tag = "UO45_Engineering"; name = "engineering security door"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor/plasteel{icon_state = "delivery"; name = "floor"},/area/awaycontent/a3{has_gravity = 1; name = "UO45 Engineering"}) +"uY" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel,/area/awaycontent/a3{has_gravity = 1; name = "UO45 Engineering"}) +"uZ" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/structure/sign/securearea{desc = "A warning sign which reads 'HIGH VOLTAGE'"; icon_state = "shock"; name = "HIGH VOLTAGE"; pixel_y = -32},/obj/machinery/vending/engivend{req_access_txt = "0"},/obj/machinery/camera{c_tag = "Engineering Foyer"; dir = 1; network = list("UO45")},/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel,/area/awaycontent/a3{has_gravity = 1; name = "UO45 Engineering"}) "va" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/wall,/area/awaycontent/a3{has_gravity = 1; name = "UO45 Engineering"}) -"vb" = (/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 = "UO45_Engineering"; name = "engineering security door"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 9},/turf/simulated/floor/plasteel{icon_state = "delivery"; name = "floor"},/area/awaycontent/a3{has_gravity = 1; name = "UO45 Engineering"}) -"vc" = (/obj/machinery/atmospherics/unary/portables_connector{dir = 1},/obj/machinery/portable_atmospherics/canister/air,/turf/simulated/floor/plating{icon_state = "warnplate"},/area/awaycontent/a5{has_gravity = 1; name = "UO45 Research"}) -"vd" = (/obj/machinery/portable_atmospherics/scrubber,/turf/simulated/floor/plating{dir = 10; icon_state = "warnplate"},/area/awaycontent/a5{has_gravity = 1; name = "UO45 Research"}) +"vb" = (/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/plating,/area/awaycontent/a3{has_gravity = 1; name = "UO45 Engineering"}) +"vc" = (/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/awaycontent/a3{has_gravity = 1; name = "UO45 Engineering"}) +"vd" = (/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/awaycontent/a3{has_gravity = 1; name = "UO45 Engineering"}) "ve" = (/obj/machinery/atmospherics/unary/outlet_injector/on{dir = 1; frequency = 1441; id = "UO45_n2_in"},/turf/simulated/floor/engine{name = "n2 floor"; nitrogen = 10000; oxygen = 0},/area/awaycontent/a3{has_gravity = 1; name = "UO45 Engineering"}) "vf" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 1; external_pressure_bound = 0; frequency = 1441; id_tag = "UO45_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/awaycontent/a3{has_gravity = 1; name = "UO45 Engineering"}) "vg" = (/obj/machinery/atmospherics/unary/outlet_injector/on{dir = 1; frequency = 1441; id = "UO45_o2_in"},/turf/simulated/floor/engine{name = "o2 floor"; nitrogen = 0; oxygen = 10000},/area/awaycontent/a3{has_gravity = 1; name = "UO45 Engineering"}) "vh" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 1; external_pressure_bound = 0; frequency = 1441; id_tag = "UO45_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 = 10000},/area/awaycontent/a3{has_gravity = 1; name = "UO45 Engineering"}) -"vi" = (/obj/machinery/atmospherics/unary/portables_connector{dir = 1},/obj/machinery/portable_atmospherics/canister/air,/turf/simulated/floor/plating{dir = 6; icon_state = "warnplate"},/area/awaycontent/a5{has_gravity = 1; name = "UO45 Research"}) +"vi" = (/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/awaycontent/a3{has_gravity = 1; name = "UO45 Engineering"}) +"vj" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/effect/landmark/burnturf,/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel,/area/awaycontent/a4{has_gravity = 1; name = "UO45 Mining"}) "vk" = (/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/awaycontent/a2{has_gravity = 1; name = "UO45 Crew Quarters"}) "vl" = (/obj/machinery/door/airlock/external,/turf/simulated/floor/plating,/area/awaycontent/a5{has_gravity = 1; name = "UO45 Research"}) "vm" = (/obj/machinery/atmospherics/pipe/manifold/hidden/purple{dir = 1},/turf/simulated/floor/plating/airless/asteroid,/area/awaycontent/a7{always_unpowered = 1; has_gravity = 1; name = "UO45 Caves"; power_environ = 0; power_equip = 0; power_light = 0; poweralm = 0}) @@ -1107,13 +1109,13 @@ "vq" = (/obj/structure/disposalpipe/segment{dir = 8; icon_state = "pipe-c"},/turf/simulated/floor/plating,/area/awaycontent/a2{has_gravity = 1; name = "UO45 Crew Quarters"}) "vr" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/computer/atmos_alert,/turf/simulated/floor/plasteel{dir = 8; icon_state = "caution"},/area/awaycontent/a3{has_gravity = 1; name = "UO45 Engineering"}) "vs" = (/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/awaycontent/a3{has_gravity = 1; name = "UO45 Engineering"}) -"vt" = (/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/awaycontent/a3{has_gravity = 1; name = "UO45 Engineering"}) +"vt" = (/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/awaycontent/a4{has_gravity = 1; name = "UO45 Mining"}) "vu" = (/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/awaycontent/a3{has_gravity = 1; name = "UO45 Engineering"}) "vv" = (/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/awaycontent/a3{has_gravity = 1; name = "UO45 Engineering"}) "vw" = (/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/awaycontent/a3{has_gravity = 1; name = "UO45 Engineering"}) "vx" = (/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/awaycontent/a3{has_gravity = 1; name = "UO45 Engineering"}) -"vy" = (/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/awaycontent/a3{has_gravity = 1; name = "UO45 Engineering"}) -"vz" = (/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/awaycontent/a3{has_gravity = 1; name = "UO45 Engineering"}) +"vy" = (/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/awaycontent/a4{has_gravity = 1; name = "UO45 Mining"}) +"vz" = (/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/awaycontent/a4{has_gravity = 1; name = "UO45 Mining"}) "vA" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/turf/simulated/floor/plasteel,/area/awaycontent/a3{has_gravity = 1; name = "UO45 Engineering"}) "vB" = (/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 = "201"},/turf/simulated/floor/plasteel,/area/awaycontent/a3{has_gravity = 1; name = "UO45 Engineering"}) "vC" = (/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/awaycontent/a3{has_gravity = 1; name = "UO45 Engineering"}) @@ -1130,22 +1132,23 @@ "vN" = (/obj/machinery/door/airlock/maintenance{name = "Mining Maintenance"; req_access_txt = "201"},/turf/simulated/floor/plating,/area/awaycontent/a4{has_gravity = 1; name = "UO45 Mining"}) "vO" = (/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 = "201"},/turf/simulated/floor/plasteel,/area/awaycontent/a4{has_gravity = 1; name = "UO45 Mining"}) "vP" = (/obj/machinery/door/firedoor,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/door/airlock/mining/glass{name = "Mining Foyer"; req_access_txt = "201"},/turf/simulated/floor/plasteel,/area/awaycontent/a4{has_gravity = 1; name = "UO45 Mining"}) -"vQ" = (/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/awaycontent/a3{has_gravity = 1; name = "UO45 Engineering"}) -"vR" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/structure/sign/securearea{desc = "A warning sign which reads 'HIGH VOLTAGE'"; icon_state = "shock"; name = "HIGH VOLTAGE"; pixel_y = -32},/obj/machinery/vending/engivend{req_access_txt = "0"},/obj/machinery/camera{c_tag = "Engineering Foyer"; dir = 1; network = list("UO45")},/turf/simulated/floor/plasteel{dir = 8; icon_state = "floorgrime"; tag = "icon-floorgrime (WEST)"},/area/awaycontent/a3{has_gravity = 1; name = "UO45 Engineering"}) +"vQ" = (/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/awaycontent/a4{has_gravity = 1; name = "UO45 Mining"}) +"vR" = (/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/awaycontent/a4{has_gravity = 1; name = "UO45 Mining"}) "vS" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor/plasteel,/area/awaycontent/a3{has_gravity = 1; name = "UO45 Engineering"}) "vT" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/structure/table,/obj/machinery/cell_charger,/obj/item/stock_parts/cell/high{charge = 100; maxcharge = 15000},/turf/simulated/floor/plasteel{dir = 6; icon_state = "yellow"},/area/awaycontent/a3{has_gravity = 1; name = "UO45 Engineering"}) -"vU" = (/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/awaycontent/a3{has_gravity = 1; name = "UO45 Engineering"}) +"vU" = (/obj/machinery/conveyor{dir = 2; id = "UO45_mining"},/turf/simulated/floor/plating,/area/awaycontent/a4{has_gravity = 1; name = "UO45 Mining"}) "vV" = (/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/awaycontent/a3{has_gravity = 1; name = "UO45 Engineering"}) -"vW" = (/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/awaycontent/a3{has_gravity = 1; name = "UO45 Engineering"}) -"vX" = (/obj/structure/closet/firecloset,/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 9},/turf/simulated/floor/plasteel{dir = 2; icon_state = "bot"},/area/awaycontent/a3{has_gravity = 1; name = "UO45 Engineering"}) +"vW" = (/obj/machinery/mineral/unloading_machine{dir = 1; icon_state = "unloader-corner"; input_dir = 4; output_dir = 8},/turf/simulated/floor/plating,/area/awaycontent/a4{has_gravity = 1; name = "UO45 Mining"}) +"vX" = (/obj/effect/decal/warning_stripes/arrow{dir = 8},/obj/effect/decal/warning_stripes/yellow/partial{icon_state = "3"; dir = 8},/turf/simulated/floor/plasteel,/area/awaycontent/a4{has_gravity = 1; name = "UO45 Mining"}) "vY" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/wall,/area/awaycontent/a3{has_gravity = 1; name = "UO45 Engineering"}) -"vZ" = (/obj/structure/closet/firecloset,/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor/plasteel{dir = 2; icon_state = "bot"},/area/awaycontent/a3{has_gravity = 1; name = "UO45 Engineering"}) -"wa" = (/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/awaycontent/a4{has_gravity = 1; name = "UO45 Mining"}) +"vZ" = (/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/awaycontent/a4{has_gravity = 1; name = "UO45 Mining"}) +"wa" = (/obj/machinery/conveyor{dir = 2; id = "UO45_mining"},/obj/structure/sign/nosmoking_2{pixel_x = -32},/turf/simulated/floor/plating,/area/awaycontent/a4{has_gravity = 1; name = "UO45 Mining"}) +"wb" = (/obj/machinery/suit_storage_unit/mining,/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel,/area/awaycontent/a4{has_gravity = 1; name = "UO45 Mining"}) "wc" = (/obj/machinery/light/small{dir = 1},/obj/structure/chair/wood/normal{dir = 8},/turf/simulated/floor/carpet,/area/awaycontent/a4{has_gravity = 1; name = "UO45 Mining"}) "wd" = (/obj/structure/table/wood,/turf/simulated/floor/carpet,/area/awaycontent/a4{has_gravity = 1; name = "UO45 Mining"}) "we" = (/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/awaycontent/a4{has_gravity = 1; name = "UO45 Mining"}) "wf" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/wall,/area/awaycontent/a4{has_gravity = 1; name = "UO45 Mining"}) -"wg" = (/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/awaycontent/a4{has_gravity = 1; name = "UO45 Mining"}) +"wg" = (/obj/machinery/mineral/processing_unit{dir = 1; output_dir = 2},/turf/simulated/floor/plating,/area/awaycontent/a4{has_gravity = 1; name = "UO45 Mining"}) "wh" = (/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 = "201"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor/plasteel{dir = 2; icon_state = "neutralfull"},/area/awaycontent/a3{has_gravity = 1; name = "UO45 Engineering"}) "wi" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0; tag = ""},/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 4; initialize_directions = 11; tag = "icon-manifold-r-f (EAST)"},/turf/simulated/floor/plasteel,/area/awaycontent/a4{has_gravity = 1; name = "UO45 Mining"}) "wj" = (/obj/machinery/disposal,/obj/structure/disposalpipe/trunk{dir = 4},/obj/structure/sign/deathsposal{desc = "A warning sign which reads 'DISPOSAL: LEADS TO EXTERIOR'"; name = "\improper DISPOSAL: LEADS TO EXTERIOR"; pixel_x = -32},/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel{dir = 2; icon_state = "neutralfull"},/area/awaycontent/a3{has_gravity = 1; name = "UO45 Engineering"}) @@ -1166,8 +1169,8 @@ "wy" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/unary/vent_scrubber{dir = 1; on = 1; scrub_N2O = 0; scrub_Toxins = 0},/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel{dir = 2; icon_state = "neutralfull"},/area/awaycontent/a3{has_gravity = 1; name = "UO45 Engineering"}) "wz" = (/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/awaycontent/a3{has_gravity = 1; name = "UO45 Engineering"}) "wA" = (/obj/structure/toilet{pixel_y = 8},/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel{icon_state = "freezerfloor"},/area/awaycontent/a3{has_gravity = 1; name = "UO45 Engineering"}) -"wB" = (/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/awaycontent/a4{has_gravity = 1; name = "UO45 Mining"}) -"wC" = (/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/awaycontent/a4{has_gravity = 1; name = "UO45 Mining"}) +"wB" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 4; on = 1},/obj/machinery/light{dir = 8},/obj/machinery/camera{c_tag = "Mining"; dir = 4; network = list("UO45")},/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel,/area/awaycontent/a4{has_gravity = 1; name = "UO45 Mining"}) +"wC" = (/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/awaycontent/a4{has_gravity = 1; name = "UO45 Mining"}) "wD" = (/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"; tag = ""},/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel,/area/awaycontent/a4{has_gravity = 1; name = "UO45 Mining"}) "wE" = (/obj/structure/filingcabinet/chestdrawer,/turf/simulated/floor/plasteel{dir = 2; icon_state = "neutralfull"},/area/awaycontent/a3{has_gravity = 1; name = "UO45 Engineering"}) "wF" = (/turf/simulated/floor/plasteel{dir = 2; icon_state = "neutralfull"},/area/awaycontent/a3{has_gravity = 1; name = "UO45 Engineering"}) @@ -1176,7 +1179,7 @@ "wI" = (/obj/machinery/door/airlock{name = "Private Restroom"},/turf/simulated/floor/plasteel{icon_state = "freezerfloor"},/area/awaycontent/a3{has_gravity = 1; name = "UO45 Engineering"}) "wJ" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0; tag = ""},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor/plasteel{dir = 2; icon_state = "neutralfull"},/area/awaycontent/a3{has_gravity = 1; name = "UO45 Engineering"}) "wK" = (/obj/structure/sink{dir = 4; icon_state = "sink"; pixel_x = 11; pixel_y = 0},/obj/machinery/light/small,/obj/structure/mirror{pixel_x = 28},/turf/simulated/floor/plasteel{icon_state = "freezerfloor"},/area/awaycontent/a3{has_gravity = 1; name = "UO45 Engineering"}) -"wL" = (/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/awaycontent/a4{has_gravity = 1; name = "UO45 Mining"}) +"wL" = (/obj/machinery/light/small{dir = 4},/obj/structure/table,/obj/item/storage/toolbox/mechanical{pixel_x = -2; pixel_y = -1},/turf/simulated/floor/plating,/area/awaycontent/a4{has_gravity = 1; name = "UO45 Mining"}) "wM" = (/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/awaycontent/a3{has_gravity = 1; name = "UO45 Engineering"}) "wN" = (/obj/structure/chair/wood/normal,/turf/simulated/floor/carpet,/area/awaycontent/a4{has_gravity = 1; name = "UO45 Mining"}) "wO" = (/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/awaycontent/a4{has_gravity = 1; name = "UO45 Mining"}) @@ -1186,7 +1189,7 @@ "wS" = (/obj/structure/table/reinforced,/obj/item/folder/yellow,/turf/simulated/floor/plasteel{dir = 2; icon_state = "neutralfull"},/area/awaycontent/a3{has_gravity = 1; name = "UO45 Engineering"}) "wT" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0; tag = ""},/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},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor/plasteel{dir = 2; icon_state = "neutralfull"},/area/awaycontent/a3{has_gravity = 1; name = "UO45 Engineering"}) "wU" = (/obj/structure/cable,/obj/machinery/power/apc/noalarm{cell_type = 15000; dir = 2; locked = 0; name = "UO45 Mining APC"; pixel_x = 0; pixel_y = -25; req_access = null; start_charge = 100},/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/awaycontent/a4{has_gravity = 1; name = "UO45 Mining"}) -"wV" = (/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/awaycontent/a4{has_gravity = 1; name = "UO45 Mining"}) +"wV" = (/obj/machinery/conveyor{dir = 2; id = "UO45_mining"},/obj/machinery/light/small{dir = 8},/turf/simulated/floor/plating,/area/awaycontent/a4{has_gravity = 1; name = "UO45 Mining"}) "wW" = (/obj/machinery/light/small,/obj/structure/bed,/obj/item/bedsheet,/turf/simulated/floor/carpet,/area/awaycontent/a4{has_gravity = 1; name = "UO45 Mining"}) "wX" = (/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 = "201"},/turf/simulated/floor/carpet,/area/awaycontent/a4{has_gravity = 1; name = "UO45 Mining"}) "wY" = (/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/awaycontent/a4{has_gravity = 1; name = "UO45 Mining"}) @@ -1201,50 +1204,41 @@ "xh" = (/obj/machinery/door/firedoor,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/door/airlock/mining{name = "Processing Area"; req_access_txt = "201"},/obj/effect/decal/cleanable/dirt,/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0; tag = ""},/turf/simulated/floor/plasteel,/area/awaycontent/a4{has_gravity = 1; name = "UO45 Mining"}) "xi" = (/obj/machinery/door/firedoor,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/door/airlock/mining{name = "Processing Area"; req_access_txt = "201"},/turf/simulated/floor/plasteel,/area/awaycontent/a4{has_gravity = 1; name = "UO45 Mining"}) "xj" = (/obj/machinery/light/small,/obj/machinery/computer/atmos_alert,/obj/machinery/door_control{desc = "A remote control-switch for the engineering security doors."; id = "UO45_Engineering"; name = "Engineering Lockdown"; pixel_x = -6; pixel_y = -24; req_access_txt = "201"},/obj/machinery/door_control{desc = "A remote control-switch for secure storage."; id = "UO45_Secure Storage"; name = "Engineering Secure Storage"; pixel_x = 6; pixel_y = -24; req_access_txt = "201"},/turf/simulated/floor/plasteel{dir = 2; icon_state = "neutralfull"},/area/awaycontent/a3{has_gravity = 1; name = "UO45 Engineering"}) -"xk" = (/obj/machinery/conveyor{dir = 2; id = "UO45_mining"},/turf/simulated/floor/plating{dir = 4; icon_state = "warnplate"},/area/awaycontent/a4{has_gravity = 1; name = "UO45 Mining"}) -"xl" = (/turf/simulated/floor/plasteel{dir = 8; icon_state = "loadingarea"},/area/awaycontent/a4{has_gravity = 1; name = "UO45 Mining"}) -"xm" = (/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/awaycontent/a4{has_gravity = 1; name = "UO45 Mining"}) -"xn" = (/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/awaycontent/a4{has_gravity = 1; name = "UO45 Mining"}) -"xo" = (/obj/machinery/conveyor{dir = 2; id = "UO45_mining"},/obj/structure/sign/nosmoking_2{pixel_x = -32},/turf/simulated/floor/plating{dir = 4; icon_state = "warnplate"},/area/awaycontent/a4{has_gravity = 1; name = "UO45 Mining"}) -"xp" = (/obj/machinery/suit_storage_unit/mining,/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/awaycontent/a4{has_gravity = 1; name = "UO45 Mining"}) +"xk" = (/obj/structure/dispenser/oxygen,/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel,/area/awaycontent/a4{has_gravity = 1; name = "UO45 Mining"}) +"xl" = (/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/awaycontent/a4{has_gravity = 1; name = "UO45 Mining"}) +"xm" = (/obj/machinery/mineral/stacking_machine{dir = 1; input_dir = 8; output_dir = 4},/turf/simulated/floor/plating,/area/awaycontent/a4{has_gravity = 1; name = "UO45 Mining"}) +"xn" = (/obj/effect/decal/warning_stripes/arrow{dir = 4},/obj/effect/decal/warning_stripes/yellow/partial{icon_state = "3"; dir = 4},/turf/simulated/floor/plasteel,/area/awaycontent/a4{has_gravity = 1; name = "UO45 Mining"}) +"xo" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel,/area/awaycontent/a4{has_gravity = 1; name = "UO45 Mining"}) +"xp" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/firealarm{dir = 4; pixel_x = 24},/obj/structure/closet/crate,/obj/item/stack/sheet/mineral/plasma{amount = 6},/obj/effect/landmark/burnturf,/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel,/area/awaycontent/a4{has_gravity = 1; name = "UO45 Mining"}) "xq" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor/plasteel,/area/awaycontent/a4{has_gravity = 1; name = "UO45 Mining"}) -"xr" = (/obj/machinery/mineral/processing_unit{dir = 1; output_dir = 2},/turf/simulated/floor/plating{dir = 5; icon_state = "warnplate"},/area/awaycontent/a4{has_gravity = 1; name = "UO45 Mining"}) +"xr" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/door/airlock/external{name = "Mining External Airlock"; req_access_txt = "201"},/obj/effect/decal/cleanable/dirt,/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel,/area/awaycontent/a4{has_gravity = 1; name = "UO45 Mining"}) "xs" = (/obj/machinery/conveyor_switch/oneway{id = "UO45_mining"; name = "mining conveyor"},/turf/simulated/floor/plasteel,/area/awaycontent/a4{has_gravity = 1; name = "UO45 Mining"}) "xt" = (/obj/structure/grille,/obj/structure/window/full/basic,/turf/simulated/floor/plating,/area/awaycontent/a4{has_gravity = 1; name = "UO45 Mining"}) "xu" = (/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/awaycontent/a4{has_gravity = 1; name = "UO45 Mining"}) -"xv" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 4; on = 1},/obj/machinery/light{dir = 8},/obj/machinery/camera{c_tag = "Mining"; dir = 4; network = list("UO45")},/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/awaycontent/a4{has_gravity = 1; name = "UO45 Mining"}) +"xv" = (/obj/machinery/alarm/monitor{dir = 4; frequency = 1439; locked = 0; pixel_x = -23; pixel_y = 0; req_access = null},/obj/structure/closet/emcloset,/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel,/area/awaycontent/a4{has_gravity = 1; name = "UO45 Mining"}) "xw" = (/obj/structure/table,/obj/item/pickaxe,/obj/item/radio/off,/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel,/area/awaycontent/a4{has_gravity = 1; name = "UO45 Mining"}) -"xx" = (/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/awaycontent/a4{has_gravity = 1; name = "UO45 Mining"}) +"xx" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 1; external_pressure_bound = 101.325; on = 1; pressure_checks = 1},/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel,/area/awaycontent/a4{has_gravity = 1; name = "UO45 Mining"}) "xy" = (/obj/machinery/mineral/processing_unit_console{machinedir = 8},/turf/simulated/wall/rust,/area/awaycontent/a4{has_gravity = 1; name = "UO45 Mining"}) -"xz" = (/obj/machinery/light/small{dir = 4},/obj/structure/table,/obj/item/storage/toolbox/mechanical{pixel_x = -2; pixel_y = -1},/turf/simulated/floor/plasteel{burnt = 1; dir = 8; icon_state = "floorscorched2"; tag = "icon-floorscorched2 (WEST)"},/area/awaycontent/a4{has_gravity = 1; name = "UO45 Mining"}) +"xz" = (/obj/machinery/atmospherics/unary/vent_scrubber{dir = 1; on = 1; scrub_N2O = 0; scrub_Toxins = 0},/obj/effect/landmark/burnturf,/turf/simulated/floor/plasteel,/area/awaycontent/a4{has_gravity = 1; name = "UO45 Mining"}) "xA" = (/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/awaycontent/a4{has_gravity = 1; name = "UO45 Mining"}) -"xB" = (/obj/machinery/conveyor{dir = 2; id = "UO45_mining"},/obj/machinery/light/small{dir = 8},/turf/simulated/floor/plating{dir = 4; icon_state = "warnplate"},/area/awaycontent/a4{has_gravity = 1; name = "UO45 Mining"}) +"xB" = (/obj/structure/ore_box,/obj/effect/decal/warning_stripes/south,/turf/simulated/floor/plasteel,/area/awaycontent/a4{has_gravity = 1; name = "UO45 Mining"}) "xC" = (/obj/structure/grille,/obj/structure/window/full/reinforced,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor/plating,/area/awaycontent/a4{has_gravity = 1; name = "UO45 Mining"}) -"xD" = (/obj/structure/dispenser/oxygen,/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/awaycontent/a4{has_gravity = 1; name = "UO45 Mining"}) +"xD" = (/obj/effect/decal/cleanable/dirt,/obj/effect/decal/warning_stripes/south,/turf/simulated/floor/plasteel,/area/awaycontent/a4{has_gravity = 1; name = "UO45 Mining"}) "xE" = (/turf/simulated/floor/plasteel,/area/awaycontent/a4{has_gravity = 1; name = "UO45 Mining"}) -"xF" = (/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/awaycontent/a4{has_gravity = 1; name = "UO45 Mining"}) +"xF" = (/obj/machinery/light/small{dir = 4},/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/effect/decal/cleanable/dirt,/obj/effect/decal/warning_stripes/south,/turf/simulated/floor/plasteel,/area/awaycontent/a4{has_gravity = 1; name = "UO45 Mining"}) "xG" = (/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel,/area/awaycontent/a4{has_gravity = 1; name = "UO45 Mining"}) "xH" = (/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/awaycontent/a4{has_gravity = 1; name = "UO45 Mining"}) "xI" = (/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 8; initialize_directions = 7; tag = "icon-manifold-b-f (WEST)"},/turf/simulated/floor/plasteel,/area/awaycontent/a4{has_gravity = 1; name = "UO45 Mining"}) "xJ" = (/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/awaycontent/a4{has_gravity = 1; name = "UO45 Mining"}) "xK" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/door/airlock/mining/glass{name = "Mining EVA"; req_access_txt = "201"},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/turf/simulated/floor/plasteel,/area/awaycontent/a4{has_gravity = 1; name = "UO45 Mining"}) -"xL" = (/turf/simulated/floor/plasteel{dir = 4; icon_state = "loadingarea"},/area/awaycontent/a4{has_gravity = 1; name = "UO45 Mining"}) "xM" = (/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/awaycontent/a4{has_gravity = 1; name = "UO45 Mining"}) "xN" = (/obj/machinery/mineral/stacking_unit_console{machinedir = 2},/turf/simulated/wall,/area/awaycontent/a4{has_gravity = 1; name = "UO45 Mining"}) "xO" = (/obj/machinery/atmospherics/unary/vent_scrubber{dir = 4; on = 1; scrub_N2O = 0; scrub_Toxins = 0},/turf/simulated/floor/plasteel,/area/awaycontent/a4{has_gravity = 1; name = "UO45 Mining"}) -"xP" = (/obj/machinery/mineral/stacking_machine{dir = 1; input_dir = 8; output_dir = 4},/turf/simulated/floor/plating{dir = 5; icon_state = "warnplate"},/area/awaycontent/a4{has_gravity = 1; name = "UO45 Mining"}) "xQ" = (/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/awaycontent/a4{has_gravity = 1; name = "UO45 Mining"}) "xR" = (/obj/machinery/computer/mech_bay_power_console,/obj/structure/cable{icon_state = "0-4"; d2 = 4},/turf/simulated/floor/plasteel,/area/awaycontent/a4{has_gravity = 1; name = "UO45 Mining"}) "xS" = (/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/awaycontent/a4{has_gravity = 1; name = "UO45 Mining"}) "xT" = (/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/awaycontent/a4{has_gravity = 1; name = "UO45 Mining"}) -"xV" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/awaycontent/a4{has_gravity = 1; name = "UO45 Mining"}) -"xW" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/door/airlock/external{name = "Mining External Airlock"; req_access_txt = "201"},/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/awaycontent/a4{has_gravity = 1; name = "UO45 Mining"}) -"xX" = (/obj/machinery/alarm/monitor{dir = 4; frequency = 1439; locked = 0; pixel_x = -23; pixel_y = 0; req_access = null},/obj/structure/closet/emcloset,/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/awaycontent/a4{has_gravity = 1; name = "UO45 Mining"}) "xY" = (/obj/structure/grille,/obj/structure/window/full/reinforced,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/plating,/area/awaycontent/a4{has_gravity = 1; name = "UO45 Mining"}) -"ya" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 1; external_pressure_bound = 101.325; on = 1; pressure_checks = 1},/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/awaycontent/a4{has_gravity = 1; name = "UO45 Mining"}) -"yb" = (/obj/structure/ore_box,/turf/simulated/floor/plasteel{icon_state = "warning"},/area/awaycontent/a4{has_gravity = 1; name = "UO45 Mining"}) -"yc" = (/obj/machinery/light/small{dir = 4},/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/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel{icon_state = "warning"},/area/awaycontent/a4{has_gravity = 1; name = "UO45 Mining"}) -"yd" = (/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel{icon_state = "warning"},/area/awaycontent/a4{has_gravity = 1; name = "UO45 Mining"}) "ye" = (/obj/machinery/door/airlock/external{name = "Mining External Airlock"; req_access_txt = "201"},/turf/simulated/floor/plasteel{icon_state = "asteroidfloor"; temperature = 273.15},/area/awaycontent/a4{has_gravity = 1; name = "UO45 Mining"}) "yf" = (/obj/structure/alien/weeds{tag = "icon-weeds2"; icon_state = "weeds2"},/obj/structure/bed/nest,/obj/effect/mob_spawn/human/miner,/turf/simulated/floor/plating/airless/asteroid,/area/awaycontent/a7{always_unpowered = 1; has_gravity = 1; name = "UO45 Caves"; power_environ = 0; power_equip = 0; power_light = 0; poweralm = 0}) "yg" = (/obj/structure/alien/weeds{tag = "icon-weeds1"; icon_state = "weeds1"},/obj/effect/mob_spawn/human/miner,/obj/effect/decal/cleanable/blood/splatter{color = "red"},/turf/simulated/floor/plating/airless/asteroid,/area/awaycontent/a7{always_unpowered = 1; has_gravity = 1; name = "UO45 Caves"; power_environ = 0; power_equip = 0; power_light = 0; poweralm = 0}) @@ -1295,13 +1289,13 @@ aaaaaaaaaaaaaaacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac aaaaaaaaaaaaaaacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacaaaaaaaaaaaaaa aaaaaaaaaaaaaaacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacadadadadadadadadacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacaaaaaaaaaaaaaa aaaaaaaaaaaaaaacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacadaeafafafafagadacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacaaaaaaaaaaaaaa -aaaaaaaaaaaaaaacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacadahaiaiajajahamacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacaaaaaaaaaaaaaa -aaaaaaaaaaaaaaacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacadahanapakaqahadacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacaaaaaaaaaaaaaa +aaaaaaaaaaaaaaacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacadahaiaiatatahamacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacaaaaaaaaaaaaaa +aaaaaaaaaaaaaaacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacadahajapakaqahadacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacaaaaaaaaaaaaaa aaaaaaaaaaaaaaacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacadahalaoasauahadacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacaaaaaaaaaaaaaa -aaaaaaaaaaaaaaacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacadavawayarazaAadacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacaaaaaaaaaaaaaa -aaaaaaaaaaaaaaacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacaBaCadamamayayadamadaBaBacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacaaaaaaaaaaaaaa -aaaaaaaaaaaaaaacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacaCaEaDaGaFaHaHaHaIaKaJaBacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacaaaaaaaaaaaaaa -aaaaaaaaaaaaaaacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacaBaLaDaHaHaHaMaMaHaHaNaCacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacaaaaaaaaaaaaaa +aaaaaaaaaaaaaaacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacadavawanarazaAadacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacaaaaaaaaaaaaaa +aaaaaaaaaaaaaaacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacaBaCadamamananadamadaBaBacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacaaaaaaaaaaaaaa +aaaaaaaaaaaaaaacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacaCaEaMaGaFaHaHaHaIaMaJaBacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacaaaaaaaaaaaaaa +aaaaaaaaaaaaaaacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacaBaLaMaHaHaHaMaMaHaHaNaCacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacaaaaaaaaaaaaaa aaaaaaaaaaaaaaacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacaBaBaOaQaPaPaPaPaRaSaBaCacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacaaaaaaaaaaaaaa aaaaaaaaaaaaaaacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacaPaTaVaUaXaWaZaYaHaPacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacaaaaaaaaaaaaaa aaaaaaaaaaaaaaacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacaPaTbaaUbcbbbdaYaHaPacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacaaaaaaaaaaaaaa @@ -1313,10 +1307,10 @@ aaaaaaaaaaaaaaacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac aaaaaaaaaaaaaaacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacaBataCbPbQbRbRbQbSbRbUbTbQbQbRbVbQbQbWacacacacachefofoacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacaaaaaaaaaaaaaa aaaaaaaaaaaaaaacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacaCbZaxcacdcccfcbchcgcjcicgckceclcocmcpacacacacfofofofohefofohefoacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacaaaaaaaaaaaaaa aaaaaaaaaaaaaaacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacaCaBaBaBcqcraCcsaBcqaCctaHaBcsaBcpaCcucqacacacfohefofofofofofofofoacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacaaaaaaaaaaaaaa -aaaaaaaaaaaaaaacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacaBcvatcwcqcuaCcycxczaBaKaHaCcAcCcBaBcncqaBaCadamadamamaPaPamamamadadacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacaaaaaaaaaaaaaa -aaaaaaaaaaaaaaacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacaBcEbZcGcDcnaBcJcIcKaBaDaHaBcLcIcMaCcucOcNcNcNcNcNcNcFcRcQcHcScVcUcWacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacaaaaaaaaaaaaaa +aaaaaaaaaaaaaaacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacaBcvatcwcqcuaCcycxczaBaMaHaCcAcCcBaBcncqaBaCadamadamamaPaPamamamadadacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacaaaaaaaaaaaaaa +aaaaaaaaaaaaaaacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacaBcEbZcGcDcnaBcJcIcKaBaMaHaBcLcIcMaCcucOcNcNcNcNcNcNcFcRcQcHcScVcUcWacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacaaaaaaaaaaaaaa aaaaaaaaaaaaaaacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacaCcYcXcYcZcraCaBdaaBaCdbdbaBaBdcaBaCddcocPdfdfdfdgdfdgdgdhcccbccdicqacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacaaaaaaaaaaaaaa -aaaaaaaaaaaaaaacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacaBcTcocbchdlbtaDdmaMaHaHaHdodnbMdpaBaBaCdqaBdrdtdsdvduaCcpaBaCaBcrcpacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacaaaaaaaaaaaaaa +aaaaaaaaaaaaaaacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacaBcTcocbchdlbtaMayaMaHaHaHdodnbMdpaBaBaCdqaBdrdtdsdvduaCcpaBaCaBcrcpacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacaaaaaaaaaaaaaa aaaaaaaaaaaaaaacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacaBcradaddwamamdedxdzaHaHaHaHdAdCdBaPaPdEdDdGdFdIdHdIdJdLdKdNdMaBdjcpacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacaaaaaaaaaaaaaa aaaaaaaaaaaaaaacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacaCcraddQdPdSdRaHaHdUdTdTdTdWdVdYdXeadZebbMecaMecaHecaHeceddBeeaBcncqadadacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacaaaaaaaaaaaaaa aaaaaaaaaaaaaaacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacaCegefeiehejaPekaHemeleleleleneodBepaHaHeqecaHecaHecaHecerdBesaCcuetdkaPevacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacaaaaaaaaaaaaaa @@ -1325,54 +1319,54 @@ aaaaaaaaaaaaaaacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac aaaaaaaaaaaaaaacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacameYeXeZaPfaaHfbelelelelaYeofcfefdfgfffffffgfhfjfiflfkfmaCaCcufnamamhffoacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacaaaaaaaaaaaaaa aaaaaaaaaaaaaaacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacadfpfnamadbBaHfrfqfqfqfqfseoftadadadaPaPaPaPamamfufwfvfyfxfAdyfnfofofofoacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacaaaaaaaaaaaaaa aaaaaaaaaaaaaaacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacaBfCfBfEfDfFfFbUfGfFfFfFfHfJfIadacfofofofofohiamfLfMfNfOfPbrdOfnfofofofofoacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacaaaaaaaaaaaaaa -aaaaaaaaaaaaaaacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacaCfSfRfTaBfUaHaHbNfWfVaDfXfZfYamacfofofofofofofofLgagagbfPaxgcgdgefofofofoacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacaaaaaaaaaaaaaa +aaaaaaaaaaaaaaacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacaCfSfRfTaBaKaHaHbNfWfVaMfXfZfYamacfofofofofofofofLgagagbfPaxgcgdgefofofofoacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacaaaaaaaaaaaaaa aaaaaaaaaaaaaaacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacaCaCaBaBaCaCaBdbgfadadaPaPaPamamhefofohefofofofoghgigagagjbrgkdifnfofofofoacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacaaaaaaaaaaaaaa aaaaaaaaaaaaaaacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacfPgmglfLfofofofofofofofofofofofofofoghgngagofPgqeugrfnfofofofofoacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacaaaaaaaaaaaaaa aaaaaaaaaaaaaaacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacfofoacacacachefoacgsgugtgsfofofofofofofofofofofofoheacghfOgvfPfPfOfPgcfnfofofofofoacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacaaaaaaaaaaaaaa aaaaaaaaaaaaaaacacacacacgwgwgwgwgxgwgwacacacacacacacacacacacacacacacacacacacgygygzgAacacfofohefofofofofofofofofogsgBgmgsfofofofofofofojMfofofofofoacfLgEgDgGgFgHfOgIdwfofoacacfofoacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacaaaaaaaaaaaaaa aaaaaaaaaaaaaaacacacacacgxgKgJgJgJgJgwgLgMgLacacacacacacacacacacacacacgygygzgzgOgNgAgAfofofofofofofofofofofofofogsgugugsfofohefofoheghghgsgsgsgsghfLfLgPgPgPgPgQfOdOdwfofoacacfofofofofoacacacacacacacacacacacacacacacacacacacacacacacacacacacacaaaaaaaaaaaaaa aaaaaaaaaaaaaaacacacacacgxgKgSgUgTgKgVgXgWgLgMgLgMgMacacacacacacacacacgzgYhagZhbgYhchdjQfofofofofofofofofofofomJghhhhgfLpvfofofofoghghhkhjhmhlhohnhpfPhrhqhsgPhtfOgcfnfofofofofofofofofofoacacacacacacacacacacacacacacacacacacacacacacacacacacacaaaaaaaaaaaaaa -aaaaaaaaaaaaaaacacacacacgwgJhuhwhvgJgVhyhxgMfzhBhAgwacfoheacacfofoacacgyhChEhDhGhFhIhHfofohefofofofofofofofofofogsgugmgsfofofofofogshJhLhKhNhMhPhOhOhQhShRhUhThWhVhYhXfofofofofofofofofofoacacacacacacacacacacacacacacacacacacacacacacacacacacacaaaaaaaaaaaaaa -aaaaaaaaaaaaaaacacacacacgwgJhZibiagJgVidicgMieigifgwfofofofofohefofoacgAihijiihGikilhHfofofofofofofofofofofofofogsgugmgsfofohefofogsiminhKiohlhKhKipfOiqhsirgPisfPgIfnhffofofofofofoacfofoacacacacacacacacacacacacacacacacacacacacacacacacacacacaaaaaaaaaaaaaa -aaaaaaaaaaaaaaacacacacacgxiuitiwivitgVidixgLgLiygwgwfofohefofofofofofogAiziBiAiDiCiEhdfofofofofohefofofofofofofogsiFgBgsfofofofofogsiGhLhKioiHhKhKiJiIiLiKgPgPiMfOfQfnfofofofofofoacacfofofoacacacacacacacacacacacacacacacacacacacacacacacacacacaaaaaaaaaaaaaa -aaaaaaaaaaaaaaacacacacacgxiPgpiRiQiTiSiViUiWiXiYgwhefofofofofofofofohehdiZjahbgAhdhdgAfofofofofofofofofohefofofoghjbgBghhefofofofofLjchKiJhNhlhKhKjdfPjfjegPgDjgfPgcfnfofofofofofoacacfofofoacacacacacacacacacacacacacacacacacacacacacacacacacacaaaaaaaaaaaaaa -aaaaaaaaaaaaaaacacacacacgxjijhjkjjjmjljojnjqjpjrgxfofofofofofofofofofogAjsjtgYgAfofofofofofofohefofofoacacfofoheghjvjughghfofofofoghjwjxhKiJhljzjyjAfPfPjBjCjCjDjDgRjFfofofofofofofofofofofoacacacacacacacacacacacacacacacacacacacacacacacacacacaaaaaaaaaaaaaa -aaaaaaaaaaaaaaacacacacacgwjHjGiRjIjJgwgLgMgMjKjLgxfofofofopwfofofohegAgAjNjPjOgAfofofofopxfofofogAgAgAgAacacacacfLjRguhzghfLgsgsghghjTjUhLjVhNhNhKhKjWjYjXkajZkciNkdamfofofofofofofofofofofoacacacacacacacacacacacacacacacacacacacacacacacacacacaaaaaaaaaaaaaa -aaaaaaaaaaaaaaacacacacacgxgwgxkegwgwgwkfkfgMkgkhgwgwgVgVgVgxgVgVgVgxgxkjkiklkkgAgAhHhHhHgAhHhHhHgAknkmgAgAgzgygzgzkogugukpgugmgugukqhKhKhKkriJhKksktktkvkufPiOkykxamadfofofofofofofofofofofoacacacacacacacacacacacacacacacacacacacacacacacacacacaaaaaaaaaaaaaa -aaaaaaaaaaaaaaacacacacacacgLkziRkAgLkBkDkCiWkEkGkFkIkHkJkHkKkHkLkIkHkMkOkNkQkPkSkRkTkRkRkUkRkVkXkWkXkYkZgAlblalcgzleldldlflggugulhkqhKiJhKljlilililllklnlmfLadamamamfofofofoacacfofofofofoacacaclololololoacacacacacacacacacacacacacacacacacacacaaaaaaaaaaaaaa -aaaaaaaaaaaaaaacacacacacacgLlplrlqltlslulslwlvlylxlzlzlAlzlBlzlClzlElDlGlFlIlHlKlJlMlLlOlNlOlOlOlOhbkYkZlPhbhbhblPlRlQgmlSfPfOfPfPfOfOfPfPfPlTlUhLlVfPlXlWghfofofofofofofoacacacacfofofofoacacaclolZlYmaloacacacacacacacacacacacacacacacacacacacaaaaaaaaaaaaaa -aaaaaaaaaaaaaaacacacacacacgMmbjJjIiRmcmcjEgLmemfgxgxgVgVgVgxgVgVgVgwgwmhmggzgzgzmimkmjmjgyhHhHhHhHmlkYkZgAmnmmmogzmpglmrmqfPmsmumtfOmvmxmwfOfOfPfPfOfPmzmyghfofofofofofofofoacacfofofofoacacacaclomBmAmaloacacacacacacacacacacacacacacacacacacacaaaaaaaaaaaaaa -aaaaaaaaaaaaaaacacacacacacgLmCigmDmFmEmHmGgxgVgVgwfofofofoqbfofofofohdmKmLgAmImNmMmPmOmQgzmSmRmThHmlmVgAgAgygzgzgymXmWfOfOfPmYnamZfPnbnancfOmUnendnffPngmygsfofofofofofofofofofofofofofoacacaclololoninjnjloacacacacacacacacacacacacacacacacacacaaaaaaaaaaaaaa +aaaaaaaaaaaaaaacacacacacgwgJhuhwhvgJgVhyhxgMfzhBhAgwacfoheacacfofoacacgydmfUhChDhFhIhHfofohefofofofofofofofofofogsgugmgsfofofofofogshJhLhKhNhMhPhOhOhQhShRhUhThWhVhYhXfofofofofofofofofofoacacacacacacacacacacacacacacacacacacacacacacacacacacacaaaaaaaaaaaaaa +aaaaaaaaaaaaaaacacacacacgwgJhZibiagJgVidicgMieigifgwfofofofofohefofoacgAihijiihDikilhHfofofofofofofofofofofofofogsgugmgsfofohefofogsiminhKiohlhKhKipfOiqhsirgPisfPgIfnhffofofofofofoacfofoacacacacacacacacacacacacacacacacacacacacacacacacacacacaaaaaaaaaaaaaa +aaaaaaaaaaaaaaacacacacacgxiuitiwivitgVidixgLgLiygwgwfofohefofofofofofogAhEhGiziAiCiEhdfofofofofohefofofofofofofogsiFgmgsfofofofofogsiGhLhKioiHhKhKiJiIiLiKgPgPiMfOfQfnfofofofofofoacacfofofoacacacacacacacacacacacacacacacacacacacacacacacacacacaaaaaaaaaaaaaa +aaaaaaaaaaaaaaacacacacacgxiBgpiRiQiDiSiViUiWiXiYgwhefofofofofofofofohehdiZjahbgAhdhdgAfofofofofofofofofohefofofoghjbgmghhefofofofofLjchKiJhNhlhKhKjdfPjfjegPgDjgfPgcfnfofofofofofoacacfofofoacacacacacacacacacacacacacacacacacacacacacacacacacacaaaaaaaaaaaaaa +aaaaaaaaaaaaaaacacacacacgxiPjhjkjjjmjljojnjqjpjrgxfofofofofofofofofofogAjsjtgYgAfofofofofofofohefofofoacacfofoheghjvjughghfofofofoghjwjxhKiJhljzjyjAfPfPjBjCjCjDjDgRjFfofofofofofofofofofofoacacacacacacacacacacacacacacacacacacacacacacacacacacaaaaaaaaaaaaaa +aaaaaaaaaaaaaaacacacacacgwiTjiiRjIjIgwgLgMgMjKjLgxfofofofopwfofofohegAgAjNjPjOgAfofofofopxfofofogAgAgAgAacacacacfLjRguhzghfLgsgsghghjTjUhLjVhNhNhKhKjWjYjXkajZkciNkdamfofofofofofofofofofofoacacacacacacacacacacacacacacacacacacacacacacacacacacaaaaaaaaaaaaaa +aaaaaaaaaaaaaaacacacacacgxgwgxkegwgwgwkfkfgMkgkhgwgwgVgVgVgxgVgVgVgxgxkjkiklkkgAgAhHhHhHgAhHhHhHgAjGjHgAgAgzgygzgzkogugukpgugmgugukqhKhKhKkriJhKksktktkvkufPiOkykxamadfofofofofofofofofofofoacacacacacacacacacacacacacacacacacacacacacacacacacacaaaaaaaaaaaaaa +aaaaaaaaaaaaaaacacacacacacgLkziRjJgLkmknkAiWkEkGkFkIkHkJkHkKkHkLkIkHkMkOkNkQkPkSkRkTkRkRkUkRkVkXkWkXkYkBgAlblalcgzleldldlflggugulhkqhKiJhKljlilililllklnlmfLadamamamfofofofoacacfofofofofoacacaclololololoacacacacacacacacacacacacacacacacacacacaaaaaaaaaaaaaa +aaaaaaaaaaaaaaacacacacacacgLlplrlqltlslulslwlvlylxlzlzlAlzlBlzlClzlElDlGlFlIlHlKlJlMlLlOlNlOlOlOlOhbkYkBlPhbhbhblPlRlQgmkCfPfOfPfPfOfOfPfPfPlTlUhLlVfPlXlWghfofofofofofofoacacacacfofofofoacacaclolZlYmaloacacacacacacacacacacacacacacacacacacacaaaaaaaaaaaaaa +aaaaaaaaaaaaaaacacacacacacgMmbjIjIiRmcmcjEgLmemfgxgxgVgVgVgxgVgVgVgwgwkDkZgzgzgzmimkmjmjgyhHhHhHhHmlkYkBgAmnmmmogzmpgllSmgfPmsmumtfOmvmxmwfOfOfPfPfOfPmhmyghfofofofofofofofoacacfofofofoacacacaclomBmAmaloacacacacacacacacacacacacacacacacacacacaaaaaaaaaaaaaa +aaaaaaaaaaaaaaacacacacacacgLmCigmDmFmEmHmGgxgVgVgwfofofofoqbfofofofohdmKmLgAmImNmMmPmOmQgzmSmRmThHmlmVgAgAgygzgzgymXmWfOfOfPmYnamZfPnbnancfOmUnendnffPjRmygsfofofofofofofofofofofofofofoacacaclololoninjnjloacacacacacacacacacacacacacacacacacacaaaaaaaaaaaaaa aaaaaaaaaaaaaaacacacacacacgLgLgMgMgLgwgxgxgwfofoqbfofofofofofofofohefomKnkgAnhnmnlnnmOmOgynonpnqhHmlnshdntjSnununwnxnvnznyfPnBnCfPfOnBnDfPfPnAgmnFnEnGnJnIgsfofofofofofofofofofofofofofoacacacnjnHnKnKnKnLloacacacacacacacacacacacacacacacacacacaaaaaaaaaaaaaa -aaaaaaaaaaaaaaacacacacacacacacacacacacfofofofofofofofofofofohefofofoacnNnOgAnMnmnPnRnQnSgynTnUnVhHmlmVhdnOnXnYnZnZoanWocoboeodohofoiogohojolokomonoooposorgsfofofofofofofofofofofofofofofoacacnjoqovouovoqlolololoacacacacacacacacacacacacacacacaaaaaaaaaaaaaa -aaaaaaaaaaaaaaacacacacacacacacacacacacacfohefofofofofofofofofofofofogAnNkbgAownmoxozoyoAgyoBoDnVoCmlmVgAnkmKfofogsoEldldoFoGoIoJoHoKoIoMoLoOoNoJoPoQfPoUoTghpvfofofofofofofofofofofofofofoacaclooRoXoWoZoSlopapbloacacacacacacacacacacacacacacacaaaaaaaaaaaaaa -aaaaaaaaaaaaaaacacacacacacacacacacacacacacacfofofohefofofofofofofohehdpdkwgAoYpcmOpfpeoygzphpgpihHmlkXhdmdmKfofogsplpkgupmfPppfPpqfOprfPfPfOpnfPfPptfPpomygsfofofofofofofoqBqAqAqAqAqCqAqAqApypzpspApupCpBnjpFpGloacacacacacacacacacacacacacacacaaaaaaaaaaaaaa +aaaaaaaaaaaaaaacacacacacacacacacacacacfofofofofofofofofofofohefofofoacnNnOgAnMnmnPnRnQnSgynTnUnVhHmlmVhdnOnXnYnZnZoanWocoboeodohofoiogohojolokmqonoooposorgsfofofofofofofofofofofofofofofoacacnjoqovouovoqlolololoacacacacacacacacacacacacacacacaaaaaaaaaaaaaa +aaaaaaaaaaaaaaacacacacacacacacacacacacacfohefofofofofofofofofofofofogAnNkbgAownmoxozoyoAgyoBoDnVoCmlmVgAnkmKfofogsoEldldoFoGoIoJoHoKoIoMoLoOmroJoPoQfPoUoTghpvfofofofofofofofofofofofofofoacaclooRoXoWoZoSlopapbloacacacacacacacacacacacacacacacaaaaaaaaaaaaaa +aaaaaaaaaaaaaaacacacacacacacacacacacacacacacfofofohefofofofofofofohehdpdkwgAoYpcmOpfpeoygzphpgpihHmlkXhdmdmKfofogsplpkgupmfPppfPpqfOprfPfPfOpnfPfPptfPmzmygsfofofofofofofoqBqAqAqAqAqCqAqAqApypzpspApupCpBnjpFpGloacacacacacacacacacacacacacacacaaaaaaaaaaaaaa aaaaaaaaaaaaaaacacacacacacacacacacacacacacacacacacacachefofohefofoachdpHpIgAgzgzpDgzgzpEgzgzpLpMgypJjOgAnOnNhefogsgspKpOpNfOpRpSpTpVpUfOpPpWpQpXfOnrfOjbmygsfofofofofofofoucnjnjqcqcnjfofofoacloqcqcpZqcqcloqeqflololoacacacacacacacacacacacacacaaaaaaaaaaaaaa -aaaaaaaaaaaaaaacacacacacacacacacacacacacacacacacacacacacfofofofoacacgzotqhqiqjqlqdqggyqmqkgzqnqpqohbqqgAnOmKfofofogsgsgsgsfLqtqufPqwqvfPfPfPqrqsfOqzfPjbmygsfofofojMfovIvmwknjqyqxqxlonjnjnjloloqDqEqGqHqFqJqIqLqKqMloacacacacacacacacacacacacacaaaaaaaaaaaaaa -aaaaaaaaaaaaaaacacacacacacacacacacacacacacacacacacacacacacacacacacacgzqPpIqQqRqOqNqSgAhdhdgAqTqUhbhbqVgAoVmKfofofofofofofoghqZmtfPmvrafPqXqYpQrbfPrefPrgrcfLgsgsgsghgsgsrhfLlopjrdrlrinjrjrmrkrprqrsrrrurtrwrnrvroqMlolonjnjacacacacacacacacacacaaaaaaaaaaaaaa -aaaaaaaaaaaaaaacacacacacacacacacacacacacacacacacacacacacacacacacacacgypYqhqirArCryrzgAqarErHrDrFkPrIrGgAmdmKfofofohefofofoghghghghfPfOfPfOfOrKfPfPqWfOrPrOrRrMrQrNrSrMrUrTrVrXsarZscrWserYsgsbsisdsksjsmslsosnspspsfsqssstnjacacacacacacacacacacaaaaaaaaaaaaaa -aaaaaaaaaaaaaaacacacacacacacacacacacacacacacacacacacacacacacacacacacgyqPqhgAgAgAhdhdgAsvsugAshswsrsysxgAnOmKachefofofofohefofofoacacacfPszsApQsBfOrefOjRsEsGsCsDsCsFsCsIsHsJsLsNsNsPsKsRsMsTsOsisQsWsVsYsXtasZtctbsStdtftgloacacacacacacacacacacaaaaaaaaaaaaaa -aaaaaaaaaaaaaaacacacacacacacacacacacacacacacacacacacacacacacacacacacgytithjSrfnunutltkrxtmtototptototqtrtsnNacfofofofofofofofofofofoacfLtjpQpQsBfOrefPtvtughgsgsgsghgsgsrhfLlotttntxtwlotytCtztEtDtFtbtHtGtIrlrltJtAlolonjnjacacacacacacacacacacaaaaaaaaaaaaaa -aaaaaaaaaaaaaaacacacacacacacacacacacacacacacacacacacacacacacacacacacgztLtMtNtOtOtNtQtPtPrBtPtPtStPrJrLtWtVtXacfofofofofofofofofofofoheghghtUtTfOfOqzfPtZtYgsfofofoyhfovIwkfonjudueuflolouaugublouhulukujuiunumupuouqnjacacacacacacacacacacacacacaaaaaaaaaaaaaa -aaaaaaaaaaaaaaacacacacacacacacacacacacacacacacacacacacacacacacacacacgyusurutgzuwgzgzgzgzgygygAgAhdhdgzuxuyhdfofofohefofofofofofofofofofoghghghfOsUreuAtZtYgsfofofofofofofofonjuvuBuEuzuFqcuGqclolouHuIlouJuKnjuJuKnjnjacacacacacacacacacacacacacaaaaaaaaaaaaaa -aaaaaaaaaaaaaaacacacacacacacacacacacacacacacacacacacacacacacacacacacgzuCuLuDgzacacacacacacacacfofohdtetBuPhdfofofofofofofohefoacfofofofofofogstKuRtRfPuStYgsfofofofofofofofoqcuTuVuXsNuUsNsTuWvauYvbuZlovevflovgvhloacacacacacacacacacacacacacacaaaaaaaaaaaaaa -aaaaaaaaaaaaaaacacacacacacacacacacacacacacacacacacacacacacacacacacacgzvdvcvigyacacacacacacacacacfohdhHvlhHhdfofofofofofofofoacacachefofofoyivnvpuuvqfOvovkfLfofofofofofofofoqcvrrlvvvuvxvwvtvsvBvAvDvylovEvFlovGvHloacacacacacacacacacacacacacacaaaaaaaaaaaaaa -aaaaaaaaaaaaaaacacacacacacacacacacacacacacacacacacacacacacacacacacacgzgzgygygzacacacacacacacacacfoyjevevevfofofofofofofofofoacacfofofofovJvKvKvLvMvNvLvPvOvJfofofofofofofofonjvCvzvQvSvVvRvUvTvYvWvZvXlololololololoacacacacacacacacacacacacacacaaaaaaaaaaaaaa -aaaaaaaaaaaaaaacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacfofofofofofofofofoacacfofofofofofofofovJwdwcwewfuMwawgwivJykfofofofofofofonjnjuFwmwlwhwouFnjnjlolonjnjacacacacacacacacacacacacacacacacacacacacaaaaaaaaaaaaaa +aaaaaaaaaaaaaaacacacacacacacacacacacacacacacacacacacacacfofofofoacacgzotqhqiqjqlqdqggyqmqkgzqnqpqohbqqgAnOmKfofofogsgsgsgsfLqtqufPqwqvfPfPfPqrqsfOqzfPjbmygsfofofojMfovIvmwknjqyqxqxlonjnjnjloloqDqEqGqHqFqJqIqLngomloacacacacacacacacacacacacacaaaaaaaaaaaaaa +aaaaaaaaaaaaaaacacacacacacacacacacacacacacacacacacacacacacacacacacacgzqPpIqQqRqOqNqSgAhdhdgAqTqUhbhbqVgAoVmKfofofofofofofoghqZmtfPmvrafPqXqYpQrbfPrefPrgoNfLgsgsgsghgsgsrhfLlopjporlrinjrjrmrkrprqrsrrrurtrwqKqMrcomlolonjnjacacacacacacacacacacaaaaaaaaaaaaaa +aaaaaaaaaaaaaaacacacacacacacacacacacacacacacacacacacacacacacacacacacgypYqhqirArCryrzgAqarErHrDrFkPrIrGgAmdmKfofofohefofofoghghghghfPfOfPfOfOrKfPfPqWfOrPrOrRrMrQrNrSrMrUrTrVrXsarZscrWserYsgsbsirusksjsmslsosnspspsfsqssstnjacacacacacacacacacacaaaaaaaaaaaaaa +aaaaaaaaaaaaaaacacacacacacacacacacacacacacacacacacacacacacacacacacacgyqPqhgAgAgAhdhdgAsvsugAshswsrsysxgAnOmKachefofofofohefofofoacacacfPszsApQsBfOrefOjRsEsGsCsDsCsFsCsIsHsJsLsNsNsPsKsRsMsTsOsirdsWsVsYsXtasZtctbsStdtftgloacacacacacacacacacacaaaaaaaaaaaaaa +aaaaaaaaaaaaaaacacacacacacacacacacacacacacacacacacacacacacacacacacacgytithjSrfnunutltkrxtmtototptototqtrtsnNacfofofofofofofofofofofoacfLtjpQpQsBfOrefPtvtughgsgsgsghgsgsrhfLlotttntxtwlotytCtztEtDtFtbtHtGtIrlrltJrnlolonjnjacacacacacacacacacacaaaaaaaaaaaaaa +aaaaaaaaaaaaaaacacacacacacacacacacacacacacacacacacacacacacacacacacacgztLtMtNtOtOtNtQtPtPrBtPtPtStPrJrLtWtVtXacfofofofofofofofofofofoheghghtUtTfOfOqzfPtZtYgsfofofoyhfovIwkfonjudueuflolouaugubloroulukrvuiunsdupuosQnjacacacacacacacacacacacacacaaaaaaaaaaaaaa +aaaaaaaaaaaaaaacacacacacacacacacacacacacacacacacacacacacacacacacacacgytAuhujgzuwgzgzgzgzgygygAgAhdhdgzuxuyhdfofofohefofofofofofofofofofoghghghfOsUreuAtZtYgsfofofofofofofofonjuvuBuEumuFqcuGqclolouHuIlouJuKnjuJuKnjnjacacacacacacacacacacacacacaaaaaaaaaaaaaa +aaaaaaaaaaaaaaacacacacacacacacacacacacacacacacacacacacacacacacacacacgzuquLurgzacacacacacacacacfofohdtetBuPhdfofofofofofofohefoacfofofofofofogstKuRtRfPuStYgsfofofofofofofofoqcuTuVuXsNussNsTuWvautuzuClovevflovgvhloacacacacacacacacacacacacacacaaaaaaaaaaaaaa +aaaaaaaaaaaaaaacacacacacacacacacacacacacacacacacacacacacacacacacacacgzuDuMuNgyacacacacacacacacacfohdhHvlhHhdfofofofofofofofoacacachefofofoyivnvpuuvqfOvovkfLfofofofofofofofoqcvrrlvvvuvxvwuOvsvBvAvDuQlovEvFlovGvHloacacacacacacacacacacacacacacaaaaaaaaaaaaaa +aaaaaaaaaaaaaaacacacacacacacacacacacacacacacacacacacacacacacacacacacgzgzgygygzacacacacacacacacacfoyjevevevfofofofofofofofofoacacfofofofovJvKvKvLvMvNvLvPvOvJfofofofofofofofonjvCuUuYvSvVuZvbvTvYvcvdvilololololololoacacacacacacacacacacacacacacaaaaaaaaaaaaaa +aaaaaaaaaaaaaaacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacfofofofofofofofofoacacfofofofofofofofovJwdwcwewfvjvtxQwivJykfofofofofofofonjnjuFwmwlwhwouFnjnjlolonjnjacacacacacacacacacacacacacacacacacacacacaaaaaaaaaaaaaa aaaaaaaaaaaaaaacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacfofofofofofofoacacfofofofofofofofovJwqwpwswrwuwtwwwvwxfofofofofofofofofolowjwywnwzuFwAloacacacacacacacacacacacacacacacacacacacacacacacacacaaaaaaaaaaaaaa -aaaaaaaaaaaaaaacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacfofofohefohefofofofofofofofofofovJvLvMvMvMwBwDwGwCwxfofofofofofofofofoqcwEwHwFwJwIwKnjacacacacacacacacacacacacacacacacacacacacacacacacacaaaaaaaaaaaaaa -aaaaaaaaaaaaaaacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacfofoacacacacacacacfofofofofovKwNwpwPwOwtwQwwwLwxfofofofofofofofofoqcwMwSwRwTuFlonjacacacacacacacacacacacacacacacacacacacacacacacacacaaaaaaaaaaaaaa -aaaaaaaaaaaaaaacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacfofofovJwdwWwXwfwVwUwZwYvJfofofofofofofofofoqcxaxcxbxexdloacacacacacacacacacacacacacacacacacacacacacacacacacacaaaaaaaaaaaaaa +aaaaaaaaaaaaaaacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacfofofohefohefofofofofofofofofofovJvLvMvMvMvywDwGvzwxfofofofofofofofofoqcwEwHwFwJwIwKnjacacacacacacacacacacacacacacacacacacacacacacacacacaaaaaaaaaaaaaa +aaaaaaaaaaaaaaacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacfofoacacacacacacacfofofofofovKwNwpwPwOwtwQwwvQwxfofofofofofofofofoqcwMwSwRwTuFlonjacacacacacacacacacacacacacacacacacacacacacacacacacaaaaaaaaaaaaaa +aaaaaaaaaaaaaaacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacfofofovJwdwWwXwfvRwUwZwYvJfofofofofofofofofoqcxaxcxbxexdloacacacacacacacacacacacacacacacacacacacacacacacacacacaaaaaaaaaaaaaa aaaaaaaaaaaaaaacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacfofofovJvJvKvKvLvLvMxixhvJacacfofofofofofofoloxfxjxglolonjacacacacacacacacacacacacacacacacacacacacacacacacacacaaaaaaaaaaaaaa -aaaaaaaaaaaaaaacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacfofofofoacacvKxkxmxlxqxnvKvKvJvJvJfofofofoaclonjnjloloacacacacacacacacacacacacacacacacacacacacacacacacacacacacaaaaaaaaaaaaaa -aaaaaaaaaaaaaaacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacachefofofoacacvKxoxtxsxqxuwxxpxpxwvJfofofofoacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacaaaaaaaaaaaaaa -aaaaaaaaaaaaaaacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacfofofofofoacvKxrxyxvwwxAxCxxxExzvKfofofofoacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacaaaaaaaaaaaaaa -aaaaaaaaaaaaaaacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacfohefofofoacvJxBxtxGxIxHxKxJxMxDvJfofofofoacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacaaaaaaaaaaaaaa -aaaaaaaaaaaaaaacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacfofofofofofovJxkxNxOxQxFwxxRxSxTvKfofofoacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacaaaaaaaaaaaaaa -aaaaaaaaaaaaaaacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacfofofofofovKxkxPxLxVuNvJvJvKvJvJfofofoacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacaaaaaaaaaaaaaa -aaaaaaaaaaaaaaacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacfofofofofovJvKvJwxxWxYvJfofofofofofofoacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacaaaaaaaaaaaaaa -aaaaaaaaaaaaaaacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacfofofofofofovJxXyauOvJfofofofofofofoacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacaaaaaaaaaaaaaa -aaaaaaaaaaaaaaacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacfofofofofovJybydycvJfofofofofofofoacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacaaaaaaaaaaaaaa +aaaaaaaaaaaaaaacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacfofofofoacacvKvUvWvXxqvZvKvKvJvJvJfofofofoaclonjnjloloacacacacacacacacacacacacacacacacacacacacacacacacacacacacaaaaaaaaaaaaaa +aaaaaaaaaaaaaaacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacachefofofoacacvKwaxtxsxqxuwxwbwbxwvJfofofofoacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacaaaaaaaaaaaaaa +aaaaaaaaaaaaaaacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacfofofofofoacvKwgxywBwwxAxCwCxEwLvKfofofofoacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacaaaaaaaaaaaaaa +aaaaaaaaaaaaaaacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacfohefofofoacvJwVxtxGxIxHxKxJxMxkvJfofofofoacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacaaaaaaaaaaaaaa +aaaaaaaaaaaaaaacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacfofofofofofovJvUxNxOxQxlwxxRxSxTvKfofofoacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacaaaaaaaaaaaaaa +aaaaaaaaaaaaaaacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacfofofofofovKvUxmxnxoxpvJvJvKvJvJfofofoacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacaaaaaaaaaaaaaa +aaaaaaaaaaaaaaacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacfofofofofovJvKvJwxxrxYvJfofofofofofofoacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacaaaaaaaaaaaaaa +aaaaaaaaaaaaaaacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacfofofofofofovJxvxxxzvJfofofofofofofoacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacaaaaaaaaaaaaaa +aaaaaaaaaaaaaaacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacfofofofofovJxBxDxFvJfofofofofofofoacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacaaaaaaaaaaaaaa aaaaaaaaaaaaaaacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacfofofofovJwxyewxvJfofofofofofofoacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacaaaaaaaaaaaaaa aaaaaaaaaaaaaaacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacfofofofoylevevevylfofofofofofoacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacaaaaaaaaaaaaaa aaaaaaaaaaaaaaacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacfofofofofofofofofofofofofofoacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacaaaaaaaaaaaaaa @@ -1427,4 +1421,4 @@ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -"} \ No newline at end of file +"} diff --git a/_maps/map_files/RandomZLevels/wildwest.dmm b/_maps/map_files/RandomZLevels/wildwest.dmm index 13357f34876..31e5c541f5d 100644 --- a/_maps/map_files/RandomZLevels/wildwest.dmm +++ b/_maps/map_files/RandomZLevels/wildwest.dmm @@ -2,64 +2,64 @@ "ab" = (/turf/simulated/shuttle/wall,/area/awaymission/wwvault) "ac" = (/turf/simulated/floor/engine/cult,/area/awaymission/wwvault) "ad" = (/obj/structure/cult/pylon,/turf/simulated/floor/engine/cult,/area/awaymission/wwvault) -"ae" = (/turf/simulated/shuttle/plating{tag = "icon-cultdamage5";icon_state = "cultdamage5"},/area/awaymission/wwvault) +"ae" = (/turf/simulated/shuttle/plating{tag = "icon-cultdamage5"; icon_state = "cultdamage5"},/area/awaymission/wwvault) "af" = (/mob/living/simple_animal/hostile/faithless,/turf/simulated/floor/engine/cult,/area/awaymission/wwvault) -"ag" = (/turf/simulated/shuttle/plating{tag = "icon-bcircuitoff";icon_state = "bcircuitoff"},/area/awaymission/wwvault) +"ag" = (/turf/simulated/shuttle/plating{tag = "icon-bcircuitoff"; icon_state = "bcircuitoff"},/area/awaymission/wwvault) "ah" = (/turf/simulated/wall/cult,/area/awaymission/wwvault) -"ai" = (/obj/effect/forcefield{desc = "You can't get in. Heh.";layer = 1;name = "Blocker"},/turf/simulated/wall/cult,/area/awaymission/wwvault) -"aj" = (/turf/simulated/shuttle/plating{tag = "icon-cultdamage3";icon_state = "cultdamage3"},/area/awaymission/wwvault) -"ak" = (/turf/simulated/shuttle/plating{tag = "icon-cultdamage6";icon_state = "cultdamage6"},/area/awaymission/wwvault) +"ai" = (/obj/effect/forcefield{desc = "You can't get in. Heh."; layer = 1; name = "Blocker"},/turf/simulated/wall/cult,/area/awaymission/wwvault) +"aj" = (/turf/simulated/shuttle/plating{tag = "icon-cultdamage3"; icon_state = "cultdamage3"},/area/awaymission/wwvault) +"ak" = (/turf/simulated/shuttle/plating{tag = "icon-cultdamage6"; icon_state = "cultdamage6"},/area/awaymission/wwvault) "al" = (/obj/effect/gateway,/turf/simulated/floor/engine/cult,/area/awaymission/wwvault) -"am" = (/mob/living/simple_animal/hostile/faithless,/turf/simulated/shuttle/plating{tag = "icon-bcircuitoff";icon_state = "bcircuitoff"},/area/awaymission/wwvault) -"an" = (/obj/effect/forcefield{desc = "You can't get in. Heh.";layer = 1;name = "Blocker"},/turf/simulated/shuttle/wall,/area/awaymission/wwvault) -"ao" = (/turf/simulated/shuttle/plating{tag = "icon-gcircuitoff";icon_state = "gcircuitoff"},/area/awaymission/wwvault) -"ap" = (/obj/machinery/wish_granter_dark,/turf/simulated/shuttle/plating{tag = "icon-gcircuitoff";icon_state = "gcircuitoff"},/area/awaymission/wwvault) -"aq" = (/obj/structure/cult/pylon,/turf/simulated/shuttle/plating{tag = "icon-gcircuitoff";icon_state = "gcircuitoff"},/area/awaymission/wwvault) -"ar" = (/obj/machinery/gateway{dir = 9},/turf/simulated/shuttle/plating{tag = "icon-gcircuitoff";icon_state = "gcircuitoff"},/area/awaymission/wwvault) -"as" = (/obj/machinery/gateway{dir = 5},/turf/simulated/shuttle/plating{tag = "icon-gcircuitoff";icon_state = "gcircuitoff"},/area/awaymission/wwvault) -"at" = (/obj/machinery/gateway{dir = 1},/turf/simulated/shuttle/plating{tag = "icon-gcircuitoff";icon_state = "gcircuitoff"},/area/awaymission/wwvault) -"au" = (/obj/machinery/gateway{dir = 8},/turf/simulated/shuttle/plating{tag = "icon-gcircuitoff";icon_state = "gcircuitoff"},/area/awaymission/wwvault) -"av" = (/obj/machinery/gateway{dir = 4},/turf/simulated/shuttle/plating{tag = "icon-gcircuitoff";icon_state = "gcircuitoff"},/area/awaymission/wwvault) -"aw" = (/obj/machinery/gateway/centeraway{calibrated = 0},/turf/simulated/shuttle/plating{tag = "icon-gcircuitoff";icon_state = "gcircuitoff"},/area/awaymission/wwvault) -"ax" = (/obj/machinery/gateway{dir = 10},/turf/simulated/shuttle/plating{tag = "icon-gcircuitoff";icon_state = "gcircuitoff"},/area/awaymission/wwvault) -"ay" = (/obj/machinery/gateway{dir = 6},/turf/simulated/shuttle/plating{tag = "icon-gcircuitoff";icon_state = "gcircuitoff"},/area/awaymission/wwvault) -"az" = (/obj/machinery/gateway,/turf/simulated/shuttle/plating{tag = "icon-gcircuitoff";icon_state = "gcircuitoff"},/area/awaymission/wwvault) -"aA" = (/obj/effect/meatgrinder,/turf/simulated/shuttle/plating{tag = "icon-gcircuitoff";icon_state = "gcircuitoff"},/area/awaymission/wwvault) -"aB" = (/obj/structure/cult/pylon,/turf/simulated/shuttle/plating{tag = "icon-bcircuitoff";icon_state = "bcircuitoff"},/area/awaymission/wwvault) -"aC" = (/turf/simulated/shuttle/plating{tag = "icon-cultdamage2";icon_state = "cultdamage2"},/area/awaymission/wwvault) +"am" = (/mob/living/simple_animal/hostile/faithless,/turf/simulated/shuttle/plating{tag = "icon-bcircuitoff"; icon_state = "bcircuitoff"},/area/awaymission/wwvault) +"an" = (/obj/effect/forcefield{desc = "You can't get in. Heh."; layer = 1; name = "Blocker"},/turf/simulated/shuttle/wall,/area/awaymission/wwvault) +"ao" = (/turf/simulated/shuttle/plating{tag = "icon-gcircuitoff"; icon_state = "gcircuitoff"},/area/awaymission/wwvault) +"ap" = (/obj/machinery/wish_granter_dark,/turf/simulated/shuttle/plating{tag = "icon-gcircuitoff"; icon_state = "gcircuitoff"},/area/awaymission/wwvault) +"aq" = (/obj/structure/cult/pylon,/turf/simulated/shuttle/plating{tag = "icon-gcircuitoff"; icon_state = "gcircuitoff"},/area/awaymission/wwvault) +"ar" = (/obj/machinery/gateway{dir = 9},/turf/simulated/shuttle/plating{tag = "icon-gcircuitoff"; icon_state = "gcircuitoff"},/area/awaymission/wwvault) +"as" = (/obj/machinery/gateway{dir = 5},/turf/simulated/shuttle/plating{tag = "icon-gcircuitoff"; icon_state = "gcircuitoff"},/area/awaymission/wwvault) +"at" = (/obj/machinery/gateway{dir = 1},/turf/simulated/shuttle/plating{tag = "icon-gcircuitoff"; icon_state = "gcircuitoff"},/area/awaymission/wwvault) +"au" = (/obj/machinery/gateway{dir = 8},/turf/simulated/shuttle/plating{tag = "icon-gcircuitoff"; icon_state = "gcircuitoff"},/area/awaymission/wwvault) +"av" = (/obj/machinery/gateway{dir = 4},/turf/simulated/shuttle/plating{tag = "icon-gcircuitoff"; icon_state = "gcircuitoff"},/area/awaymission/wwvault) +"aw" = (/obj/machinery/gateway/centeraway{calibrated = 0},/turf/simulated/shuttle/plating{tag = "icon-gcircuitoff"; icon_state = "gcircuitoff"},/area/awaymission/wwvault) +"ax" = (/obj/machinery/gateway{dir = 10},/turf/simulated/shuttle/plating{tag = "icon-gcircuitoff"; icon_state = "gcircuitoff"},/area/awaymission/wwvault) +"ay" = (/obj/machinery/gateway{dir = 6},/turf/simulated/shuttle/plating{tag = "icon-gcircuitoff"; icon_state = "gcircuitoff"},/area/awaymission/wwvault) +"az" = (/obj/machinery/gateway,/turf/simulated/shuttle/plating{tag = "icon-gcircuitoff"; icon_state = "gcircuitoff"},/area/awaymission/wwvault) +"aA" = (/obj/effect/meatgrinder,/turf/simulated/shuttle/plating{tag = "icon-gcircuitoff"; icon_state = "gcircuitoff"},/area/awaymission/wwvault) +"aB" = (/obj/structure/cult/pylon,/turf/simulated/shuttle/plating{tag = "icon-bcircuitoff"; icon_state = "bcircuitoff"},/area/awaymission/wwvault) +"aC" = (/turf/simulated/shuttle/plating{tag = "icon-cultdamage2"; icon_state = "cultdamage2"},/area/awaymission/wwvault) "aD" = (/turf/simulated/floor/carpet,/area/awaymission/wwvault) "aE" = (/mob/living/simple_animal/hostile/faithless,/turf/simulated/floor/carpet,/area/awaymission/wwvault) "aF" = (/obj/machinery/door/airlock/vault{locked = 1},/turf/simulated/floor/engine/cult,/area/awaymission/wwvaultdoors) "aG" = (/turf/simulated/mineral,/area/space) -"aH" = (/obj/structure/cable{d2 = 8;icon_state = "0-8"},/obj/machinery/power/apc/noalarm{dir = 1;pixel_y = 32},/turf/simulated/floor/plasteel{dir = 8;icon_state = "barber"},/area/awaymission/wwmines) -"aI" = (/obj/machinery/power/smes/magical,/obj/structure/cable{icon_state = "0-4";d2 = 4},/turf/simulated/floor/plasteel{dir = 8;icon_state = "barber"},/area/awaymission/wwmines) +"aH" = (/obj/structure/cable{d2 = 8; icon_state = "0-8"},/obj/machinery/power/apc/noalarm{dir = 1; pixel_y = 32},/turf/simulated/floor/plasteel{dir = 8; icon_state = "barber"},/area/awaymission/wwmines) +"aI" = (/obj/machinery/power/smes/magical,/obj/structure/cable{icon_state = "0-4"; d2 = 4},/turf/simulated/floor/plasteel{dir = 8; icon_state = "barber"},/area/awaymission/wwmines) "aJ" = (/obj/machinery/door/airlock/vault{locked = 1},/turf/simulated/floor/engine/cult,/area/awaymission/wwvault) "aK" = (/obj/effect/mob_spawn/human/miner,/turf/simulated/floor/engine/cult,/area/awaymission/wwvault) -"aL" = (/turf/simulated/floor/plasteel{dir = 8;icon_state = "barber"},/area/awaymission/wwmines) +"aL" = (/turf/simulated/floor/plasteel{dir = 8; icon_state = "barber"},/area/awaymission/wwmines) "aM" = (/turf/simulated/mineral/random,/area/awaymission/wwmines) "aN" = (/turf/simulated/mineral,/area/awaymission/wwmines) -"aO" = (/obj/machinery/power/terminal{dir = 1},/turf/simulated/floor/plasteel{dir = 8;icon_state = "barber"},/area/awaymission/wwmines) -"aP" = (/obj/effect/forcefield{desc = "You can't get in. Heh.";layer = 1;name = "Blocker"},/turf/space,/area/space) -"aQ" = (/obj/effect/forcefield{desc = "You can't get in. Heh.";layer = 1;name = "Blocker"},/turf/simulated/mineral,/area/space) -"aR" = (/obj/effect/forcefield{desc = "You can't get in. Heh.";layer = 1;name = "Blocker"},/turf/simulated/mineral,/area/awaymission/wwmines) +"aO" = (/obj/machinery/power/terminal{dir = 1},/turf/simulated/floor/plasteel{dir = 8; icon_state = "barber"},/area/awaymission/wwmines) +"aP" = (/obj/effect/forcefield{desc = "You can't get in. Heh."; layer = 1; name = "Blocker"},/turf/space,/area/space) +"aQ" = (/obj/effect/forcefield{desc = "You can't get in. Heh."; layer = 1; name = "Blocker"},/turf/simulated/mineral,/area/space) +"aR" = (/obj/effect/forcefield{desc = "You can't get in. Heh."; layer = 1; name = "Blocker"},/turf/simulated/mineral,/area/awaymission/wwmines) "aS" = (/obj/effect/mob_spawn/human/corpse/syndicatecommando,/turf/simulated/floor/engine/cult,/area/awaymission/wwvault) -"aT" = (/obj/effect/forcefield{desc = "You can't get in. Heh.";layer = 1;name = "Blocker"},/turf/simulated/mineral/random,/area/awaymission/wwmines) +"aT" = (/obj/effect/forcefield{desc = "You can't get in. Heh."; layer = 1; name = "Blocker"},/turf/simulated/mineral/random,/area/awaymission/wwmines) "aU" = (/turf/simulated/wall/mineral/sandstone,/area/awaymission/wwrefine) -"aV" = (/obj/structure/ore_box,/turf/simulated/floor/plating/ironsand{tag = "icon-ironsand1";icon_state = "ironsand1"},/area/awaymission/wwmines) +"aV" = (/obj/structure/ore_box,/turf/simulated/floor/plating/ironsand,/area/awaymission/wwmines) "aW" = (/obj/item/paper{info = "meat grinder requires sacri"},/turf/simulated/floor/engine/cult,/area/awaymission/wwvault) -"aX" = (/turf/simulated/floor/plating/ironsand{tag = "icon-ironsand1";icon_state = "ironsand1"},/area/awaymission/wwmines) -"aY" = (/obj/effect/forcefield{desc = "You can't get in. Heh.";layer = 1;name = "Blocker"},/turf/simulated/mineral,/area/awaymission/wwrefine) +"aX" = (/turf/simulated/floor/plating/ironsand,/area/awaymission/wwmines) +"aY" = (/obj/effect/forcefield{desc = "You can't get in. Heh."; layer = 1; name = "Blocker"},/turf/simulated/mineral,/area/awaymission/wwrefine) "aZ" = (/obj/effect/decal/cleanable/cobweb,/turf/simulated/floor/plating,/area/awaymission/wwrefine) "ba" = (/turf/simulated/floor/plating,/area/awaymission/wwrefine) "bb" = (/obj/machinery/door/airlock/sandstone,/turf/simulated/floor/plating,/area/awaymission/wwrefine) -"bc" = (/obj/effect/forcefield{desc = "You can't get in. Heh.";layer = 1;name = "Blocker"},/turf/simulated/wall/mineral/sandstone,/area/awaymission/wwmines) -"bd" = (/obj/effect/decal/cleanable/blood/gibs/body{tag = "icon-gibup1";icon_state = "gibup1"},/turf/simulated/floor/plating/ironsand{tag = "icon-ironsand1";icon_state = "ironsand1"},/area/awaymission/wwmines) +"bc" = (/obj/effect/forcefield{desc = "You can't get in. Heh."; layer = 1; name = "Blocker"},/turf/simulated/wall/mineral/sandstone,/area/awaymission/wwmines) +"bd" = (/obj/effect/decal/cleanable/blood/gibs/body{tag = "icon-gibup1"; icon_state = "gibup1"},/turf/simulated/floor/plating/ironsand,/area/awaymission/wwmines) "be" = (/turf/simulated/wall/mineral/sandstone,/area/space) "bf" = (/obj/structure/largecrate,/turf/simulated/floor/plating,/area/awaymission/wwrefine) -"bg" = (/obj/effect/mine/dnascramble,/turf/simulated/floor/plating/ironsand{tag = "icon-ironsand1";icon_state = "ironsand1"},/area/awaymission/wwmines) +"bg" = (/obj/effect/mine/dnascramble,/turf/simulated/floor/plating/ironsand,/area/awaymission/wwmines) "bh" = (/turf/simulated/floor/wood,/area/awaymission/wwmines) "bi" = (/obj/effect/decal/cleanable/blood,/turf/simulated/floor/wood,/area/awaymission/wwmines) -"bj" = (/obj/effect/mine/dnascramble,/obj/item/ammo_box/c10mm,/turf/simulated/floor/plating/ironsand{tag = "icon-ironsand1";icon_state = "ironsand1"},/area/awaymission/wwmines) +"bj" = (/obj/effect/mine/dnascramble,/obj/item/ammo_box/c10mm,/turf/simulated/floor/plating/ironsand,/area/awaymission/wwmines) "bk" = (/obj/effect/mine/dnascramble,/turf/simulated/floor/wood,/area/awaymission/wwmines) "bl" = (/mob/living/simple_animal/hostile/syndicate/ranged/wildwest,/turf/simulated/floor/plating,/area/awaymission/wwrefine) "bm" = (/obj/structure/closet/crate,/turf/simulated/floor/plating,/area/awaymission/wwrefine) @@ -68,72 +68,72 @@ "bp" = (/obj/structure/lattice,/turf/space,/area/space) "bq" = (/obj/effect/mine/dnascramble,/obj/item/ammo_box/c10mm,/turf/simulated/floor/wood,/area/awaymission/wwmines) "br" = (/obj/structure/closet/crate,/obj/effect/decal/cleanable/cobweb,/turf/simulated/floor/plating,/area/awaymission/wwrefine) -"bs" = (/obj/item/ammo_box/c10mm,/turf/simulated/floor/plating/ironsand{tag = "icon-ironsand1";icon_state = "ironsand1"},/area/awaymission/wwmines) -"bt" = (/mob/living/simple_animal/hostile/syndicate/ranged/wildwest,/turf/simulated/floor/plating/ironsand{tag = "icon-ironsand1";icon_state = "ironsand1"},/area/awaymission/wwmines) -"bu" = (/obj/effect/mine/dnascramble,/obj/effect/mob_spawn/human/miner,/turf/simulated/floor/plating/ironsand{tag = "icon-ironsand1";icon_state = "ironsand1"},/area/awaymission/wwmines) -"bv" = (/obj/effect/decal/cleanable/blood/gibs/body{tag = "icon-gibup1";icon_state = "gibup1"},/turf/simulated/floor/wood,/area/awaymission/wwmines) -"bw" = (/obj/structure/lattice,/obj/structure/window/reinforced{tag = "icon-fwindow";icon_state = "fwindow"},/turf/space,/area/space) -"bx" = (/obj/structure/window/reinforced{tag = "icon-fwindow";icon_state = "fwindow"},/turf/space,/area/space) -"by" = (/obj/structure/closet/secure_closet/freezer/fridge,/turf/simulated/floor/plasteel{tag = "icon-cafeteria (NORTHEAST)";icon_state = "cafeteria";dir = 5},/area/awaymission/wwmines) +"bs" = (/obj/item/ammo_box/c10mm,/turf/simulated/floor/plating/ironsand,/area/awaymission/wwmines) +"bt" = (/mob/living/simple_animal/hostile/syndicate/ranged/wildwest,/turf/simulated/floor/plating/ironsand,/area/awaymission/wwmines) +"bu" = (/obj/effect/mine/dnascramble,/obj/effect/mob_spawn/human/miner,/turf/simulated/floor/plating/ironsand,/area/awaymission/wwmines) +"bv" = (/obj/effect/decal/cleanable/blood/gibs/body{tag = "icon-gibup1"; icon_state = "gibup1"},/turf/simulated/floor/wood,/area/awaymission/wwmines) +"bw" = (/obj/structure/lattice,/obj/structure/window/reinforced{tag = "icon-fwindow"; icon_state = "fwindow"},/turf/space,/area/space) +"bx" = (/obj/structure/window/reinforced{tag = "icon-fwindow"; icon_state = "fwindow"},/turf/space,/area/space) +"by" = (/obj/structure/closet/secure_closet/freezer/fridge,/turf/simulated/floor/plasteel{tag = "icon-cafeteria (NORTHEAST)"; icon_state = "cafeteria"; dir = 5},/area/awaymission/wwmines) "bz" = (/obj/structure/bed,/turf/simulated/floor/wood,/area/awaymission/wwmines) -"bA" = (/turf/simulated/floor/plasteel{tag = "icon-cafeteria (NORTHEAST)";icon_state = "cafeteria";dir = 5},/area/awaymission/wwmines) +"bA" = (/turf/simulated/floor/plasteel{tag = "icon-cafeteria (NORTHEAST)"; icon_state = "cafeteria"; dir = 5},/area/awaymission/wwmines) "bB" = (/obj/structure/table/wood,/turf/simulated/floor/wood,/area/awaymission/wwmines) "bC" = (/mob/living/simple_animal/hostile/syndicate/ranged/wildwest,/turf/simulated/floor/wood,/area/awaymission/wwmines) "bD" = (/turf/simulated/floor/carpet,/area/awaymission/wwmines) -"bE" = (/mob/living/simple_animal/hostile/syndicate/ranged/wildwest,/turf/simulated/floor/plasteel{tag = "icon-cafeteria (NORTHEAST)";icon_state = "cafeteria";dir = 5},/area/awaymission/wwmines) +"bE" = (/mob/living/simple_animal/hostile/syndicate/ranged/wildwest,/turf/simulated/floor/plasteel{tag = "icon-cafeteria (NORTHEAST)"; icon_state = "cafeteria"; dir = 5},/area/awaymission/wwmines) "bF" = (/obj/machinery/vending/dinnerware,/turf/simulated/floor/wood,/area/awaymission/wwmines) "bG" = (/obj/machinery/vending/boozeomat,/turf/simulated/floor/wood,/area/awaymission/wwmines) -"bH" = (/obj/structure/closet{icon_closed = "cabinet_closed";icon_opened = "cabinet_open";icon_state = "cabinet_closed"},/turf/simulated/floor/wood,/area/awaymission/wwmines) -"bI" = (/obj/structure/table/wood,/obj/machinery/light/small{tag = "icon-bulb1 (NORTH)";icon_state = "bulb1";dir = 1},/obj/item/gun/projectile/automatic/pistol,/turf/simulated/floor/wood,/area/awaymission/wwmines) -"bJ" = (/obj/machinery/light/small{tag = "icon-bulb1 (NORTH)";icon_state = "bulb1";dir = 1},/turf/simulated/floor/carpet,/area/awaymission/wwmines) -"bK" = (/obj/structure/table/wood,/obj/machinery/light/spot{tag = "icon-tube1 (NORTH)";icon_state = "tube1";dir = 1},/turf/simulated/floor/wood,/area/awaymission/wwmines) -"bL" = (/obj/structure/table/wood,/obj/machinery/light/small{tag = "icon-bulb1 (NORTH)";icon_state = "bulb1";dir = 1},/obj/item/kitchen/knife/butcher,/turf/simulated/floor/wood,/area/awaymission/wwmines) +"bH" = (/obj/structure/closet{icon_closed = "cabinet_closed"; icon_opened = "cabinet_open"; icon_state = "cabinet_closed"},/turf/simulated/floor/wood,/area/awaymission/wwmines) +"bI" = (/obj/structure/table/wood,/obj/machinery/light/small{tag = "icon-bulb1 (NORTH)"; icon_state = "bulb1"; dir = 1},/obj/item/gun/projectile/automatic/pistol,/turf/simulated/floor/wood,/area/awaymission/wwmines) +"bJ" = (/obj/machinery/light/small{tag = "icon-bulb1 (NORTH)"; icon_state = "bulb1"; dir = 1},/turf/simulated/floor/carpet,/area/awaymission/wwmines) +"bK" = (/obj/structure/table/wood,/obj/machinery/light/spot{tag = "icon-tube1 (NORTH)"; icon_state = "tube1"; dir = 1},/turf/simulated/floor/wood,/area/awaymission/wwmines) +"bL" = (/obj/structure/table/wood,/obj/machinery/light/small{tag = "icon-bulb1 (NORTH)"; icon_state = "bulb1"; dir = 1},/obj/item/kitchen/knife/butcher,/turf/simulated/floor/wood,/area/awaymission/wwmines) "bM" = (/turf/simulated/wall/mineral/sandstone,/area/awaymission/wwgov) "bN" = (/obj/structure/table/wood,/obj/item/book/manual/barman_recipes,/turf/simulated/floor/wood,/area/awaymission/wwmines) -"bO" = (/obj/structure/table/wood,/obj/machinery/light/small{tag = "icon-bulb1 (NORTH)";icon_state = "bulb1";dir = 1},/turf/simulated/floor/wood,/area/awaymission/wwmines) -"bP" = (/obj/machinery/light/spot{tag = "icon-tube1 (NORTH)";icon_state = "tube1";dir = 1},/turf/simulated/floor/wood,/area/awaymission/wwmines) -"bQ" = (/obj/structure/closet/secure_closet/freezer/kitchen,/turf/simulated/floor/plasteel{tag = "icon-cafeteria (NORTHEAST)";icon_state = "cafeteria";dir = 5},/area/awaymission/wwmines) -"bR" = (/obj/machinery/microwave,/turf/simulated/floor/plasteel{tag = "icon-cafeteria (NORTHEAST)";icon_state = "cafeteria";dir = 5},/area/awaymission/wwmines) -"bS" = (/obj/item/book/manual/chef_recipes,/obj/machinery/light/small{tag = "icon-bulb1 (NORTH)";icon_state = "bulb1";dir = 1},/turf/simulated/floor/plasteel{tag = "icon-cafeteria (NORTHEAST)";icon_state = "cafeteria";dir = 5},/area/awaymission/wwmines) -"bT" = (/obj/structure/closet/secure_closet/freezer/meat,/obj/item/reagent_containers/food/snacks/meat/syntiflesh,/obj/item/reagent_containers/food/snacks/meat/syntiflesh,/obj/item/reagent_containers/food/snacks/meat/syntiflesh,/obj/item/reagent_containers/food/snacks/meat/syntiflesh,/obj/item/reagent_containers/food/snacks/meat/syntiflesh,/turf/simulated/floor/plasteel{tag = "icon-cafeteria (NORTHEAST)";icon_state = "cafeteria";dir = 5},/area/awaymission/wwmines) -"bU" = (/obj/structure/lattice,/obj/structure/window/reinforced{tag = "icon-fwindow (EAST)";icon_state = "fwindow";dir = 4},/turf/space,/area/space) -"bV" = (/obj/structure/window/reinforced{tag = "icon-fwindow (NORTH)";icon_state = "fwindow";dir = 1},/obj/structure/window/reinforced{tag = "icon-fwindow";icon_state = "fwindow"},/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plating/ironsand{tag = "icon-ironsand1";icon_state = "ironsand1"},/area/awaymission/wwgov) -"bW" = (/obj/structure/window/reinforced{tag = "icon-fwindow (NORTH)";icon_state = "fwindow";dir = 1},/obj/structure/window/reinforced{tag = "icon-fwindow";icon_state = "fwindow"},/obj/structure/grille,/turf/simulated/floor/plating/ironsand{tag = "icon-ironsand1";icon_state = "ironsand1"},/area/awaymission/wwgov) -"bX" = (/obj/structure/window/reinforced{tag = "icon-fwindow (NORTH)";icon_state = "fwindow";dir = 1},/obj/structure/window/reinforced{tag = "icon-fwindow";icon_state = "fwindow"},/obj/structure/grille,/obj/structure/window/reinforced{tag = "icon-fwindow (EAST)";icon_state = "fwindow";dir = 4},/turf/simulated/floor/plating/ironsand{tag = "icon-ironsand1";icon_state = "ironsand1"},/area/awaymission/wwgov) +"bO" = (/obj/structure/table/wood,/obj/machinery/light/small{tag = "icon-bulb1 (NORTH)"; icon_state = "bulb1"; dir = 1},/turf/simulated/floor/wood,/area/awaymission/wwmines) +"bP" = (/obj/machinery/light/spot{tag = "icon-tube1 (NORTH)"; icon_state = "tube1"; dir = 1},/turf/simulated/floor/wood,/area/awaymission/wwmines) +"bQ" = (/obj/structure/closet/secure_closet/freezer/kitchen,/turf/simulated/floor/plasteel{tag = "icon-cafeteria (NORTHEAST)"; icon_state = "cafeteria"; dir = 5},/area/awaymission/wwmines) +"bR" = (/obj/machinery/microwave,/turf/simulated/floor/plasteel{tag = "icon-cafeteria (NORTHEAST)"; icon_state = "cafeteria"; dir = 5},/area/awaymission/wwmines) +"bS" = (/obj/item/book/manual/chef_recipes,/obj/machinery/light/small{tag = "icon-bulb1 (NORTH)"; icon_state = "bulb1"; dir = 1},/turf/simulated/floor/plasteel{tag = "icon-cafeteria (NORTHEAST)"; icon_state = "cafeteria"; dir = 5},/area/awaymission/wwmines) +"bT" = (/obj/structure/closet/secure_closet/freezer/meat,/obj/item/reagent_containers/food/snacks/meat/syntiflesh,/obj/item/reagent_containers/food/snacks/meat/syntiflesh,/obj/item/reagent_containers/food/snacks/meat/syntiflesh,/obj/item/reagent_containers/food/snacks/meat/syntiflesh,/obj/item/reagent_containers/food/snacks/meat/syntiflesh,/turf/simulated/floor/plasteel{tag = "icon-cafeteria (NORTHEAST)"; icon_state = "cafeteria"; dir = 5},/area/awaymission/wwmines) +"bU" = (/obj/structure/lattice,/obj/structure/window/reinforced{tag = "icon-fwindow (EAST)"; icon_state = "fwindow"; dir = 4},/turf/space,/area/space) +"bV" = (/obj/structure/window/reinforced{tag = "icon-fwindow (NORTH)"; icon_state = "fwindow"; dir = 1},/obj/structure/window/reinforced{tag = "icon-fwindow"; icon_state = "fwindow"},/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plating,/area/awaymission/wwgov) +"bW" = (/obj/structure/window/reinforced{tag = "icon-fwindow (NORTH)"; icon_state = "fwindow"; dir = 1},/obj/structure/window/reinforced{tag = "icon-fwindow"; icon_state = "fwindow"},/obj/structure/grille,/turf/simulated/floor/plating,/area/awaymission/wwgov) +"bX" = (/obj/structure/window/reinforced{tag = "icon-fwindow (NORTH)"; icon_state = "fwindow"; dir = 1},/obj/structure/window/reinforced{tag = "icon-fwindow"; icon_state = "fwindow"},/obj/structure/grille,/obj/structure/window/reinforced{tag = "icon-fwindow (EAST)"; icon_state = "fwindow"; dir = 4},/turf/simulated/floor/plating,/area/awaymission/wwgov) "bY" = (/obj/machinery/door/window,/turf/simulated/floor/wood,/area/awaymission/wwmines) "bZ" = (/obj/item/ammo_box/a357,/turf/simulated/floor/wood,/area/awaymission/wwmines) -"ca" = (/obj/structure/window/reinforced{tag = "icon-fwindow (WEST)";icon_state = "fwindow";dir = 8},/turf/space,/area/space) -"cb" = (/obj/machinery/light/small{tag = "icon-bulb1 (WEST)";icon_state = "bulb1";dir = 8},/turf/simulated/floor/plasteel{tag = "icon-cafeteria (NORTHEAST)";icon_state = "cafeteria";dir = 5},/area/awaymission/wwmines) -"cc" = (/obj/structure/chair/wood/normal{dir = 4},/turf/simulated/floor/plasteel{tag = "icon-cafeteria (NORTHEAST)";icon_state = "cafeteria";dir = 5},/area/awaymission/wwmines) -"cd" = (/obj/machinery/light/small{tag = "icon-bulb1 (EAST)";icon_state = "bulb1";dir = 4},/turf/simulated/floor/plasteel{tag = "icon-cafeteria (NORTHEAST)";icon_state = "cafeteria";dir = 5},/area/awaymission/wwmines) -"ce" = (/obj/structure/chair/wood/normal{dir = 8},/turf/simulated/floor/plasteel{tag = "icon-cafeteria (NORTHEAST)";icon_state = "cafeteria";dir = 5},/area/awaymission/wwmines) +"ca" = (/obj/structure/window/reinforced{tag = "icon-fwindow (WEST)"; icon_state = "fwindow"; dir = 8},/turf/space,/area/space) +"cb" = (/obj/machinery/light/small{tag = "icon-bulb1 (WEST)"; icon_state = "bulb1"; dir = 8},/turf/simulated/floor/plasteel{tag = "icon-cafeteria (NORTHEAST)"; icon_state = "cafeteria"; dir = 5},/area/awaymission/wwmines) +"cc" = (/obj/structure/chair/wood/normal{dir = 4},/turf/simulated/floor/plasteel{tag = "icon-cafeteria (NORTHEAST)"; icon_state = "cafeteria"; dir = 5},/area/awaymission/wwmines) +"cd" = (/obj/machinery/light/small{tag = "icon-bulb1 (EAST)"; icon_state = "bulb1"; dir = 4},/turf/simulated/floor/plasteel{tag = "icon-cafeteria (NORTHEAST)"; icon_state = "cafeteria"; dir = 5},/area/awaymission/wwmines) +"ce" = (/obj/structure/chair/wood/normal{dir = 8},/turf/simulated/floor/plasteel{tag = "icon-cafeteria (NORTHEAST)"; icon_state = "cafeteria"; dir = 5},/area/awaymission/wwmines) "cf" = (/obj/structure/mineral_door/wood,/turf/simulated/floor/wood,/area/awaymission/wwmines) "cg" = (/obj/structure/chair/stool,/turf/simulated/floor/carpet,/area/awaymission/wwmines) "ch" = (/obj/item/ammo_box/c10mm,/turf/simulated/floor/carpet,/area/awaymission/wwmines) "ci" = (/obj/structure/chair/stool,/turf/simulated/floor/wood,/area/awaymission/wwmines) -"cj" = (/obj/structure/window/reinforced{tag = "icon-fwindow (EAST)";icon_state = "fwindow";dir = 4},/turf/space,/area/space) +"cj" = (/obj/structure/window/reinforced{tag = "icon-fwindow (EAST)"; icon_state = "fwindow"; dir = 4},/turf/space,/area/space) "ck" = (/turf/simulated/floor/wood,/area/awaymission/wwgov) -"cl" = (/turf/simulated/floor/plating/ironsand{tag = "icon-ironsand1";icon_state = "ironsand1"},/area/awaymission/wwgov) -"cm" = (/obj/structure/window/reinforced{tag = "icon-fwindow (WEST)";icon_state = "fwindow";dir = 8},/obj/structure/window/reinforced{tag = "icon-fwindow (EAST)";icon_state = "fwindow";dir = 4},/obj/structure/grille,/obj/structure/window/reinforced{tag = "icon-fwindow (NORTH)";icon_state = "fwindow";dir = 1},/turf/simulated/floor/plating/ironsand{tag = "icon-ironsand1";icon_state = "ironsand1"},/area/awaymission/wwgov) -"cn" = (/turf/simulated/floor/plating/ironsand{tag = "icon-ironsand2";icon_state = "ironsand2"},/area/awaymission/wwgov) -"co" = (/obj/structure/window/reinforced{tag = "icon-fwindow (EAST)";icon_state = "fwindow";dir = 4},/obj/structure/window/reinforced{tag = "icon-fwindow (WEST)";icon_state = "fwindow";dir = 8},/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/turf/simulated/floor/plating/ironsand{tag = "icon-ironsand1";icon_state = "ironsand1"},/area/awaymission/wwgov) +"cl" = (/obj/structure/window/reinforced{tag = "icon-fwindow (WEST)"; icon_state = "fwindow"; dir = 8},/obj/structure/window/reinforced{tag = "icon-fwindow (EAST)"; icon_state = "fwindow"; dir = 4},/obj/structure/grille,/obj/structure/window/reinforced{tag = "icon-fwindow (NORTH)"; icon_state = "fwindow"; dir = 1},/turf/simulated/floor/plating,/area/awaymission/wwgov) +"cm" = (/turf/simulated/floor/plating/ironsand,/area/awaymission/wwgov) +"cn" = (/obj/structure/window/reinforced{tag = "icon-fwindow (EAST)"; icon_state = "fwindow"; dir = 4},/obj/structure/window/reinforced{tag = "icon-fwindow (WEST)"; icon_state = "fwindow"; dir = 8},/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/turf/simulated/floor/plating,/area/awaymission/wwgov) +"co" = (/obj/structure/window/reinforced{tag = "icon-fwindow (WEST)"; icon_state = "fwindow"; dir = 8},/obj/structure/window/reinforced{tag = "icon-fwindow (EAST)"; icon_state = "fwindow"; dir = 4},/obj/structure/grille,/turf/simulated/floor/plating,/area/awaymission/wwgov) "cp" = (/obj/structure/table/wood,/obj/item/gun/projectile/automatic/pistol,/turf/simulated/floor/wood,/area/awaymission/wwmines) -"cq" = (/obj/effect/mob_spawn/human/cook,/turf/simulated/floor/plasteel{tag = "icon-cafeteria (NORTHEAST)";icon_state = "cafeteria";dir = 5},/area/awaymission/wwmines) +"cq" = (/obj/effect/mob_spawn/human/cook,/turf/simulated/floor/plasteel{tag = "icon-cafeteria (NORTHEAST)"; icon_state = "cafeteria"; dir = 5},/area/awaymission/wwmines) "cr" = (/obj/structure/lattice,/obj/structure/lattice,/turf/space,/area/space) "cs" = (/obj/effect/decal/cleanable/blood/splatter,/turf/simulated/floor/carpet,/area/awaymission/wwmines) "ct" = (/turf/simulated/floor/carpet,/area/awaymission/wwgov) -"cu" = (/obj/structure/window/reinforced{tag = "icon-fwindow (WEST)";icon_state = "fwindow";dir = 8},/obj/structure/window/reinforced{tag = "icon-fwindow (EAST)";icon_state = "fwindow";dir = 4},/obj/structure/grille,/turf/simulated/floor/plating/ironsand{tag = "icon-ironsand1";icon_state = "ironsand1"},/area/awaymission/wwgov) +"cu" = (/obj/structure/window/reinforced{tag = "icon-fwindow (EAST)"; icon_state = "fwindow"; dir = 4},/obj/structure/window/reinforced{tag = "icon-fwindow (WEST)"; icon_state = "fwindow"; dir = 8},/obj/structure/grille,/turf/simulated/floor/plating,/area/awaymission/wwgov) "cv" = (/obj/structure/chair/wood/wings,/turf/simulated/floor/wood,/area/awaymission/wwgov) "cw" = (/obj/effect/decal/cleanable/blood/splatter,/turf/simulated/floor/wood,/area/awaymission/wwmines) -"cx" = (/obj/structure/window/reinforced{tag = "icon-fwindow (EAST)";icon_state = "fwindow";dir = 4},/obj/structure/window/reinforced{tag = "icon-fwindow (WEST)";icon_state = "fwindow";dir = 8},/obj/structure/grille,/turf/simulated/floor/plating/ironsand{tag = "icon-ironsand1";icon_state = "ironsand1"},/area/awaymission/wwgov) -"cy" = (/obj/item/paper{info = " The miners in the town have become sick and almost all production has stopped. They, in a fit of delusion, tossed all of their mining equipment into the furnaces. They all claimed the same thing. A voice beckoning them to lay down their arms. Stupid miners.";name = "Planer Saul's Journal: Page 4"},/turf/simulated/floor/plasteel{tag = "icon-cafeteria (NORTHEAST)";icon_state = "cafeteria";dir = 5},/area/awaymission/wwmines) +"cx" = (/obj/effect/mine/gas/plasma,/obj/item/ammo_box/c10mm,/turf/simulated/floor/plating/ironsand,/area/awaymission/wwmines) +"cy" = (/obj/item/paper{info = " The miners in the town have become sick and almost all production has stopped. They, in a fit of delusion, tossed all of their mining equipment into the furnaces. They all claimed the same thing. A voice beckoning them to lay down their arms. Stupid miners."; name = "Planer Saul's Journal: Page 4"},/turf/simulated/floor/plasteel{tag = "icon-cafeteria (NORTHEAST)"; icon_state = "cafeteria"; dir = 5},/area/awaymission/wwmines) "cz" = (/obj/item/storage/bag/money,/turf/simulated/floor/wood,/area/awaymission/wwgov) "cA" = (/obj/structure/chair/wood/normal{dir = 4},/turf/simulated/floor/wood,/area/awaymission/wwgov) -"cB" = (/obj/machinery/light/small{tag = "icon-bulb1 (WEST)";icon_state = "bulb1";dir = 8},/turf/simulated/floor/carpet,/area/awaymission/wwmines) +"cB" = (/obj/machinery/light/small{tag = "icon-bulb1 (WEST)"; icon_state = "bulb1"; dir = 8},/turf/simulated/floor/carpet,/area/awaymission/wwmines) "cC" = (/obj/effect/mob_spawn/human/miner,/turf/simulated/floor/wood,/area/awaymission/wwgov) -"cD" = (/obj/structure/bookcase{tag = "icon-book-5";icon_state = "book-5"},/turf/simulated/floor/wood,/area/awaymission/wwgov) -"cE" = (/obj/item/storage/bag/money,/obj/machinery/light/small{tag = "icon-bulb1 (NORTH)";icon_state = "bulb1";dir = 1},/turf/simulated/floor/wood,/area/awaymission/wwgov) -"cF" = (/obj/machinery/light/small{tag = "icon-bulb1 (NORTH)";icon_state = "bulb1";dir = 1},/turf/simulated/floor/wood,/area/awaymission/wwgov) +"cD" = (/obj/structure/bookcase{tag = "icon-book-5"; icon_state = "book-5"},/turf/simulated/floor/wood,/area/awaymission/wwgov) +"cE" = (/obj/item/storage/bag/money,/obj/machinery/light/small{tag = "icon-bulb1 (NORTH)"; icon_state = "bulb1"; dir = 1},/turf/simulated/floor/wood,/area/awaymission/wwgov) +"cF" = (/obj/machinery/light/small{tag = "icon-bulb1 (NORTH)"; icon_state = "bulb1"; dir = 1},/turf/simulated/floor/wood,/area/awaymission/wwgov) "cG" = (/obj/item/toy/sword,/turf/simulated/floor/wood,/area/awaymission/wwgov) "cH" = (/obj/effect/mob_spawn/human/corpse/syndicatecommando{mob_name = "Syndicate Commando"},/turf/simulated/floor/carpet,/area/awaymission/wwgov) "cI" = (/mob/living/simple_animal/hostile/creature,/turf/simulated/floor/wood,/area/awaymission/wwgov) @@ -141,253 +141,239 @@ "cK" = (/mob/living/simple_animal/hostile/creature,/turf/simulated/floor/carpet,/area/awaymission/wwgov) "cL" = (/obj/item/storage/bag/money,/turf/simulated/floor/carpet,/area/awaymission/wwgov) "cM" = (/obj/structure/chair/wood/wings{dir = 4},/turf/simulated/floor/wood,/area/awaymission/wwgov) -"cN" = (/turf/simulated/floor/plasteel{tag = "icon-stage_bleft";icon_state = "stage_bleft"},/area/awaymission/wwgov) +"cN" = (/turf/simulated/floor/plasteel{tag = "icon-stage_bleft"; icon_state = "stage_bleft"},/area/awaymission/wwgov) "cO" = (/obj/effect/decal/remains/human,/mob/living/simple_animal/hostile/syndicate/ranged/space{name = "Syndicate Commander"},/turf/simulated/floor/plating,/area/awaymission/wwrefine) -"cP" = (/obj/structure/closet/secure_closet/freezer/kitchen,/turf/simulated/floor/plasteel{tag = "icon-stage_bleft";icon_state = "stage_bleft"},/area/awaymission/wwgov) -"cQ" = (/obj/machinery/microwave,/obj/machinery/light/small{tag = "icon-bulb1 (NORTH)";icon_state = "bulb1";dir = 1},/turf/simulated/floor/plasteel{tag = "icon-stage_bleft";icon_state = "stage_bleft"},/area/awaymission/wwgov) -"cR" = (/obj/structure/closet/secure_closet/freezer/fridge,/turf/simulated/floor/plasteel{tag = "icon-stage_bleft";icon_state = "stage_bleft"},/area/awaymission/wwgov) -"cS" = (/obj/structure/lattice,/obj/structure/window/reinforced{tag = "icon-fwindow (WEST)";icon_state = "fwindow";dir = 8},/turf/space,/area/space) +"cP" = (/obj/structure/closet/secure_closet/freezer/kitchen,/turf/simulated/floor/plasteel{tag = "icon-stage_bleft"; icon_state = "stage_bleft"},/area/awaymission/wwgov) +"cQ" = (/obj/machinery/microwave,/obj/machinery/light/small{tag = "icon-bulb1 (NORTH)"; icon_state = "bulb1"; dir = 1},/turf/simulated/floor/plasteel{tag = "icon-stage_bleft"; icon_state = "stage_bleft"},/area/awaymission/wwgov) +"cR" = (/obj/structure/closet/secure_closet/freezer/fridge,/turf/simulated/floor/plasteel{tag = "icon-stage_bleft"; icon_state = "stage_bleft"},/area/awaymission/wwgov) +"cS" = (/obj/structure/lattice,/obj/structure/window/reinforced{tag = "icon-fwindow (WEST)"; icon_state = "fwindow"; dir = 8},/turf/space,/area/space) "cT" = (/obj/structure/chair/comfy/black{dir = 4},/turf/simulated/floor/wood,/area/awaymission/wwmines) "cU" = (/obj/structure/chair/comfy/teal{dir = 8},/turf/simulated/floor/wood,/area/awaymission/wwmines) "cV" = (/obj/structure/chair/wood/normal{dir = 4},/turf/simulated/floor/wood,/area/awaymission/wwmines) "cW" = (/obj/structure/chair/wood/normal{dir = 8},/turf/simulated/floor/wood,/area/awaymission/wwmines) "cX" = (/obj/item/clothing/gloves/color/yellow,/obj/item/multitool,/turf/simulated/floor/wood,/area/awaymission/wwgov) -"cY" = (/obj/machinery/light/small{tag = "icon-bulb1 (EAST)";icon_state = "bulb1";dir = 4},/turf/simulated/floor/wood,/area/awaymission/wwmines) -"cZ" = (/obj/effect/mine/gas/plasma,/obj/item/ammo_box/c10mm,/turf/simulated/floor/plating/ironsand{tag = "icon-ironsand1";icon_state = "ironsand1"},/area/awaymission/wwmines) +"cY" = (/obj/machinery/light/small{tag = "icon-bulb1 (EAST)"; icon_state = "bulb1"; dir = 4},/turf/simulated/floor/wood,/area/awaymission/wwmines) +"cZ" = (/obj/structure/window/reinforced{tag = "icon-fwindow (WEST)"; icon_state = "fwindow"; dir = 8},/obj/structure/window/reinforced{tag = "icon-fwindow (EAST)"; icon_state = "fwindow"; dir = 4},/obj/structure/grille,/obj/structure/window/reinforced{tag = "icon-fwindow"; icon_state = "fwindow"},/turf/simulated/floor/plating,/area/awaymission/wwgov) "da" = (/obj/effect/mob_spawn/human/miner,/turf/simulated/floor/wood,/area/awaymission/wwmines) "db" = (/obj/machinery/mineral/mint,/turf/simulated/floor/plating,/area/awaymission/wwrefine) -"dc" = (/obj/item/storage/toolbox/electrical,/obj/machinery/light/small{tag = "icon-bulb1 (WEST)";icon_state = "bulb1";dir = 8},/turf/simulated/floor/wood,/area/awaymission/wwgov) -"dd" = (/obj/machinery/light/small{tag = "icon-bulb1 (EAST)";icon_state = "bulb1";dir = 4},/turf/simulated/floor/wood,/area/awaymission/wwgov) -"de" = (/obj/machinery/light/small{tag = "icon-bulb1 (WEST)";icon_state = "bulb1";dir = 8},/turf/simulated/floor/wood,/area/awaymission/wwgov) +"dc" = (/obj/item/storage/toolbox/electrical,/obj/machinery/light/small{tag = "icon-bulb1 (WEST)"; icon_state = "bulb1"; dir = 8},/turf/simulated/floor/wood,/area/awaymission/wwgov) +"dd" = (/obj/machinery/light/small{tag = "icon-bulb1 (EAST)"; icon_state = "bulb1"; dir = 4},/turf/simulated/floor/wood,/area/awaymission/wwgov) +"de" = (/obj/machinery/light/small{tag = "icon-bulb1 (WEST)"; icon_state = "bulb1"; dir = 8},/turf/simulated/floor/wood,/area/awaymission/wwgov) "df" = (/obj/structure/window/reinforced{dir = 4},/turf/space,/area/space) -"dg" = (/obj/machinery/light/small{tag = "icon-bulb1 (WEST)";icon_state = "bulb1";dir = 8},/turf/simulated/floor/plasteel{tag = "icon-stage_bleft";icon_state = "stage_bleft"},/area/awaymission/wwgov) -"dh" = (/mob/living/simple_animal/hostile/creature,/turf/simulated/floor/plasteel{tag = "icon-stage_bleft";icon_state = "stage_bleft"},/area/awaymission/wwgov) -"di" = (/obj/machinery/light/small{tag = "icon-bulb1 (EAST)";icon_state = "bulb1";dir = 4},/turf/simulated/floor/plasteel{tag = "icon-stage_bleft";icon_state = "stage_bleft"},/area/awaymission/wwgov) -"dj" = (/obj/structure/bookcase{tag = "icon-book-5";icon_state = "book-5"},/turf/simulated/floor/wood,/area/awaymission/wwmines) -"dk" = (/obj/machinery/light/small{tag = "icon-bulb1 (NORTH)";icon_state = "bulb1";dir = 1},/turf/simulated/floor/wood,/area/awaymission/wwmines) +"dg" = (/obj/machinery/light/small{tag = "icon-bulb1 (WEST)"; icon_state = "bulb1"; dir = 8},/turf/simulated/floor/plasteel{tag = "icon-stage_bleft"; icon_state = "stage_bleft"},/area/awaymission/wwgov) +"dh" = (/mob/living/simple_animal/hostile/creature,/turf/simulated/floor/plasteel{tag = "icon-stage_bleft"; icon_state = "stage_bleft"},/area/awaymission/wwgov) +"di" = (/obj/machinery/light/small{tag = "icon-bulb1 (EAST)"; icon_state = "bulb1"; dir = 4},/turf/simulated/floor/plasteel{tag = "icon-stage_bleft"; icon_state = "stage_bleft"},/area/awaymission/wwgov) +"dj" = (/obj/structure/bookcase{tag = "icon-book-5"; icon_state = "book-5"},/turf/simulated/floor/wood,/area/awaymission/wwmines) +"dk" = (/obj/machinery/light/small{tag = "icon-bulb1 (NORTH)"; icon_state = "bulb1"; dir = 1},/turf/simulated/floor/wood,/area/awaymission/wwmines) "dl" = (/obj/effect/decal/cleanable/blood/tracks,/turf/simulated/floor/wood,/area/awaymission/wwmines) "dm" = (/obj/effect/mine/gas/plasma,/obj/item/ammo_box/c10mm,/turf/simulated/floor/wood,/area/awaymission/wwmines) -"dn" = (/obj/effect/decal/cleanable/blood/splatter,/obj/machinery/light/small{tag = "icon-bulb1 (EAST)";icon_state = "bulb1";dir = 4},/turf/simulated/floor/wood,/area/awaymission/wwmines) -"do" = (/obj/machinery/light/small{tag = "icon-bulb1 (WEST)";icon_state = "bulb1";dir = 8},/turf/simulated/floor/wood,/area/awaymission/wwmines) +"dn" = (/obj/effect/decal/cleanable/blood/splatter,/obj/machinery/light/small{tag = "icon-bulb1 (EAST)"; icon_state = "bulb1"; dir = 4},/turf/simulated/floor/wood,/area/awaymission/wwmines) +"do" = (/obj/machinery/light/small{tag = "icon-bulb1 (WEST)"; icon_state = "bulb1"; dir = 8},/turf/simulated/floor/wood,/area/awaymission/wwmines) "dp" = (/obj/effect/decal/cleanable/blood/splatter,/obj/effect/mob_spawn/human/miner,/turf/simulated/floor/carpet,/area/awaymission/wwmines) "dq" = (/obj/item/reagent_containers/food/condiment/peppermill,/turf/simulated/floor/wood,/area/awaymission/wwmines) "dr" = (/obj/item/reagent_containers/food/condiment/saltshaker,/turf/simulated/floor/wood,/area/awaymission/wwmines) -"ds" = (/obj/structure/window/reinforced{tag = "icon-fwindow (WEST)";icon_state = "fwindow";dir = 8},/obj/structure/window/reinforced{tag = "icon-fwindow (EAST)";icon_state = "fwindow";dir = 4},/obj/structure/grille,/obj/structure/window/reinforced{tag = "icon-fwindow";icon_state = "fwindow"},/turf/simulated/floor/plating/ironsand{tag = "icon-ironsand1";icon_state = "ironsand1"},/area/awaymission/wwgov) +"ds" = (/obj/structure/window/reinforced{tag = "icon-fwindow (EAST)"; icon_state = "fwindow"; dir = 4},/obj/structure/window/reinforced{tag = "icon-fwindow (WEST)"; icon_state = "fwindow"; dir = 8},/obj/structure/grille,/obj/structure/window/reinforced{tag = "icon-fwindow"; icon_state = "fwindow"},/turf/simulated/floor/plating,/area/awaymission/wwgov) "dt" = (/obj/item/storage/toolbox/electrical,/turf/simulated/floor/wood,/area/awaymission/wwgov) -"du" = (/obj/structure/window/reinforced{tag = "icon-fwindow (EAST)";icon_state = "fwindow";dir = 4},/obj/structure/window/reinforced{tag = "icon-fwindow (WEST)";icon_state = "fwindow";dir = 8},/obj/structure/grille,/obj/structure/window/reinforced{tag = "icon-fwindow";icon_state = "fwindow"},/turf/simulated/floor/plating/ironsand{tag = "icon-ironsand1";icon_state = "ironsand1"},/area/awaymission/wwgov) +"du" = (/obj/structure/window/reinforced{tag = "icon-fwindow (WEST)"; icon_state = "fwindow"; dir = 8},/obj/structure/window/reinforced{tag = "icon-fwindow (EAST)"; icon_state = "fwindow"; dir = 4},/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/turf/simulated/floor/plating,/area/awaymission/wwgov) "dv" = (/obj/structure/largecrate,/turf/simulated/floor/wood,/area/awaymission/wwmines) -"dw" = (/obj/item/paper{info = "We've discovered something floating in space. We can't really tell how old it is, but it is scraped and bent to hell. There object is the size of about a room with double doors that we have yet to break into. It is a lot sturdier than we could have imagined. We have decided to call it 'The Vault' ";name = "Planer Saul's Journal: Page 1"},/turf/simulated/floor/carpet,/area/awaymission/wwgov) -"dx" = (/obj/item/reagent_containers/food/snacks/monkeysdelight,/turf/simulated/floor/plasteel{tag = "icon-stage_bleft";icon_state = "stage_bleft"},/area/awaymission/wwgov) -"dy" = (/obj/item/reagent_containers/food/snacks/stew,/turf/simulated/floor/plasteel{tag = "icon-stage_bleft";icon_state = "stage_bleft"},/area/awaymission/wwgov) -"dz" = (/obj/item/kitchen/knife,/turf/simulated/floor/plasteel{tag = "icon-stage_bleft";icon_state = "stage_bleft"},/area/awaymission/wwgov) +"dw" = (/obj/item/paper{info = "We've discovered something floating in space. We can't really tell how old it is, but it is scraped and bent to hell. There object is the size of about a room with double doors that we have yet to break into. It is a lot sturdier than we could have imagined. We have decided to call it 'The Vault' "; name = "Planer Saul's Journal: Page 1"},/turf/simulated/floor/carpet,/area/awaymission/wwgov) +"dx" = (/obj/item/reagent_containers/food/snacks/monkeysdelight,/turf/simulated/floor/plasteel{tag = "icon-stage_bleft"; icon_state = "stage_bleft"},/area/awaymission/wwgov) +"dy" = (/obj/item/reagent_containers/food/snacks/stew,/turf/simulated/floor/plasteel{tag = "icon-stage_bleft"; icon_state = "stage_bleft"},/area/awaymission/wwgov) +"dz" = (/obj/item/kitchen/knife,/turf/simulated/floor/plasteel{tag = "icon-stage_bleft"; icon_state = "stage_bleft"},/area/awaymission/wwgov) "dA" = (/obj/structure/chair/comfy/brown,/turf/simulated/floor/carpet,/area/awaymission/wwmines) "dB" = (/obj/structure/chair/comfy/beige,/turf/simulated/floor/carpet,/area/awaymission/wwmines) "dC" = (/obj/machinery/door/airlock/sandstone,/turf/simulated/floor/wood,/area/awaymission/wwmines) "dD" = (/obj/machinery/computer/security/telescreen/entertainment,/turf/simulated/floor/wood,/area/awaymission/wwmines) -"dE" = (/obj/structure/chair/comfy/black{dir = 4},/obj/machinery/light/small{tag = "icon-bulb1 (WEST)";icon_state = "bulb1";dir = 8},/turf/simulated/floor/wood,/area/awaymission/wwmines) -"dF" = (/obj/structure/chair/comfy/teal{dir = 8},/obj/machinery/light/small{tag = "icon-bulb1 (EAST)";icon_state = "bulb1";dir = 4},/turf/simulated/floor/wood,/area/awaymission/wwmines) -"dG" = (/obj/structure/window/reinforced{tag = "icon-fwindow (WEST)";icon_state = "fwindow";dir = 8},/obj/structure/window/reinforced{tag = "icon-fwindow (EAST)";icon_state = "fwindow";dir = 4},/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/turf/simulated/floor/plating/ironsand{tag = "icon-ironsand1";icon_state = "ironsand1"},/area/awaymission/wwgov) +"dE" = (/obj/structure/chair/comfy/black{dir = 4},/obj/machinery/light/small{tag = "icon-bulb1 (WEST)"; icon_state = "bulb1"; dir = 8},/turf/simulated/floor/wood,/area/awaymission/wwmines) +"dF" = (/obj/structure/chair/comfy/teal{dir = 8},/obj/machinery/light/small{tag = "icon-bulb1 (EAST)"; icon_state = "bulb1"; dir = 4},/turf/simulated/floor/wood,/area/awaymission/wwmines) +"dG" = (/obj/structure/window/reinforced{tag = "icon-fwindow (EAST)"; icon_state = "fwindow"; dir = 4},/obj/structure/window/reinforced{tag = "icon-fwindow (WEST)"; icon_state = "fwindow"; dir = 8},/obj/structure/grille,/obj/structure/window/reinforced{tag = "icon-fwindow (NORTH)"; icon_state = "fwindow"; dir = 1},/turf/simulated/floor/plating,/area/awaymission/wwgov) "dH" = (/obj/machinery/computer/security/telescreen/entertainment,/turf/simulated/wall/mineral/sandstone,/area/awaymission/wwmines) -"dI" = (/obj/machinery/light/small{tag = "icon-bulb1 (WEST)";icon_state = "bulb1";dir = 8},/mob/living/simple_animal/hostile/creature,/turf/simulated/floor/plasteel{tag = "icon-stage_bleft";icon_state = "stage_bleft"},/area/awaymission/wwgov) -"dJ" = (/obj/item/kitchen/rollingpin,/turf/simulated/floor/plasteel{tag = "icon-stage_bleft";icon_state = "stage_bleft"},/area/awaymission/wwgov) -"dK" = (/obj/structure/window/reinforced{tag = "icon-fwindow (EAST)";icon_state = "fwindow";dir = 4},/obj/structure/window/reinforced{tag = "icon-fwindow (WEST)";icon_state = "fwindow";dir = 8},/obj/structure/grille,/obj/structure/window/reinforced{tag = "icon-fwindow (NORTH)";icon_state = "fwindow";dir = 1},/turf/simulated/floor/plating/ironsand{tag = "icon-ironsand1";icon_state = "ironsand1"},/area/awaymission/wwgov) -"dL" = (/obj/structure/window/reinforced{dir = 5;max_integrity = 1e+007},/turf/simulated/floor/wood,/area/awaymission/wwmines) -"dM" = (/obj/structure/mineral_door/wood,/turf/simulated/floor/plating/ironsand{tag = "icon-ironsand1";icon_state = "ironsand1"},/area/awaymission/wwmines) -"dN" = (/obj/structure/mineral_door/wood,/obj/effect/decal/cleanable/blood/tracks,/turf/simulated/floor/plating/ironsand{tag = "icon-ironsand1";icon_state = "ironsand1"},/area/awaymission/wwmines) +"dI" = (/obj/machinery/light/small{tag = "icon-bulb1 (WEST)"; icon_state = "bulb1"; dir = 8},/mob/living/simple_animal/hostile/creature,/turf/simulated/floor/plasteel{tag = "icon-stage_bleft"; icon_state = "stage_bleft"},/area/awaymission/wwgov) +"dJ" = (/obj/item/kitchen/rollingpin,/turf/simulated/floor/plasteel{tag = "icon-stage_bleft"; icon_state = "stage_bleft"},/area/awaymission/wwgov) +"dK" = (/obj/machinery/light/small{tag = "icon-bulb1 (NORTH)"; icon_state = "bulb1"; dir = 1},/turf/simulated/floor/plating/ironsand,/area/awaymission/wwmines) +"dL" = (/obj/structure/window/reinforced{dir = 5; max_integrity = 1e+007},/turf/simulated/floor/wood,/area/awaymission/wwmines) +"dM" = (/obj/structure/mineral_door/wood,/turf/simulated/floor/plating/ironsand{tag = "icon-ironsand1"; icon_state = "ironsand1"},/area/awaymission/wwmines) +"dN" = (/obj/structure/mineral_door/wood,/obj/effect/decal/cleanable/blood/tracks,/turf/simulated/floor/plating/ironsand{tag = "icon-ironsand1"; icon_state = "ironsand1"},/area/awaymission/wwmines) "dO" = (/obj/structure/chair/comfy/beige{dir = 4},/turf/simulated/floor/carpet,/area/awaymission/wwmines) "dP" = (/obj/structure/bed,/obj/item/bedsheet/brown,/turf/simulated/floor/wood,/area/awaymission/wwgov) -"dQ" = (/obj/item/reagent_containers/food/drinks/bottle/wine,/turf/simulated/floor/plasteel{tag = "icon-stage_bleft";icon_state = "stage_bleft"},/area/awaymission/wwgov) -"dR" = (/obj/item/reagent_containers/food/drinks/bottle/patron,/turf/simulated/floor/plasteel{tag = "icon-stage_bleft";icon_state = "stage_bleft"},/area/awaymission/wwgov) -"dS" = (/obj/item/reagent_containers/food/drinks/drinkingglass,/obj/item/reagent_containers/food/drinks/drinkingglass,/obj/item/reagent_containers/food/drinks/drinkingglass,/obj/item/reagent_containers/food/drinks/drinkingglass,/obj/machinery/light/small,/turf/simulated/floor/plasteel{tag = "icon-stage_bleft";icon_state = "stage_bleft"},/area/awaymission/wwgov) +"dQ" = (/obj/item/reagent_containers/food/drinks/bottle/wine,/turf/simulated/floor/plasteel{tag = "icon-stage_bleft"; icon_state = "stage_bleft"},/area/awaymission/wwgov) +"dR" = (/obj/item/reagent_containers/food/drinks/bottle/patron,/turf/simulated/floor/plasteel{tag = "icon-stage_bleft"; icon_state = "stage_bleft"},/area/awaymission/wwgov) +"dS" = (/obj/item/reagent_containers/food/drinks/drinkingglass,/obj/item/reagent_containers/food/drinks/drinkingglass,/obj/item/reagent_containers/food/drinks/drinkingglass,/obj/item/reagent_containers/food/drinks/drinkingglass,/obj/machinery/light/small,/turf/simulated/floor/plasteel{tag = "icon-stage_bleft"; icon_state = "stage_bleft"},/area/awaymission/wwgov) "dT" = (/obj/structure/chair/comfy/beige{dir = 8},/turf/simulated/floor/carpet,/area/awaymission/wwmines) -"dU" = (/obj/machinery/light/small{tag = "icon-bulb1 (NORTH)";icon_state = "bulb1";dir = 1},/turf/simulated/floor/plating/ironsand{tag = "icon-ironsand1";icon_state = "ironsand1"},/area/awaymission/wwmines) -"dV" = (/obj/effect/decal/cleanable/blood/tracks,/turf/simulated/floor/plating/ironsand{tag = "icon-ironsand1";icon_state = "ironsand1"},/area/awaymission/wwmines) -"dW" = (/obj/effect/decal/cleanable/blood/splatter,/turf/simulated/floor/plating/ironsand{tag = "icon-ironsand1";icon_state = "ironsand1"},/area/awaymission/wwmines) -"dX" = (/turf/simulated/floor/plating/ironsand{tag = "icon-ironsand4";icon_state = "ironsand4"},/area/awaymission/wwgov) -"dY" = (/obj/machinery/light/small{tag = "icon-bulb1 (NORTH)";icon_state = "bulb1";dir = 1},/turf/simulated/floor/plating/ironsand{tag = "icon-ironsand1";icon_state = "ironsand1"},/area/awaymission/wwgov) -"dZ" = (/turf/simulated/floor/plating/ironsand{tag = "icon-ironsand12";icon_state = "ironsand12"},/area/awaymission/wwgov) -"ea" = (/turf/simulated/floor/plating/ironsand{tag = "icon-ironsand14";icon_state = "ironsand14"},/area/awaymission/wwgov) -"eb" = (/obj/machinery/light/small,/turf/simulated/floor/plating/ironsand{tag = "icon-ironsand1";icon_state = "ironsand1"},/area/awaymission/wwmines) -"ec" = (/obj/structure/toilet,/mob/living/simple_animal/hostile/creature,/turf/simulated/floor/plasteel{tag = "icon-white";icon_state = "white"},/area/awaymission/wwgov) -"ed" = (/turf/simulated/floor/plating/ironsand{tag = "icon-ironsand9";icon_state = "ironsand9"},/area/awaymission/wwgov) -"ee" = (/obj/structure/mineral_door/wood,/turf/simulated/floor/plating/ironsand{tag = "icon-ironsand1";icon_state = "ironsand1"},/area/awaymission/wwgov) -"ef" = (/obj/structure/largecrate,/obj/machinery/light/small{tag = "icon-bulb1 (NORTH)";icon_state = "bulb1";dir = 1},/turf/simulated/floor/wood,/area/awaymission/wwmines) -"eg" = (/turf/simulated/floor/plating/ironsand{tag = "icon-ironsand7";icon_state = "ironsand7"},/area/awaymission/wwgov) -"eh" = (/obj/machinery/light/small{tag = "icon-bulb1 (NORTH)";icon_state = "bulb1";dir = 1},/turf/simulated/floor/plasteel{tag = "icon-cafeteria (NORTHEAST)";icon_state = "cafeteria";dir = 5},/area/awaymission/wwmines) -"ei" = (/obj/machinery/washing_machine,/obj/machinery/light/small{tag = "icon-bulb1 (WEST)";icon_state = "bulb1";dir = 8},/turf/simulated/floor/plasteel{tag = "icon-cafeteria (NORTHEAST)";icon_state = "cafeteria";dir = 5},/area/awaymission/wwmines) +"dU" = (/obj/effect/decal/cleanable/blood/tracks,/turf/simulated/floor/plating/ironsand,/area/awaymission/wwmines) +"dV" = (/obj/effect/decal/cleanable/blood/splatter,/turf/simulated/floor/plating/ironsand,/area/awaymission/wwmines) +"dW" = (/obj/machinery/light/small{tag = "icon-bulb1 (NORTH)"; icon_state = "bulb1"; dir = 1},/turf/simulated/floor/plating/ironsand,/area/awaymission/wwgov) +"dX" = (/obj/machinery/light/small,/turf/simulated/floor/plating/ironsand,/area/awaymission/wwmines) +"dY" = (/obj/structure/mineral_door/wood,/turf/simulated/floor/plating/ironsand,/area/awaymission/wwgov) +"dZ" = (/obj/structure/window/reinforced{tag = "icon-fwindow"; icon_state = "fwindow"},/obj/structure/window/reinforced{tag = "icon-fwindow (NORTH)"; icon_state = "fwindow"; dir = 1},/obj/structure/grille,/obj/structure/window/reinforced{tag = "icon-fwindow (WEST)"; icon_state = "fwindow"; dir = 8},/turf/simulated/floor/plating,/area/awaymission/wwgov) +"ea" = (/obj/structure/window/reinforced{tag = "icon-fwindow"; icon_state = "fwindow"},/obj/structure/window/reinforced{tag = "icon-fwindow (NORTH)"; icon_state = "fwindow"; dir = 1},/obj/structure/grille,/turf/simulated/floor/plating,/area/awaymission/wwgov) +"eb" = (/obj/structure/window/reinforced{tag = "icon-fwindow"; icon_state = "fwindow"},/obj/structure/window/reinforced{tag = "icon-fwindow (NORTH)"; icon_state = "fwindow"; dir = 1},/obj/structure/grille,/obj/structure/window/reinforced{tag = "icon-fwindow (EAST)"; icon_state = "fwindow"; dir = 4},/turf/simulated/floor/plating,/area/awaymission/wwgov) +"ec" = (/obj/structure/toilet,/mob/living/simple_animal/hostile/creature,/turf/simulated/floor/plasteel{tag = "icon-white"; icon_state = "white"},/area/awaymission/wwgov) +"ed" = (/obj/machinery/door/airlock/sandstone,/turf/simulated/floor/plating/ironsand,/area/awaymission/wwgov) +"ee" = (/obj/structure/window/reinforced{tag = "icon-fwindow (WEST)"; icon_state = "fwindow"; dir = 8},/turf/simulated/floor/plating/ironsand,/area/awaymission/wwgov) +"ef" = (/obj/structure/largecrate,/obj/machinery/light/small{tag = "icon-bulb1 (NORTH)"; icon_state = "bulb1"; dir = 1},/turf/simulated/floor/wood,/area/awaymission/wwmines) +"eg" = (/obj/structure/window/reinforced{dir = 4},/turf/simulated/floor/plating/ironsand,/area/awaymission/wwgov) +"eh" = (/obj/machinery/light/small{tag = "icon-bulb1 (NORTH)"; icon_state = "bulb1"; dir = 1},/turf/simulated/floor/plasteel{tag = "icon-cafeteria (NORTHEAST)"; icon_state = "cafeteria"; dir = 5},/area/awaymission/wwmines) +"ei" = (/obj/machinery/washing_machine,/obj/machinery/light/small{tag = "icon-bulb1 (WEST)"; icon_state = "bulb1"; dir = 8},/turf/simulated/floor/plasteel{tag = "icon-cafeteria (NORTHEAST)"; icon_state = "cafeteria"; dir = 5},/area/awaymission/wwmines) "ej" = (/turf/simulated/wall/r_wall,/area/awaymission/wwrefine) "ek" = (/turf/simulated/floor/plasteel,/area/awaymission/wwrefine) "el" = (/obj/structure/bed,/obj/item/bedsheet/blue,/turf/simulated/floor/wood,/area/awaymission/wwmines) -"em" = (/obj/effect/decal/cleanable/blood/gibs/body{tag = "icon-gibdown1";icon_state = "gibdown1"},/turf/simulated/floor/carpet,/area/awaymission/wwmines) -"en" = (/obj/structure/chair/comfy/brown{tag = "icon-comfychair_brown (WEST)";icon_state = "comfychair_brown";dir = 8},/turf/simulated/floor/wood,/area/awaymission/wwmines) -"eo" = (/obj/effect/decal/cleanable/blood/gibs/body{tag = "icon-gibdown1";icon_state = "gibdown1"},/turf/simulated/floor/wood,/area/awaymission/wwmines) +"em" = (/obj/effect/decal/cleanable/blood/gibs/body{tag = "icon-gibdown1"; icon_state = "gibdown1"},/turf/simulated/floor/carpet,/area/awaymission/wwmines) +"en" = (/obj/structure/chair/comfy/brown{dir = 4},/turf/simulated/floor/wood,/area/awaymission/wwmines) +"eo" = (/obj/effect/decal/cleanable/blood/gibs/body{tag = "icon-gibdown1"; icon_state = "gibdown1"},/turf/simulated/floor/wood,/area/awaymission/wwmines) "ep" = (/obj/structure/table/wood,/obj/item/wildwest_communicator,/turf/simulated/floor/wood,/area/awaymission/wwmines) "eq" = (/obj/machinery/mineral/mint,/turf/simulated/floor/plasteel,/area/awaymission/wwrefine) +"er" = (/obj/effect/decal/cleanable/blood,/turf/simulated/floor/plating/ironsand,/area/awaymission/wwmines) "es" = (/obj/structure/chair/comfy/brown,/turf/simulated/floor/wood,/area/awaymission/wwmines) -"et" = (/obj/structure/chair/comfy/brown{tag = "icon-comfychair_brown (EAST)";icon_state = "comfychair_brown";dir = 4},/turf/simulated/floor/wood,/area/awaymission/wwmines) -"eu" = (/obj/structure/window/reinforced{tag = "icon-fwindow";icon_state = "fwindow"},/obj/structure/window/reinforced{tag = "icon-fwindow (NORTH)";icon_state = "fwindow";dir = 1},/obj/structure/grille,/obj/structure/window/reinforced{tag = "icon-fwindow (WEST)";icon_state = "fwindow";dir = 8},/turf/simulated/floor/plating/ironsand{tag = "icon-ironsand1";icon_state = "ironsand1"},/area/awaymission/wwgov) -"ev" = (/obj/structure/window/reinforced{tag = "icon-fwindow";icon_state = "fwindow"},/obj/structure/window/reinforced{tag = "icon-fwindow (NORTH)";icon_state = "fwindow";dir = 1},/obj/structure/grille,/turf/simulated/floor/plating/ironsand{tag = "icon-ironsand1";icon_state = "ironsand1"},/area/awaymission/wwgov) -"ew" = (/obj/machinery/door/airlock/sandstone,/turf/simulated/floor/plating/ironsand{tag = "icon-ironsand1";icon_state = "ironsand1"},/area/awaymission/wwgov) -"ex" = (/obj/structure/window/reinforced{tag = "icon-fwindow";icon_state = "fwindow"},/obj/structure/window/reinforced{tag = "icon-fwindow (NORTH)";icon_state = "fwindow";dir = 1},/obj/structure/grille,/obj/structure/window/reinforced{tag = "icon-fwindow (EAST)";icon_state = "fwindow";dir = 4},/turf/simulated/floor/plating/ironsand{tag = "icon-ironsand1";icon_state = "ironsand1"},/area/awaymission/wwgov) -"ey" = (/obj/machinery/shower{tag = "icon-shower (EAST)";icon_state = "shower";dir = 4},/turf/simulated/floor/plasteel{tag = "icon-cafeteria (NORTHEAST)";icon_state = "cafeteria";dir = 5},/area/awaymission/wwmines) +"et" = (/obj/structure/chair/comfy/brown{dir = 8},/turf/simulated/floor/wood,/area/awaymission/wwmines) +"eu" = (/obj/machinery/light/small{tag = "icon-bulb1 (WEST)"; icon_state = "bulb1"; dir = 8},/turf/simulated/floor/plating/ironsand,/area/awaymission/wwmines) +"ev" = (/obj/structure/window/reinforced,/obj/structure/window/reinforced{tag = "icon-fwindow (WEST)"; icon_state = "fwindow"; dir = 8},/obj/structure/window/reinforced{tag = "icon-fwindow (NORTH)"; icon_state = "fwindow"; dir = 1},/obj/structure/grille,/turf/simulated/floor/plating,/area/awaymission/wwrefine) +"ew" = (/obj/structure/window/reinforced,/obj/structure/window/reinforced{tag = "icon-fwindow (NORTH)"; icon_state = "fwindow"; dir = 1},/obj/structure/grille,/turf/simulated/floor/plating,/area/awaymission/wwrefine) +"ex" = (/obj/structure/window/reinforced{tag = "icon-fwindow (NORTH)"; icon_state = "fwindow"; dir = 1},/obj/structure/window/reinforced{tag = "icon-fwindow"; icon_state = "fwindow"},/obj/structure/grille,/turf/simulated/floor/plating,/area/awaymission/wwrefine) +"ey" = (/obj/machinery/shower{tag = "icon-shower (EAST)"; icon_state = "shower"; dir = 4},/turf/simulated/floor/plasteel{tag = "icon-cafeteria (NORTHEAST)"; icon_state = "cafeteria"; dir = 5},/area/awaymission/wwmines) "ez" = (/obj/structure/sign/vacuum,/turf/simulated/wall/r_wall,/area/awaymission/wwrefine) "eA" = (/obj/effect/mine/dnascramble,/obj/effect/mob_spawn/human/miner,/turf/simulated/floor/wood,/area/awaymission/wwmines) "eB" = (/obj/effect/decal/cleanable/blood/splatter,/turf/simulated/wall/mineral/sandstone,/area/awaymission/wwmines) -"eC" = (/obj/item/soap/syndie,/turf/simulated/floor/plasteel{tag = "icon-cafeteria (NORTHEAST)";icon_state = "cafeteria";dir = 5},/area/awaymission/wwmines) -"eD" = (/obj/machinery/shower{tag = "icon-shower (WEST)";icon_state = "shower";dir = 8},/turf/simulated/floor/plasteel{tag = "icon-cafeteria (NORTHEAST)";icon_state = "cafeteria";dir = 5},/area/awaymission/wwmines) -"eE" = (/obj/machinery/washing_machine,/turf/simulated/floor/plasteel{tag = "icon-cafeteria (NORTHEAST)";icon_state = "cafeteria";dir = 5},/area/awaymission/wwmines) +"eC" = (/obj/item/soap/syndie,/turf/simulated/floor/plasteel{tag = "icon-cafeteria (NORTHEAST)"; icon_state = "cafeteria"; dir = 5},/area/awaymission/wwmines) +"eD" = (/obj/machinery/shower{tag = "icon-shower (WEST)"; icon_state = "shower"; dir = 8},/turf/simulated/floor/plasteel{tag = "icon-cafeteria (NORTHEAST)"; icon_state = "cafeteria"; dir = 5},/area/awaymission/wwmines) +"eE" = (/obj/machinery/washing_machine,/turf/simulated/floor/plasteel{tag = "icon-cafeteria (NORTHEAST)"; icon_state = "cafeteria"; dir = 5},/area/awaymission/wwmines) "eF" = (/obj/item/reagent_containers/food/drinks/coffee,/turf/simulated/floor/carpet,/area/awaymission/wwmines) "eG" = (/obj/item/reagent_containers/food/snacks/donut/jelly/slimejelly,/turf/simulated/floor/carpet,/area/awaymission/wwmines) "eH" = (/obj/effect/mine/gas/plasma,/turf/simulated/floor/wood,/area/awaymission/wwmines) "eI" = (/obj/item/reagent_containers/food/snacks/donut,/turf/simulated/floor/carpet,/area/awaymission/wwmines) "eJ" = (/obj/structure/chair/comfy/brown{dir = 1},/turf/simulated/floor/carpet,/area/awaymission/wwmines) "eK" = (/obj/item/reagent_containers/food/snacks/donut/jelly,/turf/simulated/floor/carpet,/area/awaymission/wwmines) -"eL" = (/obj/structure/window/reinforced{tag = "icon-fwindow (NORTH)";icon_state = "fwindow";dir = 1},/turf/space,/area/space) -"eM" = (/obj/structure/lattice,/obj/structure/window/reinforced{tag = "icon-fwindow (NORTH)";icon_state = "fwindow";dir = 1},/turf/space,/area/space) -"eN" = (/obj/structure/window/reinforced{tag = "icon-fwindow (WEST)";icon_state = "fwindow";dir = 8},/turf/simulated/floor/plating/ironsand{tag = "icon-ironsand1";icon_state = "ironsand1"},/area/awaymission/wwgov) -"eO" = (/obj/structure/window/reinforced{tag = "icon-fwindow (NORTH)";icon_state = "fwindow";dir = 1},/obj/structure/window/reinforced{dir = 4},/turf/space,/area/space) -"eP" = (/obj/structure/window/reinforced{tag = "icon-fwindow (NORTH)";icon_state = "fwindow";dir = 1},/obj/structure/window/reinforced{tag = "icon-fwindow (WEST)";icon_state = "fwindow";dir = 8},/turf/space,/area/space) -"eQ" = (/obj/structure/window/reinforced{dir = 4},/turf/simulated/floor/plating/ironsand{tag = "icon-ironsand1";icon_state = "ironsand1"},/area/awaymission/wwgov) +"eL" = (/obj/structure/window/reinforced{tag = "icon-fwindow (NORTH)"; icon_state = "fwindow"; dir = 1},/turf/space,/area/space) +"eM" = (/obj/structure/lattice,/obj/structure/window/reinforced{tag = "icon-fwindow (NORTH)"; icon_state = "fwindow"; dir = 1},/turf/space,/area/space) +"eN" = (/obj/structure/window/reinforced{tag = "icon-fwindow (EAST)"; icon_state = "fwindow"; dir = 4},/obj/structure/window/reinforced{tag = "icon-fwindow (NORTH)"; icon_state = "fwindow"; dir = 1},/obj/structure/window/reinforced{tag = "icon-fwindow"; icon_state = "fwindow"},/obj/structure/grille,/turf/simulated/floor/plating,/area/awaymission/wwrefine) +"eO" = (/obj/structure/window/reinforced{tag = "icon-fwindow (NORTH)"; icon_state = "fwindow"; dir = 1},/obj/structure/window/reinforced{dir = 4},/turf/space,/area/space) +"eP" = (/obj/structure/window/reinforced{tag = "icon-fwindow (NORTH)"; icon_state = "fwindow"; dir = 1},/obj/structure/window/reinforced{tag = "icon-fwindow (WEST)"; icon_state = "fwindow"; dir = 8},/turf/space,/area/space) +"eQ" = (/obj/structure/window/reinforced{tag = "icon-fwindow (EAST)"; icon_state = "fwindow"; dir = 4},/obj/structure/window/reinforced{tag = "icon-fwindow (NORTH)"; icon_state = "fwindow"; dir = 1},/obj/structure/grille,/turf/simulated/floor/plating,/area/awaymission/wwrefine) "eR" = (/obj/machinery/door/airlock/external,/turf/simulated/floor/plasteel,/area/awaymission/wwrefine) -"eS" = (/obj/effect/decal/cleanable/blood,/turf/simulated/floor/plating/ironsand{tag = "icon-ironsand1";icon_state = "ironsand1"},/area/awaymission/wwmines) -"eT" = (/obj/effect/mine/gas/plasma,/turf/simulated/floor/plasteel{tag = "icon-cafeteria (NORTHEAST)";icon_state = "cafeteria";dir = 5},/area/awaymission/wwmines) +"eS" = (/obj/structure/window/reinforced{tag = "icon-fwindow (WEST)"; icon_state = "fwindow"; dir = 8},/obj/structure/window/reinforced{tag = "icon-fwindow (EAST)"; icon_state = "fwindow"; dir = 4},/obj/structure/grille,/turf/simulated/floor/plating,/area/awaymission/wwrefine) +"eT" = (/obj/effect/mine/gas/plasma,/turf/simulated/floor/plasteel{tag = "icon-cafeteria (NORTHEAST)"; icon_state = "cafeteria"; dir = 5},/area/awaymission/wwmines) "eU" = (/obj/effect/mob_spawn/human/miner,/turf/simulated/floor/plasteel,/area/awaymission/wwrefine) -"eV" = (/obj/effect/decal/cleanable/blood,/obj/machinery/washing_machine,/turf/simulated/floor/plasteel{tag = "icon-cafeteria (NORTHEAST)";icon_state = "cafeteria";dir = 5},/area/awaymission/wwmines) +"eV" = (/obj/effect/decal/cleanable/blood,/obj/machinery/washing_machine,/turf/simulated/floor/plasteel{tag = "icon-cafeteria (NORTHEAST)"; icon_state = "cafeteria"; dir = 5},/area/awaymission/wwmines) "eW" = (/obj/structure/bed,/obj/item/bedsheet/blue,/obj/item/ammo_box/a357,/turf/simulated/floor/wood,/area/awaymission/wwmines) "eX" = (/turf/simulated/wall/mineral/sandstone,/area/awaymission/wwmines) -"eY" = (/obj/structure/chair/comfy/brown{tag = "icon-comfychair_brown (EAST)";icon_state = "comfychair_brown";dir = 4},/turf/simulated/floor/carpet,/area/awaymission/wwmines) -"eZ" = (/obj/structure/chair/comfy/brown{tag = "icon-comfychair_brown (WEST)";icon_state = "comfychair_brown";dir = 8},/turf/simulated/floor/carpet,/area/awaymission/wwmines) +"eY" = (/obj/structure/chair/comfy/brown{dir = 4},/turf/simulated/floor/carpet,/area/awaymission/wwmines) +"eZ" = (/obj/structure/chair/comfy/brown{dir = 8},/turf/simulated/floor/carpet,/area/awaymission/wwmines) "fa" = (/obj/structure/toilet{dir = 1},/turf/simulated/floor/wood,/area/awaymission/wwmines) "fb" = (/obj/structure/toilet{dir = 1},/obj/item/ammo_box/a357,/turf/simulated/floor/wood,/area/awaymission/wwmines) "fc" = (/obj/effect/decal/cleanable/blood,/turf/simulated/wall/mineral/sandstone,/area/awaymission/wwmines) -"fd" = (/obj/structure/window/reinforced{tag = "icon-fwindow (WEST)";icon_state = "fwindow";dir = 8},/turf/simulated/floor/plating/ironsand{tag = "icon-ironsand12";icon_state = "ironsand12"},/area/awaymission/wwgov) +"fd" = (/obj/structure/window/reinforced{tag = "icon-fwindow (WEST)"; icon_state = "fwindow"; dir = 8},/obj/structure/window/reinforced{tag = "icon-fwindow (EAST)"; icon_state = "fwindow"; dir = 4},/obj/structure/grille,/obj/structure/window/reinforced,/turf/simulated/floor/plating,/area/awaymission/wwrefine) "fe" = (/obj/structure/chair/comfy/beige{dir = 4},/turf/simulated/floor/wood,/area/awaymission/wwmines) -"ff" = (/obj/structure/window/reinforced{dir = 4},/turf/simulated/floor/plating/ironsand{tag = "icon-ironsand2";icon_state = "ironsand2"},/area/awaymission/wwgov) -"fg" = (/obj/effect/decal/cleanable/blood,/turf/simulated/floor/plasteel{tag = "icon-cafeteria (NORTHEAST)";icon_state = "cafeteria";dir = 5},/area/awaymission/wwmines) -"fh" = (/obj/effect/mob_spawn/human/doctor,/turf/simulated/floor/plasteel{dir = 8;icon_state = "barber"},/area/awaymission/wwmines) +"ff" = (/obj/effect/mine/gas/plasma,/turf/simulated/floor/plating/ironsand,/area/awaymission/wwmines) +"fg" = (/obj/effect/decal/cleanable/blood,/turf/simulated/floor/plasteel{tag = "icon-cafeteria (NORTHEAST)"; icon_state = "cafeteria"; dir = 5},/area/awaymission/wwmines) +"fh" = (/obj/effect/mob_spawn/human/doctor,/turf/simulated/floor/plasteel{dir = 8; icon_state = "barber"},/area/awaymission/wwmines) "fi" = (/obj/item/storage/firstaid/brute,/obj/item/storage/firstaid/o2,/obj/item/storage/firstaid/adv,/obj/item/storage/firstaid/toxin,/obj/structure/closet/crate,/turf/simulated/floor/wood,/area/awaymission/wwmines) -"fj" = (/obj/structure/window/reinforced{tag = "icon-fwindow (WEST)";icon_state = "fwindow";dir = 8},/turf/simulated/floor/plating/ironsand{tag = "icon-ironsand7";icon_state = "ironsand7"},/area/awaymission/wwgov) -"fk" = (/obj/structure/window/reinforced{dir = 4},/turf/simulated/floor/plating/ironsand{tag = "icon-ironsand4";icon_state = "ironsand4"},/area/awaymission/wwgov) -"fl" = (/obj/machinery/light/small,/turf/simulated/floor/plasteel{tag = "icon-cafeteria (NORTHEAST)";icon_state = "cafeteria";dir = 5},/area/awaymission/wwmines) +"fj" = (/obj/effect/decal/cleanable/blood/gibs/body{tag = "icon-gibdown1"; icon_state = "gibdown1"},/turf/simulated/floor/plating/ironsand,/area/awaymission/wwmines) +"fk" = (/obj/effect/decal/cleanable/blood/gibs/body,/turf/simulated/floor/plating/ironsand,/area/awaymission/wwmines) +"fl" = (/obj/machinery/light/small,/turf/simulated/floor/plasteel{tag = "icon-cafeteria (NORTHEAST)"; icon_state = "cafeteria"; dir = 5},/area/awaymission/wwmines) "fm" = (/obj/structure/chair/office/dark{dir = 8},/turf/simulated/floor/wood,/area/awaymission/wwmines) "fn" = (/obj/structure/chair/office/dark{dir = 4},/turf/simulated/floor/wood,/area/awaymission/wwmines) "fo" = (/obj/structure/chair/office/light{dir = 4},/turf/simulated/floor/wood,/area/awaymission/wwmines) "fp" = (/obj/structure/chair/office/light{dir = 8},/turf/simulated/floor/wood,/area/awaymission/wwmines) -"fq" = (/obj/structure/window/reinforced{dir = 4},/turf/simulated/floor/plating/ironsand{tag = "icon-ironsand12";icon_state = "ironsand12"},/area/awaymission/wwgov) +"fq" = (/obj/structure/window/reinforced{tag = "icon-fwindow (WEST)"; icon_state = "fwindow"; dir = 8},/obj/structure/window/reinforced{tag = "icon-fwindow (EAST)"; icon_state = "fwindow"; dir = 4},/obj/structure/grille,/obj/structure/window/reinforced{tag = "icon-fwindow (NORTH)"; icon_state = "fwindow"; dir = 1},/turf/simulated/floor/plating,/area/awaymission/wwrefine) "fr" = (/obj/structure/bed,/obj/item/bedsheet/blue,/obj/item/gun/projectile/automatic/pistol,/turf/simulated/floor/wood,/area/awaymission/wwmines) "fs" = (/obj/effect/decal/cleanable/blood,/obj/structure/bed,/obj/item/bedsheet/blue,/turf/simulated/floor/wood,/area/awaymission/wwmines) "ft" = (/turf/simulated/floor/grass,/area/awaymission/wwgov) -"fu" = (/obj/machinery/light/small{tag = "icon-bulb1 (WEST)";icon_state = "bulb1";dir = 8},/turf/simulated/floor/plating/ironsand{tag = "icon-ironsand1";icon_state = "ironsand1"},/area/awaymission/wwmines) -"fv" = (/obj/effect/decal/cleanable/blood/gibs/body{tag = "icon-gibdown1";icon_state = "gibdown1"},/obj/machinery/light/small{tag = "icon-bulb1 (WEST)";icon_state = "bulb1";dir = 8},/turf/simulated/floor/wood,/area/awaymission/wwmines) +"fu" = (/obj/effect/decal/warning_stripes/northwest,/turf/simulated/floor/plasteel,/area/awaymission/wwrefine) +"fv" = (/obj/effect/decal/cleanable/blood/gibs/body{tag = "icon-gibdown1"; icon_state = "gibdown1"},/obj/machinery/light/small{tag = "icon-bulb1 (WEST)"; icon_state = "bulb1"; dir = 8},/turf/simulated/floor/wood,/area/awaymission/wwmines) "fw" = (/obj/item/reagent_containers/food/drinks/coffee,/obj/item/reagent_containers/food/snacks/donut/jelly/slimejelly,/turf/simulated/floor/carpet,/area/awaymission/wwmines) -"fx" = (/obj/structure/chair/comfy/beige{dir = 8},/obj/effect/decal/cleanable/blood/gibs/body{tag = "icon-gibdown1";icon_state = "gibdown1"},/turf/simulated/floor/carpet,/area/awaymission/wwmines) +"fx" = (/obj/structure/chair/comfy/beige{dir = 8},/obj/effect/decal/cleanable/blood/gibs/body{tag = "icon-gibdown1"; icon_state = "gibdown1"},/turf/simulated/floor/carpet,/area/awaymission/wwmines) "fy" = (/obj/effect/mob_spawn/human/corpse/syndicatecommando{mob_name = "Syndicate Commando"},/turf/simulated/floor/grass,/area/awaymission/wwgov) -"fz" = (/obj/structure/closet{icon_closed = "cabinet_closed";icon_opened = "cabinet_open";icon_state = "cabinet_closed"},/obj/machinery/light/small{tag = "icon-bulb1 (NORTH)";icon_state = "bulb1";dir = 1},/turf/simulated/floor/wood,/area/awaymission/wwmines) -"fA" = (/obj/structure/window/reinforced{dir = 4},/turf/simulated/floor/plating/ironsand{tag = "icon-ironsand7";icon_state = "ironsand7"},/area/awaymission/wwgov) +"fz" = (/obj/structure/closet{icon_closed = "cabinet_closed"; icon_opened = "cabinet_open"; icon_state = "cabinet_closed"},/obj/machinery/light/small{tag = "icon-bulb1 (NORTH)"; icon_state = "bulb1"; dir = 1},/turf/simulated/floor/wood,/area/awaymission/wwmines) +"fA" = (/obj/effect/decal/warning_stripes/northeast,/turf/simulated/floor/plasteel,/area/awaymission/wwrefine) "fB" = (/obj/structure/window/reinforced{dir = 4},/turf/simulated/floor/grass,/area/awaymission/wwgov) -"fC" = (/obj/structure/window/reinforced{tag = "icon-fwindow (WEST)";icon_state = "fwindow";dir = 8},/turf/simulated/floor/plating/ironsand{tag = "icon-ironsand14";icon_state = "ironsand14"},/area/awaymission/wwgov) +"fC" = (/obj/effect/decal/warning_stripes/southwest,/turf/simulated/floor/plasteel,/area/awaymission/wwrefine) "fD" = (/obj/effect/decal/cleanable/cobweb,/obj/effect/decal/cleanable/blood,/turf/simulated/floor/wood,/area/awaymission/wwmines) -"fE" = (/obj/structure/window/reinforced,/obj/structure/window/reinforced{tag = "icon-fwindow (NORTH)";icon_state = "fwindow";dir = 1},/obj/structure/grille,/turf/simulated/floor/plasteel,/area/awaymission/wwrefine) -"fF" = (/obj/structure/window/reinforced,/obj/structure/window/reinforced{tag = "icon-fwindow (WEST)";icon_state = "fwindow";dir = 8},/obj/structure/window/reinforced{tag = "icon-fwindow (NORTH)";icon_state = "fwindow";dir = 1},/obj/structure/grille,/turf/simulated/floor/plasteel,/area/awaymission/wwrefine) -"fG" = (/obj/structure/window/reinforced{tag = "icon-fwindow (EAST)";icon_state = "fwindow";dir = 4},/obj/structure/window/reinforced{tag = "icon-fwindow (NORTH)";icon_state = "fwindow";dir = 1},/obj/structure/window/reinforced{tag = "icon-fwindow";icon_state = "fwindow"},/obj/structure/grille,/turf/simulated/floor/plasteel,/area/awaymission/wwrefine) -"fH" = (/obj/structure/window/reinforced{tag = "icon-fwindow (NORTH)";icon_state = "fwindow";dir = 1},/obj/structure/window/reinforced{tag = "icon-fwindow";icon_state = "fwindow"},/obj/structure/grille,/turf/simulated/floor/plasteel,/area/awaymission/wwrefine) +"fE" = (/obj/effect/decal/warning_stripes/southeast,/turf/simulated/floor/plasteel,/area/awaymission/wwrefine) +"fF" = (/obj/effect/landmark{name = "wildwest_syndipod"},/obj/effect/decal/warning_stripes/southwest,/turf/simulated/floor/plasteel,/area/awaymission/wwrefine) +"fG" = (/obj/structure/window/reinforced,/obj/structure/window/reinforced{tag = "icon-fwindow (NORTH)"; icon_state = "fwindow"; dir = 1},/obj/structure/grille,/obj/structure/window/reinforced{tag = "icon-fwindow (WEST)"; icon_state = "fwindow"; dir = 8},/turf/simulated/floor/plating,/area/awaymission/wwrefine) +"fH" = (/obj/structure/window/reinforced{tag = "icon-fwindow (WEST)"; icon_state = "fwindow"; dir = 8},/obj/structure/window/reinforced{tag = "icon-fwindow (NORTH)"; icon_state = "fwindow"; dir = 1},/obj/structure/grille,/turf/simulated/floor/plating,/area/awaymission/wwrefine) "fI" = (/turf/simulated/floor/plasteel,/area/space) "fJ" = (/obj/effect/decal/cleanable/cobweb,/obj/structure/chair/office/dark{dir = 4},/turf/simulated/floor/wood,/area/awaymission/wwmines) -"fL" = (/obj/structure/chair/comfy/beige{dir = 1;icon_state = "comfychair_beige";tag = ""},/turf/simulated/floor/carpet,/area/awaymission/wwmines) -"fM" = (/obj/effect/decal/cleanable/blood/gibs/body{tag = "icon-gibup1";icon_state = "gibup1"},/turf/simulated/floor/carpet,/area/awaymission/wwmines) +"fK" = (/obj/structure/window/reinforced,/obj/structure/window/reinforced{tag = "icon-fwindow (NORTH)"; icon_state = "fwindow"; dir = 1},/obj/structure/grille,/obj/structure/window/reinforced{tag = "icon-fwindow (EAST)"; icon_state = "fwindow"; dir = 4},/turf/simulated/floor/plating,/area/awaymission/wwrefine) +"fL" = (/obj/structure/chair/comfy/beige{dir = 1},/turf/simulated/floor/carpet,/area/awaymission/wwmines) +"fM" = (/obj/effect/decal/cleanable/blood/gibs/body{tag = "icon-gibup1"; icon_state = "gibup1"},/turf/simulated/floor/carpet,/area/awaymission/wwmines) "fN" = (/obj/machinery/door/airlock/external,/turf/simulated/floor/grass,/area/awaymission/wwgov) "fO" = (/obj/effect/decal/cleanable/blood/gibs/core,/turf/simulated/floor/wood,/area/awaymission/wwmines) "fP" = (/mob/living/simple_animal/hostile/syndicate,/turf/simulated/floor/wood,/area/awaymission/wwmines) -"fQ" = (/obj/machinery/light/small{tag = "icon-bulb1 (NORTH)";icon_state = "bulb1";dir = 1},/turf/simulated/floor/plasteel{dir = 8;icon_state = "barber"},/area/awaymission/wwmines) -"fR" = (/obj/machinery/vending/coffee,/turf/simulated/floor/plasteel{dir = 8;icon_state = "barber"},/area/awaymission/wwmines) +"fQ" = (/obj/machinery/light/small{tag = "icon-bulb1 (NORTH)"; icon_state = "bulb1"; dir = 1},/turf/simulated/floor/plasteel{dir = 8; icon_state = "barber"},/area/awaymission/wwmines) +"fR" = (/obj/machinery/vending/coffee,/turf/simulated/floor/plasteel{dir = 8; icon_state = "barber"},/area/awaymission/wwmines) "fS" = (/mob/living/simple_animal/hostile/creature,/turf/simulated/floor/grass,/area/awaymission/wwgov) "fT" = (/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/turf/simulated/floor/grass,/area/awaymission/wwgov) -"fU" = (/obj/machinery/vending/cigarette,/turf/simulated/floor/plasteel{dir = 8;icon_state = "barber"},/area/awaymission/wwmines) +"fU" = (/obj/machinery/vending/cigarette,/turf/simulated/floor/plasteel{dir = 8; icon_state = "barber"},/area/awaymission/wwmines) "fV" = (/obj/effect/decal/cleanable/blood/gibs/up,/turf/simulated/floor/wood,/area/awaymission/wwmines) "fW" = (/obj/effect/decal/cleanable/blood/gibs/down,/turf/simulated/floor/wood,/area/awaymission/wwmines) -"fX" = (/obj/machinery/vending/snack,/turf/simulated/floor/plasteel{dir = 8;icon_state = "barber"},/area/awaymission/wwmines) +"fX" = (/obj/machinery/vending/snack,/turf/simulated/floor/plasteel{dir = 8; icon_state = "barber"},/area/awaymission/wwmines) "fY" = (/obj/machinery/washing_machine,/turf/simulated/floor/wood,/area/awaymission/wwmines) -"fZ" = (/obj/machinery/vending/cola,/obj/machinery/light/small{tag = "icon-bulb1 (NORTH)";icon_state = "bulb1";dir = 1},/turf/simulated/floor/plasteel{dir = 8;icon_state = "barber"},/area/awaymission/wwmines) -"ga" = (/obj/machinery/vending/cola,/turf/simulated/floor/plasteel{dir = 8;icon_state = "barber"},/area/awaymission/wwmines) -"gb" = (/obj/structure/window/reinforced{dir = 4},/turf/simulated/floor/plating/ironsand{tag = "icon-ironsand9";icon_state = "ironsand9"},/area/awaymission/wwgov) -"gc" = (/obj/structure/sink,/obj/machinery/light/small{tag = "icon-bulb1 (NORTH)";icon_state = "bulb1";dir = 1},/turf/simulated/floor/wood,/area/awaymission/wwmines) -"gd" = (/obj/effect/decal/cleanable/blood/gibs/body{tag = "icon-gibdown1";icon_state = "gibdown1"},/turf/simulated/floor/plasteel{dir = 8;icon_state = "barber"},/area/awaymission/wwmines) -"ge" = (/obj/item/stack/medical/bruise_pack,/turf/simulated/floor/plasteel{dir = 8;icon_state = "barber"},/area/awaymission/wwmines) -"gf" = (/obj/structure/window/reinforced{tag = "icon-fwindow (EAST)";icon_state = "fwindow";dir = 4},/obj/structure/window/reinforced{tag = "icon-fwindow (NORTH)";icon_state = "fwindow";dir = 1},/obj/structure/grille,/turf/simulated/floor/plasteel,/area/awaymission/wwrefine) -"gg" = (/obj/effect/decal/cleanable/blood/splatter,/turf/simulated/floor/plasteel{dir = 8;icon_state = "barber"},/area/awaymission/wwmines) -"gh" = (/obj/machinery/light/small{tag = "icon-bulb1 (EAST)";icon_state = "bulb1";dir = 4},/turf/simulated/floor/plasteel{dir = 8;icon_state = "barber"},/area/awaymission/wwmines) -"gi" = (/obj/structure/window/reinforced{tag = "icon-fwindow (WEST)";icon_state = "fwindow";dir = 8},/obj/structure/window/reinforced{tag = "icon-fwindow (EAST)";icon_state = "fwindow";dir = 4},/obj/structure/grille,/turf/simulated/floor/plasteel,/area/awaymission/wwrefine) +"fZ" = (/obj/machinery/vending/cola,/obj/machinery/light/small{tag = "icon-bulb1 (NORTH)"; icon_state = "bulb1"; dir = 1},/turf/simulated/floor/plasteel{dir = 8; icon_state = "barber"},/area/awaymission/wwmines) +"ga" = (/obj/machinery/vending/cola,/turf/simulated/floor/plasteel{dir = 8; icon_state = "barber"},/area/awaymission/wwmines) +"gb" = (/obj/structure/window/reinforced,/obj/structure/window/reinforced{tag = "icon-fwindow (NORTH)"; icon_state = "fwindow"; dir = 1},/obj/structure/window/reinforced{tag = "icon-fwindow (EAST)"; icon_state = "fwindow"; dir = 4},/obj/structure/grille,/turf/simulated/floor/plating,/area/awaymission/wwrefine) +"gc" = (/obj/structure/sink,/obj/machinery/light/small{tag = "icon-bulb1 (NORTH)"; icon_state = "bulb1"; dir = 1},/turf/simulated/floor/wood,/area/awaymission/wwmines) +"gd" = (/obj/effect/decal/cleanable/blood/gibs/body{tag = "icon-gibdown1"; icon_state = "gibdown1"},/turf/simulated/floor/plasteel{dir = 8; icon_state = "barber"},/area/awaymission/wwmines) +"ge" = (/obj/item/stack/medical/bruise_pack,/turf/simulated/floor/plasteel{dir = 8; icon_state = "barber"},/area/awaymission/wwmines) +"gf" = (/obj/structure/window/reinforced,/obj/structure/window/reinforced{tag = "icon-fwindow (EAST)"; icon_state = "fwindow"; dir = 4},/obj/structure/window/reinforced{tag = "icon-fwindow (WEST)"; icon_state = "fwindow"; dir = 8},/obj/structure/grille,/turf/simulated/floor/plating,/area/awaymission/wwrefine) +"gg" = (/obj/effect/decal/cleanable/blood/splatter,/turf/simulated/floor/plasteel{dir = 8; icon_state = "barber"},/area/awaymission/wwmines) +"gh" = (/obj/machinery/light/small{tag = "icon-bulb1 (EAST)"; icon_state = "bulb1"; dir = 4},/turf/simulated/floor/plasteel{dir = 8; icon_state = "barber"},/area/awaymission/wwmines) +"gi" = (/obj/effect/landmark{name = "awaystart"},/turf/simulated/floor/plating/ironsand,/area/awaymission/wwmines) "gj" = (/obj/structure/window/reinforced,/turf/simulated/floor/grass,/area/awaymission/wwgov) "gk" = (/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced,/turf/simulated/floor/grass,/area/awaymission/wwgov) -"gl" = (/obj/effect/decal/cleanable/blood/gibs/body{tag = "icon-gibdown1";icon_state = "gibdown1"},/turf/simulated/wall/mineral/sandstone,/area/awaymission/wwmines) -"gm" = (/obj/structure/chair/wood/normal{dir = 4},/turf/simulated/floor/plasteel{dir = 8;icon_state = "barber"},/area/awaymission/wwmines) -"gn" = (/obj/structure/chair/wood/normal{dir = 8},/turf/simulated/floor/plasteel{dir = 8;icon_state = "barber"},/area/awaymission/wwmines) -"go" = (/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{tag = "icon-fwindow";icon_state = "fwindow"},/turf/space,/area/space) -"gp" = (/obj/structure/window/reinforced{tag = "icon-fwindow (WEST)";icon_state = "fwindow";dir = 8},/obj/structure/window/reinforced{tag = "icon-fwindow";icon_state = "fwindow"},/turf/space,/area/space) -"gq" = (/obj/structure/window/reinforced{tag = "icon-fwindow (WEST)";icon_state = "fwindow";dir = 8},/obj/structure/window/reinforced{tag = "icon-fwindow (EAST)";icon_state = "fwindow";dir = 4},/obj/structure/grille,/obj/structure/window/reinforced,/turf/simulated/floor/plasteel,/area/awaymission/wwrefine) -"gr" = (/obj/effect/mine/gas/plasma,/turf/simulated/floor/plating/ironsand{tag = "icon-ironsand1";icon_state = "ironsand1"},/area/awaymission/wwmines) -"gs" = (/obj/effect/decal/cleanable/blood/gibs/body{tag = "icon-gibdown1";icon_state = "gibdown1"},/turf/simulated/floor/plating/ironsand{tag = "icon-ironsand1";icon_state = "ironsand1"},/area/awaymission/wwmines) -"gt" = (/obj/structure/chair/comfy/beige{dir = 4},/obj/machinery/light/small{tag = "icon-bulb1 (WEST)";icon_state = "bulb1";dir = 8},/turf/simulated/floor/wood,/area/awaymission/wwmines) -"gu" = (/obj/effect/decal/cleanable/blood/gibs/body{tag = "icon-gibup1";icon_state = "gibup1"},/turf/simulated/floor/plasteel{dir = 8;icon_state = "barber"},/area/awaymission/wwmines) -"gv" = (/obj/structure/window/reinforced{tag = "icon-fwindow (NORTH)";icon_state = "fwindow";dir = 1},/turf/simulated/floor/grass,/area/awaymission/wwgov) +"gl" = (/obj/effect/decal/cleanable/blood/gibs/body{tag = "icon-gibdown1"; icon_state = "gibdown1"},/turf/simulated/wall/mineral/sandstone,/area/awaymission/wwmines) +"gm" = (/obj/structure/chair/wood/normal{dir = 4},/turf/simulated/floor/plasteel{dir = 8; icon_state = "barber"},/area/awaymission/wwmines) +"gn" = (/obj/structure/chair/wood/normal{dir = 8},/turf/simulated/floor/plasteel{dir = 8; icon_state = "barber"},/area/awaymission/wwmines) +"go" = (/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{tag = "icon-fwindow"; icon_state = "fwindow"},/turf/space,/area/space) +"gp" = (/obj/structure/window/reinforced{tag = "icon-fwindow (WEST)"; icon_state = "fwindow"; dir = 8},/obj/structure/window/reinforced{tag = "icon-fwindow"; icon_state = "fwindow"},/turf/space,/area/space) +"gq" = (/obj/item/paper{info = "The syndicate have invaded. Their ships appeared out of nowhere and now they likely intend to kill us all and take everything. On the off-chance that the Vault may grant us sanctuary, many of us have decided to force our way inside and bolt the door, taking as many provisions with us as we can carry. In case you find this, send for help immediately and open the Vault. Find us inside."; name = "Planer Saul's Journal: Page 8"},/turf/simulated/floor/plating/ironsand,/area/awaymission/wwmines) +"gt" = (/obj/structure/chair/comfy/beige{dir = 4},/obj/machinery/light/small{tag = "icon-bulb1 (WEST)"; icon_state = "bulb1"; dir = 8},/turf/simulated/floor/wood,/area/awaymission/wwmines) +"gu" = (/obj/effect/decal/cleanable/blood/gibs/body{tag = "icon-gibup1"; icon_state = "gibup1"},/turf/simulated/floor/plasteel{dir = 8; icon_state = "barber"},/area/awaymission/wwmines) +"gv" = (/obj/structure/window/reinforced{tag = "icon-fwindow (NORTH)"; icon_state = "fwindow"; dir = 1},/turf/simulated/floor/grass,/area/awaymission/wwgov) "gw" = (/obj/effect/landmark{name = "wildwest_syndibackup"},/turf/simulated/floor/plasteel,/area/awaymission/wwrefine) -"gx" = (/obj/structure/window/reinforced{tag = "icon-fwindow (NORTH)";icon_state = "fwindow";dir = 1},/obj/structure/window/reinforced{tag = "icon-fwindow (WEST)";icon_state = "fwindow";dir = 8},/turf/simulated/floor/grass,/area/awaymission/wwgov) -"gy" = (/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{tag = "icon-fwindow (NORTH)";icon_state = "fwindow";dir = 1},/turf/simulated/floor/grass,/area/awaymission/wwgov) +"gx" = (/obj/structure/window/reinforced{tag = "icon-fwindow (NORTH)"; icon_state = "fwindow"; dir = 1},/obj/structure/window/reinforced{tag = "icon-fwindow (WEST)"; icon_state = "fwindow"; dir = 8},/turf/simulated/floor/grass,/area/awaymission/wwgov) +"gy" = (/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{tag = "icon-fwindow (NORTH)"; icon_state = "fwindow"; dir = 1},/turf/simulated/floor/grass,/area/awaymission/wwgov) "gz" = (/mob/living/simple_animal/hostile/syndicate{name = "Syndicate Comms Tech"},/turf/simulated/floor/wood,/area/awaymission/wwmines) -"gA" = (/obj/structure/window/reinforced{tag = "icon-fwindow (WEST)";icon_state = "fwindow";dir = 8},/obj/structure/lattice,/turf/space,/area/space) -"gB" = (/obj/effect/decal/cleanable/blood/gibs/body,/turf/simulated/floor/plating/ironsand{tag = "icon-ironsand1";icon_state = "ironsand1"},/area/awaymission/wwmines) +"gA" = (/obj/structure/window/reinforced{tag = "icon-fwindow (WEST)"; icon_state = "fwindow"; dir = 8},/obj/structure/lattice,/turf/space,/area/space) "gC" = (/obj/item/gun/projectile/shotgun,/turf/simulated/floor/wood,/area/awaymission/wwmines) -"gD" = (/obj/structure/chair/wood/normal,/turf/simulated/floor/plasteel{dir = 8;icon_state = "barber"},/area/awaymission/wwmines) -"gE" = (/obj/structure/window/reinforced{tag = "icon-fwindow (WEST)";icon_state = "fwindow";dir = 8},/turf/simulated/floor/grass,/area/awaymission/wwgov) -"gF" = (/obj/structure/window/reinforced{tag = "icon-fwindow (WEST)";icon_state = "fwindow";dir = 8},/obj/structure/window/reinforced{tag = "icon-fwindow (EAST)";icon_state = "fwindow";dir = 4},/obj/structure/grille,/obj/structure/window/reinforced{tag = "icon-fwindow (NORTH)";icon_state = "fwindow";dir = 1},/turf/simulated/floor/plasteel,/area/awaymission/wwrefine) -"gG" = (/obj/item/paper{info = "The Vault...it just keeps growing and growing. I went on my daily walk through the garden and now its just right outside the mansion... a few days ago it was only barely visible. But whatever is inside...its calling to me.";name = "Planer Sauls' Journal: Page 7"},/turf/simulated/floor/wood,/area/awaymission/wwmines) -"gH" = (/obj/structure/window/reinforced{tag = "icon-fwindow";icon_state = "fwindow"},/turf/simulated/floor/grass,/area/awaymission/wwgov) -"gI" = (/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{tag = "icon-fwindow";icon_state = "fwindow"},/turf/simulated/floor/grass,/area/awaymission/wwgov) -"gJ" = (/obj/structure/window/reinforced{tag = "icon-fwindow (WEST)";icon_state = "fwindow";dir = 8},/turf/simulated/floor/plasteel,/area/space) +"gD" = (/obj/structure/chair/wood/normal,/turf/simulated/floor/plasteel{dir = 8; icon_state = "barber"},/area/awaymission/wwmines) +"gE" = (/obj/structure/window/reinforced{tag = "icon-fwindow (WEST)"; icon_state = "fwindow"; dir = 8},/turf/simulated/floor/grass,/area/awaymission/wwgov) +"gG" = (/obj/item/paper{info = "The Vault...it just keeps growing and growing. I went on my daily walk through the garden and now its just right outside the mansion... a few days ago it was only barely visible. But whatever is inside...its calling to me."; name = "Planer Sauls' Journal: Page 7"},/turf/simulated/floor/wood,/area/awaymission/wwmines) +"gH" = (/obj/structure/window/reinforced{tag = "icon-fwindow"; icon_state = "fwindow"},/turf/simulated/floor/grass,/area/awaymission/wwgov) +"gI" = (/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{tag = "icon-fwindow"; icon_state = "fwindow"},/turf/simulated/floor/grass,/area/awaymission/wwgov) +"gJ" = (/obj/structure/window/reinforced{tag = "icon-fwindow (WEST)"; icon_state = "fwindow"; dir = 8},/turf/simulated/floor/plasteel,/area/space) "gK" = (/obj/item/gun/projectile/revolver/russian,/turf/simulated/floor/wood,/area/awaymission/wwmines) -"gL" = (/obj/structure/chair/wood/normal{dir = 1},/turf/simulated/floor/plasteel{dir = 8;icon_state = "barber"},/area/awaymission/wwmines) -"gM" = (/obj/machinery/photocopier,/obj/machinery/light/small{tag = "icon-bulb1 (NORTH)";icon_state = "bulb1";dir = 1},/turf/simulated/floor/wood,/area/awaymission/wwmines) -"gN" = (/obj/effect/decal/cleanable/blood/splatter,/obj/effect/forcefield{desc = "You can't get in. Heh.";layer = 1;name = "Blocker"},/turf/simulated/mineral,/area/awaymission/wwmines) +"gL" = (/obj/structure/chair/wood/normal{dir = 1},/turf/simulated/floor/plasteel{dir = 8; icon_state = "barber"},/area/awaymission/wwmines) +"gM" = (/obj/machinery/photocopier,/obj/machinery/light/small{tag = "icon-bulb1 (NORTH)"; icon_state = "bulb1"; dir = 1},/turf/simulated/floor/wood,/area/awaymission/wwmines) +"gN" = (/obj/effect/decal/cleanable/blood/splatter,/obj/effect/forcefield{desc = "You can't get in. Heh."; layer = 1; name = "Blocker"},/turf/simulated/mineral,/area/awaymission/wwmines) "gO" = (/obj/item/pickaxe/gold,/turf/simulated/floor/wood,/area/awaymission/wwmines) "gP" = (/obj/machinery/light/small,/turf/simulated/floor/wood,/area/awaymission/wwmines) -"gQ" = (/obj/structure/chair/comfy/beige{dir = 4},/obj/effect/decal/cleanable/blood/gibs/body{tag = "icon-gibdown1";icon_state = "gibdown1"},/turf/simulated/floor/wood,/area/awaymission/wwmines) -"gR" = (/obj/effect/decal/cleanable/blood/gibs/body{tag = "icon-gibup1";icon_state = "gibup1"},/obj/structure/chair/wood/normal,/turf/simulated/floor/plasteel{dir = 8;icon_state = "barber"},/area/awaymission/wwmines) -"gS" = (/turf/simulated/floor/plasteel{dir = 9;icon_state = "warning"},/area/awaymission/wwrefine) -"gT" = (/turf/simulated/floor/plasteel{dir = 5;icon_state = "warning"},/area/awaymission/wwrefine) +"gQ" = (/obj/structure/chair/comfy/beige{dir = 4},/obj/effect/decal/cleanable/blood/gibs/body{tag = "icon-gibdown1"; icon_state = "gibdown1"},/turf/simulated/floor/wood,/area/awaymission/wwmines) +"gR" = (/obj/effect/decal/cleanable/blood/gibs/body{tag = "icon-gibup1"; icon_state = "gibup1"},/obj/structure/chair/wood/normal,/turf/simulated/floor/plasteel{dir = 8; icon_state = "barber"},/area/awaymission/wwmines) "gU" = (/obj/item/hatchet,/turf/simulated/floor/wood,/area/awaymission/wwmines) -"gV" = (/turf/simulated/floor/plasteel{dir = 10;icon_state = "warning"},/area/awaymission/wwrefine) -"gW" = (/turf/simulated/floor/plasteel{dir = 6;icon_state = "warning"},/area/awaymission/wwrefine) -"gX" = (/obj/effect/landmark{name = "wildwest_syndipod"},/turf/simulated/floor/plasteel{dir = 10;icon_state = "warning"},/area/awaymission/wwrefine) -"gY" = (/obj/structure/window/reinforced,/obj/structure/window/reinforced{tag = "icon-fwindow (NORTH)";icon_state = "fwindow";dir = 1},/obj/structure/grille,/obj/structure/window/reinforced{tag = "icon-fwindow (WEST)";icon_state = "fwindow";dir = 8},/turf/simulated/floor/plasteel,/area/awaymission/wwrefine) -"gZ" = (/obj/structure/window/reinforced,/obj/structure/window/reinforced{tag = "icon-fwindow (NORTH)";icon_state = "fwindow";dir = 1},/obj/structure/grille,/obj/structure/window/reinforced{tag = "icon-fwindow (EAST)";icon_state = "fwindow";dir = 4},/turf/simulated/floor/plasteel,/area/awaymission/wwrefine) -"ha" = (/obj/structure/window/reinforced{tag = "icon-fwindow (WEST)";icon_state = "fwindow";dir = 8},/obj/structure/window/reinforced{tag = "icon-fwindow (NORTH)";icon_state = "fwindow";dir = 1},/obj/structure/grille,/turf/simulated/floor/plasteel,/area/awaymission/wwrefine) "hb" = (/obj/machinery/light/spot,/turf/simulated/floor/wood,/area/awaymission/wwmines) "hc" = (/obj/machinery/light/small,/turf/simulated/floor/wood,/area/awaymission/wwgov) -"hd" = (/obj/structure/window/reinforced,/obj/structure/window/reinforced{tag = "icon-fwindow (NORTH)";icon_state = "fwindow";dir = 1},/obj/structure/window/reinforced{tag = "icon-fwindow (EAST)";icon_state = "fwindow";dir = 4},/obj/structure/grille,/turf/simulated/floor/plasteel,/area/awaymission/wwrefine) -"he" = (/obj/structure/window/reinforced{tag = "icon-fwindow (WEST)";icon_state = "fwindow";dir = 8},/obj/structure/window/reinforced,/turf/simulated/floor/grass,/area/awaymission/wwgov) -"hf" = (/obj/structure/window/reinforced,/obj/structure/window/reinforced{tag = "icon-fwindow (EAST)";icon_state = "fwindow";dir = 4},/obj/structure/window/reinforced{tag = "icon-fwindow (WEST)";icon_state = "fwindow";dir = 8},/obj/structure/grille,/turf/simulated/floor/plasteel,/area/awaymission/wwrefine) -"hg" = (/obj/effect/decal/cleanable/blood,/obj/effect/forcefield{desc = "You can't get in. Heh.";layer = 1;name = "Blocker"},/turf/simulated/mineral,/area/awaymission/wwmines) -"hh" = (/turf/simulated/shuttle/wall{tag = "icon-swall12";icon_state = "swall12"},/area/awaymission/wwrefine) -"hi" = (/turf/space,/turf/simulated/shuttle/wall{tag = "icon-swall_f6";icon_state = "swall_f6";dir = 2},/area/awaymission/wwrefine) -"hj" = (/obj/machinery/door/unpowered/shuttle,/turf/simulated/shuttle{tag = "icon-floor2";icon_state = "floor2"},/area/awaymission/wwrefine) +"he" = (/obj/structure/window/reinforced{tag = "icon-fwindow (WEST)"; icon_state = "fwindow"; dir = 8},/obj/structure/window/reinforced,/turf/simulated/floor/grass,/area/awaymission/wwgov) +"hg" = (/obj/effect/decal/cleanable/blood,/obj/effect/forcefield{desc = "You can't get in. Heh."; layer = 1; name = "Blocker"},/turf/simulated/mineral,/area/awaymission/wwmines) +"hh" = (/turf/simulated/shuttle/wall{tag = "icon-swall12"; icon_state = "swall12"},/area/awaymission/wwrefine) +"hi" = (/turf/space,/turf/simulated/shuttle/wall{tag = "icon-swall_f6"; icon_state = "swall_f6"; dir = 2},/area/awaymission/wwrefine) +"hj" = (/obj/machinery/door/unpowered/shuttle,/turf/simulated/shuttle{tag = "icon-floor2"; icon_state = "floor2"},/area/awaymission/wwrefine) "hk" = (/obj/effect/decal/cleanable/blood/splatter,/obj/machinery/light/small,/turf/simulated/floor/wood,/area/awaymission/wwmines) -"hl" = (/turf/simulated/shuttle/wall{tag = "icon-swall8";icon_state = "swall8"},/area/awaymission/wwrefine) -"hm" = (/turf/simulated/shuttle/wall{tag = "icon-swall4";icon_state = "swall4"},/area/awaymission/wwrefine) -"hn" = (/turf/space,/turf/simulated/shuttle/wall{dir = 3;icon_state = "swall_f10";layer = 2;tag = "icon-swall_f10"},/area/awaymission/wwrefine) -"ho" = (/obj/structure/chair,/turf/simulated/shuttle{tag = "icon-floor2";icon_state = "floor2"},/area/awaymission/wwrefine) +"hl" = (/turf/simulated/shuttle/wall{tag = "icon-swall8"; icon_state = "swall8"},/area/awaymission/wwrefine) +"hm" = (/turf/simulated/shuttle/wall{tag = "icon-swall4"; icon_state = "swall4"},/area/awaymission/wwrefine) +"hn" = (/turf/space,/turf/simulated/shuttle/wall{dir = 3; icon_state = "swall_f10"; layer = 2; tag = "icon-swall_f10"},/area/awaymission/wwrefine) +"ho" = (/obj/structure/chair,/turf/simulated/shuttle{tag = "icon-floor2"; icon_state = "floor2"},/area/awaymission/wwrefine) "hp" = (/obj/structure/table/wood,/obj/machinery/light/small,/turf/simulated/floor/wood,/area/awaymission/wwmines) -"hq" = (/turf/simulated/shuttle/wall{tag = "icon-swall3";icon_state = "swall3"},/area/awaymission/wwrefine) -"hr" = (/turf/simulated/shuttle{tag = "icon-floor2";icon_state = "floor2"},/area/awaymission/wwrefine) -"hs" = (/turf/simulated/shuttle/wall{tag = "icon-swallc1";icon_state = "swallc1"},/area/awaymission/wwrefine) -"ht" = (/turf/space,/turf/simulated/shuttle/wall{tag = "icon-swall_f5";icon_state = "swall_f5";dir = 2},/area/awaymission/wwrefine) -"hu" = (/obj/effect/mob_spawn/human/miner,/turf/simulated/shuttle{tag = "icon-floor2";icon_state = "floor2"},/area/awaymission/wwrefine) -"hv" = (/turf/simulated/shuttle/wall{tag = "icon-swallc2";icon_state = "swallc2"},/area/awaymission/wwrefine) -"hw" = (/turf/space,/turf/simulated/shuttle/wall{tag = "icon-swall_f9";icon_state = "swall_f9";dir = 2},/area/awaymission/wwrefine) -"hx" = (/obj/effect/landmark{name = "awaystart"},/turf/simulated/floor/plating/ironsand{tag = "icon-ironsand1";icon_state = "ironsand1"},/area/awaymission/wwmines) -"hy" = (/obj/structure/table/reinforced,/obj/item/clothing/suit/space/syndicate/black/orange,/obj/item/clothing/head/helmet/space/syndicate/black/orange,/obj/item/clothing/mask/gas/syndicate,/obj/item/tank/oxygen,/obj/item/clothing/shoes/magboots,/turf/simulated/shuttle{tag = "icon-floor2";icon_state = "floor2"},/area/awaymission/wwrefine) -"hz" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{tag = "icon-fwindow";icon_state = "fwindow"},/turf/simulated/shuttle{tag = "icon-floor2";icon_state = "floor2"},/area/awaymission/wwrefine) +"hq" = (/turf/simulated/shuttle/wall{tag = "icon-swall3"; icon_state = "swall3"},/area/awaymission/wwrefine) +"hr" = (/turf/simulated/shuttle{tag = "icon-floor2"; icon_state = "floor2"},/area/awaymission/wwrefine) +"hs" = (/turf/simulated/shuttle/wall{tag = "icon-swallc1"; icon_state = "swallc1"},/area/awaymission/wwrefine) +"ht" = (/turf/space,/turf/simulated/shuttle/wall{tag = "icon-swall_f5"; icon_state = "swall_f5"; dir = 2},/area/awaymission/wwrefine) +"hu" = (/obj/effect/mob_spawn/human/miner,/turf/simulated/shuttle{tag = "icon-floor2"; icon_state = "floor2"},/area/awaymission/wwrefine) +"hv" = (/turf/simulated/shuttle/wall{tag = "icon-swallc2"; icon_state = "swallc2"},/area/awaymission/wwrefine) +"hw" = (/turf/space,/turf/simulated/shuttle/wall{tag = "icon-swall_f9"; icon_state = "swall_f9"; dir = 2},/area/awaymission/wwrefine) +"hy" = (/obj/structure/table/reinforced,/obj/item/clothing/suit/space/syndicate/black/orange,/obj/item/clothing/head/helmet/space/syndicate/black/orange,/obj/item/clothing/mask/gas/syndicate,/obj/item/tank/oxygen,/obj/item/clothing/shoes/magboots,/turf/simulated/shuttle{tag = "icon-floor2"; icon_state = "floor2"},/area/awaymission/wwrefine) +"hz" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{tag = "icon-fwindow"; icon_state = "fwindow"},/turf/simulated/shuttle{tag = "icon-floor2"; icon_state = "floor2"},/area/awaymission/wwrefine) "hA" = (/obj/machinery/door/poddoor/multi_tile/four_tile_ver,/turf/simulated/floor/plasteel,/area/awaymission/wwrefine) -"hB" = (/obj/item/paper{info = "The syndicate have invaded. Their ships appeared out of nowhere and now they likely intend to kill us all and take everything. On the off-chance that the Vault may grant us sanctuary, many of us have decided to force our way inside and bolt the door, taking as many provisions with us as we can carry. In case you find this, send for help immediately and open the Vault. Find us inside.";name = "Planer Saul's Journal: Page 8"},/turf/simulated/floor/plating/ironsand{tag = "icon-ironsand1";icon_state = "ironsand1"},/area/awaymission/wwmines) (1,1,1) = {" aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa @@ -591,56 +577,56 @@ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaabpaaaaaaaaaaaaaaaaaaaaaaaaaaaabpbpbpbpbpaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaabpbpbpaaaaaaaabpbpbpbpbpbpbpbpbpbpaabpaabpbpbpbpaaaaaabpbpbpbpbpbpbpbpbpbpaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaGaGaQaUbrbabababababaaUaRaXaXaXaXaXbkbhbhbhaXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXaXbhbhbhbhaXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXaXbhbhbhbhaXaXaXaXaXaXaXaXaXaXaXaXaXaRaRaGaGaGaGaGaaaGaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaabpbxbwbwbwbwbwbwbxbxbxbxbxbwbwbxbxbxbwbxbxbxbxbwbwbwbwbwbxbxbxbxbxaabpaabpbpaaaaaaaaaaaaaaaaaaaaaaaaaaaGaGaGaQaUbababababababaaUaRaXaXaXaXaXbhbhbhbhaXeXbybAbAbEbAbAbAeXbHbzbIbzbBeXaXbhbhbCbhaXeXbDbDbDbJbDbDbDbKbBbBbNbLbFbGbBbObhbhbhbhbPbAbAbQbSbRbAbTeXaXbhbhbhbhaXaXaXaXaXaXaXaXaXaXaXaXaXaRaNaGaGaGaGaGaGaGaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaabpbUbMbVbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbXbMcaaaaaaabpbpaaaaaaaaaaaaaaaaaaaaaaaaaaaaaGaQaUbabababfbababaaUaRaXaXaXaXaXbhbhbhbhaXeXcbccbAbAbAcecdeXbhbhbhbhbheXaXbhbhbhbhaXeXbDbDbDbDbDbDbDbhbhbhbhbhbhbhbhbhbhbhbhbhbhbAbAbAbAbAbAbAeXaXbhbhbhbhaXbgaXaXaXaXaXaXaXaXaXaXaXaRaRaGaGaGaGaGaGaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaabpcjcmclclclclclclclclclcnclclclclclclclclclclcnclclclclclclclclclcocaaaaaaaaabpbpaaaaaaaaaaaaaaaaaaaaaaaaaGaGaQaUbfbababababfbaaUaRaXbdaXaXbtbhbhbhbhaXeXbAbAbAbAbAbAbAeXbhbhbhbhbheXaXbhbkbhbhaXeXbDbDbDbDbDbDbDbBbBbBbBbBbBbBcpbBbYbBbBbBbZbAbAbAbAcqbAbAeXaXbhbhbhbhaXaXaXaXaXaXaXbgaXaXaXaXaXaXaRaNaGaGaGaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaabpcjcuclbMbMbMbMbMbMbMbMbMbMbMbMbMbMbMbMbMbMbMbMbMbMbMbMbMbMbMbMclcxcaaaaaaaaaaabpbpaaaaaaaaaaaaaaaaaaaaaaaGaGaQaUbababababababaaUaRaXaXaXaXaXbhbhbkbhaXeXcbcccybAbAcecdeXeXeXeXeXcfeXaXbhbnbhbhaXeXcBcgbDbDchcgbDbBcicicicicicicicibhbhbhbhbBbAbAbAbAbAbAcdeXaXbhbhbCbhaXaXaXaXaXaXaXaXaXaXaXaXaXaXaRaNaGaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaabpcjcuclbMcDcDcDcDcDcDbMckczcFczczckcEczckckcFckczbMcPcNcQcNcRbMclcxcSaaaaaaaaaaaabpcrbpaaaaaaaaaaaaaaaaaaaGaGaQaUbababababababmaUaRaXaXaXaXaXbibhbhbhaXeXbAbAbAbAbAbAbAcfbhbhbhbhbheXaXbhbhbhbhaXeXbDbDbDcsbDbDbDbBbhbhbhbhbhbhbhbhbhbhbhbhbBbAbAbAbAbAbAbAeXaXbhbhbhbhaXaXaXaXaXaXaXaXaXaXaXaRaRaXaRaQaGaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaabpcjcuclbMckckckczckckbMckctctctctcLctcLckcvcvczckbMcNcNcNcNcNbMcncxcSaaaaaaaaaabpbpbpbpbpbpaaaaaaaaaaaaaaaGaGaQaUbabmbabmbababaaUaRaXaXaXaXaXbhbhbhbhaXeXeXeXeXeXeXeXeXeXbhbhbhbhcYeXaXbhcwbhbhaXeXbDbDbDbDbDbDbDbBbhbhbhbhgPbhbhgPbhbhbhbhbBbAbAbAbAbAbAbAeXaXbhbhbhbhaXaXcZaXaXaXaXaXaXaXaXaRaRaRaRaQaGaGaGaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaabpbpbUcuclbMdccXckckckddbMdecLctctctctctctcAckckckddbMdgcNdhcNdibMclcxcSbpbpaabpbpbpaaaaaabpbpbpbpaaaaaaaaaGaGaGaQaUbababababababaaUaRaXaXaXaXaXbhbhbhbhaXeXdjbhdkbhbhbhdkbhbhbhbhbhbheXaXbhbhbhbhaXeXbBbBbBbBbBbBbBbBbhbhbhdneXdocYeXdobhbhbhbBbBbBdqdrbBbBbBeXaXbkbhbnbhaXaXaXaXaXaXaXaXaXaXaXaXaRaRaRaGaGaGaGaGaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaabpaacjcuclbMcGcCckckcIckcJckctctctctcKctctcAckckckckbMcNcNcNcNcNbMcncxcaaacrbpbpaaaaaaaaaaaaaaaabpbpbpaaaaaGaGaGaQaUbfbabababababaaUaRaXaXaXaXaXbhbibhbhaXeXdjbhbheXeXbhbheXeXbhbheXeXeXaXbhbhbhbhaXeXbhcicicicicicibhbhbhbhbhdkbhbhdkbhbhbhbhbhcicicicicicibheXaXbhbhbhbhaXaXaXaXaXaXaXaXbdaXaXaXaXaXaRaGaGaGaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaabpaacjdsclbMdtcXckckckckbMckctctctctctctctcMckckckckcJcNcNcNcNcNbMclducaaabpaaaaaaaaaaaaaaaaaaaaaaaabpaaaGaGaGaGaQaUbabfbacObababaaUaRaXbjaXaXbgbhbhbhbhaXeXdjbCbhdjeXbhbheXbhbhbhbhbheXaXbhbhbhbhaXeXbhbhbhbhbhbhbhbhbhbhbhbhbhbhbhbhbhbhbhbhbhbhbhbhbhbhbhbheXaXbhbhbhbhaXaXaXbgaXaXaXaXaXaXaXaXaXaXaRaGaGaGaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaabpaabUbMclbMckckckckckckbMckctctdwctctctctcMckckckckbMcNdxdzdycNbMclbMcaaabpaaaaaaaaaaaaaaaaaaaaaaaaaGaGaGaGaGaGaQaUbababababababaaUaRaXaXaXaXaXbhbhbhbhaXeXdjbhbhdjeXbhbheXdEbhbhbhdFeXaXbhbhbhbkaXeXcVbBcWbhcVbBcWbhcVbBcWbhcVbBcWbhcVbBcWbhcVbBcWbhcVbBcWbheXaXbhbhbhbhaXaXaXaXaXaXaXaXaXaXaXaXaXaXaRaGaGaGaGaGaGaGaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaacrbpbUdGclbMdeckcIckczddbMdectctctctctctctcMckckckddbMdIcNdJcNdibMcldKcaaabpbpaaaaaaaaaaaaaaaaaaaGaGaGaGaGaGaGaQaQaUbababababfbabaaUaRaXaXaXaXaXbhbhbkbhaXeXdjbhgPdjeXbhbheXcTbhbhbhcUeXaXbkbhbhbhaXeXbhhbbhbhbhbhhbbhbhbhbhhbbhbhbhbhhbbhbhbhbhhbbhbhbhbhhbbheXaXbhbhbhbhaXaXaXaXaXaXaXaXaXaXaXaXaXaXaRaGaGaGaGaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaabpbpaacjcuclbMckckckckckczbMckcLctcHctctctctckckckckckbMcNcNcNcNcNbMclcxcabpbpbpbpaaaaaaaaaaaaaaaaaGaGaGaGaGaGaQaQaUaUbabababababadbaUaRaXaXaXaXaXbhbhbhbhaXeXeXeXeXeXeXcfcfeXeXdLdLeXeXeXaXbhbhbvbhaXeXeXeXeXdLdLdLeXeXeXeXeXeXeXdMdNeXeXeXeXeXeXeXdLdLdLeXeXeXeXaXcwbhbkbhaXaXaXbjaXaXaXaXaXaXaXaXaXaRaRaGaGaGaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaabpaaaadfcuclbMckdPczckckckbMckckhcckckckhccIckckhcckckbMdQdQdSdRdRbMclcxcSbpaaaabpbpbpbpaaaaaaaGaGaGaGaGaGaGaGaQaUaUbfbmbabababmbabaaUaRaXaXaXaXaXbhbhbhbhaXaXaXaXaXaXdUdVaXdUaXaXaXaXaXaXaXbhbhbhbhaXaXaXaXdUaXaXaXdUaXaXaXaXaXdUbgdVdUaXaXaXaXaXdUaXaXaXdUaXaXaXaXbhbhbhbhaXaXaXaXaXaXaXaXaXaXaXaXaXaXaRaGaGaGaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaabpaaaadfcuclbMbMbMbMbMbMbMbMbMbMbMcJcJbMbMbMbMbMbMbMbMbMbMbMbMbMbMbMclcxcSaaaaaaaaaaaabpbpbpaGaQaQaQaQaQaQaQaQaQaUaZbabababababababfaUaRaXaXaXaXaXbhbhbibhbhbhbhbhbhbhbhdlbkbhbhbhbhbhbhbhbhbhbhbhbhbhbhbhbhbhbhbhbhbhbhdmbhbhbhbhbhdlbhbhbhbkbhbhbhbhbhbhbhbhbhbhbhbvbhbhbhaXaXaXaXdWaXaXaXaXaXaXaXaXaRaRaGaGaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaabpaaaadfcuclclclclclclcldXclclcldYclcldYclclclclclclclclclclclclclcldXcxcSbpaaaaaaaaaaaaaaaGaGaQaUaUaUaUaUaUaUaUaUbabababababfbaaUaUaUaRaXaXaXaXaXbhbhdabhbhbhbhbhbhbhbhdlbhbhbhbhbhbhbhbhbhbhbhbhcwbhbhbhbhbhbhbhbhbhbhbhbibhbhbhbhdlbhbhbhbhbhbhbhbhbhbhbhbhbhbhbhbhbhbhbhaXaXaXaXaXaXaXbgaXaXaXaXaXaRaRaGaGaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaabpaaaadfcucldXclclclclclclclclclclcldZclclclclclcldXclclcleaclclclclclcxcabpaaaaaaaaaaaaaaaGaGaQaUaZbabmbababfbabababababababmbaaUaNaRaRaXaXaXaXaXbibhbhbhbhbhbhbhbhbhbhbhbhbhbhbibhbhbhbhbhbhbhbhbhbhbhbhbhbkbhbhbhbhbhbhbhbhbhbhbhdlbhbhbhbhbvbhbhcwbhbkbhbhbhbhbhbhbhbkbhaXaXaXaXaXaXaXaXaXaXaXaXaXaXaRaGaGaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaabpaaaadfcuclclclbMbMbMclclclclclclclcnclclclclclcldZcleaclclclclcnclclcxcabpaaaaaaaaaaaaaGaGaGaQaUbababababababababmbababfbaaUaUaUaRaRaXaXbdaXaXaXbqbhbhbhbhbhbhbnbhbhbhbhbhbhbhdlbhbkbhbhbhbhbhbhbhbhbhbhbhbhbhbhbhbhbhbhbhbhbhbhbhdlbhbhbhbhbhbhbhbhbhbhbhbhbhbhbnbhbhbhbhaXaXaXaXebaXaXebaXaXaXaXaXaRaRaGaGaaaGaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaabpaaaadfcuclclclbMecbMclclcleaclclclclclclclclclclclclclclclcledclclclcxcabpbpaaaaaaaaaaaGaGaGaQaUbabfbababablbabababababaaUaUaNaNaRaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXebdVaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXbhbhdabheXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXdLdLeXeXeXeXeXaRaRaNaGaGaGaGaaaaaaaaaGaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaabpbpaadfcueaclclbMeebMclclclclclclclclclclclclclclclcldXclcleaclclcnclcxcabpbpbpaaaaaGaGaGaGaGaQaUbabababababababababfbabaaUaNaNaRaRaXaXaXaXaXaXaXbdaXaXaXaXaXaXeXeXeXeXeXeXeXeXcfeXeXeXeXeXeXeXaXaXeXeXeXeXeXeXeXeXeXeXeXeXeXaXbvbhbhbheXbhbhbhdkbhbhdkbibhbheXdvefdvdvdvbhdveXbhbhdkbhbhbhdkbhbheXaRaNaNaGaGaGaGaGaGaGaGaGaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaabpbpdfdsclclclclcldYclclclclclclclclclclclegclclclclclclclclclclclclducabpaabpbpbpaGaGaGaGaGaQaUbmbabababfbabababaaUaUaUaUaNaNaRaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXeXbAehbAbAehbAeXbheXeibAbAbAbAeXaXaXeXbheldkelbhelbheldkelbheXaXbhbhbhbheXbhbDembDdAdBbDbDbDbhdCbhbhbhbhbhbhbheXdDcwenbhbvbheteobhdHaRaNaNaGaGaGaGaGaGaGaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaabpdfbMeuevevevevevevevevevevexeweweuevevevevevevevevevevevevevevexbMcabpaaaabpaGaGaGaGaGaGaQaUbababababababmbabaaUaNaNaNaRaRaRaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXeXeybAbAeCbAeDeXbheXeEbAbAbAbAeXaXaXeXbhbhbhbhbhbhbhbhbhbhbheXaXbkbhbhbheXbhbDdOeGeFeKeIdTbDbheXbhbhbhbheobhbheXbBbhenbhbhbhetbhbheXaRaNaNaGaGaGaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaabpbpaaeLeLeLeLeLeLeLeLeLeLeLeMeOeNeQePeLeLeLeLeLeLeMeLeLeLeLeLeLeMeLeLbpcraaaabpbpbpaGaQaQaQaQaUbbbbaUaUaUaUbabmaUaUaNaNaRaRaXaXaXaXbgaXaXaXaXaXeSaXaXbgaXaXaXeXeybEeTbAbAeDeXcYeXeVbAeTbAbAeXaXaXeXbhelbhelbhelbheWbhelbheXaXbhbhbhbheXdobDeYeFbDbDeFeZemcYeXdvbhbhbhbhbhbheXdDbhenbhbhcwetbhbhdHaRaNaNaGaGaGaGaGaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaabpbpaaaaaaaaaaaaaaaaaabpbpbpbpdffdffcaaaaaaaaaaaaabpbpbpbpbpbpbpbpbpbpbpbpbpaaaaaacraQaQejejejejekekejejejaUaUaUaUaNaNaNaRaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXeXeybAbAfgbAeDeXbheXeEbAbAbEbAeXaXaXeXdobhbibhbhbhbhbhbhbhcYeXaXbhbhbhbheXbhbDdOeIbDbDeIdTfhbheXdvdvfibhbhhkbhdCbhbhbheobhbhetbhbheXaRaNaNaGaGaGaGaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaabpbpbpaaaaaaaaaaaabpbpaaaaaadffjfkcaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabpbpbpbpbpejejejekeqekekekekekejejejejaNaNaRaRaRaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXeXeyflbAbAfleDeXbheXeibAbAbAbAeXaXaXeXbhbhbhbhbhbCbhbhbhbhbhcfaXbhbhbnbheXbhbDeYeKbDbDeKeZbDbheXeXeXeXeXeXeXeXeXbhesesesesbhetbhbhdHaRaNaNaGaGaGaGaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaabpbpbpbpbpbpbpbpaaaaaaaadfeNfqcaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaejekekekekekekekekekekekekejaNaNaRaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXbgaXaXaXaXeXeXeXbAbAeXeXeXcfeXeXbAbAeXeXeXbdaXeXbhfrbhelbhelbhfsbhelbheXfubhbhbhbheXfvbDdOeFbDbDfwfxbDcYeXbHfzbHbHbHfzbHeXbhdDhpbBdDbhgPbhbheXaRaNaNaGaGaGaGaGaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadffdfAcaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaezekekekekekekekekekekekekejaNaNaRaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXeXbhbhbhbhbhbhbhbhbhbhbhbhbhbheXdVaXeXdobhbhbhbhbhbhbhbhbhcYeXaXbhdabhbheXbhbDeYeIeFeGeKeZdpbheXbhbhbhbhbhbhbheXeXeXeXeXeXeBeXeXeXeXaRaNaNaGaGaGaGaaaaaGaGaGaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadffCeQcaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafFfEfHfGekekekekekekekekekekekekejaNaNaRaRaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXeXbhbheHbheXeXeXeXeXeXbhbhbhbheXdVbdeXbhelbhfsbhelbhelbhelbheXaXbhbhbhbheXbhbDbDbDfLeJfMbDbDbhdCbhcwbhbhbvbhbhdCaLfQfUfRfXfXgafZaLeXaRaNaNaGaGaGaGaGaGaGaGaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadfeNgbcaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeRekekeRekekekekekekekekekekekekejaNaNaNaRaXaXaXaXbgaXaXaXaXaXaXaNaNaXaXaXaXaXaXeXdobhbhbhbhgcgcgcgcbhbhbhbhcYeXdVaXeXbhbhbhbhbhbhbhbhbhbhbheXaXbhbhbhbheXbhbhbhgPbhbhgPbhbhbheXbhbhbhbhbhbhbheXaLaLaLgdfhgeaLaLaLeXaRaNaNaGaGaGaGaGaGaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadffjeQcaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafFfEfEgfekekekekekekekekekekekekejaNaNaNaRaXaXaXaXaXaXaXaXaXaXaXaNaNaNaXaXaXaXaXeXbhbhbhgPdabibhbhbhbhgPbhbhbheXdVaXeXbhbhgPbhbhbhbhbhgPbhbheXaXbhbhbhbheXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXaLaLggaLaLgeaLaLgheXaRaNaNaGaGaGaGaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadfeNffcaaaaaaaaaaaaaaaaaaaaaaabpbpaaaaaaaaaaaaaaaaaaaagiekekekekekekekekekekekekejaNaNaNaRaXaXaXaXaXaXaXaXbtaXaXaXaNaNaNaXaXaXaXeXfaeXfaeXfaeXfaeXeXfaeXfaeXfbeXaXbgfceXeXeXeBeXeXeXeXeXeXeXeXaXbhbhcwbhglfebhdkbBbhbheXbhbhdkbhbheXbhbhdkbhbheXgmaLgnaLgmaLgnaLaLeXaRaNaNaGaGaGaGaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaabxbxbxbxbxbxbxbxbxbxbxbxbxbxgoewewgpbxbxbxbxbxbxaaaaaaaaaabpaaaaaaaaaaaaaaaaaaaaaagqekekekekekekekekekekekekejaNaNaRaRaXaXaXaXaXaXaXaXaXaXaXaXaXaNaNaNaXaXaXeXeXeXeXeXeXeXeXeXeXeXfceXeXeXeXaXaXgraXbdaXaXaXaXgsaXbdaXaXaXaXbhbhbhcYeXgtbhbhbBfmbheXbhfnbBfmbheXbhfobBfpbheXaLaLaLguaLaLaLguaLeXaRaNaNaGaGaGaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaacjgxgvgvgvgvgvgvgvgvgvgvgvgvgvgvftftgvgvgvgvgvgvgygAbpbpbpbpbpaaaaaaaaaaaaaaaaaaaaaaejekekekekekekekekekekekekejaNaRaRaVaXaXaXaXaXaXaXaXaXaXaXaXaXaXaNaNaNaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXeSbdgBfceXeXeXeXeXeBeXeXeXeXeXeXaXbvbhbheAcfbhbhbhbBbhbheXbhbhgCbhbCeXbvbhbhbhbheXdLdLdLeXdCeXaLgDaLeXaRaNaNaGaGaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaacjgEftftftftftftftftftftftftftftftftftftftftftftfBgAbpbpbpbpaaaaaaaaaaaaaaaaaaaaaaaagFekekekekekekekekekekekekejaNaRaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaNaNaXaXaXaXaXaXeXeXeXeXeXeXeXeXeXeXeXeXfcdVeXfDbhbhbhbhdkbhbhbhbhbheXaXbhgGbhbhcfbhbhbhbBfmcYeXbhfnbBfmbveXbhfobBfpbheXbhbhbhbhbhdLaLaLgheXaRaNaNaGaGaGaGaGaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaacjgEftftftftftftftftftftftftftftftftftftftftgHgHgIgJfIfIbpbpbpaaaaaaaaaaaaaaaaaaaaaagiekekekekekekeUekekekekekejaNaRaXaXaXaXaXaXaXaXaXaXaVaXaNaNaNaNaNaNaNaXaXaXaXaXaXeXfJepbhbhbhdkbhbhbhbhbheXdVeBbhbhbhbhdacwbhbhbhbhbhdMaXbhbvbhcYeXgtbvbhbBbhbheXdobhbBbhcYeXdocwgKbhcYeXeXeXeXbhbhdLaLgLaLeXaRaNaNaGaGaGaGaGaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaacjgEftftftftftftftftftftftftftftftftftftftftfNftfNfIfIfIbpbpaaaaaaaaaaaaaaaaaaaaaaaagqekekekekekekekekekekekekejaNaRaXaXaXaXaXaXaNaNaNaNaNaNaNaNaNaNaNaNaNaXaXaXaXaXaXeXbhbBbhbhbvbhfObhbveobheXgseXbhbheobhbhbhbhbhbhcwbheXfubhfPbhbheXfebhbhbBbhbheXbhfnbBfmbheXbhfobBfpbheXgMbheXfvbhdLaLaLaLeXaRaNaNaGaGaGaGaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaacjgEftftfSftftftftftftftftftftftftftftftftftgvgvfTgJfIbpbpaaaaaaaaaaaaaaaaaaaaaaaaaaekekekgwekekgwekekgwekekgwejaRaRaXaXaXaXaRaRaRaRaRaRaRaRaRaRaRaRaRgNaRaRaXaXaXaXaXeXbhbhbhbhbhgzfVdabhfWbhcfaXeXdobhbhbhbhbhgObhbhbhcYeXdWbhbhbhbheBgQbhbhbBfmcYeXbhbhbhbhbheXbhbhbhbhbheXfYbhcfbhbhdLaLgRaLeXaRaNaGaGaGaGaGaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaacjgEftftftftftftftftftftftftftftftftftftftftftftfBgAbpbpaaaaaaaaaaaaaaaaaaaaaaaaaaaaekekgSgTekgSgTekgSgTekgSgTejaRaVaXaXaRaRaRaRaXaXaXaXaXaXaXaXdWaXaXaXaRaRaRaXaXaXaXeXdodabhbhbhbhbhbhgUbhcYeBfueXbhbhbhbhbhbhdabhbheobheBaXbhbhbhbheXfebhbhbBbhbheXeXeXcfeXeBeXeXeXcfeXeXeXeXeBeXbhbhdLaLaLgheXaRaNaNaGaGaGaGaGaGaGaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaacjgEftftftftftftftftftftftftftftftftftftftftftftfBcaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaekekgVgWekgXgWekgVgWekgXgWejaRaRaRaRaRaRaXaXaXaXaXaXaXaXaXaXaXaXaXeSaXaRaRaRaXaXaXeXbhbhbvbhbnbhbhdabhbhbheXbdeXbhbhcwbhbhbhbibhbhbhbheXaXaXaXaXaXeXdobhcwbBbBbheXbhbhbvbhbhcwbhbhbhbhbhbhbhbhbhbvbheXaLgLaLeXaRaNaNaGaGaGaGaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaabpcjclcmcmcmcmcmcmcmcmcmcmcmcmcmcmcmcmcmcmcmcmcmcmcmcmcmcmcmcmcmcmcncaaaaaaaaabpbpaaaaaaaaaaaaaaaaaaaaaaaaaGaGaQaUbfbababababfbaaUaRaXbdaXaXbtbhbhbhbhaXeXbAbAbAbAbAbAbAeXbhbhbhbhbheXaXbhbkbhbhaXeXbDbDbDbDbDbDbDbBbBbBbBbBbBbBcpbBbYbBbBbBbZbAbAbAbAcqbAbAeXaXbhbhbhbhaXaXaXaXaXaXaXbgaXaXaXaXaXaXaRaNaGaGaGaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaabpcjcocmbMbMbMbMbMbMbMbMbMbMbMbMbMbMbMbMbMbMbMbMbMbMbMbMbMbMbMbMcmcucaaaaaaaaaaabpbpaaaaaaaaaaaaaaaaaaaaaaaGaGaQaUbababababababaaUaRaXaXaXaXaXbhbhbkbhaXeXcbcccybAbAcecdeXeXeXeXeXcfeXaXbhbnbhbhaXeXcBcgbDbDchcgbDbBcicicicicicicicibhbhbhbhbBbAbAbAbAbAbAcdeXaXbhbhbCbhaXaXaXaXaXaXaXaXaXaXaXaXaXaXaRaNaGaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaabpcjcocmbMcDcDcDcDcDcDbMckczcFczczckcEczckckcFckczbMcPcNcQcNcRbMcmcucSaaaaaaaaaaaabpcrbpaaaaaaaaaaaaaaaaaaaGaGaQaUbababababababmaUaRaXaXaXaXaXbibhbhbhaXeXbAbAbAbAbAbAbAcfbhbhbhbhbheXaXbhbhbhbhaXeXbDbDbDcsbDbDbDbBbhbhbhbhbhbhbhbhbhbhbhbhbBbAbAbAbAbAbAbAeXaXbhbhbhbhaXaXaXaXaXaXaXaXaXaXaXaRaRaXaRaQaGaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaabpcjcocmbMckckckczckckbMckctctctctcLctcLckcvcvczckbMcNcNcNcNcNbMcmcucSaaaaaaaaaabpbpbpbpbpbpaaaaaaaaaaaaaaaGaGaQaUbabmbabmbababaaUaRaXaXaXaXaXbhbhbhbhaXeXeXeXeXeXeXeXeXeXbhbhbhbhcYeXaXbhcwbhbhaXeXbDbDbDbDbDbDbDbBbhbhbhbhgPbhbhgPbhbhbhbhbBbAbAbAbAbAbAbAeXaXbhbhbhbhaXaXcxaXaXaXaXaXaXaXaXaRaRaRaRaQaGaGaGaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaabpbpbUcocmbMdccXckckckddbMdecLctctctctctctcAckckckddbMdgcNdhcNdibMcmcucSbpbpaabpbpbpaaaaaabpbpbpbpaaaaaaaaaGaGaGaQaUbababababababaaUaRaXaXaXaXaXbhbhbhbhaXeXdjbhdkbhbhbhdkbhbhbhbhbhbheXaXbhbhbhbhaXeXbBbBbBbBbBbBbBbBbhbhbhdneXdocYeXdobhbhbhbBbBbBdqdrbBbBbBeXaXbkbhbnbhaXaXaXaXaXaXaXaXaXaXaXaXaRaRaRaGaGaGaGaGaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaabpaacjcocmbMcGcCckckcIckcJckctctctctcKctctcAckckckckbMcNcNcNcNcNbMcmcucaaacrbpbpaaaaaaaaaaaaaaaabpbpbpaaaaaGaGaGaQaUbfbabababababaaUaRaXaXaXaXaXbhbibhbhaXeXdjbhbheXeXbhbheXeXbhbheXeXeXaXbhbhbhbhaXeXbhcicicicicicibhbhbhbhbhdkbhbhdkbhbhbhbhbhcicicicicicibheXaXbhbhbhbhaXaXaXaXaXaXaXaXbdaXaXaXaXaXaRaGaGaGaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaabpaacjcZcmbMdtcXckckckckbMckctctctctctctctcMckckckckcJcNcNcNcNcNbMcmdscaaabpaaaaaaaaaaaaaaaaaaaaaaaabpaaaGaGaGaGaQaUbabfbacObababaaUaRaXbjaXaXbgbhbhbhbhaXeXdjbCbhdjeXbhbheXbhbhbhbhbheXaXbhbhbhbhaXeXbhbhbhbhbhbhbhbhbhbhbhbhbhbhbhbhbhbhbhbhbhbhbhbhbhbhbhbheXaXbhbhbhbhaXaXaXbgaXaXaXaXaXaXaXaXaXaXaRaGaGaGaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaabpaabUbMcmbMckckckckckckbMckctctdwctctctctcMckckckckbMcNdxdzdycNbMcmbMcaaabpaaaaaaaaaaaaaaaaaaaaaaaaaGaGaGaGaGaGaQaUbababababababaaUaRaXaXaXaXaXbhbhbhbhaXeXdjbhbhdjeXbhbheXdEbhbhbhdFeXaXbhbhbhbkaXeXcVbBcWbhcVbBcWbhcVbBcWbhcVbBcWbhcVbBcWbhcVbBcWbhcVbBcWbheXaXbhbhbhbhaXaXaXaXaXaXaXaXaXaXaXaXaXaXaRaGaGaGaGaGaGaGaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaacrbpbUducmbMdeckcIckczddbMdectctctctctctctcMckckckddbMdIcNdJcNdibMcmdGcaaabpbpaaaaaaaaaaaaaaaaaaaGaGaGaGaGaGaGaQaQaUbababababfbabaaUaRaXaXaXaXaXbhbhbkbhaXeXdjbhgPdjeXbhbheXcTbhbhbhcUeXaXbkbhbhbhaXeXbhhbbhbhbhbhhbbhbhbhbhhbbhbhbhbhhbbhbhbhbhhbbhbhbhbhhbbheXaXbhbhbhbhaXaXaXaXaXaXaXaXaXaXaXaXaXaXaRaGaGaGaGaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaabpbpaacjcocmbMckckckckckczbMckcLctcHctctctctckckckckckbMcNcNcNcNcNbMcmcucabpbpbpbpaaaaaaaaaaaaaaaaaGaGaGaGaGaGaQaQaUaUbabababababadbaUaRaXaXaXaXaXbhbhbhbhaXeXeXeXeXeXeXcfcfeXeXdLdLeXeXeXaXbhbhbvbhaXeXeXeXeXdLdLdLeXeXeXeXeXeXeXdMdNeXeXeXeXeXeXeXdLdLdLeXeXeXeXaXcwbhbkbhaXaXaXbjaXaXaXaXaXaXaXaXaXaRaRaGaGaGaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaabpaaaadfcocmbMckdPczckckckbMckckhcckckckhccIckckhcckckbMdQdQdSdRdRbMcmcucSbpaaaabpbpbpbpaaaaaaaGaGaGaGaGaGaGaGaQaUaUbfbmbabababmbabaaUaRaXaXaXaXaXbhbhbhbhaXaXaXaXaXaXdKdUaXdKaXaXaXaXaXaXaXbhbhbhbhaXaXaXaXdKaXaXaXdKaXaXaXaXaXdKbgdUdKaXaXaXaXaXdKaXaXaXdKaXaXaXaXbhbhbhbhaXaXaXaXaXaXaXaXaXaXaXaXaXaXaRaGaGaGaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaabpaaaadfcocmbMbMbMbMbMbMbMbMbMbMbMcJcJbMbMbMbMbMbMbMbMbMbMbMbMbMbMbMcmcucSaaaaaaaaaaaabpbpbpaGaQaQaQaQaQaQaQaQaQaUaZbabababababababfaUaRaXaXaXaXaXbhbhbibhbhbhbhbhbhbhbhdlbkbhbhbhbhbhbhbhbhbhbhbhbhbhbhbhbhbhbhbhbhbhbhdmbhbhbhbhbhdlbhbhbhbkbhbhbhbhbhbhbhbhbhbhbhbvbhbhbhaXaXaXaXdVaXaXaXaXaXaXaXaXaRaRaGaGaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaabpaaaadfcocmcmcmcmcmcmcmcmcmcmcmdWcmcmdWcmcmcmcmcmcmcmcmcmcmcmcmcmcmcmcucSbpaaaaaaaaaaaaaaaGaGaQaUaUaUaUaUaUaUaUaUbabababababfbaaUaUaUaRaXaXaXaXaXbhbhdabhbhbhbhbhbhbhbhdlbhbhbhbhbhbhbhbhbhbhbhbhcwbhbhbhbhbhbhbhbhbhbhbhbibhbhbhbhdlbhbhbhbhbhbhbhbhbhbhbhbhbhbhbhbhbhbhbhaXaXaXaXaXaXaXbgaXaXaXaXaXaRaRaGaGaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaabpaaaadfcocmcmcmcmcmcmcmcmcmcmcmcmcmcmcmcmcmcmcmcmcmcmcmcmcmcmcmcmcmcmcucabpaaaaaaaaaaaaaaaGaGaQaUaZbabmbababfbabababababababmbaaUaNaRaRaXaXaXaXaXbibhbhbhbhbhbhbhbhbhbhbhbhbhbhbibhbhbhbhbhbhbhbhbhbhbhbhbhbkbhbhbhbhbhbhbhbhbhbhbhdlbhbhbhbhbvbhbhcwbhbkbhbhbhbhbhbhbhbkbhaXaXaXaXaXaXaXaXaXaXaXaXaXaXaRaGaGaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaabpaaaadfcocmcmcmbMbMbMcmcmcmcmcmcmcmcmcmcmcmcmcmcmcmcmcmcmcmcmcmcmcmcmcucabpaaaaaaaaaaaaaGaGaGaQaUbababababababababmbababfbaaUaUaUaRaRaXaXbdaXaXaXbqbhbhbhbhbhbhbnbhbhbhbhbhbhbhdlbhbkbhbhbhbhbhbhbhbhbhbhbhbhbhbhbhbhbhbhbhbhbhbhbhdlbhbhbhbhbhbhbhbhbhbhbhbhbhbhbnbhbhbhbhaXaXaXaXdXaXaXdXaXaXaXaXaXaRaRaGaGaaaGaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaabpaaaadfcocmcmcmbMecbMcmcmcmcmcmcmcmcmcmcmcmcmcmcmcmcmcmcmcmcmcmcmcmcmcucabpbpaaaaaaaaaaaGaGaGaQaUbabfbababablbabababababaaUaUaNaNaRaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXdXdUaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXbhbhdabheXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXdLdLeXeXeXeXeXaRaRaNaGaGaGaGaaaaaaaaaGaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaabpbpaadfcocmcmcmbMdYbMcmcmcmcmcmcmcmcmcmcmcmcmcmcmcmcmcmcmcmcmcmcmcmcmcucabpbpbpaaaaaGaGaGaGaGaQaUbabababababababababfbabaaUaNaNaRaRaXaXaXaXaXaXaXbdaXaXaXaXaXaXeXeXeXeXeXeXeXeXcfeXeXeXeXeXeXeXaXaXeXeXeXeXeXeXeXeXeXeXeXeXeXaXbvbhbhbheXbhbhbhdkbhbhdkbibhbheXdvefdvdvdvbhdveXbhbhdkbhbhbhdkbhbheXaRaNaNaGaGaGaGaGaGaGaGaGaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaabpbpdfcZcmcmcmcmcmdWcmcmcmcmcmcmcmcmcmcmcmcmcmcmcmcmcmcmcmcmcmcmcmcmdscabpaabpbpbpaGaGaGaGaGaQaUbmbabababfbabababaaUaUaUaUaNaNaRaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXeXbAehbAbAehbAeXbheXeibAbAbAbAeXaXaXeXbheldkelbhelbheldkelbheXaXbhbhbhbheXbhbDembDdAdBbDbDbDbhdCbhbhbhbhbhbhbheXdDcwenbhbvbheteobhdHaRaNaNaGaGaGaGaGaGaGaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaabpdfbMdZeaeaeaeaeaeaeaeaeaeaebededdZeaeaeaeaeaeaeaeaeaeaeaeaeaeaebbMcabpaaaabpaGaGaGaGaGaGaQaUbababababababmbabaaUaNaNaNaRaRaRaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXeXeybAbAeCbAeDeXbheXeEbAbAbAbAeXaXaXeXbhbhbhbhbhbhbhbhbhbhbheXaXbkbhbhbheXbhbDdOeGeFeKeIdTbDbheXbhbhbhbheobhbheXbBbhenbhbhbhetbhbheXaRaNaNaGaGaGaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaabpbpaaeLeLeLeLeLeLeLeLeLeLeLeMeOeeegePeLeLeLeLeLeLeMeLeLeLeLeLeLeMeLeLbpcraaaabpbpbpaGaQaQaQaQaUbbbbaUaUaUaUbabmaUaUaNaNaRaRaXaXaXaXbgaXaXaXaXaXeraXaXbgaXaXaXeXeybEeTbAbAeDeXcYeXeVbAeTbAbAeXaXaXeXbhelbhelbhelbheWbhelbheXaXbhbhbhbheXdobDeYeFbDbDeFeZemcYeXdvbhbhbhbhbhbheXdDbhenbhbhcwetbhbhdHaRaNaNaGaGaGaGaGaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaabpbpaaaaaaaaaaaaaaaaaabpbpbpbpdfeeegcaaaaaaaaaaaaabpbpbpbpbpbpbpbpbpbpbpbpbpaaaaaacraQaQejejejejekekejejejaUaUaUaUaNaNaNaRaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXeXeybAbAfgbAeDeXbheXeEbAbAbEbAeXaXaXeXdobhbibhbhbhbhbhbhbhcYeXaXbhbhbhbheXbhbDdOeIbDbDeIdTfhbheXdvdvfibhbhhkbhdCbhbhbheobhbhetbhbheXaRaNaNaGaGaGaGaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaabpbpbpaaaaaaaaaaaabpbpaaaaaadfeeegcaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabpbpbpbpbpejejejekeqekekekekekejejejejaNaNaRaRaRaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXeXeyflbAbAfleDeXbheXeibAbAbAbAeXaXaXeXbhbhbhbhbhbCbhbhbhbhbhcfaXbhbhbnbheXbhbDeYeKbDbDeKeZbDbheXeXeXeXeXeXeXeXeXbhesesesesbhetbhbhdHaRaNaNaGaGaGaGaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaabpbpbpbpbpbpbpbpaaaaaaaadfeeegcaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaejekekekekekekekekekekekekejaNaNaRaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXbgaXaXaXaXeXeXeXbAbAeXeXeXcfeXeXbAbAeXeXeXbdaXeXbhfrbhelbhelbhfsbhelbheXeubhbhbhbheXfvbDdOeFbDbDfwfxbDcYeXbHfzbHbHbHfzbHeXbhdDhpbBdDbhgPbhbheXaRaNaNaGaGaGaGaGaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadfeeegcaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaezekekekekekekekekekekekekejaNaNaRaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXeXbhbhbhbhbhbhbhbhbhbhbhbhbhbheXdUaXeXdobhbhbhbhbhbhbhbhbhcYeXaXbhdabhbheXbhbDeYeIeFeGeKeZdpbheXbhbhbhbhbhbhbheXeXeXeXeXeXeBeXeXeXeXaRaNaNaGaGaGaGaaaaaGaGaGaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadfeeegcaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaevewexeNekekekekekekekekekekekekejaNaNaRaRaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXeXbhbheHbheXeXeXeXeXeXbhbhbhbheXdUbdeXbhelbhfsbhelbhelbhelbheXaXbhbhbhbheXbhbDbDbDfLeJfMbDbDbhdCbhcwbhbhbvbhbhdCaLfQfUfRfXfXgafZaLeXaRaNaNaGaGaGaGaGaGaGaGaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadfeeegcaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeRekekeRekekekekekekekekekekekekejaNaNaNaRaXaXaXaXbgaXaXaXaXaXaXaNaNaXaXaXaXaXaXeXdobhbhbhbhgcgcgcgcbhbhbhbhcYeXdUaXeXbhbhbhbhbhbhbhbhbhbhbheXaXbhbhbhbheXbhbhbhgPbhbhgPbhbhbheXbhbhbhbhbhbhbheXaLaLaLgdfhgeaLaLaLeXaRaNaNaGaGaGaGaGaGaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadfeeegcaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeveweweQekekekekekekekekekekekekejaNaNaNaRaXaXaXaXaXaXaXaXaXaXaXaNaNaNaXaXaXaXaXeXbhbhbhgPdabibhbhbhbhgPbhbhbheXdUaXeXbhbhgPbhbhbhbhbhgPbhbheXaXbhbhbhbheXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXaLaLggaLaLgeaLaLgheXaRaNaNaGaGaGaGaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadfeeegcaaaaaaaaaaaaaaaaaaaaaaabpbpaaaaaaaaaaaaaaaaaaaaeSekekekekekekekekekekekekejaNaNaNaRaXaXaXaXaXaXaXaXbtaXaXaXaNaNaNaXaXaXaXeXfaeXfaeXfaeXfaeXeXfaeXfaeXfbeXaXbgfceXeXeXeBeXeXeXeXeXeXeXeXaXbhbhcwbhglfebhdkbBbhbheXbhbhdkbhbheXbhbhdkbhbheXgmaLgnaLgmaLgnaLaLeXaRaNaNaGaGaGaGaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaabxbxbxbxbxbxbxbxbxbxbxbxbxbxgoededgpbxbxbxbxbxbxaaaaaaaaaabpaaaaaaaaaaaaaaaaaaaaaafdekekekekekekekekekekekekejaNaNaRaRaXaXaXaXaXaXaXaXaXaXaXaXaXaNaNaNaXaXaXeXeXeXeXeXeXeXeXeXeXeXfceXeXeXeXaXaXffaXbdaXaXaXaXfjaXbdaXaXaXaXbhbhbhcYeXgtbhbhbBfmbheXbhfnbBfmbheXbhfobBfpbheXaLaLaLguaLaLaLguaLeXaRaNaNaGaGaGaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaacjgxgvgvgvgvgvgvgvgvgvgvgvgvgvgvftftgvgvgvgvgvgvgygAbpbpbpbpbpaaaaaaaaaaaaaaaaaaaaaaejekekekekekekekekekekekekejaNaRaRaVaXaXaXaXaXaXaXaXaXaXaXaXaXaXaNaNaNaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXerbdfkfceXeXeXeXeXeBeXeXeXeXeXeXaXbvbhbheAcfbhbhbhbBbhbheXbhbhgCbhbCeXbvbhbhbhbheXdLdLdLeXdCeXaLgDaLeXaRaNaNaGaGaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaacjgEftftftftftftftftftftftftftftftftftftftftftftfBgAbpbpbpbpaaaaaaaaaaaaaaaaaaaaaaaafqekekekekekekekekekekekekejaNaRaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaNaNaXaXaXaXaXaXeXeXeXeXeXeXeXeXeXeXeXeXfcdUeXfDbhbhbhbhdkbhbhbhbhbheXaXbhgGbhbhcfbhbhbhbBfmcYeXbhfnbBfmbveXbhfobBfpbheXbhbhbhbhbhdLaLaLgheXaRaNaNaGaGaGaGaGaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaacjgEftftftftftftftftftftftftftftftftftftftftgHgHgIgJfIfIbpbpbpaaaaaaaaaaaaaaaaaaaaaaeSekekekekekekeUekekekekekejaNaRaXaXaXaXaXaXaXaXaXaXaVaXaNaNaNaNaNaNaNaXaXaXaXaXaXeXfJepbhbhbhdkbhbhbhbhbheXdUeBbhbhbhbhdacwbhbhbhbhbhdMaXbhbvbhcYeXgtbvbhbBbhbheXdobhbBbhcYeXdocwgKbhcYeXeXeXeXbhbhdLaLgLaLeXaRaNaNaGaGaGaGaGaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaacjgEftftftftftftftftftftftftftftftftftftftftfNftfNfIfIfIbpbpaaaaaaaaaaaaaaaaaaaaaaaafdekekekekekekekekekekekekejaNaRaXaXaXaXaXaXaNaNaNaNaNaNaNaNaNaNaNaNaNaXaXaXaXaXaXeXbhbBbhbhbvbhfObhbveobheXfjeXbhbheobhbhbhbhbhbhcwbheXeubhfPbhbheXfebhbhbBbhbheXbhfnbBfmbheXbhfobBfpbheXgMbheXfvbhdLaLaLaLeXaRaNaNaGaGaGaGaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaacjgEftftfSftftftftftftftftftftftftftftftftftgvgvfTgJfIbpbpaaaaaaaaaaaaaaaaaaaaaaaaaaekekekgwekekgwekekgwekekgwejaRaRaXaXaXaXaRaRaRaRaRaRaRaRaRaRaRaRaRgNaRaRaXaXaXaXaXeXbhbhbhbhbhgzfVdabhfWbhcfaXeXdobhbhbhbhbhgObhbhbhcYeXdVbhbhbhbheBgQbhbhbBfmcYeXbhbhbhbhbheXbhbhbhbhbheXfYbhcfbhbhdLaLgRaLeXaRaNaGaGaGaGaGaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaacjgEftftftftftftftftftftftftftftftftftftftftftftfBgAbpbpaaaaaaaaaaaaaaaaaaaaaaaaaaaaekekfufAekfufAekfufAekfufAejaRaVaXaXaRaRaRaRaXaXaXaXaXaXaXaXdVaXaXaXaRaRaRaXaXaXaXeXdodabhbhbhbhbhbhgUbhcYeBeueXbhbhbhbhbhbhdabhbheobheBaXbhbhbhbheXfebhbhbBbhbheXeXeXcfeXeBeXeXeXcfeXeXeXeXeBeXbhbhdLaLaLgheXaRaNaNaGaGaGaGaGaGaGaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaacjgEftftftftftftftftftftftftftftftftftftftftftftfBcaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaekekfCfEekfFfEekfCfEekfFfEejaRaRaRaRaRaRaXaXaXaXaXaXaXaXaXaXaXaXaXeraXaRaRaRaXaXaXeXbhbhbvbhbnbhbhdabhbhbheXbdeXbhbhcwbhbhbhbibhbhbhbheXaXaXaXaXaXeXdobhcwbBbBbheXbhbhbvbhbhcwbhbhbhbhbhbhbhbhbhbvbheXaLgLaLeXaRaNaNaGaGaGaGaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaacjgEftftftftftftftftftftftftftftftftftftftftftftfBcaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahAekekekekekekekekekekekekejaGaNaNaRaRaXaXaXaXaXaRaRaRgNaXaXaXaXaXaXaXaXaXaRaRaXaXeXbhbhbhbhbhbhbhbheobhbheXaXeXbhbhbhgPbhbhgPbhbhbhbhfcaXbgaXaXaXeXbhbhgPbhbhcwcfbhbhgPbheobhbhbhgPbhbhfPcwbhgPbhbheXaLaLaLeXaRaNaNaGaGaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaacjgEftftftftftftftftftftftftfyftftftftftftftftftfBcaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaejgYfEgfeRhagZezgYfEhdejejejaGaNaNaRaXaXaXaXaXaXaRaRaRaRaRaRaRaXaXaXeSaXaXaXaRaRaReXeXeXeXeXfcaXeXeXeXeXeXeXaXeXeXeXeXeBdLdLeXeXeXeXeXeXaXaXaXaXaXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXaRaNaNaGaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaacjgEftftftftftftftftftftftftftftftftftftftftftftfBcaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaagiekgiaaaaaaaaaaaGaGaGaGaNaRaRaXaXaXaXaXaXaXaXaXaXaRaRaRaRaRaRaXaXaXaXaXgNaRaRaXaXaXaXaXaXfceXeXaXaXaXaXaXaXaXaXdUaXaXdUaXaXaXaXaXaXaXaXaXaXaRaRaRaRaRaRaRaRaRaRaRaRaRaRaRaRaRaRaRaRaRaRaRaRaRaRaRaRaRaRaRaNaNaGaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaacjgEftftftftftftftfSftftftftftftftftftftftftftftfBcaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaagiekgiaaaaaaaaaGaGaGaGaGaNaRaXaXaXaXaXaXaXaXaXaXaXaXaXaXgNaRaRaRaXaXaXeSaXaXaRaXaXeSaXaRaRaRaRaRaRaRaRaXaXaRaRaRaRaRaXaXaRaRaXaXaRaXaXaXaXaRaRaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaGaGaGaGaGaGaGaGaaaGaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaacjhegjgjgjgjgjgjgjgjgjgjgjgjgjgjgjgjgjgjgjgjgjgjgkcaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahfeRhfaaaaaaaaaGaGaGaGaNaNaRaRaRaRaRaRaXaXaXaXaXaXaXaXaXaXaRaRaRaRaRaXaXaXaXhgaXbdaXaXgNaNaNaNaNaNaNaRaRaRaRaNaNaNaRaRaRaRaRaRaRaRaXaRaRaRaRaRaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaGaGaGaGaGaGaGaGaGaGaGaGaGaGaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaeLeLeLeLeLeLeLeLeLeLeLeLeLeLeLeLeLeLeLeLeLeLeLeLaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahihhhlhjhmhhhnaaaaaaaGaGaGaNaNaNaRaRaRaRaRaRgNaRaRaXaXaXaXaXaXaXaXaRaRaRaRaXaXbdeSaXaXaXaXaRaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaNaNaNaNaRaRaRaGaGaGaNaNaNaNaNaNaNaNaNaNaNaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahqhohohrhohohqaaaaaaaGaGaGaNaNaRaRaXaXaXaXaRaRaNaRaRaXaXaXaXaXaXaXaXaRaNaRaRaXaXaXeSaXhgaRaRaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaaaGaGaGaaaaaaaaaGaGaGaGaGaGaGaGaGaGaGaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaacjgEftftftftftftftftftftftftfyftftftftftftftftftfBcaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaejfGeweQeRfHfKezfGewgbejejejaGaNaNaRaXaXaXaXaXaXaRaRaRaRaRaRaRaXaXaXeraXaXaXaRaRaReXeXeXeXeXfcaXeXeXeXeXeXeXaXeXeXeXeXeBdLdLeXeXeXeXeXeXaXaXaXaXaXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXaRaNaNaGaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaacjgEftftftftftftftftftftftftftftftftftftftftftftfBcaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeSekeSaaaaaaaaaaaGaGaGaGaNaRaRaXaXaXaXaXaXaXaXaXaXaRaRaRaRaRaRaXaXaXaXaXgNaRaRaXaXaXaXaXaXfceXeXaXaXaXaXaXaXaXaXdKaXaXdKaXaXaXaXaXaXaXaXaXaXaRaRaRaRaRaRaRaRaRaRaRaRaRaRaRaRaRaRaRaRaRaRaRaRaRaRaRaRaRaRaRaNaNaGaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaacjgEftftftftftftftfSftftftftftftftftftftftftftftfBcaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeSekeSaaaaaaaaaGaGaGaGaGaNaRaXaXaXaXaXaXaXaXaXaXaXaXaXaXgNaRaRaRaXaXaXeraXaXaRaXaXeraXaRaRaRaRaRaRaRaRaXaXaRaRaRaRaRaXaXaRaRaXaXaRaXaXaXaXaRaRaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaGaGaGaGaGaGaGaGaaaGaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaacjhegjgjgjgjgjgjgjgjgjgjgjgjgjgjgjgjgjgjgjgjgjgjgkcaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaagfeRgfaaaaaaaaaGaGaGaGaNaNaRaRaRaRaRaRaXaXaXaXaXaXaXaXaXaXaRaRaRaRaRaXaXaXaXhgaXbdaXaXgNaNaNaNaNaNaNaRaRaRaRaNaNaNaRaRaRaRaRaRaRaRaXaRaRaRaRaRaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaGaGaGaGaGaGaGaGaGaGaGaGaGaGaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaeLeLeLeLeLeLeLeLeLeLeLeLeLeLeLeLeLeLeLeLeLeLeLeLaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahihhhlhjhmhhhnaaaaaaaGaGaGaNaNaNaRaRaRaRaRaRgNaRaRaXaXaXaXaXaXaXaXaRaRaRaRaXaXbderaXaXaXaXaRaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaNaNaNaNaRaRaRaGaGaGaNaNaNaNaNaNaNaNaNaNaNaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahqhohohrhohohqaaaaaaaGaGaGaNaNaRaRaXaXaXaXaRaRaNaRaRaXaXaXaXaXaXaXaXaRaNaRaRaXaXaXeraXhgaRaRaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaaaGaGaGaaaaaaaaaGaGaGaGaGaGaGaGaGaGaGaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahqhohohrhohohqaaaaaaaaaGaGaGaRaRaXaXaXaXaXaXaRaRaNaRaRaRaXaXaXaXaXaXaRaRaRaRaRaXbdaXaXaRaGaaaaaaaaaGaGaGaGaGaaaGaaaaaaaGaGaGaGaaaGaGaGaGaGaGaGaaaaaaaGaGaGaGaGaGaGaGaGaGaGaGaaaaaaaGaaaaaaaaaaaaaaaaaGaGaGaGaGaGaGaGaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahqhohohrhohohqaaaaaaaaaGaGaGaRaXaXaXaXaXaXaXaXaRaRaRaNaRaRaXaXaXaXaXaXaXaXaRaRaRhgaXaXaRaGaaaaaaaaaaaGaGaGaaaaaaaaaaaaaaaGaGaaaaaaaGaGaGaaaaaaaaaaaaaGaGaGaGaGaaaaaGaGaGaaaaaaaaaaaaaaaaaaaaaaaaaaaaaGaaaGaGaGaGaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahthshuhrhrhvhwaaaaaaaGaGaGaRaRaXaXaXaXaXaXaXaXaXaXaRaRaRaRaRaXaXaXaXaXaXaXaXaXaRaRaXaXaRaGaaaaaaaaaaaGaGaGaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahqhrhrhrhqaaaaaaaaaGaGaGaRaXaXaXaXaXaXaXaXaXaXaXaRgNaXaXaRaRaRaRaRaRgNaRaXaXaRaRaRaRaRaGaaaaaaaaaaaaaGaGaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahqhrhohrhqaaaaaaaaaGaGaGaRaXaXaXaXaXaXaXhxhxaXaXaXaRaXaXaXaRaRaRaRaRaRaRaRaXaXaRaNaNaGaGaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahqhyhyhyhqaaaaaaaaaGaGaGaRaXaRaRaXaXaXaXhxhxaXaXaXaXaXaXaXaXaXaXaXaXaXaRaRaXaXgNaRaGaGaGaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahthhhzhhhwaaaaaaaaaGaGaGaRaRaRaXaXaXaXaXhxhxaXaXaXaXaXhBaXaXaXaXaXaXaXaXaXaXaXaXaRaGaGaGaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahqhrhohrhqaaaaaaaaaGaGaGaRaXaXaXaXaXaXaXgigiaXaXaXaRaXaXaXaRaRaRaRaRaRaRaRaXaXaRaNaNaGaGaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahqhyhyhyhqaaaaaaaaaGaGaGaRaXaRaRaXaXaXaXgigiaXaXaXaXaXaXaXaXaXaXaXaXaXaRaRaXaXgNaRaGaGaGaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahthhhzhhhwaaaaaaaaaGaGaGaRaRaRaXaXaXaXaXgigiaXaXaXaXaXgqaXaXaXaXaXaXaXaXaXaXaXaXaRaGaGaGaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaGaGaNaNaNaRaRaRaRaRaRaRaRaRaRgNaRaRaRaXaXaXaXaXaXaXaXaXaXaXaXaRaGaGaGaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaGaGaGaGaGaGaGaGaGaNaNaNaNaNaGaGaGaGaGaRaRaRaRaRgNaRaRaRaRaRaRaRaRaNaGaGaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaGaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa diff --git a/_maps/map_files/cyberiad/cyberiad.dmm b/_maps/map_files/cyberiad/cyberiad.dmm index 5e58016fc10..bd18d50835d 100644 --- a/_maps/map_files/cyberiad/cyberiad.dmm +++ b/_maps/map_files/cyberiad/cyberiad.dmm @@ -100,7 +100,7 @@ "abV" = (/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/shuttle/syndicate) "abW" = (/obj/structure/table,/obj/machinery/door_control{id = "syndieshutters"; name = "remote shutter control"; req_access_txt = "150"},/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/shuttle/syndicate) "abX" = (/obj/machinery/computer/shuttle/syndicate,/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/shuttle/syndicate) -"abY" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0; 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/hologram/holopad,/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/security/permabrig) +"abY" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0; 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/hologram/holopad,/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel,/area/security/permabrig) "abZ" = (/obj/structure/computerframe,/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/shuttle/syndicate) "aca" = (/obj/machinery/hydroponics/soil,/obj/item/seeds/apple,/obj/item/seeds/apple,/obj/item/seeds/apple,/turf/simulated/floor/grass,/area/security/permabrig) "acb" = (/obj/item/soap/nanotrasen,/obj/machinery/atmospherics/unary/vent_pump{dir = 4; external_pressure_bound = 101.325; on = 1; pressure_checks = 1},/turf/simulated/floor/plasteel{icon_state = "freezerfloor"},/area/security/permabrig) @@ -109,8 +109,8 @@ "ace" = (/obj/structure/chair/comfy/black{dir = 1},/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/shuttle/syndicate) "acf" = (/obj/machinery/light/spot{tag = "icon-tube1 (EAST)"; icon_state = "tube1"; dir = 4},/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/shuttle/syndicate) "acg" = (/obj/machinery/hydroponics/soil,/obj/item/seeds/corn,/obj/item/seeds/corn,/obj/item/seeds/corn,/obj/item/radio/intercom/locked/prison{pixel_x = 0; pixel_y = 25},/turf/simulated/floor/grass,/area/security/permabrig) -"ach" = (/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/security/permabrig) -"aci" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0; tag = ""},/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/security/permabrig) +"ach" = (/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel,/area/security/permabrig) +"aci" = (/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/security/permabrig) "acj" = (/obj/machinery/hydroponics/soil,/obj/item/seeds/wheat/rice,/obj/item/seeds/wheat/rice,/obj/item/seeds/wheat/rice,/obj/machinery/status_display{density = 0; layer = 4; pixel_x = 0; pixel_y = 32},/turf/simulated/floor/grass,/area/security/permabrig) "ack" = (/obj/structure/table,/obj/item/stack/sheet/glass{amount = 10},/obj/item/multitool,/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/shuttle/syndicate) "acl" = (/obj/machinery/light/spot,/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/shuttle/syndicate) @@ -121,56 +121,56 @@ "acq" = (/turf/space,/turf/simulated/shuttle/wall{icon_state = "diagonalWall3"},/area/shuttle/syndicate) "acr" = (/obj/machinery/door/window{dir = 2; name = "Cockpit"; req_access_txt = "150"},/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/shuttle/syndicate) "acs" = (/turf/space,/turf/simulated/shuttle/wall{dir = 4; icon_state = "diagonalWall3"},/area/shuttle/syndicate) -"act" = (/obj/machinery/atmospherics/unary/outlet_injector/on,/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/security/permabrig) +"act" = (/obj/machinery/atmospherics/unary/outlet_injector/on,/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel,/area/security/permabrig) "acu" = (/obj/effect/spawner/window/reinforced,/obj/machinery/door/poddoor{density = 0; icon_state = "open"; id_tag = "Prison Gate"; name = "Prison Blast Doors"; opacity = 0},/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/structure/cable{d2 = 4; icon_state = "0-4"},/turf/simulated/floor/plating,/area/security/permabrig) -"acv" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0; tag = ""},/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"; tag = ""},/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"; tag = ""},/obj/machinery/atmospherics/unary/vent_pump{on = 1},/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/security/permabrig) -"acw" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/security/permabrig) -"acx" = (/obj/machinery/biogenerator,/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/security/permabrig) +"acv" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel,/area/security/permabrig) +"acw" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0; tag = ""},/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"; tag = ""},/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"; tag = ""},/obj/machinery/atmospherics/unary/vent_pump{on = 1},/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel,/area/security/permabrig) +"acx" = (/obj/machinery/biogenerator,/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel,/area/security/permabrig) "acy" = (/obj/effect/spawner/window/reinforced,/obj/machinery/door/poddoor{density = 0; icon_state = "open"; id_tag = "Prison Gate"; name = "Prison Blast Doors"; opacity = 0},/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/security/permabrig) "acz" = (/obj/structure/table,/obj/item/stack/cable_coil,/obj/item/crowbar/red,/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/shuttle/syndicate) "acA" = (/obj/structure/table,/obj/item/storage/box/zipties,/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/shuttle/syndicate) -"acB" = (/obj/structure/reagent_dispensers/watertank,/obj/machinery/camera{c_tag = "Prison Garden"; dir = 4; network = list("SS13")},/obj/machinery/light{dir = 8},/obj/machinery/atmospherics/pipe/simple/hidden,/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/security/permabrig) -"acC" = (/obj/item/reagent_containers/glass/bucket,/obj/item/reagent_containers/glass/bucket,/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/security/permabrig) -"acD" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0; tag = ""},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/security/permabrig) -"acE" = (/obj/machinery/seed_extractor,/obj/machinery/light{dir = 4; icon_state = "tube1"},/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/security/permabrig) +"acB" = (/obj/structure/reagent_dispensers/watertank,/obj/machinery/camera{c_tag = "Prison Garden"; dir = 4; network = list("SS13")},/obj/machinery/light{dir = 8},/obj/machinery/atmospherics/pipe/simple/hidden,/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel,/area/security/permabrig) +"acC" = (/obj/item/reagent_containers/glass/bucket,/obj/item/reagent_containers/glass/bucket,/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel,/area/security/permabrig) +"acD" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0; tag = ""},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel,/area/security/permabrig) +"acE" = (/obj/machinery/seed_extractor,/obj/machinery/light{dir = 4; icon_state = "tube1"},/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel,/area/security/permabrig) "acF" = (/obj/structure/curtain/open/shower,/obj/machinery/shower{dir = 4; icon_state = "shower"; pixel_x = 5; tag = "icon-shower (EAST)"},/obj/item/bikehorn/rubberducky,/obj/item/radio/intercom/locked/prison{pixel_x = 0; pixel_y = 25},/turf/simulated/floor/plasteel{icon_state = "freezerfloor"},/area/security/permabrig) "acG" = (/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/light{dir = 4; icon_state = "tube1"},/turf/simulated/floor/plasteel{icon_state = "freezerfloor"},/area/security/permabrig) "acH" = (/obj/structure/mirror{pixel_x = 0; pixel_y = 32},/turf/simulated/floor/plasteel{icon_state = "freezerfloor"},/area/security/permabrig) "acI" = (/obj/structure/chair{dir = 4},/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/shuttle/syndicate) "acJ" = (/obj/structure/chair{dir = 8},/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/shuttle/syndicate) -"acK" = (/obj/machinery/portable_atmospherics/scrubber/huge/stationary,/obj/machinery/atmospherics/pipe/simple/hidden,/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/security/permabrig) -"acL" = (/obj/structure/table/glass,/obj/structure/table/glass,/obj/item/reagent_containers/glass/bottle/nutrient/ez,/obj/item/reagent_containers/glass/bottle/nutrient/ez,/obj/item/reagent_containers/glass/bottle/nutrient/ez,/obj/item/reagent_containers/spray/pestspray,/obj/item/reagent_containers/spray/pestspray,/obj/item/reagent_containers/spray/pestspray,/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/security/permabrig) -"acM" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 6},/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/security/permabrig) -"acN" = (/obj/machinery/atmospherics/unary/vent_scrubber{dir = 8; on = 1; scrub_Toxins = 0},/obj/structure/table/glass,/obj/item/cultivator,/obj/item/plant_analyzer,/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/security/permabrig) +"acK" = (/obj/machinery/portable_atmospherics/scrubber/huge/stationary,/obj/machinery/atmospherics/pipe/simple/hidden,/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel,/area/security/permabrig) +"acL" = (/obj/structure/table/glass,/obj/structure/table/glass,/obj/item/reagent_containers/glass/bottle/nutrient/ez,/obj/item/reagent_containers/glass/bottle/nutrient/ez,/obj/item/reagent_containers/glass/bottle/nutrient/ez,/obj/item/reagent_containers/spray/pestspray,/obj/item/reagent_containers/spray/pestspray,/obj/item/reagent_containers/spray/pestspray,/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel,/area/security/permabrig) +"acM" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 6},/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel,/area/security/permabrig) +"acN" = (/obj/machinery/atmospherics/unary/vent_scrubber{dir = 8; on = 1; scrub_Toxins = 0},/obj/structure/table/glass,/obj/item/cultivator,/obj/item/plant_analyzer,/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel,/area/security/permabrig) "acO" = (/obj/machinery/atmospherics/unary/vent_scrubber{dir = 8; on = 1},/turf/simulated/floor/plasteel{icon_state = "freezerfloor"},/area/security/permabrig) "acP" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 10},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 6},/turf/simulated/floor/plasteel{icon_state = "freezerfloor"},/area/security/permabrig) -"acQ" = (/obj/machinery/door/airlock{name = "Bathroom"; req_access_txt = "0"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/security/permabrig) +"acQ" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0; tag = ""},/obj/machinery/door/airlock/public/glass{name = "Prison Garden"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel,/area/security/permabrig) "acR" = (/obj/machinery/door/airlock{name = "Toilet"; req_access_txt = "0"},/turf/simulated/floor/plasteel{icon_state = "freezerfloor"},/area/security/permabrig) "acS" = (/obj/structure/toilet{dir = 8},/obj/machinery/light/small{dir = 1},/turf/simulated/floor/plasteel{icon_state = "freezerfloor"},/area/security/permabrig) "acT" = (/turf/space,/turf/simulated/shuttle/wall{dir = 8; icon_state = "diagonalWall3"},/area/shuttle/syndicate) "acU" = (/obj/machinery/porta_turret/syndicate,/turf/simulated/shuttle/wall{dir = 4; icon_state = "wall3"},/area/shuttle/syndicate) "acV" = (/obj/machinery/atmospherics/pipe/simple/hidden,/turf/simulated/wall,/area/security/permabrig) "acW" = (/turf/simulated/wall,/area/security/permabrig) -"acX" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0; tag = ""},/obj/machinery/door/airlock/public/glass{name = "Prison Garden"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/security/permabrig) -"acY" = (/obj/machinery/door/airlock/public/glass{name = "Prison Garden"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/security/permabrig) +"acX" = (/obj/machinery/door/airlock/public/glass{name = "Prison Garden"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel,/area/security/permabrig) +"acY" = (/obj/machinery/door/airlock{name = "Bathroom"; req_access_txt = "0"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel,/area/security/permabrig) "acZ" = (/obj/effect/spawner/window/reinforced,/obj/machinery/door/poddoor{density = 0; icon_state = "open"; id_tag = "Prison Gate"; name = "Prison Blast Doors"; opacity = 0},/obj/structure/cable{icon_state = "0-2"; pixel_y = 1; d2 = 2},/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"; tag = ""},/turf/simulated/floor/plating,/area/security/permabrig) "ada" = (/obj/effect/spawner/window/reinforced,/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/obj/structure/cable{d2 = 8; icon_state = "0-8"},/obj/machinery/door/poddoor{density = 0; icon_state = "open"; id_tag = "Prison Gate"; name = "Prison Blast Doors"; opacity = 0},/turf/simulated/floor/plating,/area/security/permabrig) -"adb" = (/obj/machinery/status_display{density = 0; layer = 4; pixel_x = 0; pixel_y = 32},/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/security/permabrig) -"adc" = (/obj/structure/table,/obj/item/paper_bin{pixel_x = -3; pixel_y = 7},/obj/item/pen,/obj/item/radio/intercom/locked/prison{pixel_x = 0; pixel_y = 25},/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/security/permabrig) +"adb" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0; tag = ""},/obj/item/twohanded/required/kirbyplants,/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel,/area/security/permabrig) +"adc" = (/obj/machinery/computer/arcade,/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel,/area/security/permabrig) "add" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/plasteel,/area/security/permabrig) "ade" = (/obj/structure/closet/syndicate/suits,/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/shuttle/syndicate) "adf" = (/obj/effect/landmark{name = "Syndicate-Uplink"; tag = ""},/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/shuttle/syndicate) -"adg" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0; tag = ""},/obj/item/twohanded/required/kirbyplants,/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/security/permabrig) -"adh" = (/obj/machinery/computer/arcade,/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/security/permabrig) -"adi" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/security/permabrig) -"adj" = (/obj/machinery/alarm{pixel_y = 23},/obj/structure/table,/obj/machinery/kitchen_machine/microwave{pixel_x = -3; pixel_y = 6},/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/security/permabrig) -"adk" = (/obj/machinery/newscaster{pixel_y = 32},/obj/structure/table,/obj/item/storage/box/donkpockets{pixel_x = 3; pixel_y = 3},/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/security/permabrig) -"adl" = (/obj/structure/chair/stool,/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/security/permabrig) -"adm" = (/obj/machinery/portable_atmospherics/scrubber/huge/stationary,/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/security/permabrig) -"adn" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 2; layer = 2.4; on = 1},/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/security/permabrig) +"adg" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel,/area/security/permabrig) +"adh" = (/obj/machinery/alarm{pixel_y = 23},/obj/structure/table,/obj/machinery/kitchen_machine/microwave{pixel_x = -3; pixel_y = 6},/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel,/area/security/permabrig) +"adi" = (/obj/machinery/newscaster{pixel_y = 32},/obj/structure/table,/obj/item/storage/box/donkpockets{pixel_x = 3; pixel_y = 3},/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel,/area/security/permabrig) +"adj" = (/obj/structure/chair/stool,/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel,/area/security/permabrig) +"adk" = (/obj/machinery/portable_atmospherics/scrubber/huge/stationary,/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel,/area/security/permabrig) +"adl" = (/obj/machinery/status_display{density = 0; layer = 4; pixel_x = 0; pixel_y = 32},/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel,/area/security/permabrig) +"adm" = (/obj/structure/table,/obj/item/paper_bin{pixel_x = -3; pixel_y = 7},/obj/item/pen,/obj/item/radio/intercom/locked/prison{pixel_x = 0; pixel_y = 25},/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel,/area/security/permabrig) +"adn" = (/obj/machinery/computer/library/public,/obj/structure/table,/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel,/area/security/permabrig) "ado" = (/turf/simulated/floor/plasteel,/area/security/permabrig) -"adp" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/security/permabrig) -"adq" = (/obj/machinery/computer/library/public,/obj/structure/table,/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/security/permabrig) +"adp" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0; tag = ""},/obj/structure/chair/stool,/obj/item/radio/intercom/locked/prison{pixel_x = -25; pixel_y = 0},/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel,/area/security/permabrig) +"adq" = (/obj/machinery/atmospherics/unary/outlet_injector/on{dir = 4; frequency = 1443; id = "air_in"},/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel,/area/security/permabrig) "adr" = (/obj/machinery/light_switch{pixel_y = 25},/turf/simulated/floor/plasteel{dir = 8; icon_state = "barber"},/area/security/permabrig) "ads" = (/obj/machinery/washing_machine,/turf/simulated/floor/plasteel{dir = 8; icon_state = "barber"},/area/security/permabrig) "adt" = (/turf/simulated/floor/holofloor{dir = 9; icon_state = "red"},/area/security/permabrig) @@ -183,16 +183,16 @@ "adA" = (/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/shuttle/wall{icon_state = "wall3"},/area/shuttle/syndicate) "adB" = (/obj/machinery/door/airlock/external{frequency = 1331; icon_state = "door_locked"; id_tag = "synd_outer"; locked = 0; name = "Ship External Access"; req_access = null; req_access_txt = "150"},/obj/machinery/door/poddoor{density = 0; icon_state = "open"; id_tag = "smindicate"; name = "Outer Airlock"; opacity = 0},/obj/machinery/door_control{id = "smindicate"; name = "External Door Control"; pixel_x = -26; pixel_y = -2; req_access_txt = "150"},/obj/docking_port/mobile{dheight = 9; dir = 2; dwidth = 5; height = 22; id = "syndicate"; name = "syndicate infiltrator"; roundstart_move = "syndicate_away"; width = 18},/obj/docking_port/stationary{dheight = 9; dir = 2; dwidth = 5; height = 22; id = "syndicate_nw"; name = "northwest of station"; width = 18},/turf/simulated/shuttle/plating,/area/shuttle/syndicate) "adC" = (/turf/space,/turf/simulated/shuttle/wall{dir = 1; icon_state = "diagonalWall3"},/area/shuttle/syndicate) -"adD" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0; tag = ""},/obj/structure/chair/stool,/obj/item/radio/intercom/locked/prison{pixel_x = -25; pixel_y = 0},/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/security/permabrig) -"adE" = (/obj/machinery/atmospherics/unary/outlet_injector/on{dir = 4; frequency = 1443; id = "air_in"},/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/security/permabrig) -"adF" = (/obj/machinery/atmospherics/pipe/manifold/hidden{dir = 4},/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/security/permabrig) -"adG" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/atmospherics/unary/vent_pump{on = 1},/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/security/permabrig) -"adH" = (/obj/structure/chair/stool,/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0; tag = ""},/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/security/permabrig) -"adI" = (/obj/structure/table,/obj/item/dice/d20,/obj/item/instrument/harmonica,/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/security/permabrig) -"adJ" = (/obj/machinery/atmospherics/unary/outlet_injector/on,/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/security/permabrig) -"adK" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4; level = 1},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_y = 0; tag = ""},/obj/machinery/hologram/holopad,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4; level = 1},/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/security/permabrig) -"adL" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_y = 0; tag = ""},/obj/machinery/atmospherics/pipe/manifold/hidden/supply,/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 8; initialize_directions = 11; level = 1},/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/security/permabrig) -"adM" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4; level = 1},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4; level = 1},/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/security/permabrig) +"adD" = (/obj/machinery/atmospherics/pipe/manifold/hidden{dir = 4},/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel,/area/security/permabrig) +"adE" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/atmospherics/unary/vent_pump{on = 1},/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel,/area/security/permabrig) +"adF" = (/obj/structure/chair/stool,/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/security/permabrig) +"adG" = (/obj/structure/table,/obj/item/dice/d20,/obj/item/instrument/harmonica,/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel,/area/security/permabrig) +"adH" = (/obj/machinery/atmospherics/unary/outlet_injector/on,/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel,/area/security/permabrig) +"adI" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 2; layer = 2.4; on = 1},/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel,/area/security/permabrig) +"adJ" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel,/area/security/permabrig) +"adK" = (/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"; tag = "90Curve"},/obj/machinery/gameboard,/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel,/area/security/permabrig) +"adL" = (/obj/machinery/atmospherics/pipe/simple/hidden,/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel,/area/security/permabrig) +"adM" = (/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 = ""},/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 8; initialize_directions = 11},/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"; tag = ""},/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel,/area/security/permabrig) "adN" = (/turf/simulated/floor/plasteel{dir = 8; icon_state = "barber"},/area/security/permabrig) "adO" = (/obj/structure/table,/obj/structure/bedsheetbin,/turf/simulated/floor/plasteel{dir = 8; icon_state = "barber"},/area/security/permabrig) "adP" = (/turf/simulated/floor/holofloor{dir = 8; icon_state = "red"},/area/security/permabrig) @@ -203,25 +203,25 @@ "adU" = (/obj/machinery/light/spot{tag = "icon-tube1 (WEST)"; icon_state = "tube1"; dir = 8},/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/shuttle/syndicate) "adV" = (/obj/machinery/atmospherics/unary/vent_pump/high_volume{dir = 2; frequency = 1331; id_tag = "synd_pump"},/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/shuttle/syndicate) "adW" = (/obj/machinery/atmospherics/unary/tank/air{dir = 2},/turf/simulated/shuttle/wall{dir = 4; icon_state = "wall3"},/area/shuttle/syndicate) -"adX" = (/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"; tag = "90Curve"},/obj/machinery/gameboard,/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/security/permabrig) -"adY" = (/obj/machinery/atmospherics/pipe/simple/hidden,/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/security/permabrig) -"adZ" = (/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 = ""},/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 8; initialize_directions = 11},/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"; tag = ""},/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/security/permabrig) -"aea" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4; level = 1},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_y = 0; tag = ""},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4; level = 1},/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/security/permabrig) -"aeb" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4; level = 1},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 1; initialize_directions = 11; level = 1},/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/security/permabrig) -"aec" = (/obj/structure/chair/stool,/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4; level = 1},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4; level = 1},/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/security/permabrig) -"aed" = (/obj/machinery/atmospherics/pipe/manifold/hidden/supply,/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4; level = 1},/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/security/permabrig) -"aee" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4; level = 1},/obj/machinery/atmospherics/pipe/simple/hidden,/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4; level = 1},/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/security/permabrig) -"aef" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 10; initialize_directions = 10; level = 1},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 10},/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/security/permabrig) -"aeg" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/obj/machinery/atmospherics/pipe/manifold/hidden/supply,/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers,/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/security/permabrig) +"adX" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_y = 0; tag = ""},/obj/machinery/atmospherics/pipe/manifold/hidden/supply,/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 8; initialize_directions = 11; level = 1},/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel,/area/security/permabrig) +"adY" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4; level = 1},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_y = 0; tag = ""},/obj/machinery/hologram/holopad,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4; level = 1},/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel,/area/security/permabrig) +"adZ" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4; level = 1},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_y = 0; tag = ""},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4; level = 1},/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel,/area/security/permabrig) +"aea" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4; level = 1},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4; level = 1},/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel,/area/security/permabrig) +"aeb" = (/obj/structure/chair/stool,/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4; level = 1},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4; level = 1},/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel,/area/security/permabrig) +"aec" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4; level = 1},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 1; initialize_directions = 11; level = 1},/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel,/area/security/permabrig) +"aed" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4; level = 1},/obj/machinery/atmospherics/pipe/simple/hidden,/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4; level = 1},/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel,/area/security/permabrig) +"aee" = (/obj/machinery/atmospherics/pipe/manifold/hidden/supply,/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4; level = 1},/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel,/area/security/permabrig) +"aef" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/obj/machinery/atmospherics/pipe/manifold/hidden/supply,/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers,/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel,/area/security/permabrig) +"aeg" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 10; initialize_directions = 10; level = 1},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 10},/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel,/area/security/permabrig) "aeh" = (/obj/structure/window/reinforced,/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/turf/simulated/floor/plasteel{dir = 8; icon_state = "barber"},/area/security/permabrig) "aei" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/turf/simulated/wall,/area/security/permabrig) "aej" = (/obj/machinery/light{dir = 8},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 6},/turf/simulated/floor/holofloor{dir = 8; icon_state = "red"},/area/security/permabrig) "aek" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/obj/machinery/atmospherics/unary/vent_pump{dir = 8; layer = 2.4; on = 1},/turf/simulated/floor/holofloor{dir = 1; icon_state = "red"},/area/security/permabrig) -"ael" = (/obj/machinery/atmospherics/pipe/manifold/hidden{dir = 8},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 10; initialize_directions = 10; level = 1},/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/security/permabrig) +"ael" = (/obj/machinery/camera{c_tag = "Prison West"; dir = 1; network = list("SS13")},/obj/machinery/light,/obj/machinery/atmospherics/unary/vent_scrubber{dir = 4; on = 1; scrub_N2O = 1; scrub_Toxins = 1},/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel,/area/security/permabrig) "aem" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4; level = 1},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/turf/simulated/floor/holofloor{dir = 1; icon_state = "red"},/area/security/permabrig) -"aen" = (/obj/machinery/camera{c_tag = "Prison West"; dir = 1; network = list("SS13")},/obj/machinery/light,/obj/machinery/atmospherics/unary/vent_scrubber{dir = 4; on = 1; scrub_N2O = 1; scrub_Toxins = 1},/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/security/permabrig) +"aen" = (/obj/machinery/atmospherics/pipe/manifold/hidden{dir = 8},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 10; initialize_directions = 10; level = 1},/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel,/area/security/permabrig) "aeo" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/turf/simulated/floor/holofloor{dir = 1; icon_state = "red"},/area/security/permabrig) -"aep" = (/obj/machinery/atmospherics/pipe/simple/hidden{dir = 4},/obj/machinery/atmospherics/unary/vent_scrubber{dir = 1; on = 1; scrub_N2O = 1; scrub_Toxins = 1},/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/security/permabrig) +"aep" = (/obj/machinery/atmospherics/pipe/simple/hidden{dir = 4},/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel,/area/security/permabrig) "aeq" = (/obj/effect/spawner/window/reinforced,/obj/machinery/door/poddoor{density = 0; icon_state = "open"; id_tag = "Prison Gate"; name = "Prison Blast Doors"; opacity = 0},/obj/structure/cable{d2 = 8; icon_state = "0-8"},/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"; tag = ""},/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"},/turf/simulated/floor/plating,/area/security/permabrig) "aer" = (/obj/machinery/light{dir = 4; icon_state = "tube1"},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/turf/simulated/floor/holofloor{dir = 4; icon_state = "red"},/area/security/permabrig) "aes" = (/obj/machinery/door/window{dir = 4; name = "Equipment Room"; req_access_txt = "150"},/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/shuttle/syndicate) @@ -230,19 +230,19 @@ "aev" = (/obj/machinery/atmospherics/pipe/manifold4w/hidden,/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/shuttle/syndicate) "aew" = (/obj/machinery/embedded_controller/radio/airlock/airlock_controller{frequency = 1331; id_tag = "synd_airlock"; pixel_x = 25; req_access_txt = "150"; tag_airpump = "synd_pump"; tag_chamber_sensor = "synd_sensor"; tag_exterior_door = "synd_outer"; tag_interior_door = "synd_inner"},/obj/machinery/airlock_sensor{frequency = 1331; id_tag = "synd_sensor"; pixel_x = 25; pixel_y = 12; req_access_txt = "150"},/obj/machinery/light{dir = 4},/obj/machinery/atmospherics/pipe/manifold/hidden{dir = 4},/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/shuttle/syndicate) "aex" = (/obj/docking_port/stationary{dir = 2; dwidth = 2; height = 18; id = "skipjack_nw"; name = "northwest of SS13"; width = 19},/turf/space,/area/space) -"aey" = (/obj/machinery/atmospherics/pipe/simple/hidden{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 5},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 5; level = 1},/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/security/permabrig) -"aez" = (/obj/machinery/atmospherics/pipe/simple/hidden{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4; level = 1},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/security/permabrig) -"aeA" = (/obj/machinery/atmospherics/pipe/simple/hidden{dir = 4},/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/security/permabrig) -"aeB" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden{dir = 4},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/security/permabrig) -"aeC" = (/obj/machinery/atmospherics/pipe/simple/hidden{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/security/permabrig) -"aeD" = (/obj/machinery/atmospherics/pipe/simple/hidden{dir = 4},/obj/item/twohanded/required/kirbyplants,/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/security/permabrig) -"aeE" = (/obj/machinery/atmospherics/pipe/simple/hidden{dir = 4},/obj/machinery/light,/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/security/permabrig) -"aeF" = (/obj/machinery/light,/obj/machinery/atmospherics/pipe/simple/hidden{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4; level = 1},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/security/permabrig) -"aeG" = (/obj/machinery/atmospherics/pipe/manifold/hidden,/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/security/permabrig) -"aeH" = (/obj/machinery/camera{c_tag = "Prison East"; dir = 1; network = list("SS13")},/obj/machinery/atmospherics/pipe/simple/hidden{dir = 4},/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/security/permabrig) -"aeI" = (/obj/machinery/door/airlock/public/glass{name = "Prison Basketball Court"},/obj/machinery/atmospherics/pipe/simple/hidden{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4; level = 1},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/security/permabrig) +"aey" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden{dir = 4},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel,/area/security/permabrig) +"aez" = (/obj/machinery/atmospherics/pipe/simple/hidden{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel,/area/security/permabrig) +"aeA" = (/obj/machinery/atmospherics/pipe/simple/hidden{dir = 4},/obj/item/twohanded/required/kirbyplants,/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel,/area/security/permabrig) +"aeB" = (/obj/machinery/atmospherics/pipe/simple/hidden{dir = 4},/obj/machinery/light,/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel,/area/security/permabrig) +"aeC" = (/obj/machinery/atmospherics/pipe/simple/hidden{dir = 4},/obj/machinery/atmospherics/unary/vent_scrubber{dir = 1; on = 1; scrub_N2O = 1; scrub_Toxins = 1},/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel,/area/security/permabrig) +"aeD" = (/obj/machinery/atmospherics/pipe/manifold/hidden,/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel,/area/security/permabrig) +"aeE" = (/obj/machinery/camera{c_tag = "Prison East"; dir = 1; network = list("SS13")},/obj/machinery/atmospherics/pipe/simple/hidden{dir = 4},/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel,/area/security/permabrig) +"aeF" = (/obj/machinery/atmospherics/pipe/simple/hidden{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 5},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 5; level = 1},/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel,/area/security/permabrig) +"aeG" = (/obj/machinery/light,/obj/machinery/atmospherics/pipe/simple/hidden{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4; level = 1},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel,/area/security/permabrig) +"aeH" = (/obj/machinery/atmospherics/pipe/simple/hidden{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4; level = 1},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel,/area/security/permabrig) +"aeI" = (/obj/machinery/door/airlock/public/glass{name = "Prison Basketball Court"},/obj/machinery/atmospherics/pipe/simple/hidden{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4; level = 1},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel,/area/security/permabrig) "aeJ" = (/obj/machinery/atmospherics/unary/outlet_injector/on{dir = 8; frequency = 1441; id = "co2_in"; pixel_y = 1},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 10; initialize_directions = 10; level = 1},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 9; pixel_y = 0},/turf/simulated/floor/holofloor{dir = 8; icon_state = "red"},/area/security/permabrig) -"aeK" = (/obj/machinery/vending/sustenance,/obj/machinery/atmospherics/pipe/simple/hidden,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 5},/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/security/permabrig) +"aeK" = (/obj/machinery/vending/sustenance,/obj/machinery/atmospherics/pipe/simple/hidden,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 5},/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel,/area/security/permabrig) "aeL" = (/obj/machinery/atmospherics/unary/vent_scrubber{on = 1; scrub_N2O = 1; scrub_Toxins = 1},/turf/simulated/floor/holofloor,/area/security/permabrig) "aeM" = (/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers,/turf/simulated/floor/plasteel,/area/security/permabrig) "aeN" = (/obj/machinery/hologram/holopad,/turf/simulated/floor/holofloor,/area/security/permabrig) @@ -253,33 +253,33 @@ "aeS" = (/obj/structure/rack,/obj/item/clothing/suit/space/syndicate/black/red,/obj/item/clothing/head/helmet/space/syndicate/black/red,/obj/machinery/atmospherics/unary/vent_pump/high_volume{dir = 1; frequency = 1331; id_tag = "synd_pump"},/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/shuttle/syndicate) "aeT" = (/obj/machinery/camera{c_tag = "Prison Basketball Court"; dir = 4; network = list("SS13")},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 5},/turf/simulated/floor/holofloor{dir = 8; icon_state = "red"},/area/security/permabrig) "aeU" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 9},/turf/simulated/floor/plasteel,/area/security/permabrig) -"aeV" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4; level = 1},/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/security/permabrig) -"aeW" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4; level = 1},/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/security/permabrig) -"aeX" = (/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 4; initialize_directions = 11; level = 1},/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/security/permabrig) -"aeY" = (/obj/machinery/door/poddoor{density = 0; icon_state = "open"; id_tag = "Prison Lockdown 1"; name = "Prison Lockdown Door"; opacity = 0},/obj/machinery/door/airlock/public/glass{name = "Cell Door"},/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/security/permabrig) +"aeV" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4; level = 1},/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel,/area/security/permabrig) +"aeW" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4; level = 1},/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel,/area/security/permabrig) +"aeX" = (/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 4; initialize_directions = 11; level = 1},/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel,/area/security/permabrig) +"aeY" = (/obj/machinery/door/poddoor{density = 0; icon_state = "open"; id_tag = "Prison Lockdown 1"; name = "Prison Lockdown Door"; opacity = 0},/obj/machinery/door/airlock/public/glass{name = "Cell Door"},/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel,/area/security/permabrig) "aeZ" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4; level = 1},/turf/simulated/floor/plasteel,/area/security/permabrig) -"afa" = (/obj/machinery/door/poddoor{density = 0; icon_state = "open"; id_tag = "Prison Lockdown 2"; name = "Prison Lockdown Door"; opacity = 0},/obj/machinery/door/airlock/public/glass{name = "Cell Door"},/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/security/permabrig) -"afb" = (/obj/machinery/flasher{id = "permaflash1"; pixel_x = 28; pixel_y = 0},/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/security/permabrig) -"afc" = (/obj/machinery/door/poddoor{density = 0; icon_state = "open"; id_tag = "Prison Lockdown 3"; name = "Prison Lockdown Door"; opacity = 0},/obj/machinery/door/airlock/public/glass{name = "Cell Door"},/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/security/permabrig) -"afd" = (/obj/machinery/flasher{id = "permaflash2"; pixel_x = 28; pixel_y = 0},/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/security/permabrig) -"afe" = (/obj/machinery/flasher{id = "permaflash3"; pixel_x = 28; pixel_y = 0},/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/security/permabrig) +"afa" = (/obj/machinery/door/poddoor{density = 0; icon_state = "open"; id_tag = "Prison Lockdown 2"; name = "Prison Lockdown Door"; opacity = 0},/obj/machinery/door/airlock/public/glass{name = "Cell Door"},/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel,/area/security/permabrig) +"afb" = (/obj/machinery/door/poddoor{density = 0; icon_state = "open"; id_tag = "Prison Lockdown 3"; name = "Prison Lockdown Door"; opacity = 0},/obj/machinery/door/airlock/public/glass{name = "Cell Door"},/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel,/area/security/permabrig) +"afc" = (/obj/machinery/vending/sustenance,/obj/machinery/atmospherics/pipe/simple/hidden,/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel,/area/security/permabrig) +"afd" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel,/area/security/permabrig) +"afe" = (/obj/machinery/flasher{id = "permaflash1"; pixel_x = 28; pixel_y = 0},/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel,/area/security/permabrig) "aff" = (/obj/effect/spawner/window/reinforced,/obj/machinery/door/poddoor{density = 0; icon_state = "open"; id_tag = "Prison Gate"; name = "Prison Blast Doors"; opacity = 0},/obj/structure/cable,/turf/simulated/floor/plating,/area/security/permabrig) "afg" = (/obj/item/radio/intercom/syndicate{pixel_x = -28},/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/shuttle/syndicate) -"afh" = (/obj/machinery/vending/sustenance,/obj/machinery/atmospherics/pipe/simple/hidden,/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/security/permabrig) -"afi" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/security/permabrig) +"afh" = (/obj/machinery/flasher{id = "permaflash2"; pixel_x = 28; pixel_y = 0},/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel,/area/security/permabrig) +"afi" = (/obj/machinery/flasher{id = "permaflash3"; pixel_x = 28; pixel_y = 0},/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel,/area/security/permabrig) "afj" = (/obj/item/clothing/mask/gas/clown_hat,/turf/simulated/floor/plating/airless,/area/space) "afk" = (/turf/simulated/floor/holofloor{dir = 2; icon_state = "red"},/area/security/permabrig) "afl" = (/turf/simulated/floor/holofloor{dir = 10; icon_state = "red"},/area/security/permabrig) "afm" = (/obj/structure/grille,/obj/structure/sign/securearea{pixel_x = -30},/turf/simulated/floor/plating/airless,/area/space) -"afn" = (/obj/machinery/door/poddoor{density = 0; icon_state = "open"; id_tag = "Prison Gate"; name = "Prison Blast Doors"; opacity = 0},/obj/machinery/door/airlock/security/glass{name = "Prison 1"; req_access_txt = "2"},/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/security/permabrig) -"afo" = (/obj/machinery/door/poddoor{density = 0; icon_state = "open"; id_tag = "Prison Gate"; name = "Prison Blast Doors"; opacity = 0},/obj/machinery/door/airlock/security/glass{name = "Prison 2"; req_access_txt = "2"},/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/security/permabrig) -"afp" = (/obj/machinery/door/poddoor{density = 0; icon_state = "open"; id_tag = "Prison Gate"; name = "Prison Blast Doors"; opacity = 0},/obj/machinery/door/airlock/security/glass{name = "Prison 3"; req_access_txt = "2"},/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/security/permabrig) +"afn" = (/obj/machinery/light/small{dir = 8},/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel,/area/security/permabrig) +"afo" = (/obj/structure/bed,/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel,/area/security/permabrig) +"afp" = (/obj/machinery/door/poddoor{density = 0; icon_state = "open"; id_tag = "Prison Gate"; name = "Prison Blast Doors"; opacity = 0},/obj/machinery/door/airlock/security/glass{name = "Prison 1"; req_access_txt = "2"},/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel,/area/security/permabrig) "afq" = (/obj/structure/lattice,/obj/machinery/camera{c_tag = "Brig Secure Armory Exterior East"; dir = 4; network = list("SS13")},/turf/space,/area/security/permabrig) "afr" = (/obj/machinery/camera{c_tag = "Brig Secure Armory Exterior North"; dir = 2; network = list("SS13")},/obj/structure/lattice,/turf/space,/area/security/permabrig) "afs" = (/obj/machinery/door_control{id = "Prison Lockdown 1"; name = "Cell 1 Lockdown"; pixel_x = -3; pixel_y = 24; range = 5; req_access_txt = "2"},/obj/machinery/atmospherics/unary/vent_pump{dir = 8; layer = 2.4; on = 1},/turf/simulated/floor/plasteel{icon_state = "red"; dir = 1},/area/security/permabrig) "aft" = (/obj/machinery/door_control{id = "Prison Lockdown 2"; name = "Cell 2 Lockdown"; pixel_x = -3; pixel_y = 24; range = 5; req_access_txt = "2"},/obj/machinery/atmospherics/unary/vent_scrubber{on = 1; scrub_N2O = 1; scrub_Toxins = 1},/turf/simulated/floor/plasteel{icon_state = "red"; dir = 1},/area/security/permabrig) "afu" = (/obj/structure/cable{d2 = 8; icon_state = "0-8"},/obj/machinery/power/apc{cell_type = 5000; dir = 2; name = "south bump Important Area"; pixel_y = -24},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4; level = 1},/turf/simulated/floor/plasteel{icon_state = "red"},/area/security/permabrig) -"afv" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_y = 0; tag = ""},/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 8; initialize_directions = 11; level = 1},/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/security/permabrig) +"afv" = (/obj/machinery/door/poddoor{density = 0; icon_state = "open"; id_tag = "Prison Gate"; name = "Prison Blast Doors"; opacity = 0},/obj/machinery/door/airlock/security/glass{name = "Prison 2"; req_access_txt = "2"},/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel,/area/security/permabrig) "afw" = (/obj/machinery/flasher_button{id = "permaflash1"; pixel_x = 0; pixel_y = -27},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4; level = 1},/turf/simulated/floor/plasteel{icon_state = "red"},/area/security/permabrig) "afx" = (/turf/simulated/floor/holofloor{dir = 6; icon_state = "red"},/area/security/permabrig) "afy" = (/obj/docking_port/stationary{dheight = 9; dir = 2; dwidth = 5; height = 22; id = "syndicate_ne"; name = "northeast of station"; width = 18},/turf/space,/area/space) @@ -296,8 +296,8 @@ "afJ" = (/obj/effect/spawner/window/reinforced,/obj/machinery/door/poddoor{density = 0; icon_state = "open"; id_tag = "Prison Gate"; name = "Prison Blast Doors"; opacity = 0},/obj/machinery/atmospherics/pipe/simple/visible,/turf/simulated/floor/plating,/area/security/permabrig) "afK" = (/obj/machinery/door/firedoor,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/obj/machinery/door/poddoor{density = 0; icon_state = "open"; id_tag = "Prison Gate"; name = "Prison Blast Doors"; opacity = 0},/obj/machinery/door/airlock/security/glass{name = "Prison Wing"; req_access_txt = "2"},/turf/simulated/floor/plasteel{icon_state = "red"; dir = 1},/area/security/permabrig) "afL" = (/obj/machinery/door/firedoor,/obj/machinery/door/poddoor{density = 0; icon_state = "open"; id_tag = "Prison Gate"; name = "Prison Blast Doors"; opacity = 0},/obj/machinery/door/airlock/security/glass{name = "Prison Wing"; req_access_txt = "2"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/plasteel{icon_state = "red"; dir = 1},/area/security/permabrig) -"afM" = (/obj/machinery/light/small{dir = 8},/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/security/permabrig) -"afN" = (/obj/structure/bed,/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/security/permabrig) +"afM" = (/obj/machinery/door/poddoor{density = 0; icon_state = "open"; id_tag = "Prison Gate"; name = "Prison Blast Doors"; opacity = 0},/obj/machinery/door/airlock/security/glass{name = "Prison 3"; req_access_txt = "2"},/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel,/area/security/permabrig) +"afN" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 8; initialize_directions = 11; level = 1},/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel,/area/security/permabrig) "afO" = (/turf/simulated/floor/plating/airless,/area/space) "afP" = (/obj/machinery/door/window{dir = 4; name = "Infirmary"; req_access_txt = "150"},/obj/machinery/light/spot{tag = "icon-tube1 (NORTH)"; icon_state = "tube1"; dir = 1},/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/shuttle/syndicate) "afQ" = (/obj/machinery/door/window/westright{name = "Tool Storage"; req_access_txt = "150"},/obj/machinery/light/spot{tag = "icon-tube1 (NORTH)"; icon_state = "tube1"; dir = 1},/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/shuttle/syndicate) @@ -323,10 +323,10 @@ "agk" = (/obj/machinery/portable_atmospherics/canister/sleeping_agent{filled = 0.2},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced,/turf/simulated/floor/plasteel{icon_state = "red"; dir = 9},/area/security/permabrig) "agl" = (/obj/machinery/computer/area_atmos/area,/obj/machinery/atmospherics/pipe/simple/visible,/turf/simulated/floor/plasteel{icon_state = "red"; dir = 1},/area/security/permabrig) "agm" = (/obj/machinery/computer/security/telescreen{desc = "Used for watching Prison Wing holding areas."; name = "Prison Monitor"; network = list("Prison"); pixel_x = 0; pixel_y = 30},/obj/structure/chair{dir = 1},/turf/simulated/floor/plasteel{icon_state = "red"; dir = 1},/area/security/permabrig) -"agn" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 8; initialize_directions = 11; level = 1},/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/security/permabrig) +"agn" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4; level = 1},/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel,/area/security/permabrig) "ago" = (/obj/machinery/camera{c_tag = "Prison Air Control"; dir = 6; network = list("Prison","SS13")},/obj/machinery/portable_atmospherics/scrubber/huge/stationary,/turf/simulated/floor/plasteel{icon_state = "red"; dir = 1},/area/security/permabrig) "agp" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4; level = 1},/obj/machinery/light_switch{pixel_y = 25},/obj/machinery/hologram/holopad,/turf/simulated/floor/plasteel{icon_state = "red"; dir = 1},/area/security/permabrig) -"agq" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4; level = 1},/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/security/permabrig) +"agq" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"; tag = ""},/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel,/area/security/permabrig) "agr" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4; level = 1},/turf/simulated/floor/plasteel{icon_state = "red"; dir = 1},/area/security/permabrig) "ags" = (/turf/simulated/floor/plasteel{icon_state = "red"; dir = 1},/area/security/permabrig) "agt" = (/turf/simulated/wall/r_wall,/area/security/armoury) @@ -352,7 +352,7 @@ "agN" = (/obj/machinery/atmospherics/binary/valve{dir = 4},/obj/machinery/light,/turf/simulated/floor/plasteel{icon_state = "red"},/area/security/permabrig) "agO" = (/obj/machinery/firealarm{dir = 1; pixel_y = -24},/obj/machinery/atmospherics/pipe/simple/visible{dir = 9},/turf/simulated/floor/plasteel{icon_state = "red"},/area/security/permabrig) "agP" = (/turf/simulated/floor/plasteel{icon_state = "red"},/area/security/permabrig) -"agQ" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"; tag = ""},/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/security/permabrig) +"agQ" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_y = 0; tag = ""},/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 8; initialize_directions = 11; level = 1},/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel,/area/security/permabrig) "agR" = (/obj/structure/rack,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 4},/obj/item/storage/box/buck{pixel_x = -3; pixel_y = 3},/obj/item/storage/box/buck,/obj/item/storage/box/buck{pixel_x = 3; pixel_y = -3},/turf/simulated/floor/plasteel{dir = 8; icon_state = "vault"; tag = "icon-vault (WEST)"},/area/security/securearmoury) "agS" = (/obj/structure/rack,/obj/item/gun/projectile/shotgun/riot{pixel_x = -3; pixel_y = 3},/obj/item/gun/projectile/shotgun/riot,/obj/item/gun/projectile/shotgun/riot{pixel_x = 3; pixel_y = -3},/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 1; layer = 2.9},/turf/simulated/floor/plasteel{dir = 8; icon_state = "vault"; tag = "icon-vault (WEST)"},/area/security/securearmoury) "agT" = (/turf/simulated/wall,/area/security/vacantoffice{name = "\improper Security Toilet"}) @@ -434,11 +434,11 @@ "air" = (/obj/effect/decal/warning_stripes/west,/obj/effect/decal/warning_stripes/east,/obj/machinery/light{dir = 4; icon_state = "tube1"},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/security/securearmoury) "ais" = (/obj/machinery/door/airlock{name = "Toilet"; req_access_txt = "0"},/turf/simulated/floor/plasteel{icon_state = "freezerfloor"},/area/security/vacantoffice{name = "\improper Security Toilet"}) "ait" = (/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 4; initialize_directions = 11; level = 1},/turf/simulated/floor/plasteel{icon_state = "red"; dir = 4},/area/security/permabrig) -"aiu" = (/obj/effect/spawner/window/reinforced,/obj/structure/cable{icon_state = "0-2"; d2 = 2},/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/security/permabrig) +"aiu" = (/obj/effect/spawner/window/reinforced,/obj/structure/cable{icon_state = "0-2"; d2 = 2},/turf/simulated/floor/plating,/area/security/permabrig) "aiv" = (/turf/simulated/wall/r_wall,/area/security/securearmoury) "aiw" = (/obj/machinery/power/apc{cell_type = 5000; dir = 8; name = "west bump Important Area"; pixel_x = -24; shock_proof = 0},/obj/structure/cable{d2 = 4; icon_state = "0-4"},/obj/machinery/camera{c_tag = "Brig Armory"; dir = 4; network = list("SS13")},/turf/simulated/floor/plasteel{icon_state = "redcorner"; dir = 1},/area/security/armoury) "aix" = (/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"; tag = ""},/turf/simulated/floor/plasteel,/area/security/armoury) -"aiy" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/security/armoury) +"aiy" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel,/area/security/armoury) "aiz" = (/obj/machinery/alarm{dir = 8; icon_state = "alarm0"; pixel_x = 24},/turf/simulated/floor/plasteel{icon_state = "redcorner"; dir = 4},/area/security/armoury) "aiA" = (/obj/effect/decal/warning_stripes/east,/obj/effect/decal/warning_stripes/west,/obj/machinery/alarm{dir = 4; icon_state = "alarm0"; pixel_x = -22},/obj/machinery/camera/motion{c_tag = "Secure Armory"; dir = 4; network = list("SS13")},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0; tag = ""},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/security/securearmoury) "aiB" = (/obj/structure/rack,/obj/structure/window/reinforced{dir = 8},/obj/item/clothing/suit/armor/laserproof{pixel_x = 0; pixel_y = 0},/obj/item/gun/energy/ionrifle,/turf/simulated/floor/plasteel{dir = 8; icon_state = "vault"; tag = "icon-vault (WEST)"},/area/security/securearmoury) @@ -473,11 +473,11 @@ "aje" = (/obj/item/skeleton/r_arm,/turf/simulated/shuttle/floor4/vox,/area/shuttle/vox) "ajf" = (/obj/structure/bed,/turf/simulated/floor/plasteel{dir = 8; icon_state = "vault"; tag = "icon-vault (WEST)"},/area/security/execution{name = "\improper Prisoner Transfer Center"}) "ajg" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"},/turf/simulated/floor/plasteel{icon_state = "red"; dir = 8},/area/security/permabrig) -"ajh" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 10},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 6},/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/security/armoury) -"aji" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 4; external_pressure_bound = 101; on = 1; pressure_checks = 1},/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/security/armoury) +"ajh" = (/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel,/area/security/armoury) +"aji" = (/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/security/permabrig) "ajj" = (/obj/effect/decal/warning_stripes/north,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/security/securearmoury) "ajk" = (/obj/vehicle/secway,/obj/item/key/security,/turf/simulated/floor/plasteel{icon_state = "redcorner"; dir = 4},/area/security/armoury) -"ajl" = (/obj/machinery/atmospherics/unary/vent_scrubber{dir = 8; on = 1},/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/security/armoury) +"ajl" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 4; external_pressure_bound = 101; on = 1; pressure_checks = 1},/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel,/area/security/armoury) "ajm" = (/obj/structure/rack,/obj/item/clothing/shoes/magboots,/obj/item/clothing/suit/space/hardsuit/security,/obj/item/clothing/mask/breath,/obj/item/clothing/head/helmet/space/hardsuit/security,/obj/structure/window/reinforced{dir = 1; layer = 2.9},/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plasteel{dir = 8; icon_state = "vault"; tag = "icon-vault (WEST)"},/area/security/securearmoury) "ajn" = (/obj/structure/sign/securearea,/turf/simulated/wall/r_wall,/area/security/armoury) "ajo" = (/obj/effect/decal/warning_stripes/east,/obj/effect/decal/warning_stripes/west,/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0; tag = ""},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/security/securearmoury) @@ -527,8 +527,8 @@ "akg" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 10},/obj/machinery/firealarm{dir = 4; pixel_x = 24},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/security/execution{name = "\improper Prisoner Transfer Center"}) "akh" = (/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"; tag = ""},/obj/machinery/atmospherics/pipe/simple/hidden/universal{dir = 4},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/security/execution{name = "\improper Prisoner Transfer Center"}) "aki" = (/obj/machinery/atmospherics/unary/vent_scrubber{dir = 4; on = 1},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/turf/simulated/floor/plasteel{icon_state = "red"; dir = 8},/area/security/permabrig) -"akj" = (/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/plasteel{icon_state = "floorgrime"},/area/security/permabrig) -"akk" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/security/armoury) +"akj" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 10},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 6},/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel,/area/security/armoury) +"akk" = (/obj/machinery/atmospherics/unary/vent_scrubber{dir = 8; on = 1},/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel,/area/security/armoury) "akl" = (/obj/machinery/door/airlock/security{name = "Warden's office"; req_access = null; req_access_txt = "3"},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/security/armoury) "akm" = (/obj/effect/decal/warning_stripes/northwestcorner,/obj/effect/decal/warning_stripes/northeastcorner,/obj/machinery/atmospherics/unary/vent_pump{on = 1},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0; tag = ""},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/security/securearmoury) "akn" = (/obj/machinery/space_heater,/obj/machinery/light_switch{pixel_x = -25},/obj/effect/decal/warning_stripes/east,/turf/simulated/floor/plasteel,/area/security/podbay) @@ -567,7 +567,7 @@ "akU" = (/obj/machinery/door/firedoor,/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/obj/machinery/door/poddoor{density = 0; icon_state = "open"; id_tag = "Prison Gate"; name = "Prison Blast Doors"; opacity = 0},/obj/machinery/door/airlock/security/glass{name = "Prison Wing"; req_access_txt = "2"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor/plasteel{icon_state = "red"; dir = 8},/area/security/permabrig) "akV" = (/obj/structure/chair{dir = 8},/obj/effect/decal/warning_stripes/west,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/security/execution{name = "\improper Prisoner Transfer Center"}) "akW" = (/turf/simulated/wall,/area/security/range) -"akX" = (/obj/effect/decal/warning_stripes/northwest,/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/security/range) +"akX" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel,/area/security/armoury) "akY" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4; level = 1},/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 8; initialize_directions = 11},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/security/execution{name = "\improper Prisoner Transfer Center"}) "akZ" = (/turf/simulated/wall/r_wall,/area/security/prisonlockers) "ala" = (/obj/machinery/hologram/holopad,/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/security/execution{name = "\improper Prisoner Transfer Center"}) @@ -599,7 +599,7 @@ "alA" = (/obj/item/clothing/head/bearpelt,/obj/item/xenos_claw,/turf/simulated/shuttle/floor4/vox,/area/shuttle/vox) "alB" = (/turf/simulated/floor/plasteel,/area/security/range) "alC" = (/obj/effect/spawner/window/reinforced,/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/obj/structure/cable{icon_state = "0-2"; pixel_y = 1; d2 = 2},/turf/simulated/floor/plating,/area/security/hos) -"alD" = (/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/security/range) +"alD" = (/turf/space,/obj/structure/cable{icon_state = "0-2"; d2 = 2},/obj/machinery/power/tracker,/turf/simulated/floor/plating/airless/catwalk,/area/solar/auxstarboard) "alE" = (/obj/structure/closet/secure_closet/brig,/turf/simulated/floor/plasteel,/area/security/prisonlockers) "alF" = (/obj/structure/chair{dir = 8},/obj/effect/landmark/start{name = "Security Officer"},/turf/simulated/floor/plasteel,/area/security/main) "alG" = (/obj/machinery/vending/cigarette,/obj/machinery/status_display{density = 0; layer = 4; pixel_x = -32; pixel_y = 0},/turf/simulated/floor/plasteel,/area/security/main) @@ -636,7 +636,7 @@ "aml" = (/obj/item/stack/spacecash/c50,/obj/structure/chair{dir = 8},/turf/simulated/shuttle/floor4/vox,/area/shuttle/vox) "amm" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/turf/simulated/floor/plasteel{icon_state = "red"; dir = 10},/area/security/main) "amn" = (/obj/structure/table/reinforced,/obj/item/folder/red{pixel_y = 3},/obj/item/book/manual/sop_legal,/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 10},/turf/simulated/floor/plasteel,/area/security/main) -"amo" = (/obj/effect/decal/warning_stripes/southwest,/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/security/range) +"amo" = (/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/auxstarboard) "amp" = (/obj/structure/chair{dir = 8},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/obj/machinery/camera{c_tag = "Brig Briefing Room East"; dir = 8; network = list("SS13")},/obj/effect/landmark/start{name = "Security Officer"},/turf/simulated/floor/plasteel,/area/security/main) "amq" = (/obj/effect/spawner/window/reinforced,/obj/structure/cable{icon_state = "0-2"; pixel_y = 1; d2 = 2},/turf/simulated/floor/plating,/area/security/main) "amr" = (/obj/structure/chair/comfy/black{dir = 4},/obj/effect/landmark/start{name = "Head of Security"},/turf/simulated/floor/plasteel{dir = 2; icon_state = "redfull"; tag = "icon-redfull (NORTHWEST)"},/area/security/main) @@ -668,7 +668,7 @@ "amR" = (/obj/machinery/computer/security{network = list("SS13","Research Outpost","Mining Outpost")},/obj/machinery/camera{c_tag = "Brig Pod Pilot's Office"; dir = 8; network = list("SS13")},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/security/podbay) "amS" = (/obj/machinery/hologram/holopad,/turf/simulated/floor/carpet,/area/security/hos) "amT" = (/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"; tag = ""},/obj/machinery/door/firedoor,/obj/machinery/door/airlock/command/glass{name = "Head of Security"; req_access_txt = "58"},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/security/hos) -"amU" = (/turf/space,/obj/structure/cable{icon_state = "0-2"; d2 = 2},/obj/machinery/power/tracker,/turf/simulated/floor/plating/airless/catwalk,/area/solar/auxstarboard) +"amU" = (/turf/space,/obj/structure/cable,/turf/simulated/floor/plating/airless/catwalk,/area/solar/auxstarboard) "amV" = (/obj/structure/sign/nosmoking_2,/turf/simulated/wall/r_wall,/area/security/podbay) "amW" = (/obj/structure/lattice,/obj/structure/grille,/turf/space,/area/space) "amX" = (/obj/structure/table/wood,/turf/simulated/floor/carpet,/area/security/hos) @@ -687,7 +687,7 @@ "ank" = (/obj/structure/closet/secure_closet/brig,/obj/machinery/firealarm{dir = 2; pixel_y = 24},/turf/simulated/floor/plasteel,/area/security/prisonlockers) "anl" = (/obj/effect/spawner/window/reinforced,/turf/simulated/floor/plating,/area/security/prisonlockers) "anm" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/firealarm{dir = 4; pixel_x = 24},/turf/simulated/floor/plasteel{icon_state = "red"; dir = 4},/area/security/permabrig) -"ann" = (/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/security/armoury) +"ann" = (/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/auxstarboard) "ano" = (/obj/machinery/sleeper{dir = 2; icon_state = "sleeper"; tag = "icon-sleeper (NORTH)"},/turf/simulated/floor/plasteel{tag = "icon-whiteblue (NORTH)"; icon_state = "whiteblue"; dir = 1},/area/security/medbay) "anp" = (/obj/structure/closet/secure_closet/brigdoc,/obj/item/radio/intercom{broadcasting = 0; name = "station intercom (General)"; pixel_y = 25},/turf/simulated/floor/plasteel{tag = "icon-whiteblue (NORTHWEST)"; icon_state = "whiteblue"; dir = 9},/area/security/medbay) "anq" = (/obj/machinery/power/apc{dir = 1; name = "north bump"; pixel_x = 0; pixel_y = 24},/obj/structure/cable{icon_state = "0-2"; pixel_y = 1; d2 = 2},/obj/structure/bed/roller,/turf/simulated/floor/plasteel{tag = "icon-whiteblue (NORTH)"; icon_state = "whiteblue"; dir = 1},/area/security/medbay) @@ -706,7 +706,7 @@ "anD" = (/obj/structure/table/reinforced,/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"; tag = ""},/obj/machinery/door/window/brigdoor{dir = 8; name = "Warden's Desk"; req_access_txt = "3"},/turf/simulated/floor/plasteel,/area/security/warden) "anE" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/turf/simulated/floor/plasteel{dir = 4; icon_state = "darkred"},/area/security/warden) "anF" = (/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 4; initialize_directions = 11; level = 1},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/plasteel,/area/security/seceqstorage) -"anG" = (/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/auxstarboard) +"anG" = (/turf/space,/obj/structure/cable{icon_state = "0-2"; d2 = 2},/obj/machinery/power/tracker,/turf/simulated/floor/plating/airless/catwalk,/area/solar/auxport) "anH" = (/turf/simulated/wall/r_wall,/area/security/main) "anI" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 4; external_pressure_bound = 101; on = 1; pressure_checks = 1},/turf/simulated/floor/plasteel,/area/security/seceqstorage) "anJ" = (/turf/simulated/floor/plasteel,/area/security/seceqstorage) @@ -762,7 +762,7 @@ "aoH" = (/obj/machinery/atmospherics/pipe/manifold/hidden/supply,/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"},/turf/simulated/floor/plasteel,/area/security/main) "aoI" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor/plasteel,/area/security/main) "aoJ" = (/turf/simulated/floor/plasteel,/area/security/main) -"aoK" = (/turf/space,/obj/structure/cable,/turf/simulated/floor/plating/airless/catwalk,/area/solar/auxstarboard) +"aoK" = (/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/auxstarboard) "aoL" = (/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"; tag = ""},/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/machinery/door/firedoor,/obj/machinery/door/airlock/security/glass{name = "Security Office"; req_access_txt = "1"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plasteel,/area/security/main) "aoM" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor/plasteel{icon_state = "redcorner"; dir = 4},/area/security/main) "aoN" = (/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"},/turf/simulated/floor/plasteel{icon_state = "redcorner"; dir = 1},/area/security/main) @@ -791,7 +791,7 @@ "apk" = (/obj/machinery/computer/security{network = list("SS13","Research Outpost","Mining Outpost")},/turf/simulated/floor/plasteel{dir = 6; icon_state = "darkred"},/area/security/warden) "apl" = (/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"; tag = ""},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/plasteel,/area/security/seceqstorage) "apm" = (/obj/effect/spawner/window/reinforced,/obj/structure/cable,/turf/simulated/floor/plating,/area/security/main) -"apn" = (/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/auxstarboard) +"apn" = (/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/auxport) "apo" = (/obj/structure/grille/broken,/turf/space,/area/space) "app" = (/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/auxstarboard) "apq" = (/obj/structure/cable{d2 = 8; icon_state = "0-8"},/obj/machinery/power/solar{id = "portsolar"; name = "Port Solar Array"},/turf/simulated/floor/plasteel/airless{icon_state = "solarpanel"},/area/solar/auxstarboard) @@ -802,7 +802,7 @@ "apv" = (/turf/space,/turf/simulated/shuttle/wall{icon_state = "swall_f10"; dir = 2},/area/shuttle/trade/sol) "apw" = (/obj/structure/window/full/shuttle,/obj/structure/grille,/turf/simulated/shuttle/plating,/area/shuttle/trade/sol) "apx" = (/obj/structure/grille,/obj/structure/shuttle/window,/turf/simulated/shuttle/plating,/area/shuttle/trade/sol) -"apy" = (/turf/space,/obj/structure/cable{icon_state = "0-2"; d2 = 2},/obj/machinery/power/tracker,/turf/simulated/floor/plating/airless/catwalk,/area/solar/auxport) +"apy" = (/obj/effect/decal/warning_stripes/northwest,/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel,/area/security/range) "apz" = (/obj/structure/table/reinforced,/obj/machinery/magnetic_controller{autolink = 1; name = "Firing Range Control Console"; path = "w;e;e;w;s;n;n;s"; pixel_x = 0; pixel_y = 0},/turf/simulated/floor/plasteel,/area/security/range) "apA" = (/obj/machinery/vending/wallmed1{dir = 2; name = "Emergency NanoMed"; pixel_x = -27; pixel_y = 0; req_access_txt = "0"},/obj/structure/table/reinforced,/obj/item/stack/medical/bruise_pack/advanced,/obj/machinery/firealarm{dir = 1; pixel_y = -24},/obj/machinery/light{dir = 8},/obj/machinery/camera{c_tag = "Brig Security Equipment South"; dir = 4; network = list("SS13")},/turf/simulated/floor/plasteel{icon_state = "red"; dir = 10},/area/security/seceqstorage) "apB" = (/obj/structure/rack,/obj/item/reagent_containers/spray/pepper{pixel_x = -2; pixel_y = -2},/obj/item/reagent_containers/spray/pepper{pixel_x = -4; pixel_y = -4},/obj/item/reagent_containers/spray/pepper{pixel_y = -4},/obj/effect/decal/warning_stripes/red/hollow,/obj/machinery/power/apc{dir = 2; name = "south bump"; pixel_y = -24},/obj/structure/cable{d2 = 8; icon_state = "0-8"},/turf/simulated/floor/plasteel{icon_state = "red"},/area/security/seceqstorage) @@ -833,7 +833,7 @@ "aqa" = (/obj/effect/decal/warning_stripes/north,/obj/machinery/hologram/holopad,/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor/plasteel,/area/security/podbay) "aqb" = (/obj/effect/decal/warning_stripes/north,/obj/machinery/atmospherics/unary/vent_scrubber{dir = 8; on = 1},/turf/simulated/floor/plasteel,/area/security/podbay) "aqc" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 6},/turf/simulated/floor/plasteel{tag = "icon-stage_stairs"; icon_state = "stage_stairs"},/area/security/podbay) -"aqd" = (/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/auxstarboard) +"aqd" = (/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel,/area/security/range) "aqe" = (/obj/structure/grille,/obj/structure/sign/securearea,/turf/simulated/floor/plating/airless,/area/security/podbay) "aqf" = (/obj/structure/shuttle/engine/propulsion{dir = 8; icon_state = "burst_l"},/turf/space,/area/shuttle/trade/sol) "aqg" = (/obj/machinery/atmospherics/pipe/simple/hidden{dir = 4},/turf/simulated/shuttle/wall{icon_state = "swall3"; dir = 2},/area/shuttle/trade/sol) @@ -843,7 +843,7 @@ "aqk" = (/obj/machinery/atmospherics/unary/portables_connector{dir = 8},/obj/machinery/portable_atmospherics/canister/air,/turf/simulated/shuttle/floor,/area/shuttle/trade/sol) "aql" = (/obj/structure/closet/crate,/turf/simulated/shuttle/floor,/area/shuttle/trade/sol) "aqm" = (/obj/structure/chair,/turf/simulated/shuttle/floor,/area/shuttle/trade/sol) -"aqn" = (/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/auxport) +"aqn" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 4; external_pressure_bound = 101; on = 1; pressure_checks = 1},/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel,/area/security/range) "aqo" = (/obj/structure/shuttle/window,/obj/structure/grille,/turf/simulated/shuttle/plating,/area/shuttle/trade/sol) "aqp" = (/obj/structure/lattice,/obj/structure/grille{density = 0; icon_state = "brokengrille"},/turf/space,/area/space) "aqq" = (/obj/machinery/door/airlock/security{name = "Execution Room"; req_access = null; req_access_txt = "1"},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0; tag = ""},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/security/execution{name = "\improper Prisoner Transfer Center"}) @@ -882,9 +882,9 @@ "aqX" = (/turf/simulated/floor/plasteel{dir = 1; icon_state = "darkredcorners"},/area/security/brig) "aqY" = (/obj/machinery/alarm{pixel_y = 23},/obj/machinery/camera{c_tag = "Brig Main Hall West"; network = list("SS13")},/turf/simulated/floor/plasteel{dir = 1; icon_state = "darkredcorners"},/area/security/brig) "aqZ" = (/turf/space,/turf/simulated/floor/plating/airless/catwalk,/area/solar/auxstarboard) -"ara" = (/turf/space,/obj/structure/cable,/turf/simulated/floor/plating/airless/catwalk,/area/solar/auxport) -"arb" = (/turf/space,/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/plating/airless/catwalk,/area/solar/auxport) -"arc" = (/turf/space,/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 = ""},/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"; tag = ""},/turf/simulated/floor/plating/airless/catwalk,/area/solar/auxport) +"ara" = (/obj/effect/decal/warning_stripes/west,/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel,/area/security/range) +"arb" = (/turf/space,/obj/structure/cable,/turf/simulated/floor/plating/airless/catwalk,/area/solar/auxport) +"arc" = (/obj/effect/decal/warning_stripes/southwest,/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel,/area/security/range) "ard" = (/obj/structure/shuttle/engine/propulsion{dir = 8; icon_state = "propulsion"},/turf/space,/area/shuttle/trade/sol) "are" = (/obj/machinery/door/airlock/external{frequency = 1450; icon_state = "door_locked"; id_tag = "trade_sol_inner"; locked = 1; name = "External Access"; req_access = null; req_access_txt = "160"},/turf/simulated/shuttle/plating,/area/shuttle/trade/sol) "arf" = (/obj/machinery/door/airlock/shuttle{id_tag = "s_docking_airlock"; req_access_txt = "160"},/obj/docking_port/mobile{dir = 8; dwidth = 2; height = 11; id = "trade_sol"; name = "sol trade shuttle"; roundstart_move = "trade_sol_base"; width = 5},/obj/docking_port/stationary{dir = 8; dwidth = 2; height = 11; id = "trade_sol_offstation"; lock_shuttle_doors = 1; name = "northwest of Cyberiad"; width = 5},/turf/simulated/shuttle/floor,/area/shuttle/trade/sol) @@ -919,16 +919,16 @@ "arI" = (/obj/structure/closet/secure_closet/security,/obj/structure/cable{d2 = 8; icon_state = "0-8"},/obj/item/spacepod_equipment/weaponry/laser,/obj/machinery/power/apc{dir = 4; name = "east bump"; pixel_x = 24},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/security/podbay) "arJ" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/security/podbay) "arK" = (/obj/machinery/magnetic_module,/obj/structure/target_stake,/turf/simulated/floor/plasteel{icon_state = "red"; dir = 4},/area/security/range) -"arL" = (/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/security/range) -"arM" = (/obj/effect/decal/warning_stripes/west,/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/security/range) -"arN" = (/obj/effect/decal/cleanable/dirt,/obj/machinery/atmospherics/unary/vent_pump{dir = 4; external_pressure_bound = 101; on = 1; pressure_checks = 1},/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/security/range) +"arL" = (/turf/space,/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/plating/airless/catwalk,/area/solar/auxport) +"arM" = (/turf/space,/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 = ""},/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"; tag = ""},/turf/simulated/floor/plating/airless/catwalk,/area/solar/auxport) +"arN" = (/turf/space,/obj/structure/cable{d2 = 8; icon_state = "0-8"},/turf/simulated/floor/plating/airless/catwalk,/area/solar/auxport) "arO" = (/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/effect/decal/cleanable/dirt,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4; level = 1},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor/plasteel,/area/security/range) "arP" = (/obj/machinery/hologram/holopad,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 6},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor/plasteel{icon_state = "red"; dir = 8},/area/security/range) "arQ" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4; level = 1},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/security/brig) "arR" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/obj/machinery/door/firedoor,/obj/machinery/door/airlock/security/glass{name = "Firing Range"; req_access_txt = "1"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4; level = 1},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor/plasteel,/area/security/range) "arS" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers,/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/security/brig) "arT" = (/turf/simulated/floor/plasteel{dir = 8; icon_state = "redcorner"},/area/hallway/primary/fore) -"arU" = (/turf/space,/obj/structure/cable{d2 = 8; icon_state = "0-8"},/turf/simulated/floor/plating/airless/catwalk,/area/solar/auxport) +"arU" = (/turf/space,/obj/structure/cable{icon_state = "0-4"; d2 = 4},/turf/simulated/floor/plating/airless/catwalk,/area/solar/auxport) "arV" = (/obj/structure/shuttle/engine/propulsion{dir = 8; icon_state = "burst_r"},/turf/space,/area/shuttle/trade/sol) "arW" = (/obj/machinery/access_button{command = "cycle_interior"; frequency = 1450; master_tag = "trade_sol"; name = "interior access button"; pixel_x = 25; pixel_y = 25; req_access_txt = "160"},/turf/simulated/shuttle/floor,/area/shuttle/trade/sol) "arX" = (/obj/structure/cable{icon_state = "0-2"; d2 = 2},/obj/machinery/power/solar{id = "auxsolareast"; name = "Port Auxiliary Solar Array"},/turf/simulated/floor/plasteel/airless{icon_state = "solarpanel"},/area/solar/auxport) @@ -971,13 +971,13 @@ "asI" = (/obj/structure/chair/office/dark{dir = 4},/obj/effect/landmark/start{name = "Security Pod Pilot"},/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 4; initialize_directions = 11; level = 1},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/security/podbay) "asJ" = (/turf/space,/turf/simulated/shuttle/wall{tag = "icon-swall_f5"; icon_state = "swall_f5"; dir = 2},/area/shuttle/trade/sol) "asK" = (/turf/space,/turf/simulated/shuttle/wall{icon_state = "swall_f9"; dir = 2},/area/shuttle/trade/sol) -"asL" = (/turf/space,/obj/structure/cable{icon_state = "0-4"; d2 = 4},/turf/simulated/floor/plating/airless/catwalk,/area/solar/auxport) -"asM" = (/turf/space,/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/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/plating/airless/catwalk,/area/solar/auxport) -"asN" = (/turf/space,/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/plating/airless/catwalk,/area/solar/auxport) -"asO" = (/turf/space,/obj/machinery/access_button{command = "cycle_exterior"; frequency = 1450; master_tag = "dorms_maint"; name = "exterior access button"; pixel_x = -25; pixel_y = -25; req_access_txt = "13"},/turf/simulated/floor/plating/airless/catwalk,/area/space) +"asL" = (/turf/space,/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/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/plating/airless/catwalk,/area/solar/auxport) +"asM" = (/turf/space,/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/plating/airless/catwalk,/area/solar/auxport) +"asN" = (/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,/obj/item/radio/intercom/department/security{pixel_x = -28},/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel,/area/security/prisonershuttle) +"asO" = (/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,/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel,/area/security/prisonershuttle) "asP" = (/obj/machinery/door/window/eastright{dir = 1; name = "Security Delivery"; req_access_txt = "1"},/obj/structure/window/reinforced{dir = 8},/obj/structure/disposalpipe/segment,/obj/effect/decal/warning_stripes/yellow,/turf/simulated/floor/plasteel,/area/security/processing) -"asQ" = (/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_3) -"asR" = (/turf/space,/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"},/turf/simulated/floor/plating/airless/catwalk,/area/solar/auxstarboard) +"asQ" = (/obj/machinery/camera{c_tag = "Brig Labor Camp Airlock North"; network = list("SS13")},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/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/security/prisonershuttle) +"asR" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/item/radio/intercom{broadcasting = 0; name = "station intercom (General)"; pixel_y = 25},/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/security/prisonershuttle) "asS" = (/turf/space,/turf/simulated/shuttle/wall{icon_state = "swall_f6"; dir = 2},/area/shuttle/siberia) "asT" = (/obj/structure/grille,/obj/structure/window/full/shuttle{dir = 10; icon_state = "9"},/turf/simulated/floor/plating,/area/shuttle/siberia) "asU" = (/obj/structure/grille,/obj/structure/window/full/shuttle{icon_state = "window4"},/turf/simulated/floor/plating,/area/shuttle/siberia) @@ -1019,7 +1019,7 @@ "atE" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"; tag = ""},/turf/simulated/floor/plasteel{dir = 8; icon_state = "darkredcorners"},/area/security/brig) "atF" = (/obj/structure/cable,/obj/machinery/power/solar{id = "auxsolareast"; name = "Port Auxiliary Solar Array"},/turf/simulated/floor/plasteel/airless{icon_state = "solarpanel"},/area/solar/auxport) "atG" = (/turf/simulated/wall/r_wall,/area/maintenance/fsmaint) -"atH" = (/turf/space,/obj/structure/cable{d2 = 8; icon_state = "0-8"},/turf/simulated/floor/plating/airless/catwalk,/area/solar/auxstarboard) +"atH" = (/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/machinery/atmospherics/unary/vent_scrubber{dir = 1; on = 1; scrub_N2O = 1; scrub_Toxins = 1},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 9; pixel_y = 0},/obj/machinery/firealarm{dir = 1; pixel_y = -24},/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel,/area/security/prisonershuttle) "atI" = (/turf/simulated/shuttle/wall{icon_state = "swall3"; dir = 2},/area/shuttle/siberia) "atJ" = (/obj/structure/table,/obj/item/folder/red,/obj/item/restraints/handcuffs,/obj/machinery/light{dir = 4; icon_state = "tube1"},/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/shuttle/siberia) "atK" = (/obj/machinery/computer/shuttle/labor,/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/shuttle/siberia) @@ -1055,9 +1055,9 @@ "auo" = (/obj/machinery/door/firedoor,/obj/machinery/door/airlock/security/glass{id_tag = "BrigFoyer"; name = "Brig"; req_access_txt = "63"},/turf/simulated/floor/plasteel{dir = 4; icon_state = "darkredcorners"},/area/security/prison/cell_block/B) "aup" = (/obj/machinery/light/small{dir = 1},/obj/structure/closet/emcloset,/obj/machinery/camera{c_tag = "Security Pod"; dir = 2; network = list("SS13")},/turf/simulated/floor/plating,/area/maintenance/fsmaint) "auq" = (/turf/simulated/shuttle/wall{tag = "icon-swall12"; icon_state = "swall12"; dir = 2},/area/shuttle/pod_3) -"aur" = (/turf/space,/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/turf/simulated/floor/plating/airless/catwalk,/area/solar/auxstarboard) +"aur" = (/obj/machinery/power/treadmill{dir = 4},/obj/machinery/treadmill_monitor{id = "Cell 4"; pixel_y = -32},/obj/structure/cable/yellow,/obj/machinery/atmospherics/unary/vent_scrubber{dir = 1; on = 1; scrub_N2O = 1; scrub_Toxins = 1},/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel{icon_state = "redcorner"; dir = 4},/area/security/prison/cell_block/B) "aus" = (/turf/space,/turf/simulated/shuttle/wall{icon_state = "swall_f10"; dir = 2},/area/shuttle/pod_3) -"aut" = (/turf/space,/obj/machinery/access_button{command = "cycle_exterior"; frequency = 1379; master_tag = "solar_tool_airlock"; name = "exterior access button"; pixel_x = 25; pixel_y = -25; req_access_txt = "13"},/obj/structure/cable{icon_state = "0-2"; pixel_y = 1; d2 = 2},/turf/simulated/floor/plating/airless/catwalk,/area/solar/auxport) +"aut" = (/obj/machinery/hologram/holopad,/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel,/area/security/prisonershuttle) "auu" = (/obj/machinery/mineral/labor_claim_console{machinedir = 2; pixel_x = 30; pixel_y = 30},/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/shuttle/siberia) "auv" = (/obj/structure/grille,/obj/structure/window/full/shuttle,/turf/simulated/floor/plating,/area/shuttle/siberia) "auw" = (/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/shuttle/siberia) @@ -1067,7 +1067,7 @@ "auA" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/obj/machinery/door/firedoor,/obj/machinery/door/airlock/security/glass{id_tag = "BrigFoyer"; name = "Brig"; req_access_txt = "63"},/turf/simulated/floor/plasteel{dir = 1; icon_state = "darkredcorners"},/area/security/prison/cell_block/B) "auB" = (/obj/machinery/light{dir = 1},/turf/simulated/floor/plating,/area/security/prisonershuttle) "auC" = (/turf/simulated/floor/plating,/area/security/prisonershuttle) -"auD" = (/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/security/prisonershuttle) +"auD" = (/obj/structure/chair/stool,/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel,/area/security/prisonershuttle) "auE" = (/obj/effect/spawner/window/reinforced,/obj/structure/cable,/turf/simulated/floor/plating,/area/security/processing) "auF" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/obj/machinery/door/firedoor,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/structure/disposalpipe/segment,/obj/machinery/door/airlock/security/glass{id_tag = "Brig"; name = "Prisoner Processing"; req_access_txt = "63"},/turf/simulated/floor/plasteel,/area/security/processing) "auG" = (/obj/structure/closet,/obj/effect/decal/cleanable/cobweb,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/security/evidence) @@ -1084,7 +1084,7 @@ "auR" = (/obj/structure/table/reinforced,/obj/item/storage/box/flashbangs,/obj/machinery/status_display{density = 0; layer = 4; pixel_x = -32; pixel_y = 0},/turf/simulated/floor/plasteel,/area/security/range) "auS" = (/obj/structure/table/reinforced,/obj/machinery/syndicatebomb/training,/turf/simulated/floor/plasteel,/area/security/range) "auT" = (/obj/structure/table/reinforced,/obj/item/clothing/ears/earmuffs{pixel_x = -3; pixel_y = -2},/obj/item/clothing/ears/earmuffs,/obj/machinery/firealarm{dir = 1; pixel_y = -24},/turf/simulated/floor/plasteel,/area/security/range) -"auU" = (/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,/obj/item/radio/intercom/department/security{pixel_x = -28},/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/security/prisonershuttle) +"auU" = (/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel,/area/security/prisonershuttle) "auV" = (/turf/simulated/floor/plasteel,/area/security/prisonershuttle) "auW" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/turf/simulated/floor/plasteel{dir = 4; icon_state = "darkred"},/area/security/courtroomdandp) "auX" = (/obj/machinery/camera{c_tag = "Brig Security Courtroom Hall"; dir = 4; network = list("SS13")},/turf/simulated/floor/plasteel{dir = 8; icon_state = "darkred"},/area/security/courtroomdandp) @@ -1128,7 +1128,7 @@ "avJ" = (/obj/structure/chair/office/dark{dir = 8},/obj/effect/landmark/start{name = "Detective"},/turf/simulated/floor/plasteel{icon_state = "grimy"},/area/security/detectives_office) "avK" = (/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"; tag = ""},/turf/simulated/floor/carpet,/area/security/detectives_office) "avL" = (/obj/structure/filingcabinet/chestdrawer,/obj/machinery/requests_console{name = "Detective Requests Console"; pixel_x = 30},/turf/simulated/floor/plasteel{icon_state = "grimy"},/area/security/detectives_office) -"avM" = (/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/plasteel{icon_state = "floorgrime"},/area/security/prisonershuttle) +"avM" = (/turf/space,/obj/machinery/access_button{command = "cycle_exterior"; frequency = 1450; master_tag = "dorms_maint"; name = "exterior access button"; pixel_x = -25; pixel_y = -25; req_access_txt = "13"},/turf/simulated/floor/plating/airless/catwalk,/area/space) "avN" = (/obj/machinery/alarm{dir = 8; icon_state = "alarm0"; pixel_x = 24},/obj/machinery/light/small{dir = 4; pixel_y = 8},/turf/simulated/floor/plasteel,/area/security/prisonershuttle) "avO" = (/obj/machinery/light/small{dir = 8},/turf/simulated/floor/plasteel{dir = 8; icon_state = "darkred"},/area/security/courtroomdandp) "avP" = (/obj/machinery/light{dir = 8},/obj/machinery/status_display{density = 0; layer = 4; pixel_x = -32; pixel_y = 0},/turf/simulated/floor/plasteel{dir = 8; icon_state = "darkredcorners"},/area/security/prison/cell_block/A) @@ -1152,7 +1152,7 @@ "awh" = (/obj/structure/chair{dir = 8},/turf/simulated/floor/plasteel{icon_state = "redcorner"; dir = 1},/area/security/processing) "awi" = (/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/effect/decal/cleanable/dirt,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/structure/disposalpipe/segment{dir = 1; icon_state = "pipe-c"},/turf/simulated/floor/plasteel{icon_state = "redcorner"; dir = 4},/area/security/processing) "awj" = (/obj/structure/chair{dir = 1},/obj/structure/disposalpipe/segment{dir = 2; icon_state = "pipe-c"},/turf/simulated/floor/plasteel{icon_state = "redcorner"; dir = 4},/area/security/processing) -"awk" = (/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_3) +"awk" = (/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_3) "awl" = (/turf/simulated/wall,/area/maintenance/fsmaint) "awm" = (/turf/space,/turf/simulated/shuttle/wall{icon_state = "swall_f9"; dir = 2},/area/shuttle/pod_3) "awn" = (/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"; tag = ""},/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor/plasteel{icon_state = "redcorner"; dir = 4},/area/security/processing) @@ -1183,9 +1183,9 @@ "awM" = (/obj/machinery/computer/security/wooden_tv{network = list("SS13","Research Outpost","Mining Outpost")},/obj/item/radio/intercom/department/security{pixel_x = 28},/obj/machinery/light_switch{pixel_y = -25},/turf/simulated/floor/plasteel{icon_state = "grimy"},/area/security/detectives_office) "awN" = (/obj/structure/table,/obj/item/storage/box/prisoner,/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 6},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/turf/simulated/floor/plasteel,/area/security/prisonershuttle) "awO" = (/obj/structure/closet/emcloset,/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/plasteel,/area/security/prisonershuttle) -"awP" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/item/radio/intercom{broadcasting = 0; name = "station intercom (General)"; pixel_y = 25},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/security/prisonershuttle) -"awQ" = (/obj/machinery/camera{c_tag = "Brig Labor Camp Airlock North"; network = list("SS13")},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/security/prisonershuttle) -"awR" = (/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/machinery/atmospherics/unary/vent_scrubber{dir = 1; on = 1; scrub_N2O = 1; scrub_Toxins = 1},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 9; pixel_y = 0},/obj/machinery/firealarm{dir = 1; pixel_y = -24},/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/security/prisonershuttle) +"awP" = (/turf/space,/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"},/turf/simulated/floor/plating/airless/catwalk,/area/solar/auxstarboard) +"awQ" = (/turf/space,/obj/structure/cable{d2 = 8; icon_state = "0-8"},/turf/simulated/floor/plating/airless/catwalk,/area/solar/auxstarboard) +"awR" = (/turf/space,/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/turf/simulated/floor/plating/airless/catwalk,/area/solar/auxstarboard) "awS" = (/obj/machinery/power/apc{dir = 1; name = "north bump"; pixel_x = 0; pixel_y = 24},/obj/structure/cable{d2 = 4; icon_state = "0-4"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/turf/simulated/floor/plasteel,/area/security/prisonershuttle) "awT" = (/turf/simulated/floor/plasteel{dir = 8; icon_state = "darkred"},/area/security/courtroomdandp) "awU" = (/obj/machinery/alarm{dir = 4; icon_state = "alarm0"; pixel_x = -22},/obj/machinery/atmospherics/unary/vent_pump{dir = 4; external_pressure_bound = 101; on = 1; pressure_checks = 1},/turf/simulated/floor/plasteel{dir = 8; icon_state = "darkredcorners"},/area/security/prison/cell_block/A) @@ -1210,7 +1210,7 @@ "axn" = (/obj/structure/lattice,/obj/item/stack/cable_coil,/turf/space,/area/space) "axo" = (/obj/structure/chair{dir = 4},/turf/simulated/shuttle/floor,/area/shuttle/siberia) "axp" = (/obj/effect/spawner/window/reinforced,/obj/structure/cable,/obj/machinery/door/poddoor{density = 0; icon_state = "open"; id_tag = "Secure Gate"; name = "Security Blast Door"; opacity = 0},/turf/simulated/floor/plating,/area/security/prison/cell_block/B) -"axq" = (/obj/machinery/power/treadmill{dir = 4},/obj/machinery/treadmill_monitor{id = "Cell 4"; pixel_y = -32},/obj/structure/cable/yellow,/obj/machinery/atmospherics/unary/vent_scrubber{dir = 1; on = 1; scrub_N2O = 1; scrub_Toxins = 1},/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/security/prison/cell_block/B) +"axq" = (/turf/space,/obj/machinery/access_button{command = "cycle_exterior"; frequency = 1379; master_tag = "solar_tool_airlock"; name = "exterior access button"; pixel_x = 25; pixel_y = -25; req_access_txt = "13"},/obj/structure/cable{icon_state = "0-2"; pixel_y = 1; d2 = 2},/turf/simulated/floor/plating/airless/catwalk,/area/solar/auxport) "axr" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 8; on = 1},/turf/simulated/floor/plasteel{dir = 2; icon_state = "darkredcorners"},/area/security/prison/cell_block/B) "axs" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/obj/item/radio/intercom{pixel_x = -28},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 8; initialize_directions = 11},/turf/simulated/floor/plasteel{dir = 8; icon_state = "darkredcorners"},/area/security/prison/cell_block/B) "axt" = (/obj/structure/table,/obj/item/storage/box/evidence,/turf/simulated/floor/plasteel,/area/security/processing) @@ -1233,7 +1233,7 @@ "axK" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0; tag = ""},/turf/simulated/floor/plasteel,/area/security/prisonershuttle) "axL" = (/turf/simulated/floor/plasteel,/area/security/lobby) "axM" = (/obj/machinery/computer/prisoner{req_access = null; req_access_txt = "2"},/turf/simulated/floor/plasteel,/area/security/prisonershuttle) -"axN" = (/obj/machinery/hologram/holopad,/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/security/prisonershuttle) +"axN" = (/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_3) "axO" = (/obj/machinery/door/firedoor,/obj/machinery/door/airlock/security/glass{name = "Courtroom Prosecution and Defense"; req_access_txt = "63"},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/security/courtroomdandp) "axP" = (/obj/machinery/firealarm{dir = 8; pixel_x = -24},/obj/machinery/atmospherics/unary/vent_scrubber{dir = 4; on = 1; scrub_N2O = 1; scrub_Toxins = 1},/turf/simulated/floor/plasteel{dir = 8; icon_state = "darkredcorners"},/area/security/prison/cell_block/A) "axQ" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 4; initialize_directions = 11; level = 1},/turf/simulated/floor/plasteel{dir = 2; icon_state = "darkredcorners"},/area/security/prison/cell_block/A) @@ -1276,7 +1276,7 @@ "ayB" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 1; on = 1},/turf/simulated/floor/plasteel,/area/security/prisonershuttle) "ayC" = (/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"; tag = ""},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0; tag = ""},/turf/simulated/floor/plasteel,/area/security/prisonershuttle) "ayD" = (/obj/machinery/computer/secure_data,/obj/machinery/light/small{dir = 4; pixel_y = 8},/turf/simulated/floor/plasteel,/area/security/prisonershuttle) -"ayE" = (/obj/structure/chair/stool,/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/security/prisonershuttle) +"ayE" = (/turf/space,/obj/machinery/access_button{command = "cycle_exterior"; frequency = 1379; master_tag = "solar_chapel_airlock"; name = "exterior access button"; pixel_x = -25; pixel_y = -25; req_access_txt = "10;13"},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/turf/simulated/floor/plating/airless/catwalk,/area/solar/auxstarboard) "ayF" = (/obj/item/flag/nt,/obj/item/radio/intercom/department/security{pixel_x = -28},/turf/simulated/floor/plasteel{icon_state = "red"; dir = 9},/area/security/courtroomdandp) "ayG" = (/obj/machinery/light_switch{pixel_x = 0; pixel_y = 25},/turf/simulated/floor/plasteel{icon_state = "red"; dir = 1},/area/security/courtroomdandp) "ayH" = (/obj/machinery/alarm{dir = 8; icon_state = "alarm0"; pixel_x = 24},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/turf/simulated/floor/plasteel{icon_state = "red"; dir = 4},/area/security/courtroomdandp) @@ -1299,7 +1299,7 @@ "ayY" = (/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"; tag = ""},/turf/simulated/floor/plasteel,/area/security/prisonershuttle) "ayZ" = (/obj/machinery/computer/shuttle/labor,/turf/simulated/floor/plasteel,/area/security/prisonershuttle) "aza" = (/obj/structure/chair,/obj/machinery/atmospherics/unary/vent_scrubber{dir = 4; on = 1; scrub_N2O = 1; scrub_Toxins = 1},/turf/simulated/floor/plasteel{icon_state = "red"; dir = 8},/area/security/courtroomdandp) -"azb" = (/turf/space,/obj/machinery/access_button{command = "cycle_exterior"; frequency = 1379; master_tag = "solar_chapel_airlock"; name = "exterior access button"; pixel_x = -25; pixel_y = -25; req_access_txt = "10;13"},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/turf/simulated/floor/plating/airless/catwalk,/area/solar/auxstarboard) +"azb" = (/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) "azc" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 10; initialize_directions = 10; level = 1},/turf/simulated/floor/plasteel,/area/security/courtroomdandp) "azd" = (/obj/structure/chair,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4; level = 1},/turf/simulated/floor/plasteel,/area/security/courtroomdandp) "aze" = (/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/syndicate_elite) @@ -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) @@ -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" = (/obj/machinery/recharge_station,/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel,/area/maintenance/electrical) "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" = (/obj/item/stack/sheet/mineral/plasma{amount = 10},/obj/item/stack/rods{amount = 50},/obj/structure/rack,/obj/item/stack/cable_coil{pixel_x = -3; pixel_y = 3},/obj/item/stack/cable_coil{amount = 5},/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel,/area/maintenance/electrical) "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" = (/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel,/area/maintenance/electrical) "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" = (/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plating,/area/maintenance/electrical) "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" = (/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"; tag = ""},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel,/area/maintenance/electrical) "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) @@ -1751,12 +1751,12 @@ "aHI" = (/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"; tag = ""},/turf/simulated/floor/plating,/area/maintenance/auxsolarstarboard) "aHJ" = (/obj/structure/cable{d2 = 8; icon_state = "0-8"},/obj/machinery/power/terminal,/obj/machinery/light/small{dir = 4},/turf/simulated/floor/plating,/area/maintenance/auxsolarstarboard) "aHK" = (/obj/structure/chair/stool,/turf/simulated/floor/plating,/area/maintenance/auxsolarstarboard) -"aHL" = (/turf/space,/obj/machinery/access_button{command = "cycle_exterior"; frequency = 1379; master_tag = "eva_airlock"; name = "exterior access button"; pixel_x = 0; pixel_y = 25; req_access_txt = "13"},/turf/simulated/floor/plating/airless/catwalk,/area/maintenance/fpmaint) +"aHL" = (/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/maintenance/electrical) "aHM" = (/obj/machinery/atmospherics/trinary/filter{dir = 4},/turf/simulated/floor/plating,/area/maintenance/fpmaint2) "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) @@ -2036,10 +2036,10 @@ "aNh" = (/obj/structure/rack,/obj/effect/spawner/lootdrop/maintenance{lootcount = 2; name = "2maintenance loot spawner"},/turf/simulated/floor/plating,/area/maintenance/fsmaint2) "aNi" = (/mob/living/simple_animal/mouse,/turf/simulated/floor/plating,/area/maintenance/fsmaint2) "aNj" = (/obj/structure/table,/turf/simulated/floor/plating,/area/maintenance/fsmaint2) -"aNk" = (/obj/machinery/recharge_station,/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/maintenance/electrical) +"aNk" = (/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"; tag = ""},/obj/structure/extinguisher_cabinet{pixel_x = 27},/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel,/area/maintenance/electrical) "aNl" = (/obj/machinery/door_control{id = "maint3"; name = "Blast Door Control C"; pixel_y = 24},/turf/simulated/floor/plating,/area/maintenance/fsmaint2) "aNm" = (/obj/machinery/power/port_gen/pacman,/turf/simulated/floor/plating,/area/maintenance/electrical) -"aNn" = (/obj/item/stack/sheet/mineral/plasma{amount = 10},/obj/item/stack/rods{amount = 50},/obj/structure/rack,/obj/item/stack/cable_coil{pixel_x = -3; pixel_y = 3},/obj/item/stack/cable_coil{amount = 5},/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/maintenance/electrical) +"aNn" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 6; level = 1},/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plating,/area/maintenance/electrical) "aNo" = (/turf/simulated/floor/mech_bay_recharge_floor,/area/maintenance/electrical) "aNp" = (/obj/machinery/mech_bay_recharge_port,/obj/structure/cable{icon_state = "0-2"; d2 = 2},/turf/simulated/floor/plating,/area/maintenance/electrical) "aNq" = (/obj/machinery/computer/mech_bay_power_console,/obj/structure/cable{icon_state = "0-2"; d2 = 2},/turf/simulated/floor/bluegrid,/area/maintenance/electrical) @@ -2113,11 +2113,11 @@ "aOG" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/turf/simulated/floor/plating,/area/maintenance/fsmaint2) "aOH" = (/obj/machinery/door/airlock/maintenance{req_access_txt = "12"},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/turf/simulated/floor/plating,/area/maintenance/fsmaint2) "aOI" = (/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"; tag = ""},/turf/simulated/floor/plating,/area/maintenance/fsmaint2) -"aOJ" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/maintenance/electrical) -"aOK" = (/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/maintenance/electrical) +"aOJ" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plating,/area/maintenance/electrical) +"aOK" = (/obj/structure/table,/obj/item/clothing/gloves/color/fyellow,/obj/item/storage/toolbox/electrical,/obj/item/multitool,/obj/item/radio/intercom{pixel_x = 25},/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel,/area/maintenance/electrical) "aOL" = (/turf/simulated/floor/plating,/area/maintenance/electrical) -"aOM" = (/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{icon_state = "floorgrime"},/area/maintenance/electrical) -"aON" = (/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"; tag = ""},/obj/structure/extinguisher_cabinet{pixel_x = 27},/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/maintenance/electrical) +"aOM" = (/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"; tag = ""},/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plating,/area/maintenance/electrical) +"aON" = (/turf/simulated/floor/plating,/obj/structure/shuttle/engine/propulsion/burst,/turf/simulated/shuttle/wall{icon_state = "swall_f5"; dir = 2},/area/shuttle/pod_1) "aOO" = (/obj/structure/mirror{icon_state = "mirror_broke"; pixel_y = 28},/obj/machinery/iv_drip,/turf/simulated/floor/plating,/area/maintenance/fpmaint2) "aOP" = (/obj/machinery/light/small{dir = 8},/turf/simulated/floor/plating,/area/hallway/secondary/entry) "aOQ" = (/turf/simulated/floor/plating,/area/hallway/secondary/entry) @@ -2171,14 +2171,14 @@ "aPM" = (/obj/structure/chair{dir = 8},/turf/simulated/floor/plasteel,/area/crew_quarters/fitness) "aPN" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/obj/machinery/door/poddoor{density = 0; icon_state = "open"; id_tag = "maint3"; name = "Blast Door"; opacity = 0},/turf/simulated/floor/plating,/area/maintenance/fsmaint2) "aPO" = (/obj/structure/sign/securearea{desc = "A warning sign which reads 'HIGH VOLTAGE'"; icon_state = "shock"; name = "HIGH VOLTAGE"; pixel_y = 0},/turf/simulated/wall,/area/maintenance/electrical) -"aPP" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 6; level = 1},/turf/simulated/floor/plating,/area/maintenance/electrical) +"aPP" = (/turf/simulated/floor/plating,/obj/structure/shuttle/engine/propulsion/burst,/turf/simulated/shuttle/wall{icon_state = "swall_f9"; dir = 2},/area/shuttle/pod_1) "aPQ" = (/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/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor/plating,/area/maintenance/fsmaint2) "aPR" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 6},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 6; level = 1},/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"; tag = ""},/turf/simulated/floor/plating,/area/maintenance/fsmaint2) "aPS" = (/obj/structure/cable{icon_state = "0-2"; pixel_y = 1; d2 = 2},/obj/machinery/power/apc{dir = 1; name = "north bump Engineering"; pixel_x = 0; pixel_y = 24; shock_proof = 1},/turf/simulated/floor/plating,/area/maintenance/electrical) "aPT" = (/obj/machinery/atmospherics/unary/vent_scrubber{dir = 8; on = 1; scrub_N2O = 1; scrub_Toxins = 1},/turf/simulated/floor/plating,/area/maintenance/electrical) -"aPU" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/turf/simulated/floor/plating,/area/maintenance/electrical) +"aPU" = (/turf/simulated/floor/plating,/obj/structure/shuttle/engine/propulsion/burst,/turf/simulated/shuttle/wall{icon_state = "swall_f5"; dir = 2},/area/shuttle/pod_2) "aPV" = (/obj/structure/sign/securearea{desc = "A warning sign which reads 'EXTERNAL AIRLOCK'"; icon_state = "space"; layer = 4; name = "EXTERNAL AIRLOCK"; pixel_x = 32},/turf/space,/area/space) -"aPW" = (/obj/structure/table,/obj/item/clothing/gloves/color/fyellow,/obj/item/storage/toolbox/electrical,/obj/item/multitool,/obj/item/radio/intercom{pixel_x = 25},/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/maintenance/electrical) +"aPW" = (/turf/simulated/floor/plating,/obj/structure/shuttle/engine/propulsion/burst,/turf/simulated/shuttle/wall{icon_state = "swall_f9"; dir = 2},/area/shuttle/pod_2) "aPX" = (/obj/machinery/optable,/turf/simulated/floor/plating,/area/maintenance/fpmaint2) "aPY" = (/obj/machinery/door/airlock/public/glass{name = "Vacant Office"},/obj/machinery/door/firedoor,/turf/simulated/floor/wood,/area/security/vacantoffice) "aPZ" = (/obj/machinery/door/airlock/external{name = "Escape Pod"},/turf/simulated/floor/plating,/area/hallway/secondary/entry) @@ -2229,7 +2229,7 @@ "aQS" = (/obj/machinery/door/airlock/engineering{name = "Electrical Maintenance"; req_access_txt = "11"},/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/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor/plating,/area/maintenance/electrical) "aQT" = (/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/landmark{name = "blobstart"},/turf/simulated/floor/plating,/area/maintenance/electrical) "aQU" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/obj/machinery/hologram/holopad,/turf/simulated/floor/plating,/area/maintenance/electrical) -"aQV" = (/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"; tag = ""},/turf/simulated/floor/plating,/area/maintenance/electrical) +"aQV" = (/turf/space,/obj/machinery/access_button{command = "cycle_exterior"; frequency = 1379; master_tag = "eva_airlock"; name = "exterior access button"; pixel_x = 0; pixel_y = 25; req_access_txt = "13"},/turf/simulated/floor/plating/airless/catwalk,/area/maintenance/fpmaint) "aQW" = (/obj/structure/table,/obj/item/camera_assembly,/obj/item/camera_assembly,/obj/item/assembly/prox_sensor{pixel_x = -5; pixel_y = 5},/obj/machinery/alarm{dir = 8; icon_state = "alarm0"; pixel_x = 24},/obj/machinery/light{dir = 4; icon_state = "tube1"},/turf/simulated/floor/plating,/area/maintenance/electrical) "aQX" = (/obj/docking_port/stationary{dir = 8; dwidth = 2; height = 11; id = "trade_dock"; name = "port bay 4 at Cyberiad"; width = 5},/turf/space,/area/space) "aQY" = (/obj/structure/chair/stool,/turf/simulated/floor/plating,/area/maintenance/electrical) @@ -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" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 8; on = 1},/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plating,/area/maintenance/electrical) "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) @@ -2284,7 +2284,7 @@ "aRV" = (/obj/machinery/door/firedoor,/obj/machinery/door/airlock/public/glass{name = "Holodeck Door"},/turf/simulated/floor/plasteel,/area/crew_quarters/fitness) "aRW" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"; tag = ""},/turf/simulated/floor/plating,/area/maintenance/fsmaint2) "aRX" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor/plating,/area/maintenance/fsmaint2) -"aRY" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 8; on = 1},/turf/simulated/floor/plating,/area/maintenance/electrical) +"aRY" = (/turf/space,/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plating/airless/catwalk,/area/maintenance/fpmaint) "aRZ" = (/obj/structure/table,/obj/machinery/cell_charger,/obj/item/stock_parts/cell/high{charge = 100; maxcharge = 15000},/obj/item/stock_parts/cell/high{charge = 100; maxcharge = 15000},/turf/simulated/floor/plating,/area/maintenance/electrical) "aSa" = (/obj/machinery/status_display{layer = 4; pixel_x = 0; pixel_y = -32},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/effect/decal/warning_stripes/south,/turf/simulated/floor/plasteel,/area/hallway/secondary/entry) "aSb" = (/obj/machinery/atmospherics/pipe/simple/hidden{dir = 4},/obj/machinery/door/airlock/external{frequency = 1379; icon_state = "door_locked"; id_tag = "sol_inner"; locked = 1; name = "Arrivals External Access"; req_access = null; req_access_txt = "0"},/turf/simulated/floor/plating,/area/hallway/secondary/entry) @@ -2348,7 +2348,7 @@ "aTh" = (/obj/machinery/computer/mob_battle_terminal/blue,/turf/simulated/floor/plasteel{icon_state = "neutral"; dir = 4},/area/crew_quarters/fitness) "aTi" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/structure/table,/obj/effect/spawner/lootdrop/maintenance,/turf/simulated/floor/plating,/area/maintenance/fsmaint2) "aTj" = (/obj/machinery/power/terminal,/obj/structure/cable{icon_state = "0-4"; d2 = 4},/turf/simulated/floor/plating,/area/maintenance/electrical) -"aTk" = (/obj/structure/cable{icon_state = "0-2"; pixel_y = 1; d2 = 2},/turf/simulated/floor/plating,/area/maintenance/electrical) +"aTk" = (/obj/structure/cable{icon_state = "0-2"; pixel_y = 1; d2 = 2},/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plating,/area/maintenance/electrical) "aTl" = (/obj/structure/cable{d2 = 8; icon_state = "0-8"},/turf/simulated/floor/plating,/area/maintenance/electrical) "aTm" = (/obj/structure/cable{icon_state = "0-4"; d2 = 4},/obj/machinery/light_switch{pixel_y = -25},/turf/simulated/floor/plating,/area/maintenance/electrical) "aTn" = (/obj/machinery/power/terminal,/obj/structure/cable{d2 = 8; icon_state = "0-8"},/turf/simulated/floor/plating,/area/maintenance/electrical) @@ -2455,7 +2455,7 @@ "aVk" = (/obj/structure/closet/secure_closet/freezer/money,/obj/machinery/ai_status_display{pixel_x = 0; pixel_y = 32},/turf/simulated/floor/plasteel{icon_state = "vault"; dir = 8},/area/security/nuke_storage) "aVl" = (/obj/machinery/power/apc{dir = 1; name = "north bump"; pixel_x = 0; pixel_y = 24},/obj/structure/cable{d2 = 8; icon_state = "0-8"},/turf/simulated/floor/plasteel{icon_state = "vault"; dir = 10},/area/security/nuke_storage) "aVm" = (/obj/machinery/light/small{dir = 1},/obj/machinery/alarm{pixel_y = 23},/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 10},/turf/simulated/floor/plasteel{icon_state = "vault"},/area/security/nuke_storage) -"aVn" = (/obj/structure/closet/fireaxecabinet{step_x = 0},/turf/simulated/wall/r_wall,/area/security/nuke_storage) +"aVn" = (/obj/machinery/status_display{density = 0; layer = 4; pixel_x = 0; pixel_y = 32},/obj/structure/filingcabinet,/obj/item/folder/documents,/turf/simulated/floor/plasteel{icon_state = "vault"; dir = 8},/area/security/nuke_storage) "aVo" = (/obj/machinery/gateway{dir = 10},/obj/effect/landmark{name = "JoinLateGateway"},/turf/simulated/floor/plasteel{icon_state = "vault"; dir = 4},/area/gateway) "aVp" = (/obj/item/radio/intercom{frequency = 1459; name = "station intercom (General)"; pixel_x = -28},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/gateway) "aVq" = (/obj/machinery/gateway{dir = 6},/obj/effect/landmark{name = "JoinLateGateway"},/turf/simulated/floor/plasteel{icon_state = "vault"; dir = 1},/area/gateway) @@ -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) @@ -2666,7 +2666,7 @@ "aZn" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor/plasteel,/area/hallway/secondary/construction{name = "\improper Garden"}) "aZo" = (/obj/machinery/atmospherics/unary/vent_pump/on{dir = 8},/turf/simulated/floor/plasteel{icon_state = "vault"; dir = 10},/area/security/nuke_storage) "aZp" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 6},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/plasteel{icon_state = "vault"},/area/security/nuke_storage) -"aZq" = (/obj/machinery/status_display{density = 0; layer = 4; pixel_x = 0; pixel_y = 32},/obj/structure/table/reinforced,/turf/simulated/floor/plasteel{icon_state = "vault"; dir = 8},/area/security/nuke_storage) +"aZq" = (/obj/structure/safe,/obj/machinery/light_switch{pixel_y = -23},/obj/item/clothing/head/bearpelt,/obj/item/twohanded/fireaxe,/turf/simulated/floor/plasteel{icon_state = "vault"; dir = 4},/area/security/nuke_storage) "aZr" = (/obj/structure/table,/obj/machinery/light{dir = 4},/obj/item/storage/toolbox/mechanical,/turf/simulated/floor/plasteel,/area/storage/primary) "aZs" = (/obj/machinery/status_display{density = 0; layer = 4; pixel_x = -32; pixel_y = 0},/turf/simulated/floor/plasteel,/area/gateway) "aZt" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/hologram/holopad,/turf/simulated/floor/plasteel,/area/gateway) @@ -2696,7 +2696,7 @@ "aZR" = (/turf/simulated/floor/plasteel{icon_state = "grimy"},/area/crew_quarters/bar) "aZS" = (/obj/machinery/cryopod/robot,/turf/simulated/floor/plasteel,/area/assembly/chargebay) "aZT" = (/turf/simulated/floor/plasteel{icon_state = "dark"},/area/medical/morgue) -"aZU" = (/obj/structure/filingcabinet/chestdrawer{desc = "A large drawer filled with autopsy reports."; name = "Autopsy Reports"},/obj/structure/window/reinforced{dir = 4; pixel_x = 0},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/medical/morgue) +"aZU" = (/obj/structure/window/reinforced{dir = 4; pixel_x = 0},/obj/structure/filingcabinet/chestdrawer/autopsy,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/medical/morgue) "aZV" = (/obj/structure/disposalpipe/segment,/turf/simulated/floor/wood,/area/crew_quarters/bar) "aZW" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4; level = 1},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; tag = ""},/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor/plating,/area/maintenance/fsmaint2) "aZX" = (/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 1; initialize_directions = 11; level = 1},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/obj/structure/disposalpipe/junction{tag = "icon-pipe-j1 (EAST)"; icon_state = "pipe-j1"; dir = 4},/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"; tag = ""},/turf/simulated/floor/plating,/area/maintenance/fsmaint2) @@ -3895,7 +3895,7 @@ "bwU" = (/obj/structure/window/reinforced{dir = 1},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/structure/closet/wardrobe/pjs,/turf/simulated/floor/plasteel{dir = 8; icon_state = "barber"},/area/crew_quarters/locker) "bwV" = (/obj/structure/window/reinforced{dir = 1},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/structure/dresser,/turf/simulated/floor/plasteel{dir = 8; icon_state = "barber"},/area/crew_quarters/locker) "bwW" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0; tag = ""},/obj/effect/decal/warning_stripes/northeastcorner,/obj/effect/decal/warning_stripes/southeastcorner,/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/secondary/exit) -"bwX" = (/obj/machinery/door/poddoor/shutters{dir = 2; id_tag = "qm_warehouse"; name = "Warehouse Shutters"},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/effect/decal/warning_stripes/yellow,/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/quartermaster/storage) +"bwX" = (/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) "bwY" = (/obj/machinery/power/apc{dir = 4; name = "east bump"; pixel_x = 24},/obj/structure/cable,/obj/structure/closet/secure_closet/personal,/turf/simulated/floor/plasteel,/area/crew_quarters/locker) "bwZ" = (/obj/machinery/atmospherics/unary/tank/air{dir = 4},/obj/effect/decal/warning_stripes/south,/turf/simulated/floor/plating,/area/maintenance/port) "bxa" = (/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/plating,/area/maintenance/port) @@ -3968,11 +3968,11 @@ "byp" = (/obj/effect/landmark/start{name = "Civilian"},/turf/simulated/floor/plasteel{dir = 8; icon_state = "barber"},/area/crew_quarters/locker) "byq" = (/obj/machinery/atmospherics/unary/vent_scrubber{dir = 1; on = 1},/turf/simulated/floor/plasteel{dir = 8; icon_state = "barber"},/area/crew_quarters/locker) "byr" = (/obj/machinery/atmospherics/unary/vent_pump/on{dir = 1},/turf/simulated/floor/plasteel{dir = 8; icon_state = "barber"},/area/crew_quarters/locker) -"bys" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 9},/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/quartermaster/storage) -"byt" = (/obj/structure/rack{dir = 8; layer = 2.9},/obj/item/stack/sheet/cardboard,/obj/item/stack/rods{amount = 50},/obj/machinery/atmospherics/unary/vent_scrubber{dir = 4; on = 1},/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/quartermaster/storage) -"byu" = (/obj/machinery/hologram/holopad,/obj/machinery/firealarm{dir = 2; pixel_y = 24},/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/quartermaster/storage) -"byv" = (/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/quartermaster/storage) -"byw" = (/obj/structure/rack{dir = 8; layer = 2.9},/obj/item/apc_electronics,/obj/item/stock_parts/cell{maxcharge = 2000},/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/quartermaster/storage) +"bys" = (/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) +"byt" = (/obj/structure/rack{dir = 8; layer = 2.9},/obj/item/stack/sheet/cardboard,/obj/item/stack/rods{amount = 50},/obj/machinery/atmospherics/unary/vent_scrubber{dir = 4; on = 1},/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel,/area/quartermaster/storage) +"byu" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 9},/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel,/area/quartermaster/storage) +"byv" = (/obj/machinery/hologram/holopad,/obj/machinery/firealarm{dir = 2; pixel_y = 24},/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel,/area/quartermaster/storage) +"byw" = (/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel,/area/quartermaster/storage) "byx" = (/obj/machinery/atmospherics/unary/vent_pump/on,/obj/effect/decal/warning_stripes/north,/turf/simulated/floor/plasteel,/area/quartermaster/office) "byy" = (/obj/machinery/conveyor{dir = 1; id = "packageSort1"},/turf/simulated/floor/plating,/area/quartermaster/office) "byz" = (/obj/effect/decal/warning_stripes/west,/turf/simulated/floor/plasteel,/area/quartermaster/office) @@ -4029,9 +4029,9 @@ "bzy" = (/obj/machinery/washing_machine,/obj/machinery/light,/turf/simulated/floor/plasteel{dir = 8; icon_state = "barber"},/area/crew_quarters/locker) "bzz" = (/obj/structure/table,/obj/structure/bedsheetbin{pixel_x = -1; pixel_y = 2},/turf/simulated/floor/plasteel{dir = 8; icon_state = "barber"},/area/crew_quarters/locker) "bzA" = (/obj/machinery/washing_machine,/turf/simulated/floor/plasteel{dir = 8; icon_state = "barber"},/area/crew_quarters/locker) -"bzB" = (/obj/structure/closet/crate,/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/quartermaster/storage) -"bzC" = (/obj/structure/closet/crate,/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/quartermaster/storage) -"bzD" = (/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"},/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/quartermaster/storage) +"bzB" = (/obj/structure/rack{dir = 8; layer = 2.9},/obj/item/apc_electronics,/obj/item/stock_parts/cell{maxcharge = 2000},/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel,/area/quartermaster/storage) +"bzC" = (/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"},/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel,/area/quartermaster/storage) +"bzD" = (/obj/structure/closet/crate,/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel,/area/quartermaster/storage) "bzE" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor/plasteel,/area/quartermaster/office) "bzF" = (/obj/structure/disposalpipe/segment,/turf/simulated/floor/plasteel,/area/quartermaster/office) "bzG" = (/obj/machinery/conveyor_switch/oneway{id = "packageSort1"},/obj/effect/decal/warning_stripes/west,/turf/simulated/floor/plasteel,/area/quartermaster/office) @@ -4115,9 +4115,9 @@ "bBg" = (/obj/structure/closet/emcloset,/obj/machinery/camera{c_tag = "Arrivals Auxiliary Docking South"; dir = 4; network = list("SS13")},/obj/effect/decal/warning_stripes/northwest,/turf/simulated/floor/plasteel,/area/hallway/secondary/entry) "bBh" = (/obj/item/cigbutt,/obj/structure/disposalpipe/segment{dir = 4; icon_state = "pipe-c"},/turf/simulated/floor/plating,/area/maintenance/port) "bBi" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/structure/disposalpipe/segment{dir = 8; icon_state = "pipe-c"},/turf/simulated/floor/plating,/area/maintenance/port) -"bBj" = (/obj/item/radio/intercom{dir = 0; name = "station intercom (General)"; pixel_x = -28},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/quartermaster/storage) -"bBk" = (/obj/structure/closet/crate/freezer,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/quartermaster/storage) -"bBl" = (/obj/machinery/light/small{dir = 4},/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/quartermaster/storage) +"bBj" = (/obj/structure/closet/crate,/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel,/area/quartermaster/storage) +"bBk" = (/obj/item/radio/intercom{dir = 0; name = "station intercom (General)"; pixel_x = -28},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel,/area/quartermaster/storage) +"bBl" = (/obj/structure/closet/crate/freezer,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel,/area/quartermaster/storage) "bBm" = (/obj/structure/disposalpipe/segment,/obj/effect/decal/warning_stripes/north,/turf/simulated/floor/plasteel,/area/assembly/chargebay) "bBn" = (/turf/simulated/floor/plasteel,/area/quartermaster/office) "bBo" = (/obj/machinery/hologram/holopad,/turf/simulated/floor/plasteel,/area/quartermaster/office) @@ -4178,12 +4178,12 @@ "bCr" = (/obj/structure/disposalpipe/segment,/turf/simulated/floor/plating,/area/maintenance/port) "bCs" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/plating,/area/maintenance/port) "bCt" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/structure/disposalpipe/segment,/turf/simulated/floor/plating,/area/maintenance/port) -"bCu" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/quartermaster/storage) -"bCv" = (/obj/item/stack/sheet/cardboard,/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/quartermaster/storage) +"bCu" = (/obj/machinery/light/small{dir = 4},/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel,/area/quartermaster/storage) +"bCv" = (/obj/machinery/alarm{dir = 4; icon_state = "alarm0"; pixel_x = -22},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel,/area/quartermaster/storage) "bCw" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/structure/sign/poster/contraband/random{pixel_x = -32},/obj/structure/disposalpipe/segment,/turf/simulated/floor/plating,/area/maintenance/port) "bCx" = (/obj/effect/landmark{name = "xeno_spawn"; pixel_x = -1},/turf/simulated/floor/plasteel{icon_state = "freezerfloor"},/area/crew_quarters/locker/locker_toilet) -"bCy" = (/obj/machinery/alarm{dir = 4; icon_state = "alarm0"; pixel_x = -22},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/quartermaster/storage) -"bCz" = (/obj/machinery/camera{c_tag = "Cargo Bay Storage"; dir = 8; network = list("SS13")},/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/quartermaster/storage) +"bCy" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel,/area/quartermaster/storage) +"bCz" = (/obj/item/stack/sheet/cardboard,/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel,/area/quartermaster/storage) "bCA" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor/wood,/area/bridge/meeting_room) "bCB" = (/obj/machinery/camera{c_tag = "Cargo Delivery Office"; dir = 4; network = list("SS13")},/obj/machinery/firealarm{dir = 8; pixel_x = -24},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/telepad_cargo,/turf/simulated/floor/plasteel{dir = 8; icon_state = "brown"},/area/quartermaster/office) "bCC" = (/obj/item/folder/blue,/obj/structure/table/wood,/turf/simulated/floor/carpet,/area/bridge/meeting_room) @@ -4253,15 +4253,15 @@ "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) "bDQ" = (/obj/structure/disposalpipe/segment{dir = 4},/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) -"bDR" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 5},/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/quartermaster/storage) -"bDS" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/quartermaster/storage) -"bDT" = (/obj/structure/closet/crate/internals,/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 10},/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/quartermaster/storage) +"bDR" = (/obj/machinery/camera{c_tag = "Cargo Bay Storage"; dir = 8; network = list("SS13")},/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel,/area/quartermaster/storage) +"bDS" = (/obj/structure/closet/crate/medical,/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel,/area/quartermaster/storage) +"bDT" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 5},/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel,/area/quartermaster/storage) "bDU" = (/obj/structure/disposaloutlet{dir = 1},/obj/structure/disposalpipe/trunk,/turf/simulated/floor/plating,/area/quartermaster/office) "bDV" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 8; initialize_directions = 11; level = 1},/obj/structure/disposalpipe/sortjunction{dir = 2; icon_state = "pipe-j2s"; name = "Sci R&D"; sortType = 12},/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"; tag = ""},/turf/simulated/floor/plasteel,/area/hallway/primary/starboard/east) "bDW" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/effect/decal/cleanable/blood/oil/streak,/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},/obj/structure/disposalpipe/segment,/turf/simulated/floor/plating,/area/maintenance/port) "bDX" = (/obj/effect/spawner/window/reinforced,/turf/simulated/floor/plating,/area/quartermaster/office) "bDY" = (/obj/machinery/camera{c_tag = "Locker Room Toilets"; dir = 8; network = list("SS13")},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/hologram/holopad,/turf/simulated/floor/plasteel{icon_state = "freezerfloor"},/area/crew_quarters/locker/locker_toilet) -"bDZ" = (/obj/structure/closet/crate/medical,/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/quartermaster/storage) +"bDZ" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel,/area/quartermaster/storage) "bEa" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 1; on = 1},/turf/simulated/floor/wood,/area/crew_quarters/bar) "bEb" = (/obj/machinery/alarm{dir = 4; icon_state = "alarm0"; pixel_x = -22},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor/plasteel{dir = 8; icon_state = "brown"},/area/quartermaster/office) "bEc" = (/obj/machinery/vending/cigarette,/turf/simulated/floor/wood,/area/bridge/meeting_room) @@ -4269,7 +4269,7 @@ "bEe" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 9},/turf/simulated/wall/r_wall,/area/turret_protected/ai_upload) "bEf" = (/obj/item/paper_bin{pixel_x = -3; pixel_y = 7},/obj/structure/table/reinforced,/turf/simulated/floor/plasteel{icon_state = "arrival"; dir = 4},/area/quartermaster/office) "bEg" = (/obj/structure/table/wood,/obj/item/folder/blue,/obj/item/stamp/captain,/turf/simulated/floor/wood,/area/crew_quarters/captain) -"bEh" = (/obj/structure/safe{knownby = list("captain")},/obj/machinery/light_switch{pixel_y = -23},/obj/item/clothing/head/bearpelt,/obj/item/folder/documents,/obj/item/reagent_containers/food/drinks/bottle/vodka/badminka,/obj/item/lighter/zippo/nt_rep,/obj/item/storage/fancy/cigarettes/cigpack_robustgold,/obj/item/stack/spacecash/c1000{amount = 100000},/turf/simulated/floor/plasteel{icon_state = "vault"; dir = 4},/area/security/nuke_storage) +"bEh" = (/obj/structure/table/wood,/obj/item/hand_tele,/turf/simulated/floor/wood,/area/crew_quarters/captain) "bEi" = (/obj/structure/table/wood,/obj/item/flashlight/lamp/green,/turf/simulated/floor/wood,/area/crew_quarters/captain) "bEj" = (/turf/simulated/floor/plasteel{dir = 8; icon_state = "browncorner"},/area/hallway/primary/central/west) "bEk" = (/obj/machinery/hologram/holopad,/turf/simulated/floor/wood,/area/crew_quarters/captain) @@ -4283,7 +4283,7 @@ "bEs" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/turf/simulated/floor/wood,/area/crew_quarters/captain) "bEt" = (/obj/machinery/optable,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/medical/morgue) "bEu" = (/turf/simulated/wall,/area/medical/morgue) -"bEv" = (/obj/structure/table/wood,/obj/item/paper/safe_code{owner = "captain"},/obj/item/hand_tele,/turf/simulated/floor/wood,/area/crew_quarters/captain) +"bEv" = (/obj/structure/table/wood,/obj/item/pinpointer,/obj/item/disk/nuclear,/obj/item/storage/secure/safe{pixel_x = 35; pixel_y = 5},/turf/simulated/floor/wood,/area/crew_quarters/captain) "bEw" = (/obj/structure/disposalpipe/segment,/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/obj/machinery/door/firedoor,/turf/simulated/floor/plasteel{dir = 8; icon_state = "bluecorner"},/area/hallway/primary/central/se) "bEx" = (/obj/machinery/hologram/holopad,/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 9},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/medical/morgue) "bEy" = (/obj/structure/sign/redcross{desc = "The Star of Life, a symbol of Medical Aid."; icon_state = "lifestar"; name = "Medbay"},/turf/simulated/wall,/area/medical/reception) @@ -4323,15 +4323,15 @@ "bFg" = (/obj/structure/disposalpipe/segment,/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor/plating,/area/maintenance/port) "bFh" = (/obj/machinery/alarm{dir = 1; icon_state = "alarm0"; pixel_y = -22},/obj/machinery/atmospherics/unary/vent_pump/on{dir = 1},/turf/simulated/floor/plasteel{icon_state = "freezerfloor"},/area/crew_quarters/locker/locker_toilet) "bFi" = (/obj/effect/decal/cleanable/cobweb,/obj/effect/decal/cleanable/dirt,/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 6},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 6},/obj/effect/landmark{name = "xeno_spawn"; pixel_x = -1},/obj/effect/spawner/lootdrop/maintenance,/turf/simulated/floor/plating,/area/maintenance/port) -"bFj" = (/obj/structure/sign/poster/contraband/random{pixel_y = -32},/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/quartermaster/storage) -"bFk" = (/obj/machinery/atmospherics/unary/vent_pump/on{dir = 1},/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/quartermaster/storage) +"bFj" = (/obj/structure/closet/crate/internals,/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 10},/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel,/area/quartermaster/storage) +"bFk" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/light_switch{pixel_x = -24},/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel,/area/quartermaster/storage) "bFl" = (/obj/structure/disposalpipe/segment{dir = 4; icon_state = "pipe-c"},/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/port) "bFm" = (/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/wall,/area/quartermaster/storage) "bFn" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/structure/disposalpipe/segment{dir = 8; icon_state = "pipe-c"},/turf/simulated/floor/plating,/area/maintenance/port) "bFo" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 9},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 9; pixel_y = 0},/turf/simulated/floor/plating,/area/maintenance/port) -"bFp" = (/obj/machinery/door_control{id = "qm_warehouse"; name = "Warehouse Door Control"; pixel_x = -1; pixel_y = -24; req_access_txt = "31"},/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/quartermaster/storage) -"bFq" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/light_switch{pixel_x = -24},/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/quartermaster/storage) -"bFr" = (/obj/structure/disposalpipe/segment{dir = 4; icon_state = "pipe-c"},/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/quartermaster/storage) +"bFp" = (/obj/machinery/door_control{id = "qm_warehouse"; name = "Warehouse Door Control"; pixel_x = -1; pixel_y = -24; req_access_txt = "31"},/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel,/area/quartermaster/storage) +"bFq" = (/obj/structure/sign/poster/contraband/random{pixel_y = -32},/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel,/area/quartermaster/storage) +"bFr" = (/obj/machinery/atmospherics/unary/vent_pump/on{dir = 1},/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel,/area/quartermaster/storage) "bFs" = (/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"; tag = ""},/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 4; initialize_directions = 11; level = 1},/obj/structure/disposalpipe/sortjunction{dir = 2; icon_state = "pipe-j2s"; name = "Sci RD Office 1"; sortType = 13},/turf/simulated/floor/plasteel,/area/hallway/primary/starboard/east) "bFt" = (/obj/structure/disposalpipe/segment{dir = 8; icon_state = "pipe-c"},/turf/simulated/floor/plasteel,/area/quartermaster/office) "bFu" = (/obj/machinery/light{dir = 8},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor/plasteel{dir = 8; icon_state = "brown"},/area/quartermaster/office) @@ -4439,7 +4439,7 @@ "bHs" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/wall/r_wall,/area/engine/gravitygenerator) "bHt" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/space,/area/space) "bHu" = (/obj/machinery/atmospherics/unary/vent_scrubber{dir = 8; on = 1; scrub_N2O = 1; scrub_Toxins = 1},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/engine/gravitygenerator) -"bHv" = (/obj/structure/table/wood,/obj/item/pinpointer,/obj/item/disk/nuclear,/turf/simulated/floor/wood,/area/crew_quarters/captain) +"bHv" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/structure/rack,/obj/item/tank/emergency_oxygen/double,/obj/item/tank/jetpack/oxygen/captain,/obj/item/clothing/suit/space/captain,/obj/item/clothing/mask/gas,/obj/item/clothing/head/helmet/space/capspace,/obj/item/radio/intercom/private{pixel_x = -28},/turf/simulated/floor/wood,/area/crew_quarters/captain) "bHw" = (/obj/machinery/computer/card,/turf/simulated/floor/wood,/area/crew_quarters/captain) "bHx" = (/obj/structure/table/wood,/obj/machinery/recharger{pixel_y = 4},/obj/item/melee/chainofcommand,/obj/item/card/id/captains_spare,/turf/simulated/floor/wood,/area/crew_quarters/captain) "bHy" = (/obj/machinery/atmospherics/unary/vent_pump{on = 1},/turf/simulated/floor/wood,/area/crew_quarters/captain) @@ -4482,7 +4482,7 @@ "bIj" = (/obj/structure/table/reinforced,/obj/structure/window/reinforced{dir = 1; layer = 2.9},/obj/structure/window/reinforced{dir = 4},/obj/machinery/door/firedoor,/obj/item/folder/white,/obj/item/reagent_containers/spray/cleaner,/obj/machinery/door/poddoor{density = 0; icon_state = "open"; id_tag = "Biohazard_medi"; name = "Quarantine Lockdown"; opacity = 0},/turf/simulated/floor/plasteel{tag = "icon-whiteblue (NORTHEAST)"; icon_state = "whiteblue"; dir = 5},/area/medical/reception) "bIk" = (/obj/structure/sign/securearea,/turf/simulated/wall,/area/medical/research{name = "Research Division"}) "bIl" = (/obj/structure/chair/office/light{dir = 1},/obj/effect/landmark/start{name = "Roboticist"},/turf/simulated/floor/plasteel{dir = 1; icon_state = "whitered"},/area/assembly/robotics) -"bIm" = (/obj/machinery/camera{c_tag = "Research Robotics Lab"; dir = 2; network = list("Research","SS13")},/turf/simulated/floor/plasteel{dir = 4; icon_state = "whiteredcorner"},/area/assembly/robotics) +"bIm" = (/obj/machinery/camera{c_tag = "Research Robotics Lab"; dir = 2; network = list("Research","SS13")},/obj/structure/reagent_dispensers/oil,/turf/simulated/floor/plasteel{dir = 4; icon_state = "whiteredcorner"},/area/assembly/robotics) "bIn" = (/obj/structure/filingcabinet/chestdrawer,/turf/simulated/floor/plasteel{dir = 1; icon_state = "whitered"},/area/assembly/robotics) "bIo" = (/obj/machinery/computer/guestpass{pixel_y = 30},/obj/machinery/photocopier,/turf/simulated/floor/plasteel{icon_state = "white"},/area/toxins/lab) "bIp" = (/turf/simulated/floor/plasteel{icon_state = "white"},/area/toxins/lab) @@ -4616,7 +4616,7 @@ "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/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) +"bKQ" = (/obj/structure/disposalpipe/segment{dir = 4; icon_state = "pipe-c"},/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel,/area/quartermaster/storage) "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/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) +"bMl" = (/obj/machinery/door/poddoor/shutters{dir = 2; id_tag = "qm_warehouse"; name = "Warehouse Shutters"},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/effect/decal/warning_stripes/yellow,/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel,/area/quartermaster/storage) "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) @@ -4816,7 +4816,7 @@ "bOF" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/obj/machinery/door/firedoor,/obj/machinery/door/airlock/engineering/glass{name = "Engineering"; req_access_txt = "10"; req_one_access_txt = "0"},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/engine/gravitygenerator) "bOG" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/space,/area/space) "bOH" = (/obj/effect/spawner/window/reinforced,/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/obj/structure/cable{icon_state = "0-4"; d2 = 4},/turf/simulated/floor/plating,/area/engine/gravitygenerator) -"bOI" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/structure/rack,/obj/item/tank/emergency_oxygen/double,/obj/item/tank/jetpack/oxygen/captain,/obj/item/clothing/suit/space/captain,/obj/item/clothing/mask/gas,/obj/item/radio/intercom/private{pixel_x = -28},/obj/item/crowbar/red,/obj/item/clothing/head/helmet/space/capspace,/turf/simulated/floor/wood,/area/crew_quarters/captain) +"bOI" = (/turf/simulated/floor/carpet,/area/crew_quarters/captain/bedroom) "bOJ" = (/obj/structure/table/wood,/obj/item/flashlight/lamp/green,/turf/simulated/floor/carpet,/area/crew_quarters/captain/bedroom) "bOK" = (/turf/simulated/wall,/area/crew_quarters/captain/bedroom) "bOL" = (/obj/structure/toilet{dir = 4},/turf/simulated/floor/plasteel{icon_state = "freezerfloor"},/area/crew_quarters/captain/bedroom) @@ -5114,7 +5114,7 @@ "bUr" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; tag = ""},/obj/structure/disposalpipe/sortjunction{dir = 8; icon_state = "pipe-j1s"; name = "Medbay Hall"; sortType = 9},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/medbay2) "bUs" = (/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/sortjunction{dir = 8; icon_state = "pipe-j1s"; name = "Med Chemistry"; sortType = 11},/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/medbay2) "bUt" = (/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"; tag = ""},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/structure/disposalpipe/segment,/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/research{name = "Research Division"}) -"bUu" = (/obj/structure/table/glass,/obj/item/bonegel{pixel_x = 6; pixel_y = 6},/obj/item/cautery,/obj/item/FixOVein{pixel_x = -6; pixel_y = 6},/obj/machinery/status_display{layer = 4; pixel_x = 0; pixel_y = 32},/obj/machinery/light{dir = 1; in_use = 1},/turf/simulated/floor/plasteel{dir = 2; icon_state = "whiteblue"; tag = "icon-whitehall (WEST)"},/area/medical/surgery1) +"bUu" = (/obj/item/bonegel{pixel_x = 6; pixel_y = 6},/obj/item/cautery,/obj/item/FixOVein{pixel_x = -6; pixel_y = 6},/obj/machinery/status_display{layer = 4; pixel_x = 0; pixel_y = 32},/obj/machinery/light{dir = 1; in_use = 1},/obj/structure/table/tray,/obj/item/scalpel,/turf/simulated/floor/plasteel{dir = 2; icon_state = "whiteblue"; tag = "icon-whitehall (WEST)"},/area/medical/surgery1) "bUv" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; tag = ""},/obj/structure/disposalpipe/junction{dir = 8; icon_state = "pipe-j1"; tag = "icon-pipe-j1 (EAST)"},/turf/simulated/floor/plasteel{icon_state = "freezerfloor"},/area/medical/genetics_cloning) "bUw" = (/obj/machinery/door/firedoor,/obj/machinery/door/airlock/medical/glass{id_tag = "CloningDoor"; name = "Genetics Cloning"; req_access_txt = "0"; req_one_access_txt = "5;9"},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; tag = ""},/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor/plasteel{icon_state = "freezerfloor"},/area/medical/genetics_cloning) "bUx" = (/obj/structure/reagent_dispensers/watertank,/turf/simulated/floor/plating,/area/maintenance/genetics) @@ -5560,9 +5560,9 @@ "ccV" = (/obj/structure/cable{d2 = 4; icon_state = "0-4"},/obj/machinery/atmospherics/pipe/simple/heat_exchanging{dir = 4},/obj/machinery/power/apc{dir = 1; name = "north bump"; pixel_x = 0; pixel_y = 24},/turf/simulated/floor/bluegrid{icon_state = "dark"; name = "Server Walkway"; nitrogen = 250; oxygen = 0; temperature = 0},/area/toxins/server_coldroom) "ccW" = (/obj/machinery/camera{c_tag = "Research Server Room"; dir = 2; network = list("Research","SS13"); pixel_x = 22},/obj/structure/cable{d2 = 8; icon_state = "0-8"},/obj/machinery/atmospherics/unary/portables_connector,/obj/machinery/portable_atmospherics/canister/nitrogen,/obj/machinery/power/apc{dir = 1; name = "north bump"; pixel_x = 0; pixel_y = 24},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/toxins/server) "ccX" = (/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"; tag = ""},/obj/machinery/atmospherics/pipe/simple/hidden{dir = 10; initialize_directions = 10},/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/machinery/atmospherics/unary/vent_pump{dir = 1; on = 1},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/toxins/server) -"ccY" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/computer/area_atmos,/obj/effect/decal/warning_stripes/yellow/hollow,/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/toxins/storage) -"ccZ" = (/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/toxins/storage) -"cda" = (/obj/machinery/portable_atmospherics/scrubber/huge,/obj/structure/sign/nosmoking_2{pixel_x = 28},/obj/effect/decal/warning_stripes/yellow/hollow,/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/toxins/storage) +"ccY" = (/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"},/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel,/area/quartermaster/office) +"ccZ" = (/obj/machinery/door/firedoor,/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/obj/machinery/conveyor/east{id = "packageExternal"},/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel,/area/quartermaster/office) +"cda" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel,/area/quartermaster/storage) "cdb" = (/obj/machinery/atmospherics/unary/cold_sink/freezer{current_temperature = 73; dir = 2; on = 1},/obj/item/radio/intercom{broadcasting = 0; name = "station intercom (General)"; pixel_y = 25},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/toxins/server) "cdc" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/firealarm{dir = 8; pixel_x = -24},/turf/simulated/floor/plasteel{dir = 5; icon_state = "whitehall"},/area/medical/research{name = "Research Division"}) "cdd" = (/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"; tag = ""},/turf/simulated/floor/plasteel{dir = 9; icon_state = "whitehall"},/area/medical/research{name = "Research Division"}) @@ -5644,8 +5644,8 @@ "ceB" = (/obj/machinery/atmospherics/pipe/simple/heat_exchanging{dir = 10},/turf/simulated/floor/bluegrid{icon_state = "dark"; name = "Server Walkway"; nitrogen = 250; oxygen = 0; temperature = 0},/area/toxins/server_coldroom) "ceC" = (/obj/structure/chair/office/light,/obj/machinery/atmospherics/pipe/manifold/hidden,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/toxins/server) "ceD" = (/obj/machinery/hologram/holopad,/obj/machinery/atmospherics/pipe/simple/hidden{dir = 5; icon_state = "intact"},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/toxins/server) -"ceE" = (/obj/machinery/light/small{dir = 8},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/toxins/storage) -"ceF" = (/obj/machinery/portable_atmospherics/canister/oxygen,/obj/effect/decal/warning_stripes/yellow,/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/toxins/storage) +"ceE" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel,/area/quartermaster/storage) +"ceF" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/computer/area_atmos,/obj/effect/decal/warning_stripes/yellow/hollow,/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel,/area/toxins/storage) "ceG" = (/obj/machinery/firealarm{dir = 4; pixel_x = 24},/obj/machinery/light/small{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden{dir = 9; icon_state = "intact"},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/toxins/server) "ceH" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/alarm{dir = 4; icon_state = "alarm0"; pixel_x = -22},/turf/simulated/floor/plasteel{dir = 5; icon_state = "whitehall"},/area/medical/research{name = "Research Division"}) "ceI" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/obj/structure/disposalpipe/segment{dir = 4},/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"; tag = ""},/turf/simulated/floor/plasteel{dir = 9; icon_state = "whitehall"},/area/medical/research{name = "Research Division"}) @@ -5694,17 +5694,17 @@ "cfz" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/door/airlock/public/glass{name = "Central Access"},/turf/simulated/floor/plasteel,/area/hallway/primary/central/se) "cfA" = (/obj/structure/closet/secure_closet/medical3,/obj/machinery/door_control{id = "surgeryobs1"; name = "Privacy Shutters Control"; pixel_x = 0; pixel_y = 25},/turf/simulated/floor/plasteel{tag = "icon-whitebluecorner (WEST)"; icon_state = "whitebluecorner"; dir = 8},/area/medical/surgery1) "cfB" = (/obj/structure/extinguisher_cabinet{pixel_x = 5; pixel_y = -32},/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/door/firedoor,/turf/simulated/floor/plasteel,/area/hallway/primary/central/se) -"cfC" = (/obj/structure/table/glass,/obj/item/hemostat{pixel_x = 6},/obj/item/retractor{pixel_x = -6; pixel_y = 6},/obj/item/scalpel,/obj/item/stack/medical/bruise_pack/advanced,/obj/machinery/firealarm{dir = 2; pixel_y = 24},/turf/simulated/floor/plasteel{dir = 2; icon_state = "whiteblue"; tag = "icon-whitehall (WEST)"},/area/medical/surgery1) +"cfC" = (/obj/structure/table/glass,/obj/item/hemostat{pixel_x = 6},/obj/item/retractor{pixel_x = -6; pixel_y = 6},/obj/item/stack/medical/bruise_pack/advanced,/obj/machinery/firealarm{dir = 2; pixel_y = 24},/turf/simulated/floor/plasteel{dir = 2; icon_state = "whiteblue"; tag = "icon-whitehall (WEST)"},/area/medical/surgery1) "cfD" = (/obj/structure/chair{dir = 8},/obj/machinery/camera{c_tag = "Medbay Surgery Observation"; network = list("SS13")},/turf/simulated/floor/plasteel{dir = 8; icon_state = "darkblue"},/area/medical/ward) "cfE" = (/obj/effect/spawner/window/reinforced,/obj/machinery/door/poddoor/shutters{density = 0; dir = 8; icon_state = "open"; id_tag = "surgeryobs1"; name = "Privacy Shutters"; opacity = 0},/turf/simulated/floor/plating,/area/medical/surgery1) "cfF" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/disposalpipe/segment,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/medical/ward) "cfG" = (/turf/simulated/floor/plasteel{icon_state = "dark"},/area/medical/ward) "cfH" = (/obj/effect/spawner/window/reinforced,/obj/machinery/door/poddoor/shutters{density = 0; dir = 4; icon_state = "open"; id_tag = "surgeryobs2"; name = "Privacy Shutters"; opacity = 0},/turf/simulated/floor/plating,/area/medical/surgery2) "cfI" = (/obj/structure/chair{dir = 4},/turf/simulated/floor/plasteel{dir = 4; icon_state = "darkblue"},/area/medical/ward) -"cfJ" = (/obj/structure/table/glass,/obj/item/hemostat{pixel_x = 6},/obj/item/retractor{pixel_x = -6; pixel_y = 6},/obj/item/scalpel,/obj/machinery/alarm{pixel_y = 25},/obj/item/stack/medical/bruise_pack/advanced,/turf/simulated/floor/plasteel{tag = "icon-whiteblue"; icon_state = "whiteblue"},/area/medical/surgery2) +"cfJ" = (/obj/structure/table/glass,/obj/item/hemostat{pixel_x = 6},/obj/item/retractor{pixel_x = -6; pixel_y = 6},/obj/machinery/alarm{pixel_y = 25},/obj/item/stack/medical/bruise_pack/advanced,/turf/simulated/floor/plasteel{tag = "icon-whiteblue"; icon_state = "whiteblue"},/area/medical/surgery2) "cfK" = (/obj/structure/closet/secure_closet/medical3,/obj/machinery/door_control{id = "surgeryobs2"; name = "Privacy Shutters Control"; pixel_x = 0; pixel_y = 25},/turf/simulated/floor/plasteel{dir = 2; icon_state = "whitebluecorner"; tag = "icon-whitebluecorner"},/area/medical/surgery2) "cfL" = (/obj/structure/table/glass,/obj/item/circular_saw,/obj/item/bonesetter{pixel_x = 5; pixel_y = 5},/obj/item/surgicaldrill,/turf/simulated/floor/plasteel{tag = "icon-whiteblue"; icon_state = "whiteblue"},/area/medical/surgery2) -"cfM" = (/obj/structure/table/glass,/obj/item/bonegel{pixel_x = 6; pixel_y = 6},/obj/item/cautery,/obj/item/FixOVein{pixel_x = -6; pixel_y = 6},/obj/machinery/light{dir = 1; in_use = 1},/obj/machinery/status_display{layer = 4; pixel_x = 0; pixel_y = 32},/turf/simulated/floor/plasteel{tag = "icon-whiteblue"; icon_state = "whiteblue"},/area/medical/surgery2) +"cfM" = (/obj/item/bonegel{pixel_x = 6; pixel_y = 6},/obj/item/cautery,/obj/item/FixOVein{pixel_x = -6; pixel_y = 6},/obj/machinery/light{dir = 1; in_use = 1},/obj/machinery/status_display{layer = 4; pixel_x = 0; pixel_y = 32},/obj/structure/table/tray,/obj/item/scalpel,/turf/simulated/floor/plasteel{tag = "icon-whiteblue"; icon_state = "whiteblue"},/area/medical/surgery2) "cfN" = (/obj/structure/table,/obj/item/storage/box/gloves{pixel_x = 3; pixel_y = 3},/obj/item/storage/box/masks,/obj/item/reagent_containers/spray/cleaner{desc = "Someone has crossed out the Space from Space Cleaner and written in Surgery. 'Do not remove under punishment of death!!!' is scrawled on the back."; name = "Surgery Cleaner"},/obj/structure/disposalpipe/segment{dir = 4; icon_state = "pipe-c"},/turf/simulated/floor/plasteel{icon_state = "showroomfloor"},/area/medical/surgery2) "cfO" = (/obj/machinery/door/firedoor,/obj/machinery/door/airlock/medical{name = "Operating Theatre Storage"; req_access_txt = "45"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor/plasteel{icon_state = "showroomfloor"},/area/medical/surgery2) "cfP" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 6},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 6},/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor/plasteel{icon_state = "showroomfloor"},/area/medical/surgery2) @@ -5814,8 +5814,8 @@ "chP" = (/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers,/turf/simulated/wall/r_wall,/area/toxins/server) "chQ" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4; level = 1},/turf/simulated/wall/r_wall,/area/toxins/server_coldroom) "chR" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 10; initialize_directions = 10; level = 1},/turf/simulated/wall/r_wall,/area/toxins/server) -"chS" = (/mob/living/simple_animal/mouse/white,/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/toxins/storage) -"chT" = (/obj/machinery/portable_atmospherics/canister/sleeping_agent,/obj/effect/decal/warning_stripes/yellow,/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/toxins/storage) +"chS" = (/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel,/area/toxins/storage) +"chT" = (/obj/machinery/portable_atmospherics/scrubber/huge,/obj/structure/sign/nosmoking_2{pixel_x = 28},/obj/effect/decal/warning_stripes/yellow/hollow,/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel,/area/toxins/storage) "chU" = (/obj/machinery/firealarm{dir = 8; pixel_x = -24},/obj/machinery/camera{c_tag = "Research Toxins Storage Room"; dir = 4; network = list("Research","SS13"); pixel_y = -22},/turf/simulated/floor/plasteel,/area/toxins/storage) "chV" = (/obj/machinery/door/firedoor,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/structure/sign/poster/official/random{pixel_x = -32},/turf/simulated/floor/plasteel{dir = 5; icon_state = "whitehall"},/area/medical/research{name = "Research Division"}) "chW" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{level = 1},/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor/plasteel,/area/engine/break_room) @@ -5838,7 +5838,7 @@ "cin" = (/obj/structure/chair{dir = 1},/turf/simulated/shuttle/floor,/area/shuttle/mining) "cio" = (/obj/machinery/door/window/brigdoor/westleft{color = "#d70000"; req_access_txt = "104"},/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/shuttle/administration) "cip" = (/obj/effect/decal/warning_stripes/northwest,/turf/simulated/floor/plasteel,/area/quartermaster/miningdock) -"ciq" = (/obj/machinery/light/small{dir = 4; pixel_y = 8},/obj/item/ore/iron,/obj/effect/decal/warning_stripes/north,/turf/simulated/floor/plasteel,/area/quartermaster/miningdock) +"ciq" = (/obj/machinery/light/small{dir = 4; pixel_y = 8},/obj/item/stack/ore/iron,/obj/effect/decal/warning_stripes/north,/turf/simulated/floor/plasteel,/area/quartermaster/miningdock) "cir" = (/obj/effect/landmark/start{name = "Shaft Miner"},/turf/simulated/floor/plasteel,/area/quartermaster/miningdock) "cis" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/plasteel,/area/quartermaster/miningdock) "cit" = (/obj/machinery/light{dir = 8},/turf/simulated/floor/plasteel{dir = 8; icon_state = "brown"},/area/quartermaster/miningdock) @@ -5896,7 +5896,7 @@ "cjt" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 9; pixel_y = 0},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 9},/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"; tag = ""},/turf/simulated/floor/plating,/area/maintenance/asmaint) "cju" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 4; on = 1},/obj/effect/landmark/start{name = "Medical Doctor"},/turf/simulated/floor/plasteel{dir = 2; icon_state = "darkblue"},/area/medical/surgery1) "cjv" = (/obj/structure/closet/wardrobe/medic_white,/obj/item/clothing/head/surgery/blue,/obj/item/clothing/head/surgery/blue,/obj/item/clothing/head/surgery/green,/obj/item/clothing/head/surgery/green,/obj/item/clothing/head/surgery/purple,/obj/item/clothing/head/surgery/purple,/obj/item/clothing/suit/storage/fr_jacket,/obj/item/clothing/suit/storage/fr_jacket,/obj/item/clothing/suit/storage/fr_jacket,/obj/item/clothing/under/rank/medical/blue,/obj/item/clothing/under/rank/medical/green,/obj/item/clothing/under/rank/medical/purple,/turf/simulated/floor/plasteel{dir = 2; icon_state = "cafeteria"; tag = "icon-cafeteria (NORTHEAST)"},/area/medical/medbreak) -"cjw" = (/obj/machinery/light_switch{pixel_x = -23; pixel_y = -5},/obj/machinery/holosign_switch{pixel_x = -23; pixel_y = 4},/turf/simulated/floor/plasteel{dir = 10; icon_state = "darkblue"},/area/medical/surgery1) +"cjw" = (/obj/machinery/light_switch{pixel_x = -23; pixel_y = -5},/obj/machinery/holosign_switch{id = "surgery1"; pixel_x = -23; pixel_y = 4},/turf/simulated/floor/plasteel{dir = 10; icon_state = "darkblue"},/area/medical/surgery1) "cjx" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 5; level = 1},/turf/simulated/floor/plasteel{tag = "icon-whiteblue (WEST)"; icon_state = "whiteblue"; dir = 8},/area/medical/surgery1) "cjy" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"},/turf/simulated/floor/plasteel{dir = 6; icon_state = "darkblue"},/area/medical/surgery1) "cjz" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/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/plasteel{icon_state = "dark"},/area/medical/ward) @@ -5912,9 +5912,9 @@ "cjJ" = (/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers,/turf/simulated/wall/r_wall,/area/toxins/explab_chamber) "cjK" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/wall/r_wall,/area/toxins/storage) "cjL" = (/obj/machinery/atmospherics/unary/vent_scrubber{dir = 4; on = 1},/turf/simulated/floor/engine,/area/toxins/explab_chamber) -"cjM" = (/obj/effect/landmark{name = "xeno_spawn"; pixel_x = -1},/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/toxins/storage) -"cjN" = (/obj/machinery/portable_atmospherics/canister/carbon_dioxide,/obj/effect/decal/warning_stripes/yellow,/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/toxins/storage) -"cjO" = (/obj/machinery/portable_atmospherics/canister/carbon_dioxide,/obj/effect/decal/warning_stripes/yellow,/obj/effect/decal/warning_stripes/yellow,/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/toxins/storage) +"cjM" = (/obj/machinery/light/small{dir = 8},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel,/area/toxins/storage) +"cjN" = (/obj/machinery/portable_atmospherics/canister/oxygen,/obj/effect/decal/warning_stripes/yellow,/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel,/area/toxins/storage) +"cjO" = (/obj/effect/decal/cleanable/dirt,/mob/living/simple_animal/mouse/white,/turf/simulated/floor/plasteel,/area/toxins/storage) "cjP" = (/obj/machinery/alarm{dir = 4; icon_state = "alarm0"; pixel_x = -22},/obj/machinery/light/small{dir = 8},/obj/machinery/hologram/holopad,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 10},/turf/simulated/floor/plasteel,/area/toxins/storage) "cjQ" = (/obj/structure/cable{icon_state = "0-4"; d2 = 4},/obj/machinery/light{dir = 8},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/power/apc{dir = 8; name = "west bump"; pixel_x = -24; shock_proof = 0},/turf/simulated/floor/plasteel{dir = 5; icon_state = "whitehall"},/area/medical/research{name = "Research Division"}) "cjR" = (/obj/machinery/hologram/holopad,/turf/simulated/floor/plasteel,/area/engine/break_room) @@ -5994,8 +5994,8 @@ "cln" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/turf/simulated/floor/engine,/area/toxins/explab_chamber) "clo" = (/obj/effect/landmark{name = "blobstart"},/obj/effect/landmark{name = "xeno_spawn"; pixel_x = -1},/turf/simulated/floor/engine,/area/toxins/explab_chamber) "clp" = (/turf/simulated/wall/r_wall,/area/toxins/explab_chamber) -"clq" = (/obj/item/cigbutt,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/toxins/storage) -"clr" = (/obj/effect/decal/warning_stripes/yellow,/obj/machinery/portable_atmospherics/canister/toxins,/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/toxins/storage) +"clq" = (/obj/machinery/portable_atmospherics/canister/sleeping_agent,/obj/effect/decal/warning_stripes/yellow,/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel,/area/toxins/storage) +"clr" = (/obj/effect/landmark{name = "xeno_spawn"; pixel_x = -1},/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel,/area/toxins/storage) "cls" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/structure/disposalpipe/segment,/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/research{name = "Research Division"}) "clt" = (/obj/machinery/alarm{dir = 8; icon_state = "alarm0"; pixel_x = 24},/turf/simulated/floor/engine,/area/toxins/explab_chamber) "clu" = (/obj/machinery/atmospherics/binary/valve,/turf/simulated/floor/plasteel{icon_state = "white"},/area/toxins/mixing) @@ -6013,7 +6013,7 @@ "clG" = (/obj/structure/table,/obj/item/storage/lockbox/mindshield,/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/shuttle/administration) "clH" = (/obj/machinery/camera{c_tag = "Research Toxins Test Chamber North"; network = list("Toxins","Research","SS13")},/obj/machinery/light{dir = 1},/turf/simulated/floor/plasteel/airless,/area/toxins/test_area) "clI" = (/obj/structure/table,/obj/item/storage/box/chemimp{pixel_x = 4; pixel_y = 3},/obj/item/storage/box/trackimp,/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/shuttle/administration) -"clJ" = (/obj/item/ore/silver,/obj/item/ore/silver,/obj/structure/closet/crate,/obj/effect/decal/warning_stripes/southwest,/turf/simulated/floor/plasteel,/area/quartermaster/miningdock) +"clJ" = (/obj/item/stack/ore/silver,/obj/item/stack/ore/silver,/obj/structure/closet/crate,/obj/effect/decal/warning_stripes/southwest,/turf/simulated/floor/plasteel,/area/quartermaster/miningdock) "clK" = (/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/wall,/area/quartermaster/miningdock) "clL" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 5},/turf/simulated/floor/plasteel,/area/quartermaster/miningdock) "clM" = (/obj/machinery/camera{c_tag = "Mining Dock External"; dir = 8},/obj/structure/closet/emcloset,/obj/effect/decal/warning_stripes/south,/turf/simulated/floor/plasteel,/area/quartermaster/miningdock) @@ -6071,13 +6071,13 @@ "cmM" = (/obj/machinery/light_switch{pixel_y = -23},/turf/simulated/floor/engine,/area/toxins/explab_chamber) "cmN" = (/obj/structure/closet/crate/freezer,/obj/item/reagent_containers/blood/AMinus,/obj/item/reagent_containers/blood/APlus,/obj/item/reagent_containers/blood/BMinus,/obj/item/reagent_containers/blood/BPlus,/obj/item/reagent_containers/blood/OPlus,/obj/item/reagent_containers/blood/OMinus,/turf/simulated/floor/plasteel{icon_state = "showroomfloor"},/area/medical/surgery1) "cmO" = (/obj/machinery/atmospherics/unary/vent_pump{on = 1},/turf/simulated/floor/engine,/area/toxins/explab_chamber) -"cmP" = (/obj/effect/decal/cleanable/blood/oil,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/toxins/storage) +"cmP" = (/obj/machinery/portable_atmospherics/canister/carbon_dioxide,/obj/effect/decal/warning_stripes/yellow,/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel,/area/toxins/storage) "cmQ" = (/obj/machinery/firealarm{dir = 1; pixel_y = -24},/turf/simulated/floor/engine,/area/toxins/explab_chamber) "cmR" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/structure/chair/comfy/black{dir = 8},/obj/machinery/atmospherics/pipe/simple/hidden/supply{level = 1},/turf/simulated/floor/plasteel,/area/engine/break_room) -"cmS" = (/obj/effect/decal/warning_stripes/southwestcorner,/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/toxins/mixing) +"cmS" = (/obj/machinery/portable_atmospherics/canister/carbon_dioxide,/obj/effect/decal/warning_stripes/yellow,/obj/effect/decal/warning_stripes/yellow,/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel,/area/toxins/storage) "cmT" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/structure/extinguisher_cabinet{pixel_x = -24},/turf/simulated/floor/plasteel{dir = 5; icon_state = "whitehall"},/area/medical/research{name = "Research Division"}) -"cmU" = (/obj/machinery/light/small{dir = 4},/obj/effect/decal/warning_stripes/southeastcorner,/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/toxins/mixing) -"cmV" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/toxins/mixing) +"cmU" = (/obj/item/cigbutt,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel,/area/toxins/storage) +"cmV" = (/obj/effect/decal/warning_stripes/yellow,/obj/machinery/portable_atmospherics/canister/toxins,/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel,/area/toxins/storage) "cmW" = (/obj/structure/closet/wardrobe/toxins_white,/obj/item/radio/intercom{dir = 1; name = "station intercom (General)"; pixel_y = 25},/turf/simulated/floor/plasteel{dir = 9; icon_state = "whitepurple"},/area/toxins/mixing) "cmX" = (/obj/structure/rack,/obj/item/extinguisher,/obj/item/clothing/mask/gas,/obj/machinery/light{dir = 1; in_use = 1},/turf/simulated/floor/plasteel{dir = 1; icon_state = "whitepurple"},/area/toxins/mixing) "cmY" = (/obj/structure/closet/wardrobe/toxins_white,/obj/machinery/camera{c_tag = "Research Toxins Mixing West"; dir = 2; network = list("Research","SS13"); pixel_x = 0},/turf/simulated/floor/plasteel{dir = 1; icon_state = "whitepurple"},/area/toxins/mixing) @@ -6141,14 +6141,14 @@ "coe" = (/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/floor/plasteel{dir = 8; icon_state = "whitegreencorner"},/area/medical/virology/lab{name = "\improper Virology Lobby"}) "cof" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/structure/sign/nosmoking_2{pixel_y = -32},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4; level = 1},/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers,/turf/simulated/floor/plasteel{dir = 2; icon_state = "whitegreen"; tag = "icon-whitehall (WEST)"},/area/medical/virology/lab{name = "\improper Virology Lobby"}) "cog" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/wall/r_wall,/area/toxins/explab) -"coh" = (/obj/machinery/light/small{dir = 8},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/toxins/storage) +"coh" = (/obj/effect/decal/cleanable/blood/oil,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel,/area/toxins/storage) "coi" = (/obj/effect/spawner/window/reinforced,/obj/machinery/door/poddoor{density = 0; icon_state = "open"; id_tag = "telescienceblast"; name = "test chamber blast doors"; opacity = 0},/obj/machinery/door/firedoor,/turf/simulated/floor/engine,/area/toxins/explab) -"coj" = (/obj/machinery/atmospherics/unary/vent_scrubber{on = 1; scrub_N2O = 1; scrub_Toxins = 1},/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/toxins/storage) +"coj" = (/obj/effect/decal/warning_stripes/southwestcorner,/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel,/area/toxins/mixing) "cok" = (/obj/item/radio/intercom{dir = 8; name = "station intercom (General)"; pixel_x = -28},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/plasteel{dir = 5; icon_state = "whitehall"},/area/medical/research{name = "Research Division"}) -"col" = (/obj/effect/decal/warning_stripes/west,/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/toxins/mixing) -"com" = (/obj/machinery/door/firedoor,/obj/machinery/door/poddoor{density = 0; icon_state = "open"; id_tag = "Biohazard"; name = "Biohazard Shutter"; opacity = 0},/obj/machinery/door/airlock/research{name = "Research Division Access"; req_access_txt = "47"},/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/toxins/mixing) -"con" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/obj/effect/decal/warning_stripes/east,/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/toxins/mixing) -"coo" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 6},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"; tag = ""},/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/toxins/mixing) +"col" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel,/area/toxins/mixing) +"com" = (/obj/machinery/light/small{dir = 4},/obj/effect/decal/warning_stripes/southeastcorner,/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel,/area/toxins/mixing) +"con" = (/obj/machinery/light/small{dir = 8},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel,/area/toxins/storage) +"coo" = (/obj/machinery/atmospherics/unary/vent_scrubber{on = 1; scrub_N2O = 1; scrub_Toxins = 1},/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel,/area/toxins/storage) "cop" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"; tag = ""},/turf/simulated/floor/plasteel{dir = 8; icon_state = "whitepurple"},/area/toxins/mixing) "coq" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor/plasteel{icon_state = "white"},/area/toxins/mixing) "cor" = (/obj/machinery/door/firedoor,/obj/machinery/door/poddoor{density = 0; icon_state = "open"; id_tag = "Biohazard"; name = "Biohazard Shutter"; opacity = 0},/obj/machinery/door/airlock/research{name = "Toxins Mixing Room"; req_access_txt = "7"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/turf/simulated/floor/plasteel,/area/toxins/mixing) @@ -6237,16 +6237,16 @@ "cpW" = (/obj/machinery/computer/rdconsole/experiment,/turf/simulated/floor/plasteel{tag = "icon-whitepurple (NORTH)"; icon_state = "whitepurple"; dir = 1},/area/toxins/explab) "cpX" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/structure/closet/l3closet/scientist,/turf/simulated/floor/plasteel{tag = "icon-whitepurple (NORTHWEST)"; icon_state = "whitepurple"; dir = 9},/area/toxins/explab) "cpY" = (/obj/structure/closet/emcloset,/obj/machinery/status_display{layer = 4; pixel_x = 0; pixel_y = 32},/turf/simulated/floor/plasteel{tag = "icon-whitepurple (NORTHEAST)"; icon_state = "whitepurple"; dir = 5},/area/toxins/explab) -"cpZ" = (/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"; tag = ""},/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 4; initialize_directions = 11; level = 1},/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/toxins/storage) -"cqa" = (/obj/machinery/light_switch{pixel_y = -23},/obj/structure/cable{icon_state = "0-4"; d2 = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 5},/obj/machinery/power/apc{dir = 8; name = "west bump"; pixel_x = -24; shock_proof = 0},/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/toxins/storage) +"cpZ" = (/obj/machinery/door/firedoor,/obj/machinery/door/poddoor{density = 0; icon_state = "open"; id_tag = "Biohazard"; name = "Biohazard Shutter"; opacity = 0},/obj/machinery/door/airlock/research{name = "Research Division Access"; req_access_txt = "47"},/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel,/area/toxins/mixing) +"cqa" = (/obj/effect/decal/warning_stripes/west,/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel,/area/toxins/mixing) "cqb" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/research{name = "Research Division"}) "cqc" = (/obj/machinery/firealarm{dir = 8; pixel_x = -24},/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 8; initialize_directions = 11; level = 1},/turf/simulated/floor/plasteel{dir = 5; icon_state = "whitehall"},/area/medical/research{name = "Research Division"}) "cqd" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/wall/r_wall,/area/medical/research{name = "Research Division"}) -"cqe" = (/obj/effect/decal/warning_stripes/northwestcorner,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/toxins/mixing) +"cqe" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 6},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"; tag = ""},/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel,/area/toxins/mixing) "cqf" = (/obj/structure/sign/fire{pixel_x = 32; pixel_y = 0},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor/plasteel{dir = 9; icon_state = "whitehall"},/area/medical/research{name = "Research Division"}) -"cqg" = (/obj/machinery/light/small{dir = 4},/obj/effect/decal/warning_stripes/northeastcorner,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/toxins/mixing) +"cqg" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/obj/effect/decal/warning_stripes/east,/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel,/area/toxins/mixing) "cqh" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/wall/r_wall,/area/toxins/mixing) -"cqi" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/toxins/mixing) +"cqi" = (/obj/machinery/light_switch{pixel_y = -23},/obj/structure/cable{icon_state = "0-4"; d2 = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 5},/obj/machinery/power/apc{dir = 8; name = "west bump"; pixel_x = -24; shock_proof = 0},/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel,/area/toxins/storage) "cqj" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 10},/turf/simulated/floor/plasteel{icon_state = "white"},/area/toxins/mixing) "cqk" = (/turf/simulated/floor/plasteel{icon_state = "white"},/area/toxins/mixing) "cql" = (/obj/structure/closet/bombcloset,/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/light_switch{pixel_x = -23; pixel_y = 0},/turf/simulated/floor/plasteel{dir = 8; icon_state = "whitepurple"},/area/toxins/mixing) @@ -6587,8 +6587,8 @@ "cwI" = (/turf/simulated/floor/plating,/area/maintenance/consarea) "cwJ" = (/obj/machinery/door/poddoor{density = 0; icon_state = "open"; id_tag = "Biohazard"; name = "Biohazard Shutter"; opacity = 0},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 5},/obj/structure/disposalpipe/segment,/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/research{name = "Research Division"}) "cwK" = (/obj/machinery/meter,/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/obj/machinery/atmospherics/pipe/manifold/visible{dir = 8},/turf/simulated/floor/plating,/area/maintenance/asmaint2) -"cwL" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/assembly/assembly_line) -"cwM" = (/obj/item/camera_assembly,/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/assembly/assembly_line) +"cwL" = (/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"; tag = ""},/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 4; initialize_directions = 11; level = 1},/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel,/area/toxins/storage) +"cwM" = (/obj/effect/decal/warning_stripes/northwestcorner,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel,/area/toxins/mixing) "cwN" = (/obj/structure/table,/obj/item/apc_electronics,/obj/item/airlock_electronics,/turf/simulated/floor/plating,/area/storage/tech) "cwO" = (/turf/simulated/floor/plating,/area/storage/tech) "cwP" = (/obj/structure/cable{icon_state = "0-2"; pixel_y = 1; d2 = 2},/obj/structure/cable{icon_state = "0-4"; d2 = 4},/obj/effect/spawner/window/reinforced,/turf/simulated/floor/plating,/area/storage/tech) @@ -6602,7 +6602,7 @@ "cwX" = (/obj/machinery/atmospherics/unary/vent_scrubber{dir = 4; on = 1},/turf/simulated/floor/plating,/area/storage/tech) "cwY" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"; tag = ""},/turf/simulated/floor/plasteel,/area/hallway/primary/aft) "cwZ" = (/obj/structure/disposalpipe/segment,/obj/structure/extinguisher_cabinet{pixel_x = -27; pixel_y = 1},/obj/machinery/light{dir = 8},/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 4; initialize_directions = 11; level = 1},/turf/simulated/floor/plasteel{dir = 8; icon_state = "cautioncorner"},/area/hallway/primary/aft) -"cxa" = (/obj/effect/decal/warning_stripes/yellow/partial,/obj/effect/decal/warning_stripes/arrow,/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/assembly/assembly_line) +"cxa" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel,/area/toxins/mixing) "cxb" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/turf/simulated/floor/plasteel{dir = 2; icon_state = "yellowcorner"},/area/hallway/primary/aft) "cxc" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/turf/simulated/floor/plasteel,/area/engine/controlroom) "cxd" = (/obj/structure/chair{dir = 8},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/turf/simulated/floor/plasteel,/area/engine/controlroom) @@ -7189,7 +7189,7 @@ "cIm" = (/turf/simulated/floor/wood,/area/maintenance/asmaint) "cIn" = (/obj/machinery/vending/cigarette,/obj/machinery/light/small{dir = 1},/turf/simulated/floor/plating,/area/maintenance/asmaint) "cIo" = (/obj/structure/table/wood,/obj/item/ashtray/bronze{pixel_x = -1; pixel_y = 1},/turf/simulated/floor/plating,/area/maintenance/asmaint) -"cIp" = (/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/maintenance/asmaint) +"cIp" = (/obj/machinery/light/small{dir = 4},/obj/effect/decal/warning_stripes/northeastcorner,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel,/area/toxins/mixing) "cIq" = (/obj/structure/disposalpipe/segment,/turf/simulated/floor/plating,/area/maintenance/genetics) "cIr" = (/obj/structure/chair/stool,/turf/simulated/floor/plating,/area/maintenance/genetics) "cIs" = (/obj/structure/bed,/obj/effect/decal/cleanable/cobweb2,/turf/simulated/floor/plating,/area/maintenance/genetics) @@ -7249,7 +7249,7 @@ "cJu" = (/obj/effect/spawner/random_spawners/blood_maybe,/turf/simulated/floor/carpet,/area/maintenance/asmaint) "cJv" = (/turf/simulated/floor/wood{tag = "icon-wood-broken"; icon_state = "wood-broken"},/area/maintenance/asmaint) "cJw" = (/obj/structure/table,/obj/structure/window/reinforced{dir = 8},/obj/machinery/kitchen_machine/microwave{pixel_x = -3; pixel_y = 6},/turf/simulated/floor/plating,/area/maintenance/asmaint) -"cJx" = (/obj/effect/spawner/random_spawners/blood_maybe,/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/maintenance/asmaint) +"cJx" = (/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel,/area/assembly/assembly_line) "cJy" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{level = 1},/obj/effect/spawner/window/reinforced,/obj/machinery/door/poddoor{density = 0; icon_state = "open"; id_tag = "atmos"; name = "Atmos Blast Door"; opacity = 0},/turf/simulated/floor/plating,/area/atmos/control) "cJz" = (/obj/machinery/chem_heater,/turf/simulated/floor/plating,/area/maintenance/genetics) "cJA" = (/obj/structure/table,/obj/item/clothing/glasses/welding,/obj/item/clothing/glasses/welding,/obj/item/clothing/glasses/welding,/obj/item/clothing/ears/earmuffs{pixel_x = -5; pixel_y = 6},/obj/item/clothing/ears/earmuffs{pixel_x = -5; pixel_y = 6},/obj/item/clothing/ears/earmuffs{pixel_x = -5; pixel_y = 6},/obj/item/storage/belt/utility,/obj/item/storage/belt/utility,/obj/item/stock_parts/cell/high,/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plasteel,/area/engine/engineering) @@ -7287,7 +7287,7 @@ "cKg" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0; tag = ""},/obj/machinery/door/airlock/maintenance{req_access_txt = "12"},/turf/simulated/floor/plating,/area/maintenance/aft) "cKh" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 6},/turf/simulated/floor/plasteel,/area/hallway/primary/aft) "cKi" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/obj/machinery/door/firedoor,/obj/machinery/door/airlock/maintenance{icon_state = "door_locked"; locked = 1; name = "Assembly Line Maintenance"; req_access_txt = "32"},/turf/simulated/floor/plating,/area/assembly/assembly_line) -"cKj" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/assembly/assembly_line) +"cKj" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel,/area/assembly/assembly_line) "cKk" = (/obj/structure/disposalpipe/segment,/obj/machinery/light{dir = 8},/turf/simulated/floor/plasteel{dir = 1; icon_state = "yellowcorner"},/area/hallway/primary/aft) "cKl" = (/obj/structure/disposalpipe/segment{dir = 2; icon_state = "pipe-c"},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/obj/effect/landmark/start{name = "Civilian"},/turf/simulated/floor/plasteel,/area/hallway/primary/aft) "cKm" = (/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 8; initialize_directions = 11; level = 1},/obj/structure/disposalpipe/sortjunction{dir = 2; icon_state = "pipe-j2s"; name = "Eng Atmospherics"; sortType = 6},/turf/simulated/floor/plasteel,/area/hallway/primary/aft) @@ -7353,19 +7353,19 @@ "cLu" = (/obj/item/radio/intercom{name = "station intercom (General)"; pixel_y = -28},/obj/machinery/computer/rdconsole/mechanics,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/engine/mechanic_workshop) "cLv" = (/obj/effect/decal/warning_stripes/north,/turf/simulated/floor/plasteel{icon_state = "white"},/area/assembly/assembly_line) "cLw" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0; tag = ""},/turf/simulated/floor/plating,/area/maintenance/aft) -"cLx" = (/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{icon_state = "floorgrime"},/area/assembly/assembly_line) +"cLx" = (/obj/item/camera_assembly,/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel,/area/assembly/assembly_line) "cLy" = (/obj/structure/rack{dir = 8; layer = 2.9},/obj/effect/spawner/lootdrop/maintenance{lootcount = 2; name = "2maintenance loot spawner"},/turf/simulated/floor/plating,/area/maintenance/aft) -"cLz" = (/obj/machinery/alarm{pixel_y = 24},/obj/machinery/light{dir = 1},/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/assembly/assembly_line) +"cLz" = (/obj/effect/decal/warning_stripes/yellow/partial,/obj/effect/decal/warning_stripes/arrow,/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel,/area/assembly/assembly_line) "cLA" = (/obj/machinery/disposal,/obj/structure/disposalpipe/trunk{dir = 4},/turf/simulated/floor/plating,/area/assembly/assembly_line) -"cLB" = (/obj/machinery/firealarm{dir = 1; pixel_y = -24},/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{icon_state = "floorgrime"},/area/assembly/assembly_line) -"cLC" = (/obj/structure/table,/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/assembly/assembly_line) -"cLD" = (/obj/structure/computerframe,/obj/effect/decal/cleanable/cobweb2,/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/assembly/assembly_line) -"cLE" = (/obj/structure/table,/obj/item/clothing/glasses/welding,/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/assembly/assembly_line) +"cLB" = (/obj/machinery/alarm{pixel_y = 24},/obj/machinery/light{dir = 1},/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel,/area/assembly/assembly_line) +"cLC" = (/obj/structure/table,/obj/structure/disposalpipe/segment{dir = 8; icon_state = "pipe-c"},/obj/item/storage/belt/utility,/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel,/area/assembly/assembly_line) +"cLD" = (/obj/structure/table,/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel,/area/assembly/assembly_line) +"cLE" = (/obj/structure/computerframe,/obj/effect/decal/cleanable/cobweb2,/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel,/area/assembly/assembly_line) "cLF" = (/obj/structure/table,/turf/simulated/floor/plasteel,/area/assembly/assembly_line) -"cLG" = (/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/assembly/assembly_line) -"cLH" = (/obj/structure/closet/crate,/obj/machinery/light_switch{pixel_x = 27},/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/assembly/assembly_line) -"cLI" = (/obj/machinery/light,/obj/machinery/camera{c_tag = "Assembly Line East"; dir = 1; network = list("SS13")},/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/assembly/assembly_line) -"cLJ" = (/obj/structure/table,/obj/structure/disposalpipe/segment{dir = 8; icon_state = "pipe-c"},/obj/item/storage/belt/utility,/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/assembly/assembly_line) +"cLG" = (/obj/structure/table,/obj/item/clothing/glasses/welding,/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel,/area/assembly/assembly_line) +"cLH" = (/obj/structure/closet/crate,/obj/machinery/light_switch{pixel_x = 27},/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel,/area/assembly/assembly_line) +"cLI" = (/obj/item/stack/cable_coil,/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel,/area/assembly/assembly_line) +"cLJ" = (/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"; tag = ""},/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel,/area/assembly/assembly_line) "cLK" = (/obj/structure/disposalpipe/sortjunction{dir = 2; icon_state = "pipe-j2s"; name = "Eng Chief Engineer's Office"; sortType = 5},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 9},/turf/simulated/floor/plasteel,/area/hallway/primary/aft) "cLL" = (/obj/structure/disposalpipe/segment{dir = 1; icon_state = "pipe-c"},/turf/simulated/floor/plasteel{dir = 1; icon_state = "yellowcorner"},/area/hallway/primary/aft) "cLM" = (/obj/effect/spawner/window/reinforced,/turf/simulated/floor/plating,/area/engine/break_room) @@ -7401,18 +7401,18 @@ "cMq" = (/obj/machinery/door/airlock/maintenance{req_access_txt = "12"},/turf/simulated/floor/plating,/area/maintenance/aft) "cMr" = (/obj/structure/table,/obj/effect/spawner/lootdrop/maintenance,/turf/simulated/floor/plating,/area/maintenance/aft) "cMs" = (/obj/effect/decal/cleanable/fungus,/turf/simulated/wall/r_wall,/area/maintenance/asmaint2) -"cMt" = (/obj/item/stack/cable_coil,/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/assembly/assembly_line) +"cMt" = (/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/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/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) +"cMw" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/obj/item/paper,/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel,/area/assembly/assembly_line) +"cMx" = (/obj/structure/chair/stool,/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel,/area/assembly/assembly_line) +"cMy" = (/obj/effect/decal/cleanable/blood/oil,/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel,/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) -"cMA" = (/obj/structure/chair/stool,/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/assembly/assembly_line) -"cMB" = (/obj/effect/decal/cleanable/blood/oil,/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/assembly/assembly_line) -"cMC" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/obj/item/paper,/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/assembly/assembly_line) +"cMA" = (/obj/machinery/door/firedoor,/obj/machinery/door/airlock/engineering/glass{icon_state = "door_locked"; locked = 1; name = "Assembly Line (KEEP OUT)"; req_access_txt = "32"; req_one_access_txt = "0"},/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel,/area/assembly/assembly_line) +"cMB" = (/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) +"cMC" = (/obj/effect/landmark{name = "blobstart"},/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel,/area/assembly/assembly_line) "cMD" = (/obj/item/mounted/frame/apc_frame,/obj/structure/cable{d2 = 8; icon_state = "0-8"},/turf/simulated/floor/plating,/area/assembly/assembly_line) -"cME" = (/obj/machinery/door/firedoor,/obj/machinery/door/airlock/engineering/glass{icon_state = "door_locked"; locked = 1; name = "Assembly Line (KEEP OUT)"; req_access_txt = "32"; req_one_access_txt = "0"},/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/assembly/assembly_line) +"cME" = (/obj/machinery/hologram/holopad,/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel,/area/assembly/assembly_line) "cMF" = (/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 8; initialize_directions = 11; level = 1},/obj/structure/disposalpipe/segment,/turf/simulated/floor/plasteel,/area/hallway/primary/aft) "cMG" = (/turf/simulated/floor/plasteel{dir = 1; icon_state = "yellowcorner"},/area/hallway/primary/aft) "cMH" = (/obj/machinery/atmospherics/unary/vent_scrubber{dir = 8; on = 1; scrub_N2O = 1; scrub_Toxins = 1},/turf/simulated/floor/plasteel,/area/hallway/primary/aft) @@ -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/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) +"cNw" = (/obj/item/paper,/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel,/area/assembly/assembly_line) "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,12 +7464,12 @@ "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{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) +"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 = ""},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; 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) -"cNI" = (/obj/machinery/hologram/holopad,/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/assembly/assembly_line) -"cNJ" = (/obj/item/paper,/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/assembly/assembly_line) +"cNH" = (/obj/item/pen,/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel,/area/assembly/assembly_line) +"cNI" = (/obj/machinery/atmospherics/unary/vent_pump{on = 0},/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel,/area/assembly/assembly_line) +"cNJ" = (/obj/machinery/conveyor_switch{id = "Skynet_heavy"},/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel,/area/assembly/assembly_line) "cNK" = (/obj/structure/barricade/wooden,/obj/structure/grille,/turf/simulated/floor/plating,/area/assembly/assembly_line) "cNL" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/structure/disposalpipe/segment,/turf/simulated/floor/plasteel,/area/hallway/primary/aft) "cNM" = (/obj/structure/cable{d2 = 8; icon_state = "0-8"},/obj/machinery/power/solar{id = "portsolar"; name = "Port Solar Array"},/turf/simulated/floor/plasteel/airless{icon_state = "solarpanel"},/area/solar/port) @@ -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/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) +"cNZ" = (/obj/machinery/constructable_frame/machine_frame,/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel,/area/assembly/assembly_line) "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) @@ -7510,13 +7510,13 @@ "cOv" = (/obj/machinery/light{dir = 8},/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"; tag = ""},/obj/item/radio/intercom{dir = 1; name = "station intercom (General)"; pixel_y = -28},/turf/simulated/floor/engine,/area/toxins/test_chamber) "cOw" = (/obj/effect/spawner/window/reinforced,/turf/simulated/wall,/area/maintenance/aft) "cOx" = (/obj/effect/spawner/window/reinforced,/turf/simulated/floor/plating,/area/maintenance/aft) -"cOy" = (/obj/item/pen,/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/assembly/assembly_line) -"cOz" = (/obj/machinery/atmospherics/unary/vent_pump{on = 0},/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/assembly/assembly_line) -"cOA" = (/obj/machinery/conveyor_switch{id = "Skynet_heavy"},/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/assembly/assembly_line) -"cOB" = (/obj/machinery/constructable_frame/machine_frame,/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/assembly/assembly_line) +"cOy" = (/obj/structure/table/reinforced,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/structure/barricade/wooden,/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel,/area/assembly/assembly_line) +"cOz" = (/obj/structure/closet,/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel,/area/assembly/assembly_line) +"cOA" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel,/area/assembly/assembly_line) +"cOB" = (/obj/effect/decal/warning_stripes/yellow/partial{icon_state = "3"; dir = 8},/obj/effect/decal/warning_stripes/arrow{icon_state = "4"; dir = 8},/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel,/area/assembly/assembly_line) "cOC" = (/obj/structure/rack{dir = 1},/obj/effect/spawner/lootdrop/maintenance,/turf/simulated/floor/plating,/area/maintenance/asmaint2) "cOD" = (/obj/machinery/light{icon_state = "tube1"; dir = 4},/turf/simulated/floor/engine,/area/toxins/test_chamber) -"cOE" = (/obj/structure/table/reinforced,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/structure/barricade/wooden,/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/assembly/assembly_line) +"cOE" = (/obj/machinery/firealarm{dir = 1; pixel_y = -24},/obj/effect/decal/warning_stripes/yellow/partial{icon_state = "3"; dir = 4},/obj/effect/decal/warning_stripes/arrow{icon_state = "4"; dir = 4},/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel,/area/assembly/assembly_line) "cOF" = (/obj/structure/rack{dir = 8; layer = 2.9},/obj/item/extinguisher,/obj/item/extinguisher,/obj/item/extinguisher,/obj/item/extinguisher,/obj/item/extinguisher,/obj/item/extinguisher,/turf/simulated/floor/plasteel,/area/atmos) "cOG" = (/turf/simulated/floor/plating{desc = "
There is some old writing on this floor. You are barely able to read out a few lines from a tangled scribble.

In a chamber a great mirror lies, cut away it solemn cries. Travel bold as thou might, piercing vastness as a kite.

HONK!
"; name = "Old Note #6"},/area/assembly/assembly_line) "cOH" = (/obj/machinery/atmospherics/unary/vent_scrubber{dir = 4; on = 1},/turf/simulated/floor/plating,/area/assembly/assembly_line) @@ -7528,7 +7528,7 @@ "cON" = (/obj/effect/landmark/start{name = "Station Engineer"},/obj/structure/chair/comfy/black{dir = 8},/turf/simulated/floor/plasteel,/area/engine/break_room) "cOO" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{level = 1},/obj/item/twohanded/required/kirbyplants,/turf/simulated/floor/plasteel,/area/engine/break_room) "cOP" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4; level = 1},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4; level = 1},/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor/plating,/area/maintenance/asmaint) -"cOQ" = (/obj/machinery/hologram/holopad,/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/maintenance/turbine) +"cOQ" = (/obj/machinery/light,/obj/machinery/camera{c_tag = "Assembly Line East"; dir = 1; network = list("SS13")},/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel,/area/assembly/assembly_line) "cOR" = (/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,/area/engine/break_room) "cOS" = (/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"},/obj/structure/disposalpipe/segment{dir = 1; icon_state = "pipe-c"},/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 8; initialize_directions = 11; level = 1},/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 8; initialize_directions = 11},/turf/simulated/floor/plating,/area/maintenance/asmaint) "cOT" = (/turf/simulated/wall/r_wall,/area/atmos/distribution) @@ -7559,7 +7559,7 @@ "cPs" = (/obj/machinery/light{dir = 1; in_use = 1},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_y = 0; tag = ""},/turf/simulated/floor/plasteel{icon_state = "white"},/area/toxins/xenobiology) "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) +"cPv" = (/obj/structure/table,/obj/item/radio/intercom{dir = 1; name = "station intercom (General)"; pixel_y = -28},/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel,/area/assembly/assembly_line) "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) @@ -7572,7 +7572,7 @@ "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/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) +"cPI" = (/turf/space,/obj/structure/cable{d2 = 8; icon_state = "0-8"},/turf/simulated/floor/plating/airless/catwalk,/area/solar/port) "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) "cPL" = (/obj/machinery/vending/coffee,/turf/simulated/floor/plasteel{dir = 1; icon_state = "yellowcorner"},/area/hallway/primary/aft) @@ -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{d2 = 8; icon_state = "0-8"},/turf/simulated/floor/plating/airless/catwalk,/area/solar/port) +"cQa" = (/turf/space,/obj/structure/cable{icon_state = "0-4"; d2 = 4},/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{icon_state = "0-4"; d2 = 4},/turf/simulated/floor/plating/airless/catwalk,/area/solar/port) +"cQq" = (/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) "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 = 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) +"cRe" = (/turf/space,/obj/structure/cable{icon_state = "0-2"; d2 = 2},/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/structure/cable{icon_state = "0-2"; d2 = 2},/turf/simulated/floor/plating/airless/catwalk,/area/solar/port) +"cSk" = (/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) "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/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) +"cTQ" = (/obj/effect/spawner/random_spawners/blood_maybe,/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel,/area/maintenance/asmaint) "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" = (/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) -"cTT" = (/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) -"cTU" = (/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) -"cTV" = (/turf/space,/obj/structure/transit_tube{icon_state = "E-W-Pass"},/turf/simulated/floor/plating/airless/catwalk,/area/space) +"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" = (/obj/effect/landmark/damageturf,/turf/simulated/floor/plating,/area/maintenance/asmaint) +"cTV" = (/obj/machinery/atmospherics/binary/pump{dir = 4},/obj/effect/decal/cleanable/cobweb,/obj/machinery/firealarm{dir = 8; pixel_x = -24},/obj/machinery/light_switch{pixel_y = 27},/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel,/area/maintenance/turbine) "cTW" = (/turf/space,/turf/simulated/floor/plating/airless/catwalk,/area/solar/starboard) -"cTX" = (/turf/space,/obj/item/wrench,/turf/simulated/floor/plating/airless/catwalk,/area/space) +"cTX" = (/obj/structure/cable{icon_state = "0-4"; d2 = 4},/obj/machinery/atmospherics/pipe/simple/visible/yellow{dir = 10; level = 2},/obj/machinery/power/apc{dir = 1; name = "north bump"; pixel_x = 0; pixel_y = 24},/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel,/area/maintenance/turbine) "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 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0; tag = ""},/turf/simulated/floor/plating/airless/catwalk,/area/solar/starboard) +"cUC" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/obj/machinery/light{dir = 1},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel,/area/maintenance/turbine) "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/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) +"cVk" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/machinery/atmospherics/unary/vent_scrubber{dir = 1; on = 1; scrub_N2O = 1; scrub_Toxins = 1},/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plating,/area/maintenance/turbine) "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,/turf/simulated/floor/plating/airless/catwalk,/area/solar/starboard) +"cVH" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/obj/machinery/disposal,/obj/structure/sign/deathsposal{pixel_y = 32},/obj/structure/disposalpipe/trunk,/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plating,/area/maintenance/turbine) "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/machinery/atmospherics/pipe/simple/visible/yellow{dir = 6; level = 2},/turf/simulated/floor/plating/airless/catwalk,/area/space) +"cWx" = (/obj/machinery/power/smes{capacity = 9e+006; charge = 10000},/obj/structure/cable{d2 = 8; icon_state = "0-8"},/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel,/area/maintenance/turbine) "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 = 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) +"cXm" = (/obj/machinery/atmospherics/pipe/simple/visible/yellow{dir = 4; level = 2},/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel,/area/maintenance/turbine) "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 = 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) +"cYg" = (/obj/machinery/atmospherics/binary/pump{dir = 8; name = "Mix to MiniSat"},/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel,/area/maintenance/turbine) "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/space,/obj/structure/cable{d2 = 8; icon_state = "0-8"},/turf/simulated/floor/plating/airless/catwalk,/area/solar/starboard) +"cYy" = (/obj/machinery/atmospherics/pipe/manifold4w/visible,/obj/machinery/meter,/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel,/area/maintenance/turbine) "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/structure/cable{icon_state = "0-4"; d2 = 4},/turf/simulated/floor/plating/airless/catwalk,/area/solar/starboard) +"dav" = (/obj/machinery/atmospherics/binary/pump{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel,/area/maintenance/turbine) "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,24 +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/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) +"dcr" = (/obj/machinery/atmospherics/pipe/simple/visible{dir = 10},/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel,/area/maintenance/turbine) "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"; tag = ""},/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"; tag = ""},/turf/simulated/floor/plating/airless/catwalk,/area/solar/starboard) +"dcu" = (/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"},/obj/structure/disposalpipe/segment,/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel,/area/maintenance/turbine) "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/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) -"dcy" = (/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) -"dcz" = (/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) -"dcA" = (/turf/simulated/floor/plating{icon_state = "platingdmg3"},/area/maintenance/asmaint) +"dcx" = (/obj/machinery/power/terminal{icon_state = "term"; dir = 1},/obj/structure/cable{d2 = 8; icon_state = "0-8"},/obj/machinery/alarm{dir = 8; pixel_x = 25; pixel_y = 0},/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel,/area/maintenance/turbine) +"dcy" = (/obj/machinery/atmospherics/unary/tank/toxins{dir = 4},/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel,/area/maintenance/turbine) +"dcz" = (/obj/machinery/atmospherics/binary/pump{dir = 4},/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel,/area/maintenance/turbine) +"dcA" = (/obj/machinery/atmospherics/pipe/manifold/visible{dir = 4; initialize_directions = 11; level = 2},/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel,/area/maintenance/turbine) "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{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) +"dcF" = (/obj/effect/landmark{name = "blobstart"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/effect/decal/cleanable/dirt,/mob/living/simple_animal/mouse,/turf/simulated/floor/plasteel,/area/maintenance/turbine) "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/space,/obj/structure/cable{icon_state = "0-2"; d2 = 2},/turf/simulated/floor/plating/airless/catwalk,/area/solar/starboard) -"dcI" = (/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) +"dcH" = (/obj/machinery/atmospherics/pipe/simple/visible,/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel,/area/maintenance/turbine) +"dcI" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/obj/structure/disposalpipe/segment,/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel,/area/maintenance/turbine) "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) @@ -8257,25 +8257,46 @@ "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{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) +"dcR" = (/obj/machinery/atmospherics/unary/portables_connector,/obj/machinery/portable_atmospherics/canister,/obj/structure/sign/nosmoking_2{pixel_x = 32},/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel,/area/maintenance/turbine) "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,/obj/machinery/power/tracker,/turf/simulated/floor/plating/airless/catwalk,/area/solar/starboard) +"dcV" = (/obj/machinery/atmospherics/unary/portables_connector{dir = 4},/obj/machinery/portable_atmospherics/canister/oxygen,/obj/structure/sign/nosmoking_2{pixel_x = -32},/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel,/area/maintenance/turbine) "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" = (/obj/structure/safe/floor{knownby = list("captain")},/obj/item/clothing/mask/cigarette/cigar/havana,/obj/item/lighter/zippo/nt_rep,/obj/item/reagent_containers/food/drinks/bottle/absinthe/premium,/obj/item/toy/figure/captain,/obj/item/gun/projectile/revolver/russian,/turf/simulated/floor/carpet,/area/crew_quarters/captain/bedroom) +"dda" = (/obj/machinery/atmospherics/binary/valve,/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel,/area/maintenance/turbine) "ddb" = (/obj/structure/particle_accelerator/end_cap,/turf/simulated/floor/plating,/area/engine/engineering) +"ddc" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 1; on = 1},/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel,/area/maintenance/turbine) +"ddd" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/obj/structure/disposalpipe/segment{dir = 1; icon_state = "pipe-c"},/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel,/area/maintenance/turbine) +"dde" = (/obj/machinery/atmospherics/binary/pump{dir = 1},/obj/structure/disposalpipe/segment{dir = 4},/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel,/area/maintenance/turbine) +"ddf" = (/obj/structure/table,/obj/item/paper_bin{pixel_x = -2; pixel_y = 5},/obj/item/pen,/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel,/area/maintenance/turbine) +"ddg" = (/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel,/area/maintenance/turbine) +"ddh" = (/obj/machinery/atmospherics/pipe/manifold/visible{dir = 8},/obj/machinery/meter,/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel,/area/maintenance/turbine) +"ddi" = (/obj/machinery/atmospherics/pipe/simple/visible/purple{dir = 4},/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel,/area/maintenance/turbine) +"ddj" = (/obj/machinery/atmospherics/pipe/simple/visible,/obj/machinery/atmospherics/pipe/simple/visible/purple{dir = 4},/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel,/area/maintenance/turbine) +"ddk" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/obj/machinery/atmospherics/binary/valve{dir = 4},/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel,/area/maintenance/turbine) +"ddl" = (/obj/machinery/atmospherics/pipe/manifold/visible{dir = 4; initialize_directions = 11; level = 2},/obj/machinery/meter,/obj/machinery/light{dir = 4},/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel,/area/maintenance/turbine) "ddm" = (/obj/machinery/portable_atmospherics/pump,/turf/simulated/floor/plasteel,/area/atmos) +"ddn" = (/obj/structure/reagent_dispensers/fueltank,/obj/item/storage/toolbox/emergency,/obj/item/radio/intercom{pixel_y = -30},/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel,/area/maintenance/turbine) +"ddo" = (/obj/structure/reagent_dispensers/watertank,/obj/item/extinguisher,/obj/structure/extinguisher_cabinet{pixel_y = -30},/obj/machinery/light/small,/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel,/area/maintenance/turbine) +"ddp" = (/obj/machinery/atmospherics/pipe/simple/visible/purple,/obj/machinery/computer/turbine_computer{id = "incineratorturbine"},/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel,/area/maintenance/turbine) +"ddq" = (/obj/machinery/hologram/holopad,/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel,/area/maintenance/turbine) "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) "ddt" = (/obj/machinery/atmospherics/binary/pump{dir = 0; name = "Port to Filter"; on = 0},/turf/simulated/floor/plasteel,/area/atmos) "ddu" = (/obj/structure/chair/stool,/obj/machinery/atmospherics/pipe/simple/visible{dir = 5},/obj/item/wrench,/obj/machinery/light/small{dir = 8},/obj/effect/decal/warning_stripes/southwest,/turf/simulated/floor/plating,/area/maintenance/asmaint) +"ddv" = (/obj/machinery/atmospherics/pipe/simple/visible,/obj/machinery/door_control{id = "auxiliaryturbinevent"; name = "Auxiliary Vent"; pixel_x = 6; pixel_y = -24; req_access_txt = "32"},/obj/machinery/door_control{id = "turbinevent"; name = "Turbine Vent"; pixel_x = -6; pixel_y = -24; req_access_txt = "32"},/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel,/area/maintenance/turbine) "ddw" = (/obj/machinery/atmospherics/unary/portables_connector{dir = 8},/obj/machinery/portable_atmospherics/canister/air,/obj/effect/decal/warning_stripes/southeast,/turf/simulated/floor/plating,/area/maintenance/asmaint) "ddx" = (/obj/machinery/camera{c_tag = "Atmospherics Central"; dir = 8; network = list("SS13")},/turf/simulated/floor/plasteel,/area/atmos) +"ddy" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel,/area/maintenance/turbine) +"ddz" = (/obj/machinery/atmospherics/pipe/simple/visible,/obj/machinery/embedded_controller/radio/airlock/access_controller{frequency = 1449; id_tag = "turbine_control"; name = "Turbine Access Console"; pixel_x = 6; pixel_y = -26; req_access_txt = "12"; tag_exterior_door = "gas_turbine_exterior"; tag_interior_door = "gas_turbine_interior"},/obj/machinery/ignition_switch{id = "gasturbine"; pixel_x = -6; pixel_y = -24},/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel,/area/maintenance/turbine) +"ddA" = (/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) "ddB" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 6},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 6},/turf/simulated/floor/plating,/area/maintenance/asmaint2) +"ddC" = (/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) +"ddD" = (/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) +"ddE" = (/turf/space,/obj/structure/transit_tube{icon_state = "E-W-Pass"},/turf/simulated/floor/plating/airless/catwalk,/area/space) "ddF" = (/obj/structure/sign/biohazard{pixel_y = 32},/turf/space,/area/space) "ddG" = (/obj/machinery/field/generator,/turf/simulated/floor/plating,/area/storage/secure) "ddH" = (/obj/structure/disposalpipe/segment{dir = 8; icon_state = "pipe-c"},/turf/simulated/floor/plating,/area/maintenance/asmaint) @@ -8283,10 +8304,27 @@ "ddJ" = (/obj/structure/table,/obj/item/paper_bin,/turf/simulated/floor/plating,/area/maintenance/asmaint2) "ddK" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 9},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 9; pixel_y = 0},/turf/simulated/floor/plating,/area/maintenance/asmaint2) "ddL" = (/obj/structure/lattice,/obj/docking_port/stationary{dir = 8; dwidth = 3; height = 5; id = "sit_engshuttle"; name = "Cyberiad Eng Shuttle"; width = 11},/turf/space,/area/space) +"ddM" = (/turf/space,/obj/item/wrench,/turf/simulated/floor/plating/airless/catwalk,/area/space) +"ddN" = (/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) +"ddO" = (/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) +"ddP" = (/turf/space,/obj/structure/cable,/turf/simulated/floor/plating/airless/catwalk,/area/solar/starboard) +"ddQ" = (/turf/space,/obj/machinery/atmospherics/pipe/simple/visible/yellow{dir = 6; level = 2},/turf/simulated/floor/plating/airless/catwalk,/area/space) +"ddR" = (/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) "ddS" = (/obj/structure/particle_accelerator/fuel_chamber,/turf/simulated/floor/plating,/area/engine/engineering) +"ddT" = (/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) +"ddU" = (/turf/space,/obj/structure/cable{d2 = 8; icon_state = "0-8"},/turf/simulated/floor/plating/airless/catwalk,/area/solar/starboard) +"ddV" = (/turf/space,/obj/structure/cable{icon_state = "0-4"; d2 = 4},/turf/simulated/floor/plating/airless/catwalk,/area/solar/starboard) +"ddW" = (/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) +"ddX" = (/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) +"ddY" = (/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) "ddZ" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/light/small{dir = 8},/turf/simulated/floor/plating,/area/engine/engineering) "dea" = (/obj/machinery/space_heater,/turf/simulated/floor/plasteel,/area/atmos) +"deb" = (/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) "dec" = (/obj/machinery/atmospherics/pipe/manifold/visible,/turf/simulated/floor/plasteel,/area/atmos) +"ded" = (/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) +"dee" = (/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) +"def" = (/turf/space,/obj/structure/cable{icon_state = "0-2"; d2 = 2},/turf/simulated/floor/plating/airless/catwalk,/area/solar/starboard) +"deg" = (/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) "deh" = (/obj/machinery/space_heater,/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/turf/simulated/floor/plasteel,/area/atmos) "dei" = (/obj/machinery/atmospherics/unary/heat_reservoir/heater{dir = 8; icon_state = "freezer_0"; tag = ""},/turf/simulated/floor/plasteel,/area/atmos) "dej" = (/obj/machinery/atmospherics/pipe/simple/visible/green{level = 2},/obj/machinery/atmospherics/binary/pump{dir = 8; name = "CO2 to Pure"; on = 0},/turf/simulated/floor/plasteel,/area/atmos) @@ -8294,6 +8332,9 @@ "del" = (/obj/structure/lattice,/obj/machinery/atmospherics/pipe/simple/visible/yellow{dir = 4; level = 2},/obj/machinery/atmospherics/pipe/simple/heat_exchanging,/turf/space,/area/space) "dem" = (/turf/simulated/floor/engine{carbon_dioxide = 50000; name = "co2 floor"; nitrogen = 0; oxygen = 0},/area/atmos) "den" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 8; external_pressure_bound = 0; frequency = 1441; icon_state = "in"; id_tag = "co2_out"; initialize_directions = 1; internal_pressure_bound = 4000; on = 1; pressure_checks = 2; pump_direction = 0},/turf/simulated/floor/engine{carbon_dioxide = 50000; name = "co2 floor"; nitrogen = 0; oxygen = 0},/area/atmos) +"deo" = (/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) +"dep" = (/turf/space,/obj/structure/cable,/obj/machinery/power/tracker,/turf/simulated/floor/plating/airless/catwalk,/area/solar/starboard) +"deq" = (/obj/machinery/computer/guestpass,/turf/simulated/wall,/area/medical/reception) "der" = (/obj/structure/table,/turf/simulated/floor/plating,/area/maintenance/asmaint) "des" = (/obj/machinery/light/small{dir = 8},/obj/machinery/field/generator,/turf/simulated/floor/plating,/area/storage/secure) "deu" = (/obj/machinery/atmospherics/pipe/simple/hidden,/turf/simulated/wall,/area/engine/engineering) @@ -8395,7 +8436,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) @@ -8418,15 +8458,9 @@ "dhJ" = (/obj/machinery/camera{c_tag = "Atmospherics South-East"; dir = 1; network = list("SS13")},/obj/machinery/atmospherics/binary/valve/digital/open{name = "Mixed Air Outlet Valve"},/turf/simulated/floor/plasteel{icon_state = "arrival"; dir = 6},/area/atmos) "dhL" = (/obj/machinery/atmospherics/pipe/simple/visible/yellow{dir = 4; level = 2},/turf/simulated/wall/r_wall,/area/maintenance/turbine) "dhM" = (/obj/machinery/atmospherics/pipe/simple/visible/yellow{dir = 5; tag = "icon-intact-y (NORTHWEST)"},/turf/simulated/wall/r_wall,/area/maintenance/turbine) -"dhN" = (/obj/structure/cable{icon_state = "0-4"; d2 = 4},/obj/machinery/atmospherics/pipe/simple/visible/yellow{dir = 10; level = 2},/obj/machinery/power/apc{dir = 1; name = "north bump"; pixel_x = 0; pixel_y = 24},/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/maintenance/turbine) -"dhO" = (/obj/machinery/atmospherics/binary/pump{dir = 4},/obj/effect/decal/cleanable/cobweb,/obj/machinery/firealarm{dir = 8; pixel_x = -24},/obj/machinery/light_switch{pixel_y = 27},/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/maintenance/turbine) "dhP" = (/obj/structure/grille/broken,/obj/structure/disposalpipe/segment,/turf/simulated/floor/plating,/area/maintenance/asmaint) "dhQ" = (/obj/structure/grille,/turf/simulated/floor/plating,/area/maintenance/asmaint) "dhR" = (/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/wall,/area/maintenance/asmaint2) -"dhS" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/machinery/atmospherics/unary/vent_scrubber{dir = 1; on = 1; scrub_N2O = 1; scrub_Toxins = 1},/turf/simulated/floor/plating,/area/maintenance/turbine) -"dhT" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/obj/machinery/light{dir = 1},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/maintenance/turbine) -"dhU" = (/obj/machinery/power/smes{capacity = 9e+006; charge = 10000},/obj/structure/cable{d2 = 8; icon_state = "0-8"},/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/maintenance/turbine) -"dhV" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/obj/machinery/disposal,/obj/structure/sign/deathsposal{pixel_y = 32},/obj/structure/disposalpipe/trunk,/turf/simulated/floor/plating,/area/maintenance/turbine) "dhW" = (/obj/structure/chair{dir = 4},/obj/machinery/light,/turf/simulated/shuttle/floor{icon_state = "floor2"},/area/shuttle/constructionsite) "dhX" = (/obj/machinery/computer/atmos_alert,/turf/simulated/shuttle/floor{icon_state = "floor2"},/area/shuttle/constructionsite) "dhY" = (/obj/effect/landmark{name = "xeno_spawn"; pixel_x = -1},/turf/simulated/floor/plating,/area/maintenance/asmaint) @@ -8439,9 +8473,6 @@ "dif" = (/turf/simulated/shuttle/wall{tag = "icon-swall2"; icon_state = "swall2"; dir = 2},/area/shuttle/constructionsite) "dij" = (/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/green{dir = 9},/turf/simulated/floor/plating,/area/atmos) "dik" = (/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/green{dir = 6},/turf/simulated/floor/plating,/area/atmos) -"dil" = (/obj/machinery/atmospherics/pipe/manifold4w/visible,/obj/machinery/meter,/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/maintenance/turbine) -"dim" = (/obj/machinery/atmospherics/binary/pump{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/maintenance/turbine) -"din" = (/obj/machinery/atmospherics/pipe/simple/visible{dir = 10},/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/maintenance/turbine) "dio" = (/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,/turf/simulated/floor/plating,/area/atmos) "dip" = (/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/yellow{level = 2},/turf/simulated/floor/plating,/area/atmos) "diq" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/wall,/area/maintenance/asmaint) @@ -8449,10 +8480,6 @@ "dis" = (/obj/machinery/portable_atmospherics/scrubber,/turf/simulated/floor/plating,/area/aisat{name = "\improper AI Satellite Hallway"}) "dit" = (/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/green{level = 2},/turf/simulated/floor/plating,/area/atmos) "diu" = (/obj/machinery/atmospherics/pipe/simple/visible/yellow{dir = 6; level = 2},/obj/structure/lattice,/turf/space,/area/space) -"div" = (/obj/machinery/atmospherics/pipe/simple/visible/yellow{dir = 4; level = 2},/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/maintenance/turbine) -"diw" = (/obj/machinery/atmospherics/binary/pump{dir = 8; name = "Mix to MiniSat"},/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/maintenance/turbine) -"dix" = (/obj/machinery/power/terminal{icon_state = "term"; dir = 1},/obj/structure/cable{d2 = 8; icon_state = "0-8"},/obj/machinery/alarm{dir = 8; pixel_x = 25; pixel_y = 0},/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/maintenance/turbine) -"diy" = (/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"},/obj/structure/disposalpipe/segment,/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/maintenance/turbine) "diz" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 5},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 5; level = 1},/turf/simulated/floor/plating,/area/maintenance/asmaint2) "diA" = (/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/floor/plating,/area/maintenance/asmaint2) "diB" = (/obj/structure/chair,/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/floor/plating,/area/maintenance/asmaint2) @@ -8460,7 +8487,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) @@ -8484,11 +8510,6 @@ "djb" = (/obj/machinery/atmospherics/pipe/simple/heat_exchanging{dir = 4},/obj/structure/lattice,/turf/space,/area/space) "djc" = (/obj/machinery/atmospherics/pipe/simple/heat_exchanging{dir = 9},/obj/structure/lattice,/turf/space,/area/space) "djd" = (/obj/machinery/atmospherics/pipe/simple/visible/yellow,/obj/structure/lattice,/turf/space,/area/space) -"dje" = (/obj/machinery/atmospherics/unary/tank/toxins{dir = 4},/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/maintenance/turbine) -"djf" = (/obj/machinery/atmospherics/binary/pump{dir = 4},/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/maintenance/turbine) -"djh" = (/obj/effect/landmark{name = "blobstart"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/mob/living/simple_animal/mouse,/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/maintenance/turbine) -"dji" = (/obj/machinery/atmospherics/pipe/simple/visible,/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/maintenance/turbine) -"djk" = (/obj/machinery/atmospherics/unary/portables_connector,/obj/machinery/portable_atmospherics/canister,/obj/structure/sign/nosmoking_2{pixel_x = 32},/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/maintenance/turbine) "djl" = (/obj/structure/table,/obj/item/cartridge/medical,/turf/simulated/floor/plating,/area/maintenance/asmaint) "djm" = (/obj/structure/closet/firecloset,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/plating,/area/maintenance/asmaint) "djo" = (/obj/structure/disposalpipe/segment,/turf/simulated/floor/plating,/area/maintenance/asmaint2) @@ -8496,17 +8517,12 @@ "djr" = (/obj/structure/closet/emcloset,/turf/simulated/floor/plating,/area/maintenance/asmaint2) "djs" = (/obj/machinery/power/emitter,/turf/simulated/floor/plating,/area/storage/secure) "djv" = (/obj/item/multitool,/turf/simulated/floor/plating/airless,/area/engine/engineering) -"djw" = (/obj/machinery/atmospherics/pipe/manifold/visible{dir = 4; initialize_directions = 11; level = 2},/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/maintenance/turbine) -"djx" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/obj/structure/disposalpipe/segment,/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/maintenance/turbine) "djy" = (/obj/structure/lattice,/obj/item/wirecutters,/turf/space,/area/space) "djz" = (/obj/structure/rack,/obj/effect/spawner/lootdrop/maintenance{lootcount = 2; name = "2maintenance loot spawner"},/obj/item/latexballon,/turf/simulated/floor/plating,/area/maintenance/asmaint) "djA" = (/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,/turf/simulated/floor/plating,/area/maintenance/asmaint2) "djB" = (/obj/machinery/atmospherics/pipe/simple/visible,/obj/structure/grille,/obj/machinery/meter,/turf/simulated/wall/r_wall,/area/atmos) "djC" = (/obj/machinery/camera{c_tag = "Aft Starboard Solar Access"; dir = 1},/turf/simulated/floor/plating,/area/maintenance/asmaint2) "djE" = (/obj/structure/lattice,/obj/machinery/atmospherics/pipe/simple/visible/yellow,/turf/space,/area/space) -"djF" = (/obj/machinery/atmospherics/unary/portables_connector{dir = 4},/obj/machinery/portable_atmospherics/canister/oxygen,/obj/structure/sign/nosmoking_2{pixel_x = -32},/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/maintenance/turbine) -"djG" = (/obj/machinery/atmospherics/binary/valve,/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/maintenance/turbine) -"djJ" = (/obj/machinery/atmospherics/binary/pump{dir = 1},/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/maintenance/turbine) "djK" = (/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/wall,/area/maintenance/turbine) "djM" = (/obj/item/shard,/turf/simulated/floor/plating,/area/maintenance/asmaint) "djN" = (/obj/structure/disposalpipe/segment,/obj/item/cigbutt/roach,/turf/simulated/floor/plating,/area/maintenance/asmaint) @@ -8515,8 +8531,6 @@ "djS" = (/obj/machinery/atmospherics/pipe/simple/visible,/obj/structure/grille,/obj/machinery/meter{frequency = 1443; id = "mair_in_meter"; name = "Mixed Air Tank In"},/turf/simulated/wall/r_wall,/area/atmos) "djT" = (/obj/structure/lattice,/obj/structure/lattice,/obj/structure/lattice,/turf/space,/area/space) "djU" = (/obj/machinery/atmospherics/pipe/simple/visible,/obj/structure/grille,/obj/machinery/meter{frequency = 1443; id = "mair_out_meter"; name = "Mixed Air Tank Out"},/turf/simulated/wall/r_wall,/area/atmos) -"djV" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 1; on = 1},/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/maintenance/turbine) -"djW" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/obj/structure/disposalpipe/segment{dir = 1; icon_state = "pipe-c"},/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/maintenance/turbine) "djX" = (/obj/structure/disposalpipe/segment,/obj/structure/closet,/turf/simulated/floor/plating,/area/maintenance/asmaint2) "djY" = (/obj/structure/disposalpipe/segment{dir = 2; icon_state = "pipe-c"},/turf/simulated/wall,/area/maintenance/asmaint) "djZ" = (/obj/machinery/light/small{dir = 8},/turf/simulated/floor/plating,/area/engine/engineering) @@ -8527,10 +8541,6 @@ "dki" = (/obj/machinery/atmospherics/unary/outlet_injector{dir = 1; frequency = 1441; icon_state = "on"; id = "n2_in"; on = 1},/turf/simulated/floor/engine{name = "n2 floor"; nitrogen = 100000; oxygen = 0},/area/atmos) "dkj" = (/obj/effect/spawner/window/reinforced,/turf/simulated/floor/plating,/area/maintenance/turbine) "dkk" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 1; external_pressure_bound = 0; frequency = 1441; icon_state = "in"; id_tag = "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 = 100000; oxygen = 0},/area/atmos) -"dkl" = (/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/maintenance/turbine) -"dkm" = (/obj/machinery/atmospherics/pipe/manifold/visible{dir = 8},/obj/machinery/meter,/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/maintenance/turbine) -"dkn" = (/obj/machinery/atmospherics/pipe/simple/visible/purple{dir = 4},/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/maintenance/turbine) -"dko" = (/obj/machinery/atmospherics/pipe/simple/visible,/obj/machinery/atmospherics/pipe/simple/visible/purple{dir = 4},/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/maintenance/turbine) "dkp" = (/obj/machinery/air_sensor{frequency = 1441; id_tag = "o2_sensor"},/turf/simulated/floor/engine{name = "o2 floor"; nitrogen = 0; oxygen = 100000},/area/atmos) "dkq" = (/obj/machinery/atmospherics/unary/outlet_injector{dir = 1; frequency = 1441; icon_state = "on"; id = "o2_in"; on = 1},/turf/simulated/floor/engine{name = "o2 floor"; nitrogen = 0; oxygen = 100000},/area/atmos) "dkr" = (/obj/machinery/portable_atmospherics/canister,/obj/effect/decal/cleanable/cobweb,/turf/simulated/floor/plating,/area/maintenance/asmaint) @@ -8540,20 +8550,14 @@ "dkv" = (/mob/living/simple_animal/mouse,/turf/simulated/floor/plating,/area/maintenance/asmaint2) "dkw" = (/obj/machinery/atmospherics/unary/outlet_injector{dir = 1; frequency = 1441; icon_state = "on"; id = "o2_in"; on = 1},/turf/simulated/floor/engine{name = "air floor"; nitrogen = 10580; oxygen = 2644},/area/atmos) "dkx" = (/obj/machinery/atmospherics/unary/vent_pump/high_volume{dir = 1; external_pressure_bound = 0; frequency = 1443; icon_state = "in"; id_tag = "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/atmos) -"dky" = (/obj/structure/table,/obj/item/paper_bin{pixel_x = -2; pixel_y = 5},/obj/item/pen,/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/maintenance/turbine) "dkz" = (/obj/effect/decal/warning_stripes/northwest,/turf/simulated/floor/plating/airless,/area/space) "dkA" = (/obj/effect/decal/warning_stripes/north,/turf/simulated/floor/plating/airless,/area/space) "dkB" = (/obj/effect/decal/warning_stripes/northeast,/turf/simulated/floor/plating/airless,/area/space) "dkC" = (/obj/item/crowbar,/turf/space,/area/space) -"dkD" = (/obj/machinery/atmospherics/pipe/manifold/visible{dir = 4; initialize_directions = 11; level = 2},/obj/machinery/meter,/obj/machinery/light{dir = 4},/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/maintenance/turbine) -"dkE" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/obj/machinery/atmospherics/binary/valve{dir = 4},/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/maintenance/turbine) "dkF" = (/obj/structure/disposalpipe/segment,/turf/simulated/wall,/area/maintenance/asmaint2) "dkG" = (/obj/machinery/door/airlock/maintenance{name = "Biohazard Disposals"; req_access_txt = "12"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/plating,/area/maintenance/asmaint) "dkH" = (/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/plating,/area/maintenance/starboardsolar) "dkI" = (/obj/structure/cable{icon_state = "0-4"; d2 = 4},/obj/machinery/power/apc{dir = 8; name = "west bump Engineering"; pixel_x = -24; shock_proof = 1},/turf/simulated/floor/plating,/area/maintenance/starboardsolar) -"dkJ" = (/obj/structure/reagent_dispensers/fueltank,/obj/item/storage/toolbox/emergency,/obj/item/radio/intercom{pixel_y = -30},/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/maintenance/turbine) -"dkK" = (/obj/structure/reagent_dispensers/watertank,/obj/item/extinguisher,/obj/structure/extinguisher_cabinet{pixel_y = -30},/obj/machinery/light/small,/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/maintenance/turbine) -"dkL" = (/obj/machinery/atmospherics/pipe/simple/visible/purple,/obj/machinery/computer/turbine_computer{id = "incineratorturbine"},/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/maintenance/turbine) "dkM" = (/obj/machinery/power/smes{charge = 0},/obj/structure/cable{d2 = 8; icon_state = "0-8"},/turf/simulated/floor/plating,/area/maintenance/starboardsolar) "dkO" = (/turf/simulated/floor/engine{name = "n2 floor"; nitrogen = 100000; oxygen = 0},/area/atmos) "dkP" = (/obj/machinery/atmospherics/unary/portables_connector{dir = 4},/turf/simulated/floor/plating,/area/maintenance/asmaint) @@ -8561,9 +8565,6 @@ "dkS" = (/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/pipe/simple/hidden/universal{dir = 4},/turf/simulated/floor/plating,/area/maintenance/asmaint) "dkT" = (/turf/simulated/floor/engine{name = "o2 floor"; nitrogen = 0; oxygen = 100000},/area/atmos) "dkV" = (/turf/simulated/floor/engine{name = "air floor"; nitrogen = 10580; oxygen = 2644},/area/atmos) -"dkW" = (/obj/machinery/atmospherics/pipe/simple/visible,/obj/machinery/door_control{id = "auxiliaryturbinevent"; name = "Auxiliary Vent"; pixel_x = 6; pixel_y = -24; req_access_txt = "32"},/obj/machinery/door_control{id = "turbinevent"; name = "Turbine Vent"; pixel_x = -6; pixel_y = -24; req_access_txt = "32"},/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/maintenance/turbine) -"dkX" = (/obj/machinery/atmospherics/pipe/simple/visible,/obj/machinery/embedded_controller/radio/airlock/access_controller{frequency = 1449; id_tag = "turbine_control"; name = "Turbine Access Console"; pixel_x = 6; pixel_y = -26; req_access_txt = "12"; tag_exterior_door = "gas_turbine_exterior"; tag_interior_door = "gas_turbine_interior"},/obj/machinery/ignition_switch{id = "gasturbine"; pixel_x = -6; pixel_y = -24},/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/maintenance/turbine) -"dkY" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/maintenance/turbine) "dkZ" = (/obj/machinery/atmospherics/binary/pump{dir = 4; name = "gas pump"},/turf/simulated/floor/plating,/area/maintenance/asmaint) "dla" = (/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 4; initialize_directions = 11; level = 1},/turf/simulated/floor/plating,/area/maintenance/asmaint) "dlb" = (/obj/machinery/access_button{command = "cycle_interior"; frequency = 1450; master_tag = "south_maint"; name = "interior access button"; pixel_x = 25; pixel_y = -25; req_access_txt = "13"},/obj/machinery/atmospherics/pipe/simple/hidden{dir = 6},/turf/simulated/floor/plating,/area/maintenance/asmaint) @@ -8942,68 +8943,68 @@ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacTabIabIabIabIabQacIabVacJacUaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabNabNacaabYaccabNabNaabaabaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabQadeabVabVadfabQacIabVacJabQaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabNacgachaciachacjabNaaaaaaaabaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabQadeabVadyadzabQacIabVacJabQabIadBadAadCaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacoacpachaciachacpacoaaaaaaaaaaabaabaabaaaaaaaabaaaaaaaaaaaaaaaaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabQadSabVabVadTabQadUabVacfadWadVadVadVabQaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacuactacwacvacwacxacyaaaaaaaaaabNabNabNabNabNaabaabaaaaaaaaaaaaaabaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabQadSabVabVadTabQadUabVacfadWadVadVadVabQaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacuactacvacwacvacxacyaaaaaaaaaabNabNabNabNabNaabaabaaaaaaaaaaaaaabaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabQadeabVabVabVaesabVabVaetaeuaevaevaewabQaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaexaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabaababNacBacCacDachacEabNaaaaaaaababNacFacHacGabNabNabNaaaaaaaabaabaabafOaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabQadeabVabVabVaePabVabVabVaeQaeRaeRaeSabQaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaaaaaaabNacKacLacDacMacNabNaaaaabaababNacbacPacOacRacSabNaaaaabaabafOaabaabaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacTabIabIabIabIabIabIafgabVabVabIabIabIabIabIabIadCaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafOabNacoabNacVacWacXacYacWabNacZadaabPabNacWacQacWacWacWabNabNabNabNabNabNabNabNaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafyaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabQafzafzafAafBafCabQafDabVabVabQafEafFafGafHafIabQaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaababNadgadhacKadhacDadiadjadkaciadlachadmadbaddadcadqadradsacWaduadtadwadvadxabNaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabQabVabVabVadyabVafPabVabVabVafQabVadyabVadyafRabQaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabpaaaaaaaaaaaaaaaabNadDadEadFadoacDadGachachadHadIadladJadnadpadladladNadOacWadPadPadQadRadRacoaaaaaaaaaaaaaaaaaaaaaaaaabpaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafZagbagaagcaaaaaaaaaafZaaaaaaaaaagcaaaaaaaaaafZagdageagcaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabQagfabVabVabVabVaggabVabVabVaghabVabVabVabVagiabQaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabNadXacwadYacwadZadLadKaeaadMaecaebaeeaedaegaefacwaehaehaeiaejaemaekaeoaeraeqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaagwagyagxagwaaaaaaafZagwagzagBagAagwagcaaaaaaagwagCagDagwaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabQagEabVagFahvagGabQagHagIagHabQagJagKabVabVabVabQaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabNadlaenaelaeAaeBaeCaeDaeAaeAaeEaepaeGaeHaeAaeyaeFaezaezaeIaeJaeLaeNaeLadRaeOaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaagwagXagYagwaaaafZagZahaahbahcahdahaagZagcaaaagwaheahfagwaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabQabVabVahgabQabIabQabVahhahiabQabIabQabVabVabVabQaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabNabNabNaeKaeWaeVaeXacWaeYaeYacWafaafaacWafcafcabNabNabNabNaeTaeMaeZaeUadRaffaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaagwahmahlahnaaaahoahpahaahaahqahaahaahpahraaaahsahtahuagwaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabQahwdcZahxabQaaaabQahyahyahyabQaaaabQahzahAahBabQaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaababNafhachafiadiacWachafbacWachafdacWachafeabNafjafOabNaflafkafkafkafxabNafmafOaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaagZahIagZaaaaaaahJahpahaahKahLahaahaahpahMaaaaaaagZahIagZaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabQahyahyahyabQaaaacqahNahOahPacsaaaabQahyahyahyabQaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabNafJacWafKafLacWafMafNacWafMafNacWafMafNabNaabafOabNabNabNabNabNabNabNafXafXafOaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaagZahIagZagZagZagZagZagZagZahZagZagZagZagZagZagZagZahIagZaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacqahNahOahPacsaaaaaaaaaaaaaaaaaaaaaacqahNahOahPacsaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabNabNabNabNafJacWafSafTacWafnafnacWafoafoacWafpafpabNafqaabaabaabaabaaaaaaafraabafOafXafXafOaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahoahIailailailailailailagwaimagwailailailailailailahIahraaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabNagkagjagmaglagoagnagqagpagragrafsagsagsaftagsagvabNaabaabaabaabaabaaaaaaaaaaabaaaafOafXafXafOaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaiCaiDaiEaiFaiGaiHagwahZagZahZagZahZagwaiIaiJaiKaiLaiDaiMaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabpaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabNagMagLagNagOagPagQafvafuafUafwafUafVafYafWagPagWabNaaaaaaaabaaaaabaabaivaivaivaivaaaafOafXafXafOaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahJaiDahaahaahaajdagwahaahaahaahaahaagwahaahaajeahaaiDahMaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacTabIabIabIabIabIabIafgabVabVabIabIabIabIabIabIadCaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafOabNacoabNacVacWacQacXacWabNacZadaabPabNacWacYacWacWacWabNabNabNabNabNabNabNabNaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafyaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabQafzafzafAafBafCabQafDabVabVabQafEafFafGafHafIabQaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaababNadbadcacKadcacDadgadhadiaciadjachadkadladdadmadnadradsacWaduadtadwadvadxabNaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabQabVabVabVadyabVafPabVabVabVafQabVadyabVadyafRabQaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabpaaaaaaaaaaaaaaaabNadpadqadDadoacDadEachachadFadGadjadHadIadJadjadjadNadOacWadPadPadQadRadRacoaaaaaaaaaaaaaaaaaaaaaaaaabpaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafZagbagaagcaaaaaaaaaafZaaaaaaaaaagcaaaaaaaaaafZagdageagcaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabQagfabVabVabVabVaggabVabVabVaghabVabVabVabVagiabQaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabNadKacvadLacvadMadXadYadZaeaaebaecaedaeeaefaegacvaehaehaeiaejaemaekaeoaeraeqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaagwagyagxagwaaaaaaafZagwagzagBagAagwagcaaaaaaagwagCagDagwaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabQagEabVagFahvagGabQagHagIagHabQagJagKabVabVabVabQaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabNadjaelaenaepaeyaezaeAaepaepaeBaeCaeDaeEaepaeFaeGaeHaeHaeIaeJaeLaeNaeLadRaeOaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaagwagXagYagwaaaafZagZahaahbahcahdahaagZagcaaaagwaheahfagwaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabQabVabVahgabQabIabQabVahhahiabQabIabQabVabVabVabQaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabNabNabNaeKaeVaeWaeXacWaeYaeYacWafaafaacWafbafbabNabNabNabNaeTaeMaeZaeUadRaffaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaagwahmahlahnaaaahoahpahaahaahqahaahaahpahraaaahsahtahuagwaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabQahwdcZahxabQaaaabQahyahyahyabQaaaabQahzahAahBabQaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaababNafcachafdadgacWachafeacWachafhacWachafiabNafjafOabNaflafkafkafkafxabNafmafOaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaagZahIagZaaaaaaahJahpahaahKahLahaahaahpahMaaaaaaagZahIagZaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabQahyahyahyabQaaaacqahNahOahPacsaaaabQahyahyahyabQaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabNafJacWafKafLacWafnafoacWafnafoacWafnafoabNaabafOabNabNabNabNabNabNabNafXafXafOaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaagZahIagZagZagZagZagZagZagZahZagZagZagZagZagZagZagZahIagZaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacqahNahOahPacsaaaaaaaaaaaaaaaaaaaaaacqahNahOahPacsaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabNabNabNabNafJacWafSafTacWafpafpacWafvafvacWafMafMabNafqaabaabaabaabaaaaaaafraabafOafXafXafOaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahoahIailailailailailailagwaimagwailailailailailailahIahraaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabNagkagjagmaglagoafNagnagpagragrafsagsagsaftagsagvabNaabaabaabaabaabaaaaaaaaaaabaaaafOafXafXafOaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaiCaiDaiEaiFaiGaiHagwahZagZahZagZahZagwaiIaiJaiKaiLaiDaiMaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabpaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabNagMagLagNagOagPagqagQafuafUafwafUafVafYafWagPagWabNaaaaaaaabaaaaabaabaivaivaivaivaaaafOafXafXafOaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahJaiDahaahaahaajdagwahaahaahaahaahaagwahaahaajeahaaiDahMaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabNabNabNabNabNabNahjahkabNabNabNabNabNabNabNagtagtagtagtagtagtagtaaaaguaivagSagRaivaguaaaafOafXafXagUagTagTaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaagwajzajAajBajCajDagwajEahaahaahaajFagwajGahaajHajIajzagwaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabNagVahDahCabNahEaigacWahFahFahFahFahFahFagtahHahRagtahTahSagtaaaaivahUahVahVahWaivaaaaaaafOafXagTahXahYaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabpaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaagwajYajYagZagZagZagwajZahaahaahaakaagwagZagZagZajYajYagwaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabNaiaaicaibaieaidaitabNahFahFahFahFahFahFagtaifaijahGainaikagtaaaaivaioaiqaipairaivaaaaaaaaaagTagTaisagTagTagTaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahsakpakpahnaaaaaaagwakqahaahaahaakragwaaaaaaahsakpakpahnaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahQahQahQahQahQahQaiiaigaiuahFahFahFahFahFahFagtaiwaiyaixannaizagtaivaivaiAaiNaiBaiOaivaivaaaaabagTaiQaiPaiSaiRanAaaaanHaiTaiVaiUanHaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaagwakAahaahaahaakragwaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahQahQahQahQaiZaiXajfajaahQajgaolakjahFahFahFahFahFahFalealgajiajhajlajkajnajmajpajoajrajqajLajKaivaaaajMagTajOajNajQajPanAanHanHajRajTajSanHanHaihaihaihaihaihaihaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaagwakRakPahZakRakPagwaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaajWajUakcakbakeakdakhakgahQakiaitalcahFahFahFahFahFahFajnaYmanWakkannanWaklajjajjakmajjaksakwaktaivaabaabagTakCakxakEakDanAakvakFaoJaoJakGakIakHakJakKakMakLakNaihaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaalvalvalvalwalwaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaagwalxalyahaalzalAagwaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaajWakOakSakQakVakTalaakYaldalbaitaleahFahFahFahFahFahFagtalfalgakkalialhajnaljallalkalnalmakfakuaivanHanHanAanAanAanAaloanAalpalralqalualtalFalCakHaiYaiYaiYalHaihaihaaaaaaaaaajbajbajbajbajbajbajbalIalJaaaabpaaaaaaalvaaaaabaaaamhaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaagwamiamjahaamkamlagwaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaajWalKalMalLalOalNalQalPahQalRalSabNahFahFahFahFahFahFagtagtalUalTapPagtagtalValWaivalYalXalZaivaivanHambamaamdamcamfameanAalGaoJamgamnammalFampalCamvajVamsamuamtaihaaaaaaaaaajbajsajtajvajuajwajxajyaaaaaaaaaaaaaaaamWaabamUaabamWaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahsagZamYamZanaagZahnaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabpaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahQahQaqqahQahQahQahQahQahQamwaigapFapFapFapFapFapFapFapFamxamzamyamzamAamCamBamEamDamGamFamIamHamJauiaoJamKamKamKamKamLamqaoJamMamramOamNamQamPamTamSanbamXandancaneaaaaaaaabajbajXajwajwajwajwajxajyaaaaaaaaaaaaamWalvaaaanGaaaalvamWamWaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahsagZagZagZahnaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaanfangaomanianhankanjanlajJanmapGanpanoanranqantansapFanuanwanvanzanyanCanBanEanDanIanFanJanJanJanKaoJanLanNanManPanOanRanQanQanSanUanTalFanVaofajVajVanXanZanYaoaaaaaabaabajbaknajwakoajwajwajxajyaaaaaaaaaaaaamWaabaabanGaabaabaabamWaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaalwalwalvalwalwaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaanfangaomaocaobaoeaodaohaogaitapGaojaoiaonaokaopaooapFaoqaosaoraouaotaowaovaoxalWaozaoyaoBaoAaoDaoCaoJaoEaoGaoFaoFaoHaoLaoIaoIaoMaoPaoNalFaofaoQaiYaiYaiYaoTaoSaihaqIaqIaqIajbakyajwajwajwajwakzajyaaaaaaaaaaaaamWaaaaaaaoKaaaaaaaaaamWaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaalwaaaaabaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaanfaoUaomaoValEaoXaoWanlajJaigapGaoZaoYapbapaapdapcapFapeapgapfaphamyapjapiapkapSapAaplapCapBapEapDapIapHapJapJapLapKapmaoRapMaoJapNaoJapOaoQapQaiYapVapUapXapWaihaZJaZMaZLajbapYaqaapZaqcaqbajbalIaqeaaaaaaaaaamWaabappapnapqaabaabamWamWamWamWamWamWaqpamWamWamWamWamWamWamWamWaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaapsaprapuaptapwapraprapxapraprapvaaaaaaaaaaaaaaaaaaaaaaaaaaaalvaabapyaabalvaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaakBakBakBakBaslakWakZaomaomaomaomakUaqsapFapGapGapGaqtaquapGapFaqvalUaqwaqwalTaqxaqxapPapSapSaqyaqzapSapSapSanAaqAaqCaqBanxanAanAaqAapRanxaqDapTanxanAaqGaqGaqGaqGaqHaihaihaqIaucaqIaqIajbalsaqJaqKalsajbaabaaaaaaaaaaaaamWaaaappaqdapqaaaaaaaabaabaabaabaabaabaabaabaqLaabaabaabaaaaaaamWaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaqfaqhaqiaqgaqkaqlaqlaqlaqmaqjaqoaaaaaaaaaalwalwalwalvalvaabaabaaaaqnaaaaabaabalvalvalwalwalwaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaakBakXaqraqMaqNaqraqOapzaqQaqPakWaqRaqSaqXaqVaqUaqXaqWariaqYarjaqXaqXaqXaqXarkaqXaqXaqXarlarnarmarparoarrarqarsarsarsartarsaruarwarvarxaqXaryaqWaqXarzarBarAarCaqXariaqXaqXarDarEaqVaqXarFarHarGarJarIajbaabaaaaaaaaaaaaamWaaaappaqdapqaaaaaaaabaqZaqZaqZaqZaqZaqZaqZaqZaqZaqZaqZaabaaaamWaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaardaqhareargaqlarharharharharharfaaaaaaaaaalwaaaaaaaabaaaaabaaaaaaaqnaaaaaaaabaaaaabaaaaaaalwaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaakBalDarKalDarLalDarNarMarParOarRaqTarSarQasdascaseaseasfaseasgaseaseaseasiashasiasjasiasiassaskasnasmaspasoasoasoasoasqasoasoasoasrastasAasvasuasxaswaszasyasAasAasCasBasBasDasEasEasEasFasHasGasIamRamVaaaaaaaaaaaaaaaamWaabappaqdapqaaaaaaaabaqZaabaaaaaaaabaqZaabaabaaaaaaaqZaabaaaamWaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabpaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaarVaqharWarYarharharharharZasaaqoaaaaaaaaaalwaabarXarXarXarXarXaaaaraaaaarXarXarXarXarXaabalwaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaakBamoasYasXasZasYasYataatbalBakWaryatgatgatgatfatiathatkatjatmatlatnatjatpatoatratqatratsatuattatwatvatyatxatAatzatCatBatEatDatAatOatRatQaFLaFLaFLaFLaFLaFLaFLaxeatSatSatSatTatSatSatSarFatVatUatXatWajbaaaaaaaaaaaaaabamWaaaappaqdapqaabaabappapnapqaabaabappapnapqaabaabappapnapqaabamWaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaasJaprapraprapwapraprapxapraprasKaaaaaaaaaalwaaaarbarcarcarcarcarUasbasLasMasMasMasMasNaaaalwaaaaaaaaaaaaaaaaaaaaaabpaaaaaaaaaaaaaaaakBakBakBakBakBakBakBatYauaatZakWaubaudapFaxTaufawKaugauhawKawKawKawKaujaukaucatdaulatdaucaunaumawHawHawHawHauAauoawVauEauEawXauEauFauEauEaFLauGauHaFLauHauIaFLauJauLauKauNauMauPauOauQajbajbajbajbajbajbaaaaaaaaaaaaaaaamWaaaappaqdapqaaaaaaappaqdapqaaaaaaappaqdapqaaaaaaappaqdapqaabaqpaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaalwaabatFatFatFatFatFaaaasbaaaatFatFatFatFatFaabalwaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaakBauRauTauSakWauUauVapGauXauWaucauYavaauZavcavbauZavdavfaveavhavgaviaveavjaAzavlavkavmavlavoavnavzavravBavAaAFavCaCyavDaFLauIavFavEavFauIaFLavGavHayVayVavIavKavJavLaHEaaaaabaaaaaaaaaaaaaaaaaaaaaaaaamWaaaappaqdapqaaaaaaappaqdapqaaaaaaappaqdapqaaaaaaappaqdapqaabamWaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaalwaaaaaaaaaaabaaaaaaaaaasbaaaaaaaaaaabaaaaaaaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaasSasUasTasWasVaaaaaaawBawBaudaudaudaudavMavNaucavOauWaucavPavRavQavTavSavUavdavfavVavXavWavZavYavjaAzawbawaawdawcawfaweawgaCyawhavAaAFawiawnawjaFLawAawDawCawEawAaFLawFawGayVawJawIawLawGawMaHEaabaabaaaaaaaaaaaaaaaaaaaaaaaaamWaaaappaqdapqaabaabappaqdapqaabaabappaqdapqaabaabappaqdapqaabamWaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaalwaabarXarXarXarXarXaaaasbaaaarXarXarXarXarXaabalwaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaatIatKatLatJatIatMatNatPawOawNawQawPawSawRauVaucawTauWaucawUawYawWaxaawZawWavdavfaxbaxdaxcaxfavYavjaAzaxpaxgaxqaxpaxsaxraxvaxtavBaxwaxyaxxaxAaxzaxCaxBaxEaxDaxFavFaxGawGawGawGaHEaHEaxIaxHaHEaHEaabaaaaaaaaaaaaaaaaaaaaaaaaaaaamWaabappaqdapqaaaaaaappaqdapqaaaaaaappaqdapqaaaaaaappaqdapqaabamWaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaawoawqawpawsawraaaawtawvawuawxawwapoaaaarbarcarcarcarcarUasbasLasMasMasMasMasNaaaalwaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaauvauwauxauuauzauyauBauyaxKaxJaxNaxMaudaudaudawKaxOaueawKaxPaxQawKaxSaxRawKayLavfaxUaxWaxVaxYaxXavjayMawHayaayeawHaygayfawVaynavBaypayqaCyaysayraFLaytayvayuayxaywaFLayyayAayzaHEaabaabaabaabaabaabaaaaaaaaaaaaaaaaaaaaaaaaaabamWaaaaabaoKaabaaaaaaappaqdapqaaaaaaappaqdapqaaaaaaappaqdapqaabamWaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaxiaxjaxjaxjaxiaaaaxkaxlaxlaxlaxkalwaxnatFatFatFatFatFaaaasbaaaatFatFatFatFatFaabalwaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaatIavvavyavxatIatMatNatNayCayBayEayDaudayFayGaxuayIayHawKauYayJauZavcayKauZavdayOaxZayNaxZazuaxZazwaAzavlayPavmavlayQavnavzaAFavAayRayTaySayWayUaFLaFLaFLaFLaFLaFLaFLaxeaHEaHEaHEatGaxhaxhaxhdmoaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaqZaabaabaabappaqdapqaabaabappaqdapqaabaabappaqdapqaabamWaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaxiayjayjayjaxiaaaaxkaykaylaykaxkalwaaaaaaaaaaabaaaaaaaaaasbaaaaaaaaaaabaaaaaaaaaalwaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaatIawzawzawyatIaaaaaaayXayYauDauVayZaudazaazdazcazmazlawKazoazqazpavTaztazvaAsazyaxLavdaxLaAzaxLaAqazxazAazzawdazBazDazCazFazEazHazGazGazHazJazIawlazKazMazLawlaybaDRaycawlazNazPazOazRazQazTasOaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabaabaqZaqZaqZaabaaaaaaaoKaabaabaabaabaoKaabaabaabaabaoKaabaaaamWaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahQahQahQahQahQahQaiiaigaiuahFahFahFahFahFahFagtaiwaiyaixajhaizagtaivaivaiAaiNaiBaiOaivaivaaaaabagTaiQaiPaiSaiRanAaaaanHaiTaiVaiUanHaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaagwakAahaahaahaakragwaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahQahQahQahQaiZaiXajfajaahQajgaolajiahFahFahFahFahFahFalealgajlakjakkajkajnajmajpajoajrajqajLajKaivaaaajMagTajOajNajQajPanAanHanHajRajTajSanHanHaihaihaihaihaihaihaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaagwakRakPahZakRakPagwaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaajWajUakcakbakeakdakhakgahQakiaitalcahFahFahFahFahFahFajnaYmanWakXajhanWaklajjajjakmajjaksakwaktaivaabaabagTakCakxakEakDanAakvakFaoJaoJakGakIakHakJakKakMakLakNaihaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaalvalvalvalwalwaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaagwalxalyahaalzalAagwaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaajWakOakSakQakVakTalaakYaldalbaitaleahFahFahFahFahFahFagtalfalgakXalialhajnaljallalkalnalmakfakuaivanHanHanAanAanAanAaloanAalpalralqalualtalFalCakHaiYaiYaiYalHaihaihaaaaaaaaaajbajbajbajbajbajbajbalIalJaaaabpaaaaaaalvaaaaabaaaamhaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaagwamiamjahaamkamlagwaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaajWalKalMalLalOalNalQalPahQalRalSabNahFahFahFahFahFahFagtagtalUalTapPagtagtalValWaivalYalXalZaivaivanHambamaamdamcamfameanAalGaoJamgamnammalFampalCamvajVamsamuamtaihaaaaaaaaaajbajsajtajvajuajwajxajyaaaaaaaaaaaaaaaamWaabalDaabamWaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahsagZamYamZanaagZahnaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabpaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahQahQaqqahQahQahQahQahQahQamwaigapFapFapFapFapFapFapFapFamxamzamyamzamAamCamBamEamDamGamFamIamHamJauiaoJamKamKamKamKamLamqaoJamMamramOamNamQamPamTamSanbamXandancaneaaaaaaaabajbajXajwajwajwajwajxajyaaaaaaaaaaaaamWalvaaaamoaaaalvamWamWaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahsagZagZagZahnaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaanfangaomanianhankanjanlajJanmapGanpanoanranqantansapFanuanwanvanzanyanCanBanEanDanIanFanJanJanJanKaoJanLanNanManPanOanRanQanQanSanUanTalFanVaofajVajVanXanZanYaoaaaaaabaabajbaknajwakoajwajwajxajyaaaaaaaaaaaaamWaabaabamoaabaabaabamWaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaalwalwalvalwalwaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaanfangaomaocaobaoeaodaohaogaitapGaojaoiaonaokaopaooapFaoqaosaoraouaotaowaovaoxalWaozaoyaoBaoAaoDaoCaoJaoEaoGaoFaoFaoHaoLaoIaoIaoMaoPaoNalFaofaoQaiYaiYaiYaoTaoSaihaqIaqIaqIajbakyajwajwajwajwakzajyaaaaaaaaaaaaamWaaaaaaamUaaaaaaaaaamWaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaalwaaaaabaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaanfaoUaomaoValEaoXaoWanlajJaigapGaoZaoYapbapaapdapcapFapeapgapfaphamyapjapiapkapSapAaplapCapBapEapDapIapHapJapJapLapKapmaoRapMaoJapNaoJapOaoQapQaiYapVapUapXapWaihaZJaZMaZLajbapYaqaapZaqcaqbajbalIaqeaaaaaaaaaamWaabappannapqaabaabamWamWamWamWamWamWaqpamWamWamWamWamWamWamWamWaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaapsaprapuaptapwapraprapxapraprapvaaaaaaaaaaaaaaaaaaaaaaaaaaaalvaabanGaabalvaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaakBakBakBakBaslakWakZaomaomaomaomakUaqsapFapGapGapGaqtaquapGapFaqvalUaqwaqwalTaqxaqxapPapSapSaqyaqzapSapSapSanAaqAaqCaqBanxanAanAaqAapRanxaqDapTanxanAaqGaqGaqGaqGaqHaihaihaqIaucaqIaqIajbalsaqJaqKalsajbaabaaaaaaaaaaaaamWaaaappaoKapqaaaaaaaabaabaabaabaabaabaabaabaqLaabaabaabaaaaaaamWaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaqfaqhaqiaqgaqkaqlaqlaqlaqmaqjaqoaaaaaaaaaalwalwalwalvalvaabaabaaaapnaaaaabaabalvalvalwalwalwaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaakBapyaqraqMaqNaqraqOapzaqQaqPakWaqRaqSaqXaqVaqUaqXaqWariaqYarjaqXaqXaqXaqXarkaqXaqXaqXarlarnarmarparoarrarqarsarsarsartarsaruarwarvarxaqXaryaqWaqXarzarBarAarCaqXariaqXaqXarDarEaqVaqXarFarHarGarJarIajbaabaaaaaaaaaaaaamWaaaappaoKapqaaaaaaaabaqZaqZaqZaqZaqZaqZaqZaqZaqZaqZaqZaabaaaamWaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaardaqhareargaqlarharharharharharfaaaaaaaaaalwaaaaaaaabaaaaabaaaaaaapnaaaaaaaabaaaaabaaaaaaalwaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaakBaqdarKaqdaqdaqdaqnaraarParOarRaqTarSarQasdascaseaseasfaseasgaseaseaseasiashasiasjasiasiassaskasnasmaspasoasoasoasoasqasoasoasoasrastasAasvasuasxaswaszasyasAasAasCasBasBasDasEasEasEasFasHasGasIamRamVaaaaaaaaaaaaaaaamWaabappaoKapqaaaaaaaabaqZaabaaaaaaaabaqZaabaabaaaaaaaqZaabaaaamWaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabpaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaarVaqharWarYarharharharharZasaaqoaaaaaaaaaalwaabarXarXarXarXarXaaaarbaaaarXarXarXarXarXaabalwaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaakBarcasYasXasZasYasYataatbalBakWaryatgatgatgatfatiathatkatjatmatlatnatjatpatoatratqatratsatuattatwatvatyatxatAatzatCatBatEatDatAatOatRatQaFLaFLaFLaFLaFLaFLaFLaxeatSatSatSatTatSatSatSarFatVatUatXatWajbaaaaaaaaaaaaaabamWaaaappaoKapqaabaabappannapqaabaabappannapqaabaabappannapqaabamWaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaasJaprapraprapwapraprapxapraprasKaaaaaaaaaalwaaaarLarMarMarMarMarNasbarUasLasLasLasLasMaaaalwaaaaaaaaaaaaaaaaaaaaaabpaaaaaaaaaaaaaaaakBakBakBakBakBakBakBatYauaatZakWaubaudapFaxTaufawKaugauhawKawKawKawKaujaukaucatdaulatdaucaunaumawHawHawHawHauAauoawVauEauEawXauEauFauEauEaFLauGauHaFLauHauIaFLauJauLauKauNauMauPauOauQajbajbajbajbajbajbaaaaaaaaaaaaaaaamWaaaappaoKapqaaaaaaappaoKapqaaaaaaappaoKapqaaaaaaappaoKapqaabaqpaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaalwaabatFatFatFatFatFaaaasbaaaatFatFatFatFatFaabalwaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaakBauRauTauSakWasNauVapGauXauWaucauYavaauZavcavbauZavdavfaveavhavgaviaveavjaAzavlavkavmavlavoavnavzavravBavAaAFavCaCyavDaFLauIavFavEavFauIaFLavGavHayVayVavIavKavJavLaHEaaaaabaaaaaaaaaaaaaaaaaaaaaaaaamWaaaappaoKapqaaaaaaappaoKapqaaaaaaappaoKapqaaaaaaappaoKapqaabamWaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaalwaaaaaaaaaaabaaaaaaaaaasbaaaaaaaaaaabaaaaaaaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaasSasUasTasWasVaaaaaaawBawBaudaudaudaudasOavNaucavOauWaucavPavRavQavTavSavUavdavfavVavXavWavZavYavjaAzawbawaawdawcawfaweawgaCyawhavAaAFawiawnawjaFLawAawDawCawEawAaFLawFawGayVawJawIawLawGawMaHEaabaabaaaaaaaaaaaaaaaaaaaaaaaaamWaaaappaoKapqaabaabappaoKapqaabaabappaoKapqaabaabappaoKapqaabamWaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaalwaabarXarXarXarXarXaaaasbaaaarXarXarXarXarXaabalwaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaatIatKatLatJatIatMatNatPawOawNasQasRawSatHauVaucawTauWaucawUawYawWaxaawZawWavdavfaxbaxdaxcaxfavYavjaAzaxpaxgauraxpaxsaxraxvaxtavBaxwaxyaxxaxAaxzaxCaxBaxEaxDaxFavFaxGawGawGawGaHEaHEaxIaxHaHEaHEaabaaaaaaaaaaaaaaaaaaaaaaaaaaaamWaabappaoKapqaaaaaaappaoKapqaaaaaaappaoKapqaaaaaaappaoKapqaabamWaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaawoawqawpawsawraaaawtawvawuawxawwapoaaaarLarMarMarMarMarNasbarUasLasLasLasLasMaaaalwaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaauvauwauxauuauzauyauBauyaxKaxJautaxMaudaudaudawKaxOaueawKaxPaxQawKaxSaxRawKayLavfaxUaxWaxVaxYaxXavjayMawHayaayeawHaygayfawVaynavBaypayqaCyaysayraFLaytayvayuayxaywaFLayyayAayzaHEaabaabaabaabaabaabaaaaaaaaaaaaaaaaaaaaaaaaaabamWaaaaabamUaabaaaaaaappaoKapqaaaaaaappaoKapqaaaaaaappaoKapqaabamWaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaxiaxjaxjaxjaxiaaaaxkaxlaxlaxlaxkalwaxnatFatFatFatFatFaaaasbaaaatFatFatFatFatFaabalwaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaatIavvavyavxatIatMatNatNayCayBauDayDaudayFayGaxuayIayHawKauYayJauZavcayKauZavdayOaxZayNaxZazuaxZazwaAzavlayPavmavlayQavnavzaAFavAayRayTaySayWayUaFLaFLaFLaFLaFLaFLaFLaxeaHEaHEaHEatGaxhaxhaxhdmoaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaqZaabaabaabappaoKapqaabaabappaoKapqaabaabappaoKapqaabamWaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaxiayjayjayjaxiaaaaxkaykaylaykaxkalwaaaaaaaaaaabaaaaaaaaaasbaaaaaaaaaaabaaaaaaaaaalwaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaatIawzawzawyatIaaaaaaayXayYauUauVayZaudazaazdazcazmazlawKazoazqazpavTaztazvaAsazyaxLavdaxLaAzaxLaAqazxazAazzawdazBazDazCazFazEazHazGazGazHazJazIawlazKazMazLawlaybaDRaycawlazNazPazOazRazQazTavMaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabaabaqZaqZaqZaabaaaaaaamUaabaabaabaabamUaabaabaabaabamUaabaaaamWaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaxiazeazgazhaxiaaaaxkazfazjaziaxkalwaabarXarXarXarXarXaaaasbaaaarXarXarXarXarXaabalwaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaauvaxoawzaxmatIatMatNazVauyawBaudaudaudaznazXazWazsazrawKazYazZawWaAcaAaawWaAdaAraxLaABaAtaATaxLaAqaBIaxpaAuaAvaxpaAwavnaxvaAyaACaAAaAEaADaAHasPawlaAIaAKaAJawlavqavqaIjaIqaydavqavqaxhaxhaxhdmoaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaqZazUaqZaqZaqZaqZaqZaqZaqZaqZaqZaqZaqZaqZaqZaqZaqZaaaaaaamWaaaaAfaAfaAgaAgaAgaAgaAgaAgaAfaAfaabaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaxiaAhazgazhaxiaaaaxkaAiaykaykaxkalwaaaarbarcarcarcarcarUasbasLasMasMasMasMasNaaaalwaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaatIaymawzawzayhauyayoaAMauCaAmaAnaAlaAnaApaApaANaApaAoaElaAOaAPawKaxSaARawKaBKaDhaAUaAVaxLaAXaAWaHraBaawHaBiayeawHaBraBpaBsaBsaBsaBsaBsawVaBuaBtawlaBvaBRaBvawlaBwavqavqavqavqavqaIsatGaupasQauqauqausaaaaaaaaaaaaaaaaaaaaaaabaabaabaqZasRatHaabaaaaabaabaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaaaamWaAfaAfaBdaBcaBeaBgaBhaBfaBjaBeaAfaAfaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaxiaAhazgazhaxiaaaaxkaBkaykaBlaxkaabaBmatFatFatFatFatFaaaasbaaaatFatFatFatFatFaabalwaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaatIazkazkazkatIatMaBAaBzaBBaAmaCaaAnaAnaBCaApaBDaBqaBoaElaBEaBFauZavcaBGauZaAdaxLaxLaBbaAZaBHaxLaxLazxavlaBLavmavlaBNaBMaBPaBOaBSaBQaBsaCcaCfaCeaZIaCgavqaSPavqavqavqavqavqavqavqavqavsavqavtavpavuavwaaaaaaaaaaaaaaaaaaaaaaabaaaaabaabauraabaabaaaaaaaaaaabaabaaaaaaaaaaaaaaaaaaaaaaaaaAfaAfaAfaAfaBUaBgaBVaBgaBVaBXaBgaBgaBgaBWaAfaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaxiazgazgazgaBYaaaaxkaBkaykaBlaxkalwaaaaaaaabaaaaabaaaaaaautaaaaaaaabaaaaabaaaaaaalwaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaAeaAkaAkaAkaAjaaaaaaaaaaaaaBnaAnaAnaAnaCiaCkaCjaCdaCbaElavPaCmaClavTaCnaCoavdaxLaEBaBJaEBaCpaEBaxLaAzazAaCrawdaCsateaCtaBsaCvaCxaCwaBsaCzaCBaCAaCCaZIaZIaCgavqavqaChawlbWpaIYbWpbWpatGavqawkauqauqawmaaaaaaaaaaaaaaaaaaaaaaaaaabaabaabazbaabaabaaaaaaaabaaaaabaabaaaaaaaaaaaaaaaaaaaaaaAfaCNaCOaCPaCMaCRaCQaCSaBgaBgazSaCVaBgaCWaAfaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaxiaAhazgazhaxiaaaaxkaAiaykaykaxkalwaaaarLarMarMarMarMarNasbarUasLasLasLasLasMaaaalwaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaatIaymawzawzayhauyayoaAMauCaAmaAnaAlaAnaApaApaANaApaAoaElaAOaAPawKaxSaARawKaBKaDhaAUaAVaxLaAXaAWaHraBaawHaBiayeawHaBraBpaBsaBsaBsaBsaBsawVaBuaBtawlaBvaBRaBvawlaBwavqavqavqavqavqaIsatGaupawkauqauqausaaaaaaaaaaaaaaaaaaaaaaabaabaabaqZawPawQaabaaaaabaabaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaaaamWaAfaAfaBdaBcaBeaBgaBhaBfaBjaBeaAfaAfaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaxiaAhazgazhaxiaaaaxkaBkaykaBlaxkaabaBmatFatFatFatFatFaaaasbaaaatFatFatFatFatFaabalwaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaatIazkazkazkatIatMaBAaBzaBBaAmaCaaAnaAnaBCaApaBDaBqaBoaElaBEaBFauZavcaBGauZaAdaxLaxLaBbaAZaBHaxLaxLazxavlaBLavmavlaBNaBMaBPaBOaBSaBQaBsaCcaCfaCeaZIaCgavqaSPavqavqavqavqavqavqavqavqavsavqavtavpavuavwaaaaaaaaaaaaaaaaaaaaaaabaaaaabaabawRaabaabaaaaaaaaaaabaabaaaaaaaaaaaaaaaaaaaaaaaaaAfaAfaAfaAfaBUaBgaBVaBgaBVaBXaBgaBgaBgaBWaAfaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaxiazgazgazgaBYaaaaxkaBkaykaBlaxkalwaaaaaaaabaaaaabaaaaaaaxqaaaaaaaabaaaaabaaaaaaalwaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaAeaAkaAkaAkaAjaaaaaaaaaaaaaBnaAnaAnaAnaCiaCkaCjaCdaCbaElavPaCmaClavTaCnaCoavdaxLaEBaBJaEBaCpaEBaxLaAzazAaCrawdaCsateaCtaBsaCvaCxaCwaBsaCzaCBaCAaCCaZIaZIaCgavqavqaChawlbWpaIYbWpbWpatGavqaxNauqauqawmaaaaaaaaaaaaaaaaaaaaaaaaaabaabaabayEaabaabaaaaaaaabaaaaabaabaaaaaaaaaaaaaaaaaaaaaaAfaCNaCOaCPaCMaCRaCQaCSaBgaBgazSaCVaBgaCWaAfaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaxiaCTazgazgaCXaaaaxkaCYaykaykaCZalwalwalwaabaabaabaabaDbaDaaDbaabaabaabaabalwalwalwaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaBnaDdaDcaCEaCDaCGaCFaCHaDiaElauYaCIawWaCKaCJawWaDeaDfaEBaCqaFFaDgaEBaDkaDjaxpaDlaDmaxpaDoaDnaBsaDpaDraDqaBsaDsaDNaDNaDNaDNaDPaDPaDPaDPaDPaDPcXKcXHaJccYNatGatGatGatGaaaaaaaaaabpaabaabaabaaaaabaaaaabaabaDSaDKaDSaabaabaaaaabaaaaaaaabaabaaaaaaaaaaaaaaaaaaaAfaDUaDTaDWaDVaDYaDXaBgaBgaBgaAbaEaaBgaEcaAfaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaxiaEbazgaEeaxiaaaaxkaEfaykaykaxkaabaaaaabaaaaaaaabaaaaDbaEgaEdaaaaaaaabaaaaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaEiaEiaEiaEiaEiaEiaEiaAmaElaElaElaDtaElaElaElaDuaAmaAxaAxaAxaAxaAxaAxaEBaEBaDvaCqaFFaDgaDvaDvaDvaEpaEpaEpaEpaDxaDwaBsaDyaDAaDzaBsaDsaDNaELaEMaEKaDPaENaDBaEOaEQaDPaJlcXHcXHcXHaJnaJmaJobWvaaaaaaaaaaabaabaaaaabaabaabaabaabaaaaDSaERaDSaaaaabaaaaabaaaaaaaaaaabaabaaaaaaaaaaaaaaaaAfaETaESaCPaEUaEWaEVaEXaBgaEZaALaFbaFaaAfaFdaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaFeaFfaFcaFfaFgaaaaFiaFhaykaFkaFiaabaaaaabaaaaaaaabaDbaDbaFjaFmaDbaaaaabaaaaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaEiaFlaFoaDCaDDaFvaFwaFsaDFaDEaDDaDGaFvaFvaDIaDHaFBaFAaFyaFyaFyaFyaFyaFyaFyaDJaDLaGraDMaEjaDOavqavqavqavqavqaBsaDQaEkaEhaEnaEmaBsaEoaDNaFTaFUaFPaDPaFVaEqaFWaFYaDPaJEaJpaJFcXHcXHcXHcXHbWraaaaaaaabaabaaaaaaaaaaaaaaaaabaabaDSaDSaFZaDSaDSaabaaaaabaaaaaaaaaaaaaabaabaaaaaaaaaaaaaAfaGbaGaaCPaAfaCPaCPaGdaGcaAfaAfaAfaAfaAfaAfaaaaabaaaaaaaaaaaaaaaabpaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabpaaaaaaaaaaFeaGfaFgaaaaaaaGgaFiaGeaFiaGhaabaaaaabaaaaaaaabaGjaGiaGlaGkaGjaGnaGnaaaaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaGoaGmaEraGpaEtaEsaEuaEsaEvaEsaExaEwaGraGraEzaEyaGraGraGraGraGraGraGraGraGraECaEEaEDaEGaEFaEHaAQaASaEIaASaAQaBsaEJaFnaEPaFnaFnaBsaDsaDNaFpaGNaFqaDPaFraGRaGQaEQaDPaJGcXHaKycXHcXHbYecWGbWraaaaabaabaaaaaaaaaaaaaaaaaaaaaaabaGTaGUaGSaGWaGTaabaaaaabaaaaaaaabaaaaaaaabaabaaaaaaaGXaAfaCPaAfaCPaGYaGVaHbaMzaGYaGYaGYaIEaGYajcaMraaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabpaaaaaaaaaaFeaGfaFgaaaaaaaGgaFiaGeaFiaGhaabaaaaabaaaaaaaabaGjaGiaGlaGkaGjaGnaGnaaaaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaGoaGmaEraGpaEtaEsaEuaEsaEvaEsaExaEwaGraGraEzaEyaGraGraGraGraGraGraGraGraGraECaEEaEDaEGaEFaEHaAQaASaEIaASaAQaBsaEJaFnaEPaFnaFnaBsaDsaDNaFpaGNaFqaDPaFraGRaGQaEQaDPaJGcXHaKycXHcXHbYecWGbWraaaaabaabaaaaaaaaaaaaaaaaaaaaaaabaGTaGUaGSaGWaGTaabaaaaabaaaaaaaabaaaaaaaabaabaaaaaaaGXaAfaCPaAfaCPaGYaAYaHbaMzaGYaGYaGYaIEaGYajcaMraaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaaaaaaaaaaaaaaaaaaaaaaGnaGnaGnaGnaGnaGnaGnaGnaabaabaGjaHcaHaaGZaGjaHdaGnaaaaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaGoaHearTaHfaFuaFtaFxaHnaFzaHnaFCaHqaHnaHnaFEaFDaHnaHnaHnaHnaHnaHnaHnaFHaFJaFIaFKaHvaHxaEjaFMaAQaFNaASaFOaAQaBsaBsaBsaBsaBsaBsaBsaFQaDNaHCaFUaFRaDPaFSaHGaFWaHHaDPbZQbYeaKBcXHcXHcXHcXIbWraabaabaaaaaaaaaaaaaaaaaaaaaaaaaabaGTaHKaHIaHJaGTaabaaaaabaaaaaaaabaaaaaaaGXaHNaGXaHNaGXaHbaGYaGYaGYaGYaGYaGYaGYaGYaGYaHOaGXaGYaJOaMraaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaaadmoaAYdmoaaaaaaaaaaGnaHSaHTaHSaHRaHMaHUaGnaaaaaaaGjaHVaHXaHWaIaaHSaGnaaaaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaIbaIcaIcaIeaIeaFXaLAaIhaIhaGqaLAaGsaIlaIiaIiaIlaGtaIlaIoaIoaIoaIoaIoaIoaImaIoaIoaInaIraIpaEjaGuavqaAQaAQaAQavqavqavqaydaGvaGwavqavqaGxaDNaIwaFUaGyaDPaGzaGRaGQaEQaDPcXIcXHaLYaKPcXHbYebZQbWvaabaabaaaaaaaaaaaadmoaBxdmoaaaaabaGTaIBaIAaICaGTaIFaIFaIFaIFaIFaHNaHNaHNaGXaIDaGYaHOaHPaMzaGYaMqaMqaMqaMqaMqaMqaMqaMqaMqaGXaMraMraMraaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaaaaIIaIGaIIaaaaaaaabaGnaIHaILaHSaHSaIJaHSaGnaIIaIIaGjaGjaIMaIKaIaaHSaGnaGnaIIaIIaIIaGnaGnaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaIbaIPaGAaGCaGBaGDaLAaGFaGEaGGaLAaGHaIlaIWaIZaGJaGIaHgaJaaJdaLZaJfaJeaJhaJgaJjaJiaJkaFFaFGaEjaGKavqavqavqavqavqavqavqavqavqavqavqavqaGLaGOaGMaHhaGPaDPaHiaHjaJyaJBaDPcWGbYeaMbaMaaODaODaODaODaODaODaODaaaaaaaaaaHNaJCaHNaaaaIFaGTaGTaJDaJHaGTaJIaGYaGYaGYaMzaJJaGYaJMaGXaGYaGYaGYaJKaMzaGYaMqaNkaNnaNmaMqaNpaNoaNqaMqaabaabaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaJPaJSaJQaaaaJRaJVaJTaabaabaIIaHSaIIaaaaaaaabaGnaJXaJYaJZaJWaJUaKaaGnaKbaHSaKdaKcaKfaKeaKeaKeaKeaKeaKeaKeaKeaKgaGnaaaaKhaaaaaaaaaaaaaaaaaaaaaaaaaIbaKkaHkaKmaKnaHlaLAaHmaKraHoaLAaGHaIlaKtaHYaKvaGIaHgaKqaKsaKsaKsaKsaKsaJgaKwaJiaFyaFFaFGaEjaFMaLPaLPaLPaLPaLPaHpaKOaKOaKOaKOaKOaKOaKOaDNaDNaLVaDNaDPaDPaHsaDPaDPaDPaMhaMeaMjcYKaODaKQaKQaKQaKQaKQaODaaaaaaaaaaHNaKJaKMaaaaIFaKRaKTaKSaKWaGYaGYaGYaMzaGYaMzaKXaGYaGYaGXaGYaKVaKUaKXaIEaGYaMqaOKaOLaOLaMqaOMaOJaONaMqaMraMraMraMraabaMraMraabaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaLdaLaaLbaLaaLdaLeaLfaLeaLdaabaIIaLgaLhaaaaaaaGnaGnaGnaGnaGnaLkaLiaLlaLjaLnaLmaLmaLoaLraLraLqaLpaGnaHSaGnaGnaGnaLsaGnaaaaabaaaaaaaaaaaaaaaaaaaabaabaIbaLuaLtaLwaLvaLxaLAaKraLyaHtaLAaGHaIlaLCaLEaHwaHuaHzaHyaHAaLHaKsaLIaLIaJgaKsaJiaFyaFFaLJaEjaHBaLPaHFaHDaLNaLPaMwaAGaMIaMHaMLaMJaIdaHZaIkaIgaIyaIvaIUaITaNcaNbaIXaKObWrbWraNUaKOaODaKQaKQaKQaKQaKQaODaabaabaKOaHNaMfaMgaHNaIFaMiaGYaMkaGYaHbaGYaGXaGXaMmaGXaGXaMnaMzaMzaKXaMoaMlaGYaGXaGYaPOaMqaPPaPTaPSaPUaOKaPWaMqaabaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaMsaLaaMpaLaaMsaLeaMtaLeaMsaGnaIIaMuaEAaIIaIIaGnaHSaHSaHSaHSaHSaHSaHSaLkaLsaGnaGnaGnaGnaGnaMxaGnaGnaHSaMyaGnaMvaLsaGnaGnaGnaaaaaaaaaaaaaaaaMAaMAaMAaMAaMAaMAaMAaMAaMAaLAaItaMCaIuaLAaGHaIlaIxaJbaINaJvaHgaMMaIQaIOaMPaMOaMRaMQaMSaJiaFyaFFaFGaEjaFMaLPaISaIRaLNaLPaKuaMVaMVaMVaMVaMVaMVaMVaLQaKxaLRaOiaOiaOiaLSaOiaPAaOuaOAaOzaOBaJqaODaKQaKQaKQaKQaKQaODaKOaKOaKOaGYaNfaNgaJIaMzaMoaKXaMkaGYaNhaGVaNlaIEaGYaGYaGYaGYaNiaGYaGYaMoaNjaGYaMnaPRaPQaQSaQQaQUaQTaQVaQYaQWaMqaMraMraMraaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaMsaCLaNtaCUaMsaDZaNyaEYaNwaNxaHSaNzaNCaNAaMyaNBaHSaGnaGnaGnaGnaGnaGnaGnaLsaGnaByafOaBTaGnaNEaNFaNHaHSaNBaGnaNAaNIaKeaKgaIIaaaaaaaaaaaaaaaaHLaNJaNMaNLaNOaNNaNPaMAaiWaLAaJraNQaIVaLAaJsaIlaJuaJtaJwaLTaHgaNWaJzaJxaKiaJAaKlaKjaKoaJiaFyaFFaFGaEjaFMaLPaOjaKpaLNaLPaLUaMVaMNaMNaMNaMVaMVaMVaMVaMVaMTaOoaMUaMUaOsaMVaSQaMVaMVaRRaMVaPvaRVaKQaKQaKQaKQaKQaRVaTbaTdaTcaXiaTeaOCaGYaMzaOFaGYaOEaOGaOGaOGaOGaOHaOGaOIaGYaGYaGYaGYaGYaGYaGYaGYaMzaRuaPOaMqaRSaRYaOLaOLaOLaRZaMqaJNaJLaGXaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaMsaOPaOQaORaMsaOPaOQaORaNwaKaaHSaOSaHSaHSaHSaHSaHSaGnaOTaOOaOVaOUaOWaGnaLsaGnafOaOXaByaOYaPaaOZaGnaPcaGnaGnaGnaGnaPcaLsaIIaaadmodmodmodmoaHQaNJaPeaPbaPfaPhaPiaPjaMAaLAaLAaLAaLAaLAaJsaIlaIlaIlaIlaIlaIlaKzaKAaIoaIoaIoaIoaIoaIoaIoaPraFFaPwaEjaFMaLPaOnaKpaLNaLPaKuaMNaMWaMWaMXaMNaMVaMVaMYaMVaNaaMZaNdaNdaNeaMVaSQaMVaMVaMVaMVaKCaODaKQaKQaKQaKQaKQaODaPLaPMaKOaGYaVJaMzaMzaMzaHPaHPaGXaGXaGXaMzaMzaMzaGXaPNaPKaGXaMzaMzaGXaMzaMzaGXaGXaRTaMqaTjaQRaTlaTkaTmaQRaTnaMqaKZaKYaGXaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaaadmoazbdmoaaaaaaaaaaGnaHSaHTaHSaHRaHMaHUaGnaaaaaaaGjaHVaHXaHWaIaaHSaGnaaaaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaIbaIcaIcaIeaIeaFXaLAaIhaIhaGqaLAaGsaIlaIiaIiaIlaGtaIlaIoaIoaIoaIoaIoaIoaImaIoaIoaInaIraIpaEjaGuavqaAQaAQaAQavqavqavqaydaGvaGwavqavqaGxaDNaIwaFUaGyaDPaGzaGRaGQaEQaDPcXIcXHaLYaKPcXHbYebZQbWvaabaabaaaaaaaaaaaadmoaBxdmoaaaaabaGTaIBaIAaICaGTaIFaIFaIFaIFaIFaHNaHNaHNaGXaIDaGYaHOaHPaMzaGYaMqaMqaMqaMqaMqaMqaMqaMqaMqaGXaMraMraMraaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaaaaIIaIGaIIaaaaaaaabaGnaIHaILaHSaHSaIJaHSaGnaIIaIIaGjaGjaIMaIKaIaaHSaGnaGnaIIaIIaIIaGnaGnaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaIbaIPaGAaGCaGBaGDaLAaGFaGEaGGaLAaGHaIlaIWaIZaGJaGIaHgaJaaJdaLZaJfaJeaJhaJgaJjaJiaJkaFFaFGaEjaGKavqavqavqavqavqavqavqavqavqavqavqavqaGLaGOaGMaHhaGPaDPaHiaHjaJyaJBaDPcWGbYeaMbaMaaODaODaODaODaODaODaODaaaaaaaaaaHNaJCaHNaaaaIFaGTaGTaJDaJHaGTaJIaGYaGYaGYaMzaJJaGYaJMaGXaGYaGYaGYaJKaMzaGYaMqaCLaCUaNmaMqaNpaNoaNqaMqaabaabaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaJPaJSaJQaaaaJRaJVaJTaabaabaIIaHSaIIaaaaaaaabaGnaJXaJYaJZaJWaJUaKaaGnaKbaHSaKdaKcaKfaKeaKeaKeaKeaKeaKeaKeaKeaKgaGnaaaaKhaaaaaaaaaaaaaaaaaaaaaaaaaIbaKkaHkaKmaKnaHlaLAaHmaKraHoaLAaGHaIlaKtaHYaKvaGIaHgaKqaKsaKsaKsaKsaKsaJgaKwaJiaFyaFFaFGaEjaFMaLPaLPaLPaLPaLPaHpaKOaKOaKOaKOaKOaKOaKOaDNaDNaLVaDNaDPaDPaHsaDPaDPaDPaMhaMeaMjcYKaODaKQaKQaKQaKQaKQaODaaaaaaaaaaHNaKJaKMaaaaIFaKRaKTaKSaKWaGYaGYaGYaMzaGYaMzaKXaGYaGYaGXaGYaKVaKUaKXaIEaGYaMqaDZaOLaEYaMqaGVaHLaNkaMqaMraMraMraMraabaMraMraabaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaLdaLaaLbaLaaLdaLeaLfaLeaLdaabaIIaLgaLhaaaaaaaGnaGnaGnaGnaGnaLkaLiaLlaLjaLnaLmaLmaLoaLraLraLqaLpaGnaHSaGnaGnaGnaLsaGnaaaaabaaaaaaaaaaaaaaaaaaaabaabaIbaLuaLtaLwaLvaLxaLAaKraLyaHtaLAaGHaIlaLCaLEaHwaHuaHzaHyaHAaLHaKsaLIaLIaJgaKsaJiaFyaFFaLJaEjaHBaLPaHFaHDaLNaLPaMwaAGaMIaMHaMLaMJaIdaHZaIkaIgaIyaIvaIUaITaNcaNbaIXaKObWrbWraNUaKOaODaKQaKQaKQaKQaKQaODaabaabaKOaHNaMfaMgaHNaIFaMiaGYaMkaGYaHbaGYaGXaGXaMmaGXaGXaMnaMzaMzaKXaMoaMlaGYaGXaGYaPOaMqaNnaPTaPSaOJaDZaOKaMqaabaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaMsaLaaMpaLaaMsaLeaMtaLeaMsaGnaIIaMuaEAaIIaIIaGnaHSaHSaHSaHSaHSaHSaHSaLkaLsaGnaGnaGnaGnaGnaMxaGnaGnaHSaMyaGnaMvaLsaGnaGnaGnaaaaaaaaaaaaaaaaMAaMAaMAaMAaMAaMAaMAaMAaMAaLAaItaMCaIuaLAaGHaIlaIxaJbaINaJvaHgaMMaIQaIOaMPaMOaMRaMQaMSaJiaFyaFFaFGaEjaFMaLPaISaIRaLNaLPaKuaMVaMVaMVaMVaMVaMVaMVaLQaKxaLRaOiaOiaOiaLSaOiaPAaOuaOAaOzaOBaJqaODaKQaKQaKQaKQaKQaODaKOaKOaKOaGYaNfaNgaJIaMzaMoaKXaMkaGYaNhaAYaNlaIEaGYaGYaGYaGYaNiaGYaGYaMoaNjaGYaMnaPRaPQaQSaQQaQUaQTaOMaQYaQWaMqaMraMraMraaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaMsaONaNtaPPaMsaPUaNyaPWaNwaNxaHSaNzaNCaNAaMyaNBaHSaGnaGnaGnaGnaGnaGnaGnaLsaGnaByafOaBTaGnaNEaNFaNHaHSaNBaGnaNAaNIaKeaKgaIIaaaaaaaaaaaaaaaaQVaNJaNMaNLaNOaNNaNPaMAaiWaLAaJraNQaIVaLAaJsaIlaJuaJtaJwaLTaHgaNWaJzaJxaKiaJAaKlaKjaKoaJiaFyaFFaFGaEjaFMaLPaOjaKpaLNaLPaLUaMVaMNaMNaMNaMVaMVaMVaMVaMVaMTaOoaMUaMUaOsaMVaSQaMVaMVaRRaMVaPvaRVaKQaKQaKQaKQaKQaRVaTbaTdaTcaXiaTeaOCaGYaMzaOFaGYaOEaOGaOGaOGaOGaOHaOGaOIaGYaGYaGYaGYaGYaGYaGYaGYaMzaHQaPOaMqaRSaRuaOLaOLaEYaRZaMqaJNaJLaGXaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaMsaOPaOQaORaMsaOPaOQaORaNwaKaaHSaOSaHSaHSaHSaHSaHSaGnaOTaOOaOVaOUaOWaGnaLsaGnafOaOXaByaOYaPaaOZaGnaPcaGnaGnaGnaGnaPcaLsaIIaaadmodmodmodmoaRYaNJaPeaPbaPfaPhaPiaPjaMAaLAaLAaLAaLAaLAaJsaIlaIlaIlaIlaIlaIlaKzaKAaIoaIoaIoaIoaIoaIoaIoaPraFFaPwaEjaFMaLPaOnaKpaLNaLPaKuaMNaMWaMWaMXaMNaMVaMVaMYaMVaNaaMZaNdaNdaNeaMVaSQaMVaMVaMVaMVaKCaODaKQaKQaKQaKQaKQaODaPLaPMaKOaGYaVJaMzaMzaMzaHPaHPaGXaGXaGXaMzaMzaMzaGXaPNaPKaGXaMzaMzaGXaMzaMzaGXaGXaRTaMqaTjaQRaTlaTkaTmaQRaTnaMqaKZaKYaGXaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaPVaSdaSdaLdaMsaPZaQaaLdaMsaPZaQaaLdaGnaLkaGnaGnaGnaGnaGnaHSaGnaHSaQbaPXaHSaHSaGnaLsaGnaByaabaBZaGnaJYaOZaGnaQeaQcaGnaNAaKaaGnaLsaMAaMAaQgaQgaQgaQgaQgaQgaQgaQgaQgaPiaPiaPjaQhaQiaQjaQkaQlaQdaKEaKDaKFaKFaKFaKFaKFaKGaKIaKHaKFaKFaKFaKKaKKaKLaLzaKNaLBaEjaHBaLPaQzaKpaLNaLPaKuaMNaMWaNRaNSaMNaMVaMVaMVaMVaNTaMZaNdaNdaNeaMVaSQaMVaMVaMVaMVaKCaODaKQaKQaKQaKQaKQaODaQHaPMaKOaGYaVJaGYaQBaMzaQCaHOaQLaQJaHbaGXaOFaHbaGXaQKaGYaGXaQMaGYaGXaQOaQNaQPaOGaRWaMqaUgaQRaUiaUhaUiaQRaUjaMqaMzaMzaGXaGXaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaQXaRbaoOaSbaMcaMdaMdaRaaMdaMdaMdaRdaRcaReaReaReaReaRfaGnaHSaGnaRhaRgaRiaHSaRjaPcaLsaGnaGnaGnaGnaGnaGnaPcaGnaHSaRiaLkaHSaHSaHSaRkaRmaRlaRnaRnaRnaRnaRoaRnaRnaRpaRqaRlaRsaRraRraRraRraRraRraRraRtaRwaRwaRwaRwaRxaRwaRwaLDaRwaRwaRxaRwaRwaRwaRwaRzaLFaLKaLGaLLaLPaRDaLMaLWaLOaNVaMNaNYaNXaOeaMNaMVaMVaMVaMVaMTaRMaOpaOpaRGaMVaVLaVKaMVaMVaMVaPvaRVaKQaKQaKQaKQaKQaRVaVMaYwaVObfQaZzbafbafbafbafbbYaOGaOGaOGaOGaOGaOGaOGaKSaGYaGYaGYaGYaMnaGYaGYaMkaGYaRXaUYaUYaMqaMqaMqaMqaMqaMqaUfaQIaOFaJMaGXaabafOaMraMraabaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaZPaSdaSdaMBaSfaMDaMEaSiaSjaQZaSaaSjaSeaScaSjaSjaSnaGnaHSaGnaSoaHSaHSaSpaSqaGnaNIaKgaHSaHSaHSaHSaHSaHSaPcaSsaHSaGnaNxaNxaGnaSraMAaSuaSwaSvaSvaSvaSxaSvaSvaSvaSyaSuaSzaSAaSAaSAaSAaSAaSAaSAaPiaRwaSBaSCaSEaSgaSkaShaSmaSlaSJaSDaSLaSCaSMaRwaSNaFFaSOaEjaMFaLPaSRaMGaSTaSSaOqaWHaOyaOraOraPkaPBbhiaPCbgsbhhbhibhibhibhibhibhjaMVaMVaMVaMVaThaODaKQaKQaKQaKQaKQaKOaKOaKOaKOaHbaMzaMzaIEaGXaGXbBOaMzaGXaTgaMzaGXaIEaGXaMkaQIaMzaGXaIEaGXaKXaUUaMkaGYaTiaGXaHOaHbaGYaGYaVTaVhaVUaVUaWZaGYaGYaGXaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabaMsaSdaRUaSdaToaSfaSfaTpaSdaRUaSdaTqaTsaTraTtaGnaHSaPcaPcaGnaGnaGnaTuaTuaTuaIfaTuaTuaTuaTuaTuaHSaGnaGnaGnaGnaGnaGnaGnaSraKbaStaaaaabaaaaabaaaaabaaaaabaaaaSuaSzaSAaTwaTvaTyaTxaTAaSAaPiaRwaTzaTzaTCaTBaTEaTDaTFaTDaMKaTGaTIaTzaTzaRwatcaFFaTJaEjaMFaLPaOnaKpaLNaLPaPDbhkbhtbhpaPFaPEaQAbhzbitbisbiTbiubjkbjcbjXaYvbkKbkIaQEaOvaOwaKOaODaKQaKQaKQaKQaKQaKOaTXaUaaMzaGXaMzaLcaGYaGXaLcbBOaGXaTZaGYaGXaUbaGYaMzaUdaUcaGXaUeaGYaMzaIEaIEaMkaGYaXbaXaaXaaXaaXaaXaaXdaGYaGYaGYaXeaGYaGYaIFaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaLdaLdaSdaOQaSdaUlaUkaUnaUmaSdaOQaSdaSdaLdaUoaUpaGnaHSaHSaHSaHSaHSaHSaTuaUuaUvaUqaUxaUsaUzaUuaTuaUwaUAaUyaUyaUyaUyaUyaUyaUBaNxaStaabaUEaUEaUEaUEaUEaUEaUEaabaSuaSzaSAaUFaUCaUHaUDaUFaSAaPiaRwaUJaUJaUJaUGaULaSCaUIaSCaULaUKaUJaUJaUJaRwaSNaFFaUMaEjaMFaLPaOjaKpaLNaLPaQFbuMaUQaUQaUQaUQaUQaUQaUQaNZaUQaUSaUSaUSaUSaUSaOaaGXaPGaPIaPIbJUaODaKQaKQaKQaKQaKQaKOaURaUaaMzaUTaGXaGYaGYaGXbJVbLCaMzaGYaGYaGXaGYaGYaMzaMkaGVaGXaGYaGYaMzaUWaGYaMkaGYaXgaQLbazbazbazbazbazaYPaYPaYPaQDaYPaYPaYPaYRaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaSdaRUaSdaSdaSdaSdaSdaSdaRUaSdaUZaLdaUVaUXaVcaVcaVcaVcaVcaVcaVaaTuaUuaVeaUqaVfaVeaVeaUuaTuaVgaVbaViaViaViaViaViaViaViaViaVjaaaaUEaVkaVdaVmaVlaZqaVnaaaaSuaSzaSAaVpaVoaVraVqaUFaSAaPiaRwaVsaVsaTCaVtaVuaTDaTFaTDaVuaVvaVwaTzaTzaRwaSNaFFaSOaEjaObaLPaOdaOcaLNaLPaQGbuMaUQaVzaVAaVCaVCaUQaVBaOfaVDaUSbxyaVFaVHaUSaOgaGXaPGaPIaPHaPJaKOaKOaKOaKOaKOaKOaKOaVNbLGaMzaMzaGXaGXaMzaMzbLHaVPaMzaGXaHPaGXaGXaMzaMzaVRaVQaGXaGXaGXaQLaUWaGYaMkaGYaRXaGYbazaXjaXoaXkaYxaYPaYAaYzaYCaYBaYGaYFaYRaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaLdaLdaSdaOQaSdaUlaUkaUnaUmaSdaOQaSdaSdaLdaUoaUpaGnaHSaHSaHSaHSaHSaHSaTuaUuaUvaUqaUxaUsaUzaUuaTuaUwaUAaUyaUyaUyaUyaUyaUyaUBaNxaStaabaUEaUEaUEaUEaUEaUEaUEaabaSuaSzaSAaUFaUCaUHaUDaUFaSAaPiaRwaUJaUJaUJaUGaULaSCaUIaSCaULaUKaUJaUJaUJaRwaSNaFFaUMaEjaMFaLPaOjaKpaLNaLPaQFbuMaUQaUQaUQaUQaUQaUQaUQaNZaUQaUSaUSaUSaUSaUSaOaaGXaPGaPIaPIbJUaODaKQaKQaKQaKQaKQaKOaURaUaaMzaUTaGXaGYaGYaGXbJVbLCaMzaGYaGYaGXaGYaGYaMzaMkaAYaGXaGYaGYaMzaUWaGYaMkaGYaXgaQLbazbazbazbazbazaYPaYPaYPaQDaYPaYPaYPaYRaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaSdaRUaSdaSdaSdaSdaSdaSdaRUaSdaUZaLdaUVaUXaVcaVcaVcaVcaVcaVcaVaaTuaUuaVeaUqaVfaVeaVeaUuaTuaVgaVbaViaViaViaViaViaViaViaViaVjaaaaUEaVkaVdaVmaVlaVnaUEaaaaSuaSzaSAaVpaVoaVraVqaUFaSAaPiaRwaVsaVsaTCaVtaVuaTDaTFaTDaVuaVvaVwaTzaTzaRwaSNaFFaSOaEjaObaLPaOdaOcaLNaLPaQGbuMaUQaVzaVAaVCaVCaUQaVBaOfaVDaUSbxyaVFaVHaUSaOgaGXaPGaPIaPHaPJaKOaKOaKOaKOaKOaKOaKOaVNbLGaMzaMzaGXaGXaMzaMzbLHaVPaMzaGXaHPaGXaGXaMzaMzaVRaVQaGXaGXaGXaQLaUWaGYaMkaGYaRXaGYbazaXjaXoaXkaYxaYPaYAaYzaYCaYBaYGaYFaYRaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaVVaVSaVXaVSaVSaVYaVZaVSaVSaVXaWaaVWaLdaToaWbaVcaWdaWcaWfaWeaWhaWgaTuaUuaVeaUqaWjaVeaVeaUuaTuaWkaWlaWiaWnaWmaWoaWqaWraWpaWtaVjaabaUEaWuaWsaWwaWvaWxaUEaabaSuaSzaSAaWzaWAaWyaWCaWBaSAaPiaRwaSBaSCaWEaWDaULaSCaWFaSCaULaWGaSLaSCaSMaRwaSNaFFaWJaEjaMFaLPaISaOhaLNaLPaRvbuUaUQaWKaVEaVEaVEaWLaOlaOkaOmaUSaWQaWPaOxaOtaPgaGXaRPaRQaRQaRIaGXaJMaGXaGYaQIaHPaLcaWUaWXaWWaWYaGXaNhaGYaQIbBOaGYaGXaaaaGXaGYaGYaYEbbIaYIbbIaYKaYJaYJaYJaYJaYJbamaYObapbanbarbaqbatbasbawaYPbaAbayaYCbaBbaCbaCaYRaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaVVaWaaVSaXmaXraXsaXtaXuaXvaXwaXxaXyaXzaXpaXnaSdaToaXqaVcaXBaXAaXFaXGaXFaXCaTuaXIaVeaXDaXHaXEaXHaXJaXLaXKaXMaXQaXQaXQaXQaXQaXQaXNaXSaVjaaaaUEaXOaWsaXPaWvaXRaUEaaaaSuaSzaSAaXTaXXaXVaXUaYaaSAaPiaRwaXWaXWaTCaXYaVuaTDaXZaTDaVuaYbaTIaTzaTzaRwaYcaIraYhaEjaMFaLPaLPaLPaLPaLPaPlaRJaPnaPmaPoaUQaUQaUQaUQaUQaUQaUSaPpaZVaPqaUSaOgaGXaGXaGXaGXaGXaGXaGYaGXaGYaHPaHPaGXaGXaGXaYnaGXaGXaGXaGXaGYbBOaWVaHNaabaHNaGYaYsbdHaYuaYybaDbaEbaubaubaubauaGXbaFaGXbazbazbazbazbazbaIbazbazbazbaybcgaXcbaMaXhaYRaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaXpaYMaYLaYNaXzaYZaXsaYZaXsaYZaXsaYZaXzaYVaYTaSdaToaYWaVcaYYaYXaZfaZaaZhaZbaTuaZjaUraZcaZlaZmaZnaZdaTuaZeaZgaXQaXQaXQaXQaXQaXQaXNaZraVjaabaUEaZkaZiaZpaZobEhaUEaabaSuaSzaSAaZsaZyaZtaZAaZuaSAaPiaRwaUJaUJaUJaYpaULaSCaUIaSCaULaZvaUJaUJaUJaRwaZxaZFaZGaEjaPtaPsaPsaPsaPsaPuaPxaPvaUQaPyaPzaUQaQmaQfaQnaUQaQoaUSaZDaZVaZEaUSaQpaZKaQqaZNaZNaZKaZXaZWaZWaZWaZWaZWaQxaZYaZWbaabacbabbaebadbagbMgbaibahbajbahbalbakaVJaGXbaubaubcmbaubavbaobaxaGXbcnaHObazbcqbcwbcubcAbcxbcCbcBbazbcFbdZbdYbegbedaXlaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaXpaYMaYLaYNaXzaYZaXsaYZaXsaYZaXsaYZaXzaYVaYTaSdaToaYWaVcaYYaYXaZfaZaaZhaZbaTuaZjaUraZcaZlaZmaZnaZdaTuaZeaZgaXQaXQaXQaXQaXQaXQaXNaZraVjaabaUEaZkaZiaZpaZoaZqaUEaabaSuaSzaSAaZsaZyaZtaZAaZuaSAaPiaRwaUJaUJaUJaYpaULaSCaUIaSCaULaZvaUJaUJaUJaRwaZxaZFaZGaEjaPtaPsaPsaPsaPsaPuaPxaPvaUQaPyaPzaUQaQmaQfaQnaUQaQoaUSaZDaZVaZEaUSaQpaZKaQqaZNaZNaZKaZXaZWaZWaZWaZWaZWaQxaZYaZWbaabacbabbaebadbagbMgbaibahbajbahbalbakaVJaGXbaubaubcmbaubavbaobaxaGXbcnaHObazbcqbcwbcubcAbcxbcCbcBbazbcFbdZbdYbegbedaXlaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaZaXsaXsaVXaXzaYZaXsaYZbbaaYZaXsaYZaXzaYVaYTaSdaTobaJaVcaVcbaKaUtaIzaUtaVcaTuaTuaTuaTubaSbaPbbhbbbaTubbjbbcbblaXQaXQbbmaXQbbebbdbbpaVjaaaaUEaUEbbqbbfbbqaUEaUEaaaaSuaSzaSAbbibbgbbkaZAbbnaSAaPiaRwaSBaSCbboaWDaULaSCaUIaSCaULaWGbbxaRwaRwaRwbbrbbzbbtbbsbbCatGatGatGbbEbbFbbvbbuaUQbbwaVEaUQbbJaUQbbKaUQbbLaQrbbBbbAbbHbbGbbUbbIaQtbbNbbQbbPbbRbbQbbQaLXbbQbbIbbTbbIaXfbbUbbIbbVbbXaSGbbZaZZbcbbcabcdbccbcfbcebfnbaubaubcobekbchbcibcsbcjaGXbaFbelbazbeqbetberbevbeubczbczbewbcDbfUbfSbfSbfSaYRaabaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaXpbcrbcNaYNaXzaYZaXsaYZaXsaYZaXsaYZaXzaYVaYTaSdaTobcvbctaNraNsaNuaNuaSfbcGbcMbcVbcWbcXbcPbcOaVebcQaTubdbbcRbddbdebcTbdgbdhaNvaNDbdkaVjaaaaabaaabcYbcZbcYaaaaabaaaaSuaSzaSAbdcbdabdjbdfbdraSAaPiaRwbdmbdlaTCaZwbdoaTDbdpaTDbdsaZQbdzaRwbdubdtbdvbdDbdxbdwbbDbjMaaaaaabbEbdIbdBbdAaUQbdCbdEaVEaVEbdNaVEaVEaVEbdOaUSbdFaUSbdQaUSaUSaQuaUSbdTbdUbdKbdJbdMbdLbdTaNGbeabebbecbebbebbebbebbdSbeebebbefbdVbdWbeibebbdXaGYbaubtlbcpbfVbembenbeobepaGXbaFbfWbazbfXbcxbgabcxbckbczbczbggbcDbybbgibgibgRaYQaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabehbejaVSaXmaXzaXsbeGbesaXsaXsbexbeGaXzaXpbeyaSdaTobeEbezbeMaRKbeMbeMbeMbeMbeMbeHaSfaTubePbeQbePaTuaTubeRbeIbeRaViaViaViaVibeRbeJbeUaVjbeLbeKbeKbeNbeObeNbeKbeKbeSaSubfaaSAbeTaSAbeWbeVbfeaSAbffaRwaRwaRwaRwbfgbfhbeXbeYbeXbfhbfgaRwaRwbeZbdDbdDbdDbdDbfbbdydcobfobfpbbEbfqbdBbfiaUQaUQaUQaUQaUQaUQaUQaUSaUSbdObfsbftbfkbfjaQvaRLaSUaRNbdTbfAbfvbfCbfwbfEbdTbfxbfybfHbfzbfHbfJbfKbfMbfBbfFbfDbfIbfGbfNbfLbebbfObfQbfPbhKbfRbfVbfYbfZbeobfTaGXbhObhNbhUbhSbhXbhWbhWbhYbczbczbggbcDbcDbgibhZbgiaYQaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaYDaYUaYHaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa @@ -9014,37 +9015,37 @@ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaSdblBaSfblEbmSbnabnibmVbndbnibnfbnebnibnibnkbnjboNboMbnnbnnbnnbnobnnbnpbnuaMsbnvbnwbnqblMbnybnrbnAbnBbnCbnDbnsbnFbnGbnHbnIbnJblMbnKbnLblRbnxbntbnzblTbnEbnQbnMblTbnSbnTbnNbnSbnSbnSbnObgSbnPbmbaaaaaaaaaaaaaaaaaaaaabmcbnUbnRbnWbnVbnYbnXboaaYfbocaCubohbmcaaaaaaaaaaaaaaaaaaaaabmibodbhqboeaUSbokbmlbmqbmqbmqbmqbmqboSboUbmqbmqbmqbogbofbofboibonbojbopbooborboqbosbebboubotboBboAboAboBbowbovbebbdXaGYbauboFboFbcpbjNblkbcpboGboGbaubauboybauaYPbmIblnbloboJboJboJblnblobmKaYPaYRaYRaaaaabaabaabaabaabbEGbEGbEGbmPbmLbmRbEGbEGaaaaaaaaabicbikbilbeCbeCbimbinbeCbicaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaSdboLboPboLboLboLboLboLboLboPboLboLboQaSfboRbgGbwxaSfbpFaSfboTboXboYboVboWaMsbnwbnwboZblMbpabnDbnDbnDbnDbnDbnsbpdbnDbnDbnDbpeblMbnKbpfblRbpbbphbpiblTbpjbpcbpgblTbplbpkbpmbppbpnbnTbnObgSbnPbmbaaaaaaaaaaaabmcbmcbmcbmcbprbpobptbpqbpubpsbpwaYgbpzbpxbpBbmcbmcbmcbmcaaaaaaaaaaaabmibodbhqbpAbpybpHbpGbpJbpIbpHbpKbqhbpMbqjbqibqkbmqbpNbpLbofbpObpPbofbpRbpQbpTbpSbofbpWbpVbpUboBboAboAboBbpXbqabebbdXaTgbaublpbcpbljbjNblkbljbcpbcpbpYbqcbcpbqdaYPbmTbmpbqgboJboJboJbmpbqgbcDbmUaYQaabaabaabaaaaaaaaaaabbEGbnZbmZbozbolboEboCbEGaaaaYDbjCbjGbjCbjCbjCbjHbjCbjJbjCbjGbjCaYHaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaLdaLdaSdaSdaSdaSdaSdaSdaSdaSdaSdaLdaMsbgGbqqbqrbqrbqrbqrbqrbqrbqsbqrbqrbqraMsbnwbnKbqtblMbqubnDbnDbqvbqwbqxbqybqvbnDbnDbnDbqzblMbnKbnLblRbqAbqBbqCblTbqDbqEbqFblTbqGbqHbqIbqJbqKbnTbqLbqMbnPbmbbmbbqNbmcbmcbmcbqObqQbqPbqRbqSbqSbqTbqUbqSbqVaYibqWbqXbqYbqZbrbbrabmcbmcbmcbqNbmibmibodbhqbhqaUSbrfbrebqibrgbmqbrhbribmqbshbrHbqkbmqbogbofbofbrjbrlbrkbrnbrmbrpbrobofbcSbpVbrrboBboAboAbrsbrubrtbebbdXaGYbaubrwbrwbrxbjNblkbrybcpbcpbrzbcpbrAbrBaYPboHbpCboObpEboJbqebpZbqlbqfbgfaYRbEGbEGbEGbjRbjRbjRbEGbEGbrdbrcbrCbrvbrEbrDbEGaaabicbmXblubmYbmYblDbeCblCblDblAblvblCbicaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacMwbrObrObrQbrObrObrObrRbrObrObrPaabaSdaUlaMEbrSbqrbrUbrVbrWbrXbrYbrTbsabrZbqrbscbsdbsbbseblMbsfbnDbnDbqvbqxbsgbsQbqvbnDbnDbsjbskblMbnKbnLblRblRbslblRblTbsibsnbsoblTbsmbqJbsqbqJbsrbnTbnObssbnPbgPbgPbspbsubdibmcbsvbptbswbqSbqSbsybsxbsAbszbsAaYjbsDbsCbsFbsEbsHbsGbmcbdPbsubsJbsLbsKbodbhqbhqbsNbmqbsZbmqbmqbmqbtnbtobmqbshbtrbqkbmqbpNbofbofbsRbsTbsSbsVbsUbsWbrobsXbebbqabrrboBboAboAboBbrubsYbebbtwbtebaubaubaubaubrFblkbthbtibcpbtjbtbbtlbrGaYPbrIbmpbqgbrJbxBbsMbmpbqgbcDaYPbEFbsPbsObtabzObtcbzObtdbEGbEGbtgbtmbtkbtpbtpbEGbEGbicbBTbDzbDzbDzbmQbeCblCbnbblAbeCbncbicaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacMwbtvbtybtCbtDbtDbtzbtDbtDbtDbtzbrQaSdaSdaSdaToboRbqrbrUbtFbtGbrUbtBbtAbtHbtEbqrbtLbtMbtIblQblMbtObtPbtKbtJbtQbtNbtSbtRbtRbtRbtUbtTblMbnKbsdbtYbtZbtVbubblTblTblTblTblTbucbudbtWbufbugbnTbnObssbgSbgSbgSbtXbuebhBbuibuhbujbqSbunbukbumbulbupbuoburbuqbutbusbuubuhbuwbuvbuybhDbuAbuzbuEbuEbuBbhqbuCaUSbmqbuIbuNbqkbmqbuQbuRbmqbvbbuSbqkbmqbogbofbofbofboibofbuJbofbsWbrobuKbebbuPbrrboBboAboAboBbrubuLbebbvcbvgbvebtxbtqbuFbuDbuWbuVbuVbuVbuVbuVbuVbuVbuZbuYboJboJbrJboJbsMboJboJboJbuGbmmbuHbmmbmmbmmbmmbmmbmmbuTbEGbuXbvdbEGbwmbwkbwkboIboKbDzbDzbGJbGJbnbbeCblCbnbblAbeCblCaYUaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabwXbrObrObrQbrObrObrObrRbrObrObrPaabaSdaUlaMEbrSbqrbrUbrVbrWbrXbrYbrTbsabrZbqrbscbsdbsbbseblMbsfbnDbnDbqvbqxbsgbsQbqvbnDbnDbsjbskblMbnKbnLblRblRbslblRblTbsibsnbsoblTbsmbqJbsqbqJbsrbnTbnObssbnPbgPbgPbspbsubdibmcbsvbptbswbqSbqSbsybsxbsAbszbsAaYjbsDbsCbsFbsEbsHbsGbmcbdPbsubsJbsLbsKbodbhqbhqbsNbmqbsZbmqbmqbmqbtnbtobmqbshbtrbqkbmqbpNbofbofbsRbsTbsSbsVbsUbsWbrobsXbebbqabrrboBboAboAboBbrubsYbebbtwbtebaubaubaubaubrFblkbthbtibcpbtjbtbbtlbrGaYPbrIbmpbqgbrJbxBbsMbmpbqgbcDaYPbEFbsPbsObtabzObtcbzObtdbEGbEGbtgbtmbtkbtpbtpbEGbEGbicbBTbDzbDzbDzbmQbeCblCbnbblAbeCbncbicaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabwXbtvbtybtCbtDbtDbtzbtDbtDbtDbtzbrQaSdaSdaSdaToboRbqrbrUbtFbtGbrUbtBbtAbtHbtEbqrbtLbtMbtIblQblMbtObtPbtKbtJbtQbtNbtSbtRbtRbtRbtUbtTblMbnKbsdbtYbtZbtVbubblTblTblTblTblTbucbudbtWbufbugbnTbnObssbgSbgSbgSbtXbuebhBbuibuhbujbqSbunbukbumbulbupbuoburbuqbutbusbuubuhbuwbuvbuybhDbuAbuzbuEbuEbuBbhqbuCaUSbmqbuIbuNbqkbmqbuQbuRbmqbvbbuSbqkbmqbogbofbofbofboibofbuJbofbsWbrobuKbebbuPbrrboBboAboAboBbrubuLbebbvcbvgbvebtxbtqbuFbuDbuWbuVbuVbuVbuVbuVbuVbuVbuZbuYboJboJbrJboJbsMboJboJboJbuGbmmbuHbmmbmmbmmbmmbmmbmmbuTbEGbuXbvdbEGbwmbwkbwkboIboKbDzbDzbGJbGJbnbbeCblCbnbblAbeCblCaYUaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabvibvjbvjbvjbvjbvjbvjbvjbvjbvjbvjbvfbvlaOQbvlaSfboRbqrbvmbrUbvnbvnbvnbvkbrUbvobqrbvqbvrbtIbvsbvsbvsbvsbvpbvsbvtbnDbvvbngbnhbnhbvubvxblMbvzbvBbvAbvDbvCbvFbvGbvHbvIbvHbvJbvJbvJbvJbvJbvKbvEbnObvLbvNbvMbvPbvObvRbhEbvTbvSbuobvUbvVbvXbvXbvXbvXbvWbvXbvZbwabwbbvYbvUbwdbwcbmcbkRbwgbwfbwibwhbwjbhqbhqbsNbmqbEabmqbmqbmqaZVbmqbmqbxAbxAbmqbmqbwlbofbofbwnbwobofbofbofbwqbwpbwrbebbqabrrboBboBboBboBbrubwsbebbAubwtbwtbwubwtbwzbwybwybwybwybwAbwybwybwBbljbvaboJboJboJbrJboJbsMboJboJboJbuGbmmbuHbmmbmmbxKbmmbxObmmbmmbmmbxXbxYbqnbjRbjRbjRbjRbqpbjCbjCbjCbjCbqobeCblCbqoblAbeCblCbicaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacNwbwEbwGbwHbwIbwIbwJbwIbwIbwIbwJbrQaSdaSdaSdbvwblFaPYbrUbwMbvnbvnbvnbvkbwMbrUbqrbvybwKbtIbvsbwPbwQbwRbwSbvsbwUbwTbwVblMbrNbstbwNbwYblMbnKbxabxbbxbbxcbxbbxbbxbbxbbxebxdbxdbxdbxfbxdbxgbxhbxibxjbxkbxlbxlbxlbxlbxlbxmbxmbxnbxmbvXbvXbxobxpbxqbxrbxtbxsbxobxubvXbxvbxwbxvbxvbxvbxvbxvbxvbxvbwjbhqbhqaUSbxxbmqaVGbJQbmqbznbmqbzobxDbxCbmqbxEbdTbxFbxGbdTbdTbxHbxJbxIbxJbdTbdTbebblbbxLbxMbxMbxMbxMbxLbxNbebbKVbwvbwvbwwbxPbaubxQbxRbxSbxTbxUbxVbxWbycbxZaYPbjDbyZbyabrJboJbsMbyabzlbjDbEFbzpbAwbAjbAzbAybABbAAbACbAjbAjbADbsIbAEboIbrLbrMboIbrKbeCbeCbeCbeCbeCbeCbeCbeCbeCbeCblCbicaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacNwbrObrObrQbrObrObrObrRbrObrObydaabaSdbwObmSbyfbqrbtFbtFbtFbrUbyhbygbyjbyibqrbwZbyebtIbvsbymbvsbynbyobvsbyqbypbyrblMbrNbstbwNbskblMbnKbxabxbbytbysbyubyvbywbxbbyybykbyxbylbyBbyBbyBbyCbyEbyDbyFbxlbyGbyHbyIbyJbyLbyKbyMbyNbvXbyObxqbxqbyPbyQbyPbxqbxqbyRbvXbySbyUbyTbyWbyVbyYbyXaZObxvbzabzbbzbbzcaUSaUSaUSaUSbAvbsNbAvbzeaUSbdRaUSaUSbdTbdTbdTbdTbzgbzfbzfbzfbzfbzhaQsbebbjBbzjbjBbzkbzkbjBbzjbjBbebbKVbwvbwvbAxbxPbaubaubaubaubaubtfbaubaubaubauaYPaYPaYPaYQbAGaYQbAHaYQaYPaYPbEFbAIbuHbAJbAKbjRbjRbjRbEFbALbmmbmmbAMbjRbjRbjRbqnbjRbicbttbeCblCblDblAbeCblCblDblAbeCbtubicaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabjQaLdaSdaSdaSdaMsaMsaMsaMsaMsaMsbzrbzsbqrbqrbqrbqrbqrbqrbztbqrbqrbqrbnKbnKbzwbvsbzubzvbynbzxbvsbzzbzybzAblMbrNbstbwNbnDblMbnKbxabxbbzDbzBbzCbyvbzCbxbbyybyzbzEbzFbzIbzHbzKbzJbzMbzLbyFbzRbzNbBsbzPbzQbzQbzPbzUbzSbvXbzTbxqbxqbyPbzWbyPbxqbxqbzVbwbbzXbAbbzYbzZbAabAdbzYbAcbxvbAlbAebAfbAgbAhbAicMKbAkbAkbAkbAkbAkbAkbAmbAobAnbAkbAkbAqbAkbAkbAkbAkbAkbAkbAkbAkbApbAsbArbArbArbArbArbArbAtbAicVsbvhbvhbBtbBrbBNbBrbBPbBrbBUbBQbDkbBrbDubDtbElbDxcVUcVUbEmcVUbEBcVUbENbEHbFzbFwbGjbGhbjRbwDbwCbxzbjRbGobmmbmmbGIbGsbjRbGMbGNbjRblDblAbeCblCbnbblAbeCblCbnbblAbeCblCblDaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabAQbARbARbARbARbASbASbARbARbATaaaaabaSdaUlaMEbAVbAUbAXbAWbAWbAWbAWbAYbAZbBablQbnwbBcbBbbvsbvsbvsbBdbyobvsblMblMblMblMbrNbuabyAbBfblMbBhbBibxbbBjbBkbyvbzCbBlbxbbyybzGbzEbzFbBnbBobBpbzJbBqbzLbyFbzRbDobCAbDsbBubBvbBwbzUbBxbvXbBybyPbxqbBAbBzbBAbxqbyPbBBbxubBCbzYbzYbzZbBDbAdbzYbBEbxvbBFbAfbAfbAgbAhbAibAkbAkbAkbAkbAkbAkbAkbBGbAkbAkbAkbAkbAkbAkbBHbBIbBIbBIbBIaQwbBIbBIbBIbBIbBIbBIaQwbBIbBIbBIaQybDVdcebIsbIzbwtbwtbwtbwtbwtbwubwtbwtbwtbwtbwtbwtbwtbwtbwtbwtbwtbMhbKubRFbNWbomcbudckcVtbjRcVVbzdbzmbjRcWhbmmbmmcWAcWvbjRcWEcWQbjRbnbblAbeCblCbnbblAbeCblCbnbblAbeCblCbnbaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabCabCdbCcbBZbCebCbbCbbClbCibARbATaSdaSdaSdaTobCnbCfbCgbCfbCfbCfbCfbChbCtbCjblQblQbCkbCwbvsbwPbCmbCxbzxbvsbCobCpbCoblMblMblMblMbCqblMbCrbCsbxbbCybCubzCbCvbCzbxbbyybzJbCBbzFbBnbBnbCEbzJbCFbzLbyFbzRbDybCAbDsbCGbCCbBwbzUbCDbvXbCHbCIbxqbCKbCJbCLbxqbCRbCNbCSbCMbCTbCObCPbCQbCUbzYbCVbxvbCYbCXbAfbAgbAhbAibAkbCZbAkbDAbDbbDbbDbbDbbDbbDbbDbaRybAkbAkbAkbAkbAkbDabAkaRAaRCaRBaRCaRCaRCaREaRHaRFaSFaROaSHbFsaSKaSIaTHaSVbwvbwvbwvcXfbDpbwvbwvbwvbwvbwvbwvbwvbwvbwvbwvbwvbDrbDqcXhcXgcXjcXibmmbGhbjRbwDbwCbxzbjRbGobmmbmmcXlcXkbjRbGNbGMbjRbqoblAbeCblCbqoblAbeCblCbqoblAbeCblCbqoaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabCabCdbDGbCbbCbbCbbCbbCbbCbbCbbDHbDCaOQbDCaSfbDIbCfbDEbDJbDLbDKbDMbChbDObDNbDQbDQbDWbKHbvsbvsbvsbynbDYbymblQblQblQblQbDPbnKbnKbCsbnKbCrbCsbxbbDZbDRbDSbDTbyvbxbbDUbzJbEbbzFbBnbBnbEfbDXbEjbzLcXqbxlbHpbHobzPbzPbzPbzPbzUbEcbvXbEdbEebvXbvXbvXbvXbvXbvXbvXbxubxvbErbEgbEvbEibEsbEkbHvbxvbEwbEnbEnbEpbEpbEpbEpbEpbEpbEqbEybEpaTLaTKaTMbEpbNebEobEobEobEobEobEubEubEuaTNbEubEubEubEubEubEuaTObEubEubEubteaTPaTQbwvbuxbuxbEAbEAbEAbEAbEAbEJbDqbDqbDrbDqbwvbDqbDqbDqbDqbEMbEDbEDbEDbEDcXncXibmmbAJbEFbjRbjRbjRbAKbALbmmbmmbAMbjRbjRbjRbqnbjRbicbzqbeCbeCbeCbeCbeCbeCbeCbeCbeCbeCbicaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabCabCdbEKbELbELbCbbELbELbELbARbERaSdaSdaSdaTobEVbCfbEYbEXbEXbEXbFcbChbnKbFfbESbETbEUbFgbvsbwPbEWbynbFhbymbFibEZbFabFbbFlbFdbFdbFebFdbFnbFobxbbFqbFpbFjbFkbFrbFmbNsbyBbFubFtbBnboxbFybvQbEjbzLcYPbxlbwebFvbJabFFbFIbFGbFMbxmbxmbFBbFCbFDbFEbFNbFEbFPbFCaaabFHbxvbFRbFJbFKbFLbEsbzYbFSbxvbFUbFObFWbEpaTTaTSaTVaTUaTYaTWaUPaUObLzbGabBLaVxaVIaVyaWOaWIaWSaWRbEuaYkaYoaYlaYraYqaZUaZTbobbbybuOaZTaZTbzibGrbGrbBJbGrbwLbwLbEAbGubGAbGwbEAbGBbGEbGBbEAbGFbDqbEMbEDbGKbGLbGKbEDbGCbGDbEDcXocXibmmbmmcXscXpcYdcXpcYebmmbmmbmmbwWbAEboIbANbrMboIbAObeCbeCbeCbeCbAPbeCbAPbeCbeCbeCbeCaYUaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabGPbARbARbARbARbARbARbARbARbERaaaaaaaSdbBgbmSbHabCfbHdbCfbHebIHbHfbGQbChbHgbGSbGTbGUbFgbvsbvsbvsbvsbvsbvsbGVbGWbGXbGYbGZbxbbxbbxbbxbbxbbxbbxbbwXbxbbxbbxbbHbbxbbHcbAFbHjbBnbBnbBnbHnbDXcZfbzLcZjbxlbBebFvbxlbxlbxlbxmbHrbxmbHkbHlbHmbHubHBbHzbHDbHCbHsbHtbHFbxvbOIbzYbHwbHxbEsbHybzYbxvbHHbHAbHIbEpbCWbBMbDfbDfbDfbDfbDfbDfbDfbDebDhbDgbDjbDibSnbDlbDnbDmbEubEtbEzbExbECaZTbEEaZTbFQbEIbuObFTbFXbFVbGrbIfbFYbIgbFZbBmbIabGcbIdbIdbImbIcbIlbInbEAbIibIrbIkbEDbItbIwbIvbIobIpbIybEDcYhcXibmmbmmbmmbmmcYmcYkcYkcYkcYkcYkcYnbqnbjRbjRbjRbjRbqpbjCbBWbBVbjCbBXaYUbBXaYUbBYbBRbBSbicaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabysbwEbwGbwHbwIbwIbwJbwIbwIbwIbwJbrQaSdaSdaSdbvwblFaPYbrUbwMbvnbvnbvnbvkbwMbrUbqrbvybwKbtIbvsbwPbwQbwRbwSbvsbwUbwTbwVblMbrNbstbwNbwYblMbnKbxabxbbxbbxcbxbbxbbxbbxbbxebxdbxdbxdbxfbxdbxgbxhbxibxjbxkbxlbxlbxlbxlbxlbxmbxmbxnbxmbvXbvXbxobxpbxqbxrbxtbxsbxobxubvXbxvbxwbxvbxvbxvbxvbxvbxvbxvbwjbhqbhqaUSbxxbmqaVGbJQbmqbznbmqbzobxDbxCbmqbxEbdTbxFbxGbdTbdTbxHbxJbxIbxJbdTbdTbebblbbxLbxMbxMbxMbxMbxLbxNbebbKVbwvbwvbwwbxPbaubxQbxRbxSbxTbxUbxVbxWbycbxZaYPbjDbyZbyabrJboJbsMbyabzlbjDbEFbzpbAwbAjbAzbAybABbAAbACbAjbAjbADbsIbAEboIbrLbrMboIbrKbeCbeCbeCbeCbeCbeCbeCbeCbeCbeCblCbicaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabysbrObrObrQbrObrObrObrRbrObrObydaabaSdbwObmSbyfbqrbtFbtFbtFbrUbyhbygbyjbyibqrbwZbyebtIbvsbymbvsbynbyobvsbyqbypbyrblMbrNbstbwNbskblMbnKbxabxbbytbyubyvbywbzBbxbbyybykbyxbylbyBbyBbyBbyCbyEbyDbyFbxlbyGbyHbyIbyJbyLbyKbyMbyNbvXbyObxqbxqbyPbyQbyPbxqbxqbyRbvXbySbyUbyTbyWbyVbyYbyXaZObxvbzabzbbzbbzcaUSaUSaUSaUSbAvbsNbAvbzeaUSbdRaUSaUSbdTbdTbdTbdTbzgbzfbzfbzfbzfbzhaQsbebbjBbzjbjBbzkbzkbjBbzjbjBbebbKVbwvbwvbAxbxPbaubaubaubaubaubtfbaubaubaubauaYPaYPaYPaYQbAGaYQbAHaYQaYPaYPbEFbAIbuHbAJbAKbjRbjRbjRbEFbALbmmbmmbAMbjRbjRbjRbqnbjRbicbttbeCblCblDblAbeCblCblDblAbeCbtubicaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabjQaLdaSdaSdaSdaMsaMsaMsaMsaMsaMsbzrbzsbqrbqrbqrbqrbqrbqrbztbqrbqrbqrbnKbnKbzwbvsbzubzvbynbzxbvsbzzbzybzAblMbrNbstbwNbnDblMbnKbxabxbbzCbzDbBjbywbBjbxbbyybyzbzEbzFbzIbzHbzKbzJbzMbzLbyFbzRbzNbBsbzPbzQbzQbzPbzUbzSbvXbzTbxqbxqbyPbzWbyPbxqbxqbzVbwbbzXbAbbzYbzZbAabAdbzYbAcbxvbAlbAebAfbAgbAhbAicMKbAkbAkbAkbAkbAkbAkbAmbAobAnbAkbAkbAqbAkbAkbAkbAkbAkbAkbAkbAkbApbAsbArbArbArbArbArbArbAtbAicVsbvhbvhbBtbBrbBNbBrbBPbBrbBUbBQbDkbBrbDubDtbElbDxcVUcVUbEmcVUbEBcVUbENbEHbFzbFwbGjbGhbjRbwDbwCbxzbjRbGobmmbmmbGIbGsbjRbGMbGNbjRblDblAbeCblCbnbblAbeCblCbnbblAbeCblCblDaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabAQbARbARbARbARbASbASbARbARbATaaaaabaSdaUlaMEbAVbAUbAXbAWbAWbAWbAWbAYbAZbBablQbnwbBcbBbbvsbvsbvsbBdbyobvsblMblMblMblMbrNbuabyAbBfblMbBhbBibxbbBkbBlbywbBjbCubxbbyybzGbzEbzFbBnbBobBpbzJbBqbzLbyFbzRbDobCAbDsbBubBvbBwbzUbBxbvXbBybyPbxqbBAbBzbBAbxqbyPbBBbxubBCbzYbzYbzZbBDbAdbzYbBEbxvbBFbAfbAfbAgbAhbAibAkbAkbAkbAkbAkbAkbAkbBGbAkbAkbAkbAkbAkbAkbBHbBIbBIbBIbBIaQwbBIbBIbBIbBIbBIbBIaQwbBIbBIbBIaQybDVdcebIsbIzbwtbwtbwtbwtbwtbwubwtbwtbwtbwtbwtbwtbwtbwtbwtbwtbwtbMhbKubRFbNWbomcbudckcVtbjRcVVbzdbzmbjRcWhbmmbmmcWAcWvbjRcWEcWQbjRbnbblAbeCblCbnbblAbeCblCbnbblAbeCblCbnbaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabCabCdbCcbBZbCebCbbCbbClbCibARbATaSdaSdaSdaTobCnbCfbCgbCfbCfbCfbCfbChbCtbCjblQblQbCkbCwbvsbwPbCmbCxbzxbvsbCobCpbCoblMblMblMblMbCqblMbCrbCsbxbbCvbCybBjbCzbDRbxbbyybzJbCBbzFbBnbBnbCEbzJbCFbzLbyFbzRbDybCAbDsbCGbCCbBwbzUbCDbvXbCHbCIbxqbCKbCJbCLbxqbCRbCNbCSbCMbCTbCObCPbCQbCUbzYbCVbxvbCYbCXbAfbAgbAhbAibAkbCZbAkbDAbDbbDbbDbbDbbDbbDbbDbaRybAkbAkbAkbAkbAkbDabAkaRAaRCaRBaRCaRCaRCaREaRHaRFaSFaROaSHbFsaSKaSIaTHaSVbwvbwvbwvcXfbDpbwvbwvbwvbwvbwvbwvbwvbwvbwvbwvbwvbDrbDqcXhcXgcXjcXibmmbGhbjRbwDbwCbxzbjRbGobmmbmmcXlcXkbjRbGNbGMbjRbqoblAbeCblCbqoblAbeCblCbqoblAbeCblCbqoaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabCabCdbDGbCbbCbbCbbCbbCbbCbbCbbDHbDCaOQbDCaSfbDIbCfbDEbDJbDLbDKbDMbChbDObDNbDQbDQbDWbKHbvsbvsbvsbynbDYbymblQblQblQblQbDPbnKbnKbCsbnKbCrbCsbxbbDSbDTbDZbFjbywbxbbDUbzJbEbbzFbBnbBnbEfbDXbEjbzLcXqbxlbHpbHobzPbzPbzPbzPbzUbEcbvXbEdbEebvXbvXbvXbvXbvXbvXbvXbxubxvbErbEgbEhbEibEsbEkbEvbxvbEwbEnbEnbEpbEpbEpbEpbEpbEpbEqbEybEpaTLaTKaTMbEpbNebEobEobEobEobEobEubEubEuaTNbEubEubEubEubEubEuaTObEubEubEubteaTPaTQbwvbuxbuxbEAbEAbEAbEAbEAbEJbDqbDqbDrbDqbwvbDqbDqbDqbDqbEMbEDbEDbEDbEDcXncXibmmbAJbEFbjRbjRbjRbAKbALbmmbmmbAMbjRbjRbjRbqnbjRbicbzqbeCbeCbeCbeCbeCbeCbeCbeCbeCbeCbicaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabCabCdbEKbELbELbCbbELbELbELbARbERaSdaSdaSdaTobEVbCfbEYbEXbEXbEXbFcbChbnKbFfbESbETbEUbFgbvsbwPbEWbynbFhbymbFibEZbFabFbbFlbFdbFdbFebFdbFnbFobxbbFkbFpbFqbFrbKQbFmbNsbyBbFubFtbBnboxbFybvQbEjbzLcYPbxlbwebFvbJabFFbFIbFGbFMbxmbxmbFBbFCbFDbFEbFNbFEbFPbFCaaabFHbxvbFRbFJbFKbFLbEsbzYbFSbxvbFUbFObFWbEpaTTaTSaTVaTUaTYaTWaUPaUObLzbGabBLaVxaVIaVyaWOaWIaWSaWRbEuaYkaYoaYlaYraYqaZUaZTbobbbybuOaZTaZTbzibGrbGrbBJbGrbwLbwLbEAbGubGAbGwbEAbGBbGEbGBbEAbGFbDqbEMbEDbGKbGLbGKbEDbGCbGDbEDcXocXibmmbmmcXscXpcYdcXpcYebmmbmmbmmbwWbAEboIbANbrMboIbAObeCbeCbeCbeCbAPbeCbAPbeCbeCbeCbeCaYUaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabGPbARbARbARbARbARbARbARbARbERaaaaaaaSdbBgbmSbHabCfbHdbCfbHebIHbHfbGQbChbHgbGSbGTbGUbFgbvsbvsbvsbvsbvsbvsbGVbGWbGXbGYbGZbxbbxbbxbbxbbxbbxbbxbbMlbxbbxbbxbbHbbxbbHcbAFbHjbBnbBnbBnbHnbDXcZfbzLcZjbxlbBebFvbxlbxlbxlbxmbHrbxmbHkbHlbHmbHubHBbHzbHDbHCbHsbHtbHFbxvbHvbzYbHwbHxbEsbHybzYbxvbHHbHAbHIbEpbCWbBMbDfbDfbDfbDfbDfbDfbDfbDebDhbDgbDjbDibSnbDlbDnbDmbEubEtbEzbExbECaZTbEEaZTbFQbEIbuObFTbFXbFVbGrbIfbFYbIgbFZbBmbIabGcbIdbIdbImbIcbIlbInbEAbIibIrbIkbEDbItbIwbIvbIobIpbIybEDcYhcXibmmbmmbmmbmmcYmcYkcYkcYkcYkcYkcYnbqnbjRbjRbjRbjRbqpbjCbBWbBVbjCbBXaYUbBXaYUbBYbBRbBSbicaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabjQaLdaSdaSdaSdaSdaSdaSdaSdaSdaSdaToaSfbIGbCfbJjbIBbIIbIDbIDbIJbILbIKbIMbIMbIObINbDQbDQbDQbDQbDQbDQbIQbIPbIPbIRbITbxbbIVbIUbIYbIXbISbIZbJfbJbbxbbIWbJibyBbyCbDXbHjbBnbBnbKCbzJbzJbJmdaQdbnbJcbJdbJebJpbJgbJhbJsbJtbJkbJlbJubHsbJnbJvbJnbJvbJwbHsbHtbJqbJrbJybJxbJDbJzbJGbJEbJHbJrbJIbFObFObEpbDcbBMbGdbDdbGfbGebGebLybDebDebDebGtbGxbGvbSnbDlbGzbGybEubHEbHJbHGbHLbHKbHMaZTbFQbEIbuObFTbFXaZTbGrbHNbHQbHPbHSbHRbHUbHTbHVbJYbJYbKhbJYbIbbKbbGbbKdbGkbKfbKqbKrbKibKibKibKjbEDcYpcYocYqcYqcYqcYrcYvcYscYwcYwcYwcYxbBKbAEboIbrMbrMboIbDBdsldsldsldsnbicaaabicbDDbDwbDwbDFbicaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaSdbGmbGlbKpaMdaMdaMdbmSaSfaSfbCfbKPbCfbKDbKsbKtbKEbCfblQbKvbKvbKwbKFbKwbKwbKwbKFbKwblQblQbxbbxbbxbbKGbxbbKzbKzbKzbKzbKzbKzbJfbKAbKBbPabzFbKIbKKbKJbKMbKLbKObFxbMlbKQbKSbKRdbYbKUbKXbKXbLabKZbKTbLbbLfbKWbLgbKYbFCbLhbHDbLibHBbLkbFCaaabLcbLdbLebLnbLdbLdbLdbLdbLpbxvbLqbLrbIechhbGibGgbGibEpbIhbGqbJAbIjbJBbJKbJTbJPbJXbJWbKabJZbKcbOUbEubEubEubEubEubKebKgaZTbFQbEIbLjbFTbFXaZTbGrbLNbLEbLPbLmbLlbLIbLTbLobLLbLMbLUbLObKkbEAbGRbLRbKnbEDbKobKybKxbIpbLWbNCbEDcYhbmmcYObjRcZkcYYcZlboDcZmbjRcZnbuHcZobqnbjRbjRbjRbjRaYUdsqdsldslbEObicaaabicbEPbDwbDwbEQbicaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaSdbGmbGlbKpaMdaMdaMdbmSaSfaSfbCfbKPbCfbKDbKsbKtbKEbCfblQbKvbKvbKwbKFbKwbKwbKwbKFbKwblQblQbxbbxbbxbbKGbxbbKzbKzbKzbKzbKzbKzbJfbKAbKBbPabzFbKIbKKbKJbKMbKLbKObFxccYccZbKSbKRdbYbKUbKXbKXbLabKZbKTbLbbLfbKWbLgbKYbFCbLhbHDbLibHBbLkbFCaaabLcbLdbLebLnbLdbLdbLdbLdbLpbxvbLqbLrbIechhbGibGgbGibEpbIhbGqbJAbIjbJBbJKbJTbJPbJXbJWbKabJZbKcbOUbEubEubEubEubEubKebKgaZTbFQbEIbLjbFTbFXaZTbGrbLNbLEbLPbLmbLlbLIbLTbLobLLbLMbLUbLObKkbEAbGRbLRbKnbEDbKobKybKxbIpbLWbNCbEDcYhbmmcYObjRcZkcYYcZlboDcZmbjRcZnbuHcZobqnbjRbjRbjRbjRaYUdsqdsldslbEObicaaabicbEPbDwbDwbEQbicaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaSdbLYbLXbKpbLZbLZbMabMbbLZbMcbCfbMebIBbNSbMkbMnbMmbCfaaaaabaabbMpbMobMobMobMobMobMraaaaaabKBbMdbMsbMubMqbKzbKzbKzbKzbKzbKzbMwbMvbMzbMybMDbMBbMxbDXbzJbzJbMFbMAbzJbzJbMJbMCbMLbMEbMMbMGbMGbMHbMGbMIbMNbMGbMKbKYbFCbMObFEbFEbFEbMPbFCaaabLcbLdbMRbMQbMVbMTbMWbMSbNbbMUbNcbFObLschhbJFbJCbJJbIqbJLbDebLvbLubHObLAbLBbEobEobLDbLFbDlbLQbLKbLVbLSbMYbMXbLKbMZbNdbNabFTbEIbNfbFTbEIaZTbGrbNgbHXbHXbLmbNhbNEbNibNjbNHbNIbNJbNObNNbEAbMfbLRbMibEDbMjbNPbMtbIpbIpbNUbEDcZpbmmcZDbAKcZkbDvcZGcZEcZmbAKcZIcZHcZJbEGaaaaaaaaaaaabicdsudswdsvdsvbicaaabicbGObDwbGObDwbicaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaSdbKpbKpbObaSdaSdbjQaLdaSdaSdbCfbOdbIBbIBbIBbCfbCfbCfaaaaaaaaabOebOcbOcbOfbOcbOcbOeaaaaaabKBbNQbKzbOibOhbOhbOhbOhbOhbOkbOjbOhbOlbOnbOmbOpbOobOrbOqbzJbOtbBnbFAbOsbDXbOwbOubOxbMEbMEbMGbOAbOybOCbOBbODbMGbFBbKYbFCbOEbOHbOFbOObOMbFCaaabOGbLdbOPddabOJbOKbOLbOKbOSbONbNkbFObNlchhbNnbLwbNpbIqbNmbLxbNqbNobHObLAbNrbEobNDbNAbNGbNFbNLbNKbORbNMbOVbOTbLKbOWaZTbOXbFQbEIbOYbFTbFXbFVbGrbOZbLEbLPbUlbNBbNEbPnbPbbPobPpbIdbPqbPybPsbPtbIrbPubEDbPzbPwbIpbPHbPBbPJbEDcZpbmmcYObjRcZkbmmcZGbmmcZmbjRcZnbmmcZKbEGaaaaaaaaaaaabIAbjJbIubIubIubICaaabIEbIxbIxbIxbjJbIFaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabPLbPIbPIbPIbPIbPNbPMbPIbPIbPIbPIbPRaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabOebOcbOcbOcbOcbOcbOebPTbKBbKBbNRbPObPPbHhbHhbHhbPObKzbJfbKAbKzbKzbKBbPZbPSbQcbQdbPVbQebHibBnbBnbPYbDXbOwbOubQhbHqbJObQibQkbOzbQlbQgbQnbMGbQobQjbHmbQpbQqbQmbQsbQrbHsbHtbQtbLdbQvbQubQwbOKbQxbOKbQybONbQzbFObKNbPcbPebLtbPfbEpbPgbNybDebPhbHObLAbPmbEobPGbPFbQabPKbQAbNKbQCbQBbQEbQDbLKbFXaZTbQFbQHbQGbQIbNdbQJbNdbQLbQKbQKbQKbQNbQMbIabRkbPbbPobRlbRhbPqbRmbEAbOvbOvbPdbEDbRpbRybRqbRzbIpbREbEDcZTcYmcYkcZVdaacYkdaldakbmmdambmmdandaqbEGaaaaaaaaaaaaaaabIAbKmbKmbKmbIFaaabIAbKmbKmbKmbIFaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaSdbKpbKpbObaSdaSdbjQaLdaSdaSdbCfbOdbIBbIBbIBbCfbCfbCfaaaaaaaaabOebOcbOcbOfbOcbOcbOeaaaaaabKBbNQbKzbOibOhbOhcdabOhbOhbOkbOjbOhbOlbOnbOmbOpbOobOrbOqbzJbOtbBnbFAbOsbDXbOwbOubOxbMEbMEbMGbOAbOybOCbOBbODbMGbFBbKYbFCbOEbOHbOFbOObOMbFCaaabOGbLdbOPbOIbOJbOKbOLbOKbOSbONbNkbFObNlchhbNnbLwbNpdeqbNmbLxbNqbNobHObLAbNrbEobNDbNAbNGbNFbNLbNKbORbNMbOVbOTbLKbOWaZTbOXbFQbEIbOYbFTbFXbFVbGrbOZbLEbLPbUlbNBbNEbPnbPbbPobPpbIdbPqbPybPsbPtbIrbPubEDbPzbPwbIpbPHbPBbPJbEDcZpbmmcYObjRcZkbmmcZGbmmcZmbjRcZnbmmcZKbEGaaaaaaaaaaaabIAbjJbIubIubIubICaaabIEbIxbIxbIxbjJbIFaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabPLbPIbPIbPIbPIbPNbPMbPIbPIbPIbPIbPRaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabOebOcbOcbOcbOcbOcbOebPTbKBbKBbNRbPObPPbHhbHhbHhbPObKzceEbKAbKzbKzbKBbPZbPSbQcbQdbPVbQebHibBnbBnbPYbDXbOwbOubQhbHqbJObQibQkbOzbQlbQgbQnbMGbQobQjbHmbQpbQqbQmbQsbQrbHsbHtbQtbLdbQvbQubQwbOKbQxbOKbQybONbQzbFObKNbPcbPebLtbPfbEpbPgbNybDebPhbHObLAbPmbEobPGbPFbQabPKbQAbNKbQCbQBbQEbQDbLKbFXaZTbQFbQHbQGbQIbNdbQJbNdbQLbQKbQKbQKbQNbQMbIabRkbPbbPobRlbRhbPqbRmbEAbOvbOvbPdbEDbRpbRybRqbRzbIpbREbEDcZTcYmcYkcZVdaacYkdaldakbmmdambmmdandaqbEGaaaaaaaaaaaaaaabIAbKmbKmbKmbIFaaabIAbKmbKmbKmbIFaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabPLbRubRvbRwbRxbRGbRHbRAbRGbRBbRCbRDbPIbPIbPRaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabOebOcbOcbOcbOcbOcbRJbRIbRKbRIbRSbRRbRTbRRbRRbRRbRRbPQbJfbKAbRLbxbbxbbRMbBnbzFbQdbRNbDXbPXbRPbRPbRQbNYbRYbRXbRZbRVbQbbSbbSdbScbSabQgbSebMGbMKbKYbFCbSfbShbSgbSlbSkbFCaaabOGbSibSjbSibSibSibSibSibSmbSibSpbFObQOchhbQQbQPbQQbEpbQSbQRbSsbSqbHObLAbNzbQTbQWbQUbQZbQYbRabLKbQCbRbbOVbRcbLKbWdbWdbWdbRebRdbEubEubEubEubGrbJobHXbHXbRfbSTbIabSWbRibRgbRrbRjbPqbSYbTabSZbTfbTcbTbbTgbTdbTebTjbTebEDbEDbEGdasbEFbEFbigdatdazdatbigaYSaYSaYSaYSaYSaYSdaCdaDaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabPLbPIbRAbRAbRAbTlbRGbTnbTnbRGbTobRAbRAbTpbWLbPIbPRaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabOebOcbOcbOcbOcbOcbTtbTrbTqbTrbNTbKzbPPbHhbHhbHhbKzbKzbJfbKAbQfbRobxbbTAbBnbTBbQdbTvbDXbRObBnbBobBnbPWbOwbTybTzbRVbQbbTCbTEbTDbTKbTFbTLbTGbTHbTIbTJbTJbTNbTMbTPbFCbFCaaabOGbSibTQbTObTSbTRbTVbTTbTWbTUbTXbFObRsbQVbSobRtbSrbEpbIqbStbIqbEpbPvbPrbPxbOUbOUbSwbSybSxbOQbLKbNKbSzbSAbLKbLKbWdbSCbSBbSEbSDbWgbSFbSHbSGbGraZSbpDbSIbRUbRUbIabSJbUEbUFbIabSKbPqbUHbIabUKbUMbULbUObUNbZNbpvbsBbqbbRnbtscjTcjYcOCbKlbigbaNdaEbaObaGbaTbaQbaRbaHbaTbaUbaVaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabPLbPIbVebVfbVgbVhbVibRGbVkbRAbVlbRAbRAbRAbRAbRAbTlbRGaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabOebVmbOcbOcbOcbVnbOebPTbKBbKBbOgbKzbPPbKzbKzbKzbKzbKzbJfbKAbQfbRWbxbbVrbBnbVqbVsbBnbVwbzEbBnbBnbVtbDXbOwbTybTzbRVbQbbMGbVubVvbVybVxbVzbMHbVBbVAbVDbVCbHsbVEbVFbHsbHtbHtbVGbSibVIbVHbVKbVJbVLbVLbVNbVMbVObFObSMbSubSObSNbSPbSvcrAbSLcrAcrAbSRbSQbSUbSSbwFbXAbSXbRtbXAbThbXAbJRcuobJSbTZbTYbUabUabUcbUbbWgbUdbUfbUdbWibWibWjbWjbWjbWjbIabIabIabIabIabWlbWnbLIbIabNVbNZbNXbWqbWqbPibOabLRctvbPkbPjcacdlDbGGdaSbigdaZdbedbddbkbaTbaTbaTbaTbaTbaUbaVaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabPLbPIbVebVfbVgbVhbVibRGbVkbRAbVlbRAbRAbRAbRAbRAbTlbRGaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabOebVmbOcbOcbOcbVnbOebPTbKBbKBbOgbKzbPPbKzbKzbywbKzbKzbJfbCybQfbRWbxbbVrbBnbVqbVsbBnbVwbzEbBnbBnbVtbDXbOwbTybTzbRVbQbbMGbVubVvbVybVxbVzbMHbVBbVAbVDbVCbHsbVEbVFbHsbHtbHtbVGbSibVIbVHbVKbVJbVLbVLbVNbVMbVObFObSMbSubSObSNbSPbSvcrAbSLcrAcrAbSRbSQbSUbSSbwFbXAbSXbRtbXAbThbXAbJRcuobJSbTZbTYbUabUabUcbUbbWgbUdbUfbUdbWibWibWjbWjbWjbWjbIabIabIabIabIabWlbWnbLIbIabNVbNZbNXbWqbWqbPibOabLRctvbPkbPjcacdlDbGGdaSbigdaZdbedbddbkbaTbaTbaTbaTbaTbaUbaVaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabWObWGbRAbRAcuHcuHcuHbRGbRAbRAbRGbWIbWJbWKbRAbWMbWNbRGaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabOebOcbOcbOcbOcbOcbWPbTrbTqbTrbNRbTubWRbKzbKzbKzbTubKzbJfbKAbQfbTsbxbbWWbBnbzFbQdbBnbzJbLJbBnbBnbWUbDXbOwbTybWVbRVbTxbMGbXbbWYbWZbXabXdbMHbXcbXebXgbXfbXibXhbXjbFCaaaaaaaaabSibXpbXkbXlbXlbXmbXnbXobSibXrbXqbUhbPUbUjbUibUrbUkbUnbUebUmbUmbUpbUobUmbUmbUqbUmbUmbUsbUnbUmbUmbUGbNubNtbUwbUvbUBbUybZfbUDbXNbUIbUIbUIbUJbWgbLRbUPbWqbWqbXYbXXbWqbXZbYbbYabYdbYcbWqbPlbYgbYfbYibYhbYlbYjbYjbYjbYjbYjcacdlDdbmcAUbigdbodbpbclbcIbaTbaTbaTbaTbaTbaUbaVaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabYubWGbRAbRAbRAbRAbRAbYtbRAbRAbRGbPIbPIbPIbPIbPIbPIbYvaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabOebOcbOcbOcbOcbOcbWQbUgbYwbUgbYybYxdcYdcYdcYdcYdcYbUCbYEbYDbQfbVpbxbbYGbYIbYHbYNbYJbYKbYLbYLbYLbYMbYMbYObTybYRbWSbQbbMGbYTbYSbYVbVvbYWbMHbYUbYXbZdbTJbZebQmbYYbFCaaaaaaaaabSibYZbZabZbbZcbXmbXnbXobSibZgbZJbURbUQbUTbUScyTcyTbUVbUUbUXbUWbUWbUYbUZbUZbVabUZbUZbUSbUVbUZbVcbVbbVdcyTbVPbVjbVRbVQbVTbVSbVVbVUbVXbVWbVZbVYbWcbWbbWcbWcbWebUNbZMbUNbZNbUNbZPbZObZObPCbPDbZRbZUbZTbZXbZVbVobZWbYzbYjdbwdbvdbxbGGdbhbcHdbHbgbbgkbaTbgcbgmbaTbaTbgdbaVaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaebPIcafcagcahcaibRAbRGbRAbRAbRGbRAcancakcaraaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabOebOcbOcbOcbOcbOcbOebPTbKBbKBbxbbxbbKBbKBbKBbKBbKBbxbbxbbKBbKBbKBbxbcamcamcamcascambYMcaocapcaqcatbYMbOwbTycawbMEbMEbMGbMGbMGbMGbMGbMNbMHbTJbTIcaubTJcavcaxbFCbFCbFCbFCbFCbSibSjbSibSibSibSibSibSibSibNvbFObWfbSubWkbWhbWobWmbWscaAbWubWtbWxbWwbXGbWubWabWybWabWybWabWybWabWzbWAcrAbTZbWBbWDbWCbWFbWEbXNbXsbXubXtbXvcbdcbdcbecbdcbfcbicbfcbfcbfcbhcblcbjcbjcbkcbmcbocbnbZUcbpcbrcbqbYAcbsbYBbYjdbObGGbGHbGHaYSaYSaYSaYSaYSaYSaYSaYSaYSaYSaYSdaCdaDaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabPIbPIbPIbPIbPIbPIbRGbTobRAcbzbRAcbxcbycbAaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacbDcbBbOccbCbOccbEcbFaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacbGaabaaaaaaaaaaaacamcbIcbHcbKcbJbYMcbNcbLcbMcbRbYMbOwbTycbOcbPcbQbXwcbVcbTcbUcbWcbYcbXbXxcbZcccccbccfccdcceccgccjcchccibXybXzcclccmbEnccnbFOccoccpccrbFObXBbQVbXCcaAcaAbXDbXDcaAbXFbXEbZhbXHbZibXIbWabXKbXMbXLbXMbXObWabXPbWAbXRbWdbXSbXUbXTbXSbXSbWibXVbXWbXQbYkcbdccTccSccVccUccXccWcdbcbfccYccZcdacbjcbjcdccbocddcdfbPEcdhcdgcdicbscdkbYjcdndfcbZZaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabPLbPIcdlcdmcdpcdlcdobRGbRAbRAbRGbRAcdrcdqcdsaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacdvcdtcducducducdtcdwaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacamcdycdxcdAcdzbYLcdBcdDcdCcdEbYMbOwbNwcdFbTybTybYmbYncdIcdJcclcdObYobYpcdMcdNcdNcdQcdPcdRcdNcdNcdTcdNcdNcdScclccmbEncdVcdUcdXbYqcdZcdYbFOchfbYrcaAbZjbYsbYsbXJbZhbZkbZnbZlcaBbZmbZpbZobZrbZqbZtbZsbZvbZubWAcuvchrbZwbZybZxbZAbZzbZBccQbXWbXQbZBcbdcezceyceBceAceDceCceGcbfceEccZceFceFcbjceHceJceIceLceKceNceMbGnceOceSbYjcaccLhbGpdbPdbPdbPdbZdbXdbXdcaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabWObWGceRceRceRceRceRceTbRAbRAbRGbPIbPIbPIbPIbPIbPIbPRaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaceVceUceUceUceWaaaaaaaaaaaaaaaaaaaaaceXceZceYceZcfaaaaaaaaaacamcamcamcffcfbcdAcfcbYLcfdcbMcfecfgbYMbOwbNxbTicficflcfkbZDbZCbZFbZEbZHbZGbZIcfscftcftcfxcfvcfvcfvcfvcfvcfvcfvcJfcfycfzcfBbZLbZKbZYbZScabcaacadchfcajcaAcazcalcaCcaEcaEcaDcaGcaFcaIcaHcaKcaJcaMcaLcaOcaNbZvcaPcaQcuvbZzcaRcaTcaScaVcaUcaXcaWcaZcaYcaXcbdcgccgbcgecgdcghcgfcggcbfcgiccZceFceFcbjcgjcgmcgkcglcgncgpcgocgrcgqcgvbYjdcbcgscgtcgscgucgycgucgucgudccaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabaabaabaabaaaaaaaaaaaaaabaabaabaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabYubWGceRceRceRcgwcgxbRGbRAbRAbRGbRAbRAbRAcgzbRAcgAbRGaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacgFcgBcgCcgDcgFbYPbYPbYPcamcgHcgGcgJcgIcgLcgKcgNcgMcgOcgOcgPbYMbTkcgQcgTcgScgScgUcbacgVcgScgWcgWcgYcbbcgZcgWcgWchacclcclchechcchcchcchccbcchcchcchfcbgchfchfchfchfchfchfchfcbvcbtbWXbYCcckccaccsccqccucctccwccvbWaccxcczccyccBccAccDccCccEcuvccGccFccIccHccJchrbWibWgbWgbWgbWicbdcbdchMchQchOchPchOchRcbfchUchSchTchTcbjchVchXbTwbYjbYjbYjbYjbYjbYjbYjbYjcaccgscifchYchZciaciacibcguaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabcicciccicciccidcidcieciecieciecijaabaabaaaaaaaaaabpaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaebPIcigceRceRcihciibRGbRAbRAcikbRAbRAbRAciobRAcilbRGaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaceYcimcincimceYbYPcipciqcamcitcfbcircisciyciubYMcivciwcixcizbYMcgQcgQciCcgSciAciBccKciDciHcgWccLciGccMciIciKcgWciMciLciNchcccOccNccRccPcdjcdebYFbYQcdLchfceacdWceccebchfcedcbvcaAcaAcaAcaAcaAcaAcaAcefceecegcaAcDfcDfcDfcDfcDfcDfcDfcDfceicehccGcejcelcekcencemcepceocerceqclpcjFcjHcjGcjIcjGcjGcjLcjJcjKcjPcjMcjNcjOcbjcjQbUtcbnbPtbGGcjTcjScjUcjUcjScjUcjYcgscjVcjWchZciackecjXcguaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaciccjZckacjZcidciecieckbckcckbciecieaabaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaebPIckdceRceRckfbRGbRAbRAbRGckgbRAbRAckjckhbPIbYvaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacgFckicimcimckkcklcfbcfbckmckncfbcfbcisckqckobYMbYMbYMbYMbYMbYMckpcgQciCcgSclRcesceucetckucgWckvcevcexcewcePcgWcfmceQcfnchccfpcfockHckGcfqckIchcchfdgCchfcebcebcfrcebchfcsLcbvchfcfwbUucfCcfAcfEcfDcfGcfFcfIcfHcfKcfJcfMcfLcDfcfNcfPcfOcfRcfQcfTcfScfVcfUcfXcfWcepcfYcgacfZclpclncjGcjGclmclocjGcltclpcbjclqccZclrclrcbjcbmclscbnbPtcgsclvcgscgscgscgscgscgscgscluclwcguclxclzclycguafOafOafOafOafOafOafOafOafOafOafOafOafOafOafOafOafOafOafOafOafOclBcjZcjZclAciecieckbckbclHckbckbciecieaabaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaebPIclCclDclEbRGbRAclFbRGclGclIbRAbPIbPIbYvaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaceYcincincinceYbYPclJclMclKckncfbcfbclLclOclNclQclPclPclPclTcgQcgQcgQciCcgSclRcktclScktclVcgWckvckwclUckwclWcgWclYcHDclZchccmccmacmbcmechbcgXchcchdchgchfchfchichfchfchfcsLcbvchfchkchjchmchlcfEchncfGcfFchocfHchqchpchtchscDfchuchvcDfchxchwchzchychBchAchEchDcepchFcgachGclpclncmMcjGcjGcjGcmQcmOclpcbjcmPccZclrclrcbjcmTbUzcbnbPtcmScmVcmUcgscmWcmYcmXcnbcmZcnacnfcgucnccndcnecgucgscgscgscgEcgEcgEcgEcgEaaaaaaaaaaaaaaaaabaaaaaaaaaaaaaaaaaaaaacnkcieclBciecieckbckbckbckbckbckbckbciecieaabaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaebPIbPIbPIbPIbPIbPIbPIbPIbPIbPIbYvaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabaabafOcgQcngcngcgQcngcngcgQaaaaaacgFcnhcnicnjcgFbYPbYPbYPcamcnmcnlcnocnocnocamcamcgQcnncnpcnrcnqcgQcnscntcgSclRcktcktcktcnvcgWckvckwckwcnuchHcgWcpicHDcnAchcchcchcchcchcchIchcchccnCdgCcsLcsLcsLchfcABchJcsLcbvchfchLchKciEchNcfEciFcfGcfFcfIcfHciOciJciQciPcDfciRciScDfciUbSVchrciVciXciWchrchrcepciYcjaciZclpcjbcodcoicoicoicodcogcodcodcohcojclrclrcbjcokclscbncomcolcooconcorcopcoqcoqcotcoscovcoucoxcowcozcoycoCcoAcoBcoDcoEcoFcoHcoGcoIaabaabaabaabaabaabaabaabaaaaaaaaaaaaaaacidciecbwcbScbSckbckbckbckbckbckbckbckbciecieaabaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaaaaaacgQcoKcoLcgQcoKcoLcgQaaaaaacoOceZcoNceZcoQaaaaabaaacamcamcamcamcamcamcamcoPcgQcoScoRcoUcoTclPcoVcoWcgScoYcoXcpfcktcjccgWcjdckwcjfcjecjgcgWcjicjhcjkcjjcpqcpqcpqcpqcjlcpmcppcpocjncjmcjmcjocjqcjpcjscjrcjtchfcjwcjucjycjxcjAcjzcjCcjBcjCcjDckrcjEckxcksckzckyckAcDfckBcuvckCcjvckDcmDckFckEciYckJckLcgacpRcpTcpRcpUcpWcpVcpRcpXcpYcodcqacpZcdacbjcbjcqccqbcqfcqdcqecqicqgcqhcqlcqjcqkcqncqmcqpcqocqtcqqcqrcqqcqscqrcqrcqucqwcqvcqycqxcqCaabaaaaaaaaaaaaaabaaaaaaaaaaaaaaaaaaaaacieciecdHckbckbckbckbckbckbckbckbckbckbckbciecieaabaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabPIbPIbPIbPIbPIbPIbRGbTobRAcbzbRAcbxcbycbAaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacbDcbBbOccbCbOccbEcbFaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacbGaabaaaaaaaaaaaacamcbIcbHcbKcbJbYMcbNcbLcbMcbRbYMbOwbTycbOcbPcbQbXwcbVcbTcbUcbWcbYcbXbXxcbZcccccbccfccdcceccgccjcchccibXybXzcclccmbEnccnbFOccoccpccrbFObXBbQVbXCcaAcaAbXDbXDcaAbXFbXEbZhbXHbZibXIbWabXKbXMbXLbXMbXObWabXPbWAbXRbWdbXSbXUbXTbXSbXSbWibXVbXWbXQbYkcbdccTccSccVccUccXccWcdbcbfceFchSchTcbjcbjcdccbocddcdfbPEcdhcdgcdicbscdkbYjcdndfcbZZaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabPLbPIcdlcdmcdpcdlcdobRGbRAbRAbRGbRAcdrcdqcdsaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacdvcdtcducducducdtcdwaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacamcdycdxcdAcdzbYLcdBcdDcdCcdEbYMbOwbNwcdFbTybTybYmbYncdIcdJcclcdObYobYpcdMcdNcdNcdQcdPcdRcdNcdNcdTcdNcdNcdScclccmbEncdVcdUcdXbYqcdZcdYbFOchfbYrcaAbZjbYsbYsbXJbZhbZkbZnbZlcaBbZmbZpbZobZrbZqbZtbZsbZvbZubWAcuvchrbZwbZybZxbZAbZzbZBccQbXWbXQbZBcbdcezceyceBceAceDceCceGcbfcjMchScjNcjNcbjceHceJceIceLceKceNceMbGnceOceSbYjcaccLhbGpdbPdbPdbPdbZdbXdbXdcaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabWObWGceRceRceRceRceRceTbRAbRAbRGbPIbPIbPIbPIbPIbPIbPRaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaceVceUceUceUceWaaaaaaaaaaaaaaaaaaaaaceXceZceYceZcfaaaaaaaaaacamcamcamcffcfbcdAcfcbYLcfdcbMcfecfgbYMbOwbNxbTicficflcfkbZDbZCbZFbZEbZHbZGbZIcfscftcftcfxcfvcfvcfvcfvcfvcfvcfvcJfcfycfzcfBbZLbZKbZYbZScabcaacadchfcajcaAcazcalcaCcaEcaEcaDcaGcaFcaIcaHcaKcaJcaMcaLcaOcaNbZvcaPcaQcuvbZzcaRcaTcaScaVcaUcaXcaWcaZcaYcaXcbdcgccgbcgecgdcghcgfcggcbfcgichScjNcjNcbjcgjcgmcgkcglcgncgpcgocgrcgqcgvbYjdcbcgscgtcgscgucgycgucgucgudccaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabaabaabaabaaaaaaaaaaaaaabaabaabaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabYubWGceRceRceRcgwcgxbRGbRAbRAbRGbRAbRAbRAcgzbRAcgAbRGaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacgFcgBcgCcgDcgFbYPbYPbYPcamcgHcgGcgJcgIcgLcgKcgNcgMcgOcgOcgPbYMbTkcgQcgTcgScgScgUcbacgVcgScgWcgWcgYcbbcgZcgWcgWchacclcclchechcchcchcchccbcchcchcchfcbgchfchfchfchfchfchfchfcbvcbtbWXbYCcckccaccsccqccucctccwccvbWaccxcczccyccBccAccDccCccEcuvccGccFccIccHccJchrbWibWgbWgbWgbWicbdcbdchMchQchOchPchOchRcbfchUcjOclqclqcbjchVchXbTwbYjbYjbYjbYjbYjbYjbYjbYjcaccgscifchYchZciaciacibcguaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabcicciccicciccidcidcieciecieciecijaabaabaaaaaaaaaabpaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaebPIcigceRceRcihciibRGbRAbRAcikbRAbRAbRAciobRAcilbRGaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaceYcimcincimceYbYPcipciqcamcitcfbcircisciyciubYMcivciwcixcizbYMcgQcgQciCcgSciAciBccKciDciHcgWccLciGccMciIciKcgWciMciLciNchcccOccNccRccPcdjcdebYFbYQcdLchfceacdWceccebchfcedcbvcaAcaAcaAcaAcaAcaAcaAcefceecegcaAcDfcDfcDfcDfcDfcDfcDfcDfceicehccGcejcelcekcencemcepceocerceqclpcjFcjHcjGcjIcjGcjGcjLcjJcjKcjPclrcmPcmScbjcjQbUtcbnbPtbGGcjTcjScjUcjUcjScjUcjYcgscjVcjWchZciackecjXcguaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaciccjZckacjZcidciecieckbckcckbciecieaabaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaebPIckdceRceRckfbRGbRAbRAbRGckgbRAbRAckjckhbPIbYvaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacgFckicimcimckkcklcfbcfbckmckncfbcfbcisckqckobYMbYMbYMbYMbYMbYMckpcgQciCcgSclRcesceucetckucgWckvcevcexcewcePcgWcfmceQcfnchccfpcfockHckGcfqckIchcchfdgCchfcebcebcfrcebchfcsLcbvchfcfwbUucfCcfAcfEcfDcfGcfFcfIcfHcfKcfJcfMcfLcDfcfNcfPcfOcfRcfQcfTcfScfVcfUcfXcfWcepcfYcgacfZclpclncjGcjGclmclocjGcltclpcbjcmUchScmVcmVcbjcbmclscbnbPtcgsclvcgscgscgscgscgscgscgscluclwcguclxclzclycguafOafOafOafOafOafOafOafOafOafOafOafOafOafOafOafOafOafOafOafOafOclBcjZcjZclAciecieckbckbclHckbckbciecieaabaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaebPIclCclDclEbRGbRAclFbRGclGclIbRAbPIbPIbYvaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaceYcincincinceYbYPclJclMclKckncfbcfbclLclOclNclQclPclPclPclTcgQcgQcgQciCcgSclRcktclScktclVcgWckvckwclUckwclWcgWclYcHDclZchccmccmacmbcmechbcgXchcchdchgchfchfchichfchfchfcsLcbvchfchkchjchmchlcfEchncfGcfFchocfHchqchpchtchscDfchuchvcDfchxchwchzchychBchAchEchDcepchFcgachGclpclncmMcjGcjGcjGcmQcmOclpcbjcohchScmVcmVcbjcmTbUzcbnbPtcojcolcomcgscmWcmYcmXcnbcmZcnacnfcgucnccndcnecgucgscgscgscgEcgEcgEcgEcgEaaaaaaaaaaaaaaaaabaaaaaaaaaaaaaaaaaaaaacnkcieclBciecieckbckbckbckbckbckbckbciecieaabaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaebPIbPIbPIbPIbPIbPIbPIbPIbPIbPIbYvaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabaabafOcgQcngcngcgQcngcngcgQaaaaaacgFcnhcnicnjcgFbYPbYPbYPcamcnmcnlcnocnocnocamcamcgQcnncnpcnrcnqcgQcnscntcgSclRcktcktcktcnvcgWckvckwckwcnuchHcgWcpicHDcnAchcchcchcchcchcchIchcchccnCdgCcsLcsLcsLchfcABchJcsLcbvchfchLchKciEchNcfEciFcfGcfFcfIcfHciOciJciQciPcDfciRciScDfciUbSVchrciVciXciWchrchrcepciYcjaciZclpcjbcodcoicoicoicodcogcodcodconcoocmVcmVcbjcokclscbncpZcqacqecqgcorcopcoqcoqcotcoscovcoucoxcowcozcoycoCcoAcoBcoDcoEcoFcoHcoGcoIaabaabaabaabaabaabaabaabaaaaaaaaaaaaaaacidciecbwcbScbSckbckbckbckbckbckbckbckbciecieaabaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaaaaaacgQcoKcoLcgQcoKcoLcgQaaaaaacoOceZcoNceZcoQaaaaabaaacamcamcamcamcamcamcamcoPcgQcoScoRcoUcoTclPcoVcoWcgScoYcoXcpfcktcjccgWcjdckwcjfcjecjgcgWcjicjhcjkcjjcpqcpqcpqcpqcjlcpmcppcpocjncjmcjmcjocjqcjpcjscjrcjtchfcjwcjucjycjxcjAcjzcjCcjBcjCcjDckrcjEckxcksckzckyckAcDfckBcuvckCcjvckDcmDckFckEciYckJckLcgacpRcpTcpRcpUcpWcpVcpRcpXcpYcodcqicwLchTcbjcbjcqccqbcqfcqdcwMcxacIpcqhcqlcqjcqkcqncqmcqpcqocqtcqqcqrcqqcqscqrcqrcqucqwcqvcqycqxcqCaabaaaaaaaaaaaaaabaaaaaaaaaaaaaaaaaaaaacieciecdHckbckbckbckbckbckbckbckbckbckbckbciecieaabaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafOaaaafOcgQcqzcoLcgQcqzcoLcgQaaaaaaaabaabaabaabaabaabaabaabaabcgQcoLcqAcqBcgQcqEcqGcgQcqHcgQcgQcqFcgQcgQciCcgScqRcqIcqJcqKcqLcgWckMcqOcqScqQcqTcgWckOckNckPcJZcsDcsDcsDcsDcsDcrdcqZcrackQchfcucckRcsLckSckTcsLcsKchfckVckUckXckWcCWckYclackZclbcDfcldclcclfclecDfcDfcDfcDfclhclgckCchCcljclicllclkciYcmdcgacmfcpRcrNcrQcrLcrMcrLcrTcrOcrPcodcbjcrUcbjcbjcrRcrSclsbLRbPtcgscrVcgscgscrWcrYcrXcsacrZcsdcsbcsfcsecsgcsecsgcshcsgcsicgEcsncrwcsqcsraabaabaabaabaabaabaabaabaaaaaaaaaaaaaaacieckbckbckbckbckbckbcdKckbcmzckbckbckbckbckbciecieaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabcsjafOaabaMraMrafOcgQcgQcqFcgQcgQcqFcgQcgQcgQcngcngcngcgQcgQcgQcgQcgQcgQcgQcoLcskcslcgQcsmcgQcgQcsucgQcsocspcoLcgQcqPcgScsycsxcszclRcmgcgWcswckvcsEcsCcmhcgWcsIcsHcmicsDcsDcsNcsOcsGcmjcsQcsJcsKcsLcsUchfcmkcsLckSckTchfchfchfcCWcCWcmlcCWcCWcxhcnwcmmcxhcDfcDfcDfcDfcDfcDfcmncmpcmocmrcmqcmtcmscmvcmucmxcmwciYcgacgaaqEcpRcttctxctwctyctwctActzcrLctuctvctBbLRctCbLRcrSclsbLRbIictFctHctGcgscgscgscgscgsctIcqkctKctDcsccqkctEcqkclucqkctLcgEctOctQctPcgEaabaaaaaaaaaaaaaabaaaaaaaaaaaaaaaaaaaaaciecmCcmCcmCcmCcmCcmCcmEckbcoJcmCcmzckbckbckbckbcieaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabafOafOcngcoLcoLcoLcoLctMctNcoLcoLcoSctUctUctVctUctUctUctUctUctUctUctUctUctUctUctUcoRcgQcskcqzctWcgQcqPctRctRctRctRctRctRcgWcgWcgWcgWcgWcgWcgWcuactXcmBcoMcpgcqDcmFcmFcmGcuicsJcmHcsLcubcuccmIcsLckScmJchicsLcsLcsKcCWcmLcmKcmNcCWcHWcnxcnBcnzcnEcnDcnGcnFcnIcnHcnKcnJcnMcnLckCcnNcnPcnOcnRcnQciYbQXcgacgacpRcuGcnTcnScnUcrLcuKcuJcuOcuLcuScuRcuVbLRcuXcrSclscuMbIibPAcuNcuYcuPcuQbGGbGGcgscvccvecuTcuUcvfcuWcvgcvicuZcvacvbcgEcvjdoKdoFcvraaaaaaaaaaaaabpaaaaaaaaaaaaaaaaaaaaaaaacvscjZcjZcjZcjZcjZcjZcjZcvhcvtckbckbckbckbcvvckccieaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa @@ -9060,57 +9061,57 @@ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacFVcFWcFXcFXcFXcGfcFWcHycFXcANcFXcHBcEacHEcGjcHzcHucHzcHFcHJcHDclXcHDcHDcHKcnAcnAcHDcHGcHDcHDcHDcHDcHDcHDcHDcHDcHDcHDcHHcHIcHMcHLcHOcHNcHUcHTcHPcHQcHRbWTcdGcaycHVcHYcxDcxCcGKckScmJctZcucdducxEddwcQkcxFcxGcUTcxJcxHcxPcxLcUTcxRcxTcQkcyJcsLcrDcyKcyMcyLcpQcrDcyNcyNchfcmAcyPcebctrbQXctsaaaaaaaaaaabaabaabaaaaaaaaaaaaaaaaaaaaacBRcHAcHXcHCcBRcAPcAPcAPcAPcAPcAPcICcHwcIDcIHcIFcIEcAPcAPbGHcFcbGGbZZaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacFVcIIcFXcIGcFXcGfcIJcIMcIKcINcILcITcIzcIBcIAcIQcIRcIScIVcIXcIWcJacIYcJbcqVctScqVcIXcJccIXcIXcIXcIXcIXcIXcIXcIXcIXcIXcJdcHDcKmcJecJicJhcJgcJjcJodcdcfjcfhcgRcfucJycJpcyRcyQcGKckScmJcsLchfchfcySchfcQkcQkcQkcQkcyVcyUcyXcyWcUTcyYczacyZcyJcsLchfchfchfchfchfchfcsLcyNchfczbchfcsLctrbQXcepaaaaaaaaaaaaaabcepcBRcBRcBRcBRcBRcBRcBRcBRcIOcJNcIPcxNcJKcJKcJLcBRaabcAPcAPcJOcAPcJTcJRcJPcAPcJQcuQcFcbGGbZZaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacJUcJScEWcEWcEWcEWcJYcEYcEYcEYcEYcKacEYcJVcJVcJVcJWcJXcKdcEYcJZcKgcKbcKbcKicKbctTcKbcKbcKecKfcKbcKbcKfcKfcKfcKbcKbcKbcKbcKkcKhcLKcKlcKtcKqcKxcKndcgcKncKncKncKnchWcKycKrczccKzcGKczdczecsLczfcsLcYiczgcuccTBcKOcyZcQkcQkcQkcQkcQkcQkcQkcQkcsLcKOchfczhczjcziczkchfczlchfchfchfchfchfctrbQXcepaaaaaaaaaaaaaaacepcKPcKQcKRcKWcIUcKYcKXcxNcJkcJmcJlcxNcJKcKZcLacBRaabaabcLbcLkcLjcLecLlcLgcLbbGGbGGcFccLhbGHaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaalwalwalwalvalvalwalvalvaabamhaabayiaaaayiayicLicJncLmcLmcLmcLpcLocEYbTmcLrcGhcLtcLscLucEYcLycLwcKfcLGcwLcwMcxacLzcLAcLJcLCcLDcKbcLCcLEcLFcLGcLGcLHcKbcLLcVbcHJcLNcnycLTcLMdcicLOdcjcjRdcjcwocmRcLXcLWczncMacGKcGKcbvcsLcnVcsLcYicsLcuEcsLcsLctZcsLcsLcsLcKOctZczocsLcyJcsLcsLcBQcsLczqczpczrcyJczschfcztchfczuchfczvbQXcepaaaaaacepcepcepcepcJKcMgcJKcMlcJrcEHcJNcxNcxQcMocxQcxNcJKcJKcMkcBRaabaaacLbcMucMmcLecLecMncLbcMpbGGcFcbKlcMsaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaalwaaaaaaaabaabaaaaabaabaaaaaaaabaabaabaabaabcLicLicMqcLicLicMrcMvcEYcEYcEYcEYcEYcEYcEYcEYcLicLwcKfcMtcMxcMycMycMycMycMycMCcMzcMDcLGcMAcLGcLGcMBcLGcMEcMGcMFcMHcLNcnycMLcHQcMPcLOdcBcHSdcEcLOdcGcMRcMNcAjczxcAlcAkcAncAmcMXcAmcApcAocArcAqcrecrecAscrecAtcsLcsLcsLcAucyJcyJcsLcBQcAvcAvcAwcAycAxcAzchfcAAcAvcACchfcADcsLcBPcepcepcepbQXcAEcepcJKcJKcJKcNmcJJcNocNncNqcNpcNscNrcxNcNtcNycNxcBRaaaaaacLbcNzcLecNucLecNvcLbbGGbGGcFccMsbGHaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabhnaaaalwaaacNFcNEcNMaaacNFcNEcNMaaacNFcNEcNMaaaaaacLicNAcNBcNCcLicNDcNNcLmcLmcLmcLmcLmcLmcLmcLmcLmcNRcKfcNGcLGcMBcNHcLGcLGcLGcNIcLGcNGcNGcLGcLGcLGcLGcNJcNKcMGcNLcHDcNScyEcHQcHQcNTcLOcNOcNPcNQcLOcNUcHVcJMcKocKccAHcGKcsKcsLcNYcsLcAIdfMcAOcAMcARcARcARcARcBxcATcBycBycBycBycBAcyJcMfczqcyJcyJcebcsLcsLcBCcAvcAvczqcBCcBYcsLcsLcBGcBHciYbQXcBIcepcxNcxNcxNcxNcKpcEHcOlcOncOmcOpcOocxNcKscKVcKTcBRaaaaaacLbcOvcOucOscLecODcLbcOCbGGcFcbGHaabaabaabaabaaaaaaaaaaaaabpaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaalwaaacNFcNZcNMaaacNFcNZcNMaaacNFcNZcNMaaaayicLicNBcNBcNBcLicLicOwcOxcLicLicOxcOxcLicLicOxcOxcLwcKfcNGcOycLGcOzcOAcOBcOBcMAcLGcNGcOGcLGcLGcLGcLGcOHcOEcOJcOIclXcOKcOMcOLcOYcORcLOcNOcOZcONcLOcOOcHVcGKcGKcGKcBJcGKcZScOTcOUcOTcOWcOTcOTcOTcOTcOTcBKcBPcBPcBPcBPcBPcBPcBPcBLcnVcBQcsLcBOcBMcBTcsLcsLchfcBWcBVcBXchfcDbcCXcPhcDecDgciYbQXcDhcepcKPcKQcKRcPmcLccNocPncPjcPocPqcPpcPscPrcPpcPtcBRaaaaaacLbcLbcPycPAcPzcLbcLbbGHbGGcPBcuQcuQcuQbGHaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabpaaaaaaaaaayiaabcNFcNZcNMaaacNFcNZcNMaabcNFcNZcNMaaaaabcLicMrcPucNDcLiaaaaabaaaaaaaaaaaaaaaaabaaaaaacOxcLwcKbcPvcLGcLGcKjcLxcLfcLdcLfcLncLfcLBcLIcLCcPIcNGcNGcNKcPLcPJcPNcPMcPPcPKcPVcPSbgYcPObHWcPQcPRcPYcPTcPUcPUaPdcDjcDicQdcPZcQfcDkcQhcQgcDlcQicQocQmcQpcQpcQpcQpcQpcQpcPwcBPcBLcsLcDmchfchfcBQcBQchfcDnchfchfchfchfchfciYcDobQXctrbQXciYcDpbQXcepcJKcKZcJKcQxcJrcEHcQzcQAcQrcQscEHcEHcQtcEHcQBcBRaaaaabaabcLbcLbcQvcLbcLbaaabGHbGGcFccuQcQwcQCbGHaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaaacNFcNZcNMaabcNFcNZcNMaaacNFcNZcNMaabaaacLicLicOxcLicLiaaaaabaabaaaaabaaaaabaabaaaaaacQycQDcKbcLqcLvcLvcLPcKbcKbcKbcKbcKbcKbcKbcKbcKbcKbcKbcKbcKbcJZcQIcJZcQEcJZcFacQKcxAbHYcQNcQNcQNcyhcQScPTcQLcQMbhCcDtcDscQQcPZcDxcDvcQTcEmcEncRacRdcRcaabcQZcQZcQZcQZcQZcPxcBPcEocsLcMfcsLcyJcyJcsLcsLcsLchfcEpchfcsKcEqciYciYciYctrbQXciYciYciYcepcJKcJKcJKcRDcLQcNocRHcRIcRtcRucRvcRvcRJcEHcRxcBRaabaabaaaaaaaaacRyaaaaaaaaabGHbGGcFccuQbGGbGGbGHaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaalwalwalvayiaaacNFcNZcNMaabcNFcNZcNMaaacNFcNZcNMaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaabcRzcRAcRAcRAcRAcQycRBcLwcRCcRKcREcREcRFcRGcRMcRLcRLcRLcRLcRNcRPcROcRQcRQcRScRScRQcRTcRVcRUcRRcRRcRYcRWcTecSabHZcRXcRXcShcRZcSjcSbbjicErcSdcSecPZcEucSlcSmcEvcSpcSocSrcSqcQpcSncSucSscSwcQZcPxcBQcEwcsLchfcExchfcEycEAcEzcyJchfcECcEBcsLcsLciYcEDcgactrbQXciYcEFcEEcepcxNcxNcxNcxNcLRcEHcQzcEIcSOcQscEHcSGcSHcSHcSPcSJcSKaabaaaaaaaaaaaaaaaaaaaaabGHbGGcPBbGGbGGcSLbGHaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaalwalwalwalvalvalwalvalvaabamhaabayiaaaayiayicLicJncLmcLmcLmcLpcLocEYbTmcLrcGhcLtcLscLucEYcLycLwcKfcJxcKjcLxcLzcLBcLAcLCcLDcLEcKbcLDcLGcLFcJxcJxcLHcKbcLLcVbcHJcLNcnycLTcLMdcicLOdcjcjRdcjcwocmRcLXcLWczncMacGKcGKcbvcsLcnVcsLcYicsLcuEcsLcsLctZcsLcsLcsLcKOctZczocsLcyJcsLcsLcBQcsLczqczpczrcyJczschfcztchfczuchfczvbQXcepaaaaaacepcepcepcepcJKcMgcJKcMlcJrcEHcJNcxNcxQcMocxQcxNcJKcJKcMkcBRaabaaacLbcMucMmcLecLecMncLbcMpbGGcFcbKlcMsaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaalwaaaaaaaabaabaaaaabaabaaaaaaaabaabaabaabaabcLicLicMqcLicLicMrcMvcEYcEYcEYcEYcEYcEYcEYcEYcLicLwcKfcLIcLJcMtcMtcMtcMtcMtcMwcMzcMDcJxcMxcJxcJxcMycJxcMAcMGcMFcMHcLNcnycMLcHQcMPcLOdcBcHSdcEcLOdcGcMRcMNcAjczxcAlcAkcAncAmcMXcAmcApcAocArcAqcrecrecAscrecAtcsLcsLcsLcAucyJcyJcsLcBQcAvcAvcAwcAycAxcAzchfcAAcAvcACchfcADcsLcBPcepcepcepbQXcAEcepcJKcJKcJKcNmcJJcNocNncNqcNpcNscNrcxNcNtcNycNxcBRaaaaaacLbcNzcLecNucLecNvcLbbGGbGGcFccMsbGHaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabhnaaaalwaaacNFcMBcNMaaacNFcMBcNMaaacNFcMBcNMaaaaaacLicNAcNBcNCcLicNDcNNcLmcLmcLmcLmcLmcLmcLmcLmcLmcNRcKfcNGcJxcMycMCcJxcJxcJxcMEcJxcNGcNGcJxcJxcJxcJxcNwcNKcMGcNLcHDcNScyEcHQcHQcNTcLOcNOcNPcNQcLOcNUcHVcJMcKocKccAHcGKcsKcsLcNYcsLcAIdfMcAOcAMcARcARcARcARcBxcATcBycBycBycBycBAcyJcMfczqcyJcyJcebcsLcsLcBCcAvcAvczqcBCcBYcsLcsLcBGcBHciYbQXcBIcepcxNcxNcxNcxNcKpcEHcOlcOncOmcOpcOocxNcKscKVcKTcBRaaaaaacLbcOvcOucOscLecODcLbcOCbGGcFcbGHaabaabaabaabaaaaaaaaaaaaabpaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaalwaaacNFcNEcNMaaacNFcNEcNMaaacNFcNEcNMaaaayicLicNBcNBcNBcLicLicOwcOxcLicLicOxcOxcLicLicOxcOxcLwcKfcNGcNHcJxcNIcNJcNZcNZcMxcJxcNGcOGcJxcJxcJxcJxcOHcOycOJcOIclXcOKcOMcOLcOYcORcLOcNOcOZcONcLOcOOcHVcGKcGKcGKcBJcGKcZScOTcOUcOTcOWcOTcOTcOTcOTcOTcBKcBPcBPcBPcBPcBPcBPcBPcBLcnVcBQcsLcBOcBMcBTcsLcsLchfcBWcBVcBXchfcDbcCXcPhcDecDgciYbQXcDhcepcKPcKQcKRcPmcLccNocPncPjcPocPqcPpcPscPrcPpcPtcBRaaaaaacLbcLbcPycPAcPzcLbcLbbGHbGGcPBcuQcuQcuQbGHaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabpaaaaaaaaaayiaabcNFcNEcNMaaacNFcNEcNMaabcNFcNEcNMaaaaabcLicMrcPucNDcLiaaaaabaaaaaaaaaaaaaaaaabaaaaaacOxcLwcKbcOzcJxcJxcOAcOBcLfcLdcLfcLncLfcOEcOQcLDcPvcNGcNGcNKcPLcPJcPNcPMcPPcPKcPVcPSbgYcPObHWcPQcPRcPYcPTcPUcPUaPdcDjcDicQdcPZcQfcDkcQhcQgcDlcQicQocQmcQpcQpcQpcQpcQpcQpcPwcBPcBLcsLcDmchfchfcBQcBQchfcDnchfchfchfchfchfciYcDobQXctrbQXciYcDpbQXcepcJKcKZcJKcQxcJrcEHcQzcQAcQrcQscEHcEHcQtcEHcQBcBRaaaaabaabcLbcLbcQvcLbcLbaaabGHbGGcFccuQcQwcQCbGHaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaaacNFcNEcNMaabcNFcNEcNMaaacNFcNEcNMaabaaacLicLicOxcLicLiaaaaabaabaaaaabaaaaabaabaaaaaacQycQDcKbcLqcLvcLvcLPcKbcKbcKbcKbcKbcKbcKbcKbcKbcKbcKbcKbcKbcJZcQIcJZcQEcJZcFacQKcxAbHYcQNcQNcQNcyhcQScPTcQLcQMbhCcDtcDscQQcPZcDxcDvcQTcEmcEncRacRdcRcaabcQZcQZcQZcQZcQZcPxcBPcEocsLcMfcsLcyJcyJcsLcsLcsLchfcEpchfcsKcEqciYciYciYctrbQXciYciYciYcepcJKcJKcJKcRDcLQcNocRHcRIcRtcRucRvcRvcRJcEHcRxcBRaabaabaaaaaaaaacRyaaaaaaaaabGHbGGcFccuQbGGbGGbGHaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaalwalwalvayiaaacNFcNEcNMaabcNFcNEcNMaaacNFcNEcNMaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaabcRzcRAcRAcRAcRAcQycRBcLwcRCcRKcREcREcRFcRGcRMcRLcRLcRLcRLcRNcRPcROcRQcRQcRScRScRQcRTcRVcRUcRRcRRcRYcRWcTecSabHZcRXcRXcShcRZcSjcSbbjicErcSdcSecPZcEucSlcSmcEvcSpcSocSrcSqcQpcSncSucSscSwcQZcPxcBQcEwcsLchfcExchfcEycEAcEzcyJchfcECcEBcsLcsLciYcEDcgactrbQXciYcEFcEEcepcxNcxNcxNcxNcLRcEHcQzcEIcSOcQscEHcSGcSHcSHcSPcSJcSKaabaaaaaaaaaaaaaaaaaaaaabGHbGGcPBbGGbGGcSLbGHaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaalwaaaaabaaaaabaabcPCaabaabaabcPCaabaaaaabcPCaabaaaaaaaaaaaaaaaaaaaaaaaaaaacRzcRzcRzcSRcTacSTcRAcTbcTccNRcRCcRCcSScTdcKbcKbcMvcSUcSUcSUcSUcSVcSWcSXcSWcSWcSWcRRcRRcSYcSZcTfcTicTgcRXcTjcTecRXcRXcRXcRXcTkcPTcTlcThcSdcErcSdcSdcPZcEucSlcTncEJcTqcTpcTucTraabcTocTvcSwcTwcQZcPxcBQcELcEKcFpcEMchfcsLcsLcsLcFqcMfcFscyJcFscsLciYbQXcgactrcFvciYbQXcFvcepcKPcKQcKRcTJcLccNocTKcTNcTMcTGcTGcTHcTIcTPcTOcBRaabaabaabaaaaaaaaaaaaaaaaaabGHcTLcFcbGHbGHbGHbGHbGHaabaabaabdoEdoEdoEdoEdoEdoEaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaalvaabcPGcPHcPHcQacyOcyOcyOcyOcyOcyOcyOcyOcyOcyOcyOcyOcQqcPHcPHcPHcPHcPHcRecTZcTYcUbcUacUecUdcUgcUfcNBcLwcUccRCcKbcKbcKbcUhcMvcSUcUkcUjcUmcFxcUicFycFAcFzcUrcFCcUucUscUxcUwcUycFCcUtcUzcTecUvcRXcRXcRXcUAcPTcSdcSdcSdcFEcFDcFGcFFcFIcFHcFLcFJcUPcUNcUScSqcUVcSncUWcSwcSwcQZcPxcBQcGIcsLctZcmJchfchfcMfchfchfchfcyJcyJcyJcsKchfchfchfctrbQXcGLbQXbQXcepcJKcMgcJKcVecJrcEHcVfcUXcUYcEHcUZcVgcxNcxNcxNcBRaaaaaaaabaabaaaaaaaaaaaaaaabGHcJQcFcbGHaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaalwaaaaabaaaaabaabcSkaabaaaaabcSkaabaaaaabcSkaabaaaaaaaaaaaaaaaaaaaaaaaaaaacRzcRzcRzcVlcVdcVmcRAcVncNBcNNcTccTccTccTccVocTccUfcSUcVhcVicVjcGPcGRcGQcGTcGScGVcGUcGXcGWcGZcGYcHbcHacUtcTjcTecVxcVDcRXcRXcVFcPTcLScOFcSdcVIcQPcVJcVEcVLcVKcVOcVMcVQcVPcVQcVRaabcQZcQZcQZcQZcQZcPxcBPcHcctZctZcmJcKOcAucsLcyJcsLcMfcsLcHdchfchfchfcHechfctrbQXciYbUxcHfcepcJKcJKcJKcWicLUcWpcWjcWqcWfcEHcEHcEHcEHcWgcWrcWwaaaaaaaaaaabaabaaaaaaaaaaaabGHbGHcFcbGHaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaalwalwalvalwaabcNFcTQcNMaaacNFcTQcNMaaacNFcTQcNMaabaaaaaaaaaaaaaaaaaaaaaaaaaabaabcRzcRAcRAcRAcRAcWkcWlcWmcNBcWncNBcNBcMvcWocNBcSUcWzcWycVjcHhcUicWscWtcWucWucHkcWDcWCcWFaYtaZBcHkcWBcWHcWJcWIcWLcWKcWPcWMcWScMicUGcWTcWUcWNcWOcWVcWWcWRcWYcWXcXbcXacXdcXccQpcSncXecWZcWZcQZcPxcBPcGIcsLcsLcHlchfchfchfcyPcyPchfchfchfchfcHZcIacsLchfctrcIccIbcIbcIbcIbcIbcIbcIbcIbcMjcXvcXtcXzcXxcNocXAcNocXAcNocXBcWwaaaaaaaaaaaaaabaabaaaaaaaaaaaabGHcFcbGHaabaabaabaabaabaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacNFcTQcNMaabcNFcTQcNMaaacNFcTQcNMaaaaaaaaaaaaaabaaaaaaaaaaaaaabaabaabaaaaaaaabaabcXucXucXucXucXucXucXucXCcXucXucSUcXwcXDcVjcHhcUicXycUicUicXEcRRcXGcXFcUwcIdcIecRRcXLcRXcTecXMcXOcXNcWPcXPcXJaZCcXRcXQcXVcXScXRcXWcXYcXXcYacSdcXTcXUcYccYbaabcTocYfcIfcXZcQZcPxcBQcIgdfMdfMcIhcIichfcIkcIjcImcIlcIocInchfcsLcIpcsLchfctrcIqciYbQXcIrcIsciYcIucItcepcMIcMQcMJcNacMIcMQcNbcNccMIcMQcNlcBRaabaabaabaabaabaabaabaabaabaabbGHcFcbGHbGHbGHaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacYzaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaalvaabcNFcTQcNMaaacNFcTQcNMaaacNFcTQcNMaabaaaaaaaaaaaaaaaaaaaaaaaaaabaabaaaaaaaabaabaabcXucYtcYtcYucYAcYBcYBcYDcYCcYCcYEcYGcYFcVjcHhcVjcYHcVjcVjcVjcRRcYLcIvcIxcIwcIycYIcYJcYQcYRcYMcYMcYMcYXcYUcYZaZHcZacYSbqmcQPcYTcZbcYVcYWcZccSdcXTcZdcZgcZecZhcSncZicWZcWZcQZcPxcBQckKcExchfcyJcJqcyPcJscImcJucJtcJvcsLcJwcYjcIpcJxchfctrcIqciYbQXcpEbQXciYcJzcIrcepcZqcZscZrcxNcZtcZycZvcxNcZzcZBcZAcBRaabaabaaaaaaaaaaaaaaaaaaaaaaaabGHcFcbGGbGGbGHaabaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaalvaabcNFcTQcNMaaacNFcTQcNMaabcNFcTQcNMaabaabaabaabaaaaabaaaaaaaabaabaaaaaaaaaaabaaaaaacXucYtcYtcYucZucZucZucZCcZwcZxcSUcJBcJAcJDcJCcJFcJEcJHcZFcZFcZLcZOcZNcVjcVjcVjcZPcZRcZQcZMcJIcNXcNVdacdabcSUcZScZSdafbqmcQPcZUdagcZWcZXcZYcSdcZZdahdajdaidadcQZcQZcQZcQZcQZcPxcBQckKdaecsLcyJcJqchfcKvcKucKwcJtcKAcIjcKCcKBcKDcJxchfctrcIqcGLbQXcKEcKFciYcKGbQXcepcMkcJKcJKcxNcMkcJKcJKcxNcMkcJKcJKcBRaaaaabaabaaaaaaaaaaaaaaacuQcuQbGHdaucuQbGGbGHbGHbGHdoEdoEaabaabaabaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaalvaabcPGcPHcPHcPIcyOcyOcyOcyOcyOcyOcyOcyOcyOcyOcyOcyOcQacPHcPHcPHcPHcPHcQqcTZcTYcUbcUacUecUdcUgcUfcNBcLwcUccRCcKbcKbcKbcUhcMvcSUcUkcUjcUmcFxcUicFycFAcFzcUrcFCcUucUscUxcUwcUycFCcUtcUzcTecUvcRXcRXcRXcUAcPTcSdcSdcSdcFEcFDcFGcFFcFIcFHcFLcFJcUPcUNcUScSqcUVcSncUWcSwcSwcQZcPxcBQcGIcsLctZcmJchfchfcMfchfchfchfcyJcyJcyJcsKchfchfchfctrbQXcGLbQXbQXcepcJKcMgcJKcVecJrcEHcVfcUXcUYcEHcUZcVgcxNcxNcxNcBRaaaaaaaabaabaaaaaaaaaaaaaaabGHcJQcFcbGHaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaalwaaaaabaaaaabaabcReaabaaaaabcReaabaaaaabcReaabaaaaaaaaaaaaaaaaaaaaaaaaaaacRzcRzcRzcVlcVdcVmcRAcVncNBcNNcTccTccTccTccVocTccUfcSUcVhcVicVjcGPcGRcGQcGTcGScGVcGUcGXcGWcGZcGYcHbcHacUtcTjcTecVxcVDcRXcRXcVFcPTcLScOFcSdcVIcQPcVJcVEcVLcVKcVOcVMcVQcVPcVQcVRaabcQZcQZcQZcQZcQZcPxcBPcHcctZctZcmJcKOcAucsLcyJcsLcMfcsLcHdchfchfchfcHechfctrbQXciYbUxcHfcepcJKcJKcJKcWicLUcWpcWjcWqcWfcEHcEHcEHcEHcWgcWrcWwaaaaaaaaaaabaabaaaaaaaaaaaabGHbGHcFcbGHaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaalwalwalvalwaabcNFcSkcNMaaacNFcSkcNMaaacNFcSkcNMaabaaaaaaaaaaaaaaaaaaaaaaaaaabaabcRzcRAcRAcRAcRAcWkcWlcWmcNBcWncNBcNBcMvcWocNBcSUcWzcWycVjcHhcUicWscWtcWucWucHkcWDcWCcWFaYtaZBcHkcWBcWHcWJcWIcWLcWKcWPcWMcWScMicUGcWTcWUcWNcWOcWVcWWcWRcWYcWXcXbcXacXdcXccQpcSncXecWZcWZcQZcPxcBPcGIcsLcsLcHlchfchfchfcyPcyPchfchfchfchfcHZcIacsLchfctrcIccIbcIbcIbcIbcIbcIbcIbcIbcMjcXvcXtcXzcXxcNocXAcNocXAcNocXBcWwaaaaaaaaaaaaaabaabaaaaaaaaaaaabGHcFcbGHaabaabaabaabaabaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacNFcSkcNMaabcNFcSkcNMaaacNFcSkcNMaaaaaaaaaaaaaabaaaaaaaaaaaaaabaabaabaaaaaaaabaabcXucXucXucXucXucXucXucXCcXucXucSUcXwcXDcVjcHhcUicXycUicUicXEcRRcXGcXFcUwcIdcIecRRcXLcRXcTecXMcXOcXNcWPcXPcXJaZCcXRcXQcXVcXScXRcXWcXYcXXcYacSdcXTcXUcYccYbaabcTocYfcIfcXZcQZcPxcBQcIgdfMdfMcIhcIichfcIkcIjcImcIlcIocInchfcsLcAvcsLchfctrcIqciYbQXcIrcIsciYcIucItcepcMIcMQcMJcNacMIcMQcNbcNccMIcMQcNlcBRaabaabaabaabaabaabaabaabaabaabbGHcFcbGHbGHbGHaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacYzaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaalvaabcNFcSkcNMaaacNFcSkcNMaaacNFcSkcNMaabaaaaaaaaaaaaaaaaaaaaaaaaaabaabaaaaaaaabaabaabcXucYtcYtcYucYAcYBcYBcYDcYCcYCcYEcYGcYFcVjcHhcVjcYHcVjcVjcVjcRRcYLcIvcIxcIwcIycYIcYJcYQcYRcYMcYMcYMcYXcYUcYZaZHcZacYSbqmcQPcYTcZbcYVcYWcZccSdcXTcZdcZgcZecZhcSncZicWZcWZcQZcPxcBQckKcExchfcyJcJqcyPcJscImcJucJtcJvcsLcJwcYjcAvcTQchfctrcIqciYbQXcpEbQXciYcJzcIrcepcZqcZscZrcxNcZtcZycZvcxNcZzcZBcZAcBRaabaabaaaaaaaaaaaaaaaaaaaaaaaabGHcFcbGGbGGbGHaabaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaalvaabcNFcSkcNMaaacNFcSkcNMaabcNFcSkcNMaabaabaabaabaaaaabaaaaaaaabaabaaaaaaaaaaabaaaaaacXucYtcYtcYucZucZucZucZCcZwcZxcSUcJBcJAcJDcJCcJFcJEcJHcZFcZFcZLcZOcZNcVjcVjcVjcZPcZRcZQcZMcJIcNXcNVdacdabcSUcZScZSdafbqmcQPcZUdagcZWcZXcZYcSdcZZdahdajdaidadcQZcQZcQZcQZcQZcPxcBQckKdaecsLcyJcJqchfcKvcKucKwcJtcKAcIjcKCcKBcKDcTQchfctrcIqcGLbQXcKEcKFciYcKGbQXcepcMkcJKcJKcxNcMkcJKcJKcxNcMkcJKcJKcBRaaaaabaabaaaaaaaaaaaaaaacuQcuQbGHdaucuQbGGbGHbGHbGHdoEdoEaabaabaabaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamhaabcNFcTRcNMaaacNFcTRcNMaaacNFcTRcNMaabalvaabaabaabaabaabaabaabaaaaaaaaaaaaaaaaaaaabcXudaodapcZucZucZudaxdardardardardardardarcKHcKJcKIcKKdawdawdawdaFdaydaJdaAdaBdawdaydaKdaRcKLcNXcObdacdabdaGdaHdaIdaTdaUdaLdaMdaNcZcdaOdaPdaVdaYdaWcOkcXcdbacSndbcdbbdbbcQZcPxcBPckKchfcBNdaXcJqchfcKNcKMcJtcIjcJtcKScJtcJucJtcsLchfctrcIqciYbQXciYciYciYbQXbQXcepdbfcKZcJKcxNdbfcKZcJKcxNdbfcKZcJKcBRaaaaaaaabaabaaaaaaaaaaaacuQdbgbGGcFccuQdbhcuQdbibGHaabaabaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaalvaaaaabaaaaaaaaaaabaabaabaaaaaaaabaabaaaalvaabaabaabaabaabaabaaaaaaaaaaaaaaaaaaaaaaabcXudbjcZucZucZucZucZudardbtdblcOqcOtcOrdarcKUdbqdbrcHhcVjcVjdbsdbBdbydbEdbCdbGdbFdbzcSUdbAcKLcNXcPgdacdbJcSUdbDcZSdbKdbLcSddaMdaNdbNcSddaPdaVcXTcXUcPicYbdbIcTodbScLVdbWcQZcPxcBPckKchfdbMdbMcJqchfcLYcsLcLZcIjcMccMbcMecMdcJGcJvcyPctrcIqciYbQXbQXcMhciYbQXaqFcepdbRcJKcJKcxNdbRcJKcJKcxNdbRcJKcJKcBRaaaaaaaaaaabaabaaaaaaaaacuQbGGbGGcFccuQbGGbGGbGGbZZaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaalwalwalvalwalwamhalvalvalvalvalwalvalvalwdbTaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacXudbUcZwcZucZucZudbVdardblcPkcMOcMTcMScMVcMUcMYcMWcMZcVjdcmdcldchcPlcPEcPDcPWcPFdcndcwdbrcHhcWecPXcZMcQccSUdcscZSdctdcLcSddaMdaNcZccSddcvdaVcXTdcOcQecZedcScSndcTdbbdbbcQZcPxcBQckKdcAcuccABcJqchfchfcNdcNecDncNfcNfcNgchfchfchfchfctrcIqciYbQXcNhcKFciYcepcepcepcBRcBRcBRcBRcBRcBRcBRcBRcBRcBRcBRcBRaaaaaaaaaaaaaabaabaaaaaabGHbGHbGHcFccuQdcJdcKbGGbZZaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaalwalwalvalwalwamhalvalvalvalvalwalvalvalwdbTaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacXudbUcZwcZucZucZudbVdardblcPkcMOcMTcMScMVcMUcMYcMWcMZcVjdcmdcldchcPlcPEcPDcPWcPFdcndcwdbrcHhcWecPXcZMcQccSUdcscZSdctdcLcSddaMdaNcZccSddcvdaVcXTdcOcQecZedcScSndcTdbbdbbcQZcPxcBQckKcTUcuccABcJqchfchfcNdcNecDncNfcNfcNgchfchfchfchfctrcIqciYbQXcNhcKFciYcepcepcepcBRcBRcBRcBRcBRcBRcBRcBRcBRcBRcBRcBRaaaaaaaaaaaaaabaabaaaaaabGHbGHbGHcFccuQdcJdcKbGGbZZaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabcXucXucXudcUdcMdcMdcMdardcNcQjdcPdcPdcQdcWdawcNidcXcNkcNjcNjcNWcQVcQFcOaddbcOccQGcQVcOdcOfcOecOhcOgcOicQHddrdbDcZSddmddscSddaMcSdddtcSddaPdaVcXTcXUddxcYbdbIcQZcQZcQZcQZcQZcPxcBQcOjcYlcuccTBcOScOPcOVcOPcOXcsLcsLcsLcsLczfchfcPacPecPbcPfcGLbQXcFvcepcepaaaaaaddFaabaaaaaaaaaaaaaabaaaaaaaaaaaaaaaaabaaaaaaaaaaaaaaaaabaabaaabGHcJQddBddKcuQddJddIbGGbZZaaaaaaaaaaaaaaaaaaabpaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabpaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaddLcXucZucZucZudcMaabaabdarddGcQJdcPdcPcQUdarcRgcRwcRrcSvcStcSNcSxcSUcUBcQbddScVjcVccSUcVpcVqcVqcSvcSvcVucVrcSUddZcZSdeadehcSddaMcSdcZUdagdecdeidaYdejdekcXcdelcSndendemdemcQZcPxcBQcsLckKchfchfcPdchfchfcsLcQlcyJcyJcyJcsLcQucGvcQOcQXcQWcDocepcepcepcepaaaaaaaaaaaaaabaaaaaaaaaaaaaabaaaaaaaaaaaaaaaaabaaaaaaaaaaaaaaaaaaaabaabbGHdbgcAScaccuQcuQcuQbGGbGHaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabpaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabcXucZucZucZudcMaabaaadardescQJdcPdcPcVvdardeucQYcSUdeFcRbcRbcRfcSUcVwdeAdeBdeCcVycSUcRbcRbcRbdeFcSUcRhdeucSUdbDcZSdeOdePdeHdeIdeJdeKdeQdeRcXbdeUcXUdeVcYbdbIcTodeXcRideYcQZcPxcBPcBPckKcprdeScRjdeTchfcsLdfadeZdffcRkcRmcRlchfciYciYcRncepcepaaaaaaaabaaaaaaaaaaaaaabaaaaaaaaaaaaaabaaaaaaaaaaaaaaaaabaaaaaaaaaaaaaaabGHbGHbGHbGHbGHdfhcaccuQdfidfcbGGbGHaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacXucXudcMdcUdfdaaaaaadardfecVzdcPdcPcVAdardfwcRodfzdfkcRpcRqcRpdfocVBdfqdfrdfscQHdfocRpcRpcRpdftdfzcRsdfvcSUdbDdfEdaMdfxdfydeQdfFdfGdfBdfIdfHdfKdfJdfNcZedcScSndfOdemdemcQZcPxcBPcsLcOjcSfcScdfgcsKchfdgmcTBcsLcYidfLcsLcYicBNchfcSgcFcbGHaaaaaaaaaaabaaaaaaaaaaaaaabaaaaaaaaaaaaaabaaaaaaaaaaaaaaaaabaaaaaaaaaaaaaaabGHbGGbGGbGGcJQdfSdfUcuQdfPbGGbGGbGHaabaabaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadfWaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadfXdfYdfYdfZdfYdfYdgadardfVcQjdcPdcPcVCdardaGcSicSUcSUdfodfodfodfocVGcVScVNcSvcVTdfodfodfodfocSUcSUcSydglcSUdbDcZSdgrdgsdfydggdghcSdcSddgtcXWdggcXUdgjcYbdbIcQZcQZcQZcQZcQZcPxcBPcTBcsLdgkdgCcsLdgmchfchfdgnchfdgocpscJGcYichfchfcuQcFcbGHaaaaaaaaaaabaaaaaaaaaaaaaabaaaaaaaaaaaaaabaaaaaaaaaaaaaaaaabaaaaaaaaaaaabGHbGHcuQdgAdgycJQdfScacbGGbGGbGGdgBbGHaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadgDdgudgvdgwdgvdgxdgFdardgzcVWcMMdcPcVXdarcSUcSzcSUdgJafOdgEdfodfodfodfocSAdfodfodfodfodgEafOdgJcSUcSBcSUcSUdbDcZSdgMdeHdgNdgPdgOdgRdgQdgPdgQdgPdgVdeQdgWdbIdmodmodmodmodmocPxdgSdgTdgTdgUdhjdgTdgTdgTdhkdgXdgYdgodgZchfdgochfdhacuQcFcbGHbZZbZZbZZbGHbZZbZZbZZbZZbGHbZZbZZbZZbZZbGHbGHbGHbGHbGHbGHbGHbGHbGHbGHcMsbGHcJQcuQdhbbGGcQwdfScaccuQcuQdbhcuQbGHaabdhcaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadgDdgudgvdgwdgwdhdbJMdardhfcVYdcPdcPcVZdarcSCcSDdhoafOcSEcSFcSFcSFcSFcSFcSIcSFcSFcSFcSFcSFcSMafOdhvcTscTmcSUdhsdaIdhzdhBdhAdhCdhxdhEdhDdhFcSddhHdhGdhJdhIdbIdmoaaaaabaabaaadhMdhLdhOdhNdhTdhSdhVdhUdgTdhYcsLcsLdhPcpsdhQcYicsLcsLcEGdhZdiadiadiadiadiadiadiadiadiadiadiadiadiadiadiediadiadiadiaczLcuQbPAcAUbGGdiccMscuQcuQcuQdbhcuQdfScaccuQdidbGGbGGbGHaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadgDdgudgvdhWdgvdhXdifdardfVcQjdcPdcPcWadarcTtdibdibaaacTxafOafOafOafOafOafOafOafOafOafOafOcTxaaadibdibcTtcSUdaGcZSdhIdikdijdipdioditdhIdipdhIcYbdhIcYbdhIdbIdmoaaaalwalwdiudhLdivdiwdildimdindiydixdgTcsLcsLchfdgodiqchfcYicXrdfMdhRdizdiAdiAdiAdiAdiAdiAdiCdiBdiAdiAdiAdiAdiAdiAdiEdiDdiGdiFdiJdiIdiLdiLdiLdiLdiNdiMdiOdiLdiLdiLdiLdiQcjYcuQdfcbGGdiHbGHaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadiSdfYdfYdfYdfYdfYdiTdardiKcWbdcPdcPcWcdarcTycTzdiPaabcTxafOdjqaaaaaaaaaaaadjqaaaaaadjqafOcTxaabdiRcTCcTAcSUdaGcSUaabdiUaabdiVdiWdiXdiYdiZdiYdjadiYdjadjbdjcdmoaaaalwaabdjddgSdjedjfdjwdjhdjidjxdjkdgTdjlcsLcsLcYidjmchfcYicYidjzbGHbGHbZZbZZbZZbZZbGHbZZbZZbZZbZZbGHbZZbZZbZZbZZbGHdjobGGcuQcTLbGGcuQcuQbZZbZZcxScuQdjAbGGdjAcuQdjCcacdjrbGHbGHbGHbGHbGHaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadardjscWbdcPdcPcWddarcTtdibdjvaaacTDcTEaaaaaaaaaaaaaaadjyaaaaaaaaacUlcTFaaadibdibcTtcSUdaGcSUcQZdjBcTodjBcQZdjBcTodjBcQZdjScTodjUcQZaabdmoaaaalwaabdjEdgSdjFdjfdjGdjVdjidjWdjJdjKdirdjYdjMcYicpscsLdjNdgochfcBPaaaaaaaaaaaaaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaabGHdjXcLhcuQdjPbGGcuQaaaaaaaaaaaacuQbGGbGGdbgdjQdjQdkadkbdjQaaaaabaabaabaabdjTaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadardkccQjdcPdcPcWadarcUncTmdibaaacTxafOaaaaaaaabaabaabaabaabaaaaaaafOcTxaaadibcSCcUocSUdjZcSUcQZdkidkhdkkcQZdkqdkpdkscQZdkwdkudkxcQZaabdmoaaaalwaaadjEdkjdkydkldkmdkndkodkEdkDdgTdkrdgochfdgodkGchfdktdgocBNcBPcBQcBQcBQdmoaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaabGHdkFcuQcuQcQCbGGcuQcuQbZZbZZcuQcuQbGGdkvcLhdjQdkIdkHdkMdjQaaaaaaaabaabaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafOdardardardardardardarcSUcTtdibaaacTxafOdjqaabaabdkzdkAdkBaabdkCaaaafOcTxaaadibcTtcSUcSUdaGcSUcQZdkObbMdkOcQZdkTbbOdkTcQZdkVbdGdkVcQZaabdmoaaaalwaaadjddgSdkJdkKdkLcOQdkWdkYdkXdgTdkPdkQdkZdkSdlacsLcYicYidlbdlddlccsLdlhdmoaaaaabaaabZZbZZbZZbGHbGHbGHbGHbGHbGHdlicJQcuQdljbGGbGGcuQbGGbGGbGGbGGdhbbGGdfPdjQdlodlkdlqdjQaabaaaaaaaaaaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabafOaabafOafOaabaabaabalwalwcSUcSUcUpdibaaacTDcTEaaaaaaaabdledlfdlgaabaaaaaacUlcTFaaadibcUqcSUcSUdaGcSUcQZdkOdlvdkOcQZdkTdlwdkTcQZdkVdlxdkVcQZaabdmoaaaalwaaadjddgSdgSdgSdlldlmdlndlydlndlmdkPdlpcsLdlAdlrdfMddHcYidlscBPcBQcBQcBQcTSaabaabaaabZZdlBdlCcuQbGGdlDdlJdbgcuQdlPbGGcuQdlzbGGbGGdlLbGGbGHbGHbGHbZZbZZbGHdjQdlSdlRdlUdjQaabaaaaabaaaaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadgDdgudgvdgwdgvdgxdgFdardgzcVWcMMdcPcVXdarcSUcSzcSUdgJafOdgEdfodfodfodfocSAdfodfodfodfodgEafOdgJcSUcSBcSUcSUdbDcZSdgMdeHdgNdgPdgOdgRdgQdgPdgQdgPdgVdeQdgWdbIdmodmodmodmodmocPxdgSdgTdgTdgUdhjdgTdgTdgTdhkdgXdgYdgodgZchfdgochfdhacuQcFcbGHbZZbZZbZZbGHbZZbZZbZZbZZbGHbZZbZZbZZbZZbGHbGHbGHbGHbGHbGHbGHbGHbGHbGHcMsbGHcJQcuQcTSbGGcQwdfScaccuQcuQdbhcuQbGHaabdhcaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadgDdgudgvdgwdgwdhdbJMdardhfcVYdcPdcPcVZdarcSCcSDdhoafOcSEcSFcSFcSFcSFcSFcSIcSFcSFcSFcSFcSFcSMafOdhvcTscTmcSUdhsdaIdhzdhBdhAdhCdhxdhEdhDdhFcSddhHdhGdhJdhIdbIdmoaaaaabaabaaadhMdhLcTVcTXcUCcVkcVHcWxdgTdhYcsLcsLdhPcpsdhQcYicTUcsLcEGdhZdiadiadiadiadiadiadiadiadiadiadiadiadiadiadiediadiadiadiaczLcuQbPAcAUbGGdiccMscuQcuQcuQdbhcuQdfScaccuQdidbGGbGGbGHaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadgDdgudgvdhWdgvdhXdifdardfVcQjdcPdcPcWadarcTtdibdibaaacTxafOafOafOafOafOafOafOafOafOafOafOcTxaaadibdibcTtcSUdaGcZSdhIdikdijdipdioditdhIdipdhIcYbdhIcYbdhIdbIdmoaaaalwalwdiudhLcXmcYgcYydavdcrdcudcxdgTcsLcsLchfdgodiqchfcYicXrdfMdhRdizdiAdiAdiAdiAdiAdiAdiCdiBdiAdiAdiAdiAdiAdiAdiEdiDcTTdiFdiJdiIdiLdiLdiLdiLdiNdiMdiOdiLdiLdiLdiLdiQcjYcuQdfcbGGdiHbGHaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadiSdfYdfYdfYdfYdfYdiTdardiKcWbdcPdcPcWcdarcTycTzdiPaabcTxafOdjqaaaaaaaaaaaadjqaaaaaadjqafOcTxaabdiRcTCcTAcSUdaGcSUaabdiUaabdiVdiWdiXdiYdiZdiYdjadiYdjadjbdjcdmoaaaalwaabdjddgSdcydczdcAdcFdcHdcIdcRdgTdjlcsLcsLcYidjmchfcYicYidjzbGHbGHbZZbZZbZZbZZbGHbZZbZZbZZbZZbGHbZZbZZbZZbZZbGHdjobGGcuQcTLbGGcuQcuQbZZbZZcxScuQdjAbGGdjAcuQdjCcacdjrbGHbGHbGHbGHbGHaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadardjscWbdcPdcPcWddarcTtdibdjvaaacTDcTEaaaaaaaaaaaaaaadjyaaaaaaaaacUlcTFaaadibdibcTtcSUdaGcSUcQZdjBcTodjBcQZdjBcTodjBcQZdjScTodjUcQZaabdmoaaaalwaabdjEdgSdcVdczddaddcdcHdddddedjKdirdjYdjMcYicpscsLdjNdgochfcBPaaaaaaaaaaaaaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaabGHdjXcLhcuQdjPbGGcuQaaaaaaaaaaaacuQbGGbGGdbgdjQdjQdkadkbdjQaaaaabaabaabaabdjTaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadardkccQjdcPdcPcWadarcUncTmdibaaacTxafOaaaaaaaabaabaabaabaabaaaaaaafOcTxaaadibcSCcUocSUdjZcSUcQZdkidkhdkkcQZdkqdkpdkscQZdkwdkudkxcQZaabdmoaaaalwaaadjEdkjddfddgddhddiddjddkddldgTdkrdgochfdgodkGchfdktdgocBNcBPcBQcBQcBQdmoaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaabGHdkFcuQcuQcQCbGGcuQcuQbZZbZZcuQcuQbGGdkvcLhdjQdkIdkHdkMdjQaaaaaaaabaabaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafOdardardardardardardarcSUcTtdibaaacTxafOdjqaabaabdkzdkAdkBaabdkCaaaafOcTxaaadibcTtcSUcSUdaGcSUcQZdkObbMdkOcQZdkTbbOdkTcQZdkVbdGdkVcQZaabdmoaaaalwaaadjddgSddnddoddpddqddvddyddzdgTdkPdkQdkZdkSdlacsLcYicYidlbdlddlccsLdlhdmoaaaaabaaabZZbZZbZZbGHbGHbGHbGHbGHbGHdlicJQcuQdljbGGbGGcuQbGGbGGbGGbGGcTSbGGdfPdjQdlodlkdlqdjQaabaaaaaaaaaaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabafOaabafOafOaabaabaabalwalwcSUcSUcUpdibaaacTDcTEaaaaaaaabdledlfdlgaabaaaaaacUlcTFaaadibcUqcSUcSUdaGcSUcQZdkOdlvdkOcQZdkTdlwdkTcQZdkVdlxdkVcQZaabdmoaaaalwaaadjddgSdgSdgSdlldlmdlndlydlndlmdkPdlpcsLdlAdlrdfMddHcYidlscBPcBQcBQcBQddAaabaabaaabZZdlBdlCcuQbGGdlDdlJdbgcuQdlPbGGcuQdlzbGGbGGdlLbGGbGHbGHbGHbZZbZZbGHdjQdlSdlRdlUdjQaabaaaaabaaaaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaaaaabaabaaaaaaaabaabalwcSUcSUcTtdibaaacTxafOaaadlEaabdlFdlGdlHaabaabdjqafOcTxaaadibcTtcSUcSUdaGcSUcQZcQZcQZcQZcQZcQZcQZcQZcQZcQZcQZcQZcQZaabdmoaaaayiaaadjdaaaaaaaaadlIdlmdlVdlXdlWdlmcsLdlMcsLcsLdlNdlOcXrdmcdlQcBPaaaaaaaaaaaaaaaaabaaabZZdlZdmbdlLbGGdgybGGbGGdlLdjobGGcuQcuQcuQcuQcuQbGGbGHaabaaaaaaaaaaabdlTdlTdmddlTdlTaabaabdhcaabaabdjTaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabcSUcSCcUodibaaacTxafOaaaaaaaabaabaabaabaabaaaaaaafOcTxaaadibcUncTmcSUdmecSUcSUcSUcSUcTTdmodmodmodmodmodmodmodmodmodmodmoaabaabaabdjEaaaaaaaaadlYdlmdlndmhdlndlmdmadmidfMdfMdmldmrdmmcBPcBPcBPaaaaaaaaaaaaaaaaabaaabZZdlBdmncuQdbgbGGbGGdmpcuQdmqbGGbGGbGGbGGbGGbGGbGGbGHaabaaaaaaaaaaabaaadlTdmsdlTaaaaabaaaaabaaaaaaaabaaaaaaaaaaaaabpaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabcSUcSCcUodibaaacTxafOaaaaaaaabaabaabaabaabaaaaaaafOcTxaaadibcUncTmcSUdmecSUcSUcSUcSUddCdmodmodmodmodmodmodmodmodmodmodmoaabaabaabdjEaaaaaaaaadlYdlmdlndmhdlndlmdmadmidfMdfMdmldmrdmmcBPcBPcBPaaaaaaaaaaaaaaaaabaaabZZdlBdmncuQdbgbGGbGGdmpcuQdmqbGGbGGbGGbGGbGGbGGbGGbGHaabaaaaaaaaaaabaaadlTdmsdlTaaaaabaaaaabaaaaaaaabaaaaaaaaaaaaabpaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabpaaaaaaaaaaaaaabcSUcTtdibdmjaaacTDcTEaaaaaaaaaaabaaaaaaaaaaaaaaacUlcTFaaadibdibcTtcSUdmkcQRdmvdaGdcqdmoaabaabaabaabaabaabaabdmoaabaabaabaabaabaabdjEaabaabaabdlYdlmdmydmAdmzdmEaabdmacBPcBQdmtcBQcBPcBPaaaaabaaaaaaaaaaaaaaaaabaabbZZbZZbZZbGHbGHbGHbGGcuQbGHdmubGHbGHdbgbPAcLhbKlcMsbGHaabaaaaaaaaaaabaaadlTdmGdlTaaaaabaaaaabaaaaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabcSUcUDdbudiPaabcTxafOdjqaaaaaadjqaaaaaaaaaaaadjqafOcTxaaadiRdbQcUEcSUdmLcSUcSUcSUcSUcSUcSUaaaaaaaabaaaaaaaaadmoaaaaaadmBdmBdmBdmBdmCaaaaaaaabdlYdmDdlmdmOdlmdlmaaaaabaaaaaadmFaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabaaaaaaaaaaaabGHdmbdmMbGHdmNaabbGHbGHbZZbZZcMsbGHaaaaabaaaaaaaaaaabaaaaaacTUaaaaaaaabaaaaabaaaaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabpaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacSUcUFcUIcUHaaacTxafOafOdcfafOafOdcfafOafOdcfafOafOcTxaaacUJcUIcUKcSUdmPdmQdnjdnldnkcSQdmVdmWdmWdmXdmWdmWdmWcTVdmWdmWdmZdnadnbdnodmCaaaaaaaabdnddmodlmdnedlmcTXaabaabaaaaaadngaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabaaaabpaaaaaabGHdnqdnnbGHdnpaabaaaaabaaaaaaaabaaaaaaaabaaaaaaaaaaabaaaaaacUCaaaaaaaabaaaaabaaaaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadnscSUcSUcULaaacUMcSFcSFcUOcSFcSFcUOcSFcSFcUOcSFcSFcUQaaacULcSUcSUcSUdmPdnBdnAdnEdnCdnHdfoaaaaaaaabaaaaaaaaadmodmBdmBdmBbfmbJNdnvdmCaaaaaaaabaabdmodnxdnIdnxdmoaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabaabaaaaaaaaabZZdnJbZZbZZaabdhcaaaaabaaaaaaaabaaaamWamWalwayiaabaabaabaabcUCaabaabaabaabdhcamhamWamWaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabcSUcYXcURcUHaabaabaabaabaaaaaaaaaaaaaaaaabaabaabaabcUJcUUcYXcSUcSUdnDcSUcSUcSUcSUdfocSUaabaabaabaabaabaabcVkbfubjbbhybkJdnGdnFdmCaaaaaaaaaaabdmoaaaaaaaaadmoaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabaaaaaaaaabZZdnPbZZaaaaaaaaaaaaaabaaaaaaaabaaaamWaaaaaaaabaaaaabaaaaaacVHaaaaaaaabaaaaabaaaaaaamWaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaaacSUcSUcURcVacVacVacVacVacVacVacVacVacVacVacVacVacUUcSUcSUcSUdnKdnScSUaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacWxdnTdnWdnVdobdoadofdoeaaaaaaaaaaabdmodmodmodmodmoaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabaaaaaabZZdogbZZaaaaaaaaaaaaaabaaaaaaaabaaaamWaaadohdohdohdohdohaabcTWaabdohdohdohdohdohaaaamWaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacSUcSUcSUcSUcSUcSUcSUcSUcSUcSUcSUcSUcSUcSUcSUcSUcSUaaacSUcSUdnXcSUcSUcSUcSUaaaaaaaaaaaaaaaaaaaaaaaacPxdnZdnZdnZdnZdojdokdocdoddolaabaabaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabaaabZZdombZZaaaaaaaaaaaaaaaaaaaaaaabaaaamWaabcXmcYgcYgcYgcYgcYycTWdavdcrdcrdcrdcrdcuaabamWaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacSUdaGdaGdcxdoudoudowaaaaaaaaaaaaaaaaaaaaaaaadjdaaadnZdnZdoydoxdoAdnZdnZdnZdnZdnZaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabdcydoEdoEaaaaaaaaaaaaaaaaaaaaaaabaaaamWaabdoGdoGdoGdoGdoGaaacTWaaadoGdoGdoGdoGdoGaabamWaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabcSUcUDdbudiPaabcTxafOdjqaaaaaadjqaaaaaaaaaaaadjqafOcTxaaadiRdbQcUEcSUdmLcSUcSUcSUcSUcSUcSUaaaaaaaabaaaaaaaaadmoaaaaaadmBdmBdmBdmBdmCaaaaaaaabdlYdmDdlmdmOdlmdlmaaaaabaaaaaadmFaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabaaaaaaaaaaaabGHdmbdmMbGHdmNaabbGHbGHbZZbZZcMsbGHaaaaabaaaaaaaaaaabaaaaaaddDaaaaaaaabaaaaabaaaaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabpaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacSUcUFcUIcUHaaacTxafOafOdcfafOafOdcfafOafOdcfafOafOcTxaaacUJcUIcUKcSUdmPdmQdnjdnldnkcSQdmVdmWdmWdmXdmWdmWdmWddEdmWdmWdmZdnadnbdnodmCaaaaaaaabdnddmodlmdnedlmddMaabaabaaaaaadngaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabaaaabpaaaaaabGHdnqdnnbGHdnpaabaaaaabaaaaaaaabaaaaaaaabaaaaaaaaaaabaaaaaaddNaaaaaaaabaaaaabaaaaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadnscSUcSUcULaaacUMcSFcSFcUOcSFcSFcUOcSFcSFcUOcSFcSFcUQaaacULcSUcSUcSUdmPdnBdnAdnEdnCdnHdfoaaaaaaaabaaaaaaaaadmodmBdmBdmBbfmbJNdnvdmCaaaaaaaabaabdmodnxdnIdnxdmoaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabaabaaaaaaaaabZZdnJbZZbZZaabdhcaaaaabaaaaaaaabaaaamWamWalwayiaabaabaabaabddNaabaabaabaabdhcamhamWamWaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabcSUcYXcURcUHaabaabaabaabaaaaaaaaaaaaaaaaabaabaabaabcUJcUUcYXcSUcSUdnDcSUcSUcSUcSUdfocSUaabaabaabaabaabaabddObfubjbbhybkJdnGdnFdmCaaaaaaaaaaabdmoaaaaaaaaadmoaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabaaaaaaaaabZZdnPbZZaaaaaaaaaaaaaabaaaaaaaabaaaamWaaaaaaaabaaaaabaaaaaaddPaaaaaaaabaaaaabaaaaaaamWaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaaacSUcSUcURcVacVacVacVacVacVacVacVacVacVacVacVacVacUUcSUcSUcSUdnKdnScSUaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaddQdnTdnWdnVdobdoadofdoeaaaaaaaaaaabdmodmodmodmodmoaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabaaaaaabZZdogbZZaaaaaaaaaaaaaabaaaaaaaabaaaamWaaadohdohdohdohdohaabcTWaabdohdohdohdohdohaaaamWaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacSUcSUcSUcSUcSUcSUcSUcSUcSUcSUcSUcSUcSUcSUcSUcSUcSUaaacSUcSUdnXcSUcSUcSUcSUaaaaaaaaaaaaaaaaaaaaaaaacPxdnZdnZdnZdnZdojdokdocdoddolaabaabaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabaaabZZdombZZaaaaaaaaaaaaaaaaaaaaaaabaaaamWaabddRddTddTddTddTddUcTWddVddWddWddWddWddXaabamWaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacSUdaGdaGddYdoudoudowaaaaaaaaaaaaaaaaaaaaaaaadjdaaadnZdnZdoydoxdoAdnZdnZdnZdnZdnZaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabdebdoEdoEaaaaaaaaaaaaaaaaaaaaaaabaaaamWaabdoGdoGdoGdoGdoGaaacTWaaadoGdoGdoGdoGdoGaabamWaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacSUdjZdaGdoLdoIdoMdozaaaaaaaaaaaaaaaaaaaaaaaadjdaaadnZdoNdoOdoCdoDdoQdoSdoRdoHdnZaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabaaaaaaaaaaaaaaaaaaaaaaabaaaamWaaaaabaaaaabaabaabaaacTWaaaaabaaaaabaaaaabaaaamWaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadoTaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacSUdoJdaGdczdoudoudoVaaaaaaaaaaaaaaaaaaaaaaaadjdaaadnZdoWdoYdoXdoPdoZdpcdpadpgdnZaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabaaaaaaaaaaaaaaaaaaaaaamWaaadohdohdohdohdohaabcTWaabdohdohdohdohdohaabamWaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadnscSUcSUcSUcSUcSUcSUaaaaaaaaaaaaaaaaaaaabaabdjEaabdnZdphdpjdpidpndpkdpsdprdpbdnZaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamWaabcXmcYgcYgcYgcYgcYycTWdavdcrdcrdcrdcrdcFaabamWaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadoTaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacSUdoJdaGdeddoudoudoVaaaaaaaaaaaaaaaaaaaaaaaadjdaaadnZdoWdoYdoXdoPdoZdpcdpadpgdnZaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabaaaaaaaaaaaaaaaaaaaaaamWaaadohdohdohdohdohaabcTWaabdohdohdohdohdohaabamWaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadnscSUcSUcSUcSUcSUcSUaaaaaaaaaaaaaaaaaaaabaabdjEaabdnZdphdpjdpidpndpkdpsdprdpbdnZaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamWaabddRddTddTddTddTddUcTWddVddWddWddWddWdeeaabamWaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabdpddpedpddpfdpudpwdpvdpydpxdpfdpfdpfdpfaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamWaabdoGdoGdoGdoGdoGaaacTWaabdoGdoGdoGdoGdoGaaaamWaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadpddpddpldpmdpddpfdpfdpzdpodpfdppdpqdpqdppdppaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaayiaaaaabaaaaabaaaaabaaadcHaaaaabaaaaabaabaabaabamWaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadpddpCdpEdpDdpFdpfdpIdpHdpJdpfdpKdpAdpAdpLdppaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamWaaadohdohdohdohdohaabcUCaabdohdohdohdohdohaabamWaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabpaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadpddpMdpOdpNdpPdpGdpRdpQdpSdpGdpUdpTdpWdpVdppaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamWaabcXmcYgcYgcYgcYgdcIdcRdcIdcrdcrdcrdcrdcFaabamWaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabpaaaaaaaaaaaaaaaaaaaaadpddpZdqbdqadqddqcdqfdqedqhdqgdqjdqidqldqkdppaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamWaabdoGdoGdoGdoGdoGaaacUCaaadoGdoGdoGdoGdoGaaaamWaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadpddpddqqdqodqsdpfdqxdqtdcpdpfdqCdqBdqEdppdppaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamWaaaaaaaabaabaabaaaaaacUCaabaaaaaaaabaabaaaaaaamWaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabdqmdqpdqFdqpdqmdqmdqGdqrdqmdqpdqHdqpdqmaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamWamWamWamWamWaaaaaaaaacUCaaaaaaaaaamWamWamWayiamWaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadqmdisdqudqpdqvdqwdqIdqydqvdqpdqJdqAdqmaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabpaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamWaabdcVaabamWaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadpddpddpldpmdpddpfdpfdpzdpodpfdppdpqdpqdppdppaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaayiaaaaabaaaaabaaaaabaaadefaaaaabaaaaabaabaabaabamWaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadpddpCdpEdpDdpFdpfdpIdpHdpJdpfdpKdpAdpAdpLdppaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamWaaadohdohdohdohdohaabddNaabdohdohdohdohdohaabamWaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabpaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadpddpMdpOdpNdpPdpGdpRdpQdpSdpGdpUdpTdpWdpVdppaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamWaabddRddTddTddTddTdegdeodegddWddWddWddWdeeaabamWaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabpaaaaaaaaaaaaaaaaaaaaadpddpZdqbdqadqddqcdqfdqedqhdqgdqjdqidqldqkdppaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamWaabdoGdoGdoGdoGdoGaaaddNaaadoGdoGdoGdoGdoGaaaamWaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadpddpddqqdqodqsdpfdqxdqtdcpdpfdqCdqBdqEdppdppaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamWaaaaaaaabaabaabaaaaaaddNaabaaaaaaaabaabaaaaaaamWaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabdqmdqpdqFdqpdqmdqmdqGdqrdqmdqpdqHdqpdqmaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamWamWamWamWamWaaaaaaaaaddNaaaaaaaaaamWamWamWayiamWaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadqmdisdqudqpdqvdqwdqIdqydqvdqpdqJdqAdqmaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabpaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamWaabdepaabamWaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabdqmdqndqudqpdqvdqwdqIdqydqvdqpdqJdqDdqmaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamWaaaaabaaaamWaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadqLdqmdqmdqudqpdqMdqwdqNdqPdqOdqpdqJdqmdqmdqQaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamWamWamWamWamWaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabdqmdqRdqpdqTdqwdqIdqydqvdqpdqUdqmaabaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa diff --git a/_maps/map_files/cyberiad/z2.dmm b/_maps/map_files/cyberiad/z2.dmm index 84182a32068..b1c0544ecfa 100644 --- a/_maps/map_files/cyberiad/z2.dmm +++ b/_maps/map_files/cyberiad/z2.dmm @@ -1,512 +1,459 @@ -"aa" = (/obj/docking_port/stationary/transit{dheight = 9; dir = 2; dwidth = 5; height = 22; id = "syndicate_transit"; name = "syndicate in transit"; width = 18},/turf/space/transit,/area/space) +"aa" = (/obj/docking_port/stationary/transit{dheight = 9;dir = 2;dwidth = 5;height = 22;id = "syndicate_transit";name = "syndicate in transit";width = 18},/turf/space/transit,/area/space) "ab" = (/turf/unsimulated/floor/snow,/area/syndicate_mothership) "ac" = (/obj/structure/flora/grass/brown,/turf/unsimulated/floor/snow,/area/syndicate_mothership) "ad" = (/obj/structure/flora/bush,/turf/unsimulated/floor/snow,/area/syndicate_mothership) "ae" = (/obj/structure/flora/tree/pine{pixel_x = 1},/turf/unsimulated/floor/snow,/area/syndicate_mothership) -"af" = (/obj/machinery/door/airlock/external{id_tag = "syndicate_away"; req_access_txt = "150"},/turf/unsimulated/floor{icon_state = "bar"; dir = 2},/area/syndicate_mothership) +"af" = (/obj/machinery/door/airlock/external{id_tag = "syndicate_away";req_access_txt = "150"},/turf/unsimulated/floor{icon_state = "bar";dir = 2},/area/syndicate_mothership) "ag" = (/turf/unsimulated/floor/snow,/turf/unsimulated/floor/snow{icon_state = "gravsnow_corner"},/area/syndicate_mothership) -"ah" = (/turf/simulated/floor/holofloor/grass,/obj/structure/flora/ausbushes/brflowers,/turf/simulated/floor/holofloor{tag = "icon-wood_siding2 (EAST)"; icon_state = "wood_siding2"; dir = 4},/area/holodeck/source_picnicarea) "ai" = (/turf/unsimulated/floor/snow,/area/space) -"aj" = (/turf/unsimulated/wall/fakeglass{icon_state = "fakewindows"; dir = 1},/area/syndicate_mothership) -"ak" = (/turf/unsimulated/wall/fakeglass{dir = 0; icon_state = "fakewindows"; tag = "icon-fakewindows (EAST)"},/area/syndicate_mothership) -"al" = (/turf/unsimulated/floor/snow,/turf/unsimulated/floor/snow{tag = "icon-gravsnow_corner (WEST)"; icon_state = "gravsnow_corner"; dir = 8},/area/syndicate_mothership) -"am" = (/turf/unsimulated/floor/snow,/turf/unsimulated/floor/snow{tag = "icon-gravsnow_corner (SOUTHEAST)"; icon_state = "gravsnow_corner"; dir = 6},/area/syndicate_mothership) -"an" = (/turf/unsimulated/floor/snow,/turf/unsimulated/floor/snow{tag = "icon-gravsnow_corner (SOUTHWEST)"; icon_state = "gravsnow_corner"; dir = 10},/area/syndicate_mothership) -"ao" = (/turf/unsimulated/floor/snow,/turf/unsimulated/floor/snow{tag = "icon-gravsnow_corner (EAST)"; icon_state = "gravsnow_corner"; dir = 4},/area/syndicate_mothership) +"aj" = (/turf/unsimulated/wall/fakeglass{icon_state = "fakewindows";dir = 1},/area/syndicate_mothership) +"ak" = (/turf/unsimulated/wall/fakeglass{dir = 0;icon_state = "fakewindows";tag = "icon-fakewindows (EAST)"},/area/syndicate_mothership) +"al" = (/turf/unsimulated/floor/snow,/turf/unsimulated/floor/snow{tag = "icon-gravsnow_corner (WEST)";icon_state = "gravsnow_corner";dir = 8},/area/syndicate_mothership) +"am" = (/turf/unsimulated/floor/snow,/turf/unsimulated/floor/snow{tag = "icon-gravsnow_corner (SOUTHEAST)";icon_state = "gravsnow_corner";dir = 6},/area/syndicate_mothership) +"an" = (/turf/unsimulated/floor/snow,/turf/unsimulated/floor/snow{tag = "icon-gravsnow_corner (SOUTHWEST)";icon_state = "gravsnow_corner";dir = 10},/area/syndicate_mothership) +"ao" = (/turf/unsimulated/floor/snow,/turf/unsimulated/floor/snow{tag = "icon-gravsnow_corner (EAST)";icon_state = "gravsnow_corner";dir = 4},/area/syndicate_mothership) "ap" = (/turf/space/transit/east{dir = 8},/area/space) "aq" = (/turf/space/transit/horizontal{dir = 4},/area/space) -"ar" = (/obj/docking_port/stationary/transit{dir = 4; dwidth = 1; height = 4; id = "pod3_transit"; name = "pod 3 in transit"; width = 3},/turf/space/transit/east{dir = 8},/area/space) -"as" = (/obj/docking_port/stationary/transit{dir = 8; dwidth = 10; height = 35; id = "whiteship_transit"; name = "whiteship in transit"; width = 21},/turf/space/transit/horizontal{dir = 4},/area/space) +"ar" = (/obj/docking_port/stationary/transit{dir = 4;dwidth = 1;height = 4;id = "pod3_transit";name = "pod 3 in transit";width = 3},/turf/space/transit/east{dir = 8},/area/space) +"as" = (/obj/docking_port/stationary/transit{dir = 8;dwidth = 10;height = 35;id = "whiteship_transit";name = "whiteship in transit";width = 21},/turf/space/transit/horizontal{dir = 4},/area/space) "at" = (/turf/unsimulated/wall,/area/vox_station) "au" = (/turf/unsimulated/floor/vox,/area/vox_station) -"av" = (/obj/docking_port/stationary/transit{dir = 4; dwidth = 1; height = 4; id = "pod4_transit"; name = "pod 4 in transit"; width = 3},/turf/space/transit/east{dir = 8},/area/space) -"aw" = (/obj/docking_port/stationary/transit{dir = 1; dwidth = 1; height = 4; id = "pod1_transit"; name = "pod 1 in transit"; width = 3},/turf/space/transit,/area/space) -"ax" = (/obj/docking_port/stationary/transit{dir = 1; dwidth = 1; height = 4; id = "pod2_transit"; name = "pod 2 in transit"; width = 3},/turf/space/transit,/area/space) +"av" = (/obj/docking_port/stationary/transit{dir = 4;dwidth = 1;height = 4;id = "pod4_transit";name = "pod 4 in transit";width = 3},/turf/space/transit/east{dir = 8},/area/space) +"aw" = (/obj/docking_port/stationary/transit{dir = 1;dwidth = 1;height = 4;id = "pod1_transit";name = "pod 1 in transit";width = 3},/turf/space/transit,/area/space) +"ax" = (/obj/docking_port/stationary/transit{dir = 1;dwidth = 1;height = 4;id = "pod2_transit";name = "pod 2 in transit";width = 3},/turf/space/transit,/area/space) "ay" = (/obj/vox/win_button,/turf/unsimulated/floor/vox{icon_state = "light_on"},/area/vox_station) -"az" = (/obj/docking_port/stationary{dir = 1; dwidth = 1; height = 4; id = "pod1_away"; name = "recovery ship bay 1"; width = 3},/turf/space,/area/space) -"aA" = (/obj/docking_port/stationary{dir = 1; dwidth = 1; height = 4; id = "pod2_away"; name = "recovery ship bay 2"; width = 3},/turf/space,/area/space) +"az" = (/obj/docking_port/stationary{dir = 1;dwidth = 1;height = 4;id = "pod1_away";name = "recovery ship bay 1";width = 3},/turf/space,/area/space) +"aA" = (/obj/docking_port/stationary{dir = 1;dwidth = 1;height = 4;id = "pod2_away";name = "recovery ship bay 2";width = 3},/turf/space,/area/space) "aB" = (/obj/machinery/door/airlock/shuttle,/turf/simulated/shuttle/plating,/area/centcom/evac) -"aC" = (/obj/docking_port/stationary{dir = 4; dwidth = 1; height = 4; id = "pod3_away"; name = "recovery ship bay 3"; width = 3},/turf/space,/area/space) -"aD" = (/obj/docking_port/stationary{dir = 4; dwidth = 1; height = 4; id = "pod4_away"; name = "recovery ship bay 4"; width = 3},/turf/space,/area/space) -"aE" = (/obj/docking_port/stationary/transit{dir = 8; dwidth = 2; height = 5; id = "laborcamp_transit"; name = "labor in transit"; width = 9},/turf/space/transit,/area/space) -"aF" = (/turf/unsimulated/wall/fakeglass{tag = "icon-fakewindows (WEST)"; icon_state = "fakewindows"; dir = 8},/area/vox_station) -"aG" = (/turf/unsimulated/wall/fakeglass{tag = "icon-fakewindows2 (WEST)"; icon_state = "fakewindows2"; dir = 8},/area/vox_station) -"aH" = (/turf/unsimulated/wall/fakeglass{tag = "icon-fakewindows (EAST)"; icon_state = "fakewindows"; dir = 4},/area/vox_station) +"aC" = (/obj/docking_port/stationary{dir = 4;dwidth = 1;height = 4;id = "pod3_away";name = "recovery ship bay 3";width = 3},/turf/space,/area/space) +"aD" = (/obj/docking_port/stationary{dir = 4;dwidth = 1;height = 4;id = "pod4_away";name = "recovery ship bay 4";width = 3},/turf/space,/area/space) +"aE" = (/obj/docking_port/stationary/transit{dir = 8;dwidth = 2;height = 5;id = "laborcamp_transit";name = "labor in transit";width = 9},/turf/space/transit,/area/space) +"aF" = (/turf/unsimulated/wall/fakeglass{tag = "icon-fakewindows (WEST)";icon_state = "fakewindows";dir = 8},/area/vox_station) +"aG" = (/turf/unsimulated/wall/fakeglass{tag = "icon-fakewindows2 (WEST)";icon_state = "fakewindows2";dir = 8},/area/vox_station) +"aH" = (/turf/unsimulated/wall/fakeglass{tag = "icon-fakewindows (EAST)";icon_state = "fakewindows";dir = 4},/area/vox_station) "aI" = (/obj/machinery/door/airlock/centcom,/turf/unsimulated/floor/vox,/area/vox_station) "aJ" = (/obj/structure/girder/displaced,/turf/unsimulated/floor/vox,/area/vox_station) "aK" = (/obj/structure/closet/crate,/turf/unsimulated/floor/vox,/area/vox_station) -"aL" = (/obj/machinery/computer/shuttle/syndicate/recall,/turf/unsimulated/floor{icon_state = "bar"; dir = 2},/area/syndicate_mothership) -"aM" = (/obj/structure/chair/comfy/red,/obj/effect/landmark{name = "voxstart"},/turf/unsimulated/floor/vox,/area/vox_station) +"aL" = (/obj/machinery/computer/shuttle/syndicate/recall,/turf/unsimulated/floor{icon_state = "bar";dir = 2},/area/syndicate_mothership) "aN" = (/turf/space,/area/space) -"aO" = (/turf/unsimulated/wall{tag = "icon-iron6"; icon_state = "iron6"},/area/space) -"aP" = (/obj/structure/window/reinforced,/turf/unsimulated/wall{tag = "icon-iron12"; icon_state = "iron12"},/area/space) -"aQ" = (/turf/unsimulated/wall{tag = "icon-iron14"; icon_state = "iron14"},/area/space) -"aR" = (/turf/unsimulated/wall{tag = "icon-iron10"; icon_state = "iron10"},/area/space) -"aS" = (/turf/simulated/floor/holofloor/grass,/obj/structure/flora/ausbushes/ywflowers,/turf/simulated/floor/holofloor{tag = "icon-wood_siding2 (EAST)"; icon_state = "wood_siding2"; dir = 4},/area/holodeck/source_picnicarea) -"aT" = (/turf/unsimulated/wall/fakeglass{icon_state = "fakewindows"; dir = 8},/area/syndicate_mothership) -"aU" = (/turf/simulated/floor/holofloor/grass,/obj/structure/flora/ausbushes/grassybush,/turf/simulated/floor/holofloor{tag = "icon-wood_siding5"; icon_state = "wood_siding5"; dir = 2},/area/holodeck/source_picnicarea) -"aV" = (/obj/machinery/door/airlock/external{id_tag = "syndicate_away"; req_access_txt = "150"},/turf/unsimulated/floor{icon_state = "dark"},/area/syndicate_mothership) -"aW" = (/obj/docking_port/stationary{area_type = /area/syndicate_mothership; dheight = 9; dir = 2; dwidth = 5; height = 22; id = "syndicate_away"; name = "syndicate recon outpost"; turf_type = /turf/unsimulated/floor/snow; width = 18},/turf/space,/area/space) -"aX" = (/turf/unsimulated/floor/snow,/turf/unsimulated/floor/snow{tag = "icon-gravsnow_corner (NORTHEAST)"; icon_state = "gravsnow_corner"; dir = 5},/area/syndicate_mothership) -"aY" = (/obj/structure/sign/securearea{desc = "A warning sign which reads 'FOURTH WALL'."; name = "\improper FOURTH WALL"; pixel_x = -32},/turf/unsimulated/floor/snow,/area/syndicate_mothership) -"aZ" = (/obj/machinery/light{dir = 1; on = 1},/turf/unsimulated/floor{icon_state = "bar"; dir = 2},/area/syndicate_mothership) -"ba" = (/turf/unsimulated/floor/snow,/turf/unsimulated/floor/snow{tag = "icon-gravsnow_corner (NORTH)"; icon_state = "gravsnow_corner"; dir = 1},/area/syndicate_mothership) -"bb" = (/obj/machinery/light{dir = 4},/turf/unsimulated/floor{icon_state = "bar"; dir = 2},/area/syndicate_mothership) -"bc" = (/turf/unsimulated/floor/snow,/turf/unsimulated/floor/snow{icon_state = "gravsnow_corner"},/turf/unsimulated/floor/snow{tag = "icon-gravsnow_corner (NORTH)"; icon_state = "gravsnow_corner"; dir = 1},/area/syndicate_mothership) -"bd" = (/obj/machinery/door/airlock/centcom{name = "Shuttle Dock #2"; opacity = 1; req_access_txt = "150"},/turf/unsimulated/floor{icon_state = "bar"; dir = 2},/area/syndicate_mothership) +"aO" = (/turf/unsimulated/wall{tag = "icon-iron6";icon_state = "iron6"},/area/space) +"aP" = (/obj/structure/window/reinforced,/turf/unsimulated/wall{tag = "icon-iron12";icon_state = "iron12"},/area/space) +"aQ" = (/turf/unsimulated/wall{tag = "icon-iron14";icon_state = "iron14"},/area/space) +"aR" = (/turf/unsimulated/wall{tag = "icon-iron10";icon_state = "iron10"},/area/space) +"aS" = (/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) +"aT" = (/turf/unsimulated/wall/fakeglass{icon_state = "fakewindows";dir = 8},/area/syndicate_mothership) +"aU" = (/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) +"aV" = (/obj/machinery/door/airlock/external{id_tag = "syndicate_away";req_access_txt = "150"},/turf/unsimulated/floor{icon_state = "dark"},/area/syndicate_mothership) +"aW" = (/obj/docking_port/stationary{area_type = /area/syndicate_mothership;dheight = 9;dir = 2;dwidth = 5;height = 22;id = "syndicate_away";name = "syndicate recon outpost";turf_type = /turf/unsimulated/floor/snow;width = 18},/turf/space,/area/space) +"aX" = (/turf/unsimulated/floor/snow,/turf/unsimulated/floor/snow{tag = "icon-gravsnow_corner (NORTHEAST)";icon_state = "gravsnow_corner";dir = 5},/area/syndicate_mothership) +"aY" = (/obj/structure/sign/securearea{desc = "A warning sign which reads 'FOURTH WALL'.";name = "\improper FOURTH WALL";pixel_x = -32},/turf/unsimulated/floor/snow,/area/syndicate_mothership) +"aZ" = (/obj/machinery/light{dir = 1;on = 1},/turf/unsimulated/floor{icon_state = "bar";dir = 2},/area/syndicate_mothership) +"ba" = (/turf/unsimulated/floor/snow,/turf/unsimulated/floor/snow{tag = "icon-gravsnow_corner (NORTH)";icon_state = "gravsnow_corner";dir = 1},/area/syndicate_mothership) +"bb" = (/obj/machinery/light{dir = 4},/turf/unsimulated/floor{icon_state = "bar";dir = 2},/area/syndicate_mothership) +"bc" = (/turf/unsimulated/floor/snow,/turf/unsimulated/floor/snow{icon_state = "gravsnow_corner"},/turf/unsimulated/floor/snow{tag = "icon-gravsnow_corner (NORTH)";icon_state = "gravsnow_corner";dir = 1},/area/syndicate_mothership) +"bd" = (/obj/machinery/door/airlock/centcom{name = "Shuttle Dock #2";opacity = 1;req_access_txt = "150"},/turf/unsimulated/floor{icon_state = "bar";dir = 2},/area/syndicate_mothership) "be" = (/obj/machinery/computer/shuttle/ert,/turf/unsimulated/floor{icon_state = "grimy"},/area/centcom/specops) -"bf" = (/obj/machinery/door/airlock/external{id_tag = "specops_away"; name = "Shuttle Hatch"; req_access_txt = "109"},/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/specops) -"bg" = (/obj/docking_port/stationary{dir = 8; dwidth = 2; height = 11; id = "specops_away"; name = "centcom bay 3"; width = 5},/turf/space,/area/space) +"bf" = (/obj/machinery/door/airlock/external{id_tag = "specops_away";name = "Shuttle Hatch";req_access_txt = "109"},/turf/unsimulated/floor{icon_state = "vault";dir = 5},/area/centcom/specops) +"bg" = (/obj/docking_port/stationary{dir = 8;dwidth = 2;height = 11;id = "specops_away";name = "centcom bay 3";width = 5},/turf/space,/area/space) "bh" = (/obj/structure/kitchenspike,/turf/unsimulated/floor/vox,/area/vox_station) "bi" = (/obj/structure/table/wood,/turf/unsimulated/floor/vox,/area/vox_station) -"bj" = (/obj/structure/chair/stool,/obj/effect/landmark{name = "voxstart"},/turf/unsimulated/floor/vox,/area/vox_station) "bk" = (/obj/machinery/door/airlock/centcom{opacity = 1},/turf/unsimulated/floor/vox,/area/vox_station) "bl" = (/turf/unsimulated/floor/plating/vox,/area/vox_station) -"bm" = (/obj/docking_port/stationary/transit{dir = 2; dwidth = 2; height = 18; id = "skipjack_transit"; name = "skipjack in transit"; width = 19},/turf/space/transit,/area/space) -"bn" = (/obj/docking_port/stationary{dir = 2; dwidth = 2; height = 18; id = "skipjack_away"; name = "vox bay 1"; width = 19},/turf/space,/area/space) -"bo" = (/obj/docking_port/stationary/transit{dir = 8; dwidth = 3; height = 5; id = "mining_transit"; name = "mining in transit"; width = 7},/turf/space/transit,/area/space) -"bp" = (/obj/structure/window/reinforced{dir = 4},/turf/unsimulated/wall{tag = "icon-iron3"; icon_state = "iron3"},/area/space) -"bq" = (/turf/simulated/floor/holofloor{tag = "icon-asteroid"; icon_state = "asteroid"; dir = 2},/area/holodeck/source_desert) -"br" = (/turf/simulated/floor/holofloor{tag = "icon-asteroid6"; icon_state = "asteroid6"; dir = 2},/area/holodeck/source_desert) -"bs" = (/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/turf/unsimulated/wall{tag = "icon-iron3"; icon_state = "iron3"},/area/space) +"bm" = (/obj/docking_port/stationary/transit{dir = 2;dwidth = 2;height = 18;id = "skipjack_transit";name = "skipjack in transit";width = 19},/turf/space/transit,/area/space) +"bn" = (/obj/docking_port/stationary{dir = 2;dwidth = 2;height = 18;id = "skipjack_away";name = "vox bay 1";width = 19},/turf/space,/area/space) +"bo" = (/obj/docking_port/stationary/transit{dir = 8;dwidth = 3;height = 5;id = "mining_transit";name = "mining in transit";width = 7},/turf/space/transit,/area/space) +"bp" = (/obj/structure/window/reinforced{dir = 4},/turf/unsimulated/wall{tag = "icon-iron3";icon_state = "iron3"},/area/space) +"bq" = (/turf/simulated/floor/holofloor{tag = "icon-asteroid";icon_state = "asteroid";dir = 2},/area/holodeck/source_desert) +"br" = (/turf/simulated/floor/holofloor{tag = "icon-asteroid6";icon_state = "asteroid6";dir = 2},/area/holodeck/source_desert) +"bs" = (/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/turf/unsimulated/wall{tag = "icon-iron3";icon_state = "iron3"},/area/space) "bt" = (/obj/structure/flora/ausbushes/fullgrass,/turf/simulated/floor/holofloor/grass,/area/holodeck/source_picnicarea) "bu" = (/obj/structure/flora/ausbushes/sparsegrass,/turf/simulated/floor/holofloor/grass,/area/holodeck/source_picnicarea) -"bv" = (/obj/effect/landmark/costume,/obj/structure/rack/holorack,/turf/simulated/floor/holofloor{tag = "icon-cult"; icon_state = "cult"; dir = 2},/area/holodeck/source_theatre) -"bw" = (/obj/structure/rack/holorack,/obj/item/clothing/under/dress/dress_saloon,/obj/item/clothing/head/hairflower,/turf/simulated/floor/holofloor{tag = "icon-cult"; icon_state = "cult"; dir = 2},/area/holodeck/source_theatre) -"bx" = (/turf/simulated/floor/holofloor{icon_state = "engine"; name = "Holodeck Projector Floor"},/area/holodeck/source_wildlife) -"by" = (/turf/simulated/floor/holofloor{icon_state = "engine"; name = "Holodeck Projector Floor"},/area/holodeck/source_plating) -"bz" = (/turf/simulated/floor/holofloor{icon_state = "engine"; name = "Burn-Mix Floor"; nitrogen = 0; oxygen = 2500; temperature = 370; toxins = 5000},/area/holodeck/source_burntest) -"bA" = (/turf/simulated/floor/holofloor{dir = 9; icon_state = "red"},/area/holodeck/source_emptycourt) -"bB" = (/turf/simulated/floor/holofloor{dir = 1; icon_state = "red"},/area/holodeck/source_emptycourt) -"bC" = (/turf/simulated/floor/holofloor{dir = 5; icon_state = "red"},/area/holodeck/source_emptycourt) -"bD" = (/obj/structure/window/reinforced{dir = 8},/turf/unsimulated/wall{tag = "icon-iron3"; icon_state = "iron3"},/area/space) -"bE" = (/obj/structure/flora/ausbushes/fullgrass,/turf/simulated/floor/holofloor{tag = "icon-asteroid"; icon_state = "asteroid"; dir = 2},/area/holodeck/source_desert) -"bF" = (/turf/simulated/floor/holofloor{tag = "icon-asteroid8 (EAST)"; icon_state = "asteroid8"; dir = 4},/area/holodeck/source_desert) +"bv" = (/obj/effect/landmark/costume,/obj/structure/rack/holorack,/turf/simulated/floor/holofloor{tag = "icon-cult";icon_state = "cult";dir = 2},/area/holodeck/source_theatre) +"bw" = (/obj/structure/rack/holorack,/obj/item/clothing/under/dress/dress_saloon,/obj/item/clothing/head/hairflower,/turf/simulated/floor/holofloor{tag = "icon-cult";icon_state = "cult";dir = 2},/area/holodeck/source_theatre) +"bx" = (/turf/simulated/floor/holofloor{icon_state = "engine";name = "Holodeck Projector Floor"},/area/holodeck/source_wildlife) +"by" = (/turf/simulated/floor/holofloor{icon_state = "engine";name = "Holodeck Projector Floor"},/area/holodeck/source_plating) +"bz" = (/turf/simulated/floor/holofloor{icon_state = "engine";name = "Burn-Mix Floor";nitrogen = 0;oxygen = 2500;temperature = 370;toxins = 5000},/area/holodeck/source_burntest) +"bA" = (/turf/simulated/floor/holofloor{dir = 9;icon_state = "red"},/area/holodeck/source_emptycourt) +"bB" = (/turf/simulated/floor/holofloor{dir = 1;icon_state = "red"},/area/holodeck/source_emptycourt) +"bC" = (/turf/simulated/floor/holofloor{dir = 5;icon_state = "red"},/area/holodeck/source_emptycourt) +"bD" = (/obj/structure/window/reinforced{dir = 8},/turf/unsimulated/wall{tag = "icon-iron3";icon_state = "iron3"},/area/space) +"bE" = (/obj/structure/flora/ausbushes/fullgrass,/turf/simulated/floor/holofloor{tag = "icon-asteroid";icon_state = "asteroid";dir = 2},/area/holodeck/source_desert) +"bF" = (/turf/simulated/floor/holofloor{tag = "icon-asteroid8 (EAST)";icon_state = "asteroid8";dir = 4},/area/holodeck/source_desert) "bG" = (/obj/structure/flora/ausbushes/ywflowers,/turf/simulated/floor/holofloor/grass,/area/holodeck/source_picnicarea) "bH" = (/obj/structure/flora/ausbushes/brflowers,/turf/simulated/floor/holofloor/grass,/area/holodeck/source_picnicarea) -"bI" = (/turf/simulated/floor/holofloor{tag = "icon-cult"; icon_state = "cult"; dir = 2},/area/holodeck/source_theatre) -"bJ" = (/obj/effect/landmark{name = "Holocarp Spawn"},/turf/simulated/floor/holofloor{icon_state = "engine"; name = "Holodeck Projector Floor"},/area/holodeck/source_wildlife) -"bK" = (/obj/effect/landmark{name = "Atmospheric Test Start"},/turf/simulated/floor/holofloor{icon_state = "engine"; name = "Burn-Mix Floor"; nitrogen = 0; oxygen = 2500; temperature = 370; toxins = 5000},/area/holodeck/source_burntest) -"bL" = (/turf/simulated/floor/holofloor{dir = 8; icon_state = "red"},/area/holodeck/source_emptycourt) +"bI" = (/turf/simulated/floor/holofloor{tag = "icon-cult";icon_state = "cult";dir = 2},/area/holodeck/source_theatre) +"bJ" = (/obj/effect/landmark{name = "Holocarp Spawn"},/turf/simulated/floor/holofloor{icon_state = "engine";name = "Holodeck Projector Floor"},/area/holodeck/source_wildlife) +"bK" = (/obj/effect/landmark{name = "Atmospheric Test Start"},/turf/simulated/floor/holofloor{icon_state = "engine";name = "Burn-Mix Floor";nitrogen = 0;oxygen = 2500;temperature = 370;toxins = 5000},/area/holodeck/source_burntest) +"bL" = (/turf/simulated/floor/holofloor{dir = 8;icon_state = "red"},/area/holodeck/source_emptycourt) "bM" = (/turf/simulated/floor/holofloor,/area/holodeck/source_emptycourt) -"bN" = (/turf/simulated/floor/holofloor{dir = 4; icon_state = "red"},/area/holodeck/source_emptycourt) -"bO" = (/turf/simulated/floor/holofloor{tag = "icon-asteroid2 (EAST)"; icon_state = "asteroid2"; dir = 4},/area/holodeck/source_desert) -"bP" = (/turf/simulated/floor/holofloor/grass,/obj/structure/flora/ausbushes/grassybush,/turf/simulated/floor/holofloor{tag = "icon-wood_siding9"; icon_state = "wood_siding9"; dir = 2},/area/holodeck/source_picnicarea) -"bQ" = (/turf/simulated/floor/holofloor/grass,/obj/structure/flora/ausbushes/grassybush,/turf/simulated/floor/holofloor{tag = "icon-wood_siding6"; icon_state = "wood_siding6"; dir = 2},/area/holodeck/source_picnicarea) -"bR" = (/obj/structure/flora/ausbushes/sparsegrass,/turf/simulated/floor/holofloor{tag = "icon-asteroid"; icon_state = "asteroid"; dir = 2},/area/holodeck/source_desert) -"bS" = (/turf/simulated/floor/holofloor{tag = "icon-asteroid11 (EAST)"; icon_state = "asteroid11"; dir = 4},/area/holodeck/source_desert) -"bT" = (/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/holofloor{tag = "icon-asteroid"; icon_state = "asteroid"; dir = 2},/area/holodeck/source_picnicarea) -"bU" = (/turf/simulated/floor/holofloor{tag = "icon-wood (EAST)"; icon_state = "wood"; dir = 4},/turf/simulated/floor/holofloor{tag = "icon-siding1"; icon_state = "siding1"; dir = 2},/area/holodeck/source_theatre) -"bV" = (/turf/simulated/floor/holofloor{tag = "icon-rampbottom"; icon_state = "rampbottom"; dir = 2},/area/holodeck/source_theatre) +"bN" = (/turf/simulated/floor/holofloor{dir = 4;icon_state = "red"},/area/holodeck/source_emptycourt) +"bO" = (/turf/simulated/floor/holofloor{tag = "icon-asteroid2 (EAST)";icon_state = "asteroid2";dir = 4},/area/holodeck/source_desert) +"bP" = (/turf/simulated/floor/holofloor/grass,/obj/structure/flora/ausbushes/brflowers,/turf/simulated/floor/holofloor{tag = "icon-wood_siding2 (EAST)";icon_state = "wood_siding2";dir = 4},/area/holodeck/source_picnicarea) +"bQ" = (/turf/simulated/floor/holofloor/grass,/obj/structure/flora/ausbushes/ywflowers,/turf/simulated/floor/holofloor{tag = "icon-wood_siding2 (EAST)";icon_state = "wood_siding2";dir = 4},/area/holodeck/source_picnicarea) +"bR" = (/obj/structure/flora/ausbushes/sparsegrass,/turf/simulated/floor/holofloor{tag = "icon-asteroid";icon_state = "asteroid";dir = 2},/area/holodeck/source_desert) +"bS" = (/turf/simulated/floor/holofloor{tag = "icon-asteroid11 (EAST)";icon_state = "asteroid11";dir = 4},/area/holodeck/source_desert) +"bT" = (/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/holofloor{tag = "icon-asteroid";icon_state = "asteroid";dir = 2},/area/holodeck/source_picnicarea) +"bU" = (/turf/simulated/floor/holofloor{tag = "icon-wood (EAST)";icon_state = "wood";dir = 4},/turf/simulated/floor/holofloor{tag = "icon-siding1";icon_state = "siding1";dir = 2},/area/holodeck/source_theatre) +"bV" = (/turf/simulated/floor/holofloor{tag = "icon-rampbottom";icon_state = "rampbottom";dir = 2},/area/holodeck/source_theatre) "bW" = (/turf/space/transit/horizontal,/area/space) -"bX" = (/obj/docking_port/stationary/transit{dwidth = 3; height = 5; id = "science_transit"; name = "science in transit"; turf_type = /turf/space/transit/horizontal; width = 7},/turf/space/transit/horizontal,/area/space) -"bY" = (/obj/docking_port/stationary/transit{dir = 2; dwidth = 8; height = 15; id = "admin_transit"; name = "admin in transit"; width = 18},/turf/space/transit/horizontal,/area/space) +"bX" = (/obj/docking_port/stationary/transit{dwidth = 3;height = 5;id = "science_transit";name = "science in transit";turf_type = /turf/space/transit/horizontal;width = 7},/turf/space/transit/horizontal,/area/space) +"bY" = (/obj/docking_port/stationary/transit{dir = 2;dwidth = 8;height = 15;id = "admin_transit";name = "admin in transit";width = 18},/turf/space/transit/horizontal,/area/space) "bZ" = (/turf/unsimulated/wall,/area/space) -"ca" = (/turf/simulated/floor/holofloor{tag = "icon-asteroid7"; icon_state = "asteroid7"; dir = 2},/area/holodeck/source_desert) -"cb" = (/turf/simulated/floor/holofloor/grass,/obj/structure/flora/ausbushes/grassybush,/turf/simulated/floor/holofloor{tag = "icon-wood_siding10"; icon_state = "wood_siding10"; dir = 2},/area/holodeck/source_picnicarea) -"cc" = (/obj/structure/chair/stool,/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/holofloor{tag = "icon-asteroid"; icon_state = "asteroid"; dir = 2},/area/holodeck/source_picnicarea) -"cd" = (/obj/structure/table/wood,/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/holofloor{tag = "icon-asteroid"; icon_state = "asteroid"; dir = 2},/area/holodeck/source_picnicarea) -"ce" = (/turf/simulated/floor/holofloor/grass,/obj/structure/flora/ausbushes/brflowers,/turf/simulated/floor/holofloor{tag = "icon-wood_siding1"; icon_state = "wood_siding1"; dir = 2},/area/holodeck/source_picnicarea) -"cf" = (/turf/simulated/floor/holofloor{tag = "icon-wood (EAST)"; icon_state = "wood"; dir = 4},/area/holodeck/source_theatre) -"cg" = (/turf/simulated/floor/holofloor{tag = "icon-carpet6-2 (EAST)"; icon_state = "carpet6-2"; dir = 4},/area/holodeck/source_theatre) -"ch" = (/turf/simulated/floor/holofloor{tag = "icon-carpet14-10 (EAST)"; icon_state = "carpet14-10"; dir = 4},/area/holodeck/source_theatre) -"ci" = (/turf/simulated/floor/holofloor{tag = "icon-carpet10-8 (EAST)"; icon_state = "carpet10-8"; dir = 4},/area/holodeck/source_theatre) +"ca" = (/turf/simulated/floor/holofloor{tag = "icon-asteroid7";icon_state = "asteroid7";dir = 2},/area/holodeck/source_desert) +"cb" = (/turf/simulated/floor/holofloor/grass,/obj/structure/flora/ausbushes/grassybush,/turf/simulated/floor/holofloor{tag = "icon-wood_siding5";icon_state = "wood_siding5";dir = 2},/area/holodeck/source_picnicarea) +"cd" = (/obj/structure/table/wood,/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/holofloor{tag = "icon-asteroid";icon_state = "asteroid";dir = 2},/area/holodeck/source_picnicarea) +"ce" = (/turf/simulated/floor/holofloor/grass,/obj/structure/flora/ausbushes/grassybush,/turf/simulated/floor/holofloor{tag = "icon-wood_siding9";icon_state = "wood_siding9";dir = 2},/area/holodeck/source_picnicarea) +"cf" = (/turf/simulated/floor/holofloor{tag = "icon-wood (EAST)";icon_state = "wood";dir = 4},/area/holodeck/source_theatre) +"cg" = (/turf/simulated/floor/holofloor{tag = "icon-carpet6-2 (EAST)";icon_state = "carpet6-2";dir = 4},/area/holodeck/source_theatre) +"ch" = (/turf/simulated/floor/holofloor{tag = "icon-carpet14-10 (EAST)";icon_state = "carpet14-10";dir = 4},/area/holodeck/source_theatre) +"ci" = (/turf/simulated/floor/holofloor{tag = "icon-carpet10-8 (EAST)";icon_state = "carpet10-8";dir = 4},/area/holodeck/source_theatre) "cj" = (/turf/unsimulated/wall,/area/centcom/ferry) "ck" = (/turf/space/transit,/area/space) -"cl" = (/obj/docking_port/stationary/transit{dir = 4; dwidth = 11; height = 13; id = "emergency_transit"; name = "emergency in transit"; width = 24},/turf/space/transit,/area/space) -"cm" = (/obj/docking_port/stationary/transit{dir = 8; dwidth = 5; height = 7; id = "supply_transit"; name = "supply in transit"; width = 12},/turf/space/transit,/area/space) -"cn" = (/obj/machinery/door/airlock/external{aiControlDisabled = 1; frequency = 1379; hackProof = 1; icon_state = "door_locked"; id_tag = "emergency_away"; locked = 1; name = "Arrival Airlock"; req_access = null; req_access_txt = "0"},/turf/unsimulated/floor{name = "plating"},/area/centcom/evac) +"cl" = (/obj/docking_port/stationary/transit{dir = 4;dwidth = 11;height = 13;id = "emergency_transit";name = "emergency in transit";width = 24},/turf/space/transit,/area/space) +"cm" = (/obj/docking_port/stationary/transit{dir = 8;dwidth = 5;height = 7;id = "supply_transit";name = "supply in transit";width = 12},/turf/space/transit,/area/space) +"cn" = (/obj/machinery/door/airlock/external{aiControlDisabled = 1;frequency = 1379;hackProof = 1;icon_state = "door_locked";id_tag = "emergency_away";locked = 1;name = "Arrival Airlock";req_access = null;req_access_txt = "0"},/turf/unsimulated/floor{name = "plating"},/area/centcom/evac) "co" = (/obj/machinery/computer/cryopod{pixel_y = 32},/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/specops) "cp" = (/turf/unsimulated/floor{name = "plating"},/area/centcom/ferry) -"cq" = (/turf/unsimulated/wall/fakeglass{icon_state = "fakewindows"; dir = 1},/area/centcom/ferry) +"cq" = (/turf/unsimulated/wall/fakeglass{icon_state = "fakewindows";dir = 1},/area/centcom/ferry) "cr" = (/turf/unsimulated/floor{name = "plating"},/area/space) -"cs" = (/turf/unsimulated/wall/fakeglass{icon_state = "fakewindows2"; dir = 1},/area/centcom/ferry) -"ct" = (/turf/simulated/floor/holofloor{tag = "icon-asteroid5"; icon_state = "asteroid5"; dir = 2},/area/holodeck/source_desert) -"cu" = (/turf/simulated/floor/holofloor/grass,/obj/structure/flora/ausbushes/ywflowers,/turf/simulated/floor/holofloor{tag = "icon-wood_siding1"; icon_state = "wood_siding1"; dir = 2},/area/holodeck/source_picnicarea) -"cv" = (/obj/docking_port/stationary{area_type = /area/syndicate_mothership; dir = 1; dwidth = 11; height = 18; id = "emergency_syndicate"; name = "404 Not Found"; turf_type = /turf/unsimulated/floor/snow; width = 29},/turf/unsimulated/floor/snow,/area/syndicate_mothership) -"cw" = (/obj/structure/chair/stool,/turf/simulated/floor/holofloor{tag = "icon-carpet7-3 (EAST)"; icon_state = "carpet7-3"; dir = 4},/area/holodeck/source_theatre) -"cx" = (/obj/structure/chair/stool,/turf/simulated/floor/holofloor{tag = "icon-carpet15-15 (EAST)"; icon_state = "carpet15-15"; dir = 4},/area/holodeck/source_theatre) -"cy" = (/obj/structure/chair/stool,/turf/simulated/floor/holofloor{tag = "icon-carpet11-12 (EAST)"; icon_state = "carpet11-12"; dir = 4},/area/holodeck/source_theatre) -"cz" = (/turf/simulated/floor/holofloor{dir = 8; icon_state = "green"},/area/holodeck/source_emptycourt) -"cA" = (/turf/simulated/floor/holofloor{dir = 4; icon_state = "green"},/area/holodeck/source_emptycourt) -"cB" = (/turf/unsimulated/wall/fakeglass{tag = "icon-fakewindows (SOUTHEAST)"; icon_state = "fakewindows"; dir = 6},/area/centcom/ferry) -"cC" = (/obj/structure/sign/securearea{desc = "A warning sign which reads 'EXTERNAL AIRLOCK'"; icon_state = "space"; layer = 4; name = "EXTERNAL AIRLOCK"; pixel_x = 0},/turf/unsimulated/wall/fakeglass{icon_state = "fakewindows"; dir = 8},/area/centcom/ferry) -"cD" = (/obj/structure/chair/stool/bar,/turf/unsimulated/floor{icon_state = "cafeteria"; dir = 2},/area/ninja/holding) -"cE" = (/obj/docking_port/stationary{dir = 8; dwidth = 2; height = 12; id = "ferry_away"; name = "centcom bay 2"; width = 5},/turf/space,/area/space) -"cF" = (/turf/unsimulated/floor{tag = "icon-warndark (EAST)"; icon_state = "warndark"; dir = 4},/area/centcom/ferry) -"cG" = (/obj/machinery/door/airlock/external{id_tag = "ferry_away"; name = "Ferry Airlock"; req_access_txt = "0"},/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/ferry) +"cs" = (/turf/unsimulated/wall/fakeglass{icon_state = "fakewindows2";dir = 1},/area/centcom/ferry) +"ct" = (/turf/simulated/floor/holofloor{tag = "icon-asteroid5";icon_state = "asteroid5";dir = 2},/area/holodeck/source_desert) +"cu" = (/turf/simulated/floor/holofloor/grass,/obj/structure/flora/ausbushes/grassybush,/turf/simulated/floor/holofloor{tag = "icon-wood_siding6";icon_state = "wood_siding6";dir = 2},/area/holodeck/source_picnicarea) +"cv" = (/turf/simulated/floor/holofloor/grass,/obj/structure/flora/ausbushes/grassybush,/turf/simulated/floor/holofloor{tag = "icon-wood_siding10";icon_state = "wood_siding10";dir = 2},/area/holodeck/source_picnicarea) +"cz" = (/turf/simulated/floor/holofloor{dir = 8;icon_state = "green"},/area/holodeck/source_emptycourt) +"cA" = (/turf/simulated/floor/holofloor{dir = 4;icon_state = "green"},/area/holodeck/source_emptycourt) +"cB" = (/turf/unsimulated/wall/fakeglass{tag = "icon-fakewindows (SOUTHEAST)";icon_state = "fakewindows";dir = 6},/area/centcom/ferry) +"cC" = (/obj/structure/sign/securearea{desc = "A warning sign which reads 'EXTERNAL AIRLOCK'";icon_state = "space";layer = 4;name = "EXTERNAL AIRLOCK";pixel_x = 0},/turf/unsimulated/wall/fakeglass{icon_state = "fakewindows";dir = 8},/area/centcom/ferry) +"cE" = (/obj/docking_port/stationary{dir = 8;dwidth = 2;height = 12;id = "ferry_away";name = "centcom bay 2";width = 5},/turf/space,/area/space) +"cF" = (/turf/unsimulated/floor{tag = "icon-warndark (EAST)";icon_state = "warndark";dir = 4},/area/centcom/ferry) +"cG" = (/obj/machinery/door/airlock/external{id_tag = "ferry_away";name = "Ferry Airlock";req_access_txt = "0"},/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/ferry) "cH" = (/obj/machinery/computer/shuttle/ferry,/turf/unsimulated/floor{name = "plating"},/area/centcom/evac) -"cI" = (/turf/unsimulated/wall/fakeglass{icon_state = "fakewindows"; dir = 5},/area/centcom/ferry) +"cI" = (/turf/unsimulated/wall/fakeglass{icon_state = "fakewindows";dir = 5},/area/centcom/ferry) "cJ" = (/turf/unsimulated/wall/fakeglass,/area/centcom/ferry) "cK" = (/obj/machinery/computer/shuttle/admin,/turf/unsimulated/floor{name = "plating"},/area/centcom/evac) -"cL" = (/obj/machinery/door/airlock/external{id_tag = "admin_away"; name = "Administration Shuttle"; opacity = 0; req_access_txt = "106"},/turf/unsimulated/floor{name = "plating"},/area/centcom/evac) -"cM" = (/obj/docking_port/stationary{dir = 2; dwidth = 8; height = 15; id = "admin_away"; name = "centcom bay 1"; width = 18},/turf/space,/area/space) -"cN" = (/obj/docking_port/stationary/transit{dir = 8; dwidth = 2; height = 11; id = "specops_transit"; name = "specops in transit"; turf_type = /turf/space/transit/horizontal; width = 5},/turf/space/transit/horizontal,/area/space) -"cO" = (/obj/docking_port/stationary/transit{dir = 8; dwidth = 2; height = 12; id = "ferry_transit"; name = "ferry in transit"; turf_type = /turf/space/transit/horizontal; width = 5},/turf/space/transit/horizontal,/area/space) -"cP" = (/obj/docking_port/stationary/transit{dir = 2; dwidth = 3; height = 5; id = "engineering_transit"; name = "engineering in transit"; turf_type = /turf/space/transit/horizontal; width = 7},/turf/space/transit/horizontal,/area/space) -"cQ" = (/obj/structure/rack,/obj/item/clothing/glasses/sunglasses{pixel_x = -3; pixel_y = 3},/obj/item/clothing/glasses/hud/health/health_advanced,/obj/item/clothing/glasses/hud/security/sunglasses,/turf/unsimulated/floor{tag = "icon-floor"; icon_state = "floor"},/area/admin) -"cR" = (/obj/structure/flora/ausbushes/lavendergrass,/turf/unsimulated/floor{icon_state = "grass1"; name = "grass"},/area/centcom/specops) -"cS" = (/obj/structure/flora/ausbushes/stalkybush,/turf/unsimulated/floor{icon_state = "grass1"; name = "grass"},/area/centcom/specops) -"cT" = (/obj/structure/flora/ausbushes/pointybush,/turf/unsimulated/floor{icon_state = "grass1"; name = "grass"},/area/centcom/specops) -"cU" = (/obj/structure/flora/ausbushes/ywflowers,/turf/unsimulated/floor{icon_state = "grass1"; name = "grass"},/area/centcom/specops) -"cV" = (/obj/structure/flora/ausbushes/brflowers,/turf/unsimulated/floor{icon_state = "grass1"; name = "grass"},/area/centcom/specops) -"cW" = (/obj/structure/flora/ausbushes/sparsegrass,/turf/unsimulated/floor{icon_state = "grass1"; name = "grass"},/area/centcom/specops) -"cX" = (/obj/structure/flora/ausbushes/reedbush,/turf/unsimulated/floor{icon_state = "grass1"; name = "grass"},/area/centcom/specops) -"cY" = (/turf/simulated/shuttle/wall{icon_state = "swall_s6"; dir = 2},/area/shuttle/gamma/space) -"cZ" = (/obj/structure/table/reinforced,/obj/item/storage/box/mousetraps,/obj/item/storage/box/trackimp,/turf/unsimulated/floor{tag = "icon-dark"; icon_state = "dark"},/area/admin) -"da" = (/obj/structure/table/reinforced,/obj/item/scalpel,/turf/unsimulated/floor{tag = "icon-dark"; icon_state = "dark"},/area/admin) -"db" = (/turf/simulated/floor/holofloor{tag = "icon-carpet2-0 (EAST)"; icon_state = "carpet2-0"; dir = 4},/area/holodeck/source_theatre) -"dc" = (/obj/structure/rack,/obj/item/kitchen/knife/ritual,/turf/unsimulated/floor{dir = 8; icon_state = "chapel"},/area/wizard_station) +"cL" = (/obj/machinery/door/airlock/external{id_tag = "admin_away";name = "Administration Shuttle";opacity = 0;req_access_txt = "106"},/turf/unsimulated/floor{name = "plating"},/area/centcom/evac) +"cM" = (/obj/docking_port/stationary{dir = 2;dwidth = 8;height = 15;id = "admin_away";name = "centcom bay 1";width = 18},/turf/space,/area/space) +"cN" = (/obj/docking_port/stationary/transit{dir = 8;dwidth = 2;height = 11;id = "specops_transit";name = "specops in transit";turf_type = /turf/space/transit/horizontal;width = 5},/turf/space/transit/horizontal,/area/space) +"cO" = (/obj/docking_port/stationary/transit{dir = 8;dwidth = 2;height = 12;id = "ferry_transit";name = "ferry in transit";turf_type = /turf/space/transit/horizontal;width = 5},/turf/space/transit/horizontal,/area/space) +"cP" = (/obj/docking_port/stationary/transit{dir = 2;dwidth = 3;height = 5;id = "engineering_transit";name = "engineering in transit";turf_type = /turf/space/transit/horizontal;width = 7},/turf/space/transit/horizontal,/area/space) +"cQ" = (/obj/structure/rack,/obj/item/clothing/glasses/sunglasses{pixel_x = -3;pixel_y = 3},/obj/item/clothing/glasses/hud/health/health_advanced,/obj/item/clothing/glasses/hud/security/sunglasses,/turf/unsimulated/floor{tag = "icon-floor";icon_state = "floor"},/area/admin) +"cR" = (/obj/structure/flora/ausbushes/lavendergrass,/turf/unsimulated/floor{icon_state = "grass1";name = "grass"},/area/centcom/specops) +"cS" = (/obj/structure/flora/ausbushes/stalkybush,/turf/unsimulated/floor{icon_state = "grass1";name = "grass"},/area/centcom/specops) +"cT" = (/obj/structure/flora/ausbushes/pointybush,/turf/unsimulated/floor{icon_state = "grass1";name = "grass"},/area/centcom/specops) +"cU" = (/obj/structure/flora/ausbushes/ywflowers,/turf/unsimulated/floor{icon_state = "grass1";name = "grass"},/area/centcom/specops) +"cV" = (/obj/structure/flora/ausbushes/brflowers,/turf/unsimulated/floor{icon_state = "grass1";name = "grass"},/area/centcom/specops) +"cW" = (/obj/structure/flora/ausbushes/sparsegrass,/turf/unsimulated/floor{icon_state = "grass1";name = "grass"},/area/centcom/specops) +"cX" = (/obj/structure/flora/ausbushes/reedbush,/turf/unsimulated/floor{icon_state = "grass1";name = "grass"},/area/centcom/specops) +"cY" = (/turf/simulated/shuttle/wall{icon_state = "swall_s6";dir = 2},/area/shuttle/gamma/space) +"cZ" = (/obj/structure/table/reinforced,/obj/item/storage/box/mousetraps,/obj/item/storage/box/trackimp,/turf/unsimulated/floor{tag = "icon-dark";icon_state = "dark"},/area/admin) +"da" = (/obj/structure/table/reinforced,/obj/item/scalpel,/turf/unsimulated/floor{tag = "icon-dark";icon_state = "dark"},/area/admin) +"db" = (/turf/simulated/floor/holofloor{tag = "icon-carpet2-0 (EAST)";icon_state = "carpet2-0";dir = 4},/area/holodeck/source_theatre) +"dc" = (/obj/structure/rack,/obj/item/kitchen/knife/ritual,/turf/unsimulated/floor{dir = 8;icon_state = "chapel"},/area/wizard_station) "dd" = (/obj/structure/rack,/obj/item/kitchen/knife/ritual,/turf/unsimulated/floor{icon_state = "chapel"},/area/wizard_station) -"de" = (/obj/structure/flora/ausbushes/fernybush,/turf/unsimulated/floor{icon_state = "grass1"; name = "grass"},/area/centcom/control) -"df" = (/obj/structure/table,/obj/item/storage/toolbox/syndicate,/obj/item/shard,/obj/item/kitchen/knife,/obj/item/storage/firstaid/tactical,/turf/unsimulated/floor{icon_state = "freezerfloor"; dir = 2},/area/admin) -"dg" = (/obj/structure/table/holotable,/obj/item/clothing/suit/armor/riot/knight/red,/obj/item/clothing/head/helmet/riot/knight/red,/obj/item/holo/claymore/red,/turf/simulated/floor/holofloor{dir = 1; icon_state = "red"},/area/holodeck/source_knightarena) -"dh" = (/obj/structure/table/holotable,/obj/machinery/readybutton{pixel_y = 0},/turf/simulated/floor/holofloor{dir = 9; icon_state = "red"},/area/holodeck/source_knightarena) -"di" = (/obj/structure/table/holotable,/turf/simulated/floor/holofloor{dir = 5; icon_state = "red"},/area/holodeck/source_knightarena) +"de" = (/obj/structure/flora/ausbushes/fernybush,/turf/unsimulated/floor{icon_state = "grass1";name = "grass"},/area/centcom/control) +"df" = (/obj/structure/table,/obj/item/storage/toolbox/syndicate,/obj/item/shard,/obj/item/kitchen/knife,/obj/item/storage/firstaid/tactical,/turf/unsimulated/floor{icon_state = "freezerfloor";dir = 2},/area/admin) +"dg" = (/obj/structure/table/holotable,/obj/item/clothing/suit/armor/riot/knight/red,/obj/item/clothing/head/helmet/riot/knight/red,/obj/item/holo/claymore/red,/turf/simulated/floor/holofloor{dir = 1;icon_state = "red"},/area/holodeck/source_knightarena) +"dh" = (/obj/structure/table/holotable,/obj/machinery/readybutton{pixel_y = 0},/turf/simulated/floor/holofloor{dir = 9;icon_state = "red"},/area/holodeck/source_knightarena) +"di" = (/obj/structure/table/holotable,/turf/simulated/floor/holofloor{dir = 5;icon_state = "red"},/area/holodeck/source_knightarena) "dj" = (/turf/simulated/floor/holofloor,/area/holodeck/source_knightarena) -"dk" = (/turf/simulated/floor/holofloor{dir = 8; icon_state = "red"},/area/holodeck/source_knightarena) -"dl" = (/turf/simulated/floor/holofloor{dir = 4; icon_state = "red"},/area/holodeck/source_knightarena) +"dk" = (/turf/simulated/floor/holofloor{dir = 8;icon_state = "red"},/area/holodeck/source_knightarena) +"dl" = (/turf/simulated/floor/holofloor{dir = 4;icon_state = "red"},/area/holodeck/source_knightarena) "dm" = (/obj/structure/holowindow,/turf/simulated/floor/holofloor,/area/holodeck/source_knightarena) -"dn" = (/obj/structure/holowindow,/turf/simulated/floor/holofloor{dir = 8; icon_state = "red"},/area/holodeck/source_knightarena) -"do" = (/obj/structure/flora/ausbushes/ywflowers,/turf/unsimulated/floor{icon_state = "grass1"; name = "grass"},/area/centcom/control) -"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" = (/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) +"dn" = (/obj/structure/holowindow,/turf/simulated/floor/holofloor{dir = 8;icon_state = "red"},/area/holodeck/source_knightarena) +"do" = (/obj/structure/flora/ausbushes/ywflowers,/turf/unsimulated/floor{icon_state = "grass1";name = "grass"},/area/centcom/control) +"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/simulated/floor/holofloor/grass,/obj/structure/flora/ausbushes/brflowers,/turf/simulated/floor/holofloor{tag = "icon-wood_siding1";icon_state = "wood_siding1";dir = 2},/area/holodeck/source_picnicarea) +"dt" = (/turf/simulated/floor/holofloor/grass,/obj/structure/flora/ausbushes/ywflowers,/turf/simulated/floor/holofloor{tag = "icon-wood_siding1";icon_state = "wood_siding1";dir = 2},/area/holodeck/source_picnicarea) +"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) -"dx" = (/obj/structure/holowindow{dir = 1},/turf/simulated/floor/holofloor{dir = 8; icon_state = "blue"},/area/holodeck/source_knightarena) -"dy" = (/obj/structure/holowindow{dir = 1},/turf/simulated/floor/holofloor{dir = 4; icon_state = "blue"},/area/holodeck/source_knightarena) -"dz" = (/turf/simulated/floor/holofloor{dir = 8; icon_state = "blue"},/area/holodeck/source_knightarena) -"dA" = (/turf/simulated/floor/holofloor{dir = 4; icon_state = "blue"},/area/holodeck/source_knightarena) -"dB" = (/obj/structure/table/holotable,/obj/item/clothing/suit/armor/riot/knight/blue,/obj/item/clothing/head/helmet/riot/knight/blue,/obj/item/holo/claymore/blue,/turf/simulated/floor/holofloor{dir = 2; icon_state = "blue"},/area/holodeck/source_knightarena) -"dC" = (/obj/structure/table/holotable,/turf/simulated/floor/holofloor{dir = 10; icon_state = "blue"},/area/holodeck/source_knightarena) -"dD" = (/obj/structure/table/holotable,/obj/machinery/readybutton{pixel_y = 0},/turf/simulated/floor/holofloor{dir = 6; icon_state = "blue"},/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) +"dx" = (/obj/structure/holowindow{dir = 1},/turf/simulated/floor/holofloor{dir = 8;icon_state = "blue"},/area/holodeck/source_knightarena) +"dy" = (/obj/structure/holowindow{dir = 1},/turf/simulated/floor/holofloor{dir = 4;icon_state = "blue"},/area/holodeck/source_knightarena) +"dz" = (/turf/simulated/floor/holofloor{dir = 8;icon_state = "blue"},/area/holodeck/source_knightarena) +"dA" = (/turf/simulated/floor/holofloor{dir = 4;icon_state = "blue"},/area/holodeck/source_knightarena) +"dB" = (/obj/structure/table/holotable,/obj/item/clothing/suit/armor/riot/knight/blue,/obj/item/clothing/head/helmet/riot/knight/blue,/obj/item/holo/claymore/blue,/turf/simulated/floor/holofloor{dir = 2;icon_state = "blue"},/area/holodeck/source_knightarena) +"dC" = (/obj/structure/table/holotable,/turf/simulated/floor/holofloor{dir = 10;icon_state = "blue"},/area/holodeck/source_knightarena) +"dD" = (/obj/structure/table/holotable,/obj/machinery/readybutton{pixel_y = 0},/turf/simulated/floor/holofloor{dir = 6;icon_state = "blue"},/area/holodeck/source_knightarena) "dE" = (/obj/structure/rack,/obj/item/clothing/under/color/red,/obj/item/clothing/shoes/brown,/obj/item/grenade/smokebomb,/obj/item/restraints/legcuffs/beartrap,/obj/item/sleeping_carp_scroll,/obj/item/twohanded/bostaff,/turf/unsimulated/floor{icon_state = "dark"},/area/tdome/arena_source) "dF" = (/obj/structure/rack,/obj/item/clothing/under/color/green,/obj/item/clothing/shoes/brown,/obj/item/grenade/smokebomb,/obj/item/restraints/legcuffs/beartrap,/obj/item/sleeping_carp_scroll,/obj/item/twohanded/bostaff,/turf/unsimulated/floor{icon_state = "dark"},/area/tdome/arena_source) -"dG" = (/turf/simulated/floor/holofloor{tag = "icon-asteroid1 (EAST)"; icon_state = "asteroid1"; dir = 4},/area/holodeck/source_desert) +"dG" = (/turf/simulated/floor/holofloor{tag = "icon-asteroid1 (EAST)";icon_state = "asteroid1";dir = 4},/area/holodeck/source_desert) "dH" = (/obj/structure/rack,/obj/item/clothing/under/color/red,/obj/item/clothing/shoes/brown,/obj/item/grenade/smokebomb,/obj/item/restraints/legcuffs/beartrap,/obj/item/sleeping_carp_scroll,/obj/item/twohanded/bostaff,/turf/unsimulated/floor{icon_state = "dark"},/area/tdome/arena) "dI" = (/obj/structure/rack,/obj/item/clothing/under/color/green,/obj/item/clothing/shoes/brown,/obj/item/grenade/smokebomb,/obj/item/restraints/legcuffs/beartrap,/obj/item/sleeping_carp_scroll,/obj/item/twohanded/bostaff,/turf/unsimulated/floor{icon_state = "dark"},/area/tdome/arena) -"dJ" = (/obj/structure/rack,/obj/item/toy/sword,/obj/item/gun/projectile/revolver/capgun,/turf/unsimulated/floor{icon_state = "cafeteria"; dir = 2},/area/ninja/holding) -"dK" = (/obj/structure/flora/ausbushes/lavendergrass,/turf/unsimulated/floor{icon_state = "grass1"; name = "grass"},/area/centcom/control) -"dL" = (/obj/structure/flora/ausbushes/fullgrass,/turf/unsimulated/floor{icon_state = "grass1"; name = "grass"},/area/centcom/control) -"dM" = (/obj/machinery/prize_counter,/turf/unsimulated/floor{icon_state = "cafeteria"; dir = 2},/area/ninja/holding) -"dN" = (/turf/simulated/floor/holofloor{tag = "icon-asteroid3 (EAST)"; icon_state = "asteroid3"; dir = 4},/area/holodeck/source_desert) -"dO" = (/turf/simulated/floor/holofloor{tag = "icon-carpet1-0 (EAST)"; icon_state = "carpet1-0"; dir = 4},/area/holodeck/source_theatre) -"dP" = (/obj/structure/chair/stool,/turf/simulated/floor/holofloor{tag = "icon-carpet5-1 (EAST)"; icon_state = "carpet5-1"; dir = 4},/area/holodeck/source_theatre) -"dQ" = (/obj/structure/chair/stool,/turf/simulated/floor/holofloor{tag = "icon-carpet13-5 (EAST)"; icon_state = "carpet13-5"; dir = 4},/area/holodeck/source_theatre) -"dR" = (/obj/structure/chair/stool,/turf/simulated/floor/holofloor{tag = "icon-carpet9-4 (EAST)"; icon_state = "carpet9-4"; dir = 4},/area/holodeck/source_theatre) -"dS" = (/turf/simulated/floor/holofloor{dir = 10; icon_state = "green"},/area/holodeck/source_emptycourt) -"dT" = (/turf/simulated/floor/holofloor{dir = 2; icon_state = "green"},/area/holodeck/source_emptycourt) -"dU" = (/turf/simulated/floor/holofloor{dir = 6; icon_state = "green"},/area/holodeck/source_emptycourt) -"dV" = (/turf/space,/turf/unsimulated/wall{dir = 1; icon = 'icons/turf/shuttle.dmi'; icon_state = "diagonalWall3"},/area/centcom/control) -"dW" = (/obj/structure/filingcabinet/filingcabinet,/turf/unsimulated/floor{dir = 9; icon_state = "carpetside"},/area/centcom/control) -"dX" = (/obj/structure/filingcabinet/filingcabinet,/turf/unsimulated/floor{dir = 5; icon_state = "carpetside"},/area/centcom/control) -"dY" = (/turf/unsimulated/floor{dir = 1; icon_state = "carpet15-11"},/area/centcom/control) -"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/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/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) +"dJ" = (/obj/structure/rack,/obj/item/toy/sword,/obj/item/gun/projectile/revolver/capgun,/turf/unsimulated/floor{icon_state = "cafeteria";dir = 2},/area/ninja/holding) +"dK" = (/obj/structure/flora/ausbushes/lavendergrass,/turf/unsimulated/floor{icon_state = "grass1";name = "grass"},/area/centcom/control) +"dL" = (/obj/structure/flora/ausbushes/fullgrass,/turf/unsimulated/floor{icon_state = "grass1";name = "grass"},/area/centcom/control) +"dM" = (/obj/machinery/prize_counter,/turf/unsimulated/floor{icon_state = "cafeteria";dir = 2},/area/ninja/holding) +"dN" = (/turf/simulated/floor/holofloor{tag = "icon-asteroid3 (EAST)";icon_state = "asteroid3";dir = 4},/area/holodeck/source_desert) +"dO" = (/turf/simulated/floor/holofloor{tag = "icon-carpet1-0 (EAST)";icon_state = "carpet1-0";dir = 4},/area/holodeck/source_theatre) +"dS" = (/turf/simulated/floor/holofloor{dir = 10;icon_state = "green"},/area/holodeck/source_emptycourt) +"dT" = (/turf/simulated/floor/holofloor{dir = 2;icon_state = "green"},/area/holodeck/source_emptycourt) +"dU" = (/turf/simulated/floor/holofloor{dir = 6;icon_state = "green"},/area/holodeck/source_emptycourt) +"dV" = (/turf/space,/turf/unsimulated/wall{dir = 1;icon = 'icons/turf/shuttle.dmi';icon_state = "diagonalWall3"},/area/centcom/control) +"dW" = (/obj/structure/filingcabinet/filingcabinet,/turf/unsimulated/floor{dir = 9;icon_state = "carpetside"},/area/centcom/control) +"dX" = (/obj/structure/filingcabinet/filingcabinet,/turf/unsimulated/floor{dir = 5;icon_state = "carpetside"},/area/centcom/control) +"dY" = (/turf/unsimulated/floor{dir = 1;icon_state = "carpet15-11"},/area/centcom/control) +"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) +"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) "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/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) -"eq" = (/turf/simulated/floor/holofloor{tag = "icon-snow"; icon_state = "snow"},/area/holodeck/source_snowfield) -"er" = (/turf/simulated/floor/holofloor{tag = "icon-grimy"; icon_state = "grimy"; dir = 2},/area/holodeck/source_meetinghall) -"es" = (/turf/simulated/floor/holofloor{dir = 9; icon_state = "red"},/area/holodeck/source_basketball) -"et" = (/obj/structure/holohoop,/turf/simulated/floor/holofloor{dir = 1; icon_state = "red"},/area/holodeck/source_basketball) -"eu" = (/turf/simulated/floor/holofloor{dir = 5; icon_state = "red"},/area/holodeck/source_basketball) +"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) +"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) +"eq" = (/turf/simulated/floor/holofloor{tag = "icon-snow";icon_state = "snow"},/area/holodeck/source_snowfield) +"er" = (/turf/simulated/floor/holofloor{tag = "icon-grimy";icon_state = "grimy";dir = 2},/area/holodeck/source_meetinghall) +"es" = (/turf/simulated/floor/holofloor{dir = 9;icon_state = "red"},/area/holodeck/source_basketball) +"et" = (/obj/structure/holohoop,/turf/simulated/floor/holofloor{dir = 1;icon_state = "red"},/area/holodeck/source_basketball) +"eu" = (/turf/simulated/floor/holofloor{dir = 5;icon_state = "red"},/area/holodeck/source_basketball) "ev" = (/turf/simulated/floor/beach/sand,/area/holodeck/source_beach) -"ew" = (/obj/structure/table/holotable,/obj/machinery/readybutton{pixel_y = 0},/turf/simulated/floor/holofloor{dir = 9; icon_state = "red"},/area/holodeck/source_thunderdomecourt) -"ex" = (/obj/structure/table/holotable,/obj/item/clothing/head/helmet/thunderdome,/obj/item/clothing/suit/armor/tdome/red,/obj/item/clothing/under/color/red,/obj/item/holo/esword/red,/turf/simulated/floor/holofloor{dir = 1; icon_state = "red"},/area/holodeck/source_thunderdomecourt) -"ey" = (/obj/structure/table/holotable,/turf/simulated/floor/holofloor{dir = 5; icon_state = "red"},/area/holodeck/source_thunderdomecourt) -"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/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) -"eG" = (/turf/simulated/floor/holofloor{tag = "icon-carpet8-0 (EAST)"; icon_state = "carpet8-0"; dir = 4},/area/holodeck/source_meetinghall) -"eH" = (/turf/simulated/floor/holofloor{dir = 8; icon_state = "red"},/area/holodeck/source_basketball) +"ew" = (/obj/structure/table/holotable,/obj/machinery/readybutton{pixel_y = 0},/turf/simulated/floor/holofloor{dir = 9;icon_state = "red"},/area/holodeck/source_thunderdomecourt) +"ex" = (/obj/structure/table/holotable,/obj/item/clothing/head/helmet/thunderdome,/obj/item/clothing/suit/armor/tdome/red,/obj/item/clothing/under/color/red,/obj/item/holo/esword/red,/turf/simulated/floor/holofloor{dir = 1;icon_state = "red"},/area/holodeck/source_thunderdomecourt) +"ey" = (/obj/structure/table/holotable,/turf/simulated/floor/holofloor{dir = 5;icon_state = "red"},/area/holodeck/source_thunderdomecourt) +"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) +"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) +"eG" = (/turf/simulated/floor/holofloor{tag = "icon-carpet8-0 (EAST)";icon_state = "carpet8-0";dir = 4},/area/holodeck/source_meetinghall) +"eH" = (/turf/simulated/floor/holofloor{dir = 8;icon_state = "red"},/area/holodeck/source_basketball) "eI" = (/turf/simulated/floor/holofloor,/area/holodeck/source_basketball) -"eJ" = (/turf/simulated/floor/holofloor{dir = 4; icon_state = "red"},/area/holodeck/source_basketball) +"eJ" = (/turf/simulated/floor/holofloor{dir = 4;icon_state = "red"},/area/holodeck/source_basketball) "eK" = (/obj/effect/overlay/palmtree_r,/turf/simulated/floor/beach/sand,/area/holodeck/source_beach) "eL" = (/obj/effect/overlay/palmtree_l,/obj/effect/overlay/coconut,/turf/simulated/floor/beach/sand,/area/holodeck/source_beach) -"eM" = (/turf/simulated/floor/holofloor{dir = 8; icon_state = "red"},/area/holodeck/source_thunderdomecourt) +"eM" = (/turf/simulated/floor/holofloor{dir = 8;icon_state = "red"},/area/holodeck/source_thunderdomecourt) "eN" = (/turf/simulated/floor/holofloor,/area/holodeck/source_thunderdomecourt) -"eO" = (/turf/simulated/floor/holofloor{dir = 4; icon_state = "red"},/area/holodeck/source_thunderdomecourt) -"eP" = (/turf/simulated/floor/holofloor{dir = 8; icon_state = "red"},/area/holodeck/source_boxingcourt) +"eO" = (/turf/simulated/floor/holofloor{dir = 4;icon_state = "red"},/area/holodeck/source_thunderdomecourt) +"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/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) -"eW" = (/turf/unsimulated/wall/fakeglass{tag = "icon-fakewindows (WEST)"; icon_state = "fakewindows"; dir = 8},/area/centcom/control) -"eX" = (/obj/structure/flora/tree/pine,/turf/simulated/floor/holofloor{tag = "icon-snow"; icon_state = "snow"},/area/holodeck/source_snowfield) -"eY" = (/obj/structure/table/wood,/turf/simulated/floor/holofloor{tag = "icon-grimy"; icon_state = "grimy"; dir = 2},/area/holodeck/source_meetinghall) -"eZ" = (/turf/simulated/floor/holofloor{dir = 1; icon_state = "red"},/area/holodeck/source_basketball) -"fa" = (/turf/unsimulated/floor{dir = 2; icon_state = "carpet15-5"},/area/centcom/control) -"fb" = (/obj/structure/table/wood,/obj/machinery/photocopier{icon_state = "fax"; name = "fax machine"},/obj/item/photo{name = "butts"},/turf/unsimulated/floor{dir = 10; icon_state = "carpetside"},/area/centcom/control) -"fc" = (/obj/machinery/computer/communications,/turf/unsimulated/floor{dir = 6; icon_state = "carpetside"},/area/centcom/control) -"fd" = (/obj/machinery/door/poddoor{id_tag = "CCGAMMA"; name = "Gamma Security"},/obj/machinery/door/airlock/centcom{name = "Gamma Armory"; opacity = 1; req_access_txt = "114"},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/centcom/gamma) +"eR" = (/turf/simulated/floor/holofloor{dir = 4;icon_state = "red"},/area/holodeck/source_boxingcourt) +"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) +"eW" = (/turf/unsimulated/wall/fakeglass{tag = "icon-fakewindows (WEST)";icon_state = "fakewindows";dir = 8},/area/centcom/control) +"eX" = (/obj/structure/flora/tree/pine,/turf/simulated/floor/holofloor{tag = "icon-snow";icon_state = "snow"},/area/holodeck/source_snowfield) +"eY" = (/obj/structure/table/wood,/turf/simulated/floor/holofloor{tag = "icon-grimy";icon_state = "grimy";dir = 2},/area/holodeck/source_meetinghall) +"eZ" = (/turf/simulated/floor/holofloor{dir = 1;icon_state = "red"},/area/holodeck/source_basketball) +"fa" = (/turf/unsimulated/floor{dir = 2;icon_state = "carpet15-5"},/area/centcom/control) +"fb" = (/obj/structure/table/wood,/obj/machinery/photocopier{icon_state = "fax";name = "fax machine"},/obj/item/photo{name = "butts"},/turf/unsimulated/floor{dir = 10;icon_state = "carpetside"},/area/centcom/control) +"fc" = (/obj/machinery/computer/communications,/turf/unsimulated/floor{dir = 6;icon_state = "carpetside"},/area/centcom/control) +"fd" = (/obj/machinery/door/poddoor{id_tag = "CCGAMMA";name = "Gamma Security"},/obj/machinery/door/airlock/centcom{name = "Gamma Armory";opacity = 1;req_access_txt = "114"},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/centcom/gamma) "fe" = (/obj/machinery/cryopod/right,/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/specops) "ff" = (/turf/unsimulated/wall,/area/ninja/outpost) "fg" = (/turf/unsimulated/wall,/area/ninja/holding) -"fh" = (/turf/unsimulated/wall/fakeglass{tag = "icon-fakewindows (WEST)"; icon_state = "fakewindows"; dir = 8},/area/ninja/holding) -"fi" = (/turf/unsimulated/wall/fakeglass{tag = "icon-fakewindows2 (WEST)"; icon_state = "fakewindows2"; dir = 8},/area/ninja/holding) -"fj" = (/turf/unsimulated/wall/fakeglass{tag = "icon-fakewindows (EAST)"; icon_state = "fakewindows"; dir = 4},/area/ninja/holding) -"fk" = (/turf/unsimulated/wall{desc = "The door appears to be locked tightly."; icon = 'icons/obj/doors/airlocks/hatch/centcom.dmi'; icon_state = "closed"; name = "Locked Door"},/area/ninja/holding) +"fh" = (/turf/unsimulated/wall/fakeglass{tag = "icon-fakewindows (WEST)";icon_state = "fakewindows";dir = 8},/area/ninja/holding) +"fi" = (/turf/unsimulated/wall/fakeglass{tag = "icon-fakewindows2 (WEST)";icon_state = "fakewindows2";dir = 8},/area/ninja/holding) +"fj" = (/turf/unsimulated/wall/fakeglass{tag = "icon-fakewindows (EAST)";icon_state = "fakewindows";dir = 4},/area/ninja/holding) +"fk" = (/turf/unsimulated/wall{desc = "The door appears to be locked tightly.";icon = 'icons/obj/doors/airlocks/hatch/centcom.dmi';icon_state = "closed";name = "Locked Door"},/area/ninja/holding) "fl" = (/obj/machinery/cryopod,/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/specops) "fm" = (/turf/unsimulated/wall,/area/centcom/gamma) -"fn" = (/obj/effect/spawner/window/reinforced,/turf/simulated/floor/plasteel{icon_state = "red"; dir = 1},/area/centcom/gamma) -"fo" = (/obj/machinery/porta_turret/centcom/pulse,/turf/simulated/floor/plasteel{icon_state = "red"; dir = 9},/area/centcom/gamma) -"fp" = (/obj/machinery/camera{c_tag = "CentComm Special Ops. Bathroom"; dir = 2; network = list("ERT","CentComm")},/obj/structure/table/reinforced,/obj/item/paper,/turf/simulated/floor/plasteel{icon_state = "red"; dir = 1},/area/centcom/gamma) -"fq" = (/obj/structure/chair/office/dark{dir = 4},/turf/simulated/floor/plasteel{icon_state = "red"; dir = 1},/area/centcom/gamma) -"fr" = (/obj/structure/chair/office/dark{dir = 8},/turf/simulated/floor/plasteel{icon_state = "red"; dir = 1},/area/centcom/gamma) -"fs" = (/obj/structure/table/reinforced,/obj/machinery/turretid/lethal{ailock = 1; check_synth = 1; name = "Gamma Turret Control Panel"; pixel_x = 0; req_access = list(114)},/turf/simulated/floor/plasteel{icon_state = "red"; dir = 1},/area/centcom/gamma) -"ft" = (/turf/unsimulated/wall{desc = "The door appears to be locked tightly."; icon = 'icons/obj/doors/airlocks/hatch/centcom.dmi'; icon_state = "closed"; name = "Locked Door"},/area/ninja/outpost) +"fn" = (/obj/effect/spawner/window/reinforced,/turf/simulated/floor/plasteel{icon_state = "red";dir = 1},/area/centcom/gamma) +"fo" = (/obj/machinery/porta_turret/centcom/pulse,/turf/simulated/floor/plasteel{icon_state = "red";dir = 9},/area/centcom/gamma) +"fp" = (/obj/machinery/camera{c_tag = "CentComm Special Ops. Bathroom";dir = 2;network = list("ERT","CentComm")},/obj/structure/table/reinforced,/obj/item/paper,/turf/simulated/floor/plasteel{icon_state = "red";dir = 1},/area/centcom/gamma) +"fs" = (/obj/structure/table/reinforced,/obj/machinery/turretid/lethal{ailock = 1;check_synth = 1;name = "Gamma Turret Control Panel";pixel_x = 0;req_access = list(114)},/turf/simulated/floor/plasteel{icon_state = "red";dir = 1},/area/centcom/gamma) +"ft" = (/turf/unsimulated/wall{desc = "The door appears to be locked tightly.";icon = 'icons/obj/doors/airlocks/hatch/centcom.dmi';icon_state = "closed";name = "Locked Door"},/area/ninja/outpost) "fu" = (/turf/unsimulated/floor{icon_state = "dark"},/area/ninja/outpost) "fv" = (/obj/structure/ninjatele{pixel_y = 25},/turf/unsimulated/floor{icon_state = "dark"},/area/ninja/outpost) -"fw" = (/obj/machinery/light/spot{tag = "icon-tube1 (NORTH)"; icon_state = "tube1"; dir = 1},/turf/unsimulated/floor{icon_state = "dark"},/area/ninja/outpost) -"fx" = (/obj/structure/table,/obj/machinery/kitchen_machine/microwave/upgraded,/obj/machinery/light/spot{tag = "icon-tube1 (NORTH)"; icon_state = "tube1"; dir = 1},/turf/unsimulated/floor{icon_state = "freezerfloor"; dir = 2},/area/ninja/holding) -"fy" = (/turf/unsimulated/floor{icon_state = "freezerfloor"; dir = 2},/area/ninja/holding) -"fz" = (/obj/structure/closet/secure_closet/bar{req_access_txt = "25"},/turf/unsimulated/floor{icon_state = "freezerfloor"; dir = 2},/area/ninja/holding) -"fA" = (/obj/structure/reagent_dispensers/beerkeg,/turf/unsimulated/floor{icon_state = "freezerfloor"; dir = 2},/area/ninja/holding) -"fB" = (/obj/machinery/vending/boozeomat,/turf/unsimulated/floor{icon_state = "freezerfloor"; dir = 2},/area/ninja/holding) -"fC" = (/obj/structure/table,/obj/item/storage/box/donkpockets{pixel_x = 3; pixel_y = 3},/obj/item/storage/box/donkpockets{pixel_x = 3; pixel_y = 3},/obj/item/storage/box/donkpockets{pixel_x = 3; pixel_y = 3},/obj/item/storage/box/donkpockets{pixel_x = 3; pixel_y = 3},/turf/unsimulated/floor{icon_state = "freezerfloor"; dir = 2},/area/ninja/holding) -"fD" = (/obj/structure/rack,/obj/item/camera,/obj/machinery/light/spot{tag = "icon-tube1 (NORTH)"; icon_state = "tube1"; dir = 1},/turf/unsimulated/floor{icon_state = "cafeteria"; dir = 2},/area/ninja/holding) -"fE" = (/obj/machinery/porta_turret/centcom/pulse,/turf/simulated/floor/plasteel{icon_state = "red"; dir = 5},/area/centcom/gamma) +"fw" = (/obj/machinery/light/spot{tag = "icon-tube1 (NORTH)";icon_state = "tube1";dir = 1},/turf/unsimulated/floor{icon_state = "dark"},/area/ninja/outpost) +"fx" = (/obj/structure/table,/obj/machinery/kitchen_machine/microwave/upgraded,/obj/machinery/light/spot{tag = "icon-tube1 (NORTH)";icon_state = "tube1";dir = 1},/turf/unsimulated/floor{icon_state = "freezerfloor";dir = 2},/area/ninja/holding) +"fy" = (/turf/unsimulated/floor{icon_state = "freezerfloor";dir = 2},/area/ninja/holding) +"fz" = (/obj/structure/closet/secure_closet/bar{req_access_txt = "25"},/turf/unsimulated/floor{icon_state = "freezerfloor";dir = 2},/area/ninja/holding) +"fA" = (/obj/structure/reagent_dispensers/beerkeg,/turf/unsimulated/floor{icon_state = "freezerfloor";dir = 2},/area/ninja/holding) +"fB" = (/obj/machinery/vending/boozeomat,/turf/unsimulated/floor{icon_state = "freezerfloor";dir = 2},/area/ninja/holding) +"fC" = (/obj/structure/table,/obj/item/storage/box/donkpockets{pixel_x = 3;pixel_y = 3},/obj/item/storage/box/donkpockets{pixel_x = 3;pixel_y = 3},/obj/item/storage/box/donkpockets{pixel_x = 3;pixel_y = 3},/obj/item/storage/box/donkpockets{pixel_x = 3;pixel_y = 3},/turf/unsimulated/floor{icon_state = "freezerfloor";dir = 2},/area/ninja/holding) +"fD" = (/obj/structure/rack,/obj/item/camera,/obj/machinery/light/spot{tag = "icon-tube1 (NORTH)";icon_state = "tube1";dir = 1},/turf/unsimulated/floor{icon_state = "cafeteria";dir = 2},/area/ninja/holding) +"fE" = (/obj/machinery/porta_turret/centcom/pulse,/turf/simulated/floor/plasteel{icon_state = "red";dir = 5},/area/centcom/gamma) "fF" = (/obj/effect/spawner/window/reinforced,/turf/unsimulated/floor{icon_state = "floor"},/area/centcom/gamma) -"fG" = (/obj/machinery/computer/arcade,/turf/unsimulated/floor{icon_state = "cafeteria"; dir = 2},/area/ninja/holding) +"fG" = (/obj/machinery/computer/arcade,/turf/unsimulated/floor{icon_state = "cafeteria";dir = 2},/area/ninja/holding) "fH" = (/turf/unsimulated/beach/sand,/area/ninja/holding) "fI" = (/obj/effect/overlay/palmtree_r,/obj/effect/overlay/coconut,/turf/unsimulated/beach/sand,/area/ninja/holding) -"fJ" = (/obj/machinery/light/spot{tag = "icon-tube1 (NORTH)"; icon_state = "tube1"; dir = 1},/turf/unsimulated/beach/sand,/area/ninja/holding) +"fJ" = (/obj/machinery/light/spot{tag = "icon-tube1 (NORTH)";icon_state = "tube1";dir = 1},/turf/unsimulated/beach/sand,/area/ninja/holding) "fK" = (/obj/effect/overlay/palmtree_l,/turf/unsimulated/beach/sand,/area/ninja/holding) -"fL" = (/obj/machinery/door/airlock/centcom{name = "Communications Office"; opacity = 1; req_access_txt = "107"},/turf/unsimulated/floor{icon_state = "carpet1-0"},/area/centcom/control) -"fM" = (/obj/structure/flora/grass/green,/turf/simulated/floor/holofloor{tag = "icon-snow"; icon_state = "snow"},/area/holodeck/source_snowfield) -"fN" = (/obj/structure/chair/stool,/turf/simulated/floor/holofloor{tag = "icon-carpet6-0 (EAST)"; icon_state = "carpet6-0"; dir = 4},/area/holodeck/source_meetinghall) -"fO" = (/obj/structure/chair/stool,/turf/simulated/floor/holofloor{tag = "icon-carpet14-0 (EAST)"; icon_state = "carpet14-0"; dir = 4},/area/holodeck/source_meetinghall) -"fP" = (/obj/structure/chair/stool,/turf/simulated/floor/holofloor{tag = "icon-carpet10-0 (EAST)"; icon_state = "carpet10-0"; dir = 4},/area/holodeck/source_meetinghall) -"fQ" = (/turf/simulated/floor/holofloor{dir = 10; icon_state = "red"},/area/holodeck/source_basketball) -"fR" = (/turf/simulated/floor/holofloor{dir = 2; icon_state = "red"},/area/holodeck/source_basketball) -"fS" = (/turf/simulated/floor/holofloor{dir = 6; icon_state = "red"},/area/holodeck/source_basketball) +"fL" = (/obj/machinery/door/airlock/centcom{name = "Communications Office";opacity = 1;req_access_txt = "107"},/turf/unsimulated/floor{icon_state = "carpet1-0"},/area/centcom/control) +"fM" = (/obj/structure/flora/grass/green,/turf/simulated/floor/holofloor{tag = "icon-snow";icon_state = "snow"},/area/holodeck/source_snowfield) +"fQ" = (/turf/simulated/floor/holofloor{dir = 10;icon_state = "red"},/area/holodeck/source_basketball) +"fR" = (/turf/simulated/floor/holofloor{dir = 2;icon_state = "red"},/area/holodeck/source_basketball) +"fS" = (/turf/simulated/floor/holofloor{dir = 6;icon_state = "red"},/area/holodeck/source_basketball) "fT" = (/obj/item/clothing/under/rainbow,/obj/item/clothing/glasses/sunglasses,/turf/simulated/floor/beach/sand,/area/holodeck/source_beach) -"fU" = (/obj/structure/holowindow,/turf/simulated/floor/holofloor{dir = 8; icon_state = "red"},/area/holodeck/source_thunderdomecourt) +"fU" = (/obj/structure/holowindow,/turf/simulated/floor/holofloor{dir = 8;icon_state = "red"},/area/holodeck/source_thunderdomecourt) "fV" = (/obj/structure/holowindow,/turf/simulated/floor/holofloor,/area/holodeck/source_thunderdomecourt) -"fW" = (/obj/structure/holowindow,/turf/simulated/floor/holofloor{dir = 4; icon_state = "red"},/area/holodeck/source_thunderdomecourt) -"fX" = (/turf/space,/turf/unsimulated/wall{dir = 4; icon = 'icons/turf/shuttle.dmi'; icon_state = "diagonalWall3"},/area/centcom/control) -"fY" = (/obj/structure/urinal{pixel_y = 28},/turf/unsimulated/floor{icon_state = "freezerfloor"; dir = 2},/area/syndicate_mothership) -"fZ" = (/obj/item/radio/intercom/syndicate{pixel_x = 0; pixel_y = 25},/obj/item/twohanded/required/kirbyplants,/turf/unsimulated/floor{icon_state = "bar"; dir = 2},/area/syndicate_mothership) -"ga" = (/obj/structure/mirror{pixel_x = 28},/obj/structure/sink{dir = 4; icon_state = "sink"; pixel_x = 11; pixel_y = 0},/turf/unsimulated/floor{icon_state = "freezerfloor"; dir = 2},/area/syndicate_mothership) -"gb" = (/obj/structure/table,/obj/machinery/kitchen_machine/microwave/upgraded,/turf/unsimulated/floor{icon_state = "freezerfloor"; dir = 2},/area/ninja/holding) -"gc" = (/obj/structure/table,/obj/item/clothing/head/that{pixel_x = 4; pixel_y = 6},/turf/unsimulated/floor{icon_state = "freezerfloor"; dir = 2},/area/ninja/holding) -"gd" = (/turf/unsimulated/floor{icon_state = "cafeteria"; dir = 2},/area/ninja/holding) -"ge" = (/obj/structure/chair/stool,/turf/unsimulated/floor{icon_state = "cafeteria"; dir = 2},/area/ninja/holding) +"fW" = (/obj/structure/holowindow,/turf/simulated/floor/holofloor{dir = 4;icon_state = "red"},/area/holodeck/source_thunderdomecourt) +"fX" = (/turf/space,/turf/unsimulated/wall{dir = 4;icon = 'icons/turf/shuttle.dmi';icon_state = "diagonalWall3"},/area/centcom/control) +"fY" = (/obj/structure/urinal{pixel_y = 28},/turf/unsimulated/floor{icon_state = "freezerfloor";dir = 2},/area/syndicate_mothership) +"fZ" = (/obj/item/radio/intercom/syndicate{pixel_x = 0;pixel_y = 25},/obj/item/twohanded/required/kirbyplants,/turf/unsimulated/floor{icon_state = "bar";dir = 2},/area/syndicate_mothership) +"ga" = (/obj/structure/mirror{pixel_x = 28},/obj/structure/sink{dir = 4;icon_state = "sink";pixel_x = 11;pixel_y = 0},/turf/unsimulated/floor{icon_state = "freezerfloor";dir = 2},/area/syndicate_mothership) +"gb" = (/obj/structure/table,/obj/machinery/kitchen_machine/microwave/upgraded,/turf/unsimulated/floor{icon_state = "freezerfloor";dir = 2},/area/ninja/holding) +"gc" = (/obj/structure/table,/obj/item/clothing/head/that{pixel_x = 4;pixel_y = 6},/turf/unsimulated/floor{icon_state = "freezerfloor";dir = 2},/area/ninja/holding) +"gd" = (/turf/unsimulated/floor{icon_state = "cafeteria";dir = 2},/area/ninja/holding) "gf" = (/obj/item/camera,/turf/unsimulated/beach/sand,/area/ninja/holding) -"gg" = (/obj/structure/toilet{dir = 8},/obj/structure/window/reinforced/tinted{dir = 1},/obj/machinery/door/window{dir = 8; name = "Tactical Toilet"; opacity = 1; req_access_txt = "150"},/turf/unsimulated/floor{icon_state = "freezerfloor"; dir = 2},/area/syndicate_mothership) -"gh" = (/obj/machinery/light{dir = 1; on = 1},/turf/simulated/floor/plating/airless,/area/syndicate_mothership) +"gg" = (/obj/structure/toilet{dir = 8},/obj/structure/window/reinforced/tinted{dir = 1},/obj/machinery/door/window{dir = 8;name = "Tactical Toilet";opacity = 1;req_access_txt = "150"},/turf/unsimulated/floor{icon_state = "freezerfloor";dir = 2},/area/syndicate_mothership) +"gh" = (/obj/machinery/light{dir = 1;on = 1},/turf/simulated/floor/plating/airless,/area/syndicate_mothership) "gi" = (/obj/effect/decal/warning_stripes/southeastcorner,/turf/simulated/floor/plating/airless,/area/syndicate_mothership) "gj" = (/turf/simulated/floor/plating/airless,/area/syndicate_mothership) -"gk" = (/obj/structure/flora/tree/dead,/turf/simulated/floor/holofloor{tag = "icon-snow"; icon_state = "snow"},/area/holodeck/source_snowfield) -"gl" = (/obj/structure/chair/stool,/turf/simulated/floor/holofloor{tag = "icon-carpet7-0 (EAST)"; icon_state = "carpet7-0"; dir = 4},/area/holodeck/source_meetinghall) -"gm" = (/obj/structure/chair/stool,/turf/simulated/floor/holofloor{tag = "icon-carpet15-0 (EAST)"; icon_state = "carpet15-0"; dir = 4},/area/holodeck/source_meetinghall) -"gn" = (/obj/structure/chair/stool,/turf/simulated/floor/holofloor{tag = "icon-carpet11-0 (EAST)"; icon_state = "carpet11-0"; dir = 4},/area/holodeck/source_meetinghall) -"go" = (/turf/simulated/floor/holofloor{dir = 9; icon_state = "green"},/area/holodeck/source_basketball) -"gp" = (/turf/simulated/floor/holofloor{dir = 1; icon_state = "green"},/area/holodeck/source_basketball) -"gq" = (/turf/simulated/floor/holofloor{dir = 5; icon_state = "green"},/area/holodeck/source_basketball) +"gk" = (/obj/structure/flora/tree/dead,/turf/simulated/floor/holofloor{tag = "icon-snow";icon_state = "snow"},/area/holodeck/source_snowfield) +"go" = (/turf/simulated/floor/holofloor{dir = 9;icon_state = "green"},/area/holodeck/source_basketball) +"gp" = (/turf/simulated/floor/holofloor{dir = 1;icon_state = "green"},/area/holodeck/source_basketball) +"gq" = (/turf/simulated/floor/holofloor{dir = 5;icon_state = "green"},/area/holodeck/source_basketball) "gr" = (/obj/item/beach_ball,/turf/simulated/floor/beach/sand,/area/holodeck/source_beach) -"gs" = (/obj/structure/holowindow{dir = 1},/turf/simulated/floor/holofloor{dir = 8; icon_state = "green"},/area/holodeck/source_thunderdomecourt) +"gs" = (/obj/structure/holowindow{dir = 1},/turf/simulated/floor/holofloor{dir = 8;icon_state = "green"},/area/holodeck/source_thunderdomecourt) "gt" = (/obj/structure/holowindow{dir = 1},/turf/simulated/floor/holofloor,/area/holodeck/source_thunderdomecourt) -"gu" = (/obj/structure/holowindow{dir = 1},/turf/simulated/floor/holofloor{dir = 4; icon_state = "green"},/area/holodeck/source_thunderdomecourt) -"gv" = (/turf/simulated/floor/holofloor{dir = 8; icon_state = "green"},/area/holodeck/source_boxingcourt) -"gw" = (/turf/simulated/floor/holofloor{dir = 4; icon_state = "green"},/area/holodeck/source_boxingcourt) +"gu" = (/obj/structure/holowindow{dir = 1},/turf/simulated/floor/holofloor{dir = 4;icon_state = "green"},/area/holodeck/source_thunderdomecourt) +"gv" = (/turf/simulated/floor/holofloor{dir = 8;icon_state = "green"},/area/holodeck/source_boxingcourt) +"gw" = (/turf/simulated/floor/holofloor{dir = 4;icon_state = "green"},/area/holodeck/source_boxingcourt) "gx" = (/obj/effect/decal/warning_stripes/south,/turf/simulated/floor/plating/airless,/area/syndicate_mothership) -"gy" = (/turf/unsimulated/wall/fakeglass{dir = 1; icon_state = "fakewindows"; tag = "icon-fakewindows (WEST)"},/area/ninja/outpost) -"gz" = (/obj/machinery/light/spot{tag = "icon-tube1 (NORTH)"; icon_state = "tube1"; dir = 1},/turf/unsimulated/floor{icon_state = "grimy"},/area/ninja/outpost) +"gy" = (/turf/unsimulated/wall/fakeglass{dir = 1;icon_state = "fakewindows";tag = "icon-fakewindows (WEST)"},/area/ninja/outpost) +"gz" = (/obj/machinery/light/spot{tag = "icon-tube1 (NORTH)";icon_state = "tube1";dir = 1},/turf/unsimulated/floor{icon_state = "grimy"},/area/ninja/outpost) "gA" = (/obj/structure/window/reinforced{dir = 4},/obj/machinery/sleeper/upgraded,/turf/unsimulated/floor{icon_state = "grimy"},/area/ninja/outpost) -"gB" = (/obj/structure/table,/obj/machinery/recharger{pixel_y = 0},/turf/unsimulated/floor{icon_state = "freezerfloor"; dir = 2},/area/ninja/holding) -"gC" = (/obj/structure/table,/obj/item/reagent_containers/food/drinks/shaker,/turf/unsimulated/floor{icon_state = "freezerfloor"; dir = 2},/area/ninja/holding) -"gD" = (/obj/structure/table,/turf/unsimulated/floor{icon_state = "freezerfloor"; dir = 2},/area/ninja/holding) -"gE" = (/obj/structure/table,/obj/item/lighter/zippo,/turf/unsimulated/floor{icon_state = "freezerfloor"; dir = 2},/area/ninja/holding) -"gF" = (/obj/structure/table,/obj/item/reagent_containers/food/drinks/cans/cola,/turf/unsimulated/floor{icon_state = "freezerfloor"; dir = 2},/area/ninja/holding) -"gG" = (/obj/structure/table,/obj/item/dice/d20,/turf/unsimulated/floor{icon_state = "freezerfloor"; dir = 2},/area/ninja/holding) -"gH" = (/obj/structure/chair/stool,/obj/item/clothing/head/bandana{pixel_y = -10},/obj/item/clothing/glasses/sunglasses,/turf/unsimulated/beach/sand,/area/ninja/holding) -"gI" = (/obj/structure/chair/stool,/turf/unsimulated/beach/sand,/area/ninja/holding) -"gJ" = (/turf/simulated/floor/holofloor{dir = 8; icon_state = "green"},/area/holodeck/source_basketball) +"gB" = (/obj/structure/table,/obj/machinery/recharger{pixel_y = 0},/turf/unsimulated/floor{icon_state = "freezerfloor";dir = 2},/area/ninja/holding) +"gC" = (/obj/structure/table,/obj/item/reagent_containers/food/drinks/shaker,/turf/unsimulated/floor{icon_state = "freezerfloor";dir = 2},/area/ninja/holding) +"gD" = (/obj/structure/table,/turf/unsimulated/floor{icon_state = "freezerfloor";dir = 2},/area/ninja/holding) +"gE" = (/obj/structure/table,/obj/item/lighter/zippo,/turf/unsimulated/floor{icon_state = "freezerfloor";dir = 2},/area/ninja/holding) +"gF" = (/obj/structure/table,/obj/item/reagent_containers/food/drinks/cans/cola,/turf/unsimulated/floor{icon_state = "freezerfloor";dir = 2},/area/ninja/holding) +"gG" = (/obj/structure/table,/obj/item/dice/d20,/turf/unsimulated/floor{icon_state = "freezerfloor";dir = 2},/area/ninja/holding) +"gJ" = (/turf/simulated/floor/holofloor{dir = 8;icon_state = "green"},/area/holodeck/source_basketball) "gK" = (/obj/item/beach_ball/holoball,/turf/simulated/floor/holofloor,/area/holodeck/source_basketball) -"gL" = (/turf/simulated/floor/holofloor{dir = 4; icon_state = "green"},/area/holodeck/source_basketball) -"gM" = (/turf/simulated/floor/holofloor{dir = 8; icon_state = "green"},/area/holodeck/source_thunderdomecourt) -"gN" = (/turf/simulated/floor/holofloor{dir = 4; icon_state = "green"},/area/holodeck/source_thunderdomecourt) +"gL" = (/turf/simulated/floor/holofloor{dir = 4;icon_state = "green"},/area/holodeck/source_basketball) +"gM" = (/turf/simulated/floor/holofloor{dir = 8;icon_state = "green"},/area/holodeck/source_thunderdomecourt) +"gN" = (/turf/simulated/floor/holofloor{dir = 4;icon_state = "green"},/area/holodeck/source_thunderdomecourt) "gO" = (/turf/unsimulated/wall/fakeglass,/area/ninja/outpost) "gP" = (/obj/effect/landmark{name = "ninjastart"},/turf/unsimulated/floor{icon_state = "grimy"},/area/ninja/outpost) "gQ" = (/turf/unsimulated/floor{icon_state = "grimy"},/area/ninja/outpost) -"gR" = (/obj/structure/rack,/obj/item/clothing/head/that{pixel_x = 4; pixel_y = 6},/obj/item/clothing/under/suit_jacket,/obj/item/clothing/suit/wcoat,/turf/unsimulated/floor{icon_state = "cafeteria"; dir = 2},/area/ninja/holding) +"gR" = (/obj/structure/rack,/obj/item/clothing/head/that{pixel_x = 4;pixel_y = 6},/obj/item/clothing/under/suit_jacket,/obj/item/clothing/suit/wcoat,/turf/unsimulated/floor{icon_state = "cafeteria";dir = 2},/area/ninja/holding) "gS" = (/obj/item/beach_ball,/turf/unsimulated/beach/sand,/area/ninja/holding) -"gT" = (/obj/structure/flora/grass/brown,/turf/simulated/floor/holofloor{tag = "icon-snow"; icon_state = "snow"},/area/holodeck/source_snowfield) -"gU" = (/turf/simulated/floor/holofloor{dir = 2; icon_state = "green"},/area/holodeck/source_basketball) -"gV" = (/turf/simulated/floor/holofloor{icon_state = "sand"; name = "Soft sand"},/area/holodeck/source_beach) -"gW" = (/obj/structure/rack,/obj/item/storage/fancy/crayons,/turf/unsimulated/floor{icon_state = "cafeteria"; dir = 2},/area/ninja/holding) -"gX" = (/obj/machinery/vending/coffee,/obj/structure/window/reinforced{dir = 4},/turf/unsimulated/floor{icon_state = "cafeteria"; dir = 2},/area/ninja/holding) -"gY" = (/obj/structure/chair/stool,/turf/simulated/floor/holofloor{tag = "icon-carpet5-0 (EAST)"; icon_state = "carpet5-0"; dir = 4},/area/holodeck/source_meetinghall) -"gZ" = (/obj/structure/chair/stool,/turf/simulated/floor/holofloor{tag = "icon-carpet13-0 (EAST)"; icon_state = "carpet13-0"; dir = 4},/area/holodeck/source_meetinghall) -"ha" = (/obj/structure/chair/stool,/turf/simulated/floor/holofloor{tag = "icon-carpet9-0 (EAST)"; icon_state = "carpet9-0"; dir = 4},/area/holodeck/source_meetinghall) +"gT" = (/obj/structure/flora/grass/brown,/turf/simulated/floor/holofloor{tag = "icon-snow";icon_state = "snow"},/area/holodeck/source_snowfield) +"gU" = (/turf/simulated/floor/holofloor{dir = 2;icon_state = "green"},/area/holodeck/source_basketball) +"gV" = (/turf/simulated/floor/holofloor{icon_state = "sand";name = "Soft sand"},/area/holodeck/source_beach) +"gW" = (/obj/structure/rack,/obj/item/storage/fancy/crayons,/turf/unsimulated/floor{icon_state = "cafeteria";dir = 2},/area/ninja/holding) +"gX" = (/obj/machinery/vending/coffee,/obj/structure/window/reinforced{dir = 4},/turf/unsimulated/floor{icon_state = "cafeteria";dir = 2},/area/ninja/holding) "hb" = (/turf/simulated/floor/beach/coastline,/area/holodeck/source_beach) -"hc" = (/obj/structure/chair/stool,/obj/machinery/computer/security/telescreen{name = "Entertainment monitor"; desc = "Damn, they better have /tg/thechannel on these things."; icon_state = "entertainment"; pixel_y = -30},/turf/unsimulated/floor{icon_state = "cafeteria"; dir = 2},/area/ninja/holding) -"hd" = (/obj/machinery/vending/snack,/obj/structure/window/reinforced{dir = 4},/turf/unsimulated/floor{icon_state = "cafeteria"; dir = 2},/area/ninja/holding) +"hd" = (/obj/machinery/vending/snack,/obj/structure/window/reinforced{dir = 4},/turf/unsimulated/floor{icon_state = "cafeteria";dir = 2},/area/ninja/holding) "he" = (/turf/unsimulated/beach/coastline,/area/ninja/holding) "hf" = (/obj/item/clothing/head/collectable/paper,/turf/unsimulated/beach/coastline,/area/ninja/holding) "hg" = (/obj/effect/decal/warning_stripes/south,/obj/machinery/light{dir = 1},/turf/simulated/floor/plating/airless,/area/syndicate_mothership) -"hh" = (/turf/simulated/floor/holofloor{dir = 10; icon_state = "green"},/area/holodeck/source_basketball) -"hi" = (/obj/structure/holohoop{dir = 1},/turf/simulated/floor/holofloor{dir = 2; icon_state = "green"},/area/holodeck/source_basketball) -"hj" = (/turf/simulated/floor/holofloor{dir = 6; icon_state = "green"},/area/holodeck/source_basketball) +"hh" = (/turf/simulated/floor/holofloor{dir = 10;icon_state = "green"},/area/holodeck/source_basketball) +"hi" = (/obj/structure/holohoop{dir = 1},/turf/simulated/floor/holofloor{dir = 2;icon_state = "green"},/area/holodeck/source_basketball) +"hj" = (/turf/simulated/floor/holofloor{dir = 6;icon_state = "green"},/area/holodeck/source_basketball) "hk" = (/turf/simulated/floor/beach/water,/area/holodeck/source_beach) -"hl" = (/obj/structure/table/holotable,/turf/simulated/floor/holofloor{dir = 10; icon_state = "green"},/area/holodeck/source_thunderdomecourt) -"hm" = (/obj/structure/table/holotable,/obj/item/clothing/head/helmet/thunderdome,/obj/item/clothing/suit/armor/tdome/green,/obj/item/clothing/under/color/green,/obj/item/holo/esword/green,/turf/simulated/floor/holofloor{dir = 2; icon_state = "green"},/area/holodeck/source_thunderdomecourt) -"hn" = (/obj/structure/table/holotable,/obj/machinery/readybutton{pixel_y = 0},/turf/simulated/floor/holofloor{dir = 6; icon_state = "green"},/area/holodeck/source_thunderdomecourt) -"ho" = (/obj/structure/table/holotable,/obj/item/clothing/gloves/boxing/hologlove{icon_state = "boxinggreen"; item_state = "boxinggreen"},/turf/simulated/floor/holofloor{dir = 10; icon_state = "green"},/area/holodeck/source_boxingcourt) -"hp" = (/turf/simulated/floor/holofloor{dir = 2; icon_state = "green"},/area/holodeck/source_boxingcourt) -"hq" = (/obj/structure/table/holotable,/obj/item/clothing/gloves/boxing/hologlove{icon_state = "boxinggreen"; item_state = "boxinggreen"},/turf/simulated/floor/holofloor{dir = 6; icon_state = "green"},/area/holodeck/source_boxingcourt) -"hr" = (/obj/machinery/vending/cigarette,/turf/unsimulated/floor{icon_state = "cafeteria"; dir = 2},/area/ninja/holding) -"hs" = (/obj/structure/table,/turf/unsimulated/floor{icon_state = "cafeteria"; dir = 2},/area/ninja/holding) -"ht" = (/obj/structure/chair/stool,/obj/machinery/light/spot,/turf/unsimulated/floor{icon_state = "cafeteria"; dir = 2},/area/ninja/holding) -"hu" = (/obj/machinery/vending/cola,/obj/structure/window/reinforced{dir = 4},/turf/unsimulated/floor{icon_state = "cafeteria"; dir = 2},/area/ninja/holding) +"hl" = (/obj/structure/table/holotable,/turf/simulated/floor/holofloor{dir = 10;icon_state = "green"},/area/holodeck/source_thunderdomecourt) +"hm" = (/obj/structure/table/holotable,/obj/item/clothing/head/helmet/thunderdome,/obj/item/clothing/suit/armor/tdome/green,/obj/item/clothing/under/color/green,/obj/item/holo/esword/green,/turf/simulated/floor/holofloor{dir = 2;icon_state = "green"},/area/holodeck/source_thunderdomecourt) +"hn" = (/obj/structure/table/holotable,/obj/machinery/readybutton{pixel_y = 0},/turf/simulated/floor/holofloor{dir = 6;icon_state = "green"},/area/holodeck/source_thunderdomecourt) +"ho" = (/obj/structure/table/holotable,/obj/item/clothing/gloves/boxing/hologlove{icon_state = "boxinggreen";item_state = "boxinggreen"},/turf/simulated/floor/holofloor{dir = 10;icon_state = "green"},/area/holodeck/source_boxingcourt) +"hp" = (/turf/simulated/floor/holofloor{dir = 2;icon_state = "green"},/area/holodeck/source_boxingcourt) +"hq" = (/obj/structure/table/holotable,/obj/item/clothing/gloves/boxing/hologlove{icon_state = "boxinggreen";item_state = "boxinggreen"},/turf/simulated/floor/holofloor{dir = 6;icon_state = "green"},/area/holodeck/source_boxingcourt) +"hr" = (/obj/machinery/vending/cigarette,/turf/unsimulated/floor{icon_state = "cafeteria";dir = 2},/area/ninja/holding) +"hs" = (/obj/structure/table,/turf/unsimulated/floor{icon_state = "cafeteria";dir = 2},/area/ninja/holding) +"hu" = (/obj/machinery/vending/cola,/obj/structure/window/reinforced{dir = 4},/turf/unsimulated/floor{icon_state = "cafeteria";dir = 2},/area/ninja/holding) "hv" = (/turf/unsimulated/beach/water,/area/ninja/holding) "hw" = (/obj/machinery/light/spot,/turf/unsimulated/beach/water,/area/ninja/holding) "hx" = (/obj/effect/decal/warning_stripes/southwestcorner,/turf/simulated/floor/plating/airless,/area/syndicate_mothership) -"hy" = (/turf/unsimulated/wall{tag = "icon-iron5"; icon_state = "iron5"},/area/space) -"hz" = (/obj/structure/window/reinforced{dir = 1},/turf/unsimulated/wall{tag = "icon-iron12"; icon_state = "iron12"},/area/space) -"hA" = (/turf/unsimulated/wall{tag = "icon-iron13"; icon_state = "iron13"},/area/space) -"hB" = (/turf/unsimulated/wall{tag = "icon-iron9"; icon_state = "iron9"},/area/space) +"hy" = (/turf/unsimulated/wall{tag = "icon-iron5";icon_state = "iron5"},/area/space) +"hz" = (/obj/structure/window/reinforced{dir = 1},/turf/unsimulated/wall{tag = "icon-iron12";icon_state = "iron12"},/area/space) +"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/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) +"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) "hH" = (/obj/machinery/vending/sovietsoda,/obj/machinery/light/small{dir = 1},/turf/simulated/floor/wood,/area/dynamic/source/lobby_russian) -"hI" = (/obj/structure/chair/comfy/brown{dir = 4},/turf/simulated/floor/wood,/area/dynamic/source/lobby_russian) "hJ" = (/obj/structure/table/wood,/obj/item/gun/projectile/revolver/russian,/turf/simulated/floor/wood,/area/dynamic/source/lobby_russian) -"hK" = (/obj/structure/chair/comfy/brown{dir = 8},/turf/simulated/floor/wood,/area/dynamic/source/lobby_russian) "hL" = (/obj/machinery/vending/cigarette,/obj/machinery/light/small{dir = 1},/turf/simulated/floor/wood,/area/dynamic/source/lobby_russian) -"hM" = (/obj/structure/chair/sofa/right,/turf/simulated/floor/wood,/area/dynamic/source/lobby_disco) -"hN" = (/obj/machinery/light/small{dir = 1},/obj/structure/chair/sofa/left,/turf/simulated/floor/wood,/area/dynamic/source/lobby_disco) "hO" = (/obj/machinery/computer/shuttle/sit,/turf/unsimulated/floor{icon_state = "dark"},/area/syndicate_mothership/infteam) -"hP" = (/obj/machinery/light/small{dir = 1},/obj/structure/chair/sofa/right,/turf/simulated/floor/wood,/area/dynamic/source/lobby_disco) -"hQ" = (/obj/structure/chair/sofa/left,/turf/simulated/floor/wood,/area/dynamic/source/lobby_disco) "hR" = (/obj/structure/reagent_dispensers/beerkeg,/turf/simulated/floor/wood,/area/dynamic/source/lobby_bar) "hS" = (/obj/structure/table/wood,/obj/machinery/chem_dispenser/beer,/obj/machinery/light/small{dir = 1},/turf/simulated/floor/wood,/area/dynamic/source/lobby_bar) "hT" = (/obj/structure/table/wood,/obj/machinery/chem_dispenser/soda,/turf/simulated/floor/wood,/area/dynamic/source/lobby_bar) "hU" = (/obj/structure/table/wood,/obj/item/storage/box/drinkingglasses,/obj/machinery/light/small{dir = 1},/turf/simulated/floor/wood,/area/dynamic/source/lobby_bar) "hV" = (/obj/structure/table/wood,/obj/item/reagent_containers/food/drinks/shaker,/turf/simulated/floor/wood,/area/dynamic/source/lobby_bar) "hW" = (/turf/simulated/floor/wood,/area/dynamic/source/lobby_russian) -"hX" = (/obj/structure/chair/comfy/brown{dir = 1},/turf/simulated/floor/wood,/area/dynamic/source/lobby_russian) "hY" = (/turf/simulated/floor/wood,/area/dynamic/source/lobby_disco) "hZ" = (/turf/simulated/floor/light,/area/dynamic/source/lobby_disco) "ia" = (/turf/simulated/floor/wood,/area/dynamic/source/lobby_bar) "ib" = (/obj/structure/table/wood,/turf/simulated/floor/wood,/area/dynamic/source/lobby_russian) "ic" = (/obj/machinery/light/small,/turf/simulated/floor/wood,/area/dynamic/source/lobby_russian) "id" = (/obj/machinery/light/small,/turf/simulated/floor/light,/area/dynamic/source/lobby_disco) -"ie" = (/obj/structure/chair/stool,/turf/simulated/floor/wood,/area/dynamic/source/lobby_bar) "if" = (/obj/structure/table/wood,/obj/machinery/light/small,/turf/simulated/floor/wood,/area/dynamic/source/lobby_bar) "ig" = (/obj/structure/table/wood,/obj/item/book/manual/barman_recipes,/obj/machinery/light/small,/turf/simulated/floor/wood,/area/dynamic/source/lobby_bar) "ih" = (/turf/unsimulated/wall,/area/wizard_station) -"ii" = (/obj/structure/bookcase{name = "Forbidden Knowledge"},/obj/effect/decal/cleanable/cobweb,/turf/unsimulated/floor{dir = 8; icon_state = "wood"},/area/wizard_station) -"ij" = (/obj/structure/bookcase{name = "Forbidden Knowledge"},/turf/unsimulated/floor{dir = 8; icon_state = "wood"},/area/wizard_station) -"ik" = (/turf/unsimulated/floor{dir = 8; icon_state = "wood"},/area/wizard_station) -"il" = (/obj/machinery/computer/library/checkout,/obj/structure/table/wood,/turf/unsimulated/floor{dir = 8; icon_state = "wood"},/area/wizard_station) -"im" = (/obj/machinery/vending/magivend,/obj/machinery/light/spot{tag = "icon-tube1 (NORTH)"; icon_state = "tube1"; dir = 1},/turf/unsimulated/floor{dir = 8; icon_state = "wood"},/area/wizard_station) -"in" = (/obj/machinery/vending/snack,/turf/unsimulated/floor{dir = 8; icon_state = "wood"},/area/wizard_station) -"io" = (/obj/structure/closet{icon_closed = "cabinet_closed"; icon_opened = "cabinet_open"; icon_state = "cabinet_closed"},/obj/item/storage/backpack/satchel,/turf/unsimulated/floor{dir = 9; icon_state = "carpetside"},/area/wizard_station) -"ip" = (/obj/structure/mirror{pixel_y = 28},/turf/unsimulated/floor{dir = 1; icon_state = "carpetside"},/area/wizard_station) -"iq" = (/obj/structure/bed,/obj/item/bedsheet/wiz,/turf/unsimulated/floor{dir = 5; icon_state = "carpetside"},/area/wizard_station) -"ir" = (/turf/space,/turf/simulated/shuttle/wall{dir = 8; icon_state = "diagonalWall3"},/area/syndicate_mothership) -"is" = (/turf/unsimulated/wall{desc = "Why it no open!"; icon_state = "pdoor1"; name = "Shuttle Bay Blast Door"},/area/syndicate_mothership) +"ii" = (/obj/structure/bookcase{name = "Forbidden Knowledge"},/obj/effect/decal/cleanable/cobweb,/turf/unsimulated/floor{dir = 8;icon_state = "wood"},/area/wizard_station) +"ij" = (/obj/structure/bookcase{name = "Forbidden Knowledge"},/turf/unsimulated/floor{dir = 8;icon_state = "wood"},/area/wizard_station) +"ik" = (/turf/unsimulated/floor{dir = 8;icon_state = "wood"},/area/wizard_station) +"il" = (/obj/machinery/computer/library/checkout,/obj/structure/table/wood,/turf/unsimulated/floor{dir = 8;icon_state = "wood"},/area/wizard_station) +"im" = (/obj/machinery/vending/magivend,/obj/machinery/light/spot{tag = "icon-tube1 (NORTH)";icon_state = "tube1";dir = 1},/turf/unsimulated/floor{dir = 8;icon_state = "wood"},/area/wizard_station) +"in" = (/obj/machinery/vending/snack,/turf/unsimulated/floor{dir = 8;icon_state = "wood"},/area/wizard_station) +"io" = (/obj/structure/closet{icon_closed = "cabinet_closed";icon_opened = "cabinet_open";icon_state = "cabinet_closed"},/obj/item/storage/backpack/satchel,/turf/unsimulated/floor{dir = 9;icon_state = "carpetside"},/area/wizard_station) +"ip" = (/obj/structure/mirror{pixel_y = 28},/turf/unsimulated/floor{dir = 1;icon_state = "carpetside"},/area/wizard_station) +"ir" = (/turf/space,/turf/simulated/shuttle/wall{dir = 8;icon_state = "diagonalWall3"},/area/syndicate_mothership) +"is" = (/turf/unsimulated/wall{desc = "Why it no open!";icon_state = "pdoor1";name = "Shuttle Bay Blast Door"},/area/syndicate_mothership) "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/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) -"iA" = (/obj/docking_port/stationary/transit{dir = 8; dwidth = 3; height = 5; id = "sst_transit"; name = "sst in transit"; width = 11},/turf/space/transit,/area/space) -"iB" = (/obj/machinery/door/airlock/external{id_tag = "sst_away"; req_access_txt = "150"},/turf/unsimulated/floor{name = "plating"},/area/syndicate_mothership/elite_squad) -"iC" = (/obj/docking_port/stationary{dir = 8; dwidth = 3; height = 5; id = "sst_away"; name = "syndicate docking bay"; width = 11},/turf/space,/area/space) -"iD" = (/obj/item/gun/projectile/automatic/pistol/m1911,/obj/item/ammo_box/magazine/m45,/obj/item/ammo_box/magazine/m45,/obj/item/ammo_box/magazine/m45,/obj/structure/closet{icon_closed = "cabinet_closed"; icon_opened = "cabinet_open"; icon_state = "cabinet_closed"},/obj/item/clothing/head/helmet/space/deathsquad/beret,/obj/item/clothing/shoes/combat,/obj/item/clothing/under/syndicate/combat,/obj/item/clothing/gloves/combat,/obj/item/clothing/suit/space/deathsquad/officer,/obj/item/clothing/under/rank/centcom/captain,/obj/item/storage/box/handcuffs,/obj/item/storage/box/flashbangs,/obj/item/clothing/mask/gas,/obj/item/tank/emergency_oxygen/double,/obj/item/radio/headset/ert{pixel_x = 6; pixel_y = -6},/turf/unsimulated/floor{icon_state = "grimy"},/area/centcom/specops) -"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) +"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) +"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) +"iA" = (/obj/docking_port/stationary/transit{dir = 8;dwidth = 3;height = 5;id = "sst_transit";name = "sst in transit";width = 11},/turf/space/transit,/area/space) +"iB" = (/obj/machinery/door/airlock/external{id_tag = "sst_away";req_access_txt = "150"},/turf/unsimulated/floor{name = "plating"},/area/syndicate_mothership/elite_squad) +"iC" = (/obj/docking_port/stationary{dir = 8;dwidth = 3;height = 5;id = "sst_away";name = "syndicate docking bay";width = 11},/turf/space,/area/space) +"iD" = (/obj/item/gun/projectile/automatic/pistol/m1911,/obj/item/ammo_box/magazine/m45,/obj/item/ammo_box/magazine/m45,/obj/item/ammo_box/magazine/m45,/obj/structure/closet{icon_closed = "cabinet_closed";icon_opened = "cabinet_open";icon_state = "cabinet_closed"},/obj/item/clothing/head/helmet/space/deathsquad/beret,/obj/item/clothing/shoes/combat,/obj/item/clothing/under/syndicate/combat,/obj/item/clothing/gloves/combat,/obj/item/clothing/suit/space/deathsquad/officer,/obj/item/clothing/under/rank/centcom/captain,/obj/item/storage/box/handcuffs,/obj/item/storage/box/flashbangs,/obj/item/clothing/mask/gas,/obj/item/tank/emergency_oxygen/double,/obj/item/radio/headset/ert{pixel_x = 6;pixel_y = -6},/turf/unsimulated/floor{icon_state = "grimy"},/area/centcom/specops) +"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/bush,/turf/unsimulated/floor/snow{tag = "icon-gravsnow_corner (NORTH)"; icon_state = "gravsnow_corner"; dir = 1},/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) "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) -"iL" = (/obj/structure/bookcase{name = "bookcase (Tactics)"},/turf/unsimulated/floor{dir = 8; icon_state = "wood"},/area/wizard_station) -"iM" = (/obj/item/radio/intercom/syndicate{pixel_x = 28},/turf/unsimulated/floor{dir = 8; icon_state = "wood"},/area/wizard_station) -"iN" = (/obj/structure/table/wood,/obj/item/trash/tray,/obj/item/paper/spells,/turf/unsimulated/floor{dir = 10; icon_state = "carpetside"},/area/wizard_station) -"iO" = (/turf/unsimulated/floor{dir = 2; icon_state = "carpetside"},/area/wizard_station) -"iP" = (/obj/structure/table/wood,/obj/effect/landmark{name = "Teleport-Scroll"},/turf/unsimulated/floor{dir = 6; icon_state = "carpetside"},/area/wizard_station) -"iQ" = (/turf/space,/turf/unsimulated/wall{dir = 2; icon = 'icons/turf/shuttle.dmi'; icon_state = "diagonalWall3"},/area/space) -"iR" = (/obj/structure/rack,/obj/item/radio/headset/heads/captain{pixel_x = 3; pixel_y = -3},/obj/item/radio/headset/syndicate,/obj/item/radio/headset/heads/ntrep{pixel_x = -3; pixel_y = 3},/obj/item/radio/headset/ert{pixel_x = 6; pixel_y = -6},/turf/unsimulated/floor{tag = "icon-floor"; icon_state = "floor"},/area/admin) +"iL" = (/obj/structure/bookcase{name = "bookcase (Tactics)"},/turf/unsimulated/floor{dir = 8;icon_state = "wood"},/area/wizard_station) +"iM" = (/obj/item/radio/intercom/syndicate{pixel_x = 28},/turf/unsimulated/floor{dir = 8;icon_state = "wood"},/area/wizard_station) +"iN" = (/obj/structure/table/wood,/obj/item/trash/tray,/obj/item/paper/spells,/turf/unsimulated/floor{dir = 10;icon_state = "carpetside"},/area/wizard_station) +"iO" = (/turf/unsimulated/floor{dir = 2;icon_state = "carpetside"},/area/wizard_station) +"iP" = (/obj/structure/table/wood,/obj/effect/landmark{name = "Teleport-Scroll"},/turf/unsimulated/floor{dir = 6;icon_state = "carpetside"},/area/wizard_station) +"iQ" = (/turf/space,/turf/unsimulated/wall{dir = 2;icon = 'icons/turf/shuttle.dmi';icon_state = "diagonalWall3"},/area/space) +"iR" = (/obj/structure/rack,/obj/item/radio/headset/heads/captain{pixel_x = 3;pixel_y = -3},/obj/item/radio/headset/syndicate,/obj/item/radio/headset/heads/ntrep{pixel_x = -3;pixel_y = 3},/obj/item/radio/headset/ert{pixel_x = 6;pixel_y = -6},/turf/unsimulated/floor{tag = "icon-floor";icon_state = "floor"},/area/admin) "iS" = (/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/shuttle/assault_pod) "iT" = (/obj/effect/decal/warning_stripes/west,/turf/simulated/floor/plating/airless,/area/syndicate_mothership) -"iU" = (/obj/structure/chair{dir = 1},/obj/machinery/light/small,/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/shuttle/assault_pod) "iV" = (/turf/simulated/floor/plating,/area/syndicate_mothership) "iW" = (/obj/machinery/door/airlock/external{req_access_txt = "150"},/turf/simulated/floor/plating,/area/syndicate_mothership) "iX" = (/obj/machinery/light,/turf/simulated/floor/plating,/area/syndicate_mothership) -"iY" = (/obj/structure/chair{dir = 8},/obj/machinery/light/small{tag = "icon-bulb1 (EAST)"; icon_state = "bulb1"; dir = 4},/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/shuttle/assault_pod) -"iZ" = (/obj/machinery/door/poddoor{id_tag = "thunderdomeaxe"; name = "Axe Supply"},/turf/unsimulated/floor{icon_state = "dark"},/area/tdome/arena_source) +"iZ" = (/obj/machinery/door/poddoor{id_tag = "thunderdomeaxe";name = "Axe Supply"},/turf/unsimulated/floor{icon_state = "dark"},/area/tdome/arena_source) "ja" = (/turf/unsimulated/wall,/area/tdome/arena) "jb" = (/obj/machinery/igniter,/turf/simulated/floor/plasteel,/area/tdome/arena) "jc" = (/turf/simulated/floor/plasteel,/area/tdome/arena) -"jd" = (/obj/structure/chair,/turf/unsimulated/floor{dir = 8; icon_state = "wood"},/area/wizard_station) "je" = (/turf/unsimulated/floor{icon_state = "grimy"},/area/wizard_station) -"jf" = (/obj/structure/rack,/obj/item/storage/belt/utility/full/multitool{pixel_x = -3; pixel_y = 3},/obj/item/storage/belt/military,/obj/item/storage/belt/military/assault{pixel_x = 3; pixel_y = -3},/obj/item/storage/belt/champion/wrestling,/turf/unsimulated/floor{tag = "icon-floor"; icon_state = "floor"},/area/admin) -"jg" = (/mob/living/silicon/decoy{icon_state = "ai-malf"; name = "GLaDOS"},/turf/unsimulated/floor{icon_state = "whiteshiny"},/area/syndicate_mothership/control) +"jf" = (/obj/structure/rack,/obj/item/storage/belt/utility/full/multitool{pixel_x = -3;pixel_y = 3},/obj/item/storage/belt/military,/obj/item/storage/belt/military/assault{pixel_x = 3;pixel_y = -3},/obj/item/storage/belt/champion/wrestling,/turf/unsimulated/floor{tag = "icon-floor";icon_state = "floor"},/area/admin) +"jg" = (/mob/living/silicon/decoy{icon_state = "ai-malf";name = "GLaDOS"},/turf/unsimulated/floor{icon_state = "whiteshiny"},/area/syndicate_mothership/control) "jh" = (/obj/structure/window/reinforced{dir = 4},/obj/item/radio/intercom/syndicate,/turf/unsimulated/floor{icon_state = "circuit"},/area/syndicate_mothership) -"ji" = (/obj/structure/chair{dir = 4},/obj/machinery/light/small{tag = "icon-bulb1 (WEST)"; icon_state = "bulb1"; dir = 8},/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/shuttle/assault_pod) "jj" = (/obj/machinery/computer/shuttle/syndicate/drop_pod,/turf/simulated/shuttle/wall{icon_state = "wall3"},/area/shuttle/assault_pod) -"jk" = (/obj/structure/chair,/obj/machinery/light/small{dir = 1},/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/shuttle/assault_pod) "jl" = (/obj/structure/rack,/obj/item/clothing/under/color/red,/obj/item/clothing/shoes/brown,/obj/item/clothing/suit/armor/tdome/red,/obj/item/clothing/head/helmet/thunderdome,/obj/item/melee/energy/sword/saber/red,/turf/unsimulated/floor{icon_state = "dark"},/area/tdome/arena_source) -"jm" = (/obj/machinery/door/poddoor{id_tag = "thunderdomegen"; name = "General Supply"},/turf/unsimulated/floor{icon_state = "dark"},/area/tdome/arena_source) -"jn" = (/obj/machinery/door/poddoor{id_tag = "thunderdome"; name = "Thunderdome Blast Door"},/turf/unsimulated/floor{name = "plating"},/area/tdome/arena_source) -"jo" = (/turf/simulated/floor/plasteel{icon_state = "red"; dir = 8},/area/tdome/arena_source) +"jm" = (/obj/machinery/door/poddoor{id_tag = "thunderdomegen";name = "General Supply"},/turf/unsimulated/floor{icon_state = "dark"},/area/tdome/arena_source) +"jn" = (/obj/machinery/door/poddoor{id_tag = "thunderdome";name = "Thunderdome Blast Door"},/turf/unsimulated/floor{name = "plating"},/area/tdome/arena_source) +"jo" = (/turf/simulated/floor/plasteel{icon_state = "red";dir = 8},/area/tdome/arena_source) "jp" = (/turf/simulated/floor/plasteel,/area/tdome/arena_source) -"jq" = (/turf/simulated/floor/plasteel{icon_state = "green"; dir = 4},/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/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) +"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) +"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) -"jw" = (/obj/machinery/door/airlock/centcom{aiControlDisabled = 1; name = "Assault Pod"; opacity = 1; req_one_access_txt = "150"},/obj/docking_port/mobile/assault_pod,/turf/simulated/floor/plating,/area/shuttle/assault_pod) +"jw" = (/obj/machinery/door/airlock/centcom{aiControlDisabled = 1;name = "Assault Pod";opacity = 1;req_one_access_txt = "150"},/obj/docking_port/mobile/assault_pod,/turf/simulated/floor/plating,/area/shuttle/assault_pod) "jx" = (/obj/effect/decal/warning_stripes/northwest,/turf/simulated/floor/plating/airless,/area/syndicate_mothership) "jy" = (/obj/effect/decal/warning_stripes/northwestcorner,/turf/simulated/floor/plating/airless,/area/syndicate_mothership) "jz" = (/obj/machinery/light,/turf/simulated/floor/plating/airless,/area/syndicate_mothership) -"jA" = (/obj/structure/bookcase,/turf/unsimulated/floor{dir = 8; icon_state = "wood"},/area/wizard_station) -"jB" = (/obj/structure/chair{dir = 4},/turf/unsimulated/floor{dir = 8; icon_state = "wood"},/area/wizard_station) -"jC" = (/obj/structure/table/wood,/obj/machinery/recharger{pixel_y = 0},/turf/unsimulated/floor{dir = 8; icon_state = "wood"},/area/wizard_station) -"jD" = (/obj/structure/table/wood,/obj/item/dice/d20,/obj/item/dice,/turf/unsimulated/floor{dir = 8; icon_state = "wood"},/area/wizard_station) +"jA" = (/obj/structure/bookcase,/turf/unsimulated/floor{dir = 8;icon_state = "wood"},/area/wizard_station) +"jC" = (/obj/structure/table/wood,/obj/machinery/recharger{pixel_y = 0},/turf/unsimulated/floor{dir = 8;icon_state = "wood"},/area/wizard_station) +"jD" = (/obj/structure/table/wood,/obj/item/dice/d20,/obj/item/dice,/turf/unsimulated/floor{dir = 8;icon_state = "wood"},/area/wizard_station) "jE" = (/obj/structure/rack,/obj/item/clothing/suit/wizrobe/marisa,/obj/item/clothing/shoes/sandal/marisa,/obj/item/clothing/head/wizard/marisa,/obj/item/twohanded/staff/broom,/turf/unsimulated/floor{icon_state = "grimy"},/area/wizard_station) "jF" = (/obj/structure/rack,/obj/item/clothing/suit/wizrobe/magusblue,/obj/item/clothing/head/wizard/magus,/obj/item/twohanded/staff,/turf/unsimulated/floor{icon_state = "grimy"},/area/wizard_station) -"jG" = (/obj/structure/rack,/obj/item/storage/backpack/holding{pixel_x = -3; pixel_y = 3},/obj/item/storage/backpack/satchel,/obj/item/storage/backpack/holding{pixel_x = -6; pixel_y = 6},/turf/unsimulated/floor{tag = "icon-floor"; icon_state = "floor"},/area/admin) -"jH" = (/obj/effect/spawner/window/reinforced,/turf/simulated/floor/plasteel{icon_state = "red"; dir = 8},/area/centcom/gamma) +"jG" = (/obj/structure/rack,/obj/item/storage/backpack/holding{pixel_x = -3;pixel_y = 3},/obj/item/storage/backpack/satchel,/obj/item/storage/backpack/holding{pixel_x = -6;pixel_y = 6},/turf/unsimulated/floor{tag = "icon-floor";icon_state = "floor"},/area/admin) +"jH" = (/obj/effect/spawner/window/reinforced,/turf/simulated/floor/plasteel{icon_state = "red";dir = 8},/area/centcom/gamma) "jI" = (/turf/space,/area/adminconstruction) "jJ" = (/obj/effect/decal/warning_stripes/north,/turf/simulated/floor/plating/airless,/area/syndicate_mothership) "jK" = (/obj/effect/decal/warning_stripes/north,/obj/machinery/light,/turf/simulated/floor/plating/airless,/area/syndicate_mothership) -"jL" = (/obj/docking_port/stationary/transit{dwidth = 3; height = 7; id = "steel_rain_transit"; name = "steel_rain in transit"; width = 7},/turf/space/transit/horizontal,/area/space) -"jM" = (/obj/item/soap/syndie,/obj/structure/mopbucket,/obj/machinery/light{dir = 1},/turf/unsimulated/floor{icon_state = "freezerfloor"; dir = 2},/area/syndicate_mothership) -"jN" = (/obj/structure/table/wood,/obj/item/pizzabox,/obj/item/paicard/syndicate,/turf/unsimulated/floor{icon_state = "bar"; dir = 2},/area/syndicate_mothership) -"jO" = (/obj/structure/table/wood,/obj/item/toy/nuke,/turf/unsimulated/floor{dir = 2; icon_state = "wood"},/area/syndicate_mothership) +"jL" = (/obj/docking_port/stationary/transit{dwidth = 3;height = 7;id = "steel_rain_transit";name = "steel_rain in transit";width = 7},/turf/space/transit/horizontal,/area/space) +"jM" = (/obj/item/soap/syndie,/obj/structure/mopbucket,/obj/machinery/light{dir = 1},/turf/unsimulated/floor{icon_state = "freezerfloor";dir = 2},/area/syndicate_mothership) +"jN" = (/obj/structure/table/wood,/obj/item/pizzabox,/obj/item/paicard/syndicate,/turf/unsimulated/floor{icon_state = "bar";dir = 2},/area/syndicate_mothership) +"jO" = (/obj/structure/table/wood,/obj/item/toy/nuke,/turf/unsimulated/floor{dir = 2;icon_state = "wood"},/area/syndicate_mothership) "jP" = (/turf/unsimulated/wall/abductor{icon_state = "alien21"},/area/abductor_ship) "jQ" = (/turf/unsimulated/wall/abductor{icon_state = "alien20"},/area/abductor_ship) "jR" = (/turf/unsimulated/wall/abductor{icon_state = "alien23"},/area/abductor_ship) @@ -519,24 +466,24 @@ "jY" = (/obj/machinery/abductor/console{team = 1},/turf/unsimulated/floor/abductor,/area/abductor_ship) "jZ" = (/turf/unsimulated/wall/abductor{icon_state = "alien19"},/area/abductor_ship) "ka" = (/turf/unsimulated/wall/abductor{icon_state = "alien18"},/area/abductor_ship) -"kb" = (/obj/machinery/light/spot{tag = "icon-tube1 (WEST)"; icon_state = "tube1"; dir = 8},/turf/unsimulated/floor{dir = 8; icon_state = "wood"},/area/wizard_station) -"kc" = (/obj/structure/table/wood,/obj/item/reagent_containers/food/drinks/mugwort,/turf/unsimulated/floor{dir = 8; icon_state = "wood"},/area/wizard_station) +"kb" = (/obj/machinery/light/spot{tag = "icon-tube1 (WEST)";icon_state = "tube1";dir = 8},/turf/unsimulated/floor{dir = 8;icon_state = "wood"},/area/wizard_station) +"kc" = (/obj/structure/table/wood,/obj/item/reagent_containers/food/drinks/mugwort,/turf/unsimulated/floor{dir = 8;icon_state = "wood"},/area/wizard_station) "kd" = (/turf/unsimulated/floor{icon_state = "floor"},/area/centcom/gamma) "ke" = (/obj/structure/rack,/obj/item/clothing/suit/wizrobe/red,/obj/item/clothing/shoes/sandal,/obj/item/clothing/head/wizard/red,/obj/item/twohanded/staff,/turf/unsimulated/floor{icon_state = "grimy"},/area/wizard_station) "kf" = (/obj/machinery/light/spot,/turf/unsimulated/floor{icon_state = "grimy"},/area/wizard_station) "kg" = (/obj/structure/rack,/obj/item/clothing/suit/wizrobe/magusred,/obj/item/clothing/head/wizard/magus,/obj/item/twohanded/staff,/turf/unsimulated/floor{icon_state = "grimy"},/area/wizard_station) -"kh" = (/obj/structure/rack,/obj/item/gun/energy/lasercannon,/obj/item/gun/energy/lasercannon{pixel_x = 6; pixel_y = -6},/turf/unsimulated/floor{tag = "icon-floor"; icon_state = "floor"},/area/admin) -"ki" = (/obj/machinery/light/spot{tag = "icon-tube1 (EAST)"; icon_state = "tube1"; dir = 4},/turf/space,/area/syndicate_mothership/elite_squad) -"kj" = (/turf/simulated/shuttle/wall{dir = 4; icon_state = "wall3"},/area/syndicate_mothership/elite_squad) -"kk" = (/obj/machinery/computer/pod{id_tags = list("syndicate_elite"); name = "Hull Door Control"; req_access_txt = "150"},/turf/unsimulated/floor{icon_state = "dark"},/area/syndicate_mothership/elite_squad) -"kl" = (/obj/item/radio/intercom/syndicate{pixel_x = 0; pixel_y = 25},/turf/unsimulated/floor{icon_state = "dark"},/area/syndicate_mothership/elite_squad) -"km" = (/obj/effect/landmark{name = "Syndicate-Commando"; tag = "Commando"},/obj/machinery/light/spot{tag = "icon-tube1 (NORTH)"; icon_state = "tube1"; dir = 1},/turf/unsimulated/floor{icon_state = "dark"},/area/syndicate_mothership/elite_squad) +"kh" = (/obj/structure/rack,/obj/item/gun/energy/lasercannon,/obj/item/gun/energy/lasercannon{pixel_x = 6;pixel_y = -6},/turf/unsimulated/floor{tag = "icon-floor";icon_state = "floor"},/area/admin) +"ki" = (/obj/machinery/light/spot{tag = "icon-tube1 (EAST)";icon_state = "tube1";dir = 4},/turf/space,/area/syndicate_mothership/elite_squad) +"kj" = (/turf/simulated/shuttle/wall{dir = 4;icon_state = "wall3"},/area/syndicate_mothership/elite_squad) +"kk" = (/obj/machinery/computer/pod{id_tags = list("syndicate_elite");name = "Hull Door Control";req_access_txt = "150"},/turf/unsimulated/floor{icon_state = "dark"},/area/syndicate_mothership/elite_squad) +"kl" = (/obj/item/radio/intercom/syndicate{pixel_x = 0;pixel_y = 25},/turf/unsimulated/floor{icon_state = "dark"},/area/syndicate_mothership/elite_squad) +"km" = (/obj/effect/landmark{name = "Syndicate-Commando";tag = "Commando"},/obj/machinery/light/spot{tag = "icon-tube1 (NORTH)";icon_state = "tube1";dir = 1},/turf/unsimulated/floor{icon_state = "dark"},/area/syndicate_mothership/elite_squad) "kn" = (/turf/unsimulated/floor{icon_state = "dark"},/area/syndicate_mothership/elite_squad) -"ko" = (/obj/structure/cable{icon_state = "0-2"; d2 = 2},/obj/machinery/mech_bay_recharge_port/upgraded,/turf/unsimulated/floor{icon_state = "dark"},/area/syndicate_mothership/elite_squad) +"ko" = (/obj/structure/cable{icon_state = "0-2";d2 = 2},/obj/machinery/mech_bay_recharge_port/upgraded,/turf/unsimulated/floor{icon_state = "dark"},/area/syndicate_mothership/elite_squad) "kp" = (/obj/mecha/combat/marauder/mauler/loaded,/turf/unsimulated/floor{icon_state = "dark"},/area/syndicate_mothership) -"kq" = (/obj/machinery/light/spot{tag = "icon-tube1 (NORTH)"; icon_state = "tube1"; dir = 1},/turf/unsimulated/floor{icon_state = "dark"},/area/syndicate_mothership) +"kq" = (/obj/machinery/light/spot{tag = "icon-tube1 (NORTH)";icon_state = "tube1";dir = 1},/turf/unsimulated/floor{icon_state = "dark"},/area/syndicate_mothership) "kr" = (/turf/unsimulated/floor{icon_state = "dark"},/area/syndicate_mothership) -"ks" = (/turf/simulated/shuttle/wall{dir = 4; icon_state = "wall3"},/area/syndicate_mothership) +"ks" = (/turf/simulated/shuttle/wall{dir = 4;icon_state = "wall3"},/area/syndicate_mothership) "kt" = (/obj/machinery/abductor/experiment{team = 4},/turf/unsimulated/floor/abductor,/area/abductor_ship) "ku" = (/obj/machinery/abductor/pad{team = 4},/turf/unsimulated/floor/abductor,/area/abductor_ship) "kv" = (/obj/machinery/abductor/console{team = 4},/turf/unsimulated/floor/abductor,/area/abductor_ship) @@ -546,16 +493,16 @@ "kz" = (/turf/unsimulated/wall/abductor{icon_state = "alien15"},/area/abductor_ship) "kA" = (/obj/structure/closet/abductor,/turf/unsimulated/floor/abductor,/area/abductor_ship) "kB" = (/turf/simulated/floor/bluegrid,/area/tdome/arena_source) -"kC" = (/obj/machinery/flasher{id = "flash"; name = "Thunderdome Flash"},/turf/simulated/floor/bluegrid,/area/tdome/arena_source) +"kC" = (/obj/machinery/flasher{id = "flash";name = "Thunderdome Flash"},/turf/simulated/floor/bluegrid,/area/tdome/arena_source) "kD" = (/obj/machinery/computer/camera_advanced/abductor{team = 4},/turf/unsimulated/floor/abductor,/area/abductor_ship) "kE" = (/turf/unsimulated/wall/abductor{icon_state = "alien12"},/area/abductor_ship) "kF" = (/obj/effect/landmark/abductor/scientist,/turf/unsimulated/floor/abductor,/area/abductor_ship) "kG" = (/obj/structure/table/abductor,/obj/item/retractor/alien,/obj/item/hemostat/alien,/turf/unsimulated/floor/abductor,/area/abductor_ship) "kH" = (/obj/effect/landmark/abductor/agent,/turf/unsimulated/floor/abductor,/area/abductor_ship) "kI" = (/obj/machinery/optable/abductor,/turf/unsimulated/floor/abductor,/area/abductor_ship) -"kJ" = (/obj/item/flag/wiz,/turf/unsimulated/floor{dir = 8; icon_state = "wood"},/area/wizard_station) +"kJ" = (/obj/item/flag/wiz,/turf/unsimulated/floor{dir = 8;icon_state = "wood"},/area/wizard_station) "kK" = (/obj/effect/spawner/window/reinforced,/turf/unsimulated/floor{name = "plating"},/area/syndicate_mothership/elite_squad) -"kL" = (/obj/effect/landmark{name = "Syndicate-Commando"; tag = "Commando"},/turf/unsimulated/floor{icon_state = "dark"},/area/syndicate_mothership/elite_squad) +"kL" = (/obj/effect/landmark{name = "Syndicate-Commando";tag = "Commando"},/turf/unsimulated/floor{icon_state = "dark"},/area/syndicate_mothership/elite_squad) "kM" = (/turf/unsimulated/wall/abductor{icon_state = "alien13"},/area/abductor_ship) "kN" = (/obj/structure/table/abductor,/obj/item/storage/box/alienhandcuffs,/turf/unsimulated/floor/abductor,/area/abductor_ship) "kO" = (/obj/effect/landmark/abductor/scientist{team = 4},/turf/unsimulated/floor/abductor,/area/abductor_ship) @@ -563,50 +510,46 @@ "kQ" = (/turf/unsimulated/wall/abductor{icon_state = "alien10"},/area/abductor_ship) "kR" = (/obj/structure/table/abductor,/obj/item/paper/abductor,/obj/item/scalpel/alien,/obj/item/cautery/alien,/turf/unsimulated/floor/abductor,/area/abductor_ship) "kS" = (/turf/unsimulated/wall/abductor{icon_state = "alien11"},/area/abductor_ship) -"kT" = (/obj/machinery/camera{pixel_x = 10; network = list("Thunderdome"); c_tag = "Thunderdome Arena"},/turf/simulated/floor/bluegrid,/area/tdome/arena_source) +"kT" = (/obj/machinery/camera{pixel_x = 10;network = list("Thunderdome");c_tag = "Thunderdome Arena"},/turf/simulated/floor/bluegrid,/area/tdome/arena_source) "kU" = (/turf/unsimulated/wall/abductor{icon_state = "alien6"},/area/abductor_ship) "kV" = (/obj/machinery/abductor/gland_dispenser,/turf/unsimulated/floor/abductor,/area/abductor_ship) -"kW" = (/turf/unsimulated/wall/fakeglass{tag = "icon-fakewindows (WEST)"; icon_state = "fakewindows"; dir = 8},/area/wizard_station) -"kX" = (/turf/unsimulated/wall/fakeglass{tag = "icon-fakewindows2 (WEST)"; icon_state = "fakewindows2"; dir = 8},/area/wizard_station) -"kY" = (/turf/unsimulated/wall/fakeglass{tag = "icon-fakewindows (NORTHEAST)"; icon_state = "fakewindows"; dir = 5},/area/wizard_station) -"kZ" = (/obj/item/trash/raisins,/turf/unsimulated/floor{dir = 8; icon_state = "wood"},/area/wizard_station) -"la" = (/turf/unsimulated/wall/fakeglass{dir = 8; icon_state = "fakewindows3"; tag = "icon-fakewindows (WEST)"},/area/wizard_station) -"lb" = (/obj/structure/showcase,/turf/unsimulated/floor{dir = 1; icon_state = "chapel"},/area/wizard_station) -"lc" = (/obj/structure/table/reinforced,/obj/structure/kitchenspike,/turf/unsimulated/floor{dir = 4; icon_state = "chapel"},/area/wizard_station) -"ld" = (/obj/structure/table/reinforced,/obj/structure/kitchenspike,/turf/unsimulated/floor{dir = 1; icon_state = "chapel"},/area/wizard_station) -"le" = (/obj/effect/decal/cleanable/cobweb2,/obj/structure/showcase,/turf/unsimulated/floor{dir = 4; icon_state = "chapel"},/area/wizard_station) -"lf" = (/obj/structure/rack,/obj/item/gun/energy/laser/instakill/blue{pixel_x = 3; pixel_y = -3},/obj/item/gun/energy/laser/instakill/red{pixel_x = -3; pixel_y = 3},/turf/unsimulated/floor{tag = "icon-floor"; icon_state = "floor"},/area/admin) +"kW" = (/turf/unsimulated/wall/fakeglass{tag = "icon-fakewindows (WEST)";icon_state = "fakewindows";dir = 8},/area/wizard_station) +"kX" = (/turf/unsimulated/wall/fakeglass{tag = "icon-fakewindows2 (WEST)";icon_state = "fakewindows2";dir = 8},/area/wizard_station) +"kY" = (/turf/unsimulated/wall/fakeglass{tag = "icon-fakewindows (NORTHEAST)";icon_state = "fakewindows";dir = 5},/area/wizard_station) +"kZ" = (/obj/item/trash/raisins,/turf/unsimulated/floor{dir = 8;icon_state = "wood"},/area/wizard_station) +"la" = (/turf/unsimulated/wall/fakeglass{dir = 8;icon_state = "fakewindows3";tag = "icon-fakewindows (WEST)"},/area/wizard_station) +"lb" = (/obj/structure/showcase,/turf/unsimulated/floor{dir = 1;icon_state = "chapel"},/area/wizard_station) +"lc" = (/obj/structure/table/reinforced,/obj/structure/kitchenspike,/turf/unsimulated/floor{dir = 4;icon_state = "chapel"},/area/wizard_station) +"ld" = (/obj/structure/table/reinforced,/obj/structure/kitchenspike,/turf/unsimulated/floor{dir = 1;icon_state = "chapel"},/area/wizard_station) +"le" = (/obj/effect/decal/cleanable/cobweb2,/obj/structure/showcase,/turf/unsimulated/floor{dir = 4;icon_state = "chapel"},/area/wizard_station) +"lf" = (/obj/structure/rack,/obj/item/gun/energy/laser/instakill/blue{pixel_x = 3;pixel_y = -3},/obj/item/gun/energy/laser/instakill/red{pixel_x = -3;pixel_y = 3},/turf/unsimulated/floor{tag = "icon-floor";icon_state = "floor"},/area/admin) "lg" = (/turf/unsimulated/floor{name = "plating"},/area/syndicate_mothership/elite_squad) -"lh" = (/obj/machinery/computer/card/centcom,/turf/unsimulated/floor{tag = "icon-floor"; icon_state = "floor"},/area/admin) +"lh" = (/obj/machinery/computer/card/centcom,/turf/unsimulated/floor{tag = "icon-floor";icon_state = "floor"},/area/admin) "li" = (/turf/unsimulated/wall/abductor{icon_state = "alien7"},/area/abductor_ship) -"lj" = (/obj/structure/bed/abductor,/turf/unsimulated/floor/abductor,/area/abductor_ship) "lk" = (/obj/structure/table/abductor,/obj/item/surgicaldrill/alien,/obj/item/circular_saw/alien,/turf/unsimulated/floor/abductor,/area/abductor_ship) "ll" = (/turf/unsimulated/wall/abductor{icon_state = "alien9"},/area/abductor_ship) "lm" = (/turf/unsimulated/wall/abductor{icon_state = "alien8"},/area/abductor_ship) "ln" = (/turf/unsimulated/wall/abductor{icon_state = "alien2"},/area/abductor_ship) -"lo" = (/obj/effect/decal/remains/human,/turf/unsimulated/floor{icon_state = "freezerfloor"; dir = 2},/area/wizard_station) -"lp" = (/turf/unsimulated/floor{icon_state = "freezerfloor"; dir = 2},/area/wizard_station) -"lq" = (/turf/unsimulated/wall/fakeglass{tag = "icon-fakewindows2 (NORTH)"; icon_state = "fakewindows2"; dir = 1},/area/wizard_station) -"lr" = (/turf/unsimulated/floor{dir = 8; icon_state = "chapel"},/area/wizard_station) +"lo" = (/obj/effect/decal/remains/human,/turf/unsimulated/floor{icon_state = "freezerfloor";dir = 2},/area/wizard_station) +"lp" = (/turf/unsimulated/floor{icon_state = "freezerfloor";dir = 2},/area/wizard_station) +"lq" = (/turf/unsimulated/wall/fakeglass{tag = "icon-fakewindows2 (NORTH)";icon_state = "fakewindows2";dir = 1},/area/wizard_station) +"lr" = (/turf/unsimulated/floor{dir = 8;icon_state = "chapel"},/area/wizard_station) "ls" = (/obj/effect/decal/cleanable/blood,/turf/unsimulated/floor{icon_state = "chapel"},/area/wizard_station) -"lt" = (/mob/living/carbon/human/monkey,/turf/unsimulated/floor{dir = 8; icon_state = "chapel"},/area/wizard_station) +"lt" = (/mob/living/carbon/human/monkey,/turf/unsimulated/floor{dir = 8;icon_state = "chapel"},/area/wizard_station) "lu" = (/turf/unsimulated/floor{icon_state = "chapel"},/area/wizard_station) -"lv" = (/obj/structure/chair/comfy/black{dir = 1},/turf/unsimulated/floor{tag = "icon-floor"; icon_state = "floor"},/area/admin) -"lw" = (/obj/structure/chair/comfy/black{dir = 8},/turf/unsimulated/floor{tag = "icon-floor"; icon_state = "floor"},/area/admin) -"lx" = (/obj/machinery/door/airlock/security/glass{name = "Airlock"; req_access_txt = "150"},/obj/machinery/door/poddoor{id_tag = "syndicate_elite_mech_room"; name = "Mech Room Door"},/turf/unsimulated/floor{icon_state = "dark"},/area/syndicate_mothership/elite_squad) +"lx" = (/obj/machinery/door/airlock/security/glass{name = "Airlock";req_access_txt = "150"},/obj/machinery/door/poddoor{id_tag = "syndicate_elite_mech_room";name = "Mech Room Door"},/turf/unsimulated/floor{icon_state = "dark"},/area/syndicate_mothership/elite_squad) "ly" = (/turf/unsimulated/wall/abductor,/area/abductor_ship) "lz" = (/turf/unsimulated/wall/abductor{icon_state = "alien4"},/area/abductor_ship) "lA" = (/turf/unsimulated/wall/abductor{icon_state = "alien3"},/area/abductor_ship) -"lB" = (/obj/machinery/door/poddoor{id_tag = "thunderdomehea"; name = "Heavy Supply"},/turf/unsimulated/floor{icon_state = "dark"},/area/tdome/arena_source) +"lB" = (/obj/machinery/door/poddoor{id_tag = "thunderdomehea";name = "Heavy Supply"},/turf/unsimulated/floor{icon_state = "dark"},/area/tdome/arena_source) "lC" = (/turf/unsimulated/wall,/area/tdome/arena_source) "lD" = (/obj/machinery/igniter,/turf/simulated/floor/plasteel,/area/tdome/arena_source) "lE" = (/obj/machinery/light/spot,/turf/simulated/floor/plasteel,/area/tdome/arena_source) "lF" = (/turf/unsimulated/wall/abductor{icon_state = "alien5"},/area/abductor_ship) -"lG" = (/mob/living/simple_animal/hostile/creature{name = "Experiment 35b"},/turf/unsimulated/floor{icon_state = "freezerfloor"; dir = 2},/area/wizard_station) -"lH" = (/turf/unsimulated/floor{dir = 1; icon_state = "chapel"},/area/wizard_station) -"lI" = (/turf/unsimulated/floor{dir = 4; icon_state = "chapel"},/area/wizard_station) -"lJ" = (/obj/structure/chair/comfy/black,/turf/unsimulated/floor{tag = "icon-floor"; icon_state = "floor"},/area/admin) -"lK" = (/obj/structure/rack,/obj/item/storage/box/syndie_kit/hardsuit,/obj/item/storage/box/syndie_kit/elite_hardsuit{pixel_x = -6; pixel_y = 6},/turf/unsimulated/floor{tag = "icon-floor"; icon_state = "floor"},/area/admin) +"lG" = (/mob/living/simple_animal/hostile/creature{name = "Experiment 35b"},/turf/unsimulated/floor{icon_state = "freezerfloor";dir = 2},/area/wizard_station) +"lH" = (/turf/unsimulated/floor{dir = 1;icon_state = "chapel"},/area/wizard_station) +"lI" = (/turf/unsimulated/floor{dir = 4;icon_state = "chapel"},/area/wizard_station) +"lK" = (/obj/structure/rack,/obj/item/storage/box/syndie_kit/hardsuit,/obj/item/storage/box/syndie_kit/elite_hardsuit{pixel_x = -6;pixel_y = 6},/turf/unsimulated/floor{tag = "icon-floor";icon_state = "floor"},/area/admin) "lL" = (/obj/machinery/abductor/experiment{team = 2},/turf/unsimulated/floor/abductor,/area/abductor_ship) "lM" = (/obj/machinery/abductor/pad{team = 2},/turf/unsimulated/floor/abductor,/area/abductor_ship) "lN" = (/obj/machinery/abductor/console{team = 2},/turf/unsimulated/floor/abductor,/area/abductor_ship) @@ -618,110 +561,95 @@ "lT" = (/obj/effect/landmark/abductor/scientist{team = 2},/turf/unsimulated/floor/abductor,/area/abductor_ship) "lU" = (/obj/effect/landmark/abductor/agent{team = 2},/turf/unsimulated/floor/abductor,/area/abductor_ship) "lV" = (/obj/effect/landmark/abductor/scientist{team = 3},/turf/unsimulated/floor/abductor,/area/abductor_ship) -"lW" = (/obj/structure/rack,/obj/item/clothing/under/color/red,/obj/item/clothing/shoes/brown,/obj/item/clothing/suit/armor/vest,/obj/item/clothing/head/helmet/swat,/obj/item/gun/energy/laser,/obj/item/shield/energy,/obj/machinery/recharger/wallcharger{pixel_x = 3; pixel_y = -30},/turf/unsimulated/floor{icon_state = "dark"},/area/tdome/arena_source) -"lX" = (/obj/structure/rack,/obj/item/clothing/under/color/green,/obj/item/clothing/shoes/brown,/obj/item/clothing/suit/armor/vest,/obj/item/clothing/head/helmet/swat,/obj/item/gun/energy/laser,/obj/item/shield/energy,/obj/machinery/recharger/wallcharger{pixel_x = 3; pixel_y = -30},/turf/unsimulated/floor{icon_state = "dark"},/area/tdome/arena_source) +"lW" = (/obj/structure/rack,/obj/item/clothing/under/color/red,/obj/item/clothing/shoes/brown,/obj/item/clothing/suit/armor/vest,/obj/item/clothing/head/helmet/swat,/obj/item/gun/energy/laser,/obj/item/shield/energy,/obj/machinery/recharger/wallcharger{pixel_x = 3;pixel_y = -30},/turf/unsimulated/floor{icon_state = "dark"},/area/tdome/arena_source) +"lX" = (/obj/structure/rack,/obj/item/clothing/under/color/green,/obj/item/clothing/shoes/brown,/obj/item/clothing/suit/armor/vest,/obj/item/clothing/head/helmet/swat,/obj/item/gun/energy/laser,/obj/item/shield/energy,/obj/machinery/recharger/wallcharger{pixel_x = 3;pixel_y = -30},/turf/unsimulated/floor{icon_state = "dark"},/area/tdome/arena_source) "lY" = (/obj/effect/landmark/abductor/agent{team = 3},/turf/unsimulated/floor/abductor,/area/abductor_ship) -"lZ" = (/obj/effect/spawner/window/reinforced,/turf/unsimulated/floor{tag = "icon-red (EAST)"; icon_state = "red"; dir = 4},/area/centcom/gamma) -"ma" = (/obj/effect/decal/cleanable/molten_object,/turf/unsimulated/floor{icon_state = "freezerfloor"; dir = 2},/area/wizard_station) +"lZ" = (/obj/effect/spawner/window/reinforced,/turf/unsimulated/floor{tag = "icon-red (EAST)";icon_state = "red";dir = 4},/area/centcom/gamma) +"ma" = (/obj/effect/decal/cleanable/molten_object,/turf/unsimulated/floor{icon_state = "freezerfloor";dir = 2},/area/wizard_station) "mb" = (/turf/unsimulated/wall/fakeglass,/area/wizard_station) -"mc" = (/obj/item/trash/chips,/obj/machinery/light/spot,/turf/unsimulated/floor{dir = 8; icon_state = "wood"},/area/wizard_station) +"mc" = (/obj/item/trash/chips,/obj/machinery/light/spot,/turf/unsimulated/floor{dir = 8;icon_state = "wood"},/area/wizard_station) "md" = (/obj/structure/extinguisher_cabinet,/turf/unsimulated/wall,/area/centcom/gamma) -"me" = (/obj/effect/decal/cleanable/blood,/turf/unsimulated/floor{dir = 8; icon_state = "chapel"},/area/wizard_station) -"mf" = (/obj/structure/chair/stool,/turf/unsimulated/floor{icon_state = "bar"; dir = 2},/area/syndicate_mothership) -"mg" = (/obj/item/mop,/obj/structure/mirror{pixel_x = 28},/obj/item/twohanded/required/kirbyplants,/turf/unsimulated/floor{icon_state = "freezerfloor"; dir = 2},/area/syndicate_mothership) -"mh" = (/obj/item/twohanded/required/kirbyplants,/turf/unsimulated/floor{icon_state = "bar"; dir = 2},/area/syndicate_mothership) -"mi" = (/obj/machinery/door_control{id = "nukeop_ready"; name = "Mission Launch Control"; pixel_x = -26; pixel_y = -2; req_access_txt = "151"},/obj/item/twohanded/required/kirbyplants,/turf/unsimulated/floor{icon_state = "bar"; dir = 2},/area/syndicate_mothership) -"mj" = (/obj/structure/chair/comfy/black{dir = 1},/obj/effect/landmark{name = "ERT Director"},/turf/unsimulated/floor{icon_state = "carpet"; dir = 2},/area/centcom/specops) -"mk" = (/obj/structure/chair/stool,/obj/effect/landmark{name = "Syndicate-Spawn"},/obj/effect/decal/warning_stripes/east,/turf/unsimulated/floor{icon_state = "bar"; dir = 2},/area/syndicate_mothership) -"ml" = (/obj/structure/chair/stool,/turf/unsimulated/floor{tag = "icon-dark"; icon_state = "dark"},/area/syndicate_mothership) -"mm" = (/obj/structure/chair/stool,/obj/structure/sign/poster/random{pixel_y = 32},/turf/unsimulated/floor{icon_state = "bar"; dir = 2},/area/centcom/control) -"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/unsimulated/floor/snow,/obj/structure/flora/grass/brown,/turf/unsimulated/floor/snow{icon_state = "gravsnow_corner"},/area/syndicate_mothership) +"me" = (/obj/effect/decal/cleanable/blood,/turf/unsimulated/floor{dir = 8;icon_state = "chapel"},/area/wizard_station) +"mg" = (/obj/item/mop,/obj/structure/mirror{pixel_x = 28},/obj/item/twohanded/required/kirbyplants,/turf/unsimulated/floor{icon_state = "freezerfloor";dir = 2},/area/syndicate_mothership) +"mh" = (/obj/item/twohanded/required/kirbyplants,/turf/unsimulated/floor{icon_state = "bar";dir = 2},/area/syndicate_mothership) +"mi" = (/obj/machinery/door_control{id = "nukeop_ready";name = "Mission Launch Control";pixel_x = -26;pixel_y = -2;req_access_txt = "151"},/obj/item/twohanded/required/kirbyplants,/turf/unsimulated/floor{icon_state = "bar";dir = 2},/area/syndicate_mothership) "mr" = (/turf/unsimulated/wall,/area/trader_station/sol) -"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) +"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) -"mw" = (/turf/unsimulated/wall/fakeglass{tag = "icon-fakewindows (EAST)"; icon_state = "fakewindows"; dir = 4},/area/trader_station/sol) -"mx" = (/turf/unsimulated/wall/fakeglass{tag = "icon-fakewindows (WEST)"; icon_state = "fakewindows"; dir = 8},/area/trader_station/sol) -"my" = (/obj/machinery/computer/shuttle/trade/sol,/turf/unsimulated/floor{tag = "icon-floor"; icon_state = "floor"},/area/trader_station/sol) -"mz" = (/obj/machinery/vending/snack,/turf/unsimulated/floor{tag = "icon-floor"; icon_state = "floor"},/area/trader_station/sol) -"mA" = (/obj/machinery/light{dir = 4; icon_state = "tube1"},/turf/unsimulated/floor{tag = "icon-floor"; icon_state = "floor"},/area/trader_station/sol) -"mB" = (/turf/unsimulated/floor{dir = 8; icon_state = "browncorner"},/area/trader_station/sol) -"mC" = (/obj/machinery/door/airlock/external{id_tag = "trade_sol_base"; name = "Docking Port"},/turf/unsimulated/floor/plating,/area/trader_station/sol) -"mD" = (/obj/docking_port/stationary{dir = 8; dwidth = 2; height = 11; id = "trade_sol_base"; name = "docking bay 2 at Jupiter Station"; width = 5},/turf/space,/area/space) -"mE" = (/turf/unsimulated/floor{tag = "icon-floor"; icon_state = "floor"},/area/trader_station/sol) -"mF" = (/turf/unsimulated/floor{dir = 8; icon_state = "brown"},/area/trader_station/sol) -"mG" = (/turf/unsimulated/floor{dir = 1; icon_state = "browncorner"},/area/trader_station/sol) -"mH" = (/turf/unsimulated/wall/fakeglass{icon_state = "fakewindows"; dir = 1},/area/trader_station/sol) -"mI" = (/obj/machinery/light{dir = 1; in_use = 1},/turf/unsimulated/floor{tag = "icon-floor"; icon_state = "floor"},/area/trader_station/sol) -"mJ" = (/obj/structure/chair/comfy/brown,/obj/effect/landmark{name = "traderstart_sol"},/turf/unsimulated/floor{tag = "icon-floor"; icon_state = "floor"},/area/trader_station/sol) -"mK" = (/turf/unsimulated/wall/fakeglass{icon_state = "fakewindows2"; dir = 1},/area/trader_station/sol) -"mL" = (/obj/structure/dispenser,/turf/unsimulated/floor{tag = "icon-floor"; icon_state = "floor"},/area/trader_station/sol) -"mM" = (/obj/structure/rack,/obj/effect/spawner/lootdrop/maintenance{lootcount = 4; name = "4maintenance loot spawner"},/turf/unsimulated/floor{tag = "icon-floor"; icon_state = "floor"},/area/trader_station/sol) -"mN" = (/obj/structure/rack,/obj/effect/spawner/lootdrop/trade_sol_rare,/turf/unsimulated/floor{tag = "icon-floor"; icon_state = "floor"},/area/trader_station/sol) -"mO" = (/obj/structure/rack,/obj/effect/spawner/lootdrop/trade_sol_common,/turf/unsimulated/floor{tag = "icon-floor"; icon_state = "floor"},/area/trader_station/sol) -"mP" = (/obj/structure/table/wood,/obj/item/dice/d20,/turf/unsimulated/floor{tag = "icon-floor"; icon_state = "floor"},/area/trader_station/sol) -"mQ" = (/obj/structure/chair/comfy/brown{dir = 4},/obj/effect/landmark{name = "traderstart_sol"},/turf/unsimulated/floor{tag = "icon-floor"; icon_state = "floor"},/area/trader_station/sol) -"mR" = (/obj/structure/table/wood,/obj/item/paper_bin,/obj/item/pen,/turf/unsimulated/floor{tag = "icon-floor"; icon_state = "floor"},/area/trader_station/sol) -"mS" = (/obj/structure/rack,/obj/item/storage/box/syndie_kit/space,/turf/unsimulated/floor{tag = "icon-floor"; icon_state = "floor"},/area/trader_station/sol) -"mT" = (/obj/structure/chair/comfy/brown{dir = 1},/obj/effect/landmark{name = "traderstart_sol"},/obj/machinery/light{dir = 4},/turf/unsimulated/floor{tag = "icon-floor"; icon_state = "floor"},/area/trader_station/sol) -"mU" = (/turf/unsimulated/wall/fakeglass{dir = 0; icon_state = "fakewindows"; tag = "icon-fakewindows (EAST)"},/area/trader_station/sol) -"mV" = (/obj/machinery/light,/turf/unsimulated/floor{tag = "icon-floor"; icon_state = "floor"},/area/trader_station/sol) -"mW" = (/obj/machinery/door/airlock{name = "Toilet"; req_access_txt = "0"},/turf/unsimulated/floor{tag = "icon-floor"; icon_state = "floor"},/area/trader_station/sol) -"mX" = (/obj/machinery/light{dir = 8},/turf/unsimulated/floor{tag = "icon-floor"; icon_state = "floor"},/area/trader_station/sol) -"mY" = (/obj/structure/urinal{pixel_y = 28},/turf/unsimulated/floor{icon_state = "freezerfloor"; dir = 2},/area/trader_station/sol) -"mZ" = (/obj/item/mop,/obj/structure/mirror{pixel_x = 28},/turf/unsimulated/floor{icon_state = "freezerfloor"; dir = 2},/area/trader_station/sol) -"na" = (/obj/structure/mopbucket,/obj/machinery/light{dir = 1},/obj/item/soap,/turf/unsimulated/floor{icon_state = "freezerfloor"; dir = 2},/area/trader_station/sol) +"mw" = (/turf/unsimulated/wall/fakeglass{tag = "icon-fakewindows (EAST)";icon_state = "fakewindows";dir = 4},/area/trader_station/sol) +"mx" = (/turf/unsimulated/wall/fakeglass{tag = "icon-fakewindows (WEST)";icon_state = "fakewindows";dir = 8},/area/trader_station/sol) +"my" = (/obj/machinery/computer/shuttle/trade/sol,/turf/unsimulated/floor{tag = "icon-floor";icon_state = "floor"},/area/trader_station/sol) +"mz" = (/obj/machinery/vending/snack,/turf/unsimulated/floor{tag = "icon-floor";icon_state = "floor"},/area/trader_station/sol) +"mA" = (/obj/machinery/light{dir = 4;icon_state = "tube1"},/turf/unsimulated/floor{tag = "icon-floor";icon_state = "floor"},/area/trader_station/sol) +"mB" = (/turf/unsimulated/floor{dir = 8;icon_state = "browncorner"},/area/trader_station/sol) +"mC" = (/obj/machinery/door/airlock/external{id_tag = "trade_sol_base";name = "Docking Port"},/turf/unsimulated/floor/plating,/area/trader_station/sol) +"mD" = (/obj/docking_port/stationary{dir = 8;dwidth = 2;height = 11;id = "trade_sol_base";name = "docking bay 2 at Jupiter Station";width = 5},/turf/space,/area/space) +"mE" = (/turf/unsimulated/floor{tag = "icon-floor";icon_state = "floor"},/area/trader_station/sol) +"mF" = (/turf/unsimulated/floor{dir = 8;icon_state = "brown"},/area/trader_station/sol) +"mG" = (/turf/unsimulated/floor{dir = 1;icon_state = "browncorner"},/area/trader_station/sol) +"mH" = (/turf/unsimulated/wall/fakeglass{icon_state = "fakewindows";dir = 1},/area/trader_station/sol) +"mI" = (/obj/machinery/light{dir = 1;in_use = 1},/turf/unsimulated/floor{tag = "icon-floor";icon_state = "floor"},/area/trader_station/sol) +"mK" = (/turf/unsimulated/wall/fakeglass{icon_state = "fakewindows2";dir = 1},/area/trader_station/sol) +"mL" = (/obj/structure/dispenser,/turf/unsimulated/floor{tag = "icon-floor";icon_state = "floor"},/area/trader_station/sol) +"mM" = (/obj/structure/rack,/obj/effect/spawner/lootdrop/maintenance{lootcount = 4;name = "4maintenance loot spawner"},/turf/unsimulated/floor{tag = "icon-floor";icon_state = "floor"},/area/trader_station/sol) +"mN" = (/obj/structure/rack,/obj/effect/spawner/lootdrop/trade_sol_rare,/turf/unsimulated/floor{tag = "icon-floor";icon_state = "floor"},/area/trader_station/sol) +"mO" = (/obj/structure/rack,/obj/effect/spawner/lootdrop/trade_sol_common,/turf/unsimulated/floor{tag = "icon-floor";icon_state = "floor"},/area/trader_station/sol) +"mP" = (/obj/structure/table/wood,/obj/item/dice/d20,/turf/unsimulated/floor{tag = "icon-floor";icon_state = "floor"},/area/trader_station/sol) +"mR" = (/obj/structure/table/wood,/obj/item/paper_bin,/obj/item/pen,/turf/unsimulated/floor{tag = "icon-floor";icon_state = "floor"},/area/trader_station/sol) +"mS" = (/obj/structure/rack,/obj/item/storage/box/syndie_kit/space,/turf/unsimulated/floor{tag = "icon-floor";icon_state = "floor"},/area/trader_station/sol) +"mU" = (/turf/unsimulated/wall/fakeglass{dir = 0;icon_state = "fakewindows";tag = "icon-fakewindows (EAST)"},/area/trader_station/sol) +"mV" = (/obj/machinery/light,/turf/unsimulated/floor{tag = "icon-floor";icon_state = "floor"},/area/trader_station/sol) +"mW" = (/obj/machinery/door/airlock{name = "Toilet";req_access_txt = "0"},/turf/unsimulated/floor{tag = "icon-floor";icon_state = "floor"},/area/trader_station/sol) +"mX" = (/obj/machinery/light{dir = 8},/turf/unsimulated/floor{tag = "icon-floor";icon_state = "floor"},/area/trader_station/sol) +"mY" = (/obj/structure/urinal{pixel_y = 28},/turf/unsimulated/floor{icon_state = "freezerfloor";dir = 2},/area/trader_station/sol) +"mZ" = (/obj/item/mop,/obj/structure/mirror{pixel_x = 28},/turf/unsimulated/floor{icon_state = "freezerfloor";dir = 2},/area/trader_station/sol) +"na" = (/obj/structure/mopbucket,/obj/machinery/light{dir = 1},/obj/item/soap,/turf/unsimulated/floor{icon_state = "freezerfloor";dir = 2},/area/trader_station/sol) "nb" = (/turf/unsimulated/floor{icon_state = "browncorner"},/area/trader_station/sol) "nc" = (/turf/unsimulated/floor{icon_state = "brown"},/area/trader_station/sol) -"nd" = (/turf/unsimulated/floor{icon_state = "freezerfloor"; dir = 2},/area/trader_station/sol) -"ne" = (/obj/structure/mirror{pixel_x = 28},/obj/structure/sink{dir = 4; icon_state = "sink"; pixel_x = 11; pixel_y = 0},/turf/unsimulated/floor{icon_state = "freezerfloor"; dir = 2},/area/trader_station/sol) -"nf" = (/turf/unsimulated/wall/fakeglass{icon_state = "fakewindows"; dir = 8},/area/trader_station/sol) -"ng" = (/turf/unsimulated/wall/fakeglass{tag = "icon-fakewindows2 (WEST)"; icon_state = "fakewindows2"; dir = 8},/area/trader_station/sol) -"nh" = (/turf/unsimulated/wall/fakeglass{tag = "icon-fakewindows (NORTHEAST)"; icon_state = "fakewindows"; dir = 5},/area/trader_station/sol) -"ni" = (/turf/unsimulated/wall{desc = "It opens and closes."; icon = 'icons/obj/doors/airlocks/station/mining.dmi'; icon_state = "closed"; name = "Docking Bay 2"},/area/trader_station/sol) +"nd" = (/turf/unsimulated/floor{icon_state = "freezerfloor";dir = 2},/area/trader_station/sol) +"ne" = (/obj/structure/mirror{pixel_x = 28},/obj/structure/sink{dir = 4;icon_state = "sink";pixel_x = 11;pixel_y = 0},/turf/unsimulated/floor{icon_state = "freezerfloor";dir = 2},/area/trader_station/sol) +"nf" = (/turf/unsimulated/wall/fakeglass{icon_state = "fakewindows";dir = 8},/area/trader_station/sol) +"ng" = (/turf/unsimulated/wall/fakeglass{tag = "icon-fakewindows2 (WEST)";icon_state = "fakewindows2";dir = 8},/area/trader_station/sol) +"nh" = (/turf/unsimulated/wall/fakeglass{tag = "icon-fakewindows (NORTHEAST)";icon_state = "fakewindows";dir = 5},/area/trader_station/sol) +"ni" = (/turf/unsimulated/wall{desc = "It opens and closes.";icon = 'icons/obj/doors/airlocks/station/mining.dmi';icon_state = "closed";name = "Docking Bay 2"},/area/trader_station/sol) "nj" = (/turf/unsimulated/wall,/area/syndicate_mothership) -"nk" = (/obj/structure/toilet{dir = 8},/obj/structure/window/reinforced/tinted{dir = 1},/obj/machinery/door/window{dir = 8; name = "Toilet"; opacity = 1; req_access_txt = "0"},/turf/unsimulated/floor{icon_state = "freezerfloor"; dir = 2},/area/trader_station/sol) -"nl" = (/turf/unsimulated/wall/fakeglass{tag = "icon-fakewindows2 (NORTH)"; icon_state = "fakewindows2"; dir = 1},/area/trader_station/sol) -"nm" = (/obj/machinery/light{dir = 4},/turf/unsimulated/floor{tag = "icon-floor"; icon_state = "floor"},/area/trader_station/sol) -"nn" = (/obj/docking_port/stationary/transit{dir = 8; dwidth = 2; height = 11; id = "trade_sol_transit"; name = "trade_sol in transit"; turf_type = /turf/space/transit/horizontal; width = 5},/turf/space/transit/horizontal,/area/space) +"nk" = (/obj/structure/toilet{dir = 8},/obj/structure/window/reinforced/tinted{dir = 1},/obj/machinery/door/window{dir = 8;name = "Toilet";opacity = 1;req_access_txt = "0"},/turf/unsimulated/floor{icon_state = "freezerfloor";dir = 2},/area/trader_station/sol) +"nl" = (/turf/unsimulated/wall/fakeglass{tag = "icon-fakewindows2 (NORTH)";icon_state = "fakewindows2";dir = 1},/area/trader_station/sol) +"nm" = (/obj/machinery/light{dir = 4},/turf/unsimulated/floor{tag = "icon-floor";icon_state = "floor"},/area/trader_station/sol) +"nn" = (/obj/docking_port/stationary/transit{dir = 8;dwidth = 2;height = 11;id = "trade_sol_transit";name = "trade_sol in transit";turf_type = /turf/space/transit/horizontal;width = 5},/turf/space/transit/horizontal,/area/space) "no" = (/obj/machinery/sleeper{dir = 4},/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/centcom/evac) -"np" = (/obj/structure/table,/obj/item/surgicaldrill,/obj/item/stack/medical/bruise_pack/advanced,/turf/unsimulated/floor{icon_state = "freezerfloor"; dir = 2},/area/admin) +"np" = (/obj/structure/table,/obj/item/surgicaldrill,/obj/item/stack/medical/bruise_pack/advanced,/turf/unsimulated/floor{icon_state = "freezerfloor";dir = 2},/area/admin) "nq" = (/turf/simulated/shuttle/wall{icon_state = "wall3"},/area/syndicate_mothership/infteam) "nr" = (/obj/machinery/vending/syndicigs,/turf/unsimulated/floor{icon_state = "dark"},/area/syndicate_mothership/infteam) "ns" = (/obj/machinery/vending/syndisnack,/turf/unsimulated/floor{icon_state = "dark"},/area/syndicate_mothership/infteam) "nt" = (/obj/structure/table,/obj/item/storage/fancy/crayons,/turf/unsimulated/floor{icon_state = "dark"},/area/syndicate_mothership/infteam) -"nu" = (/obj/machinery/light/spot{tag = "icon-tube1 (NORTH)"; icon_state = "tube1"; dir = 1},/obj/machinery/vending/coffee,/turf/unsimulated/floor{icon_state = "dark"},/area/syndicate_mothership/infteam) +"nu" = (/obj/machinery/light/spot{tag = "icon-tube1 (NORTH)";icon_state = "tube1";dir = 1},/obj/machinery/vending/coffee,/turf/unsimulated/floor{icon_state = "dark"},/area/syndicate_mothership/infteam) "nv" = (/obj/machinery/washing_machine,/turf/unsimulated/floor{icon_state = "dark"},/area/syndicate_mothership/infteam) -"nw" = (/turf/unsimulated/wall{icon = 'icons/obj/library.dmi'; icon_state = "book-5"; name = "bookcase (Silent Killing Methods)"},/area/syndicate_mothership/infteam) +"nw" = (/turf/unsimulated/wall{icon = 'icons/obj/library.dmi';icon_state = "book-5";name = "bookcase (Silent Killing Methods)"},/area/syndicate_mothership/infteam) "nx" = (/turf/unsimulated/floor{icon_state = "dark"},/area/syndicate_mothership/infteam) -"ny" = (/turf/unsimulated/wall{icon = 'icons/obj/library.dmi'; icon_state = "book-5"; name = "bookcase (Infiltration Tactics)"},/area/syndicate_mothership/infteam) -"nz" = (/turf/unsimulated/wall{icon = 'icons/obj/library.dmi'; icon_state = "book-5"; name = "bookcase (Mission Reports)"},/area/syndicate_mothership/infteam) -"nA" = (/obj/effect/landmark{name = "Syndicate-Infiltrator"; tag = "Commando"},/obj/structure/mirror{pixel_x = -28},/turf/unsimulated/floor{icon_state = "dark"},/area/syndicate_mothership/infteam) +"ny" = (/turf/unsimulated/wall{icon = 'icons/obj/library.dmi';icon_state = "book-5";name = "bookcase (Infiltration Tactics)"},/area/syndicate_mothership/infteam) +"nz" = (/turf/unsimulated/wall{icon = 'icons/obj/library.dmi';icon_state = "book-5";name = "bookcase (Mission Reports)"},/area/syndicate_mothership/infteam) +"nA" = (/obj/effect/landmark{name = "Syndicate-Infiltrator";tag = "Commando"},/obj/structure/mirror{pixel_x = -28},/turf/unsimulated/floor{icon_state = "dark"},/area/syndicate_mothership/infteam) "nB" = (/obj/structure/mirror{pixel_x = 28},/turf/unsimulated/floor{icon_state = "dark"},/area/syndicate_mothership/infteam) -"nC" = (/obj/machinery/light/spot{tag = "icon-tube1 (WEST)"; icon_state = "tube1"; dir = 8},/obj/effect/landmark{name = "Syndicate-Infiltrator"; tag = "Commando"},/turf/unsimulated/floor{icon_state = "dark"},/area/syndicate_mothership/infteam) -"nD" = (/turf/unsimulated/wall{desc = "This window appears to be reinforced, it looks nearly impossible to break."; dir = 8; icon = 'icons/turf/shuttle.dmi'; icon_state = "window5_end"; name = "window"; opacity = 0; tag = "icon-window5_end (WEST)"},/area/syndicate_mothership/infteam) -"nE" = (/obj/machinery/light/spot{tag = "icon-tube1 (EAST)"; icon_state = "tube1"; dir = 4},/turf/unsimulated/floor{icon_state = "dark"},/area/syndicate_mothership/infteam) +"nC" = (/obj/machinery/light/spot{tag = "icon-tube1 (WEST)";icon_state = "tube1";dir = 8},/obj/effect/landmark{name = "Syndicate-Infiltrator";tag = "Commando"},/turf/unsimulated/floor{icon_state = "dark"},/area/syndicate_mothership/infteam) +"nD" = (/turf/unsimulated/wall{desc = "This window appears to be reinforced, it looks nearly impossible to break.";dir = 8;icon = 'icons/turf/shuttle.dmi';icon_state = "window5_end";name = "window";opacity = 0;tag = "icon-window5_end (WEST)"},/area/syndicate_mothership/infteam) +"nE" = (/obj/machinery/light/spot{tag = "icon-tube1 (EAST)";icon_state = "tube1";dir = 4},/turf/unsimulated/floor{icon_state = "dark"},/area/syndicate_mothership/infteam) "nF" = (/obj/structure/table/wood,/obj/item/ashtray/glass{icon_state = "ashtray_half_gl"},/turf/unsimulated/floor{icon_state = "dark"},/area/syndicate_mothership/infteam) -"nG" = (/obj/structure/chair/comfy/black,/obj/effect/landmark{name = "Syndicate-Infiltrator-Admin"; tag = "Commando"},/turf/unsimulated/floor{icon_state = "dark"},/area/syndicate_mothership/infteam) -"nH" = (/obj/effect/landmark{name = "Syndicate-Infiltrator"; tag = "Commando"},/turf/unsimulated/floor{icon_state = "dark"},/area/syndicate_mothership/infteam) +"nH" = (/obj/effect/landmark{name = "Syndicate-Infiltrator";tag = "Commando"},/turf/unsimulated/floor{icon_state = "dark"},/area/syndicate_mothership/infteam) "nI" = (/obj/structure/table/wood,/turf/unsimulated/floor{icon_state = "dark"},/area/syndicate_mothership/infteam) -"nJ" = (/turf/unsimulated/wall{desc = "This window appears to be reinforced, it looks nearly impossible to break."; dir = 4; icon = 'icons/turf/shuttle.dmi'; icon_state = "window5_end"; name = "window"; opacity = 0; tag = "icon-window5 (EAST)"},/area/syndicate_mothership/infteam) -"nK" = (/obj/structure/table/wood,/obj/machinery/door_control{id = "syndicate_sit_office"; name = "Office Blast Doors"; pixel_x = -5; pixel_y = 3; req_access_txt = "151"},/turf/unsimulated/floor{icon_state = "dark"},/area/syndicate_mothership/infteam) +"nJ" = (/turf/unsimulated/wall{desc = "This window appears to be reinforced, it looks nearly impossible to break.";dir = 4;icon = 'icons/turf/shuttle.dmi';icon_state = "window5_end";name = "window";opacity = 0;tag = "icon-window5 (EAST)"},/area/syndicate_mothership/infteam) +"nK" = (/obj/structure/table/wood,/obj/machinery/door_control{id = "syndicate_sit_office";name = "Office Blast Doors";pixel_x = -5;pixel_y = 3;req_access_txt = "151"},/turf/unsimulated/floor{icon_state = "dark"},/area/syndicate_mothership/infteam) "nL" = (/obj/structure/table/wood,/obj/item/reagent_containers/food/drinks/drinkingglass/devilskiss,/turf/unsimulated/floor{icon_state = "dark"},/area/syndicate_mothership/infteam) "nM" = (/obj/structure/table/wood,/obj/item/syndicatedetonator,/turf/unsimulated/floor{icon_state = "dark"},/area/syndicate_mothership/infteam) -"nN" = (/obj/effect/landmark{name = "Syndicate-Infiltrator-Leader"; tag = "Commando"},/obj/machinery/door_control{id = "syndicate_sit_1"; name = "Ship Blast Doors (team leader only)"; pixel_x = -26; pixel_y = -2; req_access_txt = "151"},/turf/unsimulated/floor{icon_state = "dark"},/area/syndicate_mothership/infteam) -"nO" = (/obj/machinery/door/poddoor{id_tag = "syndicate_sit_office"; name = "Office Blast Door"},/obj/machinery/door/airlock/hatch{desc = "Danger: May contain robustness"; name = "Syndicate Officer's Office"; req_access_txt = "151"},/turf/unsimulated/floor{icon_state = "dark"},/area/syndicate_mothership/infteam) +"nN" = (/obj/effect/landmark{name = "Syndicate-Infiltrator-Leader";tag = "Commando"},/obj/machinery/door_control{id = "syndicate_sit_1";name = "Ship Blast Doors (team leader only)";pixel_x = -26;pixel_y = -2;req_access_txt = "151"},/turf/unsimulated/floor{icon_state = "dark"},/area/syndicate_mothership/infteam) +"nO" = (/obj/machinery/door/poddoor{id_tag = "syndicate_sit_office";name = "Office Blast Door"},/obj/machinery/door/airlock/hatch{desc = "Danger: May contain robustness";name = "Syndicate Officer's Office";req_access_txt = "151"},/turf/unsimulated/floor{icon_state = "dark"},/area/syndicate_mothership/infteam) "nP" = (/obj/item/twohanded/required/kirbyplants,/turf/unsimulated/floor{icon_state = "dark"},/area/syndicate_mothership/infteam) -"nQ" = (/obj/structure/chair{dir = 1},/turf/unsimulated/floor{icon_state = "dark"},/area/syndicate_mothership/infteam) -"nR" = (/obj/structure/mirror{pixel_x = -28},/obj/effect/landmark{name = "Syndicate-Infiltrator"; tag = "Commando"},/turf/unsimulated/floor{icon_state = "dark"},/area/syndicate_mothership/infteam) +"nR" = (/obj/structure/mirror{pixel_x = -28},/obj/effect/landmark{name = "Syndicate-Infiltrator";tag = "Commando"},/turf/unsimulated/floor{icon_state = "dark"},/area/syndicate_mothership/infteam) "nS" = (/obj/machinery/pdapainter,/turf/unsimulated/floor{icon_state = "dark"},/area/syndicate_mothership/infteam) -"nT" = (/obj/machinery/door/airlock/external{id_tag = "sst_away"; req_access_txt = "150"},/turf/unsimulated/floor{icon_state = "dark"},/area/syndicate_mothership/infteam) -"nU" = (/obj/docking_port/stationary{dir = 8; dwidth = 3; height = 5; id = "sit_away"; name = "Syndicate Base"; width = 11},/turf/space,/area/space) -"nV" = (/obj/structure/table,/obj/machinery/light/spot{tag = "icon-tube1 (EAST)"; icon_state = "tube1"; dir = 4},/obj/item/storage/backpack/satchel,/turf/unsimulated/floor{icon_state = "dark"},/area/syndicate_mothership/infteam) +"nT" = (/obj/machinery/door/airlock/external{id_tag = "sst_away";req_access_txt = "150"},/turf/unsimulated/floor{icon_state = "dark"},/area/syndicate_mothership/infteam) +"nU" = (/obj/docking_port/stationary{dir = 8;dwidth = 3;height = 5;id = "sit_away";name = "Syndicate Base";width = 11},/turf/space,/area/space) +"nV" = (/obj/structure/table,/obj/machinery/light/spot{tag = "icon-tube1 (EAST)";icon_state = "tube1";dir = 4},/obj/item/storage/backpack/satchel,/turf/unsimulated/floor{icon_state = "dark"},/area/syndicate_mothership/infteam) "nW" = (/obj/structure/table,/turf/unsimulated/floor{icon_state = "dark"},/area/syndicate_mothership/infteam) "nX" = (/obj/structure/table,/obj/item/storage/backpack/satchel,/turf/unsimulated/floor{icon_state = "dark"},/area/syndicate_mothership/infteam) "nY" = (/obj/structure/table,/obj/item/storage/backpack/medic,/turf/unsimulated/floor{icon_state = "dark"},/area/syndicate_mothership/infteam) @@ -729,820 +657,1521 @@ "oa" = (/obj/structure/table,/obj/item/storage/backpack/science,/turf/unsimulated/floor{icon_state = "dark"},/area/syndicate_mothership/infteam) "ob" = (/obj/structure/table,/obj/item/storage/backpack/industrial,/obj/machinery/light/spot,/turf/unsimulated/floor{icon_state = "dark"},/area/syndicate_mothership/infteam) "oc" = (/obj/effect/landmark/shuttle_import,/turf/space,/area/space) -"od" = (/turf/simulated/shuttle/wall{tag = "icon-swall12"; icon_state = "swall12"; dir = 2},/area/shuttle/escape) -"oe" = (/turf/simulated/shuttle/wall{icon_state = "swall_s6"; dir = 2},/area/shuttle/escape) -"of" = (/turf/simulated/shuttle/wall{icon_state = "swall_s10"; dir = 2},/area/shuttle/escape) +"od" = (/turf/simulated/shuttle/wall{tag = "icon-swall12";icon_state = "swall12";dir = 2},/area/shuttle/escape) +"oe" = (/turf/simulated/shuttle/wall{icon_state = "swall_s6";dir = 2},/area/shuttle/escape) +"of" = (/turf/simulated/shuttle/wall{icon_state = "swall_s10";dir = 2},/area/shuttle/escape) "og" = (/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/shuttle/escape) -"oh" = (/turf/simulated/shuttle/wall{tag = "icon-swall3"; icon_state = "swall3"; dir = 2},/area/shuttle/escape) -"oi" = (/obj/structure/chair/sofa,/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/shuttle/escape) -"oj" = (/obj/structure/chair/sofa/right,/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/shuttle/escape) -"ok" = (/obj/structure/chair/sofa/corner,/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/shuttle/escape) -"ol" = (/obj/machinery/door/airlock/external{id_tag = "specops_away"; name = "Shuttle Hatch"; req_access_txt = "109"},/turf/unsimulated/floor{icon_state = "floor"},/area/centcom/control) -"om" = (/obj/machinery/door/airlock/shuttle,/obj/docking_port/mobile/emergency/backup{dwidth = 9; roundstart_move = null},/obj/docking_port/stationary{dir = 4; dwidth = 3; height = 8; id = "backup_away"; name = "Backup Shuttle Dock"; width = 8},/turf/unsimulated/floor{icon_state = "floor"},/area/shuttle/escape) +"oh" = (/turf/simulated/shuttle/wall{tag = "icon-swall3";icon_state = "swall3";dir = 2},/area/shuttle/escape) +"ol" = (/obj/machinery/door/airlock/external{id_tag = "specops_away";name = "Shuttle Hatch";req_access_txt = "109"},/turf/unsimulated/floor{icon_state = "floor"},/area/centcom/control) +"om" = (/obj/machinery/door/airlock/shuttle,/obj/docking_port/mobile/emergency/backup{dwidth = 9;roundstart_move = null},/obj/docking_port/stationary{dir = 4;dwidth = 3;height = 8;id = "backup_away";name = "Backup Shuttle Dock";width = 8},/turf/unsimulated/floor{icon_state = "floor"},/area/shuttle/escape) "on" = (/turf/unsimulated/floor{icon_state = "light_on"},/area/centcom/specops) "oo" = (/obj/machinery/shuttle_manipulator,/turf/unsimulated/floor{icon_state = "light_on"},/area/centcom/specops) "op" = (/obj/machinery/light/spot,/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/shuttle/escape) -"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" = (/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" = (/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) -"oE" = (/turf/simulated/shuttle/wall{tag = "icon-swall12"; icon_state = "swall12"; dir = 2},/area/shuttle/gamma/space) -"oF" = (/turf/simulated/shuttle/wall{icon_state = "swall_s10"; dir = 2},/area/shuttle/gamma/space) -"oG" = (/turf/simulated/shuttle/wall{tag = "icon-swall3"; icon_state = "swall3"; dir = 2},/area/shuttle/gamma/space) -"oH" = (/obj/structure/table,/obj/item/storage/fancy/crayons,/obj/item/storage/fancy/crayons,/turf/unsimulated/floor{icon_state = "freezerfloor"; dir = 2},/area/syndicate_mothership) -"oI" = (/obj/machinery/washing_machine,/turf/unsimulated/floor{icon_state = "freezerfloor"; dir = 2},/area/syndicate_mothership) +"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 = 8;icon_state = "diagonalWall3"},/area/shuttle/assault_pod) +"ou" = (/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) +"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/grass/brown,/turf/unsimulated/floor/snow{icon_state = "gravsnow_corner"},/area/syndicate_mothership) +"oA" = (/turf/unsimulated/floor/snow,/obj/structure/flora/tree/pine,/turf/unsimulated/floor/snow{icon_state = "gravsnow_corner"},/area/syndicate_mothership) +"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" = (/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) +"oE" = (/turf/simulated/shuttle/wall{tag = "icon-swall12";icon_state = "swall12";dir = 2},/area/shuttle/gamma/space) +"oF" = (/turf/simulated/shuttle/wall{icon_state = "swall_s10";dir = 2},/area/shuttle/gamma/space) +"oG" = (/turf/simulated/shuttle/wall{tag = "icon-swall3";icon_state = "swall3";dir = 2},/area/shuttle/gamma/space) +"oH" = (/obj/structure/table,/obj/item/storage/fancy/crayons,/obj/item/storage/fancy/crayons,/turf/unsimulated/floor{icon_state = "freezerfloor";dir = 2},/area/syndicate_mothership) +"oI" = (/obj/machinery/washing_machine,/turf/unsimulated/floor{icon_state = "freezerfloor";dir = 2},/area/syndicate_mothership) "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/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) -"oQ" = (/obj/machinery/vending/syndisnack,/turf/unsimulated/floor{icon_state = "bar"; dir = 2},/area/syndicate_mothership) -"oR" = (/obj/machinery/vending/syndicigs,/turf/unsimulated/floor{icon_state = "bar"; dir = 2},/area/syndicate_mothership) -"oS" = (/obj/machinery/camera{c_tag = "CentComm Special Ops. Mass Drivers"; dir = 2; network = list("ERT","CentComm")},/turf/unsimulated/floor{icon_state = "vault"; dir = 1},/area/centcom/specops) +"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) +"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) +"oQ" = (/obj/machinery/vending/syndisnack,/turf/unsimulated/floor{icon_state = "bar";dir = 2},/area/syndicate_mothership) +"oR" = (/obj/machinery/vending/syndicigs,/turf/unsimulated/floor{icon_state = "bar";dir = 2},/area/syndicate_mothership) +"oS" = (/obj/machinery/camera{c_tag = "CentComm Special Ops. Mass Drivers";dir = 2;network = list("ERT","CentComm")},/turf/unsimulated/floor{icon_state = "vault";dir = 1},/area/centcom/specops) "oT" = (/turf/simulated/floor/plasteel{icon_state = "red"},/area/centcom/gamma) -"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) +"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/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) -"pb" = (/obj/structure/window/reinforced{dir = 1},/obj/structure/flora/ausbushes/leafybush,/turf/unsimulated/floor{icon_state = "grass1"; name = "grass"},/area/centcom/specops) -"pc" = (/mob/living/simple_animal/pet/fox/Syndifox,/turf/unsimulated/floor{icon_state = "bar"; dir = 2},/area/syndicate_mothership) -"pd" = (/obj/effect/decal/warning_stripes/southeastcorner,/turf/unsimulated/floor{icon_state = "bar"; dir = 2},/area/syndicate_mothership) -"pe" = (/obj/effect/decal/warning_stripes/south,/turf/unsimulated/floor{icon_state = "bar"; dir = 2},/area/syndicate_mothership) +"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) +"pb" = (/obj/structure/window/reinforced{dir = 1},/obj/structure/flora/ausbushes/leafybush,/turf/unsimulated/floor{icon_state = "grass1";name = "grass"},/area/centcom/specops) +"pc" = (/mob/living/simple_animal/pet/fox/Syndifox,/turf/unsimulated/floor{icon_state = "bar";dir = 2},/area/syndicate_mothership) +"pd" = (/obj/effect/decal/warning_stripes/southeastcorner,/turf/unsimulated/floor{icon_state = "bar";dir = 2},/area/syndicate_mothership) +"pe" = (/obj/effect/decal/warning_stripes/south,/turf/unsimulated/floor{icon_state = "bar";dir = 2},/area/syndicate_mothership) "pf" = (/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/shuttle/gamma/space) "pg" = (/obj/structure/grille,/obj/structure/window/full/shuttle{icon_state = "16"},/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/shuttle/gamma/space) "ph" = (/obj/machinery/recharger/wallcharger{pixel_x = 32},/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/shuttle/gamma/space) "pi" = (/obj/structure/grille,/obj/structure/window/full/shuttle{icon_state = "15"},/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/shuttle/gamma/space) -"pj" = (/obj/structure/sign/securearea{pixel_x = -32; pixel_y = 0},/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/shuttle/gamma/space) +"pj" = (/obj/structure/sign/securearea{pixel_x = -32;pixel_y = 0},/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/shuttle/gamma/space) "pk" = (/obj/structure/closet/secure_closet/guncabinet,/obj/item/ammo_casing/rocket,/obj/item/ammo_casing/rocket,/obj/item/ammo_casing/rocket,/obj/item/gun/rocketlauncher,/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/shuttle/gamma/space) -"pl" = (/obj/machinery/light{icon_state = "tube1"; dir = 8},/turf/unsimulated/floor{icon_state = "bar"; dir = 2},/area/syndicate_mothership) -"pm" = (/obj/structure/table/wood,/obj/item/reagent_containers/food/drinks/cans/beer{pixel_x = -2; pixel_y = 5},/turf/unsimulated/floor{icon_state = "bar"; dir = 2},/area/syndicate_mothership) +"pl" = (/obj/machinery/light{icon_state = "tube1";dir = 8},/turf/unsimulated/floor{icon_state = "bar";dir = 2},/area/syndicate_mothership) +"pm" = (/obj/structure/table/wood,/obj/item/reagent_containers/food/drinks/cans/beer{pixel_x = -2;pixel_y = 5},/turf/unsimulated/floor{icon_state = "bar";dir = 2},/area/syndicate_mothership) "pn" = (/obj/machinery/door/airlock/shuttle,/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/shuttle/gamma/space) "po" = (/obj/structure/table/reinforced,/obj/item/grenade/clusterbuster,/obj/item/grenade/chem_grenade/incendiary{name = "Incendiary Grenade"},/obj/item/kitchen/knife/combat,/obj/item/kitchen/knife/combat,/obj/item/kitchen/knife/combat,/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/shuttle/gamma/space) "pp" = (/obj/machinery/computer/telecrystals/uplinker,/turf/unsimulated/floor{icon_state = "floor4"},/area/syndicate_mothership) -"pq" = (/obj/machinery/camera{c_tag = "CentComm Special Ops. Bathroom"; dir = 2; network = list("ERT","CentComm")},/turf/unsimulated/floor{icon_state = "freezerfloor"; dir = 2},/area/centcom/specops) -"pr" = (/obj/machinery/door/airlock/centcom{name = "Bathroom"; opacity = 1; req_access_txt = "0"},/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/specops) -"ps" = (/obj/machinery/telecomms/server/presets/centcomm,/turf/unsimulated/floor{icon_state = "green"; dir = 8},/area/centcom/control) +"pq" = (/obj/machinery/camera{c_tag = "CentComm Special Ops. Bathroom";dir = 2;network = list("ERT","CentComm")},/turf/unsimulated/floor{icon_state = "freezerfloor";dir = 2},/area/centcom/specops) +"pr" = (/obj/machinery/door/airlock/centcom{name = "Bathroom";opacity = 1;req_access_txt = "0"},/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/specops) +"ps" = (/obj/machinery/telecomms/server/presets/centcomm,/turf/unsimulated/floor{icon_state = "green";dir = 8},/area/centcom/control) "pt" = (/obj/machinery/door/airlock/shuttle{req_access_txt = "0"},/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/shuttle/gamma/space) -"pu" = (/turf/unsimulated/wall/fakeglass{tag = "icon-fakewindows (NORTHWEST)"; icon_state = "fakewindows"; dir = 9},/area/syndicate_mothership) -"pv" = (/turf/unsimulated/wall/fakeglass{tag = "icon-fakewindows2 (WEST)"; icon_state = "fakewindows2"; dir = 8},/area/syndicate_mothership) -"pw" = (/obj/structure/table/wood,/obj/item/reagent_containers/food/snacks/mushroompizzaslice{pixel_x = -5; pixel_y = 5},/turf/unsimulated/floor{icon_state = "bar"; dir = 2},/area/syndicate_mothership) -"px" = (/obj/structure/table/wood,/obj/item/reagent_containers/food/drinks/cans/beer{pixel_x = 5; pixel_y = -2},/obj/item/toy/cards/deck/syndicate{pixel_x = -6; pixel_y = 6},/turf/unsimulated/floor{icon_state = "bar"; dir = 2},/area/syndicate_mothership) -"py" = (/turf/unsimulated/wall/fakeglass{tag = "icon-fakewindows2 (NORTH)"; icon_state = "fakewindows2"; dir = 1},/area/syndicate_mothership) +"pu" = (/turf/unsimulated/wall/fakeglass{tag = "icon-fakewindows (NORTHWEST)";icon_state = "fakewindows";dir = 9},/area/syndicate_mothership) +"pv" = (/turf/unsimulated/wall/fakeglass{tag = "icon-fakewindows2 (WEST)";icon_state = "fakewindows2";dir = 8},/area/syndicate_mothership) +"pw" = (/obj/structure/table/wood,/obj/item/reagent_containers/food/snacks/mushroompizzaslice{pixel_x = -5;pixel_y = 5},/turf/unsimulated/floor{icon_state = "bar";dir = 2},/area/syndicate_mothership) +"px" = (/obj/structure/table/wood,/obj/item/reagent_containers/food/drinks/cans/beer{pixel_x = 5;pixel_y = -2},/obj/item/toy/cards/deck/syndicate{pixel_x = -6;pixel_y = 6},/turf/unsimulated/floor{icon_state = "bar";dir = 2},/area/syndicate_mothership) +"py" = (/turf/unsimulated/wall/fakeglass{tag = "icon-fakewindows2 (NORTH)";icon_state = "fakewindows2";dir = 1},/area/syndicate_mothership) "pz" = (/turf/unsimulated/floor{icon_state = "floor"},/area/syndicate_mothership) "pA" = (/obj/machinery/light,/turf/unsimulated/floor{icon_state = "floor"},/area/syndicate_mothership) -"pB" = (/obj/structure/sink{dir = 4; icon_state = "sink"; pixel_x = 11; pixel_y = 0},/obj/structure/mirror{dir = 4; pixel_x = 32; pixel_y = 0},/turf/unsimulated/floor{icon_state = "freezerfloor"; dir = 2},/area/centcom/specops) -"pC" = (/obj/machinery/door/poddoor{id_tag = "nukeop_ready"; name = "Shuttle Dock Door"},/turf/unsimulated/floor{icon_state = "dark"},/area/syndicate_mothership) -"pD" = (/turf/simulated/shuttle/wall{icon_state = "swall_s5"; dir = 2},/area/shuttle/gamma/space) -"pE" = (/obj/structure/bed,/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/specops) +"pB" = (/obj/structure/sink{dir = 4;icon_state = "sink";pixel_x = 11;pixel_y = 0},/obj/structure/mirror{dir = 4;pixel_x = 32;pixel_y = 0},/turf/unsimulated/floor{icon_state = "freezerfloor";dir = 2},/area/centcom/specops) +"pC" = (/obj/machinery/door/poddoor{id_tag = "nukeop_ready";name = "Shuttle Dock Door"},/turf/unsimulated/floor{icon_state = "dark"},/area/syndicate_mothership) +"pD" = (/turf/simulated/shuttle/wall{icon_state = "swall_s5";dir = 2},/area/shuttle/gamma/space) "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/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) -"pL" = (/obj/structure/flora/ausbushes/ywflowers,/turf/unsimulated/floor{icon_state = "grass1"; name = "grass"},/area/centcom/evac) -"pM" = (/obj/structure/flora/ausbushes/brflowers,/turf/unsimulated/floor{icon_state = "grass1"; name = "grass"},/area/centcom/evac) -"pN" = (/obj/structure/flora/ausbushes/sparsegrass,/turf/unsimulated/floor{icon_state = "grass1"; name = "grass"},/area/centcom/evac) -"pO" = (/obj/structure/flora/ausbushes,/turf/unsimulated/floor{icon_state = "grass1"; name = "grass"},/area/centcom/evac) -"pP" = (/obj/structure/flora/ausbushes/leafybush,/turf/unsimulated/floor{icon_state = "grass1"; name = "grass"},/area/centcom/evac) +"pG" = (/obj/structure/toilet{dir = 8},/turf/unsimulated/floor{icon_state = "freezerfloor";dir = 2},/area/centcom/specops) +"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) +"pL" = (/obj/structure/flora/ausbushes/ywflowers,/turf/unsimulated/floor{icon_state = "grass1";name = "grass"},/area/centcom/evac) +"pM" = (/obj/structure/flora/ausbushes/brflowers,/turf/unsimulated/floor{icon_state = "grass1";name = "grass"},/area/centcom/evac) +"pN" = (/obj/structure/flora/ausbushes/sparsegrass,/turf/unsimulated/floor{icon_state = "grass1";name = "grass"},/area/centcom/evac) +"pO" = (/obj/structure/flora/ausbushes,/turf/unsimulated/floor{icon_state = "grass1";name = "grass"},/area/centcom/evac) +"pP" = (/obj/structure/flora/ausbushes/leafybush,/turf/unsimulated/floor{icon_state = "grass1";name = "grass"},/area/centcom/evac) "pQ" = (/obj/structure/closet/secure_closet/brig,/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/specops) -"pR" = (/obj/structure/table/wood,/obj/item/storage/box/drinkingglasses,/obj/item/reagent_containers/food/drinks/bottle/rum,/turf/unsimulated/floor{dir = 2; icon_state = "wood"},/area/syndicate_mothership) -"pS" = (/obj/structure/table/wood,/turf/unsimulated/floor{dir = 2; icon_state = "wood"},/area/syndicate_mothership) -"pT" = (/obj/structure/table/wood,/obj/item/syndicatedetonator,/turf/unsimulated/floor{dir = 2; icon_state = "wood"},/area/syndicate_mothership) -"pU" = (/obj/effect/decal/warning_stripes/northeastcorner,/turf/unsimulated/floor{icon_state = "bar"; dir = 2},/area/syndicate_mothership) -"pV" = (/obj/effect/decal/warning_stripes/north,/turf/unsimulated/floor{icon_state = "bar"; dir = 2},/area/syndicate_mothership) -"pW" = (/obj/machinery/door/airlock/centcom{name = "Restroom"; opacity = 1; req_access_txt = "150"},/turf/unsimulated/floor{icon_state = "bar"; dir = 2},/area/syndicate_mothership) -"pX" = (/turf/unsimulated/floor{icon_state = "freezerfloor"; dir = 2},/area/syndicate_mothership) -"pY" = (/obj/structure/closet/secure_closet/brig,/obj/machinery/camera{c_tag = "CentComm Special Ops. Ready Room East"; dir = 8; network = list("ERT","CentComm")},/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/specops) -"pZ" = (/obj/structure/flora/ausbushes/grassybush,/turf/unsimulated/floor{icon_state = "grass1"; name = "grass"},/area/centcom/evac) -"qa" = (/obj/structure/flora/ausbushes/fullgrass,/turf/unsimulated/floor{icon_state = "grass1"; name = "grass"},/area/centcom/evac) -"qb" = (/obj/structure/flora/ausbushes/fernybush,/turf/unsimulated/floor{icon_state = "grass1"; name = "grass"},/area/centcom/evac) +"pR" = (/obj/structure/table/wood,/obj/item/storage/box/drinkingglasses,/obj/item/reagent_containers/food/drinks/bottle/rum,/turf/unsimulated/floor{dir = 2;icon_state = "wood"},/area/syndicate_mothership) +"pS" = (/obj/structure/table/wood,/turf/unsimulated/floor{dir = 2;icon_state = "wood"},/area/syndicate_mothership) +"pT" = (/obj/structure/table/wood,/obj/item/syndicatedetonator,/turf/unsimulated/floor{dir = 2;icon_state = "wood"},/area/syndicate_mothership) +"pU" = (/obj/effect/decal/warning_stripes/northeastcorner,/turf/unsimulated/floor{icon_state = "bar";dir = 2},/area/syndicate_mothership) +"pV" = (/obj/effect/decal/warning_stripes/north,/turf/unsimulated/floor{icon_state = "bar";dir = 2},/area/syndicate_mothership) +"pW" = (/obj/machinery/door/airlock/centcom{name = "Restroom";opacity = 1;req_access_txt = "150"},/turf/unsimulated/floor{icon_state = "bar";dir = 2},/area/syndicate_mothership) +"pX" = (/turf/unsimulated/floor{icon_state = "freezerfloor";dir = 2},/area/syndicate_mothership) +"pY" = (/obj/structure/closet/secure_closet/brig,/obj/machinery/camera{c_tag = "CentComm Special Ops. Ready Room East";dir = 8;network = list("ERT","CentComm")},/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/specops) +"pZ" = (/obj/structure/flora/ausbushes/grassybush,/turf/unsimulated/floor{icon_state = "grass1";name = "grass"},/area/centcom/evac) +"qa" = (/obj/structure/flora/ausbushes/fullgrass,/turf/unsimulated/floor{icon_state = "grass1";name = "grass"},/area/centcom/evac) +"qb" = (/obj/structure/flora/ausbushes/fernybush,/turf/unsimulated/floor{icon_state = "grass1";name = "grass"},/area/centcom/evac) "qc" = (/obj/effect/spawner/window/reinforced,/turf/unsimulated/floor{icon_state = "floor"},/area/centcom/evac) -"qd" = (/obj/machinery/door/airlock/centcom{name = "Medical Treatment Post"; opacity = 1; req_access_txt = "0"},/turf/unsimulated/floor{icon_state = "floor"},/area/centcom/evac) -"qe" = (/obj/machinery/atmospherics/unary/cryo_cell,/turf/simulated/floor/plasteel{tag = "icon-whiteblue (NORTHWEST)"; icon_state = "whiteblue"; dir = 9},/area/centcom/evac) -"qf" = (/obj/effect/decal/warning_stripes/southeastcorner,/obj/item/radio/intercom/syndicate{pixel_x = -28},/turf/unsimulated/floor{dir = 2; icon_state = "wood"},/area/syndicate_mothership) -"qg" = (/obj/effect/landmark{name = "Syndicate-Spawn"},/obj/effect/decal/warning_stripes/south,/turf/unsimulated/floor{dir = 2; icon_state = "wood"},/area/syndicate_mothership) -"qh" = (/obj/effect/decal/warning_stripes/south,/turf/unsimulated/floor{dir = 2; icon_state = "wood"},/area/syndicate_mothership) -"qi" = (/obj/effect/decal/warning_stripes/southwestcorner,/turf/unsimulated/floor{dir = 2; icon_state = "wood"},/area/syndicate_mothership) -"qj" = (/obj/machinery/door/window{dir = 4; name = "Uplink Management Control"; req_access_txt = "151"},/turf/unsimulated/floor{dir = 2; icon_state = "wood"},/area/syndicate_mothership) -"qk" = (/turf/simulated/floor/plasteel{tag = "icon-whiteblue (NORTH)"; icon_state = "whiteblue"; dir = 1},/area/centcom/evac) -"ql" = (/obj/machinery/atmospherics/unary/cryo_cell,/turf/simulated/floor/plasteel{tag = "icon-whiteblue (NORTH)"; icon_state = "whiteblue"; dir = 1},/area/centcom/evac) -"qm" = (/turf/simulated/floor/plasteel{tag = "icon-whiteblue (NORTHEAST)"; icon_state = "whiteblue"; dir = 5},/area/centcom/evac) -"qn" = (/obj/machinery/atmospherics/pipe/manifold/hidden{dir = 8},/turf/simulated/floor/plasteel{tag = "icon-whiteblue (WEST)"; icon_state = "whiteblue"; dir = 8},/area/centcom/evac) +"qd" = (/obj/machinery/door/airlock/centcom{name = "Medical Treatment Post";opacity = 1;req_access_txt = "0"},/turf/unsimulated/floor{icon_state = "floor"},/area/centcom/evac) +"qe" = (/obj/machinery/atmospherics/unary/cryo_cell,/turf/simulated/floor/plasteel{tag = "icon-whiteblue (NORTHWEST)";icon_state = "whiteblue";dir = 9},/area/centcom/evac) +"qf" = (/obj/effect/decal/warning_stripes/southeastcorner,/obj/item/radio/intercom/syndicate{pixel_x = -28},/turf/unsimulated/floor{dir = 2;icon_state = "wood"},/area/syndicate_mothership) +"qg" = (/obj/effect/landmark{name = "Syndicate-Spawn"},/obj/effect/decal/warning_stripes/south,/turf/unsimulated/floor{dir = 2;icon_state = "wood"},/area/syndicate_mothership) +"qh" = (/obj/effect/decal/warning_stripes/south,/turf/unsimulated/floor{dir = 2;icon_state = "wood"},/area/syndicate_mothership) +"qi" = (/obj/effect/decal/warning_stripes/southwestcorner,/turf/unsimulated/floor{dir = 2;icon_state = "wood"},/area/syndicate_mothership) +"qj" = (/obj/machinery/door/window{dir = 4;name = "Uplink Management Control";req_access_txt = "151"},/turf/unsimulated/floor{dir = 2;icon_state = "wood"},/area/syndicate_mothership) +"qk" = (/turf/simulated/floor/plasteel{tag = "icon-whiteblue (NORTH)";icon_state = "whiteblue";dir = 1},/area/centcom/evac) +"ql" = (/obj/machinery/atmospherics/unary/cryo_cell,/turf/simulated/floor/plasteel{tag = "icon-whiteblue (NORTH)";icon_state = "whiteblue";dir = 1},/area/centcom/evac) +"qm" = (/turf/simulated/floor/plasteel{tag = "icon-whiteblue (NORTHEAST)";icon_state = "whiteblue";dir = 5},/area/centcom/evac) +"qn" = (/obj/machinery/atmospherics/pipe/manifold/hidden{dir = 8},/turf/simulated/floor/plasteel{tag = "icon-whiteblue (WEST)";icon_state = "whiteblue";dir = 8},/area/centcom/evac) "qo" = (/turf/simulated/floor/plasteel{icon_state = "white"},/area/centcom/evac) -"qp" = (/obj/machinery/atmospherics/pipe/simple/hidden{dir = 9; icon_state = "intact"},/turf/simulated/floor/plasteel{icon_state = "white"},/area/centcom/evac) -"qq" = (/turf/simulated/floor/plasteel{tag = "icon-whiteblue (EAST)"; icon_state = "whiteblue"; dir = 4},/area/centcom/evac) -"qr" = (/obj/structure/sign/double/map/left{pixel_y = -32},/obj/effect/decal/warning_stripes/west,/obj/machinery/light,/obj/structure/rack/skeletal_bar/left,/obj/item/reagent_containers/food/drinks/bottle/vodka,/turf/unsimulated/floor{dir = 2; icon_state = "wood"},/area/syndicate_mothership) +"qp" = (/obj/machinery/atmospherics/pipe/simple/hidden{dir = 9;icon_state = "intact"},/turf/simulated/floor/plasteel{icon_state = "white"},/area/centcom/evac) +"qq" = (/turf/simulated/floor/plasteel{tag = "icon-whiteblue (EAST)";icon_state = "whiteblue";dir = 4},/area/centcom/evac) +"qr" = (/obj/structure/sign/double/map/left{pixel_y = -32},/obj/effect/decal/warning_stripes/west,/obj/machinery/light,/obj/structure/rack/skeletal_bar/left,/obj/item/reagent_containers/food/drinks/bottle/vodka,/turf/unsimulated/floor{dir = 2;icon_state = "wood"},/area/syndicate_mothership) "qs" = (/obj/machinery/atmospherics/pipe/simple/hidden{dir = 4},/turf/simulated/floor/plasteel{icon_state = "white"},/area/centcom/evac) "qt" = (/obj/machinery/computer/telecrystals/boss,/turf/unsimulated/floor{icon_state = "floor4"},/area/syndicate_mothership) -"qu" = (/obj/structure/sign/double/map/right{pixel_y = -32},/obj/structure/rack/skeletal_bar/right,/obj/item/reagent_containers/food/drinks/bottle/gin,/turf/unsimulated/floor{dir = 2; icon_state = "wood"},/area/syndicate_mothership) +"qu" = (/obj/structure/sign/double/map/right{pixel_y = -32},/obj/structure/rack/skeletal_bar/right,/obj/item/reagent_containers/food/drinks/bottle/gin,/turf/unsimulated/floor{dir = 2;icon_state = "wood"},/area/syndicate_mothership) "qv" = (/obj/machinery/atmospherics/pipe/manifold/hidden{dir = 1},/turf/simulated/floor/plasteel{icon_state = "white"},/area/centcom/evac) -"qw" = (/obj/machinery/door/airlock/multi_tile/glass{name = "Equipment Room"; req_access_txt = "150"},/turf/unsimulated/floor{icon_state = "bar"; dir = 2},/area/syndicate_mothership) -"qx" = (/obj/machinery/atmospherics/pipe/simple/hidden{dir = 10; initialize_directions = 10},/turf/simulated/floor/plasteel{tag = "icon-whiteblue (EAST)"; icon_state = "whiteblue"; dir = 4},/area/centcom/evac) -"qy" = (/obj/machinery/atmospherics/unary/portables_connector{dir = 1; name = "Connector Port (Air Supply)"},/obj/machinery/portable_atmospherics/canister/oxygen{name = "Canister: \[O2] (CRYO)"},/turf/simulated/floor/plasteel{tag = "icon-whiteblue (SOUTHWEST)"; icon_state = "whiteblue"; dir = 10},/area/centcom/evac) -"qz" = (/obj/structure/table,/obj/item/reagent_containers/glass/beaker/cryoxadone{pixel_x = 0; pixel_y = 0},/obj/item/reagent_containers/glass/beaker/cryoxadone{pixel_x = 0; pixel_y = 0},/turf/simulated/floor/plasteel{dir = 2; icon_state = "whiteblue"; tag = "icon-whitehall (WEST)"},/area/centcom/evac) -"qA" = (/obj/machinery/atmospherics/unary/portables_connector{dir = 1; name = "Connector Port (Air Supply)"},/obj/machinery/portable_atmospherics/canister/oxygen{name = "Canister: \[O2] (CRYO)"},/turf/simulated/floor/plasteel{dir = 2; icon_state = "whiteblue"; tag = "icon-whitehall (WEST)"},/area/centcom/evac) -"qB" = (/obj/machinery/atmospherics/unary/cold_sink/freezer{dir = 1},/turf/simulated/floor/plasteel{tag = "icon-whiteblue (SOUTHEAST)"; icon_state = "whiteblue"; dir = 6},/area/centcom/evac) -"qC" = (/obj/structure/table,/obj/item/storage/firstaid/toxin,/obj/item/storage/firstaid/regular,/obj/item/storage/firstaid/regular,/obj/item/storage/firstaid/adv,/obj/item/storage/firstaid/brute,/turf/simulated/floor/plasteel{dir = 2; icon_state = "whiteblue"; tag = "icon-whitehall (WEST)"},/area/centcom/evac) -"qD" = (/turf/unsimulated/floor{dir = 2; icon_state = "stage_stairs"},/area/syndicate_mothership) -"qE" = (/obj/machinery/mech_bay_recharge_port/upgraded,/obj/structure/cable{icon_state = "0-2"; d2 = 2},/turf/unsimulated/floor,/area/syndicate_mothership) +"qw" = (/obj/machinery/door/airlock/multi_tile/glass{name = "Equipment Room";req_access_txt = "150"},/turf/unsimulated/floor{icon_state = "bar";dir = 2},/area/syndicate_mothership) +"qx" = (/obj/machinery/atmospherics/pipe/simple/hidden{dir = 10;initialize_directions = 10},/turf/simulated/floor/plasteel{tag = "icon-whiteblue (EAST)";icon_state = "whiteblue";dir = 4},/area/centcom/evac) +"qy" = (/obj/machinery/atmospherics/unary/portables_connector{dir = 1;name = "Connector Port (Air Supply)"},/obj/machinery/portable_atmospherics/canister/oxygen{name = "Canister: \[O2] (CRYO)"},/turf/simulated/floor/plasteel{tag = "icon-whiteblue (SOUTHWEST)";icon_state = "whiteblue";dir = 10},/area/centcom/evac) +"qz" = (/obj/structure/table,/obj/item/reagent_containers/glass/beaker/cryoxadone{pixel_x = 0;pixel_y = 0},/obj/item/reagent_containers/glass/beaker/cryoxadone{pixel_x = 0;pixel_y = 0},/turf/simulated/floor/plasteel{dir = 2;icon_state = "whiteblue";tag = "icon-whitehall (WEST)"},/area/centcom/evac) +"qA" = (/obj/machinery/atmospherics/unary/portables_connector{dir = 1;name = "Connector Port (Air Supply)"},/obj/machinery/portable_atmospherics/canister/oxygen{name = "Canister: \[O2] (CRYO)"},/turf/simulated/floor/plasteel{dir = 2;icon_state = "whiteblue";tag = "icon-whitehall (WEST)"},/area/centcom/evac) +"qB" = (/obj/machinery/atmospherics/unary/cold_sink/freezer{dir = 1},/turf/simulated/floor/plasteel{tag = "icon-whiteblue (SOUTHEAST)";icon_state = "whiteblue";dir = 6},/area/centcom/evac) +"qC" = (/obj/structure/table,/obj/item/storage/firstaid/toxin,/obj/item/storage/firstaid/regular,/obj/item/storage/firstaid/regular,/obj/item/storage/firstaid/adv,/obj/item/storage/firstaid/brute,/turf/simulated/floor/plasteel{dir = 2;icon_state = "whiteblue";tag = "icon-whitehall (WEST)"},/area/centcom/evac) +"qD" = (/turf/unsimulated/floor{dir = 2;icon_state = "stage_stairs"},/area/syndicate_mothership) +"qE" = (/obj/machinery/mech_bay_recharge_port/upgraded,/obj/structure/cable{icon_state = "0-2";d2 = 2},/turf/unsimulated/floor,/area/syndicate_mothership) "qF" = (/turf/simulated/floor/mech_bay_recharge_floor,/area/syndicate_mothership) "qG" = (/obj/machinery/computer/mech_bay_power_console,/turf/unsimulated/floor,/area/syndicate_mothership) -"qH" = (/obj/machinery/vending/tool,/turf/unsimulated/floor{tag = "icon-dark"; icon_state = "dark"},/area/syndicate_mothership) +"qH" = (/obj/machinery/vending/tool,/turf/unsimulated/floor{tag = "icon-dark";icon_state = "dark"},/area/syndicate_mothership) "qI" = (/turf/unsimulated/wall,/area/centcom/suppy) -"qJ" = (/obj/structure/bed,/turf/unsimulated/floor{name = "plating"},/area/centcom) "qK" = (/obj/structure/toilet{dir = 8},/turf/unsimulated/floor{icon_state = "platingdmg3"},/area/centcom) -"qL" = (/obj/machinery/light{icon_state = "tube1"; dir = 8},/turf/unsimulated/floor{tag = "icon-dark"; icon_state = "dark"},/area/syndicate_mothership) -"qM" = (/turf/unsimulated/floor{tag = "icon-dark"; icon_state = "dark"},/area/syndicate_mothership) +"qL" = (/obj/machinery/light{icon_state = "tube1";dir = 8},/turf/unsimulated/floor{tag = "icon-dark";icon_state = "dark"},/area/syndicate_mothership) +"qM" = (/turf/unsimulated/floor{tag = "icon-dark";icon_state = "dark"},/area/syndicate_mothership) "qN" = (/obj/structure/toilet{dir = 8},/turf/unsimulated/floor{name = "plating"},/area/centcom) "qO" = (/obj/effect/decal/cleanable/cobweb2,/obj/structure/toilet{dir = 8},/turf/unsimulated/floor{name = "plating"},/area/centcom) "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" = (/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) "qW" = (/turf/unsimulated/floor{icon_state = "platingdmg3"},/area/centcom) -"qX" = (/turf/unsimulated/wall/fakeglass{dir = 8; icon_state = "fakewindows3"; tag = "icon-fakewindows (WEST)"},/area/syndicate_mothership) -"qY" = (/turf/unsimulated/wall{desc = "The door appears to be locked tightly."; icon = 'icons/obj/doors/airlocks/hatch/centcom.dmi'; icon_state = "closed"; name = "Locked Door"},/area/centcom) -"qZ" = (/obj/effect/forcefield{desc = "You can't get in. Heh."; layer = 1; name = "Blocker"},/turf/unsimulated/wall/fakeglass{dir = 8; icon_state = "fakewindows3"; tag = "icon-fakewindows (WEST)"},/area/centcom) +"qX" = (/turf/unsimulated/wall/fakeglass{dir = 8;icon_state = "fakewindows3";tag = "icon-fakewindows (WEST)"},/area/syndicate_mothership) +"qY" = (/turf/unsimulated/wall{desc = "The door appears to be locked tightly.";icon = 'icons/obj/doors/airlocks/hatch/centcom.dmi';icon_state = "closed";name = "Locked Door"},/area/centcom) +"qZ" = (/obj/effect/forcefield{desc = "You can't get in. Heh.";layer = 1;name = "Blocker"},/turf/unsimulated/wall/fakeglass{dir = 8;icon_state = "fakewindows3";tag = "icon-fakewindows (WEST)"},/area/centcom) "ra" = (/turf/unsimulated/floor{icon_state = "dark"},/area/centcom) -"rb" = (/obj/machinery/camera{c_tag = "CentComm Special Ops. Bathroom"; dir = 2; network = list("ERT","CentComm")},/turf/unsimulated/floor{icon_state = "dark"},/area/centcom) +"rb" = (/obj/machinery/camera{c_tag = "CentComm Special Ops. Bathroom";dir = 2;network = list("ERT","CentComm")},/turf/unsimulated/floor{icon_state = "dark"},/area/centcom) "rc" = (/obj/effect/decal/cleanable/blood,/turf/unsimulated/floor{icon_state = "dark"},/area/centcom) "rd" = (/obj/effect/landmark{name = "prisonwarp"},/turf/unsimulated/floor{icon_state = "panelscorched"},/area/centcom) -"re" = (/obj/structure/closet/syndicate/personal,/turf/unsimulated/floor{icon_state = "vault"; dir = 8},/area/syndicate_mothership) -"rf" = (/obj/structure/table,/obj/item/gun/energy/ionrifle,/turf/unsimulated/floor{tag = "icon-dark"; icon_state = "dark"},/area/syndicate_mothership) +"re" = (/obj/structure/closet/syndicate/personal,/turf/unsimulated/floor{icon_state = "vault";dir = 8},/area/syndicate_mothership) +"rf" = (/obj/structure/table,/obj/item/gun/energy/ionrifle,/turf/unsimulated/floor{tag = "icon-dark";icon_state = "dark"},/area/syndicate_mothership) "rg" = (/obj/effect/decal/cleanable/cobweb,/obj/effect/landmark{name = "prisonwarp"},/turf/unsimulated/floor{name = "plating"},/area/centcom) "rh" = (/obj/structure/toilet{dir = 8},/turf/unsimulated/floor{icon_state = "platingdmg1"},/area/centcom) "ri" = (/obj/structure/toilet{dir = 8},/turf/unsimulated/floor{icon_state = "floorscorched2"},/area/centcom) -"rj" = (/obj/structure/rack,/obj/item/implanter/adrenalin{pixel_x = 12; pixel_y = -12},/obj/item/implanter/emp{pixel_x = 9; pixel_y = -9},/obj/item/implanter/explosive{pixel_x = 6; pixel_y = -6},/obj/item/implanter/explosive_macro{pixel_x = 3; pixel_y = -3},/obj/item/implanter/freedom,/obj/item/implanter/krav_maga{pixel_x = -9; pixel_y = 9},/obj/item/implanter/mindshield{pixel_x = -6; pixel_y = 6},/obj/item/implanter/storage{pixel_x = -3; pixel_y = 3},/turf/unsimulated/floor{tag = "icon-floor"; icon_state = "floor"},/area/admin) -"rk" = (/turf/simulated/shuttle/wall{icon_state = "swall_s9"; dir = 2},/area/shuttle/gamma/space) -"rl" = (/obj/structure/sign/securearea{pixel_x = 32; pixel_y = 0},/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/shuttle/gamma/space) -"rm" = (/obj/structure/cable{d2 = 8; icon_state = "0-8"},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/obj/machinery/mech_bay_recharge_port/upgraded,/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/shuttle/gamma/space) -"rn" = (/obj/machinery/power/apc{dir = 2; name = "Gamma Armory APC"; pixel_y = -24},/obj/structure/cable{d2 = 4; icon_state = "0-4"},/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/shuttle/gamma/space) -"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/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/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) +"rj" = (/obj/structure/rack,/obj/item/implanter/adrenalin{pixel_x = 12;pixel_y = -12},/obj/item/implanter/emp{pixel_x = 9;pixel_y = -9},/obj/item/implanter/explosive{pixel_x = 6;pixel_y = -6},/obj/item/implanter/explosive_macro{pixel_x = 3;pixel_y = -3},/obj/item/implanter/freedom,/obj/item/implanter/krav_maga{pixel_x = -9;pixel_y = 9},/obj/item/implanter/mindshield{pixel_x = -6;pixel_y = 6},/obj/item/implanter/storage{pixel_x = -3;pixel_y = 3},/turf/unsimulated/floor{tag = "icon-floor";icon_state = "floor"},/area/admin) +"rk" = (/turf/simulated/shuttle/wall{icon_state = "swall_s9";dir = 2},/area/shuttle/gamma/space) +"rl" = (/obj/structure/sign/securearea{pixel_x = 32;pixel_y = 0},/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/shuttle/gamma/space) +"rm" = (/obj/structure/cable{d2 = 8;icon_state = "0-8"},/obj/structure/cable{d1 = 4;d2 = 8;icon_state = "4-8";pixel_x = 0},/obj/machinery/mech_bay_recharge_port/upgraded,/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/shuttle/gamma/space) +"rn" = (/obj/machinery/power/apc{dir = 2;name = "Gamma Armory APC";pixel_y = -24},/obj/structure/cable{d2 = 4;icon_state = "0-4"},/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/shuttle/gamma/space) +"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) +"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) +"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) "rB" = (/obj/machinery/computer/teleporter,/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/specops) -"rC" = (/obj/machinery/door_control{desc = "A remote control switch to block view of the singularity."; icon_state = "doorctrl0"; id = "GRAVPULTS"; name = "Gravity Catapults"; 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 = "ASSAULT"; name = "Mech Storage"; 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 = "CCTELE"; name = "Teleporter Access"; 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) -"rD" = (/obj/item/radio/intercom/specops,/obj/structure/table/wood,/turf/unsimulated/floor{dir = 4; icon_state = "carpetside"},/area/centcom/specops) "rE" = (/turf/unsimulated/wall,/area/start) -"rF" = (/obj/effect/forcefield{desc = "You can't get in. Heh."; layer = 1; name = "Blocker"},/obj/machinery/door/poddoor/shutters{dir = 2; id_tag = "specopsoffice"; name = "Privacy Shutters"},/turf/unsimulated/wall/fakeglass{dir = 8; icon_state = "fakewindows3"; tag = "icon-fakewindows (WEST)"},/area/centcom/specops) -"rG" = (/obj/machinery/door/airlock/centcom{name = "Special Operations Command"; opacity = 1; req_access_txt = "114"},/obj/machinery/door/poddoor{id_tag = "specopsoffice"; name = "Super Privacy Shutters"},/turf/unsimulated/floor{icon_state = "vault"; dir = 8},/area/centcom/specops) +"rF" = (/obj/effect/forcefield{desc = "You can't get in. Heh.";layer = 1;name = "Blocker"},/obj/machinery/door/poddoor/shutters{dir = 2;id_tag = "specopsoffice";name = "Privacy Shutters"},/turf/unsimulated/wall/fakeglass{dir = 8;icon_state = "fakewindows3";tag = "icon-fakewindows (WEST)"},/area/centcom/specops) +"rG" = (/obj/machinery/door/airlock/centcom{name = "Special Operations Command";opacity = 1;req_access_txt = "114"},/obj/machinery/door/poddoor{id_tag = "specopsoffice";name = "Super Privacy Shutters"},/turf/unsimulated/floor{icon_state = "vault";dir = 8},/area/centcom/specops) "rH" = (/obj/effect/landmark/start,/turf/unsimulated/floor,/area/start) -"rI" = (/obj/machinery/computer/security/telescreen{name = "Special Ops. Monitor"; desc = "Used for watching the Special Ops."; network = list("ERT")},/obj/structure/table/wood,/turf/unsimulated/floor{icon_state = "carpet"; dir = 2},/area/centcom/specops) -"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" = (/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" = (/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) -"st" = (/obj/structure/closet/secure_closet/personal,/obj/machinery/light/spot{tag = "icon-tube1 (EAST)"; icon_state = "tube1"; dir = 4},/turf/unsimulated/floor{icon_state = "carpet"; dir = 2},/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) +"st" = (/obj/structure/closet/secure_closet/personal,/obj/machinery/light/spot{tag = "icon-tube1 (EAST)";icon_state = "tube1";dir = 4},/turf/unsimulated/floor{icon_state = "carpet";dir = 2},/area/centcom/control) "su" = (/obj/effect/spawner/window/reinforced,/turf/unsimulated/floor{name = "plating"},/area/centcom/control) "sv" = (/obj/effect/spawner/window/reinforced,/turf/unsimulated/floor,/area/centcom/control) -"sw" = (/obj/structure/bed,/obj/item/bedsheet,/turf/unsimulated/floor{icon_state = "carpet"; dir = 2},/area/centcom/control) -"sx" = (/obj/machinery/door/airlock/centcom{name = "Living Quarters"; opacity = 1; req_access_txt = "102"},/turf/unsimulated/floor{icon_state = "bar"; dir = 2},/area/centcom/control) -"sy" = (/turf/unsimulated/floor{tag = "icon-redyellowfull"; icon_state = "redyellowfull"},/area/centcom/control) -"sz" = (/obj/machinery/atm{pixel_y = 24},/turf/unsimulated/floor{icon_state = "bar"; dir = 2},/area/centcom/control) -"sB" = (/obj/item/reagent_containers/food/condiment/peppermill{pixel_x = 2; pixel_y = 6},/obj/structure/table,/turf/unsimulated/floor{tag = "icon-redyellowfull"; icon_state = "redyellowfull"},/area/centcom/control) -"sC" = (/obj/item/reagent_containers/food/drinks/cans/cola,/obj/structure/table,/turf/unsimulated/floor{tag = "icon-redyellowfull"; icon_state = "redyellowfull"},/area/centcom/control) -"sE" = (/turf/unsimulated/floor{icon_state = "bar"; dir = 2},/area/centcom/control) -"sF" = (/obj/structure/closet/secure_closet/bar{req_access = null; req_access_txt = "102"},/turf/unsimulated/floor{icon_state = "cafeteria"; dir = 2},/area/centcom/control) -"sG" = (/obj/structure/reagent_dispensers/beerkeg,/turf/unsimulated/floor{icon_state = "cafeteria"; dir = 2},/area/centcom/control) -"sH" = (/obj/structure/reagent_dispensers/beerkeg,/obj/machinery/light/spot{tag = "icon-tube1 (NORTH)"; icon_state = "tube1"; dir = 1},/turf/unsimulated/floor{icon_state = "cafeteria"; dir = 2},/area/centcom/control) +"sx" = (/obj/machinery/door/airlock/centcom{name = "Living Quarters";opacity = 1;req_access_txt = "102"},/turf/unsimulated/floor{icon_state = "bar";dir = 2},/area/centcom/control) +"sy" = (/turf/unsimulated/floor{tag = "icon-redyellowfull";icon_state = "redyellowfull"},/area/centcom/control) +"sz" = (/obj/machinery/atm{pixel_y = 24},/turf/unsimulated/floor{icon_state = "bar";dir = 2},/area/centcom/control) +"sB" = (/obj/item/reagent_containers/food/condiment/peppermill{pixel_x = 2;pixel_y = 6},/obj/structure/table,/turf/unsimulated/floor{tag = "icon-redyellowfull";icon_state = "redyellowfull"},/area/centcom/control) +"sC" = (/obj/item/reagent_containers/food/drinks/cans/cola,/obj/structure/table,/turf/unsimulated/floor{tag = "icon-redyellowfull";icon_state = "redyellowfull"},/area/centcom/control) +"sE" = (/turf/unsimulated/floor{icon_state = "bar";dir = 2},/area/centcom/control) +"sF" = (/obj/structure/closet/secure_closet/bar{req_access = null;req_access_txt = "102"},/turf/unsimulated/floor{icon_state = "cafeteria";dir = 2},/area/centcom/control) +"sG" = (/obj/structure/reagent_dispensers/beerkeg,/turf/unsimulated/floor{icon_state = "cafeteria";dir = 2},/area/centcom/control) +"sH" = (/obj/structure/reagent_dispensers/beerkeg,/obj/machinery/light/spot{tag = "icon-tube1 (NORTH)";icon_state = "tube1";dir = 1},/turf/unsimulated/floor{icon_state = "cafeteria";dir = 2},/area/centcom/control) "sI" = (/obj/machinery/vending/boozeomat{req_access_txt = "102"},/turf/unsimulated/wall,/area/centcom/control) -"sJ" = (/obj/structure/kitchenspike,/turf/unsimulated/floor{icon_state = "freezerfloor"; dir = 2},/area/centcom/control) -"sK" = (/obj/machinery/light/spot{tag = "icon-tube1 (NORTH)"; icon_state = "tube1"; dir = 1},/turf/unsimulated/floor{icon_state = "freezerfloor"; dir = 2},/area/centcom/control) -"sL" = (/obj/machinery/gibber,/turf/unsimulated/floor{icon_state = "freezerfloor"; dir = 2},/area/centcom/control) -"sM" = (/obj/item/reagent_containers/food/drinks/cans/beer,/obj/structure/table,/turf/unsimulated/floor{tag = "icon-redyellowfull"; icon_state = "redyellowfull"},/area/centcom/control) -"sN" = (/obj/structure/table,/obj/machinery/juicer{pixel_y = 6},/turf/unsimulated/floor{tag = "icon-redyellowfull"; icon_state = "redyellowfull"},/area/centcom/control) -"sO" = (/obj/structure/piano,/turf/unsimulated/floor{tag = "icon-redyellowfull"; icon_state = "redyellowfull"},/area/centcom/control) -"sQ" = (/turf/unsimulated/floor{icon_state = "cafeteria"; dir = 2},/area/centcom/control) -"sR" = (/obj/structure/closet/secure_closet/freezer/meat{req_access_txt = "102"},/turf/unsimulated/floor{icon_state = "freezerfloor"; dir = 2},/area/centcom/control) -"sS" = (/turf/unsimulated/floor{icon_state = "freezerfloor"; dir = 2},/area/centcom/control) -"sT" = (/obj/machinery/chem_master/condimaster{name = "CondiMaster Neo"; pixel_x = -5},/turf/unsimulated/floor{icon_state = "freezerfloor"; dir = 2},/area/centcom/control) -"sU" = (/obj/structure/table,/obj/item/reagent_containers/food/drinks/shaker,/turf/unsimulated/floor{icon_state = "cafeteria"; dir = 2},/area/centcom/control) -"sV" = (/obj/structure/table,/turf/unsimulated/floor{icon_state = "cafeteria"; dir = 2},/area/centcom/control) -"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) +"sJ" = (/obj/structure/kitchenspike,/turf/unsimulated/floor{icon_state = "freezerfloor";dir = 2},/area/centcom/control) +"sK" = (/obj/machinery/light/spot{tag = "icon-tube1 (NORTH)";icon_state = "tube1";dir = 1},/turf/unsimulated/floor{icon_state = "freezerfloor";dir = 2},/area/centcom/control) +"sL" = (/obj/machinery/gibber,/turf/unsimulated/floor{icon_state = "freezerfloor";dir = 2},/area/centcom/control) +"sM" = (/obj/item/reagent_containers/food/drinks/cans/beer,/obj/structure/table,/turf/unsimulated/floor{tag = "icon-redyellowfull";icon_state = "redyellowfull"},/area/centcom/control) +"sN" = (/obj/structure/table,/obj/machinery/juicer{pixel_y = 6},/turf/unsimulated/floor{tag = "icon-redyellowfull";icon_state = "redyellowfull"},/area/centcom/control) +"sO" = (/obj/structure/piano,/turf/unsimulated/floor{tag = "icon-redyellowfull";icon_state = "redyellowfull"},/area/centcom/control) +"sQ" = (/turf/unsimulated/floor{icon_state = "cafeteria";dir = 2},/area/centcom/control) +"sR" = (/obj/structure/closet/secure_closet/freezer/meat{req_access_txt = "102"},/turf/unsimulated/floor{icon_state = "freezerfloor";dir = 2},/area/centcom/control) +"sS" = (/turf/unsimulated/floor{icon_state = "freezerfloor";dir = 2},/area/centcom/control) +"sT" = (/obj/machinery/chem_master/condimaster{name = "CondiMaster Neo";pixel_x = -5},/turf/unsimulated/floor{icon_state = "freezerfloor";dir = 2},/area/centcom/control) +"sU" = (/obj/structure/table,/obj/item/reagent_containers/food/drinks/shaker,/turf/unsimulated/floor{icon_state = "cafeteria";dir = 2},/area/centcom/control) +"sV" = (/obj/structure/table,/turf/unsimulated/floor{icon_state = "cafeteria";dir = 2},/area/centcom/control) +"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) -"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) -"tg" = (/obj/structure/table,/obj/machinery/light/spot{tag = "icon-tube1 (EAST)"; icon_state = "tube1"; dir = 4},/turf/unsimulated/floor{icon_state = "cafeteria"; dir = 2},/area/centcom/control) +"sZ" = (/obj/structure/table,/obj/machinery/processor{pixel_x = 0;pixel_y = 10},/turf/unsimulated/floor{icon_state = "cafeteria";dir = 2},/area/centcom/control) +"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) +"tg" = (/obj/structure/table,/obj/machinery/light/spot{tag = "icon-tube1 (EAST)";icon_state = "tube1";dir = 4},/turf/unsimulated/floor{icon_state = "cafeteria";dir = 2},/area/centcom/control) "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) -"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) -"tv" = (/obj/machinery/door/poddoor{id_tag = "ASSAULT2"; name = "Launch Bay #2"},/turf/unsimulated/floor{name = "plating"},/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) -"tB" = (/obj/structure/table,/turf/unsimulated/floor{dir = 9; icon_state = "carpetside"},/area/centcom/control) -"tC" = (/turf/unsimulated/floor{dir = 1; icon_state = "carpetside"},/area/centcom/control) -"tD" = (/obj/machinery/sleeper/upgraded,/obj/machinery/light/spot{tag = "icon-tube1 (EAST)"; icon_state = "tube1"; dir = 4},/turf/unsimulated/floor{dir = 5; icon_state = "carpetside"},/area/centcom/control) -"tE" = (/obj/structure/mirror{pixel_y = 28},/turf/unsimulated/floor{dir = 8; icon_state = "wood"},/area/centcom/control) -"tF" = (/turf/unsimulated/floor{dir = 8; icon_state = "wood"},/area/centcom/control) -"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) -"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) -"tQ" = (/turf/unsimulated/floor{icon_state = "green"; dir = 8},/area/centcom/control) +"tj" = (/obj/machinery/door/poddoor{id_tag = "ASSAULT3";name = "Launch Bay #3"},/turf/unsimulated/floor{name = "plating"},/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) +"tv" = (/obj/machinery/door/poddoor{id_tag = "ASSAULT2";name = "Launch Bay #2"},/turf/unsimulated/floor{name = "plating"},/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) +"tB" = (/obj/structure/table,/turf/unsimulated/floor{dir = 9;icon_state = "carpetside"},/area/centcom/control) +"tC" = (/turf/unsimulated/floor{dir = 1;icon_state = "carpetside"},/area/centcom/control) +"tD" = (/obj/machinery/sleeper/upgraded,/obj/machinery/light/spot{tag = "icon-tube1 (EAST)";icon_state = "tube1";dir = 4},/turf/unsimulated/floor{dir = 5;icon_state = "carpetside"},/area/centcom/control) +"tE" = (/obj/structure/mirror{pixel_y = 28},/turf/unsimulated/floor{dir = 8;icon_state = "wood"},/area/centcom/control) +"tF" = (/turf/unsimulated/floor{dir = 8;icon_state = "wood"},/area/centcom/control) +"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) +"tL" = (/turf/unsimulated/floor{dir = 2;icon_state = "carpetside"},/area/centcom/control) +"tM" = (/turf/unsimulated/floor{dir = 6;icon_state = "carpetside"},/area/centcom/control) +"tQ" = (/turf/unsimulated/floor{icon_state = "green";dir = 8},/area/centcom/control) "tR" = (/turf/unsimulated/floor{icon_state = "floor"},/area/centcom/control) -"tS" = (/turf/unsimulated/floor{icon_state = "greencorner"; dir = 4},/area/centcom/control) -"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) -"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) +"tS" = (/turf/unsimulated/floor{icon_state = "greencorner";dir = 4},/area/centcom/control) +"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) +"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) "ud" = (/turf/unsimulated/floor{icon_state = "green"},/area/centcom/control) -"ue" = (/turf/unsimulated/floor{icon_state = "greencorner"; dir = 8},/area/centcom/control) +"ue" = (/turf/unsimulated/floor{icon_state = "greencorner";dir = 8},/area/centcom/control) "uf" = (/obj/machinery/portable_atmospherics/canister/oxygen,/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/specops) "ug" = (/obj/machinery/portable_atmospherics/canister/air,/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/specops) "uh" = (/obj/structure/reagent_dispensers/water_cooler,/obj/structure/window/reinforced{dir = 8},/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/specops) -"ui" = (/obj/structure/window/reinforced{dir = 4},/obj/structure/table,/obj/item/storage/box/cups,/obj/machinery/camera{c_tag = "CentComm Special Ops. Ready Room North"; dir = 2; network = list("ERT","CentComm")},/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/specops) +"ui" = (/obj/structure/window/reinforced{dir = 4},/obj/structure/table,/obj/item/storage/box/cups,/obj/machinery/camera{c_tag = "CentComm Special Ops. Ready Room North";dir = 2;network = list("ERT","CentComm")},/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/specops) "uj" = (/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/specops) -"uk" = (/obj/effect/landmark{name = "Response Team"},/obj/effect/landmark{name = "Commando"},/turf/unsimulated/floor{icon_state = "vault"; dir = 1},/area/centcom/specops) -"ul" = (/obj/effect/landmark{name = "Response Team"},/obj/effect/landmark{name = "Commando"},/obj/machinery/camera{c_tag = "CentComm Special Ops. Starting Room"; dir = 2; network = list("ERT","CentComm")},/turf/unsimulated/floor{icon_state = "vault"; dir = 1},/area/centcom/specops) +"uk" = (/obj/effect/landmark{name = "Response Team"},/obj/effect/landmark{name = "Commando"},/turf/unsimulated/floor{icon_state = "vault";dir = 1},/area/centcom/specops) +"ul" = (/obj/effect/landmark{name = "Response Team"},/obj/effect/landmark{name = "Commando"},/obj/machinery/camera{c_tag = "CentComm Special Ops. Starting Room";dir = 2;network = list("ERT","CentComm")},/turf/unsimulated/floor{icon_state = "vault";dir = 1},/area/centcom/specops) "um" = (/obj/structure/table,/obj/machinery/recharger{pixel_y = 4},/obj/item/radio/intercom/specops{pixel_y = 25},/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/specops) -"un" = (/turf/unsimulated/wall/fakeglass{dir = 8; icon_state = "fakewindows3"; tag = "icon-fakewindows (WEST)"},/area/centcom/specops) -"uq" = (/obj/machinery/door/airlock/centcom{name = "Special Operations"; opacity = 1; req_access_txt = "109"},/turf/unsimulated/floor{icon_state = "vault"; dir = 8},/area/centcom/specops) -"ur" = (/turf/unsimulated/floor{icon_state = "vault"; dir = 8},/area/centcom/specops) -"us" = (/obj/structure/chair{dir = 1},/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/specops) +"un" = (/turf/unsimulated/wall/fakeglass{dir = 8;icon_state = "fakewindows3";tag = "icon-fakewindows (WEST)"},/area/centcom/specops) +"uq" = (/obj/machinery/door/airlock/centcom{name = "Special Operations";opacity = 1;req_access_txt = "109"},/turf/unsimulated/floor{icon_state = "vault";dir = 8},/area/centcom/specops) +"ur" = (/turf/unsimulated/floor{icon_state = "vault";dir = 8},/area/centcom/specops) "ut" = (/obj/machinery/computer/message_monitor,/turf/unsimulated/floor{icon_state = "floor"},/area/centcom/control) -"uu" = (/obj/structure/chair/office/dark{dir = 8},/turf/unsimulated/floor{icon_state = "floor"},/area/centcom/control) "uv" = (/turf/unsimulated/floor{icon_state = "gcircuit"},/area/centcom/control) "uw" = (/mob/living/silicon/decoy{name = "A.L.I.C.E."},/turf/unsimulated/floor{icon_state = "gcircuit"},/area/centcom/control) "ux" = (/obj/machinery/blackbox_recorder,/turf/unsimulated/floor{icon_state = "gcircuit"},/area/centcom/control) "uy" = (/obj/machinery/computer/card/centcom,/turf/unsimulated/floor{icon_state = "floor"},/area/centcom/control) "uz" = (/obj/machinery/computer/card,/turf/unsimulated/floor{icon_state = "floor"},/area/centcom/control) -"uA" = (/turf/unsimulated/wall/fakeglass{tag = "icon-fakewindows (WEST)"; icon_state = "fakewindows"; dir = 8},/area/centcom/specops) -"uB" = (/turf/unsimulated/wall/fakeglass{tag = "icon-fakewindows2 (WEST)"; icon_state = "fakewindows2"; dir = 8},/area/centcom/specops) -"uC" = (/turf/unsimulated/wall/fakeglass{tag = "icon-fakewindows (EAST)"; icon_state = "fakewindows"; dir = 4},/area/centcom/specops) -"uE" = (/turf/unsimulated/floor{icon_state = "greencorner"; dir = 1},/area/centcom/control) +"uA" = (/turf/unsimulated/wall/fakeglass{tag = "icon-fakewindows (WEST)";icon_state = "fakewindows";dir = 8},/area/centcom/specops) +"uB" = (/turf/unsimulated/wall/fakeglass{tag = "icon-fakewindows2 (WEST)";icon_state = "fakewindows2";dir = 8},/area/centcom/specops) +"uC" = (/turf/unsimulated/wall/fakeglass{tag = "icon-fakewindows (EAST)";icon_state = "fakewindows";dir = 4},/area/centcom/specops) +"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) -"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) -"uN" = (/obj/machinery/door/airlock/centcom{name = "Bridge"; opacity = 1; req_access_txt = "113"},/turf/unsimulated/floor{icon_state = "floor"},/area/centcom/control) +"uJ" = (/obj/machinery/door/poddoor{id_tag = "SPECOPS";name = "Ready Room"},/turf/unsimulated/floor{icon_state = "vault";dir = 8},/area/centcom/specops) +"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) "uQ" = (/obj/structure/table/reinforced,/obj/item/paper,/obj/item/pen,/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/specops) "uR" = (/obj/structure/table/reinforced,/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/specops) -"uS" = (/obj/machinery/camera{c_tag = "CentComm Special Ops. Ready Room East"; dir = 8; network = list("ERT","CentComm")},/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/specops) -"uT" = (/obj/effect/forcefield{desc = "You can't get in. Heh."; layer = 1; name = "Blocker"},/turf/unsimulated/wall/fakeglass{dir = 8; icon_state = "fakewindows3"; tag = "icon-fakewindows (WEST)"},/area/centcom/specops) +"uS" = (/obj/machinery/camera{c_tag = "CentComm Special Ops. Ready Room East";dir = 8;network = list("ERT","CentComm")},/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/specops) +"uT" = (/obj/effect/forcefield{desc = "You can't get in. Heh.";layer = 1;name = "Blocker"},/turf/unsimulated/wall/fakeglass{dir = 8;icon_state = "fakewindows3";tag = "icon-fakewindows (WEST)"},/area/centcom/specops) "uW" = (/obj/structure/urinal,/turf/unsimulated/wall,/area/centcom/specops) -"uX" = (/obj/structure/chair/comfy/black{dir = 4},/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/specops) "va" = (/obj/structure/table/reinforced,/obj/effect/landmark{name = "Commando_Manual"},/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/specops) -"vb" = (/obj/structure/chair/office/dark{dir = 8},/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/specops) -"vc" = (/obj/machinery/door/poddoor/shutters{dir = 8; id_tag = "specopsoffice"; name = "Privacy Shutters"},/turf/unsimulated/wall/fakeglass{dir = 1; icon_state = "fakewindows"; tag = "icon-fakewindows (WEST)"},/area/centcom/specops) +"vc" = (/obj/machinery/door/poddoor/shutters{dir = 8;id_tag = "specopsoffice";name = "Privacy Shutters"},/turf/unsimulated/wall/fakeglass{dir = 1;icon_state = "fakewindows";tag = "icon-fakewindows (WEST)"},/area/centcom/specops) "vd" = (/turf/unsimulated/floor{icon_state = "grimy"},/area/centcom/specops) "ve" = (/obj/machinery/photocopier,/turf/unsimulated/floor{icon_state = "grimy"},/area/centcom/specops) "vf" = (/obj/machinery/computer/secure_data,/turf/unsimulated/floor{icon_state = "floor"},/area/centcom/control) -"vg" = (/obj/structure/chair/office/dark,/turf/unsimulated/floor{icon_state = "floor"},/area/centcom/control) -"vh" = (/obj/structure/chair/office/dark{dir = 4},/turf/unsimulated/floor{icon_state = "floor"},/area/centcom/control) "vi" = (/obj/machinery/computer/med_data,/turf/unsimulated/floor{icon_state = "floor"},/area/centcom/control) -"vk" = (/turf/unsimulated/floor{icon_state = "freezerfloor"; dir = 2},/area/centcom/specops) -"vm" = (/obj/structure/table/reinforced,/obj/item/ashtray/glass{icon_state = "ashtray_half_gl"},/obj/item/cigbutt/cigarbutt{pixel_x = 3; pixel_y = 3},/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/specops) -"vn" = (/obj/machinery/door/poddoor/shutters{dir = 8; id_tag = "specopsoffice"; name = "Privacy Shutters"},/turf/unsimulated/wall/fakeglass{tag = "icon-fakewindows2 (NORTH)"; icon_state = "fakewindows2"; dir = 1},/area/centcom/specops) -"vo" = (/turf/unsimulated/floor{dir = 9; icon_state = "carpetside"},/area/centcom/specops) -"vp" = (/turf/unsimulated/floor{dir = 1; icon_state = "carpetside"},/area/centcom/specops) -"vq" = (/turf/unsimulated/floor{dir = 5; icon_state = "carpetside"},/area/centcom/specops) -"vr" = (/turf/unsimulated/floor{icon_state = "green"; dir = 9},/area/centcom/control) +"vk" = (/turf/unsimulated/floor{icon_state = "freezerfloor";dir = 2},/area/centcom/specops) +"vm" = (/obj/structure/table/reinforced,/obj/item/ashtray/glass{icon_state = "ashtray_half_gl"},/obj/item/cigbutt/cigarbutt{pixel_x = 3;pixel_y = 3},/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/specops) +"vn" = (/obj/machinery/door/poddoor/shutters{dir = 8;id_tag = "specopsoffice";name = "Privacy Shutters"},/turf/unsimulated/wall/fakeglass{tag = "icon-fakewindows2 (NORTH)";icon_state = "fakewindows2";dir = 1},/area/centcom/specops) +"vo" = (/turf/unsimulated/floor{dir = 9;icon_state = "carpetside"},/area/centcom/specops) +"vp" = (/turf/unsimulated/floor{dir = 1;icon_state = "carpetside"},/area/centcom/specops) +"vq" = (/turf/unsimulated/floor{dir = 5;icon_state = "carpetside"},/area/centcom/specops) +"vr" = (/turf/unsimulated/floor{icon_state = "green";dir = 9},/area/centcom/control) "vs" = (/obj/machinery/computer/security{network = list("SS13","Telecomms","Research Outpost","Mining Outpost","ERT","CentComm","Thunderdome")},/turf/unsimulated/floor{icon_state = "floor"},/area/centcom/control) "vt" = (/obj/machinery/computer/station_alert,/turf/unsimulated/floor{icon_state = "floor"},/area/centcom/control) "vu" = (/obj/machinery/computer/communications,/turf/unsimulated/floor{icon_state = "floor"},/area/centcom/control) "vv" = (/obj/machinery/computer/robotics,/turf/unsimulated/floor{icon_state = "floor"},/area/centcom/control) "vw" = (/obj/machinery/computer/crew,/turf/unsimulated/floor{icon_state = "floor"},/area/centcom/control) -"vx" = (/obj/machinery/door/airlock/centcom{name = "Bathroom"; opacity = 1; req_access_txt = "0"},/turf/unsimulated/floor{icon_state = "freezerfloor"; dir = 2},/area/centcom/specops) -"vy" = (/obj/structure/chair/office/dark{dir = 1},/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/specops) -"vz" = (/obj/machinery/door/poddoor/shutters{dir = 8; id_tag = "specopsoffice"; name = "Privacy Shutters"},/turf/unsimulated/wall/fakeglass,/area/centcom/specops) -"vF" = (/obj/machinery/door/airlock/centcom{name = "Telecommunications"; opacity = 1; req_access_txt = "107"},/turf/unsimulated/floor{icon_state = "floor"},/area/centcom/control) -"vI" = (/obj/machinery/camera{c_tag = "CentComm Special Ops. Ready Room South"; dir = 1; network = list("ERT","CentComm")},/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/specops) -"vJ" = (/obj/machinery/newscaster{layer = 3.3; pixel_x = 0; pixel_y = -27},/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/specops) +"vx" = (/obj/machinery/door/airlock/centcom{name = "Bathroom";opacity = 1;req_access_txt = "0"},/turf/unsimulated/floor{icon_state = "freezerfloor";dir = 2},/area/centcom/specops) +"vz" = (/obj/machinery/door/poddoor/shutters{dir = 8;id_tag = "specopsoffice";name = "Privacy Shutters"},/turf/unsimulated/wall/fakeglass,/area/centcom/specops) +"vF" = (/obj/machinery/door/airlock/centcom{name = "Telecommunications";opacity = 1;req_access_txt = "107"},/turf/unsimulated/floor{icon_state = "floor"},/area/centcom/control) +"vI" = (/obj/machinery/camera{c_tag = "CentComm Special Ops. Ready Room South";dir = 1;network = list("ERT","CentComm")},/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/specops) +"vJ" = (/obj/machinery/newscaster{layer = 3.3;pixel_x = 0;pixel_y = -27},/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/specops) "vL" = (/obj/item/radio/intercom/specops{pixel_y = -28},/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/specops) -"vP" = (/obj/structure/chair{dir = 1},/turf/unsimulated/floor{icon_state = "grimy"},/area/centcom/specops) -"vQ" = (/obj/machinery/telecomms/processor/preset_cent,/turf/unsimulated/floor{icon_state = "green"; dir = 8},/area/centcom/control) +"vQ" = (/obj/machinery/telecomms/processor/preset_cent,/turf/unsimulated/floor{icon_state = "green";dir = 8},/area/centcom/control) "vS" = (/obj/machinery/newscaster/security_unit{pixel_x = -32},/turf/unsimulated/floor{icon_state = "grimy"},/area/centcom/specops) -"vT" = (/turf/unsimulated/floor{dir = 10; icon_state = "carpetside"},/area/centcom/specops) -"vU" = (/turf/unsimulated/floor{dir = 2; icon_state = "carpetside"},/area/centcom/specops) -"vV" = (/turf/unsimulated/floor{dir = 6; icon_state = "carpetside"},/area/centcom/specops) -"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) +"vT" = (/turf/unsimulated/floor{dir = 10;icon_state = "carpetside"},/area/centcom/specops) +"vU" = (/turf/unsimulated/floor{dir = 2;icon_state = "carpetside"},/area/centcom/specops) +"vV" = (/turf/unsimulated/floor{dir = 6;icon_state = "carpetside"},/area/centcom/specops) +"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) "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) -"wi" = (/turf/unsimulated/wall{icon = 'icons/obj/library.dmi'; icon_state = "book-5"; name = "bookcase (Tactics)"},/area/centcom/specops) -"wj" = (/turf/unsimulated/wall{icon = 'icons/obj/library.dmi'; icon_state = "book-5"; name = "bookcase (Reports)"},/area/centcom/specops) -"wk" = (/obj/machinery/telecomms/receiver/preset_cent,/turf/unsimulated/floor{icon_state = "green"; dir = 10},/area/centcom/control) -"wl" = (/obj/machinery/telecomms/broadcaster/preset_cent,/turf/unsimulated/floor{icon_state = "green"; dir = 6},/area/centcom/control) -"wm" = (/turf/unsimulated/floor{icon_state = "green"; dir = 10},/area/centcom/control) -"wn" = (/turf/unsimulated/floor{icon_state = "green"; dir = 6},/area/centcom/control) +"wi" = (/turf/unsimulated/wall{icon = 'icons/obj/library.dmi';icon_state = "book-5";name = "bookcase (Tactics)"},/area/centcom/specops) +"wj" = (/turf/unsimulated/wall{icon = 'icons/obj/library.dmi';icon_state = "book-5";name = "bookcase (Reports)"},/area/centcom/specops) +"wk" = (/obj/machinery/telecomms/receiver/preset_cent,/turf/unsimulated/floor{icon_state = "green";dir = 10},/area/centcom/control) +"wl" = (/obj/machinery/telecomms/broadcaster/preset_cent,/turf/unsimulated/floor{icon_state = "green";dir = 6},/area/centcom/control) +"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) -"wu" = (/obj/machinery/door/airlock/centcom{name = "General Access"; opacity = 1; req_access_txt = "101"},/turf/unsimulated/floor{icon_state = "floor"},/area/centcom/control) +"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) -"wE" = (/obj/machinery/door/airlock/centcom{name = "Unit 4"; opacity = 1; req_access_txt = "0"},/turf/unsimulated/floor{icon_state = "freezerfloor"; dir = 2},/area/centcom/bathroom) -"wF" = (/obj/structure/sink{pixel_y = 15},/obj/structure/mirror{pixel_y = 32},/turf/unsimulated/floor{icon_state = "freezerfloor"; dir = 2},/area/centcom/bathroom) -"wG" = (/obj/structure/mirror{pixel_y = 32},/obj/structure/sink{pixel_y = 15},/turf/unsimulated/floor{icon_state = "freezerfloor"; dir = 2},/area/centcom/bathroom) -"wH" = (/obj/machinery/shower{dir = 4; icon_state = "shower"; pixel_x = 5; tag = "icon-shower (EAST)"},/obj/structure/curtain/open/shower/centcom,/turf/unsimulated/floor{icon_state = "freezerfloor"; dir = 2},/area/centcom/bathroom) -"wI" = (/turf/unsimulated/floor{icon_state = "freezerfloor"; dir = 2},/area/centcom/bathroom) -"wJ" = (/obj/machinery/shower{dir = 8; icon_state = "shower"; pixel_x = -5; tag = "icon-shower (WEST)"},/obj/structure/curtain/open/shower/centcom,/turf/unsimulated/floor{icon_state = "freezerfloor"; dir = 2},/area/centcom/bathroom) +"wD" = (/obj/structure/toilet{dir = 4},/turf/unsimulated/floor{icon_state = "freezerfloor";dir = 2},/area/centcom/bathroom) +"wE" = (/obj/machinery/door/airlock/centcom{name = "Unit 4";opacity = 1;req_access_txt = "0"},/turf/unsimulated/floor{icon_state = "freezerfloor";dir = 2},/area/centcom/bathroom) +"wF" = (/obj/structure/sink{pixel_y = 15},/obj/structure/mirror{pixel_y = 32},/turf/unsimulated/floor{icon_state = "freezerfloor";dir = 2},/area/centcom/bathroom) +"wG" = (/obj/structure/mirror{pixel_y = 32},/obj/structure/sink{pixel_y = 15},/turf/unsimulated/floor{icon_state = "freezerfloor";dir = 2},/area/centcom/bathroom) +"wH" = (/obj/machinery/shower{dir = 4;icon_state = "shower";pixel_x = 5;tag = "icon-shower (EAST)"},/obj/structure/curtain/open/shower/centcom,/turf/unsimulated/floor{icon_state = "freezerfloor";dir = 2},/area/centcom/bathroom) +"wI" = (/turf/unsimulated/floor{icon_state = "freezerfloor";dir = 2},/area/centcom/bathroom) +"wJ" = (/obj/machinery/shower{dir = 8;icon_state = "shower";pixel_x = -5;tag = "icon-shower (WEST)"},/obj/structure/curtain/open/shower/centcom,/turf/unsimulated/floor{icon_state = "freezerfloor";dir = 2},/area/centcom/bathroom) "wK" = (/turf/unsimulated/wall,/area/centcom/evac) -"wL" = (/turf/unsimulated/floor{icon_state = "green"; dir = 9},/area/centcom/evac) -"wM" = (/turf/unsimulated/floor{icon_state = "greencorner"; dir = 1},/area/centcom/evac) +"wL" = (/turf/unsimulated/floor{icon_state = "green";dir = 9},/area/centcom/evac) +"wM" = (/turf/unsimulated/floor{icon_state = "greencorner";dir = 1},/area/centcom/evac) "wN" = (/turf/unsimulated/floor{icon_state = "floor"},/area/centcom/evac) -"wO" = (/turf/unsimulated/floor{icon_state = "greencorner"; dir = 4},/area/centcom/evac) -"wP" = (/turf/unsimulated/floor{icon_state = "green"; dir = 5},/area/centcom/evac) -"xc" = (/obj/machinery/door/poddoor{density = 0; icon_state = "open"; id_tag = "CentComPort"; name = "Security Doors"; opacity = 0},/turf/unsimulated/floor{icon_state = "green"; dir = 8},/area/centcom/evac) +"wO" = (/turf/unsimulated/floor{icon_state = "greencorner";dir = 4},/area/centcom/evac) +"wP" = (/turf/unsimulated/floor{icon_state = "green";dir = 5},/area/centcom/evac) +"xc" = (/obj/machinery/door/poddoor{density = 0;icon_state = "open";id_tag = "CentComPort";name = "Security Doors";opacity = 0},/turf/unsimulated/floor{icon_state = "green";dir = 8},/area/centcom/evac) "xd" = (/obj/effect/spawner/window/reinforced,/turf/unsimulated/floor,/area/centcom/evac) -"xe" = (/obj/structure/table,/obj/machinery/door_control{desc = "A remote control switch for port-side blast doors."; icon_state = "doorctrl0"; id = "CentComPort"; name = "Security Doors"; pixel_y = -4; req_access_txt = "104"},/obj/machinery/door/window/southleft{dir = 1; name = "security checkpoint"; req_access_txt = "104"},/turf/unsimulated/floor{icon_state = "floor"},/area/centcom/evac) -"xf" = (/turf/unsimulated/floor{icon_state = "green"; dir = 4},/area/centcom/evac) -"xl" = (/obj/machinery/door/airlock/centcom{name = "Unit 3"; opacity = 1; req_access_txt = "0"},/turf/unsimulated/floor{icon_state = "freezerfloor"; dir = 2},/area/centcom/bathroom) -"xm" = (/turf/unsimulated/floor{icon_state = "green"; dir = 8},/area/centcom/evac) -"xn" = (/obj/machinery/door/window/westright{name = "security checkpoint"; req_access_txt = "104"},/obj/structure/table,/turf/unsimulated/floor{icon_state = "floor"},/area/centcom/evac) -"xo" = (/obj/machinery/door/window/eastleft{name = "security checkpoint"; req_access_txt = "104"},/turf/unsimulated/floor{icon_state = "floor"},/area/centcom/evac) -"xx" = (/obj/structure/sink{dir = 4; icon_state = "sink"; pixel_x = 11; pixel_y = 0},/obj/structure/mirror{pixel_x = 32},/turf/unsimulated/floor{icon_state = "freezerfloor"; dir = 2},/area/centcom/bathroom) -"xy" = (/turf/unsimulated/floor{icon_state = "green"; dir = 10},/area/centcom/evac) +"xe" = (/obj/structure/table,/obj/machinery/door_control{desc = "A remote control switch for port-side blast doors.";icon_state = "doorctrl0";id = "CentComPort";name = "Security Doors";pixel_y = -4;req_access_txt = "104"},/obj/machinery/door/window/southleft{dir = 1;name = "security checkpoint";req_access_txt = "104"},/turf/unsimulated/floor{icon_state = "floor"},/area/centcom/evac) +"xf" = (/turf/unsimulated/floor{icon_state = "green";dir = 4},/area/centcom/evac) +"xl" = (/obj/machinery/door/airlock/centcom{name = "Unit 3";opacity = 1;req_access_txt = "0"},/turf/unsimulated/floor{icon_state = "freezerfloor";dir = 2},/area/centcom/bathroom) +"xm" = (/turf/unsimulated/floor{icon_state = "green";dir = 8},/area/centcom/evac) +"xn" = (/obj/machinery/door/window/westright{name = "security checkpoint";req_access_txt = "104"},/obj/structure/table,/turf/unsimulated/floor{icon_state = "floor"},/area/centcom/evac) +"xo" = (/obj/machinery/door/window/eastleft{name = "security checkpoint";req_access_txt = "104"},/turf/unsimulated/floor{icon_state = "floor"},/area/centcom/evac) +"xx" = (/obj/structure/sink{dir = 4;icon_state = "sink";pixel_x = 11;pixel_y = 0},/obj/structure/mirror{pixel_x = 32},/turf/unsimulated/floor{icon_state = "freezerfloor";dir = 2},/area/centcom/bathroom) +"xy" = (/turf/unsimulated/floor{icon_state = "green";dir = 10},/area/centcom/evac) "xz" = (/obj/effect/spawner/window/reinforced,/turf/unsimulated/floor{name = "plating"},/area/centcom/evac) -"xA" = (/obj/structure/chair,/turf/unsimulated/floor{icon_state = "floor"},/area/centcom/evac) -"xI" = (/obj/machinery/door/airlock/centcom{name = "Unit 2"; opacity = 1; req_access_txt = "0"},/turf/unsimulated/floor{icon_state = "freezerfloor"; dir = 2},/area/centcom/bathroom) -"xJ" = (/obj/machinery/door/poddoor{id_tag = "CentComPort"; name = "Security Doors"},/turf/unsimulated/floor{icon_state = "green"; dir = 8},/area/centcom/evac) -"xK" = (/obj/structure/table,/obj/machinery/door/window/southleft{name = "security checkpoint"; req_access_txt = "104"},/turf/unsimulated/floor{icon_state = "floor"},/area/centcom/evac) -"xR" = (/obj/machinery/door/airlock/centcom{name = "Bathroom"; opacity = 1; req_access_txt = "0"},/turf/unsimulated/floor{icon_state = "freezerfloor"; dir = 2},/area/centcom/evac) -"xS" = (/turf/unsimulated/floor{icon_state = "green"; dir = 1},/area/centcom/evac) -"xW" = (/obj/machinery/door/airlock/centcom{name = "Unit 1"; opacity = 1; req_access_txt = "0"},/turf/unsimulated/floor{icon_state = "freezerfloor"; dir = 2},/area/centcom/bathroom) -"xX" = (/obj/structure/chair{dir = 8},/turf/unsimulated/floor{icon_state = "floor"},/area/centcom/evac) -"xY" = (/obj/structure/chair{dir = 4},/turf/unsimulated/floor{icon_state = "floor"},/area/centcom/evac) +"xI" = (/obj/machinery/door/airlock/centcom{name = "Unit 2";opacity = 1;req_access_txt = "0"},/turf/unsimulated/floor{icon_state = "freezerfloor";dir = 2},/area/centcom/bathroom) +"xJ" = (/obj/machinery/door/poddoor{id_tag = "CentComPort";name = "Security Doors"},/turf/unsimulated/floor{icon_state = "green";dir = 8},/area/centcom/evac) +"xK" = (/obj/structure/table,/obj/machinery/door/window/southleft{name = "security checkpoint";req_access_txt = "104"},/turf/unsimulated/floor{icon_state = "floor"},/area/centcom/evac) +"xR" = (/obj/machinery/door/airlock/centcom{name = "Bathroom";opacity = 1;req_access_txt = "0"},/turf/unsimulated/floor{icon_state = "freezerfloor";dir = 2},/area/centcom/evac) +"xS" = (/turf/unsimulated/floor{icon_state = "green";dir = 1},/area/centcom/evac) +"xW" = (/obj/machinery/door/airlock/centcom{name = "Unit 1";opacity = 1;req_access_txt = "0"},/turf/unsimulated/floor{icon_state = "freezerfloor";dir = 2},/area/centcom/bathroom) "xZ" = (/obj/structure/table,/turf/unsimulated/floor{icon_state = "floor"},/area/centcom/evac) -"ya" = (/turf/simulated/shuttle/wall{tag = "icon-swall_s6"; icon_state = "swall_s6"; dir = 2},/area/centcom/evac) -"yb" = (/obj/structure/shuttle/engine/propulsion{tag = "icon-propulsion_r (NORTH)"; icon_state = "propulsion_r"; dir = 1},/turf/space,/area/centcom/evac) -"yc" = (/obj/structure/shuttle/engine/propulsion{tag = "icon-propulsion (NORTH)"; icon_state = "propulsion"; dir = 1},/turf/space,/area/centcom/evac) -"yd" = (/obj/structure/shuttle/engine/propulsion{tag = "icon-propulsion_l (NORTH)"; icon_state = "propulsion_l"; dir = 1},/turf/space,/area/centcom/evac) -"ye" = (/turf/simulated/shuttle/wall{tag = "icon-swall_s10"; icon_state = "swall_s10"; dir = 2},/area/centcom/evac) +"ya" = (/turf/simulated/shuttle/wall{tag = "icon-swall_s6";icon_state = "swall_s6";dir = 2},/area/centcom/evac) +"yb" = (/obj/structure/shuttle/engine/propulsion{tag = "icon-propulsion_r (NORTH)";icon_state = "propulsion_r";dir = 1},/turf/space,/area/centcom/evac) +"yc" = (/obj/structure/shuttle/engine/propulsion{tag = "icon-propulsion (NORTH)";icon_state = "propulsion";dir = 1},/turf/space,/area/centcom/evac) +"yd" = (/obj/structure/shuttle/engine/propulsion{tag = "icon-propulsion_l (NORTH)";icon_state = "propulsion_l";dir = 1},/turf/space,/area/centcom/evac) +"ye" = (/turf/simulated/shuttle/wall{tag = "icon-swall_s10";icon_state = "swall_s10";dir = 2},/area/centcom/evac) "yf" = (/obj/effect/spawner/window/reinforced,/turf/unsimulated/floor,/area/centcom/bathroom) "yg" = (/obj/effect/decal/warning_stripes/southeastcorner,/turf/unsimulated/floor{icon_state = "floor"},/area/centcom/evac) -"yi" = (/turf/simulated/shuttle/wall{tag = "icon-swall3"; icon_state = "swall3"; dir = 2},/area/centcom/evac) -"yj" = (/obj/structure/window/reinforced,/obj/structure/shuttle/engine/heater{tag = "icon-heater (NORTH)"; icon_state = "heater"; dir = 1},/turf/simulated/floor/plating/airless,/area/centcom/evac) -"yk" = (/turf/simulated/shuttle/wall{tag = "icon-swall7"; icon_state = "swall7"; dir = 2},/area/centcom/evac) -"yl" = (/turf/simulated/shuttle/wall{tag = "icon-swall12"; icon_state = "swall12"; dir = 2},/area/centcom/evac) -"yo" = (/turf/simulated/shuttle/wall{tag = "icon-swall11"; icon_state = "swall11"; dir = 2},/area/centcom/evac) -"yp" = (/obj/structure/sign/securearea{desc = "A warning sign which reads 'EXTERNAL AIRLOCK'"; icon_state = "space"; layer = 4; name = "EXTERNAL AIRLOCK"; pixel_x = 0},/turf/unsimulated/wall,/area/centcom/evac) +"yi" = (/turf/simulated/shuttle/wall{tag = "icon-swall3";icon_state = "swall3";dir = 2},/area/centcom/evac) +"yj" = (/obj/structure/window/reinforced,/obj/structure/shuttle/engine/heater{tag = "icon-heater (NORTH)";icon_state = "heater";dir = 1},/turf/simulated/floor/plating/airless,/area/centcom/evac) +"yk" = (/turf/simulated/shuttle/wall{tag = "icon-swall7";icon_state = "swall7";dir = 2},/area/centcom/evac) +"yl" = (/turf/simulated/shuttle/wall{tag = "icon-swall12";icon_state = "swall12";dir = 2},/area/centcom/evac) +"yo" = (/turf/simulated/shuttle/wall{tag = "icon-swall11";icon_state = "swall11";dir = 2},/area/centcom/evac) +"yp" = (/obj/structure/sign/securearea{desc = "A warning sign which reads 'EXTERNAL AIRLOCK'";icon_state = "space";layer = 4;name = "EXTERNAL AIRLOCK";pixel_x = 0},/turf/unsimulated/wall,/area/centcom/evac) "yq" = (/obj/item/flag/nt,/turf/unsimulated/floor{icon_state = "floor"},/area/centcom/evac) "yr" = (/obj/effect/decal/warning_stripes/east,/turf/unsimulated/floor{icon_state = "floor"},/area/centcom/evac) "yt" = (/turf/unsimulated/floor{name = "plating"},/area/centcom/evac) "yv" = (/turf/simulated/shuttle/plating,/area/centcom/evac) -"yw" = (/turf/simulated/shuttle/plating,/turf/simulated/shuttle/wall{tag = "icon-swall_f6"; icon_state = "swall_f6"; dir = 2},/area/centcom/evac) -"yx" = (/turf/simulated/shuttle/floor,/turf/simulated/shuttle/wall{tag = "icon-swall_f9"; icon_state = "swall_f9"; dir = 2},/area/centcom/evac) +"yw" = (/turf/simulated/shuttle/plating,/turf/simulated/shuttle/wall{tag = "icon-swall_f6";icon_state = "swall_f6";dir = 2},/area/centcom/evac) +"yx" = (/turf/simulated/shuttle/floor,/turf/simulated/shuttle/wall{tag = "icon-swall_f9";icon_state = "swall_f9";dir = 2},/area/centcom/evac) "yy" = (/obj/structure/closet/emcloset,/turf/simulated/shuttle/floor,/area/centcom/evac) -"yA" = (/obj/structure/table,/obj/item/storage/firstaid/toxin{pixel_x = -2; pixel_y = 4},/obj/item/storage/firstaid/toxin,/turf/simulated/shuttle/floor,/area/centcom/evac) -"yB" = (/obj/structure/table,/obj/item/storage/firstaid/fire,/obj/item/storage/firstaid/fire{pixel_x = -2; pixel_y = 4},/turf/simulated/shuttle/floor,/area/centcom/evac) -"yC" = (/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/centcom/evac) -"yE" = (/turf/simulated/shuttle/floor,/turf/simulated/shuttle/wall{tag = "icon-swall_f5"; icon_state = "swall_f5"; dir = 2},/area/centcom/evac) -"yF" = (/turf/simulated/shuttle/plating,/turf/simulated/shuttle/wall{dir = 3; icon_state = "swall_f10"; layer = 2; tag = "icon-swall_f10"},/area/centcom/evac) +"yA" = (/obj/structure/table,/obj/item/storage/firstaid/toxin{pixel_x = -2;pixel_y = 4},/obj/item/storage/firstaid/toxin,/turf/simulated/shuttle/floor,/area/centcom/evac) +"yB" = (/obj/structure/table,/obj/item/storage/firstaid/fire,/obj/item/storage/firstaid/fire{pixel_x = -2;pixel_y = 4},/turf/simulated/shuttle/floor,/area/centcom/evac) +"yC" = (/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/centcom/evac) +"yE" = (/turf/simulated/shuttle/floor,/turf/simulated/shuttle/wall{tag = "icon-swall_f5";icon_state = "swall_f5";dir = 2},/area/centcom/evac) +"yF" = (/turf/simulated/shuttle/plating,/turf/simulated/shuttle/wall{dir = 3;icon_state = "swall_f10";layer = 2;tag = "icon-swall_f10"},/area/centcom/evac) "yG" = (/obj/machinery/door/airlock/external{name = "Arrival Airlock"},/turf/unsimulated/floor{name = "plating"},/area/centcom/evac) "yH" = (/obj/effect/decal/warning_stripes/northeastcorner,/turf/unsimulated/floor{icon_state = "floor"},/area/centcom/evac) -"yK" = (/turf/simulated/shuttle/wall{tag = "icon-swall1"; icon_state = "swall1"; dir = 2},/area/centcom/evac) -"yL" = (/obj/machinery/vending/wallmed1{name = "Emergency NanoMed"; pixel_x = -30; pixel_y = 0; req_access_txt = "0"},/turf/simulated/shuttle/floor,/area/centcom/evac) +"yK" = (/turf/simulated/shuttle/wall{tag = "icon-swall1";icon_state = "swall1";dir = 2},/area/centcom/evac) +"yL" = (/obj/machinery/vending/wallmed1{name = "Emergency NanoMed";pixel_x = -30;pixel_y = 0;req_access_txt = "0"},/turf/simulated/shuttle/floor,/area/centcom/evac) "yM" = (/turf/simulated/shuttle/floor,/area/centcom/evac) -"yN" = (/turf/simulated/shuttle/floor{tag = "icon-floor2"; icon_state = "floor2"},/area/centcom/evac) -"yO" = (/obj/structure/chair/stool,/turf/simulated/shuttle/floor,/area/centcom/evac) -"yP" = (/obj/machinery/vending/wallmed1{name = "Emergency NanoMed"; pixel_x = 30; pixel_y = 0; req_access_txt = "0"},/turf/simulated/shuttle/floor,/area/centcom/evac) +"yN" = (/turf/simulated/shuttle/floor{tag = "icon-floor2";icon_state = "floor2"},/area/centcom/evac) +"yP" = (/obj/machinery/vending/wallmed1{name = "Emergency NanoMed";pixel_x = 30;pixel_y = 0;req_access_txt = "0"},/turf/simulated/shuttle/floor,/area/centcom/evac) "yQ" = (/turf/unsimulated/floor{icon_state = "green"},/area/centcom/evac) -"yR" = (/turf/unsimulated/floor{icon_state = "greencorner"; dir = 8},/area/centcom/evac) -"yS" = (/turf/simulated/shuttle/wall{tag = "icon-swall_s5"; icon_state = "swall_s5"; dir = 2},/area/centcom/evac) +"yR" = (/turf/unsimulated/floor{icon_state = "greencorner";dir = 8},/area/centcom/evac) +"yS" = (/turf/simulated/shuttle/wall{tag = "icon-swall_s5";icon_state = "swall_s5";dir = 2},/area/centcom/evac) "yT" = (/obj/machinery/door/airlock/maintenance_hatch{req_access_txt = "106"},/turf/simulated/shuttle/plating,/area/centcom/evac) -"yU" = (/turf/simulated/shuttle/wall{tag = "icon-swall_s9"; icon_state = "swall_s9"; dir = 2},/area/centcom/evac) +"yU" = (/turf/simulated/shuttle/wall{tag = "icon-swall_s9";icon_state = "swall_s9";dir = 2},/area/centcom/evac) "yW" = (/obj/structure/table/reinforced,/obj/item/paper_bin,/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/centcom/evac) "yX" = (/obj/structure/table/reinforced,/obj/machinery/recharger{pixel_y = 0},/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/centcom/evac) "yY" = (/obj/structure/table/reinforced,/obj/item/pen,/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/centcom/evac) "yZ" = (/obj/structure/table/reinforced,/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/centcom/evac) -"za" = (/obj/structure/chair{dir = 8},/turf/simulated/shuttle/floor,/area/centcom/evac) -"zb" = (/obj/structure/chair{dir = 4; name = "Defense"},/turf/simulated/shuttle/floor,/area/centcom/evac) "zc" = (/obj/machinery/computer/arcade,/turf/simulated/shuttle/floor,/area/centcom/evac) -"zd" = (/obj/machinery/vending/boozeomat,/turf/unsimulated/floor{dir = 8; icon_state = "wood"},/area/centcom/evac) -"ze" = (/turf/unsimulated/floor{dir = 8; icon_state = "wood"},/area/centcom/evac) -"zf" = (/obj/structure/table,/obj/item/reagent_containers/food/drinks/cans/cola,/turf/unsimulated/floor{dir = 8; icon_state = "wood"},/area/centcom/evac) +"zd" = (/obj/machinery/vending/boozeomat,/turf/unsimulated/floor{dir = 8;icon_state = "wood"},/area/centcom/evac) +"ze" = (/turf/unsimulated/floor{dir = 8;icon_state = "wood"},/area/centcom/evac) +"zf" = (/obj/structure/table,/obj/item/reagent_containers/food/drinks/cans/cola,/turf/unsimulated/floor{dir = 8;icon_state = "wood"},/area/centcom/evac) "zh" = (/obj/machinery/computer/card,/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/centcom/evac) -"zi" = (/obj/structure/chair{dir = 1},/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/centcom/evac) -"zj" = (/obj/structure/chair{dir = 4},/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/centcom/evac) "zk" = (/obj/structure/table/reinforced,/obj/item/clipboard,/obj/item/stamp/granted,/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/centcom/evac) -"zl" = (/obj/structure/closet/secure_closet/bar{req_access = null; req_access_txt = "0"},/turf/unsimulated/floor{dir = 8; icon_state = "wood"},/area/centcom/evac) -"zm" = (/obj/structure/table,/obj/item/lighter/zippo,/turf/unsimulated/floor{dir = 8; icon_state = "wood"},/area/centcom/evac) -"zn" = (/obj/machinery/door/airlock/centcom{name = "Rest Area"; opacity = 1; req_access_txt = "0"},/turf/unsimulated/floor{dir = 8; icon_state = "wood"},/area/centcom/evac) -"zq" = (/obj/machinery/computer/secure_data,/obj/machinery/light/spot{tag = "icon-tube1 (WEST)"; icon_state = "tube1"; dir = 8},/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/centcom/evac) +"zl" = (/obj/structure/closet/secure_closet/bar{req_access = null;req_access_txt = "0"},/turf/unsimulated/floor{dir = 8;icon_state = "wood"},/area/centcom/evac) +"zm" = (/obj/structure/table,/obj/item/lighter/zippo,/turf/unsimulated/floor{dir = 8;icon_state = "wood"},/area/centcom/evac) +"zn" = (/obj/machinery/door/airlock/centcom{name = "Rest Area";opacity = 1;req_access_txt = "0"},/turf/unsimulated/floor{dir = 8;icon_state = "wood"},/area/centcom/evac) +"zq" = (/obj/machinery/computer/secure_data,/obj/machinery/light/spot{tag = "icon-tube1 (WEST)";icon_state = "tube1";dir = 8},/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/centcom/evac) "zr" = (/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/centcom/evac) -"zt" = (/obj/structure/reagent_dispensers/beerkeg,/turf/unsimulated/floor{dir = 8; icon_state = "wood"},/area/centcom/evac) -"zu" = (/obj/structure/table,/obj/item/reagent_containers/food/drinks/shaker,/turf/unsimulated/floor{dir = 8; icon_state = "wood"},/area/centcom/evac) -"zv" = (/turf/unsimulated/floor{icon_state = "green"; dir = 6},/area/centcom/evac) +"zt" = (/obj/structure/reagent_dispensers/beerkeg,/turf/unsimulated/floor{dir = 8;icon_state = "wood"},/area/centcom/evac) +"zu" = (/obj/structure/table,/obj/item/reagent_containers/food/drinks/shaker,/turf/unsimulated/floor{dir = 8;icon_state = "wood"},/area/centcom/evac) +"zv" = (/turf/unsimulated/floor{icon_state = "green";dir = 6},/area/centcom/evac) "zx" = (/obj/structure/table,/obj/item/storage/box/handcuffs,/obj/item/flash,/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/centcom/evac) -"zy" = (/obj/machinery/door/window/northright{base_state = "right"; dir = 4; icon_state = "right"; name = "Security Desk"; req_access_txt = "104"},/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/centcom/evac) -"zB" = (/obj/machinery/door/airlock/centcom{name = "Auxillary Shuttles"; opacity = 1; req_access_txt = "106"},/turf/unsimulated/floor{icon_state = "floor"},/area/centcom/evac) +"zy" = (/obj/machinery/door/window/northright{base_state = "right";dir = 4;icon_state = "right";name = "Security Desk";req_access_txt = "104"},/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/centcom/evac) +"zB" = (/obj/machinery/door/airlock/centcom{name = "Auxillary Shuttles";opacity = 1;req_access_txt = "106"},/turf/unsimulated/floor{icon_state = "floor"},/area/centcom/evac) "zH" = (/obj/machinery/vending/cola,/turf/simulated/shuttle/floor,/area/centcom/evac) "zO" = (/obj/structure/closet/secure_closet/personal/patient,/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/centcom/evac) -"zP" = (/obj/item/storage/firstaid/regular{pixel_x = 2; pixel_y = 6},/obj/item/storage/firstaid/regular{pixel_x = -2; pixel_y = 4},/obj/structure/table/reinforced,/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/centcom/evac) +"zP" = (/obj/item/storage/firstaid/regular{pixel_x = 2;pixel_y = 6},/obj/item/storage/firstaid/regular{pixel_x = -2;pixel_y = 4},/obj/structure/table/reinforced,/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/centcom/evac) "zQ" = (/obj/structure/grille,/obj/structure/window/full/shuttle{icon_state = "16"},/turf/simulated/floor/plating,/area/centcom/evac) "zR" = (/obj/machinery/vending/coffee,/turf/simulated/shuttle/floor,/area/centcom/evac) "zV" = (/obj/structure/grille,/obj/structure/window/full/shuttle,/turf/simulated/floor/plating,/area/centcom/evac) "zW" = (/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/centcom/evac) "zX" = (/obj/structure/grille,/obj/structure/window/full/shuttle{icon_state = "15"},/turf/simulated/floor/plating,/area/centcom/evac) -"Al" = (/obj/machinery/door/airlock/hatch{name = "Infirmary"; req_access_txt = "0"},/turf/simulated/shuttle/floor{tag = "icon-floor2"; icon_state = "floor2"},/area/centcom/evac) +"Al" = (/obj/machinery/door/airlock/hatch{name = "Infirmary";req_access_txt = "0"},/turf/simulated/shuttle/floor{tag = "icon-floor2";icon_state = "floor2"},/area/centcom/evac) "Aw" = (/turf/unsimulated/wall,/area/centcom) -"AD" = (/obj/machinery/vending/wallmed1{name = "Emergency NanoMed"; pixel_x = -30; pixel_y = 0; req_access_txt = "0"},/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/centcom/evac) +"AD" = (/obj/machinery/vending/wallmed1{name = "Emergency NanoMed";pixel_x = -30;pixel_y = 0;req_access_txt = "0"},/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/centcom/evac) "AM" = (/obj/structure/table,/turf/simulated/shuttle/floor,/area/centcom/evac) "AN" = (/obj/structure/table,/obj/item/hand_labeler,/turf/simulated/shuttle/floor,/area/centcom/evac) -"AO" = (/obj/machinery/vending/wallmed1{name = "Emergency NanoMed"; pixel_x = 30; pixel_y = 0; req_access_txt = "0"},/obj/machinery/vending/snack,/turf/simulated/shuttle/floor,/area/centcom/evac) -"AX" = (/turf/simulated/shuttle/wall{tag = "icon-swall14"; icon_state = "swall14"; dir = 2},/area/centcom/evac) -"AY" = (/obj/machinery/door/airlock/hatch{name = "Cockpit"; req_access_txt = "106"},/turf/simulated/shuttle/floor{tag = "icon-floor2"; icon_state = "floor2"},/area/centcom/evac) +"AO" = (/obj/machinery/vending/wallmed1{name = "Emergency NanoMed";pixel_x = 30;pixel_y = 0;req_access_txt = "0"},/obj/machinery/vending/snack,/turf/simulated/shuttle/floor,/area/centcom/evac) +"AX" = (/turf/simulated/shuttle/wall{tag = "icon-swall14";icon_state = "swall14";dir = 2},/area/centcom/evac) +"AY" = (/obj/machinery/door/airlock/hatch{name = "Cockpit";req_access_txt = "106"},/turf/simulated/shuttle/floor{tag = "icon-floor2";icon_state = "floor2"},/area/centcom/evac) "Bb" = (/obj/machinery/computer/crew,/turf/simulated/shuttle/floor,/area/centcom/evac) "Bc" = (/obj/machinery/computer/communications,/turf/simulated/shuttle/floor,/area/centcom/evac) -"Be" = (/obj/structure/chair,/turf/simulated/shuttle/floor,/area/centcom/evac) "Bf" = (/obj/structure/table,/obj/item/radio,/turf/simulated/shuttle/floor,/area/centcom/evac) -"Bh" = (/obj/structure/table,/obj/item/storage/lockbox{req_access = null; req_access_txt = "106"},/turf/simulated/shuttle/floor,/area/centcom/evac) +"Bh" = (/obj/structure/table,/obj/item/storage/lockbox{req_access = null;req_access_txt = "106"},/turf/simulated/shuttle/floor,/area/centcom/evac) "Bi" = (/obj/structure/table,/obj/item/stamp/captain,/turf/simulated/shuttle/floor,/area/centcom/evac) "Bj" = (/obj/machinery/computer{name = "EMERGENCY SHUTTLE COMPUTER"},/turf/simulated/shuttle/floor,/area/centcom/evac) "Bk" = (/obj/structure/table,/obj/item/clipboard,/obj/item/pen,/turf/simulated/shuttle/floor,/area/centcom/evac) "Bl" = (/obj/structure/table,/obj/item/paper_bin,/turf/simulated/shuttle/floor,/area/centcom/evac) "Bq" = (/obj/structure/grille,/obj/structure/window/full/shuttle{icon_state = "window4"},/turf/simulated/floor/plating,/area/centcom/evac) -"Br" = (/obj/structure/grille,/obj/structure/window/full/shuttle{dir = 10; icon_state = "9"},/turf/simulated/floor/plating,/area/centcom/evac) +"Br" = (/obj/structure/grille,/obj/structure/window/full/shuttle{dir = 10;icon_state = "9"},/turf/simulated/floor/plating,/area/centcom/evac) "Bs" = (/obj/structure/grille,/obj/structure/window/full/shuttle{icon_state = "17"},/turf/simulated/floor/plating,/area/centcom/evac) -"Dt" = (/turf/space,/turf/unsimulated/wall{dir = 8; icon = 'icons/turf/shuttle.dmi'; icon_state = "diagonalWall3"},/area/admin) -"Du" = (/turf/space,/turf/unsimulated/wall{dir = 1; icon = 'icons/turf/shuttle.dmi'; icon_state = "diagonalWall3"},/area/admin) +"Dt" = (/turf/space,/turf/unsimulated/wall{dir = 8;icon = 'icons/turf/shuttle.dmi';icon_state = "diagonalWall3"},/area/admin) +"Du" = (/turf/space,/turf/unsimulated/wall{dir = 1;icon = 'icons/turf/shuttle.dmi';icon_state = "diagonalWall3"},/area/admin) "Dv" = (/turf/space,/area/admin) -"Dw" = (/turf/unsimulated/wall{tag = "icon-wall3 (NORTH)"; icon = 'icons/turf/shuttle.dmi'; icon_state = "wall3"; dir = 1},/area/admin) -"Dx" = (/turf/unsimulated/floor{tag = "icon-floor"; icon_state = "floor"},/turf/unsimulated/wall{dir = 2; icon = 'icons/turf/shuttle.dmi'; icon_state = "window5_end"; name = "window"; opacity = 0; tag = "icon-window5_end"},/area/admin) -"Dy" = (/turf/unsimulated/floor{tag = "icon-floor"; icon_state = "floor"},/turf/unsimulated/wall{dir = 2; icon = 'icons/turf/shuttle.dmi'; icon_state = "window5_mid"; name = "window"; opacity = 0; tag = "icon-window5_mid"},/area/admin) -"Dz" = (/turf/unsimulated/floor{tag = "icon-floor"; icon_state = "floor"},/turf/unsimulated/wall{dir = 1; icon = 'icons/turf/shuttle.dmi'; icon_state = "window5_end"; name = "window"; opacity = 0; tag = "icon-window5_end (NORTH)"},/area/admin) -"DA" = (/turf/unsimulated/wall{tag = "icon-wall3 (EAST)"; icon = 'icons/turf/shuttle.dmi'; icon_state = "wall3"; dir = 4},/area/admin) -"DB" = (/obj/structure/rack,/obj/item/clothing/mask/gas/swat{pixel_x = -3; pixel_y = 3},/obj/item/clothing/mask/gas/cyborg,/obj/item/clothing/mask/gas/voice,/obj/item/clothing/mask/balaclava{pixel_x = 3; pixel_y = -3},/turf/unsimulated/floor{tag = "icon-floor"; icon_state = "floor"},/area/admin) -"DC" = (/obj/structure/rack,/obj/item/clothing/head/bandana,/obj/item/clothing/head/ushanka,/obj/item/clothing/head/helmet/roman/legionaire,/turf/unsimulated/floor{tag = "icon-floor"; icon_state = "floor"},/area/admin) -"DD" = (/obj/structure/rack,/obj/item/clothing/head/helmet/swat/syndicate{pixel_x = -3; pixel_y = 3},/obj/item/clothing/head/helmet/space/deathsquad,/obj/item/clothing/head/helmet/space/deathsquad/beret{pixel_x = 3; pixel_y = -3},/turf/unsimulated/floor{tag = "icon-floor"; icon_state = "floor"},/area/admin) -"DE" = (/obj/structure/rack,/obj/item/clothing/head/helmet/space/hardsuit/wizard{pixel_x = -3; pixel_y = 3},/obj/item/clothing/head/helmet/space/hardsuit/syndi,/obj/item/clothing/head/helmet/space/santahat{pixel_x = 3; pixel_y = -3},/turf/unsimulated/floor{tag = "icon-floor"; icon_state = "floor"},/area/admin) -"DF" = (/obj/structure/rack,/obj/item/clothing/head/welding/flamedecal{pixel_x = -3; pixel_y = 3},/obj/item/clothing/head/welding/flamedecal/blue,/obj/item/clothing/head/welding/white{pixel_x = 3; pixel_y = -3},/turf/unsimulated/floor{tag = "icon-floor"; icon_state = "floor"},/area/admin) -"DG" = (/obj/structure/rack,/obj/item/clothing/head/soft/black{pixel_x = -3; pixel_y = 3},/obj/item/clothing/head/soft/blue,/obj/item/clothing/head/soft/red{pixel_x = 3; pixel_y = -3},/turf/unsimulated/floor{tag = "icon-floor"; icon_state = "floor"},/area/admin) -"DH" = (/obj/structure/rack,/obj/item/storage/backpack/holding,/obj/item/storage/backpack/duffel/clown,/obj/item/storage/backpack/duffel/captain,/obj/item/storage/backpack/duffel/science,/obj/item/storage/backpack/duffel/syndie/ammo,/obj/item/storage/backpack/duffel/syndie/med,/turf/unsimulated/floor{tag = "icon-floor"; icon_state = "floor"},/area/admin) -"DI" = (/turf/unsimulated/floor{tag = "icon-floor"; icon_state = "floor"},/turf/unsimulated/wall{desc = "This window appears to be reinforced, it looks nearly impossible to break."; dir = 8; icon = 'icons/turf/shuttle.dmi'; icon_state = "window5_end"; name = "window"; opacity = 0; tag = "icon-window5_end (WEST)"},/area/admin) -"DJ" = (/obj/structure/rack,/obj/item/clothing/under/shorts/black{pixel_x = -3; pixel_y = 3},/obj/item/clothing/under/shorts/blue,/obj/item/clothing/under/shorts/red{pixel_x = 3; pixel_y = -3},/turf/unsimulated/floor{tag = "icon-floor"; icon_state = "floor"},/area/admin) -"DK" = (/turf/unsimulated/floor{tag = "icon-floor"; icon_state = "floor"},/area/admin) -"DL" = (/obj/structure/rack,/obj/item/clothing/suit/space/deathsquad,/obj/item/clothing/suit/space/deathsquad/officer{pixel_x = 3; pixel_y = -3},/turf/unsimulated/floor{tag = "icon-floor"; icon_state = "floor"},/area/admin) -"DM" = (/turf/unsimulated/floor{tag = "icon-floor"; icon_state = "floor"},/turf/unsimulated/wall{dir = 2; icon = 'icons/turf/shuttle.dmi'; icon_state = "window5"; name = "window"; opacity = 0; tag = "icon-window5"},/area/admin) -"DN" = (/turf/unsimulated/floor{tag = "icon-floor"; icon_state = "floor"},/turf/unsimulated/wall{dir = 4; icon = 'icons/turf/shuttle.dmi'; icon_state = "window5_mid"; name = "window"; opacity = 0; tag = "icon-window5 (EAST)"},/area/admin) -"DO" = (/obj/structure/rack,/obj/item/clothing/under/chameleon/all{pixel_x = -3; pixel_y = 3},/obj/item/clothing/under/soviet,/obj/item/clothing/under/pirate{pixel_x = 3; pixel_y = -3},/turf/unsimulated/floor{tag = "icon-floor"; icon_state = "floor"},/area/admin) -"DP" = (/obj/structure/rack,/obj/item/clothing/glasses/material{pixel_x = -3; pixel_y = 3},/obj/item/clothing/glasses/meson,/obj/item/clothing/glasses/thermal{pixel_x = 3; pixel_y = -3},/turf/unsimulated/floor{tag = "icon-floor"; icon_state = "floor"},/area/admin) -"DR" = (/obj/structure/rack,/obj/item/clothing/gloves/color/black/thief{pixel_x = -3; pixel_y = 3},/obj/item/clothing/gloves/color/yellow,/obj/item/clothing/gloves/color/rainbow{pixel_x = 3; pixel_y = -3},/obj/item/clothing/gloves/combat{pixel_x = -3; pixel_y = 3},/obj/item/clothing/gloves/color/latex,/obj/item/clothing/gloves/color/captain{pixel_x = 3; pixel_y = -3},/turf/unsimulated/floor{tag = "icon-floor"; icon_state = "floor"},/area/admin) -"DS" = (/obj/structure/rack,/obj/item/clothing/suit/armor/bulletproof{pixel_x = -3; pixel_y = 3},/obj/item/clothing/suit/armor/laserproof,/obj/item/clothing/suit/armor/vest{pixel_x = 3; pixel_y = -3},/turf/unsimulated/floor{tag = "icon-floor"; icon_state = "floor"},/area/admin) -"DT" = (/obj/mecha/combat/marauder/loaded,/turf/unsimulated/floor{tag = "icon-floor"; icon_state = "floor"},/area/admin) -"DU" = (/obj/mecha/combat/marauder/seraph/loaded,/turf/unsimulated/floor{tag = "icon-floor"; icon_state = "floor"},/area/admin) -"DV" = (/obj/mecha/combat/honker/loaded,/turf/unsimulated/floor{tag = "icon-floor"; icon_state = "floor"},/area/admin) -"DW" = (/obj/structure/cable{icon_state = "0-2"; d2 = 2},/obj/machinery/mech_bay_recharge_port/upgraded,/turf/unsimulated/floor{tag = "icon-floor"; icon_state = "floor"},/area/admin) +"Dw" = (/turf/unsimulated/wall{tag = "icon-wall3 (NORTH)";icon = 'icons/turf/shuttle.dmi';icon_state = "wall3";dir = 1},/area/admin) +"Dx" = (/turf/unsimulated/floor{tag = "icon-floor";icon_state = "floor"},/turf/unsimulated/wall{dir = 2;icon = 'icons/turf/shuttle.dmi';icon_state = "window5_end";name = "window";opacity = 0;tag = "icon-window5_end"},/area/admin) +"Dy" = (/turf/unsimulated/floor{tag = "icon-floor";icon_state = "floor"},/turf/unsimulated/wall{dir = 2;icon = 'icons/turf/shuttle.dmi';icon_state = "window5_mid";name = "window";opacity = 0;tag = "icon-window5_mid"},/area/admin) +"Dz" = (/turf/unsimulated/floor{tag = "icon-floor";icon_state = "floor"},/turf/unsimulated/wall{dir = 1;icon = 'icons/turf/shuttle.dmi';icon_state = "window5_end";name = "window";opacity = 0;tag = "icon-window5_end (NORTH)"},/area/admin) +"DA" = (/turf/unsimulated/wall{tag = "icon-wall3 (EAST)";icon = 'icons/turf/shuttle.dmi';icon_state = "wall3";dir = 4},/area/admin) +"DB" = (/obj/structure/rack,/obj/item/clothing/mask/gas/swat{pixel_x = -3;pixel_y = 3},/obj/item/clothing/mask/gas/cyborg,/obj/item/clothing/mask/gas/voice,/obj/item/clothing/mask/balaclava{pixel_x = 3;pixel_y = -3},/turf/unsimulated/floor{tag = "icon-floor";icon_state = "floor"},/area/admin) +"DC" = (/obj/structure/rack,/obj/item/clothing/head/bandana,/obj/item/clothing/head/ushanka,/obj/item/clothing/head/helmet/roman/legionaire,/turf/unsimulated/floor{tag = "icon-floor";icon_state = "floor"},/area/admin) +"DD" = (/obj/structure/rack,/obj/item/clothing/head/helmet/swat/syndicate{pixel_x = -3;pixel_y = 3},/obj/item/clothing/head/helmet/space/deathsquad,/obj/item/clothing/head/helmet/space/deathsquad/beret{pixel_x = 3;pixel_y = -3},/turf/unsimulated/floor{tag = "icon-floor";icon_state = "floor"},/area/admin) +"DE" = (/obj/structure/rack,/obj/item/clothing/head/helmet/space/hardsuit/wizard{pixel_x = -3;pixel_y = 3},/obj/item/clothing/head/helmet/space/hardsuit/syndi,/obj/item/clothing/head/helmet/space/santahat{pixel_x = 3;pixel_y = -3},/turf/unsimulated/floor{tag = "icon-floor";icon_state = "floor"},/area/admin) +"DF" = (/obj/structure/rack,/obj/item/clothing/head/welding/flamedecal{pixel_x = -3;pixel_y = 3},/obj/item/clothing/head/welding/flamedecal/blue,/obj/item/clothing/head/welding/white{pixel_x = 3;pixel_y = -3},/turf/unsimulated/floor{tag = "icon-floor";icon_state = "floor"},/area/admin) +"DG" = (/obj/structure/rack,/obj/item/clothing/head/soft/black{pixel_x = -3;pixel_y = 3},/obj/item/clothing/head/soft/blue,/obj/item/clothing/head/soft/red{pixel_x = 3;pixel_y = -3},/turf/unsimulated/floor{tag = "icon-floor";icon_state = "floor"},/area/admin) +"DH" = (/obj/structure/rack,/obj/item/storage/backpack/holding,/obj/item/storage/backpack/duffel/clown,/obj/item/storage/backpack/duffel/captain,/obj/item/storage/backpack/duffel/science,/obj/item/storage/backpack/duffel/syndie/ammo,/obj/item/storage/backpack/duffel/syndie/med,/turf/unsimulated/floor{tag = "icon-floor";icon_state = "floor"},/area/admin) +"DI" = (/turf/unsimulated/floor{tag = "icon-floor";icon_state = "floor"},/turf/unsimulated/wall{desc = "This window appears to be reinforced, it looks nearly impossible to break.";dir = 8;icon = 'icons/turf/shuttle.dmi';icon_state = "window5_end";name = "window";opacity = 0;tag = "icon-window5_end (WEST)"},/area/admin) +"DJ" = (/obj/structure/rack,/obj/item/clothing/under/shorts/black{pixel_x = -3;pixel_y = 3},/obj/item/clothing/under/shorts/blue,/obj/item/clothing/under/shorts/red{pixel_x = 3;pixel_y = -3},/turf/unsimulated/floor{tag = "icon-floor";icon_state = "floor"},/area/admin) +"DK" = (/turf/unsimulated/floor{tag = "icon-floor";icon_state = "floor"},/area/admin) +"DL" = (/obj/structure/rack,/obj/item/clothing/suit/space/deathsquad,/obj/item/clothing/suit/space/deathsquad/officer{pixel_x = 3;pixel_y = -3},/turf/unsimulated/floor{tag = "icon-floor";icon_state = "floor"},/area/admin) +"DM" = (/turf/unsimulated/floor{tag = "icon-floor";icon_state = "floor"},/turf/unsimulated/wall{dir = 2;icon = 'icons/turf/shuttle.dmi';icon_state = "window5";name = "window";opacity = 0;tag = "icon-window5"},/area/admin) +"DN" = (/turf/unsimulated/floor{tag = "icon-floor";icon_state = "floor"},/turf/unsimulated/wall{dir = 4;icon = 'icons/turf/shuttle.dmi';icon_state = "window5_mid";name = "window";opacity = 0;tag = "icon-window5 (EAST)"},/area/admin) +"DO" = (/obj/structure/rack,/obj/item/clothing/under/chameleon/all{pixel_x = -3;pixel_y = 3},/obj/item/clothing/under/soviet,/obj/item/clothing/under/pirate{pixel_x = 3;pixel_y = -3},/turf/unsimulated/floor{tag = "icon-floor";icon_state = "floor"},/area/admin) +"DP" = (/obj/structure/rack,/obj/item/clothing/glasses/material{pixel_x = -3;pixel_y = 3},/obj/item/clothing/glasses/meson,/obj/item/clothing/glasses/thermal{pixel_x = 3;pixel_y = -3},/turf/unsimulated/floor{tag = "icon-floor";icon_state = "floor"},/area/admin) +"DR" = (/obj/structure/rack,/obj/item/clothing/gloves/color/black/thief{pixel_x = -3;pixel_y = 3},/obj/item/clothing/gloves/color/yellow,/obj/item/clothing/gloves/color/rainbow{pixel_x = 3;pixel_y = -3},/obj/item/clothing/gloves/combat{pixel_x = -3;pixel_y = 3},/obj/item/clothing/gloves/color/latex,/obj/item/clothing/gloves/color/captain{pixel_x = 3;pixel_y = -3},/turf/unsimulated/floor{tag = "icon-floor";icon_state = "floor"},/area/admin) +"DS" = (/obj/structure/rack,/obj/item/clothing/suit/armor/bulletproof{pixel_x = -3;pixel_y = 3},/obj/item/clothing/suit/armor/laserproof,/obj/item/clothing/suit/armor/vest{pixel_x = 3;pixel_y = -3},/turf/unsimulated/floor{tag = "icon-floor";icon_state = "floor"},/area/admin) +"DT" = (/obj/mecha/combat/marauder/loaded,/turf/unsimulated/floor{tag = "icon-floor";icon_state = "floor"},/area/admin) +"DU" = (/obj/mecha/combat/marauder/seraph/loaded,/turf/unsimulated/floor{tag = "icon-floor";icon_state = "floor"},/area/admin) +"DV" = (/obj/mecha/combat/honker/loaded,/turf/unsimulated/floor{tag = "icon-floor";icon_state = "floor"},/area/admin) +"DW" = (/obj/structure/cable{icon_state = "0-2";d2 = 2},/obj/machinery/mech_bay_recharge_port/upgraded,/turf/unsimulated/floor{tag = "icon-floor";icon_state = "floor"},/area/admin) "DX" = (/turf/simulated/floor/mech_bay_recharge_floor,/area/admin) -"DY" = (/obj/machinery/computer/mech_bay_power_console,/obj/structure/cable{icon_state = "0-2"; d2 = 2},/turf/unsimulated/floor{tag = "icon-floor"; icon_state = "floor"},/area/admin) -"DZ" = (/obj/structure/rack,/obj/item/clothing/under/rank/centcom/captain{pixel_x = -3; pixel_y = 3},/obj/item/clothing/under/rank/centcom/officer,/obj/item/clothing/under/rank/centcom/representative{pixel_x = 3; pixel_y = -3},/turf/unsimulated/floor{tag = "icon-floor"; icon_state = "floor"},/area/admin) -"Ea" = (/obj/structure/rack,/obj/item/clothing/glasses/night{pixel_x = -3; pixel_y = 3},/obj/item/clothing/glasses/hud/health/night,/obj/item/clothing/glasses/hud/security/night{pixel_x = 3; pixel_y = -3},/turf/unsimulated/floor{tag = "icon-floor"; icon_state = "floor"},/area/admin) -"Eb" = (/obj/structure/rack,/obj/item/clothing/shoes/magboots/syndie{pixel_x = -3; pixel_y = 3},/obj/item/clothing/shoes/magboots/advance,/obj/item/clothing/shoes/magboots{pixel_x = 3; pixel_y = -3},/turf/unsimulated/floor{tag = "icon-floor"; icon_state = "floor"},/area/admin) -"Ec" = (/obj/structure/rack,/obj/item/clothing/shoes/green{pixel_x = -3; pixel_y = 3},/obj/item/clothing/shoes/centcom,/obj/item/clothing/shoes/syndigaloshes{pixel_x = 3; pixel_y = -3},/obj/item/clothing/shoes/rainbow{pixel_x = -3; pixel_y = 3},/obj/item/clothing/shoes/combat/swat,/obj/item/clothing/shoes/combat{pixel_x = 3; pixel_y = -3},/turf/unsimulated/floor{tag = "icon-floor"; icon_state = "floor"},/area/admin) -"Ed" = (/obj/structure/rack,/obj/item/clothing/suit/pirate_black{pixel_x = -3; pixel_y = 3},/obj/item/clothing/suit/blacktrenchcoat,/obj/item/clothing/suit/jacket{pixel_x = 3; pixel_y = -3},/turf/unsimulated/floor{tag = "icon-floor"; icon_state = "floor"},/area/admin) -"Ee" = (/obj/item/mecha_parts/mecha_equipment/cable_layer,/obj/item/mecha_parts/mecha_equipment/drill/diamonddrill,/obj/item/mecha_parts/mecha_equipment/hydraulic_clamp,/obj/item/mecha_parts/mecha_equipment/rcd,/obj/item/mecha_parts/mecha_equipment/extinguisher,/obj/structure/closet/crate,/turf/unsimulated/floor{tag = "icon-floor"; icon_state = "floor"},/area/admin) -"Ef" = (/turf/unsimulated/floor{tag = "icon-floor"; icon_state = "floor"},/turf/unsimulated/wall{desc = "This window appears to be reinforced, it looks nearly impossible to break."; dir = 4; icon = 'icons/turf/shuttle.dmi'; icon_state = "window5_end"; name = "window"; opacity = 0; tag = "icon-window5 (EAST)"},/area/admin) -"Eg" = (/obj/structure/rack,/obj/item/clothing/under/syndicate{pixel_x = -3; pixel_y = 3},/obj/item/clothing/under/syndicate/combat,/obj/item/clothing/under/acj{pixel_x = 3; pixel_y = -3},/turf/unsimulated/floor{tag = "icon-floor"; icon_state = "floor"},/area/admin) -"Eh" = (/obj/structure/mirror{pixel_y = -30},/turf/unsimulated/floor{tag = "icon-floor"; icon_state = "floor"},/area/admin) -"Ei" = (/obj/structure/rack,/obj/item/clothing/suit/space/hardsuit/syndi{pixel_x = -3; pixel_y = 3},/obj/item/clothing/suit/space/hardsuit/wizard,/obj/item/clothing/suit/space/santa{pixel_x = 3; pixel_y = -3},/turf/unsimulated/floor{tag = "icon-floor"; icon_state = "floor"},/area/admin) -"Ej" = (/obj/mecha/combat/marauder/mauler/loaded,/turf/unsimulated/floor{tag = "icon-floor"; icon_state = "floor"},/area/admin) -"Ek" = (/obj/mecha/combat/gygax/dark/loaded,/turf/unsimulated/floor{tag = "icon-floor"; icon_state = "floor"},/area/admin) -"El" = (/obj/effect/decal/mecha_wreckage/phazon,/turf/unsimulated/floor{tag = "icon-floor"; icon_state = "floor"},/area/admin) -"Em" = (/obj/item/mecha_parts/mecha_equipment/weapon/energy/laser,/obj/item/mecha_parts/mecha_equipment/weapon/energy/ion,/obj/item/mecha_parts/mecha_equipment/weapon/energy/pulse,/obj/item/mecha_parts/mecha_equipment/weapon/honker,/obj/item/mecha_parts/mecha_equipment/weapon/ballistic/carbine,/obj/item/mecha_parts/mecha_equipment/weapon/ballistic/lmg,/obj/item/mecha_parts/mecha_equipment/weapon/ballistic/missile_rack,/obj/item/mecha_parts/mecha_equipment/weapon/ballistic/missile_rack/flashbang/clusterbang,/obj/item/mecha_parts/mecha_equipment/weapon/ballistic/scattershot,/obj/structure/closet/crate,/turf/unsimulated/floor{tag = "icon-floor"; icon_state = "floor"},/area/admin) -"En" = (/turf/space,/turf/unsimulated/wall{dir = 4; icon = 'icons/turf/shuttle.dmi'; icon_state = "diagonalWall3"},/area/admin) -"Eo" = (/obj/machinery/door/airlock/hatch{name = "Clothing Storage"; req_access_txt = "0"},/turf/unsimulated/floor{tag = "icon-floor"; icon_state = "floor"},/area/admin) -"Ep" = (/obj/machinery/door/airlock/hatch{name = "Mecha Room"; req_access_txt = "0"},/turf/unsimulated/floor{tag = "icon-floor"; icon_state = "floor"},/area/admin) -"Eq" = (/turf/unsimulated/floor{icon_state = "freezerfloor"; dir = 2},/turf/unsimulated/wall{dir = 2; icon = 'icons/turf/shuttle.dmi'; icon_state = "window5_end"; name = "window"; opacity = 0; tag = "icon-window5_end"},/area/admin) -"Er" = (/turf/unsimulated/floor{icon_state = "freezerfloor"; dir = 2},/turf/unsimulated/wall{dir = 2; icon = 'icons/turf/shuttle.dmi'; icon_state = "window5_mid"; name = "window"; opacity = 0; tag = "icon-window5_mid"},/area/admin) -"Es" = (/turf/unsimulated/floor{icon_state = "freezerfloor"; dir = 2},/turf/unsimulated/wall{dir = 1; icon = 'icons/turf/shuttle.dmi'; icon_state = "window5_end"; name = "window"; opacity = 0; tag = "icon-window5_end (NORTH)"},/area/admin) -"Et" = (/turf/unsimulated/floor{tag = "icon-floor"; icon_state = "floor"},/turf/simulated/shuttle/wall{tag = "icon-diagonalWall3 (EAST)"; icon_state = "diagonalWall3"; dir = 4},/area/admin) -"Eu" = (/turf/unsimulated/floor{tag = "icon-floor"; icon_state = "floor"},/turf/simulated/shuttle/wall{tag = "icon-diagonalWall3"; icon_state = "diagonalWall3"; dir = 2},/area/admin) -"Ev" = (/obj/machinery/chem_master,/turf/unsimulated/floor{icon_state = "freezerfloor"; dir = 2},/area/admin) -"Ew" = (/turf/unsimulated/floor{icon_state = "freezerfloor"; dir = 2},/area/admin) -"Ex" = (/obj/structure/table,/obj/item/storage/box/beakers,/obj/item/reagent_containers/glass/beaker/bluespace,/obj/item/reagent_containers/glass/beaker/bluespace,/obj/item/reagent_containers/glass/beaker/bluespace,/obj/item/reagent_containers/glass/beaker/bluespace,/turf/unsimulated/floor{icon_state = "freezerfloor"; dir = 2},/area/admin) -"Ey" = (/obj/structure/table,/obj/machinery/reagentgrinder,/turf/unsimulated/floor{icon_state = "freezerfloor"; dir = 2},/area/admin) -"Ez" = (/obj/structure/table,/obj/item/storage/pill_bottle/random_drug_bottle,/obj/item/reagent_containers/glass/bottle/adminordrazine,/turf/unsimulated/floor{icon_state = "freezerfloor"; dir = 2},/area/admin) -"EB" = (/obj/machinery/door/airlock/external,/obj/machinery/door/poddoor{density = 0; icon_state = "open"; id_tag = "ADMINLOCKDOWN"; name = "Security Doors"; opacity = 0},/turf/unsimulated/floor{tag = "icon-floor"; icon_state = "floor"},/area/admin) -"EC" = (/obj/machinery/door/airlock/hatch{name = "External Airlock"; req_access_txt = "0"},/turf/unsimulated/floor{tag = "icon-floor"; icon_state = "floor"},/area/admin) -"ED" = (/turf/unsimulated/floor{icon_state = "freezerfloor"; dir = 2},/turf/unsimulated/wall{desc = "This window appears to be reinforced, it looks nearly impossible to break."; dir = 8; icon = 'icons/turf/shuttle.dmi'; icon_state = "window5_end"; name = "window"; opacity = 0; tag = "icon-window5_end (WEST)"},/area/admin) -"EE" = (/obj/machinery/chem_dispenser{desc = "It appears Fox is doing more fruit chemistry today!"; hackedcheck = 1},/turf/unsimulated/floor{icon_state = "freezerfloor"; dir = 2},/area/admin) -"EF" = (/obj/structure/chair/stool,/turf/unsimulated/floor{icon_state = "freezerfloor"; dir = 2},/area/admin) -"EG" = (/obj/structure/reagent_dispensers/fueltank,/turf/unsimulated/floor{icon_state = "freezerfloor"; dir = 2},/area/admin) -"EH" = (/obj/machinery/door/airlock/hatch{name = "Armory"; req_access_txt = "0"},/turf/unsimulated/floor{tag = "icon-floor"; icon_state = "floor"},/area/admin) -"EI" = (/turf/unsimulated/floor{tag = "icon-floor"; icon_state = "floor"},/turf/unsimulated/wall{dir = 1; icon = 'icons/turf/shuttle.dmi'; icon_state = "diagonalWall3"},/area/admin) -"EJ" = (/turf/unsimulated/floor{icon_state = "freezerfloor"; dir = 2},/turf/unsimulated/wall{desc = "This window appears to be reinforced, it looks nearly impossible to break."; dir = 4; icon = 'icons/turf/shuttle.dmi'; icon_state = "window5_end"; name = "window"; opacity = 0; tag = "icon-window5 (EAST)"},/area/admin) -"EK" = (/obj/machinery/chem_heater,/turf/unsimulated/floor{icon_state = "freezerfloor"; dir = 2},/area/admin) -"EL" = (/obj/item/storage/box/syringes,/obj/item/assembly/igniter,/obj/item/assembly/igniter,/obj/item/assembly/igniter,/obj/item/assembly/igniter,/obj/item/assembly/timer,/obj/item/assembly/timer,/obj/item/assembly/timer,/obj/item/assembly/timer,/obj/item/grenade/chem_grenade/large,/obj/item/grenade/chem_grenade/large,/obj/item/grenade/chem_grenade/large,/obj/item/grenade/chem_grenade/large,/obj/item/gun/syringe/rapidsyringe,/obj/item/reagent_containers/spray/chemsprayer,/obj/structure/closet,/obj/item/gun/projectile/shotgun/sc_pump,/obj/item/ammo_casing/shotgun/dart,/obj/item/ammo_casing/shotgun/dart,/obj/item/ammo_casing/shotgun/dart,/obj/item/ammo_casing/shotgun/dart,/obj/item/ammo_casing/shotgun/dart,/obj/item/ammo_casing/shotgun/dart,/turf/unsimulated/floor{icon_state = "freezerfloor"; dir = 2},/area/admin) -"EM" = (/turf/space,/turf/unsimulated/wall{dir = 2; icon = 'icons/turf/shuttle.dmi'; icon_state = "diagonalWall3"},/area/admin) -"EN" = (/obj/structure/rack,/obj/item/ammo_box/magazine/m10mm,/obj/item/ammo_box/magazine/m10mm,/obj/item/ammo_box/magazine/m10mm,/obj/item/ammo_box/magazine/m10mm,/obj/item/ammo_box/magazine/m10mm,/obj/item/ammo_box/magazine/m10mm,/obj/item/gun/projectile/automatic/pistol,/obj/item/gun/projectile/automatic/pistol{pixel_x = 3; pixel_y = -3},/obj/item/suppressor,/obj/item/suppressor{pixel_x = 3; pixel_y = -3},/turf/unsimulated/floor{tag = "icon-floor"; icon_state = "floor"},/area/admin) -"EO" = (/obj/structure/rack,/obj/item/ammo_box/magazine/m12g,/obj/item/ammo_box/magazine/m12g,/obj/item/ammo_box/magazine/m12g/stun,/obj/item/ammo_box/magazine/m12g/stun,/obj/item/ammo_box/magazine/m12g/dragon,/obj/item/ammo_box/magazine/m12g/dragon,/obj/item/gun/projectile/automatic/shotgun/bulldog,/obj/item/gun/projectile/automatic/shotgun/bulldog{pixel_x = 3; pixel_y = -3},/turf/unsimulated/floor{tag = "icon-floor"; icon_state = "floor"},/area/admin) -"EP" = (/obj/structure/rack,/obj/item/ammo_box/magazine/smgm45,/obj/item/ammo_box/magazine/smgm45,/obj/item/ammo_box/magazine/smgm45,/obj/item/ammo_box/magazine/smgm45,/obj/item/ammo_box/magazine/smgm45,/obj/item/ammo_box/magazine/smgm45,/obj/item/gun/projectile/automatic/c20r,/obj/item/gun/projectile/automatic/c20r{pixel_x = 3; pixel_y = -3},/turf/unsimulated/floor{tag = "icon-floor"; icon_state = "floor"},/area/admin) -"EQ" = (/obj/machinery/vending/liberationstation,/turf/unsimulated/floor{tag = "icon-floor"; icon_state = "floor"},/area/admin) -"ER" = (/obj/structure/rack,/obj/item/ammo_box/magazine/m75,/obj/item/ammo_box/magazine/m75,/obj/item/ammo_box/magazine/m75,/obj/item/ammo_box/magazine/m75,/obj/item/ammo_box/magazine/m75,/obj/item/ammo_box/magazine/m75,/obj/item/gun/projectile/automatic/gyropistol,/obj/item/gun/projectile/automatic/gyropistol{pixel_x = 3; pixel_y = -3},/turf/unsimulated/floor{tag = "icon-floor"; icon_state = "floor"},/area/admin) -"ES" = (/obj/structure/rack,/obj/item/ammo_box/magazine/m50,/obj/item/ammo_box/magazine/m50,/obj/item/ammo_box/magazine/m50,/obj/item/ammo_box/magazine/m50,/obj/item/ammo_box/magazine/m50,/obj/item/ammo_box/magazine/m50,/obj/item/gun/projectile/automatic/pistol/deagle,/obj/item/gun/projectile/automatic/pistol/deagle{pixel_x = 3; pixel_y = -3},/turf/unsimulated/floor{tag = "icon-floor"; icon_state = "floor"},/area/admin) -"ET" = (/obj/structure/rack,/obj/item/ammo_box/a357,/obj/item/ammo_box/a357,/obj/item/gun/projectile/revolver/mateba,/obj/item/gun/projectile/revolver/mateba{pixel_x = 3; pixel_y = -3},/turf/unsimulated/floor{tag = "icon-floor"; icon_state = "floor"},/area/admin) -"EV" = (/obj/structure/table,/obj/item/storage/box/beakers,/obj/item/reagent_containers/glass/beaker/bluespace,/obj/item/reagent_containers/glass/beaker/bluespace,/obj/item/reagent_containers/glass/beaker/bluespace,/obj/item/reagent_containers/glass/beaker/bluespace,/obj/item/storage/box/autoinjectors,/turf/unsimulated/floor{icon_state = "freezerfloor"; dir = 2},/area/admin) -"EW" = (/obj/structure/table,/obj/item/storage/box/syringes,/obj/item/assembly/igniter,/obj/item/assembly/igniter,/obj/item/assembly/igniter,/obj/item/assembly/igniter,/obj/item/assembly/timer,/obj/item/assembly/timer,/obj/item/assembly/timer,/obj/item/assembly/timer,/obj/item/grenade/chem_grenade/large,/obj/item/grenade/chem_grenade/large,/obj/item/grenade/chem_grenade/large,/obj/item/grenade/chem_grenade/large,/turf/unsimulated/floor{icon_state = "freezerfloor"; dir = 2},/area/admin) -"EX" = (/obj/structure/table,/obj/item/assembly/signaler,/obj/item/assembly/signaler,/obj/item/assembly/signaler,/obj/item/assembly/signaler,/obj/item/assembly/signaler,/obj/item/assembly/infra,/obj/item/assembly/infra,/obj/item/assembly/infra,/obj/item/assembly/infra,/obj/item/assembly/infra,/obj/item/assembly/prox_sensor,/obj/item/assembly/prox_sensor,/obj/item/assembly/prox_sensor,/obj/item/assembly/prox_sensor,/obj/item/assembly/prox_sensor,/turf/unsimulated/floor{icon_state = "freezerfloor"; dir = 2},/area/admin) -"EY" = (/turf/unsimulated/floor{tag = "icon-floor"; icon_state = "floor"},/turf/unsimulated/wall{dir = 4; icon = 'icons/turf/shuttle.dmi'; icon_state = "window5"; name = "window"; opacity = 0; tag = "icon-window5 (EAST)"},/area/admin) -"EZ" = (/turf/unsimulated/floor{icon_state = "freezerfloor"; dir = 2},/turf/unsimulated/wall{dir = 2; icon = 'icons/turf/shuttle.dmi'; icon_state = "window5"; name = "window"; opacity = 0; tag = "icon-window5"},/area/admin) -"Fa" = (/obj/machinery/door/poddoor{density = 0; icon_state = "open"; id_tag = "ADMINCHEMLOCKDOWN"; name = "Security Doors"; opacity = 0},/obj/machinery/door/airlock/hatch{name = "Chem Lab"; req_access_txt = "0"},/turf/unsimulated/floor{icon_state = "freezerfloor"; dir = 2},/area/admin) -"Fb" = (/obj/structure/rack,/obj/item/ammo_box/magazine/mm556x45,/obj/item/ammo_box/magazine/mm556x45,/obj/item/ammo_box/magazine/mm556x45,/obj/item/ammo_box/magazine/mm556x45,/obj/item/gun/projectile/automatic/l6_saw,/obj/item/gun/projectile/automatic/l6_saw{pixel_x = 3; pixel_y = -3},/turf/unsimulated/floor{tag = "icon-floor"; icon_state = "floor"},/area/admin) -"Fc" = (/obj/structure/rack,/obj/item/gun/projectile/automatic/proto,/obj/item/gun/projectile/automatic/proto{pixel_x = 3; pixel_y = -3},/turf/unsimulated/floor{tag = "icon-floor"; icon_state = "floor"},/area/admin) -"Fd" = (/obj/structure/rack,/obj/item/ammo_box/magazine/m556,/obj/item/ammo_box/magazine/m556,/obj/item/ammo_box/magazine/m556,/obj/item/ammo_box/magazine/m556,/obj/item/ammo_box/magazine/m556,/obj/item/ammo_box/magazine/m556,/obj/item/ammo_box/a40mm,/obj/item/ammo_box/a40mm,/obj/item/ammo_box/a40mm,/obj/item/ammo_box/a40mm,/obj/item/gun/projectile/automatic/m90,/obj/item/gun/projectile/automatic/m90{pixel_x = 3; pixel_y = -3},/turf/unsimulated/floor{tag = "icon-floor"; icon_state = "floor"},/area/admin) -"Fe" = (/obj/structure/mirror{dir = 4; pixel_x = 0; pixel_y = -32},/turf/unsimulated/floor{tag = "icon-floor"; icon_state = "floor"},/area/admin) -"Ff" = (/obj/machinery/optable,/turf/unsimulated/floor{icon_state = "freezerfloor"; dir = 2},/area/admin) -"Fh" = (/obj/structure/table,/obj/item/gun/energy/pulse/pistol,/obj/machinery/door_control{desc = "A remote control switch to lock down the admin lab."; icon_state = "doorctrl0"; id = "ADMINCHEMLOCKDOWN"; name = "Lockdown"; pixel_y = 24; req_access_txt = "0"},/turf/unsimulated/floor{dir = 9; icon_state = "carpetside"},/area/admin) -"Fi" = (/turf/unsimulated/floor{dir = 1; icon_state = "carpetside"},/area/admin) -"Fj" = (/obj/machinery/computer/secure_data,/obj/item/paper/sop,/turf/unsimulated/floor{dir = 5; icon_state = "carpetside"},/area/admin) -"Fk" = (/turf/unsimulated/floor{tag = "icon-floor"; icon_state = "floor"},/turf/unsimulated/wall{dir = 8; icon = 'icons/turf/shuttle.dmi'; icon_state = "diagonalWall3"},/area/admin) -"Fl" = (/obj/effect/decal/cleanable/blood,/turf/unsimulated/floor{icon_state = "freezerfloor"; dir = 2},/area/admin) -"Fm" = (/obj/structure/table,/obj/item/stack/cable_coil,/obj/item/stack/rods,/obj/item/pen,/turf/unsimulated/floor{icon_state = "freezerfloor"; dir = 2},/area/admin) -"Fn" = (/obj/machinery/computer/communications,/turf/unsimulated/floor{dir = 8; icon_state = "carpetside"},/area/admin) -"Fo" = (/obj/structure/chair/office/dark,/turf/unsimulated/floor{icon_state = "carpet"; dir = 2},/area/admin) -"Fp" = (/obj/machinery/computer/med_data,/turf/unsimulated/floor{dir = 4; icon_state = "carpetside"},/area/admin) -"Fq" = (/obj/structure/rack,/obj/item/shield/energy,/obj/item/shield/energy{pixel_x = 3; pixel_y = -3},/turf/unsimulated/floor{tag = "icon-floor"; icon_state = "floor"},/area/admin) -"Fr" = (/obj/structure/rack,/obj/item/katana{pixel_x = 3; pixel_y = -3},/obj/item/katana,/turf/unsimulated/floor{tag = "icon-floor"; icon_state = "floor"},/area/admin) -"Fs" = (/obj/structure/rack,/obj/item/melee/energy/sword/saber,/obj/item/melee/energy/sword/saber{pixel_x = 3; pixel_y = -3},/turf/unsimulated/floor{tag = "icon-floor"; icon_state = "floor"},/area/admin) -"Ft" = (/obj/structure/rack,/obj/machinery/recharger/wallcharger{pixel_x = 30},/obj/item/gun/energy/xray,/obj/item/gun/energy/xray{pixel_x = 3; pixel_y = -3},/turf/unsimulated/floor{tag = "icon-floor"; icon_state = "floor"},/area/admin) -"Fu" = (/obj/structure/table,/obj/random/toolbox,/obj/random/bomb_supply,/obj/machinery/syndicatebomb/badmin/clown,/turf/unsimulated/floor{tag = "icon-dark"; icon_state = "dark"},/area/admin) -"Fv" = (/turf/unsimulated/floor{tag = "icon-dark"; icon_state = "dark"},/area/admin) -"Fw" = (/obj/structure/table,/obj/item/storage/toolbox/syndicate,/turf/unsimulated/floor{tag = "icon-dark"; icon_state = "dark"},/area/admin) -"Fx" = (/obj/structure/table,/obj/item/rcd,/obj/item/rcd_ammo,/obj/item/rcd_ammo,/obj/item/storage/pill_bottle/random_drug_bottle,/turf/unsimulated/floor{tag = "icon-dark"; icon_state = "dark"},/area/admin) -"Fy" = (/obj/structure/table,/obj/item/scalpel,/obj/item/bonesetter,/obj/item/bonegel,/turf/unsimulated/floor{icon_state = "freezerfloor"; dir = 2},/area/admin) -"Fz" = (/obj/structure/table,/obj/item/kitchen/utensil/fork,/obj/item/lighter,/obj/item/restraints/handcuffs/cable/red,/obj/item/storage/box/mousetraps,/obj/item/storage/fancy/cigarettes,/obj/item/pen,/turf/unsimulated/floor{icon_state = "freezerfloor"; dir = 2},/area/admin) -"FA" = (/obj/structure/table,/obj/structure/window/reinforced,/obj/item/paper_bin,/obj/item/pen,/turf/unsimulated/floor{dir = 10; icon_state = "carpetside"},/area/admin) -"FB" = (/obj/structure/table,/obj/machinery/door/window/southleft{name = "security checkpoint"; req_access_txt = "0"},/turf/unsimulated/floor{dir = 2; icon_state = "carpetside"},/area/admin) -"FC" = (/obj/structure/table,/obj/structure/window/reinforced,/obj/machinery/recharger,/turf/unsimulated/floor{dir = 6; icon_state = "carpetside"},/area/admin) -"FD" = (/obj/machinery/recharger/wallcharger{pixel_x = 30},/obj/structure/rack,/obj/item/gun/energy/pulse/pistol/m1911,/obj/item/gun/energy/pulse/pistol/m1911{pixel_x = 3; pixel_y = -3},/turf/unsimulated/floor{tag = "icon-floor"; icon_state = "floor"},/area/admin) -"FE" = (/obj/structure/table,/obj/item/tank/oxygen/yellow,/obj/random/bomb_supply,/obj/item/clothing/under/rebeloutfit,/obj/item/clothing/suit/poncho/ponchoshame,/obj/item/clothing/head/sombrero/shamebrero,/turf/unsimulated/floor{tag = "icon-dark"; icon_state = "dark"},/area/admin) -"FF" = (/obj/machinery/door/airlock/hatch{name = "Tool Storage"; req_access_txt = "0"},/turf/unsimulated/floor{tag = "icon-dark"; icon_state = "dark"},/area/admin) -"FG" = (/obj/structure/table,/obj/item/FixOVein,/obj/item/retractor,/obj/item/cautery,/turf/unsimulated/floor{icon_state = "freezerfloor"; dir = 2},/area/admin) -"FH" = (/obj/structure/kitchenspike,/turf/unsimulated/floor{icon_state = "freezerfloor"; dir = 2},/area/admin) -"FI" = (/turf/unsimulated/floor{dir = 8; icon_state = "wood"},/turf/unsimulated/wall{dir = 2; icon = 'icons/turf/shuttle.dmi'; icon_state = "window5_end"; name = "window"; opacity = 0; tag = "icon-window5_end"},/area/admin) -"FJ" = (/turf/unsimulated/floor{dir = 8; icon_state = "wood"},/turf/unsimulated/wall{dir = 2; icon = 'icons/turf/shuttle.dmi'; icon_state = "window5_mid"; name = "window"; opacity = 0; tag = "icon-window5_mid"},/area/admin) -"FK" = (/turf/unsimulated/floor{dir = 8; icon_state = "wood"},/turf/unsimulated/wall{dir = 1; icon = 'icons/turf/shuttle.dmi'; icon_state = "window5_end"; name = "window"; opacity = 0; tag = "icon-window5_end (NORTH)"},/area/admin) +"DY" = (/obj/machinery/computer/mech_bay_power_console,/obj/structure/cable{icon_state = "0-2";d2 = 2},/turf/unsimulated/floor{tag = "icon-floor";icon_state = "floor"},/area/admin) +"DZ" = (/obj/structure/rack,/obj/item/clothing/under/rank/centcom/captain{pixel_x = -3;pixel_y = 3},/obj/item/clothing/under/rank/centcom/officer,/obj/item/clothing/under/rank/centcom/representative{pixel_x = 3;pixel_y = -3},/turf/unsimulated/floor{tag = "icon-floor";icon_state = "floor"},/area/admin) +"Ea" = (/obj/structure/rack,/obj/item/clothing/glasses/night{pixel_x = -3;pixel_y = 3},/obj/item/clothing/glasses/hud/health/night,/obj/item/clothing/glasses/hud/security/night{pixel_x = 3;pixel_y = -3},/turf/unsimulated/floor{tag = "icon-floor";icon_state = "floor"},/area/admin) +"Eb" = (/obj/structure/rack,/obj/item/clothing/shoes/magboots/syndie{pixel_x = -3;pixel_y = 3},/obj/item/clothing/shoes/magboots/advance,/obj/item/clothing/shoes/magboots{pixel_x = 3;pixel_y = -3},/turf/unsimulated/floor{tag = "icon-floor";icon_state = "floor"},/area/admin) +"Ec" = (/obj/structure/rack,/obj/item/clothing/shoes/green{pixel_x = -3;pixel_y = 3},/obj/item/clothing/shoes/centcom,/obj/item/clothing/shoes/syndigaloshes{pixel_x = 3;pixel_y = -3},/obj/item/clothing/shoes/rainbow{pixel_x = -3;pixel_y = 3},/obj/item/clothing/shoes/combat/swat,/obj/item/clothing/shoes/combat{pixel_x = 3;pixel_y = -3},/turf/unsimulated/floor{tag = "icon-floor";icon_state = "floor"},/area/admin) +"Ed" = (/obj/structure/rack,/obj/item/clothing/suit/pirate_black{pixel_x = -3;pixel_y = 3},/obj/item/clothing/suit/blacktrenchcoat,/obj/item/clothing/suit/jacket{pixel_x = 3;pixel_y = -3},/turf/unsimulated/floor{tag = "icon-floor";icon_state = "floor"},/area/admin) +"Ee" = (/obj/item/mecha_parts/mecha_equipment/cable_layer,/obj/item/mecha_parts/mecha_equipment/drill/diamonddrill,/obj/item/mecha_parts/mecha_equipment/hydraulic_clamp,/obj/item/mecha_parts/mecha_equipment/rcd,/obj/item/mecha_parts/mecha_equipment/extinguisher,/obj/structure/closet/crate,/turf/unsimulated/floor{tag = "icon-floor";icon_state = "floor"},/area/admin) +"Ef" = (/turf/unsimulated/floor{tag = "icon-floor";icon_state = "floor"},/turf/unsimulated/wall{desc = "This window appears to be reinforced, it looks nearly impossible to break.";dir = 4;icon = 'icons/turf/shuttle.dmi';icon_state = "window5_end";name = "window";opacity = 0;tag = "icon-window5 (EAST)"},/area/admin) +"Eg" = (/obj/structure/rack,/obj/item/clothing/under/syndicate{pixel_x = -3;pixel_y = 3},/obj/item/clothing/under/syndicate/combat,/obj/item/clothing/under/acj{pixel_x = 3;pixel_y = -3},/turf/unsimulated/floor{tag = "icon-floor";icon_state = "floor"},/area/admin) +"Eh" = (/obj/structure/mirror{pixel_y = -30},/turf/unsimulated/floor{tag = "icon-floor";icon_state = "floor"},/area/admin) +"Ei" = (/obj/structure/rack,/obj/item/clothing/suit/space/hardsuit/syndi{pixel_x = -3;pixel_y = 3},/obj/item/clothing/suit/space/hardsuit/wizard,/obj/item/clothing/suit/space/santa{pixel_x = 3;pixel_y = -3},/turf/unsimulated/floor{tag = "icon-floor";icon_state = "floor"},/area/admin) +"Ej" = (/obj/mecha/combat/marauder/mauler/loaded,/turf/unsimulated/floor{tag = "icon-floor";icon_state = "floor"},/area/admin) +"Ek" = (/obj/mecha/combat/gygax/dark/loaded,/turf/unsimulated/floor{tag = "icon-floor";icon_state = "floor"},/area/admin) +"El" = (/obj/effect/decal/mecha_wreckage/phazon,/turf/unsimulated/floor{tag = "icon-floor";icon_state = "floor"},/area/admin) +"Em" = (/obj/item/mecha_parts/mecha_equipment/weapon/energy/laser,/obj/item/mecha_parts/mecha_equipment/weapon/energy/ion,/obj/item/mecha_parts/mecha_equipment/weapon/energy/pulse,/obj/item/mecha_parts/mecha_equipment/weapon/honker,/obj/item/mecha_parts/mecha_equipment/weapon/ballistic/carbine,/obj/item/mecha_parts/mecha_equipment/weapon/ballistic/lmg,/obj/item/mecha_parts/mecha_equipment/weapon/ballistic/missile_rack,/obj/item/mecha_parts/mecha_equipment/weapon/ballistic/missile_rack/flashbang/clusterbang,/obj/item/mecha_parts/mecha_equipment/weapon/ballistic/scattershot,/obj/structure/closet/crate,/turf/unsimulated/floor{tag = "icon-floor";icon_state = "floor"},/area/admin) +"En" = (/turf/space,/turf/unsimulated/wall{dir = 4;icon = 'icons/turf/shuttle.dmi';icon_state = "diagonalWall3"},/area/admin) +"Eo" = (/obj/machinery/door/airlock/hatch{name = "Clothing Storage";req_access_txt = "0"},/turf/unsimulated/floor{tag = "icon-floor";icon_state = "floor"},/area/admin) +"Ep" = (/obj/machinery/door/airlock/hatch{name = "Mecha Room";req_access_txt = "0"},/turf/unsimulated/floor{tag = "icon-floor";icon_state = "floor"},/area/admin) +"Eq" = (/turf/unsimulated/floor{icon_state = "freezerfloor";dir = 2},/turf/unsimulated/wall{dir = 2;icon = 'icons/turf/shuttle.dmi';icon_state = "window5_end";name = "window";opacity = 0;tag = "icon-window5_end"},/area/admin) +"Er" = (/turf/unsimulated/floor{icon_state = "freezerfloor";dir = 2},/turf/unsimulated/wall{dir = 2;icon = 'icons/turf/shuttle.dmi';icon_state = "window5_mid";name = "window";opacity = 0;tag = "icon-window5_mid"},/area/admin) +"Es" = (/turf/unsimulated/floor{icon_state = "freezerfloor";dir = 2},/turf/unsimulated/wall{dir = 1;icon = 'icons/turf/shuttle.dmi';icon_state = "window5_end";name = "window";opacity = 0;tag = "icon-window5_end (NORTH)"},/area/admin) +"Et" = (/turf/unsimulated/floor{tag = "icon-floor";icon_state = "floor"},/turf/simulated/shuttle/wall{tag = "icon-diagonalWall3 (EAST)";icon_state = "diagonalWall3";dir = 4},/area/admin) +"Eu" = (/turf/unsimulated/floor{tag = "icon-floor";icon_state = "floor"},/turf/simulated/shuttle/wall{tag = "icon-diagonalWall3";icon_state = "diagonalWall3";dir = 2},/area/admin) +"Ev" = (/obj/machinery/chem_master,/turf/unsimulated/floor{icon_state = "freezerfloor";dir = 2},/area/admin) +"Ew" = (/turf/unsimulated/floor{icon_state = "freezerfloor";dir = 2},/area/admin) +"Ex" = (/obj/structure/table,/obj/item/storage/box/beakers,/obj/item/reagent_containers/glass/beaker/bluespace,/obj/item/reagent_containers/glass/beaker/bluespace,/obj/item/reagent_containers/glass/beaker/bluespace,/obj/item/reagent_containers/glass/beaker/bluespace,/turf/unsimulated/floor{icon_state = "freezerfloor";dir = 2},/area/admin) +"Ey" = (/obj/structure/table,/obj/machinery/reagentgrinder,/turf/unsimulated/floor{icon_state = "freezerfloor";dir = 2},/area/admin) +"Ez" = (/obj/structure/table,/obj/item/storage/pill_bottle/random_drug_bottle,/obj/item/reagent_containers/glass/bottle/adminordrazine,/turf/unsimulated/floor{icon_state = "freezerfloor";dir = 2},/area/admin) +"EB" = (/obj/machinery/door/airlock/external,/obj/machinery/door/poddoor{density = 0;icon_state = "open";id_tag = "ADMINLOCKDOWN";name = "Security Doors";opacity = 0},/turf/unsimulated/floor{tag = "icon-floor";icon_state = "floor"},/area/admin) +"EC" = (/obj/machinery/door/airlock/hatch{name = "External Airlock";req_access_txt = "0"},/turf/unsimulated/floor{tag = "icon-floor";icon_state = "floor"},/area/admin) +"ED" = (/turf/unsimulated/floor{icon_state = "freezerfloor";dir = 2},/turf/unsimulated/wall{desc = "This window appears to be reinforced, it looks nearly impossible to break.";dir = 8;icon = 'icons/turf/shuttle.dmi';icon_state = "window5_end";name = "window";opacity = 0;tag = "icon-window5_end (WEST)"},/area/admin) +"EE" = (/obj/machinery/chem_dispenser{desc = "It appears Fox is doing more fruit chemistry today!";hackedcheck = 1},/turf/unsimulated/floor{icon_state = "freezerfloor";dir = 2},/area/admin) +"EG" = (/obj/structure/reagent_dispensers/fueltank,/turf/unsimulated/floor{icon_state = "freezerfloor";dir = 2},/area/admin) +"EH" = (/obj/machinery/door/airlock/hatch{name = "Armory";req_access_txt = "0"},/turf/unsimulated/floor{tag = "icon-floor";icon_state = "floor"},/area/admin) +"EI" = (/turf/unsimulated/floor{tag = "icon-floor";icon_state = "floor"},/turf/unsimulated/wall{dir = 1;icon = 'icons/turf/shuttle.dmi';icon_state = "diagonalWall3"},/area/admin) +"EJ" = (/turf/unsimulated/floor{icon_state = "freezerfloor";dir = 2},/turf/unsimulated/wall{desc = "This window appears to be reinforced, it looks nearly impossible to break.";dir = 4;icon = 'icons/turf/shuttle.dmi';icon_state = "window5_end";name = "window";opacity = 0;tag = "icon-window5 (EAST)"},/area/admin) +"EK" = (/obj/machinery/chem_heater,/turf/unsimulated/floor{icon_state = "freezerfloor";dir = 2},/area/admin) +"EL" = (/obj/item/storage/box/syringes,/obj/item/assembly/igniter,/obj/item/assembly/igniter,/obj/item/assembly/igniter,/obj/item/assembly/igniter,/obj/item/assembly/timer,/obj/item/assembly/timer,/obj/item/assembly/timer,/obj/item/assembly/timer,/obj/item/grenade/chem_grenade/large,/obj/item/grenade/chem_grenade/large,/obj/item/grenade/chem_grenade/large,/obj/item/grenade/chem_grenade/large,/obj/item/gun/syringe/rapidsyringe,/obj/item/reagent_containers/spray/chemsprayer,/obj/structure/closet,/obj/item/gun/projectile/shotgun/sc_pump,/obj/item/ammo_casing/shotgun/dart,/obj/item/ammo_casing/shotgun/dart,/obj/item/ammo_casing/shotgun/dart,/obj/item/ammo_casing/shotgun/dart,/obj/item/ammo_casing/shotgun/dart,/obj/item/ammo_casing/shotgun/dart,/turf/unsimulated/floor{icon_state = "freezerfloor";dir = 2},/area/admin) +"EM" = (/turf/space,/turf/unsimulated/wall{dir = 2;icon = 'icons/turf/shuttle.dmi';icon_state = "diagonalWall3"},/area/admin) +"EN" = (/obj/structure/rack,/obj/item/ammo_box/magazine/m10mm,/obj/item/ammo_box/magazine/m10mm,/obj/item/ammo_box/magazine/m10mm,/obj/item/ammo_box/magazine/m10mm,/obj/item/ammo_box/magazine/m10mm,/obj/item/ammo_box/magazine/m10mm,/obj/item/gun/projectile/automatic/pistol,/obj/item/gun/projectile/automatic/pistol{pixel_x = 3;pixel_y = -3},/obj/item/suppressor,/obj/item/suppressor{pixel_x = 3;pixel_y = -3},/turf/unsimulated/floor{tag = "icon-floor";icon_state = "floor"},/area/admin) +"EO" = (/obj/structure/rack,/obj/item/ammo_box/magazine/m12g,/obj/item/ammo_box/magazine/m12g,/obj/item/ammo_box/magazine/m12g/stun,/obj/item/ammo_box/magazine/m12g/stun,/obj/item/ammo_box/magazine/m12g/dragon,/obj/item/ammo_box/magazine/m12g/dragon,/obj/item/gun/projectile/automatic/shotgun/bulldog,/obj/item/gun/projectile/automatic/shotgun/bulldog{pixel_x = 3;pixel_y = -3},/turf/unsimulated/floor{tag = "icon-floor";icon_state = "floor"},/area/admin) +"EP" = (/obj/structure/rack,/obj/item/ammo_box/magazine/smgm45,/obj/item/ammo_box/magazine/smgm45,/obj/item/ammo_box/magazine/smgm45,/obj/item/ammo_box/magazine/smgm45,/obj/item/ammo_box/magazine/smgm45,/obj/item/ammo_box/magazine/smgm45,/obj/item/gun/projectile/automatic/c20r,/obj/item/gun/projectile/automatic/c20r{pixel_x = 3;pixel_y = -3},/turf/unsimulated/floor{tag = "icon-floor";icon_state = "floor"},/area/admin) +"EQ" = (/obj/machinery/vending/liberationstation,/turf/unsimulated/floor{tag = "icon-floor";icon_state = "floor"},/area/admin) +"ER" = (/obj/structure/rack,/obj/item/ammo_box/magazine/m75,/obj/item/ammo_box/magazine/m75,/obj/item/ammo_box/magazine/m75,/obj/item/ammo_box/magazine/m75,/obj/item/ammo_box/magazine/m75,/obj/item/ammo_box/magazine/m75,/obj/item/gun/projectile/automatic/gyropistol,/obj/item/gun/projectile/automatic/gyropistol{pixel_x = 3;pixel_y = -3},/turf/unsimulated/floor{tag = "icon-floor";icon_state = "floor"},/area/admin) +"ES" = (/obj/structure/rack,/obj/item/ammo_box/magazine/m50,/obj/item/ammo_box/magazine/m50,/obj/item/ammo_box/magazine/m50,/obj/item/ammo_box/magazine/m50,/obj/item/ammo_box/magazine/m50,/obj/item/ammo_box/magazine/m50,/obj/item/gun/projectile/automatic/pistol/deagle,/obj/item/gun/projectile/automatic/pistol/deagle{pixel_x = 3;pixel_y = -3},/turf/unsimulated/floor{tag = "icon-floor";icon_state = "floor"},/area/admin) +"ET" = (/obj/structure/rack,/obj/item/ammo_box/a357,/obj/item/ammo_box/a357,/obj/item/gun/projectile/revolver/mateba,/obj/item/gun/projectile/revolver/mateba{pixel_x = 3;pixel_y = -3},/turf/unsimulated/floor{tag = "icon-floor";icon_state = "floor"},/area/admin) +"EV" = (/obj/structure/table,/obj/item/storage/box/beakers,/obj/item/reagent_containers/glass/beaker/bluespace,/obj/item/reagent_containers/glass/beaker/bluespace,/obj/item/reagent_containers/glass/beaker/bluespace,/obj/item/reagent_containers/glass/beaker/bluespace,/obj/item/storage/box/autoinjectors,/turf/unsimulated/floor{icon_state = "freezerfloor";dir = 2},/area/admin) +"EW" = (/obj/structure/table,/obj/item/storage/box/syringes,/obj/item/assembly/igniter,/obj/item/assembly/igniter,/obj/item/assembly/igniter,/obj/item/assembly/igniter,/obj/item/assembly/timer,/obj/item/assembly/timer,/obj/item/assembly/timer,/obj/item/assembly/timer,/obj/item/grenade/chem_grenade/large,/obj/item/grenade/chem_grenade/large,/obj/item/grenade/chem_grenade/large,/obj/item/grenade/chem_grenade/large,/turf/unsimulated/floor{icon_state = "freezerfloor";dir = 2},/area/admin) +"EX" = (/obj/structure/table,/obj/item/assembly/signaler,/obj/item/assembly/signaler,/obj/item/assembly/signaler,/obj/item/assembly/signaler,/obj/item/assembly/signaler,/obj/item/assembly/infra,/obj/item/assembly/infra,/obj/item/assembly/infra,/obj/item/assembly/infra,/obj/item/assembly/infra,/obj/item/assembly/prox_sensor,/obj/item/assembly/prox_sensor,/obj/item/assembly/prox_sensor,/obj/item/assembly/prox_sensor,/obj/item/assembly/prox_sensor,/turf/unsimulated/floor{icon_state = "freezerfloor";dir = 2},/area/admin) +"EY" = (/turf/unsimulated/floor{tag = "icon-floor";icon_state = "floor"},/turf/unsimulated/wall{dir = 4;icon = 'icons/turf/shuttle.dmi';icon_state = "window5";name = "window";opacity = 0;tag = "icon-window5 (EAST)"},/area/admin) +"EZ" = (/turf/unsimulated/floor{icon_state = "freezerfloor";dir = 2},/turf/unsimulated/wall{dir = 2;icon = 'icons/turf/shuttle.dmi';icon_state = "window5";name = "window";opacity = 0;tag = "icon-window5"},/area/admin) +"Fa" = (/obj/machinery/door/poddoor{density = 0;icon_state = "open";id_tag = "ADMINCHEMLOCKDOWN";name = "Security Doors";opacity = 0},/obj/machinery/door/airlock/hatch{name = "Chem Lab";req_access_txt = "0"},/turf/unsimulated/floor{icon_state = "freezerfloor";dir = 2},/area/admin) +"Fb" = (/obj/structure/rack,/obj/item/ammo_box/magazine/mm556x45,/obj/item/ammo_box/magazine/mm556x45,/obj/item/ammo_box/magazine/mm556x45,/obj/item/ammo_box/magazine/mm556x45,/obj/item/gun/projectile/automatic/l6_saw,/obj/item/gun/projectile/automatic/l6_saw{pixel_x = 3;pixel_y = -3},/turf/unsimulated/floor{tag = "icon-floor";icon_state = "floor"},/area/admin) +"Fc" = (/obj/structure/rack,/obj/item/gun/projectile/automatic/proto,/obj/item/gun/projectile/automatic/proto{pixel_x = 3;pixel_y = -3},/turf/unsimulated/floor{tag = "icon-floor";icon_state = "floor"},/area/admin) +"Fd" = (/obj/structure/rack,/obj/item/ammo_box/magazine/m556,/obj/item/ammo_box/magazine/m556,/obj/item/ammo_box/magazine/m556,/obj/item/ammo_box/magazine/m556,/obj/item/ammo_box/magazine/m556,/obj/item/ammo_box/magazine/m556,/obj/item/ammo_box/a40mm,/obj/item/ammo_box/a40mm,/obj/item/ammo_box/a40mm,/obj/item/ammo_box/a40mm,/obj/item/gun/projectile/automatic/m90,/obj/item/gun/projectile/automatic/m90{pixel_x = 3;pixel_y = -3},/turf/unsimulated/floor{tag = "icon-floor";icon_state = "floor"},/area/admin) +"Fe" = (/obj/structure/mirror{dir = 4;pixel_x = 0;pixel_y = -32},/turf/unsimulated/floor{tag = "icon-floor";icon_state = "floor"},/area/admin) +"Ff" = (/obj/machinery/optable,/turf/unsimulated/floor{icon_state = "freezerfloor";dir = 2},/area/admin) +"Fh" = (/obj/structure/table,/obj/item/gun/energy/pulse/pistol,/obj/machinery/door_control{desc = "A remote control switch to lock down the admin lab.";icon_state = "doorctrl0";id = "ADMINCHEMLOCKDOWN";name = "Lockdown";pixel_y = 24;req_access_txt = "0"},/turf/unsimulated/floor{dir = 9;icon_state = "carpetside"},/area/admin) +"Fi" = (/turf/unsimulated/floor{dir = 1;icon_state = "carpetside"},/area/admin) +"Fj" = (/obj/machinery/computer/secure_data,/obj/item/paper/sop,/turf/unsimulated/floor{dir = 5;icon_state = "carpetside"},/area/admin) +"Fk" = (/turf/unsimulated/floor{tag = "icon-floor";icon_state = "floor"},/turf/unsimulated/wall{dir = 8;icon = 'icons/turf/shuttle.dmi';icon_state = "diagonalWall3"},/area/admin) +"Fl" = (/obj/effect/decal/cleanable/blood,/turf/unsimulated/floor{icon_state = "freezerfloor";dir = 2},/area/admin) +"Fm" = (/obj/structure/table,/obj/item/stack/cable_coil,/obj/item/stack/rods,/obj/item/pen,/turf/unsimulated/floor{icon_state = "freezerfloor";dir = 2},/area/admin) +"Fn" = (/obj/machinery/computer/communications,/turf/unsimulated/floor{dir = 8;icon_state = "carpetside"},/area/admin) +"Fp" = (/obj/machinery/computer/med_data,/turf/unsimulated/floor{dir = 4;icon_state = "carpetside"},/area/admin) +"Fq" = (/obj/structure/rack,/obj/item/shield/energy,/obj/item/shield/energy{pixel_x = 3;pixel_y = -3},/turf/unsimulated/floor{tag = "icon-floor";icon_state = "floor"},/area/admin) +"Fr" = (/obj/structure/rack,/obj/item/katana{pixel_x = 3;pixel_y = -3},/obj/item/katana,/turf/unsimulated/floor{tag = "icon-floor";icon_state = "floor"},/area/admin) +"Fs" = (/obj/structure/rack,/obj/item/melee/energy/sword/saber,/obj/item/melee/energy/sword/saber{pixel_x = 3;pixel_y = -3},/turf/unsimulated/floor{tag = "icon-floor";icon_state = "floor"},/area/admin) +"Ft" = (/obj/structure/rack,/obj/machinery/recharger/wallcharger{pixel_x = 30},/obj/item/gun/energy/xray,/obj/item/gun/energy/xray{pixel_x = 3;pixel_y = -3},/turf/unsimulated/floor{tag = "icon-floor";icon_state = "floor"},/area/admin) +"Fu" = (/obj/structure/table,/obj/random/toolbox,/obj/random/bomb_supply,/obj/machinery/syndicatebomb/badmin/clown,/turf/unsimulated/floor{tag = "icon-dark";icon_state = "dark"},/area/admin) +"Fv" = (/turf/unsimulated/floor{tag = "icon-dark";icon_state = "dark"},/area/admin) +"Fw" = (/obj/structure/table,/obj/item/storage/toolbox/syndicate,/turf/unsimulated/floor{tag = "icon-dark";icon_state = "dark"},/area/admin) +"Fx" = (/obj/structure/table,/obj/item/rcd,/obj/item/rcd_ammo,/obj/item/rcd_ammo,/obj/item/storage/pill_bottle/random_drug_bottle,/turf/unsimulated/floor{tag = "icon-dark";icon_state = "dark"},/area/admin) +"Fy" = (/obj/structure/table,/obj/item/scalpel,/obj/item/bonesetter,/obj/item/bonegel,/turf/unsimulated/floor{icon_state = "freezerfloor";dir = 2},/area/admin) +"Fz" = (/obj/structure/table,/obj/item/kitchen/utensil/fork,/obj/item/lighter,/obj/item/restraints/handcuffs/cable/red,/obj/item/storage/box/mousetraps,/obj/item/storage/fancy/cigarettes,/obj/item/pen,/turf/unsimulated/floor{icon_state = "freezerfloor";dir = 2},/area/admin) +"FA" = (/obj/structure/table,/obj/structure/window/reinforced,/obj/item/paper_bin,/obj/item/pen,/turf/unsimulated/floor{dir = 10;icon_state = "carpetside"},/area/admin) +"FB" = (/obj/structure/table,/obj/machinery/door/window/southleft{name = "security checkpoint";req_access_txt = "0"},/turf/unsimulated/floor{dir = 2;icon_state = "carpetside"},/area/admin) +"FC" = (/obj/structure/table,/obj/structure/window/reinforced,/obj/machinery/recharger,/turf/unsimulated/floor{dir = 6;icon_state = "carpetside"},/area/admin) +"FD" = (/obj/machinery/recharger/wallcharger{pixel_x = 30},/obj/structure/rack,/obj/item/gun/energy/pulse/pistol/m1911,/obj/item/gun/energy/pulse/pistol/m1911{pixel_x = 3;pixel_y = -3},/turf/unsimulated/floor{tag = "icon-floor";icon_state = "floor"},/area/admin) +"FE" = (/obj/structure/table,/obj/item/tank/oxygen/yellow,/obj/random/bomb_supply,/obj/item/clothing/under/rebeloutfit,/obj/item/clothing/suit/poncho/ponchoshame,/obj/item/clothing/head/sombrero/shamebrero,/turf/unsimulated/floor{tag = "icon-dark";icon_state = "dark"},/area/admin) +"FF" = (/obj/machinery/door/airlock/hatch{name = "Tool Storage";req_access_txt = "0"},/turf/unsimulated/floor{tag = "icon-dark";icon_state = "dark"},/area/admin) +"FG" = (/obj/structure/table,/obj/item/FixOVein,/obj/item/retractor,/obj/item/cautery,/turf/unsimulated/floor{icon_state = "freezerfloor";dir = 2},/area/admin) +"FH" = (/obj/structure/kitchenspike,/turf/unsimulated/floor{icon_state = "freezerfloor";dir = 2},/area/admin) +"FI" = (/turf/unsimulated/floor{dir = 8;icon_state = "wood"},/turf/unsimulated/wall{dir = 2;icon = 'icons/turf/shuttle.dmi';icon_state = "window5_end";name = "window";opacity = 0;tag = "icon-window5_end"},/area/admin) +"FJ" = (/turf/unsimulated/floor{dir = 8;icon_state = "wood"},/turf/unsimulated/wall{dir = 2;icon = 'icons/turf/shuttle.dmi';icon_state = "window5_mid";name = "window";opacity = 0;tag = "icon-window5_mid"},/area/admin) +"FK" = (/turf/unsimulated/floor{dir = 8;icon_state = "wood"},/turf/unsimulated/wall{dir = 1;icon = 'icons/turf/shuttle.dmi';icon_state = "window5_end";name = "window";opacity = 0;tag = "icon-window5_end (NORTH)"},/area/admin) "FL" = (/turf/simulated/wall/r_wall,/area/adminconstruction) -"FM" = (/obj/structure/rack,/obj/item/gun/energy/meteorgun,/obj/item/gun/energy/meteorgun{pixel_x = 3; pixel_y = -3},/turf/unsimulated/floor{tag = "icon-floor"; icon_state = "floor"},/area/admin) -"FN" = (/obj/structure/rack,/obj/item/twohanded/knighthammer{pixel_x = -3; pixel_y = 3},/obj/item/twohanded/mjollnir,/obj/item/twohanded/singularityhammer{pixel_x = 3; pixel_y = -3},/turf/unsimulated/floor{tag = "icon-floor"; icon_state = "floor"},/area/admin) -"FO" = (/obj/structure/rack,/obj/item/gun/energy/kinetic_accelerator/crossbow,/obj/item/gun/energy/kinetic_accelerator/crossbow{pixel_x = 3; pixel_y = -3},/turf/unsimulated/floor{tag = "icon-floor"; icon_state = "floor"},/area/admin) -"FP" = (/obj/machinery/recharger/wallcharger{pixel_x = 30},/obj/structure/rack,/obj/item/gun/energy/pulse,/obj/item/gun/energy/pulse{pixel_x = 3; pixel_y = -3},/turf/unsimulated/floor{tag = "icon-floor"; icon_state = "floor"},/area/admin) -"FQ" = (/obj/structure/table,/obj/random/tool,/obj/item/clothing/gloves/color/yellow,/obj/item/pinpointer/advpinpointer,/turf/unsimulated/floor{tag = "icon-dark"; icon_state = "dark"},/area/admin) -"FR" = (/obj/structure/table,/obj/item/grenade/syndieminibomb{pixel_x = 4; pixel_y = 2; pixel_z = 0},/obj/item/grenade/syndieminibomb{pixel_x = -1},/turf/unsimulated/floor{tag = "icon-dark"; icon_state = "dark"},/area/admin) -"FS" = (/obj/structure/table,/obj/machinery/recharger{pixel_y = 0},/obj/item/toy/cards/deck/syndicate/black,/turf/unsimulated/floor{tag = "icon-dark"; icon_state = "dark"},/area/admin) -"FU" = (/obj/structure/table,/obj/item/hemostat,/obj/item/circular_saw,/turf/unsimulated/floor{icon_state = "freezerfloor"; dir = 2},/area/admin) -"FV" = (/obj/machinery/door/poddoor{density = 0; icon_state = "open"; id_tag = "ADMINCHEMLOCKDOWN"; name = "Security Doors"; opacity = 0},/obj/machinery/door/airlock/hatch{desc = "Uh oh."; name = "Operating Theater"; req_access_txt = "0"},/turf/unsimulated/floor{icon_state = "freezerfloor"; dir = 2},/area/admin) -"FW" = (/turf/unsimulated/floor{dir = 8; icon_state = "wood"},/turf/unsimulated/wall{dir = 4; icon = 'icons/turf/shuttle.dmi'; icon_state = "diagonalWall3"},/area/admin) -"FX" = (/turf/unsimulated/floor{dir = 8; icon_state = "wood"},/area/admin) -"FY" = (/turf/unsimulated/floor{dir = 8; icon_state = "wood"},/turf/unsimulated/wall{dir = 2; icon = 'icons/turf/shuttle.dmi'; icon_state = "diagonalWall3"},/area/admin) -"FZ" = (/turf/simulated/floor/plasteel{dir = 8; icon_state = "neutralfull"},/area/adminconstruction) -"Ga" = (/turf/unsimulated/floor{tag = "icon-floor"; icon_state = "floor"},/turf/unsimulated/wall{dir = 4; icon = 'icons/turf/shuttle.dmi'; icon_state = "diagonalWall3"},/area/admin) -"Gb" = (/turf/unsimulated/floor{tag = "icon-floor"; icon_state = "floor"},/turf/unsimulated/wall{dir = 2; icon = 'icons/turf/shuttle.dmi'; icon_state = "diagonalWall3"},/area/admin) -"Gc" = (/obj/machinery/door/airlock/hatch{desc = "You've heard rumors of the horrors that go on within this lab."; name = "Laboratory (DANGER!)"; req_access_txt = "0"},/turf/unsimulated/floor{tag = "icon-floor"; icon_state = "floor"},/area/admin) -"Gd" = (/obj/machinery/computer/ordercomp,/turf/unsimulated/floor{tag = "icon-floor"; icon_state = "floor"},/area/admin) -"Ge" = (/obj/machinery/computer/crew,/turf/unsimulated/floor{tag = "icon-floor"; icon_state = "floor"},/area/admin) -"Gf" = (/obj/machinery/computer/security{network = list("SS13","Telecomms","Research Outpost","Mining Outpost","ERT","CentComm","Thunderdome")},/turf/unsimulated/floor{tag = "icon-floor"; icon_state = "floor"},/area/admin) -"Gg" = (/obj/machinery/computer/rdservercontrol{badmin = 1; name = "Master R&D Server Controller"},/turf/unsimulated/floor{tag = "icon-floor"; icon_state = "floor"},/area/admin) -"Gh" = (/obj/machinery/r_n_d/server/centcom,/turf/unsimulated/floor{tag = "icon-floor"; icon_state = "floor"},/area/admin) -"Gi" = (/obj/structure/table,/obj/item/card/id/silver{pixel_x = -3; pixel_y = -3},/obj/item/card/id/captains_spare,/obj/item/card/id/lifetime{pixel_x = 3; pixel_y = 3},/turf/unsimulated/floor{tag = "icon-floor"; icon_state = "floor"},/area/admin) -"Gj" = (/obj/structure/table,/obj/item/card/id/centcom{pixel_x = -3; pixel_y = -3},/obj/item/card/id{pixel_x = 0; pixel_y = 0},/obj/item/card/id/admin{pixel_x = 3; pixel_y = 3},/turf/unsimulated/floor{tag = "icon-floor"; icon_state = "floor"},/area/admin) -"Gk" = (/turf/unsimulated/floor{dir = 8; icon_state = "wood"},/turf/unsimulated/wall{dir = 2; icon = 'icons/turf/shuttle.dmi'; icon_state = "window5"; name = "window"; opacity = 0; tag = "icon-window5"},/area/admin) -"Gl" = (/obj/structure/chair/comfy/black,/turf/unsimulated/floor{dir = 8; icon_state = "wood"},/area/admin) -"Gm" = (/obj/machinery/computer/card,/turf/unsimulated/floor{tag = "icon-floor"; icon_state = "floor"},/area/admin) -"Go" = (/obj/machinery/door/airlock/public/glass{name = "Computer Hub"; req_access_txt = "0"},/obj/machinery/door/poddoor{density = 0; icon_state = "open"; id_tag = "ADMINLOCKDOWN"; name = "Security Doors"; opacity = 0},/turf/unsimulated/floor{tag = "icon-floor"; icon_state = "floor"},/area/admin) -"Gp" = (/obj/effect/landmark{name = "aroomwarp"; tag = ""},/turf/unsimulated/floor{tag = "icon-floor"; icon_state = "floor"},/area/admin) -"Gq" = (/obj/machinery/door/airlock/hatch{desc = "For all your shady business needs"; name = "Gambling Den"; req_access_txt = "0"},/turf/unsimulated/floor{dir = 8; icon_state = "wood"},/area/admin) -"Gr" = (/obj/structure/table/wood,/turf/unsimulated/floor{dir = 8; icon_state = "wood"},/area/admin) -"Gs" = (/obj/structure/table/wood,/obj/item/toy/cards/deck/syndicate,/turf/unsimulated/floor{dir = 8; icon_state = "wood"},/area/admin) -"Gt" = (/obj/structure/table/wood,/obj/item/reagent_containers/food/drinks/drinkingglass/devilskiss,/turf/unsimulated/floor{dir = 8; icon_state = "wood"},/area/admin) -"Gu" = (/turf/unsimulated/floor{dir = 8; icon_state = "wood"},/turf/unsimulated/wall{desc = "This window appears to be reinforced, it looks nearly impossible to break."; dir = 8; icon = 'icons/turf/shuttle.dmi'; icon_state = "window5_end"; name = "window"; opacity = 0; tag = "icon-window5_end (WEST)"},/area/admin) -"Gx" = (/obj/structure/chair/stool,/turf/unsimulated/floor{dir = 8; icon_state = "wood"},/area/admin) -"Gy" = (/obj/structure/table/wood,/obj/item/lighter/zippo/engraved,/obj/item/storage/fancy/cigarettes/dromedaryco,/turf/unsimulated/floor{dir = 8; icon_state = "wood"},/area/admin) -"Gz" = (/turf/unsimulated/floor{dir = 8; icon_state = "wood"},/turf/unsimulated/wall{desc = "This window appears to be reinforced, it looks nearly impossible to break."; dir = 4; icon = 'icons/turf/shuttle.dmi'; icon_state = "window5_end"; name = "window"; opacity = 0; tag = "icon-window5 (EAST)"},/area/admin) -"GA" = (/obj/machinery/computer/communications,/turf/unsimulated/floor{tag = "icon-floor"; icon_state = "floor"},/area/admin) -"GC" = (/turf/unsimulated/floor{dir = 8; icon_state = "wood"},/turf/unsimulated/wall{dir = 1; icon = 'icons/turf/shuttle.dmi'; icon_state = "diagonalWall3"},/area/admin) -"GD" = (/turf/unsimulated/floor{dir = 8; icon_state = "wood"},/turf/unsimulated/wall{dir = 8; icon = 'icons/turf/shuttle.dmi'; icon_state = "diagonalWall3"},/area/admin) -"GE" = (/obj/machinery/computer/message_monitor,/obj/item/paper/monitorkey,/turf/unsimulated/floor{tag = "icon-floor"; icon_state = "floor"},/area/admin) -"GF" = (/obj/machinery/computer/atmos_alert,/turf/unsimulated/floor{tag = "icon-floor"; icon_state = "floor"},/area/admin) -"GG" = (/obj/machinery/computer/secure_data,/turf/unsimulated/floor{tag = "icon-floor"; icon_state = "floor"},/area/admin) -"GH" = (/obj/machinery/computer/account_database{name = "Admin Accounts Database"},/turf/unsimulated/floor{tag = "icon-floor"; icon_state = "floor"},/area/admin) -"GI" = (/obj/structure/table,/obj/item/gun/projectile/automatic/pistol,/turf/unsimulated/floor{tag = "icon-floor"; icon_state = "floor"},/area/admin) -"GJ" = (/obj/structure/table,/obj/machinery/door_control{desc = "A remote control switch to lock down external access to the admin room."; icon_state = "doorctrl0"; id = "ADMINLOCKDOWN"; name = "Lockdown"; pixel_y = 0; req_access_txt = "0"},/turf/unsimulated/floor{tag = "icon-floor"; icon_state = "floor"},/area/admin) -"GK" = (/obj/structure/table,/obj/item/storage/fancy/cigarettes/syndicate,/obj/item/reagent_containers/food/drinks/cans/adminbooze,/obj/item/reagent_containers/food/drinks/cans/badminbrew,/obj/item/reagent_containers/food/drinks/cans/madminmalt,/turf/unsimulated/floor{tag = "icon-floor"; icon_state = "floor"},/area/admin) -"GL" = (/obj/machinery/door/airlock/hatch{desc = "Danger: May contain robustness"; name = "Dojo"; req_access_txt = "0"},/turf/unsimulated/floor{tag = "icon-dark"; icon_state = "dark"},/area/admin) -"GM" = (/obj/machinery/door/airlock/public/glass{name = "Shuttle Bay"; req_access_txt = "0"},/turf/unsimulated/floor{tag = "icon-floor"; icon_state = "floor"},/area/admin) -"GN" = (/obj/structure/showcase,/turf/unsimulated/floor{tag = "icon-dark"; icon_state = "dark"},/area/admin) -"GO" = (/obj/item/storage/toolbox/syndicate{desc = "A powerful relic many men worked long and hard to keep safe and away from the forces of evil."; force = 1e+008; name = "toolbox of robustness"},/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/structure/table/wood,/turf/unsimulated/floor{tag = "icon-dark"; icon_state = "dark"},/area/admin) +"FM" = (/obj/structure/rack,/obj/item/gun/energy/meteorgun,/obj/item/gun/energy/meteorgun{pixel_x = 3;pixel_y = -3},/turf/unsimulated/floor{tag = "icon-floor";icon_state = "floor"},/area/admin) +"FN" = (/obj/structure/rack,/obj/item/twohanded/knighthammer{pixel_x = -3;pixel_y = 3},/obj/item/twohanded/mjollnir,/obj/item/twohanded/singularityhammer{pixel_x = 3;pixel_y = -3},/turf/unsimulated/floor{tag = "icon-floor";icon_state = "floor"},/area/admin) +"FO" = (/obj/structure/rack,/obj/item/gun/energy/kinetic_accelerator/crossbow,/obj/item/gun/energy/kinetic_accelerator/crossbow{pixel_x = 3;pixel_y = -3},/turf/unsimulated/floor{tag = "icon-floor";icon_state = "floor"},/area/admin) +"FP" = (/obj/machinery/recharger/wallcharger{pixel_x = 30},/obj/structure/rack,/obj/item/gun/energy/pulse,/obj/item/gun/energy/pulse{pixel_x = 3;pixel_y = -3},/turf/unsimulated/floor{tag = "icon-floor";icon_state = "floor"},/area/admin) +"FQ" = (/obj/structure/table,/obj/random/tool,/obj/item/clothing/gloves/color/yellow,/obj/item/pinpointer/advpinpointer,/turf/unsimulated/floor{tag = "icon-dark";icon_state = "dark"},/area/admin) +"FR" = (/obj/structure/table,/obj/item/grenade/syndieminibomb{pixel_x = 4;pixel_y = 2;pixel_z = 0},/obj/item/grenade/syndieminibomb{pixel_x = -1},/turf/unsimulated/floor{tag = "icon-dark";icon_state = "dark"},/area/admin) +"FS" = (/obj/structure/table,/obj/machinery/recharger{pixel_y = 0},/obj/item/toy/cards/deck/syndicate/black,/turf/unsimulated/floor{tag = "icon-dark";icon_state = "dark"},/area/admin) +"FU" = (/obj/structure/table,/obj/item/hemostat,/obj/item/circular_saw,/turf/unsimulated/floor{icon_state = "freezerfloor";dir = 2},/area/admin) +"FV" = (/obj/machinery/door/poddoor{density = 0;icon_state = "open";id_tag = "ADMINCHEMLOCKDOWN";name = "Security Doors";opacity = 0},/obj/machinery/door/airlock/hatch{desc = "Uh oh.";name = "Operating Theater";req_access_txt = "0"},/turf/unsimulated/floor{icon_state = "freezerfloor";dir = 2},/area/admin) +"FW" = (/turf/unsimulated/floor{dir = 8;icon_state = "wood"},/turf/unsimulated/wall{dir = 4;icon = 'icons/turf/shuttle.dmi';icon_state = "diagonalWall3"},/area/admin) +"FX" = (/turf/unsimulated/floor{dir = 8;icon_state = "wood"},/area/admin) +"FY" = (/turf/unsimulated/floor{dir = 8;icon_state = "wood"},/turf/unsimulated/wall{dir = 2;icon = 'icons/turf/shuttle.dmi';icon_state = "diagonalWall3"},/area/admin) +"FZ" = (/turf/simulated/floor/plasteel{dir = 8;icon_state = "neutralfull"},/area/adminconstruction) +"Ga" = (/turf/unsimulated/floor{tag = "icon-floor";icon_state = "floor"},/turf/unsimulated/wall{dir = 4;icon = 'icons/turf/shuttle.dmi';icon_state = "diagonalWall3"},/area/admin) +"Gb" = (/turf/unsimulated/floor{tag = "icon-floor";icon_state = "floor"},/turf/unsimulated/wall{dir = 2;icon = 'icons/turf/shuttle.dmi';icon_state = "diagonalWall3"},/area/admin) +"Gc" = (/obj/machinery/door/airlock/hatch{desc = "You've heard rumors of the horrors that go on within this lab.";name = "Laboratory (DANGER!)";req_access_txt = "0"},/turf/unsimulated/floor{tag = "icon-floor";icon_state = "floor"},/area/admin) +"Gd" = (/obj/machinery/computer/ordercomp,/turf/unsimulated/floor{tag = "icon-floor";icon_state = "floor"},/area/admin) +"Ge" = (/obj/machinery/computer/crew,/turf/unsimulated/floor{tag = "icon-floor";icon_state = "floor"},/area/admin) +"Gf" = (/obj/machinery/computer/security{network = list("SS13","Telecomms","Research Outpost","Mining Outpost","ERT","CentComm","Thunderdome")},/turf/unsimulated/floor{tag = "icon-floor";icon_state = "floor"},/area/admin) +"Gg" = (/obj/machinery/computer/rdservercontrol{badmin = 1;name = "Master R&D Server Controller"},/turf/unsimulated/floor{tag = "icon-floor";icon_state = "floor"},/area/admin) +"Gh" = (/obj/machinery/r_n_d/server/centcom,/turf/unsimulated/floor{tag = "icon-floor";icon_state = "floor"},/area/admin) +"Gi" = (/obj/structure/table,/obj/item/card/id/silver{pixel_x = -3;pixel_y = -3},/obj/item/card/id/captains_spare,/obj/item/card/id/lifetime{pixel_x = 3;pixel_y = 3},/turf/unsimulated/floor{tag = "icon-floor";icon_state = "floor"},/area/admin) +"Gj" = (/obj/structure/table,/obj/item/card/id/centcom{pixel_x = -3;pixel_y = -3},/obj/item/card/id{pixel_x = 0;pixel_y = 0},/obj/item/card/id/admin{pixel_x = 3;pixel_y = 3},/turf/unsimulated/floor{tag = "icon-floor";icon_state = "floor"},/area/admin) +"Gk" = (/turf/unsimulated/floor{dir = 8;icon_state = "wood"},/turf/unsimulated/wall{dir = 2;icon = 'icons/turf/shuttle.dmi';icon_state = "window5";name = "window";opacity = 0;tag = "icon-window5"},/area/admin) +"Gm" = (/obj/machinery/computer/card,/turf/unsimulated/floor{tag = "icon-floor";icon_state = "floor"},/area/admin) +"Go" = (/obj/machinery/door/airlock/public/glass{name = "Computer Hub";req_access_txt = "0"},/obj/machinery/door/poddoor{density = 0;icon_state = "open";id_tag = "ADMINLOCKDOWN";name = "Security Doors";opacity = 0},/turf/unsimulated/floor{tag = "icon-floor";icon_state = "floor"},/area/admin) +"Gp" = (/obj/effect/landmark{name = "aroomwarp";tag = ""},/turf/unsimulated/floor{tag = "icon-floor";icon_state = "floor"},/area/admin) +"Gq" = (/obj/machinery/door/airlock/hatch{desc = "For all your shady business needs";name = "Gambling Den";req_access_txt = "0"},/turf/unsimulated/floor{dir = 8;icon_state = "wood"},/area/admin) +"Gr" = (/obj/structure/table/wood,/turf/unsimulated/floor{dir = 8;icon_state = "wood"},/area/admin) +"Gs" = (/obj/structure/table/wood,/obj/item/toy/cards/deck/syndicate,/turf/unsimulated/floor{dir = 8;icon_state = "wood"},/area/admin) +"Gt" = (/obj/structure/table/wood,/obj/item/reagent_containers/food/drinks/drinkingglass/devilskiss,/turf/unsimulated/floor{dir = 8;icon_state = "wood"},/area/admin) +"Gu" = (/turf/unsimulated/floor{dir = 8;icon_state = "wood"},/turf/unsimulated/wall{desc = "This window appears to be reinforced, it looks nearly impossible to break.";dir = 8;icon = 'icons/turf/shuttle.dmi';icon_state = "window5_end";name = "window";opacity = 0;tag = "icon-window5_end (WEST)"},/area/admin) +"Gy" = (/obj/structure/table/wood,/obj/item/lighter/zippo/engraved,/obj/item/storage/fancy/cigarettes/dromedaryco,/turf/unsimulated/floor{dir = 8;icon_state = "wood"},/area/admin) +"Gz" = (/turf/unsimulated/floor{dir = 8;icon_state = "wood"},/turf/unsimulated/wall{desc = "This window appears to be reinforced, it looks nearly impossible to break.";dir = 4;icon = 'icons/turf/shuttle.dmi';icon_state = "window5_end";name = "window";opacity = 0;tag = "icon-window5 (EAST)"},/area/admin) +"GA" = (/obj/machinery/computer/communications,/turf/unsimulated/floor{tag = "icon-floor";icon_state = "floor"},/area/admin) +"GC" = (/turf/unsimulated/floor{dir = 8;icon_state = "wood"},/turf/unsimulated/wall{dir = 1;icon = 'icons/turf/shuttle.dmi';icon_state = "diagonalWall3"},/area/admin) +"GD" = (/turf/unsimulated/floor{dir = 8;icon_state = "wood"},/turf/unsimulated/wall{dir = 8;icon = 'icons/turf/shuttle.dmi';icon_state = "diagonalWall3"},/area/admin) +"GE" = (/obj/machinery/computer/message_monitor,/obj/item/paper/monitorkey,/turf/unsimulated/floor{tag = "icon-floor";icon_state = "floor"},/area/admin) +"GF" = (/obj/machinery/computer/atmos_alert,/turf/unsimulated/floor{tag = "icon-floor";icon_state = "floor"},/area/admin) +"GG" = (/obj/machinery/computer/secure_data,/turf/unsimulated/floor{tag = "icon-floor";icon_state = "floor"},/area/admin) +"GH" = (/obj/machinery/computer/account_database{name = "Admin Accounts Database"},/turf/unsimulated/floor{tag = "icon-floor";icon_state = "floor"},/area/admin) +"GI" = (/obj/structure/table,/obj/item/gun/projectile/automatic/pistol,/turf/unsimulated/floor{tag = "icon-floor";icon_state = "floor"},/area/admin) +"GJ" = (/obj/structure/table,/obj/machinery/door_control{desc = "A remote control switch to lock down external access to the admin room.";icon_state = "doorctrl0";id = "ADMINLOCKDOWN";name = "Lockdown";pixel_y = 0;req_access_txt = "0"},/turf/unsimulated/floor{tag = "icon-floor";icon_state = "floor"},/area/admin) +"GK" = (/obj/structure/table,/obj/item/storage/fancy/cigarettes/syndicate,/obj/item/reagent_containers/food/drinks/cans/adminbooze,/obj/item/reagent_containers/food/drinks/cans/badminbrew,/obj/item/reagent_containers/food/drinks/cans/madminmalt,/turf/unsimulated/floor{tag = "icon-floor";icon_state = "floor"},/area/admin) +"GL" = (/obj/machinery/door/airlock/hatch{desc = "Danger: May contain robustness";name = "Dojo";req_access_txt = "0"},/turf/unsimulated/floor{tag = "icon-dark";icon_state = "dark"},/area/admin) +"GM" = (/obj/machinery/door/airlock/public/glass{name = "Shuttle Bay";req_access_txt = "0"},/turf/unsimulated/floor{tag = "icon-floor";icon_state = "floor"},/area/admin) +"GN" = (/obj/structure/showcase,/turf/unsimulated/floor{tag = "icon-dark";icon_state = "dark"},/area/admin) +"GO" = (/obj/item/storage/toolbox/syndicate{desc = "A powerful relic many men worked long and hard to keep safe and away from the forces of evil.";force = 1e+008;name = "toolbox of robustness"},/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/structure/table/wood,/turf/unsimulated/floor{tag = "icon-dark";icon_state = "dark"},/area/admin) "GP" = (/turf/unsimulated/floor{icon_state = "gcircuit"},/area/admin) -"GQ" = (/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/obj/item/grenade/clusterbuster/smoke,/obj/structure/table/wood,/turf/unsimulated/floor{tag = "icon-dark"; icon_state = "dark"},/area/admin) -"GR" = (/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced,/obj/structure/table/wood,/obj/item/sleeping_carp_scroll,/turf/unsimulated/floor{tag = "icon-dark"; icon_state = "dark"},/area/admin) -"GS" = (/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced,/obj/structure/table/wood,/obj/item/twohanded/bostaff,/turf/unsimulated/floor{tag = "icon-dark"; icon_state = "dark"},/area/admin) -"GT" = (/obj/structure/ninjatele{pixel_x = -28},/turf/unsimulated/floor{tag = "icon-dark"; icon_state = "dark"},/area/admin) -"GU" = (/obj/structure/ninjatele{pixel_x = 28},/turf/unsimulated/floor{tag = "icon-dark"; icon_state = "dark"},/area/admin) -"GV" = (/turf/unsimulated/floor{tag = "icon-dark"; icon_state = "dark"},/turf/unsimulated/wall{dir = 1; icon = 'icons/turf/shuttle.dmi'; icon_state = "diagonalWall3"},/area/admin) -"GW" = (/turf/unsimulated/floor{tag = "icon-dark"; icon_state = "dark"},/turf/unsimulated/wall{dir = 8; icon = 'icons/turf/shuttle.dmi'; icon_state = "diagonalWall3"},/area/admin) -"GX" = (/obj/structure/bed,/turf/unsimulated/floor{tag = "icon-dark"; icon_state = "dark"},/area/admin) -"GY" = (/obj/effect/decal/cleanable/blood,/obj/structure/toilet{dir = 8},/turf/unsimulated/floor{tag = "icon-dark"; icon_state = "dark"},/area/admin) -"GZ" = (/obj/effect/decal/cleanable/fungus,/turf/unsimulated/wall{tag = "icon-wall3 (EAST)"; icon = 'icons/turf/shuttle.dmi'; icon_state = "wall3"; dir = 4},/area/admin) +"GQ" = (/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/obj/item/grenade/clusterbuster/smoke,/obj/structure/table/wood,/turf/unsimulated/floor{tag = "icon-dark";icon_state = "dark"},/area/admin) +"GR" = (/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced,/obj/structure/table/wood,/obj/item/sleeping_carp_scroll,/turf/unsimulated/floor{tag = "icon-dark";icon_state = "dark"},/area/admin) +"GS" = (/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced,/obj/structure/table/wood,/obj/item/twohanded/bostaff,/turf/unsimulated/floor{tag = "icon-dark";icon_state = "dark"},/area/admin) +"GT" = (/obj/structure/ninjatele{pixel_x = -28},/turf/unsimulated/floor{tag = "icon-dark";icon_state = "dark"},/area/admin) +"GU" = (/obj/structure/ninjatele{pixel_x = 28},/turf/unsimulated/floor{tag = "icon-dark";icon_state = "dark"},/area/admin) +"GV" = (/turf/unsimulated/floor{tag = "icon-dark";icon_state = "dark"},/turf/unsimulated/wall{dir = 1;icon = 'icons/turf/shuttle.dmi';icon_state = "diagonalWall3"},/area/admin) +"GW" = (/turf/unsimulated/floor{tag = "icon-dark";icon_state = "dark"},/turf/unsimulated/wall{dir = 8;icon = 'icons/turf/shuttle.dmi';icon_state = "diagonalWall3"},/area/admin) +"GY" = (/obj/effect/decal/cleanable/blood,/obj/structure/toilet{dir = 8},/turf/unsimulated/floor{tag = "icon-dark";icon_state = "dark"},/area/admin) +"GZ" = (/obj/effect/decal/cleanable/fungus,/turf/unsimulated/wall{tag = "icon-wall3 (EAST)";icon = 'icons/turf/shuttle.dmi';icon_state = "wall3";dir = 4},/area/admin) +"Ha" = (/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) "Hb" = (/obj/structure/window/reinforced{dir = 1},/turf/unsimulated/floor{icon_state = "engine"},/area/admin) -"Hc" = (/obj/machinery/door/window{dir = 1; name = "Suit Storage"; req_access_txt = "0"},/turf/unsimulated/floor{icon_state = "engine"},/area/admin) -"He" = (/obj/structure/window/reinforced,/turf/unsimulated/floor{tag = "icon-dark"; icon_state = "dark"},/area/admin) -"Hf" = (/obj/machinery/door/window/southleft{name = "Cell B"; req_access_txt = "101"},/turf/unsimulated/floor{tag = "icon-dark"; icon_state = "dark"},/area/admin) +"Hc" = (/obj/machinery/door/window{dir = 1;name = "Suit Storage";req_access_txt = "0"},/turf/unsimulated/floor{icon_state = "engine"},/area/admin) +"Hd" = (/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) +"He" = (/obj/structure/window/reinforced,/turf/unsimulated/floor{tag = "icon-dark";icon_state = "dark"},/area/admin) +"Hf" = (/obj/machinery/door/window/southleft{name = "Cell B";req_access_txt = "101"},/turf/unsimulated/floor{tag = "icon-dark";icon_state = "dark"},/area/admin) "Hg" = (/obj/structure/rack,/obj/item/clothing/suit/space/space_ninja,/turf/unsimulated/floor{icon_state = "engine"},/area/admin) "Hh" = (/turf/unsimulated/floor{icon_state = "engine"},/area/admin) "Hi" = (/obj/structure/rack,/obj/item/clothing/head/helmet/space/space_ninja,/turf/unsimulated/floor{icon_state = "engine"},/area/admin) "Hj" = (/turf/unsimulated/wall,/area/tdome) -"Hk" = (/turf/unsimulated/wall{desc = "The door appears to be locked tightly."; icon = 'icons/obj/doors/airlocks/hatch/centcom.dmi'; icon_state = "closed"; name = "Locked Door"},/area/tdome) -"Hl" = (/obj/machinery/iv_drip,/turf/unsimulated/floor{tag = "icon-dark"; icon_state = "dark"},/area/admin) -"Hm" = (/obj/structure/chair,/obj/effect/decal/cleanable/blood,/turf/unsimulated/floor{tag = "icon-dark"; icon_state = "dark"},/area/admin) -"Hn" = (/obj/machinery/vending/medical,/turf/unsimulated/floor{tag = "icon-dark"; icon_state = "dark"},/area/admin) -"Ho" = (/turf/unsimulated/floor{tag = "icon-dark"; icon_state = "dark"},/turf/unsimulated/wall{dir = 4; icon = 'icons/turf/shuttle.dmi'; icon_state = "diagonalWall3"},/area/admin) -"Hp" = (/turf/unsimulated/floor{tag = "icon-dark"; icon_state = "dark"},/turf/unsimulated/wall{dir = 2; icon = 'icons/turf/shuttle.dmi'; icon_state = "diagonalWall3"},/area/admin) -"Hq" = (/obj/structure/table/reinforced,/obj/item/storage/box/handcuffs,/turf/unsimulated/floor{tag = "icon-dark"; icon_state = "dark"},/area/admin) -"Hr" = (/obj/structure/table/reinforced,/obj/item/clothing/suit/straight_jacket,/turf/unsimulated/floor{tag = "icon-dark"; icon_state = "dark"},/area/admin) -"Hs" = (/obj/structure/table/reinforced,/obj/item/clothing/glasses/sunglasses/blindfold,/obj/item/clothing/mask/muzzle,/turf/unsimulated/floor{tag = "icon-dark"; icon_state = "dark"},/area/admin) -"Ht" = (/turf/unsimulated/floor{icon_state = "engine"},/turf/unsimulated/wall{dir = 4; icon = 'icons/turf/shuttle.dmi'; icon_state = "window5"; name = "window"; opacity = 0; tag = "icon-window5 (EAST)"},/area/admin) +"Hk" = (/turf/unsimulated/wall{desc = "The door appears to be locked tightly.";icon = 'icons/obj/doors/airlocks/hatch/centcom.dmi';icon_state = "closed";name = "Locked Door"},/area/tdome) +"Hl" = (/obj/machinery/iv_drip,/turf/unsimulated/floor{tag = "icon-dark";icon_state = "dark"},/area/admin) +"Hn" = (/obj/machinery/vending/medical,/turf/unsimulated/floor{tag = "icon-dark";icon_state = "dark"},/area/admin) +"Ho" = (/turf/unsimulated/floor{tag = "icon-dark";icon_state = "dark"},/turf/unsimulated/wall{dir = 4;icon = 'icons/turf/shuttle.dmi';icon_state = "diagonalWall3"},/area/admin) +"Hp" = (/turf/unsimulated/floor{tag = "icon-dark";icon_state = "dark"},/turf/unsimulated/wall{dir = 2;icon = 'icons/turf/shuttle.dmi';icon_state = "diagonalWall3"},/area/admin) +"Hq" = (/obj/structure/table/reinforced,/obj/item/storage/box/handcuffs,/turf/unsimulated/floor{tag = "icon-dark";icon_state = "dark"},/area/admin) +"Hr" = (/obj/structure/table/reinforced,/obj/item/clothing/suit/straight_jacket,/turf/unsimulated/floor{tag = "icon-dark";icon_state = "dark"},/area/admin) +"Hs" = (/obj/structure/table/reinforced,/obj/item/clothing/glasses/sunglasses/blindfold,/obj/item/clothing/mask/muzzle,/turf/unsimulated/floor{tag = "icon-dark";icon_state = "dark"},/area/admin) +"Ht" = (/turf/unsimulated/floor{icon_state = "engine"},/turf/unsimulated/wall{dir = 4;icon = 'icons/turf/shuttle.dmi';icon_state = "window5";name = "window";opacity = 0;tag = "icon-window5 (EAST)"},/area/admin) "Hu" = (/obj/structure/rack,/obj/item/clothing/gloves/space_ninja,/turf/unsimulated/floor{icon_state = "engine"},/area/admin) "Hv" = (/obj/structure/rack,/obj/item/katana/energy,/obj/item/clothing/mask/gas/voice/space_ninja,/turf/unsimulated/floor{icon_state = "engine"},/area/admin) "Hw" = (/obj/structure/rack,/obj/item/clothing/shoes/space_ninja,/turf/unsimulated/floor{icon_state = "engine"},/area/admin) -"Hx" = (/obj/structure/closet/secure_closet/bar{req_access = null; req_access_txt = "112"},/turf/unsimulated/floor{icon_state = "white"},/area/tdome) +"Hx" = (/obj/structure/closet/secure_closet/bar{req_access = null;req_access_txt = "112"},/turf/unsimulated/floor{icon_state = "white"},/area/tdome) "Hy" = (/turf/unsimulated/floor{icon_state = "white"},/area/tdome) "Hz" = (/obj/machinery/gibber,/turf/unsimulated/floor{icon_state = "white"},/area/tdome) -"HA" = (/turf/unsimulated/floor{tag = "icon-dark"; icon_state = "dark"},/turf/unsimulated/wall{dir = 4; icon = 'icons/turf/shuttle.dmi'; icon_state = "window5"; name = "window"; opacity = 0; tag = "icon-window5 (EAST)"},/area/admin) -"HB" = (/obj/machinery/door/airlock/hatch{desc = "Uh oh. You'd better hope you aren't going in here!"; name = "Prisoner Treatment"},/turf/unsimulated/floor{tag = "icon-dark"; icon_state = "dark"},/area/admin) -"HC" = (/obj/machinery/door/airlock/hatch{desc = "Uh oh. You'd better hope you aren't going in here!"; name = "Detainment"},/turf/unsimulated/floor{tag = "icon-dark"; icon_state = "dark"},/area/admin) -"HD" = (/turf/unsimulated/floor{icon_state = "engine"},/turf/unsimulated/wall{dir = 2; icon = 'icons/turf/shuttle.dmi'; icon_state = "window5"; name = "window"; opacity = 0; tag = "icon-window5"},/area/admin) -"HE" = (/obj/machinery/vending/cigarette,/turf/unsimulated/floor{tag = "icon-redbluefull (WEST)"; icon_state = "redbluefull"; dir = 8},/area/tdome/tdomeobserve) -"HF" = (/obj/structure/table,/obj/item/reagent_containers/food/drinks/cans/beer,/obj/item/reagent_containers/food/drinks/cans/beer,/obj/item/reagent_containers/food/drinks/cans/beer,/obj/item/lighter/zippo,/obj/item/storage/fancy/cigarettes,/turf/unsimulated/floor{tag = "icon-redbluefull (WEST)"; icon_state = "redbluefull"; dir = 8},/area/tdome/tdomeobserve) -"HG" = (/obj/structure/table{icon_state = "tabledir"; dir = 2},/obj/item/reagent_containers/food/drinks/cans/cola,/turf/unsimulated/floor{tag = "icon-redbluefull (WEST)"; icon_state = "redbluefull"; dir = 8},/area/tdome/tdomeobserve) -"HH" = (/obj/structure/reagent_dispensers/beerkeg,/turf/unsimulated/floor{tag = "icon-redbluefull (WEST)"; icon_state = "redbluefull"; dir = 8},/area/tdome/tdomeobserve) -"HI" = (/obj/machinery/computer/security/telescreen{desc = "Used for watching the Thunderdome."; name = "Thunderdome Telescreen"; network = list("Thunderdome"); pixel_y = 30},/turf/unsimulated/floor{tag = "icon-redbluefull (WEST)"; icon_state = "redbluefull"; dir = 8},/area/tdome/tdomeobserve) -"HJ" = (/turf/unsimulated/floor{tag = "icon-redbluefull (WEST)"; icon_state = "redbluefull"; dir = 8},/area/tdome/tdomeobserve) -"HK" = (/obj/machinery/vending/coffee,/turf/unsimulated/floor{tag = "icon-redbluefull (WEST)"; icon_state = "redbluefull"; dir = 8},/area/tdome/tdomeobserve) -"HL" = (/obj/structure/table/reinforced,/obj/item/melee/classic_baton/telescopic,/obj/item/paper/Court,/obj/item/pen,/turf/unsimulated/floor{tag = "icon-dark"; icon_state = "dark"},/area/admin) -"HO" = (/obj/structure/table/reinforced,/obj/item/storage/box/flashbangs,/obj/item/storage/box/flashes,/turf/unsimulated/floor{tag = "icon-dark"; icon_state = "dark"},/area/admin) -"HP" = (/obj/structure/table/reinforced,/obj/item/storage/box/grenades,/turf/unsimulated/floor{tag = "icon-dark"; icon_state = "dark"},/area/admin) -"HQ" = (/obj/structure/table/reinforced,/obj/item/storage/box/teargas,/turf/unsimulated/floor{tag = "icon-dark"; icon_state = "dark"},/area/admin) +"HA" = (/turf/unsimulated/floor{tag = "icon-dark";icon_state = "dark"},/turf/unsimulated/wall{dir = 4;icon = 'icons/turf/shuttle.dmi';icon_state = "window5";name = "window";opacity = 0;tag = "icon-window5 (EAST)"},/area/admin) +"HB" = (/obj/machinery/door/airlock/hatch{desc = "Uh oh. You'd better hope you aren't going in here!";name = "Prisoner Treatment"},/turf/unsimulated/floor{tag = "icon-dark";icon_state = "dark"},/area/admin) +"HC" = (/obj/machinery/door/airlock/hatch{desc = "Uh oh. You'd better hope you aren't going in here!";name = "Detainment"},/turf/unsimulated/floor{tag = "icon-dark";icon_state = "dark"},/area/admin) +"HD" = (/turf/unsimulated/floor{icon_state = "engine"},/turf/unsimulated/wall{dir = 2;icon = 'icons/turf/shuttle.dmi';icon_state = "window5";name = "window";opacity = 0;tag = "icon-window5"},/area/admin) +"HE" = (/obj/machinery/vending/cigarette,/turf/unsimulated/floor{tag = "icon-redbluefull (WEST)";icon_state = "redbluefull";dir = 8},/area/tdome/tdomeobserve) +"HF" = (/obj/structure/table,/obj/item/reagent_containers/food/drinks/cans/beer,/obj/item/reagent_containers/food/drinks/cans/beer,/obj/item/reagent_containers/food/drinks/cans/beer,/obj/item/lighter/zippo,/obj/item/storage/fancy/cigarettes,/turf/unsimulated/floor{tag = "icon-redbluefull (WEST)";icon_state = "redbluefull";dir = 8},/area/tdome/tdomeobserve) +"HG" = (/obj/structure/table{icon_state = "tabledir";dir = 2},/obj/item/reagent_containers/food/drinks/cans/cola,/turf/unsimulated/floor{tag = "icon-redbluefull (WEST)";icon_state = "redbluefull";dir = 8},/area/tdome/tdomeobserve) +"HH" = (/obj/structure/reagent_dispensers/beerkeg,/turf/unsimulated/floor{tag = "icon-redbluefull (WEST)";icon_state = "redbluefull";dir = 8},/area/tdome/tdomeobserve) +"HI" = (/obj/machinery/computer/security/telescreen{desc = "Used for watching the Thunderdome.";name = "Thunderdome Telescreen";network = list("Thunderdome");pixel_y = 30},/turf/unsimulated/floor{tag = "icon-redbluefull (WEST)";icon_state = "redbluefull";dir = 8},/area/tdome/tdomeobserve) +"HJ" = (/turf/unsimulated/floor{tag = "icon-redbluefull (WEST)";icon_state = "redbluefull";dir = 8},/area/tdome/tdomeobserve) +"HK" = (/obj/machinery/vending/coffee,/turf/unsimulated/floor{tag = "icon-redbluefull (WEST)";icon_state = "redbluefull";dir = 8},/area/tdome/tdomeobserve) +"HL" = (/obj/structure/table/reinforced,/obj/item/melee/classic_baton/telescopic,/obj/item/paper/Court,/obj/item/pen,/turf/unsimulated/floor{tag = "icon-dark";icon_state = "dark"},/area/admin) +"HO" = (/obj/structure/table/reinforced,/obj/item/storage/box/flashbangs,/obj/item/storage/box/flashes,/turf/unsimulated/floor{tag = "icon-dark";icon_state = "dark"},/area/admin) +"HP" = (/obj/structure/table/reinforced,/obj/item/storage/box/grenades,/turf/unsimulated/floor{tag = "icon-dark";icon_state = "dark"},/area/admin) +"HQ" = (/obj/structure/table/reinforced,/obj/item/storage/box/teargas,/turf/unsimulated/floor{tag = "icon-dark";icon_state = "dark"},/area/admin) "HR" = (/obj/structure/closet/secure_closet/freezer/meat{req_access_txt = "112"},/turf/unsimulated/floor{icon_state = "white"},/area/tdome) "HS" = (/obj/structure/closet/secure_closet/freezer/fridge{req_access_txt = "112"},/turf/unsimulated/floor{icon_state = "white"},/area/tdome) -"HT" = (/obj/structure/chair,/obj/effect/landmark{name = "tdomeobserve"},/turf/unsimulated/floor{tag = "icon-redbluefull (WEST)"; icon_state = "redbluefull"; dir = 8},/area/tdome/tdomeobserve) -"HU" = (/obj/machinery/vending/snack,/turf/unsimulated/floor{tag = "icon-redbluefull (WEST)"; icon_state = "redbluefull"; dir = 8},/area/tdome/tdomeobserve) -"HV" = (/obj/structure/window/reinforced{dir = 1; layer = 2.9},/turf/unsimulated/floor{tag = "icon-dark"; icon_state = "dark"},/area/admin) -"HW" = (/obj/machinery/door/window{dir = 1; name = "Cell A"; req_access_txt = "101"},/turf/unsimulated/floor{tag = "icon-dark"; icon_state = "dark"},/area/admin) -"HX" = (/obj/structure/table{icon_state = "tabledir"; dir = 9},/obj/item/storage/box/donkpockets{pixel_x = 3; pixel_y = 3},/obj/item/storage/box/donkpockets{pixel_x = 3; pixel_y = 3},/obj/item/storage/box/donkpockets{pixel_x = 3; pixel_y = 3},/obj/item/storage/box/donkpockets{pixel_x = 3; pixel_y = 3},/turf/unsimulated/floor{icon_state = "white"},/area/tdome) +"HU" = (/obj/machinery/vending/snack,/turf/unsimulated/floor{tag = "icon-redbluefull (WEST)";icon_state = "redbluefull";dir = 8},/area/tdome/tdomeobserve) +"HV" = (/obj/structure/window/reinforced{dir = 1;layer = 2.9},/turf/unsimulated/floor{tag = "icon-dark";icon_state = "dark"},/area/admin) +"HW" = (/obj/machinery/door/window{dir = 1;name = "Cell A";req_access_txt = "101"},/turf/unsimulated/floor{tag = "icon-dark";icon_state = "dark"},/area/admin) +"HX" = (/obj/structure/table{icon_state = "tabledir";dir = 9},/obj/item/storage/box/donkpockets{pixel_x = 3;pixel_y = 3},/obj/item/storage/box/donkpockets{pixel_x = 3;pixel_y = 3},/obj/item/storage/box/donkpockets{pixel_x = 3;pixel_y = 3},/obj/item/storage/box/donkpockets{pixel_x = 3;pixel_y = 3},/turf/unsimulated/floor{icon_state = "white"},/area/tdome) "HY" = (/obj/structure/table,/obj/machinery/kitchen_machine/microwave/upgraded,/turf/unsimulated/floor{icon_state = "white"},/area/tdome) "HZ" = (/obj/structure/table/reinforced,/turf/unsimulated/floor{icon_state = "white"},/area/tdome) -"Ia" = (/obj/item/camera,/turf/unsimulated/floor{tag = "icon-redbluefull (WEST)"; icon_state = "redbluefull"; dir = 8},/area/tdome/tdomeobserve) -"Ib" = (/obj/structure/toilet{dir = 8},/turf/unsimulated/floor{tag = "icon-dark"; icon_state = "dark"},/area/admin) -"Id" = (/turf/unsimulated/wall/fakeglass{tag = "icon-fakewindows (WEST)"; icon_state = "fakewindows"; dir = 8},/area/tdome) -"Ie" = (/turf/unsimulated/wall/fakeglass{tag = "icon-fakewindows2 (WEST)"; icon_state = "fakewindows2"; dir = 8},/area/tdome) -"If" = (/turf/unsimulated/wall/fakeglass{tag = "icon-fakewindows (EAST)"; icon_state = "fakewindows"; dir = 4},/area/tdome) -"Ih" = (/obj/machinery/door/poddoor{id_tag = "thunderdomeaxe"; name = "Axe Supply"},/turf/unsimulated/floor{icon_state = "dark"},/area/tdome/arena) +"Ia" = (/obj/item/camera,/turf/unsimulated/floor{tag = "icon-redbluefull (WEST)";icon_state = "redbluefull";dir = 8},/area/tdome/tdomeobserve) +"Ib" = (/obj/structure/toilet{dir = 8},/turf/unsimulated/floor{tag = "icon-dark";icon_state = "dark"},/area/admin) +"Id" = (/turf/unsimulated/wall/fakeglass{tag = "icon-fakewindows (WEST)";icon_state = "fakewindows";dir = 8},/area/tdome) +"Ie" = (/turf/unsimulated/wall/fakeglass{tag = "icon-fakewindows2 (WEST)";icon_state = "fakewindows2";dir = 8},/area/tdome) +"If" = (/turf/unsimulated/wall/fakeglass{tag = "icon-fakewindows (EAST)";icon_state = "fakewindows";dir = 4},/area/tdome) +"Ih" = (/obj/machinery/door/poddoor{id_tag = "thunderdomeaxe";name = "Axe Supply"},/turf/unsimulated/floor{icon_state = "dark"},/area/tdome/arena) "Ii" = (/obj/structure/rack,/obj/item/clothing/under/color/red,/obj/item/clothing/shoes/brown,/obj/item/clothing/suit/armor/tdome/red,/obj/item/clothing/head/helmet/thunderdome,/obj/item/melee/energy/sword/saber/red,/turf/unsimulated/floor{icon_state = "dark"},/area/tdome/arena) -"Ij" = (/obj/machinery/door/poddoor{id_tag = "thunderdomegen"; name = "General Supply"},/turf/unsimulated/floor{icon_state = "dark"},/area/tdome/arena) +"Ij" = (/obj/machinery/door/poddoor{id_tag = "thunderdomegen";name = "General Supply"},/turf/unsimulated/floor{icon_state = "dark"},/area/tdome/arena) "Ik" = (/turf/unsimulated/floor{name = "plating"},/area/tdome/tdome2) -"Il" = (/obj/machinery/door/poddoor{id_tag = "thunderdome"; name = "Thunderdome Blast Door"},/turf/unsimulated/floor{name = "plating"},/area/tdome/arena) -"Im" = (/turf/simulated/floor/plasteel{icon_state = "red"; dir = 8},/area/tdome/arena) -"In" = (/turf/simulated/floor/plasteel{icon_state = "green"; dir = 4},/area/tdome/arena) +"Il" = (/obj/machinery/door/poddoor{id_tag = "thunderdome";name = "Thunderdome Blast Door"},/turf/unsimulated/floor{name = "plating"},/area/tdome/arena) +"Im" = (/turf/simulated/floor/plasteel{icon_state = "red";dir = 8},/area/tdome/arena) +"In" = (/turf/simulated/floor/plasteel{icon_state = "green";dir = 4},/area/tdome/arena) "Io" = (/turf/unsimulated/floor{name = "plating"},/area/tdome/tdome1) "Ip" = (/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) -"Iq" = (/obj/machinery/door/airlock/hatch{name = "Teleporter Access"; req_access_txt = "0"},/obj/machinery/door/poddoor{density = 0; icon_state = "open"; id_tag = "ADMINLOCKDOWN"; name = "Security Doors"; opacity = 0},/turf/unsimulated/floor{tag = "icon-floor"; icon_state = "floor"},/area/admin) +"Iq" = (/obj/machinery/door/airlock/hatch{name = "Teleporter Access";req_access_txt = "0"},/obj/machinery/door/poddoor{density = 0;icon_state = "open";id_tag = "ADMINLOCKDOWN";name = "Security Doors";opacity = 0},/turf/unsimulated/floor{tag = "icon-floor";icon_state = "floor"},/area/admin) "Ir" = (/obj/effect/landmark{name = "tdome2"},/turf/unsimulated/floor{name = "plating"},/area/tdome/tdome2) "Is" = (/obj/effect/landmark{name = "tdome1"},/turf/unsimulated/floor{name = "plating"},/area/tdome/tdome1) -"It" = (/obj/structure/rack,/obj/item/tank/jetpack/oxygen,/obj/item/tank/jetpack/oxygen,/turf/unsimulated/floor{tag = "icon-floor"; icon_state = "floor"},/area/admin) -"Iu" = (/obj/structure/rack,/obj/item/clothing/suit/space,/obj/item/clothing/suit/space,/obj/item/clothing/mask/breath,/obj/item/clothing/mask/breath,/obj/item/clothing/head/helmet/space,/obj/item/clothing/head/helmet/space,/turf/unsimulated/floor{tag = "icon-floor"; icon_state = "floor"},/area/admin) -"Iv" = (/obj/machinery/camera{pixel_x = 11; pixel_y = -9; network = list("Thunderdome"); c_tag = "Thunderdome Red Team"},/obj/effect/landmark{name = "tdome2"},/turf/unsimulated/floor{name = "plating"},/area/tdome/tdome2) +"It" = (/obj/structure/rack,/obj/item/tank/jetpack/oxygen,/obj/item/tank/jetpack/oxygen,/turf/unsimulated/floor{tag = "icon-floor";icon_state = "floor"},/area/admin) +"Iu" = (/obj/structure/rack,/obj/item/clothing/suit/space,/obj/item/clothing/suit/space,/obj/item/clothing/mask/breath,/obj/item/clothing/mask/breath,/obj/item/clothing/head/helmet/space,/obj/item/clothing/head/helmet/space,/turf/unsimulated/floor{tag = "icon-floor";icon_state = "floor"},/area/admin) +"Iv" = (/obj/machinery/camera{pixel_x = 11;pixel_y = -9;network = list("Thunderdome");c_tag = "Thunderdome Red Team"},/obj/effect/landmark{name = "tdome2"},/turf/unsimulated/floor{name = "plating"},/area/tdome/tdome2) "Iw" = (/turf/simulated/floor/bluegrid,/area/tdome/arena) -"Ix" = (/obj/machinery/flasher{id = "flash"; name = "Thunderdome Flash"},/turf/simulated/floor/bluegrid,/area/tdome/arena) -"Iy" = (/obj/machinery/camera{pixel_x = 12; pixel_y = -10; network = list("Thunderdome"); c_tag = "Thunderdome Green Team"},/obj/effect/landmark{name = "tdome1"},/turf/unsimulated/floor{name = "plating"},/area/tdome/tdome1) -"Iz" = (/obj/machinery/camera{pixel_x = 10; network = list("Thunderdome"); c_tag = "Thunderdome Arena"},/turf/simulated/floor/bluegrid,/area/tdome/arena) -"IA" = (/obj/structure/table,/obj/random/powercell,/turf/unsimulated/floor{tag = "icon-floor"; icon_state = "floor"},/area/admin) -"IB" = (/obj/structure/table,/obj/random/tool,/obj/random/bomb_supply,/turf/unsimulated/floor{tag = "icon-floor"; icon_state = "floor"},/area/admin) -"IC" = (/obj/structure/table,/obj/item/storage/toolbox/mechanical,/turf/unsimulated/floor{tag = "icon-floor"; icon_state = "floor"},/area/admin) -"ID" = (/obj/structure/table,/obj/random/technology_scanner,/obj/random/tech_supply,/turf/unsimulated/floor{tag = "icon-floor"; icon_state = "floor"},/area/admin) -"IE" = (/obj/machinery/door/poddoor{id_tag = "thunderdomehea"; name = "Heavy Supply"},/turf/unsimulated/floor{icon_state = "dark"},/area/tdome/arena) -"IF" = (/obj/structure/table,/obj/item/clothing/gloves/color/yellow,/obj/random/bomb_supply,/turf/unsimulated/floor{tag = "icon-floor"; icon_state = "floor"},/area/admin) -"IG" = (/obj/machinery/computer/teleporter,/turf/unsimulated/floor{tag = "icon-floor"; icon_state = "floor"},/area/admin) -"IH" = (/obj/machinery/teleport/station,/turf/unsimulated/floor{tag = "icon-floor"; icon_state = "floor"},/area/admin) -"IJ" = (/obj/structure/table,/obj/item/storage/toolbox/electrical,/turf/unsimulated/floor{tag = "icon-floor"; icon_state = "floor"},/area/admin) -"IK" = (/obj/structure/rack,/obj/item/clothing/under/color/red,/obj/item/clothing/shoes/brown,/obj/item/clothing/suit/armor/vest,/obj/item/clothing/head/helmet/swat,/obj/item/gun/energy/laser,/obj/item/shield/energy,/obj/machinery/recharger/wallcharger{pixel_x = 3; pixel_y = -30},/turf/unsimulated/floor{icon_state = "dark"},/area/tdome/arena) -"IL" = (/obj/structure/rack,/obj/item/clothing/under/color/green,/obj/item/clothing/shoes/brown,/obj/item/clothing/suit/armor/vest,/obj/item/clothing/head/helmet/swat,/obj/item/gun/energy/laser,/obj/item/shield/energy,/obj/machinery/recharger/wallcharger{pixel_x = 3; pixel_y = -30},/turf/unsimulated/floor{icon_state = "dark"},/area/tdome/arena) -"IM" = (/turf/unsimulated/floor{tag = "icon-redyellowfull (NORTHEAST)"; icon_state = "redyellowfull"; dir = 5},/area/tdome/tdomeadmin) -"IN" = (/obj/structure/chair{dir = 1},/obj/effect/landmark{name = "tdomeadmin"},/turf/unsimulated/floor{tag = "icon-redyellowfull (NORTHEAST)"; icon_state = "redyellowfull"; dir = 5},/area/tdome/tdomeadmin) -"IO" = (/obj/structure/table,/obj/item/reagent_containers/food/drinks/drinkingglass/devilskiss,/turf/unsimulated/floor{tag = "icon-redyellowfull (NORTHEAST)"; icon_state = "redyellowfull"; dir = 5},/area/tdome/tdomeadmin) -"IP" = (/obj/structure/chair/comfy/black{dir = 1},/turf/unsimulated/floor{tag = "icon-redyellowfull (NORTHEAST)"; icon_state = "redyellowfull"; dir = 5},/area/tdome/tdomeadmin) -"IQ" = (/obj/structure/table,/obj/machinery/door_control{desc = "A remote control switch for port-side blast doors."; icon_state = "doorctrl0"; id = "thunderdome"; name = "Main Blast Doors"; pixel_x = -3; pixel_y = 0; req_access_txt = "104"},/turf/unsimulated/floor{tag = "icon-redyellowfull (NORTHEAST)"; icon_state = "redyellowfull"; dir = 5},/area/tdome/tdomeadmin) -"IR" = (/obj/machinery/computer/security/telescreen{desc = "Used for watching the Thunderdome."; name = "Thunderdome Telescreen"; network = list("Thunderdome"); pixel_y = -30},/turf/unsimulated/floor{tag = "icon-redyellowfull (NORTHEAST)"; icon_state = "redyellowfull"; dir = 5},/area/tdome/tdomeadmin) +"Ix" = (/obj/machinery/flasher{id = "flash";name = "Thunderdome Flash"},/turf/simulated/floor/bluegrid,/area/tdome/arena) +"Iy" = (/obj/machinery/camera{pixel_x = 12;pixel_y = -10;network = list("Thunderdome");c_tag = "Thunderdome Green Team"},/obj/effect/landmark{name = "tdome1"},/turf/unsimulated/floor{name = "plating"},/area/tdome/tdome1) +"Iz" = (/obj/machinery/camera{pixel_x = 10;network = list("Thunderdome");c_tag = "Thunderdome Arena"},/turf/simulated/floor/bluegrid,/area/tdome/arena) +"IA" = (/obj/structure/table,/obj/random/powercell,/turf/unsimulated/floor{tag = "icon-floor";icon_state = "floor"},/area/admin) +"IB" = (/obj/structure/table,/obj/random/tool,/obj/random/bomb_supply,/turf/unsimulated/floor{tag = "icon-floor";icon_state = "floor"},/area/admin) +"IC" = (/obj/structure/table,/obj/item/storage/toolbox/mechanical,/turf/unsimulated/floor{tag = "icon-floor";icon_state = "floor"},/area/admin) +"ID" = (/obj/structure/table,/obj/random/technology_scanner,/obj/random/tech_supply,/turf/unsimulated/floor{tag = "icon-floor";icon_state = "floor"},/area/admin) +"IE" = (/obj/machinery/door/poddoor{id_tag = "thunderdomehea";name = "Heavy Supply"},/turf/unsimulated/floor{icon_state = "dark"},/area/tdome/arena) +"IF" = (/obj/structure/table,/obj/item/clothing/gloves/color/yellow,/obj/random/bomb_supply,/turf/unsimulated/floor{tag = "icon-floor";icon_state = "floor"},/area/admin) +"IG" = (/obj/machinery/computer/teleporter,/turf/unsimulated/floor{tag = "icon-floor";icon_state = "floor"},/area/admin) +"IH" = (/obj/machinery/teleport/station,/turf/unsimulated/floor{tag = "icon-floor";icon_state = "floor"},/area/admin) +"IJ" = (/obj/structure/table,/obj/item/storage/toolbox/electrical,/turf/unsimulated/floor{tag = "icon-floor";icon_state = "floor"},/area/admin) +"IK" = (/obj/structure/rack,/obj/item/clothing/under/color/red,/obj/item/clothing/shoes/brown,/obj/item/clothing/suit/armor/vest,/obj/item/clothing/head/helmet/swat,/obj/item/gun/energy/laser,/obj/item/shield/energy,/obj/machinery/recharger/wallcharger{pixel_x = 3;pixel_y = -30},/turf/unsimulated/floor{icon_state = "dark"},/area/tdome/arena) +"IL" = (/obj/structure/rack,/obj/item/clothing/under/color/green,/obj/item/clothing/shoes/brown,/obj/item/clothing/suit/armor/vest,/obj/item/clothing/head/helmet/swat,/obj/item/gun/energy/laser,/obj/item/shield/energy,/obj/machinery/recharger/wallcharger{pixel_x = 3;pixel_y = -30},/turf/unsimulated/floor{icon_state = "dark"},/area/tdome/arena) +"IM" = (/turf/unsimulated/floor{tag = "icon-redyellowfull (NORTHEAST)";icon_state = "redyellowfull";dir = 5},/area/tdome/tdomeadmin) +"IO" = (/obj/structure/table,/obj/item/reagent_containers/food/drinks/drinkingglass/devilskiss,/turf/unsimulated/floor{tag = "icon-redyellowfull (NORTHEAST)";icon_state = "redyellowfull";dir = 5},/area/tdome/tdomeadmin) +"IQ" = (/obj/structure/table,/obj/machinery/door_control{desc = "A remote control switch for port-side blast doors.";icon_state = "doorctrl0";id = "thunderdome";name = "Main Blast Doors";pixel_x = -3;pixel_y = 0;req_access_txt = "104"},/turf/unsimulated/floor{tag = "icon-redyellowfull (NORTHEAST)";icon_state = "redyellowfull";dir = 5},/area/tdome/tdomeadmin) +"IR" = (/obj/machinery/computer/security/telescreen{desc = "Used for watching the Thunderdome.";name = "Thunderdome Telescreen";network = list("Thunderdome");pixel_y = -30},/turf/unsimulated/floor{tag = "icon-redyellowfull (NORTHEAST)";icon_state = "redyellowfull";dir = 5},/area/tdome/tdomeadmin) "IS" = (/turf/unsimulated/floor{icon_state = "floor"},/area/tdome/tdomeadmin) -"IT" = (/obj/structure/table,/obj/machinery/door_control{desc = "A remote control switch for port-side blast doors."; icon_state = "doorctrl0"; id = "thunderdomehea"; name = "Ranged Gear"; pixel_x = 0; pixel_y = 5; req_access_txt = "104"},/turf/unsimulated/floor{icon_state = "floor"},/area/tdome/tdomeadmin) -"IU" = (/obj/structure/table,/obj/machinery/door_control{desc = "A remote control switch for port-side blast doors."; icon_state = "doorctrl0"; id = "thunderdomegen"; name = "General Equiptment"; pixel_x = 0; pixel_y = 5; req_access_txt = "104"},/turf/unsimulated/floor{icon_state = "floor"},/area/tdome/tdomeadmin) -"IV" = (/obj/structure/table,/obj/machinery/door_control{desc = "A remote control switch for port-side blast doors."; icon_state = "doorctrl0"; id = "thunderdomeaxe"; name = "Specialist Supply"; pixel_x = 0; pixel_y = 5; req_access_txt = "104"},/turf/unsimulated/floor{icon_state = "floor"},/area/tdome/tdomeadmin) -"Jb" = (/mob/living/simple_animal/pet/cat/Syndi,/turf/unsimulated/floor{icon_state = "bar"; dir = 2},/area/syndicate_mothership) +"IT" = (/obj/structure/table,/obj/machinery/door_control{desc = "A remote control switch for port-side blast doors.";icon_state = "doorctrl0";id = "thunderdomehea";name = "Ranged Gear";pixel_x = 0;pixel_y = 5;req_access_txt = "104"},/turf/unsimulated/floor{icon_state = "floor"},/area/tdome/tdomeadmin) +"IU" = (/obj/structure/table,/obj/machinery/door_control{desc = "A remote control switch for port-side blast doors.";icon_state = "doorctrl0";id = "thunderdomegen";name = "General Equiptment";pixel_x = 0;pixel_y = 5;req_access_txt = "104"},/turf/unsimulated/floor{icon_state = "floor"},/area/tdome/tdomeadmin) +"IV" = (/obj/structure/table,/obj/machinery/door_control{desc = "A remote control switch for port-side blast doors.";icon_state = "doorctrl0";id = "thunderdomeaxe";name = "Specialist Supply";pixel_x = 0;pixel_y = 5;req_access_txt = "104"},/turf/unsimulated/floor{icon_state = "floor"},/area/tdome/tdomeadmin) +"Jb" = (/mob/living/simple_animal/pet/cat/Syndi,/turf/unsimulated/floor{icon_state = "bar";dir = 2},/area/syndicate_mothership) +"Jc" = (/obj/structure/chair/stool,/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/holofloor{tag = "icon-asteroid";icon_state = "asteroid";dir = 2},/area/holodeck/source_picnicarea) +"Jd" = (/obj/structure/chair/stool,/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/holofloor{tag = "icon-asteroid";icon_state = "asteroid";dir = 2},/area/holodeck/source_picnicarea) +"Je" = (/obj/structure/chair/stool,/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/holofloor{tag = "icon-asteroid";icon_state = "asteroid";dir = 2},/area/holodeck/source_picnicarea) +"Jf" = (/obj/structure/chair/stool,/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/holofloor{tag = "icon-asteroid";icon_state = "asteroid";dir = 2},/area/holodeck/source_picnicarea) +"Jg" = (/obj/structure/chair/stool,/turf/simulated/floor/holofloor{tag = "icon-carpet7-3 (EAST)";icon_state = "carpet7-3";dir = 4},/area/holodeck/source_theatre) +"Jh" = (/obj/structure/chair/stool,/turf/simulated/floor/holofloor{tag = "icon-carpet15-15 (EAST)";icon_state = "carpet15-15";dir = 4},/area/holodeck/source_theatre) +"Ji" = (/obj/structure/chair/stool,/turf/simulated/floor/holofloor{tag = "icon-carpet11-12 (EAST)";icon_state = "carpet11-12";dir = 4},/area/holodeck/source_theatre) +"Jj" = (/obj/structure/chair/stool,/turf/simulated/floor/holofloor{tag = "icon-carpet7-3 (EAST)";icon_state = "carpet7-3";dir = 4},/area/holodeck/source_theatre) +"Jk" = (/obj/structure/chair/stool,/turf/simulated/floor/holofloor{tag = "icon-carpet15-15 (EAST)";icon_state = "carpet15-15";dir = 4},/area/holodeck/source_theatre) +"Jl" = (/obj/structure/chair/stool,/turf/simulated/floor/holofloor{tag = "icon-carpet11-12 (EAST)";icon_state = "carpet11-12";dir = 4},/area/holodeck/source_theatre) +"Jm" = (/obj/structure/chair/stool,/turf/simulated/floor/holofloor{tag = "icon-carpet7-3 (EAST)";icon_state = "carpet7-3";dir = 4},/area/holodeck/source_theatre) +"Jn" = (/obj/structure/chair/stool,/turf/simulated/floor/holofloor{tag = "icon-carpet15-15 (EAST)";icon_state = "carpet15-15";dir = 4},/area/holodeck/source_theatre) +"Jo" = (/obj/structure/chair/stool,/turf/simulated/floor/holofloor{tag = "icon-carpet11-12 (EAST)";icon_state = "carpet11-12";dir = 4},/area/holodeck/source_theatre) +"Jp" = (/obj/structure/chair/stool,/turf/simulated/floor/holofloor{tag = "icon-carpet7-3 (EAST)";icon_state = "carpet7-3";dir = 4},/area/holodeck/source_theatre) +"Jq" = (/obj/structure/chair/stool,/turf/simulated/floor/holofloor{tag = "icon-carpet15-15 (EAST)";icon_state = "carpet15-15";dir = 4},/area/holodeck/source_theatre) +"Jr" = (/obj/structure/chair/stool,/turf/simulated/floor/holofloor{tag = "icon-carpet11-12 (EAST)";icon_state = "carpet11-12";dir = 4},/area/holodeck/source_theatre) +"Js" = (/obj/structure/chair/stool,/turf/simulated/floor/holofloor{tag = "icon-carpet5-1 (EAST)";icon_state = "carpet5-1";dir = 4},/area/holodeck/source_theatre) +"Jt" = (/obj/structure/chair/stool,/turf/simulated/floor/holofloor{tag = "icon-carpet13-5 (EAST)";icon_state = "carpet13-5";dir = 4},/area/holodeck/source_theatre) +"Ju" = (/obj/structure/chair/stool,/turf/simulated/floor/holofloor{tag = "icon-carpet9-4 (EAST)";icon_state = "carpet9-4";dir = 4},/area/holodeck/source_theatre) +"Jv" = (/obj/structure/chair/stool,/turf/simulated/floor/holofloor{tag = "icon-carpet6-0 (EAST)";icon_state = "carpet6-0";dir = 4},/area/holodeck/source_meetinghall) +"Jw" = (/obj/structure/chair/stool,/turf/simulated/floor/holofloor{tag = "icon-carpet14-0 (EAST)";icon_state = "carpet14-0";dir = 4},/area/holodeck/source_meetinghall) +"Jx" = (/obj/structure/chair/stool,/turf/simulated/floor/holofloor{tag = "icon-carpet10-0 (EAST)";icon_state = "carpet10-0";dir = 4},/area/holodeck/source_meetinghall) +"Jy" = (/obj/structure/chair/stool,/turf/unsimulated/floor{icon_state = "cafeteria";dir = 2},/area/ninja/holding) +"Jz" = (/obj/structure/chair/stool,/turf/simulated/floor/holofloor{tag = "icon-carpet7-0 (EAST)";icon_state = "carpet7-0";dir = 4},/area/holodeck/source_meetinghall) +"JA" = (/obj/structure/chair/stool,/turf/simulated/floor/holofloor{tag = "icon-carpet15-0 (EAST)";icon_state = "carpet15-0";dir = 4},/area/holodeck/source_meetinghall) +"JB" = (/obj/structure/chair/stool,/turf/simulated/floor/holofloor{tag = "icon-carpet11-0 (EAST)";icon_state = "carpet11-0";dir = 4},/area/holodeck/source_meetinghall) +"JC" = (/obj/structure/chair/stool,/obj/item/clothing/head/bandana{pixel_y = -10},/obj/item/clothing/glasses/sunglasses,/turf/unsimulated/beach/sand,/area/ninja/holding) +"JD" = (/obj/structure/chair/stool,/turf/unsimulated/beach/sand,/area/ninja/holding) +"JE" = (/obj/structure/chair/stool,/turf/simulated/floor/holofloor{tag = "icon-carpet7-0 (EAST)";icon_state = "carpet7-0";dir = 4},/area/holodeck/source_meetinghall) +"JF" = (/obj/structure/chair/stool,/turf/simulated/floor/holofloor{tag = "icon-carpet15-0 (EAST)";icon_state = "carpet15-0";dir = 4},/area/holodeck/source_meetinghall) +"JG" = (/obj/structure/chair/stool,/turf/simulated/floor/holofloor{tag = "icon-carpet11-0 (EAST)";icon_state = "carpet11-0";dir = 4},/area/holodeck/source_meetinghall) +"JH" = (/obj/structure/chair/stool/bar,/turf/unsimulated/floor{icon_state = "cafeteria";dir = 2},/area/ninja/holding) +"JI" = (/obj/structure/chair/stool/bar,/turf/unsimulated/floor{icon_state = "cafeteria";dir = 2},/area/ninja/holding) +"JJ" = (/obj/structure/chair/stool/bar,/turf/unsimulated/floor{icon_state = "cafeteria";dir = 2},/area/ninja/holding) +"JK" = (/obj/structure/chair/stool/bar,/turf/unsimulated/floor{icon_state = "cafeteria";dir = 2},/area/ninja/holding) +"JL" = (/obj/structure/chair/stool/bar,/turf/unsimulated/floor{icon_state = "cafeteria";dir = 2},/area/ninja/holding) +"JM" = (/obj/structure/chair/stool,/turf/simulated/floor/holofloor{tag = "icon-carpet7-0 (EAST)";icon_state = "carpet7-0";dir = 4},/area/holodeck/source_meetinghall) +"JN" = (/obj/structure/chair/stool,/turf/simulated/floor/holofloor{tag = "icon-carpet15-0 (EAST)";icon_state = "carpet15-0";dir = 4},/area/holodeck/source_meetinghall) +"JO" = (/obj/structure/chair/stool,/turf/simulated/floor/holofloor{tag = "icon-carpet11-0 (EAST)";icon_state = "carpet11-0";dir = 4},/area/holodeck/source_meetinghall) +"JP" = (/obj/structure/chair/stool,/turf/simulated/floor/holofloor{tag = "icon-carpet5-0 (EAST)";icon_state = "carpet5-0";dir = 4},/area/holodeck/source_meetinghall) +"JQ" = (/obj/structure/chair/stool,/turf/simulated/floor/holofloor{tag = "icon-carpet13-0 (EAST)";icon_state = "carpet13-0";dir = 4},/area/holodeck/source_meetinghall) +"JR" = (/obj/structure/chair/stool,/turf/simulated/floor/holofloor{tag = "icon-carpet9-0 (EAST)";icon_state = "carpet9-0";dir = 4},/area/holodeck/source_meetinghall) +"JS" = (/obj/structure/chair/stool,/obj/machinery/computer/security/telescreen{name = "Entertainment monitor";desc = "Damn, they better have /tg/thechannel on these things.";icon_state = "entertainment";pixel_y = -30},/turf/unsimulated/floor{icon_state = "cafeteria";dir = 2},/area/ninja/holding) +"JT" = (/obj/structure/chair/stool,/obj/machinery/computer/security/telescreen{name = "Entertainment monitor";desc = "Damn, they better have /tg/thechannel on these things.";icon_state = "entertainment";pixel_y = -30},/turf/unsimulated/floor{icon_state = "cafeteria";dir = 2},/area/ninja/holding) +"JU" = (/obj/structure/chair/comfy/black,/obj/effect/landmark{name = "Syndicate-Infiltrator-Admin";tag = "Commando"},/turf/unsimulated/floor{icon_state = "dark"},/area/syndicate_mothership/infteam) +"JV" = (/obj/structure/chair/stool,/turf/unsimulated/floor{icon_state = "cafeteria";dir = 2},/area/ninja/holding) +"JW" = (/obj/structure/chair/stool,/obj/machinery/light/spot,/turf/unsimulated/floor{icon_state = "cafeteria";dir = 2},/area/ninja/holding) +"JX" = (/obj/structure/chair/stool,/turf/unsimulated/floor{icon_state = "cafeteria";dir = 2},/area/ninja/holding) +"JY" = (/obj/structure/chair/stool,/turf/unsimulated/floor{icon_state = "cafeteria";dir = 2},/area/ninja/holding) +"JZ" = (/obj/effect/decal/warning_stripes/yellow,/turf/unsimulated/floor{icon_state = "cafeteria";dir = 2},/area/ninja/holding) +"Ka" = (/obj/effect/decal/warning_stripes/yellow,/turf/unsimulated/floor{icon_state = "cafeteria";dir = 2},/area/ninja/holding) +"Kb" = (/obj/structure/chair{dir = 1},/turf/unsimulated/floor{icon_state = "dark"},/area/syndicate_mothership/infteam) +"Kc" = (/obj/structure/chair/comfy/brown{dir = 4},/turf/simulated/floor/wood,/area/dynamic/source/lobby_russian) +"Kd" = (/obj/structure/chair/comfy/brown{dir = 8},/turf/simulated/floor/wood,/area/dynamic/source/lobby_russian) +"Ke" = (/obj/structure/chair/sofa/right,/turf/simulated/floor/wood,/area/dynamic/source/lobby_disco) +"Kf" = (/obj/machinery/light/small{dir = 1},/obj/structure/chair/sofa/left,/turf/simulated/floor/wood,/area/dynamic/source/lobby_disco) +"Kg" = (/obj/machinery/light/small{dir = 1},/obj/structure/chair/sofa/right,/turf/simulated/floor/wood,/area/dynamic/source/lobby_disco) +"Kh" = (/obj/structure/chair/sofa/left,/turf/simulated/floor/wood,/area/dynamic/source/lobby_disco) +"Ki" = (/obj/structure/chair/comfy/brown{dir = 1},/turf/simulated/floor/wood,/area/dynamic/source/lobby_russian) +"Kj" = (/obj/structure/chair/stool,/turf/simulated/floor/wood,/area/dynamic/source/lobby_bar) +"Kk" = (/obj/structure/chair/stool,/turf/simulated/floor/wood,/area/dynamic/source/lobby_bar) +"Kl" = (/obj/structure/bed,/obj/item/bedsheet/wiz,/turf/unsimulated/floor{dir = 5;icon_state = "carpetside"},/area/wizard_station) +"Km" = (/obj/structure/chair,/turf/unsimulated/floor{dir = 8;icon_state = "wood"},/area/wizard_station) +"Kn" = (/obj/structure/chair,/turf/unsimulated/floor{dir = 8;icon_state = "wood"},/area/wizard_station) +"Ko" = (/obj/structure/chair{dir = 4},/turf/unsimulated/floor{dir = 8;icon_state = "wood"},/area/wizard_station) +"Kp" = (/obj/structure/chair{dir = 4},/turf/unsimulated/floor{dir = 8;icon_state = "wood"},/area/wizard_station) +"Kq" = (/obj/structure/chair/comfy/red,/obj/effect/landmark{name = "voxstart"},/turf/unsimulated/floor/vox,/area/vox_station) +"Kr" = (/obj/structure/chair/stool,/obj/effect/landmark{name = "voxstart"},/turf/unsimulated/floor/vox,/area/vox_station) +"Ks" = (/obj/structure/chair/stool,/obj/effect/landmark{name = "voxstart"},/turf/unsimulated/floor/vox,/area/vox_station) +"Kt" = (/obj/structure/chair/stool,/obj/effect/landmark{name = "voxstart"},/turf/unsimulated/floor/vox,/area/vox_station) +"Ku" = (/obj/structure/chair/stool,/obj/effect/landmark{name = "voxstart"},/turf/unsimulated/floor/vox,/area/vox_station) +"Kv" = (/obj/structure/chair/stool,/obj/effect/landmark{name = "voxstart"},/turf/unsimulated/floor/vox,/area/vox_station) +"Kw" = (/obj/structure/chair/comfy/brown,/obj/effect/landmark{name = "traderstart_sol"},/turf/unsimulated/floor{tag = "icon-floor";icon_state = "floor"},/area/trader_station/sol) +"Kx" = (/obj/structure/chair/comfy/brown{dir = 4},/obj/effect/landmark{name = "traderstart_sol"},/turf/unsimulated/floor{tag = "icon-floor";icon_state = "floor"},/area/trader_station/sol) +"Ky" = (/obj/structure/chair/comfy/brown{dir = 4},/obj/effect/landmark{name = "traderstart_sol"},/turf/unsimulated/floor{tag = "icon-floor";icon_state = "floor"},/area/trader_station/sol) +"Kz" = (/obj/structure/chair/comfy/brown{dir = 1},/obj/effect/landmark{name = "traderstart_sol"},/obj/machinery/light{dir = 4},/turf/unsimulated/floor{tag = "icon-floor";icon_state = "floor"},/area/trader_station/sol) +"KA" = (/obj/docking_port/stationary{area_type = /area/syndicate_mothership;dir = 1;dwidth = 11;height = 18;id = "emergency_syndicate";name = "404 Not Found";turf_type = /turf/unsimulated/floor/snow;width = 29},/turf/unsimulated/floor/snow,/area/syndicate_mothership) +"KB" = (/obj/structure/chair/stool,/turf/unsimulated/floor{icon_state = "bar";dir = 2},/area/syndicate_mothership) +"KC" = (/obj/structure/chair/stool,/turf/unsimulated/floor{icon_state = "bar";dir = 2},/area/syndicate_mothership) +"KD" = (/obj/structure/chair/stool,/turf/unsimulated/floor{icon_state = "bar";dir = 2},/area/syndicate_mothership) +"KE" = (/obj/structure/chair/stool,/turf/unsimulated/floor{icon_state = "bar";dir = 2},/area/syndicate_mothership) +"KF" = (/obj/structure/chair/stool,/obj/effect/landmark{name = "Syndicate-Spawn"},/obj/effect/decal/warning_stripes/east,/turf/unsimulated/floor{icon_state = "bar";dir = 2},/area/syndicate_mothership) +"KG" = (/obj/structure/chair/stool,/turf/unsimulated/floor{icon_state = "bar";dir = 2},/area/syndicate_mothership) +"KH" = (/obj/structure/chair/stool,/turf/unsimulated/floor{icon_state = "bar";dir = 2},/area/syndicate_mothership) +"KI" = (/obj/structure/chair/stool,/obj/effect/landmark{name = "Syndicate-Spawn"},/obj/effect/decal/warning_stripes/east,/turf/unsimulated/floor{icon_state = "bar";dir = 2},/area/syndicate_mothership) +"KJ" = (/obj/structure/chair/stool,/obj/effect/landmark{name = "Syndicate-Spawn"},/obj/effect/decal/warning_stripes/east,/turf/unsimulated/floor{icon_state = "bar";dir = 2},/area/syndicate_mothership) +"KK" = (/obj/structure/chair{dir = 4},/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/shuttle/assault_pod) +"KL" = (/obj/structure/chair{dir = 8},/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/shuttle/assault_pod) +"KM" = (/obj/structure/chair/stool/bar,/turf/unsimulated/floor{icon_state = "bar";dir = 2},/area/syndicate_mothership) +"KN" = (/obj/structure/chair/stool/bar,/turf/unsimulated/floor{icon_state = "bar";dir = 2},/area/syndicate_mothership) +"KO" = (/obj/structure/chair/stool/bar,/turf/unsimulated/floor{icon_state = "bar";dir = 2},/area/syndicate_mothership) +"KP" = (/obj/structure/chair/stool,/obj/effect/landmark{name = "Syndicate-Spawn"},/obj/effect/decal/warning_stripes/east,/turf/unsimulated/floor{icon_state = "bar";dir = 2},/area/syndicate_mothership) +"KQ" = (/obj/structure/chair{dir = 4},/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/shuttle/assault_pod) +"KR" = (/obj/structure/chair{dir = 1},/obj/machinery/light/small,/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/shuttle/assault_pod) +"KS" = (/obj/structure/chair{dir = 8},/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/shuttle/assault_pod) +"KT" = (/obj/structure/chair{dir = 8},/obj/machinery/light/small{tag = "icon-bulb1 (EAST)";icon_state = "bulb1";dir = 4},/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/shuttle/assault_pod) +"KU" = (/obj/structure/chair{dir = 4},/obj/machinery/light/small{tag = "icon-bulb1 (WEST)";icon_state = "bulb1";dir = 8},/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/shuttle/assault_pod) +"KV" = (/obj/structure/chair{dir = 4},/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/shuttle/assault_pod) +"KW" = (/obj/structure/chair,/obj/machinery/light/small{dir = 1},/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/shuttle/assault_pod) +"KX" = (/obj/structure/chair{dir = 4},/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/shuttle/assault_pod) +"KY" = (/obj/structure/chair{dir = 8},/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/shuttle/assault_pod) +"KZ" = (/obj/structure/chair/stool,/turf/unsimulated/floor{tag = "icon-dark";icon_state = "dark"},/area/syndicate_mothership) +"La" = (/obj/structure/bed,/obj/item/bedsheet,/turf/unsimulated/floor{icon_state = "carpet";dir = 2},/area/centcom/control) +"Lb" = (/obj/structure/chair/stool,/obj/structure/sign/poster/random{pixel_y = 32},/turf/unsimulated/floor{icon_state = "bar";dir = 2},/area/centcom/control) +"Lc" = (/obj/structure/chair/stool,/turf/unsimulated/floor{icon_state = "bar";dir = 2},/area/centcom/control) +"Ld" = (/obj/structure/chair/stool,/turf/unsimulated/floor{icon_state = "bar";dir = 2},/area/centcom/control) +"Le" = (/obj/structure/chair/stool,/turf/unsimulated/floor{icon_state = "bar";dir = 2},/area/centcom/control) +"Lf" = (/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) +"Lg" = (/turf/unsimulated/wall,/area/ai_multicam_room) +"Lh" = (/turf/unsimulated/wall,/area/ai_multicam_room) +"Li" = (/turf/unsimulated/wall,/area/ai_multicam_room) +"Lj" = (/turf/unsimulated/wall,/area/ai_multicam_room) +"Lk" = (/turf/unsimulated/wall,/area/ai_multicam_room) +"Ll" = (/turf/unsimulated/wall,/area/ai_multicam_room) +"Lm" = (/turf/unsimulated/wall,/area/ai_multicam_room) +"Ln" = (/turf/unsimulated/wall,/area/ai_multicam_room) +"Lo" = (/turf/unsimulated/wall,/area/ai_multicam_room) +"Lp" = (/turf/unsimulated/wall,/area/ai_multicam_room) +"Lq" = (/turf/unsimulated/wall,/area/ai_multicam_room) +"Lr" = (/turf/unsimulated/wall,/area/ai_multicam_room) +"Ls" = (/turf/unsimulated/wall,/area/ai_multicam_room) +"Lt" = (/turf/unsimulated/wall,/area/ai_multicam_room) +"Lu" = (/turf/unsimulated/wall,/area/ai_multicam_room) +"Lv" = (/turf/unsimulated/wall,/area/ai_multicam_room) +"Lw" = (/turf/unsimulated/wall,/area/ai_multicam_room) +"Lx" = (/turf/unsimulated/wall,/area/ai_multicam_room) +"Ly" = (/turf/unsimulated/wall,/area/ai_multicam_room) +"Lz" = (/turf/unsimulated/wall,/area/ai_multicam_room) +"LA" = (/turf/unsimulated/wall,/area/ai_multicam_room) +"LB" = (/obj/structure/chair/stool,/turf/unsimulated/floor{icon_state = "cafeteria";dir = 2},/area/centcom/control) +"LC" = (/obj/structure/chair/stool,/turf/unsimulated/floor{icon_state = "cafeteria";dir = 2},/area/centcom/control) +"LD" = (/turf/unsimulated/wall,/area/ai_multicam_room) +"LE" = (/turf/unsimulated/ai_visible,/area/ai_multicam_room) +"LF" = (/turf/unsimulated/ai_visible,/area/ai_multicam_room) +"LG" = (/turf/unsimulated/ai_visible,/area/ai_multicam_room) +"LH" = (/turf/unsimulated/ai_visible,/area/ai_multicam_room) +"LI" = (/turf/unsimulated/ai_visible,/area/ai_multicam_room) +"LJ" = (/turf/unsimulated/ai_visible,/area/ai_multicam_room) +"LK" = (/turf/unsimulated/ai_visible,/area/ai_multicam_room) +"LL" = (/turf/unsimulated/ai_visible,/area/ai_multicam_room) +"LM" = (/turf/unsimulated/ai_visible,/area/ai_multicam_room) +"LN" = (/turf/unsimulated/ai_visible,/area/ai_multicam_room) +"LO" = (/turf/unsimulated/ai_visible,/area/ai_multicam_room) +"LP" = (/turf/unsimulated/ai_visible,/area/ai_multicam_room) +"LQ" = (/turf/unsimulated/ai_visible,/area/ai_multicam_room) +"LR" = (/turf/unsimulated/ai_visible,/area/ai_multicam_room) +"LS" = (/turf/unsimulated/ai_visible,/area/ai_multicam_room) +"LT" = (/turf/unsimulated/ai_visible,/area/ai_multicam_room) +"LU" = (/turf/unsimulated/ai_visible,/area/ai_multicam_room) +"LV" = (/turf/unsimulated/ai_visible,/area/ai_multicam_room) +"LW" = (/turf/unsimulated/ai_visible,/area/ai_multicam_room) +"LX" = (/turf/unsimulated/wall,/area/ai_multicam_room) +"LY" = (/obj/machinery/mech_bay_recharge_port/upgraded,/obj/effect/decal/warning_stripes/yellow/hollow,/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/specops) +"LZ" = (/obj/mecha/combat/marauder/seraph/loaded,/obj/effect/decal/warning_stripes/yellow,/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/specops) +"Ma" = (/obj/structure/chair/stool,/turf/unsimulated/floor{icon_state = "bar";dir = 2},/area/centcom/control) +"Mb" = (/obj/structure/chair/stool,/turf/unsimulated/floor{icon_state = "bar";dir = 2},/area/centcom/control) +"Mc" = (/turf/unsimulated/wall,/area/ai_multicam_room) +"Md" = (/turf/unsimulated/ai_visible,/area/ai_multicam_room) +"Me" = (/turf/unsimulated/ai_visible,/area/ai_multicam_room) +"Mf" = (/turf/unsimulated/ai_visible,/area/ai_multicam_room) +"Mg" = (/turf/unsimulated/ai_visible,/area/ai_multicam_room) +"Mh" = (/turf/unsimulated/ai_visible,/area/ai_multicam_room) +"Mi" = (/turf/unsimulated/ai_visible,/area/ai_multicam_room) +"Mj" = (/turf/unsimulated/ai_visible,/area/ai_multicam_room) +"Mk" = (/turf/unsimulated/ai_visible,/area/ai_multicam_room) +"Ml" = (/turf/unsimulated/ai_visible,/area/ai_multicam_room) +"Mm" = (/turf/unsimulated/ai_visible,/area/ai_multicam_room) +"Mn" = (/turf/unsimulated/ai_visible,/area/ai_multicam_room) +"Mo" = (/turf/unsimulated/ai_visible,/area/ai_multicam_room) +"Mp" = (/turf/unsimulated/ai_visible,/area/ai_multicam_room) +"Mq" = (/turf/unsimulated/ai_visible,/area/ai_multicam_room) +"Mr" = (/turf/unsimulated/ai_visible,/area/ai_multicam_room) +"Ms" = (/turf/unsimulated/ai_visible,/area/ai_multicam_room) +"Mt" = (/turf/unsimulated/ai_visible,/area/ai_multicam_room) +"Mu" = (/turf/unsimulated/ai_visible,/area/ai_multicam_room) +"Mv" = (/turf/unsimulated/ai_visible,/area/ai_multicam_room) +"Mw" = (/turf/unsimulated/wall,/area/ai_multicam_room) +"Mx" = (/obj/effect/decal/warning_stripes/west,/turf/unsimulated/floor{name = "plating"},/area/centcom/specops) +"My" = (/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) +"Mz" = (/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) +"MA" = (/obj/structure/chair/stool,/turf/unsimulated/floor{icon_state = "bar";dir = 2},/area/centcom/control) +"MB" = (/obj/structure/chair/stool,/turf/unsimulated/floor{icon_state = "bar";dir = 2},/area/centcom/control) +"MC" = (/turf/unsimulated/wall,/area/ai_multicam_room) +"MD" = (/turf/unsimulated/ai_visible,/area/ai_multicam_room) +"ME" = (/turf/unsimulated/ai_visible,/area/ai_multicam_room) +"MF" = (/turf/unsimulated/ai_visible,/area/ai_multicam_room) +"MG" = (/turf/unsimulated/ai_visible,/area/ai_multicam_room) +"MH" = (/turf/unsimulated/ai_visible,/area/ai_multicam_room) +"MI" = (/turf/unsimulated/ai_visible,/area/ai_multicam_room) +"MJ" = (/turf/unsimulated/ai_visible,/area/ai_multicam_room) +"MK" = (/turf/unsimulated/ai_visible,/area/ai_multicam_room) +"ML" = (/turf/unsimulated/ai_visible,/area/ai_multicam_room) +"MM" = (/turf/unsimulated/ai_visible,/area/ai_multicam_room) +"MN" = (/turf/unsimulated/ai_visible,/area/ai_multicam_room) +"MO" = (/turf/unsimulated/ai_visible,/area/ai_multicam_room) +"MP" = (/turf/unsimulated/ai_visible,/area/ai_multicam_room) +"MQ" = (/turf/unsimulated/ai_visible,/area/ai_multicam_room) +"MR" = (/turf/unsimulated/ai_visible,/area/ai_multicam_room) +"MS" = (/turf/unsimulated/ai_visible,/area/ai_multicam_room) +"MT" = (/turf/unsimulated/ai_visible,/area/ai_multicam_room) +"MU" = (/turf/unsimulated/ai_visible,/area/ai_multicam_room) +"MV" = (/turf/unsimulated/ai_visible,/area/ai_multicam_room) +"MW" = (/turf/unsimulated/wall,/area/ai_multicam_room) +"MX" = (/obj/machinery/mech_bay_recharge_port/upgraded,/obj/effect/decal/warning_stripes/yellow/hollow,/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/specops) +"MY" = (/obj/mecha/combat/marauder/loaded,/obj/effect/decal/warning_stripes/yellow,/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/specops) +"MZ" = (/obj/structure/bed,/obj/item/bedsheet,/turf/unsimulated/floor{icon_state = "carpet";dir = 2},/area/centcom/control) +"Na" = (/turf/unsimulated/wall,/area/ai_multicam_room) +"Nb" = (/turf/unsimulated/ai_visible,/area/ai_multicam_room) +"Nc" = (/turf/unsimulated/ai_visible,/area/ai_multicam_room) +"Nd" = (/turf/unsimulated/ai_visible,/area/ai_multicam_room) +"Ne" = (/turf/unsimulated/ai_visible,/area/ai_multicam_room) +"Nf" = (/turf/unsimulated/ai_visible,/area/ai_multicam_room) +"Ng" = (/turf/unsimulated/ai_visible,/area/ai_multicam_room) +"Nh" = (/turf/unsimulated/ai_visible,/area/ai_multicam_room) +"Ni" = (/turf/unsimulated/ai_visible,/area/ai_multicam_room) +"Nj" = (/turf/unsimulated/ai_visible,/area/ai_multicam_room) +"Nk" = (/turf/unsimulated/ai_visible,/area/ai_multicam_room) +"Nl" = (/turf/unsimulated/ai_visible,/area/ai_multicam_room) +"Nm" = (/turf/unsimulated/ai_visible,/area/ai_multicam_room) +"Nn" = (/turf/unsimulated/ai_visible,/area/ai_multicam_room) +"No" = (/turf/unsimulated/ai_visible,/area/ai_multicam_room) +"Np" = (/turf/unsimulated/ai_visible,/area/ai_multicam_room) +"Nq" = (/turf/unsimulated/ai_visible,/area/ai_multicam_room) +"Nr" = (/turf/unsimulated/ai_visible,/area/ai_multicam_room) +"Ns" = (/turf/unsimulated/ai_visible,/area/ai_multicam_room) +"Nt" = (/turf/unsimulated/ai_visible,/area/ai_multicam_room) +"Nu" = (/turf/unsimulated/wall,/area/ai_multicam_room) +"Nv" = (/obj/effect/decal/warning_stripes/west,/turf/unsimulated/floor{name = "plating"},/area/centcom/specops) +"Nw" = (/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) +"Nx" = (/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) +"Ny" = (/obj/structure/chair/office/dark{dir = 4},/turf/unsimulated/floor{dir = 8;icon_state = "carpet15-14";tag = "icon-carpet (WEST)"},/area/centcom/control) +"Nz" = (/obj/effect/decal/warning_stripes/northwest,/turf/unsimulated/floor{name = "plating"},/area/centcom/control) +"NA" = (/obj/effect/decal/warning_stripes/north,/turf/unsimulated/floor{name = "plating"},/area/centcom/control) +"NB" = (/obj/effect/decal/warning_stripes/north,/turf/unsimulated/floor{name = "plating"},/area/centcom/control) +"NC" = (/obj/effect/decal/warning_stripes/north,/turf/unsimulated/floor{name = "plating"},/area/centcom/control) +"ND" = (/obj/effect/decal/warning_stripes/north,/turf/unsimulated/floor{name = "plating"},/area/centcom/control) +"NE" = (/obj/effect/decal/warning_stripes/north,/turf/unsimulated/floor{name = "plating"},/area/centcom/control) +"NF" = (/obj/machinery/bsa/full/admin/east,/obj/effect/decal/warning_stripes/north,/turf/unsimulated/floor{name = "plating"},/area/centcom/control) +"NG" = (/obj/effect/decal/warning_stripes/north,/turf/unsimulated/floor{name = "plating"},/area/centcom/control) +"NH" = (/obj/effect/decal/warning_stripes/north,/turf/unsimulated/floor{name = "plating"},/area/centcom/control) +"NI" = (/obj/effect/decal/warning_stripes/north,/turf/unsimulated/floor{name = "plating"},/area/centcom/control) +"NJ" = (/obj/effect/decal/warning_stripes/northeast,/turf/unsimulated/floor{name = "plating"},/area/centcom/control) +"NK" = (/turf/unsimulated/wall,/area/ai_multicam_room) +"NL" = (/turf/unsimulated/ai_visible,/area/ai_multicam_room) +"NM" = (/turf/unsimulated/ai_visible,/area/ai_multicam_room) +"NN" = (/turf/unsimulated/ai_visible,/area/ai_multicam_room) +"NO" = (/turf/unsimulated/ai_visible,/area/ai_multicam_room) +"NP" = (/turf/unsimulated/ai_visible,/area/ai_multicam_room) +"NQ" = (/turf/unsimulated/ai_visible,/area/ai_multicam_room) +"NR" = (/turf/unsimulated/ai_visible,/area/ai_multicam_room) +"NS" = (/turf/unsimulated/ai_visible,/area/ai_multicam_room) +"NT" = (/turf/unsimulated/ai_visible,/area/ai_multicam_room) +"NU" = (/turf/unsimulated/ai_visible,/area/ai_multicam_room) +"NV" = (/turf/unsimulated/ai_visible,/area/ai_multicam_room) +"NW" = (/turf/unsimulated/ai_visible,/area/ai_multicam_room) +"NX" = (/turf/unsimulated/ai_visible,/area/ai_multicam_room) +"NY" = (/turf/unsimulated/ai_visible,/area/ai_multicam_room) +"NZ" = (/turf/unsimulated/ai_visible,/area/ai_multicam_room) +"Oa" = (/turf/unsimulated/ai_visible,/area/ai_multicam_room) +"Ob" = (/turf/unsimulated/ai_visible,/area/ai_multicam_room) +"Oc" = (/turf/unsimulated/ai_visible,/area/ai_multicam_room) +"Od" = (/turf/unsimulated/ai_visible,/area/ai_multicam_room) +"Oe" = (/turf/unsimulated/wall,/area/ai_multicam_room) +"Of" = (/obj/machinery/mech_bay_recharge_port/upgraded,/obj/effect/decal/warning_stripes/yellow/hollow,/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/specops) +"Og" = (/obj/mecha/combat/marauder/loaded,/obj/effect/decal/warning_stripes/yellow,/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/specops) +"Oh" = (/obj/effect/decal/warning_stripes/southwest,/turf/unsimulated/floor{name = "plating"},/area/centcom/control) +"Oi" = (/obj/effect/decal/warning_stripes/south,/turf/unsimulated/floor{name = "plating"},/area/centcom/control) +"Oj" = (/obj/effect/decal/warning_stripes/south,/turf/unsimulated/floor{name = "plating"},/area/centcom/control) +"Ok" = (/obj/effect/decal/warning_stripes/south,/turf/unsimulated/floor{name = "plating"},/area/centcom/control) +"Ol" = (/obj/effect/decal/warning_stripes/south,/turf/unsimulated/floor{name = "plating"},/area/centcom/control) +"Om" = (/obj/effect/decal/warning_stripes/south,/turf/unsimulated/floor{name = "plating"},/area/centcom/control) +"On" = (/obj/effect/decal/warning_stripes/south,/turf/unsimulated/floor{name = "plating"},/area/centcom/control) +"Oo" = (/obj/effect/decal/warning_stripes/south,/turf/unsimulated/floor{name = "plating"},/area/centcom/control) +"Op" = (/obj/effect/decal/warning_stripes/south,/turf/unsimulated/floor{name = "plating"},/area/centcom/control) +"Oq" = (/obj/effect/decal/warning_stripes/south,/turf/unsimulated/floor{name = "plating"},/area/centcom/control) +"Or" = (/obj/effect/decal/warning_stripes/southeast,/turf/unsimulated/floor{name = "plating"},/area/centcom/control) +"Os" = (/turf/unsimulated/wall,/area/ai_multicam_room) +"Ot" = (/turf/unsimulated/ai_visible,/area/ai_multicam_room) +"Ou" = (/turf/unsimulated/ai_visible,/area/ai_multicam_room) +"Ov" = (/turf/unsimulated/ai_visible,/area/ai_multicam_room) +"Ow" = (/turf/unsimulated/ai_visible,/area/ai_multicam_room) +"Ox" = (/turf/unsimulated/ai_visible,/area/ai_multicam_room) +"Oy" = (/turf/unsimulated/ai_visible,/area/ai_multicam_room) +"Oz" = (/turf/unsimulated/ai_visible,/area/ai_multicam_room) +"OA" = (/turf/unsimulated/ai_visible,/area/ai_multicam_room) +"OB" = (/turf/unsimulated/ai_visible,/area/ai_multicam_room) +"OC" = (/turf/unsimulated/ai_visible,/area/ai_multicam_room) +"OD" = (/turf/unsimulated/ai_visible,/area/ai_multicam_room) +"OE" = (/turf/unsimulated/ai_visible,/area/ai_multicam_room) +"OF" = (/turf/unsimulated/ai_visible,/area/ai_multicam_room) +"OG" = (/turf/unsimulated/ai_visible,/area/ai_multicam_room) +"OH" = (/turf/unsimulated/ai_visible,/area/ai_multicam_room) +"OI" = (/turf/unsimulated/ai_visible,/area/ai_multicam_room) +"OJ" = (/turf/unsimulated/ai_visible,/area/ai_multicam_room) +"OK" = (/turf/unsimulated/ai_visible,/area/ai_multicam_room) +"OL" = (/turf/unsimulated/ai_visible,/area/ai_multicam_room) +"OM" = (/turf/unsimulated/wall,/area/ai_multicam_room) +"ON" = (/obj/effect/decal/warning_stripes/west,/turf/unsimulated/floor{name = "plating"},/area/centcom/specops) +"OO" = (/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) +"OP" = (/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) +"OQ" = (/obj/structure/bed,/obj/item/bedsheet,/turf/unsimulated/floor{dir = 10;icon_state = "carpetside"},/area/centcom/control) +"OR" = (/turf/unsimulated/wall,/area/ai_multicam_room) +"OS" = (/turf/unsimulated/ai_visible,/area/ai_multicam_room) +"OT" = (/turf/unsimulated/ai_visible,/area/ai_multicam_room) +"OU" = (/turf/unsimulated/ai_visible,/area/ai_multicam_room) +"OV" = (/turf/unsimulated/ai_visible,/area/ai_multicam_room) +"OW" = (/turf/unsimulated/ai_visible,/area/ai_multicam_room) +"OX" = (/turf/unsimulated/ai_visible,/area/ai_multicam_room) +"OY" = (/turf/unsimulated/ai_visible,/area/ai_multicam_room) +"OZ" = (/turf/unsimulated/ai_visible,/area/ai_multicam_room) +"Pa" = (/turf/unsimulated/ai_visible,/area/ai_multicam_room) +"Pb" = (/turf/unsimulated/ai_visible,/area/ai_multicam_room) +"Pc" = (/turf/unsimulated/ai_visible,/area/ai_multicam_room) +"Pd" = (/turf/unsimulated/ai_visible,/area/ai_multicam_room) +"Pe" = (/turf/unsimulated/ai_visible,/area/ai_multicam_room) +"Pf" = (/turf/unsimulated/ai_visible,/area/ai_multicam_room) +"Pg" = (/turf/unsimulated/ai_visible,/area/ai_multicam_room) +"Ph" = (/turf/unsimulated/ai_visible,/area/ai_multicam_room) +"Pi" = (/turf/unsimulated/ai_visible,/area/ai_multicam_room) +"Pj" = (/turf/unsimulated/ai_visible,/area/ai_multicam_room) +"Pk" = (/turf/unsimulated/ai_visible,/area/ai_multicam_room) +"Pl" = (/turf/unsimulated/wall,/area/ai_multicam_room) +"Pm" = (/obj/machinery/mech_bay_recharge_port/upgraded,/obj/effect/decal/warning_stripes/yellow/hollow,/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/specops) +"Pn" = (/obj/mecha/combat/marauder/loaded,/obj/effect/decal/warning_stripes/yellow,/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/specops) +"Po" = (/turf/unsimulated/wall,/area/ai_multicam_room) +"Pp" = (/turf/unsimulated/ai_visible,/area/ai_multicam_room) +"Pq" = (/turf/unsimulated/ai_visible,/area/ai_multicam_room) +"Pr" = (/turf/unsimulated/ai_visible,/area/ai_multicam_room) +"Ps" = (/turf/unsimulated/ai_visible,/area/ai_multicam_room) +"Pt" = (/turf/unsimulated/ai_visible,/area/ai_multicam_room) +"Pu" = (/turf/unsimulated/ai_visible,/area/ai_multicam_room) +"Pv" = (/turf/unsimulated/ai_visible,/area/ai_multicam_room) +"Pw" = (/turf/unsimulated/ai_visible,/area/ai_multicam_room) +"Px" = (/turf/unsimulated/ai_visible,/area/ai_multicam_room) +"Py" = (/turf/unsimulated/ai_visible,/area/ai_multicam_room) +"Pz" = (/turf/unsimulated/ai_visible,/area/ai_multicam_room) +"PA" = (/turf/unsimulated/ai_visible,/area/ai_multicam_room) +"PB" = (/turf/unsimulated/ai_visible,/area/ai_multicam_room) +"PC" = (/turf/unsimulated/ai_visible,/area/ai_multicam_room) +"PD" = (/turf/unsimulated/ai_visible,/area/ai_multicam_room) +"PE" = (/turf/unsimulated/ai_visible,/area/ai_multicam_room) +"PF" = (/turf/unsimulated/ai_visible,/area/ai_multicam_room) +"PG" = (/turf/unsimulated/ai_visible,/area/ai_multicam_room) +"PH" = (/turf/unsimulated/ai_visible,/area/ai_multicam_room) +"PI" = (/turf/unsimulated/wall,/area/ai_multicam_room) +"PJ" = (/obj/effect/decal/warning_stripes/west,/turf/unsimulated/floor{name = "plating"},/area/centcom/specops) +"PK" = (/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) +"PL" = (/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) +"PM" = (/turf/unsimulated/wall,/area/ai_multicam_room) +"PN" = (/turf/unsimulated/ai_visible,/area/ai_multicam_room) +"PO" = (/turf/unsimulated/ai_visible,/area/ai_multicam_room) +"PP" = (/turf/unsimulated/ai_visible,/area/ai_multicam_room) +"PQ" = (/turf/unsimulated/ai_visible,/area/ai_multicam_room) +"PR" = (/turf/unsimulated/ai_visible,/area/ai_multicam_room) +"PS" = (/turf/unsimulated/ai_visible,/area/ai_multicam_room) +"PT" = (/turf/unsimulated/ai_visible,/area/ai_multicam_room) +"PU" = (/turf/unsimulated/ai_visible,/area/ai_multicam_room) +"PV" = (/turf/unsimulated/ai_visible,/area/ai_multicam_room) +"PW" = (/turf/unsimulated/ai_visible,/area/ai_multicam_room) +"PX" = (/turf/unsimulated/ai_visible,/area/ai_multicam_room) +"PY" = (/turf/unsimulated/ai_visible,/area/ai_multicam_room) +"PZ" = (/turf/unsimulated/ai_visible,/area/ai_multicam_room) +"Qa" = (/turf/unsimulated/ai_visible,/area/ai_multicam_room) +"Qb" = (/turf/unsimulated/ai_visible,/area/ai_multicam_room) +"Qc" = (/turf/unsimulated/ai_visible,/area/ai_multicam_room) +"Qd" = (/turf/unsimulated/ai_visible,/area/ai_multicam_room) +"Qe" = (/turf/unsimulated/ai_visible,/area/ai_multicam_room) +"Qf" = (/turf/unsimulated/ai_visible,/area/ai_multicam_room) +"Qg" = (/turf/unsimulated/wall,/area/ai_multicam_room) +"Qh" = (/turf/unsimulated/wall,/area/ai_multicam_room) +"Qi" = (/turf/unsimulated/ai_visible,/area/ai_multicam_room) +"Qj" = (/turf/unsimulated/ai_visible,/area/ai_multicam_room) +"Qk" = (/turf/unsimulated/ai_visible,/area/ai_multicam_room) +"Ql" = (/turf/unsimulated/ai_visible,/area/ai_multicam_room) +"Qm" = (/turf/unsimulated/ai_visible,/area/ai_multicam_room) +"Qn" = (/turf/unsimulated/ai_visible,/area/ai_multicam_room) +"Qo" = (/turf/unsimulated/ai_visible,/area/ai_multicam_room) +"Qp" = (/turf/unsimulated/ai_visible,/area/ai_multicam_room) +"Qq" = (/turf/unsimulated/ai_visible,/area/ai_multicam_room) +"Qr" = (/obj/effect/landmark/ai_multicam_room,/turf/unsimulated/ai_visible,/area/ai_multicam_room) +"Qs" = (/turf/unsimulated/ai_visible,/area/ai_multicam_room) +"Qt" = (/turf/unsimulated/ai_visible,/area/ai_multicam_room) +"Qu" = (/turf/unsimulated/ai_visible,/area/ai_multicam_room) +"Qv" = (/turf/unsimulated/ai_visible,/area/ai_multicam_room) +"Qw" = (/turf/unsimulated/ai_visible,/area/ai_multicam_room) +"Qx" = (/turf/unsimulated/ai_visible,/area/ai_multicam_room) +"Qy" = (/turf/unsimulated/ai_visible,/area/ai_multicam_room) +"Qz" = (/turf/unsimulated/ai_visible,/area/ai_multicam_room) +"QA" = (/turf/unsimulated/ai_visible,/area/ai_multicam_room) +"QB" = (/turf/unsimulated/wall,/area/ai_multicam_room) +"QC" = (/obj/structure/chair/office/dark{dir = 4},/turf/simulated/floor/plasteel{icon_state = "red";dir = 1},/area/centcom/gamma) +"QD" = (/obj/structure/chair/office/dark{dir = 8},/turf/simulated/floor/plasteel{icon_state = "red";dir = 1},/area/centcom/gamma) +"QE" = (/obj/structure/chair/sofa/right,/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/shuttle/escape) +"QF" = (/obj/structure/chair/sofa,/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/shuttle/escape) +"QG" = (/obj/structure/chair/sofa,/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/shuttle/escape) +"QH" = (/obj/structure/chair/sofa,/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/shuttle/escape) +"QI" = (/obj/structure/chair/sofa,/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/shuttle/escape) +"QJ" = (/obj/structure/chair/sofa/corner,/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/shuttle/escape) +"QK" = (/turf/unsimulated/wall,/area/ai_multicam_room) +"QL" = (/turf/unsimulated/ai_visible,/area/ai_multicam_room) +"QM" = (/turf/unsimulated/ai_visible,/area/ai_multicam_room) +"QN" = (/turf/unsimulated/ai_visible,/area/ai_multicam_room) +"QO" = (/turf/unsimulated/ai_visible,/area/ai_multicam_room) +"QP" = (/turf/unsimulated/ai_visible,/area/ai_multicam_room) +"QQ" = (/turf/unsimulated/ai_visible,/area/ai_multicam_room) +"QR" = (/turf/unsimulated/ai_visible,/area/ai_multicam_room) +"QS" = (/turf/unsimulated/ai_visible,/area/ai_multicam_room) +"QT" = (/turf/unsimulated/ai_visible,/area/ai_multicam_room) +"QU" = (/turf/unsimulated/ai_visible,/area/ai_multicam_room) +"QV" = (/turf/unsimulated/ai_visible,/area/ai_multicam_room) +"QW" = (/turf/unsimulated/ai_visible,/area/ai_multicam_room) +"QX" = (/turf/unsimulated/ai_visible,/area/ai_multicam_room) +"QY" = (/turf/unsimulated/ai_visible,/area/ai_multicam_room) +"QZ" = (/turf/unsimulated/ai_visible,/area/ai_multicam_room) +"Ra" = (/turf/unsimulated/ai_visible,/area/ai_multicam_room) +"Rb" = (/turf/unsimulated/ai_visible,/area/ai_multicam_room) +"Rc" = (/turf/unsimulated/ai_visible,/area/ai_multicam_room) +"Rd" = (/turf/unsimulated/ai_visible,/area/ai_multicam_room) +"Re" = (/turf/unsimulated/wall,/area/ai_multicam_room) +"Rf" = (/obj/structure/chair{dir = 1},/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/specops) +"Rg" = (/obj/structure/chair/office/dark{dir = 8},/turf/unsimulated/floor{icon_state = "floor"},/area/centcom/control) +"Rh" = (/turf/unsimulated/wall,/area/ai_multicam_room) +"Ri" = (/turf/unsimulated/ai_visible,/area/ai_multicam_room) +"Rj" = (/turf/unsimulated/ai_visible,/area/ai_multicam_room) +"Rk" = (/turf/unsimulated/ai_visible,/area/ai_multicam_room) +"Rl" = (/turf/unsimulated/ai_visible,/area/ai_multicam_room) +"Rm" = (/turf/unsimulated/ai_visible,/area/ai_multicam_room) +"Rn" = (/turf/unsimulated/ai_visible,/area/ai_multicam_room) +"Ro" = (/turf/unsimulated/ai_visible,/area/ai_multicam_room) +"Rp" = (/turf/unsimulated/ai_visible,/area/ai_multicam_room) +"Rq" = (/turf/unsimulated/ai_visible,/area/ai_multicam_room) +"Rr" = (/turf/unsimulated/ai_visible,/area/ai_multicam_room) +"Rs" = (/turf/unsimulated/ai_visible,/area/ai_multicam_room) +"Rt" = (/turf/unsimulated/ai_visible,/area/ai_multicam_room) +"Ru" = (/turf/unsimulated/ai_visible,/area/ai_multicam_room) +"Rv" = (/turf/unsimulated/ai_visible,/area/ai_multicam_room) +"Rw" = (/turf/unsimulated/ai_visible,/area/ai_multicam_room) +"Rx" = (/turf/unsimulated/ai_visible,/area/ai_multicam_room) +"Ry" = (/turf/unsimulated/ai_visible,/area/ai_multicam_room) +"Rz" = (/turf/unsimulated/ai_visible,/area/ai_multicam_room) +"RA" = (/turf/unsimulated/ai_visible,/area/ai_multicam_room) +"RB" = (/turf/unsimulated/wall,/area/ai_multicam_room) +"RC" = (/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) +"RD" = (/obj/effect/decal/warning_stripes/south,/turf/unsimulated/floor{icon_state = "floor"},/area/centcom/control) +"RE" = (/turf/unsimulated/wall,/area/ai_multicam_room) +"RF" = (/turf/unsimulated/ai_visible,/area/ai_multicam_room) +"RG" = (/turf/unsimulated/ai_visible,/area/ai_multicam_room) +"RH" = (/turf/unsimulated/ai_visible,/area/ai_multicam_room) +"RI" = (/turf/unsimulated/ai_visible,/area/ai_multicam_room) +"RJ" = (/turf/unsimulated/ai_visible,/area/ai_multicam_room) +"RK" = (/turf/unsimulated/ai_visible,/area/ai_multicam_room) +"RL" = (/turf/unsimulated/ai_visible,/area/ai_multicam_room) +"RM" = (/turf/unsimulated/ai_visible,/area/ai_multicam_room) +"RN" = (/turf/unsimulated/ai_visible,/area/ai_multicam_room) +"RO" = (/turf/unsimulated/ai_visible,/area/ai_multicam_room) +"RP" = (/turf/unsimulated/ai_visible,/area/ai_multicam_room) +"RQ" = (/turf/unsimulated/ai_visible,/area/ai_multicam_room) +"RR" = (/turf/unsimulated/ai_visible,/area/ai_multicam_room) +"RS" = (/turf/unsimulated/ai_visible,/area/ai_multicam_room) +"RT" = (/turf/unsimulated/ai_visible,/area/ai_multicam_room) +"RU" = (/turf/unsimulated/ai_visible,/area/ai_multicam_room) +"RV" = (/turf/unsimulated/ai_visible,/area/ai_multicam_room) +"RW" = (/turf/unsimulated/ai_visible,/area/ai_multicam_room) +"RX" = (/turf/unsimulated/ai_visible,/area/ai_multicam_room) +"RY" = (/turf/unsimulated/wall,/area/ai_multicam_room) +"RZ" = (/obj/structure/chair/office/dark,/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/specops) +"Sa" = (/obj/structure/chair/office/dark,/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/specops) +"Sb" = (/obj/effect/decal/warning_stripes/yellow/hollow,/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/specops) +"Sc" = (/obj/effect/decal/warning_stripes/yellow/hollow,/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/specops) +"Sd" = (/obj/effect/decal/warning_stripes/yellow/hollow,/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/specops) +"Se" = (/obj/effect/decal/warning_stripes/yellow/hollow,/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/specops) +"Sf" = (/obj/effect/decal/warning_stripes/yellow/hollow,/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/specops) +"Sg" = (/obj/effect/decal/warning_stripes/yellow/hollow,/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/specops) +"Sh" = (/obj/effect/decal/warning_stripes/yellow/hollow,/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/specops) +"Si" = (/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) +"Sj" = (/obj/effect/decal/warning_stripes/yellow/hollow,/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/specops) +"Sk" = (/obj/effect/decal/warning_stripes/yellow/hollow,/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/specops) +"Sl" = (/obj/effect/decal/warning_stripes/yellow/hollow,/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/specops) +"Sm" = (/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) +"Sn" = (/turf/unsimulated/wall,/area/ai_multicam_room) +"So" = (/turf/unsimulated/ai_visible,/area/ai_multicam_room) +"Sp" = (/turf/unsimulated/ai_visible,/area/ai_multicam_room) +"Sq" = (/turf/unsimulated/ai_visible,/area/ai_multicam_room) +"Sr" = (/turf/unsimulated/ai_visible,/area/ai_multicam_room) +"Ss" = (/turf/unsimulated/ai_visible,/area/ai_multicam_room) +"St" = (/turf/unsimulated/ai_visible,/area/ai_multicam_room) +"Su" = (/turf/unsimulated/ai_visible,/area/ai_multicam_room) +"Sv" = (/turf/unsimulated/ai_visible,/area/ai_multicam_room) +"Sw" = (/turf/unsimulated/ai_visible,/area/ai_multicam_room) +"Sx" = (/turf/unsimulated/ai_visible,/area/ai_multicam_room) +"Sy" = (/turf/unsimulated/ai_visible,/area/ai_multicam_room) +"Sz" = (/turf/unsimulated/ai_visible,/area/ai_multicam_room) +"SA" = (/turf/unsimulated/ai_visible,/area/ai_multicam_room) +"SB" = (/turf/unsimulated/ai_visible,/area/ai_multicam_room) +"SC" = (/turf/unsimulated/ai_visible,/area/ai_multicam_room) +"SD" = (/turf/unsimulated/ai_visible,/area/ai_multicam_room) +"SE" = (/turf/unsimulated/ai_visible,/area/ai_multicam_room) +"SF" = (/turf/unsimulated/ai_visible,/area/ai_multicam_room) +"SG" = (/turf/unsimulated/ai_visible,/area/ai_multicam_room) +"SH" = (/turf/unsimulated/wall,/area/ai_multicam_room) +"SI" = (/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) +"SJ" = (/turf/unsimulated/wall,/area/ai_multicam_room) +"SK" = (/turf/unsimulated/ai_visible,/area/ai_multicam_room) +"SL" = (/turf/unsimulated/ai_visible,/area/ai_multicam_room) +"SM" = (/turf/unsimulated/ai_visible,/area/ai_multicam_room) +"SN" = (/turf/unsimulated/ai_visible,/area/ai_multicam_room) +"SO" = (/turf/unsimulated/ai_visible,/area/ai_multicam_room) +"SP" = (/turf/unsimulated/ai_visible,/area/ai_multicam_room) +"SQ" = (/turf/unsimulated/ai_visible,/area/ai_multicam_room) +"SR" = (/turf/unsimulated/ai_visible,/area/ai_multicam_room) +"SS" = (/turf/unsimulated/ai_visible,/area/ai_multicam_room) +"ST" = (/turf/unsimulated/ai_visible,/area/ai_multicam_room) +"SU" = (/turf/unsimulated/ai_visible,/area/ai_multicam_room) +"SV" = (/turf/unsimulated/ai_visible,/area/ai_multicam_room) +"SW" = (/turf/unsimulated/ai_visible,/area/ai_multicam_room) +"SX" = (/turf/unsimulated/ai_visible,/area/ai_multicam_room) +"SY" = (/turf/unsimulated/ai_visible,/area/ai_multicam_room) +"SZ" = (/turf/unsimulated/ai_visible,/area/ai_multicam_room) +"Ta" = (/turf/unsimulated/ai_visible,/area/ai_multicam_room) +"Tb" = (/turf/unsimulated/ai_visible,/area/ai_multicam_room) +"Tc" = (/turf/unsimulated/ai_visible,/area/ai_multicam_room) +"Td" = (/turf/unsimulated/wall,/area/ai_multicam_room) +"Te" = (/obj/machinery/teleport/hub/upgraded{admin_usage = 1},/obj/effect/decal/warning_stripes/yellow,/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/specops) +"Tf" = (/obj/structure/chair/comfy/black{dir = 4},/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/specops) +"Tg" = (/obj/structure/chair/office/dark{dir = 8},/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/specops) +"Th" = (/obj/effect/decal/warning_stripes/yellow/hollow,/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/specops) +"Ti" = (/obj/structure/chair/office/dark{dir = 8},/turf/unsimulated/floor{icon_state = "floor"},/area/centcom/control) +"Tj" = (/obj/structure/chair/office/dark,/turf/unsimulated/floor{icon_state = "floor"},/area/centcom/control) +"Tk" = (/obj/structure/chair/office/dark,/turf/unsimulated/floor{icon_state = "floor"},/area/centcom/control) +"Tl" = (/obj/structure/chair/office/dark,/turf/unsimulated/floor{icon_state = "floor"},/area/centcom/control) +"Tm" = (/obj/structure/chair/office/dark{dir = 4},/turf/unsimulated/floor{icon_state = "floor"},/area/centcom/control) +"Tn" = (/turf/unsimulated/wall,/area/ai_multicam_room) +"To" = (/turf/unsimulated/ai_visible,/area/ai_multicam_room) +"Tp" = (/turf/unsimulated/ai_visible,/area/ai_multicam_room) +"Tq" = (/turf/unsimulated/ai_visible,/area/ai_multicam_room) +"Tr" = (/turf/unsimulated/ai_visible,/area/ai_multicam_room) +"Ts" = (/turf/unsimulated/ai_visible,/area/ai_multicam_room) +"Tt" = (/turf/unsimulated/ai_visible,/area/ai_multicam_room) +"Tu" = (/turf/unsimulated/ai_visible,/area/ai_multicam_room) +"Tv" = (/turf/unsimulated/ai_visible,/area/ai_multicam_room) +"Tw" = (/turf/unsimulated/ai_visible,/area/ai_multicam_room) +"Tx" = (/turf/unsimulated/ai_visible,/area/ai_multicam_room) +"Ty" = (/turf/unsimulated/ai_visible,/area/ai_multicam_room) +"Tz" = (/turf/unsimulated/ai_visible,/area/ai_multicam_room) +"TA" = (/turf/unsimulated/ai_visible,/area/ai_multicam_room) +"TB" = (/turf/unsimulated/ai_visible,/area/ai_multicam_room) +"TC" = (/turf/unsimulated/ai_visible,/area/ai_multicam_room) +"TD" = (/turf/unsimulated/ai_visible,/area/ai_multicam_room) +"TE" = (/turf/unsimulated/ai_visible,/area/ai_multicam_room) +"TF" = (/turf/unsimulated/ai_visible,/area/ai_multicam_room) +"TG" = (/turf/unsimulated/ai_visible,/area/ai_multicam_room) +"TH" = (/turf/unsimulated/wall,/area/ai_multicam_room) +"TI" = (/obj/effect/decal/warning_stripes/yellow/hollow,/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/specops) +"TJ" = (/turf/unsimulated/wall,/area/ai_multicam_room) +"TK" = (/turf/unsimulated/ai_visible,/area/ai_multicam_room) +"TL" = (/turf/unsimulated/ai_visible,/area/ai_multicam_room) +"TM" = (/turf/unsimulated/ai_visible,/area/ai_multicam_room) +"TN" = (/turf/unsimulated/ai_visible,/area/ai_multicam_room) +"TO" = (/turf/unsimulated/ai_visible,/area/ai_multicam_room) +"TP" = (/turf/unsimulated/ai_visible,/area/ai_multicam_room) +"TQ" = (/turf/unsimulated/ai_visible,/area/ai_multicam_room) +"TR" = (/turf/unsimulated/ai_visible,/area/ai_multicam_room) +"TS" = (/turf/unsimulated/ai_visible,/area/ai_multicam_room) +"TT" = (/turf/unsimulated/ai_visible,/area/ai_multicam_room) +"TU" = (/turf/unsimulated/ai_visible,/area/ai_multicam_room) +"TV" = (/turf/unsimulated/ai_visible,/area/ai_multicam_room) +"TW" = (/turf/unsimulated/ai_visible,/area/ai_multicam_room) +"TX" = (/turf/unsimulated/ai_visible,/area/ai_multicam_room) +"TY" = (/turf/unsimulated/ai_visible,/area/ai_multicam_room) +"TZ" = (/turf/unsimulated/ai_visible,/area/ai_multicam_room) +"Ua" = (/turf/unsimulated/ai_visible,/area/ai_multicam_room) +"Ub" = (/turf/unsimulated/ai_visible,/area/ai_multicam_room) +"Uc" = (/turf/unsimulated/ai_visible,/area/ai_multicam_room) +"Ud" = (/turf/unsimulated/wall,/area/ai_multicam_room) +"Ue" = (/obj/structure/chair/office/dark{dir = 1},/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/specops) +"Uf" = (/obj/structure/chair/office/dark{dir = 1},/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/specops) +"Ug" = (/obj/machinery/door_control{desc = "A remote control switch to block view of the singularity.";icon_state = "doorctrl0";id = "GRAVPULTS";name = "Gravity Catapults";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 = "ASSAULT";name = "Mech Storage";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 = "CCTELE";name = "Teleporter Access";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) +"Uh" = (/obj/machinery/computer/security/telescreen{name = "Special Ops. Monitor";desc = "Used for watching the Special Ops.";network = list("ERT")},/obj/structure/table/wood,/turf/unsimulated/floor{icon_state = "carpet";dir = 2},/area/centcom/specops) +"Ui" = (/obj/item/radio/intercom/specops,/obj/structure/table/wood,/turf/unsimulated/floor{dir = 4;icon_state = "carpetside"},/area/centcom/specops) +"Uj" = (/obj/effect/decal/warning_stripes/yellow/hollow,/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/specops) +"Uk" = (/turf/unsimulated/wall,/area/ai_multicam_room) +"Ul" = (/turf/unsimulated/ai_visible,/area/ai_multicam_room) +"Um" = (/turf/unsimulated/ai_visible,/area/ai_multicam_room) +"Un" = (/turf/unsimulated/ai_visible,/area/ai_multicam_room) +"Uo" = (/turf/unsimulated/ai_visible,/area/ai_multicam_room) +"Up" = (/turf/unsimulated/ai_visible,/area/ai_multicam_room) +"Uq" = (/turf/unsimulated/ai_visible,/area/ai_multicam_room) +"Ur" = (/turf/unsimulated/ai_visible,/area/ai_multicam_room) +"Us" = (/turf/unsimulated/ai_visible,/area/ai_multicam_room) +"Ut" = (/turf/unsimulated/ai_visible,/area/ai_multicam_room) +"Uu" = (/turf/unsimulated/ai_visible,/area/ai_multicam_room) +"Uv" = (/turf/unsimulated/ai_visible,/area/ai_multicam_room) +"Uw" = (/turf/unsimulated/ai_visible,/area/ai_multicam_room) +"Ux" = (/turf/unsimulated/ai_visible,/area/ai_multicam_room) +"Uy" = (/turf/unsimulated/ai_visible,/area/ai_multicam_room) +"Uz" = (/turf/unsimulated/ai_visible,/area/ai_multicam_room) +"UA" = (/turf/unsimulated/ai_visible,/area/ai_multicam_room) +"UB" = (/turf/unsimulated/ai_visible,/area/ai_multicam_room) +"UC" = (/turf/unsimulated/ai_visible,/area/ai_multicam_room) +"UD" = (/turf/unsimulated/ai_visible,/area/ai_multicam_room) +"UE" = (/turf/unsimulated/wall,/area/ai_multicam_room) +"UF" = (/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) +"UG" = (/obj/structure/chair/comfy/black{dir = 1},/obj/effect/landmark{name = "ERT Director"},/turf/unsimulated/floor{icon_state = "carpet";dir = 2},/area/centcom/specops) +"UH" = (/obj/structure/chair{dir = 1},/turf/unsimulated/floor{icon_state = "grimy"},/area/centcom/specops) +"UI" = (/obj/effect/decal/warning_stripes/yellow/hollow,/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/specops) +"UJ" = (/turf/unsimulated/wall,/area/ai_multicam_room) +"UK" = (/turf/unsimulated/ai_visible,/area/ai_multicam_room) +"UL" = (/turf/unsimulated/ai_visible,/area/ai_multicam_room) +"UM" = (/turf/unsimulated/ai_visible,/area/ai_multicam_room) +"UN" = (/turf/unsimulated/ai_visible,/area/ai_multicam_room) +"UO" = (/turf/unsimulated/ai_visible,/area/ai_multicam_room) +"UP" = (/turf/unsimulated/ai_visible,/area/ai_multicam_room) +"UQ" = (/turf/unsimulated/ai_visible,/area/ai_multicam_room) +"UR" = (/turf/unsimulated/ai_visible,/area/ai_multicam_room) +"US" = (/turf/unsimulated/ai_visible,/area/ai_multicam_room) +"UT" = (/turf/unsimulated/ai_visible,/area/ai_multicam_room) +"UU" = (/turf/unsimulated/ai_visible,/area/ai_multicam_room) +"UV" = (/turf/unsimulated/ai_visible,/area/ai_multicam_room) +"UW" = (/turf/unsimulated/ai_visible,/area/ai_multicam_room) +"UX" = (/turf/unsimulated/ai_visible,/area/ai_multicam_room) +"UY" = (/turf/unsimulated/ai_visible,/area/ai_multicam_room) +"UZ" = (/turf/unsimulated/ai_visible,/area/ai_multicam_room) +"Va" = (/turf/unsimulated/ai_visible,/area/ai_multicam_room) +"Vb" = (/turf/unsimulated/ai_visible,/area/ai_multicam_room) +"Vc" = (/turf/unsimulated/ai_visible,/area/ai_multicam_room) +"Vd" = (/turf/unsimulated/wall,/area/ai_multicam_room) +"Ve" = (/obj/effect/decal/warning_stripes/yellow/hollow,/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/specops) +"Vf" = (/turf/unsimulated/wall,/area/ai_multicam_room) +"Vg" = (/turf/unsimulated/wall,/area/ai_multicam_room) +"Vh" = (/turf/unsimulated/wall,/area/ai_multicam_room) +"Vi" = (/turf/unsimulated/wall,/area/ai_multicam_room) +"Vj" = (/turf/unsimulated/wall,/area/ai_multicam_room) +"Vk" = (/turf/unsimulated/wall,/area/ai_multicam_room) +"Vl" = (/turf/unsimulated/wall,/area/ai_multicam_room) +"Vm" = (/turf/unsimulated/wall,/area/ai_multicam_room) +"Vn" = (/turf/unsimulated/wall,/area/ai_multicam_room) +"Vo" = (/turf/unsimulated/wall,/area/ai_multicam_room) +"Vp" = (/turf/unsimulated/wall,/area/ai_multicam_room) +"Vq" = (/turf/unsimulated/wall,/area/ai_multicam_room) +"Vr" = (/turf/unsimulated/wall,/area/ai_multicam_room) +"Vs" = (/turf/unsimulated/wall,/area/ai_multicam_room) +"Vt" = (/turf/unsimulated/wall,/area/ai_multicam_room) +"Vu" = (/turf/unsimulated/wall,/area/ai_multicam_room) +"Vv" = (/turf/unsimulated/wall,/area/ai_multicam_room) +"Vw" = (/turf/unsimulated/wall,/area/ai_multicam_room) +"Vx" = (/turf/unsimulated/wall,/area/ai_multicam_room) +"Vy" = (/turf/unsimulated/wall,/area/ai_multicam_room) +"Vz" = (/turf/unsimulated/wall,/area/ai_multicam_room) +"VA" = (/obj/effect/decal/warning_stripes/northwest,/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/specops) +"VB" = (/obj/effect/decal/warning_stripes/northeast,/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/specops) +"VC" = (/obj/effect/decal/warning_stripes/yellow/hollow,/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/specops) +"VD" = (/obj/effect/decal/warning_stripes/southwest,/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/specops) +"VE" = (/obj/effect/decal/warning_stripes/southeast,/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/specops) +"VF" = (/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) +"VG" = (/obj/structure/bed,/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/specops) +"VH" = (/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) +"VI" = (/obj/structure/bed,/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/specops) +"VJ" = (/obj/structure/chair,/turf/unsimulated/floor{icon_state = "floor"},/area/centcom/evac) +"VK" = (/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) +"VL" = (/obj/structure/bed,/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/specops) +"VM" = (/obj/structure/chair{dir = 8},/turf/unsimulated/floor{icon_state = "floor"},/area/centcom/evac) +"VN" = (/obj/structure/chair{dir = 4},/turf/unsimulated/floor{icon_state = "floor"},/area/centcom/evac) +"VO" = (/obj/structure/chair{dir = 8},/turf/unsimulated/floor{icon_state = "floor"},/area/centcom/evac) +"VP" = (/obj/structure/chair{dir = 4},/turf/unsimulated/floor{icon_state = "floor"},/area/centcom/evac) +"VQ" = (/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) +"VR" = (/obj/structure/chair{dir = 8},/turf/unsimulated/floor{icon_state = "floor"},/area/centcom/evac) +"VS" = (/obj/structure/chair{dir = 4},/turf/unsimulated/floor{icon_state = "floor"},/area/centcom/evac) +"VT" = (/obj/structure/chair{dir = 8},/turf/unsimulated/floor{icon_state = "floor"},/area/centcom/evac) +"VU" = (/obj/structure/chair{dir = 4},/turf/unsimulated/floor{icon_state = "floor"},/area/centcom/evac) +"VV" = (/obj/structure/chair{dir = 8},/turf/unsimulated/floor{icon_state = "floor"},/area/centcom/evac) +"VW" = (/obj/structure/chair{dir = 4},/turf/unsimulated/floor{icon_state = "floor"},/area/centcom/evac) +"VX" = (/obj/structure/chair{dir = 8},/turf/unsimulated/floor{icon_state = "floor"},/area/centcom/evac) +"VY" = (/obj/structure/chair{dir = 4},/turf/unsimulated/floor{icon_state = "floor"},/area/centcom/evac) +"VZ" = (/obj/docking_port/stationary{dir = 4;dwidth = 11;height = 18;id = "emergency_away";name = "emergency centcom";width = 29},/turf/space,/area/space) +"Wa" = (/obj/structure/bed,/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/specops) +"Wb" = (/obj/structure/chair{dir = 8},/turf/unsimulated/floor{icon_state = "floor"},/area/centcom/evac) +"Wc" = (/obj/structure/chair{dir = 4},/turf/unsimulated/floor{icon_state = "floor"},/area/centcom/evac) +"Wd" = (/obj/structure/chair{dir = 8},/turf/unsimulated/floor{icon_state = "floor"},/area/centcom/evac) +"We" = (/obj/structure/chair{dir = 4},/turf/unsimulated/floor{icon_state = "floor"},/area/centcom/evac) +"Wf" = (/obj/structure/chair/stool,/turf/simulated/shuttle/floor,/area/centcom/evac) +"Wg" = (/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) +"Wh" = (/obj/structure/chair{dir = 8},/turf/simulated/shuttle/floor,/area/centcom/evac) +"Wi" = (/obj/structure/chair{dir = 4;name = "Defense"},/turf/simulated/shuttle/floor,/area/centcom/evac) +"Wj" = (/obj/structure/chair/stool/bar,/turf/unsimulated/floor{dir = 8;icon_state = "wood"},/area/centcom/evac) +"Wk" = (/obj/structure/chair{dir = 1},/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/centcom/evac) +"Wl" = (/obj/structure/chair{dir = 4},/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/centcom/evac) +"Wm" = (/obj/structure/chair{dir = 8},/turf/simulated/shuttle/floor,/area/centcom/evac) +"Wn" = (/obj/structure/chair{dir = 4;name = "Defense"},/turf/simulated/shuttle/floor,/area/centcom/evac) +"Wo" = (/obj/structure/chair/stool/bar,/turf/unsimulated/floor{dir = 8;icon_state = "wood"},/area/centcom/evac) +"Wp" = (/obj/structure/chair{dir = 8},/turf/simulated/shuttle/floor,/area/centcom/evac) +"Wq" = (/obj/structure/chair{dir = 4;name = "Defense"},/turf/simulated/shuttle/floor,/area/centcom/evac) +"Wr" = (/obj/structure/chair/stool/bar,/turf/unsimulated/floor{dir = 8;icon_state = "wood"},/area/centcom/evac) +"Ws" = (/obj/structure/chair{dir = 8},/turf/simulated/shuttle/floor,/area/centcom/evac) +"Wt" = (/obj/structure/chair{dir = 4;name = "Defense"},/turf/simulated/shuttle/floor,/area/centcom/evac) +"Wu" = (/obj/structure/chair{dir = 8},/turf/simulated/shuttle/floor,/area/centcom/evac) +"Wv" = (/obj/structure/chair{dir = 4;name = "Defense"},/turf/simulated/shuttle/floor,/area/centcom/evac) +"Ww" = (/obj/structure/chair{dir = 8},/turf/simulated/shuttle/floor,/area/centcom/evac) +"Wx" = (/obj/structure/chair{dir = 4;name = "Defense"},/turf/simulated/shuttle/floor,/area/centcom/evac) +"Wy" = (/obj/structure/chair,/obj/effect/landmark{name = "tdomeobserve"},/turf/unsimulated/floor{tag = "icon-redbluefull (WEST)";icon_state = "redbluefull";dir = 8},/area/tdome/tdomeobserve) +"Wz" = (/obj/structure/chair,/obj/effect/landmark{name = "tdomeobserve"},/turf/unsimulated/floor{tag = "icon-redbluefull (WEST)";icon_state = "redbluefull";dir = 8},/area/tdome/tdomeobserve) +"WA" = (/obj/structure/chair,/obj/effect/landmark{name = "tdomeobserve"},/turf/unsimulated/floor{tag = "icon-redbluefull (WEST)";icon_state = "redbluefull";dir = 8},/area/tdome/tdomeobserve) +"WB" = (/obj/structure/chair,/obj/effect/landmark{name = "tdomeobserve"},/turf/unsimulated/floor{tag = "icon-redbluefull (WEST)";icon_state = "redbluefull";dir = 8},/area/tdome/tdomeobserve) +"WC" = (/obj/structure/chair,/obj/effect/landmark{name = "tdomeobserve"},/turf/unsimulated/floor{tag = "icon-redbluefull (WEST)";icon_state = "redbluefull";dir = 8},/area/tdome/tdomeobserve) +"WD" = (/obj/structure/chair,/obj/effect/landmark{name = "tdomeobserve"},/turf/unsimulated/floor{tag = "icon-redbluefull (WEST)";icon_state = "redbluefull";dir = 8},/area/tdome/tdomeobserve) +"WE" = (/obj/structure/chair,/obj/effect/landmark{name = "tdomeobserve"},/turf/unsimulated/floor{tag = "icon-redbluefull (WEST)";icon_state = "redbluefull";dir = 8},/area/tdome/tdomeobserve) +"WF" = (/obj/structure/chair,/obj/effect/landmark{name = "tdomeobserve"},/turf/unsimulated/floor{tag = "icon-redbluefull (WEST)";icon_state = "redbluefull";dir = 8},/area/tdome/tdomeobserve) +"WG" = (/obj/structure/chair,/obj/effect/landmark{name = "tdomeobserve"},/turf/unsimulated/floor{tag = "icon-redbluefull (WEST)";icon_state = "redbluefull";dir = 8},/area/tdome/tdomeobserve) +"WH" = (/obj/structure/chair,/obj/effect/landmark{name = "tdomeobserve"},/turf/unsimulated/floor{tag = "icon-redbluefull (WEST)";icon_state = "redbluefull";dir = 8},/area/tdome/tdomeobserve) +"WI" = (/obj/structure/chair{dir = 8},/turf/simulated/shuttle/floor,/area/centcom/evac) +"WJ" = (/obj/structure/chair{dir = 4;name = "Defense"},/turf/simulated/shuttle/floor,/area/centcom/evac) +"WK" = (/obj/structure/chair,/obj/effect/landmark{name = "tdomeobserve"},/turf/unsimulated/floor{tag = "icon-redbluefull (WEST)";icon_state = "redbluefull";dir = 8},/area/tdome/tdomeobserve) +"WL" = (/obj/structure/chair,/obj/effect/landmark{name = "tdomeobserve"},/turf/unsimulated/floor{tag = "icon-redbluefull (WEST)";icon_state = "redbluefull";dir = 8},/area/tdome/tdomeobserve) +"WM" = (/obj/structure/chair,/obj/effect/landmark{name = "tdomeobserve"},/turf/unsimulated/floor{tag = "icon-redbluefull (WEST)";icon_state = "redbluefull";dir = 8},/area/tdome/tdomeobserve) +"WN" = (/obj/structure/chair,/obj/effect/landmark{name = "tdomeobserve"},/turf/unsimulated/floor{tag = "icon-redbluefull (WEST)";icon_state = "redbluefull";dir = 8},/area/tdome/tdomeobserve) +"WO" = (/obj/structure/chair,/obj/effect/landmark{name = "tdomeobserve"},/turf/unsimulated/floor{tag = "icon-redbluefull (WEST)";icon_state = "redbluefull";dir = 8},/area/tdome/tdomeobserve) +"WP" = (/obj/structure/chair,/obj/effect/landmark{name = "tdomeobserve"},/turf/unsimulated/floor{tag = "icon-redbluefull (WEST)";icon_state = "redbluefull";dir = 8},/area/tdome/tdomeobserve) +"WQ" = (/obj/structure/chair,/obj/effect/landmark{name = "tdomeobserve"},/turf/unsimulated/floor{tag = "icon-redbluefull (WEST)";icon_state = "redbluefull";dir = 8},/area/tdome/tdomeobserve) +"WR" = (/obj/structure/chair,/obj/effect/landmark{name = "tdomeobserve"},/turf/unsimulated/floor{tag = "icon-redbluefull (WEST)";icon_state = "redbluefull";dir = 8},/area/tdome/tdomeobserve) +"WS" = (/obj/structure/chair,/obj/effect/landmark{name = "tdomeobserve"},/turf/unsimulated/floor{tag = "icon-redbluefull (WEST)";icon_state = "redbluefull";dir = 8},/area/tdome/tdomeobserve) +"WT" = (/obj/structure/chair,/obj/effect/landmark{name = "tdomeobserve"},/turf/unsimulated/floor{tag = "icon-redbluefull (WEST)";icon_state = "redbluefull";dir = 8},/area/tdome/tdomeobserve) +"WU" = (/obj/structure/chair,/turf/simulated/shuttle/floor,/area/centcom/evac) +"WV" = (/obj/structure/chair{dir = 1},/obj/effect/landmark{name = "tdomeadmin"},/turf/unsimulated/floor{tag = "icon-redyellowfull (NORTHEAST)";icon_state = "redyellowfull";dir = 5},/area/tdome/tdomeadmin) +"WW" = (/obj/structure/chair{dir = 1},/obj/effect/landmark{name = "tdomeadmin"},/turf/unsimulated/floor{tag = "icon-redyellowfull (NORTHEAST)";icon_state = "redyellowfull";dir = 5},/area/tdome/tdomeadmin) +"WX" = (/obj/structure/chair{dir = 1},/obj/effect/landmark{name = "tdomeadmin"},/turf/unsimulated/floor{tag = "icon-redyellowfull (NORTHEAST)";icon_state = "redyellowfull";dir = 5},/area/tdome/tdomeadmin) +"WY" = (/obj/structure/chair{dir = 1},/obj/effect/landmark{name = "tdomeadmin"},/turf/unsimulated/floor{tag = "icon-redyellowfull (NORTHEAST)";icon_state = "redyellowfull";dir = 5},/area/tdome/tdomeadmin) +"WZ" = (/obj/structure/chair{dir = 1},/obj/effect/landmark{name = "tdomeadmin"},/turf/unsimulated/floor{tag = "icon-redyellowfull (NORTHEAST)";icon_state = "redyellowfull";dir = 5},/area/tdome/tdomeadmin) +"Xa" = (/obj/structure/chair/comfy/black{dir = 1},/turf/unsimulated/floor{tag = "icon-redyellowfull (NORTHEAST)";icon_state = "redyellowfull";dir = 5},/area/tdome/tdomeadmin) +"Xb" = (/obj/structure/chair{dir = 1},/obj/effect/landmark{name = "tdomeadmin"},/turf/unsimulated/floor{tag = "icon-redyellowfull (NORTHEAST)";icon_state = "redyellowfull";dir = 5},/area/tdome/tdomeadmin) +"Xc" = (/obj/structure/chair{dir = 1},/obj/effect/landmark{name = "tdomeadmin"},/turf/unsimulated/floor{tag = "icon-redyellowfull (NORTHEAST)";icon_state = "redyellowfull";dir = 5},/area/tdome/tdomeadmin) +"Xd" = (/obj/structure/chair{dir = 1},/obj/effect/landmark{name = "tdomeadmin"},/turf/unsimulated/floor{tag = "icon-redyellowfull (NORTHEAST)";icon_state = "redyellowfull";dir = 5},/area/tdome/tdomeadmin) +"Xe" = (/obj/structure/chair{dir = 1},/obj/effect/landmark{name = "tdomeadmin"},/turf/unsimulated/floor{tag = "icon-redyellowfull (NORTHEAST)";icon_state = "redyellowfull";dir = 5},/area/tdome/tdomeadmin) +"Xf" = (/obj/structure/chair{dir = 1},/obj/effect/landmark{name = "tdomeadmin"},/turf/unsimulated/floor{tag = "icon-redyellowfull (NORTHEAST)";icon_state = "redyellowfull";dir = 5},/area/tdome/tdomeadmin) +"Xg" = (/obj/structure/bed,/turf/unsimulated/floor{name = "plating"},/area/centcom) +"Xh" = (/obj/structure/bed,/turf/unsimulated/floor{name = "plating"},/area/centcom) +"Xi" = (/obj/structure/bed,/turf/unsimulated/floor{name = "plating"},/area/centcom) +"Xj" = (/obj/structure/bed,/turf/unsimulated/floor{icon_state = "floorscorched2"},/area/centcom) +"Xk" = (/obj/structure/bed,/turf/unsimulated/floor{name = "plating"},/area/centcom) +"Xl" = (/obj/effect/decal/cleanable/dirt,/turf/unsimulated/floor{icon_state = "floor"},/area/centcom) +"Xm" = (/obj/effect/decal/cleanable/dirt,/turf/unsimulated/floor{icon_state = "floor"},/area/centcom) +"Xn" = (/obj/structure/bed,/turf/unsimulated/floor{name = "plating"},/area/centcom) +"Xo" = (/obj/structure/bed,/turf/unsimulated/floor{name = "plating"},/area/centcom) +"Xp" = (/obj/structure/bed,/turf/unsimulated/floor{name = "plating"},/area/centcom) +"Xq" = (/obj/structure/bed,/turf/unsimulated/floor{name = "plating"},/area/centcom) +"Xr" = (/obj/structure/bed,/turf/unsimulated/floor{name = "plating"},/area/centcom) +"Xs" = (/obj/structure/chair/stool,/turf/unsimulated/floor{icon_state = "freezerfloor";dir = 2},/area/admin) +"Xt" = (/obj/structure/chair/office/dark,/turf/unsimulated/floor{icon_state = "carpet";dir = 2},/area/admin) +"Xu" = (/obj/structure/chair/comfy/black,/turf/unsimulated/floor{dir = 8;icon_state = "wood"},/area/admin) +"Xv" = (/obj/structure/chair/comfy/black{dir = 1},/turf/unsimulated/floor{tag = "icon-floor";icon_state = "floor"},/area/admin) +"Xw" = (/obj/structure/chair/comfy/black{dir = 8},/turf/unsimulated/floor{tag = "icon-floor";icon_state = "floor"},/area/admin) +"Xx" = (/obj/structure/chair/stool,/turf/unsimulated/floor{dir = 8;icon_state = "wood"},/area/admin) +"Xy" = (/obj/structure/chair/stool,/turf/unsimulated/floor{dir = 8;icon_state = "wood"},/area/admin) +"Xz" = (/obj/structure/chair/comfy/black,/turf/unsimulated/floor{tag = "icon-floor";icon_state = "floor"},/area/admin) +"XA" = (/obj/structure/chair/stool,/turf/unsimulated/floor{dir = 8;icon_state = "wood"},/area/admin) +"XB" = (/obj/structure/chair/stool,/turf/unsimulated/floor{dir = 8;icon_state = "wood"},/area/admin) +"XC" = (/obj/structure/chair/stool,/turf/unsimulated/floor{dir = 8;icon_state = "wood"},/area/admin) +"XD" = (/obj/structure/bed,/turf/unsimulated/floor{tag = "icon-dark";icon_state = "dark"},/area/admin) +"XE" = (/obj/structure/chair,/obj/effect/decal/cleanable/blood,/turf/unsimulated/floor{tag = "icon-dark";icon_state = "dark"},/area/admin) +"XF" = (/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) +"XG" = (/obj/structure/bed/abductor,/turf/unsimulated/floor/abductor,/area/abductor_ship) +"XH" = (/obj/structure/bed/abductor,/turf/unsimulated/floor/abductor,/area/abductor_ship) +"XI" = (/obj/structure/bed,/turf/unsimulated/floor{tag = "icon-dark";icon_state = "dark"},/area/admin) +"XJ" = (/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) +"XK" = (/obj/structure/bed/abductor,/turf/unsimulated/floor/abductor,/area/abductor_ship) +"XL" = (/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) +"XM" = (/obj/structure/bed/abductor,/turf/unsimulated/floor/abductor,/area/abductor_ship) +"XN" = (/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) (1,1,1) = {" ckckckckckckckckckckckckckckckckckckckckckckckckckckckaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaOaPaPaPaPaPaQaPaPaPaPaPaQaPaPaPaPaPaQaPaPaPaPaPaQaPaPaPaPaPaQaPaPaPaPaPaQaPaPaPaPaPaQaPaPaPaPaPaR ckckckckckckckckckckckckckckckckckckckckckckckckckckckaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNbpdhdgdgdgdibsbqbqbrbqbqbsbtbubtbubtbsbwbvbvbvbvbsbxbxbxbxbxbsbybybybybybsbzbzbzbzbzbsbAbBbBbBbCbD ckckckckckckckckckckckckckckckckckckckckckckckckckckckaNaNaNapapapapapapapapapapapapapapapapapapapapapapapapaNckckckckckckckckckckckckckckckckckckckckckckckckckckckckckaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNbpdkdjdjdjdlbsbqbEbqbqbFbsbGbHbGbHbGbsbIbIbIbIbIbsbxbJbxbJbxbsbybybybybybsbzbKbzbKbzbsbLbMbMbMbNbD -ckckckckckckckckckckckckckckckckckckckckckckckckckckckaNaNaNapapapapapapapapapapapapapapapapapapapapapapapapaNckckckckckckckckckckckckckckckckckckckckckckckckckckckckckaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNbpdkdjdjdjdlbsbqbObqbqbqbsahaSahaSahbsbIbIbIbIbIbsbxbxbxbxbxbsbybybybybybsbzbzbzbzbzbsbLbMbMbMbNbD +ckckckckckckckckckckckckckckckckckckckckckckckckckckckaNaNaNapapapapapapapapapapapapapapapapapapapapapapapapaNckckckckckckckckckckckckckckckckckckckckckckckckckckckckckaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNbpdkdjdjdjdlbsbqbObqbqbqbsbPbQbPbQbPbsbIbIbIbIbIbsbxbxbxbxbxbsbybybybybybsbzbzbzbzbzbsbLbMbMbMbNbD ckckckckckckckckckckckckckckckckckckckckckckckckckckckaNaNaNapapapapapapapapapapapapapapapapapapapapapapapapaNckckckckckckckckckckckckckckckckckckckckckckckckckckckckckaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNbpdkdjdjdjdlbsbqbqbRbSbqbsbTbTbTbTbTbsbUbUbUbUbVbsbxbxbxbxbxbsbybybybybybsbzbzbzbzbzbsbLbMbMbMbNbD -ckckckckckckckckckckckckckckckckckckckckckckckckckckckaNaNaNapapapapapapapapapapapapapapapapapapapapapapapapaNckckckckckckckckckckckckckckckckckckckckckckckckckckckckckaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNckckckckckckckckckckckckckckckckckckckckckckckckaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNbpdndmdmdmdrbscabqbqbqbqbsaUcccdccbPbscfcgchcicfbsbxbxbJbxbxbsbybybybybybsbzbzbzbzbzbsbLbMbMbMbNbD -ckckckckckckckckckckckckckckckckckckckckckckckckckckckaNaNaNapapapapapapapapapapapapapapapapapapapapapapapapaNckckckckckckckckckckckckckckckckckckckckckckckckckckckckckaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNckckckckckckckckckckckckckckckckckckckckckckckckaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNbpdxdvdvdvdybsbqcabqbqctbsbQcccdcccbbscfcwcxcycfbsbxbxbJbxbxbsbybybybybybsbzbzbzbzbzbsczbMbMbMcAbD -ckckckckckckckckckckckckckckckckckckckckckckckckckckckaNaNaNapapapapapapapapapapapapapapapapapapapapapapapapaNckckckckckckckckckckckckckckckckckckckckckckckckckckckckckaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNckckckckckckckckckckckckckckckckckckckckckckckckaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNbpdzdjdjdjdAbsbqbEcabqbRbsbTbTbTbTbTbsdbcwcxcydbbsbxbxbxbxbxbsbybybybybybsbzbzbzbzbzbsczbMbMbMcAbD -ckckckckckckckckckckckckckckckckckckckckckckckckckckckaNaNaNapapapapapapapapapapapapapapapapapapapapapapapapaNckckckckckckckckckckckckckckckckckckckckckckckckckckckckckaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNckckckckckckckckckckckckckckckckckckckckckckckckaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNbpdzdjdjdjdAbsbqbqbqcabqbscecucecucebsducwcxcydubsbxbxbxbxbxbsbybybybybybsbzbzbzbzbzbsczbMbMbMcAbD -ckckckckckckckckckckckckckckckckckckckckckckckckckckckaNaNaNapapapapapapapapaparapapapapapapapapapapapapapapaNckckckckckckckckckckckckckckckckckckckckckckckckckckckckckaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNckckckckckckckckckckckckckckckckckckckckckckckckaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNbpdzdjdjdjdAbsbqdGbqbqcabsbGbHbGbHbGbsducwcxcydubsbxbJbxbJbxbsbybybybybybsbzbKbzbKbzbsczbMbMbMcAbD -ckckckckckckckckckckckckckckckckckckckckckckckckckckckaNaNaNapapapapapapapapapapapapapapapapapapapapapapapapaNckckckckckckckckckckckckckckckckckckckckckckckckckckckckckaNckckckckckckckckckckckckckckckckckckckckckckckaNckckckckckckckckckckckckckckckckckckckckckckckckaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNbpdCdBdBdBdDbsbRbqdNbqbEbsbtbubtbubtbsdOdPdQdRdObsbxbxbxbxbxbsbybybybybybsbzbzbzbzbzbsdSdTdTdTdUbD +ckckckckckckckckckckckckckckckckckckckckckckckckckckckaNaNaNapapapapapapapapapapapapapapapapapapapapapapapapaNckckckckckckckckckckckckckckckckckckckckckckckckckckckckckaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNckckckckckckckckckckckckckckckckckckckckckckckckaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNbpdndmdmdmdrbscabqbqbqbqbscbJccdJdcebscfcgchcicfbsbxbxbJbxbxbsbybybybybybsbzbzbzbzbzbsbLbMbMbMbNbD +ckckckckckckckckckckckckckckckckckckckckckckckckckckckaNaNaNapapapapapapapapapapapapapapapapapapapapapapapapaNckckckckckckckckckckckckckckckckckckckckckckckckckckckckckaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNckckckckckckckckckckckckckckckckckckckckckckckckaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNbpdxdvdvdvdybsbqcabqbqctbscuJecdJfcvbscfJgJhJicfbsbxbxbJbxbxbsbybybybybybsbzbzbzbzbzbsczbMbMbMcAbD +ckckckckckckckckckckckckckckckckckckckckckckckckckckckaNaNaNapapapapapapapapapapapapapapapapapapapapapapapapaNckckckckckckckckckckckckckckckckckckckckckckckckckckckckckaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNckckckckckckckckckckckckckckckckckckckckckckckckaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNbpdzdjdjdjdAbsbqbEcabqbRbsbTbTbTbTbTbsdbJjJkJldbbsbxbxbxbxbxbsbybybybybybsbzbzbzbzbzbsczbMbMbMcAbD +ckckckckckckckckckckckckckckckckckckckckckckckckckckckaNaNaNapapapapapapapapapapapapapapapapapapapapapapapapaNckckckckckckckckckckckckckckckckckckckckckckckckckckckckckaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNckckckckckckckckckckckckckckckckckckckckckckckckaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNbpdzdjdjdjdAbsbqbqbqcabqbsdsdtdsdtdsbsduJmJnJodubsbxbxbxbxbxbsbybybybybybsbzbzbzbzbzbsczbMbMbMcAbD +ckckckckckckckckckckckckckckckckckckckckckckckckckckckaNaNaNapapapapapapapapaparapapapapapapapapapapapapapapaNckckckckckckckckckckckckckckckckckckckckckckckckckckckckckaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNckckckckckckckckckckckckckckckckckckckckckckckckaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNbpdzdjdjdjdAbsbqdGbqbqcabsbGbHbGbHbGbsduJpJqJrdubsbxbJbxbJbxbsbybybybybybsbzbKbzbKbzbsczbMbMbMcAbD +ckckckckckckckckckckckckckckckckckckckckckckckckckckckaNaNaNapapapapapapapapapapapapapapapapapapapapapapapapaNckckckckckckckckckckckckckckckckckckckckckckckckckckckckckaNckckckckckckckckckckckckckckckckckckckckckckckaNckckckckckckckckckckckckckckckckckckckckckckckckaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNbpdCdBdBdBdDbsbRbqdNbqbEbsbtbubtbubtbsdOJsJtJudObsbxbxbxbxbxbsbybybybybybsbzbzbzbzbzbsdSdTdTdTdUbD ckckckckckckckckckckckckckckckckckckckckckckckckckckckaNaNaNapapapapapapapapapapapapapapapapapapapapapapapapaNckckckckckckckckckckckckckckckckckckckckckckckckckckckckckaNckckckckckckckckckckckckckckckckckckckckckckckaNckckckckckckckckckckckckckckckckckckckckckckckckaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNhyhzhzhzhzhzbZejejejejejbZejejejejejbZejejejejejbZekekekekekbZekekekekekbZekekekekekbZekekekekekel ckckckckckckckckckckckckckckckckckckckckckckckckckckckaNaNaNapapapapapapapapapapapapapapapapapapapapapapapapaNckckckckckckckckckckckckckckckckckckckckckckckckckckckckckaNckckckckckckckckckckckckckckckckckckckckckckckaNckckckckckckckckckckckckckckckckckckckckckckckckaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNbpeneoepeneobseqeqeqeqeqbserererererbseseseteueubsevevevevevbsewexexexeybsezeAeAeAeBbD ckckckckckckckckckckckckckckckckckckckckckckckckckckckaNaNaNapapapapapapapapapapapapapapapapapapapapapapapapaNckckckckckckckckckckckckckckckckbockckckckckckckckckckckckaNckckckckckckckckckckckckckckckckckckckckckckckaNckckckckckckckckckckckckckckckckckckckckckckckckaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNbpeoepeneoepbseqeDeqeqeqbsereEeFeGerbseHeHeIeJeJbseveKeveLevbseMeNeNeNeObsePeQeQeQeRbD ckckckckckckckckckckckckckckckckckckckckckckckckckckckaNaNaNapapapapapapapapapavapapapapapapapapapapapapapapaNckckckckckckckckckckckckckckckckckckckckckckckckckckckckckaNckckckckckckckckckckckckckckckckckckckckckckckaNckckckckckckckckckckckckckckckckckckckckckckckckaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNbpepeneoepenbseqeqeqeXeqbsereYeYeYerbseHeZeZeZeJbsevevevevevbseMeNeNeNeObsePeQeQeQeRbD ckckckckckckckckckckckckckckckckckckckckckckckckckckckaNaNaNapapapapapapapapapapapapapapapapapapapapapapapapaNckckckckckckckckckckckckckckckckckckckckckckckckckckckckckaNckckckckckckckckckckckckckckckckckckckckckckckaNckckckckckckckckckckckckckckckckckckckckckckckckaNaNaNaNaNaNaNfffffffffffgfgfhfififjfgfgfgfgfgfgfgfgfgfkfgfgfgaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNbpeneoepeneobseqeqeqeqeqbserererererbseHeIeIeIeJbsevevevevevbseMeNeNeNeObsePeQeQeQeRbD -ckckckckckckckckckckckckckckckckckckckckckckckckckckckaNaNaNapapapapapapapapapapapapapapapapapapapapapapapapaNckckckckckckckckckckckckckckckckckckckckckckckckckckckckckaNckckckckckckckckckckckckckckckckckckckckckckckaNckckckckckckckckckckckckckckckckckckckckckckckckaNaNaNaNaNaNaNftfufvfwfffgfxfyfzfAfAfBfCfDdJdMfGfHfIfHfHfJfKfgaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNbpeoepeneoepbseqeqeqfMeqbserfNfOfPerbsfQfRfRfRfSbsevfTevevevbsfUfVfVfVfWbsePeQeQeQeRbD -ckckckckckckckclckckckckckckckckckckckckckckckckckckckaNaNaNapapapapapapapapapapapapapapapapapapapapapapapapaNckckckckckckckckckckckckckckckckckckckckckckckckckckckckckaNckckckckckckckckckckckckckckckckckckckckckckckaNckckckckckckckckckckckckckckckckckckckckckckckckaNaNaNaNaNfffffffufufufffggbfyfyfyfyfygcgdgdgdgefHfHfHgffHfHfgaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNbpepeneoepenbseqgkeqeqeqbserglgmgnerbsgogpgpgpgqbsevevevgrevbsgsgtgtgtgubsgveQeQeQgwbD -ckckckckckckckckckckckckckckckckckckckckckckckckckckckaNaNaNapapapapapapapapapapapapapapapapapapapapapapapapaNckckckckckckckckckckckckckckckckckckckckckckckckckckckckckaNckckckckckckckckckckckckckckckckckckckckckckckaNckckckckckckckckckckckckckckckckckckckckckckckckaNaNaNaNaNgygzgAfufufufffggBfygCgDgEgFgGgdgdgdgdfHfHgHfHgIfIfgaNaNitisisisisisitnqnqnqnqnqnqnqnqnqnqnqaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNbpeneoepeneobseqeqeqeqeDbserglgmgnerbsgJeIgKeIgLbsevevevevevbsgMeNeNeNgNbsgveQeQeQgwbD -ckckckckckckckckckckckckckckckckckckckckckckckckckckckaNaNaNapapapapapapapapapapapapapapapapapapapapapapapapaNckckckckckckckckckckckckckckckckckckckckckckckckckckckckckaNckckckckckckckckckckckckckckckcmckckckckckckckaNckckckckckckckckckckckckckckckckckckckckckckckckaNaNaNaNaNgOgPgQfufufufffggRgdcDcDcDcDcDgdgdgdgdfHfHfHgSfHfHfgaNaNisaNaNaNaNaNitnsnrnuntnvnqnxnwnznynqaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNbpeoepeneoepbsgTeqeqeqeqbserglgmgnerbsgJgUgUgUgLbsgVgVgVgVgVbsgMeNeNeNgNbsgveQeQeQgwbD -ckckckckckckckckckckckckckckckckckckckckckckckckckckckaNaNaNapapapapapapapapapapapapapapapapapapapapapapapapaNckckckckckckckckckckckckckckckckckckckckckckckckckckckckckaNckckckckckckckckckckckckckckckckckckckckckckckaNckckckckckckckckckckckckckckiAckckckckckckckckckaNaNaNaNaNfffffffffffffffggWgdgdgdgdgdgdgdgdgdgdgXfHfHfHfHfHfgaNaNisaNaNaNaNaNitnAnxnxnxnBnqnxnxnxnxnqaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNbpepeneoepenbseqfMeqgkeqbsergYgZhaerbsgJgJeIgLgLbshbhbhbhbhbbsgMeNeNeNgNbsgveQeQeQgwbD -ckckckckckckckckckckckckckckckckckckckckckckckckckckckaNaNaNapapapapapapapapapapapapapapapapapapapapapapapapaNckckckckckckckckckckckckckckckckckckckckckckckckckckckckckaNckckckckckckckckckckckckckckckckckckckckckckckaNckckckckckckckckckckckckckckckckckckckckckckckckaNaNaNaNaNaNaNaNaNaNaNaNfggWgdgdgdgdgdhcgdgdhcgdhdhehehehfhefgaNaNisaNaNaNaNaNitnCnxnxnxnEnDnxnFnGhOnqaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNbpeneoepeneobseqeqeqeqgTbserererererbshhhhhihjhjbshkhkhkhkhkbshlhmhmhmhnbshohphphphqbD -ckckckckckckckckckckckckckckckckckckckckckckckckckckckaNaNaNapapapapapapapapapapapapapapapapapapapapapapapapaNckckckckckckckckckckckckckckckckckckckckckckckckckckckckckaNckckckckckckckckckckckckckckckckckckckckckckckaNckckckckckckckckckckckckckckckckckckckckckckckckaNaNaNaNaNaNaNaNaNaNaNaNfghrgdgdgdgdgehshtgehsgehuhvhvhvhwhvfgaNaNisaNaNaNaNaNitnHnxnInInxnJnxnKnMnLnqaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNhyhzhzhzhzhzhAhzhzhzhzhzhAhzhzhzhzhzhAhzhzhzhzhzhAhzhzhzhzhzhAhzhzhzhzhzhAhzhzhzhzhzhB -ckckckckckckckckckckckckckckckckckckckckckckckckckckckaNaNaNapapapapapapapapapapapapapapapapapapapapapapapapaNckckckckckckckckckckckckckckckckckckckckckckckckckckckckckaNckckckckckckckckckckckckckckckckckckckckckckckaNckckckckckckckckckckckckckckckckckckckckckckckckaNaNaNaNaNaNaNaNaNaNaNaNfgfghCdsdshCfgfgfgfgfgfgfgfgfgfgfgfgfgaNaNisaNaNaNaNaNnqnHnxnInNnxnOnxnxnQnPnqaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaN +ckckckckckckckckckckckckckckckckckckckckckckckckckckckaNaNaNapapapapapapapapapapapapapapapapapapapapapapapapaNckckckckckckckckckckckckckckckckckckckckckckckckckckckckckaNckckckckckckckckckckckckckckckckckckckckckckckaNckckckckckckckckckckckckckckckckckckckckckckckckaNaNaNaNaNaNaNftfufvfwfffgfxfyfzfAfAfBfCfDdJdMfGfHfIfHfHfJfKfgaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNbpeoepeneoepbseqeqeqfMeqbserJvJwJxerbsfQfRfRfRfSbsevfTevevevbsfUfVfVfVfWbsePeQeQeQeRbD +ckckckckckckckclckckckckckckckckckckckckckckckckckckckaNaNaNapapapapapapapapapapapapapapapapapapapapapapapapaNckckckckckckckckckckckckckckckckckckckckckckckckckckckckckaNckckckckckckckckckckckckckckckckckckckckckckckaNckckckckckckckckckckckckckckckckckckckckckckckckaNaNaNaNaNfffffffufufufffggbfyfyfyfyfygcgdgdgdJyfHfHfHgffHfHfgaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNbpepeneoepenbseqgkeqeqeqbserJzJAJBerbsgogpgpgpgqbsevevevgrevbsgsgtgtgtgubsgveQeQeQgwbD +ckckckckckckckckckckckckckckckckckckckckckckckckckckckaNaNaNapapapapapapapapapapapapapapapapapapapapapapapapaNckckckckckckckckckckckckckckckckckckckckckckckckckckckckckaNckckckckckckckckckckckckckckckckckckckckckckckaNckckckckckckckckckckckckckckckckckckckckckckckckaNaNaNaNaNgygzgAfufufufffggBfygCgDgEgFgGgdgdgdgdfHfHJCfHJDfIfgaNaNitisisisisisitnqnqnqnqnqnqnqnqnqnqnqaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNbpeneoepeneobseqeqeqeqeDbserJEJFJGerbsgJeIgKeIgLbsevevevevevbsgMeNeNeNgNbsgveQeQeQgwbD +ckckckckckckckckckckckckckckckckckckckckckckckckckckckaNaNaNapapapapapapapapapapapapapapapapapapapapapapapapaNckckckckckckckckckckckckckckckckckckckckckckckckckckckckckaNckckckckckckckckckckckckckckckcmckckckckckckckaNckckckckckckckckckckckckckckckckckckckckckckckckaNaNaNaNaNgOgPgQfufufufffggRgdJHJIJJJKJLgdgdgdgdfHfHfHgSfHfHfgaNaNisaNaNaNaNaNitnsnrnuntnvnqnxnwnznynqaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNbpeoepeneoepbsgTeqeqeqeqbserJMJNJOerbsgJgUgUgUgLbsgVgVgVgVgVbsgMeNeNeNgNbsgveQeQeQgwbD +ckckckckckckckckckckckckckckckckckckckckckckckckckckckaNaNaNapapapapapapapapapapapapapapapapapapapapapapapapaNckckckckckckckckckckckckckckckckckckckckckckckckckckckckckaNckckckckckckckckckckckckckckckckckckckckckckckaNckckckckckckckckckckckckckckiAckckckckckckckckckaNaNaNaNaNfffffffffffffffggWgdgdgdgdgdgdgdgdgdgdgXfHfHfHfHfHfgaNaNisaNaNaNaNaNitnAnxnxnxnBnqnxnxnxnxnqaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNbpepeneoepenbseqfMeqgkeqbserJPJQJRerbsgJgJeIgLgLbshbhbhbhbhbbsgMeNeNeNgNbsgveQeQeQgwbD +ckckckckckckckckckckckckckckckckckckckckckckckckckckckaNaNaNapapapapapapapapapapapapapapapapapapapapapapapapaNckckckckckckckckckckckckckckckckckckckckckckckckckckckckckaNckckckckckckckckckckckckckckckckckckckckckckckaNckckckckckckckckckckckckckckckckckckckckckckckckaNaNaNaNaNaNaNaNaNaNaNaNfggWgdgdgdgdgdJSgdgdJTgdhdhehehehfhefgaNaNisaNaNaNaNaNitnCnxnxnxnEnDnxnFJUhOnqaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNbpeneoepeneobseqeqeqeqgTbserererererbshhhhhihjhjbshkhkhkhkhkbshlhmhmhmhnbshohphphphqbD +ckckckckckckckckckckckckckckckckckckckckckckckckckckckaNaNaNapapapapapapapapapapapapapapapapapapapapapapapapaNckckckckckckckckckckckckckckckckckckckckckckckckckckckckckaNckckckckckckckckckckckckckckckckckckckckckckckaNckckckckckckckckckckckckckckckckckckckckckckckckaNaNaNaNaNaNaNaNaNaNaNaNfghrgdgdgdgdJVhsJWJXhsJYhuhvhvhvhwhvfgaNaNisaNaNaNaNaNitnHnxnInInxnJnxnKnMnLnqaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNhyhzhzhzhzhzhAhzhzhzhzhzhAhzhzhzhzhzhAhzhzhzhzhzhAhzhzhzhzhzhAhzhzhzhzhzhAhzhzhzhzhzhB +ckckckckckckckckckckckckckckckckckckckckckckckckckckckaNaNaNapapapapapapapapapapapapapapapapapapapapapapapapaNckckckckckckckckckckckckckckckckckckckckckckckckckckckckckaNckckckckckckckckckckckckckckckckckckckckckckckaNckckckckckckckckckckckckckckckckckckckckckckckckaNaNaNaNaNaNaNaNaNaNaNaNfgfghCJZKahCfgfgfgfgfgfgfgfgfgfgfgfgfgaNaNisaNaNaNaNaNnqnHnxnInNnxnOnxnxKbnPnqaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaN ckckckckckckckckckckckckckckckckckckckckckckckckckckckaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNckckckckckckckckckckckckckckckckckckckckckckckckckckckckckaNckckckckckckckckckckckckckckckckckckckckckckckaNckckckckckckckckckckckckckckckckckckckckckckckckaNaNaNaNaNaNaNaNaNaNaNaNaNfghEhFhFhFfgaNaNaNaNaNaNaNaNaNaNaNaNaNaNisaNaNaNaNaNnqnRnxnxnxnBnqnqnqnqnqnqaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNbZaPaPaPaPaPbZaPaPaPaPaPbZaPaPaPaPaPbZ -ckckckckckckckckckckckckckckckckckckckckckckckckckckckaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNckckckckckckckckckckckckckckckckckckckckckckckckckckckckckaNckckckckckckckckckckckckckckckckckckckckckckckaNckckckckckckckckckckckckckckckckckckckckckckckckaNaNaNaNaNaNaNaNaNaNaNaNaNfghFhFhFhFfgaNaNaNaNaNaNaNaNaNaNaNaNaNaNisaNaNaNaNaNnqnHnxnxnxnSnqaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNbphHhIhJhKhLbshMhNhYhPhQbshRhShThUhVbD -ckckckckckckckckckckckckckckckckckckckckckckckckckckckaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNckckckckckckckckckckckckckckckckckckckckckckckaNckckckckckckckckckckckckckckckckckckckckckckckckaNaNaNaNaNaNaNaNaNaNaNaNaNfgfgfgfgfgfgaNaNaNaNaNaNaNaNaNaNaNaNaNaNisaNaNaNaNnUnTnxnxnxnxnVnqaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNbphWhWhXhWhWbshYhZhZhZhYbsiaiaiaiaiabD +ckckckckckckckckckckckckckckckckckckckckckckckckckckckaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNckckckckckckckckckckckckckckckckckckckckckckckckckckckckckaNckckckckckckckckckckckckckckckckckckckckckckckaNckckckckckckckckckckckckckckckckckckckckckckckckaNaNaNaNaNaNaNaNaNaNaNaNaNfghFhFhFhFfgaNaNaNaNaNaNaNaNaNaNaNaNaNaNisaNaNaNaNaNnqnHnxnxnxnSnqaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNbphHKchJKdhLbsKeKfhYKgKhbshRhShThUhVbD +ckckckckckckckckckckckckckckckckckckckckckckckckckckckaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNckckckckckckckckckckckckckckckckckckckckckckckaNckckckckckckckckckckckckckckckckckckckckckckckckaNaNaNaNaNaNaNaNaNaNaNaNaNfgfgfgfgfgfgaNaNaNaNaNaNaNaNaNaNaNaNaNaNisaNaNaNaNnUnTnxnxnxnxnVnqaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNbphWhWKihWhWbshYhZhZhZhYbsiaiaiaiaiabD ckckckckckckckckckckckckckckckckckckckckckckckckckckckaNckckckckckckckckckckckckckckckckckckckckckckckckckckckckckckaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNckckckckckckckckckckckckckckckckckckckckckckckaNckckckckckckckckckckckckckckckckckckckckckckckckaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNisaNaNaNaNaNnqnWnxnxnxnXnqaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNbphWhWhWhWhWbshYhZhZhZhYbsiaiaiaiaiabD -ckckckckckckckckckckckckckckckckckckckckckckckckckckckaNckckckckckckckckckckckckckckckckckckckckckckckckckckckckckckaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNckckckckckckckckckckckckckckckckckckckckckckckaNckckckckckckckckckckckckckckckckckckckckckckckckaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNisaNaNaNaNaNitnYnxnZnxoanqaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNbpibichWicibbshYidhZidhYbsieifiaigiebD +ckckckckckckckckckckckckckckckckckckckckckckckckckckckaNckckckckckckckckckckckckckckckckckckckckckckckckckckckckckckaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNckckckckckckckckckckckckckckckckckckckckckckckaNckckckckckckckckckckckckckckckckckckckckckckckckaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNisaNaNaNaNaNitnYnxnZnxoanqaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNbpibichWicibbshYidhZidhYbsKjifiaigKkbD ckckckckckckckckckckckckckckckckckckckckckckckckckckckaNckckckckckckckckckckckckckckckckckckckckckckckckckckckckckckaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNckckckckckckckckckckckckckckckckckckckckckckckaNckckckckckckckckckckckckckckckckckckckckckckckckaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNisaNaNaNaNaNitnYnxobnxoanqaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNbZhzhzhzhzhzbZhzhzhzhzhzbZhzhzhzhzhzbZ ckckckckckckckckckckckckckckckckckckckckckckckckckckckaNckckckckckckckckckckckckckckckckckckckckckckckckckckckckckckaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNckckckckckckckckckckckckckckckckckckckckckckckaNckckckckckckckckckckckckckckckckckckckckckckckckaNaNaNaNaNaNaNaNaNihihihihihihihihihihihihaNaNaNaNaNaNaNaNaNaNaNaNitisisisisisitnqnqnqnqnqnqaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNatatatatataNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaN -ckckckckckckckckckckckckckckckckckckckckckckckckckckckaNckckckckckckckckckckckckckckckckckckckckckckckckckckckckckckaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNihiiijikiliminihioipiqihaNaNirisisisisisitaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNatauauauataNaNaNaNaNaNaNaNaNaNaNbZbZbZbZbZbZbZaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNbZbZbZbZbZbZbZaNaNaNaNaN +ckckckckckckckckckckckckckckckckckckckckckckckckckckckaNckckckckckckckckckckckckckckckckckckckckckckckckckckckckckckaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNihiiijikiliminihioipKlihaNaNirisisisisisitaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNatauauauataNaNaNaNaNaNaNaNaNaNaNbZbZbZbZbZbZbZaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNbZbZbZbZbZbZbZaNaNaNaNaN ckckckckckckckckckckckckckckckckckckckckckckckckckckckaNckckckckckckckckckckckckckckckckckckckckckckckckckckckckckckaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNckckckckckckckckckckckckckckckckckckckckckckckaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNihikikikikikikikixiyizihaNaNisaNaNaNaNaNitaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNatauayauataNaNaNaNaNaNaNaNaNaNaNbZdEdEdEdEdEbZbZbZbZbZbZbZbZbZbZbZbZbZbZbZbZbZdFdFdFdFdFbZaNaNaNaNaN ckckckckckckckckckckckckckckckckckckckckckckckckckckckaNckckckckckckckckckckckckckckckckckckckckckckckckckckckckckckaNckckckckckckckckckckckckckckckckckckckckckckckckckckckckckckckckckckckckckaNckckckckckckckckckckckckckckckckckckckckckckckaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNihiLiLikikikiMihiNiOiPihaNaNisaNaNaNaNaNititititaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNatauauauataNaNaNaNaNaNaNaNaNbZbZbZiZiZiZiZiZjajbjcjcjcjcjcjcjcjcjcjcjcjcjcjbjaiZiZiZiZiZbZbZbZaNaNaN -ckckckckckckckckckckckckckckckckckckckckckckckckckckckaNckckckckckckckckckckckckckckckckckckckckckckckckckckckckckckaNckckckckckckckckckckckckckckckckckckckckckckckckckckckckckckckckckckckckckaNckckckckckckckckckckckckckckckckckckckckckckckaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNihikikikikjdjdihihjeihihaNaNisaNaNaNaNaNitjgjhitaNaNaNaNaNaNaNaNaNaNmrmrmrmrmrmrmrmrmrmrmrmrmrmxmwatatatatataFaGaGaGaGaGaGaGaHatataIatataNaNaNaNaNaNaNaNaNbZjljmbZbZbZbZbZjnjojpjpjpjpjpjpjpjpjpjpjpjpjpjqjnbZbZbZbZbZjmjrbZaNaNaN -ckckckckckckckckckckckckckckckckckckckckckckckckckckckaNckckckckckckckckckckckckckckckckckckckckckckckckckckckckckckaNckckckckckckckckckckckckckckckckckckckckckckckckckckckckckckckckckckckckckaNckckckckckckckckckckckckckckckckckckckckckckckaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNihjAjAikjBjCjDihjEjejFihaNaNisaNaNaNaNaNititititititititititititaNaNmraNaNaNaNaNaNaNaNaNaNaNmrmzmyataJaJaJaKauauauauauauauauaKaKaKauaJataNaNaNaNaNaNaNaNaNbZjljmbZbZbZbZbZjnjojpjpjpjpjpjpjpjpjpjpjpjpjpjqjnbZbZbZbZbZjmjrbZaNaNaN -ckckckckckckckckckckckckckckckckckckckckckckckckckckckaNckckckckckckckckckckckckckckckckckckckckckckckckckckckckckckaNckckckckckckckckckckckckckckckckckckckckckckckckckckckckckckckckckckckckckaNckckckckckckckckckckckckckckckckckckckckckckckaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNihkbikikjBkceUihkekfkgihaNaNisaNaNaNaNaNkikjkkklkmknkjkokpkqkrksaNaNmraNaNaNaNaNaNaNaNaNaNaNmrmBmAataKauauauauauauauaMauauauauauauauaJataNaNaNaNaNaNaNaNaNbZjljmbZbZbZbZbZjnjojpjpjpjpjpkBkCkBjpjpjpjpjpjqjnbZbZbZbZbZjmjrbZaNaNaN +ckckckckckckckckckckckckckckckckckckckckckckckckckckckaNckckckckckckckckckckckckckckckckckckckckckckckckckckckckckckaNckckckckckckckckckckckckckckckckckckckckckckckckckckckckckckckckckckckckckaNckckckckckckckckckckckckckckckckckckckckckckckaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNihikikikikKmKnihihjeihihaNaNisaNaNaNaNaNitjgjhitaNaNaNaNaNaNaNaNaNaNmrmrmrmrmrmrmrmrmrmrmrmrmrmxmwatatatatataFaGaGaGaGaGaGaGaHatataIatataNaNaNaNaNaNaNaNaNbZjljmbZbZbZbZbZjnjojpjpjpjpjpjpjpjpjpjpjpjpjpjqjnbZbZbZbZbZjmjrbZaNaNaN +ckckckckckckckckckckckckckckckckckckckckckckckckckckckaNckckckckckckckckckckckckckckckckckckckckckckckckckckckckckckaNckckckckckckckckckckckckckckckckckckckckckckckckckckckckckckckckckckckckckaNckckckckckckckckckckckckckckckckckckckckckckckaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNihjAjAikKojCjDihjEjejFihaNaNisaNaNaNaNaNititititititititititititaNaNmraNaNaNaNaNaNaNaNaNaNaNmrmzmyataJaJaJaKauauauauauauauauaKaKaKauaJataNaNaNaNaNaNaNaNaNbZjljmbZbZbZbZbZjnjojpjpjpjpjpjpjpjpjpjpjpjpjpjqjnbZbZbZbZbZjmjrbZaNaNaN +ckckckckckckckckckckckckckckckckckckckckckckckckckckckaNckckckckckckckckckckckckckckckckckckckckckckckckckckckckckckaNckckckckckckckckckckckckckckckckckckckckckckckckckckckckckckckckckckckckckaNckckckckckckckckckckckckckckckckckckckckckckckaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNihkbikikKpkceUihkekfkgihaNaNisaNaNaNaNaNkikjkkklkmknkjkokpkqkrksaNaNmraNaNaNaNaNaNaNaNaNaNaNmrmBmAataKauauauauauauauKqauauauauauauauaJataNaNaNaNaNaNaNaNaNbZjljmbZbZbZbZbZjnjojpjpjpjpjpkBkCkBjpjpjpjpjpjqjnbZbZbZbZbZjmjrbZaNaNaN aNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNckckckckckckckckckckckckckckckckckckckckckckckckckckckckckckaNckckckckckckckckckckckckckckckckckckckckckckckckckckckckckckckckckckckckckaNckckckckckckckckckckckckckckckckckckckckckckckaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNihkJikikikikihihihihihihaNaNisaNaNaNaNaNkKkjknknkLknkjknkrkrkrksaNaNmraNaNaNaNaNaNaNaNaNaNmDmCmFmEatbhauauauauauaubibibiauauauauauauaJataNaNaNaNaNaNaNaNaNbZjljmbZbZbZbZbZjnjojpjpjpjpjpkBkTkBjpjpjpjpjpjqjnbZbZbZbZbZjmjrbZaNaNaN -aNckckckckckckckckckckckckckckckckckckckckckckckckckaNaNckckckckckckckckckckckckckckckckckckckckckckckckckckckckckckaNckckckckckckckckckckckckckckckckckckckckckckckckckckckckckckckckckckckckckaNckckckckckckckckckckckckckckckckckckckckckckckaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNihkWkXkYkZiklalblcldleihaNaNisaNaNaNaNaNlgiBknknkLknkjkokpkrkrksaNaNmraNaNaNaNaNaNaNaNaNaNaNmrmGmEatbhauauauauaubjbibibibjauauauauauaKataNaNaNaNaNaNaNaNaNbZjljmbZbZbZbZbZjnjojpjpjpjpjpjpjpjpjpjpjpjpjpjqjnbZbZbZbZbZjmjrbZaNaNaN -aNckckckckckckckckckckckckckckckckckckckckckckckckckaNaNckckckckckckckckckckckckckckckckckckckckckckckckckckckckckckaNckckckckckckckckckckckckckckckckckckckckckckckckckckckckckckckckckckckckckaNckckckckckckckckckckckckckckckckckckckckckckckaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNihlolplqikikiklrlsltluihaNaNisaNaNaNaNiClgiBknknknknlxknkrkrkrksaNaNmraNaNaNaNaNaNaNaNaNaNaNmrmEmEatbhauauauauauaubjbjbjauauauauauauauataNaNaNaNaNaNaNaNaNbZbZbZlBlBlBlBlBlClDjpjpjpjpjpjplEjpjpjpjpjpjplDlClBlBlBlBlBbZbZbZaNaNaN +aNckckckckckckckckckckckckckckckckckckckckckckckckckaNaNckckckckckckckckckckckckckckckckckckckckckckckckckckckckckckaNckckckckckckckckckckckckckckckckckckckckckckckckckckckckckckckckckckckckckaNckckckckckckckckckckckckckckckckckckckckckckckaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNihkWkXkYkZiklalblcldleihaNaNisaNaNaNaNaNlgiBknknkLknkjkokpkrkrksaNaNmraNaNaNaNaNaNaNaNaNaNaNmrmGmEatbhauauauauauKrbibibiKsauauauauauaKataNaNaNaNaNaNaNaNaNbZjljmbZbZbZbZbZjnjojpjpjpjpjpjpjpjpjpjpjpjpjpjqjnbZbZbZbZbZjmjrbZaNaNaN +aNckckckckckckckckckckckckckckckckckckckckckckckckckaNaNckckckckckckckckckckckckckckckckckckckckckckckckckckckckckckaNckckckckckckckckckckckckckckckckckckckckckckckckckckckckckckckckckckckckckaNckckckckckckckckckckckckckckckckckckckckckckckaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNihlolplqikikiklrlsltluihaNaNisaNaNaNaNiClgiBknknknknlxknkrkrkrksaNaNmraNaNaNaNaNaNaNaNaNaNaNmrmEmEatbhauauauauauauKtKuKvauauauauauauauataNaNaNaNaNaNaNaNaNbZbZbZlBlBlBlBlBlClDjpjpjpjpjpjplEjpjpjpjpjpjplDlClBlBlBlBlBbZbZbZaNaNaN aNckckckckckckckckckckckckckckckckckckckckckckckckckaNaNckckckckckckckckckckckckckckckckckckckckckckckckckckckckckckaNckckckckckckckckckckckckckckckckckckckckckckckckckckckckckckckckckckckckckaNckckckckckckckckckckckckckckckckckckckckckckckaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNihlGlplqikikiklHlIlHlIihaNaNisaNaNaNaNaNkKkjknknkLknkjkokpkrkrksaNaNmrmrmrmrmrmrmrmrmrmrmrmrmrmEmEatauauauauauauauauauauauauauauauauauataNaNaNaNaNaNaNaNaNaNaNbZlWlWlWlWlWbZbZbZbZbZbZbZbZbZbZbZbZbZbZbZbZbZlXlXlXlXlXbZaNaNaNaNaN -aNckckckckckckckckckckckckckckckckckckckckckckckckckaNaNckckckckckckckckckckckckckckckckckckckckckckckckckckckckckckaNckckckckckckckckckckckckckckckckckckckckckckckckckckckckckckckckckckckckckaNckckckckckckckckckckckckckckckckckckckckckckckaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNihlomambkJmcladclumeddihaNaNisaNaNaNaNaNkikjknknkLknkjknkrkrkrksaNaNaNaNaNaNmHmEmEmEmImEmEmEmEmEmJatauauaKaJaJaKauauauauauauauauauauauataNaNaNaNaNaNaNaNaNaNaNbZbZbZbZbZbZbZaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNbZbZbZbZbZbZbZaNaNaNaNaN -aNckckckckckckckckckckckckckckckckckckckckckckckckckaNaNckckckckckckckckckckckckckckckckckckckckckckckckckckckckckckaNckckckckckckckckckckckckckckckckckckckckckckckckckckckckckckckckckckckckckaNckckckckckckckckckckckckckckckckckckckckckckckaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNihihihihihihihihihihihihaNaNisaNaNaNaNaNmtkjknknmuknkjkokpmvkrksaNaNaNaNaNaNmKmEmLmNmMmOmOmMmEmQmPatatbkatatatatatatatatatatatatatbkatataNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaN -aNckckckckckckckckckckckckckckckckckckckckckckckckckaNaNckckckckckckckckckckckckckckckckckckckckckckckckckckckckckckaNckckckckckckckckckckckckckckckckckckckckckckckckckckckckckckckckckckckckckaNckckckckckckckckckckckckckckckckckckckckckckckaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNititititititititititititititititititaNaNaNaNaNaNmKmEmEmEmEmEmEmEmEmQmRatblblataNaNaNaNaNaNaNaNaNaNaNatblblataNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaN -aNckckckckckckckckckckckckckckckckckckckckckckckckckaNaNckckckckckckckckckckckckckckckckckckckckckckckckckckckckckckaNckckckckckckckckckckckckckckckckckckckckckckckckckbmckckckckckckckckckckckaNckckckckckckckckckckckckckckckckckckckckckckckaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNmKmEmMmOmOmOmSmMmEmEmTatblblataNaNaNaNaNaNaNaNaNaNaNatblblataNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaN +aNckckckckckckckckckckckckckckckckckckckckckckckckckaNaNckckckckckckckckckckckckckckckckckckckckckckckckckckckckckckaNckckckckckckckckckckckckckckckckckckckckckckckckckckckckckckckckckckckckckaNckckckckckckckckckckckckckckckckckckckckckckckaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNihlomambkJmcladclumeddihaNaNisaNaNaNaNaNkikjknknkLknkjknkrkrkrksaNaNaNaNaNaNmHmEmEmEmImEmEmEmEmEKwatauauaKaJaJaKauauauauauauauauauauauataNaNaNaNaNaNaNaNaNaNaNbZbZbZbZbZbZbZaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNbZbZbZbZbZbZbZaNaNaNaNaN +aNckckckckckckckckckckckckckckckckckckckckckckckckckaNaNckckckckckckckckckckckckckckckckckckckckckckckckckckckckckckaNckckckckckckckckckckckckckckckckckckckckckckckckckckckckckckckckckckckckckaNckckckckckckckckckckckckckckckckckckckckckckckaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNihihihihihihihihihihihihaNaNisaNaNaNaNaNmtkjknknmuknkjkokpmvkrksaNaNaNaNaNaNmKmEmLmNmMmOmOmMmEKxmPatatbkatatatatatatatatatatatatatbkatataNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaN +aNckckckckckckckckckckckckckckckckckckckckckckckckckaNaNckckckckckckckckckckckckckckckckckckckckckckckckckckckckckckaNckckckckckckckckckckckckckckckckckckckckckckckckckckckckckckckckckckckckckaNckckckckckckckckckckckckckckckckckckckckckckckaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNititititititititititititititititititaNaNaNaNaNaNmKmEmEmEmEmEmEmEmEKymRatblblataNaNaNaNaNaNaNaNaNaNaNatblblataNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaN +aNckckckckckckckckckckckckckckckckckckckckckckckckckaNaNckckckckckckckckckckckckckckckckckckckckckckckckckckckckckckaNckckckckckckckckckckckckckckckckckckckckckckckckckbmckckckckckckckckckckckaNckckckckckckckckckckckckckckckckckckckckckckckaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNmKmEmMmOmOmOmSmMmEmEKzatblblataNaNaNaNaNaNaNaNaNaNaNatblblataNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaN aNckckckckckckckckckckckckckckckckckckckckckckckckckaNaNckckckckckckckckckckckckckckckckckckaackckckckckckckckckckckaNckckckckckckckckckckckckckckckckckckckckckckckckckckckckckckckckckckckckckaNckckckckckckckckckckckckckckckckckckckckckckckaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNmUmVmEmEmEmEmEmEmEmEatatblblatatatatatatatatatatatatatblblatataNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaN aNckckckckckckckckckckckckckckckckckckckckckckckckckaNaNckckckckckckckckckckckckckckckckckckckckckckckckckckckckckckaNckckckckckckckckckckckckckckckckckckckckckckckckckckckckckckckckckckckckckaNckckckckckckckckckckckckckaEckckckckckckckckckaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNmrmrmrmWmrmXmOmOmMmEmEataNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNbnaNaNataNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaN aNckckckckckckckckckckckckckckckckckckckckckckckckckaNaNckckckckckckckckckckckckckckckckckckckckckckckckckckckckckckaNckckckckckckckckckckckckckckckckckckckckckckckckckckckckckckckckckckckckckaNckckckckckckckckckckckckckckckckckckckckckckckaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNmrmYnamZmrmEmEmEmEnbncataNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNataNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaN @@ -1565,33 +2194,33 @@ aNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNckckckckckckckckckckckck aNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNckckckckckckckckckckckckckckckckckckckckckckckckckckckckckckaNckckckckckckckckckckckckckckckckckckckckckckckckckckckckckckckckckckckckckaNbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNnjababababababababababababababababababababababababababababababababnjaNaNaNaNaNaNaNaNaNaNaNaNaNaNatatatatatatatatatatatatatatatatatatatatataNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaN aNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNckckckckckckckckckckckckckckckckckckckckckckckckckckckckckckaNckckckckckckckckckckckckckckckckckckckckckckckckckckckckckckckckckckckckckaNbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNnjababababababababababababababababababababababababababababababababnjaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaN aNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNckckckckckckckckckckckckckckckckckckckckckckckckckckckckckckckckckckckckckaNbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNnjababababababababababababababababababababababababababababababababnjaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaN -aNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNckckckckckckckckckckckckckckckckckckckckckckckckckckckckckckckckckckckckckaNbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNnjabababababababababababababcvababababababababababababababababababnjaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaN +aNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNckckckckckckckckckckckckckckckckckckckckckckckckckckckckckckckckckckckckckaNbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNnjabababababababababababababKAababababababababababababababababababnjaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaN aNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNckckckckckckckckckckckckckckckckckckckckckckckckckckckckckckckckckckckckckaNbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNnjabababababababababaonjafnjafnjalabaonjafnjafnjalababababababacabnjaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaN aNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNckckckckckckckckckckckckckckckckckckckckckckckckckckckckckckckckckckckckckaNbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNnjabababababababababaoajoOajoOajalabaoajoOajoOajalabacababababababnjaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaN -aNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNbWbWbWbWbWbWbWbWbWbWbWbWbXbWbWbWbWbWbWbWbWbWbWbWaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNnjabababababababaeabamakoOakoOakanagamakoOakoOakdtagagababaeabababnjaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaN -aNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaNaNaNbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNnjabaeababacaeababaonjnjafnjafnjaTpvoCnjafnjafnjnjnjnjecababacababnjaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaN +aNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNbWbWbWbWbWbWbWbWbWbWbWbWbXbWbWbWbWbWbWbWbWbWbWbWaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNnjabababababababaeabamakoOakoOakanagamakoOakoOakaSagagababaeabababnjaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaN +aNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaNaNaNbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNnjabaeababacaeababaonjnjafnjafnjaTpvoCnjafnjafnjnjnjnjaUababacababnjaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaN aNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaNaNaNbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNnjababaeababababacaonjaZoOoOoOaZoOoOoOaZoOoOoOaZoOoOnjalabababaeabnjaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaN aNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaNaNaNbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNnjababababaeabababaonjoOoOoOoOoOoOoOoOoOoOoOoOoOoOoOnjalacababababnjaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaN rErErErErErErErErErErErErErErEaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaNaNaNbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNnjaeababababaeabaeaonjaTpvpvpvpvpvpvpvpvpvpvpvoCnjbbnjalabaeabacabnjaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaN -rErErErErErErErErErErErErErErEaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaNaNaNbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNnjababaeacababagagagbcbcbcbcbababababababababaaXnjoOnjecabacabababnjaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaN +rErErErErErErErErErErErErErErEaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaNaNaNbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNnjababaeacababagagagbcbcbcbcbababababababababaaXnjoOnjaUabacabababnjaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaN rErErErErErErErErErErErErErErEaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaNaNaNbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNnjabababababaiaNaNaNaNaNaNaNaiacababaeababagagamnjoOnjalabababababnjaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaN -rErErErErErErErErErErErErErErEaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaNaNaNbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNnjacaeabababaNaNaNaNaNaNaNaNaNecabababacamnjnjqXnjbdnjefagegagegagnjaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaN +rErErErErErErErErErErErErErErEaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaNaNaNbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNnjacaeabababaNaNaNaNaNaNaNaNaNaUabababacamnjnjqXnjbdnjiwagiHagiHagnjaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaN rErErErErErErErErErErErErErErEaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaNaNaNbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNnjabababababaNaNaNaNaNaNaNaNaNalabababaonjnjoHoIjtoOnjnjnjnjnjnjnjnjaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaN rErErErErErErErErErErErErErErEaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNnjabababababaNaNaNaNaNaNaNaNaNalaeabadaonjaLoOoOoOoOfZoQoRnjfYjMmgnjaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaN -rErErErErErErErErErErErErErErEaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaNbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNnjabacabababaiaNaNaNaNaNaNaNaiababababehnjpaoOmfmfpcoOpdpepWpXpXganjnjnjnjnjnjnjnjnjnjnjnjaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaN -rErErErErErErErHrErErErErErErEaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaNbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNnjabababababababaNaNaNaNaNefagagagagegamnjplmfpmjNmfoOmkppnjpXggnjnjghgjgigxgxhggxgxhxhGnjaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaN -rErErErErErErErErErErErErErErEaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaNbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNnjabababaeabababaNaNaNaNaNpupvpvpvpvpvoCnjmhmfpwpxmfoOmkppnjnjnjnjnjgjgiiuemiviFiveCiGhxnjaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaN -rErErErErErErErErErErErErErErEaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaNbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNnjacabaiaNaNaNaNaNaNaNaNaNpypzpApzpzpzpzpCoOJboOoOoOoOmkppnjnjnjnjnjgjiIemiviJiSiKiveCiTnjaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaN -rErErErErErErErErErErErErErErEaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaNbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNnjababaNaNaNaNaNaNaNaNaNaNpFaVoBpvpvpvoCnjmiouououmhoOmkppoBpvpvpvpvpvpviviJiSiUiSiKiviTnjaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaN -rErErErErErErErErErErErErErErEaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaNbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNnjababaNaNaNaNaNaNaNaNaNaNaNaWaNaiababaXnjpRpSpTpSjOoOpUpViWiViViXiViViWiFiSiYjjjiiSiFiTnjaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaN -rErErErErErErErErErErErErErErEaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqasaqaqaqaqaqaqaqaqaqaqaqaNbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNnjaYabaNaNaNaNaNaNaNaNaNaNaNaNaNaNeSabaonjqfqgqhqiqjoOoOoOoBpvpvpvpvpvpviviJiSjkiSiSiviTnjaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaN -rErErErErErErErErErErErErErErEaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaNbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNnjaeabaNaNaNaNaNaNaNaNaNaNaNaNaNaNalabaonjnjppqtqrqunjqwoOnjnjnjnjnjgjiIhDiviJiSiKiviwiTnjaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaN -rKrErErErErErErErErErErErErErEaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaNbWbWbWbWbWbWbWbWbWbWbWbWcPbWbWbWbWbWbWbWbWbWbWbWaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNnjababaNaNaNaNaNaNaNaNaNaNaNaNaNaNanabababnjnjnjnjnjnjqDqDqEqFqGqHnjgjjvjuhDivjwiviwjxjynjaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaN -aNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaNbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNnjabaiaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaiabababbabaiHaXnjqLqMqMqMqMqMnjjzgjjvjJjJjKjJjJjyjznjaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaN -aNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaNbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNnjabaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNalababacababaoqXqMqMqMqMqMmlnjnjnjnjnjnjnjnjnjnjnjnjaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaN -aNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaNbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNnjabaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNalababadjsmqamnjrerererererfnjaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaN +rErErErErErErErErErErErErErErEaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaNbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNnjabacabababaiaNaNaNaNaNaNaNaiababababjsnjpaoOKBKCpcoOpdpepWpXpXganjnjnjnjnjnjnjnjnjnjnjnjaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaN +rErErErErErErErHrErErErErErErEaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaNbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNnjabababababababaNaNaNaNaNiwagagagagiHamnjplKDpmjNKEoOKFppnjpXggnjnjghgjgigxgxhggxgxhxhGnjaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaN +rErErErErErErErErErErErErErErEaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaNbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNnjabababaeabababaNaNaNaNaNpupvpvpvpvpvoCnjmhKGpwpxKHoOKIppnjnjnjnjnjgjgiiuotiviFivouiGhxnjaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaN +rErErErErErErErErErErErErErErEaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaNbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNnjacabaiaNaNaNaNaNaNaNaNaNpypzpApzpzpzpzpCoOJboOoOoOoOKJppnjnjnjnjnjgjiIotivKKiSKLivouiTnjaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaN +rErErErErErErErErErErErErErErEaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaNbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNnjababaNaNaNaNaNaNaNaNaNaNpFaVoBpvpvpvoCnjmiKMKNKOmhoOKPppoBpvpvpvpvpvpvivKQiSKRiSKSiviTnjaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaN +rErErErErErErErErErErErErErErEaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaNbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNnjababaNaNaNaNaNaNaNaNaNaNaNaWaNaiababaXnjpRpSpTpSjOoOpUpViWiViViXiViViWiFiSKTjjKUiSiFiTnjaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaN +rErErErErErErErErErErErErErErEaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqasaqaqaqaqaqaqaqaqaqaqaqaNbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNnjaYabaNaNaNaNaNaNaNaNaNaNaNaNaNaNovabaonjqfqgqhqiqjoOoOoOoBpvpvpvpvpvpvivKViSKWiSiSiviTnjaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaN +rErErErErErErErErErErErErErErEaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaNbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNnjaeabaNaNaNaNaNaNaNaNaNaNaNaNaNaNalabaonjnjppqtqrqunjqwoOnjnjnjnjnjgjiIowivKXiSKYivoxiTnjaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaN +rKrErErErErErErErErErErErErErEaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaNbWbWbWbWbWbWbWbWbWbWbWbWcPbWbWbWbWbWbWbWbWbWbWbWaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNnjababaNaNaNaNaNaNaNaNaNaNaNaNaNaNanabababnjnjnjnjnjnjqDqDqEqFqGqHnjgjjvjuowivjwivoxjxjynjaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaN +aNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaNbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNnjabaiaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaiabababbabaoyaXnjqLqMqMqMqMqMnjjzgjjvjJjJjKjJjJjyjznjaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaN +aNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaNbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNnjabaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNalababacababaoqXqMqMqMqMqMKZnjnjnjnjnjnjnjnjnjnjnjnjaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaN +aNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaNbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNnjabaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNalababadoAozamnjrerererererfnjaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaN aNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaNbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNnjabaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNalababaonjnjnjnjnjnjnjnjnjnjnjaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaN -aNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaNbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNnjabaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNmsaeababnjaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaN +aNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaNbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNnjabaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNoDaeababnjaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaN aNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaNbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNnjabaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNalabababnjaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaN aNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaNbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNnjabaNaNaNaNaNabaNaNaNaNaNabaNaNaNaNaNalabababnjaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaN aNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaNbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNnjabaNaNaNaNaNabaiaNaNaNaiabaNaNaNaNaNalabababnjaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaN @@ -1620,55 +2249,55 @@ aNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaN aNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaN aNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNsqsqsqsqsqaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaN aNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNsqsrssstsqsqsqsqsusvsvsvsqsqsqsqsqsqsqsqsqsqsqsqsqaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaN -aNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNsqswsssssxsyszmmsBsCmnsEsEsysysqsFsGsHsIsqsJsKsLsqaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaN -aNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNsqsqsqsqsqsysEmnsMsNmnsEsEsOmosqsQsQsQsQsqsRsSsTsqaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaN -aNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNsvsEsEsEsEsEsEsEsEsysysqsQsUsVsVsqsqsWsqsqdVaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaN -aNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNsXsXsXsXsXsXsXsXsXsXsXsqaNaNaNsvsEsEsEsEsEsEsEsEsEsEsusQmpmpsQsQsQsQsZsqsqdVaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaN -aNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNsXsXsXsXsXsXsXsXsXsXsXsXsXsXoSrqtdtesXotovrstdsqsqsqsqsqsEsEmnsMsCmnsEsEsEsEsEsQsQsQsQtfsQsQtgsqsqsqdVaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaN -aNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNthtitititititititjowtitititjoxoytntdtdrttdtdtdtdsqsrssstsqtosEmnsMtpmnsEsEsEsEsutqsQsQsQtrsQsQtssqsqsqsqdVaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaN -aNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNsXsXsXsXsXsXsXsXsXsXsXsXsXsXtdtdtdtdsXotoztdtdsqswsssssxsEsEsEsEsEsEsEsEsEsEsqsusususususususqsqdWdXsqsqsqsqsqsqsqsqsqsqsqsqsqdVaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaN -aNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNthtitititititititvowtitititvoAoytntdtdrttdtdtdtdsqsqsqsqsqsqsqtxsqsqsqsqsEsEtysqcScRcUcTcWcVcXsudZdYebeasuoMoXoXoXoXoXpHoXoXoXqSeiaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaN -aNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNsXsXsXsXsXsXsXsXsXsXsXsXsXsXtdtdtdtAsXotoztdtdsqtBtCtDsqtEtFtFtFtFtGsqsEsEtHsqdodedqdpdLdKdesufbfatLfcsurrrxrxrxrxrxrxrxrxrxrMeiaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaN -aNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNthtitititititititIowtitititIrOoytntdtdrttdtdtdtdsqtKtLtMedtFtFtFtFtFeesqsusxsusqsusususususususqsqfLsqsqsqsqsqsqsqsqsqsqsqsqsqsqfXaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaN -aNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNsXsXsXsXsXsXsXsXsXsXsXsXsXsXtdtdtdtdsXotoztdtdsqsqeWeVsqeWeVsqsqsqsqsqtQtRtStTtTtTtTtTtTtTtTtTuEtRtZsqfXaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaN -aNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNthtitititititititVowtitititVrPrQtntdrurttdtdtdrusXaNaNaNaNaNaNsXfecoflsqtQtRtRtRtRtRtRtRtRtRtRtRtRtRtZsqaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaN -aNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNfmfmfmfmfmfmfmfmfmfmfmfmfmfmfmfmfmsXrwrvsXsXsXsXubsXsXsXsXsXsXsXsXsXfeujflsqtQtRucudududududududududuetRtZsqaNaNoeodododododododofaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaN -aNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNfmcYoEoEoEoEoFfmfofnfqfpfsfrfnfEfmufujujuhuiugujujsXukukukukulukumunfeujflsqtQtRtZsususususususususutQtRtZsqaNaNohogojoioioioiokohaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaN -aNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNfmoGoNoJoWoPoGfmjHfFkdkdkdkdfFlZmdujujujujujujujujuqururururururussXfeujflsqtQtRtZsuutuuuvuwuxuyuzsutQtRtZsqaNaNohogogogogogogogohaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaN -aNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNfmpgpfpfpfphoGfmoKkdkdkdkdkdkdoLmdujujujujujujujujsXuAuBuBuBuBuBuCsXsXrRsXsquEtRtSsuuFtRuGrStRtRtRsuuEtRtZsqsqsqohogogogogogogogohaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaN -aNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNfmpipfpkpopfptfdoUoToToToToToToVfdujujujuIuIujujujuJrTrTrTrTrTrTrTrUrTrTrTrVtRtRtRuNtRtRtRtRtRtRtRuNtRtRtZoltRolomogogogogogogogohaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaN -aNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNfmoGpjpfpfrloGfmfmfmfmfmfmfmfmfmfmujujuOuPuQuRujuSsXsXrFrGrFsXsXrWsXoZoYpbsquetRucsutRtRtRtRtRtRtRsuuetRtZsqsqsqohogogogogogogogohaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaN -aNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNfmpnrnrmrprooGfmaNsXrXujujujujujryujuXrzooonvavbujvcvdvdvdvdvesXrTsXsXsXsXsqtQtRtZsuvfuuvgvgvgvhvisutQtRtZsqaNaNohogogogogogogogohaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaN -aNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNfmpDoEoEoEoErkfmaNsXrAujsXuWuWsXsXujujvauRvmuRujujvnvdvovpvqvdsXrTsXvrtTtUsqtQtRtZsqsqvsvtvuvvvwsqsqtQtRtZsqaNaNohogogogopogogogohaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaN -aNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNfmfmfmfmfmfmfmfmaNsXrBujsXvkvkpqprujujujvyvyujujujvzvdrCrIrDbesXrTsqpstRtRvFtRtRtZsqsqsusususususqsqtQtRtZsqaNaNoqodododododododoraNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaN -aNaNaNaNaNaNbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNsXsXsXsXvkvkvksXvIvJujujujujvLujsXvdrJmjeTvPsXrTsqvQtRtZsutQtRtStTtTtTtTtTtTtTtTtTuEtRtZsqaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaN -aNaNaNaNaNaNbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNsXvkpBsXsXsXsXsXsXbfbfsXsXsXvSvTvUvVvdsXrTsqvWtRvXsutQtRtRtRtRtRtRtRtRtRtRtRtRtRtZsqaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaN -aNaNaNaNaNaNbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNsXvkpBsXaNaNaNaNwbrYrZwbwesXiDwgwhwiwjsXrTsqwkudwlsuwmudududududuetRucudududududwnsqaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaN -aNaNaNaNaNaNbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNsXvxsXsXaNaNaNaNwrsasbwrwesXsXsXsXsXsXsXrWsqsqsqsqsqsqsqsqsqsqsqsqwusqsqsqsqsqsqsqsqaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaN -aNaNaNaNaNaNbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNsXvkvksXaNaNaNaNaNaNaNaNaNaNaNsXpEujuTujujwCwDwEwFwGwCwHwIwJwKwLwMwNwOwPwKaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaN -aNaNaNaNaNaNbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNsXvkpGsXaNaNaNaNaNaNaNaNaNaNaNsXujujscujujwCwCwCwIwIwIwIwIwIwKxcxdxexdxfwKaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaN +aNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNsqLasssssxsyszLbsBsCLcsEsEsysysqsFsGsHsIsqsJsKsLsqaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaN +aNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNsqsqsqsqsqsysELdsMsNLesEsEsOLfsqsQsQsQsQsqsRsSsTsqaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaN +aNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNsvsEsEsEsEsEsEsEsEsysysqsQsUsVsVsqsqsWsqsqdVaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNLgLhLiLjLkLlLmLnLoLpLqLrLsLtLuLvLwLxLyLzLAaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaN +aNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNsXsXsXsXsXsXsXsXsXsXsXsqaNaNaNsvsEsEsEsEsEsEsEsEsEsEsusQLBLCsQsQsQsQsZsqsqdVaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNLDLELFLGLHLILJLKLLLMLNLOLPLQLRLSLTLULVLWLXaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaN +aNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNsXsXsXsXsXsXsXsXsXsXsXsXsXsXoSrqtdtesXLYLZrstdsqsqsqsqsqsEsEMasMsCMbsEsEsEsEsEsQsQsQsQtfsQsQtgsqsqsqdVaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNMcMdMeMfMgMhMiMjMkMlMmMnMoMpMqMrMsMtMuMvMwaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaN +aNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNthtitititititititjMxtitititjMyMztntdtdrttdtdtdtdsqsrssstsqtosEMAsMtpMBsEsEsEsEsutqsQsQsQtrsQsQtssqsqsqsqdVaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNMCMDMEMFMGMHMIMJMKMLMMMNMOMPMQMRMSMTMUMVMWaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaN +aNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNsXsXsXsXsXsXsXsXsXsXsXsXsXsXtdtdtdtdsXMXMYtdtdsqMZsssssxsEsEsEsEsEsEsEsEsEsEsqsusususususususqsqdWdXsqsqsqsqsqsqsqsqsqsqsqsqsqdVaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNNaNbNcNdNeNfNgNhNiNjNkNlNmNnNoNpNqNrNsNtNuaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaN +aNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNthtitititititititvNvtitititvNwNxtntdtdrttdtdtdtdsqsqsqsqsqsqsqtxsqsqsqsqsEsEtysqcScRcUcTcWcVcXsudZdYNyeasuNzNANBNCNDNENFNGNHNINJeiaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNNKNLNMNNNONPNQNRNSNTNUNVNWNXNYNZOaObOcOdOeaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaN +aNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNsXsXsXsXsXsXsXsXsXsXsXsXsXsXtdtdtdtAsXOfOgtdtdsqtBtCtDsqtEtFtFtFtFtGsqsEsEtHsqdodedqdpdLdKdesufbfatLfcsuOhOiOjOkOlOmOnOoOpOqOreiaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNOsOtOuOvOwOxOyOzOAOBOCODOEOFOGOHOIOJOKOLOMaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaN +aNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNthtitititititititIONtitititIOOOPtntdtdrttdtdtdtdsqOQtLtMedtFtFtFtFtFeesqsusxsusqsusususususususqsqfLsqsqsqsqsqsqsqsqsqsqsqsqsqsqfXaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNOROSOTOUOVOWOXOYOZPaPbPcPdPePfPgPhPiPjPkPlaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaN +aNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNsXsXsXsXsXsXsXsXsXsXsXsXsXsXtdtdtdtdsXPmPntdtdsqsqeWeVsqeWeVsqsqsqsqsqtQtRtStTtTtTtTtTtTtTtTtTuEtRtZsqfXaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNPoPpPqPrPsPtPuPvPwPxPyPzPAPBPCPDPEPFPGPHPIaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaN +aNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNthtitititititititVPJtitititVPKPLtntdrurttdtdtdrusXaNaNaNaNaNaNsXfecoflsqtQtRtRtRtRtRtRtRtRtRtRtRtRtRtZsqaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNPMPNPOPPPQPRPSPTPUPVPWPXPYPZQaQbQcQdQeQfQgaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaN +aNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNfmfmfmfmfmfmfmfmfmfmfmfmfmfmfmfmfmsXrwrvsXsXsXsXubsXsXsXsXsXsXsXsXsXfeujflsqtQtRucudududududududududuetRtZsqaNaNoeodododododododofaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNQhQiQjQkQlQmQnQoQpQqQrQsQtQuQvQwQxQyQzQAQBaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaN +aNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNfmcYoEoEoEoEoFfmfofnQCfpfsQDfnfEfmufujujuhuiugujujsXukukukukulukumunfeujflsqtQtRtZsususususususususutQtRtZsqaNaNohogQEQFQGQHQIQJohaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNQKQLQMQNQOQPQQQRQSQTQUQVQWQXQYQZRaRbRcRdReaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaN +aNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNfmoGoNoJoWoPoGfmjHfFkdkdkdkdfFlZmdujujujujujujujujuqururururururRfsXfeujflsqtQtRtZsuutRguvuwuxuyuzsutQtRtZsqaNaNohogogogogogogogohaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNRhRiRjRkRlRmRnRoRpRqRrRsRtRuRvRwRxRyRzRARBaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaN +aNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNfmpgpfpfpfphoGfmoKkdkdkdkdkdkdoLmdujujujujujujujujsXuAuBuBuBuBuBuCsXsXRCsXsquEtRtSsuuFtRuGRDtRtRtRsuuEtRtZsqsqsqohogogogogogogogohaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNRERFRGRHRIRJRKRLRMRNRORPRQRRRSRTRURVRWRXRYaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaN +aNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNfmpipfpkpopfptfdoUoToToToToToToVfdujujujRZSaujujujuJSbScSdSeSfSgShSiSjSkSlSmtRtRtRuNtRtRtRtRtRtRtRuNtRtRtZoltRolomogogogogogogogohaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNSnSoSpSqSrSsStSuSvSwSxSySzSASBSCSDSESFSGSHaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaN +aNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNfmoGpjpfpfrloGfmfmfmfmfmfmfmfmfmfmujujuOuPuQuRujuSsXsXrFrGrFsXsXSIsXoZoYpbsquetRucsutRtRtRtRtRtRtRsuuetRtZsqsqsqohogogogogogogogohaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNSJSKSLSMSNSOSPSQSRSSSTSUSVSWSXSYSZTaTbTcTdaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaN +aNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNfmpnrnrmrprooGfmaNsXTeujujujujujryujTfrzooonvaTgujvcvdvdvdvdvesXThsXsXsXsXsqtQtRtZsuvfTiTjTkTlTmvisutQtRtZsqaNaNohogogogogogogogohaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNTnToTpTqTrTsTtTuTvTwTxTyTzTATBTCTDTETFTGTHaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaN +aNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNfmpDoEoEoEoErkfmaNsXrAujsXuWuWsXsXujujvauRvmuRujujvnvdvovpvqvdsXTIsXvrtTtUsqtQtRtZsqsqvsvtvuvvvwsqsqtQtRtZsqaNaNohogogogopogogogohaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNTJTKTLTMTNTOTPTQTRTSTTTUTVTWTXTYTZUaUbUcUdaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaN +aNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNfmfmfmfmfmfmfmfmaNsXrBujsXvkvkpqprujujujUeUfujujujvzvdUgUhUibesXUjsqpstRtRvFtRtRtZsqsqsusususususqsqtQtRtZsqaNaNoqodododododododoraNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNUkUlUmUnUoUpUqUrUsUtUuUvUwUxUyUzUAUBUCUDUEaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaN +aNaNaNaNaNaNbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNsXsXsXsXvkvkvksXvIvJujujujujvLujsXvdUFUGeTUHsXUIsqvQtRtZsutQtRtStTtTtTtTtTtTtTtTtTuEtRtZsqaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNUJUKULUMUNUOUPUQURUSUTUUUVUWUXUYUZVaVbVcVdaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaN +aNaNaNaNaNaNbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNsXvkpBsXsXsXsXsXsXbfbfsXsXsXvSvTvUvVvdsXVesqvWtRvXsutQtRtRtRtRtRtRtRtRtRtRtRtRtRtZsqaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNVfVgVhViVjVkVlVmVnVoVpVqVrVsVtVuVvVwVxVyVzaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaN +aNaNaNaNaNaNbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNsXvkpBsXaNaNaNaNwbVAVBwbwesXiDwgwhwiwjsXVCsqwkudwlsuwmudududududuetRucudududududwnsqaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaN +aNaNaNaNaNaNbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNsXvxsXsXaNaNaNaNwrVDVEwrwesXsXsXsXsXsXsXVFsqsqsqsqsqsqsqsqsqsqsqsqwusqsqsqsqsqsqsqsqaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaN +aNaNaNaNaNaNbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNsXvkvksXaNaNaNaNaNaNaNaNaNaNaNsXVGujuTujujwCwDwEwFwGwCwHwIwJwKwLwMwNwOwPwKaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaN +aNaNaNaNaNaNbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNsXvkpGsXaNaNaNaNaNaNaNaNaNaNaNsXujujVHujujwCwCwCwIwIwIwIwIwIwKxcxdxexdxfwKaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaN aNaNaNaNaNaNbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNsXsXsXsXaNaNaNaNaNaNaNaNaNaNbgsXsXsXsXujuSwCwDxlwIwIwIwIwIwIwKxmxnwNxoxfwKaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaN -aNaNaNaNaNaNbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNsXaNaNaNaNaNaNaNaNaNaNaNsXpEujuTujujwCwCwCwIxxwCwHwIwJwKxyxzxAxzxzwKwKwKwKwKwKwKwKwKaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaN -aNaNaNaNaNaNbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbYbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNsXaNaNaNaNaNaNaNaNaNaNaNsXujujscujujwCwDxIwIxxwCwCwCwKwKxJxzxKxzwLwPxzpJpIpLpKpNpMwKaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaN +aNaNaNaNaNaNbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNsXaNaNaNaNaNaNaNaNaNaNaNsXVIujuTujujwCwCwCwIxxwCwHwIwJwKxyxzVJxzxzwKwKwKwKwKwKwKwKwKaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaN +aNaNaNaNaNaNbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbYbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNsXaNaNaNaNaNaNaNaNaNaNaNsXujujVKujujwCwDxIwIxxwCwCwCwKwKxJxzxKxzwLwPxzpJpIpLpKpNpMwKaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaN aNaNaNaNaNaNbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNsXsXsXsXsXsXsXsXsXsXsXsXsXsXsXsXujujwCwCwCwIwIwIwIwIxRwLxSxSxSxSwMxfxdpOwKxzxzxzxzxzxzxzaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaN -aNaNaNaNaNaNbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNsXpEujuTujujwCwDxWwIwIwIwIwIxRxmxXxYwNxXxYxfxdpPxzxZxZxZwNcnytcnaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNyaybycydyeaNazaNaNaNaAaNyaybycydyeaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaN -aNaNaNaNaNaNbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNsXujujscujujwCwCwCyfyfyfyfyfwKxmxXxYwNxXxYxfxzpJxzwNwNwNygxzxzxzaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNyiyjyjyjykylaBylylylaBylyoyjyjyjyiaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaN -aNaNaNaNaNaNbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNsXsXsXsXujujpQsXaNaNaNaNaNaNxdxmxXxYwNxXxYxfypxdwKyqwNwNyrcnytcnoDaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNyiyvyvywyxyyyNyAyByCyNyyyEyFyvyvyiaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaN -aNaNaNaNaNaNbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNsXpEujuTujujpYsXaNaNaNaNaNaNxdxmxXxYwNxXxYxfyGytyGwNwNwNyHxzxzxzaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNyiyvyvyKyLyMyNyMyOyMyNyMyPyKyvyvyiaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaN -aNaNaNaNaNaNbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNsXujujscujujpQsXaNaNaNaNaNaNwKxyyQyQyQyRwNxfypxdwKyqwNwNwNwKaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNySyFyvyTyMyNyNyNyNyNyNyNyMyTyvywyUaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaN -aNaNaNaNaNaNbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNsXsXsXsXsXsXsXsXaNaNaNwKwKwKwKxdxdwKwKxmwNxfxdpZwKwNwNwNwNwKaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNySylyoyWyXyYyZyNzazbyNzcykylyUaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaN -aNaNaNaNaNaNbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNwKzdzezfrNzezewKxmwNxfypxdwKyqwNwNwNwKaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNyizhzizjzkyNzazbyNyyyiaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaN -aNaNaNaNaNaNbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNwKzlzezmrNzezeznxmwNxfyGytyGwNwNwNygxzxzxzaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNyizqzrzryZyNzazbyNyMyiaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaN -aNaNaNaNaNaNbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNwKztzezurNzezewKxyyQzvwKwKwKyqwNwNyrcnytcnaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNyizxzrzrzyyNyMyMyNyNaBaCaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaN -aNaNaNaNaNaNbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNwKztzezezezezewKwKzBwKwKqaxzwNwNwNyHxzxzxzaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNykylylylyoyNzazbyNzHyiaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaN -aNaNaNaNaNaNbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNcjcjcjcjcjcjcjcjcjcjcjcjcjcjcjytytytwKpIxzxZwNxZwNcnytcnaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNyizOzOzPzQyNzazbyNzRyiaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaN -aNaNaNaNaNaNbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNcjcpcpcpcpcpcpcpcpcpcpcpcpcpcqytytytwKpMwKxzwNxzxzxzxzxzaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNzVzWzWzWzXyNzazbyNyMyiaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaN +aNaNaNaNaNaNbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNsXVLujuTujujwCwDxWwIwIwIwIwIxRxmVMVNwNVOVPxfxdpPxzxZxZxZwNcnytcnaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNyaybycydyeaNazaNaNaNaAaNyaybycydyeaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaN +aNaNaNaNaNaNbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNsXujujVQujujwCwCwCyfyfyfyfyfwKxmVRVSwNVTVUxfxzpJxzwNwNwNygxzxzxzaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNyiyjyjyjykylaBylylylaBylyoyjyjyjyiaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaN +aNaNaNaNaNaNbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNsXsXsXsXujujpQsXaNaNaNaNaNaNxdxmVVVWwNVXVYxfypxdwKyqwNwNyrcnytcnVZaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNyiyvyvywyxyyyNyAyByCyNyyyEyFyvyvyiaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaN +aNaNaNaNaNaNbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNsXWaujuTujujpYsXaNaNaNaNaNaNxdxmWbWcwNWdWexfyGytyGwNwNwNyHxzxzxzaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNyiyvyvyKyLyMyNyMWfyMyNyMyPyKyvyvyiaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaN +aNaNaNaNaNaNbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNsXujujWgujujpQsXaNaNaNaNaNaNwKxyyQyQyQyRwNxfypxdwKyqwNwNwNwKaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNySyFyvyTyMyNyNyNyNyNyNyNyMyTyvywyUaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaN +aNaNaNaNaNaNbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNsXsXsXsXsXsXsXsXaNaNaNwKwKwKwKxdxdwKwKxmwNxfxdpZwKwNwNwNwNwKaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNySylyoyWyXyYyZyNWhWiyNzcykylyUaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaN +aNaNaNaNaNaNbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNwKzdzezfWjzezewKxmwNxfypxdwKyqwNwNwNwKaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNyizhWkWlzkyNWmWnyNyyyiaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaN +aNaNaNaNaNaNbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNwKzlzezmWozezeznxmwNxfyGytyGwNwNwNygxzxzxzaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNyizqzrzryZyNWpWqyNyMyiaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaN +aNaNaNaNaNaNbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNwKztzezuWrzezewKxyyQzvwKwKwKyqwNwNyrcnytcnaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNyizxzrzrzyyNyMyMyNyNaBaCaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaN +aNaNaNaNaNaNbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNwKztzezezezezewKwKzBwKwKqaxzwNwNwNyHxzxzxzaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNykylylylyoyNWsWtyNzHyiaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaN +aNaNaNaNaNaNbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNcjcjcjcjcjcjcjcjcjcjcjcjcjcjcjytytytwKpIxzxZwNxZwNcnytcnaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNyizOzOzPzQyNWuWvyNzRyiaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaN +aNaNaNaNaNaNbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNcjcpcpcpcpcpcpcpcpcpcpcpcpcpcqytytytwKpMwKxzwNxzxzxzxzxzaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNzVzWzWzWzXyNWwWxyNyMyiaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaN aNaNaNaNaNaNbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWaNaNaNaNHjHjHjHjHjHjHjHjaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNcjcpcraNaNaNaNaNaNaNaNaNcrcpcsytytytwKpLqbqcwNqcpIwKaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNyinozWzWAlyNyNyNyNyNaBaDaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaN aNaNaNaNaNaNbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWaNaNaNaNHjHxHyHyHyHyHzHjHjHjHjHjHjHjHjHkHkHjHjHjHjHjHjHjaNaNaNaNaNaNaNaNaNaNaNaNcjcraNaNaNaNaNaNaNaNaNaNaNcCcBytytytwKwKwKwKqdwKwKwKaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNyiADzWzWzQyNyMyMyMyPyiaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaN aNaNaNaNaNaNbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWaNaNaNaNHjHxHyHyHyHyHzHjHEHFHGHFHHHIHJHJHJHIHHHJHHHJHKHjaNaNaNaNaNaNaNaNaNaNaNaNcjaNaNaNaNaNaNaNaNaNaNaNcEcGcFytytytcHwKqeqlqkqkqmwKaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNyinozWzWzXyNAMANAOyyyiaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaN -aNaNaNaNaNaNbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWaNaNaNaNHjHRHyHyHyHyHSHjHJHTHTHTHTHTHJHJHJHTHTHTHTHTHUHjaNaNaNaNaNaNaNaNaNaNaNaNcjcraNaNaNaNaNaNaNaNaNaNaNcCcIytytytytwKqnqpqoqoqqwKaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNySAXAXylylAYylylAXAXyUaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaN -aNaNaNaNaNaNbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWaNaNaNaNHjHRHXHYHYHyHyHZHJHJHJIaHJHJHJHJHJHJHJIaHJHJHJHjaNaNaNaNaNaNaNaNaNaNaNaNcjcpcraNaNaNaNaNaNaNaNaNcrcpcsytytytytwKqnqvqsqsqxwKaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNySyoBbzayNzbBcykyUaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaN -aNaNaNaNaNaNbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWaNaNaNaNHjHjHjHjHjHjHjHjHJHTHTHTHTHTHJHJHJHTHTHTHTHTHJHjHjHjHjHjHjHjaNaNaNaNaNaNcjcpcpcpcpcpcpcpcpcpcpcpcpcpcJytytytcKwKqyqAqzqCqBwKaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNyiAMyMBeyMBfyiaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaN +aNaNaNaNaNaNbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWaNaNaNaNHjHRHyHyHyHyHSHjHJWyWzWAWBWCHJHJHJWDWEWFWGWHHUHjaNaNaNaNaNaNaNaNaNaNaNaNcjcraNaNaNaNaNaNaNaNaNaNaNcCcIytytytytwKqnqpqoqoqqwKaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNySAXAXylylAYylylAXAXyUaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaN +aNaNaNaNaNaNbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWaNaNaNaNHjHRHXHYHYHyHyHZHJHJHJIaHJHJHJHJHJHJHJIaHJHJHJHjaNaNaNaNaNaNaNaNaNaNaNaNcjcpcraNaNaNaNaNaNaNaNaNcrcpcsytytytytwKqnqvqsqsqxwKaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNySyoBbWIyNWJBcykyUaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaN +aNaNaNaNaNaNbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWaNaNaNaNHjHjHjHjHjHjHjHjHJWKWLWMWNWOHJHJHJWPWQWRWSWTHJHjHjHjHjHjHjHjaNaNaNaNaNaNcjcpcpcpcpcpcpcpcpcpcpcpcpcpcJytytytcKwKqyqAqzqCqBwKaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNyiAMyMWUyMBfyiaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaN aNaNaNaNaNaNbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWaNaNaNaNaNHjdHdHdHdHdHHjIdIeIeIeIeIeIeIeIeIeIeIeIeIeIfHjdIdIdIdIdIHjaNaNaNaNaNaNcjcjcjcjcjcjcjcjcjcjcjcjcjcjcjwKcLcLwKwKwKwKwKwKwKwKwKaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNyiBhBiBjBkBlyiaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaN aNaNaNaNaNaNbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWaNaNaNHjHjHjIhIhIhIhIhjajbjcjcjcjcjcjcjcjcjcjcjcjcjcjbjaIhIhIhIhIhHjHjHjaNaNqIqIqIqIqIqIqIqIqIwKytytytcraNaNaNaNaNcMaNaNaNaNcrytytytwKaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNySBqBrBrBrBsyUaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaN aNaNaNaNaNaNbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWaNaNaNHjIiIjIkIkIkIkIkIlImjcjcjcjcjcjcjcjcjcjcjcjcjcInIlIoIoIoIoIoIjIpHjaNaNqIaNaNaNaNaNaNaNqIwKytytcraNaNaNaNaNaNaNaNaNaNaNaNaNcrytwKaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaN @@ -1678,7 +2307,7 @@ aNaNaNaNaNaNbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWcNbWbWbWbWbWbWbWbWbWbWbW aNaNaNaNaNaNbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWaNaNaNHjIiIjIkIkIkIkIkIlImjcjcjcjcjcjcjcjcjcjcjcjcjcInIlIoIoIoIoIoIjIpHjaNaNqIaNaNaNaNaNaNaNqIwKaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNcrwKaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaN aNaNaNaNaNaNbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWaNaNaNHjHjHjIEIEIEIEIEjajbjcjcjcjcjcjcjcjcjcjcjcjcjcjbjaIEIEIEIEIEHjHjHjaNaNqIaNaNaNaNaNaNaNqIwKcraNaNaNaNaNaNaNaNaNaNaNaNaNaNytytytwKaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaN aNaNaNaNaNaNbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWaNaNaNaNaNHjIKIKIKIKIKHjIdIeIeIeIeIeIeIeIeIeIeIeIeIeIfHjILILILILILHjaNaNaNaNqIaNaNaNaNaNaNdwqIwKytaNaNaNaNaNaNaNaNaNaNaNaNaNaNytytytwKaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaN -aNaNaNaNaNaNbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWaNaNaNaNaNHjHjHjHjHjHjHjIMINININININIOIPIQINININININIMHjHjHjHjHjHjHjaNaNaNaNqIaNaNaNaNaNaNaNqIwKcraNaNaNaNaNaNaNaNaNaNaNaNaNaNytytytwKaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaN +aNaNaNaNaNaNbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWaNaNaNaNaNHjHjHjHjHjHjHjIMWVWWWXWYWZIOXaIQXbXcXdXeXfIMHjHjHjHjHjHjHjaNaNaNaNqIaNaNaNaNaNaNaNqIwKcraNaNaNaNaNaNaNaNaNaNaNaNaNaNytytytwKaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaN aNaNaNaNaNaNbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWaNaNaNaNaNaNaNaNaNaNaNHjIMIMIMIRIMISISISISISIMIRIMIMIMHjaNaNaNaNaNaNaNaNaNaNqIaNaNaNaNaNaNaNqIwKaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNcrwKaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaN aNaNaNaNaNaNbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWaNaNaNaNaNaNaNaNaNaNaNHjHjHkHjHjHjHjITIUIVHjHjHjHjHkHjHjaNaNaNaNaNaNaNaNaNaNqIaNaNaNaNaNaNaNqIwKaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNwKaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaN aNaNaNaNaNaNbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNHjHjHjHjHjaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNqIaNaNaNaNaNaNaNqIwKcraNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNwKaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaN @@ -1686,14 +2315,14 @@ aNaNaNaNaNaNbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbW aNaNaNaNaNaNbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNqIqIqIqIqIqIqIqIqIwKytytcraNaNaNaNaNaNaNaNaNaNaNaNaNcrytwKaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaN aNaNaNaNaNaNbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNwKytytytcraNaNaNaNaNaNaNaNaNaNcrytytytwKaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaN aNaNaNaNaNaNbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWcObWbWbWbWbWbWbWbWbWbWbWaNaNaNaNaNaNaNaNaNaNaNAwAwAwAwAwAwAwAwAwAwAwAwAwAwAwAwaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNwKwKwKwKwKwKwKwKwKwKwKwKwKwKwKwKwKwKwKwKaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaN -aNaNaNaNaNaNbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWaNaNaNaNaNaNaNaNaNaNaNAwqJqKAwqJqNAwqJqOAwqQqPAwqJqNAwaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaN -aNaNaNaNaNaNbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWaNaNaNaNaNaNaNaNaNaNaNAwqRsdAwqRqTAwqRqUAwqRqVAwqRqWAwaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaN +aNaNaNaNaNaNbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWaNaNaNaNaNaNaNaNaNaNaNAwXgqKAwXhqNAwXiqOAwXjqPAwXkqNAwaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaN +aNaNaNaNaNaNbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWaNaNaNaNaNaNaNaNaNaNaNAwqRXlAwqRqTAwqRqUAwqRqVAwqRqWAwaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaN aNaNaNaNaNaNbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWaNaNaNaNaNaNaNaNaNaNaNAwqYqZAwqYqZAwqYqZAwqYqZAwqYqZAwaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaN aNaNaNaNaNaNbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWaNaNaNaNaNaNaNaNaNaNaNAwrarararararbrararbrararararaAwaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaN aNaNaNaNaNaNbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWaNaNaNaNaNaNaNaNaNaNaNAwrararcrararararararararararaAwaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaN aNaNaNaNaNaNbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWaNaNaNaNaNaNaNaNaNaNaNAwqYqZAwqYqZAwqYqZAwqYqZAwqYqZAwaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaN -aNaNaNaNaNaNbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWaNaNaNaNaNaNaNaNaNaNaNAwqRsdAwrdqWAwqRqWAwrgqVAwqRqTAwaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaN -aNaNaNaNaNaNbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWaNaNaNaNaNaNaNaNaNaNaNAwqJqKAwqJqNAwqJqNAwqJrhAwqJriAwaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaN +aNaNaNaNaNaNbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWaNaNaNaNaNaNaNaNaNaNaNAwqRXmAwrdqWAwqRqWAwrgqVAwqRqTAwaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaN +aNaNaNaNaNaNbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWaNaNaNaNaNaNaNaNaNaNaNAwXnqKAwXoqNAwXpqNAwXqrhAwXrriAwaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaN aNaNaNaNaNaNbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWaNaNaNaNaNaNaNaNaNaNaNAwAwAwAwAwAwAwAwAwAwAwAwAwAwAwAwaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaN aNaNaNaNaNaNbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaN aNaNaNaNaNaNbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaN @@ -1708,20 +2337,20 @@ aNaNaNaNaNaNbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWaNbWbWbWbWbWbWbWbWbWbW aNaNaNaNaNaNbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWaNbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNDAjGEhDKDKDKEhrjDADKDKDKDKDKDKDKEmDADvaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaN aNaNaNaNaNaNbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWaNbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNDuaNDADwDwDMEoDMDwDwDwDwDwDMEpDMDwDwDwEnaNDtDwEqErErEsDwDuaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaN aNaNaNaNaNaNbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWaNbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNDADwDwEtDKDKDKDKDKDKDKDKDKDKDKDKEuDAEnaNDvDwEvEwExEyEwEzDwjIaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaN -aNaNaNaNaNaNbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWaNbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNEBDKECDKDKDKDKDKDKDKDKDKDKDKDKDKDKDAaNaNaNEDEEEFEwEwEwEGEDaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaN +aNaNaNaNaNaNbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWaNbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNEBDKECDKDKDKDKDKDKDKDKDKDKDKDKDKDKDAaNaNaNEDEEXsEwEwEwEGEDaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaN aNaNaNaNaNaNbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWaNbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWnnbWbWbWbWbWbWbWaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNDADwDwDwDwDwDMEHDMDwDwDwDwDwEIDKDKDAaNaNaNEJEKEwEwEwEwELEJaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaN aNaNaNaNaNaNbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWaNbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNEnaNEMDAENEOEPDKDKEQERESETEuDADKDKDAiEaNDtDAosEwEVEWEwEXDAaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaN aNaNaNaNaNaNbWbWbWbWbWbWbWbWbWbWbWjLbWbWbWbWbWbWbWbWbWbWbWaNbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNEYDKDKDKDKDKDKDKDKDKDKEYDKDKDADwEZDwDwDwFaDwDwFaDwDAaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaN aNaNaNaNaNaNbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWaNbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNDAFbFcFdDKDKDKFeFeFeDKEHDKDKDAFfEwEwdfDADKDAFhFiFjDAaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaN -aNaNaNaNaNaNbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWaNbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNEYDKDKDKDKkhFkDwDwDwDwDADKDKDAEwEwFlFmDADKDAFnFoFpDIaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaN +aNaNaNaNaNaNbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWaNbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNEYDKDKDKDKkhFkDwDwDwDwDADKDKDAEwEwFlFmDADKDAFnXtFpDIaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaN aNaNaNaNaNaNbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWaNbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNDAFqFrFsDKFtDAFuFvFwFxDADKDKDAFyEwEwFzDADKDAFAFBFCDNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaN aNaNaNaNaNaNbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWaNbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNEYlfDKDKDKFDDAFEFvFvFvFFDKDKDAFGEwEwFHDADKDKDKDKDKEfaNaNaNaNDtDwFIFJFKDwDuaNaNaNaNaNaNaN aNaNaNaNaNaNbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWaNbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNFLFLFLFLFLFLFLFLFLFLFLFLFLFLFLFLFLFLFLFLFLFLFLFLFLFLFLFLFLFLFLFLFLFLFLFLaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNDAFMFNFODKFPDAFQFvFRFSDADKDKDAnpFUEwEwFVDKDKDKDKDKDAaNaNaNDtDwFWFXFXFXFYDwDuaNaNaNaNaNaN aNaNaNaNaNaNbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWaNbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNFLFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFLaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNDtDwDwDwDwDwDwDwDwDwDwDwDwGaDKDKGbDwDwDwDwDwDwDwDwGcDwDADuaNDtDwFWFXFXFXFXFXFYDADuaNaNaNaNaN -aNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNFLFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFLaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNDtDAGaGdGeGfGgGhGiGjGbDAGaDKDKDKDKDKDKGbDwDwDwDwDwGaDKGbDwDwGkDwFWFXFXFXGlFXFXFXFYDAaNaNaNaNaN -aNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNFLFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFLaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNDIGmlhDKDKlvDKDKDKDKDKGoDKDKGpGpGpGpDKDKDKDKDKDKDKDKDKDKGqFXFXFXFXFXFXGrGsGtFXFXFXGuaNaNaNaNaN -aNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNFLFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFLaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNDNDKlwDKDKDKDKDKDKDKDKGoDKDKGpGpGpGpDKDKDKDKDKDKDKDKDKDKGqFXFXFXFXFXGxGyGrGrGxFXFXGzaNaNaNaNaN -aNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNFLFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFLaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNEfGADKDKDKlJDKDKDKDKDKGoDKDKGpGpGpGpDKDKDKDKDKDKDKDKDKFkDwDwGkDwGCFXFXGxGxGxFXFXGDDAaNaNaNaNaN +aNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNFLFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFLaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNDtDAGaGdGeGfGgGhGiGjGbDAGaDKDKDKDKDKDKGbDwDwDwDwDwGaDKGbDwDwGkDwFWFXFXFXXuFXFXFXFYDAaNaNaNaNaN +aNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNFLFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFLaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNDIGmlhDKDKXvDKDKDKDKDKGoDKDKGpGpGpGpDKDKDKDKDKDKDKDKDKDKGqFXFXFXFXFXFXGrGsGtFXFXFXGuaNaNaNaNaN +aNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNFLFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFLaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNDNDKXwDKDKDKDKDKDKDKDKGoDKDKGpGpGpGpDKDKDKDKDKDKDKDKDKDKGqFXFXFXFXFXXxGyGrGrXyFXFXGzaNaNaNaNaN +aNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNFLFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFLaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNEfGADKDKDKXzDKDKDKDKDKGoDKDKGpGpGpGpDKDKDKDKDKDKDKDKDKFkDwDwGkDwGCFXFXXAXBXCFXFXGDDAaNaNaNaNaN aNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNFLFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFLaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNEMDAEIGEGFGGGHGIGJGKFkDAEIDKDKDKDKDKDKFkDwDwEIDKFkDwDwDwDAEnaNEMDwGCFXFXFXFXFXGDDAEnaNaNaNaNaN aNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNFLFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFLaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNEMDwDwDwDwDwDwDwDwDwDwDwDwEIDKDKFkDwDwDwDwDwGLDwDwDwDADAaNaNaNEMDwGCFXFXFXGDDwEnaNaNaNaNaNaN aNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNFLFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFLaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNDvDAGMGMDAaNDAFvGNFvFvFvGNFvDADAaNaNaNaNEMDwFIFJFKDwEnaNaNaNaNaNaNaN @@ -1729,22 +2358,22 @@ aNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaN aNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNFLFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFLaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNDIDKDKDKDKDKDKDKDAaNDAGRGPFvFvFvGPGSDADAaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaN aNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNFLFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFLaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNEfDKDKDKDKDKDKDKDAaNDAGTFvFvGPFvFvGUDADAaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaN aNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNFLFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFLaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNDtDwDwDuaNEMDxDyDyDzEIDKDKDAaNDAGVFvFvFvFvFvGWDAEnaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaN -aNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNjQjPjSjRjTaNaNaNjQjPjSjRjTaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNFLFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFLaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNDtaNaNDtDAGXGYGZDuaNaNaNaNaNDIDKDKDAaNEMDwseHbHcHbsfDwEnaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaN +aNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNjQjPjSjRjTaNaNaNjQjPjSjRjTaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNFLFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFLaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNDtaNaNDtDAXDGYGZDuaNaNaNaNaNDIDKDKDAaNEMDwHaHbHcHbHdDwEnaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaN aNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNjUjWjVjYjXkajZaNjUjWktkvkukajZaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNFLFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFLaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNDtDwDwDwDwDAHeHfDADwDwDwDwDuaNEfDKDKDAaNaNEMDwHgHhHiDwEnaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaN -aNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNkwkykxkxkxkAkzaNkwkDkxkxkxkAkzaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNFLFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFLaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNDtDAHlHmHnDAHoFvFvHpDAHqHrHsHpDwGaDKDKDAaNaNaNHtHuHvHwHtaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaN +aNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNkwkykxkxkxkAkzaNkwkDkxkxkxkAkzaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNFLFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFLaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNDtDAHlXEHnDAHoFvFvHpDAHqHrHsHpDwGaDKDKDAaNaNaNHtHuHvHwHtaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaN aNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNkEkGkFkIkHkNkMaNkEkGkOkIkPkNkMaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNFLFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFLaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNHAFvFvFvHBFvFvFvFvHCFvFvFvFvHCDKDKDKDAaNaNEMDwDwHDDwDwEnaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaN aNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNkQkRkxkxkxkAkSaNkQkRkxkxkxkAkSaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNFLFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFLaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNEMDAHLdacZDAGVFvFvGWDAHOHPHQGWDwEIDKDKDAaNaNaNEMaNaNaNEnaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaN -aNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNkUlikVrLljlmllaNkUlikVlkljlmllaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNFLFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFLaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNEMDwDwDwDwGZHVHWDADwDwDwDwEnaNDIDKDKDAaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaN -aNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNlylnlAlzlFaNaNaNlylnlAlzlFaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNFLFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFLaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNEMaNaNEMDAGXIbDAEnaNaNaNaNaNEfDKDKDAaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaN +aNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNkUlikVXFXGlmllaNkUlikVlkXHlmllaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNFLFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFLaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNEMDwDwDwDwGZHVHWDADwDwDwDwEnaNDIDKDKDAaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaN +aNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNlylnlAlzlFaNaNaNlylnlAlzlFaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNFLFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFLaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNEMaNaNEMDAXIIbDAEnaNaNaNaNaNEfDKDKDAaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaN aNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNFLFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFLaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNEMDwDwEnaNDtDxDyDyDzGaDKDKDAaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaN aNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNjQjPjSjRjTaNaNaNjQjPjSjRjTaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNFLFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFLaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNDIDKDKDKDKDKDKDKDAaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaN aNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNjUjWlLlNlMkajZaNjUjWlOlQlPkajZaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNFLFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFLaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNEfDKDKDKDKDKDKFkDAEnaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaN aNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNkwlRkxkxkxkAkzaNkwlSkxkxkxkAkzaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNFLFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFLaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNEMDwDwDMIqDMDwDwEnaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaN aNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNkEkGlTkIlUkNkMaNkEkGlVkIlYkNkMaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNFLFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFLaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNDAItDKDKDKIuDAaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaN aNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNkQkRkxkxkxkAkSaNkQkRkxkxkxkAkSaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNFLFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFLaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNDIDKDKDKDKlKDIaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaN -aNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNkUlikVrLljlmllaNkUlikVrLljlmllaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNFLFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFLaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNDNIADKDKDKIBDNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaN +aNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNkUlikVXJXKlmllaNkUlikVXLXMlmllaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNFLFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFLaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNDNIADKDKDKIBDNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaN aNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNlylnlAlzlFaNaNaNlylnlAlzlFaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNFLFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFLaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNEfICDKDKDKIDEfaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaN -aNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNFLFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFLaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNEMDwIFIGIHsgIJDwEnaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaN +aNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNFLFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFLaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNEMDwIFIGIHXNIJDwEnaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaN aNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNFLFLFLFLFLFLFLFLFLFLFLFLFLFLFLFLFLFLFLFLFLFLFLFLFLFLFLFLFLFLFLFLFLFLFLFLaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNEMDwDxDyDzDwEnaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaN aNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNEMaNaNaNEnaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaN aNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaN diff --git a/_maps/map_files/cyberiad/z6.dmm b/_maps/map_files/cyberiad/z6.dmm index 7eeac05c776..e69905fc814 100644 --- a/_maps/map_files/cyberiad/z6.dmm +++ b/_maps/map_files/cyberiad/z6.dmm @@ -268,7 +268,7 @@ "fh" = (/obj/machinery/light/small{dir = 4},/obj/effect/landmark/damageturf,/turf/simulated/floor/plasteel/airless,/area/derelict/singularity_engine) "fi" = (/obj/item/shard{icon_state = "medium"},/obj/item/stack/cable_coil/cut,/turf/simulated/floor/plating/airless,/area/derelict/singularity_engine) "fj" = (/obj/structure/cable{d1 = 1;d2 = 8;icon_state = "1-8";tag = ""},/turf/simulated/floor/plating/airless,/area/derelict/hallway/primary) -"fk" = (/obj/item/ore/slag,/turf/simulated/floor/plating/airless,/area/derelict/singularity_engine) +"fk" = (/obj/item/stack/ore/slag,/turf/simulated/floor/plating/airless,/area/derelict/singularity_engine) "fl" = (/obj/machinery/light/small,/obj/effect/landmark/damageturf,/turf/simulated/floor/plasteel/airless,/area/derelict/hallway/primary) "fm" = (/turf/simulated/wall,/area/derelict/hallway/primary) "fn" = (/obj/effect/landmark/damageturf,/turf/simulated/floor/plating/airless,/area/derelict/arrival) @@ -647,7 +647,7 @@ "mw" = (/obj/machinery/light{dir = 1;on = 1},/obj/effect/spawner/random_spawners/syndicate/turret,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/syndicate_depot/core) "mx" = (/turf/simulated/shuttle/wall{tag = "icon-swall12";icon_state = "swall12";dir = 2},/area/space) "my" = (/turf/simulated/floor/plating/airless/asteroid,/turf/simulated/shuttle/wall{tag = "icon-swall_f9";icon_state = "swall_f9";dir = 2},/area/space) -"mz" = (/obj/structure/closet/crate{icon_state = "crateopen";opened = 1},/obj/item/ore/bananium,/obj/item/grenade/bananade,/turf/simulated/floor/plasteel/airless,/area/space) +"mz" = (/obj/structure/closet/crate{icon_state = "crateopen";opened = 1},/obj/item/stack/ore/bananium,/obj/item/grenade/bananade,/turf/simulated/floor/plasteel/airless,/area/space) "mA" = (/turf/simulated/floor/plasteel{icon_state = "dark"},/area/syndicate_depot/core) "mB" = (/obj/effect/spawner/random_spawners/syndicate/layout/door,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/syndicate_depot/core) "mC" = (/obj/machinery/door/airlock/hatch/syndicate,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/syndicate_depot/core) @@ -663,12 +663,12 @@ "mM" = (/obj/effect/spawner/random_spawners/syndicate/loot,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/syndicate_depot/core) "mN" = (/obj/machinery/light,/obj/effect/spawner/random_spawners/syndicate/turret,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/syndicate_depot/core) "mO" = (/obj/structure/sign/poster/contraband/lamarr,/turf/simulated/wall/r_wall,/area/syndicate_depot/core) -"mP" = (/obj/structure/closet/crate,/obj/item/ore/tranquillite,/obj/item/ore/tranquillite,/obj/item/ore/tranquillite,/obj/item/ore/tranquillite,/obj/item/ore/tranquillite,/obj/item/ore/tranquillite,/obj/item/ore/tranquillite,/obj/item/ore/tranquillite,/turf/simulated/floor/plasteel/airless,/area/space) -"mQ" = (/obj/structure/closet/crate,/obj/item/ore/tranquillite,/obj/item/ore/tranquillite,/obj/item/ore/tranquillite,/obj/item/ore/tranquillite,/obj/item/ore/tranquillite,/obj/item/ore/tranquillite,/obj/item/ore/tranquillite,/turf/simulated/floor/plasteel/airless,/area/space) +"mP" = (/obj/structure/closet/crate,/obj/item/stack/ore/tranquillite,/obj/item/stack/ore/tranquillite,/obj/item/stack/ore/tranquillite,/obj/item/stack/ore/tranquillite,/obj/item/stack/ore/tranquillite,/obj/item/stack/ore/tranquillite,/obj/item/stack/ore/tranquillite,/obj/item/stack/ore/tranquillite,/turf/simulated/floor/plasteel/airless,/area/space) +"mQ" = (/obj/structure/closet/crate,/obj/item/stack/ore/tranquillite,/obj/item/stack/ore/tranquillite,/obj/item/stack/ore/tranquillite,/obj/item/stack/ore/tranquillite,/obj/item/stack/ore/tranquillite,/obj/item/stack/ore/tranquillite,/obj/item/stack/ore/tranquillite,/turf/simulated/floor/plasteel/airless,/area/space) "mR" = (/obj/machinery/light{dir = 1;on = 1},/obj/effect/spawner/random_spawners/syndicate/loot,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/syndicate_depot/core) "mS" = (/obj/machinery/light{dir = 1;on = 1},/obj/effect/spawner/random_spawners/syndicate/loot/level2,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/syndicate_depot/core) "mT" = (/obj/item/shard,/turf/simulated/floor/plating/airless/asteroid,/area/space) -"mU" = (/obj/structure/closet/crate,/obj/item/ore/bananium,/obj/item/ore/bananium,/obj/item/ore/bananium,/obj/item/ore/bananium,/obj/item/ore/bananium,/turf/simulated/floor/plasteel/airless,/area/space) +"mU" = (/obj/structure/closet/crate,/obj/item/stack/ore/bananium,/obj/item/stack/ore/bananium,/obj/item/stack/ore/bananium,/obj/item/stack/ore/bananium,/obj/item/stack/ore/bananium,/turf/simulated/floor/plasteel/airless,/area/space) "mV" = (/obj/effect/mob_spawn/human/mime/corpse{name = "Mime Pilot"},/turf/simulated/floor/plasteel/airless,/area/space) "mW" = (/obj/structure/computerframe/HONKputer,/turf/simulated/floor/plasteel/airless,/area/space) "mX" = (/obj/effect/mob_spawn/human/corpse/clownmili,/turf/simulated/floor/plasteel/airless,/area/space) @@ -676,7 +676,7 @@ "mZ" = (/obj/effect/spawner/random_spawners/syndicate/turret/external,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/syndicate_depot/core) "na" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 4},/turf/simulated/floor/plating/airless,/area/space) "nb" = (/obj/item/shard{icon_state = "small"},/turf/simulated/floor/plating/airless/asteroid,/area/space) -"nc" = (/obj/item/ore/bananium,/turf/simulated/floor/plasteel/airless,/area/space) +"nc" = (/obj/item/stack/ore/bananium,/turf/simulated/floor/plasteel/airless,/area/space) "nd" = (/obj/item/stack/sheet/metal{layer = 4.1},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/syndicate_depot/core) "ne" = (/obj/structure/shuttle/engine/propulsion{dir = 4;icon_state = "propulsion_l";tag = "icon-propulsion_l (WEST)"},/turf/space,/area/space) "nf" = (/obj/effect/spawner/random_spawners/syndicate/trap/mine,/obj/item/stack/sheet/metal{layer = 4.1},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/syndicate_depot/core) @@ -686,7 +686,7 @@ "nj" = (/obj/effect/mob_spawn/human/clown/corpse,/turf/simulated/floor/plasteel/airless,/area/space) "nk" = (/obj/machinery/computer/syndicate_depot/teleporter,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/syndicate_depot/core) "nl" = (/obj/item/pickaxe,/turf/simulated/floor/plasteel/airless,/area/space) -"nm" = (/obj/structure/closet/crate,/obj/item/ore/bananium,/obj/item/ore/bananium,/obj/item/ore/bananium,/obj/item/ore/bananium,/turf/simulated/floor/plasteel/airless,/area/space) +"nm" = (/obj/structure/closet/crate,/obj/item/stack/ore/bananium,/obj/item/stack/ore/bananium,/obj/item/stack/ore/bananium,/obj/item/stack/ore/bananium,/turf/simulated/floor/plasteel/airless,/area/space) "nn" = (/turf/space,/turf/simulated/shuttle/wall{tag = "icon-swall_f5";icon_state = "swall_f5";dir = 2},/area/space) "no" = (/obj/machinery/bluespace_beacon/syndicate,/obj/effect/decal/warning_stripes/yellow,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/syndicate_depot/core) "np" = (/turf/simulated/floor/plasteel/airless,/turf/simulated/shuttle/wall{tag = "icon-swall_f10";icon_state = "swall_f10";dir = 2},/area/space) diff --git a/code/ATMOSPHERICS/components/unary_devices/vent_pump.dm b/code/ATMOSPHERICS/components/unary_devices/vent_pump.dm index 1f2670371f8..865490aef28 100644 --- a/code/ATMOSPHERICS/components/unary_devices/vent_pump.dm +++ b/code/ATMOSPHERICS/components/unary_devices/vent_pump.dm @@ -60,7 +60,7 @@ /obj/machinery/atmospherics/unary/vent_pump/New() ..() - all_vent_pumps += src + GLOB.all_vent_pumps += src icon = null initial_loc = get_area(loc) area_uid = initial_loc.uid @@ -381,6 +381,8 @@ if(!welded) if(open) for(var/obj/item/W in src) + if(istype(W, /obj/item/pipe)) + continue W.forceMove(get_turf(src)) @@ -429,7 +431,7 @@ return ..() /obj/machinery/atmospherics/unary/vent_pump/Destroy() - all_vent_pumps -= src + GLOB.all_vent_pumps -= src if(initial_loc) initial_loc.air_vent_info -= id_tag initial_loc.air_vent_names -= id_tag diff --git a/code/__DEFINES/admin.dm b/code/__DEFINES/admin.dm index 0397b5bcdde..1df551e53e7 100644 --- a/code/__DEFINES/admin.dm +++ b/code/__DEFINES/admin.dm @@ -45,19 +45,21 @@ #define R_HOST 65535 -#define ADMIN_QUE(user) "(?)" -#define ADMIN_FLW(user) "(FLW)" -#define ADMIN_PP(user) "(PP)" -#define ADMIN_VV(atom) "(VV)" -#define ADMIN_SM(user) "(SM)" -#define ADMIN_TP(user) "(TP)" -#define ADMIN_BSA(user) "(BSA)" -#define ADMIN_CENTCOM_REPLY(user) "(RPLY)" -#define ADMIN_SYNDICATE_REPLY(user) "(RPLY)" -#define ADMIN_SC(user) "(SC)" -#define ADMIN_LOOKUP(user) "[key_name_admin(user)][ADMIN_QUE(user)]" -#define ADMIN_LOOKUPFLW(user) "[key_name_admin(user)][ADMIN_QUE(user)] [ADMIN_FLW(user)]" -#define ADMIN_FULLMONTY(user) "[key_name_admin(user)] [ADMIN_QUE(user)] [ADMIN_PP(user)] [ADMIN_VV(user)] [ADMIN_SM(user)] [ADMIN_FLW(user)] [ADMIN_TP(user)]" +#define ADMIN_QUE(user,display) "[display]" +#define ADMIN_FLW(user,display) "[display]" +#define ADMIN_PP(user,display) "[display]" +#define ADMIN_VV(atom,display) "[display]" +#define ADMIN_SM(user,display) "[display]" +#define ADMIN_TP(user,display) "[display]" +#define ADMIN_BSA(user,display) "[display]" +#define ADMIN_CENTCOM_REPLY(user,display) "[display]" +#define ADMIN_SYNDICATE_REPLY(user,display) "[display]" +#define ADMIN_SC(user,display) "[display]" +#define ADMIN_LOOKUP(user) "[key_name_admin(user)]([ADMIN_QUE(user,"?")])" +#define ADMIN_LOOKUPFLW(user) "[key_name_admin(user)]([ADMIN_QUE(user,"?")]) ([ADMIN_FLW(user,"FLW")])" +#define ADMIN_FULLMONTY(user) "[key_name_admin(user)] ([ADMIN_QUE(user,"?")]) ([ADMIN_PP(user,"PP")]) ([ADMIN_VV(user,"VV")]) ([ADMIN_SM(user,"SM")]) ([ADMIN_FLW(user,"FLW")]) ([ADMIN_TP(user,"TP")])" #define ADMIN_JMP(src) "(JMP)" #define COORD(src) "[src ? "([src.x],[src.y],[src.z])" : "nonexistent location"]" -#define ADMIN_COORDJMP(src) "[src ? "[COORD(src)] [ADMIN_JMP(src)]" : "nonexistent location"]" \ No newline at end of file +#define AREACOORD(src) "[src ? "[get_area_name(src, TRUE)] [COORD(src)]" : "nonexistent location" ]" +#define ADMIN_COORDJMP(src) "[src ? "[COORD(src)] [ADMIN_JMP(src)]" : "nonexistent location"]" +#define ADMIN_VERBOSEJMP(src) "[src ? "[AREACOORD(src)] [ADMIN_JMP(src)]" : "nonexistent location"]" diff --git a/code/__DEFINES/components.dm b/code/__DEFINES/components.dm index 6f14b75b2ec..9c1853f7d02 100644 --- a/code/__DEFINES/components.dm +++ b/code/__DEFINES/components.dm @@ -1,3 +1,5 @@ +#define SEND_SIGNAL(target, sigtype, arguments...) ( !target.comp_lookup || !target.comp_lookup[sigtype] ? NONE : target._SendSignal(sigtype, list(target, ##arguments)) ) + //shorthand #define GET_COMPONENT_FROM(varname, path, target) var##path/##varname = ##target.GetComponent(##path) #define GET_COMPONENT(varname, path) GET_COMPONENT_FROM(varname, path, src) @@ -13,11 +15,13 @@ // All signals. Format: // When the signal is called: (signal arguments) +// All signals send the source datum of the signal as the first argument // /datum signals #define COMSIG_COMPONENT_ADDED "component_added" //when a component is added to a datum: (/datum/component) #define COMSIG_COMPONENT_REMOVING "component_removing" //before a component is removed from a datum because of RemoveComponent: (/datum/component) -#define COMSIG_PARENT_QDELETED "parent_qdeleted" //before a datum's Destroy() is called: () +#define COMSIG_PARENT_PREQDELETED "parent_preqdeleted" //before a datum's Destroy() is called: (force), returning a nonzero value will cancel the qdel operation +#define COMSIG_PARENT_QDELETED "parent_qdeleted" //after a datum's Destroy() is called: (force, qdel_hint), at this point none of the other components chose to interrupt qdel and Destroy has been called // /atom signals #define COMSIG_PARENT_ATTACKBY "atom_attackby" //from base of atom/attackby(): (/obj/item, /mob/living, params) diff --git a/code/__DEFINES/flags.dm b/code/__DEFINES/flags.dm index cd6688d095f..ae6943d553a 100644 --- a/code/__DEFINES/flags.dm +++ b/code/__DEFINES/flags.dm @@ -17,8 +17,6 @@ #define HEADBANGPROTECT 4096 -#define OPENCONTAINER 4096 // is an open container for chemistry purposes - #define BLOCK_GAS_SMOKE_EFFECT 8192 // blocks the effect that chemical clouds would have on a mob --glasses, mask and helmets ONLY! #define THICKMATERIAL 8192 //prevents syringes, parapens and hypos if the external suit or helmet (if targeting head) has this flag. Example: space suits, biosuit, bombsuits, thick suits that cover your body. (NOTE: flag shared with BLOCK_GAS_SMOKE_EFFECT) @@ -54,6 +52,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/math.dm b/code/__DEFINES/math.dm index 3f360d5bad7..dd0045a2105 100644 --- a/code/__DEFINES/math.dm +++ b/code/__DEFINES/math.dm @@ -12,6 +12,10 @@ #define Clamp(x, y, z) ((x) <= (y) ? (y) : ((x) >= (z) ? (z) : (x))) #define CLAMP01(x) (Clamp((x), 0, 1)) + +// Similar to clamp but the bottom rolls around to the top and vice versa. min is inclusive, max is exclusive +#define WRAP(val, min, max) ( min == max ? min : (val) - (round(((val) - (min))/((max) - (min))) * ((max) - (min))) ) + #define SIMPLE_SIGN(X) ((X) < 0 ? -1 : 1) #define SIGN(X) ((X) ? SIMPLE_SIGN(X) : 0) #define hypotenuse(Ax, Ay, Bx, By) (sqrt(((Ax) - (Bx))**2 + ((Ay) - (By))**2)) diff --git a/code/__DEFINES/qdel.dm b/code/__DEFINES/qdel.dm index 8d504edaf41..6adb876da8d 100644 --- a/code/__DEFINES/qdel.dm +++ b/code/__DEFINES/qdel.dm @@ -11,14 +11,12 @@ #define QDEL_HINT_IFFAIL_FINDREFERENCE 6 //Above but only if gc fails. //defines for the gc_destroyed var -#define GC_QUEUE_PREQUEUE 1 -#define GC_QUEUE_CHECK 2 -#define GC_QUEUE_HARDDELETE 3 -#define GC_QUEUE_COUNT 3 //increase this when adding more steps. +#define GC_QUEUE_CHECK 1 +#define GC_QUEUE_HARDDELETE 2 +#define GC_QUEUE_COUNT 2 //increase this when adding more steps. #define GC_QUEUED_FOR_QUEUING -1 -#define GC_QUEUED_FOR_HARD_DEL -2 -#define GC_CURRENTLY_BEING_QDELETED -3 +#define GC_CURRENTLY_BEING_QDELETED -2 #define QDELING(X) (X.gc_destroyed) #define QDELETED(X) (!X || QDELING(X)) diff --git a/code/__DEFINES/reagents.dm b/code/__DEFINES/reagents.dm index 0d20a3edb74..e2dd3ee3ac7 100644 --- a/code/__DEFINES/reagents.dm +++ b/code/__DEFINES/reagents.dm @@ -4,3 +4,15 @@ #define REAGENT_OVERDOSE_EFFECT 1 #define REAGENT_OVERDOSE_FLAGS 2 +// container_type defines +#define INJECTABLE 1 // Makes it possible to add reagents through droppers and syringes. +#define DRAWABLE 2 // Makes it possible to remove reagents through syringes. + +#define REFILLABLE 4 // Makes it possible to add reagents through any reagent container. +#define DRAINABLE 8 // Makes it possible to remove reagents through any reagent container. + +#define TRANSPARENT 16 // Used on containers which you want to be able to see the reagents off. +#define AMOUNT_VISIBLE 32 // For non-transparent containers that still have the general amount of reagents in them visible. + +// Is an open container for all intents and purposes. +#define OPENCONTAINER (REFILLABLE | DRAINABLE | TRANSPARENT) diff --git a/code/__DEFINES/subsystems.dm b/code/__DEFINES/subsystems.dm index a03ce11a648..5ade3b0baef 100644 --- a/code/__DEFINES/subsystems.dm +++ b/code/__DEFINES/subsystems.dm @@ -18,8 +18,6 @@ //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 //For servers that can't do with any additional lag, set this to none in flightpacks.dm in subsystem/processing. @@ -124,3 +122,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 c30817ed5aa..8573873676b 100644 --- a/code/__HELPERS/_logging.dm +++ b/code/__HELPERS/_logging.dm @@ -38,7 +38,7 @@ if(config.log_debug) WRITE_LOG(GLOB.world_game_log, "DEBUG: [text][log_end]") - for(var/client/C in admins) + for(var/client/C in GLOB.admins) if(check_rights(R_DEBUG, 0, C.mob) && (C.prefs.toggles & CHAT_DEBUGLOGS)) to_chat(C, "DEBUG: [text]") diff --git a/code/__HELPERS/game.dm b/code/__HELPERS/game.dm index 6b94e28d91b..eb6fb8a4802 100644 --- a/code/__HELPERS/game.dm +++ b/code/__HELPERS/game.dm @@ -197,7 +197,7 @@ // Try to find all the players who can hear the message - for(var/A in player_list + hear_radio_list) + for(var/A in GLOB.player_list + GLOB.hear_radio_list) var/mob/M = A if(M) var/turf/ear = get_turf(M) @@ -268,7 +268,7 @@ break /proc/get_mob_by_key(var/key) - for(var/mob/M in mob_list) + for(var/mob/M in GLOB.mob_list) if(M.ckey == lowertext(key)) return M return null @@ -278,7 +278,7 @@ var/list/candidates = list() // Keep looping until we find a non-afk candidate within the time bracket (we limit the bracket to 10 minutes (6000)) while(!candidates.len && afk_bracket < 6000) - for(var/mob/dead/observer/G in player_list) + for(var/mob/dead/observer/G in GLOB.player_list) if(G.client != null) if(!(G.mind && G.mind.current && G.mind.current.stat != DEAD)) if(!G.client.is_afk(afk_bracket) && (be_special_type in G.client.prefs.be_special)) @@ -294,7 +294,7 @@ var/list/candidates = list() // Keep looping until we find a non-afk candidate within the time bracket (we limit the bracket to 10 minutes (6000)) while(!candidates.len && afk_bracket < 6000) - for(var/mob/dead/observer/G in player_list) + for(var/mob/dead/observer/G in GLOB.player_list) if(G.client != null) if(!(G.mind && G.mind.current && G.mind.current.stat != DEAD)) if(!G.client.is_afk(afk_bracket) && (be_special_type in G.client.prefs.be_special)) @@ -315,7 +315,7 @@ /proc/Show2Group4Delay(obj/O, list/group, delay=0) if(!isobj(O)) return - if(!group) group = clients + if(!group) group = GLOB.clients for(var/client/C in group) C.screen += O if(delay) @@ -333,8 +333,8 @@ /proc/get_active_player_count() // Get active players who are playing in the round var/active_players = 0 - for(var/i = 1; i <= player_list.len; i++) - var/mob/M = player_list[i] + for(var/i = 1; i <= GLOB.player_list.len; i++) + var/mob/M = GLOB.player_list[i] if(M && M.client) if(istype(M, /mob/new_player)) // exclude people in the lobby continue @@ -384,7 +384,7 @@ return new /datum/projectile_data(src_x, src_y, time, distance, power_x, power_y, dest_x, dest_y) -/proc/mobs_in_area(var/area/the_area, var/client_needed=0, var/moblist=mob_list) +/proc/mobs_in_area(var/area/the_area, var/client_needed=0, var/moblist=GLOB.mob_list) var/list/mobs_found[0] var/area/our_area = get_area(the_area) for(var/mob/M in moblist) @@ -397,7 +397,7 @@ /proc/alone_in_area(var/area/the_area, var/mob/must_be_alone, var/check_type = /mob/living/carbon) var/area/our_area = get_area(the_area) - for(var/C in living_mob_list) + for(var/C in GLOB.living_mob_list) if(!istype(C, check_type)) continue if(C == must_be_alone) @@ -436,7 +436,7 @@ proc/pollCandidates(Question, be_special_type, antag_age_check = 0, poll_time = if(!Question) Question = "Would you like to be a special role?" - for(var/mob/dead/observer/G in (ignore_respawnability ? player_list : respawnable_list)) + for(var/mob/dead/observer/G in (ignore_respawnability ? GLOB.player_list : GLOB.respawnable_list)) if(!G.key || !G.client) continue if(be_special_type) diff --git a/code/__HELPERS/global_lists.dm b/code/__HELPERS/global_lists.dm index a068bb8604e..a37be148b4e 100644 --- a/code/__HELPERS/global_lists.dm +++ b/code/__HELPERS/global_lists.dm @@ -5,38 +5,38 @@ /proc/makeDatumRefLists() //markings - init_sprite_accessory_subtypes(/datum/sprite_accessory/body_markings, marking_styles_list) + init_sprite_accessory_subtypes(/datum/sprite_accessory/body_markings, GLOB.marking_styles_list) //head accessory - init_sprite_accessory_subtypes(/datum/sprite_accessory/head_accessory, head_accessory_styles_list) + init_sprite_accessory_subtypes(/datum/sprite_accessory/head_accessory, GLOB.head_accessory_styles_list) //hair - init_sprite_accessory_subtypes(/datum/sprite_accessory/hair, hair_styles_public_list, hair_styles_male_list, hair_styles_female_list, hair_styles_full_list) + init_sprite_accessory_subtypes(/datum/sprite_accessory/hair, GLOB.hair_styles_public_list, GLOB.hair_styles_male_list, GLOB.hair_styles_female_list, GLOB.hair_styles_full_list) //facial hair - init_sprite_accessory_subtypes(/datum/sprite_accessory/facial_hair, facial_hair_styles_list, facial_hair_styles_male_list, facial_hair_styles_female_list) + init_sprite_accessory_subtypes(/datum/sprite_accessory/facial_hair, GLOB.facial_hair_styles_list, GLOB.facial_hair_styles_male_list, GLOB.facial_hair_styles_female_list) //underwear - init_sprite_accessory_subtypes(/datum/sprite_accessory/underwear, underwear_list, underwear_m, underwear_f) + init_sprite_accessory_subtypes(/datum/sprite_accessory/underwear, GLOB.underwear_list, GLOB.underwear_m, GLOB.underwear_f) //undershirt - init_sprite_accessory_subtypes(/datum/sprite_accessory/undershirt, undershirt_list, undershirt_m, undershirt_f) + init_sprite_accessory_subtypes(/datum/sprite_accessory/undershirt, GLOB.undershirt_list, GLOB.undershirt_m, GLOB.undershirt_f) //socks - init_sprite_accessory_subtypes(/datum/sprite_accessory/socks, socks_list, socks_m, socks_f) + init_sprite_accessory_subtypes(/datum/sprite_accessory/socks, GLOB.socks_list, GLOB.socks_m, GLOB.socks_f) //alt heads - init_sprite_accessory_subtypes(/datum/sprite_accessory/alt_heads, alt_heads_list) + init_sprite_accessory_subtypes(/datum/sprite_accessory/alt_heads, GLOB.alt_heads_list) - init_subtypes(/datum/surgery_step, surgery_steps) + init_subtypes(/datum/surgery_step, GLOB.surgery_steps) for(var/path in (subtypesof(/datum/surgery))) - surgeries_list += new path() + GLOB.surgeries_list += new path() - init_datum_subtypes(/datum/job, joblist, list(/datum/job/ai, /datum/job/cyborg), "title") - init_datum_subtypes(/datum/superheroes, all_superheroes, null, "name") - init_datum_subtypes(/datum/nations, all_nations, null, "default_name") - init_datum_subtypes(/datum/language, all_languages, null, "name") + init_datum_subtypes(/datum/job, GLOB.joblist, list(/datum/job/ai, /datum/job/cyborg), "title") + init_datum_subtypes(/datum/superheroes, GLOB.all_superheroes, null, "name") + init_datum_subtypes(/datum/nations, GLOB.all_nations, null, "default_name") + init_datum_subtypes(/datum/language, GLOB.all_languages, null, "name") - for(var/language_name in all_languages) - var/datum/language/L = all_languages[language_name] + for(var/language_name in GLOB.all_languages) + var/datum/language/L = GLOB.all_languages[language_name] if(!(L.flags & NONGLOBAL)) - language_keys[":[lowertext(L.key)]"] = L - language_keys[".[lowertext(L.key)]"] = L - language_keys["#[lowertext(L.key)]"] = L + GLOB.language_keys[":[lowertext(L.key)]"] = L + GLOB.language_keys[".[lowertext(L.key)]"] = L + GLOB.language_keys["#[lowertext(L.key)]"] = L var/rkey = 0 for(var/spath in subtypesof(/datum/species)) @@ -45,9 +45,9 @@ GLOB.all_species[S.name] = S if(IS_WHITELISTED in S.species_traits) - whitelisted_species += S.name + GLOB.whitelisted_species += S.name - init_subtypes(/datum/crafting_recipe, crafting_recipes) + init_subtypes(/datum/crafting_recipe, GLOB.crafting_recipes) //Pipe list building init_subtypes(/datum/pipes, GLOB.construction_pipe_list) @@ -60,10 +60,10 @@ /* // Uncomment to debug chemical reaction list. /client/verb/debug_chemical_list() - for(var/reaction in chemical_reactions_list) - . += "chemical_reactions_list\[\"[reaction]\"\] = \"[chemical_reactions_list[reaction]]\"\n" - if(islist(chemical_reactions_list[reaction])) - var/list/L = chemical_reactions_list[reaction] + for(var/reaction in GLOB.chemical_reactions_list) + . += "GLOB.chemical_reactions_list\[\"[reaction]\"\] = \"[GLOB.chemical_reactions_list[reaction]]\"\n" + if(islist(GLOB.chemical_reactions_list[reaction])) + var/list/L = GLOB.chemical_reactions_list[reaction] for(var/t in L) . += " has: [t]\n" to_chat(world, .) diff --git a/code/__HELPERS/icon_smoothing.dm b/code/__HELPERS/icon_smoothing.dm index 27ec6e7202f..2db8621195d 100644 --- a/code/__HELPERS/icon_smoothing.dm +++ b/code/__HELPERS/icon_smoothing.dm @@ -108,11 +108,19 @@ return adjacencies +//do not use, use queue_smooth(atom) /proc/smooth_icon(atom/A) + if(!A || !A.smooth || !A.z) + return if(QDELETED(A)) return - if(A && (A.smooth & SMOOTH_TRUE) || (A.smooth & SMOOTH_MORE)) + if((A.smooth & SMOOTH_TRUE) || (A.smooth & SMOOTH_MORE)) var/adjacencies = calculate_adjacencies(A) + + if(A.smooth & SMOOTH_DIAGONAL) + A.diagonal_smooth(adjacencies) + else + cardinal_smooth(A, adjacencies) if(A.smooth & SMOOTH_DIAGONAL) A.diagonal_smooth(adjacencies) else @@ -149,12 +157,12 @@ /turf/simulated/wall/diagonal_smooth(adjacencies) adjacencies = reverse_ndir(..()) if(adjacencies) - underlays.Cut() + var/list/U = list() if(fixed_underlay) if(fixed_underlay["space"]) - underlays += image('icons/turf/space.dmi', SPACE_ICON_STATE, layer=TURF_LAYER) + U += image('icons/turf/space.dmi', SPACE_ICON_STATE, layer=TURF_LAYER) else - underlays += image(fixed_underlay["icon"], fixed_underlay["icon_state"], layer=TURF_LAYER) + U += image(fixed_underlay["icon"], fixed_underlay["icon_state"], layer=TURF_LAYER) else var/turf/T = get_step(src, turn(adjacencies, 180)) if(T && (T.density || T.smooth)) @@ -163,13 +171,14 @@ T = get_step(src, turn(adjacencies, 225)) if(istype(T, /turf/space) && !istype(T, /turf/space/transit)) - underlays += image('icons/turf/space.dmi', SPACE_ICON_STATE, layer=TURF_LAYER) + U += image('icons/turf/space.dmi', SPACE_ICON_STATE, layer=TURF_LAYER) else if(T && !T.density && !T.smooth) - underlays += T + U += T else if(baseturf && !initial(baseturf.density) && !initial(baseturf.smooth)) - underlays += image(initial(baseturf.icon), initial(baseturf.icon_state), layer=TURF_LAYER) + U += image(initial(baseturf.icon), initial(baseturf.icon_state), layer=TURF_LAYER) else - underlays += DEFAULT_UNDERLAY_IMAGE + U += DEFAULT_UNDERLAY_IMAGE + underlays = U /proc/cardinal_smooth(atom/A, adjacencies) //NW CORNER @@ -224,43 +233,36 @@ else if(adjacencies & N_EAST) se = "4-e" + var/list/New = list() + if(A.top_left_corner != nw) A.overlays -= A.top_left_corner A.top_left_corner = nw - A.overlays += nw + New += nw if(A.top_right_corner != ne) A.overlays -= A.top_right_corner A.top_right_corner = ne - A.overlays += ne + New += ne if(A.bottom_right_corner != sw) A.overlays -= A.bottom_right_corner A.bottom_right_corner = sw - A.overlays += sw + New += sw if(A.bottom_left_corner != se) A.overlays -= A.bottom_left_corner A.bottom_left_corner = se - A.overlays += se + New += se -/proc/find_type_in_direction(atom/source, direction, range=1) - var/x_offset = 0 - var/y_offset = 0 + if(New.len) + A.overlays.Add(New) - if(direction & NORTH) - y_offset = range - else if(direction & SOUTH) - y_offset -= range - - if(direction & EAST) - x_offset = range - else if(direction & WEST) - x_offset -= range - - var/turf/target_turf = locate(source.x + x_offset, source.y + y_offset, source.z) +/proc/find_type_in_direction(atom/source, direction) + var/turf/target_turf = get_step(source, direction) if(!target_turf) return NULLTURF_BORDER + if(source.canSmoothWith) var/atom/A if(source.smooth & SMOOTH_MORE) @@ -287,22 +289,22 @@ //Icon smoothing helpers -/proc/smooth_icon_neighbors(atom/A) - for(var/V in orange(1,A)) - var/atom/T = V - if(T.smooth) - smooth_icon(T) - -/proc/smooth_zlevel(var/zlevel) +/proc/smooth_zlevel(var/zlevel, now = FALSE) var/list/away_turfs = block(locate(1, 1, zlevel), locate(world.maxx, world.maxy, zlevel)) for(var/V in away_turfs) var/turf/T = V if(T.smooth) - smooth_icon(T) + if(now) + smooth_icon(T) + else + queue_smooth(T) for(var/R in T) var/atom/A = R if(A.smooth) - smooth_icon(A) + if(now) + smooth_icon(A) + else + queue_smooth(A) /atom/proc/clear_smooth_overlays() overlays -= top_left_corner @@ -316,14 +318,16 @@ /atom/proc/replace_smooth_overlays(nw, ne, sw, se) clear_smooth_overlays() + var/list/O = list() top_left_corner = nw - overlays += nw + O += nw top_right_corner = ne - overlays += ne + O += ne bottom_left_corner = sw - overlays += sw + O += sw bottom_right_corner = se - overlays += se + O += se + overlays.Add(O) /proc/reverse_ndir(ndir) switch(ndir) @@ -362,6 +366,21 @@ else return 0 +//SSicon_smooth +/proc/queue_smooth_neighbors(atom/A) + for(var/V in orange(1,A)) + var/atom/T = V + if(T.smooth) + queue_smooth(T) + +//SSicon_smooth +/proc/queue_smooth(atom/A) + if(SSicon_smooth) + SSicon_smooth.smooth_queue[A] = A + SSicon_smooth.can_fire = 1 + else + smooth_icon(A) + //Example smooth wall /turf/simulated/wall/smooth name = "smooth wall" diff --git a/code/__HELPERS/icons.dm b/code/__HELPERS/icons.dm index 96109186359..04fc2c6f73c 100644 --- a/code/__HELPERS/icons.dm +++ b/code/__HELPERS/icons.dm @@ -215,81 +215,80 @@ world #define TO_HEX_DIGIT(n) ascii2text((n&15) + ((n&15)<10 ? 48 : 87)) -icon - proc/MakeLying() - var/icon/I = new(src,dir=SOUTH) - I.BecomeLying() - return I +/icon/proc/MakeLying() + var/icon/I = new(src,dir=SOUTH) + I.BecomeLying() + return I - proc/BecomeLying() - Turn(90) - Shift(SOUTH,6) - Shift(EAST,1) +/icon/proc/BecomeLying() + Turn(90) + Shift(SOUTH,6) + Shift(EAST,1) // Multiply all alpha values by this float - proc/ChangeOpacity(opacity = 1.0) - MapColors(1,0,0,0, 0,1,0,0, 0,0,1,0, 0,0,0,opacity, 0,0,0,0) +/icon/proc/ChangeOpacity(opacity = 1.0) + MapColors(1,0,0,0, 0,1,0,0, 0,0,1,0, 0,0,0,opacity, 0,0,0,0) // Convert to grayscale - proc/GrayScale() - MapColors(0.3,0.3,0.3, 0.59,0.59,0.59, 0.11,0.11,0.11, 0,0,0) +/icon/proc/GrayScale() + MapColors(0.3,0.3,0.3, 0.59,0.59,0.59, 0.11,0.11,0.11, 0,0,0) - proc/ColorTone(tone) - GrayScale() +/icon/proc/ColorTone(tone) + GrayScale() - var/list/TONE = ReadRGB(tone) - var/gray = round(TONE[1]*0.3 + TONE[2]*0.59 + TONE[3]*0.11, 1) + var/list/TONE = ReadRGB(tone) + var/gray = round(TONE[1]*0.3 + TONE[2]*0.59 + TONE[3]*0.11, 1) - var/icon/upper = (255-gray) ? new(src) : null + var/icon/upper = (255-gray) ? new(src) : null - if(gray) - MapColors(255/gray,0,0, 0,255/gray,0, 0,0,255/gray, 0,0,0) - Blend(tone, ICON_MULTIPLY) - else SetIntensity(0) - if(255-gray) - upper.Blend(rgb(gray,gray,gray), ICON_SUBTRACT) - upper.MapColors((255-TONE[1])/(255-gray),0,0,0, 0,(255-TONE[2])/(255-gray),0,0, 0,0,(255-TONE[3])/(255-gray),0, 0,0,0,0, 0,0,0,1) - Blend(upper, ICON_ADD) + if(gray) + MapColors(255/gray,0,0, 0,255/gray,0, 0,0,255/gray, 0,0,0) + Blend(tone, ICON_MULTIPLY) + else SetIntensity(0) + if(255-gray) + upper.Blend(rgb(gray,gray,gray), ICON_SUBTRACT) + upper.MapColors((255-TONE[1])/(255-gray),0,0,0, 0,(255-TONE[2])/(255-gray),0,0, 0,0,(255-TONE[3])/(255-gray),0, 0,0,0,0, 0,0,0,1) + Blend(upper, ICON_ADD) // Take the minimum color of two icons; combine transparency as if blending with ICON_ADD - proc/MinColors(icon) - var/icon/I = new(src) - I.Opaque() - I.Blend(icon, ICON_SUBTRACT) - Blend(I, ICON_SUBTRACT) +/icon/proc/MinColors(icon) + var/icon/I = new(src) + I.Opaque() + I.Blend(icon, ICON_SUBTRACT) + Blend(I, ICON_SUBTRACT) // Take the maximum color of two icons; combine opacity as if blending with ICON_OR - proc/MaxColors(icon) - var/icon/I - if(isicon(icon)) - I = new(icon) - else - // solid color - I = new(src) - I.Blend("#000000", ICON_OVERLAY) - I.SwapColor("#000000", null) - I.Blend(icon, ICON_OVERLAY) - var/icon/J = new(src) - J.Opaque() - I.Blend(J, ICON_SUBTRACT) - Blend(I, ICON_OR) +/icon/proc/MaxColors(icon) + var/icon/I + if(isicon(icon)) + I = new(icon) + else + // solid color + I = new(src) + I.Blend("#000000", ICON_OVERLAY) + I.SwapColor("#000000", null) + I.Blend(icon, ICON_OVERLAY) + var/icon/J = new(src) + J.Opaque() + I.Blend(J, ICON_SUBTRACT) + Blend(I, ICON_OR) // make this icon fully opaque--transparent pixels become black - proc/Opaque(background = "#000000") - SwapColor(null, background) - MapColors(1,0,0,0, 0,1,0,0, 0,0,1,0, 0,0,0,0, 0,0,0,1) +/icon/proc/Opaque(background = "#000000") + SwapColor(null, background) + MapColors(1,0,0,0, 0,1,0,0, 0,0,1,0, 0,0,0,0, 0,0,0,1) // Change a grayscale icon into a white icon where the original color becomes the alpha // I.e., black -> transparent, gray -> translucent white, white -> solid white - proc/BecomeAlphaMask() - SwapColor(null, "#000000ff") // don't let transparent become gray - MapColors(0,0,0,0.3, 0,0,0,0.59, 0,0,0,0.11, 0,0,0,0, 1,1,1,0) +/icon/proc/BecomeAlphaMask() + SwapColor(null, "#000000ff") // don't let transparent become gray + MapColors(0,0,0,0.3, 0,0,0,0.59, 0,0,0,0.11, 0,0,0,0, 1,1,1,0) - proc/UseAlphaMask(mask) - Opaque() - AddAlphaMask(mask) +/icon/proc/UseAlphaMask(mask) + Opaque() + AddAlphaMask(mask) - proc/AddAlphaMask(mask) +/icon/proc/AddAlphaMask(mask) var/icon/M = new(mask) M.Blend("#ffffff", ICON_SUBTRACT) // apply mask @@ -317,7 +316,7 @@ icon Higher value means brighter color */ -proc/ReadRGB(rgb) +/proc/ReadRGB(rgb) if(!rgb) return // interpret the HSV or HSVA value @@ -367,7 +366,7 @@ proc/ReadRGB(rgb) . = list(r, g, b) if(usealpha) . += alpha -proc/ReadHSV(hsv) +/proc/ReadHSV(hsv) if(!hsv) return // interpret the HSV or HSVA value @@ -406,7 +405,7 @@ proc/ReadHSV(hsv) . = list(hue, sat, val) if(usealpha) . += alpha -proc/HSVtoRGB(hsv) +/proc/HSVtoRGB(hsv) if(!hsv) return "#000000" var/list/HSV = ReadHSV(hsv) if(!HSV) return "#000000" @@ -434,7 +433,7 @@ proc/HSVtoRGB(hsv) return (HSV.len > 3) ? rgb(r,g,b,HSV[4]) : rgb(r,g,b) -proc/RGBtoHSV(rgb) +/proc/RGBtoHSV(rgb) if(!rgb) return "#0000000" var/list/RGB = ReadRGB(rgb) if(!RGB) return "#0000000" @@ -465,7 +464,7 @@ proc/RGBtoHSV(rgb) return hsv(hue, sat, val, (RGB.len>3 ? RGB[4] : null)) -proc/hsv(hue, sat, val, alpha) +/proc/hsv(hue, sat, val, alpha) if(hue < 0 || hue >= 1536) hue %= 1536 if(hue < 0) hue += 1536 if((hue & 0xFF) == 0xFF) @@ -498,7 +497,7 @@ proc/hsv(hue, sat, val, alpha) amount<0 or amount>1 are allowed */ -proc/BlendHSV(hsv1, hsv2, amount) +/proc/BlendHSV(hsv1, hsv2, amount) var/list/HSV1 = ReadHSV(hsv1) var/list/HSV2 = ReadHSV(hsv2) @@ -552,7 +551,7 @@ proc/BlendHSV(hsv1, hsv2, amount) amount<0 or amount>1 are allowed */ -proc/BlendRGB(rgb1, rgb2, amount) +/proc/BlendRGB(rgb1, rgb2, amount) var/list/RGB1 = ReadRGB(rgb1) var/list/RGB2 = ReadRGB(rgb2) @@ -568,10 +567,10 @@ proc/BlendRGB(rgb1, rgb2, amount) return isnull(alpha) ? rgb(r, g, b) : rgb(r, g, b, alpha) -proc/BlendRGBasHSV(rgb1, rgb2, amount) +/proc/BlendRGBasHSV(rgb1, rgb2, amount) return HSVtoRGB(RGBtoHSV(rgb1), RGBtoHSV(rgb2), amount) -proc/HueToAngle(hue) +/proc/HueToAngle(hue) // normalize hsv in case anything is screwy if(hue < 0 || hue >= 1536) hue %= 1536 if(hue < 0) hue += 1536 @@ -579,7 +578,7 @@ proc/HueToAngle(hue) hue -= hue >> 8 return hue / (1530/360) -proc/AngleToHue(angle) +/proc/AngleToHue(angle) // normalize hsv in case anything is screwy if(angle < 0 || angle >= 360) angle -= 360 * round(angle / 360) var/hue = angle * (1530/360) @@ -589,7 +588,7 @@ proc/AngleToHue(angle) // positive angle rotates forward through red->green->blue -proc/RotateHue(hsv, angle) +/proc/RotateHue(hsv, angle) var/list/HSV = ReadHSV(hsv) // normalize hsv in case anything is screwy @@ -611,13 +610,13 @@ proc/RotateHue(hsv, angle) return hsv(HSV[1], HSV[2], HSV[3], (HSV.len > 3 ? HSV[4] : null)) // Convert an rgb color to grayscale -proc/GrayScale(rgb) +/proc/GrayScale(rgb) var/list/RGB = ReadRGB(rgb) var/gray = RGB[1]*0.3 + RGB[2]*0.59 + RGB[3]*0.11 return (RGB.len > 3) ? rgb(gray, gray, gray, RGB[4]) : rgb(gray, gray, gray) // Change grayscale color to black->tone->white range -proc/ColorTone(rgb, tone) +/proc/ColorTone(rgb, tone) var/list/RGB = ReadRGB(rgb) var/list/TONE = ReadRGB(tone) @@ -833,7 +832,7 @@ The _flatIcons list is a cache for generated icon files. composite.Blend(icon(I.icon, I.icon_state, I.dir, 1), ICON_OVERLAY) return composite -proc/adjust_brightness(var/color, var/value) +/proc/adjust_brightness(var/color, var/value) if(!color) return "#FFFFFF" if(!value) return color @@ -843,7 +842,7 @@ proc/adjust_brightness(var/color, var/value) RGB[3] = Clamp(RGB[3]+value,0,255) return rgb(RGB[1],RGB[2],RGB[3]) -proc/sort_atoms_by_layer(var/list/atoms) +/proc/sort_atoms_by_layer(var/list/atoms) // Comb sort icons based on levels var/list/result = atoms.Copy() var/gap = result.len @@ -891,7 +890,7 @@ proc/sort_atoms_by_layer(var/list/atoms) /image/proc/setDir(newdir) dir = newdir -proc/rand_hex_color() +/proc/rand_hex_color() var/list/colors = list("0","1","2","3","4","5","6","7","8","9","a","b","c","d","e","f") var/color="" for(var/i=0;i<6;i++) @@ -899,7 +898,7 @@ proc/rand_hex_color() return "#[color]" //Imagine removing pixels from the main icon that are covered by pixels from the mask icon. -proc/get_icon_difference(var/icon/main, var/icon/mask) +/proc/get_icon_difference(var/icon/main, var/icon/mask) if(istype(main) && istype(mask)) mask.Blend(rgb(255,255,255), ICON_SUBTRACT) //Make all pixels on the mask as black as possible. mask.Opaque(rgb(255,255,255)) //Make the transparent pixels (background) white. diff --git a/code/__HELPERS/lists.dm b/code/__HELPERS/lists.dm index e5c5cc68b49..92fd9d218da 100644 --- a/code/__HELPERS/lists.dm +++ b/code/__HELPERS/lists.dm @@ -210,12 +210,16 @@ return null //Returns the top(last) element from the list and removes it from the list (typical stack function) -/proc/pop(list/listfrom) - if(listfrom.len > 0) - var/picked = listfrom[listfrom.len] - listfrom.len-- - return picked - return null +/proc/pop(list/L) + if(L.len) + . = L[L.len] + L.len-- + +/proc/popleft(list/L) + if(L.len) + . = L[1] + L.Cut(1,2) + /* * Sorting diff --git a/code/__HELPERS/mobs.dm b/code/__HELPERS/mobs.dm index 4ebced1c973..1ca1fe01036 100644 --- a/code/__HELPERS/mobs.dm +++ b/code/__HELPERS/mobs.dm @@ -13,25 +13,25 @@ proc/GetOppositeDir(var/dir) proc/random_underwear(gender, species = "Human") var/list/pick_list = list() switch(gender) - if(MALE) pick_list = underwear_m - if(FEMALE) pick_list = underwear_f - else pick_list = underwear_list + if(MALE) pick_list = GLOB.underwear_m + if(FEMALE) pick_list = GLOB.underwear_f + else pick_list = GLOB.underwear_list return pick_species_allowed_underwear(pick_list, species) proc/random_undershirt(gender, species = "Human") var/list/pick_list = list() switch(gender) - if(MALE) pick_list = undershirt_m - if(FEMALE) pick_list = undershirt_f - else pick_list = undershirt_list + if(MALE) pick_list = GLOB.undershirt_m + if(FEMALE) pick_list = GLOB.undershirt_f + else pick_list = GLOB.undershirt_list return pick_species_allowed_underwear(pick_list, species) proc/random_socks(gender, species = "Human") var/list/pick_list = list() switch(gender) - if(MALE) pick_list = socks_m - if(FEMALE) pick_list = socks_f - else pick_list = socks_list + if(MALE) pick_list = GLOB.socks_m + if(FEMALE) pick_list = GLOB.socks_f + else pick_list = GLOB.socks_list return pick_species_allowed_underwear(pick_list, species) proc/pick_species_allowed_underwear(list/all_picks, species) @@ -49,8 +49,8 @@ proc/pick_species_allowed_underwear(list/all_picks, species) proc/random_hair_style(var/gender, species = "Human", var/datum/robolimb/robohead) var/h_style = "Bald" var/list/valid_hairstyles = list() - for(var/hairstyle in hair_styles_public_list) - var/datum/sprite_accessory/S = hair_styles_public_list[hairstyle] + for(var/hairstyle in GLOB.hair_styles_public_list) + var/datum/sprite_accessory/S = GLOB.hair_styles_public_list[hairstyle] if(hairstyle == "Bald") //Just in case. valid_hairstyles += hairstyle @@ -78,8 +78,8 @@ proc/random_hair_style(var/gender, species = "Human", var/datum/robolimb/robohea proc/random_facial_hair_style(var/gender, species = "Human", var/datum/robolimb/robohead) var/f_style = "Shaved" var/list/valid_facial_hairstyles = list() - for(var/facialhairstyle in facial_hair_styles_list) - var/datum/sprite_accessory/S = facial_hair_styles_list[facialhairstyle] + for(var/facialhairstyle in GLOB.facial_hair_styles_list) + var/datum/sprite_accessory/S = GLOB.facial_hair_styles_list[facialhairstyle] if(facialhairstyle == "Shaved") //Just in case. valid_facial_hairstyles += facialhairstyle @@ -107,8 +107,8 @@ proc/random_facial_hair_style(var/gender, species = "Human", var/datum/robolimb/ proc/random_head_accessory(species = "Human") var/ha_style = "None" var/list/valid_head_accessories = list() - for(var/head_accessory in head_accessory_styles_list) - var/datum/sprite_accessory/S = head_accessory_styles_list[head_accessory] + for(var/head_accessory in GLOB.head_accessory_styles_list) + var/datum/sprite_accessory/S = GLOB.head_accessory_styles_list[head_accessory] if(!(species in S.species_allowed)) continue @@ -122,8 +122,8 @@ proc/random_head_accessory(species = "Human") proc/random_marking_style(var/location = "body", species = "Human", var/datum/robolimb/robohead, var/body_accessory, var/alt_head) var/m_style = "None" var/list/valid_markings = list() - for(var/marking in marking_styles_list) - var/datum/sprite_accessory/body_markings/S = marking_styles_list[marking] + for(var/marking in GLOB.marking_styles_list) + var/datum/sprite_accessory/body_markings/S = GLOB.marking_styles_list[marking] if(S.name == "None") valid_markings += marking continue @@ -139,7 +139,7 @@ proc/random_marking_style(var/location = "body", species = "Human", var/datum/ro if(!S.tails_allowed || !(body_accessory in S.tails_allowed)) continue if(location == "head") - var/datum/sprite_accessory/body_markings/head/M = marking_styles_list[S.name] + var/datum/sprite_accessory/body_markings/head/M = GLOB.marking_styles_list[S.name] if(species == "Machine")//If the user is a species that can have a robotic head... if(!robohead) robohead = all_robolimbs["Morpheus Cyberkinetics"] @@ -182,9 +182,9 @@ proc/random_name(gender, species = "Human") if(!current_species || current_species.name == "Human") if(gender==FEMALE) - return capitalize(pick(first_names_female)) + " " + capitalize(pick(last_names)) + return capitalize(pick(GLOB.first_names_female)) + " " + capitalize(pick(GLOB.last_names)) else - return capitalize(pick(first_names_male)) + " " + capitalize(pick(last_names)) + return capitalize(pick(GLOB.first_names_male)) + " " + capitalize(pick(GLOB.last_names)) else return current_species.get_random_name(gender) @@ -444,7 +444,7 @@ This is always put in the attack log. to_chat(user, "Name = [M.name]; Real_name = [M.real_name]; Mind_name = [M.mind?"[M.mind.name]":""]; Key = [M.key];") to_chat(user, "Location = [location_description];") to_chat(user, "[special_role_description]") - to_chat(user, "(PM) (PP) (VV) (SM) (FLW) (CA)") + to_chat(user, "(PM) ([ADMIN_PP(M,"PP")]) ([ADMIN_VV(M,"VV")]) ([ADMIN_SM(M,"SM")]) ([ADMIN_FLW(M,"FLW")]) (CA)") // Gets the first mob contained in an atom, and warns the user if there's not exactly one /proc/get_mob_in_atom_with_warning(atom/A, mob/user = usr) @@ -488,7 +488,7 @@ This is always put in the attack log. LogMouseMacro(".mouse", params) /proc/update_all_mob_security_hud() - for(var/mob/living/carbon/human/H in mob_list) + for(var/mob/living/carbon/human/H in GLOB.mob_list) H.sec_hud_set_security_status() /proc/getviewsize(view) diff --git a/code/__HELPERS/names.dm b/code/__HELPERS/names.dm index d6ae4ea9b1b..930a8ee9de5 100644 --- a/code/__HELPERS/names.dm +++ b/code/__HELPERS/names.dm @@ -164,11 +164,11 @@ var/syndicate_code_response//Code response for traitors. if(names.len&&prob(70)) code_phrase += pick(names) else - code_phrase += pick(pick(first_names_male,first_names_female)) + code_phrase += pick(pick(GLOB.first_names_male,GLOB.first_names_female)) code_phrase += " " - code_phrase += pick(last_names) + code_phrase += pick(GLOB.last_names) if(2) - code_phrase += pick(joblist)//Returns a job. + code_phrase += pick(GLOB.joblist)//Returns a job. safety -= 1 if(2) switch(rand(1,2))//Places or things. @@ -182,9 +182,9 @@ var/syndicate_code_response//Code response for traitors. if(1) code_phrase += pick(nouns) if(2) - code_phrase += pick(adjectives) + code_phrase += pick(GLOB.adjectives) if(3) - code_phrase += pick(verbs) + code_phrase += pick(GLOB.verbs) if(words==1) code_phrase += "." else @@ -219,9 +219,9 @@ var/syndicate_code_response//Code response for traitors. if(1) syndicate_code_phrase += pick("I'm looking for","Have you seen","Maybe you've seen","I'm trying to find","I'm tracking") syndicate_code_phrase += " " - syndicate_code_phrase += pick(pick(first_names_male,first_names_female)) + syndicate_code_phrase += pick(pick(GLOB.first_names_male,GLOB.first_names_female)) syndicate_code_phrase += " " - syndicate_code_phrase += pick(last_names) + syndicate_code_phrase += pick(GLOB.last_names) syndicate_code_phrase += "." if(2) syndicate_code_phrase += pick("How do I get to","How do I find","Where is","Where do I find") @@ -245,7 +245,7 @@ var/syndicate_code_response//Code response for traitors. if(5) syndicate_code_phrase += pick("Do we have","Is there","Where is","Where's","Who's") syndicate_code_phrase += " " - syndicate_code_phrase += "[pick(joblist)]" + syndicate_code_phrase += "[pick(GLOB.joblist)]" syndicate_code_phrase += "?" switch(choice) @@ -269,12 +269,12 @@ var/syndicate_code_response//Code response for traitors. syndicate_code_response += pick("Try asking","Ask","Talk to","Go see","Follow","Hunt down") syndicate_code_response += " " if(prob(50)) - syndicate_code_response += pick(pick(first_names_male,first_names_female)) + syndicate_code_response += pick(pick(GLOB.first_names_male,GLOB.first_names_female)) syndicate_code_response += " " - syndicate_code_response += pick(last_names) + syndicate_code_response += pick(GLOB.last_names) else syndicate_code_response += " the " - syndicate_code_response += "[pic(joblist)]" + syndicate_code_response += "[pic(GLOB.joblist)]" syndicate_code_response += "." else syndicate_code_response += pick("*shrug*","*smile*","*blink*","*sigh*","*laugh*","*nod*","*giggle*") diff --git a/code/__HELPERS/text.dm b/code/__HELPERS/text.dm index 8e9b5f93691..dbbc965411a 100644 --- a/code/__HELPERS/text.dm +++ b/code/__HELPERS/text.dm @@ -142,8 +142,8 @@ t_out += ascii2text(ascii_char) last_char_group = 2 - // ~ | @ : # $ % & * + - if(126,124,64,58,35,36,37,38,42,43) //Other symbols that we'll allow (mainly for AI) + // ~ | @ : # $ % & * + ! + if(126,124,64,58,35,36,37,38,42,43,33) //Other symbols that we'll allow (mainly for AI) if(!last_char_group) continue //suppress at start of string if(!allow_numbers) continue t_out += ascii2text(ascii_char) diff --git a/code/__HELPERS/time.dm b/code/__HELPERS/time.dm index 6ebaba5bc3b..d36fd9449d4 100644 --- a/code/__HELPERS/time.dm +++ b/code/__HELPERS/time.dm @@ -94,7 +94,7 @@ proc/isDay(var/month, var/day) return round(0.1 * (TimeOfGame - wh), 0.1) /proc/numberToMonthName(number) - return month_names.Find(number) + return GLOB.month_names.Find(number) //Take a value in seconds and returns a string of minutes and seconds in the format X minute(s) and X seconds. /proc/seconds_to_time(var/seconds as num) diff --git a/code/__HELPERS/unsorted.dm b/code/__HELPERS/unsorted.dm index e01a1fd9895..6ce486bdc05 100644 --- a/code/__HELPERS/unsorted.dm +++ b/code/__HELPERS/unsorted.dm @@ -277,7 +277,7 @@ Turf and target are seperate in case you want to teleport some distance from a t /proc/freeborg() var/select = null var/list/borgs = list() - for(var/mob/living/silicon/robot/A in player_list) + for(var/mob/living/silicon/robot/A in GLOB.player_list) if(A.stat == 2 || A.connected_ai || A.scrambledcodes || istype(A,/mob/living/silicon/robot/drone)) continue var/name = "[A.real_name] ([A.modtype] [A.braintype])" @@ -290,7 +290,7 @@ Turf and target are seperate in case you want to teleport some distance from a t //When a borg is activated, it can choose which AI it wants to be slaved to /proc/active_ais() . = list() - for(var/mob/living/silicon/ai/A in living_mob_list) + for(var/mob/living/silicon/ai/A in GLOB.living_mob_list) if(A.stat == DEAD) continue if(A.control_disabled == 1) @@ -372,7 +372,7 @@ Turf and target are seperate in case you want to teleport some distance from a t //Orders mobs by type then by name /proc/sortmobs() var/list/moblist = list() - var/list/sortmob = sortAtom(mob_list) + var/list/sortmob = sortAtom(GLOB.mob_list) for(var/mob/living/silicon/ai/M in sortmob) moblist.Add(M) if(M.eyeobj) @@ -427,7 +427,7 @@ Turf and target are seperate in case you want to teleport some distance from a t /proc/get_mob_by_ckey(key) if(!key) return - for(var/mob/M in mob_list) + for(var/mob/M in GLOB.mob_list) if(M.ckey == key) return M @@ -996,7 +996,7 @@ proc/oview_or_orange(distance = world.view , center = usr , type) proc/get_mob_with_client_list() var/list/mobs = list() - for(var/mob/M in mob_list) + for(var/mob/M in GLOB.mob_list) if(M.client) mobs += M return mobs @@ -1150,6 +1150,11 @@ var/global/list/common_tools = list( return 1 return 0 +/proc/ispowertool(O)//used to check if a tool can force powered doors + if(istype(O, /obj/item/crowbar/power) || istype(O, /obj/item/mecha_parts/mecha_equipment/medical/rescue_jaw)) + return TRUE + return FALSE + /proc/iswire(O) if(istype(O, /obj/item/stack/cable_coil)) return 1 @@ -1859,8 +1864,8 @@ var/mob/dview/dview_mob = new /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/bed = "BED", + /obj/structure/chair/stool = "STOOL", /obj/structure/table = "TABLE", /obj/structure = "STRUCTURE", /obj/vehicle = "VEHICLE", @@ -1954,7 +1959,7 @@ var/mob/dview/dview_mob = new pois[name] = M if(!mobs_only) - for(var/atom/A in poi_list) + for(var/atom/A in GLOB.poi_list) if(!A || !A.loc) continue var/name = A.name diff --git a/code/_compile_options.dm b/code/_compile_options.dm index c6b63b77271..436970567a0 100644 --- a/code/_compile_options.dm +++ b/code/_compile_options.dm @@ -18,7 +18,7 @@ #define MAX_PAPER_MESSAGE_LEN 3072 #define MAX_PAPER_FIELDS 50 #define MAX_BOOK_MESSAGE_LEN 9216 -#define MAX_NAME_LEN 26 +#define MAX_NAME_LEN 50 //diona names can get loooooooong // Version check, terminates compilation if someone is using a version of BYOND that's too old #if DM_VERSION < 510 diff --git a/code/_globalvars/lists/flavor_misc.dm b/code/_globalvars/lists/flavor_misc.dm index b71498e0636..a93e58acf7f 100644 --- a/code/_globalvars/lists/flavor_misc.dm +++ b/code/_globalvars/lists/flavor_misc.dm @@ -1,35 +1,35 @@ //Preferences stuff //Head accessory styles -var/global/list/head_accessory_styles_list = list() //stores /datum/sprite_accessory/head_accessory indexed by name +GLOBAL_LIST_INIT(head_accessory_styles_list, list()) //stores /datum/sprite_accessory/head_accessory indexed by name //Marking styles -var/global/list/marking_styles_list = list() //stores /datum/sprite_accessory/body_markings indexed by name +GLOBAL_LIST_INIT(marking_styles_list, list()) //stores /datum/sprite_accessory/body_markings indexed by name //Hairstyles -var/global/list/hair_styles_public_list = list() //stores /datum/sprite_accessory/hair indexed by name -var/global/list/hair_styles_male_list = list() -var/global/list/hair_styles_female_list = list() -var/global/list/hair_styles_full_list = list() //fluff hair styles -var/global/list/facial_hair_styles_list = list() //stores /datum/sprite_accessory/facial_hair indexed by name -var/global/list/facial_hair_styles_male_list = list() -var/global/list/facial_hair_styles_female_list = list() -var/global/list/skin_styles_female_list = list() //unused +GLOBAL_LIST_INIT(hair_styles_public_list, list()) //stores /datum/sprite_accessory/hair indexed by name +GLOBAL_LIST_INIT(hair_styles_male_list, list()) +GLOBAL_LIST_INIT(hair_styles_female_list, list()) +GLOBAL_LIST_INIT(hair_styles_full_list, list()) //fluff hair styles +GLOBAL_LIST_INIT(facial_hair_styles_list, list()) //stores /datum/sprite_accessory/facial_hair indexed by name +GLOBAL_LIST_INIT(facial_hair_styles_male_list, list()) +GLOBAL_LIST_INIT(facial_hair_styles_female_list, list()) +GLOBAL_LIST_INIT(skin_styles_female_list, list()) //unused //Underwear -var/global/list/underwear_list = list() //stores /datum/sprite_accessory/underwear indexed by name -var/global/list/underwear_m = list() //stores only underwear name -var/global/list/underwear_f = list() //stores only underwear name +GLOBAL_LIST_INIT(underwear_list, list()) //stores /datum/sprite_accessory/underwear indexed by name +GLOBAL_LIST_INIT(underwear_m, list()) //stores only underwear name +GLOBAL_LIST_INIT(underwear_f, list()) //stores only underwear name //Undershirts -var/global/list/undershirt_list = list() //stores /datum/sprite_accessory/undershirt indexed by name -var/global/list/undershirt_m = list() //stores only undershirt name -var/global/list/undershirt_f = list() //stores only undershirt name +GLOBAL_LIST_INIT(undershirt_list, list()) //stores /datum/sprite_accessory/undershirt indexed by name +GLOBAL_LIST_INIT(undershirt_m, list()) //stores only undershirt name +GLOBAL_LIST_INIT(undershirt_f, list()) //stores only undershirt name //Socks -var/global/list/socks_list = list() //stores /datum/sprite_accessory/socks indexed by name -var/global/list/socks_m = list() //stores only socks name -var/global/list/socks_f = list() //stores only socks name +GLOBAL_LIST_INIT(socks_list, list()) //stores /datum/sprite_accessory/socks indexed by name +GLOBAL_LIST_INIT(socks_m, list()) //stores only socks name +GLOBAL_LIST_INIT(socks_f, list()) //stores only socks name //Alt Heads -var/global/list/alt_heads_list = list() //stores /datum/sprite_accessory/alt_heads indexed by name +GLOBAL_LIST_INIT(alt_heads_list, list()) //stores /datum/sprite_accessory/alt_heads indexed by name -var/static/list/scarySounds = list('sound/weapons/thudswoosh.ogg','sound/weapons/Taser.ogg','sound/weapons/armbomb.ogg','sound/voice/hiss1.ogg','sound/voice/hiss2.ogg', \ +GLOBAL_LIST_INIT(scarySounds, list('sound/weapons/thudswoosh.ogg','sound/weapons/Taser.ogg','sound/weapons/armbomb.ogg','sound/voice/hiss1.ogg','sound/voice/hiss2.ogg', \ 'sound/voice/hiss3.ogg','sound/voice/hiss4.ogg','sound/voice/hiss5.ogg','sound/voice/hiss6.ogg','sound/effects/Glassbr1.ogg','sound/effects/Glassbr2.ogg','sound/effects/Glassbr3.ogg', \ -'sound/items/Welder.ogg','sound/items/Welder2.ogg','sound/machines/airlock_open.ogg','sound/effects/clownstep1.ogg','sound/effects/clownstep2.ogg') +'sound/items/Welder.ogg','sound/items/Welder2.ogg','sound/machines/airlock_open.ogg','sound/effects/clownstep1.ogg','sound/effects/clownstep2.ogg')) // Reference list for disposal sort junctions. Set the sortType variable on disposal sort junctions to // the index of the sort department that you want. For example, sortType set to 2 will reroute all packages @@ -38,30 +38,30 @@ var/static/list/scarySounds = list('sound/weapons/thudswoosh.ogg','sound/weapons //If you don't want to fuck up disposals, add to this list, and don't change the order. //If you insist on changing the order, you'll have to change every sort junction to reflect the new order. --Pete -var/list/TAGGERLOCATIONS = list("Disposals", +GLOBAL_LIST_INIT(TAGGERLOCATIONS, list("Disposals", "Cargo Bay", "QM Office", "Engineering", "CE Office", "Atmospherics", "HoS Office", "Security", "Medbay", "CMO Office", "Chemistry", "Research", "RD Office", "Robotics", "HoP Office", "Library", "Chapel", "Captain's Office", - "Bar", "Kitchen", "Hydroponics", "Janitor Closet","Genetics","Brig Physician") + "Bar", "Kitchen", "Hydroponics", "Janitor Closet","Genetics","Brig Physician")) -var/list/hit_appends = list("-OOF", "-ACK", "-UGH", "-HRNK", "-HURGH", "-GLORF") +GLOBAL_LIST_INIT(hit_appends, list("-OOF", "-ACK", "-UGH", "-HRNK", "-HURGH", "-GLORF")) -var/global/list/greek_letters = list("Alpha", "Beta", "Gamma", "Delta", +GLOBAL_LIST_INIT(greek_letters, list("Alpha", "Beta", "Gamma", "Delta", "Epsilon", "Zeta", "Eta", "Theta", "Iota", "Kappa", "Lambda", "Mu", "Nu", "Xi", "Omicron", "Pi", "Rho", "Sigma", "Tau", "Upsilon", "Phi", - "Chi", "Psi", "Omega") + "Chi", "Psi", "Omega")) -var/global/list/phonetic_alphabet = list("Alpha", "Bravo", "Charlie", +GLOBAL_LIST_INIT(phonetic_alphabet, list("Alpha", "Bravo", "Charlie", "Delta", "Echo", "Foxtrot", "Golf", "Hotel", "India", "Juliet", "Kilo", "Lima", "Mike", "November", "Oscar", "Papa", "Quebec", "Romeo", "Sierra", "Tango", "Uniform", "Victor", "Whiskey", "X-ray", - "Yankee", "Zulu") + "Yankee", "Zulu")) -var/global/list/numbers_as_words = list("One", "Two", "Three", "Four", +GLOBAL_LIST_INIT(numbers_as_words, list("One", "Two", "Three", "Four", "Five", "Six", "Seven", "Eight", "Nine", "Ten", "Eleven", "Twelve", "Thirteen", "Fourteen", "Fifteen", "Sixteen", "Seventeen", - "Eighteen", "Nineteen") + "Eighteen", "Nineteen")) //Backpacks #define GBACKPACK "Grey Backpack" @@ -71,4 +71,4 @@ var/global/list/numbers_as_words = list("One", "Two", "Three", "Four", #define DBACKPACK "Department Backpack" #define DSATCHEL "Department Satchel" #define DDUFFLEBAG "Department Dufflebag" -var/global/list/backbaglist = list(DBACKPACK, DSATCHEL, DDUFFLEBAG, GBACKPACK, GSATCHEL, GDUFFLEBAG, LSATCHEL) +GLOBAL_LIST_INIT(backbaglist, list(DBACKPACK, DSATCHEL, DDUFFLEBAG, GBACKPACK, GSATCHEL, GDUFFLEBAG, LSATCHEL)) diff --git a/code/_globalvars/lists/misc.dm b/code/_globalvars/lists/misc.dm index 8a06b552db2..e9c50b0f662 100644 --- a/code/_globalvars/lists/misc.dm +++ b/code/_globalvars/lists/misc.dm @@ -1,13 +1,28 @@ -var/global/list/alphabet = list("a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","p","q","r","s","t","u","v","w","x","y","z") -var/global/list/alphabet_uppercase = list("A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z") -var/global/list/zero_character_only = list("0") -var/global/list/hex_characters = list("0","1","2","3","4","5","6","7","8","9","a","b","c","d","e","f") -var/global/list/binary = list("0","1") +GLOBAL_LIST_INIT(alphabet, list("a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","p","q","r","s","t","u","v","w","x","y","z")) +GLOBAL_LIST_INIT(alphabet_uppercase, list("A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z")) +GLOBAL_LIST_INIT(zero_character_only, list("0")) +GLOBAL_LIST_INIT(hex_characters, list("0","1","2","3","4","5","6","7","8","9","a","b","c","d","e","f")) +GLOBAL_LIST_INIT(binary, list("0","1")) +GLOBAL_LIST_INIT(html_colors, list("Alice Blue","Antique White","Aqua","Aquamarine","Azure","Beige","Bisque","Black","Blanched Almond","Blue","Blue Violet", + "Brown","Burly Wood","Cadet Blue","Chartreuse","Chocolate","Coral","Cornflower Blue","Cornsilk","Crimson","Cyan", + "Dark Blue","Dark Cyan","Dark Golden Rod","Dark Gray","Dark Green","Dark Khaki","Dark Magenta","Dark Olive Green", + "Dark Orange","Dark Orchid","Dark Red","Dark Salmon","Dark Sea Green","Dark Slate Blue","Dark Slate Gray", + "Dark Turquoise","Dark Violet","Deep Pink","Deep Sky Blue","Dim Gray","Dodger Blue","Fire Brick","Floral White", + "Forest Green","Fuchsia","Gainsboro","Ghost White","Gold","Golden Rod","Gray","Grey","Green","Green Yellow","Honey Dew", + "Hot Pink","Indian Red","Indigo","Ivory","Khaki","Lavender","Lavender Blush","Lawn Green","Lemon Chiffon","Light Blue", + "Light Coral","Light Cyan","Light Golden Rod Yellow","Light Gray","Light Green","Light Pink","Light Salmon","Light Sea Green", + "Light Sky Blue","Light Slate Gray","Light Steel Blue","Light Yellow","Lime","Lime Green","Linen","Magenta","Maroon", + "Medium Aquamarine","Medium Blue","Medium Orchid","Medium Purple","Medium Seagreen","Medium Slate Blue","Medium Spring Green", + "Medium Turquoise","Medium Violet Red","Midnight Blue","Mint Cream","Misty Rose","Moccasin","Navajo White","Navy","Old Lace", + "Olive","Olive Drab","Orange","Orange Red","Orchid","Pale Golden Rod","Pale Green","Pale Turquoise","Pale Violet Red", + "Papaya Whip","Peach Puff","Peru","Pink","Plum","Powder Blue","Purple","Red","Rosy Brown","Royal Blue","Saddle Brown", + "Salmon","Sandy Brown","Sea Green","Sea Shell","Sienna","Silver","Sky Blue","Slate Blue","Slate Gray","Snow","Spring Green", + "Steel Blue","Tan","Teal","Thistle","Tomato","Turquoise","Violet","Wheat","White","White Smoke","Yellow","Yellow Green")) -var/global/list/day_names = list("Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday", "Sunday") -var/global/list/month_names = list("January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December") +GLOBAL_LIST_INIT(day_names, list("Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday", "Sunday")) +GLOBAL_LIST_INIT(month_names, list("January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December")) -var/list/restricted_camera_networks = list( //Those networks can only be accessed by preexisting terminals. AIs and new terminals can't use them. +GLOBAL_LIST_INIT(restricted_camera_networks, list( "CentComm", "ERT", "NukeOps", @@ -17,19 +32,19 @@ var/list/restricted_camera_networks = list( //Those networks can only be accesse "UO71", "Xeno", "Hotel" - ) + )) //Those networks can only be accessed by preexisting terminals. AIs and new terminals can't use them. -var/list/mineral_turfs = list() +GLOBAL_LIST_INIT(mineral_turfs, list()) -var/list/ruin_landmarks = list() +GLOBAL_LIST_INIT(ruin_landmarks, list()) -var/list/round_end_sounds = list( // Maps available round end sounds to their duration +GLOBAL_LIST_INIT(round_end_sounds, list( 'sound/AI/newroundsexy.ogg' = 2.3 SECONDS, 'sound/misc/apcdestroyed.ogg' = 3 SECONDS, 'sound/misc/bangindonk.ogg' = 1.6 SECONDS, 'sound/goonstation/misc/newround1.ogg' = 6.9 SECONDS, 'sound/goonstation/misc/newround2.ogg' = 14.8 SECONDS - ) + )) // Maps available round end sounds to their duration GLOBAL_LIST_INIT(cooking_recipe_types, list( RECIPE_MICROWAVE = /datum/recipe/microwave, diff --git a/code/_globalvars/lists/mobs.dm b/code/_globalvars/lists/mobs.dm index 7cc456f9440..ff902473329 100644 --- a/code/_globalvars/lists/mobs.dm +++ b/code/_globalvars/lists/mobs.dm @@ -1,34 +1,34 @@ //Languages/species/whitelist. //Languages and species fit with mobs right GLOBAL_LIST_EMPTY(all_species) -var/global/list/all_languages[0] -var/global/list/language_keys[0] // Table of say codes for all languages -var/global/list/all_superheroes[0] -var/global/list/all_nations[0] -var/global/list/whitelisted_species = list() +GLOBAL_LIST_EMPTY(all_languages) +GLOBAL_LIST_EMPTY(language_keys) // Table of say codes for all languages +GLOBAL_LIST_EMPTY(all_superheroes) +GLOBAL_LIST_EMPTY(all_nations) +GLOBAL_LIST_INIT(whitelisted_species, list()) -var/list/clients = list() //list of all clients -var/list/admins = list() //list of all clients whom are admins -var/list/deadmins = list() //list of all clients who have used the de-admin verb. -var/list/directory = list() //list of all ckeys with associated client -var/list/stealthminID = list() //reference list with IDs that store ckeys, for stealthmins +GLOBAL_LIST_INIT(clients, list()) //list of all clients +GLOBAL_LIST_INIT(admins, list()) //list of all clients whom are admins +GLOBAL_LIST_INIT(deadmins, list()) //list of all clients who have used the de-admin verb. +GLOBAL_LIST_INIT(directory, list()) //list of all ckeys with associated client +GLOBAL_LIST_INIT(stealthminID, list()) //reference list with IDs that store ckeys, for stealthmins //Since it didn't really belong in any other category, I'm putting this here //This is for procs to replace all the goddamn 'in world's that are chilling around the code -var/global/list/player_list = list() //List of all mobs **with clients attached**. Excludes /mob/new_player -var/global/list/mob_list = list() //List of all mobs, including clientless -var/global/list/silicon_mob_list = list() //List of all silicon mobs, including clientless -var/global/list/spirits = list() //List of all the spirits, including Masks -var/global/list/living_mob_list = list() //List of all alive mobs, including clientless. Excludes /mob/new_player -var/global/list/dead_mob_list = list() //List of all dead mobs, including clientless. Excludes /mob/new_player -var/global/list/respawnable_list = list() //List of all mobs, dead or in mindless creatures that still be respawned. -var/global/list/non_respawnable_keys = list() //List of ckeys that are excluded from respawning for remainder of round. -var/global/list/simple_animal_list = list() //List of all simple animals, including clientless -var/global/list/snpc_list = list() //List of all snpc's, including clientless -var/global/list/bots_list = list() //List of all bots(beepsky, medibots,etc) +GLOBAL_LIST_INIT(player_list, list()) //List of all mobs **with clients attached**. Excludes /mob/new_player +GLOBAL_LIST_INIT(mob_list, list()) //List of all mobs, including clientless +GLOBAL_LIST_INIT(silicon_mob_list, list()) //List of all silicon mobs, including clientless +GLOBAL_LIST_INIT(spirits, list()) //List of all the spirits, including Masks +GLOBAL_LIST_INIT(living_mob_list, list()) //List of all alive mobs, including clientless. Excludes /mob/new_player +GLOBAL_LIST_INIT(dead_mob_list, list()) //List of all dead mobs, including clientless. Excludes /mob/new_player +GLOBAL_LIST_INIT(respawnable_list, list()) //List of all mobs, dead or in mindless creatures that still be respawned. +GLOBAL_LIST_INIT(non_respawnable_keys, list()) //List of ckeys that are excluded from respawning for remainder of round. +GLOBAL_LIST_INIT(simple_animal_list, list()) //List of all simple animals, including clientless +GLOBAL_LIST_INIT(snpc_list, list()) //List of all snpc's, including clientless +GLOBAL_LIST_INIT(bots_list, list()) //List of all bots(beepsky, medibots,etc) -var/global/list/med_hud_users = list() -var/global/list/sec_hud_users = list() -var/global/list/antag_hud_users = list() -var/global/list/surgeries_list = list() -var/global/list/hear_radio_list = list() //Mobs that hear the radio even if there's no client +GLOBAL_LIST_INIT(med_hud_users, list()) +GLOBAL_LIST_INIT(sec_hud_users, list()) +GLOBAL_LIST_INIT(antag_hud_users, list()) +GLOBAL_LIST_INIT(surgeries_list, list()) +GLOBAL_LIST_INIT(hear_radio_list, list()) //Mobs that hear the radio even if there's no client diff --git a/code/_globalvars/lists/names.dm b/code/_globalvars/lists/names.dm index f403695b0f6..e88c2dfbb28 100644 --- a/code/_globalvars/lists/names.dm +++ b/code/_globalvars/lists/names.dm @@ -1,20 +1,20 @@ -var/list/ai_names = file2list("config/names/ai.txt") -var/list/wizard_first = file2list("config/names/wizardfirst.txt") -var/list/wizard_second = file2list("config/names/wizardsecond.txt") -var/list/ninja_titles = file2list("config/names/ninjatitle.txt") -var/list/ninja_names = file2list("config/names/ninjaname.txt") -var/list/commando_names = file2list("config/names/death_commando.txt") -var/list/first_names_male = file2list("config/names/first_male.txt") -var/list/first_names_female = file2list("config/names/first_female.txt") -var/list/last_names = file2list("config/names/last.txt") -var/list/clown_names = file2list("config/names/clown.txt") -var/list/mime_names = file2list("config/names/mime.txt") +GLOBAL_LIST_INIT(ai_names, file2list("config/names/ai.txt")) +GLOBAL_LIST_INIT(wizard_first, file2list("config/names/wizardfirst.txt")) +GLOBAL_LIST_INIT(wizard_second, file2list("config/names/wizardsecond.txt")) +GLOBAL_LIST_INIT(ninja_titles, file2list("config/names/ninjatitle.txt")) +GLOBAL_LIST_INIT(ninja_names, file2list("config/names/ninjaname.txt")) +GLOBAL_LIST_INIT(commando_names, file2list("config/names/death_commando.txt")) +GLOBAL_LIST_INIT(first_names_male, file2list("config/names/first_male.txt")) +GLOBAL_LIST_INIT(first_names_female, file2list("config/names/first_female.txt")) +GLOBAL_LIST_INIT(last_names, file2list("config/names/last.txt")) +GLOBAL_LIST_INIT(clown_names, file2list("config/names/clown.txt")) +GLOBAL_LIST_INIT(mime_names, file2list("config/names/mime.txt")) -var/list/verbs = file2list("config/names/verbs.txt") -var/list/adjectives = file2list("config/names/adjectives.txt") -var/list/dream_strings = file2list("config/names/dreams.txt") -var/list/nightmare_strings = file2list("config/names/nightmares.txt") +GLOBAL_LIST_INIT(verbs, file2list("config/names/verbs.txt")) +GLOBAL_LIST_INIT(adjectives, file2list("config/names/adjectives.txt")) +GLOBAL_LIST_INIT(dream_strings, file2list("config/names/dreams.txt")) +GLOBAL_LIST_INIT(nightmare_strings, file2list("config/names/nightmares.txt")) //loaded on startup because of " //would include in rsc if ' was used -var/list/vox_name_syllables = list("ti","hi","ki","ya","ta","ha","ka","ya","chi","cha","kah") \ No newline at end of file +GLOBAL_LIST_INIT(vox_name_syllables, list("ti","hi","ki","ya","ta","ha","ka","ya","chi","cha","kah")) \ No newline at end of file diff --git a/code/_globalvars/lists/objects.dm b/code/_globalvars/lists/objects.dm index 0070d5efb1f..33c2c68a48f 100644 --- a/code/_globalvars/lists/objects.dm +++ b/code/_globalvars/lists/objects.dm @@ -1,48 +1,48 @@ -var/global/list/portals = list() //for use by portals +GLOBAL_LIST_INIT(portals, list()) //for use by portals GLOBAL_LIST(cable_list) //Index for all cables, so that powernets don't have to look through the entire world all the time -var/global/list/chemical_reactions_list //list of all /datum/chemical_reaction datums. Used during chemical reactions -var/global/list/chemical_reagents_list //list of all /datum/reagent datums indexed by reagent id. Used by chemistry stuff -var/global/list/landmarks_list = list() //list of all landmarks created -var/global/list/surgery_steps = list() //list of all surgery steps |BS12 -var/global/list/side_effects = list() //list of all medical sideeffects types by thier names |BS12 -var/global/list/mechas_list = list() //list of all mechs. Used by hostile mobs target tracking. -var/global/list/spacepods_list = list() //list of all space pods. Used by hostile mobs target tracking. -var/global/list/joblist = list() //list of all jobstypes, minus borg and AI -var/global/list/airlocks = list() //list of all airlocks -var/global/list/singularities = list() //list of all singularities -var/global/list/janitorial_equipment = list() //list of janitorial equipment -var/global/list/crafting_recipes = list() //list of all crafting recipes -var/global/list/prisoncomputer_list = list() -var/global/list/cell_logs = list() +GLOBAL_LIST(chemical_reactions_list) //list of all /datum/chemical_reaction datums. Used during chemical reactions +GLOBAL_LIST(chemical_reagents_list) //list of all /datum/reagent datums indexed by reagent id. Used by chemistry stuff +GLOBAL_LIST_INIT(landmarks_list, list()) //list of all landmarks created +GLOBAL_LIST_INIT(surgery_steps, list()) //list of all surgery steps |BS12 +GLOBAL_LIST_INIT(side_effects, list()) //list of all medical sideeffects types by thier names |BS12 +GLOBAL_LIST_INIT(mechas_list, list()) //list of all mechs. Used by hostile mobs target tracking. +GLOBAL_LIST_INIT(spacepods_list, list()) //list of all space pods. Used by hostile mobs target tracking. +GLOBAL_LIST_INIT(joblist, list()) //list of all jobstypes, minus borg and AI +GLOBAL_LIST_INIT(airlocks, list()) //list of all airlocks +GLOBAL_LIST_INIT(singularities, list()) //list of all singularities +GLOBAL_LIST_INIT(janitorial_equipment, list()) //list of janitorial equipment +GLOBAL_LIST_INIT(crafting_recipes, list()) //list of all crafting recipes +GLOBAL_LIST_INIT(prisoncomputer_list, list()) +GLOBAL_LIST_INIT(cell_logs, list()) -var/global/list/all_areas = list() -var/global/list/machines = list() -var/global/list/fast_processing = list() -var/global/list/processing_power_items = list() //items that ask to be called every cycle -var/global/list/rcd_list = list() //list of Rapid Construction Devices. +GLOBAL_LIST_INIT(all_areas, list()) +GLOBAL_LIST_INIT(machines, list()) +GLOBAL_LIST_INIT(fast_processing, list()) +GLOBAL_LIST_INIT(processing_power_items, list()) //items that ask to be called every cycle +GLOBAL_LIST_INIT(rcd_list, list()) //list of Rapid Construction Devices. -var/global/list/apcs = list() -var/global/list/air_alarms = list() -var/global/list/power_monitors = list() -var/global/list/all_vent_pumps = list() +GLOBAL_LIST_INIT(apcs, list()) +GLOBAL_LIST_INIT(air_alarms, list()) +GLOBAL_LIST_INIT(power_monitors, list()) +GLOBAL_LIST_INIT(all_vent_pumps, list()) -var/global/list/navbeacons = list() //list of all bot nagivation beacons, used for patrolling. -var/global/list/deliverybeacons = list() //list of all MULEbot delivery beacons. -var/global/list/deliverybeacontags = list() //list of all tags associated with delivery beacons. +GLOBAL_LIST_INIT(navbeacons, list()) //list of all bot nagivation beacons, used for patrolling. +GLOBAL_LIST_INIT(deliverybeacons, list()) //list of all MULEbot delivery beacons. +GLOBAL_LIST_INIT(deliverybeacontags, list()) //list of all tags associated with delivery beacons. -var/global/list/beacons = list() -var/global/list/shuttle_caller_list = list() //list of all communication consoles, comms consoles circuit and AIs, for automatic shuttle calls when there are none. -var/global/list/tracked_implants = list() //list of all current implants that are tracked to work out what sort of trek everyone is on. Sadly not on lavaworld not implemented... -var/global/list/pinpointer_list = list() //list of all pinpointers. Used to change stuff they are pointing to all at once. -var/global/list/abductor_equipment = list() //list of all abductor equipment +GLOBAL_LIST_INIT(beacons, list()) +GLOBAL_LIST_INIT(shuttle_caller_list, list()) //list of all communication consoles, comms consoles circuit and AIs, for automatic shuttle calls when there are none. +GLOBAL_LIST_INIT(tracked_implants, list()) //list of all current implants that are tracked to work out what sort of trek everyone is on. Sadly not on lavaworld not implemented... +GLOBAL_LIST_INIT(pinpointer_list, list()) //list of all pinpointers. Used to change stuff they are pointing to all at once. +GLOBAL_LIST_INIT(abductor_equipment, list()) //list of all abductor equipment -var/global/list/global_intercoms = list() //list of all intercomms, across all z-levels -var/global/list/global_radios = list() //list of all radios, across all z-levels +GLOBAL_LIST_INIT(global_intercoms, list()) //list of all intercomms, across all z-levels +GLOBAL_LIST_INIT(global_radios, list()) //list of all radios, across all z-levels -var/global/list/meteor_list = list() //list of all meteors -var/global/list/poi_list = list() //list of points of interest for observe/follow -var/global/list/active_jammers = list() // List of active radio jammers +GLOBAL_LIST_INIT(meteor_list, list()) //list of all meteors +GLOBAL_LIST_INIT(poi_list, list()) //list of points of interest for observe/follow +GLOBAL_LIST_INIT(active_jammers, list()) // List of active radio jammers -var/global/list/active_diseases = list() //List of Active disease in all mobs; purely for quick referencing. +GLOBAL_LIST_INIT(active_diseases, list()) //List of Active disease in all mobs; purely for quick referencing. -GLOBAL_LIST_EMPTY(mob_spawners) // All mob_spawn objects \ No newline at end of file +GLOBAL_LIST_EMPTY(mob_spawners) // All mob_spawn objects diff --git a/code/_globalvars/lists/reagents.dm b/code/_globalvars/lists/reagents.dm index 30809943a8a..daa2d634b9f 100644 --- a/code/_globalvars/lists/reagents.dm +++ b/code/_globalvars/lists/reagents.dm @@ -1,9 +1,9 @@ // Base chemicals -var/list/base_chemicals = list("water","oxygen","nitrogen","hydrogen","potassium","mercury","carbon", +GLOBAL_LIST_INIT(base_chemicals, list("water","oxygen","nitrogen","hydrogen","potassium","mercury","carbon", "chlorine","fluorine","phosphorus","lithium","sulfur","sacid","radium", - "iron","aluminum","silicon","sugar","ethanol") + "iron","aluminum","silicon","sugar","ethanol")) // Standard chemicals -var/list/standard_chemicals = list("slimejelly","blood","water","lube","charcoal","toxin","cyanide", +GLOBAL_LIST_INIT(standard_chemicals, list("slimejelly","blood","water","lube","charcoal","toxin","cyanide", "morphine","epinephrine","space_drugs","serotrotium","oxygen","copper", "nitrogen","hydrogen","potassium","mercury","sulfur","carbon","chlorine", "fluorine","sodium","phosphorus","lithium","sugar","sacid","facid", @@ -15,21 +15,21 @@ var/list/standard_chemicals = list("slimejelly","blood","water","lube","charcoal "cryoxadone","spaceacillin","carpotoxin","lsd","fluorosurfactant", "fluorosurfactant","ethanol","ammonia","diethylamine","antihol","pancuronium", "lipolicide","condensedcapsaicin","frostoil","amanitin","psilocybin", - "enzyme","nothing","salglu_solution","antifreeze","neurotoxin") + "enzyme","nothing","salglu_solution","antifreeze","neurotoxin")) // Rare chemicals -var/list/rare_chemicals = list("minttoxin","syndicate_nanites", "xenomicrobes") +GLOBAL_LIST_INIT(rare_chemicals, list("minttoxin","syndicate_nanites", "xenomicrobes")) // Standard medicines -var/list/standard_medicines = list("charcoal","toxin","cyanide","morphine","epinephrine","space_drugs", +GLOBAL_LIST_INIT(standard_medicines, list("charcoal","toxin","cyanide","morphine","epinephrine","space_drugs", "serotrotium","mutadone","mutagen","teporone","lexorin","silver_sulfadiazine", "salbutamol","perfluorodecalin","omnizine","synaptizine","haloperidol", "potass_iodide","pen_acid","mannitol","oculine","styptic_powder", "methamphetamine","spaceacillin","carpotoxin","lsd","ethanol","ammonia", "diethylamine","antihol","pancuronium","lipolicide","condensedcapsaicin", - "frostoil","amanitin","psilocybin","nothing","salglu_solution","neurotoxin") + "frostoil","amanitin","psilocybin","nothing","salglu_solution","neurotoxin")) // Rare medicines -var/list/rare_medicines = list("syndicate_nanites","minttoxin","blood", "xenomicrobes") +GLOBAL_LIST_INIT(rare_medicines, list("syndicate_nanites","minttoxin","blood", "xenomicrobes")) // Drinks -var/list/drinks = list("beer2","hot_coco","orangejuice","tomatojuice","limejuice","carrotjuice", +GLOBAL_LIST_INIT(drinks, list("beer2","hot_coco","orangejuice","tomatojuice","limejuice","carrotjuice", "berryjuice","poisonberryjuice","watermelonjuice","lemonjuice","banana", "nothing","potato","milk","soymilk","cream","coffee","tea","icecoffee", "icetea","cola","nuka_cola","spacemountainwind","thirteenloko","dr_gibb", @@ -44,10 +44,13 @@ var/list/drinks = list("beer2","hot_coco","orangejuice","tomatojuice","limejuice "vodkatonic","ginfizz","bahama_mama","singulo","sbiten","devilskiss","red_mead", "mead","iced_beer","grog","aloe","andalusia","alliescocktail","soy_latte", "cafe_latte","acidspit","amasec","neurotoxin","hippiesdelight","bananahonk", - "silencer","changelingsting","irishcarbomb","syndicatebomb","erikasurprise","driestmartini", "flamingmoe") + "silencer","changelingsting","irishcarbomb","syndicatebomb","erikasurprise","driestmartini", "flamingmoe")) + +//Liver Toxins list +GLOBAL_LIST_INIT(liver_toxins, list("toxin", "plasma", "sacid", "facid", "cyanide","amanitin", "carpotoxin")) //Random chem blacklist -var/global/list/blocked_chems = list("polonium", "initropidril", "concentrated_initro", +GLOBAL_LIST_INIT(blocked_chems, list("polonium", "initropidril", "concentrated_initro", "sodium_thiopental", "ketamine", "coniine", "adminordrazine", "nanites", "hellwater", "mutationtoxin", "amutationtoxin", "venom", @@ -55,9 +58,9 @@ var/global/list/blocked_chems = list("polonium", "initropidril", "concentrated_i "syndicate_nanites", "ripping_tendrils", "boiling_oil", "envenomed_filaments", "lexorin_jelly", "kinetic", "cryogenic_liquid", "dark_matter", "b_sorium", - "reagent", "life","dragonsbreath", "nanocalcium") + "reagent", "life","dragonsbreath", "nanocalcium")) -var/global/list/safe_chem_list = list("antihol", "charcoal", "epinephrine", "insulin", "teporone","silver_sulfadiazine", "salbutamol", +GLOBAL_LIST_INIT(safe_chem_list, list("antihol", "charcoal", "epinephrine", "insulin", "teporone","silver_sulfadiazine", "salbutamol", "omnizine", "stimulants", "synaptizine", "potass_iodide", "oculine", "mannitol", "styptic_powder", "spaceacillin", "salglu_solution", "sal_acid", "cryoxadone", "blood", "synthflesh", "hydrocodone", - "mitocholide", "rezadone") \ No newline at end of file + "mitocholide", "rezadone")) \ No newline at end of file diff --git a/code/_globalvars/unused.dm b/code/_globalvars/unused.dm index 3925ea1237e..6f55887ee66 100644 --- a/code/_globalvars/unused.dm +++ b/code/_globalvars/unused.dm @@ -18,7 +18,6 @@ var/list/liftable_structures = list(\ /obj/machinery/space_heater, \ /obj/machinery/recharge_station, \ /obj/machinery/flasher, \ - /obj/structure/stool, \ /obj/structure/closet, \ /obj/machinery/photocopier, \ /obj/structure/filingcabinet, \ @@ -31,4 +30,3 @@ var/endicon = null var/datum/air_tunnel/air_tunnel1/SS13_airtunnel = null var/going = 1.0 var/datum/engine_eject/engine_eject_control = null - diff --git a/code/_onclick/ai.dm b/code/_onclick/ai.dm index 0b51e52d3ea..c84a64722c5 100644 --- a/code/_onclick/ai.dm +++ b/code/_onclick/ai.dm @@ -32,6 +32,14 @@ return changeNext_click(1) + if(multicam_on) + var/turf/T = get_turf(A) + if(T) + for(var/obj/screen/movable/pic_in_pic/ai/P in T.vis_locs) + if(P.ai == src) + P.Click(params) + break + if(control_disabled || stat) return diff --git a/code/_onclick/click.dm b/code/_onclick/click.dm index 006f350873b..8ce2177751c 100644 --- a/code/_onclick/click.dm +++ b/code/_onclick/click.dm @@ -236,6 +236,8 @@ Makes the mob face the direction of the clicked thing */ /mob/proc/MiddleShiftClickOn(atom/A) + if(incapacitated()) + return var/face_dir = get_cardinal_dir(src, A) if(forced_look == face_dir) forced_look = null diff --git a/code/_onclick/hud/_defines.dm b/code/_onclick/hud/_defines.dm index 29fef068cce..3a847412fcb 100644 --- a/code/_onclick/hud/_defines.dm +++ b/code/_onclick/hud/_defines.dm @@ -146,6 +146,8 @@ #define ui_ai_take_picture "SOUTH:6,WEST+12" #define ui_ai_view_images "SOUTH:6,WEST+13" #define ui_ai_sensor "SOUTH:6,WEST+14" +#define ui_ai_multicam "SOUTH+1:6,WEST+13" +#define ui_ai_add_multicam "SOUTH+1:6,WEST+14" // Bots #define ui_bot_radio "EAST-1:28,SOUTH:7" diff --git a/code/_onclick/hud/ai.dm b/code/_onclick/hud/ai.dm index c8864f36d8a..0b1a6d1c6c4 100644 --- a/code/_onclick/hud/ai.dm +++ b/code/_onclick/hud/ai.dm @@ -140,6 +140,25 @@ var/mob/living/silicon/robot/borg = usr borg.sensor_mode() +/obj/screen/ai/multicam + name = "Multicamera Mode" + icon_state = "multicam" + +/obj/screen/ai/multicam/Click() + if(..()) + return + var/mob/living/silicon/ai/AI = usr + AI.toggle_multicam() + +/obj/screen/ai/add_multicam + name = "New Camera" + icon_state = "new_cam" + +/obj/screen/ai/add_multicam/Click() + if(..()) + return + var/mob/living/silicon/ai/AI = usr + AI.drop_new_multicam() /mob/living/silicon/ai/create_mob_hud() if(client && !hud_used) @@ -228,3 +247,13 @@ using = new /obj/screen/ai/sensors() using.screen_loc = ui_ai_sensor static_inventory += using + +//Multicamera mode + using = new /obj/screen/ai/multicam() + using.screen_loc = ui_ai_multicam + static_inventory += using + +//Add multicamera camera + using = new /obj/screen/ai/add_multicam() + using.screen_loc = ui_ai_add_multicam + static_inventory += using \ No newline at end of file diff --git a/code/_onclick/hud/picture_in_picture.dm b/code/_onclick/hud/picture_in_picture.dm new file mode 100644 index 00000000000..bbac6e36df3 --- /dev/null +++ b/code/_onclick/hud/picture_in_picture.dm @@ -0,0 +1,144 @@ +/obj/screen/movable/pic_in_pic + name = "Picture-in-picture" + screen_loc = "CENTER" + plane = GAME_PLANE + var/atom/center + var/width = 0 + var/height = 0 + var/list/shown_to = list() + var/list/viewing_turfs = list() + var/obj/screen/component_button/button_x + var/obj/screen/component_button/button_expand + var/obj/screen/component_button/button_shrink + + var/mutable_appearance/standard_background + var/const/max_dimensions = 10 + +/obj/screen/movable/pic_in_pic/Initialize() + . = ..() + make_backgrounds() + +/obj/screen/movable/pic_in_pic/Destroy() + for(var/C in shown_to) + unshow_to(C) + QDEL_NULL(button_x) + QDEL_NULL(button_shrink) + QDEL_NULL(button_expand) + return ..() + +/obj/screen/movable/pic_in_pic/component_click(obj/screen/component_button/component, params) + if(component == button_x) + qdel(src) + else if(component == button_expand) + set_view_size(width+1, height+1) + else if(component == button_shrink) + set_view_size(width-1, height-1) + +/obj/screen/movable/pic_in_pic/proc/make_backgrounds() + standard_background = new /mutable_appearance() + standard_background.icon = 'icons/misc/pic_in_pic.dmi' + standard_background.icon_state = "background" + standard_background.layer = SPACE_LAYER + +/obj/screen/movable/pic_in_pic/proc/add_buttons() + var/static/mutable_appearance/move_tab + if(!move_tab) + move_tab = new /mutable_appearance() + //all these properties are always the same, and since adding something to the overlay + //list makes a copy, there is no reason to make a new one each call + move_tab.icon = 'icons/misc/pic_in_pic.dmi' + move_tab.icon_state = "move" + move_tab.plane = HUD_PLANE + var/matrix/M = matrix() + M.Translate(0, (height + 0.25) * world.icon_size) + move_tab.transform = M + overlays += move_tab + + if(!button_x) + button_x = new /obj/screen/component_button(null, src) + var/mutable_appearance/MA = new /mutable_appearance() + MA.name = "close" + MA.icon = 'icons/misc/pic_in_pic.dmi' + MA.icon_state = "x" + MA.plane = HUD_PLANE + button_x.appearance = MA + M = matrix() + M.Translate((max(4, width) - 0.75) * world.icon_size, (height + 0.25) * world.icon_size) + button_x.transform = M + vis_contents += button_x + + if(!button_expand) + button_expand = new /obj/screen/component_button(null, src) + var/mutable_appearance/MA = new /mutable_appearance() + MA.name = "expand" + MA.icon = 'icons/misc/pic_in_pic.dmi' + MA.icon_state = "expand" + MA.plane = HUD_PLANE + button_expand.appearance = MA + M = matrix() + M.Translate(world.icon_size, (height + 0.25) * world.icon_size) + button_expand.transform = M + vis_contents += button_expand + + if(!button_shrink) + button_shrink = new /obj/screen/component_button(null, src) + var/mutable_appearance/MA = new /mutable_appearance() + MA.name = "shrink" + MA.icon = 'icons/misc/pic_in_pic.dmi' + MA.icon_state = "shrink" + MA.plane = HUD_PLANE + button_shrink.appearance = MA + M = matrix() + M.Translate(2 * world.icon_size, (height + 0.25) * world.icon_size) + button_shrink.transform = M + vis_contents += button_shrink + +/obj/screen/movable/pic_in_pic/proc/add_background() + if((width > 0) && (height > 0)) + var/matrix/M = matrix() + M.Scale(width + 0.5, height + 0.5) + M.Translate((width-1)/2 * world.icon_size, (height-1)/2 * world.icon_size) + standard_background.transform = M + overlays += standard_background + +/obj/screen/movable/pic_in_pic/proc/set_view_size(width, height, do_refresh = TRUE) + width = Clamp(width, 0, max_dimensions) + height = Clamp(height, 0, max_dimensions) + src.width = width + src.height = height + + y_off = -height * world.icon_size - 16 + + overlays.Cut() + add_background() + add_buttons() + if(do_refresh) + refresh_view() + +/obj/screen/movable/pic_in_pic/proc/set_view_center(atom/target, do_refresh = TRUE) + center = target + if(do_refresh) + refresh_view() + +/obj/screen/movable/pic_in_pic/proc/refresh_view() + vis_contents -= viewing_turfs + if(!width || !height) + return + var/turf/T = get_turf(center) + if(!T) + return + var/turf/lowerleft = locate(max(1, T.x - round(width/2)), max(1, T.y - round(height/2)), T.z) + var/turf/upperright = locate(min(world.maxx, lowerleft.x + width - 1), min(world.maxy, lowerleft.y + height - 1), lowerleft.z) + viewing_turfs = block(lowerleft, upperright) + vis_contents += viewing_turfs + + +/obj/screen/movable/pic_in_pic/proc/show_to(client/C) + if(C) + shown_to[C] = 1 + C.screen += src + +/obj/screen/movable/pic_in_pic/proc/unshow_to(client/C) + if(C) + shown_to -= C + C.screen -= src \ No newline at end of file diff --git a/code/_onclick/hud/radial.dm b/code/_onclick/hud/radial.dm new file mode 100644 index 00000000000..284e095333c --- /dev/null +++ b/code/_onclick/hud/radial.dm @@ -0,0 +1,298 @@ +#define NEXT_PAGE_ID "__next__" +#define DEFAULT_CHECK_DELAY 20 +#define ANIM_SPEED 1 + +GLOBAL_LIST_EMPTY(radial_menus) + +/obj/screen/radial + icon = 'icons/mob/radial.dmi' + layer = ABOVE_HUD_LAYER + plane = ABOVE_HUD_PLANE + var/datum/radial_menu/parent + +/obj/screen/radial/slice + icon_state = "radial_slice" + var/choice + var/next_page = FALSE + +/obj/screen/radial/slice/MouseEntered(location, control, params) + . = ..() + icon_state = "radial_slice_focus" + +/obj/screen/radial/slice/MouseExited(location, control, params) + . = ..() + icon_state = "radial_slice" + +/obj/screen/radial/slice/Click(location, control, params) + if(usr.client == parent.current_user) + if(next_page) + parent.next_page() + else + parent.element_chosen(choice,usr) + +/obj/screen/radial/center + name = "Close Menu" + icon_state = "radial_center" + +/obj/screen/radial/center/Click(location, control, params) + if(usr.client == parent.current_user) + parent.finished = TRUE + +/datum/radial_menu + var/list/choices = list() //List of choice id's + var/list/choices_icons = list() //choice_id -> icon + var/list/choices_values = list() //choice_id -> choice + var/list/page_data = list() //list of choices per page + + + var/selected_choice + var/list/obj/screen/elements = list() + var/obj/screen/radial/center/close_button + var/client/current_user + var/atom/anchor + var/image/menu_holder + var/finished = FALSE + var/datum/callback/custom_check_callback + var/next_check = 0 + var/check_delay = DEFAULT_CHECK_DELAY + + var/radius = 32 + var/starting_angle = 0 + var/ending_angle = 360 + var/zone = 360 + var/min_angle = 45 //Defaults are setup for this value, if you want to make the menu more dense these will need changes. + var/max_elements + var/pages = 1 + var/current_page = 1 + + var/hudfix_method = TRUE //TRUE to change anchor to user, FALSE to shift by py_shift + var/py_shift = 0 + var/entry_animation = TRUE + +//If we swap to vis_contens inventory these will need a redo +/datum/radial_menu/proc/check_screen_border(mob/user) + var/atom/movable/AM = anchor + if(!istype(AM) || !AM.screen_loc) + return + if(AM in user.client.screen) + if(hudfix_method) + anchor = user + else + py_shift = 32 + restrict_to_dir(NORTH) //I was going to parse screen loc here but that's more effort than it's worth. + +//Sets defaults +//These assume 45 deg min_angle +/datum/radial_menu/proc/restrict_to_dir(dir) + switch(dir) + if(NORTH) + starting_angle = 270 + ending_angle = 135 + if(SOUTH) + starting_angle = 90 + ending_angle = 315 + if(EAST) + starting_angle = 0 + ending_angle = 225 + if(WEST) + starting_angle = 180 + ending_angle = 45 + +/datum/radial_menu/proc/setup_menu() + if(ending_angle > starting_angle) + zone = ending_angle - starting_angle + else + zone = 360 - starting_angle + ending_angle + + max_elements = round(zone / min_angle) + var/paged = max_elements < choices.len + if(elements.len < max_elements) + var/elements_to_add = max_elements - elements.len + for(var/i in 1 to elements_to_add) //Create all elements + var/obj/screen/radial/new_element = new /obj/screen/radial/slice + new_element.parent = src + elements += new_element + + var/page = 1 + page_data = list(null) + var/list/current = list() + var/list/choices_left = choices.Copy() + while(choices_left.len) + if(current.len == max_elements) + page_data[page] = current + page++ + page_data.len++ + current = list() + if(paged && current.len == max_elements - 1) + current += NEXT_PAGE_ID + continue + else + current += popleft(choices_left) + if(paged && current.len < max_elements) + current += NEXT_PAGE_ID + + page_data[page] = current + pages = page + current_page = 1 + update_screen_objects(anim = entry_animation) + +/datum/radial_menu/proc/update_screen_objects(anim = FALSE) + var/list/page_choices = page_data[current_page] + var/angle_per_element = round(zone / page_choices.len) + for(var/i in 1 to elements.len) + var/obj/screen/radial/E = elements[i] + var/angle = WRAP(starting_angle + (i - 1) * angle_per_element, 0, 360) + if(i > page_choices.len) + HideElement(E) + else + SetElement(E,page_choices[i], angle, anim = anim, anim_order = i) + +/datum/radial_menu/proc/HideElement(obj/screen/radial/slice/E) + E.cut_overlays() + E.alpha = 0 + E.name = "None" + E.maptext = null + E.mouse_opacity = MOUSE_OPACITY_TRANSPARENT + E.choice = null + E.next_page = FALSE + +/datum/radial_menu/proc/SetElement(obj/screen/radial/slice/E, choice_id, angle, anim, anim_order) + //Position + var/py = round(cos(angle) * radius) + py_shift + var/px = round(sin(angle) * radius) + if(anim) + var/timing = anim_order * ANIM_SPEED + var/matrix/starting = matrix() + starting.Scale(0.1, 0.1) + E.transform = starting + var/matrix/TM = matrix() + animate(E, pixel_x = px, pixel_y = py, transform = TM, time = timing) + else + E.pixel_y = py + E.pixel_x = px + + //Visuals + E.alpha = 255 + E.mouse_opacity = MOUSE_OPACITY_ICON + E.cut_overlays() + if(choice_id == NEXT_PAGE_ID) + E.name = "Next Page" + E.next_page = TRUE + E.add_overlay("radial_next") + else + if(istext(choices_values[choice_id])) + E.name = choices_values[choice_id] + else + var/atom/movable/AM = choices_values[choice_id] //Movables only + E.name = AM.name + E.choice = choice_id + E.maptext = null + E.next_page = FALSE + if(choices_icons[choice_id]) + E.add_overlay(choices_icons[choice_id]) + +/datum/radial_menu/New() + close_button = new + close_button.parent = src + +/datum/radial_menu/proc/Reset() + choices.Cut() + choices_icons.Cut() + choices_values.Cut() + current_page = 1 + QDEL_NULL(custom_check_callback) + +/datum/radial_menu/proc/element_chosen(choice_id,mob/user) + selected_choice = choices_values[choice_id] + +/datum/radial_menu/proc/get_next_id() + return "c_[choices.len]" + +/datum/radial_menu/proc/set_choices(list/new_choices) + if(choices.len) + Reset() + for(var/E in new_choices) + var/id = get_next_id() + choices += id + choices_values[id] = E + if(new_choices[E]) + var/I = extract_image(new_choices[E]) + if(I) + choices_icons[id] = I + setup_menu() + + +/datum/radial_menu/proc/extract_image(E) + var/mutable_appearance/MA = new /mutable_appearance(E) + if(MA) + MA.layer = ABOVE_HUD_LAYER + MA.appearance_flags |= RESET_TRANSFORM + return MA + + +/datum/radial_menu/proc/next_page() + if(pages > 1) + current_page = WRAP(current_page + 1, 1, pages + 1) + update_screen_objects() + +/datum/radial_menu/proc/show_to(mob/M) + if(current_user) + hide() + if(!M.client || !anchor) + return + current_user = M.client + //Blank + menu_holder = image(icon = 'icons/effects/effects.dmi', loc = anchor,icon_state = "nothing", layer = ABOVE_HUD_LAYER) + menu_holder.appearance_flags |= KEEP_APART + menu_holder.vis_contents += elements + close_button + current_user.images += menu_holder + +/datum/radial_menu/proc/hide() + if(current_user) + current_user.images -= menu_holder + +/datum/radial_menu/proc/wait() + while (current_user && !finished && !selected_choice) + if(custom_check_callback && next_check < world.time) + if(!custom_check_callback.Invoke()) + return + else + next_check = world.time + check_delay + stoplag(1) + +/datum/radial_menu/Destroy() + Reset() + hide() + . = ..() + +/* + Presents radial menu to user anchored to anchor (or user if the anchor is currently in users screen) + Choices should be a list where list keys are movables or text used for element names and return value + and list values are movables/icons/images used for element icons +*/ +/proc/show_radial_menu(mob/user, atom/anchor, list/choices, uniqueid, radius, datum/callback/custom_check) + if(!user || !anchor || !length(choices)) + return + if(!uniqueid) + uniqueid = "defmenu_[user.UID()]_[anchor.UID()]" + + if(GLOB.radial_menus[uniqueid]) + return + + var/datum/radial_menu/menu = new + GLOB.radial_menus[uniqueid] = menu + if(radius) + menu.radius = radius + if(istype(custom_check)) + menu.custom_check_callback = custom_check + menu.anchor = anchor + menu.check_screen_border(user) //Do what's needed to make it look good near borders or on hud + menu.set_choices(choices) + menu.show_to(user) + menu.wait() + var/answer = menu.selected_choice + qdel(menu) + GLOB.radial_menus -= uniqueid + return answer + +#undef ANIM_SPEED \ No newline at end of file diff --git a/code/_onclick/hud/screen_objects.dm b/code/_onclick/hud/screen_objects.dm index 67f2db660f8..8847e990338 100644 --- a/code/_onclick/hud/screen_objects.dm +++ b/code/_onclick/hud/screen_objects.dm @@ -23,6 +23,9 @@ master = null return ..() +/obj/screen/proc/component_click(obj/screen/component_button/component, params) + return + /obj/screen/text icon = null icon_state = null @@ -175,66 +178,111 @@ icon_state = "zone_sel" screen_loc = ui_zonesel var/selecting = "chest" + var/static/list/hover_overlays_cache = list() + var/hovering /obj/screen/zone_sel/Click(location, control,params) + if(isobserver(usr)) + return + var/list/PL = params2list(params) var/icon_x = text2num(PL["icon-x"]) var/icon_y = text2num(PL["icon-y"]) - var/old_selecting = selecting //We're only going to update_icon() if there's been a change + var/choice = get_zone_at(icon_x, icon_y) + if(!choice) + return 1 + return set_selected_zone(choice, usr) + +/obj/screen/zone_sel/MouseEntered(location, control, params) + MouseMove(location, control, params) + +/obj/screen/zone_sel/MouseMove(location, control, params) + if(isobserver(usr)) + return + + var/list/PL = params2list(params) + var/icon_x = text2num(PL["icon-x"]) + var/icon_y = text2num(PL["icon-y"]) + var/choice = get_zone_at(icon_x, icon_y) + + if(hovering == choice) + return + cut_overlay(hover_overlays_cache[hovering]) + hovering = choice + + var/obj/effect/overlay/zone_sel/overlay_object = hover_overlays_cache[choice] + if(!overlay_object) + overlay_object = new + overlay_object.icon_state = "[choice]" + hover_overlays_cache[choice] = overlay_object + add_overlay(overlay_object) + + +/obj/effect/overlay/zone_sel + icon = 'icons/mob/zone_sel.dmi' + mouse_opacity = MOUSE_OPACITY_TRANSPARENT + alpha = 128 + anchored = TRUE + layer = ABOVE_HUD_LAYER + plane = ABOVE_HUD_PLANE + +/obj/screen/zone_sel/MouseExited(location, control, params) + if(!isobserver(usr) && hovering) + cut_overlay(hover_overlays_cache[hovering]) + hovering = null + +/obj/screen/zone_sel/proc/get_zone_at(icon_x, icon_y) switch(icon_y) if(1 to 3) //Feet switch(icon_x) if(10 to 15) - selecting = "r_foot" + return "r_foot" if(17 to 22) - selecting = "l_foot" - else - return 1 + return "l_foot" if(4 to 9) //Legs switch(icon_x) if(10 to 15) - selecting = "r_leg" + return "r_leg" if(17 to 22) - selecting = "l_leg" - else - return 1 + return "l_leg" if(10 to 13) //Hands and groin switch(icon_x) if(8 to 11) - selecting = "r_hand" + return "r_hand" if(12 to 20) - selecting = "groin" + return "groin" if(21 to 24) - selecting = "l_hand" - else - return 1 + return "l_hand" if(14 to 22) //Chest and arms to shoulders switch(icon_x) if(8 to 11) - selecting = "r_arm" + return "r_arm" if(12 to 20) - selecting = "chest" + return "chest" if(21 to 24) - selecting = "l_arm" - else - return 1 + return "l_arm" if(23 to 30) //Head, but we need to check for eye or mouth if(icon_x in 12 to 20) - selecting = "head" switch(icon_y) if(23 to 24) if(icon_x in 15 to 17) - selecting = "mouth" + return "mouth" if(26) //Eyeline, eyes are on 15 and 17 if(icon_x in 14 to 18) - selecting = "eyes" + return "eyes" if(25 to 27) if(icon_x in 15 to 17) - selecting = "eyes" + return "eyes" + return "head" - if(old_selecting != selecting) - update_icon() +/obj/screen/zone_sel/proc/set_selected_zone(choice, mob/user) + if(isobserver(user)) + return + + if(choice != selecting) + selecting = choice + update_icon(usr) return 1 /obj/screen/zone_sel/update_icon() @@ -275,8 +323,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 @@ -386,3 +464,15 @@ icon_state = "healthdoll_DEAD" screen_loc = ui_healthdoll var/list/cached_healthdoll_overlays = list() // List of icon states (strings) for overlays + +/obj/screen/component_button + var/obj/screen/parent + + +/obj/screen/component_button/Initialize(mapload, obj/screen/new_parent) + . = ..() + parent = new_parent + +/obj/screen/component_button/Click(params) + if(parent) + parent.component_click(src, params) \ No newline at end of file diff --git a/code/_onclick/item_attack.dm b/code/_onclick/item_attack.dm index 0299a7ec2fc..78dde4e95f9 100644 --- a/code/_onclick/item_attack.dm +++ b/code/_onclick/item_attack.dm @@ -14,7 +14,7 @@ // No comment /atom/proc/attackby(obj/item/W, mob/user, params) - return SendSignal(COMSIG_PARENT_ATTACKBY, W, user, params) + return SEND_SIGNAL(src, COMSIG_PARENT_ATTACKBY, W, user, params) /obj/attackby(obj/item/I, mob/living/user, params) return ..() || (can_be_hit && I.attack_obj(src, user)) diff --git a/code/_onclick/telekinesis.dm b/code/_onclick/telekinesis.dm index 5ab67ffb611..238ce2d5a94 100644 --- a/code/_onclick/telekinesis.dm +++ b/code/_onclick/telekinesis.dm @@ -191,27 +191,3 @@ var/const/tk_maxrange = 15 overlays.Cut() if(focus && focus.icon && focus.icon_state) overlays += icon(focus.icon,focus.icon_state) - -/*Not quite done likely needs to use something thats not get_step_to - proc/check_path() - var/turf/ref = get_turf(src.loc) - var/turf/target = get_turf(focus.loc) - if(!ref || !target) return 0 - var/distance = get_dist(ref, target) - if(distance >= 10) return 0 - for(var/i = 1 to distance) - ref = get_step_to(ref, target, 0) - if(ref != target) return 0 - return 1 -*/ - -//equip_to_slot_or_del(obj/item/W, slot, del_on_fail = 1) -/* - if(istype(user, /mob/living/carbon)) - if(user:mutations & TK && get_dist(source, user) <= 7) - if(user:get_active_hand()) return 0 - var/X = source:x - var/Y = source:y - var/Z = source:z - -*/ diff --git a/code/controllers/Processes/fast_process.dm b/code/controllers/Processes/fast_process.dm index 72ed0e68fee..c27a749f526 100644 --- a/code/controllers/Processes/fast_process.dm +++ b/code/controllers/Processes/fast_process.dm @@ -6,10 +6,10 @@ /datum/controller/process/fast_process/statProcess() ..() - stat(null, "[fast_processing.len] fast processes") + stat(null, "[GLOB.fast_processing.len] fast processes") /datum/controller/process/fast_process/doWork() - for(last_object in fast_processing) + for(last_object in GLOB.fast_processing) var/obj/O = last_object try O.process() diff --git a/code/controllers/Processes/npcai.dm b/code/controllers/Processes/npcai.dm index a93c6e881de..127429efd34 100644 --- a/code/controllers/Processes/npcai.dm +++ b/code/controllers/Processes/npcai.dm @@ -11,18 +11,18 @@ var/global/datum/controller/process/npcai/npcai_master /datum/controller/process/npcai/started() ..() - if(!simple_animal_list) - simple_animal_list = list() - if(!snpc_list) - snpc_list = list() + if(!GLOB.simple_animal_list) + GLOB.simple_animal_list = list() + if(!GLOB.snpc_list) + GLOB.snpc_list = list() /datum/controller/process/npcai/statProcess() ..() - stat(null, "[simple_animal_list.len] simple animals") - stat(null, "[snpc_list.len] SNPC's") + stat(null, "[GLOB.simple_animal_list.len] simple animals") + stat(null, "[GLOB.snpc_list.len] SNPC's") /datum/controller/process/npcai/doWork() - for(last_object in simple_animal_list) + for(last_object in GLOB.simple_animal_list) var/mob/living/simple_animal/M = last_object if(istype(M) && !QDELETED(M)) if(!M.client && M.stat == CONSCIOUS) @@ -33,7 +33,7 @@ var/global/datum/controller/process/npcai/npcai_master SCHECK else catchBadType(M) - simple_animal_list -= M + GLOB.simple_animal_list -= M current_cycle++ diff --git a/code/controllers/configuration.dm b/code/controllers/configuration.dm index 1919df19ae6..17f8fcd3865 100644 --- a/code/controllers/configuration.dm +++ b/code/controllers/configuration.dm @@ -22,6 +22,7 @@ var/log_hrefs = 0 // logs all links clicked in-game. Could be used for debugging and tracking down exploits var/sql_enabled = 0 // for sql switching var/allow_admin_ooccolor = 0 // Allows admins with relevant permissions to have their own ooc colour + var/pregame_timestart = 240 // Time it takes for the server to start the game var/allow_vote_restart = 0 // allow votes to restart var/allow_vote_mode = 0 // allow votes to change mode var/vote_delay = 6000 // minimum time between voting sessions (deciseconds, 10 minute default) @@ -333,6 +334,9 @@ if("allow_admin_ooccolor") config.allow_admin_ooccolor = 1 + if("pregame_timestart") + config.pregame_timestart = text2num(value) + if("allow_vote_restart") config.allow_vote_restart = 1 diff --git a/code/controllers/failsafe.dm b/code/controllers/failsafe.dm index 923dece3c6b..1d597f5e742 100644 --- a/code/controllers/failsafe.dm +++ b/code/controllers/failsafe.dm @@ -54,20 +54,20 @@ GLOBAL_REAL(Failsafe, /datum/controller/failsafe) message_admins("Notice: DEFCON [defcon_pretty()]. The Master Controller has not fired in the last [(5 - defcon) * processing_interval] ticks.") --defcon if(2) - to_chat(admins, "Warning: DEFCON [defcon_pretty()]. The Master Controller has not fired in the last [(5 - defcon) * processing_interval] ticks. Automatic restart in [processing_interval] ticks.") + to_chat(GLOB.admins, "Warning: DEFCON [defcon_pretty()]. The Master Controller has not fired in the last [(5 - defcon) * processing_interval] ticks. Automatic restart in [processing_interval] ticks.") --defcon if(1) - to_chat(admins, "Warning: DEFCON [defcon_pretty()]. The Master Controller has still not fired within the last [(5 - defcon) * processing_interval] ticks. Killing and restarting...") + to_chat(GLOB.admins, "Warning: DEFCON [defcon_pretty()]. The Master Controller has still not fired within the last [(5 - defcon) * processing_interval] ticks. Killing and restarting...") --defcon var/rtn = Recreate_MC() if(rtn > 0) defcon = 4 master_iteration = 0 - to_chat(admins, "MC restarted successfully") + to_chat(GLOB.admins, "MC restarted successfully") else if(rtn < 0) log_game("FailSafe: Could not restart MC, runtime encountered. Entering defcon 0") - to_chat(admins, "ERROR: DEFCON [defcon_pretty()]. Could not restart MC, runtime encountered. I will silently keep retrying.") + to_chat(GLOB.admins, "ERROR: DEFCON [defcon_pretty()]. Could not restart MC, runtime encountered. I will silently keep retrying.") //if the return number was 0, it just means the mc was restarted too recently, and it just needs some time before we try again //no need to handle that specially when defcon 0 can handle it if(0) //DEFCON 0! (mc failed to restart) @@ -75,7 +75,7 @@ GLOBAL_REAL(Failsafe, /datum/controller/failsafe) if(rtn > 0) defcon = 4 master_iteration = 0 - to_chat(admins, "MC restarted successfully") + to_chat(GLOB.admins, "MC restarted successfully") else defcon = min(defcon + 1,5) master_iteration = Master.iteration diff --git a/code/controllers/master.dm b/code/controllers/master.dm index 9cb84f26aa5..a9c7e0dbb7b 100644 --- a/code/controllers/master.dm +++ b/code/controllers/master.dm @@ -149,7 +149,7 @@ GLOBAL_REAL(Master, /datum/controller/master) = new msg = "The [BadBoy.name] subsystem seems to be destabilizing the MC and will be offlined." BadBoy.flags |= SS_NO_FIRE if(msg) - to_chat(admins, "[msg]") + to_chat(GLOB.admins, "[msg]") log_world(msg) if(istype(Master.subsystems)) @@ -609,7 +609,7 @@ GLOBAL_REAL(Master, /datum/controller/master) = new /datum/controller/master/proc/UpdateTickRate() if(!processing) return - var/client_count = length(clients) + var/client_count = length(GLOB.clients) if(client_count < config.disable_high_pop_mc_mode_amount) processing = config.base_mc_tick_rate else if(client_count > config.high_pop_mc_mode_amount) diff --git a/code/controllers/subsystem/air.dm b/code/controllers/subsystem/air.dm index 986467fc74a..6c394309a09 100644 --- a/code/controllers/subsystem/air.dm +++ b/code/controllers/subsystem/air.dm @@ -66,8 +66,8 @@ SUBSYSTEM_DEF(air) /datum/controller/subsystem/air/Initialize(timeofday) setup_overlays() // Assign icons and such for gas-turf-overlays setup_allturfs() - setup_atmos_machinery(machines) - setup_pipenets(machines) + setup_atmos_machinery(GLOB.machines) + setup_pipenets(GLOB.machines) ..() diff --git a/code/controllers/subsystem/atoms.dm b/code/controllers/subsystem/atoms.dm index 54adebf5125..a0b2d49d958 100644 --- a/code/controllers/subsystem/atoms.dm +++ b/code/controllers/subsystem/atoms.dm @@ -11,7 +11,6 @@ SUBSYSTEM_DEF(atoms) var/old_initialized var/list/late_loaders - var/list/created_atoms var/list/BadInitializeCalls = list() @@ -39,13 +38,11 @@ SUBSYSTEM_DEF(atoms) var/count var/list/mapload_arg = list(TRUE) if(atoms) - created_atoms = list() count = atoms.len for(var/I in atoms) var/atom/A = I if(A && !A.initialized) - if(InitAtom(I, mapload_arg)) - atoms -= I + InitAtom(I, mapload_arg) CHECK_TICK else count = 0 @@ -78,10 +75,6 @@ SUBSYSTEM_DEF(atoms) log_debug(" Late initialized [late_loaders.len] atoms in [stop_watch(watch)]s") late_loaders.Cut() - if(atoms) - . = created_atoms + atoms - created_atoms = null - /datum/controller/subsystem/atoms/proc/InitAtom(atom/A, list/arguments) var/the_type = A.type if(QDELING(A)) diff --git a/code/controllers/subsystem/garbage.dm b/code/controllers/subsystem/garbage.dm index 97dd02838d0..457ea9513ab 100644 --- a/code/controllers/subsystem/garbage.dm +++ b/code/controllers/subsystem/garbage.dm @@ -59,7 +59,6 @@ SUBSYSTEM_DEF(garbage) msg += " | Fail:[fail_counts.Join(",")]" ..(msg) - /datum/controller/subsystem/garbage/Shutdown() //Adds the del() log to the qdel log file var/list/dellog = list() @@ -86,41 +85,21 @@ SUBSYSTEM_DEF(garbage) /datum/controller/subsystem/garbage/fire() //the fact that this resets its processing each fire (rather then resume where it left off) is intentional. - var/queue = GC_QUEUE_PREQUEUE + var/queue = GC_QUEUE_CHECK while(state == SS_RUNNING) switch(queue) - if(GC_QUEUE_PREQUEUE) - HandlePreQueue() - queue = GC_QUEUE_PREQUEUE + 1 if(GC_QUEUE_CHECK) HandleQueue(GC_QUEUE_CHECK) queue = GC_QUEUE_CHECK + 1 if(GC_QUEUE_HARDDELETE) HandleQueue(GC_QUEUE_HARDDELETE) + if(state == SS_PAUSED) //make us wait again before the next run. + state = SS_RUNNING break - if(state == SS_PAUSED) //make us wait again before the next run. - state = SS_RUNNING -//If you see this proc high on the profile, what you are really seeing is the garbage collection/soft delete overhead in byond. -//Don't attempt to optimize, not worth the effort. -/datum/controller/subsystem/garbage/proc/HandlePreQueue() - var/list/tobequeued = queues[GC_QUEUE_PREQUEUE] - var/static/count = 0 - if(count) - var/c = count - count = 0 //so if we runtime on the Cut, we don't try again. - tobequeued.Cut(1, c + 1) - for(var/ref in tobequeued) - count++ - Queue(ref, GC_QUEUE_PREQUEUE + 1) - if(MC_TICK_CHECK) - break - if(count) - tobequeued.Cut(1, count + 1) - count = 0 /datum/controller/subsystem/garbage/proc/HandleQueue(level = GC_QUEUE_CHECK) if(level == GC_QUEUE_CHECK) @@ -142,7 +121,7 @@ SUBSYSTEM_DEF(garbage) if(!refID) count++ if(MC_TICK_CHECK) - break + return continue var/GCd_at_time = queue[refID] @@ -161,7 +140,7 @@ SUBSYSTEM_DEF(garbage) reference_find_on_fail -= refID //It's deleted we don't care anymore. #endif if(MC_TICK_CHECK) - break + return continue // Something's still referring to the qdel'd object. @@ -184,27 +163,20 @@ SUBSYSTEM_DEF(garbage) if(GC_QUEUE_HARDDELETE) HardDelete(D) if(MC_TICK_CHECK) - break + return continue Queue(D, level + 1) if(MC_TICK_CHECK) - break + return if(count) queue.Cut(1, count + 1) count = 0 -/datum/controller/subsystem/garbage/proc/PreQueue(datum/D) - if(D.gc_destroyed == GC_CURRENTLY_BEING_QDELETED) - queues[GC_QUEUE_PREQUEUE] += D - D.gc_destroyed = GC_QUEUED_FOR_QUEUING - /datum/controller/subsystem/garbage/proc/Queue(datum/D, level = GC_QUEUE_CHECK) if(isnull(D)) return - if(D.gc_destroyed == GC_QUEUED_FOR_HARD_DEL) - level = GC_QUEUE_HARDDELETE if(level > GC_QUEUE_COUNT) HardDelete(D) return @@ -250,11 +222,6 @@ SUBSYSTEM_DEF(garbage) message_admins("Error: [type]([refID]) took longer than 1 second to delete (took [time / 10] seconds to delete).") postpone(time) -/datum/controller/subsystem/garbage/proc/HardQueue(datum/D) - if(D.gc_destroyed == GC_CURRENTLY_BEING_QDELETED) - queues[GC_QUEUE_PREQUEUE] += D - D.gc_destroyed = GC_QUEUED_FOR_HARD_DEL - /datum/controller/subsystem/garbage/Recover() if(istype(SSgarbage.queues)) for(var/i in 1 to SSgarbage.queues.len) @@ -294,11 +261,13 @@ SUBSYSTEM_DEF(garbage) if(isnull(D.gc_destroyed)) - D.SendSignal(COMSIG_PARENT_QDELETED) + if(SEND_SIGNAL(D, COMSIG_PARENT_QDELETED, force)) // Give the components a chance to prevent their parent from being deleted + return D.gc_destroyed = GC_CURRENTLY_BEING_QDELETED var/start_time = world.time var/start_tick = world.tick_usage var/hint = D.Destroy(arglist(args.Copy(2))) // Let our friend know they're about to get fucked up. + SEND_SIGNAL(D, COMSIG_PARENT_QDELETED, force, hint) // Let the (remaining) components know about the result of Destroy if(world.time != start_time) I.slept_destroy++ else @@ -307,7 +276,7 @@ SUBSYSTEM_DEF(garbage) return switch(hint) if(QDEL_HINT_QUEUE) //qdel should queue the object for deletion. - SSgarbage.PreQueue(D) + SSgarbage.Queue(D) if(QDEL_HINT_IWILLGC) D.gc_destroyed = world.time return @@ -327,18 +296,18 @@ SUBSYSTEM_DEF(garbage) #endif I.no_respect_force++ - SSgarbage.PreQueue(D) - if(QDEL_HINT_HARDDEL) //qdel should assume this object won't gc, and queue a hard delete using a hard reference to save time from the locate() - SSgarbage.HardQueue(D) + SSgarbage.Queue(D) + if(QDEL_HINT_HARDDEL) //qdel should assume this object won't gc, and queue a hard delete + SSgarbage.Queue(D, GC_QUEUE_HARDDELETE) if(QDEL_HINT_HARDDEL_NOW) //qdel should assume this object won't gc, and hard del it post haste. SSgarbage.HardDelete(D) if(QDEL_HINT_FINDREFERENCE)//qdel will, if TESTING is enabled, display all references to this object, then queue the object for deletion. - SSgarbage.PreQueue(D) + SSgarbage.Queue(D) #ifdef TESTING D.find_references() #endif if(QDEL_HINT_IFFAIL_FINDREFERENCE) - SSgarbage.PreQueue(D) + SSgarbage.Queue(D) #ifdef TESTING SSgarbage.reference_find_on_fail["\ref[D]"] = TRUE #endif @@ -348,7 +317,7 @@ SUBSYSTEM_DEF(garbage) testing("WARNING: [D.type] is not returning a qdel hint. It is being placed in the queue. Further instances of this type will also be queued.") #endif I.no_hint++ - SSgarbage.PreQueue(D) + SSgarbage.Queue(D) else if(D.gc_destroyed == GC_CURRENTLY_BEING_QDELETED) CRASH("[D.type] destroy proc was called multiple times, likely due to a qdel loop in the Destroy logic") @@ -463,4 +432,4 @@ SUBSYSTEM_DEF(garbage) CHECK_TICK #endif -#endif +#endif \ No newline at end of file diff --git a/code/controllers/subsystem/icon_smooth.dm b/code/controllers/subsystem/icon_smooth.dm new file mode 100644 index 00000000000..65260e5af55 --- /dev/null +++ b/code/controllers/subsystem/icon_smooth.dm @@ -0,0 +1,32 @@ +SUBSYSTEM_DEF(icon_smooth) + name = "Icon Smoothing" + init_order = INIT_ORDER_ICON_SMOOTHING + wait = 1 + priority = FIRE_PRIOTITY_SMOOTHING + flags = SS_TICKER + + var/list/smooth_queue = list() + +/datum/controller/subsystem/icon_smooth/fire() + while(smooth_queue.len) + var/atom/A = smooth_queue[smooth_queue.len] + smooth_queue.len-- + smooth_icon(A) + if(MC_TICK_CHECK) + return + if(!smooth_queue.len) + can_fire = 0 + +/datum/controller/subsystem/icon_smooth/Initialize() + smooth_zlevel(1,TRUE) + smooth_zlevel(2,TRUE) + var/queue = smooth_queue + smooth_queue = list() + for(var/V in queue) + var/atom/A = V + if(!A || A.z <= 2) + continue + smooth_icon(A) + CHECK_TICK + + ..() diff --git a/code/controllers/subsystem/machinery.dm b/code/controllers/subsystem/machinery.dm index a3e4d4bdb0c..af6898c39bd 100644 --- a/code/controllers/subsystem/machinery.dm +++ b/code/controllers/subsystem/machinery.dm @@ -67,7 +67,7 @@ SUBSYSTEM_DEF(machines) /datum/controller/subsystem/machines/proc/process_premachines(resumed = 0) /* Literally exists as snowflake for fucking powersinks goddamnit */ if(!resumed) - src.currentrun = processing_power_items.Copy() + src.currentrun = GLOB.processing_power_items.Copy() //cache for sanid speed (lists are references anyways) var/list/currentrun = src.currentrun while(currentrun.len) @@ -75,9 +75,9 @@ SUBSYSTEM_DEF(machines) currentrun.len-- if(!QDELETED(I)) if(!I.pwr_drain()) - processing_power_items.Remove(I) + GLOB.processing_power_items.Remove(I) else - processing_power_items.Remove(I) + GLOB.processing_power_items.Remove(I) if(MC_TICK_CHECK) return diff --git a/code/controllers/subsystem/mobs.dm b/code/controllers/subsystem/mobs.dm index 03989d24af2..d19396af767 100644 --- a/code/controllers/subsystem/mobs.dm +++ b/code/controllers/subsystem/mobs.dm @@ -7,12 +7,12 @@ SUBSYSTEM_DEF(mobs) var/list/currentrun = list() /datum/controller/subsystem/mobs/stat_entry() - ..("P:[mob_list.len]") + ..("P:[GLOB.mob_list.len]") /datum/controller/subsystem/mobs/fire(resumed = 0) var/seconds = wait * 0.1 if(!resumed) - src.currentrun = mob_list.Copy() + src.currentrun = GLOB.mob_list.Copy() //cache for sanic speed (lists are references anyways) var/list/currentrun = src.currentrun @@ -23,6 +23,6 @@ SUBSYSTEM_DEF(mobs) if(M) M.Life(seconds, times_fired) else - mob_list.Remove(M) + GLOB.mob_list.Remove(M) if(MC_TICK_CHECK) return \ No newline at end of file diff --git a/code/controllers/subsystem/nightshift.dm b/code/controllers/subsystem/nightshift.dm index 813cfd5012a..358076c5652 100644 --- a/code/controllers/subsystem/nightshift.dm +++ b/code/controllers/subsystem/nightshift.dm @@ -54,7 +54,7 @@ SUBSYSTEM_DEF(nightshift) announce("Good evening, crew. To reduce power consumption and stimulate the circadian rhythms of some species, all of the lights aboard the station have been dimmed for the night.") else announce("Good morning, crew. As it is now day time, all of the lights aboard the station have been restored to their former brightness.") - for(var/A in apcs) + for(var/A in GLOB.apcs) var/obj/machinery/power/apc/APC = A if(is_station_level(APC.z)) APC.set_nightshift(active) 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/shuttles.dm b/code/controllers/subsystem/shuttles.dm index a50ceaca56a..64ae30f2952 100644 --- a/code/controllers/subsystem/shuttles.dm +++ b/code/controllers/subsystem/shuttles.dm @@ -180,7 +180,7 @@ SUBSYSTEM_DEF(shuttle) /datum/controller/subsystem/shuttle/proc/autoEvac() var/callShuttle = 1 - for(var/thing in shuttle_caller_list) + for(var/thing in GLOB.shuttle_caller_list) if(istype(thing, /mob/living/silicon/ai)) var/mob/living/silicon/ai/AI = thing if(AI.stat || !AI.client) 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 e2539ebdf06..3e7285a79bf 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)||BUCKET_LEN) +#define BUCKET_POS(timer) (((round((timer.timeToRun - SStimer.head_offset) / world.tick_lag)+1) % 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 @@ -10,7 +10,7 @@ SUBSYSTEM_DEF(timer) flags = SS_TICKER|SS_NO_INIT - var/list/second_queue = list() //awe, yes, you've had first queue, but what about second queue? Contains: /datum/timedevent + var/list/second_queue = list() //awe, yes, you've had first queue, but what about second queue? var/list/hashes = list() var/head_offset = 0 //world.time of the first entry in the the bucket. @@ -38,15 +38,15 @@ SUBSYSTEM_DEF(timer) /datum/controller/subsystem/timer/fire(resumed = FALSE) var/lit = last_invoke_tick - var/last_check = world.time - TIMER_NO_INVOKE_WARNING + var/last_check = world.time - TICKS2DS(BUCKET_LEN*1.5) var/list/bucket_list = src.bucket_list if(!bucket_count) last_invoke_tick = world.time - if(lit && lit < last_check && last_invoke_warning < last_check) + if(lit && lit < last_check && head_offset < last_check && last_invoke_warning < last_check) last_invoke_warning = world.time - var/msg = "No regular timers processed in the last [TIMER_NO_INVOKE_WARNING] ticks[bucket_auto_reset ? ", resetting buckets" : ""]!" + var/msg = "No regular timers processed in the last [BUCKET_LEN*1.5] ticks[bucket_auto_reset ? ", resetting buckets" : ""]!" message_admins(msg) WARNING(msg) if(bucket_auto_reset) @@ -122,7 +122,7 @@ SUBSYSTEM_DEF(timer) if(!resumed) timer = null - while(practical_offset <= BUCKET_LEN && head_offset + (practical_offset*world.tick_lag) <= world.time) + while(practical_offset <= BUCKET_LEN && head_offset + ((practical_offset-1)*world.tick_lag) <= world.time) var/datum/timedevent/head = bucket_list[practical_offset] if(!timer || !head || timer == head) head = bucket_list[practical_offset] @@ -170,7 +170,7 @@ SUBSYSTEM_DEF(timer) qdel(timer) continue - if(timer.timeToRun < head_offset + TICKS2DS(practical_offset)) + if(timer.timeToRun < head_offset + TICKS2DS(practical_offset-1)) bucket_resolution = null //force bucket recreation CRASH("[i] Invalid timer state: Timer in long run queue that would require a backtrack to transfer to short run queue. [get_timer_debug_string(timer)] world.time: [world.time], head_offset: [head_offset], practical_offset: [practical_offset]") if(timer.callBack && !timer.spent) @@ -521,4 +521,4 @@ SUBSYSTEM_DEF(timer) #undef BUCKET_LEN #undef BUCKET_POS #undef TIMER_MAX -#undef TIMER_ID_MAX \ No newline at end of file +#undef TIMER_ID_MAX diff --git a/code/controllers/subsystem/weather.dm b/code/controllers/subsystem/weather.dm index 4f5798e4ae4..3619fca430f 100644 --- a/code/controllers/subsystem/weather.dm +++ b/code/controllers/subsystem/weather.dm @@ -19,7 +19,7 @@ SUBSYSTEM_DEF(weather) var/datum/weather/W = V if(W.aesthetic || W.stage != MAIN_STAGE) continue - for(var/i in living_mob_list) + for(var/i in GLOB.living_mob_list) var/mob/living/L = i if(W.can_weather_act(L)) W.weather_act(L) diff --git a/code/controllers/voting.dm b/code/controllers/voting.dm index a8890186bae..e7ee6f743ca 100644 --- a/code/controllers/voting.dm +++ b/code/controllers/voting.dm @@ -95,7 +95,7 @@ var/global/list/round_voters = list() //Keeps track of the individuals voting fo choices = sorted_choices //default-vote for everyone who didn't vote if(!config.vote_no_default && choices.len) - var/non_voters = (clients.len - total_votes) + var/non_voters = (GLOB.clients.len - total_votes) if(non_voters > 0) if(mode == "restart") choices["Continue Playing"] += non_voters diff --git a/code/datums/cache/air_alarm.dm b/code/datums/cache/air_alarm.dm index 5f34997c95f..a4b3ee21c56 100644 --- a/code/datums/cache/air_alarm.dm +++ b/code/datums/cache/air_alarm.dm @@ -16,7 +16,7 @@ var/global/datum/repository/air_alarm/air_alarm_repository = new() if(is_station_contact(passed_alarm.z)) // Still need sanity checks alarms[++alarms.len] = passed_alarm.get_nano_data_console() else - for(var/obj/machinery/alarm/alarm in (monitored_alarms ? monitored_alarms : air_alarms)) // Generating the whole list again is a bad habit but I can't be bothered to fix it right now + for(var/obj/machinery/alarm/alarm in (monitored_alarms ? monitored_alarms : GLOB.air_alarms)) // Generating the whole list again is a bad habit but I can't be bothered to fix it right now if(!monitored_alarms && !is_station_contact(alarm.z)) continue alarms[++alarms.len] = alarm.get_nano_data_console() diff --git a/code/datums/cache/crew.dm b/code/datums/cache/crew.dm index 2912b8c6753..b30b5c57889 100644 --- a/code/datums/cache/crew.dm +++ b/code/datums/cache/crew.dm @@ -59,7 +59,7 @@ var/global/datum/repository/crew/crew_repository = new() /datum/repository/crew/proc/scan() var/list/tracked = list() - for(var/mob/living/carbon/human/H in mob_list) + for(var/mob/living/carbon/human/H in GLOB.mob_list) if(istype(H.w_uniform, /obj/item/clothing/under)) var/obj/item/clothing/under/C = H.w_uniform if(C.has_sensor) diff --git a/code/datums/cache/powermonitor.dm b/code/datums/cache/powermonitor.dm index e269ddc8afe..5867aa5b904 100644 --- a/code/datums/cache/powermonitor.dm +++ b/code/datums/cache/powermonitor.dm @@ -11,7 +11,7 @@ var/global/datum/repository/powermonitor/powermonitor_repository = new() if(!refresh) return cache_entry.data - for(var/obj/machinery/computer/monitor/pMon in power_monitors) + for(var/obj/machinery/computer/monitor/pMon in GLOB.power_monitors) if( !(pMon.stat & (NOPOWER|BROKEN)) ) pMonData[++pMonData.len] = list ("Name" = pMon.name, "ref" = "\ref[pMon]") diff --git a/code/datums/components/README.md b/code/datums/components/README.md index ee156e45525..4eecdce18ca 100644 --- a/code/datums/components/README.md +++ b/code/datums/components/README.md @@ -2,7 +2,7 @@ ## Concept -Loosely adapted from /vg/. This is an entity component system for adding behaviours to datums when inheritance doesn't quite cut it. By using signals and events instead of direct inheritance, you can inject behaviours without hacky overloads. It requires a different method of thinking, but is not hard to use correctly. If a behaviour can have application across more than one thing. Make it generic, make it a component. Atom/mob/obj event? Give it a signal, and forward it's arguments with a `SendSignal()` call. Now every component that want's to can also know about this happening. +Loosely adapted from /vg/. This is an entity component system for adding behaviours to datums when inheritance doesn't quite cut it. By using signals and events instead of direct inheritance, you can inject behaviours without hacky overloads. It requires a different method of thinking, but is not hard to use correctly. If a behaviour can have application across more than one thing. Make it generic, make it a component. Atom/mob/obj event? Give it a signal, and forward it's arguments with a `SEND_SIGNAL` call. Now every component that want's to can also know about this happening. ### In the code @@ -28,6 +28,7 @@ Stands have a lot of procs which mimic mob procs. Rather than inserting hooks fo 1. `COMPONENT_INCOMPATIBLE` Return this from `/datum/component/Initialize` or `datum/component/OnTransfer` to have the component be deleted if it's applied to an incorrect type. `parent` must not be modified if this is to be returned. + ### Vars 1. `/datum/var/list/datum_components` (private) @@ -61,6 +62,11 @@ Stands have a lot of procs which mimic mob procs. Rather than inserting hooks fo * Returns a reference to a component whose type MATCHES component_type if that component exists in the datum, null otherwise 1. `GET_COMPONENT(varname, component_type)` OR `GET_COMPONENT_FROM(varname, component_type, src)` * Shorthand for `var/component_type/varname = src.GetComponent(component_type)` +1. `SEND_SIGNAL(target, sigtype, ...)` (public, final) + * Use to send signals to target datum + * Extra arguments are to be specified in the signal definition + * Returns a bitflag with signal specific information assembled from all activated components + * Arguments are packaged in a list and handed off to _SendSignal() 1. `/datum/proc/AddComponent(component_type(type), ...) -> datum/component` (public, final) * Creates an instance of `component_type` in the datum and passes `...` to its `Initialize()` call * Sends the `COMSIG_COMPONENT_ADDED` signal to the datum @@ -77,10 +83,9 @@ Stands have a lot of procs which mimic mob procs. Rather than inserting hooks fo * Properly transfers ownership of a component from one datum to another * Signals `COMSIG_COMPONENT_REMOVING` on the parent * Called on the datum you want to own the component with another datum's component -1. `/datum/proc/SendSignal(signal, ...)` (public, final) - * Call to send a signal to the components of the target datum - * Extra arguments are to be specified in the signal definition - * Returns a bitflag with signal specific information assembled from all activated components +1. `/datum/proc/_SendSignal(signal, list/arguments)` (private, final) + * Handles most of the actual signaling procedure + * Will runtime if used on datums with an empty component list 1. `/datum/component/New(datum/parent, ...)` (private, final) * Runs internal setup for the component * Extra arguments are passed to `Initialize()` @@ -108,13 +113,13 @@ Stands have a lot of procs which mimic mob procs. Rather than inserting hooks fo * Clears `parent` and removes the component from it's component list 1. `/datum/component/proc/_JoinParent` (private, final) * Tries to add the component to it's `parent`s `datum_components` list -1. `/datum/component/proc/RegisterSignal(signal(string/list of strings), proc_ref(type), override(boolean))` (protected, final) (Consider removing for performance gainz) +1. `/datum/component/proc/RegisterSignal(datum/target, signal(string/list of strings), proc_ref(type), override(boolean))` (protected, final) * If signal is a list it will be as if RegisterSignal was called for each of the entries with the same following arguments * Makes a component listen for the specified `signal` on it's `parent` datum. * When that signal is recieved `proc_ref` will be called on the component, along with associated arguments * Example proc ref: `.proc/OnEvent` * If a previous registration is overwritten by the call, a runtime occurs. Setting `override` to TRUE prevents this * These callbacks run asyncronously - * Returning `TRUE` from these callbacks will trigger a `TRUE` return from the `SendSignal()` that initiated it + * Returning `TRUE` from these callbacks will trigger a `TRUE` return from the `_SendSignal()` that initiated it ### See/Define signals and their arguments in __DEFINES\components.dm diff --git a/code/datums/components/_component.dm b/code/datums/components/_component.dm index 775a8667b3f..7621828d970 100644 --- a/code/datums/components/_component.dm +++ b/code/datums/components/_component.dm @@ -56,9 +56,10 @@ if(!force) _RemoveFromParent() if(!silent) - P.SendSignal(COMSIG_COMPONENT_REMOVING, src) + SEND_SIGNAL(P, COMSIG_COMPONENT_REMOVING, src) parent = null - LAZYCLEARLIST(signal_procs) + for(var/target in signal_procs) + UnregisterSignal(target, signal_procs[target]) return ..() /datum/component/proc/_RemoveFromParent() @@ -77,26 +78,67 @@ if(!dc.len) P.datum_components = null -/datum/component/proc/RegisterSignal(sig_type_or_types, proc_or_callback, override = FALSE) - if(QDELETED(src)) +/datum/component/proc/RegisterSignal(datum/target, sig_type_or_types, proc_or_callback, override = FALSE) + if(QDELETED(src) || QDELETED(target)) return + var/list/procs = signal_procs if(!procs) - procs = list() - signal_procs = procs + signal_procs = procs = list() + if(!procs[target]) + procs[target] = list() + var/list/lookup = target.comp_lookup + if(!lookup) + target.comp_lookup = lookup = list() + + if(!istype(proc_or_callback, /datum/callback)) //if it wasnt a callback before, it is now + proc_or_callback = CALLBACK(src, proc_or_callback) var/list/sig_types = islist(sig_type_or_types) ? sig_type_or_types : list(sig_type_or_types) for(var/sig_type in sig_types) - if(!override) - . = procs[sig_type] - if(.) - stack_trace("[sig_type] overridden. Use override = TRUE to suppress this warning") + if(!override && procs[target][sig_type]) + stack_trace("[sig_type] overridden. Use override = TRUE to suppress this warning") - if(!istype(proc_or_callback, /datum/callback)) //if it wasnt a callback before, it is now - proc_or_callback = CALLBACK(src, proc_or_callback) - procs[sig_type] = proc_or_callback + procs[target][sig_type] = proc_or_callback + if(!lookup[sig_type]) // Nothing has registered here yet + lookup[sig_type] = src + else if(lookup[sig_type] == src) // We already registered here + continue + else if(!length(lookup[sig_type])) // One other thing registered here + lookup[sig_type] = list(lookup[sig_type]=TRUE) + lookup[sig_type][src] = TRUE + else // Many other things have registered here + lookup[sig_type][src] = TRUE enabled = TRUE +/datum/component/proc/UnregisterSignal(datum/target, sig_type_or_types) + var/list/lookup = target.comp_lookup + if(!signal_procs || !signal_procs[target] || !lookup) + return + if(!islist(sig_type_or_types)) + sig_type_or_types = list(sig_type_or_types) + for(var/sig in sig_type_or_types) + switch(length(lookup[sig])) + if(2) + lookup[sig] = (lookup[sig]-src)[1] + if(1) + stack_trace("[target] ([target.type]) somehow has single length list inside comp_lookup") + if(src in lookup[sig]) + lookup -= sig + if(!length(lookup)) + target.comp_lookup = null + break + if(0) + lookup -= sig + if(!length(lookup)) + target.comp_lookup = null + break + else + lookup[sig] -= src + + signal_procs[target] -= sig_type_or_types + if(length(signal_procs[target])) + signal_procs -= target /datum/component/proc/InheritComponent(datum/component/C, i_am_original) return @@ -121,28 +163,20 @@ current_type = type2parent(current_type) . += current_type -/datum/proc/SendSignal(sigtype, ...) - var/list/comps = datum_components - if(!comps) - return NONE - var/list/arguments = args.Copy(2) - var/target = comps[/datum/component] +/datum/proc/_SendSignal(sigtype, list/arguments) + var/target = comp_lookup[sigtype] if(!length(target)) var/datum/component/C = target if(!C.enabled) return NONE - var/datum/callback/CB = C.signal_procs[sigtype] - if(!CB) - return NONE + var/datum/callback/CB = C.signal_procs[src][sigtype] return CB.InvokeAsync(arglist(arguments)) . = NONE for(var/I in target) var/datum/component/C = I if(!C.enabled) continue - var/datum/callback/CB = C.signal_procs[sigtype] - if(!CB) - continue + var/datum/callback/CB = C.signal_procs[src][sigtype] . |= CB.InvokeAsync(arglist(arguments)) /datum/proc/GetComponent(c_type) @@ -224,7 +258,7 @@ new_comp = new nt(arglist(args)) // Dupes are allowed, act like normal if(!old_comp && !QDELETED(new_comp)) // Nothing related to duplicate components happened and the new component is healthy - SendSignal(COMSIG_COMPONENT_ADDED, new_comp) + SEND_SIGNAL(src, COMSIG_COMPONENT_ADDED, new_comp) return new_comp return old_comp @@ -244,7 +278,7 @@ qdel(C) return C._RemoveFromParent() - helicopter.SendSignal(COMSIG_COMPONENT_REMOVING, C) + SEND_SIGNAL(helicopter, COMSIG_COMPONENT_REMOVING, C) C.parent = src if(C == AddComponent(C)) C._JoinParent() diff --git a/code/datums/components/material_container.dm b/code/datums/components/material_container.dm index f08181cb5f4..4ae7d08f3ea 100644 --- a/code/datums/components/material_container.dm +++ b/code/datums/components/material_container.dm @@ -30,8 +30,8 @@ precondition = _precondition after_insert = _after_insert - RegisterSignal(COMSIG_PARENT_ATTACKBY, .proc/OnAttackBy) - RegisterSignal(COMSIG_PARENT_EXAMINE, .proc/OnExamine) + RegisterSignal(parent, COMSIG_PARENT_ATTACKBY, .proc/OnAttackBy) + RegisterSignal(parent, COMSIG_PARENT_EXAMINE, .proc/OnExamine) var/list/possible_mats = list() for(var/mat_type in subtypesof(/datum/material)) @@ -42,14 +42,14 @@ var/mat_path = possible_mats[id] materials[id] = new mat_path() -/datum/component/material_container/proc/OnExamine(mob/user) +/datum/component/material_container/proc/OnExamine(datum/source, mob/user) for(var/I in materials) var/datum/material/M = materials[I] var/amt = amount(M.id) if(amt) to_chat(user, "It has [amt] units of [lowertext(M.name)] stored.") -/datum/component/material_container/proc/OnAttackBy(obj/item/I, mob/living/user) +/datum/component/material_container/proc/OnAttackBy(datum/source, obj/item/I, mob/living/user) var/list/tc = allowed_typecache if(user.a_intent != INTENT_HELP) return diff --git a/code/datums/datacore.dm b/code/datums/datacore.dm index 4fc2522ce65..d489a559b38 100644 --- a/code/datums/datacore.dm +++ b/code/datums/datacore.dm @@ -40,7 +40,7 @@ var/real_rank = t.fields["real_rank"] if(OOC) var/active = 0 - for(var/mob/M in player_list) + for(var/mob/M in GLOB.player_list) if(M.real_name == name && M.client && M.client.inactivity <= 10 * 60 * 10) active = 1 break @@ -222,7 +222,7 @@ var/global/list/PDA_Manifest = list() /datum/datacore/proc/manifest() - for(var/mob/living/carbon/human/H in player_list) + for(var/mob/living/carbon/human/H in GLOB.player_list) manifest_inject(H) /datum/datacore/proc/manifest_modify(name, assignment) @@ -358,7 +358,7 @@ var/record_id_num = 1001 preview_icon.Blend(temp, ICON_OVERLAY) var/head = "head" if(head_organ.alt_head && head_organ.dna.species.bodyflags & HAS_ALT_HEADS) - var/datum/sprite_accessory/alt_heads/alternate_head = alt_heads_list[head_organ.alt_head] + var/datum/sprite_accessory/alt_heads/alternate_head = GLOB.alt_heads_list[head_organ.alt_head] if(alternate_head.icon_state) head = alternate_head.icon_state temp = new /icon(icobase, "[head]_[g]") @@ -390,7 +390,7 @@ var/record_id_num = 1001 var/icon/t_marking_s if(H.dna.species.bodyflags & HAS_TAIL_MARKINGS) var/tail_marking = H.m_styles["tail"] - var/datum/sprite_accessory/tail_marking_style = marking_styles_list[tail_marking] + var/datum/sprite_accessory/tail_marking_style = GLOB.marking_styles_list[tail_marking] if(tail_marking_style && tail_marking_style.species_allowed) t_marking_s = new/icon("icon" = tail_marking_style.icon, "icon_state" = "[tail_marking_style.icon_state]_s") t_marking_s.Blend(H.m_colours["tail"], ICON_ADD) @@ -405,7 +405,7 @@ var/record_id_num = 1001 eyes_s.Blend(eyes_organ.eye_colour, ICON_ADD) face_s.Blend(eyes_s, ICON_OVERLAY) - var/datum/sprite_accessory/hair_style = hair_styles_full_list[head_organ.h_style] + var/datum/sprite_accessory/hair_style = GLOB.hair_styles_full_list[head_organ.h_style] if(hair_style) var/icon/hair_s = new/icon("icon" = hair_style.icon, "icon_state" = "[hair_style.icon_state]_s") // I'll want to make a species-specific proc for this sooner or later @@ -425,13 +425,13 @@ var/record_id_num = 1001 //Head Accessory if(head_organ.dna.species.bodyflags & HAS_HEAD_ACCESSORY) - var/datum/sprite_accessory/head_accessory_style = head_accessory_styles_list[head_organ.ha_style] + var/datum/sprite_accessory/head_accessory_style = GLOB.head_accessory_styles_list[head_organ.ha_style] if(head_accessory_style && head_accessory_style.species_allowed) var/icon/head_accessory_s = new/icon("icon" = head_accessory_style.icon, "icon_state" = "[head_accessory_style.icon_state]_s") head_accessory_s.Blend(head_organ.headacc_colour, ICON_ADD) face_s.Blend(head_accessory_s, ICON_OVERLAY) - var/datum/sprite_accessory/facial_hair_style = facial_hair_styles_list[head_organ.f_style] + var/datum/sprite_accessory/facial_hair_style = GLOB.facial_hair_styles_list[head_organ.f_style] if(facial_hair_style && facial_hair_style.species_allowed) var/icon/facial_s = new/icon("icon" = facial_hair_style.icon, "icon_state" = "[facial_hair_style.icon_state]_s") if(istype(head_organ.dna.species, /datum/species/slime)) @@ -451,14 +451,14 @@ var/record_id_num = 1001 if((H.dna.species.bodyflags & HAS_HEAD_MARKINGS) || (H.dna.species.bodyflags & HAS_BODY_MARKINGS)) if(H.dna.species.bodyflags & HAS_BODY_MARKINGS) //Body markings. var/body_marking = H.m_styles["body"] - var/datum/sprite_accessory/body_marking_style = marking_styles_list[body_marking] + var/datum/sprite_accessory/body_marking_style = GLOB.marking_styles_list[body_marking] if(body_marking_style && body_marking_style.species_allowed) var/icon/b_marking_s = new/icon("icon" = body_marking_style.icon, "icon_state" = "[body_marking_style.icon_state]_s") b_marking_s.Blend(H.m_colours["body"], ICON_ADD) face_s.Blend(b_marking_s, ICON_OVERLAY) if(H.dna.species.bodyflags & HAS_HEAD_MARKINGS) //Head markings. var/head_marking = H.m_styles["head"] - var/datum/sprite_accessory/head_marking_style = marking_styles_list[head_marking] + var/datum/sprite_accessory/head_marking_style = GLOB.marking_styles_list[head_marking] if(head_marking_style && head_marking_style.species_allowed) var/icon/h_marking_s = new/icon("icon" = head_marking_style.icon, "icon_state" = "[head_marking_style.icon_state]_s") h_marking_s.Blend(H.m_colours["head"], ICON_ADD) diff --git a/code/datums/datum.dm b/code/datums/datum.dm index 70c783d634e..2db8c0cad89 100644 --- a/code/datums/datum.dm +++ b/code/datums/datum.dm @@ -2,6 +2,7 @@ var/gc_destroyed //Time when this object was destroyed. var/list/active_timers //for SStimer var/list/datum_components //for /datum/components + var/list/comp_lookup var/var_edited = FALSE //Warranty void if seal is broken var/tmp/unique_datum_id = null @@ -37,6 +38,19 @@ qdel(C, FALSE, TRUE) dc.Cut() + var/list/lookup = comp_lookup + if(lookup) + for(var/sig in lookup) + var/list/comps = lookup[sig] + if(length(comps)) + for(var/i in comps) + var/datum/component/comp = i + comp.UnregisterSignal(src, sig) + else + var/datum/component/comp = comps + comp.UnregisterSignal(src, sig) + comp_lookup = lookup = null + return QDEL_HINT_QUEUE diff --git a/code/datums/datumvars.dm b/code/datums/datumvars.dm index 656c12fa9d8..5d815472974 100644 --- a/code/datums/datumvars.dm +++ b/code/datums/datumvars.dm @@ -817,7 +817,7 @@ if(A.reagents) var/chosen_id - var/list/reagent_options = sortAssoc(chemical_reagents_list) + var/list/reagent_options = sortAssoc(GLOB.chemical_reagents_list) switch(alert(usr, "Choose a method.", "Add Reagents", "Enter ID", "Choose ID")) if("Enter ID") var/valid_id @@ -1033,7 +1033,7 @@ to_chat(usr, "This can only be done to instances of type /mob") return - var/new_language = input("Please choose a language to add.","Language",null) as null|anything in all_languages + var/new_language = input("Please choose a language to add.","Language",null) as null|anything in GLOB.all_languages if(!new_language) return diff --git a/code/datums/diseases/_MobProcs.dm b/code/datums/diseases/_MobProcs.dm index 1bbba44f78b..160a2cce6b1 100644 --- a/code/datums/diseases/_MobProcs.dm +++ b/code/datums/diseases/_MobProcs.dm @@ -36,7 +36,7 @@ var/datum/disease/DD = new D.type(1, D, 0) viruses += DD DD.affected_mob = src - active_diseases += DD //Add it to the active diseases list, now that it's actually in a mob and being processed. + GLOB.active_diseases += DD //Add it to the active diseases list, now that it's actually in a mob and being processed. //Copy properties over. This is so edited diseases persist. var/list/skipped = list("affected_mob","holder","carrier","stage","type","parent_type","vars","transformed") diff --git a/code/datums/diseases/_disease.dm b/code/datums/diseases/_disease.dm index 9414a079e80..42cf8d07b3b 100644 --- a/code/datums/diseases/_disease.dm +++ b/code/datums/diseases/_disease.dm @@ -67,7 +67,7 @@ var/list/diseases = subtypesof(/datum/disease) /datum/disease/Destroy() affected_mob = null - active_diseases.Remove(src) + GLOB.active_diseases.Remove(src) return ..() /datum/disease/proc/stage_act() diff --git a/code/datums/diseases/advance/advance.dm b/code/datums/diseases/advance/advance.dm index 435ccad80cd..a218746ca07 100644 --- a/code/datums/diseases/advance/advance.dm +++ b/code/datums/diseases/advance/advance.dm @@ -251,7 +251,7 @@ var/list/advance_cures = list( cures = list(advance_cures[res]) // Get the cure name from the cure_id - var/datum/reagent/D = chemical_reagents_list[cures[1]] + var/datum/reagent/D = GLOB.chemical_reagents_list[cures[1]] cure_text = D.name @@ -394,10 +394,10 @@ var/list/advance_cures = list( D.AssignName(new_name) D.Refresh() - for(var/datum/disease/advance/AD in active_diseases) + for(var/datum/disease/advance/AD in GLOB.active_diseases) AD.Refresh() - for(var/mob/living/carbon/human/H in shuffle(living_mob_list)) + for(var/mob/living/carbon/human/H in shuffle(GLOB.living_mob_list)) if(!is_station_level(H.z)) continue if(!H.HasDisease(D)) diff --git a/code/datums/diseases/advance/symptoms/sensory.dm b/code/datums/diseases/advance/symptoms/sensory.dm index e3e50ba468f..c3095a69e08 100644 --- a/code/datums/diseases/advance/symptoms/sensory.dm +++ b/code/datums/diseases/advance/symptoms/sensory.dm @@ -24,35 +24,31 @@ Bonus level = 5 severity = 0 -/datum/symptom/sensory_restoration/proc/check_and_add(reagent, check, add, mob/living/M) - if(M.reagents.get_reagent_amount(reagent) < check) - M.reagents.add_reagent(reagent, add) - return 1 - /datum/symptom/sensory_restoration/Activate(var/datum/disease/advance/A) ..() if(prob(SYMPTOM_ACTIVATION_PROB * 3)) var/mob/living/M = A.affected_mob + var/datum/reagents/RD = M.reagents switch(A.stage) if(2) - if(check_and_add("oculine", 10, 10, M)) + if(RD.check_and_add("oculine", 10, 10)) to_chat(M, "Your hearing feels clearer and crisp.") if(3) - if(check_and_add("antihol", 10, 10, M)) + if(RD.check_and_add("antihol", 10, 10)) to_chat(M, "You feel sober.") - check_and_add("oculine", 10, 10, M) + RD.check_and_add("oculine", 10, 10) if(4) - if(check_and_add("synaphydramine", 10, 5, M)) + if(RD.check_and_add("synaphydramine", 10, 5)) to_chat(M, "You feel focused.") - check_and_add("antihol", 10, 10, M) - check_and_add("oculine", 10, 10, M) + RD.check_and_add("antihol", 10, 10) + RD.check_and_add("oculine", 10, 10) if(5) - if(check_and_add("mannitol", 10, 10, M)) + if(RD.check_and_add("mannitol", 10, 10)) to_chat(M, "Your mind feels relaxed.") - check_and_add("synaphydramine", 10, 5, M) - check_and_add("antihol", 10, 10, M) - check_and_add("oculine", 10, 10, M) + RD.check_and_add("synaphydramine", 10, 5) + RD.check_and_add("antihol", 10, 10) + RD.check_and_add("oculine", 10, 10) return diff --git a/code/datums/helper_datums/construction_datum.dm b/code/datums/helper_datums/construction_datum.dm index 127e7baa892..8cc1bdc27d8 100644 --- a/code/datums/helper_datums/construction_datum.dm +++ b/code/datums/helper_datums/construction_datum.dm @@ -8,168 +8,168 @@ var/list/steps_desc var/taskpath = null // Path of job objective completed. - New(atom) - ..() - holder = atom - if(!holder) //don't want this without a holder - spawn - qdel(src) +/datum/construction/New(atom) + ..() + holder = atom + if(!holder) //don't want this without a holder + spawn + qdel(src) + set_desc(steps.len) + return + +/datum/construction/proc/next_step(mob/user as mob) + steps.len-- + if(!steps.len) + spawn_result(user) + else set_desc(steps.len) - return + return - proc/next_step(mob/user as mob) - steps.len-- - if(!steps.len) - spawn_result(user) +/datum/construction/proc/action(atom/used_atom,mob/user as mob) + return + +/datum/construction/proc/check_step(atom/used_atom,mob/user as mob) //check last step only + var/valid_step = is_right_key(used_atom) + if(valid_step) + if(custom_action(valid_step, used_atom, user)) + next_step(user) + return 1 + return 0 + +/datum/construction/proc/is_right_key(atom/used_atom) // returns current step num if used_atom is of the right type. + var/list/L = steps[steps.len] + if(istype(used_atom, L["key"])) + return steps.len + return 0 + +/datum/construction/proc/custom_action(step, used_atom, user) + if(istype(used_atom, /obj/item/weldingtool)) + var/obj/item/weldingtool/W = used_atom + if(W.remove_fuel(0, user)) + playsound(holder, W.usesound, 50, 1) else - set_desc(steps.len) - return + return 0 + else if(istype(used_atom, /obj/item/wrench)) + var/obj/item/wrench/W = used_atom + playsound(holder, W.usesound, 50, 1) - proc/action(atom/used_atom,mob/user as mob) - return + else if(istype(used_atom, /obj/item/screwdriver)) + var/obj/item/screwdriver/S = used_atom + playsound(holder, S.usesound, 50, 1) - proc/check_step(atom/used_atom,mob/user as mob) //check last step only - var/valid_step = is_right_key(used_atom) - if(valid_step) - if(custom_action(valid_step, used_atom, user)) - next_step(user) - return 1 - return 0 + else if(istype(used_atom, /obj/item/wirecutters)) + var/obj/item/wirecutters/W = used_atom + playsound(holder, W.usesound, 50, 1) - proc/is_right_key(atom/used_atom) // returns current step num if used_atom is of the right type. - var/list/L = steps[steps.len] + else if(istype(used_atom, /obj/item/stack/cable_coil)) + var/obj/item/stack/cable_coil/C = used_atom + if(C.amount<4) + to_chat(user, ("There's not enough cable to finish the task.")) + return 0 + else + C.use(4) + playsound(holder, C.usesound, 50, 1) + else if(istype(used_atom, /obj/item/stack)) + var/obj/item/stack/S = used_atom + if(S.amount < 5) + to_chat(user, ("There's not enough material in this stack.")) + return 0 + else + S.use(5) + return 1 + +/datum/construction/proc/check_all_steps(atom/used_atom,mob/user as mob) //check all steps, remove matching one. + for(var/i=1;i<=steps.len;i++) + var/list/L = steps[i]; if(istype(used_atom, L["key"])) - return steps.len - return 0 + if(custom_action(i, used_atom, user)) + steps[i]=null;//stupid byond list from list removal... + listclearnulls(steps); + if(!steps.len) + spawn_result(user) + return 1 + return 0 - proc/custom_action(step, used_atom, user) - if(istype(used_atom, /obj/item/weldingtool)) - var/obj/item/weldingtool/W = used_atom - if(W.remove_fuel(0, user)) - playsound(holder, W.usesound, 50, 1) - else + +/datum/construction/proc/spawn_result(mob/user as mob) + if(result) + if(taskpath) + var/datum/job_objective/task = user.mind.findJobTask(taskpath) + if(istype(task)) + task.unit_completed() + + new result(get_turf(holder)) + spawn() + qdel(holder) + return + +/datum/construction/proc/set_desc(index as num) + var/list/step = steps[index] + holder.desc = step["desc"] + return + +/datum/construction/proc/try_consume(mob/user as mob, atom/used_atom, amount) + if(amount > 0) + // CABLES + if(istype(used_atom,/obj/item/stack/cable_coil)) + var/obj/item/stack/cable_coil/coil=used_atom + if(!coil.use(amount)) + to_chat(user, "You don't have enough cable! You need at least [amount] coils.") return 0 - else if(istype(used_atom, /obj/item/wrench)) - var/obj/item/wrench/W = used_atom - playsound(holder, W.usesound, 50, 1) - - else if(istype(used_atom, /obj/item/screwdriver)) - var/obj/item/screwdriver/S = used_atom - playsound(holder, S.usesound, 50, 1) - - else if(istype(used_atom, /obj/item/wirecutters)) - var/obj/item/wirecutters/W = used_atom - playsound(holder, W.usesound, 50, 1) - - else if(istype(used_atom, /obj/item/stack/cable_coil)) - var/obj/item/stack/cable_coil/C = used_atom - if(C.amount<4) - to_chat(user, ("There's not enough cable to finish the task.")) + // WELDER + if(istype(used_atom,/obj/item/weldingtool)) + var/obj/item/weldingtool/welder=used_atom + if(!welder.isOn()) + to_chat(user, "You tap the [src] with your unlit welder. [pick("Ding","Dong")].") return 0 - else - C.use(4) - playsound(holder, C.usesound, 50, 1) - else if(istype(used_atom, /obj/item/stack)) - var/obj/item/stack/S = used_atom - if(S.amount < 5) - to_chat(user, ("There's not enough material in this stack.")) + if(!welder.remove_fuel(amount,user)) + to_chat(user, "You don't have enough fuel!") return 0 - else - S.use(5) - return 1 - - proc/check_all_steps(atom/used_atom,mob/user as mob) //check all steps, remove matching one. - for(var/i=1;i<=steps.len;i++) - var/list/L = steps[i]; - if(istype(used_atom, L["key"])) - if(custom_action(i, used_atom, user)) - steps[i]=null;//stupid byond list from list removal... - listclearnulls(steps); - if(!steps.len) - spawn_result(user) - return 1 - return 0 - - - proc/spawn_result(mob/user as mob) - if(result) - if(taskpath) - var/datum/job_objective/task = user.mind.findJobTask(taskpath) - if(istype(task)) - task.unit_completed() - - new result(get_turf(holder)) - spawn() - qdel(holder) - return - - proc/set_desc(index as num) - var/list/step = steps[index] - holder.desc = step["desc"] - return - - proc/try_consume(mob/user as mob, atom/used_atom, amount) - if(amount > 0) - // CABLES - if(istype(used_atom,/obj/item/stack/cable_coil)) - var/obj/item/stack/cable_coil/coil=used_atom - if(!coil.use(amount)) - to_chat(user, "You don't have enough cable! You need at least [amount] coils.") - return 0 - // WELDER - if(istype(used_atom,/obj/item/weldingtool)) - var/obj/item/weldingtool/welder=used_atom - if(!welder.isOn()) - to_chat(user, "You tap the [src] with your unlit welder. [pick("Ding","Dong")].") - return 0 - if(!welder.remove_fuel(amount,user)) - to_chat(user, "You don't have enough fuel!") - return 0 - // STACKS - if(istype(used_atom,/obj/item/stack)) - var/obj/item/stack/stack=used_atom - if(stack.amount < amount) - to_chat(user, "You don't have enough [stack]! You need at least [amount].") - return 0 - stack.use(amount) - return 1 + // STACKS + if(istype(used_atom,/obj/item/stack)) + var/obj/item/stack/stack=used_atom + if(stack.amount < amount) + to_chat(user, "You don't have enough [stack]! You need at least [amount].") + return 0 + stack.use(amount) + return 1 /datum/construction/reversible var/index - New(atom) - ..() - index = steps.len - return +/datum/construction/reversible/New(atom) + ..() + index = steps.len + return - proc/update_index(diff as num, mob/user as mob) - index+=diff - if(index==0) - spawn_result(user) - else - set_desc(index) - return +/datum/construction/reversible/proc/update_index(diff as num, mob/user as mob) + index+=diff + if(index==0) + spawn_result(user) + else + set_desc(index) + return - is_right_key(atom/used_atom) // returns index step - var/list/L = steps[index] - if(istype(used_atom, L["key"])) - return FORWARD //to the first step -> forward - else if(L["backkey"] && istype(used_atom, L["backkey"])) - return BACKWARD //to the last step -> backwards +/datum/construction/reversible/is_right_key(atom/used_atom) // returns index step + var/list/L = steps[index] + if(istype(used_atom, L["key"])) + return FORWARD //to the first step -> forward + else if(L["backkey"] && istype(used_atom, L["backkey"])) + return BACKWARD //to the last step -> backwards + return 0 + +/datum/construction/reversible/check_step(atom/used_atom,mob/user as mob) + var/diff = is_right_key(used_atom) + if(diff) + if(custom_action(index, diff, used_atom, user)) + update_index(diff, user) + return 1 + return 0 + +/datum/construction/reversible/custom_action(index, diff, used_atom, user) + if(!..(index,used_atom,user)) return 0 - - check_step(atom/used_atom,mob/user as mob) - var/diff = is_right_key(used_atom) - if(diff) - if(custom_action(index, diff, used_atom, user)) - update_index(diff, user) - return 1 - return 0 - - custom_action(index, diff, used_atom, user) - if(!..(index,used_atom,user)) - return 0 - return 1 + return 1 #define state_next "next" #define state_prev "prev" @@ -178,73 +178,74 @@ var/index var/base_icon = "durand" - New(atom) - ..() - index = 1 - return +/datum/construction/reversible2/New(atom) + ..() + index = 1 + return - proc/update_index(diff as num, mob/user as mob) - index-=diff - if(index==steps.len+1) - spawn_result(user) - else - set_desc(index) - return +/datum/construction/reversible2/proc/update_index(diff as num, mob/user as mob) + index-=diff + if(index==steps.len+1) + spawn_result(user) + else + set_desc(index) + return - proc/update_icon() - holder.icon_state="[base_icon]_[index]" +/datum/construction/reversible2/proc/update_icon() + holder.icon_state="[base_icon]_[index]" - is_right_key(mob/user as mob,atom/used_atom) // returns index step - var/list/state = steps[index] - if(state_next in state) - var/list/step = state[state_next] - if(istype(used_atom, step["key"])) - //if(L["consume"] && !try_consume(used_atom,L["consume"])) - // return 0 - return FORWARD //to the first step -> forward - else if(state_prev in state) - var/list/step = state[state_prev] - if(istype(used_atom, step["key"])) - //if(L["consume"] && !try_consume(used_atom,L["consume"])) - // return 0 - return BACKWARD //to the first step -> forward +/datum/construction/reversible2/is_right_key(mob/user as mob,atom/used_atom) // returns index step + var/list/state = steps[index] + if(state_next in state) + var/list/step = state[state_next] + if(istype(used_atom, step["key"])) + //if(L["consume"] && !try_consume(used_atom,L["consume"])) + // return 0 + return FORWARD //to the first step -> forward + else if(state_prev in state) + var/list/step = state[state_prev] + if(istype(used_atom, step["key"])) + //if(L["consume"] && !try_consume(used_atom,L["consume"])) + // return 0 + return BACKWARD //to the first step -> forward + return 0 + +/datum/construction/reversible2/check_step(atom/used_atom,mob/user as mob) + var/diff = is_right_key(user,used_atom) + if(diff) + if(custom_action(index, diff, used_atom, user)) + update_index(diff,user) + update_icon() + return 1 + return 0 + +/datum/construction/reversible2/proc/fixText(text,user) + text = replacetext(text,"{USER}","[user]") + text = replacetext(text,"{HOLDER}","[holder]") + return text + +/datum/construction/reversible2/custom_action(index, diff, used_atom, var/mob/user) + if(!..(index,used_atom,user)) return 0 - check_step(atom/used_atom,mob/user as mob) - var/diff = is_right_key(user,used_atom) - if(diff) - if(custom_action(index, diff, used_atom, user)) - update_index(diff,user) - update_icon() - return 1 - return 0 + var/list/step = steps[index] + var/list/state = step[diff==FORWARD ? state_next : state_prev] + user.visible_message(fixText(state["vis_msg"],user),fixText(state["self_msg"],user)) - proc/fixText(text,user) - text = replacetext(text,"{USER}","[user]") - text = replacetext(text,"{HOLDER}","[holder]") - return text + if("delete" in state) + qdel(used_atom) + else if("spawn" in state) + var/spawntype=state["spawn"] + var/atom/A = new spawntype(holder.loc) + if("amount" in state) + if(istype(A,/obj/item/stack/cable_coil)) + var/obj/item/stack/cable_coil/C=A + C.amount=state["amount"] + if(istype(A,/obj/item/stack)) + var/obj/item/stack/S=A + S.amount=state["amount"] - custom_action(index, diff, used_atom, var/mob/user) - if(!..(index,used_atom,user)) - return 0 + return 1 - var/list/step = steps[index] - var/list/state = step[diff==FORWARD ? state_next : state_prev] - user.visible_message(fixText(state["vis_msg"],user),fixText(state["self_msg"],user)) - - if("delete" in state) - qdel(used_atom) - else if("spawn" in state) - var/spawntype=state["spawn"] - var/atom/A = new spawntype(holder.loc) - if("amount" in state) - if(istype(A,/obj/item/stack/cable_coil)) - var/obj/item/stack/cable_coil/C=A - C.amount=state["amount"] - if(istype(A,/obj/item/stack)) - var/obj/item/stack/S=A - S.amount=state["amount"] - - return 1 - action(used_atom,user) - return check_step(used_atom,user) +/datum/construction/reversible2/action(used_atom,user) + return check_step(used_atom,user) diff --git a/code/datums/helper_datums/global_iterator.dm b/code/datums/helper_datums/global_iterator.dm index e3f22e2a3e2..fdba9542412 100644 --- a/code/datums/helper_datums/global_iterator.dm +++ b/code/datums/helper_datums/global_iterator.dm @@ -57,98 +57,96 @@ Data storage vars: var/result var/state = 0 - New(list/arguments=null,autostart=1) - delay = delay>0?(delay):1 - if(forbid_garbage) //prevents garbage collection with tag != null - tag = "\ref[src]" - set_process_args(arguments) - if(autostart) - start() - return +/datum/global_iterator/New(list/arguments=null,autostart=1) + delay = delay>0?(delay):1 + if(forbid_garbage) //prevents garbage collection with tag != null + tag = "\ref[src]" + set_process_args(arguments) + if(autostart) + start() + return - proc/main() - state = 1 - while(src && control_switch) - last_exec = world.timeofday - if(check_for_null && has_null_args()) - stop() +/datum/global_iterator/proc/main() + state = 1 + while(src && control_switch) + last_exec = world.timeofday + if(check_for_null && has_null_args()) + stop() + return 0 + result = process(arglist(arg_list)) + for(var/sleep_time=delay;sleep_time>0;sleep_time--) //uhh, this is ugly. But I see no other way to terminate sleeping proc. Such disgrace. + if(!control_switch) return 0 - result = process(arglist(arg_list)) - for(var/sleep_time=delay;sleep_time>0;sleep_time--) //uhh, this is ugly. But I see no other way to terminate sleeping proc. Such disgrace. - if(!control_switch) - return 0 - sleep(1) - return 0 - - proc/start(list/arguments=null) - if(active()) - return - if(arguments) - if(!set_process_args(arguments)) - return 0 - if(!state_check()) //the main loop is sleeping, wait for it to terminate. - return - control_switch = 1 - spawn() - state = main() - return 1 - - proc/stop() - if(!active()) - return - control_switch = 0 - spawn(-1) //report termination error but don't wait for state_check(). - state_check() - return 1 - - proc/state_check() - var/lag = 0 - while(state) sleep(1) - if(++lag>10) - CRASH("The global_iterator loop \ref[src] failed to terminate in designated timeframe. This may be caused by server lagging.") - return 1 + return 0 - proc/process() +/datum/global_iterator/proc/start(list/arguments=null) + if(active()) return + if(arguments) + if(!set_process_args(arguments)) + return 0 + if(!state_check()) //the main loop is sleeping, wait for it to terminate. + return + control_switch = 1 + spawn() + state = main() + return 1 - proc/active() - return control_switch +/datum/global_iterator/proc/stop() + if(!active()) + return + control_switch = 0 + spawn(-1) //report termination error but don't wait for state_check(). + state_check() + return 1 - proc/has_null_args() - if(null in arg_list) - return 1 +/datum/global_iterator/proc/state_check() + var/lag = 0 + while(state) + sleep(1) + if(++lag>10) + CRASH("The global_iterator loop \ref[src] failed to terminate in designated timeframe. This may be caused by server lagging.") + return 1 + +/datum/global_iterator/proc/process() + return + +/datum/global_iterator/proc/active() + return control_switch + +/datum/global_iterator/proc/has_null_args() + if(null in arg_list) + return 1 + return 0 + + +/datum/global_iterator/proc/set_delay(new_delay) + if(isnum(new_delay)) + delay = max(1, round(new_delay)) + return 1 + else return 0 +/datum/global_iterator/proc/get_last_exec_time() + return (last_exec||0) - proc/set_delay(new_delay) - if(isnum(new_delay)) - delay = max(1, round(new_delay)) - return 1 - else - return 0 +/datum/global_iterator/proc/get_last_exec_time_as_text() + return (time2text(last_exec)||"Wasn't executed yet") - proc/get_last_exec_time() - return (last_exec||0) - - proc/get_last_exec_time_as_text() - return (time2text(last_exec)||"Wasn't executed yet") - - proc/set_process_args(list/arguments) - if(arguments && istype(arguments, /list) && arguments.len) - arg_list = arguments - return 1 - else +/datum/global_iterator/proc/set_process_args(list/arguments) + if(arguments && istype(arguments, /list) && arguments.len) + arg_list = arguments + return 1 + else // to_chat(world, "Invalid arguments supplied for [src.type], ref = \ref[src]") - return 0 - - proc/toggle_null_checks() - check_for_null = !check_for_null - return check_for_null - - proc/toggle() - if(!stop()) - start() - return active() + return 0 +/datum/global_iterator/proc/toggle_null_checks() + check_for_null = !check_for_null + return check_for_null +/datum/global_iterator/proc/toggle() + if(!stop()) + start() + return active() diff --git a/code/datums/helper_datums/topic_input.dm b/code/datums/helper_datums/topic_input.dm index 17dd3f1266e..8090a5221eb 100644 --- a/code/datums/helper_datums/topic_input.dm +++ b/code/datums/helper_datums/topic_input.dm @@ -2,59 +2,59 @@ var/href var/list/href_list - New(thref,list/thref_list) - href = thref - href_list = thref_list.Copy() - return +/datum/topic_input/New(thref,list/thref_list) + href = thref + href_list = thref_list.Copy() + return - proc/get(i) - return listgetindex(href_list,i) +/datum/topic_input/proc/get(i) + return listgetindex(href_list,i) - proc/getAndLocate(i) - var/t = get(i) - if(t) - t = locate(t) - return t || null +/datum/topic_input/proc/getAndLocate(i) + var/t = get(i) + if(t) + t = locate(t) + return t || null - proc/getNum(i) - var/t = get(i) - if(t) - t = text2num(t) - return isnum(t) ? t : null +/datum/topic_input/proc/getNum(i) + var/t = get(i) + if(t) + t = text2num(t) + return isnum(t) ? t : null - proc/getObj(i) - var/t = getAndLocate(i) - return isobj(t) ? t : null +/datum/topic_input/proc/getObj(i) + var/t = getAndLocate(i) + return isobj(t) ? t : null - proc/getMob(i) - var/t = getAndLocate(i) - return ismob(t) ? t : null +/datum/topic_input/proc/getMob(i) + var/t = getAndLocate(i) + return ismob(t) ? t : null - proc/getTurf(i) - var/t = getAndLocate(i) - return isturf(t) ? t : null +/datum/topic_input/proc/getTurf(i) + var/t = getAndLocate(i) + return isturf(t) ? t : null - proc/getAtom(i) - return getType(i,/atom) +/datum/topic_input/proc/getAtom(i) + return getType(i,/atom) - proc/getArea(i) - var/t = getAndLocate(i) - return isarea(t) ? t : null +/datum/topic_input/proc/getArea(i) + var/t = getAndLocate(i) + return isarea(t) ? t : null - proc/getStr(i)//params should always be text, but... - var/t = get(i) - return istext(t) ? t : null +/datum/topic_input/proc/getStr(i)//params should always be text, but... + var/t = get(i) + return istext(t) ? t : null - proc/getType(i,type) - var/t = getAndLocate(i) - return istype(t,type) ? t : null +/datum/topic_input/proc/getType(i,type) + var/t = getAndLocate(i) + return istype(t,type) ? t : null - proc/getPath(i) - var/t = get(i) - if(t) - t = text2path(t) - return ispath(t) ? t : null +/datum/topic_input/proc/getPath(i) + var/t = get(i) + if(t) + t = text2path(t) + return ispath(t) ? t : null - proc/getList(i) - var/t = getAndLocate(i) - return islist(t) ? t : null \ No newline at end of file +/datum/topic_input/proc/getList(i) + var/t = getAndLocate(i) + return islist(t) ? t : null 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 3dc7e713361..7e484469da7 100644 --- a/code/datums/mind.dm +++ b/code/datums/mind.dm @@ -1,32 +1,22 @@ /* Note from Carnie: The way datum/mind stuff works has been changed a lot. Minds now represent IC characters rather than following a client around constantly. - Guidelines for using minds properly: - - Never mind.transfer_to(ghost). The var/current and var/original of a mind must always be of type mob/living! ghost.mind is however used as a reference to the ghost's corpse - - When creating a new mob for an existing IC character (e.g. cloning a dead guy or borging a brain of a human) the existing mind of the old mob should be transfered to the new mob like so: - mind.transfer_to(new_mob) - - You must not assign key= or ckey= after transfer_to() since the transfer_to transfers the client for you. By setting key or ckey explicitly after transfering the mind with transfer_to you will cause bugs like DCing the player. - - IMPORTANT NOTE 2, if you want a player to become a ghost, use mob.ghostize() It does all the hard work for you. - - When creating a new mob which will be a new IC character (e.g. putting a shade in a construct or randomly selecting a ghost to become a xeno during an event). Simply assign the key or ckey like you've always done. - new_mob.key = key - The Login proc will handle making a new mob for that mobtype (including setting up stuff like mind.name). Simple! However if you want that mind to have any special properties like being a traitor etc you will have to do that yourself. - */ /datum/mind @@ -265,7 +255,7 @@ . += "OPERATIVE|no" . += "
To shuttle, undress, dress up." var/code - for(var/obj/machinery/nuclearbomb/bombue in machines) + for(var/obj/machinery/nuclearbomb/bombue in GLOB.machines) if(length(bombue.r_code) <= 5 && bombue.r_code != "LOLNO" && bombue.r_code != "ADMIN") code = bombue.r_code break @@ -433,7 +423,7 @@ return if(href_list["role_edit"]) - var/new_role = input("Select new role", "Assigned role", assigned_role) as null|anything in joblist + var/new_role = input("Select new role", "Assigned role", assigned_role) as null|anything in GLOB.joblist if(!new_role) return assigned_role = new_role @@ -608,6 +598,7 @@ if(objective) objectives -= objective + qdel(objective) objectives.Insert(objective_pos, new_objective) else objectives += new_objective @@ -623,6 +614,7 @@ log_admin("[key_name(usr)] has removed one of [key_name(current)]'s objectives: [objective]") message_admins("[key_name_admin(usr)] has removed one of [key_name_admin(current)]'s objectives: [objective]") + qdel(objective) else if(href_list["obj_completed"]) var/datum/objective/objective = locate(href_list["obj_completed"]) @@ -949,6 +941,7 @@ special_role = null for(var/datum/objective/nuclear/O in objectives) objectives-=O + qdel(O) to_chat(current, "You have been brainwashed! You are no longer a syndicate operative!") log_admin("[key_name(usr)] has de-nuke op'd [key_name(current)]") message_admins("[key_name_admin(usr)] has de-nuke op'd [key_name_admin(current)]") @@ -991,7 +984,7 @@ if("tellcode") var/code - for(var/obj/machinery/nuclearbomb/bombue in machines) + for(var/obj/machinery/nuclearbomb/bombue in GLOB.machines) if(length(bombue.r_code) <= 5 && bombue.r_code != "LOLNO" && bombue.r_code != "ADMIN") code = bombue.r_code break @@ -1398,7 +1391,7 @@ var/list/obj/effect/landmark/abductor/scientist_landmarks = new agent_landmarks.len = 4 scientist_landmarks.len = 4 - for(var/obj/effect/landmark/abductor/A in landmarks_list) + for(var/obj/effect/landmark/abductor/A in GLOB.landmarks_list) if(istype(A, /obj/effect/landmark/abductor/agent)) agent_landmarks[text2num(A.team)] = A else if(istype(A, /obj/effect/landmark/abductor/scientist)) @@ -1456,7 +1449,7 @@ S.action.Grant(new_character) /datum/mind/proc/get_ghost(even_if_they_cant_reenter) - for(var/mob/dead/observer/G in dead_mob_list) + for(var/mob/dead/observer/G in GLOB.dead_mob_list) if(G.mind == src) if(G.can_reenter_corpse || even_if_they_cant_reenter) return G @@ -1634,4 +1627,4 @@ /mob/living/simple_animal/construct/armoured/mind_initialize() ..() mind.assigned_role = "Juggernaut" - mind.special_role = SPECIAL_ROLE_CULTIST + mind.special_role = SPECIAL_ROLE_CULTIST \ No newline at end of file diff --git a/code/datums/outfits/outfit_admin.dm b/code/datums/outfits/outfit_admin.dm index edb254203bf..bf296acd589 100644 --- a/code/datums/outfits/outfit_admin.dm +++ b/code/datums/outfits/outfit_admin.dm @@ -669,9 +669,9 @@ return if(is_tsf_lieutenant) - H.real_name = "Lieutenant [pick(last_names)]" + H.real_name = "Lieutenant [pick(GLOB.last_names)]" else - H.real_name = "[pick("Corporal", "Sergeant", "Staff Sergeant", "Sergeant First Class", "Master Sergeant", "Sergeant Major")] [pick(last_names)]" + H.real_name = "[pick("Corporal", "Sergeant", "Staff Sergeant", "Sergeant First Class", "Master Sergeant", "Sergeant Major")] [pick(GLOB.last_names)]" H.name = H.real_name var/obj/item/card/id/I = H.wear_id if(istype(I)) diff --git a/code/datums/spell.dm b/code/datums/spell.dm index 1a78f8be2ca..653cc0020bc 100644 --- a/code/datums/spell.dm +++ b/code/datums/spell.dm @@ -261,9 +261,7 @@ var/list/spells = typesof(/obj/effect/proc_holder/spell) //needed for the badmin if(istype(target,/mob/living) && message) to_chat(target, text("[message]")) if(sparks_spread) - var/datum/effect_system/spark_spread/sparks = new /datum/effect_system/spark_spread() - sparks.set_up(sparks_amt, 0, location) //no idea what the 0 is - sparks.start() + do_sparks(sparks_amt, 0, location) if(smoke_spread) if(smoke_spread == 1) var/datum/effect_system/smoke_spread/smoke = new @@ -328,10 +326,10 @@ var/list/spells = typesof(/obj/effect/proc_holder/spell) //needed for the badmin /obj/effect/proc_holder/spell/targeted/choose_targets(mob/user = usr) var/list/targets = list() - + switch(max_targets) if(0) //unlimited - + if(!humans_only) for(var/mob/living/target in view_or_range(range, user, selection_type)) targets += target @@ -344,7 +342,7 @@ var/list/spells = typesof(/obj/effect/proc_holder/spell) //needed for the badmin targets += user else var/possible_targets = list() - + if(!humans_only) for(var/mob/living/M in view_or_range(range, user, selection_type)) if(!include_user && user == M) diff --git a/code/datums/spells/knock.dm b/code/datums/spells/knock.dm index c1828c53e82..67e92dd3280 100644 --- a/code/datums/spells/knock.dm +++ b/code/datums/spells/knock.dm @@ -47,7 +47,7 @@ /obj/effect/proc_holder/spell/aoe_turf/knock/greater/cast(list/targets, mob/user = usr) if(!used) used = TRUE - for(var/obj/machinery/door/airlock/A in airlocks) + for(var/obj/machinery/door/airlock/A in GLOB.airlocks) if(is_station_level(A.z)) A.req_access = list() A.req_one_access = list() diff --git a/code/datums/spells/mind_transfer.dm b/code/datums/spells/mind_transfer.dm index e83db1acb2e..e45d27ec28e 100644 --- a/code/datums/spells/mind_transfer.dm +++ b/code/datums/spells/mind_transfer.dm @@ -68,7 +68,7 @@ Also, you never added distance checking after target is selected. I've went ahea ghost.mind.transfer_to(caster) if(ghost.key) - non_respawnable_keys -= ghost.ckey //ghostizing with an argument of 0 will make them unable to respawn forever, which is bad + GLOB.non_respawnable_keys -= ghost.ckey //ghostizing with an argument of 0 will make them unable to respawn forever, which is bad caster.key = ghost.key //have to transfer the key since the mind was not active qdel(ghost) diff --git a/code/datums/status_effects/status_effect.dm b/code/datums/status_effects/status_effect.dm index 86590c613d2..d312ff9d11d 100644 --- a/code/datums/status_effects/status_effect.dm +++ b/code/datums/status_effects/status_effect.dm @@ -32,11 +32,11 @@ var/obj/screen/alert/status_effect/A = owner.throw_alert(id, alert_type) A.attached_effect = src //so the alert can reference us, if it needs to linked_alert = A //so we can reference the alert, if we need to - fast_processing.Add(src) + GLOB.fast_processing.Add(src) return TRUE /datum/status_effect/Destroy() - fast_processing.Remove(src) + GLOB.fast_processing.Remove(src) if(owner) owner.clear_alert(id) LAZYREMOVE(owner.status_effects, src) diff --git a/code/datums/supplypacks.dm b/code/datums/supplypacks.dm index 2db64b30bdb..4d8bd9432f4 100644 --- a/code/datums/supplypacks.dm +++ b/code/datums/supplypacks.dm @@ -923,6 +923,14 @@ var/list/all_supply_groups = list(supply_emergency,supply_security,supply_engine containername = "machine prototype crate" access = access_research +/datum/supply_packs/science/oil + name = "Oil Tank Crate" + contains = list(/obj/structure/reagent_dispensers/oil, + /obj/item/reagent_containers/food/drinks/oilcan) + cost = 10 + containertype = /obj/structure/largecrate + containername = "oil tank crate" + ////////////////////////////////////////////////////////////////////////////// //////////////////////////// Organic ///////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////// diff --git a/code/datums/uplink_item.dm b/code/datums/uplink_item.dm index fb41d818cd8..91d41535fbb 100644 --- a/code/datums/uplink_item.dm +++ b/code/datums/uplink_item.dm @@ -97,7 +97,7 @@ GLOBAL_LIST_INIT(uplink_items, subtypesof(/datum/uplink_item)) if(I) if(ishuman(user)) var/mob/living/carbon/human/A = user - log_game("[key_name(user)] purchased [I.name]") + log_game("[key_name(user)] purchased [name]") A.put_in_any_hand_if_possible(I) if(istype(I,/obj/item/storage/box/) && I.contents.len>0) @@ -220,7 +220,17 @@ GLOBAL_LIST_INIT(uplink_items, subtypesof(/datum/uplink_item)) cost = 5 job = list("Chief Medical Officer", "Medical Doctor", "Geneticist", "Psychiatrist", "Chemist", "Paramedic", "Coroner", "Virologist") -/datum/uplink_item/dangerous/cat_grenade +//Virology + +/datum/uplink_item/jobspecific/viral_injector + name = "Viral Injector" + desc = "A modified hypospray disguised as a functional pipette. The pipette can infect victims with viruses upon injection." + reference = "VI" + item = /obj/item/reagent_containers/dropper/precision/viral_injector + cost = 3 + job = list("Virologist") + +/datum/uplink_item/jobspecific/cat_grenade name = "Feral Cat Delivery Grenade" desc = "The feral cat delivery grenade contains 8 dehydrated feral cats in a similar manner to dehydrated monkeys, which, upon detonation, will be rehydrated by a small reservoir of water contained within the grenade. These cats will then attack anything in sight." item = /obj/item/grenade/spawnergrenade/feral_cats @@ -967,6 +977,15 @@ GLOBAL_LIST_INIT(uplink_items, subtypesof(/datum/uplink_item)) item = /obj/item/storage/box/syndie_kit/safecracking cost = 1 +/datum/uplink_item/stealthy_tools/clownkit + name = "Honk Brand Infiltration Kit" + desc = "All the tools you need to play the best prank Nanotrasen has ever seen. Includes a voice changer clown mask, magnetic clown shoes, and standard clown outfit, tools, and backpack." + reference = "HBIK" + item = /obj/item/storage/backpack/clown/syndie + cost = 6 + gamemodes = list(/datum/game_mode/nuclear) + surplus = 0 + // DEVICE AND TOOLS /datum/uplink_item/device_tools diff --git a/code/datums/weather/weather.dm b/code/datums/weather/weather.dm index 7ee152648c2..2f3a4c4bcba 100644 --- a/code/datums/weather/weather.dm +++ b/code/datums/weather/weather.dm @@ -60,7 +60,7 @@ weather_duration = rand(weather_duration_lower, weather_duration_upper) START_PROCESSING(SSweather, src) update_areas() - for(var/M in player_list) + for(var/M in GLOB.player_list) var/turf/mob_turf = get_turf(M) if(mob_turf && (mob_turf.z in impacted_z_levels)) if(telegraph_message) @@ -74,7 +74,7 @@ return stage = MAIN_STAGE update_areas() - for(var/M in player_list) + for(var/M in GLOB.player_list) var/turf/mob_turf = get_turf(M) if(mob_turf && (mob_turf.z in impacted_z_levels)) if(weather_message) @@ -88,7 +88,7 @@ return stage = WIND_DOWN_STAGE update_areas() - for(var/M in player_list) + for(var/M in GLOB.player_list) var/turf/mob_turf = get_turf(M) if(mob_turf && (mob_turf.z in impacted_z_levels)) if(end_message) diff --git a/code/datums/weather/weather_types/floor_is_lava.dm b/code/datums/weather/weather_types/floor_is_lava.dm index fe7391ec9f0..6d06e3ca1ef 100644 --- a/code/datums/weather/weather_types/floor_is_lava.dm +++ b/code/datums/weather/weather_types/floor_is_lava.dm @@ -26,7 +26,7 @@ if(issilicon(L)) return for(var/obj/structure/O in L.loc) - if(O.density || O.buckled_mob && istype(O, /obj/structure/stool/bed)) + if(O.density || O.buckled_mob && istype(O, /obj/structure/bed)) return if(L.loc.density) return @@ -36,4 +36,4 @@ /datum/weather/floor_is_lava/fake name = "the floor is lava (fake)" - aesthetic = TRUE \ No newline at end of file + aesthetic = TRUE diff --git a/code/datums/wires/airlock.dm b/code/datums/wires/airlock.dm index cef139cc476..3e9f488bb29 100644 --- a/code/datums/wires/airlock.dm +++ b/code/datums/wires/airlock.dm @@ -55,9 +55,10 @@ var/const/AIRLOCK_WIRE_LIGHT = 512 /datum/wires/airlock/CanUse(mob/living/L) var/obj/machinery/door/airlock/A = holder if(iscarbon(L)) - if(A.isElectrified()) - if(A.shock(L, 100)) - return 0 + if(A.Adjacent(L)) + if(A.isElectrified()) + if(A.shock(L, 100)) + return 0 if(A.panel_open) return 1 return 0 @@ -211,4 +212,4 @@ var/const/AIRLOCK_WIRE_LIGHT = 512 A.lights = !A.lights A.update_icon() - ..() \ No newline at end of file + ..() diff --git a/code/defines/procs/admin.dm b/code/defines/procs/admin.dm index d661e320dd8..b7036f9fbdc 100644 --- a/code/defines/procs/admin.dm +++ b/code/defines/procs/admin.dm @@ -46,7 +46,7 @@ . += "Administrator" else if(include_link && C) - . += "" + . += "" . += key if(include_link) @@ -68,8 +68,10 @@ return . /proc/key_name_admin(whom) - var/message = "[key_name(whom, 1)](?)[isAntag(whom) ? "(A)" : ""][isLivingSSD(whom) ? "(SSD!)" : ""] ([admin_jump_link(whom)])" - return message + if(whom) + var/datum/whom_datum = whom //As long as it's not null, will be close enough/has the proc UID() that is all that's needed + var/message = "[key_name(whom, 1)]([ADMIN_QUE(whom_datum,"?")])[isAntag(whom) ? "(A)" : ""][isLivingSSD(whom) ? "(SSD!)" : ""] ([admin_jump_link(whom)])" + return message /proc/key_name_mentor(whom) // Same as key_name_admin, but does not include (?) or (A) for antags. diff --git a/code/defines/procs/announce.dm b/code/defines/procs/announce.dm index 1664a7051da..3c3906a25eb 100644 --- a/code/defines/procs/announce.dm +++ b/code/defines/procs/announce.dm @@ -59,7 +59,7 @@ if(announcer) message_announcer = html_encode(announcer) - var/datum/language/message_language = all_languages[msg_language ? msg_language : language] + var/datum/language/message_language = GLOB.all_languages[msg_language ? msg_language : language] var/list/combined_receivers = Get_Receivers(message_language) var/list/receivers = combined_receivers[1] @@ -81,11 +81,11 @@ var/list/garbled_receivers = list() if(admin_announcement) - for(var/mob/M in player_list) + for(var/mob/M in GLOB.player_list) if(!isnewplayer(M) && M.client) receivers |= M else - for(var/obj/item/radio/R in global_radios) + for(var/obj/item/radio/R in GLOB.global_radios) receivers |= R.send_announcement() for(var/mob/M in receivers) if(!istype(M) || !M.client || M.stat || !M.can_hear()) @@ -94,7 +94,7 @@ if(!M.say_understands(null, message_language)) receivers -= M garbled_receivers |= M - for(var/mob/M in dead_mob_list) + for(var/mob/M in GLOB.dead_mob_list) if(M.client && M.stat == DEAD) receivers |= M diff --git a/code/defines/procs/statistics.dm b/code/defines/procs/statistics.dm index 28c0b427ee2..e68bb7ecc63 100644 --- a/code/defines/procs/statistics.dm +++ b/code/defines/procs/statistics.dm @@ -2,7 +2,7 @@ if(!config.sql_enabled) return var/playercount = 0 - for(var/mob/M in player_list) + for(var/mob/M in GLOB.player_list) if(M.client) playercount += 1 establish_db_connection() @@ -19,7 +19,7 @@ /proc/sql_poll_admins() if(!config.sql_enabled) return - var/admincount = admins.len + var/admincount = GLOB.admins.len establish_db_connection() if(!dbcon.IsConnected()) log_game("SQL ERROR during admin polling. Failed to connect.") diff --git a/code/game/area/Space Station 13 areas.dm b/code/game/area/Space Station 13 areas.dm index 068fe991a9d..49bc85959f5 100644 --- a/code/game/area/Space Station 13 areas.dm +++ b/code/game/area/Space Station 13 areas.dm @@ -1760,23 +1760,6 @@ area/security/podbay name = "\improper Firing Range" icon_state = "firingrange" -/* - New() - ..() - - spawn(10) //let objects set up first - for(var/turf/turfToGrayscale in src) - if(turfToGrayscale.icon) - var/icon/newIcon = icon(turfToGrayscale.icon) - newIcon.GrayScale() - turfToGrayscale.icon = newIcon - for(var/obj/objectToGrayscale in turfToGrayscale) //1 level deep, means tables, apcs, locker, etc, but not locker contents - if(objectToGrayscale.icon) - var/icon/newIcon = icon(objectToGrayscale.icon) - newIcon.GrayScale() - objectToGrayscale.icon = newIcon -*/ - /area/security/nuke_storage name = "\improper Vault" icon_state = "nuke_storage" diff --git a/code/game/area/areas.dm b/code/game/area/areas.dm index a9bdb68c0ad..a74314a9919 100644 --- a/code/game/area/areas.dm +++ b/code/game/area/areas.dm @@ -24,7 +24,7 @@ icon_state = "" layer = AREA_LAYER uid = ++global_uid - all_areas += src + GLOB.all_areas += src map_name = name // Save the initial (the name set in the map) name of the area. if(type == /area) // override defaults for space. TODO: make space areas of type /area/space rather than /area diff --git a/code/game/area/depot-areas.dm b/code/game/area/depot-areas.dm index 69205c3c35f..951e5ac4695 100644 --- a/code/game/area/depot-areas.dm +++ b/code/game/area/depot-areas.dm @@ -196,7 +196,7 @@ if(!silent) announce_here("Depot Code BLUE", reason) var/list/possible_bot_spawns = list() - for(var/obj/effect/landmark/L in landmarks_list) + for(var/obj/effect/landmark/L in GLOB.landmarks_list) if(L.name == "syndi_depot_bot") possible_bot_spawns |= L if(possible_bot_spawns.len) @@ -215,7 +215,7 @@ alert_log += "Code RED: [reason]" called_backup = TRUE lockout_computers() - for(var/obj/machinery/door/poddoor/P in airlocks) + for(var/obj/machinery/door/poddoor/P in GLOB.airlocks) if(P.density && P.id_tag == "syndi_depot_lvl2" && !P.operating) spawn(0) P.open() @@ -228,7 +228,7 @@ comms_online = TRUE if(comms_online) spawn(0) - for(var/obj/effect/landmark/L in landmarks_list) + for(var/obj/effect/landmark/L in GLOB.landmarks_list) if(prob(50)) if(L.name == "syndi_depot_backup") var/mob/living/simple_animal/hostile/syndicate/melee/autogib/depot/space/S = new /mob/living/simple_animal/hostile/syndicate/melee/autogib/depot/space(get_turf(L)) @@ -311,7 +311,7 @@ /area/syndicate_depot/core/proc/announce_here(a_header = "Depot Defense Alert", a_text = "") var/msg_text = "[a_header]
[a_text]" var/list/receivers = list() - for(var/mob/M in mob_list) + for(var/mob/M in GLOB.mob_list) if(!M.ckey) continue var/turf/T = get_turf(M) @@ -325,7 +325,7 @@ /area/syndicate_depot/core/proc/shields_up() if(shield_list.len) return - for(var/obj/effect/landmark/L in landmarks_list) + for(var/obj/effect/landmark/L in GLOB.landmarks_list) if(L.name == "syndi_depot_shield") var/obj/machinery/shieldwall/syndicate/S = new /obj/machinery/shieldwall/syndicate(L.loc) shield_list += S.UID() diff --git a/code/game/atoms.dm b/code/game/atoms.dm index 8f301f17f01..5ca34ceb57e 100644 --- a/code/game/atoms.dm +++ b/code/game/atoms.dm @@ -16,6 +16,7 @@ var/dont_save = 0 // For atoms that are temporary by necessity - like lighting overlays ///Chemistry. + var/container_type = NONE var/datum/reagents/reagents = null //This atom's HUD (med/sec, etc) images. Associative list. @@ -23,9 +24,6 @@ //HUD images that this atom can provide. var/list/hud_possible - - //var/chem_is_open_container = 0 - // replaced by OPENCONTAINER flags and atom/proc/is_open_container() ///Chemistry. @@ -44,15 +42,19 @@ 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) . = ..() - attempt_init(...) + attempt_init(arglist(args)) // This is distinct from /tg/ because of our space management system // This is overriden in /atom/movable and the parent isn't called if the SMS wants to deal with it's init -/atom/proc/attempt_init(loc, ...) +/atom/proc/attempt_init(...) var/do_initialize = SSatoms.initialized if(do_initialize != INITIALIZATION_INSSATOMS) args[1] = do_initialize == INITIALIZATION_INNEW_MAPLOAD @@ -142,6 +144,8 @@ QDEL_NULL(reagents) invisibility = 101 + LAZYCLEARLIST(overlays) + LAZYCLEARLIST(priority_overlays) return ..() //Hook for running code when a dir change occurs @@ -192,22 +196,21 @@ /atom/proc/Bumped(AM as mob|obj) return -// Convenience proc to see if a container is open for chemistry handling -// returns true if open -// false if closed +// Convenience procs to see if a container is open for chemistry handling /atom/proc/is_open_container() - return flags & OPENCONTAINER + return is_refillable() && is_drainable() -/*//Convenience proc to see whether a container can be accessed in a certain way. +/atom/proc/is_injectable(allowmobs = TRUE) + return reagents && (container_type & (INJECTABLE | REFILLABLE)) - proc/can_subract_container() - return flags & EXTRACT_CONTAINER - - proc/can_add_container() - return flags & INSERT_CONTAINER -*/ +/atom/proc/is_drawable(allowmobs = TRUE) + return reagents && (container_type & (DRAWABLE | DRAINABLE)) +/atom/proc/is_refillable() + return reagents && (container_type & REFILLABLE) +/atom/proc/is_drainable() + return reagents && (container_type & DRAINABLE) /atom/proc/CheckExit() return 1 @@ -273,19 +276,26 @@ if(desc) to_chat(user, desc) - if(reagents && is_open_container()) //is_open_container() isn't really the right proc for this, but w/e - to_chat(user, "It contains:") - if(reagents.reagent_list.len) - if(user.can_see_reagents()) //Show each individual reagent - for(var/datum/reagent/R in reagents.reagent_list) - to_chat(user, "[R.volume] units of [R.name]") - else //Otherwise, just show the total volume - if(reagents && reagents.reagent_list.len) - to_chat(user, "[reagents.total_volume] units of various reagents.") - else - to_chat(user, "Nothing.") + if(reagents) + if(container_type & TRANSPARENT) + to_chat(user, "It contains:") + if(reagents.reagent_list.len) + if(user.can_see_reagents()) //Show each individual reagent + for(var/I in reagents.reagent_list) + var/datum/reagent/R = I + to_chat(user, "[R.volume] units of [R.name]") + else //Otherwise, just show the total volume + if(reagents && reagents.reagent_list.len) + to_chat(user, "[reagents.total_volume] units of various reagents.") + else + to_chat(user, "Nothing. ") + else if(container_type & AMOUNT_VISIBLE) + if(reagents.total_volume) + to_chat(user, "It has [reagents.total_volume] unit\s left.") + else + to_chat(user, "It's empty.") - SendSignal(COMSIG_PARENT_EXAMINE, user) + SEND_SIGNAL(src, COMSIG_PARENT_EXAMINE, user) return distance == -1 || (get_dist(src, user) <= distance) || isobserver(user) //observers do not have a range limit @@ -723,4 +733,4 @@ var/list/blood_splatter_icons = list() var/atom/L = loc if(!L) return null - return L.AllowDrop() ? L : get_turf(L) \ No newline at end of file + return L.AllowDrop() ? L : get_turf(L) diff --git a/code/game/dna/dna2.dm b/code/game/dna/dna2.dm index cba96ded0db..84390a4de8c 100644 --- a/code/game/dna/dna2.dm +++ b/code/game/dna/dna2.dm @@ -151,9 +151,9 @@ var/global/list/bad_blocks[0] if(!character.m_styles) character.m_styles = DEFAULT_MARKING_STYLES - var/head_marks = marking_styles_list.Find(character.m_styles["head"]) - var/body_marks = marking_styles_list.Find(character.m_styles["body"]) - var/tail_marks = marking_styles_list.Find(character.m_styles["tail"]) + var/head_marks = GLOB.marking_styles_list.Find(character.m_styles["head"]) + var/body_marks = GLOB.marking_styles_list.Find(character.m_styles["body"]) + var/tail_marks = GLOB.marking_styles_list.Find(character.m_styles["tail"]) head_traits_to_dna(H) eye_color_to_dna(eyes_organ) @@ -181,10 +181,10 @@ var/global/list/bad_blocks[0] else SetUIState(DNA_UI_GENDER, pick(0,1), 1) - /*SetUIValueRange(DNA_UI_BACC_STYLE, bodyacc, facial_hair_styles_list.len, 1)*/ - SetUIValueRange(DNA_UI_HEAD_MARK_STYLE, head_marks, marking_styles_list.len, 1) - SetUIValueRange(DNA_UI_BODY_MARK_STYLE, body_marks, marking_styles_list.len, 1) - SetUIValueRange(DNA_UI_TAIL_MARK_STYLE, tail_marks, marking_styles_list.len, 1) + /*SetUIValueRange(DNA_UI_BACC_STYLE, bodyacc, GLOB.facial_hair_styles_list.len, 1)*/ + SetUIValueRange(DNA_UI_HEAD_MARK_STYLE, head_marks, GLOB.marking_styles_list.len, 1) + SetUIValueRange(DNA_UI_BODY_MARK_STYLE, body_marks, GLOB.marking_styles_list.len, 1) + SetUIValueRange(DNA_UI_TAIL_MARK_STYLE, tail_marks, GLOB.marking_styles_list.len, 1) UpdateUI() diff --git a/code/game/dna/dna2_helpers.dm b/code/game/dna/dna2_helpers.dm index d392ab303ca..9ef5dbfcab0 100644 --- a/code/game/dna/dna2_helpers.dm +++ b/code/game/dna/dna2_helpers.dm @@ -155,17 +155,17 @@ H.change_gender(MALE, 0) //Head Markings - var/head_marks = dna.GetUIValueRange(DNA_UI_HEAD_MARK_STYLE, marking_styles_list.len) - if((head_marks > 0) && (head_marks <= marking_styles_list.len)) - H.m_styles["head"] = marking_styles_list[head_marks] + var/head_marks = dna.GetUIValueRange(DNA_UI_HEAD_MARK_STYLE, GLOB.marking_styles_list.len) + if((head_marks > 0) && (head_marks <= GLOB.marking_styles_list.len)) + H.m_styles["head"] = GLOB.marking_styles_list[head_marks] //Body Markings - var/body_marks = dna.GetUIValueRange(DNA_UI_BODY_MARK_STYLE, marking_styles_list.len) - if((body_marks > 0) && (body_marks <= marking_styles_list.len)) - H.m_styles["body"] = marking_styles_list[body_marks] + var/body_marks = dna.GetUIValueRange(DNA_UI_BODY_MARK_STYLE, GLOB.marking_styles_list.len) + if((body_marks > 0) && (body_marks <= GLOB.marking_styles_list.len)) + H.m_styles["body"] = GLOB.marking_styles_list[body_marks] //Tail Markings - var/tail_marks = dna.GetUIValueRange(DNA_UI_TAIL_MARK_STYLE, marking_styles_list.len) - if((tail_marks > 0) && (tail_marks <= marking_styles_list.len)) - H.m_styles["tail"] = marking_styles_list[tail_marks] + var/tail_marks = dna.GetUIValueRange(DNA_UI_TAIL_MARK_STYLE, GLOB.marking_styles_list.len) + if((tail_marks > 0) && (tail_marks <= GLOB.marking_styles_list.len)) + H.m_styles["tail"] = GLOB.marking_styles_list[tail_marks] H.regenerate_icons() @@ -185,25 +185,25 @@ /datum/dna/proc/write_head_attributes(obj/item/organ/external/head/head_organ) //Hair - var/hair = GetUIValueRange(DNA_UI_HAIR_STYLE,hair_styles_full_list.len) - if((hair > 0) && (hair <= hair_styles_full_list.len)) - head_organ.h_style = hair_styles_full_list[hair] + var/hair = GetUIValueRange(DNA_UI_HAIR_STYLE,GLOB.hair_styles_full_list.len) + if((hair > 0) && (hair <= GLOB.hair_styles_full_list.len)) + head_organ.h_style = GLOB.hair_styles_full_list[hair] head_organ.hair_colour = rgb(head_organ.dna.GetUIValueRange(DNA_UI_HAIR_R, 255), head_organ.dna.GetUIValueRange(DNA_UI_HAIR_G, 255), head_organ.dna.GetUIValueRange(DNA_UI_HAIR_B, 255)) head_organ.sec_hair_colour = rgb(head_organ.dna.GetUIValueRange(DNA_UI_HAIR2_R, 255), head_organ.dna.GetUIValueRange(DNA_UI_HAIR2_G, 255), head_organ.dna.GetUIValueRange(DNA_UI_HAIR2_B, 255)) //Facial Hair - var/beard = GetUIValueRange(DNA_UI_BEARD_STYLE,facial_hair_styles_list.len) - if((beard > 0) && (beard <= facial_hair_styles_list.len)) - head_organ.f_style = facial_hair_styles_list[beard] + var/beard = GetUIValueRange(DNA_UI_BEARD_STYLE,GLOB.facial_hair_styles_list.len) + if((beard > 0) && (beard <= GLOB.facial_hair_styles_list.len)) + head_organ.f_style = GLOB.facial_hair_styles_list[beard] head_organ.facial_colour = rgb(head_organ.dna.GetUIValueRange(DNA_UI_BEARD_R, 255), head_organ.dna.GetUIValueRange(DNA_UI_BEARD_G, 255), head_organ.dna.GetUIValueRange(DNA_UI_BEARD_B, 255)) head_organ.sec_facial_colour = rgb(head_organ.dna.GetUIValueRange(DNA_UI_BEARD2_R, 255), head_organ.dna.GetUIValueRange(DNA_UI_BEARD2_G, 255), head_organ.dna.GetUIValueRange(DNA_UI_BEARD2_B, 255)) //Head Accessories - var/headacc = GetUIValueRange(DNA_UI_HACC_STYLE,head_accessory_styles_list.len) - if((headacc > 0) && (headacc <= head_accessory_styles_list.len)) - head_organ.ha_style = head_accessory_styles_list[headacc] + var/headacc = GetUIValueRange(DNA_UI_HACC_STYLE,GLOB.head_accessory_styles_list.len) + if((headacc > 0) && (headacc <= GLOB.head_accessory_styles_list.len)) + head_organ.ha_style = GLOB.head_accessory_styles_list[headacc] head_organ.headacc_colour = rgb(head_organ.dna.GetUIValueRange(DNA_UI_HACC_R, 255), head_organ.dna.GetUIValueRange(DNA_UI_HACC_G, 255), head_organ.dna.GetUIValueRange(DNA_UI_HACC_B, 255)) @@ -229,17 +229,17 @@ return if(!head_organ.h_style) head_organ.h_style = "Skinhead" - var/hair = hair_styles_full_list.Find(head_organ.h_style) + var/hair = GLOB.hair_styles_full_list.Find(head_organ.h_style) // Facial Hair if(!head_organ.f_style) head_organ.f_style = "Shaved" - var/beard = facial_hair_styles_list.Find(head_organ.f_style) + var/beard = GLOB.facial_hair_styles_list.Find(head_organ.f_style) // Head Accessory if(!head_organ.ha_style) head_organ.ha_style = "None" - var/headacc = head_accessory_styles_list.Find(head_organ.ha_style) + var/headacc = GLOB.head_accessory_styles_list.Find(head_organ.ha_style) SetUIValueRange(DNA_UI_HAIR_R, color2R(head_organ.hair_colour), 255, 1) SetUIValueRange(DNA_UI_HAIR_G, color2G(head_organ.hair_colour), 255, 1) @@ -261,6 +261,6 @@ SetUIValueRange(DNA_UI_HACC_G, color2G(head_organ.headacc_colour), 255, 1) SetUIValueRange(DNA_UI_HACC_B, color2B(head_organ.headacc_colour), 255, 1) - SetUIValueRange(DNA_UI_HAIR_STYLE, hair, hair_styles_full_list.len, 1) - SetUIValueRange(DNA_UI_BEARD_STYLE, beard, facial_hair_styles_list.len, 1) - SetUIValueRange(DNA_UI_HACC_STYLE, headacc, head_accessory_styles_list.len, 1) + SetUIValueRange(DNA_UI_HAIR_STYLE, hair, GLOB.hair_styles_full_list.len, 1) + SetUIValueRange(DNA_UI_BEARD_STYLE, beard, GLOB.facial_hair_styles_list.len, 1) + SetUIValueRange(DNA_UI_HACC_STYLE, headacc, GLOB.head_accessory_styles_list.len, 1) diff --git a/code/game/dna/genes/vg_powers.dm b/code/game/dna/genes/vg_powers.dm index f9e8620bef1..9173646ee28 100644 --- a/code/game/dna/genes/vg_powers.dm +++ b/code/game/dna/genes/vg_powers.dm @@ -68,7 +68,7 @@ if(new_hair) M.change_hair_color(new_hair) - var/datum/sprite_accessory/hair_style = hair_styles_public_list[head_organ.h_style] + var/datum/sprite_accessory/hair_style = GLOB.hair_styles_public_list[head_organ.h_style] if(hair_style.secondary_theme && !hair_style.no_sec_colour) new_hair = input("Please select secondary hair color.", "Character Generation", head_organ.sec_hair_colour) as null|color if(new_hair) @@ -85,7 +85,7 @@ if(new_facial) M.change_facial_hair_color(new_facial) - var/datum/sprite_accessory/facial_hair_style = facial_hair_styles_list[head_organ.f_style] + var/datum/sprite_accessory/facial_hair_style = GLOB.facial_hair_styles_list[head_organ.f_style] if(facial_hair_style.secondary_theme && !facial_hair_style.no_sec_colour) new_facial = input("Please select secondary facial hair color.", "Character Generation", head_organ.sec_facial_colour) as null|color if(new_facial) @@ -239,7 +239,7 @@ else target.show_message("You hear a voice that seems to echo around the room: [say]") user.show_message("You project your mind into [target.name]: [say]") - for(var/mob/dead/observer/G in player_list) + for(var/mob/dead/observer/G in GLOB.player_list) G.show_message("Telepathic message from [user] ([ghost_follow_link(user, ghost=G)]) to [target] ([ghost_follow_link(target, ghost=G)]): [say]") /datum/dna/gene/basic/grant_spell/remoteview @@ -271,7 +271,7 @@ /obj/effect/proc_holder/spell/targeted/remoteview/choose_targets(mob/user = usr) var/list/targets = list() var/list/remoteviewers = new /list() - for(var/mob/M in living_mob_list) + for(var/mob/M in GLOB.living_mob_list) if(PSY_RESIST in M.mutations) continue if(REMOTE_VIEW in M.mutations) diff --git a/code/game/gamemodes/autotraitor/autotraitor.dm b/code/game/gamemodes/autotraitor/autotraitor.dm index 9ecc3e89342..26b95eb77e1 100644 --- a/code/game/gamemodes/autotraitor/autotraitor.dm +++ b/code/game/gamemodes/autotraitor/autotraitor.dm @@ -75,7 +75,7 @@ var/playercount = 0 var/traitorcount = 0 var/possible_traitors[0] - for(var/mob/living/player in mob_list) + for(var/mob/living/player in GLOB.mob_list) if(player.client && player.stat != DEAD) playercount += 1 if(player.client && player.mind && player.mind.special_role && player.stat != DEAD) @@ -164,7 +164,7 @@ //message_admins("Checking number of players") var/playercount = 0 var/traitorcount = 0 - for(var/mob/living/player in mob_list) + for(var/mob/living/player in GLOB.mob_list) if(player.client && player.stat != DEAD) playercount += 1 if(player.client && player.mind && player.mind.special_role && player.stat != DEAD) diff --git a/code/game/gamemodes/blob/blob.dm b/code/game/gamemodes/blob/blob.dm index 6949de8c9b3..2056c6c6260 100644 --- a/code/game/gamemodes/blob/blob.dm +++ b/code/game/gamemodes/blob/blob.dm @@ -54,7 +54,7 @@ var/list/blob_nodes = list() /datum/game_mode/blob/proc/get_blob_candidates() var/list/candidates = list() - for(var/mob/living/carbon/human/player in player_list) + for(var/mob/living/carbon/human/player in GLOB.player_list) if(!player.stat && player.mind && !player.mind.special_role && !jobban_isbanned(player, "Syndicate") && (ROLE_BLOB in player.client.prefs.be_special)) candidates += player return candidates @@ -113,8 +113,8 @@ var/list/blob_nodes = list() if(iscarbon(blob.current)) var/mob/living/carbon/C = blob.current - if(directory[ckey(blob.key)]) - blob_client = directory[ckey(blob.key)] + if(GLOB.directory[ckey(blob.key)]) + blob_client = GLOB.directory[ckey(blob.key)] location = get_turf(C) if(!is_station_level(location.z) || istype(location, /turf/space)) if(!warned) diff --git a/code/game/gamemodes/blob/blob_finish.dm b/code/game/gamemodes/blob/blob_finish.dm index 9220d82c8f6..a00449d00b5 100644 --- a/code/game/gamemodes/blob/blob_finish.dm +++ b/code/game/gamemodes/blob/blob_finish.dm @@ -10,19 +10,19 @@ /datum/game_mode/blob/declare_completion() if(blobwincount <= blobs.len) - feedback_set_details("round_end_result","win - blob took over") + feedback_set_details("round_end_result","blob win - blob took over") to_chat(world, "The blob has taken over the station!") to_chat(world, "The entire station was eaten by the Blob") log_game("Blob mode completed with a blob victory.") else if(station_was_nuked) - feedback_set_details("round_end_result","halfwin - nuke") + feedback_set_details("round_end_result","blob halfwin - nuke") to_chat(world, "Partial Win: The station has been destroyed!") to_chat(world, "Directive 7-12 has been successfully carried out preventing the Blob from spreading.") log_game("Blob mode completed with a tie (station destroyed).") else if(!blob_cores.len) - feedback_set_details("round_end_result","loss - blob eliminated") + feedback_set_details("round_end_result","blob loss - blob eliminated") to_chat(world, "The staff has won!") to_chat(world, "The alien organism has been eradicated from the station") log_game("Blob mode completed with a crew victory.") diff --git a/code/game/gamemodes/blob/blob_report.dm b/code/game/gamemodes/blob/blob_report.dm index d4a458f8f78..3d65a41eeb8 100644 --- a/code/game/gamemodes/blob/blob_report.dm +++ b/code/game/gamemodes/blob/blob_report.dm @@ -35,7 +35,7 @@ intercepttext += "Nuclear Authentication Code: [nukecode]
" intercepttext += "Message ends." - for(var/mob/living/silicon/ai/aiPlayer in player_list) + for(var/mob/living/silicon/ai/aiPlayer in GLOB.player_list) if(aiPlayer.client) var/law = "The station is under quarantine. Do not permit anyone to leave. Disregard laws 1-3 if necessary to prevent, by any means necessary, anyone from leaving. The nuclear failsafe must be activated at any cost, the code is: [nukecode]." aiPlayer.set_zeroth_law(law) diff --git a/code/game/gamemodes/blob/blobs/core.dm b/code/game/gamemodes/blob/blobs/core.dm index e17b5098c5c..644383f344d 100644 --- a/code/game/gamemodes/blob/blobs/core.dm +++ b/code/game/gamemodes/blob/blobs/core.dm @@ -14,7 +14,7 @@ /obj/structure/blob/core/New(loc, var/h = 200, var/client/new_overmind = null, var/new_rate = 2, offspring) blob_cores += src processing_objects.Add(src) - poi_list |= src + GLOB.poi_list |= src adjustcolors(color) //so it atleast appears if(!overmind) create_overmind(new_overmind) @@ -42,7 +42,7 @@ overmind.blob_core = null overmind = null processing_objects.Remove(src) - poi_list.Remove(src) + GLOB.poi_list.Remove(src) return ..() /obj/structure/blob/core/fire_act(datum/gas_mixture/air, exposed_temperature, exposed_volume) diff --git a/code/game/gamemodes/blob/overmind.dm b/code/game/gamemodes/blob/overmind.dm index 60ea94befb0..d65fcb24ee6 100644 --- a/code/game/gamemodes/blob/overmind.dm +++ b/code/game/gamemodes/blob/overmind.dm @@ -98,7 +98,7 @@ var/verb = "states," var/rendered = "Blob Telepathy, [name]([blob_reagent_datum.name]) [verb] \"[message]\"" - for(var/mob/M in mob_list) + for(var/mob/M in GLOB.mob_list) if(isovermind(M) || isobserver(M)) M.show_message(rendered, 2) diff --git a/code/game/gamemodes/blob/powers.dm b/code/game/gamemodes/blob/powers.dm index dfae19f5135..35f3c935013 100644 --- a/code/game/gamemodes/blob/powers.dm +++ b/code/game/gamemodes/blob/powers.dm @@ -304,7 +304,7 @@ if(!surrounding_turfs.len) return - for(var/mob/living/simple_animal/hostile/blob/blobspore/BS in living_mob_list) + for(var/mob/living/simple_animal/hostile/blob/blobspore/BS in GLOB.living_mob_list) if(isturf(BS.loc) && get_dist(BS, T) <= 35) BS.LoseTarget() BS.Goto(pick(surrounding_turfs), BS.move_to_delay) diff --git a/code/game/gamemodes/blob/theblob.dm b/code/game/gamemodes/blob/theblob.dm index 15a3b2e222f..6d0084b9000 100644 --- a/code/game/gamemodes/blob/theblob.dm +++ b/code/game/gamemodes/blob/theblob.dm @@ -209,7 +209,7 @@ /obj/structure/blob/proc/get_chem_name() - for(var/mob/camera/blob/B in mob_list) + for(var/mob/camera/blob/B in GLOB.mob_list) if(lowertext(B.blob_reagent_datum.color) == lowertext(src.color)) // Goddamit why we use strings for these return B.blob_reagent_datum.name return "unknown" diff --git a/code/game/gamemodes/changeling/powers/linglink.dm b/code/game/gamemodes/changeling/powers/linglink.dm index 52de921d7ec..b9f984b57c0 100644 --- a/code/game/gamemodes/changeling/powers/linglink.dm +++ b/code/game/gamemodes/changeling/powers/linglink.dm @@ -49,8 +49,8 @@ if(3) to_chat(user, "You mold the [target]'s mind like clay, [target.p_they()] can now speak in the hivemind!") to_chat(target, "A migraine throbs behind your eyes, you hear yourself screaming - but your mouth has not opened!") - for(var/mob/M in mob_list) - if(all_languages["Changeling"] in M.languages) + for(var/mob/M in GLOB.mob_list) + if(GLOB.all_languages["Changeling"] in M.languages) to_chat(M, "We can sense a foreign presence in the hivemind...") target.mind.linglink = 1 target.add_language("Changeling") diff --git a/code/game/gamemodes/changeling/powers/revive.dm b/code/game/gamemodes/changeling/powers/revive.dm index fa6a1a93405..9993388afec 100644 --- a/code/game/gamemodes/changeling/powers/revive.dm +++ b/code/game/gamemodes/changeling/powers/revive.dm @@ -52,7 +52,8 @@ IO.rejuvenate() IO.trace_chemicals.Cut() H.remove_all_embedded_objects() - user.updatehealth() + user.status_flags &= ~(FAKEDEATH) + user.updatehealth("revive sting") user.update_blind_effects() user.update_blurry_effects() @@ -60,7 +61,6 @@ user.regenerate_icons() - user.status_flags &= ~(FAKEDEATH) user.update_revive() //Handle waking up the changeling after the regenerative stasis has completed. user.mind.changeling.purchasedpowers -= src user.med_hud_set_status() diff --git a/code/game/gamemodes/changeling/powers/swap_form.dm b/code/game/gamemodes/changeling/powers/swap_form.dm index 6d9deeccfae..7f0164535c2 100644 --- a/code/game/gamemodes/changeling/powers/swap_form.dm +++ b/code/game/gamemodes/changeling/powers/swap_form.dm @@ -49,7 +49,7 @@ user.mind.transfer_to(target) if(ghost && ghost.mind) ghost.mind.transfer_to(user) - non_respawnable_keys -= ghost.ckey //they have a new body, let them be able to re-enter their corpse if they die + GLOB.non_respawnable_keys -= ghost.ckey //they have a new body, let them be able to re-enter their corpse if they die user.key = ghost.key qdel(ghost) user.Paralyse(2) diff --git a/code/game/gamemodes/changeling/traitor_chan.dm b/code/game/gamemodes/changeling/traitor_chan.dm index fbb7506f121..060f454dddd 100644 --- a/code/game/gamemodes/changeling/traitor_chan.dm +++ b/code/game/gamemodes/changeling/traitor_chan.dm @@ -19,7 +19,7 @@ var/list/datum/mind/possible_changelings = get_players_for_role(ROLE_CHANGELING) - for(var/mob/new_player/player in player_list) + for(var/mob/new_player/player in GLOB.player_list) if((player.mind in possible_changelings) && (player.client.prefs.species in protected_species_changeling)) possible_changelings -= player.mind diff --git a/code/game/gamemodes/cult/cult.dm b/code/game/gamemodes/cult/cult.dm index 344bba8f5c2..441292366f0 100644 --- a/code/game/gamemodes/cult/cult.dm +++ b/code/game/gamemodes/cult/cult.dm @@ -221,7 +221,7 @@ var/global/list/all_cults = list() /datum/game_mode/cult/proc/get_unconvertables() var/list/ucs = list() - for(var/mob/living/carbon/human/player in player_list) + for(var/mob/living/carbon/human/player in GLOB.player_list) if(!is_convertable_to_cult(player.mind)) ucs += player.mind return ucs @@ -273,11 +273,11 @@ var/global/list/all_cults = list() bonus_check() if(!check_cult_victory()) - feedback_set_details("round_end_result","win - cult win") + feedback_set_details("round_end_result","cult win - cult win") feedback_set("round_end_result",acolytes_survived) to_chat(world, " The cult wins! It has succeeded in serving its dark masters!") else - feedback_set_details("round_end_result","loss - staff stopped the cult") + feedback_set_details("round_end_result","cult loss - staff stopped the cult") feedback_set("round_end_result",acolytes_survived) to_chat(world, " The staff managed to stop the cult!") diff --git a/code/game/gamemodes/cult/cult_comms.dm b/code/game/gamemodes/cult/cult_comms.dm index d1350bafc6f..8bd5fc3cc4f 100644 --- a/code/game/gamemodes/cult/cult_comms.dm +++ b/code/game/gamemodes/cult/cult_comms.dm @@ -30,10 +30,10 @@ my_message = "Harbringer of the Slaughter: [message]" else my_message = "[(ishuman(user) ? "Acolyte" : "Construct")] [user]: [message]" - for(var/mob/M in mob_list) + for(var/mob/M in GLOB.mob_list) if(iscultist(M)) to_chat(M, my_message) - else if(M in dead_mob_list) - to_chat(M, " (F) [my_message] ") + else if(M in GLOB.dead_mob_list) + to_chat(M, " (F) [my_message] ") - log_say("(CULT) [message]", user) \ No newline at end of file + log_say("(CULT) [message]", user) diff --git a/code/game/gamemodes/cult/cult_items.dm b/code/game/gamemodes/cult/cult_items.dm index f4252c4a909..6d9269a5e15 100644 --- a/code/game/gamemodes/cult/cult_items.dm +++ b/code/game/gamemodes/cult/cult_items.dm @@ -247,7 +247,7 @@ if(curselimit > 1) to_chat(user, "We have exhausted our ability to curse the shuttle.") return - if(locate(/obj/singularity/narsie) in poi_list || locate(/mob/living/simple_animal/slaughter/cult) in mob_list) + if(locate(/obj/singularity/narsie) in GLOB.poi_list || locate(/mob/living/simple_animal/slaughter/cult) in GLOB.mob_list) to_chat(user, "Nar-Sie or his avatars are already on this plane, there is no delaying the end of all things.") return diff --git a/code/game/gamemodes/cult/cult_objectives.dm b/code/game/gamemodes/cult/cult_objectives.dm index 34955ed42d4..beef75e103b 100644 --- a/code/game/gamemodes/cult/cult_objectives.dm +++ b/code/game/gamemodes/cult/cult_objectives.dm @@ -21,7 +21,7 @@ if("convert") explanation = "We must increase our influence before we can summon [ticker.cultdat.entity_name], Convert [convert_target] crew members. Take it slowly to avoid raising suspicions." if("bloodspill") - spilltarget = 100 + rand(0,player_list.len * 3) + spilltarget = 100 + rand(0,GLOB.player_list.len * 3) explanation = "We must prepare this place for [ticker.cultdat.entity_title1]'s coming. Spill blood and gibs over [spilltarget] floor tiles." if("sacrifice") explanation = "We need to sacrifice [sacrifice_target.name], the [sacrifice_target.assigned_role], for [sacrifice_target.p_their()] blood is the key that will lead our master to this realm. You will need 3 cultists around a Sacrifice rune to perform the ritual." @@ -78,7 +78,7 @@ if("convert") explanation = "We must increase our influence before we can summon [ticker.cultdat.entity_name]. Convert [convert_target] crew members. Take it slowly to avoid raising suspicions." if("bloodspill") - spilltarget = 100 + rand(0,player_list.len * 3) + spilltarget = 100 + rand(0,GLOB.player_list.len * 3) explanation = "We must prepare this place for [ticker.cultdat.entity_title1]'s coming. Spread blood and gibs over [spilltarget] of the Station's floor tiles." if("sacrifice") explanation = "We need to sacrifice [sacrifice_target.name], the [sacrifice_target.assigned_role], for [sacrifice_target.p_their()] blood is the key that will lead our master to this realm. You will need 3 cultists around a Sacrifice rune to perform the ritual." @@ -151,12 +151,12 @@ /datum/game_mode/cult/proc/get_possible_sac_targets() var/list/possible_sac_targets = list() - for(var/mob/living/carbon/human/player in player_list) + for(var/mob/living/carbon/human/player in GLOB.player_list) if(player.mind && !is_convertable_to_cult(player.mind) && (player.stat != DEAD)) possible_sac_targets += player.mind if(!possible_sac_targets.len) //There are no living Unconvertables on the station. Looking for a Sacrifice Target among the ordinary crewmembers - for(var/mob/living/carbon/human/player in player_list) + for(var/mob/living/carbon/human/player in GLOB.player_list) if(is_secure_level(player.z)) //We can't sacrifice people that are on the centcom z-level continue if(player.mind && !(player.mind in cult) && (player.stat != DEAD))//make DAMN sure they are not dead @@ -180,7 +180,7 @@ if(!mass_convert) var/living_crew = 0 var/living_cultists = 0 - for(var/mob/living/L in player_list) + for(var/mob/living/L in GLOB.player_list) if(L.stat != DEAD) if(L.mind in cult) living_cultists++ @@ -214,7 +214,7 @@ var/list/possible_objectives = list() var/living_crew = 0 - for(var/mob/living/carbon/C in player_list) + for(var/mob/living/carbon/C in GLOB.player_list) if(C.stat != DEAD) if(!(C.mind in cult)) var/turf/T = get_turf(C) @@ -238,7 +238,7 @@ bonus = 1 if("hijack") - for(var/mob/living/L in player_list) + for(var/mob/living/L in GLOB.player_list) if(L.stat != DEAD && !(L.mind in cult)) var/area/A = get_area(L) if(is_type_in_list(A.loc, centcom_areas)) @@ -247,7 +247,7 @@ bonus = 1 if("massacre") - for(var/mob/living/carbon/C in player_list) + for(var/mob/living/carbon/C in GLOB.player_list) if(C.stat != DEAD && !(C.mind in cult)) var/turf/T = get_turf(C) if(is_station_level(T.z)) //we're only interested in the remaining humans on the station diff --git a/code/game/gamemodes/cult/runes.dm b/code/game/gamemodes/cult/runes.dm index f1409e1e53d..e7c6c89e457 100644 --- a/code/game/gamemodes/cult/runes.dm +++ b/code/game/gamemodes/cult/runes.dm @@ -46,7 +46,7 @@ To draw a rune, use an arcane tome. check_icon() var/image/blood = image(loc = src) blood.override = 1 - for(var/mob/living/silicon/ai/AI in player_list) + for(var/mob/living/silicon/ai/AI in GLOB.player_list) AI.client.images += blood /obj/effect/rune/examine(mob/user) diff --git a/code/game/gamemodes/factions.dm b/code/game/gamemodes/factions.dm index 1c043ff5f7e..1780881a51d 100644 --- a/code/game/gamemodes/factions.dm +++ b/code/game/gamemodes/factions.dm @@ -23,8 +23,8 @@ var/uplink_contents // the contents of the uplink - proc/assign_objectives(var/datum/mind/traitor) - ..() +/datum/faction/syndicate/proc/assign_objectives(var/datum/mind/traitor) + ..() /* ----- Begin defining syndicate factions ------ */ @@ -94,4 +94,4 @@ desc = "The Exolitics are an ancient alien race with an energy-based anatomy. Their culture, communication, morales and knowledge is unknown. They are so radically different to humans that their \ attempts of communication with other life forms is completely incomprehensible. Members of this alien race are capable of broadcasting subspace transmissions from their bodies. \ The religious leaders of the Tiger Cooperative claim to have the technology to decypher and interpret their messages, which have been confirmed as religious propaganda. Their motives are unknown \ - but they are otherwise not considered much of a threat to anyone. They are virtually indestructable because of their nonphysical composition, and have the frighetning ability to make anything stop existing in a second." \ No newline at end of file + but they are otherwise not considered much of a threat to anyone. They are virtually indestructable because of their nonphysical composition, and have the frighetning ability to make anything stop existing in a second." diff --git a/code/game/gamemodes/game_mode.dm b/code/game/gamemodes/game_mode.dm index 4738816d422..de10fa34c01 100644 --- a/code/game/gamemodes/game_mode.dm +++ b/code/game/gamemodes/game_mode.dm @@ -46,7 +46,7 @@ ///Checks to see if the game can be setup and ran with the current number of players or whatnot. /datum/game_mode/proc/can_start() var/playerC = 0 - for(var/mob/new_player/player in player_list) + for(var/mob/new_player/player in GLOB.player_list) if((player.client)&&(player.ready)) playerC++ @@ -132,7 +132,7 @@ if(MS.active) useMS = MS break - for(var/mob/M in player_list) + for(var/mob/M in GLOB.player_list) if(M.mind) var/obj/item/pda/P=null for(var/obj/item/pda/check_pda in PDAs) @@ -193,7 +193,7 @@ if(SSshuttle.emergency.mode < SHUTTLE_ENDGAME) //shuttle didn't get to centcom escape_locations -= /area/shuttle/escape - for(var/mob/M in player_list) + for(var/mob/M in GLOB.player_list) if(M.client) clients++ if(ishuman(M)) @@ -260,7 +260,7 @@ var/roletext = get_roletext(role) // Assemble a list of active players without jobbans. - for(var/mob/new_player/player in player_list) + for(var/mob/new_player/player in GLOB.player_list) if(player.client && player.ready) if(!jobban_isbanned(player, "Syndicate") && !jobban_isbanned(player, roletext)) if(player_old_enough_antag(player.client,role)) @@ -311,13 +311,13 @@ /datum/game_mode/proc/num_players() . = 0 - for(var/mob/new_player/P in player_list) + for(var/mob/new_player/P in GLOB.player_list) if(P.client && P.ready) .++ /datum/game_mode/proc/num_players_started() . = 0 - for(var/mob/living/carbon/human/H in player_list) + for(var/mob/living/carbon/human/H in GLOB.player_list) if(H.client) .++ @@ -326,7 +326,7 @@ /////////////////////////////////// /datum/game_mode/proc/get_living_heads() . = list() - for(var/mob/living/carbon/human/player in mob_list) + for(var/mob/living/carbon/human/player in GLOB.mob_list) var/list/real_command_positions = command_positions.Copy() - "Nanotrasen Representative" if(player.stat != DEAD && player.mind && (player.mind.assigned_role in real_command_positions)) . |= player.mind @@ -337,7 +337,7 @@ //////////////////////////// /datum/game_mode/proc/get_all_heads() . = list() - for(var/mob/player in mob_list) + for(var/mob/player in GLOB.mob_list) var/list/real_command_positions = command_positions.Copy() - "Nanotrasen Representative" if(player.mind && (player.mind.assigned_role in real_command_positions)) . |= player.mind @@ -347,7 +347,7 @@ ////////////////////////////////////////////// /datum/game_mode/proc/get_living_sec() . = list() - for(var/mob/living/carbon/human/player in mob_list) + for(var/mob/living/carbon/human/player in GLOB.mob_list) if(player.stat != DEAD && player.mind && (player.mind.assigned_role in security_positions)) . |= player.mind @@ -356,7 +356,7 @@ //////////////////////////////////////// /datum/game_mode/proc/get_all_sec() . = list() - for(var/mob/living/carbon/human/player in mob_list) + for(var/mob/living/carbon/human/player in GLOB.mob_list) if(player.mind && (player.mind.assigned_role in security_positions)) . |= player.mind @@ -371,11 +371,11 @@ ////////////////////////// proc/display_roundstart_logout_report() var/msg = "Roundstart logout report\n\n" - for(var/mob/living/L in mob_list) + for(var/mob/living/L in GLOB.mob_list) if(L.ckey) var/found = 0 - for(var/client/C in clients) + for(var/client/C in GLOB.clients) if(C.ckey == L.ckey) found = 1 break @@ -401,7 +401,7 @@ proc/display_roundstart_logout_report() continue //Dead continue //Happy connected client - for(var/mob/dead/observer/D in mob_list) + for(var/mob/dead/observer/D in GLOB.mob_list) if(D.mind && (D.mind.original == L || D.mind.current == L)) if(L.stat == DEAD) if(L.suiciding) //Suicider @@ -422,14 +422,14 @@ proc/display_roundstart_logout_report() - for(var/mob/M in mob_list) + for(var/mob/M in GLOB.mob_list) if(check_rights(R_ADMIN, 0, M)) to_chat(M, msg) /proc/get_nt_opposed() var/list/dudes = list() - for(var/mob/living/carbon/human/man in player_list) + for(var/mob/living/carbon/human/man in GLOB.player_list) if(man.client) //don't try picking someone like the captain or a security officer for potential collaborators, even if they ARE opposed to Nanotrasen for some reason if(man.mind && man.mind.assigned_role) diff --git a/code/game/gamemodes/gameticker.dm b/code/game/gamemodes/gameticker.dm index 1941c0c323f..21abbc89415 100644 --- a/code/game/gamemodes/gameticker.dm +++ b/code/game/gamemodes/gameticker.dm @@ -29,7 +29,6 @@ var/round_start_time = 0 var/list/availablefactions = list() // list of factions with openings var/pregame_timeleft = 0 - var/delay_end = 0 //if set to nonzero, the round will not restart on it's own var/triai = 0//Global holder for Triumvirate @@ -48,7 +47,7 @@ var/round_start_time = 0 'sound/music/Title2.ogg',\ 'sound/music/Title3.ogg',) do - pregame_timeleft = 180 + pregame_timeleft = config.pregame_timestart to_chat(world, "Welcome to the pre-game lobby!") to_chat(world, "Please, setup your character and select ready. Game will start in [pregame_timeleft] seconds") while(current_state == GAME_STATE_PREGAME) @@ -145,14 +144,14 @@ var/round_start_time = 0 spawn(0)//Forking here so we dont have to wait for this to finish mode.post_setup() //Cleanup some stuff - for(var/obj/effect/landmark/start/S in landmarks_list) + for(var/obj/effect/landmark/start/S in GLOB.landmarks_list) //Deleting Startpoints but we need the ai point to AI-ize people later if(S.name != "AI") qdel(S) // take care of random spesspod spawning var/list/obj/effect/landmark/spacepod/random/L = list() - for(var/obj/effect/landmark/spacepod/random/SS in landmarks_list) + for(var/obj/effect/landmark/spacepod/random/SS in GLOB.landmarks_list) if(istype(SS)) L += SS if(L.len) @@ -238,7 +237,7 @@ var/round_start_time = 0 votetimer() - for(var/mob/new_player/N in mob_list) + for(var/mob/new_player/N in GLOB.mob_list) if(N.client) N.new_player_panel_proc() @@ -259,14 +258,14 @@ var/round_start_time = 0 cinematic.mouse_opacity = MOUSE_OPACITY_TRANSPARENT cinematic.screen_loc = "1,0" - var/obj/structure/stool/bed/temp_buckle = new(src) + var/obj/structure/bed/temp_buckle = new(src) if(station_missed) - for(var/mob/M in mob_list) + for(var/mob/M in GLOB.mob_list) M.buckled = temp_buckle //buckles the mob so it can't do anything if(M.client) M.client.screen += cinematic //show every client the cinematic else //nuke kills everyone on z-level 1 to prevent "hurr-durr I survived" - for(var/mob/M in mob_list) + for(var/mob/M in GLOB.mob_list) M.buckled = temp_buckle if(M.stat != DEAD) var/turf/T = get_turf(M) @@ -343,7 +342,7 @@ var/round_start_time = 0 /datum/controller/gameticker/proc/create_characters() - for(var/mob/new_player/player in player_list) + for(var/mob/new_player/player in GLOB.player_list) if(player.ready && player.mind) if(player.mind.assigned_role == "AI") player.close_spawn_windows() @@ -357,14 +356,14 @@ var/round_start_time = 0 /datum/controller/gameticker/proc/collect_minds() - for(var/mob/living/player in player_list) + for(var/mob/living/player in GLOB.player_list) if(player.mind) ticker.minds += player.mind /datum/controller/gameticker/proc/equip_characters() var/captainless=1 - for(var/mob/living/carbon/human/player in player_list) + for(var/mob/living/carbon/human/player in GLOB.player_list) if(player && player.mind && player.mind.assigned_role) if(player.mind.assigned_role == "Captain") captainless=0 @@ -373,7 +372,7 @@ var/round_start_time = 0 job_master.EquipRank(player, player.mind.assigned_role, 0) EquipCustomItems(player) if(captainless) - for(var/mob/M in player_list) + for(var/mob/M in GLOB.player_list) if(!istype(M,/mob/new_player)) to_chat(M, "Captainship not forced on anyone.") @@ -428,7 +427,7 @@ var/round_start_time = 0 to_chat(world, "
") //Silicon laws report - for(var/mob/living/silicon/ai/aiPlayer in mob_list) + for(var/mob/living/silicon/ai/aiPlayer in GLOB.mob_list) if(aiPlayer.stat != 2) to_chat(world, "[aiPlayer.name] (Played by: [aiPlayer.key])'s laws at the end of the game were:") else @@ -443,7 +442,7 @@ var/round_start_time = 0 var/dronecount = 0 - for(var/mob/living/silicon/robot/robo in mob_list) + for(var/mob/living/silicon/robot/robo in GLOB.mob_list) if(istype(robo,/mob/living/silicon/robot/drone)) dronecount++ diff --git a/code/game/gamemodes/intercept_report.dm b/code/game/gamemodes/intercept_report.dm index ca868f4874e..5e8be8b1229 100644 --- a/code/game/gamemodes/intercept_report.dm +++ b/code/game/gamemodes/intercept_report.dm @@ -89,7 +89,7 @@ /* /datum/intercept_text/proc/pick_mob() var/list/dudes = list() - for(var/mob/living/carbon/human/man in player_list) + for(var/mob/living/carbon/human/man in GLOB.player_list) if(!man.mind) continue if(man.mind.assigned_role == man.mind.special_role) continue dudes += man @@ -109,7 +109,7 @@ /datum/intercept_text/proc/get_suspect() var/list/dudes = list() - for(var/mob/living/carbon/human/man in player_list) + for(var/mob/living/carbon/human/man in GLOB.player_list) if(man.client && man.client.prefs.nanotrasen_relation == "Opposed") //don't include suspects who can't possibly be the antag based on their job (no suspecting the captain of being a damned dirty tator) if(man.mind && man.mind.assigned_role) @@ -119,8 +119,8 @@ if(man.dna.species.name in ticker.mode.protected_species) return dudes += man - for(var/i = 0, i < max(player_list.len/10,2), i++) - dudes += pick(player_list) + for(var/i = 0, i < max(GLOB.player_list.len/10,2), i++) + dudes += pick(GLOB.player_list) return pick(dudes) /datum/intercept_text/proc/build_traitor(datum/mind/correct_person) @@ -211,11 +211,11 @@ if(prob(prob_right_job)) if(correct_person) if(correct_person:assigned_role == correct_person:special_role) - changeling_job = pick(joblist) + changeling_job = pick(GLOB.joblist) else changeling_job = correct_person:assigned_role else - changeling_job = pick(joblist) + changeling_job = pick(GLOB.joblist) if(prob(prob_right_dude) && ticker.mode == "changeling") if(correct_person:assigned_role == correct_person:special_role) changeling_name = correct_person:current diff --git a/code/game/gamemodes/malfunction/Malf_Modules.dm b/code/game/gamemodes/malfunction/Malf_Modules.dm index 0e536132f52..5f886d8fade 100644 --- a/code/game/gamemodes/malfunction/Malf_Modules.dm +++ b/code/game/gamemodes/malfunction/Malf_Modules.dm @@ -37,7 +37,7 @@ doomsday_device = DOOM doomsday_device.start() verbs -= /mob/living/silicon/ai/proc/nuke_station - for(var/obj/item/pinpointer/point in pinpointer_list) + for(var/obj/item/pinpointer/point in GLOB.pinpointer_list) for(var/mob/living/silicon/ai/A in ai_list) if((A.stat != DEAD) && A.nuking) point.the_disk = A //The pinpointer now tracks the AI core @@ -56,7 +56,7 @@ var/announced = 0 /obj/machinery/doomsday_device/Destroy() - fast_processing -= src + GLOB.fast_processing -= src SSshuttle.emergencyNoEscape = 0 if(SSshuttle.emergency.mode == SHUTTLE_STRANDED) SSshuttle.emergency.mode = SHUTTLE_DOCKED @@ -67,7 +67,7 @@ /obj/machinery/doomsday_device/proc/start() detonation_timer = world.time + default_timer timing = 1 - fast_processing += src + GLOB.fast_processing += src SSshuttle.emergencyNoEscape = 1 /obj/machinery/doomsday_device/proc/seconds_remaining() @@ -84,7 +84,7 @@ priority_announcement.Announce("Hostile environment resolved. You have 3 minutes to board the Emergency Shuttle.", "Priority Announcement", 'sound/AI/shuttledock.ogg') qdel(src) if(!timing) - fast_processing -= src + GLOB.fast_processing -= src return var/sec_left = seconds_remaining() if(sec_left <= 0) @@ -99,10 +99,10 @@ announced = max(0, announced-1) /obj/machinery/doomsday_device/proc/detonate(z_level = 1) - for(var/mob/M in player_list) + for(var/mob/M in GLOB.player_list) M << 'sound/machines/Alarm.ogg' sleep(100) - for(var/mob/living/L in mob_list) + for(var/mob/living/L in GLOB.mob_list) var/turf/T = get_turf(L) if(!T || T.z != z_level) continue @@ -131,7 +131,7 @@ return src.verbs -= /mob/living/silicon/ai/proc/upgrade_turrets - for(var/obj/machinery/porta_turret/turret in machines) + for(var/obj/machinery/porta_turret/turret in GLOB.machines) var/turf/T = get_turf(turret) if(is_station_level(T.z)) turret.health += 30 @@ -156,7 +156,7 @@ if(stat) return - for(var/obj/machinery/door/D in airlocks) + for(var/obj/machinery/door/D in GLOB.airlocks) if(!is_station_level(D.z)) continue INVOKE_ASYNC(D, /obj/machinery/door.proc/hostile_lockdown, src) @@ -188,7 +188,7 @@ if(stat || malf_cooldown > world.time) return - for(var/obj/item/rcd/RCD in rcd_list) + for(var/obj/item/rcd/RCD in GLOB.rcd_list) if(!istype(RCD, /obj/item/rcd/borg)) //Ensures that cyborg RCDs are spared. RCD.detonate_pulse() @@ -237,7 +237,7 @@ if(stat) return - for(var/obj/machinery/firealarm/F in machines) + for(var/obj/machinery/firealarm/F in GLOB.machines) if(!is_station_level(F.z)) continue F.emagged = 1 @@ -262,7 +262,7 @@ if(stat) return - for(var/obj/machinery/alarm/AA in machines) + for(var/obj/machinery/alarm/AA in GLOB.machines) if(!is_station_level(AA.z)) continue AA.emagged = 1 @@ -279,7 +279,7 @@ power_type = /mob/living/silicon/ai/proc/overload_machine -/mob/living/silicon/ai/proc/overload_machine(obj/machinery/M in machines) +/mob/living/silicon/ai/proc/overload_machine(obj/machinery/M in GLOB.machines) set name = "Overload Machine" set category = "Malfunction" @@ -312,7 +312,7 @@ power_type = /mob/living/silicon/ai/proc/override_machine -/mob/living/silicon/ai/proc/override_machine(obj/machinery/M in machines) +/mob/living/silicon/ai/proc/override_machine(obj/machinery/M in GLOB.machines) set name = "Override Machine" set category = "Malfunction" @@ -428,7 +428,7 @@ for(var/datum/AI_Module/small/blackout/blackout in current_modules) if(blackout.uses > 0) blackout.uses -- - for(var/obj/machinery/power/apc/apc in apcs) + for(var/obj/machinery/power/apc/apc in GLOB.apcs) if(prob(30*apc.overload)) apc.overload_lighting() else diff --git a/code/game/gamemodes/meteor/meteor.dm b/code/game/gamemodes/meteor/meteor.dm index 18b2e020716..ee0ef02d1dc 100644 --- a/code/game/gamemodes/meteor/meteor.dm +++ b/code/game/gamemodes/meteor/meteor.dm @@ -33,7 +33,7 @@ /datum/game_mode/meteor/declare_completion() var/text var/survivors = 0 - for(var/mob/living/player in player_list) + for(var/mob/living/player in GLOB.player_list) if(player.stat != DEAD) var/turf/location = get_turf(player.loc) if(!location) continue @@ -54,8 +54,8 @@ else to_chat(world, "Nobody survived the meteor storm!") - feedback_set_details("round_end_result","end - evacuation") - feedback_set("round_end_result",survivors) + feedback_set_details("round_end_result","meteor end - evacuation") + feedback_set("round_end_result", "Meteor survivors: [survivors]") ..() return 1 diff --git a/code/game/gamemodes/meteor/meteors.dm b/code/game/gamemodes/meteor/meteors.dm index 0828d01e4f6..f55d0ef7520 100644 --- a/code/game/gamemodes/meteor/meteors.dm +++ b/code/game/gamemodes/meteor/meteors.dm @@ -98,7 +98,7 @@ var/meteorsound = 'sound/effects/meteorimpact.ogg' var/z_original = 1 - var/meteordrop = /obj/item/ore/iron + var/meteordrop = /obj/item/stack/ore/iron var/dropamt = 2 /obj/effect/meteor/Move() @@ -118,13 +118,13 @@ return . /obj/effect/meteor/Destroy() - meteor_list -= src + GLOB.meteor_list -= src walk(src,0) //this cancels the walk_towards() proc return ..() /obj/effect/meteor/New() ..() - meteor_list += src + GLOB.meteor_list += src SpinAnimation() /obj/effect/meteor/Bump(atom/A) @@ -174,7 +174,7 @@ var/sound/meteor_sound = sound(meteorsound) var/random_frequency = get_rand_frequency() - for(var/P in player_list) + for(var/P in GLOB.player_list) var/mob/M = P var/turf/T = get_turf(M) if(!T || T.z != src.z) @@ -196,7 +196,7 @@ hits = 1 hitpwr = 3 meteorsound = 'sound/weapons/tap.ogg' - meteordrop = /obj/item/ore/glass + meteordrop = /obj/item/stack/ore/glass //Medium-sized /obj/effect/meteor/medium @@ -226,7 +226,7 @@ hits = 5 heavy = 1 meteorsound = 'sound/effects/bamf.ogg' - meteordrop = /obj/item/ore/plasma + meteordrop = /obj/item/stack/ore/plasma /obj/effect/meteor/flaming/meteor_effect() ..(heavy) @@ -237,7 +237,7 @@ name = "glowing meteor" icon_state = "glowing" heavy = 1 - meteordrop = /obj/item/ore/uranium + meteordrop = /obj/item/stack/ore/uranium /obj/effect/meteor/irradiated/meteor_effect() @@ -256,7 +256,7 @@ hitpwr = 1 heavy = 1 meteorsound = 'sound/effects/bamf.ogg' - meteordrop = /obj/item/ore/plasma + meteordrop = /obj/item/stack/ore/plasma /obj/effect/meteor/tunguska/meteor_effect() ..(heavy) diff --git a/code/game/gamemodes/miniantags/abduction/abductee_objectives.dm b/code/game/gamemodes/miniantags/abduction/abductee_objectives.dm index af2920c4626..0d891edb3eb 100644 --- a/code/game/gamemodes/miniantags/abduction/abductee_objectives.dm +++ b/code/game/gamemodes/miniantags/abduction/abductee_objectives.dm @@ -88,7 +88,7 @@ explanation_text = "Call forth a spirit from the other side." /datum/objective/abductee/calling/New() - var/mob/dead/D = pick(dead_mob_list) + var/mob/dead/D = pick(GLOB.dead_mob_list) if(D) explanation_text = "You know that [D] has perished. Hold a seance to call them from the spirit realm." diff --git a/code/game/gamemodes/miniantags/abduction/abduction.dm b/code/game/gamemodes/miniantags/abduction/abduction.dm index 9926f27ef10..513bdeb4357 100644 --- a/code/game/gamemodes/miniantags/abduction/abduction.dm +++ b/code/game/gamemodes/miniantags/abduction/abduction.dm @@ -99,7 +99,7 @@ var/list/obj/effect/landmark/abductor/scientist_landmarks = list() agent_landmarks.len = max_teams scientist_landmarks.len = max_teams - for(var/obj/effect/landmark/abductor/A in landmarks_list) + for(var/obj/effect/landmark/abductor/A in GLOB.landmarks_list) if(istype(A,/obj/effect/landmark/abductor/agent)) agent_landmarks[text2num(A.team)] = A else if(istype(A,/obj/effect/landmark/abductor/scientist)) @@ -166,7 +166,7 @@ abductor.announce_objectives() /datum/game_mode/abduction/proc/get_team_console(team_number) - for(var/obj/machinery/abductor/console/C in machines) + for(var/obj/machinery/abductor/console/C in GLOB.machines) if(C.team == team_number) return C @@ -237,7 +237,7 @@ return FALSE var/datum/species/abductor/S = H.dna.species ab_team = S.team - for(var/obj/machinery/abductor/experiment/E in machines) + for(var/obj/machinery/abductor/experiment/E in GLOB.machines) if(E.team == ab_team) if(E.points >= target_amount) return TRUE diff --git a/code/game/gamemodes/miniantags/abduction/abduction_gear.dm b/code/game/gamemodes/miniantags/abduction/abduction_gear.dm index 92797f6a1e5..05a29a5f3f4 100644 --- a/code/game/gamemodes/miniantags/abduction/abduction_gear.dm +++ b/code/game/gamemodes/miniantags/abduction/abduction_gear.dm @@ -119,7 +119,7 @@ /obj/item/clothing/suit/armor/abductor/Destroy() processing_objects.Remove(src) - for(var/obj/machinery/abductor/console/C in machines) + for(var/obj/machinery/abductor/console/C in GLOB.machines) if(C.vest == src) C.vest = null break @@ -491,7 +491,7 @@ Congratulations! You are now trained for invasive xenobiology research!"} if(ishuman(L)) var/mob/living/carbon/human/H = L - H.forcesay(hit_appends) + H.forcesay(GLOB.hit_appends) add_attack_logs(user, L, "Stunned with [src]") @@ -561,9 +561,7 @@ Congratulations! You are now trained for invasive xenobiology research!"} /obj/item/restraints/handcuffs/energy/used/dropped(mob/user) user.visible_message("[user]'s [src] break in a discharge of energy!", \ "[user]'s [src] break in a discharge of energy!") - var/datum/effect_system/spark_spread/S = new - S.set_up(4,0,user.loc) - S.start() + do_sparks(4, 0, user.loc) . = ..() /obj/item/abductor_baton/examine(mob/user) @@ -736,6 +734,8 @@ Congratulations! You are now trained for invasive xenobiology research!"} icon_state = "bed" no_icon_updates = 1 //no icon updates for this; it's static. injected_reagents = list("corazone","spaceacillin") + reagent_target_amount = 31 //the patient needs at least 30u of spaceacillin to prevent necrotization. + inject_amount = 10 /obj/structure/closet/abductor name = "alien locker" diff --git a/code/game/gamemodes/miniantags/abduction/abduction_outfits.dm b/code/game/gamemodes/miniantags/abduction/abduction_outfits.dm index bb39e90cd01..c90aaac19d8 100644 --- a/code/game/gamemodes/miniantags/abduction/abduction_outfits.dm +++ b/code/game/gamemodes/miniantags/abduction/abduction_outfits.dm @@ -6,7 +6,7 @@ l_ear = /obj/item/radio/headset/abductor /datum/outfit/abductor/proc/get_team_console(team_number) - for(var/obj/machinery/abductor/console/C in machines) + for(var/obj/machinery/abductor/console/C in GLOB.machines) if(C.team == team_number) return C diff --git a/code/game/gamemodes/miniantags/abduction/machinery/camera.dm b/code/game/gamemodes/miniantags/abduction/machinery/camera.dm index cd4f80f2527..25b9025a764 100644 --- a/code/game/gamemodes/miniantags/abduction/machinery/camera.dm +++ b/code/game/gamemodes/miniantags/abduction/machinery/camera.dm @@ -14,7 +14,7 @@ icon_state = "camera" /obj/machinery/computer/camera_advanced/abductor/New() - abductor_equipment.Add(src) + GLOB.abductor_equipment.Add(src) ..() /obj/machinery/computer/camera_advanced/abductor/CreateEye() diff --git a/code/game/gamemodes/miniantags/abduction/machinery/console.dm b/code/game/gamemodes/miniantags/abduction/machinery/console.dm index 0e8c4d3c409..3598a5775a7 100644 --- a/code/game/gamemodes/miniantags/abduction/machinery/console.dm +++ b/code/game/gamemodes/miniantags/abduction/machinery/console.dm @@ -4,11 +4,11 @@ var/team = 0 /obj/machinery/abductor/New() - abductor_equipment.Add(src) + GLOB.abductor_equipment.Add(src) ..() /obj/machinery/abductor/Destroy() - abductor_equipment.Remove(src) + GLOB.abductor_equipment.Remove(src) return ..() //Console @@ -152,17 +152,17 @@ /obj/machinery/abductor/console/proc/Link_Abduction_Equipment() // these must all be explicitly `in machines` or they will not properly link. - for(var/obj/machinery/abductor/pad/p in abductor_equipment) + for(var/obj/machinery/abductor/pad/p in GLOB.abductor_equipment) if(p.team == team) pad = p break - for(var/obj/machinery/abductor/experiment/e in abductor_equipment) + for(var/obj/machinery/abductor/experiment/e in GLOB.abductor_equipment) if(e.team == team) experiment = e e.console = src - for(var/obj/machinery/computer/camera_advanced/abductor/c in abductor_equipment) + for(var/obj/machinery/computer/camera_advanced/abductor/c in GLOB.abductor_equipment) if(c.team == team) camera = c c.console = src @@ -194,7 +194,7 @@ if(vest == V) return FALSE - for(var/obj/machinery/abductor/console/C in machines) + for(var/obj/machinery/abductor/console/C in GLOB.machines) if(C.vest == V) C.vest = null break diff --git a/code/game/gamemodes/miniantags/abduction/machinery/pad.dm b/code/game/gamemodes/miniantags/abduction/machinery/pad.dm index ce30708a76f..f7ff2864608 100644 --- a/code/game/gamemodes/miniantags/abduction/machinery/pad.dm +++ b/code/game/gamemodes/miniantags/abduction/machinery/pad.dm @@ -46,7 +46,5 @@ duration = 80 /obj/effect/temp_visual/teleport_abductor/New() - var/datum/effect_system/spark_spread/S = new - S.set_up(10,0,loc) - S.start() + do_sparks(10, 0, loc) ..() \ No newline at end of file diff --git a/code/game/gamemodes/miniantags/borer/borer.dm b/code/game/gamemodes/miniantags/borer/borer.dm index a0ccbad7ab6..6cdfdc736d9 100644 --- a/code/game/gamemodes/miniantags/borer/borer.dm +++ b/code/game/gamemodes/miniantags/borer/borer.dm @@ -22,7 +22,7 @@ to_chat(src, "You whisper silently, \"[message]\"") to_chat(B.host, "The captive mind of [src] whispers, \"[message]\"") - for(var/mob/M in mob_list) + for(var/mob/M in GLOB.mob_list) if(M.mind && isobserver(M)) to_chat(M, "Thought-speech, [src] -> [B.truename]: [message]") @@ -91,6 +91,7 @@ ) var/talk_inside_host = FALSE // So that borers don't accidentally give themselves away on a botched message var/used_dominate + var/attempting_to_dominate = FALSE // To prevent people from spam opening the Dominate Victim input var/chemicals = 10 // Chemicals used for reproduction and chemical injection. var/max_chems = 250 var/mob/living/carbon/human/host // Human host for the brain worm. @@ -181,7 +182,7 @@ if(host) to_chat(host, "[truename] [say_string]: [input]") log_say("(BORER to [key_name(host)]) [input]", src) - for(var/M in dead_mob_list) + for(var/M in GLOB.dead_mob_list) if(isobserver(M)) to_chat(M, "Borer Communication from [truename] ([ghost_follow_link(src, ghost=M)]): [input]") to_chat(src, "[truename] [say_string]: [input]") @@ -217,7 +218,7 @@ to_chat(B, "[src] says: [input]") log_say("(BORER to [key_name(B)]) [input]", src) - for(var/M in dead_mob_list) + for(var/M in GLOB.dead_mob_list) if(isobserver(M)) to_chat(M, "Borer Communication from [src] ([ghost_follow_link(src, ghost=M)]): [input]") to_chat(src, "[src] says: [input]") @@ -239,7 +240,7 @@ to_chat(CB, "[B.truename] says: [input]") log_say("(BORER to [key_name(CB)]) [input]", B) - for(var/M in dead_mob_list) + for(var/M in GLOB.dead_mob_list) if(isobserver(M)) to_chat(M, "Borer Communication from [B] ([ghost_follow_link(src, ghost=M)]): [input]") to_chat(src, "[B.truename] says: [input]") @@ -325,6 +326,9 @@ to_chat(src, "You cannot infest someone who is already infested!") return + if(incapacitated()) + return + to_chat(src, "You slither up [M] and begin probing at [M.p_their()] ear canal...") if(!do_after(src, 50, target = M)) @@ -397,7 +401,7 @@ for(var/datum in typesof(/datum/borer_chem)) var/datum/borer_chem/C = datum var/cname = initial(C.chemname) - var/datum/reagent/R = chemical_reagents_list[cname] + var/datum/reagent/R = GLOB.chemical_reagents_list[cname] if(cname) content += "[R.name] ([initial(C.chemuse)])

[initial(C.chemdesc)]

" @@ -431,7 +435,7 @@ if(!C || !host || controlling || !src || stat) return - var/datum/reagent/R = chemical_reagents_list[C.chemname] + var/datum/reagent/R = GLOB.chemical_reagents_list[C.chemname] if(chemicals < C.chemuse) to_chat(src, "You need [C.chemuse] chemicals stored to secrete [R.name]!") return @@ -471,7 +475,7 @@ set category = "Borer" set name = "Dominate Victim" set desc = "Freeze the limbs of a potential host with supernatural fear." - + if(world.time - used_dominate < 150) to_chat(src, "You cannot use that ability again so soon.") return @@ -483,23 +487,43 @@ if(stat) to_chat(src, "You cannot do that in your current state.") return - + + if(attempting_to_dominate) + to_chat(src, "You're already targeting someone!") + return + var/list/choices = list() for(var/mob/living/carbon/C in view(3,src)) if(C.stat != DEAD) choices += C - + if(world.time - used_dominate < 300) to_chat(src, "You cannot use that ability again so soon.") return - + + attempting_to_dominate = TRUE + var/mob/living/carbon/M = input(src,"Who do you wish to dominate?") in null|choices - if(!M || !src) + if(!M) + attempting_to_dominate = FALSE + return + + if(!src) //different statement to avoid a runtime since if the source is deleted then attempting_to_dominate would also be deleted return if(M.has_brain_worms()) to_chat(src, "You cannot dominate someone who is already infested!") + attempting_to_dominate = FALSE + return + + if(incapacitated()) + attempting_to_dominate = FALSE + return + + if(get_dist(src, M) > 7) //to avoid people remotely doing from across the map etc, 7 is the default view range + to_chat(src, "You're too far away!") + attempting_to_dominate = FALSE return to_chat(src, "You focus your psychic lance on [M] and freeze [M.p_their()] limbs with a wave of terrible dread.") @@ -507,6 +531,7 @@ M.Weaken(3) used_dominate = world.time + attempting_to_dominate = FALSE /mob/living/simple_animal/borer/verb/release_host() set category = "Borer" diff --git a/code/game/gamemodes/miniantags/bot_swarm/swarmer.dm b/code/game/gamemodes/miniantags/bot_swarm/swarmer.dm index a3a029005d5..9a8ead8b289 100644 --- a/code/game/gamemodes/miniantags/bot_swarm/swarmer.dm +++ b/code/game/gamemodes/miniantags/bot_swarm/swarmer.dm @@ -110,7 +110,7 @@ AIStatus = AI_OFF var/resources = 0 //Resource points, generated by consuming metal/glass var/max_resources = 100 - loot = list(/obj/effect/decal/cleanable/blood/gibs/robot, /obj/item/ore/bluespace_crystal/artificial) + loot = list(/obj/effect/decal/cleanable/blood/gibs/robot, /obj/item/stack/ore/bluespace_crystal/artificial) deathmessage = "The swarmer explodes with a sharp pop!" del_on_death = 1 hud_possible = list(SPECIALROLE_HUD, DIAG_STAT_HUD, DIAG_HUD) @@ -585,6 +585,6 @@ /mob/living/simple_animal/hostile/swarmer/proc/ContactSwarmers() var/message = input(src, "Announce to other swarmers", "Swarmer contact") if(message) - for(var/mob/M in mob_list) - if(isswarmer(M) || (M in dead_mob_list)) + for(var/mob/M in GLOB.mob_list) + if(isswarmer(M) || (M in GLOB.dead_mob_list)) to_chat(M, "Swarm communication - [src] states: [message]") diff --git a/code/game/gamemodes/miniantags/bot_swarm/swarmer_event.dm b/code/game/gamemodes/miniantags/bot_swarm/swarmer_event.dm index 7a16ef17857..d611092bb2b 100644 --- a/code/game/gamemodes/miniantags/bot_swarm/swarmer_event.dm +++ b/code/game/gamemodes/miniantags/bot_swarm/swarmer_event.dm @@ -19,7 +19,7 @@ /datum/event/spawn_swarmer/proc/find_swarmer() - for(var/mob/living/M in mob_list) + for(var/mob/living/M in GLOB.mob_list) if(istype(M, /mob/living/simple_animal/hostile/swarmer) && M.client) //If there is a swarmer with an active client, we've found our swarmer return 1 return 0 diff --git a/code/game/gamemodes/miniantags/guardian/guardian.dm b/code/game/gamemodes/miniantags/guardian/guardian.dm index 449e5f5ae3a..bd08ff210d5 100644 --- a/code/game/gamemodes/miniantags/guardian/guardian.dm +++ b/code/game/gamemodes/miniantags/guardian/guardian.dm @@ -165,11 +165,11 @@ var/input = stripped_input(src, "Please enter a message to tell your summoner.", "Guardian", "") if(!input) return - for(var/mob/M in mob_list) + for(var/mob/M in GLOB.mob_list) if(M == summoner) to_chat(M, "[src]: [input]") log_say("(GUARDIAN to [key_name(M)]) [input]", src) - else if(M in dead_mob_list) + else if(M in GLOB.dead_mob_list) to_chat(M, "Guardian Communication from [src] ([ghost_follow_link(src, ghost=M)]): [input]") to_chat(src, "[src]: [input]") @@ -184,14 +184,14 @@ var/input = stripped_input(src, "Please enter a message to tell your guardian.", "Message", "") if(!input) return - for(var/mob/M in mob_list) + for(var/mob/M in GLOB.mob_list) if(istype (M, /mob/living/simple_animal/hostile/guardian)) var/mob/living/simple_animal/hostile/guardian/G = M if(G.summoner == src) to_chat(G, "[src]: [input]") log_say("(GUARDIAN to [key_name(G)]) [input]", src) - else if(M in dead_mob_list) + else if(M in GLOB.dead_mob_list) to_chat(M, "Guardian Communication from [src] ([ghost_follow_link(src, ghost=M)]): [input]") to_chat(src, "[src]: [input]") @@ -199,7 +199,7 @@ set name = "Recall Guardian" set category = "Guardian" set desc = "Forcibly recall your guardian." - for(var/mob/living/simple_animal/hostile/guardian/G in mob_list) + for(var/mob/living/simple_animal/hostile/guardian/G in GLOB.mob_list) if(G.summoner == src) G.Recall() @@ -209,7 +209,7 @@ set desc = "Re-rolls which ghost will control your Guardian. One use." src.verbs -= /mob/living/proc/guardian_reset - for(var/mob/living/simple_animal/hostile/guardian/G in mob_list) + for(var/mob/living/simple_animal/hostile/guardian/G in GLOB.mob_list) if(G.summoner == src) var/list/mob/dead/observer/candidates = pollCandidates("Do you want to play as [G.real_name]?", ROLE_GUARDIAN, 0, 100) var/mob/dead/observer/new_stand = null @@ -251,9 +251,15 @@ var/ling_failure = "The deck refuses to respond to a souless creature such as you." var/list/possible_guardians = list("Chaos", "Standard", "Ranged", "Support", "Explosive", "Assassin", "Lightning", "Charger", "Protector") var/random = TRUE + var/color_list = list("Pink" = "#FFC0CB", + "Red" = "#FF0000", + "Orange" = "#FFA500", + "Green" = "#008000", + "Blue" = "#0000FF") + var/name_list = list("Aries", "Leo", "Sagittarius", "Taurus", "Virgo", "Capricorn", "Gemini", "Libra", "Aquarius", "Cancer", "Scorpio", "Pisces") /obj/item/guardiancreator/attack_self(mob/living/user) - for(var/mob/living/simple_animal/hostile/guardian/G in living_mob_list) + for(var/mob/living/simple_animal/hostile/guardian/G in GLOB.living_mob_list) if(G.summoner == user) to_chat(user, "You already have a [mob_name]!") return @@ -275,15 +281,19 @@ to_chat(user, "[failure_message]") used = FALSE +/obj/item/guardiancreator/examine(mob/user, distance) + . = ..() + if(used) + to_chat(user, "[used_message]") -/obj/item/guardiancreator/proc/spawn_guardian(var/mob/living/user, var/key) - var/gaurdiantype = "Standard" +/obj/item/guardiancreator/proc/spawn_guardian(mob/living/user, key) + var/guardian_type = "Standard" if(random) - gaurdiantype = pick(possible_guardians) + guardian_type = pick(possible_guardians) else - gaurdiantype = input(user, "Pick the type of [mob_name]", "[mob_name] Creation") as null|anything in possible_guardians + guardian_type = input(user, "Pick the type of [mob_name]", "[mob_name] Creation") as null|anything in possible_guardians var/pickedtype = /mob/living/simple_animal/hostile/guardian/punch - switch(gaurdiantype) + switch(guardian_type) if("Chaos") pickedtype = /mob/living/simple_animal/hostile/guardian/fire @@ -325,84 +335,19 @@ user.verbs += /mob/living/proc/guardian_recall user.verbs += /mob/living/proc/guardian_reset - var/color - - //names and their RGB - var/magic_list = list("Pink" = "#FFC0CB", \ - "Red" = "#FF0000", \ - "Orange" = "#FFA500", \ - "Green" = "#008000", \ - "Blue" = "#0000FF") - - var/tech_list = list("Rose" = "#F62C6B", \ - "Peony" = "#E54750", \ - "Lily" = "#F6562C", \ - "Daisy" = "#ECCD39", \ - "Zinnia" = "#89F62C", \ - "Ivy" = "#5DF62C", \ - "Iris" = "#2CF6B8", \ - "Petunia" = "#51A9D4", \ - "Violet" = "#8A347C", \ - "Lilac" = "#C7A0F6", \ - "Orchid" = "#F62CF5") - - var/bio_list = list("Rose" = "#F62C6B", \ - "Peony" = "#E54750", \ - "Lily" = "#F6562C", \ - "Daisy" = "#ECCD39", \ - "Zinnia" = "#89F62C", \ - "Ivy" = "#5DF62C", \ - "Iris" = "#2CF6B8", \ - "Petunia" = "#51A9D4", \ - "Violet" = "#8A347C", \ - "Lilac" = "#C7A0F6", \ - "Orchid" = "#F62CF5") - - var/picked_name -// var/picked_color = pick("#FFFFFF","#000000","#808080","#A52A2A","#FF0000","#8B0000","#DC143C","#FFA500","#FFFF00","#008000","#00FF00","#006400","#00FFFF","#0000FF","#000080","#008080","#800080","#4B0082") - - switch(theme) - if("magic") - color = pick(magic_list) - G.name_color = magic_list[color] - picked_name = pick("Aries", "Leo", "Sagittarius", "Taurus", "Virgo", "Capricorn", "Gemini", "Libra", "Aquarius", "Cancer", "Scorpio", "Pisces") - - G.name = "[picked_name] [color]" - G.real_name = "[picked_name] [color]" - G.icon_living = "[theme][color]" - G.icon_state = "[theme][color]" - G.icon_dead = "[theme][color]" - - to_chat(user, "[G.magic_fluff_string].") - if("tech") - color = pick(tech_list) //technically not colors, just flowers that can be specific colors - G.name_color = tech_list[color] - picked_name = pick("Gallium", "Indium", "Thallium", "Bismuth", "Aluminium", "Mercury", "Iron", "Silver", "Zinc", "Titanium", "Chromium", "Nickel", "Platinum", "Tellurium", "Palladium", "Rhodium", "Cobalt", "Osmium", "Tungsten", "Iridium") - - G.name = "[picked_name] [color]" - G.real_name = "[picked_name] [color]" - G.icon_living = "[theme][color]" - G.icon_state = "[theme][color]" - G.icon_dead = "[theme][color]" - - to_chat(user, "[G.tech_fluff_string].") - G.speak_emote = list("states") - if("bio") - color = pick(bio_list) //technically not colors, just using the same flowers as tech currerntly - G.name_color = tech_list[color] - picked_name = pick("brood", "hive", "nest") - to_chat(user, "[G.bio_fluff_string].") - - G.name = "[color] [picked_name]" - G.real_name = "[color] [picked_name]" - G.icon_living = "[theme][color]" - G.icon_state = "[theme][color]" - G.icon_dead = "[theme][color]" - - to_chat(user, "[G.bio_fluff_string].") - G.attacktext = "swarms" - G.speak_emote = list("chitters") + var/color = pick(color_list) + G.name_color = color_list[color] + var/picked_name = pick(name_list) + create_theme(G, user, picked_name, color) +/obj/item/guardiancreator/proc/create_theme(mob/living/simple_animal/hostile/guardian/G, mob/living/user, picked_name, color) + G.name = "[picked_name] [color]" + G.real_name = "[picked_name] [color]" + G.icon_living = "[theme][color]" + G.icon_state = "[theme][color]" + G.icon_dead = "[theme][color]" + to_chat(user, "[G.magic_fluff_string].") + /obj/item/guardiancreator/choose random = FALSE @@ -417,6 +362,27 @@ used_message = "The injector has already been used." failure_message = "...ERROR. BOOT SEQUENCE ABORTED. AI FAILED TO INTIALIZE. PLEASE CONTACT SUPPORT OR TRY AGAIN LATER." ling_failure = "The holoparasites recoil in horror. They want nothing to do with a creature like you." + color_list = list("Rose" = "#F62C6B", + "Peony" = "#E54750", + "Lily" = "#F6562C", + "Daisy" = "#ECCD39", + "Zinnia" = "#89F62C", + "Ivy" = "#5DF62C", + "Iris" = "#2CF6B8", + "Petunia" = "#51A9D4", + "Violet" = "#8A347C", + "Lilac" = "#C7A0F6", + "Orchid" = "#F62CF5") + name_list = list("Gallium", "Indium", "Thallium", "Bismuth", "Aluminium", "Mercury", "Iron", "Silver", "Zinc", "Titanium", "Chromium", "Nickel", "Platinum", "Tellurium", "Palladium", "Rhodium", "Cobalt", "Osmium", "Tungsten", "Iridium") + +/obj/item/guardiancreator/tech/create_theme(mob/living/simple_animal/hostile/guardian/G, mob/living/user, picked_name, color) + G.name = "[picked_name] [color]" + G.real_name = "[picked_name] [color]" + G.icon_living = "[theme][color]" + G.icon_state = "[theme][color]" + G.icon_dead = "[theme][color]" + to_chat(user, "[G.tech_fluff_string].") + G.speak_emote = list("states") /obj/item/guardiancreator/tech/check_uplink_validity() return !used @@ -434,6 +400,28 @@ use_message = "The eggs begin to twitch..." used_message = "The cluster already hatched." failure_message = "...but soon settles again. Guess they weren't ready to hatch after all." + color_list = list("Rose" = "#F62C6B", + "Peony" = "#E54750", + "Lily" = "#F6562C", + "Daisy" = "#ECCD39", + "Zinnia" = "#89F62C", + "Ivy" = "#5DF62C", + "Iris" = "#2CF6B8", + "Petunia" = "#51A9D4", + "Violet" = "#8A347C", + "Lilac" = "#C7A0F6", + "Orchid" = "#F62CF5") + name_list = list("brood", "hive", "nest") + +/obj/item/guardiancreator/biological/create_theme(mob/living/simple_animal/hostile/guardian/G, mob/living/user, picked_name, color) + G.name = "[color] [picked_name]" + G.real_name = "[color] [picked_name]" + G.icon_living = "[theme][color]" + G.icon_state = "[theme][color]" + G.icon_dead = "[theme][color]" + to_chat(user, "[G.bio_fluff_string].") + G.attacktext = "swarms" + G.speak_emote = list("chitters") /obj/item/guardiancreator/biological/choose random = FALSE diff --git a/code/game/gamemodes/miniantags/guardian/types/bomb.dm b/code/game/gamemodes/miniantags/guardian/types/bomb.dm index 0503806b196..23f922687a2 100644 --- a/code/game/gamemodes/miniantags/guardian/types/bomb.dm +++ b/code/game/gamemodes/miniantags/guardian/types/bomb.dm @@ -37,38 +37,41 @@ /obj/item/guardian_bomb/proc/disguise(var/obj/A) A.forceMove(src) stored_obj = A + opacity = A.opacity anchored = A.anchored density = A.density appearance = A.appearance - spawn(600) - if(src) - stored_obj.loc = get_turf(loc) - if(spawner) - to_chat(spawner, "Failure! Your trap on [stored_obj] didn't catch anyone this time.") - qdel(src) + dir = A.dir + addtimer(CALLBACK(src, .proc/disable), 600) + +/obj/item/guardian_bomb/proc/disable() + stored_obj.forceMove(get_turf(src)) + if(spawner) + to_chat(spawner, "Failure! Your trap on [stored_obj] didn't catch anyone this time.") + qdel(src) /obj/item/guardian_bomb/proc/detonate(var/mob/living/user) + if(!istype(user)) + return to_chat(user, "The [src] was boobytrapped!") if(istype(spawner, /mob/living/simple_animal/hostile/guardian)) var/mob/living/simple_animal/hostile/guardian/G = spawner if(user == G.summoner) to_chat(user, "You knew this because of your link with your guardian, so you smartly defuse the bomb.") - stored_obj.loc = get_turf(loc) + stored_obj.forceMove(get_turf(loc)) qdel(src) return to_chat(spawner, "Success! Your trap on [src] caught [user]!") - stored_obj.loc = get_turf(loc) + stored_obj.forceMove(get_turf(loc)) playsound(get_turf(src),'sound/effects/Explosion2.ogg', 200, 1) user.ex_act(2) qdel(src) -/obj/item/guardian_bomb/attackby(mob/living/user) +/obj/item/guardian_bomb/attackby(obj/item/W, mob/living/user) detonate(user) - return /obj/item/guardian_bomb/pickup(mob/living/user) detonate(user) - return /obj/item/guardian_bomb/examine(mob/user) stored_obj.examine(user) diff --git a/code/game/gamemodes/miniantags/revenant/revenant.dm b/code/game/gamemodes/miniantags/revenant/revenant.dm index 7d8953b8b84..fe7d02488d6 100644 --- a/code/game/gamemodes/miniantags/revenant/revenant.dm +++ b/code/game/gamemodes/miniantags/revenant/revenant.dm @@ -98,11 +98,11 @@ return log_say(message, src) var/rendered = "[src] says, \"[message]\"" - for(var/mob/M in mob_list) + for(var/mob/M in GLOB.mob_list) if(istype(M, /mob/living/simple_animal/revenant)) to_chat(M, rendered) if(isobserver(M)) - to_chat(M, "(F) [rendered]") + to_chat(M, "(F) [rendered]") return /mob/living/simple_animal/revenant/Stat() @@ -120,10 +120,37 @@ updateallghostimages() remove_from_all_data_huds() - spawn(5) - if(src.mind) - src.mind.wipe_memory() - src << 'sound/effects/ghost.ogg' + addtimer(CALLBACK(src, .proc/firstSetupAttempt), 15 SECONDS) // Give admin 15 seconds to put in a ghost (Or wait 15 seconds before giving it objectives) + + +/mob/living/simple_animal/revenant/proc/firstSetupAttempt() + if(mind) + giveObjectivesandGoals() + giveSpells() + else + message_admins("Revenant was created but has no mind. Put a ghost inside, or a poll will be made in one minute.") + addtimer(CALLBACK(src, .proc/setupOrDelete), 1 MINUTES) + +/mob/living/simple_animal/revenant/proc/setupOrDelete() + if(mind) + giveObjectivesandGoals() + giveSpells() + else + var/list/mob/dead/observer/candidates = pollCandidates("Do you want to play as a revenant?", poll_time = 15 SECONDS) + var/mob/dead/observer/theghost = null + if(candidates.len) + theghost = pick(candidates) + message_admins("[key_name_admin(theghost)] has taken control of a revenant created without a mind") + key = theghost.key + giveObjectivesandGoals() + giveSpells() + else + message_admins("No ghost was willing to take control of a mindless revenant. Deleting...") + qdel(src) + +/mob/living/simple_animal/revenant/proc/giveObjectivesandGoals() + mind.wipe_memory() + SEND_SOUND(src, 'sound/effects/ghost.ogg') to_chat(src, "
") to_chat(src, "You are a revenant.") to_chat(src, "Your formerly mundane spirit has been infused with alien energies and empowered into a revenant.") @@ -132,32 +159,23 @@ to_chat(src, "To function, you are to drain the life essence from humans. This essence is a resource, as well as your health, and will power all of your abilities.") to_chat(src, "You do not remember anything of your past lives, nor will you remember anything about this one after your death.") to_chat(src, "Be sure to read the wiki page at http://nanotrasen.se/wiki/index.php/Revenant to learn more.") - var/datum/objective/revenant/objective = new - objective.owner = src.mind - src.mind.objectives += objective + objective.owner = mind + mind.objectives += objective to_chat(src, "Objective #1: [objective.explanation_text]") var/datum/objective/revenantFluff/objective2 = new - objective2.owner = src.mind - src.mind.objectives += objective2 + objective2.owner = mind + mind.objectives += objective2 to_chat(src, "Objective #2: [objective2.explanation_text]") - ticker.mode.traitors |= src.mind //Necessary for announcing - if(!src.giveSpells()) - message_admins("Revenant was created but has no mind. Trying again in five seconds.") - spawn(50) - if(!src.giveSpells()) - message_admins("Revenant still has no mind. Deleting...") - qdel(src) + ticker.mode.traitors |= mind //Necessary for announcing /mob/living/simple_animal/revenant/proc/giveSpells() - if(src.mind) - src.mind.AddSpell(new /obj/effect/proc_holder/spell/targeted/night_vision/revenant(null)) - src.mind.AddSpell(new /obj/effect/proc_holder/spell/targeted/revenant_transmit(null)) - src.mind.AddSpell(new /obj/effect/proc_holder/spell/aoe_turf/revenant/overload(null)) - src.mind.AddSpell(new /obj/effect/proc_holder/spell/aoe_turf/revenant/defile(null)) - src.mind.AddSpell(new /obj/effect/proc_holder/spell/aoe_turf/revenant/malfunction(null)) - return 1 - return 0 + mind.AddSpell(new /obj/effect/proc_holder/spell/targeted/night_vision/revenant(null)) + mind.AddSpell(new /obj/effect/proc_holder/spell/targeted/revenant_transmit(null)) + mind.AddSpell(new /obj/effect/proc_holder/spell/aoe_turf/revenant/overload(null)) + mind.AddSpell(new /obj/effect/proc_holder/spell/aoe_turf/revenant/defile(null)) + mind.AddSpell(new /obj/effect/proc_holder/spell/aoe_turf/revenant/malfunction(null)) + return TRUE /mob/living/simple_animal/revenant/dust() @@ -368,7 +386,7 @@ loc = get_turf(src) //In case it's in a backpack or someone's hand var/mob/living/simple_animal/revenant/R = new(get_turf(src)) if(client_to_revive) - for(var/mob/M in dead_mob_list) + for(var/mob/M in GLOB.dead_mob_list) if(M.client == client_to_revive) //Only recreates the mob if the mob the client is in is dead R.client = client_to_revive key_of_revenant = client_to_revive.key diff --git a/code/game/gamemodes/miniantags/revenant/revenant_abilities.dm b/code/game/gamemodes/miniantags/revenant/revenant_abilities.dm index 5a7825c0cfe..c201b1bc45d 100644 --- a/code/game/gamemodes/miniantags/revenant/revenant_abilities.dm +++ b/code/game/gamemodes/miniantags/revenant/revenant_abilities.dm @@ -209,9 +209,7 @@ if(!L.on) return L.visible_message("\The [L] suddenly flares brightly and begins to spark!") - var/datum/effect_system/spark_spread/s = new /datum/effect_system/spark_spread/ - s.set_up(4, 0, L) - s.start() + do_sparks(4, 0, L) new/obj/effect/temp_visual/revenant(L.loc) sleep(20) if(!L.on) //wait, wait, don't shock me @@ -222,9 +220,7 @@ return M.Beam(L,icon_state="purple_lightning",icon='icons/effects/effects.dmi',time=5) M.electrocute_act(shock_damage, "[L.name]", safety=1) - var/datum/effect_system/spark_spread/z = new /datum/effect_system/spark_spread/ - z.set_up(4, 0, M) - z.start() + do_sparks(4, 0, M) playsound(M, 'sound/machines/defib_zap.ogg', 50, 1, -1) //Defile: Corrupts nearby stuff, unblesses floor tiles. diff --git a/code/game/gamemodes/miniantags/revenant/revenant_spawn_event.dm b/code/game/gamemodes/miniantags/revenant/revenant_spawn_event.dm index a70114d8f5e..757fbe579a2 100644 --- a/code/game/gamemodes/miniantags/revenant/revenant_spawn_event.dm +++ b/code/game/gamemodes/miniantags/revenant/revenant_spawn_event.dm @@ -6,7 +6,7 @@ /datum/event/revenant/proc/get_revenant(var/end_if_fail = 0) var/deadMobs = 0 - for(var/mob/M in dead_mob_list) + for(var/mob/M in GLOB.dead_mob_list) deadMobs++ if(deadMobs < REVENANT_SPAWN_THRESHOLD) message_admins("Random event attempted to spawn a revenant, but there were only [deadMobs]/[REVENANT_SPAWN_THRESHOLD] dead mobs.") @@ -26,13 +26,13 @@ var/datum/mind/player_mind = new /datum/mind(key_of_revenant) player_mind.active = 1 var/list/spawn_locs = list() - for(var/obj/effect/landmark/L in landmarks_list) + for(var/obj/effect/landmark/L in GLOB.landmarks_list) if(isturf(L.loc)) switch(L.name) if("revenantspawn") spawn_locs += L.loc if(!spawn_locs) //If we can't find any revenant spawns, try the carp spawns - for(var/obj/effect/landmark/L in landmarks_list) + for(var/obj/effect/landmark/L in GLOB.landmarks_list) if(isturf(L.loc)) switch(L.name) if("carpspawn") diff --git a/code/game/gamemodes/miniantags/slaughter/slaughter.dm b/code/game/gamemodes/miniantags/slaughter/slaughter.dm index d6f14e546e5..5d785cc44e3 100644 --- a/code/game/gamemodes/miniantags/slaughter/slaughter.dm +++ b/code/game/gamemodes/miniantags/slaughter/slaughter.dm @@ -141,7 +141,7 @@ /obj/effect/proc_holder/spell/targeted/sense_victims/cast(list/targets) var/list/victims = targets - for(var/mob/living/L in living_mob_list) + for(var/mob/living/L in GLOB.living_mob_list) if(!L.stat && !iscultist(L) && L.key && L != usr) victims.Add(L) if(!targets.len) @@ -225,7 +225,7 @@ log_say("(SLAUGHTER to [key_name(choice)]) [msg]", usr) to_chat(usr, "You whisper to [choice]: [msg]") to_chat(choice, "Suddenly a strange, demonic voice resonates in your head... [msg]") - for(var/mob/dead/observer/G in player_list) + for(var/mob/dead/observer/G in GLOB.player_list) G.show_message("Demonic message from [usr] ([ghost_follow_link(usr, ghost=G)]) to [choice] ([ghost_follow_link(choice, ghost=G)]): [msg]") diff --git a/code/game/gamemodes/nations/nations.dm b/code/game/gamemodes/nations/nations.dm index 5d625d5fdda..c8a9ad00a62 100644 --- a/code/game/gamemodes/nations/nations.dm +++ b/code/game/gamemodes/nations/nations.dm @@ -16,7 +16,7 @@ datum/game_mode/nations set_ai() assign_leaders() // remove_access() - for(var/mob/M in player_list) + for(var/mob/M in GLOB.player_list) if(!istype(M,/mob/new_player)) M << sound('sound/effects/purge_siren.ogg') @@ -34,10 +34,10 @@ datum/game_mode/nations /datum/game_mode/nations/proc/split_teams() - for(var/mob/living/carbon/human/H in player_list) + for(var/mob/living/carbon/human/H in GLOB.player_list) if(H.mind) if(H.mind.assigned_role in engineering_positions) - H.mind.nation = all_nations["Atmosia"] + H.mind.nation = GLOB.all_nations["Atmosia"] update_nations_icons_added(H,"hudatmosia") H.mind.nation.membership += H.mind.current if(H.mind.assigned_role == H.mind.nation.default_leader) @@ -48,7 +48,7 @@ datum/game_mode/nations continue if(H.mind.assigned_role in medical_positions) - H.mind.nation = all_nations["Medistan"] + H.mind.nation = GLOB.all_nations["Medistan"] update_nations_icons_added(H,"hudmedistan") H.mind.nation.membership += H.mind.current if(H.mind.assigned_role == H.mind.nation.default_leader) @@ -59,7 +59,7 @@ datum/game_mode/nations continue if(H.mind.assigned_role in science_positions) - H.mind.nation = all_nations["Scientopia"] + H.mind.nation = GLOB.all_nations["Scientopia"] update_nations_icons_added(H,"hudscientopia") H.mind.nation.membership += H.mind.current if(H.mind.assigned_role == H.mind.nation.default_leader) @@ -70,7 +70,7 @@ datum/game_mode/nations continue if(H.mind.assigned_role in security_positions) - H.mind.nation = all_nations["Brigston"] + H.mind.nation = GLOB.all_nations["Brigston"] update_nations_icons_added(H,"hudbrigston") H.mind.nation.membership += H.mind.current if(H.mind.assigned_role == H.mind.nation.default_leader) @@ -81,7 +81,7 @@ datum/game_mode/nations continue if(H.mind.assigned_role in cargonians) - H.mind.nation = all_nations["Cargonia"] + H.mind.nation = GLOB.all_nations["Cargonia"] update_nations_icons_added(H,"hudcargonia") H.mind.nation.membership += H.mind.current if(H.mind.assigned_role == H.mind.nation.default_leader) @@ -92,7 +92,7 @@ datum/game_mode/nations continue if(H.mind.assigned_role in servicion) - H.mind.nation = all_nations["Servicion"] + H.mind.nation = GLOB.all_nations["Servicion"] update_nations_icons_added(H,"hudservice") H.mind.nation.membership += H.mind.current if(H.mind.assigned_role == H.mind.nation.default_leader) @@ -103,7 +103,7 @@ datum/game_mode/nations continue if(H.mind.assigned_role in (support_positions + command_positions)) - H.mind.nation = all_nations["People's Republic of Commandzakstan"] + H.mind.nation = GLOB.all_nations["People's Republic of Commandzakstan"] update_nations_icons_added(H,"hudcommand") H.mind.nation.membership += H.mind.current if(H.mind.assigned_role == H.mind.nation.default_leader) @@ -123,7 +123,7 @@ datum/game_mode/nations /datum/game_mode/nations/proc/set_ai() - for(var/mob/living/silicon/ai/AI in mob_list) + for(var/mob/living/silicon/ai/AI in GLOB.mob_list) AI.set_zeroth_law("") AI.clear_supplied_laws() AI.clear_ion_laws() @@ -141,14 +141,14 @@ datum/game_mode/nations qdel(oldmmi) /datum/game_mode/nations/proc/remove_access() - for(var/obj/machinery/door/airlock/W in airlocks) + for(var/obj/machinery/door/airlock/W in GLOB.airlocks) if(is_station_level(W.z)) W.req_access = list() /datum/game_mode/nations/proc/assign_leaders() - for(var/name in all_nations) - var/datum/nations/N = all_nations[name] + for(var/name in GLOB.all_nations) + var/datum/nations/N = GLOB.all_nations[name] if(!N.current_name) N.current_name = N.default_name if(!N.current_leader && N.membership.len) @@ -174,49 +174,49 @@ datum/game_mode/nations if(H.mind) if(H.mind.assigned_role in engineering_positions) - H.mind.nation = all_nations["Atmosia"] + H.mind.nation = GLOB.all_nations["Atmosia"] mode.update_nations_icons_added(H,"atmosia") H.mind.nation.membership += H.mind.current to_chat(H, "You are now part of the great sovereign nation of [H.mind.nation.current_name]!") return 1 if(H.mind.assigned_role in medical_positions) - H.mind.nation = all_nations["Medistan"] + H.mind.nation = GLOB.all_nations["Medistan"] mode.update_nations_icons_added(H,"hudmedistan") H.mind.nation.membership += H.mind.current to_chat(H, "You are now part of the great sovereign nation of [H.mind.nation.current_name]!") return 1 if(H.mind.assigned_role in science_positions) - H.mind.nation = all_nations["Scientopia"] + H.mind.nation = GLOB.all_nations["Scientopia"] mode.update_nations_icons_added(H,"hudscientopia") H.mind.nation.membership += H.mind.current to_chat(H, "You are now part of the great sovereign nation of [H.mind.nation.current_name]!") return 1 if(H.mind.assigned_role in security_positions) - H.mind.nation = all_nations["Brigston"] + H.mind.nation = GLOB.all_nations["Brigston"] mode.update_nations_icons_added(H,"hudbrigston") H.mind.nation.membership += H.mind.current to_chat(H, "You are now part of the great sovereign nation of [H.mind.nation.current_name]!") return 1 if(H.mind.assigned_role in mode.cargonians) - H.mind.nation = all_nations["Cargonia"] + H.mind.nation = GLOB.all_nations["Cargonia"] mode.update_nations_icons_added(H,"hudcargonia") H.mind.nation.membership += H.mind.current to_chat(H, "You are now part of the great sovereign nation of [H.mind.nation.current_name]!") return 1 if(H.mind.assigned_role in mode.servicion) - H.mind.nation = all_nations["Servicion"] + H.mind.nation = GLOB.all_nations["Servicion"] mode.update_nations_icons_added(H,"hudservice") H.mind.nation.membership += H.mind.current to_chat(H, "You are now part of the great sovereign nation of [H.mind.nation.current_name]!") return 1 if(H.mind.assigned_role in (support_positions + command_positions)) - H.mind.nation = all_nations["People's Republic of Commandzakstan"] + H.mind.nation = GLOB.all_nations["People's Republic of Commandzakstan"] mode.update_nations_icons_added(H,"hudcommand") H.mind.nation.membership += H.mind.current to_chat(H, "You are now part of the great sovereign nation of [H.mind.nation.current_name]!") diff --git a/code/game/gamemodes/nuclear/nuclear.dm b/code/game/gamemodes/nuclear/nuclear.dm index 0130f1260d6..9c72ffc9bef 100644 --- a/code/game/gamemodes/nuclear/nuclear.dm +++ b/code/game/gamemodes/nuclear/nuclear.dm @@ -91,7 +91,7 @@ proc/issyndicate(mob/living/M as mob) var/list/turf/synd_spawn = list() - for(var/obj/effect/landmark/A in landmarks_list) + for(var/obj/effect/landmark/A in GLOB.landmarks_list) if(A.name == "Syndicate-Spawn") synd_spawn += get_turf(A) qdel(A) @@ -168,10 +168,6 @@ proc/issyndicate(mob/living/M as mob) /datum/game_mode/proc/prepare_syndicate_leader(var/datum/mind/synd_mind, var/nuke_code) var/leader_title = pick("Czar", "Boss", "Commander", "Chief", "Kingpin", "Director", "Overlord") - /* - spawn(1) - NukeNameAssign(nukelastname(synd_mind.current),syndicates) //allows time for the rest of the syndies to be chosen - */ synd_mind.current.real_name = "[syndicate_name()] Team [leader_title]" to_chat(synd_mind.current, "You are the Syndicate leader for this mission. You are responsible for the distribution of telecrystals and your ID is the only one who can open the launch bay doors.") to_chat(synd_mind.current, "If you feel you are not up to this task, give your ID to another operative.") @@ -296,7 +292,7 @@ proc/issyndicate(mob/living/M as mob) /datum/game_mode/nuclear/declare_completion() var/disk_rescued = 1 - for(var/obj/item/disk/nuclear/D in poi_list) + for(var/obj/item/disk/nuclear/D in GLOB.poi_list) if(!D.onCentcom()) disk_rescued = 0 break @@ -309,51 +305,50 @@ proc/issyndicate(mob/living/M as mob) //derp //Used for tracking if the syndies actually haul the nuke to the station //no //herp //Used for tracking if the syndies got the shuttle off of the z-level //NO, DON'T FUCKING NAME VARS LIKE THIS - if(!disk_rescued && station_was_nuked && !syndies_didnt_escape) - feedback_set_details("round_end_result","win - syndicate nuke") + if(!disk_rescued && station_was_nuked && !syndies_didnt_escape) + feedback_set_details("round_end_result","nuclear win - syndicate nuke") to_chat(world, "Syndicate Major Victory!") to_chat(world, "[syndicate_name()] operatives have destroyed [station_name()]!") - else if(!disk_rescued && station_was_nuked && syndies_didnt_escape) - feedback_set_details("round_end_result","halfwin - syndicate nuke - did not evacuate in time") + else if(!disk_rescued && station_was_nuked && syndies_didnt_escape) + feedback_set_details("round_end_result","nuclear halfwin - syndicate nuke - did not evacuate in time") to_chat(world, "Total Annihilation") to_chat(world, "[syndicate_name()] operatives destroyed [station_name()] but did not leave the area in time and got caught in the explosion. Next time, don't lose the disk!") - else if(!disk_rescued && !station_was_nuked && nuke_off_station && !syndies_didnt_escape) - feedback_set_details("round_end_result","halfwin - blew wrong station") + else if(!disk_rescued && !station_was_nuked && nuke_off_station && !syndies_didnt_escape) + feedback_set_details("round_end_result","nuclear halfwin - blew wrong station") to_chat(world, "Crew Minor Victory") to_chat(world, "[syndicate_name()] operatives secured the authentication disk but blew up something that wasn't [station_name()]. Next time, don't lose the disk!") - else if(!disk_rescued && !station_was_nuked && nuke_off_station && syndies_didnt_escape) - feedback_set_details("round_end_result","halfwin - blew wrong station - did not evacuate in time") + else if(!disk_rescued && !station_was_nuked && nuke_off_station && syndies_didnt_escape) + feedback_set_details("round_end_result","nuclear halfwin - blew wrong station - did not evacuate in time") to_chat(world, "[syndicate_name()] operatives have earned Darwin Award!") to_chat(world, "[syndicate_name()] operatives blew up something that wasn't [station_name()] and got caught in the explosion. Next time, don't lose the disk!") - else if( disk_rescued && is_operatives_are_dead()) - feedback_set_details("round_end_result","loss - evacuation - disk secured - syndi team dead") + else if(disk_rescued && is_operatives_are_dead()) + feedback_set_details("round_end_result","nuclear loss - evacuation - disk secured - syndi team dead") to_chat(world, "Crew Major Victory!") to_chat(world, "The Research Staff has saved the disc and killed the [syndicate_name()] Operatives") - else if( disk_rescued ) - feedback_set_details("round_end_result","loss - evacuation - disk secured") + else if(disk_rescued) + feedback_set_details("round_end_result","nuclear loss - evacuation - disk secured") to_chat(world, "Crew Major Victory") to_chat(world, "The Research Staff has saved the disc and stopped the [syndicate_name()] Operatives!") - else if(!disk_rescued && is_operatives_are_dead()) - feedback_set_details("round_end_result","loss - evacuation - disk not secured") + else if(!disk_rescued && is_operatives_are_dead()) + feedback_set_details("round_end_result","nuclear loss - evacuation - disk not secured") to_chat(world, "Syndicate Minor Victory!") to_chat(world, "The Research Staff failed to secure the authentication disk but did manage to kill most of the [syndicate_name()] Operatives!") - else if(!disk_rescued && crew_evacuated) - feedback_set_details("round_end_result","halfwin - detonation averted") + else if(!disk_rescued && crew_evacuated) + feedback_set_details("round_end_result","nuclear halfwin - detonation averted") to_chat(world, "Syndicate Minor Victory!") to_chat(world, "[syndicate_name()] operatives recovered the abandoned authentication disk but detonation of [station_name()] was averted. Next time, don't lose the disk!") - else if(!disk_rescued && !crew_evacuated) - feedback_set_details("round_end_result","halfwin - interrupted") + else if(!disk_rescued && !crew_evacuated) + feedback_set_details("round_end_result","nuclear halfwin - interrupted") to_chat(world, "Neutral Victory") to_chat(world, "Round was mysteriously interrupted!") - ..() return @@ -394,7 +389,7 @@ proc/issyndicate(mob/living/M as mob) return 1 /proc/nukelastname(var/mob/M as mob) //--All praise goes to NEO|Phyte, all blame goes to DH, and it was Cindi-Kate's idea. Also praise Urist for copypasta ho. - var/randomname = pick(last_names) + var/randomname = pick(GLOB.last_names) var/newname = sanitize(copytext(input(M,"You are the nuke operative [pick("Czar", "Boss", "Commander", "Chief", "Kingpin", "Director", "Overlord")]. Please choose a last name for your family.", "Name change",randomname),1,MAX_NAME_LEN)) if(!newname) @@ -407,15 +402,6 @@ proc/issyndicate(mob/living/M as mob) return newname -/proc/NukeNameAssign(var/lastname,var/list/syndicates) - for(var/datum/mind/synd_mind in syndicates) - switch(synd_mind.current.gender) - if(MALE) - synd_mind.name = "[pick(first_names_male)] [pick(last_names)]" - if(FEMALE) - synd_mind.name = "[pick(first_names_female)] [pick(last_names)]" - synd_mind.current.real_name = synd_mind.name - return /datum/game_mode/nuclear/set_scoreboard_gvars() var/foecount = 0 diff --git a/code/game/gamemodes/nuclear/nuclear_challenge.dm b/code/game/gamemodes/nuclear/nuclear_challenge.dm index 7e75f579bf5..328a462ac32 100644 --- a/code/game/gamemodes/nuclear/nuclear_challenge.dm +++ b/code/game/gamemodes/nuclear/nuclear_challenge.dm @@ -52,12 +52,12 @@ to_chat(user, "You've attracted the attention of powerful forces within the syndicate. A bonus bundle of telecrystals has been granted to your team. Great things await you if you complete the mission.") to_chat(user, "Look below you on the floor for the extra uplink") - for(var/obj/machinery/computer/shuttle/syndicate/S in machines) + for(var/obj/machinery/computer/shuttle/syndicate/S in GLOB.machines) S.challenge = TRUE var/obj/item/radio/uplink/U = new /obj/item/radio/uplink(get_turf(user)) U.hidden_uplink.uplink_owner= "[user.key]" - U.hidden_uplink.uses = CHALLENGE_TELECRYSTALS + round((((player_list.len - CHALLENGE_MIN_PLAYERS)/CHALLENGE_SCALE_PLAYER) * CHALLENGE_SCALE_BONUS)) // No. of player - Min. Player to dec, divided by player per bonus, then multipled by TC per bonus. Rounded. + U.hidden_uplink.uses = CHALLENGE_TELECRYSTALS + round((((GLOB.player_list.len - CHALLENGE_MIN_PLAYERS)/CHALLENGE_SCALE_PLAYER) * CHALLENGE_SCALE_BONUS)) // No. of player - Min. Player to dec, divided by player per bonus, then multipled by TC per bonus. Rounded. config.shuttle_refuel_delay = CHALLENGE_SHUTTLE_DELAY qdel(src) @@ -65,7 +65,7 @@ if(declaring_war) to_chat(user, "You are already in the process of declaring war! Make your mind up.") return FALSE - if(player_list.len < CHALLENGE_MIN_PLAYERS) + if(GLOB.player_list.len < CHALLENGE_MIN_PLAYERS) to_chat(user, "The enemy crew is too small to be worth declaring war on.") return FALSE if(!is_admin_level(user.z)) @@ -74,7 +74,7 @@ if((world.time - round_start_time) > CHALLENGE_TIME_LIMIT) // Only count after the round started to_chat(user, "It's too late to declare hostilities. Your benefactors are already busy with other schemes. You'll have to make do with what you have on hand.") return FALSE - for(var/obj/machinery/computer/shuttle/syndicate/S in machines) + for(var/obj/machinery/computer/shuttle/syndicate/S in GLOB.machines) if(S.moved) to_chat(user, "The shuttle has already been moved! You have forfeit the right to declare war.") return FALSE diff --git a/code/game/gamemodes/nuclear/nuclearbomb.dm b/code/game/gamemodes/nuclear/nuclearbomb.dm index 51831752758..b847dac0a54 100644 --- a/code/game/gamemodes/nuclear/nuclearbomb.dm +++ b/code/game/gamemodes/nuclear/nuclearbomb.dm @@ -32,11 +32,11 @@ var/bomb_set r_code = "[rand(10000, 99999.0)]"//Creates a random code upon object spawn. wires = new/datum/wires/nuclearbomb(src) previous_level = get_security_level() - poi_list |= src + GLOB.poi_list |= src /obj/machinery/nuclearbomb/Destroy() QDEL_NULL(wires) - poi_list.Remove(src) + GLOB.poi_list.Remove(src) return ..() /obj/machinery/nuclearbomb/process() @@ -405,7 +405,7 @@ var/bomb_set /obj/item/disk/nuclear/New() ..() processing_objects.Add(src) - poi_list |= src + GLOB.poi_list |= src /obj/item/disk/nuclear/process() var/turf/disk_loc = get_turf(src) @@ -421,12 +421,12 @@ var/bomb_set if(force) message_admins("[src] has been !!force deleted!! in ([diskturf ? "[diskturf.x], [diskturf.y] ,[diskturf.z] - JMP":"nonexistent location"]).") log_game("[src] has been !!force deleted!! in ([diskturf ? "[diskturf.x], [diskturf.y] ,[diskturf.z]":"nonexistent location"]).") - poi_list.Remove(src) + GLOB.poi_list.Remove(src) processing_objects.Remove(src) return ..() if(blobstart.len > 0) - poi_list.Remove(src) + GLOB.poi_list.Remove(src) var/obj/item/disk/nuclear/NEWDISK = new(pick(blobstart)) transfer_fingerprints_to(NEWDISK) message_admins("[src] has been destroyed at ([diskturf.x], [diskturf.y], [diskturf.z] - JMP). Moving it to ([NEWDISK.x], [NEWDISK.y], [NEWDISK.z] - JMP).") diff --git a/code/game/gamemodes/nuclear/pinpointer.dm b/code/game/gamemodes/nuclear/pinpointer.dm index 285654ea81c..ec667bbad86 100644 --- a/code/game/gamemodes/nuclear/pinpointer.dm +++ b/code/game/gamemodes/nuclear/pinpointer.dm @@ -21,10 +21,10 @@ /obj/item/pinpointer/New() ..() - pinpointer_list += src + GLOB.pinpointer_list += src /obj/item/pinpointer/Destroy() - pinpointer_list -= src + GLOB.pinpointer_list -= src active = 0 the_disk = null return ..() @@ -81,7 +81,7 @@ if(!shows_nuke_timer) return - for(var/obj/machinery/nuclearbomb/bomb in machines) + for(var/obj/machinery/nuclearbomb/bomb in GLOB.machines) if(bomb.timing) to_chat(user, "Extreme danger. Arming signal detected. Time remaining: [bomb.timeleft]") @@ -174,7 +174,7 @@ var/DNAstring = input("Input DNA string to search for." , "Please Enter String." , "") if(!DNAstring) return - for(var/mob/living/carbon/C in mob_list) + for(var/mob/living/carbon/C in GLOB.mob_list) if(!C.dna) continue if(C.dna.unique_enzymes == DNAstring) @@ -289,7 +289,7 @@ if(active) nearest_op = null //Resets nearest_op every time it scans var/closest_distance = 1000 - for(var/mob/living/carbon/M in mob_list) + for(var/mob/living/carbon/M in GLOB.mob_list) if(M.mind && (M.mind in ticker.mode.syndicates)) if(get_dist(M, get_turf(src)) < closest_distance) //Actually points toward the nearest op, instead of a random one like it used to nearest_op = M @@ -347,7 +347,7 @@ var/list/name_counts = list() var/list/names = list() - for(var/mob/living/carbon/human/H in mob_list) + for(var/mob/living/carbon/human/H in GLOB.mob_list) if(!trackable(H)) continue diff --git a/code/game/gamemodes/objective.dm b/code/game/gamemodes/objective.dm index 2e3862ce583..51fc6ed8030 100644 --- a/code/game/gamemodes/objective.dm +++ b/code/game/gamemodes/objective.dm @@ -200,7 +200,7 @@ var/list/potential_theft_objectives = subtypesof(/datum/theft_objective) - /datu var/area/A = SSshuttle.emergency.areaInstance - for(var/mob/living/player in player_list) //Make sure nobody else is onboard + for(var/mob/living/player in GLOB.player_list) //Make sure nobody else is onboard if(player.mind && player.mind != owner) if(player.stat != DEAD) if(issilicon(player)) @@ -209,7 +209,7 @@ var/list/potential_theft_objectives = subtypesof(/datum/theft_objective) - /datu if(player.real_name != owner.current.real_name && !istype(get_turf(player.mind.current), /turf/simulated/shuttle/floor4)) return 0 - for(var/mob/living/player in player_list) //Make sure at least one of you is onboard + for(var/mob/living/player in GLOB.player_list) //Make sure at least one of you is onboard if(player.mind && player.mind != owner) if(player.stat != DEAD) if(issilicon(player)) @@ -234,7 +234,7 @@ var/list/potential_theft_objectives = subtypesof(/datum/theft_objective) - /datu var/area/A = SSshuttle.emergency.areaInstance var/list/protected_mobs = list(/mob/living/silicon/ai, /mob/living/silicon/pai, /mob/living/silicon/robot) - for(var/mob/living/player in player_list) + for(var/mob/living/player in GLOB.player_list) if(player.type in protected_mobs) continue @@ -446,13 +446,13 @@ var/list/potential_theft_objectives = subtypesof(/datum/theft_objective) - /datu if(ticker) var/n_p = 1 //autowin if(ticker.current_state == GAME_STATE_SETTING_UP) - for(var/mob/new_player/P in player_list) + for(var/mob/new_player/P in GLOB.player_list) if(P.client && P.ready && P.mind != owner) if(P.client.prefs && (P.client.prefs.species == "Machine")) // Special check for species that can't be absorbed. No better solution. continue n_p++ else if(ticker.current_state == GAME_STATE_PLAYING) - for(var/mob/living/carbon/human/P in player_list) + for(var/mob/living/carbon/human/P in GLOB.player_list) if(NO_DNA in P.dna.species.species_traits) continue if(P.client && !(P.mind in ticker.mode.changelings) && P.mind!=owner) diff --git a/code/game/gamemodes/revolution/revolution.dm b/code/game/gamemodes/revolution/revolution.dm index 15608cf665e..ccf70a72173 100644 --- a/code/game/gamemodes/revolution/revolution.dm +++ b/code/game/gamemodes/revolution/revolution.dm @@ -51,9 +51,9 @@ lenin.restricted_roles = restricted_jobs if(head_revolutionaries.len < required_enemies) - return 0 + return FALSE - return 1 + return TRUE /datum/game_mode/revolution/post_setup() @@ -72,10 +72,7 @@ for(var/datum/mind/head_mind in heads) mark_for_death(rev_mind, head_mind) - spawn(rand(10,100)) - // equip_traitor(rev_mind.current, 1) //changing how revs get assigned their uplink so they can get PDA uplinks. --NEO - // Removing revolutionary uplinks. -Pete - equip_revolutionary(rev_mind.current) + addtimer(CALLBACK(src, .proc/equip_revolutionary, rev_mind.current), rand(10, 100)) for(var/datum/mind/rev_mind in head_revolutionaries) greet_revolutionary(rev_mind) @@ -92,7 +89,7 @@ check_heads() ticker.mode.check_win() check_counter = 0 - return 0 + return FALSE /datum/game_mode/proc/forge_revolutionary_objectives(datum/mind/rev_mind) @@ -223,7 +220,7 @@ command_announcement.Announce("Hostile enviroment resolved. You have 3 minutes to board the Emergency Shuttle.", null, 'sound/AI/shuttledock.ogg') return ..() if(finished != 0) - return 1 + return TRUE else return ..() @@ -267,7 +264,7 @@ if(beingborged) to_chat(rev_mind.current, "The frame's firmware detects and deletes your neural reprogramming! You remember nothing[remove_head ? "." : " but the name of the one who flashed you."]") - message_admins("[key_name_admin(rev_mind.current)] ? (FLW) has been borged while being a [remove_head ? "leader" : " member"] of the revolution.") + message_admins("[key_name_admin(rev_mind.current)] [ADMIN_QUE(rev_mind.current,"?")] ([ADMIN_FLW(rev_mind.current,"FLW")]) has been borged while being a [remove_head ? "leader" : " member"] of the revolution.") else rev_mind.current.Paralyse(5) @@ -304,9 +301,9 @@ for(var/datum/mind/rev_mind in head_revolutionaries) for(var/datum/objective/mutiny/objective in rev_mind.objectives) if(!(objective.check_completion())) - return 0 + return FALSE - return 1 + return TRUE ///////////////////////////// //Checks for a head victory// @@ -316,28 +313,28 @@ var/turf/T = get_turf(rev_mind.current) if((rev_mind) && (rev_mind.current) && (rev_mind.current.stat != DEAD) && rev_mind.current.client && T && is_station_level(T.z)) if(ishuman(rev_mind.current)) - return 0 - return 1 + return FALSE + return TRUE ////////////////////////////////////////////////////////////////////// //Announces the end of the game with all relavent information stated// ////////////////////////////////////////////////////////////////////// /datum/game_mode/revolution/declare_completion() if(finished == 1) - feedback_set_details("round_end_result","win - heads killed") + feedback_set_details("round_end_result","revolution win - heads killed") to_chat(world, "The heads of staff were killed or exiled! The revolutionaries win!") else if(finished == 2) - feedback_set_details("round_end_result","loss - rev heads killed") + feedback_set_details("round_end_result","revolution loss - rev heads killed") to_chat(world, "The heads of staff managed to stop the revolution!") ..() - return 1 + return TRUE /datum/game_mode/proc/auto_declare_completion_revolution() var/list/targets = list() if(head_revolutionaries.len || GAMEMODE_IS_REVOLUTION) var/num_revs = 0 var/num_survivors = 0 - for(var/mob/living/carbon/survivor in living_mob_list) + for(var/mob/living/carbon/survivor in GLOB.living_mob_list) if(survivor.ckey) num_survivors++ if(survivor.mind) diff --git a/code/game/gamemodes/sandbox/sandbox.dm b/code/game/gamemodes/sandbox/sandbox.dm index 1be9a0ced0e..663759c961c 100644 --- a/code/game/gamemodes/sandbox/sandbox.dm +++ b/code/game/gamemodes/sandbox/sandbox.dm @@ -11,7 +11,7 @@ to_chat(world, "Build your own station with the sandbox-panel command!") /datum/game_mode/sandbox/pre_setup() - for(var/mob/M in player_list) + for(var/mob/M in GLOB.player_list) M.CanBuild() return 1 diff --git a/code/game/gamemodes/scoreboard.dm b/code/game/gamemodes/scoreboard.dm index d946c1450f1..9a3ca6073a1 100644 --- a/code/game/gamemodes/scoreboard.dm +++ b/code/game/gamemodes/scoreboard.dm @@ -20,17 +20,17 @@ // Score Calculation and Display // Who is alive/dead, who escaped - for(var/mob/living/silicon/ai/I in mob_list) + for(var/mob/living/silicon/ai/I in GLOB.mob_list) if(I.stat == DEAD && is_station_level(I.z)) score_deadaipenalty++ score_deadcrew++ - for(var/mob/living/carbon/human/I in mob_list) + for(var/mob/living/carbon/human/I in GLOB.mob_list) if(I.stat == DEAD && is_station_level(I.z)) score_deadcrew++ if(SSshuttle.emergency.mode >= SHUTTLE_ENDGAME) - for(var/mob/living/player in mob_list) + for(var/mob/living/player in GLOB.mob_list) if(player.client) if(player.stat != DEAD) var/turf/location = get_turf(player.loc) @@ -44,7 +44,7 @@ var/dmg_score = 0 if(SSshuttle.emergency.mode >= SHUTTLE_ENDGAME) - for(var/mob/living/carbon/human/E in mob_list) + for(var/mob/living/carbon/human/E in GLOB.mob_list) cash_score = 0 dmg_score = 0 var/turf/location = get_turf(E.loc) @@ -71,7 +71,7 @@ // Check station's power levels - for(var/obj/machinery/power/apc/A in apcs) + for(var/obj/machinery/power/apc/A in GLOB.apcs) if(!is_station_level(A.z)) continue for(var/obj/item/stock_parts/cell/C in A.contents) if(C.charge < 2300) @@ -142,7 +142,7 @@ // Show the score - might add "ranks" later to_chat(world, "The crew's final score is:") to_chat(world, "[score_crewscore]") - for(var/mob/E in player_list) + for(var/mob/E in GLOB.player_list) if(E.client && !E.get_preference(DISABLE_SCOREBOARD)) E.scorestats() diff --git a/code/game/gamemodes/shadowling/ascendant_shadowling.dm b/code/game/gamemodes/shadowling/ascendant_shadowling.dm index f640174d537..51f4d147bba 100644 --- a/code/game/gamemodes/shadowling/ascendant_shadowling.dm +++ b/code/game/gamemodes/shadowling/ascendant_shadowling.dm @@ -49,7 +49,7 @@ /mob/living/simple_animal/ascendant_shadowling/proc/announce(var/text, var/size = 4, var/new_sound = null) var/message = "\"[text]\"
" - for(var/mob/M in player_list) + for(var/mob/M in GLOB.player_list) if(!isnewplayer(M) && M.client) to_chat(M, message) if(new_sound) diff --git a/code/game/gamemodes/shadowling/shadowling.dm b/code/game/gamemodes/shadowling/shadowling.dm index 06e912c9da8..5b00868dc3d 100644 --- a/code/game/gamemodes/shadowling/shadowling.dm +++ b/code/game/gamemodes/shadowling/shadowling.dm @@ -108,12 +108,12 @@ Made by Xhuis /datum/game_mode/shadowling/post_setup() for(var/datum/mind/shadow in shadows) log_game("[key_name(shadow)] has been selected as a Shadowling.") - sleep(10) - to_chat(shadow.current, "
") - to_chat(shadow.current, "You are a shadowling!") - greet_shadow(shadow) - finalize_shadowling(shadow) - process_shadow_objectives(shadow) + spawn(rand(10,100)) + to_chat(shadow.current, "
") + to_chat(shadow.current, "You are a shadowling!") + greet_shadow(shadow) + finalize_shadowling(shadow) + process_shadow_objectives(shadow) //give_shadowling_abilities(shadow) ..() @@ -256,12 +256,16 @@ Made by Xhuis /datum/game_mode/shadowling/declare_completion() if(check_shadow_victory() && SSshuttle.emergency.mode >= SHUTTLE_ESCAPE) //Doesn't end instantly - this is hacky and I don't know of a better way ~X + feedback_set_details("round_end_result","shadowling win - shadowling ascension") to_chat(world, "The shadowlings have ascended and taken over the station!") else if(shadowling_dead && !check_shadow_victory()) //If the shadowlings have ascended, they can not lose the round + feedback_set_details("round_end_result","shadowling loss - shadowling killed") to_chat(world, "The shadowlings have been killed by the crew!") else if(!check_shadow_victory() && SSshuttle.emergency.mode >= SHUTTLE_ESCAPE) + feedback_set_details("round_end_result","shadowling loss - crew escaped") to_chat(world, "The crew escaped the station before the shadowlings could ascend!") else + feedback_set_details("round_end_result","shadowling loss - generic failure") to_chat(world, "The shadowlings have failed!") ..() return 1 diff --git a/code/game/gamemodes/shadowling/shadowling_abilities.dm b/code/game/gamemodes/shadowling/shadowling_abilities.dm index 89c5f159108..d2c3cc2c72e 100644 --- a/code/game/gamemodes/shadowling/shadowling_abilities.dm +++ b/code/game/gamemodes/shadowling/shadowling_abilities.dm @@ -402,7 +402,7 @@ to_chat(target, "You focus your telepathic energies abound, harnessing and drawing together the strength of your thralls.") - for(M in living_mob_list) + for(M in GLOB.living_mob_list) if(is_thrall(M)) thralls++ to_chat(M, "You feel hooks sink into your mind and pull.") @@ -439,7 +439,7 @@ else if(thralls >= victory_threshold) to_chat(target, "You are now powerful enough to ascend. Use the Ascendance ability when you are ready. This will kill all of your thralls.") to_chat(target, "You may find Ascendance in the Shadowling Evolution tab.") - for(M in living_mob_list) + for(M in GLOB.living_mob_list) if(is_shadow(M)) var/obj/effect/proc_holder/spell/targeted/collective_mind/CM if(CM in M.mind.spell_list) @@ -540,9 +540,7 @@ to_chat(S, "ERROR $!(@ ERROR )#^! SENSORY OVERLOAD \[$(!@#") S << 'sound/misc/interference.ogg' playsound(S, 'sound/machines/warning-buzzer.ogg', 50, 1) - var/datum/effect_system/spark_spread/sp = new /datum/effect_system/spark_spread - sp.set_up(5, 1, S) - sp.start() + do_sparks(5, 1, S) S.Weaken(6) for(var/obj/structure/window/W in T.contents) W.take_damage(rand(80, 100)) diff --git a/code/game/gamemodes/shadowling/special_shadowling_abilities.dm b/code/game/gamemodes/shadowling/special_shadowling_abilities.dm index d2582243d8c..a561fe6a273 100644 --- a/code/game/gamemodes/shadowling/special_shadowling_abilities.dm +++ b/code/game/gamemodes/shadowling/special_shadowling_abilities.dm @@ -157,7 +157,7 @@ var/list/possibleShadowlingNames = list("U'ruan", "Y`shej", "Nex", "Hel-uae", "N for(var/mob/living/M in orange(7, H)) M.Weaken(10) to_chat(M, "An immense pressure slams you onto the ground!") - for(var/obj/machinery/power/apc/A in apcs) + for(var/obj/machinery/power/apc/A in GLOB.apcs) A.overload_lighting() var/mob/living/simple_animal/ascendant_shadowling/A = new /mob/living/simple_animal/ascendant_shadowling(H.loc) A.announce("VYSHA NERADA YEKHEZET U'RUU!!", 5, 'sound/hallucinations/veryfar_noise.ogg') diff --git a/code/game/gamemodes/traitor/traitor.dm b/code/game/gamemodes/traitor/traitor.dm index 9234043976c..d79dbc3c224 100644 --- a/code/game/gamemodes/traitor/traitor.dm +++ b/code/game/gamemodes/traitor/traitor.dm @@ -123,7 +123,7 @@ var/list/active_ais = active_ais() for(var/i = objective_count, i < config.traitor_objectives_amount, i++) if(prob(50)) - if(active_ais.len && prob(100/player_list.len)) + if(active_ais.len && prob(100/GLOB.player_list.len)) var/datum/objective/destroy/destroy_objective = new destroy_objective.owner = traitor destroy_objective.find_target() diff --git a/code/game/gamemodes/vampire/traitor_vamp.dm b/code/game/gamemodes/vampire/traitor_vamp.dm index b06db47f02c..f1064bffd1b 100644 --- a/code/game/gamemodes/vampire/traitor_vamp.dm +++ b/code/game/gamemodes/vampire/traitor_vamp.dm @@ -20,7 +20,7 @@ var/list/datum/mind/possible_vampires = get_players_for_role(ROLE_VAMPIRE) - for(var/mob/new_player/player in player_list) + for(var/mob/new_player/player in GLOB.player_list) if((player.mind in possible_vampires) && (player.client.prefs.species in protected_species_vampire)) possible_vampires -= player.mind diff --git a/code/game/gamemodes/wizard/artefact.dm b/code/game/gamemodes/wizard/artefact.dm index 2ac4bc0b2f8..4c0aaac77da 100644 --- a/code/game/gamemodes/wizard/artefact.dm +++ b/code/game/gamemodes/wizard/artefact.dm @@ -84,8 +84,8 @@ M.equip_to_slot_or_del(new /obj/item/storage/backpack(M), slot_back) M.equip_to_slot_or_del(new /obj/item/storage/box(M), slot_in_backpack) M.equip_to_slot_or_del(new /obj/item/teleportation_scroll/apprentice(M), slot_r_store) - var/wizard_name_first = pick(wizard_first) - var/wizard_name_second = pick(wizard_second) + var/wizard_name_first = pick(GLOB.wizard_first) + var/wizard_name_second = pick(GLOB.wizard_second) var/randomname = "[wizard_name_first] [wizard_name_second]" var/newname = sanitize(copytext(input(M, "You are the wizard's apprentice. Would you like to change your name to something else?", "Name change", randomname) as null|text,1,MAX_NAME_LEN)) @@ -856,7 +856,7 @@ var/global/list/multiverse = list() possible = list() if(!link) return - for(var/mob/living/carbon/human/H in living_mob_list) + for(var/mob/living/carbon/human/H in GLOB.living_mob_list) if(md5(H.dna.uni_identity) in link.fingerprints) possible |= H diff --git a/code/game/gamemodes/wizard/godhand.dm b/code/game/gamemodes/wizard/godhand.dm index 260f809334c..c6992f99b98 100644 --- a/code/game/gamemodes/wizard/godhand.dm +++ b/code/game/gamemodes/wizard/godhand.dm @@ -48,9 +48,7 @@ if(!proximity || target == user || !ismob(target) || !iscarbon(user) || user.lying || user.handcuffed) //exploding after touching yourself would be bad return var/mob/M = target - var/datum/effect_system/spark_spread/sparks = new - sparks.set_up(4, 0, M.loc) //no idea what the 0 is - sparks.start() + do_sparks(4, 0, M.loc) //no idea what the 0 is M.gib() ..() @@ -84,9 +82,7 @@ /obj/item/melee/touch_attack/fake_disintegrate/afterattack(atom/target, mob/living/carbon/user, proximity) if(!proximity || target == user || !ismob(target) || !iscarbon(user) || user.lying || user.handcuffed) //not exploding after touching yourself would be bad return - var/datum/effect_system/spark_spread/sparks = new - sparks.set_up(4, 0, target.loc) //no idea what the 0 is - sparks.start() + do_sparks(4, 0, target.loc) playsound(target.loc, 'sound/goonstation/effects/gib.ogg', 50, 1) ..() diff --git a/code/game/gamemodes/wizard/raginmages.dm b/code/game/gamemodes/wizard/raginmages.dm index e252800f46a..bb62b7bebea 100644 --- a/code/game/gamemodes/wizard/raginmages.dm +++ b/code/game/gamemodes/wizard/raginmages.dm @@ -128,7 +128,7 @@ if(!candidates.len) message_admins("No applicable clients for the next ragin' mage, asking ghosts instead.") var/time_passed = world.time - for(var/mob/dead/observer/G in player_list) + for(var/mob/dead/observer/G in GLOB.player_list) if(!jobban_isbanned(G, "wizard") && !jobban_isbanned(G, "Syndicate")) spawn(0) switch(alert(G, "Do you wish to be considered for the position of Space Wizard Foundation 'diplomat'?","Please answer in 30 seconds!","Yes","No")) @@ -180,6 +180,6 @@ /datum/game_mode/wizard/raginmages/declare_completion() if(finished) - feedback_set_details("round_end_result","loss - wizard killed") + feedback_set_details("round_end_result","raging wizard loss - wizard killed") to_chat(world, " The crew has managed to hold off the wizard attack! The Space Wizards Federation has been taught a lesson they will not soon forget!") ..(1) diff --git a/code/game/gamemodes/wizard/rightandwrong.dm b/code/game/gamemodes/wizard/rightandwrong.dm index ef11a84881e..345ccfc877d 100644 --- a/code/game/gamemodes/wizard/rightandwrong.dm +++ b/code/game/gamemodes/wizard/rightandwrong.dm @@ -8,7 +8,7 @@ to_chat(usr, "You summoned [summon_type ? "magic" : "guns"]!") message_admins("[key_name_admin(usr)] summoned [summon_type ? "magic" : "guns"]!") - for(var/mob/living/carbon/human/H in player_list) + for(var/mob/living/carbon/human/H in GLOB.player_list) if(H.stat == 2 || !(H.client)) continue if(H.mind) diff --git a/code/game/gamemodes/wizard/soulstone.dm b/code/game/gamemodes/wizard/soulstone.dm index e4e3f683e04..f9224d1746a 100644 --- a/code/game/gamemodes/wizard/soulstone.dm +++ b/code/game/gamemodes/wizard/soulstone.dm @@ -371,7 +371,7 @@ /obj/item/soulstone/proc/getCultGhost(mob/living/carbon/human/T, mob/U) var/mob/dead/observer/chosen_ghost - for(var/mob/dead/observer/ghost in player_list) //We put them back in their body + for(var/mob/dead/observer/ghost in GLOB.player_list) //We put them back in their body if(ghost.mind && ghost.mind.current == T && ghost.client) chosen_ghost = ghost break diff --git a/code/game/gamemodes/wizard/spellbook.dm b/code/game/gamemodes/wizard/spellbook.dm index ff101cbb5c1..6ae56a24973 100644 --- a/code/game/gamemodes/wizard/spellbook.dm +++ b/code/game/gamemodes/wizard/spellbook.dm @@ -779,7 +779,7 @@ /obj/item/spellbook/oneuse/mindswap/recoil(mob/user) ..() - if(stored_swap in dead_mob_list) + if(stored_swap in GLOB.dead_mob_list) stored_swap = null if(!stored_swap) stored_swap = user diff --git a/code/game/gamemodes/wizard/wizard.dm b/code/game/gamemodes/wizard/wizard.dm index 18dda0fcbc4..d6657ef98c1 100644 --- a/code/game/gamemodes/wizard/wizard.dm +++ b/code/game/gamemodes/wizard/wizard.dm @@ -88,8 +88,8 @@ /datum/game_mode/proc/name_wizard(mob/living/carbon/human/wizard_mob) //Allows the wizard to choose a custom name or go with a random one. Spawn 0 so it does not lag the round starting. - var/wizard_name_first = pick(wizard_first) - var/wizard_name_second = pick(wizard_second) + var/wizard_name_first = pick(GLOB.wizard_first) + var/wizard_name_second = pick(GLOB.wizard_second) var/randomname = "[wizard_name_first] [wizard_name_second]" spawn(0) var/newname = sanitize(copytext(input(wizard_mob, "You are the Space Wizard. Would you like to change your name to something else?", "Name change", randomname) as null|text,1,MAX_NAME_LEN)) @@ -192,7 +192,7 @@ /datum/game_mode/wizard/declare_completion(var/ragin = 0) if(finished && !ragin) - feedback_set_details("round_end_result","loss - wizard killed") + feedback_set_details("round_end_result","wizard loss - wizard killed") to_chat(world, " The wizard[(wizards.len>1)?"s":""] has been killed by the crew! The Space Wizards Federation has been taught a lesson they will not soon forget!") ..() return 1 diff --git a/code/game/jobs/access.dm b/code/game/jobs/access.dm index 6423960f2f3..4bf351019ea 100644 --- a/code/game/jobs/access.dm +++ b/code/game/jobs/access.dm @@ -522,10 +522,10 @@ var/const/access_trade_sol = 160 rank = src:rank assignment = src:assignment - if( rank in joblist ) + if( rank in GLOB.joblist ) return rank - if( assignment in joblist ) + if( assignment in GLOB.joblist ) return assignment return "Unknown" @@ -587,7 +587,7 @@ proc/FindNameFromID(var/mob/living/carbon/human/H) return ID.registered_name proc/get_all_job_icons() //For all existing HUD icons - return joblist + list("Prisoner") + return GLOB.joblist + list("Prisoner") /obj/proc/GetJobName() //Used in secHUD icon generation var/obj/item/card/id/I diff --git a/code/game/jobs/job/job.dm b/code/game/jobs/job/job.dm index 418539b5bed..494da86d680 100644 --- a/code/game/jobs/job/job.dm +++ b/code/game/jobs/job/job.dm @@ -215,7 +215,7 @@ if(isturf(placed_in)) to_chat(H, "Placing [G.display_name] on [placed_in]!") else - to_chat(H, "Placing [G.display_name] in [placed_in.name]") + to_chat(H, "Placing [G.display_name] in [placed_in.name].") continue if(H.equip_to_appropriate_slot(G)) to_chat(H, "Placing [G.display_name] in your inventory!") diff --git a/code/game/jobs/job/medical.dm b/code/game/jobs/job/medical.dm index 8acfd27a564..d7bd9c1c4cb 100644 --- a/code/game/jobs/job/medical.dm +++ b/code/game/jobs/job/medical.dm @@ -117,7 +117,7 @@ /datum/outfit/job/doctor/pre_equip(mob/living/carbon/human/H, visualsOnly = FALSE) . = ..() - if(H.mind.role_alt_title) + if(H.mind && H.mind.role_alt_title) switch(H.mind.role_alt_title) if("Surgeon") uniform = /obj/item/clothing/under/rank/medical/blue @@ -269,7 +269,7 @@ /datum/outfit/job/psychiatrist/pre_equip(mob/living/carbon/human/H, visualsOnly = FALSE) . = ..() - if(H.mind.role_alt_title) + if(H.mind && H.mind.role_alt_title) switch(H.mind.role_alt_title) if("Psychiatrist") uniform = /obj/item/clothing/under/rank/psych diff --git a/code/game/jobs/job/security.dm b/code/game/jobs/job/security.dm index 6987d9744ba..c8726e08305 100644 --- a/code/game/jobs/job/security.dm +++ b/code/game/jobs/job/security.dm @@ -138,7 +138,7 @@ /datum/outfit/job/detective/pre_equip(mob/living/carbon/human/H, visualsOnly = FALSE) . = ..() - if(H.mind.role_alt_title) + if(H.mind && H.mind.role_alt_title) switch(H.mind.role_alt_title) if("Forensic Technician") suit = /obj/item/clothing/suit/storage/det_suit/forensics/blue diff --git a/code/game/jobs/job_controller.dm b/code/game/jobs/job_controller.dm index 1cdd33672b0..2e532ff6322 100644 --- a/code/game/jobs/job_controller.dm +++ b/code/game/jobs/job_controller.dm @@ -177,7 +177,7 @@ var/global/datum/controller/occupations/job_master break /datum/controller/occupations/proc/ResetOccupations() - for(var/mob/new_player/player in player_list) + for(var/mob/new_player/player in GLOB.player_list) if((player) && (player.mind)) player.mind.assigned_role = null player.mind.special_role = null @@ -291,7 +291,7 @@ var/global/datum/controller/occupations/job_master A.spawn_positions = 3 //Get the players who are ready - for(var/mob/new_player/player in player_list) + for(var/mob/new_player/player in GLOB.player_list) if(player.ready && player.mind && !player.mind.assigned_role) unassigned += player if(player.client.prefs.randomslot) @@ -461,7 +461,7 @@ var/global/datum/controller/occupations/job_master if(!joined_late) var/turf/T = null var/obj/S = null - for(var/obj/effect/landmark/start/sloc in landmarks_list) + for(var/obj/effect/landmark/start/sloc in GLOB.landmarks_list) if(sloc.name != rank) continue if(locate(/mob/living) in sloc.loc) @@ -562,7 +562,7 @@ var/global/datum/controller/occupations/job_master var/level5 = 0 //banned var/level6 = 0 //account too young var/level7 = 0 //has disability rendering them ineligible - for(var/mob/new_player/player in player_list) + for(var/mob/new_player/player in GLOB.player_list) if(!(player.ready && player.mind && !player.mind.assigned_role)) continue //This player is not ready if(jobban_isbanned(player, job.title)) diff --git a/code/game/jobs/job_exp.dm b/code/game/jobs/job_exp.dm index 552654245dd..7330c20eee6 100644 --- a/code/game/jobs/job_exp.dm +++ b/code/game/jobs/job_exp.dm @@ -50,7 +50,7 @@ var/global/list/role_playtime_requirements = list( var/pline var/datum/job/theirjob var/jtext - for(var/client/C in clients) + for(var/client/C in GLOB.clients) jtext = "No Job" if(C.mob.mind && C.mob.mind.assigned_role) theirjob = job_master.GetJob(C.mob.mind.assigned_role) @@ -212,7 +212,7 @@ var/global/list/role_playtime_requirements = list( if(!establish_db_connection()) return -1 spawn(0) - for(var/client/L in clients) + for(var/client/L in GLOB.clients) if(L.inactivity >= (10 MINUTES)) continue spawn(0) diff --git a/code/game/jobs/job_scaling.dm b/code/game/jobs/job_scaling.dm index 7d8804783f1..89bd8374351 100644 --- a/code/game/jobs/job_scaling.dm +++ b/code/game/jobs/job_scaling.dm @@ -1,6 +1,6 @@ /hook/roundstart/proc/jobscaling() sleep(10 SECONDS) // give everyone time to finish spawning, and the lag to die down - var/playercount = length(clients) + var/playercount = length(GLOB.clients) var/highpop_trigger = 80 if(playercount >= highpop_trigger) diff --git a/code/game/machinery/OpTable.dm b/code/game/machinery/OpTable.dm index 70afe02762a..2ee1e93683d 100644 --- a/code/game/machinery/OpTable.dm +++ b/code/game/machinery/OpTable.dm @@ -15,6 +15,8 @@ buckle_lying = 90 var/no_icon_updates = 0 //set this to 1 if you don't want the icons ever changing var/list/injected_reagents = list() + var/reagent_target_amount = 1 + var/inject_amount = 1 /obj/machinery/optable/New() ..() @@ -106,9 +108,9 @@ check_victim() if(LAZYLEN(injected_reagents)) for(var/mob/living/carbon/C in get_turf(src)) + var/datum/reagents/R = C.reagents for(var/chemical in injected_reagents) - if(C.reagents.get_reagent_amount(chemical) < 1) - C.reagents.add_reagent(chemical, 1) + R.check_and_add(chemical,reagent_target_amount,inject_amount) /obj/machinery/optable/proc/take_victim(mob/living/carbon/C, mob/living/carbon/user as mob) if(C == user) diff --git a/code/game/machinery/Sleeper.dm b/code/game/machinery/Sleeper.dm index c964fd1f688..c2cc979f1dc 100644 --- a/code/game/machinery/Sleeper.dm +++ b/code/game/machinery/Sleeper.dm @@ -217,7 +217,7 @@ var/chemicals[0] for(var/re in injection_chems) - var/datum/reagent/temp = chemical_reagents_list[re] + var/datum/reagent/temp = GLOB.chemical_reagents_list[re] if(temp) var/reagent_amount = 0 var/pretty_amount diff --git a/code/game/machinery/alarm.dm b/code/game/machinery/alarm.dm index e9201838763..a6487352cd0 100644 --- a/code/game/machinery/alarm.dm +++ b/code/game/machinery/alarm.dm @@ -189,8 +189,8 @@ /obj/machinery/alarm/New(var/loc, var/dir, var/building = 0) ..() - air_alarms += src - air_alarms = sortAtom(air_alarms) + GLOB.air_alarms += src + GLOB.air_alarms = sortAtom(GLOB.air_alarms) wires = new(src) @@ -211,7 +211,7 @@ first_run() /obj/machinery/alarm/Destroy() - air_alarms -= src + GLOB.air_alarms -= src if(radio_controller) radio_controller.remove_object(src, frequency) radio_connection = null diff --git a/code/game/machinery/atmo_control.dm b/code/game/machinery/atmo_control.dm index b6586d3c90a..7ede1d7586d 100644 --- a/code/game/machinery/atmo_control.dm +++ b/code/game/machinery/atmo_control.dm @@ -1,4 +1,4 @@ -obj/machinery/air_sensor +/obj/machinery/air_sensor icon = 'icons/obj/stationobjs.dmi' icon_state = "gsensor1" name = "gas sensor" @@ -26,118 +26,116 @@ obj/machinery/air_sensor var/datum/radio_frequency/radio_connection - update_icon() - icon_state = "gsensor[on]" +/obj/machinery/air_sensor/update_icon() + icon_state = "gsensor[on]" - multitool_menu(var/mob/user, var/obj/item/multitool/P) - return {" - Main - "} +/obj/machinery/air_sensor/multitool_menu(var/mob/user, var/obj/item/multitool/P) + return {" + Main + "} - multitool_topic(var/mob/user, var/list/href_list, var/obj/O) - . = ..() - if(.) - return . +/obj/machinery/air_sensor/multitool_topic(var/mob/user, var/list/href_list, var/obj/O) + . = ..() + if(.) + return . - if("toggle_out_flag" in href_list) - var/bitflag_value = text2num(href_list["toggle_out_flag"])//this is a string normally - if(!(bitflag_value in list(1, 2, 4, 8, 16, 32))) //Here to prevent breaking the sensors with HREF exploits - return 0 - if(output&bitflag_value)//the bitflag is on ATM - output &= ~bitflag_value - else//can't not be off - output |= bitflag_value - return MT_UPDATE - if("toggle_bolts" in href_list) - bolts = !bolts - if(bolts) - visible_message("You hear a quite click as the [src] bolts to the floor", "You hear a quite click") + if("toggle_out_flag" in href_list) + var/bitflag_value = text2num(href_list["toggle_out_flag"])//this is a string normally + if(!(bitflag_value in list(1, 2, 4, 8, 16, 32))) //Here to prevent breaking the sensors with HREF exploits + return 0 + if(output&bitflag_value)//the bitflag is on ATM + output &= ~bitflag_value + else//can't not be off + output |= bitflag_value + return MT_UPDATE + if("toggle_bolts" in href_list) + bolts = !bolts + if(bolts) + visible_message("You hear a quite click as the [src] bolts to the floor", "You hear a quite click") + else + visible_message("You hear a quite click as the [src]'s floor bolts raise", "You hear a quite click") + return MT_UPDATE + +/obj/machinery/air_sensor/attackby(var/obj/item/W as obj, var/mob/user as mob) + if(istype(W, /obj/item/multitool)) + update_multitool_menu(user) + return 1 + if(istype(W, /obj/item/wrench)) + if(bolts) + to_chat(usr, "The [src] is bolted to the floor! You can't detach it like this.") + return 1 + playsound(loc, W.usesound, 50, 1) + to_chat(user, "You begin to unfasten \the [src]...") + if(do_after(user, 40 * W.toolspeed, target = src)) + user.visible_message("[user] unfastens \the [src].", "You have unfastened \the [src].", "You hear ratchet.") + new /obj/item/pipe_gsensor(src.loc) + qdel(src) + return 1 + if(..()) + return 1 + +/obj/machinery/air_sensor/process_atmos() + if(on) + if(!radio_connection) + return + var/datum/signal/signal = new + signal.transmission_method = 1 //radio signal + signal.data["tag"] = id_tag + signal.data["timestamp"] = world.time + + var/datum/gas_mixture/air_sample = return_air() + + if(output&1) + signal.data["pressure"] = num2text(round(air_sample.return_pressure(),0.1),) + if(output&2) + signal.data["temperature"] = round(air_sample.temperature,0.1) + + if(output>4) + var/total_moles = air_sample.total_moles() + if(total_moles > 0) + if(output&4) + signal.data["oxygen"] = round(100*air_sample.oxygen/total_moles,0.1) + if(output&8) + signal.data["toxins"] = round(100*air_sample.toxins/total_moles,0.1) + if(output&16) + signal.data["nitrogen"] = round(100*air_sample.nitrogen/total_moles,0.1) + if(output&32) + signal.data["carbon_dioxide"] = round(100*air_sample.carbon_dioxide/total_moles,0.1) else - visible_message("You hear a quite click as the [src]'s floor bolts raise", "You hear a quite click") - return MT_UPDATE + signal.data["oxygen"] = 0 + signal.data["toxins"] = 0 + signal.data["nitrogen"] = 0 + signal.data["carbon_dioxide"] = 0 + signal.data["sigtype"]="status" + radio_connection.post_signal(src, signal, filter = RADIO_ATMOSIA) - attackby(var/obj/item/W as obj, var/mob/user as mob) - if(istype(W, /obj/item/multitool)) - update_multitool_menu(user) - return 1 - if(istype(W, /obj/item/wrench)) - if(bolts) - to_chat(usr, "The [src] is bolted to the floor! You can't detach it like this.") - return 1 - playsound(loc, W.usesound, 50, 1) - to_chat(user, "You begin to unfasten \the [src]...") - if(do_after(user, 40 * W.toolspeed, target = src)) - user.visible_message("[user] unfastens \the [src].", "You have unfastened \the [src].", "You hear ratchet.") - new /obj/item/pipe_gsensor(src.loc) - qdel(src) - return 1 - if(..()) - return 1 +/obj/machinery/air_sensor/proc/set_frequency(new_frequency) + radio_controller.remove_object(src, frequency) + frequency = new_frequency + radio_connection = radio_controller.add_object(src, frequency, RADIO_ATMOSIA) - process_atmos() - if(on) - if(!radio_connection) - return - var/datum/signal/signal = new - signal.transmission_method = 1 //radio signal - signal.data["tag"] = id_tag - signal.data["timestamp"] = world.time +/obj/machinery/air_sensor/Initialize() + ..() + SSair.atmos_machinery += src + set_frequency(frequency) - var/datum/gas_mixture/air_sample = return_air() - - if(output&1) - signal.data["pressure"] = num2text(round(air_sample.return_pressure(),0.1),) - if(output&2) - signal.data["temperature"] = round(air_sample.temperature,0.1) - - if(output>4) - var/total_moles = air_sample.total_moles() - if(total_moles > 0) - if(output&4) - signal.data["oxygen"] = round(100*air_sample.oxygen/total_moles,0.1) - if(output&8) - signal.data["toxins"] = round(100*air_sample.toxins/total_moles,0.1) - if(output&16) - signal.data["nitrogen"] = round(100*air_sample.nitrogen/total_moles,0.1) - if(output&32) - signal.data["carbon_dioxide"] = round(100*air_sample.carbon_dioxide/total_moles,0.1) - else - signal.data["oxygen"] = 0 - signal.data["toxins"] = 0 - signal.data["nitrogen"] = 0 - signal.data["carbon_dioxide"] = 0 - signal.data["sigtype"]="status" - radio_connection.post_signal(src, signal, filter = RADIO_ATMOSIA) - - - proc - set_frequency(new_frequency) - radio_controller.remove_object(src, frequency) - frequency = new_frequency - radio_connection = radio_controller.add_object(src, frequency, RADIO_ATMOSIA) - - Initialize() - ..() - SSair.atmos_machinery += src - set_frequency(frequency) - - Destroy() - SSair.atmos_machinery -= src - if(radio_controller) - radio_controller.remove_object(src, frequency) - radio_connection = null - return ..() +/obj/machinery/air_sensor/Destroy() + SSair.atmos_machinery -= src + if(radio_controller) + radio_controller.remove_object(src, frequency) + radio_connection = null + return ..() /obj/machinery/computer/general_air_control @@ -157,325 +155,322 @@ obj/machinery/air_sensor var/list/sensor_information = list() var/datum/radio_frequency/radio_connection - Destroy() - if(radio_controller) - radio_controller.remove_object(src, frequency) - radio_connection = null - return ..() +/obj/machinery/computer/general_air_control/Destroy() + if(radio_controller) + radio_controller.remove_object(src, frequency) + radio_connection = null + return ..() - attack_hand(mob/user) - if(..(user)) - return - var/html=return_text() - var/datum/browser/popup = new(user, "gac", name, 400, 400) - popup.set_content(html) - popup.open(0) - user.set_machine(src) - onclose(user, "gac") +/obj/machinery/computer/general_air_control/attack_hand(mob/user) + if(..(user)) + return + var/html=return_text() + var/datum/browser/popup = new(user, "gac", name, 400, 400) + popup.set_content(html) + popup.open(0) + user.set_machine(src) + onclose(user, "gac") - process() - ..() - if(!sensors) - //warning("[src.type] at [x],[y],[z] has null sensors. Please fix.")//commenting this line out because the admins will get a warning like this every time somebody builds another GAC - sensors = list() - src.updateUsrDialog() +/obj/machinery/computer/general_air_control/process() + ..() + if(!sensors) + //warning("[src.type] at [x],[y],[z] has null sensors. Please fix.")//commenting this line out because the admins will get a warning like this every time somebody builds another GAC + sensors = list() + src.updateUsrDialog() - attackby(I as obj, user as mob, params) - if(istype(I, /obj/item/multitool)) - update_multitool_menu(user) - if(..()) - return 1 +/obj/machinery/computer/general_air_control/attackby(I as obj, user as mob, params) + if(istype(I, /obj/item/multitool)) + update_multitool_menu(user) + if(..()) + return 1 - receive_signal(datum/signal/signal) - if(!signal || signal.encryption) return +/obj/machinery/computer/general_air_control/receive_signal(datum/signal/signal) + if(!signal || signal.encryption) return - var/id_tag = signal.data["tag"] - if(!id_tag || !sensors || !sensors.Find(id_tag)) return + var/id_tag = signal.data["tag"] + if(!id_tag || !sensors || !sensors.Find(id_tag)) return - sensor_information[id_tag] = signal.data + sensor_information[id_tag] = signal.data - proc/return_text() - var/sensor_data - if(show_sensors) - if(sensors.len) - for(var/id_tag in sensors) - var/long_name = sensors[id_tag] - var/list/data = sensor_information[id_tag] - var/sensor_part = "
[long_name]" +/obj/machinery/computer/general_air_control/proc/return_text() + var/sensor_data + if(show_sensors) + if(sensors.len) + for(var/id_tag in sensors) + var/long_name = sensors[id_tag] + var/list/data = sensor_information[id_tag] + var/sensor_part = "
[long_name]" - if(data) - sensor_part += "" - if(data["pressure"]) - sensor_part += "" - if(data["temperature"]) - sensor_part += "" - if(data["oxygen"]||data["toxins"]||data["nitrogen"]||data["carbon_dioxide"]) - sensor_part += "" - sensor_part += "
Pressure:[data["pressure"]] kPa
Temperature:[data["temperature"]] K
Gas Composition :
    " - if(data["oxygen"]) - sensor_part += "
  • [data["oxygen"]]% O2
  • " - if(data["nitrogen"]) - sensor_part += "
  • [data["nitrogen"]]% N
  • " - if(data["carbon_dioxide"]) - sensor_part += "
  • [data["carbon_dioxide"]]% CO2
  • " - if(data["toxins"]) - sensor_part += "
  • [data["toxins"]]% Plasma
  • " - sensor_part += "
" + if(data) + sensor_part += "" + if(data["pressure"]) + sensor_part += "" + if(data["temperature"]) + sensor_part += "" + if(data["oxygen"]||data["toxins"]||data["nitrogen"]||data["carbon_dioxide"]) + sensor_part += "" + sensor_part += "
Pressure:[data["pressure"]] kPa
Temperature:[data["temperature"]] K
Gas Composition :
    " + if(data["oxygen"]) + sensor_part += "
  • [data["oxygen"]]% O2
  • " + if(data["nitrogen"]) + sensor_part += "
  • [data["nitrogen"]]% N
  • " + if(data["carbon_dioxide"]) + sensor_part += "
  • [data["carbon_dioxide"]]% CO2
  • " + if(data["toxins"]) + sensor_part += "
  • [data["toxins"]]% Plasma
  • " + sensor_part += "
" - else - sensor_part += "[long_name] can not be found!
" - sensor_part += "
" - sensor_data += sensor_part + else + sensor_part += "[long_name] can not be found!
" + sensor_part += "
" + sensor_data += sensor_part - else - sensor_data = "No sensors connected." + else + sensor_data = "No sensors connected." - var/output = {" + var/output = {" - [show_sensors ? "

Sensor Data:

" + sensor_data : ""] - "} + [show_sensors ? "

Sensor Data:

" + sensor_data : ""] + "} - return output + return output - proc - set_frequency(new_frequency) - radio_controller.remove_object(src, frequency) - frequency = new_frequency - radio_connection = radio_controller.add_object(src, frequency, RADIO_ATMOSIA) +/obj/machinery/computer/general_air_control/proc/set_frequency(new_frequency) + radio_controller.remove_object(src, frequency) + frequency = new_frequency + radio_connection = radio_controller.add_object(src, frequency, RADIO_ATMOSIA) - Initialize() - ..() - set_frequency(frequency) +/obj/machinery/computer/general_air_control/Initialize() + ..() + set_frequency(frequency) - multitool_menu(var/mob/user, var/obj/item/multitool/P) - var/dat= {" - Main - - Sensors: - "} - return dat +/obj/machinery/computer/general_air_control/multitool_menu(mob/user, obj/item/multitool/P) + var/dat= {" + Main + + Sensors: + "} + return dat - multitool_topic(var/mob/user,var/list/href_list,var/obj/O) - . = ..() - if(.) return . - if("add_sensor" in href_list) +/obj/machinery/computer/general_air_control/multitool_topic(mob/user,list/href_list,obj/O) + . = ..() + if(.) return . + if("add_sensor" in href_list) - // Make a list of all available sensors on the same frequency - var/list/sensor_list = list() - for(var/obj/machinery/air_sensor/G in machines) - if(!isnull(G.id_tag) && G.frequency == frequency) - sensor_list|=G.id_tag - if(!sensor_list.len) - to_chat(user, "No sensors on this frequency.") - return MT_ERROR + // Make a list of all available sensors on the same frequency + var/list/sensor_list = list() + for(var/obj/machinery/air_sensor/G in GLOB.machines) + if(!isnull(G.id_tag) && G.frequency == frequency) + sensor_list|=G.id_tag + if(!sensor_list.len) + to_chat(user, "No sensors on this frequency.") + return MT_ERROR - // Have the user pick one of them and name its label - var/sensor = input(user, "Select a sensor:", "Sensor Data") as null|anything in sensor_list - if(!sensor) - return MT_ERROR - var/label = reject_bad_name( input(user, "Choose a sensor label:", "Sensor Label") as text|null, allow_numbers=1) - if(!label) - return MT_ERROR + // Have the user pick one of them and name its label + var/sensor = input(user, "Select a sensor:", "Sensor Data") as null|anything in sensor_list + if(!sensor) + return MT_ERROR + var/label = reject_bad_name( input(user, "Choose a sensor label:", "Sensor Label") as text|null, allow_numbers=1) + if(!label) + return MT_ERROR - // Add the sensor's information to general_air_controler - sensors[sensor] = label - return MT_UPDATE + // Add the sensor's information to general_air_controler + sensors[sensor] = label + return MT_UPDATE - if("edit_sensor" in href_list) - var/list/sensor_list = list() - for(var/obj/machinery/air_sensor/G in machines) - if(!isnull(G.id_tag) && G.frequency == frequency) - sensor_list|=G.id_tag - if(!sensor_list.len) - to_chat(user, "No sensors on this frequency.") - return MT_ERROR - var/label = sensors[href_list["edit_sensor"]] - var/sensor = input(user, "Select a sensor:", "Sensor Data", href_list["edit_sensor"]) as null|anything in sensor_list - if(!sensor) - return MT_ERROR - sensors.Remove(href_list["edit_sensor"]) - sensors[sensor] = label - return MT_UPDATE + if("edit_sensor" in href_list) + var/list/sensor_list = list() + for(var/obj/machinery/air_sensor/G in GLOB.machines) + if(!isnull(G.id_tag) && G.frequency == frequency) + sensor_list|=G.id_tag + if(!sensor_list.len) + to_chat(user, "No sensors on this frequency.") + return MT_ERROR + var/label = sensors[href_list["edit_sensor"]] + var/sensor = input(user, "Select a sensor:", "Sensor Data", href_list["edit_sensor"]) as null|anything in sensor_list + if(!sensor) + return MT_ERROR + sensors.Remove(href_list["edit_sensor"]) + sensors[sensor] = label + return MT_UPDATE - unlinkFrom(var/mob/user, var/obj/O) - ..() - if("id_tag" in O.vars && (istype(O,/obj/machinery/air_sensor) || istype(O, /obj/machinery/meter))) - sensors.Remove(O:id_tag) - return 1 - return 0 +/obj/machinery/computer/general_air_control/unlinkFrom(mob/user, obj/O) + ..() + if("id_tag" in O.vars && (istype(O,/obj/machinery/air_sensor) || istype(O, /obj/machinery/meter))) + sensors.Remove(O:id_tag) + return 1 + return 0 - linkMenu(var/obj/O) - if(isLinkedWith(O)) - return +/obj/machinery/computer/general_air_control/linkMenu(obj/O) + if(isLinkedWith(O)) + return - var/dat="" + var/dat="" - if(istype(O,/obj/machinery/air_sensor) || istype(O, /obj/machinery/meter)) - dat += " \[New Sensor\] " - return dat + if(istype(O,/obj/machinery/air_sensor) || istype(O, /obj/machinery/meter)) + dat += " \[New Sensor\] " + return dat - canLink(var/obj/O, var/list/context) - if(istype(O,/obj/machinery/air_sensor) || istype(O, /obj/machinery/meter)) - return O:id_tag +/obj/machinery/computer/general_air_control/canLink(obj/O, list/context) + if(istype(O,/obj/machinery/air_sensor) || istype(O, /obj/machinery/meter)) + return O:id_tag - isLinkedWith(var/obj/O) - if(istype(O,/obj/machinery/air_sensor) || istype(O, /obj/machinery/meter)) - return O:id_tag in sensors +/obj/machinery/computer/general_air_control/isLinkedWith(obj/O) + if(istype(O,/obj/machinery/air_sensor) || istype(O, /obj/machinery/meter)) + return O:id_tag in sensors - linkWith(var/mob/user, var/obj/O, var/link/context) - sensors[O:id_tag] = reject_bad_name(input(user, "Choose a sensor label:", "Sensor Label") as text|null, allow_numbers=1) +/obj/machinery/computer/general_air_control/linkWith(mob/user, obj/O, link/context) + sensors[O:id_tag] = reject_bad_name(input(user, "Choose a sensor label:", "Sensor Label") as text|null, allow_numbers=1) + return 1 + +/obj/machinery/computer/general_air_control/large_tank_control + circuit = /obj/item/circuitboard/large_tank_control + req_one_access_txt = "24;10" + settagwhitelist = list("input_tag", "output_tag") + + var/input_tag + var/output_tag + + var/list/input_info + var/list/output_info + + var/list/input_linkable=list( + /obj/machinery/atmospherics/unary/outlet_injector, + /obj/machinery/atmospherics/unary/vent_pump + ) + + var/list/output_linkable=list( + /obj/machinery/atmospherics/unary/vent_pump + ) + + var/pressure_setting = ONE_ATMOSPHERE * 45 + +/obj/machinery/computer/general_air_control/large_tank_control/attackby(I as obj, user as mob) + if(istype(I, /obj/item/multitool)) + update_multitool_menu(user) + if(..()) return 1 - large_tank_control - circuit = /obj/item/circuitboard/large_tank_control - req_one_access_txt = "24;10" - settagwhitelist = list("input_tag", "output_tag") - var/input_tag - var/output_tag - - var/list/input_info - var/list/output_info - - var/list/input_linkable=list( - /obj/machinery/atmospherics/unary/outlet_injector, - /obj/machinery/atmospherics/unary/vent_pump - ) - - var/list/output_linkable=list( - /obj/machinery/atmospherics/unary/vent_pump - ) - - var/pressure_setting = ONE_ATMOSPHERE * 45 - - attackby(I as obj, user as mob) - if(istype(I, /obj/item/multitool)) - update_multitool_menu(user) - if(..()) - return 1 +/obj/machinery/computer/general_air_control/large_tank_control/multitool_menu(mob/user, obj/item/multitool/P) + var/dat= {" + + Sensors: + "} + return dat - multitool_menu(var/mob/user, var/obj/item/multitool/P) - var/dat= {" - - Sensors: - "} - return dat +/obj/machinery/computer/general_air_control/large_tank_control/linkWith(mob/user, obj/O, list/context) + if(context["slot"]=="input" && is_type_in_list(O,input_linkable)) + input_info = null + if(istype(O,/obj/machinery/atmospherics/unary/vent_pump)) + send_signal(list("tag"=input_tag, + "direction"=1, // Release + "checks" =0 // No pressure checks. + )) + return 1 + if(context["slot"]=="output" && is_type_in_list(O,output_linkable)) + output_tag = O:id_tag + output_info = null + if(istype(O,/obj/machinery/atmospherics/unary/vent_pump)) + send_signal(list("tag"=output_tag, + "direction"=0, // Siphon + "checks" =2 // Internal pressure checks. + )) + return 1 +/obj/machinery/computer/general_air_control/large_tank_control/unlinkFrom(mob/user, obj/O) + if("id_tag" in O.vars) + if(O:id_tag == input_tag) + input_tag=null + input_info=null + return 1 + if(O:id_tag == output_tag) + output_tag=null + output_info=null + return 1 + return 0 - linkWith(var/mob/user, var/obj/O, var/list/context) - if(context["slot"]=="input" && is_type_in_list(O,input_linkable)) - input_tag = O:id_tag - input_info = null - if(istype(O,/obj/machinery/atmospherics/unary/vent_pump)) - send_signal(list("tag"=input_tag, - "direction"=1, // Release - "checks" =0 // No pressure checks. - )) - return 1 - if(context["slot"]=="output" && is_type_in_list(O,output_linkable)) - output_tag = O:id_tag - output_info = null - if(istype(O,/obj/machinery/atmospherics/unary/vent_pump)) - send_signal(list("tag"=output_tag, - "direction"=0, // Siphon - "checks" =2 // Internal pressure checks. - )) - return 1 +/obj/machinery/computer/general_air_control/large_tank_control/linkMenu(obj/O) + var/dat="" + if(canLink(O,list("slot"="input"))) + dat += " \[Link @ Input\] " + if(canLink(O,list("slot"="output"))) + dat += " \[Link @ Output\] " + return dat - unlinkFrom(var/mob/user, var/obj/O) - if("id_tag" in O.vars) - if(O:id_tag == input_tag) - input_tag=null - input_info=null - return 1 - if(O:id_tag == output_tag) - output_tag=null - output_info=null - return 1 - return 0 +/obj/machinery/computer/general_air_control/large_tank_control/canLink(obj/O, list/context) + return (context["slot"]=="input" && is_type_in_list(O,input_linkable)) || (context["slot"]=="output" && is_type_in_list(O,output_linkable)) - linkMenu(var/obj/O) - var/dat="" - if(canLink(O,list("slot"="input"))) - dat += " \[Link @ Input\] " - if(canLink(O,list("slot"="output"))) - dat += " \[Link @ Output\] " - return dat +/obj/machinery/computer/general_air_control/large_tank_control/isLinkedWith(obj/O) + if(O:id_tag == input_tag) + return 1 + if(O:id_tag == output_tag) + return 1 + return 0 - canLink(var/obj/O, var/list/context) - return (context["slot"]=="input" && is_type_in_list(O,input_linkable)) || (context["slot"]=="output" && is_type_in_list(O,output_linkable)) +/obj/machinery/computer/general_air_control/large_tank_control/process() + ..() + if(!input_info && input_tag) + request_device_refresh(input_tag) + if(!output_info && output_tag) + request_device_refresh(output_tag) - isLinkedWith(var/obj/O) - if(O:id_tag == input_tag) - return 1 - if(O:id_tag == output_tag) - return 1 - return 0 +/obj/machinery/computer/general_air_control/large_tank_control/return_text() + var/output = ..() + //if(signal.data) + // input_info = signal.data // Attempting to fix intake control -- TLE - - process() - ..() - if(!input_info && input_tag) - request_device_refresh(input_tag) - if(!output_info && output_tag) - request_device_refresh(output_tag) - - return_text() - var/output = ..() - //if(signal.data) - // input_info = signal.data // Attempting to fix intake control -- TLE - - output += "

Tank Control System


" - if(input_tag) - if(input_info) - var/power = (input_info["power"]) - var/volume_rate = input_info["volume_rate"] - output += {" + output += "

Tank Control System


" + if(input_tag) + if(input_info) + var/power = (input_info["power"]) + var/volume_rate = input_info["volume_rate"] + output += {"
Input (Refresh) @@ -490,14 +485,13 @@ legend {
"} - - else - output += "ERROR: Can not find input port Search
" - if(output_tag) - if(output_info) - var/power = (output_info["power"]) - var/output_pressure = output_info["internal"] - output += {" + else + output += "ERROR: Can not find input port Search
" + if(output_tag) + if(output_info) + var/power = (output_info["power"]) + var/output_pressure = output_info["internal"] + output += {"
Output (Refresh) @@ -512,234 +506,234 @@ legend {
"} - else - output += "ERROR: Can not find output port Search
" + else + output += "ERROR: Can not find output port Search
" - return output + return output - receive_signal(datum/signal/signal) - if(!signal || signal.encryption) return +/obj/machinery/computer/general_air_control/large_tank_control/receive_signal(datum/signal/signal) + if(!signal || signal.encryption) return - var/id_tag = signal.data["tag"] + var/id_tag = signal.data["tag"] - if(input_tag == id_tag) - input_info = signal.data - updateUsrDialog() - else if(output_tag == id_tag) - output_info = signal.data - updateUsrDialog() - else - ..(signal) + if(input_tag == id_tag) + input_info = signal.data + updateUsrDialog() + else if(output_tag == id_tag) + output_info = signal.data + updateUsrDialog() + else + ..(signal) - proc/request_device_refresh(var/device) - send_signal(list("tag"=device, "status")) +/obj/machinery/computer/general_air_control/large_tank_control/proc/request_device_refresh(device) + send_signal(list("tag"=device, "status")) - proc/send_signal(var/list/data) - if(!radio_connection) - return - var/datum/signal/signal = new - signal.transmission_method = 1 //radio signal - signal.source = src - signal.data=data - signal.data["sigtype"]="command" - radio_connection.post_signal(src, signal, filter = RADIO_ATMOSIA) +/obj/machinery/computer/general_air_control/large_tank_control/proc/send_signal(list/data) + if(!radio_connection) + return + var/datum/signal/signal = new + signal.transmission_method = 1 //radio signal + signal.source = src + signal.data=data + signal.data["sigtype"]="command" + radio_connection.post_signal(src, signal, filter = RADIO_ATMOSIA) - Topic(href, href_list) - if(..()) - return 1 +/obj/machinery/computer/general_air_control/large_tank_control/Topic(href, href_list) + if(..()) + return 1 - add_fingerprint(usr) + add_fingerprint(usr) - if(href_list["out_set_pressure"]) - var/response=input(usr,"Set new pressure, in kPa. \[0-[50*ONE_ATMOSPHERE]\]") as num - pressure_setting = text2num(response) - pressure_setting = between(0, pressure_setting, 50*ONE_ATMOSPHERE) + if(href_list["out_set_pressure"]) + var/response=input(usr,"Set new pressure, in kPa. \[0-[50*ONE_ATMOSPHERE]\]") as num + pressure_setting = text2num(response) + pressure_setting = between(0, pressure_setting, 50*ONE_ATMOSPHERE) - if(!radio_connection) - return 0 - var/datum/signal/signal = new - signal.transmission_method = 1 //radio signal - signal.source = src - if(href_list["in_refresh_status"]) - input_info = null - signal.data = list ("tag" = input_tag, "status" = 1) + if(!radio_connection) + return 0 + var/datum/signal/signal = new + signal.transmission_method = 1 //radio signal + signal.source = src + if(href_list["in_refresh_status"]) + input_info = null + signal.data = list ("tag" = input_tag, "status" = 1) - else if(href_list["in_toggle_injector"]) - input_info = null - signal.data = list ("tag" = input_tag, "power_toggle" = 1) + else if(href_list["in_toggle_injector"]) + input_info = null + signal.data = list ("tag" = input_tag, "power_toggle" = 1) - else if(href_list["out_refresh_status"]) - output_info = null - signal.data = list ("tag" = output_tag, "status" = 1) + else if(href_list["out_refresh_status"]) + output_info = null + signal.data = list ("tag" = output_tag, "status" = 1) - else if(href_list["out_toggle_power"]) - output_info = null - signal.data = list ("tag" = output_tag, "power_toggle" = 1) + else if(href_list["out_toggle_power"]) + output_info = null + signal.data = list ("tag" = output_tag, "power_toggle" = 1) - else if(href_list["out_set_pressure"]) - output_info = null - signal.data = list ("tag" = output_tag, "set_internal_pressure" = "[pressure_setting]") - /*else - testing("Bad Topic() to GAC \"[src.name]\": [href]") - return*/ // NOPE. // disabling because it spams when multitool menus are used + else if(href_list["out_set_pressure"]) + output_info = null + signal.data = list ("tag" = output_tag, "set_internal_pressure" = "[pressure_setting]") + /*else + testing("Bad Topic() to GAC \"[src.name]\": [href]") + return*/ // NOPE. // disabling because it spams when multitool menus are used - signal.data["sigtype"] = "command" - radio_connection.post_signal(src, signal, filter = RADIO_ATMOSIA) - src.updateUsrDialog() + signal.data["sigtype"] = "command" + radio_connection.post_signal(src, signal, filter = RADIO_ATMOSIA) + src.updateUsrDialog() - fuel_injection - icon = 'icons/obj/computer.dmi' - icon_screen = "atmos" - circuit = /obj/item/circuitboard/injector_control +/obj/machinery/computer/general_air_control/fuel_injection + icon = 'icons/obj/computer.dmi' + icon_screen = "atmos" + circuit = /obj/item/circuitboard/injector_control - var/device_tag - var/list/device_info + var/device_tag + var/list/device_info - var/automation = 0 + var/automation = 0 - var/cutoff_temperature = 2000 - var/on_temperature = 1200 + var/cutoff_temperature = 2000 + var/on_temperature = 1200 - attackby(I as obj, user as mob, params) - if(istype(I, /obj/item/multitool)) - update_multitool_menu(user) - if(..()) - return 1 +/obj/machinery/computer/general_air_control/fuel_injection/attackby(I as obj, user as mob, params) + if(istype(I, /obj/item/multitool)) + update_multitool_menu(user) + if(..()) + return 1 - process() - if(automation) - if(!radio_connection) - return 0 +/obj/machinery/computer/general_air_control/fuel_injection/process() + if(automation) + if(!radio_connection) + return 0 - var/injecting = 0 - for(var/id_tag in sensor_information) - var/list/data = sensor_information[id_tag] - if(data["temperature"]) - if(data["temperature"] >= cutoff_temperature) - injecting = 0 - break - if(data["temperature"] <= on_temperature) - injecting = 1 + var/injecting = 0 + for(var/id_tag in sensor_information) + var/list/data = sensor_information[id_tag] + if(data["temperature"]) + if(data["temperature"] >= cutoff_temperature) + injecting = 0 + break + if(data["temperature"] <= on_temperature) + injecting = 1 - var/datum/signal/signal = new - signal.transmission_method = 1 //radio signal - signal.source = src + var/datum/signal/signal = new + signal.transmission_method = 1 //radio signal + signal.source = src - signal.data = list( - "tag" = device_tag, - "power" = injecting, - "sigtype"="command" - ) + signal.data = list( + "tag" = device_tag, + "power" = injecting, + "sigtype"="command" + ) - radio_connection.post_signal(src, signal, filter = RADIO_ATMOSIA) + radio_connection.post_signal(src, signal, filter = RADIO_ATMOSIA) - ..() + ..() - return_text() - var/output = ..() - output += "
Fuel Injection System (Refresh)" - if(device_info) - var/power = device_info["power"] - var/volume_rate = device_info["volume_rate"] - output += {" - - - - - - - - - - - - "} +/obj/machinery/computer/general_air_control/fuel_injection/return_text() + var/output = ..() + output += "
Fuel Injection System (Refresh)" + if(device_info) + var/power = device_info["power"] + var/volume_rate = device_info["volume_rate"] + output += {"
Status:[power?"Injecting":"On Hold"]
Rate:[volume_rate] L/sec
Automated Fuel Injection:[automation?"Engaged":"Disengaged"]
+ + + + + + + + + + + + "} - if(automation) + if(automation) - // AUTOFIXED BY fix_string_idiocy.py - // C:\Users\Rob\Documents\Projects\vgstation13\code\game\machinery\atmo_control.dm:372: output += "Automated Fuel Injection: Engaged
" - output += {" - - - "} - // END AUTOFIX - else + // AUTOFIXED BY fix_string_idiocy.py + // C:\Users\Rob\Documents\Projects\vgstation13\code\game\machinery\atmo_control.dm:372: output += "Automated Fuel Injection: Engaged
" + output += {" + + + "} + // END AUTOFIX + else - // AUTOFIXED BY fix_string_idiocy.py - // C:\Users\Rob\Documents\Projects\vgstation13\code\game\machinery\atmo_control.dm:375: output += "Automated Fuel Injection: Disengaged
" - output += {" - - - - "} - // END AUTOFIX - output += "
Status:[power?"Injecting":"On Hold"]
Rate:[volume_rate] L/sec
Automated Fuel Injection:[automation?"Engaged":"Disengaged"]
Injector Controls Locked Out
Injector Controls Locked Out
Injector:Toggle Power Inject (1 Cycle)
" - else - output += {"

ERROR: Can not find device. Search

"} - output += "
" + // AUTOFIXED BY fix_string_idiocy.py + // C:\Users\Rob\Documents\Projects\vgstation13\code\game\machinery\atmo_control.dm:375: output += "Automated Fuel Injection: Disengaged
" + output += {" + + Injector: + Toggle Power Inject (1 Cycle) + "} + // END AUTOFIX + output += "" + else + output += {"

ERROR: Can not find device. Search

"} + output += "" - return output + return output - receive_signal(datum/signal/signal) - if(!signal || signal.encryption) return +/obj/machinery/computer/general_air_control/fuel_injection/receive_signal(datum/signal/signal) + if(!signal || signal.encryption) return - var/id_tag = signal.data["tag"] + var/id_tag = signal.data["tag"] - if(device_tag == id_tag) - device_info = signal.data - else - ..(signal) + if(device_tag == id_tag) + device_info = signal.data + else + ..(signal) - Topic(href, href_list) - if(..()) - return +/obj/machinery/computer/general_air_control/fuel_injection/Topic(href, href_list) + if(..()) + return - if(href_list["refresh_status"]) - device_info = null - if(!radio_connection) - return 0 + if(href_list["refresh_status"]) + device_info = null + if(!radio_connection) + return 0 - var/datum/signal/signal = new - signal.transmission_method = 1 //radio signal - signal.source = src - signal.data = list( - "tag" = device_tag, - "status", - "sigtype"="command" - ) - radio_connection.post_signal(src, signal, filter = RADIO_ATMOSIA) + var/datum/signal/signal = new + signal.transmission_method = 1 //radio signal + signal.source = src + signal.data = list( + "tag" = device_tag, + "status", + "sigtype"="command" + ) + radio_connection.post_signal(src, signal, filter = RADIO_ATMOSIA) - if(href_list["toggle_automation"]) - automation = !automation + if(href_list["toggle_automation"]) + automation = !automation - if(href_list["toggle_injector"]) - device_info = null - if(!radio_connection) - return 0 + if(href_list["toggle_injector"]) + device_info = null + if(!radio_connection) + return 0 - var/datum/signal/signal = new - signal.transmission_method = 1 //radio signal - signal.source = src - signal.data = list( - "tag" = device_tag, - "power_toggle", - "sigtype"="command" - ) + var/datum/signal/signal = new + signal.transmission_method = 1 //radio signal + signal.source = src + signal.data = list( + "tag" = device_tag, + "power_toggle", + "sigtype"="command" + ) - radio_connection.post_signal(src, signal, filter = RADIO_ATMOSIA) + radio_connection.post_signal(src, signal, filter = RADIO_ATMOSIA) - if(href_list["injection"]) - if(!radio_connection) - return 0 + if(href_list["injection"]) + if(!radio_connection) + return 0 - var/datum/signal/signal = new - signal.transmission_method = 1 //radio signal - signal.source = src - signal.data = list( - "tag" = device_tag, - "inject", - "sigtype"="command" - ) + var/datum/signal/signal = new + signal.transmission_method = 1 //radio signal + signal.source = src + signal.data = list( + "tag" = device_tag, + "inject", + "sigtype"="command" + ) - radio_connection.post_signal(src, signal, filter = RADIO_ATMOSIA) + radio_connection.post_signal(src, signal, filter = RADIO_ATMOSIA) diff --git a/code/game/machinery/atmoalter/area_atmos_computer.dm b/code/game/machinery/atmoalter/area_atmos_computer.dm index 990488ad624..3d53e130628 100644 --- a/code/game/machinery/atmoalter/area_atmos_computer.dm +++ b/code/game/machinery/atmoalter/area_atmos_computer.dm @@ -15,165 +15,165 @@ //Simple variable to prevent me from doing attack_hand in both this and the child computer var/zone = "This computer is working on a wireless range, the range is currently limited to 25 meters." - New() - ..() - //So the scrubbers have time to spawn - spawn(10) - scanscrubbers() +/obj/machinery/computer/area_atmos/New() + ..() + //So the scrubbers have time to spawn + spawn(10) + scanscrubbers() - attack_ai(var/mob/user as mob) - src.add_hiddenprint(user) - return src.attack_hand(user) +/obj/machinery/computer/area_atmos/attack_ai(mob/user as mob) + src.add_hiddenprint(user) + return src.attack_hand(user) - attack_hand(var/mob/user as mob) - if(..(user)) - return - src.add_fingerprint(usr) - var/dat = {" - - - - - -

Area Air Control

- [status]
- Scan - "} - for(var/obj/machinery/portable_atmospherics/scrubber/huge/scrubber in connectedscrubbers) - dat += {" - - - - "} - +/obj/machinery/computer/area_atmos/attack_hand(mob/user as mob) + if(..(user)) + return + src.add_fingerprint(usr) + var/dat = {" + + + + + +

Area Air Control

+ [status]
+ Scan +
[scrubber.name]Turn On Turn Off
"} + for(var/obj/machinery/portable_atmospherics/scrubber/huge/scrubber in connectedscrubbers) dat += {" -

- [zone] - - "} - var/datum/browser/popup = new(user, "area_atmos", name, 400, 400) - popup.set_content(dat) - popup.open(0) - status = "" + + [scrubber.name] + Turn On Turn Off + "} - Topic(href, href_list) - if(..()) + dat += {" +
+ [zone] + + "} + var/datum/browser/popup = new(user, "area_atmos", name, 400, 400) + popup.set_content(dat) + popup.open(0) + status = "" + +/obj/machinery/computer/area_atmos/Topic(href, href_list) + if(..()) + return + usr.set_machine(src) + src.add_fingerprint(usr) + + + if(href_list["scan"]) + scanscrubbers() + else if(href_list["toggle"]) + var/obj/machinery/portable_atmospherics/scrubber/huge/scrubber = locate(href_list["scrub"]) + + if(!validscrubber(scrubber)) + spawn(20) + status = "ERROR: Couldn't connect to scrubber! (timeout)" + connectedscrubbers -= scrubber + src.updateUsrDialog() return - usr.set_machine(src) - src.add_fingerprint(usr) + scrubber.on = text2num(href_list["toggle"]) + scrubber.update_icon() - if(href_list["scan"]) - scanscrubbers() - else if(href_list["toggle"]) - var/obj/machinery/portable_atmospherics/scrubber/huge/scrubber = locate(href_list["scrub"]) +/obj/machinery/computer/area_atmos/proc/validscrubber( var/obj/machinery/portable_atmospherics/scrubber/huge/scrubber as obj ) + if(!isobj(scrubber) || get_dist(scrubber.loc, src.loc) > src.range || scrubber.loc.z != src.loc.z) + return 0 - if(!validscrubber(scrubber)) - spawn(20) - status = "ERROR: Couldn't connect to scrubber! (timeout)" - connectedscrubbers -= scrubber - src.updateUsrDialog() - return + return 1 - scrubber.on = text2num(href_list["toggle"]) - scrubber.update_icon() +/obj/machinery/computer/area_atmos/proc/scanscrubbers() + connectedscrubbers = new() - proc/validscrubber( var/obj/machinery/portable_atmospherics/scrubber/huge/scrubber as obj ) - if(!isobj(scrubber) || get_dist(scrubber.loc, src.loc) > src.range || scrubber.loc.z != src.loc.z) - return 0 + var/found = 0 + for(var/obj/machinery/portable_atmospherics/scrubber/huge/scrubber in range(range, src.loc)) + if(istype(scrubber)) + found = 1 + connectedscrubbers += scrubber - return 1 + if(!found) + status = "ERROR: No scrubber found!" - proc/scanscrubbers() - connectedscrubbers = new() - - var/found = 0 - for(var/obj/machinery/portable_atmospherics/scrubber/huge/scrubber in range(range, src.loc)) - if(istype(scrubber)) - found = 1 - connectedscrubbers += scrubber - - if(!found) - status = "ERROR: No scrubber found!" - - src.updateUsrDialog() + src.updateUsrDialog() /obj/machinery/computer/area_atmos/area zone = "This computer is working in a wired network limited to this area." - validscrubber( var/obj/machinery/portable_atmospherics/scrubber/huge/scrubber as obj ) - if(!isobj(scrubber)) - return 0 +/obj/machinery/computer/area_atmos/area/validscrubber(obj/machinery/portable_atmospherics/scrubber/huge/scrubber as obj ) + if(!isobj(scrubber)) + return 0 - /* - wow this is stupid, someone help me - */ - var/turf/T_src = get_turf(src) - if(!T_src.loc) return 0 - var/area/A_src = T_src.loc + /* + wow this is stupid, someone help me + */ + var/turf/T_src = get_turf(src) + if(!T_src.loc) return 0 + var/area/A_src = T_src.loc - var/turf/T_scrub = get_turf(scrubber) - if(!T_scrub.loc) return 0 - var/area/A_scrub = T_scrub.loc + var/turf/T_scrub = get_turf(scrubber) + if(!T_scrub.loc) return 0 + var/area/A_scrub = T_scrub.loc - if(A_scrub != A_src) - return 0 + if(A_scrub != A_src) + return 0 - return 1 + return 1 - scanscrubbers() - connectedscrubbers = new() +/obj/machinery/computer/area_atmos/area/scanscrubbers() + connectedscrubbers = new() - var/found = 0 + var/found = 0 - var/turf/T = get_turf(src) - if(!T.loc) return - var/area/A = get_area(T) - for(var/obj/machinery/portable_atmospherics/scrubber/huge/scrubber in world ) - var/turf/T2 = get_turf(scrubber) - if(T2 && T2.loc) - var/area/A2 = T2.loc - if(istype(A2) && A2 == A ) - connectedscrubbers += scrubber - found = 1 + var/turf/T = get_turf(src) + if(!T.loc) return + var/area/A = get_area(T) + for(var/obj/machinery/portable_atmospherics/scrubber/huge/scrubber in world ) + var/turf/T2 = get_turf(scrubber) + if(T2 && T2.loc) + var/area/A2 = T2.loc + if(istype(A2) && A2 == A ) + connectedscrubbers += scrubber + found = 1 - if(!found) - status = "ERROR: No scrubber found!" + if(!found) + status = "ERROR: No scrubber found!" - src.updateUsrDialog() + src.updateUsrDialog() diff --git a/code/game/machinery/atmoalter/canister.dm b/code/game/machinery/atmoalter/canister.dm index 78b94f969fd..1be5fa5e43a 100644 --- a/code/game/machinery/atmoalter/canister.dm +++ b/code/game/machinery/atmoalter/canister.dm @@ -80,18 +80,18 @@ var/datum/canister_icons/canister_icon_container = new() var/busy = 0 var/update_flag = 0 - New() - ..() - canister_color = list( - "prim" = "yellow", - "sec" = "none", - "ter" = "none", - "quart" = "none") - oldcolor = new /list() - decals = list("cold" = 0, "hot" = 0, "plasma" = 0) - colorcontainer = list() - possibledecals = list() - update_icon() +/obj/machinery/portable_atmospherics/canister/New() + ..() + canister_color = list( + "prim" = "yellow", + "sec" = "none", + "ter" = "none", + "quart" = "none") + oldcolor = new /list() + decals = list("cold" = 0, "hot" = 0, "plasma" = 0) + colorcontainer = list() + possibledecals = list() + update_icon() /obj/machinery/portable_atmospherics/canister/proc/init_data_vars() //passed to the ui to render the color lists diff --git a/code/game/machinery/autolathe.dm b/code/game/machinery/autolathe.dm index a0e9ee978dd..426ca39edb6 100644 --- a/code/game/machinery/autolathe.dm +++ b/code/game/machinery/autolathe.dm @@ -216,15 +216,12 @@ return ..() /obj/machinery/autolathe/proc/AfterMaterialInsert(type_inserted, id_inserted, amount_inserted) - if(ispath(type_inserted, /obj/item/ore/bluespace_crystal)) - use_power(MINERAL_MATERIAL_AMOUNT / 10) - else - switch(id_inserted) - if(MAT_METAL) - flick("autolathe_o",src)//plays metal insertion animation - if(MAT_GLASS) - flick("autolathe_r",src)//plays glass insertion animation - use_power(min(1000, amount_inserted / 100)) + switch(id_inserted) + if(MAT_METAL) + flick("autolathe_o", src)//plays metal insertion animation + if(MAT_GLASS) + flick("autolathe_r", src)//plays glass insertion animation + use_power(min(1000, amount_inserted / 100)) SSnanoui.update_uis(src) /obj/machinery/autolathe/attack_ghost(mob/user) diff --git a/code/game/machinery/camera/camera.dm b/code/game/machinery/camera/camera.dm index 07f22d8373e..0e7dbaccadd 100644 --- a/code/game/machinery/camera/camera.dm +++ b/code/game/machinery/camera/camera.dm @@ -30,8 +30,10 @@ var/busy = FALSE var/emped = FALSE //Number of consecutive EMP's on this camera + var/in_use_lights = 0 // TO BE IMPLEMENTED var/toggle_sound = 'sound/items/Wirecutter.ogg' + /obj/machinery/camera/New() ..() wires = new(src) @@ -93,7 +95,7 @@ spawn(100) if(!QDELETED(src)) cancelCameraAlarm() - for(var/mob/M in player_list) + for(var/mob/M in GLOB.player_list) if(M.client && M.client.eye == src) M.unset_machine() M.reset_perspective(null) @@ -192,7 +194,7 @@ info = N.notehtml to_chat(U, "You hold \the [itemname] up to the camera ...") U.changeNext_move(CLICK_CD_MELEE) - for(var/mob/O in player_list) + for(var/mob/O in GLOB.player_list) if(istype(O, /mob/living/silicon/ai)) var/mob/living/silicon/ai/AI = O if(AI.control_disabled || (AI.stat == DEAD)) @@ -286,7 +288,7 @@ // now disconnect anyone using the camera //Apparently, this will disconnect anyone even if the camera was re-activated. //I guess that doesn't matter since they can't use it anyway? - for(var/mob/O in player_list) + for(var/mob/O in GLOB.player_list) if(O.client && O.client.eye == src) O.unset_machine() O.reset_perspective(null) diff --git a/code/game/machinery/camera/camera_assembly.dm b/code/game/machinery/camera/camera_assembly.dm index 03ebe757789..5f9aa6f12a1 100644 --- a/code/game/machinery/camera/camera_assembly.dm +++ b/code/game/machinery/camera/camera_assembly.dm @@ -101,7 +101,7 @@ C.auto_turn() C.network = uniquelist(tempnetwork) - tempnetwork = difflist(C.network,restricted_camera_networks) + tempnetwork = difflist(C.network,GLOB.restricted_camera_networks) if(!tempnetwork.len) // Camera isn't on any open network - remove its chunk from AI visibility. cameranet.removeCamera(C) diff --git a/code/game/machinery/camera/tracking.dm b/code/game/machinery/camera/tracking.dm index 76a9518c98b..277cee5beb3 100644 --- a/code/game/machinery/camera/tracking.dm +++ b/code/game/machinery/camera/tracking.dm @@ -120,7 +120,7 @@ if(usr.stat == 2) return list() - for(var/mob/living/M in mob_list) + for(var/mob/living/M in GLOB.mob_list) if(!M.can_track(usr)) continue diff --git a/code/game/machinery/computer/HolodeckControl.dm b/code/game/machinery/computer/HolodeckControl.dm index 5d5e6bd9511..604ac3f02f3 100644 --- a/code/game/machinery/computer/HolodeckControl.dm +++ b/code/game/machinery/computer/HolodeckControl.dm @@ -217,9 +217,7 @@ for(var/turf/T in linkedholodeck) if(prob(30)) - var/datum/effect_system/spark_spread/s = new /datum/effect_system/spark_spread - s.set_up(2, 1, T) - s.start() + do_sparks(2, 1, T) T.ex_act(3) T.hotspot_expose(1000,500,1) @@ -257,9 +255,7 @@ if(L.name=="Atmospheric Test Start") spawn(20) var/turf/T = get_turf(L) - var/datum/effect_system/spark_spread/s = new /datum/effect_system/spark_spread - s.set_up(2, 1, T) - s.start() + do_sparks(2, 1, T) if(T) T.temperature = 5000 T.hotspot_expose(50000,50000,1)*/ @@ -306,9 +302,7 @@ /* if(L.name=="Atmospheric Test Start") spawn(20) var/turf/T = get_turf(L) - var/datum/effect_system/spark_spread/s = new /datum/effect_system/spark_spread - s.set_up(2, 1, T) - s.start() + do_sparks(2, 1, T) if(T) T.temperature = 5000 T.hotspot_expose(50000,50000,1)*/ diff --git a/code/game/machinery/computer/arcade.dm b/code/game/machinery/computer/arcade.dm index 191f432e756..b0ad5a23b1d 100644 --- a/code/game/machinery/computer/arcade.dm +++ b/code/game/machinery/computer/arcade.dm @@ -912,9 +912,9 @@ newcrew = specific else if(prob(50)) - newcrew = pick(first_names_male) + newcrew = pick(GLOB.first_names_male) else - newcrew = pick(first_names_female) + newcrew = pick(GLOB.first_names_female) if(newcrew) settlers += newcrew alive++ diff --git a/code/game/machinery/computer/camera_advanced.dm b/code/game/machinery/computer/camera_advanced.dm index 99eaeae3fe6..b70addea909 100644 --- a/code/game/machinery/computer/camera_advanced.dm +++ b/code/game/machinery/computer/camera_advanced.dm @@ -138,7 +138,8 @@ return T = get_turf(T) loc = T - cameranet.visibility(src) + if(use_static) + cameranet.visibility(src, GetViewerClient()) if(visible_icon) if(eye_user.client) eye_user.client.images -= user_image diff --git a/code/game/machinery/computer/card.dm b/code/game/machinery/computer/card.dm index 51c55ffd84a..9bda37b2401 100644 --- a/code/game/machinery/computer/card.dm +++ b/code/game/machinery/computer/card.dm @@ -153,7 +153,7 @@ var/time_last_changed_position = 0 /obj/machinery/computer/card/proc/can_open_job(datum/job/job) if(job) if(!job_blacklisted_full(job) && !job_blacklisted_partial(job) && job_in_department(job, FALSE)) - if((job.total_positions <= player_list.len * (max_relative_positions / 100))) + if((job.total_positions <= GLOB.player_list.len * (max_relative_positions / 100))) var/delta = (world.time / 10) - time_last_changed_position if((change_position_cooldown < delta) || (opened_positions[job.title] < 0)) return 1 diff --git a/code/game/machinery/computer/communications.dm b/code/game/machinery/computer/communications.dm index 55a464daf43..9d7310c1c66 100644 --- a/code/game/machinery/computer/communications.dm +++ b/code/game/machinery/computer/communications.dm @@ -37,7 +37,7 @@ light_color = LIGHT_COLOR_LIGHTBLUE /obj/machinery/computer/communications/New() - shuttle_caller_list += src + GLOB.shuttle_caller_list += src ..() crew_announcement.newscast = 0 @@ -502,11 +502,11 @@ if(SSshuttle.cancelEvac(user)) log_game("[key_name(user)] has recalled the shuttle.") - message_admins("[key_name_admin(user)] has recalled the shuttle - [ADMIN_FLW(user)].", 1) + message_admins("[key_name_admin(user)] has recalled the shuttle - ([ADMIN_FLW(user,"FLW")]).", 1) else to_chat(user, "Central Command has refused the recall request!") log_game("[key_name(user)] has tried and failed to recall the shuttle.") - message_admins("[key_name_admin(user)] has tried and failed to recall the shuttle - [ADMIN_FLW(user)].", 1) + message_admins("[key_name_admin(user)] has tried and failed to recall the shuttle - ([ADMIN_FLW(user,"FLW")]).", 1) /proc/post_status(command, data1, data2, mob/user = null) @@ -533,21 +533,21 @@ /obj/machinery/computer/communications/Destroy() - shuttle_caller_list -= src + GLOB.shuttle_caller_list -= src SSshuttle.autoEvac() return ..() /obj/item/circuitboard/communications/New() - shuttle_caller_list += src + GLOB.shuttle_caller_list += src ..() /obj/item/circuitboard/communications/Destroy() - shuttle_caller_list -= src + GLOB.shuttle_caller_list -= src SSshuttle.autoEvac() return ..() /proc/print_command_report(text = "", title = "Central Command Update") - for(var/obj/machinery/computer/communications/C in shuttle_caller_list) + for(var/obj/machinery/computer/communications/C in GLOB.shuttle_caller_list) if(!(C.stat & (BROKEN|NOPOWER)) && is_station_contact(C.z)) var/obj/item/paper/P = new /obj/item/paper(C.loc) P.name = "paper- '[title]'" @@ -555,7 +555,7 @@ P.update_icon() C.messagetitle.Add("[title]") C.messagetext.Add(text) - for(var/datum/computer_file/program/comm/P in shuttle_caller_list) + for(var/datum/computer_file/program/comm/P in GLOB.shuttle_caller_list) var/turf/T = get_turf(P.computer) if(T && P.program_state != PROGRAM_STATE_KILLED && is_station_contact(T.z)) if(P.computer) @@ -566,7 +566,7 @@ P.messagetext.Add(text) /proc/print_centcom_report(text = "", title = "Incoming Message") - for(var/obj/machinery/computer/communications/C in shuttle_caller_list) + for(var/obj/machinery/computer/communications/C in GLOB.shuttle_caller_list) if(!(C.stat & (BROKEN|NOPOWER)) && is_admin_level(C.z)) var/obj/item/paper/P = new /obj/item/paper(C.loc) P.name = "paper- '[title]'" @@ -574,7 +574,7 @@ P.update_icon() C.messagetitle.Add("[title]") C.messagetext.Add(text) - for(var/datum/computer_file/program/comm/P in shuttle_caller_list) + for(var/datum/computer_file/program/comm/P in GLOB.shuttle_caller_list) var/turf/T = get_turf(P.computer) if(T && P.program_state != PROGRAM_STATE_KILLED && is_admin_level(T.z)) if(P.computer) diff --git a/code/game/machinery/computer/depot.dm b/code/game/machinery/computer/depot.dm index 78a8a8a69ab..9e720a4c83d 100644 --- a/code/game/machinery/computer/depot.dm +++ b/code/game/machinery/computer/depot.dm @@ -389,7 +389,7 @@ /obj/machinery/computer/syndicate_depot/teleporter/proc/choosetarget() var/list/eligible_turfs = list() - for(var/obj/item/radio/beacon/R in beacons) + for(var/obj/item/radio/beacon/R in GLOB.beacons) var/turf/T = get_turf(R) if(!is_station_level(T.z)) continue diff --git a/code/game/machinery/computer/medical.dm b/code/game/machinery/computer/medical.dm index 4785c681582..fb09b40f440 100644 --- a/code/game/machinery/computer/medical.dm +++ b/code/game/machinery/computer/medical.dm @@ -535,7 +535,7 @@ if(prob(10/severity)) switch(rand(1,6)) if(1) - R.fields["name"] = "[pick(pick(first_names_male), pick(first_names_female))] [pick(last_names)]" + R.fields["name"] = "[pick(pick(GLOB.first_names_male), pick(GLOB.first_names_female))] [pick(GLOB.last_names)]" if(2) R.fields["sex"] = pick("Male", "Female") if(3) diff --git a/code/game/machinery/computer/message.dm b/code/game/machinery/computer/message.dm index bcbe7a07e5d..87d35c2d7b4 100644 --- a/code/game/machinery/computer/message.dm +++ b/code/game/machinery/computer/message.dm @@ -14,8 +14,6 @@ circuit = /obj/item/circuitboard/message_monitor //Server linked to. var/obj/machinery/message_server/linkedServer = null - //Sparks effect - For emag - var/datum/effect_system/spark_spread/spark_system = new /datum/effect_system/spark_spread //Messages - Saves me time if I want to change something. var/noserver = "ALERT: No server detected." var/incorrectkey = "ALERT: Incorrect decryption key!" @@ -56,8 +54,7 @@ icon_screen = hack_icon // An error screen I made in the computers.dmi emag = 1 screen = 2 - spark_system.set_up(5, 0, src) - src.spark_system.start() + do_sparks(5, 0, src) var/obj/item/paper/monitorkey/MK = new/obj/item/paper/monitorkey MK.loc = src.loc playsound(loc, 'sound/goonstation/machines/printer_dotmatrix.ogg', 50, 1) diff --git a/code/game/machinery/computer/pod.dm b/code/game/machinery/computer/pod.dm index 4cbf105c100..fdb9f934516 100644 --- a/code/game/machinery/computer/pod.dm +++ b/code/game/machinery/computer/pod.dm @@ -39,7 +39,7 @@ loopings += ident_tag loopings[ident_tag] = 0 break - for(var/obj/machinery/door/poddoor/M in airlocks) + for(var/obj/machinery/door/poddoor/M in GLOB.airlocks) if(M.z != src.z) continue for(var/ident_tag in id_tags) if((M.id_tag == ident_tag) && !(ident_tag in synced) && !(ident_tag in door_only_tags)) @@ -65,7 +65,7 @@ loopings[ident_tag] = 0 break if(!(ident_tag in synced)) - for(var/obj/machinery/door/poddoor/M in airlocks) + for(var/obj/machinery/door/poddoor/M in GLOB.airlocks) if(M.z != src.z) continue if((M.id_tag == ident_tag) && !(ident_tag in synced) && !(ident_tag in door_only_tags)) door_only_tags += ident_tag @@ -86,7 +86,7 @@ visible_message("Cannot locate any mass driver of that ID. Cancelling firing sequence!") return - for(var/obj/machinery/door/poddoor/M in airlocks) + for(var/obj/machinery/door/poddoor/M in GLOB.airlocks) if(M.z != src.z) continue if(M.id_tag == ident_tag) spawn() @@ -100,7 +100,7 @@ M.drive() sleep(50) - for(var/obj/machinery/door/poddoor/M in airlocks) + for(var/obj/machinery/door/poddoor/M in GLOB.airlocks) if(M.z != src.z) continue if(M.id_tag == ident_tag) spawn() @@ -240,7 +240,7 @@ maxtimes[ident_tag] = min(max(round(maxtimes[ident_tag]), 0), 120) if(href_list["door"]) var/ident_tag = href_list["driver"] - for(var/obj/machinery/door/poddoor/M in airlocks) + for(var/obj/machinery/door/poddoor/M in GLOB.airlocks) if(M.z != src.z) continue if(M.id_tag == ident_tag) spawn() @@ -313,7 +313,7 @@ P.failchance = 0//So it has no fail chance when teleporting. spawn_marauder.Remove(P.target) - for(var/obj/machinery/door/poddoor/M in airlocks) + for(var/obj/machinery/door/poddoor/M in GLOB.airlocks) if(M.z != src.z) continue if(M.id_tag == ident_tag) spawn() @@ -326,7 +326,7 @@ M.drive() sleep(50) - for(var/obj/machinery/door/poddoor/M in airlocks) + for(var/obj/machinery/door/poddoor/M in GLOB.airlocks) if(M.z != src.z) continue if(M.id_tag == ident_tag) spawn() diff --git a/code/game/machinery/computer/power.dm b/code/game/machinery/computer/power.dm index 2fa4e6f1177..a5198da6e56 100644 --- a/code/game/machinery/computer/power.dm +++ b/code/game/machinery/computer/power.dm @@ -13,8 +13,8 @@ /obj/machinery/computer/monitor/New() ..() - power_monitors += src - power_monitors = sortAtom(power_monitors) + GLOB.power_monitors += src + GLOB.power_monitors = sortAtom(GLOB.power_monitors) power_monitor = new(src) /obj/machinery/computer/monitor/Initialize() @@ -23,7 +23,7 @@ powernet = find_powernet() /obj/machinery/computer/monitor/Destroy() - power_monitors -= src + GLOB.power_monitors -= src powermonitor_repository.update_cache() QDEL_NULL(power_monitor) return ..() diff --git a/code/game/machinery/computer/prisoner.dm b/code/game/machinery/computer/prisoner.dm index 613d6dcd90e..ea684d9596b 100644 --- a/code/game/machinery/computer/prisoner.dm +++ b/code/game/machinery/computer/prisoner.dm @@ -19,11 +19,11 @@ return src.attack_hand(user) /obj/machinery/computer/prisoner/New() - prisoncomputer_list += src + GLOB.prisoncomputer_list += src return ..() /obj/machinery/computer/prisoner/Destroy() - prisoncomputer_list -= src + GLOB.prisoncomputer_list -= src return ..() /obj/machinery/computer/prisoner/attack_hand(var/mob/user as mob) @@ -46,7 +46,7 @@ dat += text("Insert Prisoner ID
") var/turf/Tr = null dat += "
Chemical Implants
" - for(var/obj/item/implant/chem/C in tracked_implants) + for(var/obj/item/implant/chem/C in GLOB.tracked_implants) Tr = get_turf(C) if((Tr) && (Tr.z != src.z)) continue//Out of range if(!C.implanted) continue @@ -59,7 +59,7 @@ ********************************
"} // END AUTOFIX dat += "
Tracking Implants
" - for(var/obj/item/implant/tracking/T in tracked_implants) + for(var/obj/item/implant/tracking/T in GLOB.tracked_implants) Tr = get_turf(T) if((Tr) && (Tr.z != src.z)) continue//Out of range if(!T.implanted) continue diff --git a/code/game/machinery/computer/robot.dm b/code/game/machinery/computer/robot.dm index a3d9455a6ce..5d4e838db38 100644 --- a/code/game/machinery/computer/robot.dm +++ b/code/game/machinery/computer/robot.dm @@ -172,7 +172,7 @@ message_admins("[key_name_admin(usr)] detonated all cyborgs!") log_game("\[key_name(usr)] detonated all cyborgs!") - for(var/mob/living/silicon/robot/R in mob_list) + for(var/mob/living/silicon/robot/R in GLOB.mob_list) if(istype(R, /mob/living/silicon/robot/drone)) continue // Ignore antagonistic cyborgs @@ -190,7 +190,7 @@ /obj/machinery/computer/robotics/proc/get_cyborgs(var/mob/operator) var/list/robots = list() - for(var/mob/living/silicon/robot/R in mob_list) + for(var/mob/living/silicon/robot/R in GLOB.mob_list) // Ignore drones if(istype(R, /mob/living/silicon/robot/drone)) continue @@ -240,6 +240,6 @@ /obj/machinery/computer/robotics/proc/get_cyborg_by_name(var/name) if(!name) return - for(var/mob/living/silicon/robot/R in mob_list) + for(var/mob/living/silicon/robot/R in GLOB.mob_list) if(R.name == name) return R diff --git a/code/game/machinery/computer/security.dm b/code/game/machinery/computer/security.dm index 5c26f423e96..e31fc239580 100644 --- a/code/game/machinery/computer/security.dm +++ b/code/game/machinery/computer/security.dm @@ -149,9 +149,9 @@ update_all_mob_security_hud() setTemp("

All records deleted.

") if("del_alllogs2") - if(cell_logs.len) + if(GLOB.cell_logs.len) setTemp("

All cell logs deleted.

") - cell_logs.Cut() + GLOB.cell_logs.Cut() else to_chat(usr, "Error; No cell logs to delete.") if("del_r2") @@ -207,7 +207,7 @@ if("rank") if(active1) active1.fields["rank"] = temp_href[2] - if(temp_href[2] in joblist) + if(temp_href[2] in GLOB.joblist) active1.fields["real_rank"] = temp_href[2] if(href_list["scan"]) @@ -385,8 +385,8 @@ */ else if(href_list["printlogs"]) - if(cell_logs.len && !printing) - var/obj/item/paper/P = input(usr, "Select log to print", "Available Cell Logs") as null|anything in cell_logs + if(GLOB.cell_logs.len && !printing) + var/obj/item/paper/P = input(usr, "Select log to print", "Available Cell Logs") as null|anything in GLOB.cell_logs if(!P) return 0 printing = 1 @@ -500,7 +500,7 @@ //This was so silly before the change. Now it actually works without beating your head against the keyboard. /N if(istype(active1, /datum/data/record) && L.Find(rank)) var/list/buttons = list() - for(var/rank in joblist) + for(var/rank in GLOB.joblist) buttons[++buttons.len] = list("name" = rank, "icon" = null, "href" = "rank=[rank]", "status" = (active1.fields["rank"] == rank ? "selected" : null)) setTemp("

Rank

", buttons) else @@ -566,7 +566,7 @@ if(prob(10/severity)) switch(rand(1,6)) if(1) - R.fields["name"] = "[pick(pick(first_names_male), pick(first_names_female))] [pick(last_names)]" + R.fields["name"] = "[pick(pick(GLOB.first_names_male), pick(GLOB.first_names_female))] [pick(GLOB.last_names)]" if(2) R.fields["sex"] = pick("Male", "Female") if(3) diff --git a/code/game/machinery/computer/skills.dm b/code/game/machinery/computer/skills.dm index ff0fc039efe..ac10eb6e22d 100644 --- a/code/game/machinery/computer/skills.dm +++ b/code/game/machinery/computer/skills.dm @@ -121,7 +121,7 @@ if(PDA_Manifest && PDA_Manifest.len) PDA_Manifest.Cut() active1.fields["rank"] = temp_list[2] - if(temp_list[2] in joblist) + if(temp_list[2] in GLOB.joblist) active1.fields["real_rank"] = temp_list[2] if(href_list["scan"]) @@ -278,7 +278,7 @@ //This was so silly before the change. Now it actually works without beating your head against the keyboard. /N if(istype(active1, /datum/data/record) && L.Find(rank)) var/list/buttons = list() - for(var/rank in joblist) + for(var/rank in GLOB.joblist) buttons[++buttons.len] = list("name" = rank, "icon" = null, "val" = "rank=[rank]", "status" = (active1.fields["rank"] == rank ? "selected" : null)) setTemp("

Rank

", buttons) else @@ -303,7 +303,7 @@ if(prob(10/severity)) switch(rand(1,6)) if(1) - R.fields["name"] = "[pick(pick(first_names_male), pick(first_names_female))] [pick(last_names)]" + R.fields["name"] = "[pick(pick(GLOB.first_names_male), pick(GLOB.first_names_female))] [pick(GLOB.last_names)]" if(2) R.fields["sex"] = pick("Male", "Female") if(3) diff --git a/code/game/machinery/computer/store.dm b/code/game/machinery/computer/store.dm index bfa2820d9b3..f49d91c53b3 100644 --- a/code/game/machinery/computer/store.dm +++ b/code/game/machinery/computer/store.dm @@ -145,6 +145,9 @@ th.cost.toomuch {background:maroon;} var/itemID = text2num(href_list["buy"]) var/datum/storeitem/item = centcomm_store.items[itemID] var/sure = alert(usr,"Are you sure you wish to purchase [item.name] for $[item.cost]?","You sure?","Yes","No") in list("Yes","No") + if(!Adjacent(usr)) + to_chat(usr, "You are not close enough to do that.") + return if(sure=="No") updateUsrDialog() return diff --git a/code/game/machinery/computer/syndicate_specops_shuttle.dm b/code/game/machinery/computer/syndicate_specops_shuttle.dm index 0889c97dcca..9aaf1b39517 100644 --- a/code/game/machinery/computer/syndicate_specops_shuttle.dm +++ b/code/game/machinery/computer/syndicate_specops_shuttle.dm @@ -85,10 +85,10 @@ var/syndicate_elite_shuttle_timeleft = 0 sleep(10) var/spawn_marauder[] = new() - for(var/obj/effect/landmark/L in landmarks_list) + for(var/obj/effect/landmark/L in GLOB.landmarks_list) if(L.name == "Marauder Entry") spawn_marauder.Add(L) - for(var/obj/effect/landmark/L in landmarks_list) + for(var/obj/effect/landmark/L in GLOB.landmarks_list) if(L.name == "Marauder Exit") var/obj/effect/portal/P = new(L.loc) P.invisibility = 101//So it is not seen by anyone. @@ -133,12 +133,11 @@ var/syndicate_elite_shuttle_timeleft = 0 elite_squad.readyreset()//Reset firealarm after the team launched. //End Marauder launchpad. - for(var/obj/effect/landmark/L in landmarks_list) + for(var/obj/effect/landmark/L in GLOB.landmarks_list) if(L.name == "Syndicate Breach Area") explosion(L.loc,4,6,8,10,0) sleep(40) -// proc/explosion(turf/epicenter, devastation_range, heavy_impact_range, light_impact_range, flash_range, adminlog = 1) var/area/start_location = locate(/area/shuttle/syndicate_elite/mothership) diff --git a/code/game/machinery/computer/telecrystalconsoles.dm b/code/game/machinery/computer/telecrystalconsoles.dm index 4006e005b12..2a7e2f71bee 100644 --- a/code/game/machinery/computer/telecrystalconsoles.dm +++ b/code/game/machinery/computer/telecrystalconsoles.dm @@ -151,7 +151,7 @@ var/list/possible_uplinker_IDs = list("Alfa","Bravo","Charlie","Delta","Echo","F /obj/machinery/computer/telecrystals/boss/proc/getDangerous()//This scales the TC assigned with the round population. ..() var/danger - danger = player_list.len + danger = GLOB.player_list.len while(!IsMultiple(++danger,10))//Just round up to the nearest multiple of ten. scaleTC(danger) diff --git a/code/game/machinery/constructable_frame.dm b/code/game/machinery/constructable_frame.dm index 953a476d1a8..f9c1330e596 100644 --- a/code/game/machinery/constructable_frame.dm +++ b/code/game/machinery/constructable_frame.dm @@ -705,7 +705,7 @@ obj/item/circuitboard/rdserver origin_tech = "programming=3;engineering=4;bluespace=4;materials=4" frame_desc = "Requires 3 Bluespace Crystals and 1 Matter Bin." req_components = list( - /obj/item/ore/bluespace_crystal = 3, + /obj/item/stack/ore/bluespace_crystal = 3, /obj/item/stock_parts/matter_bin = 1) /obj/item/circuitboard/teleporter_station @@ -715,7 +715,7 @@ obj/item/circuitboard/rdserver origin_tech = "programming=4;engineering=4;bluespace=4;plasmatech=3" frame_desc = "Requires 2 Bluespace Crystals, 2 Capacitors and 1 Console Screen." req_components = list( - /obj/item/ore/bluespace_crystal = 2, + /obj/item/stack/ore/bluespace_crystal = 2, /obj/item/stock_parts/capacitor = 2, /obj/item/stock_parts/console_screen = 1) @@ -726,7 +726,7 @@ obj/item/circuitboard/rdserver origin_tech = "programming=3;engineering=4;bluespace=4;materials=4" frame_desc = "Requires 3 Bluespace Crystals and 1 Matter Bin." req_components = list( - /obj/item/ore/bluespace_crystal = 3, + /obj/item/stack/ore/bluespace_crystal = 3, /obj/item/stock_parts/matter_bin = 1) var/target @@ -737,7 +737,7 @@ obj/item/circuitboard/rdserver origin_tech = "programming=4;engineering=3;plasmatech=4;bluespace=4" frame_desc = "Requires 2 Bluespace Crystals, 1 Capacitor, 1 piece of cable and 1 Console Screen." req_components = list( - /obj/item/ore/bluespace_crystal = 2, + /obj/item/stack/ore/bluespace_crystal = 2, /obj/item/stock_parts/capacitor = 1, /obj/item/stack/cable_coil = 1, /obj/item/stock_parts/console_screen = 1) @@ -749,7 +749,7 @@ obj/item/circuitboard/rdserver origin_tech = "programming=3;engineering=3;plasmatech=3;bluespace=4" frame_desc = "Requires 1 Bluespace Crystal, 1 Capacitor, 1 piece of cable and 1 Manipulator." req_components = list( - /obj/item/ore/bluespace_crystal = 1, + /obj/item/stack/ore/bluespace_crystal = 1, /obj/item/stock_parts/capacitor = 1, /obj/item/stock_parts/manipulator = 1, /obj/item/stack/cable_coil = 1) diff --git a/code/game/machinery/cryo.dm b/code/game/machinery/cryo.dm index 90ce57e880f..4c75e5dca8a 100644 --- a/code/game/machinery/cryo.dm +++ b/code/game/machinery/cryo.dm @@ -1,5 +1,6 @@ /obj/machinery/atmospherics/unary/cryo_cell name = "cryo cell" + desc = "Lowers the body temperature so certain medications may take effect." icon = 'icons/obj/cryogenics.dmi' icon_state = "pod0" density = 1 @@ -280,7 +281,7 @@ return B.forceMove(src) beaker = B - add_attack_logs(user, null, "Added [B] containing [B.reagentlist()] to a cryo cell at [COORD(src)]") + add_attack_logs(user, null, "Added [B] containing [B.reagents.log_list()] to a cryo cell at [COORD(src)]") user.visible_message("[user] adds \a [B] to [src]!", "You add \a [B] to [src]!") diff --git a/code/game/machinery/cryopod.dm b/code/game/machinery/cryopod.dm index 332dc2854e1..b6a02aacfd0 100644 --- a/code/game/machinery/cryopod.dm +++ b/code/game/machinery/cryopod.dm @@ -149,9 +149,7 @@ playsound(src, 'sound/machines/buzz-sigh.ogg', 30, 1) return visible_message("The console sparks, and some items fall out!") - var/datum/effect_system/spark_spread/sparks = new - sparks.set_up(5, 1, src) - sparks.start() + do_sparks(5, 1, src) for(var/obj/item/I in objective_items) dispense_item(I) @@ -336,7 +334,7 @@ continue O.forceMove(src) - for(var/obj/machinery/computer/cloning/cloner in machines) + for(var/obj/machinery/computer/cloning/cloner in GLOB.machines) for(var/datum/dna2/record/R in cloner.records) if(occupant.mind == locate(R.mind)) cloner.records.Remove(R) @@ -434,7 +432,7 @@ control_computer.frozen_crew += "[occupant.real_name]" var/ailist[] = list() - for(var/mob/living/silicon/ai/A in living_mob_list) + for(var/mob/living/silicon/ai/A in GLOB.living_mob_list) ailist += A if(ailist.len) var/mob/living/silicon/ai/announcer = pick(ailist) @@ -607,7 +605,7 @@ time_entered = world.time if(findtext("[E.key]","@",1,2)) var/FT = replacetext(E.key, "@", "") - for(var/mob/dead/observer/Gh in respawnable_list) //this may not be foolproof but it seemed like a better option than 'in world' + for(var/mob/dead/observer/Gh in GLOB.respawnable_list) //this may not be foolproof but it seemed like a better option than 'in world' if(Gh.key == FT) if(Gh.client && Gh.client.holder) //just in case someone has a byond name with @ at the start, which I don't think is even possible but whatever to_chat(Gh, "Warning: Your body has entered cryostorage.") @@ -761,7 +759,7 @@ if(istype(person_to_cryo.loc, /obj/machinery/cryopod)) return 0 var/list/free_cryopods = list() - for(var/obj/machinery/cryopod/P in machines) + for(var/obj/machinery/cryopod/P in GLOB.machines) if(!P.occupant && istype(get_area(P), /area/crew_quarters/sleep)) free_cryopods += P var/obj/machinery/cryopod/target_cryopod = null diff --git a/code/game/machinery/deployable.dm b/code/game/machinery/deployable.dm index 8c47855731f..e0fb65787cd 100644 --- a/code/game/machinery/deployable.dm +++ b/code/game/machinery/deployable.dm @@ -169,116 +169,108 @@ for reference: var/locked = 0.0 // req_access = list(access_maint_tunnels) - New() - ..() +/obj/machinery/deployable/barrier/New() + ..() - src.icon_state = "barrier[src.locked]" + src.icon_state = "barrier[src.locked]" - attackby(obj/item/W as obj, mob/user as mob, params) - if(istype(W, /obj/item/card/id)) - if(src.allowed(user)) - if(src.emagged < 2.0) - src.locked = !src.locked - src.anchored = !src.anchored - src.icon_state = "barrier[src.locked]" - if((src.locked == 1.0) && (src.emagged < 2.0)) - to_chat(user, "Barrier lock toggled on.") - return - else if((src.locked == 0.0) && (src.emagged < 2.0)) - to_chat(user, "Barrier lock toggled off.") - return - else - var/datum/effect_system/spark_spread/s = new /datum/effect_system/spark_spread - s.set_up(2, 1, src) - s.start() - visible_message("BZZzZZzZZzZT") +/obj/machinery/deployable/barrier/attackby(obj/item/W as obj, mob/user as mob, params) + if(istype(W, /obj/item/card/id)) + if(src.allowed(user)) + if(src.emagged < 2.0) + src.locked = !src.locked + src.anchored = !src.anchored + src.icon_state = "barrier[src.locked]" + if((src.locked == 1.0) && (src.emagged < 2.0)) + to_chat(user, "Barrier lock toggled on.") return + else if((src.locked == 0.0) && (src.emagged < 2.0)) + to_chat(user, "Barrier lock toggled off.") + return + else + do_sparks(2, 1, src) + visible_message("BZZzZZzZZzZT") + return + return + else if(istype(W, /obj/item/wrench)) + if(src.health < src.maxhealth) + src.health = src.maxhealth + src.emagged = 0 + src.req_access = list(access_security) + visible_message("[user] repairs the [src]!") return - else if(istype(W, /obj/item/wrench)) - if(src.health < src.maxhealth) - src.health = src.maxhealth - src.emagged = 0 - src.req_access = list(access_security) - visible_message("[user] repairs the [src]!") - return - else if(src.emagged > 0) - src.emagged = 0 - src.req_access = list(access_security) - visible_message("[user] repairs the [src]!") - return + else if(src.emagged > 0) + src.emagged = 0 + src.req_access = list(access_security) + visible_message("[user] repairs the [src]!") return - else - switch(W.damtype) - if("fire") - src.health -= W.force * 0.75 - if("brute") - src.health -= W.force * 0.5 - else - if(src.health <= 0) - src.explode() - ..() - - emag_act(user as mob) - if(!emagged) - emagged = 1 - req_access = null - to_chat(user, "You break the ID authentication lock on the [src].") - var/datum/effect_system/spark_spread/s = new /datum/effect_system/spark_spread - s.set_up(2, 1, src) - s.start() - visible_message("BZZzZZzZZzZT") - else if(src.emagged == 1) - src.emagged = 2 - to_chat(user, "You short out the anchoring mechanism on the [src].") - var/datum/effect_system/spark_spread/s = new /datum/effect_system/spark_spread - s.set_up(2, 1, src) - s.start() - visible_message("BZZzZZzZZzZT") - - ex_act(severity) - switch(severity) - if(1.0) - src.explode() - return - if(2.0) - src.health -= 25 - if(src.health <= 0) - src.explode() - return - emp_act(severity) - if(stat & (BROKEN|NOPOWER)) - return - if(prob(50/severity)) - locked = !locked - anchored = !anchored - icon_state = "barrier[src.locked]" - - blob_act() - src.health -= 25 + return + else + switch(W.damtype) + if("fire") + src.health -= W.force * 0.75 + if("brute") + src.health -= W.force * 0.5 + else if(src.health <= 0) src.explode() + ..() + +/obj/machinery/deployable/barrier/emag_act(user as mob) + if(!emagged) + emagged = 1 + req_access = null + to_chat(user, "You break the ID authentication lock on the [src].") + do_sparks(2, 1, src) + visible_message("BZZzZZzZZzZT") + else if(src.emagged == 1) + src.emagged = 2 + to_chat(user, "You short out the anchoring mechanism on the [src].") + do_sparks(2, 1, src) + visible_message("BZZzZZzZZzZT") + +/obj/machinery/deployable/barrier/ex_act(severity) + switch(severity) + if(1.0) + src.explode() + return + if(2.0) + src.health -= 25 + if(src.health <= 0) + src.explode() + return + +/obj/machinery/deployable/barrier/emp_act(severity) + if(stat & (BROKEN|NOPOWER)) return + if(prob(50/severity)) + locked = !locked + anchored = !anchored + icon_state = "barrier[src.locked]" - CanPass(atom/movable/mover, turf/target, height=0)//So bullets will fly over and stuff. - if(height==0) - return 1 - if(istype(mover) && mover.checkpass(PASSTABLE)) - return 1 - else - return 0 +/obj/machinery/deployable/barrier/blob_act() + src.health -= 25 + if(src.health <= 0) + src.explode() + return - proc/explode() +/obj/machinery/deployable/barrier/CanPass(atom/movable/mover, turf/target, height=0)//So bullets will fly over and stuff. + if(height==0) + return 1 + if(istype(mover) && mover.checkpass(PASSTABLE)) + return 1 + else + return 0 - visible_message("[src] blows apart!") - var/turf/Tsec = get_turf(src) +/obj/machinery/deployable/barrier/proc/explode() + visible_message("[src] blows apart!") + var/turf/Tsec = get_turf(src) - /* var/obj/item/stack/rods/ =*/ - new /obj/item/stack/rods(Tsec) +/* var/obj/item/stack/rods/ =*/ + new /obj/item/stack/rods(Tsec) - var/datum/effect_system/spark_spread/s = new /datum/effect_system/spark_spread - s.set_up(3, 1, src) - s.start() + do_sparks(3, 1, src) - explosion(src.loc,-1,-1,0) - if(src) - qdel(src) \ No newline at end of file + explosion(src.loc,-1,-1,0) + if(src) + qdel(src) diff --git a/code/game/machinery/door_control.dm b/code/game/machinery/door_control.dm index 879773c3850..279a3e197dc 100644 --- a/code/game/machinery/door_control.dm +++ b/code/game/machinery/door_control.dm @@ -82,7 +82,7 @@ add_fingerprint(user) if(normaldoorcontrol) - for(var/obj/machinery/door/airlock/D in range(range)) + for(var/obj/machinery/door/airlock/D in range(range, src)) if(D.id_tag == id) if(specialfunctions & OPEN) if(D.density) @@ -113,7 +113,7 @@ D.safe = 1 else - for(var/obj/machinery/door/poddoor/M in airlocks) + for(var/obj/machinery/door/poddoor/M in range(range, src)) if(M.id_tag == id) if(M.density) spawn( 0 ) diff --git a/code/game/machinery/doors/airlock.dm b/code/game/machinery/doors/airlock.dm index a076fcec8fd..8d9b17ef7c2 100644 --- a/code/game/machinery/doors/airlock.dm +++ b/code/game/machinery/doors/airlock.dm @@ -132,7 +132,7 @@ About the new airlock wires panel: update_icon() /obj/machinery/door/airlock/proc/update_other_id() - for(var/obj/machinery/door/airlock/A in airlocks) + for(var/obj/machinery/door/airlock/A in GLOB.airlocks) if(A.closeOtherId == closeOtherId && A != src) closeOther = A break @@ -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) @@ -628,9 +627,7 @@ About the new airlock wires panel: if(isElectrified() && density && istype(mover, /obj/item)) var/obj/item/I = mover if(I.flags & CONDUCT) - var/datum/effect_system/spark_spread/s = new /datum/effect_system/spark_spread - s.set_up(5, 1, src) - s.start() + do_sparks(5, 1, src) return ..() /obj/machinery/door/airlock/attack_hand(mob/user) @@ -670,12 +667,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!") @@ -1025,7 +1022,7 @@ About the new airlock wires panel: else if(locked) to_chat(user, "The airlock's bolts prevent it from being forced!") else if(!welded && !operating) - if(!beingcrowbarred) //being fireaxe'd + if(istype(I, /obj/item/twohanded/fireaxe)) //let's make this more specific var/obj/item/twohanded/fireaxe/F = I if(F.wielded) spawn(0) @@ -1042,7 +1039,7 @@ About the new airlock wires panel: else close(1) - if(istype(I, /obj/item/crowbar/power)) + if(ispowertool(I)) //jaws of life and rescue claw if(isElectrified()) shock(user, 100)//it's like sticking a forck in a power socket return @@ -1325,7 +1322,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/doors/brigdoors.dm b/code/game/machinery/doors/brigdoors.dm index 43156d2b484..7f785b6f3eb 100644 --- a/code/game/machinery/doors/brigdoors.dm +++ b/code/game/machinery/doors/brigdoors.dm @@ -38,7 +38,7 @@ if(!logname || !logcharges) return 0 - for(var/obj/machinery/computer/prisoner/C in prisoncomputer_list) + for(var/obj/machinery/computer/prisoner/C in GLOB.prisoncomputer_list) var/obj/item/paper/P = new /obj/item/paper(C.loc) P.name = "[id] log - [logname] [station_time_timestamp()]" P.info = "
[id] - Brig record



" @@ -52,7 +52,7 @@ This log file was generated automatically upon activation of a cell timer."} playsound(C.loc, "sound/goonstation/machines/printer_dotmatrix.ogg", 50, 1) - cell_logs += P + GLOB.cell_logs += P var/datum/data/record/R = find_security_record("name", logname) Radio.autosay("Detainee [logname] has been incarcerated for [seconds_to_time(timetoset / 10)] for the charges of, '[logcharges]'. \ @@ -85,11 +85,11 @@ pixel_y = ((dir & 3)? (dir ==1 ? 32 : -32) : (0)) spawn(20) - for(var/obj/machinery/door/window/brigdoor/M in airlocks) + for(var/obj/machinery/door/window/brigdoor/M in GLOB.airlocks) if(M.id == id) targets += M - for(var/obj/machinery/flasher/F in machines) + for(var/obj/machinery/flasher/F in GLOB.machines) if(F.id == id) targets += F @@ -97,7 +97,7 @@ if(C.id == id) targets += C - for(var/obj/machinery/treadmill_monitor/T in machines) + for(var/obj/machinery/treadmill_monitor/T in GLOB.machines) if(T.id == id) targets += T diff --git a/code/game/machinery/doors/door.dm b/code/game/machinery/doors/door.dm index 563e4eb49f2..6f838319040 100644 --- a/code/game/machinery/doors/door.dm +++ b/code/game/machinery/doors/door.dm @@ -37,7 +37,7 @@ set_init_door_layer() update_dir() update_freelook_sight() - airlocks += src + GLOB.airlocks += src spark_system = new /datum/effect_system/spark_spread spark_system.set_up(2, 1, src) @@ -72,12 +72,11 @@ density = 0 air_update_turf(1) update_freelook_sight() - airlocks -= src + GLOB.airlocks -= src if(autoclose_timer) deltimer(autoclose_timer) autoclose_timer = 0 - if(spark_system) - QDEL_NULL(spark_system) + QDEL_NULL(spark_system) return ..() /obj/machinery/door/Bumped(atom/AM) diff --git a/code/game/machinery/floodlight.dm b/code/game/machinery/floodlight.dm index 013be887cce..e9836eb0ca6 100644 --- a/code/game/machinery/floodlight.dm +++ b/code/game/machinery/floodlight.dm @@ -15,7 +15,7 @@ /obj/machinery/floodlight/Initialize() . = ..() - src.cell = new(src) + cell = new(src) mapVarInit() /obj/machinery/floodlight/Destroy() @@ -26,13 +26,18 @@ icon_state = "flood[open ? "o" : ""][open && cell ? "b" : ""]0[on]" /obj/machinery/floodlight/process() + if(!cell && on) + on = FALSE + visible_message("[src] shuts down due to lack of power!") + update_icon() + set_light(0) if(on) cell.charge -= use if(cell.charge <= 0) on = FALSE updateicon() set_light(0) - src.visible_message("[src] shuts down due to lack of power!") + visible_message("[src] shuts down due to lack of power!") /obj/machinery/floodlight/attack_ai() return @@ -48,8 +53,12 @@ cell.add_fingerprint(user) cell.update_icon() - src.cell = null + cell = null to_chat(user, "You remove the power cell.") + if(on) + on = FALSE + visible_message("[src] shuts down due to lack of power!") + set_light(0) updateicon() return @@ -80,14 +89,14 @@ /obj/machinery/floodlight/attackby(obj/item/W as obj, mob/user as mob, params) if(istype(W, /obj/item/wrench)) if(!anchored && !isinspace()) - playsound(src.loc, W.usesound, 50, 1) + playsound(loc, W.usesound, 50, 1) user.visible_message( \ "[user] tightens \the [src]'s casters.", \ " You have tightened \the [src]'s casters.", \ "You hear ratchet.") anchored = TRUE else if(anchored) - playsound(src.loc, W.usesound, 50, 1) + playsound(loc, W.usesound, 50, 1) user.visible_message( \ "[user] loosens \the [src]'s casters.", \ " You have loosened \the [src]'s casters.", \ diff --git a/code/game/machinery/hologram.dm b/code/game/machinery/hologram.dm index 95d39aa06e6..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) diff --git a/code/game/machinery/holosign.dm b/code/game/machinery/holosign.dm index 713e29abf8a..13ed8bebc23 100644 --- a/code/game/machinery/holosign.dm +++ b/code/game/machinery/holosign.dm @@ -10,22 +10,22 @@ var/id = null var/on_icon = "sign_on" - proc/toggle() - if(stat & (BROKEN|NOPOWER)) - return - lit = !lit - update_icon() - +/obj/machinery/holosign/proc/toggle() + if(stat & (BROKEN|NOPOWER)) + return + lit = !lit update_icon() - if(!lit) - icon_state = "sign_off" - else - icon_state = on_icon - power_change() - if(stat & NOPOWER) - lit = 0 - update_icon() +/obj/machinery/holosign/update_icon() + if(!lit) + icon_state = "sign_off" + else + icon_state = on_icon + +/obj/machinery/holosign/power_change() + if(stat & NOPOWER) + lit = 0 + update_icon() /obj/machinery/holosign/surgery name = "surgery holosign" diff --git a/code/game/machinery/igniter.dm b/code/game/machinery/igniter.dm index 87ec7974711..3c36edb1685 100755 --- a/code/game/machinery/igniter.dm +++ b/code/game/machinery/igniter.dm @@ -101,9 +101,7 @@ flick("[base_state]-spark", src) - var/datum/effect_system/spark_spread/s = new /datum/effect_system/spark_spread - s.set_up(2, 1, src) - s.start() + do_sparks(2, 1, src) src.last_spark = world.time use_power(1000) var/turf/location = src.loc diff --git a/code/game/machinery/machinery.dm b/code/game/machinery/machinery.dm index c5fd19a1cfc..d0abd774e6f 100644 --- a/code/game/machinery/machinery.dm +++ b/code/game/machinery/machinery.dm @@ -134,7 +134,7 @@ Class Procs: else START_DEFERRED_PROCESSING(SSmachines, src) else - fast_processing += src + GLOB.fast_processing += src isprocessing = TRUE // all of these isprocessing = TRUE can be removed when the PS is dead // gotta go fast @@ -143,7 +143,7 @@ Class Procs: return speed_process = 1 STOP_PROCESSING(SSmachines, src) - fast_processing += src + GLOB.fast_processing += src isprocessing = TRUE // gotta go slow @@ -152,20 +152,20 @@ Class Procs: return speed_process = 0 START_PROCESSING(SSmachines, src) - fast_processing -= src + GLOB.fast_processing -= src /obj/machinery/New() //new if(!armor) armor = list(melee = 25, bullet = 10, laser = 10, energy = 0, bomb = 0, bio = 0, rad = 0) - machines += src + GLOB.machines += src ..() /obj/machinery/Destroy() if(myArea) myArea = null - fast_processing -= src + GLOB.fast_processing -= src STOP_PROCESSING(SSmachines, src) - machines -= src + GLOB.machines -= src return ..() /obj/machinery/proc/locate_machinery() @@ -391,6 +391,9 @@ Class Procs: return ..() +/obj/machinery/proc/is_operational() + return !(stat & (NOPOWER|BROKEN|MAINT)) + /obj/machinery/CheckParts(list/parts_list) ..() RefreshParts() @@ -587,9 +590,7 @@ Class Procs: return 0 if((TK in user.mutations) && !Adjacent(user)) return 0 - var/datum/effect_system/spark_spread/s = new /datum/effect_system/spark_spread - s.set_up(5, 1, src) - s.start() + do_sparks(5, 1, src) if(electrocute_mob(user, get_area(src), src, 0.7)) if(user.stunned) return 1 diff --git a/code/game/machinery/magnet.dm b/code/game/machinery/magnet.dm index 09774a6d600..7741d1ce056 100644 --- a/code/game/machinery/magnet.dm +++ b/code/game/machinery/magnet.dm @@ -29,169 +29,149 @@ var/center_y = 0 var/max_dist = 20 // absolute value of center_x,y cannot exceed this integer - New() - ..() - var/turf/T = loc - hide(T.intact) - center = T +/obj/machinery/magnetic_module/New() + ..() + var/turf/T = loc + hide(T.intact) + center = T - spawn(10) // must wait for map loading to finish - if(radio_controller) - radio_controller.add_object(src, freq, RADIO_MAGNETS) + spawn(10) // must wait for map loading to finish + if(radio_controller) + radio_controller.add_object(src, freq, RADIO_MAGNETS) - spawn() - magnetic_process() + spawn() + magnetic_process() // update the invisibility and icon - hide(var/intact) - invisibility = intact ? 101 : 0 - updateicon() +/obj/machinery/magnetic_module/hide(intact) + invisibility = intact ? 101 : 0 + updateicon() // update the icon_state - proc/updateicon() - var/state="floor_magnet" - var/onstate="" - if(!on) - onstate="0" +/obj/machinery/magnetic_module/proc/updateicon() + var/state="floor_magnet" + var/onstate="" + if(!on) + onstate="0" - if(invisibility) - icon_state = "[state][onstate]-f" // if invisible, set icon to faded version - // in case of being revealed by T-scanner - else - icon_state = "[state][onstate]" + if(invisibility) + icon_state = "[state][onstate]-f" // if invisible, set icon to faded version + // in case of being revealed by T-scanner + else + icon_state = "[state][onstate]" - receive_signal(datum/signal/signal) - - var/command = signal.data["command"] - var/modifier = signal.data["modifier"] - var/signal_code = signal.data["code"] - if(command && (signal_code == code)) - - Cmd(command, modifier) +/obj/machinery/magnetic_module/receive_signal(datum/signal/signal) + var/command = signal.data["command"] + var/modifier = signal.data["modifier"] + var/signal_code = signal.data["code"] + if(command && (signal_code == code)) + Cmd(command, modifier) - proc/Cmd(var/command, var/modifier) +/obj/machinery/magnetic_module/proc/Cmd(var/command, var/modifier) + if(command) + switch(command) + if("set-electriclevel") + if(modifier) electricity_level = modifier + if("set-magneticfield") + if(modifier) magnetic_field = modifier - if(command) - switch(command) - if("set-electriclevel") - if(modifier) electricity_level = modifier - if("set-magneticfield") - if(modifier) magnetic_field = modifier + if("add-elec") + electricity_level++ + if(electricity_level > 12) + electricity_level = 12 + if("sub-elec") + electricity_level-- + if(electricity_level <= 0) + electricity_level = 1 + if("add-mag") + magnetic_field++ + if(magnetic_field > 4) + magnetic_field = 4 + if("sub-mag") + magnetic_field-- + if(magnetic_field <= 0) + magnetic_field = 1 - if("add-elec") - electricity_level++ - if(electricity_level > 12) - electricity_level = 12 - if("sub-elec") - electricity_level-- - if(electricity_level <= 0) - electricity_level = 1 - if("add-mag") - magnetic_field++ - if(magnetic_field > 4) - magnetic_field = 4 - if("sub-mag") - magnetic_field-- - if(magnetic_field <= 0) - magnetic_field = 1 + if("set-x") + if(modifier) center_x = modifier + if("set-y") + if(modifier) center_y = modifier - if("set-x") - if(modifier) center_x = modifier - if("set-y") - if(modifier) center_y = modifier + if("N") // NORTH + center_y++ + if("S") // SOUTH + center_y-- + if("E") // EAST + center_x++ + if("W") // WEST + center_x-- + if("C") // CENTER + center_x = 0 + center_y = 0 + if("R") // RANDOM + center_x = rand(-max_dist, max_dist) + center_y = rand(-max_dist, max_dist) - if("N") // NORTH - center_y++ - if("S") // SOUTH - center_y-- - if("E") // EAST - center_x++ - if("W") // WEST - center_x-- - if("C") // CENTER - center_x = 0 - center_y = 0 - if("R") // RANDOM - center_x = rand(-max_dist, max_dist) - center_y = rand(-max_dist, max_dist) + if("set-code") + if(modifier) code = modifier + if("toggle-power") + on = !on - if("set-code") - if(modifier) code = modifier - if("toggle-power") - on = !on + if(on) + spawn() + magnetic_process() - if(on) - spawn() - magnetic_process() +/obj/machinery/magnetic_module/process() + if(stat & NOPOWER) + on = 0 + + // Sanity checks: + if(electricity_level <= 0) + electricity_level = 1 + if(magnetic_field <= 0) + magnetic_field = 1 + // Limitations: + if(abs(center_x) > max_dist) + center_x = max_dist + if(abs(center_y) > max_dist) + center_y = max_dist + if(magnetic_field > 4) + magnetic_field = 4 + if(electricity_level > 12) + electricity_level = 12 - process() - if(stat & NOPOWER) - on = 0 - - // Sanity checks: - if(electricity_level <= 0) - electricity_level = 1 - if(magnetic_field <= 0) - magnetic_field = 1 - - - // Limitations: - if(abs(center_x) > max_dist) - center_x = max_dist - if(abs(center_y) > max_dist) - center_y = max_dist - if(magnetic_field > 4) - magnetic_field = 4 - if(electricity_level > 12) - electricity_level = 12 - - // Update power usage: - if(on) - use_power = ACTIVE_POWER_USE - active_power_usage = electricity_level*15 - else - use_power = NO_POWER_USE - - - // Overload conditions: - /* // Eeeehhh kinda stupid - if(on) - if(electricity_level > 11) - if(prob(electricity_level)) - explosion(loc, 0, 1, 2, 3) // ooo dat shit EXPLODES son - spawn(2) - qdel(src) - */ - + // Update power usage: + if(on) + use_power = 2 + active_power_usage = electricity_level*15 + else + use_power = 0 updateicon() - proc/magnetic_process() // proc that actually does the pulling - if(pulling) return - while(on) +/obj/machinery/magnetic_module/proc/magnetic_process() // proc that actually does the pulling + if(pulling) return + while(on) - pulling = 1 - center = locate(x+center_x, y+center_y, z) - if(center) - for(var/obj/M in orange(magnetic_field, center)) - if(!M.anchored && (M.flags & CONDUCT)) - step_towards(M, center) - - for(var/mob/living/silicon/S in orange(magnetic_field, center)) - if(istype(S, /mob/living/silicon/ai)) continue - step_towards(S, center) - - use_power(electricity_level * 5) - sleep(13 - electricity_level) - - pulling = 0 + pulling = 1 + center = locate(x+center_x, y+center_y, z) + if(center) + for(var/obj/M in orange(magnetic_field, center)) + if(!M.anchored && (M.flags & CONDUCT)) + step_towards(M, center) + for(var/mob/living/silicon/S in orange(magnetic_field, center)) + if(istype(S, /mob/living/silicon/ai)) continue + step_towards(S, center) + use_power(electricity_level * 5) + sleep(13 - electricity_level) + pulling = 0 /obj/machinery/magnetic_controller name = "Magnetic Control Console" @@ -218,189 +198,189 @@ var/datum/radio_frequency/radio_connection - New() - ..() +/obj/machinery/magnetic_controller/New() + ..() - if(autolink) - for(var/obj/machinery/magnetic_module/M in world) - if(M.freq == frequency && M.code == code) - magnets.Add(M) + if(autolink) + for(var/obj/machinery/magnetic_module/M in world) + if(M.freq == frequency && M.code == code) + magnets.Add(M) - spawn(45) // must wait for map loading to finish - if(radio_controller) - radio_connection = radio_controller.add_object(src, frequency, RADIO_MAGNETS) - - - if(path) // check for default path - filter_path() // renders rpath - - - Destroy() + spawn(45) // must wait for map loading to finish if(radio_controller) - radio_controller.remove_object(src, frequency) - radio_connection = null - return ..() - - process() - if(magnets.len == 0 && autolink) - for(var/obj/machinery/magnetic_module/M in world) - if(M.freq == frequency && M.code == code) - magnets.Add(M) + radio_connection = radio_controller.add_object(src, frequency, RADIO_MAGNETS) - attack_ai(mob/user as mob) - return src.attack_hand(user) + if(path) // check for default path + filter_path() // renders rpath + + +/obj/machinery/magnetic_controller/Destroy() + if(radio_controller) + radio_controller.remove_object(src, frequency) + radio_connection = null + return ..() + +/obj/machinery/magnetic_controller/process() + if(magnets.len == 0 && autolink) + for(var/obj/machinery/magnetic_module/M in world) + if(M.freq == frequency && M.code == code) + magnets.Add(M) + + +/obj/machinery/magnetic_controller/attack_ai(mob/user as mob) + return src.attack_hand(user) + +/obj/machinery/magnetic_controller/attack_hand(mob/user as mob) + if(stat & (BROKEN|NOPOWER)) + return + user.set_machine(src) + var/dat = "Magnetic Control Console

" + if(!autolink) + dat += {" + Frequency: [frequency]
+ Code: [code]
+ Probe Generators
+ "} + + if(magnets.len >= 1) + + dat += "Magnets confirmed:
" + var/i = 0 + for(var/obj/machinery/magnetic_module/M in magnets) + i++ + dat += "     < \[[i]\] ([M.on ? "On":"Off"]) | Electricity level: - [M.electricity_level] +; Magnetic field: - [M.magnetic_field] +
" + + dat += "
Speed: - [speed] +
" + dat += "Path: {[path]}
" + dat += "Moving: [moving ? "Enabled":"Disabled"]" + + + user << browse(dat, "window=magnet;size=400x500") + onclose(user, "magnet") + +/obj/machinery/magnetic_controller/Topic(href, href_list) + if(stat & (BROKEN|NOPOWER)) + return + usr.set_machine(src) + src.add_fingerprint(usr) + + if(href_list["radio-op"]) + + // Prepare signal beforehand, because this is a radio operation + var/datum/signal/signal = new + signal.transmission_method = 1 // radio transmission + signal.source = src + signal.frequency = frequency + signal.data["code"] = code + + // Apply any necessary commands + switch(href_list["radio-op"]) + if("togglepower") + signal.data["command"] = "toggle-power" + + if("minuselec") + signal.data["command"] = "sub-elec" + if("pluselec") + signal.data["command"] = "add-elec" + + if("minusmag") + signal.data["command"] = "sub-mag" + if("plusmag") + signal.data["command"] = "add-mag" + + + // Broadcast the signal + + radio_connection.post_signal(src, signal, filter = RADIO_MAGNETS) + + spawn(1) + updateUsrDialog() // pretty sure this increases responsiveness + + if(href_list["operation"]) + switch(href_list["operation"]) + if("plusspeed") + speed++ + if(speed > 10) + speed = 10 + if("minusspeed") + speed -- + if(speed <= 0) + speed = 1 + if("setpath") + var/newpath = sanitize(copytext(input(usr, "Please define a new path!",,path) as text|null,1,MAX_MESSAGE_LEN)) + if(newpath && newpath != "") + moving = 0 // stop moving + path = newpath + pathpos = 1 // reset position + filter_path() // renders rpath + + if("togglemoving") + moving = !moving + if(moving) + spawn() MagnetMove() + + + updateUsrDialog() + +/obj/machinery/magnetic_controller/proc/MagnetMove() + if(looping) return + + while(moving && rpath.len >= 1) - attack_hand(mob/user as mob) if(stat & (BROKEN|NOPOWER)) - return - user.set_machine(src) - var/dat = "Magnetic Control Console

" - if(!autolink) - dat += {" - Frequency: [frequency]
- Code: [code]
- Probe Generators
- "} + break - if(magnets.len >= 1) + looping = 1 - dat += "Magnets confirmed:
" - var/i = 0 - for(var/obj/machinery/magnetic_module/M in magnets) - i++ - dat += "     < \[[i]\] ([M.on ? "On":"Off"]) | Electricity level: - [M.electricity_level] +; Magnetic field: - [M.magnetic_field] +
" + // Prepare the radio signal + var/datum/signal/signal = new + signal.transmission_method = 1 // radio transmission + signal.source = src + signal.frequency = frequency + signal.data["code"] = code - dat += "
Speed: - [speed] +
" - dat += "Path: {[path]}
" - dat += "Moving: [moving ? "Enabled":"Disabled"]" + if(pathpos > rpath.len) // if the position is greater than the length, we just loop through the list! + pathpos = 1 + + var/nextmove = uppertext(rpath[pathpos]) // makes it un-case-sensitive + + if(!(nextmove in list("N","S","E","W","C","R"))) + // N, S, E, W are directional + // C is center + // R is random (in magnetic field's bounds) + qdel(signal) + break // break the loop if the character located is invalid + + signal.data["command"] = nextmove - user << browse(dat, "window=magnet;size=400x500") - onclose(user, "magnet") - - Topic(href, href_list) - if(stat & (BROKEN|NOPOWER)) - return - usr.set_machine(src) - src.add_fingerprint(usr) - - if(href_list["radio-op"]) - - // Prepare signal beforehand, because this is a radio operation - var/datum/signal/signal = new - signal.transmission_method = 1 // radio transmission - signal.source = src - signal.frequency = frequency - signal.data["code"] = code - - // Apply any necessary commands - switch(href_list["radio-op"]) - if("togglepower") - signal.data["command"] = "toggle-power" - - if("minuselec") - signal.data["command"] = "sub-elec" - if("pluselec") - signal.data["command"] = "add-elec" - - if("minusmag") - signal.data["command"] = "sub-mag" - if("plusmag") - signal.data["command"] = "add-mag" - - - // Broadcast the signal + pathpos++ // increase iterator + // Broadcast the signal + spawn() radio_connection.post_signal(src, signal, filter = RADIO_MAGNETS) - spawn(1) - updateUsrDialog() // pretty sure this increases responsiveness + if(speed == 10) + sleep(1) + else + sleep(12-speed) - if(href_list["operation"]) - switch(href_list["operation"]) - if("plusspeed") - speed++ - if(speed > 10) - speed = 10 - if("minusspeed") - speed -- - if(speed <= 0) - speed = 1 - if("setpath") - var/newpath = sanitize(copytext(input(usr, "Please define a new path!",,path) as text|null,1,MAX_MESSAGE_LEN)) - if(newpath && newpath != "") - moving = 0 // stop moving - path = newpath - pathpos = 1 // reset position - filter_path() // renders rpath - - if("togglemoving") - moving = !moving - if(moving) - spawn() MagnetMove() + looping = 0 - updateUsrDialog() +/obj/machinery/magnetic_controller/proc/filter_path() + // Generates the rpath variable using the path string, think of this as "string2list" + // Doesn't use params2list() because of the akward way it stacks entities + rpath = list() // clear rpath + var/maximum_character = min( 50, length(path) ) // chooses the maximum length of the iterator. 50 max length - proc/MagnetMove() - if(looping) return + for(var/i=1, i<=maximum_character, i++) // iterates through all characters in path - while(moving && rpath.len >= 1) + var/nextchar = copytext(path, i, i+1) // find next character - if(stat & (BROKEN|NOPOWER)) - break + if(!(nextchar in list(";", "&", "*", " "))) // if char is a separator, ignore + rpath += copytext(path, i, i+1) // else, add to list - looping = 1 - - // Prepare the radio signal - var/datum/signal/signal = new - signal.transmission_method = 1 // radio transmission - signal.source = src - signal.frequency = frequency - signal.data["code"] = code - - if(pathpos > rpath.len) // if the position is greater than the length, we just loop through the list! - pathpos = 1 - - var/nextmove = uppertext(rpath[pathpos]) // makes it un-case-sensitive - - if(!(nextmove in list("N","S","E","W","C","R"))) - // N, S, E, W are directional - // C is center - // R is random (in magnetic field's bounds) - qdel(signal) - break // break the loop if the character located is invalid - - signal.data["command"] = nextmove - - - pathpos++ // increase iterator - - // Broadcast the signal - spawn() - radio_connection.post_signal(src, signal, filter = RADIO_MAGNETS) - - if(speed == 10) - sleep(1) - else - sleep(12-speed) - - looping = 0 - - - proc/filter_path() - // Generates the rpath variable using the path string, think of this as "string2list" - // Doesn't use params2list() because of the akward way it stacks entities - rpath = list() // clear rpath - var/maximum_character = min( 50, length(path) ) // chooses the maximum length of the iterator. 50 max length - - for(var/i=1, i<=maximum_character, i++) // iterates through all characters in path - - var/nextchar = copytext(path, i, i+1) // find next character - - if(!(nextchar in list(";", "&", "*", " "))) // if char is a separator, ignore - rpath += copytext(path, i, i+1) // else, add to list - - // there doesn't HAVE to be separators but it makes paths syntatically visible + // there doesn't HAVE to be separators but it makes paths syntatically visible diff --git a/code/game/machinery/navbeacon.dm b/code/game/machinery/navbeacon.dm index 378ebce8eb7..f278ee2adda 100644 --- a/code/game/machinery/navbeacon.dm +++ b/code/game/machinery/navbeacon.dm @@ -29,16 +29,16 @@ if(!codes || !codes.len) log_runtime(EXCEPTION("Empty codes datum at ([x],[y],[z])"), src, list("codes_txt: '[codes_txt]'")) if("patrol" in codes) - if(!navbeacons["[z]"]) - navbeacons["[z]"] = list() - navbeacons["[z]"] += src //Register with the patrol list! + if(!GLOB.navbeacons["[z]"]) + GLOB.navbeacons["[z]"] = list() + GLOB.navbeacons["[z]"] += src //Register with the patrol list! if("delivery" in codes) - deliverybeacons += src - deliverybeacontags += location + GLOB.deliverybeacons += src + GLOB.deliverybeacontags += location /obj/machinery/navbeacon/Destroy() - navbeacons["[z]"] -= src //Remove from beacon list, if in one. - deliverybeacons -= src + GLOB.navbeacons["[z]"] -= src //Remove from beacon list, if in one. + GLOB.deliverybeacons -= src return ..() /obj/machinery/navbeacon/serialize() diff --git a/code/game/machinery/newscaster.dm b/code/game/machinery/newscaster.dm index 491cb93018e..a712e033afd 100644 --- a/code/game/machinery/newscaster.dm +++ b/code/game/machinery/newscaster.dm @@ -241,8 +241,12 @@ var/list/obj/machinery/newscaster/allCasters = list() //Global list that will co data["censored"] = viewing_channel.censored var/list/messages = list() data["messages"] = messages + var/message_number = 0 for(var/datum/feed_message/M in viewing_channel.messages) - messages[++messages.len] = list("title" = M.title, "body" = M.body, "img" = M.img ? icon2base64(M.img) : null, "message_type" = M.message_type, "author" = M.author, "view_count" = M.view_count) + if(M.img) + user << browse_rsc(M.img, "tmp_photo[message_number].png") + messages[++messages.len] = list("title" = M.title, "body" = M.body, "img" = M.img ? M.img : null, "message_type" = M.message_type, "author" = M.author, "view_count" = M.view_count, "message_number" = message_number) + message_number += 1 if(8, 9) data["channel_name"] = viewing_channel.channel_name data["ref"] = "\ref[viewing_channel]" @@ -273,7 +277,9 @@ var/list/obj/machinery/newscaster/allCasters = list() //Global list that will co data["author"] = news_network.wanted_issue.backup_author data["criminal"] = news_network.wanted_issue.author data["description"] = news_network.wanted_issue.body - data["photo"] = news_network.wanted_issue.img ? icon2base64(news_network.wanted_issue.img) : 0 + if(news_network.wanted_issue.img) + user << browse_rsc(news_network.wanted_issue.img, "tmp_photow.png") + data["photo"] = news_network.wanted_issue.img ? news_network.wanted_issue.img : 0 if(12) var/list/jobs = list() data["jobs"] = jobs diff --git a/code/game/machinery/pipe/construction.dm b/code/game/machinery/pipe/construction.dm index e84d0778ef3..955d82309b1 100644 --- a/code/game/machinery/pipe/construction.dm +++ b/code/game/machinery/pipe/construction.dm @@ -256,7 +256,7 @@ if(PIPE_SIMPLE_BENT, PIPE_INSULATED_BENT, PIPE_HE_BENT, PIPE_SUPPLY_BENT, PIPE_SCRUBBERS_BENT) return dir //dir|acw if(PIPE_CONNECTOR, PIPE_UVENT, PIPE_PASV_VENT, PIPE_SCRUBBER, PIPE_HEAT_EXCHANGE, PIPE_INJECTOR) - return dir + return dir|flip if(PIPE_MANIFOLD4W, PIPE_SUPPLY_MANIFOLD4W, PIPE_SCRUBBERS_MANIFOLD4W, PIPE_OMNI_MIXER, PIPE_OMNI_FILTER) return dir|flip|cw|acw if(PIPE_MANIFOLD, PIPE_SUPPLY_MANIFOLD, PIPE_SCRUBBERS_MANIFOLD) @@ -267,7 +267,7 @@ else return flip|cw|acw if(PIPE_CAP, PIPE_SUPPLY_CAP, PIPE_SCRUBBERS_CAP) - return dir + return dir|flip return 0 /obj/item/pipe/proc/get_pdir() //endpoints for regular pipes diff --git a/code/game/machinery/quantum_pad.dm b/code/game/machinery/quantum_pad.dm index 672402ac351..e5a43c523f5 100644 --- a/code/game/machinery/quantum_pad.dm +++ b/code/game/machinery/quantum_pad.dm @@ -18,7 +18,7 @@ ..() component_parts = list() component_parts += new /obj/item/circuitboard/quantumpad(null) - component_parts += new /obj/item/ore/bluespace_crystal/artificial(null) + component_parts += new /obj/item/stack/ore/bluespace_crystal/artificial(null) component_parts += new /obj/item/stock_parts/capacitor(null) component_parts += new /obj/item/stock_parts/manipulator(null) component_parts += new /obj/item/stack/cable_coil(null, 1) @@ -94,9 +94,7 @@ doteleport(user) /obj/machinery/quantumpad/proc/sparks() - var/datum/effect_system/spark_spread/s = new /datum/effect_system/spark_spread - s.set_up(5, 1, get_turf(src)) - s.start() + do_sparks(5, 1, get_turf(src)) /obj/machinery/quantumpad/attack_ghost(mob/dead/observer/ghost) if(linked_pad) diff --git a/code/game/machinery/rechargestation.dm b/code/game/machinery/rechargestation.dm index f0e23d6c7d4..1532eeaccbd 100644 --- a/code/game/machinery/rechargestation.dm +++ b/code/game/machinery/rechargestation.dm @@ -220,6 +220,14 @@ var/i = 1 for(1, i <= coeff, i++) LR.Charge(occupant) + //Fire extinguisher + if(istype(O, /obj/item/extinguisher)) + var/obj/item/extinguisher/ext = O + ext.reagents.check_and_add("water", ext.max_water, 5 * coeff) + //Welding tools + if(istype(O, /obj/item/weldingtool)) + var/obj/item/weldingtool/weld = O + weld.reagents.check_and_add("fuel", weld.max_fuel, 2 * coeff) if(R) if(R.module) R.module.respawn_consumable(R) diff --git a/code/game/machinery/requests_console.dm b/code/game/machinery/requests_console.dm index 3aae4af4405..e3c51f9c375 100644 --- a/code/game/machinery/requests_console.dm +++ b/code/game/machinery/requests_console.dm @@ -150,7 +150,7 @@ var/list/obj/machinery/requests_console/allConsoles = list() data["assist_dept"] = req_console_assistance data["supply_dept"] = req_console_supplies data["info_dept"] = req_console_information - data["ship_dept"] = TAGGERLOCATIONS + data["ship_dept"] = GLOB.TAGGERLOCATIONS data["message"] = message data["recipient"] = recipient @@ -243,7 +243,7 @@ var/list/obj/machinery/requests_console/allConsoles = list() if(href_list["shipSelect"]) ship_tag_name = href_list["shipSelect"] - ship_tag_index = TAGGERLOCATIONS.Find(ship_tag_name) + ship_tag_index = GLOB.TAGGERLOCATIONS.Find(ship_tag_name) //Handle Shipping Label Printing if(href_list["printLabel"]) diff --git a/code/game/machinery/suit_storage_unit.dm b/code/game/machinery/suit_storage_unit.dm index 370cef73559..3cabbac3e75 100644 --- a/code/game/machinery/suit_storage_unit.dm +++ b/code/game/machinery/suit_storage_unit.dm @@ -1,128 +1,353 @@ -////////////////////////////////////// // SUIT STORAGE UNIT ///////////////// -////////////////////////////////////// - - /obj/machinery/suit_storage_unit - name = "Suit Storage Unit" + name = "suit storage unit" desc = "An industrial U-Stor-It Storage unit designed to accomodate all kinds of space suits. Its on-board equipment also allows the user to decontaminate the contents through a UV-ray purging cycle. There's a warning label dangling from the control pad, reading \"STRICTLY NO BIOLOGICALS IN THE CONFINES OF THE UNIT\"." - icon = 'icons/obj/suitstorage.dmi' - icon_state = "suitstorage000000100" //order is: [has helmet][has suit][has human][is open][is locked][is UV cycling][is powered][is dirty/broken] [is superUVcycling] - anchored = 1 - density = 1 - var/mob/living/carbon/human/OCCUPANT = null - var/obj/item/clothing/suit/space/SUIT = null - var/SUIT_TYPE = null - var/obj/item/clothing/head/helmet/space/HELMET = null - var/HELMET_TYPE = null - var/obj/item/clothing/mask/MASK = null //All the stuff that's gonna be stored insiiiiiiiiiiiiiiiiiiide, nyoro~n - var/MASK_TYPE = null //Erro's idea on standarising SSUs whle keeping creation of other SSU types easy: Make a child SSU, name it something then set the TYPE vars to your desired suit output. New() should take it from there by itself. - var/isopen = 0 - var/islocked = 0 - var/isUV = 0 - var/ispowered = 1 //starts powered - var/isbroken = 0 - var/issuperUV = 0 - var/panelopen = 0 - var/safetieson = 1 - var/cycletime_left = 0 + icon = 'icons/obj/machines/suit_storage.dmi' + icon_state = "close" + anchored = TRUE + density = TRUE + max_integrity = 250 + var/obj/item/clothing/suit/space/suit = null + var/obj/item/clothing/head/helmet/space/helmet = null + var/obj/item/clothing/mask/mask = null + var/obj/item/storage = null + + var/helmet_type = null + var/suit_type = null + var/mask_type = null + var/storage_type = null + + var/locked = FALSE + var/safeties = TRUE + var/broken = FALSE + + var/uv = FALSE + var/uv_super = FALSE + var/uv_cycles = 6 + var/message_cooldown + var/breakout_time = 300 + + //abstract these onto machinery eventually + var/state_open = FALSE + var/list/occupant_typecache //if set, turned into typecache in Initialize, other wise, defaults to mob/living typecache + var/atom/movable/occupant = null -//The units themselves///////////////// /obj/machinery/suit_storage_unit/standard_unit - SUIT_TYPE = /obj/item/clothing/suit/space/eva - HELMET_TYPE = /obj/item/clothing/head/helmet/space/eva - MASK_TYPE = /obj/item/clothing/mask/breath + suit_type = /obj/item/clothing/suit/space/eva + helmet_type = /obj/item/clothing/head/helmet/space/eva + mask_type = /obj/item/clothing/mask/breath /obj/machinery/suit_storage_unit/captain - SUIT_TYPE = /obj/item/clothing/suit/space/captain - HELMET_TYPE = /obj/item/clothing/head/helmet/space/capspace - MASK_TYPE = /obj/item/clothing/mask/gas + suit_type = /obj/item/clothing/suit/space/captain + helmet_type = /obj/item/clothing/head/helmet/space/capspace + mask_type = /obj/item/clothing/mask/gas + storage_type = /obj/item/tank/jetpack/oxygen/captain /obj/machinery/suit_storage_unit/engine - SUIT_TYPE = /obj/item/clothing/suit/space/hardsuit/engineering - HELMET_TYPE = /obj/item/clothing/head/helmet/space/hardsuit/engineering - MASK_TYPE = /obj/item/clothing/mask/breath + suit_type = /obj/item/clothing/suit/space/hardsuit/engineering + helmet_type = /obj/item/clothing/head/helmet/space/hardsuit/engineering + mask_type = /obj/item/clothing/mask/breath + storage_type = /obj/item/clothing/shoes/magboots /obj/machinery/suit_storage_unit/ce - SUIT_TYPE = /obj/item/clothing/suit/space/hardsuit/elite - HELMET_TYPE = /obj/item/clothing/head/helmet/space/hardsuit/elite - MASK_TYPE = /obj/item/clothing/mask/breath + suit_type = /obj/item/clothing/suit/space/hardsuit/elite + helmet_type = /obj/item/clothing/head/helmet/space/hardsuit/elite + mask_type = /obj/item/clothing/mask/gas + storage_type = /obj/item/clothing/shoes/magboots/advance /obj/machinery/suit_storage_unit/security - SUIT_TYPE = /obj/item/clothing/suit/space/hardsuit/security - HELMET_TYPE = /obj/item/clothing/head/helmet/space/hardsuit/security - MASK_TYPE = /obj/item/clothing/mask/gas/sechailer + suit_type = /obj/item/clothing/suit/space/hardsuit/security + helmet_type = /obj/item/clothing/head/helmet/space/hardsuit/security + mask_type = /obj/item/clothing/mask/gas/sechailer /obj/machinery/suit_storage_unit/atmos - SUIT_TYPE = /obj/item/clothing/suit/space/hardsuit/atmos - HELMET_TYPE = /obj/item/clothing/head/helmet/space/hardsuit/atmos - MASK_TYPE = /obj/item/clothing/mask/gas + suit_type = /obj/item/clothing/suit/space/hardsuit/atmos + helmet_type = /obj/item/clothing/head/helmet/space/hardsuit/atmos + mask_type = /obj/item/clothing/mask/gas + storage_type = /obj/item/clothing/shoes/magboots /obj/machinery/suit_storage_unit/mining - SUIT_TYPE = /obj/item/clothing/suit/space/hardsuit/mining - HELMET_TYPE = /obj/item/clothing/head/helmet/space/hardsuit/mining - MASK_TYPE = /obj/item/clothing/mask/breath + suit_type = /obj/item/clothing/suit/space/hardsuit/mining + helmet_type = /obj/item/clothing/head/helmet/space/hardsuit/mining + mask_type = /obj/item/clothing/mask/breath /obj/machinery/suit_storage_unit/cmo - SUIT_TYPE = /obj/item/clothing/suit/space/hardsuit/medical - HELMET_TYPE = /obj/item/clothing/head/helmet/space/hardsuit/medical - MASK_TYPE = /obj/item/clothing/mask/breath + suit_type = /obj/item/clothing/suit/space/hardsuit/medical + helmet_type = /obj/item/clothing/head/helmet/space/hardsuit/medical + mask_type = /obj/item/clothing/mask/breath -/obj/machinery/suit_storage_unit/New() - src.update_icon() - if(SUIT_TYPE) - SUIT = new SUIT_TYPE(src) - if(HELMET_TYPE) - HELMET = new HELMET_TYPE(src) - if(MASK_TYPE) - MASK = new MASK_TYPE(src) +/obj/machinery/suit_storage_unit/syndicate + suit_type = /obj/item/clothing/suit/space/hardsuit/syndi + helmet_type = /obj/item/clothing/head/helmet/space/hardsuit/syndi + mask_type = /obj/item/clothing/mask/gas/syndicate + storage_type = /obj/item/tank/jetpack/oxygen/harness + +/obj/machinery/suit_storage_unit/ert/command + suit_type = /obj/item/clothing/suit/space/hardsuit/ert/commander + helmet_type = /obj/item/clothing/head/helmet/space/hardsuit/ert/commander + mask_type = /obj/item/clothing/mask/breath + storage_type = /obj/item/tank/emergency_oxygen/double + +/obj/machinery/suit_storage_unit/ert/security + suit_type = /obj/item/clothing/suit/space/hardsuit/ert/security + helmet_type = /obj/item/clothing/head/helmet/space/hardsuit/ert/security + mask_type = /obj/item/clothing/mask/breath + storage_type = /obj/item/tank/emergency_oxygen/double + +/obj/machinery/suit_storage_unit/ert/engineer + suit_type = /obj/item/clothing/suit/space/hardsuit/ert/engineer + helmet_type = /obj/item/clothing/head/helmet/space/hardsuit/ert/engineer + mask_type = /obj/item/clothing/mask/breath + storage_type = /obj/item/tank/emergency_oxygen/double + +/obj/machinery/suit_storage_unit/ert/medical + suit_type = /obj/item/clothing/suit/space/hardsuit/ert/medical + helmet_type = /obj/item/clothing/head/helmet/space/hardsuit/ert/medical + mask_type = /obj/item/clothing/mask/breath + storage_type = /obj/item/tank/emergency_oxygen/double + + + +/obj/machinery/suit_storage_unit/Initialize() + . = ..() + if(suit_type) + suit = new suit_type(src) + if(helmet_type) + helmet = new helmet_type(src) + if(mask_type) + mask = new mask_type(src) + if(storage_type) + storage = new storage_type(src) + update_icon() + + //move this into machinery eventually... + if(occupant_typecache) + occupant_typecache = typecacheof(occupant_typecache) + +/obj/machinery/suit_storage_unit/Destroy() + QDEL_NULL(suit) + QDEL_NULL(helmet) + QDEL_NULL(mask) + QDEL_NULL(storage) + return ..() /obj/machinery/suit_storage_unit/update_icon() - var/hashelmet = 0 - var/hassuit = 0 - var/hashuman = 0 - if(HELMET) - hashelmet = 1 - if(SUIT) - hassuit = 1 - if(OCCUPANT) - hashuman = 1 - icon_state = text("suitstorage[][][][][][][][][]",hashelmet,hassuit,hashuman,src.isopen,src.islocked,src.isUV,src.ispowered,src.isbroken,src.issuperUV) + cut_overlays() + if(uv) + if(uv_super) + add_overlay("super") + else if(occupant) + add_overlay("uvhuman") + else + add_overlay("uv") + else if(state_open) + if(stat & BROKEN) + add_overlay("broken") + else + add_overlay("open") + if(suit) + add_overlay("suit") + if(helmet) + add_overlay("helm") + if(storage) + add_overlay("storage") + else if(occupant) + add_overlay("human") + +/obj/machinery/suit_storage_unit/attackby(obj/item/I as obj, mob/user as mob, params) + if(!is_operational()) + return + if(isscrewdriver(I)) + panel_open = !panel_open + playsound(loc, I.usesound, 100, 1) + to_chat(user, text("You [panel_open ? "open up" : "close"] the unit's maintenance panel.")) + updateUsrDialog() /obj/machinery/suit_storage_unit/power_change() - if( powered() ) - src.ispowered = 1 - stat &= ~NOPOWER - src.update_icon() + ..() + if(!is_operational() && state_open) + open_machine() + dump_contents() + update_icon() + + +/obj/machinery/suit_storage_unit/proc/dump_contents() + dropContents() + helmet = null + suit = null + mask = null + storage = null + occupant = null + +/obj/machinery/suit_storage_unit/deconstruct(disassembled = TRUE) + open_machine() + dump_contents() + new /obj/item/stack/sheet/metal (loc, 2) + qdel(src) + +/obj/machinery/suit_storage_unit/MouseDrop_T(atom/A, mob/user) + if(user.stat || user.lying || !Adjacent(user) || !Adjacent(A) || !isliving(A)) + return + var/mob/living/target = A + if(!state_open) + to_chat(user, "The [src]'s doors are shut!") + return + if(!is_operational()) + to_chat(user, "The [src] is not operational!") + return + if(occupant || helmet || suit || storage) + to_chat(user, "It's too cluttered inside to fit in!") + return + + if(target == user) + user.visible_message("[user] starts squeezing into [src]!", "You start working your way into [src]...") else - spawn(rand(0, 15)) - src.ispowered = 0 - stat |= NOPOWER - src.islocked = 0 - src.isopen = 1 - src.dump_everything() - src.update_icon() + target.visible_message("[user] starts shoving [target] into [src]!", "[user] starts shoving you into [src]!") - -/obj/machinery/suit_storage_unit/ex_act(severity) - switch(severity) - if(1.0) - if(prob(50)) - src.dump_everything() //So suits dont survive all the time - qdel(src) - return - if(2.0) - if(prob(50)) - src.dump_everything() - qdel(src) + if(do_mob(user, target, 30)) + if(occupant || helmet || suit || storage) return + if(target == user) + user.visible_message("[user] slips into [src] and closes the door behind [user.p_them()]!", "You slip into [src]'s cramped space and shut its door.") else - return - return + target.visible_message("[user] pushes [target] into [src] and shuts its door!", "[user] shoves you into [src] and shuts the door!") + close_machine(target) + add_fingerprint(user) +/obj/machinery/suit_storage_unit/proc/cook() + if(uv_cycles) + uv_cycles-- + uv = TRUE + locked = TRUE + update_icon() + if(occupant) + var/mob/living/mob_occupant = occupant + if(uv_super) + mob_occupant.adjustFireLoss(rand(20, 36)) + else + mob_occupant.adjustFireLoss(rand(10, 16)) + mob_occupant.emote("scream") + addtimer(CALLBACK(src, .proc/cook), 50) + else + uv_cycles = initial(uv_cycles) + uv = FALSE + locked = FALSE + if(uv_super) + visible_message("[src]'s door creaks open with a loud whining noise. A cloud of foul black smoke escapes from its chamber.") + playsound(src, 'sound/machines/airlock_alien_prying.ogg', 50, 1) + helmet = null + qdel(helmet) + suit = null + qdel(suit) // Delete everything but the occupant. + mask = null + qdel(mask) + storage = null + qdel(storage) + else + if(!occupant) + visible_message("[src]'s door slides open. The glowing yellow lights dim to a gentle green.") + else + visible_message("[src]'s door slides open, barraging you with the nauseating smell of charred flesh.") + playsound(src, 'sound/machines/airlock_close.ogg', 25, 1) + open_machine(FALSE) + if(occupant) + dump_contents() + +/obj/machinery/suit_storage_unit/shock(mob/user, prb) + if(!prob(prb)) + var/datum/effect_system/spark_spread/s = new /datum/effect_system/spark_spread + s.set_up(5, 1, src) + s.start() + if(electrocute_mob(user, src, src, 1, TRUE)) + return 1 + +/obj/machinery/suit_storage_unit/relaymove(mob/user) + if(locked) + if(message_cooldown <= world.time) + message_cooldown = world.time + 50 + to_chat(user, "[src]'s door won't budge!") + return + open_machine() + dump_contents() + +/obj/machinery/suit_storage_unit/container_resist(mob/living/user) + if(!locked) + open_machine() + dump_contents() + return + user.changeNext_move(CLICK_CD_BREAKOUT) + user.last_special = world.time + CLICK_CD_BREAKOUT + user.visible_message("You see [user] kicking against the doors of [src]!", \ + "You start kicking against the doors... (this will take about [DisplayTimeText(breakout_time)].)", \ + "You hear a thump from [src].") + if(do_after(user,(breakout_time), target = src)) + if(!user || user.stat != CONSCIOUS || user.loc != src ) + return + user.visible_message("[user] successfully broke out of [src]!", \ + "You successfully break out of [src]!") + open_machine() + dump_contents() + + add_fingerprint(user) + if(locked) + visible_message("You see [user] kicking against the doors of [src]!", \ + "You start kicking against the doors...") + addtimer(CALLBACK(src, .proc/resist_open, user), 300) + else + open_machine() + dump_contents() + +/obj/machinery/suit_storage_unit/proc/resist_open(mob/user) + if(!state_open && occupant && (user in src) && !user.stat) // Check they're still here. + visible_message("You see [user] burst out of [src]!", \ + "You escape the cramped confines of [src]!") + open_machine() + +//eventually move these onto the parent.... + +/obj/machinery/suit_storage_unit/proc/open_machine(drop = TRUE) + state_open = TRUE + if(drop) + dropContents() + update_icon() + updateUsrDialog() + +/obj/machinery/suit_storage_unit/dropContents() + var/turf/T = get_turf(src) + for(var/atom/movable/A in contents) + A.forceMove(T) + if(isliving(A)) + var/mob/living/L = A + L.update_canmove() + occupant = null + +/obj/machinery/suit_storage_unit/proc/close_machine(atom/movable/target = null) + state_open = FALSE + if(!target) + for(var/am in loc) + if(!(occupant_typecache ? is_type_in_typecache(am, occupant_typecache) : isliving(am))) + continue + var/atom/movable/AM = am + if(AM.has_buckled_mobs()) + continue + if(isliving(AM)) + var/mob/living/L = am + if(L.buckled || L.mob_size >= MOB_SIZE_LARGE) + continue + target = am + + var/mob/living/mobtarget = target + if(target && !target.has_buckled_mobs() && (!isliving(target) || !mobtarget.buckled)) + occupant = target + target.forceMove(src) + updateUsrDialog() + update_icon() + + +//////// /obj/machinery/suit_storage_unit/attack_hand(mob/user as mob) var/dat @@ -131,54 +356,49 @@ if(stat & NOPOWER) return if(!user.IsAdvancedToolUser()) - return 0 - if(src.panelopen) //The maintenance panel is open. Time for some shady stuff + return FALSE + if(panel_open) //The maintenance panel is open. Time for some shady stuff dat+= "Suit storage unit: Maintenance panel" dat+= "Maintenance panel controls
" dat+= "The panel is ridden with controls, button and meters, labeled in strange signs and symbols that
you cannot understand. Probably the manufactoring world's language.
Among other things, a few controls catch your eye.

" - dat+= text("A small dial with a \"�\" symbol embroidded on it. It's pointing towards a gauge that reads [].
Turn towards []
",(src.issuperUV ? "15nm" : "185nm"),(src.issuperUV ? "185nm" : "15nm") ) - dat+= text("A thick old-style button, with 2 grimy LED lights next to it. The [] LED is on.
Press button",(src.safetieson? "GREEN" : "RED")) + dat+= text("A small dial with an arrow embroidered on it. It's pointing towards a gauge that reads [].
Turn towards []
",(uv_super ? "15nm" : "185nm"),(uv_super ? "185nm" : "15nm") ) + dat+= text("A thick old-style button, with 2 grimy LED lights next to it. The [] LED is on.
Press button",(safeties ? "GREEN" : "RED")) dat+= "

Close panel" - //user << browse(dat, "window=ssu_m_panel;size=400x500") - //onclose(user, "ssu_m_panel") - else if(src.isUV) //The thing is running its cauterisation cycle. You have to wait. + else if(uv) //The thing is running its cauterisation cycle. You have to wait. dat += "Suit storage unit" dat+= "Unit is cauterising contents with selected UV ray intensity. Please wait.
" - //dat+= "Cycle end in: [src.cycletimeleft()] seconds. " - //user << browse(dat, "window=ssu_cycling_panel;size=400x500") - //onclose(user, "ssu_cycling_panel") else - if(!src.isbroken) + if(!broken) dat+= "Welcome to the Unit control panel.
" - dat+= text("Helmet storage compartment: []
",(src.HELMET ? HELMET.name : "
No helmet detected.") ) - if(HELMET && src.isopen) + dat+= text("Helmet storage compartment: []
",(helmet ? helmet.name : "
No helmet detected.") ) + if(helmet && state_open) dat+="Dispense helmet
" - dat+= text("Suit storage compartment: []
",(src.SUIT ? SUIT.name : "
No exosuit detected.") ) - if(SUIT && src.isopen) + dat+= text("Suit storage compartment: []
",(suit ? suit.name : "
No exosuit detected.") ) + if(suit && state_open) dat+="Dispense suit
" - dat+= text("Breathmask storage compartment: []
",(src.MASK ? MASK.name : "
No breathmask detected.") ) - if(MASK && src.isopen) + dat+= text("Breathmask storage compartment: []
",(mask ? mask.name : "
No breathmask detected.") ) + if(mask && state_open) dat+="Dispense mask
" - if(src.OCCUPANT) + dat+= text("Breathmask storage compartment: []
",(storage ? storage.name : "
No storage item detected.") ) + if(storage && state_open) + dat+="Dispense storage item
" + if(occupant) dat+= "
WARNING: Biological entity detected inside the Unit's storage. Please remove.
" dat+= "Eject extra load" - dat+= text("
Unit is: [] - [] Unit ",(src.isopen ? "Open" : "Closed"),(src.isopen ? "Close" : "Open")) - if(src.isopen) + dat+= text("
Unit is: [] - [] Unit ",(state_open ? "Open" : "Closed"),(state_open ? "Close" : "Open")) + if(state_open) dat+="
" else - dat+= text(" - *[] Unit*
",(src.islocked ? "Unlock" : "Lock") ) - dat+= text("Unit status: []",(src.islocked? "**LOCKED**
" : "**UNLOCKED**
") ) - dat+= "Start Disinfection cycle
" + dat+= text(" - *[] Unit*
",(locked ? "Unlock" : "Lock") ) + dat+= text("Unit status: []",(locked? "**LOCKED**
" : "**UNLOCKED**
") ) + dat+= "Start Disinfection cycle
" dat += "

Close control panel" - //user << browse(dat, "window=Suit Storage Unit;size=400x500") - //onclose(user, "Suit Storage Unit") else //Ohhhh shit it's dirty or broken! Let's inform the guy. dat+= "Suit storage unit" dat+= "Unit chamber is too contaminated to continue usage. Please call for a qualified individual to perform maintenance.

" dat+= "
Close control panel" - //user << browse(dat, "window=suit_storage_unit;size=400x500") - //onclose(user, "suit_storage_unit") + var/datum/browser/popup = new(user, "suit_storage_unit", name, 400, 500) popup.set_content(dat) @@ -187,263 +407,134 @@ return -/obj/machinery/suit_storage_unit/Topic(href, href_list) //I fucking HATE this proc +/obj/machinery/suit_storage_unit/Topic(href, href_list) if(..()) return 1 if((usr.contents.Find(src) || ((get_dist(src, usr) <= 1) && istype(src.loc, /turf))) || (istype(usr, /mob/living/silicon/ai))) usr.set_machine(src) if(href_list["toggleUV"]) - src.toggleUV(usr) - src.updateUsrDialog() - src.update_icon() + toggleUV(usr) + updateUsrDialog() + update_icon() if(href_list["togglesafeties"]) - src.togglesafeties(usr) - src.updateUsrDialog() - src.update_icon() + togglesafeties(usr) + updateUsrDialog() + update_icon() if(href_list["dispense_helmet"]) - src.dispense_helmet(usr) - src.updateUsrDialog() - src.update_icon() + dispense_helmet(usr) + updateUsrDialog() + update_icon() if(href_list["dispense_suit"]) - src.dispense_suit(usr) - src.updateUsrDialog() - src.update_icon() + dispense_suit(usr) + updateUsrDialog() + update_icon() if(href_list["dispense_mask"]) - src.dispense_mask(usr) - src.updateUsrDialog() - src.update_icon() + dispense_mask(usr) + updateUsrDialog() + update_icon() + if(href_list["dispense_storage"]) + dispense_storage(usr) + updateUsrDialog() + update_icon() if(href_list["toggle_open"]) - src.toggle_open(usr) - src.updateUsrDialog() - src.update_icon() + toggle_open(usr) + updateUsrDialog() + update_icon() if(href_list["toggle_lock"]) - src.toggle_lock(usr) - src.updateUsrDialog() - src.update_icon() - if(href_list["start_UV"]) - src.start_UV(usr) - src.updateUsrDialog() - src.update_icon() + toggle_lock(usr) + updateUsrDialog() + update_icon() + if(href_list["cook"]) + cook(usr) + updateUsrDialog() + update_icon() if(href_list["eject_guy"]) - src.eject_occupant(usr) - src.updateUsrDialog() - src.update_icon() - /*if(href_list["refresh"]) - src.updateUsrDialog()*/ - src.add_fingerprint(usr) + eject_occupant(usr) + updateUsrDialog() + update_icon() + add_fingerprint(usr) return /obj/machinery/suit_storage_unit/proc/toggleUV(mob/user as mob) -// var/protected = 0 -// var/mob/living/carbon/human/H = user - if(!src.panelopen) + + if(!panel_open) return - - /*if(istype(H)) //Let's check if the guy's wearing electrically insulated gloves - if(H.gloves) - var/obj/item/clothing/gloves/G = H.gloves - if(istype(G,/obj/item/clothing/gloves/color/yellow)) - protected = 1 - - if(!protected) - playsound(src.loc, "sparks", 75, 1, -1) - to_chat(user, "You try to touch the controls but you get zapped. There must be a short circuit somewhere.") - return*/ - else //welp, the guy is protected, we can continue - if(src.issuperUV) - to_chat(user, "You slide the dial back towards \"185nm\".") - src.issuperUV = 0 + else + if(uv_super) + to_chat(user, "You slide the dial back towards \"185nm\".") + uv_super = FALSE else - to_chat(user, "You crank the dial all the way up to \"15nm\".") - src.issuperUV = 1 - return - + to_chat(user, "You crank the dial all the way up to \"15nm\".") + uv_super = TRUE /obj/machinery/suit_storage_unit/proc/togglesafeties(mob/user as mob) -// var/protected = 0 -// var/mob/living/carbon/human/H = user - if(!src.panelopen) //Needed check due to bugs + if(!panel_open) return - - /*if(istype(H)) //Let's check if the guy's wearing electrically insulated gloves - if(H.gloves) - var/obj/item/clothing/gloves/G = H.gloves - if(istype(G,/obj/item/clothing/gloves/color/yellow) ) - protected = 1 - - if(!protected) - playsound(src.loc, "sparks", 75, 1, -1) - to_chat(user, "You try to touch the controls but you get zapped. There must be a short circuit somewhere.") - return*/ else - to_chat(user, "You push the button. The coloured LED next to it changes.") - src.safetieson = !src.safetieson - + to_chat(user, "You push the button. The coloured LED next to it changes.") + safeties = !safeties /obj/machinery/suit_storage_unit/proc/dispense_helmet(mob/user as mob) - if(!src.HELMET) - return //Do I even need this sanity check? Nyoro~n - else - src.HELMET.loc = src.loc - src.HELMET = null + if(!helmet) return - + else + helmet.forceMove(loc) + helmet = null /obj/machinery/suit_storage_unit/proc/dispense_suit(mob/user as mob) - if(!src.SUIT) + if(!suit) return else - src.SUIT.loc = src.loc - src.SUIT = null - return - + suit.forceMove(loc) + suit = null /obj/machinery/suit_storage_unit/proc/dispense_mask(mob/user as mob) - if(!src.MASK) + if(!mask) return else - src.MASK.loc = src.loc - src.MASK = null + mask.forceMove(loc) + mask = null + +/obj/machinery/suit_storage_unit/proc/dispense_storage(mob/user as mob) + if(!storage) return - - -/obj/machinery/suit_storage_unit/proc/dump_everything() - src.islocked = 0 //locks go free - if(src.SUIT) - src.SUIT.loc = src.loc - src.SUIT = null - if(src.HELMET) - src.HELMET.loc = src.loc - src.HELMET = null - if(src.MASK) - src.MASK.loc = src.loc - src.MASK = null - if(src.OCCUPANT) - src.eject_occupant(OCCUPANT) - return - + else + storage.forceMove(loc) + storage = null /obj/machinery/suit_storage_unit/proc/toggle_open(mob/user as mob) - if(src.islocked || src.isUV) - to_chat(user, "Unable to open unit.") + if(locked || uv) + to_chat(user, "Unable to open unit.") return - if(src.OCCUPANT) - src.eject_occupant(user) - return // eject_occupant opens the door, so we need to return - src.isopen = !src.isopen - return - + if(occupant) + eject_occupant(user) + return + state_open = !state_open /obj/machinery/suit_storage_unit/proc/toggle_lock(mob/user as mob) - if(src.OCCUPANT && src.safetieson) - to_chat(user, "The Unit's safety protocols disallow locking when a biological form is detected inside its compartments.") + if(occupant && safeties) + to_chat(user, "The unit's safety protocols disallow locking when a biological form is detected inside its compartments.") return - if(src.isopen) + if(state_open) return - src.islocked = !src.islocked - return - - -/obj/machinery/suit_storage_unit/proc/start_UV(mob/user as mob) - if(src.isUV || src.isopen) //I'm bored of all these sanity checks - return - if(src.OCCUPANT && src.safetieson) - to_chat(user, "WARNING: Biological entity detected in the confines of the Unit's storage. Cannot initiate cycle.") - return - if(!src.HELMET && !src.MASK && !src.SUIT && !src.OCCUPANT ) //shit's empty yo - to_chat(user, "Unit storage bays empty. Nothing to disinfect -- Aborting.") - return - to_chat(user, "You start the Unit's cauterisation cycle.") - src.cycletime_left = 20 - src.isUV = 1 - if(src.OCCUPANT && !src.islocked) - src.islocked = 1 //Let's lock it for good measure - src.update_icon() - src.updateUsrDialog() - - var/i //our counter - for(i=0,i<4,i++) - sleep(50) - if(src.OCCUPANT) - if(src.issuperUV) - var/burndamage = rand(35,45) - OCCUPANT.take_organ_damage(0,burndamage) - OCCUPANT.emote("scream") - else - var/burndamage = rand(10,15) - OCCUPANT.take_organ_damage(0,burndamage) - OCCUPANT.emote("scream") - if(i==3) //End of the cycle - if(!src.issuperUV) - if(src.HELMET) - HELMET.clean_blood() - if(src.SUIT) - SUIT.clean_blood() - if(src.MASK) - MASK.clean_blood() - else //It was supercycling, destroy everything - if(src.HELMET) - src.HELMET = null - if(src.SUIT) - src.SUIT = null - if(src.MASK) - src.MASK = null - visible_message("With a loud whining noise, the Suit Storage Unit's door grinds open. Puffs of ashen smoke come out of its chamber.") - src.isbroken = 1 - src.isopen = 1 - src.islocked = 0 - src.eject_occupant(OCCUPANT) //Mixing up these two lines causes bug. DO NOT DO IT. - src.isUV = 0 //Cycle ends - src.update_icon() - src.updateUsrDialog() - return - -/* spawn(200) //Let's clean dat shit after 20 secs //Eh, this doesn't work - if(src.HELMET) - HELMET.clean_blood() - if(src.SUIT) - SUIT.clean_blood() - if(src.MASK) - MASK.clean_blood() - src.isUV = 0 //Cycle ends - src.update_icon() - src.updateUsrDialog() - - var/i - for(i=0,i<4,i++) //Gradually give the guy inside some damaged based on the intensity - spawn(50) - if(OCCUPANT) - if(issuperUV) - OCCUPANT.take_organ_damage(0,40) - to_chat(user, "Test. You gave [OCCUPANT.p_them()] 40 damage") - else - OCCUPANT.take_organ_damage(0,8) - to_chat(user, "Test. You gave [OCCUPANT.p_them()] 8 damage") - return*/ - - -/obj/machinery/suit_storage_unit/proc/cycletimeleft() - if(src.cycletime_left >= 1) - src.cycletime_left-- - return src.cycletime_left - + locked = !locked /obj/machinery/suit_storage_unit/proc/eject_occupant(mob/user as mob) - if(islocked) + if(locked) return - if(!OCCUPANT) + if(!occupant) return - if(user != OCCUPANT) - to_chat(OCCUPANT, "The machine kicks you out!") + if(user != occupant) + to_chat(occupant, "The machine kicks you out!") if(user.loc != loc) - to_chat(OCCUPANT, "You leave the not-so-cozy confines of the SSU.") - OCCUPANT.forceMove(loc) - OCCUPANT = null - if(!isopen) - isopen = 1 + to_chat(occupant, "You leave the not-so-cozy confines of the SSU.") + occupant.forceMove(loc) + occupant = null + if(!state_open) + state_open = 1 update_icon() return @@ -455,13 +546,12 @@ if(usr.stat != 0) return - src.eject_occupant(usr) + eject_occupant(usr) add_fingerprint(usr) - src.updateUsrDialog() - src.update_icon() + updateUsrDialog() + update_icon() return - /obj/machinery/suit_storage_unit/verb/move_inside() set name = "Hide in Suit Storage Unit" set category = "Object" @@ -469,640 +559,28 @@ if(usr.stat != 0) return - if(!src.isopen) - to_chat(usr, "The unit's doors are shut.") + if(!state_open) + to_chat(usr, "The unit's doors are shut.") return - if(!src.ispowered || src.isbroken) - to_chat(usr, "The unit is not operational.") + if(broken) + to_chat(usr, "The unit is not operational.") return - if( (src.OCCUPANT) || (src.HELMET) || (src.SUIT) ) - to_chat(usr, "It's too cluttered inside for you to fit in!") + if((occupant) || (helmet) || (suit) || (storage)) + to_chat(usr, "It's too cluttered inside for you to fit in!") return visible_message("[usr] starts squeezing into the suit storage unit!") if(do_after(usr, 10, target = usr)) usr.stop_pulling() usr.forceMove(src) -// usr.metabslow = 1 - src.OCCUPANT = usr - src.isopen = 0 //Close the thing after the guy gets inside - src.update_icon() + occupant = usr + state_open = FALSE //Close the thing after the guy gets inside + update_icon() -// for(var/obj/O in src) -// qdel(O) - - src.add_fingerprint(usr) - src.updateUsrDialog() + add_fingerprint(usr) + updateUsrDialog() return else - src.OCCUPANT = null //Testing this as a backup sanity test - return - - -/obj/machinery/suit_storage_unit/attackby(obj/item/I as obj, mob/user as mob, params) - if(!src.ispowered) - return - if(istype(I, /obj/item/screwdriver)) - src.panelopen = !src.panelopen - playsound(src.loc, I.usesound, 100, 1) - to_chat(user, text("You [] the unit's maintenance panel.",(src.panelopen ? "open up" : "close") )) - src.updateUsrDialog() - return - if( istype(I, /obj/item/grab) ) - var/obj/item/grab/G = I - if( !(ismob(G.affecting)) ) - return - if(!src.isopen) - to_chat(usr, "The unit's doors are shut.") - return - if(!src.ispowered || src.isbroken) - to_chat(usr, "The unit is not operational.") - return - if( (src.OCCUPANT) || (src.HELMET) || (src.SUIT) ) //Unit needs to be absolutely empty - to_chat(user, "The unit's storage area is too cluttered.") - return - visible_message("[user] starts putting [G.affecting.name] into the Suit Storage Unit.") - if(do_after(user, 20, target = G:affecting)) - if(!G || !G.affecting) return //derpcheck - var/mob/M = G.affecting - M.forceMove(src) - src.OCCUPANT = M - src.isopen = 0 //close ittt - - //for(var/obj/O in src) - // O.loc = src.loc - src.add_fingerprint(user) - qdel(G) - src.updateUsrDialog() - src.update_icon() - return - return - if( istype(I,/obj/item/clothing/suit/space) ) - if(!src.isopen) - return - var/obj/item/clothing/suit/space/S = I - if(src.SUIT) - to_chat(user, "The unit already contains a suit.") - return - to_chat(user, "You load the [S.name] into the storage compartment.") - user.drop_item() - S.loc = src - src.SUIT = S - src.update_icon() - src.updateUsrDialog() - return - if( istype(I,/obj/item/clothing/head/helmet) ) - if(!src.isopen) - return - var/obj/item/clothing/head/helmet/H = I - if(src.HELMET) - to_chat(user, "The unit already contains a helmet.") - return - to_chat(user, "You load the [H.name] into the storage compartment.") - user.drop_item() - H.loc = src - src.HELMET = H - src.update_icon() - src.updateUsrDialog() - return - if( istype(I,/obj/item/clothing/mask) ) - if(!src.isopen) - return - var/obj/item/clothing/mask/M = I - if(src.MASK) - to_chat(user, "The unit already contains a mask.") - return - to_chat(user, "You load the [M.name] into the storage compartment.") - user.drop_item() - M.loc = src - src.MASK = M - src.update_icon() - src.updateUsrDialog() - return - src.update_icon() - src.updateUsrDialog() - return - + occupant = null /obj/machinery/suit_storage_unit/attack_ai(mob/user as mob) - return src.attack_hand(user) - - - -//////////////////////////////REMINDER: Make it lock once you place some fucker inside. - -//God this entire file is fucking awful -//Suit painter for Bay's special snowflake aliums. - -/obj/machinery/suit_cycler - - name = "suit cycler" - desc = "An industrial machine for repairing, painting and equipping hardsuits." - anchored = 1 - density = 1 - - icon = 'icons/obj/suitstorage.dmi' - icon_state = "suitstorage000000100" - - req_access = list(access_captain,access_heads) - - var/active = 0 // PLEASE HOLD. - var/safeties = 1 // The cycler won't start with a living thing inside it unless safeties are off. - var/irradiating = 0 // If this is > 0, the cycler is decontaminating whatever is inside it. - var/radiation_level = 2 // 1 is removing germs, 2 is removing blood, 3 is removing plasma. - var/model_text = "" // Some flavour text for the topic box. - var/locked = 1 // If locked, nothing can be taken from or added to the cycler. - - // Wiring bollocks. - var/wires = 15 - var/electrified = 0 - var/const/WIRE_EXTEND = 1 // Safeties - var/const/WIRE_SCANID = 2 // Locked status - var/const/WIRE_SHOCK = 3 // What it says on the tin. - - //Departments that the cycler can paint suits to look like. - var/list/departments = list("Engineering","Mining","Medical","Security","Atmos") - //Species that the suits can be configured to fit. - var/list/species = list("Human","Skrell","Unathi","Tajaran") - - var/target_department = "Engineering" - var/target_species = "Human" - - var/mob/living/carbon/human/occupant = null - var/obj/item/clothing/suit/space/hardsuit/suit = null - var/obj/item/clothing/head/helmet/space/helmet = null - -/obj/machinery/suit_cycler/engineering - name = "Engineering suit cycler" - model_text = "Engineering" - req_access = list(access_construction) - departments = list("Engineering","Atmos") - species = list("Human","Unathi","Tajaran") - -/obj/machinery/suit_cycler/mining - name = "Mining suit cycler" - model_text = "Mining" - req_access = list(access_mining) - departments = list("Mining") - species = list("Human","Unathi","Tajaran") - -/obj/machinery/suit_cycler/attack_ai(mob/user as mob) - return src.attack_hand(user) - -/obj/machinery/suit_cycler/attackby(obj/item/I as obj, mob/user as mob, params) - - if(electrified != 0) - if(src.shock(user, 100)) - return - - //Hacking init. - if(istype(I, /obj/item/multitool) || istype(I, /obj/item/wirecutters)) - if(panel_open) - attack_hand(user) - return - //Other interface stuff. - if(istype(I, /obj/item/grab)) - var/obj/item/grab/G = I - - if(!(ismob(G.affecting))) - return - - if(locked) - to_chat(user, "The suit cycler is locked.") - return - - if(src.contents.len > 0) - to_chat(user, "There is no room inside the cycler for [G.affecting.name].") - return - - visible_message("[user] starts putting [G.affecting.name] into the suit cycler.") - - if(do_after(user, 20, target = G:affecting)) - if(!G || !G.affecting) return - var/mob/M = G.affecting - M.forceMove(src) - src.occupant = M - - src.add_fingerprint(user) - qdel(G) - - src.updateUsrDialog() - - return - else if(istype(I,/obj/item/screwdriver)) - - panel_open = !panel_open - to_chat(user, "You [panel_open ? "open" : "close"] the maintenance panel.") - src.updateUsrDialog() - return - - else if(istype(I,/obj/item/clothing/head/helmet/space)) - - if(locked) - to_chat(user, "The suit cycler is locked.") - return - - if(helmet) - to_chat(user, "The cycler already contains a helmet.") - return - - to_chat(user, "You fit \the [I] into the suit cycler.") - user.drop_item() - I.loc = src - helmet = I - - src.update_icon() - src.updateUsrDialog() - return - - else if(istype(I,/obj/item/clothing/suit/space/hardsuit)) - - if(locked) - to_chat(user, "The suit cycler is locked.") - return - - if(suit) - to_chat(user, "The cycler already contains a hardsuit.") - return - - var/obj/item/clothing/suit/space/hardsuit/S = I - - if(S.helmet) - to_chat(user, "\The [S] will not fit into the cycler with a helmet attached.") - return - - if(S.boots) - to_chat(user, "\The [S] will not fit into the cycler with boots attached.") - return - - to_chat(user, "You fit \the [I] into the suit cycler.") - user.drop_item() - I.loc = src - suit = I - - src.update_icon() - src.updateUsrDialog() - return - - ..() - -/obj/machinery/suit_cycler/emag_act(user as mob) - if(emagged) - to_chat(user, "The cycler has already been subverted.") - return - - //Clear the access reqs, disable the safeties, and open up all paintjobs. - to_chat(user, "You run the sequencer across the interface, corrupting the operating protocols.") - departments = list("Engineering","Mining","Medical","Security","Atmos","^%###^%$") - emagged = 1 - safeties = 0 - req_access = list() - return - -/obj/machinery/suit_cycler/attack_hand(mob/user as mob) - - add_fingerprint(user) - - if(..() || stat & (BROKEN|NOPOWER)) - return - - if(!user.IsAdvancedToolUser()) - return 0 - - if(electrified != 0) - if(src.shock(user, 100)) - return - - usr.set_machine(src) - - var/dat = "Suit Cycler Interface" - - if(src.active) - dat+= "
The [model_text ? "[model_text] " : ""]suit cycler is currently in use. Please wait..." - - else if(locked) - dat += "
The [model_text ? "[model_text] " : ""]suit cycler is currently locked. Please contact your system administrator." - if(src.allowed(usr)) - dat += "
\[unlock unit\]" - else - dat += "

Suit cycler

" - dat += "Welcome to the [model_text ? "[model_text] " : ""]suit cycler control panel. \[lock unit\]
" - - dat += "

Maintenance

" - dat += "Helmet: [helmet ? "\the [helmet]" : "no helmet stored" ]. \[eject\]
" - dat += "Suit: [suit ? "\the [suit]" : "no suit stored" ]. \[eject\]" - - if(suit && istype(suit)) - dat += "[(suit.damage ? " \[repair\]" : "")]" - - dat += "
UV decontamination systems: SYSTEM ERROR" : "green'>READY"]
" - dat += "Output level: [radiation_level]
" - dat += "\[select power level\] \[begin decontamination cycle\]

" - - dat += "

Customisation

" - dat += "Target product: [target_department], [target_species]." - dat += "
\[apply customisation routine\]


" - -/* if(panel_open) - var/list/vendwires = list( - "Violet" = 1, - "Orange" = 2, - "Goldenrod" = 3, - ) - dat += "

Access Panel

" - for(var/wiredesc in vendwires) - var/is_uncut = src.wires & APCWireColorToFlag[vendwires[wiredesc]] - dat += "[wiredesc] wire: " - if(!is_uncut) - dat += "Mend" - else - dat += "Cut " - dat += "Pulse " - dat += "
" - - dat += "
" - dat += "The orange light is [(electrified == 0) ? "off" : "on"].
" - dat += "The red light is [safeties ? "blinking" : "off"].
" - dat += "The yellow light is [locked ? "on" : "off"].
" */ - - var/datum/browser/popup = new(user, "suit_cycler", name, 400, 400) - popup.set_content(dat) - popup.open(0) - onclose(user, "suit_cycler") - return - -/obj/machinery/suit_cycler/Topic(href, href_list) - if(href_list["eject_suit"]) - if(!suit) return - suit.loc = get_turf(src) - suit = null - else if(href_list["eject_helmet"]) - if(!helmet) return - helmet.loc = get_turf(src) - helmet = null - else if(href_list["select_department"]) - var/choice = input("Please select the target department paintjob.","Suit cycler",null) as null|anything in departments - if(choice) target_department = choice - else if(href_list["select_species"]) - var/choice = input("Please select the target species configuration.","Suit cycler",null) as null|anything in species - if(choice) target_species = choice - else if(href_list["select_rad_level"]) - var/choices = list(1,2,3) - if(emagged) - choices = list(1,2,3,4,5) - radiation_level = input("Please select the desired radiation level.","Suit cycler",null) as null|anything in choices - else if(href_list["repair_suit"]) - - if(!suit) return - active = 1 - spawn(100) - repair_suit() - finished_job() - - else if(href_list["apply_paintjob"]) - - if(!suit && !helmet) return - active = 1 - spawn(100) - apply_paintjob() - finished_job() - - else if(href_list["toggle_safties"]) - safeties = !safeties - - else if(href_list["toggle_lock"]) - - if(src.allowed(usr)) - locked = !locked - to_chat(usr, "You [locked ? "" : "un"]lock \the [src].") - else - to_chat(usr, "Access denied.") - - else if(href_list["begin_decontamination"]) - - if(safeties && occupant) - to_chat(usr, "The cycler has detected an occupant. Please remove the occupant before commencing the decontamination cycle.") - return - - active = 1 - irradiating = 10 - src.updateUsrDialog() - - sleep(10) - - if(helmet) - if(radiation_level > 1) - helmet.clean_blood() - - if(suit) - if(radiation_level > 1) - suit.clean_blood() - -/* else if((href_list["cutwire"]) && (src.panel_open)) - var/twire = text2num(href_list["cutwire"]) - if(!( istype(usr.get_active_hand(), /obj/item/wirecutters) )) - to_chat(usr, "You need wirecutters!") - return - if(src.isWireColorCut(twire)) - src.mend(twire) - else - src.cut(twire) - - else if((href_list["pulsewire"]) && (src.panel_open)) - var/twire = text2num(href_list["pulsewire"]) - if(!istype(usr.get_active_hand(), /obj/item/multitool)) - to_chat(usr, "You need a multitool!") - return - if(src.isWireColorCut(twire)) - to_chat(usr, "You can't pulse a cut wire.") - return - else - src.pulse(twire)*/ - - src.updateUsrDialog() - return - -/obj/machinery/suit_cycler/process() - - if(electrified > 0) - electrified-- - - if(!active) - return - - if(active && stat & (BROKEN|NOPOWER)) - active = 0 - irradiating = 0 - electrified = 0 - return - - if(irradiating == 1) - finished_job() - irradiating = 0 - return - - irradiating-- - - if(occupant) - if(prob(radiation_level*2)) occupant.emote("scream") - if(radiation_level > 2) - occupant.take_organ_damage(0,radiation_level*2 + rand(1,3)) - if(radiation_level > 1) - occupant.take_organ_damage(0,radiation_level + rand(1,3)) - occupant.apply_effect(radiation_level*10, IRRADIATE) - -/obj/machinery/suit_cycler/proc/finished_job() - var/turf/T = get_turf(src) - T.visible_message("\The [src] pings loudly.") - icon_state = initial(icon_state) - active = 0 - src.updateUsrDialog() - -/obj/machinery/suit_cycler/proc/repair_suit() - if(!suit || !suit.damage || !suit.can_breach) - return - - suit.breaches = list() - suit.calc_breach_damage() - - return - -/obj/machinery/suit_cycler/verb/leave() - set name = "Eject Cycler" - set category = "Object" - set src in oview(1) - - if(usr.stat != 0) - return - - eject_occupant(usr) - -/obj/machinery/suit_cycler/proc/eject_occupant(mob/user as mob) - - if(locked || active) - to_chat(user, "The cycler is locked.") - return - - if(!occupant) - return - - occupant.forceMove(loc) - occupant = null - - add_fingerprint(usr) - updateUsrDialog() - update_icon() - - return -/* -//HACKING PROCS, MOSTLY COPIED FROM VENDING MACHINES -/obj/machinery/suit_cycler/proc/isWireColorCut(var/wireColor) - var/wireFlag = APCWireColorToFlag[wireColor] - return ((src.wires & wireFlag) == 0) - -/obj/machinery/suit_cycler/proc/isWireCut(var/wireIndex) - var/wireFlag = APCIndexToFlag[wireIndex] - return ((src.wires & wireFlag) == 0) - -/obj/machinery/suit_cycler/proc/cut(var/wireColor) - var/wireFlag = APCWireColorToFlag[wireColor] - var/wireIndex = APCWireColorToIndex[wireColor] - src.wires &= ~wireFlag - switch(wireIndex) - - if(WIRE_EXTEND) - safeties = 0 - if(WIRE_SHOCK) - electrified = -1 - if(WIRE_SCANID) - locked = 0 - -/obj/machinery/suit_cycler/proc/mend(var/wireColor) - var/wireFlag = APCWireColorToFlag[wireColor] - var/wireIndex = APCWireColorToIndex[wireColor] //not used in this function - src.wires |= wireFlag - switch(wireIndex) - if(WIRE_SHOCK) - src.electrified = 0 - -/obj/machinery/suit_cycler/proc/pulse(var/wireColor) - var/wireIndex = APCWireColorToIndex[wireColor] - switch(wireIndex) - if(WIRE_EXTEND) - safeties = !locked - if(WIRE_SHOCK) - electrified = 30 - if(WIRE_SCANID) - locked = !locked -*/ - -//There HAS to be a less bloated way to do this. TODO: some kind of table/icon name coding? ~Z -/obj/machinery/suit_cycler/proc/apply_paintjob() - - if(!target_species || !target_department) - return - - if(target_species) - if(helmet) helmet.refit_for_species(target_species) - if(suit) suit.refit_for_species(target_species) - - switch(target_department) - if("Engineering") - if(helmet) - helmet.name = "engineering hardsuit helmet" - helmet.icon_state = "hardsuit0-engineering" - helmet.item_state = "eng_helm" - helmet.item_color = "engineering" - if(suit) - suit.name = "engineering hardsuit" - suit.icon_state = "hardsuit-engineering" - suit.item_state = "eng_hardsuit" - if("Mining") - if(helmet) - helmet.name = "mining hardsuit helmet" - helmet.icon_state = "hardsuit0-mining" - helmet.item_state = "mining_helm" - helmet.item_color = "mining" - if(suit) - suit.name = "mining hardsuit" - suit.icon_state = "hardsuit-mining" - suit.item_state = "mining_hardsuit" - if("Medical") - if(helmet) - helmet.name = "medical hardsuit helmet" - helmet.icon_state = "hardsuit0-medical" - helmet.item_state = "medical_helm" - helmet.item_color = "medical" - if(suit) - suit.name = "medical hardsuit" - suit.icon_state = "hardsuit-medical" - suit.item_state = "medical_hardsuit" - if("Security") - if(helmet) - helmet.name = "security hardsuit helmet" - helmet.icon_state = "hardsuit0-sec" - helmet.item_state = "sec_helm" - helmet.item_color = "sec" - if(suit) - suit.name = "security hardsuit" - suit.icon_state = "hardsuit-sec" - suit.item_state = "sec_hardsuit" - if("Atmos") - if(helmet) - helmet.name = "atmospherics hardsuit helmet" - helmet.icon_state = "hardsuit0-atmos" - helmet.item_state = "atmos_helm" - helmet.item_color = "atmos" - if(suit) - suit.name = "atmospherics hardsuit" - suit.icon_state = "hardsuit-atmos" - suit.item_state = "atmos_hardsuit" - if("^%###^%$") - if(helmet) - helmet.name = "blood-red hardsuit helmet" - helmet.icon_state = "hardsuit0-syndie" - helmet.item_state = "syndie_helm" - helmet.item_color = "syndie" - if(suit) - suit.name = "blood-red hardsuit" - suit.item_state = "syndie_hardsuit" - suit.icon_state = "hardsuit-syndie" + return attack_hand(user) diff --git a/code/game/machinery/syndicatebeacon.dm b/code/game/machinery/syndicatebeacon.dm index 37d1c3ae93c..304dc7dc639 100644 --- a/code/game/machinery/syndicatebeacon.dm +++ b/code/game/machinery/syndicatebeacon.dm @@ -17,89 +17,89 @@ var/selfdestructing = 0 var/charges = 1 - attack_hand(var/mob/user as mob) - usr.set_machine(src) - var/dat = "Scanning [pick("retina pattern", "voice print", "fingerprints", "dna sequence")]...
Identity confirmed,
" - if(istype(user, /mob/living/carbon/human) || istype(user, /mob/living/silicon/ai)) - if(is_special_character(user)) - dat += "Operative record found. Greetings, Agent [user.name].
" - else if(charges < 1) - dat += "Connection severed.
" - else - var/honorific = "Mr." - if(user.gender == FEMALE) - honorific = "Ms." - dat += "Identity not found in operative database. What can the Syndicate do for you today, [honorific] [user.name]?
" - if(!selfdestructing) - dat += "

\"[pick("I want to switch teams.", "I want to work for you.", "Let me join you.", "I can be of use to you.", "You want me working for you, and here's why...", "Give me an objective.", "How's the 401k over at the Syndicate?")]\"
" - dat += temptext - user << browse(dat, "window=syndbeacon") - onclose(user, "syndbeacon") +/obj/machinery/syndicate_beacon/attack_hand(var/mob/user as mob) + usr.set_machine(src) + var/dat = "Scanning [pick("retina pattern", "voice print", "fingerprints", "dna sequence")]...
Identity confirmed,
" + if(istype(user, /mob/living/carbon/human) || istype(user, /mob/living/silicon/ai)) + if(is_special_character(user)) + dat += "Operative record found. Greetings, Agent [user.name].
" + else if(charges < 1) + dat += "Connection severed.
" + else + var/honorific = "Mr." + if(user.gender == FEMALE) + honorific = "Ms." + dat += "Identity not found in operative database. What can the Syndicate do for you today, [honorific] [user.name]?
" + if(!selfdestructing) + dat += "

\"[pick("I want to switch teams.", "I want to work for you.", "Let me join you.", "I can be of use to you.", "You want me working for you, and here's why...", "Give me an objective.", "How's the 401k over at the Syndicate?")]\"
" + dat += temptext + user << browse(dat, "window=syndbeacon") + onclose(user, "syndbeacon") - Topic(href, href_list) - if(..()) - return 1 - if(href_list["betraitor"]) - if(charges < 1) +/obj/machinery/syndicate_beacon/Topic(href, href_list) + if(..()) + return 1 + if(href_list["betraitor"]) + if(charges < 1) + src.updateUsrDialog() + return + var/mob/M = locate(href_list["traitormob"]) + if(M.mind.special_role) + temptext = "We have no need for you at this time. Have a pleasant day.
" + src.updateUsrDialog() + return + charges -= 1 + switch(rand(1,2)) + if(1) + temptext = "Double-crosser. You planned to betray us from the start. Allow us to repay the favor in kind." src.updateUsrDialog() + spawn(rand(50,200)) selfdestruct() return - var/mob/M = locate(href_list["traitormob"]) - if(M.mind.special_role) - temptext = "We have no need for you at this time. Have a pleasant day.
" - src.updateUsrDialog() - return - charges -= 1 - switch(rand(1,2)) - if(1) - temptext = "Double-crosser. You planned to betray us from the start. Allow us to repay the favor in kind." - src.updateUsrDialog() - spawn(rand(50,200)) selfdestruct() - return - if(istype(M, /mob/living/carbon/human)) - var/mob/living/carbon/human/N = M - ticker.mode.equip_traitor(N) - ticker.mode.traitors += N.mind - N.mind.special_role = SPECIAL_ROLE_TRAITOR - var/objective = "Free Objective" - switch(rand(1,100)) - if(1 to 50) - objective = "Steal [pick("a hand teleporter", "the Captain's antique laser gun", "a jetpack", "the Captain's ID", "the Captain's jumpsuit")]." - if(51 to 60) - objective = "Destroy 70% or more of the station's plasma tanks." - if(61 to 70) - objective = "Cut power to 80% or more of the station's tiles." - if(71 to 80) - objective = "Destroy the AI." - if(81 to 90) - objective = "Kill all monkeys aboard the station." - else - objective = "Make certain at least 80% of the station evacuates on the shuttle." - var/datum/objective/custom_objective = new(objective) - custom_objective.owner = N.mind - N.mind.objectives += custom_objective + if(istype(M, /mob/living/carbon/human)) + var/mob/living/carbon/human/N = M + ticker.mode.equip_traitor(N) + ticker.mode.traitors += N.mind + N.mind.special_role = SPECIAL_ROLE_TRAITOR + var/objective = "Free Objective" + switch(rand(1,100)) + if(1 to 50) + objective = "Steal [pick("a hand teleporter", "the Captain's antique laser gun", "a jetpack", "the Captain's ID", "the Captain's jumpsuit")]." + if(51 to 60) + objective = "Destroy 70% or more of the station's plasma tanks." + if(61 to 70) + objective = "Cut power to 80% or more of the station's tiles." + if(71 to 80) + objective = "Destroy the AI." + if(81 to 90) + objective = "Kill all monkeys aboard the station." + else + objective = "Make certain at least 80% of the station evacuates on the shuttle." + var/datum/objective/custom_objective = new(objective) + custom_objective.owner = N.mind + N.mind.objectives += custom_objective - var/datum/objective/escape/escape_objective = new - escape_objective.owner = N.mind - N.mind.objectives += escape_objective + var/datum/objective/escape/escape_objective = new + escape_objective.owner = N.mind + N.mind.objectives += escape_objective - to_chat(M, "You have joined the ranks of the Syndicate and become a traitor to the station!") + to_chat(M, "You have joined the ranks of the Syndicate and become a traitor to the station!") - message_admins("[key_name_admin(N)] has accepted a traitor objective from a syndicate beacon.") + message_admins("[key_name_admin(N)] has accepted a traitor objective from a syndicate beacon.") - var/obj_count = 1 - for(var/datum/objective/OBJ in M.mind.objectives) - to_chat(M, "Objective #[obj_count]: [OBJ.explanation_text]") - obj_count++ + var/obj_count = 1 + for(var/datum/objective/OBJ in M.mind.objectives) + to_chat(M, "Objective #[obj_count]: [OBJ.explanation_text]") + obj_count++ - src.add_fingerprint(usr) - src.updateUsrDialog() - return + src.add_fingerprint(usr) + src.updateUsrDialog() + return - proc/selfdestruct() - selfdestructing = 1 - spawn() explosion(src.loc, rand(3,8), rand(1,3), 1, 10) +/obj/machinery/syndicate_beacon/proc/selfdestruct() + selfdestructing = 1 + spawn() explosion(src.loc, rand(3,8), rand(1,3), 1, 10) @@ -126,7 +126,7 @@ if(user) to_chat(user, "The connected wire doesn't have enough current.") return - for(var/obj/singularity/singulo in singularities) + for(var/obj/singularity/singulo in GLOB.singularities) if(singulo.z == z) singulo.target = src icon_state = "[icontype]1" @@ -196,4 +196,4 @@ /obj/machinery/power/singularity_beacon/syndicate icontype = "beaconsynd" - icon_state = "beaconsynd0" \ No newline at end of file + icon_state = "beaconsynd0" diff --git a/code/game/machinery/syndicatebomb.dm b/code/game/machinery/syndicatebomb.dm index b5806d1472e..fda550217ad 100644 --- a/code/game/machinery/syndicatebomb.dm +++ b/code/game/machinery/syndicatebomb.dm @@ -39,7 +39,7 @@ /obj/machinery/syndicatebomb/process() if(!active) - fast_processing -= src + GLOB.fast_processing -= src detonation_timer = null next_beep = null countdown.stop() @@ -73,7 +73,7 @@ if(defused && payload in src) payload.defuse() countdown.stop() - fast_processing -= src + GLOB.fast_processing -= src /obj/machinery/syndicatebomb/New() wires = new(src) @@ -86,7 +86,7 @@ /obj/machinery/syndicatebomb/Destroy() QDEL_NULL(wires) QDEL_NULL(countdown) - fast_processing -= src + GLOB.fast_processing -= src return ..() /obj/machinery/syndicatebomb/examine(mob/user) @@ -205,7 +205,7 @@ /obj/machinery/syndicatebomb/proc/activate() active = TRUE - fast_processing += src + GLOB.fast_processing += src countdown.start() next_beep = world.time + 10 detonation_timer = world.time + (timer_set * 10) @@ -546,7 +546,7 @@ /obj/item/syndicatedetonator/attack_self(mob/user) if(timer < world.time) - for(var/obj/machinery/syndicatebomb/B in machines) + for(var/obj/machinery/syndicatebomb/B in GLOB.machines) if(B.active) B.detonation_timer = world.time + BUTTON_DELAY detonated++ diff --git a/code/game/machinery/telecomms/presets.dm b/code/game/machinery/telecomms/presets.dm index 0a12b637a39..539e4565d66 100644 --- a/code/game/machinery/telecomms/presets.dm +++ b/code/game/machinery/telecomms/presets.dm @@ -75,10 +75,10 @@ freq_listening = list(AI_FREQ, COMM_FREQ, ENG_FREQ, SEC_FREQ) //Common and other radio frequencies for people to freely use - New() - for(var/i = PUBLIC_LOW_FREQ, i < PUBLIC_HIGH_FREQ, i += 2) - freq_listening |= i - ..() +/obj/machinery/telecomms/receiver/preset_right/New() + for(var/i = PUBLIC_LOW_FREQ, i < PUBLIC_HIGH_FREQ, i += 2) + freq_listening |= i + ..() /obj/machinery/telecomms/receiver/preset_cent id = "CentComm Receiver" diff --git a/code/game/machinery/teleporter.dm b/code/game/machinery/teleporter.dm index 53148d9de6d..d7bf8f1b329 100644 --- a/code/game/machinery/teleporter.dm +++ b/code/game/machinery/teleporter.dm @@ -178,7 +178,7 @@ var/list/L = list() var/list/areaindex = list() - for(var/obj/item/radio/beacon/R in beacons) + for(var/obj/item/radio/beacon/R in GLOB.beacons) var/turf/T = get_turf(R) if(!T) continue @@ -193,7 +193,7 @@ areaindex[tmpname] = 1 L[tmpname] = R - for(var/obj/item/implant/tracking/I in tracked_implants) + for(var/obj/item/implant/tracking/I in GLOB.tracked_implants) if(!I.implanted || !ismob(I.loc)) continue else @@ -281,9 +281,7 @@ link_power_station() component_parts = list() component_parts += new /obj/item/circuitboard/teleporter_hub(null) - component_parts += new /obj/item/ore/bluespace_crystal/artificial(null) - component_parts += new /obj/item/ore/bluespace_crystal/artificial(null) - component_parts += new /obj/item/ore/bluespace_crystal/artificial(null) + component_parts += new /obj/item/stack/ore/bluespace_crystal/artificial(null, 3) component_parts += new /obj/item/stock_parts/matter_bin(null) RefreshParts() @@ -291,9 +289,7 @@ ..() component_parts = list() component_parts += new /obj/item/circuitboard/teleporter_hub(null) - component_parts += new /obj/item/ore/bluespace_crystal/artificial(null) - component_parts += new /obj/item/ore/bluespace_crystal/artificial(null) - component_parts += new /obj/item/ore/bluespace_crystal/artificial(null) + component_parts += new /obj/item/stack/ore/bluespace_crystal/artificial(null, 3) component_parts += new /obj/item/stock_parts/matter_bin/super(null) RefreshParts() @@ -478,8 +474,7 @@ ..() component_parts = list() component_parts += new /obj/item/circuitboard/teleporter_station(null) - component_parts += new /obj/item/ore/bluespace_crystal/artificial(null) - component_parts += new /obj/item/ore/bluespace_crystal/artificial(null) + component_parts += new /obj/item/stack/ore/bluespace_crystal/artificial(null, 2) component_parts += new /obj/item/stock_parts/capacitor(null) component_parts += new /obj/item/stock_parts/capacitor(null) component_parts += new /obj/item/stock_parts/console_screen(null) diff --git a/code/game/mecha/equipment/mecha_equipment.dm b/code/game/mecha/equipment/mecha_equipment.dm index 62928c95be5..743b8a097e6 100644 --- a/code/game/mecha/equipment/mecha_equipment.dm +++ b/code/game/mecha/equipment/mecha_equipment.dm @@ -31,19 +31,13 @@ /obj/item/mecha_parts/mecha_equipment/Destroy()//missiles detonating, teleporter creating singularity? if(chassis) - detach(chassis) - chassis.equipment -= src - listclearnulls(chassis.equipment) - if(chassis.selected == src) - chassis.selected = null - src.update_chassis_page() chassis.occupant_message("The [src] is destroyed!") chassis.log_append_to_last("[src] is destroyed.",1) if(istype(src, /obj/item/mecha_parts/mecha_equipment/weapon)) chassis.occupant << sound('sound/mecha/weapdestr.ogg', volume = 50) else chassis.occupant << sound('sound/mecha/critdestr.ogg', volume = 50) - chassis = null + detach(chassis) return ..() /obj/item/mecha_parts/mecha_equipment/proc/critfail() diff --git a/code/game/mecha/equipment/tools/medical_tools.dm b/code/game/mecha/equipment/tools/medical_tools.dm index a8e854467a2..9dc6c8e6f11 100644 --- a/code/game/mecha/equipment/tools/medical_tools.dm +++ b/code/game/mecha/equipment/tools/medical_tools.dm @@ -519,3 +519,50 @@ for(var/reagent in processed_reagents) reagents.add_reagent(reagent,amount) chassis.use_power(energy_drain) + +/obj/item/mecha_parts/mecha_equipment/medical/rescue_jaw + name = "rescue jaw" + desc = "Emergency rescue jaws, designed to help first responders reach their patients. Opens doors and removes obstacles." + icon_state = "mecha_clamp" //can work, might use a blue resprite later but I think it works for now + origin_tech = "materials=2;engineering=2" //kind of sad, but identical to jaws of life + equip_cooldown = 15 + energy_drain = 10 + var/dam_force = 20 + + +/obj/item/mecha_parts/mecha_equipment/medical/rescue_jaw/action(atom/target) + if(!action_checks(target)) + return + if(istype(target, /obj)) + if(!istype(target, /obj/machinery/door))//early return if we're not trying to open a door + return + var/obj/machinery/door/D = target //the door we want to open + D.try_to_crowbar(src, chassis.occupant)//use the door's crowbar function + if(isliving(target)) //interact with living beings + var/mob/living/M = target + if(chassis.occupant.a_intent == INTENT_HARM)//the patented, medical rescue claw is incapable of doing harm. Worry not. + target.visible_message("[chassis] gently boops [target] on the nose, its hydraulics hissing as safety overrides slow a brutal punch down at the last second.", \ + "") + else + push_aside(chassis, M)//out of the way, I have people to save! + occupant_message("You gently push [target] out of the way.") + chassis.visible_message("[chassis] gently pushes [target] out of the way.") + +/obj/item/mecha_parts/mecha_equipment/medical/rescue_jaw/proc/push_aside(obj/mecha/M, mob/living/L) + switch(get_dir(M, L)) + if(NORTH, SOUTH) + if(prob(50)) + step(L, WEST) + else + step(L, EAST) + if(WEST, EAST) + if(prob(50)) + step(L, NORTH) + else + step(L, SOUTH) + +/obj/item/mecha_parts/mecha_equipment/medical/rescue_jaw/can_attach(obj/mecha/M) + if(istype(M, /obj/mecha/medical) || istype(M, /obj/mecha/working/ripley/firefighter)) //Odys or firefighters + if(M.equipment.len < M.max_equip) + return TRUE + return FALSE diff --git a/code/game/mecha/equipment/tools/mining_tools.dm b/code/game/mecha/equipment/tools/mining_tools.dm index 546bb6ae269..63e70626a8d 100644 --- a/code/game/mecha/equipment/tools/mining_tools.dm +++ b/code/game/mecha/equipment/tools/mining_tools.dm @@ -73,7 +73,7 @@ if(locate(/obj/item/mecha_parts/mecha_equipment/hydraulic_clamp) in chassis.equipment) var/obj/structure/ore_box/ore_box = locate(/obj/structure/ore_box) in chassis:cargo if(ore_box) - for(var/obj/item/ore/ore in range(1, chassis)) + for(var/obj/item/stack/ore/ore in range(1, chassis)) if(get_dir(chassis, ore) & chassis.dir) ore.Move(ore_box) diff --git a/code/game/mecha/equipment/tools/other_tools.dm b/code/game/mecha/equipment/tools/other_tools.dm index 501b41be4cb..a42e76015c1 100644 --- a/code/game/mecha/equipment/tools/other_tools.dm +++ b/code/game/mecha/equipment/tools/other_tools.dm @@ -69,7 +69,7 @@ P.failchance = 0 P.icon_state = "anom" P.name = "wormhole" - message_admins("[key_name_admin(chassis.occupant, chassis.occupant.client)](?) (FLW) used a Wormhole Generator in ([loc.x],[loc.y],[loc.z] - JMP)",0,1) + message_admins("[key_name_admin(chassis.occupant, chassis.occupant.client)]([ADMIN_QUE(chassis.occupant,"?")]) ([ADMIN_FLW(chassis.occupant,"FLW")]) used a Wormhole Generator in ([loc.x],[loc.y],[loc.z] - JMP)",0,1) log_game("[key_name(chassis.occupant)] used a Wormhole Generator in ([loc.x],[loc.y],[loc.z])") src = null spawn(rand(150,300)) diff --git a/code/game/mecha/equipment/tools/work_tools.dm b/code/game/mecha/equipment/tools/work_tools.dm index ca327fe6ef7..d119469d55a 100644 --- a/code/game/mecha/equipment/tools/work_tools.dm +++ b/code/game/mecha/equipment/tools/work_tools.dm @@ -63,8 +63,8 @@ start_cooldown() else step_away(M,chassis) - occupant_message("You push [target] out of the way.") - chassis.visible_message("[chassis] pushes [target] out of the way.") + occupant_message("You push [target] out of the way.") + chassis.visible_message("[chassis] pushes [target] out of the way.") return 1 @@ -198,11 +198,11 @@ usesound = 'sound/items/Deconstruct.ogg' /obj/item/mecha_parts/mecha_equipment/rcd/New() - rcd_list += src + GLOB.rcd_list += src ..() /obj/item/mecha_parts/mecha_equipment/rcd/Destroy() - rcd_list -= src + GLOB.rcd_list -= src return ..() /obj/item/mecha_parts/mecha_equipment/rcd/action(atom/target) diff --git a/code/game/mecha/mech_fabricator.dm b/code/game/mecha/mech_fabricator.dm index 65118f8c491..86640958a72 100644 --- a/code/game/mecha/mech_fabricator.dm +++ b/code/game/mecha/mech_fabricator.dm @@ -39,7 +39,7 @@ /obj/machinery/mecha_part_fabricator/New() var/datum/component/material_container/materials = AddComponent(/datum/component/material_container, list(MAT_METAL, MAT_GLASS, MAT_SILVER, MAT_GOLD, MAT_DIAMOND, MAT_PLASMA, MAT_URANIUM, MAT_BANANIUM, MAT_TRANQUILLITE, MAT_TITANIUM, MAT_BLUESPACE), 0, - FALSE, list(/obj/item/stack, /obj/item/ore/bluespace_crystal), CALLBACK(src, .proc/is_insertion_ready), CALLBACK(src, .proc/AfterMaterialInsert)) + FALSE, list(/obj/item/stack, /obj/item/stack/ore/bluespace_crystal), CALLBACK(src, .proc/is_insertion_ready), CALLBACK(src, .proc/AfterMaterialInsert)) materials.precise_insertion = TRUE ..() component_parts = list() diff --git a/code/game/mecha/mecha.dm b/code/game/mecha/mecha.dm index dd7993247b1..64874762050 100644 --- a/code/game/mecha/mecha.dm +++ b/code/game/mecha/mecha.dm @@ -41,7 +41,7 @@ var/datum/effect_system/spark_spread/spark_system = new var/lights = 0 var/lights_power = 6 - var/emagged = 0 + var/emagged = FALSE //inner atmos var/use_internal_tank = 0 @@ -95,9 +95,9 @@ processing_objects.Add(src) removeVerb(/obj/mecha/verb/disconnect_from_port) - poi_list |= src + GLOB.poi_list |= src log_message("[src] created.") - mechas_list += src //global mech list + GLOB.mechas_list += src //global mech list prepare_huds() for(var/datum/atom_hud/data/diagnostic/diag_hud in huds) diag_hud.add_to_hud(src) @@ -497,8 +497,8 @@ log_message("Attack by simple animal. Attacker - [user].",1) user.changeNext_move(CLICK_CD_MELEE) user.do_attack_animation(src) - if(user.melee_damage_upper == 0) - user.custom_emote(1, "[user.friendly] [src]") + if((user.a_intent == INTENT_HELP && user.ckey) || user.melee_damage_upper == 0) + user.custom_emote(1, "[user.friendly] [src].") else user.do_attack_animation(src) if(!prob(deflect_chance)) @@ -616,7 +616,7 @@ QDEL_NULL(internal_tank) processing_objects.Remove(src) - poi_list.Remove(src) + GLOB.poi_list.Remove(src) equipment.Cut() cell = null internal_tank = null @@ -628,7 +628,7 @@ cabin_air = null QDEL_NULL(spark_system) - mechas_list -= src //global mech list + GLOB.mechas_list -= src //global mech list return ..() /obj/mecha/ex_act(severity) @@ -851,14 +851,8 @@ check_for_internal_damage(list(MECHA_INT_TEMP_CONTROL,MECHA_INT_TANK_BREACH,MECHA_INT_CONTROL_LOST)) -/obj/mecha/emag_act(user as mob) - if(istype(src, /obj/mecha/working/ripley) && emagged == 0) - emagged = 1 - to_chat(usr, "You slide the card through the [src]'s ID slot.") - playsound(loc, "sparks", 100, 1) - desc += "
The mech's equipment slots spark dangerously!" - else - to_chat(usr, "The [src]'s ID slot rejects the card.") +/obj/mecha/emag_act(mob/user) + to_chat(user, "[src]'s ID slot rejects the card.") return diff --git a/code/game/mecha/mecha_construction_paths.dm b/code/game/mecha/mecha_construction_paths.dm index d3b88c2b24c..59de4cc45b4 100644 --- a/code/game/mecha/mecha_construction_paths.dm +++ b/code/game/mecha/mecha_construction_paths.dm @@ -1,3 +1,5 @@ +#define STANDARD_STACK_AMOUNT 5 + //////////////////////////////// ///// Construction datums ////// //////////////////////////////// @@ -30,11 +32,11 @@ return 0 else if(istype(used_atom, /obj/item/stack)) var/obj/item/stack/S = used_atom - if(S.amount < 5) + if(S.amount < STANDARD_STACK_AMOUNT) to_chat(user, ("There's not enough material in this stack.")) return 0 else - S.use(5) + S.use(STANDARD_STACK_AMOUNT) return 1 /datum/construction/reversible/mecha/custom_action(index as num, diff as num, atom/used_atom, mob/user as mob) @@ -65,11 +67,11 @@ return 0 else if(istype(used_atom, /obj/item/stack)) var/obj/item/stack/S = used_atom - if(S.amount < 5) + if(S.amount < STANDARD_STACK_AMOUNT) to_chat(user, ("There's not enough material in this stack.")) return 0 else - S.use(5) + S.use(STANDARD_STACK_AMOUNT) return 1 @@ -1289,7 +1291,7 @@ "backkey"=/obj/item/crowbar, "desc"="The bluespace crystal is installed."), //10 - list("key"=/obj/item/ore/bluespace_crystal, + list("key"=/obj/item/stack/ore/bluespace_crystal, "backkey"=/obj/item/screwdriver, "desc"="Super capacitor is secured."), //11 @@ -1467,23 +1469,22 @@ holder.icon_state = "phazon12" if(10) if(diff==FORWARD) - user.visible_message("[user] installs the bluespace crystal.", "You install the bluespace crystal.") - qdel(used_atom) + user.visible_message("[user] installs the bluespace crystal.", "You install the bluespace crystals.") holder.icon_state = "phazon15" else user.visible_message("[user] unsecures the super capacitor from the [holder].", "You unsecure the super capacitor from the [holder].") holder.icon_state = "phazon13" if(9) if(diff==FORWARD) - user.visible_message("[user] connects the bluespace crystal.", "You connect the bluespace crystal.") + user.visible_message("[user] connects the bluespace crystal.", "You connect the bluespace crystals.") holder.icon_state = "phazon16" else user.visible_message("[user] removes the bluespace crystal from the [holder].", "You remove the bluespace crystal from the [holder].") - new /obj/item/ore/bluespace_crystal(get_turf(holder)) + new /obj/item/stack/ore/bluespace_crystal(get_turf(holder), new_amount = 5) holder.icon_state = "phazon14" if(8) if(diff==FORWARD) - user.visible_message("[user] engages the bluespace crystal.", "You engage the bluespace crystal.") + user.visible_message("[user] engages the bluespace crystal.", "You engage the bluespace crystals.") holder.icon_state = "phazon17" else user.visible_message("[user] disconnects the bluespace crystal from the [holder].", "You disconnect the bluespace crystal from the [holder].") @@ -1493,7 +1494,7 @@ user.visible_message("[user] installs the phase armor layer to the [holder].", "You install the phase armor layer to the [holder].") holder.icon_state = "phazon18" else - user.visible_message("[user] disengages the bluespace crystal.", "You disengage the bluespace crystal.") + user.visible_message("[user] disengages the bluespace crystal.", "You disengage the bluespace crystals.") holder.icon_state = "phazon16" if(6) if(diff==FORWARD) diff --git a/code/game/mecha/mecha_parts.dm b/code/game/mecha/mecha_parts.dm index a5a1bb95bc1..75b9fc6b1b8 100644 --- a/code/game/mecha/mecha_parts.dm +++ b/code/game/mecha/mecha_parts.dm @@ -33,9 +33,9 @@ /obj/item/mecha_parts/chassis/ripley name = "Ripley Chassis" - New() - ..() - construct = new /datum/construction/mecha/ripley_chassis(src) +/obj/item/mecha_parts/chassis/ripley/New() + ..() + construct = new /datum/construction/mecha/ripley_chassis(src) /obj/item/mecha_parts/part/ripley_torso name="Ripley Torso" @@ -68,9 +68,9 @@ /obj/item/mecha_parts/chassis/gygax name = "Gygax Chassis" - New() - ..() - construct = new /datum/construction/mecha/gygax_chassis(src) +/obj/item/mecha_parts/chassis/gygax/New() + ..() + construct = new /datum/construction/mecha/gygax_chassis(src) /obj/item/mecha_parts/part/gygax_torso name="Gygax Torso" @@ -117,9 +117,9 @@ /obj/item/mecha_parts/chassis/durand name = "Durand Chassis" - New() - ..() - construct = new /datum/construction/mecha/durand_chassis(src) +/obj/item/mecha_parts/chassis/durand/New() + ..() + construct = new /datum/construction/mecha/durand_chassis(src) /obj/item/mecha_parts/part/durand_torso name="Durand Torso" @@ -163,39 +163,18 @@ /obj/item/mecha_parts/chassis/firefighter name = "Firefighter Chassis" - New() - ..() - construct = new /datum/construction/mecha/firefighter_chassis(src) -/* -/obj/item/mecha_parts/part/firefighter_torso - name="Ripley-on-Fire Torso" - icon_state = "ripley_harness" - -/obj/item/mecha_parts/part/firefighter_left_arm - name="Ripley-on-Fire Left Arm" - icon_state = "ripley_l_arm" - -/obj/item/mecha_parts/part/firefighter_right_arm - name="Ripley-on-Fire Right Arm" - icon_state = "ripley_r_arm" - -/obj/item/mecha_parts/part/firefighter_left_leg - name="Ripley-on-Fire Left Leg" - icon_state = "ripley_l_leg" - -/obj/item/mecha_parts/part/firefighter_right_leg - name="Ripley-on-Fire Right Leg" - icon_state = "ripley_r_leg" -*/ +/obj/item/mecha_parts/chassis/firefighter/New() + ..() + construct = new /datum/construction/mecha/firefighter_chassis(src) ////////// HONK /obj/item/mecha_parts/chassis/honker name = "H.O.N.K Chassis" - New() - ..() - construct = new /datum/construction/mecha/honker_chassis(src) +/obj/item/mecha_parts/chassis/honker/New() + ..() + construct = new /datum/construction/mecha/honker_chassis(src) /obj/item/mecha_parts/part/honker_torso name="H.O.N.K Torso" @@ -275,9 +254,9 @@ /obj/item/mecha_parts/chassis/phazon name = "Phazon Chassis" - New() - ..() - construct = new /datum/construction/mecha/phazon_chassis(src) +/obj/item/mecha_parts/chassis/phazon/New() + ..() + construct = new /datum/construction/mecha/phazon_chassis(src) /obj/item/mecha_parts/part/phazon_torso name="Phazon Torso" @@ -319,9 +298,9 @@ /obj/item/mecha_parts/chassis/odysseus name = "Odysseus Chassis" - New() - ..() - construct = new /datum/construction/mecha/odysseus_chassis(src) +/obj/item/mecha_parts/chassis/odysseus/New() + ..() + construct = new /datum/construction/mecha/odysseus_chassis(src) /obj/item/mecha_parts/part/odysseus_head name="Odysseus Head" diff --git a/code/game/mecha/mecha_wreckage.dm b/code/game/mecha/mecha_wreckage.dm index 204fcfc67f2..d108311b99d 100644 --- a/code/game/mecha/mecha_wreckage.dm +++ b/code/game/mecha/mecha_wreckage.dm @@ -15,10 +15,10 @@ var/list/crowbar_salvage var/salvage_num = 5 - New() - ..() - crowbar_salvage = new - return +/obj/effect/decal/mecha_wreckage/New() + ..() + crowbar_salvage = new + return /obj/effect/decal/mecha_wreckage/ex_act(severity) if(severity < 2) @@ -86,20 +86,20 @@ name = "Gygax wreckage" icon_state = "gygax-broken" - New() - ..() - var/list/parts = list(/obj/item/mecha_parts/part/gygax_torso, - /obj/item/mecha_parts/part/gygax_head, - /obj/item/mecha_parts/part/gygax_left_arm, - /obj/item/mecha_parts/part/gygax_right_arm, - /obj/item/mecha_parts/part/gygax_left_leg, - /obj/item/mecha_parts/part/gygax_right_leg) - for(var/i=0;i<2;i++) - if(!isemptylist(parts) && prob(40)) - var/part = pick(parts) - welder_salvage += part - parts -= part - return +/obj/effect/decal/mecha_wreckage/gygax/New() + ..() + var/list/parts = list(/obj/item/mecha_parts/part/gygax_torso, + /obj/item/mecha_parts/part/gygax_head, + /obj/item/mecha_parts/part/gygax_left_arm, + /obj/item/mecha_parts/part/gygax_right_arm, + /obj/item/mecha_parts/part/gygax_left_leg, + /obj/item/mecha_parts/part/gygax_right_leg) + for(var/i=0;i<2;i++) + if(!isemptylist(parts) && prob(40)) + var/part = pick(parts) + welder_salvage += part + parts -= part + return /obj/effect/decal/mecha_wreckage/gygax/dark name = "Dark Gygax wreckage" @@ -126,38 +126,38 @@ name = "Ripley wreckage" icon_state = "ripley-broken" - New() - ..() - var/list/parts = list(/obj/item/mecha_parts/part/ripley_torso, - /obj/item/mecha_parts/part/ripley_left_arm, - /obj/item/mecha_parts/part/ripley_right_arm, - /obj/item/mecha_parts/part/ripley_left_leg, - /obj/item/mecha_parts/part/ripley_right_leg) - for(var/i=0;i<2;i++) - if(!isemptylist(parts) && prob(40)) - var/part = pick(parts) - welder_salvage += part - parts -= part - return +/obj/effect/decal/mecha_wreckage/ripley/New() + ..() + var/list/parts = list(/obj/item/mecha_parts/part/ripley_torso, + /obj/item/mecha_parts/part/ripley_left_arm, + /obj/item/mecha_parts/part/ripley_right_arm, + /obj/item/mecha_parts/part/ripley_left_leg, + /obj/item/mecha_parts/part/ripley_right_leg) + for(var/i=0;i<2;i++) + if(!isemptylist(parts) && prob(40)) + var/part = pick(parts) + welder_salvage += part + parts -= part + return /obj/effect/decal/mecha_wreckage/ripley/firefighter name = "Firefighter wreckage" icon_state = "firefighter-broken" - New() - ..() - var/list/parts = list(/obj/item/mecha_parts/part/ripley_torso, - /obj/item/mecha_parts/part/ripley_left_arm, - /obj/item/mecha_parts/part/ripley_right_arm, - /obj/item/mecha_parts/part/ripley_left_leg, - /obj/item/mecha_parts/part/ripley_right_leg, - /obj/item/clothing/suit/fire) - for(var/i=0;i<2;i++) - if(!isemptylist(parts) && prob(40)) - var/part = pick(parts) - welder_salvage += part - parts -= part - return +/obj/effect/decal/mecha_wreckage/ripley/firefighter/New() + ..() + var/list/parts = list(/obj/item/mecha_parts/part/ripley_torso, + /obj/item/mecha_parts/part/ripley_left_arm, + /obj/item/mecha_parts/part/ripley_right_arm, + /obj/item/mecha_parts/part/ripley_left_leg, + /obj/item/mecha_parts/part/ripley_right_leg, + /obj/item/clothing/suit/fire) + for(var/i=0;i<2;i++) + if(!isemptylist(parts) && prob(40)) + var/part = pick(parts) + welder_salvage += part + parts -= part + return /obj/effect/decal/mecha_wreckage/ripley/deathripley name = "Death-Ripley wreckage" @@ -167,42 +167,42 @@ name = "Honker wreckage" icon_state = "honker-broken" - New() - ..() - var/list/parts = list( - /obj/item/mecha_parts/chassis/honker, - /obj/item/mecha_parts/part/honker_torso, - /obj/item/mecha_parts/part/honker_head, - /obj/item/mecha_parts/part/honker_left_arm, - /obj/item/mecha_parts/part/honker_right_arm, - /obj/item/mecha_parts/part/honker_left_leg, - /obj/item/mecha_parts/part/honker_right_leg) - for(var/i=0;i<2;i++) - if(!isemptylist(parts) && prob(40)) - var/part = pick(parts) - welder_salvage += part - parts -= part - return +/obj/effect/decal/mecha_wreckage/honker/New() + ..() + var/list/parts = list( + /obj/item/mecha_parts/chassis/honker, + /obj/item/mecha_parts/part/honker_torso, + /obj/item/mecha_parts/part/honker_head, + /obj/item/mecha_parts/part/honker_left_arm, + /obj/item/mecha_parts/part/honker_right_arm, + /obj/item/mecha_parts/part/honker_left_leg, + /obj/item/mecha_parts/part/honker_right_leg) + for(var/i=0;i<2;i++) + if(!isemptylist(parts) && prob(40)) + var/part = pick(parts) + welder_salvage += part + parts -= part + return /obj/effect/decal/mecha_wreckage/durand name = "Durand wreckage" icon_state = "durand-broken" - New() - ..() - var/list/parts = list( - /obj/item/mecha_parts/part/durand_torso, - /obj/item/mecha_parts/part/durand_head, - /obj/item/mecha_parts/part/durand_left_arm, - /obj/item/mecha_parts/part/durand_right_arm, - /obj/item/mecha_parts/part/durand_left_leg, - /obj/item/mecha_parts/part/durand_right_leg) - for(var/i=0;i<2;i++) - if(!isemptylist(parts) && prob(40)) - var/part = pick(parts) - welder_salvage += part - parts -= part - return +/obj/effect/decal/mecha_wreckage/durand/New() + ..() + var/list/parts = list( + /obj/item/mecha_parts/part/durand_torso, + /obj/item/mecha_parts/part/durand_head, + /obj/item/mecha_parts/part/durand_left_arm, + /obj/item/mecha_parts/part/durand_right_arm, + /obj/item/mecha_parts/part/durand_left_leg, + /obj/item/mecha_parts/part/durand_right_leg) + for(var/i=0;i<2;i++) + if(!isemptylist(parts) && prob(40)) + var/part = pick(parts) + welder_salvage += part + parts -= part + return /obj/effect/decal/mecha_wreckage/durand/old @@ -218,18 +218,18 @@ name = "Odysseus wreckage" icon_state = "odysseus-broken" - New() - ..() - var/list/parts = list( - /obj/item/mecha_parts/part/odysseus_torso, - /obj/item/mecha_parts/part/odysseus_head, - /obj/item/mecha_parts/part/odysseus_left_arm, - /obj/item/mecha_parts/part/odysseus_right_arm, - /obj/item/mecha_parts/part/odysseus_left_leg, - /obj/item/mecha_parts/part/odysseus_right_leg) - for(var/i=0;i<2;i++) - if(!isemptylist(parts) && prob(40)) - var/part = pick(parts) - welder_salvage += part - parts -= part - return +/obj/effect/decal/mecha_wreckage/odysseus/New() + ..() + var/list/parts = list( + /obj/item/mecha_parts/part/odysseus_torso, + /obj/item/mecha_parts/part/odysseus_head, + /obj/item/mecha_parts/part/odysseus_left_arm, + /obj/item/mecha_parts/part/odysseus_right_arm, + /obj/item/mecha_parts/part/odysseus_left_leg, + /obj/item/mecha_parts/part/odysseus_right_leg) + for(var/i=0;i<2;i++) + if(!isemptylist(parts) && prob(40)) + var/part = pick(parts) + welder_salvage += part + parts -= part + return diff --git a/code/game/mecha/medical/odysseus.dm b/code/game/mecha/medical/odysseus.dm index 333c05fdd5d..d0fcb0f99be 100644 --- a/code/game/mecha/medical/odysseus.dm +++ b/code/game/mecha/medical/odysseus.dm @@ -42,5 +42,4 @@ A.remove_hud_from(H) builtin_hud_user = 0 - . = ..() - + . = ..() \ No newline at end of file diff --git a/code/game/mecha/working/ripley.dm b/code/game/mecha/working/ripley.dm index d29bf2ae460..407c9cd63dc 100644 --- a/code/game/mecha/working/ripley.dm +++ b/code/game/mecha/working/ripley.dm @@ -180,4 +180,13 @@ else step_in = 5 for(var/obj/item/mecha_parts/mecha_equipment/drill/drill in equipment) - drill.equip_cooldown = initial(drill.equip_cooldown) \ No newline at end of file + drill.equip_cooldown = initial(drill.equip_cooldown) + +/obj/mecha/working/ripley/emag_act(mob/user) + if(!emagged) + emagged = TRUE + to_chat(user, "You slide the card through [src]'s ID slot.") + playsound(loc, "sparks", 100, 1) + desc += "
The mech's equipment slots spark dangerously!" + else + to_chat(user, "[src]'s ID slot rejects the card.") diff --git a/code/game/objects/effects/anomalies.dm b/code/game/objects/effects/anomalies.dm index 90e40052e23..41d2c256c2b 100644 --- a/code/game/objects/effects/anomalies.dm +++ b/code/game/objects/effects/anomalies.dm @@ -18,11 +18,11 @@ var/new_frequency = sanitize_frequency(rand(PUBLIC_LOW_FREQ, PUBLIC_HIGH_FREQ)) aSignal.set_frequency(new_frequency) - poi_list |= src + GLOB.poi_list |= src /obj/effect/anomaly/Destroy() QDEL_NULL(aSignal) - poi_list.Remove(src) + GLOB.poi_list.Remove(src) return ..() /obj/effect/anomaly/proc/anomalyEffect() diff --git a/code/game/objects/effects/decals/Cleanable/misc.dm b/code/game/objects/effects/decals/Cleanable/misc.dm index f9ac4e6ae36..aef1999ff69 100644 --- a/code/game/objects/effects/decals/Cleanable/misc.dm +++ b/code/game/objects/effects/decals/Cleanable/misc.dm @@ -1,197 +1,203 @@ -/obj/effect/decal/cleanable/generic - name = "clutter" - desc = "Someone should clean that up." - gender = PLURAL - density = FALSE - anchored = TRUE - layer = TURF_LAYER - icon = 'icons/obj/objects.dmi' - icon_state = "shards" - -/obj/effect/decal/cleanable/ash - name = "ashes" - desc = "Ashes to ashes, dust to dust, and into space." - gender = PLURAL - icon = 'icons/obj/objects.dmi' - icon_state = "ash" - anchored = TRUE - -/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 = FALSE - anchored = TRUE - layer = TURF_LAYER - icon = 'icons/effects/effects.dmi' - icon_state = "dirt" - mouse_opacity = MOUSE_OPACITY_TRANSPARENT - -/obj/effect/decal/cleanable/dirt/blackpowder - name = "black powder" - mouse_opacity = MOUSE_OPACITY_ICON - noscoop = TRUE - -/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 = FALSE - anchored = TRUE - layer = TURF_LAYER - icon = 'icons/effects/effects.dmi' - icon_state = "flour" - -/obj/effect/decal/cleanable/flour/foam - name = "Fire fighting foam" - desc = "It's foam." - color = "#EBEBEB" - -/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 = FALSE - anchored = TRUE - layer = TURF_LAYER - light_range = 1 - icon = 'icons/effects/effects.dmi' - icon_state = "greenglow" - -/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 = FALSE - anchored = TRUE - layer = OBJ_LAYER - icon = 'icons/effects/effects.dmi' - icon_state = "cobweb1" - burntime = 1 - -/obj/effect/decal/cleanable/cobweb/fire_act() - qdel(src) - -/obj/effect/decal/cleanable/molten_object - name = "gooey grey mass" - desc = "It looks like a melted... something." - density = FALSE - anchored = TRUE - layer = OBJ_LAYER - gender = NEUTER - icon = 'icons/effects/effects.dmi' - icon_state = "molten" - -/obj/effect/decal/cleanable/molten_object/large - name = "big gooey grey mass" - icon_state = "big_molten" - -/obj/effect/decal/cleanable/cobweb2 - name = "cobweb" - desc = "Somebody should remove that." - density = FALSE - anchored = TRUE - layer = OBJ_LAYER - icon = 'icons/effects/effects.dmi' - icon_state = "cobweb2" - -/obj/effect/decal/cleanable/vomit - name = "vomit" - desc = "Gosh, how unpleasant." - gender = PLURAL - 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 = TRUE - -/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/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 = 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 = FALSE - anchored = TRUE - layer = TURF_LAYER - gender = NEUTER - icon = 'icons/effects/tomatodecal.dmi' - random_icon_states = list("smashed_plant") - -/obj/effect/decal/cleanable/egg_smudge - name = "smashed egg" - desc = "Seems like this one won't hatch." - 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 = 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 = FALSE - anchored = TRUE - layer = TURF_LAYER - icon = 'icons/effects/effects.dmi' - icon_state = "flour" - color = "#D5820B" - -/obj/effect/decal/cleanable/fungus/Initialize() - . = ..() - reagents.add_reagent("fungus", 10) - -/obj/effect/decal/cleanable/confetti //PARTY TIME! - name = "confetti" - desc = "Party time!" - gender = PLURAL - icon = 'icons/obj/objects.dmi' - icon_state = "confetti1" - random_icon_states = list("confetti1", "confetti2", "confetti3") - anchored = TRUE +/obj/effect/decal/cleanable/generic + name = "clutter" + desc = "Someone should clean that up." + gender = PLURAL + density = FALSE + anchored = TRUE + layer = TURF_LAYER + icon = 'icons/obj/objects.dmi' + icon_state = "shards" + +/obj/effect/decal/cleanable/ash + name = "ashes" + desc = "Ashes to ashes, dust to dust, and into space." + gender = PLURAL + icon = 'icons/obj/objects.dmi' + icon_state = "ash" + anchored = TRUE + +/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 = FALSE + anchored = TRUE + layer = TURF_LAYER + icon = 'icons/effects/dirt.dmi' + icon_state = "dirt" + canSmoothWith = list(/obj/effect/decal/cleanable/dirt, /turf/simulated/wall, /obj/structure/falsewall) + smooth = SMOOTH_MORE + mouse_opacity = FALSE + +/obj/effect/decal/cleanable/dirt/Initialize() + ..() + icon_state = "" + +/obj/effect/decal/cleanable/dirt/blackpowder + name = "black powder" + mouse_opacity = TRUE + noscoop = TRUE + +/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 = FALSE + anchored = TRUE + layer = TURF_LAYER + icon = 'icons/effects/effects.dmi' + icon_state = "flour" + +/obj/effect/decal/cleanable/flour/foam + name = "Fire fighting foam" + desc = "It's foam." + color = "#EBEBEB" + +/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 = FALSE + anchored = TRUE + layer = TURF_LAYER + light_range = 1 + icon = 'icons/effects/effects.dmi' + icon_state = "greenglow" + +/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 = FALSE + anchored = TRUE + layer = OBJ_LAYER + icon = 'icons/effects/effects.dmi' + icon_state = "cobweb1" + burntime = 1 + +/obj/effect/decal/cleanable/cobweb/fire_act() + qdel(src) + +/obj/effect/decal/cleanable/molten_object + name = "gooey grey mass" + desc = "It looks like a melted... something." + density = FALSE + anchored = TRUE + layer = OBJ_LAYER + gender = NEUTER + icon = 'icons/effects/effects.dmi' + icon_state = "molten" + +/obj/effect/decal/cleanable/molten_object/large + name = "big gooey grey mass" + icon_state = "big_molten" + +/obj/effect/decal/cleanable/cobweb2 + name = "cobweb" + desc = "Somebody should remove that." + density = FALSE + anchored = TRUE + layer = OBJ_LAYER + icon = 'icons/effects/effects.dmi' + icon_state = "cobweb2" + +/obj/effect/decal/cleanable/vomit + name = "vomit" + desc = "Gosh, how unpleasant." + gender = PLURAL + 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 = TRUE + +/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/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 = 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 = FALSE + anchored = TRUE + layer = TURF_LAYER + gender = NEUTER + icon = 'icons/effects/tomatodecal.dmi' + random_icon_states = list("smashed_plant") + +/obj/effect/decal/cleanable/egg_smudge + name = "smashed egg" + desc = "Seems like this one won't hatch." + 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 = 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 = FALSE + anchored = TRUE + layer = TURF_LAYER + icon = 'icons/effects/effects.dmi' + icon_state = "flour" + color = "#D5820B" + +/obj/effect/decal/cleanable/fungus/Initialize() + . = ..() + reagents.add_reagent("fungus", 10) + +/obj/effect/decal/cleanable/confetti //PARTY TIME! + name = "confetti" + desc = "Party time!" + gender = PLURAL + icon = 'icons/obj/objects.dmi' + icon_state = "confetti1" + random_icon_states = list("confetti1", "confetti2", "confetti3") + anchored = TRUE diff --git a/code/game/objects/effects/decals/Cleanable/robots.dm b/code/game/objects/effects/decals/Cleanable/robots.dm index 16a9bf5a711..1c8ad706dc8 100644 --- a/code/game/objects/effects/decals/Cleanable/robots.dm +++ b/code/game/objects/effects/decals/Cleanable/robots.dm @@ -29,9 +29,7 @@ var/obj/effect/decal/cleanable/blood/oil/streak = new(src.loc) streak.update_icon() else if(prob(10)) - var/datum/effect_system/spark_spread/s = new /datum/effect_system/spark_spread - s.set_up(3, 1, src) - s.start() + do_sparks(3, 1, src) if(step_to(src, get_step(src, direction), 0)) break diff --git a/code/game/objects/effects/decals/cleanable.dm b/code/game/objects/effects/decals/cleanable.dm index 09b13845879..130a50cac89 100644 --- a/code/game/objects/effects/decals/cleanable.dm +++ b/code/game/objects/effects/decals/cleanable.dm @@ -11,8 +11,16 @@ if(random_icon_states && length(src.random_icon_states) > 0) src.icon_state = pick(src.random_icon_states) create_reagents(100) + if(smooth) + queue_smooth(src) + queue_smooth_neighbors(src) ..() +/obj/effect/decal/cleanable/Destroy() + if(smooth) + queue_smooth_neighbors(src) + return ..() + /obj/effect/decal/cleanable/attackby(obj/item/W as obj, mob/user as mob,) if(istype(W, /obj/item/reagent_containers/glass) || istype(W, /obj/item/reagent_containers/food/drinks)) if(src.reagents && W.reagents && !noscoop) diff --git a/code/game/objects/effects/decals/remains.dm b/code/game/objects/effects/decals/remains.dm index b97b149991b..77a51b4d975 100644 --- a/code/game/objects/effects/decals/remains.dm +++ b/code/game/objects/effects/decals/remains.dm @@ -22,12 +22,6 @@ icon_state = "remainsrobot" anchored = TRUE -/obj/effect/decal/remains/robot/New() - ..() - var/datum/effect_system/spark_spread/s = new /datum/effect_system/spark_spread - s.set_up(3, 1, src) - s.start() - /obj/effect/decal/remains/slime name = "You shouldn't see this" desc = "Noooooooooooooooooooooo" diff --git a/code/game/objects/effects/effect_system/effect_system.dm b/code/game/objects/effects/effect_system/effect_system.dm index d71e7631565..1231c8136fa 100644 --- a/code/game/objects/effects/effect_system/effect_system.dm +++ b/code/game/objects/effects/effect_system/effect_system.dm @@ -8,8 +8,9 @@ would spawn and follow the beaker, even if it is carried or thrown. /obj/effect/particle_effect name = "particle effect" mouse_opacity = MOUSE_OPACITY_TRANSPARENT - unacidable = 1//So effects are not targeted by alien acid. + unacidable = TRUE //So effects are not targeted by alien acid. pass_flags = PASSTABLE | PASSGRILLE + anchored = TRUE /obj/effect/particle_effect/New() ..() @@ -28,6 +29,7 @@ would spawn and follow the beaker, even if it is carried or thrown. var/atom/holder var/effect_type var/total_effects = 0 + var/autocleanup = FALSE //will delete itself after use /datum/effect_system/Destroy() holder = null @@ -71,3 +73,5 @@ would spawn and follow the beaker, even if it is carried or thrown. /datum/effect_system/proc/decrement_total_effect() total_effects-- + if(autocleanup && total_effects <= 0) + qdel(src) \ No newline at end of file diff --git a/code/game/objects/effects/effect_system/effects_other.dm b/code/game/objects/effects/effect_system/effects_other.dm index ef9ed8ac11a..194a37c860f 100644 --- a/code/game/objects/effects/effect_system/effects_other.dm +++ b/code/game/objects/effects/effect_system/effects_other.dm @@ -155,9 +155,7 @@ /datum/effect_system/reagents_explosion/start() if(amount <= 2) - var/datum/effect_system/spark_spread/s = new /datum/effect_system/spark_spread - s.set_up(2, 1, location) - s.start() + do_sparks(2, 1, location) for(var/mob/M in viewers(5, location)) to_chat(M, "The solution violently explodes.") diff --git a/code/game/objects/effects/effect_system/effects_sparks.dm b/code/game/objects/effects/effect_system/effects_sparks.dm index 77925b3170a..f59f44ca1db 100644 --- a/code/game/objects/effects/effect_system/effects_sparks.dm +++ b/code/game/objects/effects/effect_system/effects_sparks.dm @@ -5,15 +5,26 @@ // will always spawn at the items location. ///////////////////////////////////////////// +/proc/do_sparks(n, c, source) + // n - number of sparks + // c - cardinals, bool, do the sparks only move in cardinal directions? + // source - source of the sparks. + + var/datum/effect_system/spark_spread/sparks = new + sparks.set_up(n, c, source) + sparks.autocleanup = TRUE + sparks.start() + /obj/effect/particle_effect/sparks name = "sparks" desc = "it's a spark what do you need to know?" icon_state = "sparks" - anchored = 1 + anchored = TRUE var/hotspottemp = 1000 /obj/effect/particle_effect/sparks/New() ..() + flick("sparks", src) // replay the animation playsound(loc, "sparks", 100, 1) var/turf/T = loc if(isturf(T)) diff --git a/code/game/objects/effects/gibs.dm b/code/game/objects/effects/gibs.dm index 3cffb3f7eaf..9248134b0a7 100644 --- a/code/game/objects/effects/gibs.dm +++ b/code/game/objects/effects/gibs.dm @@ -16,40 +16,38 @@ var/list/gibamounts = list() var/list/gibdirections = list() //of lists - New(location, datum/dna/MobDNA) - ..() +/obj/effect/gibspawner/New(location, datum/dna/MobDNA) + ..() - if(istype(loc,/turf)) //basically if a badmin spawns it - Gib(loc, MobDNA) + if(istype(loc,/turf)) //basically if a badmin spawns it + Gib(loc, MobDNA) - proc/Gib(atom/location, datum/dna/MobDNA = null) - if(gibtypes.len != gibamounts.len || gibamounts.len != gibdirections.len) - to_chat(world, "Gib list length mismatch!") - return +/obj/effect/gibspawner/proc/Gib(atom/location, datum/dna/MobDNA = null) + if(gibtypes.len != gibamounts.len || gibamounts.len != gibdirections.len) + to_chat(world, "Gib list length mismatch!") + return - var/obj/effect/decal/cleanable/blood/gibs/gib = null + var/obj/effect/decal/cleanable/blood/gibs/gib = null - if(sparks) - var/datum/effect_system/spark_spread/s = new /datum/effect_system/spark_spread - s.set_up(2, 1, location) - s.start() + if(sparks) + do_sparks(2, 1, location) - for(var/i = 1, i<= gibtypes.len, i++) - if(gibamounts[i]) - for(var/j = 1, j<= gibamounts[i], j++) - var/gibType = gibtypes[i] - gib = new gibType(location) + for(var/i = 1, i<= gibtypes.len, i++) + if(gibamounts[i]) + for(var/j = 1, j<= gibamounts[i], j++) + var/gibType = gibtypes[i] + gib = new gibType(location) - gib.blood_DNA = list() - if(MobDNA) - gib.blood_DNA[MobDNA.unique_enzymes] = MobDNA.b_type - else if(istype(src, /obj/effect/gibspawner/xeno)) - gib.blood_DNA["UNKNOWN DNA"] = "X*" - else if(istype(src, /obj/effect/gibspawner/human)) // Probably a monkey - gib.blood_DNA["Non-human DNA"] = "A+" - var/list/directions = gibdirections[i] - if(directions.len) - gib.streak(directions) + gib.blood_DNA = list() + if(MobDNA) + gib.blood_DNA[MobDNA.unique_enzymes] = MobDNA.b_type + else if(istype(src, /obj/effect/gibspawner/xeno)) + gib.blood_DNA["UNKNOWN DNA"] = "X*" + else if(istype(src, /obj/effect/gibspawner/human)) // Probably a monkey + gib.blood_DNA["Non-human DNA"] = "A+" + var/list/directions = gibdirections[i] + if(directions.len) + gib.streak(directions) - qdel(src) + qdel(src) diff --git a/code/game/objects/effects/landmarks.dm b/code/game/objects/effects/landmarks.dm index 932a1786ae6..e164039a76d 100644 --- a/code/game/objects/effects/landmarks.dm +++ b/code/game/objects/effects/landmarks.dm @@ -88,11 +88,11 @@ emergencyresponseteamspawn += loc qdel(src) - landmarks_list += src + GLOB.landmarks_list += src return 1 /obj/effect/landmark/Destroy() - landmarks_list -= src + GLOB.landmarks_list -= src ..() return QDEL_HINT_HARDDEL_NOW @@ -259,13 +259,13 @@ var/datum/map_template/ruin/ruin_template /obj/effect/landmark/ruin/New(loc, my_ruin_template) - name = "ruin_[ruin_landmarks.len + 1]" + name = "ruin_[GLOB.ruin_landmarks.len + 1]" ..(loc) ruin_template = my_ruin_template - ruin_landmarks |= src + GLOB.ruin_landmarks |= src /obj/effect/landmark/ruin/Destroy() - ruin_landmarks -= src + GLOB.ruin_landmarks -= src ruin_template = null . = ..() @@ -276,7 +276,8 @@ /obj/effect/landmark/damageturf/New() ..() var/turf/simulated/T = get_turf(src) - T.break_tile() + if(istype(T)) + T.break_tile() /obj/effect/landmark/burnturf icon_state = "burned" diff --git a/code/game/objects/effects/manifest.dm b/code/game/objects/effects/manifest.dm index 939156725c4..9b4814237fe 100644 --- a/code/game/objects/effects/manifest.dm +++ b/code/game/objects/effects/manifest.dm @@ -11,7 +11,7 @@ /obj/effect/manifest/proc/manifest() var/dat = "Crew Manifest:
" - for(var/mob/living/carbon/human/M in mob_list) + for(var/mob/living/carbon/human/M in GLOB.mob_list) dat += text(" [] - []
", M.name, M.get_assignment()) var/obj/item/paper/P = new /obj/item/paper( src.loc ) P.info = dat diff --git a/code/game/objects/effects/mines.dm b/code/game/objects/effects/mines.dm index 8323641c899..1b619faa41b 100644 --- a/code/game/objects/effects/mines.dm +++ b/code/game/objects/effects/mines.dm @@ -25,9 +25,7 @@ if(triggered) return visible_message("[victim] sets off [bicon(src)] [src]!") - var/datum/effect_system/spark_spread/s = new /datum/effect_system/spark_spread - s.set_up(3, 1, src) - s.start() + do_sparks(3, 1, src) mineEffect(victim) triggered = 1 qdel(src) diff --git a/code/game/objects/effects/portals.dm b/code/game/objects/effects/portals.dm index a048ca1ebff..793d7265c27 100644 --- a/code/game/objects/effects/portals.dm +++ b/code/game/objects/effects/portals.dm @@ -17,7 +17,7 @@ teleport(M) /obj/effect/portal/New(loc, turf/target, creator=null, lifespan=300) - portals += src + GLOB.portals += src src.loc = loc src.target = target src.creator = creator @@ -26,7 +26,7 @@ qdel(src) /obj/effect/portal/Destroy() - portals -= src + GLOB.portals -= src if(istype(creator, /obj)) var/obj/O = creator O.portal_destroyed(src) @@ -57,9 +57,7 @@ /obj/effect/portal/proc/invalid_teleport() visible_message("[src] flickers and fails due to bluespace interference!") - var/datum/effect_system/spark_spread/spark_system = new /datum/effect_system/spark_spread() - spark_system.set_up(5, 0, loc) - spark_system.start() + do_sparks(5, 0, loc) qdel(src) diff --git a/code/game/objects/effects/spawners/gibspawner.dm b/code/game/objects/effects/spawners/gibspawner.dm index 5446ba348e6..b75df275659 100644 --- a/code/game/objects/effects/spawners/gibspawner.dm +++ b/code/game/objects/effects/spawners/gibspawner.dm @@ -1,36 +1,35 @@ -/obj/effect/gibspawner - generic - gibtypes = list(/obj/effect/decal/cleanable/blood/gibs,/obj/effect/decal/cleanable/blood/gibs,/obj/effect/decal/cleanable/blood/gibs/core) - gibamounts = list(2,2,1) +/obj/effect/gibspawner/generic + gibtypes = list(/obj/effect/decal/cleanable/blood/gibs,/obj/effect/decal/cleanable/blood/gibs,/obj/effect/decal/cleanable/blood/gibs/core) + gibamounts = list(2,2,1) - New() - gibdirections = list(list(WEST, NORTHWEST, SOUTHWEST, NORTH),list(EAST, NORTHEAST, SOUTHEAST, SOUTH), list()) - ..() +/obj/effect/gibspawner/generic/New() + gibdirections = list(list(WEST, NORTHWEST, SOUTHWEST, NORTH),list(EAST, NORTHEAST, SOUTHEAST, SOUTH), list()) + ..() - human - gibtypes = list(/obj/effect/decal/cleanable/blood/gibs,/obj/effect/decal/cleanable/blood/gibs/down,/obj/effect/decal/cleanable/blood/gibs,/obj/effect/decal/cleanable/blood/gibs,/obj/effect/decal/cleanable/blood/gibs,/obj/effect/decal/cleanable/blood/gibs,/obj/effect/decal/cleanable/blood/gibs/core) - gibamounts = list(1,1,1,1,1,1,1) +/obj/effect/gibspawner/human + gibtypes = list(/obj/effect/decal/cleanable/blood/gibs,/obj/effect/decal/cleanable/blood/gibs/down,/obj/effect/decal/cleanable/blood/gibs,/obj/effect/decal/cleanable/blood/gibs,/obj/effect/decal/cleanable/blood/gibs,/obj/effect/decal/cleanable/blood/gibs,/obj/effect/decal/cleanable/blood/gibs/core) + gibamounts = list(1,1,1,1,1,1,1) - New() - gibdirections = list(list(NORTH, NORTHEAST, NORTHWEST),list(SOUTH, SOUTHEAST, SOUTHWEST),list(WEST, NORTHWEST, SOUTHWEST),list(EAST, NORTHEAST, SOUTHEAST), alldirs, alldirs, list()) - gibamounts[6] = pick(0,1,2) - ..() +/obj/effect/gibspawner/human/New() + gibdirections = list(list(NORTH, NORTHEAST, NORTHWEST),list(SOUTH, SOUTHEAST, SOUTHWEST),list(WEST, NORTHWEST, SOUTHWEST),list(EAST, NORTHEAST, SOUTHEAST), alldirs, alldirs, list()) + gibamounts[6] = pick(0,1,2) + ..() - xeno - gibtypes = list(/obj/effect/decal/cleanable/blood/gibs/xeno/up,/obj/effect/decal/cleanable/blood/gibs/xeno/down,/obj/effect/decal/cleanable/blood/gibs/xeno,/obj/effect/decal/cleanable/blood/gibs/xeno,/obj/effect/decal/cleanable/blood/gibs/xeno/body,/obj/effect/decal/cleanable/blood/gibs/xeno/limb,/obj/effect/decal/cleanable/blood/gibs/xeno/core) - gibamounts = list(1,1,1,1,1,1,1) +/obj/effect/gibspawner/xeno + gibtypes = list(/obj/effect/decal/cleanable/blood/gibs/xeno/up,/obj/effect/decal/cleanable/blood/gibs/xeno/down,/obj/effect/decal/cleanable/blood/gibs/xeno,/obj/effect/decal/cleanable/blood/gibs/xeno,/obj/effect/decal/cleanable/blood/gibs/xeno/body,/obj/effect/decal/cleanable/blood/gibs/xeno/limb,/obj/effect/decal/cleanable/blood/gibs/xeno/core) + gibamounts = list(1,1,1,1,1,1,1) - New() - gibdirections = list(list(NORTH, NORTHEAST, NORTHWEST),list(SOUTH, SOUTHEAST, SOUTHWEST),list(WEST, NORTHWEST, SOUTHWEST),list(EAST, NORTHEAST, SOUTHEAST), alldirs, alldirs, list()) - gibamounts[6] = pick(0,1,2) - ..() +/obj/effect/gibspawner/xeno/New() + gibdirections = list(list(NORTH, NORTHEAST, NORTHWEST),list(SOUTH, SOUTHEAST, SOUTHWEST),list(WEST, NORTHWEST, SOUTHWEST),list(EAST, NORTHEAST, SOUTHEAST), alldirs, alldirs, list()) + gibamounts[6] = pick(0,1,2) + ..() - robot - sparks = 1 - gibtypes = list(/obj/effect/decal/cleanable/blood/gibs/robot/up,/obj/effect/decal/cleanable/blood/gibs/robot/down,/obj/effect/decal/cleanable/blood/gibs/robot,/obj/effect/decal/cleanable/blood/gibs/robot,/obj/effect/decal/cleanable/blood/gibs/robot,/obj/effect/decal/cleanable/blood/gibs/robot/limb) - gibamounts = list(1,1,1,1,1,1) +/obj/effect/gibspawner/robot + sparks = 1 + gibtypes = list(/obj/effect/decal/cleanable/blood/gibs/robot/up,/obj/effect/decal/cleanable/blood/gibs/robot/down,/obj/effect/decal/cleanable/blood/gibs/robot,/obj/effect/decal/cleanable/blood/gibs/robot,/obj/effect/decal/cleanable/blood/gibs/robot,/obj/effect/decal/cleanable/blood/gibs/robot/limb) + gibamounts = list(1,1,1,1,1,1) - New() - gibdirections = list(list(NORTH, NORTHEAST, NORTHWEST),list(SOUTH, SOUTHEAST, SOUTHWEST),list(WEST, NORTHWEST, SOUTHWEST),list(EAST, NORTHEAST, SOUTHEAST), alldirs, alldirs) - gibamounts[6] = pick(0,1,2) - ..() \ No newline at end of file +/obj/effect/gibspawner/robot/New() + gibdirections = list(list(NORTH, NORTHEAST, NORTHWEST),list(SOUTH, SOUTHEAST, SOUTHWEST),list(WEST, NORTHWEST, SOUTHWEST),list(EAST, NORTHEAST, SOUTHEAST), alldirs, alldirs) + gibamounts[6] = pick(0,1,2) + ..() diff --git a/code/game/objects/explosion.dm b/code/game/objects/explosion.dm index 48ebad7ea5d..13583310630 100644 --- a/code/game/objects/explosion.dm +++ b/code/game/objects/explosion.dm @@ -43,7 +43,7 @@ var/sound/explosion_sound = sound(get_sfx("explosion")) var/sound/global_boom = sound('sound/effects/explosionfar.ogg') - for(var/P in player_list) + for(var/P in GLOB.player_list) var/mob/M = P // Double check for client if(M && M.client) diff --git a/code/game/objects/items.dm b/code/game/objects/items.dm index 6957f70d2b2..9af8b04580a 100644 --- a/code/game/objects/items.dm +++ b/code/game/objects/items.dm @@ -341,6 +341,10 @@ var/global/image/fire_overlay = image("icon" = 'icons/goonstation/effects/fire.d /obj/item/proc/on_found(mob/finder as mob) return +// called when the giver gives it to the receiver +/obj/item/proc/on_give(mob/living/carbon/giver, mob/living/carbon/receiver) + return + // called after an item is placed in an equipment slot // user is mob that equipped it // slot uses the slot_X defines found in setup.dm diff --git a/code/game/objects/items/bodybag.dm b/code/game/objects/items/bodybag.dm index cf698f439f5..286bd315b61 100644 --- a/code/game/objects/items/bodybag.dm +++ b/code/game/objects/items/bodybag.dm @@ -17,15 +17,16 @@ name = "body bags" desc = "This box contains body bags." icon_state = "bodybags" - New() - ..() - new /obj/item/bodybag(src) - new /obj/item/bodybag(src) - new /obj/item/bodybag(src) - new /obj/item/bodybag(src) - new /obj/item/bodybag(src) - new /obj/item/bodybag(src) - new /obj/item/bodybag(src) + +/obj/item/storage/box/bodybags/New() + ..() + new /obj/item/bodybag(src) + new /obj/item/bodybag(src) + new /obj/item/bodybag(src) + new /obj/item/bodybag(src) + new /obj/item/bodybag(src) + new /obj/item/bodybag(src) + new /obj/item/bodybag(src) /obj/structure/closet/body_bag @@ -40,47 +41,47 @@ density = 0 - attackby(W as obj, mob/user as mob, params) - if(istype(W, /obj/item/pen)) - var/t = input(user, "What would you like the label to be?", text("[]", src.name), null) as text - if(user.get_active_hand() != W) - return - if(!in_range(src, user) && src.loc != user) - return - t = sanitize(copytext(t,1,MAX_MESSAGE_LEN)) - if(t) - src.name = "body bag - " - src.name += t - src.overlays += image(src.icon, "bodybag_label") - else - src.name = "body bag" - //..() //Doesn't need to run the parent. Since when can fucking bodybags be welded shut? -Agouri +/obj/structure/closet/body_bag/attackby(W as obj, mob/user as mob, params) + if(istype(W, /obj/item/pen)) + var/t = input(user, "What would you like the label to be?", text("[]", src.name), null) as text + if(user.get_active_hand() != W) return - else if(istype(W, /obj/item/wirecutters)) - to_chat(user, "You cut the tag off the bodybag") + if(!in_range(src, user) && src.loc != user) + return + t = sanitize(copytext(t,1,MAX_MESSAGE_LEN)) + if(t) + src.name = "body bag - " + src.name += t + src.overlays += image(src.icon, "bodybag_label") + else src.name = "body bag" - src.overlays.Cut() - return + //..() //Doesn't need to run the parent. Since when can fucking bodybags be welded shut? -Agouri + return + else if(istype(W, /obj/item/wirecutters)) + to_chat(user, "You cut the tag off the bodybag") + src.name = "body bag" + src.overlays.Cut() + return - close() - if(..()) - density = 0 - return 1 - return 0 +/obj/structure/closet/body_bag/close() + if(..()) + density = 0 + return 1 + return 0 - MouseDrop(over_object, src_location, over_location) - ..() - if((over_object == usr && (in_range(src, usr) || usr.contents.Find(src)))) - if(!ishuman(usr)) return - if(opened) return 0 - if(contents.len) return 0 - visible_message("[usr] folds up the [src.name]") - new item_path(get_turf(src)) - spawn(0) - qdel(src) - return +/obj/structure/closet/body_bag/MouseDrop(over_object, src_location, over_location) + ..() + if((over_object == usr && (in_range(src, usr) || usr.contents.Find(src)))) + if(!ishuman(usr)) return + if(opened) return 0 + if(contents.len) return 0 + visible_message("[usr] folds up the [src.name]") + new item_path(get_turf(src)) + spawn(0) + qdel(src) + return /obj/structure/closet/body_bag/relaymove(mob/user as mob) if(user.stat) @@ -89,4 +90,4 @@ // Make it possible to escape from bodybags in morgues and crematoriums if(loc && (isturf(loc) || istype(loc, /obj/structure/morgue) || istype(loc, /obj/structure/crematorium))) if(!open()) - to_chat(user, "It won't budge!") \ No newline at end of file + to_chat(user, "It won't budge!") diff --git a/code/game/objects/items/cardboard_cutouts.dm b/code/game/objects/items/cardboard_cutouts.dm index b076b7be43c..0d19057ae4b 100644 --- a/code/game/objects/items/cardboard_cutouts.dm +++ b/code/game/objects/items/cardboard_cutouts.dm @@ -91,15 +91,15 @@ color = "#FFD7A7" switch(new_appearance) if("Assistant") - name = "[pick(first_names_male)] [pick(last_names)]" + name = "[pick(GLOB.first_names_male)] [pick(GLOB.last_names)]" desc = "A cardboard cutout of an assistant." icon_state = "cutout_greytide" if("Clown") - name = pick(clown_names) + name = pick(GLOB.clown_names) desc = "A cardboard cutout of a clown. You get the feeling that it should be in a corner." icon_state = "cutout_clown" if("Mime") - name = pick(mime_names) + name = pick(GLOB.mime_names) desc = "...(A cardboard cutout of a mime.)" icon_state = "cutout_mime" if("Traitor") @@ -123,7 +123,7 @@ desc = "A cardboard cutout of a revolutionary." icon_state = "cutout_viva" if("Wizard") - name = "[pick(wizard_first)], [pick(wizard_second)]" + name = "[pick(GLOB.wizard_first)], [pick(GLOB.wizard_second)]" desc = "A cardboard cutout of a wizard." icon_state = "cutout_wizard" if("Shadowling") @@ -145,7 +145,7 @@ // desc = "A cardboard cutout of an ash walker." // icon_state = "cutout_free_antag" if("Deathsquad Officer") - name = pick(commando_names) + name = pick(GLOB.commando_names) desc = "A cardboard cutout of a death commando." icon_state = "cutout_deathsquad" if("Ian") diff --git a/code/game/objects/items/control_wand.dm b/code/game/objects/items/control_wand.dm index c3c8c1f3407..74d15c37da3 100644 --- a/code/game/objects/items/control_wand.dm +++ b/code/game/objects/items/control_wand.dm @@ -11,13 +11,17 @@ w_class = WEIGHT_CLASS_TINY flags = NOBLUDGEON var/mode = WAND_OPEN - var/region_access = 1 //See access.dm + var/region_access = list() + var/additional_access = list() var/obj/item/card/id/ID /obj/item/door_remote/New() ..() ID = new /obj/item/card/id - ID.access = get_region_accesses(region_access) + for(var/region in region_access) + ID.access += get_region_accesses(region) + ID.access += additional_access + ID.access = uniquelist(ID.access) //remove duplicates /obj/item/door_remote/Destroy() QDEL_NULL(ID) @@ -70,48 +74,49 @@ name = "omni door remote" desc = "This control wand can access any door on the station." icon_state = "gangtool-yellow" - region_access = REGION_ALL + region_access = list(REGION_ALL) /obj/item/door_remote/captain name = "command door remote" icon_state = "gangtool-yellow" - region_access = REGION_COMMAND + region_access = list(REGION_COMMAND) /obj/item/door_remote/chief_engineer name = "engineering door remote" icon_state = "gangtool-orange" - region_access = REGION_ENGINEERING + region_access = list(REGION_ENGINEERING) /obj/item/door_remote/research_director name = "research door remote" icon_state = "gangtool-purple" - region_access = REGION_RESEARCH + region_access = list(REGION_RESEARCH) /obj/item/door_remote/head_of_security name = "security door remote" icon_state = "gangtool-red" - region_access = REGION_SECURITY + region_access = list(REGION_SECURITY) /obj/item/door_remote/quartermaster name = "supply door remote" icon_state = "gangtool-green" - region_access = REGION_SUPPLY + region_access = list(REGION_SUPPLY) /obj/item/door_remote/chief_medical_officer name = "medical door remote" icon_state = "gangtool-blue" - region_access = REGION_MEDBAY + region_access = list(REGION_MEDBAY) /obj/item/door_remote/civillian name = "civillian door remote" icon_state = "gangtool-white" - region_access = REGION_GENERAL + region_access = list(REGION_GENERAL, REGION_SUPPLY) + additional_access = list(access_hop) /obj/item/door_remote/centcomm name = "centcomm door remote" desc = "High-ranking NT officials only." icon_state = "gangtool-blue" - region_access = REGION_CENTCOMM + region_access = list(REGION_CENTCOMM) #undef WAND_OPEN #undef WAND_BOLT diff --git a/code/game/objects/items/devices/autopsy.dm b/code/game/objects/items/devices/autopsy.dm index f5aa02d6eb4..65afc0f64ef 100644 --- a/code/game/objects/items/devices/autopsy.dm +++ b/code/game/objects/items/devices/autopsy.dm @@ -27,7 +27,6 @@ /datum/autopsy_data var/weapon = null - var/pretend_weapon = null var/damage = 0 var/hits = 0 var/time_inflicted = 0 @@ -35,44 +34,35 @@ /datum/autopsy_data/proc/copy() var/datum/autopsy_data/W = new() W.weapon = weapon - W.pretend_weapon = pretend_weapon W.damage = damage W.hits = hits W.time_inflicted = time_inflicted return W -/obj/item/autopsy_scanner/proc/add_data(obj/item/organ/external/O) - if(!O.autopsy_data.len && !O.trace_chemicals.len) - return +/obj/item/autopsy_scanner/proc/add_data(obj/item/organ/O) + if(O.autopsy_data.len) + for(var/V in O.autopsy_data) + var/datum/autopsy_data/W = O.autopsy_data[V] - for(var/V in O.autopsy_data) - var/datum/autopsy_data/W = O.autopsy_data[V] + var/datum/autopsy_data_scanner/D = wdata[V] + if(!D) + D = new() + D.weapon = W.weapon + wdata[V] = D - if(!W.pretend_weapon) - if(1) - W.pretend_weapon = W.weapon - else - W.pretend_weapon = pick("mechanical toolbox", "wirecutters", "revolver", "crowbar", "fire extinguisher", "tomato soup", "oxygen tank", "emergency oxygen tank", "laser", "bullet") + if(!D.organs_scanned[O.name]) + if(D.organ_names == "") + D.organ_names = O.name + else + D.organ_names += ", [O.name]" + qdel(D.organs_scanned[O.name]) + D.organs_scanned[O.name] = W.copy() - var/datum/autopsy_data_scanner/D = wdata[V] - if(!D) - D = new() - D.weapon = W.weapon - wdata[V] = D - - if(!D.organs_scanned[O.name]) - if(D.organ_names == "") - D.organ_names = O.name - else - D.organ_names += ", [O.name]" - - qdel(D.organs_scanned[O.name]) - D.organs_scanned[O.name] = W.copy() - - for(var/V in O.trace_chemicals) - if(O.trace_chemicals[V] > 0 && !chemtraces.Find(V)) - chemtraces += V + if(O.trace_chemicals.len) + for(var/V in O.trace_chemicals) + if(O.trace_chemicals[V] > 0 && !chemtraces.Find(V)) + chemtraces += V /obj/item/autopsy_scanner/attackby(obj/item/P, mob/user) if(istype(P, /obj/item/pen)) @@ -90,71 +80,55 @@ user.put_in_hands(R) /obj/item/autopsy_scanner/attack_self(mob/user) - if(!wdata.len && !chemtraces.len) - return - var/scan_data = "" if(timeofdeath) scan_data += "Time of death: [station_time_timestamp("hh:mm:ss", timeofdeath)]

" + else + scan_data += "Time of death: Unknown / Still alive

" - var/n = 1 - for(var/wdata_idx in wdata) - var/datum/autopsy_data_scanner/D = wdata[wdata_idx] - var/total_hits = 0 - var/total_score = 0 - var/list/weapon_chances = list() // maps weapon names to a score - var/age = 0 + if(wdata.len) + var/n = 1 + for(var/wdata_idx in wdata) + var/datum/autopsy_data_scanner/D = wdata[wdata_idx] + var/total_hits = 0 + var/total_score = 0 + var/age = 0 - for(var/wound_idx in D.organs_scanned) - var/datum/autopsy_data/W = D.organs_scanned[wound_idx] - total_hits += W.hits - - var/wname = W.pretend_weapon - - if(wname in weapon_chances) - weapon_chances[wname] += W.damage - else - weapon_chances[wname] = max(W.damage, 1) - total_score+=W.damage + for(var/wound_idx in D.organs_scanned) + var/datum/autopsy_data/W = D.organs_scanned[wound_idx] + total_hits += W.hits + total_score+=W.damage - var/wound_age = W.time_inflicted - age = max(age, wound_age) + var/wound_age = W.time_inflicted + age = max(age, wound_age) - var/damage_desc + var/damage_desc + // total score happens to be the total damage + switch(total_score) + if(1 to 5) + damage_desc = "negligible" + if(5 to 15) + damage_desc = "light" + if(15 to 30) + damage_desc = "moderate" + if(30 to 1000) + damage_desc = "severe" + else + damage_desc = "Unknown" - var/damaging_weapon = (total_score != 0) + var/damaging_weapon = (total_score != 0) + scan_data += "Weapon #[n]
" + if(damaging_weapon) + scan_data += "Severity: [damage_desc]
" + scan_data += "Hits by weapon: [total_hits]
" + scan_data += "Approximate time of wound infliction: [station_time_timestamp("hh:mm", age)]
" + scan_data += "Affected limbs: [D.organ_names]
" + scan_data += "Weapon: [D.weapon]
" + scan_data += "
" - // total score happens to be the total damage - switch(total_score) - if(0) - damage_desc = "Unknown" - if(1 to 5) - damage_desc = "negligible" - if(5 to 15) - damage_desc = "light" - if(15 to 30) - damage_desc = "moderate" - if(30 to 1000) - damage_desc = "severe" - - if(!total_score) - total_score = D.organs_scanned.len - - scan_data += "Weapon #[n]
" - if(damaging_weapon) - scan_data += "Severity: [damage_desc]
" - scan_data += "Hits by weapon: [total_hits]
" - scan_data += "Approximate time of wound infliction: [station_time_timestamp("hh:mm", age)]
" - scan_data += "Affected limbs: [D.organ_names]
" - scan_data += "Possible weapons:
" - for(var/weapon_name in weapon_chances) - scan_data += "\t[100*weapon_chances[weapon_name]/total_score]% [weapon_name]
" - - scan_data += "
" - - n++ + n++ if(chemtraces.len) scan_data += "Trace Chemicals:
" diff --git a/code/game/objects/items/devices/chameleonproj.dm b/code/game/objects/items/devices/chameleonproj.dm index b587c650c4c..7a25f4ece1b 100644 --- a/code/game/objects/items/devices/chameleonproj.dm +++ b/code/game/objects/items/devices/chameleonproj.dm @@ -67,10 +67,7 @@ /obj/item/chameleon/proc/disrupt(var/delete_dummy = 1) if(active_dummy) - var/datum/effect_system/spark_spread/spark_system = new /datum/effect_system/spark_spread - spark_system.set_up(5, 0, src) - spark_system.attach(src) - spark_system.start() + do_sparks(5, 0, src) eject_all() if(delete_dummy) qdel(active_dummy) diff --git a/code/game/objects/items/devices/megaphone.dm b/code/game/objects/items/devices/megaphone.dm index 175ca0886ad..43515ed5241 100644 --- a/code/game/objects/items/devices/megaphone.dm +++ b/code/game/objects/items/devices/megaphone.dm @@ -35,7 +35,7 @@ return if(H.mind) span = H.mind.speech_span - if((COMIC in H.mutations) || H.get_int_organ(/obj/item/organ/internal/cyberimp/brain/clown_voice)) + if((COMIC in H.mutations) || H.get_int_organ(/obj/item/organ/internal/cyberimp/brain/clown_voice) || istype(H.get_item_by_slot(slot_wear_mask), /obj/item/clothing/mask/gas/voice/clown)) span = "sans" if(spamcheck) to_chat(user, "\The [src] needs to recharge!") @@ -47,6 +47,7 @@ message = sanitize(copytext(message, 1, MAX_MESSAGE_LEN)) if(!message) return + message = user.handle_speech_problems(message)[1] message = capitalize(message) if((loc == user && !user.incapacitated())) if(emagged) diff --git a/code/game/objects/items/devices/powersink.dm b/code/game/objects/items/devices/powersink.dm index e99c3ca73ff..0d0475df8ee 100644 --- a/code/game/objects/items/devices/powersink.dm +++ b/code/game/objects/items/devices/powersink.dm @@ -27,7 +27,7 @@ /obj/item/powersink/Destroy() processing_objects.Remove(src) - processing_power_items.Remove(src) + GLOB.processing_power_items.Remove(src) PN = null attached = null return ..() @@ -54,7 +54,7 @@ else if(mode == 2) processing_objects.Remove(src) // Now the power sink actually stops draining the station's power if you unhook it. --NeoFite - processing_power_items.Remove(src) + GLOB.processing_power_items.Remove(src) anchored = 0 mode = 0 src.visible_message("[user] detaches [src] from the cable!") @@ -77,14 +77,14 @@ mode = 2 icon_state = "powersink1" processing_objects.Add(src) - processing_power_items.Add(src) + GLOB.processing_power_items.Add(src) if(2) //This switch option wasn't originally included. It exists now. --NeoFite src.visible_message("[user] deactivates [src]!") mode = 1 set_light(0) icon_state = "powersink0" processing_objects.Remove(src) - processing_power_items.Remove(src) + GLOB.processing_power_items.Remove(src) /obj/item/powersink/pwr_drain() if(!attached) diff --git a/code/game/objects/items/devices/radio/beacon.dm b/code/game/objects/items/devices/radio/beacon.dm index 19e26f06bf5..26b0e8c915e 100644 --- a/code/game/objects/items/devices/radio/beacon.dm +++ b/code/game/objects/items/devices/radio/beacon.dm @@ -11,11 +11,11 @@ /obj/item/radio/beacon/New() ..() - code = "[code] ([beacons.len + 1])" - beacons += src + code = "[code] ([GLOB.beacons.len + 1])" + GLOB.beacons += src /obj/item/radio/beacon/Destroy() - beacons -= src + GLOB.beacons -= src return ..() /obj/item/radio/beacon/emag_act(user as mob) @@ -46,9 +46,10 @@ return /obj/item/radio/beacon/bacon //Probably a better way of doing this, I'm lazy. - proc/digest_delay() + +/obj/item/radio/beacon/bacon/proc/digest_delay() spawn(600) - qdel(src) + qdel(src) // SINGULO BEACON SPAWNER /obj/item/radio/beacon/syndicate @@ -82,4 +83,4 @@ new /obj/machinery/syndicatebomb( user.loc ) playsound(src, 'sound/effects/pop.ogg', 100, 1, 1) qdel(src) - return \ No newline at end of file + return diff --git a/code/game/objects/items/devices/radio/electropack.dm b/code/game/objects/items/devices/radio/electropack.dm index 9aa30053983..71fc397a2c4 100644 --- a/code/game/objects/items/devices/radio/electropack.dm +++ b/code/game/objects/items/devices/radio/electropack.dm @@ -87,9 +87,7 @@ if(M) M.moved_recently = 0 to_chat(M, "You feel a sharp shock!") - var/datum/effect_system/spark_spread/s = new /datum/effect_system/spark_spread - s.set_up(3, 1, M) - s.start() + do_sparks(3, 1, M) M.Weaken(5) diff --git a/code/game/objects/items/devices/radio/encryptionkey.dm b/code/game/objects/items/devices/radio/encryptionkey.dm index c26469dcc6d..fb5e41ec663 100644 --- a/code/game/objects/items/devices/radio/encryptionkey.dm +++ b/code/game/objects/items/devices/radio/encryptionkey.dm @@ -7,33 +7,44 @@ item_state = "" w_class = WEIGHT_CLASS_TINY origin_tech = "engineering=2;bluespace=1" - var/translate_binary = 0 - var/translate_hive = 0 - var/syndie = 0 + var/translate_binary = FALSE + var/translate_hive = FALSE + var/syndie = FALSE var/list/channels = list() -/obj/item/encryptionkey/New() - /obj/item/encryptionkey/attackby(obj/item/W as obj, mob/user as mob, params) /obj/item/encryptionkey/syndicate icon_state = "cypherkey" channels = list("Syndicate" = 1) origin_tech = "syndicate=1;engineering=3;bluespace=2" - syndie = 1 //Signifies that it de-crypts Syndicate transmissions + syndie = TRUE //Signifies that it de-crypts Syndicate transmissions + var/change_voice = TRUE + var/fake_name = "Agent ALERT_A_CODER" + var/static/list/fakename_list + +/obj/item/encryptionkey/syndicate/Initialize() + if(!LAZYLEN(fakename_list)) + fakename_list = GLOB.html_colors.Copy() + . = ..() + if(change_voice) + fake_name = "Agent [pick_n_take(fakename_list)]" + +/obj/item/encryptionkey/syndicate/nukeops + change_voice = FALSE /obj/item/encryptionkey/syndteam icon_state = "cypherkey" channels = list("SyndTeam" = 1, "Syndicate" = 1) origin_tech = "syndicate=4" - syndie = 1 //Signifies that it de-crypts Syndicate transmissions + syndie = TRUE //Signifies that it de-crypts Syndicate transmissions /obj/item/encryptionkey/binary name = "binary translator key" desc = "An encryption key for a radio headset. To access the binary channel, use :b." icon_state = "cypherkey" - translate_binary = 1 + translate_binary = TRUE origin_tech = "syndicate=3;engineering=4;bluespace=3" /obj/item/encryptionkey/headset_sec diff --git a/code/game/objects/items/devices/radio/headset.dm b/code/game/objects/items/devices/radio/headset.dm index 51aa645a139..4bd3896c7a5 100644 --- a/code/game/objects/items/devices/radio/headset.dm +++ b/code/game/objects/items/devices/radio/headset.dm @@ -5,12 +5,12 @@ icon_state = "headset" item_state = "headset" materials = list(MAT_METAL=75) - subspace_transmission = 1 + subspace_transmission = TRUE canhear_range = 0 // can't hear headsets from very far away slot_flags = SLOT_EARS - var/translate_binary = 0 - var/translate_hive = 0 + var/translate_binary = FALSE + var/translate_hive = FALSE var/obj/item/encryptionkey/keyslot1 = null var/obj/item/encryptionkey/keyslot2 = null @@ -26,10 +26,14 @@ if(ks1type) keyslot1 = new ks1type(src) + if(keyslot1.syndie) + syndiekey = keyslot1 if(ks2type) keyslot2 = new ks2type(src) + if(keyslot2.syndie) + syndiekey = keyslot2 - recalculateChannels(1) + recalculateChannels(TRUE) /obj/item/radio/headset/Destroy() QDEL_NULL(keyslot1) @@ -49,11 +53,11 @@ /obj/item/radio/headset/handle_message_mode(mob/living/M as mob, message, channel) if(channel == "special") if(translate_binary) - var/datum/language/binary = all_languages["Robot Talk"] + var/datum/language/binary = GLOB.all_languages["Robot Talk"] binary.broadcast(M, message) return RADIO_CONNECTION_NON_SUBSPACE if(translate_hive) - var/datum/language/hivemind = all_languages["Hivemind"] + var/datum/language/hivemind = GLOB.all_languages["Hivemind"] hivemind.broadcast(M, message) return RADIO_CONNECTION_NON_SUBSPACE return RADIO_CONNECTION_FAIL @@ -79,8 +83,7 @@ /obj/item/radio/headset/syndicate origin_tech = "syndicate=3" - syndie = 1 - ks1type = /obj/item/encryptionkey/syndicate + ks1type = /obj/item/encryptionkey/syndicate/nukeops /obj/item/radio/headset/syndicate/alt //undisguised bowman with flash protection name = "syndicate headset" @@ -349,48 +352,48 @@ return -/obj/item/radio/headset/proc/recalculateChannels(var/setDescription = 0) - src.channels = list() - src.translate_binary = 0 - src.translate_hive = 0 - src.syndie = 0 +/obj/item/radio/headset/proc/recalculateChannels(var/setDescription = FALSE) + channels = list() + translate_binary = FALSE + translate_hive = FALSE + syndiekey = null if(keyslot1) for(var/ch_name in keyslot1.channels) - if(ch_name in src.channels) + if(ch_name in channels) continue - src.channels += ch_name - src.channels[ch_name] = keyslot1.channels[ch_name] + channels += ch_name + channels[ch_name] = keyslot1.channels[ch_name] if(keyslot1.translate_binary) - src.translate_binary = 1 + translate_binary = TRUE if(keyslot1.translate_hive) - src.translate_hive = 1 + translate_hive = TRUE if(keyslot1.syndie) - src.syndie = 1 + syndiekey = keyslot1 if(keyslot2) for(var/ch_name in keyslot2.channels) - if(ch_name in src.channels) + if(ch_name in channels) continue - src.channels += ch_name - src.channels[ch_name] = keyslot2.channels[ch_name] + channels += ch_name + channels[ch_name] = keyslot2.channels[ch_name] if(keyslot2.translate_binary) - src.translate_binary = 1 + translate_binary = TRUE if(keyslot2.translate_hive) - src.translate_hive = 1 + translate_hive = TRUE if(keyslot2.syndie) - src.syndie = 1 + syndiekey = keyslot2 for(var/ch_name in channels) if(!radio_controller) - src.name = "broken radio headset" + name = "broken radio headset" return secure_radio_connections[ch_name] = radio_controller.add_object(src, radiochannels[ch_name], RADIO_CHAT) @@ -414,5 +417,5 @@ /obj/item/radio/headset/proc/make_syndie() // Turns normal radios into Syndicate radios! qdel(keyslot1) keyslot1 = new /obj/item/encryptionkey/syndicate - syndie = 1 + syndiekey = keyslot1 recalculateChannels() \ No newline at end of file diff --git a/code/game/objects/items/devices/radio/intercom.dm b/code/game/objects/items/devices/radio/intercom.dm index 8128e1f44d4..97855409536 100644 --- a/code/game/objects/items/devices/radio/intercom.dm +++ b/code/game/objects/items/devices/radio/intercom.dm @@ -57,7 +57,7 @@ dir=ndir b_stat=1 on = 0 - global_intercoms.Add(src) + GLOB.global_intercoms.Add(src) update_icon() /obj/item/radio/intercom/department/medbay/New() @@ -75,8 +75,8 @@ name = "illicit intercom" desc = "Talk through this. Evilly" frequency = SYND_FREQ - subspace_transmission = 1 - syndie = 1 + subspace_transmission = TRUE + syndiekey = new /obj/item/encryptionkey/syndicate/nukeops /obj/item/radio/intercom/syndicate/New() ..() @@ -106,7 +106,7 @@ /obj/item/radio/intercom/Destroy() processing_objects.Remove(src) - global_intercoms.Remove(src) + GLOB.global_intercoms.Remove(src) return ..() /obj/item/radio/intercom/attack_ai(mob/user as mob) @@ -129,7 +129,7 @@ if(isnull(position) || !(position.z in level)) return -1 if(freq in ANTAG_FREQS) - if(!(src.syndie)) + if(!(syndiekey)) return -1//Prevents broadcast of messages over devices lacking the encryption return canhear_range diff --git a/code/game/objects/items/devices/radio/radio.dm b/code/game/objects/items/devices/radio/radio.dm index 530156fbd99..6dae08febd3 100644 --- a/code/game/objects/items/devices/radio/radio.dm +++ b/code/game/objects/items/devices/radio/radio.dm @@ -36,7 +36,7 @@ var/global/list/default_medbay_channels = list( var/listening = 1 var/list/channels = list() //see communications.dm for full list. First channes is a "default" for :h var/subspace_transmission = 0 - var/syndie = 0//Holder to see if it's a syndicate encrpyed radio + var/obj/item/encryptionkey/syndicate/syndiekey = null //Holder for the syndicate encryption key if present var/disable_timer = 0 //How many times this is disabled by EMPs var/is_special = 0 //For electropacks mostly, skips Topic() checks @@ -69,7 +69,7 @@ var/global/list/default_medbay_channels = list( wires = new(src) internal_channels = default_internal_channels.Copy() - global_radios |= src + GLOB.global_radios |= src /obj/item/radio/Destroy() QDEL_NULL(wires) @@ -78,7 +78,7 @@ var/global/list/default_medbay_channels = list( for(var/ch_name in channels) radio_controller.remove_object(src, radiochannels[ch_name]) radio_connection = null - global_radios -= src + GLOB.global_radios -= src follow_target = null return ..() @@ -131,7 +131,7 @@ var/global/list/default_medbay_channels = list( data["chan_list"] = chanlist data["chan_list_len"] = chanlist.len - if(syndie) + if(syndiekey) data["useSyndMode"] = 1 return data @@ -250,7 +250,7 @@ var/global/list/default_medbay_channels = list( A.role = role A.message = message var/jammed = FALSE - for(var/obj/item/jammer/jammer in active_jammers) + for(var/obj/item/jammer/jammer in GLOB.active_jammers) if(get_dist(get_turf(src), get_turf(jammer)) < jammer.range) jammed = TRUE break @@ -342,7 +342,7 @@ var/global/list/default_medbay_channels = list( var/turf/position = get_turf(src) var/jammed = FALSE - for(var/obj/item/jammer/jammer in active_jammers) + for(var/obj/item/jammer/jammer in GLOB.active_jammers) if(get_dist(position, get_turf(jammer)) < jammer.range) jammed = TRUE break @@ -395,8 +395,12 @@ var/global/list/default_medbay_channels = list( if(ishuman(M) && M.GetVoice() != real_name) displayname = M.GetVoice() jobname = "Unknown" - voicemask = 1 + voicemask = TRUE + if(syndiekey && syndiekey.change_voice && connection.frequency == SYND_FREQ) + displayname = syndiekey.fake_name + jobname = "Unknown" + voicemask = TRUE /* ###### Radio headsets can only broadcast through subspace ###### */ @@ -552,7 +556,7 @@ var/global/list/default_medbay_channels = list( if(!position || !(position.z in level)) return -1 if(freq in ANTAG_FREQS) - if(!(syndie))//Checks to see if it's allowed on that frequency, based on the encryption keys + if(!(syndiekey))//Checks to see if it's allowed on that frequency, based on the encryption keys return -1 if(!freq) //recieved on main frequency if(!listening) @@ -652,7 +656,6 @@ var/global/list/default_medbay_channels = list( subspace_transmission = 1 /obj/item/radio/borg/syndicate - syndie = 1 keyslot = new /obj/item/encryptionkey/syndicate /obj/item/radio/borg/syndicate/CanUseTopic(mob/user, datum/topic_state/state) @@ -669,6 +672,7 @@ var/global/list/default_medbay_channels = list( /obj/item/radio/borg/syndicate/New() ..() + syndiekey = keyslot set_frequency(SYND_FREQ) /obj/item/radio/borg/deathsquad @@ -726,32 +730,32 @@ var/global/list/default_medbay_channels = list( return /obj/item/radio/borg/proc/recalculateChannels() - src.channels = list() - src.syndie = 0 + channels = list() + syndiekey = null - var/mob/living/silicon/robot/D = src.loc + var/mob/living/silicon/robot/D = loc if(D.module) for(var/ch_name in D.module.channels) - if(ch_name in src.channels) + if(ch_name in channels) continue - src.channels += ch_name - src.channels[ch_name] += D.module.channels[ch_name] + channels += ch_name + channels[ch_name] += D.module.channels[ch_name] if(keyslot) for(var/ch_name in keyslot.channels) - if(ch_name in src.channels) + if(ch_name in channels) continue - src.channels += ch_name - src.channels[ch_name] += keyslot.channels[ch_name] + channels += ch_name + channels[ch_name] += keyslot.channels[ch_name] if(keyslot.syndie) - src.syndie = 1 + syndiekey = keyslot - for(var/ch_name in src.channels) + for(var/ch_name in channels) if(!radio_controller) sleep(30) // Waiting for the radio_controller to be created. if(!radio_controller) - src.name = "broken radio" + name = "broken radio" return secure_radio_connections[ch_name] = radio_controller.add_object(src, radiochannels[ch_name], RADIO_CHAT) @@ -814,7 +818,7 @@ var/global/list/default_medbay_channels = list( data["chan_list"] = chanlist data["chan_list_len"] = chanlist.len - if(syndie) + if(syndiekey) data["useSyndMode"] = 1 data["has_loudspeaker"] = 1 diff --git a/code/game/objects/items/devices/scanners.dm b/code/game/objects/items/devices/scanners.dm index 98e217d25fa..aece125c657 100644 --- a/code/game/objects/items/devices/scanners.dm +++ b/code/game/objects/items/devices/scanners.dm @@ -228,7 +228,7 @@ REAGENT SCANNER var/blood_percent = round((H.blood_volume / BLOOD_VOLUME_NORMAL)*100) var/blood_type = H.b_type if(blood_id != "blood")//special blood substance - var/datum/reagent/R = chemical_reagents_list[blood_id] + var/datum/reagent/R = GLOB.chemical_reagents_list[blood_id] if(R) blood_type = R.name else @@ -439,7 +439,8 @@ REAGENT SCANNER icon_state = "spectrometer" item_state = "analyzer" w_class = WEIGHT_CLASS_SMALL - flags = CONDUCT | OPENCONTAINER + flags = CONDUCT + container_type = OPENCONTAINER slot_flags = SLOT_BELT throwforce = 5 throw_speed = 4 diff --git a/code/game/objects/items/devices/traitordevices.dm b/code/game/objects/items/devices/traitordevices.dm index 71ef7b91bda..a738b6f03d4 100644 --- a/code/game/objects/items/devices/traitordevices.dm +++ b/code/game/objects/items/devices/traitordevices.dm @@ -158,13 +158,13 @@ effective or pretty fucking useless. var/range = 12 /obj/item/jammer/Destroy() - active_jammers -= src + GLOB.active_jammers -= src return ..() /obj/item/jammer/attack_self(mob/user) to_chat(user,"You [active ? "deactivate" : "activate"] the [src].") active = !active if(active) - active_jammers |= src + GLOB.active_jammers |= src else - active_jammers -= src \ No newline at end of file + GLOB.active_jammers -= src \ No newline at end of file diff --git a/code/game/objects/items/random_items.dm b/code/game/objects/items/random_items.dm index ded05d6f795..e6e6fcfc8a0 100644 --- a/code/game/objects/items/random_items.dm +++ b/code/game/objects/items/random_items.dm @@ -50,10 +50,10 @@ /obj/item/reagent_containers/glass/bottle/random_reagent/New() ..() - var/list/possible_chems = chemical_reagents_list.Copy() - possible_chems -= blocked_chems.Copy() + var/list/possible_chems = GLOB.chemical_reagents_list.Copy() + possible_chems -= GLOB.blocked_chems.Copy() var/datum/reagent/R = pick(possible_chems) - if(rare_chemicals.Find(R)) + if(GLOB.rare_chemicals.Find(R)) reagents.add_reagent(R, 10) else reagents.add_reagent(R, rand(2, 3)*10) @@ -68,7 +68,7 @@ /obj/item/reagent_containers/glass/bottle/random_chem/New() ..() var/R = get_random_reagent_id() - if(rare_chemicals.Find(R)) + if(GLOB.rare_chemicals.Find(R)) reagents.add_reagent(R, 10) else reagents.add_reagent(R, rand(2, 3)*10) @@ -82,7 +82,7 @@ /obj/item/reagent_containers/glass/bottle/random_base_chem/New() ..() - var/datum/reagent/R = pick(base_chemicals) + var/datum/reagent/R = pick(GLOB.base_chemicals) reagents.add_reagent(R, rand(2, 6)*5) name = "unlabelled bottle" pixel_x = rand(-10, 10) @@ -94,7 +94,7 @@ /obj/item/reagent_containers/food/drinks/bottle/random_drink/New() ..() - var/list/possible_drinks = drinks.Copy() + var/list/possible_drinks = GLOB.drinks.Copy() if(prob(50)) possible_drinks += list("pancuronium","lsd","omnizine","blood") @@ -113,7 +113,7 @@ ..() var/R = get_random_reagent_id() - if(rare_chemicals.Find(R)) + if(GLOB.rare_chemicals.Find(R)) reagents.add_reagent(R, 10) else reagents.add_reagent(R, rand(3, 10)*10) @@ -131,13 +131,13 @@ /obj/item/storage/pill_bottle/random_meds/New() ..() for(var/i in 1 to storage_slots) - var/list/possible_medicines = standard_medicines.Copy() + var/list/possible_medicines = GLOB.standard_medicines.Copy() if(prob(50)) - possible_medicines += rare_medicines.Copy() + possible_medicines += GLOB.rare_medicines.Copy() var/datum/reagent/R = pick(possible_medicines) var/obj/item/reagent_containers/food/pill/P = new(src) - if(rare_medicines.Find(R)) + if(GLOB.rare_medicines.Find(R)) P.reagents.add_reagent(R, 10) else P.reagents.add_reagent(R, rand(2, 5)*10) @@ -182,11 +182,11 @@ /obj/structure/closet/crate/secure/chemicals/New() ..() - for(var/chem in standard_chemicals) + for(var/chem in GLOB.standard_chemicals) var/obj/item/reagent_containers/glass/bottle/B = new(src) B.reagents.add_reagent(chem, B.volume) if(prob(85)) - var/datum/reagent/r = chemical_reagents_list[chem] + var/datum/reagent/r = GLOB.chemical_reagents_list[chem] B.name = "[r.name] bottle" // B.identify_probability = 100 else diff --git a/code/game/objects/items/robot/robot_parts.dm b/code/game/objects/items/robot/robot_parts.dm index 2e34c98e06b..65f504b4ae0 100644 --- a/code/game/objects/items/robot/robot_parts.dm +++ b/code/game/objects/items/robot/robot_parts.dm @@ -229,12 +229,12 @@ if(!M.brainmob.key) var/ghost_can_reenter = 0 if(M.brainmob.mind) - for(var/mob/dead/observer/G in player_list) + for(var/mob/dead/observer/G in GLOB.player_list) if(G.can_reenter_corpse && G.mind == M.brainmob.mind) ghost_can_reenter = 1 break - for(var/mob/living/simple_animal/S in player_list) - if(S in respawnable_list) + for(var/mob/living/simple_animal/S in GLOB.player_list) + if(S in GLOB.respawnable_list) ghost_can_reenter = 1 break if(!ghost_can_reenter) diff --git a/code/game/objects/items/robot/robot_upgrades.dm b/code/game/objects/items/robot/robot_upgrades.dm index 2c0f3cb1e70..4bef1cbb324 100644 --- a/code/game/objects/items/robot/robot_upgrades.dm +++ b/code/game/objects/items/robot/robot_upgrades.dm @@ -90,13 +90,13 @@ return 0 if(!R.key) - for(var/mob/dead/observer/ghost in player_list) + for(var/mob/dead/observer/ghost in GLOB.player_list) if(ghost.mind && ghost.mind.current == R) R.key = ghost.key R.stat = CONSCIOUS - dead_mob_list -= R //please never forget this ever kthx - living_mob_list += R + GLOB.dead_mob_list -= R //please never forget this ever kthx + GLOB.living_mob_list += R R.notify_ai(1) return 1 diff --git a/code/game/objects/items/shooting_range.dm b/code/game/objects/items/shooting_range.dm index 2a4a5a3fab1..a91410c28fe 100644 --- a/code/game/objects/items/shooting_range.dm +++ b/code/game/objects/items/shooting_range.dm @@ -159,21 +159,21 @@ var/b2y1 = 0 var/b2y2 = 0 - New(var/obj/item/target/Target, var/pixel_x = 0, var/pixel_y = 0) - if(!Target) return +/datum/bullethole/New(obj/item/target/Target, pixel_x = 0, pixel_y = 0) + if(!Target) return - // Randomize the first box - b1x1 = pixel_x - pick(1,1,1,1,2,2,3,3,4) - b1x2 = pixel_x + pick(1,1,1,1,2,2,3,3,4) - b1y = pixel_y - if(prob(35)) - b1y += rand(-4,4) + // Randomize the first box + b1x1 = pixel_x - pick(1,1,1,1,2,2,3,3,4) + b1x2 = pixel_x + pick(1,1,1,1,2,2,3,3,4) + b1y = pixel_y + if(prob(35)) + b1y += rand(-4,4) - // Randomize the second box - b2x = pixel_x - if(prob(35)) - b2x += rand(-4,4) - b2y1 = pixel_y + pick(1,1,1,1,2,2,3,3,4) - b2y2 = pixel_y - pick(1,1,1,1,2,2,3,3,4) + // Randomize the second box + b2x = pixel_x + if(prob(35)) + b2x += rand(-4,4) + b2y1 = pixel_y + pick(1,1,1,1,2,2,3,3,4) + b2y2 = pixel_y - pick(1,1,1,1,2,2,3,3,4) - Target.bulletholes.Add(src) + Target.bulletholes.Add(src) diff --git a/code/game/objects/items/stacks/rods.dm b/code/game/objects/items/stacks/rods.dm index f5d434a9811..41079dcb204 100644 --- a/code/game/objects/items/stacks/rods.dm +++ b/code/game/objects/items/stacks/rods.dm @@ -47,7 +47,6 @@ var/global/list/datum/stack_recipe/rod_recipes = list ( \ if(WT.remove_fuel(0,user)) var/obj/item/stack/sheet/metal/new_item = new(user.loc) - new_item.add_to_stacks(user) if(new_item.get_amount() <= 0) // stack was moved into another one on the pile new_item = locate() in user.loc diff --git a/code/game/objects/items/stacks/sheets/glass.dm b/code/game/objects/items/stacks/sheets/glass.dm index ebc89cdca7a..5f9b7781f22 100644 --- a/code/game/objects/items/stacks/sheets/glass.dm +++ b/code/game/objects/items/stacks/sheets/glass.dm @@ -58,7 +58,6 @@ GLOBAL_LIST_INIT(glass_recipes, list ( \ var/obj/item/stack/rods/V = W var/obj/item/stack/sheet/rglass/RG = new (user.loc) RG.add_fingerprint(user) - RG.add_to_stacks(user) V.use(1) var/obj/item/stack/sheet/glass/G = src src = null @@ -124,7 +123,6 @@ GLOBAL_LIST_INIT(pglass_recipes, list ( \ var/obj/item/stack/rods/V = W var/obj/item/stack/sheet/plasmarglass/RG = new (user.loc) RG.add_fingerprint(user) - RG.add_to_stacks(user) V.use(1) var/obj/item/stack/sheet/glass/G = src src = null diff --git a/code/game/objects/items/stacks/sheets/mineral.dm b/code/game/objects/items/stacks/sheets/mineral.dm index de842402ba9..45bea3fedd8 100644 --- a/code/game/objects/items/stacks/sheets/mineral.dm +++ b/code/game/objects/items/stacks/sheets/mineral.dm @@ -19,7 +19,7 @@ var/global/list/datum/stack_recipe/sandstone_recipes = list ( \ null, \ new/datum/stack_recipe("Assistant Statue", /obj/structure/statue/sandstone/assistant, 5, one_per_turf = 1, on_floor = 1), \ null, \ - new/datum/stack_recipe("Breakdown into sand", /obj/item/ore/glass, 1, one_per_turf = 0, on_floor = 1), \ + new/datum/stack_recipe("Breakdown into sand", /obj/item/stack/ore/glass, 1, one_per_turf = 0, on_floor = 1), \ ) var/global/list/datum/stack_recipe/silver_recipes = list ( \ @@ -166,7 +166,7 @@ var/global/list/datum/stack_recipe/abductor_recipes = list ( \ /obj/item/stack/sheet/mineral/plasma/attackby(obj/item/W, mob/user, params) if(is_hot(W) > 300)//If the temperature of the object is over 300, then ignite - message_admins("Plasma sheets ignited by [key_name_admin(user)](?) (FLW) in ([x],[y],[z] - JMP)",0,1) + message_admins("Plasma sheets ignited by [key_name_admin(user)]([ADMIN_QUE(user,"?")]) ([ADMIN_FLW(user,"FLW")]) in ([x],[y],[z] - JMP)",0,1) log_game("Plasma sheets ignited by [key_name(user)] in ([x],[y],[z])") investigate_log("was ignited by [key_name(user)]","atmos") fire_act() @@ -242,6 +242,7 @@ var/global/list/datum/stack_recipe/abductor_recipes = list ( \ var/global/list/datum/stack_recipe/titanium_recipes = list ( new/datum/stack_recipe("titanium tile", /obj/item/stack/tile/mineral/titanium, 1, 4, 20), + new/datum/stack_recipe("surgical tray", /obj/structure/table/tray, 2, one_per_turf = 1, on_floor = 1), ) /obj/item/stack/sheet/mineral/titanium/New(loc, amount=null) diff --git a/code/game/objects/items/stacks/stack.dm b/code/game/objects/items/stacks/stack.dm index b6b3021a08e..3c33d8f66a0 100644 --- a/code/game/objects/items/stacks/stack.dm +++ b/code/game/objects/items/stacks/stack.dm @@ -14,15 +14,34 @@ var/singular_name var/amount = 1 var/to_transfer = 0 - var/max_amount //also see stack recipes initialisation, param "max_res_amount" must be equal to this max_amount + var/max_amount = 50 //also see stack recipes initialisation, param "max_res_amount" must be equal to this max_amount var/merge_type = null // This path and its children should merge with this stack, defaults to src.type -/obj/item/stack/New(var/loc, var/amt = null) +/obj/item/stack/New(loc, new_amount, merge = TRUE) ..() - if(amt != null) //Allow for stacks with the amount=0 - amount = amt + if(new_amount != null) + amount = new_amount + while(amount > max_amount) + amount -= max_amount + new type(loc, max_amount, FALSE) if(!merge_type) merge_type = type + if(merge && !(amount >= max_amount)) + for(var/obj/item/stack/S in loc) + if(S.merge_type == merge_type) + merge(S) + +/obj/item/stack/Crossed(obj/O) + if(amount >= max_amount || ismob(loc)) // Prevents unnecessary call. Also prevents merging stack automatically in a mob's inventory + return + if(istype(O, merge_type) && !O.throwing) + merge(O) + ..() + +/obj/item/stack/hitby(atom/movable/AM, skipcatch, hitpush) + if(istype(AM, merge_type) && !(amount >= max_amount)) + merge(AM) + ..() /obj/item/stack/Destroy() if(usr && usr.machine == src) @@ -35,6 +54,11 @@ to_chat(user, "There are [amount] [singular_name]\s in the stack.") else to_chat(user, "There are [amount] [name]\s in the stack.") + to_chat(user,"Ctrl-Shift-click to take a custom amount.") + +/obj/item/stack/proc/add(newamount) + amount += newamount + update_icon() /obj/item/stack/attack_self(mob/user) list_recipes(user) @@ -141,7 +165,6 @@ var/datum/stack_recipe/R = recipes_list[text2num(href_list["make"])] var/multiplier = text2num(href_list["multiplier"]) - var/atom/creation_loc = (loc == usr) ? usr.loc : loc if(!multiplier) multiplier = 1 @@ -156,11 +179,11 @@ to_chat(usr, "The [R.title] won't fit here!") return FALSE - if(R.one_per_turf && (locate(R.result_type) in creation_loc)) + if(R.one_per_turf && (locate(R.result_type) in usr.drop_location())) to_chat(usr, "There is another [R.title] here!") return 0 - if(R.on_floor && !istype(creation_loc, /turf/simulated)) + if(R.on_floor && !istype(usr.drop_location(), /turf/simulated)) to_chat(usr, "\The [R.title] must be constructed on the floor!") return 0 @@ -172,16 +195,16 @@ if(amount < R.req_amount * multiplier) return - var/atom/O = new R.result_type(creation_loc) + var/atom/O + if(R.max_res_amount > 1) //Is it a stack? + O = new R.result_type(usr.drop_location(), R.res_amount * multiplier) + else + O = new R.result_type(usr.drop_location()) O.setDir(usr.dir) - if(R.max_res_amount > 1) - var/obj/item/stack/new_item = O - new_item.amount = R.res_amount * multiplier - //new_item.add_to_stacks(usr) + use(R.req_amount * multiplier) R.post_build(src, O) - amount -= R.req_amount * multiplier if(amount < 1) // Just in case a stack's amount ends up fractional somehow var/oldsrc = src src = null //dont kill proc after del() @@ -202,37 +225,23 @@ interact(usr) return -/obj/item/stack/proc/use(used) +/obj/item/stack/proc/use(used, check = TRUE) + if(check && zero_amount()) + return FALSE if(amount < used) - return 0 + return FALSE amount -= used - if(amount < 1) // Just in case a stack's amount ends up fractional somehow + if(amount < 1) if(isrobot(loc)) - var/mob/living/silicon/robot/R = loc //Horrifying cyborg snowflake code that allows stacks to GC and cyborgs not to horrendously break + var/mob/living/silicon/robot/R = loc if(locate(src) in R.module.modules) R.module.modules -= src - if(usr) - usr.unEquip(src, TRUE) // this has to be unEquip() over drop_item() or something similar because of cyborgs - qdel(src) + if(R) + R.unEquip(src, TRUE) + zero_amount() update_icon() return 1 -/obj/item/stack/proc/add_to_stacks(mob/usr) - var/obj/item/stack/oldsrc = src - src = null - for(var/obj/item/stack/item in usr.loc) - if(item == oldsrc) - continue - if(!istype(item, oldsrc.type)) - continue - if(item.amount >= item.max_amount) - continue - oldsrc.attackby(item, usr) - to_chat(usr, "You add new [item.singular_name] to the stack. It now contains [item.amount] [item.singular_name]\s.") - if(oldsrc.amount <= 0) - break - oldsrc.update_icon() - /obj/item/stack/proc/get_amount() return amount @@ -252,46 +261,69 @@ return F /obj/item/stack/attack_hand(mob/user) - if(user.is_in_inactive_hand(src)) - var/obj/item/stack/F = split(user, 1) - user.put_in_hands(F) + if(user.is_in_inactive_hand(src) && amount > 1) + change_stack(user, 1) if(src && usr.machine == src) spawn(0) interact(usr) else ..() +/obj/item/stack/CtrlShiftClick(mob/living/user) + if(!istype(user) || user.incapacitated()) + to_chat(user, "You can't do that right now!") + return + if(!in_range(src, user) || issilicon(usr)) + return + if(amount < 1) + return + //get amount from user + var/min = 0 + var/max = get_amount() + var/stackmaterial = round(input(user, "How many sheets do you wish to take out of this stack? (Maximum: [max])") as num) + if(stackmaterial == null || stackmaterial <= min || stackmaterial > get_amount()) + return + change_stack(user,stackmaterial) + to_chat(user, "You take [stackmaterial] sheets out of the stack.") + +/obj/item/stack/proc/change_stack(mob/user,amount) + var/obj/item/stack/F = new type(user, amount, FALSE) + . = F + F.copy_evidences(src) + user.put_in_hands(F) + add_fingerprint(user) + F.add_fingerprint(user) + use(amount) + /obj/item/stack/attackby(obj/item/W, mob/user, params) - ..() if(istype(W, merge_type)) var/obj/item/stack/S = W - if(S.amount >= max_amount) - return 1 - - if(user.is_in_inactive_hand(src)) - var/desired = input("How much would you like to transfer from this stack?", "How much?", 1) as null|num - if(!desired) - return - desired = round(desired) - to_transfer = max(1,min(desired,S.max_amount-S.amount,src.amount)) - else - to_transfer = min(src.amount, S.max_amount-S.amount) - - S.amount += to_transfer - if(S && usr.machine == S) - spawn(0) - S.interact(usr) - use(to_transfer) - if(src && usr.machine == src) - spawn(0) - interact(usr) - S.update_icon() + merge(S) + to_chat(user, "Your [S.name] stack now contains [S.get_amount()] [S.singular_name]\s.") else return ..() +/obj/item/stack/proc/zero_amount() + if(amount < 1) + qdel(src) + return TRUE + return FALSE + +/obj/item/stack/proc/merge(obj/item/stack/S) //Merge src into S, as much as possible + if(QDELETED(S) || QDELETED(src) || S == src) //amusingly this can cause a stack to consume itself, let's not allow that. + return FALSE + var/transfer = get_amount() + transfer = min(transfer, S.max_amount - S.amount) + if(transfer <= 0) + return + if(pulledby) + pulledby.start_pulling(S) + S.copy_evidences(src) + S.add(transfer) + use(transfer) + /obj/item/stack/proc/copy_evidences(obj/item/stack/from) blood_DNA = from.blood_DNA fingerprints = from.fingerprints fingerprintshidden = from.fingerprintshidden fingerprintslast = from.fingerprintslast - //TODO bloody overlay diff --git a/code/game/objects/items/toys.dm b/code/game/objects/items/toys.dm index c1b88897bfd..e672ff14b10 100644 --- a/code/game/objects/items/toys.dm +++ b/code/game/objects/items/toys.dm @@ -250,9 +250,7 @@ /obj/item/toy/snappop/virus/throw_impact(atom/hit_atom) ..() - var/datum/effect_system/spark_spread/s = new /datum/effect_system/spark_spread - s.set_up(3, 1, src) - s.start() + do_sparks(3, 1, src) new /obj/effect/decal/cleanable/ash(src.loc) visible_message("The [name] explodes!","You hear a bang!") playsound(src, 'sound/effects/snap.ogg', 50, 1) @@ -270,9 +268,7 @@ var/ash_type = /obj/effect/decal/cleanable/ash /obj/item/toy/snappop/proc/pop_burst(var/n=3, var/c=1) - var/datum/effect_system/spark_spread/s = new() - s.set_up(n, c, src) - s.start() + do_sparks(n, c, src) new ash_type(loc) visible_message("[src] explodes!", "You hear a snap!") diff --git a/code/game/objects/items/weapons/AI_modules.dm b/code/game/objects/items/weapons/AI_modules.dm index 696c75eb0e1..a91cd3a01cb 100755 --- a/code/game/objects/items/weapons/AI_modules.dm +++ b/code/game/objects/items/weapons/AI_modules.dm @@ -43,7 +43,7 @@ AI MODULES src.transmitInstructions(comp.current, usr) to_chat(comp.current, "These are your laws now:") comp.current.show_laws() - for(var/mob/living/silicon/robot/R in mob_list) + for(var/mob/living/silicon/robot/R in GLOB.mob_list) if(R.lawupdate && (R.connected_ai == comp.current)) to_chat(R, "These are your laws now:") R.show_laws() diff --git a/code/game/objects/items/weapons/RCD.dm b/code/game/objects/items/weapons/RCD.dm index 5cc7ee684af..d68922748d7 100644 --- a/code/game/objects/items/weapons/RCD.dm +++ b/code/game/objects/items/weapons/RCD.dm @@ -1,7 +1,34 @@ /* CONTAINS: -RCD +RCD // no fucking shit sherlock */ +#define RCD_PAGE_MAIN 1 +#define RCD_PAGE_AIRLOCK 2 + +#define RCD_MODE_TURF "Turf" +#define RCD_MODE_AIRLOCK "Airlock" +#define RCD_MODE_DECON "Deconstruct" +#define RCD_MODE_WINDOW "Windows" + +GLOBAL_LIST_INIT(rcd_door_types, list( + /obj/machinery/door/airlock = "Standard", /obj/machinery/door/airlock/glass = "Standard (Glass)", + /obj/machinery/door/airlock/command = "Command", /obj/machinery/door/airlock/command/glass = "Command (Glass)", + /obj/machinery/door/airlock/security = "Security", /obj/machinery/door/airlock/security/glass = "Security (Glass)", + /obj/machinery/door/airlock/engineering = "Engineering", /obj/machinery/door/airlock/engineering/glass = "Engineering (Glass)", + /obj/machinery/door/airlock/medical = "Medical", /obj/machinery/door/airlock/medical/glass = "Medical (Glass)", + /obj/machinery/door/airlock/maintenance = "Maintenance", /obj/machinery/door/airlock/maintenance/glass = "Maintenance (Glass)", + /obj/machinery/door/airlock/external = "External", /obj/machinery/door/airlock/external/glass = "External (Glass)", + /obj/machinery/door/airlock/maintenance/external = "External Maintenance", + /obj/machinery/door/airlock/maintenance/external/glass = "External Maintenance (Glass)", + /obj/machinery/door/airlock/freezer = "Freezer", + /obj/machinery/door/airlock/mining = "Mining", /obj/machinery/door/airlock/mining/glass = "Mining (Glass)", + /obj/machinery/door/airlock/research = "Research", /obj/machinery/door/airlock/research/glass = "Research (Glass)", + /obj/machinery/door/airlock/atmos = "Atmospherics", /obj/machinery/door/airlock/atmos/glass = "Atmospherics (Glass)", + /obj/machinery/door/airlock/science = "Science", /obj/machinery/door/airlock/science/glass = "Science (Glass)", + /obj/machinery/door/airlock/hatch = "Airtight Hatch", + /obj/machinery/door/airlock/maintenance_hatch = "Maintenance Hatch" +)) + /obj/item/rcd name = "rapid-construction-device (RCD)" desc = "A device used to rapidly build and deconstruct walls, floors and airlocks." @@ -21,76 +48,123 @@ RCD toolspeed = 1 usesound = 'sound/items/Deconstruct.ogg' flags_2 = NO_MAT_REDEMPTION_2 + req_access = list(access_engine) + + // Important shit var/datum/effect_system/spark_spread/spark_system - var/max_matter = 100 var/matter = 0 - var/working = 0 - var/mode = 1 + var/max_matter = 100 + var/mode = RCD_MODE_TURF var/canRwall = 0 - var/menu = 1 + + // UI shit + var/menu = RCD_PAGE_MAIN + var/locked = TRUE var/door_type = /obj/machinery/door/airlock var/door_name = "Airlock" - req_access = list(access_engine) var/list/door_accesses = list() var/list/door_accesses_list = list() var/one_access - var/locked = 1 - var/static/list/allowed_door_types = list( - /obj/machinery/door/airlock = "Standard", /obj/machinery/door/airlock/glass = "Standard (Glass)", - /obj/machinery/door/airlock/command = "Command", /obj/machinery/door/airlock/command/glass = "Command (Glass)", - /obj/machinery/door/airlock/security = "Security", /obj/machinery/door/airlock/security/glass = "Security (Glass)", - /obj/machinery/door/airlock/engineering = "Engineering", /obj/machinery/door/airlock/engineering/glass = "Engineering (Glass)", - /obj/machinery/door/airlock/medical = "Medical", /obj/machinery/door/airlock/medical/glass = "Medical (Glass)", - /obj/machinery/door/airlock/maintenance = "Maintenance", /obj/machinery/door/airlock/maintenance/glass = "Maintenance (Glass)", - /obj/machinery/door/airlock/external = "External", /obj/machinery/door/airlock/external/glass = "External (Glass)", - /obj/machinery/door/airlock/maintenance/external = "External Maintenance", /obj/machinery/door/airlock/maintenance/external/glass = "External Maintenance (Glass)", - /obj/machinery/door/airlock/freezer = "Freezer", - /obj/machinery/door/airlock/mining = "Mining", /obj/machinery/door/airlock/mining/glass = "Mining (Glass)", - /obj/machinery/door/airlock/research = "Research", /obj/machinery/door/airlock/research/glass = "Research (Glass)", - /obj/machinery/door/airlock/atmos = "Atmospherics", /obj/machinery/door/airlock/atmos/glass = "Atmospherics (Glass)", - /obj/machinery/door/airlock/science = "Science", /obj/machinery/door/airlock/science/glass = "Science (Glass)", - /obj/machinery/door/airlock/hatch = "Airtight Hatch", - /obj/machinery/door/airlock/maintenance_hatch = "Maintenance Hatch") -/obj/item/rcd/New() - desc = "A RCD. It currently holds [matter]/[max_matter] matter-units." + // Stupid shit + var/static/allowed_targets = list(/turf, /obj/structure/grille, /obj/structure/window, /obj/structure/lattice, /obj/machinery/door/airlock) + +/obj/item/rcd/Initialize() + . = ..() spark_system = new /datum/effect_system/spark_spread spark_system.set_up(5, 0, src) spark_system.attach(src) - rcd_list += src + GLOB.rcd_list += src + door_accesses_list = list() for(var/access in get_all_accesses()) door_accesses_list[++door_accesses_list.len] = list("name" = get_access_desc(access), "id" = access, "enabled" = (access in door_accesses)) - return + +/obj/item/rcd/examine(mob/user) + . = ..() + to_chat(user, "MATTER: [matter]/[max_matter] matter-units.") + to_chat(user, "MODE: [mode].") /obj/item/rcd/Destroy() QDEL_NULL(spark_system) - rcd_list -= src + GLOB.rcd_list -= src return ..() +/obj/item/rcd/proc/get_airlock_image(airlock_type) + var/obj/machinery/door/airlock/proto = airlock_type + var/ic = initial(proto.icon) + var/mutable_appearance/MA = mutable_appearance(ic, "closed") + if(!initial(proto.glass)) + MA.overlays += "fill_closed" + // Not scaling these down to button size because they look horrible then, instead just bumping up radius. + return MA + +/obj/item/rcd/proc/check_menu(mob/living/user) + if(!istype(user)) + return FALSE + if(user.incapacitated() || !user.Adjacent(src)) + return FALSE + return TRUE + /obj/item/rcd/attackby(obj/item/W, mob/user, params) ..() + if(istype(W, /obj/item/rcd_ammo)) var/obj/item/rcd_ammo/R = W if((matter + R.ammoamt) > max_matter) to_chat(user, "The RCD can't hold any more matter-units.") return matter += R.ammoamt - user.drop_item() - qdel(W) + if(!user.unEquip(R)) + to_chat(user, "[R] is stuck to your hand!") + return + qdel(R) playsound(loc, 'sound/machines/click.ogg', 50, 1) to_chat(user, "The RCD now holds [matter]/[max_matter] matter-units.") - desc = "A RCD. It currently holds [matter]/[max_matter] matter-units." SSnanoui.update_uis(src) + +/obj/item/rcd/proc/radial_menu(mob/user) + if(!check_menu(user)) return + var/list/choices = list( + RCD_MODE_AIRLOCK = image(icon = 'icons/obj/interface.dmi', icon_state = "airlock"), + RCD_MODE_DECON = image(icon = 'icons/obj/interface.dmi', icon_state = "delete"), + RCD_MODE_WINDOW = image(icon = 'icons/obj/interface.dmi', icon_state = "grillewindow"), + RCD_MODE_TURF = image(icon = 'icons/obj/interface.dmi', icon_state = "wallfloor"), + "UI" = image(icon = 'icons/obj/interface.dmi', icon_state = "ui_interact") + ) + if(mode == RCD_MODE_AIRLOCK) + choices += list( + "Change Access" = image(icon = 'icons/obj/interface.dmi', icon_state = "access"), + "Change Airlock Type" = image(icon = 'icons/obj/interface.dmi', icon_state = "airlocktype") + ) + choices -= mode // Get rid of the current mode, clicking it won't do anything. + var/choice = show_radial_menu(user, src, choices, custom_check = CALLBACK(src, .proc/check_menu, user)) + if(!check_menu(user)) + return + switch(choice) + if(RCD_MODE_AIRLOCK, RCD_MODE_DECON, RCD_MODE_WINDOW, RCD_MODE_TURF) + mode = choice + if("UI") + menu = RCD_PAGE_MAIN + ui_interact(user) + return + if("Change Access", "Change Airlock Type") + menu = RCD_PAGE_AIRLOCK + ui_interact(user) + return + else + return + playsound(src, 'sound/effects/pop.ogg', 50, 0) + to_chat(user, "You change [src]'s mode to '[choice]'.") /obj/item/rcd/attack_self(mob/user) - //Change the mode - ui_interact(user) + //Change the mode // Oh I thought the UI was just for fucking staring at + radial_menu(user) /obj/item/rcd/attack_self_tk(mob/user) - ui_interact(user) + radial_menu(user) /obj/item/rcd/ui_interact(mob/user, ui_key = "main", var/datum/nanoui/ui = null, var/force_open = 1, var/datum/topic_state/state = inventory_state) ui = SSnanoui.try_update_ui(user, src, ui_key, ui, force_open) @@ -110,10 +184,10 @@ RCD data["one_access"] = one_access data["locked"] = locked - if(menu == 2) + if(menu == RCD_PAGE_AIRLOCK) var/list/door_types_list = list() - for(var/type in allowed_door_types) - door_types_list[++door_types_list.len] = list("name" = allowed_door_types[type], "type" = type) + for(var/type in GLOB.rcd_door_types) + door_types_list[++door_types_list.len] = list("name" = GLOB.rcd_door_types[type], "type" = type) data["allowed_door_types"] = door_types_list data["door_accesses"] = door_accesses_list @@ -128,13 +202,13 @@ RCD spark_system.start() if(href_list["mode"]) - mode = text2num(href_list["mode"]) + mode = href_list["mode"] . = 1 if(href_list["door_type"]) var/new_door_type = text2path(href_list["door_type"]) - if(!(new_door_type in allowed_door_types)) - message_admins("RCD HREF exploit attempted by [key_name(usr, usr.client)]!") + if(!(new_door_type in GLOB.rcd_door_types)) + message_admins("RCD Door HREF exploit attempted by [key_name(usr)]!") return door_type = new_door_type . = 1 @@ -144,234 +218,229 @@ RCD . = 1 if(href_list["login"]) - if(istype(usr,/mob/living/silicon)) - locked = 0 - else - var/obj/item/I = usr.get_active_hand() - if(istype(I, /obj/item/pda)) - var/obj/item/pda/pda = I - I = pda.id - var/obj/item/card/id/ID = I - if(istype(ID) && ID && check_access(ID)) - locked = 0 + if(allowed(usr)) + locked = FALSE . = 1 if(href_list["logout"]) - locked = 1 + locked = TRUE . = 1 - if(href_list["toggle_one_access"] && !locked) - one_access = !one_access - . = 1 + if(!locked) + if(href_list["toggle_one_access"]) + one_access = !one_access + . = 1 - if(href_list["toggle_access"] && !locked) - var/href_access = text2num(href_list["toggle_access"]) - if(href_access in door_accesses) - door_accesses -= href_access - else - door_accesses += href_access - door_accesses_list = list() - for(var/access in get_all_accesses()) - door_accesses_list[++door_accesses_list.len] = list("name" = get_access_desc(access), "id" = access, "enabled" = (access in door_accesses)) - . = 1 + if(href_list["toggle_access"]) + var/href_access = text2num(href_list["toggle_access"]) + if(href_access in door_accesses) + door_accesses -= href_access + else + door_accesses += href_access + door_accesses_list = list() + for(var/access in get_all_accesses()) + door_accesses_list[++door_accesses_list.len] = list("name" = get_access_desc(access), "id" = access, "enabled" = (access in door_accesses)) + . = 1 - if(href_list["choice"] && !locked) - var/temp_t = sanitize(copytext(input("Enter a custom Airlock Name.","Airlock Name"),1,MAX_MESSAGE_LEN)) - if(temp_t) - door_name = temp_t + if(href_list["choice"]) + var/temp_t = sanitize(copytext(input("Enter a custom Airlock Name.", "Airlock Name"), 1, MAX_MESSAGE_LEN)) + if(temp_t) + door_name = temp_t -/obj/item/rcd/proc/activate() - playsound(loc, usesound, 50, 1) +/obj/item/rcd/proc/mode_turf(atom/A, mob/user) + if(isspaceturf(A) || istype(A, /obj/structure/lattice)) + if(useResource(1, user)) + to_chat(user, "Building Floor...") + playsound(loc, usesound, 50, 1) + var/turf/AT = get_turf(A) + AT.ChangeTurf(/turf/simulated/floor/plating) + return TRUE + return FALSE + if(isfloorturf(A)) + if(checkResource(3, user)) + to_chat(user, "Building Wall...") + playsound(loc, 'sound/machines/click.ogg', 50, 1) + if(do_after(user, 20 * toolspeed, target = A)) + if(!useResource(3, user)) + return FALSE + playsound(loc, usesound, 50, 1) + var/turf/AT = A + AT.ChangeTurf(/turf/simulated/wall) + return TRUE + return FALSE + return FALSE + +/obj/item/rcd/proc/mode_airlock(atom/A, mob/user) + if(isfloorturf(A) && checkResource(10, user)) + to_chat(user, "Building Airlock...") + playsound(loc, 'sound/machines/click.ogg', 50, 1) + if(do_after(user, 50 * toolspeed, target = A)) + if(locate(/obj/machinery/door/airlock) in A.contents) + return FALSE + if(!useResource(10, user)) + return FALSE + playsound(loc, usesound, 50, 1) + var/obj/machinery/door/airlock/T = new door_type(A) + T.name = door_name + T.autoclose = TRUE + if(one_access) + T.req_one_access = door_accesses.Copy() + else + T.req_access = door_accesses.Copy() + return FALSE + return FALSE + +/obj/item/rcd/proc/mode_decon(atom/A, mob/user) + if(iswallturf(A)) + if(istype(A, /turf/simulated/wall/r_wall) && !canRwall) + return FALSE + if(checkResource(5, user)) + to_chat(user, "Deconstructing Wall...") + playsound(loc, 'sound/machines/click.ogg', 50, 1) + if(do_after(user, 40 * toolspeed, target = A)) + if(!useResource(5, user)) + return FALSE + playsound(loc, usesound, 50, 1) + var/turf/AT = A + AT.ChangeTurf(/turf/simulated/floor/plating) + return TRUE + return FALSE + + if(isfloorturf(A)) + if(checkResource(5, user)) + to_chat(user, "Deconstructing Floor...") + playsound(loc, 'sound/machines/click.ogg', 50, 1) + if(do_after(user, 50 * toolspeed, target = A)) + if(!useResource(5, user)) + return FALSE + playsound(loc, usesound, 50, 1) + var/turf/AT = A + AT.ChangeTurf(/turf/space) + return TRUE + return FALSE + + if(istype(A, /obj/machinery/door/airlock)) + if(checkResource(20, user)) + to_chat(user, "Deconstructing Airlock...") + playsound(loc, 'sound/machines/click.ogg', 50, 1) + if(do_after(user, 50 * toolspeed, target = A)) + if(!useResource(20, user)) + return FALSE + playsound(loc, usesound, 50, 1) + qdel(A) + return TRUE + return FALSE + + if(istype(A, /obj/structure/window)) // You mean the grille of course, do you? + A = locate(/obj/structure/grille) in A.loc + if(istype(A, /obj/structure/grille)) + if(!checkResource(2, user)) + return 0 + to_chat(user, "Deconstructing window...") + playsound(loc, 'sound/machines/click.ogg', 50, 1) + if(!do_after(user, 20 * toolspeed, target = A)) + return 0 + if(!useResource(2, user)) + return 0 + playsound(loc, usesound, 50, 1) + var/turf/T1 = get_turf(A) + QDEL_NULL(A) + for(var/obj/structure/window/W in T1.contents) + qdel(W) + for(var/cdir in cardinal) + var/turf/T2 = get_step(T1, cdir) + if(locate(/obj/structure/window/full/shuttle) in T2) + continue // Shuttle windows? Nah. We don't need extra windows there. + if(!(locate(/obj/structure/grille) in T2)) + continue + for(var/obj/structure/window/W in T2) + if(W.dir == turn(cdir, 180)) + qdel(W) + var/obj/structure/window/reinforced/W = new(T2) + W.dir = turn(cdir, 180) + return TRUE + return FALSE + +/obj/item/rcd/proc/mode_window(atom/A, mob/user) + if(isfloorturf(A)) + if(locate(/obj/structure/grille) in A) + return 0 // We already have window + if(!checkResource(2, user)) + return 0 + to_chat(user, "Constructing window...") + playsound(loc, 'sound/machines/click.ogg', 50, 1) + if(!do_after(user, 20 * toolspeed, target = A)) + return 0 + if(locate(/obj/structure/grille) in A) + return 0 // We already have window + if(!useResource(2, user)) + return 0 + playsound(loc, usesound, 50, 1) + new /obj/structure/grille(A) + for(var/obj/structure/window/W in A) + qdel(W) + for(var/cdir in cardinal) + var/turf/T = get_step(A, cdir) + if(locate(/obj/structure/grille) in T) + for(var/obj/structure/window/W in T) + if(W.dir == turn(cdir, 180)) + qdel(W) + else // Build a window! + var/obj/structure/window/reinforced/W = new(A) + W.dir = cdir + var/turf/AT = A + AT.ChangeTurf(/turf/simulated/floor/plating) // Platings go under windows. + return 1 /obj/item/rcd/afterattack(atom/A, mob/user, proximity) - if(!proximity) return - if(istype(A,/area/shuttle)||istype(A,/turf/space/transit)) - return 0 - if(!(istype(A, /turf) || istype(A, /obj/machinery/door/airlock) || istype(A, /obj/structure/grille) || istype(A, /obj/structure/window) || istype(A, /obj/structure/lattice))) - return 0 + if(!proximity) + return FALSE + if(istype(A, /turf/space/transit)) + return FALSE + if(!is_type_in_list(A, allowed_targets)) + return FALSE switch(mode) - if(1) - if(istype(A, /turf/space) || istype(A, /obj/structure/lattice)) - if(useResource(1, user)) - to_chat(user, "Building Floor...") - activate() - var/turf/AT = get_turf(A) - AT.ChangeTurf(/turf/simulated/floor/plating) - return 1 - return 0 - - if(istype(A, /turf/simulated/floor)) - if(checkResource(3, user)) - to_chat(user, "Building Wall ...") - playsound(loc, 'sound/machines/click.ogg', 50, 1) - if(do_after(user, 20 * toolspeed, target = A)) - if(!useResource(3, user)) - return 0 - activate() - var/turf/AT = A - AT.ChangeTurf(/turf/simulated/wall) - return 1 - return 0 - - if(2) - if(istype(A, /turf/simulated/floor)) - if(checkResource(10, user)) - to_chat(user, "Building Airlock...") - playsound(loc, 'sound/machines/click.ogg', 50, 1) - if(do_after(user, 50 * toolspeed, target = A)) - for(var/obj/machinery/door/airlock/D in A.contents) - return 0 - if(!useResource(10, user)) - return 0 - activate() - var/obj/machinery/door/airlock/T = new door_type(A) - T.name = door_name - T.autoclose = 1 - if(one_access) - T.req_one_access = door_accesses.Copy() - else - T.req_access = door_accesses.Copy() - return 1 - return 0 - return 0 - - if(3) - if(istype(A, /turf/simulated/wall)) - if(istype(A, /turf/simulated/wall/r_wall) && !canRwall) - return 0 - if(checkResource(5, user)) - to_chat(user, "Deconstructing Wall...") - playsound(loc, 'sound/machines/click.ogg', 50, 1) - if(do_after(user, 40 * toolspeed, target = A)) - if(!useResource(5, user)) - return 0 - activate() - var/turf/AT = A - AT.ChangeTurf(/turf/simulated/floor/plating) - return 1 - return 0 - - if(istype(A, /turf/simulated/floor)) - if(checkResource(5, user)) - to_chat(user, "Deconstructing Floor...") - playsound(loc, 'sound/machines/click.ogg', 50, 1) - if(do_after(user, 50 * toolspeed, target = A)) - if(!useResource(5, user)) - return 0 - activate() - var/turf/AT = A - AT.ChangeTurf(/turf/space) - return 1 - return 0 - - if(istype(A, /obj/machinery/door/airlock)) - if(checkResource(20, user)) - to_chat(user, "Deconstructing Airlock...") - playsound(loc, 'sound/machines/click.ogg', 50, 1) - if(do_after(user, 50 * toolspeed, target = A)) - if(!useResource(20, user)) - return 0 - activate() - qdel(A) - return 1 - return 0 - - if(istype(A, /obj/structure/window)) // You mean the grille of course, do you? - A = locate(/obj/structure/grille) in A.loc - - if(istype(A, /obj/structure/grille)) - if(!checkResource(2, user)) - return 0 - to_chat(user, "Deconstructing window...") - playsound(loc, 'sound/machines/click.ogg', 50, 1) - if(!do_after(user, 20 * toolspeed, target = A)) - return 0 - if(locate(/obj/structure/window/full/shuttle) in A.contents) - return 0 // Let's not give shuttle-griefers an easy time. - if(!useResource(2, user)) - return 0 - activate() - var/turf/T1 = get_turf(A) - QDEL_NULL(A) - for(var/obj/structure/window/W in T1.contents) - qdel(W) - for(var/cdir in cardinal) - var/turf/T2 = get_step(T1, cdir) - if(locate(/obj/structure/window/full/shuttle) in T2.contents) - continue // Shuttle windows? Nah. We don't need extra windows there. - if(!(locate(/obj/structure/grille) in T2.contents)) - continue - for(var/obj/structure/window/W in T2.contents) - if(W.dir == turn(cdir, 180)) - qdel(W) - var/obj/structure/window/reinforced/W = new(T2) - W.dir = turn(cdir, 180) - return 1 - return 0 - if(4) - if(istype(A, /turf/simulated/floor)) - if(locate(/obj/structure/grille) in contents) - return 0 // We already have window - if(!checkResource(2, user)) - return 0 - to_chat(user, "Constructing window...") - playsound(loc, 'sound/machines/click.ogg', 50, 1) - if(!do_after(user, 20 * toolspeed, target = A)) - return 0 - if(locate(/obj/structure/grille) in A.contents) - return 0 // We already have window - if(!useResource(2, user)) - return 0 - activate() - new /obj/structure/grille(A) - for(var/obj/structure/window/W in contents) - qdel(W) - for(var/cdir in cardinal) - var/turf/T = get_step(A, cdir) - if(locate(/obj/structure/grille) in T.contents) - for(var/obj/structure/window/W in T.contents) - if(W.dir == turn(cdir, 180)) - qdel(W) - else // Build a window! - var/obj/structure/window/reinforced/W = new(A) - W.dir = cdir - var/turf/AT = A - AT.ChangeTurf(/turf/simulated/floor/plating) // Platings go under windows. - return 1 + if(RCD_MODE_TURF) + . = mode_turf(A, user) + if(RCD_MODE_AIRLOCK) + . = mode_airlock(A, user) + if(RCD_MODE_DECON) + . = mode_decon(A, user) + if(RCD_MODE_WINDOW) + . = mode_window(A, user) else to_chat(user, "ERROR: RCD in MODE: [mode] attempted use by [user]. Send this text #coderbus or an admin.") - return 0 + . = 0 SSnanoui.update_uis(src) -/obj/item/rcd/proc/useResource(var/amount, var/mob/user) +/obj/item/rcd/proc/useResource(amount, mob/user) if(matter < amount) return 0 matter -= amount - desc = "A RCD. It currently holds [matter]/[max_matter] matter-units." SSnanoui.update_uis(src) return 1 -/obj/item/rcd/proc/checkResource(var/amount, var/mob/user) +/obj/item/rcd/proc/checkResource(amount, mob/user) return matter >= amount -/obj/item/rcd/borg/useResource(var/amount, var/mob/user) + +/obj/item/rcd/borg/useResource(amount, mob/user) if(!isrobot(user)) return 0 - return user:cell:use(amount * 160) + var/mob/living/silicon/robot/R = user + return R.cell.use(amount * 160) -/obj/item/rcd/borg/checkResource(var/amount, var/mob/user) +/obj/item/rcd/borg/checkResource(amount, mob/user) if(!isrobot(user)) return 0 - return user:cell:charge >= (amount * 160) + var/mob/living/silicon/robot/R = user + return R.cell.charge >= (amount * 160) -/obj/item/rcd/borg/New() - ..() - desc = "A device used to rapidly build and deconstruct walls, floors and airlocks." +/obj/item/rcd/borg canRwall = 1 - /obj/item/rcd/proc/detonate_pulse() audible_message("[src] begins to vibrate and \ buzz loudly!","[src] begins \ diff --git a/code/game/objects/items/weapons/cards_ids.dm b/code/game/objects/items/weapons/cards_ids.dm index daaa5c3e4c4..38051dde621 100644 --- a/code/game/objects/items/weapons/cards_ids.dm +++ b/code/game/objects/items/weapons/cards_ids.dm @@ -774,9 +774,9 @@ // Decals /obj/item/id_decal name = "identification card decal" - desc = "A modification kit to make your ID cards look snazzy.." - icon = 'icons/obj/device.dmi' - icon_state = "batterer" + desc = "A nano-cellophane wrap that molds to an ID card to make it look snazzy." + icon = 'icons/obj/toy.dmi' + icon_state = "id_decal" var/decal_name = "identification card" var/decal_desc = "A card used to provide ID and determine access across the station." var/decal_icon_state = "id" @@ -784,30 +784,40 @@ var/override_name = 0 /obj/item/id_decal/gold - name = "gold ID card card decal" + name = "gold ID card decal" + icon_state = "id_decal_gold" + desc = "Make your ID look like the Captain's or a self-centered HOP's. Applies to any ID." decal_desc = "A golden card which shows power and might." decal_icon_state = "gold" decal_item_state = "gold_id" /obj/item/id_decal/silver name = "silver ID card decal" + icon_state = "id_decal_silver" + desc = "Make your ID look like HOP's because they wouldn't change it officially. Applies to any ID." decal_desc = "A silver card which shows honour and dedication." decal_icon_state = "silver" decal_item_state = "silver_id" /obj/item/id_decal/prisoner name = "prisoner ID card decal" + icon_state = "id_decal_prisoner" + desc = "All the cool kids have an ID that's this color. Applies to any ID." decal_desc = "You are a number, you are not a free man." decal_icon_state = "prisoner" decal_item_state = "orange-id" /obj/item/id_decal/centcom name = "centcom ID card decal" + icon_state = "id_decal_centcom" + desc = "All the prestige without the responsibility or the access. Applies to any ID." decal_desc = "An ID straight from Cent. Com." decal_icon_state = "centcom" /obj/item/id_decal/emag name = "cryptographic sequencer ID card decal" + icon_state = "id_decal_emag" + desc = "A bundle of wires that you can tape to your ID to look very suspect. Applies to any ID." decal_name = "cryptographic sequencer" decal_desc = "It's a card with a magnetic strip attached to some circuitry." decal_icon_state = "emag" diff --git a/code/game/objects/items/weapons/caution.dm b/code/game/objects/items/weapons/caution.dm index 264753dc695..a4599a2e79f 100644 --- a/code/game/objects/items/weapons/caution.dm +++ b/code/game/objects/items/weapons/caution.dm @@ -10,53 +10,52 @@ w_class = WEIGHT_CLASS_SMALL attack_verb = list("warned", "cautioned", "smashed") - proximity_sign - var/timing = 0 - var/armed = 0 - var/timepassed = 0 +/obj/item/caution/proximity_sign + var/timing = 0 + var/armed = 0 + var/timepassed = 0 - attack_self(mob/user as mob) - if(ishuman(user)) - var/mob/living/carbon/human/H = user - if(H.mind.assigned_role != "Janitor") - return - if(armed) - armed = 0 - to_chat(user, "You disarm \the [src].") - return - timing = !timing - if(timing) - processing_objects.Add(src) - else - armed = 0 - timepassed = 0 - to_chat(H, "You [timing ? "activate \the [src]'s timer, you have 15 seconds." : "de-activate \the [src]'s timer."]") +/obj/item/caution/proximity_sign/attack_self(mob/user as mob) + if(ishuman(user)) + var/mob/living/carbon/human/H = user + if(H.mind.assigned_role != "Janitor") + return + if(armed) + armed = 0 + to_chat(user, "You disarm \the [src].") + return + timing = !timing + if(timing) + processing_objects.Add(src) + else + armed = 0 + timepassed = 0 + to_chat(H, "You [timing ? "activate \the [src]'s timer, you have 15 seconds." : "de-activate \the [src]'s timer."]") - process() - if(!timing) - processing_objects.Remove(src) - timepassed++ - if(timepassed >= 15 && !armed) - armed = 1 - timing = 0 +/obj/item/caution/proximity_sign/process() + if(!timing) + processing_objects.Remove(src) + timepassed++ + if(timepassed >= 15 && !armed) + armed = 1 + timing = 0 - HasProximity(atom/movable/AM as mob|obj) - if(armed) - if(istype(AM, /mob/living/carbon) && !istype(AM, /mob/living/carbon/brain)) - var/mob/living/carbon/C = AM - if(C.m_intent != MOVE_INTENT_WALK) - src.visible_message("The [src.name] beeps, \"Running on wet floors is hazardous to your health.\"") - explosion(src.loc,-1,0,2) - if(ishuman(C)) - dead_legs(C) - if(src) - qdel(src) - - proc/dead_legs(mob/living/carbon/human/H as mob) - var/obj/item/organ/external/l = H.get_organ("l_leg") - var/obj/item/organ/external/r = H.get_organ("r_leg") - if(l) - l.droplimb(0, DROPLIMB_SHARP) - if(r) - r.droplimb(0, DROPLIMB_SHARP) +/obj/item/caution/proximity_sign/HasProximity(atom/movable/AM as mob|obj) + if(armed) + if(istype(AM, /mob/living/carbon) && !istype(AM, /mob/living/carbon/brain)) + var/mob/living/carbon/C = AM + if(C.m_intent != MOVE_INTENT_WALK) + src.visible_message("The [src.name] beeps, \"Running on wet floors is hazardous to your health.\"") + explosion(src.loc,-1,0,2) + if(ishuman(C)) + dead_legs(C) + if(src) + qdel(src) +/obj/item/caution/proximity_sign/proc/dead_legs(mob/living/carbon/human/H as mob) + var/obj/item/organ/external/l = H.get_organ("l_leg") + var/obj/item/organ/external/r = H.get_organ("r_leg") + if(l) + l.droplimb(0, DROPLIMB_SHARP) + if(r) + r.droplimb(0, DROPLIMB_SHARP) diff --git a/code/game/objects/items/weapons/cigs.dm b/code/game/objects/items/weapons/cigs.dm index 73ff43abbde..03c3f636888 100644 --- a/code/game/objects/items/weapons/cigs.dm +++ b/code/game/objects/items/weapons/cigs.dm @@ -23,6 +23,7 @@ LIGHTERS ARE IN LIGHTERS.DM w_class = WEIGHT_CLASS_TINY body_parts_covered = null attack_verb = null + container_type = INJECTABLE var/lit = FALSE var/icon_on = "cigon" //Note - these are in masks.dmi not in cigarette.dmi var/icon_off = "cigoff" @@ -50,7 +51,7 @@ LIGHTERS ARE IN LIGHTERS.DM processing_objects -= src return ..() -/obj/item/clothing/mask/cigarette/attack(var/mob/living/M, var/mob/living/user, def_zone) +/obj/item/clothing/mask/cigarette/attack(mob/living/M, mob/living/user, def_zone) if(istype(M) && M.on_fire) user.changeNext_move(CLICK_CD_MELEE) user.do_attack_animation(M) @@ -305,6 +306,8 @@ LIGHTERS ARE IN LIGHTERS.DM /obj/item/clothing/mask/cigarette/cigar/attackby(obj/item/W as obj, mob/user as mob, params) + if(istype(W, /obj/item/reagent_containers)) + return if(istype(W, /obj/item/match)) ..() else @@ -370,6 +373,8 @@ LIGHTERS ARE IN LIGHTERS.DM return /obj/item/clothing/mask/cigarette/pipe/attackby(obj/item/W as obj, mob/user as mob, params) + if(istype(W, /obj/item/reagent_containers)) + return if(istype(W, /obj/item/match)) ..() else diff --git a/code/game/objects/items/weapons/dna_injector.dm b/code/game/objects/items/weapons/dna_injector.dm index 3a7e203101d..681db222d0b 100644 --- a/code/game/objects/items/weapons/dna_injector.dm +++ b/code/game/objects/items/weapons/dna_injector.dm @@ -159,9 +159,10 @@ datatype = DNA2_BUF_SE value = 0xFFF //block = 2 - New() - block = HULKBLOCK - ..() + +/obj/item/dnainjector/hulkmut/New() + block = HULKBLOCK + ..() /obj/item/dnainjector/antihulk name = "DNA-Injector (Anti-Hulk)" @@ -169,9 +170,10 @@ datatype = DNA2_BUF_SE value = 0x001 //block = 2 - New() - block = HULKBLOCK - ..() + +/obj/item/dnainjector/antihulk/New() + block = HULKBLOCK + ..() /obj/item/dnainjector/xraymut name = "DNA-Injector (Xray)" @@ -179,9 +181,10 @@ datatype = DNA2_BUF_SE value = 0xFFF //block = 8 - New() - block = XRAYBLOCK - ..() + +/obj/item/dnainjector/xraymut/New() + block = XRAYBLOCK + ..() /obj/item/dnainjector/antixray name = "DNA-Injector (Anti-Xray)" @@ -189,10 +192,10 @@ datatype = DNA2_BUF_SE value = 0x001 //block = 8 - New() - block = XRAYBLOCK - ..() +/obj/item/dnainjector/antixray/New() + block = XRAYBLOCK + ..() /obj/item/dnainjector/firemut name = "DNA-Injector (Fire)" @@ -200,9 +203,10 @@ datatype = DNA2_BUF_SE value = 0xFFF //block = 10 - New() - block = FIREBLOCK - ..() + +/obj/item/dnainjector/firemut/New() + block = FIREBLOCK + ..() /obj/item/dnainjector/antifire name = "DNA-Injector (Anti-Fire)" @@ -210,9 +214,10 @@ datatype = DNA2_BUF_SE value = 0x001 //block = 10 - New() - block = FIREBLOCK - ..() + +/obj/item/dnainjector/antifire/New() + block = FIREBLOCK + ..() /obj/item/dnainjector/telemut name = "DNA-Injector (Tele.)" @@ -220,9 +225,10 @@ datatype = DNA2_BUF_SE value = 0xFFF //block = 12 - New() - block = TELEBLOCK - ..() + +/obj/item/dnainjector/telemut/New() + block = TELEBLOCK + ..() /obj/item/dnainjector/telemut/darkbundle name = "DNA injector" @@ -235,9 +241,10 @@ datatype = DNA2_BUF_SE value = 0x001 //block = 12 - New() - block = TELEBLOCK - ..() + +/obj/item/dnainjector/antitele/New() + block = TELEBLOCK + ..() /obj/item/dnainjector/nobreath name = "DNA-Injector (Breathless)" @@ -245,9 +252,10 @@ datatype = DNA2_BUF_SE value = 0xFFF //block = 2 - New() - block = BREATHLESSBLOCK - ..() + +/obj/item/dnainjector/nobreath/New() + block = BREATHLESSBLOCK + ..() /obj/item/dnainjector/antinobreath name = "DNA-Injector (Anti-Breathless)" @@ -255,9 +263,10 @@ datatype = DNA2_BUF_SE value = 0x001 //block = 2 - New() - block = BREATHLESSBLOCK - ..() + +/obj/item/dnainjector/antinobreath/New() + block = BREATHLESSBLOCK + ..() /obj/item/dnainjector/remoteview name = "DNA-Injector (Remote View)" @@ -265,9 +274,10 @@ datatype = DNA2_BUF_SE value = 0xFFF //block = 2 - New() - block = REMOTEVIEWBLOCK - ..() + +/obj/item/dnainjector/remoteview/New() + block = REMOTEVIEWBLOCK + ..() /obj/item/dnainjector/antiremoteview name = "DNA-Injector (Anti-Remote View)" @@ -275,9 +285,10 @@ datatype = DNA2_BUF_SE value = 0x001 //block = 2 - New() - block = REMOTEVIEWBLOCK - ..() + +/obj/item/dnainjector/antiremoteview/New() + block = REMOTEVIEWBLOCK + ..() /obj/item/dnainjector/regenerate name = "DNA-Injector (Regeneration)" @@ -285,9 +296,10 @@ datatype = DNA2_BUF_SE value = 0xFFF //block = 2 - New() - block = REGENERATEBLOCK - ..() + +/obj/item/dnainjector/regenerate/New() + block = REGENERATEBLOCK + ..() /obj/item/dnainjector/antiregenerate name = "DNA-Injector (Anti-Regeneration)" @@ -295,9 +307,10 @@ datatype = DNA2_BUF_SE value = 0x001 //block = 2 - New() - block = REGENERATEBLOCK - ..() + +/obj/item/dnainjector/antiregenerate/New() + block = REGENERATEBLOCK + ..() /obj/item/dnainjector/runfast name = "DNA-Injector (Increase Run)" @@ -305,9 +318,10 @@ datatype = DNA2_BUF_SE value = 0xFFF //block = 2 - New() - block = INCREASERUNBLOCK - ..() + +/obj/item/dnainjector/runfast/New() + block = INCREASERUNBLOCK + ..() /obj/item/dnainjector/antirunfast name = "DNA-Injector (Anti-Increase Run)" @@ -315,9 +329,10 @@ datatype = DNA2_BUF_SE value = 0x001 //block = 2 - New() - block = INCREASERUNBLOCK - ..() + +/obj/item/dnainjector/antirunfast/New() + block = INCREASERUNBLOCK + ..() /obj/item/dnainjector/morph name = "DNA-Injector (Morph)" @@ -325,9 +340,10 @@ datatype = DNA2_BUF_SE value = 0xFFF //block = 2 - New() - block = MORPHBLOCK - ..() + +/obj/item/dnainjector/morph/New() + block = MORPHBLOCK + ..() /obj/item/dnainjector/antimorph name = "DNA-Injector (Anti-Morph)" @@ -335,9 +351,10 @@ datatype = DNA2_BUF_SE value = 0x001 //block = 2 - New() - block = MORPHBLOCK - ..() + +/obj/item/dnainjector/antimorph/New() + block = MORPHBLOCK + ..() /obj/item/dnainjector/noprints name = "DNA-Injector (No Prints)" @@ -345,9 +362,10 @@ datatype = DNA2_BUF_SE value = 0xFFF //block = 2 - New() - block = NOPRINTSBLOCK - ..() + +/obj/item/dnainjector/noprints/New() + block = NOPRINTSBLOCK + ..() /obj/item/dnainjector/antinoprints name = "DNA-Injector (Anti-No Prints)" @@ -355,9 +373,10 @@ datatype = DNA2_BUF_SE value = 0x001 //block = 2 - New() - block = NOPRINTSBLOCK - ..() + +/obj/item/dnainjector/antinoprints/New() + block = NOPRINTSBLOCK + ..() /obj/item/dnainjector/insulation name = "DNA-Injector (Shock Immunity)" @@ -365,9 +384,10 @@ datatype = DNA2_BUF_SE value = 0xFFF //block = 2 - New() - block = SHOCKIMMUNITYBLOCK - ..() + +/obj/item/dnainjector/insulation/New() + block = SHOCKIMMUNITYBLOCK + ..() /obj/item/dnainjector/antiinsulation name = "DNA-Injector (Anti-Shock Immunity)" @@ -375,9 +395,10 @@ datatype = DNA2_BUF_SE value = 0x001 //block = 2 - New() - block = SHOCKIMMUNITYBLOCK - ..() + +/obj/item/dnainjector/antiinsulation/New() + block = SHOCKIMMUNITYBLOCK + ..() /obj/item/dnainjector/midgit name = "DNA-Injector (Small Size)" @@ -385,9 +406,10 @@ datatype = DNA2_BUF_SE value = 0xFFF //block = 2 - New() - block = SMALLSIZEBLOCK - ..() + +/obj/item/dnainjector/midgit/New() + block = SMALLSIZEBLOCK + ..() /obj/item/dnainjector/antimidgit name = "DNA-Injector (Anti-Small Size)" @@ -395,9 +417,10 @@ datatype = DNA2_BUF_SE value = 0x001 //block = 2 - New() - block = SMALLSIZEBLOCK - ..() + +/obj/item/dnainjector/antimidgit/New() + block = SMALLSIZEBLOCK + ..() ///////////////////////////////////// /obj/item/dnainjector/antiglasses @@ -406,9 +429,10 @@ datatype = DNA2_BUF_SE value = 0x001 //block = 1 - New() - block = GLASSESBLOCK - ..() + +/obj/item/dnainjector/antiglasses/New() + block = GLASSESBLOCK + ..() /obj/item/dnainjector/glassesmut name = "DNA-Injector (Glasses)" @@ -416,9 +440,10 @@ datatype = DNA2_BUF_SE value = 0xFFF //block = 1 - New() - block = GLASSESBLOCK - ..() + +/obj/item/dnainjector/glassesmut/New() + block = GLASSESBLOCK + ..() /obj/item/dnainjector/epimut name = "DNA-Injector (Epi.)" @@ -426,9 +451,10 @@ datatype = DNA2_BUF_SE value = 0xFFF //block = 3 - New() - block = EPILEPSYBLOCK - ..() + +/obj/item/dnainjector/epimut/New() + block = EPILEPSYBLOCK + ..() /obj/item/dnainjector/antiepi name = "DNA-Injector (Anti-Epi.)" @@ -436,9 +462,10 @@ datatype = DNA2_BUF_SE value = 0x001 //block = 3 - New() - block = EPILEPSYBLOCK - ..() + +/obj/item/dnainjector/antiepi/New() + block = EPILEPSYBLOCK + ..() /obj/item/dnainjector/anticough name = "DNA-Injector (Anti-Cough)" @@ -446,9 +473,10 @@ datatype = DNA2_BUF_SE value = 0x001 //block = 5 - New() - block = COUGHBLOCK - ..() + +/obj/item/dnainjector/anticough/New() + block = COUGHBLOCK + ..() /obj/item/dnainjector/coughmut name = "DNA-Injector (Cough)" @@ -456,9 +484,10 @@ datatype = DNA2_BUF_SE value = 0xFFF //block = 5 - New() - block = COUGHBLOCK - ..() + +/obj/item/dnainjector/coughmut/New() + block = COUGHBLOCK + ..() /obj/item/dnainjector/clumsymut name = "DNA-Injector (Clumsy)" @@ -466,9 +495,10 @@ datatype = DNA2_BUF_SE value = 0xFFF //block = 6 - New() - block = CLUMSYBLOCK - ..() + +/obj/item/dnainjector/clumsymut/New() + block = CLUMSYBLOCK + ..() /obj/item/dnainjector/anticlumsy name = "DNA-Injector (Anti-Clumy)" @@ -476,9 +506,10 @@ datatype = DNA2_BUF_SE value = 0x001 //block = 6 - New() - block = CLUMSYBLOCK - ..() + +/obj/item/dnainjector/anticlumsy/New() + block = CLUMSYBLOCK + ..() /obj/item/dnainjector/antitour name = "DNA-Injector (Anti-Tour.)" @@ -486,9 +517,10 @@ datatype = DNA2_BUF_SE value = 0x001 //block = 7 - New() - block = TWITCHBLOCK - ..() + +/obj/item/dnainjector/antitour/New() + block = TWITCHBLOCK + ..() /obj/item/dnainjector/tourmut name = "DNA-Injector (Tour.)" @@ -496,9 +528,10 @@ datatype = DNA2_BUF_SE value = 0xFFF //block = 7 - New() - block = TWITCHBLOCK - ..() + +/obj/item/dnainjector/tourmut/New() + block = TWITCHBLOCK + ..() /obj/item/dnainjector/stuttmut name = "DNA-Injector (Stutt.)" @@ -506,9 +539,10 @@ datatype = DNA2_BUF_SE value = 0xFFF //block = 9 - New() - block = NERVOUSBLOCK - ..() + +/obj/item/dnainjector/stuttmut/New() + block = NERVOUSBLOCK + ..() /obj/item/dnainjector/antistutt @@ -517,9 +551,10 @@ datatype = DNA2_BUF_SE value = 0x001 //block = 9 - New() - block = NERVOUSBLOCK - ..() + +/obj/item/dnainjector/antistutt/New() + block = NERVOUSBLOCK + ..() /obj/item/dnainjector/blindmut name = "DNA-Injector (Blind)" @@ -527,9 +562,10 @@ datatype = DNA2_BUF_SE value = 0xFFF //block = 11 - New() - block = BLINDBLOCK - ..() + +/obj/item/dnainjector/blindmut/New() + block = BLINDBLOCK + ..() /obj/item/dnainjector/antiblind name = "DNA-Injector (Anti-Blind)" @@ -537,9 +573,10 @@ datatype = DNA2_BUF_SE value = 0x001 //block = 11 - New() - block = BLINDBLOCK - ..() + +/obj/item/dnainjector/antiblind/New() + block = BLINDBLOCK + ..() /obj/item/dnainjector/telemut name = "DNA-Injector (Tele.)" @@ -547,9 +584,10 @@ datatype = DNA2_BUF_SE value = 0xFFF //block = 12 - New() - block = TELEBLOCK - ..() + +/obj/item/dnainjector/telemut/New() + block = TELEBLOCK + ..() /obj/item/dnainjector/antitele name = "DNA-Injector (Anti-Tele.)" @@ -557,9 +595,10 @@ datatype = DNA2_BUF_SE value = 0x001 //block = 12 - New() - block = TELEBLOCK - ..() + +/obj/item/dnainjector/antitele/New() + block = TELEBLOCK + ..() /obj/item/dnainjector/deafmut name = "DNA-Injector (Deaf)" @@ -567,9 +606,10 @@ datatype = DNA2_BUF_SE value = 0xFFF //block = 13 - New() - block = DEAFBLOCK - ..() + +/obj/item/dnainjector/deafmut/New() + block = DEAFBLOCK + ..() /obj/item/dnainjector/antideaf name = "DNA-Injector (Anti-Deaf)" @@ -577,9 +617,10 @@ datatype = DNA2_BUF_SE value = 0x001 //block = 13 - New() - block = DEAFBLOCK - ..() + +/obj/item/dnainjector/antideaf/New() + block = DEAFBLOCK + ..() /obj/item/dnainjector/hallucination name = "DNA-Injector (Halluctination)" @@ -587,9 +628,10 @@ datatype = DNA2_BUF_SE value = 0xFFF //block = 2 - New() - block = HALLUCINATIONBLOCK - ..() + +/obj/item/dnainjector/hallucination/New() + block = HALLUCINATIONBLOCK + ..() /obj/item/dnainjector/antihallucination name = "DNA-Injector (Anti-Hallucination)" @@ -597,9 +639,10 @@ datatype = DNA2_BUF_SE value = 0x001 //block = 2 - New() - block = HALLUCINATIONBLOCK - ..() + +/obj/item/dnainjector/antihallucination/New() + block = HALLUCINATIONBLOCK + ..() /obj/item/dnainjector/h2m name = "DNA-Injector (Human > Monkey)" @@ -607,9 +650,10 @@ datatype = DNA2_BUF_SE value = 0xFFF //block = 14 - New() - block = MONKEYBLOCK - ..() + +/obj/item/dnainjector/h2m/New() + block = MONKEYBLOCK + ..() /obj/item/dnainjector/m2h name = "DNA-Injector (Monkey > Human)" @@ -617,6 +661,7 @@ datatype = DNA2_BUF_SE value = 0x001 //block = 14 - New() - block = MONKEYBLOCK - ..() + +/obj/item/dnainjector/m2h/New() + block = MONKEYBLOCK + ..() diff --git a/code/game/objects/items/weapons/dnascrambler.dm b/code/game/objects/items/weapons/dnascrambler.dm index fc13fa69f79..bbad0eb9157 100644 --- a/code/game/objects/items/weapons/dnascrambler.dm +++ b/code/game/objects/items/weapons/dnascrambler.dm @@ -6,52 +6,52 @@ icon_state = "lepopen" var/used = null +/obj/item/dnascrambler/update_icon() + if(used) + icon_state = "lepopen0" + else + icon_state = "lepopen" + +/obj/item/dnascrambler/attack(mob/M as mob, mob/user as mob) + if(!M || !user) + return + + if(!ishuman(M) || !ishuman(user)) + return + + if(used) + return + + if(ishuman(M)) + var/mob/living/carbon/human/H = M + if(NO_DNA in H.dna.species.species_traits) + to_chat(user, "You failed to inject [M], as [M.p_they()] [M.p_have()] no DNA to scramble, nor flesh to inject.") + return + + if(M == user) + user.visible_message("[user] injects [user.p_them()]self with [src]!") + injected(user, user) + else + user.visible_message("[user] is trying to inject [M] with [src]!") + if(do_mob(user,M,30)) + user.visible_message("[user] injects [M] with [src].") + injected(M, user) + else + to_chat(user, "You failed to inject [M].") + +/obj/item/dnascrambler/proc/injected(var/mob/living/carbon/human/target, var/mob/living/carbon/user) + if(istype(target)) + var/mob/living/carbon/human/H = target + scramble(1, H, 100) + H.real_name = random_name(H.gender, H.dna.species.name) //Give them a name that makes sense for their species. + H.sync_organ_dna(assimilate = 1) + H.update_body(0) + H.reset_hair() //No more winding up with hairstyles you're not supposed to have, and blowing your cover. + H.reset_markings() //...Or markings. + H.dna.ResetUIFrom(H) + target.update_icons() + + add_attack_logs(user, target, "injected with [src]") + used = 1 update_icon() - if(used) - icon_state = "lepopen0" - else - icon_state = "lepopen" - - attack(mob/M as mob, mob/user as mob) - if(!M || !user) - return - - if(!ishuman(M) || !ishuman(user)) - return - - if(used) - return - - if(ishuman(M)) - var/mob/living/carbon/human/H = M - if(NO_DNA in H.dna.species.species_traits) - to_chat(user, "You failed to inject [M], as [M.p_they()] [M.p_have()] no DNA to scramble, nor flesh to inject.") - return - - if(M == user) - user.visible_message("[user] injects [user.p_them()]self with [src]!") - injected(user, user) - else - user.visible_message("[user] is trying to inject [M] with [src]!") - if(do_mob(user,M,30)) - user.visible_message("[user] injects [M] with [src].") - injected(M, user) - else - to_chat(user, "You failed to inject [M].") - - proc/injected(var/mob/living/carbon/human/target, var/mob/living/carbon/user) - if(istype(target)) - var/mob/living/carbon/human/H = target - scramble(1, H, 100) - H.real_name = random_name(H.gender, H.dna.species.name) //Give them a name that makes sense for their species. - H.sync_organ_dna(assimilate = 1) - H.update_body(0) - H.reset_hair() //No more winding up with hairstyles you're not supposed to have, and blowing your cover. - H.reset_markings() //...Or markings. - H.dna.ResetUIFrom(H) - target.update_icons() - - add_attack_logs(user, target, "injected with [src]") - used = 1 - update_icon() - name = "used " + name + name = "used " + name diff --git a/code/game/objects/items/weapons/explosives.dm b/code/game/objects/items/weapons/explosives.dm index 26639543426..34877ac8788 100644 --- a/code/game/objects/items/weapons/explosives.dm +++ b/code/game/objects/items/weapons/explosives.dm @@ -79,7 +79,7 @@ src.target = AM loc = null - message_admins("[key_name_admin(user)](?) (FLW) planted [src.name] on [target.name] at ([target.x],[target.y],[target.z] - JMP) with [det_time] second fuse",0,1) + message_admins("[key_name_admin(user)]([ADMIN_QUE(user,"?")]) ([ADMIN_FLW(user,"FLW")]) planted [src.name] on [target.name] at ([target.x],[target.y],[target.z] - JMP) with [det_time] second fuse",0,1) log_game("[key_name(user)] planted [name] on [target.name] at ([target.x],[target.y],[target.z]) with [det_time] second fuse") target.overlays += image_overlay @@ -88,7 +88,7 @@ addtimer(CALLBACK(src, .proc/prime), det_time*10) /obj/item/grenade/plastic/suicide_act(mob/user) - message_admins("[key_name_admin(user)](?) (FLW) suicided with [src.name] at ([user.x],[user.y],[user.z] - JMP)",0,1) + message_admins("[key_name_admin(user)]([ADMIN_QUE(user,"?")]) ([ADMIN_FLW(user,"FLW")]) suicided with [src.name] at ([user.x],[user.y],[user.z] - JMP)",0,1) log_game("[key_name(user)] suicided with [name] at ([user.x],[user.y],[user.z])") user.visible_message("[user] activates the [name] and holds it above [user.p_their()] head! It looks like [user.p_theyre()] going out with a bang!") var/message_say = "FOR NO RAISIN!" diff --git a/code/game/objects/items/weapons/extinguisher.dm b/code/game/objects/items/weapons/extinguisher.dm index fb4829dd13f..3d893c86371 100644 --- a/code/game/objects/items/weapons/extinguisher.dm +++ b/code/game/objects/items/weapons/extinguisher.dm @@ -11,6 +11,7 @@ throw_speed = 2 throw_range = 7 force = 10 + container_type = AMOUNT_VISIBLE materials = list(MAT_METAL=90) attack_verb = list("slammed", "whacked", "bashed", "thunked", "battered", "bludgeoned", "thrashed") var/max_water = 50 @@ -36,11 +37,8 @@ sprite_name = "miniFE" /obj/item/extinguisher/examine(mob/user) - if(..(user, 0)) - to_chat(usr, "[bicon(src)] [src.name] contains:") - if(reagents && reagents.reagent_list.len) - for(var/datum/reagent/R in reagents.reagent_list) - to_chat(user, "[R.volume] units of [R.name]") + . = ..() + to_chat(user, "The safety is [safety ? "on" : "off"].") /obj/item/extinguisher/New() diff --git a/code/game/objects/items/weapons/fireworks.dm b/code/game/objects/items/weapons/fireworks.dm index 138cb24ff40..d2e523cf953 100644 --- a/code/game/objects/items/weapons/fireworks.dm +++ b/code/game/objects/items/weapons/fireworks.dm @@ -25,7 +25,7 @@ obj/item/sparkler icon = 'icons/obj/fireworks.dmi' icon_state = "sparkler_0" var/litzor = 0 - var/datum/effect_system/spark_spread/S + obj/item/sparkler/attackby(obj/item/W,mob/user, params) if(litzor) return @@ -36,11 +36,7 @@ obj/item/sparkler/attackby(obj/item/W,mob/user, params) icon_state = "sparkler_1" var/b = rand(5,9) for(var/xy, xy<=b, xy++) - S = new() - S.set_up(1,0,src.loc) - if(ismob(src.loc) || isobj(src.loc)) - S.attach(src.loc) - S.start() + do_sparks(1, 0, loc) sleep(10) qdel(src) /obj/crate/fireworks diff --git a/code/game/objects/items/weapons/grenades/chem_grenade.dm b/code/game/objects/items/weapons/grenades/chem_grenade.dm index 9e836fecc87..8419f0b7537 100644 --- a/code/game/objects/items/weapons/grenades/chem_grenade.dm +++ b/code/game/objects/items/weapons/grenades/chem_grenade.dm @@ -289,7 +289,7 @@ var/mob/last = get_mob_by_ckey(nadeassembly.fingerprintslast) var/turf/T = get_turf(src) var/area/A = get_area(T) - message_admins("grenade primed by an assembly, attached by [key_name_admin(M)](?) ([admin_jump_link(M)]) and last touched by [key_name_admin(last)](?) ([admin_jump_link(last)]) ([nadeassembly.a_left.name] and [nadeassembly.a_right.name]) at [A.name] (JMP). [contained]") + message_admins("grenade primed by an assembly, attached by [key_name_admin(M)][ADMIN_QUE(M,"(?)")] ([admin_jump_link(M)]) and last touched by [key_name_admin(last)][ADMIN_QUE(last,"(?)")] ([admin_jump_link(last)]) ([nadeassembly.a_left.name] and [nadeassembly.a_right.name]) at [A.name] (JMP). [contained]") log_game("grenade primed by an assembly, attached by [key_name(M)] and last touched by [key_name(last)] ([nadeassembly.a_left.name] and [nadeassembly.a_right.name]) at [A.name] ([T.x], [T.y], [T.z]) [contained]") update_mob() @@ -419,7 +419,7 @@ var/mob/last = get_mob_by_ckey(nadeassembly.fingerprintslast) var/turf/T = get_turf(src) var/area/A = get_area(T) - message_admins("grenade primed by an assembly, attached by [key_name_admin(M)](?) (FLW) and last touched by [key_name_admin(last)](?) (FLW) ([nadeassembly.a_left.name] and [nadeassembly.a_right.name]) at [A.name] (JMP).") + message_admins("grenade primed by an assembly, attached by [key_name_admin(M)][ADMIN_QUE(M,"(?)")] ([ADMIN_FLW(M,"FLW")]) and last touched by [key_name_admin(last)][ADMIN_QUE(last,"(?)")] ([ADMIN_FLW(last,"FLW")]) ([nadeassembly.a_left.name] and [nadeassembly.a_right.name]) at [A.name] (JMP).") log_game("grenade primed by an assembly, attached by [key_name(M)] and last touched by [key_name(last)] ([nadeassembly.a_left.name] and [nadeassembly.a_right.name]) at [A.name] ([T.x], [T.y], [T.z])") else addtimer(CALLBACK(src, .proc/prime), det_time) @@ -432,18 +432,18 @@ desc = "Used for emergency sealing of air breaches." stage = READY - New() - ..() - var/obj/item/reagent_containers/glass/beaker/B1 = new(src) - var/obj/item/reagent_containers/glass/beaker/B2 = new(src) +/obj/item/grenade/chem_grenade/metalfoam/New() + ..() + var/obj/item/reagent_containers/glass/beaker/B1 = new(src) + var/obj/item/reagent_containers/glass/beaker/B2 = new(src) - B1.reagents.add_reagent("aluminum", 30) - B2.reagents.add_reagent("fluorosurfactant", 10) - B2.reagents.add_reagent("sacid", 10) + B1.reagents.add_reagent("aluminum", 30) + B2.reagents.add_reagent("fluorosurfactant", 10) + B2.reagents.add_reagent("sacid", 10) - beakers += B1 - beakers += B2 - update_icon() + beakers += B1 + beakers += B2 + update_icon() /obj/item/grenade/chem_grenade/incendiary @@ -451,19 +451,19 @@ desc = "Used for clearing rooms of living things." stage = READY - New() - ..() - var/obj/item/reagent_containers/glass/beaker/large/B1 = new(src) - var/obj/item/reagent_containers/glass/beaker/large/B2 = new(src) +/obj/item/grenade/chem_grenade/incendiary/New() + ..() + var/obj/item/reagent_containers/glass/beaker/large/B1 = new(src) + var/obj/item/reagent_containers/glass/beaker/large/B2 = new(src) - B1.reagents.add_reagent("phosphorus", 25) - B2.reagents.add_reagent("plasma", 25) - B2.reagents.add_reagent("sacid", 25) + B1.reagents.add_reagent("phosphorus", 25) + B2.reagents.add_reagent("plasma", 25) + B2.reagents.add_reagent("sacid", 25) - beakers += B1 - beakers += B2 - update_icon() + beakers += B1 + beakers += B2 + update_icon() /obj/item/grenade/chem_grenade/antiweed @@ -471,20 +471,20 @@ desc = "Used for purging large areas of invasive plant species. Contents under pressure. Do not directly inhale contents." stage = READY - New() - ..() - var/obj/item/reagent_containers/glass/beaker/B1 = new(src) - var/obj/item/reagent_containers/glass/beaker/B2 = new(src) +/obj/item/grenade/chem_grenade/antiweed/New() + ..() + var/obj/item/reagent_containers/glass/beaker/B1 = new(src) + var/obj/item/reagent_containers/glass/beaker/B2 = new(src) - B1.reagents.add_reagent("atrazine", 30) - B1.reagents.add_reagent("potassium", 20) - B2.reagents.add_reagent("phosphorus", 20) - B2.reagents.add_reagent("sugar", 20) - B2.reagents.add_reagent("atrazine", 10) + B1.reagents.add_reagent("atrazine", 30) + B1.reagents.add_reagent("potassium", 20) + B2.reagents.add_reagent("phosphorus", 20) + B2.reagents.add_reagent("sugar", 20) + B2.reagents.add_reagent("atrazine", 10) - beakers += B1 - beakers += B2 - update_icon() + beakers += B1 + beakers += B2 + update_icon() /obj/item/grenade/chem_grenade/cleaner @@ -492,18 +492,18 @@ desc = "BLAM!-brand foaming space cleaner. In a special applicator for rapid cleaning of wide areas." stage = READY - New() - ..() - var/obj/item/reagent_containers/glass/beaker/B1 = new(src) - var/obj/item/reagent_containers/glass/beaker/B2 = new(src) +/obj/item/grenade/chem_grenade/cleaner/New() + ..() + var/obj/item/reagent_containers/glass/beaker/B1 = new(src) + var/obj/item/reagent_containers/glass/beaker/B2 = new(src) - B1.reagents.add_reagent("fluorosurfactant", 40) - B2.reagents.add_reagent("cleaner", 10) - B2.reagents.add_reagent("water", 40) //when you make pre-designed foam reactions that carry the reagents, always add water last + B1.reagents.add_reagent("fluorosurfactant", 40) + B2.reagents.add_reagent("cleaner", 10) + B2.reagents.add_reagent("water", 40) //when you make pre-designed foam reactions that carry the reagents, always add water last - beakers += B1 - beakers += B2 - update_icon() + beakers += B1 + beakers += B2 + update_icon() /obj/item/grenade/chem_grenade/teargas @@ -511,19 +511,19 @@ desc = "Used for nonlethal riot control. Contents under pressure. Do not directly inhale contents." stage = READY - New() - ..() - var/obj/item/reagent_containers/glass/beaker/B1 = new(src) - var/obj/item/reagent_containers/glass/beaker/B2 = new(src) +/obj/item/grenade/chem_grenade/teargas/New() + ..() + var/obj/item/reagent_containers/glass/beaker/B1 = new(src) + var/obj/item/reagent_containers/glass/beaker/B2 = new(src) - B1.reagents.add_reagent("condensedcapsaicin", 25) - B1.reagents.add_reagent("potassium", 25) - B2.reagents.add_reagent("phosphorus", 25) - B2.reagents.add_reagent("sugar", 25) + B1.reagents.add_reagent("condensedcapsaicin", 25) + B1.reagents.add_reagent("potassium", 25) + B2.reagents.add_reagent("phosphorus", 25) + B2.reagents.add_reagent("sugar", 25) - beakers += B1 - beakers += B2 - update_icon() + beakers += B1 + beakers += B2 + update_icon() /obj/item/grenade/chem_grenade/facid name = "acid grenade" @@ -550,19 +550,19 @@ desc = "Contains sarin gas; extremely deadly and fast acting; use with extreme caution." stage = READY - New() - ..() - var/obj/item/reagent_containers/glass/beaker/B1 = new(src) - var/obj/item/reagent_containers/glass/beaker/B2 = new(src) +/obj/item/grenade/chem_grenade/saringas/New() + ..() + var/obj/item/reagent_containers/glass/beaker/B1 = new(src) + var/obj/item/reagent_containers/glass/beaker/B2 = new(src) - B1.reagents.add_reagent("sarin", 25) - B1.reagents.add_reagent("potassium", 25) - B2.reagents.add_reagent("phosphorus", 25) - B2.reagents.add_reagent("sugar", 25) + B1.reagents.add_reagent("sarin", 25) + B1.reagents.add_reagent("potassium", 25) + B2.reagents.add_reagent("phosphorus", 25) + B2.reagents.add_reagent("sugar", 25) - beakers += B1 - beakers += B2 - update_icon() + beakers += B1 + beakers += B2 + update_icon() #undef EMPTY #undef WIRED diff --git a/code/game/objects/items/weapons/grenades/clowngrenade.dm b/code/game/objects/items/weapons/grenades/clowngrenade.dm index 18dbf93ae45..bce9861fb72 100644 --- a/code/game/objects/items/weapons/grenades/clowngrenade.dm +++ b/code/game/objects/items/weapons/grenades/clowngrenade.dm @@ -10,44 +10,34 @@ var/path = 0 var/affected_area = 2 - prime() - ..() - playsound(src.loc, 'sound/items/bikehorn.ogg', 25, -3) - /* - for(var/turf/simulated/floor/T in view(affected_area, src.loc)) - if(prob(75)) - banana(T) - */ - var/i = 0 - var/number = 0 - for(var/direction in alldirs) - for(i = 0; i < 2; i++) - number++ - var/obj/item/grown/bananapeel/traitorpeel/peel = new /obj/item/grown/bananapeel/traitorpeel(get_turf(src.loc)) - /* var/direction = pick(alldirs) - var/spaces = pick(1;150, 2) - var/a = 0 - for(a = 0; a < spaces; a++) - step(peel,direction)*/ - var/a = 1 - if(number & 2) - for(a = 1; a <= 2; a++) - step(peel,direction) - else +/obj/item/grenade/clown_grenade/prime() + ..() + playsound(src.loc, 'sound/items/bikehorn.ogg', 25, -3) + /* + for(var/turf/simulated/floor/T in view(affected_area, src.loc)) + if(prob(75)) + banana(T) + */ + var/i = 0 + var/number = 0 + for(var/direction in alldirs) + for(i = 0; i < 2; i++) + number++ + var/obj/item/grown/bananapeel/traitorpeel/peel = new /obj/item/grown/bananapeel/traitorpeel(get_turf(src.loc)) + /* var/direction = pick(alldirs) + var/spaces = pick(1;150, 2) + var/a = 0 + for(a = 0; a < spaces; a++) + step(peel,direction)*/ + var/a = 1 + if(number & 2) + for(a = 1; a <= 2; a++) step(peel,direction) - new /obj/item/grown/bananapeel/traitorpeel(get_turf(src.loc)) - qdel(src) - return -/* - proc/banana(turf/T as turf) - if(!T || !istype(T)) - return - if(locate(/obj/structure/grille) in T) - return - if(locate(/obj/structure/window) in T) - return - new /obj/item/grown/bananapeel/traitorpeel(T) -*/ + else + step(peel,direction) + new /obj/item/grown/bananapeel/traitorpeel(get_turf(src.loc)) + qdel(src) + return /obj/item/grown/bananapeel/traitorpeel trip_stun = 0 diff --git a/code/game/objects/items/weapons/grenades/custom_grenades.dm b/code/game/objects/items/weapons/grenades/custom_grenades.dm index 133cc906850..b5598bc86be 100644 --- a/code/game/objects/items/weapons/grenades/custom_grenades.dm +++ b/code/game/objects/items/weapons/grenades/custom_grenades.dm @@ -3,17 +3,17 @@ desc = "From the makers of BLAM! brand foaming space cleaner, this bomb guarantees steady work for any janitor." stage = 2 - New() - ..() - var/obj/item/reagent_containers/glass/beaker/B1 = new(src) - var/list/muck = list("blood","carbon","flour","radium") - var/filth = pick(muck - "radium") // not usually radioactive +/obj/item/grenade/chem_grenade/dirt/New() + ..() + var/obj/item/reagent_containers/glass/beaker/B1 = new(src) + var/list/muck = list("blood","carbon","flour","radium") + var/filth = pick(muck - "radium") // not usually radioactive - B1.reagents.add_reagent(filth,25) - if(prob(25)) - B1.reagents.add_reagent(pick(muck - filth,25)) // but sometimes... + B1.reagents.add_reagent(filth,25) + if(prob(25)) + B1.reagents.add_reagent(pick(muck - filth,25)) // but sometimes... - beakers += B1 + beakers += B1 /obj/item/grenade/chem_grenade/meat @@ -22,18 +22,18 @@ stage = 2 - New() - ..() - var/obj/item/reagent_containers/glass/beaker/large/B1 = new(src) - var/obj/item/reagent_containers/glass/beaker/large/B2 = new(src) +/obj/item/grenade/chem_grenade/meat/New() + ..() + var/obj/item/reagent_containers/glass/beaker/large/B1 = new(src) + var/obj/item/reagent_containers/glass/beaker/large/B2 = new(src) - B1.reagents.add_reagent("blood",60) - if(prob(5)) - B1.reagents.add_reagent("blood",1) // Quality control problems, causes a mess - B2.reagents.add_reagent("cryoxadone",30) + B1.reagents.add_reagent("blood",60) + if(prob(5)) + B1.reagents.add_reagent("blood",1) // Quality control problems, causes a mess + B2.reagents.add_reagent("cryoxadone",30) - beakers += B1 - beakers += B2 + beakers += B1 + beakers += B2 /obj/item/grenade/chem_grenade/holywater payload_name = "holy water" @@ -41,11 +41,11 @@ stage = 2 det_time = 30 - New() - ..() - var/obj/item/reagent_containers/glass/beaker/large/B = new(src) - B.reagents.add_reagent("holywater",100) - beakers += B +/obj/item/grenade/chem_grenade/holywater/New() + ..() + var/obj/item/reagent_containers/glass/beaker/large/B = new(src) + B.reagents.add_reagent("holywater",100) + beakers += B /obj/item/grenade/chem_grenade/hellwater payload_name = "hell water" @@ -53,15 +53,15 @@ stage = 2 det_time = 30 - New() - ..() - var/obj/item/reagent_containers/glass/beaker/large/B1 = new(src) - var/obj/item/reagent_containers/glass/beaker/large/B2 = new(src) - B1.reagents.add_reagent("hell_water",80) - B1.reagents.add_reagent("sugar",20) - B2.reagents.add_reagent("hell_water", 60) - B2.reagents.add_reagent("potassium", 20) - B2.reagents.add_reagent("phosphorus", 20) +/obj/item/grenade/chem_grenade/hellwater/New() + ..() + var/obj/item/reagent_containers/glass/beaker/large/B1 = new(src) + var/obj/item/reagent_containers/glass/beaker/large/B2 = new(src) + B1.reagents.add_reagent("hell_water",80) + B1.reagents.add_reagent("sugar",20) + B2.reagents.add_reagent("hell_water", 60) + B2.reagents.add_reagent("potassium", 20) + B2.reagents.add_reagent("phosphorus", 20) /obj/item/grenade/chem_grenade/drugs @@ -69,40 +69,40 @@ desc = "How does it work?" stage = 2 - New() - ..() - var/obj/item/reagent_containers/glass/beaker/large/B1 = new(src) - var/obj/item/reagent_containers/glass/beaker/large/B2 = new(src) +/obj/item/grenade/chem_grenade/drugs/New() + ..() + var/obj/item/reagent_containers/glass/beaker/large/B1 = new(src) + var/obj/item/reagent_containers/glass/beaker/large/B2 = new(src) - B1.reagents.add_reagent("space_drugs", 25) - B1.reagents.add_reagent("lsd", 25) - B1.reagents.add_reagent("potassium", 25) - B2.reagents.add_reagent("phosphorus", 25) - B2.reagents.add_reagent("sugar", 25) + B1.reagents.add_reagent("space_drugs", 25) + B1.reagents.add_reagent("lsd", 25) + B1.reagents.add_reagent("potassium", 25) + B2.reagents.add_reagent("phosphorus", 25) + B2.reagents.add_reagent("sugar", 25) - beakers += B1 - beakers += B2 - update_icon() + beakers += B1 + beakers += B2 + update_icon() /obj/item/grenade/chem_grenade/ethanol payload_name = "ethanol" desc = "Ach, that hits the spot." stage = 2 - New() - ..() - var/obj/item/reagent_containers/glass/beaker/large/B1 = new(src) - var/obj/item/reagent_containers/glass/beaker/large/B2 = new(src) +/obj/item/grenade/chem_grenade/ethanol/New() + ..() + var/obj/item/reagent_containers/glass/beaker/large/B1 = new(src) + var/obj/item/reagent_containers/glass/beaker/large/B2 = new(src) - B1.reagents.add_reagent("ethanol", 75) - B1.reagents.add_reagent("potassium", 25) - B2.reagents.add_reagent("phosphorus", 25) - B2.reagents.add_reagent("sugar", 25) - B2.reagents.add_reagent("ethanol", 25) + B1.reagents.add_reagent("ethanol", 75) + B1.reagents.add_reagent("potassium", 25) + B2.reagents.add_reagent("phosphorus", 25) + B2.reagents.add_reagent("sugar", 25) + B2.reagents.add_reagent("ethanol", 25) - beakers += B1 - beakers += B2 - update_icon() + beakers += B1 + beakers += B2 + update_icon() // ------------------------------------- // Grenades using new grenade assemblies @@ -208,107 +208,67 @@ payload_name = "EMP" stage = 2 - New() - ..() - var/obj/item/reagent_containers/glass/beaker/B1 = new(src) - var/obj/item/reagent_containers/glass/beaker/B2 = new(src) - B1.reagents.add_reagent("uranium",50) - B2.reagents.add_reagent("iron",50) - beakers += B1 - beakers += B2 +/obj/item/grenade/chem_grenade/emp/New() + ..() + var/obj/item/reagent_containers/glass/beaker/B1 = new(src) + var/obj/item/reagent_containers/glass/beaker/B2 = new(src) + B1.reagents.add_reagent("uranium",50) + B2.reagents.add_reagent("iron",50) + beakers += B1 + beakers += B2 // Assembly Variants -/obj/item/grenade/chem_grenade/emp/remote - New() - ..() - CreateDefaultTrigger(/obj/item/assembly/signaler) +/obj/item/grenade/chem_grenade/emp/remote/New() + ..() + CreateDefaultTrigger(/obj/item/assembly/signaler) -/obj/item/grenade/chem_grenade/emp/prox - New() - ..() - CreateDefaultTrigger(/obj/item/assembly/prox_sensor) +/obj/item/grenade/chem_grenade/emp/prox/New() + ..() + CreateDefaultTrigger(/obj/item/assembly/prox_sensor) -/obj/item/grenade/chem_grenade/emp/mine - New() - ..() - CreateDefaultTrigger(/obj/item/assembly/mousetrap) - -// -------------------------------------- -// Dangerous slime core grenades -// -------------------------------------- -/* -/obj/item/grenade/chem_grenade/large/bluespace - payload_name = "bluespace slime" - desc = "A standard grenade casing containing weaponized slime extract." - stage = 2 - - New() - ..() - var/obj/item/slime_extract/bluespace/B1 = new(src) - B1.Uses = rand(1,3) - var/obj/item/reagent_containers/glass/beaker/B2 = new(src) - B2.reagents.add_reagent("plasma",5 * B1.Uses) - beakers += B1 - beakers += B2 - -/obj/item/grenade/chem_grenade/large/bluespace/prox - New() - ..() - CreateDefaultTrigger(/obj/item/assembly/prox_sensor) - -/obj/item/grenade/chem_grenade/large/bluespace/mine - New() - ..() - CreateDefaultTrigger(/obj/item/assembly/mousetrap) - -/obj/item/grenade/chem_grenade/large/bluespace/remote - New() - ..() - CreateDefaultTrigger(/obj/item/assembly/signaler) -*/ +/obj/item/grenade/chem_grenade/emp/mine/New() + ..() + CreateDefaultTrigger(/obj/item/assembly/mousetrap) /obj/item/grenade/chem_grenade/large/monster payload_name = "gold slime" desc = "A standard grenade containing weaponized slime extract." stage = 2 - New() - ..() - var/obj/item/slime_extract/gold/B1 = new(src) - B1.Uses = rand(1,3) - var/obj/item/reagent_containers/glass/beaker/B2 = new(src) - B2.reagents.add_reagent("plasma",5 * B1.Uses) - beakers += B1 - beakers += B2 +/obj/item/grenade/chem_grenade/large/monster/New() + ..() + var/obj/item/slime_extract/gold/B1 = new(src) + B1.Uses = rand(1,3) + var/obj/item/reagent_containers/glass/beaker/B2 = new(src) + B2.reagents.add_reagent("plasma",5 * B1.Uses) + beakers += B1 + beakers += B2 -/obj/item/grenade/chem_grenade/large/monster/prox - New() - ..() - CreateDefaultTrigger(/obj/item/assembly/prox_sensor) +/obj/item/grenade/chem_grenade/large/monster/prox/New() + ..() + CreateDefaultTrigger(/obj/item/assembly/prox_sensor) -/obj/item/grenade/chem_grenade/large/monster/mine - New() - ..() - CreateDefaultTrigger(/obj/item/assembly/mousetrap) +/obj/item/grenade/chem_grenade/large/monster/mine/New() + ..() + CreateDefaultTrigger(/obj/item/assembly/mousetrap) -/obj/item/grenade/chem_grenade/large/monster/remote - New() - ..() - CreateDefaultTrigger(/obj/item/assembly/signaler) +/obj/item/grenade/chem_grenade/large/monster/remote/New() + ..() + CreateDefaultTrigger(/obj/item/assembly/signaler) /obj/item/grenade/chem_grenade/large/feast payload_name = "silver slime" desc = "A standard grenade containing weaponized slime extract." stage = 2 - New() - ..() - var/obj/item/slime_extract/silver/B1 = new(src) - B1.Uses = rand(1,3) - var/obj/item/reagent_containers/glass/beaker/B2 = new(src) - B2.reagents.add_reagent("plasma",5 * B1.Uses) - beakers += B1 - beakers += B2 +/obj/item/grenade/chem_grenade/large/feast/New() + ..() + var/obj/item/slime_extract/silver/B1 = new(src) + B1.Uses = rand(1,3) + var/obj/item/reagent_containers/glass/beaker/B2 = new(src) + B2.reagents.add_reagent("plasma",5 * B1.Uses) + beakers += B1 + beakers += B2 // -------------------------------------- // Syndie Kits @@ -316,25 +276,30 @@ /obj/item/storage/box/syndie_kit/remotegrenade name = "Remote Grenade Kit" - New() - ..() - new /obj/item/grenade/chem_grenade/explosion/remote(src) - new /obj/item/multitool(src) // used to adjust the chemgrenade's signaller - new /obj/item/assembly/signaler(src) - return + +/obj/item/storage/box/syndie_kit/remotegrenade/New() + ..() + new /obj/item/grenade/chem_grenade/explosion/remote(src) + new /obj/item/multitool(src) // used to adjust the chemgrenade's signaller + new /obj/item/assembly/signaler(src) + return + /obj/item/storage/box/syndie_kit/remoteemp name = "Remote EMP Kit" - New() - ..() - new /obj/item/grenade/chem_grenade/emp/remote(src) - new /obj/item/multitool(src) // used to adjust the chemgrenade's signaller - new /obj/item/assembly/signaler(src) - return + +/obj/item/storage/box/syndie_kit/remoteemp/New() + ..() + new /obj/item/grenade/chem_grenade/emp/remote(src) + new /obj/item/multitool(src) // used to adjust the chemgrenade's signaller + new /obj/item/assembly/signaler(src) + return + /obj/item/storage/box/syndie_kit/remotelube name = "Remote Lube Kit" - New() - ..() - new /obj/item/grenade/chem_grenade/lube(src) - new /obj/item/multitool(src) // used to adjust the chemgrenade's signaller - new /obj/item/assembly/signaler(src) - return \ No newline at end of file + +/obj/item/storage/box/syndie_kit/remotelube/New() + ..() + new /obj/item/grenade/chem_grenade/lube(src) + new /obj/item/multitool(src) // used to adjust the chemgrenade's signaller + new /obj/item/assembly/signaler(src) + return diff --git a/code/game/objects/items/weapons/grenades/smokebomb.dm b/code/game/objects/items/weapons/grenades/smokebomb.dm index c4ccb3e83dc..6b9c4d815f4 100644 --- a/code/game/objects/items/weapons/grenades/smokebomb.dm +++ b/code/game/objects/items/weapons/grenades/smokebomb.dm @@ -8,31 +8,31 @@ slot_flags = SLOT_BELT var/datum/effect_system/smoke_spread/bad/smoke - New() - ..() - src.smoke = new /datum/effect_system/smoke_spread/bad - src.smoke.attach(src) +/obj/item/grenade/smokebomb/New() + ..() + src.smoke = new /datum/effect_system/smoke_spread/bad + src.smoke.attach(src) - Destroy() - QDEL_NULL(smoke) - return ..() +/obj/item/grenade/smokebomb/Destroy() + QDEL_NULL(smoke) + return ..() - prime() - playsound(src.loc, 'sound/effects/smoke.ogg', 50, 1, -3) - src.smoke.set_up(10, 0, usr.loc) - spawn(0) - src.smoke.start() - sleep(10) - src.smoke.start() - sleep(10) - src.smoke.start() - sleep(10) - src.smoke.start() +/obj/item/grenade/smokebomb/prime() + playsound(src.loc, 'sound/effects/smoke.ogg', 50, 1, -3) + src.smoke.set_up(10, 0, usr.loc) + spawn(0) + src.smoke.start() + sleep(10) + src.smoke.start() + sleep(10) + src.smoke.start() + sleep(10) + src.smoke.start() - for(var/obj/structure/blob/B in view(8,src)) - var/damage = round(30/(get_dist(B,src)+1)) - B.health -= damage - B.update_icon() - sleep(80) - qdel(src) - return + for(var/obj/structure/blob/B in view(8,src)) + var/damage = round(30/(get_dist(B,src)+1)) + B.health -= damage + B.update_icon() + sleep(80) + qdel(src) + return diff --git a/code/game/objects/items/weapons/implants/implant_abductor.dm b/code/game/objects/items/weapons/implants/implant_abductor.dm index 3ec571c94a6..a86545f8722 100644 --- a/code/game/objects/items/weapons/implants/implant_abductor.dm +++ b/code/game/objects/items/weapons/implants/implant_abductor.dm @@ -40,7 +40,7 @@ /obj/item/implant/abductor/proc/get_team_console(var/team) var/obj/machinery/abductor/console/console - for(var/obj/machinery/abductor/console/c in abductor_equipment) + for(var/obj/machinery/abductor/console/c in GLOB.abductor_equipment) if(c.team == team) console = c break diff --git a/code/game/objects/items/weapons/implants/implant_chem.dm b/code/game/objects/items/weapons/implants/implant_chem.dm index 6fbcc7e096a..5f0fea79da9 100644 --- a/code/game/objects/items/weapons/implants/implant_chem.dm +++ b/code/game/objects/items/weapons/implants/implant_chem.dm @@ -3,7 +3,7 @@ desc = "Injects things." icon_state = "reagents" origin_tech = "materials=3;biotech=4" - flags = OPENCONTAINER + container_type = OPENCONTAINER /obj/item/implant/chem/get_data() var/dat = {"Implant Specifications:
@@ -24,10 +24,10 @@ /obj/item/implant/chem/New() ..() create_reagents(50) - tracked_implants += src + GLOB.tracked_implants += src /obj/item/implant/chem/Destroy() - tracked_implants -= src + GLOB.tracked_implants -= src return ..() diff --git a/code/game/objects/items/weapons/implants/implant_track.dm b/code/game/objects/items/weapons/implants/implant_track.dm index ffc372f7fa8..c74e2fecff5 100644 --- a/code/game/objects/items/weapons/implants/implant_track.dm +++ b/code/game/objects/items/weapons/implants/implant_track.dm @@ -8,10 +8,10 @@ /obj/item/implant/tracking/New() ..() - tracked_implants += src + GLOB.tracked_implants += src /obj/item/implant/tracking/Destroy() - tracked_implants -= src + GLOB.tracked_implants -= src return ..() /obj/item/implant/tracking/get_data() diff --git a/code/game/objects/items/weapons/legcuffs.dm b/code/game/objects/items/weapons/legcuffs.dm index c705374f7a9..3391687f20a 100644 --- a/code/game/objects/items/weapons/legcuffs.dm +++ b/code/game/objects/items/weapons/legcuffs.dm @@ -136,9 +136,7 @@ /obj/item/restraints/legcuffs/beartrap/energy/proc/dissipate() if(!ismob(loc)) - var/datum/effect_system/spark_spread/sparks = new /datum/effect_system/spark_spread - sparks.set_up(1, 1, src) - sparks.start() + do_sparks(1, 1, src) qdel(src) /obj/item/restraints/legcuffs/beartrap/energy/attack_hand(mob/user) diff --git a/code/game/objects/items/weapons/lighters.dm b/code/game/objects/items/weapons/lighters.dm index cca83a3917b..c6ece450f5e 100644 --- a/code/game/objects/items/weapons/lighters.dm +++ b/code/game/objects/items/weapons/lighters.dm @@ -24,8 +24,7 @@ icon_on = "zippoon" icon_off = "zippo" -/obj/item/lighter/random - New() +/obj/item/lighter/random/New() var/color = pick("r","c","y","g") icon_on = "lighter-[color]-on" icon_off = "lighter-[color]" @@ -183,6 +182,7 @@ attack_verb = list("burnt","singed") processing_objects.Add(src) update_icon() + return TRUE /obj/item/match/proc/matchburnout() if(lit) @@ -196,6 +196,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/melee/energy.dm b/code/game/objects/items/weapons/melee/energy.dm index 2dcbef5b1a5..8ad283a77da 100644 --- a/code/game/objects/items/weapons/melee/energy.dm +++ b/code/game/objects/items/weapons/melee/energy.dm @@ -215,16 +215,8 @@ throw_speed = 3 throw_range = 1 w_class = WEIGHT_CLASS_BULKY //So you can't hide it in your pocket or some such. - var/datum/effect_system/spark_spread/spark_system sharp = 1 -//Most of the other special functions are handled in their own files. aka special snowflake code so kewl -/obj/item/melee/energy/blade/New() - ..() - spark_system = new /datum/effect_system/spark_spread() - spark_system.set_up(5, 0, src) - spark_system.attach(src) - /obj/item/melee/energy/blade/attack_self(mob/user) return diff --git a/code/game/objects/items/weapons/misc.dm b/code/game/objects/items/weapons/misc.dm index f8cc628dc01..a38f6e11873 100644 --- a/code/game/objects/items/weapons/misc.dm +++ b/code/game/objects/items/weapons/misc.dm @@ -89,25 +89,25 @@ icon_state = "lightning" desc = "test lightning" - New() +/obj/item/lightning/New() icon = midicon icon_state = "1" - afterattack(atom/A as mob|obj|turf|area, mob/living/user as mob|obj, flag, params) - var/angle = get_angle(A, user) -// to_chat(world, angle) - angle = round(angle) + 45 - if(angle > 180) - angle -= 180 - else - angle += 180 +/obj/item/lightning/afterattack(atom/A as mob|obj|turf|area, mob/living/user as mob|obj, flag, params) + var/angle = get_angle(A, user) + //to_chat(world, angle) + angle = round(angle) + 45 + if(angle > 180) + angle -= 180 + else + angle += 180 - if(!angle) - angle = 1 -// to_chat(world, "adjusted [angle]") - icon_state = "[angle]" -// to_chat(world, "[angle] [(get_dist(user, A) - 1)]") - user.Beam(A, "lightning", 'icons/obj/zap.dmi', 50, 15) + if(!angle) + angle = 1 + //to_chat(world, "adjusted [angle]") + icon_state = "[angle]" + //to_chat(world, "[angle] [(get_dist(user, A) - 1)]") + user.Beam(A, "lightning", 'icons/obj/zap.dmi', 50, 15) /obj/item/newton name = "newton cradle" diff --git a/code/game/objects/items/weapons/mop.dm b/code/game/objects/items/weapons/mop.dm index a26858a1e73..e642e3b994a 100644 --- a/code/game/objects/items/weapons/mop.dm +++ b/code/game/objects/items/weapons/mop.dm @@ -18,10 +18,10 @@ /obj/item/mop/New() ..() create_reagents(mopcap) - janitorial_equipment += src + GLOB.janitorial_equipment += src /obj/item/mop/Destroy() - janitorial_equipment -= src + GLOB.janitorial_equipment -= src return ..() /obj/item/mop/proc/clean(turf/simulated/A) diff --git a/code/game/objects/items/weapons/paint.dm b/code/game/objects/items/weapons/paint.dm index 7c8883ca7e8..dc466f479d0 100644 --- a/code/game/objects/items/weapons/paint.dm +++ b/code/game/objects/items/weapons/paint.dm @@ -13,7 +13,7 @@ amount_per_transfer_from_this = 5 possible_transfer_amounts = list(5,10,20,30,50,70) volume = 70 - flags = OPENCONTAINER + container_type = OPENCONTAINER /obj/item/reagent_containers/glass/paint/afterattack(turf/simulated/target, mob/user, proximity) if(!proximity) diff --git a/code/game/objects/items/weapons/rpd.dm b/code/game/objects/items/weapons/rpd.dm index c139155b57c..5fc6c38689a 100644 --- a/code/game/objects/items/weapons/rpd.dm +++ b/code/game/objects/items/weapons/rpd.dm @@ -71,7 +71,7 @@ if(!iconrotation && P.is_bent_pipe()) //Automatically rotates dispensed pipes if the user selected auto-rotation P.dir = turn(user.dir, 135) else if(!iconrotation && P.pipe_type in list(PIPE_CONNECTOR, PIPE_UVENT, PIPE_SCRUBBER, PIPE_HEAT_EXCHANGE, PIPE_CAP, PIPE_SUPPLY_CAP, PIPE_SCRUBBERS_CAP, PIPE_INJECTOR, PIPE_PASV_VENT)) //Some pipes dispense oppositely to what you'd expect, but we don't want to do anything if they selected a direction - P.flip() + P.dir = turn(user.dir, -180) else if(iconrotation && P.is_bent_pipe()) //If user selected a rotation and the pipe is bent P.dir = turn(iconrotation, -45) else if(!iconrotation) //If user selected a rotation diff --git a/code/game/objects/items/weapons/scissors.dm b/code/game/objects/items/weapons/scissors.dm index 2f53a1200a9..ea134126b6a 100644 --- a/code/game/objects/items/weapons/scissors.dm +++ b/code/game/objects/items/weapons/scissors.dm @@ -35,8 +35,8 @@ var/datum/robolimb/robohead = all_robolimbs[C.model] if(H.gender == MALE || isvulpkanin(H)) if(C.dna.species) - for(var/i in facial_hair_styles_list) - var/datum/sprite_accessory/facial_hair/tmp_facial = facial_hair_styles_list[i] + for(var/i in GLOB.facial_hair_styles_list) + var/datum/sprite_accessory/facial_hair/tmp_facial = GLOB.facial_hair_styles_list[i] if(C.dna.species.name in tmp_facial.species_allowed) //If the species is allowed to have the style, add the style to the list. Or, if the character has a prosthetic head, give them the human hair styles. if(C.dna.species.bodyflags & ALL_RPARTS) //If the character is of a species that can have full body prosthetics and their head doesn't suport human hair 'wigs', don't add the style to the list. if(robohead.is_monitor) @@ -53,13 +53,13 @@ to_chat(user, "You are unable to find anything on [H]'s face worth cutting. How disappointing.") return else - species_facial_hair = facial_hair_styles_list + species_facial_hair = GLOB.facial_hair_styles_list var/f_new_style = input(user, "Select a facial hair style", "Grooming") as null|anything in species_facial_hair //handle normal hair var/list/species_hair = list() if(C.dna.species) - for(var/i in hair_styles_public_list) - var/datum/sprite_accessory/hair/tmp_hair = hair_styles_public_list[i] + for(var/i in GLOB.hair_styles_public_list) + var/datum/sprite_accessory/hair/tmp_hair = GLOB.hair_styles_public_list[i] if(C.dna.species.name in tmp_hair.species_allowed) //If the species is allowed to have the style, add the style to the list. Or, if the character has a prosthetic head, give them the human facial hair styles. if(C.dna.species.bodyflags & ALL_RPARTS) //If the character is of a species that can have full body prosthetics and their head doesn't suport human hair 'wigs', don't add the style to the list. if(robohead.is_monitor) @@ -76,7 +76,7 @@ to_chat(user, "You are unable to find anything on [H]'s head worth cutting. How disappointing.") return else - species_hair = hair_styles_public_list + species_hair = GLOB.hair_styles_public_list var/h_new_style = input(user, "Select a hair style", "Grooming") as null|anything in species_hair user.visible_message("[user] starts cutting [M]'s hair!", "You start cutting [M]'s hair!") //arguments for this are: 1. what others see 2. what the user sees. --Fixed grammar, (TGameCo) playsound(loc, 'sound/goonstation/misc/Scissor.ogg', 100, 1) diff --git a/code/game/objects/items/weapons/storage/backpack.dm b/code/game/objects/items/weapons/storage/backpack.dm index 85a0e679bb6..6d45e5b7add 100644 --- a/code/game/objects/items/weapons/storage/backpack.dm +++ b/code/game/objects/items/weapons/storage/backpack.dm @@ -89,6 +89,24 @@ icon_state = "clownpack" item_state = "clownpack" +/obj/item/storage/backpack/clown/syndie + +/obj/item/storage/backpack/clown/syndie/New() + ..() + new /obj/item/clothing/under/rank/clown(src) + new /obj/item/clothing/shoes/magboots/clown(src) + new /obj/item/clothing/mask/gas/voice/clown(src) + new /obj/item/radio/headset/headset_service(src) + new /obj/item/pda/clown(src) + new /obj/item/reagent_containers/food/snacks/grown/banana(src) + new /obj/item/stamp/clown(src) + new /obj/item/toy/crayon/rainbow(src) + new /obj/item/storage/fancy/crayons(src) + new /obj/item/reagent_containers/spray/waterflower(src) + new /obj/item/reagent_containers/food/drinks/bottle/bottleofbanana(src) + new /obj/item/instrument/bikehorn(src) + new /obj/item/bikehorn(src) + /obj/item/storage/backpack/mime name = "Parcel Parceaux" desc = "A silent backpack made for those silent workers. Silence Co." @@ -167,10 +185,9 @@ desc = "An NT Deluxe satchel, with the finest quality leather and the company logo in a thin gold stitch" icon_state = "nt_deluxe" -/obj/item/storage/backpack/satchel/withwallet - New() - ..() - new /obj/item/storage/wallet/random( src ) +/obj/item/storage/backpack/satchel/withwallet/New() + ..() + new /obj/item/storage/wallet/random(src) /obj/item/storage/backpack/satchel_norm name = "satchel" diff --git a/code/game/objects/items/weapons/storage/bags.dm b/code/game/objects/items/weapons/storage/bags.dm index 3e7f2f6f8c9..4d0de3bd09e 100644 --- a/code/game/objects/items/weapons/storage/bags.dm +++ b/code/game/objects/items/weapons/storage/bags.dm @@ -135,10 +135,10 @@ origin_tech = "engineering=2" slot_flags = SLOT_BELT | SLOT_POCKET w_class = WEIGHT_CLASS_NORMAL - storage_slots = 50 + storage_slots = 10 max_combined_w_class = 200 //Doesn't matter what this is, so long as it's more or equal to storage_slots * ore.w_class max_w_class = WEIGHT_CLASS_NORMAL - can_hold = list(/obj/item/ore) + can_hold = list(/obj/item/stack/ore) /obj/item/storage/bag/ore/cyborg name = "cyborg mining satchel" @@ -207,122 +207,122 @@ w_class = WEIGHT_CLASS_NORMAL allow_quick_empty = 1 // this function is superceded - New() - ..() - //verbs -= /obj/item/storage/verb/quick_empty - //verbs += /obj/item/storage/bag/sheetsnatcher/quick_empty +/obj/item/storage/bag/sheetsnatcher/New() + ..() + //verbs -= /obj/item/storage/verb/quick_empty + //verbs += /obj/item/storage/bag/sheetsnatcher/quick_empty - can_be_inserted(obj/item/W as obj, stop_messages = 0) - if(!istype(W,/obj/item/stack/sheet) || istype(W,/obj/item/stack/sheet/mineral/sandstone) || istype(W,/obj/item/stack/sheet/wood)) - if(!stop_messages) - to_chat(usr, "The snatcher does not accept [W].") - return 0 //I don't care, but the existing code rejects them for not being "sheets" *shrug* -Sayu - var/current = 0 - for(var/obj/item/stack/sheet/S in contents) - current += S.amount - if(capacity == current)//If it's full, you're done - if(!stop_messages) - to_chat(usr, "The snatcher is full.") - return 0 - return 1 +/obj/item/storage/bag/sheetsnatcher/can_be_inserted(obj/item/W as obj, stop_messages = 0) + if(!istype(W,/obj/item/stack/sheet) || istype(W,/obj/item/stack/sheet/mineral/sandstone) || istype(W,/obj/item/stack/sheet/wood)) + if(!stop_messages) + to_chat(usr, "The snatcher does not accept [W].") + return 0 //I don't care, but the existing code rejects them for not being "sheets" *shrug* -Sayu + var/current = 0 + for(var/obj/item/stack/sheet/S in contents) + current += S.amount + if(capacity == current)//If it's full, you're done + if(!stop_messages) + to_chat(usr, "The snatcher is full.") + return 0 + return 1 // Modified handle_item_insertion. Would prefer not to, but... - handle_item_insertion(obj/item/W as obj, prevent_warning = 0) - var/obj/item/stack/sheet/S = W - if(!istype(S)) return 0 +/obj/item/storage/bag/sheetsnatcher/handle_item_insertion(obj/item/W as obj, prevent_warning = 0) + var/obj/item/stack/sheet/S = W + if(!istype(S)) return 0 - var/amount - var/inserted = 0 - var/current = 0 - for(var/obj/item/stack/sheet/S2 in contents) - current += S2.amount - if(capacity < current + S.amount)//If the stack will fill it up - amount = capacity - current + var/amount + var/inserted = 0 + var/current = 0 + for(var/obj/item/stack/sheet/S2 in contents) + current += S2.amount + if(capacity < current + S.amount)//If the stack will fill it up + amount = capacity - current + else + amount = S.amount + + for(var/obj/item/stack/sheet/sheet in contents) + if(S.type == sheet.type) // we are violating the amount limitation because these are not sane objects + sheet.amount += amount // they should only be removed through procs in this file, which split them up. + S.amount -= amount + inserted = 1 + break + + if(!inserted || !S.amount) + usr.unEquip(S) + usr.update_icons() //update our overlays + if(usr.client && usr.s_active != src) + usr.client.screen -= S + S.dropped(usr) + if(!S.amount) + qdel(S) else - amount = S.amount + S.loc = src - for(var/obj/item/stack/sheet/sheet in contents) - if(S.type == sheet.type) // we are violating the amount limitation because these are not sane objects - sheet.amount += amount // they should only be removed through procs in this file, which split them up. - S.amount -= amount - inserted = 1 - break - - if(!inserted || !S.amount) - usr.unEquip(S) - usr.update_icons() //update our overlays - if(usr.client && usr.s_active != src) - usr.client.screen -= S - S.dropped(usr) - if(!S.amount) - qdel(S) - else - S.loc = src - - orient2hud(usr) - if(usr.s_active) - usr.s_active.show_to(usr) - update_icon() - return 1 + orient2hud(usr) + if(usr.s_active) + usr.s_active.show_to(usr) + update_icon() + return 1 // Sets up numbered display to show the stack size of each stored mineral // NOTE: numbered display is turned off currently because it's broken - orient2hud(mob/user as mob) - var/adjusted_contents = contents.len +/obj/item/storage/bag/sheetsnatcher/orient2hud(mob/user as mob) + var/adjusted_contents = contents.len - //Numbered contents display - var/list/datum/numbered_display/numbered_contents - if(display_contents_with_number) - numbered_contents = list() - adjusted_contents = 0 - for(var/obj/item/stack/sheet/I in contents) - adjusted_contents++ - var/datum/numbered_display/D = new/datum/numbered_display(I) - D.number = I.amount - numbered_contents.Add( D ) + //Numbered contents display + var/list/datum/numbered_display/numbered_contents + if(display_contents_with_number) + numbered_contents = list() + adjusted_contents = 0 + for(var/obj/item/stack/sheet/I in contents) + adjusted_contents++ + var/datum/numbered_display/D = new/datum/numbered_display(I) + D.number = I.amount + numbered_contents.Add( D ) - var/row_num = 0 - var/col_count = min(7,storage_slots) -1 - if(adjusted_contents > 7) - row_num = round((adjusted_contents-1) / 7) // 7 is the maximum allowed width. - src.standard_orient_objs(row_num, col_count, numbered_contents) - return + var/row_num = 0 + var/col_count = min(7,storage_slots) -1 + if(adjusted_contents > 7) + row_num = round((adjusted_contents-1) / 7) // 7 is the maximum allowed width. + src.standard_orient_objs(row_num, col_count, numbered_contents) + return // Modified quick_empty verb drops appropriate sized stacks - quick_empty() - var/location = get_turf(src) - for(var/obj/item/stack/sheet/S in contents) - while(S.amount) - var/obj/item/stack/sheet/N = new S.type(location) - var/stacksize = min(S.amount,N.max_amount) - N.amount = stacksize - S.amount -= stacksize - if(!S.amount) - qdel(S) // todo: there's probably something missing here - orient2hud(usr) - if(usr.s_active) - usr.s_active.show_to(usr) - update_icon() +/obj/item/storage/bag/sheetsnatcher/quick_empty() + var/location = get_turf(src) + for(var/obj/item/stack/sheet/S in contents) + while(S.amount) + var/obj/item/stack/sheet/N = new S.type(location) + var/stacksize = min(S.amount,N.max_amount) + N.amount = stacksize + S.amount -= stacksize + if(!S.amount) + qdel(S) // todo: there's probably something missing here + orient2hud(usr) + if(usr.s_active) + usr.s_active.show_to(usr) + update_icon() // Instead of removing - remove_from_storage(obj/item/W as obj, atom/new_location) - var/obj/item/stack/sheet/S = W - if(!istype(S)) return 0 +/obj/item/storage/bag/sheetsnatcher/remove_from_storage(obj/item/W as obj, atom/new_location) + var/obj/item/stack/sheet/S = W + if(!istype(S)) return 0 - //I would prefer to drop a new stack, but the item/attack_hand code - // that calls this can't recieve a different object than you clicked on. - //Therefore, make a new stack internally that has the remainder. - // -Sayu + //I would prefer to drop a new stack, but the item/attack_hand code + // that calls this can't recieve a different object than you clicked on. + //Therefore, make a new stack internally that has the remainder. + // -Sayu - if(S.amount > S.max_amount) - var/obj/item/stack/sheet/temp = new S.type(src) - temp.amount = S.amount - S.max_amount - S.amount = S.max_amount + if(S.amount > S.max_amount) + var/obj/item/stack/sheet/temp = new S.type(src) + temp.amount = S.amount - S.max_amount + S.amount = S.max_amount - return ..(S,new_location) + return ..(S,new_location) // ----------------------------- // Sheet Snatcher (Cyborg) diff --git a/code/game/objects/items/weapons/storage/belt.dm b/code/game/objects/items/weapons/storage/belt.dm index 5ba58e2f313..67f32dbfd58 100644 --- a/code/game/objects/items/weapons/storage/belt.dm +++ b/code/game/objects/items/weapons/storage/belt.dm @@ -631,21 +631,21 @@ max_combined_w_class = 280 can_hold = list() - New() - ..() - new /obj/item/crowbar(src) - new /obj/item/screwdriver(src) - new /obj/item/weldingtool/hugetank(src) - new /obj/item/wirecutters(src) - new /obj/item/wrench(src) - new /obj/item/multitool(src) - new /obj/item/stack/cable_coil(src) +/obj/item/storage/belt/bluespace/admin/New() + ..() + new /obj/item/crowbar(src) + new /obj/item/screwdriver(src) + new /obj/item/weldingtool/hugetank(src) + new /obj/item/wirecutters(src) + new /obj/item/wrench(src) + new /obj/item/multitool(src) + new /obj/item/stack/cable_coil(src) - new /obj/item/restraints/handcuffs(src) - new /obj/item/dnainjector/xraymut(src) - new /obj/item/dnainjector/firemut(src) - new /obj/item/dnainjector/telemut(src) - new /obj/item/dnainjector/hulkmut(src) + new /obj/item/restraints/handcuffs(src) + new /obj/item/dnainjector/xraymut(src) + new /obj/item/dnainjector/firemut(src) + new /obj/item/dnainjector/telemut(src) + new /obj/item/dnainjector/hulkmut(src) // new /obj/item/spellbook(src) // for smoke effects, door openings, etc // new /obj/item/magic/spellbook(src) @@ -660,15 +660,15 @@ max_combined_w_class = 280 can_hold = list() - New() - ..() - new /obj/item/crowbar(src) - new /obj/item/screwdriver(src) - new /obj/item/weldingtool/hugetank(src) - new /obj/item/wirecutters(src) - new /obj/item/wrench(src) - new /obj/item/multitool(src) - new /obj/item/stack/cable_coil(src) +/obj/item/storage/belt/bluespace/sandbox/New() + ..() + new /obj/item/crowbar(src) + new /obj/item/screwdriver(src) + new /obj/item/weldingtool/hugetank(src) + new /obj/item/wirecutters(src) + new /obj/item/wrench(src) + new /obj/item/multitool(src) + new /obj/item/stack/cable_coil(src) - new /obj/item/analyzer(src) - new /obj/item/healthanalyzer(src) + new /obj/item/analyzer(src) + new /obj/item/healthanalyzer(src) diff --git a/code/game/objects/items/weapons/storage/secure.dm b/code/game/objects/items/weapons/storage/secure.dm index bb78ba208ec..0a256136d2e 100644 --- a/code/game/objects/items/weapons/storage/secure.dm +++ b/code/game/objects/items/weapons/storage/secure.dm @@ -74,9 +74,7 @@ overlays += image('icons/obj/storage.dmi', icon_locking) locked = 0 if(istype(weapon, /obj/item/melee/energy/blade)) - var/datum/effect_system/spark_spread/spark_system = new /datum/effect_system/spark_spread() - spark_system.set_up(5, 0, src.loc) - spark_system.start() + do_sparks(5, 0, loc) playsound(loc, 'sound/weapons/blade1.ogg', 50, 1) playsound(loc, "sparks", 50, 1) to_chat(user, "You slice through the lock on [src].") diff --git a/code/game/objects/items/weapons/storage/storage.dm b/code/game/objects/items/weapons/storage/storage.dm index 4defb3b4aae..2d7c6842547 100644 --- a/code/game/objects/items/weapons/storage/storage.dm +++ b/code/game/objects/items/weapons/storage/storage.dm @@ -28,7 +28,7 @@ if(ishuman(usr)) //so monkeys can take off their backpacks -- Urist var/mob/M = usr - if(istype(usr.loc,/obj/mecha)) // stops inventory actions in a mech + if(istype(M.loc,/obj/mecha) || M.incapacitated(FALSE, TRUE, TRUE)) // Stops inventory actions in a mech as well as while being incapacitated return if(over_object == M && Adjacent(M)) // this must come before the screen objects only block @@ -100,6 +100,8 @@ return L /obj/item/storage/proc/show_to(mob/user as mob) + if(!user.client) + return if(user.s_active != src) for(var/obj/item/I in src) if(I.on_found(user)) diff --git a/code/game/objects/items/weapons/storage/toolbox.dm b/code/game/objects/items/weapons/storage/toolbox.dm index cd6fc31f820..e66bad8fbaf 100644 --- a/code/game/objects/items/weapons/storage/toolbox.dm +++ b/code/game/objects/items/weapons/storage/toolbox.dm @@ -60,12 +60,12 @@ new /obj/item/wirecutters(src) new /obj/item/t_scanner(src) new /obj/item/crowbar(src) - new /obj/item/stack/cable_coil(src, 30, pickedcolor) - new /obj/item/stack/cable_coil(src, 30, pickedcolor) + new /obj/item/stack/cable_coil(src, 30, paramcolor = pickedcolor) + new /obj/item/stack/cable_coil(src, 30, paramcolor = pickedcolor) if(prob(5)) new /obj/item/clothing/gloves/color/yellow(src) else - new /obj/item/stack/cable_coil(src, 30, pickedcolor) + new /obj/item/stack/cable_coil(src, 30, paramcolor = pickedcolor) /obj/item/storage/toolbox/syndicate name = "suspicious looking toolbox" @@ -108,7 +108,7 @@ new /obj/item/wrench(src) new /obj/item/weldingtool(src) new /obj/item/crowbar(src) - new /obj/item/stack/cable_coil(src, 30, pickedcolor) + new /obj/item/stack/cable_coil(src, 30, paramcolor = pickedcolor) new /obj/item/wirecutters(src) new /obj/item/multitool(src) diff --git a/code/game/objects/items/weapons/storage/uplink_kits.dm b/code/game/objects/items/weapons/storage/uplink_kits.dm index 86c616df2f0..45d8fecf759 100644 --- a/code/game/objects/items/weapons/storage/uplink_kits.dm +++ b/code/game/objects/items/weapons/storage/uplink_kits.dm @@ -272,3 +272,4 @@ To apply, hold the injector a short distance away from the outer thigh before ap new /obj/item/clothing/gloves/color/latex/nitrile(src) new /obj/item/clothing/mask/balaclava(src) new /obj/item/clothing/accessory/stethoscope(src) + new /obj/item/book/manual/engineering_hacking(src) diff --git a/code/game/objects/items/weapons/stunbaton.dm b/code/game/objects/items/weapons/stunbaton.dm index a24beced667..b9d383b9308 100644 --- a/code/game/objects/items/weapons/stunbaton.dm +++ b/code/game/objects/items/weapons/stunbaton.dm @@ -139,12 +139,15 @@ /obj/item/melee/baton/proc/baton_stun(mob/living/L, mob/user) + if(!ismob(L)) //because this was being called on turfs for some reason + return + if(ishuman(L)) var/mob/living/carbon/human/H = L 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 - + L.Stun(stunforce) L.Weaken(stunforce) L.apply_effect(STUTTER, stunforce) @@ -166,7 +169,7 @@ if(ishuman(L)) var/mob/living/carbon/human/H = L - H.forcesay(hit_appends) + H.forcesay(GLOB.hit_appends) /obj/item/melee/baton/emp_act(severity) if(bcell) diff --git a/code/game/objects/items/weapons/tanks/watertank.dm b/code/game/objects/items/weapons/tanks/watertank.dm index 364fd49847b..96dd853be09 100644 --- a/code/game/objects/items/weapons/tanks/watertank.dm +++ b/code/game/objects/items/weapons/tanks/watertank.dm @@ -116,7 +116,8 @@ amount_per_transfer_from_this = 50 possible_transfer_amounts = list(25,50,100) volume = 500 - flags = NODROP | OPENCONTAINER | NOBLUDGEON + flags = NODROP | NOBLUDGEON + container_type = OPENCONTAINER var/obj/item/watertank/tank diff --git a/code/game/objects/items/weapons/teleportation.dm b/code/game/objects/items/weapons/teleportation.dm index 02a4696f435..a108d7e259d 100644 --- a/code/game/objects/items/weapons/teleportation.dm +++ b/code/game/objects/items/weapons/teleportation.dm @@ -59,14 +59,14 @@ Frequency: if(sr) temp += "Located Beacons:
" - for(var/obj/item/radio/beacon/W in beacons) + for(var/obj/item/radio/beacon/W in GLOB.beacons) if(W.frequency == frequency && !W.syndicate) if(W && W.z == z) var/turf/TB = get_turf(W) temp += "[W.code]: [TB.x], [TB.y], [TB.z]
" temp += "Located Implants:
" - for(var/obj/item/implant/tracking/T in tracked_implants) + for(var/obj/item/implant/tracking/T in GLOB.tracked_implants) if(!T.implanted || !T.imp_in) continue diff --git a/code/game/objects/items/weapons/tools.dm b/code/game/objects/items/weapons/tools.dm index 08a6a3e168c..cbaa4cff554 100644 --- a/code/game/objects/items/weapons/tools.dm +++ b/code/game/objects/items/weapons/tools.dm @@ -120,7 +120,7 @@ name = "screwdriver" desc = "You can be totally screwy with this." icon = 'icons/obj/tools.dmi' - icon_state = null + icon_state = "screwdriver_map" flags = CONDUCT slot_flags = SLOT_BELT force = 5 @@ -133,6 +133,7 @@ hitsound = 'sound/weapons/bladeslice.ogg' usesound = 'sound/items/Screwdriver.ogg' toolspeed = 1 + var/random_color = TRUE //if the screwdriver uses random coloring /obj/item/screwdriver/nuke name = "screwdriver" @@ -146,7 +147,7 @@ /obj/item/screwdriver/New(loc, var/param_color = null) ..() - if(!icon_state) + if(random_color) if(!param_color) param_color = pick("red","blue","pink","brown","green","cyan","yellow") icon_state = "screwdriver_[param_color]" @@ -168,6 +169,7 @@ desc = "A screwdriver made of brass. The handle feels freezing cold." icon_state = "screwdriver_brass" toolspeed = 0.5 + random_color = FALSE /obj/item/screwdriver/abductor name = "alien screwdriver" @@ -176,6 +178,7 @@ icon_state = "screwdriver" usesound = 'sound/items/PSHOOM.ogg' toolspeed = 0.1 + random_color = FALSE /obj/item/screwdriver/power name = "hand drill" @@ -192,6 +195,7 @@ hitsound = 'sound/items/drill_hit.ogg' usesound = 'sound/items/drill_use.ogg' toolspeed = 0.25 + random_color = FALSE /obj/item/screwdriver/power/suicide_act(mob/user) user.visible_message("[user] is putting [src] to [user.p_their()] temple. It looks like [user.p_theyre()] trying to commit suicide!") @@ -215,7 +219,7 @@ name = "wirecutters" desc = "This cuts wires." icon = 'icons/obj/tools.dmi' - icon_state = null + icon_state = "cutters" flags = CONDUCT slot_flags = SLOT_BELT force = 6 @@ -229,10 +233,11 @@ usesound = 'sound/items/Wirecutter.ogg' sharp = 1 toolspeed = 1 + var/random_color = TRUE /obj/item/wirecutters/New(loc, param_color = null) ..() - if(!icon_state) + if(random_color) if(!param_color) param_color = pick("yellow", "red") icon_state = "cutters_[param_color]" @@ -258,6 +263,7 @@ desc = "A pair of wirecutters made of brass. The handle feels freezing cold to the touch." icon_state = "cutters_brass" toolspeed = 0.5 + random_color = FALSE /obj/item/wirecutters/abductor name = "alien wirecutters" @@ -266,6 +272,7 @@ icon_state = "cutters" toolspeed = 0.1 origin_tech = "materials=5;engineering=4;abductor=3" + random_color = FALSE /obj/item/wirecutters/cyborg name = "wirecutters" @@ -281,6 +288,7 @@ materials = list(MAT_METAL=150,MAT_SILVER=50,MAT_TITANIUM=25) usesound = 'sound/items/jaws_cut.ogg' toolspeed = 0.25 + random_color = FALSE /obj/item/wirecutters/power/suicide_act(mob/user) user.visible_message("[user] is wrapping \the [src] around [user.p_their()] neck. It looks like [user.p_theyre()] trying to rip [user.p_their()] head off!") @@ -399,6 +407,7 @@ if(ishuman(M)) var/mob/living/carbon/human/H = M var/obj/item/organ/external/S = H.bodyparts_by_name[user.zone_sel.selecting] + if(!S) return @@ -449,6 +458,9 @@ E.heal_damage(rembrute,0,0,1) rembrute = nrembrute user.visible_message("\The [user] patches some dents on \the [M]'s [E.name] with \the [src].") + if(H.bleed_rate && H.isSynthetic()) + H.bleed_rate = 0 + user.visible_message("\The [user] patches some leaks on [M] with \the [src].") return 1 else return ..() diff --git a/code/game/objects/items/weapons/twohanded.dm b/code/game/objects/items/weapons/twohanded.dm index 3e7f3eaffe3..9418df86368 100644 --- a/code/game/objects/items/weapons/twohanded.dm +++ b/code/game/objects/items/weapons/twohanded.dm @@ -147,6 +147,14 @@ wield(user) ..() +/obj/item/twohanded/required/on_give(mob/living/carbon/giver, mob/living/carbon/receiver) + var/obj/item/twohanded/required/H = receiver.get_inactive_hand() + if(H != null) //Check if he can wield it + receiver.drop_item() //Can't wear it so drop it + to_chat(receiver, "[src] is too cumbersome to carry in one hand!") + return + equipped(receiver,receiver.hand ? slot_l_hand : slot_r_hand) + /obj/item/twohanded/required/equipped(mob/user, slot) ..() if(slot == slot_l_hand || slot == slot_r_hand) @@ -438,7 +446,7 @@ if(on) playsound(loc, 'sound/weapons/chainsawstart.ogg', 50, 1) force = on ? force_on : initial(force) - throwforce = on ? force_on : initial(force) + throwforce = on ? force_on : initial(throwforce) icon_state = "gchainsaw_[on ? "on" : "off"]" if(hitsound == "swing_hit") @@ -453,6 +461,16 @@ var/datum/action/A = X A.UpdateButtonIcon() +/obj/item/twohanded/required/chainsaw/attack_hand(mob/user) + . = ..() + force = on ? force_on : initial(force) + throwforce = on ? force_on : initial(throwforce) + +/obj/item/twohanded/required/chainsaw/on_give(mob/living/carbon/giver, mob/living/carbon/receiver) + . = ..() + force = on ? force_on : initial(force) + throwforce = on ? force_on : initial(throwforce) + /obj/item/twohanded/required/chainsaw/doomslayer name = "OOOH BABY" desc = "VRRRRRRR!!!" @@ -596,9 +614,7 @@ origin_tech = "combat=4;powerstorage=7" /obj/item/twohanded/mjollnir/proc/shock(mob/living/target) - var/datum/effect_system/spark_spread/s = new /datum/effect_system/spark_spread() - s.set_up(5, 1, target.loc) - s.start() + do_sparks(5, 1, target.loc) target.visible_message("[target.name] was shocked by the [name]!", \ "You feel a powerful shock course through your body sending you flying!", \ "You hear a heavy electrical crack!") @@ -721,9 +737,7 @@ Z.take_organ_damage(0, 30) user.visible_message("[user] slams the charged axe into [Z.name] with all [user.p_their()] might!") playsound(loc, 'sound/magic/lightningbolt.ogg', 5, 1) - var/datum/effect_system/spark_spread/sparks = new /datum/effect_system/spark_spread - sparks.set_up(1, 1, src) - sparks.start() + do_sparks(1, 1, src) if(A && wielded && (istype(A, /obj/structure/window) || istype(A, /obj/structure/grille))) if(istype(A, /obj/structure/window)) diff --git a/code/game/objects/obj_defense.dm b/code/game/objects/obj_defense.dm index d31338dfe06..572ff92c4fa 100644 --- a/code/game/objects/obj_defense.dm +++ b/code/game/objects/obj_defense.dm @@ -104,8 +104,8 @@ playsound(loc, 'sound/weapons/slash.ogg', 100, 1) /obj/attack_animal(mob/living/simple_animal/M) - if(!M.melee_damage_upper && !M.obj_damage) - M.custom_emote(1, "[M.friendly] [src]") + if((M.a_intent == INTENT_HELP && M.ckey) || (!M.melee_damage_upper && !M.obj_damage)) + M.custom_emote(1, "[M.friendly] [src].") return 0 else var/play_soundeffect = 1 diff --git a/code/game/objects/objs.dm b/code/game/objects/objs.dm index 29d3f2663bc..cc2fa8d1d69 100644 --- a/code/game/objects/objs.dm +++ b/code/game/objects/objs.dm @@ -65,9 +65,9 @@ // Nada /obj/Destroy() - machines -= src + GLOB.machines -= src processing_objects -= src - fast_processing -= src + GLOB.fast_processing -= src SSnanoui.close_uis(src) return ..() @@ -287,14 +287,14 @@ a { return speed_process = TRUE processing_objects.Remove(src) - fast_processing.Add(src) + GLOB.fast_processing.Add(src) /obj/proc/makeNormalProcess() if(!speed_process) return speed_process = FALSE processing_objects.Add(src) - fast_processing.Remove(src) + GLOB.fast_processing.Remove(src) /obj/vv_get_dropdown() . = ..() diff --git a/code/game/objects/structures.dm b/code/game/objects/structures.dm index f74a3b542ca..faf86394dba 100644 --- a/code/game/objects/structures.dm +++ b/code/game/objects/structures.dm @@ -32,8 +32,8 @@ ..() if(smooth) if(ticker && ticker.current_state == GAME_STATE_PLAYING) - smooth_icon(src) - smooth_icon_neighbors(src) + queue_smooth(src) + queue_smooth_neighbors(src) icon_state = "" if(climbable) verbs += /obj/structure/proc/climb_on @@ -46,7 +46,7 @@ if(smooth) var/turf/T = get_turf(src) spawn(0) - smooth_icon_neighbors(T) + queue_smooth_neighbors(T) return ..() /obj/structure/proc/climb_on() @@ -64,26 +64,26 @@ if(C == user) do_climb(user) +/obj/structure/proc/density_check() + for(var/obj/O in orange(0, src)) + if(O.density && !istype(O, /obj/machinery/door/window)) //Ignores windoors, as those already block climbing, otherwise a windoor on the opposite side of a table would prevent climbing. + return O + var/turf/T = get_turf(src) + if(T.density) + return T + return null /obj/structure/proc/do_climb(var/mob/living/user) - if(!can_touch(user) || !climbable) return + var/blocking_object = density_check() + if(blocking_object) + to_chat(user, "You cannot climb [src], as it is blocked by \a [blocking_object]!") + return - for(var/obj/O in range(0, src)) - if(O.density == 1 && O != src && !istype(O, /obj/machinery/door/window)) //Ignores windoors, as those already block climbing, otherwise a windoor on the opposite side of a table would prevent climbing. - to_chat(user, "You cannot climb [src], as it is blocked by \a [O]!") - return - for(var/turf/T in range(0, src)) - if(T.density == 1) - to_chat(user, "You cannot climb [src], as it is blocked by \a [T]!") - return var/turf/T = src.loc if(!T || !istype(T)) return - var/obj/machinery/door/poddoor/shutters/S = locate() in T.contents - if(S && S.density) return - usr.visible_message("[user] starts climbing onto \the [src]!") climber = user if(!do_after(user, 50, target = src)) @@ -94,11 +94,6 @@ climber = null return - S = locate() in T.contents - if(S && S.density) - climber = null - return - usr.loc = get_turf(src) if(get_turf(user) == get_turf(src)) usr.visible_message("[user] climbs onto \the [src]!") diff --git a/code/game/objects/structures/crates_lockers/closets.dm b/code/game/objects/structures/crates_lockers/closets.dm index 2f681c79d76..8e328c9400e 100644 --- a/code/game/objects/structures/crates_lockers/closets.dm +++ b/code/game/objects/structures/crates_lockers/closets.dm @@ -206,9 +206,7 @@ if(!(E.rcell && E.rcell.use(E.chargecost))) to_chat(user, "Unable to teleport, insufficient charge.") return - var/datum/effect_system/spark_spread/s = new /datum/effect_system/spark_spread - s.set_up(5, 1, src) - s.start() + do_sparks(5, 1, src) do_teleport(src, E.pad, 0) to_chat(user, "Teleport successful. [round(E.rcell.charge/E.chargecost)] charge\s left.") return @@ -233,9 +231,7 @@ if(!(E.rcell && E.rcell.use(E.chargecost))) to_chat(user, "Unable to teleport, insufficient charge.") return - var/datum/effect_system/spark_spread/s = new /datum/effect_system/spark_spread - s.set_up(5, 1, src) - s.start() + do_sparks(5, 1, src) do_teleport(src, L) to_chat(user, "Teleport successful. [round(E.rcell.charge/E.chargecost)] charge\s left.") return diff --git a/code/game/objects/structures/crates_lockers/closets/secure/scientist.dm b/code/game/objects/structures/crates_lockers/closets/secure/scientist.dm index 0309b4b6447..016d014e576 100644 --- a/code/game/objects/structures/crates_lockers/closets/secure/scientist.dm +++ b/code/game/objects/structures/crates_lockers/closets/secure/scientist.dm @@ -44,6 +44,8 @@ new /obj/item/clothing/suit/storage/labcoat(src) new /obj/item/radio/headset/headset_sci(src) new /obj/item/radio/headset/headset_sci(src) + new /obj/item/reagent_containers/food/drinks/oilcan(src) + new /obj/item/reagent_containers/food/drinks/oilcan(src) /obj/structure/closet/secure_closet/RD name = "research director's locker" 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 acf70b8aa7c..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 @@ -91,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/closets/secure/security.dm b/code/game/objects/structures/crates_lockers/closets/secure/security.dm index 2a5639eb081..03fca152fa9 100644 --- a/code/game/objects/structures/crates_lockers/closets/secure/security.dm +++ b/code/game/objects/structures/crates_lockers/closets/secure/security.dm @@ -191,6 +191,7 @@ new /obj/item/clothing/glasses/hud/security/sunglasses(src) new /obj/item/clothing/head/helmet(src) new /obj/item/melee/baton/loaded(src) + new /obj/item/clothing/suit/armor/secjacket(src) /obj/structure/closet/secure_closet/brigdoc @@ -253,6 +254,7 @@ new /obj/item/clothing/accessory/holster(src) new /obj/item/clothing/accessory/blue(src) new /obj/item/clothing/shoes/jackboots/jacksandals(src) + new /obj/item/clothing/under/rank/centcom/blueshield(src) /obj/structure/closet/secure_closet/ntrep diff --git a/code/game/objects/structures/crates_lockers/crates.dm b/code/game/objects/structures/crates_lockers/crates.dm index 26b3e53362e..87cae2fb993 100644 --- a/code/game/objects/structures/crates_lockers/crates.dm +++ b/code/game/objects/structures/crates_lockers/crates.dm @@ -38,15 +38,13 @@ if(isliving(usr)) var/mob/living/L = usr if(L.electrocute_act(17, src)) - var/datum/effect_system/spark_spread/s = new /datum/effect_system/spark_spread - s.set_up(5, 1, src) - s.start() + do_sparks(5, 1, src) return 2 playsound(src.loc, 'sound/machines/click.ogg', 15, 1, -3) for(var/obj/O in src) //Objects - O.forceMove(loc) - for(var/mob/M in src) //Mobs + O.forceMove(loc) + for(var/mob/M in src) //Mobs M.forceMove(loc) icon_state = icon_opened src.opened = 1 @@ -69,8 +67,8 @@ break if(O.density || O.anchored || istype(O,/obj/structure/closet)) continue - if(istype(O, /obj/structure/stool/bed)) //This is only necessary because of rollerbeds and swivel chairs. - var/obj/structure/stool/bed/B = O + if(istype(O, /obj/structure/bed)) //This is only necessary because of rollerbeds and swivel chairs. + var/obj/structure/bed/B = O if(B.buckled_mob) continue O.forceMove(src) @@ -115,9 +113,7 @@ if(!(E.rcell && E.rcell.use(E.chargecost))) to_chat(user, "Unable to teleport, insufficient charge.") return - var/datum/effect_system/spark_spread/s = new /datum/effect_system/spark_spread - s.set_up(5, 1, src) - s.start() + do_sparks(5, 1, src) do_teleport(src, E.pad, 0) to_chat(user, "Teleport successful. [round(E.rcell.charge/E.chargecost)] charge\s left.") return @@ -139,9 +135,7 @@ if(!(E.rcell && E.rcell.use(E.chargecost))) to_chat(user, "Unable to teleport, insufficient charge.") return - var/datum/effect_system/spark_spread/s = new /datum/effect_system/spark_spread - s.set_up(5, 1, src) - s.start() + do_sparks(5, 1, src) do_teleport(src, L) to_chat(user, "Teleport successful. [round(E.rcell.charge/E.chargecost)] charge\s left.") return @@ -217,9 +211,7 @@ if(isliving(user)) var/mob/living/L = user if(L.electrocute_act(17, src)) - var/datum/effect_system/spark_spread/s = new /datum/effect_system/spark_spread - s.set_up(5, 1, src) - s.start() + do_sparks(5, 1, src) return src.add_fingerprint(user) src.toggle(user) diff --git a/code/game/objects/structures/dresser.dm b/code/game/objects/structures/dresser.dm index a7233bf6a82..998120c3ee8 100644 --- a/code/game/objects/structures/dresser.dm +++ b/code/game/objects/structures/dresser.dm @@ -21,33 +21,33 @@ switch(choice) if("Underwear") var/list/valid_underwear = list() - for(var/underwear in underwear_list) - var/datum/sprite_accessory/S = underwear_list[underwear] + for(var/underwear in GLOB.underwear_list) + var/datum/sprite_accessory/S = GLOB.underwear_list[underwear] if(!(H.dna.species.name in S.species_allowed)) continue - valid_underwear[underwear] = underwear_list[underwear] + valid_underwear[underwear] = GLOB.underwear_list[underwear] var/new_underwear = input(user, "Choose your underwear:", "Changing") as null|anything in valid_underwear if(new_underwear) H.underwear = new_underwear if("Undershirt") var/list/valid_undershirts = list() - for(var/undershirt in undershirt_list) - var/datum/sprite_accessory/S = undershirt_list[undershirt] + for(var/undershirt in GLOB.undershirt_list) + var/datum/sprite_accessory/S = GLOB.undershirt_list[undershirt] if(!(H.dna.species.name in S.species_allowed)) continue - valid_undershirts[undershirt] = undershirt_list[undershirt] + valid_undershirts[undershirt] = GLOB.undershirt_list[undershirt] var/new_undershirt = input(user, "Choose your undershirt:", "Changing") as null|anything in valid_undershirts if(new_undershirt) H.undershirt = new_undershirt if("Socks") var/list/valid_sockstyles = list() - for(var/sockstyle in socks_list) - var/datum/sprite_accessory/S = socks_list[sockstyle] + for(var/sockstyle in GLOB.socks_list) + var/datum/sprite_accessory/S = GLOB.socks_list[sockstyle] if(!(H.dna.species.name in S.species_allowed)) continue - valid_sockstyles[sockstyle] = socks_list[sockstyle] + valid_sockstyles[sockstyle] = GLOB.socks_list[sockstyle] var/new_socks = input(user, "Choose your socks:", "Changing") as null|anything in valid_sockstyles if(new_socks) H.socks = new_socks diff --git a/code/game/objects/structures/electricchair.dm b/code/game/objects/structures/electricchair.dm index 348c6fde265..dcbc7c017bb 100644 --- a/code/game/objects/structures/electricchair.dm +++ b/code/game/objects/structures/electricchair.dm @@ -69,9 +69,7 @@ A.updateicon() flick("echair_shock", src) - var/datum/effect_system/spark_spread/s = new /datum/effect_system/spark_spread - s.set_up(12, 1, src) - s.start() + do_sparks(12, 1, src) visible_message("The electric chair went off!", "You hear a deep sharp shock!") if(buckled_mob) buckled_mob.electrocute_act(110, src, 1) diff --git a/code/game/objects/structures/false_walls.dm b/code/game/objects/structures/false_walls.dm index 31239a5ecb4..98d17d71be9 100644 --- a/code/game/objects/structures/false_walls.dm +++ b/code/game/objects/structures/false_walls.dm @@ -82,7 +82,7 @@ if(density) icon_state = initial(icon_state) smooth = SMOOTH_TRUE - smooth_icon(src) + queue_smooth(src) else icon_state = "fwall_open" @@ -322,4 +322,4 @@ mineral = /obj/item/stack/sheet/mineral/plastitanium walltype = /turf/simulated/wall/mineral/plastitanium smooth = SMOOTH_MORE - canSmoothWith = list(/turf/simulated/wall/mineral/plastitanium, /obj/machinery/door/airlock/shuttle, /obj/machinery/door/airlock, /obj/structure/window/full/shuttle, /obj/structure/shuttle/engine/heater) \ No newline at end of file + canSmoothWith = list(/turf/simulated/wall/mineral/plastitanium, /obj/machinery/door/airlock/shuttle, /obj/machinery/door/airlock, /obj/structure/window/full/shuttle, /obj/structure/shuttle/engine/heater) diff --git a/code/game/objects/structures/flora.dm b/code/game/objects/structures/flora.dm index 368391874ba..bd97d611576 100644 --- a/code/game/objects/structures/flora.dm +++ b/code/game/objects/structures/flora.dm @@ -211,6 +211,7 @@ layer = 5 w_class = WEIGHT_CLASS_HUGE force = 10 + force_wielded = 10 throwforce = 13 throw_speed = 2 throw_range = 4 @@ -222,9 +223,10 @@ icon_state = "plant-36" /obj/item/twohanded/required/kirbyplants/equipped(mob/living/user) + . = ..() var/image/I = image(icon = 'icons/obj/flora/plants.dmi' , icon_state = src.icon_state, loc = user) I.override = 1 - user.add_alt_appearance("sneaking_mission", I, player_list) + user.add_alt_appearance("sneaking_mission", I, GLOB.player_list) /obj/item/twohanded/required/kirbyplants/dropped(mob/living/user) ..() diff --git a/code/game/objects/structures/grille.dm b/code/game/objects/structures/grille.dm index 6b8f5544428..22b796c4c20 100644 --- a/code/game/objects/structures/grille.dm +++ b/code/game/objects/structures/grille.dm @@ -254,9 +254,7 @@ var/obj/structure/cable/C = T.get_cable_node() if(C) if(electrocute_mob(user, C, src)) - var/datum/effect_system/spark_spread/s = new /datum/effect_system/spark_spread - s.set_up(3, 1, src) - s.start() + do_sparks(3, 1, src) return 1 else return 0 diff --git a/code/game/objects/structures/janicart.dm b/code/game/objects/structures/janicart.dm index 1a7c6abb579..bba1dc18de6 100644 --- a/code/game/objects/structures/janicart.dm +++ b/code/game/objects/structures/janicart.dm @@ -7,7 +7,7 @@ icon_state = "cart" anchored = 0 density = 1 - flags = OPENCONTAINER + container_type = OPENCONTAINER //copypaste sorry var/amount_per_transfer_from_this = 5 //shit I dunno, adding this so syringes stop runtime erroring. --NeoFite var/obj/item/storage/bag/trash/mybag = null @@ -21,10 +21,10 @@ /obj/structure/janitorialcart/New() ..() create_reagents(100) - janitorial_equipment += src + GLOB.janitorial_equipment += src /obj/structure/janitorialcart/Destroy() - janitorial_equipment -= src + GLOB.janitorial_equipment -= src QDEL_NULL(mybag) QDEL_NULL(mymop) QDEL_NULL(myspray) diff --git a/code/game/objects/structures/mop_bucket.dm b/code/game/objects/structures/mop_bucket.dm index c2e76703b68..f01cc8c41ca 100644 --- a/code/game/objects/structures/mop_bucket.dm +++ b/code/game/objects/structures/mop_bucket.dm @@ -4,20 +4,20 @@ icon = 'icons/obj/janitor.dmi' icon_state = "mopbucket" density = 1 - flags = OPENCONTAINER + container_type = OPENCONTAINER var/amount_per_transfer_from_this = 5 //shit I dunno, adding this so syringes stop runtime erroring. --NeoFite /obj/structure/mopbucket/New() ..() create_reagents(100) - janitorial_equipment += src + GLOB.janitorial_equipment += src /obj/structure/mopbucket/full/New() ..() reagents.add_reagent("water", 100) /obj/structure/mopbucket/Destroy() - janitorial_equipment -= src + GLOB.janitorial_equipment -= src return ..() /obj/structure/mopbucket/examine(mob/user) diff --git a/code/game/objects/structures/musician.dm b/code/game/objects/structures/musician.dm index b8c28046bd3..274645933b2 100644 --- a/code/game/objects/structures/musician.dm +++ b/code/game/objects/structures/musician.dm @@ -296,7 +296,8 @@ return ..() /obj/structure/piano/Initialize() - song.tempo = song.sanitize_tempo(song.tempo) // tick_lag isn't set when the map is loaded + if(song) + song.tempo = song.sanitize_tempo(song.tempo) // tick_lag isn't set when the map is loaded ..() /obj/structure/piano/attack_hand(mob/user as mob) diff --git a/code/game/objects/structures/plasticflaps.dm b/code/game/objects/structures/plasticflaps.dm index 3911d366ad6..19b6dc02617 100644 --- a/code/game/objects/structures/plasticflaps.dm +++ b/code/game/objects/structures/plasticflaps.dm @@ -65,8 +65,8 @@ if(istype(A) && A.checkpass(PASSGLASS)) return prob(60) - var/obj/structure/stool/bed/B = A - if(istype(A, /obj/structure/stool/bed) && B.buckled_mob)//if it's a bed/chair and someone is buckled, it will not pass + var/obj/structure/bed/B = A + if(istype(A, /obj/structure/bed) && B.buckled_mob)//if it's a bed/chair and someone is buckled, it will not pass return 0 if(istype(A, /obj/structure/closet/cardboard)) @@ -133,4 +133,4 @@ return ..() /obj/structure/plasticflaps/mining/CanAtmosPass(turf/T) - return 0 \ No newline at end of file + return 0 diff --git a/code/game/objects/structures/safe.dm b/code/game/objects/structures/safe.dm index e1d534decd0..8001ab4c2df 100644 --- a/code/game/objects/structures/safe.dm +++ b/code/game/objects/structures/safe.dm @@ -84,9 +84,9 @@ GLOBAL_LIST_EMPTY(safes) to_chat(user, "You hear a [pick("clack", "scrape", "clank")] from [src].") if(tum2 && (turns_total == 1 || prob(10))) // So multi turns dont super spam the chat to_chat(user, "You hear a [pick("click", "chink", "clink")] from [src].") - if(tumbler_1_pos == tumbler_1_open && turns_total == 1) // You cant hear tumblers if you spin fast! + if(tumbler_1_pos == tumbler_1_open && turns_total == 1 && tum1) // You cant hear tumblers if you spin fast! to_chat(user, "You hear a [pick("tonk", "krunk", "plunk")] from [src].") - if(tumbler_2_pos == tumbler_2_open && turns_total == 1 ) // You cant hear tumblers if you spin fast! + if(tumbler_2_pos == tumbler_2_open && turns_total == 1 && tum2) // You cant hear tumblers if you spin fast! to_chat(user, "You hear a [pick("tink", "krink", "plink")] from [src].") if(!locked) if(user) diff --git a/code/game/objects/structures/statues.dm b/code/game/objects/structures/statues.dm index 2d122921b12..14ef2b08f2b 100644 --- a/code/game/objects/structures/statues.dm +++ b/code/game/objects/structures/statues.dm @@ -184,17 +184,17 @@ burn = TRUE if(burn) if(Proj.firer) - message_admins("Plasma statue ignited by [key_name_admin(Proj.firer)](?) (FLW) in ([x],[y],[z] - JMP)",0,1) + message_admins("Plasma statue ignited by [key_name_admin(Proj.firer)]([ADMIN_QUE(Proj.firer,"?")]) ([ADMIN_FLW(Proj.firer,"FLW")]) in ([x],[y],[z] - JMP)",0,1) log_game("Plasma statue ignited by [key_name(Proj.firer)] in ([x],[y],[z])") investigate_log("was ignited by [key_name(Proj.firer)]","atmos") else - message_admins("Plasma statue ignited by [Proj]. No known firer.(?) (FLW) in ([x],[y],[z] - JMP)",0,1) + message_admins("Plasma statue ignited by [Proj]. No known firer.([ADMIN_QUE(Proj.firer,"?")]) ([ADMIN_FLW(Proj.firer,"FLW")]) in ([x],[y],[z] - JMP)",0,1) log_game("Plasma statue ignited by [Proj] in ([x],[y],[z]). No known firer.") ..() /obj/structure/statue/plasma/attackby(obj/item/W, mob/user, params) if(is_hot(W) > 300)//If the temperature of the object is over 300, then ignite - message_admins("Plasma statue ignited by [key_name_admin(user)](?) (FLW) in ([x],[y],[z] - JMP)",0,1) + message_admins("Plasma statue ignited by [key_name_admin(user)]([ADMIN_QUE(user,"?")]) ([ADMIN_FLW(user,"FLW")]) in ([x],[y],[z] - JMP)",0,1) log_game("Plasma statue ignited by [key_name(user)] in ([x],[y],[z])") investigate_log("was ignited by [key_name(user)]","atmos") ignite(is_hot(W)) diff --git a/code/game/objects/structures/stool_bed_chair_nest/bed.dm b/code/game/objects/structures/stool_bed_chair_nest/bed.dm index 52b8e76b11d..ddb29ee0566 100644 --- a/code/game/objects/structures/stool_bed_chair_nest/bed.dm +++ b/code/game/objects/structures/stool_bed_chair_nest/bed.dm @@ -80,11 +80,12 @@ density = TRUE icon_state = "up" M.pixel_y = initial(M.pixel_y) - else - density = FALSE - icon_state = "down" - M.pixel_x = M.get_standard_pixel_x_offset(M.lying) - M.pixel_y = M.get_standard_pixel_y_offset(M.lying) + +/obj/structure/bed/roller/post_unbuckle_mob(mob/living/M) + density = FALSE + icon_state = "down" + M.pixel_x = M.get_standard_pixel_x_offset(M.lying) + M.pixel_y = M.get_standard_pixel_y_offset(M.lying) /obj/item/roller name = "roller bed" diff --git a/code/game/objects/structures/tables_racks.dm b/code/game/objects/structures/tables_racks.dm index 91f348d0106..999e90cd89f 100644 --- a/code/game/objects/structures/tables_racks.dm +++ b/code/game/objects/structures/tables_racks.dm @@ -50,8 +50,8 @@ /obj/structure/table/update_icon() if(smooth && !flipped) icon_state = "" - smooth_icon(src) - smooth_icon_neighbors(src) + queue_smooth(src) + queue_smooth_neighbors(src) if(flipped) clear_smooth_overlays() @@ -82,6 +82,10 @@ new /obj/structure/table/reinforced/brass(loc) qdel(src) +/obj/structure/table/do_climb(mob/living/user) + . = ..() + item_placed(user) + /obj/structure/table/attack_hand(mob/living/user) ..() if(climber) @@ -91,6 +95,9 @@ /obj/structure/table/attack_tk() // no telehulk sorry return +/obj/structure/table/proc/item_placed(item) + return + /obj/structure/table/CanPass(atom/movable/mover, turf/target, height=0) if(height == 0) return 1 @@ -173,19 +180,24 @@ var/obj/item/grab/G = I if(G.affecting.buckled) to_chat(user, "[G.affecting] is buckled to [G.affecting.buckled]!") - return 0 + return FALSE if(G.state < GRAB_AGGRESSIVE) to_chat(user, "You need a better grip to do that!") - return 0 + return FALSE if(!G.confirm()) - return 0 + return FALSE + var/blocking_object = density_check() + if(blocking_object) + to_chat(user, "You cannot do this there is \a [blocking_object] in the way!") + return FALSE G.affecting.forceMove(get_turf(src)) G.affecting.Weaken(2) + item_placed(G.affecting) G.affecting.visible_message("[G.assailant] pushes [G.affecting] onto [src].", \ "[G.assailant] pushes [G.affecting] onto [src].") add_attack_logs(G.assailant, G.affecting, "Pushed onto a table") qdel(I) - return 1 + return TRUE qdel(I) /obj/structure/table/attackby(obj/item/I, mob/user, params) @@ -221,6 +233,7 @@ //Clamp it so that the icon never moves more than 16 pixels in either direction (thus leaving the table turf) I.pixel_x = Clamp(text2num(click_params["icon-x"]) - 16, -(world.icon_size/2), world.icon_size/2) I.pixel_y = Clamp(text2num(click_params["icon-y"]) - 16, -(world.icon_size/2), world.icon_size/2) + item_placed(I) else return ..() @@ -274,6 +287,9 @@ set category = "Object" set src in oview(1) + if(!can_touch(usr) || ismouse(usr)) + return + if(!unflip()) to_chat(usr, "It won't budge.") return @@ -545,6 +561,72 @@ /obj/structure/table/reinforced/brass/ratvar_act() obj_integrity = max_integrity +/obj/structure/table/tray + name = "surgical tray" + desc = "A small metal tray with wheels." + anchored = FALSE + smooth = SMOOTH_FALSE + icon = 'icons/obj/stationobjs.dmi' + icon_state = "tray" + buildstack = /obj/item/stack/sheet/mineral/titanium + buildstackamount = 2 + var/list/typecache_can_hold = list(/mob, /obj/item) + var/list/held_items = list() + +/obj/structure/table/tray/Initialize() + . = ..() + verbs -= /obj/structure/table/verb/do_flip + typecache_can_hold = typecacheof(typecache_can_hold) + for(var/atom/movable/held in get_turf(src)) + if(is_type_in_typecache(held, typecache_can_hold)) + held_items += held.UID() + +/obj/structure/table/tray/Move(NewLoc, direct) + var/atom/OldLoc = loc + + . = ..() + if(!.) // ..() will return 0 if we didn't actually move anywhere. + return . + + if(direct & (direct - 1)) // This represents a diagonal movement, which is split into multiple cardinal movements. We'll handle moving the items on the cardinals only. + return . + + playsound(loc, pick('sound/items/cartwheel1.ogg', 'sound/items/cartwheel2.ogg'), 100, 1, ignore_walls = FALSE) + + var/atom/movable/held + for(var/held_uid in held_items) + held = locateUID(held_uid) + if(!held) + held_items -= held_uid + continue + if(OldLoc != held.loc) + held_items -= held_uid + continue + held.forceMove(NewLoc) + +/obj/structure/table/tray/item_placed(atom/movable/item) + . = ..() + if(is_type_in_typecache(item, typecache_can_hold)) + held_items += item.UID() + +/obj/structure/table/tray/deconstruct(disassembled = TRUE, wrench_disassembly = 0) + if(can_deconstruct) + var/turf/T = get_turf(src) + new buildstack(T, buildstackamount) + qdel(src) + +/obj/structure/table/tray/deconstruction_hints(mob/user) + to_chat(user, "It is held together by some screws and bolts.") + +/obj/structure/table/tray/flip() + return 0 + +/obj/structure/table/tray/narsie_act() + return 0 + +/obj/structure/table/tray/ratvar_act() + return 0 + /* * Racks */ diff --git a/code/game/objects/structures/watercloset.dm b/code/game/objects/structures/watercloset.dm index 751ade6081f..e657e9f8538 100644 --- a/code/game/objects/structures/watercloset.dm +++ b/code/game/objects/structures/watercloset.dm @@ -115,8 +115,8 @@ if(!open) return var/obj/item/reagent_containers/RG = I - if(RG.is_open_container()) - if(RG.reagents.total_volume >= RG.volume) + if(RG.is_refillable()) + if(RG.reagents.holder_full()) to_chat(user, "[RG] is full.") else RG.reagents.add_reagent("toiletwater", min(RG.volume - RG.reagents.total_volume, RG.amount_per_transfer_from_this)) diff --git a/code/game/objects/structures/window.dm b/code/game/objects/structures/window.dm index 25c78f6e972..a33e4176599 100644 --- a/code/game/objects/structures/window.dm +++ b/code/game/objects/structures/window.dm @@ -65,7 +65,7 @@ var/global/wcCommon = pick(list("#379963", "#0d8395", "#58b5c3", "#49e46e", "#8f else to_chat(user, "The window is unscrewed from the floor, and could be deconstructed by wrenching.") if(!anchored && !fulltile) - to_chat(user, "Alt-click to rotate it clockwise.") + to_chat(user, "Alt-click to rotate it.") /obj/structure/window/New(Loc, direct) ..() @@ -355,7 +355,7 @@ var/global/wcCommon = pick(list("#379963", "#0d8395", "#58b5c3", "#49e46e", "#8f set category = "Object" set src in oview(1) - if(usr.stat || !usr.canmove || usr.restrained()) + if(usr.incapacitated()) return if(anchored) @@ -378,7 +378,7 @@ var/global/wcCommon = pick(list("#379963", "#0d8395", "#58b5c3", "#49e46e", "#8f set category = "Object" set src in oview(1) - if(usr.stat || !usr.canmove || usr.restrained()) + if(usr.incapacitated()) return if(anchored) @@ -397,12 +397,31 @@ var/global/wcCommon = pick(list("#379963", "#0d8395", "#58b5c3", "#49e46e", "#8f return TRUE /obj/structure/window/AltClick(mob/user) + if(user.incapacitated()) to_chat(user, "You can't do that right now!") return + if(!Adjacent(user)) + to_chat(user, "Move closer to the window!") return - revrotate() + + if(anchored) + to_chat(user, "[src] cannot be rotated while it is fastened to the floor!") + return FALSE + + var/target_dir = turn(dir, 270) + + if(!valid_window_location(loc, target_dir)) + target_dir = turn(dir, 90) + if(!valid_window_location(loc, target_dir)) + to_chat(user, "There is no room to rotate the [src]") + return FALSE + + setDir(target_dir) + ini_dir = dir + add_fingerprint(user) + return TRUE /obj/structure/window/Destroy() density = FALSE @@ -425,7 +444,7 @@ var/global/wcCommon = pick(list("#379963", "#0d8395", "#58b5c3", "#49e46e", "#8f /obj/structure/window/proc/update_nearby_icons() update_icon() if(smooth) - smooth_icon_neighbors(src) + queue_smooth_neighbors(src) /obj/structure/window/update_icon() if(!QDELETED(src)) @@ -434,7 +453,7 @@ var/global/wcCommon = pick(list("#379963", "#0d8395", "#58b5c3", "#49e46e", "#8f var/ratio = obj_integrity / max_integrity ratio = CEILING(ratio*4, 1) * 25 if(smooth) - smooth_icon(src) + queue_smooth(src) overlays -= crack_overlay if(ratio > 75) return @@ -714,4 +733,4 @@ obj/structure/window/full/reinforced/ice dir = FULLTILE_WINDOW_DIR max_integrity = 120 level = 3 - glass_amount = 2 \ No newline at end of file + glass_amount = 2 diff --git a/code/game/sound.dm b/code/game/sound.dm index 66746ece0ae..ed42af1223f 100644 --- a/code/game/sound.dm +++ b/code/game/sound.dm @@ -11,7 +11,7 @@ // Looping through the player list has the added bonus of working for mobs inside containers var/sound/S = sound(get_sfx(soundin)) var/maxdistance = (world.view + extrarange) * 3 - var/list/listeners = player_list + var/list/listeners = GLOB.player_list if(!ignore_walls) //these sounds don't carry through walls listeners = listeners & hearers(maxdistance, turf_source) for(var/P in listeners) @@ -86,7 +86,7 @@ /proc/sound_to_playing_players(soundin, volume = 100, vary = FALSE, frequency = 0, falloff = FALSE, channel = 0, pressure_affected = FALSE, sound/S) if(!S) S = sound(get_sfx(soundin)) - for(var/m in player_list) + for(var/m in GLOB.player_list) if(ismob(m) && !isnewplayer(m)) var/mob/M = m M.playsound_local(M, null, volume, vary, frequency, falloff, channel, pressure_affected, S) @@ -146,4 +146,7 @@ 'sound/machines/terminal_button07.ogg', 'sound/machines/terminal_button08.ogg') if("growls") soundin = pick('sound/goonstation/voice/growl1.ogg', 'sound/goonstation/voice/growl2.ogg', 'sound/goonstation/voice/growl3.ogg') + + if("bonebreak") + soundin = pick('sound/effects/bone_break_1.ogg', 'sound/effects/bone_break_2.ogg', 'sound/effects/bone_break_3.ogg', 'sound/effects/bone_break_4.ogg', 'sound/effects/bone_break_5.ogg', 'sound/effects/bone_break_6.ogg') return soundin diff --git a/code/game/turfs/simulated.dm b/code/game/turfs/simulated.dm index fedbfaa5929..21dbdb9e024 100644 --- a/code/game/turfs/simulated.dm +++ b/code/game/turfs/simulated.dm @@ -85,6 +85,6 @@ /turf/simulated/ChangeTurf(var/path) . = ..() - smooth_icon_neighbors(src) + queue_smooth_neighbors(src) /turf/simulated/proc/is_shielded() diff --git a/code/game/turfs/simulated/floor.dm b/code/game/turfs/simulated/floor.dm index 42d241404b1..d26a24b39a2 100644 --- a/code/game/turfs/simulated/floor.dm +++ b/code/game/turfs/simulated/floor.dm @@ -180,7 +180,6 @@ 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 1eb86650e4d..e9f8d96e70f 100644 --- a/code/game/turfs/simulated/floor/fancy_floor.dm +++ b/code/game/turfs/simulated/floor/fancy_floor.dm @@ -73,8 +73,7 @@ if(..()) return if(istype(C, /obj/item/shovel)) - new /obj/item/ore/glass(src) - new /obj/item/ore/glass(src) //Make some sand if you shovel grass + new /obj/item/stack/ore/glass(src, 2) //Make some sand if you shovel grass to_chat(user, "You shovel the grass.") playsound(src, 'sound/effects/shovel_dig.ogg', 50, 1) make_plating() @@ -91,8 +90,7 @@ if(..()) return if(istype(W, /obj/item/shovel)) - new /obj/item/ore/glass/basalt(src) - new /obj/item/ore/glass/basalt(src) + new /obj/item/stack/ore/glass/basalt(src, 2) user.visible_message("[user] digs up [src].", "You uproot [src].") playsound(src, 'sound/effects/shovel_dig.ogg', 50, 1) make_plating() @@ -130,11 +128,11 @@ return 0 if(!broken && !burnt) if(smooth) - smooth_icon(src) + queue_smooth(src) else make_plating() if(smooth) - smooth_icon_neighbors(src) + queue_smooth_neighbors(src) /turf/simulated/floor/carpet/break_tile() broken = 1 diff --git a/code/game/turfs/simulated/floor/mineral.dm b/code/game/turfs/simulated/floor/mineral.dm index d2e147d9532..f5a07bf9241 100644 --- a/code/game/turfs/simulated/floor/mineral.dm +++ b/code/game/turfs/simulated/floor/mineral.dm @@ -38,7 +38,7 @@ /turf/simulated/floor/mineral/plasma/attackby(obj/item/W, mob/user, params) if(is_hot(W) > 300)//If the temperature of the object is over 300, then ignite - message_admins("Plasma flooring was ignited by [key_name_admin(user)](?) (FLW) in ([x],[y],[z] - JMP)",0,1) + message_admins("Plasma flooring was ignited by [key_name_admin(user)]([ADMIN_QUE(user,"?")]) ([ADMIN_FLW(user,"FLW")]) in ([x],[y],[z] - JMP)",0,1) log_game("Plasma flooring was ignited by [key_name(user)] in ([x],[y],[z])") investigate_log("was ignited by [key_name(user)]","atmos") ignite(is_hot(W)) diff --git a/code/game/turfs/simulated/floor/plating.dm b/code/game/turfs/simulated/floor/plating.dm index 7f71cf981bd..c6de130c81a 100644 --- a/code/game/turfs/simulated/floor/plating.dm +++ b/code/game/turfs/simulated/floor/plating.dm @@ -15,9 +15,6 @@ /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() @@ -25,7 +22,6 @@ 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(..()) @@ -199,9 +195,13 @@ oxygen = 0 nitrogen = 0 +/turf/simulated/floor/plating/ironsand + name = "Iron Sand" + icon = 'icons/turf/floors/ironsand.dmi' + icon_state = "ironsand1" + /turf/simulated/floor/plating/ironsand/New() ..() - name = "Iron Sand" icon_state = "ironsand[rand(1,15)]" /turf/simulated/floor/plating/snow diff --git a/code/game/turfs/simulated/walls.dm b/code/game/turfs/simulated/walls.dm index c22c7530505..6008b093c5a 100644 --- a/code/game/turfs/simulated/walls.dm +++ b/code/game/turfs/simulated/walls.dm @@ -72,7 +72,7 @@ if(!damage_overlays[1]) //list hasn't been populated generate_overlays() - smooth_icon(src) + queue_smooth(src) if(!damage) if(damage_overlay) overlays -= damage_overlays[damage_overlay] diff --git a/code/game/turfs/simulated/walls_reinforced.dm b/code/game/turfs/simulated/walls_reinforced.dm index eb054ba19ed..f1837173d6d 100644 --- a/code/game/turfs/simulated/walls_reinforced.dm +++ b/code/game/turfs/simulated/walls_reinforced.dm @@ -65,7 +65,7 @@ d_state = RWALL_INTACT update_icon() - smooth_icon_neighbors(src) + queue_smooth_neighbors(src) to_chat(user, "You repair the last of the damage.") return TRUE @@ -84,7 +84,7 @@ to_chat(user, "You add an additional layer of coating to the wall.") ChangeTurf(/turf/simulated/wall/r_wall/coated) update_icon() - smooth_icon_neighbors(src) + queue_smooth_neighbors(src) can_be_reinforced = FALSE return TRUE return FALSE diff --git a/code/game/turfs/turf.dm b/code/game/turfs/turf.dm index 2e60537ce6f..d7ed44c3c9a 100644 --- a/code/game/turfs/turf.dm +++ b/code/game/turfs/turf.dm @@ -39,18 +39,18 @@ for(var/atom/movable/AM in src) Entered(AM) if(smooth && ticker && ticker.current_state == GAME_STATE_PLAYING) - smooth_icon(src) + queue_smooth(src) /hook/startup/proc/smooth_world() var/watch = start_watch() log_startup_progress("Smoothing atoms...") for(var/turf/T in world) if(T.smooth) - smooth_icon(T) + queue_smooth(T) for(var/A in T) var/atom/AA = A if(AA.smooth) - smooth_icon(AA) + queue_smooth(AA) log_startup_progress(" Smoothed atoms in [stop_watch(watch)]s.") return 1 @@ -226,8 +226,6 @@ for(var/obj/structure/cable/C in contents) qdel(C) - smooth_icon(src) - /turf/simulated/AfterChange(ignore_air, keep_cabling = FALSE) ..() RemoveLattice() diff --git a/code/game/verbs/ooc.dm b/code/game/verbs/ooc.dm index 29d5e41b716..a35047bb9ad 100644 --- a/code/game/verbs/ooc.dm +++ b/code/game/verbs/ooc.dm @@ -58,7 +58,7 @@ var/global/admin_ooc_colour = "#b82e00" if((prefs.toggles & MEMBER_PUBLIC)) display_colour = member_ooc_colour - for(var/client/C in clients) + for(var/client/C in GLOB.clients) if(C.prefs.toggles & CHAT_OOC) var/display_name = key @@ -198,13 +198,13 @@ var/global/admin_ooc_colour = "#b82e00" if(mob.stat != DEAD) display_name = mob.name - for(var/client/target in clients) + for(var/client/target in GLOB.clients) if(target.prefs.toggles & CHAT_LOOC) var/prefix = "" var/admin_stuff = "" var/send = 0 - if(target in admins) + if(target in GLOB.admins) if(check_rights(R_ADMIN|R_MOD,0,target.mob)) admin_stuff += "/([key])" if(target != src) @@ -221,7 +221,7 @@ var/global/admin_ooc_colour = "#b82e00" send = 1 prefix = " (Eye)" - if(!send && (target in admins)) + if(!send && (target in GLOB.admins)) if(check_rights(R_ADMIN|R_MOD,0,target.mob)) send = 1 prefix = "(R)" diff --git a/code/game/verbs/who.dm b/code/game/verbs/who.dm index dd8123b2876..8a322edd2f8 100644 --- a/code/game/verbs/who.dm +++ b/code/game/verbs/who.dm @@ -9,7 +9,7 @@ var/list/Lines = list() if(check_rights(R_ADMIN,0)) - for(var/client/C in clients) + for(var/client/C in GLOB.clients) if(C.holder && C.holder.big_brother && !check_rights(R_PERMISSIONS, 0)) // need PERMISSIONS to see BB continue @@ -47,10 +47,10 @@ if(is_special_character(C.mob)) entry += " - Antagonist" - entry += " (?)" + entry += " ([ADMIN_QUE(C.mob,"?")])" Lines += entry else - for(var/client/C in clients) + for(var/client/C in GLOB.clients) if(C.holder && C.holder.big_brother) // BB doesn't show up at all continue @@ -74,7 +74,7 @@ var/num_mods_online = 0 var/num_admins_online = 0 if(holder) - for(var/client/C in admins) + for(var/client/C in GLOB.admins) if(check_rights(R_ADMIN, 0, C.mob)) if(C.holder.fakekey && !check_rights(R_ADMIN, 0)) //Mentors can't see stealthmins @@ -116,7 +116,7 @@ modmsg += "\n" num_mods_online++ else - for(var/client/C in admins) + for(var/client/C in GLOB.admins) if(check_rights(R_ADMIN, 0, C.mob)) if(!C.holder.fakekey) diff --git a/code/game/world.dm b/code/game/world.dm index bb5df66be53..80bd980f404 100644 --- a/code/game/world.dm +++ b/code/game/world.dm @@ -82,7 +82,7 @@ var/world_topic_spam_protect_time = world.timeofday else if("players" in input) var/n = 0 - for(var/mob/M in player_list) + for(var/mob/M in GLOB.player_list) if(M.client) n++ return n @@ -107,7 +107,7 @@ var/world_topic_spam_protect_time = world.timeofday var/player_count = 0 var/admin_count = 0 - for(var/client/C in clients) + for(var/client/C in GLOB.clients) if(C.holder) if(C.holder.fakekey) continue //so stealthmins aren't revealed by the hub @@ -185,7 +185,7 @@ var/world_topic_spam_protect_time = world.timeofday var/client/C - for(var/client/K in clients) + for(var/client/K in GLOB.clients) if(K.ckey == input["adminmsg"]) C = K break @@ -201,7 +201,7 @@ var/world_topic_spam_protect_time = world.timeofday C << 'sound/effects/adminhelp.ogg' to_chat(C, message) - for(var/client/A in admins) + for(var/client/A in GLOB.admins) if(A != C) to_chat(A, amessage) @@ -224,7 +224,7 @@ var/world_topic_spam_protect_time = world.timeofday if(input["key"] != config.comms_password) return "Bad Key" else - for(var/client/C in clients) + for(var/client/C in GLOB.clients) to_chat(C, "PR: [input["announce"]]") else if("kick" in input) @@ -237,7 +237,7 @@ var/world_topic_spam_protect_time = world.timeofday var/client/C - for(var/client/K in clients) + for(var/client/K in GLOB.clients) if(K.ckey == input["kick"]) C = K break @@ -305,8 +305,8 @@ var/world_topic_spam_protect_time = world.timeofday return to_chat(world, "Rebooting world in [delay/10] [delay > 10 ? "seconds" : "second"]. [reason]") - var/round_end_sound = pick(round_end_sounds) - var/sound_length = round_end_sounds[round_end_sound] + var/round_end_sound = pick(GLOB.round_end_sounds) + var/sound_length = GLOB.round_end_sounds[round_end_sound] if(delay > sound_length) // If there's time, play the round-end sound before rebooting spawn(delay - sound_length) if(!ticker.delay_end) @@ -324,7 +324,7 @@ var/world_topic_spam_protect_time = world.timeofday processScheduler.stop() shutdown_logging() // Past this point, no logging procs can be used, at risk of data loss. - for(var/client/C in clients) + for(var/client/C in GLOB.clients) if(config.server) //if you set a server location in config.txt, it sends you there instead of trying to reconnect to the same world address. -- NeoFite C << link("byond://[config.server]") @@ -407,7 +407,7 @@ var/world_topic_spam_protect_time = world.timeofday features += "AI allowed" var/n = 0 - for(var/mob/M in player_list) + for(var/mob/M in GLOB.player_list) if(M.client) n++ diff --git a/code/modules/admin/DB ban/functions.dm b/code/modules/admin/DB ban/functions.dm index f04f36a7bcc..47085a8b749 100644 --- a/code/modules/admin/DB ban/functions.dm +++ b/code/modules/admin/DB ban/functions.dm @@ -100,14 +100,14 @@ datum/admins/proc/DB_ban_record(var/bantype, var/mob/banned_mob, var/duration = return var/who - for(var/client/C in clients) + for(var/client/C in GLOB.clients) if(!who) who = "[C]" else who += ", [C]" var/adminwho - for(var/client/C in admins) + for(var/client/C in GLOB.admins) if(!adminwho) adminwho = "[C]" else diff --git a/code/modules/admin/IsBanned.dm b/code/modules/admin/IsBanned.dm index 4c905a0b517..ec9fa9af05e 100644 --- a/code/modules/admin/IsBanned.dm +++ b/code/modules/admin/IsBanned.dm @@ -9,9 +9,9 @@ world/IsBanned(key,address,computer_id) return list("reason"="invalid login data", "desc"="Error: Could not check ban status, Please try again. Error message: Your computer provided an invalid Computer ID.") var/admin = 0 var/ckey = ckey(key) - if((ckey in admin_datums) || (ckey in deadmins)) + if((ckey in admin_datums) || (ckey in GLOB.deadmins)) var/datum/admins/A = admin_datums[ckey] - if(A.rights & R_ADMIN) + if(A && (A.rights & R_ADMIN)) admin = 1 //Guest Checking diff --git a/code/modules/admin/admin.dm b/code/modules/admin/admin.dm index f401589bf90..2c16a0feb49 100644 --- a/code/modules/admin/admin.dm +++ b/code/modules/admin/admin.dm @@ -4,7 +4,7 @@ var/global/nologevent = 0 //////////////////////////////// /proc/message_admins(var/msg) msg = "ADMIN LOG: [msg]" - for(var/client/C in admins) + for(var/client/C in GLOB.admins) if(R_ADMIN & C.holder.rights) if(C.prefs && !(C.prefs.toggles & CHAT_NO_ADMINLOGS)) to_chat(C, msg) @@ -12,7 +12,7 @@ var/global/nologevent = 0 /proc/msg_admin_attack(var/text, var/loglevel) if(!nologevent) var/rendered = "ATTACK: [text]" - for(var/client/C in admins) + for(var/client/C in GLOB.admins) if(R_ADMIN & C.holder.rights) if(C.prefs.atklog == ATKLOG_NONE) continue @@ -23,7 +23,7 @@ var/global/nologevent = 0 /proc/message_adminTicket(var/msg) msg = "ADMIN TICKET: [msg]" - for(var/client/C in admins) + for(var/client/C in GLOB.admins) if(R_ADMIN & C.holder.rights) if(C.prefs && !(C.prefs.toggles & CHAT_NO_TICKETLOGS)) to_chat(C, msg) @@ -31,7 +31,7 @@ var/global/nologevent = 0 ///////////////////////////////////////////////////////////////////////////////////////////////Panels -/datum/admins/proc/show_player_panel(var/mob/M in mob_list) +/datum/admins/proc/show_player_panel(var/mob/M in GLOB.mob_list) set category = "Admin" set name = "Show Player Panel" set desc="Edit player (respawn, ban, heal, etc)" @@ -53,13 +53,13 @@ var/global/nologevent = 0 if(istype(M, /mob/new_player)) body += " Hasn't Entered Game " else - body += " \[Heal\] " + body += " \[Heal\] " body += "

\[ " body += "VV - " - body += "TP - " - body += "PM - " - body += "SM - " + body += "[ADMIN_TP(M,"TP")] - " + body += "PM - " + body += "[ADMIN_SM(M,"SM")] - " if(ishuman(M) && M.mind) body += "HM -" body += "[admin_jump_link(M)]\]

" @@ -70,45 +70,45 @@ var/global/nologevent = 0 if(M.client.related_accounts_ip.len) body += "Related accounts by IP: [jointext(M.client.related_accounts_ip, " - ")]

" - body += "Kick | " + body += "Kick | " body += "Warn | " - body += "Ban | " - body += "Jobban | " - body += "Appearance Ban | " + body += "Ban | " + body += "Jobban | " + body += "Appearance Ban | " body += "Notes | " if(M.client) if(M.client.check_watchlist(M.client.ckey)) body += "Remove from Watchlist | " body += "Edit Watchlist Reason " else - body += "Add to Watchlist " + body += "Add to Watchlist " if(M.client) - body += "| Prison | " - body += "\ Send back to Lobby | " + body += "| Prison | " + body += "\ Send back to Lobby | " var/muted = M.client.prefs.muted body += {"
Mute: - \[IC | - OOC | - PRAY | - ADMINHELP | - DEADCHAT\] - (toggle all) + \[IC | + OOC | + PRAY | + ADMINHELP | + DEADCHAT\] + (toggle all) "} var/jumptoeye = "" if(isAI(M)) var/mob/living/silicon/ai/A = M if(A.client && A.eyeobj) // No point following clientless AI eyes - jumptoeye = " (Eye)" + jumptoeye = " (Eye)" body += {"

- Jump to[jumptoeye] | - Get | - Send To + Jump to[jumptoeye] | + Get | + Send To

- [check_rights(R_ADMIN,0) ? "Traitor panel | " : "" ] - Narrate to | - Subtle message + [check_rights(R_ADMIN,0) ? "[ADMIN_TP(M,"Traitor panel")] | " : "" ] + Narrate to | + [ADMIN_SM(M,"Subtle message")] "} if(check_rights(R_EVENT, 0)) @@ -128,39 +128,39 @@ var/global/nologevent = 0 if(issmall(M)) body += "Monkeyized | " else - body += "Monkeyize | " + body += "Monkeyize | " //Corgi if(iscorgi(M)) body += "Corgized | " else - body += "Corgize | " + body += "Corgize | " //AI / Cyborg if(isAI(M)) body += "Is an AI " else if(ishuman(M)) - body += {"Make AI | - Make Mask | - Make Robot | - Make Alien | - Make Slime | - Make Superhero + body += {"Make AI | + Make Mask | + Make Robot | + Make Alien | + Make Slime | + Make Superhero "} //Simple Animals if(isanimal(M)) - body += "Re-Animalize | " + body += "Re-Animalize | " else - body += "Animalize | " + body += "Animalize | " if(istype(M, /mob/dead/observer)) - body += "Re-incarnate | " + body += "Re-incarnate | " if(ispAI(M)) body += "Is a pAI " else - body += "Make pAI | " + body += "Make pAI | " // DNA2 - Admin Hax if(M.dna && iscarbon(M)) @@ -175,7 +175,7 @@ var/global/nologevent = 0 if(bname) var/bstate=M.dna.GetSEState(block) var/bcolor="[(bstate)?"#006600":"#ff0000"]" - body += "[bname][block]" + body += "[bname][block]" else body += "[block]" body+="" @@ -183,39 +183,39 @@ var/global/nologevent = 0 body += {"

Rudimentary transformation:
These transformations only create a new mob type and copy stuff over. They do not take into account MMIs and similar mob-specific things. The buttons in 'Transformations' are preferred, when possible.

- Observer | - \[ Alien: Drone, - Hunter, - Queen, - Sentinel, - Larva \] - Human - \[ slime: Baby, - Adult \] - Monkey | - Cyborg | - Cat | - Runtime | - Corgi | - Ian | - Crab | - Coffee | - \[ Construct: Armoured , - Builder , - Wraith \] - Shade + Observer | + \[ Alien: Drone, + Hunter, + Queen, + Sentinel, + Larva \] + Human + \[ slime: Baby, + Adult \] + Monkey | + Cyborg | + Cat | + Runtime | + Corgi | + Ian | + Crab | + Coffee | + \[ Construct: Armoured , + Builder , + Wraith \] + Shade "} if(M.client) body += {"

Other actions:
- Forcesay | - Admin Room | - Thunderdome 1 | - Thunderdome 2 | - Thunderdome Admin | - Thunderdome Observer | + Forcesay | + Admin Room | + Thunderdome 1 | + Thunderdome 2 | + Thunderdome Admin | + Thunderdome Observer | "} body += {"
@@ -827,7 +827,7 @@ var/global/nologevent = 0 log_admin("[key_name(usr)] spawned [chosen] at ([usr.x],[usr.y],[usr.z])") feedback_add_details("admin_verb","SA") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! -/datum/admins/proc/show_traitor_panel(var/mob/M in mob_list) +/datum/admins/proc/show_traitor_panel(var/mob/M in GLOB.mob_list) set category = "Admin" set desc = "Edit mobs's memory and role" set name = "Show Traitor Panel" @@ -864,7 +864,7 @@ var/global/nologevent = 0 /datum/admins/proc/output_ai_laws() var/ai_number = 0 - for(var/mob/living/silicon/S in mob_list) + for(var/mob/living/silicon/S in GLOB.mob_list) ai_number++ if(isAI(S)) to_chat(usr, "AI [key_name(S, TRUE)]'s laws:") @@ -953,14 +953,14 @@ var/gamma_ship_location = 1 // 0 = station , 1 = space return "[A.name] - [loc.x],[loc.y],[loc.z]" /proc/formatPlayerPanel(var/mob/U,var/text="PP") - return "[text]" + return "[ADMIN_PP(U,"[text]")]" //Kicks all the clients currently in the lobby. The second parameter (kick_only_afk) determins if an is_afk() check is ran, or if all clients are kicked //defaults to kicking everyone (afk + non afk clients in the lobby) //returns a list of ckeys of the kicked clients /proc/kick_clients_in_lobby(message, kick_only_afk = 0) var/list/kicked_client_names = list() - for(var/client/C in clients) + for(var/client/C in GLOB.clients) if(istype(C.mob, /mob/new_player)) if(kick_only_afk && !C.is_afk()) //Ignore clients who are not afk continue @@ -1037,7 +1037,7 @@ var/gamma_ship_location = 1 // 0 = station , 1 = space // result[3] is the number of staff that match the rank mask and are inactive /proc/staff_countup(rank_mask = R_BAN) var/list/result = list(0, 0, 0) - for(var/client/X in admins) + for(var/client/X in GLOB.admins) if(rank_mask && !check_rights_for(X, rank_mask)) result[2]++ continue diff --git a/code/modules/admin/admin_ranks.dm b/code/modules/admin/admin_ranks.dm index 45e85a847fe..e781e038991 100644 --- a/code/modules/admin/admin_ranks.dm +++ b/code/modules/admin/admin_ranks.dm @@ -61,10 +61,10 @@ var/list/admin_ranks = list() //list of all ranks with associated rights /proc/load_admins() //clear the datums references admin_datums.Cut() - for(var/client/C in admins) + for(var/client/C in GLOB.admins) C.remove_admin_verbs() C.holder = null - admins.Cut() + GLOB.admins.Cut() if(config.admin_legacy_system) load_admin_ranks() @@ -97,7 +97,7 @@ var/list/admin_ranks = list() //list of all ranks with associated rights var/datum/admins/D = new /datum/admins(rank, rights, ckey) //find the client for a ckey if they are connected and associate them with the new admin datum - D.associate(directory[ckey]) + D.associate(GLOB.directory[ckey]) else //The current admin system uses SQL @@ -121,7 +121,7 @@ var/list/admin_ranks = list() //list of all ranks with associated rights var/datum/admins/D = new /datum/admins(rank, rights, ckey) //find the client for a ckey if they are connected and associate them with the new admin datum - D.associate(directory[ckey]) + D.associate(GLOB.directory[ckey]) if(!admin_datums) log_world("The database query in load_admins() resulted in no admins being added to the list. Reverting to legacy system.") config.admin_legacy_system = 1 diff --git a/code/modules/admin/admin_verbs.dm b/code/modules/admin/admin_verbs.dm index bbff1eb2c2e..dd0a67021b6 100644 --- a/code/modules/admin/admin_verbs.dm +++ b/code/modules/admin/admin_verbs.dm @@ -445,10 +445,10 @@ var/list/admin_verbs_ticket = list( /client/proc/findStealthKey(txt) if(txt) - for(var/P in stealthminID) - if(stealthminID[P] == txt) + for(var/P in GLOB.stealthminID) + if(GLOB.stealthminID[P] == txt) return P - txt = stealthminID[ckey] + txt = GLOB.stealthminID[ckey] return txt /client/proc/createStealthKey() @@ -456,11 +456,11 @@ var/list/admin_verbs_ticket = list( var/i = 0 while(i == 0) i = 1 - for(var/P in stealthminID) - if(num == stealthminID[P]) + for(var/P in GLOB.stealthminID) + if(num == GLOB.stealthminID[P]) num++ i = 0 - stealthminID["[ckey]"] = "@[num2text(num)]" + GLOB.stealthminID["[ckey]"] = "@[num2text(num)]" /client/proc/stealth() set category = "Admin" @@ -520,7 +520,7 @@ var/list/admin_verbs_ticket = list( return var/datum/preferences/D - var/client/C = directory[warned_ckey] + var/client/C = GLOB.directory[warned_ckey] if(C) D = C.prefs else D = preferences_datums[warned_ckey] @@ -592,7 +592,7 @@ var/list/admin_verbs_ticket = list( message_admins("[key_name_admin(usr)] created an admin explosion at [epicenter.loc]") feedback_add_details("admin_verb","DB") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! -/client/proc/give_spell(mob/T as mob in mob_list) // -- Urist +/client/proc/give_spell(mob/T as mob in GLOB.mob_list) // -- Urist set category = "Event" set name = "Give Spell" set desc = "Gives a spell to a mob." @@ -617,7 +617,7 @@ var/list/admin_verbs_ticket = list( log_admin("[key_name(usr)] gave [key_name(T)] the spell [S].") message_admins("[key_name_admin(usr)] gave [key_name(T)] the spell [S].", 1) -/client/proc/give_disease(mob/T in mob_list) +/client/proc/give_disease(mob/T in GLOB.mob_list) set category = "Event" set name = "Give Disease" set desc = "Gives a Disease to a mob." @@ -704,7 +704,7 @@ var/list/admin_verbs_ticket = list( message_admins("[key_name_admin(usr)] deadmined themself.") deadmin() verbs += /client/proc/readmin - deadmins += ckey + GLOB.deadmins += ckey to_chat(src, "You are now a normal player.") feedback_add_details("admin_verb","DAS") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! @@ -762,17 +762,17 @@ var/list/admin_verbs_ticket = list( flags = text2num(flags) D = new(admin_rank, flags, ckey) - var/client/C = directory[ckey] + var/client/C = GLOB.directory[ckey] D.associate(C) message_admins("[key_name_admin(usr)] re-adminned themselves.") log_admin("[key_name(usr)] re-adminned themselves.") - deadmins -= ckey + GLOB.deadmins -= ckey feedback_add_details("admin_verb","RAS") return else to_chat(src, "You are already an admin.") verbs -= /client/proc/readmin - deadmins -= ckey + GLOB.deadmins -= ckey return /client/proc/toggle_log_hrefs() @@ -806,7 +806,7 @@ var/list/admin_verbs_ticket = list( if(!check_rights(R_ADMIN)) return - var/mob/living/silicon/S = input("Select silicon.", "Manage Silicon Laws") as null|anything in silicon_mob_list + var/mob/living/silicon/S = input("Select silicon.", "Manage Silicon Laws") as null|anything in GLOB.silicon_mob_list if(!S) return var/datum/nano_module/law_manager/L = new(S) @@ -814,7 +814,7 @@ var/list/admin_verbs_ticket = list( log_and_message_admins("has opened [S]'s law manager.") feedback_add_details("admin_verb","MSL") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! -/client/proc/change_human_appearance_admin(mob/living/carbon/human/H in mob_list) +/client/proc/change_human_appearance_admin(mob/living/carbon/human/H in GLOB.mob_list) set name = "C.M.A. - Admin" set desc = "Allows you to change the mob appearance" set category = "Admin" @@ -840,7 +840,7 @@ var/list/admin_verbs_ticket = list( H.change_appearance(APPEARANCE_ALL, usr, usr, check_species_whitelist = 0) feedback_add_details("admin_verb","CHAA") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! -/client/proc/change_human_appearance_self(mob/living/carbon/human/H in mob_list) +/client/proc/change_human_appearance_self(mob/living/carbon/human/H in GLOB.mob_list) set name = "C.M.A. - Self" set desc = "Allows the mob to change its appearance" set category = "Admin" @@ -976,7 +976,7 @@ var/list/admin_verbs_ticket = list( else to_chat(usr, "You now won't get debug log messages") -/client/proc/man_up(mob/T as mob in mob_list) +/client/proc/man_up(mob/T as mob in GLOB.mob_list) set category = "Admin" set name = "Man Up" set desc = "Tells mob to man up and deal with it." @@ -1002,7 +1002,7 @@ var/list/admin_verbs_ticket = list( var/confirm = alert("Are you sure you want to send the global message?", "Confirm Man Up Global", "Yes", "No") if(confirm == "Yes") - for(var/mob/T as mob in mob_list) + for(var/mob/T as mob in GLOB.mob_list) to_chat(T, "
Man up.
Deal with it.

Move on.

") T << 'sound/voice/ManUp1.ogg' diff --git a/code/modules/admin/holder2.dm b/code/modules/admin/holder2.dm index f3715eaab31..ebf8a70cde3 100644 --- a/code/modules/admin/holder2.dm +++ b/code/modules/admin/holder2.dm @@ -35,11 +35,11 @@ var/list/admin_datums = list() owner.on_holder_add() owner.add_admin_verbs() //TODO owner.verbs -= /client/proc/readmin - admins |= C + GLOB.admins |= C /datum/admins/proc/disassociate() if(owner) - admins -= owner + GLOB.admins -= owner owner.remove_admin_verbs() owner.holder = null owner = null diff --git a/code/modules/admin/player_panel.dm b/code/modules/admin/player_panel.dm index 78b175b4656..8c83961d8ad 100644 --- a/code/modules/admin/player_panel.dm +++ b/code/modules/admin/player_panel.dm @@ -61,7 +61,7 @@ } - function expand(id,job,name,real_name,image,key,ip,antagonist,ref,eyeref){ + function expand(id,job,name,real_name,image,key,ip,antagonist,UID,eyeUID){ clearAll(); @@ -75,15 +75,15 @@ body += ""; - body += "PP - " + body += "PP - " body += "N - " - body += "VV - " - body += "TP - " - body += "PM - " - body += "SM - " - body += "FLW" - if(eyeref) - body += "|EYE" + body += "VV - " + body += "TP - " + body += "PM - " + body += "SM - " + body += "FLW" + if(eyeUID) + body += "|EYE" body += "
" if(antagonist > 0) body += "Antagonist"; @@ -288,11 +288,11 @@ M_key = replacetext(M_key, "\"", "") M_key = replacetext(M_key, "\\", "") - var/M_eyeref = "" + var/M_eyeUID = "" if(isAI(M)) var/mob/living/silicon/ai/A = M if(A.client && A.eyeobj) // No point following clientless AI eyes - M_eyeref = "\ref[A.eyeobj]" + M_eyeUID = "[A.eyeobj.UID()]" //output for each mob dat += {" @@ -300,7 +300,7 @@ [M_name] - [M_rname] - [M_key] ([M_job]) @@ -370,16 +370,16 @@ dat += {"[(M.client ? "[M.client]" : "No client")] - X - PM + X + PM "} switch(is_special_character(M)) if(0) - dat += {"Traitor?"} + dat += {"Traitor?"} if(1) - dat += {"Traitor?"} + dat += {"Traitor?"} if(2) - dat += {"Traitor?"} + dat += {"Traitor?"} dat += "" @@ -397,8 +397,8 @@ if(!dname) dname = M - return {"[dname][caption][logout_status][M.stat == 2 ? " (DEAD)" : ""] - PM[close ? "" : ""]"} + return {"[dname][caption][logout_status][M.stat == 2 ? " (DEAD)" : ""] + PM[close ? "" : ""]"} /datum/admins/proc/check_antagonists() if(!check_rights(R_ADMIN)) return @@ -427,13 +427,13 @@ else dat += "Nuclear Operative not found!" dat += "
" - for(var/obj/item/disk/nuclear/N in poi_list) + for(var/obj/item/disk/nuclear/N in GLOB.poi_list) dat += "" + dat += "" dat += "" else dat += "" @@ -563,7 +563,7 @@ if(show_objectives) txt += {" "} diff --git a/code/modules/admin/sql_notes.dm b/code/modules/admin/sql_notes.dm index 7b237db72e5..9024959b943 100644 --- a/code/modules/admin/sql_notes.dm +++ b/code/modules/admin/sql_notes.dm @@ -121,7 +121,7 @@ var/ruler ruler = "
" navbar = "\[All\]|\[#\]" - for(var/letter in alphabet) + for(var/letter in GLOB.alphabet) navbar += "|\[[letter]\]" navbar += "
\ \ diff --git a/code/modules/admin/topic.dm b/code/modules/admin/topic.dm index 31600856238..3df28fdf505 100644 --- a/code/modules/admin/topic.dm +++ b/code/modules/admin/topic.dm @@ -13,7 +13,7 @@ if(href_list["rejectadminhelp"]) if(!check_rights(R_ADMIN|R_MOD)) return - var/client/C = locate(href_list["rejectadminhelp"]) + var/client/C = locateUID(href_list["rejectadminhelp"]) if(!C) return @@ -146,7 +146,7 @@ var/mob/playermob - for(var/mob/M in player_list) + for(var/mob/M in GLOB.player_list) if(M.ckey == banckey) playermob = M break @@ -238,7 +238,7 @@ else D = new /datum/admins(new_rank, rights, adm_ckey) - var/client/C = directory[adm_ckey] //find the client with the specified ckey (if they are logged in) + var/client/C = GLOB.directory[adm_ckey] //find the client with the specified ckey (if they are logged in) D.associate(C) //link up with the client and add verbs updateranktodb(adm_ckey, new_rank) @@ -317,7 +317,7 @@ else if(href_list["simplemake"]) if(!check_rights(R_SPAWN)) return - var/mob/M = locate(href_list["mob"]) + var/mob/M = locateUID(href_list["mob"]) if(!ismob(M)) to_chat(usr, "This can only be used on instances of type /mob") return @@ -426,7 +426,7 @@ else if(href_list["appearanceban"]) if(!check_rights(R_BAN)) return - var/mob/M = locate(href_list["appearanceban"]) + var/mob/M = locateUID(href_list["appearanceban"]) if(!ismob(M)) to_chat(usr, "This can only be used on instances of type /mob") return @@ -475,7 +475,7 @@ else if(href_list["jobban2"]) // if(!check_rights(R_BAN)) return - var/mob/M = locate(href_list["jobban2"]) + var/mob/M = locateUID(href_list["jobban2"]) if(!ismob(M)) to_chat(usr, "This can only be used on instances of type /mob") return @@ -501,17 +501,17 @@ //Regular jobs //Command (Blue) jobs += "
Nuclear Disk(s)
[N.name], " var/atom/disk_loc = N.loc while(!istype(disk_loc, /turf)) if(istype(disk_loc, /mob)) var/mob/M = disk_loc - dat += "carried by [M.real_name] " + dat += "carried by [M.real_name] " if(istype(disk_loc, /obj)) var/obj/O = disk_loc dat += "in \a [O.name] " @@ -472,7 +472,7 @@ for(var/datum/mind/blob in mode.infected_crew) var/mob/M = blob.current if(M) - dat += "
[M.real_name][M.client ? "" : " (ghost)"][M.stat == 2 ? " (DEAD)" : ""]
[ADMIN_PP(M,"[M.real_name]")][M.client ? "" : " (ghost)"][M.stat == 2 ? " (DEAD)" : ""]PM
Blob not found!
- Show Objective + Show Objective
" - jobs += "" + jobs += "" for(var/jobPos in command_positions) if(!jobPos) continue var/datum/job/job = job_master.GetJob(jobPos) if(!job) continue if(jobban_isbanned(M, job.title)) - jobs += "" + jobs += "" counter++ else - jobs += "" + jobs += "" counter++ if(counter >= 6) //So things dont get squiiiiished! @@ -522,17 +522,17 @@ //Security (Red) counter = 0 jobs += "
Command Positions
Command Positions
[replacetext(job.title, " ", " ")][replacetext(job.title, " ", " ")][replacetext(job.title, " ", " ")][replacetext(job.title, " ", " ")]
" - jobs += "" + jobs += "" for(var/jobPos in security_positions) if(!jobPos) continue var/datum/job/job = job_master.GetJob(jobPos) if(!job) continue if(jobban_isbanned(M, job.title)) - jobs += "" + jobs += "" counter++ else - jobs += "" + jobs += "" counter++ if(counter >= 5) //So things dont get squiiiiished! @@ -543,17 +543,17 @@ //Engineering (Yellow) counter = 0 jobs += "
Security Positions
Security Positions
[replacetext(job.title, " ", " ")][replacetext(job.title, " ", " ")][replacetext(job.title, " ", " ")][replacetext(job.title, " ", " ")]
" - jobs += "" + jobs += "" for(var/jobPos in engineering_positions) if(!jobPos) continue var/datum/job/job = job_master.GetJob(jobPos) if(!job) continue if(jobban_isbanned(M, job.title)) - jobs += "" + jobs += "" counter++ else - jobs += "" + jobs += "" counter++ if(counter >= 5) //So things dont get squiiiiished! @@ -564,17 +564,17 @@ //Medical (White) counter = 0 jobs += "
Engineering Positions
Engineering Positions
[replacetext(job.title, " ", " ")][replacetext(job.title, " ", " ")][replacetext(job.title, " ", " ")][replacetext(job.title, " ", " ")]
" - jobs += "" + jobs += "" for(var/jobPos in medical_positions) if(!jobPos) continue var/datum/job/job = job_master.GetJob(jobPos) if(!job) continue if(jobban_isbanned(M, job.title)) - jobs += "" + jobs += "" counter++ else - jobs += "" + jobs += "" counter++ if(counter >= 5) //So things dont get squiiiiished! @@ -585,17 +585,17 @@ //Science (Purple) counter = 0 jobs += "
Medical Positions
Medical Positions
[replacetext(job.title, " ", " ")][replacetext(job.title, " ", " ")][replacetext(job.title, " ", " ")][replacetext(job.title, " ", " ")]
" - jobs += "" + jobs += "" for(var/jobPos in science_positions) if(!jobPos) continue var/datum/job/job = job_master.GetJob(jobPos) if(!job) continue if(jobban_isbanned(M, job.title)) - jobs += "" + jobs += "" counter++ else - jobs += "" + jobs += "" counter++ if(counter >= 5) //So things dont get squiiiiished! @@ -606,17 +606,17 @@ //Support (Grey) counter = 0 jobs += "
Science Positions
Science Positions
[replacetext(job.title, " ", " ")][replacetext(job.title, " ", " ")][replacetext(job.title, " ", " ")][replacetext(job.title, " ", " ")]
" - jobs += "" + jobs += "" for(var/jobPos in support_positions) if(!jobPos) continue var/datum/job/job = job_master.GetJob(jobPos) if(!job) continue if(jobban_isbanned(M, job.title)) - jobs += "" + jobs += "" counter++ else - jobs += "" + jobs += "" counter++ if(counter >= 5) //So things dont get squiiiiished! @@ -627,17 +627,17 @@ //Non-Human (Green) counter = 0 jobs += "
Support Positions
Support Positions
[replacetext(job.title, " ", " ")][replacetext(job.title, " ", " ")][replacetext(job.title, " ", " ")][replacetext(job.title, " ", " ")]
" - jobs += "" + jobs += "" for(var/jobPos in nonhuman_positions) if(!jobPos) continue var/datum/job/job = job_master.GetJob(jobPos) if(!job) continue if(jobban_isbanned(M, job.title)) - jobs += "" + jobs += "" counter++ else - jobs += "" + jobs += "" counter++ if(counter >= 5) //So things dont get squiiiiished! @@ -646,29 +646,29 @@ //Drone if(jobban_isbanned(M, "Drone")) - jobs += "" + jobs += "" else - jobs += "" + jobs += "" //pAI if(jobban_isbanned(M, "pAI")) - jobs += "" + jobs += "" else - jobs += "" + jobs += "" jobs += "
Non-human Positions
Non-human Positions
[replacetext(job.title, " ", " ")][replacetext(job.title, " ", " ")][replacetext(job.title, " ", " ")][replacetext(job.title, " ", " ")]DroneDroneDroneDronepAIpAIpAIpAI
" //Antagonist (Orange) var/isbanned_dept = jobban_isbanned(M, "Syndicate") jobs += "" - jobs += "" + jobs += "" counter = 0 for(var/role in antag_roles) if(jobban_isbanned(M, role) || isbanned_dept) - jobs += "" + jobs += "" else - jobs += "" + jobs += "" counter++ if(counter >= 5) //So things dont get squiiiiished! @@ -683,9 +683,9 @@ counter = 0 for(var/role in other_roles) if(jobban_isbanned(M, role) || isbanned_dept) - jobs += "" + jobs += "" else - jobs += "" + jobs += "" counter++ if(counter >= 5) //So things dont get squiiiiished! @@ -696,17 +696,17 @@ //Whitelisted positions counter = 0 jobs += "
Antagonist Positions
Antagonist Positions
[replacetext(role, " ", " ")][replacetext(role, " ", " ")][replacetext(role, " ", " ")][replacetext(role, " ", " ")][replacetext(role, " ", " ")][replacetext(role, " ", " ")][replacetext(role, " ", " ")][replacetext(role, " ", " ")]
" - jobs += "" + jobs += "" for(var/jobPos in whitelisted_positions) if(!jobPos) continue var/datum/job/job = job_master.GetJob(jobPos) if(!job) continue if(jobban_isbanned(M, job.title)) - jobs += "" + jobs += "" counter++ else - jobs += "" + jobs += "" counter++ if(counter >= 5) //So things dont get squiiiiished! @@ -723,7 +723,7 @@ else if(href_list["jobban3"]) if(!check_rights(R_BAN)) return - var/mob/M = locate(href_list["jobban4"]) + var/mob/M = locateUID(href_list["jobban4"]) if(!ismob(M)) to_chat(usr, "This can only be used on instances of type /mob") return @@ -885,10 +885,10 @@ return 0 //we didn't do anything! else if(href_list["boot2"]) - var/mob/M = locate(href_list["boot2"]) + var/mob/M = locateUID(href_list["boot2"]) if(ismob(M)) if(M.client && M.client.holder && (M.client.holder.rights & R_BAN)) - to_chat(src, "[key_name_admin(M)] cannot be kicked from the server.") + to_chat(usr, "[key_name_admin(M)] cannot be kicked from the server.") return to_chat(M, "You have been kicked from the server") log_admin("[key_name(usr)] booted [key_name(M)].") @@ -958,7 +958,7 @@ else if(href_list["newban"]) if(!check_rights(R_BAN)) return - var/mob/M = locate(href_list["newban"]) + var/mob/M = locateUID(href_list["newban"]) if(!ismob(M)) return switch(alert("Temporary Ban?",,"Yes","No", "Cancel")) @@ -1016,7 +1016,7 @@ //Watchlist else if(href_list["watchadd"]) - var/target_ckey = locate(href_list["watchadd"]) + var/target_ckey = href_list["watchadd"] usr.client.watchlist_add(target_ckey) else if(href_list["watchremove"]) @@ -1062,7 +1062,7 @@ if(!check_rights(R_ADMIN|R_MOD)) return - var/mob/M = locate(href_list["mute"]) + var/mob/M = locateUID(href_list["mute"]) if(!ismob(M)) return if(!M.client) return @@ -1128,7 +1128,7 @@ else if(href_list["monkeyone"]) if(!check_rights(R_SPAWN)) return - var/mob/living/carbon/human/H = locate(href_list["monkeyone"]) + var/mob/living/carbon/human/H = locateUID(href_list["monkeyone"]) if(!istype(H)) to_chat(usr, "This can only be used on instances of type /mob/living/carbon/human") return @@ -1143,7 +1143,7 @@ else if(href_list["corgione"]) if(!check_rights(R_SPAWN)) return - var/mob/living/carbon/human/H = locate(href_list["corgione"]) + var/mob/living/carbon/human/H = locateUID(href_list["corgione"]) if(!istype(H)) to_chat(usr, "This can only be used on instances of type /mob/living/carbon/human") return @@ -1158,7 +1158,7 @@ else if(href_list["makePAI"]) if(!check_rights(R_SPAWN)) return - var/mob/living/carbon/human/H = locate(href_list["makePAI"]) + var/mob/living/carbon/human/H = locateUID(href_list["makePAI"]) if(!istype(H)) to_chat(usr, "This can only be used on instances of type /mob/living/carbon/human") return @@ -1182,7 +1182,7 @@ else if(href_list["forcespeech"]) if(!check_rights(R_SERVER|R_EVENT)) return - var/mob/M = locate(href_list["forcespeech"]) + var/mob/M = locateUID(href_list["forcespeech"]) if(!ismob(M)) to_chat(usr, "this can only be used on instances of type /mob") @@ -1199,7 +1199,7 @@ if(alert(usr, "Send to admin prison for the round?", "Message", "Yes", "No") != "Yes") return - var/mob/M = locate(href_list["sendtoprison"]) + var/mob/M = locateUID(href_list["sendtoprison"]) if(!ismob(M)) to_chat(usr, "This can only be used on instances of type /mob") return @@ -1242,7 +1242,7 @@ if(!check_rights(R_ADMIN)) return - var/mob/M = locate(href_list["sendbacktolobby"]) + var/mob/M = locateUID(href_list["sendbacktolobby"]) if(!isobserver(M)) to_chat(usr, "You can only send ghost players back to the Lobby.") @@ -1259,7 +1259,7 @@ message_admins("[key_name_admin(usr)] has sent [key_name_admin(M)] back to the Lobby.") var/mob/new_player/NP = new() - non_respawnable_keys -= M.ckey + GLOB.non_respawnable_keys -= M.ckey NP.ckey = M.ckey qdel(M) @@ -1269,7 +1269,7 @@ if(alert(usr, "Confirm?", "Message", "Yes", "No") != "Yes") return - var/mob/M = locate(href_list["tdome1"]) + var/mob/M = locateUID(href_list["tdome1"]) if(!ismob(M)) to_chat(usr, "This can only be used on instances of type /mob") return @@ -1299,7 +1299,7 @@ if(alert(usr, "Confirm?", "Message", "Yes", "No") != "Yes") return - var/mob/M = locate(href_list["tdome2"]) + var/mob/M = locateUID(href_list["tdome2"]) if(!ismob(M)) to_chat(usr, "This can only be used on instances of type /mob") return @@ -1329,7 +1329,7 @@ if(alert(usr, "Confirm?", "Message", "Yes", "No") != "Yes") return - var/mob/M = locate(href_list["tdomeadmin"]) + var/mob/M = locateUID(href_list["tdomeadmin"]) if(!ismob(M)) to_chat(usr, "This can only be used on instances of type /mob") return @@ -1351,7 +1351,7 @@ if(alert(usr, "Confirm?", "Message", "Yes", "No") != "Yes") return - var/mob/M = locate(href_list["tdomeobserve"]) + var/mob/M = locateUID(href_list["tdomeobserve"]) if(!ismob(M)) to_chat(usr, "This can only be used on instances of type /mob") return @@ -1385,7 +1385,7 @@ if(alert(usr, "Confirm?", "Message", "Yes", "No") != "Yes") return - var/mob/M = locate(href_list["aroomwarp"]) + var/mob/M = locateUID(href_list["aroomwarp"]) if(!ismob(M)) to_chat(usr, "This can only be used on instances of type /mob") return @@ -1405,7 +1405,7 @@ else if(href_list["revive"]) if(!check_rights(R_REJUVINATE)) return - var/mob/living/L = locate(href_list["revive"]) + var/mob/living/L = locateUID(href_list["revive"]) if(!istype(L)) to_chat(usr, "This can only be used on instances of type /mob/living") return @@ -1417,7 +1417,7 @@ else if(href_list["makeai"]) if(!check_rights(R_SPAWN)) return - var/mob/living/carbon/human/H = locate(href_list["makeai"]) + var/mob/living/carbon/human/H = locateUID(href_list["makeai"]) if(!istype(H)) to_chat(usr, "This can only be used on instances of type /mob/living/carbon/human") return @@ -1433,7 +1433,7 @@ else if(href_list["makealien"]) if(!check_rights(R_SPAWN)) return - var/mob/living/carbon/human/H = locate(href_list["makealien"]) + var/mob/living/carbon/human/H = locateUID(href_list["makealien"]) if(!istype(H)) to_chat(usr, "This can only be used on instances of type /mob/living/carbon/human") return @@ -1445,7 +1445,7 @@ else if(href_list["makeslime"]) if(!check_rights(R_SPAWN)) return - var/mob/living/carbon/human/H = locate(href_list["makeslime"]) + var/mob/living/carbon/human/H = locateUID(href_list["makeslime"]) if(!istype(H)) to_chat(usr, "This can only be used on instances of type /mob/living/carbon/human") return @@ -1457,7 +1457,7 @@ else if(href_list["makesuper"]) if(!check_rights(R_SPAWN)) return - var/mob/living/carbon/human/H = locate(href_list["makesuper"]) + var/mob/living/carbon/human/H = locateUID(href_list["makesuper"]) if(!istype(H)) to_chat(usr, "This can only be used on instances of type /mob/living/carbon/human") return @@ -1470,7 +1470,7 @@ else if(href_list["makerobot"]) if(!check_rights(R_SPAWN)) return - var/mob/living/carbon/human/H = locate(href_list["makerobot"]) + var/mob/living/carbon/human/H = locateUID(href_list["makerobot"]) if(!istype(H)) to_chat(usr, "This can only be used on instances of type /mob/living/carbon/human") return @@ -1482,7 +1482,7 @@ else if(href_list["makeanimal"]) if(!check_rights(R_SPAWN)) return - var/mob/M = locate(href_list["makeanimal"]) + var/mob/M = locateUID(href_list["makeanimal"]) if(istype(M, /mob/new_player)) to_chat(usr, "This cannot be used on instances of type /mob/new_player") return @@ -1494,7 +1494,7 @@ else if(href_list["incarn_ghost"]) if(!check_rights(R_SPAWN)) return - var/mob/dead/observer/G = locate(href_list["incarn_ghost"]) + var/mob/dead/observer/G = locateUID(href_list["incarn_ghost"]) if(!istype(G)) to_chat(usr, "This will only work on /mob/dead/observer") log_admin("[key_name(G)] was incarnated by [key_name(src.owner)]") @@ -1504,7 +1504,7 @@ else if(href_list["togmutate"]) if(!check_rights(R_SPAWN)) return - var/mob/living/carbon/human/H = locate(href_list["togmutate"]) + var/mob/living/carbon/human/H = locateUID(href_list["togmutate"]) if(!istype(H)) to_chat(usr, "This can only be used on instances of type /mob/living/carbon/human") return @@ -1515,25 +1515,14 @@ //H.regenerate_icons() else if(href_list["adminplayeropts"]) - var/mob/M = locate(href_list["adminplayeropts"]) + var/mob/M = locateUID(href_list["adminplayeropts"]) show_player_panel(M) - else if(href_list["adminplayerobservejump"]) - if(!check_rights(R_ADMIN|R_MOD)) - return - - var/mob/M = locate(href_list["adminplayerobservejump"]) - - var/client/C = usr.client - if(!isobserver(usr)) C.admin_ghost() - sleep(2) - C.jumptomob(M) - else if(href_list["adminplayerobservefollow"]) if(!check_rights(R_ADMIN|R_MOD)) return - var/mob/M = locate(href_list["adminplayerobservefollow"]) + var/mob/M = locateUID(href_list["adminplayerobservefollow"]) var/client/C = usr.client if(!isobserver(usr)) C.admin_ghost() @@ -1552,7 +1541,7 @@ if(is_mhelp) helptype = "MENTORHELP" var/take_msg = "[helptype]: [key_name(usr.client)] is attending to [key_name(M)]'s question." - for(var/client/X in admins) + for(var/client/X in GLOB.admins) if(check_rights(R_ADMIN, 0, X.mob)) to_chat(X, take_msg) else if(is_mhelp && check_rights(R_MOD|R_MENTOR, 0, X.mob)) @@ -1583,7 +1572,7 @@ if (H.current) to_chat(H.current, "[ticker.cultdat.entity_name] murmurs, [input]") - for(var/mob/dead/observer/O in player_list) + for(var/mob/dead/observer/O in GLOB.player_list) to_chat(O, "[ticker.cultdat.entity_name] murmurs, [input]") message_admins("Admin [key_name_admin(usr)] has talked with the Voice of [ticker.cultdat.entity_name].") @@ -1605,13 +1594,13 @@ output_ai_laws() else if(href_list["adminmoreinfo"]) - var/mob/M = locate(href_list["adminmoreinfo"]) + var/mob/M = locateUID(href_list["adminmoreinfo"]) admin_mob_info(M) else if(href_list["adminspawncookie"]) if(!check_rights(R_ADMIN|R_EVENT)) return - var/mob/living/carbon/human/H = locate(href_list["adminspawncookie"]) + var/mob/living/carbon/human/H = locateUID(href_list["adminspawncookie"]) if(!ishuman(H)) to_chat(usr, "This can only be used on instances of type /mob/living/carbon/human") return @@ -1635,7 +1624,7 @@ else if(href_list["BlueSpaceArtillery"]) if(!check_rights(R_ADMIN|R_EVENT)) return - var/mob/living/M = locate(href_list["BlueSpaceArtillery"]) + var/mob/living/M = locateUID(href_list["BlueSpaceArtillery"]) if(!isliving(M)) to_chat(usr, "This can only be used on instances of type /mob/living") return @@ -1694,7 +1683,7 @@ else if(href_list["EvilFax"]) if(!check_rights(R_ADMIN)) return - var/mob/living/carbon/human/H = locate(href_list["EvilFax"]) + var/mob/living/carbon/human/H = locateUID(href_list["EvilFax"]) if(!istype(H)) to_chat(usr, "This can only be used on instances of type /mob/living/carbon/human") return @@ -1916,7 +1905,7 @@ if("Crew Traitor") logmsg = "crew traitor." var/list/possible_traitors = list() - for(var/mob/living/player in living_mob_list) + for(var/mob/living/player in GLOB.living_mob_list) if(player.client && player.mind && !player.mind.special_role && player.stat != DEAD && player != H) if(ishuman(player)) if(player.client && (ROLE_TRAITOR in player.client.prefs.be_special) && !jobban_isbanned(player, ROLE_TRAITOR) && !jobban_isbanned(player, "Syndicate")) @@ -1979,7 +1968,7 @@ else if(href_list["FaxReplyTemplate"]) if(!check_rights(R_ADMIN)) return - var/mob/living/carbon/human/H = locate(href_list["FaxReplyTemplate"]) + var/mob/living/carbon/human/H = locateUID(href_list["FaxReplyTemplate"]) if(!istype(H)) to_chat(usr, "This can only be used on instances of type /mob/living/carbon/human") return @@ -2033,7 +2022,7 @@ message_admins("[key_name_admin(src.owner)] replied to [key_name_admin(H)] with a standard '[stype]' fax") else if(href_list["HONKReply"]) - var/mob/living/carbon/human/H = locate(href_list["HONKReply"]) + var/mob/living/carbon/human/H = locateUID(href_list["HONKReply"]) if(!istype(H)) to_chat(usr, "This can only be used on instances of type /mob/living/carbon/human") return @@ -2053,7 +2042,7 @@ return if(alert(src.owner, "Accept or Deny ERT request?", "CentComm Response", "Accept", "Deny") == "Deny") - var/mob/living/carbon/human/H = locate(href_list["ErtReply"]) + var/mob/living/carbon/human/H = locateUID(href_list["ErtReply"]) if(!istype(H)) to_chat(usr, "This can only be used on instances of type /mob/living/carbon/human") return @@ -2282,32 +2271,32 @@ else if(href_list["jumpto"]) if(!check_rights(R_ADMIN)) return - var/mob/M = locate(href_list["jumpto"]) + var/mob/M = locateUID(href_list["jumpto"]) usr.client.jumptomob(M) else if(href_list["getmob"]) if(!check_rights(R_ADMIN)) return if(alert(usr, "Confirm?", "Message", "Yes", "No") != "Yes") return - var/mob/M = locate(href_list["getmob"]) + var/mob/M = locateUID(href_list["getmob"]) usr.client.Getmob(M) else if(href_list["sendmob"]) if(!check_rights(R_ADMIN)) return - var/mob/M = locate(href_list["sendmob"]) + var/mob/M = locateUID(href_list["sendmob"]) usr.client.sendmob(M) else if(href_list["narrateto"]) if(!check_rights(R_ADMIN)) return - var/mob/M = locate(href_list["narrateto"]) + var/mob/M = locateUID(href_list["narrateto"]) usr.client.cmd_admin_direct_narrate(M) else if(href_list["subtlemessage"]) if(!check_rights(R_ADMIN)) return - var/mob/M = locate(href_list["subtlemessage"]) + var/mob/M = locateUID(href_list["subtlemessage"]) usr.client.cmd_admin_subtle_message(M) else if(href_list["traitor"]) @@ -2317,7 +2306,7 @@ alert("The game hasn't started yet!") return - var/mob/M = locate(href_list["traitor"]) + var/mob/M = locateUID(href_list["traitor"]) if(!ismob(M)) to_chat(usr, "This can only be used on instances of type /mob.") return @@ -2509,14 +2498,14 @@ if("monkey") feedback_inc("admin_secrets_fun_used",1) feedback_add_details("admin_secrets_fun_used","M") - for(var/mob/living/carbon/human/H in mob_list) + for(var/mob/living/carbon/human/H in GLOB.mob_list) spawn(0) H.monkeyize() ok = 1 if("corgi") feedback_inc("admin_secrets_fun_used",1) feedback_add_details("admin_secrets_fun_used","M") - for(var/mob/living/carbon/human/H in mob_list) + for(var/mob/living/carbon/human/H in GLOB.mob_list) spawn(0) H.corgize() ok = 1 @@ -2587,7 +2576,7 @@ feedback_inc("admin_secrets_fun_used",1) feedback_add_details("admin_secrets_fun_used","PW") message_admins("[key_name_admin(usr)] teleported all players to the prison station.", 1) - for(var/mob/living/carbon/human/H in mob_list) + for(var/mob/living/carbon/human/H in GLOB.mob_list) var/turf/loc = find_loc(H) var/security = 0 if(!is_station_level(loc.z) || prisonwarped.Find(H)) @@ -2631,7 +2620,7 @@ return feedback_inc("admin_secrets_fun_used",1) feedback_add_details("admin_secrets_fun_used","TA([objective])") - for(var/mob/living/carbon/human/H in player_list) + for(var/mob/living/carbon/human/H in GLOB.player_list) if(H.stat == 2 || !H.client || !H.mind) continue if(is_special_character(H)) continue //traitorize(H, objective, 0) @@ -2644,7 +2633,7 @@ ticker.mode.greet_traitor(H.mind) //ticker.mode.forge_traitor_objectives(H.mind) ticker.mode.finalize_traitor(H.mind) - for(var/mob/living/silicon/A in player_list) + for(var/mob/living/silicon/A in GLOB.player_list) ticker.mode.traitors += A.mind A.mind.special_role = SPECIAL_ROLE_TRAITOR var/datum/objective/new_objective = new @@ -2681,7 +2670,7 @@ feedback_add_details("admin_secrets_fun_used","FL") while(!usr.stat) //knock yourself out to stop the ghosts - for(var/mob/M in player_list) + for(var/mob/M in GLOB.player_list) if(M.stat != 2 && prob(25)) var/area/AffectedArea = get_area(M) if(AffectedArea.name != "Space" && AffectedArea.name != "Engine Walls" && AffectedArea.name != "Chemical Lab Test Chamber" && AffectedArea.name != "Escape Shuttle" && AffectedArea.name != "Arrival Area" && AffectedArea.name != "Arrival Shuttle" && AffectedArea.name != "start area" && AffectedArea.name != "Engine Combustion Chamber") @@ -2704,7 +2693,7 @@ if(prob(25) && !W.anchored) step_rand(W) sleep(rand(100,1000)) - for(var/mob/M in player_list) + for(var/mob/M in GLOB.player_list) if(M.stat != 2) M.show_message(text("The chilling wind suddenly stops..."), 1) if("lightout") @@ -2717,13 +2706,13 @@ feedback_inc("admin_secrets_fun_used",1) feedback_add_details("admin_secrets_fun_used","BO") message_admins("[key_name_admin(usr)] broke all lights", 1) - for(var/obj/machinery/light/L in machines) + for(var/obj/machinery/light/L in GLOB.machines) L.broken() if("whiteout") feedback_inc("admin_secrets_fun_used",1) feedback_add_details("admin_secrets_fun_used","WO") message_admins("[key_name_admin(usr)] fixed all lights", 1) - for(var/obj/machinery/light/L in machines) + for(var/obj/machinery/light/L in GLOB.machines) L.fix() if("floorlava") feedback_inc("admin_secrets_fun_used", 1) @@ -2752,7 +2741,7 @@ if("retardify") feedback_inc("admin_secrets_fun_used",1) feedback_add_details("admin_secrets_fun_used","RET") - for(var/mob/living/carbon/human/H in player_list) + for(var/mob/living/carbon/human/H in GLOB.player_list) to_chat(H, "You suddenly feel stupid.") H.setBrainLoss(60) message_admins("[key_name_admin(usr)] made everybody retarded") @@ -2778,7 +2767,7 @@ if("eagles")//SCRAW feedback_inc("admin_secrets_fun_used",1) feedback_add_details("admin_secrets_fun_used","EgL") - for(var/obj/machinery/door/airlock/W in airlocks) + for(var/obj/machinery/door/airlock/W in GLOB.airlocks) if(is_station_level(W.z) && !istype(get_area(W), /area/bridge) && !istype(get_area(W), /area/crew_quarters) && !istype(get_area(W), /area/security/prison)) W.req_access = list() message_admins("[key_name_admin(usr)] activated Egalitarian Station mode") @@ -2918,7 +2907,7 @@ if("manifest") var/dat = "Showing Crew Manifest.
" dat += "
Whitelisted Positions
Whitelisted Positions
[replacetext(job.title, " ", " ")][replacetext(job.title, " ", " ")][replacetext(job.title, " ", " ")][replacetext(job.title, " ", " ")]
" - for(var/mob/living/carbon/human/H in mob_list) + for(var/mob/living/carbon/human/H in GLOB.mob_list) if(H.ckey) dat += text("", H.name, H.get_assignment()) dat += "
NamePosition
[][]
" @@ -2928,7 +2917,7 @@ if("DNA") var/dat = "Showing DNA from blood.
" dat += "" - for(var/mob/living/carbon/human/H in mob_list) + for(var/mob/living/carbon/human/H in GLOB.mob_list) if(H.dna && H.ckey) dat += "" dat += "
NameDNABlood Type
[H][H.dna.unique_enzymes][H.b_type]
" @@ -2936,7 +2925,7 @@ if("fingerprints") var/dat = "Showing Fingerprints.
" dat += "" - for(var/mob/living/carbon/human/H in mob_list) + for(var/mob/living/carbon/human/H in GLOB.mob_list) if(H.ckey) if(H.dna && H.dna.uni_identity) dat += "" @@ -2982,12 +2971,12 @@ dat += "No-one has done anything this round!" usr << browse(dat, "window=admin_log") if("maint_access_brig") - for(var/obj/machinery/door/airlock/maintenance/M in airlocks) + for(var/obj/machinery/door/airlock/maintenance/M in GLOB.airlocks) if(access_maint_tunnels in M.req_access) M.req_access = list(access_brig) message_admins("[key_name_admin(usr)] made all maint doors brig access-only.") if("maint_access_engiebrig") - for(var/obj/machinery/door/airlock/maintenance/M in airlocks) + for(var/obj/machinery/door/airlock/maintenance/M in GLOB.airlocks) if(access_maint_tunnels in M.req_access) M.req_access = list() M.req_one_access = list(access_brig,access_engine) @@ -3221,12 +3210,12 @@ return 1 else if(href_list["viewruntime"]) - var/datum/ErrorViewer/error_viewer = locate(href_list["viewruntime"]) + var/datum/ErrorViewer/error_viewer = locateUID(href_list["viewruntime"]) if(!istype(error_viewer)) to_chat(usr, "That runtime viewer no longer exists.") return if(href_list["viewruntime_backto"]) - error_viewer.showTo(usr, locate(href_list["viewruntime_backto"]), href_list["viewruntime_linear"]) + error_viewer.showTo(usr, locateUID(href_list["viewruntime_backto"]), href_list["viewruntime_linear"]) else error_viewer.showTo(usr, null, href_list["viewruntime_linear"]) @@ -3364,19 +3353,13 @@ /proc/admin_jump_link(var/atom/target) if(!target) return // The way admin jump links handle their src is weirdly inconsistent... - var/source = "_src_=holder" + . = ADMIN_FLW(target,"FLW") if(isAI(target)) // AI core/eye follow links var/mob/living/silicon/ai/A = target - . = "FLW" if(A.client && A.eyeobj) // No point following clientless AI eyes - . += "|EYE" - return + . += "|[ADMIN_FLW(A.eyeobj,"EYE")]" else if(istype(target, /mob/dead/observer)) var/mob/dead/observer/O = target - . = "FLW" if(O.mind && O.mind.current) - . += "|BDY" - return - else - return "FLW" + . += "|[ADMIN_FLW(O.mind.current,"BDY")]" diff --git a/code/modules/admin/verbs/SDQL2/SDQL_2_parser.dm b/code/modules/admin/verbs/SDQL2/SDQL_2_parser.dm index 0d0573e3760..56fcab49293 100644 --- a/code/modules/admin/verbs/SDQL2/SDQL_2_parser.dm +++ b/code/modules/admin/verbs/SDQL2/SDQL_2_parser.dm @@ -60,7 +60,7 @@ /datum/SDQL_parser/proc/parse_error(error_message) error = 1 - to_chat(usr, "SQDL2 Parsing Error: [error_message]") + to_chat(usr, "SDQL2 Parsing Error: [error_message]") return query.len + 1 /datum/SDQL_parser/proc/parse() diff --git a/code/modules/admin/verbs/adminhelp.dm b/code/modules/admin/verbs/adminhelp.dm index 9d972598376..e0baebfc775 100644 --- a/code/modules/admin/verbs/adminhelp.dm +++ b/code/modules/admin/verbs/adminhelp.dm @@ -38,7 +38,7 @@ var/list/adminhelp_ignored_words = list("unknown","the","a","an","of","monkey"," var/list/surnames = list() var/list/forenames = list() var/list/ckeys = list() - for(var/mob/M in mob_list) + for(var/mob/M in GLOB.mob_list) var/list/indexing = list(M.real_name, M.name) if(M.mind) indexing += M.mind.name @@ -86,15 +86,12 @@ var/list/adminhelp_ignored_words = list("unknown","the","a","an","of","monkey"," if(!mob) return //this doesn't happen - var/ref_mob = "\ref[mob]" - var/ref_client = "\ref[src]" - //send this msg to all admins var/admin_number_afk = 0 var/list/mentorholders = list() var/list/modholders = list() var/list/adminholders = list() - for(var/client/X in admins) + for(var/client/X in GLOB.admins) if(check_rights(R_ADMIN, 0, X.mob)) if(X.is_afk()) admin_number_afk++ @@ -109,7 +106,7 @@ var/list/adminhelp_ignored_words = list("unknown","the","a","an","of","monkey"," switch(selected_type) if("Mentorhelp") - msg = "[selected_type]: [key_name(src, TRUE, selected_type)] (?) (PP) (VV) (SM) ([admin_jump_link(mob)]) (CA) (REJT) [ai_found ? " (CL)" : ""] (TAKE) :[msg]" + msg = "[selected_type]: [key_name(src, TRUE, selected_type)] ([ADMIN_QUE(mob,"?")]) ([ADMIN_PP(mob,"PP")]) ([ADMIN_VV(mob,"VV")]) ([ADMIN_SM(mob,"SM")]) ([admin_jump_link(mob)]) (CA) (REJT) [ai_found ? " (CL)" : ""] (TAKE) :[msg]" for(var/client/X in mentorholders + modholders + adminholders) if(X.prefs.sound & SOUND_ADMINHELP) X << 'sound/effects/adminhelp.ogg' @@ -123,7 +120,7 @@ var/list/adminhelp_ignored_words = list("unknown","the","a","an","of","monkey"," T.addResponse(usr.client, msg) else ticketNum = SStickets.getTicketCounter() // ticketNum is the ticket ready to be assigned. - msg = "[selected_type]: [key_name(src, TRUE, selected_type)] (?) (PP) (VV) (SM) ([admin_jump_link(mob)]) (CA) (TICKET) [ai_found ? " (CL)" : ""](TAKE) :[msg]" + msg = "[selected_type]: [key_name(src, TRUE, selected_type)] ([ADMIN_QUE(mob,"?")]) ([ADMIN_PP(mob,"PP")]) ([ADMIN_VV(mob,"VV")]) ([ADMIN_SM(mob,"SM")]) ([admin_jump_link(mob)]) (CA) (TICKET) [ai_found ? " (CL)" : ""](TAKE) :[msg]" //Open a new adminticket and inform the user. SStickets.newTicket(src, prunedmsg, msg) for(var/client/X in modholders + adminholders) @@ -152,7 +149,7 @@ var/list/adminhelp_ignored_words = list("unknown","the","a","an","of","monkey"," var/admin_number_afk = 0 //Holds the number of admins who are afk var/admin_number_ignored = 0 //Holds the number of admins without +BAN (so admins who are not really admins) var/admin_number_decrease = 0 //Holds the number of admins with are afk, ignored or both - for(var/client/X in admins) + for(var/client/X in GLOB.admins) admin_number_total++; var/invalid = 0 if(requiredflags != 0 && !check_rights_for(X, requiredflags)) diff --git a/code/modules/admin/verbs/adminjump.dm b/code/modules/admin/verbs/adminjump.dm index 2512171e80d..562f087dbb5 100644 --- a/code/modules/admin/verbs/adminjump.dm +++ b/code/modules/admin/verbs/adminjump.dm @@ -42,7 +42,7 @@ feedback_add_details("admin_verb","JT") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! return -/client/proc/jumptomob(var/mob/M in mob_list) +/client/proc/jumptomob(var/mob/M in GLOB.mob_list) set category = "Admin" set name = "Jump to Mob" @@ -83,7 +83,7 @@ return var/list/keys = list() - for(var/mob/M in player_list) + for(var/mob/M in GLOB.player_list) keys += M.client var/selection = input("Please, select a player!", "Admin Jumping", null, null) as null|anything in sortKey(keys) if(!selection) @@ -98,7 +98,7 @@ feedback_add_details("admin_verb","JK") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! -/client/proc/Getmob(var/mob/M in mob_list) +/client/proc/Getmob(var/mob/M in GLOB.mob_list) set category = "Admin" set name = "Get Mob" set desc = "Mob to teleport" @@ -120,7 +120,7 @@ return var/list/keys = list() - for(var/mob/M in player_list) + for(var/mob/M in GLOB.player_list) keys += M.client var/selection = input("Please, select a player!", "Admin Jumping", null, null) as null|anything in sortKey(keys) if(!selection) @@ -136,7 +136,7 @@ admin_forcemove(usr, M.loc) feedback_add_details("admin_verb","GK") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! -/client/proc/sendmob(var/mob/M in mob_list) +/client/proc/sendmob(var/mob/M in GLOB.mob_list) set category = "Admin" set name = "Send Mob" diff --git a/code/modules/admin/verbs/adminpm.dm b/code/modules/admin/verbs/adminpm.dm index 1287b96181a..5303480e905 100644 --- a/code/modules/admin/verbs/adminpm.dm +++ b/code/modules/admin/verbs/adminpm.dm @@ -1,5 +1,5 @@ //allows right clicking mobs to send an admin PM to their client, forwards the selected mob's client to cmd_admin_pm -/client/proc/cmd_admin_pm_context(mob/M as mob in mob_list) +/client/proc/cmd_admin_pm_context(mob/M as mob in GLOB.mob_list) set category = null set name = "Admin PM Mob" if(!holder) @@ -67,7 +67,7 @@ if(istext(whom)) if(cmptext(copytext(whom,1,2),"@")) whom = findStealthKey(whom) - C = directory[whom] + C = GLOB.directory[whom] else if(istype(whom,/client)) C = whom @@ -167,7 +167,7 @@ log_admin("PM: [key_name(src)]->[key_name(C)]: [msg]") //we don't use message_admins here because the sender/receiver might get it too - for(var/client/X in admins) + for(var/client/X in GLOB.admins) //check client/X is an admin and isn't the sender or recipient if(X == C || X == src) continue @@ -193,9 +193,8 @@ i.addResponse(src, msg) // Add this response to their open tickets. return - tickets = SStickets.checkForTicket(C) if(check_rights(R_ADMIN|R_MOD, 0, C.mob)) //Is the person being pm'd an admin? If so we check if the pm'er has open tickets - tickets = SStickets.checkForTicket(C) + tickets = SStickets.checkForTicket(src) if(tickets) for(var/datum/admin_ticket/i in tickets) i.addResponse(src, msg) @@ -224,7 +223,7 @@ to_chat(src, "IRC PM to-IRC-Admins: [msg]") log_admin("PM: [key_name(src)]->IRC: [msg]") - for(var/client/X in admins) + for(var/client/X in GLOB.admins) if(X == src) continue if(check_rights(R_ADMIN|R_MOD|R_MENTOR, 0, X.mob)) diff --git a/code/modules/admin/verbs/adminsay.dm b/code/modules/admin/verbs/adminsay.dm index 2a0f78351e4..e3fe5af3263 100644 --- a/code/modules/admin/verbs/adminsay.dm +++ b/code/modules/admin/verbs/adminsay.dm @@ -10,7 +10,7 @@ log_adminsay(msg, src) if(check_rights(R_ADMIN,0)) - for(var/client/C in admins) + for(var/client/C in GLOB.admins) if(R_ADMIN & C.holder.rights) msg = "[msg]" to_chat(C, "ADMIN: [key_name(usr, 1)] ([admin_jump_link(mob)]): [msg]") @@ -31,7 +31,7 @@ if(!msg) return - for(var/client/C in admins) + for(var/client/C in GLOB.admins) if(check_rights(R_ADMIN|R_MOD|R_MENTOR, 0, C.mob)) var/display_name = key if(holder.fakekey) @@ -62,7 +62,7 @@ enabling = TRUE admin_verbs_mentor += msay - for(var/client/C in admins) + for(var/client/C in GLOB.admins) if(check_rights(R_ADMIN|R_MOD, 0, C.mob)) continue if(!check_rights(R_MENTOR, 0, C.mob)) diff --git a/code/modules/admin/verbs/alt_check.dm b/code/modules/admin/verbs/alt_check.dm index c356ba00b6b..d5118d4eb8f 100644 --- a/code/modules/admin/verbs/alt_check.dm +++ b/code/modules/admin/verbs/alt_check.dm @@ -7,7 +7,7 @@
"} if(dbcon.IsConnected()) - for(var/client/C in clients) + for(var/client/C in GLOB.clients) dat += "

[C.ckey] (Player Age: [C.player_age]) - [C.computer_id] / [C.address]
" if(C.related_accounts_cid.len) dat += "--Accounts associated with CID: " diff --git a/code/modules/admin/verbs/antag-ooc.dm b/code/modules/admin/verbs/antag-ooc.dm index 2e0c044c424..8dbb539657c 100644 --- a/code/modules/admin/verbs/antag-ooc.dm +++ b/code/modules/admin/verbs/antag-ooc.dm @@ -12,7 +12,7 @@ if(holder && holder.fakekey) display_name = holder.fakekey - for(var/mob/M in mob_list) + for(var/mob/M in GLOB.mob_list) if((M.mind && M.mind.special_role && M.client) || (M.client && M.client.holder && (M.client.holder.rights & R_ADMIN)) ) to_chat(M, "AOOC: [display_name]: [msg]") diff --git a/code/modules/admin/verbs/custom_event.dm b/code/modules/admin/verbs/custom_event.dm index 546955136f7..10273b529a5 100644 --- a/code/modules/admin/verbs/custom_event.dm +++ b/code/modules/admin/verbs/custom_event.dm @@ -61,7 +61,7 @@ custom_event_admin_msg = input - for(var/client/X in admins) + for(var/client/X in GLOB.admins) if(check_rights(R_EVENT,0,X.mob)) to_chat(X, "

Custom Admin Event Info

") to_chat(X, "

A custom event is starting. OOC Admin Info:

") diff --git a/code/modules/admin/verbs/debug.dm b/code/modules/admin/verbs/debug.dm index 0b7797b84e3..97fe4d4567d 100644 --- a/code/modules/admin/verbs/debug.dm +++ b/code/modules/admin/verbs/debug.dm @@ -208,7 +208,7 @@ But you can call procs that are of type /mob/living/carbon/human/proc/ for that usr.show_message(t, 1) feedback_add_details("admin_verb","ASL") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! -/client/proc/cmd_admin_robotize(var/mob/M in mob_list) +/client/proc/cmd_admin_robotize(var/mob/M in GLOB.mob_list) set category = "Event" set name = "Make Robot" @@ -226,7 +226,7 @@ But you can call procs that are of type /mob/living/carbon/human/proc/ for that else alert("Invalid mob") -/client/proc/cmd_admin_animalize(var/mob/M in mob_list) +/client/proc/cmd_admin_animalize(var/mob/M in GLOB.mob_list) set category = "Event" set name = "Make Simple Animal" @@ -250,7 +250,7 @@ But you can call procs that are of type /mob/living/carbon/human/proc/ for that M.Animalize() -/client/proc/makepAI(var/turf/T in mob_list) +/client/proc/makepAI(var/turf/T in GLOB.mob_list) set category = "Event" set name = "Make pAI" set desc = "Specify a location to spawn a pAI device, then specify a key to play that pAI" @@ -259,7 +259,7 @@ But you can call procs that are of type /mob/living/carbon/human/proc/ for that return var/list/available = list() - for(var/mob/C in mob_list) + for(var/mob/C in GLOB.mob_list) if(C.key) available.Add(C) var/mob/choice = input("Choose a player to play the pAI", "Spawn pAI") in available @@ -286,7 +286,7 @@ But you can call procs that are of type /mob/living/carbon/human/proc/ for that paiController.pai_candidates.Remove(candidate) feedback_add_details("admin_verb","MPAI") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! -/client/proc/cmd_admin_alienize(var/mob/M in mob_list) +/client/proc/cmd_admin_alienize(var/mob/M in GLOB.mob_list) set category = "Event" set name = "Make Alien" @@ -306,7 +306,7 @@ But you can call procs that are of type /mob/living/carbon/human/proc/ for that else alert("Invalid mob") -/client/proc/cmd_admin_slimeize(var/mob/M in mob_list) +/client/proc/cmd_admin_slimeize(var/mob/M in GLOB.mob_list) set category = "Event" set name = "Make slime" @@ -326,7 +326,7 @@ But you can call procs that are of type /mob/living/carbon/human/proc/ for that else alert("Invalid mob") -/client/proc/cmd_admin_super(var/mob/M in mob_list) +/client/proc/cmd_admin_super(var/mob/M in GLOB.mob_list) set category = "Event" set name = "Make Superhero" @@ -337,8 +337,8 @@ But you can call procs that are of type /mob/living/carbon/human/proc/ for that alert("Wait until the game starts") return if(ishuman(M)) - var/type = input("Pick the Superhero","Superhero") as null|anything in all_superheroes - var/datum/superheroes/S = all_superheroes[type] + var/type = input("Pick the Superhero","Superhero") as null|anything in GLOB.all_superheroes + var/datum/superheroes/S = GLOB.all_superheroes[type] if(S) S.create(M) log_admin("[key_name(src)] has turned [M.key] into a Superhero.") @@ -377,7 +377,7 @@ But you can call procs that are of type /mob/living/carbon/human/proc/ for that if(confirm != "Yes") return - for(var/I in singularities) + for(var/I in GLOB.singularities) var/obj/singularity/S = I if(!is_level_reachable(S.z)) continue @@ -398,7 +398,7 @@ But you can call procs that are of type /mob/living/carbon/human/proc/ for that message_admins("[key_name_admin(src)] has remade the powernets. makepowernets() called.", 0) feedback_add_details("admin_verb","MPWN") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! -/client/proc/cmd_admin_grantfullaccess(var/mob/M in mob_list) +/client/proc/cmd_admin_grantfullaccess(var/mob/M in GLOB.mob_list) set category = "Admin" set name = "Grant Full Access" @@ -432,7 +432,7 @@ But you can call procs that are of type /mob/living/carbon/human/proc/ for that log_admin("[key_name(src)] has granted [M.key] full access.") message_admins("[key_name_admin(usr)] has granted [M.key] full access.", 1) -/client/proc/cmd_assume_direct_control(var/mob/M in mob_list) +/client/proc/cmd_assume_direct_control(var/mob/M in GLOB.mob_list) set category = "Admin" set name = "Assume direct control" set desc = "Direct intervention" @@ -569,7 +569,7 @@ But you can call procs that are of type /mob/living/carbon/human/proc/ for that for(var/areatype in areas_without_camera) to_chat(world, "* [areatype]") -/client/proc/cmd_admin_dress(var/mob/living/carbon/human/M in mob_list) +/client/proc/cmd_admin_dress(var/mob/living/carbon/human/M in GLOB.mob_list) set category = "Event" set name = "Select equipment" @@ -691,11 +691,11 @@ But you can call procs that are of type /mob/living/carbon/human/proc/ for that if(alert("Are you sure? This will start up the engine. Should only be used during debug!",,"Yes","No") != "Yes") return - for(var/obj/machinery/power/emitter/E in machines) + for(var/obj/machinery/power/emitter/E in GLOB.machines) if(E.anchored) E.active = 1 - for(var/obj/machinery/field/generator/F in machines) + for(var/obj/machinery/field/generator/F in GLOB.machines) if(F.active == 0) F.active = 1 F.state = 2 @@ -706,13 +706,13 @@ But you can call procs that are of type /mob/living/carbon/human/proc/ for that F.update_icon() spawn(30) - for(var/obj/machinery/the_singularitygen/G in machines) + for(var/obj/machinery/the_singularitygen/G in GLOB.machines) if(G.anchored) var/obj/singularity/S = new /obj/singularity(get_turf(G)) S.energy = 800 break - for(var/obj/machinery/power/rad_collector/Rad in machines) + for(var/obj/machinery/power/rad_collector/Rad in GLOB.machines) if(Rad.anchored) if(!Rad.P) var/obj/item/tank/plasma/Plasma = new/obj/item/tank/plasma(Rad) @@ -724,7 +724,7 @@ But you can call procs that are of type /mob/living/carbon/human/proc/ for that if(!Rad.active) Rad.toggle_power() - for(var/obj/machinery/power/smes/SMES in machines) + for(var/obj/machinery/power/smes/SMES in GLOB.machines) if(SMES.anchored) SMES.input_attempt = 1 @@ -738,21 +738,21 @@ But you can call procs that are of type /mob/living/carbon/human/proc/ for that switch(input("Which list?") in list("Players","Admins","Mobs","Living Mobs","Dead Mobs","Silicons","Clients","Respawnable Mobs")) if("Players") - to_chat(usr, jointext(player_list,",")) + to_chat(usr, jointext(GLOB.player_list,",")) if("Admins") - to_chat(usr, jointext(admins,",")) + to_chat(usr, jointext(GLOB.admins,",")) if("Mobs") - to_chat(usr, jointext(mob_list,",")) + to_chat(usr, jointext(GLOB.mob_list,",")) if("Living Mobs") - to_chat(usr, jointext(living_mob_list,",")) + to_chat(usr, jointext(GLOB.living_mob_list,",")) if("Dead Mobs") - to_chat(usr, jointext(dead_mob_list,",")) + to_chat(usr, jointext(GLOB.dead_mob_list,",")) if("Silicons") - to_chat(usr, jointext(silicon_mob_list,",")) + to_chat(usr, jointext(GLOB.silicon_mob_list,",")) if("Clients") - to_chat(usr, jointext(clients,",")) + to_chat(usr, jointext(GLOB.clients,",")) if("Respawnable Mobs") - to_chat(usr, jointext(respawnable_list,",")) + to_chat(usr, jointext(GLOB.respawnable_list,",")) /client/proc/cmd_display_del_log() set category = "Debug" @@ -866,7 +866,7 @@ But you can call procs that are of type /mob/living/carbon/human/proc/ for that return var/list/names = list() - for(var/i in ruin_landmarks) + for(var/i in GLOB.ruin_landmarks) var/obj/effect/landmark/ruin/ruin_landmark = i var/datum/map_template/ruin/template = ruin_landmark.ruin_template diff --git a/code/modules/admin/verbs/freeze.dm b/code/modules/admin/verbs/freeze.dm index 9439c63e861..8dc852e9221 100644 --- a/code/modules/admin/verbs/freeze.dm +++ b/code/modules/admin/verbs/freeze.dm @@ -6,15 +6,15 @@ //////////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////////// var/global/list/frozen_mob_list = list() -/client/proc/freeze(var/mob/living/M as mob in mob_list) +/client/proc/freeze(var/mob/living/M as mob in GLOB.mob_list) set category = "Admin" set name = "Freeze" - + if(!check_rights(R_ADMIN)) return - - if(!istype(M)) - return + + if(!istype(M)) + return if(M in frozen_mob_list) M.admin_unFreeze(src) @@ -84,13 +84,13 @@ var/global/list/frozen_mob_list = list() //////////////////////////Freeze Mech -/client/proc/freezemecha(var/obj/mecha/O as obj in mechas_list) +/client/proc/freezemecha(var/obj/mecha/O as obj in GLOB.mechas_list) set category = "Admin" set name = "Freeze Mech" if(!check_rights(R_ADMIN)) - return - + return + var/obj/mecha/M = O if(!istype(M,/obj/mecha)) to_chat(src, "This can only be used on mechs!") @@ -105,7 +105,7 @@ var/global/list/frozen_mob_list = list() M.overlays += adminomaly if(M.occupant) M.removeVerb(/obj/mecha/verb/eject) - to_chat(M.occupant, "You have been frozen by [key]") + to_chat(M.occupant, "You have been frozen by [key]") message_admins("[key_name_admin(usr)] froze [key_name(M.occupant)] in a [M.name]") log_admin("[key_name(usr)] froze [key_name(M.occupant)] in a [M.name]") else @@ -116,7 +116,7 @@ var/global/list/frozen_mob_list = list() M.overlays -= adminomaly if(M.occupant) M.addVerb(/obj/mecha/verb/eject) - to_chat(M.occupant, "You have been unfrozen by [key]") + to_chat(M.occupant, "You have been unfrozen by [key]") message_admins("[key_name_admin(usr)] unfroze [key_name(M.occupant)] in a [M.name]") log_admin("[key_name(usr)] unfroze [key_name(M.occupant)] in a [M.name]") else diff --git a/code/modules/admin/verbs/gimmick_team.dm b/code/modules/admin/verbs/gimmick_team.dm index 6192ad6b2ac..9790a073401 100644 --- a/code/modules/admin/verbs/gimmick_team.dm +++ b/code/modules/admin/verbs/gimmick_team.dm @@ -42,7 +42,7 @@ var/list/players_to_spawn = list() if(pick_manually) var/list/possible_ghosts = list() - for(var/mob/dead/observer/G in player_list) + for(var/mob/dead/observer/G in GLOB.player_list) if(!G.client.is_afk()) if(!(G.mind && G.mind.current && G.mind.current.stat != DEAD)) possible_ghosts += G diff --git a/code/modules/admin/verbs/honksquad.dm b/code/modules/admin/verbs/honksquad.dm index 1e72c1836da..c9068049c75 100644 --- a/code/modules/admin/verbs/honksquad.dm +++ b/code/modules/admin/verbs/honksquad.dm @@ -38,7 +38,7 @@ var/global/sent_honksquad = 0 //Generates a list of HONKsquad from active ghosts. Then the user picks which characters to respawn as the commandos. var/list/candidates = list() //candidates for being a commando out of all the active ghosts in world. var/list/commandos = list() //actual commando ghosts as picked by the user. - for(var/mob/dead/observer/G in player_list) + for(var/mob/dead/observer/G in GLOB.player_list) if(!G.client.holder && !G.client.is_afk()) //Whoever called/has the proc won't be added to the list. if(!(G.mind && G.mind.current && G.mind.current.stat != DEAD)) candidates += G.key @@ -48,7 +48,7 @@ var/global/sent_honksquad = 0 commandos += candidate//Add their ghost to commandos. //Spawns HONKsquad and equips them. - for(var/obj/effect/landmark/L in landmarks_list) + for(var/obj/effect/landmark/L in GLOB.landmarks_list) if(honksquad_number<=0) break if(L.name == "HONKsquad") honk_leader_selected = honksquad_number == 1?1:0 @@ -77,7 +77,7 @@ var/global/sent_honksquad = 0 var/mob/living/carbon/human/new_honksquad = new(spawn_location.loc) var/honksquad_leader_rank = pick("Lieutenant", "Captain", "Major") var/honksquad_rank = pick("Corporal", "Sergeant", "Staff Sergeant", "Sergeant 1st Class", "Master Sergeant", "Sergeant Major") - var/honksquad_name = pick(clown_names) + var/honksquad_name = pick(GLOB.clown_names) var/datum/preferences/A = new()//Randomize appearance for the commando. if(honk_leader_selected) diff --git a/code/modules/admin/verbs/infiltratorteam_syndicate.dm b/code/modules/admin/verbs/infiltratorteam_syndicate.dm index a3f30117cdd..274a4839222 100644 --- a/code/modules/admin/verbs/infiltratorteam_syndicate.dm +++ b/code/modules/admin/verbs/infiltratorteam_syndicate.dm @@ -48,7 +48,7 @@ var/global/sent_syndicate_infiltration_team = 0 if(pick_manually) var/list/possible_ghosts = list() - for(var/mob/dead/observer/G in player_list) + for(var/mob/dead/observer/G in GLOB.player_list) if(!G.client.is_afk()) if(!(G.mind && G.mind.current && G.mind.current.stat != DEAD)) possible_ghosts += G @@ -69,7 +69,7 @@ var/global/sent_syndicate_infiltration_team = 0 var/list/sit_spawns = list() var/list/sit_spawns_leader = list() var/list/sit_spawns_mgmt = list() - for(var/obj/effect/landmark/L in landmarks_list) + for(var/obj/effect/landmark/L in GLOB.landmarks_list) if(L.name == "Syndicate-Infiltrator") sit_spawns += L if(L.name == "Syndicate-Infiltrator-Leader") diff --git a/code/modules/admin/verbs/massmodvar.dm b/code/modules/admin/verbs/massmodvar.dm index b26a27b3aa6..bafa7d629d3 100644 --- a/code/modules/admin/verbs/massmodvar.dm +++ b/code/modules/admin/verbs/massmodvar.dm @@ -212,19 +212,19 @@ typecache = typecacheof(typecache) . = list() if(ispath(T, /mob)) - for(var/mob/thing in mob_list) + for(var/mob/thing in GLOB.mob_list) if(typecache[thing.type]) . += thing CHECK_TICK else if(ispath(T, /obj/machinery/door)) - for(var/obj/machinery/door/thing in airlocks) + for(var/obj/machinery/door/thing in GLOB.airlocks) if(typecache[thing.type]) . += thing CHECK_TICK else if(ispath(T, /obj/machinery)) - for(var/obj/machinery/thing in machines) + for(var/obj/machinery/thing in GLOB.machines) if(typecache[thing.type]) . += thing CHECK_TICK @@ -254,7 +254,7 @@ CHECK_TICK else if(ispath(T, /client)) - for(var/client/thing in clients) + for(var/client/thing in GLOB.clients) if(typecache[thing.type]) . += thing CHECK_TICK diff --git a/code/modules/admin/verbs/modifyvariables.dm b/code/modules/admin/verbs/modifyvariables.dm index d899fda5b56..f3be2161bb2 100644 --- a/code/modules/admin/verbs/modifyvariables.dm +++ b/code/modules/admin/verbs/modifyvariables.dm @@ -195,7 +195,7 @@ var/list/VVpixelmovement = list("step_x", "step_y", "step_size", "bound_height", if(VV_CLIENT) - .["value"] = input("Select reference:", "Reference", current_value) as null|anything in clients + .["value"] = input("Select reference:", "Reference", current_value) as null|anything in GLOB.clients if(.["value"] == null) .["class"] = null return diff --git a/code/modules/admin/verbs/one_click_antag.dm b/code/modules/admin/verbs/one_click_antag.dm index c3641766db0..5799916e79c 100644 --- a/code/modules/admin/verbs/one_click_antag.dm +++ b/code/modules/admin/verbs/one_click_antag.dm @@ -57,7 +57,7 @@ client/proc/one_click_antag() log_admin("[key_name(owner)] tried making [antnum] traitors with One-Click-Antag") message_admins("[key_name_admin(owner)] tried making [antnum] traitors with One-Click-Antag") - for(var/mob/living/carbon/human/applicant in player_list) + for(var/mob/living/carbon/human/applicant in GLOB.player_list) if(CandCheck(ROLE_TRAITOR, applicant, temp)) candidates += applicant @@ -88,7 +88,7 @@ client/proc/one_click_antag() log_admin("[key_name(owner)] tried making [antnum] changelings with One-Click-Antag") message_admins("[key_name_admin(owner)] tried making [antnum] changelings with One-Click-Antag") - for(var/mob/living/carbon/human/applicant in player_list) + for(var/mob/living/carbon/human/applicant in GLOB.player_list) if(CandCheck(ROLE_CHANGELING, applicant, temp)) candidates += applicant @@ -118,7 +118,7 @@ client/proc/one_click_antag() log_admin("[key_name(owner)] tried making [antnum] revolutionaries with One-Click-Antag") message_admins("[key_name_admin(owner)] tried making [antnum] revolutionaries with One-Click-Antag") - for(var/mob/living/carbon/human/applicant in player_list) + for(var/mob/living/carbon/human/applicant in GLOB.player_list) if(CandCheck(ROLE_REV, applicant, temp)) candidates += applicant @@ -166,7 +166,7 @@ client/proc/one_click_antag() log_admin("[key_name(owner)] tried making a Cult with One-Click-Antag") message_admins("[key_name_admin(owner)] tried making a Cult with One-Click-Antag") - for(var/mob/living/carbon/human/applicant in player_list) + for(var/mob/living/carbon/human/applicant in GLOB.player_list) if(CandCheck(ROLE_CULTIST, applicant, temp)) candidates += applicant @@ -195,7 +195,7 @@ client/proc/one_click_antag() log_admin("[key_name(owner)] tried making a [antnum] person Nuke Op Team with One-Click-Antag") message_admins("[key_name_admin(owner)] tried making a [antnum] person Nuke Op Team with One-Click-Antag") - for(var/mob/G in respawnable_list) + for(var/mob/G in GLOB.respawnable_list) if(istype(G) && G.client && (ROLE_OPERATIVE in G.client.prefs.be_special)) if(!jobban_isbanned(G, "operative") && !jobban_isbanned(G, "Syndicate")) if(player_old_enough_antag(G.client,ROLE_OPERATIVE)) @@ -328,7 +328,7 @@ client/proc/one_click_antag() var/syndicate_leader_selected = 0 //when the leader is chosen. The last person spawned. //Generates a list of commandos from active ghosts. Then the user picks which characters to respawn as the commandos. - for(var/mob/G in respawnable_list) + for(var/mob/G in GLOB.respawnable_list) if(!jobban_isbanned(G, "Syndicate")) spawn(0) switch(alert(G,"Do you wish to be considered for an elite syndicate strike team being sent in?","Please answer in 30 seconds!","Yes","No")) @@ -399,7 +399,7 @@ client/proc/one_click_antag() var/mob/living/carbon/human/new_syndicate_commando = new(spawn_location.loc) var/syndicate_commando_leader_rank = pick("Lieutenant", "Captain", "Major") var/syndicate_commando_rank = pick("Corporal", "Sergeant", "Staff Sergeant", "Sergeant 1st Class", "Master Sergeant", "Sergeant Major") - var/syndicate_commando_name = pick(last_names) + var/syndicate_commando_name = pick(GLOB.last_names) var/datum/preferences/A = new()//Randomize appearance for the commando. if(syndicate_leader_selected) @@ -437,7 +437,7 @@ client/proc/one_click_antag() log_admin("[key_name(owner)] tried making Vox Raiders with One-Click-Antag") message_admins("[key_name_admin(owner)] tried making Vox Raiders with One-Click-Antag") //Generates a list of candidates from active ghosts. - for(var/mob/G in respawnable_list) + for(var/mob/G in GLOB.respawnable_list) if(istype(G) && G.client && (ROLE_RAIDER in G.client.prefs.be_special)) if(player_old_enough_antag(G.client,ROLE_RAIDER)) if(!jobban_isbanned(G, "raider") && !jobban_isbanned(G, "Syndicate")) @@ -542,7 +542,7 @@ client/proc/one_click_antag() log_admin("[key_name(owner)] tried making Vampires with One-Click-Antag") message_admins("[key_name_admin(owner)] tried making Vampires with One-Click-Antag") - for(var/mob/living/carbon/human/applicant in player_list) + for(var/mob/living/carbon/human/applicant in GLOB.player_list) if(CandCheck(ROLE_VAMPIRE, applicant, temp)) candidates += applicant @@ -567,7 +567,7 @@ client/proc/one_click_antag() message_admins("[key_name_admin(owner)] tried making Thunderdone Teams with One-Click-Antag") //Generates a list of candidates from active ghosts. - for(var/mob/G in respawnable_list) + for(var/mob/G in GLOB.respawnable_list) spawn(0) switch(alert(G,"Do you wish to be considered for a Thunderdome match about to start?","Please answer in 30 seconds!","Yes","No")) if("Yes") diff --git a/code/modules/admin/verbs/onlyone.dm b/code/modules/admin/verbs/onlyone.dm index bffaaa9bc9c..6273c9207e6 100644 --- a/code/modules/admin/verbs/onlyone.dm +++ b/code/modules/admin/verbs/onlyone.dm @@ -4,7 +4,7 @@ return var/list/incompatible_species = list(/datum/species/plasmaman, /datum/species/vox) - for(var/mob/living/carbon/human/H in player_list) + for(var/mob/living/carbon/human/H in GLOB.player_list) if(H.stat == DEAD || !(H.client)) continue if(is_special_character(H)) @@ -62,7 +62,7 @@ alert("The game hasn't started yet!") return - for(var/mob/living/carbon/human/H in player_list) + for(var/mob/living/carbon/human/H in GLOB.player_list) if(H.stat == 2 || !(H.client)) continue if(is_special_character(H)) continue diff --git a/code/modules/admin/verbs/onlyoneteam.dm b/code/modules/admin/verbs/onlyoneteam.dm index 715472128b8..d2490cdf9c3 100644 --- a/code/modules/admin/verbs/onlyoneteam.dm +++ b/code/modules/admin/verbs/onlyoneteam.dm @@ -5,7 +5,7 @@ var/list/incompatible_species = list(/datum/species/plasmaman, /datum/species/vox) var/team_toggle = 0 - for(var/mob/living/carbon/human/H in player_list) + for(var/mob/living/carbon/human/H in GLOB.player_list) if(H.stat == DEAD || !(H.client)) continue if(is_special_character(H)) diff --git a/code/modules/admin/verbs/playsound.dm b/code/modules/admin/verbs/playsound.dm index 47709629186..c7d654dbe68 100644 --- a/code/modules/admin/verbs/playsound.dm +++ b/code/modules/admin/verbs/playsound.dm @@ -10,7 +10,7 @@ var/list/sounds_cache = list() log_admin("[key_name(src)] stopped admin sounds.") message_admins("[key_name_admin(src)] stopped admin sounds.", 1) - for(var/mob/M in player_list) + for(var/mob/M in GLOB.player_list) M << awful_sound /client/proc/play_sound(S as sound) @@ -28,7 +28,7 @@ var/list/sounds_cache = list() log_admin("[key_name(src)] played sound [S]") message_admins("[key_name_admin(src)] played sound [S]", 1) - for(var/mob/M in player_list) + for(var/mob/M in GLOB.player_list) if(M.client.prefs.sound & SOUND_MIDI) M << uploaded_sound @@ -92,7 +92,7 @@ var/list/sounds_cache = list() if(C == "Yep") ignore_power = 1 - for(var/O in global_intercoms) + for(var/O in GLOB.global_intercoms) var/obj/item/radio/intercom/I = O if(!is_station_level(I.z) && !ignore_z) continue diff --git a/code/modules/admin/verbs/pray.dm b/code/modules/admin/verbs/pray.dm index 0fd53b8b62a..b92b304fd57 100644 --- a/code/modules/admin/verbs/pray.dm +++ b/code/modules/admin/verbs/pray.dm @@ -29,9 +29,9 @@ deity = ticker.cultdat.entity_name log_say("(PRAYER) [msg]", usr) - msg = "[bicon(cross)][prayer_type][deity ? " (to [deity])" : ""]:[key_name(src, 1)] (?) (PP) (VV) (SM) ([admin_jump_link(src)]) (CA) (SC) (BLESS) (SMITE): [msg]" + msg = "[bicon(cross)][prayer_type][deity ? " (to [deity])" : ""]:[key_name(src, 1)] ([ADMIN_QUE(src,"?")]) ([ADMIN_PP(src,"PP")]) ([ADMIN_VV(src,"VV")]) ([ADMIN_SM(src,"SM")]) ([admin_jump_link(src)]) (CA) ([ADMIN_SC(src,"SC")]) (BLESS) (SMITE): [msg]" - for(var/client/X in admins) + for(var/client/X in GLOB.admins) if(check_rights(R_EVENT,0,X.mob)) to_chat(X, msg) to_chat(usr, "Your prayers have been received by the gods.") @@ -40,8 +40,8 @@ /proc/Centcomm_announce(var/text , var/mob/Sender) var/msg = sanitize(copytext(text, 1, MAX_MESSAGE_LEN)) - msg = "CENTCOMM: [key_name(Sender, 1)] (PP) (VV) (SM) ([admin_jump_link(Sender)]) (CA) (BSA) [ADMIN_CENTCOM_REPLY(Sender)]): [msg]" - for(var/client/X in admins) + msg = "CENTCOMM: [key_name(Sender, 1)] ([ADMIN_PP(Sender,"PP")]) ([ADMIN_VV(Sender,"VV")]) ([ADMIN_SM(Sender,"SM")]) ([admin_jump_link(Sender)]) (CA) ([ADMIN_BSA(Sender,"BSA")]) ([ADMIN_CENTCOM_REPLY(Sender,"RPLY")])): [msg]" + for(var/client/X in GLOB.admins) if(R_EVENT & X.holder.rights) to_chat(X, msg) if(X.prefs.sound & SOUND_ADMINHELP) @@ -49,8 +49,8 @@ /proc/Syndicate_announce(var/text , var/mob/Sender) var/msg = sanitize(copytext(text, 1, MAX_MESSAGE_LEN)) - msg = "SYNDICATE: [key_name(Sender, 1)] (PP) (VV) (SM) ([admin_jump_link(Sender)]) (CA) (BSA) [ADMIN_SYNDICATE_REPLY(Sender)]: [msg]" - for(var/client/X in admins) + msg = "SYNDICATE: [key_name(Sender, 1)] ([ADMIN_PP(Sender,"PP")]) ([ADMIN_VV(Sender,"VV")]) ([ADMIN_SM(Sender,"SM")]) ([admin_jump_link(Sender)]) (CA) ([ADMIN_BSA(Sender,"BSA")]) ([ADMIN_SYNDICATE_REPLY(Sender,"RPLY")]): [msg]" + for(var/client/X in GLOB.admins) if(check_rights(R_EVENT,0,X.mob)) to_chat(X, msg) if(X.prefs.sound & SOUND_ADMINHELP) @@ -58,8 +58,8 @@ /proc/HONK_announce(var/text , var/mob/Sender) var/msg = sanitize(copytext(text, 1, MAX_MESSAGE_LEN)) - msg = "HONK: [key_name(Sender, 1)] (PP) (VV) (SM) ([admin_jump_link(Sender)]) (CA) (BSA) (RPLY): [msg]" - for(var/client/X in admins) + msg = "HONK: [key_name(Sender, 1)] ([ADMIN_PP(Sender,"PP")]) ([ADMIN_VV(Sender,"VV")]) ([ADMIN_SM(Sender,"SM")]) ([admin_jump_link(Sender)]) (CA) ([ADMIN_BSA(Sender,"BSA")]) (RPLY): [msg]" + for(var/client/X in GLOB.admins) if(R_EVENT & X.holder.rights) to_chat(X, msg) if(X.prefs.sound & SOUND_ADMINHELP) @@ -67,10 +67,10 @@ /proc/ERT_Announce(var/text , var/mob/Sender, var/repeat_warning) var/msg = sanitize(copytext(text, 1, MAX_MESSAGE_LEN)) - msg = "ERT REQUEST: [key_name(Sender, 1)] (PP) (VV) (SM) ([admin_jump_link(Sender)]) (CA) (BSA) (RESPOND): [msg]" + msg = "ERT REQUEST: [key_name(Sender, 1)] ([ADMIN_PP(Sender,"PP")]) ([ADMIN_VV(Sender,"VV")]) ([ADMIN_SM(Sender,"SM")]) ([admin_jump_link(Sender)]) (CA) ([ADMIN_BSA(Sender,"BSA")]) (RESPOND): [msg]" if(repeat_warning) msg += "
WARNING: ERT request has gone 5 minutes with no reply!" - for(var/client/X in admins) + for(var/client/X in GLOB.admins) if(check_rights(R_EVENT,0,X.mob)) to_chat(X, msg) if(X.prefs.sound & SOUND_ADMINHELP) @@ -79,8 +79,8 @@ /proc/Nuke_request(text , mob/Sender) var/nuke_code = get_nuke_code() var/msg = sanitize(copytext(text, 1, MAX_MESSAGE_LEN)) - msg = "NUKE CODE REQUEST: [key_name(Sender)] (PP) (VV) (SM) ([admin_jump_link(Sender)]) (CA) (BSA) [ADMIN_CENTCOM_REPLY(Sender)]: [msg]" - for(var/client/X in admins) + msg = "NUKE CODE REQUEST: [key_name(Sender)] ([ADMIN_PP(Sender,"PP")]) ([ADMIN_VV(Sender,"VV")]) ([ADMIN_SM(Sender,"SM")]) ([admin_jump_link(Sender)]) (CA) ([ADMIN_BSA(Sender,"BSA")]) ([ADMIN_CENTCOM_REPLY(Sender,"RPLY")]): [msg]" + for(var/client/X in GLOB.admins) if(check_rights(R_EVENT,0,X.mob)) to_chat(X, msg) to_chat(X, "The nuke code is [nuke_code].") diff --git a/code/modules/admin/verbs/randomverbs.dm b/code/modules/admin/verbs/randomverbs.dm index 013fd4b2e40..365a0beaead 100644 --- a/code/modules/admin/verbs/randomverbs.dm +++ b/code/modules/admin/verbs/randomverbs.dm @@ -1,4 +1,4 @@ -/client/proc/cmd_admin_drop_everything(mob/M as mob in mob_list) +/client/proc/cmd_admin_drop_everything(mob/M as mob in GLOB.mob_list) set category = null set name = "Drop Everything" @@ -16,7 +16,7 @@ message_admins("[key_name_admin(usr)] made [key_name_admin(M)] drop everything!", 1) feedback_add_details("admin_verb","DEVR") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! -/client/proc/cmd_admin_prison(mob/M as mob in mob_list) +/client/proc/cmd_admin_prison(mob/M as mob in GLOB.mob_list) set category = "Admin" set name = "Prison" @@ -44,7 +44,7 @@ message_admins("[key_name_admin(usr)] sent [key_name_admin(M)] to the prison station.", 1) feedback_add_details("admin_verb","PRISON") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! -/client/proc/cmd_admin_subtle_message(mob/M as mob in mob_list) +/client/proc/cmd_admin_subtle_message(mob/M as mob in GLOB.mob_list) set category = "Event" set name = "Subtle Message" @@ -83,7 +83,7 @@ var/missing_ages = 0 var/msg = "" - for(var/client/C in clients) + for(var/client/C in GLOB.clients) if(C.player_age == "Requires database") missing_ages = 1 continue @@ -144,13 +144,13 @@ -/client/proc/cmd_admin_headset_message(mob/M in mob_list) +/client/proc/cmd_admin_headset_message(mob/M in GLOB.mob_list) set category = "Event" set name = "Headset Message" admin_headset_message(M) -/client/proc/admin_headset_message(mob/M in mob_list, sender = null) +/client/proc/admin_headset_message(mob/M in GLOB.mob_list, sender = null) var/mob/living/carbon/human/H = M if(!check_rights(R_ADMIN)) @@ -181,7 +181,7 @@ -/client/proc/cmd_admin_godmode(mob/M as mob in mob_list) +/client/proc/cmd_admin_godmode(mob/M as mob in GLOB.mob_list) set category = "Admin" set name = "Godmode" @@ -342,7 +342,7 @@ Traitors and the like can also be revived with the previous role mostly intact. return var/mob/dead/observer/G_found - for(var/mob/dead/observer/G in player_list) + for(var/mob/dead/observer/G in GLOB.player_list) if(G.ckey == input) G_found = G break @@ -490,7 +490,7 @@ Traitors and the like can also be revived with the previous role mostly intact. /proc/create_xeno(ckey) if(!ckey) var/list/candidates = list() - for(var/mob/M in player_list) + for(var/mob/M in GLOB.player_list) if(M.stat != DEAD) continue //we are not dead! if(!(ROLE_ALIEN in M.client.prefs.be_special)) continue //we don't want to be an alium if(jobban_isbanned(M, "alien") || jobban_isbanned(M, "Syndicate")) continue //we are jobbanned @@ -525,7 +525,7 @@ Traitors and the like can also be revived with the previous role mostly intact. var/list/mobs = list() var/list/ghosts = list() - var/list/sortmob = sortAtom(mob_list) // get the mob list. + var/list/sortmob = sortAtom(GLOB.mob_list) // get the mob list. /var/any=0 for(var/mob/dead/observer/M in sortmob) mobs.Add(M) //filter it where it's only ghosts @@ -564,7 +564,7 @@ Traitors and the like can also be revived with the previous role mostly intact. feedback_add_details("admin_verb","IONC") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! -/client/proc/cmd_admin_rejuvenate(mob/living/M as mob in mob_list) +/client/proc/cmd_admin_rejuvenate(mob/living/M as mob in GLOB.mob_list) set category = "Event" set name = "Rejuvenate" @@ -663,8 +663,17 @@ Traitors and the like can also be revived with the previous role mostly intact. return if(job_master) + var/currentpositiontally + var/totalpositiontally + to_chat(src, "Job Name: Filled job slot / Total job slots (Free job slots)") for(var/datum/job/job in job_master.occupations) - to_chat(src, "[job.title]: [job.total_positions]") + to_chat(src, "[job.title]: [job.current_positions] / \ + [job.total_positions == -1 ? "UNLIMITED" : job.total_positions] \ + ([job.total_positions == -1 ? "UNLIMITED" : job.total_positions - job.current_positions])") + if(job.total_positions != -1) // Only count position that isn't unlimited + currentpositiontally += job.current_positions + totalpositiontally += job.total_positions + to_chat(src, "Currently filled job slots (Excluding unlimited): [currentpositiontally] / [totalpositiontally] ([totalpositiontally - currentpositiontally])") feedback_add_details("admin_verb","LFS") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! /client/proc/cmd_admin_explosion(atom/O as obj|mob|turf in view()) @@ -721,7 +730,7 @@ Traitors and the like can also be revived with the previous role mostly intact. else return -/client/proc/cmd_admin_gib(mob/M as mob in mob_list) +/client/proc/cmd_admin_gib(mob/M as mob in GLOB.mob_list) set category = "Admin" set name = "Gib" @@ -761,7 +770,7 @@ Traitors and the like can also be revived with the previous role mostly intact. message_admins("[key_name_admin(usr)] used gibself.", 1) feedback_add_details("admin_verb","GIBS") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! -/client/proc/cmd_admin_check_contents(mob/living/M as mob in mob_list) +/client/proc/cmd_admin_check_contents(mob/living/M as mob in GLOB.mob_list) set category = "Admin" set name = "Check Contents" @@ -861,7 +870,7 @@ Traitors and the like can also be revived with the previous role mostly intact. log_admin("[key_name(src)] has [SSshuttle.emergencyNoEscape ? "denied" : "allowed"] the shuttle to be called.") message_admins("[key_name_admin(usr)] has [SSshuttle.emergencyNoEscape ? "denied" : "allowed"] the shuttle to be called.") -/client/proc/cmd_admin_attack_log(mob/M as mob in mob_list) +/client/proc/cmd_admin_attack_log(mob/M as mob in GLOB.mob_list) set category = "Admin" set name = "Attack Log" @@ -942,7 +951,7 @@ Traitors and the like can also be revived with the previous role mostly intact. var/datum/TCS_Compiler/C = S.Compiler S.rawcode = "" C.Compile("") - for(var/obj/machinery/computer/telecomms/traffic/T in machines) + for(var/obj/machinery/computer/telecomms/traffic/T in GLOB.machines) T.storedcode = "" log_admin("[key_name(usr)] blanked all telecomms scripts.") message_admins("[key_name_admin(usr)] blanked all telecomms scripts.") @@ -963,7 +972,7 @@ Traitors and the like can also be revived with the previous role mostly intact. var/job_string var/key_string var/role_string - for(var/mob/living/carbon/human/H in living_mob_list) + for(var/mob/living/carbon/human/H in GLOB.living_mob_list) if(!isLivingSSD(H)) continue mins_ssd = round((world.time - H.last_logout) / 600) @@ -981,7 +990,7 @@ Traitors and the like can also be revived with the previous role mostly intact. if(!H.key && H.mind.key) key_string = H.mind.key msg += "" - msg += "" + msg += "" if(istype(H.loc, /obj/machinery/cryopod)) msg += "" else diff --git a/code/modules/admin/verbs/striketeam.dm b/code/modules/admin/verbs/striketeam.dm index 1e809bcd948..0a481460344 100644 --- a/code/modules/admin/verbs/striketeam.dm +++ b/code/modules/admin/verbs/striketeam.dm @@ -48,7 +48,7 @@ var/global/sent_strike_team = 0 var/commando_number = commandos_possible //for selecting a leader var/is_leader = TRUE // set to FALSE after leader is spawned - for(var/obj/effect/landmark/L in landmarks_list) + for(var/obj/effect/landmark/L in GLOB.landmarks_list) if(commando_number <= 0) break @@ -108,7 +108,7 @@ var/global/sent_strike_team = 0 commando_number-- //Spawns the rest of the commando gear. - for(var/obj/effect/landmark/L in landmarks_list) + for(var/obj/effect/landmark/L in GLOB.landmarks_list) if(L.name == "Commando_Manual") //new /obj/item/gun/energy/pulse_rifle(L.loc) var/obj/item/paper/P = new(L.loc) @@ -119,7 +119,7 @@ var/global/sent_strike_team = 0 P.stamp(stamp) qdel(stamp) - for(var/obj/effect/landmark/L in landmarks_list) + for(var/obj/effect/landmark/L in GLOB.landmarks_list) if(L.name == "Commando-Bomb") new /obj/effect/spawner/newbomb/timer/syndicate(L.loc) qdel(L) @@ -132,7 +132,7 @@ var/global/sent_strike_team = 0 var/mob/living/carbon/human/new_commando = new(spawn_location.loc) var/commando_leader_rank = pick("Lieutenant", "Captain", "Major") var/commando_rank = pick("Corporal", "Sergeant", "Staff Sergeant", "Sergeant 1st Class", "Master Sergeant", "Sergeant Major") - var/commando_name = pick(last_names) + var/commando_name = pick(GLOB.last_names) var/datum/preferences/A = new()//Randomize appearance for the commando. if(is_leader) diff --git a/code/modules/admin/verbs/striketeam_syndicate.dm b/code/modules/admin/verbs/striketeam_syndicate.dm index c5f46c98592..bb5776f782c 100644 --- a/code/modules/admin/verbs/striketeam_syndicate.dm +++ b/code/modules/admin/verbs/striketeam_syndicate.dm @@ -53,7 +53,7 @@ var/global/sent_syndicate_strike_team = 0 sent_syndicate_strike_team = 1 //Spawns commandos and equips them. - for(var/obj/effect/landmark/L in landmarks_list) + for(var/obj/effect/landmark/L in GLOB.landmarks_list) if(syndicate_commando_number <= 0) break @@ -88,7 +88,7 @@ var/global/sent_syndicate_strike_team = 0 is_leader = FALSE syndicate_commando_number-- - for(var/obj/effect/landmark/L in landmarks_list) + for(var/obj/effect/landmark/L in GLOB.landmarks_list) if(L.name == "Syndicate-Commando-Bomb") new /obj/effect/spawner/newbomb/timer/syndicate(L.loc) qdel(L) @@ -101,7 +101,7 @@ var/global/sent_syndicate_strike_team = 0 var/mob/living/carbon/human/new_syndicate_commando = new(spawn_location.loc) var/syndicate_commando_leader_rank = pick("Lieutenant", "Captain", "Major") var/syndicate_commando_rank = pick("Corporal", "Sergeant", "Staff Sergeant", "Sergeant 1st Class", "Master Sergeant", "Sergeant Major") - var/syndicate_commando_name = pick(last_names) + var/syndicate_commando_name = pick(GLOB.last_names) var/datum/preferences/A = new()//Randomize appearance for the commando. if(is_leader) diff --git a/code/modules/antagonists/_common/antag_spawner.dm b/code/modules/antagonists/_common/antag_spawner.dm index ecf8c336118..80a62f9c818 100644 --- a/code/modules/antagonists/_common/antag_spawner.dm +++ b/code/modules/antagonists/_common/antag_spawner.dm @@ -52,9 +52,7 @@ if(!borg_to_spawn) //If there's no type at all, let it still be used but don't do anything used = FALSE return - var/datum/effect_system/spark_spread/S = new /datum/effect_system/spark_spread - S.set_up(4, 1, src) - S.start() + do_sparks(4, 1, src) var/mob/living/silicon/robot/R switch(borg_to_spawn) if("Medical") diff --git a/code/modules/arcade/prize_datums.dm b/code/modules/arcade/prize_datums.dm index a2209a172ff..ef1512858d4 100644 --- a/code/modules/arcade/prize_datums.dm +++ b/code/modules/arcade/prize_datums.dm @@ -9,6 +9,9 @@ var/global/datum/prizes/global_prizes = new prizes += new itempath() /datum/prizes/proc/PlaceOrder(var/obj/machinery/prize_counter/prize_counter, var/itemID) + if(!prize_counter.Adjacent(usr)) + to_chat(usr, "You need to be closer!") + return if(!prize_counter) return 0 var/datum/prize_item/item = global_prizes.prizes[itemID] diff --git a/code/modules/assembly/assembly.dm b/code/modules/assembly/assembly.dm index da6d422d4e6..dc09ca1ef5b 100644 --- a/code/modules/assembly/assembly.dm +++ b/code/modules/assembly/assembly.dm @@ -5,7 +5,7 @@ icon_state = "" flags = CONDUCT w_class = WEIGHT_CLASS_SMALL - materials = list(MAT_METAL=100) + materials = list(MAT_METAL = 100) throwforce = 2 throw_speed = 3 throw_range = 10 @@ -15,10 +15,10 @@ var/bomb_name = "bomb" // used for naming bombs / mines - var/secured = 1 + var/secured = TRUE var/list/attached_overlays = null var/obj/item/assembly_holder/holder = null - var/cooldown = 0//To prevent spam + var/cooldown = FALSE //To prevent spam var/wires = WIRE_RECEIVE | WIRE_PULSE var/datum/wires/connected = null // currently only used by timer/signaler @@ -28,173 +28,119 @@ var/const/WIRE_RADIO_RECEIVE = 8 //Allows Pulsed(1) to call Activate() var/const/WIRE_RADIO_PULSE = 16 //Allows Pulse(1) to send a radio message - proc/activate() //What the device does when turned on - return +/obj/item/assembly/proc/activate() //What the device does when turned on + return - proc/pulsed(var/radio = 0) //Called when another assembly acts on this one, var/radio will determine where it came from for wire calcs - return +/obj/item/assembly/proc/pulsed(radio = FALSE) //Called when another assembly acts on this one, var/radio will determine where it came from for wire calcs + return - proc/pulse(var/radio = 0) //Called when this device attempts to act on another device, var/radio determines if it was sent via radio or direct - return +/obj/item/assembly/proc/pulse(radio = FALSE) //Called when this device attempts to act on another device, var/radio determines if it was sent via radio or direct + return - proc/toggle_secure() //Code that has to happen when the assembly is un\secured goes here - return +/obj/item/assembly/proc/toggle_secure() //Code that has to happen when the assembly is un\secured goes here + return - proc/attach_assembly(var/obj/A, var/mob/user) //Called when an assembly is attacked by another - return +/obj/item/assembly/proc/attach_assembly(obj/A, mob/user) //Called when an assembly is attacked by another + return - proc/process_cooldown() //Called via spawn(10) to have it count down the cooldown var - return +/obj/item/assembly/proc/process_cooldown() //Called via spawn(10) to have it count down the cooldown var + return - proc/holder_movement() //Called when the holder is moved - return +/obj/item/assembly/proc/holder_movement() //Called when the holder is moved + return - proc/describe() // Called by grenades to describe the state of the trigger (time left, etc) - return "The trigger assembly looks broken!" +/obj/item/assembly/proc/describe() // Called by grenades to describe the state of the trigger (time left, etc) + return "The trigger assembly looks broken!" +/obj/item/assembly/interact(mob/user) //Called when attack_self is called + return - interact(mob/user as mob) //Called when attack_self is called - return +/obj/item/assembly/process_cooldown() + cooldown-- + if(cooldown <= 0) + return FALSE + spawn(10) + process_cooldown() + return TRUE - process_cooldown() - cooldown-- - if(cooldown <= 0) return 0 - spawn(10) - process_cooldown() - return 1 +/obj/item/assembly/Destroy() + if(istype(loc, /obj/item/assembly_holder) || istype(holder)) + var/obj/item/assembly_holder/A = loc + if(A.a_left == src) + A.a_left = null + else if(A.a_right == src) + A.a_right = null + holder = null + return ..() - Destroy() - if(istype(src.loc, /obj/item/assembly_holder) || istype(holder)) - var/obj/item/assembly_holder/A = src.loc - if(A.a_left == src) - A.a_left = null - else if(A.a_right == src) - A.a_right = null - src.holder = null - return ..() +/obj/item/assembly/pulsed(radio = FALSE) + if(holder && (wires & WIRE_RECEIVE)) + activate() + if(radio && (wires & WIRE_RADIO_RECEIVE)) + activate() + return TRUE - pulsed(var/radio = 0) - if(holder && (wires & WIRE_RECEIVE)) - activate() - if(radio && (wires & WIRE_RADIO_RECEIVE)) - activate() - return 1 +/obj/item/assembly/pulse(radio = FALSE) + if(holder && (wires & WIRE_PULSE)) + holder.process_activation(src, 1, 0) + if(holder && (wires & WIRE_PULSE_SPECIAL)) + holder.process_activation(src, 0, 1) + if(istype(loc, /obj/item/grenade)) // This is a hack. Todo: Manage this better -Sayu + var/obj/item/grenade/G = loc + G.prime() // Adios, muchachos + return TRUE +/obj/item/assembly/activate() + if(!secured || cooldown > 0) + return FALSE + cooldown = 2 + spawn(10) + process_cooldown() + return TRUE - pulse(var/radio = 0) - if(holder && (wires & WIRE_PULSE)) - holder.process_activation(src, 1, 0) - if(holder && (wires & WIRE_PULSE_SPECIAL)) - holder.process_activation(src, 0, 1) -// if(connected && (wires & WIRE_PULSE)) -// connected.Pulse(src) -// if(radio && (wires & WIRE_RADIO_PULSE)) - //Not sure what goes here quite yet send signal? +/obj/item/assembly/toggle_secure() + secured = !secured + update_icon() + return secured - if(istype(loc,/obj/item/grenade)) // This is a hack. Todo: Manage this better -Sayu - var/obj/item/grenade/G = loc - G.prime() // Adios, muchachos +/obj/item/assembly/attach_assembly(obj/item/assembly/A, mob/user) + holder = new /obj/item/assembly_holder(get_turf(src)) + if(holder.attach(A, src, user)) + to_chat(user, "You attach [A] to [src]!") + return TRUE + return FALSE - - return 1 - - - activate() - if(!secured || (cooldown > 0)) return 0 - cooldown = 2 - spawn(10) - process_cooldown() - return 1 - - - toggle_secure() - secured = !secured - update_icon() - return secured - - - attach_assembly(var/obj/item/assembly/A, var/mob/user) - holder = new/obj/item/assembly_holder(get_turf(src)) - if(holder.attach(A,src,user)) - to_chat(user, "You attach \the [A] to \the [src]!") - return 1 - return 0 - - - attackby(obj/item/W as obj, mob/user as mob, params) - if(isassembly(W)) - var/obj/item/assembly/A = W - if((!A.secured) && (!secured)) - attach_assembly(A,user) - return - if(istype(W, /obj/item/screwdriver)) - if(toggle_secure()) - to_chat(user, "\The [src] is ready!") - else - to_chat(user, "\The [src] can now be attached!") +/obj/item/assembly/attackby(obj/item/W, mob/user, params) + if(isassembly(W)) + var/obj/item/assembly/A = W + if(!A.secured && !secured) + attach_assembly(A, user) return - ..() + if(isscrewdriver(W)) + if(toggle_secure()) + to_chat(user, "[src] is ready!") + else + to_chat(user, "[src] can now be attached!") return + ..() +/obj/item/assembly/process() + processing_objects.Remove(src) - process() - processing_objects.Remove(src) +/obj/item/assembly/examine(mob/user) + ..() + if(in_range(src, user) || loc == user) + if(secured) + to_chat(user, "[src] is ready!") + else + to_chat(user, "[src] can be attached!") + +/obj/item/assembly/attack_self(mob/user) + if(!user) return + user.set_machine(src) + interact(user) + return TRUE - - examine(mob/user) - ..(user) - if((in_range(src, user) || loc == user)) - if(secured) - to_chat(user, "\The [src] is ready!") - else - to_chat(user, "\The [src] can be attached!") - - - attack_self(mob/user as mob) - if(!user) return 0 - user.set_machine(src) - interact(user) - return 1 - - - interact(mob/user as mob) - return //HTML MENU FOR WIRES GOES HERE - -/* - var/small_icon_state = null//If this obj will go inside the assembly use this for icons - var/list/small_icon_state_overlays = null//Same here - var/obj/holder = null - var/cooldown = 0//To prevent spam - - proc - Activate()//Called when this assembly is pulsed by another one - Process_cooldown()//Call this via spawn(10) to have it count down the cooldown var - Attach_Holder(var/obj/H, var/mob/user)//Called when an assembly holder attempts to attach, sets src's loc in here - - - Activate() - if(cooldown > 0) - return 0 - cooldown = 2 - spawn(10) - Process_cooldown() - //Rest of code here - return 0 - - - Process_cooldown() - cooldown-- - if(cooldown <= 0) return 0 - spawn(10) - Process_cooldown() - return 1 - - - Attach_Holder(var/obj/H, var/mob/user) - if(!H) return 0 - if(!H.IsAssemblyHolder()) return 0 - //Remember to have it set its loc somewhere in here - - -*/ +/obj/item/assembly/interact(mob/user) + return \ No newline at end of file diff --git a/code/modules/assembly/bomb.dm b/code/modules/assembly/bomb.dm index 763152cc5cf..25f9f6fe285 100644 --- a/code/modules/assembly/bomb.dm +++ b/code/modules/assembly/bomb.dm @@ -24,11 +24,11 @@ overlays += bombassembly.overlays overlays += "bomb_assembly" -/obj/item/onetankbomb/attackby(obj/item/W as obj, mob/user as mob, params) +/obj/item/onetankbomb/attackby(obj/item/W, mob/user, params) if(istype(W, /obj/item/analyzer)) bombtank.attackby(W, user, params) return - if(istype(W, /obj/item/wrench) && !status) //This is basically bomb assembly code inverted. apparently it works. + if(iswrench(W) && !status) //This is basically bomb assembly code inverted. apparently it works. to_chat(user, "You disassemble [src].") @@ -42,21 +42,23 @@ qdel(src) return - if((istype(W, /obj/item/weldingtool) && W:welding)) - if(!status) - status = 1 - investigate_log("[key_name(user)] welded a single tank bomb. Temperature: [bombtank.air_contents.temperature-T0C]", INVESTIGATE_BOMB) - msg_admin_attack("[key_name_admin(user)] welded a single tank bomb. Temperature: [bombtank.air_contents.temperature-T0C]", ATKLOG_FEW) - log_game("[key_name(user)] welded a single tank bomb. Temperature: [bombtank.air_contents.temperature - T0C]") - to_chat(user, "A pressure hole has been bored to [bombtank] valve. \The [bombtank] can now be ignited.") - else - status = 0 - investigate_log("[key_name(user)] unwelded a single tank bomb. Temperature: [bombtank.air_contents.temperature-T0C]", INVESTIGATE_BOMB) - to_chat(user, "The hole has been closed.") + if(iswelder(W)) + var/obj/item/weldingtool/WT = W + if(WT.welding) + if(!status) + status = TRUE + investigate_log("[key_name(user)] welded a single tank bomb. Temperature: [bombtank.air_contents.temperature-T0C]", INVESTIGATE_BOMB) + msg_admin_attack("[key_name_admin(user)] welded a single tank bomb. Temperature: [bombtank.air_contents.temperature-T0C]", ATKLOG_FEW) + log_game("[key_name(user)] welded a single tank bomb. Temperature: [bombtank.air_contents.temperature - T0C]") + to_chat(user, "A pressure hole has been bored to [bombtank] valve. [bombtank] can now be ignited.") + else + status = FALSE + investigate_log("[key_name(user)] unwelded a single tank bomb. Temperature: [bombtank.air_contents.temperature-T0C]", INVESTIGATE_BOMB) + to_chat(user, "The hole has been closed.") add_fingerprint(user) ..() -/obj/item/onetankbomb/attack_self(mob/user as mob) //pressing the bomb accesses its assembly +/obj/item/onetankbomb/attack_self(mob/user) //pressing the bomb accesses its assembly bombassembly.attack_self(user, 1) add_fingerprint(user) return @@ -71,23 +73,23 @@ else bombtank.release() -/obj/item/onetankbomb/HasProximity(atom/movable/AM as mob|obj) +/obj/item/onetankbomb/HasProximity(atom/movable/AM) if(bombassembly) bombassembly.HasProximity(AM) -/obj/item/onetankbomb/Crossed(atom/movable/AM as mob|obj) //for mousetraps +/obj/item/onetankbomb/Crossed(atom/movable/AM) //for mousetraps if(bombassembly) bombassembly.Crossed(AM) -/obj/item/onetankbomb/on_found(mob/finder as mob) //for mousetraps +/obj/item/onetankbomb/on_found(mob/finder) //for mousetraps if(bombassembly) bombassembly.on_found(finder) -/obj/item/onetankbomb/hear_talk(mob/living/M as mob, msg) +/obj/item/onetankbomb/hear_talk(mob/living/M, msg) if(bombassembly) bombassembly.hear_talk(M, msg) -/obj/item/onetankbomb/hear_message(mob/living/M as mob, msg) +/obj/item/onetankbomb/hear_message(mob/living/M, msg) if(bombassembly) bombassembly.hear_message(M, msg) diff --git a/code/modules/assembly/health.dm b/code/modules/assembly/health.dm index aac2c922802..853733784fa 100644 --- a/code/modules/assembly/health.dm +++ b/code/modules/assembly/health.dm @@ -4,31 +4,32 @@ icon_state = "health" materials = list(MAT_METAL=800, MAT_GLASS=200) origin_tech = "magnets=1;biotech=1" - secured = 0 + secured = FALSE - var/scanning = 0 + var/scanning = FALSE var/health_scan var/alarm_health = 0 /obj/item/assembly/health/activate() - if(!..()) return 0//Cooldown check + if(!..()) + return FALSE//Cooldown check toggle_scan() - return 0 + return FALSE /obj/item/assembly/health/toggle_secure() secured = !secured if(secured && scanning) processing_objects.Add(src) else - scanning = 0 + scanning = FALSE processing_objects.Remove(src) update_icon() return secured -/obj/item/assembly/health/attackby(obj/item/W as obj, mob/user as mob) - if(istype(W, /obj/item/multitool)) +/obj/item/assembly/health/attackby(obj/item/W, mob/user) + if(ismultitool(W)) if(alarm_health == 0) alarm_health = -90 user.show_message("You toggle [src] to \"detect death\" mode.") @@ -61,7 +62,8 @@ return /obj/item/assembly/health/proc/toggle_scan() - if(!secured) return 0 + if(!secured) + return FALSE scanning = !scanning if(scanning) processing_objects.Add(src) @@ -69,10 +71,10 @@ processing_objects.Remove(src) return -/obj/item/assembly/health/interact(mob/user as mob)//TODO: Change this to the wires thingy +/obj/item/assembly/health/interact(mob/user)//TODO: Change this to the wires thingy if(!secured) user.show_message("The [name] is unsecured!") - return 0 + return FALSE var/dat = text("Health Sensor [scanning?"On":"Off"]") if(scanning && health_scan) dat += "
Health: [health_scan]" diff --git a/code/modules/assembly/holder.dm b/code/modules/assembly/holder.dm index e7c7ddbd9cb..19683743b3e 100644 --- a/code/modules/assembly/holder.dm +++ b/code/modules/assembly/holder.dm @@ -9,204 +9,203 @@ throw_speed = 3 throw_range = 10 - var/secured = 0 + var/secured = FALSE var/obj/item/assembly/a_left = null var/obj/item/assembly/a_right = null - proc/attach(var/obj/item/D, var/obj/item/D2, var/mob/user) - return +/obj/item/assembly_holder/proc/attach(obj/item/D, obj/item/D2, mob/user) + return - proc/process_activation(var/obj/item/D) - return +/obj/item/assembly_holder/proc/process_activation(var/obj/item/D) + return +/obj/item/assembly_holder/IsAssemblyHolder() + return TRUE +/obj/item/assembly_holder/Destroy() + if(a_left) + a_left.holder = null + if(a_right) + a_right.holder = null + return ..() - IsAssemblyHolder() - return 1 - - Destroy() - if(a_left) - a_left.holder = null - if(a_right) - a_right.holder = null - return ..() - - attach(var/obj/item/D, var/obj/item/D2, var/mob/user) - if((!D)||(!D2)) return 0 - if((!isassembly(D))||(!isassembly(D2))) return 0 - if((D:secured)||(D2:secured)) return 0 - if(!D.remove_item_from_storage(src)) - if(user) - user.remove_from_mob(D) - D.loc = src - if(!D2.remove_item_from_storage(src)) - if(user) - user.remove_from_mob(D2) - D2.loc = src - D:holder = src - D2:holder = src - a_left = D - a_right = D2 - name = "[D.name]-[D2.name] assembly" - update_icon() - return 1 - - +/obj/item/assembly_holder/attach(obj/item/D, obj/item/D2, mob/user) + if(!D || !D2) + return FALSE + if(!isassembly(D) || !isassembly(D2)) + return FALSE + var/obj/item/assembly/A1 = D + var/obj/item/assembly/A2 = D2 + if(A1.secured || A2.secured) + return FALSE + if(!A1.remove_item_from_storage(src)) + if(user) + user.remove_from_mob(A1) + A1.loc = src + if(!A2.remove_item_from_storage(src)) + if(user) + user.remove_from_mob(A2) + A2.loc = src + A1.holder = src + A2.holder = src + a_left = A1 + a_right = A2 + name = "[A1.name]-[A2.name] assembly" update_icon() - overlays.Cut() - if(a_left) - overlays += "[a_left.icon_state]_left" - for(var/O in a_left.attached_overlays) - overlays += "[O]_l" - if(a_right) - src.overlays += "[a_right.icon_state]_right" - for(var/O in a_right.attached_overlays) - overlays += "[O]_r" - if(master) - master.update_icon() + return TRUE - examine(mob/user) - ..(user) - if((in_range(src, user) || src.loc == user)) - if(src.secured) - to_chat(user, "\The [src] is ready!") - else - to_chat(user, "\The [src] can be attached!") +/obj/item/assembly_holder/update_icon() + overlays.Cut() + if(a_left) + overlays += "[a_left.icon_state]_left" + for(var/O in a_left.attached_overlays) + overlays += "[O]_l" + if(a_right) + overlays += "[a_right.icon_state]_right" + for(var/O in a_right.attached_overlays) + overlays += "[O]_r" + if(master) + master.update_icon() - HasProximity(atom/movable/AM as mob|obj) - if(a_left) - a_left.HasProximity(AM) - if(a_right) - a_right.HasProximity(AM) +/obj/item/assembly_holder/examine(mob/user) + ..(user) + if(in_range(src, user) || loc == user) + if(secured) + to_chat(user, "[src] is ready!") + else + to_chat(user, "[src] can be attached!") - Crossed(atom/movable/AM as mob|obj) - if(a_left) - a_left.Crossed(AM) - if(a_right) - a_right.Crossed(AM) - - on_found(mob/finder as mob) - if(a_left) - a_left.on_found(finder) - if(a_right) - a_right.on_found(finder) +/obj/item/assembly_holder/HasProximity(atom/movable/AM) + if(a_left) + a_left.HasProximity(AM) + if(a_right) + a_right.HasProximity(AM) - hear_talk(mob/living/M as mob, msg) - if(a_left) - a_left.hear_talk(M, msg) - if(a_right) - a_right.hear_talk(M, msg) +/obj/item/assembly_holder/Crossed(atom/movable/AM) + if(a_left) + a_left.Crossed(AM) + if(a_right) + a_right.Crossed(AM) - hear_message(mob/living/M as mob, msg) - if(a_left) - a_left.hear_message(M, msg) - if(a_right) - a_right.hear_message(M, msg) +/obj/item/assembly_holder/on_found(mob/finder) + if(a_left) + a_left.on_found(finder) + if(a_right) + a_right.on_found(finder) - proc/process_movement() // infrared beams and prox sensors - if(a_left && a_right) - a_left.holder_movement() - a_right.holder_movement() - Move() - ..() - process_movement() +/obj/item/assembly_holder/hear_talk(mob/living/M, msg) + if(a_left) + a_left.hear_talk(M, msg) + if(a_right) + a_right.hear_talk(M, msg) + +/obj/item/assembly_holder/hear_message(mob/living/M, msg) + if(a_left) + a_left.hear_message(M, msg) + if(a_right) + a_right.hear_message(M, msg) + +/obj/item/assembly_holder/proc/process_movement() // infrared beams and prox sensors + if(a_left && a_right) + a_left.holder_movement() + a_right.holder_movement() + +/obj/item/assembly_holder/Move() + ..() + process_movement() + return + +/obj/item/assembly_holder/pickup() + ..() + process_movement() + +/obj/item/assembly_holder/Bump() + ..() + process_movement() + +/obj/item/assembly_holder/throw_impact() // called when a throw stops + ..() + process_movement() + +/obj/item/assembly_holder/attack_hand()//Perhapse this should be a holder_pickup proc instead, can add if needbe I guess + if(a_left && a_right) + a_left.holder_movement() + a_right.holder_movement() + ..() + return + +/obj/item/assembly_holder/attackby(obj/item/W, mob/user, params) + if(isscrewdriver(W)) + if(!a_left || !a_right) + to_chat(user, "BUG:Assembly part missing, please report this!") + return + a_left.toggle_secure() + a_right.toggle_secure() + secured = !secured + if(secured) + to_chat(user, "[src] is ready!") + else + to_chat(user, "[src] can now be taken apart!") + update_icon() return - - pickup() + else ..() - process_movement() - - Bump() - ..() - process_movement() - - throw_impact() // called when a throw stops - ..() - process_movement() - - attack_hand()//Perhapse this should be a holder_pickup proc instead, can add if needbe I guess - if(a_left && a_right) - a_left.holder_movement() - a_right.holder_movement() - ..() - return + return - attackby(obj/item/W as obj, mob/user as mob, params) - if(istype(W, /obj/item/screwdriver)) - if(!a_left || !a_right) - to_chat(user, "BUG:Assembly part missing, please report this!") - return - a_left.toggle_secure() - a_right.toggle_secure() - secured = !secured - if(secured) - to_chat(user, "\The [src] is ready!") - else - to_chat(user, "\The [src] can now be taken apart!") - update_icon() +/obj/item/assembly_holder/attack_self(mob/user) + add_fingerprint(user) + if(secured) + if(!a_left || !a_right) + to_chat(user, "Assembly part missing!") + return + if(istype(a_left, a_right.type))//If they are the same type it causes issues due to window code + switch(alert("Which side would you like to use?",,"Left","Right")) + if("Left") + a_left.attack_self(user) + if("Right") + a_right.attack_self(user) return else - ..() - return + a_left.attack_self(user) + a_right.attack_self(user) + else + var/turf/T = get_turf(src) + if(!T) + return FALSE + if(a_left) + a_left.holder = null + a_left.loc = T + if(a_right) + a_right.holder = null + a_right.loc = T + qdel(src) - attack_self(mob/user as mob) - src.add_fingerprint(user) - if(src.secured) - if(!a_left || !a_right) - to_chat(user, "Assembly part missing!") - return - if(istype(a_left,a_right.type))//If they are the same type it causes issues due to window code - switch(alert("Which side would you like to use?",,"Left","Right")) - if("Left") a_left.attack_self(user) - if("Right") a_right.attack_self(user) - return - else - a_left.attack_self(user) - a_right.attack_self(user) - else - var/turf/T = get_turf(src) - if(!T) return 0 - if(a_left) - a_left:holder = null - a_left.loc = T - if(a_right) - a_right:holder = null - a_right.loc = T - spawn(0) +/obj/item/assembly_holder/process_activation(obj/D, normal = TRUE, special = TRUE) + if(!D) + return FALSE + if(normal && a_right && a_left) + if(a_right != D) + a_right.pulsed(0) + if(a_left != D) + a_left.pulsed(0) + if(master) + master.receive_signal() + return TRUE + +/obj/item/assembly_holder/ex_act(severity) + switch(severity) + if(1) + qdel(src) + if(2) + if(prob(50)) qdel(src) - return - - - process_activation(var/obj/D, var/normal = 1, var/special = 1) - if(!D) return 0 - if((normal) && (a_right) && (a_left)) - if(a_right != D) - a_right.pulsed(0) - if(a_left != D) - a_left.pulsed(0) - if(master) - master.receive_signal() - return 1 - - - ex_act(severity) - switch(severity) - if(1.0) + if(3) + if(prob(25)) qdel(src) - return - if(2.0) - if(prob(50)) - qdel(src) - return - if(3.0) - if(prob(25)) - qdel(src) - return - return diff --git a/code/modules/assembly/igniter.dm b/code/modules/assembly/igniter.dm index 785e4549a47..3bbfe65bbc0 100644 --- a/code/modules/assembly/igniter.dm +++ b/code/modules/assembly/igniter.dm @@ -17,28 +17,29 @@ /obj/item/assembly/igniter/describe() - return "The igniter is [secured?"secured.":"unsecured."]" + return "The igniter is [secured ? "secured." : "unsecured."]" /obj/item/assembly/igniter/activate() - if(!..()) return 0//Cooldown check + if(!..()) + return FALSE//Cooldown check var/turf/location = get_turf(loc) - if(location) location.hotspot_expose(1000,1000) - if(istype(src.loc,/obj/item/assembly_holder)) - if(istype(src.loc.loc, /obj/structure/reagent_dispensers/fueltank/)) - var/obj/structure/reagent_dispensers/fueltank/tank = src.loc.loc + if(location) + location.hotspot_expose(1000,1000) + if(istype(loc, /obj/item/assembly_holder)) + if(istype(loc.loc, /obj/structure/reagent_dispensers/fueltank)) + var/obj/structure/reagent_dispensers/fueltank/tank = loc.loc if(tank) tank.boom(TRUE) - if(istype(src.loc.loc, /obj/item/reagent_containers/glass/beaker/)) - var/obj/item/reagent_containers/glass/beaker/beakerbomb = src.loc.loc + if(istype(loc.loc, /obj/item/reagent_containers/glass/beaker)) + var/obj/item/reagent_containers/glass/beaker/beakerbomb = loc.loc if(beakerbomb) beakerbomb.heat_beaker() - sparks.start() - return 1 + return TRUE -/obj/item/assembly/igniter/attack_self(mob/user as mob) +/obj/item/assembly/igniter/attack_self(mob/user) activate() add_fingerprint(user) return diff --git a/code/modules/assembly/infrared.dm b/code/modules/assembly/infrared.dm index c16537b46a0..91f8da7cc4b 100644 --- a/code/modules/assembly/infrared.dm +++ b/code/modules/assembly/infrared.dm @@ -7,10 +7,10 @@ bomb_name = "tripwire mine" - secured = 0 // toggle_secure()'ed in New() for correct adding to processing_objects, won't work otherwise + secured = FALSE // toggle_secure()'ed in New() for correct adding to processing_objects, won't work otherwise dir = EAST - var/on = 0 - var/visible = 1 + var/on = FALSE + var/visible = TRUE var/obj/effect/beam/i_beam/first = null var/obj/effect/beam/i_beam/last = null var/max_nesting_level = 10 @@ -33,17 +33,18 @@ to_chat(user, describe()) /obj/item/assembly/infra/activate() - if(!..()) return 0//Cooldown check + if(!..()) + return FALSE//Cooldown check on = !on update_icon() - return 1 + return TRUE /obj/item/assembly/infra/toggle_secure() secured = !secured if(secured) processing_objects.Add(src) else - on = 0 + on = FALSE if(first) qdel(first) processing_objects.Remove(src) @@ -94,7 +95,7 @@ first = I step(I, I.dir) if(first) - I.density = 0 + I.density = FALSE I.vis_spread(visible) I.limit = 8 I.process() @@ -110,9 +111,10 @@ qdel(first) /obj/item/assembly/infra/holder_movement() - if(!holder) return 0 + if(!holder) + return FALSE qdel(first) - return 1 + return TRUE /obj/item/assembly/infra/equipped(var/mob/user, var/slot) qdel(first) @@ -124,7 +126,7 @@ /obj/item/assembly/infra/proc/trigger_beam() if(!secured || !on || cooldown > 0) - return 0 + return FALSE pulse(0) audible_message("[bicon(src)] *beep* *beep*", null, 3) if(first) @@ -133,7 +135,7 @@ spawn(10) process_cooldown() -/obj/item/assembly/infra/interact(mob/user as mob)//TODO: change this this to the wire control panel +/obj/item/assembly/infra/interact(mob/user)//TODO: change this this to the wire control panel if(!secured) return user.set_machine(src) var/dat = {"Infrared Laser @@ -196,7 +198,7 @@ arm() /obj/item/assembly/infra/armed/stealth - visible = 0 + visible = FALSE /***************************IBeam*********************************/ @@ -209,11 +211,11 @@ var/obj/effect/beam/i_beam/previous = null var/obj/item/assembly/infra/master = null var/limit = null - var/visible = 0.0 + var/visible = FALSE var/left = null var/life_cycles = 0 var/life_cap = 20 - anchored = 1.0 + anchored = TRUE pass_flags = PASSTABLE | PASSGLASS | PASSGRILLE @@ -241,9 +243,9 @@ if(!(visible)) invisibility = 101 else - invisibility = 0 + invisibility = FALSE else - invisibility = 0 + invisibility = FALSE if(!next && (limit > 0)) var/obj/effect/beam/i_beam/I = new /obj/effect/beam/i_beam(loc) @@ -255,7 +257,7 @@ next = I step(I, I.dir) if(next) - I.density = 0 + I.density = FALSE I.vis_spread(visible) I.limit = limit - 1 master.last = I @@ -267,7 +269,7 @@ /obj/effect/beam/i_beam/Bumped() hit() -/obj/effect/beam/i_beam/Crossed(atom/movable/AM as mob|obj) +/obj/effect/beam/i_beam/Crossed(atom/movable/AM) if(!isobj(AM) && !isliving(AM)) return if(istype(AM, /obj/effect)) diff --git a/code/modules/assembly/mousetrap.dm b/code/modules/assembly/mousetrap.dm index 011e46e7990..09e049b3921 100644 --- a/code/modules/assembly/mousetrap.dm +++ b/code/modules/assembly/mousetrap.dm @@ -4,128 +4,122 @@ icon_state = "mousetrap" materials = list(MAT_METAL=100) origin_tech = "combat=1;materials=2;engineering=1" - var/armed = 0 + var/armed = FALSE bomb_name = "contact mine" - examine(mob/user) - ..(user) - if(armed) - to_chat(user, "It looks like it's armed.") +/obj/item/assembly/mousetrap/examine(mob/user) + ..(user) + if(armed) + to_chat(user, "It looks like it's armed.") - activate() - if(..()) - armed = !armed - if(!armed) - if(ishuman(usr)) - var/mob/living/carbon/human/user = usr - if(((user.getBrainLoss() >= 60 || (CLUMSY in user.mutations)) && prob(50))) - to_chat(user, "Your hand slips, setting off the trigger.") - pulse(0) - update_icon() - if(usr) - playsound(usr.loc, 'sound/weapons/handcuffs.ogg', 30, 1, -3) - - describe() - return "The pressure switch is [armed?"primed":"safe"]." - - update_icon() - if(armed) - icon_state = "mousetraparmed" - else - icon_state = "mousetrap" - if(holder) - holder.update_icon() - - proc/triggered(mob/target as mob, var/type = "feet") - if(!armed) - return - var/obj/item/organ/external/affecting = null - if(ishuman(target)) - var/mob/living/carbon/human/H = target - switch(type) - if("feet") - if(!H.shoes) - affecting = H.get_organ(pick("l_leg", "r_leg")) - H.Weaken(3) - if("l_hand", "r_hand") - if(!H.gloves) - affecting = H.get_organ(type) - H.Stun(3) - if(affecting) - affecting.receive_damage(1, 0) - else if(ismouse(target)) - var/mob/living/simple_animal/mouse/M = target - visible_message("SPLAT!") - M.splat() - playsound(src.loc, 'sound/effects/snap.ogg', 50, 1) - layer = MOB_LAYER - 0.2 - armed = 0 - update_icon() - pulse(0) - - - attack_self(mob/living/user as mob) - if(!armed) - to_chat(user, "You arm [src].") - else - if(((user.getBrainLoss() >= 60 || (CLUMSY in user.mutations)) && prob(50))) - var/which_hand = "l_hand" - if(!user.hand) - which_hand = "r_hand" - triggered(user, which_hand) - user.visible_message("[user] accidentally sets off [src], breaking [user.p_their()] fingers.", \ - "You accidentally trigger [src]!") - return - to_chat(user, "You disarm [src].") +/obj/item/assembly/mousetrap/activate() + if(..()) armed = !armed - update_icon() - playsound(user.loc, 'sound/weapons/handcuffs.ogg', 30, 1, -3) - - - attack_hand(mob/living/user as mob) - if(armed) - if(((user.getBrainLoss() >= 60 || CLUMSY in user.mutations)) && prob(50)) - var/which_hand = "l_hand" - if(!user.hand) - which_hand = "r_hand" - triggered(user, which_hand) - user.visible_message("[user] accidentally sets off [src], breaking [user.p_their()] fingers.", \ - "You accidentally trigger [src]!") - return - ..() - - - Crossed(var/atom/movable/AM as mob|obj) - if(armed) - if(ishuman(AM)) - var/mob/living/carbon/H = AM - if(H.m_intent == MOVE_INTENT_RUN) - triggered(H) - H.visible_message("[H] accidentally steps on [src].", \ - "You accidentally step on [src]") - else if(ismouse(AM)) - triggered(AM) - else if(AM.density) // For mousetrap grenades, set off by anything heavy - triggered(AM) - ..() - - - on_found(mob/finder as mob) - if(armed) - finder.visible_message("[finder] accidentally sets off [src], breaking [finder.p_their()] fingers.", \ - "You accidentally trigger [src]!") - triggered(finder, finder.hand ? "l_hand" : "r_hand") - return 1 //end the search! - return 0 - - - hitby(A as mob|obj) if(!armed) - return ..() - visible_message("[src] is triggered by [A].") - triggered(null) + if(ishuman(usr)) + var/mob/living/carbon/human/user = usr + if((user.getBrainLoss() >= 60 || (CLUMSY in user.mutations)) && prob(50)) + to_chat(user, "Your hand slips, setting off the trigger.") + pulse(0) + update_icon() + if(usr) + playsound(usr.loc, 'sound/weapons/handcuffs.ogg', 30, 1, -3) +/obj/item/assembly/mousetrap/describe() + return "The pressure switch is [armed ? "primed" : "safe"]." + +/obj/item/assembly/mousetrap/update_icon() + if(armed) + icon_state = "mousetraparmed" + else + icon_state = "mousetrap" + if(holder) + holder.update_icon() + +/obj/item/assembly/mousetrap/proc/triggered(mob/target, var/type = "feet") + if(!armed) + return + var/obj/item/organ/external/affecting = null + if(ishuman(target)) + var/mob/living/carbon/human/H = target + switch(type) + if("feet") + if(!H.shoes) + affecting = H.get_organ(pick("l_leg", "r_leg")) + H.Weaken(3) + if("l_hand", "r_hand") + if(!H.gloves) + affecting = H.get_organ(type) + H.Stun(3) + if(affecting) + affecting.receive_damage(1, 0) + else if(ismouse(target)) + var/mob/living/simple_animal/mouse/M = target + visible_message("SPLAT!") + M.splat() + playsound(loc, 'sound/effects/snap.ogg', 50, 1) + layer = MOB_LAYER - 0.2 + armed = FALSE + update_icon() + pulse(0) + +/obj/item/assembly/mousetrap/attack_self(mob/living/user) + if(!armed) + to_chat(user, "You arm [src].") + else + if((user.getBrainLoss() >= 60 || (CLUMSY in user.mutations)) && prob(50)) + var/which_hand = "l_hand" + if(!user.hand) + which_hand = "r_hand" + triggered(user, which_hand) + user.visible_message("[user] accidentally sets off [src], breaking [user.p_their()] fingers.", \ + "You accidentally trigger [src]!") + return + to_chat(user, "You disarm [src].") + armed = !armed + update_icon() + playsound(user.loc, 'sound/weapons/handcuffs.ogg', 30, 1, -3) + +/obj/item/assembly/mousetrap/attack_hand(mob/living/user) + if(armed) + if((user.getBrainLoss() >= 60 || CLUMSY in user.mutations) && prob(50)) + var/which_hand = "l_hand" + if(!user.hand) + which_hand = "r_hand" + triggered(user, which_hand) + user.visible_message("[user] accidentally sets off [src], breaking [user.p_their()] fingers.", \ + "You accidentally trigger [src]!") + return + ..() + +/obj/item/assembly/mousetrap/Crossed(atom/movable/AM) + if(armed) + if(ishuman(AM)) + var/mob/living/carbon/H = AM + if(H.m_intent == MOVE_INTENT_RUN) + triggered(H) + H.visible_message("[H] accidentally steps on [src].", \ + "You accidentally step on [src]") + else if(ismouse(AM)) + triggered(AM) + else if(AM.density) // For mousetrap grenades, set off by anything heavy + triggered(AM) + ..() + +/obj/item/assembly/mousetrap/on_found(mob/finder) + if(armed) + finder.visible_message("[finder] accidentally sets off [src], breaking [finder.p_their()] fingers.", \ + "You accidentally trigger [src]!") + triggered(finder, finder.hand ? "l_hand" : "r_hand") + return TRUE //end the search! + return FALSE + +/obj/item/assembly/mousetrap/hitby(atom/movable/A) + if(!armed) + return ..() + visible_message("[src] is triggered by [A].") + triggered(null) /obj/item/assembly/mousetrap/armed icon_state = "mousetraparmed" diff --git a/code/modules/assembly/proximity.dm b/code/modules/assembly/proximity.dm index fb159abf5bb..80e486170c2 100644 --- a/code/modules/assembly/proximity.dm +++ b/code/modules/assembly/proximity.dm @@ -2,7 +2,7 @@ name = "proximity sensor" desc = "Used for scanning and alerting when someone enters a certain proximity." icon_state = "prox" - materials = list(MAT_METAL=800, MAT_GLASS=200) + materials = list(MAT_METAL = 800, MAT_GLASS = 200) origin_tech = "magnets=1;engineering=1" secured = 0 @@ -13,142 +13,122 @@ var/timing = 0 var/time = 10 - proc - toggle_scan() - sense() - - describe() - if(timing) - return "The proximity sensor is arming." - return "The proximity sensor is [scanning?"armed":"disarmed"]." - - activate() - if(!..()) return 0//Cooldown check - timing = !timing - update_icon() - return 0 - - - toggle_secure() - secured = !secured - if(secured) - processing_objects.Add(src) - else - scanning = 0 - timing = 0 - processing_objects.Remove(src) - update_icon() - return secured - - - HasProximity(atom/movable/AM as mob|obj) - if(!isobj(AM) && !isliving(AM)) - return - if(istype(AM, /obj/effect)) return - if(AM.move_speed < 12) sense() - return - - - sense() - if((!secured)||(!scanning)||(cooldown > 0)) return 0 - pulse(0) - visible_message("[bicon(src)] *beep* *beep*", "*beep* *beep*") - cooldown = 2 - spawn(10) - process_cooldown() - return - - - process() - if(timing && (time >= 0)) - time-- - if(timing && time <= 0) - timing = 0 - toggle_scan() - time = 10 - return - - - dropped() - ..() - spawn(0) - sense() - return - return - - - toggle_scan() - if(!secured) return 0 - scanning = !scanning - update_icon() - return - +/obj/item/assembly/prox_sensor/describe() + if(timing) + return "The proximity sensor is arming." + return "The proximity sensor is [scanning ? "armed" : "disarmed"]." +/obj/item/assembly/prox_sensor/activate() + if(!..()) + return FALSE //Cooldown check + timing = !timing update_icon() - overlays.Cut() - attached_overlays = list() - if(timing) - overlays += "prox_timing" - attached_overlays += "prox_timing" - if(scanning) - overlays += "prox_scanning" - attached_overlays += "prox_scanning" - if(holder) - holder.update_icon() + return FALSE + +/obj/item/assembly/prox_sensor/toggle_secure() + secured = !secured + if(secured) + processing_objects.Add(src) + else + scanning = 0 + timing = 0 + processing_objects.Remove(src) + update_icon() + return secured + +/obj/item/assembly/prox_sensor/HasProximity(atom/movable/AM) + if(!isobj(AM) && !isliving(AM)) return + if(istype(AM, /obj/effect)) + return + if(AM.move_speed < 12) + sense() +/obj/item/assembly/prox_sensor/proc/sense() + if(!secured || !scanning || cooldown > 0) + return FALSE + pulse(0) + visible_message("[bicon(src)] *beep* *beep*", "*beep* *beep*") + cooldown = 2 + spawn(10) + process_cooldown() - Move() - ..() +/obj/item/assembly/prox_sensor/process() + if(timing && (time >= 0)) + time-- + if(timing && time <= 0) + timing = 0 + toggle_scan() + time = 10 + +/obj/item/assembly/prox_sensor/dropped() + ..() + spawn(0) sense() return - holder_movement() - sense() +/obj/item/assembly/prox_sensor/proc/toggle_scan() + if(!secured) + return FALSE + scanning = !scanning + update_icon() +/obj/item/assembly/prox_sensor/update_icon() + overlays.Cut() + attached_overlays = list() + if(timing) + overlays += "prox_timing" + attached_overlays += "prox_timing" + if(scanning) + overlays += "prox_scanning" + attached_overlays += "prox_scanning" + if(holder) + holder.update_icon() - interact(mob/user as mob)//TODO: Change this to the wires thingy - if(!secured) - user.show_message("The [name] is unsecured!") - return 0 - var/second = time % 60 - var/minute = (time - second) / 60 - var/dat = text("Proximity Sensor\n[] []:[]\n- - + +\n", (timing ? "Arming" : "Not Arming"), minute, second) - dat += "
[scanning?"Armed":"Unarmed"] (Movement sensor active when armed!)" - dat += "

Refresh" - dat += "

Close" - var/datum/browser/popup = new(user, "prox", name, 400, 400) - popup.set_content(dat) - popup.open(0) - onclose(user, "prox") +/obj/item/assembly/prox_sensor/Move() + ..() + sense() + +/obj/item/assembly/prox_sensor/holder_movement() + sense() + +/obj/item/assembly/prox_sensor/interact(mob/user)//TODO: Change this to the wires thingy + if(!secured) + user.show_message("The [name] is unsecured!") + return FALSE + var/second = time % 60 + var/minute = (time - second) / 60 + var/dat = text("Proximity Sensor\n[] []:[]\n- - + +\n", (timing ? "Arming" : "Not Arming"), minute, second) + dat += "
[scanning?"Armed":"Unarmed"] (Movement sensor active when armed!)" + dat += "

Refresh" + dat += "

Close" + var/datum/browser/popup = new(user, "prox", name, 400, 400) + popup.set_content(dat) + popup.open(0) + onclose(user, "prox") + +/obj/item/assembly/prox_sensor/Topic(href, href_list) + ..() + if(!usr.canmove || usr.stat || usr.restrained() || !in_range(loc, usr)) + usr << browse(null, "window=prox") + onclose(usr, "prox") return + if(href_list["scanning"]) + toggle_scan() - Topic(href, href_list) - ..() - if(!usr.canmove || usr.stat || usr.restrained() || !in_range(loc, usr)) - usr << browse(null, "window=prox") - onclose(usr, "prox") - return - - if(href_list["scanning"]) - toggle_scan() - - if(href_list["time"]) - timing = text2num(href_list["time"]) - update_icon() - - if(href_list["tp"]) - var/tp = text2num(href_list["tp"]) - time += tp - time = min(max(round(time), 0), 600) - - if(href_list["close"]) - usr << browse(null, "window=prox") - return - - if(usr) - attack_self(usr) + if(href_list["time"]) + timing = text2num(href_list["time"]) + update_icon() + if(href_list["tp"]) + var/tp = text2num(href_list["tp"]) + time += tp + time = min(max(round(time), 0), 600) + if(href_list["close"]) + usr << browse(null, "window=prox") return + + if(usr) + attack_self(usr) \ No newline at end of file diff --git a/code/modules/assembly/signaler.dm b/code/modules/assembly/signaler.dm index 6a2019b9001..a71bbba6a59 100644 --- a/code/modules/assembly/signaler.dm +++ b/code/modules/assembly/signaler.dm @@ -8,7 +8,7 @@ wires = WIRE_RECEIVE | WIRE_PULSE | WIRE_RADIO_PULSE | WIRE_RADIO_RECEIVE secured = 1 - var/receiving = 0 + var/receiving = FALSE bomb_name = "remote-control bomb" @@ -35,28 +35,25 @@ return ..() /obj/item/assembly/signaler/describe() - return "\The [src]'s power light is [receiving?"on":"off"]" + return "[src]'s power light is [receiving ? "on" : "off"]" /obj/item/assembly/signaler/activate() - if(cooldown > 0) return 0 + if(cooldown > 0) + return FALSE cooldown = 2 spawn(10) process_cooldown() signal() - return 1 + return TRUE /obj/item/assembly/signaler/update_icon() if(holder) holder.update_icon() return -/obj/item/assembly/signaler/interact(mob/user as mob, flag1) +/obj/item/assembly/signaler/interact(mob/user, flag1) var/t1 = "-------" -// if((src.b_stat && !( flag1 ))) -// t1 = text("-------
\nGreen Wire: []
\nRed Wire: []
\nBlue Wire: []
\n", (src.wires & 4 ? "Cut Wire" : "Mend Wire"), (src.wires & 2 ? "Cut Wire" : "Mend Wire"), (src.wires & 1 ? "Cut Wire" : "Mend Wire")) -// else -// t1 = "-------" Speaker: [src.listening ? "Engaged" : "Disengaged"]
var/dat = {" "} @@ -70,14 +67,14 @@ Frequency: - - - [format_frequency(src.frequency)] + [format_frequency(frequency)] + +
Code: - - - [src.code] + [code] + +
[t1] @@ -87,8 +84,6 @@ popup.set_content(dat) popup.open(0) onclose(user, "radio") - return - /obj/item/assembly/signaler/Topic(href, href_list) ..() @@ -105,10 +100,10 @@ set_frequency(new_frequency) if(href_list["code"]) - src.code += text2num(href_list["code"]) - src.code = round(src.code) - src.code = min(100, src.code) - src.code = max(1, src.code) + code += text2num(href_list["code"]) + code = round(code) + code = min(100, code) + code = max(1, code) if(href_list["receive"]) receiving = !receiving @@ -119,10 +114,9 @@ if(usr) attack_self(usr) - return - /obj/item/assembly/signaler/proc/signal() - if(!radio_connection) return + if(!radio_connection) + return var/datum/signal/signal = new signal.source = src @@ -135,27 +129,25 @@ if(usr) lastsignalers.Add("[time] : [usr.key] used [src] @ location ([T.x],[T.y],[T.z]) : [format_frequency(frequency)]/[code]") - return - -/obj/item/assembly/signaler/pulse(var/radio = 0) - if(src.connected && src.wires) +/obj/item/assembly/signaler/pulse(var/radio = FALSE) + if(connected && wires) connected.Pulse(src) else return ..(radio) /obj/item/assembly/signaler/receive_signal(datum/signal/signal) - if( !receiving || !signal ) - return 0 + if(!receiving || !signal) + return FALSE if(signal.encryption != code) - return 0 + return FALSE - if(!(src.wires & WIRE_RADIO_RECEIVE)) return 0 + if(!(wires & WIRE_RADIO_RECEIVE)) + return FALSE pulse(1) - for(var/mob/O in hearers(1, src.loc)) + for(var/mob/O in hearers(1, loc)) O.show_message("[bicon(src)] *beep* *beep*", 3, "*beep* *beep*", 2) - return /obj/item/assembly/signaler/proc/set_frequency(new_frequency) if(!radio_controller) @@ -165,7 +157,6 @@ radio_controller.remove_object(src, frequency) frequency = new_frequency radio_connection = radio_controller.add_object(src, frequency, RADIO_CHAT) - return // Embedded signaller used in anomalies. /obj/item/assembly/signaler/anomaly @@ -173,7 +164,7 @@ desc = "The neutralized core of an anomaly. It'd probably be valuable for research." icon_state = "anomaly core" item_state = "electronic" - receiving = 1 + receiving = TRUE /obj/item/assembly/signaler/anomaly/receive_signal(datum/signal/signal) ..() diff --git a/code/modules/assembly/timer.dm b/code/modules/assembly/timer.dm index a585a689f2c..5b7eb6ca50a 100644 --- a/code/modules/assembly/timer.dm +++ b/code/modules/assembly/timer.dm @@ -5,136 +5,123 @@ materials = list(MAT_METAL=500, MAT_GLASS=50) origin_tech = "magnets=1;engineering=1" - secured = 0 + secured = FALSE bomb_name = "time bomb" - var/timing = 0 + var/timing = FALSE var/time = 10 - var/repeat = 0 + var/repeat = FALSE var/set_time = 10 - proc - timer_end() - - describe() - if(timing) - return "The timer is counting down from [time]!" - return "The timer is set for [time] seconds." - - activate() - if(!..()) return 0//Cooldown check - timing = !timing - update_icon() - return 0 - - - toggle_secure() - secured = !secured - if(secured) - processing_objects.Add(src) - else - timing = 0 - processing_objects.Remove(src) - update_icon() - return secured - - - timer_end() - if((!secured)||(cooldown > 0)) return 0 - pulse(0) - if(loc) - loc.visible_message("[bicon(src)] *beep* *beep*", "*beep* *beep*") - cooldown = 2 - spawn(10) - process_cooldown() - return - - - process() - if(timing && (time > 0)) - time -= 2 // 2 seconds per process() - if(timing && time <= 0) - timing = repeat - timer_end() - time = set_time - return - +/obj/item/assembly/timer/describe() + if(timing) + return "The timer is counting down from [time]!" + return "The timer is set for [time] seconds." +/obj/item/assembly/timer/activate() + if(!..()) + return FALSE//Cooldown check + timing = !timing update_icon() - overlays.Cut() - attached_overlays = list() - if(timing) - overlays += "timer_timing" - attached_overlays += "timer_timing" - if(holder) - holder.update_icon() + return FALSE + +/obj/item/assembly/timer/toggle_secure() + secured = !secured + if(secured) + processing_objects.Add(src) + else + timing = FALSE + processing_objects.Remove(src) + update_icon() + return secured + +/obj/item/assembly/timer/proc/timer_end() + if(!secured || cooldown > 0) + return FALSE + pulse(0) + if(loc) + loc.visible_message("[bicon(src)] *beep* *beep*", "*beep* *beep*") + cooldown = 2 + spawn(10) + process_cooldown() + +/obj/item/assembly/timer/process() + if(timing && (time > 0)) + time -= 2 // 2 seconds per process() + if(timing && time <= 0) + timing = repeat + timer_end() + time = set_time + +/obj/item/assembly/timer/update_icon() + overlays.Cut() + attached_overlays = list() + if(timing) + overlays += "timer_timing" + attached_overlays += "timer_timing" + if(holder) + holder.update_icon() + +/obj/item/assembly/timer/interact(mob/user as mob)//TODO: Have this use the wires + if(!secured) + user.show_message("The [name] is unsecured!") + return FALSE + var/second = time % 60 + var/minute = (time - second) / 60 + var/set_second = set_time % 60 + var/set_minute = (set_time - set_second) / 60 + if(second < 10) second = "0[second]" + if(set_second < 10) set_second = "0[set_second]" + + var/dat = {" + +

Timing Unit

+ [minute]:[second] [timing?"Stop":"Start"] Reset
+ Repeat: [repeat?"On":"Off"]
+ Timer set for + - - [set_minute]:[set_second] + + +
+
+

+ Refresh +

+ Close"} + var/datum/browser/popup = new(user, "timer", name, 400, 400) + popup.set_content(dat) + popup.open(0) + onclose(user, "timer") + +/obj/item/assembly/timer/Topic(href, href_list) + ..() + if(usr.incapacitated() || !in_range(loc, usr)) + usr << browse(null, "window=timer") + onclose(usr, "timer") return + if(href_list["time"]) + timing = !timing + if(timing && istype(holder, /obj/item/transfer_valve)) + message_admins("[key_name_admin(usr)] activated [src] attachment on [holder].") + investigate_log("[key_name(usr)] activated [src] attachment for [loc]", INVESTIGATE_BOMB) + log_game("[key_name(usr)] activated [src] attachment for [loc]") + update_icon() + if(href_list["reset"]) + time = set_time - interact(mob/user as mob)//TODO: Have this use the wires - if(!secured) - user.show_message("The [name] is unsecured!") - return 0 - var/second = time % 60 - var/minute = (time - second) / 60 - var/set_second = set_time % 60 - var/set_minute = (set_time - set_second) / 60 - if(second < 10) second = "0[second]" - if(set_second < 10) set_second = "0[set_second]" + if(href_list["repeat"]) + repeat = !repeat - var/dat = {" - -

Timing Unit

- [minute]:[second] [timing?"Stop":"Start"] Reset
- Repeat: [repeat?"On":"Off"]
- Timer set for - - - [set_minute]:[set_second] + + -
-
-

- Refresh -

- Close"} - var/datum/browser/popup = new(user, "timer", name, 400, 400) - popup.set_content(dat) - popup.open(0) - onclose(user, "timer") - return - - - Topic(href, href_list) - ..() - if(!usr.canmove || usr.stat || usr.restrained() || !in_range(loc, usr)) - usr << browse(null, "window=timer") - onclose(usr, "timer") - return - - if(href_list["time"]) - timing = !timing - if(timing && istype(holder, /obj/item/transfer_valve)) - message_admins("[key_name_admin(usr)] activated [src] attachment on [holder].") - investigate_log("[key_name(usr)] activated [src] attachment for [loc]", INVESTIGATE_BOMB) - log_game("[key_name(usr)] activated [src] attachment for [loc]") - update_icon() - if(href_list["reset"]) + if(href_list["tp"]) + var/tp = text2num(href_list["tp"]) + set_time += tp + set_time = min(max(round(set_time), 6), 600) + if(!timing) time = set_time - if(href_list["repeat"]) - repeat = !repeat - - if(href_list["tp"]) - var/tp = text2num(href_list["tp"]) - set_time += tp - set_time = min(max(round(set_time), 6), 600) - if(!timing) - time = set_time - - if(href_list["close"]) - usr << browse(null, "window=timer") - return - - if(usr) - attack_self(usr) - + if(href_list["close"]) + usr << browse(null, "window=timer") return + + if(usr) + attack_self(usr) diff --git a/code/modules/assembly/voice.dm b/code/modules/assembly/voice.dm index 8228e490a38..e8462884cd4 100644 --- a/code/modules/assembly/voice.dm +++ b/code/modules/assembly/voice.dm @@ -41,12 +41,13 @@ /obj/item/assembly/voice/attack_self(mob/user) - if(!user || !secured) return 0 + if(!user || !secured) + return FALSE listening = !listening var/turf/T = get_turf(src) T.visible_message("[bicon(src)] beeps, \"[listening ? "Now" : "No longer"] recording input.\"") - return 1 + return TRUE /obj/item/assembly/voice/toggle_secure() @@ -70,7 +71,7 @@ /obj/item/assembly/voice/noise/hear_talk(mob/living/M as mob, msg) return -/obj/item/assembly/voice/hear_message(mob/living/M as mob, msg) +/obj/item/assembly/voice/noise/hear_message(mob/living/M as mob, msg) pulse(0) var/turf/T = get_turf(src) //otherwise it won't work in hand T.visible_message("[bicon(src)] beeps!") \ No newline at end of file diff --git a/code/modules/atmos_automation/console.dm b/code/modules/atmos_automation/console.dm index e486898d18d..f4c3873717c 100644 --- a/code/modules/atmos_automation/console.dm +++ b/code/modules/atmos_automation/console.dm @@ -13,216 +13,216 @@ var/list/datum/automation/automations = list() - receive_signal(datum/signal/signal) - if(!signal || signal.encryption) return +/obj/machinery/computer/general_air_control/atmos_automation/receive_signal(datum/signal/signal) + if(!signal || signal.encryption) return - var/id_tag = signal.data["tag"] - if(!id_tag) - return + var/id_tag = signal.data["tag"] + if(!id_tag) + return - sensor_information[id_tag] = signal.data + sensor_information[id_tag] = signal.data - process() - if(on) - for(var/datum/automation/A in automations) - A.process() +/obj/machinery/computer/general_air_control/atmos_automation/process() + if(on) + for(var/datum/automation/A in automations) + A.process() - update_icon() +/obj/machinery/computer/general_air_control/atmos_automation/update_icon() + icon_state = initial(icon_state) + // Broken + if(stat & BROKEN) + icon_state += "b" + + // Powered + else if(stat & NOPOWER) icon_state = initial(icon_state) - // Broken - if(stat & BROKEN) - icon_state += "b" + icon_state += "0" + else if(on) + icon_state += "_active" - // Powered - else if(stat & NOPOWER) - icon_state = initial(icon_state) - icon_state += "0" - else if(on) - icon_state += "_active" +/obj/machinery/computer/general_air_control/atmos_automation/proc/request_device_refresh(device) + send_signal(list("tag"=device, "status")) - proc/request_device_refresh(var/device) - send_signal(list("tag"=device, "status")) +/obj/machinery/computer/general_air_control/atmos_automation/proc/send_signal(list/data, filter = RADIO_ATMOSIA)//filter's here so the AAC can cross communicate to things like vents, which have a different filter + var/datum/signal/signal = new + signal.transmission_method = 1 //radio signal + signal.source = src + signal.data=data + signal.data["sigtype"]="command" + signal.data["advcontrol"]=1//AAC balancing, you need to manually get up to the machine to make it listen to this + radio_connection.post_signal(src, signal, range = 8, filter = filter) - proc/send_signal(var/list/data, var/filter = RADIO_ATMOSIA)//filter's here so the AAC can cross communicate to things like vents, which have a different filter - var/datum/signal/signal = new - signal.transmission_method = 1 //radio signal - signal.source = src - signal.data=data - signal.data["sigtype"]="command" - signal.data["advcontrol"]=1//AAC balancing, you need to manually get up to the machine to make it listen to this - radio_connection.post_signal(src, signal, range = 8, filter = filter) +/obj/machinery/computer/general_air_control/atmos_automation/proc/selectValidChildFor(datum/automation/parent, mob/user, list/valid_returntypes) + var/list/choices=list() + for(var/childtype in automation_types) + var/datum/automation/A = new childtype(src) + if(A.returntype == null) + continue + if(!(A.returntype in valid_returntypes)) + continue + choices[A.name]=A + if(choices.len==0) + testing("Unable to find automations with returntype in [english_list(valid_returntypes)]!") + return 0 + var/label=input(user, "Select new automation:", "Automations", "Cancel") as null|anything in choices + if(!label) + return 0 + return choices[label] - proc/selectValidChildFor(var/datum/automation/parent, var/mob/user, var/list/valid_returntypes) - var/list/choices=list() - for(var/childtype in automation_types) - var/datum/automation/A = new childtype(src) - if(A.returntype == null) - continue - if(!(A.returntype in valid_returntypes)) - continue - choices[A.name]=A - if(choices.len==0) - testing("Unable to find automations with returntype in [english_list(valid_returntypes)]!") - return 0 - var/label=input(user, "Select new automation:", "Automations", "Cancel") as null|anything in choices - if(!label) - return 0 - return choices[label] +/obj/machinery/computer/general_air_control/atmos_automation/return_text() + var/out=..() - return_text() - var/out=..() + if(on) + out += "RUNNING" + else + out += "STOPPED" - if(on) - out += "RUNNING" - else - out += "STOPPED" + out += {" +

Automations

+

\[ + + Add + + | + + Reset All + + | + + Clear + + \]

+

\[ + + Export + + | + + Import + + \]

"} + if(automations.len==0) + out += "No automations present." + else + for(var/datum/automation/A in automations) + out += {" +
+ + [A.label] + (Reset | + ×) + + [A.GetText()] +
+ "} + return out - out += {" -

Automations

-

\[ - - Add - - | - - Reset All - - | - - Clear - - \]

-

\[ - - Export - - | - - Import - - \]

"} - if(automations.len==0) - out += "No automations present." - else +/obj/machinery/computer/general_air_control/atmos_automation/Topic(href,href_list) + if(..()) + return 1 + + if(href_list["on"]) + on = !on + updateUsrDialog() + update_icon() + return 1 + + if(href_list["add"]) + var/new_child=selectValidChildFor(null,usr,list(0)) + if(!new_child) + return 1 + automations += new_child + updateUsrDialog() + return 1 + + if(href_list["label"]) + var/datum/automation/A=locate(href_list["label"]) + if(!A) return 1 + var/nl=input(usr, "Please enter a label for this automation task.") as text|null + if(!nl) return 1 + nl = copytext(sanitize(nl), 1, 50) + A.label=nl + updateUsrDialog() + return 1 + + if(href_list["reset"]) + if(href_list["reset"]=="*") for(var/datum/automation/A in automations) - out += {" -
- - [A.label] - (Reset | - ×) - - [A.GetText()] -
- "} - return out - - Topic(href,href_list) - if(..()) - return 1 - - if(href_list["on"]) - on = !on - updateUsrDialog() - update_icon() - return 1 - - if(href_list["add"]) - var/new_child=selectValidChildFor(null,usr,list(0)) - if(!new_child) - return 1 - automations += new_child - updateUsrDialog() - return 1 - - if(href_list["label"]) - var/datum/automation/A=locate(href_list["label"]) - if(!A) return 1 - var/nl=input(usr, "Please enter a label for this automation task.") as text|null - if(!nl) return 1 - nl = copytext(sanitize(nl), 1, 50) - A.label=nl - updateUsrDialog() - return 1 - - if(href_list["reset"]) - if(href_list["reset"]=="*") - for(var/datum/automation/A in automations) - if(!A) continue - A.OnReset() - else - var/datum/automation/A=locate(href_list["reset"]) - if(!A) return 1 + if(!A) continue A.OnReset() - updateUsrDialog() - return 1 + else + var/datum/automation/A=locate(href_list["reset"]) + if(!A) return 1 + A.OnReset() + updateUsrDialog() + return 1 - if(href_list["remove"]) - if(href_list["remove"]=="*") - var/confirm=alert("Are you sure you want to remove ALL automations?","Automations","Yes","No") - if(confirm == "No") return 0 - for(var/datum/automation/A in automations) - if(!A) continue - A.OnRemove() - automations.Remove(A) - else - var/datum/automation/A=locate(href_list["remove"]) - if(!A) return 1 + if(href_list["remove"]) + if(href_list["remove"]=="*") + var/confirm=alert("Are you sure you want to remove ALL automations?","Automations","Yes","No") + if(confirm == "No") return 0 + for(var/datum/automation/A in automations) + if(!A) continue A.OnRemove() automations.Remove(A) - updateUsrDialog() - return 1 + else + var/datum/automation/A=locate(href_list["remove"]) + if(!A) return 1 + A.OnRemove() + automations.Remove(A) + updateUsrDialog() + return 1 - if(href_list["read"]) - var/code = input("Input exported AAC code.","Automations","") as message|null - if(!code) return 0 - ReadCode(code) - updateUsrDialog() - return 1 + if(href_list["read"]) + var/code = input("Input exported AAC code.","Automations","") as message|null + if(!code) return 0 + ReadCode(code) + updateUsrDialog() + return 1 - if(href_list["dump"]) - input("Exported AAC code:","Automations",DumpCode()) as message|null - return 0 + if(href_list["dump"]) + input("Exported AAC code:","Automations",DumpCode()) as message|null + return 0 - proc/MakeCompare(var/datum/automation/a, var/datum/automation/b, var/comparetype) - var/datum/automation/compare/compare=new(src) - compare.comparator = comparetype - compare.children[1] = a - compare.children[2] = b - return compare +/obj/machinery/computer/general_air_control/atmos_automation/proc/MakeCompare(datum/automation/a, datum/automation/b, comparetype) + var/datum/automation/compare/compare=new(src) + compare.comparator = comparetype + compare.children[1] = a + compare.children[2] = b + return compare - proc/MakeNumber(var/value) - var/datum/automation/static_value/val = new(src) - val.value=value - return val +/obj/machinery/computer/general_air_control/atmos_automation/proc/MakeNumber(value) + var/datum/automation/static_value/val = new(src) + val.value=value + return val - proc/MakeGetSensorData(var/sns_tag,var/field) - var/datum/automation/get_sensor_data/sensor=new(src) - sensor.sensor=sns_tag - sensor.field=field - return sensor +/obj/machinery/computer/general_air_control/atmos_automation/proc/MakeGetSensorData(sns_tag,field) + var/datum/automation/get_sensor_data/sensor=new(src) + sensor.sensor=sns_tag + sensor.field=field + return sensor - proc/DumpCode() - var/list/json[0] - for(var/datum/automation/A in automations) - json += list(A.Export()) - return json_encode(json) +/obj/machinery/computer/general_air_control/atmos_automation/proc/DumpCode() + var/list/json[0] + for(var/datum/automation/A in automations) + json += list(A.Export()) + return json_encode(json) - proc/ReadCode(var/jsonStr) - automations.Cut() - var/list/json = json_decode(jsonStr) - if(json.len>0) - for(var/list/cData in json) - if(isnull(cData) || !("type" in cData)) - testing("AAC: Null cData in root JS array.") - continue - var/Atype=text2path(cData["type"]) - if(!(Atype in automation_types)) - testing("AAC: Unrecognized Atype [Atype].") - continue - var/datum/automation/A = new Atype(src) - A.Import(cData) - automations += A +/obj/machinery/computer/general_air_control/atmos_automation/proc/ReadCode(jsonStr) + automations.Cut() + var/list/json = json_decode(jsonStr) + if(json.len>0) + for(var/list/cData in json) + if(isnull(cData) || !("type" in cData)) + testing("AAC: Null cData in root JS array.") + continue + var/Atype=text2path(cData["type"]) + if(!(Atype in automation_types)) + testing("AAC: Unrecognized Atype [Atype].") + continue + var/datum/automation/A = new Atype(src) + A.Import(cData) + automations += A /obj/machinery/computer/general_air_control/atmos_automation/burnchamber var/injector_tag="inc_in" @@ -230,79 +230,80 @@ var/sensor_tag="inc_sensor" frequency=1449 var/temperature=1000 - New() - ..() - // On State - // Pretty much this: - /* - if(get_sensor("inc_sensor","temperature") < 200) - set_injector_state("inc_in",1) - set_vent_pump_power("inc_out",0) - else - set_vent_pump_power("inc_out",1 - */ +/obj/machinery/computer/general_air_control/atmos_automation/burnchamber/New() + ..() - var/datum/automation/get_sensor_data/sensor=new(src) - sensor.sensor=sensor_tag - sensor.field="temperature" + // On State + // Pretty much this: + /* + if(get_sensor("inc_sensor","temperature") < 200) + set_injector_state("inc_in",1) + set_vent_pump_power("inc_out",0) + else + set_vent_pump_power("inc_out",1 + */ - var/datum/automation/static_value/val = new(src) - val.value=temperature - 800 + var/datum/automation/get_sensor_data/sensor=new(src) + sensor.sensor=sensor_tag + sensor.field="temperature" - var/datum/automation/compare/compare=new(src) - compare.comparator = "Less Than" - compare.children[1] = sensor - compare.children[2] = val + var/datum/automation/static_value/val = new(src) + val.value=temperature - 800 - var/datum/automation/set_injector_power/inj_on=new(src) - inj_on.injector=injector_tag - inj_on.state=1 + var/datum/automation/compare/compare=new(src) + compare.comparator = "Less Than" + compare.children[1] = sensor + compare.children[2] = val - var/datum/automation/set_vent_pump_power/vp_on=new(src) - vp_on.vent_pump=output_tag - vp_on.state=1 + var/datum/automation/set_injector_power/inj_on=new(src) + inj_on.injector=injector_tag + inj_on.state=1 - var/datum/automation/set_vent_pump_power/vp_off=new(src) - vp_off.vent_pump=output_tag - vp_off.state=0 + var/datum/automation/set_vent_pump_power/vp_on=new(src) + vp_on.vent_pump=output_tag + vp_on.state=1 - var/datum/automation/if_statement/i = new (src) - i.label = "Fuel Injector On" - i.condition = compare - i.children_then.Add(inj_on) - i.children_then.Add(vp_off) - i.children_else.Add(vp_on) + var/datum/automation/set_vent_pump_power/vp_off=new(src) + vp_off.vent_pump=output_tag + vp_off.state=0 - automations += i + var/datum/automation/if_statement/i = new (src) + i.label = "Fuel Injector On" + i.condition = compare + i.children_then.Add(inj_on) + i.children_then.Add(vp_off) + i.children_else.Add(vp_on) - // Off state - /* - if(get_sensor("inc_sensor","temperature") > 1000) - set_injector_state("inc_in",0) - */ - sensor=new(src) - sensor.sensor=sensor_tag - sensor.field="temperature" + automations += i - val = new(src) - val.value=temperature + // Off state + /* + if(get_sensor("inc_sensor","temperature") > 1000) + set_injector_state("inc_in",0) + */ + sensor=new(src) + sensor.sensor=sensor_tag + sensor.field="temperature" - compare=new(src) - compare.comparator = "Greater Than" - compare.children[1] = sensor - compare.children[2] = val + val = new(src) + val.value=temperature - var/datum/automation/set_injector_power/inj_off=new(src) - inj_off.injector=injector_tag - inj_off.state=0 + compare=new(src) + compare.comparator = "Greater Than" + compare.children[1] = sensor + compare.children[2] = val - i = new (src) - i.label = "Fuel Injector Off" - i.condition = compare - i.children_then.Add(inj_off) + var/datum/automation/set_injector_power/inj_off=new(src) + inj_off.injector=injector_tag + inj_off.state=0 - automations += i + i = new (src) + i.label = "Fuel Injector Off" + i.condition = compare + i.children_then.Add(inj_off) + + automations += i /obj/machinery/computer/general_air_control/atmos_automation/air_mixing var/n2_injector_tag="air_n2_in" @@ -311,142 +312,143 @@ var/sensor_tag="air_sensor" frequency=1443 var/temperature=1000 - New() - ..() - buildO2() - buildN2() - buildOutletVent() - proc/buildO2() - /////////////////////////////////////////////////////////////// - // Oxygen Injection - /////////////////////////////////////////////////////////////// +/obj/machinery/computer/general_air_control/atmos_automation/air_mixing/New() + ..() + buildO2() + buildN2() + buildOutletVent() - var/datum/automation/set_injector_power/inj_on=new(src) - inj_on.injector=o2_injector_tag - inj_on.state=1 +/obj/machinery/computer/general_air_control/atmos_automation/air_mixing/proc/buildO2() + /////////////////////////////////////////////////////////////// + // Oxygen Injection + /////////////////////////////////////////////////////////////// - var/datum/automation/set_injector_power/inj_off=new(src) - inj_off.injector=o2_injector_tag - inj_off.state=0 + var/datum/automation/set_injector_power/inj_on=new(src) + inj_on.injector=o2_injector_tag + inj_on.state=1 - var/datum/automation/if_statement/i = new (src) - i.label = "Oxygen Injection" - i.condition = MakeCompare( + var/datum/automation/set_injector_power/inj_off=new(src) + inj_off.injector=o2_injector_tag + inj_off.state=0 + + var/datum/automation/if_statement/i = new (src) + i.label = "Oxygen Injection" + i.condition = MakeCompare( + MakeGetSensorData(sensor_tag,"oxygen"), + MakeNumber(20), + "Less Than or Equal to" + ) + i.children_then.Add(inj_on) + i.children_else.Add(inj_off) + + automations += i + +/obj/machinery/computer/general_air_control/atmos_automation/air_mixing/proc/buildN2() + /////////////////////////////////////////////////////////////// + // Nitrogen Injection + /////////////////////////////////////////////////////////////// + /* + if(get_sensor_data("pressure") < 100) + injector_on() + else + if(get_sensor_data("pressure") > 5000) + injector_off() + */ + + var/datum/automation/set_injector_power/inj_on=new(src) + inj_on.injector=n2_injector_tag + inj_on.state=1 + + var/datum/automation/set_injector_power/inj_off=new(src) + inj_off.injector=n2_injector_tag + inj_off.state=0 + + var/datum/automation/if_statement/if_on = new (src) + if_on.label = "Nitrogen Injection" + if_on.condition = MakeCompare( + MakeGetSensorData(sensor_tag,"pressure"), + MakeNumber(100), + "Less Than" + ) + if_on.children_then.Add(inj_on) + + + var/datum/automation/if_statement/if_off=new(src) + if_off.condition=MakeCompare( + MakeGetSensorData(sensor_tag,"pressure"), + MakeNumber(5000), + "Greater Than" + ) + if_off.children_then.Add(inj_off) + + if_on.children_else.Add(if_off) + + automations += if_on + +/obj/machinery/computer/general_air_control/atmos_automation/air_mixing/proc/buildOutletVent() + /////////////////////////////////////////////////////////////// + // Outlet Management + /////////////////////////////////////////////////////////////// + /* + if(get_sensor_data("pressure") >= 5000 && get_sensor_data("oxygen") >= 20) + vent_on() + else + if(get_sensor_data("oxygen") < 20 || get_sensor_data("pressure") < 100) + vent_off() + */ + + var/datum/automation/set_vent_pump_power/vp_on=new(src) + vp_on.vent_pump=output_tag + vp_on.state=1 + + var/datum/automation/set_vent_pump_power/vp_off=new(src) + vp_off.vent_pump=output_tag + vp_off.state=0 + + var/datum/automation/if_statement/if_on=new(src) + if_on.label="Air Output" + + var/datum/automation/and/and_on=new(src) + and_on.children.Add( + MakeCompare( + MakeGetSensorData(sensor_tag,"pressure"), + MakeNumber(5000), + "Greater Than or Equal to" + ) + ) + and_on.children.Add( + MakeCompare( MakeGetSensorData(sensor_tag,"oxygen"), MakeNumber(20), - "Less Than or Equal to" + "Greater Than or Equal to" ) - i.children_then.Add(inj_on) - i.children_else.Add(inj_off) + ) + if_on.condition=and_on + if_on.children_then.Add(vp_on) - automations += i + ////////////////////////////// - proc/buildN2() - /////////////////////////////////////////////////////////////// - // Nitrogen Injection - /////////////////////////////////////////////////////////////// - /* - if(get_sensor_data("pressure") < 100) - injector_on() - else - if(get_sensor_data("pressure") > 5000) - injector_off() - */ + var/datum/automation/if_statement/if_off=new(src) - var/datum/automation/set_injector_power/inj_on=new(src) - inj_on.injector=n2_injector_tag - inj_on.state=1 - - var/datum/automation/set_injector_power/inj_off=new(src) - inj_off.injector=n2_injector_tag - inj_off.state=0 - - var/datum/automation/if_statement/if_on = new (src) - if_on.label = "Nitrogen Injection" - if_on.condition = MakeCompare( + var/datum/automation/or/or_off=new(src) + or_off.children.Add( + MakeCompare( MakeGetSensorData(sensor_tag,"pressure"), MakeNumber(100), "Less Than" ) - if_on.children_then.Add(inj_on) - - - var/datum/automation/if_statement/if_off=new(src) - if_off.condition=MakeCompare( - MakeGetSensorData(sensor_tag,"pressure"), - MakeNumber(5000), - "Greater Than" + ) + or_off.children.Add( + MakeCompare( + MakeGetSensorData(sensor_tag,"oxygen"), + MakeNumber(20), + "Less Than" ) - if_off.children_then.Add(inj_off) + ) + if_off.condition=or_off + if_off.children_then.Add(vp_off) - if_on.children_else.Add(if_off) + if_on.children_else.Add(if_off) - automations += if_on - - proc/buildOutletVent() - /////////////////////////////////////////////////////////////// - // Outlet Management - /////////////////////////////////////////////////////////////// - /* - if(get_sensor_data("pressure") >= 5000 && get_sensor_data("oxygen") >= 20) - vent_on() - else - if(get_sensor_data("oxygen") < 20 || get_sensor_data("pressure") < 100) - vent_off() - */ - - var/datum/automation/set_vent_pump_power/vp_on=new(src) - vp_on.vent_pump=output_tag - vp_on.state=1 - - var/datum/automation/set_vent_pump_power/vp_off=new(src) - vp_off.vent_pump=output_tag - vp_off.state=0 - - var/datum/automation/if_statement/if_on=new(src) - if_on.label="Air Output" - - var/datum/automation/and/and_on=new(src) - and_on.children.Add( - MakeCompare( - MakeGetSensorData(sensor_tag,"pressure"), - MakeNumber(5000), - "Greater Than or Equal to" - ) - ) - and_on.children.Add( - MakeCompare( - MakeGetSensorData(sensor_tag,"oxygen"), - MakeNumber(20), - "Greater Than or Equal to" - ) - ) - if_on.condition=and_on - if_on.children_then.Add(vp_on) - - ////////////////////////////// - - var/datum/automation/if_statement/if_off=new(src) - - var/datum/automation/or/or_off=new(src) - or_off.children.Add( - MakeCompare( - MakeGetSensorData(sensor_tag,"pressure"), - MakeNumber(100), - "Less Than" - ) - ) - or_off.children.Add( - MakeCompare( - MakeGetSensorData(sensor_tag,"oxygen"), - MakeNumber(20), - "Less Than" - ) - ) - if_off.condition=or_off - if_off.children_then.Add(vp_off) - - if_on.children_else.Add(if_off) - - automations += if_on + automations += if_on diff --git a/code/modules/atmos_automation/implementation/emitters.dm b/code/modules/atmos_automation/implementation/emitters.dm index 10469de1db8..100d68708cd 100644 --- a/code/modules/atmos_automation/implementation/emitters.dm +++ b/code/modules/atmos_automation/implementation/emitters.dm @@ -31,7 +31,7 @@ return 1 if(href_list["set_subject"]) var/list/emitters=list() - for(var/obj/machinery/power/emitter/E in machines) + for(var/obj/machinery/power/emitter/E in GLOB.machines) if(!isnull(E.id_tag) && E.frequency == parent.frequency) emitters|=E.id_tag if(emitters.len==0) diff --git a/code/modules/atmos_automation/implementation/injectors.dm b/code/modules/atmos_automation/implementation/injectors.dm index fee6cf1e33c..cc17dd27921 100644 --- a/code/modules/atmos_automation/implementation/injectors.dm +++ b/code/modules/atmos_automation/implementation/injectors.dm @@ -35,7 +35,7 @@ return 1 if(href_list["set_injector"]) var/list/injector_names=list() - for(var/obj/machinery/atmospherics/unary/outlet_injector/I in machines) + for(var/obj/machinery/atmospherics/unary/outlet_injector/I in GLOB.machines) if(!isnull(I.id_tag) && I.frequency == parent.frequency) injector_names|=I.id_tag injector = input("Select an injector:", "Sensor Data", injector) as null|anything in injector_names @@ -75,7 +75,7 @@ return 1 if(href_list["set_injector"]) var/list/injector_names=list() - for(var/obj/machinery/atmospherics/unary/outlet_injector/I in machines) + for(var/obj/machinery/atmospherics/unary/outlet_injector/I in GLOB.machines) if(!isnull(I.id_tag) && I.frequency == parent.frequency) injector_names|=I.id_tag injector = input("Select an injector:", "Sensor Data", injector) as null|anything in injector_names diff --git a/code/modules/atmos_automation/implementation/scrubbers.dm b/code/modules/atmos_automation/implementation/scrubbers.dm index 158ac1d835f..4188773a6a4 100644 --- a/code/modules/atmos_automation/implementation/scrubbers.dm +++ b/code/modules/atmos_automation/implementation/scrubbers.dm @@ -35,7 +35,7 @@ return 1 if(href_list["set_scrubber"]) var/list/injector_names=list() - for(var/obj/machinery/atmospherics/unary/vent_scrubber/S in machines) + for(var/obj/machinery/atmospherics/unary/vent_scrubber/S in GLOB.machines) if(!isnull(S.id_tag) && S.frequency == parent.frequency) injector_names|=S.id_tag scrubber = input("Select a scrubber:", "Scrubbers", scrubber) as null|anything in injector_names @@ -77,7 +77,7 @@ return 1 if(href_list["set_scrubber"]) var/list/injector_names=list() - for(var/obj/machinery/atmospherics/unary/vent_scrubber/S in machines) + for(var/obj/machinery/atmospherics/unary/vent_scrubber/S in GLOB.machines) if(!isnull(S.id_tag) && S.frequency == parent.frequency) injector_names|=S.id_tag scrubber = input("Select a scrubber:", "Scrubbers", scrubber) as null|anything in injector_names @@ -145,7 +145,7 @@ var/global/list/gas_labels=list( return 1 if(href_list["set_scrubber"]) var/list/injector_names=list() - for(var/obj/machinery/atmospherics/unary/vent_scrubber/S in machines) + for(var/obj/machinery/atmospherics/unary/vent_scrubber/S in GLOB.machines) if(!isnull(S.id_tag) && S.frequency == parent.frequency) injector_names|=S.id_tag scrubber = input("Select a scrubber:", "Scrubbers", scrubber) as null|anything in injector_names diff --git a/code/modules/atmos_automation/implementation/sensors.dm b/code/modules/atmos_automation/implementation/sensors.dm index 8b3b1ece5b5..487298aa266 100644 --- a/code/modules/atmos_automation/implementation/sensors.dm +++ b/code/modules/atmos_automation/implementation/sensors.dm @@ -45,10 +45,10 @@ return 1 if(href_list["set_sensor"]) var/list/sensor_list = list() - for(var/obj/machinery/air_sensor/G in machines) + for(var/obj/machinery/air_sensor/G in GLOB.machines) if(!isnull(G.id_tag) && G.frequency == parent.frequency) sensor_list|=G.id_tag - for(var/obj/machinery/meter/M in machines) + for(var/obj/machinery/meter/M in GLOB.machines) if(!isnull(M.id_tag) && M.frequency == parent.frequency) sensor_list|=M.id_tag sensor = input("Select a sensor:", "Sensor Data", field) as null|anything in sensor_list diff --git a/code/modules/atmos_automation/implementation/vent_pump.dm b/code/modules/atmos_automation/implementation/vent_pump.dm index 9a8949ccde2..71d728b316d 100644 --- a/code/modules/atmos_automation/implementation/vent_pump.dm +++ b/code/modules/atmos_automation/implementation/vent_pump.dm @@ -41,7 +41,7 @@ if(href_list["set_vent_pump"]) var/list/injector_names = list() if(!vent_type) - for(var/obj/machinery/atmospherics/unary/vent_pump/I in machines) + for(var/obj/machinery/atmospherics/unary/vent_pump/I in GLOB.machines) if(!isnull(I.id_tag) && I.frequency == parent.frequency) injector_names |= I.id_tag else @@ -98,7 +98,7 @@ if(href_list["set_vent_pump"]) var/list/injector_names=list() if(!mode) - for(var/obj/machinery/atmospherics/unary/vent_pump/I in machines) + for(var/obj/machinery/atmospherics/unary/vent_pump/I in GLOB.machines) if(!isnull(I.id_tag) && I.frequency == parent.frequency) injector_names|=I.id_tag else @@ -190,7 +190,7 @@ if(!isnull(I.id_tag) && I.frequency == parent.frequency) injector_names|=I.id_tag else - for(var/obj/machinery/atmospherics/unary/vent_pump/I in machines) + for(var/obj/machinery/atmospherics/unary/vent_pump/I in GLOB.machines) if(!isnull(I.id_tag) && I.frequency == parent.frequency) injector_names|=I.id_tag vent_pump = input("Select a vent:", "Vent Pumps", vent_pump) as null|anything in injector_names @@ -282,7 +282,7 @@ checks bitflags if(!isnull(I.id_tag) && I.frequency == parent.frequency) injector_names|=I.id_tag else - for(var/obj/machinery/atmospherics/unary/vent_pump/I in machines) + for(var/obj/machinery/atmospherics/unary/vent_pump/I in GLOB.machines) if(!isnull(I.id_tag) && I.frequency == parent.frequency) injector_names|=I.id_tag vent_pump = input("Select a vent:", "Vent Pumps", vent_pump) as null|anything in injector_names diff --git a/code/modules/awaymissions/corpse.dm b/code/modules/awaymissions/corpse.dm index 5f25aa8a642..448344761ba 100644 --- a/code/modules/awaymissions/corpse.dm +++ b/code/modules/awaymissions/corpse.dm @@ -9,7 +9,7 @@ icon = 'icons/effects/blood.dmi' icon_state = "remains" var/mob_type = null - var/mob_name = "" + var/mob_name = "unidentified entity" var/mob_gender = null var/death = TRUE //Kill the mob var/roundstart = TRUE //fires on initialize @@ -48,14 +48,14 @@ /obj/effect/mob_spawn/Initialize(mapload) . = ..() - if(instant || (roundstart && (ticker && ticker.current_state > GAME_STATE_SETTING_UP))) + if(instant || roundstart) //at some point we should probably re-introduce the (ticker && ticker.current_state > GAME_STATE_SETTING_UP) portion of this check, but for now it was preventing the corpses from spawning at roundstart and resulting in ghost role spawners that made dead bodies. create() else - poi_list |= src + GLOB.poi_list |= src LAZYADD(GLOB.mob_spawners[name], src) /obj/effect/mob_spawn/Destroy() - poi_list -= src + GLOB.poi_list -= src var/list/spawners = GLOB.mob_spawners[name] LAZYREMOVE(spawners, src) if(!LAZYLEN(spawners)) @@ -70,6 +70,9 @@ /obj/effect/mob_spawn/proc/create(ckey, flavour = TRUE, name) var/mob/living/M = new mob_type(get_turf(src)) //living mobs only + var/mob/living/carbon/human/H = M + if(H && !H.dna) + H.Initialize(null) if(!random) M.real_name = mob_name ? mob_name : M.name if(!mob_gender) @@ -80,7 +83,7 @@ if(disease) M.ForceContractDisease(new disease) if(death) - M.death(1) //Kills the new mob + M.death() //Kills the new mob M.adjustOxyLoss(oxy_damage) M.adjustBruteLoss(brute_damage) @@ -152,6 +155,8 @@ outfit = new outfit() if(!outfit) outfit = new /datum/outfit + if(!mob_name) + mob_name = id_job return ..() /obj/effect/mob_spawn/human/equip(mob/living/carbon/human/H) @@ -268,6 +273,7 @@ /obj/effect/mob_spawn/human/corpse/assistant name = "Assistant" + mob_name = "Assistant" id_job = "Assistant" outfit = /datum/outfit/job/assistant @@ -282,11 +288,13 @@ /obj/effect/mob_spawn/human/cook name = "Cook" + mob_name = "Chef" id_job = "Chef" outfit = /datum/outfit/job/chef /obj/effect/mob_spawn/human/doctor name = "Doctor" + mob_name = "Medical Doctor" id_job = "Medical Doctor" outfit = /datum/outfit/job/doctor @@ -310,6 +318,7 @@ /obj/effect/mob_spawn/human/engineer name = "Engineer" + mob_name = "Engineer" id_job = "Engineer" outfit = /datum/outfit/job/engineer @@ -338,7 +347,7 @@ outfit = /datum/outfit/job/clown /obj/effect/mob_spawn/human/clown/Initialize() - mob_name = pick(clown_names) + mob_name = pick(GLOB.clown_names) ..() /obj/effect/mob_spawn/human/corpse/clownmili @@ -346,7 +355,7 @@ outfit = /datum/outfit/clownsoldier /obj/effect/mob_spawn/human/corpse/clownmili/Initialize() - mob_name = "Officer [pick(clown_names)]" + mob_name = "Officer [pick(GLOB.clown_names)]" ..() /obj/effect/mob_spawn/human/corpse/clownoff @@ -354,7 +363,7 @@ outfit = /datum/outfit/clownofficer /obj/effect/mob_spawn/human/corpse/clownoff/Initialize() - mob_name = "Honk Specialist [pick(clown_names)]" + mob_name = "Honk Specialist [pick(GLOB.clown_names)]" ..() @@ -385,21 +394,23 @@ outfit = /datum/outfit/job/mime /obj/effect/mob_spawn/human/mime/Initialize() - mob_name = pick(mime_names) + mob_name = pick(GLOB.mime_names) ..() /obj/effect/mob_spawn/human/scientist name = "Scientist" + mob_name = "Scientist" id_job = "Scientist" outfit = /datum/outfit/job/scientist /obj/effect/mob_spawn/human/miner name = "Shaft Miner" + mob_name = "Shaft Miner" id_job = "Shaft Miner" outfit = /datum/outfit/job/mining/suit /datum/outfit/job/mining/suit - name = "Station Engineer" + name = "Shaft Miner" suit = /obj/item/clothing/suit/space/hardsuit/mining head = /obj/item/clothing/head/helmet/space/hardsuit/mining uniform = /obj/item/clothing/under/rank/miner @@ -413,6 +424,7 @@ /obj/effect/mob_spawn/human/bartender name = "Space Bartender" + mob_name = "Bartender" id_job = "Bartender" id_access_list = list(access_bar) outfit = /datum/outfit/spacebartender @@ -476,6 +488,7 @@ /obj/effect/mob_spawn/human/bridgeofficer name = "Bridge Officer" + mob_name = "Bridge Officer" id_job = "Bridge Officer" id_access = "Captain" outfit = /datum/outfit/nanotrasenbridgeofficercorpse @@ -492,6 +505,7 @@ /obj/effect/mob_spawn/human/commander name = "Commander" + mob_name = "Commander" id_job = "Commander" id_access = "Captain" outfit = /datum/outfit/nanotrasencommandercorpse diff --git a/code/modules/awaymissions/mission_code/UO71-terrorspiders.dm b/code/modules/awaymissions/mission_code/UO71-terrorspiders.dm index e74da2a6628..0e9847cdf01 100644 --- a/code/modules/awaymissions/mission_code/UO71-terrorspiders.dm +++ b/code/modules/awaymissions/mission_code/UO71-terrorspiders.dm @@ -248,7 +248,7 @@ spawn(1) beenused = 1 var/unlocked_something = 0 - for(var/obj/machinery/door/poddoor/P in airlocks) + for(var/obj/machinery/door/poddoor/P in GLOB.airlocks) if(P.density && P.id_tag == door_to_open && P.z == z) P.open() unlocked_something = 1 diff --git a/code/modules/awaymissions/mission_code/stationCollision.dm b/code/modules/awaymissions/mission_code/stationCollision.dm index e4b2cd0ddfe..17ece10d71a 100644 --- a/code/modules/awaymissions/mission_code/stationCollision.dm +++ b/code/modules/awaymissions/mission_code/stationCollision.dm @@ -152,7 +152,7 @@ var/sc_safecode5 = "[rand(0,9)]" new /obj/item/clothing/head/helmet/space/cult(src) new /obj/item/clothing/suit/space/cult(src) //new /obj/item/teleportation_scroll(src) - new /obj/item/ore/diamond(src) + new /obj/item/stack/ore/diamond(src) /* * Modified Nar-Sie diff --git a/code/modules/awaymissions/mission_code/wildwest.dm b/code/modules/awaymissions/mission_code/wildwest.dm index 90d27fbf7ed..91c09d15f30 100644 --- a/code/modules/awaymissions/mission_code/wildwest.dm +++ b/code/modules/awaymissions/mission_code/wildwest.dm @@ -155,10 +155,8 @@ call(src,triggerproc)(M) /obj/effect/meatgrinder/proc/triggerrad1(mob) - var/datum/effect_system/spark_spread/s = new /datum/effect_system/spark_spread for(var/mob/O in viewers(world.view, src.loc)) - s.set_up(3, 1, src) - s.start() + do_sparks(3, 1, src) explosion(mob, 1, 0, 0, 0) qdel(src) @@ -177,8 +175,8 @@ spawn(rand(800,1200)) if(C.stat == DEAD) - dead_mob_list -= C - living_mob_list += C + GLOB.dead_mob_list -= C + GLOB.living_mob_list += C C.stat = CONSCIOUS C.timeofdeath = 0 C.setToxLoss(0) @@ -237,7 +235,7 @@ to_chat(user, "The communicator buzzes, and you hear the voice again: 'Really? I think not. Get them!'") if(option_threat) to_chat(user, "The communicator buzzes, and you hear the voice again: 'Oh really now?' You hear a clicking sound. 'Team, get back here. We have trouble'. Then the line goes dead.") - for(var/obj/effect/landmark/L in landmarks_list) + for(var/obj/effect/landmark/L in GLOB.landmarks_list) if(L.name == "wildwest_syndipod") var/obj/spacepod/syndi/P = new /obj/spacepod/syndi(get_turf(L)) P.name = "Syndi Recon Pod" @@ -250,7 +248,7 @@ used = TRUE /obj/item/wildwest_communicator/proc/stand_down() - for(var/mob/living/simple_animal/hostile/syndicate/ranged/wildwest/W in living_mob_list) + for(var/mob/living/simple_animal/hostile/syndicate/ranged/wildwest/W in GLOB.living_mob_list) W.on_alert = FALSE /mob/living/simple_animal/hostile/syndicate/ranged/wildwest @@ -265,6 +263,6 @@ // 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) + for(var/mob/living/simple_animal/hostile/syndicate/ranged/wildwest/W in GLOB.living_mob_list) W.on_alert = TRUE return ..(gibbed) diff --git a/code/modules/awaymissions/trigger.dm b/code/modules/awaymissions/trigger.dm index 0ac6e656206..60a43702cb1 100644 --- a/code/modules/awaymissions/trigger.dm +++ b/code/modules/awaymissions/trigger.dm @@ -22,13 +22,9 @@ M.Move(dest) if(entersparks) - var/datum/effect_system/spark_spread/s = new /datum/effect_system/spark_spread - s.set_up(4, 1, src) - s.start() + do_sparks(4, 1, src) if(exitsparks) - var/datum/effect_system/spark_spread/s = new /datum/effect_system/spark_spread - s.set_up(4, 1, dest) - s.start() + do_sparks(4, 1, dest) if(entersmoke) var/datum/effect_system/smoke_spread/s = new diff --git a/code/modules/awaymissions/zlevel.dm b/code/modules/awaymissions/zlevel.dm index c0bc96489b4..36a4eeda829 100644 --- a/code/modules/awaymissions/zlevel.dm +++ b/code/modules/awaymissions/zlevel.dm @@ -17,11 +17,11 @@ var/global/list/potentialRandomZlevels = generateMapList(filename = "config/away log_debug("Smoothing tiles") for(var/turf/T in smoothTurfs) if(T.smooth) - smooth_icon(T) + queue_smooth(T) for(var/R in T) var/atom/A = R if(A.smooth) - smooth_icon(A) + queue_smooth(A) if(istype(T, /turf/simulated/mineral)) // For the listening post, among other maps var/turf/simulated/mineral/MT = T MT.add_edges() @@ -59,7 +59,7 @@ var/global/list/potentialRandomZlevels = generateMapList(filename = "config/away space_manager.remove_dirt(zlev) log_world(" Away mission loaded: [map]") - for(var/obj/effect/landmark/L in landmarks_list) + for(var/obj/effect/landmark/L in GLOB.landmarks_list) if(L.name != "awaystart") continue awaydestinations.Add(L) @@ -92,7 +92,7 @@ var/global/list/potentialRandomZlevels = generateMapList(filename = "config/away //map_transition_config.Add(AWAY_MISSION_LIST) - for(var/obj/effect/landmark/L in landmarks_list) + for(var/obj/effect/landmark/L in GLOB.landmarks_list) if(L.name != "awaystart") continue awaydestinations.Add(L) diff --git a/code/modules/awaymissions/zvis.dm b/code/modules/awaymissions/zvis.dm index 4324377149d..03adaeda629 100644 --- a/code/modules/awaymissions/zvis.dm +++ b/code/modules/awaymissions/zvis.dm @@ -159,12 +159,12 @@ /obj/effect/view_portal/New() ..() - portals += src + GLOB.portals += src /obj/effect/view_portal/Initialize() ..() if(id) - for(var/obj/effect/view_portal/O in portals) + for(var/obj/effect/view_portal/O in GLOB.portals) if(id == O.id && O != src && can_link(O)) other = O O.other = src @@ -174,7 +174,7 @@ return /obj/effect/view_portal/Destroy() - portals -= src + GLOB.portals -= src return ..() /obj/effect/view_portal/proc/can_link(obj/effect/view_portal/P) diff --git a/code/modules/buildmode/buildmode.dm b/code/modules/buildmode/buildmode.dm index 934eba8117c..7f43f20c934 100644 --- a/code/modules/buildmode/buildmode.dm +++ b/code/modules/buildmode/buildmode.dm @@ -49,8 +49,9 @@ 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]" + // this stuff is equivalent to the commented out line for 511 compat + // B.screen_loc = "NORTH-[(1 + 0.5 + y*1.5)],WEST+[0.5 + x*1.5]" + B.screen_loc = "NORTH-[1 + FLOOR(0.5 + 1.5*y, 1) + ((y + 1) % 2)]:[16*((y + 1) % 2)],WEST+[FLOOR(0.5 + 1.5*x, 1)]:[16*((x + 1) % 2)]" buttonslist += B pos_idx++ @@ -108,7 +109,7 @@ /datum/click_intercept/buildmode/InterceptClickOn(user, params, atom/object) mode.handle_click(user, params, object) -/proc/togglebuildmode(mob/M in player_list) +/proc/togglebuildmode(mob/M in GLOB.player_list) set name = "Toggle Build Mode" set category = "Event" diff --git a/code/modules/buildmode/submodes/link.dm b/code/modules/buildmode/submodes/link.dm index 153b5a7698e..90709463363 100644 --- a/code/modules/buildmode/submodes/link.dm +++ b/code/modules/buildmode/submodes/link.dm @@ -89,6 +89,6 @@ 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) + for(var/obj/machinery/door/poddoor/P in GLOB.airlocks) if(P.id_tag == M.id) form_connection(M, P, !M.normaldoorcontrol) diff --git a/code/modules/client/asset_cache.dm b/code/modules/client/asset_cache.dm index 0fe05e8ff92..4c595b23411 100644 --- a/code/modules/client/asset_cache.dm +++ b/code/modules/client/asset_cache.dm @@ -147,7 +147,7 @@ proc/getFilesSlow(var/client/client, var/list/files, var/register_asset = TRUE) var/datum/asset/A = new type() A.register() - for(var/client/C in clients) + for(var/client/C in GLOB.clients) //doing this to a client too soon after they've connected can cause issues, also the proc we call sleeps spawn(10) getFilesSlow(C, asset_cache, FALSE) diff --git a/code/modules/client/client procs.dm b/code/modules/client/client procs.dm index 99f7fa69746..bff5bd23ce4 100644 --- a/code/modules/client/client procs.dm +++ b/code/modules/client/client procs.dm @@ -306,13 +306,13 @@ to_chat(src, "If the title screen is black, resources are still downloading. Please be patient until the title screen appears.") - clients += src - directory[ckey] = src + GLOB.clients += src + GLOB.directory[ckey] = src //Admin Authorisation holder = admin_datums[ckey] if(holder) - admins += src + GLOB.admins += src holder.owner = src donator_check() @@ -392,9 +392,9 @@ /client/Del() if(holder) holder.owner = null - admins -= src - directory -= ckey - clients -= src + GLOB.admins -= src + GLOB.directory -= ckey + GLOB.clients -= src Master.UpdateTickRate() return ..() @@ -648,8 +648,8 @@ //For debugging purposes /client/proc/list_all_languages() - for(var/L in all_languages) - var/datum/language/lang = all_languages[L] + for(var/L in GLOB.all_languages) + var/datum/language/lang = GLOB.all_languages[L] var/message = "[lang.name] : [lang.type]" if(lang.flags & RESTRICTED) message += " (RESTRICTED)" diff --git a/code/modules/client/preference/preferences.dm b/code/modules/client/preference/preferences.dm index 0470ac9e274..e0ab0087b97 100644 --- a/code/modules/client/preference/preferences.dm +++ b/code/modules/client/preference/preferences.dm @@ -321,7 +321,7 @@ var/global/list/special_role_times = list( //minimum age (in days) for accounts dat += "Hair: " dat += "[h_style]" dat += "Color [color_square(h_colour)]" - var/datum/sprite_accessory/temp_hair_style = hair_styles_public_list[h_style] + var/datum/sprite_accessory/temp_hair_style = GLOB.hair_styles_public_list[h_style] if(temp_hair_style && temp_hair_style.secondary_theme && !temp_hair_style.no_sec_colour) dat += " Color #2 [color_square(h_sec_colour)]" dat += "
" @@ -329,7 +329,7 @@ var/global/list/special_role_times = list( //minimum age (in days) for accounts dat += "Facial Hair: " dat += "[f_style ? "[f_style]" : "Shaved"]" dat += "Color [color_square(f_colour)]" - var/datum/sprite_accessory/temp_facial_hair_style = facial_hair_styles_list[f_style] + var/datum/sprite_accessory/temp_facial_hair_style = GLOB.facial_hair_styles_list[f_style] if(temp_facial_hair_style && temp_facial_hair_style.secondary_theme && !temp_facial_hair_style.no_sec_colour) dat += " Color #2 [color_square(f_sec_colour)]" dat += "
" @@ -1252,7 +1252,7 @@ var/global/list/special_role_times = list( //minimum age (in days) for accounts if(S.bodyflags & HAS_SKIN_COLOR) s_colour = rand_hex_color() if("bag") - backbag = pick(backbaglist) + backbag = pick(GLOB.backbaglist) /*if("skin_style") h_style = random_skin_style(gender)*/ if("all") @@ -1281,14 +1281,14 @@ var/global/list/special_role_times = list( //minimum age (in days) for accounts // var/whitelisted = 0 if(config.usealienwhitelist) //If we're using the whitelist, make sure to check it! - for(var/Spec in whitelisted_species) + for(var/Spec in GLOB.whitelisted_species) if(is_alien_whitelisted(user,Spec)) new_species += Spec // whitelisted = 1 // if(!whitelisted) // alert(user, "You cannot change your species as you need to be whitelisted. If you wish to be whitelisted contact an admin in-game, on the forums, or on IRC.") else //Not using the whitelist? Aliens for everyone! - new_species += whitelisted_species + new_species += GLOB.whitelisted_species species = input("Please select a species", "Character Generation", null) in new_species var/datum/species/NS = GLOB.all_species[species] @@ -1334,15 +1334,15 @@ var/global/list/special_role_times = list( //minimum age (in days) for accounts m_colours["tail"] = "#000000" // Don't wear another species' underwear! - var/datum/sprite_accessory/SA = underwear_list[underwear] + var/datum/sprite_accessory/SA = GLOB.underwear_list[underwear] if(!SA || !(species in SA.species_allowed)) underwear = random_underwear(gender, species) - SA = undershirt_list[undershirt] + SA = GLOB.undershirt_list[undershirt] if(!SA || !(species in SA.species_allowed)) undershirt = random_undershirt(gender, species) - SA = socks_list[socks] + SA = GLOB.socks_list[socks] if(!SA || !(species in SA.species_allowed)) socks = random_socks(gender, species) @@ -1373,8 +1373,8 @@ var/global/list/special_role_times = list( //minimum age (in days) for accounts var/list/new_languages = list("None") /* if(config.usealienwhitelist) - for(var/L in all_languages) - var/datum/language/lang = all_languages[L] + for(var/L in GLOB.all_languages) + var/datum/language/lang = GLOB.all_languages[L] if((!(lang.flags & RESTRICTED)) && (is_alien_whitelisted(user, L)||(!( lang.flags & WHITELISTED )))) new_languages += lang languages_available = 1 @@ -1383,8 +1383,8 @@ var/global/list/special_role_times = list( //minimum age (in days) for accounts alert(user, "There are not currently any available secondary languages.") else */ - for(var/L in all_languages) - var/datum/language/lang = all_languages[L] + for(var/L in GLOB.all_languages) + var/datum/language/lang = GLOB.all_languages[L] if(!(lang.flags & RESTRICTED)) new_languages += lang.name @@ -1415,7 +1415,7 @@ var/global/list/special_role_times = list( //minimum age (in days) for accounts if("secondary_hair") if(species in list("Human", "Unathi", "Tajaran", "Skrell", "Machine", "Vulpkanin", "Vox")) - var/datum/sprite_accessory/hair_style = hair_styles_public_list[h_style] + var/datum/sprite_accessory/hair_style = GLOB.hair_styles_public_list[h_style] if(hair_style.secondary_theme && !hair_style.no_sec_colour) var/new_hair = input(user, "Choose your character's secondary hair colour:", "Character Preference", h_sec_colour) as color|null if(new_hair) @@ -1423,8 +1423,8 @@ var/global/list/special_role_times = list( //minimum age (in days) for accounts if("h_style") var/list/valid_hairstyles = list() - for(var/hairstyle in hair_styles_public_list) - var/datum/sprite_accessory/SA = hair_styles_public_list[hairstyle] + for(var/hairstyle in GLOB.hair_styles_public_list) + var/datum/sprite_accessory/SA = GLOB.hair_styles_public_list[hairstyle] if(hairstyle == "Bald") //Just in case. valid_hairstyles += hairstyle @@ -1460,8 +1460,8 @@ var/global/list/special_role_times = list( //minimum age (in days) for accounts if("ha_style") if(S.bodyflags & HAS_HEAD_ACCESSORY) //Species with head accessories. var/list/valid_head_accessory_styles = list() - for(var/head_accessory_style in head_accessory_styles_list) - var/datum/sprite_accessory/H = head_accessory_styles_list[head_accessory_style] + for(var/head_accessory_style in GLOB.head_accessory_styles_list) + var/datum/sprite_accessory/H = GLOB.head_accessory_styles_list[head_accessory_style] if(!(species in H.species_allowed)) continue @@ -1476,9 +1476,9 @@ var/global/list/special_role_times = list( //minimum age (in days) for accounts return if(S.bodyflags & HAS_ALT_HEADS) //Species with alt heads. var/list/valid_alt_heads = list() - valid_alt_heads["None"] = alt_heads_list["None"] //The only null entry should be the "None" option - for(var/alternate_head in alt_heads_list) - var/datum/sprite_accessory/alt_heads/head = alt_heads_list[alternate_head] + valid_alt_heads["None"] = GLOB.alt_heads_list["None"] //The only null entry should be the "None" option + for(var/alternate_head in GLOB.alt_heads_list) + var/datum/sprite_accessory/alt_heads/head = GLOB.alt_heads_list[alternate_head] if(!(species in head.species_allowed)) continue @@ -1489,16 +1489,16 @@ var/global/list/special_role_times = list( //minimum age (in days) for accounts alt_head = new_alt_head if(m_styles["head"]) var/head_marking = m_styles["head"] - var/datum/sprite_accessory/body_markings/head/head_marking_style = marking_styles_list[head_marking] + var/datum/sprite_accessory/body_markings/head/head_marking_style = GLOB.marking_styles_list[head_marking] if(!head_marking_style.heads_allowed || (!("All" in head_marking_style.heads_allowed) && !(alt_head in head_marking_style.heads_allowed))) m_styles["head"] = "None" if("m_style_head") if(S.bodyflags & HAS_HEAD_MARKINGS) //Species with head markings. var/list/valid_markings = list() - valid_markings["None"] = marking_styles_list["None"] - for(var/markingstyle in marking_styles_list) - var/datum/sprite_accessory/body_markings/head/M = marking_styles_list[markingstyle] + valid_markings["None"] = GLOB.marking_styles_list["None"] + for(var/markingstyle in GLOB.marking_styles_list) + var/datum/sprite_accessory/body_markings/head/M = GLOB.marking_styles_list[markingstyle] if(!(species in M.species_allowed)) continue if(M.marking_location != "head") @@ -1539,9 +1539,9 @@ var/global/list/special_role_times = list( //minimum age (in days) for accounts if("m_style_body") if(S.bodyflags & HAS_BODY_MARKINGS) //Species with body markings/tattoos. var/list/valid_markings = list() - valid_markings["None"] = marking_styles_list["None"] - for(var/markingstyle in marking_styles_list) - var/datum/sprite_accessory/M = marking_styles_list[markingstyle] + valid_markings["None"] = GLOB.marking_styles_list["None"] + for(var/markingstyle in GLOB.marking_styles_list) + var/datum/sprite_accessory/M = GLOB.marking_styles_list[markingstyle] if(!(species in M.species_allowed)) continue if(M.marking_location != "body") @@ -1563,9 +1563,9 @@ var/global/list/special_role_times = list( //minimum age (in days) for accounts if("m_style_tail") if(S.bodyflags & HAS_TAIL_MARKINGS) //Species with tail markings. var/list/valid_markings = list() - valid_markings["None"] = marking_styles_list["None"] - for(var/markingstyle in marking_styles_list) - var/datum/sprite_accessory/body_markings/tail/M = marking_styles_list[markingstyle] + valid_markings["None"] = GLOB.marking_styles_list["None"] + for(var/markingstyle in GLOB.marking_styles_list) + var/datum/sprite_accessory/body_markings/tail/M = GLOB.marking_styles_list[markingstyle] if(M.marking_location != "tail") continue if(!(species in M.species_allowed)) @@ -1616,7 +1616,7 @@ var/global/list/special_role_times = list( //minimum age (in days) for accounts if("secondary_facial") if(species in list("Human", "Unathi", "Tajaran", "Skrell", "Machine", "Vulpkanin", "Vox")) - var/datum/sprite_accessory/facial_hair_style = facial_hair_styles_list[f_style] + var/datum/sprite_accessory/facial_hair_style = GLOB.facial_hair_styles_list[f_style] if(facial_hair_style.secondary_theme && !facial_hair_style.no_sec_colour) var/new_facial = input(user, "Choose your character's secondary facial-hair colour:", "Character Preference", f_sec_colour) as color|null if(new_facial) @@ -1624,8 +1624,8 @@ var/global/list/special_role_times = list( //minimum age (in days) for accounts if("f_style") var/list/valid_facial_hairstyles = list() - for(var/facialhairstyle in facial_hair_styles_list) - var/datum/sprite_accessory/SA = facial_hair_styles_list[facialhairstyle] + for(var/facialhairstyle in GLOB.facial_hair_styles_list) + var/datum/sprite_accessory/SA = GLOB.facial_hair_styles_list[facialhairstyle] if(facialhairstyle == "Shaved") //Just in case. valid_facial_hairstyles += facialhairstyle @@ -1657,30 +1657,30 @@ var/global/list/special_role_times = list( //minimum age (in days) for accounts if("underwear") var/list/valid_underwear = list() - for(var/underwear in underwear_list) - var/datum/sprite_accessory/SA = underwear_list[underwear] + for(var/underwear in GLOB.underwear_list) + var/datum/sprite_accessory/SA = GLOB.underwear_list[underwear] if(gender == MALE && SA.gender == FEMALE) continue if(gender == FEMALE && SA.gender == MALE) continue if(!(species in SA.species_allowed)) continue - valid_underwear[underwear] = underwear_list[underwear] + valid_underwear[underwear] = GLOB.underwear_list[underwear] var/new_underwear = input(user, "Choose your character's underwear:", "Character Preference") as null|anything in valid_underwear ShowChoices(user) if(new_underwear) underwear = new_underwear if("undershirt") var/list/valid_undershirts = list() - for(var/undershirt in undershirt_list) - var/datum/sprite_accessory/SA = undershirt_list[undershirt] + for(var/undershirt in GLOB.undershirt_list) + var/datum/sprite_accessory/SA = GLOB.undershirt_list[undershirt] if(gender == MALE && SA.gender == FEMALE) continue if(gender == FEMALE && SA.gender == MALE) continue if(!(species in SA.species_allowed)) continue - valid_undershirts[undershirt] = undershirt_list[undershirt] + valid_undershirts[undershirt] = GLOB.undershirt_list[undershirt] var/new_undershirt = input(user, "Choose your character's undershirt:", "Character Preference") as null|anything in valid_undershirts ShowChoices(user) if(new_undershirt) @@ -1688,15 +1688,15 @@ var/global/list/special_role_times = list( //minimum age (in days) for accounts if("socks") var/list/valid_sockstyles = list() - for(var/sockstyle in socks_list) - var/datum/sprite_accessory/SA = socks_list[sockstyle] + for(var/sockstyle in GLOB.socks_list) + var/datum/sprite_accessory/SA = GLOB.socks_list[sockstyle] if(gender == MALE && SA.gender == FEMALE) continue if(gender == FEMALE && SA.gender == MALE) continue if(!(species in SA.species_allowed)) continue - valid_sockstyles[sockstyle] = socks_list[sockstyle] + valid_sockstyles[sockstyle] = GLOB.socks_list[sockstyle] var/new_socks = input(user, "Choose your character's socks:", "Character Preference") as null|anything in valid_sockstyles ShowChoices(user) if(new_socks) @@ -1738,7 +1738,7 @@ var/global/list/special_role_times = list( //minimum age (in days) for accounts ooccolor = new_ooccolor if("bag") - var/new_backbag = input(user, "Choose your character's style of bag:", "Character Preference") as null|anything in backbaglist + var/new_backbag = input(user, "Choose your character's style of bag:", "Character Preference") as null|anything in GLOB.backbaglist if(new_backbag) backbag = new_backbag @@ -1816,8 +1816,8 @@ var/global/list/special_role_times = list( //minimum age (in days) for accounts if("Normal") if(limb == "head") m_styles["head"] = "None" - h_style = hair_styles_public_list["Bald"] - f_style = facial_hair_styles_list["Shaved"] + h_style = GLOB.hair_styles_public_list["Bald"] + f_style = GLOB.facial_hair_styles_list["Shaved"] organ_data[limb] = null rlimb_data[limb] = null if(third_limb) @@ -1867,8 +1867,8 @@ var/global/list/special_role_times = list( //minimum age (in days) for accounts if(limb == "head") ha_style = "None" alt_head = null - h_style = hair_styles_public_list["Bald"] - f_style = facial_hair_styles_list["Shaved"] + h_style = GLOB.hair_styles_public_list["Bald"] + f_style = GLOB.facial_hair_styles_list["Shaved"] m_styles["head"] = "None" rlimb_data[limb] = choice organ_data[limb] = "cyborg" @@ -2092,9 +2092,9 @@ var/global/list/special_role_times = list( //minimum age (in days) for accounts var/firstspace = findtext(real_name, " ") var/name_length = length(real_name) if(!firstspace) //we need a surname - real_name += " [pick(last_names)]" + real_name += " [pick(GLOB.last_names)]" else if(firstspace == name_length) - real_name += "[pick(last_names)]" + real_name += "[pick(GLOB.last_names)]" character.add_language(language) diff --git a/code/modules/client/preference/preferences_mysql.dm b/code/modules/client/preference/preferences_mysql.dm index 318cf8fb0bb..086040b5595 100644 --- a/code/modules/client/preference/preferences_mysql.dm +++ b/code/modules/client/preference/preferences_mysql.dm @@ -272,12 +272,12 @@ for(var/marking_location in m_colours) m_colours[marking_location] = sanitize_hexcolor(m_colours[marking_location], DEFAULT_MARKING_COLOURS[marking_location]) hacc_colour = sanitize_hexcolor(hacc_colour) - h_style = sanitize_inlist(h_style, hair_styles_public_list, initial(h_style)) - f_style = sanitize_inlist(f_style, facial_hair_styles_list, initial(f_style)) + h_style = sanitize_inlist(h_style, GLOB.hair_styles_public_list, initial(h_style)) + f_style = sanitize_inlist(f_style, GLOB.facial_hair_styles_list, initial(f_style)) for(var/marking_location in m_styles) - m_styles[marking_location] = sanitize_inlist(m_styles[marking_location], marking_styles_list, DEFAULT_MARKING_STYLES[marking_location]) - ha_style = sanitize_inlist(ha_style, head_accessory_styles_list, initial(ha_style)) - alt_head = sanitize_inlist(alt_head, alt_heads_list, initial(alt_head)) + m_styles[marking_location] = sanitize_inlist(m_styles[marking_location], GLOB.marking_styles_list, DEFAULT_MARKING_STYLES[marking_location]) + ha_style = sanitize_inlist(ha_style, GLOB.head_accessory_styles_list, initial(ha_style)) + alt_head = sanitize_inlist(alt_head, GLOB.alt_heads_list, initial(alt_head)) e_colour = sanitize_hexcolor(e_colour) underwear = sanitize_text(underwear, initial(underwear)) undershirt = sanitize_text(undershirt, initial(undershirt)) diff --git a/code/modules/client/preference/preferences_spawnpoints.dm b/code/modules/client/preference/preferences_spawnpoints.dm index 60d77b38873..38b6b87ef43 100644 --- a/code/modules/client/preference/preferences_spawnpoints.dm +++ b/code/modules/client/preference/preferences_spawnpoints.dm @@ -13,14 +13,14 @@ var/list/spawntypes = list() var/list/restrict_job = null var/list/disallow_job = null - proc/check_job_spawning(job) - if(restrict_job && !(job in restrict_job)) - return 0 +/datum/spawnpoint/proc/check_job_spawning(job) + if(restrict_job && !(job in restrict_job)) + return 0 - if(disallow_job && (job in disallow_job)) - return 0 + if(disallow_job && (job in disallow_job)) + return 0 - return 1 + return 1 /datum/spawnpoint/arrivals display_name = "Arrivals Shuttle" @@ -54,4 +54,4 @@ var/list/spawntypes = list() /datum/spawnpoint/cyborg/New() ..() - turfs = latejoin_cyborg \ No newline at end of file + turfs = latejoin_cyborg 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/gloves/miscellaneous.dm b/code/modules/clothing/gloves/miscellaneous.dm index 40c29c1d991..5e1beb969ef 100644 --- a/code/modules/clothing/gloves/miscellaneous.dm +++ b/code/modules/clothing/gloves/miscellaneous.dm @@ -92,9 +92,7 @@ if(H.a_intent == INTENT_HARM) var/mob/living/carbon/C = A if(cell.use(stun_cost)) - var/datum/effect_system/spark_spread/s = new /datum/effect_system/spark_spread - s.set_up(5, 0, loc) - s.start() + do_sparks(5, 0, loc) playsound(loc, 'sound/weapons/Egloves.ogg', 50, 1, -1) H.do_attack_animation(C) visible_message("[C] has been touched with [src] by [H]!") diff --git a/code/modules/clothing/masks/breath.dm b/code/modules/clothing/masks/breath.dm index b47856fb38c..55c305cf449 100644 --- a/code/modules/clothing/masks/breath.dm +++ b/code/modules/clothing/masks/breath.dm @@ -10,10 +10,9 @@ permeability_coefficient = 0.50 actions_types = list(/datum/action/item_action/adjust) burn_state = FIRE_PROOF - species_fit = list("Vox", "Vox Armalis", "Unathi", "Tajaran", "Vulpkanin", "Grey" ) + species_fit = list("Vox", "Unathi", "Tajaran", "Vulpkanin", "Grey" ) sprite_sheets = list( "Vox" = 'icons/mob/species/vox/mask.dmi', - "Vox Armalis" = 'icons/mob/species/armalis/mask.dmi', "Unathi" = 'icons/mob/species/unathi/mask.dmi', "Tajaran" = 'icons/mob/species/tajaran/mask.dmi', "Vulpkanin" = 'icons/mob/species/vulpkanin/mask.dmi', diff --git a/code/modules/clothing/masks/miscellaneous.dm b/code/modules/clothing/masks/miscellaneous.dm index fba251f71f8..c10ccf32f89 100644 --- a/code/modules/clothing/masks/miscellaneous.dm +++ b/code/modules/clothing/masks/miscellaneous.dm @@ -170,9 +170,7 @@ var/mob/M = can_shock(loc) if(M) to_chat(M, "You feel a sharp shock!") - var/datum/effect_system/spark_spread/s = new /datum/effect_system/spark_spread - s.set_up(3, 1, M) - s.start() + do_sparks(3, 1, M) M.Weaken(5) M.Stuttering(1) diff --git a/code/modules/clothing/masks/voice.dm b/code/modules/clothing/masks/voice.dm index 01dd9a65a99..b5b6298dcb2 100644 --- a/code/modules/clothing/masks/voice.dm +++ b/code/modules/clothing/masks/voice.dm @@ -28,4 +28,11 @@ /obj/item/clothing/mask/gas/voice/New() ..() - changer = new(src) \ No newline at end of file + changer = new(src) + +/obj/item/clothing/mask/gas/voice/clown + name = "clown wig and mask" + desc = "A true prankster's facial attire. A clown is incomplete without his wig and mask." + icon_state = "clown" + item_state = "clown_hat" + flags = BLOCK_GAS_SMOKE_EFFECT | AIRTIGHT | BLOCKHAIR \ No newline at end of file diff --git a/code/modules/clothing/spacesuits/hardsuit.dm b/code/modules/clothing/spacesuits/hardsuit.dm index 2ba550d8a81..dea27a5b946 100644 --- a/code/modules/clothing/spacesuits/hardsuit.dm +++ b/code/modules/clothing/spacesuits/hardsuit.dm @@ -591,9 +591,7 @@ /obj/item/clothing/suit/space/hardsuit/shielded/hit_reaction(mob/living/carbon/human/owner, attack_text) if(current_charges > 0) - var/datum/effect_system/spark_spread/s = new - s.set_up(2, 1, src) - s.start() + do_sparks(2, 1, src) owner.visible_message("[owner]'s shields deflect [attack_text] in a shower of sparks!") current_charges-- recharge_cooldown = world.time + recharge_delay diff --git a/code/modules/clothing/suits/miscellaneous.dm b/code/modules/clothing/suits/miscellaneous.dm index 968d12d9baf..d2e7d7687bb 100644 --- a/code/modules/clothing/suits/miscellaneous.dm +++ b/code/modules/clothing/suits/miscellaneous.dm @@ -247,7 +247,7 @@ var/image/I = image(icon = 'icons/mob/robots.dmi' , icon_state = "robot", loc = H) I.override = 1 I.overlays += image(icon = 'icons/mob/robots.dmi' , icon_state = "eyes-robot") //gotta look realistic - H.add_alt_appearance("standard_borg_disguise", I, silicon_mob_list+H) //you look like a robot to robots! (including yourself because you're totally a robot) + H.add_alt_appearance("standard_borg_disguise", I, GLOB.silicon_mob_list+H) //you look like a robot to robots! (including yourself because you're totally a robot) /obj/item/clothing/suit/snowman name = "snowman outfit" diff --git a/code/modules/clothing/under/accessories/accessory.dm b/code/modules/clothing/under/accessories/accessory.dm index a243e734ef6..2abadbc55f9 100644 --- a/code/modules/clothing/under/accessories/accessory.dm +++ b/code/modules/clothing/under/accessories/accessory.dm @@ -390,7 +390,7 @@ icon_state = "necklace" item_state = "necklace" item_color = "necklace" - slot_flags = SLOT_MASK | SLOT_TIE + slot_flags = SLOT_TIE /obj/item/clothing/accessory/necklace/locket name = "gold locket" @@ -398,7 +398,7 @@ icon_state = "locket" item_state = "locket" item_color = "locket" - slot_flags = SLOT_MASK | SLOT_TIE + slot_flags = SLOT_TIE var/base_icon var/open var/obj/item/held //Item inside locket. diff --git a/code/modules/clothing/under/color.dm b/code/modules/clothing/under/color.dm index 7b6b85326c3..08c7c403ff5 100644 --- a/code/modules/clothing/under/color.dm +++ b/code/modules/clothing/under/color.dm @@ -61,7 +61,7 @@ desc = "A terribly ragged and frayed grey jumpsuit. It looks like it hasn't been washed in over a decade." /obj/item/clothing/under/color/grey/glorf/hit_reaction(mob/living/carbon/human/owner) - owner.forcesay(hit_appends) + owner.forcesay(GLOB.hit_appends) return 0 /obj/item/clothing/under/color/orange diff --git a/code/modules/countdown/countdown.dm b/code/modules/countdown/countdown.dm index 54ec874c743..d860ba9c4cd 100644 --- a/code/modules/countdown/countdown.dm +++ b/code/modules/countdown/countdown.dm @@ -28,13 +28,13 @@ /obj/effect/countdown/proc/start() if(!started) - fast_processing += src + GLOB.fast_processing += src started = TRUE /obj/effect/countdown/proc/stop() if(started) maptext = null - fast_processing -= src + GLOB.fast_processing -= src started = FALSE /obj/effect/countdown/proc/get_value() @@ -57,7 +57,7 @@ /obj/effect/countdown/Destroy() attached_to = null - fast_processing -= src + GLOB.fast_processing -= src return ..() /obj/effect/countdown/ex_act(severity) //immune to explosions diff --git a/code/modules/crafting/craft.dm b/code/modules/crafting/craft.dm index fe8e84163e3..ea5e4a652aa 100644 --- a/code/modules/crafting/craft.dm +++ b/code/modules/crafting/craft.dm @@ -69,7 +69,7 @@ else if(istype(I, /obj/item/reagent_containers)) var/obj/item/reagent_containers/RC = I - if(RC.flags & OPENCONTAINER) + if(RC.container_type & OPENCONTAINER) for(var/datum/reagent/A in RC.reagents.reagent_list) .[A.type] += A.volume .[I.type] += 1 @@ -252,7 +252,7 @@ var/list/surroundings = get_surroundings(user) var/list/can_craft = list() var/list/cant_craft = list() - for(var/rec in crafting_recipes) + for(var/rec in GLOB.crafting_recipes) var/datum/crafting_recipe/R = rec if(R.category != cur_category) continue diff --git a/code/modules/customitems/item_defines.dm b/code/modules/customitems/item_defines.dm index caa13863937..2c4703967d6 100644 --- a/code/modules/customitems/item_defines.dm +++ b/code/modules/customitems/item_defines.dm @@ -53,7 +53,7 @@ to_chat(user, "[target] already has body markings, any more would look silly!") return - var/datum/sprite_accessory/body_markings/tattoo/temp_tatt = marking_styles_list[tattoo_icon] + var/datum/sprite_accessory/body_markings/tattoo/temp_tatt = GLOB.marking_styles_list[tattoo_icon] if(!(target.dna.species.name in temp_tatt.species_allowed)) to_chat(user, "You can't think of a way to make the [tattoo_name] design work on [target == user ? "your" : "[target]'s"] body type.") return @@ -1021,6 +1021,17 @@ flags_inv = HIDEEARS //////////// Uniforms //////////// +/obj/item/clothing/under/fluff/counterfeitguise_uniform // thatdanguy23 : Rissa Williams + icon = 'icons/obj/custom_items.dmi' + name = "Rissa's hand-me-downs" + desc = "An old, hand-me-down baggy sweater and sweatpants combo. A label on the neck reads 'RISSA' in scruffy handwriting." + lefthand_file = 'icons/mob/inhands/fluff_lefthand.dmi' + righthand_file = 'icons/mob/inhands/fluff_righthand.dmi' + icon_state = "counterfeitguise" + item_state = "counterfeitguise" + item_color = "counterfeitguise" + flags_size = ONESIZEFITSALL + /obj/item/clothing/under/fluff/benjaminfallout // Benjaminfallout: Pretzel Brassheart icon = 'icons/obj/custom_items.dmi' name = "Pretzel's dress" diff --git a/code/modules/detective_work/footprints_and_rag.dm b/code/modules/detective_work/footprints_and_rag.dm index dda9490b82a..31f9e66255b 100644 --- a/code/modules/detective_work/footprints_and_rag.dm +++ b/code/modules/detective_work/footprints_and_rag.dm @@ -19,7 +19,8 @@ possible_transfer_amounts = list(5) volume = 5 can_be_placed_into = null - flags = OPENCONTAINER | NOBLUDGEON + flags = NOBLUDGEON + container_type = OPENCONTAINER var/wipespeed = 30 /obj/item/reagent_containers/glass/rag/attack(atom/target as obj|turf|area, mob/user as mob , flag) diff --git a/code/modules/economy/ATM.dm b/code/modules/economy/ATM.dm index e43797ef9dd..595eace858e 100644 --- a/code/modules/economy/ATM.dm +++ b/code/modules/economy/ATM.dm @@ -74,7 +74,7 @@ log transactions authenticated_account.charge(-cash_amount, null, "Credit deposit", terminal_id = machine_id, dest_name = "Terminal") /obj/machinery/atm/proc/reconnect_database() - for(var/obj/machinery/computer/account_database/DB in machines) + for(var/obj/machinery/computer/account_database/DB in GLOB.machines) if(DB.z == z && !(DB.stat & NOPOWER) && DB.activated) linked_db = DB break diff --git a/code/modules/economy/Accounts.dm b/code/modules/economy/Accounts.dm index f1f283fe56a..6001cf3f84e 100644 --- a/code/modules/economy/Accounts.dm +++ b/code/modules/economy/Accounts.dm @@ -65,7 +65,7 @@ var/global/list/all_money_accounts = list() T.amount = starting_funds if(!source_db) //set a random date, time and location some time over the past few decades - T.date = "[num2text(rand(1,31))] [pick(month_names)], [rand(game_year - 20,game_year - 1)]" + T.date = "[num2text(rand(1,31))] [pick(GLOB.month_names)], [rand(game_year - 20,game_year - 1)]" T.time = "[rand(0,23)]:[rand(0,59)]:[rand(0,59)]" T.source_terminal = "NTGalaxyNet Terminal #[rand(111,1111)]" diff --git a/code/modules/economy/EFTPOS.dm b/code/modules/economy/EFTPOS.dm index b636a96e2aa..f9bb22fcda4 100644 --- a/code/modules/economy/EFTPOS.dm +++ b/code/modules/economy/EFTPOS.dm @@ -49,7 +49,7 @@ if(!location) return - for(var/obj/machinery/computer/account_database/DB in machines) + for(var/obj/machinery/computer/account_database/DB in GLOB.machines) if(DB.z == location.z) linked_db = DB break diff --git a/code/modules/economy/Economy_Events_Mundane.dm b/code/modules/economy/Economy_Events_Mundane.dm index 6d408af2901..1b5467a3a1c 100644 --- a/code/modules/economy/Economy_Events_Mundane.dm +++ b/code/modules/economy/Economy_Events_Mundane.dm @@ -109,9 +109,9 @@ newMsg.body += "and their partner announced the birth of their [pick("first","second","third")] child on [affected_dest.name] early this morning. \ Doctors say the child is well, and the parents are considering " if(prob(50)) - newMsg.body += capitalize(pick(first_names_female)) + newMsg.body += capitalize(pick(GLOB.first_names_female)) else - newMsg.body += capitalize(pick(first_names_male)) + newMsg.body += capitalize(pick(GLOB.first_names_male)) newMsg.body += " for the name." else if(prob(50)) newMsg.body += "announced their [pick("split","break up","marriage","engagement")] with [pick("TV host","webcast personality","superstar","model","actor","singer")] \ diff --git a/code/modules/error_handler/error_viewer.dm b/code/modules/error_handler/error_viewer.dm index d17b75b986e..fdcbe6056b5 100644 --- a/code/modules/error_handler/error_viewer.dm +++ b/code/modules/error_handler/error_viewer.dm @@ -14,7 +14,7 @@ var/global/datum/ErrorViewer/ErrorCache/error_cache = new() var/global/datum/ErrorViewer/ErrorCache/error_cache = null #endif -// - ErrorSource datums exist for each line (of code) that generates an error, +// - ErrorSource datums exist for each line (of code) that generates an error, // and keep track of all errors generated by that line. // // - ErrorEntry datums exist for each logged error, and keep track of all @@ -68,10 +68,10 @@ var/global/datum/ErrorViewer/ErrorCache/error_cache = null if(!linktext) linktext = name if(istype(back_to)) - back_to_param = ";viewruntime_backto=\ref[back_to]" + back_to_param = ";viewruntime_backto=[back_to.UID()]" if(linear) back_to_param += ";viewruntime_linear=1" - return "[html_encode(linktext)]" + return "[html_encode(linktext)]" /datum/ErrorViewer/ErrorCache var/list/errors = list() @@ -181,15 +181,15 @@ var/global/datum/ErrorViewer/ErrorCache/error_cache = null if(srcRef) html += "
src: VV" if(ispath(srcType, /mob)) - html += " PP" - html += " Follow" + html += " PP" + html += " Follow" if(istype(srcLoc)) html += "
src.loc: VV" html += " JMP" if(usrRef) html += "
usr: VV" - html += " PP" - html += " Follow" + html += " PP" + html += " Follow" if(istype(usrLoc)) html += "
usr.loc: VV" html += " JMP" diff --git a/code/modules/events/alien_infestation.dm b/code/modules/events/alien_infestation.dm index 288fbe3f809..7e4473cb0d2 100644 --- a/code/modules/events/alien_infestation.dm +++ b/code/modules/events/alien_infestation.dm @@ -24,7 +24,7 @@ var/obj/vent = pick_n_take(vents) var/mob/C = pick_n_take(candidates) if(C) - respawnable_list -= C.client + GLOB.respawnable_list -= C.client var/mob/living/carbon/alien/larva/new_xeno = new(vent.loc) new_xeno.key = C.key if(ticker && ticker.mode) diff --git a/code/modules/events/aurora_caelus.dm b/code/modules/events/aurora_caelus.dm index 6cf5e1b1ce7..dfdb503cc54 100644 --- a/code/modules/events/aurora_caelus.dm +++ b/code/modules/events/aurora_caelus.dm @@ -11,7 +11,7 @@ Nanotrasen has approved a short break for all employees to relax and observe thi During this time, starlight will be bright but gentle, shifting between quiet green and blue colors. \ Any staff who would like to view these lights for themselves may proceed to the area nearest to them with viewing ports to open space. \ We hope you enjoy the lights.", "Harmless ions approaching", new_sound = 'sound/misc/notice2.ogg', from = "Nanotrasen Meteorology Division") - for(var/V in player_list) + for(var/V in GLOB.player_list) var/mob/M = V if((M.client.prefs.toggles & SOUND_MIDI) && is_station_level(M.z)) M.playsound_local(null, 'sound/ambience/aurora_caelus.ogg', 20, FALSE, pressure_affected = FALSE) diff --git a/code/modules/events/blob.dm b/code/modules/events/blob.dm index a482642f023..7ea71547123 100644 --- a/code/modules/events/blob.dm +++ b/code/modules/events/blob.dm @@ -13,7 +13,7 @@ if(!candidates.len) return kill() var/list/vents = list() - for(var/obj/machinery/atmospherics/unary/vent_pump/temp_vent in all_vent_pumps) + for(var/obj/machinery/atmospherics/unary/vent_pump/temp_vent in GLOB.all_vent_pumps) if(is_station_level(temp_vent.loc.z) && !temp_vent.welded) if(temp_vent.parent.other_atmosmch.len > 50) vents += temp_vent diff --git a/code/modules/events/brand_intelligence.dm b/code/modules/events/brand_intelligence.dm index f687f33803d..2179cf411b4 100644 --- a/code/modules/events/brand_intelligence.dm +++ b/code/modules/events/brand_intelligence.dm @@ -17,7 +17,7 @@ event_announcement.Announce("Rampant brand intelligence has been detected aboard [station_name()], please stand-by. The origin is believed to be \a [originMachine.name].", "Machine Learning Alert") /datum/event/brand_intelligence/start() - for(var/obj/machinery/vending/V in machines) + for(var/obj/machinery/vending/V in GLOB.machines) if(!is_station_level(V.z)) continue vendingMachines.Add(V) @@ -29,7 +29,7 @@ vendingMachines.Remove(originMachine) originMachine.shut_up = 0 originMachine.shoot_inventory = 1 - log_debug("Original brand intelligence machine: [originMachine] [ADMIN_VV(originMachine)] [ADMIN_JMP(originMachine)]") + log_debug("Original brand intelligence machine: [originMachine] ([ADMIN_VV(originMachine,"VV")]) [ADMIN_JMP(originMachine)]") /datum/event/brand_intelligence/tick() if(!originMachine || QDELETED(originMachine) || originMachine.shut_up || originMachine.wires.IsAllCut()) //if the original vending machine is missing or has it's voice switch flipped diff --git a/code/modules/events/carp_migration.dm b/code/modules/events/carp_migration.dm index cd9b0c02206..215deea4d9f 100644 --- a/code/modules/events/carp_migration.dm +++ b/code/modules/events/carp_migration.dm @@ -23,7 +23,7 @@ /datum/event/carp_migration/start() if(severity == EVENT_LEVEL_MAJOR) - spawn_fish(landmarks_list.len) + spawn_fish(GLOB.landmarks_list.len) else if(severity == EVENT_LEVEL_MODERATE) spawn_fish(rand(4, 6)) //12 to 30 carp, in small groups else @@ -32,7 +32,7 @@ /datum/event/carp_migration/proc/spawn_fish(var/num_groups, var/group_size_min=3, var/group_size_max=5) var/list/spawn_locations = list() - for(var/obj/effect/landmark/C in landmarks_list) + for(var/obj/effect/landmark/C in GLOB.landmarks_list) if(C.name == "carpspawn") spawn_locations.Add(C.loc) spawn_locations = shuffle(spawn_locations) diff --git a/code/modules/events/communications_blackout.dm b/code/modules/events/communications_blackout.dm index 1b499027150..58fc9af56a3 100644 --- a/code/modules/events/communications_blackout.dm +++ b/code/modules/events/communications_blackout.dm @@ -6,7 +6,7 @@ "Ionospheri:%? MCayj^j<.3-BZZZZZZT", \ "#4nd%;f4y6,>?%-BZZZZZZZT") - for(var/mob/living/silicon/ai/A in player_list) //AIs are always aware of communication blackouts. + for(var/mob/living/silicon/ai/A in GLOB.player_list) //AIs are always aware of communication blackouts. to_chat(A, "
") to_chat(A, "[alert]") to_chat(A, "
") @@ -22,7 +22,7 @@ if(!silent) event_announcement.Announce("Ionospheric anomalies detected. Temporary telecommunication failure imminent. Please contact you-BZZT", new_sound = 'sound/misc/interference.ogg') else // AIs will always know if there's a comm blackout, rogue AIs could then lie about comm blackouts in the future while they shutdown comms - for(var/mob/living/silicon/ai/A in player_list) + for(var/mob/living/silicon/ai/A in GLOB.player_list) to_chat(A, "
") to_chat(A, "Ionospheric anomalies detected. Temporary telecommunication failure imminent. Please contact you-BZZT") to_chat(A, "
") diff --git a/code/modules/events/disease_outbreak.dm b/code/modules/events/disease_outbreak.dm index 87836f217b8..e42030b6622 100644 --- a/code/modules/events/disease_outbreak.dm +++ b/code/modules/events/disease_outbreak.dm @@ -13,7 +13,7 @@ if(!virus_type) virus_type = pick(/datum/disease/advance/flu, /datum/disease/advance/cold, /datum/disease/brainrot, /datum/disease/magnitis, /datum/disease/beesease, /datum/disease/anxiety, /datum/disease/fake_gbs, /datum/disease/fluspanish, /datum/disease/pierrot_throat, /datum/disease/lycan) - for(var/mob/living/carbon/human/H in shuffle(living_mob_list)) + for(var/mob/living/carbon/human/H in shuffle(GLOB.living_mob_list)) if(issmall(H)) //don't infect monkies; that's a waste continue if(!H.client) diff --git a/code/modules/events/electrical_storm.dm b/code/modules/events/electrical_storm.dm index 94ef81ceee5..7eb95454250 100644 --- a/code/modules/events/electrical_storm.dm +++ b/code/modules/events/electrical_storm.dm @@ -10,7 +10,7 @@ for(var/i=1, i <= lightsoutAmount, i++) var/list/possibleEpicentres = list() - for(var/obj/effect/landmark/newEpicentre in landmarks_list) + for(var/obj/effect/landmark/newEpicentre in GLOB.landmarks_list) if(newEpicentre.name == "lightsout" && !(newEpicentre in epicentreList)) possibleEpicentres += newEpicentre if(possibleEpicentres.len) diff --git a/code/modules/events/event_container.dm b/code/modules/events/event_container.dm index 888e2b38dd1..0a99ed6fd14 100644 --- a/code/modules/events/event_container.dm +++ b/code/modules/events/event_container.dm @@ -92,7 +92,7 @@ var/list/event_last_fired = list() // Otherwise, follow the standard setup process else var/playercount_modifier = 1 - switch(player_list.len) + switch(GLOB.player_list.len) if(0 to 10) playercount_modifier = 1.2 if(11 to 15) diff --git a/code/modules/events/event_manager.dm b/code/modules/events/event_manager.dm index 6b230e48e09..1545ddbbdf0 100644 --- a/code/modules/events/event_manager.dm +++ b/code/modules/events/event_manager.dm @@ -355,7 +355,7 @@ /datum/event/proc/num_players() var/players = 0 - for(var/mob/living/carbon/human/P in player_list) + for(var/mob/living/carbon/human/P in GLOB.player_list) if(P.client) players++ return players @@ -373,9 +373,9 @@ active_with_role["Cyborg"] = 0 active_with_role["Janitor"] = 0 active_with_role["Botanist"] = 0 - active_with_role["Any"] = player_list.len + active_with_role["Any"] = GLOB.player_list.len - for(var/mob/M in player_list) + for(var/mob/M in GLOB.player_list) if(!M.mind || !M.client || M.client.inactivity > 10 * 10 * 60) // longer than 10 minutes AFK counts them as inactive continue diff --git a/code/modules/events/grid_check.dm b/code/modules/events/grid_check.dm index c0b16ab43a6..8c099f22a91 100644 --- a/code/modules/events/grid_check.dm +++ b/code/modules/events/grid_check.dm @@ -20,7 +20,7 @@ var/list/skipped_areas = list(/area/turret_protected/ai) var/list/skipped_areas_apc = list(/area/engine/engineering) - for(var/obj/machinery/power/smes/S in machines) + for(var/obj/machinery/power/smes/S in GLOB.machines) var/area/current_area = get_area(S) if((current_area.type in skipped_areas) || !is_station_level(S.z)) continue @@ -33,7 +33,7 @@ S.update_icon() S.power_change() - for(var/obj/machinery/power/apc/C in apcs) + for(var/obj/machinery/power/apc/C in GLOB.apcs) var/area/current_area = get_area(C) if((current_area.type in skipped_areas_apc) || !is_station_level(C.z)) continue @@ -46,13 +46,13 @@ if(announce) event_announcement.Announce("Power has been restored to [station_name()]. We apologize for the inconvenience.", "Power Systems Nominal", new_sound = 'sound/AI/poweron.ogg') - for(var/obj/machinery/power/apc/C in apcs) + for(var/obj/machinery/power/apc/C in GLOB.apcs) var/area/current_area = get_area(C) if((current_area.type in skipped_areas_apc) || !is_station_level(C.z)) continue if(C.cell) C.cell.charge = C.cell.maxcharge - for(var/obj/machinery/power/smes/S in machines) + for(var/obj/machinery/power/smes/S in GLOB.machines) var/area/current_area = get_area(S) if((current_area.type in skipped_areas) || !is_station_level(S.z)) continue @@ -65,7 +65,7 @@ /proc/power_restore_quick(var/announce = 1) if(announce) event_announcement.Announce("All SMESs on [station_name()] have been recharged. We apologize for the inconvenience.", "Power Systems Nominal", new_sound = 'sound/AI/poweron.ogg') - for(var/obj/machinery/power/smes/S in machines) + for(var/obj/machinery/power/smes/S in GLOB.machines) if(!is_station_level(S.z)) continue S.charge = S.capacity diff --git a/code/modules/events/holidays/Christmas.dm b/code/modules/events/holidays/Christmas.dm index d622fcde28f..e04471482a5 100644 --- a/code/modules/events/holidays/Christmas.dm +++ b/code/modules/events/holidays/Christmas.dm @@ -4,7 +4,7 @@ for(var/turf/simulated/floor/T in orange(1,xmas)) for(var/i=1,i<=rand(1,5),i++) new /obj/item/a_gift(T) - for(var/mob/living/simple_animal/corgi/Ian/Ian in mob_list) + for(var/mob/living/simple_animal/corgi/Ian/Ian in GLOB.mob_list) Ian.place_on_head(new /obj/item/clothing/head/helmet/space/santahat(Ian)) /proc/ChristmasEvent() diff --git a/code/modules/events/immovable_rod.dm b/code/modules/events/immovable_rod.dm index d11ffa2ba78..1a6ac2d7706 100644 --- a/code/modules/events/immovable_rod.dm +++ b/code/modules/events/immovable_rod.dm @@ -41,7 +41,7 @@ In my current plan for it, 'solid' will be defined as anything with density == 1 notify_ghosts("\A [src] is inbound!", enter_link="(Click to follow)", source=src, action=NOTIFY_FOLLOW) - poi_list |= src + GLOB.poi_list |= src if(end && end.z==z_original) walk_towards(src, destination, move_delay) @@ -52,7 +52,7 @@ In my current plan for it, 'solid' will be defined as anything with density == 1 ghost.ManualFollow(src) /obj/effect/immovablerod/Destroy() - poi_list.Remove(src) + GLOB.poi_list.Remove(src) return ..() /obj/effect/immovablerod/ex_act(test) diff --git a/code/modules/events/ion_storm.dm b/code/modules/events/ion_storm.dm index a66dcd66d0e..7441abc79ba 100644 --- a/code/modules/events/ion_storm.dm +++ b/code/modules/events/ion_storm.dm @@ -22,7 +22,7 @@ /datum/event/ion_storm/start() //AI laws - for(var/mob/living/silicon/ai/M in living_mob_list) + for(var/mob/living/silicon/ai/M in GLOB.living_mob_list) if(M.stat != 2 && M.see_in_dark != 0) var/message = generate_ion_law(ionMessage) if(message) @@ -32,7 +32,7 @@ to_chat(M, "
") if(botEmagChance) - for(var/mob/living/simple_animal/bot/bot in machines) + for(var/mob/living/simple_animal/bot/bot in GLOB.machines) if(prob(botEmagChance)) bot.emag_act() @@ -492,7 +492,7 @@ /proc/generate_static_ion_law() /var/list/players = list() - for(var/mob/living/carbon/human/player in player_list) + for(var/mob/living/carbon/human/player in GLOB.player_list) if( !player.mind || player.mind.assigned_role == player.mind.special_role || player.client.inactivity > MinutesToTicks(10)) continue players += player.real_name diff --git a/code/modules/events/koi_mirgration.dm b/code/modules/events/koi_mirgration.dm index 868457721b2..cd82f54e37d 100644 --- a/code/modules/events/koi_mirgration.dm +++ b/code/modules/events/koi_mirgration.dm @@ -6,4 +6,4 @@ /datum/event/carp_migration/koi/start() - spawn_fish(landmarks_list.len) \ No newline at end of file + spawn_fish(GLOB.landmarks_list.len) \ No newline at end of file diff --git a/code/modules/events/mass_hallucination.dm b/code/modules/events/mass_hallucination.dm index 321a8135150..5b2554faf15 100644 --- a/code/modules/events/mass_hallucination.dm +++ b/code/modules/events/mass_hallucination.dm @@ -2,7 +2,7 @@ announceWhen = rand(0, 20) /datum/event/mass_hallucination/start() - for(var/mob/living/carbon/human/H in living_mob_list) + for(var/mob/living/carbon/human/H in GLOB.living_mob_list) var/armor = H.getarmor(type = "rad") if((RADIMMUNE in H.dna.species.species_traits) || armor >= 75) // Leave radiation-immune species/rad armored players completely unaffected continue diff --git a/code/modules/events/money_spam.dm b/code/modules/events/money_spam.dm index 03090ede045..d60d120c236 100644 --- a/code/modules/events/money_spam.dm +++ b/code/modules/events/money_spam.dm @@ -52,7 +52,7 @@ if(2) sender = pick(300;"QuickDatingSystem",200;"Find your russian bride",50;"Tajaran beauties are waiting",50;"Find your secret skrell crush",50;"Beautiful unathi brides") message = pick("Your profile caught my attention and I wanted to write and say hello (QuickDating).",\ - "If you will write to me on my email [pick(first_names_female)]@[pick(last_names)].[pick("ru","ck","tj","ur","nt")] I shall necessarily send you a photo (QuickDating).",\ + "If you will write to me on my email [pick(GLOB.first_names_female)]@[pick(GLOB.last_names)].[pick("ru","ck","tj","ur","nt")] I shall necessarily send you a photo (QuickDating).",\ "I want that we write each other and I hope, that you will like my profile and you will answer me (QuickDating).",\ "You have (1) new message!",\ "You have (2) new profile views!") @@ -98,7 +98,7 @@ last_spam_time = world.time if(prob(50)) //Give the AI an increased chance to intercept the message - for(var/mob/living/silicon/ai/ai in mob_list) + for(var/mob/living/silicon/ai/ai in GLOB.mob_list) // Allows other AIs to intercept the message but the AI won't intercept their own message. if(ai.aiPDA != P && ai.aiPDA != src) ai.show_message("Intercepted message from [sender] (Unknown / spam?) to [P:owner]: [message]") diff --git a/code/modules/events/prison_break.dm b/code/modules/events/prison_break.dm index 2ea618acd32..4d71cbc8b8e 100644 --- a/code/modules/events/prison_break.dm +++ b/code/modules/events/prison_break.dm @@ -49,7 +49,7 @@ var/rc_message = "An unknown malicious program has been detected in the [english_list(areaName)] lighting and airlock control systems at [station_time_timestamp()]. Systems will be fully compromised within approximately three minutes. Direct intervention is required immediately.
" for(var/obj/machinery/message_server/MS in world) MS.send_rc_message("Engineering", my_department, rc_message, "", "", 2) - for(var/mob/living/silicon/ai/A in player_list) + for(var/mob/living/silicon/ai/A in GLOB.player_list) to_chat(A, "Malicious program detected in the [english_list(areaName)] lighting and airlock control systems by [my_department].") else diff --git a/code/modules/events/rogue_drones.dm b/code/modules/events/rogue_drones.dm index 6be28375305..2b61744658e 100644 --- a/code/modules/events/rogue_drones.dm +++ b/code/modules/events/rogue_drones.dm @@ -6,7 +6,7 @@ /datum/event/rogue_drone/start() //spawn them at the same place as carp var/list/possible_spawns = list() - for(var/obj/effect/landmark/C in landmarks_list) + for(var/obj/effect/landmark/C in GLOB.landmarks_list) if(C.name == "carpspawn") possible_spawns.Add(C) @@ -38,9 +38,7 @@ /datum/event/rogue_drone/end() var/num_recovered = 0 for(var/mob/living/simple_animal/hostile/retaliate/malf_drone/D in drones_list) - var/datum/effect_system/spark_spread/sparks = new /datum/effect_system/spark_spread() - sparks.set_up(3, 0, D.loc) - sparks.start() + do_sparks(3, 0, D.loc) D.z = level_name_to_num(CENTCOMM) D.has_loot = 0 diff --git a/code/modules/events/sentience.dm b/code/modules/events/sentience.dm index f926f8b6aea..03f56ac701b 100644 --- a/code/modules/events/sentience.dm +++ b/code/modules/events/sentience.dm @@ -6,11 +6,11 @@ var/list/potential = list() var/sentience_type = SENTIENCE_ORGANIC - for(var/mob/living/simple_animal/L in living_mob_list) + for(var/mob/living/simple_animal/L in GLOB.living_mob_list) var/turf/T = get_turf(L) if (T.z != 1) continue - if(!(L in player_list) && !L.mind && (L.sentience_type == sentience_type)) + if(!(L in GLOB.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 diff --git a/code/modules/events/slaughterevent.dm b/code/modules/events/slaughterevent.dm index f46ebcfd605..cbd81f52315 100644 --- a/code/modules/events/slaughterevent.dm +++ b/code/modules/events/slaughterevent.dm @@ -16,13 +16,13 @@ var/datum/mind/player_mind = new /datum/mind(key_of_slaughter) player_mind.active = 1 var/list/spawn_locs = list() - for(var/obj/effect/landmark/L in landmarks_list) + for(var/obj/effect/landmark/L in GLOB.landmarks_list) if(isturf(L.loc)) switch(L.name) if("revenantspawn") spawn_locs += L.loc if(!spawn_locs) //If we can't find any revenant spawns, try the carp spawns - for(var/obj/effect/landmark/L in landmarks_list) + for(var/obj/effect/landmark/L in GLOB.landmarks_list) if(isturf(L.loc)) switch(L.name) if("carpspawn") diff --git a/code/modules/events/spider_terror.dm b/code/modules/events/spider_terror.dm index c956d2fa551..413d27dcbc9 100644 --- a/code/modules/events/spider_terror.dm +++ b/code/modules/events/spider_terror.dm @@ -13,7 +13,7 @@ /datum/event/spider_terror/start() var/list/vents = list() - for(var/obj/machinery/atmospherics/unary/vent_pump/temp_vent in all_vent_pumps) + for(var/obj/machinery/atmospherics/unary/vent_pump/temp_vent in GLOB.all_vent_pumps) if(is_station_level(temp_vent.loc.z) && !temp_vent.welded) if(temp_vent.parent.other_atmosmch.len > 50) vents += temp_vent diff --git a/code/modules/events/spontaneous_appendicitis.dm b/code/modules/events/spontaneous_appendicitis.dm index 237db170612..fb9c146d7cd 100644 --- a/code/modules/events/spontaneous_appendicitis.dm +++ b/code/modules/events/spontaneous_appendicitis.dm @@ -1,5 +1,5 @@ /datum/event/spontaneous_appendicitis/start() - for(var/mob/living/carbon/human/H in shuffle(living_mob_list)) + for(var/mob/living/carbon/human/H in shuffle(GLOB.living_mob_list)) if(issmall(H)) //don't infect monkies; that's a waste. continue if(!H.client) diff --git a/code/modules/events/traders.dm b/code/modules/events/traders.dm index cbeceac1696..0bb832ae1b4 100644 --- a/code/modules/events/traders.dm +++ b/code/modules/events/traders.dm @@ -17,7 +17,7 @@ var/global/list/unused_trade_stations = list("sol") if(!station) // If there are no unused stations, just no. return var/list/spawnlocs = list() - for(var/obj/effect/landmark/landmark in landmarks_list) + for(var/obj/effect/landmark/landmark in GLOB.landmarks_list) if(landmark.name == "traderstart_[station]") spawnlocs += get_turf(landmark) if(!spawnlocs.len) @@ -36,7 +36,7 @@ var/global/list/unused_trade_stations = list("sol") index++ var/mob/C = pick_n_take(candidates) if(C) - respawnable_list -= C.client + GLOB.respawnable_list -= C.client var/mob/living/carbon/human/M = create_trader(picked_loc) M.ckey = C.ckey M.mind.objectives += trader_objectives diff --git a/code/modules/events/undead.dm b/code/modules/events/undead.dm index f705b63611c..57eccc85ceb 100644 --- a/code/modules/events/undead.dm +++ b/code/modules/events/undead.dm @@ -36,5 +36,5 @@ new undeadtype(T) /datum/event/undead/announce() - for(var/mob/living/M in player_list) + for(var/mob/living/M in GLOB.player_list) to_chat(M, "You feel [pick("a chill","a deathly chill","the undead","dirty", "creeped out","afraid","fear")]!") diff --git a/code/modules/events/vent_clog.dm b/code/modules/events/vent_clog.dm index 564194f413b..b45a6882e80 100644 --- a/code/modules/events/vent_clog.dm +++ b/code/modules/events/vent_clog.dm @@ -10,7 +10,7 @@ /datum/event/vent_clog/setup() endWhen = rand(25, 100) - for(var/obj/machinery/atmospherics/unary/vent_scrubber/temp_vent in machines) + for(var/obj/machinery/atmospherics/unary/vent_scrubber/temp_vent in GLOB.machines) if(is_station_level(temp_vent.loc.z)) if(temp_vent.parent.other_atmosmch.len > 50) vents += temp_vent diff --git a/code/modules/events/wormholes.dm b/code/modules/events/wormholes.dm index 91a4612cb16..be145752671 100644 --- a/code/modules/events/wormholes.dm +++ b/code/modules/events/wormholes.dm @@ -56,8 +56,8 @@ if(istype(M, /atom/movable)) var/turf/target - if(portals.len) - var/obj/effect/portal/P = pick(portals) + if(GLOB.portals.len) + var/obj/effect/portal/P = pick(GLOB.portals) if(P && isturf(P.loc)) target = P.loc if(!target) return diff --git a/code/modules/examine/descriptions/structures.dm b/code/modules/examine/descriptions/structures.dm index d8e9b337606..0f7d6c98834 100644 --- a/code/modules/examine/descriptions/structures.dm +++ b/code/modules/examine/descriptions/structures.dm @@ -14,7 +14,7 @@ description_info = "Add a metal floor tile to build a floor on top of the lattice.
\ Lattices can be made by applying metal rods to a space tile." -/obj/structure/stool/bed +/obj/structure/bed description_info = "Click and drag yourself (or anyone) to this to buckle in. Click on this with an empty hand to undo the buckles.
\
\ Anyone with restraints, such as handcuffs, will not be able to unbuckle themselves. They must use the Resist button, or verb, to break free of \ diff --git a/code/modules/fish/fishtank.dm b/code/modules/fish/fishtank.dm index 412c5407ddc..be11094bc6b 100644 --- a/code/modules/fish/fishtank.dm +++ b/code/modules/fish/fishtank.dm @@ -474,7 +474,7 @@ //Finally, report the full examine_message constructed from the above reports - to_chat(user, "[examine_message]") + to_chat(user, "[examine_message]") return examine_message ////////////////////////////// @@ -485,39 +485,37 @@ if(istype(M, /mob/living/simple_animal/pet/cat)) if(M.a_intent == INTENT_HELP) //Cats can try to fish in open tanks on help intent if(lid_switch) //Can't fish in a closed tank. Fishbowls are ALWAYS open. - M.visible_message("[M.name] stares at into [src] while sitting perfectly still.", "The lid is closed, so you stare into [src] intently.") + M.visible_message("[M.name] stares at into [src] while sitting perfectly still.", "The lid is closed, so you stare into [src] intently.") else if(fish_count) //Tank must actually have fish to try catching one - M.visible_message("[M.name] leaps up onto [src] and attempts to fish through the opening!", "You jump up onto [src] and begin fishing through the opening!") + M.visible_message("[M.name] leaps up onto [src] and attempts to fish through the opening!", "You jump up onto [src] and begin fishing through the opening!") if(water_level && prob(45)) //If there is water, there is a chance the cat will slip, Syndicat will spark like E-N when this happens - M.visible_message("[M.name] slipped and got soaked!", "You slipped and got soaked!") + M.visible_message("[M.name] slipped and got soaked!", "You slipped and got soaked!") if(istype(M, /mob/living/simple_animal/pet/cat/Syndi)) - var/datum/effect_system/spark_spread/s = new /datum/effect_system/spark_spread - s.set_up(3, 1, src) - s.start() + do_sparks(3, 1, src) else //No water or didn't slip, get that fish! - M.visible_message("[M.name] catches and devours a live fish!", "You catch and devour a live fish, yum!") + M.visible_message("[M.name] catches and devours a live fish!", "You catch and devour a live fish, yum!") kill_fish() //Kill a random fish M.health = M.maxHealth //Eating fish heals the predator else - to_chat(M, "There are no fish in [src]!") + to_chat(M, "There are no fish in [src]!") else return ..() else if(istype(M, /mob/living/simple_animal/hostile/bear)) if(M.a_intent == INTENT_HELP) //Bears can try to fish in open tanks on help intent if(lid_switch) //Can't fish in a closed tank. Fishbowls are ALWAYS open. - M.visible_message("[M.name] scrapes it's claws along [src]'s lid.", "The lid is closed, so you scrape your claws against [src]'s lid.") + M.visible_message("[M.name] scrapes it's claws along [src]'s lid.", "The lid is closed, so you scrape your claws against [src]'s lid.") else if(fish_count) //Tank must actually have fish to try catching one - M.visible_message("[M.name] reaches into [src] and attempts to fish through the opening!", "You reach into [src] and begin fishing through the opening!") + M.visible_message("[M.name] reaches into [src] and attempts to fish through the opening!", "You reach into [src] and begin fishing through the opening!") if(water_level && prob(5)) //Bears are good at catching fish, only a 5% chance to fail - M.visible_message("[M.name] swipes at the water!", "You just barely missed that fish!") + M.visible_message("[M.name] swipes at the water!", "You just barely missed that fish!") else //No water or didn't slip, get that fish! - M.visible_message("[M.name] catches and devours a live fish!", "You catch and devour a live fish, yum!") + M.visible_message("[M.name] catches and devours a live fish!", "You catch and devour a live fish, yum!") kill_fish() //Kill a random fish M.health = M.maxHealth //Eating fish heals the predator else - to_chat(M, "There are no fish in [src]!") + to_chat(M, "There are no fish in [src]!") else return ..() else @@ -532,8 +530,8 @@ "You hear a banging sound.") else playsound(loc, 'sound/effects/glassknock.ogg', 80, 1) - user.visible_message("[user.name] taps on the [name].", \ - "You tap on the [name].", \ + user.visible_message("[user.name] taps on the [name].", \ + "You tap on the [name].", \ "You hear a knocking sound.") /obj/machinery/fishtank/take_damage(damage_amount, damage_type = BRUTE, damage_flag = 0, sound_effect = 1) @@ -573,62 +571,57 @@ if(W.isOn()) if(obj_integrity < max_integrity) playsound(loc, W.usesound, 50, 1) - to_chat(user, "You repair some of the cracks on [src].") + to_chat(user, "You repair some of the cracks on [src].") obj_integrity = min(obj_integrity + 20, max_integrity) check_health() else - to_chat(user, "There is no damage to fix!") + to_chat(user, "There is no damage to fix!") else if(obj_integrity < max_integrity) - to_chat(user, "[W] must be on to repair this damage.") + to_chat(user, "[W] must be on to repair this damage.") else return ..() //Open reagent containers add and remove water - else if(O.is_open_container()) - if(istype(O, /obj/item/reagent_containers/glass)) - if(lid_switch) - to_chat(user, "Open the lid on [src] first!") - return - var/obj/item/reagent_containers/glass/C = O - //Containers with any reagents will get dumped in - if(C.reagents.total_volume) - var/water_value = 0 - water_value += C.reagents.get_reagent_amount("water") //Water is full value - water_value += C.reagents.get_reagent_amount("holywater") *1.1 //Holywater is (somehow) better. Who said religion had to make sense? - water_value += C.reagents.get_reagent_amount("tonic") * 0.25 //Tonic water is 25% value - water_value += C.reagents.get_reagent_amount("sodawater") * 0.50 //Sodawater is 50% value - water_value += C.reagents.get_reagent_amount("fishwater") * 0.75 //Fishwater is 75% value, to account for the fish poo - water_value += C.reagents.get_reagent_amount("ice") * 0.80 //Ice is 80% value - var/message = "" - if(!water_value) //The container has no water value, clear everything in it - message = "The filtration process removes everything, leaving the water level unchanged." - C.reagents.clear_reagents() - else - if(water_level == water_capacity) - to_chat(user, "[src] is already full!") - else - message = "The filtration process purifies the water, raising the water level." - - if((water_level + water_value) == water_capacity) - message += " You filled [src] to the brim!" - if((water_level + water_value) > water_capacity) - message += " You overfilled [src] and some water runs down the side, wasted." - C.reagents.clear_reagents() - adjust_water_level(water_value) - user.visible_message("[user.name] pours the contents of [C.name] into [src].", "[message]") - //Empty containers will scoop out water, filling the container as much as possible from the water_level + else if(O.is_drainable()) + //Containers with any reagents will get dumped in + if(O.reagents.total_volume) + var/water_value = 0 + water_value += O.reagents.get_reagent_amount("water") //Water is full value + water_value += O.reagents.get_reagent_amount("holywater") *1.1 //Holywater is (somehow) better. Who said religion had to make sense? + water_value += O.reagents.get_reagent_amount("tonic") * 0.25 //Tonic water is 25% value + water_value += O.reagents.get_reagent_amount("sodawater") * 0.50 //Sodawater is 50% value + water_value += O.reagents.get_reagent_amount("fishwater") * 0.75 //Fishwater is 75% value, to account for the fish poo + water_value += O.reagents.get_reagent_amount("ice") * 0.80 //Ice is 80% value + var/message = "" + if(!water_value) //The container has no water value, clear everything in it + message = "The filtration process removes everything, leaving the water level unchanged." + O.reagents.clear_reagents() else - if(!water_level) - to_chat(user, "[src] is empty!") + if(water_level == water_capacity) + to_chat(user, "[src] is already full!") else - if(water_level >= C.volume) //Enough to fill the container completely - C.reagents.add_reagent("fishwater", C.volume) - adjust_water_level(-C.volume) - user.visible_message("[user.name] scoops out some water from [src].", "You completely fill [C.name] from [src].") - else //Fill the container as much as possible with the water_level - C.reagents.add_reagent("fishwater", water_level) - adjust_water_level(-water_level) - user.visible_message("[user.name] scoops out some water from [src].", "You fill [C.name] with the last of the water in [src].") + message = "The filtration process purifies the water, raising the water level." + + if((water_level + water_value) == water_capacity) + message += " You filled [src] to the brim!" + if((water_level + water_value) > water_capacity) + message += " You overfilled [src] and some water runs down the side, wasted." + O.reagents.clear_reagents() + adjust_water_level(water_value) + user.visible_message("[user.name] pours the contents of [O.name] into [src].", "[message]") + //Empty containers will scoop out water, filling the container as much as possible from the water_level + else if(O.is_refillable()) + if(!water_level) + to_chat(user, "[src] is empty!") + else + if(water_level >= O.reagents.maximum_volume) //Enough to fill the container completely + O.reagents.add_reagent("fishwater", O.reagents.maximum_volume) + adjust_water_level(-O.reagents.maximum_volume) + user.visible_message("[user.name] scoops out some water from [src].", "You completely fill [O.name] from [src].") + else //Fill the container as much as possible with the water_level + O.reagents.add_reagent("fishwater", water_level) + adjust_water_level(-water_level) + user.visible_message("[user.name] scoops out some water from [src].", "You fill [O.name] with the last of the water in [src].") //Wrenches can deconstruct empty tanks, but not tanks with any water. Kills any fish left inside and destroys any unharvested eggs in the process else if(iswrench(O)) if(!water_level) @@ -637,17 +630,17 @@ if(do_after(user, 50 * O.toolspeed, target = src)) deconstruct(TRUE) else - to_chat(user, "[src] must be empty before you disassemble it!") + to_chat(user, "[src] must be empty before you disassemble it!") //Fish eggs else if(istype(O, /obj/item/fish_eggs)) var/obj/item/fish_eggs/egg = O //Don't add eggs if there is no water (they kinda need that to live) if(!water_level) - to_chat(user, "[src] has no water; [egg.name] won't hatch without water!") + to_chat(user, "[src] has no water; [egg.name] won't hatch without water!") else //Don't add eggs if the tank already has the max number of fish if(fish_count >= max_fish) - to_chat(user, "[src] can't hold any more fish.") + to_chat(user, "[src] can't hold any more fish.") else add_fish(egg.fish_type) qdel(egg) @@ -657,30 +650,30 @@ if(water_level) if(food_level < 10) if(fish_count == 0) - user.visible_message("[user.name] shakes some fish food into the empty [src]... How sad.", "You shake some fish food into the empty [src]... If only it had fish.") + user.visible_message("[user.name] shakes some fish food into the empty [src]... How sad.", "You shake some fish food into the empty [src]... If only it had fish.") else - user.visible_message("[user.name] feeds the fish in [src]. The fish look excited!", "You feed the fish in [src]. They look excited!") + user.visible_message("[user.name] feeds the fish in [src]. The fish look excited!", "You feed the fish in [src]. They look excited!") adjust_food_level(10) else - to_chat(user, "[src] already has plenty of food in it. You decide to not add more.") + to_chat(user, "[src] already has plenty of food in it. You decide to not add more.") else - to_chat(user, "[src] doesn't have any water in it. You should fill it with water first.") + to_chat(user, "[src] doesn't have any water in it. You should fill it with water first.") //Fish egg scoop else if(istype(O, /obj/item/egg_scoop)) if(egg_count) - user.visible_message("[user.name] harvests some fish eggs from [src].", "You scoop the fish eggs out of [src].") + user.visible_message("[user.name] harvests some fish eggs from [src].", "You scoop the fish eggs out of [src].") harvest_eggs(user) else - user.visible_message("[user.name] fails to harvest any fish eggs from [src].", "There are no fish eggs in [src] to scoop out.") + user.visible_message("[user.name] fails to harvest any fish eggs from [src].", "There are no fish eggs in [src] to scoop out.") //Fish net else if(istype(O, /obj/item/fish_net)) harvest_fish(user) //Tank brush else if(istype(O, /obj/item/tank_brush)) if(filth_level == 0) - to_chat(user, "[src] is already spotless!") + to_chat(user, "[src] is already spotless!") else adjust_filth_level(-filth_level) - user.visible_message("[user.name] scrubs the inside of [src], cleaning the filth.", "You scrub the inside of [src], cleaning the filth.") + user.visible_message("[user.name] scrubs the inside of [src], cleaning the filth.", "You scrub the inside of [src], cleaning the filth.") else return ..() \ No newline at end of file diff --git a/code/modules/flufftext/Dreaming.dm b/code/modules/flufftext/Dreaming.dm index e31a6543ce3..075f119113c 100644 --- a/code/modules/flufftext/Dreaming.dm +++ b/code/modules/flufftext/Dreaming.dm @@ -2,7 +2,7 @@ /mob/living/carbon/proc/dream() - var/list/dreams = custom_dreams(dream_strings, src) + var/list/dreams = custom_dreams(GLOB.dream_strings, src) for(var/obj/item/bedsheet/sheet in loc) dreams += sheet.dream_messages @@ -24,7 +24,7 @@ //NIGHTMARES /mob/living/carbon/proc/nightmare() - var/list/nightmares = nightmare_strings.Copy() + var/list/nightmares = GLOB.nightmare_strings.Copy() for(var/obj/item/bedsheet/sheet in loc) nightmares += sheet.nightmare_messages diff --git a/code/modules/flufftext/Hallucination.dm b/code/modules/flufftext/Hallucination.dm index 2f0032d619f..f9f147e9bf8 100644 --- a/code/modules/flufftext/Hallucination.dm +++ b/code/modules/flufftext/Hallucination.dm @@ -222,7 +222,7 @@ Gunshots/explosions/opening doors/less rare audio (done) /obj/effect/hallucination/simple/clown/New(loc, mob/living/carbon/T, duration) ..(loc, T) - name = pick(clown_names) + name = pick(GLOB.clown_names) sleep(duration) qdel(src) @@ -444,7 +444,7 @@ Gunshots/explosions/opening doors/less rare audio (done) target = T var/image/A = null var/kind = force_kind ? force_kind : pick("clown", "corgi", "carp", "skeleton", "demon","zombie") - for(var/mob/living/carbon/human/H in living_mob_list) + for(var/mob/living/carbon/human/H in GLOB.living_mob_list) if(H == target) continue if(skip_nearby && (H in view(target))) @@ -523,7 +523,7 @@ Gunshots/explosions/opening doors/less rare audio (done) var/mob/living/carbon/human/clone = null var/clone_weapon = null - for(var/mob/living/carbon/human/H in living_mob_list) + for(var/mob/living/carbon/human/H in GLOB.living_mob_list) if(H.stat || H.lying) continue clone = H @@ -735,7 +735,7 @@ var/list/non_fakeattack_weapons = list(/obj/item/gun/projectile, /obj/item/ammo_ target.client.images.Remove(speech_overlay) else // Radio talk var/list/humans = list() - for(var/mob/living/carbon/human/H in living_mob_list) + for(var/mob/living/carbon/human/H in GLOB.living_mob_list) humans += H person = pick(humans) target.hear_radio(pick(radio_messages),language = pick(person.languages),speaker = person, part_a = "\[[get_frequency_name(PUB_FREQ)]\] ", part_b = " ") @@ -1005,7 +1005,7 @@ var/list/non_fakeattack_weapons = list(/obj/item/gun/projectile, /obj/item/ammo_ SetSleeping(20, no_alert = TRUE) if(prob(50)) var/list/dead_people = list() - for(var/mob/dead/observer/G in player_list) + for(var/mob/dead/observer/G in GLOB.player_list) dead_people += G var/mob/dead/observer/fakemob = pick(dead_people) if(fakemob) diff --git a/code/modules/food_and_drinks/drinks/bottler/bottler.dm b/code/modules/food_and_drinks/drinks/bottler/bottler.dm index 6086f2798a7..4cf5c58bd06 100644 --- a/code/modules/food_and_drinks/drinks/bottler/bottler.dm +++ b/code/modules/food_and_drinks/drinks/bottler/bottler.dm @@ -235,7 +235,7 @@ //empties aren't sealed, so let's open it quietly drink_container = new drink_container() drink_container.canopened = 1 - drink_container.flags |= OPENCONTAINER + drink_container.container_type |= OPENCONTAINER drink_container.forceMove(loc) containers[con_type]-- diff --git a/code/modules/food_and_drinks/drinks/bottler/bottler_recipes.dm b/code/modules/food_and_drinks/drinks/bottler/bottler_recipes.dm index d960a944044..2717379ec4d 100644 --- a/code/modules/food_and_drinks/drinks/bottler/bottler_recipes.dm +++ b/code/modules/food_and_drinks/drinks/bottler/bottler_recipes.dm @@ -70,7 +70,7 @@ There is no excuse to do this wrong now that there is an example for you. --Fals /datum/bottler_recipe/Meteor_Malt name = "Meteor Malt" description = "Soft drinks have been detected on collision course with your tastebuds." - ingredients = list(/obj/item/ore, + ingredients = list(/obj/item/stack/ore, /obj/item/reagent_containers/food/snacks/grown/wheat, - /obj/item/ore) + /obj/item/stack/ore) result = "meteor_malt" diff --git a/code/modules/food_and_drinks/drinks/drinks.dm b/code/modules/food_and_drinks/drinks/drinks.dm index 91ee910c8d4..235b0b609f1 100644 --- a/code/modules/food_and_drinks/drinks/drinks.dm +++ b/code/modules/food_and_drinks/drinks/drinks.dm @@ -6,7 +6,7 @@ desc = "yummy" icon = 'icons/obj/drinks.dmi' icon_state = null - flags = OPENCONTAINER + container_type = OPENCONTAINER consume_sound = 'sound/items/drink.ogg' possible_transfer_amounts = list(5,10,15,20,25,30,50) volume = 50 @@ -26,7 +26,11 @@ /obj/item/reagent_containers/food/drinks/attack(mob/M, mob/user, def_zone) if(!reagents || !reagents.total_volume) to_chat(user, " None of [src] left, oh no!") - return 0 + return FALSE + + if(!is_drainable()) + to_chat(user, " You need to open [src] first!") + return FALSE if(istype(M, /mob/living/carbon)) var/mob/living/carbon/C = M @@ -35,15 +39,14 @@ var/mob/living/silicon/robot/borg = user borg.cell.use(30) var/refill = reagents.get_master_reagent_id() - if(refill in drinks) // Only synthesize drinks - spawn(600) - reagents.add_reagent(refill, bitesize) - return 1 - return 0 + if(refill in GLOB.drinks) // Only synthesize drinks + addtimer(CALLBACK(reagents, /datum/reagents.proc/add_reagent, refill, bitesize), 600) + return TRUE + return FALSE /obj/item/reagent_containers/food/drinks/MouseDrop(atom/over_object) //CHUG! CHUG! CHUG! var/mob/living/carbon/chugger = over_object - if (!(flags & OPENCONTAINER)) + if (!(container_type & DRAINABLE)) to_chat(chugger, "You need to open [src] first!") return if(istype(chugger) && loc == chugger && src == chugger.get_active_hand() && reagents.total_volume) @@ -56,38 +59,17 @@ break /obj/item/reagent_containers/food/drinks/afterattack(obj/target, mob/user, proximity) - if(!proximity) return + if(!proximity) + return - // Moved from the can code; not necessary since closed cans aren't open containers now, but, eh. - if(istype(target, /obj/item/reagent_containers/food/drinks/cans)) - var/obj/item/reagent_containers/food/drinks/cans/cantarget = target - if(cantarget.canopened == 0) - to_chat(user, "You need to open the drink you want to pour into!") - return - - if(istype(target, /obj/structure/reagent_dispensers)) //A dispenser. Transfer FROM it TO us. - - if(!target.reagents.total_volume) - to_chat(user, " [target] is empty.") - return - - if(reagents.total_volume >= reagents.maximum_volume) - to_chat(user, " [src] is full.") - return - - var/trans = target.reagents.trans_to(src, amount_per_transfer_from_this) - to_chat(user, " You fill [src] with [trans] units of the contents of [target].") - - else if(target.is_open_container()) //Something like a glass. Player probably wants to transfer TO it. + if(target.is_open_container()) //Something like a glass. Player probably wants to transfer TO it. if(!reagents.total_volume) to_chat(user, " [src] is empty.") - return + return FALSE - if(target.reagents.total_volume >= target.reagents.maximum_volume) + if(target.reagents.holder_full()) to_chat(user, " [target] is full.") - return - - + return FALSE var/datum/reagent/refill var/datum/reagent/refillName @@ -99,22 +81,34 @@ to_chat(user, " You transfer [trans] units of the solution to [target].") if(isrobot(user)) //Cyborg modules that include drinks automatically refill themselves, but drain the borg's cell - if(refill in drinks) // Only synthesize drinks + if(refill in GLOB.drinks) // Only synthesize drinks var/mob/living/silicon/robot/bro = user var/chargeAmount = max(30,4*trans) bro.cell.use(chargeAmount) - to_chat(user, "Now synthesizing [trans] units of [refillName]...") + to_chat(user, "Now synthesizing [trans] units of [refillName]...") + addtimer(CALLBACK(reagents, /datum/reagents.proc/add_reagent, refill, trans), 300) + addtimer(CALLBACK(GLOBAL_PROC, .proc/__to_chat, user, "Cyborg [src] refilled."), 300) + else if(target.is_drainable()) //A dispenser. Transfer FROM it TO us. + if(!is_refillable()) + to_chat(user, "[src]'s tab isn't open!") + return FALSE + if(!target.reagents.total_volume) + to_chat(user, "[target] is empty.") + return FALSE - spawn(300) - reagents.add_reagent(refill, trans) - to_chat(user, "Cyborg [src] refilled.") + if(reagents.holder_full()) + to_chat(user, "[src] is full.") + return FALSE - return + var/trans = target.reagents.trans_to(src, amount_per_transfer_from_this) + to_chat(user, "You fill [src] with [trans] units of the contents of [target].") + + return FALSE /obj/item/reagent_containers/food/drinks/attackby(obj/item/I, mob/user, params) if(istype(I, /obj/item/clothing/mask/cigarette)) //ciggies are weird - return + return FALSE if(is_hot(I)) if(reagents) reagents.chem_temp += 15 @@ -151,7 +145,8 @@ materials = list(MAT_METAL=100) possible_transfer_amounts = list() volume = 5 - flags = CONDUCT | OPENCONTAINER + flags = CONDUCT + container_type = OPENCONTAINER /obj/item/reagent_containers/food/drinks/trophy/gold_cup name = "gold cup" @@ -202,7 +197,7 @@ /obj/item/reagent_containers/food/drinks/ice name = "Ice Cup" desc = "Careful, cold ice, do not chew." - icon_state = "coffee" + icon_state = "icecup" list_reagents = list("ice" = 30) /obj/item/reagent_containers/food/drinks/tea @@ -241,14 +236,14 @@ /obj/item/reagent_containers/food/drinks/weightloss name = "Weight-Loss Shake" desc = "A shake designed to cause weight loss. The package proudly proclaims that it is 'tapeworm free.'" - icon_state = "coffee" + icon_state = "weightshake" list_reagents = list("lipolicide" = 30, "chocolate" = 5) /obj/item/reagent_containers/food/drinks/dry_ramen name = "Cup Ramen" desc = "Just add 10ml of water, self heats! A taste that reminds you of your school years." icon_state = "ramen" - item_state = "coffee" + item_state = "ramen" list_reagents = list("dry_ramen" = 30) /obj/item/reagent_containers/food/drinks/dry_ramen/New() @@ -257,10 +252,10 @@ reagents.add_reagent("enzyme", 3) /obj/item/reagent_containers/food/drinks/chicken_soup - name = "Cup Chicken Soup" - desc = "A delicious and soothing cup of chicken noodle soup; just like spessmom used to make it." - icon_state = "ramen" - item_state = "coffee" + name = "Canned Chicken Soup" + desc = "A delicious and soothing can of chicken noodle soup; just like spessmom used to microwave it." + icon_state = "soupcan" + item_state = "soupcan" list_reagents = list("chicken_soup" = 30) /obj/item/reagent_containers/food/drinks/sillycup @@ -390,4 +385,11 @@ amount_per_transfer_from_this = 20 /obj/item/reagent_containers/food/drinks/waterbottle/large/empty - list_reagents = list() \ No newline at end of file + list_reagents = list() + +/obj/item/reagent_containers/food/drinks/oilcan + name = "oil can" + desc = "Contains oil intended for use on cyborgs, robots, and other synthetics." + icon = 'icons/goonstation/objects/oil.dmi' + icon_state = "oilcan" + volume = 100 \ No newline at end of file diff --git a/code/modules/food_and_drinks/drinks/drinks/bottle.dm b/code/modules/food_and_drinks/drinks/drinks/bottle.dm index d9c59a46d58..cbf06629954 100644 --- a/code/modules/food_and_drinks/drinks/drinks/bottle.dm +++ b/code/modules/food_and_drinks/drinks/drinks/bottle.dm @@ -329,7 +329,7 @@ active = 1 var/turf/bombturf = get_turf(src) var/area/bombarea = get_area(bombturf) - message_admins("[key_name(user)]? has primed a [name] for detonation at [bombarea] (JMP).") + message_admins("[key_name(user)][ADMIN_QUE(user,"?")] has primed a [name] for detonation at [bombarea] (JMP).") log_game("[key_name(user)] has primed a [name] for detonation at [bombarea] ([bombturf.x],[bombturf.y],[bombturf.z]).") to_chat(user, "You light [src] on fire.") diff --git a/code/modules/food_and_drinks/food.dm b/code/modules/food_and_drinks/food.dm index 6b5ff967c85..0ecff55cba0 100644 --- a/code/modules/food_and_drinks/food.dm +++ b/code/modules/food_and_drinks/food.dm @@ -14,6 +14,7 @@ var/instant_application = 0 //if we want to bypass the forcedfeed delay var/taste = TRUE//whether you can taste eating from this burn_state = FLAMMABLE + container_type = INJECTABLE /obj/item/reagent_containers/food/New() ..() diff --git a/code/modules/food_and_drinks/food/condiment.dm b/code/modules/food_and_drinks/food/condiment.dm index b0c0d24efaa..60642cab847 100644 --- a/code/modules/food_and_drinks/food/condiment.dm +++ b/code/modules/food_and_drinks/food/condiment.dm @@ -10,7 +10,7 @@ desc = "Just your average condiment container." icon = 'icons/obj/food/containers.dmi' icon_state = "emptycondiment" - flags = OPENCONTAINER + container_type = OPENCONTAINER possible_transfer_amounts = list(1, 5, 10, 15, 20, 25, 30, 50) volume = 50 //Possible_states has the reagent id as key and a list of, in order, the icon_state, the name and the desc as values. Used in the on_reagent_change() to change names, descs and sprites. @@ -47,7 +47,7 @@ if(!reagents || !reagents.total_volume) return // The condiment might be empty after the delay. user.visible_message("[user] feeds [M] from [src].") - add_attack_logs(user, M, "Fed [src] containing [reagentlist()]") + add_attack_logs(user, M, "Fed [src] containing [reagents.log_list()]") var/fraction = min(10/reagents.total_volume, 1) reagents.reaction(M, INGEST, fraction) @@ -75,7 +75,7 @@ to_chat(user, "You fill [src] with [trans] units of the contents of [target].") //Something like a glass or a food item. Player probably wants to transfer TO it. - else if(target.is_open_container() || istype(target, /obj/item/reagent_containers/food/snacks)) + else if(target.is_drainable() || istype(target, /obj/item/reagent_containers/food/snacks)) if(!reagents.total_volume) to_chat(user, "[src] is empty!") return 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/kitchen_machinery/kitchen_machine.dm b/code/modules/food_and_drinks/kitchen_machinery/kitchen_machine.dm index 9de98749e42..298a5ae2e7e 100644 --- a/code/modules/food_and_drinks/kitchen_machinery/kitchen_machine.dm +++ b/code/modules/food_and_drinks/kitchen_machinery/kitchen_machine.dm @@ -8,7 +8,7 @@ use_power = IDLE_POWER_USE idle_power_usage = 5 active_power_usage = 100 - flags = OPENCONTAINER + container_type = OPENCONTAINER var/operating = 0 // Is it on? var/dirty = 0 // = {0..100} Does it need cleaning? var/broken = 0 // ={0,1,2} How broken is it??? @@ -93,7 +93,7 @@ icon_state = off_icon broken = 0 // Fix it! dirty = 0 // just to be sure - flags = OPENCONTAINER + container_type = OPENCONTAINER else to_chat(user, "It's broken!") return 1 @@ -105,7 +105,7 @@ dirty = 0 // It's clean! broken = 0 // just to be sure icon_state = off_icon - flags = OPENCONTAINER + container_type = OPENCONTAINER else //Otherwise bad luck!! to_chat(user, "It's dirty!") return 1 @@ -392,9 +392,7 @@ updateUsrDialog() /obj/machinery/kitchen_machine/proc/broke() - var/datum/effect_system/spark_spread/s = new - s.set_up(2, 1, src) - s.start() + do_sparks(2, 1, src) icon_state = broken_icon // Make it look all busted up and shit visible_message("The [src] breaks!") //Let them know they're stupid broken = 2 // Make it broken so it can't be used util fixed diff --git a/code/modules/food_and_drinks/recipes/recipes_microwave.dm b/code/modules/food_and_drinks/recipes/recipes_microwave.dm index 70169476c9d..81fbe20e3d4 100644 --- a/code/modules/food_and_drinks/recipes/recipes_microwave.dm +++ b/code/modules/food_and_drinks/recipes/recipes_microwave.dm @@ -471,7 +471,7 @@ datum/recipe/microwave/slimesandwich /datum/recipe/microwave/clownstears reagents = list("water" = 10) items = list( - /obj/item/ore/bananium, + /obj/item/stack/ore/bananium, /obj/item/reagent_containers/food/snacks/grown/banana ) result = /obj/item/reagent_containers/food/snacks/clownstears diff --git a/code/modules/holiday/christmas.dm b/code/modules/holiday/christmas.dm index bd5d97d1580..7b00171b348 100644 --- a/code/modules/holiday/christmas.dm +++ b/code/modules/holiday/christmas.dm @@ -4,7 +4,7 @@ for(var/turf/simulated/floor/T in orange(1,xmas)) for(var/i=1,i<=rand(1,5),i++) new /obj/item/a_gift(T) - for(var/mob/living/simple_animal/pet/corgi/Ian/Ian in mob_list) + for(var/mob/living/simple_animal/pet/corgi/Ian/Ian in GLOB.mob_list) Ian.place_on_head(new /obj/item/clothing/head/helmet/space/santahat(Ian)) /datum/holiday/xmas/handle_event() diff --git a/code/modules/hydroponics/beekeeping/honeycomb.dm b/code/modules/hydroponics/beekeeping/honeycomb.dm index 06a80f72edb..50bbae4a6c4 100644 --- a/code/modules/hydroponics/beekeeping/honeycomb.dm +++ b/code/modules/hydroponics/beekeeping/honeycomb.dm @@ -30,7 +30,7 @@ /obj/item/reagent_containers/honeycomb/proc/set_reagent(reagent) - var/datum/reagent/R = chemical_reagents_list[reagent] + var/datum/reagent/R = GLOB.chemical_reagents_list[reagent] if(istype(R)) name = "honeycomb ([R.name])" honey_color = R.color diff --git a/code/modules/hydroponics/grown.dm b/code/modules/hydroponics/grown.dm index 3fde90ebbb5..772e9f5d856 100644 --- a/code/modules/hydroponics/grown.dm +++ b/code/modules/hydroponics/grown.dm @@ -66,7 +66,7 @@ var/reag_txt = "" if(seed) for(var/reagent_id in seed.reagents_add) - var/datum/reagent/R = chemical_reagents_list[reagent_id] + var/datum/reagent/R = GLOB.chemical_reagents_list[reagent_id] var/amt = reagents.get_reagent_amount(reagent_id) reag_txt += "\n- [R.name]: [amt]" diff --git a/code/modules/hydroponics/grown/chili.dm b/code/modules/hydroponics/grown/chili.dm index 01e05762eba..f8bf515ce6b 100644 --- a/code/modules/hydroponics/grown/chili.dm +++ b/code/modules/hydroponics/grown/chili.dm @@ -28,11 +28,11 @@ // Ice Chili /obj/item/seeds/chili/ice - name = "pack of ice pepper seeds" - desc = "These seeds grow into ice pepper plants." + name = "pack of chilly pepper seeds" + desc = "These seeds grow into chilly pepper plants." icon_state = "seed-icepepper" species = "chiliice" - plantname = "Ice Pepper Plants" + plantname = "Chilly Pepper Plants" product = /obj/item/reagent_containers/food/snacks/grown/icepepper lifespan = 25 maturation = 4 @@ -43,7 +43,7 @@ /obj/item/reagent_containers/food/snacks/grown/icepepper seed = /obj/item/seeds/chili/ice - name = "ice pepper" + name = "chilly pepper" desc = "It's a mutant strain of chili" icon_state = "icepepper" filling_color = "#0000CD" @@ -73,4 +73,4 @@ icon_state = "ghostchilipepper" filling_color = "#F8F8FF" bitesize_mod = 4 - origin_tech = "biotech=4;magnets=5" \ No newline at end of file + origin_tech = "biotech=4;magnets=5" diff --git a/code/modules/hydroponics/grown/kudzu.dm b/code/modules/hydroponics/grown/kudzu.dm index 09c16544396..ba67bf426fa 100644 --- a/code/modules/hydroponics/grown/kudzu.dm +++ b/code/modules/hydroponics/grown/kudzu.dm @@ -30,7 +30,7 @@ if(istype(user.loc, /turf/space)) return var/turf/T = get_turf(src) - message_admins("Kudzu planted by [key_name_admin(user)](?) (FLW) at ([T.x],[T.y],[T.z] - (JMP))",0,1) + message_admins("Kudzu planted by [key_name_admin(user)]([ADMIN_QUE(user,"?")]) ([ADMIN_FLW(user,"FLW")]) at ([T.x],[T.y],[T.z] - (JMP))",0,1) investigate_log("was planted by [key_name(user)] at ([T.x],[T.y],[T.z])","kudzu") new /obj/structure/spacevine_controller(user.loc, mutations, potency, production) user.drop_item() @@ -59,7 +59,7 @@ mutations.Remove(pick(temp_mut_list)) temp_mut_list.Cut() - if(S.has_reagent("welding_fuel", 5)) + if(S.has_reagent("fuel", 5)) for(var/datum/spacevine_mutation/SM in mutations) if(SM.quality == POSITIVE) temp_mut_list += SM @@ -94,4 +94,4 @@ desc = "Pueraria Virallis: An invasive species with vines that rapidly creep and wrap around whatever they contact." icon_state = "kudzupod" filling_color = "#6B8E23" - bitesize_mod = 2 \ No newline at end of file + bitesize_mod = 2 diff --git a/code/modules/hydroponics/grown/mushrooms.dm b/code/modules/hydroponics/grown/mushrooms.dm index 56d032045c0..95ea83cd424 100644 --- a/code/modules/hydroponics/grown/mushrooms.dm +++ b/code/modules/hydroponics/grown/mushrooms.dm @@ -81,7 +81,7 @@ /obj/item/reagent_containers/food/snacks/grown/mushroom/angel seed = /obj/item/seeds/angel name = "destroying angel" - desc = "Amanita Virosa: Deadly poisonous basidiomycete fungus filled with alpha amatoxins." + desc = "Amanita Virosa: Deadly poisonous basidiomycete fungus filled with alpha amanitin." icon_state = "angel" filling_color = "#C0C0C0" diff --git a/code/modules/hydroponics/grown/replicapod.dm b/code/modules/hydroponics/grown/replicapod.dm index 4a1e6f09cf8..f8f77836b3a 100644 --- a/code/modules/hydroponics/grown/replicapod.dm +++ b/code/modules/hydroponics/grown/replicapod.dm @@ -59,7 +59,7 @@ var/ckey_holder = null if(config.revival_pod_plants) if(ckey) - for(var/mob/M in player_list) + for(var/mob/M in GLOB.player_list) if(isobserver(M)) var/mob/dead/observer/O = M if(O.ckey == ckey && O.can_reenter_corpse) @@ -70,7 +70,7 @@ make_podman = 1 break else //If the player has ghosted from his corpse before blood was drawn, his ckey is no longer attached to the mob, so we need to match up the cloned player through the mind key - for(var/mob/M in player_list) + for(var/mob/M in GLOB.player_list) if(mind && M.mind && ckey(M.mind.key) == ckey(mind.key) && M.ckey && M.client && M.stat == DEAD && !M.suiciding) if(isobserver(M)) var/mob/dead/observer/O = M diff --git a/code/modules/hydroponics/hydroitemdefines.dm b/code/modules/hydroponics/hydroitemdefines.dm index 6b2da2c29ae..a3453585817 100644 --- a/code/modules/hydroponics/hydroitemdefines.dm +++ b/code/modules/hydroponics/hydroitemdefines.dm @@ -21,7 +21,7 @@ icon_state = "weedspray" item_state = "plantbgone" volume = 100 - flags = OPENCONTAINER + container_type = OPENCONTAINER slot_flags = SLOT_BELT throwforce = 0 w_class = WEIGHT_CLASS_SMALL @@ -43,7 +43,7 @@ icon_state = "pestspray" item_state = "plantbgone" volume = 100 - flags = OPENCONTAINER + container_type = OPENCONTAINER slot_flags = SLOT_BELT throwforce = 0 w_class = WEIGHT_CLASS_SMALL diff --git a/code/modules/hydroponics/hydroponics.dm b/code/modules/hydroponics/hydroponics.dm index b5bea1fc6b3..92f91ddf51a 100644 --- a/code/modules/hydroponics/hydroponics.dm +++ b/code/modules/hydroponics/hydroponics.dm @@ -763,8 +763,8 @@ else if(transfer_amount) // Droppers, cans, beakers, what have you. visi_msg="[user] uses [reagent_source] on [target]" irrigate = 1 - // Beakers, bottles, buckets, etc. Can't use is_open_container though. - if(istype(reagent_source, /obj/item/reagent_containers/glass/)) + // Beakers, bottles, buckets, etc. + if(reagent_source.is_drainable()) playsound(loc, 'sound/effects/slosh.ogg', 25, 1) if(irrigate && transfer_amount > 30 && reagent_source.reagents.total_volume >= 30 && using_irrigation) diff --git a/code/modules/hydroponics/plant_genes.dm b/code/modules/hydroponics/plant_genes.dm index 84db02cb89c..1a9dc008376 100644 --- a/code/modules/hydroponics/plant_genes.dm +++ b/code/modules/hydroponics/plant_genes.dm @@ -107,7 +107,7 @@ reagent_id = reag_id name = "UNKNOWN" - var/datum/reagent/R = chemical_reagents_list[reag_id] + var/datum/reagent/R = GLOB.chemical_reagents_list[reag_id] if(R && R.id == reagent_id) name = R.name diff --git a/code/modules/hydroponics/sample.dm b/code/modules/hydroponics/sample.dm index 4478671b2fb..10ba2642107 100644 --- a/code/modules/hydroponics/sample.dm +++ b/code/modules/hydroponics/sample.dm @@ -11,8 +11,8 @@ var/list/chem_t2_reagents = list( var/list/chem_t3_reagents = list( "ethanol", "chlorine", "potassium", - "aluminium", "radium", "fluorine", - "iron", "welding_fuel", "silver", + "aluminum", "radium", "fluorine", + "iron", "fuel", "silver", "stable_plasma" ) @@ -41,4 +41,4 @@ var/list/chem_t4_reagents = list( /obj/item/seeds/sample/alienweed name = "alien weed sample" icon_state = "alienweed" - sample_color = null \ No newline at end of file + sample_color = null diff --git a/code/modules/karma/karma.dm b/code/modules/karma/karma.dm index cfc44382d64..d148276d4d6 100644 --- a/code/modules/karma/karma.dm +++ b/code/modules/karma/karma.dm @@ -59,7 +59,7 @@ var/list/karma_spenders = list() if(config.disable_karma) to_chat(src, "Karma is disabled.") return FALSE - if(!ticker || !player_list.len || (ticker.current_state == GAME_STATE_PREGAME)) + if(!ticker || !GLOB.player_list.len || (ticker.current_state == GAME_STATE_PREGAME)) to_chat(src, "You can't award karma until the game has started.") return FALSE if(client.karma_spent || (ckey in karma_spenders)) @@ -97,7 +97,7 @@ var/list/karma_spenders = list() return var/list/karma_list = list() - for(var/mob/M in player_list) + for(var/mob/M in GLOB.player_list) if(!(M.client && M.mind)) continue if(M == src) diff --git a/code/modules/martial_arts/adminfu.dm b/code/modules/martial_arts/adminfu.dm index eaec2b1c3c8..ae48795f2f9 100644 --- a/code/modules/martial_arts/adminfu.dm +++ b/code/modules/martial_arts/adminfu.dm @@ -74,7 +74,7 @@ D.revive() D.suiciding = 0 if(!D.ckey) - for(var/mob/dead/observer/ghost in player_list) + for(var/mob/dead/observer/ghost in GLOB.player_list) if(D.real_name == ghost.real_name) ghost.reenter_corpse() break diff --git a/code/modules/martial_arts/brawling.dm b/code/modules/martial_arts/brawling.dm index f7c4d307968..7869e101505 100644 --- a/code/modules/martial_arts/brawling.dm +++ b/code/modules/martial_arts/brawling.dm @@ -14,12 +14,12 @@ A.do_attack_animation(D, ATTACK_EFFECT_PUNCH) var/atk_verb = pick("left hook","right hook","straight punch") - + var/damage = rand(5, 8) + A.dna.species.punchdamagelow if(!damage) playsound(D.loc, 'sound/weapons/punchmiss.ogg', 25, 1, -1) D.visible_message("[A] has attempted to hit [D] with a [atk_verb]!") - add_attack_logs(A, D, "Melee attacked with [src] (miss/block)") + add_attack_logs(A, D, "Melee attacked with [src] (miss/block)", ATKLOG_ALL) return 0 @@ -32,7 +32,7 @@ "[A] has hit [D] with a [atk_verb]!") D.apply_damage(damage, STAMINA, affecting, armor_block) - add_attack_logs(A, D, "Melee attacked with [src]") + add_attack_logs(A, D, "Melee attacked with [src]", ATKLOG_ALL) if(D.getStaminaLoss() > 50) var/knockout_prob = D.getStaminaLoss() + rand(-15,15) if((D.stat != DEAD) && prob(knockout_prob)) @@ -40,9 +40,9 @@ "[A] has knocked [D] out with a haymaker!") D.apply_effect(10,WEAKEN,armor_block) D.SetSleeping(5) - D.forcesay(hit_appends) + D.forcesay(GLOB.hit_appends) else if(D.lying) - D.forcesay(hit_appends) + D.forcesay(GLOB.hit_appends) return 1 /datum/martial_art/drunk_brawling @@ -99,7 +99,7 @@ "[A] has knocked [D] out with a haymaker!") D.apply_effect(10,WEAKEN,armor_block) D.Paralyse(5) - D.forcesay(hit_appends) + D.forcesay(GLOB.hit_appends) else if(D.lying) - D.forcesay(hit_appends) + D.forcesay(GLOB.hit_appends) return 1 diff --git a/code/modules/martial_arts/martial.dm b/code/modules/martial_arts/martial.dm index bff0cf0d2e4..3e3af7963b0 100644 --- a/code/modules/martial_arts/martial.dm +++ b/code/modules/martial_arts/martial.dm @@ -66,9 +66,9 @@ D.visible_message("[A] has weakened [D]!!", \ "[A] has weakened [D]!") D.apply_effect(4, WEAKEN, armor_block) - D.forcesay(hit_appends) + D.forcesay(GLOB.hit_appends) else if(D.lying) - D.forcesay(hit_appends) + D.forcesay(GLOB.hit_appends) return 1 /datum/martial_art/proc/teach(var/mob/living/carbon/human/H,var/make_temporary=0) diff --git a/code/modules/mining/abandonedcrates.dm b/code/modules/mining/abandonedcrates.dm index ae8e69db32c..a413c328870 100644 --- a/code/modules/mining/abandonedcrates.dm +++ b/code/modules/mining/abandonedcrates.dm @@ -36,8 +36,7 @@ if(11 to 15) new /obj/item/reagent_containers/glass/beaker/bluespace(src) if(16 to 20) - for(var/i in 1 to 10) - new /obj/item/ore/diamond(src) + new /obj/item/stack/ore/diamond(src, 10) if(21 to 25) for(var/i in 1 to 5) new /obj/item/poster/random_contraband(src) @@ -83,8 +82,7 @@ var /newitem = pick(subtypesof(/obj/item/stock_parts) - /obj/item/stock_parts/subspace) new newitem(src) if(69 to 70) - for(var/i in 1 to 5) - new /obj/item/ore/bluespace_crystal(src) + new /obj/item/stack/ore/bluespace_crystal(src, 5) if(71 to 72) new /obj/item/pickaxe/drill(src) if(73 to 74) @@ -184,7 +182,7 @@ if(attempts == 1) to_chat(user, "* Anti-Tamper Bomb will activate on next failed access attempt.") else - to_chat(user, "* Anti-Tamper Bomb will activate after [src.attempts] failed access attempts.") + to_chat(user, "* Anti-Tamper Bomb will activate after [attempts] failed access attempts.") if(lastattempt != null) var/bulls = 0 var/cows = 0 diff --git a/code/modules/mining/equipment_locker.dm b/code/modules/mining/equipment_locker.dm index 3d3c67701e8..6b62f07c103 100644 --- a/code/modules/mining/equipment_locker.dm +++ b/code/modules/mining/equipment_locker.dm @@ -70,12 +70,12 @@ point_upgrade = point_upgrade_temp sheet_per_ore = sheet_per_ore_temp -/obj/machinery/mineral/ore_redemption/proc/smelt_ore(obj/item/ore/O) +/obj/machinery/mineral/ore_redemption/proc/smelt_ore(obj/item/stack/ore/O) ore_buffer -= O if(O && O.refined_type) - points += O.points * point_upgrade + points += O.points * point_upgrade * O.amount GET_COMPONENT(materials, /datum/component/material_container) var/material_amount = materials.get_item_material_amount(O) @@ -83,7 +83,7 @@ if(!material_amount) qdel(O) //no materials, incinerate it - else if(!materials.has_space(material_amount * sheet_per_ore)) //if there is no space, eject it + else if(!materials.has_space(material_amount * sheet_per_ore * O.amount)) //if there is no space, eject it unload_mineral(O) else @@ -157,7 +157,7 @@ if(OB) input = OB - for(var/obj/item/ore/O in input) + for(var/obj/item/stack/ore/O in input) if(QDELETED(O)) continue ore_buffer |= O @@ -352,9 +352,7 @@ updateUsrDialog() /obj/machinery/mineral/ore_redemption/ex_act(severity, target) - var/datum/effect_system/spark_spread/s = new /datum/effect_system/spark_spread - s.set_up(5, 1, src) - s.start() + do_sparks(5, 1, src) if(severity == 1) if(prob(50)) qdel(src) @@ -564,9 +562,7 @@ qdel(voucher) /obj/machinery/mineral/equipment_vendor/ex_act(severity, target) - var/datum/effect_system/spark_spread/s = new /datum/effect_system/spark_spread - s.set_up(5, 1, src) - s.start() + do_sparks(5, 1, src) if(prob(50 / severity) && severity < 3) qdel(src) diff --git a/code/modules/mining/lavaland/loot/ashdragon_loot.dm b/code/modules/mining/lavaland/loot/ashdragon_loot.dm index d88ec709dce..130e425d559 100644 --- a/code/modules/mining/lavaland/loot/ashdragon_loot.dm +++ b/code/modules/mining/lavaland/loot/ashdragon_loot.dm @@ -36,14 +36,14 @@ ..() spirits = list() processing_objects.Add(src) - poi_list |= src + GLOB.poi_list |= src /obj/item/melee/ghost_sword/Destroy() for(var/mob/dead/observer/G in spirits) G.invisibility = initial(G.invisibility) spirits.Cut() processing_objects.Remove(src) - poi_list -= src + GLOB.poi_list -= src . = ..() /obj/item/melee/ghost_sword/attack_self(mob/user) @@ -71,7 +71,7 @@ var/list/contents = T.GetAllContents() var/mob/dead/observer/current_spirits = list() - for(var/mob/dead/observer/O in player_list) + for(var/mob/dead/observer/O in GLOB.player_list) if(is_type_in_list(O.following, contents)) ghost_counter++ O.invisibility = 0 diff --git a/code/modules/mining/lavaland/loot/bubblegum_loot.dm b/code/modules/mining/lavaland/loot/bubblegum_loot.dm index 613239b58a9..cecfdcf8478 100644 --- a/code/modules/mining/lavaland/loot/bubblegum_loot.dm +++ b/code/modules/mining/lavaland/loot/bubblegum_loot.dm @@ -44,7 +44,7 @@ return used = TRUE - var/choice = input(user,"Who do you want dead?","Choose Your Victim") as null|anything in player_list + var/choice = input(user,"Who do you want dead?","Choose Your Victim") as null|anything in GLOB.player_list if(!choice) used = FALSE @@ -72,7 +72,7 @@ var/obj/effect/mine/pickup/bloodbath/B = new(L) B.mineEffect(L) - for(var/mob/living/carbon/human/H in player_list) + for(var/mob/living/carbon/human/H in GLOB.player_list) if(H == L) continue to_chat(H, "You have an overwhelming desire to kill [L]. [L.p_they(TRUE)] [L.p_have()] been marked red! Go kill [L.p_them()]!") diff --git a/code/modules/mining/machine_processing.dm b/code/modules/mining/machine_processing.dm index 800e21b1d42..3fc2980ddc2 100644 --- a/code/modules/mining/machine_processing.dm +++ b/code/modules/mining/machine_processing.dm @@ -96,7 +96,7 @@ /obj/machinery/mineral/processing_unit/process() var/turf/T = get_step(src, input_dir) if(T) - for(var/obj/item/ore/O in T) + for(var/obj/item/stack/ore/O in T) process_ore(O) CHECK_TICK if(on) @@ -111,7 +111,7 @@ CONSOLE.updateUsrDialog() -/obj/machinery/mineral/processing_unit/proc/process_ore(obj/item/ore/O) +/obj/machinery/mineral/processing_unit/proc/process_ore(obj/item/stack/ore/O) GET_COMPONENT(materials, /datum/component/material_container) var/material_amount = materials.get_item_material_amount(O) if(!materials.has_space(material_amount)) diff --git a/code/modules/mining/machine_unloading.dm b/code/modules/mining/machine_unloading.dm index 8f604e522e4..78a63bc6c2d 100644 --- a/code/modules/mining/machine_unloading.dm +++ b/code/modules/mining/machine_unloading.dm @@ -16,7 +16,7 @@ if(T) var/limit for(var/obj/structure/ore_box/B in T) - for(var/obj/item/ore/O in B) + for(var/obj/item/stack/ore/O in B) B.contents -= O unload_mineral(O) limit++ diff --git a/code/modules/mining/mine_items.dm b/code/modules/mining/mine_items.dm index f781b57a309..c3c276a5766 100644 --- a/code/modules/mining/mine_items.dm +++ b/code/modules/mining/mine_items.dm @@ -326,7 +326,7 @@ var/turf/T = deploy_location if(!is_mining_level(T.z))//only report capsules away from the mining/lavaland level - message_admins("[key_name_admin(usr)] (?) (FLW) activated a bluespace capsule away from the mining level! (JMP)") + message_admins("[key_name_admin(usr)] ([ADMIN_QUE(usr,"?")]) ([ADMIN_FLW(usr,"FLW")]) activated a bluespace capsule away from the mining level! (JMP)") log_admin("[key_name(usr)] activated a bluespace capsule away from the mining level at [T.x], [T.y], [T.z]") template.load(deploy_location, centered = TRUE) new /obj/effect/particle_effect/smoke(get_turf(src)) diff --git a/code/modules/mining/mine_turfs.dm b/code/modules/mining/mine_turfs.dm index 6a5ae52ce27..79cfc3ae9f8 100644 --- a/code/modules/mining/mine_turfs.dm +++ b/code/modules/mining/mine_turfs.dm @@ -56,7 +56,7 @@ var/global/list/rockTurfEdgeCache = list( /turf/simulated/mineral/New() ..() - mineral_turfs += src + GLOB.mineral_turfs += src if(mineralType && mineralAmt && spread && spreadChance) for(var/dir in cardinal) @@ -79,7 +79,7 @@ var/global/list/rockTurfEdgeCache = list( /hook/startup/proc/add_mineral_edges() var/watch = start_watch() log_startup_progress("Reticulating splines...") - for(var/turf/simulated/mineral/M in mineral_turfs) + for(var/turf/simulated/mineral/M in GLOB.mineral_turfs) M.add_edges() log_startup_progress(" Splines reticulated in [stop_watch(watch)]s.") return 1 @@ -187,7 +187,7 @@ var/global/list/rockTurfEdgeCache = list( /turf/simulated/mineral/iron name = "iron deposit" icon_state = "rock_Iron" - mineralType = /obj/item/ore/iron + mineralType = /obj/item/stack/ore/iron mineralName = "Iron" spreadChance = 20 spread = 1 @@ -195,7 +195,7 @@ var/global/list/rockTurfEdgeCache = list( /turf/simulated/mineral/uranium name = "uranium deposit" - mineralType = /obj/item/ore/uranium + mineralType = /obj/item/stack/ore/uranium mineralName = "Uranium" spreadChance = 5 spread = 1 @@ -204,7 +204,7 @@ var/global/list/rockTurfEdgeCache = list( /turf/simulated/mineral/diamond name = "diamond deposit" - mineralType = /obj/item/ore/diamond + mineralType = /obj/item/stack/ore/diamond mineralName = "Diamond" spreadChance = 0 spread = 1 @@ -213,7 +213,7 @@ var/global/list/rockTurfEdgeCache = list( /turf/simulated/mineral/gold name = "gold deposit" - mineralType = /obj/item/ore/gold + mineralType = /obj/item/stack/ore/gold mineralName = "Gold" spreadChance = 5 spread = 1 @@ -222,7 +222,7 @@ var/global/list/rockTurfEdgeCache = list( /turf/simulated/mineral/silver name = "silver deposit" - mineralType = /obj/item/ore/silver + mineralType = /obj/item/stack/ore/silver mineralName = "Silver" spreadChance = 5 spread = 1 @@ -231,7 +231,7 @@ var/global/list/rockTurfEdgeCache = list( /turf/simulated/mineral/titanium name = "titanium deposit" - mineralType = /obj/item/ore/titanium + mineralType = /obj/item/stack/ore/titanium spreadChance = 5 spread = 1 hidden = 1 @@ -240,7 +240,7 @@ var/global/list/rockTurfEdgeCache = list( /turf/simulated/mineral/plasma name = "plasma deposit" icon_state = "rock_Plasma" - mineralType = /obj/item/ore/plasma + mineralType = /obj/item/stack/ore/plasma mineralName = "Plasma" spreadChance = 8 spread = 1 @@ -250,7 +250,7 @@ var/global/list/rockTurfEdgeCache = list( /turf/simulated/mineral/clown name = "bananium deposit" icon_state = "rock_Clown" - mineralType = /obj/item/ore/bananium + mineralType = /obj/item/stack/ore/bananium mineralName = "Bananium" mineralAmt = 3 spreadChance = 0 @@ -260,7 +260,7 @@ var/global/list/rockTurfEdgeCache = list( /turf/simulated/mineral/mime name = "tranquillite deposit" icon_state = "rock_Mime" - mineralType = /obj/item/ore/tranquillite + mineralType = /obj/item/stack/ore/tranquillite mineralAmt = 3 spreadChance = 0 spread = 0 @@ -269,7 +269,7 @@ var/global/list/rockTurfEdgeCache = list( /turf/simulated/mineral/bscrystal name = "bluespace crystal deposit" icon_state = "rock_BScrystal" - mineralType = /obj/item/ore/bluespace_crystal + mineralType = /obj/item/stack/ore/bluespace_crystal mineralName = "Bluespace crystal" mineralAmt = 1 spreadChance = 0 @@ -462,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) @@ -518,7 +518,7 @@ var/global/list/rockTurfEdgeCache = list( if(istype(W,/obj/item/storage/bag/ore)) var/obj/item/storage/bag/ore/S = W if(S.collection_mode == 1) - for(var/obj/item/ore/O in src.contents) + for(var/obj/item/stack/ore/O in src.contents) O.attackby(W,user) return @@ -531,11 +531,7 @@ var/global/list/rockTurfEdgeCache = list( /turf/simulated/floor/plating/airless/asteroid/proc/gets_dug() if(dug) return - new/obj/item/ore/glass(src) - new/obj/item/ore/glass(src) - new/obj/item/ore/glass(src) - new/obj/item/ore/glass(src) - new/obj/item/ore/glass(src) + new/obj/item/stack/ore/glass(src, 5) dug = 1 playsound(src, 'sound/effects/shovel_dig.ogg', 50, 1) //FUCK YO RUSTLE I GOT'S THE DIGS SOUND HERE icon_plating = "asteroid_dug" diff --git a/code/modules/mining/minebot.dm b/code/modules/mining/minebot.dm index 490d8c8fe0d..30e093633f5 100644 --- a/code/modules/mining/minebot.dm +++ b/code/modules/mining/minebot.dm @@ -36,10 +36,10 @@ projectiletype = /obj/item/projectile/kinetic projectilesound = 'sound/weapons/Gunshot4.ogg' speak_emote = list("states") - wanted_objects = list(/obj/item/ore/diamond, /obj/item/ore/gold, /obj/item/ore/silver, - /obj/item/ore/plasma, /obj/item/ore/uranium, /obj/item/ore/iron, - /obj/item/ore/bananium, /obj/item/ore/tranquillite, /obj/item/ore/glass, - /obj/item/ore/titanium) + wanted_objects = list(/obj/item/stack/ore/diamond, /obj/item/stack/ore/gold, /obj/item/stack/ore/silver, + /obj/item/stack/ore/plasma, /obj/item/stack/ore/uranium, /obj/item/stack/ore/iron, + /obj/item/stack/ore/bananium, /obj/item/stack/ore/tranquillite, /obj/item/stack/ore/glass, + /obj/item/stack/ore/titanium) healable = 0 var/mode = MINEDRONE_COLLECT var/light_on = 0 @@ -97,7 +97,7 @@ if(!.) return FALSE visible_message("[src] is destroyed!") - new /obj/effect/decal/cleanable/blood/gibs/robot(src.loc) + new /obj/effect/decal/cleanable/blood/gibs/robot(loc) DropOre(0) qdel(src) @@ -135,20 +135,14 @@ to_chat(src, "You are set to attack mode. You can now attack from range.") /mob/living/simple_animal/hostile/mining_drone/AttackingTarget() - if(istype(target, /obj/item/ore) && mode == MINEDRONE_COLLECT) + if(istype(target, /obj/item/stack/ore) && mode == MINEDRONE_COLLECT) CollectOre() return ..() /mob/living/simple_animal/hostile/mining_drone/proc/CollectOre() - var/obj/item/ore/O - for(O in src.loc) + for(var/obj/item/stack/ore/O in range(1, src)) O.forceMove(src) - for(var/dir in alldirs) - var/turf/T = get_step(src,dir) - for(O in T) - O.forceMove(src) - return /mob/living/simple_animal/hostile/mining_drone/proc/DropOre(message = 1) if(!contents.len) @@ -157,7 +151,7 @@ return if(message) to_chat(src, "You dump your stored ore.") - for(var/obj/item/ore/O in contents) + for(var/obj/item/stack/ore/O in contents) contents -= O O.forceMove(loc) return diff --git a/code/modules/mining/ore.dm b/code/modules/mining/ore.dm index b1ae6b07e6a..08b81e1fd78 100644 --- a/code/modules/mining/ore.dm +++ b/code/modules/mining/ore.dm @@ -1,22 +1,37 @@ -/obj/item/ore +#define GIBTONITE_QUALITY_LOW 1 +#define GIBTONITE_QUALITY_MEDIUM 2 +#define GIBTONITE_QUALITY_HIGH 3 +#define PROBABILITY_REFINE_BY_FIRE 50 +#define ORESTACK_OVERLAYS_MAX 10 +/**********************Mineral ores**************************/ + +/obj/item/stack/ore name = "rock" icon = 'icons/obj/mining.dmi' icon_state = "ore" + max_amount = 50 + singular_name = "ore chunk" var/points = 0 //How many points this ore gets you from the ore redemption machine var/refined_type = null //What this ore defaults to being refined into - var/datum/geosample/geologic_data -/obj/item/ore/attackby(obj/item/I as obj, mob/user as mob, params) +/obj/item/stack/ore/New() + ..() + pixel_x = rand(0, 16) - 8 + pixel_y = rand(0, 8) - 8 + if(is_mining_level(z)) + score_oremined++ //When ore spawns, increment score. Only include ore spawned on mining asteroid (No Clown Planet) + +/obj/item/stack/ore/attackby(obj/item/I, mob/user, params) + ..() if(istype(I, /obj/item/weldingtool)) var/obj/item/weldingtool/W = I if(W.remove_fuel(15) && refined_type) - new refined_type(get_turf(src.loc)) + new refined_type(get_turf(src.loc), amount) qdel(src) else if(W.isOn()) to_chat(user, "Not enough fuel to smelt [src].") - ..() -/obj/item/ore/Crossed(AM as mob|obj) +/obj/item/stack/ore/Crossed(atom/movable/AM) var/obj/item/storage/bag/ore/OB var/turf/simulated/floor/F = get_turf(src) if(loc != F) @@ -37,64 +52,88 @@ F.attackby(OB, AM) return ..() +/obj/item/stack/ore/fire_act() + ..() + if(isnull(refined_type)) + return + else + var/amountrefined = round((PROBABILITY_REFINE_BY_FIRE / 100) * amount, 1) + if(amountrefined < 1) + qdel(src) + else + new refined_type(get_turf(loc), amountrefined) + qdel(src) - -/obj/item/ore/uranium +/obj/item/stack/ore/uranium name = "uranium ore" icon_state = "Uranium ore" origin_tech = "materials=5" + singular_name = "uranium ore chunk" points = 30 refined_type = /obj/item/stack/sheet/mineral/uranium materials = list(MAT_URANIUM=MINERAL_MATERIAL_AMOUNT) -/obj/item/ore/iron +/obj/item/stack/ore/iron name = "iron ore" icon_state = "Iron ore" origin_tech = "materials=1" + singular_name = "iron ore chunk" points = 1 refined_type = /obj/item/stack/sheet/metal materials = list(MAT_METAL=MINERAL_MATERIAL_AMOUNT) -/obj/item/ore/glass +/obj/item/stack/ore/glass name = "sand pile" icon_state = "Glass ore" origin_tech = "materials=1" + singular_name = "sand pile" points = 1 refined_type = /obj/item/stack/sheet/glass materials = list(MAT_GLASS=MINERAL_MATERIAL_AMOUNT) -/obj/item/ore/glass/basalt +GLOBAL_LIST_INIT(sand_recipes, list(\ + new /datum/stack_recipe("sandstone", /obj/item/stack/sheet/mineral/sandstone, 1, 1, 50)\ + )) + +/obj/item/stack/ore/glass/Initialize(mapload, new_amount, merge = TRUE) + recipes = GLOB.sand_recipes + . = ..() + +/obj/item/stack/ore/glass/throw_impact(atom/hit_atom) + if(..() || !ishuman(hit_atom)) + return + var/mob/living/carbon/human/C = hit_atom + if(C.head && C.head.flags_cover & HEADCOVERSEYES) + visible_message("[C]'s headgear blocks the sand!") + return + if(C.wear_mask && C.wear_mask.flags_cover & MASKCOVERSEYES) + visible_message("[C]'s mask blocks the sand!") + return + if(C.glasses && C.glasses.flags_cover & GLASSESCOVERSEYES) + visible_message("[C]'s glasses block the sand!") + return + C.EyeBlurry(6) + C.adjustStaminaLoss(15)//the pain from your eyes burning does stamina damage + C.AdjustConfused(5) + to_chat(C, "[src] gets into your eyes! The pain, it burns!") + qdel(src) + +/obj/item/stack/ore/glass/basalt name = "volcanic ash" icon_state = "volcanic_sand" + icon_state = "volcanic_sand" + singular_name = "volcanic ash pile" -/obj/item/ore/glass/attack_self(mob/living/user as mob) - to_chat(user, "You use the sand to make sandstone.") - var/sandAmt = 1 - for(var/obj/item/ore/glass/G in user.loc) // The sand on the floor - sandAmt += 1 - qdel(G) - while(sandAmt > 0) - var/obj/item/stack/sheet/mineral/sandstone/SS = new /obj/item/stack/sheet/mineral/sandstone(user.loc) - if(sandAmt >= SS.max_amount) - SS.amount = SS.max_amount - else - SS.amount = sandAmt - for(var/obj/item/stack/sheet/mineral/sandstone/SA in user.loc) - if(SA != SS && SA.amount < SA.max_amount) - SA.attackby(SS, user) //we try to transfer all old unfinished stacks to the new stack we created. - sandAmt -= SS.max_amount - qdel(src) - return - -/obj/item/ore/plasma +/obj/item/stack/ore/plasma name = "plasma ore" icon_state = "Plasma ore" origin_tech = "plasmatech=2;materials=2" + singular_name = "plasma ore chunk" points = 15 refined_type = /obj/item/stack/sheet/mineral/plasma materials = list(MAT_PLASMA=MINERAL_MATERIAL_AMOUNT) -/obj/item/ore/plasma/attackby(obj/item/I as obj, mob/user as mob, params) +/obj/item/stack/ore/plasma/attackby(obj/item/I as obj, mob/user as mob, params) if(istype(I, /obj/item/weldingtool)) var/obj/item/weldingtool/W = I if(W.welding) @@ -102,57 +141,64 @@ else ..() -/obj/item/ore/silver +/obj/item/stack/ore/silver name = "silver ore" icon_state = "Silver ore" origin_tech = "materials=3" + singular_name = "silver ore chunk" points = 16 refined_type = /obj/item/stack/sheet/mineral/silver materials = list(MAT_SILVER=MINERAL_MATERIAL_AMOUNT) -/obj/item/ore/gold +/obj/item/stack/ore/gold name = "gold ore" icon_state = "Gold ore" origin_tech = "materials=4" + singular_name = "gold ore chunk" points = 18 refined_type = /obj/item/stack/sheet/mineral/gold materials = list(MAT_GOLD=MINERAL_MATERIAL_AMOUNT) -/obj/item/ore/diamond +/obj/item/stack/ore/diamond name = "diamond ore" icon_state = "Diamond ore" origin_tech = "materials=6" + singular_name = "diamond ore chunk" points = 50 refined_type = /obj/item/stack/sheet/mineral/diamond materials = list(MAT_DIAMOND=MINERAL_MATERIAL_AMOUNT) -/obj/item/ore/bananium +/obj/item/stack/ore/bananium name = "bananium ore" icon_state = "Clown ore" origin_tech = "materials=4" + singular_name = "bananium ore chunk" points = 60 refined_type = /obj/item/stack/sheet/mineral/bananium materials = list(MAT_BANANIUM=MINERAL_MATERIAL_AMOUNT) -/obj/item/ore/tranquillite +/obj/item/stack/ore/tranquillite name = "tranquillite ore" icon_state = "Mime ore" origin_tech = "materials=4" + singular_name = "transquillite ore chunk" points = 60 refined_type = /obj/item/stack/sheet/mineral/tranquillite materials = list(MAT_TRANQUILLITE=MINERAL_MATERIAL_AMOUNT) -/obj/item/ore/titanium +/obj/item/stack/ore/titanium name = "titanium ore" icon_state = "Titanium ore" + singular_name = "titanium ore chunk" points = 50 materials = list(MAT_TITANIUM=MINERAL_MATERIAL_AMOUNT) refined_type = /obj/item/stack/sheet/mineral/titanium -/obj/item/ore/slag +/obj/item/stack/ore/slag name = "slag" desc = "Completely useless" icon_state = "slag" + singular_name = "slag chunk" /obj/item/twohanded/required/gibtonite name = "gibtonite ore" @@ -165,7 +211,7 @@ anchored = 1 //Forces people to carry it by hand, no pulling! var/primed = 0 var/det_time = 100 - var/quality = 1 //How pure this gibtonite is, determines the explosion produced by it and is derived from the det_time of the rock wall it was taken from, higher value = better + var/quality = GIBTONITE_QUALITY_LOW //How pure this gibtonite is, determines the explosion produced by it and is derived from the det_time of the rock wall it was taken from, higher value = better var/attacher = "UNKNOWN" var/datum/wires/explosive/gibtonite/wires @@ -195,7 +241,7 @@ primed = 0 user.visible_message("The chain reaction was stopped! ...The ore's quality looks diminished.", "You stopped the chain reaction. ...The ore's quality looks diminished.") icon_state = "Gibtonite ore" - quality = 1 + quality = GIBTONITE_QUALITY_LOW return ..() @@ -222,40 +268,40 @@ primed = 1 icon_state = "Gibtonite active" var/turf/bombturf = get_turf(src) - var/area/A = get_area(bombturf) var/notify_admins = 0 if(z != 5)//Only annoy the admins ingame if we're triggered off the mining zlevel notify_admins = 1 if(notify_admins) if(triggered_by == 1) - message_admins("An explosion has triggered a [name] to detonate at [A.name] (JMP).") + message_admins("An explosion has triggered a [name] to detonate at [ADMIN_COORDJMP(bombturf)].") else if(triggered_by == 2) - message_admins("A signal has triggered a [name] to detonate at [A.name] (JMP). Igniter attacher: [key_name_admin(attacher)]") + message_admins("A signal has triggered a [name] to detonate at [ADMIN_COORDJMP(bombturf)]. Igniter attacher: [key_name_admin(attacher)]") else - message_admins("[key_name_admin(user)] has triggered a [name] to detonate at [A.name] (JMP).") + message_admins("[key_name_admin(user)] has triggered a [name] to detonate at [ADMIN_COORDJMP(bombturf)].") if(triggered_by == 1) - log_game("An explosion has primed a [name] for detonation at [A.name]([bombturf.x],[bombturf.y],[bombturf.z])") + log_game("An explosion has primed a [name] for detonation at [AREACOORD(bombturf)]") else if(triggered_by == 2) - log_game("A signal has primed a [name] for detonation at [A.name]([bombturf.x],[bombturf.y],[bombturf.z]). Igniter attacher: [key_name(attacher)].") + log_game("A signal has primed a [name] for detonation at [AREACOORD(bombturf)]). Igniter attacher: [key_name(attacher)].") else user.visible_message("[user] strikes \the [src], causing a chain reaction!", "You strike \the [src], causing a chain reaction.") - log_game("[key_name(user)] has primed a [name] for detonation at [A.name]([bombturf.x],[bombturf.y],[bombturf.z])") + log_game("[key_name(user)] has primed a [name] for detonation at [AREACOORD(bombturf)])") spawn(det_time) if(primed) - if(quality == 3) + if(quality == GIBTONITE_QUALITY_HIGH) explosion(src.loc,2,4,9,adminlog = notify_admins) - if(quality == 2) + if(quality == GIBTONITE_QUALITY_MEDIUM) explosion(src.loc,1,2,5,adminlog = notify_admins) - if(quality == 1) + if(quality == GIBTONITE_QUALITY_LOW) explosion(src.loc,-1,1,3,adminlog = notify_admins) qdel(src) -/obj/item/ore/New() - pixel_x = rand(0,16)-8 - pixel_y = rand(0,8)-8 - if(is_mining_level(src.z)) - score_oremined++ //When ore spawns, increment score. Only include ore spawned on mining asteroid (No Clown Planet) -/obj/item/ore/ex_act() - return \ No newline at end of file +/obj/item/stack/ore/ex_act() + return + +#undef GIBTONITE_QUALITY_LOW +#undef GIBTONITE_QUALITY_MEDIUM +#undef GIBTONITE_QUALITY_HIGH +#undef PROBABILITY_REFINE_BY_FIRE +#undef ORESTACK_OVERLAYS_MAX diff --git a/code/modules/mining/satchel_ore_boxdm.dm b/code/modules/mining/satchel_ore_boxdm.dm index 33334d49382..0edb81c8321 100644 --- a/code/modules/mining/satchel_ore_boxdm.dm +++ b/code/modules/mining/satchel_ore_boxdm.dm @@ -13,78 +13,40 @@ if(istype(W, /obj/item/t_scanner/adv_mining_scanner)) attack_hand(user) return - if(istype(W, /obj/item/ore)) + else if(istype(W, /obj/item/stack/ore)) if(!user.drop_item()) return W.forceMove(src) - if(istype(W, /obj/item/storage)) + else if(istype(W, /obj/item/storage)) var/obj/item/storage/S = W S.hide_from(usr) - for(var/obj/item/ore/O in S.contents) + for(var/obj/item/stack/ore/O in S.contents) S.remove_from_storage(O, src) //This will move the item to this item's contents CHECK_TICK to_chat(user, "You empty the satchel into the box.") + else if(istype(W, /obj/item/crowbar)) + playsound(src, W.usesound, 50, 1) + var/obj/item/crowbar/C = W + if(do_after(user, 50 * C.toolspeed, target = src)) + user.visible_message("[user] pries [src] apart.", "You pry apart [src].", "You hear splitting wood.") + deconstruct(TRUE, user) /obj/structure/ore_box/attack_hand(mob/user) - var/amt_gold = 0 - var/amt_silver = 0 - var/amt_diamond = 0 - var/amt_glass = 0 - var/amt_iron = 0 - var/amt_plasma = 0 - var/amt_uranium = 0 - var/amt_titanium = 0 - var/amt_clown = 0 - var/amt_mime = 0 - var/amt_bluespace = 0 + if(Adjacent(user)) + show_contents(user) - for(var/obj/item/ore/C in contents) - if(istype(C,/obj/item/ore/diamond)) - amt_diamond++ - if(istype(C,/obj/item/ore/glass)) - amt_glass++ - if(istype(C,/obj/item/ore/plasma)) - amt_plasma++ - if(istype(C,/obj/item/ore/iron)) - amt_iron++ - if(istype(C,/obj/item/ore/silver)) - amt_silver++ - if(istype(C,/obj/item/ore/gold)) - amt_gold++ - if(istype(C,/obj/item/ore/uranium)) - amt_uranium++ - if(istype(C,/obj/item/ore/bananium)) - amt_clown++ - if(istype(C,/obj/item/ore/tranquillite)) - amt_mime++ - if(istype(C, /obj/item/ore/titanium)) - amt_titanium++ - if(istype(C,/obj/item/ore/bluespace_crystal)) - amt_bluespace++ +/obj/structure/ore_box/attack_robot(mob/user) + if(Adjacent(user)) + show_contents(user) +/obj/structure/ore_box/proc/show_contents(mob/user) var/dat = text("The contents of the ore box reveal...
") - if(amt_gold) - dat += text("Gold ore: [amt_gold]
") - if(amt_silver) - dat += text("Silver ore: [amt_silver]
") - if(amt_iron) - dat += text("Metal ore: [amt_iron]
") - if(amt_glass) - dat += text("Sand: [amt_glass]
") - if(amt_diamond) - dat += text("Diamond ore: [amt_diamond]
") - if(amt_plasma) - dat += text("Plasma ore: [amt_plasma]
") - if(amt_uranium) - dat += text("Uranium ore: [amt_uranium]
") - if(amt_titanium) - dat += text("Titanium ore: [amt_titanium]
") - if(amt_clown) - dat += text("Bananium ore: [amt_clown]
") - if(amt_mime) - dat += text("Tranquillite ore: [amt_mime]
") - if(amt_bluespace) - dat += text("Bluespace crystals: [amt_bluespace]
") + var/list/assembled = list() + for(var/obj/item/stack/ore/O in src) + assembled[O.type] += O.amount + for(var/type in assembled) + var/obj/item/stack/ore/O = type + dat += "[initial(O.name)] - [assembled[type]]
" dat += text("

Empty box") var/datum/browser/popup = new(user, "orebox", name, 400, 400) @@ -97,10 +59,7 @@ usr.set_machine(src) add_fingerprint(usr) if(href_list["removeall"]) - for(var/obj/item/ore/O in contents) - contents -= O - O.forceMove(loc) - CHECK_TICK + dump_box_contents() to_chat(usr, "You empty the box.") updateUsrDialog() @@ -108,20 +67,31 @@ obj/structure/ore_box/ex_act(severity, target) if(prob(100 / severity) && severity < 3) qdel(src) //nothing but ores can get inside unless its a bug and ores just return nothing on ex_act, not point in calling it on them +/obj/structure/ore_box/deconstruct(disassembled = TRUE, mob/user) + var/obj/item/stack/sheet/wood/W = new (loc, 4) + if(user) + W.add_fingerprint(user) + dump_box_contents() + qdel(src) + +/obj/structure/ore_box/proc/dump_box_contents() + for(var/obj/item/stack/ore/O in src) + if(QDELETED(O)) + continue + if(QDELETED(src)) + break + O.forceMove(loc) + CHECK_TICK /obj/structure/ore_box/verb/empty_box() set name = "Empty Ore Box" set category = "Object" set src in view(1) - if(!ishuman(usr)) //Only living, intelligent creatures with hands can empty ore boxes. - to_chat(usr, "You are physically incapable of emptying the ore box.") - return - if(usr.incapacitated()) return - if(!Adjacent(usr)) //You can only empty the box if you can physically reach it + if(!Adjacent(usr)) to_chat(usr, "You cannot reach the ore box.") return @@ -131,8 +101,5 @@ obj/structure/ore_box/ex_act(severity, target) to_chat(usr, "The ore box is empty.") return - for(var/obj/item/ore/O in contents) - contents -= O - O.forceMove(loc) - CHECK_TICK - to_chat(usr, "You empty the ore box.") \ No newline at end of file + dump_box_contents() + to_chat(usr, "You empty the ore box.") diff --git a/code/modules/mob/dead/observer/login.dm b/code/modules/mob/dead/observer/login.dm index eab9faf9a7a..0990b085264 100644 --- a/code/modules/mob/dead/observer/login.dm +++ b/code/modules/mob/dead/observer/login.dm @@ -4,8 +4,8 @@ ghostimage.icon_state = src.icon_state updateghostimages() - if(non_respawnable_keys[ckey]) + if(GLOB.non_respawnable_keys[ckey]) can_reenter_corpse = 0 - respawnable_list -= src + GLOB.respawnable_list -= src update_interface() \ No newline at end of file diff --git a/code/modules/mob/dead/observer/observer.dm b/code/modules/mob/dead/observer/observer.dm index 36afcd3868e..26f77a31adc 100644 --- a/code/modules/mob/dead/observer/observer.dm +++ b/code/modules/mob/dead/observer/observer.dm @@ -64,9 +64,9 @@ var/list/image/ghost_darkness_images = list() //this is a list of images for thi name = body.real_name else if(gender == MALE) - name = capitalize(pick(first_names_male)) + " " + capitalize(pick(last_names)) + name = capitalize(pick(GLOB.first_names_male)) + " " + capitalize(pick(GLOB.last_names)) else - name = capitalize(pick(first_names_female)) + " " + capitalize(pick(last_names)) + name = capitalize(pick(GLOB.first_names_female)) + " " + capitalize(pick(GLOB.last_names)) mind = body.mind //we don't transfer the mind but we keep a reference to it. @@ -82,7 +82,7 @@ var/list/image/ghost_darkness_images = list() //this is a list of images for thi forceMove(T) if(!name) //To prevent nameless ghosts - name = capitalize(pick(first_names_male)) + " " + capitalize(pick(last_names)) + name = capitalize(pick(GLOB.first_names_male)) + " " + capitalize(pick(GLOB.last_names)) real_name = name ..() @@ -125,15 +125,15 @@ Works together with spawning an observer, noted above. /mob/proc/ghostize(var/flags = GHOST_CAN_REENTER) if(key) - if(non_respawnable_keys[ckey]) + if(GLOB.non_respawnable_keys[ckey]) flags &= ~GHOST_CAN_REENTER var/mob/dead/observer/ghost = new(src, flags) //Transfer safety to observer spawning proc. ghost.timeofdeath = src.timeofdeath //BS12 EDIT - respawnable_list -= src + GLOB.respawnable_list -= src if(ghost.can_reenter_corpse) - respawnable_list += ghost + GLOB.respawnable_list += ghost else - non_respawnable_keys[ckey] = 1 + GLOB.non_respawnable_keys[ckey] = 1 ghost.key = key if(!(ghost.client && ghost.client.holder) && !config.antag_hud_allowed) // For new ghosts we remove the verb from even showing up if it's not allowed. ghost.verbs -= /mob/dead/observer/verb/toggle_antagHUD // Poor guys, don't know what they are missing! @@ -159,7 +159,7 @@ This is the proc mobs get to turn into a ghost. Forked from ghostize due to comp warningmsg = "You have committed suicide too early in the round" else if(stat != DEAD) warningmsg = "You are alive" - else if(non_respawnable_keys[ckey]) + else if(GLOB.non_respawnable_keys[ckey]) warningmsg = "You have lost your right to respawn" if(!warningmsg) @@ -223,7 +223,7 @@ This is the proc mobs get to turn into a ghost. Forked from ghostize due to comp if(client.statpanel == "Status") show_stat_station_time() show_stat_emergency_shuttle_eta() - stat(null, "Respawnability: [(src in respawnable_list) ? "Yes" : "No"]") + stat(null, "Respawnability: [(src in GLOB.respawnable_list) ? "Yes" : "No"]") /mob/dead/observer/verb/reenter_corpse() set category = "Ghost" @@ -318,8 +318,8 @@ This is the proc mobs get to turn into a ghost. Forked from ghostize due to comp var/response = alert(src, "If you turn this on, you will not be able to take any part in the round.","Are you sure you want to turn this feature on?","Yes","No") if(response == "No") return M.can_reenter_corpse = 0 - if(M in respawnable_list) - respawnable_list -= M + if(M in GLOB.respawnable_list) + GLOB.respawnable_list -= M if(!M.has_enabled_antagHUD && !check_rights(R_ADMIN|R_MOD,0)) M.has_enabled_antagHUD = 1 @@ -540,18 +540,18 @@ This is the proc mobs get to turn into a ghost. Forked from ghostize due to comp if((!target) || (!ghost)) return if(isAI(target)) // AI core/eye follow links var/mob/living/silicon/ai/A = target - . = "core" + . = "core" if(A.client && A.eyeobj) // No point following clientless AI eyes - . += "|eye" + . += "|eye" return else if(istype(target, /mob/dead/observer)) var/mob/dead/observer/O = target - . = "follow" + . = "follow" if(O.mind && O.mind.current) - . += "|body" + . += "|body" return else - return "follow" + return "follow" //BEGIN TELEPORT HREF CODE /mob/dead/observer/Topic(href, href_list) @@ -573,7 +573,7 @@ This is the proc mobs get to turn into a ghost. Forked from ghostize due to comp var/mob/target = locate(href_list["jump"]) var/mob/A = usr; to_chat(A, "Teleporting to [target]...") - //var/mob/living/silicon/ai/A = locate(href_list["track2"]) in mob_list + //var/mob/living/silicon/ai/A = locate(href_list["track2"]) in GLOB.mob_list if(target && target != usr) spawn(0) var/turf/pos = get_turf(A) @@ -624,7 +624,7 @@ This is the proc mobs get to turn into a ghost. Forked from ghostize due to comp updateghostimages() /proc/updateallghostimages() - for(var/mob/dead/observer/O in player_list) + for(var/mob/dead/observer/O in GLOB.player_list) O.updateghostimages() /mob/dead/observer/proc/updateghostimages() diff --git a/code/modules/mob/emote.dm b/code/modules/mob/emote.dm index 6c4e847fe32..0ec193c69e8 100644 --- a/code/modules/mob/emote.dm +++ b/code/modules/mob/emote.dm @@ -56,7 +56,7 @@ //Hearing gasp and such every five seconds is not good emotes were not global for a reason. // Maybe some people are okay with that. - for(var/mob/M in player_list) + for(var/mob/M in GLOB.player_list) if(!M.client) continue //skip monkeys and leavers if(istype(M, /mob/new_player)) @@ -126,7 +126,7 @@ if(message) - for(var/mob/M in player_list) + for(var/mob/M in GLOB.player_list) if(istype(M, /mob/new_player)) continue diff --git a/code/modules/mob/language.dm b/code/modules/mob/language.dm index 1a6f29a6dd0..43a18678dd9 100644 --- a/code/modules/mob/language.dm +++ b/code/modules/mob/language.dm @@ -25,9 +25,9 @@ /datum/language/proc/get_random_name(gender, name_count=2, syllable_count=4) if(!syllables || !syllables.len || english_names) if(gender==FEMALE) - return capitalize(pick(first_names_female)) + " " + capitalize(pick(last_names)) + return capitalize(pick(GLOB.first_names_female)) + " " + capitalize(pick(GLOB.last_names)) else - return capitalize(pick(first_names_male)) + " " + capitalize(pick(last_names)) + return capitalize(pick(GLOB.first_names_male)) + " " + capitalize(pick(GLOB.last_names)) var/full_name = "" var/new_name = "" @@ -105,7 +105,7 @@ speaker_mask = speaker.name var/msg = "[name], [speaker_mask] [format_message(message, get_spoken_verb(message))]" - for(var/mob/player in player_list) + for(var/mob/player in GLOB.player_list) if(istype(player,/mob/dead) && follow) var/msg_dead = "[name], [speaker_mask] ([ghost_follow_link(speaker, ghost=player)]) [format_message(message, get_spoken_verb(message))]" to_chat(player, msg_dead) @@ -232,7 +232,7 @@ while(i <= sounds) i++ - newname += pick(vox_name_syllables) + newname += pick(GLOB.vox_name_syllables) return capitalize(newname) /datum/language/diona @@ -267,7 +267,7 @@ if(prob(70)) new_name = "[pick(list("PBU","HIU","SINA","ARMA","OSI"))]-[rand(100, 999)]" else - new_name = pick(ai_names) + new_name = pick(GLOB.ai_names) return new_name /datum/language/kidan @@ -567,12 +567,12 @@ var/message_start = "[name], [speaker.name]" var/message_body = "[speaker.say_quote(message)],\"[message]\"
" - for(var/mob/M in dead_mob_list) + for(var/mob/M in GLOB.dead_mob_list) if(!isnewplayer(M) && !isbrain(M)) var/message_start_dead = "[name], [speaker.name] ([ghost_follow_link(speaker, ghost=M)])" M.show_message("[message_start_dead] [message_body]", 2) - for(var/mob/living/S in living_mob_list) + for(var/mob/living/S in GLOB.living_mob_list) if(drone_only && !istype(S,/mob/living/silicon/robot/drone)) continue else if(isAI(S)) @@ -627,7 +627,7 @@ // Language handling. /mob/proc/add_language(language) - var/datum/language/new_language = all_languages[language] + var/datum/language/new_language = GLOB.all_languages[language] if(!istype(new_language) || new_language in languages) return FALSE @@ -636,12 +636,12 @@ return TRUE /mob/proc/remove_language(rem_language) - var/datum/language/L = all_languages[rem_language] + var/datum/language/L = GLOB.all_languages[rem_language] . = (L in languages) languages.Remove(L) /mob/living/remove_language(rem_language) - var/datum/language/L = all_languages[rem_language] + var/datum/language/L = GLOB.all_languages[rem_language] if(default_language == L) default_language = null return ..() @@ -686,7 +686,7 @@ if(href_list["default_lang"] == "reset") set_default_language(null) else - var/datum/language/L = all_languages[href_list["default_lang"]] + var/datum/language/L = GLOB.all_languages[href_list["default_lang"]] if(L) set_default_language(L) check_languages() diff --git a/code/modules/mob/living/carbon/alien/alien.dm b/code/modules/mob/living/carbon/alien/alien.dm index 7d2b92b1d14..dea7c447191 100644 --- a/code/modules/mob/living/carbon/alien/alien.dm +++ b/code/modules/mob/living/carbon/alien/alien.dm @@ -34,7 +34,7 @@ /mob/living/carbon/alien/get_default_language() if(default_language) return default_language - return all_languages["Xenomorph"] + return GLOB.all_languages["Xenomorph"] /mob/living/carbon/alien/say_quote(var/message, var/datum/language/speaking = null) var/verb = "hisses" @@ -194,7 +194,7 @@ Des: Gives the client of the alien an image on each infected mob. ----------------------------------------*/ /mob/living/carbon/alien/proc/AddInfectionImages() if(client) - for(var/mob/living/C in mob_list) + for(var/mob/living/C in GLOB.mob_list) if(C.status_flags & XENO_HOST) var/obj/item/organ/internal/body_egg/alien_embryo/A = C.get_int_organ(/obj/item/organ/internal/body_egg/alien_embryo) if(A) diff --git a/code/modules/mob/living/carbon/alien/death.dm b/code/modules/mob/living/carbon/alien/death.dm index e8982bb89e6..e11eaf3c4e4 100644 --- a/code/modules/mob/living/carbon/alien/death.dm +++ b/code/modules/mob/living/carbon/alien/death.dm @@ -15,7 +15,7 @@ flick("gibbed-a", animation) xgibs(loc) - dead_mob_list -= src + GLOB.dead_mob_list -= src spawn(15) if(animation) qdel(animation) @@ -36,7 +36,7 @@ flick("dust-a", animation) new /obj/effect/decal/remains/xeno(loc) - dead_mob_list -= src + GLOB.dead_mob_list -= src spawn(15) if(animation) qdel(animation) diff --git a/code/modules/mob/living/carbon/alien/humanoid/alien_powers.dm b/code/modules/mob/living/carbon/alien/humanoid/alien_powers.dm index 06c4abccae2..a6454111397 100644 --- a/code/modules/mob/living/carbon/alien/humanoid/alien_powers.dm +++ b/code/modules/mob/living/carbon/alien/humanoid/alien_powers.dm @@ -46,7 +46,7 @@ Doesn't work on other aliens/AI.*/ log_say("(AWHISPER to [key_name(M)]) [msg]", src) to_chat(M, "You hear a strange, alien voice in your head...[msg]") to_chat(src, "You said: [msg] to [M]") - for(var/mob/dead/observer/G in player_list) + for(var/mob/dead/observer/G in GLOB.player_list) G.show_message("Alien message from [src] ([ghost_follow_link(src, ghost=G)]) to [M] ([ghost_follow_link(M, ghost=G)]): [msg]") return diff --git a/code/modules/mob/living/carbon/alien/humanoid/caste/drone.dm b/code/modules/mob/living/carbon/alien/humanoid/caste/drone.dm index 1249c0f462c..8e261f56d8d 100644 --- a/code/modules/mob/living/carbon/alien/humanoid/caste/drone.dm +++ b/code/modules/mob/living/carbon/alien/humanoid/caste/drone.dm @@ -26,7 +26,7 @@ if(powerc(500)) // Queen check var/no_queen = 1 - for(var/mob/living/carbon/alien/humanoid/queen/Q in living_mob_list) + for(var/mob/living/carbon/alien/humanoid/queen/Q in GLOB.living_mob_list) if(!Q.key && Q.get_int_organ(/obj/item/organ/internal/brain/)) continue no_queen = 0 diff --git a/code/modules/mob/living/carbon/alien/humanoid/empress.dm b/code/modules/mob/living/carbon/alien/humanoid/empress.dm index 7db3ea5b1c5..f5355a38d67 100644 --- a/code/modules/mob/living/carbon/alien/humanoid/empress.dm +++ b/code/modules/mob/living/carbon/alien/humanoid/empress.dm @@ -33,7 +33,7 @@ create_reagents(100) //there should only be one queen - for(var/mob/living/carbon/alien/humanoid/empress/E in living_mob_list) + for(var/mob/living/carbon/alien/humanoid/empress/E in GLOB.living_mob_list) if(E == src) continue if(E.stat == DEAD) continue if(E.client) diff --git a/code/modules/mob/living/carbon/alien/humanoid/queen.dm b/code/modules/mob/living/carbon/alien/humanoid/queen.dm index a8f17714b0e..d80d773325e 100644 --- a/code/modules/mob/living/carbon/alien/humanoid/queen.dm +++ b/code/modules/mob/living/carbon/alien/humanoid/queen.dm @@ -13,7 +13,7 @@ create_reagents(100) //there should only be one queen - for(var/mob/living/carbon/alien/humanoid/queen/Q in living_mob_list) + for(var/mob/living/carbon/alien/humanoid/queen/Q in GLOB.living_mob_list) if(Q == src) continue if(Q.stat == DEAD) continue if(Q.client) diff --git a/code/modules/mob/living/carbon/alien/special/alien_embryo.dm b/code/modules/mob/living/carbon/alien/special/alien_embryo.dm index e09340872b9..d489443cb36 100644 --- a/code/modules/mob/living/carbon/alien/special/alien_embryo.dm +++ b/code/modules/mob/living/carbon/alien/special/alien_embryo.dm @@ -112,7 +112,7 @@ Proc: AddInfectionImages(C) Des: Adds the infection image to all aliens for this embryo ----------------------------------------*/ /obj/item/organ/internal/body_egg/alien_embryo/AddInfectionImages() - for(var/mob/living/carbon/alien/alien in player_list) + for(var/mob/living/carbon/alien/alien in GLOB.player_list) if(alien.client) var/I = image('icons/mob/alien.dmi', loc = owner, icon_state = "infected[stage]") alien.client.images += I @@ -122,7 +122,7 @@ Proc: RemoveInfectionImage(C) Des: Removes all images from the mob infected by this embryo ----------------------------------------*/ /obj/item/organ/internal/body_egg/alien_embryo/RemoveInfectionImages() - for(var/mob/living/carbon/alien/alien in player_list) + for(var/mob/living/carbon/alien/alien in GLOB.player_list) if(alien.client) for(var/image/I in alien.client.images) if(dd_hasprefix_case(I.icon_state, "infected") && I.loc == owner) diff --git a/code/modules/mob/living/carbon/brain/MMI.dm b/code/modules/mob/living/carbon/brain/MMI.dm index 9d50d8bf2ea..67d7ddc9f33 100644 --- a/code/modules/mob/living/carbon/brain/MMI.dm +++ b/code/modules/mob/living/carbon/brain/MMI.dm @@ -40,9 +40,9 @@ brainmob.loc = src brainmob.container = src brainmob.stat = CONSCIOUS - respawnable_list -= brainmob - dead_mob_list -= brainmob//Update dem lists - living_mob_list += brainmob + GLOB.respawnable_list -= brainmob + GLOB.dead_mob_list -= brainmob//Update dem lists + GLOB.living_mob_list += brainmob held_brain = B if(istype(O,/obj/item/organ/internal/brain/xeno)) // kept the type check, as it still does other weird stuff @@ -146,8 +146,8 @@ brainmob.container = null//Reset brainmob mmi var. brainmob.loc = held_brain//Throw mob into brain. - respawnable_list += brainmob - living_mob_list -= brainmob//Get outta here + GLOB.respawnable_list += brainmob + GLOB.living_mob_list -= brainmob//Get outta here held_brain.brainmob = brainmob//Set the brain to use the brainmob held_brain.brainmob.cancel_camera() brainmob = null//Set mmi brainmob var to null diff --git a/code/modules/mob/living/carbon/brain/robotic_brain.dm b/code/modules/mob/living/carbon/brain/robotic_brain.dm index ea83ab90206..b766d419d09 100644 --- a/code/modules/mob/living/carbon/brain/robotic_brain.dm +++ b/code/modules/mob/living/carbon/brain/robotic_brain.dm @@ -52,7 +52,7 @@ to_chat(brainmob, "Your internal speaker has been toggled [silenced ? "off" : "on"].") /obj/item/mmi/robotic_brain/proc/request_player() - for(var/mob/dead/observer/O in player_list) + for(var/mob/dead/observer/O in GLOB.player_list) if(check_observer(O)) to_chat(O, "\A [src] has been activated. (Teleport | Sign Up)") @@ -204,7 +204,7 @@ brainmob.container = src brainmob.stat = CONSCIOUS brainmob.SetSilence(0) - dead_mob_list -= brainmob + GLOB.dead_mob_list -= brainmob ..() /obj/item/mmi/robotic_brain/attack_ghost(mob/dead/observer/O) diff --git a/code/modules/mob/living/carbon/carbon.dm b/code/modules/mob/living/carbon/carbon.dm index c5557028896..e9b09ba1f2b 100644 --- a/code/modules/mob/living/carbon/carbon.dm +++ b/code/modules/mob/living/carbon/carbon.dm @@ -1019,7 +1019,7 @@ var/list/ventcrawl_machinery = list(/obj/machinery/atmospherics/unary/vent_pump, return 1 /mob/living/carbon/proc/forceFedAttackLog(var/obj/item/reagent_containers/food/toEat, mob/user) - add_attack_logs(user, src, "Fed [toEat]. Reagents: [toEat.reagentlist(toEat)]", ATKLOG_FEW) + add_attack_logs(user, src, "Fed [toEat]. Reagents: [toEat.reagents.log_list(toEat)]", ATKLOG_MOST) if(!iscarbon(user)) LAssailant = null else diff --git a/code/modules/mob/living/carbon/carbon_defense.dm b/code/modules/mob/living/carbon/carbon_defense.dm index e22b3b25445..d4cafa847fd 100644 --- a/code/modules/mob/living/carbon/carbon_defense.dm +++ b/code/modules/mob/living/carbon/carbon_defense.dm @@ -1,14 +1,17 @@ /mob/living/carbon/hitby(atom/movable/AM, skipcatch, hitpush = 1, blocked = 0) if(!skipcatch) - if(in_throw_mode && !get_active_hand()) //empty active hand and we're in throw mode - if(canmove && !restrained()) - if(istype(AM, /obj/item)) - var/obj/item/I = AM - if(isturf(I.loc)) - put_in_active_hand(I) - visible_message("[src] catches [I]!") - throw_mode_off() - return 1 + if(in_throw_mode && canmove && !restrained()) //Makes sure player is in throw mode + if(!istype(AM,/obj/item) || !isturf(AM.loc)) + return FALSE + if(get_active_hand()) + return FALSE + if(istype(AM, /obj/item/twohanded)) + if(get_inactive_hand()) + return FALSE + put_in_active_hand(AM) + visible_message("[src] catches [AM]!") + throw_mode_off() + return TRUE ..() /mob/living/carbon/water_act(volume, temperature, source) diff --git a/code/modules/mob/living/carbon/give.dm b/code/modules/mob/living/carbon/give.dm index 9dfa6efac89..473715367b4 100644 --- a/code/modules/mob/living/carbon/give.dm +++ b/code/modules/mob/living/carbon/give.dm @@ -29,7 +29,7 @@ if("Yes") if(!I) return - if(!Adjacent(usr)) + if(!Adjacent(target)) to_chat(usr, " You need to stay in reaching distance while giving an object.") to_chat(target, " [usr.name] moved too far away.") return @@ -56,6 +56,7 @@ target.update_inv_l_hand() target.update_inv_r_hand() target.visible_message(" [usr.name] handed \the [I.name] to [target.name].") + I.on_give(usr, target) if("No") target.visible_message(" [usr.name] tried to hand [I.name] to [target.name] but [target.name] didn't want it.") else diff --git a/code/modules/mob/living/carbon/human/appearance.dm b/code/modules/mob/living/carbon/human/appearance.dm index d19051692ca..cb0e04f84f4 100644 --- a/code/modules/mob/living/carbon/human/appearance.dm +++ b/code/modules/mob/living/carbon/human/appearance.dm @@ -10,11 +10,11 @@ gender = new_gender - var/datum/sprite_accessory/hair/current_hair = hair_styles_full_list[H.h_style] + var/datum/sprite_accessory/hair/current_hair = GLOB.hair_styles_full_list[H.h_style] if(current_hair.gender != NEUTER && current_hair.gender != gender) reset_head_hair() - var/datum/sprite_accessory/hair/current_fhair = facial_hair_styles_list[H.f_style] + var/datum/sprite_accessory/hair/current_fhair = GLOB.facial_hair_styles_list[H.f_style] if(current_fhair.gender != NEUTER && current_fhair.gender != gender) reset_facial_hair() @@ -29,7 +29,7 @@ if(!hair_style || !H || H.h_style == hair_style) return - if(!(fluff || (hair_style in hair_styles_public_list))) + if(!(fluff || (hair_style in GLOB.hair_styles_public_list))) return H.h_style = hair_style @@ -40,7 +40,7 @@ /mob/living/carbon/human/proc/change_facial_hair(var/facial_hair_style) var/obj/item/organ/external/head/H = get_organ("head") - if(!facial_hair_style || !H || H.f_style == facial_hair_style || !(facial_hair_style in facial_hair_styles_list)) + if(!facial_hair_style || !H || H.f_style == facial_hair_style || !(facial_hair_style in GLOB.facial_hair_styles_list)) return H.f_style = facial_hair_style @@ -50,7 +50,7 @@ /mob/living/carbon/human/proc/change_head_accessory(var/head_accessory_style) var/obj/item/organ/external/head/H = get_organ("head") - if(!head_accessory_style || !H || H.ha_style == head_accessory_style || !(head_accessory_style in head_accessory_styles_list)) + if(!head_accessory_style || !H || H.ha_style == head_accessory_style || !(head_accessory_style in GLOB.head_accessory_styles_list)) return H.ha_style = head_accessory_style @@ -59,10 +59,10 @@ return 1 /mob/living/carbon/human/proc/change_markings(var/marking_style, var/location = "body") - if(!marking_style || m_styles[location] == marking_style || !(marking_style in marking_styles_list)) + if(!marking_style || m_styles[location] == marking_style || !(marking_style in GLOB.marking_styles_list)) return - var/datum/sprite_accessory/body_markings/marking = marking_styles_list[marking_style] + var/datum/sprite_accessory/body_markings/marking = GLOB.marking_styles_list[marking_style] if(marking.name != "None" && marking.marking_location != location) return @@ -72,18 +72,18 @@ return if(head_organ.alt_head && head_organ.alt_head != "None") - var/datum/sprite_accessory/body_markings/head/H = marking_styles_list[marking_style] + var/datum/sprite_accessory/body_markings/head/H = GLOB.marking_styles_list[marking_style] if(marking.name != "None" && (!H.heads_allowed || (!("All" in H.heads_allowed) && !(head_organ.alt_head in H.heads_allowed)))) return else if(!head_organ.alt_head || head_organ.alt_head == "None") head_organ.alt_head = "None" - var/datum/sprite_accessory/body_markings/head/H = marking_styles_list[marking_style] + var/datum/sprite_accessory/body_markings/head/H = GLOB.marking_styles_list[marking_style] if(H.heads_allowed && !("All" in H.heads_allowed)) return if(location == "tail" && marking.name != "None") - var/datum/sprite_accessory/body_markings/tail/tail_marking = marking_styles_list[marking_style] + var/datum/sprite_accessory/body_markings/tail/tail_marking = GLOB.marking_styles_list[marking_style] if(!body_accessory) if(tail_marking.tails_allowed) return @@ -118,7 +118,7 @@ /mob/living/carbon/human/proc/change_alt_head(var/alternate_head) var/obj/item/organ/external/head/H = get_organ("head") - if(!H || H.alt_head == alternate_head || H.is_robotic() || (!(dna.species.bodyflags & HAS_ALT_HEADS) && alternate_head != "None") || !(alternate_head in alt_heads_list)) + if(!H || H.alt_head == alternate_head || H.is_robotic() || (!(dna.species.bodyflags & HAS_ALT_HEADS) && alternate_head != "None") || !(alternate_head in GLOB.alt_heads_list)) return H.alt_head = alternate_head @@ -126,7 +126,7 @@ //Handle head markings if they're incompatible with the new alt head. if(m_styles["head"]) var/head_marking = m_styles["head"] - var/datum/sprite_accessory/body_markings/head/head_marking_style = marking_styles_list[head_marking] + var/datum/sprite_accessory/body_markings/head/head_marking_style = GLOB.marking_styles_list[head_marking] if(!head_marking_style.heads_allowed || (!("All" in head_marking_style.heads_allowed) && !(H.alt_head in head_marking_style.heads_allowed))) m_styles["head"] = "None" update_markings() @@ -331,8 +331,8 @@ if(!H) return //No head, no hair. - for(var/hairstyle in hair_styles_public_list) - var/datum/sprite_accessory/S = hair_styles_public_list[hairstyle] + for(var/hairstyle in GLOB.hair_styles_public_list) + var/datum/sprite_accessory/S = GLOB.hair_styles_public_list[hairstyle] if(hairstyle == "Bald") //Just in case. valid_hairstyles += hairstyle @@ -359,8 +359,8 @@ if(!H) return //No head, no hair. - for(var/facialhairstyle in facial_hair_styles_list) - var/datum/sprite_accessory/S = facial_hair_styles_list[facialhairstyle] + for(var/facialhairstyle in GLOB.facial_hair_styles_list) + var/datum/sprite_accessory/S = GLOB.facial_hair_styles_list[facialhairstyle] if(facialhairstyle == "Shaved") //Just in case. valid_facial_hairstyles += facialhairstyle @@ -388,8 +388,8 @@ if(!H) return //No head, no head accessory. - for(var/head_accessory in head_accessory_styles_list) - var/datum/sprite_accessory/S = head_accessory_styles_list[head_accessory] + for(var/head_accessory in GLOB.head_accessory_styles_list) + var/datum/sprite_accessory/S = GLOB.head_accessory_styles_list[head_accessory] if(!(H.dna.species.name in S.species_allowed)) //If the user's head is not of a species the head accessory style allows, skip it. Otherwise, add it to the list. continue @@ -403,8 +403,8 @@ if(!H && location == "head") return //No head, no head markings. - for(var/marking in marking_styles_list) - var/datum/sprite_accessory/body_markings/S = marking_styles_list[marking] + for(var/marking in GLOB.marking_styles_list) + var/datum/sprite_accessory/body_markings/S = GLOB.marking_styles_list[marking] if(S.name == "None") valid_markings += marking continue @@ -420,7 +420,7 @@ if(!S.tails_allowed || !(body_accessory.name in S.tails_allowed)) continue if(location == "head") - var/datum/sprite_accessory/body_markings/head/M = marking_styles_list[S.name] + var/datum/sprite_accessory/body_markings/head/M = GLOB.marking_styles_list[S.name] if(H.dna.species.bodyflags & ALL_RPARTS) //If the user is a species that can have a robotic head... var/datum/robolimb/robohead = all_robolimbs[H.model] if(!(S.models_allowed && (robohead.company in S.models_allowed))) //Make sure they don't get markings incompatible with their head. @@ -455,9 +455,9 @@ var/obj/item/organ/external/head/H = get_organ("head") if(!H) return //No head, no alt heads. - valid_alt_heads["None"] = alt_heads_list["None"] //The only null entry should be the "None" option, and there should always be a "None" option. - for(var/alternate_head in alt_heads_list) - var/datum/sprite_accessory/alt_heads/head = alt_heads_list[alternate_head] + valid_alt_heads["None"] = GLOB.alt_heads_list["None"] //The only null entry should be the "None" option, and there should always be a "None" option. + for(var/alternate_head in GLOB.alt_heads_list) + var/datum/sprite_accessory/alt_heads/head = GLOB.alt_heads_list[alternate_head] if(!(H.dna.species.name in head.species_allowed)) continue diff --git a/code/modules/mob/living/carbon/human/death.dm b/code/modules/mob/living/carbon/human/death.dm index b2d2d24400b..1f405b91464 100644 --- a/code/modules/mob/living/carbon/human/death.dm +++ b/code/modules/mob/living/carbon/human/death.dm @@ -19,8 +19,9 @@ for(var/obj/item/organ/internal/I in internal_organs) if(isturf(loc)) var/atom/movable/thing = I.remove(src) - thing.forceMove(get_turf(src)) - thing.throw_at(get_edge_target_turf(src,pick(alldirs)),rand(1,3),5) + if(thing) + thing.forceMove(get_turf(src)) + thing.throw_at(get_edge_target_turf(src, pick(alldirs)), rand(1,3), 5) for(var/obj/item/organ/external/E in bodyparts) if(istype(E, /obj/item/organ/external/chest)) @@ -41,9 +42,7 @@ hgibs(loc, dna) else new /obj/effect/decal/cleanable/blood/gibs/robot(loc) - var/datum/effect_system/spark_spread/s = new /datum/effect_system/spark_spread - s.set_up(3, 1, src) - s.start() + do_sparks(3, 1, src) QDEL_IN(animation, 15) QDEL_IN(src, 0) return TRUE diff --git a/code/modules/mob/living/carbon/human/emote.dm b/code/modules/mob/living/carbon/human/emote.dm index 69653dfe1e8..9201075bd56 100644 --- a/code/modules/mob/living/carbon/human/emote.dm +++ b/code/modules/mob/living/carbon/human/emote.dm @@ -840,8 +840,8 @@ if(locate(/obj/item/storage/bible) in get_turf(src)) to_chat(viewers(src), "[src] farts on the Bible!") var/image/cross = image('icons/obj/storage.dmi', "bible") - var/adminbfmessage = "[bicon(cross)] Bible Fart: [key_name(src, 1)] (?) (PP) (VV) (SM) ([admin_jump_link(src)]) (CA) (SMITE):
" - for(var/client/X in admins) + var/adminbfmessage = "[bicon(cross)] Bible Fart: [key_name(src, 1)] ([ADMIN_QUE(src,"?")]) ([ADMIN_PP(src,"PP")]) ([ADMIN_VV(src,"VV")]) ([ADMIN_SM(src,"SM")]) ([admin_jump_link(src)]) (CA) (SMITE):
" + for(var/client/X in GLOB.admins) if(check_rights(R_EVENT, 0, X.mob)) to_chat(X, adminbfmessage) else if(TOXIC_FARTS in mutations) @@ -941,7 +941,7 @@ //Hearing gasp and such every five seconds is not good emotes were not global for a reason. // Maybe some people are okay with that. - for(var/mob/M in dead_mob_list) + for(var/mob/M in GLOB.dead_mob_list) if(!M.client || istype(M, /mob/new_player)) continue //skip monkeys, leavers and new players if(M.stat == DEAD && M.get_preference(CHAT_GHOSTSIGHT) && !(M in viewers(src,null))) diff --git a/code/modules/mob/living/carbon/human/examine.dm b/code/modules/mob/living/carbon/human/examine.dm index a39d2843501..be2b3506e67 100644 --- a/code/modules/mob/living/carbon/human/examine.dm +++ b/code/modules/mob/living/carbon/human/examine.dm @@ -180,7 +180,7 @@ if(!key) var/foundghost = FALSE if(mind) - for(var/mob/dead/observer/G in player_list) + for(var/mob/dead/observer/G in GLOB.player_list) if(G.mind == mind) foundghost = TRUE if(G.can_reenter_corpse == 0) @@ -291,16 +291,17 @@ else msg += "[p_they(TRUE)] [p_are()] quite chubby.\n" - if(blood_volume < BLOOD_VOLUME_SAFE) + if(!isSynthetic() && blood_volume < BLOOD_VOLUME_SAFE) msg += "[p_they(TRUE)] [p_have()] pale skin.\n" if(bleedsuppress) msg += "[p_they(TRUE)] [p_are()] bandaged with something.\n" else if(bleed_rate) + var/bleed_message = !isSynthetic() ? "bleeding" : "leaking" if(reagents.has_reagent("heparin")) - msg += "[p_they(TRUE)] [p_are()] bleeding uncontrollably!\n" + msg += "[p_they(TRUE)] [p_are()] [bleed_message] uncontrollably!\n" else - msg += "[p_they(TRUE)] [p_are()] bleeding!\n" + msg += "[p_they(TRUE)] [p_are()] [bleed_message]!\n" if(reagents.has_reagent("teslium")) msg += "[p_they(TRUE)] [p_are()] emitting a gentle blue glow!\n" diff --git a/code/modules/mob/living/carbon/human/human.dm b/code/modules/mob/living/carbon/human/human.dm index fd72a50bca1..ea51f819390 100644 --- a/code/modules/mob/living/carbon/human/human.dm +++ b/code/modules/mob/living/carbon/human/human.dm @@ -57,9 +57,9 @@ add_to_all_human_data_huds() /mob/living/carbon/human/Destroy() + . = ..() QDEL_LIST(bodyparts) splinted_limbs.Cut() - return ..() /mob/living/carbon/human/dummy real_name = "Test Dummy" @@ -1457,7 +1457,7 @@ if(!dna.species) return null - return dna.species.default_language ? all_languages[dna.species.default_language] : null + return dna.species.default_language ? GLOB.all_languages[dna.species.default_language] : null /mob/living/carbon/human/proc/bloody_doodle() set category = "IC" @@ -1525,7 +1525,7 @@ /mob/living/carbon/human/proc/get_eye_shine() //Referenced cult constructs for shining in the dark. Needs to be above lighting effects such as shading. var/obj/item/organ/external/head/head_organ = get_organ("head") - var/datum/sprite_accessory/hair/hair_style = hair_styles_full_list[head_organ.h_style] + var/datum/sprite_accessory/hair/hair_style = GLOB.hair_styles_full_list[head_organ.h_style] var/icon/hair = new /icon("icon" = hair_style.icon, "icon_state" = "[hair_style.icon_state]_s") return image(get_icon_difference(get_eyecon(), hair), layer = LIGHTING_LAYER + 1) //Cut the hair's pixels from the eyes icon so eyes covered by bangs stay hidden even while on a higher layer. diff --git a/code/modules/mob/living/carbon/human/human_damage.dm b/code/modules/mob/living/carbon/human/human_damage.dm index d82fc719d88..d4c14bda32a 100644 --- a/code/modules/mob/living/carbon/human/human_damage.dm +++ b/code/modules/mob/living/carbon/human/human_damage.dm @@ -29,7 +29,7 @@ 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) - if(dna.species) + if(dna.species && amount > 0) amount = amount * dna.species.brain_mod sponge.receive_damage(amount, 1) if(updating) @@ -43,7 +43,7 @@ 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) - if(dna.species) + if(dna.species && amount > 0) amount = amount * dna.species.brain_mod sponge.damage = min(max(amount, 0), (maxHealth*2)) if(updating) @@ -76,11 +76,10 @@ amount += O.burn_dam return amount - /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) + if(dna.species) + amount = amount * dna.species.brute_mod take_overall_damage(amount, 0, updating_health, used_weapon = damage_source) else heal_overall_damage(-amount, 0, updating_health, FALSE, robotic) @@ -88,9 +87,9 @@ return STATUS_UPDATE_HEALTH /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) + if(dna.species) + amount = amount * dna.species.burn_mod take_overall_damage(0, amount, updating_health, used_weapon = damage_source) else heal_overall_damage(0, -amount, updating_health, FALSE, robotic) @@ -98,9 +97,8 @@ return STATUS_UPDATE_HEALTH /mob/living/carbon/human/proc/adjustBruteLossByPart(amount, organ_name, obj/damage_source = null, updating_health = TRUE) - if(dna.species) + if(dna.species && amount > 0) amount = amount * dna.species.brute_mod - if(organ_name in bodyparts_by_name) var/obj/item/organ/external/O = get_organ(organ_name) @@ -111,9 +109,8 @@ 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, updating_health = TRUE) - if(dna.species) + if(dna.species && amount > 0) amount = amount * dna.species.burn_mod if(organ_name in bodyparts_by_name) @@ -134,7 +131,7 @@ return ..() /mob/living/carbon/human/adjustCloneLoss(amount) - if(dna.species) + if(dna.species && amount > 0) amount = amount * dna.species.clone_mod . = ..() @@ -174,22 +171,22 @@ // Defined here solely to take species flags into account without having to recast at mob/living level. /mob/living/carbon/human/adjustOxyLoss(amount) - if(dna.species) + if(dna.species && amount > 0) amount = amount * dna.species.oxy_mod . = ..() /mob/living/carbon/human/setOxyLoss(amount) - if(dna.species) + if(dna.species && amount > 0) amount = amount * dna.species.oxy_mod . = ..() /mob/living/carbon/human/adjustToxLoss(amount) - if(dna.species) + if(dna.species && amount > 0) amount = amount * dna.species.tox_mod . = ..() /mob/living/carbon/human/setToxLoss(amount) - if(dna.species) + if(dna.species && amount > 0) amount = amount * dna.species.tox_mod . = ..() diff --git a/code/modules/mob/living/carbon/human/human_defense.dm b/code/modules/mob/living/carbon/human/human_defense.dm index 6e1d35fb0d2..98274ea7e1f 100644 --- a/code/modules/mob/living/carbon/human/human_defense.dm +++ b/code/modules/mob/living/carbon/human/human_defense.dm @@ -288,7 +288,7 @@ emp_act if(Iforce > 10 || Iforce >= 5 && prob(33)) - forcesay(hit_appends) //forcesay checks stat already + forcesay(GLOB.hit_appends) //forcesay checks stat already //this proc handles being hit by a thrown atom /mob/living/carbon/human/hitby(atom/movable/AM, skipcatch = 0, hitpush = 1, blocked = 0) diff --git a/code/modules/mob/living/carbon/human/human_organs.dm b/code/modules/mob/living/carbon/human/human_organs.dm index 2c03e66bf8a..55228c51a51 100644 --- a/code/modules/mob/living/carbon/human/human_organs.dm +++ b/code/modules/mob/living/carbon/human/human_organs.dm @@ -107,12 +107,7 @@ custom_emote(1, "drops what [p_they()] [p_were()] holding, [p_their()] [E.name] malfunctioning!") - var/datum/effect_system/spark_spread/spark_system = new /datum/effect_system/spark_spread() - spark_system.set_up(5, 0, src) - spark_system.attach(src) - spark_system.start() - spawn(10) - qdel(spark_system) + do_sparks(5, 0, src) /mob/living/carbon/human/proc/becomeSlim() to_chat(src, "You feel fit again!") diff --git a/code/modules/mob/living/carbon/human/interactive/interactive.dm b/code/modules/mob/living/carbon/human/interactive/interactive.dm index abdcf9d7373..3eb2f4e65fd 100644 --- a/code/modules/mob/living/carbon/human/interactive/interactive.dm +++ b/code/modules/mob/living/carbon/human/interactive/interactive.dm @@ -191,7 +191,7 @@ var/shouldDoppel = input("Do you want the SNPC to disguise themself as a crewmember?") as anything in list("Yes", "No") if(shouldDoppel == "Yes") var/list/validchoices = list() - for(var/mob/living/carbon/human/M in mob_list) + for(var/mob/living/carbon/human/M in GLOB.mob_list) validchoices += M var/mob/living/carbon/human/chosen = input("Which crewmember?") as null|anything in validchoices @@ -410,7 +410,7 @@ /mob/living/carbon/human/interactive/LateInitialize() . = ..() - snpc_list += src + GLOB.snpc_list += src create_mob_hud() @@ -419,7 +419,7 @@ doSetup() START_PROCESSING(SSnpcpool, src) loadVoice() - hear_radio_list += src + GLOB.hear_radio_list += src // a little bit of variation to make individuals more unique robustness += rand(-10, 10) diff --git a/code/modules/mob/living/carbon/human/life.dm b/code/modules/mob/living/carbon/human/life.dm index 11df45462c4..f13d948842c 100644 --- a/code/modules/mob/living/carbon/human/life.dm +++ b/code/modules/mob/living/carbon/human/life.dm @@ -248,7 +248,7 @@ if(!L || L && (L.status & ORGAN_DEAD)) if(health >= config.health_threshold_crit) adjustOxyLoss(HUMAN_MAX_OXYLOSS + 1) - else + else if(!(NOCRITDAMAGE in dna.species.species_traits)) adjustOxyLoss(HUMAN_CRIT_MAX_OXYLOSS) failed_last_breath = TRUE @@ -709,14 +709,10 @@ adjustToxLoss(0.1) else //stuff only for synthetics if(alcohol_strength >= spark_start && prob(25)) - var/datum/effect_system/spark_spread/s = new /datum/effect_system/spark_spread - s.set_up(3, 1, src) - s.start() + do_sparks(3, 1, src) if(alcohol_strength >= collapse_start && prob(10)) emote("collapse") - var/datum/effect_system/spark_spread/s = new /datum/effect_system/spark_spread - s.set_up(3, 1, src) - s.start() + do_sparks(3, 1, src) if(alcohol_strength >= braindamage_start && prob(10)) adjustBrainLoss(1) diff --git a/code/modules/mob/living/carbon/human/say.dm b/code/modules/mob/living/carbon/human/say.dm index a9f93f3d441..70cab4751e2 100644 --- a/code/modules/mob/living/carbon/human/say.dm +++ b/code/modules/mob/living/carbon/human/say.dm @@ -150,7 +150,7 @@ message = uppertext(message) verb = "yells loudly" - if((COMIC in mutations) || (locate(/obj/item/organ/internal/cyberimp/brain/clown_voice) in internal_organs)) + if((COMIC in mutations) || (locate(/obj/item/organ/internal/cyberimp/brain/clown_voice) in internal_organs) || istype(get_item_by_slot(slot_wear_mask), /obj/item/clothing/mask/gas/voice/clown)) span = "sans" if(span) diff --git a/code/modules/mob/living/carbon/human/species/_species.dm b/code/modules/mob/living/carbon/human/species/_species.dm index ea6abc3a65c..5949d127f39 100644 --- a/code/modules/mob/living/carbon/human/species/_species.dm +++ b/code/modules/mob/living/carbon/human/species/_species.dm @@ -161,7 +161,7 @@ unarmed = new unarmed_type() /datum/species/proc/get_random_name(gender) - var/datum/language/species_language = all_languages[language] + var/datum/language/species_language = GLOB.all_languages[language] return species_language.get_random_name(gender) /datum/species/proc/create_organs(mob/living/carbon/human/H) //Handles creation of mob organs. @@ -286,6 +286,11 @@ H.setOxyLoss(0) H.SetLoseBreath(0) + var/takes_crit_damage = (!(NOCRITDAMAGE in species_traits)) + if((H.health <= config.health_threshold_crit) && takes_crit_damage) + H.adjustBruteLoss(1) + return + /datum/species/proc/handle_dna(mob/living/carbon/human/H, remove) //Handles DNA mutations, as that doesn't work at init. Make sure you call genemutcheck on any blocks changed here return @@ -361,9 +366,9 @@ target.visible_message("[user] has weakened [target]!", \ "[user] has weakened [target]!") target.apply_effect(4, WEAKEN, armor_block) - target.forcesay(hit_appends) + target.forcesay(GLOB.hit_appends) else if(target.lying) - target.forcesay(hit_appends) + target.forcesay(GLOB.hit_appends) /datum/species/proc/disarm(mob/living/carbon/human/user, mob/living/carbon/human/target, datum/martial_art/attacker_style) if(attacker_style && attacker_style.disarm_act(user, target)) @@ -612,7 +617,7 @@ It'll return null if the organ doesn't correspond, so include null checks when u else H.see_invisible = SEE_INVISIBLE_LIVING - if(H.client.eye != H) + if(H.client && H.client.eye != H) var/atom/A = H.client.eye if(A.update_remote_sight(H)) //returns 1 if we override all other sight updates. return diff --git a/code/modules/mob/living/carbon/human/species/machine.dm b/code/modules/mob/living/carbon/human/species/machine.dm index 19af6cee849..a3c0295243c 100644 --- a/code/modules/mob/living/carbon/human/species/machine.dm +++ b/code/modules/mob/living/carbon/human/species/machine.dm @@ -15,20 +15,25 @@ 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.66 (robolimbs) = 165% - burn_mod = 2.5 // So they take 65% extra damage from brute/burn overall. + brute_mod = 2.28 // 100% * 2.28 * 0.66 (robolimbs) ~= 150% + burn_mod = 2.28 // 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) + species_traits = list(IS_WHITELISTED, NO_BREATHE, NO_SCAN, NO_INTORGANS, 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" + + blood_color = "#3C3C3C" + exotic_blood = "oil" + blood_damage_type = STAMINA + //Default styles for created mobs. default_hair = "Blue IPC Screen" can_revive_by_healing = 1 @@ -122,8 +127,8 @@ else if(robohead.is_monitor) //Means that the character's head is a monitor (has a screen). Time to customize. var/list/hair = list() - for(var/i in hair_styles_public_list) - var/datum/sprite_accessory/hair/tmp_hair = hair_styles_public_list[i] + for(var/i in GLOB.hair_styles_public_list) + var/datum/sprite_accessory/hair/tmp_hair = GLOB.hair_styles_public_list[i] if((head_organ.dna.species.name in tmp_hair.species_allowed) && (robohead.company in tmp_hair.models_allowed)) //Populate the list of available monitor styles only with styles that the monitor-head is allowed to use. hair += i diff --git a/code/modules/mob/living/carbon/human/species/wryn.dm b/code/modules/mob/living/carbon/human/species/wryn.dm index 219be4111b3..8c576f9e30e 100644 --- a/code/modules/mob/living/carbon/human/species/wryn.dm +++ b/code/modules/mob/living/carbon/human/species/wryn.dm @@ -50,7 +50,7 @@ /datum/species/wryn/handle_death(mob/living/carbon/human/H) - for(var/mob/living/carbon/C in living_mob_list) + for(var/mob/living/carbon/C in GLOB.living_mob_list) if(C.get_int_organ(/obj/item/organ/internal/wryn/hivenode)) to_chat(C, "Your antennae tingle as you are overcome with pain...") to_chat(C, "It feels like part of you has died.") // This is bullshit diff --git a/code/modules/mob/living/carbon/human/update_icons.dm b/code/modules/mob/living/carbon/human/update_icons.dm index 450b7a6c1a4..8dff1863061 100644 --- a/code/modules/mob/living/carbon/human/update_icons.dm +++ b/code/modules/mob/living/carbon/human/update_icons.dm @@ -318,18 +318,18 @@ var/global/list/damage_icon_parts = list() var/icon/underwear_standing = new/icon('icons/mob/underwear.dmi',"nude") if(underwear && dna.species.clothing_flags & HAS_UNDERWEAR) - var/datum/sprite_accessory/underwear/U = underwear_list[underwear] + var/datum/sprite_accessory/underwear/U = GLOB.underwear_list[underwear] if(U) underwear_standing.Blend(new /icon(U.icon, "uw_[U.icon_state]_s"), ICON_OVERLAY) if(undershirt && dna.species.clothing_flags & HAS_UNDERSHIRT) - var/datum/sprite_accessory/undershirt/U2 = undershirt_list[undershirt] + var/datum/sprite_accessory/undershirt/U2 = GLOB.undershirt_list[undershirt] if(U2) underwear_standing.Blend(new /icon(U2.icon, "us_[U2.icon_state]_s"), ICON_OVERLAY) if(socks && dna.species.clothing_flags & HAS_SOCKS) - var/datum/sprite_accessory/socks/U3 = socks_list[socks] + var/datum/sprite_accessory/socks/U3 = GLOB.socks_list[socks] if(U3) underwear_standing.Blend(new /icon(U3.icon, "sk_[U3.icon_state]_s"), ICON_OVERLAY) @@ -369,7 +369,7 @@ var/global/list/damage_icon_parts = list() var/obj/item/organ/external/chest/chest_organ = get_organ("chest") if(chest_organ && m_styles["body"]) var/body_marking = m_styles["body"] - var/datum/sprite_accessory/body_marking_style = marking_styles_list[body_marking] + var/datum/sprite_accessory/body_marking_style = GLOB.marking_styles_list[body_marking] if(body_marking_style && body_marking_style.species_allowed && (dna.species.name in body_marking_style.species_allowed)) var/icon/b_marking_s = new/icon("icon" = body_marking_style.icon, "icon_state" = "[body_marking_style.icon_state]_s") if(body_marking_style.do_colouration) @@ -379,7 +379,7 @@ var/global/list/damage_icon_parts = list() var/obj/item/organ/external/head/head_organ = get_organ("head") if(head_organ && m_styles["head"]) //If the head is destroyed, forget the head markings. This prevents floating optical markings on decapitated IPCs, for example. var/head_marking = m_styles["head"] - var/datum/sprite_accessory/head_marking_style = marking_styles_list[head_marking] + var/datum/sprite_accessory/head_marking_style = GLOB.marking_styles_list[head_marking] if(head_marking_style && head_marking_style.species_allowed && (head_organ.dna.species.name in head_marking_style.species_allowed)) var/icon/h_marking_s = new/icon("icon" = head_marking_style.icon, "icon_state" = "[head_marking_style.icon_state]_s") if(head_marking_style.do_colouration) @@ -409,7 +409,7 @@ var/global/list/damage_icon_parts = list() //base icons var/icon/head_accessory_standing = new /icon('icons/mob/body_accessory.dmi',"accessory_none_s") if(head_organ.ha_style && (head_organ.dna.species.bodyflags & HAS_HEAD_ACCESSORY)) - var/datum/sprite_accessory/head_accessory/head_accessory_style = head_accessory_styles_list[head_organ.ha_style] + var/datum/sprite_accessory/head_accessory/head_accessory_style = GLOB.head_accessory_styles_list[head_organ.ha_style] if(head_accessory_style && head_accessory_style.species_allowed) if(head_organ.dna.species.name in head_accessory_style.species_allowed) var/icon/head_accessory_s = new/icon("icon" = head_accessory_style.icon, "icon_state" = "[head_accessory_style.icon_state]_s") @@ -448,7 +448,7 @@ var/global/list/damage_icon_parts = list() //var/icon/debrained_s = new /icon("icon"='icons/mob/human_face.dmi', "icon_state" = "debrained_s") if(head_organ.h_style && !(head && (head.flags & BLOCKHEADHAIR) && !(isSynthetic()))) - var/datum/sprite_accessory/hair/hair_style = hair_styles_full_list[head_organ.h_style] + var/datum/sprite_accessory/hair/hair_style = GLOB.hair_styles_full_list[head_organ.h_style] //if(!src.get_int_organ(/obj/item/organ/internal/brain) && !ismachine(src))//make it obvious we have NO BRAIN // hair_standing.Blend(debrained_s, ICON_OVERLAY) if(hair_style && hair_style.species_allowed) @@ -496,7 +496,7 @@ var/global/list/damage_icon_parts = list() var/icon/face_standing = new /icon('icons/mob/human_face.dmi',"bald_s") if(head_organ.f_style) - var/datum/sprite_accessory/facial_hair/facial_hair_style = facial_hair_styles_list[head_organ.f_style] + var/datum/sprite_accessory/facial_hair/facial_hair_style = GLOB.facial_hair_styles_list[head_organ.f_style] if(facial_hair_style && facial_hair_style.species_allowed) if((head_organ.dna.species.name in facial_hair_style.species_allowed) || (head_organ.dna.species.bodyflags & ALL_RPARTS)) //If the head's species is in the list of allowed species for the hairstyle, or the head's species is one flagged to have bodies comprised wholly of cybernetics... var/icon/facial_s = new/icon("icon" = facial_hair_style.icon, "icon_state" = "[facial_hair_style.icon_state]_s") @@ -765,7 +765,7 @@ var/global/list/damage_icon_parts = list() else new_glasses = image("icon" = 'icons/mob/eyes.dmi', "icon_state" = "[glasses.icon_state]") - var/datum/sprite_accessory/hair/hair_style = hair_styles_full_list[head_organ.h_style] + var/datum/sprite_accessory/hair/hair_style = GLOB.hair_styles_full_list[head_organ.h_style] if(hair_style && hair_style.glasses_over) //Select which layer to use based on the properties of the hair style. Hair styles with hair that don't overhang the arms of the glasses should have glasses_over set to a positive value. overlays_standing[GLASSES_OVER_LAYER] = new_glasses else @@ -1029,7 +1029,7 @@ var/global/list/damage_icon_parts = list() var/obj/item/organ/external/head/head_organ = get_organ("head") var/datum/sprite_accessory/alt_heads/alternate_head if(head_organ.alt_head && head_organ.alt_head != "None") - alternate_head = alt_heads_list[head_organ.alt_head] + alternate_head = GLOB.alt_heads_list[head_organ.alt_head] var/image/standing var/icon/mask_icon = new(wear_mask.icon) @@ -1166,7 +1166,7 @@ var/global/list/damage_icon_parts = list() var/datum/sprite_accessory/body_markings/tail/tail_marking_style if(m_styles["tail"] != "None" && (dna.species.bodyflags & HAS_TAIL_MARKINGS)) var/tail_marking = m_styles["tail"] - tail_marking_style = marking_styles_list[tail_marking] + tail_marking_style = GLOB.marking_styles_list[tail_marking] tail_marking_icon = new/icon("icon" = tail_marking_style.icon, "icon_state" = "[tail_marking_style.icon_state]_s") tail_marking_icon.Blend(m_colours["tail"], ICON_ADD) @@ -1233,7 +1233,7 @@ var/global/list/damage_icon_parts = list() var/datum/sprite_accessory/body_markings/tail/tail_marking_style if(m_styles["tail"] != "None" && (dna.species.bodyflags & HAS_TAIL_MARKINGS)) var/tail_marking = m_styles["tail"] - tail_marking_style = marking_styles_list[tail_marking] + tail_marking_style = GLOB.marking_styles_list[tail_marking] tail_marking_icon = new/icon("icon" = tail_marking_style.icon, "icon_state" = "[tail_marking_style.icon_state]w_s") tail_marking_icon.Blend(m_colours["tail"], ICON_ADD) diff --git a/code/modules/mob/living/carbon/slime/slime.dm b/code/modules/mob/living/carbon/slime/slime.dm index 506cc804bd3..be25de1ac14 100644 --- a/code/modules/mob/living/carbon/slime/slime.dm +++ b/code/modules/mob/living/carbon/slime/slime.dm @@ -67,7 +67,7 @@ ..() /mob/living/carbon/slime/Destroy() - for(var/obj/machinery/computer/camera_advanced/xenobio/X in machines) + for(var/obj/machinery/computer/camera_advanced/xenobio/X in GLOB.machines) if(src in X.stored_slimes) X.stored_slimes -= src return ..() diff --git a/code/modules/mob/living/death.dm b/code/modules/mob/living/death.dm index 7987f460815..a760b256cdc 100644 --- a/code/modules/mob/living/death.dm +++ b/code/modules/mob/living/death.dm @@ -78,11 +78,11 @@ timeofdeath = world.time - living_mob_list -= src - dead_mob_list += src + GLOB.living_mob_list -= src + GLOB.dead_mob_list += src if(mind) mind.store_memory("Time of death: [station_time_timestamp("hh:mm:ss", timeofdeath)]", 0) - respawnable_list += src + GLOB.respawnable_list += src if(ticker && ticker.mode) ticker.mode.check_win() diff --git a/code/modules/mob/living/living.dm b/code/modules/mob/living/living.dm index fdd91bf1cd9..2a384dec214 100644 --- a/code/modules/mob/living/living.dm +++ b/code/modules/mob/living/living.dm @@ -329,7 +329,13 @@ /mob/living/proc/can_inject() - return 1 + return TRUE + +/mob/living/is_injectable(allowmobs = TRUE) + return (allowmobs && reagents && can_inject()) + +/mob/living/is_drawable(allowmobs = TRUE) + return (allowmobs && reagents && can_inject()) /mob/living/proc/get_organ_target() var/mob/shooter = src @@ -359,9 +365,8 @@ C.update_inv_legcuffed() if(C.reagents) - for(var/datum/reagent/R in C.reagents.reagent_list) - C.reagents.clear_reagents() - C.reagents.addiction_list.Cut() + C.reagents.clear_reagents() + QDEL_LIST(C.reagents.addiction_list) // rejuvenate: Called by `revive` to get the mob into a revivable state // the admin "rejuvenate" command calls `revive`, not this proc. diff --git a/code/modules/mob/living/living_defense.dm b/code/modules/mob/living/living_defense.dm index ed6ef267fb0..92a9a6b7b47 100644 --- a/code/modules/mob/living/living_defense.dm +++ b/code/modules/mob/living/living_defense.dm @@ -286,16 +286,14 @@ visible_message("The [M.name] has shocked [src]!", \ "The [M.name] has shocked [src]!") - var/datum/effect_system/spark_spread/s = new /datum/effect_system/spark_spread - s.set_up(5, 1, src) - s.start() + do_sparks(5, 1, src) return 1 add_attack_logs(src, M, "Slime'd") return /mob/living/attack_animal(mob/living/simple_animal/M) - if(M.melee_damage_upper == 0) - M.custom_emote(1, "[M.friendly] [src]") + if((M.a_intent == INTENT_HELP && M.ckey) || M.melee_damage_upper == 0) + M.custom_emote(1, "[M.friendly] [src].") return 0 else if(M.attack_sound) diff --git a/code/modules/mob/living/say.dm b/code/modules/mob/living/say.dm index 2f6bb4628c3..cb08ebff021 100644 --- a/code/modules/mob/living/say.dm +++ b/code/modules/mob/living/say.dm @@ -253,7 +253,7 @@ proc/get_radio_key_from_channel(var/channel) hearturfs += get_turf(O) listening_obj |= O - for(var/mob/M in player_list) + for(var/mob/M in GLOB.player_list) if(!M.client) continue //skip monkeys and leavers if(isnewplayer(M)) @@ -274,7 +274,7 @@ proc/get_radio_key_from_channel(var/channel) spawn(0) if(loc && !isturf(loc)) var/atom/A = loc //Non-turf, let it handle the speech bubble - A.speech_bubble("hR[speech_bubble_test]", A.loc, speech_bubble_recipients) + A.speech_bubble("hR[speech_bubble_test]", A, speech_bubble_recipients) else //Turf, leave speech bubbles to the mob speech_bubble("h[speech_bubble_test]", src, speech_bubble_recipients) @@ -315,7 +315,7 @@ proc/get_radio_key_from_channel(var/channel) if(act && type && message) //parent call log_emote(message, src) - for(var/mob/M in dead_mob_list) + for(var/mob/M in GLOB.dead_mob_list) if(!M.client || istype(M, /mob/new_player)) continue //skip monkeys, leavers and new players //who the hell knows why new players are in the dead mob list @@ -431,7 +431,7 @@ proc/get_radio_key_from_channel(var/channel) hearturfs += get_turf(L) //ghosts - for(var/mob/M in dead_mob_list) //does this include players who joined as observers as well? + for(var/mob/M in GLOB.dead_mob_list) //does this include players who joined as observers as well? if(!M.client) continue if(M.stat == DEAD && M.client && M.get_preference(CHAT_GHOSTEARS)) @@ -439,7 +439,7 @@ proc/get_radio_key_from_channel(var/channel) // This, in tandem with "hearturfs", lets nested mobs hear whispers that are in range // Grifted from saycode above. - for(var/mob/M in player_list) + for(var/mob/M in GLOB.player_list) if(!M.client || isnewplayer(M)) continue //skip monkeys and leavers if(get_turf(M) in hearturfs) diff --git a/code/modules/mob/living/silicon/ai/ai.dm b/code/modules/mob/living/silicon/ai/ai.dm index daf723597de..8d5e60785db 100644 --- a/code/modules/mob/living/silicon/ai/ai.dm +++ b/code/modules/mob/living/silicon/ai/ai.dm @@ -104,6 +104,13 @@ var/list/ai_verbs_default = list( var/arrivalmsg = "$name, $rank, has arrived on the station." + var/multicam_allowed = FALSE + var/multicam_on = FALSE + var/obj/screen/movable/pic_in_pic/ai/master_multicam + var/list/multicam_screens = list() + var/list/all_eyes = list() + var/max_multicams = 6 + /mob/living/silicon/ai/proc/add_ai_verbs() verbs |= ai_verbs_default verbs |= silicon_subsystems @@ -119,12 +126,12 @@ var/list/ai_verbs_default = list( announcement.announcer = name announcement.newscast = 0 - var/list/possibleNames = ai_names + var/list/possibleNames = GLOB.ai_names var/pickedName = null while(!pickedName) - pickedName = pick(ai_names) - for(var/mob/living/silicon/ai/A in mob_list) + pickedName = pick(GLOB.ai_names) + for(var/mob/living/silicon/ai/A in GLOB.mob_list) if(A.real_name == pickedName && possibleNames.len > 1) //fixing the theoretically possible infinite loop possibleNames -= pickedName pickedName = null @@ -199,7 +206,7 @@ var/list/ai_verbs_default = list( builtInCamera.network = list("SS13") ai_list += src - shuttle_caller_list += src + GLOB.shuttle_caller_list += src ..() /mob/living/silicon/ai/proc/on_mob_init() @@ -264,7 +271,7 @@ var/list/ai_verbs_default = list( /mob/living/silicon/ai/Destroy() ai_list -= src - shuttle_caller_list -= src + GLOB.shuttle_caller_list -= src SSshuttle.autoEvac() QDEL_NULL(eyeobj) // No AI, no Eye if(malfhacking) @@ -612,7 +619,7 @@ var/list/ai_verbs_default = list( return if(href_list["track"]) - var/mob/living/target = locate(href_list["track"]) in mob_list + var/mob/living/target = locate(href_list["track"]) in GLOB.mob_list if(target && target.can_track()) ai_actual_track(target) else @@ -620,7 +627,7 @@ var/list/ai_verbs_default = list( return if(href_list["trackbot"]) - var/mob/living/simple_animal/bot/target = locate(href_list["trackbot"]) in simple_animal_list + var/mob/living/simple_animal/bot/target = locate(href_list["trackbot"]) in GLOB.simple_animal_list if(target) ai_actual_track(target) else @@ -628,7 +635,7 @@ var/list/ai_verbs_default = list( return if(href_list["callbot"]) //Command a bot to move to a selected location. - Bot = locate(href_list["callbot"]) in simple_animal_list + Bot = locate(href_list["callbot"]) in GLOB.simple_animal_list if(!Bot || Bot.remote_disabled || control_disabled) return //True if there is no bot found, the bot is manually emagged, or the AI is carded with wireless off. waypoint_mode = 1 @@ -636,7 +643,7 @@ var/list/ai_verbs_default = list( return if(href_list["interface"]) //Remotely connect to a bot! - Bot = locate(href_list["interface"]) in simple_animal_list + Bot = locate(href_list["interface"]) in GLOB.simple_animal_list if(!Bot || Bot.remote_disabled || control_disabled) return Bot.attack_ai(src) @@ -663,8 +670,8 @@ var/list/ai_verbs_default = list( M.transfer_ai(AI_MECH_HACK,src, usr) //Called om the mech itself. else if(href_list["faketrack"]) - var/mob/target = locate(href_list["track"]) in mob_list - var/mob/living/silicon/ai/A = locate(href_list["track2"]) in mob_list + var/mob/target = locate(href_list["track"]) in GLOB.mob_list + var/mob/living/silicon/ai/A = locate(href_list["track2"]) in GLOB.mob_list if(A && target) A.cameraFollow = target @@ -678,7 +685,7 @@ var/list/ai_verbs_default = list( continue else if(href_list["open"]) - var/mob/target = locate(href_list["open"]) in mob_list + var/mob/target = locate(href_list["open"]) in GLOB.mob_list if(target) open_nearest_door(target) @@ -691,10 +698,13 @@ var/list/ai_verbs_default = list( light_cameras() if(istype(A, /obj/machinery/camera)) current = A + if(A != GLOB.ai_camera_room_landmark) + end_multicam() . = ..() if(.) if(!A && isturf(loc) && eyeobj) + end_multicam() client.eye = eyeobj client.perspective = MOB_PERSPECTIVE eyeobj.get_remote_view_fullscreens(src) @@ -715,7 +725,7 @@ var/list/ai_verbs_default = list( d += "Query network status
" d += "
NameFingerprints
[H][md5(H.dna.uni_identity)]
[key_string][H.real_name][job_string][mins_ssd][role_string][get_area(H)]PP[get_area(H)][ADMIN_PP(H,"PP")]In Cryo
" - for(var/mob/living/simple_animal/bot/Bot in simple_animal_list) + for(var/mob/living/simple_animal/bot/Bot in GLOB.simple_animal_list) if(is_ai_allowed(Bot.z) && !Bot.remote_disabled) //Only non-emagged bots on the allowed Z-level are detected! bot_area = get_area(Bot) d += "" @@ -791,7 +801,7 @@ var/list/ai_verbs_default = list( if(!C.can_use()) continue - var/list/tempnetwork = difflist(C.network,restricted_camera_networks,1) + var/list/tempnetwork = difflist(C.network,GLOB.restricted_camera_networks,1) if(tempnetwork.len) for(var/i in tempnetwork) cameralist[i] = i @@ -841,7 +851,7 @@ var/list/ai_verbs_default = list( if(check_unable()) return - for(var/obj/machinery/M in machines) //change status + for(var/obj/machinery/M in GLOB.machines) //change status if(istype(M, /obj/machinery/ai_status_display)) var/obj/machinery/ai_status_display/AISD = M AISD.emotion = emote @@ -1109,15 +1119,15 @@ var/list/ai_verbs_default = list( /mob/living/silicon/ai/proc/check_unable(flags = 0) if(stat == DEAD) - to_chat(usr, "You are dead!") + to_chat(src, "You are dead!") return TRUE if(lacks_power()) - to_chat(usr, "Power systems failure!") + to_chat(src, "Power systems failure!") return TRUE if((flags & AI_CHECK_WIRELESS) && control_disabled) - to_chat(usr, "Wireless control is disabled!") + to_chat(src, "Wireless control is disabled!") return TRUE if((flags & AI_CHECK_RADIO) && aiRadio.disabledAi) to_chat(src, "System Error - Transceiver Disabled!") @@ -1249,6 +1259,14 @@ var/list/ai_verbs_default = list( else to_chat(src, "Target is not on or near any active cameras on the station.") +/mob/living/silicon/ai/proc/camera_visibility(mob/camera/aiEye/moved_eye) + cameranet.visibility(moved_eye, client, all_eyes) + +/mob/living/silicon/ai/forceMove(atom/destination) + . = ..() + if(.) + end_multicam() + /mob/living/silicon/ai/handle_fire() return @@ -1259,4 +1277,4 @@ var/list/ai_verbs_default = list( return FALSE /mob/living/silicon/ai/ExtinguishMob() - return + return \ No newline at end of file diff --git a/code/modules/mob/living/silicon/ai/death.dm b/code/modules/mob/living/silicon/ai/death.dm index ca4d2da70bd..ba418ef44c6 100644 --- a/code/modules/mob/living/silicon/ai/death.dm +++ b/code/modules/mob/living/silicon/ai/death.dm @@ -12,13 +12,13 @@ if(eyeobj) eyeobj.setLoc(get_turf(src)) - shuttle_caller_list -= src + GLOB.shuttle_caller_list -= src SSshuttle.autoEvac() if(nuking) set_security_level("red") nuking = 0 - for(var/obj/item/pinpointer/point in pinpointer_list) + for(var/obj/item/pinpointer/point in GLOB.pinpointer_list) point.the_disk = null //Point back to the disk. if(doomsday_device) diff --git a/code/modules/mob/living/silicon/ai/freelook/cameranet.dm b/code/modules/mob/living/silicon/ai/freelook/cameranet.dm index b18c011bb23..2771725a96d 100644 --- a/code/modules/mob/living/silicon/ai/freelook/cameranet.dm +++ b/code/modules/mob/living/silicon/ai/freelook/cameranet.dm @@ -38,29 +38,64 @@ var/datum/cameranet/cameranet = new() // Updates what the aiEye can see. It is recommended you use this when the aiEye moves or it's location is set. -/datum/cameranet/proc/visibility(mob/camera/aiEye/ai) - // 0xf = 15 - var/x1 = max(0, ai.x - 16) & ~(CHUNK_SIZE - 1) - var/y1 = max(0, ai.y - 16) & ~(CHUNK_SIZE - 1) - var/x2 = min(world.maxx, ai.x + 16) & ~(CHUNK_SIZE - 1) - var/y2 = min(world.maxy, ai.y + 16) & ~(CHUNK_SIZE - 1) +/datum/cameranet/proc/visibility(list/moved_eyes, client/C, list/other_eyes) + if(!islist(moved_eyes)) + moved_eyes = moved_eyes ? list(moved_eyes) : list() + if(islist(other_eyes)) + other_eyes = (other_eyes - moved_eyes) + else + other_eyes = list() - var/list/visibleChunks = list() + var/list/chunks_pre_seen = list() + var/list/chunks_post_seen = list() - for(var/x = x1; x <= x2; x += 16) - for(var/y = y1; y <= y2; y += 16) - visibleChunks += getCameraChunk(x, y, ai.z) + for(var/V in moved_eyes) + var/mob/camera/aiEye/eye = V + if(C) + chunks_pre_seen |= eye.visibleCameraChunks + // 0xf = 15 + var/static_range = eye.static_visibility_range + var/x1 = max(0, eye.x - static_range) & ~(CHUNK_SIZE - 1) + var/y1 = max(0, eye.y - static_range) & ~(CHUNK_SIZE - 1) + var/x2 = min(world.maxx, eye.x + static_range) & ~(CHUNK_SIZE - 1) + var/y2 = min(world.maxy, eye.y + static_range) & ~(CHUNK_SIZE - 1) - var/list/remove = ai.visibleCameraChunks - visibleChunks - var/list/add = visibleChunks - ai.visibleCameraChunks + var/list/visibleChunks = list() - for(var/chunk in remove) - var/datum/camerachunk/c = chunk - c.remove(ai) + for(var/x = x1; x <= x2; x += CHUNK_SIZE) + for(var/y = y1; y <= y2; y += CHUNK_SIZE) + visibleChunks |= getCameraChunk(x, y, eye.z) + + var/list/remove = eye.visibleCameraChunks - visibleChunks + var/list/add = visibleChunks - eye.visibleCameraChunks + + for(var/chunk in remove) + var/datum/camerachunk/c = chunk + c.remove(eye, FALSE) + + for(var/chunk in add) + var/datum/camerachunk/c = chunk + c.add(eye, FALSE) + + if(C) + chunks_post_seen |= eye.visibleCameraChunks + + if(C) + for(var/V in other_eyes) + var/mob/camera/aiEye/eye = V + chunks_post_seen |= eye.visibleCameraChunks + + var/list/remove = chunks_pre_seen - chunks_post_seen + var/list/add = chunks_post_seen - chunks_pre_seen + + for(var/chunk in remove) + var/datum/camerachunk/c = chunk + C.images -= c.obscured + + for(var/chunk in add) + var/datum/camerachunk/c = chunk + C.images += c.obscured - for(var/chunk in add) - var/datum/camerachunk/c = chunk - c.add(ai) // Updates the chunks that the turf is located in. Use this when obstacles are destroyed or when doors open. diff --git a/code/modules/mob/living/silicon/ai/freelook/chunk.dm b/code/modules/mob/living/silicon/ai/freelook/chunk.dm index 6737be463d6..ec2fd378ed5 100644 --- a/code/modules/mob/living/silicon/ai/freelook/chunk.dm +++ b/code/modules/mob/living/silicon/ai/freelook/chunk.dm @@ -21,10 +21,11 @@ // Add an AI eye to the chunk, then update if changed. -/datum/camerachunk/proc/add(mob/camera/aiEye/eye) - var/client/client = eye.GetViewerClient() - if(client) - client.images += obscured +/datum/camerachunk/proc/add(mob/camera/aiEye/eye, add_images = TRUE) + if(add_images) + var/client/client = eye.GetViewerClient() + if(client) + client.images += obscured eye.visibleCameraChunks += src visible++ seenby += eye @@ -33,10 +34,11 @@ // Remove an AI eye from the chunk, then update if changed. -/datum/camerachunk/proc/remove(mob/camera/aiEye/eye) - var/client/client = eye.GetViewerClient() - if(client) - client.images -= obscured +/datum/camerachunk/proc/remove(mob/camera/aiEye/eye, remove_images = TRUE) + if(remove_images) + var/client/client = eye.GetViewerClient() + if(client) + client.images -= obscured eye.visibleCameraChunks -= src seenby -= eye if(visible > 0) diff --git a/code/modules/mob/living/silicon/ai/freelook/eye.dm b/code/modules/mob/living/silicon/ai/freelook/eye.dm index 98b97ed0602..1037ec7fe61 100644 --- a/code/modules/mob/living/silicon/ai/freelook/eye.dm +++ b/code/modules/mob/living/silicon/ai/freelook/eye.dm @@ -14,6 +14,8 @@ var/list/visibleCameraChunks = list() var/mob/living/silicon/ai/ai = null var/relay_speech = FALSE + var/use_static = TRUE + var/static_visibility_range = 16 // Use this when setting the aiEye's location. @@ -25,10 +27,13 @@ return T = get_turf(T) loc = T - cameranet.visibility(src) - if(ai.client) + if(use_static) + ai.camera_visibility(src) + if(ai.client && !ai.multicam_on) ai.client.eye = src //Holopad + if(ai.master_multicam) + ai.master_multicam.refresh_view() if(istype(ai.current, /obj/machinery/hologram/holopad)) var/obj/machinery/hologram/holopad/H = ai.current H.move_hologram(ai, T) @@ -41,18 +46,16 @@ return ai.client return null - /mob/camera/aiEye/proc/RemoveImages() var/client/C = GetViewerClient() - if(C) + if(C && use_static) for(var/V in visibleCameraChunks) var/datum/camerachunk/chunk = V C.images -= chunk.obscured - /mob/camera/aiEye/Destroy() if(ai) - //ai.all_eyes -= src + ai.all_eyes -= src ai = null for(var/V in visibleCameraChunks) var/datum/camerachunk/chunk = V @@ -62,9 +65,9 @@ /atom/proc/move_camera_by_click() if(istype(usr, /mob/living/silicon/ai)) var/mob/living/silicon/ai/AI = usr - if(AI.eyeobj && AI.client.eye == AI.eyeobj) + if(AI.eyeobj && (AI.multicam_on || (AI.client.eye == AI.eyeobj)) && (AI.eyeobj.z == z)) AI.cameraFollow = null - if(isturf(src.loc) || isturf(src)) + if(isturf(loc) || isturf(src)) AI.eyeobj.setLoc(src) // AI MOVEMENT @@ -124,6 +127,7 @@ if(eyeobj) return eyeobj = new /mob/camera/aiEye() + all_eyes += eyeobj eyeobj.ai = src eyeobj.setLoc(loc) eyeobj.name = "[name] (AI Eye)" diff --git a/code/modules/mob/living/silicon/ai/latejoin.dm b/code/modules/mob/living/silicon/ai/latejoin.dm index 606420e7cf1..41e7d20fb1e 100644 --- a/code/modules/mob/living/silicon/ai/latejoin.dm +++ b/code/modules/mob/living/silicon/ai/latejoin.dm @@ -1,7 +1,7 @@ var/global/list/empty_playable_ai_cores = list() /hook/roundstart/proc/spawn_empty_ai() - for(var/obj/effect/landmark/start/S in landmarks_list) + for(var/obj/effect/landmark/start/S in GLOB.landmarks_list) if(S.name != "AI") continue if(locate(/mob/living) in S.loc) @@ -42,21 +42,21 @@ var/global/list/empty_playable_ai_cores = list() // TODO: Move away from the insane name-based landmark system /mob/living/silicon/ai/proc/moveToAILandmark() var/obj/loc_landmark - for(var/obj/effect/landmark/start/sloc in landmarks_list) + for(var/obj/effect/landmark/start/sloc in GLOB.landmarks_list) if(sloc.name != "AI") continue if(locate(/mob/living) in sloc.loc) continue loc_landmark = sloc if(!loc_landmark) - for(var/obj/effect/landmark/tripai in landmarks_list) + for(var/obj/effect/landmark/tripai in GLOB.landmarks_list) if(tripai.name == "tripai") if(locate(/mob/living) in tripai.loc) continue loc_landmark = tripai if(!loc_landmark) to_chat(src, "Oh god sorry we can't find an unoccupied AI spawn location, so we're spawning you on top of someone.") - for(var/obj/effect/landmark/start/sloc in landmarks_list) + for(var/obj/effect/landmark/start/sloc in GLOB.landmarks_list) if(sloc.name == "AI") loc_landmark = sloc diff --git a/code/modules/mob/living/silicon/ai/laws.dm b/code/modules/mob/living/silicon/ai/laws.dm index 4ce1dbda48c..19e0b784a58 100755 --- a/code/modules/mob/living/silicon/ai/laws.dm +++ b/code/modules/mob/living/silicon/ai/laws.dm @@ -17,7 +17,7 @@ /mob/living/silicon/ai/add_ion_law(var/law) ..() - for(var/mob/living/silicon/robot/R in mob_list) + for(var/mob/living/silicon/robot/R in GLOB.mob_list) if(R.lawupdate && (R.connected_ai == src)) R.show_laws() diff --git a/code/modules/mob/living/silicon/ai/life.dm b/code/modules/mob/living/silicon/ai/life.dm index c3b22129cb8..3700f83f0a9 100644 --- a/code/modules/mob/living/silicon/ai/life.dm +++ b/code/modules/mob/living/silicon/ai/life.dm @@ -59,6 +59,7 @@ spawn(20) to_chat(src, "Backup battery online. Scanners, camera, and radio interface offline. Beginning fault-detection.") + end_multicam() sleep(50) my_area = get_area(src) T = get_turf(src) diff --git a/code/modules/mob/living/silicon/ai/login.dm b/code/modules/mob/living/silicon/ai/login.dm index 7d3a65445ff..af3664edab7 100644 --- a/code/modules/mob/living/silicon/ai/login.dm +++ b/code/modules/mob/living/silicon/ai/login.dm @@ -1,4 +1,4 @@ -/mob/living/silicon/ai/Login() //ThisIsDumb(TM) TODO: tidy this up ¬_¬ ~Carn +/mob/living/silicon/ai/Login() //ThisIsDumb(TM) TODO: tidy this up �_� ~Carn ..() for(var/obj/effect/rune/rune in world) var/image/blood = image(loc = rune) @@ -7,7 +7,9 @@ regenerate_icons() if(stat != DEAD) - for(var/obj/machinery/ai_status_display/O in machines) //change status + for(var/obj/machinery/ai_status_display/O in GLOB.machines) //change status O.mode = 1 O.emotion = "Neutral" + if(multicam_on) + end_multicam() view_core() \ No newline at end of file diff --git a/code/modules/mob/living/silicon/ai/multicam.dm b/code/modules/mob/living/silicon/ai/multicam.dm new file mode 100644 index 00000000000..254d5a9b794 --- /dev/null +++ b/code/modules/mob/living/silicon/ai/multicam.dm @@ -0,0 +1,260 @@ +//Picture in picture + +/obj/screen/movable/pic_in_pic/ai + var/mob/living/silicon/ai/ai + var/mutable_appearance/highlighted_background + var/highlighted = FALSE + var/mob/camera/aiEye/pic_in_pic/aiEye + +/obj/screen/movable/pic_in_pic/ai/Initialize() + . = ..() + aiEye = new /mob/camera/aiEye/pic_in_pic() + aiEye.screen = src + +/obj/screen/movable/pic_in_pic/ai/Destroy() + set_ai(null) + QDEL_NULL(aiEye) + return ..() + +/obj/screen/movable/pic_in_pic/ai/Click() + ..() + if(ai) + ai.select_main_multicam_window(src) + +/obj/screen/movable/pic_in_pic/ai/make_backgrounds() + ..() + highlighted_background = new /mutable_appearance() + highlighted_background.icon = 'icons/misc/pic_in_pic.dmi' + highlighted_background.icon_state = "background_highlight" + highlighted_background.layer = SPACE_LAYER + +/obj/screen/movable/pic_in_pic/ai/add_background() + if((width > 0) && (height > 0)) + var/matrix/M = matrix() + M.Scale(width + 0.5, height + 0.5) + M.Translate((width-1)/2 * world.icon_size, (height-1)/2 * world.icon_size) + highlighted_background.transform = M + standard_background.transform = M + overlays += highlighted ? highlighted_background : standard_background + +/obj/screen/movable/pic_in_pic/ai/set_view_size(width, height, do_refresh = TRUE) + aiEye.static_visibility_range = (round(max(width, height) / 2) + 1) + if(ai) + ai.camera_visibility(aiEye) + ..() + +/obj/screen/movable/pic_in_pic/ai/set_view_center(atom/target, do_refresh = TRUE) + ..() + aiEye.setLoc(get_turf(target)) + +/obj/screen/movable/pic_in_pic/ai/refresh_view() + ..() + aiEye.setLoc(get_turf(center)) + +/obj/screen/movable/pic_in_pic/ai/proc/highlight() + if(highlighted) + return + highlighted = TRUE + overlays -= standard_background + overlays += highlighted_background + +/obj/screen/movable/pic_in_pic/ai/proc/unhighlight() + if(!highlighted) + return + highlighted = FALSE + overlays -= highlighted_background + overlays += standard_background + +/obj/screen/movable/pic_in_pic/ai/proc/set_ai(mob/living/silicon/ai/new_ai) + if(ai) + ai.multicam_screens -= src + ai.all_eyes -= aiEye + if(ai.master_multicam == src) + ai.master_multicam = null + if(ai.multicam_on) + unshow_to(ai.client) + ai = new_ai + if(new_ai) + new_ai.multicam_screens += src + ai.all_eyes += aiEye + if(new_ai.multicam_on) + show_to(new_ai.client) + +//Turf, area, and landmark for the viewing room + +/turf/unsimulated/ai_visible + name = "" + icon = 'icons/misc/pic_in_pic.dmi' + icon_state = "room_background" + flags = NOJAUNT + +/turf/unsimulated/ai_visible/Initialize() + . = ..() + obscured = image(null, src, null) + +/area/ai_multicam_room + name = "ai_multicam_room" + icon_state = "ai_camera_room" + dynamic_lighting = FALSE + valid_territory = FALSE + ambientsounds = list() + +GLOBAL_DATUM(ai_camera_room_landmark, /obj/effect/landmark/ai_multicam_room) + +/obj/effect/landmark/ai_multicam_room + name = "ai camera room" + icon = 'icons/mob/screen_gen.dmi' + icon_state = "x" + +/obj/effect/landmark/ai_multicam_room/Initialize() + . = ..() + qdel(GLOB.ai_camera_room_landmark) + GLOB.ai_camera_room_landmark = src + +/obj/effect/landmark/ai_multicam_room/Destroy() + if(GLOB.ai_camera_room_landmark == src) + GLOB.ai_camera_room_landmark = null + return ..() + +//Dummy camera eyes + +/mob/camera/aiEye/pic_in_pic + name = "Secondary AI Eye" + var/obj/screen/movable/pic_in_pic/ai/screen + var/list/cameras_telegraphed = list() + var/telegraph_cameras = TRUE + var/telegraph_range = 7 + +/mob/camera/aiEye/pic_in_pic/GetViewerClient() + if(screen && screen.ai) + return screen.ai.client + +/mob/camera/aiEye/pic_in_pic/setLoc(turf/T) + T = get_turf(T) + forceMove(T) + if(screen && screen.ai) + screen.ai.camera_visibility(src) + else + cameranet.visibility(src) + update_camera_telegraphing() + +/mob/camera/aiEye/pic_in_pic/proc/update_camera_telegraphing() + if(!telegraph_cameras) + return + var/list/obj/machinery/camera/add = list() + var/list/obj/machinery/camera/remove = list() + var/list/obj/machinery/camera/visible = list() + for(var/VV in visibleCameraChunks) + var/datum/camerachunk/CC = VV + for(var/V in CC.cameras) + var/obj/machinery/camera/C = V + if (!C.can_use() || (get_dist(C, src) > telegraph_range)) + continue + visible |= C + + add = visible - cameras_telegraphed + remove = cameras_telegraphed - visible + + for(var/V in remove) + var/obj/machinery/camera/C = V + if(QDELETED(C)) + continue + cameras_telegraphed -= C + C.in_use_lights-- + C.update_icon() + for(var/V in add) + var/obj/machinery/camera/C = V + if(QDELETED(C)) + continue + cameras_telegraphed |= C + C.in_use_lights++ + C.update_icon() + +/mob/camera/aiEye/pic_in_pic/proc/disable_camera_telegraphing() + telegraph_cameras = FALSE + for(var/V in cameras_telegraphed) + var/obj/machinery/camera/C = V + if(QDELETED(C)) + continue + C.in_use_lights-- + C.update_icon() + cameras_telegraphed.Cut() + +/mob/camera/aiEye/pic_in_pic/Destroy() + disable_camera_telegraphing() + return ..() + +//AI procs + +/mob/living/silicon/ai/proc/drop_new_multicam(silent = FALSE) + if(!multicam_allowed) + if(!silent) + to_chat(src, "This action is currently disabled. Contact an administrator to enable this feature.") + return + if(!eyeobj) + return + if(multicam_screens.len >= max_multicams) + if(!silent) + to_chat(src, "Cannot place more than [max_multicams] multicamera windows.") + return + var/obj/screen/movable/pic_in_pic/ai/C = new /obj/screen/movable/pic_in_pic/ai() + C.set_view_size(3, 3, FALSE) + C.set_view_center(get_turf(eyeobj)) + C.set_ai(src) + if(!silent) + to_chat(src, "Added new multicamera window.") + return C + +/mob/living/silicon/ai/proc/toggle_multicam() + if(!multicam_allowed) + to_chat(src, "This action is currently disabled. Contact an administrator to enable this feature.") + return + if(multicam_on) + end_multicam() + else + start_multicam() + +/mob/living/silicon/ai/proc/start_multicam() + if(multicam_on || aiRestorePowerRoutine || !isturf(loc)) + return + if(!GLOB.ai_camera_room_landmark) + to_chat(src, "This function is not available at this time.") + return + multicam_on = TRUE + refresh_multicam() + to_chat(src, "Multiple-camera viewing mode activated.") + +/mob/living/silicon/ai/proc/refresh_multicam() + reset_perspective(GLOB.ai_camera_room_landmark) + if(client) + for(var/V in multicam_screens) + var/obj/screen/movable/pic_in_pic/P = V + P.show_to(client) + +/mob/living/silicon/ai/proc/end_multicam() + if(!multicam_on) + return + multicam_on = FALSE + select_main_multicam_window(null) + if(client) + for(var/V in multicam_screens) + var/obj/screen/movable/pic_in_pic/P = V + P.unshow_to(client) + reset_perspective() + to_chat(src, "Multiple-camera viewing mode deactivated.") + + +/mob/living/silicon/ai/proc/select_main_multicam_window(obj/screen/movable/pic_in_pic/ai/P) + if(master_multicam == P) + return + + if(master_multicam) + master_multicam.set_view_center(get_turf(eyeobj), FALSE) + master_multicam.unhighlight() + master_multicam = null + + if(P) + P.highlight() + eyeobj.setLoc(get_turf(P.center)) + P.set_view_center(eyeobj) + master_multicam = P diff --git a/code/modules/mob/living/silicon/ai/say.dm b/code/modules/mob/living/silicon/ai/say.dm index d35983a1390..431cf44a331 100644 --- a/code/modules/mob/living/silicon/ai/say.dm +++ b/code/modules/mob/living/silicon/ai/say.dm @@ -148,7 +148,7 @@ var/const/VOX_PATH = "sound/vox_fem/" // If there is no single listener, broadcast to everyone in the same z level if(!only_listener) // Play voice for all mobs in the z level - for(var/mob/M in player_list) + for(var/mob/M in GLOB.player_list) if(M.client) var/turf/T = get_turf(M) if(T && T.z == z_level && M.can_hear()) diff --git a/code/modules/mob/living/silicon/death.dm b/code/modules/mob/living/silicon/death.dm index b5c658c6c62..1c6fa2705f1 100644 --- a/code/modules/mob/living/silicon/death.dm +++ b/code/modules/mob/living/silicon/death.dm @@ -16,7 +16,7 @@ // flick("gibbed-r", animation) robogibs(loc) - dead_mob_list -= src + GLOB.dead_mob_list -= src spawn(15) if(animation) qdel(animation) if(src) qdel(src) @@ -37,7 +37,7 @@ // flick("dust-r", animation) new /obj/effect/decal/remains/robot(loc) - dead_mob_list -= src + GLOB.dead_mob_list -= src spawn(15) if(animation) qdel(animation) if(src) qdel(src) diff --git a/code/modules/mob/living/silicon/pai/pai.dm b/code/modules/mob/living/silicon/pai/pai.dm index 210aeadb7ee..eeaa920c83a 100644 --- a/code/modules/mob/living/silicon/pai/pai.dm +++ b/code/modules/mob/living/silicon/pai/pai.dm @@ -225,9 +225,9 @@ // See software.dm for Topic() -/mob/living/silicon/pai/attack_animal(mob/living/simple_animal/M as mob) - if(M.melee_damage_upper == 0) - M.custom_emote(1, "[M.friendly] [src]") +/mob/living/silicon/pai/attack_animal(mob/living/simple_animal/M) + if((M.a_intent == INTENT_HELP && M.ckey) || M.melee_damage_upper == 0) + M.custom_emote(1, "[M.friendly] [src].") else M.do_attack_animation(src) if(M.attack_sound) diff --git a/code/modules/mob/living/silicon/pai/recruit.dm b/code/modules/mob/living/silicon/pai/recruit.dm index 2d52af6e89d..1797fc8b4bd 100644 --- a/code/modules/mob/living/silicon/pai/recruit.dm +++ b/code/modules/mob/living/silicon/pai/recruit.dm @@ -22,102 +22,235 @@ var/datum/paiController/paiController // Global handler for pAI candidates var/askDelay = 10 * 60 * 1 // One minute [ms * sec * min] - Topic(href, href_list[]) - if("signup" in href_list) - var/mob/dead/observer/O = locate(href_list["signup"]) - if(!O) return - if(!(O in respawnable_list)) - to_chat(O, "You've given up your ability to respawn!") - return - if(!check_recruit(O)) return - recruitWindow(O) +/datum/paiController/Topic(href, href_list[]) + if("signup" in href_list) + var/mob/dead/observer/O = locate(href_list["signup"]) + if(!O) return + if(!(O in GLOB.respawnable_list)) + to_chat(O, "You've given up your ability to respawn!") return + if(!check_recruit(O)) return + recruitWindow(O) + return - if(href_list["download"]) - var/datum/paiCandidate/candidate = locate(href_list["candidate"]) - var/obj/item/paicard/card = locate(href_list["device"]) - if(card.pai) + if(href_list["download"]) + var/datum/paiCandidate/candidate = locate(href_list["candidate"]) + var/obj/item/paicard/card = locate(href_list["device"]) + if(card.pai) + return + if(usr.incapacitated() || isobserver(usr) || !card.Adjacent(usr)) + return + if(istype(card,/obj/item/paicard) && istype(candidate,/datum/paiCandidate)) + var/mob/living/silicon/pai/pai = new(card) + if(!candidate.name) + pai.name = pick(GLOB.ninja_names) + else + pai.name = candidate.name + pai.real_name = pai.name + pai.key = candidate.key + + card.setPersonality(pai) + card.looking_for_personality = 0 + + ticker.mode.update_cult_icons_removed(card.pai.mind) + ticker.mode.update_rev_icons_removed(card.pai.mind) + + pai_candidates -= candidate + usr << browse(null, "window=findPai") + + if(href_list["new"]) + var/datum/paiCandidate/candidate = locate(href_list["candidate"]) + var/option = href_list["option"] + var/t = "" + + switch(option) + if("name") + t = input("Enter a name for your pAI", "pAI Name", candidate.name) as text + if(t) + candidate.name = sanitize(copytext(t,1,MAX_NAME_LEN)) + if("desc") + t = input("Enter a description for your pAI", "pAI Description", candidate.description) as message + if(t) + candidate.description = sanitize(copytext(t,1,MAX_MESSAGE_LEN)) + if("role") + t = input("Enter a role for your pAI", "pAI Role", candidate.role) as text + if(t) + candidate.role = sanitize(copytext(t,1,MAX_MESSAGE_LEN)) + if("ooc") + t = input("Enter any OOC comments", "pAI OOC Comments", candidate.comments) as message + if(t) + candidate.comments = sanitize(copytext(t,1,MAX_MESSAGE_LEN)) + if("save") + candidate.savefile_save(usr) + if("load") + candidate.savefile_load(usr) + //In case people have saved unsanitized stuff. + if(candidate.name) + candidate.name = sanitize(copytext(candidate.name,1,MAX_NAME_LEN)) + if(candidate.description) + candidate.description = sanitize(copytext(candidate.description,1,MAX_MESSAGE_LEN)) + if(candidate.role) + candidate.role = sanitize(copytext(candidate.role,1,MAX_MESSAGE_LEN)) + if(candidate.comments) + candidate.comments = sanitize(copytext(candidate.comments,1,MAX_MESSAGE_LEN)) + + if("submit") + if(candidate) + candidate.ready = 1 + for(var/obj/item/paicard/p in world) + if(p.looking_for_personality == 1) + p.alertUpdate() + usr << browse(null, "window=paiRecruit") return - if(istype(card,/obj/item/paicard) && istype(candidate,/datum/paiCandidate)) - var/mob/living/silicon/pai/pai = new(card) - if(!candidate.name) - pai.name = pick(ninja_names) - else - pai.name = candidate.name - pai.real_name = pai.name - pai.key = candidate.key + recruitWindow(usr) - card.setPersonality(pai) - card.looking_for_personality = 0 - - ticker.mode.update_cult_icons_removed(card.pai.mind) - ticker.mode.update_rev_icons_removed(card.pai.mind) - - pai_candidates -= candidate - usr << browse(null, "window=findPai") - - if(href_list["new"]) - var/datum/paiCandidate/candidate = locate(href_list["candidate"]) - var/option = href_list["option"] - var/t = "" - - switch(option) - if("name") - t = input("Enter a name for your pAI", "pAI Name", candidate.name) as text - if(t) - candidate.name = reject_bad_name(sanitize(copytext(t,1,MAX_NAME_LEN))) - if("desc") - t = input("Enter a description for your pAI", "pAI Description", candidate.description) as message - if(t) - candidate.description = sanitize(copytext(t,1,MAX_MESSAGE_LEN)) - if("role") - t = input("Enter a role for your pAI", "pAI Role", candidate.role) as text - if(t) - candidate.role = sanitize(copytext(t,1,MAX_MESSAGE_LEN)) - if("ooc") - t = input("Enter any OOC comments", "pAI OOC Comments", candidate.comments) as message - if(t) - candidate.comments = sanitize(copytext(t,1,MAX_MESSAGE_LEN)) - if("save") - candidate.savefile_save(usr) - if("load") - candidate.savefile_load(usr) - //In case people have saved unsanitized stuff. - if(candidate.name) - candidate.name = reject_bad_name(sanitize(copytext(candidate.name,1,MAX_NAME_LEN))) - if(candidate.description) - candidate.description = sanitize(copytext(candidate.description,1,MAX_MESSAGE_LEN)) - if(candidate.role) - candidate.role = sanitize(copytext(candidate.role,1,MAX_MESSAGE_LEN)) - if(candidate.comments) - candidate.comments = sanitize(copytext(candidate.comments,1,MAX_MESSAGE_LEN)) - - if("submit") - if(candidate) - candidate.ready = 1 - for(var/obj/item/paicard/p in world) - if(p.looking_for_personality == 1) - p.alertUpdate() - usr << browse(null, "window=paiRecruit") - return - recruitWindow(usr) - - proc/recruitWindow(var/mob/M as mob) - var/datum/paiCandidate/candidate - for(var/datum/paiCandidate/c in pai_candidates) - if(!istype(c) || !istype(M)) - break - if(c.key == M.key) - candidate = c - if(!candidate) - candidate = new /datum/paiCandidate() - candidate.key = M.key - pai_candidates.Add(candidate) +/datum/paiController/proc/recruitWindow(var/mob/M as mob) + var/datum/paiCandidate/candidate + for(var/datum/paiCandidate/c in pai_candidates) + if(!istype(c) || !istype(M)) + break + if(c.key == M.key) + candidate = c + if(!candidate) + candidate = new /datum/paiCandidate() + candidate.key = M.key + pai_candidates.Add(candidate) - var/dat = "" - dat += {" - + "} + + dat += {" + + pAI Personality Configuration +

Please configure your pAI personality's options. Remember, what you enter here could determine whether or not the user requesting a personality chooses you!

+ +

Name

Status

Location

Control

[Bot.hacked ? "(!) [Bot.name]" : Bot.name] ([Bot.model])
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Name:[candidate.name] 
What you plan to call yourself. Suggestions: Any character name you would choose for a station character OR an AI.
Description:[candidate.description] 
What sort of pAI you typically play; your mannerisms, your quirks, etc. This can be as sparse or as detailed as you like.
Preferred Role:[candidate.role] 
Do you like to partner with sneaky social ninjas? Like to help security hunt down thugs? Enjoy watching an engineer's back while he saves the station yet again? This doesn't have to be limited to just station jobs. Pretty much any general descriptor for what you'd like to be doing works here.
OOC Comments:[candidate.comments] 
Anything you'd like to address specifically to the player reading this in an OOC manner. \"I prefer more serious RP.\", \"I'm still learning the interface!\", etc. Feel free to leave this blank if you want.
+
+ + + + + + + +
+ Save Personality +
+ Load Personality +

+ + +
Submit Personality

+ + + "} + + M << browse(dat, "window=paiRecruit;size=580x580;") + +/datum/paiController/proc/findPAI(var/obj/item/paicard/p, var/mob/user) + requestRecruits(p, user) + var/list/available = list() + for(var/datum/paiCandidate/c in paiController.pai_candidates) + if(c.ready) + var/found = 0 + for(var/mob/o in GLOB.respawnable_list) + if(o.key == c.key) + found = 1 + if(found) + available.Add(c) + var/dat = "" + + dat += {" + + + + - "} + + + pAI Availability List

+ "} + dat += "

Displaying available AI personalities from central database... If there are no entries, or if a suitable entry is not listed, check again later as more personalities may be added.

" + for(var/datum/paiCandidate/c in available) dat += {" - - pAI Personality Configuration -

Please configure your pAI personality's options. Remember, what you enter here could determine whether or not the user requesting a personality chooses you!

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Name:[candidate.name] 
What you plan to call yourself. Suggestions: Any character name you would choose for a station character OR an AI.
Description:[candidate.description] 
What sort of pAI you typically play; your mannerisms, your quirks, etc. This can be as sparse or as detailed as you like.
Preferred Role:[candidate.role] 
Do you like to partner with sneaky social ninjas? Like to help security hunt down thugs? Enjoy watching an engineer's back while he saves the station yet again? This doesn't have to be limited to just station jobs. Pretty much any general descriptor for what you'd like to be doing works here.
OOC Comments:[candidate.comments] 
Anything you'd like to address specifically to the player reading this in an OOC manner. \"I prefer more serious RP.\", \"I'm still learning the interface!\", etc. Feel free to leave this blank if you want.
-
- - -
- Save Personality + + + + + + + + + + + + + + + + + +
Name:[c.name]
Description:[c.description]
Preferred Role:[c.role]
OOC Comments:[c.comments]
+ + - - - - -
Download [c.name]
- Load Personality -

- - -
Submit Personality

- - +
+
"} - M << browse(dat, "window=paiRecruit;size=580x580;") + dat += {" + + + "} - proc/findPAI(var/obj/item/paicard/p, var/mob/user) - requestRecruits(p, user) - var/list/available = list() - for(var/datum/paiCandidate/c in paiController.pai_candidates) - if(c.ready) - var/found = 0 - for(var/mob/o in respawnable_list) - if(o.key == c.key) - found = 1 - if(found) - available.Add(c) - var/dat = "" + user << browse(dat, "window=findPai") - dat += {" - - - - - - - pAI Availability List

- "} - dat += "

Displaying available AI personalities from central database... If there are no entries, or if a suitable entry is not listed, check again later as more personalities may be added.

" +/datum/paiController/proc/requestRecruits(var/obj/item/paicard/P, mob/user) + for(var/mob/dead/observer/O in GLOB.player_list) + if(O.client && (ROLE_PAI in O.client.prefs.be_special)) + if(player_old_enough_antag(O.client,ROLE_PAI)) + if(check_recruit(O)) + to_chat(O, "A pAI card activated by [user.real_name] is looking for personalities. (Teleport | Sign Up)") + //question(O.client) - for(var/datum/paiCandidate/c in available) - dat += {" - - - - - - - - - - - - - - - - - -
Name:[c.name]
Description:[c.description]
Preferred Role:[c.role]
OOC Comments:[c.comments]
- - -
Download [c.name] -
-
- "} - - dat += {" - - - "} - - user << browse(dat, "window=findPai") - - proc/requestRecruits(var/obj/item/paicard/P, mob/user) - for(var/mob/dead/observer/O in player_list) - if(O.client && (ROLE_PAI in O.client.prefs.be_special)) - if(player_old_enough_antag(O.client,ROLE_PAI)) - if(check_recruit(O)) - to_chat(O, "A pAI card activated by [user.real_name] is looking for personalities. (Teleport | Sign Up)") - //question(O.client) - - proc/check_recruit(var/mob/dead/observer/O) - if(jobban_isbanned(O, ROLE_PAI) || jobban_isbanned(O,"nonhumandept")) - return 0 - if(!player_old_enough_antag(O.client,ROLE_PAI)) - return 0 - if(cannotPossess(O)) - return 0 - if(!(O in respawnable_list)) - return 0 - if(O.client) - return 1 +/datum/paiController/proc/check_recruit(var/mob/dead/observer/O) + if(jobban_isbanned(O, ROLE_PAI) || jobban_isbanned(O,"nonhumandept")) return 0 + if(!player_old_enough_antag(O.client,ROLE_PAI)) + return 0 + if(cannotPossess(O)) + return 0 + if(!(O in GLOB.respawnable_list)) + return 0 + if(O.client) + return 1 + return 0 - proc/question(var/client/C) - spawn(0) - if(!C) return - asked.Add(C.key) - asked[C.key] = world.time - var/response = alert(C, "Someone is requesting a pAI personality. Would you like to play as a personal AI?", "pAI Request", "Yes", "No", "Never for this round") - if(!C) return //handle logouts that happen whilst the alert is waiting for a response. - if(response == "Yes") - recruitWindow(C.mob) - else if(response == "Never for this round") - var/warning = alert(C, "Are you sure? This action will be undoable and you will need to wait until next round.", "You sure?", "Yes", "No") - if(warning == "Yes") - asked[C.key] = INFINITY - else - question(C) +/datum/paiController/proc/question(var/client/C) + spawn(0) + if(!C) return + asked.Add(C.key) + asked[C.key] = world.time + var/response = alert(C, "Someone is requesting a pAI personality. Would you like to play as a personal AI?", "pAI Request", "Yes", "No", "Never for this round") + if(!C) return //handle logouts that happen whilst the alert is waiting for a response. + if(response == "Yes") + recruitWindow(C.mob) + else if(response == "Never for this round") + var/warning = alert(C, "Are you sure? This action will be undoable and you will need to wait until next round.", "You sure?", "Yes", "No") + if(warning == "Yes") + asked[C.key] = INFINITY + else + question(C) diff --git a/code/modules/mob/living/silicon/pai/software_modules.dm b/code/modules/mob/living/silicon/pai/software_modules.dm index 48c1c1d7d10..67449c4c32b 100644 --- a/code/modules/mob/living/silicon/pai/software_modules.dm +++ b/code/modules/mob/living/silicon/pai/software_modules.dm @@ -383,7 +383,7 @@ /mob/living/silicon/pai/proc/hackloop() var/turf/T = get_turf_or_move(src.loc) - for(var/mob/living/silicon/ai/AI in player_list) + for(var/mob/living/silicon/ai/AI in GLOB.player_list) if(!T || !is_station_contact(T.z)) break if(T.loc) diff --git a/code/modules/mob/living/silicon/robot/component.dm b/code/modules/mob/living/silicon/robot/component.dm index 69cf6f93872..d81b76e2e76 100644 --- a/code/modules/mob/living/silicon/robot/component.dm +++ b/code/modules/mob/living/silicon/robot/component.dm @@ -307,4 +307,9 @@ if(!organ_found) to_chat(user, "No prosthetics located.") + if(H.isSynthetic()) + to_chat(user, "Internal Fluid Level:[H.blood_volume]/[H.max_blood]") + if(H.bleed_rate) + to_chat(user, "Warning:External component leak detected!") + src.add_fingerprint(user) diff --git a/code/modules/mob/living/silicon/robot/death.dm b/code/modules/mob/living/silicon/robot/death.dm index f9432ab7836..54049d9d06f 100644 --- a/code/modules/mob/living/silicon/robot/death.dm +++ b/code/modules/mob/living/silicon/robot/death.dm @@ -16,8 +16,8 @@ flick("gibbed-r", animation) robogibs(loc) - living_mob_list -= src - dead_mob_list -= src + GLOB.living_mob_list -= src + GLOB.dead_mob_list -= src spawn(15) if(animation) qdel(animation) if(src) qdel(src) @@ -39,7 +39,7 @@ new /obj/effect/decal/remains/robot(loc) if(mmi) qdel(mmi) //Delete the MMI first so that it won't go popping out. - dead_mob_list -= src + GLOB.dead_mob_list -= src spawn(15) if(animation) qdel(animation) if(src) qdel(src) diff --git a/code/modules/mob/living/silicon/robot/drone/drone.dm b/code/modules/mob/living/silicon/robot/drone/drone.dm index eb1596c55c6..1b18b6b3cbe 100644 --- a/code/modules/mob/living/silicon/robot/drone/drone.dm +++ b/code/modules/mob/living/silicon/robot/drone/drone.dm @@ -132,7 +132,7 @@ to_chat(user, "The interface is fried, and a distressing burned smell wafts from the robot's interior. You're not rebooting this one.") return - if(!allowed(usr)) + if(!allowed(W)) to_chat(user, "Access denied.") return @@ -158,7 +158,7 @@ if(emagged) return - if(allowed(usr)) + if(allowed(W)) shut_down() else to_chat(user, "Access denied.") @@ -254,7 +254,7 @@ //Reboot procs. /mob/living/silicon/robot/drone/proc/request_player() - for(var/mob/dead/observer/O in player_list) + for(var/mob/dead/observer/O in GLOB.player_list) if(cannotPossess(O)) continue if(jobban_isbanned(O,"nonhumandept") || jobban_isbanned(O,"Drone")) diff --git a/code/modules/mob/living/silicon/robot/drone/drone_abilities.dm b/code/modules/mob/living/silicon/robot/drone/drone_abilities.dm index b3e6a62cb2e..44eff377f77 100644 --- a/code/modules/mob/living/silicon/robot/drone/drone_abilities.dm +++ b/code/modules/mob/living/silicon/robot/drone/drone_abilities.dm @@ -4,14 +4,14 @@ set desc = "Tag yourself for delivery through the disposals system." set category = "Drone" - var/tag = input("Select the desired destination.", "Set Mail Tag", null) as null|anything in TAGGERLOCATIONS + var/tag = input("Select the desired destination.", "Set Mail Tag", null) as null|anything in GLOB.TAGGERLOCATIONS - if(!tag || TAGGERLOCATIONS[tag]) + if(!tag || GLOB.TAGGERLOCATIONS[tag]) mail_destination = 0 return to_chat(src, "You configure your internal beacon, tagging yourself for delivery to '[tag]'.") - mail_destination = TAGGERLOCATIONS.Find(tag) + mail_destination = GLOB.TAGGERLOCATIONS.Find(tag) //Auto flush if we use this verb inside a disposal chute. var/obj/machinery/disposal/D = src.loc diff --git a/code/modules/mob/living/silicon/robot/drone/drone_console.dm b/code/modules/mob/living/silicon/robot/drone/drone_console.dm index cb632ce0ffd..167bf45ca6e 100644 --- a/code/modules/mob/living/silicon/robot/drone/drone_console.dm +++ b/code/modules/mob/living/silicon/robot/drone/drone_console.dm @@ -63,9 +63,9 @@ if(href_list["setarea"]) //Probably should consider using another list, but this one will do. - var/t_area = input("Select the area to ping.", "Set Target Area", null) as null|anything in TAGGERLOCATIONS + var/t_area = input("Select the area to ping.", "Set Target Area", null) as null|anything in GLOB.TAGGERLOCATIONS - if(!t_area || TAGGERLOCATIONS[t_area]) + if(!t_area || GLOB.TAGGERLOCATIONS[t_area]) return drone_call_area = t_area diff --git a/code/modules/mob/living/silicon/robot/drone/drone_items.dm b/code/modules/mob/living/silicon/robot/drone/drone_items.dm index 88d566ad692..124a8d90fae 100644 --- a/code/modules/mob/living/silicon/robot/drone/drone_items.dm +++ b/code/modules/mob/living/silicon/robot/drone/drone_items.dm @@ -29,7 +29,7 @@ /obj/item/tank, /obj/item/circuitboard, /obj/item/stack/tile/light, - /obj/item/ore/bluespace_crystal + /obj/item/stack/ore/bluespace_crystal ) //Item currently being held. diff --git a/code/modules/mob/living/silicon/robot/drone/drone_say.dm b/code/modules/mob/living/silicon/robot/drone/drone_say.dm index 779b3a2de14..741207d6f2d 100644 --- a/code/modules/mob/living/silicon/robot/drone/drone_say.dm +++ b/code/modules/mob/living/silicon/robot/drone/drone_say.dm @@ -5,7 +5,7 @@ if(!speaking) speaking = parse_language(message) if(!speaking) - speaking = istype(get_default_language(), /datum/language) ? get_default_language() : all_languages[get_default_language()] + speaking = istype(get_default_language(), /datum/language) ? get_default_language() : GLOB.all_languages[get_default_language()] message = speaking.key + " " + message; // Prepend key to prevent the message from getting trimmed if(speaking) return ..() diff --git a/code/modules/mob/living/silicon/robot/emote.dm b/code/modules/mob/living/silicon/robot/emote.dm index f4db32b8081..9c130780d81 100644 --- a/code/modules/mob/living/silicon/robot/emote.dm +++ b/code/modules/mob/living/silicon/robot/emote.dm @@ -6,7 +6,7 @@ act = copytext(act, 1, t1) //Emote Cooldown System (it's so simple!) - // proc/handle_emote_CD() located in [code\modules\mob\emote.dm] + //proc/handle_emote_CD() located in [code\modules\mob\emote.dm] var/on_CD = 0 act = lowertext(act) switch(act) @@ -174,4 +174,4 @@ "You announce you are operating in low power mode.") playsound(loc, 'sound/machines/buzz-two.ogg', 50, 0) else - to_chat(src, "You can only use this emote when you're out of charge.") \ No newline at end of file + to_chat(src, "You can only use this emote when you're out of charge.") diff --git a/code/modules/mob/living/silicon/robot/examine.dm b/code/modules/mob/living/silicon/robot/examine.dm index cb207932a9a..98b540347ac 100644 --- a/code/modules/mob/living/silicon/robot/examine.dm +++ b/code/modules/mob/living/silicon/robot/examine.dm @@ -3,6 +3,8 @@ ..(user) var/msg = "" + if(module) + msg += "It has loaded a [module.name].\n" var/obj/act_module = get_active_hand() if(act_module) msg += "It is holding [bicon(act_module)] \a [act_module].\n" @@ -40,7 +42,10 @@ if(UNCONSCIOUS) msg += "It doesn't seem to be responding.\n" if(DEAD) - msg += "It looks like its system is corrupted and requires a reset.\n" + if(!suiciding) + msg += "It looks like its system is corrupted and requires a reset.\n" + else + msg += "It looks like its system is corrupted beyond repair. There is no hope of recovery.\n" msg += "*---------*" if(print_flavor_text()) msg += "\n[print_flavor_text()]\n" diff --git a/code/modules/mob/living/silicon/robot/robot.dm b/code/modules/mob/living/silicon/robot/robot.dm index d2e065d3b8d..2f4056f6149 100644 --- a/code/modules/mob/living/silicon/robot/robot.dm +++ b/code/modules/mob/living/silicon/robot/robot.dm @@ -275,6 +275,7 @@ var/list/robot_verbs_default = list( QDEL_NULL(camera) QDEL_NULL(cell) QDEL_NULL(robot_suit) + QDEL_NULL(spark_system) return ..() /mob/living/silicon/robot/proc/pick_module() diff --git a/code/modules/mob/living/silicon/robot/robot_damage.dm b/code/modules/mob/living/silicon/robot/robot_damage.dm index ef7734c1e0d..e2a93fa0167 100644 --- a/code/modules/mob/living/silicon/robot/robot_damage.dm +++ b/code/modules/mob/living/silicon/robot/robot_damage.dm @@ -117,6 +117,9 @@ parts -= picked + if(updating_health) + updatehealth("heal overall damage") + /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() diff --git a/code/modules/mob/living/silicon/silicon.dm b/code/modules/mob/living/silicon/silicon.dm index b7a64908a42..b667dbd15bd 100644 --- a/code/modules/mob/living/silicon/silicon.dm +++ b/code/modules/mob/living/silicon/silicon.dm @@ -35,7 +35,7 @@ var/obj/item/radio/common_radio /mob/living/silicon/New() - silicon_mob_list |= src + GLOB.silicon_mob_list |= src ..() var/datum/atom_hud/data/diagnostic/diag_hud = huds[DATA_HUD_DIAGNOSTIC] diag_hud.add_to_hud(src) @@ -51,7 +51,7 @@ return //we use a different hud /mob/living/silicon/Destroy() - silicon_mob_list -= src + GLOB.silicon_mob_list -= src for(var/datum/alarm_handler/AH in alarm_handlers) AH.unregister(src) return ..() @@ -163,7 +163,7 @@ /mob/living/silicon/add_language(var/language, var/can_speak=1) if(..(language) && can_speak) - speech_synthesizer_langs.Add(all_languages[language]) + speech_synthesizer_langs.Add(GLOB.all_languages[language]) return 1 /mob/living/silicon/remove_language(var/rem_language) diff --git a/code/modules/mob/living/simple_animal/bot/bot.dm b/code/modules/mob/living/simple_animal/bot/bot.dm index 72184f36e2f..dbec1d42bbe 100644 --- a/code/modules/mob/living/simple_animal/bot/bot.dm +++ b/code/modules/mob/living/simple_animal/bot/bot.dm @@ -137,7 +137,7 @@ /mob/living/simple_animal/bot/New() ..() - bots_list += src + GLOB.bots_list += src icon_living = icon_state icon_dead = icon_state access_card = new /obj/item/card/id(src) @@ -151,7 +151,7 @@ add_language("Tradeband", 1) add_language("Gutter", 1) add_language("Trinary", 1) - default_language = all_languages["Galactic Common"] + default_language = GLOB.all_languages["Galactic Common"] bot_core = new bot_core_type(src) spawn(30) @@ -190,7 +190,7 @@ if(path_hud) QDEL_NULL(path_hud) path_hud = null - bots_list -= src + GLOB.bots_list -= src QDEL_NULL(Radio) QDEL_NULL(access_card) if(reset_access_timer_id) @@ -373,17 +373,13 @@ to_chat(user, "The welder must be on for this task!") else if(W.force) //if force is non-zero - var/datum/effect_system/spark_spread/s = new /datum/effect_system/spark_spread - s.set_up(5, 1, src) - s.start() + do_sparks(5, 1, src) ..() /mob/living/simple_animal/bot/bullet_act(obj/item/projectile/Proj) if(Proj && (Proj.damage_type == BRUTE || Proj.damage_type == BURN)) if(prob(75) && Proj.damage > 0) - var/datum/effect_system/spark_spread/s = new /datum/effect_system/spark_spread - s.set_up(5, 1, src) - s.start() + do_sparks(5, 1, src) return ..() /mob/living/simple_animal/bot/emp_act(severity) @@ -659,7 +655,7 @@ Pass a positive integer as an argument to override a bot's default speed. /mob/living/simple_animal/bot/proc/get_next_patrol_target() // search the beacon list for the next target in the list. - for(var/obj/machinery/navbeacon/NB in navbeacons["[z]"]) + for(var/obj/machinery/navbeacon/NB in GLOB.navbeacons["[z]"]) if(NB.location == next_destination) //Does the Beacon location text match the destination? destination = new_destination //We now know the name of where we want to go. patrol_target = NB.loc //Get its location and set it as the target. @@ -667,7 +663,7 @@ Pass a positive integer as an argument to override a bot's default speed. return 1 /mob/living/simple_animal/bot/proc/find_nearest_beacon() - for(var/obj/machinery/navbeacon/NB in navbeacons["[z]"]) + for(var/obj/machinery/navbeacon/NB in GLOB.navbeacons["[z]"]) var/dist = get_dist(src, NB) if(nearest_beacon) //Loop though the beacon net to find the true closest beacon. //Ignore the beacon if were are located on it. diff --git a/code/modules/mob/living/simple_animal/bot/cleanbot.dm b/code/modules/mob/living/simple_animal/bot/cleanbot.dm index 5a0a04d0189..b6cca5940e3 100644 --- a/code/modules/mob/living/simple_animal/bot/cleanbot.dm +++ b/code/modules/mob/living/simple_animal/bot/cleanbot.dm @@ -187,9 +187,7 @@ if(prob(50)) new /obj/item/robot_parts/l_arm(Tsec) - var/datum/effect_system/spark_spread/s = new /datum/effect_system/spark_spread - s.set_up(3, 1, src) - s.start() + do_sparks(3, 1, src) ..() /obj/machinery/bot_core/cleanbot diff --git a/code/modules/mob/living/simple_animal/bot/ed209bot.dm b/code/modules/mob/living/simple_animal/bot/ed209bot.dm index 6895dc21cbc..5969d7a6d40 100644 --- a/code/modules/mob/living/simple_animal/bot/ed209bot.dm +++ b/code/modules/mob/living/simple_animal/bot/ed209bot.dm @@ -406,9 +406,7 @@ if(lasercolor == "r") new /obj/item/clothing/suit/redtag(Tsec) - var/datum/effect_system/spark_spread/s = new /datum/effect_system/spark_spread - s.set_up(3, 1, src) - s.start() + do_sparks(3, 1, src) new /obj/effect/decal/cleanable/blood/oil(loc) ..() diff --git a/code/modules/mob/living/simple_animal/bot/emote.dm b/code/modules/mob/living/simple_animal/bot/emote.dm index 70e27937745..2ea085464a7 100644 --- a/code/modules/mob/living/simple_animal/bot/emote.dm +++ b/code/modules/mob/living/simple_animal/bot/emote.dm @@ -9,7 +9,7 @@ act = copytext(act,1,length(act)) //Emote Cooldown System (it's so simple!) - // proc/handle_emote_CD() located in [code\modules\mob\emote.dm] + //proc/handle_emote_CD() located in [code\modules\mob\emote.dm] var/on_CD = 0 act = lowertext(act) switch(act) @@ -69,4 +69,4 @@ playsound(src.loc, 'sound/goonstation/voice/robot_scream.ogg', 80, 0) m_type = 2 - ..(act, m_type, message) \ No newline at end of file + ..(act, m_type, message) diff --git a/code/modules/mob/living/simple_animal/bot/floorbot.dm b/code/modules/mob/living/simple_animal/bot/floorbot.dm index b1133cb0e08..68e64ee65ed 100644 --- a/code/modules/mob/living/simple_animal/bot/floorbot.dm +++ b/code/modules/mob/living/simple_animal/bot/floorbot.dm @@ -407,9 +407,7 @@ T.amount = amount amount = 0 - var/datum/effect_system/spark_spread/s = new /datum/effect_system/spark_spread - s.set_up(3, 1, src) - s.start() + do_sparks(3, 1, src) ..() /obj/machinery/bot_core/floorbot diff --git a/code/modules/mob/living/simple_animal/bot/medbot.dm b/code/modules/mob/living/simple_animal/bot/medbot.dm index dc4805462fa..070a7d60e84 100644 --- a/code/modules/mob/living/simple_animal/bot/medbot.dm +++ b/code/modules/mob/living/simple_animal/bot/medbot.dm @@ -91,7 +91,7 @@ /mob/living/simple_animal/bot/medbot/syndicate/New() ..() - Radio.syndie = 1 + Radio.syndiekey = new /obj/item/encryptionkey/syndicate /mob/living/simple_animal/bot/medbot/syndicate/emagged emagged = 2 @@ -543,7 +543,7 @@ return /mob/living/simple_animal/bot/medbot/proc/check_overdose(mob/living/carbon/patient,reagent_id,injection_amount) - var/datum/reagent/R = chemical_reagents_list[reagent_id] + var/datum/reagent/R = GLOB.chemical_reagents_list[reagent_id] if(!R.overdose_threshold) return 0 var/current_volume = patient.reagents.get_reagent_amount(reagent_id) @@ -595,9 +595,7 @@ if(emagged && prob(25)) playsound(loc, 'sound/voice/minsult.ogg', 50, 0) - var/datum/effect_system/spark_spread/s = new /datum/effect_system/spark_spread - s.set_up(3, 1, src) - s.start() + do_sparks(3, 1, src) ..() /mob/living/simple_animal/bot/medbot/proc/declare(crit_patient) diff --git a/code/modules/mob/living/simple_animal/bot/mulebot.dm b/code/modules/mob/living/simple_animal/bot/mulebot.dm index 619d0316349..103e443d7e7 100644 --- a/code/modules/mob/living/simple_animal/bot/mulebot.dm +++ b/code/modules/mob/living/simple_animal/bot/mulebot.dm @@ -214,7 +214,7 @@ if(mode == BOT_IDLE || mode == BOT_DELIVER) start_home() if("destination") - var/new_dest = input(usr, "Enter Destination:", name, destination) as null|anything in deliverybeacontags + var/new_dest = input(usr, "Enter Destination:", name, destination) as null|anything in GLOB.deliverybeacontags if(new_dest) set_destination(new_dest) if("setid") @@ -222,7 +222,7 @@ if(new_id) set_suffix(new_id) if("sethome") - var/new_home = input(usr, "Enter Home:", name, home_destination) as null|anything in deliverybeacontags + var/new_home = input(usr, "Enter Home:", name, home_destination) as null|anything in GLOB.deliverybeacontags if(new_home) home_destination = new_home if("unload") @@ -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 @@ -809,7 +816,7 @@ if(!on || !wires.BeaconRX()) return - for(var/obj/machinery/navbeacon/NB in deliverybeacons) + for(var/obj/machinery/navbeacon/NB in GLOB.deliverybeacons) if(NB.location == new_destination) // if the beacon location matches the set destination destination = new_destination // the we will navigate there target = NB.loc @@ -840,9 +847,7 @@ cell.update_icon() cell = null - var/datum/effect_system/spark_spread/s = new /datum/effect_system/spark_spread - s.set_up(3, 1, src) - s.start() + do_sparks(3, 1, src) new /obj/effect/decal/cleanable/blood/oil(loc) ..() diff --git a/code/modules/mob/living/simple_animal/bot/secbot.dm b/code/modules/mob/living/simple_animal/bot/secbot.dm index 451f21ce09a..3069499b3f0 100644 --- a/code/modules/mob/living/simple_animal/bot/secbot.dm +++ b/code/modules/mob/living/simple_animal/bot/secbot.dm @@ -439,9 +439,7 @@ Auto Patrol: []"}, if(prob(50)) new /obj/item/robot_parts/l_arm(Tsec) - var/datum/effect_system/spark_spread/s = new /datum/effect_system/spark_spread - s.set_up(3, 1, src) - s.start() + do_sparks(3, 1, src) new /obj/effect/decal/cleanable/blood/oil(loc) ..() diff --git a/code/modules/mob/living/simple_animal/bot/syndicate.dm b/code/modules/mob/living/simple_animal/bot/syndicate.dm index 3ca3c6d1f2b..d1e42598ff4 100644 --- a/code/modules/mob/living/simple_animal/bot/syndicate.dm +++ b/code/modules/mob/living/simple_animal/bot/syndicate.dm @@ -165,9 +165,7 @@ depotarea.list_remove(src, depotarea.guard_list) walk_to(src,0) visible_message("[src] blows apart!") - var/datum/effect_system/spark_spread/s = new /datum/effect_system/spark_spread - s.set_up(3, 1, src) - s.start() + do_sparks(3, 1, src) new /obj/effect/decal/cleanable/blood/oil(loc) var/obj/effect/decal/mecha_wreckage/gygax/dark/wreck = new /obj/effect/decal/mecha_wreckage/gygax/dark(loc) wreck.name = "sentry bot wreckage" diff --git a/code/modules/mob/living/simple_animal/corpse.dm b/code/modules/mob/living/simple_animal/corpse.dm index 3f79f27cce2..a55b3cdae16 100644 --- a/code/modules/mob/living/simple_animal/corpse.dm +++ b/code/modules/mob/living/simple_animal/corpse.dm @@ -104,7 +104,7 @@ outfit = /datum/outfit/wizardcorpse /obj/effect/mob_spawn/human/corpse/clownoff/Initialize() - mob_name = "[pick(wizard_first)], [pick(wizard_second)]" + mob_name = "[pick(GLOB.wizard_first)], [pick(GLOB.wizard_second)]" ..() /datum/outfit/wizardcorpse diff --git a/code/modules/mob/living/simple_animal/friendly/corgi.dm b/code/modules/mob/living/simple_animal/friendly/corgi.dm index 77d930b6b69..e26a004e2c3 100644 --- a/code/modules/mob/living/simple_animal/friendly/corgi.dm +++ b/code/modules/mob/living/simple_animal/friendly/corgi.dm @@ -613,15 +613,11 @@ //spark for no reason if(prob(5)) - var/datum/effect_system/spark_spread/s = new /datum/effect_system/spark_spread - s.set_up(3, 1, src) - s.start() + do_sparks(3, 1, src) /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() + do_sparks(3, 1, src) \ No newline at end of file diff --git a/code/modules/mob/living/simple_animal/friendly/spiderbot.dm b/code/modules/mob/living/simple_animal/friendly/spiderbot.dm index 37ed25f15e8..424d852d56b 100644 --- a/code/modules/mob/living/simple_animal/friendly/spiderbot.dm +++ b/code/modules/mob/living/simple_animal/friendly/spiderbot.dm @@ -57,12 +57,12 @@ if(!B.brainmob.key) var/ghost_can_reenter = 0 if(B.brainmob.mind) - for(var/mob/dead/observer/G in player_list) + for(var/mob/dead/observer/G in GLOB.player_list) if(G.can_reenter_corpse && G.mind == B.brainmob.mind) ghost_can_reenter = 1 break - for(var/mob/living/simple_animal/S in player_list) - if(S in respawnable_list) + for(var/mob/living/simple_animal/S in GLOB.player_list) + if(S in GLOB.respawnable_list) ghost_can_reenter = 1 break if(!ghost_can_reenter) diff --git a/code/modules/mob/living/simple_animal/hostile/bees.dm b/code/modules/mob/living/simple_animal/hostile/bees.dm index 0b10513b7cd..9702d47d9af 100644 --- a/code/modules/mob/living/simple_animal/hostile/bees.dm +++ b/code/modules/mob/living/simple_animal/hostile/bees.dm @@ -263,7 +263,7 @@ else to_chat(user, "You don't have enough royal bee jelly to split a bee in two!") else - var/datum/reagent/R = chemical_reagents_list[S.reagents.get_master_reagent_id()] + var/datum/reagent/R = GLOB.chemical_reagents_list[S.reagents.get_master_reagent_id()] if(R && S.reagents.has_reagent(R.id, 5)) S.reagents.remove_reagent(R.id,5) queen.assign_reagent(R) diff --git a/code/modules/mob/living/simple_animal/hostile/hivebot.dm b/code/modules/mob/living/simple_animal/hostile/hivebot.dm index e08e7e11502..051f2209729 100644 --- a/code/modules/mob/living/simple_animal/hostile/hivebot.dm +++ b/code/modules/mob/living/simple_animal/hostile/hivebot.dm @@ -52,9 +52,7 @@ . = ..(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() + do_sparks(3, 1, src) /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 93182226972..ad20789fa41 100644 --- a/code/modules/mob/living/simple_animal/hostile/hostile.dm +++ b/code/modules/mob/living/simple_animal/hostile/hostile.dm @@ -18,7 +18,7 @@ var/check_friendly_fire = 0 // Should the ranged mob check for friendlies when shooting var/retreat_distance = null //If our mob runs from players when they're too close, set in tile distance. By default, mobs do not retreat. var/minimum_distance = 1 //Minimum approach distance, so ranged mobs chase targets down, but still keep their distance set in tiles to the target, set higher to make mobs keep distance - + //These vars are related to how mobs locate and target var/robust_searching = 0 //By default, mobs have a simple searching method, set this to 1 for the more scrutinous searching (stat_attack, stat_exclusive, etc), should be disabled on most mobs var/vision_range = 9 //How big of an area to search for targets in, a vision of 9 attempts to find targets as soon as they walk into screen view diff --git a/code/modules/mob/living/simple_animal/hostile/megafauna/bubblegum.dm b/code/modules/mob/living/simple_animal/hostile/megafauna/bubblegum.dm index 3c72042efce..66d66e706a7 100644 --- a/code/modules/mob/living/simple_animal/hostile/megafauna/bubblegum.dm +++ b/code/modules/mob/living/simple_animal/hostile/megafauna/bubblegum.dm @@ -107,7 +107,7 @@ Difficulty: Hard /mob/living/simple_animal/hostile/megafauna/bubblegum/New() ..() - for(var/mob/living/simple_animal/hostile/megafauna/bubblegum/B in mob_list) + for(var/mob/living/simple_animal/hostile/megafauna/bubblegum/B in GLOB.mob_list) if(B != src) qdel(src) //There can be only one break diff --git a/code/modules/mob/living/simple_animal/hostile/megafauna/colossus.dm b/code/modules/mob/living/simple_animal/hostile/megafauna/colossus.dm index 01217f0f3b9..e5bb62ecd9b 100644 --- a/code/modules/mob/living/simple_animal/hostile/megafauna/colossus.dm +++ b/code/modules/mob/living/simple_animal/hostile/megafauna/colossus.dm @@ -47,7 +47,7 @@ Difficulty: Very Hard medal_type = MEDAL_PREFIX score_type = COLOSSUS_SCORE loot = list(/obj/machinery/anomalous_crystal/random, /obj/item/organ/internal/vocal_cords/colossus) - butcher_results = list(/obj/item/ore/diamond = 5, /obj/item/stack/sheet/sinew = 5, /obj/item/stack/sheet/animalhide/ashdrake = 10, /obj/item/stack/sheet/bone = 30) + butcher_results = list(/obj/item/stack/ore/diamond = 5, /obj/item/stack/sheet/sinew = 5, /obj/item/stack/sheet/animalhide/ashdrake = 10, /obj/item/stack/sheet/bone = 30) deathmessage = "disintegrates, leaving a glowing core in its wake." death_sound = 'sound/misc/demon_dies.ogg' diff --git a/code/modules/mob/living/simple_animal/hostile/megafauna/dragon.dm b/code/modules/mob/living/simple_animal/hostile/megafauna/dragon.dm index 6027070dfc9..82e4af1862f 100644 --- a/code/modules/mob/living/simple_animal/hostile/megafauna/dragon.dm +++ b/code/modules/mob/living/simple_animal/hostile/megafauna/dragon.dm @@ -45,7 +45,7 @@ Difficulty: Medium ranged = 1 pixel_x = -16 loot = list(/obj/structure/closet/crate/necropolis/dragon) - butcher_results = list(/obj/item/ore/diamond = 5, /obj/item/stack/sheet/sinew = 5, /obj/item/stack/sheet/animalhide/ashdrake = 10, /obj/item/stack/sheet/bone = 30) + butcher_results = list(/obj/item/stack/ore/diamond = 5, /obj/item/stack/sheet/sinew = 5, /obj/item/stack/sheet/animalhide/ashdrake = 10, /obj/item/stack/sheet/bone = 30) var/swooping = 0 var/swoop_cooldown = 0 medal_type = 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 ae37f388b8a..e3c9dbbf61b 100644 --- a/code/modules/mob/living/simple_animal/hostile/megafauna/legion.dm +++ b/code/modules/mob/living/simple_animal/hostile/megafauna/legion.dm @@ -124,7 +124,7 @@ Difficulty: Medium 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) + for(var/mob/living/simple_animal/hostile/megafauna/legion/other in GLOB.mob_list) if(other != src) last_legion = FALSE break 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 118ee54e858..6a6e44a5852 100644 --- a/code/modules/mob/living/simple_animal/hostile/megafauna/megafauna.dm +++ b/code/modules/mob/living/simple_animal/hostile/megafauna/megafauna.dm @@ -75,7 +75,7 @@ return var/turf/newloc = loc message_admins("Megafauna [src] \ - (FLW) \ + ([ADMIN_FLW(src,"FLW")]) \ moved via shuttle from ([oldloc.x], [oldloc.y], [oldloc.z]) to \ ([newloc.x], [newloc.y], [newloc.z])") diff --git a/code/modules/mob/living/simple_animal/hostile/mining/goldgrub.dm b/code/modules/mob/living/simple_animal/hostile/mining/goldgrub.dm index 0c54b414e72..cd73868a9e7 100644 --- a/code/modules/mob/living/simple_animal/hostile/mining/goldgrub.dm +++ b/code/modules/mob/living/simple_animal/hostile/mining/goldgrub.dm @@ -24,8 +24,8 @@ throw_message = "sinks in slowly, before being pushed out of " status_flags = CANPUSH search_objects = 1 - wanted_objects = list(/obj/item/ore/diamond, /obj/item/ore/gold, /obj/item/ore/silver, - /obj/item/ore/uranium) + wanted_objects = list(/obj/item/stack/ore/diamond, /obj/item/stack/ore/gold, /obj/item/stack/ore/silver, + /obj/item/stack/ore/uranium) var/chase_time = 100 var/will_burrow = TRUE @@ -34,17 +34,17 @@ ..() var/i = rand(1,3) while(i) - loot += pick(/obj/item/ore/silver, /obj/item/ore/gold, /obj/item/ore/uranium, /obj/item/ore/diamond) + loot += pick(/obj/item/stack/ore/silver, /obj/item/stack/ore/gold, /obj/item/stack/ore/uranium, /obj/item/stack/ore/diamond) i-- /mob/living/simple_animal/hostile/asteroid/goldgrub/GiveTarget(new_target) target = new_target if(target != null) - if(istype(target, /obj/item/ore) && loot.len < 10) - visible_message("The [src.name] looks at [target.name] with hungry eyes.") + if(istype(target, /obj/item/stack/ore) && loot.len < 10) + visible_message("The [name] looks at [target.name] with hungry eyes.") else if(isliving(target)) Aggro() - visible_message("The [src.name] tries to flee from [target.name]!") + visible_message("The [name] tries to flee from [target.name]!") retreat_distance = 10 minimum_distance = 10 if(will_burrow) @@ -52,18 +52,21 @@ Burrow() /mob/living/simple_animal/hostile/asteroid/goldgrub/AttackingTarget() - if(istype(target, /obj/item/ore)) + if(istype(target, /obj/item/stack/ore)) EatOre(target) return ..() /mob/living/simple_animal/hostile/asteroid/goldgrub/proc/EatOre(var/atom/targeted_ore) - for(var/obj/item/ore/O in targeted_ore.loc) + for(var/obj/item/stack/ore/O in get_turf(targeted_ore)) if(loot.len < 10) - loot += O.type - qdel(O) + var/using = min(10 - loot.len, O.amount) + for(var/i in 1 to using) + loot += O.type + O.use(using) visible_message("The ore was swallowed whole!") + /mob/living/simple_animal/hostile/asteroid/goldgrub/proc/Burrow()//Begin the chase to kill the goldgrub in time if(!stat) visible_message("The [src.name] buries into the ground, vanishing from sight!") @@ -75,4 +78,4 @@ /mob/living/simple_animal/hostile/asteroid/goldgrub/adjustHealth(damage) idle_vision_range = 9 - . = ..() \ No newline at end of file + . = ..() 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 2edfb7cea5d..39799d6e493 100644 --- a/code/modules/mob/living/simple_animal/hostile/mining_mobs.dm +++ b/code/modules/mob/living/simple_animal/hostile/mining_mobs.dm @@ -77,8 +77,8 @@ aggro_vision_range = 9 idle_vision_range = 2 turns_per_move = 5 - loot = list(/obj/item/ore/diamond{layer = 4.1}, - /obj/item/ore/diamond{layer = 4.1}) + loot = list(/obj/item/stack/ore/diamond{layer = 4.1}, + /obj/item/stack/ore/diamond{layer = 4.1}) /obj/item/projectile/temp/basilisk name = "freezing blast" diff --git a/code/modules/mob/living/simple_animal/hostile/retaliate/drone.dm b/code/modules/mob/living/simple_animal/hostile/retaliate/drone.dm index 90586bb43c6..709a238346a 100644 --- a/code/modules/mob/living/simple_animal/hostile/retaliate/drone.dm +++ b/code/modules/mob/living/simple_animal/hostile/retaliate/drone.dm @@ -80,16 +80,12 @@ //repair a bit of damage if(prob(1)) src.visible_message("[bicon(src)] [src] shudders and shakes as some of it's damaged systems come back online.") - var/datum/effect_system/spark_spread/s = new /datum/effect_system/spark_spread - s.set_up(3, 1, src) - s.start() + do_sparks(3, 1, src) health += rand(25,100) //spark for no reason if(prob(5)) - var/datum/effect_system/spark_spread/s = new /datum/effect_system/spark_spread - s.set_up(3, 1, src) - s.start() + do_sparks(3, 1, src) //sometimes our targetting sensors malfunction, and we attack anyone nearby if(prob(disabled ? 0 : 1)) @@ -129,9 +125,7 @@ src.visible_message("[bicon(src)] [src] begins to spark and shake violenty!") else src.visible_message("[bicon(src)] [src] sparks and shakes like it's about to explode!") - var/datum/effect_system/spark_spread/s = new /datum/effect_system/spark_spread - s.set_up(3, 1, src) - s.start() + do_sparks(3, 1, src) if(!exploding && !disabled && prob(explode_chance)) exploding = 1 @@ -154,9 +148,7 @@ /mob/living/simple_animal/hostile/retaliate/malf_drone/Destroy() //Seriously, what the actual hell. //some random debris left behind if(has_loot) - var/datum/effect_system/spark_spread/s = new /datum/effect_system/spark_spread - s.set_up(3, 1, src) - s.start() + do_sparks(3, 1, src) var/obj/O //shards diff --git a/code/modules/mob/living/simple_animal/hostile/statue.dm b/code/modules/mob/living/simple_animal/hostile/statue.dm index b3bc11e6c1f..88326747247 100644 --- a/code/modules/mob/living/simple_animal/hostile/statue.dm +++ b/code/modules/mob/living/simple_animal/hostile/statue.dm @@ -179,7 +179,7 @@ range = 10 /obj/effect/proc_holder/spell/aoe_turf/blindness/cast(list/targets, mob/user = usr) - for(var/mob/living/L in living_mob_list) + for(var/mob/living/L in GLOB.living_mob_list) if(L == user) continue var/turf/T = get_turf(L.loc) diff --git a/code/modules/mob/living/simple_animal/hostile/syndicate.dm b/code/modules/mob/living/simple_animal/hostile/syndicate.dm index 1b77d09a32f..2cd1c2bb8df 100644 --- a/code/modules/mob/living/simple_animal/hostile/syndicate.dm +++ b/code/modules/mob/living/simple_animal/hostile/syndicate.dm @@ -98,7 +98,7 @@ /mob/living/simple_animal/hostile/syndicate/melee/autogib/depot/New() ..() - name = "[name] [pick(last_names)]" + name = "[name] [pick(GLOB.last_names)]" depotarea = areaMaster spawn_turf = get_turf(src) @@ -219,7 +219,7 @@ /mob/living/simple_animal/hostile/syndicate/melee/autogib/depot/armory/LateInitialize() if(istype(depotarea)) var/list/key_candidates = list() - for(var/mob/living/simple_animal/hostile/syndicate/melee/autogib/depot/officer/O in living_mob_list) + for(var/mob/living/simple_animal/hostile/syndicate/melee/autogib/depot/officer/O in GLOB.living_mob_list) key_candidates += O if(key_candidates.len) var/mob/living/simple_animal/hostile/syndicate/melee/autogib/depot/officer/O = pick(key_candidates) diff --git a/code/modules/mob/living/simple_animal/hostile/terror_spiders/ghost.dm b/code/modules/mob/living/simple_animal/hostile/terror_spiders/ghost.dm index b52abff90c9..dd170c1c177 100644 --- a/code/modules/mob/living/simple_animal/hostile/terror_spiders/ghost.dm +++ b/code/modules/mob/living/simple_animal/hostile/terror_spiders/ghost.dm @@ -40,5 +40,5 @@ to_chat(user, "Someone else already took this spider.") return key = user.key - for(var/mob/dead/observer/G in player_list) + for(var/mob/dead/observer/G in GLOB.player_list) G.show_message("A ghost has taken control of [src]. ([ghost_follow_link(src, ghost=G)]).") \ No newline at end of file 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 54531e62d09..7ce29acb172 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 @@ -224,7 +224,7 @@ /mob/living/simple_animal/hostile/poison/terror_spider/queen/proc/MassFlicker() var/list/target_lights = list() - for(var/mob/living/carbon/human/H in player_list) + for(var/mob/living/carbon/human/H in GLOB.player_list) if(H.z != z) continue if(H.stat == DEAD) 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 8c48b9b409b..b67ff001fb7 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 @@ -316,6 +316,6 @@ // -------------------------------------------------------------------------------- /mob/living/simple_animal/hostile/poison/terror_spider/proc/UnlockBlastDoors(target_id_tag) - for(var/obj/machinery/door/poddoor/P in airlocks) + for(var/obj/machinery/door/poddoor/P in GLOB.airlocks) if(P.density && P.id_tag == target_id_tag && P.z == z && !P.operating) 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 46b903774f3..42b7e2d48d8 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 @@ -241,7 +241,7 @@ var/global/list/ts_spiderling_list = list() add_language("Spider Hivemind") if(spider_tier >= TS_TIER_2) add_language("Galactic Common") - default_language = all_languages["Spider Hivemind"] + default_language = GLOB.all_languages["Spider Hivemind"] web_action = new() web_action.Grant(src) diff --git a/code/modules/mob/living/simple_animal/parrot.dm b/code/modules/mob/living/simple_animal/parrot.dm index 2120925a164..a60ae1d323e 100644 --- a/code/modules/mob/living/simple_animal/parrot.dm +++ b/code/modules/mob/living/simple_animal/parrot.dm @@ -91,7 +91,7 @@ /mob/living/simple_animal/parrot/New() ..() - hear_radio_list += src + GLOB.hear_radio_list += src if(!ears) var/headset = pick(/obj/item/radio/headset/headset_sec, \ /obj/item/radio/headset/headset_eng, \ @@ -109,7 +109,7 @@ /mob/living/simple_animal/parrot/proc/perch_player) /mob/living/simple_animal/parrot/Destroy() - hear_radio_list -= src + GLOB.hear_radio_list -= src return ..() /mob/living/simple_animal/parrot/death(gibbed) diff --git a/code/modules/mob/living/simple_animal/simple_animal.dm b/code/modules/mob/living/simple_animal/simple_animal.dm index 0015327bca7..046d55c4566 100644 --- a/code/modules/mob/living/simple_animal/simple_animal.dm +++ b/code/modules/mob/living/simple_animal/simple_animal.dm @@ -82,7 +82,7 @@ /mob/living/simple_animal/Initialize() ..() - simple_animal_list += src + GLOB.simple_animal_list += src verbs -= /mob/verb/observe if(!can_hide) verbs -= /mob/living/simple_animal/verb/hide @@ -96,7 +96,7 @@ collar.forceMove(loc) collar = null master_commander = null - simple_animal_list -= src + GLOB.simple_animal_list -= src return ..() /mob/living/simple_animal/Login() diff --git a/code/modules/mob/living/stat_states.dm b/code/modules/mob/living/stat_states.dm index c9c51e2c5ab..f4483a10c8e 100644 --- a/code/modules/mob/living/stat_states.dm +++ b/code/modules/mob/living/stat_states.dm @@ -47,10 +47,10 @@ create_attack_log("Came back to life at [atom_loc_line(get_turf(src))]") log_game("[key_name(src)] came back to life at [atom_loc_line(get_turf(src))]") stat = CONSCIOUS - dead_mob_list -= src - living_mob_list += src + GLOB.dead_mob_list -= src + GLOB.living_mob_list += src if(mind) - respawnable_list -= src + GLOB.respawnable_list -= src timeofdeath = null if(updating) update_canmove() diff --git a/code/modules/mob/living/status_procs.dm b/code/modules/mob/living/status_procs.dm index 8fdeec94679..e9253f78d59 100644 --- a/code/modules/mob/living/status_procs.dm +++ b/code/modules/mob/living/status_procs.dm @@ -572,7 +572,7 @@ CureIfHasDisability(TWITCHBLOCK) /mob/living/proc/CureIfHasDisability(block) - if(dna.GetSEState(block)) + if(dna && 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/login.dm b/code/modules/mob/login.dm index a5883fe93f2..eecd0650af0 100644 --- a/code/modules/mob/login.dm +++ b/code/modules/mob/login.dm @@ -6,7 +6,7 @@ log_access_in(client) create_attack_log("Logged in at [atom_loc_line(get_turf(src))]") if(config.log_access) - for(var/mob/M in player_list) + for(var/mob/M in GLOB.player_list) if(M == src) continue if( M.key && (M.key != key) ) var/matches @@ -19,14 +19,14 @@ spawn() alert("You have logged in already with another key this round, please log out of this one NOW or risk being banned!") if(matches) if(M.client) - message_admins("Notice: [key_name_admin(src)] has the same [matches] as [key_name_admin(M)].", 1) + message_admins("Notice: [key_name_admin(src)] has the same [matches] as [key_name_admin(M)].", 1) log_adminwarn("Notice: [key_name(src)] has the same [matches] as [key_name(M)].") else - message_admins("Notice: [key_name_admin(src)] has the same [matches] as [key_name_admin(M)] (no longer logged in). ", 1) + message_admins("Notice: [key_name_admin(src)] has the same [matches] as [key_name_admin(M)] (no longer logged in). ", 1) log_adminwarn("Notice: [key_name(src)] has the same [matches] as [key_name(M)] (no longer logged in).") /mob/Login() - player_list |= src + GLOB.player_list |= src update_Login_details() world.update_status() @@ -47,7 +47,7 @@ reset_perspective(loc) - if(ckey in deadmins) + if(ckey in GLOB.deadmins) verbs += /client/proc/readmin //Clear ability list and update from mob. diff --git a/code/modules/mob/logout.dm b/code/modules/mob/logout.dm index cbcd51c44a7..762607bd501 100644 --- a/code/modules/mob/logout.dm +++ b/code/modules/mob/logout.dm @@ -1,7 +1,7 @@ /mob/Logout() SSnanoui.user_logout(src) // this is used to clean up (remove) this user's Nano UIs unset_machine() - player_list -= src + GLOB.player_list -= src log_access_out(src) create_attack_log("Logged out at [atom_loc_line(get_turf(src))]") // `holder` is nil'd out by now, so we check the `admin_datums` array directly diff --git a/code/modules/mob/mob.dm b/code/modules/mob/mob.dm index 4560e935547..1c4507c5291 100644 --- a/code/modules/mob/mob.dm +++ b/code/modules/mob/mob.dm @@ -1,7 +1,7 @@ /mob/Destroy()//This makes sure that mobs with clients/keys are not just deleted from the game. - mob_list -= src - dead_mob_list -= src - living_mob_list -= src + GLOB.mob_list -= src + GLOB.dead_mob_list -= src + GLOB.living_mob_list -= src QDEL_NULL(hud_used) if(mind && mind.current == src) spellremove(src) @@ -25,11 +25,11 @@ return QDEL_HINT_HARDDEL /mob/Initialize() - mob_list += src + GLOB.mob_list += src if(stat == DEAD) - dead_mob_list += src + GLOB.dead_mob_list += src else - living_mob_list += src + GLOB.living_mob_list += src prepare_huds() ..() @@ -164,7 +164,7 @@ M.show_message( message, 2, deaf_message, 1) /mob/proc/findname(msg) - for(var/mob/M in mob_list) + for(var/mob/M in GLOB.mob_list) if(M.real_name == text("[]", msg)) return M return 0 @@ -810,7 +810,7 @@ var/list/slot_equipment_priority = list( \ creatures[name] = O - for(var/mob/M in sortAtom(mob_list)) + for(var/mob/M in sortAtom(GLOB.mob_list)) var/name = M.name if(names.Find(name)) namecounts[name]++ @@ -1095,26 +1095,26 @@ var/list/slot_equipment_priority = list( \ to_chat(src, "You can't respawn as an NPC before the game starts!") return - if((usr in respawnable_list) && (stat==2 || istype(usr,/mob/dead/observer))) + if((usr in GLOB.respawnable_list) && (stat==2 || istype(usr,/mob/dead/observer))) var/list/creatures = list("Mouse") - for(var/mob/living/L in living_mob_list) + for(var/mob/living/L in GLOB.living_mob_list) if(safe_respawn(L.type) && L.stat!=2) if(!L.key) creatures += L var/picked = input("Please select an NPC to respawn as", "Respawn as NPC") as null|anything in creatures switch(picked) if("Mouse") - respawnable_list -= usr + GLOB.respawnable_list -= usr become_mouse() spawn(5) - respawnable_list += usr + GLOB.respawnable_list += usr else var/mob/living/NPC = picked if(istype(NPC) && !NPC.key) - respawnable_list -= usr + GLOB.respawnable_list -= usr NPC.key = key spawn(5) - respawnable_list += usr + GLOB.respawnable_list += usr else to_chat(usr, "You are not dead or you have given up your right to be respawned!") return diff --git a/code/modules/mob/mob_helpers.dm b/code/modules/mob/mob_helpers.dm index c0862b31404..659a50880a0 100644 --- a/code/modules/mob/mob_helpers.dm +++ b/code/modules/mob/mob_helpers.dm @@ -308,7 +308,7 @@ proc/muffledspeech(phrase) /proc/findname(msg) - for(var/mob/M in mob_list) + for(var/mob/M in GLOB.mob_list) if(M.real_name == text("[msg]")) return 1 return 0 @@ -435,7 +435,7 @@ var/list/intents = list(INTENT_HELP,INTENT_DISARM,INTENT_GRAB,INTENT_HARM) else name = realname - for(var/mob/M in player_list) + for(var/mob/M in GLOB.player_list) if(M.client && ((!istype(M, /mob/new_player) && M.stat == DEAD) || check_rights(R_ADMIN|R_MOD,0,M)) && M.get_preference(CHAT_DEAD)) var/follow var/lname @@ -460,7 +460,7 @@ var/list/intents = list(INTENT_HELP,INTENT_DISARM,INTENT_GRAB,INTENT_HARM) to_chat(M, "[lname][follow][message]") /proc/notify_ghosts(message, ghost_sound = null, enter_link = null, title = null, atom/source = null, image/alert_overlay = null, flashwindow = TRUE, var/action = NOTIFY_JUMP) //Easy notification of ghosts. - for(var/mob/dead/observer/O in player_list) + for(var/mob/dead/observer/O in GLOB.player_list) if(O.client) to_chat(O, "[message][(enter_link) ? " [enter_link]" : ""]") if(ghost_sound) @@ -561,7 +561,7 @@ var/list/intents = list(INTENT_HELP,INTENT_DISARM,INTENT_GRAB,INTENT_HARM) return //took too long newname = reject_bad_name(newname,allow_numbers) //returns null if the name doesn't meet some basic requirements. Tidies up a few other things like bad-characters. - for(var/mob/living/M in player_list) + for(var/mob/living/M in GLOB.player_list) if(M == src) continue if(!newname || M.real_name == newname) diff --git a/code/modules/mob/new_player/login.dm b/code/modules/mob/new_player/login.dm index 99047b0382c..1c7b06b1ce1 100644 --- a/code/modules/mob/new_player/login.dm +++ b/code/modules/mob/new_player/login.dm @@ -15,11 +15,11 @@ lastarea = loc sight |= SEE_TURFS - player_list |= src + GLOB.player_list |= src /* var/list/watch_locations = list() - for(var/obj/effect/landmark/landmark in landmarks_list) + for(var/obj/effect/landmark/landmark in GLOB.landmarks_list) if(landmark.tag == "landmark*new_player") watch_locations += landmark.loc @@ -47,7 +47,7 @@ if(newpoll) client.handle_player_polling() - if(ckey in deadmins) + if(ckey in GLOB.deadmins) verbs += /client/proc/readmin spawn(40) if(client) @@ -57,7 +57,7 @@ if(src.client.holder) return //admins are immune to overflow rerouting if(config.overflow_whitelist.Find(lowertext(src.ckey))) return //Whitelisted people are immune to overflow rerouting. var/tally = 0 - for(var/client/C in clients) + for(var/client/C in GLOB.clients) tally++ if(tally > config.player_overflow_cap) src << link(config.overflow_server_url) diff --git a/code/modules/mob/new_player/new_player.dm b/code/modules/mob/new_player/new_player.dm index ecd4bf46c32..a1be1db4c63 100644 --- a/code/modules/mob/new_player/new_player.dm +++ b/code/modules/mob/new_player/new_player.dm @@ -16,7 +16,7 @@ anchored = 1 // don't get pushed around /mob/new_player/New() - mob_list += src + GLOB.mob_list += src /mob/new_player/verb/new_player_panel() set src = usr @@ -129,7 +129,7 @@ stat("Players Ready:", "[totalPlayersReady]") totalPlayers = 0 totalPlayersReady = 0 - for(var/mob/new_player/player in player_list) + for(var/mob/new_player/player in GLOB.player_list) if(check_rights(R_ADMIN, 0, src)) stat("[player.key]", (player.ready)?("(Playing)"):(null)) totalPlayers++ @@ -209,7 +209,7 @@ if(!client.holder && !config.antag_hud_allowed) // For new ghosts we remove the verb from even showing up if it's not allowed. observer.verbs -= /mob/dead/observer/verb/toggle_antagHUD // Poor guys, don't know what they are missing! observer.key = key - respawnable_list += observer + GLOB.respawnable_list += observer qdel(src) return 1 if(href_list["tos"]) @@ -224,7 +224,7 @@ to_chat(usr, "The round is either not ready, or has already finished...") return - if(client.prefs.species in whitelisted_species) + if(client.prefs.species in GLOB.whitelisted_species) if(!is_alien_whitelisted(src, client.prefs.species) && config.usealienwhitelist) to_chat(src, alert("You are currently not whitelisted to play [client.prefs.species].")) @@ -244,7 +244,7 @@ if(client.prefs.randomslot) client.prefs.load_random_character_slot(client) - if(client.prefs.species in whitelisted_species) + if(client.prefs.species in GLOB.whitelisted_species) if(!is_alien_whitelisted(src, client.prefs.species) && config.usealienwhitelist) to_chat(src, alert("You are currently not whitelisted to play [client.prefs.species].")) return 0 @@ -385,7 +385,7 @@ /mob/new_player/proc/AnnounceArrival(var/mob/living/carbon/human/character, var/rank, var/join_message) if(ticker.current_state == GAME_STATE_PLAYING) var/ailist[] = list() - for(var/mob/living/silicon/ai/A in living_mob_list) + for(var/mob/living/silicon/ai/A in GLOB.living_mob_list) ailist += A if(ailist.len) var/mob/living/silicon/ai/announcer = pick(ailist) @@ -410,7 +410,7 @@ /mob/new_player/proc/AnnounceCyborg(var/mob/living/character, var/rank, var/join_message) if(ticker.current_state == GAME_STATE_PLAYING) var/ailist[] = list() - for(var/mob/living/silicon/ai/A in living_mob_list) + for(var/mob/living/silicon/ai/A in GLOB.living_mob_list) ailist += A if(ailist.len) var/mob/living/silicon/ai/announcer = pick(ailist) @@ -469,7 +469,7 @@ activePlayers[job] = 0 var/categorized = 0 // Only players with the job assigned and AFK for less than 10 minutes count as active - for(var/mob/M in player_list) if(M.mind && M.client && M.mind.assigned_role == job.title && M.client.inactivity <= 10 MINUTES) + for(var/mob/M in GLOB.player_list) if(M.mind && M.client && M.mind.assigned_role == job.title && M.client.inactivity <= 10 MINUTES) activePlayers[job]++ for(var/jobcat in categorizedJobs) var/list/jobs = categorizedJobs[jobcat]["jobs"] @@ -533,10 +533,10 @@ if(mind) mind.active = 0 //we wish to transfer the key manually if(mind.assigned_role == "Clown") //give them a clownname if they are a clown - new_character.real_name = pick(clown_names) //I hate this being here of all places but unfortunately dna is based on real_name! + new_character.real_name = pick(GLOB.clown_names) //I hate this being here of all places but unfortunately dna is based on real_name! new_character.rename_self("clown") else if(mind.assigned_role == "Mime") - new_character.real_name = pick(mime_names) + new_character.real_name = pick(GLOB.mime_names) new_character.rename_self("mime") mind.original = new_character mind.transfer_to(new_character) //won't transfer key since the mind is not active @@ -558,7 +558,7 @@ var/datum/language/chosen_language if(client.prefs.language) - chosen_language = all_languages[client.prefs.language] + chosen_language = GLOB.all_languages[client.prefs.language] if((chosen_language == null && client.prefs.language != "None") || (chosen_language && chosen_language.flags & RESTRICTED)) log_runtime(EXCEPTION("[src] had language [client.prefs.language], though they weren't supposed to. Setting to None."), src) client.prefs.language = "None" diff --git a/code/modules/mob/new_player/preferences_setup.dm b/code/modules/mob/new_player/preferences_setup.dm index fc97658896f..84ac1ed9eb0 100644 --- a/code/modules/mob/new_player/preferences_setup.dm +++ b/code/modules/mob/new_player/preferences_setup.dm @@ -244,7 +244,7 @@ preview_icon.Blend(new /icon(icobase, "groin_[g]"), ICON_OVERLAY) var/head = "head" if(alt_head && current_species.bodyflags & HAS_ALT_HEADS) - var/datum/sprite_accessory/alt_heads/H = alt_heads_list[alt_head] + var/datum/sprite_accessory/alt_heads/H = GLOB.alt_heads_list[alt_head] if(H.icon_state) head = H.icon_state preview_icon.Blend(new /icon(icobase, "[head]_[g]"), ICON_OVERLAY) @@ -308,7 +308,7 @@ if(current_species && (current_species.bodyflags & HAS_TAIL_MARKINGS)) var/tail_marking = m_styles["tail"] - var/datum/sprite_accessory/tail_marking_style = marking_styles_list[tail_marking] + var/datum/sprite_accessory/tail_marking_style = GLOB.marking_styles_list[tail_marking] if(tail_marking_style && tail_marking_style.species_allowed) var/icon/t_marking_s = new/icon("icon" = tail_marking_style.icon, "icon_state" = "[tail_marking_style.icon_state]_s") t_marking_s.Blend(m_colours["tail"], ICON_ADD) @@ -320,14 +320,14 @@ if(current_species && ((current_species.bodyflags & HAS_HEAD_MARKINGS) || (current_species.bodyflags & HAS_BODY_MARKINGS))) if(current_species.bodyflags & HAS_BODY_MARKINGS) //Body markings. var/body_marking = m_styles["body"] - var/datum/sprite_accessory/body_marking_style = marking_styles_list[body_marking] + var/datum/sprite_accessory/body_marking_style = GLOB.marking_styles_list[body_marking] if(body_marking_style && body_marking_style.species_allowed) var/icon/b_marking_s = new/icon("icon" = body_marking_style.icon, "icon_state" = "[body_marking_style.icon_state]_s") b_marking_s.Blend(m_colours["body"], ICON_ADD) preview_icon.Blend(b_marking_s, ICON_OVERLAY) if(current_species.bodyflags & HAS_HEAD_MARKINGS) //Head markings. var/head_marking = m_styles["head"] - var/datum/sprite_accessory/head_marking_style = marking_styles_list[head_marking] + var/datum/sprite_accessory/head_marking_style = GLOB.marking_styles_list[head_marking] if(head_marking_style && head_marking_style.species_allowed) var/icon/h_marking_s = new/icon("icon" = head_marking_style.icon, "icon_state" = "[head_marking_style.icon_state]_s") h_marking_s.Blend(m_colours["head"], ICON_ADD) @@ -341,7 +341,7 @@ face_s.Blend(eyes_s, ICON_OVERLAY) - var/datum/sprite_accessory/hair_style = hair_styles_full_list[h_style] + var/datum/sprite_accessory/hair_style = GLOB.hair_styles_full_list[h_style] if(hair_style) var/icon/hair_s = new/icon("icon" = hair_style.icon, "icon_state" = "[hair_style.icon_state]_s") if(current_species.name == "Slime People") // whee I am part of the problem @@ -359,13 +359,13 @@ //Head Accessory if(current_species && (current_species.bodyflags & HAS_HEAD_ACCESSORY)) - var/datum/sprite_accessory/head_accessory_style = head_accessory_styles_list[ha_style] + var/datum/sprite_accessory/head_accessory_style = GLOB.head_accessory_styles_list[ha_style] if(head_accessory_style && head_accessory_style.species_allowed) var/icon/head_accessory_s = new/icon("icon" = head_accessory_style.icon, "icon_state" = "[head_accessory_style.icon_state]_s") head_accessory_s.Blend(hacc_colour, ICON_ADD) face_s.Blend(head_accessory_s, ICON_OVERLAY) - var/datum/sprite_accessory/facial_hair_style = facial_hair_styles_list[f_style] + var/datum/sprite_accessory/facial_hair_style = GLOB.facial_hair_styles_list[f_style] if(facial_hair_style && facial_hair_style.species_allowed) var/icon/facial_s = new/icon("icon" = facial_hair_style.icon, "icon_state" = "[facial_hair_style.icon_state]_s") if(current_species.name == "Slime People") // whee I am part of the problem @@ -383,19 +383,19 @@ var/icon/underwear_s = null if(underwear && (current_species.clothing_flags & HAS_UNDERWEAR)) - var/datum/sprite_accessory/underwear/U = underwear_list[underwear] + var/datum/sprite_accessory/underwear/U = GLOB.underwear_list[underwear] if(U) underwear_s = new/icon(U.icon, "uw_[U.icon_state]_s", ICON_OVERLAY) var/icon/undershirt_s = null if(undershirt && (current_species.clothing_flags & HAS_UNDERSHIRT)) - var/datum/sprite_accessory/undershirt/U2 = undershirt_list[undershirt] + var/datum/sprite_accessory/undershirt/U2 = GLOB.undershirt_list[undershirt] if(U2) undershirt_s = new/icon(U2.icon, "us_[U2.icon_state]_s", ICON_OVERLAY) var/icon/socks_s = null if(socks && (current_species.clothing_flags & HAS_SOCKS)) - var/datum/sprite_accessory/socks/U3 = socks_list[socks] + var/datum/sprite_accessory/socks/U3 = GLOB.socks_list[socks] if(U3) socks_s = new/icon(U3.icon, "sk_[U3.icon_state]_s", ICON_OVERLAY) diff --git a/code/modules/mob/pulling.dm b/code/modules/mob/pulling.dm index 5a532ee1a42..f5cb9eecbe2 100644 --- a/code/modules/mob/pulling.dm +++ b/code/modules/mob/pulling.dm @@ -5,6 +5,8 @@ return if(!AM || !isturf(AM.loc)) //if there's no object or the object being pulled is inside something: abort! return + if(incapacitated()) + return if(!(AM.anchored)) AM.add_fingerprint(src) @@ -14,7 +16,6 @@ if(AM == pulling) return stop_pulling() - if(AM.pulledby) visible_message("[src] has pulled [AM] from [AM.pulledby]'s grip.") AM.pulledby.stop_pulling() //an object can't be pulled by two mobs at once. diff --git a/code/modules/mob/say.dm b/code/modules/mob/say.dm index d010bdfa135..a1236e9c719 100644 --- a/code/modules/mob/say.dm +++ b/code/modules/mob/say.dm @@ -137,11 +137,11 @@ /mob/proc/parse_language(var/message) var/prefix = copytext(message, 1, 2) if(length(message) >= 1 && prefix == "!") - return all_languages["Noise"] + return GLOB.all_languages["Noise"] if(length(message) >= 2) var/language_prefix = trim_right(lowertext(copytext(message, 1 ,4))) - var/datum/language/L = language_keys[language_prefix] + var/datum/language/L = GLOB.language_keys[language_prefix] if(can_speak_language(L)) return L diff --git a/code/modules/modular_computers/NTNet/NTNet.dm b/code/modules/modular_computers/NTNet/NTNet.dm index 79e1a9ed2d1..000131d6c03 100644 --- a/code/modules/modular_computers/NTNet/NTNet.dm +++ b/code/modules/modular_computers/NTNet/NTNet.dm @@ -28,7 +28,7 @@ var/global/datum/ntnet/ntnet_global = new() /datum/ntnet/New() if(ntnet_global && (ntnet_global != src)) ntnet_global = src // There can be only one. - for(var/obj/machinery/ntnet_relay/R in machines) + for(var/obj/machinery/ntnet_relay/R in GLOB.machines) relays.Add(R) R.NTNet = src build_software_lists() diff --git a/code/modules/modular_computers/file_system/computer_file.dm b/code/modules/modular_computers/file_system/computer_file.dm index 25ca387a78e..f3b5a9659b2 100644 --- a/code/modules/modular_computers/file_system/computer_file.dm +++ b/code/modules/modular_computers/file_system/computer_file.dm @@ -4,10 +4,11 @@ var/global/file_uid = 0 var/filename = "NewFile" // Placeholder. No spacebars var/filetype = "XXX" // File full names are [filename].[filetype] so like NewFile.XXX in this case var/size = 1 // File size in GQ. Integers only! - var/obj/item/computer_hardware/hard_drive/holder // Holder that contains this file. + var/obj/item/computer_hardware/hard_drive/holder // Holder that contains this file. var/unsendable = 0 // Whether the file may be sent to someone via NTNet transfer or other means. var/undeletable = 0 // Whether the file may be deleted. Setting to 1 prevents deletion/renaming/etc. var/uid // UID of this file + var/password = "" // Placeholder for password. /datum/computer_file/New() ..() @@ -36,4 +37,14 @@ var/global/file_uid = 0 else temp.filename = filename temp.filetype = filetype - return temp \ No newline at end of file + temp.password = password + return temp + +/datum/computer_file/proc/can_access_file(mob/user, input_password = "") + if(!password) + return TRUE + if(!input_password) + input_password = sanitize(input(user, "Please enter a password to access file '[filename]':")) + if(input_password == password) + return TRUE + return FALSE \ No newline at end of file diff --git a/code/modules/modular_computers/file_system/programs/antagonist/revelation.dm b/code/modules/modular_computers/file_system/programs/antagonist/revelation.dm index aadf49ad9c0..22df710c6f8 100644 --- a/code/modules/modular_computers/file_system/programs/antagonist/revelation.dm +++ b/code/modules/modular_computers/file_system/programs/antagonist/revelation.dm @@ -27,16 +27,12 @@ if(battery_module && prob(25)) qdel(battery_module) computer.visible_message("\The [computer]'s battery explodes in rain of sparks.") - var/datum/effect_system/spark_spread/spark_system = new /datum/effect_system/spark_spread() - spark_system.set_up(5, 0, computer.loc) - spark_system.start() + do_sparks(5, 0, computer.loc) if(recharger && prob(50)) qdel(recharger) computer.visible_message("\The [computer]'s recharger explodes in rain of sparks.") - var/datum/effect_system/spark_spread/spark_system = new /datum/effect_system/spark_spread() - spark_system.set_up(5, 0, computer.loc) - spark_system.start() + do_sparks(5, 0, computer.loc) /datum/computer_file/program/revelation/Topic(href, list/href_list) diff --git a/code/modules/modular_computers/file_system/programs/command/card.dm b/code/modules/modular_computers/file_system/programs/command/card.dm index b570687569a..2afebbae666 100644 --- a/code/modules/modular_computers/file_system/programs/command/card.dm +++ b/code/modules/modular_computers/file_system/programs/command/card.dm @@ -103,7 +103,7 @@ /datum/computer_file/program/card_mod/proc/can_open_job(datum/job/job) if(job) if(!job_blacklisted(job)) - if((job.total_positions <= player_list.len * (max_relative_positions / 100))) + if((job.total_positions <= GLOB.player_list.len * (max_relative_positions / 100))) var/delta = (world.time / 10) - time_last_changed_position if((change_position_cooldown < delta) || (opened_positions[job.title] < 0)) return 1 diff --git a/code/modules/modular_computers/file_system/programs/command/comms.dm b/code/modules/modular_computers/file_system/programs/command/comms.dm index dcea2b42dce..7cfc6ad29a4 100644 --- a/code/modules/modular_computers/file_system/programs/command/comms.dm +++ b/code/modules/modular_computers/file_system/programs/command/comms.dm @@ -28,12 +28,12 @@ var/datum/announcement/priority/crew_announcement = new /datum/computer_file/program/comm/New() - shuttle_caller_list += src + GLOB.shuttle_caller_list += src ..() crew_announcement.newscast = 0 /datum/computer_file/program/comm/Destroy() - shuttle_caller_list -= src + GLOB.shuttle_caller_list -= src SSshuttle.autoEvac() return ..() diff --git a/code/modules/modular_computers/file_system/programs/generic/file_browser.dm b/code/modules/modular_computers/file_system/programs/generic/file_browser.dm index 89fea156510..23b2cdab7ab 100644 --- a/code/modules/modular_computers/file_system/programs/generic/file_browser.dm +++ b/code/modules/modular_computers/file_system/programs/generic/file_browser.dm @@ -55,7 +55,8 @@ "name" = F.filename, "type" = F.filetype, "size" = F.size, - "undeletable" = F.undeletable + "undeletable" = F.undeletable, + "encrypted" = !!F.password ))) data["files"] = files if(RHDD) @@ -66,7 +67,8 @@ "name" = F.filename, "type" = F.filetype, "size" = F.size, - "undeletable" = F.undeletable + "undeletable" = F.undeletable, + "encrypted" = !!F.password ))) data["usbfiles"] = usbfiles @@ -83,6 +85,9 @@ switch(href_list["action"]) if("PRG_openfile") . = 1 + var/datum/computer_file/F = HDD.find_file_by_name(href_list["name"]) + if(!F.can_access_file(usr)) + return open_file = href_list["name"] if("PRG_newtextfile") . = 1 @@ -197,4 +202,27 @@ if(!F || !istype(F)) return 1 var/datum/computer_file/C = F.clone(0) - HDD.store_file(C) \ No newline at end of file + HDD.store_file(C) + if("PRG_encrypt") + . = 1 + if(!HDD) + return 1 + var/datum/computer_file/F = HDD.find_file_by_name(href_list["name"]) + if(!F || F.undeletable) + return 1 + if(F.password) + return + var/new_password = sanitize(input(usr, "Enter an encryption key:", "Encrypt File")) + if(!new_password) + to_chat(usr, "File not encrypted.") + return + F.password=new_password + if("PRG_decrypt") + . = 1 + if(!HDD) + return 1 + var/datum/computer_file/F = HDD.find_file_by_name(href_list["name"]) + if(!F || F.undeletable) + return 1 + if(F.can_access_file(usr)) + F.password = "" \ No newline at end of file diff --git a/code/modules/modular_computers/file_system/programs/research/airestorer.dm b/code/modules/modular_computers/file_system/programs/research/airestorer.dm index 9bec60c9779..a39adb8a48e 100644 --- a/code/modules/modular_computers/file_system/programs/research/airestorer.dm +++ b/code/modules/modular_computers/file_system/programs/research/airestorer.dm @@ -77,8 +77,8 @@ if(A.health >= 0 && A.stat == DEAD) A.stat = CONSCIOUS A.lying = 0 - dead_mob_list -= A - living_mob_list += A + GLOB.dead_mob_list -= A + GLOB.living_mob_list += A // Finished restoring if(A.health >= 100) ai_slot.locked = FALSE diff --git a/code/modules/modular_computers/laptop_vendor.dm b/code/modules/modular_computers/laptop_vendor.dm index 4fe833e08ae..b2066285dea 100644 --- a/code/modules/modular_computers/laptop_vendor.dm +++ b/code/modules/modular_computers/laptop_vendor.dm @@ -253,6 +253,7 @@ obj/machinery/lapvend/attackby(obj/item/I, mob/user) fabricated_laptop.forceMove(loc) fabricated_laptop = null else if((devtype == 2) && fabricated_tablet) + fabricated_tablet.update_icon() fabricated_tablet.forceMove(loc) fabricated_tablet = null atom_say("Enjoy your new product!") diff --git a/code/modules/nano/modules/atmos_control.dm b/code/modules/nano/modules/atmos_control.dm index 58c4acc6704..9936895e473 100644 --- a/code/modules/nano/modules/atmos_control.dm +++ b/code/modules/nano/modules/atmos_control.dm @@ -11,7 +11,7 @@ access.req_one_access = req_one_access if(monitored_alarm_ids) - for(var/obj/machinery/alarm/alarm in machines) + for(var/obj/machinery/alarm/alarm in GLOB.machines) if(alarm.alarm_id && alarm.alarm_id in monitored_alarm_ids) monitored_alarms += alarm // machines may not yet be ordered at this point @@ -23,7 +23,7 @@ if(href_list["alarm"]) if(ui_ref) - var/obj/machinery/alarm/alarm = locate(href_list["alarm"]) in (monitored_alarms ? monitored_alarms : machines) + var/obj/machinery/alarm/alarm = locate(href_list["alarm"]) in (monitored_alarms ? monitored_alarms : GLOB.machines) if(alarm) var/datum/topic_state/air_alarm/TS = generate_state(alarm) alarm.ui_interact(usr, master_ui = ui_ref, state = TS) diff --git a/code/modules/nano/modules/crew_monitor.dm b/code/modules/nano/modules/crew_monitor.dm index 19e6dfef3f7..755009ac0be 100644 --- a/code/modules/nano/modules/crew_monitor.dm +++ b/code/modules/nano/modules/crew_monitor.dm @@ -11,7 +11,7 @@ if(href_list["track"]) if(isAI(usr)) var/mob/living/silicon/ai/AI = usr - var/mob/living/carbon/human/H = locate(href_list["track"]) in mob_list + var/mob/living/carbon/human/H = locate(href_list["track"]) in GLOB.mob_list if(hassensorlevel(H, SUIT_SENSOR_TRACKING)) AI.ai_actual_track(H) return 1 diff --git a/code/modules/nano/modules/ert_manager.dm b/code/modules/nano/modules/ert_manager.dm index 1d70157f079..080ed3d56ff 100644 --- a/code/modules/nano/modules/ert_manager.dm +++ b/code/modules/nano/modules/ert_manager.dm @@ -11,7 +11,7 @@ var/autoclose = 0 -/datum/nano_module/ert_manager/ui_interact(mob/user, ui_key = "main", var/datum/nanoui/ui = null, var/force_open = 1, var/datum/topic_state/state = default_state) +/datum/nano_module/ert_manager/ui_interact(mob/user, ui_key = "main", var/datum/nanoui/ui = null, var/force_open = 1, var/datum/topic_state/state = admin_state) ui = SSnanoui.try_update_ui(user, src, ui_key, ui, force_open) if(ui && autoclose) ui.close() diff --git a/code/modules/paperwork/fax.dm b/code/modules/paperwork/fax.dm index ade10febd2c..4b8d4f9db6e 100644 --- a/code/modules/paperwork/fax.dm +++ b/code/modules/paperwork/fax.dm @@ -45,7 +45,7 @@ var/list/adminfaxes = list() html += "[station_time_timestamp("hh:mm:ss", A.sent_at)]" if(A.sent_by) var/mob/living/S = A.sent_by - html += "[S.name]" + html += "[ADMIN_PP(S,"[S.name]")]" else html += "Unknown" html += "View" @@ -74,7 +74,7 @@ var/list/adminfaxes = list() html += "[station_time_timestamp("hh:mm:ss", F.sent_at)]" if(F.sent_by) var/mob/living/S = F.sent_by - html += "[S.name]" + html += "[ADMIN_PP(S,"[S.name]")]" else html += "Unknown" html += "View" diff --git a/code/modules/paperwork/faxmachine.dm b/code/modules/paperwork/faxmachine.dm index 2b699c36530..cd0832bd714 100644 --- a/code/modules/paperwork/faxmachine.dm +++ b/code/modules/paperwork/faxmachine.dm @@ -316,8 +316,8 @@ var/list/alldepartments = list() /obj/machinery/photocopier/faxmachine/proc/message_admins(var/mob/sender, var/faxname, var/faxtype, var/obj/item/sent, font_colour="#9A04D1") - var/msg = "[faxname]: [key_name_admin(sender)] | REPLY: (RADIO) (FAX) (SM) | REJECT: (TEMPLATE) (BSA) (EVILFAX) : Receiving '[sent.name]' via secure connection... view message" - for(var/client/C in admins) + var/msg = "[faxname]: [key_name_admin(sender)] | REPLY: (RADIO) (FAX) ([ADMIN_SM(sender,"SM")]) | REJECT: (TEMPLATE) ([ADMIN_BSA(sender,"BSA")]) (EVILFAX) : Receiving '[sent.name]' via secure connection... view message" + for(var/client/C in GLOB.admins) if(check_rights(R_EVENT, 0, C.mob)) to_chat(C, msg) if(C.prefs.sound & SOUND_ADMINHELP) diff --git a/code/modules/paperwork/paper.dm b/code/modules/paperwork/paper.dm index 2fe57c5698f..06921bce252 100644 --- a/code/modules/paperwork/paper.dm +++ b/code/modules/paperwork/paper.dm @@ -71,7 +71,7 @@ assets.send(user) var/data - if((!user.say_understands(null, all_languages["Galactic Common"]) && !forceshow) || forcestars) //assuming all paper is written in common is better than hardcoded type checks + if((!user.say_understands(null, GLOB.all_languages["Galactic Common"]) && !forceshow) || forcestars) //assuming all paper is written in common is better than hardcoded type checks data = "[name][stars(info)][stamps]" if(view) usr << browse(data, "window=[name];size=[paper_width]x[paper_height]") @@ -316,7 +316,7 @@ to_chat(user, "Take off the carbon copy first.") add_fingerprint(user) return - var/obj/item/paper_bundle/B = new(src.loc) + var/obj/item/paper_bundle/B = new(src.loc, default_papers = FALSE) if(name != "paper") B.name = name else if(P.name != "paper" && P.name != "photo") diff --git a/code/modules/paperwork/paper_bundle.dm b/code/modules/paperwork/paper_bundle.dm index 08cb7b6555e..900d3d4bdb8 100644 --- a/code/modules/paperwork/paper_bundle.dm +++ b/code/modules/paperwork/paper_bundle.dm @@ -11,11 +11,15 @@ layer = 4 pressure_resistance = 1 attack_verb = list("bapped") - var/amount = 0 //Amount of items clipped to the paper + var/amount = 0 //Amount of items clipped to the paper. Note: If you have 2 paper, this should be 1 var/page = 1 var/screen = 0 - +/obj/item/paper_bundle/New(default_papers = TRUE) + if(default_papers) // This is to avoid runtime occuring from a paper bundle being created without a paper in it. + new /obj/item/paper(src) + new /obj/item/paper(src) + amount += 1 /obj/item/paper_bundle/attackby(obj/item/W as obj, mob/user as mob, params) ..() var/obj/item/paper/P @@ -67,7 +71,8 @@ update_icon() - attack_self(usr) //Update the browsed page. + if(winget(usr, "[name]", "is-visible") == "true") // NOT MY FAULT IT IS A BUILT IN PROC PLEASE DO NOT HIT ME + attack_self(usr) //Update the browsed page. add_fingerprint(usr) return diff --git a/code/modules/paperwork/paperplane.dm b/code/modules/paperwork/paperplane.dm index fbbfacb0b8f..a16dc1d2ea3 100644 --- a/code/modules/paperwork/paperplane.dm +++ b/code/modules/paperwork/paperplane.dm @@ -110,10 +110,11 @@ H.emote("scream") /obj/item/paper/AltClick(mob/user, obj/item/I) - var/mob/living/carbon/human/H = user - I = H.is_in_hands(/obj/item/paper) - if(I) - ProcFoldPlane(H, I) + if(ishuman(user)) + var/mob/living/carbon/human/H = user + I = H.is_in_hands(/obj/item/paper) + if(I) + ProcFoldPlane(H, I) else ..() diff --git a/code/modules/paperwork/pen.dm b/code/modules/paperwork/pen.dm index 4e3aaefd1eb..83897e5cbd3 100644 --- a/code/modules/paperwork/pen.dm +++ b/code/modules/paperwork/pen.dm @@ -123,7 +123,7 @@ * Sleepypens */ /obj/item/pen/sleepy - flags = OPENCONTAINER + container_type = OPENCONTAINER origin_tech = "engineering=4;syndicate=2" diff --git a/code/modules/paperwork/photocopier.dm b/code/modules/paperwork/photocopier.dm index a8a0c8ddd19..a3a8dda68e1 100644 --- a/code/modules/paperwork/photocopier.dm +++ b/code/modules/paperwork/photocopier.dm @@ -72,9 +72,15 @@ photocopy(copyitem) sleep(15) else if(istype(copyitem, /obj/item/paper_bundle)) + var/obj/item/paper_bundle/C = copyitem + if(toner < (C.amount + 1)) + visible_message("A yellow light on [src] flashes, indicating there's not enough toner for the operation.") // It is better to prevent partial bundle than to produce broken paper bundle + return var/obj/item/paper_bundle/B = bundlecopy(copyitem) + if(!B) + return sleep(15*B.amount) - else if(ass && ass.loc == src.loc) + else if(ass && ass.loc == loc) copyass() sleep(15) else @@ -287,7 +293,7 @@ //If need_toner is 0, the copies will still be lightened when low on toner, however it will not be prevented from printing. TODO: Implement print queues for fax machines and get rid of need_toner /obj/machinery/photocopier/proc/bundlecopy(var/obj/item/paper_bundle/bundle, var/need_toner=1) - var/obj/item/paper_bundle/p = new /obj/item/paper_bundle (src) + var/obj/item/paper_bundle/P = new /obj/item/paper_bundle (src, default_papers = FALSE) for(var/obj/item/W in bundle) if(toner <= 0 && need_toner) toner = 0 @@ -298,16 +304,19 @@ W = copy(W) else if(istype(W, /obj/item/photo)) W = photocopy(W) - W.forceMove(p) - p.amount++ - p.amount-- - p.forceMove(get_turf(src)) - p.update_icon() - p.icon_state = "paper_words" - p.name = bundle.name - p.pixel_y = rand(-8, 8) - p.pixel_x = rand(-9, 9) - return p + W.forceMove(P) + P.amount++ + if(!P.amount) + qdel(P) + return null + P.amount-- + P.forceMove(get_turf(src)) + P.update_icon() + P.icon_state = "paper_words" + P.name = bundle.name + P.pixel_y = rand(-8, 8) + P.pixel_x = rand(-9, 9) + return P /obj/machinery/photocopier/MouseDrop_T(mob/target, mob/user) diff --git a/code/modules/paperwork/photography.dm b/code/modules/paperwork/photography.dm index 40759ab792c..3b37e551e0f 100644 --- a/code/modules/paperwork/photography.dm +++ b/code/modules/paperwork/photography.dm @@ -545,13 +545,13 @@ var/list/SpookyGhosts = list("ghost","shade","shade2","ghost-narsie","horror","s if(camera && on) if(get_dist(src, M) <= canhear_range) talk_into(M, msg) - for(var/obj/machinery/computer/security/telescreen/T in machines) + for(var/obj/machinery/computer/security/telescreen/T in GLOB.machines) if(T.watchers[M] == camera) T.audible_message("(Newscaster) [M] says, '[msg]'", hearing_distance = 2) /obj/item/videocam/hear_message(mob/M as mob, msg) if(camera && on) - for(var/obj/machinery/computer/security/telescreen/T in machines) + for(var/obj/machinery/computer/security/telescreen/T in GLOB.machines) if(T.watchers[M] == camera) T.audible_message("(Newscaster) [M] [msg]", hearing_distance = 2) diff --git a/code/modules/pda/cart_apps.dm b/code/modules/pda/cart_apps.dm index 78f0eec355d..b92253d4ae9 100644 --- a/code/modules/pda/cart_apps.dm +++ b/code/modules/pda/cart_apps.dm @@ -367,7 +367,7 @@ else JaniData["user_loc"] = list("x" = 0, "y" = 0) var/MopData[0] - for(var/obj/item/mop/M in janitorial_equipment) + for(var/obj/item/mop/M in GLOB.janitorial_equipment) var/turf/ml = get_turf(M) if(ml) if(ml.z != cl.z) @@ -380,7 +380,7 @@ var/BucketData[0] - for(var/obj/structure/mopbucket/B in janitorial_equipment) + for(var/obj/structure/mopbucket/B in GLOB.janitorial_equipment) var/turf/bl = get_turf(B) if(bl) if(bl.z != cl.z) @@ -392,7 +392,7 @@ BucketData[++BucketData.len] = list("x" = 0, "y" = 0, dir=null, status = null) var/CbotData[0] - for(var/mob/living/simple_animal/bot/cleanbot/B in simple_animal_list) + for(var/mob/living/simple_animal/bot/cleanbot/B in GLOB.simple_animal_list) var/turf/bl = get_turf(B) if(bl) if(bl.z != cl.z) @@ -404,7 +404,7 @@ if(!CbotData.len) CbotData[++CbotData.len] = list("x" = 0, "y" = 0, dir=null, status = null) var/CartData[0] - for(var/obj/structure/janitorialcart/B in janitorial_equipment) + for(var/obj/structure/janitorialcart/B in GLOB.janitorial_equipment) var/turf/bl = get_turf(B) if(bl) if(bl.z != cl.z) diff --git a/code/modules/pda/radio.dm b/code/modules/pda/radio.dm index b9dfe8ff7e4..a6328dacd6f 100644 --- a/code/modules/pda/radio.dm +++ b/code/modules/pda/radio.dm @@ -129,8 +129,8 @@ post_signal(control_freq, "command", "unload", "active", active, s_filter = RADIO_MULEBOT) if("setdest") - if(deliverybeacons) - var/dest = input("Select Bot Destination", "Mulebot [active.suffix] Interlink", active.destination) as null|anything in deliverybeacontags + if(GLOB.deliverybeacons) + var/dest = input("Select Bot Destination", "Mulebot [active.suffix] Interlink", active.destination) as null|anything in GLOB.deliverybeacontags if(dest) spawn(0) post_signal(control_freq, "command", "target", "active", active, "destination", dest, s_filter = RADIO_MULEBOT) diff --git a/code/modules/pda/utilities.dm b/code/modules/pda/utilities.dm index e144841a144..a03a36e005a 100644 --- a/code/modules/pda/utilities.dm +++ b/code/modules/pda/utilities.dm @@ -29,7 +29,7 @@ var/remote_door_id = "" /datum/data/pda/utility/toggle_door/start() - for(var/obj/machinery/door/poddoor/M in airlocks) + for(var/obj/machinery/door/poddoor/M in GLOB.airlocks) if(M.id_tag == remote_door_id) if(M.density) M.open() diff --git a/code/modules/power/apc.dm b/code/modules/power/apc.dm index f4894b2c120..dbf30cd59b0 100644 --- a/code/modules/power/apc.dm +++ b/code/modules/power/apc.dm @@ -145,8 +145,8 @@ if(!armor) armor = list(melee = 20, bullet = 20, laser = 10, energy = 100, bomb = 30, bio = 100, rad = 100) ..() - apcs += src - apcs = sortAtom(apcs) + GLOB.apcs += src + GLOB.apcs = sortAtom(GLOB.apcs) wires = new(src) // offset 24 pixels in direction of dir @@ -172,7 +172,7 @@ src.update() /obj/machinery/power/apc/Destroy() - apcs -= src + GLOB.apcs -= src if(malfai && operating) malfai.malf_picker.processing_time = Clamp(malfai.malf_picker.processing_time - 10,0,1000) area.power_light = 0 @@ -536,9 +536,7 @@ var/turf/T = get_turf(src) var/obj/structure/cable/N = T.get_cable_node() if(prob(50) && electrocute_mob(usr, N, N)) - var/datum/effect_system/spark_spread/s = new /datum/effect_system/spark_spread - s.set_up(5, 1, src) - s.start() + do_sparks(5, 1, src) return C.use(10) user.visible_message(\ @@ -555,9 +553,7 @@ if(do_after(user, 50 * W.toolspeed, target = src)) if(terminal && opened && has_electronics!=2) if(prob(50) && electrocute_mob(usr, terminal.powernet, terminal)) - var/datum/effect_system/spark_spread/s = new /datum/effect_system/spark_spread - s.set_up(5, 1, src) - s.start() + do_sparks(5, 1, src) return new /obj/item/stack/cable_coil(loc,10) to_chat(user, "You cut the cables and dismantle the power terminal.") @@ -1036,7 +1032,7 @@ occupier.verbs += /mob/living/silicon/ai/proc/corereturn occupier.cancel_camera() if((seclevel2num(get_security_level()) == SEC_LEVEL_DELTA) && malf.nuking) - for(var/obj/item/pinpointer/point in pinpointer_list) + for(var/obj/item/pinpointer/point in GLOB.pinpointer_list) point.the_disk = src //the pinpointer will detect the shunted AI /obj/machinery/power/apc/proc/malfvacate(forced) @@ -1049,7 +1045,7 @@ occupier.parent.cancel_camera() qdel(occupier) if(seclevel2num(get_security_level()) == SEC_LEVEL_DELTA) - for(var/obj/item/pinpointer/point in pinpointer_list) + for(var/obj/item/pinpointer/point in GLOB.pinpointer_list) for(var/mob/living/silicon/ai/A in ai_list) if((A.stat != DEAD) && A.nuking) point.the_disk = A //The pinpointer tracks the AI back into its core. @@ -1059,7 +1055,7 @@ occupier.loc = loc occupier.death() occupier.gib() - for(var/obj/item/pinpointer/point in pinpointer_list) + for(var/obj/item/pinpointer/point in GLOB.pinpointer_list) point.the_disk = null //Pinpointers go back to tracking the nuke disk /obj/machinery/power/apc/proc/ion_act() @@ -1076,9 +1072,7 @@ smoke.set_up(3, 0, src.loc) smoke.attach(src) smoke.start() - var/datum/effect_system/spark_spread/s = new /datum/effect_system/spark_spread - s.set_up(3, 1, src) - s.start() + do_sparks(3, 1, src) for(var/mob/M in viewers(src)) M.show_message("The [src.name] suddenly lets out a blast of smoke and some sparks!", 3, "You hear sizzling electronics.", 2) diff --git a/code/modules/power/cable.dm b/code/modules/power/cable.dm index ed1458c1cae..048cbf65500 100644 --- a/code/modules/power/cable.dm +++ b/code/modules/power/cable.dm @@ -134,9 +134,9 @@ By design, d1 is the smallest direction and d2 is the highest return if(src.d1) // 0-X cables are 1 unit, X-X cables are 2 units long - new/obj/item/stack/cable_coil(T, 2, color) + new/obj/item/stack/cable_coil(T, 2, paramcolor = color) else - new/obj/item/stack/cable_coil(T, 1, color) + new/obj/item/stack/cable_coil(T, 1, paramcolor = color) for(var/mob/O in viewers(src, null)) O.show_message("[user] cuts the cable.", 1) @@ -195,9 +195,7 @@ By design, d1 is the smallest direction and d2 is the highest if(!prob(prb)) return 0 if(electrocute_mob(user, powernet, src, siemens_coeff)) - var/datum/effect_system/spark_spread/s = new /datum/effect_system/spark_spread - s.set_up(5, 1, src) - s.start() + do_sparks(5, 1, src) return 1 else return 0 @@ -209,12 +207,12 @@ By design, d1 is the smallest direction and d2 is the highest qdel(src) // qdel if(2.0) if(prob(50)) - new/obj/item/stack/cable_coil(get_turf(src), src.d1 ? 2 : 1, color) + new/obj/item/stack/cable_coil(get_turf(src), src.d1 ? 2 : 1, paramcolor = color) qdel(src) // qdel if(3.0) if(prob(25)) - new/obj/item/stack/cable_coil(get_turf(src), src.d1 ? 2 : 1, color) + new/obj/item/stack/cable_coil(get_turf(src), src.d1 ? 2 : 1, paramcolor = color) qdel(src) // qdel return @@ -502,13 +500,13 @@ var/global/list/datum/stack_recipe/cable_coil_recipes = list( toolspeed = 1 /obj/item/stack/cable_coil/suicide_act(mob/user) - if(locate(/obj/structure/stool) in user.loc) + if(locate(/obj/structure/chair/stool) in user.loc) user.visible_message("[user] is making a noose with the [name]! It looks like [user.p_theyre()] trying to commit suicide.") else user.visible_message("[user] is strangling [user.p_them()]self with the [name]! It looks like [user.p_theyre()] trying to commit suicide.") return(OXYLOSS) -/obj/item/stack/cable_coil/New(loc, length = MAXCOIL, var/paramcolor = null) +/obj/item/stack/cable_coil/New(loc, length = MAXCOIL, paramcolor = null) ..() amount = length if(paramcolor) @@ -694,7 +692,7 @@ var/global/list/datum/stack_recipe/cable_coil_recipes = list( if(C.shock(user, 50)) if(prob(50)) //fail - new /obj/item/stack/cable_coil(get_turf(C), 1, C.color) + new /obj/item/stack/cable_coil(get_turf(C), 1, paramcolor = C.color) qdel(C) // qdel return C @@ -777,7 +775,7 @@ var/global/list/datum/stack_recipe/cable_coil_recipes = list( if(C.shock(user, 50)) if(prob(50)) //fail - new/obj/item/stack/cable_coil(get_turf(C), 2, C.color) + new/obj/item/stack/cable_coil(get_turf(C), 2, paramcolor = C.color) qdel(C) // qdel return diff --git a/code/modules/power/gravitygenerator.dm b/code/modules/power/gravitygenerator.dm index 8f9d9fb14cd..c65f7d56158 100644 --- a/code/modules/power/gravitygenerator.dm +++ b/code/modules/power/gravitygenerator.dm @@ -366,7 +366,7 @@ var/const/GRAV_NEEDS_WRENCH = 3 /obj/machinery/gravity_generator/main/proc/shake_everyone() var/turf/our_turf = get_turf(src) var/sound/alert_sound = sound('sound/effects/alert.ogg') - for(var/shaked in mob_list) + for(var/shaked in GLOB.mob_list) var/mob/M = shaked var/turf/their_turf = get_turf(M) if(their_turf && their_turf.z == our_turf.z) diff --git a/code/modules/power/lighting.dm b/code/modules/power/lighting.dm index 38b9d9220d5..fcb0b12f0d3 100644 --- a/code/modules/power/lighting.dm +++ b/code/modules/power/lighting.dm @@ -66,7 +66,7 @@ src.icon_state = "tube-construct-stage1" if("bulb") src.icon_state = "bulb-construct-stage1" - new /obj/item/stack/cable_coil(get_turf(src.loc), 1, COLOR_RED) + new /obj/item/stack/cable_coil(get_turf(src.loc), 1, paramcolor = COLOR_RED) user.visible_message("[user.name] removes the wiring from [src].", \ "You remove the wiring from [src].", "You hear a noise.") playsound(loc, W.usesound, 100, 1) @@ -386,9 +386,7 @@ to_chat(user, "You stick \the [W] into the light socket!") if(has_power() && (W.flags & CONDUCT)) - var/datum/effect_system/spark_spread/s = new /datum/effect_system/spark_spread - s.set_up(3, 1, src) - s.start() + do_sparks(3, 1, src) if(prob(75)) electrocute_mob(user, get_area(src), src, rand(0.7,1.0)) @@ -540,9 +538,7 @@ if(status == LIGHT_OK || status == LIGHT_BURNED) playsound(src.loc, 'sound/effects/Glasshit.ogg', 75, 1) if(on || overloaded) - var/datum/effect_system/spark_spread/s = new /datum/effect_system/spark_spread - s.set_up(3, 1, src) - s.start() + do_sparks(3, 1, src) status = LIGHT_BROKEN update() diff --git a/code/modules/power/singularity/containment_field.dm b/code/modules/power/singularity/containment_field.dm index 0e9bdd8ddf3..a0e84f8455a 100644 --- a/code/modules/power/singularity/containment_field.dm +++ b/code/modules/power/singularity/containment_field.dm @@ -99,9 +99,7 @@ if(hasShocked) return 0 hasShocked = 1 - var/datum/effect_system/spark_spread/s = new /datum/effect_system/spark_spread - s.set_up(5, 1, AM.loc) - s.start() + do_sparks(5, 1, AM.loc) var/atom/target = get_edge_target_turf(AM, get_dir(src, get_step_away(AM, src))) AM.throw_at(target, 200, 4) spawn(5) diff --git a/code/modules/power/singularity/emitter.dm b/code/modules/power/singularity/emitter.dm index 0bcde54af4b..ca0c4cb749a 100644 --- a/code/modules/power/singularity/emitter.dm +++ b/code/modules/power/singularity/emitter.dm @@ -24,6 +24,7 @@ var/frequency = 0 var/id_tag = null var/datum/radio_frequency/radio_connection + var/datum/effect_system/spark_spread/sparks /obj/machinery/power/emitter/New() ..() @@ -32,6 +33,8 @@ component_parts += new /obj/item/stock_parts/micro_laser(null) component_parts += new /obj/item/stock_parts/manipulator(null) RefreshParts() + sparks = new + sparks.set_up(5, 1, src) /obj/machinery/power/emitter/RefreshParts() var/max_firedelay = 120 @@ -124,6 +127,7 @@ msg_admin_attack("Emitter deleted at ([x],[y],[z] - [ADMIN_JMP(src)])", ATKLOG_FEW) log_game("Emitter deleted at ([x],[y],[z])") investigate_log("deleted at ([x],[y],[z])","singulo") + QDEL_NULL(sparks) return ..() /obj/machinery/power/emitter/update_icon() @@ -206,9 +210,7 @@ A.dir = src.dir playsound(get_turf(src), 'sound/weapons/emitter.ogg', 25, 1) if(prob(35)) - var/datum/effect_system/spark_spread/s = new /datum/effect_system/spark_spread - s.set_up(5, 1, src) - s.start() + sparks.start() switch(dir) if(NORTH) diff --git a/code/modules/power/singularity/field_generator.dm b/code/modules/power/singularity/field_generator.dm index 0f281c634e3..40947d79368 100644 --- a/code/modules/power/singularity/field_generator.dm +++ b/code/modules/power/singularity/field_generator.dm @@ -313,7 +313,7 @@ field_generator power level display //I want to avoid using global variables. spawn(1) var/temp = 1 //stops spam - for(var/obj/singularity/O in singularities) + for(var/obj/singularity/O in GLOB.singularities) if(O.last_warning && temp) if((world.time - O.last_warning) > 50) //to stop message-spam temp = 0 diff --git a/code/modules/power/singularity/narsie.dm b/code/modules/power/singularity/narsie.dm index b443fe1b853..e15c727accb 100644 --- a/code/modules/power/singularity/narsie.dm +++ b/code/modules/power/singularity/narsie.dm @@ -93,7 +93,7 @@ /obj/singularity/narsie/proc/pickcultist() //Narsie rewards his cultists with being devoured first, then picks a ghost to follow. --NEO var/list/cultists = list() var/list/noncultists = list() - for(var/mob/living/carbon/food in living_mob_list) //we don't care about constructs or cult-Ians or whatever. cult-monkeys are fair game i guess + for(var/mob/living/carbon/food in GLOB.living_mob_list) //we don't care about constructs or cult-Ians or whatever. cult-monkeys are fair game i guess var/turf/pos = get_turf(food) if(pos.z != src.z) continue @@ -112,7 +112,7 @@ return //no living humans, follow a ghost instead. - for(var/mob/dead/observer/ghost in player_list) + for(var/mob/dead/observer/ghost in GLOB.player_list) if(!ghost.client) continue var/turf/pos = get_turf(ghost) diff --git a/code/modules/power/singularity/singularity.dm b/code/modules/power/singularity/singularity.dm index 0abb564fa28..67238444eaa 100644 --- a/code/modules/power/singularity/singularity.dm +++ b/code/modules/power/singularity/singularity.dm @@ -35,17 +35,17 @@ src.energy = starting_energy ..() processing_objects.Add(src) - poi_list |= src - singularities += src - for(var/obj/machinery/power/singularity_beacon/singubeacon in machines) + GLOB.poi_list |= src + GLOB.singularities += src + for(var/obj/machinery/power/singularity_beacon/singubeacon in GLOB.machines) if(singubeacon.active) target = singubeacon break /obj/singularity/Destroy() processing_objects.Remove(src) - poi_list.Remove(src) - singularities -= src + GLOB.poi_list.Remove(src) + GLOB.singularities -= src target = null return ..() diff --git a/code/modules/power/smes.dm b/code/modules/power/smes.dm index e5a669ef860..6d5d0226e69 100644 --- a/code/modules/power/smes.dm +++ b/code/modules/power/smes.dm @@ -184,9 +184,7 @@ if(do_after(user, 50 * I.toolspeed, target = src)) if(prob(50) && electrocute_mob(usr, terminal.powernet, terminal)) //animate the electrocution if uncautious and unlucky - var/datum/effect_system/spark_spread/s = new /datum/effect_system/spark_spread - s.set_up(5, 1, src) - s.start() + do_sparks(5, 1, src) return //give the wires back and delete the terminal @@ -323,9 +321,7 @@ var/turf/T = get_turf(user) var/obj/structure/cable/N = T.get_cable_node() //get the connecting node cable, if there's one if(prob(50) && electrocute_mob(user, N, N)) //animate the electrocution if uncautious and unlucky - var/datum/effect_system/spark_spread/s = new /datum/effect_system/spark_spread - s.set_up(5, 1, src) - s.start() + do_sparks(5, 1, src) return user.visible_message(\ @@ -446,9 +442,7 @@ qdel(src) return if(prob(15)) //Power drain - var/datum/effect_system/spark_spread/s = new /datum/effect_system/spark_spread - s.set_up(3, 1, src) - s.start() + do_sparks(3, 1, src) if(prob(50)) emp_act(1) else diff --git a/code/modules/power/supermatter/supermatter.dm b/code/modules/power/supermatter/supermatter.dm index 125706bff28..dfb8da3811d 100644 --- a/code/modules/power/supermatter/supermatter.dm +++ b/code/modules/power/supermatter/supermatter.dm @@ -99,7 +99,7 @@ /obj/machinery/power/supermatter_shard/New() . = ..() - poi_list |= src + GLOB.poi_list |= src //Added to the atmos_machine process as the SM is highly coupled with the atmospherics system. //Having the SM run at a different rate then atmospherics causes odd behavior. SSair.atmos_machinery += src @@ -137,7 +137,7 @@ if(damage > emergency_point) emergency_lighting(0) QDEL_NULL(radio) - poi_list.Remove(src) + GLOB.poi_list.Remove(src) SSair.atmos_machinery -= src return ..() @@ -182,7 +182,7 @@ if(damage > explosion_point) if(get_turf(src)) var/turf/position = get_turf(src) - for(var/mob/living/mob in living_mob_list) + for(var/mob/living/mob in GLOB.living_mob_list) var/turf/mob_pos = get_turf(mob) if(mob_pos && mob_pos.z == position.z) if(ishuman(mob)) @@ -301,7 +301,7 @@ investigate_log("Supermatter shard consumed by singularity.","singulo") message_admins("Singularity has consumed a supermatter shard and can now become stage six.(JMP).") visible_message("[src] is consumed by the singularity!") - for(var/mob/M in mob_list) + for(var/mob/M in GLOB.mob_list) M << 'sound/effects/supermatter.ogg' //everyone gunna know bout this to_chat(M, "A horrible screeching fills your ears, and a wave of dread washes over you...") qdel(src) diff --git a/code/modules/power/tesla/energy_ball.dm b/code/modules/power/tesla/energy_ball.dm index 9cfd526585e..e5005708c67 100644 --- a/code/modules/power/tesla/energy_ball.dm +++ b/code/modules/power/tesla/energy_ball.dm @@ -118,7 +118,7 @@ /obj/singularity/energy_ball/orbit(obj/singularity/energy_ball/target) if(istype(target)) target.orbiting_balls += src - poi_list -= src + GLOB.poi_list -= src target.dissipate_strength = target.orbiting_balls.len . = ..() diff --git a/code/modules/power/treadmill.dm b/code/modules/power/treadmill.dm index 4f7e7e9c895..92464413c5c 100644 --- a/code/modules/power/treadmill.dm +++ b/code/modules/power/treadmill.dm @@ -140,7 +140,7 @@ /obj/machinery/treadmill_monitor/Initialize() ..() if(id) - for(var/obj/machinery/power/treadmill/T in machines) + for(var/obj/machinery/power/treadmill/T in GLOB.machines) if(T.id == id) treadmill = T break diff --git a/code/modules/projectiles/ammunition/ammo_casings.dm b/code/modules/projectiles/ammunition/ammo_casings.dm index f3c5db5da22..43112467f33 100644 --- a/code/modules/projectiles/ammunition/ammo_casings.dm +++ b/code/modules/projectiles/ammunition/ammo_casings.dm @@ -242,11 +242,11 @@ name = "shotgun dart" desc = "A dart for use in shotguns. Can be injected with up to 30 units of any chemical." icon_state = "cshell" + container_type = OPENCONTAINER projectile_type = /obj/item/projectile/bullet/dart /obj/item/ammo_casing/shotgun/dart/New() ..() - flags |= OPENCONTAINER create_reagents(30) /obj/item/ammo_casing/shotgun/dart/attackby() diff --git a/code/modules/projectiles/guns/dartgun.dm b/code/modules/projectiles/guns/dartgun.dm index 5c78613fbdf..7b39bfa3be8 100644 --- a/code/modules/projectiles/guns/dartgun.dm +++ b/code/modules/projectiles/guns/dartgun.dm @@ -29,7 +29,7 @@ var/obj/item/dart_cartridge/cartridge = null //Container of darts. var/max_beakers = 3 var/dart_reagent_amount = 15 - var/container_type = /obj/item/reagent_containers/glass/beaker + var/containers_type = /obj/item/reagent_containers/glass/beaker var/list/starting_chems = null /obj/item/gun/dartgun/update_icon() @@ -49,7 +49,7 @@ ..() if(starting_chems) for(var/chem in starting_chems) - var/obj/B = new container_type(src) + var/obj/B = new containers_type(src) B.reagents.add_reagent(chem, 50) beakers += B cartridge = new /obj/item/dart_cartridge(src) @@ -87,7 +87,7 @@ update_icon() return if(istype(I, /obj/item/reagent_containers/glass)) - if(!istype(I, container_type)) + if(!istype(I, containers_type)) to_chat(user, "[I] doesn't seem to fit into [src].") return if(beakers.len >= max_beakers) diff --git a/code/modules/projectiles/guns/energy/special.dm b/code/modules/projectiles/guns/energy/special.dm index ccb28890786..fa010a69e49 100644 --- a/code/modules/projectiles/guns/energy/special.dm +++ b/code/modules/projectiles/guns/energy/special.dm @@ -143,7 +143,8 @@ fire_sound = 'sound/weapons/laser.ogg' usesound = 'sound/items/Welder.ogg' toolspeed = 1 - flags = CONDUCT | OPENCONTAINER + container_type = OPENCONTAINER + flags = CONDUCT attack_verb = list("attacked", "slashed", "cut", "sliced") force = 12 sharp = 1 @@ -160,8 +161,9 @@ S.use(1) power_supply.give(1000) to_chat(user, "You insert [A] in [src], recharging it.") - else if(istype(A, /obj/item/ore/plasma)) - qdel(A) + else if(istype(A, /obj/item/stack/ore/plasma)) + var/obj/item/stack/ore/S = A + S.use(1) power_supply.give(500) to_chat(user, "You insert [A] in [src], recharging it.") else diff --git a/code/modules/projectiles/guns/energy/telegun.dm b/code/modules/projectiles/guns/energy/telegun.dm index 1c5da40e38e..834949c1512 100644 --- a/code/modules/projectiles/guns/energy/telegun.dm +++ b/code/modules/projectiles/guns/energy/telegun.dm @@ -18,7 +18,7 @@ var/list/L = list() var/list/areaindex = list() - for(var/obj/item/radio/beacon/R in beacons) + for(var/obj/item/radio/beacon/R in GLOB.beacons) var/turf/T = get_turf(R) if(!T) continue diff --git a/code/modules/projectiles/projectile/bullets.dm b/code/modules/projectiles/projectile/bullets.dm index 6c19971a996..cd73c90d1cf 100644 --- a/code/modules/projectiles/projectile/bullets.dm +++ b/code/modules/projectiles/projectile/bullets.dm @@ -96,9 +96,7 @@ ..() /obj/item/projectile/bullet/pellet/weak/on_range() - var/datum/effect_system/spark_spread/sparks = new /datum/effect_system/spark_spread - sparks.set_up(1, 1, src) - sparks.start() + do_sparks(1, 1, src) ..() /obj/item/projectile/bullet/pellet/overload @@ -114,9 +112,7 @@ /obj/item/projectile/bullet/pellet/overload/on_range() explosion(src, 0, 0, 2) - var/datum/effect_system/spark_spread/sparks = new /datum/effect_system/spark_spread - sparks.set_up(3, 3, src) - sparks.start() + do_sparks(3, 3, src) ..() /obj/item/projectile/bullet/midbullet diff --git a/code/modules/projectiles/projectile/energy.dm b/code/modules/projectiles/projectile/energy.dm index 10786ec4b82..5da56d179bd 100644 --- a/code/modules/projectiles/projectile/energy.dm +++ b/code/modules/projectiles/projectile/energy.dm @@ -22,9 +22,7 @@ /obj/item/projectile/energy/electrode/on_hit(var/atom/target, var/blocked = 0) . = ..() if(!ismob(target) || blocked >= 100) //Fully blocked by mob or collided with dense object - burst into sparks! - var/datum/effect_system/spark_spread/sparks = new /datum/effect_system/spark_spread - sparks.set_up(1, 1, src) - sparks.start() + do_sparks(1, 1, src) else if(iscarbon(target)) var/mob/living/carbon/C = target if(HULK in C.mutations) @@ -34,9 +32,7 @@ C.do_jitter_animation(jitter) /obj/item/projectile/energy/electrode/on_range() //to ensure the bolt sparks when it reaches the end of its range if it didn't hit a target yet - var/datum/effect_system/spark_spread/sparks = new /datum/effect_system/spark_spread - sparks.set_up(1, 1, src) - sparks.start() + do_sparks(1, 1, src) ..() /obj/item/projectile/energy/declone diff --git a/code/modules/projectiles/projectile/magic.dm b/code/modules/projectiles/projectile/magic.dm index 854fd1edbaf..ef6ec862290 100644 --- a/code/modules/projectiles/projectile/magic.dm +++ b/code/modules/projectiles/projectile/magic.dm @@ -79,7 +79,7 @@ target.suiciding = 0 target.revive() if(!target.ckey) - for(var/mob/dead/observer/ghost in player_list) + for(var/mob/dead/observer/ghost in GLOB.player_list) if(target.real_name == ghost.real_name) ghost.reenter_corpse() break diff --git a/code/modules/projectiles/projectile/special.dm b/code/modules/projectiles/projectile/special.dm index ef8a36f7f86..85eb3b25c9f 100644 --- a/code/modules/projectiles/projectile/special.dm +++ b/code/modules/projectiles/projectile/special.dm @@ -193,9 +193,7 @@ icon_state = "snappop" /obj/item/projectile/clown/Bump(atom/A as mob|obj|turf|area) - var/datum/effect_system/spark_spread/s = new /datum/effect_system/spark_spread - s.set_up(3, 1, src) - s.start() + do_sparks(3, 1, src) new /obj/effect/decal/cleanable/ash(loc) visible_message("The [name] explodes!","You hear a snap!") playsound(src, 'sound/effects/snap.ogg', 50, 1) diff --git a/code/modules/reagents/chemistry/holder.dm b/code/modules/reagents/chemistry/holder.dm index c76129fc27f..cbe8c43b936 100644 --- a/code/modules/reagents/chemistry/holder.dm +++ b/code/modules/reagents/chemistry/holder.dm @@ -18,21 +18,21 @@ var/const/INGEST = 2 if(!(flags & REAGENT_NOREACT)) processing_objects |= src //I dislike having these here but map-objects are initialised before world/New() is called. >_> - if(!chemical_reagents_list) + if(!GLOB.chemical_reagents_list) //Chemical Reagents - Initialises all /datum/reagent into a list indexed by reagent id var/paths = subtypesof(/datum/reagent) - chemical_reagents_list = list() + GLOB.chemical_reagents_list = list() for(var/path in paths) var/datum/reagent/D = new path() - chemical_reagents_list[D.id] = D - if(!chemical_reactions_list) + GLOB.chemical_reagents_list[D.id] = D + if(!GLOB.chemical_reactions_list) //Chemical Reactions - Initialises all /datum/chemical_reaction into a list // It is filtered into multiple lists within a list. // For example: // chemical_reaction_list["plasma"] is a list of all reactions relating to plasma var/paths = subtypesof(/datum/chemical_reaction) - chemical_reactions_list = list() + GLOB.chemical_reactions_list = list() for(var/path in paths) @@ -45,9 +45,9 @@ var/const/INGEST = 2 // Create filters based on each reagent id in the required reagents list for(var/id in reaction_ids) - if(!chemical_reactions_list[id]) - chemical_reactions_list[id] = list() - chemical_reactions_list[id] += D + if(!GLOB.chemical_reactions_list[id]) + GLOB.chemical_reactions_list[id] = list() + GLOB.chemical_reactions_list[id] += D break // Don't bother adding ourselves to other reagent ids, it is redundant. /datum/reagents/proc/remove_any(amount=1) @@ -377,7 +377,7 @@ var/const/INGEST = 2 do reaction_occured = 0 for(var/datum/reagent/R in reagent_list) // Usually a small list - for(var/reaction in chemical_reactions_list[R.id]) // Was a big list but now it should be smaller since we filtered it with our reagent id + for(var/reaction in GLOB.chemical_reactions_list[R.id]) // Was a big list but now it should be smaller since we filtered it with our reagent id if(!reaction) continue @@ -570,7 +570,7 @@ var/const/INGEST = 2 handle_reactions() return 0 - var/datum/reagent/D = chemical_reagents_list[reagent] + var/datum/reagent/D = GLOB.chemical_reagents_list[reagent] if(D) var/datum/reagent/R = new D.type() @@ -594,6 +594,11 @@ var/const/INGEST = 2 return 1 +/datum/reagents/proc/check_and_add(reagent, check, add) + if(get_reagent_amount(reagent) < check) + add_reagent(reagent, add) + return TRUE + /datum/reagents/proc/remove_reagent(reagent, amount, safety)//Added a safety check for the trans_id_to if(!isnum(amount)) @@ -678,6 +683,16 @@ var/const/INGEST = 2 stuff += A.id return english_list(stuff) +/datum/reagents/proc/log_list() + if(!length(reagent_list)) + return "no reagents" + var/list/data = list() + for(var/r in reagent_list) //no reagents will be left behind + var/datum/reagent/R = r + data += "[R.id] ([round(R.volume, 0.1)]u)" + //Using IDs because SOME chemicals (I'm looking at you, chlorhydrate-beer) have the same names as other chemicals. + return english_list(data) + //two helper functions to preserve data across reactions (needed for xenoarch) /datum/reagents/proc/get_data(reagent_id) for(var/datum/reagent/D in reagent_list) @@ -739,10 +754,17 @@ var/const/INGEST = 2 break return result +/datum/reagents/proc/holder_full() + if(total_volume >= maximum_volume) + return TRUE + return FALSE + /datum/reagents/Destroy() . = ..() processing_objects -= src QDEL_LIST(reagent_list) reagent_list = null + QDEL_LIST(addiction_list) + addiction_list = null if(my_atom && my_atom.reagents == src) my_atom.reagents = null diff --git a/code/modules/reagents/chemistry/machinery/chem_dispenser.dm b/code/modules/reagents/chemistry/machinery/chem_dispenser.dm index cf291fba675..88d7318e962 100644 --- a/code/modules/reagents/chemistry/machinery/chem_dispenser.dm +++ b/code/modules/reagents/chemistry/machinery/chem_dispenser.dm @@ -142,7 +142,7 @@ var/chemicals[0] for(var/re in dispensable_reagents) - var/datum/reagent/temp = chemical_reagents_list[re] + var/datum/reagent/temp = GLOB.chemical_reagents_list[re] if(temp) chemicals.Add(list(list("title" = temp.name, "id" = temp.id, "commands" = list("dispense" = temp.id)))) // list in a list because Byond merges the first list... data["chemicals"] = chemicals diff --git a/code/modules/reagents/chemistry/machinery/chem_master.dm b/code/modules/reagents/chemistry/machinery/chem_master.dm index 2a7dac0f48d..81fed023251 100644 --- a/code/modules/reagents/chemistry/machinery/chem_master.dm +++ b/code/modules/reagents/chemistry/machinery/chem_master.dm @@ -20,7 +20,7 @@ /obj/machinery/chem_master/New() create_reagents(100) - overlays += "waitlight" + update_icon() /obj/machinery/chem_master/ex_act(severity) switch(severity) @@ -32,6 +32,12 @@ qdel(src) return +/obj/machinery/chem_master/update_icon() + overlays.Cut() + icon_state = "mixer[beaker ? "1" : "0"][powered() ? "" : "_nopower"]" + if(powered()) + overlays += "waitlight" + /obj/machinery/chem_master/blob_act() if(prob(50)) qdel(src) @@ -57,7 +63,7 @@ B.forceMove(src) to_chat(user, "You add the beaker to the machine!") SSnanoui.update_uis(src) - icon_state = "mixer1" + update_icon() else if(istype(B, /obj/item/storage/pill_bottle)) @@ -184,7 +190,7 @@ beaker.forceMove(get_turf(src)) beaker = null reagents.clear_reagents() - icon_state = "mixer0" + update_icon() else if(href_list["createpill"] || href_list["createpill_multiple"]) if(!condi) var/count = 1 @@ -372,7 +378,7 @@ /obj/machinery/chem_master/proc/chemical_safety_check(datum/reagents/R) var/all_safe = 1 for(var/datum/reagent/A in R.reagent_list) - if(!safe_chem_list.Find(A.id)) + if(!GLOB.safe_chem_list.Find(A.id)) all_safe = 0 return all_safe diff --git a/code/modules/reagents/chemistry/machinery/pandemic.dm b/code/modules/reagents/chemistry/machinery/pandemic.dm index 1d300767488..3a5b753217f 100644 --- a/code/modules/reagents/chemistry/machinery/pandemic.dm +++ b/code/modules/reagents/chemistry/machinery/pandemic.dm @@ -30,7 +30,6 @@ if(BL.data && BL.data["viruses"]) var/list/viruses = BL.data["viruses"] return viruses[index] - return null /obj/machinery/computer/pandemic/proc/GetResistancesByIndex(index) if(beaker && beaker.reagents) @@ -40,13 +39,11 @@ if(BL.data && BL.data["resistances"]) var/list/resistances = BL.data["resistances"] return resistances[index] - return null /obj/machinery/computer/pandemic/proc/GetVirusTypeByIndex(index) var/datum/disease/D = GetVirusByIndex(index) if(D) return D.GetDiseaseID() - return null /obj/machinery/computer/pandemic/proc/replicator_cooldown(waittime) wait = 1 @@ -160,7 +157,7 @@ if(archive_diseases[id]) var/datum/disease/advance/A = archive_diseases[id] A.AssignName(new_name) - for(var/datum/disease/advance/AD in active_diseases) + for(var/datum/disease/advance/AD in GLOB.active_diseases) AD.Refresh() updateUsrDialog() else if(href_list["print_form"]) @@ -175,7 +172,6 @@ return 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) @@ -319,12 +315,12 @@ popup.set_content(dat) popup.open(0) onclose(user, "pandemic") - return /obj/machinery/computer/pandemic/attackby(obj/item/I, mob/user, params) - if(istype(I, /obj/item/reagent_containers) && (I.flags & OPENCONTAINER)) - if(stat & (NOPOWER|BROKEN)) return + if(istype(I, /obj/item/reagent_containers) && (I.container_type & OPENCONTAINER)) + if(stat & (NOPOWER|BROKEN)) + return if(beaker) to_chat(user, "A beaker is already loaded into the machine!") return diff --git a/code/modules/reagents/chemistry/machinery/reagentgrinder.dm b/code/modules/reagents/chemistry/machinery/reagentgrinder.dm index 5948d29e4cd..9ea55dd5af7 100644 --- a/code/modules/reagents/chemistry/machinery/reagentgrinder.dm +++ b/code/modules/reagents/chemistry/machinery/reagentgrinder.dm @@ -112,7 +112,7 @@ if(default_unfasten_wrench(user, I)) return - if (istype(I, /obj/item/reagent_containers) && (I.flags & OPENCONTAINER) ) + if (istype(I, /obj/item/reagent_containers) && (I.container_type & OPENCONTAINER) ) if (!beaker) if(!user.drop_item()) return 1 diff --git a/code/modules/reagents/chemistry/readme.dm b/code/modules/reagents/chemistry/readme.dm index 1fe946a10d1..6c76d0a3a0f 100644 --- a/code/modules/reagents/chemistry/readme.dm +++ b/code/modules/reagents/chemistry/readme.dm @@ -238,12 +238,4 @@ About the Tools: It simply tells us how much to transfer when 'pouring' our reagents into something else. - atom/proc/is_open_container() - Checks atom/var/flags & OPENCONTAINER. - If this returns 1 , you can use syringes, beakers etc - to manipulate the contents of this object. - If it's 0, you'll need to write your own custom reagent - transfer code since you will not be able to use the standard - tools to manipulate it. - */ \ No newline at end of file diff --git a/code/modules/reagents/chemistry/reagents/drink_cold.dm b/code/modules/reagents/chemistry/reagents/drink_cold.dm index 1a7be3748b8..35b67fa2a8b 100644 --- a/code/modules/reagents/chemistry/reagents/drink_cold.dm +++ b/code/modules/reagents/chemistry/reagents/drink_cold.dm @@ -163,12 +163,12 @@ /datum/reagent/consumable/drink/cold/rewriter name = "Rewriter" - description = "The secert of the sanctuary of the Libarian..." + description = "The secret of the sanctuary of the Librarian..." id = "rewriter" color = "#485000" // rgb:72, 080, 0 drink_icon = "rewriter" drink_name = "Rewriter" - drink_desc = "The secert of the sanctuary of the Libarian..." + drink_desc = "The secret of the sanctuary of the Librarian..." taste_message = "coffee...soda?" /datum/reagent/consumable/drink/cold/rewriter/on_mob_life(mob/living/M) diff --git a/code/modules/reagents/chemistry/reagents/drinks.dm b/code/modules/reagents/chemistry/reagents/drinks.dm index b6b4a27e10d..be5e71d53bd 100644 --- a/code/modules/reagents/chemistry/reagents/drinks.dm +++ b/code/modules/reagents/chemistry/reagents/drinks.dm @@ -296,6 +296,7 @@ /datum/reagent/consumable/drink/coffee/overdose_process(mob/living/M, severity) if(volume > 45) M.Jitter(5) + return list(0, STATUS_UPDATE_NONE) /datum/reagent/consumable/drink/coffee/icecoffee name = "Iced Coffee" diff --git a/code/modules/reagents/chemistry/reagents/medicine.dm b/code/modules/reagents/chemistry/reagents/medicine.dm index bc6f8f66317..7007643e652 100644 --- a/code/modules/reagents/chemistry/reagents/medicine.dm +++ b/code/modules/reagents/chemistry/reagents/medicine.dm @@ -192,7 +192,7 @@ /datum/reagent/medicine/styptic_powder name = "Styptic Powder" id = "styptic_powder" - description = "Styptic (aluminium sulfate) powder helps control bleeding and heal physical wounds." + description = "Styptic (aluminum sulfate) powder helps control bleeding and heal physical wounds." reagent_state = LIQUID color = "#C8A5DC" metabolization_rate = 3 @@ -558,7 +558,7 @@ if(M.ear_damage <= 25) if(prob(30)) M.SetEarDeaf(0) - ..() + return ..() | update_flags /datum/reagent/medicine/atropine name = "Atropine" @@ -641,6 +641,7 @@ update_flags |= M.Weaken(3, FALSE) if(effect <= 15) M.emote("collapse") + return list(effect, update_flags) /datum/reagent/medicine/strange_reagent name = "Strange Reagent" diff --git a/code/modules/reagents/chemistry/reagents/misc.dm b/code/modules/reagents/chemistry/reagents/misc.dm index c86a839c4e2..eb78ee4e5f3 100644 --- a/code/modules/reagents/chemistry/reagents/misc.dm +++ b/code/modules/reagents/chemistry/reagents/misc.dm @@ -194,6 +194,11 @@ reagent_state = LIQUID color = "#3C3C3C" taste_message = "motor oil" + process_flags = ORGANIC | SYNTHETIC + +/datum/reagent/oil/reaction_turf(turf/T, volume) + if(volume >= 3 && !isspaceturf(T) && !locate(/obj/effect/decal/cleanable/blood/oil) in T) + new /obj/effect/decal/cleanable/blood/oil(T) /datum/reagent/iodine name = "Iodine" @@ -270,6 +275,13 @@ color = "#FFFFFF" taste_message = "the rainbow" +/datum/reagent/colorful_reagent/on_mob_life(mob/living/M) + if(ishuman(M)) + var/mob/living/carbon/human/H = M + if(!(NO_BLOOD in H.dna.species.species_traits) && !H.dna.species.exotic_blood) + H.dna.species.blood_color = "#[num2hex(rand(0, 255))][num2hex(rand(0, 255))][num2hex(rand(0, 255))]" + return ..() + /datum/reagent/colorful_reagent/reaction_mob(mob/living/simple_animal/M, method=TOUCH, volume) if(isanimal(M)) M.color = pick(random_color_list) @@ -333,8 +345,8 @@ if(ishuman(M)) var/mob/living/carbon/human/H = M var/obj/item/organ/external/head/head_organ = H.get_organ("head") - var/datum/sprite_accessory/tmp_hair_style = hair_styles_full_list["Very Long Hair"] - var/datum/sprite_accessory/tmp_facial_hair_style = facial_hair_styles_list["Very Long Beard"] + var/datum/sprite_accessory/tmp_hair_style = GLOB.hair_styles_full_list["Very Long Hair"] + var/datum/sprite_accessory/tmp_facial_hair_style = GLOB.facial_hair_styles_list["Very Long Beard"] if(head_organ.dna.species.name in tmp_hair_style.species_allowed) //If 'Very Long Hair' is a style the person's species can have, give it to them. head_organ.h_style = "Very Long Hair" diff --git a/code/modules/reagents/chemistry/reagents/pyrotechnic.dm b/code/modules/reagents/chemistry/reagents/pyrotechnic.dm index bc47e709823..857b15330d4 100644 --- a/code/modules/reagents/chemistry/reagents/pyrotechnic.dm +++ b/code/modules/reagents/chemistry/reagents/pyrotechnic.dm @@ -116,6 +116,12 @@ reagent_state = LIQUID color = "#FFA500" +/datum/reagent/sorium_vortex + name = "sorium_vortex" + id = "sorium_vortex" + reagent_state = LIQUID + color = "#FFA500" + /datum/reagent/liquid_dark_matter name = "Liquid Dark Matter" id = "liquid_dark_matter" @@ -124,6 +130,12 @@ color = "#800080" taste_message = "the end of the world" +/datum/reagent/ldm_vortex + name = "LDM Vortex" + id = "ldm_vortex" + reagent_state = LIQUID + color = "#800080" + /datum/reagent/blackpowder name = "Black Powder" id = "blackpowder" diff --git a/code/modules/reagents/chemistry/reagents/toxins.dm b/code/modules/reagents/chemistry/reagents/toxins.dm index d6813ee6f61..4bc534c6d8b 100644 --- a/code/modules/reagents/chemistry/reagents/toxins.dm +++ b/code/modules/reagents/chemistry/reagents/toxins.dm @@ -7,7 +7,7 @@ /datum/reagent/toxin/on_mob_life(mob/living/M) var/update_flags = STATUS_UPDATE_NONE - update_flags |= M.adjustToxLoss(2, FALSE) + update_flags |= M.adjustToxLoss(2*REAGENTS_EFFECT_MULTIPLIER, FALSE) return ..() | update_flags /datum/reagent/spider_venom diff --git a/code/modules/reagents/chemistry/recipes.dm b/code/modules/reagents/chemistry/recipes.dm index 28994d10fb2..281bed84b0e 100644 --- a/code/modules/reagents/chemistry/recipes.dm +++ b/code/modules/reagents/chemistry/recipes.dm @@ -38,11 +38,11 @@ var/list/chemical_mob_spawn_nicecritters = list() // and possible friendly mobs var/turf/T = get_turf(A) var/area/my_area = get_area(T) var/message = "A [reaction_name] reaction has occured in [my_area.name]. (JMP)" - message += " (VV)" + message += " ([ADMIN_VV(A,"VV")])" var/mob/M = get(A, /mob) if(M) - message += " - Carried By: [key_name_admin(M)](?) (FLW)" + message += " - Carried By: [key_name_admin(M)]([ADMIN_QUE(M,"?")]) ([ADMIN_FLW(M,"FLW")])" else message += " - Last Fingerprint: [(A.fingerprintslast ? A.fingerprintslast : "N/A")]" diff --git a/code/modules/reagents/chemistry/recipes/pyrotechnics.dm b/code/modules/reagents/chemistry/recipes/pyrotechnics.dm index a5d37cb8b60..7ab7d97dd63 100644 --- a/code/modules/reagents/chemistry/recipes/pyrotechnics.dm +++ b/code/modules/reagents/chemistry/recipes/pyrotechnics.dm @@ -97,20 +97,22 @@ /datum/chemical_reaction/sorium/on_reaction(datum/reagents/holder, created_volume) if(holder.has_reagent("stabilizing_agent")) return - holder.remove_reagent("sorium", created_volume) var/turf/simulated/T = get_turf(holder.my_atom) - goonchem_vortex(T, 1, 5, 6) + goonchem_vortex(T, 1, min(10, created_volume), min(11, created_volume + 1)) + holder.remove_reagent("sorium", created_volume) /datum/chemical_reaction/sorium_vortex name = "sorium_vortex" id = "sorium_vortex" - result = null + result = "sorium_vortex" required_reagents = list("sorium" = 1) + result_amount = 1 min_temp = 474 /datum/chemical_reaction/sorium_vortex/on_reaction(datum/reagents/holder, created_volume) var/turf/simulated/T = get_turf(holder.my_atom) - goonchem_vortex(T, 1, 5, 6) + goonchem_vortex(T, 1, min(10, created_volume), min(11, created_volume + 1)) + holder.remove_reagent("sorium_vortex", created_volume) /datum/chemical_reaction/liquid_dark_matter name = "Liquid Dark Matter" @@ -122,20 +124,22 @@ /datum/chemical_reaction/liquid_dark_matter/on_reaction(datum/reagents/holder, created_volume) if(holder.has_reagent("stabilizing_agent")) return - holder.remove_reagent("liquid_dark_matter", created_volume) var/turf/simulated/T = get_turf(holder.my_atom) - goonchem_vortex(T, 0, 5, 6) + goonchem_vortex(T, 0, min(10, created_volume), min(11, created_volume + 1)) + holder.remove_reagent("liquid_dark_matter", created_volume) /datum/chemical_reaction/ldm_vortex name = "LDM Vortex" id = "ldm_vortex" - result = null + result = "ldm_vortex" required_reagents = list("liquid_dark_matter" = 1) + result_amount = 1 min_temp = 474 /datum/chemical_reaction/ldm_vortex/on_reaction(datum/reagents/holder, created_volume) var/turf/simulated/T = get_turf(holder.my_atom) - goonchem_vortex(T, 0, 5, 6) + goonchem_vortex(T, 0, min(10, created_volume), min(11, created_volume + 1)) + holder.remove_reagent("ldm_vortex", created_volume) /datum/chemical_reaction/blackpowder name = "Black Powder" @@ -157,9 +161,7 @@ /datum/chemical_reaction/blackpowder_explosion/on_reaction(datum/reagents/holder, created_volume) var/location = get_turf(holder.my_atom) - var/datum/effect_system/spark_spread/s = new /datum/effect_system/spark_spread - s.set_up(2, 1, location) - s.start() + do_sparks(2, 1, location) sleep(rand(20,30)) blackpowder_detonate(holder, created_volume) @@ -186,9 +188,7 @@ datum/chemical_reaction/flash_powder if(holder.has_reagent("stabilizing_agent")) return var/location = get_turf(holder.my_atom) - var/datum/effect_system/spark_spread/s = new /datum/effect_system/spark_spread - s.set_up(2, 1, location) - s.start() + do_sparks(2, 1, location) for(var/mob/living/carbon/C in viewers(5, location)) if(C.flash_eyes()) if(get_dist(C, location) < 4) @@ -206,9 +206,7 @@ datum/chemical_reaction/flash_powder /datum/chemical_reaction/flash_powder_flash/on_reaction(datum/reagents/holder, created_volume) var/location = get_turf(holder.my_atom) - var/datum/effect_system/spark_spread/s = new /datum/effect_system/spark_spread - s.set_up(2, 1, location) - s.start() + do_sparks(2, 1, location) for(var/mob/living/carbon/C in viewers(5, location)) if(C.flash_eyes()) if(get_dist(C, location) < 4) @@ -417,7 +415,7 @@ datum/chemical_reaction/flash_powder /datum/chemical_reaction/shock_explosion/on_reaction(datum/reagents/holder, created_volume) var/turf/T = get_turf(holder.my_atom) - for(var/mob/living/carbon/C in view(6, T)) + for(var/mob/living/carbon/C in view(min(8, round(created_volume * 2)), T)) C.Beam(T,icon_state="lightning[rand(1,12)]",icon='icons/effects/effects.dmi',time=5) //What? Why are we beaming from the mob to the turf? Turf to mob generates really odd results. C.electrocute_act(3.5, "electrical blast") holder.del_reagent("teslium") //Clear all remaining Teslium and Uranium, but leave all other reagents untouched. diff --git a/code/modules/reagents/chemistry/recipes/slime_extracts.dm b/code/modules/reagents/chemistry/recipes/slime_extracts.dm index 4df7a525b88..d565ef624d2 100644 --- a/code/modules/reagents/chemistry/recipes/slime_extracts.dm +++ b/code/modules/reagents/chemistry/recipes/slime_extracts.dm @@ -564,7 +564,7 @@ /datum/chemical_reaction/slimecrystal/on_reaction(datum/reagents/holder, created_volume) feedback_add_details("slime_cores_used","[type]") if(holder.my_atom) - var/obj/item/ore/bluespace_crystal/BC = new(get_turf(holder.my_atom)) + var/obj/item/stack/ore/bluespace_crystal/BC = new(get_turf(holder.my_atom)) BC.visible_message("The [BC.name] appears out of thin air!") //Cerulean diff --git a/code/modules/reagents/chemistry/recipes/toxins.dm b/code/modules/reagents/chemistry/recipes/toxins.dm index 462402c4317..0697ccd50d4 100644 --- a/code/modules/reagents/chemistry/recipes/toxins.dm +++ b/code/modules/reagents/chemistry/recipes/toxins.dm @@ -144,9 +144,7 @@ /datum/chemical_reaction/teslium/on_reaction(datum/reagents/holder, created_volume) var/location = get_turf(holder.my_atom) - var/datum/effect_system/spark_spread/s = new /datum/effect_system/spark_spread - s.set_up(6, 1, location) - s.start() + do_sparks(6, 1, location) /datum/chemical_reaction/mutagen name = "Unstable mutagen" diff --git a/code/modules/reagents/reagent_containers.dm b/code/modules/reagents/reagent_containers.dm index e3e0daee333..258bf98468d 100644 --- a/code/modules/reagents/reagent_containers.dm +++ b/code/modules/reagents/reagent_containers.dm @@ -61,14 +61,6 @@ /obj/item/reagent_containers/afterattack(obj/target, mob/user , flag) return -/obj/item/reagent_containers/proc/reagentlist() //Return reagents in a reagent_container, default to source - var/data - if(reagents && reagents.reagent_list && reagents.reagent_list.len) //find a reagent list if there is and check if it has entries - for(var/datum/reagent/R in reagents.reagent_list) //no reagents will be left behind - data += "[R.id]([R.volume] units); " //Using IDs because SOME chemicals(I'm looking at you, chlorhydrate-beer) have the same names as other chemicals. - return data - else return "No reagents" - /obj/item/reagent_containers/wash(mob/user, atom/source) if(is_open_container()) if(reagents.total_volume >= volume) diff --git a/code/modules/reagents/reagent_containers/borghydro.dm b/code/modules/reagents/reagent_containers/borghydro.dm index ad8b3438ee4..37e9e2d2bc0 100644 --- a/code/modules/reagents/reagent_containers/borghydro.dm +++ b/code/modules/reagents/reagent_containers/borghydro.dm @@ -82,10 +82,10 @@ R.add_reagent(M) if(M.reagents) - var/datum/reagent/injected = chemical_reagents_list[reagent_ids[mode]] + var/datum/reagent/injected = GLOB.chemical_reagents_list[reagent_ids[mode]] var/contained = injected.name var/trans = R.trans_to(M, amount_per_transfer_from_this) - add_attack_logs(M, user, "Injected with [name] containing [contained], transfered [trans] units") + add_attack_logs(user, M, "Injected with [name] containing [contained], transfered [trans] units") M.LAssailant = user to_chat(user, "[trans] units injected. [R.total_volume] units remaining.") return @@ -97,7 +97,7 @@ mode = 1 charge_tick = 0 //Prevents wasted chems/cell charge if you're cycling through modes. - var/datum/reagent/R = chemical_reagents_list[reagent_ids[mode]] + var/datum/reagent/R = GLOB.chemical_reagents_list[reagent_ids[mode]] to_chat(user, "Synthesizer is now producing '[R.name]'.") return diff --git a/code/modules/reagents/reagent_containers/bottle.dm b/code/modules/reagents/reagent_containers/bottle.dm index 22332bd4103..337b78882cf 100644 --- a/code/modules/reagents/reagent_containers/bottle.dm +++ b/code/modules/reagents/reagent_containers/bottle.dm @@ -9,7 +9,7 @@ item_state = "atoxinbottle" amount_per_transfer_from_this = 10 possible_transfer_amounts = list(5,10,15,25,30) - flags = OPENCONTAINER + container_type = OPENCONTAINER volume = 30 /obj/item/reagent_containers/glass/bottle/on_reagent_change() diff --git a/code/modules/reagents/reagent_containers/dropper.dm b/code/modules/reagents/reagent_containers/dropper.dm index 6198313bf88..19fb197c077 100644 --- a/code/modules/reagents/reagent_containers/dropper.dm +++ b/code/modules/reagents/reagent_containers/dropper.dm @@ -108,4 +108,37 @@ icon_state = "pipette" amount_per_transfer_from_this = 1 possible_transfer_amounts = list(0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9, 1) - volume = 1 \ No newline at end of file + volume = 1 + +//Syndicate item. Virus transmitting mini hypospray +/obj/item/reagent_containers/dropper/precision/viral_injector + +/obj/item/reagent_containers/dropper/precision/viral_injector/attack(mob/living/M, mob/living/user, def_zone) + if(M.can_inject(user, 1)) + to_chat(user, "You stab [M] with the [src].") + if(reagents.total_volume && M.reagents) + var/list/injected = list() + for(var/datum/reagent/R in reagents.reagent_list) + injected += R.name + var/datum/reagent/blood/B = R + + if(istype(B) && B.data["viruses"]) + var/virList = list() + for(var/dis in B.data["viruses"]) + var/datum/disease/D = dis + var/virusData = D.name + var/english_symptoms = list() + var/datum/disease/advance/A = D + if(A) + for(var/datum/symptom/S in A.symptoms) + english_symptoms += S.name + virusData += " ([english_list(english_symptoms)])" + virList += virusData + var/str = english_list(virList) + add_attack_logs(user, M, "Infected with [str].") + + reagents.reaction(M, INGEST, reagents.total_volume) + reagents.trans_to(M, 1) + + var/contained = english_list(injected) + add_attack_logs(user, M, "Injected with [src] containing ([contained])") diff --git a/code/modules/reagents/reagent_containers/glass_containers.dm b/code/modules/reagents/reagent_containers/glass_containers.dm index d20ef6f82ee..69030fafa74 100644 --- a/code/modules/reagents/reagent_containers/glass_containers.dm +++ b/code/modules/reagents/reagent_containers/glass_containers.dm @@ -11,7 +11,7 @@ amount_per_transfer_from_this = 10 possible_transfer_amounts = list(5,10,15,25,30,50) volume = 50 - flags = OPENCONTAINER + container_type = OPENCONTAINER var/label_text = "" // the fucking asshole who designed this can go die in a fire - Iamgoofball @@ -59,10 +59,10 @@ ..() if(is_open_container()) to_chat(usr, "You put the lid on [src].") - flags ^= OPENCONTAINER + container_type ^= REFILLABLE | DRAINABLE else to_chat(usr, "You take the lid off [src].") - flags |= OPENCONTAINER + container_type |= REFILLABLE | DRAINABLE update_icon() /obj/item/reagent_containers/glass/afterattack(obj/target, mob/user, proximity) @@ -262,7 +262,7 @@ volume = 100 amount_per_transfer_from_this = 10 possible_transfer_amounts = list(5,10,15,25,30,50,100) - flags = OPENCONTAINER + container_type = OPENCONTAINER /obj/item/reagent_containers/glass/beaker/vial name = "vial" @@ -272,7 +272,7 @@ volume = 25 amount_per_transfer_from_this = 10 possible_transfer_amounts = list(5,10,15,25) - flags = OPENCONTAINER + container_type = OPENCONTAINER can_assembly = 0 /obj/item/reagent_containers/glass/beaker/drugs @@ -282,7 +282,7 @@ amount_per_transfer_from_this = 2 possible_transfer_amounts = 2 volume = 10 - flags = OPENCONTAINER + container_type = OPENCONTAINER can_assembly = 0 /obj/item/reagent_containers/glass/beaker/noreact @@ -293,7 +293,7 @@ volume = 50 amount_per_transfer_from_this = 10 origin_tech = "materials=2;engineering=3;plasmatech=3" - flags = OPENCONTAINER + container_type = OPENCONTAINER /obj/item/reagent_containers/glass/beaker/noreact/New() ..() @@ -307,7 +307,7 @@ volume = 300 amount_per_transfer_from_this = 10 possible_transfer_amounts = list(5,10,15,25,30,50,100,300) - flags = OPENCONTAINER + container_type = OPENCONTAINER origin_tech = "bluespace=5;materials=4;plasmatech=4" /obj/item/reagent_containers/glass/beaker/cryoxadone @@ -337,7 +337,7 @@ volume = 120 armor = list(melee = 10, bullet = 0, laser = 0, energy = 0, bomb = 0, bio = 0, rad = 0) slot_flags = SLOT_HEAD - flags = OPENCONTAINER + container_type = OPENCONTAINER /obj/item/reagent_containers/glass/bucket/equipped(mob/user, slot) ..() diff --git a/code/modules/reagents/reagent_containers/hypospray.dm b/code/modules/reagents/reagent_containers/hypospray.dm index ced02f2e48f..9bb3e41e4ec 100644 --- a/code/modules/reagents/reagent_containers/hypospray.dm +++ b/code/modules/reagents/reagent_containers/hypospray.dm @@ -11,7 +11,7 @@ amount_per_transfer_from_this = 5 volume = 30 possible_transfer_amounts = list(1,2,3,4,5,10,15,20,25,30) - flags = OPENCONTAINER + container_type = OPENCONTAINER slot_flags = SLOT_BELT var/ignore_flags = FALSE var/emagged = FALSE @@ -52,7 +52,7 @@ if(safety_hypo && !emagged) var/found_forbidden_reagent = FALSE for(var/datum/reagent/R in reagents.reagent_list) - if(!safe_chem_list.Find(R.id)) + if(!GLOB.safe_chem_list.Find(R.id)) reagents.del_reagent(R.id) found_forbidden_reagent = TRUE if(found_forbidden_reagent) diff --git a/code/modules/reagents/reagent_containers/spray.dm b/code/modules/reagents/reagent_containers/spray.dm index 02ab4408acb..7c0823c2497 100644 --- a/code/modules/reagents/reagent_containers/spray.dm +++ b/code/modules/reagents/reagent_containers/spray.dm @@ -4,7 +4,8 @@ icon = 'icons/obj/janitor.dmi' icon_state = "cleaner" item_state = "cleaner" - flags = OPENCONTAINER | NOBLUDGEON + flags = NOBLUDGEON + container_type = OPENCONTAINER slot_flags = SLOT_BELT throwforce = 0 w_class = WEIGHT_CLASS_SMALL diff --git a/code/modules/reagents/reagent_containers/syringes.dm b/code/modules/reagents/reagent_containers/syringes.dm index 38478abd0e7..654dff53b5e 100644 --- a/code/modules/reagents/reagent_containers/syringes.dm +++ b/code/modules/reagents/reagent_containers/syringes.dm @@ -16,6 +16,7 @@ volume = 15 w_class = WEIGHT_CLASS_TINY sharp = 1 + container_type = TRANSPARENT var/busy = 0 var/mode = SYRINGE_DRAW var/projectile_type = /obj/item/projectile/bullet/dart/syringe @@ -78,7 +79,7 @@ switch(mode) if(SYRINGE_DRAW) - if(reagents.total_volume >= reagents.maximum_volume) + if(reagents.holder_full()) to_chat(user, "The syringe is full.") return @@ -91,7 +92,7 @@ if(!do_mob(user, target)) busy = 0 return - if(reagents.total_volume >= reagents.maximum_volume) + if(reagents.holder_full()) return busy = 0 if(L.transfer_blood_to(src, drawn_amount)) @@ -104,14 +105,14 @@ to_chat(user, "[target] is empty!") return - if(!target.is_open_container() && !istype(target,/obj/structure/reagent_dispensers) && !istype(target,/obj/item/slime_extract)) + if(!target.is_drawable()) to_chat(user, "You cannot directly remove reagents from [target]!") return var/trans = target.reagents.trans_to(src, amount_per_transfer_from_this) // transfer from, transfer to - who cares? to_chat(user, "You fill [src] with [trans] units of the solution.") - if(reagents.total_volume >= reagents.maximum_volume) + if(reagents.holder_full()) mode=!mode update_icon() @@ -120,7 +121,7 @@ to_chat(user, "[src] is empty.") return - if(!target.is_open_container() && !ismob(target) && !istype(target, /obj/item/reagent_containers/food) && !istype(target, /obj/item/slime_extract) && !istype(target, /obj/item/clothing/mask/cigarette) && !istype(target, /obj/item/storage/fancy/cigarettes)) + if(!L && !target.is_injectable()) to_chat(user, "You cannot directly fill [target]!") return if(target.reagents.total_volume >= target.reagents.maximum_volume) diff --git a/code/modules/reagents/reagent_dispenser.dm b/code/modules/reagents/reagent_dispenser.dm index bcbcad6bc98..edbc32f36a1 100644 --- a/code/modules/reagents/reagent_dispenser.dm +++ b/code/modules/reagents/reagent_dispenser.dm @@ -6,28 +6,22 @@ density = 1 anchored = 0 pressure_resistance = 2*ONE_ATMOSPHERE + container_type = DRAINABLE | AMOUNT_VISIBLE var/tank_volume = 1000 //In units, how much the dispenser can hold var/reagent_id = "water" //The ID of the reagent that the dispenser uses var/lastrigger = "" // The last person to rig this fuel tank - Stored with the object. Only the last person matter for investigation -/obj/structure/reagent_dispensers/attackby(obj/item/W, mob/user, params) - return +/obj/structure/reagent_dispensers/attackby(obj/item/I, mob/user, params) + if(I.is_refillable()) + return FALSE //so we can refill them via their afterattack. + . = ..() /obj/structure/reagent_dispensers/New() create_reagents(tank_volume) reagents.add_reagent(reagent_id, tank_volume) ..() -/obj/structure/reagent_dispensers/examine(mob/user) - if(!..(user, 2)) - return - if(reagents.total_volume) - to_chat(user, "It has [reagents.total_volume] units left.") - else - to_chat(user, "It's empty.") - - /obj/structure/reagent_dispensers/proc/boom() visible_message("[src] ruptures!") chem_splash(loc, 5, list(reagents)) @@ -62,6 +56,13 @@ tank_volume = 100000 +/obj/structure/reagent_dispensers/oil + name = "oil tank" + desc = "A tank of oil, commonly used to by robotics to fix leaking IPCs or just to loosen up those rusted underused parts." + icon_state = "oil" + reagent_id = "oil" + tank_volume = 3000 + /obj/structure/reagent_dispensers/fueltank name = "fuel tank" desc = "A tank full of industrial welding fuel. Do not consume." diff --git a/code/modules/recycling/disposal.dm b/code/modules/recycling/disposal.dm index 78e7ad47f57..f6474c4a16b 100644 --- a/code/modules/recycling/disposal.dm +++ b/code/modules/recycling/disposal.dm @@ -46,7 +46,7 @@ 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) +/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 @@ -511,154 +511,152 @@ var/tomail = 0 //changes if contains wrapped package var/hasmob = 0 //If it contains a mob - Destroy() - QDEL_NULL(gas) - active = 0 - return ..() +/obj/structure/disposalholder/Destroy() + QDEL_NULL(gas) + active = 0 + return ..() // initialize a holder from the contents of a disposal unit - proc/init(var/obj/machinery/disposal/D) - gas = D.air_contents// transfer gas resv. into holder object +/obj/structure/disposalholder/proc/init(var/obj/machinery/disposal/D) + gas = D.air_contents// transfer gas resv. into holder object - //Check for any living mobs trigger hasmob. - //hasmob effects whether the package goes to cargo or its tagged destination. - for(var/mob/living/M in D) - if(M && M.stat != 2 && !istype(M,/mob/living/silicon/robot/drone)) - hasmob = 1 + //Check for any living mobs trigger hasmob. + //hasmob effects whether the package goes to cargo or its tagged destination. + for(var/mob/living/M in D) + if(M && M.stat != 2 && !istype(M,/mob/living/silicon/robot/drone)) + hasmob = 1 - //Checks 1 contents level deep. This means that players can be sent through disposals... - //...but it should require a second person to open the package. (i.e. person inside a wrapped locker) - for(var/obj/O in D) - if(O.contents) - for(var/mob/living/M in O.contents) - if(M && M.stat != 2 && !istype(M,/mob/living/silicon/robot/drone)) - hasmob = 1 + //Checks 1 contents level deep. This means that players can be sent through disposals... + //...but it should require a second person to open the package. (i.e. person inside a wrapped locker) + for(var/obj/O in D) + if(O.contents) + for(var/mob/living/M in O.contents) + if(M && M.stat != 2 && !istype(M,/mob/living/silicon/robot/drone)) + hasmob = 1 - // now everything inside the disposal gets put into the holder - // note AM since can contain mobs or objs - for(var/atom/movable/AM in D) - AM.loc = src - if(istype(AM, /mob/living/carbon/human)) - var/mob/living/carbon/human/H = AM - if(FAT in H.mutations) // is a human and fat? - has_fat_guy = 1 // set flag on holder - if(istype(AM, /obj/structure/bigDelivery) && !hasmob) - var/obj/structure/bigDelivery/T = AM - destinationTag = T.sortTag - if(istype(AM, /obj/item/smallDelivery) && !hasmob) - var/obj/item/smallDelivery/T = AM - destinationTag = T.sortTag - //Drones can mail themselves through maint. - if(istype(AM, /mob/living/silicon/robot/drone)) - var/mob/living/silicon/robot/drone/drone = AM - destinationTag = drone.mail_destination - if(istype(AM, /obj/item/shippingPackage) && !hasmob) - var/obj/item/shippingPackage/sp = AM - if(sp.sealed) //only sealed packages get delivered to their intended destination - destinationTag = sp.sortTag + // now everything inside the disposal gets put into the holder + // note AM since can contain mobs or objs + for(var/atom/movable/AM in D) + AM.loc = src + if(istype(AM, /mob/living/carbon/human)) + var/mob/living/carbon/human/H = AM + if(FAT in H.mutations) // is a human and fat? + has_fat_guy = 1 // set flag on holder + if(istype(AM, /obj/structure/bigDelivery) && !hasmob) + var/obj/structure/bigDelivery/T = AM + destinationTag = T.sortTag + if(istype(AM, /obj/item/smallDelivery) && !hasmob) + var/obj/item/smallDelivery/T = AM + destinationTag = T.sortTag + //Drones can mail themselves through maint. + if(istype(AM, /mob/living/silicon/robot/drone)) + var/mob/living/silicon/robot/drone/drone = AM + destinationTag = drone.mail_destination + if(istype(AM, /obj/item/shippingPackage) && !hasmob) + var/obj/item/shippingPackage/sp = AM + if(sp.sealed) //only sealed packages get delivered to their intended destination + destinationTag = sp.sortTag // start the movement process // argument is the disposal unit the holder started in - proc/start(var/obj/machinery/disposal/D) - if(!D.trunk) - D.expel(src) // no trunk connected, so expel immediately - return - - loc = D.trunk - active = 1 - dir = DOWN - spawn(1) - move() // spawn off the movement process - +/obj/structure/disposalholder/proc/start(var/obj/machinery/disposal/D) + if(!D.trunk) + D.expel(src) // no trunk connected, so expel immediately return + loc = D.trunk + active = 1 + dir = DOWN + spawn(1) + move() // spawn off the movement process + + return + // movement process, persists while holder is moving through pipes - proc/move() - var/obj/structure/disposalpipe/last - while(active) - /* 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, TRUE, "Blunt Trauma") */ //horribly maim any living creature jumping down disposals. c'est la vie +/obj/structure/disposalholder/proc/move() + var/obj/structure/disposalpipe/last + while(active) + /* 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 - if(has_fat_guy && prob(2)) // chance of becoming stuck per segment if contains a fat guy - active = 0 - // find the fat guys - for(var/mob/living/carbon/human/H in src) + if(has_fat_guy && prob(2)) // chance of becoming stuck per segment if contains a fat guy + active = 0 + // find the fat guys + for(var/mob/living/carbon/human/H in src) - break - sleep(1) // was 1 - var/obj/structure/disposalpipe/curr = loc - last = curr - curr = curr.transfer(src) - if(!curr) - last.expel(src, loc, dir) + break + sleep(1) // was 1 + var/obj/structure/disposalpipe/curr = loc + last = curr + curr = curr.transfer(src) + if(!curr) + last.expel(src, loc, dir) - // - if(!(count--)) - active = 0 - return + // + if(!(count--)) + active = 0 + return // find the turf which should contain the next pipe - proc/nextloc() - return get_step(loc,dir) +/obj/structure/disposalholder/proc/nextloc() + return get_step(loc,dir) // find a matching pipe on a turf - proc/findpipe(var/turf/T) - - if(!T) - return null - - var/fdir = turn(dir, 180) // flip the movement direction - for(var/obj/structure/disposalpipe/P in T) - if(fdir & P.dpdir) // find pipe direction mask that matches flipped dir - return P - // if no matching pipe, return null +/obj/structure/disposalholder/proc/findpipe(var/turf/T) + if(!T) return null + var/fdir = turn(dir, 180) // flip the movement direction + for(var/obj/structure/disposalpipe/P in T) + if(fdir & P.dpdir) // find pipe direction mask that matches flipped dir + return P + // if no matching pipe, return null + return null + // merge two holder objects // used when a a holder meets a stuck holder - proc/merge(var/obj/structure/disposalholder/other) - for(var/atom/movable/AM in other) - AM.loc = src // move everything in other holder to this one - if(ismob(AM)) - var/mob/M = AM - if(M.client) // if a client mob, update eye to follow this holder - M.client.eye = src +/obj/structure/disposalholder/proc/merge(var/obj/structure/disposalholder/other) + for(var/atom/movable/AM in other) + AM.loc = src // move everything in other holder to this one + if(ismob(AM)) + var/mob/M = AM + if(M.client) // if a client mob, update eye to follow this holder + M.client.eye = src - if(other.has_fat_guy) - has_fat_guy = 1 - qdel(other) + if(other.has_fat_guy) + has_fat_guy = 1 + qdel(other) // called when player tries to move while in a pipe - relaymove(mob/user as mob) +/obj/structure/disposalholder/relaymove(mob/user as mob) + if(!istype(user,/mob/living)) + return - if(!istype(user,/mob/living)) - return + var/mob/living/U = user - var/mob/living/U = user + if(U.stat || U.last_special <= world.time) + return - if(U.stat || U.last_special <= world.time) - return + U.last_special = world.time+100 - U.last_special = world.time+100 + if(src.loc) + for(var/mob/M in hearers(src.loc.loc)) + to_chat(M, "CLONG, clong!") - if(src.loc) - for(var/mob/M in hearers(src.loc.loc)) - to_chat(M, "CLONG, clong!") - - playsound(src.loc, 'sound/effects/clang.ogg', 50, 0, 0) + playsound(src.loc, 'sound/effects/clang.ogg', 50, 0, 0) // called to vent all gas in holder to a location - proc/vent_gas(var/atom/location) - if(location) - location.assume_air(gas) // vent all gas to turf - air_update_turf() - return +/obj/structure/disposalholder/proc/vent_gas(var/atom/location) + if(location) + location.assume_air(gas) // vent all gas to turf + air_update_turf() + return // Disposal pipes @@ -1000,44 +998,44 @@ var/negdir = 0 var/sortdir = 0 - proc/updatedesc() - desc = "An underfloor disposal pipe with a package sorting mechanism." - if(sortType>0) - var/tag = uppertext(TAGGERLOCATIONS[sortType]) - desc += "\nIt's tagged with [tag]" +/obj/structure/disposalpipe/sortjunction/proc/updatedesc() + desc = "An underfloor disposal pipe with a package sorting mechanism." + if(sortType>0) + var/tag = uppertext(GLOB.TAGGERLOCATIONS[sortType]) + desc += "\nIt's tagged with [tag]" - proc/updatedir() - posdir = dir - negdir = turn(posdir, 180) +/obj/structure/disposalpipe/sortjunction/proc/updatedir() + posdir = dir + negdir = turn(posdir, 180) - if(icon_state == "pipe-j1s") - sortdir = turn(posdir, -90) - else - icon_state = "pipe-j2s" - sortdir = turn(posdir, 90) + if(icon_state == "pipe-j1s") + sortdir = turn(posdir, -90) + else + icon_state = "pipe-j2s" + sortdir = turn(posdir, 90) - dpdir = sortdir | posdir | negdir + dpdir = sortdir | posdir | negdir - New() - ..() - updatedir() - updatedesc() - update() +/obj/structure/disposalpipe/sortjunction/New() + ..() + updatedir() + updatedesc() + update() + return + +/obj/structure/disposalpipe/sortjunction/attackby(var/obj/item/I, var/mob/user, params) + if(..()) return - attackby(var/obj/item/I, var/mob/user, params) - if(..()) - return + if(istype(I, /obj/item/destTagger)) + var/obj/item/destTagger/O = I - if(istype(I, /obj/item/destTagger)) - var/obj/item/destTagger/O = I - - if(O.currTag > 0)// Tag set - sortType = O.currTag - playsound(src.loc, 'sound/machines/twobeep.ogg', 100, 1) - var/tag = uppertext(TAGGERLOCATIONS[O.currTag]) - to_chat(user, "Changed filter to [tag]") - updatedesc() + if(O.currTag > 0)// Tag set + sortType = O.currTag + playsound(src.loc, 'sound/machines/twobeep.ogg', 100, 1) + var/tag = uppertext(GLOB.TAGGERLOCATIONS[O.currTag]) + to_chat(user, "Changed filter to [tag]") + updatedesc() // next direction to move @@ -1045,61 +1043,59 @@ // if coming in from posdir, then flip around and go back to posdir // if coming in from sortdir, go to posdir - nextdir(var/fromdir, var/sortTag) - //var/flipdir = turn(fromdir, 180) - if(fromdir != sortdir) // probably came from the negdir +/obj/structure/disposalpipe/sortjunction/nextdir(var/fromdir, var/sortTag) + //var/flipdir = turn(fromdir, 180) + if(fromdir != sortdir) // probably came from the negdir - if(src.sortType == sortTag) //if destination matches filtered type... - return sortdir // exit through sortdirection - else - return posdir - else // came from sortdir - // so go with the flow to positive direction + if(src.sortType == sortTag) //if destination matches filtered type... + return sortdir // exit through sortdirection + else return posdir + else // came from sortdir + // so go with the flow to positive direction + return posdir - transfer(var/obj/structure/disposalholder/H) - var/nextdir = nextdir(H.dir, H.destinationTag) - H.dir = nextdir - var/turf/T = H.nextloc() - var/obj/structure/disposalpipe/P = H.findpipe(T) +/obj/structure/disposalpipe/sortjunction/transfer(var/obj/structure/disposalholder/H) + var/nextdir = nextdir(H.dir, H.destinationTag) + H.dir = nextdir + var/turf/T = H.nextloc() + var/obj/structure/disposalpipe/P = H.findpipe(T) - if(P) - // find other holder in next loc, if inactive merge it with current - var/obj/structure/disposalholder/H2 = locate() in P - if(H2 && !H2.active) - H.merge(H2) + if(P) + // find other holder in next loc, if inactive merge it with current + var/obj/structure/disposalholder/H2 = locate() in P + if(H2 && !H2.active) + H.merge(H2) + H.loc = P + else // if wasn't a pipe, then set loc to turf + H.loc = T + return null - H.loc = P - else // if wasn't a pipe, then set loc to turf - H.loc = T - return null - - return P + return P //a three-way junction that sorts objects destined for the mail office mail table (tomail = 1) /obj/structure/disposalpipe/wrapsortjunction - desc = "An underfloor disposal pipe which sorts wrapped and unwrapped objects." icon_state = "pipe-j1s" var/posdir = 0 var/negdir = 0 var/sortdir = 0 - New() - ..() - posdir = dir - if(icon_state == "pipe-j1s") - sortdir = turn(posdir, -90) - negdir = turn(posdir, 180) - else - icon_state = "pipe-j2s" - sortdir = turn(posdir, 90) - negdir = turn(posdir, 180) - dpdir = sortdir | posdir | negdir +/obj/structure/disposalpipe/wrapsortjunction/New() + ..() + posdir = dir + if(icon_state == "pipe-j1s") + sortdir = turn(posdir, -90) + negdir = turn(posdir, 180) + else + icon_state = "pipe-j2s" + sortdir = turn(posdir, 90) + negdir = turn(posdir, 180) + dpdir = sortdir | posdir | negdir - update() - return + update() + return // next direction to move @@ -1107,40 +1103,34 @@ // if coming in from posdir, then flip around and go back to posdir // if coming in from sortdir, go to posdir - nextdir(var/fromdir, var/istomail) - //var/flipdir = turn(fromdir, 180) - if(fromdir != sortdir) // probably came from the negdir - - if(istomail) //if destination matches filtered type... - return sortdir // exit through sortdirection - else - return posdir - else // came from sortdir - // so go with the flow to positive direction +/obj/structure/disposalpipe/wrapsortjunction/nextdir(var/fromdir, var/istomail) + //var/flipdir = turn(fromdir, 180) + if(fromdir != sortdir) // probably came from the negdir + if(istomail) //if destination matches filtered type... + return sortdir // exit through sortdirection + else return posdir + else // came from sortdir + return posdir // so go with the flow to positive direction - transfer(var/obj/structure/disposalholder/H) - var/nextdir = nextdir(H.dir, H.tomail) - H.dir = nextdir - var/turf/T = H.nextloc() - var/obj/structure/disposalpipe/P = H.findpipe(T) - - if(P) - // find other holder in next loc, if inactive merge it with current - var/obj/structure/disposalholder/H2 = locate() in P - if(H2 && !H2.active) - H.merge(H2) - - H.loc = P - else // if wasn't a pipe, then set loc to turf - H.loc = T - return null - - return P - +/obj/structure/disposalpipe/wrapsortjunction/transfer(var/obj/structure/disposalholder/H) + var/nextdir = nextdir(H.dir, H.tomail) + H.dir = nextdir + var/turf/T = H.nextloc() + var/obj/structure/disposalpipe/P = H.findpipe(T) + if(P) + // find other holder in next loc, if inactive merge it with current + var/obj/structure/disposalholder/H2 = locate() in P + if(H2 && !H2.active) + H.merge(H2) + H.loc = P + else // if wasn't a pipe, then set loc to turf + H.loc = T + return null + return P //a trunk joining to a disposal bin or outlet on the same turf /obj/structure/disposalpipe/trunk @@ -1203,18 +1193,6 @@ /obj/structure/disposalpipe/trunk/attackby(var/obj/item/I, var/mob/user, params) //Disposal bins or chutes - /* - These shouldn't be required - var/obj/machinery/disposal/D = locate() in src.loc - if(D && D.anchored) - return - - //Disposal outlet - var/obj/structure/disposaloutlet/O = locate() in src.loc - if(O && O.anchored) - return - */ - //Disposal constructors var/obj/structure/disposalconstruct/C = locate() in src.loc if(C && C.anchored) @@ -1242,24 +1220,27 @@ // if not entering from disposal bin, // transfer to linked object (outlet or bin) -/obj/structure/disposalpipe/trunk/transfer(var/obj/structure/disposalholder/H) - +/obj/structure/disposalpipe/trunk/transfer(obj/structure/disposalholder/H) + if(!H) + return if(H.dir == DOWN) // we just entered from a disposer return ..() // so do base transfer proc // otherwise, go to the linked object - if(linked) - var/obj/structure/disposaloutlet/O = linked - if(istype(O) && (H)) - O.expel(H) // expel at outlet - else - var/obj/machinery/disposal/D = linked - if(H) - D.expel(H) // expel at disposal - else - if(H) - src.expel(H, src.loc, 0) // expel at turf - return null - + if(!linked) + expel(H, loc, FALSE) // expel at turf + else if(istype(linked, /obj/structure/disposaloutlet)) + var/obj/structure/disposaloutlet/DO = linked + for(var/atom/movable/AM in H) + AM.forceMove(DO) + qdel(H) + H.vent_gas(loc) + DO.expel() + else if(istype(linked, /obj/machinery/disposal)) + var/obj/machinery/disposal/D = linked + H.forceMove(D) + D.expel(H) // expel at disposal + else //just in case + expel(H, loc, FALSE) // nextdir /obj/structure/disposalpipe/trunk/nextdir(var/fromdir) @@ -1275,18 +1256,13 @@ // i.e. will be treated as an empty turf desc = "A broken piece of disposal pipe." - New() - ..() - update() - return +/obj/structure/disposalpipe/broken/New() + ..() + update() + return - // called when welded - // for broken pipe, remove and turn into scrap - - welded() -// var/obj/item/scrap/S = new(src.loc) -// S.set_components(200,0,0) - qdel(src) +/obj/structure/disposalpipe/broken/welded() + qdel(src) // the disposal outlet machine @@ -1310,24 +1286,29 @@ if(T) T.nicely_link_to_other_stuff(src) - // expel the contents of the holder object, then delete it - // called when the holder exits the outlet -/obj/structure/disposaloutlet/proc/expel(var/obj/structure/disposalholder/H, animation = 1) +/obj/structure/disposaloutlet/Destroy() + if(linkedtrunk) + linkedtrunk.remove_trunk_links() + expel(FALSE) + return ..() + + +// expel the contents of the outlet +/obj/structure/disposaloutlet/proc/expel(animation = TRUE) if(animation) flick("outlet-open", src) playsound(src, 'sound/machines/warning-buzzer.ogg', 50, 0, 0) sleep(20) //wait until correct animation frame playsound(src, 'sound/machines/hiss.ogg', 50, 0, 0) - if(H) - for(var/atom/movable/AM in H) - AM.forceMove(loc) - AM.pipe_eject(dir) - if(!istype(AM,/mob/living/silicon/robot/drone)) //Drones keep smashing windows from being fired out of chutes. Bad for the station. ~Z - spawn(5) - if(AM) - AM.throw_at(target, 3, 1) - H.vent_gas(src.loc) - qdel(H) + for(var/atom/movable/AM in contents) + AM.forceMove(loc) + AM.pipe_eject(dir) + if(istype(AM,/mob/living/silicon/robot/drone)) //Drones keep smashing windows from being fired out of chutes. Bad for the station. ~Z + return + spawn(5) + if(QDELETED(AM)) + return + AM.throw_at(target, 3, 1) /obj/structure/disposaloutlet/attackby(var/obj/item/I, var/mob/user, params) @@ -1366,7 +1347,7 @@ return //When the disposalsoutlet is forcefully moved. Due to meteorshot or the recall item spell for instance -/obj/structure/disposaloutlet/Moved(atom/OldLoc, Dir) +/obj/structure/disposaloutlet/Moved(atom/OldLoc, Dir) . = ..() var/turf/T = OldLoc if(T.intact) @@ -1383,11 +1364,6 @@ C.density = 1 qdel(src) -/obj/structure/disposaloutlet/Destroy() - if(linkedtrunk) - linkedtrunk.remove_trunk_links() - return ..() - // called when movable is expelled from a disposal pipe or outlet // by default does nothing, override for special behaviour diff --git a/code/modules/recycling/sortingmachinery.dm b/code/modules/recycling/sortingmachinery.dm index 1b1b5c0ffa9..8cf0f52d847 100755 --- a/code/modules/recycling/sortingmachinery.dm +++ b/code/modules/recycling/sortingmachinery.dm @@ -30,7 +30,7 @@ var/obj/item/destTagger/O = W if(sortTag != O.currTag) - var/tag = uppertext(TAGGERLOCATIONS[O.currTag]) + var/tag = uppertext(GLOB.TAGGERLOCATIONS[O.currTag]) to_chat(user, "*[tag]*") sortTag = O.currTag playsound(loc, 'sound/machines/twobeep.ogg', 100, 1) @@ -94,7 +94,7 @@ var/obj/item/destTagger/O = W if(sortTag != O.currTag) - var/tag = uppertext(TAGGERLOCATIONS[O.currTag]) + var/tag = uppertext(GLOB.TAGGERLOCATIONS[O.currTag]) to_chat(user, "*[tag]*") sortTag = O.currTag playsound(loc, 'sound/machines/twobeep.ogg', 100, 1) @@ -223,31 +223,31 @@ flags = CONDUCT slot_flags = SLOT_BELT - proc/openwindow(mob/user as mob) - var/dat = "

TagMaster 2.2

" +/obj/item/destTagger/proc/openwindow(mob/user as mob) + var/dat = "

TagMaster 2.2

" - dat += "" - for(var/i = 1, i <= TAGGERLOCATIONS.len, i++) - dat += "" + dat += "
[TAGGERLOCATIONS[i]]
" + for(var/i = 1, i <= GLOB.TAGGERLOCATIONS.len, i++) + dat += "" - if(i%4==0) - dat += "" + if(i%4==0) + dat += "" - dat += "
[GLOB.TAGGERLOCATIONS[i]]

Current Selection: [currTag ? TAGGERLOCATIONS[currTag] : "None"]
" + dat += "
Current Selection: [currTag ? GLOB.TAGGERLOCATIONS[currTag] : "None"]
" - user << browse(dat, "window=destTagScreen;size=450x350") - onclose(user, "destTagScreen") + user << browse(dat, "window=destTagScreen;size=450x350") + onclose(user, "destTagScreen") - attack_self(mob/user as mob) - openwindow(user) - return +/obj/item/destTagger/attack_self(mob/user as mob) + openwindow(user) + return - Topic(href, href_list) - src.add_fingerprint(usr) - if(href_list["nextTag"]) - var/n = text2num(href_list["nextTag"]) - src.currTag = n - openwindow(usr) +/obj/item/destTagger/Topic(href, href_list) + src.add_fingerprint(usr) + if(href_list["nextTag"]) + var/n = text2num(href_list["nextTag"]) + src.currTag = n + openwindow(usr) /obj/machinery/disposal/deliveryChute name = "Delivery chute" @@ -426,7 +426,7 @@ /obj/item/shippingPackage/proc/update_desc() desc = "A pre-labeled package for shipping an item to coworkers." if(sortTag) - desc += " The label says \"Deliver to [TAGGERLOCATIONS[sortTag]]\"." + desc += " The label says \"Deliver to [GLOB.TAGGERLOCATIONS[sortTag]]\"." if(!sealed) desc += " The package is not sealed." diff --git a/code/modules/research/circuitprinter.dm b/code/modules/research/circuitprinter.dm index ce728a4fde3..57a0eaef7da 100644 --- a/code/modules/research/circuitprinter.dm +++ b/code/modules/research/circuitprinter.dm @@ -8,7 +8,7 @@ using metal and glass, it uses glass and reagents (usually sulfuric acis). name = "Circuit Imprinter" desc = "Manufactures circuit boards for the construction of machines." icon_state = "circuit_imprinter" - flags = OPENCONTAINER + container_type = OPENCONTAINER var/efficiency_coeff diff --git a/code/modules/research/designs/bluespace_designs.dm b/code/modules/research/designs/bluespace_designs.dm index cf6e4b53882..029936e1f3a 100644 --- a/code/modules/research/designs/bluespace_designs.dm +++ b/code/modules/research/designs/bluespace_designs.dm @@ -8,7 +8,7 @@ req_tech = list("bluespace" = 3, "materials" = 6, "plasmatech" = 4) build_type = PROTOLATHE materials = list(MAT_DIAMOND = 1500, MAT_PLASMA = 1500) - build_path = /obj/item/ore/bluespace_crystal/artificial + build_path = /obj/item/stack/ore/bluespace_crystal/artificial category = list("Bluespace") /datum/design/bag_holding diff --git a/code/modules/research/designs/mechfabricator_designs.dm b/code/modules/research/designs/mechfabricator_designs.dm index 1589b78438b..0253bb32055 100644 --- a/code/modules/research/designs/mechfabricator_designs.dm +++ b/code/modules/research/designs/mechfabricator_designs.dm @@ -653,6 +653,15 @@ construction_time = 200 category = list("Exosuit Equipment") +/datum/design/medical_jaw + name = "Exosuit Medical Equipment (Rescue Jaw)" + id = "mech_medical_jaw" + build_type = MECHFAB + req_tech = list("materials" = 4, "engineering" = 6, "magnets" = 6) //now same as jaws of life + materials = list(MAT_METAL=5000,MAT_SILVER=2000,MAT_TITANIUM=1500) + construction_time = 200 + category = list("Exosuit Equipment") + /datum/design/mech_generator name = "Exosuit Equipment (Plasma Generator)" id = "mech_generator" diff --git a/code/modules/research/designs/misc_designs.dm b/code/modules/research/designs/misc_designs.dm index 1036bb6e188..bbaae598fdb 100644 --- a/code/modules/research/designs/misc_designs.dm +++ b/code/modules/research/designs/misc_designs.dm @@ -80,3 +80,13 @@ materials = list(MAT_METAL=500, MAT_GLASS=50) build_path = /obj/item/clothing/mask/muzzle/safety/shock category = list("Miscellaneous") + +/datum/design/data_disk + name = "Genetics Data Disk" + desc = "Disk that allows you to store genetic data." + id = "datadisk" + req_tech = list("programming" = 3, "biotech" = 2) + build_type = PROTOLATHE + materials = list(MAT_METAL=300, MAT_GLASS=100) + build_path = /obj/item/disk/data + category = list("Miscellaneous") diff --git a/code/modules/research/experimentor.dm b/code/modules/research/experimentor.dm index f6e4f2c0877..9e72a12c98e 100644 --- a/code/modules/research/experimentor.dm +++ b/code/modules/research/experimentor.dm @@ -89,8 +89,8 @@ component_parts += new /obj/item/stock_parts/micro_laser(src) component_parts += new /obj/item/stock_parts/micro_laser(src) spawn(1) - trackedIan = locate(/mob/living/simple_animal/pet/corgi/Ian) in mob_list - trackedRuntime = locate(/mob/living/simple_animal/pet/cat/Runtime) in mob_list + trackedIan = locate(/mob/living/simple_animal/pet/corgi/Ian) in GLOB.mob_list + trackedRuntime = locate(/mob/living/simple_animal/pet/cat/Runtime) in GLOB.mob_list SetTypeReactions() RefreshParts() diff --git a/code/modules/research/message_server.dm b/code/modules/research/message_server.dm index 88ecedbf555..fa5015987e5 100644 --- a/code/modules/research/message_server.dm +++ b/code/modules/research/message_server.dm @@ -267,7 +267,7 @@ var/obj/machinery/blackbox_recorder/blackbox var/pda_msg_amt = 0 var/rc_msg_amt = 0 - for(var/obj/machinery/message_server/MS in machines) + for(var/obj/machinery/message_server/MS in GLOB.machines) if(MS.pda_msgs.len > pda_msg_amt) pda_msg_amt = MS.pda_msgs.len if(MS.rc_msgs.len > rc_msg_amt) diff --git a/code/modules/research/protolathe.dm b/code/modules/research/protolathe.dm index 0fa843cb8ae..a441dff00b3 100644 --- a/code/modules/research/protolathe.dm +++ b/code/modules/research/protolathe.dm @@ -11,7 +11,7 @@ Note: Must be placed west/left of and R&D console to function. name = "Protolathe" desc = "Converts raw materials into useful objects." icon_state = "protolathe" - flags = OPENCONTAINER + container_type = OPENCONTAINER var/efficiency_coeff diff --git a/code/modules/research/rdmachines.dm b/code/modules/research/rdmachines.dm index 1e884e35c3a..328faf6d645 100644 --- a/code/modules/research/rdmachines.dm +++ b/code/modules/research/rdmachines.dm @@ -22,7 +22,7 @@ /obj/machinery/r_n_d/New() materials = AddComponent(/datum/component/material_container, list(MAT_METAL, MAT_GLASS, MAT_SILVER, MAT_GOLD, MAT_DIAMOND, MAT_PLASMA, MAT_URANIUM, MAT_BANANIUM, MAT_TRANQUILLITE, MAT_TITANIUM, MAT_BLUESPACE, MAT_PLASTIC), 0, - FALSE, list(/obj/item/stack, /obj/item/ore/bluespace_crystal), CALLBACK(src, .proc/is_insertion_ready), CALLBACK(src, .proc/AfterMaterialInsert)) + FALSE, list(/obj/item/stack, /obj/item/stack/ore/bluespace_crystal), CALLBACK(src, .proc/is_insertion_ready), CALLBACK(src, .proc/AfterMaterialInsert)) materials.precise_insertion = TRUE ..() wires["Red"] = 0 @@ -121,7 +121,7 @@ /obj/machinery/r_n_d/proc/AfterMaterialInsert(type_inserted, id_inserted, amount_inserted) var/stack_name - if(ispath(type_inserted, /obj/item/ore/bluespace_crystal)) + if(ispath(type_inserted, /obj/item/stack/ore/bluespace_crystal)) stack_name = "bluespace polycrystal" use_power(MINERAL_MATERIAL_AMOUNT / 10) else diff --git a/code/modules/research/server.dm b/code/modules/research/server.dm index cba25522d7d..908f0bef139 100644 --- a/code/modules/research/server.dm +++ b/code/modules/research/server.dm @@ -106,7 +106,7 @@ // Backup files to CentComm to help admins recover data after griefer attacks /obj/machinery/r_n_d/server/proc/griefProtection() - for(var/obj/machinery/r_n_d/server/centcom/C in machines) + for(var/obj/machinery/r_n_d/server/centcom/C in GLOB.machines) files.push_data(C.files) /obj/machinery/r_n_d/server/proc/produce_heat(heat_amt) @@ -166,7 +166,7 @@ ..() var/list/no_id_servers = list() var/list/server_ids = list() - for(var/obj/machinery/r_n_d/server/S in machines) + for(var/obj/machinery/r_n_d/server/S in GLOB.machines) switch(S.server_id) if(-1) continue @@ -218,20 +218,20 @@ temp_server = null consoles = list() servers = list() - for(var/obj/machinery/r_n_d/server/S in machines) + for(var/obj/machinery/r_n_d/server/S in GLOB.machines) if(S.server_id == text2num(href_list["access"]) || S.server_id == text2num(href_list["data"]) || S.server_id == text2num(href_list["transfer"])) temp_server = S break if(href_list["access"]) screen = 1 - for(var/obj/machinery/computer/rdconsole/C in machines) + for(var/obj/machinery/computer/rdconsole/C in GLOB.machines) if(C.sync) consoles += C else if(href_list["data"]) screen = 2 else if(href_list["transfer"]) screen = 3 - for(var/obj/machinery/r_n_d/server/S in machines) + for(var/obj/machinery/r_n_d/server/S in GLOB.machines) if(S == src) continue servers += S @@ -283,7 +283,7 @@ if(0) //Main Menu dat += "Connected Servers:

" - for(var/obj/machinery/r_n_d/server/S in machines) + for(var/obj/machinery/r_n_d/server/S in GLOB.machines) if(istype(S, /obj/machinery/r_n_d/server/centcom) && !badmin) continue dat += "[S.name] || " diff --git a/code/modules/research/xenobiology/xenobio_camera.dm b/code/modules/research/xenobiology/xenobio_camera.dm index dcae187b028..29a3cd26600 100644 --- a/code/modules/research/xenobiology/xenobio_camera.dm +++ b/code/modules/research/xenobiology/xenobio_camera.dm @@ -64,7 +64,6 @@ actions += monkey_recycle_action - /obj/machinery/computer/camera_advanced/xenobio/attack_hand(mob/user) if(!ishuman(user)) //AIs using it might be weird return diff --git a/code/modules/research/xenobiology/xenobiology.dm b/code/modules/research/xenobiology/xenobiology.dm index dd672e7938d..9ad049c604b 100644 --- a/code/modules/research/xenobiology/xenobiology.dm +++ b/code/modules/research/xenobiology/xenobiology.dm @@ -8,6 +8,7 @@ icon_state = "grey slime extract" force = 1 w_class = WEIGHT_CLASS_TINY + container_type = INJECTABLE | DRAWABLE throwforce = 0 throw_speed = 3 throw_range = 6 @@ -485,7 +486,7 @@ /obj/effect/timestop/New() ..() - for(var/mob/living/M in player_list) + for(var/mob/living/M in GLOB.player_list) for(var/obj/effect/proc_holder/spell/aoe_turf/conjure/timestop/T in M.mind.spell_list) //People who can stop time are immune to timestop immune |= M diff --git a/code/modules/response_team/ert.dm b/code/modules/response_team/ert.dm index 8614df8135b..d678a541912 100644 --- a/code/modules/response_team/ert.dm +++ b/code/modules/response_team/ert.dm @@ -77,10 +77,10 @@ var/ert_request_answered = FALSE 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()) + if((M in GLOB.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)) + for(var/mob/dead/observer/M in (ert_candidates - GLOB.respawnable_list)) if(M.JoinResponseTeam()) response_team_members |= M @@ -161,7 +161,7 @@ var/ert_request_answered = FALSE 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.rename_character(null, "[pick("Corporal", "Sergeant", "Staff Sergeant", "Sergeant First Class", "Master Sergeant", "Sergeant Major")] [pick(GLOB.last_names)]") M.age = rand(23,35) M.regenerate_icons() M.update_body() @@ -284,7 +284,7 @@ var/ert_request_answered = FALSE command_slots = 0 // Override name and age for the commander - M.rename_character(null, "[pick("Lieutenant", "Captain", "Major")] [pick(last_names)]") + M.rename_character(null, "[pick("Lieutenant", "Captain", "Major")] [pick(GLOB.last_names)]") M.age = rand(35,45) M.equipOutfit(command_outfit) diff --git a/code/modules/response_team/ert_outfits.dm b/code/modules/response_team/ert_outfits.dm index 93227849f1f..be0a6808c39 100644 --- a/code/modules/response_team/ert_outfits.dm +++ b/code/modules/response_team/ert_outfits.dm @@ -411,6 +411,7 @@ l_pocket = /obj/item/grenade/clusterbuster/holy shoes = /obj/item/clothing/shoes/magboots/advance glasses = /obj/item/clothing/glasses/night + r_pocket = /obj/item/nullrod cybernetic_implants = list( /obj/item/organ/internal/cyberimp/chest/nutriment/plus, 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 ("(You have not yet spent your karma for the round; was there a player worthy of receiving your reward? Look under Special Verbs tab, Award Karma.
") diff --git a/code/modules/shuttle/on_move.dm b/code/modules/shuttle/on_move.dm index 88551f49096..4a587ac1253 100644 --- a/code/modules/shuttle/on_move.dm +++ b/code/modules/shuttle/on_move.dm @@ -52,7 +52,7 @@ // After docking // /atom/proc/postDock(obj/docking_port/S1) if(smooth) - smooth_icon(src) + queue_smooth(src) /obj/machinery/door/airlock/postDock(obj/docking_port/stationary/S1) . = ..() diff --git a/code/modules/shuttle/ripple.dm b/code/modules/shuttle/ripple.dm index ef3b18d2e39..3d3b52d9023 100644 --- a/code/modules/shuttle/ripple.dm +++ b/code/modules/shuttle/ripple.dm @@ -15,5 +15,5 @@ /obj/effect/temp_visual/ripple/New() . = ..() - smooth_icon(src) + queue_smooth(src) animate(src, alpha=255, time=SHUTTLE_RIPPLE_TIME) diff --git a/code/modules/shuttle/shuttle.dm b/code/modules/shuttle/shuttle.dm index efb810cae20..8ebbecb39cc 100644 --- a/code/modules/shuttle/shuttle.dm +++ b/code/modules/shuttle/shuttle.dm @@ -553,7 +553,7 @@ if(!istype(S0)) return 1 - for(var/obj/machinery/door/airlock/A in airlocks) + for(var/obj/machinery/door/airlock/A in GLOB.airlocks) if(A.id_tag == S0.id) spawn(-1) A.close() @@ -563,7 +563,7 @@ if(!istype(S1)) return 0 - for(var/obj/machinery/door/airlock/A in airlocks) + for(var/obj/machinery/door/airlock/A in GLOB.airlocks) if(A.id_tag == S1.id) spawn(-1) if(A.locked) diff --git a/code/modules/shuttle/supply.dm b/code/modules/shuttle/supply.dm index e7e455676b0..4254f5dd130 100644 --- a/code/modules/shuttle/supply.dm +++ b/code/modules/shuttle/supply.dm @@ -177,7 +177,7 @@ if(cost) SSshuttle.techLevels[tech.id] = tech.level SSshuttle.points += cost - for(var/mob/M in player_list) + for(var/mob/M in GLOB.player_list) if(M.mind) for(var/datum/job_objective/further_research/objective in M.mind.job_objectives) objective.unit_completed(cost) diff --git a/code/modules/spacepods/equipment.dm b/code/modules/spacepods/equipment.dm index 52273af71fe..a4195175338 100644 --- a/code/modules/spacepods/equipment.dm +++ b/code/modules/spacepods/equipment.dm @@ -203,7 +203,7 @@ icon_state = "cargo_ore" /obj/item/spacepod_equipment/cargo/ore/passover(var/obj/item/I) - if(storage && istype(I,/obj/item/ore)) + if(storage && istype(I,/obj/item/stack/ore)) I.forceMove(storage) // Crate System diff --git a/code/modules/spacepods/spacepod.dm b/code/modules/spacepods/spacepod.dm index d4e7514e262..bb9c2d41fa1 100644 --- a/code/modules/spacepods/spacepod.dm +++ b/code/modules/spacepods/spacepod.dm @@ -119,7 +119,7 @@ pr_give_air = new /datum/global_iterator/pod_tank_give_air(list(src)) equipment_system = new(src) equipment_system.installed_modules += battery - spacepods_list += src + GLOB.spacepods_list += src cargo_hold = new/obj/item/storage/internal(src) cargo_hold.w_class = 5 //so you can put bags in cargo_hold.storage_slots = 0 //You need to install cargo modules to use it. @@ -145,7 +145,7 @@ for(var/mob/M in passengers) M.forceMove(get_turf(src)) passengers -= M - spacepods_list -= src + GLOB.spacepods_list -= src return ..() /obj/spacepod/process() @@ -199,13 +199,16 @@ deal_damage(P.damage) P.on_hit(src) +/obj/spacepod/AllowDrop() + return TRUE + /obj/spacepod/blob_act() deal_damage(30) return -/obj/spacepod/attack_animal(mob/living/simple_animal/user as mob) - if(user.melee_damage_upper == 0) - user.custom_emote(1, "[user.friendly] [src]") +/obj/spacepod/attack_animal(mob/living/simple_animal/user) + if((user.a_intent == INTENT_HELP && user.ckey) || user.melee_damage_upper == 0) + user.custom_emote(1, "[user.friendly] [src].") else var/damage = rand(user.melee_damage_lower, user.melee_damage_upper) deal_damage(damage) @@ -233,12 +236,19 @@ if(!health) spawn(0) message_to_riders("Critical damage to the vessel detected, core explosion imminent!") - for(var/i = 10, i >= 0; --i) - message_to_riders("[i]") - if(i == 0) - explosion(loc, 2, 4, 8) - qdel(src) + for(var/i in 1 to 3) + var/count = 3 + message_to_riders("[count]") + count-- sleep(10) + if(LAZYLEN(pilot) || LAZYLEN(passengers)) + for(var/M in passengers + pilot) + var/mob/living/L = M + L.adjustBruteLoss(300) + explosion(loc, 0, 0, 2) + robogibs(loc) + robogibs(loc) + qdel(src) update_icons() diff --git a/code/modules/station_goals/bsa.dm b/code/modules/station_goals/bsa.dm index 0783aed0a5c..9f8b866981c 100644 --- a/code/modules/station_goals/bsa.dm +++ b/code/modules/station_goals/bsa.dm @@ -235,7 +235,7 @@ build_path = /obj/machinery/bsa/middle origin_tech = "engineering=2;combat=2;bluespace=2" req_components = list( - /obj/item/ore/bluespace_crystal = 20, + /obj/item/stack/ore/bluespace_crystal = 20, /obj/item/stack/cable_coil = 2) /obj/item/circuitboard/machine/bsa/front diff --git a/code/modules/station_goals/dna_vault.dm b/code/modules/station_goals/dna_vault.dm index c84742445ed..00bf181a6d3 100644 --- a/code/modules/station_goals/dna_vault.dm +++ b/code/modules/station_goals/dna_vault.dm @@ -51,7 +51,7 @@ /datum/station_goal/dna_vault/check_completion() if(..()) return TRUE - for(var/obj/machinery/dna_vault/V in machines) + for(var/obj/machinery/dna_vault/V in GLOB.machines) if(V.animals.len >= animal_count && V.plants.len >= plant_count && V.dna.len >= human_count && is_station_contact(V.z)) return TRUE return FALSE @@ -60,8 +60,8 @@ name = "DNA Sampler" desc = "Can be used to take chemical and genetic samples of pretty much anything." icon = 'icons/obj/hypo.dmi' - item_state = "hypo" - icon_state = "hypo" + item_state = "sampler_hypo" + icon_state = "sampler_hypo" flags = NOBLUDGEON var/list/animals = list() var/list/plants = list() diff --git a/code/modules/station_goals/shield.dm b/code/modules/station_goals/shield.dm index 26c4838897c..a4444938d96 100644 --- a/code/modules/station_goals/shield.dm +++ b/code/modules/station_goals/shield.dm @@ -28,7 +28,7 @@ /datum/station_goal/proc/get_coverage() var/list/coverage = list() - for(var/obj/machinery/satellite/meteor_shield/A in machines) + for(var/obj/machinery/satellite/meteor_shield/A in GLOB.machines) if(!A.active || !is_station_level(A.z)) continue coverage |= view(A.kill_range, A) @@ -67,7 +67,7 @@ . = TRUE /obj/machinery/computer/sat_control/proc/toggle(id) - for(var/obj/machinery/satellite/S in machines) + for(var/obj/machinery/satellite/S in GLOB.machines) if(S.id == id && atoms_share_level(src, S)) S.toggle() @@ -75,7 +75,7 @@ var/list/data = list() data["satellites"] = list() - for(var/obj/machinery/satellite/S in machines) + for(var/obj/machinery/satellite/S in GLOB.machines) data["satellites"] += list(list( "id" = S.id, "active" = S.active, @@ -156,7 +156,7 @@ /obj/machinery/satellite/meteor_shield/process() if(!active) return - for(var/obj/effect/meteor/M in meteor_list) + for(var/obj/effect/meteor/M in GLOB.meteor_list) if(M.z != z) continue if(get_dist(M, src) > kill_range) diff --git a/code/modules/station_goals/station_goal.dm b/code/modules/station_goals/station_goal.dm index 5a97f0ee2f3..754e09b4185 100644 --- a/code/modules/station_goals/station_goal.dm +++ b/code/modules/station_goals/station_goal.dm @@ -13,7 +13,7 @@ /datum/station_goal/proc/send_report() priority_announcement.Announce("Priority Nanotrasen directive received. Project \"[name]\" details inbound.", "Incoming Priority Message", 'sound/AI/commandreport.ogg') - print_command_report(get_report(), "Nanotrasen Directive [pick(phonetic_alphabet)] \Roman[rand(1,50)]") + print_command_report(get_report(), "Nanotrasen Directive [pick(GLOB.phonetic_alphabet)] \Roman[rand(1,50)]") on_report() /datum/station_goal/proc/on_report() diff --git a/code/modules/surgery/helpers.dm b/code/modules/surgery/helpers.dm index 1ae29143496..dae7d2a7773 100644 --- a/code/modules/surgery/helpers.dm +++ b/code/modules/surgery/helpers.dm @@ -15,7 +15,7 @@ current_surgery = S if(!current_surgery) - var/list/all_surgeries = surgeries_list.Copy() + var/list/all_surgeries = GLOB.surgeries_list.Copy() var/list/available_surgeries = list() for(var/datum/surgery/S in all_surgeries) @@ -106,7 +106,7 @@ return 1 else if(locate(/obj/structure/table, T)) return 0.8 - else if(locate(/obj/structure/stool/bed, T)) + else if(locate(/obj/structure/bed, T)) return 0.7 else return 0.5 diff --git a/code/modules/surgery/organs/augments_arms.dm b/code/modules/surgery/organs/augments_arms.dm index e83dc1abc44..2616c6c6c7e 100644 --- a/code/modules/surgery/organs/augments_arms.dm +++ b/code/modules/surgery/organs/augments_arms.dm @@ -284,9 +284,7 @@ var/mob/living/carbon/human/H = user if(H.get_int_organ(/obj/item/organ/internal/cell)) if(A.emagged || A.stat & BROKEN) - var/datum/effect_system/spark_spread/s = new /datum/effect_system/spark_spread - s.set_up(3, 1, A) - s.start() + do_sparks(3, 1, A) to_chat(H, "The APC power currents surge erratically, damaging your chassis!") H.adjustFireLoss(10,0) else if(A.cell && A.cell.charge > 0) @@ -326,11 +324,11 @@ /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/blood.dm b/code/modules/surgery/organs/blood.dm index 2a7057516f9..3c9d310852c 100644 --- a/code/modules/surgery/organs/blood.dm +++ b/code/modules/surgery/organs/blood.dm @@ -64,7 +64,7 @@ var/obj/item/organ/external/BP = X var/brutedamage = BP.brute_dam - if(BP.is_robotic()) + if(BP.is_robotic() && !isSynthetic()) continue //We want an accurate reading of .len @@ -102,7 +102,7 @@ if(!(NO_BLOOD in dna.species.species_traits)) ..() if(dna.species.exotic_blood) - var/datum/reagent/R = chemical_reagents_list[get_blood_id()] + var/datum/reagent/R = GLOB.chemical_reagents_list[get_blood_id()] if(istype(R) && isturf(loc)) R.reaction_turf(get_turf(src), amt) diff --git a/code/modules/surgery/organs/liver.dm b/code/modules/surgery/organs/liver.dm index bf6f085275b..ba3112b6392 100644 --- a/code/modules/surgery/organs/liver.dm +++ b/code/modules/surgery/organs/liver.dm @@ -46,7 +46,7 @@ owner.adjustToxLoss(0.1 * PROCESS_ACCURACY) // Can't cope with toxins at all - for(var/toxin in list("toxin", "plasma", "sacid", "facid", "cyanide", "amanitin", "carpotoxin")) + for(var/toxin in GLOB.liver_toxins) if(owner.reagents.has_reagent(toxin)) owner.adjustToxLoss(0.3 * PROCESS_ACCURACY) diff --git a/code/modules/surgery/organs/lungs.dm b/code/modules/surgery/organs/lungs.dm index 3c2b7e1cbd1..71b68d96735 100644 --- a/code/modules/surgery/organs/lungs.dm +++ b/code/modules/surgery/organs/lungs.dm @@ -89,7 +89,7 @@ if(!breath || (breath.total_moles() == 0)) if(H.health >= config.health_threshold_crit) H.adjustOxyLoss(HUMAN_MAX_OXYLOSS) - else + else if(!(NOCRITDAMAGE in H.dna.species.species_traits)) H.adjustOxyLoss(HUMAN_CRIT_MAX_OXYLOSS) H.failed_last_breath = TRUE diff --git a/code/modules/surgery/organs/organ.dm b/code/modules/surgery/organs/organ.dm index 991a5d252ce..a6165c77f41 100644 --- a/code/modules/surgery/organs/organ.dm +++ b/code/modules/surgery/organs/organ.dm @@ -203,7 +203,7 @@ // Let's not drag this on, medbay has only so much antibiotics //Adds autopsy data for used_weapon. -/obj/item/organ/proc/add_autopsy_data(var/used_weapon, var/damage) +/obj/item/organ/proc/add_autopsy_data(var/used_weapon = "Unknown", var/damage) var/datum/autopsy_data/W = autopsy_data[used_weapon] if(!W) W = new() diff --git a/code/modules/surgery/organs/organ_external.dm b/code/modules/surgery/organs/organ_external.dm index 02a6d54a073..f39967cc3a2 100644 --- a/code/modules/surgery/organs/organ_external.dm +++ b/code/modules/surgery/organs/organ_external.dm @@ -175,6 +175,8 @@ owner.handle_splints() if(used_weapon) add_autopsy_data("[used_weapon]", brute + burn) + else + add_autopsy_data(null, brute + burn) // Make sure we don't exceed the maximum damage a limb can take before dismembering if((brute_dam + burn_dam + brute + burn) < max_damage) @@ -608,6 +610,7 @@ Note that amputating the affected organ does in fact remove the infection from t "You hear a loud cracking sound coming from \the [owner].",\ "Something feels like it shattered in your [name]!",\ "You hear a sickening crack.") + playsound(owner, "bonebreak", 150, 1) if(owner.dna.species && !(NO_PAIN in owner.dna.species.species_traits)) owner.emote("scream") @@ -728,12 +731,7 @@ Note that amputating the affected organ does in fact remove the infection from t "Your [src.name] explodes!",\ "You hear an explosion!") explosion(get_turf(owner),-1,-1,2,3) - var/datum/effect_system/spark_spread/spark_system = new /datum/effect_system/spark_spread() - spark_system.set_up(5, 0, victim) - spark_system.attach(owner) - spark_system.start() - spawn(10) - qdel(spark_system) + do_sparks(5, 0, victim) qdel(src) /obj/item/organ/external/proc/disfigure() diff --git a/code/modules/surgery/organs/organ_icon.dm b/code/modules/surgery/organs/organ_icon.dm index 43d699c0408..f291f61c96d 100644 --- a/code/modules/surgery/organs/organ_icon.dm +++ b/code/modules/surgery/organs/organ_icon.dm @@ -112,7 +112,7 @@ var/global/list/limb_icon_cache = list() var/head_marking = owner.m_styles["head"] if(head_marking && head_marking != "None") - var/datum/sprite_accessory/head_marking_style = marking_styles_list[head_marking] + var/datum/sprite_accessory/head_marking_style = GLOB.marking_styles_list[head_marking] if(head_marking_style && head_marking_style.species_allowed && (dna.species.name in head_marking_style.species_allowed) && head_marking_style.marking_location == "head") var/icon/h_marking_s = new/icon("icon" = head_marking_style.icon, "icon_state" = "[head_marking_style.icon_state]_s") if(head_marking_style.do_colouration) @@ -120,7 +120,7 @@ var/global/list/limb_icon_cache = list() overlays |= h_marking_s if(ha_style) - var/datum/sprite_accessory/head_accessory_style = head_accessory_styles_list[ha_style] + var/datum/sprite_accessory/head_accessory_style = GLOB.head_accessory_styles_list[ha_style] if(head_accessory_style && head_accessory_style.species_allowed && (dna.species.name in head_accessory_style.species_allowed)) var/icon/head_accessory_s = new/icon("icon" = head_accessory_style.icon, "icon_state" = "[head_accessory_style.icon_state]_s") if(head_accessory_style.do_colouration) @@ -128,7 +128,7 @@ var/global/list/limb_icon_cache = list() overlays |= head_accessory_s if(f_style) - var/datum/sprite_accessory/facial_hair_style = facial_hair_styles_list[f_style] + var/datum/sprite_accessory/facial_hair_style = GLOB.facial_hair_styles_list[f_style] if(facial_hair_style && ((facial_hair_style.species_allowed && (dna.species.name in facial_hair_style.species_allowed)) || (dna.species.bodyflags & ALL_RPARTS))) var/icon/facial_s = new/icon("icon" = facial_hair_style.icon, "icon_state" = "[facial_hair_style.icon_state]_s") if(istype(dna.species, /datum/species/slime)) // I am el worstos @@ -138,7 +138,7 @@ var/global/list/limb_icon_cache = list() overlays |= facial_s if(h_style && !(owner.head && (owner.head.flags & BLOCKHEADHAIR))) - var/datum/sprite_accessory/hair_style = hair_styles_full_list[h_style] + var/datum/sprite_accessory/hair_style = GLOB.hair_styles_full_list[h_style] if(hair_style && ((dna.species.name in hair_style.species_allowed) || (dna.species.bodyflags & ALL_RPARTS))) var/icon/hair_s = new/icon("icon" = hair_style.icon, "icon_state" = "[hair_style.icon_state]_s") if(istype(dna.species, /datum/species/slime)) // I am el worstos diff --git a/code/modules/surgery/organs/subtypes/kidan.dm b/code/modules/surgery/organs/subtypes/kidan.dm index d8fc67cc542..72290fd624b 100644 --- a/code/modules/surgery/organs/subtypes/kidan.dm +++ b/code/modules/surgery/organs/subtypes/kidan.dm @@ -3,7 +3,7 @@ #define KIDAN_LANTERN_HUNGERCOST 0.5 #define KIDAN_LANTERN_MINHUNGER 150 -#define KIDAN_LANTERN_LIGHT 4 +#define KIDAN_LANTERN_LIGHT 5 /obj/item/organ/internal/lantern name = "Bioluminescent Lantern" diff --git a/code/modules/surgery/organs/subtypes/standard.dm b/code/modules/surgery/organs/subtypes/standard.dm index e04c27284ae..831f80331d4 100644 --- a/code/modules/surgery/organs/subtypes/standard.dm +++ b/code/modules/surgery/organs/subtypes/standard.dm @@ -211,8 +211,8 @@ disfigure() /obj/item/organ/external/head/proc/handle_alt_icon() - if(alt_head && alt_heads_list[alt_head]) - var/datum/sprite_accessory/alt_heads/alternate_head = alt_heads_list[alt_head] + if(alt_head && GLOB.alt_heads_list[alt_head]) + var/datum/sprite_accessory/alt_heads/alternate_head = GLOB.alt_heads_list[alt_head] if(alternate_head.icon_state) icon_name = alternate_head.icon_state else //If alternate_head.icon_state doesn't exist, that means alternate_head is "None", so default icon_name back to "head". diff --git a/code/modules/surgery/organs/subtypes/vox.dm b/code/modules/surgery/organs/subtypes/vox.dm index 960acf920a8..8af6f8bf740 100644 --- a/code/modules/surgery/organs/subtypes/vox.dm +++ b/code/modules/surgery/organs/subtypes/vox.dm @@ -3,10 +3,30 @@ /obj/item/organ/internal/stack - name = "vox cortical stack" - icon_state = "brain-prosthetic" + name = "cortical stack" + icon_state = "cortical-stack" parent_organ = "head" organ_tag = "stack" slot = "vox_stack" status = ORGAN_ROBOT - vital = TRUE \ No newline at end of file + vital = TRUE + var/stackdamaged = FALSE + +/obj/item/organ/internal/stack/on_life() + if(damage < 1 && stackdamaged) + owner.mutations.Remove(SCRAMBLED) + owner.dna.SetSEState(SCRAMBLEBLOCK,0) + genemutcheck(owner,SCRAMBLEBLOCK,null,MUTCHK_FORCED) + stackdamaged = FALSE + ..() + + +/obj/item/organ/internal/stack/emp_act(severity) + if(owner) + owner.mutations.Add(SCRAMBLED) + owner.dna.SetSEState(SCRAMBLEBLOCK,1,1) + genemutcheck(owner,SCRAMBLEBLOCK,null,MUTCHK_FORCED) + owner.AdjustConfused(4) + if(!stackdamaged) + stackdamaged = TRUE + ..() \ No newline at end of file diff --git a/code/modules/surgery/surgery.dm b/code/modules/surgery/surgery.dm index 8d201f32897..f8272b4f9ae 100644 --- a/code/modules/surgery/surgery.dm +++ b/code/modules/surgery/surgery.dm @@ -209,7 +209,7 @@ E.germ_level += germs /proc/sort_surgeries() - var/gap = surgery_steps.len + var/gap = GLOB.surgery_steps.len var/swapped = 1 while(gap > 1 || swapped) swapped = 0 @@ -217,9 +217,9 @@ gap = round(gap / 1.247330950103979) if(gap < 1) gap = 1 - for(var/i = 1; gap + i <= surgery_steps.len; i++) - var/datum/surgery_step/l = surgery_steps[i] //Fucking hate - var/datum/surgery_step/r = surgery_steps[gap+i] //how lists work here + for(var/i = 1; gap + i <= GLOB.surgery_steps.len; i++) + var/datum/surgery_step/l = GLOB.surgery_steps[i] //Fucking hate + var/datum/surgery_step/r = GLOB.surgery_steps[gap+i] //how lists work here if(l.priority < r.priority) - surgery_steps.Swap(i, gap + i) + GLOB.surgery_steps.Swap(i, gap + i) swapped = 1 diff --git a/code/modules/telesci/bscrystal.dm b/code/modules/telesci/bscrystal.dm index 2c955920122..250ddea1f0f 100644 --- a/code/modules/telesci/bscrystal.dm +++ b/code/modules/telesci/bscrystal.dm @@ -1,5 +1,5 @@ // Bluespace crystals, used in telescience and when crushed it will blink you to a random turf. -/obj/item/ore/bluespace_crystal +/obj/item/stack/ore/bluespace_crystal name = "bluespace crystal" desc = "A glowing bluespace crystal, not much is known about how they work. It looks very delicate." icon = 'icons/obj/telescience.dmi' @@ -13,38 +13,38 @@ toolspeed = 1 usesound = 'sound/items/Deconstruct.ogg' -/obj/item/ore/bluespace_crystal/New() +/obj/item/stack/ore/bluespace_crystal/New() ..() pixel_x = rand(-5, 5) pixel_y = rand(-5, 5) -/obj/item/ore/bluespace_crystal/attack_self(var/mob/user) +/obj/item/stack/ore/bluespace_crystal/attack_self(var/mob/user) blink_mob(user) user.drop_item() user.visible_message("[user] crushes the [src]!") qdel(src) -/obj/item/ore/bluespace_crystal/proc/blink_mob(var/mob/living/L) +/obj/item/stack/ore/bluespace_crystal/proc/blink_mob(var/mob/living/L) if(!is_teleport_allowed(L.z)) src.visible_message("[src]'s fragments begin rapidly vibrating and blink out of existence.") qdel(src) return do_teleport(L, get_turf(L), blink_range, asoundin = 'sound/effects/phasein.ogg') -/obj/item/ore/bluespace_crystal/throw_impact(atom/hit_atom) +/obj/item/stack/ore/bluespace_crystal/throw_impact(atom/hit_atom) ..() if(isliving(hit_atom)) blink_mob(hit_atom) qdel(src) -// Blueapce crystal fragments (stops point farming) -/obj/item/ore/bluespace_crystal/refined +// Bluespace crystal fragments (stops point farming) +/obj/item/stack/ore/bluespace_crystal/refined name = "refined bluespace crystal" points = 0 refined_type = null // Artifical bluespace crystal, doesn't give you much research. -/obj/item/ore/bluespace_crystal/artificial +/obj/item/stack/ore/bluespace_crystal/artificial name = "artificial bluespace crystal" desc = "An artificially made bluespace crystal, it looks delicate." origin_tech = "bluespace=3;plasmatech=4" @@ -55,7 +55,7 @@ // Polycrystals, aka stacks -var/global/list/datum/stack_recipe/bluespace_crystal_recipes = list(new/datum/stack_recipe("Breakdown into bluespace crystal", /obj/item/ore/bluespace_crystal/refined, 1)) +var/global/list/datum/stack_recipe/bluespace_crystal_recipes = list(new/datum/stack_recipe("Breakdown into bluespace crystal", /obj/item/stack/ore/bluespace_crystal/refined, 1)) /obj/item/stack/sheet/bluespace_crystal name = "bluespace polycrystal" diff --git a/code/modules/telesci/gps.dm b/code/modules/telesci/gps.dm index 467f92d095e..3672070e8f0 100644 --- a/code/modules/telesci/gps.dm +++ b/code/modules/telesci/gps.dm @@ -140,7 +140,7 @@ var/list/GPS_list = list() /obj/item/gps/visible_debug/New() . = ..() tagged = list() - fast_processing.Add(src) + GLOB.fast_processing.Add(src) /obj/item/gps/visible_debug/process() var/turf/T = get_turf(src) @@ -161,5 +161,5 @@ var/list/GPS_list = list() if(tagged) clear() tagged = null - fast_processing.Remove(src) + GLOB.fast_processing.Remove(src) . = ..() diff --git a/code/modules/telesci/telepad.dm b/code/modules/telesci/telepad.dm index 09f4ffa7920..2f3667a645f 100644 --- a/code/modules/telesci/telepad.dm +++ b/code/modules/telesci/telepad.dm @@ -14,8 +14,7 @@ ..() component_parts = list() component_parts += new /obj/item/circuitboard/telesci_pad(null) - component_parts += new /obj/item/ore/bluespace_crystal/artificial(null) - component_parts += new /obj/item/ore/bluespace_crystal/artificial(null) + component_parts += new /obj/item/stack/ore/bluespace_crystal/artificial(null, 2) component_parts += new /obj/item/stock_parts/capacitor(null) component_parts += new /obj/item/stock_parts/console_screen(null) component_parts += new /obj/item/stack/cable_coil(null, 1) @@ -25,8 +24,7 @@ ..() component_parts = list() component_parts += new /obj/item/circuitboard/telesci_pad(null) - component_parts += new /obj/item/ore/bluespace_crystal/artificial(null) - component_parts += new /obj/item/ore/bluespace_crystal/artificial(null) + component_parts += new /obj/item/stack/ore/bluespace_crystal/artificial(null, 2) component_parts += new /obj/item/stock_parts/capacitor/super(null) component_parts += new /obj/item/stock_parts/console_screen(null) component_parts += new /obj/item/stack/cable_coil(null, 1) @@ -157,8 +155,6 @@ /obj/item/rcs/emag_act(user as mob) if(!emagged) emagged = 1 - var/datum/effect_system/spark_spread/s = new /datum/effect_system/spark_spread - s.set_up(5, 1, src) - s.start() + do_sparks(5, 1, src) to_chat(user, " You emag the RCS. Activate it to toggle between modes.") return diff --git a/code/modules/telesci/telesci_computer.dm b/code/modules/telesci/telesci_computer.dm index f0f1654ac30..f458d6e7152 100644 --- a/code/modules/telesci/telesci_computer.dm +++ b/code/modules/telesci/telesci_computer.dm @@ -26,9 +26,8 @@ var/teleport_cooldown = 0 // every index requires a bluespace crystal var/list/power_options = list(5, 10, 20, 25, 30, 40, 50, 80) var/teleporting = 0 - var/starting_crystals = 0 + var/crystals = 0 var/max_crystals = 4 - var/list/crystals = list() var/obj/item/gps/inserted_gps /obj/machinery/computer/telescience/New() @@ -44,29 +43,27 @@ /obj/machinery/computer/telescience/examine(mob/user) ..(user) - to_chat(user, "There are [crystals.len ? crystals.len : "no"] bluespace crystal\s in the crystal slots.") + to_chat(user, "There are [crystals ? crystals : "no"] bluespace crystal\s in the crystal slots.") /obj/machinery/computer/telescience/Initialize() ..() - for(var/i = 1; i <= starting_crystals; i++) - crystals += new /obj/item/ore/bluespace_crystal/artificial(null) // starting crystals /obj/machinery/computer/telescience/attackby(obj/item/W, mob/user, params) - if(istype(W, /obj/item/ore/bluespace_crystal)) - if(crystals.len >= max_crystals) + if(istype(W, /obj/item/stack/ore/bluespace_crystal)) + var/obj/item/stack/ore/bluespace_crystal/B = W + if(crystals >= max_crystals) to_chat(user, "There are not enough crystal slots.") return - user.drop_item() - crystals += W - W.loc = null - user.visible_message("[user] inserts [W] into \the [src]'s crystal slot.") + crystals += 1 + user.visible_message("[user] inserts a [B.singular_name] into [src]'s crystal slot.") + B.use(1) updateUsrDialog() else if(istype(W, /obj/item/gps)) if(!inserted_gps) inserted_gps = W user.unEquip(W) W.loc = src - user.visible_message("[user] inserts [W] into \the [src]'s GPS device slot.") + user.visible_message("[user] inserts [W] into [src]'s GPS device slot.") updateUsrDialog() else if(istype(W, /obj/item/multitool)) var/obj/item/multitool/M = W @@ -115,7 +112,7 @@ t += "
" for(var/i = 1; i <= power_options.len; i++) - if(crystals.len + telepad.efficiency < i) + if(crystals + telepad.efficiency < i) t += "[power_options[i]]" continue if(power == power_options[i]) @@ -148,9 +145,7 @@ /obj/machinery/computer/telescience/proc/sparks() if(telepad) - var/datum/effect_system/spark_spread/s = new /datum/effect_system/spark_spread - s.set_up(5, 1, get_turf(telepad)) - s.start() + do_sparks(5, 1, get_turf(telepad)) else return @@ -206,9 +201,7 @@ // use a lot of power use_power(power * 10) - var/datum/effect_system/spark_spread/s = new /datum/effect_system/spark_spread - s.set_up(5, 1, get_turf(telepad)) - s.start() + do_sparks(5, 1, get_turf(telepad)) temp_msg = "Teleport successful.
" if(teles_left < 10) @@ -217,9 +210,7 @@ temp_msg += "Data printed below." var/sparks = get_turf(target) - var/datum/effect_system/spark_spread/y = new /datum/effect_system/spark_spread - y.set_up(5, 1, sparks) - y.start() + do_sparks(5, 1, sparks) var/turf/source = target var/turf/dest = get_turf(telepad) @@ -322,11 +313,11 @@ return /obj/machinery/computer/telescience/proc/eject() - - for(var/obj/item/I in crystals) - I.loc = loc - I.pixel_y = -9 - crystals -= I + var/to_eject + for(var/i in 1 to crystals) + to_eject += 1 + crystals -= 1 + new /obj/item/stack/ore/bluespace_crystal/artificial(drop_location(), to_eject) power = 0 /obj/machinery/computer/telescience/Topic(href, href_list) @@ -355,7 +346,7 @@ var/index = href_list["setpower"] index = text2num(index) if(index != null && power_options[index]) - if(crystals.len + telepad.efficiency >= index) + if(crystals + telepad.efficiency >= index) power = power_options[index] if(href_list["setz"]) 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_controller.dm b/code/modules/vr/vr_controller.dm index 564291b2999..30b33e0baa3 100644 --- a/code/modules/vr/vr_controller.dm +++ b/code/modules/vr/vr_controller.dm @@ -20,7 +20,7 @@ proc/make_vr_room(name, template, expires) vr_rooms[R.name] = R R.template.load(locate(R.chunk.x,R.chunk.y,R.chunk.zpos), centered = FALSE) - for(var/atom/landmark in R.chunk.search_chunk(landmarks_list)) + for(var/atom/landmark in R.chunk.search_chunk(GLOB.landmarks_list)) if(landmark.name == "avatarspawn") R.spawn_points.Add(landmark) diff --git a/config/example/config.txt b/config/example/config.txt index 08792117b1f..264cc52fc49 100644 --- a/config/example/config.txt +++ b/config/example/config.txt @@ -113,6 +113,9 @@ ALLOW_ADMIN_OOCCOLOR ## If metadata is supported ALLOW_METADATA +## The time it takes for a round to start in seconds +PREGAME_TIMESTART 240 + ## allow players to initiate a restart vote #ALLOW_VOTE_RESTART diff --git a/html/changelog.html b/html/changelog.html index f52b82198ce..ebfe0b3d7ec 100644 --- a/html/changelog.html +++ b/html/changelog.html @@ -56,6 +56,627 @@ -->
+

31 October 2018

+

Arkatos updated:

+
    +
  • Fixes Rewriter drink description typo.
  • +
+

Jountax updated:

+
    +
  • Renamed Ice Peppers to Chilly Peppers.
  • +
+

TatsumakiMagi updated:

+
    +
  • fixed merch shop, arcade shop and the give command working from a distance
  • +
+ +

30 October 2018

+

Dave-TH updated:

+
    +
  • Adding a paper to a paper bundle no longer automatically opens the bundle.
  • +
+

Farie82 updated:

+
    +
  • Items dropped in a space pod are now under the seat. No more magical dropping out of the pod
  • +
  • Cargo can now buy oil tanks.
  • +
+

Warior4356 updated:

+
    +
  • Megaphone now handle speech impediments properly
  • +
  • Swiping an ID through a drone no longer causes a runtime and correctly shuts it down
  • +
  • Silicons are now able to open a door linked to a button regardless of proximity
  • +
+

uc_guy updated:

+
    +
  • You can no longer table people through walls/doors/shutters.
  • +
+

warior4356 updated:

+
    +
  • fixed the holosign in surgery1
  • +
+ +

29 October 2018

+

Farie82 updated:

+
    +
  • Round start time is now variable. Defaults to 240 if not filled in
  • +
+

Mitchs98 updated:

+
    +
  • Re-Adds a Guest Pass terminal to Medbay front desk.
  • +
+

Squirgenheimer updated:

+
    +
  • regular mining satchels will now only hold 10 slots of ore stacks instead of 50
  • +
  • Deleting mechs no longer causes a runtime
  • +
  • Mech speech bubbles should now follow the mech.
  • +
+

gatchapod updated:

+
    +
  • Fixed airlocks electrocuting people remotely through open UI
  • +
+ +

28 October 2018

+

Dovydas12345 updated:

+
    +
  • Fixed being able to pull when incapacitated
  • +
  • Fixes catching two handed items with one hand.
  • +
+

Fox McCloud updated:

+
    +
  • changes the oil can sprite
  • +
  • Colorful Reagent changes your blood color
  • +
+

Mitchs98 updated:

+
    +
  • Adds the Security Jacket to the standard sec gear lockers, an alternative to the standard armor vest that covers more area but protects less. Style matters.
  • +
+

Normalyman updated:

+
    +
  • Fixed being able to open containers via dragging, while being incapacitated.
  • +
+

Ty-Omaha updated:

+
    +
  • Pulling fixed
  • +
  • Better way of fixing hostile mobs not attacking
  • +
  • Hostile mobs attack again instead of nuzzle
  • +
+

uc_guy updated:

+
    +
  • Fixes shadowling game mode delaying the game ticker
  • +
+ +

27 October 2018

+

AffectedArc07 updated:

+
    +
  • Removed catgirls, be gone foul beasts
  • +
+

Alonefromhell updated:

+
    +
  • Runtime in species.dm, 620 fixed
  • +
  • Stable LDM and Sorium creates their vortexes properly now.
  • +
  • Inject chems into all your favorite types of smokeables, TODAY!
  • +
  • Backend: Added dummy vortex reagents to prevent further runtimes.
  • +
+

Certhic updated:

+
    +
  • fixed wrenched down unconnected pipes being invisible
  • +
  • fixes invisible diona observers
  • +
  • Fixes simple animals attacking while they were on help intent.
  • +
+

Farie82 updated:

+
    +
  • Dusting a mob now dusts everything he holds and has equiped
  • +
  • fixes animals activating the paperfolding proc. No more runtimes there
  • +
  • One less piano runtime
  • +
  • fixes the runtime in the AI code. You now get messages if you lose power and stuf.
  • +
  • Fixes the runtime in Landmarks
  • +
+

TDSSS updated:

+
    +
  • HoP's door remote has access to his office doors + supply doors now
  • +
+

tigercat2000 updated:

+
    +
  • Pretty radial menu for the RCD!
  • +
  • SSoverlays human mobs
  • +
  • Catgirls!
  • +
  • /tg/'s catgirl refugees
  • +
  • Ears are now organs
  • +
  • The suffering of thousands of displaced kittens
  • +
+

uc_guy updated:

+
    +
  • Fixed roller beds not going to their "down" position.
  • +
  • You can now tell if a borg has suicided by examining them
  • +
+ +

26 October 2018

+

Mitchs98 updated:

+
    +
  • Unary vents, scrubbers, passive vents, connectors, air injectors, and pipe caps now orientate as intended when using Orientate Automatically with an RPD.
  • +
  • Fixes #8036, Door controls not respecting range for pod doors.
  • +
  • Now when holding a flag it won't be stabbing into your characters face. Burning a flag also won't magically change its orientation.
  • +
+

dovydas12345 updated:

+
    +
  • Fixes ghosts being able to unflip flipped tables.
  • +
+

uc_guy updated:

+
    +
  • Syndicate communication channel is now pseudonymous.
  • +
+ +

25 October 2018

+

Aurorablade updated:

+
    +
  • welders will now fix external IPC leaking. My Bad.
  • +
+

Birdtalon updated:

+
    +
  • User responses not being appended to admin tickets
  • +
+

Dave-TH updated:

+
    +
  • Adds surgical trays! You can drag these cool tables around and the items placed on them come along for the ride! Nifty!
  • +
+

Farie82 updated:

+
    +
  • Objectives now get fully removed when removing them admin style. Removing the assassinate cryo message if you were de antagged.
  • +
+

tigercat2000 updated:

+
    +
  • PiP Hud Elements
  • +
  • AI PiP Multicam - Enabled by admins
  • +
  • Calling /New( with excess arguments is now properly directed to /Initialize(
  • +
+ +

24 October 2018

+

Alonefromhell updated:

+
    +
  • Mind check in pre_quip added, to prevent runtime.
  • +
+

Birdtalon updated:

+
    +
  • Backend cleanup of assembly.dm and proximity.dm
  • +
+

Certhic updated:

+
    +
  • Runtime error in CureIfHasDisability
  • +
  • Borg health is now updated after being repaired
  • +
+

Farie82 updated:

+
    +
  • Tablets now spawn correctly. No more buying (seemingly) broken tablets
  • +
+

Fethas updated:

+
    +
  • Ipcs bleed oil. Bleeding can be patched by welders and organ mainp surgery(if you have to heal an ipc via surgery we may as well take that out too).
  • +
  • Kidan biolum slightly brighter. tweak:Vox now become confused and unintellible(..more) on cort stack damage.
  • +
+

Warior4356 updated:

+
    +
  • Safe tumbler 2 no longer makes I am open noise when turning tumbler 1.
  • +
+

dovydas12345 updated:

+
    +
  • Added data disk to misc designs.
  • +
+

variableundefined updated:

+
    +
  • Using reagent dispenser like fuel and water tank no longer give you an attack cooldown / animation.
  • +
  • Tracking for shadowling win rate. Improved parsability for other win/loss round type's win rate.
  • +
+ +

23 October 2018

+

Alonefromhell updated:

+
    +
  • You should now be able to put all your favorite chems in food again.
  • +
+

Fox McCloud updated:

+
    +
  • Reagents now GC slightly better
  • +
+ +

22 October 2018

+

Dave-TH updated:

+
    +
  • Fancy tables now properly smooth.
  • +
+

MrStonedOne updated:

+
    +
  • Fixes a cause of lag in the Timer subsystem
  • +
+

Purpose updated:

+
    +
  • Removes unused code in Nuclear gamemode.
  • +
  • Removes some empty icon files.
  • +
  • Fixes a typo in an SDQL parse warning.
  • +
  • Code improvement with timers in Revolution gamemode.
  • +
+

name here updated:

+
    +
  • The autopsy scanner now works even when it does not know the weapon and/or the time of death.
  • +
  • Unused weapon chance code
  • +
+

uc_guy updated:

+
    +
  • Removed logging ambiguity for uplink purchases.
  • +
+

variableundefined updated:

+
    +
  • Component refactor from tg made by ninjanomnom has been ported over. Report unexpected issue (with autolathe / ORM)
  • +
+ +

21 October 2018

+

Alonefromhell updated:

+
    +
  • Fixed some formatting issues in post_equip.
  • +
+

Ansari updated:

+
    +
  • Oculine processing should be less expensive now.
  • +
+

Desolate updated:

+
    +
  • Refactors some reagent lists into global list
  • +
+

Farie82 updated:

+
    +
  • Cyborgs can now refill welding tools and fire extinguishers using the recharging station
  • +
  • Oculine now updates the blindness status correctly
  • +
  • Added the Viral Injector. A virologist specific traitor item that acts like a sleepy pen but can transfer viruses. It's disguised as a functional pipette.
  • +
+

Purpose updated:

+
    +
  • Moves Icon Smoothing to a Subsystem.
  • +
  • Atom code will no longer track a list atoms, for literally zero reason.
  • +
  • Fixes grammatical error in the suit storage unit
  • +
+

Shazbot194 updated:

+
    +
  • all north facing in hand icons for flags.
  • +
+

Squirgenheimer updated:

+
    +
  • Explosive holoparasite booby traps will now behave better, such as correctly triggering on mobs
  • +
+

Triiodine updated:

+
    +
  • Skrell & Tajaran sechardsuit to paracode palette, from Bay12 palette.
  • +
  • TG & BS12 sec-hardsuits in all dmis
  • +
+

Warior4356 updated:

+
    +
  • Final UI update was missed in Safe Refactor PR
  • +
+

name here updated:

+
    +
  • Holodeck plating sprite is now back to the old one.
  • +
+

tigercat2000 updated:

+
    +
  • We're going 512 boisssssssssssssss
  • +
+

variableundefined updated:

+
    +
  • Improves the List free slots admin verb to show useful information.
  • +
  • Cyborg hypospray's attack log message should no longer be reversed.
  • +
  • How containers work is now standardized in the back-end. There might be unexpected or odd bugs with containers and reagent transfer, please report them.
  • +
  • Minor refactor of revenant code.
  • +
  • Some relative path & commented out code has been cleared up in code. Report unexpected issues.
  • +
+ +

20 October 2018

+

Birdtalon updated:

+
    +
  • Spacepods explosions are significantly reduced.
  • +
+

Dapocalypse updated:

+
    +
  • Adds password protected files to modular computer.
  • +
+

Farie82 updated:

+
    +
  • Guardian injectors now tell in their examination text if they are spend or not.
  • +
  • Added feedback on the RCD airlock access topic.
  • +
+

Fox McCloud updated:

+
    +
  • Updates the Garbage SS so it's less likely to induce lag
  • +
+

Purpose updated:

+
    +
  • Suit storage units now contain magboots for relevant roles.
  • +
  • Adds the captains jetpack to his suit storage unit, so it is now stealable again on Delta.
  • +
  • Aluminum & Aluminium properly standardized.
  • +
+

craftxbox updated:

+
    +
  • added check to make sure person downloading pAI isnt dead.
  • +
+

uc_guy updated:

+
    +
  • It is no longer possible to duplicate uvents.
  • +
+

variableundefined updated:

+
    +
  • Plating's icon is back to the old one once again.
  • +
+ +

19 October 2018

+

Fox McCloud updated:

+
    +
  • Fixes round-start sparks being stuck in maintenance
  • +
+

Purpose updated:

+
    +
  • Fixed an issue with Space Vine mutations
  • +
+

SpaceManiac updated:

+
    +
  • The body zone selector now indicates which body part you are about to select when hovered over.
  • +
+

TDSSS updated:

+
    +
  • New exosuit equipment: The rescue jaws for the Odysseus lets it open doors, firelocks and even force powered doors. It can also be added to firefighter ripleys.
  • +
+

Triiodine updated:

+
    +
  • new DNA Sampler Sprite
  • +
+

Warior4356 updated:

+
    +
  • Added nanoui for safe. Added minor quality of life to safe.
  • +
  • Removed old UI from safe
  • +
  • Safe now is only Right - Left - Right. Safe is 0-99 rather than 0-71.
  • +
  • Added safe dial for it's nanoui.
  • +
+ +

18 October 2018

+

IrkallaEpsilon updated:

+
    +
  • Feral Cat grenades are now listed as job specific items.
  • +
+

Shazbot updated:

+
    +
  • Shazbot's custom cyborg sprites.
  • +
+

Squirgenheimer updated:

+
    +
  • Ghosting from cryopods with an inventory open should no longer cause a runtime
  • +
+

Triiodine updated:

+
    +
  • disposals pipes sprite offsets & stray pixels.
  • +
  • id_decal icons
  • +
  • arcade id_decals using mind batterer sprite. (That's just silly.)
  • +
+ +

17 October 2018

+

Alonefromhell updated:

+
    +
  • Added a Nanotrasen Navy Uniform to the blueshields locker
  • +
+

Crazylemon updated:

+
    +
  • Buildmode is now compatible with 511 clients.
  • +
+

FalseIncarnate updated:

+
    +
  • Floodlights will now shut off if lacking a power cell.
  • +
+

Fox McCloud updated:

+
    +
  • Fixes the Timer SS timing out when it shouldn't
  • +
  • Fixes reagent overdose runtimes
  • +
+

TDSSS updated:

+
    +
  • Examining a borg tells you what module it has loaded
  • +
+

datlo updated:

+
    +
  • Added the Honk Brand Infiltration Kit to Nuke Ops.
  • +
+ +

16 October 2018

+

FalseIncarnate updated:

+
    +
  • Corpse spawners (such as those on the Wild West away mission) now properly spawn corpses at roundstart that don't remain standing.
  • +
+ +

15 October 2018

+

FreeStylaLT updated:

+
    +
  • Crunchy sounds when bones are broken
  • +
+

Squirgenheimer updated:

+
    +
  • Changelings will now wake up after using Regenerative Stasis.
  • +
+

TDSSS updated:

+
    +
  • The maximal length of a name that won't be rejected as a 'bad name' has been raised.
  • +
+

Ty-Omaha updated:

+
    +
  • Fixes stunbaton runtime (Stun() being called on a turf)
  • +
  • Borers with their "Dominate" window already open can no longer run across the map and successfully cast the spell on those people, they must be within 7 tiles (default view range)
  • +
  • Borers can no longer spam open the "Dominate" spell
  • +
  • Borers with their "Dominate" target window already open can no longer successfully target someone if they are dead
  • +
  • Borers no longer "slither up and probe people's ear canal" if they select the target of an "infect host" spell after they die
  • +
+

uc_guy updated:

+
    +
  • You can no longer roll around when dead.
  • +
+ +

14 October 2018

+

Purpose updated:

+
    +
  • Makes it so that Screwdrivers & Wirecutters are no longer invisible in the map editor.
  • +
  • Fixes a gibbing runtime
  • +
+

taac updated:

+
    +
  • added cryo cell description
  • +
+

uc_guy updated:

+
    +
  • fixed runtime in IsBanned.dm
  • +
+

variableundefined updated:

+
    +
  • Stacks are split by CtrlShiftClick instead of AltClick now.
  • +
  • A runtime that occurs with paper bundle being created with one or less paper.
  • +
+ +

13 October 2018

+

Birdtalon updated:

+
    +
  • Chem master now will show its de-powered state properly.
  • +
+

DarkPyrolord updated:

+
    +
  • Changed attack log level for reagent forcefeeding from FEW to MOST
  • +
+

FlimFlamm updated:

+
    +
  • Tweaked formatting of Newscaster stories
  • +
  • Fixes images displaying improperly on Newscaster stories
  • +
+

Ty-Omaha updated:

+
    +
  • Boxing logs moved to the ALL preference
  • +
+

alex-gh updated:

+
    +
  • Species damage modifiers now only affect damage, not healing.
  • +
  • Races that took more damage from certain damage types no longer heal from that damage type faster. For example: Drask no longer heal from burn at double rate; Grey, Vox no longer heal from brute at increased rate (Note: IPC healing with welders/wires is not affected).
  • +
  • Kidan no longer heal from brute at a reduced rate.
  • +
+

uc_guy updated:

+
    +
  • You can no longer get an infection and die during abductor surgery.
  • +
  • Voice analyzers no longer activate on noise.
  • +
+ +

12 October 2018

+

Alonefromhell updated:

+
    +
  • META - Cargo shuttle blast doors now reacts to the right button.
  • +
  • META - Cargo shuttle airlocks now bolt properly.
  • +
  • META - Cargo shuttle flaps are now airtight. All hail Cargonia.
  • +
+

Birdtalon updated:

+
    +
  • Gamma ERT Paranormal gets their null rod.
  • +
  • Moves check_and_add() to reagents holder
  • +
+

DesolateG updated:

+
    +
  • Refactors global var lists to use the global subsystem.
  • +
+

Farie82 updated:

+
    +
  • Added the on_give proc for items. Was needed for the fixes
  • +
  • Giving two handed items like the DIY chainsaw and potted plants now works correctly
  • +
  • The DIY chainsaw, doomslayer chainsaw and the potted plants now do damage when given to somebody else and when picked up while the chainsaw was on.
  • +
+

Purpose updated:

+
    +
  • Cyberiad's grimy tiles are now actually dirty and cleanable.
  • +
  • Delta's grimy tiles are now actually dirty and cleanable.
  • +
  • Ironsand is now visible in the Map Maker.
  • +
  • Away missions updated with the appropriate dirt/grime so that it is now cleanable.
  • +
  • Fixes stool's unique suicide message.
  • +
  • Fixes rollerbeds no longer going through plastic flaps.
  • +
+

TDSSS updated:

+
    +
  • Removed Skrell discrimination, allows ! character in IDs (agent IDs or made via ID computer)
  • +
+

variableundefined updated:

+
    +
  • Ore now represented by stack that holds up to 50 items. Should reduce lag with ORM greatly.
  • +
  • Satchel can only carry ten items instead of 50 items. You should end up carrying more ore in total however
  • +
  • Fire acting on ore means they would be refined with 50% efficiency.
  • +
  • Stack merges automatically if dropped on the floor, or a new stack is created. This doesn't happens on your body.
  • +
  • They also merge if you drag them over eachother.
  • +
  • Alt-click split a stack
  • +
  • You can throw sand into people's eyes! Pocket sand!
  • +
  • Phazon take 5 bluespace crystal to construct now instead of 1. remove: Transfer prompt when you click on a stack of the same type with a stack
  • +
+ +

11 October 2018

+

Citinited updated:

+
    +
  • Fixes an oversight in autopsy report drawer's description.
  • +
+

Farie82 updated:

+
    +
  • NPC's now initialise correctly. Removing a lot of runtime errors.
  • +
+

Kyep updated:

+
    +
  • Fixed the admin ERT panel not working correctly if the admin using it was playing as a carbon mob.
  • +
+

Stork Industries updated:

+
    +
  • Fixes "Arachno-Man's" boots
  • +
+

Triiodine updated:

+
    +
  • SLOT_MASK from necklaces.
  • +
  • thatdanguy23's fluff item
  • +
+ +

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
  • +
  • Mulebot teleportation exploit.
  • +
  • Iron sand icons now render correctly.
  • +
+

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.
  • +
+

Purpose & AndrewMontagne updated:

+
    +
  • New grimy dirt sprites.
  • +
  • Dirty tiles now get dirtier if neighbouring tiles are also dirty.
  • +
+

Triiodine updated:

+
    +
  • new sprites for cup-chicken soup, icecups, weight loss shakes.
  • +
  • cup to can of chicken soup.
  • +
+

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:

    diff --git a/html/changelogs/.all_changelog.yml b/html/changelogs/.all_changelog.yml index 240a302cbbf..ad4343bf9eb 100644 --- a/html/changelogs/.all_changelog.yml +++ b/html/changelogs/.all_changelog.yml @@ -7395,3 +7395,408 @@ DO NOT EDIT THIS FILE BY HAND! AUTOMATICALLY GENERATED BY ss13_genchangelog.py. - 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 + - bugfix: Mulebot teleportation exploit. + - bugfix: Iron sand icons now render correctly. + 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. + Purpose & AndrewMontagne: + - rscadd: New grimy dirt sprites. + - rscadd: Dirty tiles now get dirtier if neighbouring tiles are also dirty. + Triiodine: + - rscadd: new sprites for cup-chicken soup, icecups, weight loss shakes. + - tweak: cup to can of chicken soup. + 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! +2018-10-11: + Citinited: + - bugfix: Fixes an oversight in autopsy report drawer's description. + Farie82: + - bugfix: NPC's now initialise correctly. Removing a lot of runtime errors. + Kyep: + - bugfix: Fixed the admin ERT panel not working correctly if the admin using it + was playing as a carbon mob. + Stork Industries: + - bugfix: Fixes "Arachno-Man's" boots + Triiodine: + - rscdel: SLOT_MASK from necklaces. + - rscadd: thatdanguy23's fluff item +2018-10-12: + Alonefromhell: + - bugfix: META - Cargo shuttle blast doors now reacts to the right button. + - bugfix: META - Cargo shuttle airlocks now bolt properly. + - bugfix: META - Cargo shuttle flaps are now airtight. All hail Cargonia. + Birdtalon: + - bugfix: Gamma ERT Paranormal gets their null rod. + - tweak: Moves check_and_add() to reagents holder + DesolateG: + - tweak: Refactors global var lists to use the global subsystem. + Farie82: + - rscadd: Added the on_give proc for items. Was needed for the fixes + - bugfix: Giving two handed items like the DIY chainsaw and potted plants now works + correctly + - bugfix: The DIY chainsaw, doomslayer chainsaw and the potted plants now do damage + when given to somebody else and when picked up while the chainsaw was on. + Purpose: + - tweak: Cyberiad's grimy tiles are now actually dirty and cleanable. + - tweak: Delta's grimy tiles are now actually dirty and cleanable. + - bugfix: Ironsand is now visible in the Map Maker. + - bugfix: Away missions updated with the appropriate dirt/grime so that it is now + cleanable. + - bugfix: Fixes stool's unique suicide message. + - bugfix: Fixes rollerbeds no longer going through plastic flaps. + TDSSS: + - bugfix: Removed Skrell discrimination, allows ! character in IDs (agent IDs or + made via ID computer) + variableundefined: + - tweak: Ore now represented by stack that holds up to 50 items. Should reduce lag + with ORM greatly. + - tweak: Satchel can only carry ten items instead of 50 items. You should end up + carrying more ore in total however + - rscadd: Fire acting on ore means they would be refined with 50% efficiency. + - rscadd: Stack merges automatically if dropped on the floor, or a new stack is + created. This doesn't happens on your body. + - rscadd: They also merge if you drag them over eachother. + - rscadd: Alt-click split a stack + - rscadd: You can throw sand into people's eyes! Pocket sand! + - tweak: 'Phazon take 5 bluespace crystal to construct now instead of 1. remove: + Transfer prompt when you click on a stack of the same type with a stack' +2018-10-13: + Birdtalon: + - bugfix: Chem master now will show its de-powered state properly. + DarkPyrolord: + - tweak: Changed attack log level for reagent forcefeeding from FEW to MOST + FlimFlamm: + - tweak: Tweaked formatting of Newscaster stories + - bugfix: Fixes images displaying improperly on Newscaster stories + Ty-Omaha: + - tweak: Boxing logs moved to the ALL preference + alex-gh: + - bugfix: Species damage modifiers now only affect damage, not healing. + - tweak: 'Races that took more damage from certain damage types no longer heal from + that damage type faster. For example: Drask no longer heal from burn at double + rate; Grey, Vox no longer heal from brute at increased rate (Note: IPC healing + with welders/wires is not affected).' + - tweak: Kidan no longer heal from brute at a reduced rate. + uc_guy: + - bugfix: You can no longer get an infection and die during abductor surgery. + - bugfix: Voice analyzers no longer activate on noise. +2018-10-14: + Purpose: + - bugfix: Makes it so that Screwdrivers & Wirecutters are no longer invisible in + the map editor. + - bugfix: Fixes a gibbing runtime + taac: + - bugfix: added cryo cell description + uc_guy: + - bugfix: fixed runtime in IsBanned.dm + variableundefined: + - tweak: Stacks are split by CtrlShiftClick instead of AltClick now. + - bugfix: A runtime that occurs with paper bundle being created with one or less + paper. +2018-10-15: + FreeStylaLT: + - rscadd: Crunchy sounds when bones are broken + Squirgenheimer: + - bugfix: Changelings will now wake up after using Regenerative Stasis. + TDSSS: + - tweak: The maximal length of a name that won't be rejected as a 'bad name' has + been raised. + Ty-Omaha: + - bugfix: Fixes stunbaton runtime (Stun() being called on a turf) + - bugfix: Borers with their "Dominate" window already open can no longer run across + the map and successfully cast the spell on those people, they must be within + 7 tiles (default view range) + - bugfix: Borers can no longer spam open the "Dominate" spell + - bugfix: Borers with their "Dominate" target window already open can no longer + successfully target someone if they are dead + - bugfix: Borers no longer "slither up and probe people's ear canal" if they select + the target of an "infect host" spell after they die + uc_guy: + - bugfix: You can no longer roll around when dead. +2018-10-16: + FalseIncarnate: + - bugfix: Corpse spawners (such as those on the Wild West away mission) now properly + spawn corpses at roundstart that don't remain standing. +2018-10-17: + Alonefromhell: + - rscadd: Added a Nanotrasen Navy Uniform to the blueshields locker + Crazylemon: + - bugfix: Buildmode is now compatible with 511 clients. + FalseIncarnate: + - bugfix: Floodlights will now shut off if lacking a power cell. + Fox McCloud: + - bugfix: Fixes the Timer SS timing out when it shouldn't + - bugfix: Fixes reagent overdose runtimes + TDSSS: + - rscadd: Examining a borg tells you what module it has loaded + datlo: + - rscadd: Added the Honk Brand Infiltration Kit to Nuke Ops. +2018-10-18: + IrkallaEpsilon: + - bugfix: Feral Cat grenades are now listed as job specific items. + Shazbot: + - rscadd: Shazbot's custom cyborg sprites. + Squirgenheimer: + - bugfix: Ghosting from cryopods with an inventory open should no longer cause a + runtime + Triiodine: + - bugfix: disposals pipes sprite offsets & stray pixels. + - rscadd: id_decal icons + - bugfix: arcade id_decals using mind batterer sprite. (That's just silly.) +2018-10-19: + Fox McCloud: + - bugfix: Fixes round-start sparks being stuck in maintenance + Purpose: + - bugfix: Fixed an issue with Space Vine mutations + SpaceManiac: + - rscadd: The body zone selector now indicates which body part you are about to + select when hovered over. + TDSSS: + - rscadd: 'New exosuit equipment: The rescue jaws for the Odysseus lets it open + doors, firelocks and even force powered doors. It can also be added to firefighter + ripleys.' + Triiodine: + - rscadd: new DNA Sampler Sprite + Warior4356: + - rscadd: Added nanoui for safe. Added minor quality of life to safe. + - rscdel: Removed old UI from safe + - tweak: Safe now is only Right - Left - Right. Safe is 0-99 rather than 0-71. + - imageadd: Added safe dial for it's nanoui. +2018-10-20: + Birdtalon: + - tweak: Spacepods explosions are significantly reduced. + Dapocalypse: + - rscadd: Adds password protected files to modular computer. + Farie82: + - tweak: Guardian injectors now tell in their examination text if they are spend + or not. + - tweak: Added feedback on the RCD airlock access topic. + Fox McCloud: + - tweak: Updates the Garbage SS so it's less likely to induce lag + Purpose: + - rscadd: Suit storage units now contain magboots for relevant roles. + - bugfix: Adds the captains jetpack to his suit storage unit, so it is now stealable + again on Delta. + - spellcheck: Aluminum & Aluminium properly standardized. + craftxbox: + - bugfix: added check to make sure person downloading pAI isnt dead. + uc_guy: + - bugfix: It is no longer possible to duplicate uvents. + variableundefined: + - tweak: Plating's icon is back to the old one once again. +2018-10-21: + Alonefromhell: + - spellcheck: Fixed some formatting issues in post_equip. + Ansari: + - tweak: Oculine processing should be less expensive now. + Desolate: + - tweak: Refactors some reagent lists into global list + Farie82: + - tweak: Cyborgs can now refill welding tools and fire extinguishers using the recharging + station + - bugfix: Oculine now updates the blindness status correctly + - rscadd: Added the Viral Injector. A virologist specific traitor item that acts + like a sleepy pen but can transfer viruses. It's disguised as a functional pipette. + Purpose: + - tweak: Moves Icon Smoothing to a Subsystem. + - rscdel: Atom code will no longer track a list atoms, for literally zero reason. + - spellcheck: Fixes grammatical error in the suit storage unit + Shazbot194: + - bugfix: all north facing in hand icons for flags. + Squirgenheimer: + - bugfix: Explosive holoparasite booby traps will now behave better, such as correctly + triggering on mobs + Triiodine: + - tweak: Skrell & Tajaran sechardsuit to paracode palette, from Bay12 palette. + - rscdel: TG & BS12 sec-hardsuits in all dmis + Warior4356: + - bugfix: Final UI update was missed in Safe Refactor PR + name here: + - tweak: Holodeck plating sprite is now back to the old one. + tigercat2000: + - rscadd: We're going 512 boisssssssssssssss + variableundefined: + - tweak: Improves the List free slots admin verb to show useful information. + - bugfix: Cyborg hypospray's attack log message should no longer be reversed. + - tweak: How containers work is now standardized in the back-end. There might be + unexpected or odd bugs with containers and reagent transfer, please report them. + - tweak: Minor refactor of revenant code. + - bugfix: Some relative path & commented out code has been cleared up in code. Report + unexpected issues. +2018-10-22: + Dave-TH: + - bugfix: Fancy tables now properly smooth. + MrStonedOne: + - bugfix: Fixes a cause of lag in the Timer subsystem + Purpose: + - rscdel: Removes unused code in Nuclear gamemode. + - rscdel: Removes some empty icon files. + - spellcheck: Fixes a typo in an SDQL parse warning. + - tweak: Code improvement with timers in Revolution gamemode. + name here: + - bugfix: The autopsy scanner now works even when it does not know the weapon and/or + the time of death. + - rscdel: Unused weapon chance code + uc_guy: + - tweak: Removed logging ambiguity for uplink purchases. + variableundefined: + - tweak: Component refactor from tg made by ninjanomnom has been ported over. Report + unexpected issue (with autolathe / ORM) +2018-10-23: + Alonefromhell: + - bugfix: You should now be able to put all your favorite chems in food again. + Fox McCloud: + - tweak: Reagents now GC slightly better +2018-10-24: + Alonefromhell: + - bugfix: Mind check in pre_quip added, to prevent runtime. + Birdtalon: + - tweak: Backend cleanup of assembly.dm and proximity.dm + Certhic: + - bugfix: Runtime error in CureIfHasDisability + - bugfix: Borg health is now updated after being repaired + Farie82: + - bugfix: Tablets now spawn correctly. No more buying (seemingly) broken tablets + Fethas: + - tweak: Ipcs bleed oil. Bleeding can be patched by welders and organ mainp surgery(if + you have to heal an ipc via surgery we may as well take that out too). + - tweak: Kidan biolum slightly brighter. tweak:Vox now become confused and unintellible(..more) + on cort stack damage. + Warior4356: + - bugfix: Safe tumbler 2 no longer makes I am open noise when turning tumbler 1. + dovydas12345: + - rscadd: Added data disk to misc designs. + variableundefined: + - bugfix: Using reagent dispenser like fuel and water tank no longer give you an + attack cooldown / animation. + - rscadd: Tracking for shadowling win rate. Improved parsability for other win/loss + round type's win rate. +2018-10-25: + Aurorablade: + - bugfix: welders will now fix external IPC leaking. My Bad. + Birdtalon: + - bugfix: User responses not being appended to admin tickets + Dave-TH: + - rscadd: Adds surgical trays! You can drag these cool tables around and the items + placed on them come along for the ride! Nifty! + Farie82: + - bugfix: Objectives now get fully removed when removing them admin style. Removing + the assassinate cryo message if you were de antagged. + tigercat2000: + - rscadd: PiP Hud Elements + - experiment: AI PiP Multicam - Enabled by admins + - bugfix: Calling /New( with excess arguments is now properly directed to /Initialize( +2018-10-26: + Mitchs98: + - bugfix: Unary vents, scrubbers, passive vents, connectors, air injectors, and + pipe caps now orientate as intended when using Orientate Automatically with + an RPD. + - bugfix: 'Fixes #8036, Door controls not respecting range for pod doors.' + - bugfix: Now when holding a flag it won't be stabbing into your characters face. + Burning a flag also won't magically change its orientation. + dovydas12345: + - bugfix: Fixes ghosts being able to unflip flipped tables. + uc_guy: + - tweak: Syndicate communication channel is now pseudonymous. +2018-10-27: + AffectedArc07: + - rscdel: Removed catgirls, be gone foul beasts + Alonefromhell: + - bugfix: Runtime in species.dm, 620 fixed + - bugfix: Stable LDM and Sorium creates their vortexes properly now. + - bugfix: Inject chems into all your favorite types of smokeables, TODAY! + - bugfix: 'Backend: Added dummy vortex reagents to prevent further runtimes.' + Certhic: + - bugfix: fixed wrenched down unconnected pipes being invisible + - bugfix: fixes invisible diona observers + - bugfix: Fixes simple animals attacking while they were on help intent. + Farie82: + - bugfix: Dusting a mob now dusts everything he holds and has equiped + - bugfix: fixes animals activating the paperfolding proc. No more runtimes there + - bugfix: One less piano runtime + - bugfix: fixes the runtime in the AI code. You now get messages if you lose power + and stuf. + - bugfix: Fixes the runtime in Landmarks + TDSSS: + - tweak: HoP's door remote has access to his office doors + supply doors now + tigercat2000: + - rscadd: Pretty radial menu for the RCD! + - rscadd: SSoverlays human mobs + - rscadd: Catgirls! + - rscadd: /tg/'s catgirl refugees + - rscadd: Ears are now organs + - bugfix: The suffering of thousands of displaced kittens + uc_guy: + - bugfix: Fixed roller beds not going to their "down" position. + - rscadd: You can now tell if a borg has suicided by examining them +2018-10-28: + Dovydas12345: + - bugfix: Fixed being able to pull when incapacitated + - bugfix: Fixes catching two handed items with one hand. + Fox McCloud: + - imageadd: changes the oil can sprite + - rscadd: Colorful Reagent changes your blood color + Mitchs98: + - rscadd: Adds the Security Jacket to the standard sec gear lockers, an alternative + to the standard armor vest that covers more area but protects less. Style matters. + Normalyman: + - bugfix: Fixed being able to open containers via dragging, while being incapacitated. + Ty-Omaha: + - bugfix: Pulling fixed + - tweak: Better way of fixing hostile mobs not attacking + - bugfix: Hostile mobs attack again instead of nuzzle + uc_guy: + - bugfix: Fixes shadowling game mode delaying the game ticker +2018-10-29: + Farie82: + - rscadd: Round start time is now variable. Defaults to 240 if not filled in + Mitchs98: + - bugfix: Re-Adds a Guest Pass terminal to Medbay front desk. + Squirgenheimer: + - bugfix: regular mining satchels will now only hold 10 slots of ore stacks instead + of 50 + - bugfix: Deleting mechs no longer causes a runtime + - bugfix: Mech speech bubbles should now follow the mech. + gatchapod: + - bugfix: Fixed airlocks electrocuting people remotely through open UI +2018-10-30: + Dave-TH: + - bugfix: Adding a paper to a paper bundle no longer automatically opens the bundle. + Farie82: + - bugfix: Items dropped in a space pod are now under the seat. No more magical dropping + out of the pod + - rscadd: Cargo can now buy oil tanks. + Warior4356: + - bugfix: Megaphone now handle speech impediments properly + - bugfix: Swiping an ID through a drone no longer causes a runtime and correctly + shuts it down + - bugfix: Silicons are now able to open a door linked to a button regardless of + proximity + uc_guy: + - bugfix: You can no longer table people through walls/doors/shutters. + warior4356: + - bugfix: fixed the holosign in surgery1 +2018-10-31: + Arkatos: + - spellcheck: Fixes Rewriter drink description typo. + Jountax: + - tweak: Renamed Ice Peppers to Chilly Peppers. + TatsumakiMagi: + - bugfix: fixed merch shop, arcade shop and the give command working from a distance diff --git a/html/changelogs/AutoChangeLog-pr-10079.yml b/html/changelogs/AutoChangeLog-pr-10079.yml new file mode 100644 index 00000000000..f052526caaa --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-10079.yml @@ -0,0 +1,4 @@ +author: "Citinited" +delete-after: True +changes: + - bugfix: "A disposal nullspace bug." diff --git a/icons/atmos/pipes.dmi b/icons/atmos/pipes.dmi index d07acbabf1a..97f79b3d856 100644 Binary files a/icons/atmos/pipes.dmi and b/icons/atmos/pipes.dmi differ diff --git a/icons/effects/dirt.dmi b/icons/effects/dirt.dmi new file mode 100644 index 00000000000..5c8bc8f61a0 Binary files /dev/null and b/icons/effects/dirt.dmi differ diff --git a/icons/goonstation/objects/oil.dmi b/icons/goonstation/objects/oil.dmi new file mode 100644 index 00000000000..17556f410ae Binary files /dev/null and b/icons/goonstation/objects/oil.dmi differ diff --git a/icons/misc/pic_in_pic.dmi b/icons/misc/pic_in_pic.dmi new file mode 100644 index 00000000000..9c550f3c25e Binary files /dev/null and b/icons/misc/pic_in_pic.dmi differ diff --git a/icons/mob/custom_synthetic/custom-synthetic.dmi b/icons/mob/custom_synthetic/custom-synthetic.dmi index 3d3a7a5c685..5b50438d6dd 100644 Binary files a/icons/mob/custom_synthetic/custom-synthetic.dmi and b/icons/mob/custom_synthetic/custom-synthetic.dmi differ diff --git a/icons/mob/human_races/r_diona.dmi b/icons/mob/human_races/r_diona.dmi index 5a3bf17bb7c..be8119aa67b 100644 Binary files a/icons/mob/human_races/r_diona.dmi and b/icons/mob/human_races/r_diona.dmi differ diff --git a/icons/mob/inhands/flags_lefthand.dmi b/icons/mob/inhands/flags_lefthand.dmi index c619b351106..266dbe2d418 100644 Binary files a/icons/mob/inhands/flags_lefthand.dmi and b/icons/mob/inhands/flags_lefthand.dmi differ diff --git a/icons/mob/inhands/flags_righthand.dmi b/icons/mob/inhands/flags_righthand.dmi index 84b4e2e8067..908ae65a67a 100644 Binary files a/icons/mob/inhands/flags_righthand.dmi and b/icons/mob/inhands/flags_righthand.dmi differ diff --git a/icons/mob/inhands/fluff_lefthand.dmi b/icons/mob/inhands/fluff_lefthand.dmi index 9635833f580..20fc1869426 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 be5280493c9..678f5190ad7 100644 Binary files a/icons/mob/inhands/fluff_righthand.dmi and b/icons/mob/inhands/fluff_righthand.dmi differ diff --git a/icons/mob/radial.dmi b/icons/mob/radial.dmi new file mode 100644 index 00000000000..ba3179a4214 Binary files /dev/null and b/icons/mob/radial.dmi differ diff --git a/icons/mob/screen_ai.dmi b/icons/mob/screen_ai.dmi index 61905492ce1..78071da391f 100644 Binary files a/icons/mob/screen_ai.dmi and b/icons/mob/screen_ai.dmi differ diff --git a/icons/mob/species/armalis/mask.dmi b/icons/mob/species/armalis/mask.dmi deleted file mode 100644 index e69de29bb2d..00000000000 diff --git a/icons/mob/species/drask/suit.dmi b/icons/mob/species/drask/suit.dmi index 0259f9c9275..697c3888f77 100644 Binary files a/icons/mob/species/drask/suit.dmi and b/icons/mob/species/drask/suit.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/species/skrell/helmet.dmi b/icons/mob/species/skrell/helmet.dmi index 7c7142516cb..e17fa4174c5 100644 Binary files a/icons/mob/species/skrell/helmet.dmi and b/icons/mob/species/skrell/helmet.dmi differ diff --git a/icons/mob/species/skrell/suit.dmi b/icons/mob/species/skrell/suit.dmi index 0dcd38e5364..878831b5595 100644 Binary files a/icons/mob/species/skrell/suit.dmi and b/icons/mob/species/skrell/suit.dmi differ diff --git a/icons/mob/species/tajaran/helmet.dmi b/icons/mob/species/tajaran/helmet.dmi index a2626a6fb24..41e8c84959b 100644 Binary files a/icons/mob/species/tajaran/helmet.dmi and b/icons/mob/species/tajaran/helmet.dmi differ diff --git a/icons/mob/species/tajaran/suit.dmi b/icons/mob/species/tajaran/suit.dmi index 0a6cf3c9787..1b7299cc8fb 100644 Binary files a/icons/mob/species/tajaran/suit.dmi and b/icons/mob/species/tajaran/suit.dmi differ diff --git a/icons/mob/suit.dmi b/icons/mob/suit.dmi index b721063fcf9..5c64de09e86 100644 Binary files a/icons/mob/suit.dmi and b/icons/mob/suit.dmi differ diff --git a/icons/mob/uniform.dmi b/icons/mob/uniform.dmi index bef18a0ddcc..6ba24f30489 100644 Binary files a/icons/mob/uniform.dmi and b/icons/mob/uniform.dmi differ diff --git a/icons/mob/uniform_fat.dmi b/icons/mob/uniform_fat.dmi index 19bce2646a0..a3e5dc73e4e 100644 Binary files a/icons/mob/uniform_fat.dmi and b/icons/mob/uniform_fat.dmi differ diff --git a/icons/obj/custom_items.dmi b/icons/obj/custom_items.dmi index 0d2e22eab68..ec96b276ab6 100644 Binary files a/icons/obj/custom_items.dmi and b/icons/obj/custom_items.dmi differ diff --git a/icons/obj/drinks.dmi b/icons/obj/drinks.dmi index 90c11b659b5..7792347c125 100644 Binary files a/icons/obj/drinks.dmi and b/icons/obj/drinks.dmi differ diff --git a/icons/obj/gate.dmi b/icons/obj/gate.dmi deleted file mode 100644 index e69de29bb2d..00000000000 diff --git a/icons/obj/hypo.dmi b/icons/obj/hypo.dmi index a51a981251d..7dd561de617 100644 Binary files a/icons/obj/hypo.dmi and b/icons/obj/hypo.dmi differ diff --git a/icons/obj/interface.dmi b/icons/obj/interface.dmi new file mode 100644 index 00000000000..3b64561d5e0 Binary files /dev/null and b/icons/obj/interface.dmi differ diff --git a/icons/obj/machines/suit_storage.dmi b/icons/obj/machines/suit_storage.dmi new file mode 100644 index 00000000000..e61f9567c60 Binary files /dev/null and b/icons/obj/machines/suit_storage.dmi differ diff --git a/icons/obj/objects.dmi b/icons/obj/objects.dmi index 5aadb7e7277..1206aa48dfc 100644 Binary files a/icons/obj/objects.dmi and b/icons/obj/objects.dmi differ diff --git a/icons/obj/pipes/disposal.dmi b/icons/obj/pipes/disposal.dmi index 83440fc1b52..f2dd62c9393 100644 Binary files a/icons/obj/pipes/disposal.dmi and b/icons/obj/pipes/disposal.dmi differ diff --git a/icons/obj/smooth_structures/fancy_table.dmi b/icons/obj/smooth_structures/fancy_table.dmi index 401452360ac..c675550ed5a 100644 Binary files a/icons/obj/smooth_structures/fancy_table.dmi and b/icons/obj/smooth_structures/fancy_table.dmi differ diff --git a/icons/obj/stationobjs.dmi b/icons/obj/stationobjs.dmi index d4b8e837db6..0b7ae5b5600 100755 Binary files a/icons/obj/stationobjs.dmi and b/icons/obj/stationobjs.dmi differ diff --git a/icons/obj/suitstorage.dmi b/icons/obj/suitstorage.dmi deleted file mode 100644 index 3fc3e4e7337..00000000000 Binary files a/icons/obj/suitstorage.dmi and /dev/null differ diff --git a/icons/obj/surgery.dmi b/icons/obj/surgery.dmi index b3723f9a53d..6a211451466 100644 Binary files a/icons/obj/surgery.dmi and b/icons/obj/surgery.dmi differ diff --git a/icons/obj/tools.dmi b/icons/obj/tools.dmi index a78a0babdc4..1111dfb02ee 100644 Binary files a/icons/obj/tools.dmi and b/icons/obj/tools.dmi differ diff --git a/icons/obj/toy.dmi b/icons/obj/toy.dmi index b7f40b4cdbb..524418ba0e9 100644 Binary files a/icons/obj/toy.dmi and b/icons/obj/toy.dmi differ diff --git a/icons/turf/areas.dmi b/icons/turf/areas.dmi index f4a0157fd86..74f68f69944 100755 Binary files a/icons/turf/areas.dmi and b/icons/turf/areas.dmi differ diff --git a/icons/turf/floors.dmi b/icons/turf/floors.dmi index 9a62da82286..2f493a8acc1 100644 Binary files a/icons/turf/floors.dmi and b/icons/turf/floors.dmi differ diff --git a/icons/turf/floors/ironsand.dmi b/icons/turf/floors/ironsand.dmi new file mode 100644 index 00000000000..5b1d645d80f Binary files /dev/null and b/icons/turf/floors/ironsand.dmi differ diff --git a/icons/turf/floors/plating.dmi b/icons/turf/floors/plating.dmi index c3c480bfc6a..fee52346e3c 100644 Binary files a/icons/turf/floors/plating.dmi and b/icons/turf/floors/plating.dmi differ diff --git a/nano/templates/autolathe.tmpl b/nano/templates/autolathe.tmpl index 55e017ca95c..d56ae4926c3 100644 --- a/nano/templates/autolathe.tmpl +++ b/nano/templates/autolathe.tmpl @@ -121,7 +121,7 @@ Used In File(s): \code\game\machinery\autolathe.dm {{if !value.can_build}} {{/if}} - {{:value.name}} {{:value.multiplier > 1 ? '(xvalue.multiplier)' : ''}} + {{:value.name}} {{:value.multiplier > 1 ? '(' + value.multiplier + ')' : ''}} {{if !value.can_build}} {{/if}} diff --git a/nano/templates/file_manager.tmpl b/nano/templates/file_manager.tmpl index 1bdb0cd95c4..51d40b84475 100644 --- a/nano/templates/file_manager.tmpl +++ b/nano/templates/file_manager.tmpl @@ -32,6 +32,11 @@ {{:helper.link('DELETE', 'trash', {'action' : 'PRG_deletefile', 'name' : value.name}, value.undeletable ? 'disabled' : null)}} {{:helper.link('RENAME', 'pencil', {'action' : 'PRG_rename', 'name' : value.name}, value.undeletable ? 'disabled' : null)}} {{:helper.link('CLONE', 'files-o', {'action' : 'PRG_clone', 'name' : value.name}, value.undeletable ? 'disabled' : null)}} + {{if !value.encrypted}} + {{:helper.link('ENCRYPT', null, {'action' : 'PRG_encrypt', 'name' : value.name}, value.undeletable ? 'disabled' : null)}} + {{else}} + {{:helper.link('DECRYPT', null, {'action' : 'PRG_decrypt', 'name' : value.name}, value.undeletable ? 'disabled' : null)}} + {{/if}} {{if data.usbconnected}} {{:helper.link('EXPORT', 'upload', {'action' : 'PRG_copytousb', 'name' : value.name}, value.undeletable ? 'disabled' : null)}} {{/if}} diff --git a/nano/templates/newscaster.tmpl b/nano/templates/newscaster.tmpl index 16c201407e3..4ddf376e71f 100644 --- a/nano/templates/newscaster.tmpl +++ b/nano/templates/newscaster.tmpl @@ -139,11 +139,15 @@ Property of Nanotrasen
    {{else}} {{for data.messages}}
    - {{:value.title}}
    - {{:value.body}}
    +

    + {{:value.title}}
    +

    {{if value.img}} -
    - {{/if}} +
    + {{/if}} +

    + {{:value.body}}
    +

    [{{:value.message_type}} by {{:value.author}}]
    Message view count: {{:value.view_count}}
    @@ -296,10 +300,10 @@ Property of Nanotrasen

    {{:data.description}}
-
Photo:
+
Photo:

{{if data.photo}} - +
{{else}} None {{/if}} diff --git a/nano/templates/rcd.tmpl b/nano/templates/rcd.tmpl index e72b6253a17..d054156665d 100644 --- a/nano/templates/rcd.tmpl +++ b/nano/templates/rcd.tmpl @@ -1,12 +1,12 @@ {{if data.menu == 1}}

RCD Modes:

-
{{:helper.link('Floor and Walls', 'arrow-right', {'mode': 1}, data.mode == 1 ? 'linkOn' : null)}}
+
{{:helper.link('Floor and Walls', 'arrow-right', {'mode': "Turf"}, data.mode == "Turf" ? 'linkOn' : null)}}
- {{:helper.link('Airlock', 'arrow-right', {'mode': 2}, data.mode == 2 ? 'linkOn' : null)}} + {{:helper.link('Airlock', 'arrow-right', {'mode': "Airlock"}, data.mode == "Airlock" ? 'linkOn' : null)}} {{:helper.link('', 'gear', {'menu': 2})}}
-
{{:helper.link('Deconstruct', 'arrow-right', {'mode': 3}, data.mode == 3 ? 'linkOn' : null)}}
-
{{:helper.link('Windows', 'arrow-right', {'mode': 4}, data.mode == 4 ? 'linkOn' : null)}}
+
{{:helper.link('Deconstruct', 'arrow-right', {'mode': "Deconstruct"}, data.mode == "Deconstruct" ? 'linkOn' : null)}}
+
{{:helper.link('Windows', 'arrow-right', {'mode': "Windows"}, data.mode == "Windows" ? 'linkOn' : null)}}
RCD ammo: {{:data.matter}} / {{:data.max_matter}}
diff --git a/paradise.dme b/paradise.dme index 4d856527803..b1c1c655778 100644 --- a/paradise.dme +++ b/paradise.dme @@ -135,6 +135,8 @@ #include "code\_onclick\hud\monkey.dm" #include "code\_onclick\hud\movable_screen_objects.dm" #include "code\_onclick\hud\other_mobs.dm" +#include "code\_onclick\hud\picture_in_picture.dm" +#include "code\_onclick\hud\radial.dm" #include "code\_onclick\hud\robot.dm" #include "code\_onclick\hud\screen_objects.dm" #include "code\_onclick\hud\swarmer.dm" @@ -203,6 +205,7 @@ #include "code\controllers\subsystem\atoms.dm" #include "code\controllers\subsystem\fires.dm" #include "code\controllers\subsystem\garbage.dm" +#include "code\controllers\subsystem\icon_smooth.dm" #include "code\controllers\subsystem\machinery.dm" #include "code\controllers\subsystem\mobs.dm" #include "code\controllers\subsystem\nano_mob_hunter.dm" @@ -210,6 +213,7 @@ #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" @@ -1736,6 +1740,7 @@ #include "code\modules\mob\living\silicon\ai\life.dm" #include "code\modules\mob\living\silicon\ai\login.dm" #include "code\modules\mob\living\silicon\ai\logout.dm" +#include "code\modules\mob\living\silicon\ai\multicam.dm" #include "code\modules\mob\living\silicon\ai\say.dm" #include "code\modules\mob\living\silicon\ai\update_status.dm" #include "code\modules\mob\living\silicon\ai\freelook\cameranet.dm" diff --git a/sound/effects/bone_break_1.ogg b/sound/effects/bone_break_1.ogg new file mode 100644 index 00000000000..0c7d31a9769 Binary files /dev/null and b/sound/effects/bone_break_1.ogg differ diff --git a/sound/effects/bone_break_2.ogg b/sound/effects/bone_break_2.ogg new file mode 100644 index 00000000000..0e0c71def88 Binary files /dev/null and b/sound/effects/bone_break_2.ogg differ diff --git a/sound/effects/bone_break_3.ogg b/sound/effects/bone_break_3.ogg new file mode 100644 index 00000000000..420c61a9f8d Binary files /dev/null and b/sound/effects/bone_break_3.ogg differ diff --git a/sound/effects/bone_break_4.ogg b/sound/effects/bone_break_4.ogg new file mode 100644 index 00000000000..93ad793b6a2 Binary files /dev/null and b/sound/effects/bone_break_4.ogg differ diff --git a/sound/effects/bone_break_5.ogg b/sound/effects/bone_break_5.ogg new file mode 100644 index 00000000000..e052c0ba091 Binary files /dev/null and b/sound/effects/bone_break_5.ogg differ diff --git a/sound/effects/bone_break_6.ogg b/sound/effects/bone_break_6.ogg new file mode 100644 index 00000000000..7cba2da19ae Binary files /dev/null and b/sound/effects/bone_break_6.ogg differ diff --git a/sound/items/cartwheel1.ogg b/sound/items/cartwheel1.ogg new file mode 100644 index 00000000000..362f3acb428 Binary files /dev/null and b/sound/items/cartwheel1.ogg differ diff --git a/sound/items/cartwheel2.ogg b/sound/items/cartwheel2.ogg new file mode 100644 index 00000000000..436fe2e6071 Binary files /dev/null and b/sound/items/cartwheel2.ogg differ