diff --git a/README.md b/README.md
index dade37afd8e..5a182f9ddfd 100644
--- a/README.md
+++ b/README.md
@@ -8,7 +8,7 @@
[](http://forthebadge.com)
[](http://forthebadge.com)
-[Website](http://www.nanotrasen.se/) - [Code](https://github.com/ParadiseSS13/Paradise) - [Discord](https://discordapp.com/invite/gXZMc?utm_source=Discord%20Widget&utm_medium=Connect)
+[Website](https://nanotrasen.se/) - [Code](https://github.com/ParadiseSS13/Paradise) - [Discord](https://discordapp.com/invite/gXZMc?utm_source=Discord%20Widget&utm_medium=Connect)
---
diff --git a/SQL/paradise_schema.sql b/SQL/paradise_schema.sql
index bd90e0be9f0..8cf94d61835 100644
--- a/SQL/paradise_schema.sql
+++ b/SQL/paradise_schema.sql
@@ -266,7 +266,7 @@ CREATE TABLE `player` (
`UI_style` varchar(10) DEFAULT 'Midnight',
`UI_style_color` varchar(7) DEFAULT '#ffffff',
`UI_style_alpha` smallint(4) DEFAULT '255',
- `be_role` mediumtext NOT NULL,
+ `be_role` mediumtext,
`default_slot` smallint(4) DEFAULT '1',
`toggles` mediumint(8) DEFAULT '383',
`sound` mediumint(8) DEFAULT '31',
diff --git a/SQL/paradise_schema_prefixed.sql b/SQL/paradise_schema_prefixed.sql
index 94010ad1b74..d1b62ae3767 100644
--- a/SQL/paradise_schema_prefixed.sql
+++ b/SQL/paradise_schema_prefixed.sql
@@ -265,7 +265,7 @@ CREATE TABLE `SS13_player` (
`UI_style` varchar(10) DEFAULT 'Midnight',
`UI_style_color` varchar(7) DEFAULT '#ffffff',
`UI_style_alpha` smallint(4) DEFAULT '255',
- `be_role` mediumtext NOT NULL,
+ `be_role` mediumtext,
`default_slot` smallint(4) DEFAULT '1',
`toggles` mediumint(8) DEFAULT '383',
`sound` mediumint(8) DEFAULT '31',
diff --git a/_maps/map_files/cyberiad/cyberiad.dmm b/_maps/map_files/cyberiad/cyberiad.dmm
index 094c6e6c12f..afb8adfa849 100644
--- a/_maps/map_files/cyberiad/cyberiad.dmm
+++ b/_maps/map_files/cyberiad/cyberiad.dmm
@@ -574,7 +574,7 @@
"alb" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"; tag = ""},/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 4; initialize_directions = 11; level = 1},/turf/simulated/floor/plasteel{icon_state = "red"; dir = 8},/area/security/permabrig)
"alc" = (/obj/structure/sign/securearea,/turf/simulated/wall/r_wall,/area/security/permabrig)
"ald" = (/obj/machinery/door/firedoor,/obj/machinery/door/airlock/security{name = "Prisoner Transfer Center"; req_access = null; req_access_txt = "1"},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/security/execution{name = "\improper Prisoner Transfer Center"})
-"ale" = (/obj/machinery/door/firedoor,/obj/machinery/door/airlock/hatch/gamma{locked = 1; req_access_txt = "1"; use_power = 0},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/security/permabrig)
+"ale" = (/obj/machinery/door/firedoor,/obj/machinery/door/airlock/hatch/gamma{locked = 1; req_access_txt = "1"; use_power = 0},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/security/armoury)
"alf" = (/obj/machinery/vending/security,/obj/machinery/firealarm{dir = 1; pixel_y = -24},/obj/item/device/radio/intercom/department/security{pixel_x = -28},/turf/simulated/floor/plasteel{icon_state = "redcorner"; dir = 1},/area/security/armoury)
"alg" = (/turf/simulated/floor/plasteel{icon_state = "redcorner"; dir = 1},/area/security/armoury)
"alh" = (/obj/effect/decal/warning_stripes/red/hollow,/obj/structure/closet/l3closet/security,/turf/simulated/floor/plasteel{icon_state = "redcorner"; dir = 4},/area/security/armoury)
@@ -621,7 +621,7 @@
"alW" = (/obj/effect/spawner/window/reinforced,/obj/structure/cable,/turf/simulated/floor/plating,/area/security/warden)
"alX" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/door/poddoor/shutters{dir = 2; id_tag = "Secure Armory"; name = "Secure Armory Shutters"},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/security/securearmoury)
"alY" = (/obj/effect/spawner/window/reinforced,/obj/structure/cable,/turf/simulated/floor/plating,/area/security/securearmoury)
-"alZ" = (/obj/structure/table/reinforced,/obj/machinery/door/window/brigdoor{dir = 2; name = "Secure Armory"; req_access_txt = "3"},/obj/machinery/door/window/brigdoor{dir = 1; name = "Secure Armory"; req_access_txt = "3"},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/security/securearmoury)
+"alZ" = (/obj/structure/table/reinforced,/obj/machinery/door/window/brigdoor{dir = 2; name = "Secure Armory"; req_access_txt = "1"},/obj/machinery/door/window/brigdoor{dir = 1; name = "Secure Armory"; req_access_txt = "3"},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/security/securearmoury)
"ama" = (/obj/structure/closet/secure_closet/security,/obj/structure/window/reinforced{dir = 8},/obj/machinery/status_display{density = 0; layer = 4; pixel_x = 0; pixel_y = 32},/turf/simulated/floor/plasteel{icon_state = "red"; dir = 9},/area/security/main)
"amb" = (/obj/structure/table,/obj/item/clothing/suit/tracksuit/red,/obj/item/device/radio/intercom/department/security{pixel_x = -28},/obj/machinery/camera{c_tag = "Brig Security Equipment Lockers"; dir = 4; network = list("SS13")},/obj/machinery/requests_console{department = "Security"; departmentType = 5; name = "Security Requests Console"; pixel_x = 0; pixel_y = 30},/turf/simulated/floor/plasteel{icon_state = "redcorner"; dir = 1},/area/security/main)
"amc" = (/obj/structure/closet/secure_closet/security,/obj/structure/sign/goldenplaque{pixel_y = 30},/obj/machinery/light{dir = 1; on = 1},/turf/simulated/floor/plasteel{icon_state = "red"; dir = 1},/area/security/main)
@@ -873,9 +873,9 @@
"aqO" = (/obj/structure/sign/poster/legit{pixel_x = 0; pixel_y = 32},/obj/machinery/camera{c_tag = "Firing Range"; dir = 2; network = list("SS13")},/turf/simulated/floor/plasteel{icon_state = "red"},/area/security/range)
"aqP" = (/obj/structure/closet/crate,/obj/item/target,/obj/item/target,/obj/item/target,/obj/item/target,/obj/structure/cable{icon_state = "0-2"; pixel_y = 1; d2 = 2},/obj/machinery/power/apc{dir = 1; name = "north bump"; pixel_x = 0; pixel_y = 24},/turf/simulated/floor/plasteel,/area/security/range)
"aqQ" = (/obj/effect/decal/cleanable/dirt,/obj/item/device/radio/intercom{broadcasting = 0; name = "station intercom (General)"; pixel_y = 25},/turf/simulated/floor/plasteel{dir = 8; icon_state = "redcorner"},/area/security/range)
-"aqR" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor/plasteel{icon_state = "red"; dir = 8},/area/security/brig)
-"aqS" = (/obj/effect/spawner/window/reinforced,/obj/structure/cable{icon_state = "0-2"; pixel_y = 1; d2 = 2},/turf/simulated/floor/plating,/area/security/brig)
-"aqT" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/plasteel{icon_state = "red"; dir = 4},/area/security/brig)
+"aqR" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor/plasteel{dir = 1; icon_state = "darkredcorners"},/area/security/brig)
+"aqS" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/security/brig)
+"aqT" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"; tag = ""},/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 1; initialize_directions = 11; level = 1},/obj/machinery/atmospherics/pipe/manifold4w/hidden/supply,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/security/brig)
"aqU" = (/obj/machinery/light{dir = 1; on = 1},/obj/item/device/radio/intercom/department/security{pixel_x = 0; pixel_y = 25},/turf/simulated/floor/plasteel{dir = 1; icon_state = "darkredcorners"},/area/security/brig)
"aqV" = (/obj/machinery/ai_status_display{pixel_x = 0; pixel_y = 32},/turf/simulated/floor/plasteel{dir = 1; icon_state = "darkredcorners"},/area/security/brig)
"aqW" = (/turf/simulated/floor/plasteel{icon_state = "dark"},/area/security/brig)
@@ -924,10 +924,10 @@
"arN" = (/obj/effect/decal/cleanable/dirt,/obj/machinery/atmospherics/unary/vent_pump{dir = 4; external_pressure_bound = 101; on = 1; pressure_checks = 1},/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/security/range)
"arO" = (/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/effect/decal/cleanable/dirt,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4; level = 1},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor/plasteel,/area/security/range)
"arP" = (/obj/machinery/hologram/holopad,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 6},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor/plasteel{icon_state = "red"; dir = 8},/area/security/range)
-"arQ" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"; tag = ""},/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 1; initialize_directions = 11; level = 1},/obj/machinery/atmospherics/pipe/manifold4w/hidden/supply,/turf/simulated/floor/plasteel,/area/security/brig)
+"arQ" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4; level = 1},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/security/brig)
"arR" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/obj/machinery/door/firedoor,/obj/machinery/door/airlock/glass_security{name = "Firing Range"; req_access_txt = "1"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4; level = 1},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor/plasteel,/area/security/range)
-"arS" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"; tag = ""},/obj/machinery/door/firedoor,/obj/machinery/door/airlock/glass_security{name = "Prison Wing"; req_access_txt = "2"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4; level = 1},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/security/brig)
-"arT" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers,/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor/plasteel,/area/security/brig)
+"arS" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers,/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/security/brig)
+"arT" = (/turf/simulated/floor/plasteel{dir = 8; icon_state = "redcorner"},/area/hallway/primary/fore)
"arU" = (/turf/simulated/floor/plating/airless,/turf/simulated/floor/plating/airless/catwalk{tag = "icon-catwalk3"; icon_state = "catwalk3"},/area/solar/auxstarboard)
"arV" = (/obj/structure/shuttle/engine/propulsion{dir = 8; icon_state = "burst_r"},/turf/space,/area/shuttle/trade/sol)
"arW" = (/obj/machinery/access_button{command = "cycle_interior"; frequency = 1450; master_tag = "trade_sol"; name = "interior access button"; pixel_x = 25; pixel_y = 25; req_access_txt = "160"},/turf/simulated/shuttle/floor,/area/shuttle/trade/sol)
@@ -988,9 +988,9 @@
"asZ" = (/obj/machinery/light,/turf/simulated/floor/plasteel{icon_state = "red"; dir = 1},/area/security/range)
"ata" = (/obj/structure/table/reinforced,/obj/item/weapon/gun/energy/laser/practice,/obj/machinery/recharger{pixel_y = 0},/turf/simulated/floor/plating,/area/security/range)
"atb" = (/obj/effect/decal/cleanable/dirt,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/plasteel{icon_state = "redcorner"; dir = 1},/area/security/range)
-"atc" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor/plasteel{icon_state = "red"; dir = 8},/area/security/brig)
+"atc" = (/obj/machinery/firealarm{dir = 8; pixel_x = -24},/turf/simulated/floor/plasteel{dir = 8; icon_state = "bluecorner"},/area/hallway/primary/fore)
"atd" = (/obj/effect/spawner/window/reinforced,/obj/structure/cable,/turf/simulated/floor/plating,/area/security/brig)
-"ate" = (/turf/simulated/floor/plasteel{icon_state = "red"; dir = 4},/area/security/brig)
+"ate" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers,/obj/machinery/atmospherics/pipe/manifold4w/hidden/supply,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/security/prison/cell_block/B)
"atf" = (/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"; tag = ""},/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"},/turf/simulated/floor/plasteel{dir = 2; icon_state = "darkredcorners"},/area/security/brig)
"atg" = (/turf/simulated/floor/plasteel{dir = 8; icon_state = "darkredcorners"},/area/security/brig)
"ath" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/turf/simulated/floor/plasteel{dir = 8; icon_state = "darkredcorners"},/area/security/brig)
@@ -1474,7 +1474,7 @@
"aCr" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/obj/machinery/light/small{dir = 8},/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"},/turf/simulated/floor/plasteel{dir = 8; icon_state = "redcorner"},/area/security/prison/cell_block/B)
"aCs" = (/obj/machinery/door/window/brigdoor{dir = 8; id = "Cell 6"; name = "Cell 6"; req_access_txt = "2"},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"; tag = ""},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4; level = 1},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/door/poddoor{density = 0; icon_state = "pdoor0"; id_tag = "Secure Gate"; name = "Security Blast Door"; opacity = 0},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/security/prison/cell_block/B)
"aCt" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 10; initialize_directions = 10; level = 1},/obj/machinery/atmospherics/unary/vent_pump{dir = 8; on = 1},/turf/simulated/floor/plasteel{dir = 2; icon_state = "darkredcorners"},/area/security/prison/cell_block/B)
-"aCu" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers,/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 8; initialize_directions = 11; level = 1},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/security/prison/cell_block/B)
+"aCu" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/obj/machinery/door/firedoor,/obj/machinery/door/airlock/medical{name = "Paramedic"; req_access_txt = "66"},/turf/simulated/floor/plasteel,/area/medical/paramedic)
"aCv" = (/obj/structure/stool/bed/chair,/obj/item/device/radio/intercom/department/security{pixel_x = -28},/obj/machinery/camera{c_tag = "Brig Interrogation Observation"; dir = 4; network = list("SS13")},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/security/interrogation)
"aCw" = (/obj/structure/stool/bed/chair,/obj/machinery/light_switch{pixel_x = 25},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/security/interrogation)
"aCx" = (/obj/structure/stool/bed/chair,/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/security/interrogation)
@@ -1720,7 +1720,6 @@
"aHd" = (/obj/structure/stool/bed,/obj/effect/landmark{name = "xeno_spawn"; pixel_x = -1},/turf/simulated/floor/plating,/area/maintenance/fpmaint2)
"aHe" = (/obj/machinery/camera{c_tag = "Fore Primary Hallway West"; dir = 4; network = list("SS13")},/obj/structure/stool/bed/chair{dir = 4},/obj/machinery/newscaster{layer = 3.3; pixel_x = 0; pixel_y = -27},/turf/simulated/floor/plasteel{dir = 8; icon_state = "redcorner"},/area/hallway/primary/fore)
"aHf" = (/obj/structure/disposalpipe/trunk{dir = 1},/obj/machinery/disposal,/turf/simulated/floor/plasteel{dir = 8; icon_state = "redcorner"},/area/hallway/primary/fore)
-"aHg" = (/obj/machinery/firealarm{dir = 1; pixel_y = -24},/turf/simulated/floor/plasteel{dir = 8; icon_state = "redcorner"},/area/hallway/primary/fore)
"aHh" = (/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"; tag = ""},/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"; tag = ""},/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 1},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 10},/obj/structure/disposalpipe/segment{dir = 2; icon_state = "pipe-c"},/turf/simulated/floor/wood,/area/crew_quarters/mrchangs)
"aHi" = (/obj/machinery/light_switch{pixel_x = -23; pixel_y = 0},/obj/item/weapon/twohanded/required/kirbyplants,/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 5; level = 1},/turf/simulated/floor/plasteel{dir = 2; icon_state = "barber"},/area/civilian/barber)
"aHj" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 10},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/plasteel{dir = 2; icon_state = "barber"},/area/civilian/barber)
@@ -2678,10 +2677,12 @@
"aZz" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor/plasteel{icon_state = "neutral"; dir = 4},/area/crew_quarters/fitness)
"aZA" = (/turf/simulated/floor/plasteel,/area/gateway)
"aZB" = (/obj/machinery/computer/card/minor/ce,/turf/simulated/floor/plasteel{dir = 8; icon_state = "neutralfull"},/area/engine/chiefs_office)
+"aZC" = (/obj/machinery/atmospherics/pipe/simple/visible/universal{dir = 4},/obj/structure/table,/obj/item/clothing/glasses/welding,/obj/item/clothing/glasses/welding,/obj/item/clothing/gloves/color/black,/obj/item/clothing/gloves/color/black,/obj/item/clothing/gloves/color/black,/turf/simulated/floor/plasteel,/area/atmos)
"aZD" = (/obj/machinery/alarm{dir = 4; icon_state = "alarm0"; pixel_x = -22},/obj/machinery/atmospherics/unary/vent_pump{on = 1},/turf/simulated/floor/wood,/area/crew_quarters/bar)
"aZE" = (/obj/item/device/radio/intercom{pixel_x = 25},/obj/machinery/atmospherics/unary/vent_scrubber{dir = 1; on = 1; scrub_N2O = 1; scrub_Toxins = 1},/obj/structure/window/reinforced,/obj/structure/closet/secure_closet/bar{req_access_txt = "25"},/turf/simulated/floor/wood,/area/crew_quarters/bar)
"aZF" = (/obj/machinery/door/airlock/glass{name = "Central Access"},/turf/simulated/floor/plasteel,/area/hallway/primary/fore)
"aZG" = (/obj/machinery/door/airlock/glass{name = "Central Access"},/turf/simulated/floor/plasteel{icon_state = "bluecorner"},/area/hallway/primary/fore)
+"aZH" = (/obj/structure/table,/obj/machinery/atmospherics/pipe/simple/visible/universal{dir = 4},/obj/machinery/requests_console{department = "Atmospherics"; departmentType = 3; name = "Atmospherics Requests Console"; pixel_y = -30},/obj/item/stack/sheet/glass{amount = 50},/obj/item/clothing/head/welding,/obj/item/clothing/head/welding,/turf/simulated/floor/plasteel,/area/atmos)
"aZI" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor/plating,/area/maintenance/fsmaint)
"aZK" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/structure/disposalpipe/segment{dir = 4},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/turf/simulated/floor/plating,/area/maintenance/fsmaint2)
"aZN" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/structure/disposalpipe/segment{dir = 4},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; tag = ""},/turf/simulated/floor/plating,/area/maintenance/fsmaint2)
@@ -4357,7 +4358,7 @@
"bGz" = (/obj/machinery/door/firedoor,/obj/machinery/door/poddoor{density = 0; icon_state = "pdoor0"; id_tag = "Biohazard"; name = "Biohazard Shutter"; opacity = 0},/obj/machinery/door/poddoor/shutters{dir = 2; id_tag = "mechbay"; name = "Mech Bay"},/turf/simulated/floor/plasteel{icon_state = "delivery"},/area/assembly/chargebay)
"bGA" = (/obj/structure/table,/obj/item/weapon/book/manual/robotics_cyborgs{pixel_x = 2; pixel_y = 5},/obj/item/weapon/storage/belt/utility,/obj/item/weapon/reagent_containers/glass/beaker/large,/obj/machinery/requests_console{department = "Robotics"; departmentType = 2; name = "Robotics Requests Console"; pixel_y = 30},/obj/machinery/light{dir = 1},/turf/simulated/floor/plasteel{icon_state = "white"},/area/assembly/robotics)
"bGB" = (/obj/effect/spawner/window/reinforced,/obj/machinery/door/poddoor{density = 0; icon_state = "pdoor0"; id_tag = "Biohazard"; name = "Biohazard Shutter"; opacity = 0},/obj/machinery/door/poddoor/shutters{density = 0; dir = 2; icon_state = "shutter0"; id_tag = "robotics"; name = "Robotics Lab Shutters"; opacity = 0},/turf/simulated/floor/plating,/area/assembly/robotics)
-"bGC" = (/obj/machinery/autolathe,/turf/simulated/floor/plasteel{icon_state = "white"},/area/toxins/lab)
+"bGC" = (/obj/structure/table,/obj/item/weapon/storage/toolbox/mechanical{pixel_x = 0; pixel_y = 0},/turf/simulated/floor/plasteel{icon_state = "white"},/area/toxins/lab)
"bGD" = (/obj/structure/table,/obj/machinery/recharger{pixel_y = 0},/obj/item/weapon/storage/belt/utility,/obj/item/clothing/gloves/color/latex,/turf/simulated/floor/plasteel{icon_state = "white"},/area/toxins/lab)
"bGE" = (/obj/structure/table/reinforced,/obj/machinery/door/firedoor,/obj/machinery/door/window/eastright{base_state = "left"; dir = 2; icon_state = "left"; name = "Robotics Desk"; req_access_txt = "29"},/obj/item/weapon/paper_bin{pixel_x = -3; pixel_y = 7},/obj/item/weapon/pen,/obj/item/weapon/folder/white,/obj/machinery/door/poddoor{density = 0; icon_state = "pdoor0"; id_tag = "Biohazard"; name = "Biohazard Shutter"; opacity = 0},/obj/machinery/door/poddoor/shutters{density = 0; dir = 2; icon_state = "shutter0"; id_tag = "robotics"; name = "Robotics Lab Shutters"; opacity = 0},/turf/simulated/floor/plating,/area/assembly/robotics)
"bGF" = (/obj/machinery/hologram/holopad,/turf/simulated/floor/plasteel{dir = 10; icon_state = "purple"},/area/hallway/primary/starboard/east)
@@ -4880,7 +4881,7 @@
"bRn" = (/obj/machinery/door/poddoor{density = 0; icon_state = "pdoor0"; id_tag = "Biohazard"; name = "Biohazard Shutter"; opacity = 0},/turf/simulated/floor/plasteel{icon_state = "bot"},/area/medical/research{name = "Research Division"})
"bRo" = (/obj/machinery/door/poddoor{density = 0; icon_state = "pdoor0"; id_tag = "Biohazard"; name = "Biohazard Shutter"; opacity = 0},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/camera{c_tag = "Research Hallway Entrance"; dir = 2; network = list("Research","SS13")},/turf/simulated/floor/plasteel{icon_state = "bot"},/area/medical/research{name = "Research Division"})
"bRp" = (/obj/machinery/door_control{id = "rdlab2"; name = "Research and Development Lab Shutters Control"; pixel_x = -24; pixel_y = -24; req_access_txt = "47"},/turf/simulated/floor/plasteel{icon_state = "white"},/area/toxins/lab)
-"bRq" = (/obj/structure/table,/obj/item/weapon/storage/belt/utility,/obj/item/weapon/storage/toolbox/mechanical{pixel_x = 0; pixel_y = 0},/obj/item/weapon/storage/toolbox/mechanical{pixel_x = 0; pixel_y = 0},/obj/item/stack/tape_roll,/turf/simulated/floor/plasteel{icon_state = "white"},/area/toxins/lab)
+"bRq" = (/obj/structure/table,/obj/item/weapon/storage/belt/utility,/obj/item/weapon/storage/toolbox/mechanical{pixel_x = 0; pixel_y = 0},/obj/item/stack/tape_roll,/turf/simulated/floor/plasteel{icon_state = "white"},/area/toxins/lab)
"bRr" = (/obj/structure/shuttle/engine/propulsion/burst{dir = 8},/turf/space,/area/shuttle/research)
"bRs" = (/obj/structure/window/reinforced{dir = 1},/obj/structure/shuttle/engine/heater{dir = 8},/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced,/turf/simulated/floor/plating/airless,/area/shuttle/research)
"bRt" = (/obj/machinery/computer/shuttle/science,/turf/simulated/shuttle/floor,/area/shuttle/research)
@@ -5703,7 +5704,6 @@
"chi" = (/obj/machinery/door/airlock/maintenance{req_access_txt = "12"},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/turf/simulated/floor/plating,/area/maintenance/asmaint)
"chj" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/door/firedoor,/obj/machinery/door/poddoor/shutters{dir = 2; id_tag = "paramedic"; name = "Paramedic Garage"},/turf/simulated/floor/plasteel,/area/medical/paramedic)
"chk" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/wall,/area/medical/paramedic)
-"chl" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/obj/machinery/door/firedoor,/obj/machinery/door/airlock/diamond{name = "Paramedic"; req_access_txt = "66"},/turf/simulated/floor/plasteel,/area/medical/paramedic)
"chm" = (/obj/structure/disposalpipe/segment,/obj/machinery/door/firedoor,/obj/machinery/door/poddoor/shutters{density = 0; dir = 2; icon_state = "shutter0"; id_tag = "acutesep"; name = "Acute Separation Privacy Shutters"; opacity = 0},/turf/simulated/floor/plasteel{tag = "icon-whitebluefull"; icon_state = "whitebluefull"},/area/medical/sleeper)
"chn" = (/obj/effect/spawner/window/reinforced,/obj/machinery/door/poddoor/shutters{density = 0; dir = 2; icon_state = "shutter0"; id_tag = "acutesep"; name = "Acute Separation Privacy Shutters"; opacity = 0},/turf/simulated/floor/plating,/area/medical/sleeper)
"cho" = (/obj/structure/sign/greencross,/turf/simulated/wall,/area/medical/sleeper)
@@ -7907,7 +7907,6 @@
"cXH" = (/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"; tag = ""},/obj/structure/stool/bed/chair{dir = 1},/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"; tag = ""},/turf/simulated/floor/plasteel{dir = 8; icon_state = "neutralfull"},/area/engine/chiefs_office)
"cXI" = (/obj/structure/cable{d2 = 8; icon_state = "0-8"},/obj/machinery/power/apc{dir = 4; name = "east bump Engineering"; pixel_x = 24; shock_proof = 1},/turf/simulated/floor/plasteel{dir = 8; icon_state = "neutralfull"},/area/engine/chiefs_office)
"cXJ" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{level = 1},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/wall/r_wall,/area/atmos)
-"cXK" = (/obj/machinery/atmospherics/pipe/simple/visible/universal{dir = 4},/obj/structure/table,/obj/item/clothing/gloves/color/black,/obj/item/clothing/gloves/color/black,/obj/item/clothing/gloves/color/black,/turf/simulated/floor/plasteel,/area/atmos)
"cXL" = (/obj/machinery/firealarm{dir = 8; pixel_x = -24},/obj/structure/closet/secure_closet/engineering_electrical,/turf/simulated/floor/plasteel,/area/engine/equipmentstorage)
"cXM" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0; tag = ""},/obj/structure/table,/obj/item/device/t_scanner,/obj/item/device/radio/headset/headset_eng,/obj/item/device/multitool{pixel_x = 5},/turf/simulated/floor/plasteel,/area/engine/equipmentstorage)
"cXN" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0; tag = ""},/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"; tag = ""},/turf/simulated/floor/plasteel,/area/engine/equipmentstorage)
@@ -7973,7 +7972,6 @@
"cYV" = (/obj/machinery/atmospherics/pipe/manifold4w/visible,/turf/simulated/floor/plasteel,/area/atmos)
"cYW" = (/obj/machinery/meter,/obj/machinery/atmospherics/pipe/manifold4w/visible,/turf/simulated/floor/plasteel,/area/atmos)
"cYX" = (/obj/structure/sign/securearea{desc = "A warning sign which reads 'HIGH VOLTAGE'"; icon_state = "shock"; name = "HIGH VOLTAGE"},/turf/simulated/wall/r_wall,/area/engine/engineering)
-"cYY" = (/obj/structure/table,/obj/item/clothing/head/welding{pixel_x = -5; pixel_y = 3},/obj/item/stack/sheet/glass{amount = 50},/obj/item/clothing/head/welding{pixel_x = -5; pixel_y = 3},/obj/machinery/atmospherics/pipe/simple/visible/universal{dir = 4},/obj/machinery/requests_console{department = "Atmospherics"; departmentType = 3; name = "Atmospherics Requests Console"; pixel_y = -30},/turf/simulated/floor/plasteel,/area/atmos)
"cYZ" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 5; level = 1},/turf/simulated/wall/r_wall,/area/atmos)
"cZa" = (/obj/structure/table,/obj/item/stack/sheet/metal{amount = 50; pixel_x = 2; pixel_y = 2},/obj/item/stack/sheet/metal{amount = 50; pixel_x = 2; pixel_y = 2},/obj/item/weapon/wrench,/obj/item/device/pipe_painter,/obj/item/device/pipe_painter,/obj/machinery/atmospherics/pipe/simple/visible/purple{dir = 9},/turf/simulated/floor/plasteel,/area/atmos)
"cZb" = (/obj/machinery/atmospherics/binary/pump{dir = 4; name = "Waste to Port"},/turf/simulated/floor/plasteel,/area/atmos)
@@ -9056,9 +9054,9 @@ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaalwalwalvalwalwaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaanfangaomaocaobaoeaodaohaogaitapGaojaoiaonaokaopaooapFaoqaosaoraouaotaowaovaoxalWaozaoyaoBaoAaoDaoCaoJaoEaoGaoFaoFaoHaoLaoIaoIaoMaoPaoNalFaoQaoRaiYaiYaiYaoTaoSaihaabaaaaaaajbakyajwajwajwajwakzajyaaaaaaaaaaaaamWaaaaaaaoKaaaaaaaaaamWaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaalwaaaaabaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaanfaoUaomaoValEaoXaoWanlajJaigapGaoZaoYapbapaapdapcapFapeapgapfaphamyapjapiapkapSapAaplapCapBapEapDapIapHapJapJapLapKapNapMapOaoJapQaoJapRapNapTaiYapVapUapXapWaihaaaaabaabajbapYaqaapZaqcaqbajbalIaqeaaaaaaaaaamWaabappapnapqaabaabamWamWamWamWamWamWaqpamWamWamWamWamWamWamWamWaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaapsaprapuaptapwapraprapxapraprapvaaaaaaaaaaaaaaaaaaaaaaaaaaaalvaabapyaabalvaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaakBakBakBakBaslakWakZaomaomaomaomakUaqsapFapGapGapGaqtaquapGapFaqvalUaqwaqwalTaqxaqxapPapSapSaqyaqzapSapSapSanAaqAaqCaqBanxanAanAaqAaqDanxaqFaqEanxanAaqGaqGaqGaqGaqHaihaihaqIaqIaqIaqIajbalsaqJaqKalsajbaabaaaaaaaaaaaaamWaaaappaqdapqaaaaaaaabaabaabaabaabaabaabaabaqLaabaabaabaaaaaaamWaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaqfaqhaqiaqgaqkaqlaqlaqlaqmaqjaqoaaaaaaaaaalwalwalwalvalvaabaabaaaaqnaaaaabaabalvalvalwalwalwaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaakBakXaqraqMaqNaqraqOapzaqQaqPakWaqRaqTaqSaqVaqUaqXaqWariaqYarjaqXaqXaqXaqXarkaqXaqXaqXarlarnarmarparoarrarqarsarsarsartarsaruarwarvarxaqXaryaqWaqXarzarBarAarCaqXariaqXaqXarDarEaqVaqXarFarHarGarJarIajbaabaaaaaaaaaaaaamWaaaappaqdapqaaaaaaaabaqZaraaraaraaraarbaraaraaraaraarcaabaaaamWaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaardaqhareargaqlarharharharharharfaaaaaaaaaalwaaaaaaaabaaaaabaaaaaaaqnaaaaaaaabaaaaabaaaaaaalwaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaakBalDarKalDarLalDarNarMarParOarRarQarTarSasdascaseaseasfaseasgaseaseaseasiashasiasjasiasiassaskasnasmaspasoasoasoasoasqasoasoasoasrastasAasvasuasxaswaszasyasAasAasCasBasBasDasEasEasEasFasHasGasIamRamVaaaaaaaaaaaaaaaamWaabappaqdapqaaaaaaaabarUaabaaaaaaaabarUaabaabaaaaaaarUaabaaaamWaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabpaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaarVaqharWarYarharharharharZasaaqoaaaaaaaaaalwaabarXarXarXarXarXaaaasbaaaarXarXarXarXarXaabalwaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaakBamoasYasXasZasYasYataatbalBakWatcateatdatgatfatiathatkatjatmatlatnatjatpatoatratqatratsatuattatwatvatyatxatAatzatCatBatEatDatAatOatRatQaFLaFLaFLaFLaFLaFLaFLaxeatSatSatSatTatSatSatSarFatVatUatXatWajbaaaaaaaaaaaaaabamWaaaappaqdapqaabaabappapnapqaabaabappapnapqaabaabappapnapqaabamWaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaqfaqhaqiaqgaqkaqlaqlaqlaqmaqjaqoaaaaaaaaaalwalwalwalvalvaabaabaaaaqnaaaaabaabalvalvalwalwalwaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaakBakXaqraqMaqNaqraqOapzaqQaqPakWaqRaqSaqXaqVaqUaqXaqWariaqYarjaqXaqXaqXaqXarkaqXaqXaqXarlarnarmarparoarrarqarsarsarsartarsaruarwarvarxaqXaryaqWaqXarzarBarAarCaqXariaqXaqXarDarEaqVaqXarFarHarGarJarIajbaabaaaaaaaaaaaaamWaaaappaqdapqaaaaaaaabaqZaraaraaraaraarbaraaraaraaraarcaabaaaamWaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaardaqhareargaqlarharharharharharfaaaaaaaaaalwaaaaaaaabaaaaabaaaaaaaqnaaaaaaaabaaaaabaaaaaaalwaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaakBalDarKalDarLalDarNarMarParOarRaqTarSarQasdascaseaseasfaseasgaseaseaseasiashasiasjasiasiassaskasnasmaspasoasoasoasoasqasoasoasoasrastasAasvasuasxaswaszasyasAasAasCasBasBasDasEasEasEasFasHasGasIamRamVaaaaaaaaaaaaaaaamWaabappaqdapqaaaaaaaabarUaabaaaaaaaabarUaabaabaaaaaaarUaabaaaamWaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabpaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaarVaqharWarYarharharharharZasaaqoaaaaaaaaaalwaabarXarXarXarXarXaaaasbaaaarXarXarXarXarXaabalwaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaakBamoasYasXasZasYasYataatbalBakWaryatgatgatgatfatiathatkatjatmatlatnatjatpatoatratqatratsatuattatwatvatyatxatAatzatCatBatEatDatAatOatRatQaFLaFLaFLaFLaFLaFLaFLaxeatSatSatSatTatSatSatSarFatVatUatXatWajbaaaaaaaaaaaaaabamWaaaappaqdapqaabaabappapnapqaabaabappapnapqaabaabappapnapqaabamWaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaasJaprapraprapwapraprapxapraprasKaaaaaaaaaalwaaaasMasLasLasLasLasNasPasOasQasQasQasQasRaaaalwaaaaaaaaaaaaaaaaaaaaaabpaaaaaaaaaaaaaaaakBakBakBakBakBakBakBatYauaatZakWaubaudapFaufaueawKaugauhawKawKawKawKaujaukaucatdaulatdaucaunaumawHawHawHawHauAauoawVauEauEawXauEauFauEauEaFLauGauHaFLauHauIaFLauJauLauKauNauMauPauOauQajbajbajbajbajbajbaaaaaaaaaaaaaaaamWaaaappaqdapqaaaaaaappaqdapqaaaaaaappaqdapqaaaaaaappaqdapqaabaqpaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaalwaabatFatFatFatFatFaaaatHaaaatFatFatFatFatFaabalwaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaakBauRauTauSakWauUauVapGauXauWaucauYavaauZavcavbauZavdavfaveavhavgaviaveavjaAzavlavkavmavlavoavnavzavravBavAaAFavCaCyavDaFLauIavFavEavFauIaFLavGavHayVayVavIavKavJavLaHEaaaaabaaaaaaaaaaaaaaaaaaaaaaaaamWaaaappaqdapqaaaaaaappaqdapqaaaaaaappaqdapqaaaaaaappaqdapqaabamWaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaalwaaaaaaaaaaabaaaaaaaaaautaaaaaaaaaaabaaaaaaaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaasSasUasTasWasVaaaaaaawBawBaudaudaudaudavMavNaucavOauWaucavPavRavQavTavSavUavdavfavVavXavWavZavYavjaAzawbawaawdawcawfaweawgaCyawhavAaAFawiawnawjaFLawAawDawCawEawAaFLawFawGayVawJawIawLawGawMaHEaabaabaaaaaaaaaaaaaaaaaaaaaaaaamWaaaappaqdapqaabaabappaqdapqaabaabappaqdapqaabaabappaqdapqaabamWaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
@@ -9069,12 +9067,12 @@ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaxiazeazgazhaxiaaaaxkazfazjaziaxkalwaabarXarXarXarXarXaaaatHaaaarXarXarXarXarXaabalwaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaauvaxoawzaxmatIatMatNazVauyawBaudaudaudaznazXazWazsazrawKazYazZawWaAcaAaawWaAdaAqaxLaAraBHaAsaxLazyaAtaxpaAuaAvaxpaAwavnaxvaAyaACaAAaAEaADaAHaAGawlaAIaAKaAJawlaydavqavqaxhaxhaxhdmoaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaarUazUaAbaraaraaraazbaraaraaraaraazbaraaraaraaraaALaaaaaaamWaaaaAfaAfaAgaAgaAgaAgaAgaAgaAfaAfaabaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaxiaAhazgazhaxiaaaaxkaAiaykaykaxkalwaaaasMasLasLasLasLasNasPasOasQasQasQasQasRaaaalwaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaatIaymawzawzayhauyayoaAMauCaAmaAnaAlaAnaApaApaANaApaAoaElaAOaAPawKaxSaARawKaATaAVaAUaAWaxLaAZaAXaBbaBaawHaBiayeawHaBraBpaBsaBsaBsaBsaBsawVaBuaBtawlaBvaBRaBvawlaBwavqavqatGaupaurauqauqausaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabaabaAYaBxaByaabaaaaabaabaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaaaamWaAfaAfaBdaBcaBeaBgaBhaBfaBjaBeaAfaAfaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaxiaAhazgazhaxiaaaaxkaBkaykaBlaxkaabaBmatFatFatFatFatFaaaatHaaaatFatFatFatFatFaabalwaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaatIazkazkazkatIatMaBAaBzaBBaAmaCaaAnaAnaBCaApaBDaBqaBoaElaBEaBFauZavcaBGauZaAdaxLaxLaBJaBIaBKaxLaxLazxavlaBLavmavlaBNaBMaBPaBOaBSaBQaBsaCcaCfaCeaZIaCgavqaSPavqaChavqavqavsavqavtavpavuavwaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaaaaabaabaBTaabaabaaaaaaaaaaabaabaaaaaaaaaaaaaaaaaaaaaaaaaAfaAfaAfaAfaBUaBgaBVaBgaBVaBXaBgaBgaBgaBWaAfaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaxiazgazgazgaBYaaaaxkaBkaykaBlaxkalwaaaaaaaabaaaaabaaaaaaaBZaaaaaaaabaaaaabaaaaaaalwaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaAeaAkaAkaAkaAjaaaaaaaaaaaaaBnaAnaAnaAnaCiaCkaCjaCdaCbaElavPaCmaClavTaCnaCoavdaxLaEBaCpaEBaCqaEBaxLaAzazAaCrawdaCsaCuaCtaBsaCvaCxaCwaBsaCzaCBaCAaCCaZIaZIaCgavqavqaybaycatGavqawkauqauqawmaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabaabaCLaabaabaaaaaaaabaaaaabaabaaaaaaaaaaaaaaaaaaaaaaAfaCNaCOaCPaCMaCRaCQaCSaBgaBgaCUaCVaBgaCWaAfaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaxiazgazgazgaBYaaaaxkaBkaykaBlaxkalwaaaaaaaabaaaaabaaaaaaaBZaaaaaaaabaaaaabaaaaaaalwaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaAeaAkaAkaAkaAjaaaaaaaaaaaaaBnaAnaAnaAnaCiaCkaCjaCdaCbaElavPaCmaClavTaCnaCoavdaxLaEBaCpaEBaCqaEBaxLaAzazAaCrawdaCsateaCtaBsaCvaCxaCwaBsaCzaCBaCAaCCaZIaZIaCgavqavqaybaycatGavqawkauqauqawmaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabaabaCLaabaabaaaaaaaabaaaaabaabaaaaaaaaaaaaaaaaaaaaaaAfaCNaCOaCPaCMaCRaCQaCSaBgaBgaCUaCVaBgaCWaAfaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaxiaCTazgazgaCXaaaaxkaCYaykaykaCZalwalwalwaabaabaabaabaDbaDaaDbaabaabaabaabalwalwalwaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaBnaDdaDcaCEaCDaCGaCFaCHaDiaElauYaCIawWaCKaCJawWaDeaDfaEBaDgaFFaDhaEBaDkaDjaxpaDlaDmaxpaDoaDnaBsaDpaDraDqaBsaDsaDNaDNaDNaDNaDPaDPaDRaDRaDRaDRatGatGatGatGaaaaaaaaaaaaaaaaaaaaaaaaaabaabaabaaaaabaaaaabaabaDSaDKaDSaabaabaaaaabaaaaaaaabaabaaaaaaaaaaaaaaaaaaaAfaDUaDTaDWaDVaDYaDXaBgaBgaBgaDZaEaaBgaEcaAfaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaxiaEbazgaEeaxiaaaaxkaEfaykaykaxkaabaaaaabaaaaaaaabaaaaDbaEgaEdaaaaaaaabaaaaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaEiaEiaEiaEiaEiaEiaEiaAmaElaElaElaDtaElaElaElaDuaAmaAxaAxaAxaAxaAxaAxaEBaEBaDvaDgaFFaDhaDvaDvaDvaEpaEpaEpaEpaDxaDwaBsaDyaDAaDzaBsaDsaDNaELaEMaEKaDPaENaDBaEOaEQaDRaaaaaaaaaaaaaaaaaaaaaaaaaaaabpaaaaabaabaaaaabaabaabaabaabaaaaDSaERaDSaaaaabaaaaabaaaaaaaaaaabaabaaaaaaaaaaaaaaaaAfaETaESaCPaEUaEWaEVaEXaBgaEZaEYaFbaFaaAfaFdaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaFeaFfaFcaFfaFgaaaaFiaFhaykaFkaFiaabaaaaabaaaaaaaabaDbaDbaFjaFmaDbaaaaabaaaaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaEiaFlaFoaDCaDDaFvaFwaFsaDFaDEaDDaDGaFvaFvaDIaDHaFBaFAaFyaFyaFyaFyaFyaFyaFyaDJaDLaGraDMaEjaDOavqavqavqavqavqaBsaDQaEkaEhaEnaEmaBsaEoaDNaFTaFUaFPaDPaFVaEqaFWaFYaDPaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabaaaaaaaaaaaaaaaaabaabaDSaDSaFZaDSaDSaabaaaaabaaaaaaaaaaaaaabaabaaaaaaaaaaaaaAfaGbaGaaCPaAfaCPaCPaGdaGcaAfaAfaAfaAfaAfaAfaabaabaaaaaaaaaaaaaaaabpaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabpaaaaaaaaaaFeaGfaFgaaaaaaaGgaFiaGeaFiaGhaabaaaaabaaaaaaaabaGjaGiaGlaGkaGjaGnaGnaaaaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaGoaGmaEraGpaEtaEsaEuaEsaEvaEsaExaEwaGraGraEzaEyaGraGraGraGraGraGraGraGraGraECaEEaEDaEGaEFaEHaAQaASaEIaASaAQaBsaEJaFnaEPaFnaFnaBsaDsaDNaFpaGNaFqaDPaFraGRaGQaEQaDPaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabaaaaaaaaaaaaaaaaaaaaaaabaGTaGUaGSaGWaGTaabaaaaabaaaaaaaabaaaaaaaabaabaaaaaaaGXaAfaCPaAfaCPaGYaGVaGYaMzaGYaGYaGYaHbaGXaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaaaaaaaaaaaaaaaaaaaaaaGnaGnaGnaGnaGnaGnaGnaGnaabaabaGjaHcaHaaGZaGjaHdaGnaaaaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaGoaHeaHgaHfaFuaFtaFxaHnaFzaHnaFCaHqaHnaHnaFEaFDaHnaHnaHnaHnaHnaHnaHnaFHaFJaFIaFKaHvaHxaEjaFMaAQaFNaASaFOaAQaBsaBsaBsaBsaBsaBsaBsaFQaDNaHCaFUaFRaDPaFSaHGaFWaHHaDPaaaaaaaaaaaaaaaaaaaaaaaaaabaabaaaaaaaaaaaaaaaaaaaaaaaaaabaGTaHKaHIaHJaGTaabaaaaabaaaaaaaabaaaaaaaGXaHNaGXaHNaGXaHbaGYaGYaGYaGYaGYaGYaGYaGYaGYaHOaHPaGXaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaaaaaaaaaaaaaaaaaaaaaaGnaGnaGnaGnaGnaGnaGnaGnaabaabaGjaHcaHaaGZaGjaHdaGnaaaaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaGoaHearTaHfaFuaFtaFxaHnaFzaHnaFCaHqaHnaHnaFEaFDaHnaHnaHnaHnaHnaHnaHnaFHaFJaFIaFKaHvaHxaEjaFMaAQaFNaASaFOaAQaBsaBsaBsaBsaBsaBsaBsaFQaDNaHCaFUaFRaDPaFSaHGaFWaHHaDPaaaaaaaaaaaaaaaaaaaaaaaaaabaabaaaaaaaaaaaaaaaaaaaaaaaaaabaGTaHKaHIaHJaGTaabaaaaabaaaaaaaabaaaaaaaGXaHNaGXaHNaGXaHbaGYaGYaGYaGYaGYaGYaGYaGYaGYaHOaHPaGXaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaaaaHQaHLaHQaaaaaaaaaaGnaHSaHTaHSaHRaHMaHUaGnaaaaaaaGjaHVaHXaHWaIaaHSaGnaaaaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaIbaIcaIcaIeaIeaFXaLAaIhaIhaGqaLAaGsaIlaIiaIiaIlaGtaIlaIoaIoaIoaIoaIoaIoaImaIoaIoaInaIraIpaEjaGuavqaAQaAQaAQavqavqavqaydaGvaGwavqavqaGxaDNaIwaFUaGyaDPaGzaGRaGQaEQaDPaaaaaaaaaaaaaaaaaaaaaaaaaabaabaaaaaaaaaaaaaHQaIzaHQaaaaabaGTaIBaIAaICaGTaIFaIFaIFaIFaIFaHNaHNaHNaGXaIDaGYaHOaHPaMzaGYaMzaMzaMzaGXaIEaGXaGXaGXaGXaGXaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaaaaIIaIGaIIaaaaaaaabaGnaIHaILaHSaHSaIJaHSaGnaIIaIIaGjaGjaIMaIKaIaaHSaGnaGnaIIaIIaIIaGnaGnaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaIbaIPaGAaGCaGBaGDaLAaGFaGEaGGaLAaGHaIlaIWaIZaGJaGIaJbaJaaJdaJcaJfaJeaJhaJgaJjaJiaJkaFFaFGaEjaGKavqavqavqavqavqavqavqavqavqavqavqavqaGLaGOaGMaHhaGPaDPaHiaHjaJyaJBaDPaabaJEaJFaJFaJFaJFaJFaJGaabaabaaaaaaaaaaaaaHNaJCaHNaaaaIFaGTaGTaJDaJHaGTaJIaGYaGYaGYaMzaJJaGYaJMaGXaGYaGYaGYaJKaMzaGYaGXaJNaJLaGXaGYaJOaGXaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaJPaJSaJQaaaaJRaJVaJTaabaabaIIaHSaIIaaaaaaaabaGnaJXaJYaJZaJWaJUaKaaGnaKbaHSaKdaKcaKfaKeaKeaKeaKeaKeaKeaKeaKeaKgaGnaaaaKhaaaaaaaaaaaaaaaaaaaaaaaaaIbaKkaHkaKmaKnaHlaLAaHmaKraHoaLAaGHaIlaKtaKuaKvaGIaJbaKqaKsaKsaKsaKsaKsaJgaKwaJiaFyaFFaFGaEjaFMaLPaLPaLPaLPaLPaHpaKOaKOaKOaKOaKOaKOaKOaDNaDNaHraDNaDPaDPaHsaDPaDPaDPaKOaKPaKQaKQaKQaKQaKQaKPaKOaabaaaaaaaaaaaaaHNaKJaKMaaaaIFaKRaKTaKSaKWaGYaGYaGYaMzaGYaMzaKXaGYaGYaGXaGYaKVaKUaKXaIEaGYaGXaKZaKYaGXaGYaLcaGXaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
@@ -9085,7 +9083,7 @@ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaPVaSdaSdaLdaMsaPZaQaaLdaMsaPZaQaaLdaGnaLkaGnaGnaGnaGnaGnaHSaGnaHSaQbaPXaHSaHSaGnaLsaGnaPYaabaPYaGnaJYaOZaGnaQeaQcaGnaNAaKaaGnaLsaMAaMAaQgaQgaQgaQgaQgaQgaQgaQgaQgaPiaPiaPjaQhaQiaQjaQkaQlaQdaKEaKDaKFaKFaKFaKFaKFaKGaKIaKHaKFaKFaKFaKKaKKaKLaLzaKNaLBaEjaHBaLPaQzaKpaLNaLPaITaOpaPAaQEaQFaOpaMVaPCaPDaPDaPEaQGaOqaPGaPIaPIaPJaKBaKCaODaKQaKQaKQaKQaKQaODaQHaPMaODaaaaaaaGXaQIaGYaGYaQBaMzaQCaHOaQLaQJaHbaGXaOFaHbaGXaQKaGYaGXaQMaGYaGXaQOaQNaQPaOGaQQaOGaQSaQRaQUaQTaQVaQYaQWaMqaMraMrafOafOaMraMraMraMraabaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaQXaRbaOQaRbaQZaQZaQZaRaaQZaQZaQZaRdaRcaReaReaReaReaRfaGnaHSaGnaRhaRgaRiaHSaRjaPcaLsaGnaGnaGnaGnaGnaGnaPcaGnaHSaRiaLkaHSaHSaHSaRkaRmaRlaRnaRnaRnaRnaRoaRnaRnaRpaRqaRlaRsaRraRraRraRraRraRraRraRtaRwaRwaRwaRwaRxaRwaRwaLDaRwaRwaRxaRwaRwaRwaRwaRzaLFaLKaLGaLLaLPaRDaLMaLWaLOaLXaOpaRJaRKaRLaOpaMVaRMaRNaRNaRGaMWaOqaRPaRQaRQaRIaLYaLZaOzaKQaKQaKQaKQaKQaOAaRVaRRaODaaaaaaaGXaGYaGYaGYaGYaGYaGYaQPaOGaOGaOGaOGaOGaOGaOGaKSaGYaGYaGYaGYaMnaGYaGYaMkaGYaRTaRSaRXaRWaRYaOLaOLaOLaRZaMqaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaSaaSdaSdaSbaSfaScaSgaSiaSjaShaSkaSjaSmaSlaSjaSjaSnaGnaHSaGnaSoaHSaHSaSpaSqaGnaNIaKgaHSaHSaHSaHSaHSaHSaPcaSsaHSaGnaNxaNxaGnaSraMAaSuaSwaSvaSvaSvaSxaSvaSvaSvaSyaSuaSzaSAaSAaSAaSAaSAaSAaSAaPiaRwaSBaSCaSEaSDaMdaMcaMDaMBaMEaSJaSLaSCaSMaRwaSNaFFaSOaEjaMFaLPaSRaMGaSTaSSaMHaSUaSXaSWaSWaMIaMJaSZaSYaTaaTaaTbaTeaTcaMVaMVaTdaKBaThaTfaKQaKQaKQaKQaKQaTfaKOaKOaKOaGXaGXaGXaHbaMzaMzaIEaGXaGXaMkaMzaGXaTgaMzaGXaIEaGXaMkaQIaMzaGXaIEaGXaGYaQIaMkaGYaTiaMqaTjaQRaTlaTkaTmaQRaTnaMqaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabaMsaSdaRUaSdaToaSfaSfaTpaSdaRUaSdaTqaTraTsaTtaGnaHSaPcaPcaGnaGnaGnaTuaTuaTuaIfaTuaTuaTuaTuaTuaHSaGnaGnaGnaGnaGnaGnaGnaSraKbaStaaaaabaaaaabaaaaabaaaaabaaaaSuaSzaSAaTwaTvaTyaTxaTAaSAaPiaRwaTzaTzaTCaTBaTEaTDaTFaTDaMKaTGaTIaTzaTzaRwaSNaFFaTJaEjaMFaLPaOnaKpaLNaLPaMNaMLaMUaMTaMYaMXaNaaMZaNdaNcaNdaNeaNSaNRaNUaNTaNXaNVaKOaTfaKQaKQaKQaKQaKQaTfaGXaLcaGYaTXaUaaMzaGXaMzaLcaGYaGXaLcaMkaGXaTZaGYaGXaUbaGYaMzaUdaUcaGXaUeaGYaMzaIEaIEaMkaIEaUfaMqaUgaQRaUiaUhaUiaQRaUjaMqaabaabaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabaMsaSdaRUaSdaToaSfaSfaTpaSdaRUaSdaTqaTraTsaTtaGnaHSaPcaPcaGnaGnaGnaTuaTuaTuaIfaTuaTuaTuaTuaTuaHSaGnaGnaGnaGnaGnaGnaGnaSraKbaStaaaaabaaaaabaaaaabaaaaabaaaaSuaSzaSAaTwaTvaTyaTxaTAaSAaPiaRwaTzaTzaTCaTBaTEaTDaTFaTDaMKaTGaTIaTzaTzaRwatcaFFaTJaEjaMFaLPaOnaKpaLNaLPaMNaMLaMUaMTaMYaMXaNaaMZaNdaNcaNdaNeaNSaNRaNUaNTaNXaNVaKOaTfaKQaKQaKQaKQaKQaTfaGXaLcaGYaTXaUaaMzaGXaMzaLcaGYaGXaLcaMkaGXaTZaGYaGXaUbaGYaMzaUdaUcaGXaUeaGYaMzaIEaIEaMkaIEaUfaMqaUgaQRaUiaUhaUiaQRaUjaMqaabaabaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaLdaLdaSdaOQaSdaUkaUoaUmaUlaSdaOQaSdaSdaLdaUnaUpaGnaHSaHSaHSaHSaHSaHSaTuaUuaUvaUqaUxaUsaUzaUuaTuaUwaUAaUyaUyaUyaUyaUyaUyaUBaNxaStaabaUEaUEaUEaUEaUEaUEaUEaabaSuaSzaSAaUFaUCaUHaUDaUFaSAaPiaRwaUJaUJaUJaUGaULaSCaUIaSCaULaUKaUJaUJaUJaRwaSNaFFaUMaEjaMFaLPaOjaKpaLNaLPaNYaUNaUQaUQaUQaUQaUQaUQaUQaNZaUQaUSaUSaUSaUSaUSaOaaGXaKOaTfaKQaKQaKQaKQaKQaTfaGXaGXaGYaURaUaaMzaUTaGXaGYaGYaGXaGYaMkaMzaGYaGYaGXaGYaGYaMzaMkaGVaGXaGYaGYaMzaUWaGYaMkaGYaUUaUYaUYaMqaMqaMqaMqaMqaMqaMqaMraMraMraMraMraabaaaaaaaaaaaaaaaaaaaaaaaaabpaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaSdaRUaSdaSdaSdaSdaSdaSdaRUaSdaUZaLdaUVaUXaVcaVcaVcaVcaVcaVcaVaaTuaUuaVeaUqaVfaVeaVeaUuaTuaVgaVbaViaViaViaViaViaViaViaViaVjaaaaUEaVkaVdaVmaVlaVnaUEaaaaSuaSzaSAaVpaVoaVraVqaUFaSAaPiaRwaVsaVsaTCaVtaVuaTDaTFaTDaVuaVvaVwaTzaTzaRwaSNaFFaSOaEjaObaLPaOdaOcaLNaLPaOeaUNaUQaVzaVAaVCaVCaUQaVBaOfaVDaUSaVGaVFaVHaUSaOgaGXaaaaVKaVLaVLaVLaVLaVLaVMaaaaGXaGYaVNaVJaMzaMzaGXaGXaMzaMzaVOaVPaMzaGXaHPaGXaGXaMzaMzaVRaVQaGXaGXaGXaQLaUWaGYaMkaGYaUUaHOaHbaOFaYPbcDaVhbcDaYPaYPaYPaabaabaabaabaabaabaabaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaVVaVSaVXaVSaVSaVYaVZaVSaVSaVXaWaaVWaLdaToaWbaVcaWdaWcaWfaWeaWhaWgaTuaUuaVeaUqaWjaVeaVeaUuaTuaWkaWlaWiaWnaWmaWoaWqaWraWpaWtaVjaabaUEaWuaWsaWwaWvaWxaUEaabaSuaSzaSAaWzaWAaWyaWCaWBaSAaPiaRwaSBaSCaWEaWDaULaSCaWFaSCaULaWGaSLaSCaSMaRwaSNaFFaWJaEjaMFaLPaISaOhaLNaLPaOiaWHaUQaWKaVEaVEaVEaWLaOlaOkaOmaUSaWQaWPaOxaOtaPgaHPaaaaaaaaaaaaaaaaaaaaaaaaaaaaGXaWVaWUaWXaWWaWYaGXaNhaGYaQIaMkaGYaGXaaaaGXaGYaGYaGYaGYaMkaXbaXaaWZaWZaWZaWZaXcaXeaXdaXhaXiaXfaXiaXgaVTaVTaVUaXkaXjaXlaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
@@ -9126,7 +9124,7 @@ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabPIbPIbPIbPIbPIbPIbRGbTobRAcbzbRAcbxcbycbAaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacbDcbBbOccbCbOccbEcbFaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacbGaabaaaaaaaaaaaacamcbIcbHcbKcbJbYMcbNcbLcbMcbRbYMbOwbTycbOcbPcbQcbScbVcbTcbUcbWcbYcbXccacbZcccccbccfccdcceccgccjcchccicckccqcclccmbEnccnbFOccoccpccrbFOccscaAccvcctccuccwccxbUecczccyccBccAccDccCccFccEccHccGccIbWaccKbZuccJccMccLccOccNccPbXNccQbXQbXQbXQccRbWgcbdccTccSccVccUccXccWcdbcbfccYccZcdacbjcbjcdccbocddcdfcdecdhcdgcdjcdicdkbYjcdnbGHaaaaaaaaabThbThbThbThaaaaaaaabaaaaaaaaaaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabPLbPIcdlcdmcdpcdlcdobRGbRAbRAbRGbRAcdrcdqcdsaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacdvcdtcducducducdtcdwaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacamcdycdxcdAcdzbYLcdBcdDcdCcdEbYMbOwcdGcdFbTybTycdHcdKcdIcdJcclcdOcdLcdOcdMcdNcdNcdQcdPcdRcdNcdNcdTcdNcdScdNcclccmbEncdVcdUcdXcdWcdZcdYbFOcaAcebcctceaccucedbUececceecegcefceicehcekcejbUecelcembWaceocencencercepceqcetcesbXNceucevbXQcexcewbWgcbdcezceyceBceAceDceCceGcbfceEccZceFceFcbjceHceJceIceLceKceNceMcePceOceSbYjcacbGHceQaaaaaaaaaaaaaaaaaaaaaaaaaabaaaaaaaaaaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabWObWGceRceRceRceRceRceTbRAbRAbRGbPIbPIbPIbPIbPIbPIbPRaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaceVceUceUceUceWaaaaaaaaaaaaaaaaaaaaaceXceZceYceZcfaaaaaaaaaacamcamcamcffcfbcdAcfcbYLcfdcbMcfecfgbYMbOwcfhcfjcficflcfkcfncfmcfpcfocfrcfqcfucfscftcftcfxcfvcfvcfvcfvcfvcfvcfwcfAcfycfzcfBcfDcfCcfFcfEcfHcfGcfIcaAcfJcctccucfKcedbUececceecfMcfLcfOcfNcfQcfPbUmcfRcfSbWabWacfUcfUbWacepbWdcfTcfVbWgcfXcfWcfZcfYcgabWgcbdcgccgbcgecgdcghcgfcggcbfcgiccZceFceFcbjcgjcgmcgkcglcgncgpcgocgrcgqcgvbYjcaccgscgtcgscgucgycgucgucguaaaaaaaaaaaaaabaabaabaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabaabaabaabaaaaaaaaaaaaaabaabaabaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabYubWGceRceRceRcgwcgxbRGbRAbRAbRGbRAbRAbRAcgzbRAcgAbRGaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacgFcgBcgCcgDcgFbYPbYPbYPcamcgHcgGcgJcgIcgLcgKcgNcgMcgOcgOcgPbYMcgRcgQcgTcgScgScgUcgXcgVcgScgWcgWcgYchbcgZcgWcgWchacclcclchechcchcchcchdchgchcchcchfchichhchhchjchhchlchkchhchnchmchpcaAchochqcecchschrchtchvchuchwchrbUecelchychxchAchzchCchBchFchDchEchGchLchHchIchJchKchNbWicbdcbdchMchQchOchPchOchRcbfchUchSchTchTcbjchVchXchWbYjbYjbYjbYjbYjbYjbYjbYjcaccgscifchYchZciaciacibcguaaaaaaaaaaaaaaaaaaaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabcicciccicciccidcidcieciecieciecijaabaabaaaaaaaaaabpaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabYubWGceRceRceRcgwcgxbRGbRAbRAbRGbRAbRAbRAcgzbRAcgAbRGaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacgFcgBcgCcgDcgFbYPbYPbYPcamcgHcgGcgJcgIcgLcgKcgNcgMcgOcgOcgPbYMcgRcgQcgTcgScgScgUcgXcgVcgScgWcgWcgYchbcgZcgWcgWchacclcclchechcchcchcchdchgchcchcchfchichhchhchjchhaCuchkchhchnchmchpcaAchochqcecchschrchtchvchuchwchrbUecelchychxchAchzchCchBchFchDchEchGchLchHchIchJchKchNbWicbdcbdchMchQchOchPchOchRcbfchUchSchTchTcbjchVchXchWbYjbYjbYjbYjbYjbYjbYjbYjcaccgscifchYchZciaciacibcguaaaaaaaaaaaaaaaaaaaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabcicciccicciccidcidcieciecieciecijaabaabaaaaaaaaaabpaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaebPIcigceRceRcihciibRGbRAbRAcikbRAbRAbRAciobRAcilbRGaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaceYcimcincimceYbYPcipciqcamcitcfbcircisciyciubYMcivciwcixcizbYMcgQcgQciCcgSciAciBciEciDciHcgWciFciGciJciIciKcgWciMciLciNchcciPciOciSciQciRciTciVciUciXciWciZciYcjbcjacjdcjccjgcjecjfcjhcjjcjicjkceecjocjlcjmcjncjqcjpbUmcjrcjtcjscjuchCcjvcjvcjxcjwbWgcjycjAcjzcjCcjBcjEaYobWicjFcjHcjGcjIcjGcjGcjLcjJcjKcjPcjMcjNcjOcbjcjQcjRcbnbPtbGGcjTcjScjUcjUcjScjUcjYcgscjVcjWchZciackecjXcguaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaciccjZckacjZcidciecieckbckcckbciecieaabaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaebPIckdceRceRckfbRGbRAbRAbRGckgbRAbRAckjckhbPIbYvaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacgFckicimcimckkcklcfbcfbckmckncfbcfbcisckqckobYMbYMbYMbYMbYMbYMckpcgQcksckrckxcktcktcktckucgWckvckwckwckwckzckyckBckAckDckCckFckEckHckGckJckIchcchfckKchhckMckLckOckNckPchhcebccuceaccuckRckQckUckSckTckVckXckWckYchrclackZclcclbclecldclgclfcljclhbWgbWgbWgbWgbWgclicllclkbWiclncjGcjGclmclocjGcltclpcbjclqccZclrclrcbjcbmclscbnbPtcgsclvcgscgscgscgscgscgscgscluclwcguclxclzclycguafOafOafOafOafOafOafOafOafOafOafOafOafOafOafOafOafOafOafOafOafOclBcjZcjZclAciecieckbckbclHckbckbciecieaabaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaebPIclCclDclEbRGbRAclFbRGclGclIbRAbPIbPIbYvaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaceYcincincinceYbYPclJclMclKckncfbcfbclLclOclNclQclPclPclPclTcgQcgQcgQciCcgSclRcktclScktclVcgWckvckwclUckwclWcgWclYclXclZchccmccmacmbcmecmdcmhcmfcmgcmjcmicmlcmkcmocmmcmnchhcfJccuccucmpckRckQcmrcmqcmucjlcmscmtaYqcmvcmycmxcmAcmzcmCcmBcmEcmDcjvcmHchxcmFcmGcmJcmIcmKcmNcmLclpclncmMcjGcjGcjGcmQcmOclpcbjcmPccZclrclrcbjcmTcmRcbnbPtcmScmVcmUcgscmWcmYcmXcnbcmZcnacnfcgucnccndcnecgucgscgscgscgEcgEcgEcgEcgEaaaaaaaaaaaaaaaaabaaaaaaaaaaaaaaaaaaaaacnkcieclBciecieckbckbckbckbckbckbckbciecieaabaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
@@ -9158,8 +9156,8 @@ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaalvaabcTRcTScTScTUcTTcTVcTVcTVcTTcTVcTVcTVcTTcTVcTVcTVcTWcTScTScTScTScTScTXcTZcTYcUbcUacUecUdcUgcUfcNBcLwcUccRCcKbcKbcKbcUhcMvcSUcUkcUjcUmcUlcUicUncUpcUocUrcUqcUucUscUxcUwcUycUqcUtcUzcTecUvcRXcRXcRXcUAcPTcUCcUCcSdcUEcUDcUGcUFcUIcUHcUKcUJcUPcUNcUScSqcUVcSncUWcSwcSwcQZcRecBQcPdcQkcULcUMcVacQncQkcUOcVbcQncQkcUQcURcVccUTcUTcQkcBYcsLcUUcBPaaacBRcJKcMgcJKcVecMjcEHcVfcUXcUYcEHcUZcVgcxNcxNcxNcBRaaaaaaaabaabaaaaaaaaaaaaaaabGHcJQcFcbGHaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaalwaaaaabaaaaabaabcVkaabaaaaabcVkaabaaaaabcVkaabaaaaaaaaaaaaaaaaaaaaaaaaaaacRzcRzcRzcVlcVdcVmcRAcVncNBcNNcTccTccTccTccVocTccUfcSUcVhcVicVjcVpcVrcVqcVtcVscVvcVucVycVwcVAcVzcVCcVBcUtcTjcTecVxcVDcRXcRXcVFcPTcVGcVHcSdcVIcQPcVJcVEcVLcVKcVOcVMcVQcVPcVQcVRaabcQZcQZcQZcQZcQZcRecBPcPdcQkcVScVNcVUcVTcVWcVVcVYcVXcWbcWacWccSAcWecWdcQkcBYcsLcVZcBPaaacBRcJKcJKcJKcWicWhcWpcWjcWqcWfcEHcEHcEHcEHcWgcWrcWwaaaaaaaaaaabaabaaaaaaaaaaaabGHbGHcFcbGHaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaalwalwalvalwaabcNFcWxcNMaaacNFcWxcNMaaacNFcWxcNMaabaaaaaaaaaaaaaaaaaaaaaaaaaabaabcRzcRAcRAcRAcRAcWkcWlcWmcNBcWncNBcNBcMvcWocNBcSUcWzcWycVjcWAcUicWscWtcWucWucWvcWDcWCcWFaYtaZBcWvcWBcWHcWJcWIcWLcWKcWPcWMcWScWQcUGcWTcWUcWNcWOcWVcWWcWRcWYcWXcXbcXacXdcXccQpcSncXecWZcWZcQZcRecBPcPdcQkcQkcQkcQkcQkcXgcXfcXicXhcXncXkcXpcXocXqcXjcQkcBYcXrcXlcXlcXlcXmcXmcXmcXmcXmcXscXvcXtcXzcXxcNocXAcNocXAcNocXBcWwaaaaaaaaaaaaaabaabaaaaaaaaaaaabGHcFcbGHaabaabaabaabaabaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacNFcWxcNMaabcNFcWxcNMaaacNFcWxcNMaaaaaaaaaaaaaabaaaaaaaaaaaaaabaabaabaaaaaaaabaabcXucXucXucXucXucXucXucXCcXucXucSUcXwcXDcVjcWAcUicXycUicUicXEcRRcXGcXFcUwcXHcXIcRRcXLcRXcTecXMcXOcXNcWPcXPcXJcXKcXRcXQcXVcXScXRcXWcXYcXXcYacSdcXTcXUcYccYbaabcTocYfcYdcXZcQZcRecBQcYhcYgcYgcYgcYlcQkcYmcUMcYecYncURcYocUTcUTcURcYpcQkcBYcYichfcsLcYjcYkcBPaaaaaacBRcYqcYscYrcYvcYqcYscYwcYxcYqcYscYycBRaabaabaabaabaabaabaabaabaabaabbGHcFcbGHbGHbGHaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacYzaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaalvaabcNFcWxcNMaaacNFcWxcNMaaacNFcWxcNMaabaaaaaaaaaaaaaaaaaaaaaaaaaabaabaaaaaaaabaabaabcXucYtcYtcYucYAcYBcYBcYDcYCcYCcYEcYGcYFcVjcWAcVjcYHcVjcVjcVjcRRcYLcYKcYOcYNcYPcYIcYJcYQcYRcYMcYMcYMcYXcYUcYZcYYcZacYScVIcQPcYTcZbcYVcYWcZccSdcXTcZdcZgcZecZhcSncZicWZcWZcQZcRecBQcPdchfchfchfckKcQkcZkcZjcZfcZlcURcZmcZncUTcZpcZocQkcBYcYichfcsLcJGcsLcBPaaaaaacBRcZqcZscZrcxNcZtcZycZvcxNcZzcZBcZAcBRaabaabaaaaaaaaaaaaaaaaaaaaaaaabGHcFcbGGbGGbGHaabaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacNFcWxcNMaabcNFcWxcNMaaacNFcWxcNMaaaaaaaaaaaaaabaaaaaaaaaaaaaabaabaabaaaaaaaabaabcXucXucXucXucXucXucXucXCcXucXucSUcXwcXDcVjcWAcUicXycUicUicXEcRRcXGcXFcUwcXHcXIcRRcXLcRXcTecXMcXOcXNcWPcXPcXJaZCcXRcXQcXVcXScXRcXWcXYcXXcYacSdcXTcXUcYccYbaabcTocYfcYdcXZcQZcRecBQcYhcYgcYgcYgcYlcQkcYmcUMcYecYncURcYocUTcUTcURcYpcQkcBYcYichfcsLcYjcYkcBPaaaaaacBRcYqcYscYrcYvcYqcYscYwcYxcYqcYscYycBRaabaabaabaabaabaabaabaabaabaabbGHcFcbGHbGHbGHaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacYzaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaalvaabcNFcWxcNMaaacNFcWxcNMaaacNFcWxcNMaabaaaaaaaaaaaaaaaaaaaaaaaaaabaabaaaaaaaabaabaabcXucYtcYtcYucYAcYBcYBcYDcYCcYCcYEcYGcYFcVjcWAcVjcYHcVjcVjcVjcRRcYLcYKcYOcYNcYPcYIcYJcYQcYRcYMcYMcYMcYXcYUcYZaZHcZacYScVIcQPcYTcZbcYVcYWcZccSdcXTcZdcZgcZecZhcSncZicWZcWZcQZcRecBQcPdchfchfchfckKcQkcZkcZjcZfcZlcURcZmcZncUTcZpcZocQkcBYcYichfcsLcJGcsLcBPaaaaaacBRcZqcZscZrcxNcZtcZycZvcxNcZzcZBcZAcBRaabaabaaaaaaaaaaaaaaaaaaaaaaaabGHcFcbGGbGGbGHaabaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaalvaabcNFcWxcNMaaacNFcWxcNMaabcNFcWxcNMaabaabaabaabaaaaabaaaaaaaabaabaaaaaaaaaaabaaaaaacXucYtcYtcYucZucZucZucZCcZwcZxcSUcZEcZDcZHcZGcZJcZIcZKcZFcZFcZLcZOcZNcVjcVjcVjcZPcZRcZQcZMcZTdaacZVdacdabcSUcZScZSdafcVIcQPcZUdagcZWcZXcZYcSdcZZdahdajdaidadcQZcQZcQZcQZcQZcRecBQcPddaecsLcsLckKcQkdakcSAcSAdaldandamdaqcUTdatdascQkcBYcYicMfcsLcuccTBcBPaaaaaacBRcMkcJKcJKcxNcMkcJKcJKcxNcMkcJKcJKcBRaaaaabaabaaaaaaaaaaaaaaacuQcuQbGHdaucuQbGGbGHbGHbGHcTQcTQaabaabaabaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamhaabcNFdavcNMaaacNFdavcNMaaacNFdavcNMaabalvaabaabaabaabaabaabaabaaaaaaaaaaaaaaaaaaaabcXudaodapcZucZucZudaxdardardardardardardardazdaDdaCdaEdawdawdawdaFdaydaJdaAdaBdawdaydaKdaRdaQdaadaSdacdabdaGdaHdaIdaTdaUdaLdaMdaNcZcdaOdaPdaVdaYdaWdaZcXcdbacSndbcdbbdbbcQZcRecBPcPdchfcBNdaXckKcQkdbdcSAdbkdbecURdbmdbncUTdbpdbocQkcBYcYichfcsLchfchfcBPaabaabcBRdbfcKZcJKcxNdbfcKZcJKcxNdbfcKZcJKcBRaaaaaaaabaabaaaaaaaaaaaacuQdbgbGGcFccuQdbhcuQdbibGHaabaabaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaalvaaaaabaaaaaaaaaaabaabaabaaaaaaaabaabaaaalvaabaabaabaabaabaabaaaaaaaaaaaaaaaaaaaaaaabcXudbjcZucZucZucZucZudardbtdbldbudbwdbvdardbxdbqdbrcXDcVjcVjdbsdbBdbydbEdbCdbGdbFdbzcSUdbAdaQdaadbHdacdbJcSUdbDcZSdbKdbLcSddaMdaNdbNcSddaPdaVcXTcXUdbOcYbdbIcTodbSdbQdbWcQZcRecBPcPdchfdbMdbMckKcQkcQkdbXdbYcQkdbPcQkcQkcQkcQkcQkcQkcBYcYichfcsLcsLdbZcBPaaaaaacBRdbRcJKcJKcxNdbRcJKcJKcxNdbRcJKcJKcBRaaaaaaaaaaabaabaaaaaadcacuQbGGbGGcFccuQbGGbGGbGGbZZaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
diff --git a/_maps/map_files/shuttles/emergency_dept.dmm b/_maps/map_files/shuttles/emergency_dept.dmm
new file mode 100644
index 00000000000..64b903a78f5
--- /dev/null
+++ b/_maps/map_files/shuttles/emergency_dept.dmm
@@ -0,0 +1,127 @@
+"aa" = (/turf/space,/area/space)
+"ab" = (/turf/space,/turf/simulated/shuttle/wall{icon_state = "swall_f6"; dir = 2},/area/shuttle/escape)
+"ac" = (/obj/structure/grille,/obj/structure/window/full/shuttle,/turf/simulated/floor/plating,/area/shuttle/escape)
+"ad" = (/turf/space,/turf/simulated/shuttle/wall{tag = "icon-swall_f10"; icon_state = "swall_f10"; dir = 2},/area/shuttle/escape)
+"ae" = (/turf/simulated/shuttle/wall{icon_state = "swall12"; dir = 2},/area/shuttle/escape)
+"af" = (/turf/simulated/shuttle/wall{icon_state = "swallc4"},/area/shuttle/escape)
+"ag" = (/obj/machinery/computer/emergency_shuttle,/turf/simulated/shuttle/floor,/area/shuttle/escape)
+"ah" = (/turf/simulated/shuttle/wall{icon_state = "swallc3"},/area/shuttle/escape)
+"ai" = (/obj/machinery/computer/station_alert,/turf/simulated/shuttle/floor,/area/shuttle/escape)
+"aj" = (/obj/machinery/computer/communications,/obj/machinery/light/spot{tag = "icon-tube1 (NORTH)"; icon_state = "tube1"; dir = 1},/turf/simulated/shuttle/floor,/area/shuttle/escape)
+"ak" = (/obj/machinery/computer/security{network = list("SS13","Telecomms","Research Outpost","Mining Outpost")},/turf/simulated/shuttle/floor,/area/shuttle/escape)
+"al" = (/obj/structure/stool/bed/chair/comfy/blue{dir = 1},/turf/simulated/shuttle/floor,/area/shuttle/escape)
+"am" = (/obj/structure/table,/turf/simulated/shuttle/floor,/area/shuttle/escape)
+"an" = (/obj/machinery/computer/crew,/obj/machinery/light/spot{tag = "icon-tube1 (NORTH)"; icon_state = "tube1"; dir = 1},/turf/simulated/shuttle/floor,/area/shuttle/escape)
+"ao" = (/obj/machinery/computer/robotics,/turf/simulated/shuttle/floor,/area/shuttle/escape)
+"ap" = (/turf/simulated/shuttle/wall{icon_state = "swall3"; dir = 2},/area/shuttle/escape)
+"aq" = (/turf/simulated/shuttle/floor,/area/shuttle/escape)
+"ar" = (/obj/structure/stool/bed/chair/comfy/beige{dir = 1},/turf/simulated/shuttle/floor,/area/shuttle/escape)
+"as" = (/obj/structure/stool/bed/chair/comfy/brown{dir = 1},/turf/simulated/shuttle/floor,/area/shuttle/escape)
+"at" = (/obj/structure/stool/bed/chair/comfy/red{dir = 1},/turf/simulated/shuttle/floor,/area/shuttle/escape)
+"au" = (/obj/structure/stool/bed/chair/comfy/teal{dir = 1},/turf/simulated/shuttle/floor,/area/shuttle/escape)
+"av" = (/obj/structure/stool/bed/chair/comfy/purp{dir = 1},/turf/simulated/shuttle/floor,/area/shuttle/escape)
+"aw" = (/turf/simulated/shuttle/wall{icon_state = "swall13"; dir = 2},/area/shuttle/escape)
+"ax" = (/turf/simulated/shuttle/wall{icon_state = "swall14"; dir = 2},/area/shuttle/escape)
+"ay" = (/obj/machinery/door/airlock/glass_command{name = "Escape Shuttle Cockpit"; req_access_txt = "19"},/turf/simulated/shuttle/floor,/area/shuttle/escape)
+"az" = (/obj/structure/stool/bed/chair,/turf/simulated/shuttle/floor4,/area/shuttle/escape)
+"aA" = (/obj/machinery/status_display{pixel_y = 30},/obj/machinery/light/spot{tag = "icon-tube1 (NORTH)"; icon_state = "tube1"; dir = 1},/obj/structure/stool/bed/chair,/turf/simulated/shuttle/floor4,/area/shuttle/escape)
+"aB" = (/obj/structure/grille,/obj/structure/window/full/shuttle{icon_state = "16"},/turf/simulated/floor/plating,/area/shuttle/escape)
+"aC" = (/turf/simulated/floor/plasteel{icon_state = "cafeteria"; dir = 2},/area/shuttle/escape)
+"aD" = (/obj/structure/stool/bed/chair{dir = 4},/turf/simulated/floor/plasteel{icon_state = "cafeteria"; dir = 2},/area/shuttle/escape)
+"aE" = (/obj/structure/table/woodentable,/turf/simulated/floor/plasteel{icon_state = "cafeteria"; dir = 2},/area/shuttle/escape)
+"aF" = (/obj/machinery/status_display{pixel_y = 30},/obj/machinery/light/spot{tag = "icon-tube1 (NORTH)"; icon_state = "tube1"; dir = 1},/turf/simulated/floor/plasteel{icon_state = "cafeteria"; dir = 2},/area/shuttle/escape)
+"aG" = (/obj/item/weapon/storage/box/drinkingglasses,/obj/item/weapon/reagent_containers/food/drinks/shaker,/obj/structure/table/woodentable,/turf/simulated/floor/plasteel{icon_state = "cafeteria"; dir = 2},/area/shuttle/escape)
+"aH" = (/obj/structure/closet/walllocker/emerglocker{pixel_x = -28},/turf/simulated/shuttle/floor4,/area/shuttle/escape)
+"aI" = (/turf/simulated/shuttle/floor4,/area/shuttle/escape)
+"aJ" = (/obj/structure/grille,/obj/structure/window/full/shuttle{icon_state = "15"},/turf/simulated/floor/plating,/area/shuttle/escape)
+"aK" = (/obj/structure/stool/bed/chair,/turf/simulated/floor/plasteel{icon_state = "cafeteria"; dir = 2},/area/shuttle/escape)
+"aL" = (/obj/machinery/chem_dispenser/beer,/obj/structure/table/woodentable,/turf/simulated/floor/plasteel{icon_state = "cafeteria"; dir = 2},/area/shuttle/escape)
+"aM" = (/obj/machinery/door/airlock/glass_security{name = "Escape Shuttle Cell"; req_access_txt = "2"},/turf/simulated/floor/plating,/area/shuttle/escape)
+"aN" = (/obj/item/weapon/storage/box/drinkingglasses,/obj/item/weapon/reagent_containers/food/drinks/shaker,/obj/item/clothing/mask/cigarette/cigar,/obj/structure/table/woodentable,/turf/simulated/floor/plasteel{icon_state = "cafeteria"; dir = 2},/area/shuttle/escape)
+"aO" = (/obj/machinery/chem_dispenser/soda,/obj/structure/table/woodentable,/turf/simulated/floor/plasteel{icon_state = "cafeteria"; dir = 2},/area/shuttle/escape)
+"aP" = (/obj/machinery/door/airlock/shuttle{aiControlDisabled = 1; hackProof = 1; id_tag = "s_docking_airlock"; name = "Shuttle Hatch"},/turf/simulated/floor/plating,/area/shuttle/escape)
+"aQ" = (/obj/structure/stool/bed/chair{dir = 1},/turf/simulated/shuttle/floor4,/area/shuttle/escape)
+"aR" = (/obj/structure/stool/bed/chair{dir = 1},/turf/simulated/floor/plasteel{icon_state = "cafeteria"; dir = 2},/area/shuttle/escape)
+"aS" = (/turf/simulated/shuttle/wall{tag = "icon-swall7"; icon_state = "swall7"; dir = 2},/area/shuttle/escape)
+"aT" = (/obj/docking_port/mobile/emergency{dir = 4; dwidth = 11; height = 13; timid = 1; width = 24},/obj/machinery/door/airlock/shuttle{aiControlDisabled = 1; hackProof = 1; id_tag = "s_docking_airlock"; name = "Shuttle Hatch"},/turf/simulated/shuttle/floor,/area/shuttle/escape)
+"aU" = (/turf/simulated/floor/plasteel,/area/shuttle/escape)
+"aV" = (/obj/structure/stool/bed/chair{dir = 4},/obj/item/device/radio/intercom{dir = 8; name = "station intercom (General)"; pixel_x = -28},/obj/machinery/light/spot{tag = "icon-tube1 (WEST)"; icon_state = "tube1"; dir = 8},/obj/structure/window/reinforced{dir = 1},/turf/simulated/shuttle/floor{icon_state = "floor2"},/area/shuttle/escape)
+"aW" = (/obj/machinery/door/window/northleft{req_access_txt = "32"},/turf/simulated/shuttle/floor{icon_state = "floor2"},/area/shuttle/escape)
+"aX" = (/obj/structure/stool/bed/chair{dir = 8},/obj/structure/window/reinforced{dir = 1},/turf/simulated/shuttle/floor{icon_state = "floor2"},/area/shuttle/escape)
+"aY" = (/obj/structure/stool/bed/chair{dir = 4},/obj/structure/window/reinforced{dir = 1},/turf/simulated/floor/plasteel,/area/shuttle/escape)
+"aZ" = (/obj/structure/stool/bed/chair{dir = 8},/obj/structure/window/reinforced{dir = 1},/turf/simulated/floor/plasteel,/area/shuttle/escape)
+"ba" = (/obj/structure/stool/bed/chair{dir = 4},/obj/structure/window/reinforced{dir = 1},/turf/simulated/shuttle/floor{icon_state = "floor5"},/area/shuttle/escape)
+"bb" = (/obj/machinery/door/window/northleft{req_access_txt = "47"},/turf/simulated/shuttle/floor{icon_state = "floor5"},/area/shuttle/escape)
+"bc" = (/obj/structure/stool/bed/chair{dir = 8},/obj/structure/closet/walllocker/emerglocker{pixel_x = 28},/obj/machinery/light/spot{tag = "icon-tube1 (EAST)"; icon_state = "tube1"; dir = 4},/obj/structure/window/reinforced{dir = 1},/turf/simulated/shuttle/floor{icon_state = "floor5"},/area/shuttle/escape)
+"bd" = (/obj/structure/stool/bed/chair{dir = 4},/turf/simulated/shuttle/floor{icon_state = "floor2"},/area/shuttle/escape)
+"be" = (/turf/simulated/shuttle/floor{icon_state = "floor2"},/area/shuttle/escape)
+"bf" = (/obj/structure/stool/bed/chair{dir = 8},/turf/simulated/shuttle/floor{icon_state = "floor2"},/area/shuttle/escape)
+"bg" = (/obj/structure/grille,/obj/structure/window/full/shuttle{icon_state = "8"},/turf/simulated/floor/plating,/area/shuttle/escape)
+"bh" = (/obj/structure/stool/bed/chair{dir = 4},/turf/simulated/floor/plasteel,/area/shuttle/escape)
+"bi" = (/obj/structure/stool/bed/chair{dir = 8},/turf/simulated/floor/plasteel,/area/shuttle/escape)
+"bj" = (/obj/structure/stool/bed/chair{dir = 4},/turf/simulated/shuttle/floor{icon_state = "floor5"},/area/shuttle/escape)
+"bk" = (/turf/simulated/shuttle/floor{icon_state = "floor5"},/area/shuttle/escape)
+"bl" = (/obj/structure/stool/bed/chair{dir = 8},/turf/simulated/shuttle/floor{icon_state = "floor5"},/area/shuttle/escape)
+"bm" = (/obj/structure/stool/bed/chair{dir = 4},/obj/structure/window/reinforced,/turf/simulated/shuttle/floor{icon_state = "floor2"},/area/shuttle/escape)
+"bn" = (/obj/machinery/door/window/southright{req_access_txt = "32"},/turf/simulated/shuttle/floor{icon_state = "floor2"},/area/shuttle/escape)
+"bo" = (/obj/structure/stool/bed/chair{dir = 8},/obj/structure/window/reinforced,/turf/simulated/shuttle/floor{icon_state = "floor2"},/area/shuttle/escape)
+"bp" = (/obj/structure/window/reinforced,/obj/structure/stool/bed/chair{dir = 4},/turf/simulated/floor/plasteel,/area/shuttle/escape)
+"bq" = (/obj/structure/window/reinforced,/obj/structure/stool/bed/chair{dir = 8},/turf/simulated/floor/plasteel,/area/shuttle/escape)
+"br" = (/obj/structure/stool/bed/chair{dir = 4},/obj/structure/window/reinforced,/turf/simulated/shuttle/floor{icon_state = "floor5"},/area/shuttle/escape)
+"bs" = (/obj/machinery/door/window/southright{req_access_txt = "47"},/turf/simulated/shuttle/floor{icon_state = "floor5"},/area/shuttle/escape)
+"bt" = (/obj/structure/stool/bed/chair{dir = 8},/obj/structure/window/reinforced,/turf/simulated/shuttle/floor{icon_state = "floor5"},/area/shuttle/escape)
+"bu" = (/obj/machinery/light/spot{tag = "icon-tube1 (WEST)"; icon_state = "tube1"; dir = 8},/turf/simulated/floor/plasteel,/area/shuttle/escape)
+"bv" = (/obj/machinery/light/spot{tag = "icon-tube1 (EAST)"; icon_state = "tube1"; dir = 4},/turf/simulated/floor/plasteel,/area/shuttle/escape)
+"bw" = (/obj/machinery/door/airlock/shuttle{aiControlDisabled = 1; hackProof = 1; id_tag = "s_docking_airlock"; name = "Shuttle Hatch"},/turf/simulated/shuttle/floor,/area/shuttle/escape)
+"bx" = (/obj/structure/noticeboard,/turf/simulated/shuttle/wall{icon_state = "swall12"; dir = 2},/area/shuttle/escape)
+"by" = (/obj/machinery/door/airlock/shuttle{aiControlDisabled = 1; hackProof = 1; id_tag = null; name = "Shuttle Cargo Hatch"},/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/shuttle/escape)
+"bz" = (/obj/structure/stool/bed/chair{dir = 4},/obj/structure/window/reinforced{dir = 1},/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/shuttle/escape)
+"bA" = (/obj/machinery/door/window/northleft{req_access_txt = "5"},/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/shuttle/escape)
+"bB" = (/obj/structure/stool/bed/chair{dir = 8},/obj/structure/window/reinforced{dir = 1},/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/shuttle/escape)
+"bC" = (/obj/machinery/door/airlock/glass_medical{id_tag = null; name = "Escape Shuttle Infirmary"; req_access_txt = "0"},/turf/simulated/floor/plasteel,/area/shuttle/escape)
+"bD" = (/turf/simulated/shuttle/wall{icon_state = "swall11"; dir = 2},/area/shuttle/escape)
+"bE" = (/obj/machinery/door/airlock/shuttle{aiControlDisabled = 1; hackProof = 1; id_tag = "s_docking_airlock"; name = "Shuttle Hatch"},/turf/simulated/shuttle/floor{icon_state = "floor2"},/area/shuttle/escape)
+"bF" = (/obj/structure/stool/bed/chair{dir = 4},/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/shuttle/escape)
+"bG" = (/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/shuttle/escape)
+"bH" = (/obj/structure/stool/bed/chair{dir = 8},/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/shuttle/escape)
+"bI" = (/obj/machinery/vending/wallmed1{layer = 3.3; name = "Emergency NanoMed"; pixel_x = 28; pixel_y = 0; req_access_txt = "0"},/obj/machinery/sleeper,/turf/simulated/floor/plasteel,/area/shuttle/escape)
+"bJ" = (/obj/item/device/radio/intercom{dir = 4; name = "station intercom (General)"; pixel_x = 28},/obj/item/weapon/extinguisher,/turf/simulated/floor/plasteel,/area/shuttle/escape)
+"bK" = (/obj/structure/closet/cardboard,/obj/machinery/light/spot{tag = "icon-tube1 (WEST)"; icon_state = "tube1"; dir = 8},/turf/simulated/floor/plasteel,/area/shuttle/escape)
+"bL" = (/obj/machinery/recharge_station,/turf/simulated/floor/plasteel,/area/shuttle/escape)
+"bM" = (/obj/structure/table,/obj/item/weapon/storage/firstaid/o2{layer = 2.8; pixel_x = 4; pixel_y = 6},/obj/item/weapon/storage/firstaid/regular{pixel_x = 2; pixel_y = 6},/obj/item/weapon/storage/firstaid/regular{pixel_x = -2; pixel_y = 4},/obj/item/bodybag/cryobag{pixel_x = 5},/obj/item/weapon/storage/firstaid/fire,/obj/item/weapon/storage/firstaid/regular{pixel_x = 2; pixel_y = 3},/turf/simulated/floor/plasteel,/area/shuttle/escape)
+"bN" = (/obj/structure/stool/bed/roller,/turf/simulated/floor/plasteel,/area/shuttle/escape)
+"bO" = (/obj/machinery/sleeper,/obj/machinery/light/spot{tag = "icon-tube1 (EAST)"; icon_state = "tube1"; dir = 4},/turf/simulated/floor/plasteel,/area/shuttle/escape)
+"bP" = (/turf/space,/turf/simulated/shuttle/wall{icon_state = "swall_f5"; dir = 2},/area/shuttle/escape)
+"bQ" = (/obj/structure/window/reinforced{dir = 1},/obj/structure/shuttle/engine/heater,/turf/simulated/floor/plating/airless,/area/shuttle/escape)
+"bR" = (/obj/structure/shuttle/engine/heater,/obj/structure/window/reinforced{dir = 1},/turf/simulated/floor/plating/airless,/area/shuttle/escape)
+"bS" = (/turf/space,/turf/simulated/shuttle/wall{icon_state = "swall_f9"; dir = 2},/area/shuttle/escape)
+"bT" = (/obj/structure/shuttle/engine/propulsion,/turf/space,/area/shuttle/escape)
+"bU" = (/turf/space,/area/shuttle/escape)
+
+(1,1,1) = {"
+aaaaaaaaaaabacadaaaaaaaaaa
+aaaaabaeaeafagahaeaeadaaaa
+aaabafaiajakalamanaoahadaa
+aaapaqarasataqaqauavaqapaa
+aaapaqaqaqaqaqaqaqaqaqapaa
+abawaeaeaeaxayaeaeaeaeawad
+apazaAazazaBaCaDaEaCaFaGap
+apaHaIaIaIaJaCaDaEaCaKaLap
+apaIaIaIaIaMaCaDaEaCaNaOap
+aPaIaIaQaQaBaCaDaEaCaRaRac
+aSaeaeaeaeaJaCaDaEaCaCaCap
+aTaUaUaUaUaUaUaUaUaUaUaUap
+apaVaWaXaBaYaUaZaBbabbbcap
+aBbdbebfbgbhaUbibgbjbkblaB
+bgbdbebfbgbhaUbibgbjbkblbg
+aJbmbnboaJbpaUbqaJbrbsbtaJ
+apbuaUaUaUaUaUaUaUaUaUbvap
+bwaUaUaUaUaUaUaUaUaUaUaUac
+aSaebxbyaBbzbAbBaBbCacaebD
+bEaUaUaUbgbFbGbHbgaUaUbIap
+acaUaUaUbgbFbGbHbgaUaUbJap
+apbKbLbLaJbFbGbHaJbNbMbOap
+bPaxbQbQawaeaeaeawbRbRaxbS
+aabPbTbTbSbUbUbUbPbTbTbSaa
+"}
+
diff --git a/_maps/map_files/templates/shelter_2.dmm b/_maps/map_files/templates/shelter_2.dmm
new file mode 100644
index 00000000000..4ba11cef609
--- /dev/null
+++ b/_maps/map_files/templates/shelter_2.dmm
@@ -0,0 +1,41 @@
+"a" = (/turf/simulated/wall/survival,/area/survivalpod)
+"b" = (/obj/structure/sign/mining/survival{dir = 8},/turf/simulated/wall/survival,/area/survivalpod)
+"c" = (/obj/machinery/smartfridge/survival_pod/loaded,/turf/simulated/floor/pod,/area/survivalpod)
+"d" = (/turf/simulated/floor/pod,/area/survivalpod)
+"e" = (/obj/machinery/door/window/survival_pod{dir = 1},/turf/simulated/floor/carpet/black,/area/survivalpod)
+"f" = (/obj/machinery/light,/turf/simulated/floor/carpet/black,/area/survivalpod)
+"g" = (/obj/structure/sign/mining/survival{tag = "icon-survival (NORTH)"; icon_state = "survival"; dir = 1},/turf/simulated/wall/survival,/area/survivalpod)
+"h" = (/obj/structure/fans,/turf/simulated/floor/pod,/area/survivalpod)
+"i" = (/obj/machinery/sleeper/survival_pod,/turf/simulated/floor/pod,/area/survivalpod)
+"j" = (/obj/structure/table/survival_pod,/obj/item/weapon/storage/firstaid/regular,/obj/item/weapon/storage/firstaid/brute{pixel_x = 4; pixel_y = -2},/turf/simulated/floor/pod,/area/survivalpod)
+"k" = (/obj/structure/table/wood/fancy/black{pixel_y = -9},/obj/structure/window/reinforced/survival_pod{dir = 1},/obj/machinery/microwave,/turf/simulated/floor/carpet/black,/area/survivalpod)
+"l" = (/obj/structure/sink/kitchen{dir = 4; pixel_x = -11},/turf/simulated/floor/carpet/black,/area/survivalpod)
+"m" = (/obj/structure/sign/mining/survival,/turf/simulated/wall/survival,/area/survivalpod)
+"n" = (/obj/structure/curtain/black,/obj/machinery/shower{pixel_y = 20},/turf/simulated/floor/pod{pixel_y = 0},/area/survivalpod)
+"o" = (/obj/structure/window/reinforced/survival_pod{dir = 8},/obj/machinery/door/window/survival_pod{dir = 1},/turf/simulated/floor/carpet/black,/area/survivalpod)
+"p" = (/obj/structure/window/reinforced/survival_pod{dir = 8},/turf/simulated/floor/carpet/black,/area/survivalpod)
+"q" = (/obj/structure/window/reinforced/survival_pod{dir = 9},/turf/simulated/floor/carpet/black,/area/survivalpod)
+"r" = (/turf/simulated/floor/carpet/black,/area/survivalpod)
+"s" = (/obj/item/device/gps/computer,/turf/simulated/floor/pod,/area/survivalpod)
+"t" = (/obj/structure/stool/bed/pod,/obj/item/weapon/bedsheet/brown,/turf/simulated/floor/pod,/area/survivalpod)
+"u" = (/obj/structure/tubes,/obj/item/weapon/twohanded/required/kirbyplants,/turf/simulated/floor/pod,/area/survivalpod)
+"v" = (/obj/structure/window/reinforced/survival_pod{dir = 1},/obj/structure/displaycase{desc = "A display case containing an expensive forgery, probably."; locked = 1; pixel_y = -4; req_access_txt = "48"; start_showpiece_type = /obj/item/fakeartefact},/turf/simulated/floor/carpet/black{dir = 1},/area/survivalpod)
+"w" = (/obj/structure/fans/tiny,/obj/machinery/door/airlock/survival_pod,/turf/simulated/floor/pod,/area/survivalpod)
+"x" = (/obj/structure/sign/mining/survival{tag = "icon-survival (EAST)"; icon_state = "survival"; dir = 4},/turf/simulated/wall/survival,/area/survivalpod)
+"y" = (/obj/structure/toilet/secret{pixel_y = 12},/turf/simulated/floor/pod,/area/survivalpod)
+"z" = (/obj/structure/window/reinforced/survival_pod{dir = 1},/obj/item/cardboard_cutout{desc = "A cardboard cutout of a xenomorph maid."; icon_state = "cutout_lusty"; name = "lusty xenomorph maid"}, /turf/simulated/floor/carpet/black,/area/survivalpod)
+"A" = (/obj/structure/table/wood/fancy/black,/obj/machinery/light{dir = 4},/obj/item/weapon/reagent_containers/food/drinks/drinkingglass{pixel_x = 6; pixel_y = 3},/obj/item/weapon/reagent_containers/food/drinks/bottle/wine,/turf/simulated/floor/carpet/black,/area/survivalpod)
+"B" = (/obj/structure/table/wood/fancy/black,/obj/item/weapon/reagent_containers/food/drinks/drinkingglass{pixel_x = -4; pixel_y = 1},/obj/effect/spawner/lootdrop/three_course_meal,/turf/simulated/floor/carpet/black,/area/survivalpod)
+"C" = (/obj/structure/stool/bed/chair/comfy/black{dir = 1},/turf/simulated/floor/carpet/black,/area/survivalpod)
+"D" = (/obj/structure/sign/mining,/turf/simulated/wall/survival,/area/survivalpod)
+
+(1,1,1) = {"
+agagaga
+bhcsnyx
+aidtoza
+bjdupAx
+akevqBa
+blfrrCx
+amawaDa
+"}
+
diff --git a/code/__DEFINES/genetics.dm b/code/__DEFINES/genetics.dm
index 8e7be007d12..4f07d54ee01 100644
--- a/code/__DEFINES/genetics.dm
+++ b/code/__DEFINES/genetics.dm
@@ -96,6 +96,7 @@
#define NUTRITION_LEVEL_FED 350
#define NUTRITION_LEVEL_HUNGRY 250
#define NUTRITION_LEVEL_STARVING 150
+#define NUTRITION_LEVEL_CURSED 0
//Blood levels
#define BLOOD_VOLUME_NORMAL 560
diff --git a/code/__DEFINES/misc.dm b/code/__DEFINES/misc.dm
index 99079fd81bb..a2f487086ae 100644
--- a/code/__DEFINES/misc.dm
+++ b/code/__DEFINES/misc.dm
@@ -332,4 +332,6 @@
#define STATION_GOAL_BUDGET 1
#define FIRST_DIAG_STEP 1
-#define SECOND_DIAG_STEP 2
\ No newline at end of file
+#define SECOND_DIAG_STEP 2
+
+#define ARBITRARY_VIEWRANGE_NOHUD 2
\ No newline at end of file
diff --git a/code/_onclick/hud/hud.dm b/code/_onclick/hud/hud.dm
index 2e1d87f605e..f4b43516cd0 100644
--- a/code/_onclick/hud/hud.dm
+++ b/code/_onclick/hud/hud.dm
@@ -100,6 +100,15 @@
if(display_hud_version > HUD_VERSIONS) //If the requested version number is greater than the available versions, reset back to the first version
display_hud_version = 1
+ if(mymob.client.view < world.view)
+ if(mymob.client.view < ARBITRARY_VIEWRANGE_NOHUD)
+ to_chat(mymob, "HUD is unavailable with this view range.")
+ display_hud_version = HUD_STYLE_NOHUD
+ else
+ if(display_hud_version == HUD_STYLE_STANDARD)
+ to_chat(mymob, "Standard HUD mode is unavailable with a smaller-than-normal view range.")
+ display_hud_version = HUD_STYLE_REDUCED
+
switch(display_hud_version)
if(HUD_STYLE_STANDARD) //Default HUD
hud_shown = 1 //Governs behavior of other procs
diff --git a/code/controllers/Processes/shuttles.dm b/code/controllers/Processes/shuttles.dm
index 21f2e8c390e..4f47bda014c 100644
--- a/code/controllers/Processes/shuttles.dm
+++ b/code/controllers/Processes/shuttles.dm
@@ -25,7 +25,7 @@ var/const/CALL_SHUTTLE_REASON_LENGTH = 12
var/points_per_crate = 5 //points gained per crate returned
var/points_per_intel = 250 //points gained per intel returned
var/points_per_plasma = 5 //points gained per plasma returned
- var/points_per_design = 25 //points gained per max reliability research design returned (only for initilally unreliable designs)
+ var/points_per_design = 25 //points gained per research design returned
var/centcom_message = "" //Remarks from Centcom on how well you checked the last order.
var/list/discoveredPlants = list() //Typepaths for unusual plants we've already sent CentComm, associated with their potencies
var/list/techLevels = list()
diff --git a/code/datums/diseases/advance/symptoms/vision.dm b/code/datums/diseases/advance/symptoms/vision.dm
index 2d7fb9467df..b5249e11740 100644
--- a/code/datums/diseases/advance/symptoms/vision.dm
+++ b/code/datums/diseases/advance/symptoms/vision.dm
@@ -28,22 +28,25 @@ Bonus
/datum/symptom/visionloss/Activate(datum/disease/advance/A)
..()
if(prob(SYMPTOM_ACTIVATION_PROB))
- var/mob/living/M = A.affected_mob
+ var/mob/living/carbon/M = A.affected_mob
+ var/obj/item/organ/internal/eyes/eyes = M.get_int_organ(/obj/item/organ/internal/eyes)
+ if(!eyes) //NO EYES, NO PROBLEM! Rip out your eyes today to prevent future blindness!
+ return
switch(A.stage)
if(1, 2)
to_chat(M, "Your eyes itch.")
if(3, 4)
to_chat(M, "Your eyes burn!")
- M.blur_eyes(10)
- M.adjust_eye_damage(1)
+ M.EyeBlurry(20)
+ eyes.take_damage(1)
else
to_chat(M, "Your eyes burn horrificly!")
- M.blur_eyes(20)
- M.adjust_eye_damage(5)
- if(M.eye_damage >= 10)
- M.become_nearsighted()
- if(prob(M.eye_damage - 10 + 1))
- if(M.become_blind())
+ M.EyeBlurry(30)
+ eyes.take_damage(5)
+ if(eyes.damage >= 10)
+ M.BecomeNearsighted()
+ if(prob(eyes.damage - 10 + 1))
+ if(M.BecomeBlind())
to_chat(M, "You go blind!")
diff --git a/code/datums/outfits/outfit_admin.dm b/code/datums/outfits/outfit_admin.dm
index 5c11c42930a..40c38ac0627 100644
--- a/code/datums/outfits/outfit_admin.dm
+++ b/code/datums/outfits/outfit_admin.dm
@@ -1173,3 +1173,39 @@
suit = /obj/item/clothing/suit/wizrobe/marisa
shoes = /obj/item/clothing/shoes/sandal/marisa
head = /obj/item/clothing/head/wizard/marisa
+
+
+/datum/outfit/admin/dark_priest
+ name = "Dark Priest"
+
+ uniform = /obj/item/clothing/under/color/black
+ suit = /obj/item/clothing/suit/hooded/chaplain_hoodie
+ back = /obj/item/weapon/storage/backpack
+ head = /obj/item/clothing/head/chaplain_hood
+ gloves = /obj/item/clothing/gloves/color/black
+ shoes = /obj/item/clothing/shoes/black
+ l_ear = /obj/item/device/radio/headset/syndicate
+ id = /obj/item/weapon/card/id/syndicate
+ r_hand = /obj/item/weapon/nullrod/armblade
+ backpack_contents = list(
+ /obj/item/weapon/storage/box/survival = 1,
+ /obj/item/device/flashlight = 1,
+ )
+
+/datum/outfit/admin/dark_priest/post_equip(mob/living/carbon/human/H, visualsOnly = FALSE)
+ . = ..()
+ if(visualsOnly)
+ return
+ var/obj/item/weapon/card/id/I = H.wear_id
+ if(istype(I))
+ apply_to_card(I, H, get_all_accesses(), "Dark Priest", "syndie")
+ var/obj/item/weapon/nullrod/armblade/B = H.r_hand
+ if(istype(B))
+ B.force = 20
+ B.name = "blessing of the reaper"
+ B.desc = "Sometimes, someone's just gotta die."
+ var/obj/item/device/radio/headset/R = H.l_ear
+ if(istype(R))
+ R.flags |= NODROP
+ var/obj/item/weapon/implant/dust/D = new /obj/item/weapon/implant/dust(H)
+ D.implant(H)
\ No newline at end of file
diff --git a/code/datums/shuttles.dm b/code/datums/shuttles.dm
index 24007dbafee..3d0f877a3aa 100644
--- a/code/datums/shuttles.dm
+++ b/code/datums/shuttles.dm
@@ -39,6 +39,12 @@
suffix = "cyb"
name = "emergency shuttle (Cyberiad)"
+/datum/map_template/shuttle/emergency/dept
+ suffix = "dept"
+ name = "emergency shuttle (department)"
+ description = "Features include: areas for each department, and a small bar."
+ admin_notes = "Designed to reduce chaos. Each dept requires dept access."
+
/datum/map_template/shuttle/emergency/clown
suffix = "clown"
name = "Snappop(tm)!"
diff --git a/code/datums/supplypacks.dm b/code/datums/supplypacks.dm
index 10f6c242d34..dbe111b6dbe 100644
--- a/code/datums/supplypacks.dm
+++ b/code/datums/supplypacks.dm
@@ -250,6 +250,17 @@ var/list/all_supply_groups = list(supply_emergency,supply_security,supply_engine
cost = 10
containername = "disabler crate"
+/datum/supply_packs/security/forensics
+ name = "Forensics Crate"
+ contains = list(/obj/item/device/detective_scanner,
+ /obj/item/weapon/storage/box/evidence,
+ /obj/item/device/camera,
+ /obj/item/device/taperecorder,
+ /obj/item/toy/crayon/white,
+ /obj/item/clothing/head/det_hat)
+ cost = 20
+ containername = "forensics crate"
+
///// Armory stuff
/datum/supply_packs/security/armory
@@ -895,6 +906,13 @@ var/list/all_supply_groups = list(supply_emergency,supply_security,supply_engine
containername = "tank transfer valves crate"
access = access_rd
+/datum/supply_packs/science/prototype
+ name = "Machine Prototype Crate"
+ contains = list(/obj/item/device/machineprototype)
+ cost = 80
+ containertype = /obj/structure/closet/crate/secure/scisec
+ containername = "machine prototype crate"
+ access = access_research
//////////////////////////////////////////////////////////////////////////////
//////////////////////////// Organic /////////////////////////////////////////
diff --git a/code/datums/uplink_item.dm b/code/datums/uplink_item.dm
index 1cf08abebd0..1aa65685d5e 100644
--- a/code/datums/uplink_item.dm
+++ b/code/datums/uplink_item.dm
@@ -922,6 +922,15 @@ var/list/uplink_items = list()
cost = 2
surplus = 30
+/datum/uplink_item/stealthy_tools/cutouts
+ name = "Adaptive Cardboard Cutouts"
+ desc = "These cardboard cutouts are coated with a thin material that prevents discoloration and makes the images on them appear more lifelike. This pack contains three as well as a \
+ spraycan for changing their appearances."
+ reference = "ADCC"
+ item = /obj/item/weapon/storage/box/syndie_kit/cutouts
+ cost = 1
+ surplus = 20
+
// DEVICE AND TOOLS
/datum/uplink_item/device_tools
diff --git a/code/game/atoms.dm b/code/game/atoms.dm
index 5d1dd5c74fb..292ad651235 100644
--- a/code/game/atoms.dm
+++ b/code/game/atoms.dm
@@ -34,6 +34,9 @@
//Detective Work, used for the duplicate data points kept in the scanners
var/list/original_atom
+ //Detective Work, used for allowing a given atom to leave its fibers on stuff. Allowed by default
+ var/can_leave_fibers = TRUE
+
var/allow_spin = 1 //Set this to 1 for a _target_ that is being thrown at; if an atom has this set to 1 then atoms thrown AT it will not spin; currently used for the singularity. -Fox
var/admin_spawned = 0 //was this spawned by an admin? used for stat tracking stuff.
@@ -469,4 +472,4 @@
/atom/on_varedit(modified_var)
if(!Debug2)
admin_spawned = TRUE
- ..()
\ No newline at end of file
+ ..()
diff --git a/code/game/gamemodes/antag_spawner.dm b/code/game/gamemodes/antag_spawner.dm
index e0187e940e4..d85b3c91258 100644
--- a/code/game/gamemodes/antag_spawner.dm
+++ b/code/game/gamemodes/antag_spawner.dm
@@ -1,7 +1,7 @@
/obj/item/weapon/antag_spawner
throw_speed = 1
throw_range = 5
- w_class = 1
+ w_class = WEIGHT_CLASS_TINY
var/used = 0
/obj/item/weapon/antag_spawner/proc/spawn_antag(var/client/C, var/turf/T, var/type = "")
diff --git a/code/game/gamemodes/changeling/powers/augmented_eyesight.dm b/code/game/gamemodes/changeling/powers/augmented_eyesight.dm
index a9899b33462..bf16d90d55e 100644
--- a/code/game/gamemodes/changeling/powers/augmented_eyesight.dm
+++ b/code/game/gamemodes/changeling/powers/augmented_eyesight.dm
@@ -38,7 +38,6 @@
icon_state = "ling_eyeshield"
eye_colour = null
implant_overlay = null
- origin_tech = "biotech=4"
slot = "eye_ling"
status = 0
aug_message = "We feel a minute twitch in our eyes, our eyes feel more durable."
@@ -61,7 +60,6 @@
icon_state = "ling_thermal"
eye_colour = null
implant_overlay = null
- origin_tech = "biotech=5;magnets=5"
slot = "eye_ling"
status = 0
aug_message = "We feel a minute twitch in our eyes, and darkness creeps away."
@@ -82,4 +80,4 @@
var/mob/living/carbon/human/H = owner
H.weakeyes = 0
H.vision_type = null
- ..()
\ No newline at end of file
+ ..()
diff --git a/code/game/gamemodes/changeling/powers/mutations.dm b/code/game/gamemodes/changeling/powers/mutations.dm
index 9a6438853c0..c7d393b77a7 100644
--- a/code/game/gamemodes/changeling/powers/mutations.dm
+++ b/code/game/gamemodes/changeling/powers/mutations.dm
@@ -125,7 +125,7 @@
icon_state = "arm_blade"
item_state = "arm_blade"
flags = ABSTRACT | NODROP
- w_class = 5
+ w_class = WEIGHT_CLASS_HUGE
sharp = 1
edge = 1
force = 25
diff --git a/code/game/gamemodes/cult/cult_items.dm b/code/game/gamemodes/cult/cult_items.dm
index 6ab24e1d8b4..97511414e7a 100644
--- a/code/game/gamemodes/cult/cult_items.dm
+++ b/code/game/gamemodes/cult/cult_items.dm
@@ -3,7 +3,7 @@
desc = "An arcane weapon wielded by the followers of a cult."
icon_state = "cultblade"
item_state = "cultblade"
- w_class = 4
+ w_class = WEIGHT_CLASS_BULKY
force = 30
throwforce = 10
sharp = 1
@@ -38,7 +38,7 @@
desc = "A strange dagger said to be used by sinister groups for \"preparing\" a corpse before sacrificing it to their dark gods."
icon = 'icons/obj/wizard.dmi'
icon_state = "render"
- w_class = 2
+ w_class = WEIGHT_CLASS_SMALL
force = 15
throwforce = 25
var/cooldown = 0
@@ -123,7 +123,7 @@
icon_state = "cult_armour"
item_state = "cult_armour"
desc = "A bulky suit of armour, bristling with spikes. It looks space proof."
- w_class = 3
+ w_class = WEIGHT_CLASS_NORMAL
allowed = list(/obj/item/weapon/tome,/obj/item/weapon/melee/cultblade,/obj/item/weapon/tank)
slowdown = 1
armor = list(melee = 60, bullet = 50, laser = 30, energy = 15, bomb = 30, bio = 30, rad = 30)
@@ -133,7 +133,7 @@
desc = "Empowered garb which creates a powerful shield around the user."
icon_state = "cult_armour"
item_state = "cult_armour"
- w_class = 4
+ w_class = WEIGHT_CLASS_BULKY
armor = list(melee = 50, bullet = 40, laser = 50, energy = 30, bomb = 50, bio = 30, rad = 30)
body_parts_covered = UPPER_TORSO|LOWER_TORSO|LEGS|ARMS
allowed = list(/obj/item/weapon/tome,/obj/item/weapon/melee/cultblade)
diff --git a/code/game/gamemodes/cult/cult_structures.dm b/code/game/gamemodes/cult/cult_structures.dm
index 1f35890373c..60b9fcb2c85 100644
--- a/code/game/gamemodes/cult/cult_structures.dm
+++ b/code/game/gamemodes/cult/cult_structures.dm
@@ -261,7 +261,7 @@ var/list/blacklisted_pylon_turfs = typecacheof(list(
/obj/item/weapon/storage/box/cult
name = "Dark Forge Cache"
can_hold = list("/obj/item/clothing/suit/space/cult", "/obj/item/clothing/head/helmet/space/cult")
- max_w_class = 3
+ max_w_class = WEIGHT_CLASS_NORMAL
/obj/item/weapon/storage/box/cult/New()
..()
diff --git a/code/game/gamemodes/cult/ritual.dm b/code/game/gamemodes/cult/ritual.dm
index 3a48f472603..1553ec0aa94 100644
--- a/code/game/gamemodes/cult/ritual.dm
+++ b/code/game/gamemodes/cult/ritual.dm
@@ -24,7 +24,7 @@
icon_state ="tome"
throw_speed = 2
throw_range = 5
- w_class = 2
+ w_class = WEIGHT_CLASS_SMALL
var/scribereduct = 0
var/canbypass = 0 //ADMINBUS
diff --git a/code/game/gamemodes/miniantags/abduction/gland.dm b/code/game/gamemodes/miniantags/abduction/gland.dm
index 1c481e7c333..e58665c514e 100644
--- a/code/game/gamemodes/miniantags/abduction/gland.dm
+++ b/code/game/gamemodes/miniantags/abduction/gland.dm
@@ -113,7 +113,7 @@
owner.set_species(species)
/obj/item/organ/internal/heart/gland/ventcrawling
- origin_tech = "materials=4;biotech=5;bluespace=3;abductor=3"
+ origin_tech = "materials=4;biotech=5;bluespace=4;abductor=3"
cooldown_low = 1800
cooldown_high = 2400
uses = 1
diff --git a/code/game/gamemodes/miniantags/bot_swarm/swarmer.dm b/code/game/gamemodes/miniantags/bot_swarm/swarmer.dm
index c6ea23c4bbc..680cb183e86 100644
--- a/code/game/gamemodes/miniantags/bot_swarm/swarmer.dm
+++ b/code/game/gamemodes/miniantags/bot_swarm/swarmer.dm
@@ -4,6 +4,7 @@
desc = "A currently unactivated swarmer. Swarmers can self activate at any time, it would be wise to immediately dispose of this."
icon = 'icons/mob/swarmer.dmi'
icon_state = "swarmer_unactivated"
+ origin_tech = "bluespace=4;materials=4;programming=7"
/obj/item/unactivated_swarmer/New()
notify_ghosts("An unactivated swarmer has been created in [get_area(src)]!", enter_link = "(Click to enter)", source = src, action = NOTIFY_ATTACK)
diff --git a/code/game/gamemodes/miniantags/revenant/revenant.dm b/code/game/gamemodes/miniantags/revenant/revenant.dm
index 4a2a629c1d2..ca9e7b7ac28 100644
--- a/code/game/gamemodes/miniantags/revenant/revenant.dm
+++ b/code/game/gamemodes/miniantags/revenant/revenant.dm
@@ -317,7 +317,7 @@
desc = "A pile of fine blue dust. Small tendrils of violet mist swirl around it."
icon = 'icons/effects/effects.dmi'
icon_state = "revenantEctoplasm"
- w_class = 2
+ w_class = WEIGHT_CLASS_SMALL
var/reforming = 1
var/essence = 75 //the maximum essence of the reforming revenant
var/inert = 0
diff --git a/code/game/gamemodes/miniantags/slaughter/slaughter.dm b/code/game/gamemodes/miniantags/slaughter/slaughter.dm
index 62c3a9a00b0..19411dee6de 100644
--- a/code/game/gamemodes/miniantags/slaughter/slaughter.dm
+++ b/code/game/gamemodes/miniantags/slaughter/slaughter.dm
@@ -230,7 +230,7 @@
desc = "Still it beats furiously, emanating an aura of utter hate."
icon = 'icons/obj/surgery.dmi'
icon_state = "demon_heart"
- origin_tech = "combat=5;biotech=8"
+ origin_tech = "combat=5;biotech=7"
/obj/item/organ/internal/heart/demon/update_icon()
return //always beating visually
diff --git a/code/game/gamemodes/nuclear/pinpointer.dm b/code/game/gamemodes/nuclear/pinpointer.dm
index f118bf548f0..4ed35c5b707 100644
--- a/code/game/gamemodes/nuclear/pinpointer.dm
+++ b/code/game/gamemodes/nuclear/pinpointer.dm
@@ -4,7 +4,7 @@
icon_state = "pinoff"
flags = CONDUCT
slot_flags = SLOT_PDA | SLOT_BELT
- w_class = 2
+ w_class = WEIGHT_CLASS_SMALL
item_state = "electronic"
throw_speed = 4
throw_range = 20
diff --git a/code/game/gamemodes/traitor/traitor.dm b/code/game/gamemodes/traitor/traitor.dm
index e60b564f5d0..6cb2f8d6db6 100644
--- a/code/game/gamemodes/traitor/traitor.dm
+++ b/code/game/gamemodes/traitor/traitor.dm
@@ -11,7 +11,7 @@
name = "traitor"
config_tag = "traitor"
restricted_jobs = list("Cyborg")//They are part of the AI if he is traitor so are they, they use to get double chances
- protected_jobs = list("Security Officer", "Warden", "Detective", "Head of Security", "Internal Affairs Agent", "Captain", "Blueshield", "Nanotrasen Representative", "Security Pod Pilot", "Magistrate", "Internal Affairs Agent", "Brig Physician", "Nanotrasen Navy Officer", "Special Operations Officer")
+ protected_jobs = list("Security Officer", "Warden", "Detective", "Head of Security", "Captain", "Blueshield", "Nanotrasen Representative", "Security Pod Pilot", "Magistrate", "Internal Affairs Agent", "Brig Physician", "Nanotrasen Navy Officer", "Special Operations Officer")
required_players = 0
required_enemies = 1
recommended_enemies = 4
diff --git a/code/game/gamemodes/vampire/vampire.dm b/code/game/gamemodes/vampire/vampire.dm
index f3dc8e4e41a..406f21bdcdb 100644
--- a/code/game/gamemodes/vampire/vampire.dm
+++ b/code/game/gamemodes/vampire/vampire.dm
@@ -10,7 +10,7 @@
config_tag = "vampire"
restricted_jobs = list("AI", "Cyborg")
protected_jobs = list("Security Officer", "Warden", "Detective", "Head of Security", "Captain", "Blueshield", "Nanotrasen Representative", "Security Pod Pilot", "Magistrate", "Chaplain", "Brig Physician", "Internal Affairs Agent", "Nanotrasen Navy Officer", "Special Operations Officer")
- protected_species = list("Machine", "Plasmaman")
+ protected_species = list("Machine")
required_players = 15
required_enemies = 1
recommended_enemies = 4
diff --git a/code/game/gamemodes/wizard/artefact.dm b/code/game/gamemodes/wizard/artefact.dm
index d47610140ae..1dd20906704 100644
--- a/code/game/gamemodes/wizard/artefact.dm
+++ b/code/game/gamemodes/wizard/artefact.dm
@@ -7,7 +7,7 @@
icon_state ="scroll2"
throw_speed = 1
throw_range = 5
- w_class = 1
+ w_class = WEIGHT_CLASS_TINY
var/used = 0
@@ -119,7 +119,7 @@
item_state = "render"
force = 15
throwforce = 10
- w_class = 3
+ w_class = WEIGHT_CLASS_NORMAL
hitsound = 'sound/weapons/bladeslice.ogg'
var/charged = 1
var/spawn_type = /obj/singularity/narsie/wizard
@@ -232,7 +232,7 @@ var/global/list/multiverse = list()
throwforce = 10
sharp = 1
edge = 1
- w_class = 2
+ w_class = WEIGHT_CLASS_SMALL
attack_verb = list("attacked", "slashed", "stabbed", "sliced", "torn", "ripped", "diced", "cut")
var/faction = list("unassigned")
var/cooldown = 0
@@ -616,7 +616,7 @@ var/global/list/multiverse = list()
icon_state = "necrostone"
item_state = "electronic"
origin_tech = "bluespace=4;materials=4"
- w_class = 1
+ w_class = WEIGHT_CLASS_TINY
var/list/spooky_scaries = list()
var/unlimited = 0
var/heresy = 0
@@ -753,7 +753,7 @@ var/global/list/multiverse = list()
icon_state = "nyacrostone"
item_state = "electronic"
origin_tech = "bluespace=4;materials=4"
- w_class = 1
+ w_class = WEIGHT_CLASS_TINY
heresy = 1
unlimited = 1
@@ -793,7 +793,7 @@ var/global/list/multiverse = list()
return
if(!link)
- if(I.loc == user && istype(I) && I.w_class <= 2)
+ if(I.loc == user && istype(I) && I.w_class <= WEIGHT_CLASS_SMALL)
user.drop_item()
I.loc = src
link = I
diff --git a/code/game/gamemodes/wizard/godhand.dm b/code/game/gamemodes/wizard/godhand.dm
index 55afe36f1d2..95d804179cd 100644
--- a/code/game/gamemodes/wizard/godhand.dm
+++ b/code/game/gamemodes/wizard/godhand.dm
@@ -8,7 +8,7 @@
icon_state = "syndballoon"
item_state = null
flags = ABSTRACT | NODROP
- w_class = 5
+ w_class = WEIGHT_CLASS_HUGE
force = 0
throwforce = 0
throw_range = 0
diff --git a/code/game/gamemodes/wizard/soulstone.dm b/code/game/gamemodes/wizard/soulstone.dm
index 7fcd9c198b4..3e396ae14a8 100644
--- a/code/game/gamemodes/wizard/soulstone.dm
+++ b/code/game/gamemodes/wizard/soulstone.dm
@@ -4,9 +4,9 @@
icon_state = "soulstone"
item_state = "electronic"
desc = "A fragment of the legendary treasure known simply as the 'Soul Stone'. The shard still flickers with a fraction of the full artifact's power."
- w_class = 1
+ w_class = WEIGHT_CLASS_TINY
slot_flags = SLOT_BELT
- origin_tech = "bluespace=4;materials=4"
+ origin_tech = "bluespace=4;materials=5"
var/imprinted = "empty"
var/usability = TRUE // Can this soul stone be used by anyone, or only cultists/wizards?
@@ -347,4 +347,4 @@
T.unEquip(W)
init_shade(T, U)
qdel(T)
- return 1
\ No newline at end of file
+ return 1
diff --git a/code/game/gamemodes/wizard/spellbook.dm b/code/game/gamemodes/wizard/spellbook.dm
index 65843d0e0fc..4f3e7fe9001 100644
--- a/code/game/gamemodes/wizard/spellbook.dm
+++ b/code/game/gamemodes/wizard/spellbook.dm
@@ -497,7 +497,7 @@
icon_state ="book"
throw_speed = 2
throw_range = 5
- w_class = 1
+ w_class = WEIGHT_CLASS_TINY
var/uses = 10
var/temp = null
var/op = 1
@@ -863,4 +863,4 @@
spell = /obj/effect/proc_holder/spell/targeted/sacred_flame
spellname = "sacred flame"
icon_state ="booksacredflame"
- desc = "Become one with the flames that burn within... and invite others to do so as well."
\ No newline at end of file
+ desc = "Become one with the flames that burn within... and invite others to do so as well."
diff --git a/code/game/jobs/job_controller.dm b/code/game/jobs/job_controller.dm
index 433b2adfb27..82238f732b9 100644
--- a/code/game/jobs/job_controller.dm
+++ b/code/game/jobs/job_controller.dm
@@ -580,7 +580,7 @@ var/global/datum/controller/occupations/job_master
H.mind.store_memory(remembered_info)
// If they're head, give them the account info for their department
- if(job.head_position)
+ if(job && job.head_position)
remembered_info = ""
var/datum/money_account/department_account = department_accounts[job.department]
diff --git a/code/game/machinery/alarm.dm b/code/game/machinery/alarm.dm
index b5612389def..b7c7961e5de 100644
--- a/code/game/machinery/alarm.dm
+++ b/code/game/machinery/alarm.dm
@@ -1070,7 +1070,8 @@ Just an object used in constructing air alarms
icon = 'icons/obj/doors/door_assembly.dmi'
icon_state = "door_electronics"
desc = "Looks like a circuit. Probably is."
- w_class = 2
+ w_class = WEIGHT_CLASS_SMALL
materials = list(MAT_METAL=50, MAT_GLASS=50)
+ origin_tech = "engineering=2;programming=1"
toolspeed = 1
usesound = 'sound/items/Deconstruct.ogg'
diff --git a/code/game/machinery/camera/camera_assembly.dm b/code/game/machinery/camera/camera_assembly.dm
index 7c888aa2a3d..a8d16939944 100644
--- a/code/game/machinery/camera/camera_assembly.dm
+++ b/code/game/machinery/camera/camera_assembly.dm
@@ -3,7 +3,7 @@
desc = "A pre-fabricated security camera kit, ready to be assembled and mounted to a surface."
icon = 'icons/obj/monitors.dmi'
icon_state = "cameracase"
- w_class = 2
+ w_class = WEIGHT_CLASS_SMALL
anchored = 0
materials = list(MAT_METAL=400, MAT_GLASS=250)
diff --git a/code/game/machinery/cloning.dm b/code/game/machinery/cloning.dm
index e5c9d1a0804..721372b56f5 100644
--- a/code/game/machinery/cloning.dm
+++ b/code/game/machinery/cloning.dm
@@ -332,7 +332,7 @@
while((progress / milestone) > INSTALLED && LAZYLEN(missing_organs))
var/obj/item/organ/I = pick_n_take(missing_organs)
- I.replaced(occupant)
+ I.safe_replace(occupant)
#undef INSTALLED
@@ -377,7 +377,7 @@
return
else
connected_message("Authorized Ejection")
- announce_radio_message("An authorized ejection of [occupant.real_name] has occured")
+ announce_radio_message("An authorized ejection of [(occupant) ? occupant.real_name : "the malfunctioning pod"] has occured")
to_chat(user, "You force an emergency ejection.")
go_out()
diff --git a/code/game/machinery/computer/HolodeckControl.dm b/code/game/machinery/computer/HolodeckControl.dm
index 886dac328de..ba7aadc3054 100644
--- a/code/game/machinery/computer/HolodeckControl.dm
+++ b/code/game/machinery/computer/HolodeckControl.dm
@@ -423,7 +423,7 @@
hitsound = 'sound/weapons/bladeslice.ogg'
force = 40
throwforce = 10
- w_class = 4
+ w_class = WEIGHT_CLASS_BULKY
attack_verb = list("attacked", "slashed", "stabbed", "sliced", "torn", "ripped", "diced", "cut")
block_chance = 50
@@ -442,7 +442,7 @@
throw_speed = 1
throw_range = 5
throwforce = 0
- w_class = 2
+ w_class = WEIGHT_CLASS_SMALL
armour_penetration = 50
block_chance = 50
var/active = 0
@@ -466,13 +466,13 @@
if(active)
force = 30
icon_state = "sword[item_color]"
- w_class = 4
+ w_class = WEIGHT_CLASS_BULKY
playsound(user, 'sound/weapons/saberon.ogg', 50, 1)
to_chat(user, "[src] is now active.")
else
force = 3
icon_state = "sword0"
- w_class = 2
+ w_class = WEIGHT_CLASS_SMALL
playsound(user, 'sound/weapons/saberoff.ogg', 50, 1)
to_chat(user, "[src] can now be concealed.")
if(istype(user,/mob/living/carbon/human))
@@ -489,7 +489,7 @@
name = "basketball"
item_state = "basketball"
desc = "Here's your chance, do your dance at the Space Jam."
- w_class = 4 //Stops people from hiding it in their bags/pockets
+ w_class = WEIGHT_CLASS_BULKY //Stops people from hiding it in their bags/pockets
/obj/structure/holohoop
name = "basketball hoop"
diff --git a/code/game/machinery/computer/arcade.dm b/code/game/machinery/computer/arcade.dm
index 603c0483129..b0dde9e20cd 100644
--- a/code/game/machinery/computer/arcade.dm
+++ b/code/game/machinery/computer/arcade.dm
@@ -991,7 +991,7 @@
desc = "A model spaceship, it looks like those used back in the day when travelling to Orion! It even has a miniature FX-293 reactor, which was renowned for its instability and tendency to explode..."
icon = 'icons/obj/toy.dmi'
icon_state = "ship"
- w_class = 2
+ w_class = WEIGHT_CLASS_SMALL
var/active = 0 //if the ship is on
/obj/item/weapon/orion_ship/examine(mob/user)
diff --git a/code/game/machinery/computer/buildandrepair.dm b/code/game/machinery/computer/buildandrepair.dm
index 1dc88f9663d..d72c1792932 100644
--- a/code/game/machinery/computer/buildandrepair.dm
+++ b/code/game/machinery/computer/buildandrepair.dm
@@ -13,7 +13,7 @@
/obj/item/weapon/circuitboard
density = 0
anchored = 0
- w_class = 2
+ w_class = WEIGHT_CLASS_SMALL
name = "circuit board"
icon = 'icons/obj/module.dmi'
icon_state = "id_mod"
@@ -41,30 +41,31 @@
/obj/item/weapon/circuitboard/message_monitor
name = "Circuit board (Message Monitor)"
build_path = /obj/machinery/computer/message_monitor
- origin_tech = "programming=3"
+ origin_tech = "programming=2"
/obj/item/weapon/circuitboard/camera
name = "Circuit board (Camera Monitor)"
build_path = /obj/machinery/computer/security
- origin_tech = "programming=2"
+ origin_tech = "programming=2;combat=2"
/obj/item/weapon/circuitboard/xenobiology
name = "Circuit board (Xenobiology Console)"
build_path = /obj/machinery/computer/camera_advanced/xenobio
origin_tech = "programming=3;biotech=3"
/obj/item/weapon/circuitboard/aicore
name = "Circuit board (AI Core)"
- origin_tech = "programming=4;biotech=2"
+ origin_tech = "programming=3"
board_type = "other"
/obj/item/weapon/circuitboard/aiupload
name = "Circuit board (AI Upload)"
build_path = /obj/machinery/computer/aiupload
- origin_tech = "programming=4"
+ origin_tech = "programming=4;engineering=4"
/obj/item/weapon/circuitboard/borgupload
name = "Circuit board (Cyborg Upload)"
build_path = /obj/machinery/computer/borgupload
- origin_tech = "programming=4"
+ origin_tech = "programming=4;engineering=4"
/obj/item/weapon/circuitboard/med_data
name = "Circuit board (Medical Records)"
build_path = /obj/machinery/computer/med_data
+ origin_tech = "programming=2;biotech=2"
/obj/item/weapon/circuitboard/pandemic
name = "circuit board (PanD.E.M.I.C. 2200)"
build_path = /obj/machinery/computer/pandemic
@@ -76,10 +77,11 @@
/obj/item/weapon/circuitboard/communications
name = "Circuit board (Communications Console)"
build_path = /obj/machinery/computer/communications
- origin_tech = "programming=2;magnets=2"
+ origin_tech = "programming=3;magnets=3"
/obj/item/weapon/circuitboard/card
name = "Circuit board (ID Computer)"
build_path = /obj/machinery/computer/card
+ origin_tech = "programming=3"
/obj/item/weapon/circuitboard/card/minor
name = "Circuit board (Dept ID Computer)"
build_path = /obj/machinery/computer/card/minor
@@ -106,10 +108,11 @@
/obj/item/weapon/circuitboard/teleporter
name = "Circuit board (Teleporter Console)"
build_path = /obj/machinery/computer/teleporter
- origin_tech = "programming=2;bluespace=2"
+ origin_tech = "programming=3;bluespace=3;plasmatech=3"
/obj/item/weapon/circuitboard/secure_data
name = "Circuit board (Security Records)"
build_path = /obj/machinery/computer/secure_data
+ origin_tech = "programming=2;combat=2"
/obj/item/weapon/circuitboard/skills
name = "Circuit board (Employment Records)"
build_path = /obj/machinery/computer/skills
@@ -151,7 +154,7 @@
/obj/item/weapon/circuitboard/cloning
name = "Circuit board (Cloning Machine Console)"
build_path = /obj/machinery/computer/cloning
- origin_tech = "programming=3;biotech=3"
+ origin_tech = "programming=2;biotech=2"
/obj/item/weapon/circuitboard/arcade/battle
name = "circuit board (Arcade Battle)"
build_path = /obj/machinery/computer/arcade/battle
@@ -159,7 +162,7 @@
/obj/item/weapon/circuitboard/arcade/orion_trail
name = "circuit board (Orion Trail)"
build_path = /obj/machinery/computer/arcade/orion_trail
- origin_tech = "programming=2"
+ origin_tech = "programming=1"
/obj/item/weapon/circuitboard/solar_control
name = "Circuit board (Solar Control)"
build_path = /obj/machinery/power/solar_control
@@ -167,6 +170,7 @@
/obj/item/weapon/circuitboard/powermonitor
name = "Circuit board (Power Monitor)"
build_path = /obj/machinery/computer/monitor
+ origin_tech = "programming=2;powerstorage=2"
/obj/item/weapon/circuitboard/olddoor
name = "Circuit board (DoorMex)"
build_path = /obj/machinery/computer/pod/old
@@ -219,15 +223,15 @@
/obj/item/weapon/circuitboard/crew
name = "Circuit board (Crew Monitoring Computer)"
build_path = /obj/machinery/computer/crew
- origin_tech = "programming=3;biotech=2;magnets=2"
+ origin_tech = "programming=2;biotech=2"
/obj/item/weapon/circuitboard/mech_bay_power_console
name = "Circuit board (Mech Bay Power Control Console)"
build_path = /obj/machinery/computer/mech_bay_power_console
- origin_tech = "programming=2;powerstorage=3"
+ origin_tech = "programming=3;powerstorage=3"
/obj/item/weapon/circuitboard/ordercomp
name = "Circuit board (Supply Ordering Console)"
build_path = /obj/machinery/computer/ordercomp
- origin_tech = "programming=2"
+ origin_tech = "programming=3"
/obj/item/weapon/circuitboard/supplycomp
name = "Circuit board (Supply Shuttle Console)"
build_path = /obj/machinery/computer/supplycomp
@@ -237,19 +241,19 @@
/obj/item/weapon/circuitboard/operating
name = "Circuit board (Operating Computer)"
build_path = /obj/machinery/computer/operating
- origin_tech = "programming=2;biotech=2"
+ origin_tech = "programming=2;biotech=3"
/obj/item/weapon/circuitboard/comm_monitor
name = "Circuit board (Telecommunications Monitor)"
build_path = /obj/machinery/computer/telecomms/monitor
- origin_tech = "programming=3"
+ origin_tech = "programming=3;magnets=3;bluespace=2"
/obj/item/weapon/circuitboard/comm_server
name = "Circuit board (Telecommunications Server Monitor)"
build_path = /obj/machinery/computer/telecomms/server
- origin_tech = "programming=3"
+ origin_tech = "programming=3;magnets=3;bluespace=2"
/obj/item/weapon/circuitboard/comm_traffic
name = "Circuitboard (Telecommunications Traffic Control)"
build_path = /obj/machinery/computer/telecomms/traffic
- origin_tech = "programming=3"
+ origin_tech = "programming=3;magnets=3;bluespace=2"
/obj/item/weapon/circuitboard/shuttle
@@ -285,7 +289,7 @@
/obj/item/weapon/circuitboard/aifixer
name = "Circuit board (AI Integrity Restorer)"
build_path = /obj/machinery/computer/aifixer
- origin_tech = "programming=3;biotech=2"
+ origin_tech = "programming=2;biotech=2"
/obj/item/weapon/circuitboard/area_atmos
name = "Circuit board (Area Air Control)"
build_path = /obj/machinery/computer/area_atmos
@@ -293,7 +297,7 @@
/obj/item/weapon/circuitboard/telesci_console
name = "Circuit board (Telepad Control Console)"
build_path = /obj/machinery/computer/telescience
- origin_tech = "programming=3;bluespace=2"
+ origin_tech = "programming=3;bluespace=3;plasmatech=4"
/obj/item/weapon/circuitboard/atmos_automation
name = "Circuit board (Atmospherics Automation)"
@@ -301,6 +305,7 @@
/obj/item/weapon/circuitboard/large_tank_control
name = "Circuit board (Atmospheric Tank Control)"
build_path = /obj/machinery/computer/general_air_control/large_tank_control
+ origin_tech = "programming=2;engineering=3;materials=2"
/obj/item/weapon/circuitboard/turbine_computer
name = "circuit board (Turbine Computer)"
@@ -310,7 +315,7 @@
/obj/item/weapon/circuitboard/HONKputer
name = "Circuit board (HONKputer)"
build_path = /obj/machinery/computer/HONKputer
- origin_tech = "programming=4"
+ origin_tech = "programming=2"
icon = 'icons/obj/machines/HONKputer.dmi'
icon_state = "bananium_board"
board_type = "honkcomputer"
diff --git a/code/game/machinery/constructable_frame.dm b/code/game/machinery/constructable_frame.dm
index a714e24febc..24f5c88695c 100644
--- a/code/game/machinery/constructable_frame.dm
+++ b/code/game/machinery/constructable_frame.dm
@@ -57,10 +57,7 @@
else
desc += "."
-/obj/machinery/constructable_frame/machine_frame/attackby(obj/item/P as obj, mob/user as mob, params)
- if(P.crit_fail)
- to_chat(user, "This part is faulty, you cannot add this to the machine!")
- return
+/obj/machinery/constructable_frame/machine_frame/attackby(obj/item/P, mob/user, params)
switch(state)
if(1)
if(istype(P, /obj/item/stack/cable_coil))
@@ -171,11 +168,10 @@
for(var/path in req_components)
while(req_components[path] > 0 && (locate(path) in part_list))
var/obj/item/part = (locate(path) in part_list)
- if(!part.crit_fail)
- added_components[part] = path
- replacer.remove_from_storage(part, src)
- req_components[path]--
- part_list -= part
+ added_components[part] = path
+ replacer.remove_from_storage(part, src)
+ req_components[path]--
+ part_list -= part
for(var/obj/item/weapon/stock_parts/part in added_components)
components += part
@@ -265,7 +261,7 @@ to destroy them and players will be able to make replacements.
name = "circuit board (SMES)"
build_path = /obj/machinery/power/smes
board_type = "machine"
- origin_tech = "programming=4;powerstorage=5;engineering=5"
+ origin_tech = "programming=3;powerstorage=3;engineering=3"
frame_desc = "Requires 5 pieces of cable, 5 Power Cells and 1 Capacitor."
req_components = list(
/obj/item/stack/cable_coil = 5,
@@ -276,7 +272,7 @@ to destroy them and players will be able to make replacements.
name = "circuit board (Emitter)"
build_path = /obj/machinery/power/emitter
board_type = "machine"
- origin_tech = "programming=4;powerstorage=5;engineering=5"
+ origin_tech = "programming=3;powerstorage=4;engineering=4"
req_components = list(
/obj/item/weapon/stock_parts/micro_laser = 1,
/obj/item/weapon/stock_parts/manipulator = 1)
@@ -285,7 +281,7 @@ to destroy them and players will be able to make replacements.
name = "circuit board (Power Compressor)"
build_path = /obj/machinery/power/compressor
board_type = "machine"
- origin_tech = "programming=4;powerstorage=5;engineering=4"
+ origin_tech = "programming=4;powerstorage=4;engineering=4"
req_components = list(
/obj/item/stack/cable_coil = 5,
/obj/item/weapon/stock_parts/manipulator = 6)
@@ -294,7 +290,7 @@ to destroy them and players will be able to make replacements.
name = "circuit board (Power Turbine)"
build_path = /obj/machinery/power/turbine
board_type = "machine"
- origin_tech = "programming=4;powerstorage=4;engineering=5"
+ origin_tech = "programming=4;powerstorage=4;engineering=4"
req_components = list(
/obj/item/stack/cable_coil = 5,
/obj/item/weapon/stock_parts/capacitor = 6)
@@ -327,7 +323,7 @@ to destroy them and players will be able to make replacements.
name = "circuit board (Biogenerator)"
build_path = /obj/machinery/biogenerator
board_type = "machine"
- origin_tech = "programming=3;biotech=2;materials=3"
+ origin_tech = "programming=2;biotech=3;materials=3"
frame_desc = "Requires 1 Matter Bin, 1 Manipulator, 1 piece of cable and 1 Console Screen."
req_components = list(
/obj/item/weapon/stock_parts/matter_bin = 1,
@@ -361,7 +357,7 @@ to destroy them and players will be able to make replacements.
name = "circuit board (Hydroponics Tray)"
build_path = /obj/machinery/hydroponics/constructable
board_type = "machine"
- origin_tech = "programming=1;biotech=1"
+ origin_tech = "programming=1;biotech=2"
frame_desc = "Requires 2 Matter Bins, 1 Manipulator, and 1 Console Screen."
req_components = list(
/obj/item/weapon/stock_parts/matter_bin = 2,
@@ -372,7 +368,7 @@ to destroy them and players will be able to make replacements.
name = "circuit board (Microwave)"
build_path = /obj/machinery/kitchen_machine/microwave
board_type = "machine"
- origin_tech = "programming=1"
+ origin_tech = "programming=2;magnets=2"
frame_desc = "Requires 1 Micro Laser, 2 pieces of cable and 1 Console Screen."
req_components = list(
/obj/item/weapon/stock_parts/micro_laser = 1,
@@ -383,7 +379,7 @@ to destroy them and players will be able to make replacements.
name = "circuit board (Oven)"
build_path = /obj/machinery/kitchen_machine/oven
board_type = "machine"
- origin_tech = "programming=1;plasmatech=1"
+ origin_tech = "programming=2;magnets=2"
frame_desc = "Requires 2 Micro Lasers, 5 pieces of cable and 1 Console Screen."
req_components = list(
/obj/item/weapon/stock_parts/micro_laser = 2,
@@ -394,7 +390,7 @@ to destroy them and players will be able to make replacements.
name = "circuit board (Grill)"
build_path = /obj/machinery/kitchen_machine/grill
board_type = "machine"
- origin_tech = "programming=1;plasmatech=1"
+ origin_tech = "programming=2;magnets=2"
frame_desc = "Requires 2 Micro Lasers, 5 pieces of cable and 1 Console Screen."
req_components = list(
/obj/item/weapon/stock_parts/micro_laser = 2,
@@ -405,7 +401,7 @@ to destroy them and players will be able to make replacements.
name = "circuit board (Candy Maker)"
build_path = /obj/machinery/kitchen_machine/candy_maker
board_type = "machine"
- origin_tech = "programming=2"
+ origin_tech = "programming=2;magnets=2"
frame_desc = "Requires 1 Manipulator, 5 pieces of cable and 1 Console Screen."
req_components = list(
/obj/item/weapon/stock_parts/manipulator = 1,
@@ -416,7 +412,7 @@ to destroy them and players will be able to make replacements.
name = "circuit board (Deep Fryer)"
build_path = /obj/machinery/cooker/deepfryer
board_type = "machine"
- origin_tech = "programming=2"
+ origin_tech = "programming=1"
frame_desc = "Requires 2 Micro Lasers and 5 pieces of cable."
req_components = list(
/obj/item/weapon/stock_parts/micro_laser = 2,
@@ -426,7 +422,7 @@ to destroy them and players will be able to make replacements.
name = "circuit board (Gibber)"
build_path = /obj/machinery/gibber
board_type = "machine"
- origin_tech = "programming=1"
+ origin_tech = "programming=2;engineering=2"
req_components = list(
/obj/item/weapon/stock_parts/matter_bin = 1,
/obj/item/weapon/stock_parts/manipulator = 1)
@@ -435,7 +431,7 @@ to destroy them and players will be able to make replacements.
name = "circuit board (Tesla Coil)"
build_path = /obj/machinery/power/tesla_coil
board_type = "machine"
- origin_tech = "programming=1"
+ origin_tech = "programming=3;magnets=3;powerstorage=3"
req_components = list(
/obj/item/weapon/stock_parts/capacitor = 1)
@@ -443,7 +439,7 @@ to destroy them and players will be able to make replacements.
name = "circuit board (Grounding Rod)"
build_path = /obj/machinery/power/grounding_rod
board_type = "machine"
- origin_tech = "programming=1"
+ origin_tech = "programming=3;powerstorage=3;magnets=3;plasmatech=2"
req_components = list(
/obj/item/weapon/stock_parts/capacitor = 1)
@@ -460,16 +456,7 @@ to destroy them and players will be able to make replacements.
name = "circuit board (Recycler)"
build_path = /obj/machinery/recycler
board_type = "machine"
- origin_tech = "programming=1"
- req_components = list(
- /obj/item/weapon/stock_parts/matter_bin = 1,
- /obj/item/weapon/stock_parts/manipulator = 1)
-
-/obj/item/weapon/circuitboard/seed_extractor
- name = "circuit board (Seed Extractor)"
- build_path = /obj/machinery/seed_extractor
- board_type = "machine"
- origin_tech = "programming=1"
+ origin_tech = "programming=2;engineering=2"
req_components = list(
/obj/item/weapon/stock_parts/matter_bin = 1,
/obj/item/weapon/stock_parts/manipulator = 1)
@@ -519,7 +506,7 @@ to destroy them and players will be able to make replacements.
name = "circuit board (Monkey Recycler)"
build_path = /obj/machinery/monkey_recycler
board_type = "machine"
- origin_tech = "programming=1"
+ origin_tech = "programming=1;biotech=2"
req_components = list(
/obj/item/weapon/stock_parts/matter_bin = 1,
/obj/item/weapon/stock_parts/manipulator = 1)
@@ -536,7 +523,7 @@ to destroy them and players will be able to make replacements.
name = "circuit board (Portable Chem Dispenser)"
build_path = /obj/machinery/chem_dispenser/constructable
board_type = "machine"
- origin_tech = "materials=4;engineering=4;programming=4;plasmatech=3;biotech=3"
+ origin_tech = "materials=4;programming=4;plasmatech=4;biotech=3"
frame_desc = "Requires 2 Matter Bins, 1 Capacitor, 1 Manipulator, 1 Console Screen, and 1 Power Cell."
req_components = list(
/obj/item/weapon/stock_parts/matter_bin = 2,
@@ -549,7 +536,7 @@ to destroy them and players will be able to make replacements.
name = "circuit board (Chem Master 2999)"
build_path = /obj/machinery/chem_master/constructable
board_type = "machine"
- origin_tech = "materials=2;programming=2;biotech=1"
+ origin_tech = "materials=3;programming=2;biotech=3"
req_components = list(
/obj/item/weapon/reagent_containers/glass/beaker = 2,
/obj/item/weapon/stock_parts/manipulator = 1,
@@ -559,7 +546,7 @@ to destroy them and players will be able to make replacements.
name = "circuit board (Chemical Heater)"
build_path = /obj/machinery/chem_heater
board_type = "machine"
- origin_tech = "materials=2;engineering=2"
+ origin_tech = "programming=2;engineering=2;biotech=2"
frame_desc = "Requires 1 Micro Laser and 1 Console Screen."
req_components = list(
/obj/item/weapon/stock_parts/micro_laser = 1,
@@ -625,7 +612,7 @@ to destroy them and players will be able to make replacements.
name = "Circuit Board (PACMAN-type Generator)"
build_path = /obj/machinery/power/port_gen/pacman
board_type = "machine"
- origin_tech = "programming=3:powerstorage=3;plasmatech=3;engineering=3"
+ origin_tech = "programming=2;powerstorage=3;plasmatech=3;engineering=3"
frame_desc = "Requires 1 Matter Bin, 1 Micro-Laser, 2 Pieces of Cable, and 1 Capacitor."
req_components = list(
/obj/item/weapon/stock_parts/matter_bin = 1,
@@ -641,7 +628,7 @@ to destroy them and players will be able to make replacements.
/obj/item/weapon/circuitboard/pacman/mrs
name = "Circuit Board (MRSPACMAN-type Generator)"
build_path = /obj/machinery/power/port_gen/pacman/mrs
- origin_tech = "programming=3;powerstorage=5;engineering=5"
+ origin_tech = "programming=3;powerstorage=4;engineering=4;plasmatech=4"
obj/item/weapon/circuitboard/rdserver
name = "Circuit Board (R&D Server)"
@@ -657,7 +644,7 @@ obj/item/weapon/circuitboard/rdserver
name = "Circuit board (Exosuit Fabricator)"
build_path = /obj/machinery/mecha_part_fabricator
board_type = "machine"
- origin_tech = "programming=3;engineering=3"
+ origin_tech = "programming=2;engineering=2"
frame_desc = "Requires 2 Matter Bins, 1 Manipulator, 1 Micro-Laser and 1 Console Screen."
req_components = list(
/obj/item/weapon/stock_parts/matter_bin = 2,
@@ -669,7 +656,7 @@ obj/item/weapon/circuitboard/rdserver
name = "Circuit board (Spacepod Fabricator)"
build_path = /obj/machinery/spod_part_fabricator //ah fuck my life
board_type = "machine"
- origin_tech = "programming=3;engineering=3"
+ origin_tech = "programming=2;engineering=2"
frame_desc = "Requires 3 Matter Bins, 2 Manipulators, 2 Micro-Lasers, and 1 Console Screen."
req_components = list(
/obj/item/weapon/stock_parts/matter_bin = 3,
@@ -682,7 +669,7 @@ obj/item/weapon/circuitboard/rdserver
name = "Circuit board (Clone Pod)"
build_path = /obj/machinery/clonepod
board_type = "machine"
- origin_tech = "programming=3;biotech=3"
+ origin_tech = "programming=2;biotech=2"
frame_desc = "Requires 2 Manipulator, 2 Scanning Module, 2 pieces of cable and 1 Console Screen."
req_components = list(
/obj/item/stack/cable_coil = 2,
@@ -707,7 +694,7 @@ obj/item/weapon/circuitboard/rdserver
name = "circuit board (Mech Bay Recharger)"
build_path = /obj/machinery/mech_bay_recharge_port
board_type = "machine"
- origin_tech = "programming=3;powerstorage=4;engineering=4"
+ origin_tech = "programming=3;powerstorage=3;engineering=3"
frame_desc = "Requires 1 piece of cable and 5 Capacitors."
req_components = list(
/obj/item/stack/cable_coil = 1,
@@ -717,7 +704,7 @@ obj/item/weapon/circuitboard/rdserver
name = "circuit board (Teleporter Hub)"
build_path = /obj/machinery/teleport/hub
board_type = "machine"
- origin_tech = "programming=3;engineering=5;bluespace=5;materials=4"
+ origin_tech = "programming=3;engineering=4;bluespace=4;materials=4"
frame_desc = "Requires 3 Bluespace Crystals and 1 Matter Bin."
req_components = list(
/obj/item/weapon/ore/bluespace_crystal = 3,
@@ -727,7 +714,7 @@ obj/item/weapon/circuitboard/rdserver
name = "circuit board (Teleporter Station)"
build_path = /obj/machinery/teleport/station
board_type = "machine"
- origin_tech = "programming=4;engineering=4;bluespace=4"
+ origin_tech = "programming=4;engineering=4;bluespace=4;plasmatech=3"
frame_desc = "Requires 2 Bluespace Crystals, 2 Capacitors and 1 Console Screen."
req_components = list(
/obj/item/weapon/ore/bluespace_crystal = 2,
@@ -738,7 +725,7 @@ obj/item/weapon/circuitboard/rdserver
name = "circuit board (Permanent Teleporter)"
build_path = /obj/machinery/teleport/perma
board_type = "machine"
- origin_tech = "programming=3;engineering=5;bluespace=5;materials=4"
+ origin_tech = "programming=3;engineering=4;bluespace=4;materials=4"
frame_desc = "Requires 3 Bluespace Crystals and 1 Matter Bin."
req_components = list(
/obj/item/weapon/ore/bluespace_crystal = 3,
@@ -749,7 +736,7 @@ obj/item/weapon/circuitboard/rdserver
name = "Circuit board (Telepad)"
build_path = /obj/machinery/telepad
board_type = "machine"
- origin_tech = "programming=4;engineering=3;materials=3;bluespace=4"
+ origin_tech = "programming=4;engineering=3;plasmatech=4;bluespace=4"
frame_desc = "Requires 2 Bluespace Crystals, 1 Capacitor, 1 piece of cable and 1 Console Screen."
req_components = list(
/obj/item/weapon/ore/bluespace_crystal = 2,
@@ -773,7 +760,7 @@ obj/item/weapon/circuitboard/rdserver
name = "circuit board (Sleeper)"
build_path = /obj/machinery/sleeper
board_type = "machine"
- origin_tech = "programming=3;biotech=2;engineering=3;materials=3"
+ origin_tech = "programming=3;biotech=2;engineering=3"
frame_desc = "Requires 1 Matter Bin, 1 Manipulator, 1 piece of cable and 2 Console Screens."
req_components = list(
/obj/item/weapon/stock_parts/matter_bin = 1,
@@ -794,7 +781,7 @@ obj/item/weapon/circuitboard/rdserver
name = "circuit board (Body Scanner)"
build_path = /obj/machinery/bodyscanner
board_type = "machine"
- origin_tech = "programming=3;biotech=2;engineering=3;materials=3"
+ origin_tech = "programming=3;biotech=2;engineering=3"
frame_desc = "Requires 1 Scanning Module, 2 pieces of cable and 2 Console Screens."
req_components = list(
/obj/item/weapon/stock_parts/scanning_module = 1,
@@ -805,7 +792,7 @@ obj/item/weapon/circuitboard/rdserver
name = "circuit board (Body Scanner Console)"
build_path = /obj/machinery/body_scanconsole
board_type = "machine"
- origin_tech = "programming=3;biotech=2;engineering=3;materials=3"
+ origin_tech = "programming=3;biotech=2;engineering=3"
frame_desc = "Requires 2 pieces of cable and 2 Console Screens."
req_components = list(
/obj/item/stack/cable_coil = 2,
@@ -815,7 +802,7 @@ obj/item/weapon/circuitboard/rdserver
name = "circuit board (Cryotube)"
build_path = /obj/machinery/atmospherics/unary/cryo_cell
board_type = "machine"
- origin_tech = "programming=4;biotech=3;engineering=4"
+ origin_tech = "programming=4;biotech=3;engineering=4;plasmatech=3"
frame_desc = "Requires 1 Matter Bin, 1 piece of cable and 4 Console Screens."
req_components = list(
/obj/item/weapon/stock_parts/matter_bin = 1,
@@ -933,7 +920,7 @@ obj/item/weapon/circuitboard/rdserver
name = "circuit board (Mining Equipment Vendor)"
build_path = /obj/machinery/mineral/equipment_vendor
board_type = "machine"
- origin_tech = "programming=1;engineering=2"
+ origin_tech = "programming=1;engineering=3"
req_components = list(
/obj/item/weapon/stock_parts/console_screen = 1,
/obj/item/weapon/stock_parts/matter_bin = 3)
@@ -942,7 +929,7 @@ obj/item/weapon/circuitboard/rdserver
name = "circuit board (Claw Game)"
build_path = /obj/machinery/arcade/claw
board_type = "machine"
- origin_tech = "programming=2"
+ origin_tech = "programming=1"
req_components = list(
/obj/item/weapon/stock_parts/matter_bin = 1,
/obj/item/weapon/stock_parts/manipulator = 1,
@@ -953,7 +940,7 @@ obj/item/weapon/circuitboard/rdserver
name = "circuit board (Prize Counter)"
build_path = /obj/machinery/prize_counter
board_type = "machine"
- origin_tech = "programming=2;materials=2"
+ origin_tech = "programming=1"
req_components = list(
/obj/item/weapon/stock_parts/matter_bin = 1,
/obj/item/weapon/stock_parts/manipulator = 1,
@@ -964,7 +951,7 @@ obj/item/weapon/circuitboard/rdserver
name = "circuit board (Virtual Gameboard)"
build_path = /obj/machinery/gameboard
board_type = "machine"
- origin_tech = "programming=2"
+ origin_tech = "programming=1"
req_components = list(
/obj/item/weapon/stock_parts/micro_laser = 1,
/obj/item/stack/cable_coil = 3,
diff --git a/code/game/machinery/cryopod.dm b/code/game/machinery/cryopod.dm
index 789d4f81b1c..1e31207b574 100644
--- a/code/game/machinery/cryopod.dm
+++ b/code/game/machinery/cryopod.dm
@@ -126,12 +126,12 @@
/obj/item/weapon/circuitboard/cryopodcontrol
name = "Circuit board (Cryogenic Oversight Console)"
build_path = "/obj/machinery/computer/cryopod"
- origin_tech = "programming=3"
+ origin_tech = "programming=1"
/obj/item/weapon/circuitboard/robotstoragecontrol
name = "Circuit board (Robotic Storage Console)"
build_path = "/obj/machinery/computer/cryopod/robot"
- origin_tech = "programming=3"
+ origin_tech = "programming=1"
//Decorative structures to go alongside cryopods.
/obj/structure/cryofeed
diff --git a/code/game/machinery/doors/airlock_electronics.dm b/code/game/machinery/doors/airlock_electronics.dm
index b39e3798ae1..fd18985d9fa 100644
--- a/code/game/machinery/doors/airlock_electronics.dm
+++ b/code/game/machinery/doors/airlock_electronics.dm
@@ -4,9 +4,9 @@
name = "airlock electronics"
icon = 'icons/obj/doors/door_assembly.dmi'
icon_state = "door_electronics"
- w_class = 2
+ w_class = WEIGHT_CLASS_SMALL
materials = list(MAT_METAL=50, MAT_GLASS=50)
-
+ origin_tech = "engineering=2;programming=1"
req_access = list(access_engine)
var/list/conf_access = null
@@ -64,10 +64,10 @@
/obj/item/weapon/airlock_electronics/Topic(href, href_list)
..()
-
+
if(usr.incapacitated() || (!ishuman(usr) && !isrobot(usr)))
return 1
-
+
if(href_list["close"])
usr << browse(null, "window=airlock")
return
@@ -106,4 +106,3 @@
conf_access -= req
if(!conf_access.len)
conf_access = null
-
diff --git a/code/game/machinery/doors/firedoor.dm b/code/game/machinery/doors/firedoor.dm
index dbbe53055a4..7ecf1f17920 100644
--- a/code/game/machinery/doors/firedoor.dm
+++ b/code/game/machinery/doors/firedoor.dm
@@ -259,8 +259,9 @@
icon = 'icons/obj/doors/door_assembly.dmi'
icon_state = "door_electronics"
desc = "A circuit board used in construction of firelocks."
- w_class = 2
+ w_class = WEIGHT_CLASS_SMALL
materials = list(MAT_METAL=50, MAT_GLASS=50)
+ origin_tech = "engineering=2;programming=1"
toolspeed = 1
usesound = 'sound/items/Deconstruct.ogg'
diff --git a/code/game/machinery/dye_generator.dm b/code/game/machinery/dye_generator.dm
index 73e590361a7..a4d70d78023 100644
--- a/code/game/machinery/dye_generator.dm
+++ b/code/game/machinery/dye_generator.dm
@@ -74,7 +74,7 @@
throw_speed = 4
throw_range = 7
force = 0
- w_class = 1
+ w_class = WEIGHT_CLASS_TINY
var/dye_color = "#FFFFFF"
/obj/item/hair_dye_bottle/New()
diff --git a/code/game/machinery/firealarm.dm b/code/game/machinery/firealarm.dm
index da85a864214..2c48f91b422 100644
--- a/code/game/machinery/firealarm.dm
+++ b/code/game/machinery/firealarm.dm
@@ -267,8 +267,9 @@ Just a object used in constructing fire alarms
icon = 'icons/obj/doors/door_assembly.dmi'
icon_state = "door_electronics"
desc = "A circuit. It has a label on it, it says \"Can handle heat levels up to 40 degrees celsius!\""
- w_class = 2
+ w_class = WEIGHT_CLASS_SMALL
materials = list(MAT_METAL=50, MAT_GLASS=50)
+ origin_tech = "engineering=2;programming=1"
toolspeed = 1
usesound = 'sound/items/Deconstruct.ogg'
diff --git a/code/game/machinery/holosign.dm b/code/game/machinery/holosign.dm
index 3abbcef84ae..5ce444bcc09 100644
--- a/code/game/machinery/holosign.dm
+++ b/code/game/machinery/holosign.dm
@@ -36,7 +36,7 @@
/obj/machinery/holosign_switch
name = "holosign switch"
icon = 'icons/obj/power.dmi'
- icon_state = "light1"
+ icon_state = "light0"
desc = "A remote control switch for holosign."
var/id = null
var/active = 0
diff --git a/code/game/machinery/machinery.dm b/code/game/machinery/machinery.dm
index 514b5459973..901ea27a7df 100644
--- a/code/game/machinery/machinery.dm
+++ b/code/game/machinery/machinery.dm
@@ -404,8 +404,6 @@ Class Procs:
on_deconstruction()
spawn_frame()
for(var/obj/item/I in component_parts)
- if(I.reliability != 100 && crit_fail)
- I.crit_fail = 1
I.forceMove(loc)
qdel(src)
diff --git a/code/game/machinery/newscaster.dm b/code/game/machinery/newscaster.dm
index 6040f72ab6b..65cd281340c 100644
--- a/code/game/machinery/newscaster.dm
+++ b/code/game/machinery/newscaster.dm
@@ -607,7 +607,7 @@ var/list/obj/machinery/newscaster/allCasters = list() //Global list that will co
desc = "An issue of The Griffon, the newspaper circulating aboard Nanotrasen Space Stations."
icon = 'icons/obj/bureaucracy.dmi'
icon_state = "newspaper"
- w_class = 2 //Let's make it fit in trashbags!
+ w_class = WEIGHT_CLASS_SMALL //Let's make it fit in trashbags!
attack_verb = list("bapped")
var/screen = 0
var/pages = 0
diff --git a/code/game/machinery/pipe/construction.dm b/code/game/machinery/pipe/construction.dm
index 5bd7861623b..c83d32e7ac7 100644
--- a/code/game/machinery/pipe/construction.dm
+++ b/code/game/machinery/pipe/construction.dm
@@ -49,7 +49,7 @@
icon = 'icons/obj/pipe-item.dmi'
icon_state = "simple"
item_state = "buildpipe"
- w_class = 3
+ w_class = WEIGHT_CLASS_NORMAL
level = 2
var/flipped = 0
@@ -635,7 +635,7 @@
icon = 'icons/obj/pipe-item.dmi'
icon_state = "meter"
item_state = "buildpipe"
- w_class = 4
+ w_class = WEIGHT_CLASS_BULKY
/obj/item/pipe_meter/attackby(var/obj/item/weapon/W as obj, var/mob/user as mob, params)
..()
@@ -656,7 +656,7 @@
icon = 'icons/obj/stationobjs.dmi'
icon_state = "gsensor0"
item_state = "buildpipe"
- w_class = 4
+ w_class = WEIGHT_CLASS_BULKY
/obj/item/pipe_gsensor/attackby(var/obj/item/weapon/W as obj, var/mob/user as mob)
..()
diff --git a/code/game/machinery/programmable_unloader.dm b/code/game/machinery/programmable_unloader.dm
index c86d745c05a..6b6b1938de9 100644
--- a/code/game/machinery/programmable_unloader.dm
+++ b/code/game/machinery/programmable_unloader.dm
@@ -551,7 +551,7 @@
name = "Circuit board (Programmable Unloader)"
build_path = "/obj/machinery/programmable"
board_type = "machine"
- origin_tech = "engineering=3;programming=6"
+ origin_tech = "engineering=1;programming=2"
frame_desc = "Requires 2 Manipulators, 1 Scanning Module, 1 Cable."
req_components = list(
/obj/item/weapon/stock_parts/scanning_module = 1,
diff --git a/code/game/machinery/syndicatebomb.dm b/code/game/machinery/syndicatebomb.dm
index 8fb2d173b6f..10f6fc1c8c5 100644
--- a/code/game/machinery/syndicatebomb.dm
+++ b/code/game/machinery/syndicatebomb.dm
@@ -192,8 +192,8 @@
icon = 'icons/obj/assemblies.dmi'
icon_state = "bombcore"
item_state = "eshield0"
- w_class = 3
- origin_tech = "syndicate=6;combat=5"
+ w_class = WEIGHT_CLASS_NORMAL
+ origin_tech = "syndicate=5;combat=6"
burn_state = FLAMMABLE //Burnable (but the casing isn't)
var/adminlog = null
@@ -296,7 +296,7 @@
/obj/item/weapon/bombcore/miniature
name = "small bomb core"
- w_class = 2
+ w_class = WEIGHT_CLASS_SMALL
/obj/item/weapon/bombcore/miniature/detonate()
explosion(src.loc,1,2,4,flame_range = 2) //Identical to a minibomb
@@ -310,8 +310,8 @@
icon = 'icons/obj/assemblies.dmi'
icon_state = "bigred"
item_state = "electronic"
- w_class = 1
- origin_tech = "syndicate=2"
+ w_class = WEIGHT_CLASS_TINY
+ origin_tech = "syndicate=3"
var/cooldown = 0
var/detonated = 0
var/existant = 0
@@ -335,4 +335,4 @@
detonated = 0
existant = 0
cooldown = 1
- spawn(30) cooldown = 0
\ No newline at end of file
+ spawn(30) cooldown = 0
diff --git a/code/game/machinery/telecomms/machine_interactions.dm b/code/game/machinery/telecomms/machine_interactions.dm
index db436bfb772..d730ca57529 100644
--- a/code/game/machinery/telecomms/machine_interactions.dm
+++ b/code/game/machinery/telecomms/machine_interactions.dm
@@ -68,8 +68,6 @@
// Drop all the component stuff
if(component_parts)
for(var/obj/I in component_parts)
- if(I.reliability != 100 && crit_fail)
- I.crit_fail = 1
I.loc = src.loc
else
// If the machine wasn't made during runtime, probably doesn't have components:
diff --git a/code/game/mecha/combat/marauder.dm b/code/game/mecha/combat/marauder.dm
index 1a901f4a71e..a08f4bea77a 100644
--- a/code/game/mecha/combat/marauder.dm
+++ b/code/game/mecha/combat/marauder.dm
@@ -157,10 +157,10 @@
log_message("Toggled zoom mode.")
occupant_message("Zoom mode [zoom?"en":"dis"]abled.")
if(zoom)
- occupant.client.view = 12
+ occupant.client.AddViewMod("mecha", 12)
to_chat(occupant, sound('sound/mecha/imag_enh.ogg',volume=50))
else
- occupant.client.view = initial(occupant.client.view)
+ occupant.client.RemoveViewMod("mecha")
diff --git a/code/game/mecha/equipment/mecha_equipment.dm b/code/game/mecha/equipment/mecha_equipment.dm
index c60a560d19b..98e7b6f342d 100644
--- a/code/game/mecha/equipment/mecha_equipment.dm
+++ b/code/game/mecha/equipment/mecha_equipment.dm
@@ -1,4 +1,3 @@
-//TODO: Add critfail checks and reliability
//DO NOT ADD MECHA PARTS TO THE GAME WITH THE DEFAULT "SPRITE ME" SPRITE!
//I'm annoyed I even have to tell you this! SPRITE FIRST, then commit.
@@ -7,7 +6,7 @@
icon = 'icons/mecha/mecha_equipment.dmi'
icon_state = "mecha_equip"
force = 5
- origin_tech = "materials=2"
+ origin_tech = "materials=2;engineering=2"
var/equip_cooldown = 0
var/equip_ready = 1
var/energy_drain = 0
diff --git a/code/game/mecha/equipment/tools/mining_tools.dm b/code/game/mecha/equipment/tools/mining_tools.dm
index 6146e326023..3b1b919bde6 100644
--- a/code/game/mecha/equipment/tools/mining_tools.dm
+++ b/code/game/mecha/equipment/tools/mining_tools.dm
@@ -110,7 +110,6 @@
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"
selectable = 0
equip_cooldown = 30
var/scanning = 0
diff --git a/code/game/mecha/equipment/tools/other_tools.dm b/code/game/mecha/equipment/tools/other_tools.dm
index 3f60c56a952..2e9c75510f4 100644
--- a/code/game/mecha/equipment/tools/other_tools.dm
+++ b/code/game/mecha/equipment/tools/other_tools.dm
@@ -7,7 +7,7 @@
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"
+ origin_tech = "bluespace=7"
equip_cooldown = 150
energy_drain = 8000
range = RANGED
@@ -25,7 +25,7 @@
/obj/item/mecha_parts/mecha_equipment/teleporter/precise
name = "upgraded teleporter"
desc = "An exosuit module that allows exosuits to teleport to any position in view. This is the high-precision, energy-efficient version."
- origin_tech = "bluespace=13"
+ origin_tech = "bluespace=7"
energy_drain = 1000
tele_precision = 1
@@ -36,7 +36,7 @@
name = "mounted wormhole generator"
desc = "An exosuit module that allows generating of small quasi-stable wormholes."
icon_state = "mecha_wholegen"
- origin_tech = "bluespace=3"
+ origin_tech = "bluespace=4;magnets=4;plasmatech=2"
equip_cooldown = 50
energy_drain = 300
range = RANGED
@@ -82,7 +82,7 @@
name = "mounted gravitational catapult"
desc = "An exosuit mounted Gravitational Catapult."
icon_state = "mecha_teleport"
- origin_tech = "bluespace=2;magnets=3"
+ origin_tech = "bluespace=3;magnets=3;engineering=4"
equip_cooldown = 10
energy_drain = 100
range = MELEE|RANGED
@@ -145,7 +145,7 @@
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"
+ origin_tech = "materials=4;combat=4"
equip_cooldown = 10
energy_drain = 50
range = 0
@@ -163,7 +163,7 @@
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"
+ origin_tech = "materials=4;combat=3;engineering=3"
equip_cooldown = 10
energy_drain = 50
range = 0
@@ -183,7 +183,7 @@
name = "Repair Droid"
desc = "Automated repair droid. Scans exosuit 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"
+ origin_tech ="magnets=3;programming=3;engineering=4"
equip_cooldown = 20
energy_drain = 50
range = 0
@@ -490,4 +490,4 @@
/obj/item/mecha_parts/mecha_equipment/generator/nuclear/process()
if(..())
for(var/mob/living/carbon/M in view(chassis))
- M.apply_effect((rad_per_cycle * 3),IRRADIATE,0)
\ No newline at end of file
+ M.apply_effect((rad_per_cycle * 3),IRRADIATE,0)
diff --git a/code/game/mecha/equipment/tools/work_tools.dm b/code/game/mecha/equipment/tools/work_tools.dm
index 7a0e388b39e..81fba15d1e8 100644
--- a/code/game/mecha/equipment/tools/work_tools.dm
+++ b/code/game/mecha/equipment/tools/work_tools.dm
@@ -188,7 +188,7 @@
name = "Mounted RCD"
desc = "An exosuit-mounted Rapid Construction Device. (Can be attached to: Any exosuit)"
icon_state = "mecha_rcd"
- origin_tech = "materials=4;bluespace=3;magnets=4;powerstorage=4"
+ origin_tech = "materials=4;bluespace=3;magnets=4;powerstorage=4;engineering=4"
equip_cooldown = 10
energy_drain = 250
range = MELEE|RANGED
@@ -287,7 +287,7 @@
name = "mounted MRCD"
desc = "An exosuit-mounted Mime Rapid Construction Device. (Can be attached to: Reticence)"
icon_state = "mecha_rcd"
- origin_tech = "materials=4;bluespace=3;magnets=4;powerstorage=4"
+ origin_tech = "materials=4;bluespace=3;magnets=4;powerstorage=4;engineering=4"
equip_cooldown = 10
energy_drain = 250
range = MELEE|RANGED
diff --git a/code/game/mecha/equipment/weapons/weapons.dm b/code/game/mecha/equipment/weapons/weapons.dm
index 5fea88f278f..77bcc4c1966 100644
--- a/code/game/mecha/equipment/weapons/weapons.dm
+++ b/code/game/mecha/equipment/weapons/weapons.dm
@@ -70,12 +70,14 @@
equip_cooldown = 8
name = "CH-PS \"Firedart\" Laser"
icon_state = "mecha_laser"
+ origin_tech = "magnets=3;combat=3;engineering=3"
energy_drain = 30
projectile = /obj/item/projectile/beam
fire_sound = 'sound/weapons/Laser.ogg'
/obj/item/mecha_parts/mecha_equipment/weapon/energy/laser/disabler
name = "CH-PD Disabler"
+ origin_tech = "combat=3"
projectile = /obj/item/projectile/beam/disabler
projectiles_per_shot = 2
projectile_delay = 1
@@ -84,6 +86,7 @@
equip_cooldown = 10
name = "CH-LC \"Solaris\" Laser Cannon"
icon_state = "mecha_laser"
+ origin_tech = "magnets=4;combat=4;engineering=3"
energy_drain = 60
projectile = /obj/item/projectile/beam/laser/heavylaser
fire_sound = 'sound/weapons/lasercannonfire.ogg'
@@ -92,6 +95,7 @@
equip_cooldown = 40
name = "mkIV Ion Heavy Cannon"
icon_state = "mecha_ion"
+ origin_tech = "materials=4;combat=5;magnets=4"
energy_drain = 120
projectile = /obj/item/projectile/ion
fire_sound = 'sound/weapons/Laser.ogg'
@@ -101,7 +105,7 @@
name = "P-X Tesla Cannon"
desc = "A weapon for combat exosuits. Fires bolts of electricity similar to the experimental tesla engine"
icon_state = "mecha_laser"
- origin_tech = "materials=4;combat=5;magnets=4"
+ origin_tech = "materials=4;engineering=4;combat=6;magnets=6"
energy_drain = 500
projectile = /obj/item/projectile/energy/shock_revolver
fire_sound = 'sound/magic/lightningbolt.ogg'
@@ -126,7 +130,7 @@
name = "ZFI Immolation Beam Gun"
desc = "A weapon for combat exosuits. Fires beams of extreme heat that set targets on fire."
icon_state = "mecha_laser"
- origin_tech = "materials=4;combat=4;magnets=3;plasmatech=2"
+ origin_tech = "materials=4;engineering=4;combat=6;magnets=6"
energy_drain = 80
projectile = /obj/item/projectile/beam/immolator
fire_sound = 'sound/weapons/laser3.ogg'
@@ -170,6 +174,7 @@
/obj/item/mecha_parts/mecha_equipment/weapon/energy/taser
name = "PBT \"Pacifier\" Mounted Taser"
icon_state = "mecha_taser"
+ origin_tech = "combat=3"
energy_drain = 20
equip_cooldown = 8
projectile = /obj/item/projectile/energy/electrode
@@ -270,6 +275,7 @@
/obj/item/mecha_parts/mecha_equipment/weapon/ballistic/carbine
name = "FNX-66 Carbine"
icon_state = "mecha_carbine"
+ origin_tech = "materials=4;combat=4"
equip_cooldown = 5
projectile = /obj/item/projectile/bullet/incendiary/shell/dragonsbreath
fire_sound = 'sound/weapons/Gunshot.ogg'
@@ -294,6 +300,7 @@
/obj/item/mecha_parts/mecha_equipment/weapon/ballistic/scattershot
name = "LBX AC 10 \"Scattershot\""
icon_state = "mecha_scatter"
+ origin_tech = "combat=4"
equip_cooldown = 20
projectile = /obj/item/projectile/bullet/midbullet
fire_sound = 'sound/weapons/Gunshot.ogg'
@@ -305,6 +312,7 @@
/obj/item/mecha_parts/mecha_equipment/weapon/ballistic/lmg
name = "Ultra AC 2"
icon_state = "mecha_uac2"
+ origin_tech = "combat=4"
equip_cooldown = 10
projectile = /obj/item/projectile/bullet/weakbullet3
fire_sound = 'sound/weapons/Gunshot.ogg'
@@ -321,6 +329,7 @@
/obj/item/mecha_parts/mecha_equipment/weapon/ballistic/missile_rack
name = "SRM-8 Light Missile Rack"
icon_state = "mecha_missilerack"
+ origin_tech = "combat=5;materials=4;engineering=4"
projectile = /obj/item/missile
fire_sound = 'sound/effects/bang.ogg'
projectiles = 8
@@ -373,6 +382,7 @@
/obj/item/mecha_parts/mecha_equipment/weapon/ballistic/missile_rack/flashbang
name = "SGL-6 Grenade Launcher"
icon_state = "mecha_grenadelnchr"
+ origin_tech = "combat=4;engineering=4"
projectile = /obj/item/weapon/grenade/flashbang
fire_sound = 'sound/effects/bang.ogg'
projectiles = 6
@@ -398,6 +408,7 @@
/obj/item/mecha_parts/mecha_equipment/weapon/ballistic/missile_rack/flashbang/clusterbang//Because I am a heartless bastard -Sieve
name = "SOB-3 Grenade Launcher"
desc = "A weapon for combat exosuits. Launches primed clusterbangs. You monster."
+ origin_tech = "combat=4;materials=4"
projectiles = 3
projectile = /obj/item/weapon/grenade/clusterbuster
projectile_energy_cost = 1600 //getting off cheap seeing as this is 3 times the flashbangs held in the grenade launcher.
@@ -504,7 +515,7 @@
icon_state = "mecha_plasmacutter"
item_state = "plasmacutter"
energy_drain = 30
- origin_tech = "materials=3;combat=2;powerstorage=3;plasmatech=3"
+ origin_tech = "materials=3;plasmatech=4;engineering=3"
projectile = /obj/item/projectile/plasma/adv/mech
fire_sound = 'sound/weapons/laser.ogg'
diff --git a/code/game/mecha/mech_fabricator.dm b/code/game/mecha/mech_fabricator.dm
index cd20b68f10d..b7aadbaae26 100644
--- a/code/game/mecha/mech_fabricator.dm
+++ b/code/game/mecha/mech_fabricator.dm
@@ -9,6 +9,7 @@
idle_power_usage = 20
active_power_usage = 5000
var/time_coeff = 1
+ var/component_coeff = 1
var/list/resources = list(
MAT_METAL=0,
MAT_GLASS=0,
@@ -77,6 +78,12 @@
T += M.rating
res_max_amount = (187000+(T * 37500))
+ //resources adjustment coefficient (1 -> 0.85 -> 0.7 -> 0.55)
+ T = 1.15
+ for(var/obj/item/weapon/stock_parts/micro_laser/Ma in component_parts)
+ T -= Ma.rating*0.15
+ component_coeff = T
+
//building time adjustment coefficient (1 -> 0.8 -> 0.6)
T = -1
for(var/obj/item/weapon/stock_parts/manipulator/Ml in component_parts)
@@ -246,7 +253,7 @@
return
/obj/machinery/mecha_part_fabricator/proc/get_resource_cost_w_coeff(datum/design/D, resource, roundto = 1)
- return round(D.materials[resource], roundto)
+ return round(D.materials[resource]*component_coeff, roundto)
/obj/machinery/mecha_part_fabricator/proc/get_construction_time_w_coeff(datum/design/D, roundto = 1) //aran
return round(initial(D.construction_time)*time_coeff, roundto)
diff --git a/code/game/mecha/mecha.dm b/code/game/mecha/mecha.dm
index 2fa9b3af00f..1daa7300b1d 100644
--- a/code/game/mecha/mecha.dm
+++ b/code/game/mecha/mecha.dm
@@ -602,7 +602,6 @@
WR.crowbar_salvage += E
E.forceMove(WR)
E.equip_ready = 1
- E.reliability = round(rand(E.reliability/3,E.reliability))
else
E.forceMove(loc)
qdel(E)
@@ -1310,7 +1309,7 @@
dir = dir_in
if(L && L.client)
- L.client.view = world.view
+ L.client.RemoveViewMod("mecha")
/////////////////////////
////// Access stuff /////
diff --git a/code/game/mecha/mecha_control_console.dm b/code/game/mecha/mecha_control_console.dm
index 2bb73e2c636..1e2868673c0 100644
--- a/code/game/mecha/mecha_control_console.dm
+++ b/code/game/mecha/mecha_control_console.dm
@@ -71,7 +71,7 @@
desc = "Device used to transmit exosuit data."
icon = 'icons/obj/device.dmi'
icon_state = "motion2"
- w_class = 2
+ w_class = WEIGHT_CLASS_SMALL
origin_tech = "programming=2;magnets=2"
var/ai_beacon = FALSE //If this beacon allows for AI control. Exists to avoid using istype() on checking.
diff --git a/code/game/mecha/mecha_parts.dm b/code/game/mecha/mecha_parts.dm
index 9250dfa4839..ce22dd723f9 100644
--- a/code/game/mecha/mecha_parts.dm
+++ b/code/game/mecha/mecha_parts.dm
@@ -6,9 +6,9 @@
name = "mecha part"
icon = 'icons/mecha/mech_construct.dmi'
icon_state = "blank"
- w_class = 6
+ w_class = WEIGHT_CLASS_GIGANTIC
flags = CONDUCT
- origin_tech = "programming=2;materials=2"
+ origin_tech = "programming=2;materials=2;engineering=2"
/obj/item/mecha_parts/chassis
@@ -47,25 +47,21 @@
name="Ripley Left Arm"
desc="A Ripley APLU left arm. Data and power sockets are compatible with most exosuit tools."
icon_state = "ripley_l_arm"
- origin_tech = "programming=2;materials=2;engineering=2"
/obj/item/mecha_parts/part/ripley_right_arm
name="Ripley Right Arm"
desc="A Ripley APLU right arm. Data and power sockets are compatible with most exosuit tools."
icon_state = "ripley_r_arm"
- origin_tech = "programming=2;materials=2;engineering=2"
/obj/item/mecha_parts/part/ripley_left_leg
name="Ripley Left Leg"
desc="A Ripley APLU left leg. Contains somewhat complex servodrives and balance maintaining systems."
icon_state = "ripley_l_leg"
- origin_tech = "programming=2;materials=2;engineering=2"
/obj/item/mecha_parts/part/ripley_right_leg
name="Ripley Right Leg"
desc="A Ripley APLU right leg. Contains somewhat complex servodrives and balance maintaining systems."
icon_state = "ripley_r_leg"
- origin_tech = "programming=2;materials=2;engineering=2"
///////// Gygax
@@ -80,40 +76,40 @@
name="Gygax Torso"
desc="A torso part of Gygax. Contains power unit, processing core and life support systems. Has an additional equipment slot."
icon_state = "gygax_harness"
- origin_tech = "programming=2;materials=2;biotech=3;engineering=3"
+ origin_tech = "programming=2;materials=4;biotech=3;engineering=3"
/obj/item/mecha_parts/part/gygax_head
name="Gygax Head"
desc="A Gygax head. Houses advanced surveilance and targeting sensors."
icon_state = "gygax_head"
- origin_tech = "programming=2;materials=2;magnets=3;engineering=3"
+ origin_tech = "programming=2;materials=4;magnets=3;engineering=3"
/obj/item/mecha_parts/part/gygax_left_arm
name="Gygax Left Arm"
desc="A Gygax left arm. Data and power sockets are compatible with most exosuit tools and weapons."
icon_state = "gygax_l_arm"
- origin_tech = "programming=2;materials=2;engineering=3"
+ origin_tech = "programming=2;materials=4;engineering=3"
/obj/item/mecha_parts/part/gygax_right_arm
name="Gygax Right Arm"
desc="A Gygax right arm. Data and power sockets are compatible with most exosuit tools and weapons."
icon_state = "gygax_r_arm"
- origin_tech = "programming=2;materials=2;engineering=3"
+ origin_tech = "programming=2;materials=4;engineering=3"
/obj/item/mecha_parts/part/gygax_left_leg
name="Gygax Left Leg"
icon_state = "gygax_l_leg"
- origin_tech = "programming=2;materials=2;engineering=3"
+ origin_tech = "programming=2;materials=4;engineering=3"
/obj/item/mecha_parts/part/gygax_right_leg
name="Gygax Right Leg"
icon_state = "gygax_r_leg"
- origin_tech = "programming=2;materials=2;engineering=3"
+ origin_tech = "programming=2;materials=4;engineering=3"
/obj/item/mecha_parts/part/gygax_armour
name="Gygax Armour Plates"
icon_state = "gygax_armour"
- origin_tech = "materials=6;combat=4;engineering=5"
+ origin_tech = "materials=6;combat=4;engineering=4"
//////////// Durand
@@ -158,7 +154,7 @@
/obj/item/mecha_parts/part/durand_armor
name="Durand Armour Plates"
icon_state = "durand_armor"
- origin_tech = "materials=5;combat=4;engineering=5"
+ origin_tech = "materials=5;combat=4;engineering=4"
@@ -278,7 +274,6 @@
/obj/item/mecha_parts/chassis/phazon
name = "Phazon Chassis"
- origin_tech = "materials=6"
New()
..()
@@ -287,38 +282,38 @@
/obj/item/mecha_parts/part/phazon_torso
name="Phazon Torso"
icon_state = "phazon_harness"
- origin_tech = "programming=5;materials=6;bluespace=5;powerstorage=5"
+ origin_tech = "programming=4;materials=4;bluespace=4;plasmatech=5"
/obj/item/mecha_parts/part/phazon_head
name="Phazon Head"
icon_state = "phazon_head"
- origin_tech = "programming=4;materials=5;magnets=5"
+ origin_tech = "programming=3;materials=3;magnets=3"
/obj/item/mecha_parts/part/phazon_left_arm
name="Phazon Left Arm"
icon_state = "phazon_l_arm"
- origin_tech = "materials=5;bluespace=2;magnets=2"
+ origin_tech = "materials=3;bluespace=3;magnets=3"
/obj/item/mecha_parts/part/phazon_right_arm
name="Phazon Right Arm"
icon_state = "phazon_r_arm"
- origin_tech = "materials=5;bluespace=2;magnets=2"
+ origin_tech = "materials=3;bluespace=3;magnets=3"
/obj/item/mecha_parts/part/phazon_left_leg
name="Phazon Left Leg"
icon_state = "phazon_l_leg"
- origin_tech = "materials=5;bluespace=3;magnets=3"
+ origin_tech = "materials=3;bluespace=3;magnets=3"
/obj/item/mecha_parts/part/phazon_right_leg
name="Phazon Right Leg"
icon_state = "phazon_r_leg"
- origin_tech = "materials=5;bluespace=3;magnets=3"
+ origin_tech = "materials=3;bluespace=3;magnets=3"
/obj/item/mecha_parts/part/phazon_armor
name="Phazon armor"
desc="Phazon armor plates. They are layered with plasma to protect the pilot from the stress of phasing and have unusual properties."
icon_state = "phazon_armor"
- origin_tech = "materials=6;bluespace=5;magnets=5"
+ origin_tech = "materials=4;bluespace=4;plasmatech=5"
///////// Odysseus
/obj/item/mecha_parts/chassis/odysseus
@@ -331,7 +326,6 @@
/obj/item/mecha_parts/part/odysseus_head
name="Odysseus Head"
icon_state = "odysseus_head"
- origin_tech = "programming=3;materials=2"
/obj/item/mecha_parts/part/odysseus_torso
name="Odysseus Torso"
@@ -343,25 +337,21 @@
name="Odysseus Left Arm"
desc="An Odysseus left arm. Data and power sockets are compatible with most exosuit tools."
icon_state = "odysseus_l_arm"
- origin_tech = "programming=2;materials=2;engineering=2"
/obj/item/mecha_parts/part/odysseus_right_arm
name="Odysseus Right Arm"
desc="An Odysseus right arm. Data and power sockets are compatible with most exosuit tools."
icon_state = "odysseus_r_arm"
- origin_tech = "programming=2;materials=2;engineering=2"
/obj/item/mecha_parts/part/odysseus_left_leg
name="Odysseus Left Leg"
desc="An Odysseus left leg. Contains somewhat complex servodrives and balance maintaining systems."
icon_state = "odysseus_l_leg"
- origin_tech = "programming=2;materials=2;engineering=2"
/obj/item/mecha_parts/part/odysseus_right_leg
name="Odysseus Right Leg"
desc="A Odysseus right leg. Contains somewhat complex servodrives and balance maintaining systems."
icon_state = "odysseus_r_leg"
- origin_tech = "programming=2;materials=2;engineering=2"
/*/obj/item/mecha_parts/part/odysseus_armour
name="Odysseus Carapace"
@@ -379,13 +369,13 @@
board_type = "other"
flags = CONDUCT
force = 5.0
- w_class = 2
+ w_class = WEIGHT_CLASS_SMALL
throwforce = 5.0
throw_speed = 3
throw_range = 15
/obj/item/weapon/circuitboard/mecha/ripley
- origin_tech = "programming=3"
+ origin_tech = "programming=2"
/obj/item/weapon/circuitboard/mecha/ripley/peripherals
name = "Circuit board (Ripley Peripherals Control module)"
@@ -396,7 +386,7 @@
icon_state = "mainboard"
/obj/item/weapon/circuitboard/mecha/gygax
- origin_tech = "programming=4"
+ origin_tech = "programming=4;combat=3;engineering=3"
/obj/item/weapon/circuitboard/mecha/gygax/peripherals
name = "Circuit board (Gygax Peripherals Control module)"
@@ -412,7 +402,7 @@
icon_state = "mainboard"
/obj/item/weapon/circuitboard/mecha/durand
- origin_tech = "programming=4"
+ origin_tech = "programming=4;combat=3;engineering=3"
/obj/item/weapon/circuitboard/mecha/durand/peripherals
name = "Circuit board (Durand Peripherals Control module)"
@@ -421,14 +411,14 @@
/obj/item/weapon/circuitboard/mecha/durand/targeting
name = "Circuit board (Durand Weapon Control and Targeting module)"
icon_state = "mcontroller"
- origin_tech = "programming=4;combat=4"
+ origin_tech = "programming=4;combat=4;engineering=3"
/obj/item/weapon/circuitboard/mecha/durand/main
name = "Circuit board (Durand Central Control module)"
icon_state = "mainboard"
/obj/item/weapon/circuitboard/mecha/phazon
- origin_tech = "programming=4"
+ origin_tech = "programming=5;plasmatech=4"
/obj/item/weapon/circuitboard/mecha/phazon/peripherals
name = "Circuit board (Phazon Peripherals Control module)"
@@ -437,14 +427,13 @@
/obj/item/weapon/circuitboard/mecha/phazon/targeting
name = "Circuit board (Phazon Weapon Control and Targeting module)"
icon_state = "mcontroller"
- origin_tech = "programming=4;combat=4"
/obj/item/weapon/circuitboard/mecha/phazon/main
name = "Circuit board (Phazon Central Control module)"
icon_state = "mainboard"
/obj/item/weapon/circuitboard/mecha/honker
- origin_tech = "programming=4"
+ origin_tech = "programming=3;engineering=3"
/obj/item/weapon/circuitboard/mecha/honker/peripherals
name = "Circuit board (H.O.N.K Peripherals Control module)"
@@ -459,7 +448,7 @@
icon_state = "mainboard"
/obj/item/weapon/circuitboard/mecha/reticence
- origin_tech = "programming=4"
+ origin_tech = "programming=3;engineering=3"
/obj/item/weapon/circuitboard/mecha/reticence/peripherals
name = "circuit board (Reticence Peripherals Control module)"
@@ -474,7 +463,7 @@
icon_state = "mainboard"
/obj/item/weapon/circuitboard/mecha/odysseus
- origin_tech = "programming=3"
+ origin_tech = "programming=3;biotech=3"
/obj/item/weapon/circuitboard/mecha/odysseus/peripherals
name = "Circuit board (Odysseus Peripherals Control module)"
@@ -487,5 +476,3 @@
/obj/item/weapon/circuitboard/mecha/pod
name = "Circuit board (Space Pod Mainboard)"
icon_state = "mainboard"
-
-
diff --git a/code/game/objects/effects/anomalies.dm b/code/game/objects/effects/anomalies.dm
index 89baf450720..adf46ef47e1 100644
--- a/code/game/objects/effects/anomalies.dm
+++ b/code/game/objects/effects/anomalies.dm
@@ -53,7 +53,7 @@
/obj/effect/anomaly/grav/New()
..()
- aSignal.origin_tech = "magnets=5;powerstorage=4"
+ aSignal.origin_tech = "magnets=7"
/obj/effect/anomaly/grav/anomalyEffect()
..()
@@ -89,7 +89,7 @@
/obj/effect/anomaly/flux/New()
..()
- aSignal.origin_tech = "powerstorage=6;programming=4;plasmatech=4"
+ aSignal.origin_tech = "powerstorage=7"
/////////////////////
@@ -101,7 +101,7 @@
/obj/effect/anomaly/bluespace/New()
..()
- aSignal.origin_tech = "bluespace=5;magnets=5;powerstorage=3"
+ aSignal.origin_tech = "bluespace=7"
/obj/effect/anomaly/bluespace/Bumped(atom/A)
if(isliving(A))
@@ -116,7 +116,7 @@
/obj/effect/anomaly/pyro/New()
..()
- aSignal.origin_tech = "plasmatech=5;powerstorage=4;biotech=6"
+ aSignal.origin_tech = "plasmatech=7"
/obj/effect/anomaly/pyro/anomalyEffect()
..()
@@ -133,7 +133,7 @@
/obj/effect/anomaly/bhole/New()
..()
- aSignal.origin_tech = "materials=5;combat=4;engineering=4"
+ aSignal.origin_tech = "engineering=7"
/obj/effect/anomaly/bhole/anomalyEffect()
..()
@@ -180,4 +180,4 @@
//Damaging the turf
if( T && istype(T,/turf/simulated) && prob(turf_removal_chance) )
T.ex_act(ex_act_force)
- return
\ No newline at end of file
+ return
diff --git a/code/game/objects/effects/glowshroom.dm b/code/game/objects/effects/glowshroom.dm
index f641cb26c32..9af07df67b4 100644
--- a/code/game/objects/effects/glowshroom.dm
+++ b/code/game/objects/effects/glowshroom.dm
@@ -162,6 +162,8 @@
G.endurance -= damage_to_do
G.CheckEndurance()
return
+ else if(I.sharp)
+ damage_to_do = I.force * 3 // wirecutter: 6->18, knife 10->30, hatchet 12->36
if(I.damtype != STAMINA)
endurance -= damage_to_do
CheckEndurance()
diff --git a/code/game/objects/effects/spawners/lootdrop.dm b/code/game/objects/effects/spawners/lootdrop.dm
index 7045a06a875..ebfd177959e 100644
--- a/code/game/objects/effects/spawners/lootdrop.dm
+++ b/code/game/objects/effects/spawners/lootdrop.dm
@@ -198,3 +198,27 @@
/obj/item/weapon/gun/energy/kinetic_accelerator = 1,
/obj/item/pizzabox = 3,
)
+
+/obj/effect/spawner/lootdrop/three_course_meal
+ name = "three course meal spawner"
+ lootcount = 3
+ lootdoubles = FALSE
+ var/soups = list(
+ /obj/item/weapon/reagent_containers/food/snacks/beetsoup,
+ /obj/item/weapon/reagent_containers/food/snacks/stew,
+ /obj/item/weapon/reagent_containers/food/snacks/hotchili,
+ /obj/item/weapon/reagent_containers/food/snacks/nettlesoup,
+ /obj/item/weapon/reagent_containers/food/snacks/meatballsoup)
+ var/salads = list(
+ /obj/item/weapon/reagent_containers/food/snacks/herbsalad,
+ /obj/item/weapon/reagent_containers/food/snacks/validsalad,
+ /obj/item/weapon/reagent_containers/food/snacks/aesirsalad)
+ var/mains = list(
+ /obj/item/weapon/reagent_containers/food/snacks/enchiladas,
+ /obj/item/weapon/reagent_containers/food/snacks/stewedsoymeat,
+ /obj/item/weapon/reagent_containers/food/snacks/bigbiteburger,
+ /obj/item/weapon/reagent_containers/food/snacks/superbiteburger)
+
+/obj/effect/spawner/lootdrop/three_course_meal/New()
+ loot = list(pick(soups) = 1,pick(salads) = 1,pick(mains) = 1)
+ . = ..()
diff --git a/code/game/objects/items.dm b/code/game/objects/items.dm
index f56ada78145..00eb1bd6884 100644
--- a/code/game/objects/items.dm
+++ b/code/game/objects/items.dm
@@ -20,7 +20,7 @@ var/global/image/fire_overlay = image("icon" = 'icons/goonstation/effects/fire.d
var/health = null
var/hitsound = null
var/usesound = null
- var/w_class = 3
+ var/w_class = WEIGHT_CLASS_NORMAL
var/slot_flags = 0 //This is used to determine on which slots an item can fit.
pass_flags = PASSTABLE
pressure_resistance = 3
@@ -146,16 +146,18 @@ var/global/image/fire_overlay = image("icon" = 'icons/goonstation/effects/fire.d
/obj/item/examine(mob/user, var/distance = -1)
var/size
switch(src.w_class)
- if(1.0)
+ if(WEIGHT_CLASS_TINY)
size = "tiny"
- if(2.0)
+ if(WEIGHT_CLASS_SMALL)
size = "small"
- if(3.0)
+ if(WEIGHT_CLASS_NORMAL)
size = "normal-sized"
- if(4.0)
+ if(WEIGHT_CLASS_BULKY)
size = "bulky"
- if(5.0)
+ if(WEIGHT_CLASS_HUGE)
size = "huge"
+ if(WEIGHT_CLASS_GIGANTIC)
+ size = "gigantic"
. = ..(user, distance, "", "It is a [size] item.")
@@ -167,9 +169,6 @@ var/global/image/fire_overlay = image("icon" = 'icons/goonstation/effects/fire.d
var/list/techlvls = params2list(origin_tech)
for(var/T in techlvls) //This needs to use the better names.
msg += "Tech: [CallTechName(T)] | Magnitude: [techlvls[T]]
"
- msg += "Research reliability: [reliability]%
"
- if(crit_fail)
- msg += "Critical failure detected in subject!
"
else
msg += "No tech origins detected.
"
@@ -519,7 +518,7 @@ var/global/image/fire_overlay = image("icon" = 'icons/goonstation/effects/fire.d
/obj/item/throw_impact(atom/A)
if(A && !qdeleted(A))
var/itempush = 1
- if(w_class < 4)
+ if(w_class < WEIGHT_CLASS_BULKY)
itempush = 0 // too light to push anything
return A.hitby(src, 0, itempush)
diff --git a/code/game/objects/items/blueprints.dm b/code/game/objects/items/blueprints.dm
index 3cc0f9b6023..315eacb8f95 100644
--- a/code/game/objects/items/blueprints.dm
+++ b/code/game/objects/items/blueprints.dm
@@ -51,7 +51,7 @@
desc = "This is a one-use permit that allows the user to officially declare a built room as new addition to the station."
fluffnotice = "Nanotrasen Engineering requires all on-station construction projects to be approved by a head of staff, as detailed in Nanotrasen Company Regulation 512-C (Mid-Shift Modifications to Company Property). \
By submitting this form, you accept any fines, fees, or personal injury/death that may occur during construction."
- w_class = 1
+ w_class = WEIGHT_CLASS_TINY
/obj/item/areaeditor/permit/attack_self(mob/user)
. = ..()
@@ -76,7 +76,7 @@
icon = 'icons/obj/items.dmi'
icon_state = "blueprints"
fluffnotice = "Property of Nanotrasen. For heads of staff only. Store in high-secure storage."
- w_class = 3
+ w_class = WEIGHT_CLASS_NORMAL
var/list/showing = list()
var/client/viewing
diff --git a/code/game/objects/items/bodybag.dm b/code/game/objects/items/bodybag.dm
index c52aa0e1792..4108fe85ddd 100644
--- a/code/game/objects/items/bodybag.dm
+++ b/code/game/objects/items/bodybag.dm
@@ -5,7 +5,7 @@
desc = "A folded bag designed for the storage and transportation of cadavers."
icon = 'icons/obj/bodybag.dmi'
icon_state = "bodybag_folded"
- w_class = 2
+ w_class = WEIGHT_CLASS_SMALL
attack_self(mob/user)
var/obj/structure/closet/body_bag/R = new /obj/structure/closet/body_bag(user.loc)
@@ -136,4 +136,4 @@
to_chat(user, "The controls are now [src.locked ? "locked." : "unlocked."]")
else
to_chat(user, "Access denied.")
- return
\ No newline at end of file
+ return
diff --git a/code/game/objects/items/candle.dm b/code/game/objects/items/candle.dm
index 46ee95d119b..801f74770ba 100644
--- a/code/game/objects/items/candle.dm
+++ b/code/game/objects/items/candle.dm
@@ -4,7 +4,7 @@
icon = 'icons/obj/candle.dmi'
icon_state = "candle1"
item_state = "candle1"
- w_class = 1
+ w_class = WEIGHT_CLASS_TINY
var/wax = 200
var/lit = 0
var/infinite = 0
@@ -91,4 +91,4 @@
/obj/item/candle/eternal
desc = "A candle. This one seems to have an odd quality about the wax."
- infinite = 1
\ No newline at end of file
+ infinite = 1
diff --git a/code/game/objects/items/cardboard_cutouts.dm b/code/game/objects/items/cardboard_cutouts.dm
new file mode 100644
index 00000000000..d815e8c262f
--- /dev/null
+++ b/code/game/objects/items/cardboard_cutouts.dm
@@ -0,0 +1,188 @@
+//Cardboard cutouts! They're man-shaped and can be colored with a crayon to look like a human in a certain outfit, although it's limited, discolored, and obvious to more than a cursory glance.
+/obj/item/cardboard_cutout
+ name = "cardboard cutout"
+ desc = "A vaguely humanoid cardboard cutout. It's completely blank."
+ icon = 'icons/obj/cardboard_cutout.dmi'
+ icon_state = "cutout_basic"
+ burn_state = FLAMMABLE
+ w_class = WEIGHT_CLASS_BULKY
+ var/list/possible_appearances = list("Assistant", "Clown", "Mime",
+ "Traitor", "Nuke Op", "Cultist", "Revolutionary", "Wizard", "Shadowling", "Xenomorph", "Swarmer",
+ "Deathsquad Officer", "Ian", "Slaughter Demon",
+ "Laughter Demon", "Xenomorph Maid", "Security Officer", "Terror Spider")
+ var/pushed_over = FALSE //If the cutout is pushed over and has to be righted
+ var/deceptive = FALSE //If the cutout actually appears as what it portray and not a discolored version
+ var/lastattacker = null
+
+/obj/item/cardboard_cutout/attack_hand(mob/living/user)
+ if(user.a_intent == I_HELP || pushed_over)
+ return ..()
+ user.visible_message("[user] pushes over [src]!", "You push over [src]!")
+ playsound(src, 'sound/weapons/Genhit.ogg', 50, 1)
+ push_over()
+
+/obj/item/cardboard_cutout/proc/push_over()
+ name = initial(name)
+ desc = "[initial(desc)] It's been pushed over."
+ icon = initial(icon)
+ icon_state = "cutout_pushed_over"
+ color = initial(color)
+ alpha = initial(alpha)
+ pushed_over = TRUE
+
+/obj/item/cardboard_cutout/attack_self(mob/living/user)
+ if(!pushed_over)
+ return
+ to_chat(user, "You right [src].")
+ desc = initial(desc)
+ icon = initial(icon)
+ icon_state = initial(icon_state) //This resets a cutout to its blank state - this is intentional to allow for resetting
+ pushed_over = FALSE
+
+/obj/item/cardboard_cutout/attackby(obj/item/I, mob/living/user, params)
+ if(istype(I, /obj/item/toy/crayon))
+ change_appearance(I, user)
+ return
+ // Why yes, this does closely resemble mob and object attack code.
+ if(I.flags & NOBLUDGEON)
+ return
+ if(!I.force)
+ playsound(loc, 'sound/weapons/tap.ogg', 20, 1, -1)
+ else if(I.hitsound)
+ playsound(loc, I.hitsound, 20, 1, -1)
+
+ user.changeNext_move(CLICK_CD_MELEE)
+ user.do_attack_animation(src)
+
+ if(I.force)
+ user.visible_message("[user] has hit \
+ [src] with [I]!", "You hit [src] \
+ with [I]!")
+
+ if(prob(I.force))
+ push_over()
+
+/obj/item/cardboard_cutout/bullet_act(obj/item/projectile/P)
+ visible_message("[src] has been hit by [P]!")
+ playsound(src, 'sound/weapons/slice.ogg', 50, 1)
+ if(prob(P.damage))
+ push_over()
+
+/obj/item/cardboard_cutout/proc/change_appearance(obj/item/toy/crayon/crayon, mob/living/user)
+ if(!crayon || !user)
+ return
+ if(istype(crayon, /obj/item/toy/crayon/spraycan))
+ var/obj/item/toy/crayon/spraycan/can = crayon
+ if(can.capped)
+ to_chat(user, "The cap is on [src] remove it first!")
+ return
+ if(pushed_over)
+ to_chat(user, "Right [src] first!")
+ return
+ var/new_appearance = input(user, "Choose a new appearance for [src].", "26th Century Deception") as null|anything in possible_appearances
+ if(!new_appearance || !crayon)
+ return
+ if(!do_after(user, 10, FALSE, src, TRUE))
+ return
+ user.visible_message("[user] gives [src] a new look.", "Voila! You give [src] a new look.")
+ alpha = 255
+ icon = initial(icon)
+ if(!deceptive)
+ color = "#FFD7A7"
+ switch(new_appearance)
+ if("Assistant")
+ name = "[pick(first_names_male)] [pick(last_names)]"
+ desc = "A cardboard cutout of an assistant."
+ icon_state = "cutout_greytide"
+ if("Clown")
+ name = pick(clown_names)
+ desc = "A cardboard cutout of a clown. You get the feeling that it should be in a corner."
+ icon_state = "cutout_clown"
+ if("Mime")
+ name = pick(mime_names)
+ desc = "...(A cardboard cutout of a mime.)"
+ icon_state = "cutout_mime"
+ if("Traitor")
+ name = "[pick("Unknown", "Captain")]"
+ desc = "A cardboard cutout of a traitor."
+ icon_state = "cutout_traitor"
+ if("Nuke Op")
+ name = "[pick("Unknown", "COMMS", "Telecomms", "AI", "stealthy op", "STEALTH", "sneakybeaky", "MEDIC", "Medic", "Gonk op")]"
+ desc = "A cardboard cutout of a nuclear operative."
+ icon_state = "cutout_fluke"
+ if("Cultist")
+ name = "Unknown"
+ desc = "A cardboard cutout of a cultist."
+ icon_state = "cutout_cultist"
+ //if("Clockwork Cultist")
+ // name = "[random_name(pick(MALE,FEMALE))]"
+ // desc = "A cardboard cutout of a servant of Ratvar."
+ // icon_state = "cutout_servant"
+ if("Revolutionary")
+ name = "Unknown"
+ desc = "A cardboard cutout of a revolutionary."
+ icon_state = "cutout_viva"
+ if("Wizard")
+ name = "[pick(wizard_first)], [pick(wizard_second)]"
+ desc = "A cardboard cutout of a wizard."
+ icon_state = "cutout_wizard"
+ if("Shadowling")
+ name = "Unknown"
+ desc = "A cardboard cutout of a shadowling."
+ icon_state = "cutout_shadowling"
+ if("Xenomorph")
+ name = "alien hunter ([rand(1, 999)])"
+ desc = "A cardboard cutout of a xenomorph."
+ icon_state = "cutout_fukken_xeno"
+ if(prob(10))
+ alpha = 75 //Spooky sneaking!
+ if("Swarmer")
+ name = "Swarmer ([rand(1, 999)])"
+ desc = "A cardboard cutout of a swarmer."
+ icon_state = "cutout_swarmer"
+ //if("Ash Walker")
+ // name = random_name(pick(MALE,FEMALE),"Unathi")
+ // desc = "A cardboard cutout of an ash walker."
+ // icon_state = "cutout_free_antag"
+ if("Deathsquad Officer")
+ name = pick(commando_names)
+ desc = "A cardboard cutout of a death commando."
+ icon_state = "cutout_deathsquad"
+ if("Ian")
+ name = "Ian"
+ desc = "A cardboard cutout of the HoP's beloved corgi."
+ icon_state = "cutout_ian"
+ if("Slaughter Demon")
+ name = "slaughter demon"
+ desc = "A cardboard cutout of a slaughter demon."
+ icon = 'icons/mob/mob.dmi'
+ icon_state = "daemon"
+ dir = "SOUTH"
+ if("Laughter Demon")
+ name = "laughter demon"
+ desc = "A cardboard cutout of a laughter demon."
+ icon = 'icons/mob/mob.dmi'
+ icon_state = "bowmon"
+ dir = "SOUTH"
+ if("Xenomorph Maid")
+ name = "lusty xenomorph maid ([rand(1, 999)])"
+ desc = "A cardboard cutout of a xenomorph maid."
+ icon_state = "cutout_lusty"
+ if("Security Officer")
+ name = "Private Security Officer"
+ desc = "A cardboard cutout of a private security officer."
+ icon_state = "cutout_ntsec"
+ if("Terror Spider")
+ name = "Gray Terror Spider"
+ desc = "A cardboard cutout of a terror spider."
+ icon = 'icons/mob/terrorspider.dmi'
+ icon_state = "terror_gray"
+ dir = "SOUTH"
+
+ return 1
+
+/obj/item/cardboard_cutout/setDir()
+ dir = SOUTH
+
+/obj/item/cardboard_cutout/adaptive //Purchased by Syndicate agents, these cutouts are indistinguishable from normal cutouts but aren't discolored when their appearance is changed
+ deceptive = TRUE
\ No newline at end of file
diff --git a/code/game/objects/items/control_wand.dm b/code/game/objects/items/control_wand.dm
index 95cf94a3a1e..0fe6cf48631 100644
--- a/code/game/objects/items/control_wand.dm
+++ b/code/game/objects/items/control_wand.dm
@@ -8,7 +8,7 @@
icon = 'icons/obj/device.dmi'
name = "control wand"
desc = "Remotely controls airlocks."
- w_class = 1
+ w_class = WEIGHT_CLASS_TINY
var/mode = WAND_OPEN
var/region_access = 1 //See access.dm
var/obj/item/weapon/card/id/ID
diff --git a/code/game/objects/items/crayons.dm b/code/game/objects/items/crayons.dm
index 3852d67e6ff..a3d302f1326 100644
--- a/code/game/objects/items/crayons.dm
+++ b/code/game/objects/items/crayons.dm
@@ -7,7 +7,7 @@
desc = "A colourful crayon. Looks tasty. Mmmm..."
icon = 'icons/obj/crayons.dmi'
icon_state = "crayonred"
- w_class = 1
+ w_class = WEIGHT_CLASS_TINY
slot_flags = SLOT_BELT | SLOT_EARS
attack_verb = list("attacked", "coloured")
toolspeed = 1
diff --git a/code/game/objects/items/devices/aicard.dm b/code/game/objects/items/devices/aicard.dm
index 0d02add30a3..f74d80f845e 100644
--- a/code/game/objects/items/devices/aicard.dm
+++ b/code/game/objects/items/devices/aicard.dm
@@ -3,11 +3,11 @@
icon = 'icons/obj/aicards.dmi'
icon_state = "aicard" // aicard-full
item_state = "electronic"
- w_class = 2
+ w_class = WEIGHT_CLASS_SMALL
slot_flags = SLOT_BELT
flags = NOBLUDGEON
var/flush = null
- origin_tech = "programming=4;materials=4"
+ origin_tech = "programming=3;materials=3"
/obj/item/device/aicard/afterattack(atom/target, mob/user, proximity)
diff --git a/code/game/objects/items/devices/autopsy.dm b/code/game/objects/items/devices/autopsy.dm
index 2839715d7d7..3bad7c09cf6 100644
--- a/code/game/objects/items/devices/autopsy.dm
+++ b/code/game/objects/items/devices/autopsy.dm
@@ -5,7 +5,7 @@
icon_state = ""
flags = CONDUCT
w_class = WEIGHT_CLASS_TINY
- origin_tech = "materials=1;biotech=1"
+ origin_tech = "magnets=1;biotech=1"
var/list/datum/autopsy_data_scanner/wdata = list()
var/list/chemtraces = list()
var/target_name = null
diff --git a/code/game/objects/items/devices/camera_bug.dm b/code/game/objects/items/devices/camera_bug.dm
index af745b97f1f..17fddd581e4 100644
--- a/code/game/objects/items/devices/camera_bug.dm
+++ b/code/game/objects/items/devices/camera_bug.dm
@@ -9,11 +9,11 @@
desc = "For illicit snooping through the camera network."
icon = 'icons/obj/device.dmi'
icon_state = "camera_bug"
- w_class = 1.0
+ w_class = WEIGHT_CLASS_TINY
item_state = "camera_bug"
throw_speed = 4
throw_range = 20
- origin_tech = "syndicate=3;engineering=1"
+ origin_tech = "syndicate=1;engineering=3"
var/obj/machinery/camera/current = null
diff --git a/code/game/objects/items/devices/chameleonproj.dm b/code/game/objects/items/devices/chameleonproj.dm
index d3f13c284c1..ff7eb0ac2cc 100644
--- a/code/game/objects/items/devices/chameleonproj.dm
+++ b/code/game/objects/items/devices/chameleonproj.dm
@@ -7,7 +7,7 @@
throwforce = 5.0
throw_speed = 3
throw_range = 5
- w_class = 2
+ w_class = WEIGHT_CLASS_SMALL
origin_tech = "syndicate=4;magnets=4"
var/can_use = 1
var/obj/effect/dummy/chameleon/active_dummy = null
@@ -150,4 +150,4 @@
/obj/effect/dummy/chameleon/Destroy()
master.disrupt(0)
- return ..()
\ No newline at end of file
+ return ..()
diff --git a/code/game/objects/items/devices/flash.dm b/code/game/objects/items/devices/flash.dm
index fefb20e90e4..e309cae9bbe 100644
--- a/code/game/objects/items/devices/flash.dm
+++ b/code/game/objects/items/devices/flash.dm
@@ -4,7 +4,7 @@
icon_state = "flash"
item_state = "flashtool" //looks exactly like a flash (and nothing like a flashbang)
throwforce = 0
- w_class = 1
+ w_class = WEIGHT_CLASS_TINY
throw_speed = 3
throw_range = 7
flags = CONDUCT
diff --git a/code/game/objects/items/devices/flashlight.dm b/code/game/objects/items/devices/flashlight.dm
index 9ac4897c8f3..1bf736d7024 100644
--- a/code/game/objects/items/devices/flashlight.dm
+++ b/code/game/objects/items/devices/flashlight.dm
@@ -4,7 +4,7 @@
icon = 'icons/obj/lighting.dmi'
icon_state = "flashlight"
item_state = "flashlight"
- w_class = 2
+ w_class = WEIGHT_CLASS_SMALL
flags = CONDUCT
slot_flags = SLOT_BELT
materials = list(MAT_METAL=50, MAT_GLASS=20)
@@ -88,7 +88,7 @@
desc = "A pen-sized light, used by medical staff."
icon_state = "penlight"
item_state = ""
- w_class = 1
+ w_class = WEIGHT_CLASS_TINY
slot_flags = SLOT_BELT | SLOT_EARS
flags = CONDUCT
brightness_on = 2
@@ -109,7 +109,7 @@
item_state = ""
flags = CONDUCT
brightness_on = 2
- w_class = 1
+ w_class = WEIGHT_CLASS_TINY
// the desk lamps are a bit special
/obj/item/device/flashlight/lamp
@@ -118,7 +118,7 @@
icon_state = "lamp"
item_state = "lamp"
brightness_on = 5
- w_class = 4
+ w_class = WEIGHT_CLASS_BULKY
flags = CONDUCT
materials = list()
on = 1
@@ -153,7 +153,7 @@ obj/item/device/flashlight/lamp/bananalamp
/obj/item/device/flashlight/flare
name = "flare"
desc = "A red Nanotrasen issued flare. There are instructions on the side, it reads 'pull cord, make light'."
- w_class = 2
+ w_class = WEIGHT_CLASS_SMALL
brightness_on = 8 // Made it brighter (from 7 to 8).
light_color = "#ff0000" // changed colour to a more brighter red.
icon_state = "flare"
@@ -214,7 +214,7 @@ obj/item/device/flashlight/lamp/bananalamp
/obj/item/device/flashlight/flare/torch
name = "torch"
desc = "A torch fashioned from some leaves and a log."
- w_class = 4
+ w_class = WEIGHT_CLASS_BULKY
brightness_on = 7
icon_state = "torch"
item_state = "torch"
@@ -227,7 +227,7 @@ obj/item/device/flashlight/lamp/bananalamp
icon = 'icons/obj/lighting.dmi'
icon_state = "floor1" //not a slime extract sprite but... something close enough!
item_state = "slime"
- w_class = 1
+ w_class = WEIGHT_CLASS_TINY
brightness_on = 6
light_color = "#FFBF00"
materials = list()
@@ -243,7 +243,7 @@ obj/item/device/flashlight/lamp/bananalamp
return //Bio-luminescence does not toggle.
/obj/item/device/flashlight/emp
- origin_tech = "magnets=4;syndicate=5"
+ origin_tech = "magnets=3;syndicate=1"
var/emp_max_charges = 4
var/emp_cur_charges = 4
diff --git a/code/game/objects/items/devices/floor_painter.dm b/code/game/objects/items/devices/floor_painter.dm
index c278a1be72a..74b119c7b62 100644
--- a/code/game/objects/items/devices/floor_painter.dm
+++ b/code/game/objects/items/devices/floor_painter.dm
@@ -3,37 +3,37 @@
/obj/item/device/floor_painter
name = "floor painter"
icon_state = "floor_painter"
-
+
var/floor_icon
var/floor_state = "floor"
var/floor_dir = SOUTH
-
- w_class = 1
+
+ w_class = WEIGHT_CLASS_TINY
item_state = "electronic"
flags = CONDUCT
slot_flags = SLOT_BELT
-
- var/static/list/allowed_states = list("arrival", "arrivalcorner", "bar", "barber", "blackcorner", "blue", "bluecorner",
+
+ var/static/list/allowed_states = list("arrival", "arrivalcorner", "bar", "barber", "blackcorner", "blue", "bluecorner",
"bluefull", "bluered", "blueyellow", "blueyellowfull", "bot", "brown", "browncorner", "browncornerold", "brownold",
"cafeteria", "caution", "cautioncorner", "chapel", "cmo", "dark", "delivery", "escape", "escapecorner", "floor",
"freezerfloor", "green", "greenblue", "greenbluefull", "greencorner", "greenfull", "greenyellow",
"greenyellowfull", "grimy", "loadingarea", "neutral", "neutralcorner", "neutralfull", "orange", "orangecorner",
"orangefull", "purple", "purplecorner", "purplefull", "rampbottom", "ramptop", "red", "redblue", "redbluefull",
- "redcorner", "redfull", "redgreen", "redgreenfull", "redyellow", "redyellowfull", "warning", "warningcorner", "warnwhite",
- "warnwhitecorner", "white", "whiteblue", "whitebluecorner", "whitebluefull", "whitebot", "whitecorner", "whitedelivery",
- "whitegreen", "whitegreencorner", "whitegreenfull", "whitehall", "whitepurple", "whitepurplecorner", "whitepurplefull",
- "whitered", "whiteredcorner", "whiteredfull", "whiteyellow", "whiteyellowcorner", "whiteyellowfull", "yellow",
+ "redcorner", "redfull", "redgreen", "redgreenfull", "redyellow", "redyellowfull", "warning", "warningcorner", "warnwhite",
+ "warnwhitecorner", "white", "whiteblue", "whitebluecorner", "whitebluefull", "whitebot", "whitecorner", "whitedelivery",
+ "whitegreen", "whitegreencorner", "whitegreenfull", "whitehall", "whitepurple", "whitepurplecorner", "whitepurplefull",
+ "whitered", "whiteredcorner", "whiteredfull", "whiteyellow", "whiteyellowcorner", "whiteyellowfull", "yellow",
"yellowcorner", "yellowcornersiding", "yellowsiding")
/obj/item/device/floor_painter/afterattack(var/atom/A, var/mob/user, proximity, params)
if(!proximity)
return
-
+
var/turf/simulated/floor/plasteel/F = A
if(!istype(F))
to_chat(user, "\The [src] can only be used on station flooring.")
return
-
+
F.icon_state = floor_state
F.icon_regular_floor = floor_state
F.dir = floor_dir
@@ -60,7 +60,7 @@
Choose Direction