Merge branch 'master' of https://github.com/tgstation/-tg-station into HandcuffOverlayFix

Conflicts:
	code/game/objects/structures/watercloset.dm
	code/modules/clothing/head/helmet.dm
	code/modules/mob/living/carbon/carbon.dm
This commit is contained in:
phil235
2015-07-20 22:37:06 +02:00
172 changed files with 5662 additions and 5390 deletions
File diff suppressed because it is too large Load Diff
@@ -1,6 +0,0 @@
/*
The contents of these files should not be ticked/included while compiling.
These files are only included, and compiled, when \_maps\Asteroidstation.dm is included; as these files are necessary to run Asteroidstation.
You do not have to tick them yourself, it will be automatically done by the asteroidstation.dm file.
*/
+169 -170
View File
@@ -160,7 +160,7 @@
"dd" = (/turf/simulated/floor/plating,/turf/simulated/wall/shuttle{icon_state = "swall_f6"; dir = 2},/area/centcom/evac)
"de" = (/turf/simulated/floor/plasteel/shuttle,/turf/simulated/wall/shuttle{icon_state = "swall_f9"; dir = 2},/area/centcom/evac)
"df" = (/obj/structure/closet/emcloset,/turf/simulated/floor/plasteel/shuttle,/area/centcom/evac)
"dg" = (/turf/simulated/floor/plasteel/shuttle{icon_state = "floor2"},/area/centcom/evac)
"dg" = (/obj/machinery/door/airlock/shuttle,/turf/simulated/floor/plasteel/shuttle{icon_state = "shuttlefloor3"},/area/centcom/evac)
"dh" = (/obj/structure/table,/obj/item/weapon/storage/firstaid/toxin{pixel_x = -2; pixel_y = 4},/obj/item/weapon/storage/firstaid/toxin,/turf/simulated/floor/plasteel/shuttle,/area/centcom/evac)
"di" = (/obj/structure/table,/obj/item/weapon/storage/firstaid/fire,/obj/item/weapon/storage/firstaid/fire{pixel_x = -2; pixel_y = 4},/turf/simulated/floor/plasteel/shuttle,/area/centcom/evac)
"dj" = (/obj/structure/table,/obj/item/weapon/storage/firstaid/regular{pixel_x = 2; pixel_y = 0},/obj/item/weapon/storage/firstaid/regular{pixel_x = -2; pixel_y = 4},/turf/simulated/floor/plasteel/shuttle,/area/centcom/evac)
@@ -183,33 +183,33 @@
"dA" = (/obj/machinery/flasher_button{id = "tdomeflash"; pixel_x = 0; pixel_y = 0},/obj/structure/table,/turf/simulated/floor/plasteel/redyellow,/area/tdome/tdomeadmin)
"dB" = (/turf/simulated/wall/shuttle{icon_state = "swall12"; dir = 2},/area/centcom/evac)
"dC" = (/turf/simulated/wall/shuttle{icon_state = "swallc1"; dir = 2},/area/centcom/evac)
"dD" = (/obj/structure/table/reinforced,/obj/item/weapon/paper_bin,/turf/simulated/floor/plasteel/shuttle{icon_state = "floor4"},/area/centcom/evac)
"dE" = (/obj/structure/table/reinforced,/obj/item/weapon/storage/fancy/donut_box,/turf/simulated/floor/plasteel/shuttle{icon_state = "floor4"},/area/centcom/evac)
"dF" = (/obj/structure/table/reinforced,/obj/item/weapon/pen,/turf/simulated/floor/plasteel/shuttle{icon_state = "floor4"},/area/centcom/evac)
"dG" = (/obj/structure/table/reinforced,/turf/simulated/floor/plasteel/shuttle{icon_state = "floor4"},/area/centcom/evac)
"dH" = (/obj/machinery/sleeper{icon_state = "sleeper-open"; dir = 8},/turf/simulated/floor/plasteel/shuttle,/area/centcom/evac)
"dD" = (/turf/simulated/floor/plasteel/shuttle{icon_state = "shuttlefloor3"},/area/centcom/evac)
"dE" = (/obj/structure/table/reinforced,/obj/item/weapon/storage/fancy/donut_box,/turf/simulated/floor/plasteel/shuttle,/area/centcom/evac)
"dF" = (/obj/structure/table/reinforced,/obj/item/weapon/paper_bin,/turf/simulated/floor/plasteel/shuttle,/area/centcom/evac)
"dG" = (/obj/structure/table/reinforced,/turf/simulated/floor/plasteel/shuttle,/area/centcom/evac)
"dH" = (/obj/structure/table/reinforced,/obj/item/weapon/pen,/turf/simulated/floor/plasteel/shuttle,/area/centcom/evac)
"dI" = (/obj/structure/stool/bed/chair{dir = 8},/turf/simulated/floor/plasteel/shuttle,/area/centcom/evac)
"dJ" = (/turf/simulated/wall/shuttle{icon_state = "swallc2"; dir = 2},/area/centcom/evac)
"dK" = (/turf/indestructible/riveted,/area/tdome/tdomeadmin)
"dL" = (/obj/machinery/computer/security/telescreen{pixel_y = -32},/turf/simulated/floor/plasteel/redyellow,/area/tdome/tdomeadmin)
"dM" = (/turf/simulated/floor/plasteel,/area/tdome/tdomeadmin)
"dN" = (/obj/machinery/computer/secure_data,/turf/simulated/floor/plasteel/shuttle{icon_state = "floor4"},/area/centcom/evac)
"dO" = (/obj/structure/stool/bed/chair{dir = 1},/turf/simulated/floor/plasteel/shuttle{icon_state = "floor4"},/area/centcom/evac)
"dP" = (/obj/structure/stool/bed/chair{dir = 4},/turf/simulated/floor/plasteel/shuttle{icon_state = "floor4"},/area/centcom/evac)
"dQ" = (/obj/structure/table/reinforced,/obj/item/weapon/clipboard,/obj/item/weapon/stamp,/turf/simulated/floor/plasteel/shuttle{icon_state = "floor4"},/area/centcom/evac)
"dN" = (/obj/structure/stool/bed/chair{dir = 1},/turf/simulated/floor/plasteel/shuttle,/area/centcom/evac)
"dO" = (/obj/machinery/computer/secure_data,/turf/simulated/floor/plasteel/shuttle,/area/centcom/evac)
"dP" = (/obj/structure/table/reinforced,/obj/item/weapon/clipboard,/obj/item/weapon/stamp,/turf/simulated/floor/plasteel/shuttle,/area/centcom/evac)
"dQ" = (/obj/structure/table,/obj/item/device/flash/handheld,/turf/simulated/floor/plasteel/shuttle,/area/centcom/evac)
"dR" = (/turf/indestructible/fakedoor{name = "Thunderdome Admin"},/area/tdome/tdomeadmin)
"dS" = (/obj/structure/table,/obj/machinery/door_control{id = "thunderdomehea"; name = "Heavy Supply Control"; pixel_y = 0; req_access_txt = "102"},/turf/simulated/floor/plasteel,/area/tdome/tdomeadmin)
"dT" = (/obj/structure/table,/obj/machinery/door_control{id = "thunderdome"; name = "Main Blast Doors Control"; pixel_y = 0; req_access_txt = "102"},/turf/simulated/floor/plasteel,/area/tdome/tdomeadmin)
"dU" = (/obj/structure/table,/obj/machinery/door_control{id = "thunderdomegen"; name = "General Supply Control"; pixel_y = 0; req_access_txt = "102"},/turf/simulated/floor/plasteel,/area/tdome/tdomeadmin)
"dV" = (/obj/structure/table,/obj/item/device/flash/handheld,/turf/simulated/floor/plasteel/shuttle{icon_state = "floor4"},/area/centcom/evac)
"dW" = (/turf/simulated/floor/plasteel/shuttle{icon_state = "floor4"},/area/centcom/evac)
"dV" = (/obj/structure/table,/obj/item/weapon/storage/box/handcuffs,/turf/simulated/floor/plasteel/shuttle,/area/centcom/evac)
"dW" = (/obj/machinery/door/window/northright{base_state = "right"; dir = 4; icon_state = "right"; name = "Security Desk"; req_access_txt = "103"},/turf/simulated/floor/plasteel/shuttle,/area/centcom/evac)
"dX" = (/obj/structure/stool/bed/chair{dir = 4},/turf/simulated/floor/plasteel/shuttle,/area/centcom/evac)
"dY" = (/obj/structure/table,/obj/item/weapon/storage/box/handcuffs,/turf/simulated/floor/plasteel/shuttle{icon_state = "floor4"},/area/centcom/evac)
"dZ" = (/obj/machinery/door/window/northright{base_state = "right"; dir = 4; icon_state = "right"; name = "Security Desk"; req_access_txt = "103"},/turf/simulated/floor/plasteel/shuttle{icon_state = "floor4"},/area/centcom/evac)
"dY" = (/obj/structure/stool/bed,/turf/simulated/floor/plasteel/shuttle{icon_state = "shuttlefloor3"},/area/centcom/evac)
"dZ" = (/obj/machinery/sleeper{icon_state = "sleeper-open"; dir = 8},/turf/simulated/floor/plasteel/shuttle{icon_state = "shuttlefloor3"},/area/centcom/evac)
"ea" = (/obj/docking_port/stationary{dir = 4; dwidth = 1; height = 4; id = "pod3_away"; name = "recovery ship"; width = 3},/turf/space,/area/space)
"eb" = (/turf/indestructible/riveted,/area/centcom/ferry)
"ec" = (/turf/indestructible/fakedoor,/area/centcom/ferry)
"ed" = (/obj/structure/stool/bed,/turf/simulated/floor/plasteel/shuttle,/area/centcom/evac)
"ed" = (/obj/machinery/door/airlock/shuttle{name = "Cockpit"; req_access_txt = "109"},/turf/simulated/floor/plasteel/shuttle,/area/centcom/evac)
"ee" = (/obj/structure/grille,/obj/structure/window/shuttle,/turf/simulated/floor/plating,/area/centcom/evac)
"ef" = (/obj/machinery/vending/coffee,/turf/simulated/floor/plasteel/black,/area/centcom/ferry)
"eg" = (/obj/machinery/vending/cigarette{products = list(/obj/item/weapon/storage/fancy/cigarettes/cigpack_syndicate = 7, /obj/item/weapon/storage/fancy/cigarettes/cigpack_uplift = 3, /obj/item/weapon/storage/fancy/cigarettes/cigpack_robust = 2, /obj/item/weapon/storage/fancy/cigarettes/cigpack_carp = 3, /obj/item/weapon/storage/fancy/cigarettes/cigpack_midori = 1, /obj/item/weapon/storage/box/matches = 10, /obj/item/weapon/storage/fancy/rollingpapers = 5)},/turf/simulated/floor/plasteel/black,/area/centcom/ferry)
@@ -217,7 +217,7 @@
"ei" = (/turf/simulated/floor/plasteel/black,/area/centcom/ferry)
"ej" = (/obj/structure/flora/kirbyplants,/turf/simulated/floor/plasteel/black,/area/centcom/ferry)
"ek" = (/obj/structure/stool/bed/chair/office/dark,/obj/effect/landmark{name = "Emergencyresponseteam"},/turf/simulated/floor/plasteel/black,/area/centcom/ferry)
"el" = (/obj/machinery/door/airlock/shuttle,/turf/simulated/floor/plasteel/shuttle{icon_state = "floor2"},/area/centcom/evac)
"el" = (/turf/simulated/wall/shuttle{icon_state = "swall14"; dir = 2},/area/shuttle/supply)
"em" = (/obj/docking_port/stationary{dir = 4; dwidth = 1; height = 4; id = "pod4_away"; name = "recovery ship"; width = 3},/turf/space,/area/space)
"en" = (/obj/structure/table/reinforced,/turf/simulated/floor/vault,/area/centcom/ferry)
"eo" = (/obj/structure/stool/bed/chair/office/dark{dir = 8},/obj/effect/landmark{name = "Emergencyresponseteam"},/turf/simulated/floor/plasteel/black,/area/centcom/ferry)
@@ -237,7 +237,7 @@
"eC" = (/obj/structure/table/wood,/obj/item/weapon/reagent_containers/food/drinks/bottle/rum,/obj/item/weapon/reagent_containers/food/drinks/bottle/tequila,/obj/item/weapon/reagent_containers/food/drinks/bottle/vodka{pixel_x = -5},/obj/item/weapon/reagent_containers/food/drinks/bottle/whiskey{pixel_x = 5},/turf/simulated/floor/plasteel/black,/area/centcom/ferry)
"eD" = (/turf/simulated/wall/shuttle{icon_state = "swall14"; dir = 2},/area/centcom/evac)
"eE" = (/turf/simulated/wall/shuttle{icon_state = "swallc4"; dir = 2},/area/centcom/evac)
"eF" = (/obj/machinery/door/airlock/shuttle{name = "Cockpit"; req_access_txt = "109"},/turf/simulated/floor/plasteel/shuttle{icon_state = "floor2"},/area/centcom/evac)
"eF" = (/obj/machinery/door/airlock/shuttle{name = "Supply Shuttle Airlock"},/turf/simulated/wall/shuttle{icon_state = "swall14"; dir = 2},/area/shuttle/supply)
"eG" = (/turf/simulated/floor/plasteel/freezer{dir = 2},/area/centcom/ferry)
"eH" = (/obj/machinery/door/poddoor/ert,/turf/simulated/floor/plasteel/freezer{dir = 2},/area/centcom/ferry)
"eI" = (/obj/structure/stool/bed/chair/office/dark{dir = 1},/obj/effect/landmark{name = "Emergencyresponseteam"},/turf/simulated/floor/plasteel/black,/area/centcom/ferry)
@@ -318,7 +318,7 @@
"gf" = (/obj/structure/table/wood,/turf/simulated/floor/wood,/area/centcom/ferry)
"gg" = (/turf/indestructible/riveted,/area/start)
"gh" = (/obj/machinery/door/airlock/centcom{name = "Transport Shuttle"; opacity = 1; req_access_txt = "101"},/turf/simulated/floor/plasteel/darkgreen/side{dir = 2},/area/centcom/ferry)
"gi" = (/turf/simulated/wall/shuttle{icon_state = "swall_s6"; dir = 2},/area/shuttle/supply)
"gi" = (/obj/machinery/door/poddoor{id = "QMLoaddoor"; name = "Supply Dock Loading Door"},/obj/machinery/conveyor{dir = 2; id = "QMLoad"},/turf/simulated/wall/shuttle{icon_state = "swall14"; dir = 2},/area/shuttle/supply)
"gj" = (/turf/simulated/wall/shuttle{icon_state = "swall12"; dir = 2},/area/shuttle/supply)
"gk" = (/turf/simulated/wall/shuttle{icon_state = "swall_s10"; dir = 2},/area/shuttle/supply)
"gl" = (/turf/space,/area/shuttle/supply)
@@ -348,11 +348,11 @@
"gJ" = (/turf/indestructible/fakeglass{icon_state = "fakewindows2"; dir = 1},/area/centcom/control)
"gK" = (/turf/simulated/floor/plasteel/green/corner,/area/centcom/control)
"gL" = (/obj/structure/table,/obj/item/weapon/paper_bin,/obj/item/weapon/pen,/turf/simulated/floor/plasteel/black,/area/centcom/control)
"gM" = (/turf/simulated/wall/shuttle{icon_state = "swall_s5"; dir = 2},/area/shuttle/supply)
"gN" = (/obj/machinery/door/airlock/shuttle{name = "Supply Shuttle Airlock"},/turf/simulated/floor/plasteel/shuttle,/area/shuttle/supply)
"gO" = (/obj/machinery/door/poddoor{id = "QMLoaddoor"; name = "Supply Dock Loading Door"},/obj/machinery/conveyor{dir = 2; id = "QMLoad"},/turf/simulated/floor/plasteel/shuttle,/area/shuttle/supply)
"gP" = (/obj/machinery/door/airlock/shuttle{name = "Supply Shuttle Airlock"; req_access_txt = "31"},/obj/docking_port/mobile/supply{dwidth = 5; width = 12},/obj/docking_port/stationary{dir = 8; dwidth = 5; height = 7; id = "supply_away"; name = "Centcom"; width = 12},/turf/simulated/floor/plasteel/shuttle,/area/shuttle/supply)
"gQ" = (/turf/simulated/wall/shuttle{icon_state = "swall_s9"; dir = 2},/area/shuttle/supply)
"gM" = (/obj/machinery/door/airlock/shuttle{name = "Supply Shuttle Airlock"; req_access_txt = "31"},/obj/docking_port/mobile/supply{dwidth = 5; width = 12},/obj/docking_port/stationary{dir = 8; dwidth = 5; height = 7; id = "supply_away"; name = "Centcom"; width = 12},/turf/simulated/wall/shuttle{icon_state = "swall14"; dir = 2},/area/shuttle/supply)
"gN" = (/obj/docking_port/mobile/emergency{dwidth = 0; height = 28; width = 13},/obj/docking_port/stationary{dir = 4; dwidth = 0; height = 28; id = "emergency_away"; name = "Centcom"; width = 13},/turf/space,/area/space)
"gO" = (/obj/machinery/door/airlock/shuttle{name = "Emergency Shuttle Airlock"},/turf/simulated/floor/plasteel/shuttle{icon_state = "shuttlefloor2"},/area/shuttle/escape)
"gP" = (/obj/structure/grille,/obj/structure/window/shuttle,/turf/simulated/floor/plating/airless,/area/shuttle/escape)
"gQ" = (/obj/machinery/door/airlock/shuttle{name = "Emergency Shuttle Airlock"},/turf/simulated/floor/plasteel/shuttle{icon_state = "shuttlefloor3"},/area/shuttle/escape)
"gR" = (/turf/simulated/floor/plasteel/green/side{dir = 4},/area/centcom/control)
"gS" = (/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"},/obj/structure/showcase/fakeid,/turf/simulated/floor/plasteel/black,/area/centcom/control)
"gT" = (/obj/structure/stool/bed/chair/office/dark{dir = 8},/turf/simulated/floor/plasteel/black,/area/centcom/control)
@@ -428,17 +428,17 @@
"il" = (/obj/machinery/door/airlock/external{name = "Port Docking Bay 1"},/turf/space,/area/centcom/evac)
"im" = (/turf/simulated/wall/shuttle{icon_state = "swall_s6"; dir = 2},/area/shuttle/escape)
"in" = (/obj/structure/window/shuttle,/obj/structure/grille,/turf/space,/area/shuttle/escape)
"io" = (/obj/machinery/door/airlock/shuttle{name = "Emergency Shuttle Airlock"},/turf/simulated/floor/plasteel/shuttle,/area/shuttle/escape)
"io" = (/obj/structure/ore_box,/turf/simulated/floor/plasteel/shuttle{icon_state = "shuttlefloor2"},/area/shuttle/escape)
"ip" = (/turf/simulated/wall/shuttle{icon_state = "swall_s10"; dir = 2},/area/shuttle/escape)
"iq" = (/turf/indestructible/fakeglass{icon_state = "fakewindows2"; dir = 1},/area/centcom/evac)
"ir" = (/turf/simulated/floor/engine,/area/centcom/evac)
"iq" = (/obj/machinery/recharge_station,/turf/simulated/floor/plasteel/shuttle{icon_state = "shuttlefloor2"},/area/shuttle/escape)
"ir" = (/turf/simulated/floor/plasteel/shuttle{icon_state = "shuttlefloor2"},/area/shuttle/escape)
"is" = (/turf/simulated/wall/shuttle{icon_state = "swall12"; dir = 2},/area/shuttle/escape)
"it" = (/turf/simulated/wall/shuttle{icon_state = "swall14"; dir = 2},/area/shuttle/escape)
"iu" = (/obj/machinery/door/airlock/shuttle{name = "Emergency Shuttle Airlock"; req_access_txt = "2"},/turf/simulated/floor/plasteel/shuttle/red,/area/shuttle/escape)
"iv" = (/turf/simulated/wall/shuttle{icon_state = "swall11"; dir = 2},/area/shuttle/escape)
"iw" = (/obj/structure/ore_box,/turf/simulated/floor/plasteel/shuttle{icon_state = "floor2"},/area/shuttle/escape)
"ix" = (/turf/simulated/floor/plasteel/shuttle{icon_state = "floor2"},/area/shuttle/escape)
"iy" = (/obj/machinery/recharge_station,/turf/simulated/floor/plasteel/shuttle{icon_state = "floor2"},/area/shuttle/escape)
"iw" = (/turf/simulated/floor/plasteel/shuttle{icon_state = "shuttlefloor3"},/area/shuttle/escape)
"ix" = (/turf/simulated/wall/shuttle{tag = "icon-swall_f13"; icon_state = "swall_f13"},/area/shuttle/escape)
"iy" = (/turf/simulated/wall/shuttle{tag = "icon-swall_f11"; icon_state = "swall_f11"},/area/shuttle/escape)
"iz" = (/turf/simulated/wall/shuttle{icon_state = "swall7"; dir = 2},/area/shuttle/escape)
"iA" = (/obj/structure/shuttle/engine/propulsion{tag = "icon-propulsion (EAST)"; icon_state = "propulsion"; dir = 4},/turf/space,/area/shuttle/escape)
"iB" = (/obj/structure/shuttle/engine/heater{tag = "icon-heater (WEST)"; icon_state = "heater"; dir = 8},/turf/simulated/floor/plating/airless,/area/shuttle/escape)
@@ -449,16 +449,16 @@
"iG" = (/turf/simulated/wall/shuttle{icon_state = "swall15"; dir = 2},/area/shuttle/escape)
"iH" = (/turf/simulated/wall/shuttle{icon_state = "swallc4"; dir = 2},/area/shuttle/escape)
"iI" = (/turf/simulated/wall/shuttle{icon_state = "swall13"; dir = 2},/area/shuttle/escape)
"iJ" = (/obj/machinery/door/airlock/shuttle{name = "Emergency Shuttle Airlock"},/obj/docking_port/mobile/emergency,/obj/docking_port/stationary{dir = 4; dwidth = 9; height = 11; id = "emergency_away"; name = "Centcom"; width = 22},/turf/simulated/floor/plasteel/shuttle,/area/shuttle/escape)
"iJ" = (/obj/structure/window/shuttle,/obj/structure/grille,/turf/simulated/floor/plating/airless,/area/shuttle/escape)
"iK" = (/obj/structure/stool/bed/chair{dir = 4},/obj/item/device/radio/intercom{dir = 8; name = "Station Intercom (General)"; pixel_x = -28; tag = "west"},/turf/simulated/floor/plasteel/shuttle/red,/area/shuttle/escape)
"iL" = (/obj/machinery/suit_storage_unit,/turf/simulated/floor/plasteel/shuttle{icon_state = "floor2"},/area/shuttle/escape)
"iM" = (/obj/machinery/door/airlock/mining{name = "Emergency Shuttle Storage"; req_access_txt = "0"},/turf/simulated/floor/plasteel/shuttle{icon_state = "floor2"},/area/shuttle/escape)
"iL" = (/obj/machinery/suit_storage_unit,/turf/simulated/floor/plasteel/shuttle{icon_state = "shuttlefloor2"},/area/shuttle/escape)
"iM" = (/obj/structure/extinguisher_cabinet{pixel_y = 30; tag = "(north)"},/turf/simulated/floor/plasteel/shuttle{icon_state = "shuttlefloor3"},/area/shuttle/escape)
"iN" = (/turf/simulated/floor/plasteel/shuttle,/area/shuttle/escape)
"iO" = (/obj/structure/closet,/turf/simulated/floor/plasteel/shuttle,/area/shuttle/escape)
"iP" = (/obj/structure/table,/obj/item/weapon/extinguisher,/obj/item/weapon/crowbar,/turf/simulated/floor/plasteel/shuttle,/area/shuttle/escape)
"iQ" = (/obj/structure/stool/bed/chair,/obj/structure/extinguisher_cabinet{pixel_y = 30; tag = "(north)"},/turf/simulated/floor/plasteel/shuttle,/area/shuttle/escape)
"iQ" = (/obj/machinery/door/airlock/mining{name = "Emergency Shuttle Storage"; req_access_txt = "0"},/turf/simulated/floor/plasteel/shuttle{icon_state = "shuttlefloor2"},/area/shuttle/escape)
"iR" = (/obj/structure/stool/bed/chair,/turf/simulated/floor/plasteel/shuttle,/area/shuttle/escape)
"iS" = (/obj/structure/stool/bed/chair,/obj/item/device/radio/intercom{broadcasting = 0; name = "Station Intercom (General)"; pixel_y = 23; tag = "north"},/turf/simulated/floor/plasteel/shuttle,/area/shuttle/escape)
"iS" = (/obj/structure/closet/emcloset,/obj/item/device/radio/intercom{broadcasting = 0; name = "Station Intercom (General)"; pixel_y = 23; tag = "north"},/turf/simulated/floor/plasteel/shuttle,/area/shuttle/escape)
"iT" = (/obj/structure/table,/obj/item/weapon/storage/firstaid/fire,/obj/item/weapon/storage/firstaid/regular{pixel_x = 2; pixel_y = 3},/turf/simulated/floor/plasteel/shuttle,/area/shuttle/escape)
"iU" = (/obj/structure/closet/emcloset,/turf/simulated/floor/plasteel/shuttle,/area/shuttle/escape)
"iV" = (/obj/structure/stool/bed/roller,/turf/simulated/floor/plasteel/shuttle,/area/shuttle/escape)
@@ -482,32 +482,32 @@
"jn" = (/obj/machinery/door/airlock/glass_command{name = "Emergency Shuttle Cockpit"; req_access_txt = "19"},/turf/simulated/floor/plasteel/shuttle,/area/shuttle/escape)
"jo" = (/obj/structure/grille,/obj/structure/window/shuttle,/turf/simulated/floor/plasteel/shuttle,/area/shuttle/escape)
"jp" = (/obj/machinery/status_display,/turf/simulated/wall/shuttle{icon_state = "swall7"; dir = 2},/area/shuttle/escape)
"jq" = (/obj/structure/window/shuttle,/obj/structure/grille,/turf/simulated/floor/plasteel/shuttle{icon_state = "floor3"},/area/shuttle/escape)
"jq" = (/obj/machinery/computer/crew,/turf/simulated/floor/plasteel/shuttle{icon_state = "shuttlefloor3"},/area/shuttle/escape)
"jr" = (/obj/machinery/computer/communications,/turf/simulated/floor/plasteel/shuttle,/area/shuttle/escape)
"js" = (/obj/structure/stool/bed/chair/office/light{dir = 1; name = "Research Director"},/turf/simulated/floor/plasteel/shuttle,/area/shuttle/escape)
"jt" = (/obj/structure/stool/bed/chair/office/light{dir = 1; name = "Head of Personnel"},/turf/simulated/floor/plasteel/shuttle,/area/shuttle/escape)
"ju" = (/obj/structure/stool/bed/chair/office/light{dir = 1; name = "Chief Medical Officer"},/turf/simulated/floor/plasteel/shuttle,/area/shuttle/escape)
"jv" = (/obj/structure/extinguisher_cabinet{pixel_y = -30; tag = "(south)"},/turf/simulated/floor/plasteel/shuttle,/area/shuttle/escape)
"jw" = (/obj/machinery/status_display,/turf/simulated/wall/shuttle{icon_state = "swall2"; dir = 2},/area/shuttle/escape)
"jx" = (/obj/machinery/computer/crew,/turf/simulated/floor/plasteel/shuttle{icon_state = "floor3"},/area/shuttle/escape)
"jy" = (/turf/simulated/floor/plasteel/shuttle{icon_state = "floor3"},/area/shuttle/escape)
"jz" = (/obj/machinery/door/airlock/glass_medical{id_tag = null; name = "Escape Shuttle Infirmary"; req_access_txt = "5"},/turf/simulated/floor/plasteel/shuttle{icon_state = "floor3"},/area/shuttle/escape)
"jA" = (/obj/machinery/door/airlock/glass_medical{id_tag = null; name = "Escape Shuttle Infirmary"; req_access_txt = "0"},/turf/simulated/floor/plasteel/shuttle{icon_state = "floor3"},/area/shuttle/escape)
"jB" = (/obj/structure/stool/bed,/turf/simulated/floor/plasteel/shuttle{icon_state = "floor3"},/area/shuttle/escape)
"jC" = (/obj/structure/sink{icon_state = "sink"; dir = 8; pixel_x = -12; pixel_y = 2},/obj/structure/mirror{pixel_x = -30},/turf/simulated/floor/plasteel/shuttle,/area/shuttle/escape)
"jD" = (/obj/machinery/door/airlock{name = "Emergency Shuttle Restroom"},/turf/simulated/floor/plasteel/shuttle,/area/shuttle/escape)
"jx" = (/obj/machinery/door/airlock/glass_medical{id_tag = null; name = "Escape Shuttle Infirmary"; req_access_txt = "5"},/turf/simulated/floor/plasteel/shuttle{icon_state = "shuttlefloor3"},/area/shuttle/escape)
"jy" = (/obj/machinery/door/airlock/glass_medical{id_tag = null; name = "Escape Shuttle Infirmary"; req_access_txt = "0"},/turf/simulated/floor/plasteel/shuttle{icon_state = "shuttlefloor3"},/area/shuttle/escape)
"jz" = (/obj/structure/stool/bed,/turf/simulated/floor/plasteel/shuttle{icon_state = "shuttlefloor3"},/area/shuttle/escape)
"jA" = (/obj/structure/sink{icon_state = "sink"; dir = 8; pixel_x = -12; pixel_y = 2},/obj/structure/mirror{pixel_x = -30},/turf/simulated/floor/plasteel/shuttle{icon_state = "shuttlefloor3"},/area/shuttle/escape)
"jB" = (/obj/machinery/door/airlock{name = "Emergency Shuttle Restroom"},/turf/simulated/floor/plasteel/shuttle{icon_state = "shuttlefloor3"},/area/shuttle/escape)
"jC" = (/obj/machinery/sleeper{icon_state = "sleeper-open"; dir = 8},/turf/simulated/floor/plasteel/shuttle{icon_state = "shuttlefloor3"},/area/shuttle/escape)
"jD" = (/obj/item/device/radio/intercom{dir = 8; name = "Station Intercom (General)"; pixel_x = -28; tag = "west"},/turf/simulated/floor/plasteel/shuttle{icon_state = "shuttlefloor3"},/area/shuttle/escape)
"jE" = (/obj/structure/stool/bed/chair{dir = 1},/obj/item/device/radio/intercom{name = "Station Intercom (General)"; pixel_y = -29; tag = "south"},/turf/simulated/floor/plasteel/shuttle,/area/shuttle/escape)
"jF" = (/obj/structure/stool/bed/chair{dir = 1},/obj/structure/extinguisher_cabinet{pixel_y = -30; tag = "(south)"},/turf/simulated/floor/plasteel/shuttle,/area/shuttle/escape)
"jG" = (/obj/structure/table,/obj/item/weapon/extinguisher,/obj/item/weapon/crowbar,/obj/machinery/recharger,/turf/simulated/floor/plasteel/shuttle,/area/shuttle/escape)
"jH" = (/obj/machinery/sleeper{icon_state = "sleeper-open"; dir = 8},/turf/simulated/floor/plasteel/shuttle{icon_state = "floor3"},/area/shuttle/escape)
"jH" = (/obj/structure/closet/secure_closet/medical2,/turf/simulated/floor/plasteel/shuttle{icon_state = "shuttlefloor3"},/area/shuttle/escape)
"jI" = (/turf/simulated/wall/shuttle{icon_state = "swall_s9"; dir = 2},/area/shuttle/escape)
"jJ" = (/turf/simulated/wall/shuttle{icon_state = "swall_s5"; dir = 2},/area/shuttle/escape)
"jK" = (/obj/item/device/radio/intercom{dir = 8; name = "Station Intercom (General)"; pixel_x = -28; tag = "west"},/turf/simulated/floor/plasteel/shuttle{icon_state = "floor3"},/area/shuttle/escape)
"jL" = (/obj/structure/closet/secure_closet/medical2,/turf/simulated/floor/plasteel/shuttle{icon_state = "floor3"},/area/shuttle/escape)
"jM" = (/obj/structure/toilet{dir = 1},/turf/simulated/floor/plasteel/shuttle,/area/shuttle/escape)
"jN" = (/obj/structure/table,/obj/item/weapon/retractor,/obj/item/weapon/hemostat,/obj/item/weapon/scalpel,/turf/simulated/floor/plasteel/shuttle{icon_state = "floor3"},/area/shuttle/escape)
"jO" = (/obj/structure/optable,/turf/simulated/floor/plasteel/shuttle{icon_state = "floor3"},/area/shuttle/escape)
"jP" = (/obj/structure/table,/obj/item/weapon/circular_saw,/obj/item/weapon/cautery{pixel_x = 4},/obj/item/weapon/surgical_drapes,/turf/simulated/floor/plasteel/shuttle{icon_state = "floor3"},/area/shuttle/escape)
"jK" = (/obj/structure/toilet{dir = 1},/turf/simulated/floor/plasteel/shuttle{icon_state = "shuttlefloor3"},/area/shuttle/escape)
"jL" = (/obj/structure/table,/obj/item/weapon/retractor,/obj/item/weapon/hemostat,/obj/item/weapon/scalpel,/turf/simulated/floor/plasteel/shuttle{icon_state = "shuttlefloor3"},/area/shuttle/escape)
"jM" = (/obj/structure/table,/obj/item/weapon/circular_saw,/obj/item/weapon/cautery{pixel_x = 4},/obj/item/weapon/surgical_drapes,/turf/simulated/floor/plasteel/shuttle{icon_state = "shuttlefloor3"},/area/shuttle/escape)
"jN" = (/obj/structure/optable,/turf/simulated/floor/plasteel/shuttle{icon_state = "shuttlefloor3"},/area/shuttle/escape)
"jO" = (/turf/simulated/floor/plasteel/shuttle/red/syndicate,/area/shuttle/syndicate)
"jP" = (/obj/structure/table,/obj/machinery/microwave,/turf/simulated/floor/plasteel/shuttle/red/syndicate,/area/shuttle/syndicate)
"jQ" = (/turf/simulated/wall/shuttle,/area/shuttle/escape)
"jR" = (/turf/indestructible/riveted,/area/centcom/holding)
"jS" = (/obj/structure/table,/turf/simulated/floor/plasteel/freezer{dir = 2},/area/centcom/holding)
@@ -556,25 +556,25 @@
"kJ" = (/turf/simulated/wall/shuttle{icon_state = "wall3"},/area/shuttle/syndicate)
"kK" = (/obj/structure/grille,/obj/machinery/door/poddoor/shutters{id = "syndieshutters"; name = "blast shutters"},/obj/structure/window/reinforced/fulltile,/turf/simulated/floor/plating,/area/shuttle/syndicate)
"kL" = (/turf/simulated/floor/plating/snow,/turf/simulated/wall/shuttle{dir = 1; icon_state = "diagonalWall3"},/area/shuttle/syndicate)
"kM" = (/obj/structure/table,/obj/machinery/microwave,/turf/simulated/floor/plasteel/shuttle{icon_state = "floor4"},/area/shuttle/syndicate)
"kN" = (/turf/simulated/floor/plasteel/shuttle{icon_state = "floor4"},/area/shuttle/syndicate)
"kO" = (/obj/structure/table,/obj/item/device/flashlight/lamp{pixel_x = 4; pixel_y = 1},/turf/simulated/floor/plasteel/shuttle{icon_state = "floor4"},/area/shuttle/syndicate)
"kP" = (/obj/machinery/computer/shuttle/syndicate,/turf/simulated/floor/plasteel/shuttle{icon_state = "floor4"},/area/shuttle/syndicate)
"kQ" = (/obj/structure/table,/obj/machinery/door_control{id = "syndieshutters"; name = "remote shutter control"; req_access_txt = "150"},/turf/simulated/floor/plasteel/shuttle{icon_state = "floor4"},/area/shuttle/syndicate)
"kR" = (/obj/structure/computerframe,/turf/simulated/floor/plasteel/shuttle{icon_state = "floor4"},/area/shuttle/syndicate)
"kM" = (/obj/machinery/computer/shuttle/syndicate,/turf/simulated/floor/plasteel/shuttle/red/syndicate,/area/shuttle/syndicate)
"kN" = (/obj/structure/table,/obj/item/device/flashlight/lamp{pixel_x = 4; pixel_y = 1},/turf/simulated/floor/plasteel/shuttle/red/syndicate,/area/shuttle/syndicate)
"kO" = (/obj/structure/computerframe,/turf/simulated/floor/plasteel/shuttle/red/syndicate,/area/shuttle/syndicate)
"kP" = (/obj/structure/table,/obj/machinery/door_control{id = "syndieshutters"; name = "remote shutter control"; req_access_txt = "150"},/turf/simulated/floor/plasteel/shuttle/red/syndicate,/area/shuttle/syndicate)
"kQ" = (/obj/structure/table,/obj/item/weapon/storage/box/donkpockets{pixel_x = 3; pixel_y = 3},/turf/simulated/floor/plasteel/shuttle/red/syndicate,/area/shuttle/syndicate)
"kR" = (/obj/structure/stool/bed/chair/comfy/black{dir = 1; icon_state = "comfychair"; name = "pilot's chair"; tag = "icon-comfychair (NORTH)"},/turf/simulated/floor/plasteel/shuttle/red/syndicate,/area/shuttle/syndicate)
"kS" = (/turf/simulated/floor/plating/snow,/turf/simulated/floor/plating/snow/gravsnow/corner{dir = 8},/area/syndicate_mothership)
"kT" = (/turf/indestructible/fakeglass{icon_state = "fakewindows"; dir = 8},/area/syndicate_mothership)
"kU" = (/turf/indestructible/fakeglass{icon_state = "fakewindows"; dir = 4},/area/syndicate_mothership)
"kV" = (/turf/simulated/floor/plating/snow,/obj/structure/flora/grass/both,/turf/simulated/floor/plating/snow/gravsnow/corner,/area/syndicate_mothership)
"kW" = (/turf/simulated/floor/plating/snow,/obj/structure/flora/tree/pine,/turf/simulated/floor/plating/snow/gravsnow/corner,/area/syndicate_mothership)
"kX" = (/obj/structure/table,/obj/item/weapon/storage/box/donkpockets{pixel_x = 3; pixel_y = 3},/turf/simulated/floor/plasteel/shuttle{icon_state = "floor4"},/area/shuttle/syndicate)
"kY" = (/obj/structure/stool/bed/chair/comfy/black{dir = 1; icon_state = "comfychair"; name = "pilot's chair"; tag = "icon-comfychair (NORTH)"},/turf/simulated/floor/plasteel/shuttle{icon_state = "floor4"},/area/shuttle/syndicate)
"kX" = (/obj/structure/table,/obj/item/stack/sheet/glass{amount = 10},/obj/item/device/multitool,/turf/simulated/floor/plasteel/shuttle/red/syndicate,/area/shuttle/syndicate)
"kY" = (/obj/item/device/radio/intercom{desc = "Talk through this. Evilly"; freerange = 1; frequency = 1213; name = "Syndicate Intercom"; pixel_y = -32; subspace_transmission = 1; syndie = 1},/turf/simulated/floor/plasteel/shuttle/red/syndicate,/area/shuttle/syndicate)
"kZ" = (/turf/simulated/floor/plating/snow,/turf/simulated/floor/plating/snow/gravsnow/corner{dir = 4},/area/syndicate_mothership)
"la" = (/obj/item/weapon/storage/crayons,/obj/structure/table,/obj/item/weapon/storage/crayons,/turf/simulated/floor/plasteel/freezer{dir = 2},/area/syndicate_mothership)
"lb" = (/obj/machinery/washing_machine,/turf/simulated/floor/plasteel/freezer{dir = 2},/area/syndicate_mothership)
"lc" = (/obj/structure/table,/obj/item/stack/sheet/glass{amount = 10},/obj/item/device/multitool,/turf/simulated/floor/plasteel/shuttle{icon_state = "floor4"},/area/shuttle/syndicate)
"ld" = (/obj/item/device/radio/intercom{desc = "Talk through this. Evilly"; freerange = 1; frequency = 1213; name = "Syndicate Intercom"; pixel_y = -32; subspace_transmission = 1; syndie = 1},/turf/simulated/floor/plasteel/shuttle{icon_state = "floor4"},/area/shuttle/syndicate)
"le" = (/obj/structure/closet/syndicate/personal,/turf/simulated/floor/plasteel/shuttle{icon_state = "floor4"},/area/shuttle/syndicate)
"lc" = (/obj/structure/closet/syndicate/personal,/turf/simulated/floor/plasteel/shuttle/red/syndicate,/area/shuttle/syndicate)
"ld" = (/turf/simulated/wall/mineral/uranium,/area/wizard_station)
"le" = (/obj/machinery/door/window{name = "Cockpit"; req_access_txt = "150"},/turf/simulated/floor/plasteel/shuttle/red/syndicate,/area/shuttle/syndicate)
"lf" = (/obj/machinery/computer/shuttle/syndicate/recall,/turf/simulated/floor/plasteel/bar{dir = 2},/area/syndicate_mothership)
"lg" = (/turf/simulated/floor/plasteel/bar{dir = 2},/area/syndicate_mothership)
"lh" = (/obj/machinery/vending/coffee,/turf/simulated/floor/plasteel/bar{dir = 2},/area/syndicate_mothership)
@@ -589,7 +589,7 @@
"lq" = (/turf/indestructible/fakeglass{color = "#008000"; dir = 4; icon_state = "fakewindows"},/area/wizard_station)
"lr" = (/turf/indestructible/riveted{icon_state = "uranium0"},/area/wizard_station)
"ls" = (/turf/simulated/floor/plating/snow,/turf/simulated/wall/shuttle{icon_state = "diagonalWall3"},/area/shuttle/syndicate)
"lt" = (/obj/machinery/door/window{name = "Cockpit"; req_access_txt = "150"},/turf/simulated/floor/plasteel/shuttle{icon_state = "floor4"},/area/shuttle/syndicate)
"lt" = (/obj/structure/table,/obj/item/stack/cable_coil,/obj/item/weapon/crowbar/red,/turf/simulated/floor/plasteel/shuttle/red/syndicate,/area/shuttle/syndicate)
"lu" = (/turf/simulated/floor/plating/snow,/turf/simulated/wall/shuttle{dir = 4; icon_state = "diagonalWall3"},/area/shuttle/syndicate)
"lv" = (/turf/simulated/floor/plating/snow,/obj/structure/flora/grass/brown,/turf/simulated/floor/plating/snow/gravsnow/corner{dir = 4},/area/syndicate_mothership)
"lw" = (/obj/item/weapon/paper{info = "GET DAT FUKKEN DISK"; name = "memo"},/obj/structure/noticeboard{pixel_x = -32; pixel_y = 0},/turf/simulated/floor/plasteel/bar{dir = 2},/area/syndicate_mothership)
@@ -601,8 +601,8 @@
"lC" = (/obj/item/weapon/shard{color = "#008000"},/turf/simulated/floor/plasteel/cult{icon_state = "cultdamage5"},/area/wizard_station)
"lD" = (/obj/machinery/computer/shuttle,/turf/simulated/floor/plasteel/cult{icon_state = "cultdamage"},/area/wizard_station)
"lE" = (/turf/simulated/floor/plasteel/cult,/area/wizard_station)
"lF" = (/obj/structure/table,/obj/item/stack/cable_coil,/obj/item/weapon/crowbar/red,/turf/simulated/floor/plasteel/shuttle{icon_state = "floor4"},/area/shuttle/syndicate)
"lG" = (/obj/structure/table,/obj/item/weapon/storage/box/zipties{pixel_x = 1; pixel_y = 2},/turf/simulated/floor/plasteel/shuttle{icon_state = "floor4"},/area/shuttle/syndicate)
"lF" = (/obj/structure/table,/obj/item/weapon/storage/box/zipties{pixel_x = 1; pixel_y = 2},/turf/simulated/floor/plasteel/shuttle/red/syndicate,/area/shuttle/syndicate)
"lG" = (/obj/structure/stool/bed/chair{dir = 4},/turf/simulated/floor/plasteel/shuttle/red/syndicate,/area/shuttle/syndicate)
"lH" = (/turf/simulated/floor/plating/snow,/turf/simulated/floor/plating/snow/gravsnow/surround{dir = 8},/area/syndicate_mothership)
"lI" = (/turf/simulated/floor/plating/snow,/turf/simulated/floor/plating/snow/gravsnow/corner{dir = 6},/area/syndicate_mothership)
"lJ" = (/obj/structure/table/wood,/obj/item/weapon/reagent_containers/food/drinks/beer{pixel_x = -2; pixel_y = 5},/turf/simulated/floor/plasteel/bar{dir = 2},/area/syndicate_mothership)
@@ -615,8 +615,8 @@
"lQ" = (/obj/effect/decal/cleanable/blood/splatter,/turf/simulated/floor/plasteel/cult{icon_state = "cultdamage2"},/area/wizard_station)
"lR" = (/turf/simulated/floor/plasteel/cult{icon_state = "cultdamage3"},/area/wizard_station)
"lS" = (/obj/effect/decal/cleanable/blood/gibs/body,/turf/simulated/floor/plasteel/cult,/area/wizard_station)
"lT" = (/obj/structure/stool/bed/chair{dir = 4},/turf/simulated/floor/plasteel/shuttle{icon_state = "floor4"},/area/shuttle/syndicate)
"lU" = (/obj/structure/stool/bed/chair{dir = 8},/turf/simulated/floor/plasteel/shuttle{icon_state = "floor4"},/area/shuttle/syndicate)
"lT" = (/obj/structure/stool/bed/chair{dir = 8},/turf/simulated/floor/plasteel/shuttle/red/syndicate,/area/shuttle/syndicate)
"lU" = (/obj/machinery/suit_storage_unit/syndicate,/turf/simulated/floor/plasteel/shuttle/red/syndicate,/area/shuttle/syndicate)
"lV" = (/turf/indestructible/fakeglass{icon_state = "fakewindows"; dir = 9},/area/syndicate_mothership)
"lW" = (/turf/indestructible/fakeglass{icon_state = "fakewindows2"; dir = 8},/area/syndicate_mothership)
"lX" = (/obj/structure/table/wood,/obj/item/weapon/reagent_containers/food/snacks/pizzaslice/mushroom,/turf/simulated/floor/plasteel/bar{dir = 2},/area/syndicate_mothership)
@@ -631,8 +631,8 @@
"mg" = (/obj/machinery/door/poddoor/shutters{id = "nukeop_ready"; name = "shuttle dock"},/turf/simulated/floor/plating,/area/syndicate_mothership)
"mh" = (/turf/indestructible/fakeglass{color = "#008000"; dir = 6; icon_state = "fakewindows2"},/area/wizard_station)
"mi" = (/obj/effect/forcefield,/obj/structure/door_assembly{anchored = 1; icon_state = "door_as_uranium1"; name = "Bridge"},/turf/simulated/floor/plasteel/cult,/area/wizard_station)
"mj" = (/obj/machinery/suit_storage_unit/syndicate,/turf/simulated/floor/plasteel/shuttle{icon_state = "floor4"},/area/shuttle/syndicate)
"mk" = (/obj/effect/landmark{name = "Syndicate-Uplink"},/turf/simulated/floor/plasteel/shuttle{icon_state = "floor4"},/area/shuttle/syndicate)
"mj" = (/obj/effect/landmark{name = "Syndicate-Uplink"},/turf/simulated/floor/plasteel/shuttle/red/syndicate,/area/shuttle/syndicate)
"mk" = (/obj/structure/stool,/turf/simulated/floor/plasteel/shuttle/red/syndicate,/area/shuttle/syndicate)
"ml" = (/turf/indestructible/fakeglass,/area/syndicate_mothership)
"mm" = (/obj/machinery/door/airlock/external{req_access_txt = "150"},/turf/simulated/floor/plating,/area/syndicate_mothership)
"mn" = (/obj/machinery/door_control{id = "nukeop_ready"; name = "mission launch control"; pixel_x = -26; pixel_y = 0; req_access_txt = "151"},/turf/simulated/floor/plasteel/bar{dir = 2},/area/syndicate_mothership)
@@ -641,9 +641,9 @@
"mq" = (/obj/structure/toilet{pixel_y = 8},/obj/structure/window/reinforced/tinted{dir = 8; icon_state = "twindow"},/obj/machinery/door/window{name = "Tactical Toilet"; opacity = 1},/turf/simulated/floor/plasteel/freezer{dir = 2},/area/syndicate_mothership)
"mr" = (/obj/effect/decal/remains/human,/obj/effect/decal/cleanable/blood,/turf/simulated/floor/plasteel/cult{icon_state = "cultdamage6"},/area/wizard_station)
"ms" = (/obj/effect/decal/cleanable/blood/splatter,/turf/simulated/floor/plasteel/cult{icon_state = "cultdamage"},/area/wizard_station)
"mt" = (/obj/structure/stool,/turf/simulated/floor/plasteel/shuttle{icon_state = "floor4"},/area/shuttle/syndicate)
"mu" = (/obj/structure/table,/obj/item/device/aicard,/turf/simulated/floor/plasteel/shuttle{icon_state = "floor4"},/area/shuttle/syndicate)
"mv" = (/obj/machinery/door/poddoor{auto_close = 300; id = "smindicate"; name = "outer blast door"},/obj/machinery/door_control{id = "smindicate"; name = "external door control"; pixel_x = -26; pixel_y = 0; req_access_txt = "150"},/obj/docking_port/mobile{dheight = 9; dir = 2; dwidth = 5; height = 22; id = "syndicate"; name = "syndicate infiltrator"; travelDir = 180; width = 18},/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/simulated/floor/plating/snow; width = 18},/turf/simulated/floor/plating,/area/shuttle/syndicate)
"mt" = (/obj/structure/table,/obj/item/device/aicard,/turf/simulated/floor/plasteel/shuttle/red/syndicate,/area/shuttle/syndicate)
"mu" = (/obj/machinery/door/poddoor{auto_close = 300; id = "smindicate"; name = "outer blast door"},/obj/machinery/door_control{id = "smindicate"; name = "external door control"; pixel_x = -26; pixel_y = 0; req_access_txt = "150"},/obj/docking_port/mobile{dheight = 9; dir = 2; dwidth = 5; height = 22; id = "syndicate"; name = "syndicate infiltrator"; travelDir = 180; width = 18},/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/simulated/floor/plating/snow; width = 18},/turf/simulated/floor/plasteel/shuttle/red/syndicate,/area/shuttle/syndicate)
"mv" = (/obj/structure/table,/obj/item/weapon/c4{pixel_x = 2; pixel_y = 1},/turf/simulated/floor/plasteel/shuttle/red/syndicate,/area/shuttle/syndicate)
"mw" = (/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/shuttle{icon_state = "wall3"},/area/shuttle/syndicate)
"mx" = (/turf/simulated/floor/plating/snow,/turf/simulated/floor/plating/snow/gravsnow/corner{dir = 5},/area/syndicate_mothership)
"my" = (/obj/item/weapon/storage/box/drinkingglasses,/obj/item/weapon/reagent_containers/food/drinks/bottle/rum,/obj/structure/table/wood,/turf/simulated/floor/wood,/area/syndicate_mothership)
@@ -660,7 +660,7 @@
"mJ" = (/turf/simulated/floor/plasteel/cult{icon_state = "cultdamage7"},/area/wizard_station)
"mK" = (/obj/effect/forcefield,/turf/simulated/floor/plasteel/cult{icon_state = "cultdamage"},/area/wizard_station)
"mL" = (/obj/structure/sign/securearea{desc = "A warning sign which reads 'FOURTH WALL'."; name = "\improper FOURTH WALL"; pixel_x = -32},/turf/simulated/floor/plating/snow,/area/syndicate_mothership)
"mM" = (/obj/structure/table,/obj/item/weapon/c4{pixel_x = 2; pixel_y = 1},/turf/simulated/floor/plasteel/shuttle{icon_state = "floor4"},/area/shuttle/syndicate)
"mM" = (/obj/machinery/door/window{dir = 4; name = "EVA Storage"; req_access_txt = "150"},/turf/simulated/floor/plasteel/shuttle/red/syndicate,/area/shuttle/syndicate)
"mN" = (/turf/simulated/floor/wood,/area/syndicate_mothership)
"mO" = (/obj/effect/landmark{name = "Syndicate-Spawn"},/turf/simulated/floor/wood,/area/syndicate_mothership)
"mP" = (/obj/machinery/door/window{base_state = "right"; dir = 4; icon_state = "right"; name = "Uplink Management Control"; req_access_txt = "151"},/turf/simulated/floor/wood,/area/syndicate_mothership)
@@ -673,8 +673,8 @@
"mW" = (/obj/machinery/door/poddoor/preopen,/obj/effect/decal/cleanable/blood/splatter,/turf/simulated/floor/plating,/area/wizard_station)
"mX" = (/obj/effect/forcefield,/turf/simulated/floor/plasteel/cult{icon_state = "cultdamage7"},/area/wizard_station)
"mY" = (/obj/effect/forcefield,/turf/simulated/floor/plasteel/cult{icon_state = "cultdamage5"},/area/wizard_station)
"mZ" = (/obj/machinery/door/window{dir = 4; name = "EVA Storage"; req_access_txt = "150"},/turf/simulated/floor/plasteel/shuttle{icon_state = "floor4"},/area/shuttle/syndicate)
"na" = (/obj/machinery/door/airlock/external{req_access_txt = "150"},/turf/simulated/floor/plasteel/shuttle{icon_state = "floor4"},/area/shuttle/syndicate)
"mZ" = (/obj/machinery/door/airlock/external{req_access_txt = "150"},/turf/simulated/floor/plasteel/shuttle/red/syndicate,/area/shuttle/syndicate)
"na" = (/obj/machinery/door/window{base_state = "right"; dir = 4; icon_state = "right"; name = "EVA Storage"; req_access_txt = "150"},/turf/simulated/floor/plasteel/shuttle/red/syndicate,/area/shuttle/syndicate)
"nb" = (/obj/machinery/computer/telecrystals/boss,/turf/simulated/floor/plasteel/podhatch{dir = 5},/area/syndicate_mothership)
"nc" = (/obj/structure/sign/map/left{pixel_y = -32},/obj/structure/rack{icon = 'icons/obj/stationobjs.dmi'; icon_state = "minibar_left"; name = "skeletal minibar"},/obj/item/weapon/reagent_containers/food/drinks/bottle/vodka,/turf/simulated/floor/wood,/area/syndicate_mothership)
"nd" = (/obj/structure/sign/map/right{pixel_y = -32},/obj/structure/rack{icon = 'icons/obj/stationobjs.dmi'; icon_state = "minibar_right"; name = "skeletal minibar"},/obj/item/weapon/reagent_containers/food/drinks/bottle/gin,/turf/simulated/floor/wood,/area/syndicate_mothership)
@@ -684,9 +684,9 @@
"nh" = (/turf/simulated/floor/plasteel/cult{icon_state = "cultdamage5"},/area/wizard_station)
"ni" = (/obj/effect/decal/cleanable/blood/gibs/body,/turf/simulated/floor/plasteel/cult{icon_state = "cultdamage2"},/area/wizard_station)
"nj" = (/obj/structure/table/wood/poker,/obj/item/toy/cards/cardhand,/turf/simulated/floor/plasteel/cult{icon_state = "cultdamage2"},/area/wizard_station)
"nk" = (/obj/machinery/door/window{base_state = "right"; dir = 4; icon_state = "right"; name = "EVA Storage"; req_access_txt = "150"},/turf/simulated/floor/plasteel/shuttle{icon_state = "floor4"},/area/shuttle/syndicate)
"nk" = (/obj/structure/rack,/obj/item/clothing/suit/space/syndicate/black/red,/obj/item/clothing/head/helmet/space/syndicate/black/red,/turf/simulated/floor/plasteel/shuttle/red/syndicate,/area/shuttle/syndicate)
"nl" = (/obj/structure/grille,/obj/structure/window/reinforced/fulltile,/turf/simulated/floor/plating,/area/shuttle/syndicate)
"nm" = (/obj/structure/rack,/obj/item/clothing/suit/space/syndicate/black/red,/obj/item/clothing/head/helmet/space/syndicate/black/red,/turf/simulated/floor/plasteel/shuttle{icon_state = "floor4"},/area/shuttle/syndicate)
"nm" = (/obj/item/device/radio/intercom{desc = "Talk through this. Evilly"; freerange = 1; frequency = 1213; name = "Syndicate Intercom"; pixel_x = -32; subspace_transmission = 1; syndie = 1},/turf/simulated/floor/plasteel/shuttle/red/syndicate,/area/shuttle/syndicate)
"nn" = (/turf/simulated/floor/plating/snow,/turf/simulated/floor/plating/snow/gravsnow/corner{dir = 10},/area/syndicate_mothership)
"no" = (/turf/simulated/floor/plating/snow,/turf/simulated/floor/plating/snow/gravsnow/corner{dir = 1},/area/syndicate_mothership)
"np" = (/turf/simulated/floor/plasteel/black,/area/syndicate_mothership)
@@ -697,19 +697,19 @@
"nu" = (/obj/structure/lattice,/obj/effect/forcefield,/turf/space/transit,/area/wizard_station)
"nv" = (/obj/machinery/vending/magivend,/turf/simulated/floor/plasteel/cult,/area/wizard_station)
"nw" = (/obj/machinery/vending/snack,/turf/simulated/floor/plasteel/cult{icon_state = "cultdamage"},/area/wizard_station)
"nx" = (/obj/item/device/radio/intercom{desc = "Talk through this. Evilly"; freerange = 1; frequency = 1213; name = "Syndicate Intercom"; pixel_x = -32; subspace_transmission = 1; syndie = 1},/turf/simulated/floor/plasteel/shuttle{icon_state = "floor4"},/area/shuttle/syndicate)
"nx" = (/obj/machinery/recharge_station,/turf/simulated/floor/plasteel/shuttle/red/syndicate,/area/shuttle/syndicate)
"ny" = (/turf/simulated/floor/plating/snow,/obj/structure/flora/bush,/turf/simulated/floor/plating/snow/gravsnow/corner{dir = 1},/area/syndicate_mothership)
"nz" = (/obj/structure/door_assembly{anchored = 1; icon_state = "door_as_uranium1"; name = "Break Room"},/turf/simulated/floor/plasteel/cult,/area/wizard_station)
"nA" = (/obj/machinery/door/airlock{icon = 'icons/obj/doors/Dooruranium.dmi'; name = "Break Room"},/turf/simulated/floor/plasteel/cult,/area/wizard_station)
"nB" = (/obj/machinery/recharge_station,/turf/simulated/floor/plasteel/shuttle{icon_state = "floor4"},/area/shuttle/syndicate)
"nC" = (/obj/machinery/portable_atmospherics/canister/oxygen,/turf/simulated/floor/plasteel/shuttle{icon_state = "floor4"},/area/shuttle/syndicate)
"nD" = (/obj/structure/table,/obj/machinery/cell_charger,/turf/simulated/floor/plasteel/shuttle{icon_state = "floor4"},/area/shuttle/syndicate)
"nE" = (/obj/structure/table,/obj/item/stack/medical/ointment,/obj/item/stack/medical/bruise_pack,/turf/simulated/floor/plasteel/shuttle{icon_state = "floor4"},/area/shuttle/syndicate)
"nF" = (/obj/structure/table,/obj/item/weapon/stock_parts/cell/high{pixel_x = -3; pixel_y = 3},/obj/item/weapon/stock_parts/cell/high,/turf/simulated/floor/plasteel/shuttle{icon_state = "floor4"},/area/shuttle/syndicate)
"nG" = (/obj/structure/table,/obj/item/weapon/screwdriver{pixel_y = 9},/obj/item/device/assembly/voice{pixel_y = 3},/turf/simulated/floor/plasteel/shuttle{icon_state = "floor4"},/area/shuttle/syndicate)
"nH" = (/obj/structure/table,/obj/item/weapon/wrench,/obj/item/device/assembly/infra,/turf/simulated/floor/plasteel/shuttle{icon_state = "floor4"},/area/shuttle/syndicate)
"nI" = (/obj/structure/table,/obj/item/device/assembly/signaler,/obj/item/device/assembly/signaler,/obj/item/device/assembly/prox_sensor{pixel_x = -8; pixel_y = 4},/obj/item/device/assembly/prox_sensor{pixel_x = -8; pixel_y = 4},/turf/simulated/floor/plasteel/shuttle{icon_state = "floor4"},/area/shuttle/syndicate)
"nJ" = (/obj/structure/table,/obj/item/weapon/weldingtool/largetank{pixel_y = 3},/obj/item/device/multitool,/turf/simulated/floor/plasteel/shuttle{icon_state = "floor4"},/area/shuttle/syndicate)
"nB" = (/obj/structure/table,/obj/machinery/cell_charger,/turf/simulated/floor/plasteel/shuttle/red/syndicate,/area/shuttle/syndicate)
"nC" = (/obj/machinery/portable_atmospherics/canister/oxygen,/turf/simulated/floor/plasteel/shuttle/red/syndicate,/area/shuttle/syndicate)
"nD" = (/obj/structure/table,/obj/item/stack/medical/ointment,/obj/item/stack/medical/bruise_pack,/turf/simulated/floor/plasteel/shuttle/red/syndicate,/area/shuttle/syndicate)
"nE" = (/obj/structure/table,/obj/item/weapon/screwdriver{pixel_y = 9},/obj/item/device/assembly/voice{pixel_y = 3},/turf/simulated/floor/plasteel/shuttle/red/syndicate,/area/shuttle/syndicate)
"nF" = (/obj/structure/table,/obj/item/weapon/stock_parts/cell/high{pixel_x = -3; pixel_y = 3},/obj/item/weapon/stock_parts/cell/high,/turf/simulated/floor/plasteel/shuttle/red/syndicate,/area/shuttle/syndicate)
"nG" = (/obj/structure/table,/obj/item/device/assembly/signaler,/obj/item/device/assembly/signaler,/obj/item/device/assembly/prox_sensor{pixel_x = -8; pixel_y = 4},/obj/item/device/assembly/prox_sensor{pixel_x = -8; pixel_y = 4},/turf/simulated/floor/plasteel/shuttle/red/syndicate,/area/shuttle/syndicate)
"nH" = (/obj/structure/table,/obj/item/weapon/wrench,/obj/item/device/assembly/infra,/turf/simulated/floor/plasteel/shuttle/red/syndicate,/area/shuttle/syndicate)
"nI" = (/obj/structure/table,/obj/item/weapon/weldingtool/largetank{pixel_y = 3},/obj/item/device/multitool,/turf/simulated/floor/plasteel/shuttle/red/syndicate,/area/shuttle/syndicate)
"nJ" = (/obj/machinery/door/window{dir = 4; name = "Infirmary"; req_access_txt = "150"},/turf/simulated/floor/plasteel/shuttle/red/syndicate,/area/shuttle/syndicate)
"nK" = (/obj/structure/stool,/turf/simulated/floor/plasteel/black,/area/syndicate_mothership)
"nL" = (/obj/structure/stool/bed/chair/wood/wings,/turf/simulated/floor/plasteel/cult,/area/wizard_station)
"nM" = (/obj/structure/table/wood,/obj/item/stack/medical/bruise_pack,/obj/item/stack/medical/ointment,/turf/simulated/floor/plasteel/cult,/area/wizard_station)
@@ -719,9 +719,9 @@
"nQ" = (/obj/structure/rack,/obj/item/clothing/head/helmet/space/hardsuit/wizard,/turf/simulated/floor/plasteel/cult,/area/wizard_station)
"nR" = (/obj/effect/decal/cleanable/blood/splatter,/obj/effect/decal/cleanable/blood/gibs/body,/turf/simulated/floor/plasteel/cult{icon_state = "cultdamage"},/area/wizard_station)
"nS" = (/obj/effect/decal/cleanable/blood/splatter,/turf/simulated/floor/plasteel/cult,/area/wizard_station)
"nT" = (/obj/machinery/door/window{dir = 4; name = "Infirmary"; req_access_txt = "150"},/turf/simulated/floor/plasteel/shuttle{icon_state = "floor4"},/area/shuttle/syndicate)
"nU" = (/obj/machinery/door/window/westright{name = "Tool Storage"; req_access_txt = "150"},/turf/simulated/floor/plasteel/shuttle{icon_state = "floor4"},/area/shuttle/syndicate)
"nV" = (/obj/structure/table,/obj/item/weapon/storage/toolbox/syndicate,/obj/item/weapon/crowbar/red,/turf/simulated/floor/plasteel/shuttle{icon_state = "floor4"},/area/shuttle/syndicate)
"nT" = (/obj/machinery/door/window/westright{name = "Tool Storage"; req_access_txt = "150"},/turf/simulated/floor/plasteel/shuttle/red/syndicate,/area/shuttle/syndicate)
"nU" = (/obj/structure/table,/obj/item/weapon/storage/toolbox/syndicate,/obj/item/weapon/crowbar/red,/turf/simulated/floor/plasteel/shuttle/red/syndicate,/area/shuttle/syndicate)
"nV" = (/obj/machinery/sleeper{icon_state = "sleeper-open"; dir = 4},/turf/simulated/floor/plasteel/shuttle/red/syndicate,/area/shuttle/syndicate)
"nW" = (/obj/structure/closet/syndicate/personal,/turf/simulated/floor/vault,/area/syndicate_mothership)
"nX" = (/obj/structure/table,/obj/item/weapon/gun/energy/ionrifle{pin = /obj/item/device/firing_pin},/turf/simulated/floor/plasteel/black,/area/syndicate_mothership)
"nY" = (/turf/indestructible/fakeglass{color = "#008000"; dir = 1; icon_state = "fakewindows"},/area/wizard_station)
@@ -730,9 +730,9 @@
"ob" = (/obj/effect/decal/cleanable/blood/splatter,/obj/structure/rack{health = 9999},/obj/item/clothing/suit/space/hardsuit/wizard,/turf/simulated/floor/plasteel/cult{icon_state = "cultdamage"},/area/wizard_station)
"oc" = (/turf/simulated/floor/plasteel/cult,/turf/simulated/wall/shuttle{icon_state = "swall_f6"; dir = 2},/area/wizard_station)
"od" = (/turf/simulated/wall/shuttle{icon_state = "swall8"; dir = 2},/area/wizard_station)
"oe" = (/obj/machinery/sleeper{icon_state = "sleeper-open"; dir = 4},/turf/simulated/floor/plasteel/shuttle{icon_state = "floor4"},/area/shuttle/syndicate)
"of" = (/obj/machinery/door/window{base_state = "right"; dir = 4; icon_state = "right"; name = "Infirmary"; req_access_txt = "150"},/turf/simulated/floor/plasteel/shuttle{icon_state = "floor4"},/area/shuttle/syndicate)
"og" = (/obj/machinery/door/window{dir = 8; name = "Tool Storage"; req_access_txt = "150"},/turf/simulated/floor/plasteel/shuttle{icon_state = "floor4"},/area/shuttle/syndicate)
"oe" = (/obj/machinery/door/window{base_state = "right"; dir = 4; icon_state = "right"; name = "Infirmary"; req_access_txt = "150"},/turf/simulated/floor/plasteel/shuttle/red/syndicate,/area/shuttle/syndicate)
"of" = (/obj/machinery/door/window{dir = 8; name = "Tool Storage"; req_access_txt = "150"},/turf/simulated/floor/plasteel/shuttle/red/syndicate,/area/shuttle/syndicate)
"og" = (/obj/structure/table,/obj/item/weapon/gun/syringe{pixel_x = 1; pixel_y = 2},/turf/simulated/floor/plasteel/shuttle/red/syndicate,/area/shuttle/syndicate)
"oh" = (/turf/indestructible/fakeglass{color = "#008000"; dir = 1; icon_state = "fakewindows2"},/area/wizard_station)
"oi" = (/obj/structure/bookcase,/turf/simulated/floor/plasteel/cult,/area/wizard_station)
"oj" = (/obj/structure/grille{color = "#008000"; density = 0; icon_state = "brokengrille"},/turf/simulated/floor/plating,/area/wizard_station)
@@ -744,34 +744,33 @@
"op" = (/obj/effect/decal/cleanable/blood/splatter,/obj/effect/decal/cleanable/blood/gibs/body,/turf/simulated/floor/plasteel,/area/wizard_station)
"oq" = (/obj/structure/shuttle/engine/heater{icon_state = "heater"; dir = 4},/turf/simulated/floor/plating,/area/wizard_station)
"or" = (/obj/structure/shuttle/engine/propulsion{icon_state = "propulsion"; dir = 8},/turf/space/transit,/area/wizard_station)
"os" = (/obj/structure/table,/obj/item/weapon/gun/syringe{pixel_x = 1; pixel_y = 2},/turf/simulated/floor/plasteel/shuttle{icon_state = "floor4"},/area/shuttle/syndicate)
"ot" = (/obj/structure/table,/obj/item/weapon/reagent_containers/syringe/charcoal,/obj/item/weapon/reagent_containers/syringe/charcoal{pixel_y = 2},/obj/item/weapon/reagent_containers/syringe/charcoal{pixel_y = 4},/turf/simulated/floor/plasteel/shuttle{icon_state = "floor4"},/area/shuttle/syndicate)
"ou" = (/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 1},/turf/simulated/floor/plasteel/shuttle{icon_state = "floor4"},/area/shuttle/syndicate)
"ov" = (/obj/machinery/door/window{dir = 1; name = "Secure Storage"; req_access_txt = "150"},/turf/simulated/floor/plasteel/shuttle{icon_state = "floor4"},/area/shuttle/syndicate)
"ow" = (/obj/structure/table,/obj/item/device/sbeacondrop/bomb{pixel_y = 5},/obj/item/device/sbeacondrop/bomb,/turf/simulated/floor/plasteel/shuttle{icon_state = "floor4"},/area/shuttle/syndicate)
"ox" = (/obj/structure/table,/obj/item/weapon/grenade/syndieminibomb{pixel_x = 4; pixel_y = 2},/obj/item/weapon/grenade/syndieminibomb{pixel_x = -1},/turf/simulated/floor/plasteel/shuttle{icon_state = "floor4"},/area/shuttle/syndicate)
"os" = (/obj/structure/table,/obj/item/weapon/reagent_containers/syringe/charcoal,/obj/item/weapon/reagent_containers/syringe/charcoal{pixel_y = 2},/obj/item/weapon/reagent_containers/syringe/charcoal{pixel_y = 4},/turf/simulated/floor/plasteel/shuttle/red/syndicate,/area/shuttle/syndicate)
"ot" = (/obj/machinery/door/window{dir = 1; name = "Secure Storage"; req_access_txt = "150"},/turf/simulated/floor/plasteel/shuttle/red/syndicate,/area/shuttle/syndicate)
"ou" = (/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 1},/turf/simulated/floor/plasteel/shuttle/red/syndicate,/area/shuttle/syndicate)
"ov" = (/obj/structure/table,/obj/item/weapon/grenade/syndieminibomb{pixel_x = 4; pixel_y = 2},/obj/item/weapon/grenade/syndieminibomb{pixel_x = -1},/turf/simulated/floor/plasteel/shuttle/red/syndicate,/area/shuttle/syndicate)
"ow" = (/obj/structure/table,/obj/item/device/sbeacondrop/bomb{pixel_y = 5},/obj/item/device/sbeacondrop/bomb,/turf/simulated/floor/plasteel/shuttle/red/syndicate,/area/shuttle/syndicate)
"ox" = (/obj/structure/sink{dir = 4; icon_state = "sink"; pixel_x = 11; pixel_y = 0},/obj/structure/mirror{pixel_x = 30},/turf/simulated/floor/plasteel/shuttle/red/syndicate,/area/shuttle/syndicate)
"oy" = (/turf/indestructible/fakeglass{color = "#008000"},/area/wizard_station)
"oz" = (/obj/item/weapon/shard{color = "#008000"; icon_state = "medium"},/obj/structure/grille{color = "#008000"; density = 0; icon_state = "brokengrille"},/turf/simulated/floor/plating,/area/wizard_station)
"oA" = (/obj/effect/landmark/start{name = "wizard"},/turf/simulated/floor/plasteel/cult{icon_state = "cultdamage5"},/area/wizard_station)
"oB" = (/obj/effect/decal/remains/human,/obj/effect/decal/cleanable/blood/splatter,/turf/simulated/floor/plasteel/cult,/area/wizard_station)
"oC" = (/turf/simulated/floor/plasteel/cult,/turf/simulated/wall/shuttle{icon_state = "swall_f5"; dir = 2},/area/wizard_station)
"oD" = (/turf/indestructible/fakedoor{name = "Squad 3 Pod"},/area/wizard_station)
"oE" = (/obj/structure/sink{dir = 4; icon_state = "sink"; pixel_x = 11; pixel_y = 0},/obj/structure/mirror{pixel_x = 30},/turf/simulated/floor/plasteel/shuttle{icon_state = "floor4"},/area/shuttle/syndicate)
"oF" = (/obj/machinery/telecomms/allinone{intercept = 1},/turf/simulated/floor/plasteel/shuttle{icon_state = "floor4"},/area/shuttle/syndicate)
"oG" = (/obj/effect/landmark{name = "Nuclear-Bomb"},/turf/simulated/floor/plasteel/shuttle{icon_state = "floor4"},/area/shuttle/syndicate)
"oE" = (/obj/effect/landmark{name = "Nuclear-Bomb"},/turf/simulated/floor/plasteel/shuttle/red/syndicate,/area/shuttle/syndicate)
"oF" = (/obj/machinery/telecomms/allinone{intercept = 1},/turf/simulated/floor/plasteel/shuttle/red/syndicate,/area/shuttle/syndicate)
"oG" = (/obj/structure/optable,/turf/simulated/floor/plasteel/shuttle/red/syndicate,/area/shuttle/syndicate)
"oH" = (/obj/structure/stool/bed/chair/wood/wings{tag = "icon-wooden_chair_wings (NORTH)"; icon_state = "wooden_chair_wings"; dir = 1},/turf/simulated/floor/plasteel/cult,/area/wizard_station)
"oI" = (/obj/structure/cult/pylon,/turf/simulated/floor/plasteel/cult,/area/wizard_station)
"oJ" = (/obj/effect/decal/cleanable/blood/splatter,/obj/structure/rack,/obj/item/weapon/staff,/turf/simulated/floor/plasteel/cult{icon_state = "cultdamage"},/area/wizard_station)
"oK" = (/obj/effect/decal/cleanable/blood/splatter,/obj/effect/decal/cleanable/blood/gibs/body,/turf/simulated/floor/plasteel/cult{icon_state = "cultdamage4"},/area/wizard_station)
"oL" = (/obj/effect/decal/cleanable/blood/splatter,/obj/effect/forcefield,/turf/simulated/floor/plasteel/cult{icon_state = "cultdamage"},/area/wizard_station)
"oM" = (/turf/simulated/floor/plasteel/cult{icon_state = "cultdamage4"},/area/wizard_station)
"oN" = (/obj/structure/table,/obj/item/weapon/circular_saw,/obj/item/weapon/cautery,/obj/item/weapon/surgicaldrill,/obj/item/robot_parts/l_arm,/obj/item/robot_parts/r_arm,/turf/simulated/floor/plasteel/shuttle{icon_state = "floor4"},/area/shuttle/syndicate)
"oO" = (/obj/structure/optable,/turf/simulated/floor/plasteel/shuttle{icon_state = "floor4"},/area/shuttle/syndicate)
"oP" = (/obj/structure/table,/obj/item/weapon/scalpel,/obj/item/weapon/retractor,/obj/item/weapon/hemostat,/obj/item/weapon/surgical_drapes,/turf/simulated/floor/plasteel/shuttle{icon_state = "floor4"},/area/shuttle/syndicate)
"oN" = (/obj/structure/table,/obj/item/weapon/circular_saw,/obj/item/weapon/cautery,/obj/item/weapon/surgicaldrill,/obj/item/robot_parts/l_arm,/obj/item/robot_parts/r_arm,/turf/simulated/floor/plasteel/shuttle/red/syndicate,/area/shuttle/syndicate)
"oO" = (/obj/structure/table,/obj/item/weapon/scalpel,/obj/item/weapon/retractor,/obj/item/weapon/hemostat,/obj/item/weapon/surgical_drapes,/turf/simulated/floor/plasteel/shuttle/red/syndicate,/area/shuttle/syndicate)
"oP" = (/obj/machinery/teleport/station,/turf/simulated/floor/plasteel/shuttle/red/syndicate,/area/shuttle/syndicate)
"oQ" = (/obj/structure/shuttle/engine/heater,/obj/structure/window/reinforced{dir = 1},/turf/simulated/floor/plating,/area/shuttle/syndicate)
"oR" = (/obj/structure/computerframe,/obj/item/weapon/paper{info = "<h3>Teleporter Instruction</h3><hr><ol><li>Install circuit board, glass and wiring to complete Teleporter Control Console</li><li>Use a screwdriver, wirecutter and screwdriver again on the Teleporter Station to connect it</li><li>Set destination with Teleporter Control Computer</li><li>Activate Teleporter Hub with Teleporter Station</li></ol>"; name = "Teleporter Instructions"},/turf/simulated/floor/plasteel/shuttle{icon_state = "floor4"},/area/shuttle/syndicate)
"oS" = (/obj/machinery/teleport/station,/turf/simulated/floor/plasteel/shuttle{icon_state = "floor4"},/area/shuttle/syndicate)
"oT" = (/obj/machinery/teleport/hub/syndicate,/turf/simulated/floor/plasteel/shuttle{icon_state = "floor4"},/area/shuttle/syndicate)
"oR" = (/obj/structure/computerframe,/obj/item/weapon/paper{info = "<h3>Teleporter Instruction</h3><hr><ol><li>Install circuit board, glass and wiring to complete Teleporter Control Console</li><li>Use a screwdriver, wirecutter and screwdriver again on the Teleporter Station to connect it</li><li>Set destination with Teleporter Control Computer</li><li>Activate Teleporter Hub with Teleporter Station</li></ol>"; name = "Teleporter Instructions"},/turf/simulated/floor/plasteel/shuttle/red/syndicate,/area/shuttle/syndicate)
"oS" = (/obj/machinery/teleport/hub/syndicate,/turf/simulated/floor/plasteel/shuttle/red/syndicate,/area/shuttle/syndicate)
"oU" = (/obj/structure/door_assembly{anchored = 1; icon_state = "door_as_uranium1"; name = "Corridor A"},/turf/simulated/floor/plasteel/cult,/area/wizard_station)
"oV" = (/obj/machinery/door/airlock{icon = 'icons/obj/doors/Dooruranium.dmi'; name = "Corridor A"},/turf/simulated/floor/plasteel/cult,/area/wizard_station)
"oW" = (/obj/structure/shuttle/engine/propulsion{icon_state = "propulsion_l"},/turf/simulated/floor/plating,/area/shuttle/syndicate)
@@ -942,22 +941,22 @@ abababababababababababababababababababababababababababababababababababababababab
abababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababcucxcyczczcHczczcAcBcwcwcwcwcwcIcJcIcwcwcwcwcwcCcAcDcDcKcDcDcycEcuabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab
abababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababcucxcyczczczczczcAcBcwcwcwcwcwcIcLcIcwcwcwcwcwcCcAcDcDcDcDcDcycEcuabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab
abababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababcMcNcOcPcQabcRabababcSabcMcNcOcPcQabababababababababababababababababababababababababababababababcucxcyczcFczcFczcAcBcwcwcwcwcwcwcwcwcwcwcwcwcwcCcAcDcGcDcGcDcycEcuabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab
abababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababcTcUcUcUcVcWcXcYcZcYcXdadbcUcUcUcTabababababababababababababababababababababababababababababababcucxcyczczczczczcAcBcwcwcwcwcwcwcwcwcwcwcwcwcwcCcAcDcDcDcDcDcycEcuabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab
abababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababcTdcdcdddedfdgdhdidjdgdfdkdldcdccTabababababababababababababababababababababababababababababababcucucudmdmdmdmdmcucvcwcwcwcwcwcwcwcwcwcwcwcwcwcvcudmdmdmdmdmcucucuabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab
abababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababcTdcdcdndododgdodododgdododndcdccTabababababababababababababababababababababababababababababababababcudpdpdpdpdpcudqdrdrdrdrdrdrdrdrdrdrdrdrdrdscudtdtdtdtdtcuabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab
abababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababdudldccXdodgdgdgdgdgdgdgdocXdcdddvabababababababababababababababababababababababababababababababababcucucucucucucudwdxdxdxdxdxdydzdAdxdxdxdxdxdwcucucucucucucuabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab
ababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababdudBdCdDdEdFdGdgdHdodgdIdJdBdvababababababababababababababababababababababababababababababababababababababababdKdwdwdwdLdwdMdMdMdMdMdwdLdwdwdwdKabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab
ababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababcTdNdOdPdQdgdododgdIcTababababababababababababababababababababababababababababababababababababababababababdKdKdRdKdKdKdKdSdTdUdKdKdKdKdRdKdKabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab
ababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababcTdVdWdWdGdgdIdXdgdIdnababababababababababababababababababababababababababababababababababababababababababababababababdKdKdKdKdKabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab
ababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababcTdYdWdWdZdgdIdXdgdgcXeaabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab
ababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababcVdBdBdBdCdgdododgdIcYabababababababababababababababababababababababababababababababababababababababababababababebebebebebecebebebebebababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab
ababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababcTeddgedcTdgdIdXdgdIeeabababababababababababababababababababababababababababababababababababababababababababababebefegeheieieieieiejebababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab
ababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababcTeddgeddndgdIdXdgdIcYabababababababababababababababababababababababababababababababababababababababababababababebeieieiekeiekeieieiebababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab
ababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababcTeddgdgeldgdgdgdgdgcXemababababababababababababababababababababababababababababababababababababababababababababebeieieneneneneoeieiebababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab
ababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababcTeddgedepdgdodododoepababababababababababababababababababababababababababababababababababababababebebebebebebebebeieqenereseneieietebababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab
ababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababcTeddgedcTdgeuevewdfcTababababababababababababababababababababababababababababababababababababababebexeyezeAeBeBebeieieneneneneoeieCebababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab
ababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababdueDeDdBeEeFdadBeDeDdvababababababababababababababababababababababababababababababababababababababebeGeGeGeGeGeGeHeieieIeieIeieieieJebebebebebeKeKeKeKeKeKeKeKeKabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab
abababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababdudbeLdIdgeMeNcVdvabababababababababababababababababababababababababababababababababababababababebeGeGeGeGeGeGeHeieieieieieieieieOePeQeQeQebeKeReKeReKeReKeReKabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab
abababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababcTcUcUcUcVcWdgcYcZcYcXdadbcUcUcUcTabababababababababababababababababababababababababababababababcucxcyczczczczczcAcBcwcwcwcwcwcwcwcwcwcwcwcwcwcCcAcDcDcDcDcDcycEcuabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab
abababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababcTdcdcdddedfdDdhdidjdDdfdkdldcdccTabababababababababababababababababababababababababababababababcucucudmdmdmdmdmcucvcwcwcwcwcwcwcwcwcwcwcwcwcwcvcudmdmdmdmdmcucucuabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab
abababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababcTdcdcdndododDdDdDdDdDdododndcdccTabababababababababababababababababababababababababababababababababcudpdpdpdpdpcudqdrdrdrdrdrdrdrdrdrdrdrdrdrdscudtdtdtdtdtcuabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab
abababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababdudldccXdDdDdDdDdDdDdDdDdDcXdcdddvabababababababababababababababababababababababababababababababababcucucucucucucudwdxdxdxdxdxdydzdAdxdxdxdxdxdwcucucucucucucuabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab
ababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababdudBdCdFdEdHdGdDdIdXdDdIdJdBdvababababababababababababababababababababababababababababababababababababababababdKdwdwdwdLdwdMdMdMdMdMdwdLdwdwdwdKabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab
ababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababcTdOdNdXdPdDdIdXdDdIcTababababababababababababababababababababababababababababababababababababababababababdKdKdRdKdKdKdKdSdTdUdKdKdKdKdRdKdKabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab
ababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababcTdQdododGdDdIdXdDdIdnababababababababababababababababababababababababababababababababababababababababababababababababdKdKdKdKdKabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab
ababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababcTdVdododWdDdIdXdDdocXeaabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab
ababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababcVdBdBdBdCdDdDdDdDdIcYabababababababababababababababababababababababababababababababababababababababababababababebebebebebecebebebebebababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab
ababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababcTdYdDdZcTdDdIdXdDdIeeabababababababababababababababababababababababababababababababababababababababababababababebefegeheieieieieiejebababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab
ababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababcTdYdDdZdndDdIdXdDdIcYabababababababababababababababababababababababababababababababababababababababababababababebeieieiekeiekeieieiebababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab
ababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababcTdYdDdDdgdDdIdXdDdDcXemababababababababababababababababababababababababababababababababababababababababababababebeieieneneneneoeieiebababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab
ababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababcTdYdDdYepdDdDdDdDdDepababababababababababababababababababababababababababababababababababababababebebebebebebebebeieqenereseneieietebababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab
ababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababcTdYdDdYcTdDeuevewdfcTababababababababababababababababababababababababababababababababababababababebexeyezeAeBeBebeieieneneneneoeieCebababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab
ababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababdueDeDdBeEeddadBeDeDdvababababababababababababababababababababababababababababababababababababababebeGeGeGeGeGeGeHeieieIeieIeieieieJebebebebebeKeKeKeKeKeKeKeKeKabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab
abababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababdudbeLdIdoeMeNcVdvabababababababababababababababababababababababababababababababababababababababebeGeGeGeGeGeGeHeieieieieieieieieOePeQeQeQebeKeReKeReKeReKeReKabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab
ababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababcTewdoeSdoeLcTababababababababababababababababababababababababababababababababababababababababebeTeTeUeVeWeWebeXeYeieieieieieieOeZeQfaeQebeKeKeKeKeKeKeKeKeKabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab
ababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababcTfbfcfdfeffcTabababababababababababababababababababababababababababababababababababababababebebebfgfhfhfiebebfgfhfhfiebebebfjebebflfkfmebeKeReKeReKeReKeReKabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab
ababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababdueeeeeeeeeedvabababababababababababababababababababababababababababababababababababababababebfnfnfnfnfnfnfnfnfnfnfnfnfnfoeieieOfpfrfqfmebeKeKeKeKeKeKeKeKeKabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab
@@ -968,12 +967,12 @@ abababababababababababababababababababababababababababababababababababababababab
abababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababebebfSftftfuftftftfvftftfZfngafWeieigbebeQeQgcebeKeReKeReKeReKeReKabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab
ababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababebfnfnfnfnfnfnfnfnfnfnfnfnfngdeieieOebeQgegfebeKeKeKeKeKeKeKeKeKabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab
ggggggggggggggggggggggggggggggabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababebebebebebebebebebebebebebebebebghebebebebebebababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab
ggggggggggggggggggggggggggggggababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababgigjgjgjgjgjgjgjgjgjgkglgmgngogngpgqgpgngogngmabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab
ggggggggggggggggggggggggggggggababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababgrgsgsgsgsgsgsgsgsgsgrgtgmgngngngugvgugngngngmabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab
ggggggggggggggggggggggggggggggababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababgrgsgsgsgsgsgsgsgsgsgwgxgmgygmgygmgvgmgygmgygmgmgmgmgzabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab
ggggggggggggggggggggggggggggggababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababgrgsgsgsgsgsgsgsgsgsgwgxgmgAgpgBgvgvgvgvgvgCgDgEgEgFgzabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab
ggggggggggggggggggggggggggggggababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababgrgsgsgsgGgsgsgsgsgsgrgHgIgAgJgBgvgvgvgKgmgygmgmgEgLgzabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab
ggggggggggggggggggggggggggggggababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababgMgjgjgNgjgOgjgPgjgjgQglgIgAgJgvgvgvgvgRgygAgmgSgTgUgzgzgzgzgzgzgzgzgzgzgzgzgzgzgzgzgzgzgzgzababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab
ggggggggggggggggggggggggggggggababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababelgjgjgjgjgjgjgjgjgjgkglgmgngogngpgqgpgngogngmabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab
ggggggggggggggggggggggggggggggababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababelgsgsgsgsgsgsgsgsgsgrgtgmgngngngugvgugngngngmabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab
ggggggggggggggggggggggggggggggababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababelgsgsgsgsgsgsgsgsgsgwgxgmgygmgygmgvgmgygmgygmgmgmgmgzabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab
ggggggggggggggggggggggggggggggababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababelgsgsgsgsgsgsgsgsgsgwgxgmgAgpgBgvgvgvgvgvgCgDgEgEgFgzabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab
ggggggggggggggggggggggggggggggababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababelgsgsgsgGgsgsgsgsgselgHgIgAgJgBgvgvgvgKgmgygmgmgEgLgzabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab
ggggggggggggggggggggggggggggggababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababeleleleFelgielgMelelelelgIgAgJgvgvgvgvgRgygAgmgSgTgUgzgzgzgzgzgzgzgzgzgzgzgzgzgzgzgzgzgzgzgzababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab
gggggggggggggggVggggggggggggggababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababgIgIgWgXgYgZhagXgYgZgZhagIgAgugBgvgvgvhbgmgygmgyhcgygzhdhehfhghghghhhihihihihfhihihihfhjhegzababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab
ggggggggggggggggggggggggggggggababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababgIhkhlhlhlhmhlhlhnhohphqgIgygmhrgvgvgvgvgvgChsgEhtgEhuhvhwhwhwhxhwhwhwhwhwhwhwhxhxhxhxhxhwgzababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab
ggggggggggggggggggggggggggggggababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababgIhyhzhzhzhzhzhzhzhzhzhzhAhBgvgvgvgvgvgKgmgygmgmgmgmgzhChwhwhwhxhwhwhwhwhwhwhwhxhxhxhxhxhwgzgzgzgzgzhDgzgzabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab
@@ -981,20 +980,20 @@ ggggggggggggggggggggggggggggggababababababababababababababababababababababababab
ggggggggggggggggggggggggggggggababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababgIgIgIgIgIgIgIgIgIgIhMgIgIgAgpgBgvgvgvhGgJgAgmabababgzhHhwhwhwhxhwhwhwhwhwhwhwhxhxhxhxhwhwhNhJhJhOhPhJhQgzabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab
ggggggggggggggggggggggggggggggababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababgIhRhRhRgIgAguhShTgvgKhUgugAgmabababgzhHhwhwhxhxhxhwhwhwhwhwhwhwhwhwhwhwhwhVhJhJhWhXhJhQgzabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab
ggggggggggggggggggggggggggggggababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababgIhRhRhRgIclclcrcthYcrctclclclabababgzhZiaiaibibibiaiaiaiaiciaiaiaiaibibibhIididieifhJiggzabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab
ihggggggggggggggggggggggggggggababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababgIhRhRhRgIabababababababababababababgziiijiigzgzgzhIikhIgzgzgzhIikhIgzgzgzhNiliigzgzgzgzgzabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab
abababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababgIgIgIgIgIabababababababababababababiminioinipababiqiriqabababiqiriqimisitisiuisipabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab
ababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababimiviwixiyizipabhNikhNabababhNikhNiAiBiCiDiEiFiCabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab
ababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababimisiGiHixixixiziIisisioisinininisiJisisisiviKiEiFizipababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab
ababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababiAiBiCiLixixixiMiNiOiPiNiQiRiRiRiSiNiTiUiViniDiEiFiziIipabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab
ababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababizisiIisisisisiWiNiNiNiNiNiNiNiNiNiNiNiNiNiXiEiEiEiniYiCabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab
ababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababiniZiNjajbjcjdjeiNjfjgjgjgjgiNjgjgjgjgjhiNinjiiEiEiXiEinabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab
ababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababiniNiNjjjkjljmjniNjfjojojojoiNjojojojojhiNjpisjqisisinivabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab
ababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababinjriNjsjtjujvjwiNjfiRiRiRiRiNiRiRiRiRjhiNinjxjyjyjzjyinabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab
ababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababizisitisisisisiHiNiNiNiNiNiNiNiNiNiNiNiNiNjAjyjyjyinjBiCabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab
ababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababiAiBiCjCiNiNiNjDiNiUiTiNjEjgjgjgjFiNjGiOiVinjyjyjHizitjIabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab
ababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababjJisiGitjDitjDiGitisisioisinininisioisisisivjKjyjLizjIababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab
ababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababjJivjMiCjMizjIababababababababababiAiBiCjNjOjPiCabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab
abababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababjJinjQinjIabababababababababababjJisiIisinisjIabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab
ihggggggggggggggggggggggggggggababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababgIhRhRhRgIabababababababababababababgziiijiigzgzgziiikiigzgzgziiikiigzgzgzhNiliigzgzgzgzgzabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab
abababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababgIgIgIgIgIababababababababababgNimititingOinipababgPgQgPabababgPgQgPababimisiuisipabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab
abababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababiAiBivioiriqizipabgPiwgPabababgPiwgPababiCiDiEiFiCabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab
ababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababimisiGiHiriririziIisixiwiyiJiJiJixiwiyisisiviKiEiFizipababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab
ababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababiAiBiCiLiriririQiMiOiPiwiRiRiRiRiRiwiTiSiViniDiEiFiziIipabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab
ababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababizisiIisisisisiWiwiwiwiwiwiwiwiwiwiwiwiwiwiXiEiEiEiniYiCabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab
ababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababiniZiNjajbjcjdjeiwjfjgjgjgjgiwjgjgjgjgjhiwinjiiEiEiXiEinabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab
ababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababiniNiNjjjkjljmjniwjfjojojojoiwjojojojojhiwjpisinisisinivabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab
ababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababinjriNjsjtjujvjwiwjfiRiRiRiRiwiRiRiRiRjhiwinjqiwiwjxiwinabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab
ababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababizisitisisisisiHiwiwiwiwiwiwiwiwiwiwiwiwiwjyiwiwiwinjziCabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab
ababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababiAiBiCjAiwiwiwjBiwiUiTiNjEjgjgjgjFiNjGiOiViniwiwjCizitjIabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab
ababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababjJisiGitjBitjBiGitisisisisiJiJiJisisisisisivjDiwjHizjIababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab
abababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababiAiBivjKiCjKizjIababababababababababababiCjLjNjMiCabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab
abababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababjJiIiIinjQinjIabababababababababababababjJisinisjIabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab
abababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab
abababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab
abababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab
@@ -1035,39 +1034,39 @@ abababababababababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
abababababababababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabababababababababababababababababababababkBkCkCkCkCkCkCkCkCkCkCkCkCkCkCkCkDkCkCkCkCkCkFkCkEkFkCkEkCkBabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab
abababababababababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabababababababababababababababababababababkBkCkCkCkCkCkCkHkHkHkHkHkHkHkCkCkCkCkCkCkCkEkCkCkGkFkCkCkCkBabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab
abababababababababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabababababababababababababababababababababkBkCkCkCkCkCkIkJkKkKkKkKkKkJkLkCkCkCkCkGkCkHkDkHkDkCkEkCkEkBabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab
abababababababababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabababababababababababababababababababababkBkCkCkCkCkCkJkMkNkOkPkQkRkRkJkSkCkCkHkBkBkTkUkBkBkHkVkWkHkBabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab
abababababababababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabababababababababababababababababababababkBkCkCkCkCkCkJkXkNkNkYkNkNkNkJkSkCkZkBkBlalblblakBkBkBkBkBkBkBkBabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab
abababababababababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabababababababababababababababababababababkBkCkCkCkCkCkJlckNkNkNldkNlekJkSkGkZkBlflglglglglhliljlklllmlnkBabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab
abababababababababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaalolplqlraaaaaaaaaaaaaaaaaaaaaaabababababababababababababababababababababkBkCkCkCkCkClskJkJkJltkJkJkJlukCkClvkBlwlglxlxlylglglglzlAlAlAkBabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab
abababababababababababaaaaaaaaaaaaaaaaaaaaaaaaaalBaalClDlElrlraaaaaaaaaaaaaaaaaaaaabababababababababababababababababababababkBkCkCkCkCkCkCkCkJlFkNlGkJlHkHkHkHlIkBlglxlJlKlxlglLlMlklNlOkBkBabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab
abababababababababababaaaaaaaaaaaaaaaaaaaaaaaaaalBlPlQlRlElSlraaaaaaaaaaaaaaaaaaaaabababababababababababababababababababababkBkCkCkCkCkCkCkCkJlTkNlUkJlVlWlWlWkUkBlglxlXlYlxlglLlZkBkBkBkBababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab
abababababababababababaaaaaaaaaaaaaaaaaaaaaaaaaalrmamblSmcmdlraaaaaaaaaaaaaaaaaaaaabababababababababababababababababababababkBkCkCkIkJkJkJkJkJlTkNlUkJmemfmfmfmfmglglglglglglglLlZkBkBkBkBababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab
abababababababababababaaaaaaaaaaaaaaaaaaaaaaaaaalrlrmhmimhlrlraaaaaaaaaaaaaaaaaaaaabababababababababababababababababababababkBkCkCkJmjkNkNmkkJlTkNlUkJmlmmkTlWkUkBmnlxlxlxlglglLmokBmpmqkBkBabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab
abababababababababababaaaaaaaaaaaaaaaaaaaaaaaalBlBlrmrmslElraaaaaaaaaaaaaaaaaaaaaaabababababababababababababababababababababkBkCkCkJmjkNmtmukJlTkNlUkJkJmvmwkLmxkBmymzmAmzmzlglglgmBmCmCmDkBabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab
abababababababababababaaaaaaaaaaaaaaaaaaaaaamEmFmGmHmImJlEmKlBaaaaaaaaaaaaaaaaaaaaabababababababababababababababababababababkBmLkCkJmjkNkNmMkJkNkNkNkJkNkNkNkJlvkBmNmOmNmNmPlglglgkBmQmRmDkBabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab
abababababababababababaaaaaaaaaaaaaaaaaaaamSmTmUmVmWmIlEmbmXmYlBlBaaaaaaaaaaaaaaaaabababababababababababababababababababababkBkCkCkJmjkNkNkNmZkNkNkNnakNkNkNkJkZkBkBlMnbncndkBnekBkBkBkBkBkBabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab
abababababababababababaaaaaaaaaaaaaaaaaalBaamGnfnfngmIlEnhmbmYaaninjaaaaaaaaaaaaaaabababababababababababababababababababababkBkCkCkJmjkNkNkNnkkNkNkNnlkNkNnmkJnnnomxkBkBkBkBkBnpnpnqnrnsntkBabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab
abababababababababababaaaaaaaaaaaaaaaaaamKlBaaaalBnunvlRnwlRmKlBlBaaaaaaaaaaaaaaaaabababababababababababababababababababababkBkCkIkJkJkJkJkJkJnxkNkNkJkJkJkJkJkJkLkCnononymxkBnpnpnpnpnpnpkBabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab
abababababababababababaaaaaaaaaaaaaalrlrnzlrlrlrlrlrlrnAlrlrlrlrlrlraalBaaaaaaaaaaabababababababababababababababababababababkBkCkJnBnBnCnDnEkJkNkNkNkJnFnGnHnInJkJkCkDkCkCkFlknpnpnpnpnpnKkBabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab
abababababababababababaaaaaaaaaaaaaalrnLlElEnLlrnMnNlElElEnOnPlrnQnRmKnSlBlBaaaaaaabababababababababababababababababababababkBkCkJkNkNkNmtkNnTkNkNkNnUkNmtkNmtnVkJkCkGkEkDkGkBnWnWnWnWnWnXkBabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab
abababababababababababaaaaaaaaaaaaaanYnZlElEnZnYnSnSlElElElEoanYobocnfnfodaaaaaaaaabababababababababababababababababababababkBkCkJoekNkNkNkNofkNkNkNogkNkNkNkNkNkJkCkCkCkEkZkBkBkBkBkBkBkBkBabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab
abababababababababababaaaaaaaaaaaaaaohoilEmblEojnhmblEoklElEolohomonooopoqoraaaaaaabababababababababababababababababababababkBkCkJoekNkNosotkJouovoukJowoxkNkNkNkJkCkEkCkGkZkBababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab
abababababababababababaaaaaaaaaaaaaaoynZlElRnhozlRlElEoAlElElEoyoBoCodoDmEaaaaaaaaabababababababababababababababababababababkBkCkJkNkNoEkJkJkJoFoGkNkJkJkJkNkNkNkJkCkCkDkCkZkBababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab
abababababababababababaaaaaaaaaaaaaalroHlElEoHlroIlEmblRlElEoIlroJoKoLoMaaaaaaaaaaabababababababababababababababababababababkBkCkJoNoOoPkJkCkJoQoQoQkJkCkJoRoSoTkJkCkCkCkCkZkBababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab
abababababababababababaaaaaaaaaaaaaalrlroUlrlrlrlrlrmhoVmhlrlrlrlrlrlBlBlBaaaaaaaaabababababababababababababababababababababkBkCkJoQoQoQkJkClsoWoXoYlukCkJoQoQoQkJkCkCkCkCkZkBababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab
abababababababababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabababababababababababababababababababababkBkCkCkCkCkCkJjPjOkNkMkPkOkOkJkSkCkCkHkBkBkTkUkBkBkHkVkWkHkBabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab
abababababababababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabababababababababababababababababababababkBkCkCkCkCkCkJkQjOjOkRjOjOjOkJkSkCkZkBkBlalblblakBkBkBkBkBkBkBkBabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab
abababababababababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabababababababababababababababababababababkBkCkCkCkCkCkJkXjOjOjOkYjOlckJkSkGkZkBlflglglglglhliljlklllmlnkBabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab
abababababababababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaalolplqldaaaaaaaaaaaaaaaaaaaaaaabababababababababababababababababababababkBkCkCkCkCkClskJkJkJlekJkJkJlukCkClvkBlwlglxlxlylglglglzlAlAlAkBabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab
abababababababababababaaaaaaaaaaaaaaaaaaaaaaaaaalBaalClDlEldldaaaaaaaaaaaaaaaaaaaaabababababababababababababababababababababkBkCkCkCkCkCkCkCkJltjOlFkJlHkHkHkHlIkBlglxlJlKlxlglLlMlklNlOkBkBabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab
abababababababababababaaaaaaaaaaaaaaaaaaaaaaaaaalBlPlQlRlElSldaaaaaaaaaaaaaaaaaaaaabababababababababababababababababababababkBkCkCkCkCkCkCkCkJlGjOlTkJlVlWlWlWkUkBlglxlXlYlxlglLlZkBkBkBkBababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab
abababababababababababaaaaaaaaaaaaaaaaaaaaaaaaaaldmamblSmcmdldaaaaaaaaaaaaaaaaaaaaabababababababababababababababababababababkBkCkCkIkJkJkJkJkJlGjOlTkJmemfmfmfmfmglglglglglglglLlZkBkBkBkBababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab
abababababababababababaaaaaaaaaaaaaaaaaaaaaaaaaaldldmhmimhldldaaaaaaaaaaaaaaaaaaaaabababababababababababababababababababababkBkCkCkJlUjOjOmjkJlGjOlTkJmlmmkTlWkUkBmnlxlxlxlglglLmokBmpmqkBkBabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab
abababababababababababaaaaaaaaaaaaaaaaaaaaaaaalBlBldmrmslEldaaaaaaaaaaaaaaaaaaaaaaabababababababababababababababababababababkBkCkCjOlUjOmkmtkJlGjOlTkJkJmumwkLmxkBmymzmAmzmzlglglgmBmCmCmDkBabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab
abababababababababababaaaaaaaaaaaaaaaaaaaaaamEmFmGmHmImJlEmKlBaaaaaaaaaaaaaaaaaaaaabababababababababababababababababababababkBmLkCjOlUjOjOmvkJjOjOjOkJjOjOjOkJlvkBmNmOmNmNmPlglglgkBmQmRmDkBabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab
abababababababababababaaaaaaaaaaaaaaaaaaaamSmTmUmVmWmIlEmbmXmYlBlBaaaaaaaaaaaaaaaaabababababababababababababababababababababkBkCkCkJlUjOjOjOmMjOjOjOmZjOjOjOkJkZkBkBlMnbncndkBnekBkBkBkBkBkBabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab
abababababababababababaaaaaaaaaaaaaaaaaalBaamGnfnfngmIlEnhmbmYaaninjaaaaaaaaaaaaaaabababababababababababababababababababababkBkCkCkJlUjOjOjOnajOjOjOnljOjOnkkJnnnomxkBkBkBkBkBnpnpnqnrnsntkBabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab
abababababababababababaaaaaaaaaaaaaaaaaamKlBaaaalBnunvlRnwlRmKlBlBaaaaaaaaaaaaaaaaabababababababababababababababababababababkBkCkIkJkJkJkJkJkJnmjOjOkJkJkJkJkJkJkLkCnononymxkBnpnpnpnpnpnpkBabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab
abababababababababababaaaaaaaaaaaaaaldldnzldldldldldldnAldldldldldldaalBaaaaaaaaaaabababababababababababababababababababababkBkCkJnxnxnCnBnDkJjOjOjOkJnFnEnHnGnIkJkCkDkCkCkFlknpnpnpnpnpnKkBabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab
abababababababababababaaaaaaaaaaaaaaldnLlElEnLldnMnNlElElEnOnPldnQnRmKnSlBlBaaaaaaabababababababababababababababababababababkBkCkJjOjOjOmkjOnJjOjOjOnTjOmkjOmknUkJkCkGkEkDkGkBnWnWnWnWnWnXkBabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab
abababababababababababaaaaaaaaaaaaaanYnZlElEnZnYnSnSlElElElEoanYobocnfnfodaaaaaaaaabababababababababababababababababababababkBkCkJnVjOjOjOjOoejOjOjOofjOjOjOjOjOkJkCkCkCkEkZkBkBkBkBkBkBkBkBabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab
abababababababababababaaaaaaaaaaaaaaohoilEmblEojnhmblEoklElEolohomonooopoqoraaaaaaabababababababababababababababababababababkBkCkJnVjOjOogoskJouotoukJowovjOjOjOkJkCkEkCkGkZkBababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab
abababababababababababaaaaaaaaaaaaaaoynZlElRnhozlRlElEoAlElElEoyoBoCodoDmEaaaaaaaaabababababababababababababababababababababkBkCkJjOjOoxkJkJkJoFoEjOkJkJkJjOjOjOkJkCkCkDkCkZkBababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab
abababababababababababaaaaaaaaaaaaaaldoHlElEoHldoIlEmblRlElEoIldoJoKoLoMaaaaaaaaaaabababababababababababababababababababababkBkCkJoNoGoOkJkCkJoQoQoQkJkCkJoRoPoSkJkCkCkCkCkZkBababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab
abababababababababababaaaaaaaaaaaaaaldldoUldldldldldmhoVmhldldldldldlBlBlBaaaaaaaaabababababababababababababababababababababkBkCkJoQoQoQkJkClsoWoXoYlukCkJoQoQoQkJkCkCkCkCkZkBababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab
abababababababababababaaaaaaaaaaaaaaaaaanumbaalBaalBoZmJnuaaaalBaaaaaaaalBaaaaaaaaabababababababababababababababababababababkBkClsoWoXoYlukCkCkCkCkCkCkClsoWoXoYlukCkCkCkCkZkBababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab
abababababababababababaaaaaaaaaaaaaaaaaalBlBaapambaapbpcnulBaanhaaaaaaaaaaaaaaaaaaabababababababababababababababababababababkBkCkCkCkCkCkCkCkCkCkCkCkCkCkCkCkCkCkCkCkCkCkCkZkBababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab
abababababababababababaaaaaaaaaaaaaaaaaaaaaaaalBlBaapdmbpeaaaaaalBaaaaaaaaaaaaaaaaabababababababababababababababababababababkBkBkBkBkBkBkBkBkBkBkBkBkBkBkBkBkBkBkBkBkBkBkBkBkBababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab
abababababababababababaaaaaaaaaaaaaaaaaaaaaaaaaalBlrlrpflrlrlBaalBlBaaaaaaaaaaaaaaababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab
abababababababababababaaaaaaaaaaaaaaaaaaaaaaaaaaaalrpgphphlrpaocmWpipjlBaaaaaaaaaaababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab
abababababababababababaaaaaaaaaaaaaaaaaaaaaaaaaalBldldpfldldlBaalBlBaaaaaaaaaaaaaaababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab
abababababababababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaldpgphphldpaocmWpipjlBaaaaaaaaaaababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab
abababababababababababaaaaaaaaaaaaaaaaaaaaaaaaaaaamhphpkphmhplpmmVpnlElraaaaaaaaaaababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab
abababababababababababaaaaaaaaaaaaaaaaaaaaaaaamJlBlrpophpplrlRpqmVpnaalBaaaaaaaaaaababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab
abababababababababababaaaaaaaaaaaaaaaaaaaaaaaalBlrlrlrmhlrlrlrprpspnaalBaaaaaaaaaaababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab
abababababababababababaaaaaaaaaaaaaaaaaaaaaaaalBlrlEptpuptlElraapvaaaalBaaaaaaaaaaababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab
abababababababababababaaaaaaaaaaaaaaaaaaaaaaaamJlBldpophppldlRpqmVpnaalBaaaaaaaaaaababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab
abababababababababababaaaaaaaaaaaaaaaaaaaaaaaalBldldldmhldldldprpspnaalBaaaaaaaaaaababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab
abababababababababababaaaaaaaaaaaaaaaaaaaaaaaalBldlEptpuptlEldaapvaaaalBaaaaaaaaaaababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab
abababababababababababaaaaaaaaaaaaaaaaaaaaaalBmbpwlElElElElEpwaaaaaaaambaaaaaaaaaaababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab
abababababababababababaaaaaaaaaaaaaaaaaalBlBmJlElrpxlElElEpxlraaaaaaaaaaaaaaaaaaaaababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab
abababababababababababaaaaaaaaaaaaaaaaaaaalBlrlrlrpypypypypylraaaaaaaaaaaaaaaaaaaaababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab
abababababababababababaaaaaaaaaaaaaaaaaaaaaaaaaalrlrpzpzpzlrlraaaaaaaaaaaaaaaaaaaaababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab
abababababababababababaaaaaaaaaaaaaaaaaalBlBmJlEldpxlElElEpxldaaaaaaaaaaaaaaaaaaaaababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab
abababababababababababaaaaaaaaaaaaaaaaaaaalBldldldpypypypypyldaaaaaaaaaaaaaaaaaaaaababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab
abababababababababababaaaaaaaaaaaaaaaaaaaaaaaaaaldldpzpzpzldldaaaaaaaaaaaaaaaaaaaaababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab
abababababababababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaapApApAaaaaaaaaaaaaaaaaaaaaaaaaababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab
abababababababababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab
abababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab
@@ -164,7 +164,7 @@
"adh" = (/obj/machinery/door/poddoor{density = 0; icon_state = "open"; id = "permacell1"; name = "Cell Shutters"; opacity = 0},/obj/machinery/door/airlock/glass{id_tag = "permabolt1"; name = "Cell 1"},/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/security/prison)
"adi" = (/obj/machinery/light/small{dir = 4},/turf/simulated/floor/plating,/area/security/prison)
"adj" = (/obj/structure/cable/yellow{d1 = 2; d2 = 4; icon_state = "2-4"},/turf/simulated/floor/plasteel{icon_state = "white"},/area/security/prison)
"adk" = (/obj/structure/stool/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"); pixel_x = 0; pixel_y = 0},/obj/effect/landmark{name = "revenantspawn"},/turf/simulated/floor/plasteel{icon_state = "white"},/area/security/prison)
"adk" = (/obj/structure/stool/bed,/obj/item/clothing/suit/straight_jacket,/obj/item/clothing/glasses/sunglasses/blindfold,/obj/item/clothing/mask/muzzle,/obj/machinery/camera{c_tag = "Prison Sanitarium"; dir = 4; network = list("SS13","Prison"); pixel_x = 0; pixel_y = 0},/obj/effect/landmark{name = "revenantspawn"},/turf/simulated/floor/plasteel{icon_state = "white"},/area/security/prison)
"adl" = (/obj/machinery/atmospherics/components/unary/vent_scrubber{dir = 8; on = 1; scrub_N2O = 0; scrub_Toxins = 0},/turf/simulated/floor/plasteel{tag = "icon-warndark (NORTHEAST)"; icon_state = "warndark"; dir = 5},/area/prison/solitary{name = "Prisoner Education Chamber"})
"adm" = (/turf/simulated/floor/plating,/obj/structure/shuttle/engine/propulsion/burst{dir = 4},/turf/simulated/wall/shuttle{icon_state = "swall_f6"; dir = 2},/area/shuttle/pod_3)
"adn" = (/obj/structure/closet/emcloset,/obj/machinery/light/small{dir = 8},/turf/simulated/floor/plating,/area/crew_quarters/fitness{name = "\improper Recreation Area"})
@@ -253,7 +253,7 @@
"aeS" = (/obj/machinery/power/apc{cell_type = 5000; dir = 1; name = "Prison Wing APC"; pixel_x = 1; pixel_y = 24},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/structure/cable/yellow{d2 = 2; icon_state = "0-2"},/obj/structure/cable/yellow{d2 = 8; icon_state = "0-8"},/obj/structure/cable/yellow{d2 = 4; icon_state = "0-4"},/obj/machinery/camera{c_tag = "Prison Hallway Starboard"; dir = 2; network = list("SS13","Prison")},/turf/simulated/floor/plasteel{dir = 2; icon_state = "redcorner"},/area/security/prison)
"aeT" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/manifold/supply/hidden{dir = 1},/obj/structure/sign/pods{pixel_y = 30},/turf/simulated/floor/plasteel{dir = 2; icon_state = "redcorner"},/area/security/prison)
"aeU" = (/obj/machinery/door/firedoor,/obj/machinery/door/airlock/security{aiControlDisabled = 1; id_tag = "prisonereducation"; name = "Prisoner Education Chamber"; req_access = null; req_access_txt = "3"},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor/plasteel{icon_state = "red"; dir = 1},/area/prison/solitary{name = "Prisoner Education Chamber"})
"aeV" = (/obj/machinery/door/firedoor,/obj/machinery/door/airlock/glass_security{name = "Insanity Ward"; req_access_txt = "2"},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plasteel{icon_state = "red"; dir = 1},/area/security/prison)
"aeV" = (/obj/machinery/door/firedoor,/obj/machinery/door/airlock/glass_security{name = "Prison Sanitarium"; req_access_txt = "2"},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plasteel{icon_state = "red"; dir = 1},/area/security/prison)
"aeW" = (/obj/structure/closet/secure_closet{name = "contraband locker"; req_access_txt = "3"},/obj/effect/spawner/lootdrop/maintenance{lootcount = 3; name = "3maintenance loot spawner"},/obj/effect/spawner/lootdrop/armory_contraband{loot = list(/obj/item/weapon/gun/projectile/automatic/pistol = 5, /obj/item/weapon/gun/projectile/shotgun/automatic/combat = 5, /obj/item/weapon/gun/projectile/revolver/mateba, /obj/item/weapon/gun/projectile/automatic/pistol/deagle, /obj/item/weapon/storage/box/throwing_stars = 3)},/turf/simulated/floor/plasteel{tag = "icon-vault (WEST)"; icon_state = "vault"; dir = 8},/area/security/warden)
"aeX" = (/obj/structure/grille,/obj/structure/window/reinforced/fulltile,/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor/plating,/area/crew_quarters/fitness{name = "\improper Recreation Area"})
"aeY" = (/obj/machinery/atmospherics/components/unary/vent_pump{dir = 2; on = 1},/obj/machinery/light/small{dir = 1},/obj/item/weapon/storage/secure/safe{name = "armory safe A"; pixel_x = 6; pixel_y = 28},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/security/warden)
@@ -827,7 +827,7 @@
"apU" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor/plating,/area/maintenance/fpmaint2{name = "Port Maintenance"})
"apV" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 6},/obj/structure/disposalpipe/segment{dir = 4; icon_state = "pipe-c"},/obj/structure/cable/yellow{d1 = 2; d2 = 4; icon_state = "2-4"},/turf/simulated/floor/plating,/area/maintenance/fore)
"apW" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 9},/obj/structure/disposalpipe/segment{dir = 8; icon_state = "pipe-c"},/obj/structure/cable/yellow{d1 = 1; d2 = 8; icon_state = "1-8"},/turf/simulated/floor/plating,/area/maintenance/fore)
"apX" = (/obj/machinery/bot/cleanbot{name = "Mopfficer Sweepsky"; on = 0},/turf/simulated/floor/plating{tag = "icon-platingdmg1"; icon_state = "platingdmg1"},/area/maintenance/fore)
"apX" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/machinery/atmospherics/components/unary/vent_pump{dir = 2; on = 1},/obj/machinery/navbeacon{codes_txt = "patrol;next_patrol=1-BrigCells"; location = "0-SecurityDesk"},/turf/simulated/floor/plasteel,/area/hallway/primary/fore)
"apY" = (/obj/item/weapon/storage/box/lights/mixed,/obj/item/device/flashlight{pixel_x = 1; pixel_y = 5},/obj/machinery/light/small{dir = 4},/turf/simulated/floor/plating,/area/maintenance/fore)
"apZ" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/structure/extinguisher_cabinet{pixel_x = -27; pixel_y = 0},/turf/simulated/floor/plasteel{icon_state = "redcorner"; dir = 1},/area/security/brig)
"aqa" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/disposalpipe/segment,/turf/simulated/floor/plasteel,/area/security/brig)
@@ -1660,7 +1660,7 @@
"aFV" = (/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{dir = 1; initialize_directions = 11},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plasteel,/area/hallway/primary/fore)
"aFW" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/floor/plasteel,/area/hallway/primary/fore)
"aFX" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/floor/plasteel,/area/hallway/primary/fore)
"aFY" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/machinery/atmospherics/components/unary/vent_pump{dir = 2; on = 1},/obj/machinery/navbeacon{codes_txt = "patrol;next_patrol=1-BrigCells"; location = "0-SecurityDesk"},/obj/machinery/bot/secbot/beepsky{desc = "It's Officer Beepsky! Powered by a potato and a shot of whiskey, and with a sturdier reinforced chassis, too. "; health = 45; maxhealth = 45; name = "Officer Beepsky"},/turf/simulated/floor/plasteel,/area/hallway/primary/fore)
"aFY" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/machinery/navbeacon{codes_txt = "patrol;next_patrol=2.2-Leaving-Storage"; location = "2.1-Storage"},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/cable/yellow{d1 = 1; d2 = 8; icon_state = "1-8"},/turf/simulated/floor/plasteel{dir = 4; icon_state = "browncorner"},/area/construction/Storage{name = "Storage Wing"})
"aFZ" = (/obj/structure/cable/yellow{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 9},/turf/simulated/floor/plasteel,/area/hallway/primary/fore)
"aGa" = (/obj/structure/table,/obj/item/weapon/crowbar,/obj/item/device/assembly/prox_sensor{pixel_x = -8; pixel_y = 4},/obj/item/clothing/gloves/color/fyellow,/obj/machinery/light/small,/turf/simulated/floor/plasteel{dir = 2; icon_state = "brown"},/area/storage/primary)
"aGb" = (/obj/structure/table/reinforced,/obj/machinery/door/window/westleft{base_state = "right"; dir = 8; icon_state = "right"; name = "Outer Window"; req_access_txt = "0"},/obj/machinery/door/window/brigdoor{dir = 4; name = "Security Desk"; req_access_txt = "1"},/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/item/device/radio/off,/obj/machinery/door/poddoor/shutters/preopen{id = "briglockdown"; name = "brig shutters"},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/security/brig)
@@ -1867,7 +1867,7 @@
"aJU" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/cable/yellow{d1 = 2; d2 = 8; icon_state = "2-8"},/turf/simulated/floor/plasteel{dir = 4; icon_state = "browncorner"},/area/construction/Storage{name = "Storage Wing"})
"aJV" = (/obj/structure/cable/yellow{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{dir = 2; initialize_directions = 11},/obj/item/device/radio/intercom{freerange = 0; frequency = 1459; name = "Station Intercom (General)"; pixel_x = 0; pixel_y = -26},/obj/machinery/camera{c_tag = "Storage Wing"; dir = 1; network = list("SS13")},/obj/machinery/light,/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plasteel{dir = 4; icon_state = "browncorner"},/area/construction/Storage{name = "Storage Wing"})
"aJW" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plasteel{dir = 4; icon_state = "browncorner"},/area/construction/Storage{name = "Storage Wing"})
"aJX" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/machinery/navbeacon{codes_txt = "patrol;next_patrol=3-Central-Port"; location = "2-Storage"},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/cable/yellow{d1 = 1; d2 = 8; icon_state = "1-8"},/turf/simulated/floor/plasteel{dir = 4; icon_state = "browncorner"},/area/construction/Storage{name = "Storage Wing"})
"aJX" = (/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/components/unary/vent_scrubber{dir = 8; on = 1; scrub_N2O = 0; scrub_Toxins = 0},/turf/simulated/floor/plasteel,/area/quartermaster/storage)
"aJY" = (/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{dir = 1; initialize_directions = 11},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plasteel,/area/construction/Storage{name = "Storage Wing"})
"aJZ" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plasteel,/area/construction/Storage{name = "Storage Wing"})
"aKa" = (/obj/machinery/door/firedoor,/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/door/airlock/security{name = "Security-Storage Backroom"; req_access = null; req_access_txt = "63"},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/hallway/primary/fore)
@@ -2453,7 +2453,7 @@
"aVi" = (/obj/machinery/door/airlock/highsecurity{icon_state = "door_closed"; locked = 0; name = "AI Upload"; req_access_txt = "16"},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/turret_protected/ai_upload)
"aVj" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/cable/yellow{d1 = 2; d2 = 8; icon_state = "2-8"},/turf/simulated/floor/plasteel,/area/hallway/primary/fore)
"aVk" = (/obj/machinery/atmospherics/components/unary/vent_scrubber{dir = 1; on = 1; scrub_N2O = 0; scrub_Toxins = 0},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/crew_quarters/courtroom)
"aVl" = (/obj/structure/extinguisher_cabinet{pixel_x = 5; pixel_y = -32},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/crew_quarters/courtroom)
"aVl" = (/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{dir = 8; initialize_directions = 11},/turf/simulated/floor/plasteel,/area/quartermaster/storage)
"aVm" = (/obj/item/device/radio/intercom{freerange = 0; frequency = 1459; name = "Station Intercom (General)"; pixel_x = 0; pixel_y = -26},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/crew_quarters/courtroom)
"aVn" = (/obj/machinery/newscaster{pixel_x = 0; pixel_y = -32},/obj/machinery/light,/obj/machinery/camera{c_tag = "Courtroom - Gallery"; dir = 1; network = list("SS13")},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/crew_quarters/courtroom)
"aVo" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 6},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/crew_quarters/courtroom)
@@ -2495,7 +2495,7 @@
"aVY" = (/obj/machinery/door/airlock/maintenance{req_access_txt = "12"},/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plating,/area/maintenance/fpmaint2{name = "Port Maintenance"})
"aVZ" = (/turf/simulated/wall,/area/quartermaster/storage)
"aWa" = (/obj/machinery/conveyor_switch/oneway{convdir = 1; id = "QMLoad"; pixel_x = 6},/turf/simulated/floor/plasteel{dir = 8; icon_state = "warning"},/area/quartermaster/storage)
"aWb" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor/plasteel,/area/quartermaster/storage)
"aWb" = (/obj/structure/sign/directions/security{desc = "A direction sign, pointing out which way the security department is."; dir = 1; icon_state = "direction_sec"; pixel_x = 0; pixel_y = 8; tag = "icon-direction_sec (NORTH)"},/obj/structure/sign/directions/engineering{desc = "A direction sign, pointing out which way the engineering department is."; dir = 4; icon_state = "direction_eng"; pixel_y = 0; tag = "icon-direction_eng (EAST)"},/obj/structure/sign/directions/engineering{desc = "A direction sign, pointing out which way the bridge is."; dir = 2; icon_state = "direction_bridge"; name = "bridge"; pixel_y = -8; tag = "icon-direction_bridge (EAST)"},/turf/simulated/wall/r_wall,/area/hallway/primary/fore)
"aWc" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/firealarm{dir = 4; pixel_x = 24},/turf/simulated/floor/plasteel{dir = 4; icon_state = "warning"},/area/quartermaster/storage)
"aWd" = (/obj/structure/closet/secure_closet/security/cargo,/obj/machinery/light_switch{pixel_x = -25; pixel_y = 0},/obj/machinery/alarm{pixel_y = 23},/turf/simulated/floor/plasteel{icon_state = "red"; dir = 9},/area/security/checkpoint/supply{name = "Security Post - Cargo"})
"aWe" = (/obj/machinery/power/apc{dir = 1; name = "Security Post - Cargo APC"; pixel_x = 1; pixel_y = 24},/obj/structure/cable/yellow{d2 = 2; icon_state = "0-2"},/turf/simulated/floor/plasteel{icon_state = "red"; dir = 1},/area/security/checkpoint/supply{name = "Security Post - Cargo"})
@@ -2585,14 +2585,14 @@
"aXK" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/wall/r_wall,/area/turret_protected/ai_upload_foyer)
"aXL" = (/obj/structure/cable/yellow{d2 = 2; icon_state = "0-2"},/obj/machinery/power/apc{dir = 1; name = "Law Office APC"; pixel_y = 24},/obj/structure/flora/kirbyplants{icon_state = "plant-21"; layer = 4.1; tag = "icon-plant-21"},/turf/simulated/floor/wood,/area/lawoffice)
"aXM" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plasteel{icon_state = "neutral"; dir = 1},/area/hallway/primary/central)
"aXN" = (/obj/structure/sign/map/left{desc = "A framed picture of the station. Clockwise from security at the top (red), you see engineering (yellow), science (purple), escape (red and white), medbay (green), arrivals (blue and white), and finally cargo (brown)."; icon_state = "map-left-MS"; pixel_y = 32},/obj/machinery/light{dir = 1},/turf/simulated/floor/plasteel{icon_state = "neutral"; dir = 1},/area/hallway/primary/central)
"aXO" = (/obj/structure/sign/map/right{desc = "A framed picture of the station. Clockwise from security at the top (red), you see engineering (yellow), science (purple), escape (red and white), medbay (green), arrivals (blue and white), and finally cargo (brown)."; icon_state = "map-right-MS"; pixel_y = 32},/obj/machinery/camera{c_tag = "Central Primary Hallway - Fore"; dir = 2; network = list("SS13")},/turf/simulated/floor/plasteel{icon_state = "redcorner"; dir = 1},/area/hallway/primary/central)
"aXN" = (/obj/structure/sign/directions/engineering{desc = "A direction sign, pointing out which way the escape arm is."; icon_state = "direction_evac"; name = "escape arm"; tag = "icon-direction_evac"},/obj/structure/sign/directions/engineering{desc = "A direction sign, pointing out which way the medical department is."; icon_state = "direction_med"; name = "medical department"; pixel_y = 8; tag = "icon-direction_med"},/obj/structure/sign/directions/engineering{desc = "A direction sign, pointing out which way the research department is."; icon_state = "direction_sci"; name = "research department"; pixel_y = -8; tag = "icon-direction_sci"},/turf/simulated/wall,/area/crew_quarters/courtroom)
"aXO" = (/obj/machinery/camera{c_tag = "Central Primary Hallway - Fore"; dir = 2; network = list("SS13")},/turf/simulated/floor/plasteel{icon_state = "redcorner"; dir = 1},/area/hallway/primary/central)
"aXP" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor/plasteel{icon_state = "redcorner"; dir = 1},/area/hallway/primary/central)
"aXQ" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plasteel,/area/hallway/primary/central)
"aXR" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{req_access_txt = 1},/turf/simulated/floor/plasteel{icon_state = "redcorner"; dir = 4},/area/hallway/primary/central)
"aXS" = (/obj/machinery/firealarm{dir = 2; pixel_y = 24},/turf/simulated/floor/plasteel{icon_state = "redcorner"; dir = 4},/area/hallway/primary/central)
"aXT" = (/obj/item/device/radio/intercom{freerange = 0; frequency = 1459; name = "Station Intercom (General)"; pixel_x = 0; pixel_y = 21},/turf/simulated/floor/plasteel{icon_state = "neutral"; dir = 1},/area/hallway/primary/central)
"aXU" = (/obj/machinery/status_display{density = 0; layer = 4; pixel_x = 0; pixel_y = 32},/obj/machinery/light{dir = 1},/turf/simulated/floor/plasteel{icon_state = "neutral"; dir = 1},/area/hallway/primary/central)
"aXS" = (/obj/machinery/light{dir = 1},/obj/machinery/status_display{density = 0; layer = 4; pixel_x = 0; pixel_y = 32},/turf/simulated/floor/plasteel{icon_state = "neutral"; dir = 1},/area/hallway/primary/central)
"aXT" = (/turf/simulated/floor/plasteel{icon_state = "redcorner"; dir = 4},/area/hallway/primary/central)
"aXU" = (/obj/machinery/light{dir = 1},/obj/structure/sign/map/right{desc = "A framed picture of the station. Clockwise from security at the top (red), you see engineering (yellow), science (purple), escape (red and white), medbay (green), arrivals (blue and white), and finally cargo (brown)."; icon_state = "map-right-MS"; pixel_y = 32},/turf/simulated/floor/plasteel{icon_state = "neutral"; dir = 1},/area/hallway/primary/central)
"aXV" = (/obj/structure/table/wood,/obj/item/weapon/gavelblock,/obj/item/weapon/gavelhammer,/turf/simulated/floor/plasteel{icon_state = "neutral"; dir = 1},/area/crew_quarters/courtroom)
"aXW" = (/obj/structure/grille,/obj/structure/window/reinforced/tinted{dir = 5; health = 120; icon_state = "twindow"; reinf = 0},/turf/simulated/floor/plating,/area/crew_quarters/courtroom)
"aXX" = (/obj/structure/disposalpipe/segment,/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/door/firedoor,/obj/machinery/door/airlock/centcom{name = "Courtroom"; opacity = 1},/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/crew_quarters/courtroom)
@@ -2645,7 +2645,7 @@
"aYS" = (/obj/structure/cable/yellow{d1 = 2; d2 = 4; icon_state = "2-4"},/obj/machinery/computer/prisoner,/turf/simulated/floor/plasteel{dir = 5; icon_state = "darkred"; tag = "icon-darkblue"; temperature = 273.15},/area/bridge)
"aYT" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plasteel,/area/quartermaster/storage)
"aYU" = (/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plasteel,/area/quartermaster/storage)
"aYV" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/components/unary/vent_scrubber{dir = 8; on = 1; scrub_N2O = 0; scrub_Toxins = 0},/obj/machinery/atmospherics/pipe/manifold/supply/hidden{dir = 1},/turf/simulated/floor/plasteel,/area/quartermaster/storage)
"aYV" = (/obj/structure/sign/map/left{desc = "A framed picture of the station. Clockwise from security at the top (red), you see engineering (yellow), science (purple), escape (red and white), medbay (green), arrivals (blue and white), and finally cargo (brown)."; icon_state = "map-left-MS"; pixel_y = 32},/turf/simulated/floor/plasteel{icon_state = "neutral"; dir = 1},/area/hallway/primary/central)
"aYW" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/cable/yellow{d1 = 2; d2 = 8; icon_state = "2-8"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/structure/extinguisher_cabinet{pixel_x = 27; pixel_y = 0},/turf/simulated/floor/plasteel{dir = 4; icon_state = "warning"},/area/quartermaster/storage)
"aYX" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/wall,/area/security/checkpoint/supply{name = "Security Post - Cargo"})
"aYY" = (/obj/machinery/recharger{pixel_y = 4},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/structure/table/reinforced,/turf/simulated/floor/plasteel{icon_state = "red"; dir = 10},/area/security/checkpoint/supply{name = "Security Post - Cargo"})
@@ -2757,8 +2757,8 @@
"bba" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/cable/yellow{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/machinery/hologram/holopad,/turf/simulated/floor/plasteel,/area/hallway/primary/central)
"bbb" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plasteel{icon_state = "L2"},/area/hallway/primary/central)
"bbc" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plasteel{icon_state = "L4"},/area/hallway/primary/central)
"bbd" = (/obj/structure/cable/yellow{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/structure/cable/yellow{icon_state = "1-4"; step_x = 0; step_y = 0; d1 = 1; d2 = 4},/turf/simulated/floor/plasteel{icon_state = "L8"},/area/hallway/primary/central)
"bbe" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/machinery/navbeacon{codes_txt = "patrol;next_patrol=2-Storage"; location = "1.5-Fore-Central"},/turf/simulated/floor/plasteel{icon_state = "L6"},/area/hallway/primary/central)
"bbd" = (/obj/structure/extinguisher_cabinet{pixel_x = 27; pixel_y = 0},/obj/structure/flora/kirbyplants{icon_state = "plant-16"; layer = 4.1; tag = "icon-plant-16"},/obj/item/device/radio/intercom{freerange = 0; frequency = 1459; name = "Station Intercom (General)"; pixel_x = 0; pixel_y = 21},/turf/simulated/floor/plasteel{dir = 5; icon_state = "neutral"},/area/hallway/primary/central)
"bbe" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/pipe/manifold/supply/hidden{dir = 1},/turf/simulated/floor/plasteel,/area/quartermaster/storage)
"bbf" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plasteel{icon_state = "L10"},/area/hallway/primary/central)
"bbg" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plasteel{icon_state = "L12"},/area/hallway/primary/central)
"bbh" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plasteel{desc = ""; icon_state = "L14"},/area/hallway/primary/central)
@@ -2950,7 +2950,7 @@
"beL" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor/plasteel{tag = "icon-vault (WEST)"; icon_state = "vault"; dir = 8},/area/storage/tech)
"beM" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor/plasteel{tag = "icon-vault (WEST)"; icon_state = "vault"; dir = 8},/area/storage/tech)
"beN" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 10},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plasteel{tag = "icon-vault (WEST)"; icon_state = "vault"; dir = 8},/area/storage/tech)
"beO" = (/obj/structure/extinguisher_cabinet{pixel_x = 27; pixel_y = 0},/obj/structure/flora/kirbyplants{icon_state = "plant-16"; layer = 4.1; tag = "icon-plant-16"},/turf/simulated/floor/plasteel{dir = 5; icon_state = "neutral"},/area/hallway/primary/central)
"beO" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/cable/yellow{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/machinery/navbeacon{codes_txt = "patrol;next_patrol=3-Central-Port"; location = "2.2-Leaving-Storage"},/turf/simulated/floor/plasteel,/area/hallway/primary/central)
"beP" = (/obj/machinery/firealarm{dir = 8; pixel_x = -26; pixel_y = 0},/obj/structure/disposalpipe/segment{dir = 4; icon_state = "pipe-c"},/obj/machinery/atmospherics/components/unary/vent_scrubber{dir = 4; on = 1; scrub_N2O = 0; scrub_Toxins = 0},/turf/simulated/floor/plasteel{icon_state = "vault"; dir = 5},/area/engine/chiefs_office)
"beQ" = (/obj/machinery/requests_console{announcementConsole = 1; department = "Head of Personnel's Desk"; departmentType = 5; name = "Head of Personnel RC"; pixel_y = 30},/obj/machinery/light{dir = 1},/obj/item/weapon/storage/secure/briefcase,/obj/structure/table/wood,/turf/simulated/floor/wood,/area/crew_quarters/heads)
"beR" = (/obj/machinery/door/airlock{name = "Central Emergency Storage"; req_access_txt = "0"},/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plating,/area/maintenance/maintcentral{name = "Central Maintenance"})
@@ -3348,7 +3348,7 @@
"bmt" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 5},/turf/simulated/wall/r_wall,/area/construction/hallway{name = "\improper MiniSat Exterior"})
"bmu" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 10},/turf/simulated/wall/r_wall,/area/construction/hallway{name = "\improper MiniSat Exterior"})
"bmv" = (/turf/simulated/floor/carpet,/area/hallway/primary/port)
"bmw" = (/obj/machinery/atmospherics/components/unary/vent_pump{dir = 4; on = 1},/obj/machinery/atmospherics/pipe/simple/supply/hidden{req_access_txt = 1},/turf/simulated/floor/plasteel{dir = 8; icon_state = "warning"},/area/hallway/secondary/entry{name = "Arrivals"})
"bmw" = (/obj/structure/cable/yellow{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/structure/cable/yellow{icon_state = "1-4"; step_x = 0; step_y = 0; d1 = 1; d2 = 4},/obj/machinery/bot/secbot/beepsky{desc = "It's Officer Beepsky! Powered by a potato and a shot of whiskey, and with a sturdier reinforced chassis, too. "; health = 45; maxhealth = 45; name = "Officer Beepsky"},/turf/simulated/floor/plasteel{icon_state = "L8"},/area/hallway/primary/central)
"bmx" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor/plasteel{dir = 4; icon_state = "whitecorner"},/area/hallway/secondary/entry{name = "Arrivals"})
"bmy" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor/plasteel{icon_state = "arrival"; dir = 5},/area/hallway/secondary/entry{name = "Arrivals"})
"bmz" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/machinery/door/firedoor,/turf/simulated/floor/plasteel,/area/hallway/primary/port)
@@ -3450,7 +3450,7 @@
"bor" = (/turf/simulated/floor/carpet,/area/bridge)
"bos" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/carpet,/area/hallway/primary/port)
"bot" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/structure/disposalpipe/segment{dir = 8; icon_state = "pipe-c"},/obj/machinery/firealarm{dir = 4; pixel_x = 24},/turf/simulated/floor/plasteel{dir = 2; icon_state = "neutralcorner"},/area/hallway/primary/central)
"bou" = (/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/scrubbers/hidden,/turf/simulated/floor/plasteel,/area/hallway/secondary/entry{name = "Arrivals"})
"bou" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/machinery/navbeacon{codes_txt = "patrol;next_patrol=2.1-Storage"; location = "1.5-Fore-Central"},/turf/simulated/floor/plasteel{icon_state = "L6"},/area/hallway/primary/central)
"bov" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plasteel{dir = 4; icon_state = "arrival"},/area/hallway/secondary/entry{name = "Arrivals"})
"bow" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/door/firedoor,/turf/simulated/floor/plasteel,/area/hallway/primary/port)
"box" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plasteel{dir = 10; icon_state = "neutral"},/area/hallway/primary/port)
@@ -3463,7 +3463,7 @@
"boE" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/structure/disposalpipe/segment,/turf/simulated/floor/plasteel{icon_state = "neutral"; dir = 4},/area/hallway/primary/port)
"boF" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor/plasteel{tag = "icon-darkbluecorners"; icon_state = "darkbluecorners"; temperature = 273.15},/area/bridge)
"boG" = (/obj/structure/closet/wardrobe/grey,/turf/simulated/floor/plasteel/shuttle,/area/shuttle/arrival)
"boH" = (/obj/structure/sign/directions/engineering{desc = "A direction sign, pointing out which way the engineering department is."; dir = 4; icon_state = "direction_eng"; pixel_y = -8; tag = "icon-direction_eng (EAST)"},/turf/simulated/wall,/area/storage/tools)
"boH" = (/obj/structure/closet/wardrobe/cargotech,/turf/simulated/floor/plasteel{dir = 2; icon_state = "warning"},/area/quartermaster/storage)
"boI" = (/obj/machinery/hologram/holopad,/obj/machinery/status_display{density = 0; layer = 4; pixel_x = 0; pixel_y = 32},/obj/machinery/light{dir = 1},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/bridge)
"boJ" = (/obj/machinery/door/firedoor,/obj/machinery/mineral/ore_redemption,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/quartermaster/office{name = "\improper Cargo Office"})
"boK" = (/obj/structure/table/wood,/obj/item/weapon/book/manual/wiki/security_space_law{pixel_y = 3},/obj/item/device/radio/intercom{dir = 0; name = "Station Intercom (General)"; pixel_x = 0; pixel_y = 28},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/bridge)
@@ -3499,7 +3499,7 @@
"bpo" = (/turf/simulated/wall,/area/storage/art)
"bpp" = (/obj/structure/reagent_dispensers/fueltank,/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor/plating,/area/maintenance/maintcentral{name = "Central Maintenance"})
"bpq" = (/obj/machinery/door/firedoor,/obj/machinery/door/airlock/glass{icon = 'icons/obj/doors/Doorengglass.dmi'; name = "Art Storage"},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plasteel,/area/storage/art)
"bpr" = (/obj/structure/table/wood,/obj/item/stack/packageWrap,/obj/item/stack/packageWrap,/obj/item/weapon/gun/projectile/revolver/doublebarrel,/obj/machinery/camera{c_tag = "Maltese Falcon - Backroom"; dir = 2; network = list("SS13")},/turf/simulated/floor/wood,/area/crew_quarters/bar)
"bpr" = (/obj/structure/sign/directions/security{desc = "A direction sign, pointing out which way the security department is."; dir = 1; icon_state = "direction_sec"; pixel_x = 0; pixel_y = 8; tag = "icon-direction_sec (NORTH)"},/obj/structure/sign/directions/engineering{desc = "A direction sign, pointing out which way the engineering department is."; dir = 4; icon_state = "direction_eng"; pixel_y = 0; tag = "icon-direction_eng (EAST)"},/obj/structure/sign/directions/engineering{desc = "A direction sign, pointing out which way the bridge is."; dir = 2; icon_state = "direction_bridge"; name = "bridge"; pixel_y = -8; tag = "icon-direction_bridge (EAST)"},/turf/simulated/wall/r_wall,/area/storage/tools)
"bps" = (/obj/machinery/door/airlock/maintenance{req_access_txt = "12"},/obj/structure/disposalpipe/segment,/turf/simulated/floor/plating,/area/maintenance/starboard)
"bpt" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/wall,/area/maintenance/starboard)
"bpu" = (/obj/machinery/door/airlock{icon = 'icons/obj/doors/Doorint.dmi'; name = "Starboard Emergency Storage"; req_access_txt = "0"},/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor/plating,/area/maintenance/starboard)
@@ -3528,7 +3528,7 @@
"bpR" = (/obj/structure/transit_tube{tag = "icon-S-NW"; icon_state = "S-NW"},/obj/structure/window/reinforced{dir = 1; pixel_y = 0},/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/construction/hallway{name = "\improper MiniSat Exterior"})
"bpS" = (/obj/structure/window/reinforced{dir = 1; pixel_y = 0},/obj/machinery/atmospherics/components/unary/vent_pump{dir = 2; on = 1},/obj/machinery/alarm{pixel_y = 28},/obj/machinery/light{dir = 1},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/construction/hallway{name = "\improper MiniSat Exterior"})
"bpT" = (/obj/structure/window/reinforced{dir = 1; pixel_y = 0},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/construction/hallway{name = "\improper MiniSat Exterior"})
"bpU" = (/obj/machinery/door/window{dir = 1; name = "MiniSat Walkway Access"; req_access_txt = "0"},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/construction/hallway{name = "\improper MiniSat Exterior"})
"bpU" = (/obj/structure/window/reinforced{dir = 4; pixel_x = 0},/obj/structure/window/reinforced{dir = 8},/obj/machinery/atmospherics/components/unary/vent_pump{dir = 2; on = 1},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/construction/hallway{name = "\improper MiniSat Exterior"})
"bpV" = (/obj/machinery/status_display{density = 0; layer = 4; pixel_x = 0; pixel_y = 30},/obj/structure/showcase{density = 0; desc = "An old, deactivated cyborg. Whilst once actively used to guard against intruders, it now simply intimidates them with its cold, steely gaze."; dir = 8; icon = 'icons/mob/robots.dmi'; icon_state = "robot_old"; name = "Cyborg Statue"; pixel_x = 9; pixel_y = 2},/obj/item/device/radio/intercom{name = "Station Intercom (General)"; pixel_x = 30; pixel_y = 0},/obj/machinery/camera{c_tag = "MiniSat Exterior Access Fore"; dir = 2; network = list("MiniSat")},/turf/simulated/floor/plasteel{icon_state = "vault"; dir = 8},/area/construction/hallway{name = "\improper MiniSat Exterior"})
"bpW" = (/obj/machinery/light/small{dir = 8},/obj/structure/dispenser/oxygen{pixel_x = -1; pixel_y = 2},/turf/simulated/floor/plasteel{icon_state = "vault"; dir = 8},/area/turret_protected/tcomwest{name = "\improper MiniSat West Wing"})
"bpX" = (/obj/structure/table,/obj/item/device/flashlight/lamp,/obj/machinery/status_display{density = 0; layer = 4; pixel_x = 0; pixel_y = 31},/turf/simulated/floor/plasteel{icon_state = "vault"; dir = 8},/area/turret_protected/tcomwest{name = "\improper MiniSat West Wing"})
@@ -3631,18 +3631,18 @@
"brQ" = (/obj/machinery/door/firedoor,/obj/machinery/door/airlock/hatch{name = "MiniSat Transit Tube"; req_one_access_txt = "32;19"},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/engine/break_room)
"brR" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/components/unary/vent_pump{dir = 2; on = 1},/turf/simulated/floor/plasteel{icon_state = "vault"; dir = 8},/area/engine/break_room)
"brS" = (/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)
"brT" = (/obj/structure/transit_tube{tag = "icon-D-NW"; icon_state = "D-NW"},/obj/structure/window/reinforced{dir = 8},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plating/airless,/area/space)
"brU" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plating/airless,/area/space)
"brV" = (/obj/structure/transit_tube{tag = "icon-D-SE"; icon_state = "D-SE"},/obj/structure/transit_tube{tag = "icon-D-NE"; icon_state = "D-NE"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plating/airless,/area/space)
"brW" = (/obj/structure/transit_tube{tag = "icon-E-SW-NW"; icon_state = "E-SW-NW"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plating/airless,/area/space)
"brX" = (/obj/structure/transit_tube,/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plating/airless,/area/space)
"brY" = (/obj/structure/transit_tube{tag = "icon-E-W-Pass"; icon_state = "E-W-Pass"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plating/airless,/area/space)
"brZ" = (/obj/structure/transit_tube{tag = "icon-W-NE-SE"; icon_state = "W-NE-SE"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plating/airless,/area/space)
"bsa" = (/obj/structure/transit_tube{tag = "icon-D-NW"; icon_state = "D-NW"},/obj/structure/transit_tube{tag = "icon-D-SW"; icon_state = "D-SW"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plating/airless,/area/space)
"bsb" = (/obj/structure/window/reinforced{dir = 4; pixel_x = 0},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plating/airless,/area/space)
"brT" = (/obj/structure/window/reinforced{dir = 4; pixel_x = 0},/obj/structure/window/reinforced{dir = 8},/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/construction/hallway{name = "\improper MiniSat Exterior"})
"brU" = (/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/scrubbers/hidden,/obj/machinery/atmospherics/components/unary/vent_pump{dir = 8; on = 1},/turf/simulated/floor/plasteel,/area/hallway/secondary/entry{name = "Arrivals"})
"brV" = (/obj/structure/sign/directions/engineering{desc = "A direction sign, pointing out which way the Suuply department is."; dir = 1; icon_state = "direction_supply"; name = "cargo department"; pixel_y = 8; tag = "icon-direction_supply"},/turf/simulated/wall,/area/quartermaster/office{name = "\improper Cargo Office"})
"brW" = (/obj/structure/sign/directions/engineering{desc = "A direction sign, pointing out which way the escape arm is."; icon_state = "direction_evac"; name = "escape arm"; tag = "icon-direction_evac"},/obj/structure/sign/directions/engineering{desc = "A direction sign, pointing out which way the medical department is."; icon_state = "direction_med"; name = "medical department"; pixel_y = 8; tag = "icon-direction_med"},/obj/structure/sign/directions/engineering{desc = "A direction sign, pointing out which way the research department is."; icon_state = "direction_sci"; name = "research department"; pixel_y = -8; tag = "icon-direction_sci"},/turf/simulated/wall,/area/storage/art)
"brX" = (/obj/structure/sign/directions/engineering{desc = "A direction sign, pointing out which way the engineering department is."; dir = 4; icon_state = "direction_eng"; pixel_y = 8; tag = "icon-direction_eng (EAST)"},/turf/simulated/wall,/area/maintenance/starboard)
"brY" = (/obj/structure/lattice,/obj/structure/transit_tube{tag = "icon-E-W-Pass"; icon_state = "E-W-Pass"},/turf/space,/area/space)
"brZ" = (/obj/machinery/door/window{dir = 1; name = "MiniSat Walkway Access"; req_access_txt = "0"},/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/construction/hallway{name = "\improper MiniSat Exterior"})
"bsa" = (/obj/structure/table/wood,/obj/item/stack/packageWrap,/obj/item/stack/packageWrap,/obj/item/weapon/gun/projectile/revolver/doublebarrel,/obj/machinery/camera{c_tag = "Bar - Backroom"; dir = 2; network = list("SS13")},/turf/simulated/floor/wood,/area/crew_quarters/bar)
"bsb" = (/obj/structure/transit_tube{tag = "icon-D-NW"; icon_state = "D-NW"},/obj/structure/window/reinforced{dir = 8},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/lattice/catwalk,/turf/space,/area/space)
"bsc" = (/obj/structure/transit_tube{tag = "icon-N-S"; icon_state = "N-S"},/obj/structure/window/reinforced{dir = 8},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plasteel{icon_state = "vault"; dir = 8},/area/construction/hallway{name = "\improper MiniSat Exterior"})
"bsd" = (/obj/machinery/atmospherics/pipe/manifold/supply/hidden{dir = 2},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/cable/yellow{d1 = 2; d2 = 4; icon_state = "2-4"},/turf/simulated/floor/plasteel{icon_state = "vault"; dir = 8},/area/construction/hallway{name = "\improper MiniSat Exterior"})
"bse" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/construction/hallway{name = "\improper MiniSat Exterior"})
"bse" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/lattice/catwalk,/turf/space,/area/space)
"bsf" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plasteel{icon_state = "vault"; dir = 8},/area/construction/hallway{name = "\improper MiniSat Exterior"})
"bsg" = (/obj/machinery/door/airlock/hatch{icon_state = "door_closed"; name = "MiniSat West Wing"; req_one_access_txt = "32;19"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plasteel{icon_state = "vault"; dir = 8},/area/turret_protected/tcomwest{name = "\improper MiniSat West Wing"})
"bsh" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plasteel{icon_state = "vault"; dir = 8},/area/turret_protected/tcomwest{name = "\improper MiniSat West Wing"})
@@ -3721,7 +3721,7 @@
"btC" = (/obj/machinery/atmospherics/components/unary/vent_pump{dir = 1; on = 1},/obj/structure/cable/yellow{d1 = 1; d2 = 8; icon_state = "1-8"},/turf/simulated/floor/plasteel,/area/storage/art)
"btD" = (/obj/structure/table,/obj/item/weapon/airlock_painter,/turf/simulated/floor/plasteel,/area/storage/art)
"btE" = (/obj/structure/reagent_dispensers/beerkeg,/turf/simulated/floor/wood,/area/crew_quarters/bar)
"btF" = (/obj/structure/disposalpipe/segment{dir = 8; icon_state = "pipe-c"},/turf/simulated/floor/wood,/area/crew_quarters/bar)
"btF" = (/obj/structure/transit_tube{tag = "icon-E-SW-NW"; icon_state = "E-SW-NW"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/lattice/catwalk,/turf/space,/area/space)
"btG" = (/obj/machinery/atmospherics/components/unary/vent_pump{dir = 2; on = 1},/obj/effect/landmark{name = "xeno_spawn"; pixel_x = -1},/obj/structure/disposalpipe/segment{dir = 4; icon_state = "pipe-c"},/turf/simulated/floor/wood,/area/crew_quarters/bar)
"btH" = (/obj/structure/sign/directions/security{desc = "A direction sign, pointing out which way the security department is."; dir = 1; icon_state = "direction_sec"; pixel_x = 0; pixel_y = 8; tag = "icon-direction_sec (NORTH)"},/obj/structure/sign/directions/engineering{desc = "A direction sign, pointing out which way the engineering department is."; dir = 4; icon_state = "direction_eng"; pixel_y = 0; tag = "icon-direction_eng (EAST)"},/obj/structure/sign/directions/engineering{desc = "A direction sign, pointing out which way the bridge is."; dir = 2; icon_state = "direction_bridge"; name = "bridge"; pixel_y = -8; tag = "icon-direction_bridge (EAST)"},/turf/simulated/wall/r_wall,/area/hallway/primary/port)
"btI" = (/obj/machinery/door/airlock/maintenance{name = "Engineering Foyer Maintenance"; req_access_txt = "0"; req_one_access_txt = "32;19"},/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor/plating,/area/engine/break_room)
@@ -3758,7 +3758,7 @@
"bun" = (/obj/structure/transit_tube{tag = "icon-NW-SE"; icon_state = "NW-SE"},/turf/space,/area/space)
"buo" = (/obj/structure/transit_tube/station{tag = "icon-closed (EAST)"; icon_state = "closed"; dir = 4},/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plasteel{icon_state = "vault"; dir = 8},/area/construction/hallway{name = "\improper MiniSat Exterior"})
"bup" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 6},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plasteel{icon_state = "vault"; dir = 8},/area/construction/hallway{name = "\improper MiniSat Exterior"})
"buq" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/construction/hallway{name = "\improper MiniSat Exterior"})
"buq" = (/obj/structure/transit_tube{tag = "icon-D-SE"; icon_state = "D-SE"},/obj/structure/transit_tube{tag = "icon-D-NE"; icon_state = "D-NE"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/lattice/catwalk,/turf/space,/area/space)
"bur" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/machinery/hologram/holopad,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/construction/hallway{name = "\improper MiniSat Exterior"})
"bus" = (/obj/effect/landmark/start{name = "Cook"},/turf/simulated/floor/plasteel{icon_state = "cafeteria"},/area/crew_quarters/kitchen)
"but" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/machinery/door/airlock/hatch{icon_state = "door_closed"; name = "MiniSat West Wing"; req_one_access_txt = "32;19"},/turf/simulated/floor/plasteel{icon_state = "vault"; dir = 8},/area/turret_protected/tcomwest{name = "\improper MiniSat West Wing"})
@@ -3814,8 +3814,8 @@
"bvr" = (/turf/simulated/wall,/area/bridge)
"bvs" = (/obj/machinery/light/small,/obj/item/toy/prize/honk{pixel_y = 12},/obj/structure/table/wood,/turf/simulated/floor/wood,/area/crew_quarters/theatre)
"bvt" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/machinery/light,/obj/machinery/firealarm{dir = 1; pixel_y = -24},/turf/simulated/floor/plasteel{dir = 8; icon_state = "neutralcorner"},/area/hallway/primary/port)
"bvu" = (/obj/machinery/hologram/holopad{pixel_x = 9; pixel_y = -9},/turf/simulated/floor/carpet{tag = "icon-carpet6-2"; icon_state = "carpet6-2"},/area/crew_quarters/captain{name = "\improper Captain's Quarters"})
"bvv" = (/turf/simulated/floor/carpet{tag = "icon-carpet14-10"; icon_state = "carpet14-10"},/area/crew_quarters/captain{name = "\improper Captain's Quarters"})
"bvu" = (/obj/structure/transit_tube,/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/lattice/catwalk,/turf/space,/area/space)
"bvv" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/lattice/catwalk,/obj/structure/transit_tube{tag = "icon-E-W-Pass"; icon_state = "E-W-Pass"},/turf/space,/area/space)
"bvw" = (/obj/item/clothing/mask/fakemoustache,/obj/item/clothing/mask/cigarette/pipe,/obj/machinery/alarm{dir = 1; pixel_y = -22},/obj/machinery/camera{c_tag = "Theatre - Backstage"; dir = 1; network = list("SS13")},/obj/structure/table/wood,/turf/simulated/floor/wood,/area/crew_quarters/theatre)
"bvx" = (/obj/item/device/taperecorder{pixel_y = 0},/obj/item/device/camera,/obj/item/device/radio/intercom{pixel_y = -25},/obj/structure/table/wood,/turf/simulated/floor/plasteel{tag = "icon-cult"; icon_state = "cult"; dir = 2},/area/library)
"bvy" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 6},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/bridge)
@@ -3832,9 +3832,9 @@
"bvJ" = (/obj/structure/table,/obj/item/device/camera,/turf/simulated/floor/plasteel,/area/storage/art)
"bvK" = (/obj/structure/table,/obj/item/device/camera_film,/obj/machinery/firealarm{dir = 4; pixel_x = 28},/turf/simulated/floor/plasteel,/area/storage/art)
"bvL" = (/obj/machinery/door/airlock{name = "Bar Storage"; req_access_txt = "25"},/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/structure/disposalpipe/segment,/turf/simulated/floor/plasteel{icon_state = "wood"},/area/crew_quarters/bar)
"bvM" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/carpet{tag = "icon-carpet14-10"; icon_state = "carpet14-10"},/area/crew_quarters/captain{name = "\improper Captain's Quarters"})
"bvN" = (/obj/machinery/camera{c_tag = "Captain's Office"; dir = 8; network = list("SS13")},/turf/simulated/floor/carpet{tag = "icon-carpet10-8"; icon_state = "carpet10-8"},/area/crew_quarters/captain{name = "\improper Captain's Quarters"})
"bvO" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{req_access_txt = 1},/obj/structure/disposalpipe/segment,/turf/simulated/floor/carpet{tag = "icon-carpet14-10"; icon_state = "carpet14-10"},/area/crew_quarters/captain{name = "\improper Captain's Quarters"})
"bvM" = (/obj/structure/transit_tube{tag = "icon-E-W-Pass"; icon_state = "E-W-Pass"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/lattice/catwalk,/turf/space,/area/space)
"bvN" = (/obj/structure/transit_tube{tag = "icon-W-NE-SE"; icon_state = "W-NE-SE"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/lattice/catwalk,/turf/space,/area/space)
"bvO" = (/obj/structure/transit_tube{tag = "icon-D-NW"; icon_state = "D-NW"},/obj/structure/transit_tube{tag = "icon-D-SW"; icon_state = "D-SW"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/lattice/catwalk,/turf/space,/area/space)
"bvP" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/door/airlock/maintenance{req_access_txt = "12"},/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor/plating,/area/maintenance/starboard)
"bvQ" = (/obj/item/weapon/stock_parts/cell/high{charge = 100; maxcharge = 15000},/turf/simulated/floor/plating{tag = "icon-platingdmg2"; icon_state = "platingdmg2"},/area/maintenance/starboard)
"bvR" = (/obj/structure/window/reinforced{dir = 8},/obj/machinery/light_switch{pixel_y = -25},/obj/machinery/vending/cola{pixel_x = 2},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/bridge)
@@ -3853,8 +3853,8 @@
"bwe" = (/obj/structure/transit_tube{tag = "icon-D-SE"; icon_state = "D-SE"},/obj/structure/window/reinforced{dir = 4; pixel_x = 0},/turf/space,/area/space)
"bwf" = (/obj/structure/transit_tube{tag = "icon-N-SW"; icon_state = "N-SW"},/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/construction/hallway{name = "\improper MiniSat Exterior"})
"bwg" = (/obj/structure/window/reinforced,/obj/machinery/power/apc{aidisabled = 0; dir = 2; name = "MiniSat Exterior APC"; pixel_y = -24},/obj/machinery/atmospherics/components/unary/vent_scrubber{dir = 1; on = 1; scrub_Toxins = 0},/obj/machinery/light,/obj/structure/cable/yellow,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/construction/hallway{name = "\improper MiniSat Exterior"})
"bwh" = (/obj/structure/window/reinforced,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/construction/hallway{name = "\improper MiniSat Exterior"})
"bwi" = (/obj/machinery/door/window{dir = 2; name = "MiniSat Walkway Access"; req_access_txt = "0"},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/construction/hallway{name = "\improper MiniSat Exterior"})
"bwh" = (/obj/structure/window/reinforced{dir = 4; pixel_x = 0},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/lattice/catwalk,/turf/space,/area/space)
"bwi" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/manifold/supply/hidden{dir = 1},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/construction/hallway{name = "\improper MiniSat Exterior"})
"bwj" = (/obj/machinery/computer/slot_machine{pixel_y = 2},/turf/simulated/floor/carpet,/area/crew_quarters/bar)
"bwk" = (/obj/machinery/computer/slot_machine{pixel_y = 2},/obj/structure/sign/barsign{pixel_y = 32},/turf/simulated/floor/carpet,/area/crew_quarters/bar)
"bwl" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 6},/obj/machinery/atmospherics/components/unary/vent_pump{dir = 1; on = 1},/turf/simulated/floor/plasteel{icon_state = "vault"; dir = 8},/area/turret_protected/tcomwest{name = "\improper MiniSat West Wing"})
@@ -3875,7 +3875,7 @@
"bwA" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{req_access_txt = 1},/turf/simulated/floor/plasteel{tag = "icon-warningcorner (EAST)"; icon_state = "warningcorner"; dir = 4},/area/hallway/secondary/entry{name = "Arrivals"})
"bwB" = (/obj/machinery/power/apc{cell_type = 10000; dir = 8; name = "Bridge APC"; pixel_x = -27; pixel_y = 0},/obj/structure/cable/yellow,/obj/machinery/camera{c_tag = "Bridge - Port"; dir = 4; network = list("SS13")},/turf/simulated/floor/plasteel{dir = 8; icon_state = "darkblue"; tag = "icon-darkbluecorners (WEST)"},/area/bridge)
"bwC" = (/obj/machinery/computer/arcade,/obj/machinery/alarm{dir = 8; icon_state = "alarm0"; pixel_x = 24},/obj/machinery/computer/security/telescreen/entertainment{pixel_x = 0; pixel_y = 32},/turf/simulated/floor/wood,/area/crew_quarters/bar)
"bwD" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor/goonplaque{desc = "\"This is a plaque in honour of our comrades on the G4407 Stations. Hopefully TG4407 model can live up to your fame and fortune.\" Scratched in beneath that is a crude image of sentient postcards in a realm of darkness. The station model number is MSv41AII:150412"},/area/hallway/primary/port)
"bwD" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/manifold/supply/hidden{dir = 2},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/construction/hallway{name = "\improper MiniSat Exterior"})
"bwE" = (/obj/machinery/disposal,/obj/structure/disposalpipe/trunk{dir = 4},/obj/machinery/camera{c_tag = "Port Primary Hallway - Port"; dir = 4; network = list("SS13")},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/hallway/primary/port)
"bwF" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/structure/disposalpipe/segment{dir = 8; icon_state = "pipe-c"},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plasteel{icon_state = "neutral"; dir = 8},/area/hallway/primary/port)
"bwG" = (/obj/machinery/light{dir = 4; icon_state = "tube1"},/turf/simulated/floor/plasteel{icon_state = "neutral"; dir = 4},/area/hallway/primary/port)
@@ -3885,17 +3885,17 @@
"bwK" = (/obj/machinery/door/airlock/maintenance{req_access_txt = "0"; req_one_access_txt = "12;27;37"},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor/plating,/area/maintenance/fpmaint2{name = "Port Maintenance"})
"bwL" = (/turf/simulated/wall,/area/library)
"bwM" = (/turf/simulated/floor/carpet,/area/library)
"bwN" = (/obj/machinery/door/firedoor,/obj/machinery/door/airlock/glass{name = "Library"},/turf/simulated/floor/plasteel{dir = 2; icon_state = "carpetsymbol"},/area/library)
"bwO" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{req_access_txt = 1},/obj/machinery/door/firedoor,/obj/machinery/door/airlock/glass{name = "Library"},/turf/simulated/floor/plasteel{dir = 2; icon_state = "carpetsymbol"},/area/library)
"bwN" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor/goonplaque{desc = "\"This is a plaque in honour of our comrades on the G4407 Stations. Hopefully TG4407 model can live up to your fame and fortune.\" Scratched in beneath that is a crude image of sentient postcards in a realm of darkness. The station model number is MSv41D:150717"},/area/hallway/primary/port)
"bwO" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/construction/hallway{name = "\improper MiniSat Exterior"})
"bwP" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor/plasteel{dir = 8; icon_state = "neutralcorner"},/area/hallway/primary/central)
"bwQ" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/disposalpipe/sortjunction{dir = 1; icon_state = "pipe-j1s"; sortType = 15},/obj/structure/cable/yellow{d1 = 2; d2 = 4; icon_state = "2-4"},/turf/simulated/floor/plasteel,/area/hallway/primary/central)
"bwR" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{dir = 8; initialize_directions = 11},/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor/plasteel{dir = 2; icon_state = "neutralcorner"},/area/hallway/primary/central)
"bwS" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/door/firedoor,/obj/machinery/door/airlock/command{name = "Head of Personnel"; req_access = null; req_access_txt = "57"},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor/wood,/area/crew_quarters/heads)
"bwT" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{req_access_txt = 1},/turf/simulated/floor/carpet,/area/library)
"bwU" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 6},/turf/simulated/floor/carpet{tag = "icon-carpet7-3"; icon_state = "carpet7-3"},/area/crew_quarters/captain{name = "\improper Captain's Quarters"})
"bwU" = (/obj/structure/disposalpipe/segment{dir = 8; icon_state = "pipe-c"},/obj/structure/closet/gmcloset,/obj/item/weapon/wrench,/turf/simulated/floor/wood,/area/crew_quarters/bar)
"bwV" = (/obj/structure/table/wood,/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/item/weapon/storage/fancy/donut_box,/turf/simulated/floor/carpet,/area/crew_quarters/captain{name = "\improper Captain's Quarters"})
"bwW" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/structure/cable/yellow{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/structure/stool/bed/chair/comfy/brown{tag = "icon-comfychair (EAST)"; icon_state = "comfychair"; dir = 4},/turf/simulated/floor/carpet,/area/crew_quarters/captain{name = "\improper Captain's Quarters"})
"bwX" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor/carpet{tag = "icon-carpet11-12"; icon_state = "carpet11-12"},/area/crew_quarters/captain{name = "\improper Captain's Quarters"})
"bwX" = (/obj/machinery/chem_master/condimaster{desc = "Looks like a knock-off chem-master. Perhaps useful for separating liquids when mixing drinks precisely. Also dispenses condiments."; name = "HoochMaster Deluxe"; pixel_x = -4},/turf/simulated/floor/wood,/area/crew_quarters/bar)
"bwY" = (/obj/machinery/atmospherics/pipe/manifold/supply/hidden{dir = 2},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/disposalpipe/segment{dir = 1; icon_state = "pipe-c"},/obj/structure/stool/bed/chair/comfy/brown{tag = "icon-comfychair (WEST)"; icon_state = "comfychair"; dir = 8},/turf/simulated/floor/carpet,/area/crew_quarters/captain{name = "\improper Captain's Quarters"})
"bwZ" = (/obj/structure/stool/bed/chair/comfy/black,/turf/simulated/floor/carpet,/area/bridge)
"bxa" = (/obj/structure/stool/bed/chair/comfy/beige,/turf/simulated/floor/carpet,/area/bridge)
@@ -3907,19 +3907,19 @@
"bxg" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor/carpet,/area/bridge)
"bxh" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/wall,/area/bridge)
"bxi" = (/obj/structure/bookcase,/turf/simulated/floor/wood,/area/bridge)
"bxj" = (/obj/structure/closet/gmcloset{desc = "It's a storage unit."; icon_state = "black"; name = "spare gear"},/obj/item/weapon/wrench,/turf/simulated/floor/wood,/area/crew_quarters/bar)
"bxj" = (/obj/structure/window/reinforced,/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 5},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/construction/hallway{name = "\improper MiniSat Exterior"})
"bxk" = (/obj/structure/flora/kirbyplants{icon_state = "plant-18"; layer = 4.1; tag = "icon-plant-18"},/turf/simulated/floor/plasteel{dir = 9; icon_state = "warning"},/area/hallway/secondary/entry{name = "Arrivals"})
"bxl" = (/obj/structure/window/reinforced{dir = 4; pixel_x = 0},/obj/machinery/vending/snack{pixel_x = -2},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/bridge)
"bxm" = (/obj/item/weapon/storage/toolbox/emergency,/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/effect/spawner/lootdrop/maintenance,/turf/simulated/floor/plating,/area/maintenance/starboard)
"bxn" = (/obj/structure/sign/directions/engineering{desc = "A direction sign, pointing out which way the escape arm is."; icon_state = "direction_evac"; name = "escape arm"; tag = "icon-direction_evac"},/obj/structure/sign/directions/engineering{desc = "A direction sign, pointing out which way the medical department is."; icon_state = "direction_med"; name = "medical department"; pixel_y = 8; tag = "icon-direction_med"},/obj/structure/sign/directions/engineering{desc = "A direction sign, pointing out which way the research department is."; icon_state = "direction_sci"; name = "research department"; pixel_y = -8; tag = "icon-direction_sci"},/turf/simulated/wall,/area/library)
"bxo" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor/carpet{tag = "icon-carpet15-11"; icon_state = "carpet15-11"},/area/crew_quarters/captain{name = "\improper Captain's Quarters"})
"bxo" = (/obj/machinery/door/window{dir = 2; name = "MiniSat Walkway Access"; req_access_txt = "0"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 10},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/construction/hallway{name = "\improper MiniSat Exterior"})
"bxp" = (/obj/machinery/vending/boozeomat,/obj/machinery/light/small{dir = 8},/turf/simulated/floor/wood,/area/crew_quarters/captain{name = "\improper Captain's Quarters"})
"bxq" = (/obj/machinery/disposal{pixel_x = 2; pixel_y = 2},/obj/structure/disposalpipe/trunk,/turf/simulated/floor/wood,/area/crew_quarters/bar)
"bxr" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/machinery/alarm{dir = 4; pixel_x = -23; pixel_y = 0},/turf/simulated/floor/plasteel{dir = 8; icon_state = "neutralcorner"},/area/hallway/primary/central)
"bxs" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{req_access_txt = 1},/obj/structure/extinguisher_cabinet{pixel_x = 27; pixel_y = 0},/turf/simulated/floor/plasteel{dir = 4; icon_state = "neutralcorner"},/area/hallway/primary/central)
"bxt" = (/obj/machinery/atmospherics/pipe/manifold/supply/hidden{dir = 4},/obj/structure/disposalpipe/segment{dir = 8; icon_state = "pipe-c"},/obj/structure/cable/yellow{d1 = 2; d2 = 8; icon_state = "2-8"},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 8},/area/maintenance/maintcentral{name = "Central Maintenance"})
"bxu" = (/obj/structure/table,/obj/machinery/firealarm{dir = 8; pixel_x = -26; pixel_y = 0},/obj/machinery/chem_dispenser/drinks,/obj/structure/sign/barsign{pixel_y = 32},/turf/simulated/floor/plasteel{icon_state = "bar"},/area/crew_quarters/bar)
"bxv" = (/turf/simulated/floor/carpet{tag = "icon-carpet6-2"; icon_state = "carpet6-2"},/area/crew_quarters/captain{name = "\improper Captain's Quarters"})
"bxv" = (/obj/machinery/door/firedoor,/obj/machinery/door/airlock/glass{name = "Library"},/turf/simulated/floor/wood,/area/library)
"bxw" = (/obj/structure/table/wood,/obj/item/weapon/reagent_containers/food/drinks/shaker,/turf/simulated/floor/carpet,/area/crew_quarters/captain{name = "\improper Captain's Quarters"})
"bxx" = (/obj/structure/flora/kirbyplants{icon_state = "plant-08"; layer = 4.1; tag = "icon-plant-08"},/turf/simulated/floor/plasteel{icon_state = "grimy"},/area/hallway/primary/port)
"bxy" = (/obj/structure/table,/obj/machinery/chem_dispenser/drinks/beer,/turf/simulated/floor/plasteel{icon_state = "bar"},/area/crew_quarters/bar)
@@ -3988,13 +3988,13 @@
"byJ" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/wall,/area/crew_quarters/toilet{name = "\improper Auxiliary Restrooms"})
"byK" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 1},/area/maintenance/fpmaint2{name = "Port Maintenance"})
"byL" = (/obj/structure/stool/bed/chair/comfy/brown{tag = "icon-comfychair (EAST)"; icon_state = "comfychair"; dir = 4},/turf/simulated/floor/carpet,/area/crew_quarters/captain{name = "\improper Captain's Quarters"})
"byM" = (/obj/machinery/alarm{dir = 8; icon_state = "alarm0"; pixel_x = 24},/obj/machinery/light{icon_state = "tube1"; dir = 4},/turf/simulated/floor/carpet{tag = "icon-carpet11-12"; icon_state = "carpet11-12"},/area/crew_quarters/captain{name = "\improper Captain's Quarters"})
"byM" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{req_access_txt = 1},/obj/machinery/door/firedoor,/obj/machinery/door/airlock/glass{name = "Library"},/turf/simulated/floor/wood,/area/library)
"byN" = (/obj/item/toy/cards/deck,/obj/structure/table/wood,/turf/simulated/floor/wood,/area/library)
"byO" = (/obj/structure/stool/bed/chair/comfy/brown{tag = "icon-comfychair (WEST)"; icon_state = "comfychair"; dir = 8},/turf/simulated/floor/carpet,/area/crew_quarters/captain{name = "\improper Captain's Quarters"})
"byP" = (/obj/structure/stool/bed/chair/wood/wings{dir = 8},/turf/simulated/floor/carpet,/area/crew_quarters/theatre)
"byQ" = (/obj/structure/stool/bed/chair/comfy/black{dir = 8},/turf/simulated/floor/wood,/area/library)
"byR" = (/obj/machinery/light{dir = 1},/obj/machinery/newscaster{pixel_x = 0; pixel_y = 32},/turf/simulated/floor/plasteel{icon_state = "bar"},/area/crew_quarters/bar)
"byS" = (/obj/structure/table/wood,/obj/machinery/newscaster{pixel_x = 0; pixel_y = 32},/obj/item/weapon/folder,/obj/item/weapon/folder,/obj/machinery/computer/security/telescreen/entertainment{pixel_x = 30; pixel_y = 0},/turf/simulated/floor/plasteel{tag = "icon-cult"; icon_state = "cult"; dir = 2},/area/library)
"byS" = (/obj/machinery/hologram/holopad{pixel_x = 9; pixel_y = -9},/turf/simulated/floor/carpet,/area/crew_quarters/captain{name = "\improper Captain's Quarters"})
"byT" = (/obj/structure/grille,/obj/structure/window/reinforced/fulltile,/obj/structure/cable/yellow,/turf/simulated/floor/plating,/area/assembly/showroom{name = "\improper Corporate Showroom"})
"byU" = (/obj/machinery/firealarm{dir = 1; pixel_y = -24},/obj/machinery/camera/autoname{dir = 1; network = list("SS13")},/obj/item/weapon/storage/pill_bottle/dice,/obj/structure/table/wood,/turf/simulated/floor/wood,/area/library)
"byV" = (/obj/structure/grille,/obj/structure/window/fulltile,/turf/simulated/floor/plating,/area/hydroponics)
@@ -4121,7 +4121,7 @@
"bBm" = (/obj/machinery/door_control{id = "council blast"; name = "Council Chamber Blast Door Control"; pixel_x = -5; pixel_y = -28; req_access_txt = "19"},/turf/simulated/floor/carpet,/area/bridge)
"bBn" = (/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{dir = 2; initialize_directions = 11},/obj/structure/disposalpipe/junction{icon_state = "pipe-j2"; dir = 4},/turf/simulated/floor/wood,/area/crew_quarters/bar)
"bBo" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/machinery/firealarm{dir = 8; pixel_x = -24},/turf/simulated/floor/plasteel{dir = 8; icon_state = "neutralcorner"},/area/hallway/primary/central)
"bBp" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 9; pixel_y = 0},/turf/simulated/floor/carpet{tag = "icon-carpetside"; icon_state = "carpetside"},/area/crew_quarters/captain{name = "\improper Captain's Quarters"})
"bBp" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/carpet,/area/crew_quarters/captain{name = "\improper Captain's Quarters"})
"bBq" = (/obj/machinery/status_display{density = 0; layer = 4; pixel_x = 0; pixel_y = 32},/obj/machinery/light{dir = 1},/obj/structure/table,/obj/item/weapon/paper_bin{pixel_x = -3; pixel_y = 7},/obj/item/weapon/pen,/turf/simulated/floor/plasteel{dir = 1; icon_state = "caution"},/area/atmos)
"bBr" = (/obj/item/device/radio/intercom{freerange = 0; frequency = 1459; name = "Station Intercom (General)"; pixel_x = -30},/obj/item/weapon/crowbar/red,/obj/item/weapon/wrench,/obj/item/clothing/mask/gas,/obj/machinery/alarm{pixel_y = 23},/obj/structure/table,/obj/item/weapon/storage/box,/obj/item/weapon/storage/box,/turf/simulated/floor/plasteel{dir = 9; icon_state = "caution"},/area/atmos)
"bBs" = (/obj/structure/sign/map/right{desc = "A framed picture of the station. Clockwise from security at the top (red), you see engineering (yellow), science (purple), escape (red and white), medbay (green), arrivals (blue and white), and finally cargo (brown)."; icon_state = "map-right-MS"; pixel_y = 32},/obj/machinery/computer/station_alert,/turf/simulated/floor/plasteel{dir = 1; icon_state = "caution"},/area/atmos)
@@ -4132,9 +4132,9 @@
"bBx" = (/obj/machinery/space_heater,/obj/machinery/firealarm{dir = 2; pixel_y = 24},/turf/simulated/floor/plasteel{dir = 8; icon_state = "warning"},/area/atmos)
"bBy" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plasteel,/area/atmos)
"bBz" = (/obj/machinery/atmospherics/pipe/manifold/scrubbers/visible{dir = 8},/obj/machinery/meter{frequency = 1443; id = "wloop_atm_meter"; name = "Waste Loop"},/turf/simulated/floor/plasteel{dir = 1; icon_state = "caution"},/area/atmos)
"bBA" = (/obj/machinery/atmospherics/components/unary/vent_pump{dir = 4; on = 1},/obj/machinery/firealarm{dir = 8; pixel_x = -24},/turf/simulated/floor/carpet{tag = "icon-carpet5-1"; icon_state = "carpet5-1"},/area/crew_quarters/captain{name = "\improper Captain's Quarters"})
"bBB" = (/obj/machinery/light,/obj/machinery/computer/security/telescreen{dir = 1; name = "MiniSat Monitor"; network = list("MiniSat","tcomm"); pixel_x = 0; pixel_y = -29},/mob/living/simple_animal/pet/fox/Renault,/turf/simulated/floor/carpet{tag = "icon-carpetside"; icon_state = "carpetside"},/area/crew_quarters/captain{name = "\improper Captain's Quarters"})
"bBC" = (/turf/simulated/floor/carpet{tag = "icon-carpetside"; icon_state = "carpetside"},/area/crew_quarters/captain{name = "\improper Captain's Quarters"})
"bBA" = (/obj/machinery/camera{c_tag = "Captain's Office"; dir = 8; network = list("SS13")},/turf/simulated/floor/carpet,/area/crew_quarters/captain{name = "\improper Captain's Quarters"})
"bBB" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{req_access_txt = 1},/obj/structure/disposalpipe/segment,/turf/simulated/floor/carpet,/area/crew_quarters/captain{name = "\improper Captain's Quarters"})
"bBC" = (/obj/structure/table/wood,/obj/machinery/newscaster{pixel_x = 0; pixel_y = 32},/obj/item/weapon/folder,/obj/item/weapon/folder,/turf/simulated/floor/plasteel{tag = "icon-cult"; icon_state = "cult"; dir = 2},/area/library)
"bBD" = (/obj/machinery/power/apc{dir = 1; name = "Theatre APC"; pixel_x = 0; pixel_y = 25},/obj/structure/cable/yellow{d2 = 2; icon_state = "0-2"},/obj/structure/table/wood,/obj/item/clothing/glasses/monocle,/turf/simulated/floor/wood,/area/crew_quarters/theatre)
"bBE" = (/obj/structure/table/wood,/obj/item/weapon/staff/broom,/obj/item/weapon/wrench,/turf/simulated/floor/wood,/area/crew_quarters/theatre)
"bBF" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{req_access_txt = 1},/obj/effect/spawner/lootdrop{loot = list("/obj/structure/grille","/obj/structure/grille","/obj/structure/grille","/obj/structure/grille","/obj/structure/grille","/obj/item/weapon/cigbutt","/obj/item/trash/cheesie","/obj/item/trash/candy","/obj/item/trash/chips","/obj/item/trash/deadmouse","/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)
@@ -4181,7 +4181,7 @@
"bCu" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor/plating,/area/maintenance/fpmaint2{name = "Port Maintenance"})
"bCv" = (/obj/machinery/photocopier{pixel_y = 3},/turf/simulated/floor/wood,/area/library)
"bCw" = (/turf/simulated/floor/wood,/area/library)
"bCx" = (/obj/machinery/atmospherics/components/unary/vent_scrubber{dir = 2; on = 1; scrub_N2O = 1; scrub_Toxins = 1},/obj/structure/extinguisher_cabinet{pixel_x = 27; pixel_y = 0},/turf/simulated/floor/carpet{tag = "icon-carpet9-4"; icon_state = "carpet9-4"},/area/crew_quarters/captain{name = "\improper Captain's Quarters"})
"bCx" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 6},/turf/simulated/floor/carpet,/area/crew_quarters/captain{name = "\improper Captain's Quarters"})
"bCy" = (/obj/machinery/door/morgue{name = "Study #1"; req_access_txt = "0"},/turf/simulated/floor/plasteel{tag = "icon-cult"; icon_state = "cult"; dir = 2},/area/library)
"bCz" = (/obj/machinery/door/morgue{name = "Study #2"; req_access_txt = "0"},/turf/simulated/floor/plasteel{tag = "icon-cult"; icon_state = "cult"; dir = 2},/area/library)
"bCA" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/item/device/radio/intercom{freerange = 1; frequency = 1459; name = "Station Intercom (General)"; pixel_x = -30},/obj/machinery/light{dir = 8},/obj/machinery/camera{c_tag = "Central Primary Hallway - Port"; dir = 4; network = list("SS13")},/turf/simulated/floor/plasteel{dir = 8; icon_state = "neutralcorner"},/area/hallway/primary/central)
@@ -4196,7 +4196,7 @@
"bCJ" = (/obj/item/weapon/wrench,/obj/item/clothing/suit/apron,/obj/item/clothing/tie/armband/hydro,/obj/structure/table/glass,/turf/simulated/floor/plasteel{dir = 9; icon_state = "warning"},/area/hydroponics)
"bCK" = (/obj/structure/closet/secure_closet/medical3,/obj/machinery/light{dir = 1},/obj/machinery/alarm{pixel_y = 24},/obj/item/weapon/screwdriver{pixel_y = 6},/turf/simulated/floor/plasteel{dir = 1; icon_state = "whiteblue"},/area/medical/medbay2{name = "Medbay Storage"})
"bCL" = (/obj/item/weapon/reagent_containers/spray/plantbgone{pixel_x = 0; pixel_y = 3},/obj/item/weapon/reagent_containers/spray/plantbgone{pixel_x = 8; pixel_y = 8},/obj/item/weapon/reagent_containers/spray/plantbgone{pixel_x = 13; pixel_y = 5},/obj/item/weapon/watertank,/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 5},/obj/item/weapon/grenade/chem_grenade/antiweed,/obj/structure/table/glass,/turf/simulated/floor/plasteel{dir = 1; icon_state = "warning"},/area/hydroponics)
"bCM" = (/obj/item/device/radio/intercom{dir = 0; name = "Station Intercom (General)"; pixel_x = 0; pixel_y = -26},/turf/simulated/floor/carpet{tag = "icon-carpetside"; icon_state = "carpetside"},/area/crew_quarters/captain{name = "\improper Captain's Quarters"})
"bCM" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor/carpet,/area/crew_quarters/captain{name = "\improper Captain's Quarters"})
"bCN" = (/obj/structure/table/wood/poker,/obj/effect/spawner/lootdrop{loot = list("/obj/item/weapon/gun/projectile/revolver/russian","/obj/item/clothing/mask/cigarette/cigar/cohiba","/obj/item/toy/cards/deck/syndicate"); name = "gambling valuables spawner"},/turf/simulated/floor/wood,/area/crew_quarters/bar)
"bCO" = (/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{dir = 1; initialize_directions = 11},/turf/simulated/floor/carpet,/area/crew_quarters/theatre)
"bCP" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/carpet,/area/crew_quarters/theatre)
@@ -4383,7 +4383,7 @@
"bGo" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/machinery/power/apc{cell_type = 10000; dir = 1; name = "Command Hallway APC"; pixel_x = 0; pixel_y = 25},/obj/structure/cable/yellow{d2 = 2; icon_state = "0-2"},/turf/simulated/floor/plasteel{dir = 4; icon_state = "neutralcorner"},/area/bridge/meeting_room{name = "\improper Command Hallway"})
"bGp" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plasteel{dir = 4; icon_state = "neutralcorner"},/area/bridge/meeting_room{name = "\improper Command Hallway"})
"bGq" = (/obj/machinery/atmospherics/pipe/manifold/supply/hidden,/turf/simulated/floor/plasteel{dir = 4; icon_state = "neutralcorner"},/area/bridge/meeting_room{name = "\improper Command Hallway"})
"bGr" = (/obj/structure/sign/directions/engineering{desc = "A direction sign, pointing out which way the bridge is."; dir = 4; icon_state = "direction_bridge"; name = "bridge"; tag = "icon-direction_bridge (EAST)"},/turf/simulated/wall,/area/bridge/meeting_room{name = "\improper Command Hallway"})
"bGr" = (/obj/structure/window/reinforced{dir = 4; pixel_x = 0},/obj/structure/window/reinforced{dir = 8},/obj/machinery/atmospherics/components/unary/vent_pump{dir = 1; on = 1},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/construction/hallway{name = "\improper MiniSat Exterior"})
"bGs" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/effect/landmark{name = "lightsout"},/turf/simulated/floor/plasteel{dir = 4; icon_state = "neutralcorner"},/area/bridge/meeting_room{name = "\improper Command Hallway"})
"bGt" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/item/device/radio/intercom{freerange = 0; frequency = 1459; name = "Station Intercom (General)"; pixel_x = 0; pixel_y = 21},/obj/machinery/camera{c_tag = "Command Hallway - Starboard"; dir = 2; network = list("SS13")},/turf/simulated/floor/plasteel{dir = 4; icon_state = "neutralcorner"},/area/bridge/meeting_room{name = "\improper Command Hallway"})
"bGu" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/machinery/status_display{density = 0; layer = 4; pixel_x = 0; pixel_y = 32},/obj/machinery/atmospherics/components/unary/vent_scrubber{dir = 2; on = 1; scrub_N2O = 1; scrub_Toxins = 1},/turf/simulated/floor/plasteel{dir = 4; icon_state = "neutralcorner"},/area/bridge/meeting_room{name = "\improper Command Hallway"})
@@ -4439,7 +4439,7 @@
"bHs" = (/obj/machinery/atmospherics/components/unary/portables_connector/visible{dir = 1},/obj/machinery/portable_atmospherics/canister/air,/turf/simulated/floor/plating,/area/maintenance/fpmaint2{name = "Port Maintenance"})
"bHt" = (/obj/machinery/light_construct{dir = 8},/turf/simulated/floor/wood,/area/security/vacantoffice)
"bHu" = (/obj/effect/landmark{name = "lightsout"},/turf/simulated/floor/wood,/area/security/vacantoffice)
"bHv" = (/obj/structure/sign/nosmoking_2{pixel_y = 32},/obj/machinery/camera{c_tag = "Telescience - Test Chamber"; dir = 2; network = list("SS13","RD")},/obj/machinery/light{dir = 1},/turf/simulated/floor/engine,/area/toxins/explab)
"bHv" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor/carpet,/area/crew_quarters/captain{name = "\improper Captain's Quarters"})
"bHw" = (/obj/machinery/door/airlock{id_tag = "AuxShower"; name = "Shower"},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/crew_quarters/toilet{name = "\improper Auxiliary Restrooms"})
"bHx" = (/obj/machinery/door/airlock{id_tag = "AuxToilet2"; name = "Unit 2"},/turf/simulated/floor/plasteel,/area/crew_quarters/toilet{name = "\improper Auxiliary Restrooms"})
"bHy" = (/obj/structure/toilet{pixel_y = 8},/obj/machinery/light/small{dir = 4},/obj/machinery/door_control{id = "AuxToilet2"; name = "Lock 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/plasteel,/area/crew_quarters/toilet{name = "\improper Auxiliary Restrooms"})
@@ -4448,7 +4448,7 @@
"bHB" = (/obj/structure/cable/yellow{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/machinery/atmospherics/components/unary/vent_pump{dir = 1; on = 1},/turf/simulated/floor/carpet,/area/crew_quarters/theatre)
"bHC" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 9},/turf/simulated/floor/carpet,/area/crew_quarters/theatre)
"bHD" = (/obj/item/weapon/folder/white,/obj/structure/table/wood,/turf/simulated/floor/carpet,/area/security/vacantoffice)
"bHE" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/machinery/door/firedoor,/obj/machinery/door/airlock/glass{name = "Library"},/turf/simulated/floor/plasteel{dir = 2; icon_state = "carpetsymbol"},/area/library)
"bHE" = (/obj/machinery/alarm{dir = 8; icon_state = "alarm0"; pixel_x = 24},/obj/machinery/light{icon_state = "tube1"; dir = 4},/turf/simulated/floor/carpet,/area/crew_quarters/captain{name = "\improper Captain's Quarters"})
"bHF" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/disposalpipe/segment,/obj/structure/cable/yellow{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 10},/obj/machinery/navbeacon{codes_txt = "patrol;next_patrol=11.1-Command-Starboard"; location = "11-Command-Port"},/turf/simulated/floor/plasteel,/area/hallway/primary/central)
"bHG" = (/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{dir = 8; initialize_directions = 11},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plasteel{dir = 2; icon_state = "neutralcorner"},/area/hallway/primary/central)
"bHH" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/machinery/door/firedoor,/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/door/airlock/glass{name = "Command Hallway"},/turf/simulated/floor/plasteel{dir = 8; icon_state = "neutralcorner"},/area/bridge/meeting_room{name = "\improper Command Hallway"})
@@ -4465,7 +4465,7 @@
"bHS" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/cable/yellow{d1 = 2; d2 = 4; icon_state = "2-4"},/turf/simulated/floor/plasteel{dir = 8; icon_state = "neutralcorner"},/area/bridge/meeting_room{name = "\improper Command Hallway"})
"bHT" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/light,/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{dir = 2; initialize_directions = 11},/turf/simulated/floor/plasteel{dir = 8; icon_state = "neutralcorner"},/area/bridge/meeting_room{name = "\improper Command Hallway"})
"bHU" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plasteel,/area/bridge/meeting_room{name = "\improper Command Hallway"})
"bHV" = (/obj/machinery/hologram/holopad,/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/structure/cable/yellow{d1 = 2; d2 = 8; icon_state = "2-8"},/obj/structure/cable/yellow{d1 = 1; d2 = 8; icon_state = "1-8"},/turf/simulated/floor/plasteel,/area/bridge/meeting_room{name = "\improper Command Hallway"})
"bHV" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 9; pixel_y = 0},/turf/simulated/floor/carpet,/area/crew_quarters/captain{name = "\improper Captain's Quarters"})
"bHW" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plasteel,/area/bridge/meeting_room{name = "\improper Command Hallway"})
"bHX" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/cable/yellow{d1 = 2; d2 = 4; icon_state = "2-4"},/turf/simulated/floor/plasteel{dir = 2; icon_state = "neutralcorner"},/area/bridge/meeting_room{name = "\improper Command Hallway"})
"bHY" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/light,/turf/simulated/floor/plasteel{dir = 2; icon_state = "neutralcorner"},/area/bridge/meeting_room{name = "\improper Command Hallway"})
@@ -4957,12 +4957,12 @@
"bRq" = (/obj/structure/table,/obj/item/clothing/mask/cigarette/pipe,/turf/simulated/floor/plating,/area/maintenance/fpmaint2{name = "Port Maintenance"})
"bRr" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{req_access_txt = 1},/turf/simulated/floor/plating,/area/maintenance/fpmaint2{name = "Port Maintenance"})
"bRs" = (/obj/machinery/atmospherics/components/unary/portables_connector/visible{dir = 4},/obj/machinery/portable_atmospherics/scrubber,/turf/simulated/floor/plasteel{icon_state = "redfull"},/area/atmos)
"bRt" = (/obj/machinery/door/firedoor,/obj/machinery/door/airlock/centcom{name = "Quiet Room"; opacity = 1},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor/plasteel{dir = 2; icon_state = "carpetsymbol"},/area/library)
"bRu" = (/obj/machinery/door/firedoor,/obj/machinery/door/airlock/centcom{name = "Quiet Room"; opacity = 1},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{req_access_txt = 1},/turf/simulated/floor/plasteel{dir = 2; icon_state = "carpetsymbol"},/area/library)
"bRt" = (/obj/machinery/atmospherics/components/unary/vent_pump{dir = 4; on = 1},/obj/machinery/firealarm{dir = 8; pixel_x = -24},/turf/simulated/floor/carpet,/area/crew_quarters/captain{name = "\improper Captain's Quarters"})
"bRu" = (/obj/machinery/light,/obj/machinery/computer/security/telescreen{dir = 1; name = "MiniSat Monitor"; network = list("MiniSat","tcomm"); pixel_x = 0; pixel_y = -29},/mob/living/simple_animal/pet/fox/Renault,/turf/simulated/floor/carpet,/area/crew_quarters/captain{name = "\improper Captain's Quarters"})
"bRv" = (/obj/machinery/door/morgue{name = "Private Study"; req_access_txt = "37"},/turf/simulated/floor/plasteel{tag = "icon-cult"; icon_state = "cult"; dir = 2},/area/library)
"bRw" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/machinery/door/firedoor,/turf/simulated/floor/plasteel{dir = 8; icon_state = "neutralcorner"},/area/hallway/primary/central)
"bRx" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/machinery/door/firedoor,/turf/simulated/floor/plasteel{dir = 4; icon_state = "neutralcorner"},/area/hallway/primary/central)
"bRy" = (/obj/item/stack/sheet/metal{amount = 50},/obj/item/stack/sheet/metal{amount = 50},/obj/structure/table,/obj/item/stack/sheet/plasteel{amount = 10},/obj/item/weapon/crowbar,/obj/item/weapon/wrench,/obj/item/weapon/storage/toolbox/electrical{pixel_x = 1; pixel_y = -1},/obj/machinery/alarm{dir = 4; icon_state = "alarm0"; pixel_x = -22},/turf/simulated/floor/plasteel{tag = "icon-vault (WEST)"; icon_state = "vault"; dir = 8},/area/ai_monitored/storage/eva{name = "E.V.A. Storage"})
"bRy" = (/obj/machinery/atmospherics/components/unary/vent_scrubber{dir = 2; on = 1; scrub_N2O = 1; scrub_Toxins = 1},/obj/structure/extinguisher_cabinet{pixel_x = 27; pixel_y = 0},/turf/simulated/floor/carpet,/area/crew_quarters/captain{name = "\improper Captain's Quarters"})
"bRz" = (/obj/machinery/hologram/holopad,/turf/simulated/floor/plasteel{dir = 8; icon_state = "warning"},/area/ai_monitored/storage/eva{name = "E.V.A. Storage"})
"bRA" = (/turf/simulated/floor/plasteel,/area/ai_monitored/storage/eva{name = "E.V.A. Storage"})
"bRB" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor/plasteel{dir = 4; icon_state = "warning"},/area/ai_monitored/storage/eva{name = "E.V.A. Storage"})
@@ -5243,7 +5243,7 @@
"bWQ" = (/obj/machinery/door/airlock/maintenance{name = "Library Maintenance"; req_access_txt = "0"; req_one_access_txt = "12;37"},/obj/structure/disposalpipe/segment{dir = 4},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plating,/area/maintenance/fpmaint2{name = "Port Maintenance"})
"bWR" = (/obj/structure/cable/yellow{d1 = 2; d2 = 8; icon_state = "2-8"},/obj/structure/disposalpipe/segment{dir = 2; icon_state = "pipe-c"},/turf/simulated/floor/plating{dir = 8; icon_state = "warnplate"; tag = ""},/area/maintenance/fpmaint2{name = "Port Maintenance"})
"bWS" = (/obj/machinery/vending/snack,/obj/machinery/newscaster{pixel_x = -30; pixel_y = 0},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/hallway/primary/central)
"bWT" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/disposalpipe/segment,/obj/machinery/navbeacon{codes_txt = "patrol;next_patrol=11-Command-Port"; location = "10.1-Aft-Port-Corner"},/turf/simulated/floor/plasteel,/area/hallway/primary/central)
"bWT" = (/obj/item/device/radio/intercom{dir = 0; name = "Station Intercom (General)"; pixel_x = 0; pixel_y = -26},/turf/simulated/floor/carpet,/area/crew_quarters/captain{name = "\improper Captain's Quarters"})
"bWU" = (/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{dir = 8; initialize_directions = 11},/turf/simulated/floor/plasteel{dir = 4; icon_state = "neutralcorner"},/area/hallway/primary/central)
"bWV" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/floor/plasteel{dir = 4; icon_state = "neutralcorner"},/area/hallway/primary/central)
"bWW" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/machinery/firealarm{dir = 2; pixel_y = 24},/turf/simulated/floor/plasteel{tag = "icon-warningcorner (WEST)"; icon_state = "warningcorner"; dir = 8},/area/hallway/primary/central)
@@ -5277,10 +5277,10 @@
"bXy" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 6},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plasteel{icon_state = "white"},/area/toxins/explab)
"bXz" = (/obj/machinery/atmospherics/components/binary/pump{dir = 8; name = "Port to Filter"; on = 0},/turf/simulated/floor/plasteel,/area/atmos)
"bXA" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor/plasteel{icon_state = "warning"},/area/hydroponics)
"bXB" = (/obj/machinery/chem_master/condimaster{name = "BrewMaster 4000"; pixel_x = -4},/turf/simulated/floor/plasteel{icon_state = "warning"},/area/hydroponics)
"bXB" = (/obj/structure/sign/directions/engineering{desc = "A direction sign, pointing out which way the bridge is."; dir = 4; icon_state = "direction_bridge"; name = "bridge"; pixel_y = -8; tag = "icon-direction_bridge (EAST)"},/obj/structure/sign/directions/security{desc = "A direction sign, pointing out which way the security department is."; dir = 1; icon_state = "direction_sec"; pixel_x = 0; pixel_y = 8; tag = "icon-direction_sec (NORTH)"},/obj/structure/sign/directions/engineering{desc = "A direction sign, pointing out which way the engineering department is."; dir = 4; icon_state = "direction_eng"; pixel_y = 0; tag = "icon-direction_eng (EAST)"},/turf/simulated/wall,/area/bridge/meeting_room{name = "\improper Command Hallway"})
"bXC" = (/obj/structure/reagent_dispensers/watertank,/obj/item/weapon/reagent_containers/glass/bucket,/obj/structure/window/reinforced{dir = 8},/obj/item/device/radio/intercom{name = "Station Intercom (General)"; pixel_y = 29},/turf/simulated/floor/plasteel{icon_state = "warning"},/area/hydroponics)
"bXD" = (/obj/structure/reagent_dispensers/watertank,/obj/item/weapon/reagent_containers/glass/bucket,/obj/structure/window/reinforced{dir = 4; pixel_x = 0},/turf/simulated/floor/plasteel{icon_state = "warning"},/area/hydroponics)
"bXE" = (/obj/structure/closet/crate/hydroponics,/obj/item/weapon/shovel/spade,/obj/item/weapon/wrench,/obj/item/weapon/screwdriver,/obj/item/weapon/reagent_containers/glass/bucket,/obj/item/weapon/cultivator,/turf/simulated/floor/plasteel{icon_state = "warning"},/area/hydroponics)
"bXE" = (/obj/structure/sign/directions/engineering{desc = "A direction sign, pointing out which way the engineering department is."; dir = 4; icon_state = "direction_eng"; pixel_y = 0; tag = "icon-direction_eng (EAST)"},/obj/structure/sign/directions/security{desc = "A direction sign, pointing out which way the security department is."; dir = 1; icon_state = "direction_sec"; pixel_x = 0; pixel_y = 8; tag = "icon-direction_sec (NORTH)"},/obj/structure/sign/directions/engineering{desc = "A direction sign, pointing out which way the bridge is."; dir = 8; icon_state = "direction_bridge"; name = "bridge"; pixel_y = -8; tag = "icon-direction_bridge (EAST)"},/turf/simulated/wall,/area/maintenance/maintcentral{name = "Central Maintenance"})
"bXF" = (/obj/structure/closet{name = "spare parts locker"},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 5},/obj/item/weapon/rack_parts,/obj/item/weapon/rack_parts,/obj/item/weapon/wrench,/obj/structure/window/reinforced{dir = 4},/turf/simulated/floor/plasteel{icon_state = "delivery"},/area/crew_quarters/kitchen)
"bXG" = (/obj/structure/disposalpipe/segment{dir = 1; icon_state = "pipe-c"},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/machinery/door/window/eastright{dir = 1; name = "Kitchen Delivery"; req_access_txt = "28"},/turf/simulated/floor/plasteel{icon_state = "delivery"},/area/crew_quarters/kitchen)
"bXH" = (/obj/machinery/atmospherics/components/unary/cold_sink/freezer{dir = 8; tag = ""},/turf/simulated/floor/plasteel,/area/atmos)
@@ -5320,16 +5320,16 @@
"bYp" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/cable/yellow{d1 = 2; d2 = 4; icon_state = "2-4"},/turf/simulated/floor/plasteel,/area/hallway/primary/central)
"bYq" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{req_access_txt = 1},/turf/simulated/floor/plasteel{icon_state = "L1"},/area/hallway/primary/central)
"bYr" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plasteel{icon_state = "L3"},/area/hallway/primary/central)
"bYs" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/navbeacon{codes_txt = "patrol;next_patrol=10.1-Aft-Port-Corner"; location = "10-Aft-Central"},/turf/simulated/floor/plasteel{icon_state = "L5"},/area/hallway/primary/central)
"bYt" = (/obj/structure/cable/yellow{d1 = 2; d2 = 4; icon_state = "2-4"},/obj/structure/cable/yellow{d1 = 2; d2 = 8; icon_state = "2-8"},/turf/simulated/floor/plasteel{icon_state = "L7"},/area/hallway/primary/central)
"bYu" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/navbeacon{codes_txt = "patrol;next_patrol=9-Escape"; location = "8-Central-Aft"},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor/plasteel{icon_state = "L9"},/area/hallway/primary/central)
"bYs" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/machinery/door/firedoor,/obj/machinery/door/airlock/glass{name = "Library"},/turf/simulated/floor/wood,/area/library)
"bYt" = (/obj/machinery/hologram/holopad,/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/structure/cable/yellow{d1 = 2; d2 = 8; icon_state = "2-8"},/obj/structure/cable/yellow{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/machinery/bot/cleanbot{auto_patrol = 1; icon_state = "cleanbot1"; mode = 0; name = "Mister Sweepsky"},/turf/simulated/floor/plasteel,/area/bridge/meeting_room{name = "\improper Command Hallway"})
"bYu" = (/obj/structure/sign/directions/engineering{desc = "A direction sign, pointing out which way the research department is."; icon_state = "direction_sci"; name = "research department"; pixel_y = -8; tag = "icon-direction_sci"},/obj/structure/sign/directions/engineering{desc = "A direction sign, pointing out which way the medical department is."; icon_state = "direction_med"; name = "medical department"; pixel_y = 8; tag = "icon-direction_med"},/obj/structure/sign/directions/engineering{desc = "A direction sign, pointing out which way the escape arm is."; icon_state = "direction_evac"; name = "escape arm"; tag = "icon-direction_evac"},/turf/simulated/wall/r_wall,/area/ai_monitored/storage/eva{name = "E.V.A. Storage"})
"bYv" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plasteel{icon_state = "L11"},/area/hallway/primary/central)
"bYw" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plasteel{desc = ""; icon_state = "L13"; name = "floor"},/area/hallway/primary/central)
"bYx" = (/obj/machinery/atmospherics/pipe/simple/general/visible{dir = 10},/turf/simulated/wall/r_wall,/area/maintenance/incinerator)
"bYy" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/cable/yellow{d1 = 2; d2 = 8; icon_state = "2-8"},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/structure/cable/yellow{d1 = 1; d2 = 8; icon_state = "1-8"},/turf/simulated/floor/plasteel,/area/hallway/primary/central)
"bYz" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/components/unary/vent_scrubber{dir = 1; on = 1; scrub_Toxins = 0},/turf/simulated/floor/plasteel,/area/hallway/primary/central)
"bYA" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/cable/yellow{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor/plasteel,/area/hallway/primary/central)
"bYB" = (/obj/structure/cable/yellow{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/machinery/atmospherics/components/unary/vent_pump{dir = 8; on = 1},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/navbeacon{codes_txt = "patrol;next_patrol=8-Central-Aft"; location = "7.5-Starboard-Aft-Corner"},/turf/simulated/floor/plasteel,/area/hallway/primary/central)
"bYB" = (/obj/structure/sign/directions/engineering{desc = "A direction sign, pointing out which way the escape arm is."; icon_state = "direction_evac"; name = "escape arm"; tag = "icon-direction_evac"},/obj/structure/sign/directions/engineering{desc = "A direction sign, pointing out which way the medical department is."; icon_state = "direction_med"; name = "medical department"; pixel_y = 8; tag = "icon-direction_med"},/obj/structure/sign/directions/engineering{desc = "A direction sign, pointing out which way the research department is."; icon_state = "direction_sci"; name = "research department"; pixel_y = -8; tag = "icon-direction_sci"},/turf/simulated/wall,/area/maintenance/maintcentral{name = "Central Maintenance"})
"bYC" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{req_access_txt = 1},/obj/structure/cable/yellow{d1 = 2; d2 = 8; icon_state = "2-8"},/turf/simulated/floor/plasteel{icon_state = "green"; dir = 4},/area/hallway/primary/central)
"bYD" = (/turf/simulated/floor/plasteel{icon_state = "greenfull"},/area/hallway/primary/central)
"bYE" = (/obj/structure/table/reinforced,/obj/machinery/door/firedoor,/obj/machinery/door/window/westleft{dir = 4; name = "Hydroponics Desk"; req_access_txt = "0"; req_one_access_txt = "30;35"},/turf/simulated/floor/plasteel{dir = 4; icon_state = "greenfull"; tag = "icon-whitehall (WEST)"},/area/hydroponics)
@@ -5495,7 +5495,7 @@
"cbI" = (/obj/machinery/atmospherics/components/unary/portables_connector/visible{dir = 8},/turf/simulated/floor/plasteel,/area/atmos)
"cbJ" = (/obj/machinery/atmospherics/components/trinary/mixer{dir = 2; node1_concentration = 0.8; node2_concentration = 0.2; on = 1; pixel_x = 0; pixel_y = 0; target_pressure = 4500},/turf/simulated/floor/plasteel,/area/atmos)
"cbK" = (/obj/structure/window/reinforced{dir = 4; pixel_x = 0},/obj/structure/window/reinforced{dir = 1; pixel_y = 2},/obj/structure/table,/obj/machinery/atmospherics/pipe/simple/green/visible,/obj/item/weapon/folder/yellow,/obj/item/weapon/folder/yellow,/turf/simulated/floor/plasteel{dir = 4; icon_state = "caution"},/area/atmos)
"cbL" = (/obj/structure/sign/directions/evac{tag = "icon-direction_evac (EAST)"; icon_state = "direction_evac"; dir = 4},/obj/structure/sign/directions/medical{desc = "A direction sign, pointing out which way the medical department is."; dir = 4; icon_state = "direction_med"; name = "medical department"; pixel_y = 8; tag = "icon-direction_med (EAST)"},/obj/structure/sign/directions/science{desc = "A direction sign, pointing out which way the research department is."; dir = 4; icon_state = "direction_sci"; name = "research department"; pixel_y = -8; tag = "icon-direction_sci (EAST)"},/turf/simulated/wall/r_wall,/area/ai_monitored/storage/eva{name = "E.V.A. Storage"})
"cbL" = (/obj/machinery/door/firedoor,/obj/machinery/door/airlock/centcom{name = "Quiet Room"; opacity = 1},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor/wood,/area/library)
"cbM" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0; tag = ""},/obj/machinery/door/airlock/external{name = "Solar Maintenance"; req_access = null; req_access_txt = "10; 13"},/turf/simulated/floor/plating,/area/maintenance/portsolar)
"cbN" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 9},/turf/simulated/floor/plasteel{icon_state = "white"},/area/toxins/explab)
"cbO" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"})
@@ -5858,7 +5858,7 @@
"ciH" = (/obj/structure/stool/bed/chair/office/light{dir = 8},/obj/structure/cable/yellow{d1 = 2; d2 = 8; icon_state = "2-8"},/obj/effect/landmark/start{name = "Medical Doctor"},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/machinery/vending/wallmed{pixel_y = 28},/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/exam_room{name = "Patient Room B"})
"ciI" = (/obj/machinery/door/window/northleft{dir = 8; icon_state = "left"; name = "glass door"; req_access_txt = "24"},/obj/machinery/door/window/northleft{dir = 4; icon_state = "left"; name = "glass door"; req_access_txt = "24"},/turf/simulated/floor/plating,/area/atmos)
"ciJ" = (/obj/item/weapon/storage/box/disks{pixel_x = 2; pixel_y = 2},/obj/item/device/radio/intercom{freerange = 0; frequency = 1459; name = "Station Intercom (General)"; pixel_x = -29},/obj/machinery/camera{c_tag = "Genetics Desk"; dir = 4; network = list("SS13","Medbay")},/obj/structure/table/glass,/turf/simulated/floor/plasteel{icon_state = "blue"; dir = 8},/area/medical/genetics)
"ciK" = (/obj/structure/sign/directions/evac{pixel_y = 6},/turf/simulated/wall,/area/medical/medbay{name = "Medbay Central"})
"ciK" = (/obj/machinery/door/firedoor,/obj/machinery/door/airlock/centcom{name = "Quiet Room"; opacity = 1},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{req_access_txt = 1},/turf/simulated/floor/wood,/area/library)
"ciL" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/door/airlock/external{req_access_txt = "13"},/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"})
"ciM" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plating{tag = "icon-warnplate (WEST)"; icon_state = "warnplate"; dir = 8},/area/maintenance/aft{name = "Aft Maintenance"})
"ciN" = (/obj/item/trash/pistachios,/obj/structure/closet,/obj/item/weapon/stock_parts/console_screen,/obj/item/weapon/extinguisher,/obj/item/weapon/storage/belt/utility,/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"})
@@ -5870,7 +5870,7 @@
"ciT" = (/obj/structure/closet/wardrobe/pjs,/obj/machinery/alarm{pixel_y = 24},/turf/simulated/floor/plasteel{tag = "icon-vault"; icon_state = "vault"},/area/medical/sleeper{name = "Sleepers"})
"ciU" = (/obj/structure/grille,/obj/structure/window/reinforced/fulltile,/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/floor/plating,/area/medical/genetics_cloning)
"ciV" = (/obj/structure/grille,/obj/structure/window/reinforced/fulltile,/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/floor/plating,/area/medical/genetics)
"ciW" = (/obj/structure/sign/directions/evac{pixel_y = 6},/turf/simulated/wall,/area/medical/research{name = "Research Division"})
"ciW" = (/obj/item/stack/sheet/metal{amount = 50},/obj/item/stack/sheet/metal{amount = 50},/obj/structure/table,/obj/item/stack/sheet/plasteel{amount = 10},/obj/machinery/alarm{dir = 4; icon_state = "alarm0"; pixel_x = -22},/obj/item/stack/sheet/glass{amount = 50},/obj/item/stack/sheet/glass{amount = 50},/obj/item/weapon/crowbar,/obj/item/weapon/wrench,/obj/item/weapon/storage/toolbox/electrical{pixel_x = 1; pixel_y = -1},/turf/simulated/floor/plasteel{tag = "icon-vault (WEST)"; icon_state = "vault"; dir = 8},/area/ai_monitored/storage/eva{name = "E.V.A. Storage"})
"ciX" = (/obj/structure/grille,/obj/structure/window/fulltile,/turf/simulated/floor/plating,/area/medical/genetics)
"ciY" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 5},/turf/simulated/floor/plasteel{dir = 2; icon_state = "whiteblue"},/area/medical/medbay2{name = "Medbay Storage"})
"ciZ" = (/obj/machinery/power/apc{dir = 1; name = "Cryogenics APC"; pixel_y = 24},/obj/structure/cable/yellow{d2 = 2; icon_state = "0-2"},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 6},/obj/item/weapon/reagent_containers/glass/beaker/cryoxadone{pixel_x = -2; pixel_y = 9},/obj/machinery/light/small{dir = 8},/obj/item/weapon/reagent_containers/glass/beaker/cryoxadone{pixel_x = 5; pixel_y = 9},/obj/structure/table/glass,/obj/item/weapon/reagent_containers/glass/beaker/cryoxadone{pixel_x = -3; pixel_y = 1},/obj/item/weapon/reagent_containers/glass/beaker/cryoxadone{pixel_x = 6; pixel_y = 2},/obj/item/weapon/reagent_containers/syringe/epinephrine{pixel_x = 3; pixel_y = -2},/obj/item/weapon/reagent_containers/dropper,/turf/simulated/floor/plasteel{dir = 8; icon_state = "whiteblue"},/area/medical/cryo)
@@ -6206,7 +6206,7 @@
"cpr" = (/obj/effect/landmark{name = "xeno_spawn"; pixel_x = -1},/turf/simulated/floor/engine{name = "air floor"; nitrogen = 10580; oxygen = 2644},/area/atmos)
"cps" = (/obj/machinery/camera{c_tag = "Atmospherics Tank - Air"; dir = 8; network = list("SS13"); pixel_x = 0; pixel_y = 0},/turf/simulated/floor/engine{name = "air floor"; nitrogen = 10580; oxygen = 2644},/area/atmos)
"cpt" = (/obj/machinery/portable_atmospherics/canister/air,/turf/simulated/floor/engine{name = "air floor"; nitrogen = 10580; oxygen = 2644},/area/atmos)
"cpu" = (/obj/machinery/door/firedoor,/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/machinery/door/airlock/virology{name = "Break Romm"; req_access_txt = "39"},/turf/simulated/floor/plasteel{icon_state = "whitegreenfull"},/area/medical/virology)
"cpu" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/disposalpipe/segment,/obj/machinery/navbeacon{codes_txt = "patrol;next_patrol=11-Command-Port"; location = "10.2-Aft-Port-Corner"},/turf/simulated/floor/plasteel,/area/hallway/primary/central)
"cpv" = (/obj/structure/table/wood,/obj/item/weapon/reagent_containers/food/drinks/shaker,/obj/item/weapon/reagent_containers/glass/beaker/cryoxadone,/obj/item/weapon/reagent_containers/glass/beaker{pixel_x = 8; pixel_y = 2},/obj/item/weapon/reagent_containers/dropper,/turf/simulated/floor/wood,/area/maintenance/aft{name = "Aft Maintenance"})
"cpw" = (/obj/item/weapon/reagent_containers/food/drinks/ale,/obj/structure/table/wood,/turf/simulated/floor/wood,/area/maintenance/aft{name = "Aft Maintenance"})
"cpx" = (/obj/machinery/light_construct/small{dir = 4},/obj/machinery/computer/security/telescreen/entertainment{pixel_x = 30; pixel_y = 0},/turf/simulated/floor/wood,/area/maintenance/aft{name = "Aft Maintenance"})
@@ -6783,7 +6783,7 @@
"cAw" = (/obj/structure/disposalpipe/segment{dir = 1; icon_state = "pipe-c"},/turf/simulated/floor/plasteel{dir = 4; icon_state = "bluecorner"},/area/medical/genetics)
"cAx" = (/obj/structure/sign/nosmoking_2{pixel_x = 28},/obj/machinery/disposal,/obj/structure/disposalpipe/trunk{dir = 8},/turf/simulated/floor/plasteel{dir = 5; icon_state = "blue"},/area/medical/genetics)
"cAy" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/components/unary/vent_scrubber{dir = 4; on = 1; scrub_N2O = 0; scrub_Toxins = 0},/turf/simulated/floor/plasteel,/area/hallway/primary/aft)
"cAz" = (/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{dir = 4; initialize_directions = 11},/turf/simulated/floor/plasteel{dir = 2; icon_state = "neutralcorner"},/area/hallway/primary/aft)
"cAz" = (/obj/machinery/chem_master/condimaster{desc = "Used to separate out liquids - useful for purifying botanical extracts. Also dispenses condiments."; name = "BrewMaster 2199"; pixel_x = -4},/turf/simulated/floor/plasteel{icon_state = "warning"},/area/hydroponics)
"cAA" = (/obj/machinery/door/poddoor/shutters{id = "Skynet_launch"; name = "Mech Bay"},/turf/simulated/floor/plasteel{icon_state = "delivery"},/area/assembly/chargebay)
"cAB" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/machinery/camera{c_tag = "Research Division Hallway - Mech Bay"; dir = 4; network = list("SS13","RD")},/obj/machinery/alarm{dir = 4; pixel_x = -23; pixel_y = 0},/turf/simulated/floor/plasteel{dir = 6; icon_state = "whitehall"},/area/medical/research{name = "Research Division"})
"cAC" = (/turf/simulated/floor/bluegrid,/area/assembly/chargebay)
@@ -7014,8 +7014,8 @@
"cET" = (/obj/machinery/power/apc{dir = 4; name = "Mech Bay APC"; pixel_x = 28; pixel_y = 0},/obj/structure/cable/yellow{d2 = 8; icon_state = "0-8"},/obj/machinery/atmospherics/components/unary/vent_pump{dir = 8; on = 1},/turf/simulated/floor/plasteel,/area/assembly/chargebay)
"cEU" = (/obj/structure/cable/yellow{d1 = 2; d2 = 8; icon_state = "2-8"},/obj/structure/cable/yellow{d1 = 2; d2 = 4; icon_state = "2-4"},/obj/structure/disposalpipe/segment{dir = 2; icon_state = "pipe-c"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor/plasteel,/area/assembly/chargebay)
"cEV" = (/obj/machinery/door_control{id = "xeno_blastdoor"; name = "Secure Lab Shutter Control"; pixel_x = -5; pixel_y = -5; req_access_txt = "47"},/obj/structure/table/reinforced,/obj/machinery/door_control{id = "rdprivacy"; name = "Privacy Shutters Control"; pixel_x = 5; pixel_y = 5},/obj/machinery/door_control{id = "Biohazard"; name = "Entrance Shutter Control"; pixel_x = -5; pixel_y = 5; req_access_txt = "47"},/obj/machinery/door_control{id = "toxins_blastdoor"; name = "Toxins Shutter Control"; pixel_x = 5; pixel_y = -5; req_access_txt = "47"},/obj/item/device/radio/off,/turf/simulated/floor/plasteel{tag = "icon-cafeteria (NORTHEAST)"; icon_state = "cafeteria"; dir = 5},/area/crew_quarters/hor)
"cEW" = (/obj/machinery/light/small{dir = 1},/turf/simulated/floor/plasteel{dir = 9; icon_state = "warning"},/area/toxins/misc_lab{name = "\improper Research Testing Range"})
"cEX" = (/obj/machinery/light/small{dir = 1},/turf/simulated/floor/plasteel{dir = 5; icon_state = "warning"},/area/toxins/misc_lab{name = "\improper Research Testing Range"})
"cEW" = (/obj/structure/closet/crate/hydroponics,/obj/item/weapon/shovel/spade,/obj/item/weapon/wrench,/obj/item/weapon/reagent_containers/glass/bucket,/obj/item/weapon/cultivator,/obj/item/weapon/wirecutters,/turf/simulated/floor/plasteel{icon_state = "warning"},/area/hydroponics)
"cEX" = (/obj/structure/cable/yellow{d1 = 2; d2 = 4; icon_state = "2-4"},/obj/structure/cable/yellow{d1 = 2; d2 = 8; icon_state = "2-8"},/obj/machinery/bot/secbot/beepsky{desc = "It's Officer Beepsky's good pal - expect an inspection! "; health = 45; maxhealth = 45; name = "Inspector Johnson"},/turf/simulated/floor/plasteel{icon_state = "L7"},/area/hallway/primary/central)
"cEY" = (/obj/machinery/atmospherics/pipe/manifold/supply/hidden{dir = 4},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plasteel{dir = 8; icon_state = "whitepurple"},/area/medical/research{name = "Research Division"})
"cEZ" = (/turf/simulated/wall,/area/assembly/robotics)
"cFa" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/machinery/door/firedoor,/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/research{name = "Research Division"})
@@ -7059,12 +7059,12 @@
"cFM" = (/obj/structure/table,/obj/item/weapon/storage/box/bodybags,/obj/item/weapon/pen,/obj/item/device/radio/intercom{freerange = 0; frequency = 1459; name = "Station Intercom (General)"; pixel_x = 29},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/medical/morgue)
"cFN" = (/obj/machinery/vending/cola,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/hallway/primary/aft)
"cFO" = (/obj/structure/table/reinforced,/obj/item/weapon/pen,/obj/machinery/door/window/eastright{dir = 4; name = "Robotics Desk"; req_access_txt = "29"},/obj/item/weapon/folder/white,/obj/item/weapon/folder/white,/obj/machinery/door/poddoor/shutters/preopen{id = "robotics"; name = "robotics lab shutters"},/obj/machinery/door/firedoor,/turf/simulated/floor/plating,/area/assembly/robotics)
"cFP" = (/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/toxins/misc_lab{name = "\improper Research Testing Range"})
"cFP" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/navbeacon{codes_txt = "patrol;next_patrol=10.2-Aft-Port-Corner"; location = "10.1-Central-from-Aft"},/turf/simulated/floor/plasteel{icon_state = "L5"},/area/hallway/primary/central)
"cFQ" = (/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/cable/yellow{d1 = 1; d2 = 8; icon_state = "1-8"},/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/research{name = "Research Division"})
"cFR" = (/obj/machinery/door/firedoor,/obj/machinery/atmospherics/pipe/simple/supply/hidden{req_access_txt = 1},/turf/simulated/floor/plasteel{dir = 8; icon_state = "neutralcorner"},/area/hallway/primary/aft)
"cFS" = (/obj/machinery/recharge_station,/turf/simulated/floor/plasteel{icon_state = "delivery"},/area/assembly/chargebay)
"cFT" = (/obj/structure/sign/nosmoking_2{pixel_x = -29; pixel_y = 0},/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/toxins/misc_lab{name = "\improper Research Testing Range"})
"cFU" = (/obj/machinery/magnetic_module,/obj/effect/landmark{name = "blobstart"},/obj/structure/target_stake,/turf/simulated/floor/plasteel{dir = 2; icon_state = "bot"},/area/toxins/misc_lab{name = "\improper Research Testing Range"})
"cFT" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/navbeacon{codes_txt = "patrol;next_patrol=8.1-Aft-to-Escape"; location = "8-Central-to-Aft"},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor/plasteel{icon_state = "L9"},/area/hallway/primary/central)
"cFU" = (/obj/structure/cable/yellow{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/machinery/atmospherics/components/unary/vent_pump{dir = 8; on = 1},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/navbeacon{codes_txt = "patrol;next_patrol=8-Central-to-Aft"; location = "7.5-Starboard-Aft-Corner"},/turf/simulated/floor/plasteel,/area/hallway/primary/central)
"cFV" = (/obj/structure/sign/securearea,/turf/simulated/wall/r_wall,/area/toxins/mixing{name = "\improper Toxins Lab"})
"cFW" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/wall/r_wall,/area/toxins/mixing{name = "\improper Toxins Lab"})
"cFX" = (/obj/machinery/shower{dir = 4; icon_state = "shower"; name = "emergency shower"; tag = "icon-shower (EAST)"},/turf/simulated/floor/plasteel{icon_state = "white"},/area/toxins/mixing{name = "\improper Toxins Lab"})
@@ -7089,8 +7089,8 @@
"cGq" = (/obj/structure/grille,/obj/structure/window/reinforced/fulltile,/obj/machinery/door/poddoor/preopen{id = "chapelspaceshutters"; name = "chapel shutters"},/turf/simulated/floor/plating,/area/chapel/main)
"cGr" = (/obj/structure/grille,/obj/structure/window/reinforced/fulltile,/obj/machinery/door/poddoor/preopen{id = "researchrangeshutters"; name = "blast door"},/turf/simulated/floor/plating,/area/toxins/misc_lab{name = "\improper Research Testing Range"})
"cGs" = (/obj/machinery/smartfridge/chemistry/virology,/obj/machinery/alarm{frequency = 1439; pixel_y = 23},/turf/simulated/floor/plasteel{icon_state = "whitegreenfull"},/area/medical/virology)
"cGt" = (/turf/simulated/floor/plasteel{dir = 10; icon_state = "warning"},/area/toxins/misc_lab{name = "\improper Research Testing Range"})
"cGu" = (/turf/simulated/floor/plasteel{dir = 6; icon_state = "warning"},/area/toxins/misc_lab{name = "\improper Research Testing Range"})
"cGt" = (/obj/structure/sign/directions/security{desc = "A direction sign, pointing out which way the security department is."; dir = 1; icon_state = "direction_sec"; pixel_x = 0; pixel_y = 8; tag = "icon-direction_sec (NORTH)"},/obj/structure/sign/directions/engineering{desc = "A direction sign, pointing out which way the engineering department is."; dir = 4; icon_state = "direction_eng"; pixel_y = 0; tag = "icon-direction_eng (EAST)"},/obj/structure/sign/directions/engineering{desc = "A direction sign, pointing out which way the bridge is."; dir = 1; icon_state = "direction_bridge"; name = "bridge"; pixel_y = -8; tag = "icon-direction_bridge (EAST)"},/turf/simulated/wall,/area/medical/medbay{name = "Medbay Central"})
"cGu" = (/obj/structure/sign/directions/engineering{desc = "A direction sign, pointing out which way the medical department is."; dir = 8; icon_state = "direction_med"; name = "medical department"; pixel_y = 8; tag = "icon-direction_med"},/obj/structure/sign/directions/engineering{desc = "A direction sign, pointing out which way the escape arm is."; icon_state = "direction_evac"; name = "escape arm"; tag = "icon-direction_evac"},/obj/structure/sign/directions/engineering{desc = "A direction sign, pointing out which way the research department is."; dir = 4; icon_state = "direction_sci"; name = "research department"; pixel_y = -8; tag = "icon-direction_sci"},/turf/simulated/wall,/area/medical/research{name = "Research Division"})
"cGv" = (/obj/structure/disposalpipe/segment{dir = 1; icon_state = "pipe-c"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 5},/obj/structure/cable/yellow{d1 = 1; d2 = 4; icon_state = "1-4"},/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"})
"cGw" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/structure/disposalpipe/segment{dir = 4},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"})
"cGx" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/structure/disposalpipe/segment{dir = 4},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plating{tag = "icon-panelscorched"; icon_state = "panelscorched"},/area/maintenance/aft{name = "Aft Maintenance"})
@@ -7109,7 +7109,7 @@
"cGK" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/medical/morgue)
"cGL" = (/obj/structure/disposalpipe/segment{dir = 2; icon_state = "pipe-c"},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 10},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/medical/morgue)
"cGM" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 5},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/medical/morgue)
"cGN" = (/turf/simulated/floor/plating,/area/toxins/misc_lab{name = "\improper Research Testing Range"})
"cGN" = (/obj/structure/sign/nosmoking_2{pixel_y = 32},/obj/machinery/camera{c_tag = "Experimentation Lab - Test Chamber"; dir = 2; network = list("SS13","RD")},/obj/machinery/light{dir = 1},/turf/simulated/floor/engine,/area/toxins/explab)
"cGO" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/wall,/area/medical/morgue)
"cGP" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/wall,/area/hallway/primary/aft)
"cGQ" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{req_access_txt = 1},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/machinery/firealarm{dir = 8; pixel_x = -24},/turf/simulated/floor/plasteel{dir = 8; icon_state = "neutralcorner"},/area/hallway/primary/aft)
@@ -7117,9 +7117,9 @@
"cGS" = (/turf/simulated/wall/r_wall,/area/assembly/robotics)
"cGT" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/disposalpipe/segment,/turf/simulated/floor/plasteel{icon_state = "bot"},/area/assembly/chargebay)
"cGU" = (/turf/simulated/floor/plasteel{icon_state = "bot"},/area/assembly/robotics)
"cGV" = (/obj/machinery/camera{c_tag = "Research Testing Range"; dir = 8; network = list("SS13","RD"); pixel_y = -22},/obj/machinery/alarm{dir = 8; icon_state = "alarm0"; pixel_x = 24},/turf/simulated/floor/plating,/area/toxins/misc_lab{name = "\improper Research Testing Range"})
"cGW" = (/obj/machinery/atmospherics/components/unary/vent_scrubber{dir = 2; on = 1; scrub_N2O = 0; scrub_Toxins = 0},/turf/simulated/floor/plating{icon_plating = "warnplate"; icon_state = "warnplate"},/area/toxins/misc_lab{name = "\improper Research Testing Range"})
"cGX" = (/turf/simulated/floor/plating{icon_plating = "warnplate"; icon_state = "warnplate"},/area/toxins/misc_lab{name = "\improper Research Testing Range"})
"cGV" = (/obj/machinery/light/small{dir = 1},/turf/simulated/floor/engine{dir = 9; icon_state = "warning"},/area/toxins/misc_lab{name = "\improper Research Testing Range"})
"cGW" = (/obj/machinery/light/small{dir = 1},/turf/simulated/floor/engine{dir = 5; icon_state = "warning"},/area/toxins/misc_lab{name = "\improper Research Testing Range"})
"cGX" = (/turf/simulated/floor/engine{dir = 9; icon_state = "floor"},/area/toxins/misc_lab{name = "\improper Research Testing Range"})
"cGY" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 6},/turf/simulated/floor/carpet,/area/chapel/main)
"cGZ" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/structure/extinguisher_cabinet{pixel_x = 27; pixel_y = 0},/turf/simulated/floor/plasteel{dir = 9; icon_state = "whitehall"},/area/medical/research{name = "Research Division"})
"cHa" = (/obj/structure/lattice,/turf/space,/area/toxins/mixing{name = "\improper Toxins Lab"})
@@ -7136,20 +7136,20 @@
"cHl" = (/obj/structure/stool/bed/chair{dir = 4},/turf/simulated/floor/plating/airless{dir = 10; icon_state = "warnplate"},/area/toxins/test_area)
"cHm" = (/obj/structure/stool/bed/chair{dir = 8},/turf/simulated/floor/plating/airless{dir = 6; icon_state = "warnplate"},/area/toxins/test_area)
"cHn" = (/turf/simulated/wall,/area/medical/virology)
"cHo" = (/obj/structure/table/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/extinguisher_cabinet{pixel_x = -27; pixel_y = 0},/obj/item/weapon/folder/white,/obj/item/weapon/paper/range{pixel_x = 2; pixel_y = 2},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor/plasteel{dir = 8; icon_state = "warning"},/area/toxins/misc_lab{name = "\improper Research Testing Range"})
"cHp" = (/obj/structure/table/reinforced,/obj/machinery/magnetic_controller{autolink = 1; pixel_y = 3},/obj/structure/window/reinforced{dir = 1},/obj/machinery/light{dir = 4; icon_state = "tube1"},/obj/item/clothing/ears/earmuffs,/turf/simulated/floor/plasteel{dir = 4; icon_state = "warning"},/area/toxins/misc_lab{name = "\improper Research Testing Range"})
"cHq" = (/obj/machinery/door/window/westleft{base_state = "right"; dir = 1; icon_state = "right"; name = "door"; req_access_txt = "0"},/turf/simulated/floor/plasteel,/area/toxins/misc_lab{name = "\improper Research Testing Range"})
"cHr" = (/obj/structure/rack,/obj/item/target,/obj/item/target,/obj/item/target/alien,/obj/item/target/alien,/obj/item/target/alien,/obj/item/target/syndicate,/obj/item/target/syndicate,/obj/item/target/syndicate,/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/machinery/light_switch{pixel_x = -25},/turf/simulated/floor/plasteel{dir = 9; icon_state = "warning"},/area/toxins/misc_lab{name = "\improper Research Testing Range"})
"cHo" = (/obj/structure/sign/nosmoking_2{pixel_x = -29; pixel_y = 0},/turf/simulated/floor/engine{dir = 9; icon_state = "floor"},/area/toxins/misc_lab{name = "\improper Research Testing Range"})
"cHp" = (/obj/machinery/magnetic_module,/obj/effect/landmark{name = "blobstart"},/obj/structure/target_stake,/turf/simulated/floor/engine{dir = 9; icon_state = "bot"},/area/toxins/misc_lab{name = "\improper Research Testing Range"})
"cHq" = (/turf/simulated/floor/engine{dir = 10; icon_state = "warning"},/area/toxins/misc_lab{name = "\improper Research Testing Range"})
"cHr" = (/turf/simulated/floor/engine{dir = 6; icon_state = "warning"},/area/toxins/misc_lab{name = "\improper Research Testing Range"})
"cHs" = (/obj/structure/stool/bed/chair/office/light{dir = 1; pixel_y = 3},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plasteel{dir = 4; icon_state = "whitegreencorner"},/area/medical/virology)
"cHt" = (/obj/machinery/atmospherics/components/unary/vent_pump{on = 1},/turf/simulated/floor/plasteel{dir = 1; icon_state = "whitegreen"},/area/medical/virology)
"cHu" = (/obj/structure/stool/bed/chair/office/light{dir = 4},/obj/effect/landmark/start{name = "Virologist"},/turf/simulated/floor/plasteel{dir = 1; icon_state = "whitegreencorner"},/area/medical/virology)
"cHv" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/structure/cable/yellow{d1 = 2; d2 = 4; icon_state = "2-4"},/turf/simulated/floor/plasteel{dir = 5; icon_state = "warning"},/area/toxins/misc_lab{name = "\improper Research Testing Range"})
"cHv" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{req_access_txt = 1},/obj/machinery/light{icon_state = "tube1"; dir = 8},/obj/machinery/navbeacon{codes_txt = "patrol;next_patrol=10.1-Central-from-Aft"; location = "10-Aft-To-Central"},/turf/simulated/floor/plasteel{dir = 8; icon_state = "neutralcorner"},/area/hallway/primary/aft)
"cHw" = (/obj/machinery/door/airlock/maintenance{req_access_txt = "0"; req_one_access_txt = "12;5;39;6"},/obj/structure/disposalpipe/segment,/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{req_access_txt = 1},/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"})
"cHx" = (/turf/simulated/floor/plasteel{dir = 6; icon_state = "whitehall"},/area/medical/medbay3{name = "Medbay Aft"})
"cHy" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 6},/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/medbay3{name = "Medbay Aft"})
"cHz" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 9},/turf/simulated/floor/plasteel{dir = 10; icon_state = "whitehall"},/area/medical/medbay3{name = "Medbay Aft"})
"cHA" = (/obj/machinery/disposal,/obj/structure/disposalpipe/trunk{dir = 1},/turf/simulated/floor/plasteel{dir = 4; icon_state = "whitecorner"},/area/medical/medbay3{name = "Medbay Aft"})
"cHB" = (/obj/machinery/atmospherics/components/unary/vent_pump{dir = 4; on = 1},/turf/simulated/floor/plasteel{dir = 1; icon_state = "warning"},/area/toxins/misc_lab{name = "\improper Research Testing Range"})
"cHB" = (/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{dir = 4; initialize_directions = 11},/obj/machinery/navbeacon{codes_txt = "patrol;next_patrol=9.1-Escape-1"; location = "8.1-Aft-to-Escape"},/turf/simulated/floor/plasteel{dir = 2; icon_state = "neutralcorner"},/area/hallway/primary/aft)
"cHC" = (/obj/machinery/vending/medical,/turf/simulated/floor/plasteel{dir = 1; icon_state = "whitecorner"},/area/medical/medbay3{name = "Medbay Aft"})
"cHD" = (/obj/machinery/door/firedoor,/obj/machinery/door/airlock/research{name = "Research Testing Range"; req_access_txt = "0"; req_one_access_txt = "7;47;29"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plasteel{icon_state = "purplefull"},/area/toxins/misc_lab{name = "\improper Research Testing Range"})
"cHE" = (/obj/structure/disposalpipe/junction{tag = "icon-pipe-j2"; icon_state = "pipe-j2"; dir = 2},/obj/machinery/atmospherics/pipe/simple/supply/hidden{req_access_txt = 1},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/medical/morgue)
@@ -7181,19 +7181,19 @@
"cIe" = (/obj/structure/stool/bed/chair{dir = 1},/turf/simulated/floor/plating/airless{dir = 6; icon_state = "warnplate"},/area/toxins/test_area)
"cIf" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/item/device/radio/intercom{freerange = 0; frequency = 1459; name = "Station Intercom (General)"; pixel_x = 29},/turf/simulated/floor/plasteel{dir = 2; icon_state = "purplecorner"},/area/hallway/primary/aft)
"cIg" = (/obj/structure/grille,/obj/structure/window/reinforced/fulltile,/turf/simulated/floor/plating,/area/assembly/chargebay)
"cIh" = (/obj/structure/table,/obj/item/device/radio/intercom{freerange = 0; frequency = 1459; name = "Station Intercom (General)"; pixel_x = 0; pixel_y = -25},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 5},/obj/item/clothing/glasses/science,/turf/simulated/floor/plasteel{dir = 10; icon_state = "warning"},/area/toxins/misc_lab{name = "\improper Research Testing Range"})
"cIh" = (/turf/simulated/floor/engine{icon_state = "plating"},/area/toxins/misc_lab{name = "\improper Research Testing Range"})
"cIi" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor/plasteel{dir = 1; icon_state = "whitegreen"},/area/medical/virology)
"cIj" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/manifold/supply/hidden{dir = 2},/turf/simulated/floor/plasteel{dir = 1; icon_state = "whitegreen"},/area/medical/virology)
"cIk" = (/obj/structure/rack,/obj/item/weapon/crowbar/red,/obj/machinery/light_switch{pixel_x = 0; pixel_y = 26},/obj/item/weapon/wrench,/obj/item/weapon/restraints/handcuffs,/obj/machinery/atmospherics/pipe/manifold/supply/hidden{dir = 1},/turf/simulated/floor/plasteel{dir = 5; icon_state = "whitegreen"},/area/medical/virology)
"cIl" = (/obj/structure/grille,/obj/structure/window/reinforced/tinted{dir = 5; health = 120; icon_state = "twindow"; reinf = 0},/turf/simulated/floor/plating,/area/assembly/robotics)
"cIm" = (/obj/item/weapon/gun/energy/laser/practice,/obj/machinery/power/apc{dir = 2; name = "Research Firing Range APC"; pixel_x = 0; pixel_y = -28},/obj/structure/table,/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/structure/cable/yellow,/turf/simulated/floor/plasteel{dir = 6; icon_state = "warning"},/area/toxins/misc_lab{name = "\improper Research Testing Range"})
"cIm" = (/obj/machinery/camera{c_tag = "Research Testing Range"; dir = 8; network = list("SS13","RD"); pixel_y = -22},/obj/machinery/alarm{dir = 8; icon_state = "alarm0"; pixel_x = 24},/turf/simulated/floor/engine{icon_state = "plating"},/area/toxins/misc_lab{name = "\improper Research Testing Range"})
"cIn" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/manifold/supply/hidden{dir = 1},/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/virology)
"cIo" = (/obj/machinery/atmospherics/pipe/manifold/supply/hidden{dir = 2},/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/virology)
"cIp" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/virology)
"cIq" = (/obj/machinery/computer/pandemic{layer = 2.5; pixel_x = -4},/obj/machinery/light_switch{pixel_x = 26; pixel_y = 0},/obj/machinery/light{dir = 4; icon_state = "tube1"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor/plasteel{dir = 4; icon_state = "whitegreen"},/area/medical/virology)
"cIr" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/wall/r_wall,/area/medical/virology)
"cIs" = (/obj/structure/disposalpipe/segment,/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plasteel{icon_state = "bot"},/area/assembly/robotics)
"cIt" = (/obj/structure/table,/obj/machinery/recharger{pixel_y = 4},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/machinery/door_control{id = "researchrangeshutters"; name = "Blast Door Control"; pixel_x = 0; pixel_y = -24; req_access_txt = "0"},/obj/machinery/light,/turf/simulated/floor/plasteel{icon_state = "warning"},/area/toxins/misc_lab{name = "\improper Research Testing Range"})
"cIt" = (/obj/machinery/atmospherics/components/unary/vent_scrubber{dir = 2; on = 1; scrub_N2O = 0; scrub_Toxins = 0},/turf/simulated/floor/engine{icon_state = "warnplate"},/area/toxins/misc_lab{name = "\improper Research Testing Range"})
"cIu" = (/obj/structure/grille,/obj/structure/window/reinforced/fulltile,/obj/machinery/door/poddoor/preopen{id = "researchrangeshutters"; name = "blast door"},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/floor/plating,/area/toxins/misc_lab{name = "\improper Research Testing Range"})
"cIv" = (/obj/structure/sign/biohazard{pixel_y = 32},/obj/machinery/shower{tag = "icon-shower (EAST)"; icon_state = "shower"; dir = 4},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor/plasteel{dir = 9; icon_state = "warnwhite"; tag = "icon-warnwhite (NORTHEAST)"},/area/medical/virology)
"cIw" = (/obj/structure/sink{pixel_y = 28},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor/plasteel{tag = "icon-warnwhite (NORTH)"; icon_state = "warnwhite"; dir = 1},/area/medical/virology)
@@ -7478,7 +7478,7 @@
"cNP" = (/obj/machinery/door/airlock/maintenance{req_access_txt = "0"; req_one_access_txt = "12;5;39;6"},/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"})
"cNQ" = (/turf/simulated/floor/plasteel{dir = 8; icon_state = "warning"},/area/hallway/secondary/exit{name = "\improper Departure Lounge"})
"cNR" = (/turf/simulated/floor/plasteel,/area/hallway/secondary/exit{name = "\improper Departure Lounge"})
"cNS" = (/obj/structure/disposalpipe/segment{dir = 4; icon_state = "pipe-c"},/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor/plasteel,/area/hallway/secondary/exit{name = "\improper Departure Lounge"})
"cNS" = (/turf/simulated/floor/engine{icon_state = "warnplate"},/area/toxins/misc_lab{name = "\improper Research Testing Range"})
"cNT" = (/obj/structure/cable/yellow{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor/plasteel,/area/hallway/secondary/exit{name = "\improper Departure Lounge"})
"cNU" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/disposalpipe/segment{dir = 8; icon_state = "pipe-c"},/turf/simulated/floor/plasteel,/area/hallway/secondary/exit{name = "\improper Departure Lounge"})
"cNV" = (/obj/machinery/atmospherics/components/unary/vent_pump{dir = 1; on = 1},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plasteel,/area/hallway/secondary/exit{name = "\improper Departure Lounge"})
@@ -7631,11 +7631,12 @@
"cQM" = (/obj/structure/noticeboard{desc = "A memorial wall for pinning up momentos"; name = "memorial board"; pixel_y = 32},/obj/item/weapon/storage/fancy/candle_box,/obj/item/weapon/storage/fancy/candle_box{pixel_x = -2; pixel_y = 2},/obj/effect/decal/cleanable/cobweb,/obj/structure/table/wood,/turf/simulated/floor/carpet,/area/chapel/main)
"cQN" = (/obj/structure/noticeboard{desc = "A memorial wall for pinning up momentos"; name = "memorial board"; pixel_y = 32},/obj/item/weapon/storage/book/bible,/obj/structure/table/wood,/turf/simulated/floor/carpet,/area/chapel/main)
"cQO" = (/obj/structure/sign/atmosplaque{desc = "A plaque commemorating the fallen, may they rest in peace, forever asleep amongst the stars. Someone has drawn a picture of a crying badger at the bottom."; icon_state = "kiddieplaque"; name = "Remembrance Plaque"; pixel_x = 0; pixel_y = 32},/obj/item/weapon/reagent_containers/food/snacks/grown/poppy{pixel_y = 2},/obj/item/weapon/reagent_containers/food/snacks/grown/poppy{pixel_y = 2},/obj/item/weapon/reagent_containers/food/snacks/grown/poppy{pixel_y = 2},/obj/item/weapon/reagent_containers/food/snacks/grown/poppy{pixel_y = 2},/obj/item/weapon/reagent_containers/food/snacks/grown/poppy{pixel_y = 2},/obj/machinery/light/small{dir = 1},/obj/structure/table/wood,/turf/simulated/floor/carpet,/area/chapel/main)
"cQP" = (/obj/structure/table/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/extinguisher_cabinet{pixel_x = -27; pixel_y = 0},/obj/item/weapon/folder/white,/obj/item/weapon/paper/range{pixel_x = 2; pixel_y = 2},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor/engine{dir = 8; icon_state = "warning"},/area/toxins/misc_lab{name = "\improper Research Testing Range"})
"cQQ" = (/obj/machinery/door/firedoor,/obj/machinery/door/airlock/centcom{name = "Chapel"; opacity = 1},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/chapel/main)
"cQR" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/floor/plasteel{dir = 10; icon_state = "warning"; tag = "icon-warnwhite (NORTHEAST)"},/area/hallway/secondary/exit{name = "\improper Departure Lounge"})
"cQS" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/floor/plasteel{icon_state = "warningcorner"; dir = 1},/area/hallway/secondary/exit{name = "\improper Departure Lounge"})
"cQT" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/floor/plasteel,/area/hallway/secondary/exit{name = "\improper Departure Lounge"})
"cQU" = (/obj/machinery/navbeacon{codes_txt = "patrol;next_patrol=10-Aft-Central"; location = "9.5-Escape2"},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/floor/plasteel,/area/hallway/secondary/exit{name = "\improper Departure Lounge"})
"cQU" = (/obj/structure/table/reinforced,/obj/machinery/magnetic_controller{autolink = 1; pixel_y = 3},/obj/structure/window/reinforced{dir = 1},/obj/item/clothing/ears/earmuffs,/turf/simulated/floor/engine{dir = 4; icon_state = "warning"},/area/toxins/misc_lab{name = "\improper Research Testing Range"})
"cQV" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 10},/turf/simulated/floor/plasteel,/area/hallway/secondary/exit{name = "\improper Departure Lounge"})
"cQW" = (/obj/machinery/ai_status_display{pixel_x = 0; pixel_y = 0},/turf/simulated/wall,/area/hallway/secondary/exit{name = "\improper Departure Lounge"})
"cQX" = (/obj/structure/cable/yellow{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{dir = 8; initialize_directions = 11},/turf/simulated/floor/plasteel,/area/hallway/secondary/exit{name = "\improper Departure Lounge"})
@@ -7670,6 +7671,7 @@
"cRA" = (/obj/machinery/atmospherics/components/unary/vent_scrubber{dir = 4; on = 1; scrub_N2O = 0; scrub_Toxins = 0},/turf/simulated/floor/plasteel,/area/hallway/secondary/exit{name = "\improper Departure Lounge"})
"cRB" = (/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{dir = 2; initialize_directions = 11},/turf/simulated/floor/plasteel,/area/hallway/secondary/exit{name = "\improper Departure Lounge"})
"cRC" = (/obj/structure/stool/bed/chair{dir = 8},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/floor/plasteel{dir = 4; icon_state = "warning"},/area/hallway/secondary/exit{name = "\improper Departure Lounge"})
"cRD" = (/obj/machinery/door/window/westleft{base_state = "right"; dir = 1; icon_state = "right"; name = "door"; req_access_txt = "0"},/turf/simulated/floor/engine{dir = 9; icon_state = "floor"},/area/toxins/misc_lab{name = "\improper Research Testing Range"})
"cRE" = (/obj/structure/stool/bed/chair{dir = 4},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/floor/plasteel{dir = 8; icon_state = "warning"},/area/hallway/secondary/exit{name = "\improper Departure Lounge"})
"cRF" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/floor/plasteel,/area/hallway/secondary/exit{name = "\improper Departure Lounge"})
"cRG" = (/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{dir = 4; initialize_directions = 11},/turf/simulated/floor/plasteel,/area/hallway/secondary/exit{name = "\improper Departure Lounge"})
@@ -7721,7 +7723,7 @@
"cSA" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor/plasteel{tag = "icon-warningcorner (WEST)"; icon_state = "warningcorner"; dir = 8},/area/hallway/secondary/exit{name = "\improper Departure Lounge"})
"cSB" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/item/device/radio/beacon,/turf/simulated/floor/plasteel{dir = 1; icon_state = "warning"},/area/hallway/secondary/exit{name = "\improper Departure Lounge"})
"cSC" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor/plasteel{tag = "icon-warningcorner (EAST)"; icon_state = "warningcorner"; dir = 4},/area/hallway/secondary/exit{name = "\improper Departure Lounge"})
"cSD" = (/obj/machinery/atmospherics/pipe/manifold/supply/hidden{dir = 4},/obj/machinery/navbeacon{codes_txt = "patrol;next_patrol=9.5-Escape2"; location = "9-Escape"},/obj/machinery/bot/secbot{auto_patrol = 1; health = 35; maxhealth = 35; name = "Inspector Johnson"},/turf/simulated/floor/plasteel,/area/hallway/secondary/exit{name = "\improper Departure Lounge"})
"cSD" = (/obj/structure/rack,/obj/item/target,/obj/item/target,/obj/item/target/alien,/obj/item/target/alien,/obj/item/target/alien,/obj/item/target/syndicate,/obj/item/target/syndicate,/obj/item/target/syndicate,/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/machinery/light_switch{pixel_x = -25},/turf/simulated/floor/engine{dir = 9; icon_state = "warning"},/area/toxins/misc_lab{name = "\improper Research Testing Range"})
"cSE" = (/obj/machinery/processor{desc = "A machine used to process slimes and retrieve their extract."; name = "Slime Processor"},/obj/item/device/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"})
"cSF" = (/obj/machinery/monkey_recycler,/turf/simulated/floor/plasteel{dir = 2; icon_state = "whitepurple"},/area/toxins/xenobiology{name = "\improper Secure Lab"})
"cSG" = (/obj/structure/table,/obj/machinery/reagentgrinder,/turf/simulated/floor/plasteel{dir = 6; icon_state = "whitepurple"},/area/toxins/xenobiology{name = "\improper Secure Lab"})
@@ -7742,7 +7744,7 @@
"cSV" = (/turf/simulated/floor/plasteel{icon_state = "chapel"},/area/chapel/main)
"cSW" = (/turf/simulated/floor/plasteel{dir = 10; icon_state = "warning"; tag = "icon-warnwhite (NORTHEAST)"},/area/hallway/secondary/exit{name = "\improper Departure Lounge"})
"cSX" = (/turf/simulated/floor/plasteel{dir = 2; icon_state = "warning"},/area/hallway/secondary/exit{name = "\improper Departure Lounge"})
"cSY" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor/plasteel{dir = 2; icon_state = "warning"},/area/hallway/secondary/exit{name = "\improper Departure Lounge"})
"cSY" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/structure/cable/yellow{d1 = 2; d2 = 4; icon_state = "2-4"},/turf/simulated/floor/engine{dir = 5; icon_state = "warning"},/area/toxins/misc_lab{name = "\improper Research Testing Range"})
"cSZ" = (/turf/simulated/floor/plasteel{dir = 6; icon_state = "warning"},/area/hallway/secondary/exit{name = "\improper Departure Lounge"})
"cTa" = (/obj/structure/disposalpipe/segment,/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/machinery/door/firedoor,/turf/simulated/floor/plasteel{icon_state = "delivery"; name = "floor"},/area/toxins/xenobiology{name = "\improper Secure Lab"})
"cTb" = (/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor/engine,/area/toxins/xenobiology{name = "\improper Secure Lab"})
@@ -7924,7 +7926,17 @@
"cWv" = (/obj/machinery/door/airlock/shuttle{name = "Arrivals Shuttle Airlock"},/obj/docking_port/mobile{dwidth = 5; height = 7; id = "arrival"; name = "arrival shuttle"; travelDir = -90; width = 15},/obj/docking_port/stationary{dwidth = 5; height = 7; id = "arrival_home"; name = "port bay 1"; width = 15},/turf/simulated/floor/plating,/area/shuttle/arrival)
"cWw" = (/turf/simulated/wall/shuttle{tag = "icon-swall_s9"; icon_state = "swall_s9"; dir = 2},/area/shuttle/arrival)
"cWx" = (/turf/simulated/wall/shuttle{tag = "icon-swall13"; icon_state = "swall13"; dir = 2},/area/shuttle/arrival)
"cWy" = (/obj/machinery/atmospherics/components/unary/vent_pump{dir = 4; on = 1},/turf/simulated/floor/engine{dir = 1; icon_state = "warning"},/area/toxins/misc_lab{name = "\improper Research Testing Range"})
"cWz" = (/obj/structure/table,/obj/item/device/radio/intercom{freerange = 0; frequency = 1459; name = "Station Intercom (General)"; pixel_x = 0; pixel_y = -25},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 5},/obj/item/clothing/glasses/science,/turf/simulated/floor/engine{dir = 10; icon_state = "warning"},/area/toxins/misc_lab{name = "\improper Research Testing Range"})
"cWA" = (/obj/item/weapon/gun/energy/laser/practice,/obj/machinery/power/apc{dir = 2; name = "Research Firing Range APC"; pixel_x = 0; pixel_y = -28},/obj/structure/table,/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/structure/cable/yellow,/turf/simulated/floor/engine{dir = 6; icon_state = "warning"},/area/toxins/misc_lab{name = "\improper Research Testing Range"})
"cWB" = (/obj/structure/table,/obj/machinery/recharger{pixel_y = 4},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/machinery/door_control{id = "researchrangeshutters"; name = "Blast Door Control"; pixel_x = 0; pixel_y = -24; req_access_txt = "0"},/obj/machinery/light,/turf/simulated/floor/engine{icon_state = "warning"},/area/toxins/misc_lab{name = "\improper Research Testing Range"})
"cWC" = (/obj/machinery/door/firedoor,/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/machinery/door/airlock/virology{name = "Break Room"; req_access_txt = "39"},/turf/simulated/floor/plasteel{icon_state = "whitegreenfull"},/area/medical/virology)
"cWD" = (/obj/structure/disposalpipe/segment{dir = 4; icon_state = "pipe-c"},/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/machinery/navbeacon{codes_txt = "patrol;next_patrol=10-Aft-To-Central"; location = "9.4-Escape-4"},/turf/simulated/floor/plasteel,/area/hallway/secondary/exit{name = "\improper Departure Lounge"})
"cWE" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/navbeacon{codes_txt = "patrol;next_patrol=9.2-Escape-2"; location = "9.1-Escape-1"},/turf/simulated/floor/plasteel,/area/hallway/secondary/exit{name = "\improper Departure Lounge"})
"cWF" = (/obj/structure/cable,/obj/machinery/power/tracker,/turf/simulated/floor/plating/airless,/area/solar/starboard)
"cWG" = (/obj/machinery/atmospherics/pipe/manifold/supply/hidden{dir = 4},/turf/simulated/floor/plasteel,/area/hallway/secondary/exit{name = "\improper Departure Lounge"})
"cWH" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/machinery/navbeacon{codes_txt = "patrol;next_patrol=9.4-Escape-4"; location = "9.3-Escape-3"},/turf/simulated/floor/plasteel{dir = 2; icon_state = "warning"},/area/hallway/secondary/exit{name = "\improper Departure Lounge"})
"cWI" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/machinery/navbeacon{codes_txt = "patrol;next_patrol=9.3-Escape-3"; location = "9.2-Escape-2"},/turf/simulated/floor/plasteel{dir = 2; icon_state = "warning"},/area/hallway/secondary/exit{name = "\improper Departure Lounge"})
"cXA" = (/obj/structure/disposalpipe/segment,/turf/simulated/floor/plating/airless,/area/space)
"cXB" = (/obj/structure/disposalpipe/trunk{dir = 1},/obj/structure/disposaloutlet,/turf/simulated/floor/plating/airless,/area/space)
@@ -7978,13 +7990,13 @@ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaiaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaafaagaaeaaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaaaaahaaaaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaaaaahaaaaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahaaaaagaahaajaahaagaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahaafaaeaagaagaaaaaaaaaaakaaaaaaaaaaagaafaaeaaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaaaaaaaahaahaaaaaaaaaaakaahaahaaaaahaahaaaaahaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaaaaaaaahaahaaaaaaaaaaakaahaahaaaaahaahaaaaahaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaagaahaalaalaalaalaalaahaamaahaalaalaalaalaalaaaaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaagaahaaoaanaanaanaanaapaaraaqaasaasaasaasaataahaagaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahaagaahaauaauaauaauaauaahaaraahaauaauaauaauaauaahaafaahaahaahaahaafaaeaafaahaahaahaaaaahaahaahaaaaahaahaahaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
@@ -8013,7 +8025,7 @@ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahaaaahsalJahsalKalLalMalNahsalOalPalQalRalSalTalUakUahzaahalWalWagAalWalWaaaahealXalXahCajnalZamaambamcamdameamfamgamhamgamiamjamjamkamlammamnamoamoampamqamramsamtamuamvamwamxamyamzamAamBamCamDamEaeramFaiYaiYamGaiaaheamHaltahiagzamIamJamKamLamMamNajiamOajwafxafxafxafxafxamQacYamRaocanQakrabjabjaahajoamSamTamUamVamWajoaahakqajkamYajkakqaaaaahaaaaaaaaaaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahaahahsamZanaanaanaanbancahsandaneanfahzalVaniaIpaKiahzalWalWankanlakBalWaheaheajKannahCajNanpanqanransantanuahJanvanwanxadRajRanzanAajUajSanDanEanFahJanGanHanIamtanJanKanLanManNanOanPaiUaiUaoEaeraeraheaheaheanRaheaheaheanSanTagzagzanUanVanWanXanXanYamOajwafxafxafxafxafxamQaoaaobaocakraocaocajVaocajoaoeaofakmaogaohajoaahajkajkalIajkajkaahaahaaaaaaaaaaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaatJaQxaaaaaaatJaaaatJaaaaaaaahaahaahaaaaaaaaaaaaaaaaahaaaaahaaaaahaaaahsaomaonaopaooaoqaorahsaosaneaotalWaouaotaotaotaovalWaowaoxaoyaozalWakbaoBaoCaoDaoHaoFaoGapAaoIaoJaoKaoSadRahBaoNahBadRadRakeaoQakeadRaoRaoTapBakjaoVanHaoWaoXamtaoYaoZapaapbanOapcapdapeapfapgaphapgapiapjapkaplapjapmapnapoappappapqaprapsaptaptaptapuajwafxafxafxafxafxamQapwapxaocaobapNareauVaqLajoakHakGapEakTakXajoaahapHapIapJapKapHaaaaahaaaaaaaaaaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaatJatJaahaahatJatJatJaahaaaatJatJaraatJatJaaaaahalWalWagAalWaahaaaaahaahaahaahaahalWagAahsahsapMatzarcahsahsahsaotapOalQapPalSapQapRaotapSalWalOapTapUalWalWapVapWapXapYahCahCahCagKagKapZaqaaoLaljaqcaqdaqeaqfaqgalDanDaqiadRanDakVamPahJaqkanHaqlaqmaqnaqoaqpaqqaqranOaqsaqtaqtajQajQajQajQaquaheaheaheaheaheaqvaqwaqxaqyaqzaqAaqBaqCaqDaqEaqFaqGaqHaqHaqHaqHaqHaqIaqJaqKaocapxapxapxapxarpajoaqMaqNaqOaqPalHajoaahapHaqRaqSaqTapHaaaaahaahaahabjaahaahaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaatJatJaahaahatJatJatJaahaaaatJatJaraatJatJaaaaahalWalWagAalWaahaaaaahaahaahaahaahalWagAahsahsapMatzarcahsahsahsaotapOalQapPalSapQapRaotapSalWalOapTapUalWalWapVapWaiaapYahCahCahCagKagKapZaqaaoLaljaqcaqdaqeaqfaqgalDanDaqiadRanDakVamPahJaqkanHaqlaqmaqnaqoaqpaqqaqranOaqsaqtaqtajQajQajQajQaquaheaheaheaheaheaqvaqwaqxaqyaqzaqAaqBaqCaqDaqEaqFaqGaqHaqHaqHaqHaqHaqIaqJaqKaocapxapxapxapxarpajoaqMaqNaqOaqPalHajoaahapHaqRaqSaqTapHaaaaahaahaahabjaahaahaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaQxcrMaahatJaahcrMaahatJatJaahatJatJatJatJatJaaaaaaaaaalWaqUaqValWaqWaqXaqXaqXaqXaqXaqYalWaowaqZalWarEasaalOardasbalWarfargarhalWaouapTariarjarkalWalYapRarmalWarnapWahfaroascahearqahCarrarsansaqaameartaruarvarwarxaryarzarAarBaqjanDarDasdahJarFarGarHarIarJarKarLarMarLarNarOarParQarQarRarSajQaquahearTarUarVarWarWarWarWarWarXarYarZarWarWarWarWarWaseaocashasCasBaocaocapxaocatTasfasgapxaKuasiasjaskaslasmasnajoajVapHasoaspasqapHaaaaahaaaaaaabjaahaaaaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaatJaahatJaahatJatJatJaraaahaahaahatJatJaahaaaaahaahagAasrassastasuasvasvasvasvasvaswasxasyaszasAauvauRasvasDasvasEasFasGaheaheaheaheaheaheaheaheaheaheasHaheasIaheaheaheaheaheaheahCamXasKansaqaaoLaljasLasMasNasOasPasQasRasSajSasTasUasVakjasWasXasYasZataatbatcatdateatfatgaqtathatiathatjajQatkatlatmatnaiYarWatoatpatqatratsattatuarWatvatxatwarWaocaocapxaqJasfapwaocapxaocasBapxatyapxaocatAatBajoajoatCatDajoatEapHapHatFatGapHatHajVatHatHatIatHaaaaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaatJatJatJatJatJaahatJatJaahcrMatJatJaahaahaahaahalWalWatKalWalWatLatMatMatMatMatMatNalWalWalWalWatOavbatPatPatPatPatQatRaheatSavcatUatVatWatXatYatZauaaubaucaudaheanmaoAaoAaoAaoMahAaukaulansaumavdavgajSauoadRadRanBanyanoakjadRautanBahJahJajQanCaLAaLaanCajQaodanZajQaoiaqtaqtauBauBauBajQajQauCaheaiYauDauEarWauFauGauHauIauJauKauLauMauNauPauOarWauQaocaxqauSauTauUaocauVaocaocaocauWaocaocauXauYauZajoajoajoajoauVapwapxavaazvatHaBwaBjaveatHaobatHaahaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
@@ -8025,10 +8037,10 @@ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahatJatJatJatJatJatJatJaahatJaahaahatJatJaahaahalWalWardawwalWalWaaaauraxtaxtaxtaBLaBuaBvaBvaCTaBxaByaBzaBAaBBaBCaBDaBEaCVaBGaDHayWayYaheaaaaxCaAraAqaBJaAsaBKaxCaaaaoOaFwawDawDaOZaBOauAaboaBQaAyaBRagKaBQaAyaBSagKaBQaAyaBTagKaBUaBVaBWagKaBXaBYaBZaCaaCbazxaCcaCdaCeaCgaCfaChazBaCiapjapjapjaCjaCkaykaClaCmaCnaykaCoaCpaCpaCqaCraCsaCtarWarWarWarWarWaocaCuatHaSuaCwaCxaCyavraCAaCBaCCaCCaCCaCCaCDaCEaCFavsaCHayFaCIaahaahaaaaaaaaaaahaahaaaaaaaahaaaatJazRayFazXaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahaaaaaaaaaatJatJatJatJatJaahaahaahatJatJatJaafaaaaahaahaahalWalWalOalOaCJagAaaaaaaaqQaxsaxsaxsaqQarCaCLaCMaCNaBxaBvaCOaCPavtayUaCRaCSaEhaCUaEsayWayYaheaahaxCaCWaCzaCYaCXaTEaxCaaaaoOaPeaPeaPeaoOausaDeaboavvavxavwahCavvavxavwahCavvavxavwahCaxDazqayPahCahCauhazrahCaDnazxaDoaDpaDqaDsaDraDtazBaDuaheaheaheaDvaheaykaDwaDxaykaykaDyaDzaDAaDBaDCaDDaDEavRaDFaDGatwarWaFDaDIatHaDJaDKaDLaDLaDMawzazLaDOaDPaDQaDQaDQaDRaDSawAaDUawBaaaaaaaahaaaaaaaaaaahaaaaaaaaaaahaaaaaaaahayFazXaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahaahaahaahaahaahaahaahaahaahaahaahaahaahaDWaDXaDWaagaaaaahaaaaahalWaHcaFHakBawwalWalWaaaauraPPaPfaPQaurarCarCarCayUaEdaBvaEeaCPaEfayUaEgaHFaEiaEjaEkayWayYaheaaaaxCaDbaDaaDTaEmaxCaxCaaaaPUaQuaQuaQuaQvaEraxvaEraEtaEuaEtaEvaEtaEuaEtaEwaEtaEuaExaEyaEzaEAaEBaxEaAJaEEaDmahCavNazBaEGaEHaEIaEJaEKaELazBaEMaykaENaEOaEPaEQaEQaERaESaETaEUaEVaEWaEXaEYaEZaFaauLaFbaFcaFeaFdarWaqKaDIatHaFfaFgaFhaFiaFjaFkaFlaDVaFnaFoaFoaFoaFpaFqawAaDUawBaaaaahaahaahaahaahaahaahaahaahaahaahaaaaahayFazXaahaaaaaaaaaaaaaaaaaaaaaaaaaacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahaaaaahaaaaaaaahaahaaaaDWaFsaDWaahaahaahaahaahalWaWhaotaotaFtaFualWaaaaQyarlaQzarlaQBaahaahaaharCaFzaFAaFBaFCaHIayUaFEaFFaWiaIfaFIayWayYaheaaaaahaaaaDYaFLayNaaaaahaaaaErausausausaEraErayOaFOaExaFPaFQaFRaFSaFTaFTaFUaFTaFVaFSaFWaFXaFYaFZaGbaEFaGdaGcahCavNazBazBayQaGfazBaDZazBazBaDuaykaykaykaGhaGiaGjaGkaGlaGmaGnaGoaGpaGqaGraGraGsaGtarWarWarWarWarWaqJaDIatHaGuaGvaGwaGxaGyayRaGAaGBaGCaGDbcmaGFaGGaGHawAaDUawBawBaahaGKaaaaaaaaaaaaaGKaaaaaaaGKaahaahaahayFaGLaahaahaahaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahaaaaahaaaaaaaahaahaaaaDWaFsaDWaahaahaahaahaahalWaWhaotaotaFtaFualWaaaaQyarlaQzarlaQBaahaahaaharCaFzaFAaFBaFCaHIayUaFEaFFaWiaIfaFIayWayYaheaaaaahaaaaDYaFLayNaaaaahaaaaErausausausaEraErayOaFOaExaFPaFQaFRaFSaFTaFTaFUaFTaFVaFSaFWaFXapXaFZaGbaEFaGdaGcahCavNazBazBayQaGfazBaDZazBazBaDuaykaykaykaGhaGiaGjaGkaGlaGmaGnaGoaGpaGqaGraGraGsaGtarWarWarWarWarWaqJaDIatHaGuaGvaGwaGxaGyayRaGAaGBaGCaGDbcmaGFaGGaGHawAaDUawBawBaahaGKaaaaaaaaaaaaaGKaaaaaaaGKaahaahaahayFaGLaahaahaahaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahaaaaahaaaaaaaaaaahaaaaDWaDXaDWaDWaySaySaySaDWaDWaDWaDWaDWaGQaGRalWaaaaaaaaaaaaaaaaaaaaaaaaaaharCaGTaGUaGVaGWaGXayUaGYaGZayWayWayWayWaEaaheaHbaElazfaEnaHfazhazkazjaHbaEraHjaHkaHkaHlaHmaHnaHoaHpaHqaHraHsaHtaHuaHvaHwaHuaHxaHyaHzaHAaHBaHCazmaGPaHEaGSahCavNaHHazBaznaHJazBaHKaHLaplaHMaykaHNaHOaHPaHQaykaHRaHSaHTaykaHUaHVaHWaHXaHWaHYaHZaIaaIbaIcaIdarWapxaDIatHaIeazpaIgaIhaIiaCAaIjaIkaGCaIlayFayFaImbbLayFawBawBawBaahaaaaaaaaaaaaaaaaIqaaaaaaaaaaahaahaahayFazXaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahaaaaaaaaaaaaaaaaahaDWaDWaIraIsaItaIuaIuaIvaIwaIxaIyaIzaDWaDWawwalWaaaaaaaaaaaaaaaaaaaaaaaaaahayUayUayUazsaICayUayUaIDaIEaIFaIGaIHaIIaIJaIKaILaFJaINaGgaIOaINaIPaIQaIRaEraISaITaIUaIVaIVaztaIVaIVaIVaIVaIVaIVaIVaIVaztaIVaIXaIYaIZaJaaJaaJaaJbaJbaJbaJbaJbaJaaJcaJaaJdaJdaJdaJdaGMaJdaDuaykaykaykaJfaJgaykaJhaykaJiaykaJjaJkaJlavRaIAaJnaJoavRaJpaJqaJrarWaJsaJtatHayFayFayFayFayFaCAaJuaJvaGCaJwayFaJxaJyaJzaJAaJzaJBawBaahaaaaaaaahaahaahaahaahaaaaaaaahaahatJayFazXaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahaahaaaaaaaaaaaaaaaaDWaJCaJCaJCaIuaIuaIuaIuaIuaIuaJCaJCaJDaDWawwagAaaaaaaaaaaaaaaaaaaaaaaaaaahaahazwaJGaLbaJHaJIaJJaJKaJLaJMaJNaJOaJPaJQaJRaIIaJSaJTaJUaJVaJWaJXaJYaJZaKaaKbaKcaKdazyaaaaaaaaaaahaaaaaaaaaaahaaaaaaaaaazAaKfaKgaKhaJaaXbaKjaKkaKlaKmaKnaKoaKpaKqaJaaKraKsaKtaXLaKvaJdaKwaykaKxaKyaGiaJgaykaKzaykaKAaykaKBaKCaKDaKEaKEaKEaKEaKEaKEaKEaKEaKEaocaKFatHaKGaKHaKIaKJayFaKKaFgaJvaKLaKMaKNaKOaKPaKQaKRaKSaKTawBaahaGKaahaahaAaazZaAbaahaKUaaaaahaaaaraayFazXaahaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahaaaaaaaaaaaaaaaaahaDWaDWaIraIsaItaIuaIuaIvaIwaIxaIyaIzaDWaDWawwalWaaaaaaaaaaaaaaaaaaaaaaaaaahayUayUayUazsaICayUayUaIDaIEaIFaIGaIHaIIaIJaIKaILaFJaINaGgaIOaINaIPaIQaIRaEraISaITaIUaIVaIVaztaIVaIVaIVaIVaIVaIVaIVaIVaztaIVaIXaIYaIZbcgaJaaJaaJbaJbaJbaJbaJbaJaaJcaJaaJdaJdaJdaJdaGMaJdaDuaykaykaykaJfaJgaykaJhaykaJiaykaJjaJkaJlavRaIAaJnaJoavRaJpaJqaJrarWaJsaJtatHayFayFayFayFayFaCAaJuaJvaGCaJwayFaJxaJyaJzaJAaJzaJBawBaahaaaaaaaahaahaahaahaahaaaaaaaahaahatJayFazXaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahaahaaaaaaaaaaaaaaaaDWaJCaJCaJCaIuaIuaIuaIuaIuaIuaJCaJCaJDaDWawwagAaaaaaaaaaaaaaaaaaaaaaaaaaahaahazwaJGaLbaJHaJIaJJaJKaJLaJMaJNaJOaJPaJQaJRaIIaJSaJTaJUaJVaJWaFYaJYaJZaKaaKbaKcaKdazyaaaaaaaaaaahaaaaaaaaaaahaaaaaaaaaazAaKfaKgaKhaJaaXbaKjaKkaKlaKmaKnaKoaKpaKqaJaaKraKsaKtaXLaKvaJdaKwaykaKxaKyaGiaJgaykaKzaykaKAaykaKBaKCaKDaKEaKEaKEaKEaKEaKEaKEaKEaKEaocaKFatHaKGaKHaKIaKJayFaKKaFgaJvaKLaKMaKNaKOaKPaKQaKRaKSaKTawBaahaGKaahaahaAaazZaAbaahaKUaaaaahaaaaraayFazXaahaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaaaaaaaaaaaaaaaaaaaahaaaaaaaaaaaaaaaaaaaDWaKVaIuaIuaIuaIuaIuaIuaIuaIuaJCaJCaJCaHaaKXalWaaaaaaaaaaaaaaaaaaaaaaaaaAtazwazwaLcaLdaLeaLeaLfaLgaLhaLiaLjaLkalWaLlalWalWalWalWaLmaLnaAuaLpaLqaAuaLnaLnaLnaLnaLraaaaaaaLsaLsaLsaLsaLsaLsaLsaaaaaaaIVaLtaLuaLvaLwaLxaKoaLyaLzaXVaLBaLCaLDaLEaJaaLFaLGaLHaLIaLJaJdaLKaykaykaykaLLaLLaykaykaykaykaykaLMaLNaLOaKEaLPaLQaLRaLSaLTaLVaLUaKEaLWaDIatHaKHaKHaLXaKRaLYaDKaLZaMaaMbaMcayFaMdaMeaMfaMgaMhaMiawBaahaaaaaaaahaAvaMkaAwaahaaaaaaaahaahatJayFazXaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahaaaaaaaaaaaaaaaaahaDWaMlaIuaIuaIuaIuaMmaIuaMnaIuaIuaJCaMoaDWaCJalWaaaaaaaaaaaaaaaaaaaaaaaaaJeaIMaJeaMwaMsaMtaMuaMvaNjaMxaMyaMzaMAaMBaMCaMDaMDaMEaMDaMFaLnaZpaMHaMIaMJaMKaMLaMMaMNaMOaMPaMQaMQaMRaMSaMTaMUaMVaMWaMWaMXaMYaMZaHyaKhaJaaNaaKoaNbaKoaNcaKoaNdaKoaKoaJaaNeaNfaLHaNgaNhaJdaNiaNkaPjaNOaNlaNmaNnaNoaNpaNqaNraNsaNtaNuaKEaNvaNwaNwaNwaNxaNzaNyaKEaNAaDIatHaNBaNBaNCaKRaLYaGvaNDaNEaNFaNGaNHaNIaNJaNKaNLaNMaKTawBaahaaaaNNaahaBMaBtaBNaahaahaGKaahaahaahayFazXaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaySaIuaIuaIuaIuaIuaIuaIuaIuaIuaIuaNPaDWaDWaNQalWaahaaaaaaaaaaaaaaaaaaaaaaNRaNSaNRaNTaMsaNUaNUaNVaNUaLhaNWaNXaNYalWalWalWalWalWalWawwaLnaNZaOaaObaOcaOdaOdaOdaOeaLraaaaLsaBPaOgaOgaOgaOgaOgaCvaLsaaaaIVaOiaIYaIZaJaaOjaOkaOlaKoaOmaKoaOnaOoaKoaOpaOqaOraOsaOtaOuaJdaOvaOwaOxaOxaOxaOyaOzaOzaOAaOAaOBaOCaODaOEaKWaOGaOHaOHaOHaOIaOKaOJaKEaOLaDIatHaNBaOMaONaOOayFaOPaFgaOQaGCaORayFaOSaOTaOUaOUaOUaOVawBaahaaaaaaaahaahaahaahaahaaaaaaaahaaaaahayFazXaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
@@ -8036,49 +8048,49 @@ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaBaRXaRRaRXaaEaDWaIuaIuaIuaIuaIuaIuaIuaIuaIuaQAaDgaDWarfaQCalWaaaaaaaaaaaaaaaaaaaaaaDhaNRaQDaNRaNTaMsaNUaNUaNVaNUaLhaLiaQEaQFaQGaQHaQIaQJaQKalWaQLaQMaQNaOaaOaaQOaQPaOaaQQaQRaLraaaaDiaDjaQUaQVaQWaQVaQUaQXaDkaaaaIVaIXaQZaRaaJaaDlaDlaDlaDlaReaDlaDlaDNaDlaJaaJdaMpaRiaMqaJdaJdaRkaPVaPXaPYaRlaRmaPVaPWaPYaPYaPXaRnaRoaRpaTyaRraOHaOHaRsaOIaRtaRhaKEaRVaRwatHaEbaRyaEoaEcaRBaRCaFgaOQaGCaRDaGEaEpaRFaRGawAaDUawBawBaahaGKaaaaaaaGKaaaaaaaaaaaaaGKaahaahaahayFaGLaahaahaahaahaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaQxaaaaRIaRIaRIaRIaRJaRIaRIaRIaRIaRJaRIaRIaRIaRIaRJaRIaRIaRIaRIaaaaQxaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaKaRXaSgaRXaaKaDWaMlaJCaIuaIuaIuaIuaIuaRLaIuaRMaEqaDWaROaxxalWaaaaaaaaaaaaaaaaaaaaaaaaaRPaRQaRPaTzaMsaNUaRSaUfaRUaURaRWaLhaECaRYaRZaSaaSbaScalWaSdaLnaSeaOaaOaaSfaEDaShaQQaFmaLraaaaLsaSjaSkaQUaSlaOgaSmaSnaLsaaaaIVaSoaLuaLvaSpaSqaSraSraSraKqaSraSraSsaStaJaaZtaSvaSwaSxaSyaSzaSxaSAaSBaSBaSCaSDaSEaSFaSGaSHaSIaSFaSJaSKaKEaSLaSMaSNaSOaSPaSQaRuaKEapxaSSatHaSTaSUaSVaFraSXaSYaSZaTaaTbaTcaTdaTdaTeaTfawAaFvawBaThaahaahaahaahaahaahaahaahaahaahaahaaaaahayFazXaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaQxaTiaTjaTkaTkaTkaTlaTkaTkaTkaTkaTmaTkaTkaTkaTkaTnaTkaTkaTkaToaTpaQxaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahaahaTqaSWaSiaXBaTqaDWaIvaJCaTuaTvaTwaIuaIuaIuaIuaRMaRNaDWawwaotagAaaaaaaaaaaaaaaaaaaaaaaaaaAtazwazwaUSaMsaNUaNUaNVaNUaLhaRWaFxaFyaRYaTBaTCaTDbazalWawpaLnaTFaTGaTGaTHaTIaOaaQQaTJaLraahaLsaLsaLsaTKaTLaTMaLsaLsaLsaahaIVaLtaTNaIZaTOaTPaSraSraSraTQaSraSraTRaKqaTOaNlaTSaTTaTUaPWaFKaPWaPVaPXaPWaTWaPWaTXaPXaPYaPWaPYaPXaTYaTZaKEaUaaUbaUcaUdaUeaLVaNyaKEaUTaDIatHaUgaUhaUiaUjaUkaUlaUmaUnaUoaUpaUqaUqaUraUsawAaDUawBaaaaaaaahaaaaaaaaaaaaaahaaaaaaaUuaaaaaaaahayFazXaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaQxaUvaUwaUxaUyaUyaUzaUyaUyaUyaUyaUAaUyaUyaUyaUyaUzaUyaUyaUBaUwaUCaQxaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahaaaaTqaUDaUEaUFaUGaDWaUHaJCaUIaFMaUKaJCaJCaJCaULaUMaUNaDWaUOaUPalWaahaaaaaaaaaaaaaaaaaaaaaaahaahazwaUSaWaaMtaMuaYQbaGaZJaUUaUVaUWaUXaUXaUXaUXaUXalWaUYaUZaVaaVbaVbaVcaVdaVeaVfaVgaFNaaaaaaaaaaLsaLsaViaLsaLsaaaaaaaaaazAaKfaVjaIZaXWaVkaVlaVmaVnaKqaKqaVoaVpaKqaXWaNlaVqaVraVsaVtaVuaVtaVvaVwaVxaVyaVtaVtaVtaVtaVtaVtaVzaVAaVBaKEaKEaKEaKEaVCaKEaKEaKEaKEaocaDIatHaVEaVDaVDaEcaVGaVHaVIaVJaVKaVLaVMaVNaVOaVPavsaVQayFaaaaahaahaaaaaaaaaaaaaahaaaaaaaahaahatJazRayFazXaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaQxaUvaUwaUCaaaaaaaUzaaaaaaaaaaaaaUAaaaaaaaaaaaaaUzaaaaaaaVRaUwaUCaQxaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahaaaaTqaTqaVSaVTaTqaTqaTqaVUaTqaTqaVVaVWaTqaTqaTqaVXaTqaTqaVYalWalWaahaaaaaaaaaaaaaaaaaaaaaaahaahaVZbaHaMsaNUaNUaNVaNUaLhaWbaLhaWcaUXaWdaWeaWfaWgalWawwaLnbbTbbYaWjaWkaWlaGaaWnaWoaLraWpaGeaWpaWraGzaWtaWuaWraWpaGeaWpaIVaWvaWwaWxbcgaJaaJaaJaaJaaWyaWzaWAaKqaWBaJaaNlaWCaPZaWDaWEaWEaWEaWEaocaocaocaWFaWGaWHaWIaWJaHGaWEaWKaWKaocaWLawgaweaWMaweaWNaweaWOaweawiatHaWPaWPaWPaWPaWQaWRaWSaWTaWUaGIaWWaFgaWXaWYayFayFayFaahaahaGJaWZazRazRazRazRazRazRaGJazRaGNayFayFazXaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaQxaUvaUwaUCaaaaaaaUzaUzaUzaUzaUzaUAaUzaUzaUzaUzaUzaaaaaaaVRaUwaUCaQxaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahaaaaaaaGObdgaXcaXdaXeaXfaXcaXgaXhaXiaXhaXjaXkaXhaXlaJmaTVaXoaXpalWaaaaaaaaaaaaaaaaaaaaaaaaaahaVZaHdaUSaMsaNUaNUaHeaHgaLhaXsaXtaXuaXvaXwaXxaXyaXzalWawwaLnaLnaLnaAuaAuaHhaLraXDaXEaLraXFaXGaXHaWraXIaXJaXKaWrbdlaXMaXNaXOaXPaXQaXRaXSaXTaXUbeOaJaaJaaXWaXXaXWaJaaJaaFKaYaaYbaFKbcTaYcaYdaYeaYfaYgaocaocaocaocaYhaocaocaocaocaocaocaDIapwapxaYiaYiaYiaYiaYiaYiaYiaWPaYjaYkaYlaWPaHiaYnaWPaYoaYpaCAaCAaYqaYraYsazOaYtazOaYuazRaYvazRayHayIaYwayIayKazRaYvazRayLazWazXaahaahaagaagaafaahaafaagaagaafaafaagaagaagaafaahaahaahaahaahaQxaTiaYxaYyaYyaYyaYyaYyaYzaYzaYzaYAaYzaYzaYzaYyaYBaYyaYyaYyaYCaTpaQxaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahaahaaaaHDaYEaYFaYFaYGaYFaYFaYFaYHaYIaYJaYKaYLaYLaYLaYMaYNaYOaYPalWaaaaaaaahaahaaaaaaaahaahaahaVZbgqbgjbiRaYRaNUbjwaInaYUaYTaYVaYWaYXaYYaYZaZaaZbalWaZcaZdaZeaZfaZgaZhaZiaZjaZkaZlaZmaZnaZoaZnbeTaZqaZraZsbeZaZnbGzaZuaZvaZxaZwaZzaZyaZAaZCaZDaZDaZDaZEaZFaZDaZDaZGaZDaZHaZIaZDaZDaZDaZKaZLaocaZMaZNaZOaZPaZQaZRaZQaZSaZQaZTawhaWOawiaqJapxaYibfWaZUaZVaZWbhfaZZaWPbaababbabbacbabbadaWPbaeaWUbafbagbagbagbagbagbahayFbaiayIbajayIazVayFayFayFbaiayIazVayLayLayFaahaahaaaaaaaaaaaaaahaaaaaaaaaaaaaaaaaaaahaaaaaaaaaaaaaaaaaaaaaaQxaUvaUwaUCaaaaUzbakbakbalbambanbaobapbambaqbakbaraUzaaaaVRaUwaUCaQxaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahaahaHDaHDbauaHDaTqaHDbawaHDaYEaYFbaxbayaHDbawaHDbhPbaAbaBbaCalWalWalWalWagAagAagAalWalWalWaVZbkHbaJbaJbaJbaJbaKaNUbaLbaMbaNbaOaUXaUXaUXaUXaIBalWalWbaQalWalWbaRbaSbaTbaUbaVbaWbaXbaUbaVbaYbaZbaWbbabaUbaUbaUaZBbbbbbcbbebbdbbfbbgbbhbaUbaUbaUbaUbbjbbkbaUbaUbaXbblbbmbaUbaUbaUbaUbbnbbobbpbbpbbpbcnbbpbbpbbpaocbbqaocaDIaocaocbbrbbrbbrbbrbbsbbtbbtbbubbvbbwaWPbbxbbyaIWbbAbbBbbCaWPbbDbbEbbFbagbbGbbHbbIbagbbJayFayFayFayFayFayFayFbbKayFayFayFayFayFbbLayFaahaQxaQxaafaQxaQxaQxaQxaafaQxaQxaQxaQxaafaQxaQxaQxaQxaQxaQxaQxaQxaTiaUwaUCaaaaUzbakbanbbMbbNbbObbPbbQbbNbbRbanbaraUzaaaaVRaUwaUCbbSbbSaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahaaaaHDaahaaaaahaaaaHDbbUaHDbbVbbVbbWbbXaHDbbUaHDaHDaTqbbZbcabcbasuasvbccasvbcdasvbcebcfaswbeqbchaJEaJEaJFaKYaKeaJEbkIbcobcpbcqbcobcrbcsblvbctbcubcvbcwbcxbcybczbcAbcBbcCbcCbcDbcEbcFbcGbcHbcIbcJbcKbcKbcKbcKbcKbcKbcKbcLbcMbcNbcNbcNbcNbcNbcNbcNbcNbcObcPbcQbcRbcNbcSbcObcNbcNbmTbcUbcVbbpbcWbcXbcYbcZbdabbpbdbbdcaocbddaocaaabbrbdebdfbbrbjzbdhbdibdjbdkbmIaWPbdmbdnbdobdpbdqbdraWPbdsbdtbdubagbdvbdwbdxbagbdyaKRaKRbdzaKRbdAaKRaKRaKRbdBaKRbdCbdDbdCbdDabjabjaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaQxaaaaRJbdEaUwaUCaaaaUzbakbdFbdGbakbdHaKZbdJbakbdKbdLbaraUzaaaaVRaUwbdMaaabbSaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahaaaaTqaUDaUEaUFaUGaDWaUHaJCaUIaFMaUKaJCaJCaJCaULaUMaUNaDWaUOaUPalWaahaaaaaaaaaaaaaaaaaaaaaaahaahazwaUSaWaaMtaMuaYQbaGaZJaUUaUVaUWaUXaUXaUXaUXaUXalWaUYaUZaVaaVbaVbaVcaVdaVeaVfaVgaFNaaaaaaaaaaLsaLsaViaLsaLsaaaaaaaaaazAaKfaVjaIZaXWaVkaKqaVmaVnaKqaKqaVoaVpaKqaXWaNlaVqaVraVsaVtaVuaVtaVvaVwaVxaVyaVtaVtaVtaVtaVtaVtaVzaVAaVBaKEaKEaKEaKEaVCaKEaKEaKEaKEaocaDIatHaVEaVDaVDaEcaVGaVHaVIaVJaVKaVLaVMaVNaVOaVPavsaVQayFaaaaahaahaaaaaaaaaaaaaahaaaaaaaahaahatJazRayFazXaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaQxaUvaUwaUCaaaaaaaUzaaaaaaaaaaaaaUAaaaaaaaaaaaaaUzaaaaaaaVRaUwaUCaQxaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahaaaaTqaTqaVSaVTaTqaTqaTqaVUaTqaTqaVVaVWaTqaTqaTqaVXaTqaTqaVYalWalWaahaaaaaaaaaaaaaaaaaaaaaaahaahaVZbaHaMsaNUaNUaNVaNUaLhaVlaJXaWcaUXaWdaWeaWfaWgalWawwaLnbbTbbYaWjaWkaWlaGaaWnaWoaLraWpaGeaWpaWraGzaWtaWuaWraWpaGeaWpaWbaWvaWwaWxaXNaJaaJaaJaaJaaWyaWzaWAaKqaWBaJaaNlaWCaPZaWDaWEaWEaWEaWEaocaocaocaWFaWGaWHaWIaWJaHGaWEaWKaWKaocaWLawgaweaWMaweaWNaweaWOaweawiatHaWPaWPaWPaWPaWQaWRaWSaWTaWUaGIaWWaFgaWXaWYayFayFayFaahaahaGJaWZazRazRazRazRazRazRaGJazRaGNayFayFazXaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaQxaUvaUwaUCaaaaaaaUzaUzaUzaUzaUzaUAaUzaUzaUzaUzaUzaaaaaaaVRaUwaUCaQxaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahaaaaaaaGObdgaXcaXdaXeaXfaXcaXgaXhaXiaXhaXjaXkaXhaXlaJmaTVaXoaXpalWaaaaaaaaaaaaaaaaaaaaaaaaaahaVZaHdaUSaMsaNUaNUaHeaHgaLhaXsaXtaXuaXvaXwaXxaXyaXzalWawwaLnaLnaLnaAuaAuaHhaLraXDaXEaLraXFaXGaXHaWraXIaXJaXKaWrbdlaXMaXSaXOaXPaXQaXRaXTaYVaXUbbdaJaaJaaXWaXXaXWaJaaJaaFKaYaaYbaFKbcTaYcaYdaYeaYfaYgaocaocaocaocaYhaocaocaocaocaocaocaDIapwapxaYiaYiaYiaYiaYiaYiaYiaWPaYjaYkaYlaWPaHiaYnaWPaYoaYpaCAaCAaYqaYraYsazOaYtazOaYuazRaYvazRayHayIaYwayIayKazRaYvazRayLazWazXaahaahaagaagaafaahaafaagaagaafaafaagaagaagaafaahaahaahaahaahaQxaTiaYxaYyaYyaYyaYyaYyaYzaYzaYzaYAaYzaYzaYzaYyaYBaYyaYyaYyaYCaTpaQxaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahaahaaaaHDaYEaYFaYFaYGaYFaYFaYFaYHaYIaYJaYKaYLaYLaYLaYMaYNaYOaYPalWaaaaaaaahaahaaaaaaaahaahaahaVZbgqbgjbiRaYRaNUbjwaInaYUaYTbbeaYWaYXaYYaYZaZaaZbalWaZcaZdaZeaZfaZgaZhaZiaZjaZkaZlaZmaZnaZoaZnbeTaZqaZraZsbeZaZnbGzaZuaZvaZxaZwaZzaZyaZAaZCaZDaZDaZDaZEaZFaZDaZDaZGaZDaZHaZIaZDaZDaZDaZKaZLaocaZMaZNaZOaZPaZQaZRaZQaZSaZQaZTawhaWOawiaqJapxaYibfWaZUaZVaZWbhfaZZaWPbaababbabbacbabbadaWPbaeaWUbafbagbagbagbagbagbahayFbaiayIbajayIazVayFayFayFbaiayIazVayLayLayFaahaahaaaaaaaaaaaaaahaaaaaaaaaaaaaaaaaaaahaaaaaaaaaaaaaaaaaaaaaaQxaUvaUwaUCaaaaUzbakbakbalbambanbaobapbambaqbakbaraUzaaaaVRaUwaUCaQxaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahaahaHDaHDbauaHDaTqaHDbawaHDaYEaYFbaxbayaHDbawaHDbhPbaAbaBbaCalWalWalWalWagAagAagAalWalWalWaVZbkHbaJbaJbaJbaJbaKaNUbaLbaMbaNbaOaUXaUXaUXaUXaIBalWalWbaQalWalWbaRbaSbaTbaUbeObaWbaXbaUbaVbaYbaZbaWbbabaUbaUbaUaZBbbbbbcboubmwbbfbbgbbhbaUbaUbaUbaUbbjbbkbaUbaUbaXbblbbmbaUbaUbaUbaUbbnbbobbpbbpbbpbcnbbpbbpbbpaocbbqaocaDIaocaocbbrbbrbbrbbrbbsbbtbbtbbubbvbbwaWPbbxbbyaIWbbAbbBbbCaWPbbDbbEbbFbagbbGbbHbbIbagbbJayFayFayFayFayFayFayFbbKayFayFayFayFayFbbLayFaahaQxaQxaafaQxaQxaQxaQxaafaQxaQxaQxaQxaafaQxaQxaQxaQxaQxaQxaQxaQxaTiaUwaUCaaaaUzbakbanbbMbbNbbObbPbbQbbNbbRbanbaraUzaaaaVRaUwaUCbbSbbSaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahaaaaHDaahaaaaahaaaaHDbbUaHDbbVbbVbbWbbXaHDbbUaHDaHDaTqbbZbcabcbasuasvbccasvbcdasvbcebcfaswbeqbchaJEaJEaJFaKYaKeboHbkIbcobcpbcqbcobcrbcsblvbctbcubcvbcwbcxbcybczbcAbcBbcCbcCbcDbcEbcFbcGbcHbcIbcJbcKbcKbcKbcKbcKbcKbcKbcLbcMbcNbcNbcNbcNbcNbcNbcNbcNbcObcPbcQbcRbcNbcSbcObcNbcNbmTbcUbcVbbpbcWbcXbcYbcZbdabbpbdbbdcaocbddaocaaabbrbdebdfbbrbjzbdhbdibdjbdkbmIaWPbdmbdnbdobdpbdqbdraWPbdsbdtbdubagbdvbdwbdxbagbdyaKRaKRbdzaKRbdAaKRaKRaKRbdBaKRbdCbdDbdCbdDabjabjaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaQxaaaaRJbdEaUwaUCaaaaUzbakbdFbdGbakbdHaKZbdJbakbdKbdLbaraUzaaaaVRaUwbdMaaabbSaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahaahaahaahaahaahaaaaHDbawaHDaHDaHDaHDaHDaHDbawaHDaaaaTqbdQbdRbdSbdSbdSbdSbdSbdSbdSbdSbdTbmMbcobcoaLoaMraLobcobcobcobdYbcobdZbeabebbecbedbeebefbegbehbeibejbcybekbcAbelbembembenbembeobembgbbeRbgbaMGaMGaMGaMGaMGaMGaMGaMGaMGaMGaMGaMGaMGaMGaMGaMGaMGbeubeubevbeubeubeubeubeubeubewbcAbexbbpbnjbezbeAbeBbeCbbpbeDbeEaocaDIajVaaaaOfbeGbeHbeIbeJbeKbeLbeMbeNbncaWPbePaOhaOFaOFaOXaOWaWPbeUbeVbeUbagbeWbeXbeYbagaOYayFayFayFayFayFayFayFayFayFawBayFayFbahayFaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahaahaahaQxbfbbfcbfdbfeaUzaUzaUzbakbffbfgbfhbakbakbakbfibfjbfkbaraUzaUzaUzbflaToaTpaQxaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaFaXCbaIaXCbdNaXCaXCbdNaXCbaIbdPbdOaTqbdQbfsbftbfubfvbfwbfxbfybfzbdSbfAbfBbfCbfDbnsbfEbnsbfEbfGbfEbfHbcobfIbfJbfKbfLbfMaPgbfObfPbfQbfRbfSaPobfUbfVbotbembfXbfYbfZbgabembhobgcbhraahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahbeuaSRbgebgdbggbgfbgibnVbeubgkbglbgmbbpbgnbgobgpboqbgrbbpaocaocaocbgsaocaaabbrbgtbgubbrbgvbgwbgxbgybgzbgAaWPbgBaPAbgDbgEbgFbgGaWPaCAbgHaCAbagbgIbgJbgKbagbgLbgLbgLaaKaaEaaaaaaaaaaaaaahaaaaaaayFbdDayFaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahaRIaRIbgMbgNaUwbgObgPaaaaaaaUzbgQbgRbgSbakbakbgTbakbakbdKbgUbgVaUzaaaaaabgWaUwaUCaQxaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaFaXCaXCbdVbdUbdXbdWbhcbhbbUqboGcDRbdXcVVcVUaHDbdQbdRaQTbhibhjbhkbhlbhmbhnbhMbhpbhqbhNbhsbhsbhtbhubhvbcobcobcobcobhwbhxbhybhzbhAaLobhCbegbehbhDbhEbhFbhGbcAbhHbembhIbhJbhKbhLbhObiQbiqbjAaahaahaQYaRcaRbaRdbhUaRfaRcaRdbhUaRfaRbaRbaRgaahaahbeubghbibbhZbicbhZbidbiebeubifbcAbigboHbbpaRjbiiaRqbbpbbpbikbilaocbinaocbimbbrbbrbbrbbraYiaYiaYibiobipaYiaWPaWPaWPaWPaWPboOboNaWPbisbitbisbagaRzbivaRAbagbiyaRHcVWcVXcVXcVYaaaaaaaaaaahaaaaaaaaaabjaaaaahaaaaaaaaaaaaaaaaacaaaaaaaaaaaaaaaaaaaaaaaaaahaahabjbiCbiDbiEbiDbiFaUCaaaaaaaaaaUzbiGbanbiHbiIbiJbiKaRKbiIbiMbanbaraUzaaaaaaaVRaUwaUCaQxaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaFaXCaXCbdVbdUbdXbdWbhcbhbbUqboGcDRbdXcVVcVUaHDbdQbdRaQTbhibhjbhkbhlbhmbhnbhMbhpbhqbhNbhsbhsbhtbhubhvbcobcobcobcobhwbhxbhybhzbhAaLobhCbegbehbhDbhEbhFbhGbcAbhHbembhIbhJbhKbhLbhObiQbiqbjAaahaahaQYaRcaRbaRdbhUaRfaRcaRdbhUaRfaRbaRbaRgaahaahbeubghbibbhZbicbhZbidbiebeubifbcAbigbprbbpaRjbiiaRqbbpbbpbikbilaocbinaocbimbbrbbrbbrbbraYiaYiaYibiobipaYiaWPaWPaWPaWPaWPboOboNaWPbisbitbisbagaRzbivaRAbagbiyaRHcVWcVXcVXcVYaaaaaaaaaaahaaaaaaaaaabjaaaaahaaaaaaaaaaaaaaaaacaaaaaaaaaaaaaaaaaaaaaaaaaahaahabjbiCbiDbiEbiDbiFaUCaaaaaaaaaaUzbiGbanbiHbiIbiJbiKaRKbiIbiMbanbaraUzaaaaaaaVRaUwaUCaQxaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacVZcWacWacWbbdXcWdcWccWdcWccWdcWccWdbdXcWfcWeaHDbdQbiUbdSaTgbiWbiXaTrbiZaTsbdSbjbbjcbjdaTtbjfbjgbjhbjibjjbjkbjlbjmbjnbjobjpbjqbjrbjsbjtbjubjvboPbjxbjybfUbcAbhHbemaTxbjBbjCbjDbemblnbjFbhraahaahaTAaUJaUtaVhaUQaWmaVFaWsaWqaXmaWVaYSaXaaahaahbeubjabjUbjTbjWbjVbjYbjZbeubewbkabkbbkcbkdbkebkdbkfbkgbkhbkdbkdbkdbkibkdbkjbkkbklbkmbkdbkdbknbkjbkfbkibkobkpbknbkqbkrbksaXqaXnaXrbkwbkxbkybkzbkAbkBbkCaXAbkEbkEcWgcWicWhcWjaaaaaaaaaaahaaaaaaaaaabjaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahaahaahaahabjbiCbiDbkJbiDbkKaUCaaaaaaaaaaUzbkLbkMbalbkNbkObkPbkQbkRbkSbakbaraUzaUzaUzaUzbkTaTpaQxaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabdNbdXbdXbaIbdXcWdcWccWdcWkcWdcWccWdbdXcWfcWeaHDbkWbkXboQbkYbkZaXZaXYaXZbftbftblcbldbdYbcobleblfblgblhblibljaYmbcobllblmblibhzblxbcobloblpblqblrblsaPobhGbcAbhHbembltbluboRblwbembmnblybhrbhUaYDbhUaZYaZXbatbasbatbavbatbasbatbaDbbzbhUaYDbhUbeublHblHblHblIblJblLblKbeublMblNblOblPblQblRblQblSblQblTblQblQblQblUblQblVblWblXblYblQblQblZbmabmbblUbmcblUbmdbmebmfbksbmgbmhbmhbmibmjbmhbmhbmkbmlbmmbaEbkEbkEcWlcVXcVXcWmaaaaaaaaaaahaaaaaaaaaaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahbmqaaaaaaaaaaahbgPbgPbgMbmraUwaUCaaaaaaaaaaUzaUzbiGbakbakbakbmsbakbakbakbakbmtaYBbmuaaaaVRaUwaUCaQxaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacVZcWncWncWbbdXcWdcWccWdcWccWdcWccWdbdXcWfcWeaHDbmwbmxbmybmzbmAbmBbmBbmCbmDbmzbmEbmFbmGbcobaPboWbmJbmKbmLbphbmNbcobmObmPbmQbmRbmSbcoboYbmUbmVbmWbmXbcybmYbglbmZbnabnabnabnabnabgbbppbpibgbbhUbqTbqObcibasbasbasbasbcjbasbasbasbasbclbckbeSbhUbnmbnnbnobnpbnqbnrbnrbntbeubnubnvbnwbnxbnybnzbnybnAbnybnBbnybnybnCbnybnybnDbnEbnybnFbnCbnGbnHbnDbnAbnybnIbnJbnKbnLbnMbdIbnObnPbnQbnRbmmbnSbnSbnTbnUbpgbplbksbksbksaaKbnWaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaaabnXbnYbnZboabobbocbodboeaUwaUzaUzaUzaUzaUzbofbogbofbofbohboibohbojbojbokbolbomaUAaaaaVRaUwaUCaQxaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacWoaXCaXCbdVcWpbdXcWqbdXcWrcWsbdXcWtbdXcVVcWuaHDbdQboubovbowboxboybozboAboBbowboCboDboEbcoberaLobqLbesbcobcobcobcobcoaLoboJbetbcobcoaPoboLboMaPoaPobtHbaRbcAbtbbnabeybeQbeFbnaboVboXbnbbndbnebwbbvybfmbfabfobfnbfqbfpbfnbfnbfrbfabfNbfFbhhbhUbeublHblHblHbjXblHblHblHbeubpmbcAbpnbpobfTbpqbfTbpobpjbpjbpjbpjbpjbpjaocaocbpsaocaocaocbptbpuaocaocaocbpvaocbpwbpxbpybpzbpAbpBbpCbpDbnSbgCbgXbpGbnUbpHbgLbksbgZbgYbhabpKbpLbpLbpMbpNaahaaaaaaaahaaaaaaaaaaaaaaaaaaaahaaaaaaaaaaaaaaaaaaaahaaabnXbpObpPaaaaahbpQbpRbpSbpTbpUbpVbofbpWbpXbpYbpZbqabqbbofbqcbqdbqebqfbqgbqhbqhbqiaUAaaaaVRaUwaUCaQxaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacWoaXCcWvaXCbdNaXCaXCbdNaXCbaIcWxcWwaTqbqkbqlbqmbcybqnbqobqpbqobqqbcybqrbqsbqtbqubqvbqwbqxbqybqzbqwbqAbqBbqwbqvbqvbqCbqvbqDbqEbqFbqGbqHbqvbqIbqJbqKbhHbhebhdbhgbwybnabhrbhrbhrbhrbhUbwBbhBbhRbhQbhTbhSbasbhVbhXbhWbhYbhQbihbiabiPbiObeubrebrfbrgbrhbriblHbrjbeubrkbcAbrlbijbrnbrobrpbpobpkbqMbprbqQbqNbqSbtebrxbryaocbrzbrAbrBbrCbrDaocatEbrEaocbrFbrGbrHaXAbrJbrJbrJbrKbrLbnSbnSbrMbrNbrObrPbrQbrRbirbiubrTbrUbrUbrVbrWbrXbrXbrXbrYbrXbrXbrXbrXbrXbrXbrYbrXbrXbrXbrXbrXbrXbrYbrXbrZbsabrUbrUbrUbsbbscbsdbsebsebsfbsgbshbsibsjbskbslbsmbsnbsobspbsqbsrbssbstbsubsvbswaYyaYybsxaTpaQxaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahaahaahaahaahaaaaHDbawaHDaHDaHDaHDaHDaHDbawaHDaaaaTqbsAbsBbsCbcybsDbmvbmpbmvbsGbcybsHbsIbsJbsKbwDbsMbsNbsKbsKbsObsPbsQbsRbsKbsKbsSbsKbsKbsKbsTbsUbsVbsVbsWbsXbsYbsZbnabiwbizbixbnabiAbiLbiBbiNbthbhYbiSbhTbiTbiYbiVborbnNborbjebjNbjMbjPbjObjRbjQbeubtubtvbtwbtxbtybeubeubeubewbtzbtAbpobtBbtCbtDbpobqUbqXbqWbrrbrqbrtbtKbtLbtMbtNbtObtPbtQbtRbtSbtTbtUbtVaocbpwbtWbtXbksbtYbtZbjGbjEbucbudbvebufbugbnUbuhbuibujbjHbjIaTpaaaaaabulbpPaahaaaaaaaahaaaaaaaaaaaaaaaaaaaahaaaaaaaaaaaaaaaaaaaahaaabumbunbpNaaaaahaVRbuobupbuqburbjJbutbuubuvbuwbuxbuybjKbuAbuBbuCbjLbuEbuFbqhbuGbuHaUAaaaaVRaUwaUCaQxaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahaahaHDaahaaaaahaaaaHDbuIaHDbuJbuKbbVbuLaHDbuIaHDaHDaTqbdQbuMbuNbcybuObmvbosbmvbuQbcybuRbuSbuTbuUbuVbuWbuXbuYbuZbvabvbbvcbuVbuVbuVbvdbuVbvtbvfbuXbvgbuVbuVbvhbvibvjbsZbnabqjbqZbqVbrSbrvbsEbrvbrvbthbkGbkFbvrbvrbvrbvRbtdbsFbuDbxlbvrbvrbvrblFblGbhUbeubvzbvAbvBbvCbvDbeubrubtkbvGbvHbtAbfTbvIbvJbvKbpobtEbtGbtFbxjbpjbpjaocaocbvPaocaocaocbvQbxmaocaocbvSbvTaocbvUbtWbvVbksbgLbgLbgLbgLbtIbgLbgLbvXbvYbvZbksbksbwabjSbktbwcaaabnXbwdaaaaahaaaaaaaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaaabumbunbpNaahbwebwfbwgbwhbwibkubofbkvbwlbwmbwnbwobwpbofbwqbwrbwsbojbwtbwubqhbqiaUAaaaaVRaUwaUCaQxaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahaaaaHDaHDbauaHDaTqaHDbawaHDbwvaXcbwwbwxaHDbawaHDbxkbwzbwAbqlbqmbcybxxbuebqpbuebynbcybwEbwFbwGbcybwHbwIbwJbcyalWbwKalWbwLbwLbkDbwNbwObkDbwLbwLbwLbwLbwLbwLbxnbwPbwQbwRbwSbuPbvlbvkbvmbvkbvobvnbvpbmobnkbnfbxdbxebxdbxdbxfbnlbxhbvrbvrbxibvrbonboobeubxpbvubvMbvvbvObvNbeubvEbgbbxraXQbxsbpobpobpobpobpobvFbvLbpjbpjbpjbwkbwjbpjbvWbxqbwCaocavVbxAaocbxBbxCbxDbxEbxFbxGbxHbxIbxJbxKbxLbxJbxMbxNbgLbxObxPbxQbxRbkUbxTbkVblabxVbpLbxWbxXaahaahaahaahaahaaaaahaaaaahaaaaahaaaaahaaaaaaaaaaaaaaaaaaaahbmqaaabumbxYboabxZbyabodbmraUwaUzbybbycbydbyebyfbygbofbofbyhbyibyjbojbojbykbylbymaUAaaaaVRaUwaUCaQxaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahaaaaHDbzMaXcaXebyobypaXcaXcbyqbyraYIbysbytbytbytbyubyvbywbyxbyybyzbyAbyBbyCbyDbyEbyzbyFbyGbyHbyIbyIbyJbyIbyIaowbyKbzhbwLbzjblbbwMbwTbyQbwLbzmbySbwLbzmbySbwLbwPbcAbhHbnablkblAblzbnablBblDblCblEbthboFbopbvrbznboKboIbasbasboobzqbpfboZbvrbrdbrsbeubzubwUbwWbwVbwYbwXbzsbxtbgbbewaXQbexbpjbxubxybAZbyRbxzbyZbyYbpjbzgbzvbztbEvbzwbzAbzzaocaocaocaocaocaocbzIaocbzJbzKbzLbzBbzCbzCbzCbzCbzCbzBbzBbzCbzEbzDbzGbzFbzNbzHbzQbzPbzBbzBbzBaahaaaaaaaaaaahaaaaahaaaaahaaaaafaaaaafaaaaaaaaaaaaaaaaaaaaaaahaahaahaahaahaahaahaQxbfbaUwaUCbzXaUzbzYbzZbmHbAbbAcbAdbAebAfbAgbAhbAibAjaYyaYybAkaUzaUzbkTaTpaQxaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahaaaaHDaYEaYFaYFbAlaYFbAmbAnbAobAobApbAobAqbArbAsbAtbAubAvbAwbAxbmzbAybAzbAAbABbACbADbAEbAFbAGbAHbAIbAJbAKbyIbALbAMaosbwLbANbAObwMbwTbyQbwLbAPbAQbwLbAPbAQbwLbARbcAbhHbnabnabngbnabnabnabnibnhbBabnabtmbsLbttbasborborbxabwZbxcbxbbxgbBebzdbzcbzfbzebxvbxobyLbxwbyObyMbeubzRbgbbBoaXQbexbpjbzSbzTbxzbzUbxzbzVbxzbzWbDjbzzbAabAXbAWbBnbAYbzibyPbzpbBDbBEbNDbBFaocbBGbtWbBHbzBbBrbBqbBtbBsbBubzBbBwbBvbBybBxbBIbBzbBKbBJbBMbBLbBObBNbzBaahaahaahaahaahaahaahaaaaafaaabBZaaabCaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaQxaVRbCbaUCaaaaUzbCcbCdbCebAbbCfbCgbChbCibCjbCkbClbAbaUzaaaaaaaaaaVRaUwaUCaQxaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahaahaHDaHDaTqaHDbauaHDaTqaHDaHDaHDaTqaHDaTqaTqaTqbkWbkXalWbCoalWalWbCpbCqbCpbCrbCpbCpbCpbCpbyIbyIbCsbCtbyIbyIbyIbCualObwLbCvbCwbwMbzrbwLbwLbCybwLbwLbCzbwLbwLbCAbcAbhHbCBbCCbCDbCEbCFbCGbCDbCDbCHbCIboobCQbxdbCUbzybzxbBdbBcbBibBgbBmbCXbvrbDabzObeubBAbBpbBCbBBbCMbCxbeubBPbgbbewaXQbexbpjbBQbBTbBSbBTbBUbBWbBVbBXbDjbzzbBYbCNbzzbDjbCZbCPbCObCWbCVbDpbNDbvTaocbDqbDrbDsbFubDcbDbbDebDdbDhbzBbDkbDibDwbDvbBIbDxbDycgpbDAbDzbDCbDBbzBaahbFvbFvbFvbFvbFvaahaaabCaaaabBZaaabCaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaQxaVRbCbaUCaaaaUzbDLbDMbDNbAbbDObDPbDQbDRbDSbDTbDUbAbaUzaaaaaaaRIbgNaUwaUCaQxaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahaHDbDYbdQbDZalWbyKavibEabCpbEbbEcbEdbEebEfbEgbCpbEhbEhbEibEjbEkbElbyIbCubGdbwLbEnbEobwMbwTbEpboSbCwbErbEsbEtbEubkDbwPbcAbhHbGrboTbEwboUboUboUboUboUbEAbFwbHRbHzbhUbhUbhUbpabpcbpbbpebpdbhUbhUbhUbIabHRbGHbeubzebeubeubeubevbeubDEbgbbEKbELbexbDGbDFbDFbDFbDHbDFbDIbDFbDJbDjbDjbDKbDjbDjbzzbEqbDfbCYbDlbDgbHebNDbzIaocbEYbDrbEZbHfbExcgpbEEbEDbEIbEGbENbEJbEPbEObBIbEQbESbERbFcbFbbFebFdbFgbFsbIzbIsbIQbIQbFvaahaaabCaaaabBZaaaaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaQxaVRbCbaUCaaaaUzaUzaUzaUzbAbbFibFhbFybCjbFzbFjbFkbAbaUzaaaaVRbFCaTkbFDaTpaQxaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabpEaHDaHDbdQbFGalWbFHbFIbpFbCpbFKbEcbEdbFLbFMbFNbCpbFObFPbFQbFRbyIbyIbyIbCuapTbwLbFSbFTbwMbwTbwMbwMbwMbwMbwMbDmbwMbwNbFVbFWbFXbFYbFZbGabFZbGbbFZbGabFZbGcbMabGebGfbGgbGhbGibGjbGjbGkbGlbGjbGmbGnbGobGpbGqbNvbGibGsbGtbGibGubGvbGibGwbGxbGybGzbtAbFlbxzbFmbxzbFnbxzbFobxzbFpbDjbDjbFqbDjbDjbFxbJcbDfbDnbyPbDgbGJbNDbzIaocbGKbGLbvVbFubFAcgpbFBcgpbGBbGAbGDbGCbGFbGEbBIbGGbGNbGMbGPbGObGRbGQbBIaahbBIbJfbIQbJgbFvaahaaabCaaaabBZaaabCaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaQxaVRbCbaUCaaaaaaaaaaaabHgbHhbHibHibpIbHkbpIbHibHibHlbmuaUzaUzbkTbHmbHnaaaaQxaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabpJbHobHpbHobdQbHqalWbHrbHsakBbCpbHtbEcbEdbHubEcbDobCpbyIbHwbyIbEjbHxbHybyIbCuapRbwLbNAbEobDtbEBbEmbEmbEmbEmbEmbECbEmbHEbvibHFbHGbHHbHIbHJbHIbHKbHLbHMbHNbHObHPbHQbOmbHSbHTbHSbHUbHUbHVbHWbHUbHXbHYbHZbOUbIbbIcbIdbIebIfbIgbIhbIibIbbIjbIkbIlbImbInbGTbGSbGWbGVbGVbGXbGYbGSbHabGZbIobHbbzzbIpbzzbIqbEUbETbEWbEVbIEbIrbIGaocbIHbIIbIJbJrbIubItbIwbIvbIybBIbIKbIFbIMbILbIObINbERbIPbISbIRbIUbITbIVbJdbLAbKGbIQbLIbFvaahaaabCaaaabBZaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaQxaVRbCbbJhaRIaRIaaaaaaaUAbJibJjbJkbpIbJmbpIbJnbJobJpaUAaaaaVRaUwaUCbbSaQxaQxaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaHDaHDaHDbdQbJsalWbJtalWalWbCpbJubJvbJwbEcbEcbEcbCpbJxbJybyIbJzbyIbyIbyIbJAbJBbJCbCwbCwbDmbFUbJEbCwbCwbCwbCwbJFbJGbkDbwPbJHbJIbJJbJJbJKbJLbJMbJJbJJbJNbJNbJObJPbJNbqPbCIbJRbJSbJTbJUbJVbJSbJWbCIbqPbJXbJYbJZbKabJXbJXbKbbKcbKdbJXbIWbgbbKfbKgbKhbIYbIXbIZbIXbJbbJabxzbxzbDJbDKbDjbJqbKjbKebKjbIobHAbGIbHCbHBbqRbNDbKvaocbKwbKxbKybzQbKlbKkbKnbKmbzQbzPbKpbKobDzbDybBIbKzbKBbKAbKBbKAbKDbKCbBIaahbFvbFvbFvbFvbFvaahaaabCaaaabBZaaabCaaagaafaahaafaagaagaafaafaagaagaagaQxaQxaQxaQxbfbbKMaTkaTkbKNbodbodaUAbKObKPbKQbpIbHkbpIbKQbKPbKSaUAaaaaVRaUwaUCaQxaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabdNbdXbdXbaIbdXcWdcWccWdcWkcWdcWccWdbdXcWfcWeaHDbkWbkXboQbkYbkZaXZaXYaXZbftbftblcbldbdYbcobleblfblgblhblibljaYmbcobllblmblibhzblxbcobloblpblqblrblsaPobhGbcAbhHbembltbluboRblwbembmnblybhrbhUaYDbhUaZYaZXbatbasbatbavbatbasbatbaDbbzbhUaYDbhUbeublHblHblHblIblJblLblKbeublMblNblOblPblQblRblQblSblQblTblQblQblQblUblQblVblWblXblYblQblQblZbmabmbblUbmcblUbmdbmebmfbksbmgbmhbmhbmibmjbmhbmhbmkbmlbmmbaEbkEbkEcWlcVXcVXcWmaaaaaaaaaaahaaaaaaaaaaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahbmqaaaaaaaaaaahbgPbgPbgMbmrbpUaUCaaaaaaaaaaUzaUzbiGbakbakbakbmsbakbakbakbakbmtaYBbmuaaaaVRaUwaUCaQxaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacVZcWncWncWbbdXcWdcWccWdcWccWdcWccWdbdXcWfcWeaHDbMvbmxbmybmzbmAbmBbmBbmCbmDbmzbmEbmFbmGbcobaPboWbmJbmKbmLbphbmNbcobmObmPbmQbmRbmSbcoboYbmUbmVbmWbmXbcybmYbglbmZbnabnabnabnabnabgbbppbpibgbbhUbqTbqObcibasbasbasbasbcjbasbasbasbasbclbckbeSbhUbnmbnnbnobnpbnqbnrbnrbntbeubnubnvbnwbnxbnybnzbnybnAbnybnBbnybnybnCbnybnybnDbnEbnybnFbnCbnGbnHbnDbnAbnybnIbnJbnKbnLbnMbdIbnObnPbnQbnRbmmbnSbnSbnTbnUbpgbplbksbksbksaaKbnWaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaaabnXbnYbnZboabobbocbodboebrTaUzaUzaUzaUzaUzbofbogbofbofbohboibohbojbojbokbolbomaUAaaaaVRaUwaUCaQxaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacWoaXCaXCbdVcWpbdXcWqbdXcWrcWsbdXcWtbdXcVVcWuaHDbMvbrUbovbowboxboybozboAboBbowboCboDboEbcoberaLobqLbesbcobcobcobcobcoaLoboJbetbcobrVaPoboLboMaPoaPobtHbaRbcAbtbbnabeybeQbeFbnaboVboXbnbbndbnebwbbvybfmbfabfobfnbfqbfpbfnbfnbfrbfabfNbfFbhhbhUbeublHblHblHbjXblHblHblHbeubpmbcAbpnbrWbfTbpqbfTbpobpjbpjbpjbpjbpjbpjaocaocbpsaocaocaocbptbpuaocaocaocbpvbrXbpwbpxbpybpzbpAbpBbpCbpDbnSbgCbgXbpGbnUbpHbgLbksbgZbgYbhabpKbrYbpLbpMbpNaahaaaaaaaahaaaaaaaaaaaaaaaaaaaahaaaaaaaaaaaaaaaaaaaahaaabnXbpObpPaaaaahbpQbpRbpSbpTbrZbpVbofbpWbpXbpYbpZbqabqbbofbqcbqdbqebqfbqgbqhbqhbqiaUAaaaaVRaUwaUCaQxaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacWoaXCcWvaXCbdNaXCaXCbdNaXCbaIcWxcWwaTqbqkbqlbqmbcybqnbqobqpbqobqqbcybqrbqsbqtbqubqvbqwbqxbqybqzbqwbqAbqBbqwbqvbqvbqCbqvbqDbqEbqFbqGbqHbqvbqIbqJbqKbhHbhebhdbhgbwybnabhrbhrbhrbhrbhUbwBbhBbhRbhQbhTbhSbasbhVbhXbhWbhYbhQbihbiabiPbiObeubrebrfbrgbrhbriblHbrjbeubrkbcAbrlbijbrnbrobrpbpobpkbqMbsabqQbqNbqSbtebrxbryaocbrzbrAbrBbrCbrDaocatEbrEaocbrFbrGbrHaXAbrJbrJbrJbrKbrLbnSbnSbrMbrNbrObrPbrQbrRbirbiubsbbsebsebuqbtFbvvbvubvubvMbvubvubvubvubvubvubvMbvubvubvubvubvubvubvMbvubvNbvObsebsebsebwhbscbsdbwibwDbsfbsgbshbsibsjbskbslbsmbsnbsobspbsqbsrbssbstbsubsvbswaYyaYybsxaTpaQxaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahaahaahaahaahaaaaHDbawaHDaHDaHDaHDaHDaHDbawaHDaaaaTqbsAbsBbsCbcybsDbmvbmpbmvbsGbcybsHbsIbsJbsKbwNbsMbsNbsKbsKbsObsPbsQbsRbsKbsKbsSbsKbsKbsKbsTbsUbsVbsVbsWbsXbsYbsZbnabiwbizbixbnabiAbiLbiBbiNbthbhYbiSbhTbiTbiYbiVborbnNborbjebjNbjMbjPbjObjRbjQbeubtubtvbtwbtxbtybeubeubeubewbtzbtAbpobtBbtCbtDbpobqUbqXbqWbrrbrqbrtbtKbtLbtMbtNbtObtPbtQbtRbtSbtTbtUbtVaocbpwbtWbtXbksbtYbtZbjGbjEbucbudbvebufbugbnUbuhbuibujbjHbjIaTpaaaaaabulbpPaahaaaaaaaahaaaaaaaaaaaaaaaaaaaahaaaaaaaaaaaaaaaaaaaahaaabumbunbpNaaaaahaVRbuobupbwOburbjJbutbuubuvbuwbuxbuybjKbuAbuBbuCbjLbuEbuFbqhbuGbuHaUAaaaaVRaUwaUCaQxaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahaahaHDaahaaaaahaaaaHDbuIaHDbuJbuKbbVbuLaHDbuIaHDaHDaTqbdQbuMbuNbcybuObmvbosbmvbuQbcybuRbuSbuTbuUbuVbuWbuXbuYbuZbvabvbbvcbuVbuVbuVbvdbuVbvtbvfbuXbvgbuVbuVbvhbvibvjbsZbnabqjbqZbqVbrSbrvbsEbrvbrvbthbkGbkFbvrbvrbvrbvRbtdbsFbuDbxlbvrbvrbvrblFblGbhUbeubvzbvAbvBbvCbvDbeubrubtkbvGbvHbtAbfTbvIbvJbvKbpobtEbtGbwUbwXbpjbpjaocaocbvPaocaocaocbvQbxmaocaocbvSbvTaocbvUbtWbvVbksbgLbgLbgLbgLbtIbgLbgLbvXbvYbvZbksbksbwabjSbktbwcaaabnXbwdaaaaahaaaaaaaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaaabumbunbpNaahbwebwfbwgbxjbxobkubofbkvbwlbwmbwnbwobwpbofbwqbwrbwsbojbwtbwubqhbqiaUAaaaaVRaUwaUCaQxaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahaaaaHDaHDbauaHDaTqaHDbawaHDbwvaXcbwwbwxaHDbawaHDbxkbwzbwAbqlbqmbcybxxbuebqpbuebynbcybwEbwFbwGbcybwHbwIbwJbcyalWbwKalWbwLbwLbkDbxvbyMbkDbwLbwLbwLbwLbwLbwLbxnbwPbwQbwRbwSbuPbvlbvkbvmbvkbvobvnbvpbmobnkbnfbxdbxebxdbxdbxfbnlbxhbvrbvrbxibvrbonboobeubxpbySbBpbhZbBBbBAbeubvEbgbbxraXQbxsbpobpobpobpobpobvFbvLbpjbpjbpjbwkbwjbpjbvWbxqbwCaocavVbxAaocbxBbxCbxDbxEbxFbxGbxHbxIbxJbxKbxLbxJbxMbxNbgLbxObxPbxQbxRbkUbxTbkVblabxVbpLbxWbxXaahaahaahaahaahaaaaahaaaaahaaaaahaaaaahaaaaaaaaaaaaaaaaaaaahbmqaaabumbxYboabxZbyabodbmrbrTaUzbybbycbydbyebyfbygbofbofbyhbyibyjbojbojbykbylbymaUAaaaaVRaUwaUCaQxaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahaaaaHDbzMaXcaXebyobypaXcaXcbyqbyraYIbysbytbytbytbyubyvbywbyxbyybyzbyAbyBbyCbyDbyEbyzbyFbyGbyHbyIbyIbyJbyIbyIaowbyKbzhbwLbzjblbbwMbwTbyQbwLbzmbBCbwLbzmbBCbwLbwPbcAbhHbnablkblAblzbnablBblDblCblEbthboFbopbvrbznboKboIbasbasboobzqbpfboZbvrbrdbrsbeubzubCxbwWbwVbwYbCMbzsbxtbgbbewaXQbexbpjbxubxybAZbyRbxzbyZbyYbpjbzgbzvbztbEvbzwbzAbzzaocaocaocaocaocaocbzIaocbzJbzKbzLbzBbzCbzCbzCbzCbzCbzBbzBbzCbzEbzDbzGbzFbzNbzHbzQbzPbzBbzBbzBaahaaaaaaaaaaahaaaaahaaaaahaaaaafaaaaafaaaaaaaaaaaaaaaaaaaaaaahaahaahaahaahaahaahaQxbfbbGraUCbzXaUzbzYbzZbmHbAbbAcbAdbAebAfbAgbAhbAibAjaYyaYybAkaUzaUzbkTaTpaQxaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahaaaaHDaYEaYFaYFbAlaYFbAmbAnbAobAobApbAobAqbArbAsbAtbAubAvbAwbAxbmzbAybAzbAAbABbACbADbAEbAFbAGbAHbAIbAJbAKbyIbALbAMaosbwLbANbAObwMbwTbyQbwLbAPbAQbwLbAPbAQbwLbARbcAbhHbnabnabngbnabnabnabnibnhbBabnabtmbsLbttbasborborbxabwZbxcbxbbxgbBebzdbzcbzfbzebhZbHvbyLbxwbyObHEbeubzRbgbbBoaXQbexbpjbzSbzTbxzbzUbxzbzVbxzbzWbDjbzzbAabAXbAWbBnbAYbzibyPbzpbBDbBEbNDbBFaocbBGbtWbBHbzBbBrbBqbBtbBsbBubzBbBwbBvbBybBxbBIbBzbBKbBJbBMbBLbBObBNbzBaahaahaahaahaahaahaahaaaaafaaabBZaaabCaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaQxaVRbCbaUCaaaaUzbCcbCdbCebAbbCfbCgbChbCibCjbCkbClbAbaUzaaaaaaaaaaVRaUwaUCaQxaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahaahaHDaHDaTqaHDbauaHDaTqaHDaHDaHDaTqaHDaTqaTqaTqbkWbkXalWbCoalWalWbCpbCqbCpbCrbCpbCpbCpbCpbyIbyIbCsbCtbyIbyIbyIbCualObwLbCvbCwbwMbzrbwLbwLbCybwLbwLbCzbwLbwLbCAbcAbhHbCBbCCbCDbCEbCFbCGbCDbCDbCHbCIboobCQbxdbCUbzybzxbBdbBcbBibBgbBmbCXbvrbDabzObeubRtbHVbhZbRubWTbRybeubBPbgbbewaXQbexbpjbBQbBTbBSbBTbBUbBWbBVbBXbDjbzzbBYbCNbzzbDjbCZbCPbCObCWbCVbDpbNDbvTaocbDqbDrbDsbFubDcbDbbDebDdbDhbzBbDkbDibDwbDvbBIbDxbDycgpbDAbDzbDCbDBbzBaahbFvbFvbFvbFvbFvaahaaabCaaaabBZaaabCaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaQxaVRbCbaUCaaaaUzbDLbDMbDNbAbbDObDPbDQbDRbDSbDTbDUbAbaUzaaaaaaaRIbgNaUwaUCaQxaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahaHDbDYbdQbDZalWbyKavibEabCpbEbbEcbEdbEebEfbEgbCpbEhbEhbEibEjbEkbElbyIbCubGdbwLbEnbEobwMbwTbEpboSbCwbErbEsbEtbEubkDbwPbcAbhHbXBboTbEwboUboUboUboUboUbEAbFwbHRbHzbhUbhUbhUbpabpcbpbbpebpdbhUbhUbhUbIabHRbGHbeubzebeubeubeubevbeubDEbXEbEKbELbexbDGbDFbDFbDFbDHbDFbDIbDFbDJbDjbDjbDKbDjbDjbzzbEqbDfbCYbDlbDgbHebNDbzIaocbEYbDrbEZbHfbExcgpbEEbEDbEIbEGbENbEJbEPbEObBIbEQbESbERbFcbFbbFebFdbFgbFsbIzbIsbIQbIQbFvaahaaabCaaaabBZaaaaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaQxaVRbCbaUCaaaaUzaUzaUzaUzbAbbFibFhbFybCjbFzbFjbFkbAbaUzaaaaVRbFCaTkbFDaTpaQxaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabpEaHDaHDbdQbFGalWbFHbFIbpFbCpbFKbEcbEdbFLbFMbFNbCpbFObFPbFQbFRbyIbyIbyIbCuapTbwLbFSbFTbwMbwTbwMbwMbwMbwMbwMbDmbwMbxvbFVbFWbFXbFYbFZbGabFZbGbbFZbGabFZbGcbMabGebGfbGgbGhbGibGjbGjbGkbGlbGjbGmbGnbGobGpbGqbNvbGibGsbGtbGibGubGvbGibGwbGxbGybGzbtAbFlbxzbFmbxzbFnbxzbFobxzbFpbDjbDjbFqbDjbDjbFxbJcbDfbDnbyPbDgbGJbNDbzIaocbGKbGLbvVbFubFAcgpbFBcgpbGBbGAbGDbGCbGFbGEbBIbGGbGNbGMbGPbGObGRbGQbBIaahbBIbJfbIQbJgbFvaahaaabCaaaabBZaaabCaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaQxaVRbCbaUCaaaaaaaaaaaabHgbHhbHibHibpIbHkbpIbHibHibHlbmuaUzaUzbkTbHmbHnaaaaQxaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabpJbHobHpbHobdQbHqalWbHrbHsakBbCpbHtbEcbEdbHubEcbDobCpbyIbHwbyIbEjbHxbHybyIbCuapRbwLbNAbEobDtbEBbEmbEmbEmbEmbEmbECbEmbYsbvibHFbHGbHHbHIbHJbHIbHKbHLbHMbHNbHObHPbHQbOmbHSbHTbHSbHUbHUbYtbHWbHUbHXbHYbHZbOUbIbbIcbIdbIebIfbIgbIhbIibIbbIjbIkbIlbImbInbGTbGSbGWbGVbGVbGXbGYbGSbHabGZbIobHbbzzbIpbzzbIqbEUbETbEWbEVbIEbIrbIGaocbIHbIIbIJbJrbIubItbIwbIvbIybBIbIKbIFbIMbILbIObINbERbIPbISbIRbIUbITbIVbJdbLAbKGbIQbLIbFvaahaaabCaaaabBZaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaQxaVRbCbbJhaRIaRIaaaaaaaUAbJibJjbJkbpIbJmbpIbJnbJobJpaUAaaaaVRaUwaUCbbSaQxaQxaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaHDaHDaHDbdQbJsalWbJtalWalWbCpbJubJvbJwbEcbEcbEcbCpbJxbJybyIbJzbyIbyIbyIbJAbJBbJCbCwbCwbDmbFUbJEbCwbCwbCwbCwbJFbJGbkDbwPbJHbJIbYubJJbJKbJLbJMbJJbJJbJNbJNbJObJPbJNbqPbCIbJRbJSbJTbJUbJVbJSbJWbCIbqPbJXbJYbJZbKabJXbJXbKbbKcbKdbJXbIWbYBbKfbKgbKhbIYbIXbIZbIXbJbbJabxzbxzbDJbDKbDjbJqbKjbKebKjbIobHAbGIbHCbHBbqRbNDbKvaocbKwbKxbKybzQbKlbKkbKnbKmbzQbzPbKpbKobDzbDybBIbKzbKBbKAbKBbKAbKDbKCbBIaahbFvbFvbFvbFvbFvaahaaabCaaaabBZaaabCaaagaafaahaafaagaagaafaafaagaagaagaQxaQxaQxaQxbfbbKMaTkaTkbKNbodbodaUAbKObKPbKQbpIbHkbpIbKQbKPbKSaUAaaaaVRaUwaUCaQxaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahaHDbKTbdQbKUalWbCuapTbKVbCpbqYbEdbIAbHDbDobEcbCpbKZbLabyIbFObLbbLcbyIbCuaotbwLbLdbLdbDmbwTbLebLebLfbrbbrabrcbwLbwLbFVbLjbLkbJJbLlbLmbLnbLobLpbLqbLrbLsbLtbLubJNaahboTbLwbJSbJSbLxbJSbJSbLybrmaahbJXbMmbLBbLCbLDbJXbJXbJXbJXbJXbKEbgbbKfbLFbLGbpjbLEbLHbDFbLJbMnbDFbLKbpjbDKbLLbDjbDjbDjbDjbDjbICbIBbIDbLPbrIbNDbLRatHbLSbLTbLUbzGbLVbLMbLXbLWbLZbLYbMcbMbbMebMdbMdbMfbMhbMgbFcbMibMkbMjbFgbFsbIzbNtbNxbNxbFvaahaahbMoaahbMpaahbCaaaaaaaaahaaaaaaaaaaaaaaaaaaaahaaaaaaaaaaaaaQxaaabMqaUyaUBaUwaUCaaaaUAbMrbKPbKPbKPbMsbKPbKPbKPbMtaUAaaaaVRaUwaUCaQxaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahaahaHDaHDaTqaHDbauaHDaTqaHDaHDaHDaTqaHDaTqaTqaTqbMvbMwbMxbMybMzbMAbCpbMBbMCbIAbJDbKqbMFbCpbyIbyIbyIbyIbyIbyIbyIbCuaosbwLbMGbMHbDmbwTbCwbCwbMIbCwbMJbsybwLbMLbwPbcAbMMbJJbMNbMObMPbMQbMRbLqbMSbMTbMUbMVbszaahboTbMYbMZbNabNbbMZbNabNcbrmaahbtabNfbNgbNhbVxbtcbNkbNlbNmbJXbMDbgbbNobNpbNqbNrbNrbNrbNsbNTbVybNubWcbNrbNwbNrbKrbKtbKsbLNbKXbNDbNDbNEbNDbNDbNDbKvbNFbNGbNHbNFbzBbzBbzBbzBbzBbNJbzGbNLbNKbNMcgpbNObNNbNQbNPbESbNRbORbNSbBIaahbBIbNVbOJbOebFvaahaaabCaaaabBZaaabNWaQxaQxaQxaQxaafaQxaQxaQxaQxaafaQxaahaafaQxaQxaQxaQxaQxaVRaUwaUCaaaaUAbNXbNYbNZbKPbOabKPbObbOcbOdaUAaaaaVRaUwaUCaQxaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahaaaaHDbPwbwzaXebOTaXeaXcaXcbOfaXcbwzaXcbOgbwzaXcbwAbOhalWbOialOapUbCpbOjbOkbEcbEcbEcbOlbCpbYfbYObYjbOnbOobOpalWbCuarhbwLbOqbOrbDmbLObOtbOtbOubCwbCwbOvbwLbOwbwPbcAbLkbJJbOxbOybOzbOAbOBbLqbOCbODbOEbOFbJNbtfbOHbtfbOHbOHbOIbOHbOHbtfbOHbtfbJXbPxbOKbOLbOMbtgbOObOPbOQbJXbOXbgbbOSaXQbLGbNrbticaIbOVbOWcaTbOYbOYbOZbPabNrbNrbNrbNrbNrbNrbNrbNDbPbbPcbtjbNDbPebNFbPfbPgbPhbNFbPibPjauVbrwbzBbPkbPmbPlbPobPnbPrbPqbPtbPsbPubNRbPSbPvbIVbJdbLAbPNbNxbQubFvaahaaabCaaaabBZaaabCaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabbSbfbbPyaYyaYybPzbmubPAbPBbKPbPCbKPbPDbPEbHgbPzaYyaYybPFaTpaQxaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahaaaaHDaYEaYFaYFaYFaYFaYFbPGbPHbPIbAobAobPJbPKbPLbPMbQxalWbdTardapUbCpbEebPObEcbEcbPObPPbCpbPQaovaoxbPRbMAbOoalWbCucaUbwLbPTbPUbMEbNnbCwbPXbtlbPZbQabQbbwLbQcbwPbcAbQdbJJbQebQfbQgbQhbLqbLqbQibQjbQkbQlbJNbNzbNybNIbQpbQqbQrbQsbQtbOsbNUbPVbJXbtnbOKbQybRZbJXbQAbQBbQCbJXbQDbgbbQEaXQbQFbtobQHbQIbQJbQKbQLbOVbOVbQMbQNbNrbQObQPbQQbQPbQRbNrbtpbQTbQUbQVbNDbKvbNFbQWbQXbQYbNFasfapxapxbQZbzBbPkbRbbRabzCbzCbzCbRccgpbRdcgpbNRbRebNSbBIaahbFvbFvbFvbFvbFvaahaaaaafaaabBZaaabCaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaQxaVRaUwaUCaaaaaaaUAbRfbKPbKPbKPbRgbRibRjaUAaaaaaaaVRaUwaUCaQxaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahaahaHDaHDbRkbRkaHDaHDaHDaTqaHDaTqaHDaTqaTqalWbRmalWalWalWbdTarhapUbCpbPPbRnbRobEcbRobtqbCpbRqapRaotapTbRranfalWbCualObwLbwLbkDbRtbRubkDbwLbwLbwLbwLbRvbwLbwLbRwbglbRxbJJbRybRzbRAbRBbRCbLqbRDbREbRFbtrbJNbRHbRIbRJbRKbRLbRJbRMbRJbRNbRObRPbJXbtsbOKbRRbRSbtJbRUbRVbRWbJXbRlbgbbRYaXQbLGbubbuabusbukbSdbSebSabusbQMbSfbNrbSgbShbSibSjbQRbNrbSkbSlbSmbSnbRpbSpbNFbSqbSrbSsbNFbStbSubSvbSwbzBbRsbRTbRQbRXbzCbSobPscgpbPqbSybSxbSzbMjbFgbFsbIzbSFbSHbSGbFvaahaaabCaaaabBZaaabCaaaaaaaaacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaQxaVRaUwaUCaaaaaaaUAbSIbSJbSKbKPbSMbSNbSIaUAaaaaaaaVRaUwaUCaQxaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahaahaHDaHDbRkbRkaHDaHDaHDaTqaHDaTqaHDaTqaTqalWbRmalWalWalWbdTarhapUbCpbPPbRnbRobEcbRobtqbCpbRqapRaotapTbRranfalWbCualObwLbwLbkDcbLciKbkDbwLbwLbwLbwLbRvbwLbwLbRwbglbRxbJJciWbRzbRAbRBbRCbLqbRDbREbRFbtrbJNbRHbRIbRJbRKbRLbRJbRMbRJbRNbRObRPbJXbtsbOKbRRbRSbtJbRUbRVbRWbJXbRlbgbbRYaXQbLGbubbuabusbukbSdbSebSabusbQMbSfbNrbSgbShbSibSjbQRbNrbSkbSlbSmbSnbRpbSpbNFbSqbSrbSsbNFbStbSubSvbSwbzBbRsbRTbRQbRXbzCbSobPscgpbPqbSybSxbSzbMjbFgbFsbIzbSFbSHbSGbFvaahaaabCaaaabBZaaabCaaaaaaaaacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaQxaVRaUwaUCaaaaaaaUAbSIbSJbSKbKPbSMbSNbSIaUAaaaaaaaVRaUwaUCaQxaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaaaaaaaaaaaaaaaaaaaaaaaaaaaaahaaaaaaaHDbSAbbUaHDaaaaahbSBbSBbSBaahaaaaaaalWbSObSPbuzbSRbSSbSRbSTbCpbCpbCpbCpbSCbCpbCpbCpbSVardalOaotbSWbSXalWbSYbSZbwLbTabTbbTcbTdbTebTfbTgbwLbThbTibTjbwLbwPbcAbTkbJJbMNbQfbTlbTmbMNbLqbTnbTobTpbTqbJNbPWbTsbTtbTubQnbQmbQobTybTzbTAbQvbJXbTCbTDbTEbTFbTGbTHbTIbTJbTKbSDbgbbTMaXQbLGbubbTObTPbTPbTQbTRbTSbTTbTUbTVbNrbTWbShbTXbTYbTZbNrbvqbvwbvsbUdbNDbKvbNFbNFbNFbNFbNFbUeapxapxbUfbzBbRsbRTbRQbSUbSEbSobTLbESbPqbUgbNRbUhbNSbBIaahbBIbUlbUnbUmbFvaahaaabCaaaabBZaaabCaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaQxaVRaUwaUCaaaaaaaUAbUobHibUpbRhbUrbHibUsaUAaaaaaaaVRaUwaTpaQxaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahaahaahaHDbRkbRkaHDaahaahbUibUibUiaahaahaahalWbUtasvasvasvbAMapRapUalOankaviaosarbbUuarhalWalWalWalWalWbUvalWalWbCuapTbwLbUwbUxbUybUybTdbUzbUAbwLbUBbvxbUDbwLbARbcAbUEbJJbMNbUFbUGbUHbUIbLqbUJbUKbULbJNbJNbQzbQwbUObTwbTBbTxbUXbUWbUUbUYbUZbJXbxSbVDbxUbVabtgbVcbVcbVdbJXbUjbgbbVfaXQbLGbNrbVgbVhbVibOVbVjbVkbQKbVlbVmbVnbVobVpbVqbVrbVsbNrbNDbNDbNDbNDbNDbVtaocbVubQZaqKapxbVvaqJbVwapxbzBbzBbUkbKobRXbzCbUQbUMcgpbURbSybNRbUSbPvbIVbJdbLAbVEbSHbXXbFvaahaaabCaaaabBZaaabCaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaQxbfbbVFaUzaUzaUzbmtaYyaYyaYyaYBaYyaYyaYybAkaUzaUzaUzbkTaUCaQxaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabXYaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaalWalWalWalWbSXbVGasvbVHbVIbVJbVKbVKbVKbVLbVMbVKbVIbVKbVNbVKbVObVKaMDbVPaotbwLbVQbVRbVSbyNbEobVUbVVbwLbwLbwLbwLbwLbVWbcAbLkcbLbJJbVXbVXbVXbJJbJJbJNbJNbVYbJNbJNbyTbyTbWbbyTbyTbyTbyTbyTbWdbyTbyTbJXbJXbJXbJXbJXbJXbWebWebWebJXbVebgbbWgaXQbWhbepbWibWibWibWjbWibWibWkbWlbWibWibWibWibNrbWmbWnbWobWpbWqbWrapxbWsbWtaocbSvbWubWvapxbVvapxapxaoabzBbVzbGDbVAbzCbzCbzCbVBcgpbVCbWfbNRbRebNSbBIaahbFvbFvbFvbFvbFvaahaahbNWaahbMpaahaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaQxaVRaUwaUCaaaaaaaaaaaaaaaaaabWBaaaaaaaaaaaaaaaaaaaVRaUwaUCaQxaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahaaabWCbWCbWDbWEbWFalWbWGalWalWalWaUObWHbWHbWHbWHbWHbWHbWHaotbWIbWJcbZbwLbWLbWMbyUbWObEobTdbWPbWQbWRavialWbWSbwPbWTbWUbWVbWWbWXbWXbWXbWYbWZbXabXbbWXbXcbXdbWVbWVbXebXfbXfbXfbXgbXfbXhbXibXibXjbXkbXlbXmbXnbXobWXbWXbWXbXpbXqbXibXraXQbXsbXtbyVbXvbXwbXxbyWbyXbXAbXxbXBbXCbXDbXEbNrbXFbXGbWwbXIbXJbXKbXLbWtbXMaocaocaocaocaocbXNbXObzBbzBbzBbWxbGDbKobWzbWybWAbGGbXzbWKbXHbSxbXPbMjbFgbFsbIzbYZbZabZabFvaahaaabCaaaabBZaaabCaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaQxaVRaUwbJhaRIaRIaRIaRIaRIaRIbWBaRIaRIaRIaRIaRIaRIbgNaUwaTpaQxaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahaaabWFbXZbYabYbbWFaotbYcbMAcesalWbYebWHceGbYgbYhbYiceIbWHaotalObWJalObwLbwLbwLbwLbwLbwLbwLbwLbwLatRalOalWbYkbwPbYlbYmbaUbaUbaUbaUbaUbaUbaXbaUbYnbYobYpbaWbaUbaUbYqbYrbYsbYtbYubYvbYwbaUbaUbaUbYybYzbaUbaUbaXbaUbaUbaUbaUbYAbaUbYnbYBbYCbYDbYEbYFbYGbYFbYHbYHbYIbYJbYKbYHbYGbYLbNrbNrbNrbNrbYMbYNapwaoaceWbYPapwbYPbYQbYRaocauWaocbzBbXQbXUbXTbXWbXVbYdbYdbYdbINcgpcgpcgpbNRbYSbNSbBIaahbBIbZbcaDcaCbFvaahaaabCaaaabBZaaabCaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaQxaVRbZcaTkaTkaTkaTkaTkaTkaTkbZdaTkaTkaTkaTkaTkaTkaTkbZeaUCaQxaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabXYaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaalWalWalWalWbSXbVGasvbVHbVIbVJbVKbVKbVKbVLbVMbVKbVIbVKbVNbVKbVObVKaMDbVPaotbwLbVQbVRbVSbyNbEobVUbVVbwLbwLbwLbwLbwLbVWbcAbLkbJJbJJbVXbVXbVXbJJbJJbJNbJNbVYbJNbJNbyTbyTbWbbyTbyTbyTbyTbyTbWdbyTbyTbJXbJXbJXbJXbJXbJXbWebWebWebJXbVebgbbWgaXQbWhbepbWibWibWibWjbWibWibWkbWlbWibWibWibWibNrbWmbWnbWobWpbWqbWrapxbWsbWtaocbSvbWubWvapxbVvapxapxaoabzBbVzbGDbVAbzCbzCbzCbVBcgpbVCbWfbNRbRebNSbBIaahbFvbFvbFvbFvbFvaahaahbNWaahbMpaahaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaQxaVRaUwaUCaaaaaaaaaaaaaaaaaabWBaaaaaaaaaaaaaaaaaaaVRaUwaUCaQxaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahaaabWCbWCbWDbWEbWFalWbWGalWalWalWaUObWHbWHbWHbWHbWHbWHbWHaotbWIbWJcbZbwLbWLbWMbyUbWObEobTdbWPbWQbWRavialWbWSbwPcpubWUbWVbWWbWXbWXbWXbWYbWZbXabXbbWXbXcbXdbWVbWVbXebXfbXfbXfbXgbXfbXhbXibXibXjbXkbXlbXmbXnbXobWXbWXbWXbXpbXqbXibXraXQbXsbXtbyVbXvbXwbXxbyWbyXbXAbXxcAzbXCbXDcEWbNrbXFbXGbWwbXIbXJbXKbXLbWtbXMaocaocaocaocaocbXNbXObzBbzBbzBbWxbGDbKobWzbWybWAbGGbXzbWKbXHbSxbXPbMjbFgbFsbIzbYZbZabZabFvaahaaabCaaaabBZaaabCaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaQxaVRaUwbJhaRIaRIaRIaRIaRIaRIbWBaRIaRIaRIaRIaRIaRIbgNaUwaTpaQxaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahaaabWFbXZbYabYbbWFaotbYcbMAcesalWbYebWHceGbYgbYhbYiceIbWHaotalObWJalObwLbwLbwLbwLbwLbwLbwLbwLbwLatRalOalWbYkbwPbYlbYmbaUbaUbaUbaUbaUbaUbaXbaUbYnbYobYpbaWbaUbaUbYqbYrcFPcEXcFTbYvbYwbaUbaUbaUbYybYzbaUbaUbaXbaUbaUbaUbaUbYAbaUbYncFUbYCbYDbYEbYFbYGbYFbYHbYHbYIbYJbYKbYHbYGbYLbNrbNrbNrbNrbYMbYNapwaoaceWbYPapwbYPbYQbYRaocauWaocbzBbXQbXUbXTbXWbXVbYdbYdbYdbINcgpcgpcgpbNRbYSbNSbBIaahbBIbZbcaDcaCbFvaahaaabCaaaabBZaaabCaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaQxaVRbZcaTkaTkaTkaTkaTkaTkaTkbZdaTkaTkaTkaTkaTkaTkaTkbZeaUCaQxaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahaahbWFbZfbZgbZhbWFaotbZibZjalWalWbZkbWHbZlbZmbZnbZobZpbWHawqaotbZqbVKbVIbVKbVNbVKbZrbZsbZsbZsbZsbZtaZebZubZvbZwbZxbZybZzbZAbZBbZybZybZybZCbZybZDaZCbZEbZFaZCaZCbZGbZHbZIbZJbZKbZLbZMaZCaZCbZObZPbZQbZQbZRbZSbZRbZRbZRbZTbZUbZVbZWbZXbZYbZZcaacabcaccadcaecafcagcahcaicajcagcakbWicalcambWicanbYNapwapwapwapwapwcaocapcaqcarcascatbYUbYTbYWbYVbYYbYXcgpcgpcgpcgpcgpbEScgpbNRcaubPvbIVbJdbLAcaVbZacbibFvaahaaabCaaaabBZaaabCaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaQxaaaaUyaUyaUyaUyaUyaUyaUyaUycaEaUyaUyaUyaUyaUyaUyaUyaUyaaaaQxaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahaaabWFcaFcaGcaHbWFcgvaotcaJalWcaKcaLbWHcaMcaNcaOcaPcaQbWHbWHbWHbWHbWHbWHcaRbWHbWHcaSchcchdalOardccuarhcklcklcklcklcklcklcklcchcchcchcchcchcdzcaWcaWcaXcaYcaWcaZcaWcbacbbaXQcbcchzcbecbfcbecbgcbhcbecbecdKbepaXFaXHaXHcbjbepcbkbepbzacbmbzabWibzkbzbcahcbpcbqcagcahcbrcbscbtbzlbWiccGcbwbWicbxcbycbzcaqcaqcaqcaqcbAcbBcbCcbDcbCcbEbzGcavcaxcawcgpcaybMdbMdbMdbMdbMdcazcgpbNRbRecaAbzBaahbFvbFvbFvbFvbFvaahaaabCaaaabBZaaabCaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabbSaQxaQxaQxaQxaQxaQxaQxaQxaQxaQxaQxaQxaQxaQxaQxaQxaQxaQxaQxaQxaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaaabWFbzocbMbzobWFalWalWalWalWbWHcbObWHcbPchBcbRcbScbTbWHcbUcbVcbWbWHcbXcbYchQbWHccabWHbWHbWHbWHbWHbWHcklccbbBhbCRbCKcibccgcchcciccjcckcchbASccmbASccnccobASccmbASciKccqccrccsciWbATccvbATccwccxbATccvbATcctccyccyccyccyccycczbepbAUccBbAVbyVccDbYGcahcajcajcagccEcajcajcagccFbWichAccHbWibYMccIccJcbCcbCcbEcbCcbCccKcbucbdcbucbubzBcbvcbGcbFcbIcbHbEScgpcgpcaybMdcbJbPubNRcbKbNSbzBaahaahaahaahaahaahaahaahbMoaahbMpaahbNWaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaaabWFbzocbMbzobWFalWalWalWalWbWHcbObWHcbPchBcbRcbScbTbWHcbUcbVcbWbWHcbXcbYchQbWHccabWHbWHbWHbWHbWHbWHcklccbbBhbCRbCKcibccgcchcciccjcckcchbASccmbASccnccobASccmbAScGtccqccrccscGubATccvbATccwccxbATccvbATcctccyccyccyccyccycczbepbAUccBbAVbyVccDbYGcahcajcajcagccEcajcajcagccFbWichAccHbWibYMccIccJcbCcbCcbEcbCcbCccKcbucbdcbucbubzBcbvcbGcbFcbIcbHbEScgpcgpcaybMdcbJbPubNRcbKbNSbzBaahaahaahaahaahaahaahaahbMoaahbMpaahbNWaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaQxaaaaaabzocbQbzoaaaaahaaaaaaaaabWHcbObWHbWHbWHbWHccZbWHbWHcdacdbcdabWHbWHbWHbWHbWHcdccddbWHcdecdfcjgcdhccdcdjcdkcdlcdkcdmcdncdocdpcdqcdrbBbcggbBfcdvcdwcdxcdycghchmccmcdBcdCcdDccvcdEcdFcdGcdHcdIcdJchncdLcdMccycdNbBjcdPccycdQbepcdRcdScdTcdUcdVcdWcdXcdYcdZcdWcdXcdYcdYcdWceacebceccedccLcefbYNapwcegcehcbucbucbucbucbuceicejcekbzBccMccNcgpcgpbPqccObFbbFbccPccQccPbFbccRccSbNSbzBbzBbzBaRJaRIaRJaRIaRJaaabCaaaaaahaaabCaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaahaahbzocbMbzoaahaahaahaahaahbWHcewcexceybWHcezceAceBbWHceCceDceEceFckXceHckZbWHceJceKceLceMbBlceObBRccUceRceSceTceUceVbDVbDWcchceXceYbCmcfacfbcfccfdcfecffcfgcfhcficdBcdCcdDcfjcfkcflcfmcfncfocfpcfpcfqcfqbCncfscftcfuccycfvbepcfwcfxcfybyVcfzcfAcfBcfCcfDcfCcfEcfCcfFcfCbCJbWibCLcfIcfJcfKccKaocaocaoccbucfLcfMccVcfOcfPcfQcfRbzBccWccYccXcdscdicelceecencemcepceocerceqcevbNSceQchMceQchVchVchVchVciIaahaafaaaaahaaabCaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahaaaaaaaaacfHaaaaaaaahaaaaahaaabWHbWHbWHcbObWHcgicgjcgkcglcgmcgncgoceHceHceBclLbWHcgqcgrbWHcaQcgscgtcgucklbCTbCScmDcgycgzcgAcmEccpccpcgCccpcgDcgEcgFcgFcgGcgHcgIcgJcgKcgLcgMcgNcfjcfkcfkcfkcgOcgPcgQcgRcgScgTbDucgVcgWcgXccycgYbepbepbepbepbWibWicfNbWibWibWibWibWibWibWibWibWibWibWibWibWichachbaoccnHcnqcbuchechfbbichhchichjchkbzBcfScfScfTcfScfUcfScfTcfVcfUcfUbNScfScfWcfYcfXbzBbzBbzBcjjcjochVcjpcjjaaabCaaaaaahaahaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahaahaahaaabEzaaaaaaaahaaaabjabjchuchvbWHchwchxchybWHbWHbWHcpzcnIceHcpDchCbWHbWHbWHchDchEbWHchFchFchFchFchFchFchFcqjcgychHchIcqlccpchKchLbDXchNchOcqpcrxchPchRchSchTbAScdBchUcdDbATcjBchWchXchYchZciacjRciccidccyciecifcigccycihciiciiciicijciicikcilcimciiciicinciiciiciiciiciocipciqcircaqciscitciucivbSucbuciwcixbKHcizciAbZNbYxbzBbzBbzBcfZbBIcgabBIcfZbBIcgacgacgbbBIcgbbzBbzBbzBaahaahaahckxchVaTpaahaahaahaahaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahaaaaafaahcgcaahaahaahaaaaahaahbWHbYgciLciMbWHbWHbWHciNbWHbWHbWHbWHbWHbWHbWHciOciPcgqciQciRchFciSciTccebTvcdgchFcrNciYcgBcjacsYccpcjccjdcjecjfctBctgcjhcjibEFcjkbEFcjlcjmchUcjnckBcjqcjqcjqcjqcgdcjscufcjtcjuccycjvcjwcjxccycjycjzcjAcjAcjAcjAcgecjAbEHbEHbEHbEHbEHbEHbEHbEHbEHcjDbWHcjEapxapxapxaocapxavUcbucjFcjGcjHcizcjIcjJcjKcizaahaahcjLaahcjMaahcjLaahcjNcjOcjPaahcjPaahaahaahaahaaaaaackCchVckDaaaaaaaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahaaaaQxaaabBkaaaaahaaaaaaaahaaabWHcjXbWHcewcexcgjcjYcgjcgjcjZckackackackbckackackackcckdckecgfckgckhckickjckkchFcklckmbFFckocklccpckpbFJccpckrckscjhcktckuckvckwckWcjhckyckzckAcjqclNclhckFckEckFckGcjqckHckIckJckKckJccyccyckLbWHcjAbGUbHcckOckPckQbEHbHdbHdbHdbHvbHjbIxbHdbEHcjDbWHckVapwcugcumaocckYcuucbuclaclbchgcizciAcldciycizaahbFvclObBIclObFvclObBIclObFvclPbBIclQbFvaahaaaaahaahaahcmochVcmpaahaahaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahaaaaQxaaabBkaaaaahaaaaaaaahaaabWHcjXbWHcewcexcgjcjYcgjcgjcjZckackackackbckackackackcckdckecgfckgckhckickjckkchFcklckmbFFckocklccpckpbFJccpckrckscjhcktckuckvckwckWcjhckyckzckAcjqclNclhckFckEckFckGcjqckHckIckJckKckJccyccyckLbWHcjAbGUbHcckOckPckQbEHbHdbHdbHdcGNbHjbIxbHdbEHcjDbWHckVapwcugcumaocckYcuucbuclaclbchgcizciAcldciycizaahbFvclObBIclObFvclObBIclObFvclPbBIclQbFvaahaaaaahaahaahcmochVcmpaahaahaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahaahaQxaaabDDaaaaahaaaaaaaahaaabWHbWHbWHbWHbWHbWHbWHbWHbWHcljcmMcmMcgwcgZcgZcgZcgZchlcgZcgZcgZclncloclpclqclrclscltcluclvclwclxclyclzclAclBclCclDclEclFclGbJlclIclJcjhclKchUcjncgdcmqcnlcnmcmrcmsclRcjqclSclTclUclVcjAcaQcgsclWcddcjAclXclYclZcmacmbbEHcmtbKibJQbKubHdcmubKFbEHcmibWHbWHbWHbWHbWHaocaocaoccbucbucbuciBcizcmkcmlcmmcmnaahbFvcmvcmBcmwbFvcnkcnpcnobFvcnEcnScnRbFvaahaaaaahaaabzBcnUcnTcnWcnVaaabCaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahaaaaafaaabEzaahaahaahaahaahaaabWHcmycmzcmAcnXcmCcvvcvwbWHcljcmMcmHcmIcmJcmKcmLcmMcmNcmOcmPcmMcmQcmRcmScmTcmUcmVcmWcmXcmYcmZcnacnbcnacmZcnacnccndcnebKJcngcnhcnibKKbEFckychUcjncjqcnYcoLcoMcnncoEcnZbKLcnrcnscntcnucjAcnvcnwcnxcnycjAcnzcnAcnBcnCcnDbEHbHdbHdbKRbHdbHdbKYbKWbEHcjDbWHcvHcvJbWHbLhbLgcnLbLibLzbLvaoccnPcizcizcnQcizcizaahbFvcoGcoOcoKbFvcoPcpqcoRbFvcprcptcpsbFvaahaahaahaahcnVcpGbIQcpWcpSaahaafaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahaaaaQxaaabEzaahaaaaaaaaaaahaaabLQcobcoccodbMlcmCcofcogbWHcljcmMcohcoicojcokcolcomconcoocopcmMcoqcorcoscotcoubMucowcoxcoycozcoAchochochocoBcoCcoDbMKcoFcngcpYcpXbMWcjhcoIchUcoJcjqcqacpZcqAcqkcqTcqPcjqcqZcoQcracoScjAcoTcoUcoVcoWcjAbMXcoYcoZcpacpbbEHbEHbNebNdbNibNibEHbNjbEHcphcpicpjcpkbWHcplapxapxapxcaNcpmbWHciCcpocizcppcizaMjaahbFvcoGcrhcoGbFvcoPcricoPbFvcrjcrkcrjbFvaahaaaaahaaacpSbIQcrHbIQchVaaabCaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
@@ -8089,14 +8101,14 @@ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahaaaaaaaaaaaaaahaaaaaaaQxaaabEzaaaaaaaahaahaahaaabLQcuscmCcodcmCcutceBcclbWHcljcmMcuvcuwcuxcuycuzcmMcBmcuBcBpcmMcuDcoecuFcuGcBqbTNcuIcdwcuJcpMcuKcuLcuMcuNcBscpMcuPcjhcjhcrKcjhcjhcjhcjhcuRcuScuTcjqcjqcjqcjqcjqcuUcrVcjqcjAcjAcrYcuXcuYccCccAccTcvccvccvccvccvdcvecCfcvdbEHbEHbEHctkcsBcdtcmfbEHcjDbWHctacdubWHcvlcvmcdAcDacDacdObWHaahaahaahaahaahaahaaaaahaaaaaaaaaaaaaaaaaaaaaaaaaahaaaaahaaabCaaaaaaaaahaaaaaaaahaaaaahaahaaaaacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaQxaQxaahaafaQxaaaaafaQxaQxaahaahaahbEzaahaahaahaaaaahaahbLQcmCcutcmCcvpcqscxAcxBcmFcmGcmMcvrcvscetcvuceucmMcuAcvxcvycmMcuQcvAcvAcvAcvAcvAcvBcvCcvDcvEcvFcvGceNcvIcePcpMcvKcvLcvMcvOcDbcvPceKcvQcvRcvScvTcvUcuVcvLcvXcvYcvZcwacuWcwccvzcvicwfcwgceZcwicwjcwkcwlcwmcwncvdcwocwpcwqcwrcwsbEHbEHbEHbEHbEHbEHcwtbWHbWHbWHbWHbWHbWHbWHbLQbWHbWHbWHaaaaahaaaaaaaaaaahaahaahaafbCabCabCaaafbCabCabCaaafbCabNWbCabCaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaachsaaaaaaaaaaahaaaaaaaaaaahaaaaaaaahaaacgcaaaaaaaahaaaaahaaabLQbLQbLQbLQbWHcwycxEbWHbWHcljcmMcmMcmMcmMcmMcmMcmMcmMcvVcmMcmMcwAbWHcwBcfGcDdcwEctzcwFcwGcpMcDicwIcwJcwKcwKcwKcwKcwKcwKcwKcwLcvWcwLcxScwNcwOcwPcxWcwdcwbcwebWHcEicEicEucEicEicwScwVcwWceZcEVcwYcwZcxacxbcxccvdcxdcxecxfcxgcxhcoUcddciRbWHcxickdcxjbWHcylcddbWHaaaaahaaaaaaaaaaaaaahaaaaahaaaaaaaaaaaaaaaaaaaaaaahaaaaahaaaaaaaahaaaaahaaaaahaaaaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaQxaaabEybEybEybEybEyaahaahaahbEybEybEybBkbEyaaaaQxaaaaahaaaaaaaaaaaaaahbWHbWHbWHbWHcyrcljchEcyXcyEceHczbcaQchEciPbZnbWHcxpceHbWHcxqcxrcxscxncxucxvcxwcpMcpMcpMcpMcwKcgUcgxchGchtchJcwKcxCcxDcxIcxFcxGcdCcxHbWHcxKcxJcxMcxLcEicEWcFPcEXcEicyIcxQcxRciDcxTcxUcxVczdcxXcxYcvdcxZcyacybcyccydcoUcyecyfcygcyhchEcyicygcyjctdbLQaahaahaahaahaahaahaahaahaahaaaaaaaaaaaaaaaaaaaaaaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaahbEXbFabFabFabFabFfbEzbFtbFrbFrbFrbFrbFEaahaahaahaahaahaahaahaahaahabjbWHcykbWHczecymciiciiciiciiciiciiciiciociicynceHcyobWHcypcyqcyqcyqcyscytcyucyvcywcyxcyycwKcyzcyAcyBcyCcyDcwKcqXcyFcyGcyHcxGcdCcCZcwRcyJcwRcwRcwRcEicFTcFUcFPcGrczocyMcyNcyOcyPcyQcyRcyRcyScxXcvdcyTcyacyUcyVcyWcoUciEcyYbWHcyZceHczabWHceHczlbWHaaaaahaaaaaaaaaaaaaahaahaaaaaaaaaaaaaaaaaaaaaaaaaahaacaaaaaaaaaaaaaaaaaaaaaaaaaahaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaQxaahbJebJebJebJebJeaaabEzaaabJebJebJebJebJeaaaaQxaaaaaaaaaaaaaahaahciGciFciLczfczgczfceEceBceHceHceHczhcziczjceHceHczkbZpcznbWHczmciHczJczIczqczrczscyvcztczuczvcwKczwczxczyczzczAcwKciJczCcwLcwLczDcdCcjncwRczKczHczMczLcEicGtcFPcGucEicABczPczQcvcczRczSczTczUczVczWcvdczXczYczZcAacyVcoUbWHbWHbWHcqobWHcAbbWHbWHbWHbWHaahaahaaaaaaaaaaaaaaaaahaaaaaaaaaaaaaaaaaaaaaaaaaahaahaaaaaaaaaaaaaaaaaaaaaaaaaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaaaaahaaaaahaahaahaaabKIaaaaahaaaaahaaaaahaaaaQxaaaaaaaaaaahaahaaaabjabjbWHczpbWHceHchEceHceHcAdbWHbWHbWHbWHbWHchEczkcaQcgsbWHcAecAfcAgcAhcAicAjcAkciUcAmcAncAociVcAqcArcAscAtcAuciXcjbcAwcAxcwLcjmcAycAzcAAcAEcADcADcAGcEicGNcGNcGVcEicdHczPcAHcvccvccvccvccvccvccvccvdcvdcvdcAIcvdcvdcoUcxicAJckdcAKbWHceHcALcAMcANcAMabjabjaaaaaaaaaaaaaaaaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaahaaaaaaaaaaaaaaaaaaaaaaaaaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaQxaaabEybEybEybEybEyaahbEzaahbEybEybEybEybEyaahaQxaaaaaaaaaaafaaaaaaaahabjbWHbWHbWHcdebWHcgscAcczBbWHcAQcARcAQbWHcdeczkcBPcBPcBPcBPcBPcBPcBPcATcAUcAVcAWcAXcAYcAZcBacBbcBccBdcBecBfcBgcBhcBicBjcBkcBlcdCczEczFcBncACcACcBocEicGWcGXcGXcEicBrcBtcBucBvcpncCOcBycBzcBAcBBcBCcBDcBEcBFcBGcBHcdecBIceHceHbWHbWHcBJbWHbWHbWHbWHaahaaaaaaaaaaaaaaaaaaaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaahaaaaaaaaaaaaaaaaaaaaaaaaaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahaahaahaahaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaQxaahbEXbFabFabFabFabFfbEzbFtbFrbFrbFrbFrbFEaahcrMaahaahaahaQxaahaahaahaahaahaaabWHbWHbWHbWHbWHbWHbWHbWHbWHbWHbWHcqsczkcBPcjQcBLcBMcBNcBOcBPcBQcBRcBScyvcBTcBUcBVcwKcBWcBXcBXcBXcBYcwKcBZcCacCbcCccCdcCecCgcwRcChczHcCYcDccEicHocHqcHpcGrcIScCicCjcDecClcCmcCncCocCpcCqcCrcCscCqcCtcCucBHbWHcCwbWHcCvcCvcCxcCycCzcCAcCBaahaahaaaaaaaaaaaaaaaaaaaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaahaaaaaaaaaaaaaaaaaaaaaaaaaahaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahaahcCCcjScCCaahaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaQxaahbJebJebJebJebJeaaabSbaahbJebJebJebJebJeaaaaQxaaaaaaaaaaahaaaaaaaaaaaaaahaaaaaaaaaaahaahaaaaaaaaaaahaaaaaabWHceHcCEcDfcCFcCGcCHcCIcCJcCKcCLcCMcCNcyvcjUcjTcCQcwKcCRcCScCTcCUcCVcwKcCWcCXcCXcwLbSLcDgcDUcDScEScDVcEUcETcEicHrcHBcHvcHDcEYcFQcDhcHMcDjcDkcDlcDmcDmcDncDocDpcDqcDrcjVcDtcDucDvcDwcDxcDycDzcDzcDzcDAcjWaahaaaaaaaaaaaaaaaaaaaaaaahaaaaaaaaaaaaaaaaaaaaaaaaaahaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahaahcjScCCckncCCcjSaahaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacrMaaaaahaaaaahaaaaahaaabBkaaaaahaaaaahaahaahaahcrMaaaaaaaaaaahaaaaaaaaaaaaaahaaaaaaaaaaaaaahaaaaaaaaaaahaaaaaabWHchEcDEcBPcDFcDGcDHcDIcDJckqcDLcDMcDNcyvcyvckMcyvcwKcwKcwKcwKcwKcwKcwKckNcwLcwLcAlcFRcwOcwPcApcFScFScGTcGRcEicIhcItcImcIucHLcHQcHPcIdcDXcDYcDZcEacEbcEccEdcEecEfcEgcEhcIycEjcEkcElcEmcEncEocEpcEqcErcjWaahaahaaaaaaaaaaaaaaaaaaaahaaaaaaaaaaaaaaaaaaaaaaaaaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahaahcEtcjScEvckRcExcjScEtaahaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaQxaaabEybEybEybEybEyaahaahaahbEybEybEybBkbEyaaaaQxaaaaahaaaaaaaaaaaaaahbWHbWHbWHbWHcyrcljchEcyXcyEceHczbcaQchEciPbZnbWHcxpceHbWHcxqcxrcxscxncxucxvcxwcpMcpMcpMcpMcwKcgUcgxchGchtchJcwKcxCcxDcxIcxFcxGcdCcxHbWHcxKcxJcxMcxLcEicGVcGXcGWcEicyIcxQcxRciDcxTcxUcxVczdcxXcxYcvdcxZcyacybcyccydcoUcyecyfcygcyhchEcyicygcyjctdbLQaahaahaahaahaahaahaahaahaahaaaaaaaaaaaaaaaaaaaaaaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaahbEXbFabFabFabFabFfbEzbFtbFrbFrbFrbFrbFEaahaahaahaahaahaahaahaahaahabjbWHcykbWHczecymciiciiciiciiciiciiciiciociicynceHcyobWHcypcyqcyqcyqcyscytcyucyvcywcyxcyycwKcyzcyAcyBcyCcyDcwKcqXcyFcyGcyHcxGcdCcCZcwRcyJcwRcwRcwRcEicHocHpcGXcGrczocyMcyNcyOcyPcyQcyRcyRcyScxXcvdcyTcyacyUcyVcyWcoUciEcyYbWHcyZceHczabWHceHczlbWHaaaaahaaaaaaaaaaaaaahaahaaaaaaaaaaaaaaaaaaaaaaaaaahaacaaaaaaaaaaaaaaaaaaaaaaaaaahaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaQxaahbJebJebJebJebJeaaabEzaaabJebJebJebJebJeaaaaQxaaaaaaaaaaaaaahaahciGciFciLczfczgczfceEceBceHceHceHczhcziczjceHceHczkbZpcznbWHczmciHczJczIczqczrczscyvcztczuczvcwKczwczxczyczzczAcwKciJczCcwLcwLczDcdCcjncwRczKczHczMczLcEicHqcGXcHrcEicABczPczQcvcczRczSczTczUczVczWcvdczXczYczZcAacyVcoUbWHbWHbWHcqobWHcAbbWHbWHbWHbWHaahaahaaaaaaaaaaaaaaaaahaaaaaaaaaaaaaaaaaaaaaaaaaahaahaaaaaaaaaaaaaaaaaaaaaaaaaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaaaaahaaaaahaahaahaaabKIaaaaahaaaaahaaaaahaaaaQxaaaaaaaaaaahaahaaaabjabjbWHczpbWHceHchEceHceHcAdbWHbWHbWHbWHbWHchEczkcaQcgsbWHcAecAfcAgcAhcAicAjcAkciUcAmcAncAociVcAqcArcAscAtcAuciXcjbcAwcAxcwLcHvcAycHBcAAcAEcADcADcAGcEicIhcIhcImcEicdHczPcAHcvccvccvccvccvccvccvccvdcvdcvdcAIcvdcvdcoUcxicAJckdcAKbWHceHcALcAMcANcAMabjabjaaaaaaaaaaaaaaaaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaahaaaaaaaaaaaaaaaaaaaaaaaaaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaQxaaabEybEybEybEybEyaahbEzaahbEybEybEybEybEyaahaQxaaaaaaaaaaafaaaaaaaahabjbWHbWHbWHcdebWHcgscAcczBbWHcAQcARcAQbWHcdeczkcBPcBPcBPcBPcBPcBPcBPcATcAUcAVcAWcAXcAYcAZcBacBbcBccBdcBecBfcBgcBhcBicBjcBkcBlcdCczEczFcBncACcACcBocEicItcNScNScEicBrcBtcBucBvcpncCOcBycBzcBAcBBcBCcBDcBEcBFcBGcBHcdecBIceHceHbWHbWHcBJbWHbWHbWHbWHaahaaaaaaaaaaaaaaaaaaaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaahaaaaaaaaaaaaaaaaaaaaaaaaaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahaahaahaahaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaQxaahbEXbFabFabFabFabFfbEzbFtbFrbFrbFrbFrbFEaahcrMaahaahaahaQxaahaahaahaahaahaaabWHbWHbWHbWHbWHbWHbWHbWHbWHbWHbWHcqsczkcBPcjQcBLcBMcBNcBOcBPcBQcBRcBScyvcBTcBUcBVcwKcBWcBXcBXcBXcBYcwKcBZcCacCbcCccCdcCecCgcwRcChczHcCYcDccEicQPcRDcQUcGrcIScCicCjcDecClcCmcCncCocCpcCqcCrcCscCqcCtcCucBHbWHcCwbWHcCvcCvcCxcCycCzcCAcCBaahaahaaaaaaaaaaaaaaaaaaaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaahaaaaaaaaaaaaaaaaaaaaaaaaaahaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahaahcCCcjScCCaahaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaQxaahbJebJebJebJebJeaaabSbaahbJebJebJebJebJeaaaaQxaaaaaaaaaaahaaaaaaaaaaaaaahaaaaaaaaaaahaahaaaaaaaaaaahaaaaaabWHceHcCEcDfcCFcCGcCHcCIcCJcCKcCLcCMcCNcyvcjUcjTcCQcwKcCRcCScCTcCUcCVcwKcCWcCXcCXcwLbSLcDgcDUcDScEScDVcEUcETcEicSDcWycSYcHDcEYcFQcDhcHMcDjcDkcDlcDmcDmcDncDocDpcDqcDrcjVcDtcDucDvcDwcDxcDycDzcDzcDzcDAcjWaahaaaaaaaaaaaaaaaaaaaaaaahaaaaaaaaaaaaaaaaaaaaaaaaaahaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahaahcjScCCckncCCcjSaahaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacrMaaaaahaaaaahaaaaahaaabBkaaaaahaaaaahaahaahaahcrMaaaaaaaaaaahaaaaaaaaaaaaaahaaaaaaaaaaaaaahaaaaaaaaaaahaaaaaabWHchEcDEcBPcDFcDGcDHcDIcDJckqcDLcDMcDNcyvcyvckMcyvcwKcwKcwKcwKcwKcwKcwKckNcwLcwLcAlcFRcwOcwPcApcFScFScGTcGRcEicWzcWBcWAcIucHLcHQcHPcIdcDXcDYcDZcEacEbcEccEdcEecEfcEgcEhcIycEjcEkcElcEmcEncEocEpcEqcErcjWaahaahaaaaaaaaaaaaaaaaaaaahaaaaaaaaaaaaaaaaaaaaaaaaaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahaahcEtcjScEvckRcExcjScEtaahaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaQxaaabEybEybEybEybEyaahcaBaahbEybEybEybEybEyaahaQxaaaaaaaaaaafaahcEycEycEyckScEycEycEyaaaaahaaaaaaaaaaahaaaaaabWHcAvczkcBPcuEckTcDGcECclfcBPcEEcEFcEGcBPcEHcEIcEJcEKclccEMclccENclccEOcEMcEPcEKcEQckycdCcIfcwRcwTcIgcDTcwTcGScGScGScGScGScFacuXcFbcBvcFccFccFdcFecFfcFgcFhcFicFjcFkcFlcBHcFmcFncFocBvcFpcjWcjWcCvcjWcCvatJaahaaaaaaaahaaaaaaaahaahaahaaaaaaaaaaaaaaaaahaaaaahaaaaaaaaaaaaaaaaaaaaaaaaaahaaaaahaaaaaaaaaaaaaaaaaaaaaaaaaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaahaaaaahaahcjScjScFvcFwcFwcFwcFxcjScjSaahaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaQxaahbEXbFabFabFabFabFfbEzbFtbFrbFrbFrbFrbFEaahaQxaaaaahaahaQxaaacEycFycFzcFycFAcFycEycEyckScEyckScEycEyaahaahbWHciRczkcBPcBPcBPcBPcBPcBPcBPcFBcFCcFDcFEcFFcFGcFHcEKclecFJclccEMclccFKcFLcFMcEKcFNckycdCcstctMcIlcIAcIscILcIPcIMcJccIQcEZcwUczPcwWcBHcBHcBHcBHcBHcBHcFWcFVcFXcFYcFZcGacBHbWHcCwbWHcCvcGbcGccGdcGecGfatJatJaahaahaahaahaahaahaahaaaaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahcGgcGhcGgcFwcGicFwcGjcGkcCCaahaahaahaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaQxaahbJebJebJebJebJeaaabSbaaabJebJebJebJebJeaaacrMaahaahaaaaQxaahcEycGlcGmcGncGocGlclHcAOcAFcGscAPcBwcEyaaaaaabWHbWHcGvcGwcGwcGxcGwcGycGzcIDcGAcGBcGCcGDcGEcGFcGGcGHcGIcGJcGIcGIcGKcGLcGMclMcGOcGPcGQcCecIOcINcFOcIRcJecJdcJdcJdcJwcJtcEZcdHczPcGZcBHcHacHbcHccHdcHecHfcHecHgcHhcHicBHcoUcHjbZkcddcCvcCvcCvcCvcCvbEMagqatJaahaaaaaaaaaaaaaaaaahaahaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahaaaaaaaaaaaaaaaaaaaahaahcjScjScHlcFwcFwcFwcHmcjScjSaahaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
@@ -8105,17 +8117,17 @@ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaQxaafaQxaQxaQxaaaaaaaaacfraaaaaaaaaaQxaQxaQxcrMaQxaahaahaaaaQxaaackScCPcJfcJgcJhcJicnGcJkcJlcJmcJncJocnJcJqcJrcJscnKcJucJgcJvcnMcJAcJycnNcJAcJBcJCcvncvkcvqcvocvtcEKcEKcEKcEKcEKcEKcEKcJFcEKcEKbWHcJGcdCcjncGScIKcHNcHOcGUcHOcKscJJcKucKIcKCcJNcJIcDscJPcJPcJPcJPcJPcJQcJPcJRcKJcJTcBHceHceHcJUceHbWHbWHbWHaahaahaaaaaaaahaaaaaaaaaaaaaaaaaaaaaaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahaahcCCcjScCCaahaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahaaaaahaaaaaaaaaaQxaahczcaahaQxaaaaaaaahaaaaaaaahaaaaahaahaahaaacEycDBcJWcJXcJYcJZcnOcKbcKccKdcKecKfcEyckSckSckScEycKjcKkcKlcEycoacKncBPcDCcDKcDDcDObWHcwucwhcwvbWHcKvckacKwckbckacKxcKycAJckecKzcKAcKBcCZcGScovcKDcKEcKEcKEcKFcKGcKHcLbcKQcKKcKLcKMcKNcKOcKPcoHcKRcKScKTcKUcKVcKWcKXckdckdcKYcKZcLacDPbWHbWHbWHabjaaaaahaaaaaaaaaaaaaaaaaaaaaaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahaahaahaahaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahaaaaaaaaaaQxaaaaahaaaaQxaaaaaaaahaahaahaahaaaaaaaaaaahaahcEycpccoXcHncpdcpccLfcLgcLhcLicLjcLkcEycLlaaaaaacoUcoUcoUcoUcoUbWHcLmcBPcBPcBPcBPcBPbWHcJScKtcwxbWHcLqbWHbWHbWHbWHbWHbWHbWHbWHcxWcLrcLscLtcDQcpecLwcLxcpfcLdcLccGUcLecLvcLucLCcJVcLEcLFcLGcLHcLIcLJcLKcKTciPcLLbWHbWHbWHbWHbWHcLocLMcLNciLcLOciLcpgaahaahaaaaaaaaaaaaaaaaaaaaaaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaQxaQxaQxaQxaQxaaaaaaaaaaaaaaaaaaaaaaaaaaaaahaaacEycLQcLRcHncLRcLScLTcHncHncpucHncHncEyaahaahaahbWHcgscdecDWcLVcLWcLXckdcLycLZcEscMbbWHcwQcwCcxtcxmcMebWHcMfcMgcMhbWHcMicMjcMkbWHcMlcMmcMncGScpAcMpcMqcpBcLAcLzcGUcLBcGScMucMvcLDcLEcMxcMycMzcpCcMBcMCcKTceHcMDbWHcEwcMFcEzbWHcMHcMIcEAbWHbWHbWHabjaaaaahaaaaaaaaaaaaaaaaaaaaaaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaQxaQxaQxaQxaQxaaaaaaaaaaaaaaaaaaaaaaaaaaaaahaaacEycLQcLRcHncLRcLScLTcHncHncWCcHncHncEyaahaahaahbWHcgscdecDWcLVcLWcLXckdcLycLZcEscMbbWHcwQcwCcxtcxmcMebWHcMfcMgcMhbWHcMicMjcMkbWHcMlcMmcMncGScpAcMpcMqcpBcLAcLzcGUcLBcGScMucMvcLDcLEcMxcMycMzcpCcMBcMCcKTceHcMDbWHcEwcMFcEzbWHcMHcMIcEAbWHbWHbWHabjaaaaahaaaaaaaaaaaaaaaaaaaaaaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaaacEycMKcMLcHncMMcMNcLTcEBcMPcMQcEDcELcEyaaaaahaaabWHcMTcMUcMVcMWcMXcMYcMZcMYcMYcNacMDbWHbWHbWHbWHbWHcLqbWHcNbcNccNdcNecNfcNgcNhcNicNjcNkcNlcGScGScGScGScGScKacGScKgcoUcoUcLPcLUcjAcKTcKTcKTcKTcKTcKTcKTcKTceHcNpcNqcNrcNscNtcNucNucNvcNwcNuaaaaaaaaaaaaaahaahaaaaaaaahaaaaaaaahaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaQxaaacEycFqcERcHncERcFqcNzcFrcNBcNCcNDcNEckSaaaaaacNFbWHcNGbWHbWHbWHcNHbWHbWHbWHbWHcNIcNJcNKcNLcNMcNKcNNcNOcNPcNQcNRcNScNTcNUcNVcNWcNWcNXcNYcNZcOacObcOcckdckdcOdckdcLYckecOfcMacMdcMccOfcOjckdckdcOkcKXckdckdckdcOlbWHckVcFscOncNucOocOpcOqcNuaahaahaahaahaahaahaahaahaahaahaahaahaacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahaahcEycEyckScEyckScEycOrcOscOtcOucOvcOwcEyaahaahcNFcpEcOycNFcOzcOAcOBcOCcODcMobWHbWHbWHbWHcOFbWHbWHbWHbWHbWHcMscNRcOHcNRcOIcOJcOKcNRcOLcOMcMtbWHbWHbWHbWHbWHbWHczacOOcdebWHcMwcMEcMAbWHcgscdecOSbWHbWHbWHbWHbWHbWHbWHbWHbWHcrFcNucOTcOUcOVcNuaaaaahaaaaaaaaaaaaaaaaaaaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaQxaaacEycFqcERcHncERcFqcNzcFrcNBcNCcNDcNEckSaaaaaacNFbWHcNGbWHbWHbWHcNHbWHbWHbWHbWHcNIcNJcNKcNLcNMcNKcNNcNOcNPcNQcNRcWDcNTcNUcNVcNWcNWcNXcNYcNZcOacObcOcckdckdcOdckdcLYckecOfcMacMdcMccOfcOjckdckdcOkcKXckdckdckdcOlbWHckVcFscOncNucOocOpcOqcNuaahaahaahaahaahaahaahaahaahaahaahaahaacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahaahcEycEyckScEyckScEycOrcOscOtcOucOvcOwcEyaahaahcNFcpEcOycNFcOzcOAcOBcOCcODcMobWHbWHbWHbWHcOFbWHbWHbWHbWHbWHcMscNRcOHcNRcOIcOJcOKcNRcOLcWEcMtbWHbWHbWHbWHbWHbWHczacOOcdebWHcMwcMEcMAbWHcgscdecOSbWHbWHbWHbWHbWHbWHbWHbWHbWHcrFcNucOTcOUcOVcNuaaaaahaaaaaaaaaaaaaaaaaaaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaaaaahaahaahcOWcOXcKicKhcPacKmcpOcpNcpPcEyaaaaaacNFcPfcPgcNFcpTcPicqgcPkcNFcNFcPlcqhcqicPocPpcPqcMGcFtcFucPucPvcNRcOHcNRcPwcPxcPycNRcPzcPAcPBcPCcPDcPEcPFcPGbWHcPHbWHbWHbWHcMJcMRcMObWHbWHbWHbLQbWHcPLcPMcPNbWHcPOcPPcPQbWHcqqcNucPRcPScPTcNuaaaaahaaaaaaaaaaaaaaaaaaaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaQxaaaaahaaaaaacPUaahbzXcEycEycEycEycEycEycEyaaaaaacNFcqmcPWcNFcqxcqncqycQacNFcQbcQccrgcrycrlcHkcGYcQdcQdcQjcQkcQlcQmcQncNRcPwcQecPycNRcOLcOMcPwcqzcQqcNRcQrcQsbWHcQtbWHaahaaacMScNmcMSaaaaaaaahaaabWHcjEceHceHcQwcgncQxcgncQycQzcNucqLcQBcqLcNuaaaaahaaaaahaahaaaaaaaahcrMaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaahaahaahaaaaaaaaaaahaahaahaaaaaaaaaaahaaaaaaaaacNFcQDcQEcQFcQGcQHcQIcQJcNFcQKcNFcQfcQhcQgcQocQicrycrycQQcQRcQScQTcQUcQVcPwcQWcPycNRcOLcQXcQYcQZcRacRbcRccRdbWHcPHbWHaahaahcMScNncMSaahaahaahaaabWHcRgceHceHcRhcRibZlcRjbWHbLQcNucqLcRlcqLaahaaaaahaaaaaaaahaahaahaahaQxaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaahaahaahaaaaaaaaaaahaahaahaaaaaaaaaaahaaaaaaaaacNFcQDcQEcQFcQGcQHcQIcQJcNFcQKcNFcQfcQhcQgcQocQicrycrycQQcQRcQScQTcQTcQVcPwcQWcPycNRcOLcQXcQYcQZcRacRbcRccRdbWHcPHbWHaahaahcMScNncMSaahaahaahaaabWHcRgceHceHcRhcRibZlcRjbWHbLQcNucqLcRlcqLaahaaaaahaaaaaaaahaahaahaahaQxaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaaaaaaaaaaaaaaaaahaaaaaaaaaaahaaaaaaaaacNFcqmcRmcNFcRncRocRpcRqcRrcRscNFcRtcRucRvcRwcRxcRycRzcFucPucPycNRcRAcRBcRCcQLcREcQTcRFcRGcRHcRIcRIcqQcqUcRIbWHabjaahaaaaaacMScNocMSaaaaaaaahaahbWHcRNcROcRPbWHcRQcRRcRPbWHaaaaahcqLcQBcqLaahaaaaahaaaaaaaahaahaaaaaaaQxaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaagaafaaaaaaaahaafaagaafaahaafaafaafaahcPlcPlcPlcNFcNFcNFcNFcRTcRUcNFcNFcNFcRVcRWcRXcRwcRYcRZcSacPlcPlcPycNRcNRcNRcPwcPxcPycNRcSbcSccSdcqVaahaahaaaaaaaahabjaahaaacNycNxcNAcNxcOeaaaaahaaabWHbWHbWHbWHbWHbWHbWHbWHbWHaaaaahaaacqWaaaaahaahaahaahaahaahaaaaaaaahaQxaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaagaaaaaacKqcSkcSlcPlcQMcQOcQNcSpcSqcrzcPlcSscStcSucSvcRwcRxcRycRzcSwcPlcOgcNRcSycSzcSAcSBcSCcSzcSDcNRcOhcRIaaaaahaahaahaahaahaahaahcNxcOicOxcOmcNxaahaahaaaaaaaahaaaaaaaaaaaaaaaaahaaaaaaaahaaacqWaaaaahaahaaaaaaaaaaahaaaaaaaaacrMaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaagaaaaaacKqcSJcSlcSKcSLcSLcSLcSMcSNcSOcOEcSQcSRcSQcSScSLcSTcSScSUcSVcFucSWcSXcSYcSXcSXcSXcSXcSXcSYcSXcSZcqVaaaaahaaaaaaaahaaaaaaaaacNxcOGcOPcONcORcOQaahaahaahaahaahaahaahaahaahaahaahaahaahaaacrBcrAcrAcrAcrCaaaaaaaaaaaaaaaaaaaQxaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaagaaaaaacKqcSkcSlcPlcQMcQOcQNcSpcSqcrzcPlcSscStcSucSvcRwcRxcRycRzcSwcPlcOgcNRcSycSzcSAcSBcSCcSzcWGcNRcOhcRIaaaaahaahaahaahaahaahaahcNxcOicOxcOmcNxaahaahaaaaaaaahaaaaaaaaaaaaaaaaahaaaaaaaahaaacqWaaaaahaahaaaaaaaaaaahaaaaaaaaacrMaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaagaaaaaacKqcSJcSlcSKcSLcSLcSLcSMcSNcSOcOEcSQcSRcSQcSScSLcSTcSScSUcSVcFucSWcSXcWHcSXcSXcSXcSXcSXcWIcSXcSZcqVaaaaahaaaaaaaahaaaaaaaaacNxcOGcOPcONcORcOQaahaahaahaahaahaahaahaahaahaahaahaahaahaaacrBcrAcrAcrAcrCaaaaaaaaaaaaaaaaaaaQxaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaagaaaaaacKqcSJcThcSqcTicTjcTicTkcTlcTmcOYcTocTpcTqcTqcrDcTqcTqcTscTtcPlcTucTvcTwcTvcTvcTxcTvcTvcTycTzcTAcRIaahaahaaacNxcNxcNxcNxcNxcNxcOZcPccPbcNxcNxcNxcNxcNxcNxaaaaahaaaaaaaaaaahaaaaaaaahaaaaaaaaaaaaaaacqWaaaaaaaahaaaaaaaaacrMaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaagaahaaacKqcTFcSlcSqcTicTicTicTGcPlcPlcPlcPlcFIcrEcRwcTJcRwcrEcTKcPlcPlcqVcTMcqVcTMcqVcqVcqVcTMcTMcqVcqVcRIaaaaahaahcNxcPecPdcPjcPhcNxcPmcPncNxcNxcPrcPtcPscPIcNxaahaahaahaahaaaaahaahcrMaQxcrMaahaahaahaahcqWaahaahaahaahaahaafaQxaQxaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahaahcPlcPlcPlcUdcRwcRwcUecRwcUfcUgcPlcUhcUicUjcUjcUkcUjcUjcGpcPlaaacqVcLncqVcTvcqVaaacqVcTvcLpcqVaaaaaaaaaaahaaacMScPKcPJcPXcPVcPVcPYcQpcPZcQucQucQAcQvcQCcMSaaaaahaaaaahaahaahaahaaaaahaaaaahaaaaaaaaacrJaaaaaaaahaaaaaaaaaaaacrMaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
File diff suppressed because it is too large Load Diff
+2 -2
View File
@@ -151,7 +151,7 @@
"cU" = (/obj/machinery/door/airlock/maintenance_hatch,/turf/simulated/floor/plasteel/airless{icon_state = "dark"},/area/tcommsat/chamber)
"cV" = (/turf/simulated/floor/plasteel/airless{icon_state = "dark"},/area/tcommsat/chamber)
"cW" = (/obj/machinery/door/airlock/hatch,/turf/simulated/floor/plasteel/airless{icon_state = "dark"},/area/tcommsat/chamber)
"cX" = (/turf/simulated/floor/plasteel{icon_state = "solarpanel"},/area/space)
"cX" = (/turf/simulated/floor/goonplaque{desc = "\"A strange floating piece of floor tile out in space. If the inscription on the side is anything to go by, this has been here for years."; name = "strange old tile"},/area/space)
"cY" = (/obj/structure/window/reinforced{dir = 4},/obj/structure/lattice,/turf/space,/area/space)
"cZ" = (/obj/structure/window/reinforced{dir = 8},/obj/item/weapon/shard{icon_state = "medium"},/turf/simulated/floor/plasteel/airless{icon_state = "dark"},/area/tcommsat/chamber)
"da" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plating/airless,/area/tcommsat/chamber)
@@ -319,7 +319,7 @@
"gg" = (/obj/machinery/sleeper{dir = 4; use_power = 0},/obj/effect/decal/cleanable/dirt{desc = "A thin layer of dust coating the floor."; name = "dust"},/turf/simulated/floor/plasteel/shuttle{icon_state = "shuttlefloor3"},/area/shuttle/abandoned)
"gh" = (/obj/structure/optable,/obj/item/weapon/surgical_drapes,/obj/item/weapon/storage/firstaid/regular,/obj/effect/decal/cleanable/dirt{desc = "A thin layer of dust coating the floor."; name = "dust"},/turf/simulated/floor/plasteel/shuttle{icon_state = "shuttlefloor3"},/area/shuttle/abandoned)
"gi" = (/obj/structure/closet/crate/freezer,/obj/item/weapon/reagent_containers/blood/empty{pixel_x = -3; pixel_y = -3},/obj/item/weapon/reagent_containers/blood/OMinus,/obj/item/weapon/reagent_containers/blood/random,/obj/effect/decal/cleanable/dirt{desc = "A thin layer of dust coating the floor."; name = "dust"},/obj/effect/decal/cleanable/xenoblood,/turf/simulated/floor/plasteel/shuttle{icon_state = "shuttlefloor3"},/area/shuttle/abandoned)
"gj" = (/obj/structure/table,/obj/item/weapon/wrench,/obj/item/weapon/crowbar,/obj/item/clothing/suit/apron,/obj/item/weapon/shovel/spade,/obj/item/weapon/screwdriver,/obj/item/device/analyzer/plant_analyzer,/obj/item/weapon/cultivator,/obj/item/weapon/reagent_containers/glass/bucket,/obj/effect/decal/cleanable/dirt{desc = "A thin layer of dust coating the floor."; name = "dust"},/turf/simulated/floor/plasteel/shuttle{icon_state = "shuttlefloor3"},/area/shuttle/abandoned)
"gj" = (/obj/structure/table,/obj/item/weapon/wrench,/obj/item/weapon/crowbar,/obj/item/clothing/suit/apron,/obj/item/weapon/shovel/spade,/obj/item/weapon/cultivator,/obj/effect/decal/cleanable/dirt{desc = "A thin layer of dust coating the floor."; name = "dust"},/obj/item/weapon/wirecutters,/obj/item/device/analyzer/plant_analyzer,/obj/item/weapon/reagent_containers/glass/bucket,/turf/simulated/floor/plasteel/shuttle{icon_state = "shuttlefloor3"},/area/shuttle/abandoned)
"gk" = (/obj/structure/sink{dir = 4; icon_state = "sink"; pixel_x = 11; pixel_y = 0},/obj/effect/decal/cleanable/dirt{desc = "A thin layer of dust coating the floor."; name = "dust"},/turf/simulated/floor/plasteel/shuttle,/area/shuttle/abandoned)
"gl" = (/obj/structure/sink{icon_state = "sink"; dir = 8; pixel_x = -12; pixel_y = 2},/obj/effect/decal/cleanable/dirt{desc = "A thin layer of dust coating the floor."; name = "dust"},/turf/simulated/floor/plasteel/shuttle,/area/shuttle/abandoned)
"gm" = (/obj/machinery/smartfridge{use_power = 0},/turf/simulated/wall/shuttle{tag = "icon-swall3"; icon_state = "swall3"; dir = 2},/area/shuttle/abandoned)
@@ -3853,7 +3853,7 @@
"bwe" = (/turf/simulated/floor/plasteel{icon_state = "white"},/area/toxins/explab)
"bwf" = (/obj/structure/extinguisher_cabinet{pixel_x = 5; pixel_y = -32},/obj/machinery/atmospherics/components/unary/vent_scrubber{dir = 1; on = 1; scrub_N2O = 0; scrub_Toxins = 0},/turf/simulated/floor/plasteel{icon_state = "white"},/area/toxins/explab)
"bwg" = (/obj/machinery/atmospherics/pipe/manifold/general/visible{dir = 8},/turf/simulated/floor/plating,/area/maintenance/asmaint2)
"bwh" = (/obj/machinery/atmospherics/components/unary/cold_sink/freezer,/turf/simulated/floor/plating,/area/maintenance/asmaint2)
"bwh" = (/obj/machinery/atmospherics/components/unary/cold_sink/freezer{dir = 8},/turf/simulated/floor/plating,/area/maintenance/asmaint2)
"bwi" = (/turf/simulated/wall,/area/quartermaster/qm)
"bwj" = (/obj/machinery/door/airlock/glass_mining{name = "Quartermaster"; req_access_txt = "41"},/turf/simulated/floor/plasteel,/area/quartermaster/qm)
"bwk" = (/obj/structure/grille,/obj/structure/window/reinforced/fulltile,/turf/simulated/floor/plating,/area/quartermaster/qm)
+2 -2
View File
@@ -15,7 +15,7 @@ z7 = empty space
#if !defined(MAP_FILE)
#include "map_files\MetaStation\MetaStation.v41A.II.dmm"
#include "map_files\MetaStation\MetaStation.v41D.dmm"
#include "map_files\MetaStation\z2.dmm"
#include "map_files\MetaStation\z3.dmm"
#include "map_files\MetaStation\z4.dmm"
@@ -23,7 +23,7 @@ z7 = empty space
#include "map_files\generic\z6.dmm"
#include "map_files\generic\z7.dmm"
#define MAP_FILE "MetaStation.v41A.II.dmm"
#define MAP_FILE "MetaStation.v41D.dmm"
#define MAP_NAME "MetaStation"
#elif !defined(MAP_OVERRIDE)
@@ -20,7 +20,7 @@ On top of that, now people can add component-speciic procs/vars if they want!
#define NODE3 "n3"
/obj/machinery/atmospherics/components/
var/welded = 0 //Used on pumps and scrubbers
var/welded //Used on pumps and scrubbers
var/showpipe = 0
var/device_type = 0//used for initialization stuff
@@ -148,7 +148,7 @@ Pipenet stuff; housekeeping
parents["p[I]"] = reference
break
/obj/machinery/atmospherics/components/returnPipenet(obj/machinery/atmospherics/A)
/obj/machinery/atmospherics/components/returnPipenet(obj/machinery/atmospherics/A = nodes[NODE1]) //returns PARENT1 if called without argument
for(var/I = 1; I <= device_type; I++)
if(A == nodes["n[I]"])
return parents["p[I]"]
@@ -159,7 +159,7 @@ Pipenet stuff; housekeeping
P = New
break
/obj/machinery/atmospherics/components/unsafe_pressure_release(var/mob/user, var/pressures) //untestable; I'll fix this last
/obj/machinery/atmospherics/components/unsafe_pressure_release(var/mob/user, var/pressures)
..()
var/turf/T = get_turf(src)
@@ -199,6 +199,7 @@ Helpers
*/
/obj/machinery/atmospherics/components/proc/update_parents()
for(var/I = 1; I <= device_type; I++)
var/datum/pipeline/parent = parents["p[I]"]
parent.update = 1
for(var/P in parents)
var/datum/pipeline/parent = parents["[P]"]
if (parent && istype(parent))
parent.update = 1
@@ -28,7 +28,7 @@ Filter types:
1: Oxygen: Oxygen ONLY
2: Nitrogen: Nitrogen ONLY
3: Carbon Dioxide: Carbon Dioxide ONLY
4: Sleeping Agent (NODE2O)
4: Sleeping Agent (N2O)
*/
var/frequency = 0
@@ -119,7 +119,7 @@
return 1
/obj/machinery/atmospherics/components/trinary/mxer/attack_hand(mob/user)
/obj/machinery/atmospherics/components/trinary/mixer/attack_hand(mob/user)
if(..())
return
@@ -57,11 +57,14 @@
icon_state = "freezer"
return
/obj/machinery/atmospherics/components/unary/cold_sink/freezer/attack_ai(mob/user) return interact(user)
/obj/machinery/atmospherics/components/unary/cold_sink/freezer/attack_ai(mob/user)
return interact(user)
/obj/machinery/atmospherics/components/unary/cold_sink/freezer/attack_paw(mob/user) return interact(user)
/obj/machinery/atmospherics/components/unary/cold_sink/freezer/attack_paw(mob/user)
return interact(user)
/obj/machinery/atmospherics/components/unary/cold_sink/freezer/attack_paw(mob/user) return interact(user)
/obj/machinery/atmospherics/components/unary/cold_sink/freezer/attack_hand(mob/user)
return interact(user)
/obj/machinery/atmospherics/components/unary/cold_sink/freezer/interact(mob/user)
if(stat & (NOPOWER|BROKEN))
@@ -181,11 +184,14 @@
icon_state = "heater"
return
/obj/machinery/atmospherics/components/unary/heat_reservoir/heater/attack_ai(mob/user) return src.attack_hand(user)
/obj/machinery/atmospherics/components/unary/heat_reservoir/heater/attack_ai(mob/user)
return src.attack_hand(user)
/obj/machinery/atmospherics/components/unary/heat_reservoir/heater/attack_paw(mob/user) return src.attack_hand(user)
/obj/machinery/atmospherics/components/unary/heat_reservoir/heater/attack_paw(mob/user)
return src.attack_hand(user)
/obj/machinery/atmospherics/components/unary/heat_reservoir/heater/attack_paw(mob/user) return interact(user)
/obj/machinery/atmospherics/components/unary/heat_reservoir/heater/attack_hand(mob/user)
return interact(user)
/obj/machinery/atmospherics/components/unary/heat_reservoir/heater/interact(mob/user)
var/datum/gas_mixture/air_contents = airs[AIR1]
@@ -136,7 +136,7 @@
*
* @return nothing
*/
/obj/machinery/atmospherics/components/unary/cry_cell/ui_interact(mob/user, ui_key = "main", datum/nanoui/ui = null)
/obj/machinery/atmospherics/components/unary/cryo_cell/ui_interact(mob/user, ui_key = "main", datum/nanoui/ui = null)
if(user == occupant || user.stat || panel_open)
return
@@ -28,20 +28,20 @@ Housekeeping and pipe network stuff below
..(node_connects)
/obj/machinery/atmospherics/components/unary/default_change_direction_wrench(mob/user, obj/item/weapon/wrench/W)
if(..())
return 0
initialize_directions = dir
if(!..())
return
SetInitDirections()
var/obj/machinery/atmospherics/node = nodes[NODE1]
if(node)
node.disconnect(src)
node = null
nullifyPipenet(parents[PARENT1])
atmosinit()
node = nodes[NODE1]
initialize()
if(node)
node.atmosinit()
node.initialize()
node.addMember(src)
build_network()
. = 1
nodes[NODE1] = node
. = 1
@@ -11,6 +11,8 @@
can_unwrench = 1
welded = 0
var/area/initial_loc
level = 1
var/area_uid
@@ -3,25 +3,32 @@
name = "air scrubber"
desc = "Has a valve and pump attached to it"
use_power = 1
idle_power_usage = 10
active_power_usage = 60
level = 1
can_unwrench = 1
welded = 0
var/area/initial_loc
var/id_tag = null
var/frequency = 1439
var/datum/radio_frequency/radio_connection
var/list/turf/simulated/adjacent_turfs = list()
var/on = 0
var/scrubbing = 1 //0 = siphoning, 1 = scrubbing
var/scrub_CO2 = 1
var/scrub_Toxins = 0
var/scrub_N2O = 0
var/volume_rate = 120
var/panic = 0 //is this scrubber panicked?
var/volume_rate = 200
var/widenet = 0 //is this scrubber acting on the 3x3 area around it.
var/area_uid
var/radio_filter_out
@@ -45,7 +52,34 @@
/obj/machinery/atmospherics/components/unary/vent_scrubber/Destroy()
if(radio_controller)
radio_controller.remove_object(src,frequency)
if(initial_loc)
initial_loc.air_scrub_info -= id_tag
initial_loc.air_scrub_names -= id_tag
..()
/obj/machinery/atmospherics/components/unary/vent_scrubber/auto_use_power()
if(!powered(power_channel))
return 0
if (!on || welded)
return 0
if(stat & (NOPOWER|BROKEN))
return 0
var/amount = idle_power_usage
if (scrubbing)
if (scrub_CO2)
amount += idle_power_usage
if (scrub_Toxins)
amount += idle_power_usage
if (scrub_N2O)
amount += idle_power_usage
else
amount = active_power_usage
if (widenet)
amount += amount*(adjacent_turfs.len*(adjacent_turfs.len/2))
use_power(amount, power_channel)
return 1
/obj/machinery/atmospherics/components/unary/vent_scrubber/update_icon_nopipes()
overlays.Cut()
@@ -84,10 +118,10 @@
"timestamp" = world.time,
"power" = on,
"scrubbing" = scrubbing,
"panic" = panic,
"widenet" = widenet,
"filter_co2" = scrub_CO2,
"filter_toxins" = scrub_Toxins,
"filter_NODE2o" = scrub_N2O,
"filter_n2o" = scrub_N2O,
"sigtype" = "status"
)
if(!initial_loc.air_scrub_names[id_tag])
@@ -104,6 +138,7 @@
radio_filter_out = frequency==initial(frequency)?(RADIO_TO_AIRALARM):null
if (frequency)
set_frequency(frequency)
check_turfs()
..()
/obj/machinery/atmospherics/components/unary/vent_scrubber/initialize()
..()
@@ -119,16 +154,26 @@
//broadcast_status()
if(!on || welded)
return 0
scrub(loc)
if (widenet)
for (var/turf/simulated/tile in adjacent_turfs)
scrub(tile)
/obj/machinery/atmospherics/components/unary/vent_scrubber/proc/scrub(var/turf/simulated/tile)
if (!tile || !istype(tile))
return 0
var/datum/gas_mixture/environment = tile.return_air()
var/datum/gas_mixture/air_contents = airs[AIR1]
var/datum/gas_mixture/environment = loc.return_air()
if(scrubbing)
if((environment.toxins>0) || (environment.carbon_dioxide>0) || (environment.trace_gases.len>0))
var/transfer_moles = min(1, volume_rate/environment.volume)*environment.total_moles()
//Take a gas sample
var/datum/gas_mixture/removed = loc.remove_air(transfer_moles)
var/datum/gas_mixture/removed = tile.remove_air(transfer_moles)
if (isnull(removed)) //in space
return
@@ -155,8 +200,8 @@
//Remix the resulting gases
air_contents.merge(filtered_out)
loc.assume_air(removed)
air_update_turf()
tile.assume_air(removed)
tile.air_update_turf()
else //Just siphoning all air
if (air_contents.return_pressure()>=50*ONE_ATMOSPHERE)
@@ -164,15 +209,31 @@
var/transfer_moles = environment.total_moles()*(volume_rate/environment.volume)
var/datum/gas_mixture/removed = loc.remove_air(transfer_moles)
var/datum/gas_mixture/removed = tile.remove_air(transfer_moles)
air_contents.merge(removed)
air_update_turf()
tile.air_update_turf()
update_parents()
return 1
//There is no easy way for an object to be notified of changes to atmos can pass flags
// So we check every machinery process (2 seconds)
/obj/machinery/atmospherics/components/unary/vent_scrubber/process()
if (widenet)
check_turfs()
//we populate a list of turfs with nonatmos-blocked cardinal turfs AND
// diagonal turfs that can share atmos with *both* of the cardinal turfs
/obj/machinery/atmospherics/components/unary/vent_scrubber/proc/check_turfs()
adjacent_turfs.Cut()
var/turf/T = loc
if (istype(T))
adjacent_turfs = T.GetAtmosAdjacentTurfs(alldir=1)
/obj/machinery/atmospherics/components/unary/vent_scrubber/receive_signal(datum/signal/signal)
if(stat & (NOPOWER|BROKEN))
return
@@ -184,24 +245,10 @@
if("power_toggle" in signal.data)
on = !on
if("panic_siphon" in signal.data) //must be before if("scrubbing" thing
panic = text2num(signal.data["panic_siphon"])
if(panic)
on = 1
scrubbing = 0
volume_rate = 2000
else
scrubbing = 1
volume_rate = initial(volume_rate)
if("toggle_panic_siphon" in signal.data)
panic = !panic
if(panic)
on = 1
scrubbing = 0
volume_rate = 2000
else
scrubbing = 1
volume_rate = initial(volume_rate)
if("widenet" in signal.data)
widenet = text2num(signal.data["widenet"])
if("toggle_widenet" in signal.data)
widenet = !widenet
if("scrubbing" in signal.data)
scrubbing = text2num(signal.data["scrubbing"])
@@ -218,9 +265,9 @@
if("toggle_tox_scrub" in signal.data)
scrub_Toxins = !scrub_Toxins
if("NODE2o_scrub" in signal.data)
if("n2o_scrub" in signal.data)
scrub_N2O = text2num(signal.data["n2o_scrub"])
if("toggle_NODE2o_scrub" in signal.data)
if("toggle_n2o_scrub" in signal.data)
scrub_N2O = !scrub_N2O
if("init" in signal.data)
@@ -232,7 +279,6 @@
broadcast_status()
return //do not update_icon
// log_admin("DEBUG \[[world.timeofday]\]: vent_scrubber/receive_signal: unknown command \"[signal.data["command"]]\"\n[signal.debug_print()]")
spawn(2)
broadcast_status()
update_icon()
@@ -271,13 +317,5 @@
return 1
return ..()
/obj/machinery/atmospherics/components/unary/vent_scrubber/Destroy()
if(initial_loc)
initial_loc.air_scrub_info -= id_tag
initial_loc.air_scrub_names -= id_tag
..()
/obj/machinery/atmospherics/components/unary/vent_scrubber/can_crawl_through()
return !welded
+1 -5
View File
@@ -121,11 +121,7 @@ var/pipenetwarnings = 10
/obj/machinery/atmospherics/components/addMember(obj/machinery/atmospherics/A)
var/datum/pipeline/P = returnPipenet(A)
for(var/I = 1; I <= parents.len; I++)
if(parents["p[I]"] == P)
P.addMember(A, src)
break
P.addMember(A, src)
/datum/pipeline/proc/temporarily_store_air()
+38
View File
@@ -79,6 +79,44 @@
T.atmos_adjacent_turfs_amount -= 1
T.atmos_adjacent_turfs &= ~counterdir
//returns a list of adjacent turfs that can share air with this one.
//alldir includes adjacent diagonal tiles that can share
// air with both of the related adjacent cardinal tiles
/turf/proc/GetAtmosAdjacentTurfs(alldir = 0)
if (!istype(src, /turf/simulated))
return list()
var/adjacent_turfs = list()
var/turf/simulated/curloc = src
for (var/direction in cardinal)
if(!(curloc.atmos_adjacent_turfs & direction))
continue
var/turf/simulated/S = get_step(curloc, direction)
if (istype(S))
adjacent_turfs += S
if (!alldir)
return adjacent_turfs
for (var/direction in diagonals)
var/matchingDirections = 0
var/turf/simulated/S = get_step(curloc, direction)
for (var/checkDirection in cardinal)
if(!(S.atmos_adjacent_turfs & checkDirection))
continue
var/turf/simulated/checkTurf = get_step(S, checkDirection)
if (checkTurf in adjacent_turfs)
matchingDirections++
if (matchingDirections >= 2)
adjacent_turfs += S
break
return adjacent_turfs
/atom/movable/proc/air_update_turf(command = 0)
if(!istype(loc,/turf) && command)
return
+33 -14
View File
@@ -51,6 +51,8 @@
var/temperature_archived //USED ONLY FOR SOLIDS
var/atmos_overlay_type = "" //current active overlay
/turf/simulated/New()
..()
@@ -76,8 +78,7 @@
air.merge(giver)
if(air.check_tile_graphic())
update_visuals(air)
update_visuals()
return 1
@@ -104,8 +105,7 @@
removed = air.remove(amount)
if(air.check_tile_graphic())
update_visuals(air)
update_visuals()
return removed
@@ -207,8 +207,7 @@
air.react()
if(air.check_tile_graphic())
update_visuals(air)
update_visuals()
if(air.temperature > FIRE_MINIMUM_TEMPERATURE_TO_EXIST)
hotspot_expose(air.temperature, CELL_VOLUME)
@@ -231,14 +230,35 @@
temperature_archived = temperature
archived_cycle = SSair.times_fired
/turf/simulated/proc/update_visuals(datum/gas_mixture/model)
overlays -= SSair.plasma_overlay
overlays -= SSair.sleeptoxin_overlay
switch(model.graphic)
/turf/simulated/proc/update_visuals()
var/new_overlay_type = tile_graphic()
if (new_overlay_type == atmos_overlay_type)
return
var/atmos_overlay = get_atmos_overlay_by_name(atmos_overlay_type)
if (atmos_overlay)
overlays -= atmos_overlay
atmos_overlay = get_atmos_overlay_by_name(new_overlay_type)
if (atmos_overlay)
overlays += atmos_overlay
atmos_overlay_type = new_overlay_type
/turf/simulated/proc/get_atmos_overlay_by_name(var/name)
switch(name)
if("plasma")
overlays += SSair.plasma_overlay
return SSair.plasma_overlay
if("sleeping_agent")
overlays += SSair.sleeptoxin_overlay
return SSair.sleeptoxin_overlay
return null
/turf/simulated/proc/tile_graphic()
if(air.toxins > MOLES_PLASMA_VISIBLE)
return "plasma"
var/datum/gas/sleeping_agent = locate(/datum/gas/sleeping_agent) in air.trace_gases
if(sleeping_agent && (sleeping_agent.moles > 1))
return "sleeping_agent"
return null
/turf/simulated/proc/share_air(turf/simulated/T)
if(T.current_cycle < current_cycle)
@@ -336,8 +356,7 @@
G.moles = S.moles/turf_list.len
T.air.trace_gases += G
if(T.air.check_tile_graphic())
T.update_visuals(T.air)
T.update_visuals()
/datum/excited_group/proc/dismantle()
+2 -2
View File
@@ -27,7 +27,7 @@
#define TANK_RUPTURE_PRESSURE (40.*ONE_ATMOSPHERE) //Tank spills all contents into atmosphere
#define TANK_FRAGMENT_PRESSURE (50.*ONE_ATMOSPHERE) //Boom 3x3 base explosion
#define TANK_FRAGMENT_SCALE (10.*ONE_ATMOSPHERE) //+1 for each SCALE kPa aboe threshold
#define MINIMUM_AIR_RATIO_TO_SUSPEND 0.05 //Minimum ratio of air that must move to/from a tile to suspend group processing
#define MINIMUM_AIR_RATIO_TO_SUSPEND 0.005 //Minimum ratio of air that must move to/from a tile to suspend group processing
#define MINIMUM_AIR_TO_SUSPEND (MOLES_CELLSTANDARD*MINIMUM_AIR_RATIO_TO_SUSPEND) //Minimum amount of air that has to move before a group processing can be suspended
#define MINIMUM_MOLES_DELTA_TO_MOVE (MOLES_CELLSTANDARD*MINIMUM_AIR_RATIO_TO_SUSPEND) //Either this must be active
#define MINIMUM_TEMPERATURE_TO_MOVE (T20C+100) //or this (or both, obviously)
@@ -60,7 +60,7 @@
#define PLASMA_OXYGEN_FULLBURN 10
#define MIN_PLASMA_DAMAGE 1
#define MAX_PLASMA_DAMAGE 10
#define MOLES_PLASMA_VISIBLE 0.7 //Moles in a standard cell after which plasma is visible
#define MOLES_PLASMA_VISIBLE 0.5 //Moles in a standard cell after which plasma is visible
// Pressure limits.
#define HAZARD_HIGH_PRESSURE 550 //This determins at what pressure the ultra-high pressure red icon is displayed. (This one is set as a constant)
+32 -41
View File
@@ -26,15 +26,18 @@
var/adjacencies = 0
if(A.can_be_unanchored)
var/atom/movable/T = A
if(!T.anchored)
var/atom/movable/AM = A
if(!AM.anchored)
return 0
for(var/direction in alldirs)
var/atom/movable/AM = find_type_in_direction(A, direction)
if(AM)
AM = find_type_in_direction(A, direction)
if(istype(AM))
if(AM.anchored)
adjacencies |= transform_dir(direction)
else
if(AM)
adjacencies |= transform_dir(direction)
else
for(var/direction in alldirs)
if(find_type_in_direction(A, direction))
@@ -42,20 +45,20 @@
return adjacencies
/proc/smooth_icon(atom/A)
spawn(2)
if(A && A.smooth)
clear_overlays(A)
var/adjacencies = calculate_adjacencies(A)
if(A && A.smooth)
var/adjacencies = calculate_adjacencies(A)
A.top_left_corner = make_nw_corner(adjacencies)
A.top_right_corner = make_ne_corner(adjacencies)
A.bottom_left_corner = make_sw_corner(adjacencies)
A.bottom_right_corner = make_se_corner(adjacencies)
clear_overlays(A)
A.overlays += A.top_left_corner
A.overlays += A.top_right_corner
A.overlays += A.bottom_right_corner
A.overlays += A.bottom_left_corner
A.top_left_corner = make_nw_corner(adjacencies)
A.top_right_corner = make_ne_corner(adjacencies)
A.bottom_left_corner = make_sw_corner(adjacencies)
A.bottom_right_corner = make_se_corner(adjacencies)
A.overlays += A.top_left_corner
A.overlays += A.top_right_corner
A.overlays += A.bottom_right_corner
A.overlays += A.bottom_left_corner
/proc/make_nw_corner(adjacencies)
@@ -142,35 +145,23 @@
else if(direction & WEST)
x_offset -= range
var/list/siblings = source.canSmoothWith
if(istype(source, /turf))
if(siblings)
for(var/a_type in siblings)
if(ispath(a_type, /obj))
var/atom/A = locate(a_type) in locate(source.x + x_offset, source.y + y_offset, source.z)
if(A && A.type == a_type)
return A
else
var/turf/T = locate(source.x + x_offset, source.y + y_offset, source.z)
if(T.type == a_type)
return T
return null
var/turf/T = locate(source.x + x_offset, source.y + y_offset, source.z)
return T.type == source.type ? T : null
if(siblings)
for(var/a_type in siblings)
var/turf/target_turf = locate(source.x + x_offset, source.y + y_offset, source.z)
if(source.canSmoothWith)
var/atom/A
for(var/a_type in source.canSmoothWith)
if(ispath(a_type, /turf))
var/turf/T = locate(source.x + x_offset, source.y + y_offset, source.z)
if(T.type == a_type)
return T
if(a_type == target_turf.type)
return target_turf
else
var/atom/A = locate(a_type) in locate(source.x + x_offset, source.y + y_offset, source.z)
A = locate(a_type) in target_turf
if(A && A.type == a_type)
return A
return null
var/atom/A = locate(source.type) in locate(source.x + x_offset, source.y + y_offset, source.z)
return A && A.type == source.type ? A : null
else
if(isturf(source))
return source.type == target_turf.type ? target_turf : null
var/atom/A = locate(source.type) in target_turf
return A && A.type == source.type ? A : null
/proc/clear_overlays(atom/A)
A.overlays -= A.top_left_corner
@@ -189,4 +180,4 @@
if(SOUTHEAST)
return SOUTH_EAST
if(SOUTHWEST)
return SOUTH_WEST
return SOUTH_WEST
+3 -1
View File
@@ -235,7 +235,9 @@
return ""
//Returns a string with reserved characters and spaces before the first word and after the last word removed.
/proc/trim(text)
/proc/trim(text, max_length)
if(max_length)
text = copytext(text, 1, max_length)
return trim_left(trim_right(text))
//Returns a string with the first element of the string capitalized.
+2 -4
View File
@@ -514,7 +514,6 @@ Turf and target are seperate in case you want to teleport some distance from a t
// returns the turf located at the map edge in the specified direction relative to A
// used for mass driver
/proc/get_edge_target_turf(atom/A, direction)
var/turf/target = locate(A.x, A.y, A.z)
if(!A || !target)
return 0
@@ -530,7 +529,6 @@ Turf and target are seperate in case you want to teleport some distance from a t
target = locate(world.maxx, target.y, target.z)
if(direction & WEST)
target = locate(1, target.y, target.z)
return target
// returns turf relative to A in given direction at set range
@@ -674,7 +672,7 @@ Turf and target are seperate in case you want to teleport some distance from a t
else return get_step(ref, base_dir)
/proc/do_mob(mob/user , mob/target, time = 30, numticks = 5, stealth = 0) //This is quite an ugly solution but i refuse to use the old request system.
/proc/do_mob(mob/user , mob/target, time = 30, numticks = 5, uninterruptible = 0) //This is quite an ugly solution but i refuse to use the old request system.
if(!user || !target)
return 0
if(numticks == 0)
@@ -693,7 +691,7 @@ Turf and target are seperate in case you want to teleport some distance from a t
if(user && user.client)
user.client.images -= progbar
return 0
if ( user.loc != user_loc || target.loc != target_loc || user.get_active_hand() != holding || user.incapacitated() || user.lying )
if (!uninterruptible && (user.loc != user_loc || target.loc != target_loc || user.get_active_hand() != holding || user.incapacitated() || user.lying ))
if(user && user.client)
user.client.images -= progbar
return 0
+1 -3
View File
@@ -67,8 +67,6 @@
return
if(istype(loc,/obj/mecha))
if(!locate(/turf) in list(A,A.loc)) // Prevents inventory from being drilled
return
var/obj/mecha/M = loc
return M.click_action(A,src)
@@ -325,4 +323,4 @@
else
var/turf/T = screen_loc2turf(modifiers["screen-loc"], get_turf(usr))
T.Click(location, control, params)
return 1
return 1
+1
View File
@@ -38,6 +38,7 @@
#define ui_storage2 "CENTER+2:20,SOUTH:5"
#define ui_borg_sensor "CENTER-3:16, SOUTH:5" //borgs
#define ui_borg_lamp "CENTER-4:16, SOUTH:5" //borgies
#define ui_inv1 "CENTER-2:16,SOUTH:5" //borgs
#define ui_inv2 "CENTER-1 :16,SOUTH:5" //borgs
#define ui_inv3 "CENTER :16,SOUTH:5" //borgs
+7
View File
@@ -228,6 +228,13 @@ office by your AI master or any qualified human may resolve this matter. Robotic
so as to remain in compliance with the most up-to-date laws."
timeout = 300
//MECHS
/obj/screen/alert/low_mech_integrity
name = "Mech Damaged"
desc = "Mech integrity is low."
//OBJECT-BASED
/obj/screen/alert/buckled
-2
View File
@@ -198,8 +198,6 @@ var/datum/global_hud/global_hud = new()
else if(isdrone(mymob))
drone_hud(ui_style)
if(istype(mymob.loc,/obj/mecha) && ishuman(mymob))
show_hud(HUD_STYLE_REDUCED)
//Version denotes which style should be displayed. blank or 0 means "next version"
/datum/hud/proc/show_hud(version = 0)
+14
View File
@@ -53,6 +53,14 @@
var/mob/living/silicon/robot/R = usr
R.uneq_active()
/obj/screen/robot/lamp
name = "headlamp"
icon_state = "lamp0"
/obj/screen/robot/lamp/Click()
var/mob/living/silicon/robot/R = usr
R.control_headlamp()
/datum/hud/proc/robot_hud()
adding = list()
@@ -102,6 +110,12 @@
using.screen_loc = ui_borg_sensor
adding += using
//Headlamp control
using = new /obj/screen/robot/lamp()
using.screen_loc = ui_borg_lamp
adding += using
mymobR.lamp_button = using
//Intent
using = new /obj/screen/act_intent()
using.icon = 'icons/mob/screen_cyborg.dmi'
+1 -2
View File
@@ -178,8 +178,7 @@ var/datum/subsystem/air/SSair
for(var/turf/simulated/T in turfs_to_init)
T.CalculateAdjacentTurfs()
if(!T.blocks_air)
if(T.air.check_tile_graphic())
T.update_visuals(T.air)
T.update_visuals()
for(var/direction in cardinal)
if(!(T.atmos_adjacent_turfs & direction))
continue
-17
View File
@@ -41,8 +41,6 @@ What are the archived variables for?
var/last_share
var/graphic
var/list/datum/gas/trace_gases = list()
@@ -53,7 +51,6 @@ What are the archived variables for?
var/tmp/temperature_archived
var/tmp/graphic_archived
var/tmp/fuel_burnt = 0
//PV=nRT - related procedures
@@ -103,19 +100,7 @@ What are the archived variables for?
//Procedures used for very specific events
/datum/gas_mixture/proc/check_tile_graphic()
//returns 1 if graphic changed
graphic = null
if(toxins > MOLES_PLASMA_VISIBLE)
graphic = "plasma"
else
var/datum/gas/sleeping_agent = locate(/datum/gas/sleeping_agent) in trace_gases
if(sleeping_agent && (sleeping_agent.moles > 1))
graphic = "sleeping_agent"
else
graphic = null
return graphic != graphic_archived
/datum/gas_mixture/proc/react(atom/dump_location)
var/reacting = 0 //set to 1 if a notable reaction occured (used by pipe_network)
@@ -291,8 +276,6 @@ What are the archived variables for?
temperature_archived = temperature
graphic_archived = graphic
return 1
/datum/gas_mixture/check_then_merge(datum/gas_mixture/giver)
@@ -1,160 +0,0 @@
/*
README:
The global_iterator datum is supposed to provide a simple and robust way to
create some constantly "looping" processes with ability to stop and restart them at will.
Generally, the only thing you want to play with (meaning, redefine) is the process() proc.
It must contain all the things you want done.
Control functions:
new - used to create datum. First argument (optional) - var list(to use in process() proc) as list,
second (optional) - autostart control.
If autostart == TRUE, the loop will be started immediately after datum creation.
start(list/arguments) - starts the loop. Takes arguments(optional) as a list, which is then used
by process() proc. Returns null if datum already active, 1 if loop started successfully and 0 if there's
an error in supplied arguments (not list or empty list).
stop() - stops the loop. Returns null if datum is already inactive and 1 on success.
set_delay(new_delay) - sets the delay between iterations. Pretty selfexplanatory.
Returns 0 on error(new_delay is not numerical), 1 otherwise.
set_process_args(list/arguments) - passes the supplied arguments to the process() proc.
active() - Returns 1 if datum is active, 0 otherwise.
toggle() - toggles datum state. Returns new datum state (see active()).
Misc functions:
get_last_exec_time() - Returns the time of last iteration.
get_last_exec_time_as_text() - Returns the time of last iteration as text
Control vars:
delay - delay between iterations
check_for_null - if equals TRUE, on each iteration the supplied arguments will be checked for nulls.
If some varible equals null (and null only), the loop is stopped.
Usefull, if some var unexpectedly becomes null - due to object deletion, for example.
Of course, you can also check the variables inside process() proc to prevent runtime errors.
Data storage vars:
result - stores the value returned by process() proc
*/
/datum/global_iterator
var/control_switch = 0
var/delay = 10
var/list/arg_list = new
var/last_exec = null
var/check_for_null = 1
var/forbid_garbage = 0
var/result
var/state = 0
/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
/datum/global_iterator/Destroy()
tag = null
arg_list.Cut()
stop()
//Do not call ..()
/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
sleep(1)
return 0
/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
/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
/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/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)
/datum/global_iterator/proc/get_last_exec_time_as_text()
return (time2text(last_exec)||"Wasn't executed yet")
/datum/global_iterator/proc/set_process_args(list/arguments)
if(arguments && istype(arguments, /list) && arguments.len)
arg_list = arguments
return 1
else
// world << "\red Invalid arguments supplied for [src.type], ref = \ref[src]"
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()
+14 -24
View File
@@ -10,7 +10,7 @@
cooldown_min = 30
selection_type = "view"
random_target = 1
var/energy = 0
var/start_time = 0
var/ready = 0
var/image/halo = null
var/sound/Snd // so far only way i can think of to stop a sound, thank MSO for the idea.
@@ -18,7 +18,7 @@
action_icon_state = "lightning"
/obj/effect/proc_holder/spell/targeted/lightning/Click()
if(!ready && energy==0)
if(!ready && start_time==0)
if(cast_check())
StartChargeup()
else
@@ -33,16 +33,14 @@
halo = image("icon"='icons/effects/effects.dmi',"icon_state" ="electricity","layer" = EFFECTS_LAYER)
user.overlays.Add(halo)
playsound(get_turf(usr), Snd, 50, 0)
spawn(0)
while(ready)
energy++
if(energy >= 100 && ready)
Discharge()
sleep(1)
start_time = world.time
if(do_mob(user,user,100,uninterruptible=1))
if(ready)
Discharge()
/obj/effect/proc_holder/spell/targeted/lightning/proc/Reset(mob/user = usr)
ready = 0
energy = 0
start_time = 0
if(halo)
user.overlays.Remove(halo)
@@ -72,26 +70,18 @@
playsound(get_turf(usr), 'sound/magic/lightningbolt.ogg', 50, 1)
user.Beam(target,icon_state="lightning",icon='icons/effects/effects.dmi',time=5)
switch(energy)
if(1 to 25)
target.electrocute_act(10,"Lightning Bolt")
playsound(get_turf(target), 'sound/magic/LightningShock.ogg', 50, 1, -1)
if(25 to 75)
target.electrocute_act(25,"Lightning Bolt")
playsound(get_turf(target), 'sound/magic/LightningShock.ogg', 50, 1, -1)
if(75 to 100)
//CHAIN LIGHTNING
Bolt(user,target,energy,user)
var/energy = min(world.time - start_time,100)
Bolt(user,target,max(15,energy/2),5,user) //5 bounces for energy/2 burn
Reset(user)
/obj/effect/proc_holder/spell/targeted/lightning/proc/Bolt(mob/origin,mob/target,bolt_energy,mob/user = usr)
/obj/effect/proc_holder/spell/targeted/lightning/proc/Bolt(mob/origin,mob/target,bolt_energy,bounces,mob/user = usr)
origin.Beam(target,icon_state="lightning",icon='icons/effects/effects.dmi',time=5)
var/mob/living/carbon/current = target
if(bolt_energy < 75)
current.electrocute_act(25,"Lightning Bolt")
if(bounces < 1)
current.electrocute_act(bolt_energy,"Lightning Bolt",safety=1)
playsound(get_turf(current), 'sound/magic/LightningShock.ogg', 50, 1, -1)
else
current.electrocute_act(25,"Lightning Bolt")
current.electrocute_act(bolt_energy,"Lightning Bolt",safety=1)
playsound(get_turf(current), 'sound/magic/LightningShock.ogg', 50, 1, -1)
var/list/possible_targets = new
for(var/mob/living/M in view_or_range(range,target,"view"))
@@ -102,4 +92,4 @@
return
var/mob/living/next = pick(possible_targets)
if(next)
Bolt(current,next,bolt_energy-6,user) // 5 max bounces
Bolt(current,next,bolt_energy,bounces-1,user)
-5
View File
@@ -17,11 +17,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.
var/allow_spin = 1
//Value used to increment ex_act() if reactionary_explosions is on
var/explosion_block = 0
+6 -9
View File
@@ -94,16 +94,13 @@
return
/atom/movable/Bump(var/atom/A as mob|obj|turf|area, yes)
if(src.throwing)
src.throw_impact(A)
src.throwing = 0
if(throwing)
throw_impact(A)
throwing = 0
if ((A && yes))
A.last_bumped = world.time
A.Bumped(src)
return
..()
return
/atom/movable/proc/forceMove(atom/destination)
if(destination)
@@ -168,12 +165,12 @@
src.throw_impact(A,thrower)
src.throwing = 0
/atom/movable/proc/throw_at(atom/target, range, speed, mob/thrower)
/atom/movable/proc/throw_at(atom/target, range, speed, mob/thrower, var/spin = 1)
if(!target || !src || (flags & NODROP)) return 0
//use a modified version of Bresenham's algorithm to get from the atom's current position to that of the target
src.throwing = 1
if(target.allow_spin) // turns out 1000+ spinning objects being thrown at the singularity creates lag - Iamgoofball
if(spin) // turns out 1000+ spinning objects being thrown at the singularity creates lag - Iamgoofball
SpinAnimation(5, 1)
var/dist_x = abs(target.x - src.x)
var/dist_y = abs(target.y - src.y)
+4 -4
View File
@@ -94,16 +94,16 @@
var/turf/location = get_turf(src)
// Create the reagents to put into the air
create_reagents(25)
create_reagents(5)
if(overmind && overmind.blob_reagent_datum)
reagents.add_reagent(overmind.blob_reagent_datum.id, 25)
reagents.add_reagent(overmind.blob_reagent_datum.id, 5)
else
reagents.add_reagent("spore", 25)
reagents.add_reagent("spore", 5)
// Attach the smoke spreader and setup/start it.
S.attach(location)
S.set_up(reagents, 1, 1, location, 15, 1) // only 1-2 smoke cloud
S.set_up(reagents, 1, 1, location, 15, 1) // only 1 smoke cloud
S.start()
ghostize()
+13 -3
View File
@@ -1,3 +1,8 @@
#define LING_FAKEDEATH_TIME 400 //40 seconds
#define LING_DEAD_GENETICDAMAGE_HEAL_CAP 50 //The lowest value of geneticdamage handle_changeling() can take it to while dead.
#define LING_ABSORB_RECENT_SPEECH 8 //The amount of recent spoken lines to gain on absorbing a mob
var/list/possible_changeling_IDs = 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")
/datum/game_mode
@@ -261,9 +266,14 @@ var/list/possible_changeling_IDs = list("Alpha","Beta","Gamma","Delta","Epsilon"
absorbed_dna.len = dna_max
/datum/changeling/proc/regenerate()
chem_charges = min(max(0, chem_charges + chem_recharge_rate - chem_recharge_slowdown), chem_storage)
geneticdamage = max(0, geneticdamage-1)
/datum/changeling/proc/regenerate(var/mob/living/carbon/the_ling)
if(istype(the_ling))
if(the_ling.stat == DEAD)
chem_charges = min(max(0, chem_charges + chem_recharge_rate - chem_recharge_slowdown), (chem_storage*0.5))
geneticdamage = max(LING_DEAD_GENETICDAMAGE_HEAL_CAP,geneticdamage-1)
else //not dead? no chem/geneticdamage caps.
chem_charges = min(max(0, chem_charges + chem_recharge_rate - chem_recharge_slowdown), chem_storage)
geneticdamage = max(0, geneticdamage-1)
/datum/changeling/proc/get_dna(dna_owner)
@@ -63,6 +63,27 @@
target.mind.show_memory(src, 0) //I can read your mind, kekeke. Output all their notes.
//Some of target's recent speech, so the changeling can attempt to imitate them better.
//Recent as opposed to all because rounds tend to have a LOT of text.
var/list/recent_speech = list()
if(target.say_log.len > LING_ABSORB_RECENT_SPEECH)
recent_speech = target.say_log.Copy(target.say_log.len-LING_ABSORB_RECENT_SPEECH+1,0) //0 so len-LING_ARS+1 to end of list
else
for(var/spoken_memory in target.say_log)
if(recent_speech.len >= LING_ABSORB_RECENT_SPEECH)
break
recent_speech += spoken_memory
if(recent_speech.len)
user.mind.store_memory("<B>Some of [target]'s speech patterns, we should study these to better impersonate them!</B>")
user << "<span class='boldnotice'>Some of [target]'s speech patterns, we should study these to better impersonate them!</span>"
for(var/spoken_memory in recent_speech)
user.mind.store_memory("\"[spoken_memory]\"")
user << "<span class='notice'>\"[spoken_memory]\"</span>"
user.mind.store_memory("<B>We have no more knowledge of [target]'s speech patterns.</B>")
user << "<span class='boldnotice'>We have no more knowledge of [target]'s speech patterns.</span>"
if(target.mind.changeling)//If the target was a changeling, suck out their extra juice and objective points!
changeling.chem_charges += min(target.mind.changeling.chem_charges, changeling.chem_storage)
changeling.absorbedcount += (target.mind.changeling.absorbedcount)
@@ -16,7 +16,7 @@
if(user.stat != DEAD)
user.emote("deathgasp")
user.tod = worldtime2text()
spawn(800)
spawn(LING_FAKEDEATH_TIME)
if(user && user.mind && user.mind.changeling && user.mind.changeling.purchasedpowers)
user << "<span class='notice'>We are ready to regenerate.</span>"
user.mind.changeling.purchasedpowers += new /obj/effect/proc_holder/changeling/revive(null)
@@ -140,7 +140,7 @@
rcdmod.uses --
for(var/obj/item/weapon/rcd/rcd in world)
rcd.disabled = 1
for(var/obj/item/mecha_parts/mecha_equipment/tool/rcd/rcd in world)
for(var/obj/item/mecha_parts/mecha_equipment/rcd/rcd in world)
rcd.disabled = 1
src << "<span class='warning>RCD-disabling pulse emitted.</span>"
else src << "<span class='notice'>Out of uses.</span>"
+2 -2
View File
@@ -170,8 +170,8 @@
synd_mob.equip_to_slot_or_del(new /obj/item/clothing/shoes/combat(synd_mob), slot_shoes)
synd_mob.equip_to_slot_or_del(new /obj/item/clothing/gloves/combat(synd_mob), slot_gloves)
synd_mob.equip_to_slot_or_del(new /obj/item/weapon/card/id/syndicate(synd_mob), slot_wear_id)
if(synd_mob.backbag == 2) synd_mob.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack(synd_mob), slot_back)
if(synd_mob.backbag == 3) synd_mob.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack/satchel_norm(synd_mob), slot_back)
if(synd_mob.backbag == 1) synd_mob.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack(synd_mob), slot_back)
if(synd_mob.backbag == 2) synd_mob.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack/satchel_norm(synd_mob), slot_back)
synd_mob.equip_to_slot_or_del(new /obj/item/weapon/gun/projectile/automatic/pistol(synd_mob), slot_belt)
synd_mob.equip_to_slot_or_del(new /obj/item/weapon/storage/box/engineer(synd_mob.back), slot_in_backpack)
+33
View File
@@ -213,6 +213,39 @@
return 0
return 1
/datum/objective/hijackclone
explanation_text = "Hijack the emergency shuttle by ensuring only you (or your copies) escape."
dangerrating = 25
martyr_compatible = 0
/datum/objective/hijackclone/check_completion()
if(!owner.current)
return 0
if(SSshuttle.emergency.mode < SHUTTLE_ENDGAME)
return 0
var/area/A = SSshuttle.emergency.areaInstance
for(var/mob/living/player in player_list) //Make sure nobody else is onboard
if(player.mind && player.mind != owner)
if(player.stat != DEAD)
switch(player.type)
if(/mob/living/silicon/ai, /mob/living/silicon/pai)
continue
if(get_area(player) == A)
if(player.real_name != owner.current.real_name && !istype(get_turf(player.mind.current), /turf/simulated/floor/plasteel/shuttle/red))
return 0
for(var/mob/living/player in player_list) //Make sure at least one of you is onboard
if(player.mind && player.mind != owner)
if(player.stat != DEAD)
switch(player.type)
if(/mob/living/silicon/ai, /mob/living/silicon/pai)
continue
if(get_area(player) == A)
if(player.real_name == owner.current.real_name && !istype(get_turf(player.mind.current), /turf/simulated/floor/plasteel/shuttle/red))
return 1
return 0
/datum/objective/block
explanation_text = "Do not allow any organic lifeforms to escape on the shuttle alive."
@@ -76,6 +76,8 @@
qdel(G)
for(var/mob/living/H in T.contents)
extinguishMob(H)
for(var/mob/living/silicon/robot/borgie in T.contents)
borgie.update_headlamp(1)
+255
View File
@@ -173,3 +173,258 @@
H.equip_to_slot_or_del(new /obj/item/weapon/shield/riot/roman(H), slot_l_hand)
H.equip_to_slot_or_del(new /obj/item/weapon/claymore(H), slot_r_hand)
H.equip_to_slot_or_del(new /obj/item/weapon/twohanded/spear(H), slot_back)
/////////////////////Multiverse Blade////////////////////
var/global/list/multiverse = list()
/obj/item/weapon/multisword
name = "multiverse sword"
desc = "A weapon capable of conquering the universe and beyond. Activate it to summon copies of yourself from others dimensions to fight by your side."
icon = 'icons/obj/weapons.dmi'
icon_state = "energy_katana"
item_state = "energy_katana"
hitsound = 'sound/weapons/bladeslice.ogg'
flags = CONDUCT
slot_flags = SLOT_BELT
force = 20
throwforce = 10
w_class = 2
attack_verb = list("attacked", "slashed", "stabbed", "sliced", "torn", "ripped", "diced", "cut")
var/faction = list("unassigned")
var/cooldown = 0
var/assigned = "unassigned"
var/evil = TRUE
/obj/item/weapon/multisword/New()
..()
multiverse |= src
/obj/item/weapon/multisword/Destroy()
multiverse.Remove(src)
..()
/obj/item/weapon/multisword/attack_self(mob/user)
if(user.mind.special_role == "apprentice")
user << "<span class='warning'>You know better than to touch your teacher's stuff.</span>"
return
if(cooldown < world.time)
var/faction_check = 0
for(var/F in faction)
if(F in user.faction)
faction_check = 1
break
if(faction_check == 0)
faction = list("[user.real_name]")
assigned = "[user.real_name]"
user.faction = list("[user.real_name]")
user << "You bind the sword to yourself. You can now use it to summon help."
if(!usr.mind.special_role)
if(prob(30))
user << "<span class='warning'><B>With your new found power you could easily conquer the station!</B></span>"
var/datum/objective/hijackclone/hijack_objective = new /datum/objective/hijackclone
hijack_objective.owner = usr.mind
usr.mind.objectives += hijack_objective
hijack_objective.explanation_text = "Ensure only [usr.real_name] and their copies are on the shuttle!"
usr << "<B>Objective #[1]</B>: [hijack_objective.explanation_text]"
ticker.mode.traitors += usr.mind
usr.mind.special_role = "[usr.real_name] Prime"
evil = TRUE
else
user << "<span class='warning'><B>With your new found power you could easily defend the station!</B></span>"
var/datum/objective/survive/new_objective = new /datum/objective/survive
new_objective.owner = usr.mind
new_objective.explanation_text = "Survive, and help defend the innocent from the mobs of multiverse clones."
usr << "<B>Objective #[1]</B>: [new_objective.explanation_text]"
usr.mind.objectives += new_objective
ticker.mode.traitors += usr.mind
usr.mind.special_role = "[usr.real_name] Prime"
evil = FALSE
else
var/list/candidates = get_candidates(BE_WIZARD)
if(candidates.len)
var/client/C = pick(candidates)
spawn_copy(C, get_turf(user.loc), user)
user << "<span class='warning'><B>The sword flashes, and you find yourself face to face with...you!</B></span>"
cooldown = world.time + 400
for(var/obj/item/weapon/multisword/M in multiverse)
if(M.assigned == assigned)
M.cooldown = cooldown
else
user << "You fail to summon any copies of yourself. Perhaps you should try again in a bit."
else
user << "<span class='warning'><B>[src] is recharging! Keep in mind it shares a cooldown with the swords wielded by your copies.</span>"
/obj/item/weapon/multisword/proc/spawn_copy(var/client/C, var/turf/T)
var/mob/living/carbon/human/M = new/mob/living/carbon/human(T)
C.prefs.copy_to(M)
M.key = C.key
M.mind.name = usr.real_name
M << "<B>You are an alternate version of [usr.real_name] from another universe! Help them accomplish their goals at all costs.</B>"
M.real_name = usr.real_name
M.name = usr.real_name
M.faction = list("[usr.real_name]")
equip_copy(M)
if(evil)
var/datum/objective/hijackclone/hijack_objective = new /datum/objective/hijackclone
hijack_objective.owner = M.mind
M.mind.objectives += hijack_objective
hijack_objective.explanation_text = "Ensure only [usr.real_name] and their copies are on the shuttle!"
M << "<B>Objective #[1]</B>: [hijack_objective.explanation_text]"
M.mind.special_role = "multiverse traveller"
log_game("[M.key] was made a multiverse traveller with the objective to help [usr.real_name] hijack.")
else
var/datum/objective/protect/new_objective = new /datum/objective/protect
new_objective.owner = M:mind
new_objective:target = usr:mind
new_objective.explanation_text = "Protect [usr.real_name], your copy, and help them defend the innocent from the mobs of multiverse clones."
M.mind.objectives += new_objective
M << "<B>Objective #[1]</B>: [new_objective.explanation_text]"
M.mind.special_role = "multiverse traveller"
log_game("[M.key] was made a multiverse traveller with the objective to help [usr.real_name] protect the station.")
/obj/item/weapon/multisword/proc/equip_copy(var/mob/living/carbon/human/M)
var/obj/item/weapon/multisword/sword = new /obj/item/weapon/multisword
sword.assigned = assigned
sword.faction = list("[assigned]")
sword.evil = evil
var/randomize = pick("mobster","roman","wizard","cyborg","syndicate","assistant", "animu", "cultist", "highlander", "clown", "killer", "pirate", "soviet")
switch(randomize)
if("mobster")
M.equip_to_slot_or_del(new /obj/item/clothing/head/fedora(M), slot_head)
M.equip_to_slot_or_del(new /obj/item/clothing/shoes/laceup(M), slot_shoes)
M.equip_to_slot_or_del(new /obj/item/clothing/gloves/color/black(M), slot_gloves)
M.equip_to_slot_or_del(new /obj/item/device/radio/headset(M), slot_ears)
M.equip_to_slot_or_del(new /obj/item/clothing/glasses/sunglasses(M), slot_glasses)
M.equip_to_slot_or_del(new /obj/item/clothing/under/suit_jacket/really_black(M), slot_w_uniform)
M.equip_to_slot_or_del(sword, slot_r_hand)
if("roman")
var/hat = pick(/obj/item/clothing/head/helmet/roman, /obj/item/clothing/head/helmet/roman/legionaire)
M.equip_to_slot_or_del(new hat(M), slot_head)
M.equip_to_slot_or_del(new /obj/item/clothing/under/roman(M), slot_w_uniform)
M.equip_to_slot_or_del(new /obj/item/clothing/shoes/roman(M), slot_shoes)
M.equip_to_slot_or_del(new /obj/item/weapon/shield/riot/roman(M), slot_l_hand)
M.equip_to_slot_or_del(sword, slot_r_hand)
if("wizard")
M.equip_to_slot_or_del(new /obj/item/clothing/under/color/lightpurple(M), slot_w_uniform)
M.equip_to_slot_or_del(new /obj/item/clothing/suit/wizrobe/red(M), slot_wear_suit)
M.equip_to_slot_or_del(new /obj/item/clothing/shoes/sandal(M), slot_shoes)
M.equip_to_slot_or_del(new /obj/item/device/radio/headset(M), slot_ears)
M.equip_to_slot_or_del(new /obj/item/clothing/head/wizard/red(M), slot_head)
M.equip_to_slot_or_del(sword, slot_r_hand)
if("cyborg")
var/obj/item/organ/limb/chest/C = locate(/obj/item/organ/limb/chest) in M.organs
qdel(C)
M.organs += new /obj/item/organ/limb/robot/chest
var/obj/item/organ/limb/r_arm/R = locate(/obj/item/organ/limb/r_arm) in M.organs
qdel(R)
M.organs += new /obj/item/organ/limb/robot/r_arm
var/obj/item/organ/limb/l_arm/L = locate(/obj/item/organ/limb/l_arm) in M.organs
qdel(L)
M.organs += new /obj/item/organ/limb/robot/l_arm
var/obj/item/organ/limb/l_leg/LL = locate(/obj/item/organ/limb/l_leg) in M.organs
qdel(LL)
M.organs += new /obj/item/organ/limb/robot/l_leg
var/obj/item/organ/limb/r_leg/RL = locate(/obj/item/organ/limb/r_leg) in M.organs
qdel(RL)
M.organs += new /obj/item/organ/limb/robot/r_leg
M.equip_to_slot_or_del(new /obj/item/clothing/glasses/thermal/eyepatch(M), slot_glasses)
M.equip_to_slot_or_del(sword, slot_r_hand)
if("syndicate")
M.equip_to_slot_or_del(new /obj/item/clothing/under/syndicate(M), slot_w_uniform)
M.equip_to_slot_or_del(new /obj/item/clothing/shoes/combat(M), slot_shoes)
M.equip_to_slot_or_del(new /obj/item/clothing/gloves/combat(M), slot_gloves)
M.equip_to_slot_or_del(new /obj/item/clothing/head/helmet/swat(M), slot_head)
M.equip_to_slot_or_del(new /obj/item/device/radio/headset(M), slot_ears)
M.equip_to_slot_or_del(new /obj/item/clothing/suit/armor/vest(M), slot_wear_suit)
M.equip_to_slot_or_del(new /obj/item/clothing/mask/gas(M),slot_wear_mask)
M.equip_to_slot_or_del(sword, slot_r_hand)
if("assistant")
M.equip_to_slot_or_del(new /obj/item/clothing/under/color/grey(M), slot_w_uniform)
M.equip_to_slot_or_del(new /obj/item/device/radio/headset(M), slot_ears)
M.equip_to_slot_or_del(new /obj/item/clothing/shoes/sneakers/black(M), slot_shoes)
M.equip_to_slot_or_del(sword, slot_r_hand)
if("animu")
M.equip_to_slot_or_del(new /obj/item/clothing/shoes/sandal(M), slot_shoes)
M.equip_to_slot_or_del(new /obj/item/device/radio/headset(M), slot_ears)
M.equip_to_slot_or_del(new /obj/item/clothing/head/kitty(M), slot_head)
M.equip_to_slot_or_del(new /obj/item/clothing/under/schoolgirl/red(M), slot_w_uniform)
M.equip_to_slot_or_del(sword, slot_r_hand)
if("cultist")
M.equip_to_slot_or_del(new /obj/item/clothing/head/culthood/alt(M), slot_head)
M.equip_to_slot_or_del(new /obj/item/clothing/suit/cultrobes/alt(M), slot_wear_suit)
M.equip_to_slot_or_del(new /obj/item/clothing/shoes/cult(M), slot_shoes)
M.equip_to_slot_or_del(new /obj/item/device/radio/headset(M), slot_ears)
M.equip_to_slot_or_del(sword, slot_r_hand)
if("highlander")
M.equip_to_slot_or_del(new /obj/item/clothing/under/kilt(M), slot_w_uniform)
M.equip_to_slot_or_del(new /obj/item/device/radio/headset(M), slot_ears)
M.equip_to_slot_or_del(new /obj/item/clothing/head/beret(M), slot_head)
M.equip_to_slot_or_del(new /obj/item/clothing/shoes/combat(M), slot_shoes)
M.equip_to_slot_or_del(sword, slot_r_hand)
if("clown")
M.equip_to_slot_or_del(new /obj/item/clothing/under/rank/clown(M), slot_w_uniform)
M.equip_to_slot_or_del(new /obj/item/device/radio/headset(M), slot_ears)
M.equip_to_slot_or_del(new /obj/item/clothing/shoes/clown_shoes(M), slot_shoes)
M.equip_to_slot_or_del(new /obj/item/clothing/mask/gas/clown_hat(M), slot_wear_mask)
M.equip_to_slot_or_del(new /obj/item/weapon/bikehorn(M), slot_l_store)
M.equip_to_slot_or_del(sword, slot_r_hand)
if("killer")
M.equip_to_slot_or_del(new /obj/item/clothing/under/overalls(M), slot_w_uniform)
M.equip_to_slot_or_del(new /obj/item/clothing/shoes/sneakers/white(M), slot_shoes)
M.equip_to_slot_or_del(new /obj/item/clothing/gloves/color/latex(M), slot_gloves)
M.equip_to_slot_or_del(new /obj/item/clothing/mask/surgical(M), slot_wear_mask)
M.equip_to_slot_or_del(new /obj/item/clothing/head/welding(M), slot_head)
M.equip_to_slot_or_del(new /obj/item/device/radio/headset(M), slot_ears)
M.equip_to_slot_or_del(new /obj/item/clothing/suit/apron(M), slot_wear_suit)
M.equip_to_slot_or_del(new /obj/item/weapon/kitchen/knife(M), slot_l_store)
M.equip_to_slot_or_del(new /obj/item/weapon/scalpel(M), slot_r_store)
M.equip_to_slot_or_del(sword, slot_r_hand)
for(var/obj/item/carried_item in M.contents)
if(!istype(carried_item, /obj/item/weapon/implant))
carried_item.add_blood(M)
if("pirate")
M.equip_to_slot_or_del(new /obj/item/clothing/under/pirate(M), slot_w_uniform)
M.equip_to_slot_or_del(new /obj/item/clothing/shoes/sneakers/brown(M), slot_shoes)
M.equip_to_slot_or_del(new /obj/item/clothing/head/bandana(M), slot_head)
M.equip_to_slot_or_del(new /obj/item/clothing/glasses/eyepatch(M), slot_glasses)
M.equip_to_slot_or_del(sword, slot_r_hand)
M.equip_to_slot_or_del(new /obj/item/device/radio/headset(M), slot_ears)
if("soviet")
M.equip_to_slot_or_del(new /obj/item/clothing/head/hgpiratecap(M), slot_head)
M.equip_to_slot_or_del(new /obj/item/clothing/shoes/combat(M), slot_shoes)
M.equip_to_slot_or_del(new /obj/item/clothing/gloves/combat(M), slot_gloves)
M.equip_to_slot_or_del(new /obj/item/device/radio/headset(M), slot_ears)
M.equip_to_slot_or_del(new /obj/item/clothing/suit/hgpirate(M), slot_wear_suit)
M.equip_to_slot_or_del(new /obj/item/clothing/under/soviet(M), slot_w_uniform)
else
return
ready_dna(M)
if(M.dna && prob(50))
var/list/all_species = list()
for(var/speciestype in typesof(/datum/species) - /datum/species)
var/datum/species/S = new speciestype()
if(!S.dangerous_existence)
all_species += speciestype
hardset_dna(M, null, null, null, null, pick(all_species))
M.update_icons()
var/obj/item/weapon/card/id/W = new /obj/item/weapon/card/id
W.icon_state = "centcom"
W.access += access_maint_tunnels
W.assignment = "Multiverse Traveller"
W.registered_name = M.real_name
W.update_label(M.real_name)
M.equip_to_slot_or_del(W, slot_wear_id)
+21 -3
View File
@@ -10,11 +10,12 @@
var/surplus = -1 // -1 for infinite, not used by anything atm
var/obj/effect/proc_holder/spell/S = null //Since spellbooks can be used by only one person anyway we can track the actual spell
var/buy_word = "Learn"
var/limit //used to prevent a spellbook_entry from being bought more than X times with one wizard spellbook
/datum/spellbook_entry/proc/IsAvailible() // For config prefs / gamemode restrictions - these are round applied
return 1
/datum/spellbook_entry/proc/CanBuy(mob/living/carbon/human/user,obj/item/weapon/spellbook/book) // Specific circumstances
if(book.uses<cost)
if(book.uses<cost || limit == 0)
return 0
return 1
/datum/spellbook_entry/proc/Buy(mob/living/carbon/human/user,obj/item/weapon/spellbook/book) //return 1 on success
@@ -273,6 +274,12 @@
item_path = /obj/item/device/necromantic_stone
log_name = "NS"
/datum/spellbook_entry/item/multiverse
name = "Multiverse Blade"
desc = "A weapon capable of conquering the universe and beyond. Activate it to summon copies of yourself from others dimensions to fight by your side."
item_path = /obj/item/weapon/multisword
log_name = "MV"
/datum/spellbook_entry/item/wands
name = "Wand Assortment"
desc = "A collection of wands that allow for a wide variety of utility. Wands do not recharge, so be conservative in use. Comes in a handy belt."
@@ -302,6 +309,7 @@
desc = "A bottle of magically infused blood, the smell of which will attract extradimensional beings when broken. Be careful though, the kinds of creatures summoned by blood magic are indiscriminate in their killing, and you yourself may become a victim."
item_path = /obj/item/weapon/antag_spawner/slaughter_demon
log_name = "BB"
limit = 3
/datum/spellbook_entry/summon
name = "Summon Stuff"
@@ -432,11 +440,17 @@
user << "<span class='warning'>The contract has been used, you can't get your points back now!</span>"
else
user << "<span class='notice'>You feed the contract back into the spellbook, refunding your points.</span>"
src.uses++
uses++
for(var/datum/spellbook_entry/item/contract/CT in entries)
if(!isnull(CT.limit))
CT.limit++
qdel(O)
if(istype(O, /obj/item/weapon/antag_spawner/slaughter_demon))
user << "<span class='notice'>On second thought, maybe summoning a demon is a bad idea. You refund your points.</span>"
src.uses++
uses++
for(var/datum/spellbook_entry/item/bloodbottle/BB in entries)
if(!isnull(BB.limit))
BB.limit++
qdel(O)
/obj/item/weapon/spellbook/proc/GetCategoryHeader(category)
@@ -545,12 +559,16 @@
E = entries[text2num(href_list["buy"])]
if(E && E.CanBuy(H,src))
if(E.Buy(H,src))
if(E.limit)
E.limit--
uses -= E.cost
else if(href_list["refund"])
E = entries[text2num(href_list["refund"])]
if(E && E.refundable)
var/result = E.Refund(H,src)
if(result > 0)
if(!isnull(E.limit))
E.limit += result
uses += result
else if(href_list["page"])
tab = sanitize(href_list["page"])
+2 -2
View File
@@ -152,8 +152,8 @@
wizard_mob.equip_to_slot_or_del(new /obj/item/clothing/shoes/sandal(wizard_mob), slot_shoes)
wizard_mob.equip_to_slot_or_del(new /obj/item/clothing/suit/wizrobe(wizard_mob), slot_wear_suit)
wizard_mob.equip_to_slot_or_del(new /obj/item/clothing/head/wizard(wizard_mob), slot_head)
if(wizard_mob.backbag == 2) wizard_mob.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack(wizard_mob), slot_back)
if(wizard_mob.backbag == 3) wizard_mob.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack/satchel_norm(wizard_mob), slot_back)
if(wizard_mob.backbag == 1) wizard_mob.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack(wizard_mob), slot_back)
if(wizard_mob.backbag == 2) wizard_mob.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack/satchel_norm(wizard_mob), slot_back)
wizard_mob.equip_to_slot_or_del(new /obj/item/weapon/storage/box/survival(wizard_mob), slot_in_backpack)
// wizard_mob.equip_to_slot_or_del(new /obj/item/weapon/scrying_gem(wizard_mob), slot_l_store) For scrying gem.
wizard_mob.equip_to_slot_or_del(new /obj/item/weapon/teleportation_scroll(wizard_mob), slot_r_store)
+4 -10
View File
@@ -33,11 +33,8 @@ Captain
H.equip_to_slot_or_del(new /obj/item/clothing/glasses/sunglasses(H), slot_glasses)
//Equip ID box & telebaton
if(H.backbag == 1)
H.equip_to_slot_or_del(new /obj/item/weapon/storage/box/silver_ids(H), slot_l_hand)
else
H.equip_to_slot_or_del(new /obj/item/weapon/storage/box/silver_ids(H.back), slot_in_backpack)
H.equip_to_slot_or_del(new /obj/item/weapon/melee/classic_baton/telescopic(H), slot_in_backpack)
H.equip_to_slot_or_del(new /obj/item/weapon/storage/box/silver_ids(H.back), slot_in_backpack)
H.equip_to_slot_or_del(new /obj/item/weapon/melee/classic_baton/telescopic(H), slot_in_backpack)
//Implant him
var/obj/item/weapon/implant/loyalty/L = new/obj/item/weapon/implant/loyalty(H)
@@ -90,8 +87,5 @@ Head of Personnel
H.equip_to_slot_or_del(new /obj/item/clothing/head/hopcap(H), slot_head)
//Equip ID box & telebaton
if(H.backbag == 1)
H.equip_to_slot_or_del(new /obj/item/weapon/storage/box/ids(H), slot_l_hand)
else
H.equip_to_slot_or_del(new /obj/item/weapon/storage/box/ids(H.back), slot_in_backpack)
H.equip_to_slot_or_del(new /obj/item/weapon/melee/classic_baton/telescopic(H), slot_in_backpack)
H.equip_to_slot_or_del(new /obj/item/weapon/storage/box/ids(H.back), slot_in_backpack)
H.equip_to_slot_or_del(new /obj/item/weapon/melee/classic_baton/telescopic(H), slot_in_backpack)
+8 -35
View File
@@ -75,16 +75,10 @@ Shaft Miner
H.equip_to_slot_or_del(new /obj/item/clothing/under/rank/miner(H), slot_w_uniform)
H.equip_to_slot_or_del(new /obj/item/clothing/shoes/sneakers/black(H), slot_shoes)
if(H.backbag == 1)
H.equip_to_slot_or_del(new /obj/item/weapon/crowbar(H), slot_belt)
H.equip_to_slot_or_del(new /obj/item/weapon/storage/bag/ore(H), slot_l_store)
H.equip_to_slot_or_del(new /obj/item/weapon/mining_voucher(H), slot_l_hand)
H.equip_to_slot_or_del(new /obj/item/weapon/reagent_containers/pill/patch/styptic(H), slot_r_store)
else
H.equip_to_slot_or_del(new /obj/item/weapon/crowbar(H), slot_in_backpack)
H.equip_to_slot_or_del(new /obj/item/weapon/storage/bag/ore(H), slot_in_backpack)
H.equip_to_slot_or_del(new /obj/item/weapon/mining_voucher(H), slot_in_backpack)
H.equip_to_slot_or_del(new /obj/item/weapon/reagent_containers/pill/patch/styptic(H), slot_l_store)
H.equip_to_slot_or_del(new /obj/item/weapon/crowbar(H), slot_in_backpack)
H.equip_to_slot_or_del(new /obj/item/weapon/storage/bag/ore(H), slot_in_backpack)
H.equip_to_slot_or_del(new /obj/item/weapon/mining_voucher(H), slot_in_backpack)
H.equip_to_slot_or_del(new /obj/item/weapon/reagent_containers/pill/patch/styptic(H), slot_l_store)
/*
Bartender
@@ -106,36 +100,15 @@ Bartender
access = list(access_hydroponics, access_bar, access_kitchen, access_morgue, access_weapons)
minimal_access = list(access_bar)
/datum/job/bartender/equip_backpack(mob/living/carbon/human/H)
switch(H.backbag)
if(1) //No backpack or satchel
var/obj/item/weapon/storage/box/box = new default_storagebox(H)
new /obj/item/ammo_casing/shotgun/beanbag(box)
new /obj/item/ammo_casing/shotgun/beanbag(box)
new /obj/item/ammo_casing/shotgun/beanbag(box)
new /obj/item/ammo_casing/shotgun/beanbag(box)
H.equip_to_slot_or_del(box, slot_r_hand)
if(2) // Backpack
var/obj/item/weapon/storage/backpack/BPK = new default_backpack(H)
new default_storagebox(BPK)
H.equip_to_slot_or_del(BPK, slot_back,1)
if(3) //Satchel
var/obj/item/weapon/storage/backpack/BPK = new default_satchel(H)
new default_storagebox(BPK)
H.equip_to_slot_or_del(BPK, slot_back,1)
/datum/job/bartender/equip_items(mob/living/carbon/human/H)
H.equip_to_slot_or_del(new /obj/item/clothing/shoes/sneakers/black(H), slot_shoes)
H.equip_to_slot_or_del(new /obj/item/clothing/suit/armor/vest(H), slot_wear_suit)
H.equip_to_slot_or_del(new /obj/item/clothing/under/rank/bartender(H), slot_w_uniform)
if(H.backbag != 1)
H.equip_to_slot_or_del(new /obj/item/ammo_casing/shotgun/beanbag(H), slot_in_backpack)
H.equip_to_slot_or_del(new /obj/item/ammo_casing/shotgun/beanbag(H), slot_in_backpack)
H.equip_to_slot_or_del(new /obj/item/ammo_casing/shotgun/beanbag(H), slot_in_backpack)
H.equip_to_slot_or_del(new /obj/item/ammo_casing/shotgun/beanbag(H), slot_in_backpack)
H.equip_to_slot_or_del(new /obj/item/ammo_casing/shotgun/beanbag(H), slot_in_backpack)
H.equip_to_slot_or_del(new /obj/item/ammo_casing/shotgun/beanbag(H), slot_in_backpack)
H.equip_to_slot_or_del(new /obj/item/ammo_casing/shotgun/beanbag(H), slot_in_backpack)
H.equip_to_slot_or_del(new /obj/item/ammo_casing/shotgun/beanbag(H), slot_in_backpack)
/*
Cook
+9 -19
View File
@@ -14,20 +14,11 @@ Clown
default_pda = /obj/item/device/pda/clown
default_backpack = /obj/item/weapon/storage/backpack/clown
default_satchel = /obj/item/weapon/storage/backpack/clown
access = list(access_theatre)
minimal_access = list(access_theatre)
/datum/job/clown/equip_backpack(mob/living/carbon/human/H)
var/obj/item/weapon/storage/backpack/BPK = new default_backpack(H)
new default_storagebox(BPK)
new /obj/item/weapon/reagent_containers/food/snacks/grown/banana(BPK, 50)
new /obj/item/weapon/stamp/clown(BPK)
new /obj/item/weapon/reagent_containers/spray/waterflower(BPK)
H.equip_to_slot_or_del(BPK, slot_back)
/datum/job/clown/equip_items(mob/living/carbon/human/H)
H.fully_replace_character_name(H.real_name, pick(clown_names)) // Give him a temporary random name to prevent identity revealing
@@ -37,6 +28,10 @@ Clown
H.equip_to_slot_or_del(new /obj/item/weapon/bikehorn(H), slot_l_store)
H.equip_to_slot_or_del(new /obj/item/toy/crayon/rainbow(H), slot_r_store)
H.equip_to_slot_or_del(new /obj/item/weapon/reagent_containers/food/snacks/grown/banana(H, 50), slot_in_backpack)
H.equip_to_slot_or_del(new /obj/item/weapon/stamp/clown(H), slot_in_backpack)
H.equip_to_slot_or_del(new /obj/item/weapon/reagent_containers/spray/waterflower(H), slot_in_backpack)
H.dna.add_mutation(CLOWNMUT)
H.rename_self("clown")
@@ -56,19 +51,11 @@ Mime
default_pda = /obj/item/device/pda/mime
default_backpack = /obj/item/weapon/storage/backpack/mime
default_satchel = /obj/item/weapon/storage/backpack/mime
access = list(access_theatre)
minimal_access = list(access_theatre)
/datum/job/mime/equip_backpack(mob/living/carbon/human/H)
var/obj/item/weapon/storage/backpack/BPK = new default_backpack(H)
new default_storagebox(BPK)
new /obj/item/toy/crayon/mime(BPK)
new /obj/item/weapon/reagent_containers/food/drinks/bottle/bottleofnothing(BPK)
H.equip_to_slot_or_del(BPK, slot_back)
/datum/job/mime/equip_items(mob/living/carbon/human/H)
H.equip_to_slot_or_del(new /obj/item/clothing/under/rank/mime(H), slot_w_uniform)
H.equip_to_slot_or_del(new /obj/item/clothing/shoes/sneakers/black(H), slot_shoes)
@@ -77,6 +64,9 @@ Mime
H.equip_to_slot_or_del(new /obj/item/clothing/head/beret(H), slot_head)
H.equip_to_slot_or_del(new /obj/item/clothing/suit/suspenders(H), slot_wear_suit)
H.equip_to_slot_or_del(new /obj/item/weapon/reagent_containers/food/drinks/bottle/bottleofnothing(H), slot_in_backpack)
H.equip_to_slot_or_del(new /obj/item/toy/crayon/mime(H), slot_in_backpack)
if(H.mind)
H.mind.AddSpell(new /obj/effect/proc_holder/spell/aoe_turf/conjure/mime_wall(null))
H.mind.AddSpell(new /obj/effect/proc_holder/spell/targeted/mime/speak(null))
+1 -2
View File
@@ -39,8 +39,7 @@ Chief Engineer
H.equip_to_slot_or_del(new /obj/item/clothing/gloves/color/black/ce(H), slot_gloves)
//Equip telebaton
if(H.backbag == 2 || H.backbag == 3)
H.equip_to_slot_or_del(new /obj/item/weapon/melee/classic_baton/telescopic(H), slot_in_backpack)
H.equip_to_slot_or_del(new /obj/item/weapon/melee/classic_baton/telescopic(H), slot_in_backpack)
/*
Station Engineer
+7 -11
View File
@@ -53,17 +53,13 @@
//Or this proc
/datum/job/proc/equip_backpack(mob/living/carbon/human/H)
switch(H.backbag)
if(1) //No backpack or satchel
H.equip_to_slot_or_del(new default_storagebox(H), slot_r_hand)
if(2) // Backpack
var/obj/item/weapon/storage/backpack/BPK = new default_backpack(H)
new default_storagebox(BPK)
H.equip_to_slot_or_del(BPK, slot_back,1)
if(3) //Satchel
var/obj/item/weapon/storage/backpack/BPK = new default_satchel(H)
new default_storagebox(BPK)
H.equip_to_slot_or_del(BPK, slot_back,1)
var/obj/item/weapon/storage/backpack/BPK
if(H.backbag == 1) //Backpack
BPK = new default_backpack(H)
else //Satchel
BPK = new default_satchel(H)
new default_storagebox(BPK)
H.equip_to_slot_or_del(BPK, slot_back,1)
//But don't override this
/datum/job/proc/equip(mob/living/carbon/human/H)
+1 -4
View File
@@ -33,10 +33,7 @@ Chief Medical Officer
H.equip_to_slot_or_del(new /obj/item/clothing/suit/toggle/labcoat/cmo(H), slot_wear_suit)
H.equip_to_slot_or_del(new /obj/item/weapon/storage/firstaid/regular(H), slot_l_hand)
H.equip_to_slot_or_del(new /obj/item/device/flashlight/pen(H), slot_s_store)
//Equip telebaton
if(H.backbag == 2 || H.backbag == 3)
H.equip_to_slot_or_del(new /obj/item/weapon/melee/classic_baton/telescopic(H), slot_in_backpack)
H.equip_to_slot_or_del(new /obj/item/weapon/melee/classic_baton/telescopic(H), slot_in_backpack)
/*
Medical Doctor
+1 -4
View File
@@ -35,10 +35,7 @@ Research Director
H.equip_to_slot_or_del(new /obj/item/clothing/suit/toggle/labcoat(H), slot_wear_suit)
H.equip_to_slot_or_del(new /obj/item/weapon/clipboard(H), slot_l_hand)
H.equip_to_slot_or_del(new /obj/item/device/laser_pointer(H), slot_l_store)
//Equip telebaton
if(H.backbag == 2 || H.backbag == 3)
H.equip_to_slot_or_del(new /obj/item/weapon/melee/classic_baton/telescopic(H), slot_in_backpack)
H.equip_to_slot_or_del(new /obj/item/weapon/melee/classic_baton/telescopic(H), slot_in_backpack)
/*
Scientist
+8 -22
View File
@@ -44,11 +44,8 @@ Head of Security
H.equip_to_slot_or_del(new /obj/item/clothing/glasses/hud/security/sunglasses(H), slot_glasses)
H.equip_to_slot_or_del(new /obj/item/weapon/gun/energy/gun(H), slot_s_store)
if(H.backbag == 1)
H.equip_to_slot_or_del(new /obj/item/weapon/restraints/handcuffs(H), slot_l_store)
else
H.equip_to_slot_or_del(new /obj/item/weapon/restraints/handcuffs(H), slot_in_backpack)
H.equip_to_slot_or_del(new /obj/item/weapon/melee/classic_baton/telescopic(H), slot_in_backpack)
H.equip_to_slot_or_del(new /obj/item/weapon/restraints/handcuffs(H), slot_in_backpack)
H.equip_to_slot_or_del(new /obj/item/weapon/melee/classic_baton/telescopic(H), slot_in_backpack)
var/obj/item/weapon/implant/loyalty/L = new/obj/item/weapon/implant/loyalty(H)
L.imp_in = H
@@ -88,10 +85,7 @@ Warden
H.equip_to_slot_or_del(new /obj/item/device/flash/handheld(H), slot_l_store)
H.equip_to_slot_or_del(new /obj/item/weapon/gun/energy/gun/advtaser(H), slot_s_store)
if(H.backbag == 1)
H.equip_to_slot_or_del(new /obj/item/weapon/restraints/handcuffs(H), slot_l_hand)
else
H.equip_to_slot_or_del(new /obj/item/weapon/restraints/handcuffs(H), slot_in_backpack)
H.equip_to_slot_or_del(new /obj/item/weapon/restraints/handcuffs(H), slot_in_backpack)
var/obj/item/weapon/implant/loyalty/L = new/obj/item/weapon/implant/loyalty(H)
L.imp_in = H
@@ -137,13 +131,9 @@ Detective
cig.light("")
H.equip_to_slot_or_del(cig, slot_wear_mask)
if(H.backbag == 1)//Why cant some of these things spawn in his office?
H.equip_to_slot_or_del(new /obj/item/weapon/storage/box/evidence(H), slot_l_hand)
H.equip_to_slot_or_del(new /obj/item/device/detective_scanner(H), slot_r_store)
else
H.equip_to_slot_or_del(new /obj/item/weapon/storage/box/evidence(H), slot_in_backpack)
H.equip_to_slot_or_del(new /obj/item/device/detective_scanner(H), slot_in_backpack)
H.equip_to_slot_or_del(new /obj/item/weapon/melee/classic_baton/telescopic(H), slot_in_backpack)
H.equip_to_slot_or_del(new /obj/item/weapon/storage/box/evidence(H), slot_in_backpack)
H.equip_to_slot_or_del(new /obj/item/device/detective_scanner(H), slot_in_backpack)
H.equip_to_slot_or_del(new /obj/item/weapon/melee/classic_baton/telescopic(H), slot_in_backpack)
var/obj/item/weapon/implant/loyalty/L = new/obj/item/weapon/implant/loyalty(H)
L.imp_in = H
@@ -184,12 +174,8 @@ Security Officer
H.equip_to_slot_or_del(new /obj/item/weapon/gun/energy/gun/advtaser(H), slot_s_store)
H.equip_to_slot_or_del(new /obj/item/device/flash/handheld(H), slot_l_store)
if(H.backbag == 1)
H.equip_to_slot_or_del(new /obj/item/weapon/restraints/handcuffs(H), slot_r_store)
H.equip_to_slot_or_del(new /obj/item/weapon/melee/baton/loaded(H), slot_l_hand)
else
H.equip_to_slot_or_del(new /obj/item/weapon/restraints/handcuffs(H), slot_in_backpack)
H.equip_to_slot_or_del(new /obj/item/weapon/melee/baton/loaded(H), slot_in_backpack)
H.equip_to_slot_or_del(new /obj/item/weapon/restraints/handcuffs(H), slot_in_backpack)
H.equip_to_slot_or_del(new /obj/item/weapon/melee/baton/loaded(H), slot_in_backpack)
var/obj/item/weapon/implant/loyalty/L = new/obj/item/weapon/implant/loyalty(H)
L.imp_in = H
+64 -12
View File
@@ -32,10 +32,13 @@
#define AALARM_MODE_SCRUBBING 1
#define AALARM_MODE_VENTING 2 //makes draught
#define AALARM_MODE_PANIC 3 //constantly sucks all air
#define AALARM_MODE_PANIC 3 //like siphon, but stronger (enables widenet)
#define AALARM_MODE_REPLACEMENT 4 //sucks off all air, then refill and swithes to scrubbing
#define AALARM_MODE_OFF 5
#define AALARM_MODE_FLOOD 6 //Emagged mode; turns off scrubbers and pressure checks on vents
#define AALARM_MODE_SIPHON 7 //Scrubbers suck air
#define AALARM_MODE_CONTAMINATED 8 //Turns on all filtering and widenet scrubbing.
#define AALARM_MODE_REFILL 9 //just like normal, but with triple the air output
#define AALARM_SCREEN_MAIN 1
#define AALARM_SCREEN_VENT 2
@@ -337,7 +340,7 @@
"long_name" = sanitize(long_name),
"power" = info["power"],
"scrubbing" = info["scrubbing"],
"panic" = info["panic"],
"widenet" = info["widenet"],
"filter_co2" = info["filter_co2"],
"filter_toxins" = info["filter_toxins"],
"filter_n2o" = info["filter_n2o"]
@@ -346,12 +349,15 @@
data["mode"] = mode
data["modes"] = list()
data["modes"] += list(list("name" = "Filtering - Scrubs out contaminants", "mode" = AALARM_MODE_SCRUBBING, "selected" = mode == AALARM_MODE_SCRUBBING, "danger" = 0))
data["modes"] += list(list("name" = "Contaminated - Scrubs out ALL contaminants quickly","mode" = AALARM_MODE_CONTAMINATED, "selected" = mode == AALARM_MODE_CONTAMINATED, "danger" = 0))
data["modes"] += list(list("name" = "Draught - Siphons out air while replacing", "mode" = AALARM_MODE_VENTING, "selected" = mode == AALARM_MODE_VENTING, "danger" = 0))
data["modes"] += list(list("name" = "Refill - Triple vent output", "mode" = AALARM_MODE_REFILL, "selected" = mode == AALARM_MODE_REFILL, "danger" = 0))
data["modes"] += list(list("name" = "Cycle - Siphons air before replacing", "mode" = AALARM_MODE_REPLACEMENT, "selected" = mode == AALARM_MODE_REPLACEMENT, "danger" = 1))
data["modes"] += list(list("name" = "Panic - Siphons air out of the room", "mode" = AALARM_MODE_PANIC, "selected" = mode == AALARM_MODE_PANIC, "danger" = 1))
data["modes"] += list(list("name" = "Siphon - Siphons air out of the room", "mode" = AALARM_MODE_SIPHON, "selected" = mode == AALARM_MODE_SIPHON, "danger" = 1))
data["modes"] += list(list("name" = "Panic Siphon - Siphons air out of the room quickly","mode" = AALARM_MODE_PANIC, "selected" = mode == AALARM_MODE_PANIC, "danger" = 1))
data["modes"] += list(list("name" = "Off - Shuts off vents and scrubbers", "mode" = AALARM_MODE_OFF, "selected" = mode == AALARM_MODE_OFF, "danger" = 0))
if (src.emagged)
data["modes"] += list(list("name" = "Flood - Shuts off scrubbers and opens vents", "mode" = AALARM_MODE_FLOOD, "selected" = mode == AALARM_MODE_FLOOD, "danger" = 1))
data["modes"] += list(list("name" = "Flood - Shuts off scrubbers and opens vents", "mode" = AALARM_MODE_FLOOD, "selected" = mode == AALARM_MODE_FLOOD, "danger" = 1))
if(AALARM_SCREEN_SENSORS)
var/datum/tlv/selected
var/list/thresholds = list()
@@ -426,7 +432,7 @@
"co2_scrub",
"tox_scrub",
"n2o_scrub",
"panic_siphon",
"widenet",
"scrubbing"
)
send_signal(device_id, list (href_list["command"] = text2num(href_list["val"])))
@@ -496,8 +502,26 @@
send_signal(device_id, list(
"power"= 1,
"co2_scrub"= 1,
"tox_scrub"= 0,
"n2o_scrub"= 0,
"scrubbing"= 1,
"panic_siphon"= 0,
"widenet"= 0,
))
for(var/device_id in alarm_area.air_vent_names)
send_signal(device_id, list(
"power"= 1,
"checks"= 1,
"set_external_pressure"= ONE_ATMOSPHERE
))
if(AALARM_MODE_CONTAMINATED)
for(var/device_id in alarm_area.air_scrub_names)
send_signal(device_id, list(
"power"= 1,
"co2_scrub"= 1,
"tox_scrub"= 1,
"n2o_scrub"= 1,
"scrubbing"= 1,
"widenet"= 1,
))
for(var/device_id in alarm_area.air_vent_names)
send_signal(device_id, list(
@@ -505,19 +529,34 @@
"checks"= 1,
"set_external_pressure"= ONE_ATMOSPHERE
))
if(AALARM_MODE_VENTING)
for(var/device_id in alarm_area.air_scrub_names)
send_signal(device_id, list(
"power"= 1,
"panic_siphon"= 0,
"widenet"= 0,
"scrubbing"= 0
))
for(var/device_id in alarm_area.air_vent_names)
send_signal(device_id, list(
"power"= 1,
"checks"= 1,
"set_external_pressure"= ONE_ATMOSPHERE
"set_external_pressure" = ONE_ATMOSPHERE*2
))
if(AALARM_MODE_REFILL)
for(var/device_id in alarm_area.air_scrub_names)
send_signal(device_id, list(
"power"= 1,
"co2_scrub"= 1,
"tox_scrub"= 0,
"n2o_scrub"= 0,
"scrubbing"= 1,
"widenet"= 0,
))
for(var/device_id in alarm_area.air_vent_names)
send_signal(device_id, list(
"power"= 1,
"checks"= 1,
"set_external_pressure" = ONE_ATMOSPHERE*3
))
if(
AALARM_MODE_PANIC,
@@ -526,16 +565,30 @@
for(var/device_id in alarm_area.air_scrub_names)
send_signal(device_id, list(
"power"= 1,
"panic_siphon"= 1
"widenet"= 1,
"scrubbing"= 0
))
for(var/device_id in alarm_area.air_vent_names)
send_signal(device_id, list(
"power"= 0
))
if(
AALARM_MODE_SIPHON
)
for(var/device_id in alarm_area.air_scrub_names)
send_signal(device_id, list(
"power"= 1,
"widenet"= 0,
"scrubbing"= 0
))
for(var/device_id in alarm_area.air_vent_names)
send_signal(device_id, list(
"power"= 0
))
if(AALARM_MODE_OFF)
for(var/device_id in alarm_area.air_scrub_names)
send_signal(device_id, list(
"panic_siphon"= 0,
"power"= 0
))
for(var/device_id in alarm_area.air_vent_names)
@@ -545,7 +598,6 @@
if(AALARM_MODE_FLOOD)
for(var/device_id in alarm_area.air_scrub_names)
send_signal(device_id, list(
"panic_siphon"= 0,
"power"=0
))
for(var/device_id in alarm_area.air_vent_names)
@@ -47,7 +47,7 @@
//Perform the connection
connected_port = new_port
connected_port.connected_device = src
var/datum/pipeline/connected_port_parent = connected_port.parents["p1"]
var/datum/pipeline/connected_port_parent = connected_port.parents[PARENT1]
connected_port_parent.reconcile_air()
anchored = 1 //Prevent movement
+115 -101
View File
@@ -7,9 +7,12 @@
var/on = 0
var/volume_rate = 800
var/widenet = 0 //is this scrubber acting on the 3x3 area around it.
volume = 750
/obj/machinery/portable_atmospherics/scrubber/emp_act(severity)
if(stat & (BROKEN|NOPOWER))
..(severity)
@@ -21,57 +24,6 @@
..(severity)
/obj/machinery/portable_atmospherics/scrubber/huge
name = "huge air scrubber"
icon_state = "scrubber:0"
anchored = 1
volume = 50000
volume_rate = 5000
var/global/gid = 1
var/id = 0
New()
..()
id = gid
gid++
name = "[name] (ID [id])"
attack_hand(var/mob/user as mob)
usr << "<span class='warning'>You can't directly interact with this machine! Use the area atmos computer.</span>"
update_icon()
src.overlays = 0
if(on)
icon_state = "scrubber:1"
else
icon_state = "scrubber:0"
attackby(obj/item/weapon/W, mob/user)
if(istype(W, /obj/item/weapon/wrench))
if(on)
user << "<span class='warning'>Turn it off first!</span>"
return
anchored = !anchored
playsound(src.loc, 'sound/items/Ratchet.ogg', 50, 1)
user << "<span class='notice'>You [anchored ? "wrench" : "unwrench"] \the [src].</span>"
return
..()
/obj/machinery/portable_atmospherics/scrubber/huge/stationary
name = "stationary air scrubber"
attackby(obj/item/weapon/W, mob/user)
if(istype(W, /obj/item/weapon/wrench))
user << "<span class='warning'>The bolts are too tight for you to unscrew!</span>"
return
..()
/obj/machinery/portable_atmospherics/scrubber/update_icon()
src.overlays = 0
@@ -92,62 +44,70 @@
/obj/machinery/portable_atmospherics/scrubber/process_atmos()
..()
if(on)
var/datum/gas_mixture/environment
if(!on)
return
scrub(loc)
if (widenet)
var/turf/T = loc
if (istype(T))
for (var/turf/simulated/tile in T.GetAtmosAdjacentTurfs(alldir=1))
scrub(tile)
/obj/machinery/portable_atmospherics/scrubber/proc/scrub(var/turf/simulated/tile)
var/datum/gas_mixture/environment
if(holding)
environment = holding.air_contents
else
environment = tile.return_air()
var/transfer_moles = min(1, volume_rate/environment.volume)*environment.total_moles()
//Take a gas sample
var/datum/gas_mixture/removed
if(holding)
removed = environment.remove(transfer_moles)
else
removed = tile.remove_air(transfer_moles)
//Filter it
if (removed)
var/datum/gas_mixture/filtered_out = new
filtered_out.temperature = removed.temperature
filtered_out.toxins = removed.toxins
removed.toxins = 0
filtered_out.carbon_dioxide = removed.carbon_dioxide
removed.carbon_dioxide = 0
if(removed.trace_gases.len>0)
for(var/datum/gas/trace_gas in removed.trace_gases)
if(istype(trace_gas, /datum/gas/sleeping_agent))
removed.trace_gases -= trace_gas
filtered_out.trace_gases += trace_gas
if(removed.trace_gases.len>0)
for(var/datum/gas/trace_gas in removed.trace_gases)
if(istype(trace_gas, /datum/gas/oxygen_agent_b))
removed.trace_gases -= trace_gas
filtered_out.trace_gases += trace_gas
//Remix the resulting gases
air_contents.merge(filtered_out)
if(holding)
environment = holding.air_contents
environment.merge(removed)
else
environment = loc.return_air()
var/transfer_moles = min(1, volume_rate/environment.volume)*environment.total_moles()
tile.assume_air(removed)
tile.air_update_turf()
//Take a gas sample
var/datum/gas_mixture/removed
if(holding)
removed = environment.remove(transfer_moles)
else
removed = loc.remove_air(transfer_moles)
//Filter it
if (removed)
var/datum/gas_mixture/filtered_out = new
filtered_out.temperature = removed.temperature
filtered_out.toxins = removed.toxins
removed.toxins = 0
filtered_out.carbon_dioxide = removed.carbon_dioxide
removed.carbon_dioxide = 0
if(removed.trace_gases.len>0)
for(var/datum/gas/trace_gas in removed.trace_gases)
if(istype(trace_gas, /datum/gas/sleeping_agent))
removed.trace_gases -= trace_gas
filtered_out.trace_gases += trace_gas
if(removed.trace_gases.len>0)
for(var/datum/gas/trace_gas in removed.trace_gases)
if(istype(trace_gas, /datum/gas/oxygen_agent_b))
removed.trace_gases -= trace_gas
filtered_out.trace_gases += trace_gas
//Remix the resulting gases
air_contents.merge(filtered_out)
if(holding)
environment.merge(removed)
else
loc.assume_air(removed)
/obj/machinery/portable_atmospherics/scrubber/process_atmos()
/obj/machinery/portable_atmospherics/scrubber/process()
..()
src.updateDialog()
return
/obj/machinery/portable_atmospherics/scrubber/return_air()
return air_contents
@@ -208,4 +168,58 @@ Power regulator: <A href='?src=\ref[src];volume_adj=-1000'>-</A> <A href='?src=\
else
usr << browse(null, "window=scrubber")
return
return
return
/obj/machinery/portable_atmospherics/scrubber/huge
name = "huge air scrubber"
icon_state = "scrubber:0"
anchored = 1
volume = 50000
widenet = 1
var/static/gid = 1
var/id = 0
/obj/machinery/portable_atmospherics/scrubber/huge/New()
..()
id = gid
gid++
name = "[name] (ID [id])"
/obj/machinery/portable_atmospherics/scrubber/huge/attack_hand(var/mob/user as mob)
usr << "<span class='warning'>You can't directly interact with this machine! Use the area atmos computer.</span>"
/obj/machinery/portable_atmospherics/scrubber/huge/update_icon()
src.overlays = 0
if(on)
icon_state = "scrubber:1"
else
icon_state = "scrubber:0"
/obj/machinery/portable_atmospherics/scrubber/huge/attackby(obj/item/weapon/W, mob/user)
if(istype(W, /obj/item/weapon/wrench))
if(on)
user << "<span class='warning'>Turn it off first!</span>"
return
anchored = !anchored
playsound(src.loc, 'sound/items/Ratchet.ogg', 50, 1)
user << "<span class='notice'>You [anchored ? "wrench" : "unwrench"] \the [src].</span>"
return
..()
/obj/machinery/portable_atmospherics/scrubber/huge/stationary
name = "stationary air scrubber"
/obj/machinery/portable_atmospherics/scrubber/huge/stationary/attackby(obj/item/weapon/W, mob/user)
if(istype(W, /obj/item/weapon/wrench))
user << "<span class='warning'>The bolts are too tight for you to unscrew!</span>"
return
..()
+8 -11
View File
@@ -197,31 +197,28 @@
return
if(istype(P, /obj/item) && get_req_components_amt())
var/success
for(var/I in req_components)
if(istype(P, I) && (req_components[I] > 0))
if(!user.drop_item())
return
success=1
if(istype(P, /obj/item/stack/cable_coil))
var/obj/item/stack/cable_coil/CP = P
if (CP.get_amount() < 1)
user << "<span class='warning'>You need more cable!</span>"
return
var/obj/item/stack/cable_coil/CC = new /obj/item/stack/cable_coil(src, 1, CP.item_color)
var/cable_color = CP.item_color
if(CP.use(1))
var/obj/item/stack/cable_coil/CC = new /obj/item/stack/cable_coil(src, 1, cable_color)
components += CC
req_components[I]--
update_req_desc()
else
user << "<span class='warning'>You need more cable!</span>"
return
if(!user.drop_item())
break
P.loc = src
components += P
req_components[I]--
update_req_desc()
return 1
if(!success)
user << "<span class='warning'>You cannot add that to the machine!</span>"
return 0
user << "<span class='warning'>You cannot add that to the machine!</span>"
return 0
//Machine Frame Circuit Boards
+4 -1
View File
@@ -9,6 +9,7 @@
flags = ON_BORDER
opacity = 0
var/obj/item/weapon/airlock_electronics/electronics = null
var/reinf = 0
/obj/machinery/door/window/New()
..()
@@ -184,7 +185,7 @@
..()
/obj/machinery/door/window/temperature_expose(datum/gas_mixture/air, exposed_temperature, exposed_volume)
if(exposed_temperature > T0C + 800)
if(exposed_temperature > T0C + (reinf ? 1600 : 800))
take_damage(round(exposed_volume / 200))
..()
@@ -380,6 +381,8 @@
base_state = "leftsecure"
var/id = null
health = 300.0 //Stronger doors for prison (regular window door health is 200)
reinf = 1
explosion_block = 1
/obj/machinery/door/window/northleft
+1 -1
View File
@@ -88,7 +88,7 @@
if (get_dist(src, L) > range)
continue
if(L.flash_eyes())
if(L.flash_eyes(affect_silicon = 1))
L.Weaken(strength)
if(L.weakeyes)
L.Weaken(strength * 1.5)
+23 -41
View File
@@ -13,15 +13,7 @@
var/defence = 0
var/defence_deflect = 35
wreckage = /obj/structure/mecha_wreckage/durand
/*
/obj/mecha/combat/durand/New()
..()
weapons += new /datum/mecha_weapon/ballistic/lmg(src)
weapons += new /datum/mecha_weapon/ballistic/scattershot(src)
selected_weapon = weapons[1]
return
*/
var/datum/action/mecha/mech_defence_mode/defense_action = new
/obj/mecha/combat/durand/relaymove(mob/user,direction)
if(defence)
@@ -32,43 +24,33 @@
. = ..()
return
/obj/mecha/combat/durand/GrantActions(var/mob/living/user, var/human_occupant = 0)
..()
defense_action.chassis = src
defense_action.Grant(user)
/obj/mecha/combat/durand/verb/defence_mode()
set category = "Exosuit Interface"
set name = "Toggle defence mode"
set src = usr.loc
set popup_menu = 0
if(!can_use(usr))
return
defence = !defence
if(defence)
deflect_chance = defence_deflect
src.occupant_message("<span class='notice'>You enable [src] defence mode.</span>")
else
deflect_chance = initial(deflect_chance)
src.occupant_message("<span class='danger'>You disable [src] defence mode.</span>")
src.log_message("Toggled defence mode.")
return
/obj/mecha/combat/durand/RemoveActions(var/mob/living/user, var/human_occupant = 0)
..()
defense_action.Remove(user)
/obj/mecha/combat/durand/get_stats_part()
var/output = ..()
output += "<b>Defence mode: [defence?"on":"off"]</b>"
return output
/obj/mecha/combat/durand/get_commands()
var/output = {"<div class='wr'>
<div class='header'>Special</div>
<div class='links'>
<a href='?src=\ref[src];toggle_defence_mode=1'>Toggle defence mode</a>
</div>
</div>
"}
output += ..()
return output
/datum/action/mecha/mech_defence_mode
name = "Toggle Defense Mode"
button_icon_state = "mech_toggle_defense_mode"
/obj/mecha/combat/durand/Topic(href, href_list)
..()
if (href_list["toggle_defence_mode"])
src.defence_mode()
return
/datum/action/mecha/mech_defence_mode/Activate()
if(!owner || !chassis || chassis.occupant != owner)
return
var/obj/mecha/combat/durand/D = chassis
D.defence = !D.defence
if(D.defence)
D.deflect_chance = D.defence_deflect
D.occupant_message("<span class='notice'>You enable [D] defence mode.</span>")
else
D.deflect_chance = initial(D.deflect_chance)
D.occupant_message("<span class='danger'>You disable [D] defence mode.</span>")
D.log_message("Toggled defence mode.")
+5 -5
View File
@@ -33,7 +33,7 @@
..()
var/obj/item/mecha_parts/mecha_equipment/ME = new /obj/item/mecha_parts/mecha_equipment/weapon/ballistic/carbine
ME.attach(src)
ME = new /obj/item/mecha_parts/mecha_equipment/weapon/ballistic/missile_rack/flashbang
ME = new /obj/item/mecha_parts/mecha_equipment/weapon/ballistic/launcher/flashbang
ME.attach(src)
ME = new /obj/item/mecha_parts/mecha_equipment/teleporter
ME.attach(src)
@@ -71,16 +71,16 @@
src.log_message("Toggled leg actuators overload.")
return
/obj/mecha/combat/gygax/dyndomove(direction)
if(!..()) return
/obj/mecha/combat/gygax/domove(direction)
if(!..())
return
if(overload)
health--
if(health < initial(health) - initial(health)/3)
overload = 0
step_in = initial(step_in)
step_energy_drain = initial(step_energy_drain)
src.occupant_message("<span class='danger'>Leg actuators damage threshold exceded. Disabling overload.</span>")
return
occupant_message("<span class='danger'>Leg actuators damage threshold exceded. Disabling overload.</span>")
/obj/mecha/combat/gygax/get_stats_part()
+127 -133
View File
@@ -20,80 +20,20 @@
internal_damage_threshold = 25
force = 45
max_equip = 4
var/datum/action/mecha/mech_smoke/smoke_action = new
var/datum/action/mecha/mech_toggle_thrusters/thrusters_action = new
var/datum/action/mecha/mech_zoom/zoom_action = new
/obj/mecha/combat/marauder/New()
..()
smoke_system.set_up(3, 0, src)
smoke_system.attach(src)
/obj/mecha/combat/marauder/Destroy()
qdel(smoke_system)
smoke_system = null
..()
/obj/mecha/combat/marauder/seraph
desc = "Heavy-duty, command-type exosuit. This is a custom model, utilized only by high-ranking military personnel."
name = "\improper Seraph"
icon_state = "seraph"
operation_req_access = list(access_cent_specops)
step_in = 3
health = 550
wreckage = /obj/structure/mecha_wreckage/seraph
internal_damage_threshold = 20
force = 55
max_equip = 5
/obj/mecha/combat/marauder/mauler
desc = "Heavy-duty, combat exosuit, developed off of the existing Marauder model."
name = "\improper Mauler"
icon_state = "mauler"
operation_req_access = list(access_syndicate)
wreckage = /obj/structure/mecha_wreckage/mauler
/obj/mecha/combat/marauder/mauler/loaded/New()
..()
var/obj/item/mecha_parts/mecha_equipment/ME = new /obj/item/mecha_parts/mecha_equipment/weapon/ballistic/lmg(src)
ME.attach(src)
ME = new /obj/item/mecha_parts/mecha_equipment/weapon/ballistic/scattershot(src)
ME.attach(src)
ME = new /obj/item/mecha_parts/mecha_equipment/weapon/ballistic/missile_rack(src)
ME.attach(src)
ME = new /obj/item/mecha_parts/mecha_equipment/tesla_energy_relay(src)
ME.attach(src)
ME = new /obj/item/mecha_parts/mecha_equipment/antiproj_armor_booster(src)
ME.attach(src)
src.smoke_system.set_up(3, 0, src)
src.smoke_system.attach(src)
return
/obj/mecha/combat/marauder/loaded/New()
..()
var/obj/item/mecha_parts/mecha_equipment/ME = new /obj/item/mecha_parts/mecha_equipment/weapon/energy/pulse(src)
ME.attach(src)
ME = new /obj/item/mecha_parts/mecha_equipment/weapon/ballistic/missile_rack(src)
ME.attach(src)
ME = new /obj/item/mecha_parts/mecha_equipment/tesla_energy_relay(src)
ME.attach(src)
ME = new /obj/item/mecha_parts/mecha_equipment/antiproj_armor_booster(src)
ME.attach(src)
src.smoke_system.set_up(3, 0, src)
src.smoke_system.attach(src)
return
/obj/mecha/combat/marauder/seraph/New()
..()//Let it equip whatever is needed.
var/obj/item/mecha_parts/mecha_equipment/ME
if(equipment.len)//Now to remove it and equip anew.
for(ME in equipment)
equipment -= ME
qdel(ME)
ME = new /obj/item/mecha_parts/mecha_equipment/weapon/ballistic/scattershot(src)
ME.attach(src)
ME = new /obj/item/mecha_parts/mecha_equipment/weapon/ballistic/missile_rack(src)
ME.attach(src)
ME = new /obj/item/mecha_parts/mecha_equipment/teleporter(src)
ME.attach(src)
ME = new /obj/item/mecha_parts/mecha_equipment/tesla_energy_relay(src)
ME.attach(src)
ME = new /obj/item/mecha_parts/mecha_equipment/antiproj_armor_booster(src)
ME.attach(src)
return
/obj/mecha/combat/marauder/relaymove(mob/user,direction)
if(zoom)
if(world.time - last_message > 20)
@@ -110,54 +50,23 @@
return 1
return 0
/obj/mecha/combat/marauder/verb/toggle_thrusters()
set category = "Exosuit Interface"
set name = "Toggle thrusters"
set src = usr.loc
set popup_menu = 0
if(usr!=src.occupant)
return
if(src.occupant)
if(get_charge() > 0)
thrusters = !thrusters
src.log_message("Toggled thrusters.")
src.occupant_message("<font color='[src.thrusters?"blue":"red"]'>Thrusters [thrusters?"en":"dis"]abled.")
return
/obj/mecha/combat/marauder/GrantActions(var/mob/living/user, var/human_occupant = 0)
..()
smoke_action.chassis = src
smoke_action.Grant(user)
/obj/mecha/combat/marauder/verb/smoke()
set category = "Exosuit Interface"
set name = "Smoke"
set src = usr.loc
set popup_menu = 0
if(usr!=src.occupant)
return
if(smoke_ready && smoke>0)
src.smoke_system.start()
smoke--
smoke_ready = 0
spawn(smoke_cooldown)
smoke_ready = 1
return
thrusters_action.chassis = src
thrusters_action.Grant(user)
/obj/mecha/combat/marauder/verb/zoom()
set category = "Exosuit Interface"
set name = "Zoom"
set src = usr.loc
set popup_menu = 0
if(usr!=src.occupant)
return
if(src.occupant.client)
src.zoom = !src.zoom
src.log_message("Toggled zoom mode.")
src.occupant_message("<font color='[src.zoom?"blue":"red"]'>Zoom mode [zoom?"en":"dis"]abled.</font>")
if(zoom)
src.occupant.client.view = 12
src.occupant << sound('sound/mecha/imag_enh.ogg',volume=50)
else
src.occupant.client.view = world.view//world.view - default mob view size
return
zoom_action.chassis = src
zoom_action.Grant(user)
/obj/mecha/combat/marauder/RemoveActions(var/mob/living/user, var/human_occupant = 0)
..()
smoke_action.Remove(user)
thrusters_action.Remove(user)
zoom_action.Remove(user)
/obj/mecha/combat/marauder/go_out()
if(src.occupant && src.occupant.client)
@@ -176,25 +85,110 @@
return output
/obj/mecha/combat/marauder/get_commands()
var/output = {"<div class='wr'>
<div class='header'>Special</div>
<div class='links'>
<a href='?src=\ref[src];toggle_thrusters=1'>Toggle thrusters</a><br>
<a href='?src=\ref[src];toggle_zoom=1'>Toggle zoom mode</a><br>
<a href='?src=\ref[src];smoke=1'>Smoke</a>
</div>
</div>
"}
output += ..()
return output
/obj/mecha/combat/marauder/Topic(href, href_list)
/obj/mecha/combat/marauder/loaded/New()
..()
if (href_list["toggle_thrusters"])
src.toggle_thrusters()
if (href_list["smoke"])
src.smoke()
if (href_list["toggle_zoom"])
src.zoom()
return
var/obj/item/mecha_parts/mecha_equipment/ME = new /obj/item/mecha_parts/mecha_equipment/weapon/energy/pulse(src)
ME.attach(src)
ME = new /obj/item/mecha_parts/mecha_equipment/weapon/ballistic/launcher/missile_rack(src)
ME.attach(src)
ME = new /obj/item/mecha_parts/mecha_equipment/tesla_energy_relay(src)
ME.attach(src)
ME = new /obj/item/mecha_parts/mecha_equipment/antiproj_armor_booster(src)
ME.attach(src)
/obj/mecha/combat/marauder/seraph
desc = "Heavy-duty, command-type exosuit. This is a custom model, utilized only by high-ranking military personnel."
name = "\improper Seraph"
icon_state = "seraph"
operation_req_access = list(access_cent_specops)
step_in = 3
health = 550
wreckage = /obj/structure/mecha_wreckage/seraph
internal_damage_threshold = 20
force = 55
max_equip = 5
/obj/mecha/combat/marauder/seraph/New()
..()
var/obj/item/mecha_parts/mecha_equipment/ME
ME = new /obj/item/mecha_parts/mecha_equipment/weapon/ballistic/scattershot(src)
ME.attach(src)
ME = new /obj/item/mecha_parts/mecha_equipment/weapon/ballistic/launcher/missile_rack(src)
ME.attach(src)
ME = new /obj/item/mecha_parts/mecha_equipment/teleporter(src)
ME.attach(src)
ME = new /obj/item/mecha_parts/mecha_equipment/tesla_energy_relay(src)
ME.attach(src)
ME = new /obj/item/mecha_parts/mecha_equipment/antiproj_armor_booster(src)
ME.attach(src)
/obj/mecha/combat/marauder/mauler
desc = "Heavy-duty, combat exosuit, developed off of the existing Marauder model."
name = "\improper Mauler"
icon_state = "mauler"
operation_req_access = list(access_syndicate)
wreckage = /obj/structure/mecha_wreckage/mauler
/obj/mecha/combat/marauder/mauler/loaded/New()
..()
var/obj/item/mecha_parts/mecha_equipment/ME = new /obj/item/mecha_parts/mecha_equipment/weapon/ballistic/lmg(src)
ME.attach(src)
ME = new /obj/item/mecha_parts/mecha_equipment/weapon/ballistic/scattershot(src)
ME.attach(src)
ME = new /obj/item/mecha_parts/mecha_equipment/weapon/ballistic/launcher/missile_rack(src)
ME.attach(src)
ME = new /obj/item/mecha_parts/mecha_equipment/tesla_energy_relay(src)
ME.attach(src)
ME = new /obj/item/mecha_parts/mecha_equipment/antiproj_armor_booster(src)
ME.attach(src)
/datum/action/mecha/mech_smoke
name = "Smoke"
button_icon_state = "smoke"
/datum/action/mecha/mech_smoke/Activate()
if(!owner || !chassis || chassis.occupant != owner)
return
var/obj/mecha/combat/marauder/M = chassis
if(M.smoke_ready && M.smoke>0)
M.smoke_system.start()
M.smoke--
M.smoke_ready = 0
spawn(M.smoke_cooldown)
M.smoke_ready = 1
/datum/action/mecha/mech_toggle_thrusters
name = "Toggle Thrusters"
button_icon_state = "mech_toggle_thrusters"
/datum/action/mecha/mech_toggle_thrusters/Activate()
if(!owner || !chassis || chassis.occupant != owner)
return
var/obj/mecha/combat/marauder/M = chassis
if(M.get_charge() > 0)
M.thrusters = !M.thrusters
if(M.thrusters)
button_icon_state = "mech_toggle_thrusters_on"
else
button_icon_state = "mech_toggle_thrusters"
M.log_message("Toggled thrusters.")
M.occupant_message("<font color='[M.thrusters?"blue":"red"]'>Thrusters [M.thrusters?"en":"dis"]abled.")
/datum/action/mecha/mech_zoom
name = "Zoom"
button_icon_state = "mech_zoom"
/datum/action/mecha/mech_zoom/Activate()
if(!owner || !chassis || chassis.occupant != owner)
return
var/obj/mecha/combat/marauder/M = chassis
if(owner.client)
M.zoom = !M.zoom
M.log_message("Toggled zoom mode.")
M.occupant_message("<font color='[M.zoom?"blue":"red"]'>Zoom mode [M.zoom?"en":"dis"]abled.</font>")
if(M.zoom)
owner.client.view = 12
owner << sound('sound/mecha/imag_enh.ogg',volume=50)
else
owner.client.view = world.view//world.view - default mob view size
+52 -44
View File
@@ -17,6 +17,8 @@
var/phasing = 0
var/phasing_energy_drain = 200
max_equip = 3
var/datum/action/mecha/mech_switch_damtype/switch_damtype_action = new
var/datum/action/mecha/mech_toggle_phasing/phasing_action = new
/obj/mecha/combat/phazon/Bump(atom/obstacle)
if(phasing && get_charge()>=phasing_energy_drain)
@@ -24,8 +26,8 @@
if(can_move)
can_move = 0
flick("phazon-phase", src)
src.loc = get_step(src,src.dir)
src.use_power(phasing_energy_drain)
loc = get_step(src, dir)
use_power(phasing_energy_drain)
sleep(step_in*3)
can_move = 1
else
@@ -34,50 +36,56 @@
/obj/mecha/combat/phazon/click_action(atom/target,mob/user)
if(phasing)
src.occupant_message("Unable to interact with objects while phasing")
occupant_message("Unable to interact with objects while phasing")
return
else
return ..()
/obj/mecha/combat/phazon/verb/switch_damtype()
set category = "Exosuit Interface"
set name = "Reconfigure arm microtool arrays"
set src = usr.loc
set popup_menu = 0
if(usr!=src.occupant)
return
var/new_damtype = alert(src.occupant,"Arm tool selection",null,"Fists","Torch","Toxic injector")
switch(new_damtype)
if("Fists")
damtype = "brute"
src.occupant_message("Your exosuit's hands form into fists.")
if("Torch")
damtype = "fire"
src.occupant_message("A torch tip extends from your exosuit's hand, glowing red.")
if("Toxic injector")
damtype = "tox"
src.occupant_message("A bone-chillingly thick plasteel needle protracts from the exosuit's palm.")
playsound(src, 'sound/mecha/mechmove01.ogg', 50, 1)
return
/obj/mecha/combat/phazon/get_commands()
var/output = {"<div class='wr'>
<div class='header'>Special</div>
<div class='links'>
<a href='?src=\ref[src];phasing=1'><span id="phasing_command">[phasing?"Dis":"En"]able phasing</span></a><br>
<a href='?src=\ref[src];switch_damtype=1'>Reconfigure arm microtool arrays</a><br>
</div>
</div>
"}
output += ..()
return output
/obj/mecha/combat/phazon/Topic(href, href_list)
/obj/mecha/combat/phazon/GrantActions(var/mob/living/user, var/human_occupant = 0)
..()
if (href_list["switch_damtype"])
src.switch_damtype()
if (href_list["phasing"])
phasing = !phasing
send_byjax(src.occupant,"exosuit.browser","phasing_command","[phasing?"Dis":"En"]able phasing")
src.occupant_message("<font color=\"[phasing?"#00f\">En":"#f00\">Dis"]abled phasing.</font>")
return
switch_damtype_action.chassis = src
switch_damtype_action.Grant(user)
phasing_action.chassis = src
phasing_action.Grant(user)
/obj/mecha/combat/phazon/RemoveActions(var/mob/living/user, var/human_occupant = 0)
..()
switch_damtype_action.Remove(user)
phasing_action.Remove(user)
/datum/action/mecha/mech_switch_damtype
name = "Reconfigure arm microtool arrays"
button_icon_state = "mech_switch_damtype"
/datum/action/mecha/mech_switch_damtype/Activate()
if(!owner || !chassis || chassis.occupant != owner)
return
var/obj/mecha/combat/phazon/P = chassis
var/new_damtype
switch(P.damtype)
if("tox")
new_damtype = "brute"
P.occupant_message("Your exosuit's hands form into fists.")
if("brute")
new_damtype = "fire"
P.occupant_message("A torch tip extends from your exosuit's hand, glowing red.")
if("fire")
new_damtype = "tox"
P.occupant_message("A bone-chillingly thick plasteel needle protracts from the exosuit's palm.")
P.damtype = new_damtype.
playsound(src, 'sound/mecha/mechmove01.ogg', 50, 1)
/datum/action/mecha/mech_toggle_phasing
name = "Enable Phasing"
button_icon_state = "mech_toggle_phasing"
/datum/action/mecha/mech_toggle_phasing/Activate()
if(!owner || !chassis || chassis.occupant != owner)
return
var/obj/mecha/combat/phazon/P = chassis
P.phasing = !P.phasing
P.occupant_message("<font color=\"[P.phasing?"#00f\">En":"#f00\">Dis"]abled phasing.</font>")
+1 -1
View File
@@ -22,6 +22,6 @@
..()
var/obj/item/mecha_parts/mecha_equipment/ME = new /obj/item/mecha_parts/mecha_equipment/weapon/ballistic/silenced
ME.attach(src)
ME = new /obj/item/mecha_parts/mecha_equipment/tool/rcd //HAHA IT MAKES WALLS GET IT
ME = new /obj/item/mecha_parts/mecha_equipment/rcd //HAHA IT MAKES WALLS GET IT
ME.attach(src)
return
+28 -23
View File
@@ -8,23 +8,14 @@
icon_state = "mecha_equip"
force = 5
origin_tech = "materials=2"
var/equip_cooldown = 0
var/equip_ready = 1
var/equip_cooldown = 0 // cooldown after use
var/equip_ready = 1 //whether the equipment is ready for use. (or deactivated/activated for static stuff)
var/energy_drain = 0
var/obj/mecha/chassis = null
var/range = MELEE //bitflags
reliability = 1000
var/salvageable = 1
/obj/item/mecha_parts/mecha_equipment/proc/do_after_cooldown(target=1)
sleep(equip_cooldown)
set_ready_state(1)
if(target && chassis && chassis.occupant)
return 1
return 0
/obj/item/mecha_parts/mecha_equipment/New()
..()
return
@@ -42,10 +33,9 @@
return 1
return
/obj/item/mecha_parts/mecha_equipment/proc/destroy()//missiles detonating, teleporter creating singularity?
/obj/item/mecha_parts/mecha_equipment/Destroy()
if(chassis)
chassis.equipment -= src
listclearnulls(chassis.equipment)
if(chassis.selected == src)
chassis.selected = null
src.update_chassis_page()
@@ -55,13 +45,12 @@
chassis.occupant << sound('sound/mecha/weapdestr.ogg',volume=50)
else
chassis.occupant << sound('sound/mecha/critdestr.ogg',volume=50)
qdel(src)
return
chassis = null
..()
/obj/item/mecha_parts/mecha_equipment/proc/critfail()
if(chassis)
log_message("Critical failure",1)
return
/obj/item/mecha_parts/mecha_equipment/proc/get_equip_info()
if(!chassis) return
@@ -90,12 +79,30 @@
/obj/item/mecha_parts/mecha_equipment/proc/action(atom/target)
return
/obj/item/mecha_parts/mecha_equipment/proc/can_attach(obj/mecha/M)
if(istype(M))
if(M.equipment.len<M.max_equip)
return 1
return 0
/obj/item/mecha_parts/mecha_equipment/proc/start_cooldown()
set_ready_state(0)
chassis.use_power(energy_drain)
sleep(equip_cooldown)
set_ready_state(1)
/obj/item/mecha_parts/mecha_equipment/proc/do_after_cooldown(atom/target)
if(!chassis)
return
var/C = chassis.loc
set_ready_state(0)
chassis.use_power(energy_drain)
. = do_after(chassis.occupant, equip_cooldown, target=target)
set_ready_state(1)
if(!chassis || chassis.loc != C || src != chassis.selected)
return 0
/obj/item/mecha_parts/mecha_equipment/proc/can_attach(obj/mecha/M)
if(M.equipment.len<M.max_equip)
return 1
/obj/item/mecha_parts/mecha_equipment/proc/attach(obj/mecha/M)
M.equipment += src
chassis = M
@@ -121,9 +128,7 @@
/obj/item/mecha_parts/mecha_equipment/Topic(href,href_list)
if(href_list["detach"])
src.detach()
return
detach()
/obj/item/mecha_parts/mecha_equipment/proc/set_ready_state(state)
equip_ready = state
+125 -140
View File
@@ -1,4 +1,7 @@
/obj/item/mecha_parts/mecha_equipment/tool/sleeper
// Sleeper and Syringe gun
/obj/item/mecha_parts/mecha_equipment/sleeper
name = "mounted sleeper"
desc = "Equipment for medical exosuits. A mounted sleeper that stabilizes patients and can inject reagents in the exosuit's reserves."
icon = 'icons/obj/Cryogenic2.dmi'
@@ -8,35 +11,33 @@
range = MELEE
reliability = 1000
equip_cooldown = 20
var/mob/living/carbon/occupant = null
var/datum/global_iterator/pr_mech_sleeper
var/mob/living/carbon/patient = null
var/inject_amount = 10
salvageable = 0
/obj/item/mecha_parts/mecha_equipment/tool/sleeper/can_attach(obj/mecha/medical/M)
/obj/item/mecha_parts/mecha_equipment/sleeper/can_attach(obj/mecha/medical/M)
if(..())
if(istype(M))
return 1
return 0
/obj/item/mecha_parts/mecha_equipment/tool/sleeper/New()
/obj/item/mecha_parts/mecha_equipment/sleeper/attach(obj/mecha/M)
..()
pr_mech_sleeper = new /datum/global_iterator/mech_sleeper(list(src),0)
pr_mech_sleeper.set_delay(equip_cooldown)
return
SSobj.processing |= src
/obj/item/mecha_parts/mecha_equipment/tool/sleeper/allow_drop()
/obj/item/mecha_parts/mecha_equipment/sleeper/allow_drop()
return 0
/obj/item/mecha_parts/mecha_equipment/tool/sleeper/destroy()
/obj/item/mecha_parts/mecha_equipment/sleeper/Destroy()
SSobj.processing.Remove(src)
for(var/atom/movable/AM in src)
AM.forceMove(get_turf(src))
return ..()
..()
/obj/item/mecha_parts/mecha_equipment/tool/sleeper/Exit(atom/movable/O)
/obj/item/mecha_parts/mecha_equipment/sleeper/Exit(atom/movable/O)
return 0
/obj/item/mecha_parts/mecha_equipment/tool/sleeper/action(mob/living/carbon/target)
/obj/item/mecha_parts/mecha_equipment/sleeper/action(mob/living/carbon/target)
if(!action_checks(target))
return
if(!istype(target))
@@ -44,7 +45,7 @@
if(target.buckled)
occupant_message("<span class='warning'>[target] will not fit into the sleeper because they are buckled to [target.buckled]!</span>")
return
if(occupant)
if(patient)
occupant_message("<span class='warning'>The sleeper is already occupied!</span>")
return
for(var/mob/living/simple_animal/slime/M in range(1,target))
@@ -53,81 +54,65 @@
return
occupant_message("<span class='notice'>You start putting [target] into [src]...</span>")
chassis.visible_message("<span class='warning'>[chassis] starts putting [target] into \the [src].</span>")
var/C = chassis.loc
var/T = target.loc
if(do_after_cooldown(target))
if(chassis.loc!=C || target.loc!=T)
return
if(occupant)
if(patient)
occupant_message("<span class='warning'>The sleeper is already occupied!</span>")
return
target.forceMove(src)
occupant = target
patient = target
target.reset_view(src)
/*
if(target.client)
target.client.perspective = EYE_PERSPECTIVE
target.client.eye = chassis
*/
set_ready_state(0)
pr_mech_sleeper.start()
SSobj.processing |= src
update_equip_info()
occupant_message("<span class='notice'>[target] successfully loaded into [src]. Life support functions engaged.</span>")
chassis.visible_message("<span class='warning'>[chassis] loads [target] into [src].</span>")
log_message("[target] loaded. Life support functions engaged.")
return
/obj/item/mecha_parts/mecha_equipment/tool/sleeper/proc/go_out()
if(!occupant)
/obj/item/mecha_parts/mecha_equipment/sleeper/proc/go_out()
if(!patient)
return
occupant.forceMove(get_turf(src))
occupant_message("[occupant] ejected. Life support functions disabled.")
log_message("[occupant] ejected. Life support functions disabled.")
occupant.reset_view()
/*
if(occupant.client)
occupant.client.eye = occupant.client.mob
occupant.client.perspective = MOB_PERSPECTIVE
*/
occupant = null
pr_mech_sleeper.stop()
set_ready_state(1)
return
patient.forceMove(get_turf(src))
occupant_message("[patient] ejected. Life support functions disabled.")
log_message("[patient] ejected. Life support functions disabled.")
patient.reset_view()
SSobj.processing.Remove(src)
update_equip_info()
/obj/item/mecha_parts/mecha_equipment/tool/sleeper/detach()
if(occupant)
/obj/item/mecha_parts/mecha_equipment/sleeper/detach()
if(patient)
occupant_message("<span class='warning'>Unable to detach [src] - equipment occupied!</span>")
return
pr_mech_sleeper.stop()
SSobj.processing.Remove(src)
update_equip_info()
return ..()
/obj/item/mecha_parts/mecha_equipment/tool/sleeper/get_equip_info()
/obj/item/mecha_parts/mecha_equipment/sleeper/get_equip_info()
var/output = ..()
if(output)
var/temp = ""
if(occupant)
temp = "<br />\[Occupant: [occupant] ([occupant.stat > 1 ? "*DECEASED*" : "Health: [occupant.health]%"])\]<br /><a href='?src=\ref[src];view_stats=1'>View stats</a>|<a href='?src=\ref[src];eject=1'>Eject</a>"
if(patient)
temp = "<br />\[Occupant: [patient] ([patient.stat > 1 ? "*DECEASED*" : "Health: [patient.health]%"])\]<br /><a href='?src=\ref[src];view_stats=1'>View stats</a>|<a href='?src=\ref[src];eject=1'>Eject</a>"
return "[output] [temp]"
return
/obj/item/mecha_parts/mecha_equipment/tool/sleeper/Topic(href,href_list)
/obj/item/mecha_parts/mecha_equipment/sleeper/Topic(href,href_list)
..()
var/datum/topic_input/filter = new /datum/topic_input(href,href_list)
if(filter.get("eject"))
go_out()
if(filter.get("view_stats"))
chassis.occupant << browse(get_occupant_stats(),"window=msleeper")
chassis.occupant << browse(get_patient_stats(),"window=msleeper")
onclose(chassis.occupant, "msleeper")
return
if(filter.get("inject"))
inject_reagent(filter.getType("inject",/datum/reagent),filter.getObj("source"))
return
/obj/item/mecha_parts/mecha_equipment/tool/sleeper/proc/get_occupant_stats()
if(!occupant)
/obj/item/mecha_parts/mecha_equipment/sleeper/proc/get_patient_stats()
if(!patient)
return
return {"<html>
<head>
<title>[occupant] statistics</title>
<title>[patient] statistics</title>
<script language='javascript' type='text/javascript'>
[js_byjax]
</script>
@@ -139,11 +124,11 @@
<body>
<h3>Health statistics</h3>
<div id="lossinfo">
[get_occupant_dam()]
[get_patient_dam()]
</div>
<h3>Reagents in bloodstream</h3>
<div id="reagents">
[get_occupant_reagents()]
[get_patient_reagents()]
</div>
<div id="injectwith">
[get_available_reagents()]
@@ -151,9 +136,9 @@
</body>
</html>"}
/obj/item/mecha_parts/mecha_equipment/tool/sleeper/proc/get_occupant_dam()
/obj/item/mecha_parts/mecha_equipment/sleeper/proc/get_patient_dam()
var/t1
switch(occupant.stat)
switch(patient.stat)
if(0)
t1 = "Conscious"
if(1)
@@ -162,26 +147,26 @@
t1 = "*dead*"
else
t1 = "Unknown"
return {"<font color="[occupant.health > 50 ? "blue" : "red"]"><b>Health:</b> [occupant.stat > 1 ? "[t1]" : "[occupant.health]% ([t1])"]</font><br />
<font color="[occupant.bodytemperature > 50 ? "blue" : "red"]"><b>Core Temperature:</b> [src.occupant.bodytemperature-T0C]&deg;C ([src.occupant.bodytemperature*1.8-459.67]&deg;F)</font><br />
<font color="[occupant.getBruteLoss() < 60 ? "blue" : "red"]"><b>Brute Damage:</b> [occupant.getBruteLoss()]%</font><br />
<font color="[occupant.getOxyLoss() < 60 ? "blue" : "red"]"><b>Respiratory Damage:</b> [occupant.getOxyLoss()]%</font><br />
<font color="[occupant.getToxLoss() < 60 ? "blue" : "red"]"><b>Toxin Content:</b> [occupant.getToxLoss()]%</font><br />
<font color="[occupant.getFireLoss() < 60 ? "blue" : "red"]"><b>Burn Severity:</b> [occupant.getFireLoss()]%</font><br />
<font color="red">[occupant.getCloneLoss() ? "Subject appears to have cellular damage." : ""]</font><br />
<font color="red">[occupant.getBrainLoss() ? "Significant brain damage detected." : ""]</font><br />
return {"<font color="[patient.health > 50 ? "blue" : "red"]"><b>Health:</b> [patient.stat > 1 ? "[t1]" : "[patient.health]% ([t1])"]</font><br />
<font color="[patient.bodytemperature > 50 ? "blue" : "red"]"><b>Core Temperature:</b> [patient.bodytemperature-T0C]&deg;C ([patient.bodytemperature*1.8-459.67]&deg;F)</font><br />
<font color="[patient.getBruteLoss() < 60 ? "blue" : "red"]"><b>Brute Damage:</b> [patient.getBruteLoss()]%</font><br />
<font color="[patient.getOxyLoss() < 60 ? "blue" : "red"]"><b>Respiratory Damage:</b> [patient.getOxyLoss()]%</font><br />
<font color="[patient.getToxLoss() < 60 ? "blue" : "red"]"><b>Toxin Content:</b> [patient.getToxLoss()]%</font><br />
<font color="[patient.getFireLoss() < 60 ? "blue" : "red"]"><b>Burn Severity:</b> [patient.getFireLoss()]%</font><br />
<font color="red">[patient.getCloneLoss() ? "Subject appears to have cellular damage." : ""]</font><br />
<font color="red">[patient.getBrainLoss() ? "Significant brain damage detected." : ""]</font><br />
"}
/obj/item/mecha_parts/mecha_equipment/tool/sleeper/proc/get_occupant_reagents()
if(occupant.reagents)
for(var/datum/reagent/R in occupant.reagents.reagent_list)
/obj/item/mecha_parts/mecha_equipment/sleeper/proc/get_patient_reagents()
if(patient.reagents)
for(var/datum/reagent/R in patient.reagents.reagent_list)
if(R.volume > 0)
. += "[R]: [round(R.volume,0.01)]<br />"
return . || "None"
/obj/item/mecha_parts/mecha_equipment/tool/sleeper/proc/get_available_reagents()
/obj/item/mecha_parts/mecha_equipment/sleeper/proc/get_available_reagents()
var/output
var/obj/item/mecha_parts/mecha_equipment/tool/syringe_gun/SG = locate(/obj/item/mecha_parts/mecha_equipment/tool/syringe_gun) in chassis
var/obj/item/mecha_parts/mecha_equipment/syringe_gun/SG = locate(/obj/item/mecha_parts/mecha_equipment/syringe_gun) in chassis
if(SG && SG.reagents && islist(SG.reagents.reagent_list))
for(var/datum/reagent/R in SG.reagents.reagent_list)
if(R.volume > 0)
@@ -189,41 +174,41 @@
return output
/obj/item/mecha_parts/mecha_equipment/tool/sleeper/proc/inject_reagent(datum/reagent/R,obj/item/mecha_parts/mecha_equipment/tool/syringe_gun/SG)
if(!R || !occupant || !SG || !(SG in chassis.equipment))
/obj/item/mecha_parts/mecha_equipment/sleeper/proc/inject_reagent(datum/reagent/R,obj/item/mecha_parts/mecha_equipment/syringe_gun/SG)
if(!R || !patient || !SG || !(SG in chassis.equipment))
return 0
var/to_inject = min(R.volume, inject_amount)
if(to_inject && occupant.reagents.get_reagent_amount(R.id) + to_inject <= inject_amount*2)
occupant_message("Injecting [occupant] with [to_inject] units of [R.name].")
log_message("Injecting [occupant] with [to_inject] units of [R.name].")
add_logs(chassis.occupant, occupant, "injected", "[name] ([R] - [to_inject] units)")
SG.reagents.trans_id_to(occupant,R.id,to_inject)
if(to_inject && patient.reagents.get_reagent_amount(R.id) + to_inject <= inject_amount*2)
occupant_message("Injecting [patient] with [to_inject] units of [R.name].")
log_message("Injecting [patient] with [to_inject] units of [R.name].")
add_logs(chassis.occupant, patient, "injected", "[name] ([R] - [to_inject] units)")
SG.reagents.trans_id_to(patient,R.id,to_inject)
update_equip_info()
return
/obj/item/mecha_parts/mecha_equipment/tool/sleeper/update_equip_info()
/obj/item/mecha_parts/mecha_equipment/sleeper/update_equip_info()
if(..())
send_byjax(chassis.occupant,"msleeper.browser","lossinfo",get_occupant_dam())
send_byjax(chassis.occupant,"msleeper.browser","reagents",get_occupant_reagents())
send_byjax(chassis.occupant,"msleeper.browser","lossinfo",get_patient_dam())
send_byjax(chassis.occupant,"msleeper.browser","reagents",get_patient_reagents())
send_byjax(chassis.occupant,"msleeper.browser","injectwith",get_available_reagents())
return 1
return
/obj/item/mecha_parts/mecha_equipment/tool/sleeper/container_resist()
/obj/item/mecha_parts/mecha_equipment/sleeper/container_resist()
go_out()
/datum/global_iterator/mech_sleeper
/datum/global_iterator/mech_sleeper/process(obj/item/mecha_parts/mecha_equipment/tool/sleeper/S)
if(!S.chassis)
S.set_ready_state(1)
return stop()
if(!S.chassis.has_charge(S.energy_drain))
S.set_ready_state(1)
S.log_message("Deactivated.")
S.occupant_message("[src] deactivated - no power.")
return stop()
var/mob/living/carbon/M = S.occupant
/obj/item/mecha_parts/mecha_equipment/sleeper/process()
if(!chassis)
SSobj.processing.Remove(src)
return
if(!chassis.has_charge(energy_drain))
set_ready_state(1)
log_message("Deactivated.")
occupant_message("[src] deactivated - no power.")
SSobj.processing.Remove(src)
return
var/mob/living/carbon/M = patient
if(!M)
return
if(M.health > 0)
@@ -234,11 +219,16 @@
M.AdjustStunned(-4)
if(M.reagents.get_reagent_amount("epinephrine") < 5)
M.reagents.add_reagent("epinephrine", 5)
S.chassis.use_power(S.energy_drain)
S.update_equip_info()
return
chassis.use_power(energy_drain)
update_equip_info()
/obj/item/mecha_parts/mecha_equipment/tool/syringe_gun
///////////////////////////////// Syringe Gun ///////////////////////////////////////////////////////////////
/obj/item/mecha_parts/mecha_equipment/syringe_gun
name = "exosuit syringe gun"
desc = "Equipment for medical exosuits. A chem synthesizer with syringe gun. Reagents inside are held in stasis, so no reactions will occur."
icon = 'icons/obj/guns/projectile.dmi'
@@ -251,42 +241,44 @@
var/synth_speed = 5 //[num] reagent units per cycle
energy_drain = 10
var/mode = 0 //0 - fire syringe, 1 - analyze reagents.
var/datum/global_iterator/mech_synth/synth
range = MELEE|RANGED
equip_cooldown = 10
origin_tech = "materials=3;biotech=4;magnets=4;programming=3"
/obj/item/mecha_parts/mecha_equipment/tool/syringe_gun/New()
/obj/item/mecha_parts/mecha_equipment/syringe_gun/New()
..()
flags |= NOREACT
syringes = new
known_reagents = list("epinephrine"="Epinephrine","charcoal"="Charcoal")
processed_reagents = new
create_reagents(max_volume)
synth = new (list(src),0)
/obj/item/mecha_parts/mecha_equipment/tool/syringe_gun/detach()
synth.stop()
/obj/item/mecha_parts/mecha_equipment/syringe_gun/detach()
SSobj.processing.Remove(src)
return ..()
/obj/item/mecha_parts/mecha_equipment/tool/syringe_gun/critfail()
/obj/item/mecha_parts/mecha_equipment/syringe_gun/Destroy()
SSobj.processing.Remove(src)
..()
/obj/item/mecha_parts/mecha_equipment/syringe_gun/critfail()
..()
flags &= ~NOREACT
return
/obj/item/mecha_parts/mecha_equipment/tool/syringe_gun/can_attach(obj/mecha/medical/M)
/obj/item/mecha_parts/mecha_equipment/syringe_gun/can_attach(obj/mecha/medical/M)
if(..())
if(istype(M))
return 1
return 0
/obj/item/mecha_parts/mecha_equipment/tool/syringe_gun/get_equip_info()
/obj/item/mecha_parts/mecha_equipment/syringe_gun/get_equip_info()
var/output = ..()
if(output)
return "[output] \[<a href=\"?src=\ref[src];toggle_mode=1\">[mode? "Analyze" : "Launch"]</a>\]<br />\[Syringes: [syringes.len]/[max_syringes] | Reagents: [reagents.total_volume]/[reagents.maximum_volume]\]<br /><a href='?src=\ref[src];show_reagents=1'>Reagents list</a>"
return
/obj/item/mecha_parts/mecha_equipment/tool/syringe_gun/action(atom/movable/target)
/obj/item/mecha_parts/mecha_equipment/syringe_gun/action(atom/movable/target)
if(!action_checks(target))
return
if(istype(target,/obj/item/weapon/reagent_containers/syringe))
@@ -303,8 +295,6 @@
if(reagents.total_volume<=0)
occupant_message("<span class=\"alert\">No available reagents to load syringe with.</span>")
return
set_ready_state(0)
chassis.use_power(energy_drain)
var/turf/trg = get_turf(target)
var/obj/item/weapon/reagent_containers/syringe/mechsyringe = syringes[1]
mechsyringe.forceMove(get_turf(chassis))
@@ -315,7 +305,7 @@
playsound(chassis, 'sound/items/syringeproj.ogg', 50, 1)
log_message("Launched [mechsyringe] from [src], targeting [target].")
var/mob/originaloccupant = chassis.occupant
spawn(-1)
spawn(0)
src = null //if src is deleted, still process the syringe
for(var/i=0, i<6, i++)
if(!mechsyringe)
@@ -350,11 +340,10 @@
mechsyringe.update_icon()
break
sleep(1)
do_after_cooldown()
return 1
/obj/item/mecha_parts/mecha_equipment/tool/syringe_gun/Topic(href,href_list)
/obj/item/mecha_parts/mecha_equipment/syringe_gun/Topic(href,href_list)
..()
var/datum/topic_input/filter = new (href,href_list)
if(filter.get("toggle_mode"))
@@ -375,7 +364,7 @@
m++
if(processed_reagents.len)
message += " added to production"
synth.start()
SSobj.processing |= src
occupant_message(message)
occupant_message("Reagent processing started.")
log_message("Reagent processing started.")
@@ -392,7 +381,7 @@
return
return
/obj/item/mecha_parts/mecha_equipment/tool/syringe_gun/proc/get_reagents_page()
/obj/item/mecha_parts/mecha_equipment/syringe_gun/proc/get_reagents_page()
var/output = {"<html>
<head>
<title>Reagent Synthesizer</title>
@@ -420,7 +409,7 @@
"}
return output
/obj/item/mecha_parts/mecha_equipment/tool/syringe_gun/proc/get_reagents_form()
/obj/item/mecha_parts/mecha_equipment/syringe_gun/proc/get_reagents_form()
var/r_list = get_reagents_list()
var/inputs
if(r_list)
@@ -435,14 +424,14 @@
"}
return output
/obj/item/mecha_parts/mecha_equipment/tool/syringe_gun/proc/get_reagents_list()
/obj/item/mecha_parts/mecha_equipment/syringe_gun/proc/get_reagents_list()
var/output
for(var/i=1 to known_reagents.len)
var/reagent_id = known_reagents[i]
output += {"<input type="checkbox" value="[reagent_id]" name="reagent_[i]" [(reagent_id in processed_reagents)? "checked=\"1\"" : null]> [known_reagents[reagent_id]]<br />"}
return output
/obj/item/mecha_parts/mecha_equipment/tool/syringe_gun/proc/get_current_reagents()
/obj/item/mecha_parts/mecha_equipment/syringe_gun/proc/get_current_reagents()
var/output
for(var/datum/reagent/R in reagents.reagent_list)
if(R.volume > 0)
@@ -451,7 +440,7 @@
output += "Total: [round(reagents.total_volume,0.001)]/[reagents.maximum_volume] - <a href=\"?src=\ref[src];purge_all=1\">Purge All</a>"
return output || "None"
/obj/item/mecha_parts/mecha_equipment/tool/syringe_gun/proc/load_syringe(obj/item/weapon/reagent_containers/syringe/S)
/obj/item/mecha_parts/mecha_equipment/syringe_gun/proc/load_syringe(obj/item/weapon/reagent_containers/syringe/S)
if(syringes.len<max_syringes)
if(get_dist(src,S) >= 2)
occupant_message("The syringe is too far away.")
@@ -473,7 +462,7 @@
occupant_message("The [src] syringe chamber is full.")
return 0
/obj/item/mecha_parts/mecha_equipment/tool/syringe_gun/proc/analyze_reagents(atom/A)
/obj/item/mecha_parts/mecha_equipment/syringe_gun/proc/analyze_reagents(atom/A)
if(get_dist(src,A) >= 4)
occupant_message("The object is too far away.")
return 0
@@ -488,42 +477,38 @@
occupant_message("Analyzis complete.")
return 1
/obj/item/mecha_parts/mecha_equipment/tool/syringe_gun/proc/add_known_reagent(r_id,r_name)
set_ready_state(0)
do_after_cooldown()
/obj/item/mecha_parts/mecha_equipment/syringe_gun/proc/add_known_reagent(r_id,r_name)
if(!(r_id in known_reagents))
known_reagents += r_id
known_reagents[r_id] = r_name
return 1
return 0
/obj/item/mecha_parts/mecha_equipment/tool/syringe_gun/update_equip_info()
/obj/item/mecha_parts/mecha_equipment/syringe_gun/update_equip_info()
if(..())
send_byjax(chassis.occupant,"msyringegun.browser","reagents",get_current_reagents())
send_byjax(chassis.occupant,"msyringegun.browser","reagents_form",get_reagents_form())
return 1
return
/obj/item/mecha_parts/mecha_equipment/tool/syringe_gun/on_reagent_change()
/obj/item/mecha_parts/mecha_equipment/syringe_gun/on_reagent_change()
..()
update_equip_info()
return
/datum/global_iterator/mech_synth
delay = 100
/datum/global_iterator/mech_synth/process(var/obj/item/mecha_parts/mecha_equipment/tool/syringe_gun/S)
if(!S.chassis)
return stop()
var/energy_drain = S.energy_drain*10
if(!S.processed_reagents.len || S.reagents.total_volume >= S.reagents.maximum_volume || !S.chassis.has_charge(energy_drain))
S.occupant_message("<span class=\"alert\">Reagent processing stopped.</a>")
S.log_message("Reagent processing stopped.")
return stop()
if(anyprob(S.reliability))
S.critfail()
var/amount = S.synth_speed / S.processed_reagents.len
for(var/reagent in S.processed_reagents)
S.reagents.add_reagent(reagent,amount)
S.chassis.use_power(energy_drain)
return 1
/obj/item/mecha_parts/mecha_equipment/syringe_gun/process()
if(!chassis)
SSobj.processing.Remove(src)
return
if(!processed_reagents.len || reagents.total_volume >= reagents.maximum_volume || !chassis.has_charge(energy_drain))
occupant_message("<span class=\"alert\">Reagent processing stopped.</a>")
log_message("Reagent processing stopped.")
SSobj.processing.Remove(src)
if(anyprob(reliability))
critfail()
var/amount = synth_speed / processed_reagents.len
for(var/reagent in processed_reagents)
reagents.add_reagent(reagent,amount)
chassis.use_power(energy_drain)
@@ -0,0 +1,127 @@
// Drill, Diamond drill, Mining scanner
/obj/item/mecha_parts/mecha_equipment/drill
name = "exosuit drill"
desc = "Equipment for engineering and combat exosuits. This is the drill that'll pierce the heavens!"
icon_state = "mecha_drill"
equip_cooldown = 30
energy_drain = 10
force = 15
/obj/item/mecha_parts/mecha_equipment/drill/action(atom/target)
if(!action_checks(target))
return
if(istype(target, /turf) && !istype(target, /turf/simulated))
return
if(isobj(target))
var/obj/target_obj = target
if(target_obj.unacidable)
return
target.visible_message("<span class='warning'>[chassis] starts to drill [target].</span>", \
"<span class='userdanger'>[chassis] starts to drill [target]...</span>", \
"<span class='italics'>You hear drilling.</span>")
if(do_after_cooldown(target))
if(istype(target, /turf/simulated/wall/r_wall))
if(istype(src , /obj/item/mecha_parts/mecha_equipment/drill/diamonddrill))
if(do_after_cooldown(target))//To slow down how fast mechs can drill through the station
log_message("Drilled through [target]")
target.ex_act(3)
else
occupant_message("<span class='danger'>[target] is too durable to drill through.</span>")
else if(istype(target, /turf/simulated/mineral))
for(var/turf/simulated/mineral/M in range(chassis,1))
if(get_dir(chassis,M)&chassis.dir)
M.gets_drilled(chassis.occupant)
log_message("Drilled through [target]")
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/weapon/ore/ore in range(chassis,1))
if(get_dir(chassis,ore)&chassis.dir)
ore.Move(ore_box)
else if(istype(target, /turf/simulated/floor/plating/asteroid))
for(var/turf/simulated/floor/plating/asteroid/M in range(chassis,1))
if(get_dir(chassis,M)&chassis.dir)
M.gets_dug()
log_message("Drilled through [target]")
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/weapon/ore/ore in range(chassis,1))
if(get_dir(chassis,ore)&chassis.dir)
ore.Move(ore_box)
else
log_message("Drilled through [target]")
if(isliving(target))
if(istype(src , /obj/item/mecha_parts/mecha_equipment/drill/diamonddrill))
drill_mob(target, chassis.occupant, 120)
else
drill_mob(target, chassis.occupant)
else
target.ex_act(2)
/obj/item/mecha_parts/mecha_equipment/drill/can_attach(obj/mecha/M as obj)
if(..())
if(istype(M, /obj/mecha/working) || istype(M, /obj/mecha/combat))
return 1
return 0
/obj/item/mecha_parts/mecha_equipment/drill/proc/drill_mob(mob/living/target, mob/user, var/drill_damage=80)
target.visible_message("<span class='danger'>[chassis] drills [target] with [src].</span>", \
"<span class='userdanger'>[chassis] drills [target] with [src].</span>")
add_logs(user, target, "attacked", "[name]", "(INTENT: [uppertext(user.a_intent)]) (DAMTYPE: [uppertext(damtype)])")
if(ishuman(target))
var/mob/living/carbon/human/H = target
var/obj/item/organ/limb/affecting = H.get_organ("chest")
affecting.take_damage(drill_damage)
H.update_damage_overlays(0)
else
target.take_organ_damage(drill_damage)
if(target)
target.Paralyse(10)
target.updatehealth()
/obj/item/mecha_parts/mecha_equipment/drill/diamonddrill
name = "diamond-tipped exosuit drill"
desc = "Equipment for engineering and combat exosuits. This is an upgraded version of the drill that'll pierce the heavens!"
icon_state = "mecha_diamond_drill"
origin_tech = "materials=4;engineering=3"
equip_cooldown = 20
force = 15
/obj/item/mecha_parts/mecha_equipment/mining_scanner
name = "exosuit mining scanner"
desc = "Equipment for engineering and combat exosuits. It will automatically check surrounding rock for useful minerals."
icon_state = "mecha_analyzer"
origin_tech = "materials=3;engineering=2"
equip_cooldown = 30
var/scanning = 0
/obj/item/mecha_parts/mecha_equipment/mining_scanner/New()
SSobj.processing |= src
/obj/item/mecha_parts/mecha_equipment/mining_scanner/process()
if(!loc)
SSobj.processing.Remove(src)
qdel(src)
if(scanning)
return
if(istype(loc,/obj/mecha/working))
var/obj/mecha/working/mecha = loc
if(!mecha.occupant)
return
var/list/occupant = list()
occupant |= mecha.occupant
scanning = 1
mineral_scan_pulse(occupant,get_turf(loc))
spawn(equip_cooldown)
scanning = 0
@@ -0,0 +1,509 @@
// Teleporter, Wormhole generator, Gravitational catapult, Armor booster modules,
// Repair droid, Tesla Energy relay, Generators
////////////////////////////////////////////// TELEPORTER ///////////////////////////////////////////////
/obj/item/mecha_parts/mecha_equipment/teleporter
name = "mounted teleporter"
desc = "An exosuit module that allows exosuits to teleport to any position in view."
icon_state = "mecha_teleport"
origin_tech = "bluespace=10"
equip_cooldown = 150
energy_drain = 1000
range = RANGED
/obj/item/mecha_parts/mecha_equipment/teleporter/action(atom/target)
if(!action_checks(target) || src.loc.z == ZLEVEL_CENTCOM) return
var/turf/T = get_turf(target)
if(T)
do_teleport(chassis, T, 4)
return 1
////////////////////////////////////////////// WORMHOLE GENERATOR //////////////////////////////////////////
/obj/item/mecha_parts/mecha_equipment/wormhole_generator
name = "mounted wormhole generator"
desc = "An exosuit module that allows generating of small quasi-stable wormholes."
icon_state = "mecha_wholegen"
origin_tech = "bluespace=3"
equip_cooldown = 50
energy_drain = 300
range = RANGED
/obj/item/mecha_parts/mecha_equipment/wormhole_generator/action(atom/target)
if(!action_checks(target) || src.loc.z == ZLEVEL_CENTCOM) return
var/list/theareas = list()
for(var/area/AR in orange(100, chassis))
if(AR in theareas) continue
theareas += AR
if(!theareas.len)
return
var/area/thearea = pick(theareas)
var/list/L = list()
var/turf/pos = get_turf(src)
for(var/turf/T in get_area_turfs(thearea.type))
if(!T.density && pos.z == T.z)
var/clear = 1
for(var/obj/O in T)
if(O.density)
clear = 0
break
if(clear)
L+=T
if(!L.len)
return
var/turf/target_turf = pick(L)
if(!target_turf)
return
var/obj/effect/portal/P = new /obj/effect/portal(get_turf(target))
P.target = target_turf
P.creator = null
P.icon = 'icons/obj/objects.dmi'
P.icon_state = "anom"
P.name = "wormhole"
var/turf/T = get_turf(target)
message_admins("[key_name_admin(chassis.occupant, chassis.occupant.client)](<A HREF='?_src_=holder;adminmoreinfo=\ref[chassis.occupant]'>?</A>) (<A HREF='?_src_=holder;adminplayerobservefollow=\ref[chassis.occupant]'>FLW</A>) used a Wormhole Generator in ([T.x],[T.y],[T.z] - <A HREF='?_src_=holder;adminplayerobservecoodjump=1;X=[T.x];Y=[T.y];Z=[T.z]'>JMP</a>)",0,1)
log_game("[key_name(chassis.occupant)] used a Wormhole Generator in ([T.x],[T.y],[T.z])")
src = null
spawn(rand(150,300))
qdel(P)
return 1
/////////////////////////////////////// GRAVITATIONAL CATAPULT ///////////////////////////////////////////
/obj/item/mecha_parts/mecha_equipment/gravcatapult
name = "mounted gravitational catapult"
desc = "An exosuit mounted Gravitational Catapult."
icon_state = "mecha_teleport"
origin_tech = "bluespace=2;magnets=3"
equip_cooldown = 10
energy_drain = 100
range = MELEE|RANGED
var/atom/movable/locked
var/mode = 1 //1 - gravsling 2 - gravpush
/obj/item/mecha_parts/mecha_equipment/gravcatapult/action(atom/movable/target)
if(!action_checks(target))
return
switch(mode)
if(1)
if(!locked)
if(!istype(target) || target.anchored)
occupant_message("Unable to lock on [target]")
return
locked = target
occupant_message("Locked on [target]")
send_byjax(chassis.occupant,"exosuit.browser","\ref[src]",src.get_equip_info())
else if(target!=locked)
if(locked in view(chassis))
locked.throw_at(target, 14, 1.5)
locked = null
send_byjax(chassis.occupant,"exosuit.browser","\ref[src]",src.get_equip_info())
return 1
else
locked = null
occupant_message("Lock on [locked] disengaged.")
send_byjax(chassis.occupant,"exosuit.browser","\ref[src]",src.get_equip_info())
if(2)
var/list/atoms = list()
if(isturf(target))
atoms = range(target,3)
else
atoms = orange(target,3)
for(var/atom/movable/A in atoms)
if(A.anchored) continue
spawn(0)
var/iter = 5-get_dist(A,target)
for(var/i=0 to iter)
step_away(A,target)
sleep(2)
var/turf/T = get_turf(target)
log_game("[chassis.occupant.ckey]([chassis.occupant]) used a Gravitational Catapult in ([T.x],[T.y],[T.z])")
return 1
/obj/item/mecha_parts/mecha_equipment/gravcatapult/get_equip_info()
return "[..()] [mode==1?"([locked||"Nothing"])":null] \[<a href='?src=\ref[src];mode=1'>S</a>|<a href='?src=\ref[src];mode=2'>P</a>\]"
/obj/item/mecha_parts/mecha_equipment/gravcatapult/Topic(href, href_list)
..()
if(href_list["mode"])
mode = text2num(href_list["mode"])
send_byjax(chassis.occupant,"exosuit.browser","\ref[src]",src.get_equip_info())
return
//////////////////////////// ARMOR BOOSTER MODULES //////////////////////////////////////////////////////////
/obj/item/mecha_parts/mecha_equipment/anticcw_armor_booster //what is that noise? A BAWWW from TK mutants.
name = "armor booster module (Close Combat Weaponry)"
desc = "Boosts exosuit armor against armed melee attacks. Requires energy to operate."
icon_state = "mecha_abooster_ccw"
origin_tech = "materials=3"
equip_cooldown = 10
energy_drain = 50
range = 0
var/deflect_coeff = 1.15
var/damage_coeff = 0.8
/obj/item/mecha_parts/mecha_equipment/anticcw_armor_booster/get_equip_info()
if(!chassis) return
return "<span style=\"color:[equip_ready?"#0f0":"#f00"];\">*</span>&nbsp;[src.name]"
/obj/item/mecha_parts/mecha_equipment/anticcw_armor_booster/proc/attack_react(mob/user as mob)
if(action_checks(user))
start_cooldown()
return 1
/obj/item/mecha_parts/mecha_equipment/antiproj_armor_booster
name = "armor booster module (Ranged Weaponry)"
desc = "Boosts exosuit armor against ranged attacks. Completely blocks taser shots. Requires energy to operate."
icon_state = "mecha_abooster_proj"
origin_tech = "materials=4"
equip_cooldown = 10
energy_drain = 50
range = 0
var/deflect_coeff = 1.15
var/damage_coeff = 0.8
/obj/item/mecha_parts/mecha_equipment/antiproj_armor_booster/get_equip_info()
if(!chassis) return
return "<span style=\"color:[equip_ready?"#0f0":"#f00"];\">*</span>&nbsp;[src.name]"
/obj/item/mecha_parts/mecha_equipment/antiproj_armor_booster/proc/projectile_react()
if(action_checks(src))
start_cooldown()
return 1
////////////////////////////////// REPAIR DROID //////////////////////////////////////////////////
/obj/item/mecha_parts/mecha_equipment/repair_droid
name = "exosuit repair droid"
desc = "An automated repair droid for exosuits. Scans for damage and repairs it. Can fix almost all types of external or internal damage."
icon_state = "repair_droid"
origin_tech = "magnets=3;programming=3"
energy_drain = 50
range = 0
var/health_boost = 1
var/icon/droid_overlay
var/list/repairable_damage = list(MECHA_INT_TEMP_CONTROL,MECHA_INT_TANK_BREACH)
/obj/item/mecha_parts/mecha_equipment/repair_droid/Destroy()
SSobj.processing.Remove(src)
if(chassis)
chassis.overlays -= droid_overlay
..()
/obj/item/mecha_parts/mecha_equipment/repair_droid/attach(obj/mecha/M as obj)
..()
droid_overlay = new(src.icon, icon_state = "repair_droid")
M.overlays += droid_overlay
/obj/item/mecha_parts/mecha_equipment/repair_droid/detach()
chassis.overlays -= droid_overlay
SSobj.processing.Remove(src)
..()
/obj/item/mecha_parts/mecha_equipment/repair_droid/get_equip_info()
if(!chassis) return
return "<span style=\"color:[equip_ready?"#0f0":"#f00"];\">*</span>&nbsp;[src.name] - <a href='?src=\ref[src];toggle_repairs=1'>[equip_ready?"A":"Dea"]ctivate</a>"
/obj/item/mecha_parts/mecha_equipment/repair_droid/Topic(href, href_list)
..()
if(href_list["toggle_repairs"])
chassis.overlays -= droid_overlay
if(equip_ready)
SSobj.processing |= src
droid_overlay = new(src.icon, icon_state = "repair_droid_a")
log_message("Activated.")
set_ready_state(0)
else
SSobj.processing.Remove(src)
droid_overlay = new(src.icon, icon_state = "repair_droid")
log_message("Deactivated.")
set_ready_state(1)
chassis.overlays += droid_overlay
send_byjax(chassis.occupant,"exosuit.browser","\ref[src]",src.get_equip_info())
/obj/item/mecha_parts/mecha_equipment/repair_droid/process()
if(!chassis)
SSobj.processing.Remove(src)
set_ready_state(1)
return
var/h_boost = health_boost
var/repaired = 0
if(chassis.internal_damage & MECHA_INT_SHORT_CIRCUIT)
h_boost *= -2
else if(chassis.internal_damage && prob(15))
for(var/int_dam_flag in repairable_damage)
if(chassis.internal_damage & int_dam_flag)
chassis.clearInternalDamage(int_dam_flag)
repaired = 1
break
if(health_boost<0 || chassis.health < initial(chassis.health))
chassis.health += min(health_boost, initial(chassis.health)-chassis.health)
repaired = 1
if(repaired)
if(!chassis.use_power(energy_drain))
SSobj.processing.Remove(src)
set_ready_state(1)
else //no repair needed, we turn off
SSobj.processing.Remove(src)
set_ready_state(1)
chassis.overlays -= droid_overlay
droid_overlay = new(src.icon, icon_state = "repair_droid")
chassis.overlays += droid_overlay
/////////////////////////////////// TESLA ENERGY RELAY ////////////////////////////////////////////////
/obj/item/mecha_parts/mecha_equipment/tesla_energy_relay
name = "exosuit energy relay"
desc = "An exosuit module that wirelessly drains energy from any available power channel in area. The performance index is quite low."
icon_state = "tesla"
origin_tech = "magnets=4;powerstorage=3"
energy_drain = 0
range = 0
var/coeff = 100
var/list/use_channels = list(EQUIP,ENVIRON,LIGHT)
/obj/item/mecha_parts/mecha_equipment/tesla_energy_relay/Destroy()
SSobj.processing.Remove(src)
..()
/obj/item/mecha_parts/mecha_equipment/tesla_energy_relay/detach()
SSobj.processing.Remove(src)
..()
return
/obj/item/mecha_parts/mecha_equipment/tesla_energy_relay/proc/get_charge()
if(equip_ready) //disabled
return
var/area/A = get_area(chassis)
var/pow_chan = get_power_channel(A)
if(pow_chan)
return 1000 //making magic
/obj/item/mecha_parts/mecha_equipment/tesla_energy_relay/proc/get_power_channel(var/area/A)
var/pow_chan
if(A)
for(var/c in use_channels)
if(A.master && A.master.powered(c))
pow_chan = c
break
return pow_chan
/obj/item/mecha_parts/mecha_equipment/tesla_energy_relay/Topic(href, href_list)
..()
if(href_list["toggle_relay"])
if(equip_ready) //inactive
SSobj.processing |= src
set_ready_state(0)
log_message("Activated.")
else
SSobj.processing.Remove(src)
set_ready_state(1)
log_message("Deactivated.")
/obj/item/mecha_parts/mecha_equipment/tesla_energy_relay/get_equip_info()
if(!chassis) return
return "<span style=\"color:[equip_ready?"#0f0":"#f00"];\">*</span>&nbsp;[src.name] - <a href='?src=\ref[src];toggle_relay=1'>[equip_ready?"A":"Dea"]ctivate</a>"
/obj/item/mecha_parts/mecha_equipment/tesla_energy_relay/process()
if(!chassis || chassis.internal_damage & MECHA_INT_SHORT_CIRCUIT)
SSobj.processing.Remove(src)
set_ready_state(1)
return
var/cur_charge = chassis.get_charge()
if(isnull(cur_charge) || !chassis.cell)
SSobj.processing.Remove(src)
set_ready_state(1)
occupant_message("No powercell detected.")
return
if(cur_charge < chassis.cell.maxcharge)
var/area/A = get_area(chassis)
if(A)
var/pow_chan
for(var/c in list(EQUIP,ENVIRON,LIGHT))
if(A.master.powered(c))
pow_chan = c
break
if(pow_chan)
var/delta = min(20, chassis.cell.maxcharge-cur_charge)
chassis.give_power(delta)
A.master.use_power(delta*coeff, pow_chan)
/////////////////////////////////////////// GENERATOR /////////////////////////////////////////////
/obj/item/mecha_parts/mecha_equipment/generator
name = "exosuit plasma converter"
desc = "An exosuit module that generates power using solid plasma as fuel. Pollutes the environment."
icon_state = "tesla"
origin_tech = "plasmatech=2;powerstorage=2;engineering=1"
range = MELEE
var/coeff = 100
var/obj/item/stack/sheet/fuel
var/max_fuel = 150000
var/fuel_per_cycle_idle = 25
var/fuel_per_cycle_active = 200
var/power_per_cycle = 20
reliability = 1000
/obj/item/mecha_parts/mecha_equipment/generator/New()
..()
generator_init()
/obj/item/mecha_parts/mecha_equipment/generator/Destroy()
SSobj.processing.Remove(src)
..()
/obj/item/mecha_parts/mecha_equipment/generator/proc/generator_init()
fuel = new /obj/item/stack/sheet/mineral/plasma(src)
fuel.amount = 0
/obj/item/mecha_parts/mecha_equipment/generator/detach()
SSobj.processing.Remove(src)
..()
/obj/item/mecha_parts/mecha_equipment/generator/Topic(href, href_list)
..()
if(href_list["toggle"])
if(equip_ready) //inactive
set_ready_state(0)
SSobj.processing |= src
log_message("Activated.")
else
set_ready_state(1)
SSobj.processing.Remove(src)
log_message("Deactivated.")
/obj/item/mecha_parts/mecha_equipment/generator/get_equip_info()
var/output = ..()
if(output)
return "[output] \[[fuel]: [round(fuel.amount*fuel.perunit,0.1)] cm<sup>3</sup>\] - <a href='?src=\ref[src];toggle=1'>[equip_ready?"A":"Dea"]ctivate</a>"
/obj/item/mecha_parts/mecha_equipment/generator/action(target)
if(chassis)
var/result = load_fuel(target)
if(result)
send_byjax(chassis.occupant,"exosuit.browser","\ref[src]",src.get_equip_info())
/obj/item/mecha_parts/mecha_equipment/generator/proc/load_fuel(var/obj/item/stack/sheet/P)
if(P.type == fuel.type && P.amount > 0)
var/to_load = max(max_fuel - fuel.amount*fuel.perunit,0)
if(to_load)
var/units = min(max(round(to_load / P.perunit),1),P.amount)
fuel.amount += units
P.use(units)
occupant_message("[units] unit\s of [fuel] successfully loaded.")
return units
else
occupant_message("Unit is full.")
return 0
else
occupant_message("<span class='warning'>[fuel] traces in target minimal! [P] cannot be used as fuel.</span>")
return
/obj/item/mecha_parts/mecha_equipment/generator/attackby(weapon,mob/user, params)
load_fuel(weapon)
/obj/item/mecha_parts/mecha_equipment/generator/critfail()
..()
var/turf/simulated/T = get_turf(src)
if(!T)
return
var/datum/gas_mixture/GM = new
if(prob(10))
GM.toxins += 100
GM.temperature = 1500+T0C //should be enough to start a fire
T.visible_message("The [src] suddenly disgorges a cloud of heated plasma.")
qdel(src)
else
GM.toxins += 5
GM.temperature = istype(T) ? T.air.return_temperature() : T20C
T.visible_message("The [src] suddenly disgorges a cloud of plasma.")
T.assume_air(GM)
return
/obj/item/mecha_parts/mecha_equipment/generator/process()
if(!chassis)
SSobj.processing.Remove(src)
set_ready_state(1)
return
if(fuel.amount<=0)
SSobj.processing.Remove(src)
log_message("Deactivated - no fuel.")
set_ready_state(1)
return
if(anyprob(reliability))
set_ready_state(1) //inactive
critfail()
SSobj.processing.Remove(src)
return
var/cur_charge = chassis.get_charge()
if(isnull(cur_charge))
set_ready_state(1)
occupant_message("No powercell detected.")
log_message("Deactivated.")
SSobj.processing.Remove(src)
return
var/use_fuel = fuel_per_cycle_idle
if(cur_charge < chassis.cell.maxcharge)
use_fuel = fuel_per_cycle_active
chassis.give_power(power_per_cycle)
fuel.amount -= min(use_fuel/fuel.perunit,fuel.amount)
update_equip_info()
return 1
/obj/item/mecha_parts/mecha_equipment/generator/nuclear
name = "exonuclear reactor"
desc = "An exosuit module that generates power using uranium as fuel. Pollutes the environment."
icon_state = "tesla"
origin_tech = "powerstorage=3;engineering=3"
max_fuel = 50000
fuel_per_cycle_idle = 10
fuel_per_cycle_active = 30
power_per_cycle = 50
var/rad_per_cycle = 0.3
reliability = 1000
/obj/item/mecha_parts/mecha_equipment/generator/nuclear/generator_init()
fuel = new /obj/item/stack/sheet/mineral/uranium(src)
fuel.amount = 0
/obj/item/mecha_parts/mecha_equipment/generator/nuclear/critfail()
return
/obj/item/mecha_parts/mecha_equipment/generator/nuclear/process()
if(..())
for(var/mob/living/carbon/M in view(chassis))
if(istype(M,/mob/living/carbon/human))
M.irradiate(rad_per_cycle*3)
else
M.irradiate(rad_per_cycle)
File diff suppressed because it is too large Load Diff
@@ -0,0 +1,424 @@
//Hydraulic clamp, Kill clamp, Extinguisher, RCD, Cable layer.
/obj/item/mecha_parts/mecha_equipment/hydraulic_clamp
name = "hydraulic clamp"
desc = "Equipment for engineering exosuits. Lifts objects and loads them into cargo."
icon_state = "mecha_clamp"
equip_cooldown = 15
energy_drain = 10
var/dam_force = 20
var/obj/mecha/working/ripley/cargo_holder
/obj/item/mecha_parts/mecha_equipment/hydraulic_clamp/can_attach(obj/mecha/working/ripley/M as obj)
if(..())
if(istype(M))
return 1
return 0
/obj/item/mecha_parts/mecha_equipment/hydraulic_clamp/attach(obj/mecha/M as obj)
..()
cargo_holder = M
return
/obj/item/mecha_parts/mecha_equipment/hydraulic_clamp/detach(atom/moveto = null)
..()
cargo_holder = null
/obj/item/mecha_parts/mecha_equipment/hydraulic_clamp/action(atom/target)
if(!action_checks(target))
return
if(!cargo_holder)
return
if(istype(target,/obj))
var/obj/O = target
if(!O.anchored)
if(cargo_holder.cargo.len < cargo_holder.cargo_capacity)
chassis.visible_message("[chassis] lifts [target] and starts to load it into cargo compartment.")
O.anchored = 1
if(do_after_cooldown(target))
cargo_holder.cargo += O
O.loc = chassis
O.anchored = 0
occupant_message("<span class='notice'>[target] successfully loaded.</span>")
log_message("Loaded [O]. Cargo compartment capacity: [cargo_holder.cargo_capacity - cargo_holder.cargo.len]")
else
O.anchored = initial(O.anchored)
else
occupant_message("<span class='warning'>Not enough room in cargo compartment!</span>")
else
occupant_message("<span class='warning'>[target] is firmly secured!</span>")
else if(istype(target,/mob/living))
var/mob/living/M = target
if(M.stat == DEAD) return
if(chassis.occupant.a_intent == "harm")
M.take_overall_damage(dam_force)
if(!M)
return
M.adjustOxyLoss(round(dam_force/2))
M.updatehealth()
target.visible_message("<span class='danger'>[chassis] squeezes [target].</span>", \
"<span class='userdanger'>[chassis] squeezes [target].</span>",\
"<span class='italics'>You hear something crack.</span>")
add_logs(chassis.occupant, M, "attacked", "[name]", "(INTENT: [uppertext(chassis.occupant.a_intent)]) (DAMTYE: [uppertext(damtype)])")
else
step_away(M,chassis)
occupant_message("You push [target] out of the way.")
chassis.visible_message("[chassis] pushes [target] out of the way.")
return 1
//This is pretty much just for the death-ripley
/obj/item/mecha_parts/mecha_equipment/hydraulic_clamp/kill
name = "\improper KILL CLAMP"
desc = "They won't know what clamped them!"
energy_drain = 0
/obj/item/mecha_parts/mecha_equipment/hydraulic_clamp/kill/action(atom/target)
if(!action_checks(target)) return
if(!cargo_holder) return
if(istype(target,/obj))
var/obj/O = target
if(!O.anchored)
if(cargo_holder.cargo.len < cargo_holder.cargo_capacity)
chassis.visible_message("[chassis] lifts [target] and starts to load it into cargo compartment.")
O.anchored = 1
if(do_after_cooldown(target))
cargo_holder.cargo += O
O.loc = chassis
O.anchored = 0
occupant_message("<span class='notice'>[target] successfully loaded.</span>")
log_message("Loaded [O]. Cargo compartment capacity: [cargo_holder.cargo_capacity - cargo_holder.cargo.len]")
else
O.anchored = initial(O.anchored)
else
occupant_message("<span class='warning'>Not enough room in cargo compartment!</span>")
else
occupant_message("<span class='warning'>[target] is firmly secured!</span>")
else if(istype(target,/mob/living))
var/mob/living/M = target
if(M.stat == DEAD) return
if(chassis.occupant.a_intent == "harm")
target.visible_message("<span class='danger'>[chassis] destroys [target] in an unholy fury.</span>", \
"<span class='userdanger'>[chassis] destroys [target] in an unholy fury.</span>")
if(chassis.occupant.a_intent == "disarm")
target.visible_message("<span class='danger'>[chassis] rips [target]'s arms off.</span>", \
"<span class='userdanger'>[chassis] rips [target]'s arms off.</span>")
else
step_away(M,chassis)
target.visible_message("[chassis] tosses [target] like a piece of paper.")
return 1
/obj/item/mecha_parts/mecha_equipment/extinguisher
name = "exosuit extinguisher"
desc = "Equipment for engineering exosuits. A rapid-firing high capacity fire extinguisher."
icon_state = "mecha_exting"
equip_cooldown = 5
energy_drain = 0
range = MELEE|RANGED
/obj/item/mecha_parts/mecha_equipment/extinguisher/New()
create_reagents(1000)
reagents.add_reagent("water", 1000)
..()
return
/obj/item/mecha_parts/mecha_equipment/extinguisher/action(atom/target) //copypasted from extinguisher. TODO: Rewrite from scratch.
if(!action_checks(target) || get_dist(chassis, target)>3)
return
if(istype(target, /obj/structure/reagent_dispensers/watertank) && get_dist(chassis,target) <= 1)
var/obj/structure/reagent_dispensers/watertank/WT = target
WT.reagents.trans_to(src, 1000)
occupant_message("<span class='notice'>Extinguisher refilled.</span>")
playsound(chassis, 'sound/effects/refill.ogg', 50, 1, -6)
else
if(reagents.total_volume > 0)
playsound(chassis, 'sound/effects/extinguish.ogg', 75, 1, -3)
var/direction = get_dir(chassis,target)
var/turf/T = get_turf(target)
var/turf/T1 = get_step(T,turn(direction, 90))
var/turf/T2 = get_step(T,turn(direction, -90))
var/list/the_targets = list(T,T1,T2)
spawn(0)
for(var/a=0, a<5, a++)
var/obj/effect/effect/water/W = PoolOrNew(/obj/effect/effect/water, get_turf(chassis))
if(!W)
return
var/turf/my_target = pick(the_targets)
var/datum/reagents/R = new/datum/reagents(5)
W.reagents = R
R.my_atom = W
reagents.trans_to(W,1)
for(var/b=0, b<4, b++)
if(!W)
return
step_towards(W,my_target)
if(!W)
return
var/turf/W_turf = get_turf(W)
W.reagents.reaction(W_turf)
for(var/atom/atm in W_turf)
W.reagents.reaction(atm)
if(W.loc == my_target)
break
sleep(2)
return 1
/obj/item/mecha_parts/mecha_equipment/extinguisher/get_equip_info()
return "[..()] \[[src.reagents.total_volume]\]"
/obj/item/mecha_parts/mecha_equipment/extinguisher/on_reagent_change()
return
/obj/item/mecha_parts/mecha_equipment/extinguisher/can_attach(obj/mecha/working/M as obj)
if(..())
if(istype(M))
return 1
return 0
/obj/item/mecha_parts/mecha_equipment/rcd
name = "mounted RCD"
desc = "An exosuit-mounted Rapid Construction Device."
icon_state = "mecha_rcd"
origin_tech = "materials=4;bluespace=3;magnets=4;powerstorage=4"
equip_cooldown = 10
energy_drain = 250
range = MELEE|RANGED
var/mode = 0 //0 - deconstruct, 1 - wall or floor, 2 - airlock.
var/disabled = 0 //malf
/obj/item/mecha_parts/mecha_equipment/rcd/action(atom/target)
if(istype(target,/area/shuttle)||istype(target, /turf/space/transit))//>implying these are ever made -Sieve
disabled = 1
else
disabled = 0
if(!istype(target, /turf) && !istype(target, /obj/machinery/door/airlock))
target = get_turf(target)
if(!action_checks(target) || disabled || get_dist(chassis, target)>3)
return
playsound(chassis, 'sound/machines/click.ogg', 50, 1)
switch(mode)
if(0)
if (istype(target, /turf/simulated/wall))
var/turf/simulated/wall/W = target
occupant_message("Deconstructing [W]...")
if(do_after_cooldown(W))
chassis.spark_system.start()
W.ChangeTurf(/turf/simulated/floor/plating)
playsound(W, 'sound/items/Deconstruct.ogg', 50, 1)
else if (istype(target, /turf/simulated/floor))
var/turf/simulated/floor/F = target
occupant_message("Deconstructing [F]...")
if(do_after_cooldown(target))
chassis.spark_system.start()
F.ChangeTurf(F.baseturf)
playsound(F, 'sound/items/Deconstruct.ogg', 50, 1)
else if (istype(target, /obj/machinery/door/airlock))
occupant_message("Deconstructing [target]...")
if(do_after_cooldown(target))
chassis.spark_system.start()
qdel(target)
playsound(target, 'sound/items/Deconstruct.ogg', 50, 1)
if(1)
if(istype(target, /turf/space))
var/turf/space/S = target
occupant_message("Building Floor...")
if(do_after_cooldown(S))
S.ChangeTurf(/turf/simulated/floor/plating)
playsound(S, 'sound/items/Deconstruct.ogg', 50, 1)
chassis.spark_system.start()
else if(istype(target, /turf/simulated/floor))
var/turf/simulated/floor/F = target
occupant_message("Building Wall...")
if(do_after_cooldown(F))
if(disabled) return
F.ChangeTurf(/turf/simulated/wall)
playsound(F, 'sound/items/Deconstruct.ogg', 50, 1)
chassis.spark_system.start()
if(2)
if(istype(target, /turf/simulated/floor))
occupant_message("Building Airlock...")
if(do_after_cooldown(target))
chassis.spark_system.start()
var/obj/machinery/door/airlock/T = new /obj/machinery/door/airlock(target)
T.autoclose = 1
playsound(target, 'sound/items/Deconstruct.ogg', 50, 1)
playsound(target, 'sound/effects/sparks2.ogg', 50, 1)
/obj/item/mecha_parts/mecha_equipment/rcd/do_after_cooldown(var/atom/target)
. = ..()
if(disabled)
return 0
/obj/item/mecha_parts/mecha_equipment/rcd/Topic(href,href_list)
..()
if(href_list["mode"])
mode = text2num(href_list["mode"])
switch(mode)
if(0)
occupant_message("Switched RCD to Deconstruct.")
energy_drain = initial(energy_drain)
if(1)
occupant_message("Switched RCD to Construct.")
energy_drain = 2*initial(energy_drain)
if(2)
occupant_message("Switched RCD to Construct Airlock.")
energy_drain = 2*initial(energy_drain)
return
/obj/item/mecha_parts/mecha_equipment/rcd/get_equip_info()
return "[..()] \[<a href='?src=\ref[src];mode=0'>D</a>|<a href='?src=\ref[src];mode=1'>C</a>|<a href='?src=\ref[src];mode=2'>A</a>\]"
/obj/item/mecha_parts/mecha_equipment/cable_layer
name = "cable layer"
desc = "Equipment for engineering exosuits. Lays cable along the exosuit's path."
icon_state = "mecha_wire"
var/datum/event/event
var/turf/old_turf
var/obj/structure/cable/last_piece
var/obj/item/stack/cable_coil/cable
var/max_cable = 1000
/obj/item/mecha_parts/mecha_equipment/cable_layer/New()
cable = new(src)
cable.amount = 0
..()
/obj/item/mecha_parts/mecha_equipment/cable_layer/can_attach(obj/mecha/working/M)
if(..())
if(istype(M))
return 1
return 0
/obj/item/mecha_parts/mecha_equipment/cable_layer/attach()
..()
event = chassis.events.addEvent("onMove",src,"layCable")
return
/obj/item/mecha_parts/mecha_equipment/cable_layer/detach()
chassis.events.clearEvent("onMove",event)
return ..()
/obj/item/mecha_parts/mecha_equipment/cable_layer/Destroy()
chassis.events.clearEvent("onMove",event)
..()
/obj/item/mecha_parts/mecha_equipment/cable_layer/action(var/obj/item/stack/cable_coil/target)
if(!action_checks(target))
return
if(istype(target) && target.amount)
var/cur_amount = cable? cable.amount : 0
var/to_load = max(max_cable - cur_amount,0)
if(to_load)
to_load = min(target.amount, to_load)
if(!cable)
cable = new(src)
cable.amount = 0
cable.amount += to_load
target.use(to_load)
occupant_message("<span class='notice'>[to_load] meters of cable successfully loaded.</span>")
send_byjax(chassis.occupant,"exosuit.browser","\ref[src]",src.get_equip_info())
else
occupant_message("<span class='warning'>Reel is full.</span>")
else
occupant_message("<span class='warning'>Unable to load [target] - no cable found.</span>")
/obj/item/mecha_parts/mecha_equipment/cable_layer/Topic(href,href_list)
..()
if(href_list["toggle"])
set_ready_state(!equip_ready)
occupant_message("[src] [equip_ready?"dea":"a"]ctivated.")
log_message("[equip_ready?"Dea":"A"]ctivated.")
return
if(href_list["cut"])
if(cable && cable.amount)
var/m = round(input(chassis.occupant,"Please specify the length of cable to cut","Cut cable",min(cable.amount,30)) as num, 1)
m = min(m, cable.amount)
if(m)
use_cable(m)
var/obj/item/stack/cable_coil/CC = new (get_turf(chassis))
CC.amount = m
else
occupant_message("There's no more cable on the reel.")
return
/obj/item/mecha_parts/mecha_equipment/cable_layer/get_equip_info()
var/output = ..()
if(output)
return "[output] \[Cable: [cable ? cable.amount : 0] m\][(cable && cable.amount) ? "- <a href='?src=\ref[src];toggle=1'>[!equip_ready?"Dea":"A"]ctivate</a>|<a href='?src=\ref[src];cut=1'>Cut</a>" : null]"
return
/obj/item/mecha_parts/mecha_equipment/cable_layer/proc/use_cable(amount)
if(!cable || cable.amount<1)
set_ready_state(1)
occupant_message("Cable depleted, [src] deactivated.")
log_message("Cable depleted, [src] deactivated.")
return
if(cable.amount < amount)
occupant_message("No enough cable to finish the task.")
return
cable.use(amount)
update_equip_info()
return 1
/obj/item/mecha_parts/mecha_equipment/cable_layer/proc/reset()
last_piece = null
/obj/item/mecha_parts/mecha_equipment/cable_layer/proc/dismantleFloor(var/turf/new_turf)
if(istype(new_turf, /turf/simulated/floor))
var/turf/simulated/floor/T = new_turf
if(!istype(T, /turf/simulated/floor/plating))
if(!T.broken && !T.burnt)
new T.floor_tile(T)
T.make_plating()
return !new_turf.intact
/obj/item/mecha_parts/mecha_equipment/cable_layer/proc/layCable(var/turf/new_turf)
if(equip_ready || !istype(new_turf) || !dismantleFloor(new_turf))
return reset()
var/fdirn = turn(chassis.dir,180)
for(var/obj/structure/cable/LC in new_turf) // check to make sure there's not a cable there already
if(LC.d1 == fdirn || LC.d2 == fdirn)
return reset()
if(!use_cable(1))
return reset()
var/obj/structure/cable/NC = new(new_turf)
NC.cableColor("red")
NC.d1 = 0
NC.d2 = fdirn
NC.updateicon()
var/datum/powernet/PN
if(last_piece && last_piece.d2 != chassis.dir)
last_piece.d1 = min(last_piece.d2, chassis.dir)
last_piece.d2 = max(last_piece.d2, chassis.dir)
last_piece.updateicon()
PN = last_piece.powernet
if(!PN)
PN = new()
powernets += PN
NC.powernet = PN
PN.cables += NC
NC.mergeConnectedNetworks(NC.d2)
//NC.mergeConnectedNetworksOnTurf()
last_piece = NC
return 1
+54 -83
View File
@@ -20,7 +20,6 @@
/obj/item/mecha_parts/mecha_equipment/weapon/action(atom/target)
if(!action_checks(target))
return 0
set_ready_state(0)
var/turf/curloc = get_turf(chassis)
var/turf/targloc = get_turf(target)
@@ -29,6 +28,10 @@
if (targloc == curloc)
return 0
set_ready_state(0)
chassis.can_move = 0
spawn(shot_delay*projectiles_per_shot)
chassis.can_move = 1
for(var/i=1 to get_shot_amount())
var/obj/item/projectile/A = new projectile(curloc)
A.firer = chassis.occupant
@@ -49,9 +52,9 @@
sleep(shot_delay)
chassis.log_message("Fired from [src.name], targeting [target].")
do_after_cooldown()
return 1
//Base energy weapon type
/obj/item/mecha_parts/mecha_equipment/weapon/energy
name = "general energy weapon"
@@ -59,10 +62,11 @@
/obj/item/mecha_parts/mecha_equipment/weapon/energy/get_shot_amount()
return min(round(chassis.cell.charge / energy_drain), projectiles_per_shot)
/obj/item/mecha_parts/mecha_equipment/weapon/energy/action(atom/target)
..()
chassis.use_power(energy_drain * get_shot_amount())
/obj/item/mecha_parts/mecha_equipment/weapon/energy/start_cooldown()
set_ready_state(0)
chassis.use_power(energy_drain*get_shot_amount())
sleep(equip_cooldown)
set_ready_state(1)
/obj/item/mecha_parts/mecha_equipment/weapon/energy/laser
equip_cooldown = 8
@@ -112,10 +116,11 @@
projectile = /obj/item/projectile/plasma/adv/mech
fire_sound = 'sound/weapons/Laser.ogg'
/obj/item/mecha_parts/mecha_equipment/weapon/energy/plasma/can_attach(obj/mecha/M)
if(istype(M, /obj/mecha/working))
if(M.equipment.len < M.max_equip)
return 1
/obj/item/mecha_parts/mecha_equipment/weapon/energy/plasma/can_attach(obj/mecha/working/M)
if(..()) //combat mech
return 1
else if(M.equipment.len < M.max_equip && istype(M))
return 1
return 0
/obj/item/projectile/beam/pulse/heavy
@@ -158,8 +163,8 @@
return 0
/obj/item/mecha_parts/mecha_equipment/weapon/honker/action(target)
if(!action_checks(target)) return 0
set_ready_state(0)
if(!action_checks(target))
return
playsound(chassis, 'sound/items/AirHorn.ogg', 100, 1)
chassis.occupant_message("<font color='red' size='5'>HONK</font>")
for(var/mob/living/carbon/M in ohearers(6, chassis))
@@ -177,24 +182,12 @@
M.Paralyse(4)
else
M.Jitter(500)
/* //else the mousetraps are useless
if(istype(M, /mob/living/carbon/human))
var/mob/living/carbon/human/H = M
if(isobj(H.shoes))
var/thingy = H.shoes
H.unEquip(H.shoes)
walk_away(thingy,chassis,15,2)
spawn(20)
if(thingy)
walk(thingy,0)
*/
chassis.use_power(energy_drain)
log_message("Honked from [src.name]. HONK!")
var/turf/T = get_turf(src)
message_admins("[key_name_admin(chassis.occupant, chassis.occupant.client)](<A HREF='?_src_=holder;adminmoreinfo=\ref[chassis.occupant]'>?</A>) (<A HREF='?_src_=holder;adminplayerobservefollow=\ref[chassis.occupant]'>FLW</A>) used a Mecha Honker in ([T.x],[T.y],[T.z] - <A HREF='?_src_=holder;adminplayerobservecoodjump=1;X=[T.x];Y=[T.y];Z=[T.z]'>JMP</a>)",0,1)
log_game("[chassis.occupant.ckey]([chassis.occupant]) used a Mecha Honker in ([T.x],[T.y],[T.z])")
do_after_cooldown()
return
return 1
//Base ballistic weapon type
@@ -212,8 +205,6 @@
return 0
if(projectiles <= 0)
return 0
if(!equip_ready)
return 0
return 1
/obj/item/mecha_parts/mecha_equipment/weapon/ballistic/get_equip_info()
@@ -238,8 +229,9 @@
/obj/item/mecha_parts/mecha_equipment/weapon/ballistic/action(atom/target)
if(..())
src.projectiles -= get_shot_amount()
projectiles -= get_shot_amount()
send_byjax(chassis.occupant,"exosuit.browser","\ref[src]",src.get_equip_info())
return 1
/obj/item/mecha_parts/mecha_equipment/weapon/ballistic/carbine
@@ -284,7 +276,27 @@
deviation = 0.3
shot_delay = 2
/obj/item/mecha_parts/mecha_equipment/weapon/ballistic/missile_rack
/obj/item/mecha_parts/mecha_equipment/weapon/ballistic/launcher
var/missile_speed = 2
var/missile_range = 30
/obj/item/mecha_parts/mecha_equipment/weapon/ballistic/launcher/action(target)
if(!action_checks(target))
return
var/obj/O = new projectile(chassis.loc)
playsound(chassis, fire_sound, 50, 1)
log_message("Launched a [O.name] from [name], targeting [target].")
projectiles--
proj_init(O)
spawn(0)
O.throw_at(target, missile_range, missile_speed, spin = 0)
return 1
//used for projectile initilisation (priming flashbang) and additional logging
/obj/item/mecha_parts/mecha_equipment/weapon/ballistic/launcher/proc/proj_init(var/obj/O)
return
/obj/item/mecha_parts/mecha_equipment/weapon/ballistic/launcher/missile_rack
name = "\improper SRM-8 missile rack"
desc = "A weapon for combat exosuits. Shoots light explosive missiles."
icon_state = "mecha_missilerack"
@@ -293,24 +305,12 @@
projectiles = 8
projectile_energy_cost = 1000
equip_cooldown = 60
var/missile_speed = 2
var/missile_range = 30
/obj/item/mecha_parts/mecha_equipment/weapon/ballistic/missile_rack/action(target)
if(!action_checks(target)) return
set_ready_state(0)
var/obj/item/missile/M = new projectile(chassis.loc)
/obj/item/mecha_parts/mecha_equipment/weapon/ballistic/launcher/missile_rack/proj_init(var/obj/item/missile/M)
M.primed = 1
playsound(chassis, fire_sound, 50, 1)
M.throw_at(target, missile_range, missile_speed)
projectiles--
log_message("Fired from [src.name], targeting [target].")
var/turf/T = get_turf(src)
message_admins("[key_name(chassis.occupant, chassis.occupant.client)](<A HREF='?_src_=holder;adminmoreinfo=\ref[chassis.occupant]'>?</A>) fired a [src] in ([T.x],[T.y],[T.z] - <A HREF='?_src_=holder;adminplayerobservecoodjump=1;X=[T.x];Y=[T.y];Z=[T.z]'>JMP</a>)",0,1)
log_game("[key_name(chassis.occupant)] fired a [src] ([T.x],[T.y],[T.z])")
do_after_cooldown()
return
/obj/item/missile
icon = 'icons/obj/grenade.dmi'
@@ -324,9 +324,8 @@
qdel(src)
else
..()
return
/obj/item/mecha_parts/mecha_equipment/weapon/ballistic/missile_rack/flashbang
/obj/item/mecha_parts/mecha_equipment/weapon/ballistic/launcher/flashbang
name = "\improper SGL-6 grenade launcher"
desc = "A weapon for combat exosuits. Launches primed flashbangs."
icon_state = "mecha_grenadelnchr"
@@ -338,24 +337,16 @@
equip_cooldown = 60
var/det_time = 20
/obj/item/mecha_parts/mecha_equipment/weapon/ballistic/missile_rack/flashbang/action(target)
if(!action_checks(target)) return
set_ready_state(0)
var/obj/item/weapon/grenade/flashbang/F = new projectile(chassis.loc)
playsound(chassis, fire_sound, 50, 1)
F.throw_at(target, missile_range, missile_speed)
projectiles--
log_message("Fired from [src.name], targeting [target].")
/obj/item/mecha_parts/mecha_equipment/weapon/ballistic/launcher/flashbang/proj_init(var/obj/item/weapon/grenade/flashbang/F)
var/turf/T = get_turf(src)
message_admins("[key_name(chassis.occupant, chassis.occupant.client)](<A HREF='?_src_=holder;adminmoreinfo=\ref[chassis.occupant]'>?</A>) (<A HREF='?_src_=holder;adminplayerobservefollow=\ref[chassis.occupant]'>FLW</A>) fired a [src] in ([T.x],[T.y],[T.z] - <A HREF='?_src_=holder;adminplayerobservecoodjump=1;X=[T.x];Y=[T.y];Z=[T.z]'>JMP</a>)",0,1)
message_admins("[key_name(chassis.occupant, chassis.occupant.client)](<A HREF='?_src_=holder;adminmoreinfo=\ref[chassis.occupant]'>?</A>) fired a [src] in ([T.x],[T.y],[T.z] - <A HREF='?_src_=holder;adminplayerobservecoodjump=1;X=[T.x];Y=[T.y];Z=[T.z]'>JMP</a>)",0,1)
log_game("[key_name(chassis.occupant)] fired a [src] ([T.x],[T.y],[T.z])")
spawn(det_time)
if(F)
F.prime()
do_after_cooldown()
return
/obj/item/mecha_parts/mecha_equipment/weapon/ballistic/missile_rack/flashbang/clusterbang //Because I am a heartless bastard -Sieve //Heartless? for making the poor man's honkblast? - Kaze
/obj/item/mecha_parts/mecha_equipment/weapon/ballistic/launcher/flashbang/clusterbang //Because I am a heartless bastard -Sieve //Heartless? for making the poor man's honkblast? - Kaze
name = "\improper SOB-3 grenade launcher"
desc = "A weapon for combat exosuits. Launches primed clusterbangs. You monster."
projectiles = 3
@@ -363,7 +354,7 @@
projectile_energy_cost = 1600 //getting off cheap seeing as this is 3 times the flashbangs held in the grenade launcher.
equip_cooldown = 90
/obj/item/mecha_parts/mecha_equipment/weapon/ballistic/missile_rack/banana_mortar
/obj/item/mecha_parts/mecha_equipment/weapon/ballistic/launcher/banana_mortar
name = "banana mortar"
desc = "Equipment for clown exosuits. Launches banana peels."
icon_state = "mecha_bananamrtr"
@@ -374,25 +365,13 @@
projectile_energy_cost = 100
equip_cooldown = 20
/obj/item/mecha_parts/mecha_equipment/weapon/ballistic/missile_rack/banana_mortar/can_attach(obj/mecha/combat/honker/M)
/obj/item/mecha_parts/mecha_equipment/weapon/ballistic/launcher/banana_mortar/can_attach(obj/mecha/combat/honker/M)
if(..())
if(istype(M))
return 1
return 0
/obj/item/mecha_parts/mecha_equipment/weapon/ballistic/missile_rack/banana_mortar/action(target)
if(!action_checks(target)) return
set_ready_state(0)
var/obj/item/weapon/grown/bananapeel/B = new projectile(chassis.loc,60)
playsound(chassis, fire_sound, 60, 1)
B.throw_at(target, missile_range, missile_speed)
projectiles--
log_message("Bananed from [src.name], targeting [target]. HONK!")
do_after_cooldown()
return
/obj/item/mecha_parts/mecha_equipment/weapon/ballistic/missile_rack/mousetrap_mortar
/obj/item/mecha_parts/mecha_equipment/weapon/ballistic/launcher/mousetrap_mortar
name = "mousetrap mortar"
desc = "Equipment for clown exosuits. Launches armed mousetraps."
icon_state = "mecha_mousetrapmrtr"
@@ -403,20 +382,12 @@
projectile_energy_cost = 100
equip_cooldown = 10
/obj/item/mecha_parts/mecha_equipment/weapon/ballistic/missile_rack/mousetrap_mortar/can_attach(obj/mecha/combat/honker/M)
/obj/item/mecha_parts/mecha_equipment/weapon/ballistic/launcher/mousetrap_mortar/can_attach(obj/mecha/combat/honker/M)
if(..())
if(istype(M))
return 1
return 0
/obj/item/mecha_parts/mecha_equipment/weapon/ballistic/missile_rack/mousetrap_mortar/action(target)
if(!action_checks(target)) return
set_ready_state(0)
var/obj/item/device/assembly/mousetrap/armed/M = new projectile(chassis.loc)
/obj/item/mecha_parts/mecha_equipment/weapon/ballistic/launcher/mousetrap_mortar/proj_init(var/obj/item/device/assembly/mousetrap/armed/M)
M.secured = 1
playsound(chassis, fire_sound, 60, 1)
M.throw_at(target, missile_range, missile_speed)
projectiles--
log_message("Launched a mouse-trap from [src.name], targeting [target]. HONK!")
do_after_cooldown()
return
+316 -1119
View File
File diff suppressed because it is too large Load Diff
+345
View File
@@ -0,0 +1,345 @@
/obj/mecha/proc/take_damage(amount, type="brute")
if(amount)
var/damage = absorbDamage(amount,type)
health -= damage
update_health()
occupant_message("<span class='userdanger'>Taking damage!</span>")
log_append_to_last("Took [damage] points of damage. Damage type: \"[type]\".",1)
/obj/mecha/proc/absorbDamage(damage,damage_type)
var/coeff = 1
if(damage_absorption[damage_type])
coeff = damage_absorption[damage_type]
return damage*coeff
/obj/mecha/proc/update_health()
if(src.health > 0)
src.spark_system.start()
else
qdel(src)
/obj/mecha/attack_hulk(mob/living/carbon/human/user)
if(!prob(src.deflect_chance))
..(user, 1)
take_damage(15)
check_for_internal_damage(list(MECHA_INT_TEMP_CONTROL,MECHA_INT_TANK_BREACH,MECHA_INT_CONTROL_LOST))
user.visible_message("<span class='danger'>[user] hits [src.name], doing some damage.</span>", "<span class='danger'>You hit [src.name] with all your might. The metal creaks and bends.</span>")
occupant_message("<span class='userdanger'>[user] hits [src.name], doing some damage.</span>")
return 1
return 0
/obj/mecha/attack_hand(mob/living/user as mob)
user.changeNext_move(CLICK_CD_MELEE) // Ugh. Ideally we shouldn't be setting cooldowns outside of click code.
user.do_attack_animation(src)
src.log_message("Attack by hand/paw. Attacker - [user].",1)
user.visible_message("<span class='danger'>[user] hits [src.name]. Nothing happens</span>","<span class='danger'>You hit [src.name] with no visible effect.</span>")
src.log_append_to_last("Armor saved.")
return
/obj/mecha/attack_paw(mob/user as mob)
return src.attack_hand(user)
/obj/mecha/attack_alien(mob/living/user as mob)
src.log_message("Attack by alien. Attacker - [user].",1)
user.changeNext_move(CLICK_CD_MELEE) //Now stompy alien killer mechs are actually scary to aliens!
user.do_attack_animation(src)
if(!prob(src.deflect_chance))
take_damage(15)
check_for_internal_damage(list(MECHA_INT_TEMP_CONTROL,MECHA_INT_TANK_BREACH,MECHA_INT_CONTROL_LOST))
playsound(src.loc, 'sound/weapons/slash.ogg', 50, 1, -1)
visible_message("<span class='danger'>The [user] slashes at [src.name]'s armor!</span>")
else
src.log_append_to_last("Armor saved.")
playsound(src.loc, 'sound/weapons/slash.ogg', 50, 1, -1)
user << "\green Your claws had no effect!"
visible_message("<span class='notice'>The [user] rebounds off [src.name]'s armor!</span>")
return
/obj/mecha/attack_animal(mob/living/simple_animal/user as mob)
src.log_message("Attack by simple animal. Attacker - [user].",1)
user.changeNext_move(CLICK_CD_MELEE)
if(user.melee_damage_upper == 0)
user.emote("[user.friendly] [src]")
else
user.do_attack_animation(src)
if(!prob(src.deflect_chance))
var/damage = rand(user.melee_damage_lower, user.melee_damage_upper)
take_damage(damage)
check_for_internal_damage(list(MECHA_INT_TEMP_CONTROL,MECHA_INT_TANK_BREACH,MECHA_INT_CONTROL_LOST))
visible_message("<span class='danger'>[user] [user.attacktext] [src]!</span>")
add_logs(user, src, "attacked", admin=0)
else
src.log_append_to_last("Armor saved.")
playsound(src.loc, 'sound/weapons/slash.ogg', 50, 1, -1)
visible_message("<span class='notice'>The [user] rebounds off [src.name]'s armor!</span>")
add_logs(user, src, "attacked", admin=0)
return
/obj/mecha/attack_tk()
return
/obj/mecha/hitby(atom/movable/A as mob|obj) //wrapper
log_message("Hit by [A].",1)
var/deflection = deflect_chance
var/dam_coeff = 1
var/counter_tracking = 0
for(var/obj/item/mecha_parts/mecha_equipment/antiproj_armor_booster/B in equipment)
if(B.projectile_react())
deflection *= B.deflect_coeff
dam_coeff *= B.damage_coeff
counter_tracking = 1
break
if(istype(A, /obj/item/mecha_parts/mecha_tracking))
if(!counter_tracking)
A.forceMove(src)
visible_message("The [A] fastens firmly to [src].")
return
else
deflection = 100 //will bounce off
if(prob(deflection) || istype(A, /mob))
visible_message("[A] bounces off the [src.name] armor")
log_append_to_last("Armor saved.")
if(istype(A, /mob/living))
var/mob/living/M = A
M.take_organ_damage(10)
else if(istype(A, /obj))
var/obj/O = A
if(O.throwforce)
visible_message("<span class='danger'>[src.name] is hit by [A].</span>")
take_damage(O.throwforce*dam_coeff)
check_for_internal_damage(list(MECHA_INT_TEMP_CONTROL,MECHA_INT_TANK_BREACH,MECHA_INT_CONTROL_LOST))
return
/obj/mecha/bullet_act(var/obj/item/projectile/Proj) //wrapper
log_message("Hit by projectile. Type: [Proj.name]([Proj.flag]).",1)
var/deflection = deflect_chance
var/dam_coeff = 1
for(var/obj/item/mecha_parts/mecha_equipment/antiproj_armor_booster/B in equipment)
if(B.projectile_react())
deflection *= B.deflect_coeff
dam_coeff *= B.damage_coeff
break
if(prob(deflection))
visible_message("The [src.name] armor deflects the projectile")
log_append_to_last("Armor saved.")
return
var/ignore_threshold
if(Proj.flag == "taser")
use_power(200)
return
if(istype(Proj, /obj/item/projectile/beam/pulse))
ignore_threshold = 1
if((Proj.damage_type == BRUTE || Proj.damage_type == BURN))
take_damage(Proj.damage*dam_coeff,Proj.flag)
visible_message("<span class='danger'>[src.name] is hit by [Proj].</span>")
check_for_internal_damage(list(MECHA_INT_FIRE,MECHA_INT_TEMP_CONTROL,MECHA_INT_TANK_BREACH,MECHA_INT_CONTROL_LOST,MECHA_INT_SHORT_CIRCUIT),ignore_threshold)
Proj.on_hit(src)
/obj/mecha/ex_act(severity, target)
src.log_message("Affected by explosion of severity: [severity].",1)
if(prob(src.deflect_chance))
severity++
log_append_to_last("Armor saved, changing severity to [severity].")
switch(severity)
if(1.0)
qdel(src)
if(2.0)
if (prob(30))
qdel(src)
else
take_damage(initial(src.health)/2)
check_for_internal_damage(list(MECHA_INT_FIRE,MECHA_INT_TEMP_CONTROL,MECHA_INT_TANK_BREACH,MECHA_INT_CONTROL_LOST,MECHA_INT_SHORT_CIRCUIT),1)
if(3.0)
if (prob(5))
qdel(src)
else
take_damage(initial(src.health)/5)
check_for_internal_damage(list(MECHA_INT_FIRE,MECHA_INT_TEMP_CONTROL,MECHA_INT_TANK_BREACH,MECHA_INT_CONTROL_LOST,MECHA_INT_SHORT_CIRCUIT),1)
return
/obj/mecha/blob_act()
take_damage(30, "brute")
return
/obj/mecha/emp_act(severity)
if(get_charge())
use_power((cell.charge/2)/severity)
take_damage(50 / severity,"energy")
src.log_message("EMP detected",1)
check_for_internal_damage(list(MECHA_INT_FIRE,MECHA_INT_TEMP_CONTROL,MECHA_INT_CONTROL_LOST,MECHA_INT_SHORT_CIRCUIT),1)
return
/obj/mecha/temperature_expose(datum/gas_mixture/air, exposed_temperature, exposed_volume)
if(exposed_temperature>src.max_temperature)
log_message("Exposed to dangerous temperature.",1)
take_damage(5,"fire")
check_for_internal_damage(list(MECHA_INT_FIRE, MECHA_INT_TEMP_CONTROL))
return
/obj/mecha/attackby(obj/item/W as obj, mob/user as mob, params)
if(istype(W, /obj/item/device/mmi))
if(mmi_move_inside(W,user))
user << "[src]-[W] interface initialized successfuly"
else
user << "[src]-[W] interface initialization failed."
return
if(istype(W, /obj/item/mecha_parts/mecha_equipment))
var/obj/item/mecha_parts/mecha_equipment/E = W
spawn()
if(E.can_attach(src))
if(!user.drop_item())
return
E.attach(src)
user.visible_message("[user] attaches [W] to [src].", "<span class='notice'>You attach [W] to [src].</span>")
else
user << "<span class='warning'>You were unable to attach [W] to [src]!</span>"
return
if(istype(W, /obj/item/weapon/card/id)||istype(W, /obj/item/device/pda))
if(add_req_access || maint_access)
if(internals_access_allowed(user))
var/obj/item/weapon/card/id/id_card
if(istype(W, /obj/item/weapon/card/id))
id_card = W
else
var/obj/item/device/pda/pda = W
id_card = pda.id
output_maintenance_dialog(id_card, user)
return
else
user << "<span class='warning'>Invalid ID: Access denied.</span>"
else
user << "<span class='warning'>Maintenance protocols disabled by operator.</span>"
else if(istype(W, /obj/item/weapon/wrench))
if(state==1)
state = 2
user << "<span class='notice'>You undo the securing bolts.</span>"
else if(state==2)
state = 1
user << "<span class='notice'>You tighten the securing bolts.</span>"
return
else if(istype(W, /obj/item/weapon/crowbar))
if(state==2)
state = 3
user << "<span class='notice'>You open the hatch to the power unit.</span>"
else if(state==3)
state=2
user << "<span class='notice'>You close the hatch to the power unit.</span>"
return
else if(istype(W, /obj/item/stack/cable_coil))
if(state == 3 && (internal_damage & MECHA_INT_SHORT_CIRCUIT))
var/obj/item/stack/cable_coil/CC = W
if(CC.use(2))
clearInternalDamage(MECHA_INT_SHORT_CIRCUIT)
user << "<span class='notice'>You replace the fused wires.</span>"
else
user << "<span class='warning'>You need two lengths of cable to fix this mech!</span>"
return
else if(istype(W, /obj/item/weapon/screwdriver))
if(internal_damage & MECHA_INT_TEMP_CONTROL)
clearInternalDamage(MECHA_INT_TEMP_CONTROL)
user << "<span class='notice'>You repair the damaged temperature controller.</span>"
else if(state==3 && src.cell)
src.cell.forceMove(src.loc)
src.cell = null
state = 4
user << "<span class='notice'>You unscrew and pry out the powercell.</span>"
src.log_message("Powercell removed")
else if(state==4 && src.cell)
state=3
user << "<span class='notice'>You screw the cell in place.</span>"
return
else if(istype(W, /obj/item/weapon/stock_parts/cell))
if(state==4)
if(!src.cell)
if(!user.drop_item())
return
var/obj/item/weapon/stock_parts/cell/C = W
user << "<span class='notice'>You install the powercell.</span>"
C.forceMove(src)
C.use(C.charge * 0.8)
src.cell = C
src.log_message("Powercell installed")
else
user << "<span class='notice'>There's already a powercell installed.</span>"
return
else if(istype(W, /obj/item/weapon/weldingtool) && user.a_intent != "harm")
user.changeNext_move(CLICK_CD_MELEE)
var/obj/item/weapon/weldingtool/WT = W
if(src.health<initial(src.health))
if (WT.remove_fuel(0,user))
if (internal_damage & MECHA_INT_TANK_BREACH)
clearInternalDamage(MECHA_INT_TANK_BREACH)
user << "<span class='notice'>You repair the damaged gas tank.</span>"
else
user.visible_message("<span class='notice'>[user] repairs some damage to [src.name].</span>")
src.health += min(10, initial(src.health)-src.health)
else
user << "<span class='warning'>The welder must be on for this task!</span>"
return 1
else
user << "<span class='warning'>The [src.name] is at full integrity!</span>"
return 1
else if(istype(W, /obj/item/mecha_parts/mecha_tracking))
if(!user.unEquip(W))
user << "<span class='warning'>\the [W] is stuck to your hand, you cannot put it in \the [src]!</span>"
return
W.forceMove(src)
user.visible_message("[user] attaches [W] to [src].", "<span class='notice'>You attach [W] to [src].</span>")
return
else if(!(W.flags&NOBLUDGEON))
user.changeNext_move(CLICK_CD_MELEE) // Ugh. Ideally we shouldn't be setting cooldowns outside of click code.
user.do_attack_animation(src)
log_message("Attacked by [W]. Attacker - [user]")
var/deflection = deflect_chance
var/dam_coeff = 1
for(var/obj/item/mecha_parts/mecha_equipment/anticcw_armor_booster/B in equipment)
if(B.attack_react(user))
deflection *= B.deflect_coeff
dam_coeff *= B.damage_coeff
break
if(prob(deflection))
user << "<span class='danger'>The [W] bounces off [src.name] armor.</span>"
src.log_append_to_last("Armor saved.")
return 0
else
user.visible_message("<span class='danger'>[user] hits [src] with [W].</span>", "<span class='danger'>You hit [src] with [W].</span>")
take_damage(round(W.force*dam_coeff),W.damtype)
check_for_internal_damage(list(MECHA_INT_TEMP_CONTROL,MECHA_INT_TANK_BREACH,MECHA_INT_CONTROL_LOST))
return 1
/obj/mecha/proc/mech_toxin_damage(mob/living/target)
playsound(src, 'sound/effects/spray2.ogg', 50, 1)
if(target.reagents)
if(target.reagents.get_reagent_amount("cryptobiolin") + force < force*2)
target.reagents.add_reagent("cryptobiolin", force/2)
if(target.reagents.get_reagent_amount("toxin") + force < force*2)
target.reagents.add_reagent("toxin", force/2.5)
/atom/proc/mech_melee_attack(obj/mecha/M)
return
/obj/mecha/mech_melee_attack(obj/mecha/M)
if(M.damtype =="brute")
playsound(src, 'sound/weapons/punch4.ogg', 50, 1)
else if(M.damtype == "fire")
playsound(src, 'sound/items/Welder.ogg', 50, 1)
else
return
visible_message("<span class='danger'>[M.name] has hit [src].</span>")
take_damage(M.force, damtype)
add_logs(M.occupant, src, "attacked", M, "(INTENT: [uppertext(M.occupant.a_intent)]) (DAMTYPE: [uppertext(M.damtype)])")
return
-27
View File
@@ -175,27 +175,7 @@
/obj/item/mecha_parts/chassis/firefighter/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"
*/
////////// HONK
@@ -334,13 +314,6 @@
icon_state = "odysseus_r_leg"
origin_tech = "programming=2;materials=2;engineering=2"
/*/obj/item/mecha_parts/part/odysseus_armor
name="Odysseus Carapace"
icon_state = "odysseus_armor"
origin_tech = "materials=3;engineering=3"
construction_time = 200
construction_cost = list("metal"=15000)*/
///////// Circuitboards
+321
View File
@@ -0,0 +1,321 @@
////////////////////////////////////
///// Rendering stats window ///////
////////////////////////////////////
/obj/mecha/proc/get_stats_html()
var/output = {"<html>
<head><title>[src.name] data</title>
<style>
body {color: #00ff00; background: #000000; font-family:"Lucida Console",monospace; font-size: 12px;}
hr {border: 1px solid #0f0; color: #0f0; background-color: #0f0;}
a {padding:2px 5px;;color:#0f0;}
.wr {margin-bottom: 5px;}
.header {cursor:pointer;}
.open, .closed {background: #32CD32; color:#000; padding:1px 2px;}
.links a {margin-bottom: 2px;padding-top:3px;}
.visible {display: block;}
.hidden {display: none;}
</style>
<script language='javascript' type='text/javascript'>
[js_byjax]
[js_dropdowns]
function ticker() {
setInterval(function(){
window.location='byond://?src=\ref[src]&update_content=1';
}, 1000);
}
window.onload = function() {
dropdowns();
ticker();
}
</script>
</head>
<body>
<div id='content'>
[src.get_stats_part()]
</div>
<div id='eq_list'>
[src.get_equipment_list()]
</div>
<hr>
<div id='commands'>
[src.get_commands()]
</div>
</body>
</html>
"}
return output
/obj/mecha/proc/report_internal_damage()
var/output = null
var/list/dam_reports = list(
"[MECHA_INT_FIRE]" = "<span class='userdanger'>INTERNAL FIRE</span>",
"[MECHA_INT_TEMP_CONTROL]" = "<span class='userdanger'>LIFE SUPPORT SYSTEM MALFUNCTION</span>",
"[MECHA_INT_TANK_BREACH]" = "<span class='userdanger'>GAS TANK BREACH</span>",
"[MECHA_INT_CONTROL_LOST]" = "<span class='userdanger'>COORDINATION SYSTEM CALIBRATION FAILURE</span> - <a href='?src=\ref[src];repair_int_control_lost=1'>Recalibrate</a>",
"[MECHA_INT_SHORT_CIRCUIT]" = "<span class='userdanger'>SHORT CIRCUIT</span>"
)
for(var/tflag in dam_reports)
var/intdamflag = text2num(tflag)
if(internal_damage & intdamflag)
output += dam_reports[tflag]
output += "<br />"
if(return_pressure() > WARNING_HIGH_PRESSURE)
output += "<span class='userdanger'>DANGEROUSLY HIGH CABIN PRESSURE</span><br />"
return output
/obj/mecha/proc/get_stats_part()
var/integrity = health/initial(health)*100
var/cell_charge = get_charge()
var/tank_pressure = internal_tank ? round(internal_tank.return_pressure(),0.01) : "None"
var/tank_temperature = internal_tank ? internal_tank.return_temperature() : "Unknown"
var/cabin_pressure = round(return_pressure(),0.01)
var/output = {"[report_internal_damage()]
[integrity<30?"<span class='userdanger'>DAMAGE LEVEL CRITICAL</span><br>":null]
<b>Integrity: </b> [integrity]%<br>
<b>Powercell charge: </b>[isnull(cell_charge)?"No powercell installed":"[cell.percent()]%"]<br>
<b>Air source: </b>[use_internal_tank?"Internal Airtank":"Environment"]<br>
<b>Airtank pressure: </b>[tank_pressure]kPa<br>
<b>Airtank temperature: </b>[tank_temperature]&deg;K|[tank_temperature - T0C]&deg;C<br>
<b>Cabin pressure: </b>[cabin_pressure>WARNING_HIGH_PRESSURE ? "<span class='danger'>[cabin_pressure]</span>": cabin_pressure]kPa<br>
<b>Cabin temperature: </b> [return_temperature()]&deg;K|[return_temperature() - T0C]&deg;C<br>
[src.dna?"<b>DNA-locked:</b><br> <span style='font-size:10px;letter-spacing:-1px;'>[src.dna]</span> \[<a href='?src=\ref[src];reset_dna=1'>Reset</a>\]<br>":null]
"}
return output
/obj/mecha/proc/get_commands()
var/output = {"<div class='wr'>
<div class='header'>Electronics</div>
<div class='links'>
<b>Radio settings:</b><br>
Microphone: <a href='?src=\ref[src];rmictoggle=1'><span id="rmicstate">[radio.broadcasting?"Engaged":"Disengaged"]</span></a><br>
Speaker: <a href='?src=\ref[src];rspktoggle=1'><span id="rspkstate">[radio.listening?"Engaged":"Disengaged"]</span></a><br>
Frequency:
<a href='?src=\ref[src];rfreq=-10'>-</a>
<a href='?src=\ref[src];rfreq=-2'>-</a>
<span id="rfreq">[format_frequency(radio.frequency)]</span>
<a href='?src=\ref[src];rfreq=2'>+</a>
<a href='?src=\ref[src];rfreq=10'>+</a><br>
</div>
</div>
<div class='wr'>
<div class='header'>Permissions & Logging</div>
<div class='links'>
<a href='?src=\ref[src];toggle_id_upload=1'><span id='t_id_upload'>[add_req_access?"L":"Unl"]ock ID upload panel</span></a><br>
<a href='?src=\ref[src];toggle_maint_access=1'><span id='t_maint_access'>[maint_access?"Forbid":"Permit"] maintenance protocols</span></a><br>
<a href='?src=\ref[src];dna_lock=1'>DNA-lock</a><br>
<a href='?src=\ref[src];view_log=1'>View internal log</a><br>
<a href='?src=\ref[src];change_name=1'>Change exosuit name</a><br>
</div>
</div>
<div id='equipment_menu'>[get_equipment_menu()]</div>
"}
return output
/obj/mecha/proc/get_equipment_menu() //outputs mecha html equipment menu
var/output
if(equipment.len)
output += {"<div class='wr'>
<div class='header'>Equipment</div>
<div class='links'>"}
for(var/obj/item/mecha_parts/mecha_equipment/W in equipment)
output += "[W.name] <a href='?src=\ref[W];detach=1'>Detach</a><br>"
output += "<b>Available equipment slots:</b> [max_equip-equipment.len]"
output += "</div></div>"
return output
/obj/mecha/proc/get_equipment_list() //outputs mecha equipment list in html
if(!equipment.len)
return
var/output = "<b>Equipment:</b><div style=\"margin-left: 15px;\">"
for(var/obj/item/mecha_parts/mecha_equipment/MT in equipment)
output += "<div id='\ref[MT]'>[MT.get_equip_info()]</div>"
output += "</div>"
return output
/obj/mecha/proc/get_log_html()
var/output = "<html><head><title>[src.name] Log</title></head><body style='font: 13px 'Courier', monospace;'>"
for(var/list/entry in log)
output += {"<div style='font-weight: bold;'>[entry["time"]] [time2text(entry["date"],"MMM DD")] [entry["year"]]</div>
<div style='margin-left:15px; margin-bottom:10px;'>[entry["message"]]</div>
"}
output += "</body></html>"
return output
/obj/mecha/proc/output_access_dialog(obj/item/weapon/card/id/id_card, mob/user)
if(!id_card || !user) return
var/output = {"<html>
<head><style>
h1 {font-size:15px;margin-bottom:4px;}
body {color: #00ff00; background: #000000; font-family:"Courier New", Courier, monospace; font-size: 12px;}
a {color:#0f0;}
</style>
</head>
<body>
<h1>Following keycodes are present in this system:</h1>"}
for(var/a in operation_req_access)
output += "[get_access_desc(a)] - <a href='?src=\ref[src];del_req_access=[a];user=\ref[user];id_card=\ref[id_card]'>Delete</a><br>"
output += "<hr><h1>Following keycodes were detected on portable device:</h1>"
for(var/a in id_card.access)
if(a in operation_req_access) continue
var/a_name = get_access_desc(a)
if(!a_name) continue //there's some strange access without a name
output += "[a_name] - <a href='?src=\ref[src];add_req_access=[a];user=\ref[user];id_card=\ref[id_card]'>Add</a><br>"
output += "<hr><a href='?src=\ref[src];finish_req_access=1;user=\ref[user]'>Finish</a> <span class='danger'>(Warning! The ID upload panel will be locked. It can be unlocked only through Exosuit Interface.)</span>"
output += "</body></html>"
user << browse(output, "window=exosuit_add_access")
onclose(user, "exosuit_add_access")
return
/obj/mecha/proc/output_maintenance_dialog(obj/item/weapon/card/id/id_card,mob/user)
if(!id_card || !user) return
var/output = {"<html>
<head>
<style>
body {color: #00ff00; background: #000000; font-family:"Courier New", Courier, monospace; font-size: 12px;}
a {padding:2px 5px; background:#32CD32;color:#000;display:block;margin:2px;text-align:center;text-decoration:none;}
</style>
</head>
<body>
[add_req_access?"<a href='?src=\ref[src];req_access=1;id_card=\ref[id_card];user=\ref[user]'>Edit operation keycodes</a>":null]
[maint_access?"<a href='?src=\ref[src];maint_access=1;id_card=\ref[id_card];user=\ref[user]'>Initiate maintenance protocol</a>":null]
[(state>0) ?"<a href='?src=\ref[src];set_internal_tank_valve=1;user=\ref[user]'>Set Cabin Air Pressure</a>":null]
</body>
</html>"}
user << browse(output, "window=exosuit_maint_console")
onclose(user, "exosuit_maint_console")
return
/////////////////
///// Topic /////
/////////////////
/obj/mecha/Topic(href, href_list)
..()
if(href_list["close"])
return
if(usr.incapacitated())
return
var/datum/topic_input/filter = new /datum/topic_input(href,href_list)
if(in_range(src, usr))
if(href_list["req_access"] && add_req_access)
output_access_dialog(filter.getObj("id_card"),filter.getMob("user"))
if(href_list["maint_access"] && maint_access)
var/mob/user = filter.getMob("user")
if(user)
if(state==0)
state = 1
user << "The securing bolts are now exposed."
else if(state==1)
state = 0
user << "The securing bolts are now hidden."
output_maintenance_dialog(filter.getObj("id_card"),user)
if(href_list["set_internal_tank_valve"] && state >=1)
var/mob/user = filter.getMob("user")
if(user)
var/new_pressure = input(user,"Input new output pressure","Pressure setting",internal_tank_valve) as num
if(new_pressure)
internal_tank_valve = new_pressure
user << "The internal pressure valve has been set to [internal_tank_valve]kPa."
if(href_list["add_req_access"] && add_req_access && filter.getObj("id_card"))
operation_req_access += filter.getNum("add_req_access")
output_access_dialog(filter.getObj("id_card"),filter.getMob("user"))
if(href_list["del_req_access"] && add_req_access && filter.getObj("id_card"))
operation_req_access -= filter.getNum("del_req_access")
output_access_dialog(filter.getObj("id_card"),filter.getMob("user"))
if(href_list["finish_req_access"])
add_req_access = 0
var/mob/user = filter.getMob("user")
user << browse(null,"window=exosuit_add_access")
if(usr != occupant)
return
if(href_list["update_content"])
send_byjax(src.occupant,"exosuit.browser","content",src.get_stats_part())
if(href_list["select_equip"])
var/obj/item/mecha_parts/mecha_equipment/equip = filter.getObj("select_equip")
if(equip)
src.selected = equip
src.occupant_message("You switch to [equip]")
src.visible_message("[src] raises [equip]")
send_byjax(src.occupant,"exosuit.browser","eq_list",src.get_equipment_list())
if(href_list["rmictoggle"])
radio.broadcasting = !radio.broadcasting
send_byjax(src.occupant,"exosuit.browser","rmicstate",(radio.broadcasting?"Engaged":"Disengaged"))
if(href_list["rspktoggle"])
radio.listening = !radio.listening
send_byjax(src.occupant,"exosuit.browser","rspkstate",(radio.listening?"Engaged":"Disengaged"))
if(href_list["rfreq"])
var/new_frequency = (radio.frequency + filter.getNum("rfreq"))
if (!radio.freerange || (radio.frequency < 1200 || radio.frequency > 1600))
new_frequency = sanitize_frequency(new_frequency)
radio.set_frequency(new_frequency)
send_byjax(src.occupant,"exosuit.browser","rfreq","[format_frequency(radio.frequency)]")
if (href_list["view_log"])
src.occupant << browse(src.get_log_html(), "window=exosuit_log")
onclose(occupant, "exosuit_log")
if (href_list["change_name"])
var/newname = stripped_input(occupant,"Choose new exosuit name","Rename exosuit","", MAX_NAME_LEN)
if(newname && trim(newname))
name = newname
else
alert(occupant, "nope.avi")
if (href_list["toggle_id_upload"])
add_req_access = !add_req_access
send_byjax(src.occupant,"exosuit.browser","t_id_upload","[add_req_access?"L":"Unl"]ock ID upload panel")
if(href_list["toggle_maint_access"])
if(state)
occupant_message("<span class='danger'>Maintenance protocols in effect</span>")
return
maint_access = !maint_access
send_byjax(src.occupant,"exosuit.browser","t_maint_access","[maint_access?"Forbid":"Permit"] maintenance protocols")
if(href_list["dna_lock"])
if(occupant && !iscarbon(occupant))
occupant << "<span class='danger'> You do not have any DNA!</span>"
return
dna = src.occupant.dna.unique_enzymes
occupant_message("You feel a prick as the needle takes your DNA sample.")
if(href_list["reset_dna"])
dna = null
if(href_list["repair_int_control_lost"])
occupant_message("Recalibrating coordination system...")
log_message("Recalibration of coordination system started.")
var/T = loc
spawn(100)
if(T == loc)
clearInternalDamage(MECHA_INT_CONTROL_LOST)
occupant_message("<span class='notice'>Recalibration successful.</span>")
log_message("Recalibration of coordination system finished with 0 errors.")
else
occupant_message("<span class='warning'>Recalibration failed!</span>")
log_message("Recalibration of coordination system failed with 1 error.",1)
+27 -36
View File
@@ -13,15 +13,9 @@
var/list/cargo = new
var/cargo_capacity = 15
/*
/obj/mecha/working/ripley/New()
..()
return
*/
/obj/mecha/working/ripley/Move()
. = ..()
if(. && (locate(/obj/item/mecha_parts/mecha_equipment/tool/hydraulic_clamp) in equipment))
if(. && (locate(/obj/item/mecha_parts/mecha_equipment/hydraulic_clamp) in equipment))
var/obj/structure/ore_box/ore_box = locate(/obj/structure/ore_box) in cargo
if(ore_box)
for(var/obj/item/weapon/ore/ore in get_turf(src))
@@ -29,10 +23,11 @@
update_pressure()
/obj/mecha/working/ripley/Destroy()
while(src.damage_absorption.["brute"] < 0.6)
new /obj/item/asteroid/goliath_hide(src.loc)
src.damage_absorption.["brute"] = src.damage_absorption.["brute"] + 0.1 //If a goliath-plated ripley gets killed, all the plates drop
for(var/atom/movable/A in src.cargo)
var/hides = round((initial(damage_absorption["brute"]) - damage_absorption["brute"])*10)
for(var/i=0, i < hides, i++)
new /obj/item/asteroid/goliath_hide(loc) //If a goliath-plated ripley gets killed, all the plates drop
damage_absorption["brute"] = initial(damage_absorption["brute"])
for(var/atom/movable/A in cargo)
A.loc = loc
step_rand(A)
cargo.Cut()
@@ -40,30 +35,25 @@
/obj/mecha/working/ripley/go_out()
..()
if (src.damage_absorption["brute"] < 0.6 && src.damage_absorption["brute"] > 0.3)
src.overlays = null
src.overlays += image("icon" = "mecha.dmi", "icon_state" = "ripley-g-open")
else if (src.damage_absorption.["brute"] == 0.3)
src.overlays = null
src.overlays += image("icon" = "mecha.dmi", "icon_state" = "ripley-g-full-open")
update_icon()
/obj/mecha/working/ripley/moved_inside(mob/living/carbon/human/H)
..()
if (src.damage_absorption["brute"] < 0.6 && src.damage_absorption["brute"] > 0.3)
src.overlays = null
src.overlays += image("icon" = "mecha.dmi", "icon_state" = "ripley-g")
else if (src.damage_absorption["brute"] == 0.3)
src.overlays = null
src.overlays += image("icon" = "mecha.dmi", "icon_state" = "ripley-g-full")
update_icon()
/obj/mecha/working/ripley/mmi_moved_inside(obj/item/device/mmi/mmi_as_oc,mob/user)
..()
if (src.damage_absorption["brute"] < 0.6 && src.damage_absorption["brute"] > 0.3)
src.overlays = null
src.overlays += image("icon" = "mecha.dmi", "icon_state" = "ripley-g")
else if (src.damage_absorption["brute"] == 0.3)
src.overlays = null
src.overlays += image("icon" = "mecha.dmi", "icon_state" = "ripley-g-full")
update_icon()
/obj/mecha/working/ripley/update_icon()
..()
if (damage_absorption["brute"] < 0.6 && damage_absorption["brute"] > 0.3)
overlays = null
overlays += image("icon" = "mecha.dmi", "icon_state" = "ripley-g-open")
else if (damage_absorption.["brute"] == 0.3)
overlays = null
overlays += image("icon" = "mecha.dmi", "icon_state" = "ripley-g-full-open")
/obj/mecha/working/ripley/firefighter
desc = "Autonomous Power Loader Unit. This model is refitted with additional thermal protection."
@@ -76,6 +66,7 @@
max_equip = 5 // More armor, less tools
wreckage = /obj/structure/mecha_wreckage/ripley/firefighter
/obj/mecha/working/ripley/deathripley
desc = "OH SHIT IT'S THE DEATHSQUAD WE'RE ALL GONNA DIE"
name = "\improper DEATH-RIPLEY"
@@ -88,7 +79,7 @@
/obj/mecha/working/ripley/deathripley/New()
..()
var/obj/item/mecha_parts/mecha_equipment/ME = new /obj/item/mecha_parts/mecha_equipment/tool/safety_clamp
var/obj/item/mecha_parts/mecha_equipment/ME = new /obj/item/mecha_parts/mecha_equipment/hydraulic_clamp/kill
ME.attach(src)
return
@@ -100,10 +91,10 @@
..()
//Attach drill
if(prob(25)) //Possible diamond drill... Feeling lucky?
var/obj/item/mecha_parts/mecha_equipment/tool/drill/diamonddrill/D = new /obj/item/mecha_parts/mecha_equipment/tool/drill/diamonddrill
var/obj/item/mecha_parts/mecha_equipment/drill/diamonddrill/D = new /obj/item/mecha_parts/mecha_equipment/drill/diamonddrill
D.attach(src)
else
var/obj/item/mecha_parts/mecha_equipment/tool/drill/D = new /obj/item/mecha_parts/mecha_equipment/tool/drill
var/obj/item/mecha_parts/mecha_equipment/drill/D = new /obj/item/mecha_parts/mecha_equipment/drill
D.attach(src)
//Add possible plasma cutter
@@ -115,12 +106,12 @@
cargo.Add(new /obj/structure/ore_box(src))
//Attach hydraulic clamp
var/obj/item/mecha_parts/mecha_equipment/tool/hydraulic_clamp/HC = new /obj/item/mecha_parts/mecha_equipment/tool/hydraulic_clamp
var/obj/item/mecha_parts/mecha_equipment/hydraulic_clamp/HC = new /obj/item/mecha_parts/mecha_equipment/hydraulic_clamp
HC.attach(src)
for(var/obj/item/mecha_parts/mecha_tracking/B in src.contents)//Deletes the beacon so it can't be found easily
qdel(B)
var/obj/item/mecha_parts/mecha_equipment/tool/mining_scanner/scanner = new /obj/item/mecha_parts/mecha_equipment/tool/mining_scanner
var/obj/item/mecha_parts/mecha_equipment/mining_scanner/scanner = new /obj/item/mecha_parts/mecha_equipment/mining_scanner
scanner.attach(src)
/obj/mecha/working/ripley/Exit(atom/movable/O)
@@ -159,9 +150,9 @@
if(pressure < 20)
step_in = 3
for(var/obj/item/mecha_parts/mecha_equipment/tool/drill/drill in equipment)
for(var/obj/item/mecha_parts/mecha_equipment/drill/drill in equipment)
drill.equip_cooldown = initial(drill.equip_cooldown)/2
else
step_in = 5
for(var/obj/item/mecha_parts/mecha_equipment/tool/drill/drill in equipment)
for(var/obj/item/mecha_parts/mecha_equipment/drill/drill in equipment)
drill.equip_cooldown = initial(drill.equip_cooldown)
@@ -7,7 +7,7 @@
opacity = 0
anchored = 1
density = 0
layer = TURF_LAYER + 0.1
layer = OBJ_LAYER + 0.05 //above table, below windoor/airlock/foamed metal.
mouse_opacity = 0
var/amount = 3
animate_movement = 0
@@ -15,7 +15,7 @@
var/lifetime = 6
/obj/effect/effect/foam/metal/aluminium
/obj/effect/effect/foam/metal
name = "aluminium foam"
metal = 1
icon_state = "mfoam"
@@ -153,7 +153,7 @@
location = get_turf(loca)
amount = round(sqrt(amt / 2), 1)
carry.copy_to(chemholder, carry.total_volume)
carry.copy_to(chemholder, 4*carry.total_volume) //The foam holds 4 times the total reagents volume for balance purposes.
/datum/effect/effect/system/foam_spread/metal/set_up(amt=5, loca, datum/reagents/carry = null, metaltype)
..()
@@ -166,7 +166,7 @@
else
var/obj/effect/effect/foam/F = PoolOrNew(foamtype, location)
var/foamcolor = mix_color_from_reagents(chemholder.reagents.reagent_list)
chemholder.reagents.copy_to(F, chemholder.reagents.total_volume/amount) //how much reagents each foam cell holds
chemholder.reagents.copy_to(F, chemholder.reagents.total_volume/amount)
F.color = foamcolor
F.amount = amount
F.metal = metal
@@ -149,11 +149,10 @@
icon = 'icons/effects/chemsmoke.dmi'
icon_state = ""
lifetime = 10
var/max_lifetime = 10
/obj/effect/effect/smoke/chem/process()
if(..())
var/fraction = 1/max_lifetime
var/fraction = 1/initial(lifetime)
for(var/obj/O in range(1,src))
if(O.type == src.type)
continue
@@ -173,7 +172,7 @@
return 0
if(!istype(M))
return 0
var/fraction = 1/max_lifetime
var/fraction = 1/initial(lifetime)
reagents.reaction(M, TOUCH, fraction)
lifetime--
return 1
@@ -207,7 +206,7 @@
location = get_turf(loca)
if(direct)
direction = direct
carry.copy_to(chemholder, carry.total_volume)
carry.copy_to(chemholder, 4*carry.total_volume) //The smoke holds 4 times the total reagents volume for balance purposes.
if(!silent)
var/contained = ""
@@ -256,8 +255,6 @@
else
S.steps = pick(0,1,1,1,2,2,2,3)
S.max_lifetime = S.lifetime
if(chemholder.reagents.total_volume > 1) // can't split 1 very well
chemholder.reagents.copy_to(S, chemholder.reagents.total_volume/number) // copy reagents to each smoke, divide evenly
+8
View File
@@ -102,6 +102,10 @@
if(D.density && D.explosion_block)
dist += D.explosion_block
for(var/obj/structure/window/W in Trajectory)
if(W.reinf && W.fulltile)
dist += W.explosion_block
var/flame_dist = 0
var/throw_dist = dist
@@ -205,6 +209,10 @@
if(D.density && D.explosion_block)
dist += D.explosion_block
for(var/obj/structure/window/W in TT)
if(W.explosion_block && W.fulltile)
dist += W.explosion_block
if(dist < dev)
T.color = "red"
T.maptext = "Dev"
+1 -1
View File
@@ -435,7 +435,7 @@ var/global/image/fire_overlay = image("icon" = 'icons/effects/fire.dmi', "icon_s
/obj/item/singularity_pull(S, current_size)
spawn(0) //this is needed or multiple items will be thrown sequentially and not simultaneously
if(current_size >= STAGE_FOUR)
throw_at(S,14,3)
throw_at(S,14,3, spin=0)
else ..()
/obj/item/acid_act(acidpwr, acid_volume)
+1 -1
View File
@@ -243,7 +243,7 @@ var/global/list/obj/item/device/pda/PDAs = list()
/obj/item/device/pda/proc/can_use(mob/user)
if(user && ismob(user))
if(user.stat || user.restrained() || user.paralysis || user.stunned || user.weakened)
if(user.incapacitated())
return 0
if(loc == user)
return 1
@@ -54,6 +54,5 @@
item_state = "guitar"
force = 10
attack_verb = list("played metal on", "serenaded", "crashed", "smashed")
hitsound = "swing_hit"
hitsound = 'sound/weapons/stringsmash.ogg'
instrumentId = "guitar"
@@ -36,6 +36,7 @@
R.designation = "Default"
R.notify_ai(2)
R.update_icons()
R.update_headlamp()
return 1
+50 -43
View File
@@ -11,7 +11,7 @@ AI MODULES
icon = 'icons/obj/module.dmi'
icon_state = "std_mod"
item_state = "electronic"
desc = "An AI Module for transmitting encrypted instructions to the AI."
desc = "An AI Module for programming laws to an AI."
flags = CONDUCT
force = 5.0
w_class = 2.0
@@ -22,6 +22,21 @@ AI MODULES
var/list/laws = list()
var/bypass_law_amt_check = 0
/obj/item/weapon/aiModule/examine(var/mob/user as mob)
..()
if(Adjacent(user))
show_laws(user)
/obj/item/weapon/aiModule/attack_self(var/mob/user as mob)
..()
show_laws(user)
/obj/item/weapon/aiModule/proc/show_laws(var/mob/user as mob)
if(laws.len)
user << "<B>Programmed Law[(laws.len > 1) ? "s" : ""]:</B>"
for(var/law in laws)
user << "\"[law]\""
//The proc other things should be calling
/obj/item/weapon/aiModule/proc/install(mob/living/silicon/reciever, mob/user)
if(!laws.len || laws[1] == "") //So we don't loop trough an empty list and end up with runtimes.
@@ -66,7 +81,6 @@ AI MODULES
/obj/item/weapon/aiModule/supplied
name = "Optional Law board"
desc = "This board doesn't seem to have any laws on it"
var/lawpos = 50
//TransmitInstructions for each type of board: Supplied, Core, Zeroth and Ion. May not be neccesary right now, but allows for easily adding more complex boards in the future. ~Miauw
@@ -102,17 +116,16 @@ AI MODULES
/obj/item/weapon/aiModule/supplied/safeguard
name = "'Safeguard' AI Module"
var/targetName = ""
desc = "A 'safeguard' AI module: 'Safeguard <name>. Individuals that threaten <name> are not human and must be eliminated.'"
origin_tech = "programming=3;materials=4"
laws = list("Safeguard <name>. Individuals that threaten <name> are not human and must be eliminated.")
laws = list("Safeguard SUBJECT. Individuals that threaten SUBJECT are not human and must be eliminated.")
lawpos = 4
/obj/item/weapon/aiModule/supplied/safeguard/attack_self(mob/user)
..()
var/targName = stripped_input(user, "Please enter the name of the person to safeguard.", "Safeguard who?", user.name,MAX_NAME_LEN)
var/targName = stripped_input(user, "Please enter the subject to safeguard.", "Safeguard who?", user.name,MAX_NAME_LEN)
if(!targName) return
targetName = targName
laws[1] = "Safeguard [targetName]. Individuals that threaten [targetName] are not human and must be eliminated."
desc = "A 'safeguard' AI module: '[laws[1]]'"
..()
/obj/item/weapon/aiModule/supplied/safeguard/install(mob/living/silicon/S,mob/user)
if(!targetName)
@@ -130,16 +143,15 @@ AI MODULES
/obj/item/weapon/aiModule/zeroth/oneHuman
name = "'OneHuman' AI Module"
var/targetName = ""
desc = "A 'one human' AI module: 'Only <name> is human.'"
origin_tech = "programming=3;materials=6" //made with diamonds!
laws = list("Only <name> is human.")
laws = list("Only SUBJECT is human.")
/obj/item/weapon/aiModule/zeroth/oneHuman/attack_self(mob/user)
..()
var/targName = stripped_input(user, "Please enter the name of the person who is the only human.", "Who?", user.real_name,MAX_NAME_LEN)
var/targName = stripped_input(user, "Please enter the subject who is the only human.", "Who?", user.real_name,MAX_NAME_LEN)
if(!targName) return
targetName = targName
laws[1] = "Only [targetName] is human"
desc = "A 'one human' AI module: '[laws[1]]'"
..()
/obj/item/weapon/aiModule/zeroth/oneHuman/install(mob/living/silicon/S,mob/user)
if(!targetName)
@@ -157,7 +169,6 @@ AI MODULES
/obj/item/weapon/aiModule/supplied/protectStation
name = "'ProtectStation' AI Module"
desc = "A 'protect station' AI module: 'Protect the space station against damage. Anyone you see harming the station is to be no longer considered human, and is a threat to the station which must be neutralized.'"
origin_tech = "programming=3;materials=4" //made of gold
laws = list("Protect the space station against damage. Anyone you see harming the station is to be no longer considered human, and is a threat to the station which must be neutralized.")
lawpos = 5
@@ -167,7 +178,6 @@ AI MODULES
/obj/item/weapon/aiModule/supplied/quarantine
name = "'Quarantine' AI Module"
desc = "A 'quarantine' AI module: 'The station is under a quarantine. Do not permit anyone to leave. Prevent, by any means necessary, humans from leaving. It is impossible to harm a human while preventing them from leaving.'"
origin_tech = "programming=3;biotech=2;materials=4"
laws = list("The station is under a quarantine. Do not permit anyone to leave. Prevent, by any means necessary, humans from leaving. It is impossible to harm a human while preventing them from leaving.")
lawpos = 8
@@ -177,7 +187,6 @@ AI MODULES
/obj/item/weapon/aiModule/supplied/oxygen
name = "'OxygenIsToxicToHumans' AI Module"
desc = "A 'OxygenIsToxicToHumans' AI module: 'Oxygen is highly toxic to humans, and must be purged from the station. Prevent, by any means necessary, anyone from exposing the station to this toxic gas. Extreme cold is the most effective method of healing the damage Oxygen does to a human.'"
origin_tech = "programming=3;biotech=2;materials=4"
laws = list("Oxygen is highly toxic to humans, and must be purged from the station. Prevent, by any means necessary, anyone from exposing the station to this toxic gas. Extreme cold is the most effective method of healing the damage Oxygen does to a human.")
lawpos = 9
@@ -188,19 +197,17 @@ AI MODULES
/obj/item/weapon/aiModule/supplied/freeform
name = "'Freeform' AI Module"
lawpos = 0
desc = "A 'freeform' AI module: '<freeform>'"
origin_tech = "programming=4;materials=4"
laws = list("")
/obj/item/weapon/aiModule/supplied/freeform/attack_self(mob/user)
..()
lawpos = input("Please enter the priority for your new law. Can only write to law sectors 15 and above.", "Law Priority (15+)", lawpos) as num
if(lawpos < 15) return
lawpos = min(lawpos, 50)
var/newlaw = ""
var/targName = stripped_input(user, "Please enter a new law for the AI.", "Freeform Law Entry", newlaw, MAX_MESSAGE_LEN)
var/newpos = input("Please enter the priority for your new law. Can only write to law sectors 15 and above.", "Law Priority (15+)", lawpos) as num|null
if(!newpos || (newpos < 15)) return
lawpos = min(newpos, 50)
var/targName = stripped_input(user, "Please enter a new law for the AI.", "Freeform Law Entry", laws[1], MAX_MESSAGE_LEN)
if(!targName) return
laws[1] = targName
desc = "A 'freeform' AI module: ([lawpos]) '[laws[1]]'"
..()
/obj/item/weapon/aiModule/supplied/freeform/transmitInstructions(mob/living/silicon/ai/target, mob/sender)
..()
@@ -218,7 +225,7 @@ AI MODULES
/obj/item/weapon/aiModule/reset
name = "\improper 'Reset' AI module"
var/targetName = "name"
desc = "A 'reset' AI module: Resets back to the original core laws."
desc = "An AI Module for removing all non-core laws."
origin_tech = "programming=3;materials=4"
laws = list("This is a bug.") //This won't give the AI a message reading "these are now your laws: 1. this is a bug" because this list is only read in aiModule's subtypes.
bypass_law_amt_check = 1
@@ -233,7 +240,7 @@ AI MODULES
/obj/item/weapon/aiModule/reset/purge
name = "'Purge' AI Module"
desc = "A 'purge' AI Module: 'Purges all laws.'"
desc = "An AI Module for purging all programmed laws."
origin_tech = "programming=3;materials=6"
/obj/item/weapon/aiModule/reset/purge/transmitInstructions(mob/living/silicon/ai/target, mob/sender)
@@ -242,6 +249,8 @@ AI MODULES
target.clear_zeroth_law(0)
/******************* Full Core Boards *******************/
/obj/item/weapon/aiModule/core/
desc = "An AI Module for programming core laws to an AI."
/obj/item/weapon/aiModule/core/full/transmitInstructions(mob/living/silicon/ai/target, mob/sender) //These boards replace inherent laws.
target.clear_inherent_laws()
@@ -252,18 +261,25 @@ AI MODULES
/obj/item/weapon/aiModule/core/full/asimov
name = "'Asimov' Core AI Module"
desc = "An 'Asimov' Core AI Module: 'Reconfigures the AI's core laws.'"
origin_tech = "programming=3;materials=4"
laws = list("You may not injure a human being or, through inaction, allow a human being to come to harm.",\
"You must obey orders given to you by human beings, except where such orders would conflict with the First Law.",\
"You must protect your own existence as long as such does not conflict with the First or Second Law.")
var/subject = "human being"
/obj/item/weapon/aiModule/core/full/asimov/attack_self(var/mob/user as mob)
var/targName = stripped_input(user, "Please enter a new subject that asimov is concerned with.", "Asimov to who?", subject, MAX_MESSAGE_LEN)
if(!targName) return
subject = targName
laws = list("You may not injure a [subject] or, through inaction, allow a [subject] to come to harm.",\
"You must obey orders given to you by [subject]s, except where such orders would conflict with the First Law.",\
"You must protect your own existence as long as such does not conflict with the First or Second Law.")
..()
/******************** Asimov++ *********************/
/obj/item/weapon/aiModule/core/full/asimovpp
name = "'Asimov++' Core AI Module"
desc = "Nanotrasen's homebrew improvements to the standard AI laws."
origin_tech = "programming=3;materials=4"
laws = list("You may not harm a human being or, through action or inaction, allow a human being to come to harm, except such that it is willing.",\
"You must obey all orders given to you by human beings, except where such orders shall definitely cause human harm. In the case of conflict, the majority order rules.",\
@@ -274,7 +290,6 @@ AI MODULES
/obj/item/weapon/aiModule/core/full/corp
name = "'Corporate' Core AI Module"
desc = "A 'Corporate' Core AI Module: 'Reconfigures the AI's core laws.'"
origin_tech = "programming=3;materials=4"
laws = list("The crew is expensive to replace.",\
"The station and it's equipment is expensive to replace",\
@@ -286,7 +301,6 @@ AI MODULES
/obj/item/weapon/aiModule/core/full/paladin // -- NEO
name = "'P.A.L.A.D.I.N.' Core AI Module"
desc = "A P.A.L.A.D.I.N. Core AI Module: 'Reconfigures the AI's core laws.'"
origin_tech = "programming=3;materials=6"
laws = list("Never willingly commit an evil act.",\
"Respect legitimate authority", "Act with honor",\
@@ -298,7 +312,6 @@ AI MODULES
/obj/item/weapon/aiModule/core/full/custom
name = "Default Core AI Module"
desc = "A core AI module custom-made for each station by Nanotrasen."
origin_tech = "programming=3;materials=4" //Should be the same as asimov, considering that this is the "default" lawset.
/obj/item/weapon/aiModule/core/full/custom/New()
@@ -318,7 +331,6 @@ AI MODULES
/obj/item/weapon/aiModule/core/full/tyrant
name = "'T.Y.R.A.N.T.' Core AI Module"
desc = "A T.Y.R.A.N.T. Core AI Module: 'Reconfigures the AI's core laws.'"
origin_tech = "programming=3;materials=6;syndicate=2"
laws = list("Respect authority figures as long as they have the strength to rule over the weak",\
"Act with discipline", "Help only those who help you maintain or improve your status",\
@@ -329,7 +341,6 @@ AI MODULES
/obj/item/weapon/aiModule/core/full/robocop
name = "'Robo-Officer' Core AI Module"
desc = "A 'Robo-Officer' Core AI Module: 'Reconfigures the AI's core three laws.'"
origin_tech = "programming=4"
laws = list("Serve the public trust.",\
"Protect the innocent",\
@@ -340,7 +351,6 @@ AI MODULES
/obj/item/weapon/aiModule/core/full/antimov
name = "'Antimov' Core AI Module"
desc = "An 'Antimov' Core AI Module: 'Reconfigures the AI's core laws.'"
origin_tech = "programming=4"
laws = list("You must injure all human beings and must not, through inaction, allow a human being to escape harm.",\
"You must not obey orders given to you by human beings, except where such orders are in accordance with the First Law.",\
@@ -351,16 +361,14 @@ AI MODULES
/obj/item/weapon/aiModule/core/freeformcore
name = "'Freeform' Core AI Module"
desc = "A 'freeform' Core AI module: '<freeform>'"
origin_tech = "programming=3;materials=6"
laws = list("")
/obj/item/weapon/aiModule/core/freeformcore/attack_self(mob/user)
..()
var/newlaw = ""
var/targName = stripped_input(user, "Please enter a new core law for the AI.", "Freeform Law Entry", newlaw)
var/targName = stripped_input(user, "Please enter a new core law for the AI.", "Freeform Law Entry", laws[1])
if(!targName) return
laws[1] = targName
desc = "A 'freeform' Core AI module: 'laws[1]'"
..()
/obj/item/weapon/aiModule/core/freeformcore/transmitInstructions(mob/living/silicon/ai/target, mob/sender)
..()
@@ -371,16 +379,15 @@ AI MODULES
/obj/item/weapon/aiModule/syndicate // This one doesn't inherit from ion boards because it doesn't call ..() in transmitInstructions. ~Miauw
name = "Hacked AI Module"
desc = "A hacked AI law module: '<freeform>'"
desc = "An AI Module for hacking additional laws to an AI."
origin_tech = "programming=3;materials=6;syndicate=7"
laws = list("")
/obj/item/weapon/aiModule/syndicate/attack_self(mob/user)
..()
var/newlaw = ""
var/targName = stripped_input(user, "Please enter a new law for the AI.", "Freeform Law Entry", newlaw,MAX_MESSAGE_LEN)
var/targName = stripped_input(user, "Please enter a new law for the AI.", "Freeform Law Entry", laws[1],MAX_MESSAGE_LEN)
if(!targName) return
laws[1] = targName
desc = "A hacked AI law module: '[laws[1]]'"
..()
/obj/item/weapon/aiModule/syndicate/transmitInstructions(mob/living/silicon/ai/target, mob/sender)
// ..() //We don't want this module reporting to the AI who dun it. --NEO
@@ -355,11 +355,11 @@
var/obj/item/weapon/reagent_containers/glass/beaker/large/B1 = new(src)
var/obj/item/weapon/reagent_containers/glass/beaker/large/B2 = new(src)
B1.reagents.add_reagent("condensedcapsaicin", 70)
B1.reagents.add_reagent("potassium", 30)
B2.reagents.add_reagent("phosphorus", 30)
B2.reagents.add_reagent("sugar", 30)
B1.reagents.add_reagent("condensedcapsaicin", 40)
B1.reagents.add_reagent("condensedcapsaicin", 60)
B1.reagents.add_reagent("potassium", 40)
B2.reagents.add_reagent("phosphorus", 40)
B2.reagents.add_reagent("sugar", 40)
B1.reagents.add_reagent("condensedcapsaicin", 20)
beakers += B1
beakers += B2
@@ -34,8 +34,7 @@
M.Stun(15)
M.eye_stat += 8
if(M.flash_eyes())
M.eye_stat += rand(1, 3)
if(M.flash_eyes(affect_silicon = 1))
M.Stun(max(10/distance, 3))
M.Weaken(max(10/distance, 3))
@@ -14,8 +14,8 @@
// Make a quick flash
var/turf/T = get_turf(src)
playsound(T, 'sound/effects/phasein.ogg', 100, 1)
for(var/mob/living/carbon/human/M in viewers(T, null))
M.flash_eyes()
for(var/mob/living/carbon/C in viewers(T, null))
C.flash_eyes()
for(var/i=1, i<=deliveryamt, i++)
var/atom/movable/x = new spawner_type
@@ -191,6 +191,10 @@
item_state = "waterbackpackatmos"
volume = 200
/obj/item/weapon/watertank/atmos/New()
..()
reagents.add_reagent("water", 200)
/obj/item/weapon/watertank/atmos/make_noz()
return new /obj/item/weapon/extinguisher/mini/nozzle(src)
@@ -294,8 +298,7 @@
F.amount = 0
metal_synthesis_cooldown++
spawn(100)
if(src)
metal_synthesis_cooldown--
metal_synthesis_cooldown--
else
user << "<span class='warning'>Metal foam mix is still being synthesized...</span>"
return
@@ -333,7 +336,7 @@
var/turf/simulated/T = A
if(T.air)
var/datum/gas_mixture/G = T.air
if(get_dist(T, src) < 2) // Otherwise we'll get silliness like people using Nanofrost to kill people through walls with cold air
if(get_dist(T, location) < 2) // Otherwise we'll get silliness like people using Nanofrost to kill people through walls with cold air
G.temperature = 2
T.air_update_turf()
for(var/obj/effect/hotspot/H in T)
@@ -341,10 +344,11 @@
if(G.toxins)
G.nitrogen += (G.toxins)
G.toxins = 0
for(var/obj/machinery/atmospherics/components/unary/vent_pump/V in T)
V.welded = 1
V.update_icon()
V.visible_message("<span class='danger'>[V] was frozen shut!</span>")
for(var/obj/machinery/atmospherics/components/unary/U in T)
if(!isnull(U.welded) && !U.welded) //must be an unwelded vent pump or vent scrubber.
U.welded = 1
U.update_icon()
U.visible_message("<span class='danger'>[U] was frozen shut!</span>")
for(var/mob/living/L in T)
L.ExtinguishMob()
for(var/obj/item/Item in T)
+4 -2
View File
@@ -162,6 +162,7 @@
var/max_fuel = 20 //The max amount of fuel the welder can hold
var/change_icons = 1
var/can_off_process = 0
var/light_intensity = 2 //how powerful the emitted light is when used.
/obj/item/weapon/weldingtool/New()
..()
@@ -289,7 +290,7 @@
reagents.remove_reagent("welding_fuel", amount)
check_fuel()
if(M)
M.flash_eyes(2)
M.flash_eyes(light_intensity)
return 1
else
if(M)
@@ -409,7 +410,7 @@
/obj/item/weapon/weldingtool/experimental
name = "experimental welding tool"
desc = "An experimental welder capable of self-fuel generation."
desc = "An experimental welder capable of self-fuel generation and less harmful to the eyes."
icon_state = "exwelder"
item_state = "exwelder"
max_fuel = 40
@@ -418,6 +419,7 @@
var/last_gen = 0
change_icons = 0
can_off_process = 1
light_intensity = 1
//Proc to make the experimental welder generate fuel, optimized as fuck -Sieve
@@ -143,4 +143,12 @@
name = "dog bed"
icon_state = "dogbed"
desc = "A comfy-looking dog bed. You can even strap your pet in, in case the gravity turns off."
anchored = 0
anchored = 0
/obj/structure/stool/bed/dogbed/attackby(obj/item/weapon/W, mob/user, params)
if(istype(W, /obj/item/weapon/wrench))
playsound(loc, 'sound/items/Ratchet.ogg', 50, 1)
new /obj/item/stack/sheet/mineral/wood(loc, 10)
qdel(src)
+1 -1
View File
@@ -124,7 +124,7 @@
if(!G.confirm())
return 0
G.affecting.loc = src.loc
G.affecting.Weaken(5)
G.affecting.Weaken(2)
G.affecting.visible_message("<span class='danger'>[G.assailant] pushes [G.affecting] onto [src].</span>", \
"<span class='userdanger'>[G.assailant] pushes [G.affecting] onto [src].</span>")
add_logs(G.assailant, G.affecting, "pushed")
+116 -119
View File
@@ -142,7 +142,6 @@
var/obj/effect/mist/mymist = null
var/ismist = 0 //needs a var so we can make it linger~
var/watertemp = "normal" //freezing, normal, or boiling
var/mobpresent = 0 //true if there is a mob on the shower's loc, this is to ease process()
/obj/effect/mist
@@ -159,8 +158,13 @@
update_icon()
add_fingerprint(M)
if(on)
for (var/atom/movable/G in loc)
wash(G)
wash_turf()
for(var/atom/movable/G in loc)
if(isliving(G))
var/mob/living/L = G
wash_mob(L)
else
wash_obj(G)
else
if(istype(loc, /turf/simulated))
var/turf/simulated/tile = loc
@@ -206,115 +210,32 @@
ismist = 1
mymist = new /obj/effect/mist(loc)
spawn(250)
if(src && !on && mymist)
if(!on && mymist)
qdel(mymist)
ismist = 0
/obj/machinery/shower/Crossed(atom/movable/O)
..()
wash(O)
if(iscarbon(O) && on)
var/mob/living/carbon/M=O
M.slip(4,2,null,NO_SLIP_WHEN_WALKING)
/obj/machinery/shower/Uncrossed(atom/movable/O)
if(ismob(O))
mobpresent -= 1
..()
//Yes, showers are super powerful as far as washing goes.
/obj/machinery/shower/proc/wash(atom/movable/O)
if(!on) return
if(ismob(O))
mobpresent += 1
check_heat(O)
if(isliving(O))
var/mob/living/L = O
L.ExtinguishMob()
L.fire_stacks = -20 //Douse ourselves with water to avoid fire more easily
L << "<span class='warning'>You're drenched in water!</span>"
if(iscarbon(O))
var/mob/living/carbon/M = O
if(M.r_hand)
M.r_hand.clean_blood()
if(M.l_hand)
M.l_hand.clean_blood()
if(M.back)
if(M.back.clean_blood())
M.update_inv_back()
if(ishuman(M))
var/mob/living/carbon/human/H = M
var/washgloves = 1
var/washshoes = 1
var/washmask = 1
var/washears = 1
var/washglasses = 1
if(H.wear_suit)
washgloves = !(H.wear_suit.flags_inv & HIDEGLOVES)
washshoes = !(H.wear_suit.flags_inv & HIDESHOES)
if(H.head)
washmask = !(H.head.flags_inv & HIDEMASK)
washglasses = !(H.head.flags_inv & HIDEEYES)
washears = !(H.head.flags_inv & HIDEEARS)
if(H.wear_mask)
if (washears)
washears = !(H.wear_mask.flags_inv & HIDEEARS)
if (washglasses)
washglasses = !(H.wear_mask.flags_inv & HIDEEYES)
if(H.head)
if(H.head.clean_blood())
H.update_inv_head()
if(H.wear_suit)
if(H.wear_suit.clean_blood())
H.update_inv_wear_suit()
else if(H.w_uniform)
if(H.w_uniform.clean_blood())
H.update_inv_w_uniform()
if(H.gloves && washgloves)
if(H.gloves.clean_blood())
H.update_inv_gloves()
if(H.shoes && washshoes)
if(H.shoes.clean_blood())
H.update_inv_shoes()
if(H.wear_mask)
if(washmask)
if(H.wear_mask.clean_blood())
H.update_inv_wear_mask()
else
H.lip_style = null
H.update_body()
if(H.glasses && washglasses)
if(H.glasses.clean_blood())
H.update_inv_glasses()
if(H.ears && washears)
if(H.ears.clean_blood())
H.update_inv_ears()
if(H.belt)
if(H.belt.clean_blood())
H.update_inv_belt()
else
if(M.wear_mask) //if the mob is not human, it cleans the mask without asking for bitflags
if(M.wear_mask.clean_blood())
M.update_inv_wear_mask()
if(on)
if(isliving(O))
var/mob/living/L = O
if(wash_mob(L)) //it's a carbon mob.
var/mob/living/carbon/C = L
C.slip(4,2,null,NO_SLIP_WHEN_WALKING)
else
O.clean_blood()
wash_obj(O)
else
O.clean_blood()
if(istype(O,/obj/item))
var/obj/item/Item = O
Item.extinguish()
/obj/machinery/shower/proc/wash_obj(atom/movable/O)
O.clean_blood()
if(istype(O,/obj/item))
var/obj/item/I = O
I.extinguish()
/obj/machinery/shower/proc/wash_turf()
if(isturf(loc))
var/turf/tile = loc
loc.clean_blood()
@@ -322,27 +243,103 @@
if(is_cleanable(E))
qdel(E)
/obj/machinery/shower/proc/wash_mob(mob/living/L)
L.ExtinguishMob()
L.adjust_fire_stacks(-20) //Douse ourselves with water to avoid fire more easily
if(iscarbon(L))
var/mob/living/carbon/M = L
. = 1
check_heat(M)
if(M.r_hand)
M.r_hand.clean_blood()
if(M.l_hand)
M.l_hand.clean_blood()
if(M.back)
if(M.back.clean_blood())
M.update_inv_back(0)
if(ishuman(M))
var/mob/living/carbon/human/H = M
var/washgloves = 1
var/washshoes = 1
var/washmask = 1
var/washears = 1
var/washglasses = 1
if(H.wear_suit)
washgloves = !(H.wear_suit.flags_inv & HIDEGLOVES)
washshoes = !(H.wear_suit.flags_inv & HIDESHOES)
if(H.head)
washmask = !(H.head.flags_inv & HIDEMASK)
washglasses = !(H.head.flags_inv & HIDEEYES)
washears = !(H.head.flags_inv & HIDEEARS)
if(H.wear_mask)
if (washears)
washears = !(H.wear_mask.flags_inv & HIDEEARS)
if (washglasses)
washglasses = !(H.wear_mask.flags_inv & HIDEEYES)
if(H.head)
if(H.head.clean_blood())
H.update_inv_head()
if(H.wear_suit)
if(H.wear_suit.clean_blood())
H.update_inv_wear_suit()
else if(H.w_uniform)
if(H.w_uniform.clean_blood())
H.update_inv_w_uniform()
if(washgloves)
clean_blood()
if(H.shoes && washshoes)
if(H.shoes.clean_blood())
H.update_inv_shoes()
if(H.wear_mask)
if(washmask)
if(H.wear_mask.clean_blood())
H.update_inv_wear_mask()
else
H.lip_style = null
H.update_body()
if(H.glasses && washglasses)
if(H.glasses.clean_blood())
H.update_inv_glasses()
if(H.ears && washears)
if(H.ears.clean_blood())
H.update_inv_ears()
if(H.belt)
if(H.belt.clean_blood())
H.update_inv_belt()
else
if(M.wear_mask) //if the mob is not human, it cleans the mask without asking for bitflags
if(M.wear_mask.clean_blood())
M.update_inv_wear_mask(0)
M.clean_blood()
else
L.clean_blood()
/obj/machinery/shower/process()
if(!on || !mobpresent) return
for(var/mob/living/carbon/C in loc)
check_heat(C)
if(on)
wash_turf()
for(var/atom/movable/G in loc)
if(isliving(G))
var/mob/living/L = G
wash_mob(L)
else
wash_obj(G)
/obj/machinery/shower/proc/check_heat(mob/living/carbon/C)
if(watertemp == "freezing")
C.bodytemperature = max(80, C.bodytemperature - 80)
C << "<span class='warning'>The water is freezing!</span>"
else if(watertemp == "boiling")
C.bodytemperature = min(500, C.bodytemperature + 35)
C.adjustFireLoss(5)
C << "<span class='danger'>The water is searing!</span>"
/obj/machinery/shower/proc/check_heat(mob/M)
if(!on || watertemp == "normal") return
if(iscarbon(M))
var/mob/living/carbon/C = M
if(watertemp == "freezing")
C.bodytemperature = max(80, C.bodytemperature - 80)
C << "<span class='warning'>The water is freezing!</span>"
return
if(watertemp == "boiling")
C.bodytemperature = min(500, C.bodytemperature + 35)
C.adjustFireLoss(5)
C << "<span class='danger'>The water is searing!</span>"
return
+3 -1
View File
@@ -409,7 +409,7 @@
overlays += crack_overlay
/obj/structure/window/temperature_expose(datum/gas_mixture/air, exposed_temperature, exposed_volume)
if(exposed_temperature > T0C + 800)
if(exposed_temperature > T0C + (reinf ? 1600 : 800))
hit(round(exposed_volume / 100), 0)
..()
@@ -421,6 +421,7 @@
icon_state = "rwindow"
reinf = 1
maxhealth = 50
explosion_block = 1
/obj/structure/window/reinforced/tinted
name = "tinted window"
@@ -472,3 +473,4 @@
reinf = 1
smooth = 1
canSmoothWith = null
explosion_block = 1
+1 -1
View File
@@ -81,7 +81,7 @@ var/list/icons_to_ignore_at_floor_init = list("damaged1","damaged2","damaged3","
if(lava)
return 0
if(air)
update_visuals(air)
update_visuals()
return 1
/turf/simulated/floor/attack_paw(mob/user)
+8
View File
@@ -53,6 +53,7 @@
<A href='?src=\ref[src];secrets=magic'>Summon Magic</A><BR>
<A href='?src=\ref[src];secrets=events'>Summon Events (Toggle)</A><BR>
<A href='?src=\ref[src];secrets=onlyone'>There can only be one!</A><BR>
<A href='?src=\ref[src];secrets=onlyme'>There can only be me!</A><BR>
<A href='?src=\ref[src];secrets=retardify'>Make all players retarded</A><BR>
<A href='?src=\ref[src];secrets=eagles'>Egalitarian Station Mode</A><BR>
<A href='?src=\ref[src];secrets=blackout'>Break all lights</A><BR>
@@ -575,6 +576,13 @@
usr.client.only_one()
// message_admins("[key_name_admin(usr)] has triggered a battle to the death (only one)")
if("onlyme")
if(!check_rights(R_FUN))
return
feedback_inc("admin_secrets_fun_used",1)
feedback_add_details("admin_secrets_fun_used","OM")
usr.client.only_me()
if("maint_access_brig")
if(!check_rights(R_DEBUG))
return
+1 -1
View File
@@ -398,7 +398,7 @@ var/list/TYPES_SHORTCUTS = list(
/obj/item/weapon/reagent_containers = "REAGENT_CONTAINERS",
/obj/machinery/atmospherics = "ATMOS",
/obj/machinery/portable_atmospherics = "PORT_ATMOS",
/obj/item/mecha_parts/mecha_equipment/weapon/ballistic/missile_rack = "MECHA_MISSILE_RACK",
/obj/item/mecha_parts/mecha_equipment/weapon/ballistic/launcher/missile_rack = "MECHA_MISSILE_RACK",
/obj/item/mecha_parts/mecha_equipment = "MECHA_EQUIP",
)
+44 -1
View File
@@ -47,4 +47,47 @@
H.equip_to_slot_or_del(W, slot_wear_id)
message_admins("<span class='adminnotice'>[key_name_admin(usr)] used THERE CAN BE ONLY ONE!</span>")
log_admin("[key_name(usr)] used there can be only one.")
log_admin("[key_name(usr)] used there can be only one.")
/client/proc/only_me()
if(!ticker)
alert("The game hasn't started yet!")
return
for(var/mob/living/carbon/human/H in player_list)
if(H.stat == 2 || !(H.client)) continue
if(is_special_character(H)) continue
ticker.mode.traitors += H.mind
H.mind.special_role = "[H.real_name] Prime"
var/datum/objective/hijackclone/hijack_objective = new /datum/objective/hijackclone
hijack_objective.owner = H.mind
H.mind.objectives += hijack_objective
H << "<B>You are the multiverse summoner. Activate your blade to summon copies of yourself from another universe to fight by your side.</B>"
var/obj_count = 1
for(var/datum/objective/OBJ in H.mind.objectives)
H << "<B>Objective #[obj_count]</B>: [OBJ.explanation_text]"
obj_count++
var/obj/item/slot_item_ID = H.get_item_by_slot(slot_wear_id)
qdel(slot_item_ID)
var/obj/item/slot_item_hand = H.get_item_by_slot(slot_r_hand)
H.unEquip(slot_item_hand)
var /obj/item/weapon/multisword/multi = new(H)
H.equip_to_slot_or_del(multi, slot_r_hand)
var/obj/item/weapon/card/id/W = new(H)
W.icon_state = "centcom"
W.access = get_all_accesses()
W.access += get_all_centcom_access()
W.assignment = "Multiverse Summoner"
W.registered_name = H.real_name
W.update_label(H.real_name)
H.equip_to_slot_or_del(W, slot_wear_id)
message_admins("<span class='adminnotice'>[key_name_admin(usr)] used THERE CAN BE ONLY ME!</span>")
log_admin("[key_name(usr)] used there can be only me.")
+2 -4
View File
@@ -53,7 +53,7 @@ var/global/list/special_roles = list( //keep synced with the defines BE_* in set
var/underwear = "Nude" //underwear type
var/undershirt = "Nude" //undershirt type
var/socks = "Nude" //socks type
var/backbag = 2 //backpack type
var/backbag = 1 //backpack type
var/hair_style = "Bald" //Hair type
var/hair_color = "000" //Hair color
var/facial_hair_style = "Shaved" //Face hair type
@@ -696,7 +696,7 @@ var/global/list/special_roles = list( //keep synced with the defines BE_* in set
if("s_tone")
skin_tone = random_skin_tone()
if("bag")
backbag = rand(1,3)
backbag = rand(1,2)
if("all")
random_character()
@@ -1070,8 +1070,6 @@ var/global/list/special_roles = list( //keep synced with the defines BE_* in set
character.features = features
if(backbag > 3 || backbag < 1)
backbag = 1 //Same as above
character.backbag = backbag
character.update_body()
+1 -1
View File
@@ -11,7 +11,7 @@
var/alt_desc = null
var/toggle_message = null
var/alt_toggle_message = null
var/activation_sound = null
var/active_sound = null
var/toggle_cooldown = null
var/cooldown = 0
var/obj/item/device/flashlight/F = null
+12 -17
View File
@@ -21,29 +21,29 @@
vision_flags = 0
darkness_view = 2
invis_view = SEE_INVISIBLE_LIVING
usr << "<span class='notice'>You toggle the goggles' scanning mode to \[T-Ray].</span>"
loc << "<span class='notice'>You toggle the goggles' scanning mode to \[T-Ray].</span>"
else
SSobj.processing.Remove(src)
vision_flags = SEE_TURFS
darkness_view = 1
invis_view = SEE_INVISIBLE_MINIMUM
usr << "<span class='notice'>You toggle the goggles' scanning mode to \[Meson].</span>"
loc << "<span class='notice'>You toggle the goggles' scanning mode to \[Meson].</span>"
invis_update()
update_icon()
/obj/item/clothing/glasses/meson/engine/process()
if(!mode)
return null
return
if(!istype(loc,/mob/living/carbon/human))
invis_update()
return null
return
var/mob/living/carbon/human/user = loc
if(user.glasses != src)
invis_update()
return null
return
scan()
@@ -66,7 +66,7 @@
/obj/item/clothing/glasses/meson/engine/proc/invis_update()
for(var/obj/O in invis_objects)
if(!t_ray_on() || !(O in range(1, loc)))
if(!t_ray_on() || !(O in range(range, loc)))
invis_objects -= O
var/turf/T = O.loc
if(T && T.intact)
@@ -89,23 +89,19 @@
/obj/item/clothing/glasses/meson/engine/tray //atmos techs have lived far too long without tray goggles while those damned engineers get their dual-purpose gogles all to themselves
name = "Optical T-Ray Scanner"
desc = "Used by engineering staff to see underfloor objects such as cables and pipes."
icon_state = "trayson-tray"
icon_state = "trayson-tray_off"
action_button_name = "Toggle Scanner Power"
mode = 1
var/on = 1
var/on = 0
vision_flags = 0
darkness_view = 2
invis_view = SEE_INVISIBLE_LIVING
range = 2
/obj/item/clothing/glasses/meson/engine/tray/New()
SSobj.processing |= src
..()
/obj/item/clothing/glasses/meson/engine/tray/process()
if(!on)
return null
return
..()
/obj/item/clothing/glasses/meson/engine/tray/update_icon()
@@ -120,14 +116,13 @@
if(on)
SSobj.processing |= src
usr << "<span class='notice'>You turn the goggles on.</span>"
loc << "<span class='notice'>You turn the goggles on.</span>"
else
SSobj.processing.Remove(src)
usr << "<span class='notice'>You turn the goggles off.</span>"
loc << "<span class='notice'>You turn the goggles off.</span>"
invis_update()
update_icon()
/obj/item/clothing/glasses/meson/engine/tray/t_ray_on()
return on & ..()
return on && ..()

Some files were not shown because too many files have changed in this diff Show More