diff --git a/_maps/map_files/MetaStation/MetaStation.v41A.II.dmm b/_maps/map_files/MetaStation/MetaStation.v41A.II.dmm
index 9e826de1379..d6bc561771b 100644
--- a/_maps/map_files/MetaStation/MetaStation.v41A.II.dmm
+++ b/_maps/map_files/MetaStation/MetaStation.v41A.II.dmm
@@ -71,13 +71,13 @@
"abs" = (/obj/machinery/door/window/westright{name = "Tool Storage"; req_access_txt = "150"},/obj/machinery/light/spot{tag = "icon-tube1 (NORTH)"; icon_state = "tube1"; dir = 1},/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/shuttle/syndicate)
"abt" = (/obj/structure/table,/obj/item/weapon/storage/toolbox/syndicate,/obj/item/weapon/crowbar/red,/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/shuttle/syndicate)
"abu" = (/obj/structure/cable{icon_state = "0-2"; d2 = 2},/obj/machinery/power/tracker,/turf/simulated/floor/plating/airless,/area/solar/auxport)
-"abv" = (/obj/machinery/sleeper/upgraded,/obj/machinery/light/spot{tag = "icon-tube1 (WEST)"; icon_state = "tube1"; dir = 8},/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/shuttle/syndicate)
-"abw" = (/obj/machinery/sleep_console{dir = 8},/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/shuttle/syndicate)
+"abv" = (/obj/machinery/light/spot{tag = "icon-tube1 (WEST)"; icon_state = "tube1"; dir = 8},/obj/machinery/sleeper/syndie{dir = 4},/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/shuttle/syndicate)
+"abw" = (/obj/machinery/sleeper/syndie{dir = 4},/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/shuttle/syndicate)
"abx" = (/obj/machinery/door/window{base_state = "right"; dir = 4; icon_state = "right"; name = "Infirmary"; req_access_txt = "150"},/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/shuttle/syndicate)
"aby" = (/obj/machinery/door/window{dir = 8; name = "Tool Storage"; req_access_txt = "150"},/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/shuttle/syndicate)
"abz" = (/obj/structure/closet/crate/internals,/obj/item/weapon/tank/oxygen/red,/obj/item/clothing/mask/gas,/obj/item/weapon/tank/oxygen/red,/obj/item/clothing/mask/gas,/obj/item/weapon/tank/oxygen/red,/obj/item/clothing/mask/gas,/obj/item/weapon/tank/oxygen/red,/obj/item/clothing/mask/gas,/obj/item/weapon/tank/oxygen/red,/obj/item/clothing/mask/gas,/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/shuttle/syndicate)
"abA" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0; tag = ""},/turf/simulated/floor/plating/airless/catwalk,/area/solar/auxport)
-"abB" = (/obj/machinery/sleeper/upgraded,/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/shuttle/syndicate)
+"abB" = (/obj/machinery/sleeper{dir = 4; name = "Prisoner Sleeper"},/turf/simulated/floor/plasteel{dir = 9; icon_state = "whitered"},/area/security/brig)
"abC" = (/obj/structure/table,/obj/item/weapon/gun/syringe,/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/shuttle/syndicate)
"abD" = (/obj/structure/table,/obj/item/weapon/reagent_containers/syringe/charcoal,/obj/item/weapon/reagent_containers/syringe/charcoal{pixel_y = 2},/obj/item/weapon/reagent_containers/syringe/charcoal{pixel_y = 4},/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/shuttle/syndicate)
"abE" = (/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 1},/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/shuttle/syndicate)
@@ -490,7 +490,7 @@
"ajv" = (/obj/structure/rack,/obj/item/clothing/accessory/storage/black_vest,/obj/item/clothing/suit/space/vox/carapace,/obj/item/clothing/head/helmet/space/vox/carapace,/obj/item/clothing/mask/breath,/turf/simulated/shuttle/floor4/vox,/area/shuttle/vox)
"ajw" = (/obj/structure/rack,/obj/item/weapon/gun/dartgun/vox/raider,/obj/item/weapon/gun/dartgun/vox/medical,/obj/item/weapon/dart_cartridge,/obj/item/weapon/dart_cartridge,/obj/item/weapon/dart_cartridge,/obj/item/weapon/dart_cartridge,/turf/simulated/shuttle/floor4/vox,/area/shuttle/vox)
"ajx" = (/obj/machinery/sleeper/upgraded,/turf/simulated/shuttle/floor4/vox,/area/shuttle/vox)
-"ajy" = (/obj/machinery/sleep_console,/turf/simulated/shuttle/floor4/vox,/area/shuttle/vox)
+"ajy" = (/turf/simulated/floor/plasteel{dir = 1; icon_state = "whitered"},/area/security/brig)
"ajz" = (/obj/machinery/bodyscanner,/obj/machinery/light/spot,/turf/simulated/shuttle/floor4/vox,/area/shuttle/vox)
"ajA" = (/obj/machinery/body_scanconsole,/turf/simulated/shuttle/floor4/vox,/area/shuttle/vox)
"ajB" = (/turf/simulated/wall/r_wall,/area/maintenance/auxsolarport)
@@ -745,9 +745,9 @@
"aoq" = (/obj/structure/closet/firecloset,/turf/simulated/floor/plating,/area/maintenance/fore)
"aor" = (/turf/simulated/floor/plating{tag = "icon-panelscorched"; icon_state = "panelscorched"},/area/maintenance/fore)
"aos" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 4; on = 1},/obj/effect/landmark{name = "xeno_spawn"; pixel_x = -1},/turf/simulated/floor/plating,/area/maintenance/fore)
-"aot" = (/obj/machinery/sleeper{dir = 8; name = "Prisoner Sleeper"},/turf/simulated/floor/plasteel{dir = 9; icon_state = "whitered"},/area/security/brig)
+"aot" = (/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 8; initialize_directions = 11},/turf/simulated/floor/plasteel{dir = 10; icon_state = "whiteblue"},/area/medical/sleeper{name = "Sleepers"})
"aou" = (/obj/structure/table,/obj/item/clothing/gloves/color/latex,/obj/item/clothing/mask/surgical,/obj/item/weapon/reagent_containers/spray/cleaner,/turf/simulated/floor/plasteel{dir = 1; icon_state = "whitered"},/area/security/brig)
-"aov" = (/obj/machinery/sleep_console,/turf/simulated/floor/plasteel{dir = 1; icon_state = "whitered"},/area/security/brig)
+"aov" = (/obj/machinery/sleeper{icon_state = "sleeper-open"; dir = 4},/turf/simulated/floor/plasteel{icon_state = "whitebluefull"},/area/medical/sleeper{name = "Sleepers"})
"aow" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor/plasteel{dir = 8; icon_state = "neutralcorner"},/area/crew_quarters/fitness{name = "\improper Recreation Area"})
"aox" = (/obj/structure/table,/obj/item/weapon/paper_bin{pixel_x = -3; pixel_y = 7},/obj/item/weapon/pen,/turf/simulated/floor/plasteel{dir = 4; icon_state = "neutralcorner"},/area/crew_quarters/fitness{name = "\improper Recreation Area"})
"aoy" = (/obj/machinery/atmospherics/unary/vent_scrubber{dir = 2; on = 1; scrub_N2O = 0; scrub_Toxins = 0},/turf/simulated/floor/plasteel{icon_state = "vault"; dir = 5},/area/crew_quarters/fitness{name = "\improper Recreation Area"})
@@ -6303,11 +6303,9 @@
"crk" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/unary/vent_scrubber{dir = 1; on = 1; scrub_N2O = 0; scrub_Toxins = 0},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/medical/surgery)
"crl" = (/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 1},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/medical/surgery)
"crm" = (/obj/item/weapon/cigbutt,/obj/machinery/atmospherics/unary/vent_pump{dir = 8; on = 1},/obj/structure/sign/nosmoking_2{pixel_x = 28},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/medical/surgery)
-"crn" = (/obj/machinery/sleep_console{tag = "icon-console (EAST)"; icon_state = "console"; dir = 4},/turf/simulated/floor/plasteel{icon_state = "whitebluefull"},/area/medical/sleeper{name = "Sleepers"})
-"cro" = (/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 8; initialize_directions = 11},/obj/machinery/sleeper{icon_state = "sleeper-open"; dir = 4},/turf/simulated/floor/plasteel{dir = 10; icon_state = "whiteblue"},/area/medical/sleeper{name = "Sleepers"})
+"crn" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor/plasteel{dir = 6; icon_state = "whiteblue"},/area/medical/sleeper{name = "Sleepers"})
+"cro" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/sleeper,/turf/simulated/floor/plasteel{icon_state = "whitebluefull"},/area/medical/sleeper{name = "Sleepers"})
"crp" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{req_access_txt = 1},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor/plasteel{dir = 2; icon_state = "whiteblue"},/area/medical/sleeper{name = "Sleepers"})
-"crq" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/sleeper,/turf/simulated/floor/plasteel{dir = 6; icon_state = "whiteblue"},/area/medical/sleeper{name = "Sleepers"})
-"crr" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/sleep_console,/turf/simulated/floor/plasteel{icon_state = "whitebluefull"},/area/medical/sleeper{name = "Sleepers"})
"crs" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 9},/obj/effect/spawner/window{useFull = 1; tag = "fullWin"},/turf/simulated/floor/plating,/area/medical/sleeper{name = "Sleepers"})
"crt" = (/obj/structure/sink{dir = 8; icon_state = "sink"; pixel_x = -12; pixel_y = 2},/turf/simulated/floor/plasteel{dir = 1; icon_state = "whitebluecorner"},/area/medical/medbay{name = "Medbay Central"})
"cru" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{req_access_txt = 1},/obj/machinery/atmospherics/unary/vent_scrubber{dir = 4; on = 1; scrub_N2O = 0; scrub_Toxins = 0},/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/medbay{name = "Medbay Central"})
@@ -8171,7 +8169,6 @@
"dbg" = (/obj/effect/landmark{name = "xeno_spawn"; pixel_x = -1},/turf/simulated/floor/plating/airless/catwalk,/area/solar/starboard)
"dbh" = (/obj/machinery/status_display,/turf/simulated/shuttle/wall{tag = "icon-swall3"; icon_state = "swall3"; dir = 2},/area/shuttle/escape)
"dbi" = (/obj/machinery/sleeper,/turf/simulated/shuttle/floor,/area/shuttle/escape)
-"dbj" = (/obj/machinery/sleep_console,/turf/simulated/shuttle/floor,/area/shuttle/escape)
"dbk" = (/obj/machinery/optable,/turf/simulated/shuttle/floor,/area/shuttle/escape)
"dbl" = (/obj/effect/spawner/window/reinforced{useFull = 1; tag = "fullReinWin"},/obj/structure/cable/yellow,/obj/structure/cable/yellow{d2 = 4; icon_state = "0-4"},/obj/machinery/door/poddoor/preopen{id_tag = "xenobio2"; name = "containment blast door"},/turf/simulated/floor/plating,/area/toxins/xenobiology{name = "\improper Secure Lab"})
"dbm" = (/obj/structure/table/reinforced,/obj/machinery/door_control{id = "xenobio2"; name = "Containment Blast Doors"; pixel_x = 0; pixel_y = 4; req_access_txt = "55"},/obj/structure/window/reinforced{dir = 1},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plasteel{dir = 5; icon_state = "warning"},/area/toxins/xenobiology{name = "\improper Secure Lab"})
@@ -8522,8 +8519,8 @@ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaEaadaadaadaadaadaadabcaakaakaadaadaadaadaadaadaaMaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabdabeabfabdabdaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaiabgabgabhabiabjaaiabkaakaakaaiablabmabnaboabpaaiaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabdaaaabqaaaabeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaDaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaiaakaakaakaaIaakabraakaakaakabsaakaaIaakaaIabtaaiaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabqaaaabfabqabuabqabfaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaiabvabwaakaakaakabxaakaakaakabyaakaakaakaakabzaaiaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabqabeabdabfabfaaaaaaaaaabAaaaaaaaaaabfabeabdabdaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaiabBabwaakabCabDaaiabEabFabEaaiabGabHaakaakaakaaiaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabdaaaaaaabqabqaaaaaaaaaabAabqabqaaaabqabqaaaabqabqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaDaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaiabvaakaakaakaakabxaakaakaakabyaakaakaakaakabzaaiaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabqabeabdabfabfaaaaaaaaaabAaaaaaaaaaabfabeabdabdaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaiabwaakaakabCabDaaiabEabFabEaaiabGabHaakaakaakaaiaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabdaaaaaaabqabqaaaaaaaaaabAabqabqaaaabqabqaaaabqabqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaDaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaiaakaakabIaaiaadaaiaakabJabKaaiaadaaiaakaakaakaaiaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabfabqabLabLabLabLabLabqabMabqabLabLabLabLabLaaaabeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaiabNabOabPaaiaaaaaiabQabQabQaaiaaaaaiabRabSabTaaiaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabfabqabUabVabVabVabVabWabXabYabZabZabZabZacaabqabfaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaDaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaiabQabQabQaaiaaaaawacbaccacdaayaaaaaiabQabQabQaaiaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabqabfabqaceaceaceaceaceabqabXabqaceaceaceaceaceabqabeabqabqabqabqabeabdabeabqabqabqaaaabqabqabqaaaabqabqabqabqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
@@ -8543,12 +8540,12 @@ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabqabqaaaaaaaaaaaaabqaaaabqabqabAabqabqabqabqacAagmagnagoagpagqafTagradsagsagtaguagvagwacQagxadsagwacQaeaacQagyagzagAacgaaaabqabqagBagBagBagBagBaaaabqaaaaaaagCagCagDagEagFagCagCavObHcaDgbPLbPLbTgbTfaidabqaaaaaaaaaabqaaaaaaaaaaaaabqaaaaaaaaaaaaafbagGagHafHafHagIaaaabqaaaaaaaaaabqaaaaaaaaaaaaaaaaaaaaaaaaabeaaaaaaaaaabqaaaaaaaaaadFaaaaaaaaaabqaaaaaaaaaabdaaaaaaafhafJagJagJagJagJagJagJaehagKaehagJagJagJagJagJagJafJafkaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaDaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabqaaaabqabqaaaabqaaaabqagLagMagLabqaaaaaaacAagNagOagPacAagQafTagRagSacQafyacQagTafyacQagRagUafyacQaeBacQafyagVagRacgabqabqagBagBagWagXagYagBagBabqabqagCagCagZahaahbahcahdagCagCbTjaytbTlbTkdeGdeCaidabqabqabqafbafcafbafcafcafcafbafcafcafcafbafbahgafbahhahiahiahjahiahiahkaaaabqaaaaaaaaaaaaaaaaaaaaaaaaabfaaaadjadjadjadjadjabqahlabqadjadjadjadjadjabqabfaaaaaaahmahnahoahpahqahraehaglaeFaglaeFaglaehahsahtahuahvahnahwaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabqaaaabqaaaaaaabqabqabqagLahxagLabqabqaaaacAacAacAacAacAahyahzahAahBahCahDahEahFahGahHahIahJahKahLahMahNahOahPahQahRabqagBagBahSahTahUahUahVagBagBabqagCahWahXahYahZaiaaibaicagCdeIdePalSalSalSalSaidaaaaaaabqafbaigafbaihaiiaijafbaikailaimafbainaioajbaiqairairairairairaiqabqabqabqabqabqaaaaaaaaaaaaaaaabfabqadCadDadDadDadDadEadFadGadHadHadHadHadIabqabfaaaaaaafKahnaeGaeGaeGaisaehaeGaeGaeGaeGaeGaehaeGaeGaitaeGahnafNaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabqabqabqabqabqabqabqabqabqagLagLaiuagLagLabqabqabqabqabqabqacnaivaiwaixaiyaizaiAaiBaiwaiCaiDaiEaiFaiGaiHaiwaiIaiJaiKaiLaiMabqagBaiNaiOaiPaiQaiRaiSaiTagBabqaiUaiVaiWaiXaiYaiZajaakcajcdeLdeKajdajeajfahfdeMajgajgajgafbajhajiajjajkajkajlajkajmajnajoajpajpajpaiqairairairairairaiqaaaaaaaaaaaaabqaaaaaaaaaaaaaaaabfabqaegaegaegaegaegabqadFabqaegaegaegaegaegabqabeabqaaaaehajqajrajsajtajuaehajvaeGaeGaeGajwaehajxajyajzajAajqaehaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabqabqabqabqabqabqabqabqabqagLagLaiuagLagLabqabqabqabqabqabqacnaivaiwaixaiyaizaiAaiBaiwaiCaiDaiEaiFaiGaiHaiwaiIaiJaiKaiLaiMabqagBaiNaiOaiPaiQaiRaiSaiTagBabqaiUaiVaiWaiXaiYaiZajaakcajcdeLdeKajdajeajfahfdeMajgajgajgafbajhajiajjajkajkajlajkajmajnajoajpajpajpaiqairairairairairaiqaaaaaaaaaaaaabqaaaaaaaaaaaaaaaabfabqaegaegaegaegaegabqadFabqaegaegaegaegaegabqabeabqaaaaehajqajrajsajtajuaehajvaeGaeGaeGajwaehajxaeGajzajAajqaehaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabqaaaabqaaaaaaaaaaaaaaaabqajBajCajDajEajBaaaabqaaaaaaaaaabqacgacgajFajGajHacgajIajJajIacQacQacQacQajKajLajMajNajOajPajQacgabqagBajRaiOajSajTajUaiSajVagBabqajWajXajYajZakaakbajYanJajWdeLdeNajdakdajfaheajgajgakeakfafbafbafbakgakhakiakiakjakkaklakmakmaknakoaiqairairairairairakpafbafbafbaaaabqaaaaaaaaaaaaaaaabeaaaaaaaaaabqaaaaaaaaaadFaaaabqaaaaaaaaaaaaaaaaaaaaaaaaaehakqakqaeFaeFaeFaehakraeGaeGaeGaksaehaeFaeFaeFakqakqaehaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabqabqabqaktaktakuakuakuakuakuajBakvakwakxajBakyakzakyakyaaaabqaaaacgacgaiMacgacgacgaiMacgacgakAakBakCakDakEakFakGakHakHakHagBagBagBakIakJakKakLakMakNakOagBabqagCakPakQakRakSakTakUakVagCdeOdeNajdakdajfaheakWajgakXakYakZalaafbalbakhakialcaldaldaldaleakmalfalgalhairairairairairalialjalkafcaaaabqabqabqabqabqabqabfabqabqabqabqabqaaaaaaadFaaaabqaaaaaaaaaaaaaaaaaaaaaaaaaflallallafgaaaaaaaehalmaeGaeGaeGalnaehaaaaaaaflallallafgaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaloalpakualqalralsaltajBalualvalwajBalxalyalzakyakyabqaaaaaaaaaabqaaaaaaaaaabqabqalAalBalCalBalDalEalFalGakHalHalIalJagBagBagBalKalLagBagBagBagBagBalMagCagCalNalOalPalQalRagCagCdeQdePalTalUalVaheajgajgalWalWalXalYafbalZakhamaambamcamcamdameamfamgamhafcairairairairairafcamiamjafcaaaabqaaaabqaaaamkamkamkamkamkamkamkabqabqabqadFabqabqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaehamlaeGaeGaeGalnaehaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabqabqaktammaktamnamoampamqajBajBamramsajBamtamuamvamwakyabqabqabqabqabqabqabqabqamxamxamxakDakDakDakDamyamzamAakHamBamCamDagBamEamFamGamHamIamJamKamLagBamMamNamOamPamQamRamSamTamOamUdeRdePamWamXamYaheamZalWalWanaanLajgafbanbancandaneanfanfangameamjanhamhafcairairairairairafcanianjafcabqabqabqabqabqamkankanlanmannankamkabqaaaanoanpanoasTaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaehantanuaglantanuaehaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaDaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabqaaaakuanvanwanxanyanzanAanBanCanDanEakyanFanGanHanIakzabqaaaaaaabqaaaajgajgajgamxaotaovaouanKaphanManNanOanPakHanQamCanRagBanSanTanUanVanWanXanYanZaoaaobaocaodaoeaofaogaohaoiaojaokdeUdeTaonaooaopaheaoqaoraosapiapQajgapRaowakhaoxambaoyamcaozameaoAamgaoBaoCairairairairairaoDaoEaoFaoGaoHaoGaaaabqaaaamkaoIaoJankaoJaoKamkabqaaaaoLaoMaoLansaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaehaoOaoPaeGaoQaoRaehaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaDaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabqaaaakuanvanwanxanyanzanAanBanCanDanEakyanFanGanHanIakzabqaaaaaaabqaaaajgajgajgamxabBajyaouanKaphanManNanOanPakHanQamCanRagBanSanTanUanVanWanXanYanZaoaaobaocaodaoeaofaogaohaoiaojaokdeUdeTaonaooaopaheaoqaoraosapiapQajgapRaowakhaoxambaoyamcaozameaoAamgaoBaoCairairairairairaoDaoEaoFaoGaoHaoGaaaabqaaaamkaoIaoJankaoJaoKamkabqaaaaoLaoMaoLansaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaehaoOaoPaeGaoQaoRaehaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabqaaaaktaoSaktaoTaoUaoVaoWaktaoXaoYaoZapaapbapcapdapeakyabqapfapfakzapfapfapgapgamxapSaqGaqFaqHapjapkaplapmapnapoappapqappaprapsapsaptapuapvapwapxapxapyapzapAapBapCapDapEapFapGapHapIdeYdeXapLapMapNaheapOapPalWarMarOajgaipaowakhajpapTapUapVapWapXapYamgapZaqaairairairairairaqbafbaqcaoGaqdaqeaefaefabqamkaqfaqgaqhaqiaqjamkabqanoaoLaqkaoLasTaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaehaqmaqnaeGaqoaqpaehaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabqabqaktaqqaqraqraqraqsaqtaktaquaqvaqwakyaqxaqyaqzaqAakyapfapfaqBaqCanEapfaqDaqEamxamxamxarParSarQaqIaqJaqKaqLakHaqMaqNaqOagBaqPaqQaqRaqSaqTaqUaqVaqWakHaqXaqYaqZapCaraarbarcardarearfargalSalSarhaheaheajgariajgarjajgajgafbarkarlajpajparmarnaroarparparqapZaqaairairairairairaqbarrarsaoGaqeaoGaoGaoHaoGamkartaruankarvarwamkabqaoLaoLaoMaoLasTaoGaoGaoGafdacJaaaaaaaaaaaaaaaaaaaaaaaaaaaaflaeFarxaryarzaeFafgaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaarAarBaaaaaaarAaaaarAaaaaaaabqabqabqaaaaaaaaaaaaaaaabqaaaabqaaaabqaaaaktarCarDarEarFarGarHaktanHaqvapdapfarIapdapdapdarJapfarKarUarTarNapfatAarWauHarRaumazcaCTarVaCVarXarYarZagBamIasaamIagBagBasbascasbagBasdaseasfasgashaqYasiasjapCaslasmasnasoarfaspasqasrassastasuastasvaswasxasyaszaszasAasBasCasCasDasEasFasGasGasGasHaqaairairairairairaqbasIasJaoGarsasKasLasMasNamkasOasPasQasRasSamkabqasTasUasVasWaxhauodgCblyavNavNblzaaaaaaaaaaaaaaaaaaaaaaaaaaaaflaeFaeFaeFafgaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
@@ -8620,7 +8617,7 @@ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabqaaaarBaaacmRaaaabqaaaaaaabqaaabZUcmSbZUchnchocjecmTcjecjecmUcmVcmVcmVcmWcmVcmVcmVcmXcmYcmZcnacnbcnccndcnecnfckEcdTcngcnhcnicdTcjxcnjcnkcjxcnlcnmcmgcnncnocnpcnqcnrcmgcnscntcnucmocnvcnwcnxcnycnxcnzcmocnAcnBcnCcnDcnCcfxcfxcnEbZUcmzcnFcnGcnHcnIcnJcmBcnKcnKcnKcnLcnMcnNcnKcmBcmCbZUcnOasIcnPcnQaoGcnRcnScfKcnTcnUcnVclAclBcnWcnXclAabqbGLcnYbETcnYbGLcnYbETcnYbGLcnZbETcoabGLabqaaaabqabqabqcobcjacocabqabqabeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabqabqarBaaacjcaaaabqaaaaaaabqaaabZUbZUbZUbZUbZUbZUbZUbZUbZUcodcoecoecofcogcogcogcogcohcogcogcogcoicojcokcolcomconcoocopcoqcorcoscotcoucovcowcoxcoycozcoAcoBcoCcoDcoEcmgcoFckVcmmcmpcoGcoHcoIcoJcoKcoLcmocoMcoNcoOcoPcmzcdNcjncrFcrvcmzcoRcoScoTcoUcoVcmBcnKcoWcoXcoYcnKcoZcpacmBcpbbZUbZUbZUbZUbZUaoGaoGaoGcfKcfKcfKcpcclAcpdcpecpfcpgabqbGLcphcpicpjbGLcpkcplcpmbGLcpncpocppbGLabqaaaabqaaabCMcpqcprcpscptaaabFcaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabqaaaabeaaackrabqabqabqabqabqaaabZUcpucpvcpwcpxcpycpzcpAbZUcodcoecpBcpCcpDcpEcpFcoecpGcpHcpIcoecpJcpKcpLcpMcpNcpOcpPcpQcpRcpScpTcpUcpTcpScpTcpVcpWcpXcpYcpZcqacqbcrVcmicnsckVcrWcmocqdcqecqfcqgcqhcqicqjcqkcqlcqmcqncmzcqocqpcqqcsncmzcqscqtcqucqvcqwcmBcnKcnKcqxcnKcnKcqycqzcmBcmCbZUcqAcqBbZUcqCcqDcqEcqFcqGcqHaoGcsoclAclAcsRclAclAabqbGLcqKcqLcqMbGLcqNcqOcqPbGLcqQcqRcqSbGLabqabqabqabqcptcqTcqUcqVcqWabqabeabqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabqaaaarBaaackrabqaaaaaaaaaabqaaacqXcqYcqZcracrbcpycrccrdbZUcodcoecrecrfcrgcrhcricrjcrkcrlcrmcoecrncrocrpcrqcrrcrscrtcructAcrwcrxcrycrycrycrzcrAcrBcrCcrDcpZcrEctBcrGcmgcrHckVcrIcmocrJcrKcrLcrMcrNcrOcmocrPcrQcrRcrScmzcrTcrUctSctEcmzcrXcrYcrZcsacsbcmBcmBcsccsdcsecsecmBcsfcmBcsgcshcsicsjbZUcskasJasJasJcdKcslbZUcsmcynclAcyqclAcspabqbGLcqKcsqcqKbGLcqNcsrcqNbGLcsscstcssbGLabqaaaabqaaacqWcqUcsucqUcjaaaabFcaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabqaaaarBaaackrabqaaaaaaaaaabqaaacqXcqYcqZcracrbcpycrccrdbZUcodcoecrecrfcrgcrhcricrjcrkcrlcrmcoeaovaotcrpcrncrocrscrtcructAcrwcrxcrycrycrycrzcrAcrBcrCcrDcpZcrEctBcrGcmgcrHckVcrIcmocrJcrKcrLcrMcrNcrOcmocrPcrQcrRcrScmzcrTcrUctSctEcmzcrXcrYcrZcsacsbcmBcmBcsccsdcsecsecmBcsfcmBcsgcshcsicsjbZUcskasJasJasJcdKcslbZUcsmcynclAcyqclAcspabqbGLcqKcsqcqKbGLcqNcsrcqNbGLcsscstcssbGLabqaaaabqaaacqWcqUcsucqUcjaaaabFcaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabqabqabqabqabqabqabeabqckrabqaaaaaaaaaabqaaacqXcsvcrccqZcswcpycsxbZUbZUcsycoecszcsAcszcsBcszcoecszcsCcszcoeckEcsDcsEcsFckEckEcsGcsHcsIcsJcsJcsKcsLcsMcsJcsJcsNcmgcsOcsPcsQcyCcmgcmgcsSckVcsTcmocmocsUcsVcsWcsXcsYcmocsZcnBcfwcfwcmzctacmzctbcmzcmzcfwctcctdcfwcfwctectfctgcthctictjctkctlcmBctmbZUctnctobZUctpcdKchschyctqctrbZUctscttctuctvctuarAabqbGLbGLbGLbGLbGLbGLbGLbGLbGLbGLbGLbGLbGLabqabqabqabqcjacqUcqUcqUcqWabqbFcaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabqaaaaaaabqaaaaaaarBaaaclIaaaaaaaaaaaaabqaaacqXctwcqZcswctxcpyctyctzcdOcodcoeczqczpctCctDczJcoectFctGctHcoectIctJctKctLctMctNctOcgrctPcsJctQctRcABctTctUcsJccvcmgctVctWctXctYcmictZcuacubcuccudcuecufcugcuhcuicujcukculcumcuncuocupciccuqcurcusciccutcuucuvciccuwctecuxcuycuzcuAcuBcuCcuDcmBcmCbZUbZUcuEbZUcuFcuGchychycuHcuIcqXabqabqabqabqabqabqabqabqabqabqabqabqabqabqabqabqabqabqabqabqabqaaaabqaaacjacqWcptbCMcptaaaabqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabqabqabqaaaaaaabqaaaaaaabeaaacmRabqaaaaaaaaaabqaaacqXcqXcqZcpycpycqZcqZcuJcdOcodcoecuKcuLcuMcuNcuOcoecuPcuQcuRcuScuTcuUcuVcuWcuXcuYcuZcgrcgscsKcvacvbcvccvdcvecsJchscmgcvfcvgcvhcvicvjcvkcvlckVcvmcvncvocvpcvqcvrcvscvtcvucvvcvwcvxcvycvzcvAcvBcvCcvDcvEcvDcvFcvGcvHcvIcvJcvKcvLcvMcvNcvOcvPcvQcvRcvSbZUcvTcvUcvVcbvctqchychycvWcvXbZUcvYabqaaaaaaaaaabqaaaaaaaaaaaaaaaabqaaaaaaaaaabqaaaaaaaaaaaaabqaaaabqaaaaaaabqaaaabqaaaaaaabqabqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
@@ -8667,7 +8664,7 @@ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadazcZBcZBdaAdaBdaCcZBcZTcYFdaDcZVcZEdaEcZeaaaaaaabqaaacVGcZrcZrcZrcZrdaFdaGdaHdaIdaFcZrcZrcZrcZrcVGaaacmzcicdaJcmzcTZcmzcmzcTZcmzaaaaaaabqabqcZAcZAcZAcZAcZAaaacYBabqcZAcZAcZAcZAcZAaaaarBaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacZedaKcZBcZTcYFcZUcZBdaLcZedaMdaNdaOdaPcZeaaaaaaabqaaacVGcZGcZHcZHdaQcZJdaRdaHdaSdaTdaUcZPcZPdancVGaaacmzcmzcmzcmzaaaaaaabqaaaaaaaaaaaaabqaaaabqaaaabqaaaabqaaacYBaaaabqaaaabqabqabqabqaupaaaaaDaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacYFcZUcZBcZTcYFcZUcZBdaVdaWdaXcYFdaYdaZdbaaaaaaaabqaaacVGcZPcZPcZPdbbdbccZZdbddabdbedbfcZPcZPcZPcVGaaaaaaaaaaaaaaaaaaaaaabqaaaaaaaaaaaaabqaaacYAcYAcYAcYAcYAabqdbgabqcYAcYAcYAcYAcYAabqarBaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadbhcZUcZBcZBcZBcZBcZBcZTcYFdbidbjcZBdbkcZeaaaabqabqabqcVGdancZPcZPdbldbmdaqdbndbodatdbpcZHcZHdavcVGaaaaaaabqaaaaaaabqaaaaaaaaaaaaaaaaaaarBabqcYXcYYcYYcYYcYYcYZcYBcZbcZccZccZccZccZdabqarBaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadbhcZUcZBcZBcZBcZBcZBcZTcYFdbidbicZBdbkcZeaaaabqabqabqcVGdancZPcZPdbldbmdaqdbndbodatdbpcZHcZHdavcVGaaaaaaabqaaaaaaabqaaaaaaaaaaaaaaaaaaarBabqcYXcYYcYYcYYcYYcYZcYBcZbcZccZccZccZccZdabqarBaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacYFcZUcZBcZTcYFcZUcZBcZBdaYcZBcZBcZBdbqcYFaaaabqaaacVGcVGcZrcZrcZrcZrdaFdbrdaHdbsdaFcZrcZrcZrcZrcVGcVGaaaabqabqabqabqaaaaaaaaaaaaaaaaaaabqabqcZAcZAcZAcZAcZAaaadbtaaacZAcZAcZAcZAcZAaaaarBabqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacZmdaCcZBcZTcYFcZUcZBcZTcYFdbudbvdbwdbxcZeaaaabqaaacVGcZGcZHcZHdbycZJdbzdbAdaHdaScZMdbBdbCdbDcZPcZPcVGabqabqaaaaaaaaaaaaaaaaaaaaaaaaaaaabeaaaaaaabqabqabqaaaaaacVJabqaaaaaaabqabqaaaaaaarBaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadbEaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacYGcZBcZBdaAdaBdaCcZBdbFdaWcYEcYEdbGcYEdbaaaaabqaaacVGcZPcZPcZPdbHdbIdabdabdbJdabdabdbKdbLdbMcZPcZPcVGaaaabqaaaaaaaaaaaaaaaaaaaaaaaaaaaarBabearBarBarBaaaaaaaaacVJaaaaaaaaaarBarBarBauparBaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
diff --git a/_maps/map_files/MetaStation/z5.dmm b/_maps/map_files/MetaStation/z5.dmm
index aaf53a80095..5b8760128df 100644
--- a/_maps/map_files/MetaStation/z5.dmm
+++ b/_maps/map_files/MetaStation/z5.dmm
@@ -478,8 +478,8 @@
"jj" = (/obj/machinery/atmospherics/pipe/manifold/hidden/supply{level = 1},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plasteel,/area/research_outpost/entry)
"jk" = (/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 4; initialize_directions = 11; level = 1},/obj/machinery/light_switch{pixel_y = -23},/turf/simulated/floor/plasteel,/area/research_outpost/entry)
"jl" = (/obj/effect/spawner/window/reinforced{useFull = 1; tag = "fullReinWin"},/turf/simulated/floor/plasteel,/area/research_outpost/med)
-"jm" = (/obj/machinery/sleeper{dir = 8},/obj/machinery/light_switch{pixel_y = -23},/turf/simulated/floor/plasteel{dir = 9; icon_state = "warnwhite"},/area/research_outpost/med)
-"jn" = (/obj/machinery/sleep_console{dir = 8},/obj/machinery/light/small,/obj/machinery/camera{c_tag = "Research Outpost Medbay"; dir = 8; network = list("Research Outpost")},/turf/simulated/floor/plasteel{icon_state = "warnwhite"; dir = 5},/area/research_outpost/med)
+"jm" = (/obj/machinery/light_switch{pixel_y = -23},/turf/simulated/floor/plasteel{dir = 9; icon_state = "warnwhite"},/area/research_outpost/med)
+"jn" = (/obj/machinery/light/small,/obj/machinery/camera{c_tag = "Research Outpost Medbay"; dir = 8; network = list("Research Outpost")},/obj/machinery/sleeper{dir = 8},/turf/simulated/floor/plasteel{icon_state = "warnwhite"; dir = 5},/area/research_outpost/med)
"jo" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{level = 1},/obj/machinery/firealarm{dir = 8; pixel_x = -24},/turf/simulated/floor/plasteel{icon_state = "vault"; dir = 5},/area/research_outpost/tempstorage)
"jp" = (/turf/simulated/floor/plasteel{icon_state = "vault"; dir = 8},/area/research_outpost/tempstorage)
"jq" = (/obj/machinery/conveyor{dir = 9; id = "anotempload"},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 8},/area/research_outpost/tempstorage)
@@ -938,7 +938,7 @@
"sb" = (/obj/machinery/light/small{dir = 4},/obj/structure/stool/bed/roller,/turf/simulated/floor/plasteel{dir = 2; icon_state = "whiteblue"},/area/mine/laborcamp)
"sc" = (/obj/structure/closet/crate/internals,/obj/item/weapon/tank/emergency_oxygen,/obj/item/weapon/tank/emergency_oxygen,/obj/item/weapon/tank/emergency_oxygen,/obj/item/weapon/tank/emergency_oxygen,/obj/item/clothing/mask/breath,/obj/item/clothing/mask/breath,/obj/item/clothing/mask/breath,/obj/item/clothing/mask/breath,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor/plasteel{icon_state = "floorgrime"; temperature = 273.15},/area/mine/laborcamp)
"sd" = (/obj/machinery/light/small,/turf/simulated/floor/plasteel{icon_state = "floorgrime"; temperature = 273.15},/area/mine/laborcamp)
-"se" = (/mob/living/simple_animal/bot/secbot/beepsky{desc = "Powered by tears and swet of laborer."; name = "Prison Ofitser"},/obj/machinery/navbeacon{codes_txt = "patrol;next_patrol=2-NMine"; location = "1-Storage"},/turf/simulated/floor/plasteel{icon_state = "asteroidfloor"; temperature = 273.15},/area/mine/laborcamp)
+"se" = (/obj/machinery/navbeacon{codes_txt = "patrol;next_patrol=2-NMine"; location = "1-Storage"},/mob/living/simple_animal/bot/secbot/beepsky{desc = "Powered by tears and swet of laborer."; name = "Prison Ofitser"},/turf/simulated/floor/plasteel{icon_state = "asteroidfloor"; temperature = 273.15},/area/mine/laborcamp)
"sf" = (/obj/structure/plasticflaps/mining,/turf/simulated/floor/plasteel{icon_state = "asteroidfloor"; temperature = 273.15},/area/mine/laborcamp)
"sg" = (/obj/machinery/navbeacon{codes_txt = "patrol;next_patrol=3-SMine"; location = "2-NMine"},/turf/simulated/floor/plasteel{icon_state = "asteroidfloor"; temperature = 273.15},/area/mine/laborcamp)
"sh" = (/turf/simulated/floor/plating{icon_plating = "asteroidplating"; icon_state = "asteroidplating"; temperature = 273.15},/area/mine/explored)
diff --git a/_maps/map_files/RandomZLevels/blackmarketpackers.dmm b/_maps/map_files/RandomZLevels/blackmarketpackers.dmm
index 5003686f08a..8f413b01937 100644
--- a/_maps/map_files/RandomZLevels/blackmarketpackers.dmm
+++ b/_maps/map_files/RandomZLevels/blackmarketpackers.dmm
@@ -101,7 +101,6 @@
"bW" = (/obj/machinery/light,/turf/simulated/floor/plating/airless,/area/awaymission/BMPship/Aft)
"bX" = (/obj/machinery/door_control{id = "packerMed"; pixel_y = -24},/turf/simulated/floor/plating/airless,/area/awaymission/BMPship/Aft)
"bY" = (/obj/machinery/sleeper{dir = 1},/turf/simulated/floor/plating/airless,/area/awaymission/BMPship/Aft)
-"bZ" = (/obj/machinery/sleep_console,/turf/simulated/floor/plating/airless,/area/awaymission/BMPship/Aft)
"ca" = (/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"; tag = ""},/turf/simulated/floor/plating,/area/awaymission/BMPship/Aft)
"cb" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_y = 0; tag = ""},/obj/item/weapon/hand_labeler,/turf/simulated/floor/plating,/area/awaymission/BMPship/Aft)
"cc" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_y = 0; tag = ""},/turf/simulated/floor/plating,/area/awaymission/BMPship/Aft)
@@ -512,7 +511,7 @@ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafagagahagagagagagagagaiaaaaaaaaaaaaasaXaYaHaHaZaHaHaHbaaHaHbbbcbdbdbebdbdbfbgbhbdbibjaPaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacababacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabkblbmbnbobpbqbpbqbpbrbsaaaaaaaaaaasbtaYaHbuaHaHaHaGaHbvaNaNbwbxbybdbzbdbdbAbBbCbDbdbjaPaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacabababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabEbFbGbnbHararararararbIaaaaaaasaEaFaHbuaYaHbuaHaHaHaZaHaHaHbJbcbKbdbdbdbdbLbMbNbdbdbOaPaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabababababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabPbQbFbnarbRbRbSbRbRbTbUaaaaaaaEbVbtbuaHbWbXaHaHaHbYbZbWbYbZaPbccacbcccccdccccccccbyceaPaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabababababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabPbQbFbnarbRbRbSbRbRbTbUaaaaaaaEbVbtbuaHbWbXaHaHaHbYaHbWbYaHaPbccacbcccccdccccccccbyceaPaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaababababababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacfcgchcicjckclclclclclcmclclclcmcnaxaxaxaxaAcpcpcpaCaxaxaxaxbVcqcrcsctcrcrcucvcwcxcyczaPaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabababababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacAcBcCcCcDcCcEcFcGcHcIcJcKcIcLcGcMcNcOcPcQcRcMcMcMcMcScTcUcScVcWaxaxaxaxaxaxaxaxayaAcXaCcncoaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaababababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacAcBcYcZcYdacCcEcMdbcHdcdcdcdccLcMcMdddedededfcMcMcMcMdgdgcMdgcMdhdididjdkdldmdldnaPdodpdqdrazaxaycoaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
diff --git a/_maps/map_files/RandomZLevels/centcomAway.dmm b/_maps/map_files/RandomZLevels/centcomAway.dmm
index 11cab2ce739..9def97f64f2 100644
--- a/_maps/map_files/RandomZLevels/centcomAway.dmm
+++ b/_maps/map_files/RandomZLevels/centcomAway.dmm
@@ -145,7 +145,6 @@
"cO" = (/obj/structure/table/reinforced,/obj/item/weapon/pen,/turf/simulated/shuttle/floor{icon_state = "floor2"},/area/awaymission/centcomAway/hangar)
"cP" = (/obj/structure/table/reinforced,/turf/simulated/shuttle/floor{icon_state = "floor2"},/area/awaymission/centcomAway/hangar)
"cQ" = (/obj/machinery/sleeper{icon_state = "sleeper-open"; dir = 8},/turf/simulated/shuttle/floor,/area/awaymission/centcomAway/hangar)
-"cR" = (/obj/machinery/sleep_console{icon_state = "console"; dir = 8},/turf/simulated/shuttle/floor,/area/awaymission/centcomAway/hangar)
"cS" = (/obj/structure/stool/bed/chair{dir = 8},/turf/simulated/shuttle/floor,/area/awaymission/centcomAway/hangar)
"cT" = (/turf/simulated/shuttle/wall{icon_state = "swallc2"; dir = 2},/area/awaymission/centcomAway/hangar)
"cU" = (/turf/simulated/floor/plating,/area/awaymission/centcomAway/hangar)
@@ -251,7 +250,6 @@
"eQ" = (/obj/machinery/suit_storage_unit/standard_unit,/turf/simulated/floor/plasteel{dir = 1; icon_state = "yellow"},/area/awaymission/centcomAway/general)
"eR" = (/obj/machinery/autolathe,/turf/simulated/floor/plasteel{dir = 1; icon_state = "yellow"},/area/awaymission/centcomAway/general)
"eS" = (/obj/machinery/sleeper{icon_state = "sleeper-open"; dir = 8},/turf/simulated/floor/plasteel{icon_state = "white"},/area/awaymission/centcomAway/general)
-"eT" = (/obj/machinery/sleep_console{icon_state = "console"; dir = 8},/turf/simulated/floor/plasteel{icon_state = "white"},/area/awaymission/centcomAway/general)
"eU" = (/turf/simulated/floor/plasteel{icon_state = "white"},/area/awaymission/centcomAway/general)
"eV" = (/obj/structure/table/reinforced,/obj/item/weapon/tank/anesthetic,/obj/item/clothing/mask/breath/medical,/turf/simulated/floor/plasteel{icon_state = "white"},/area/awaymission/centcomAway/general)
"eW" = (/obj/machinery/implantchair,/turf/simulated/floor/plasteel{icon_state = "white"},/area/awaymission/centcomAway/general)
@@ -740,7 +738,7 @@ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabnbobfbDbEbEbEbFbGbH
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabnbobfbDbUbUbVbWbXbYbZcacbbYbXcccdbUbUbDbfbfbfaWagagakaFaGaHakaiaiaIcecfaiaiaiaiakakakaKcgakakakakakchciciaKcjckckataaclagagcmagcncococococococococococococoaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabnbobfbDbUbUcpcqcqbYcqcqcqbYcqcqcpbUbUbDbfbfbfaWagagakaQaGaGaRaiaiaIcraJaiaiaiaiaKcscscsctcucucucucucvcwcwcwcwcwcwaBaacxagagcyababbmbTbTbTbTbTbTbTbTbTbTbTbTaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabnbobfczcdbUcAcqbYbYbYbYbYbYbYcqcAbUbVcBbfbfcCaWcDcEakakakakakaiaiaIaJaJaiaiaiaicFcscscGcGcGcscscscscicwcHcIcJcKcwaBaacxagagabaabmaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabnbobfbfczbJcLcMcNcOcPbYcQcRbYcScTbJcBbfbfcUcUcmagagagcVaiaiaiaiaiaIaJaJaiaiaiaiaKcscscscWcucucucucucXcwcwcwcwcwcwaBaacxagagabaabmaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabnbobfbfczbJcLcMcNcOcPbYcQcqbYcScTbJcBbfbfcUcUcmagagagcVaiaiaiaiaiaIaJaJaiaiaiaiaKcscscscWcucucucucucXcwcwcwcwcwcwaBaacxagagabaabmaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabnbobfbgbfbfbDcYcZdadbbYcqcqbYcSbDbfbfbfbfbfcUcmagagagcVaiaiaiaiaiaIaJaJaiaiaiaiakakakaKdcakakakakakchciciaKcjckckbbaaddagagcyababbmbTbTbTbTbTbTbTbTbTbTbTbTaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabnbobfbgcUbfbDdedfdfcPbYcSdgbYcScpdhbfbfdidicCaWaWcEakakakakakaiaiaiaiaiaiaiaiaIbhdjdkdldmakbObxbPakbQdndobBakakakacababagagcmagcmcococococococococococococoaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabnbobfbfbfbfbDdpdfdfdqbYcSdgbYbYbHbfbfbfbodrdsdtaWagakaFduaHakaiaiaiaiaiaiaiaiaIbhdjaxaxdmdvbwbxbyakdwbAdxbBakbCagagagagagagabababbmbTbTbTbTbTbTbTbTbTbTbTbTaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
@@ -751,9 +749,9 @@ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabnbobfbfbfbfbDdEbYbY
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabnbobfbfbfbfbDdEbYdEdYbYcqcqcqcqdYbfbfbfaWaWaWaWaWagakakdZeaakakakdZebeaakaiaiaiakdjaxayazaxaxaxecaBauedeeauakefegehakagagabaaaabmbmaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabnbobfbfbfcUbDdEbYdEbDbYeiejekbXbDbfbgbfbuaWbdagagagacelemeneneoenepeneqacereseraketeuevewexeyezeAbbauavavauakakakakakagagababababababaTaUaUaVababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabnbobfbfbfcUeBeCeCbJeDeEbIbJeCeCcBbfbfbfbfaWagageFeFeFeFeFeFeFeFeFeFeFeFeFeGeGeGeFeFeFeFeFeFeFeFeFeFeFeFeFakakeHeIbdagagageJagagagagagagagagagagabababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabnbobfbfbfcUcUeBbKeKcSbYeLeMbFcBbfbfbfbfcUaWagageFeNeOeOeOePeFeNeQeReQePeFeGeGeGeFeSeTeUeVeWeFeXeYeZfafbeFagagagagagagagagagagagagagagagagagagagageIabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabnbobfbfbfcUcUeBbKeKcSbYeLeMbFcBbfbfbfbfcUaWagageFeNeOeOeOePeFeNeQeReQePeFeGeGeGeFeSeUeUeVeWeFeXeYeZfafbeFagagagagagagagagagagagagagagagagagagagageIabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabnbobfbfbfbfcUcUbDekcqfccqeKbDbfbfbfbfcUcUaWagageFeOeOfdeOeOfeeOeOeOeOeOeFfffgffeFeUeUeUeUfhfieUeUeUfhfieFagfjfjfjfjfjfjfjfjfjfjfjfjfjfjfjfjfjfjagbdabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabnbobfbfcUbfbfcUbDfkflfmfnfobDbfbfbfbfcUcUaWagageFeOeOeOeOeOeFfpfqfrfrfseFfteOfueFeSeTeUeUeUfieUeUeUeUfieFagfjfvfwfxfjfyfyfyfjfyfyfyfyfyfyfyfyfjagagabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabnbobfbfcUbfbfcUbDfkflfmfnfobDbfbfbfbfcUcUaWagageFeOeOeOeOeOeFfpfqfrfrfseFfteOfueFeSeUeUeUeUfieUeUeUeUfieFagfjfvfwfxfjfyfyfyfjfyfyfyfyfyfyfyfyfjagagabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabnbobfbfbfbfbfbfczfzfAfAfAfBcBbfbfbfbfbfcUaWagageFeOfCfDfCeOeFfEfFfGfHfIeFeOeOeOeFfGfHfJfKfLeFfMfNeUfOfPeFagfjfQfQfQfRfyfyfyfSfyfTfUfTfyfVfWfXfjagagabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabnbobfbfbfbfbfbfbfbfbfbfbfbfbfbfcUbfbfbfbfaWagageFfpfYfZgagbeFeOgcgcgcgcgdeOeOeOgegfgfgfgfeOggeOgheUfhfieFagfjfjfjfjfjfyfyfyfjgigjfTgkgiglgmgmfjagagabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabnbobfbfbfbgbfbfbfbfbfbfbfbgbfbfbfbfbfbfbfaWagageFeFeFeFeFeFeFeOeOgngogogogogogogogogogpeOeOeFeFeFeFeFeFeFagfjgqfQfvfjfyfyfyfjgrgrgrgrgrglgmgmfjaggsabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
@@ -832,3 +830,4 @@ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
"}
+
diff --git a/_maps/map_files/RandomZLevels/spacebattle.dmm b/_maps/map_files/RandomZLevels/spacebattle.dmm
index 0baeb1bcaf4..f398c6134e5 100644
--- a/_maps/map_files/RandomZLevels/spacebattle.dmm
+++ b/_maps/map_files/RandomZLevels/spacebattle.dmm
@@ -419,11 +419,9 @@
"ic" = (/obj/effect/landmark/corpse/engineer{mobname = "Carth Robinson"; name = "Carth Robinson"},/obj/effect/decal/cleanable/blood,/turf/simulated/floor/plasteel{icon_state = "freezerfloor"},/area/awaymission/spacebattle/cruiser)
"id" = (/obj/item/ammo_casing/c10mm,/obj/item/ammo_casing/c10mm,/obj/item/ammo_casing/c10mm,/obj/item/ammo_casing/c10mm,/turf/simulated/floor/plasteel{icon_state = "freezerfloor"},/area/awaymission/spacebattle/cruiser)
"ie" = (/obj/machinery/sleeper,/turf/simulated/floor/plasteel{icon_state = "white"},/area/awaymission/spacebattle/cruiser)
-"if" = (/obj/machinery/sleep_console,/turf/simulated/floor/plasteel{icon_state = "white"},/area/awaymission/spacebattle/cruiser)
"ig" = (/turf/space,/turf/simulated/shuttle/wall{icon_state = "diagonalWall3"},/area/awaymission/spacebattle/syndicate7)
"ih" = (/obj/structure/sink{dir = 4; icon_state = "sink"; pixel_x = 11; pixel_y = 0},/turf/simulated/floor/plasteel{icon_state = "freezerfloor"},/area/awaymission/spacebattle/cruiser)
"ii" = (/obj/machinery/sleeper,/turf/simulated/floor/plasteel{icon_state = "whitehall"; dir = 1},/area/awaymission/spacebattle/cruiser)
-"ij" = (/obj/machinery/sleep_console,/turf/simulated/floor/plasteel{icon_state = "whitehall"; dir = 1},/area/awaymission/spacebattle/cruiser)
"ik" = (/turf/simulated/floor/plasteel{icon_state = "whitehall"; dir = 1},/area/awaymission/spacebattle/cruiser)
"il" = (/obj/effect/landmark/corpse/engineer{mobname = "Cyrion"; name = "Cyrion"},/obj/item/weapon/flamethrower/full,/obj/effect/decal/cleanable/blood,/turf/simulated/floor/plasteel,/area/awaymission/spacebattle/cruiser)
"im" = (/mob/living/simple_animal/hostile/syndicate/ranged,/turf/simulated/floor/plasteel,/area/awaymission/spacebattle/cruiser)
@@ -615,9 +613,9 @@ abababababababababababababababababababababababababababababababababababababababab
ababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababbUbVcdbZbZbZdedededfdfdgdgdhdhdhdididicbhOhPhQcbhRcbhRcbhRcbhRcbhRcbbZbZcbgFgFgFgFgFgFgFhScbbZbZcObSbSbSbSbSeGbSbSbSbScabSbSbSbSeGbSbSbSbSbSbSbSbSbSbSbSbSbSbSbSbSeHcacacphTabababababababababababababababababababababababababdqdtbZbZbZbZbZbZbZbZbZbZbZbZcGcWcWababababababababababababababababababababababababababababhphehfhfhfhfhfhfhfgXgMabababababababababababababababab
ababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababccbVcdbZbZbZbZbZbZbZbZbZbZbZbZbZbZbZbZcbhPhPhPcbhUhVhUhVhUhVhUhVhUcbbZbZcbgFhvgFgFgFgFhWhXcbbZbZbZbZbZbZbZbZbZbZbZbZbZbZbZcYbZbZbZbZbZbZbZbZbZbZbZbZbZbZbZbZbZbZbZbZbZbZcbabababababababababababababababababababababababababababcbbZbZbZbZbZbZbZbZbZbZcYbZcVcWdbababababababababababababababababababababababababababababhphehfhfhfhfhfhfhfhghhabababababababababababababababab
ababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababccbVcdbZbZbZbZbZbZbZbZbZbZbZbZbZbZbZbZcbhYhPhZcbhPhPhPhPhPhPiahPhPcabZchcbgFgFgFgFgFibgRgFcbbZcYbZbZbZbZbZbZbZbZbZbZbZbZbZbZbZbZbZbZbZbZbZbZbZbZbZbZbZbZbZbZbZbZbZbZbZbZcbabababababababababababababababababababababababababababcbbZbZbZbZbZbZbZbZbZbZbZbZdacWcWababababababababababababababababababababababababababababhphehfhfhfhfhfhfhfhghqabababababababababababababababab
-ababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababccbVcsbZbZbZbZbZbZbZbZbZbZbZbZbZbZbZbZcbhPhPhPgDichPhPhPhPhPidhPhPcabZbZcbieifgFieifgFieifcbbZbZcrbSbSbSbSbSbSbSbSbSbSbSbSbSbSbSbSbSbSbSbSbSbSbSbSbSbSbSbSbSbSbSbSbSbSbShTabababababababababababababababababababababababababababdqbSbSbSbSbSbSbSbSbSbSbSbSbSbShTababababababababababababababababababababababababababababiggXgXgXgXgXgXgXgXgXhzabababababababababababababababab
+ababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababccbVcsbZbZbZbZbZbZbZbZbZbZbZbZbZbZbZbZcbhPhPhPgDichPhPhPhPhPidhPhPcabZbZcbiegFgFiegFgFiegFcbbZbZcrbSbSbSbSbSbSbSbSbSbSbSbSbSbSbSbSbSbSbSbSbSbSbSbSbSbSbSbSbSbSbSbSbSbSbShTabababababababababababababababababababababababababababdqbSbSbSbSbSbSbSbSbSbSbSbSbSbShTababababababababababababababababababababababababababababiggXgXgXgXgXgXgXgXgXhzabababababababababababababababab
ababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababccbVcsbZbZbZbZbZbZbZbZbZbZbZbZbZbZbZbZcbhYhPhQhVhPhPhPhPhPhPiahPihcbbZbZcbgFgFgFgFgFgFgFgFcbbZbZcGcHcHcHcHcHcHcGababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababgLhzababababababababababababababababababababababab
-ababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababccbVcsbZbZbZbZbZbZbZcobZbZbZbZbZbZbZbZcbhPhPhPhUhPhPhPhPhPhPhPhPihcbbZbZcbiiijikiiijikiiijcbbZbZcGcHcHcHcHcHcHcGababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab
+ababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababccbVcsbZbZbZbZbZbZbZcobZbZbZbZbZbZbZbZcbhPhPhPhUhPhPhPhPhPhPhPhPihcbbZbZcbiiikikiiikikiiikcbbZbZcGcHcHcHcHcHcHcGababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab
ababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababccbVcdbZbZbZbZbZbZbZbZbZilbZimcKcJbZcmcpbQbQbQbQbQbQbQbQbQbQbQbQbQeHbZbZcObSbSbSbSbSbSbSbSeHbZbZcpbQbQbQbQbQbQhTababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab
ababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababccbVcdbZbZbZbZbZbZbZbZbZbZbZbZbZcKincKcabZbZbZbZimbZbZbZbZbZbZbZbZbZbZbZbZbZbZbZbZbZbZbZbZbZbZbZcbabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab
ababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababiobVbWipbZbZbZbZbZbZimbZbZbZcIcIcKcmcKcabZbZbZbZbZbZbZbZbZbZbZbZbZbZbZbZchbZbZbZbZbZbZbZbZbZbZbZcbabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab
diff --git a/_maps/map_files/RandomZLevels/stationCollision.dmm b/_maps/map_files/RandomZLevels/stationCollision.dmm
index bf7e67bcd2d..dce6e0a6499 100644
--- a/_maps/map_files/RandomZLevels/stationCollision.dmm
+++ b/_maps/map_files/RandomZLevels/stationCollision.dmm
@@ -616,7 +616,6 @@
"lX" = (/obj/structure/stool/bed/roller,/turf/simulated/floor/plasteel{icon_state = "white"},/area/awaymission/southblock)
"lY" = (/obj/structure/window/reinforced/tinted{dir = 8; icon_state = "twindow"; tag = ""},/turf/simulated/floor/plasteel{icon_state = "whitehall"; dir = 2},/area/awaymission/southblock)
"lZ" = (/obj/machinery/sleeper{dir = 1},/turf/simulated/floor/plasteel{icon_state = "whitehall"; dir = 2},/area/awaymission/southblock)
-"ma" = (/obj/machinery/sleep_console,/turf/simulated/floor/plasteel{icon_state = "white"},/area/awaymission/southblock)
"mb" = (/turf/simulated/floor/plasteel{icon_state = "warning"},/area/awaymission/southblock)
"mc" = (/turf/simulated/floor/plasteel{dir = 6; icon_state = "warning"},/area/awaymission/southblock)
"md" = (/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"; tag = ""},/obj/machinery/light/small,/turf/simulated/floor/plasteel,/area/awaymission/gateroom)
@@ -685,7 +684,7 @@ aaaaaaaaaaaaaaaaaafZkOgbkQfZaagzhujzhujzhuhuhuiYkfkdkfkpkRjKkYkZlaiYjKjEjulbkVkW
aaaaaaaaaaaaaaaaaafZkOgckQfZaagzlehulfhulghuhuiYiYiYiYiYlhjKlijKljiYjKjEjulkkVkWkVlljujujujujulmlnloaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaahvlqlrlqhRaagzlthuluhulvjzhuiYlwlxlyiYkRjKlijKlziYjKlAjujujulBjujujulClDlEjuaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaagzltlFlGlHhuhuhuiYlIkfkfkpkRjKlJjKlKiYlLlMlNlOlOlPlOlQlRlSlTlUjuaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaagzgzgzgzgzgzgzgziYlVlWlXiYkfkdlYlZmaiYjKjKjKmbmbmbmbmcjulCmdmejuaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaagzgzgzgzgzgzgzgziYlVlWlXiYkfkdlYlZkfiYjKjKjKmbmbmbmbmcjulCmdmejuaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaiYiYiYiYiYiYiYiYiYiYiYiYiYiYiYiYiYiYiYjujujujujuaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
"}
diff --git a/_maps/map_files/cyberiad/cyberiad.dmm b/_maps/map_files/cyberiad/cyberiad.dmm
index 30beabf50a5..2e1ecc58633 100644
--- a/_maps/map_files/cyberiad/cyberiad.dmm
+++ b/_maps/map_files/cyberiad/cyberiad.dmm
@@ -467,10 +467,10 @@
"aiY" = (/obj/structure/table,/obj/effect/decal/warning_stripes/red/hollow,/obj/item/weapon/storage/toolbox/mechanical,/obj/item/device/lock_buster,/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/security/armoury)
"aiZ" = (/obj/effect/spawner/window/reinforced,/obj/structure/cable{d2 = 8; icon_state = "0-8"},/turf/simulated/floor/plating,/area/security/interrogationhallway)
"aja" = (/obj/effect/spawner/window/reinforced,/obj/machinery/door/poddoor{density = 0; icon_state = "pdoor0"; id_tag = "Secure Gate"; name = "Security Blast Door"; opacity = 0},/obj/structure/cable,/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"; tag = ""},/turf/simulated/floor/plating,/area/security/seceqstorage)
-"ajb" = (/obj/machinery/sleeper{dir = 8; name = "Prisoner Sleeper"},/turf/simulated/floor/plasteel{tag = "icon-whiteblue (NORTHWEST)"; icon_state = "whiteblue"; dir = 9},/area/security/medbay)
+"ajb" = (/obj/machinery/light/spot{tag = "icon-tube1 (WEST)"; icon_state = "tube1"; dir = 8},/obj/machinery/sleeper/syndie{dir = 4},/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/shuttle/syndicate)
"ajc" = (/obj/structure/stool/bed,/obj/item/weapon/bedsheet/blue,/obj/machinery/camera{c_tag = "Brig Medbay"; dir = 2; network = list("SS13")},/obj/machinery/alarm{pixel_y = 25},/turf/simulated/floor/plasteel{dir = 4; icon_state = "whitebluecorner"; tag = "icon-whitebluecorner"},/area/security/medbay)
"ajd" = (/obj/structure/table/reinforced{tag = "icon-table"; icon_state = "table"},/obj/machinery/door/window/brigdoor/southleft{dir = 4; req_access_txt = "63"},/obj/machinery/door/window/brigdoor{dir = 8; name = "Warden's Desk"; req_access_txt = "3"},/obj/machinery/door/firedoor,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/security/warden)
-"aje" = (/obj/machinery/sleep_console{dir = 8},/turf/simulated/floor/plasteel{dir = 4; icon_state = "whitebluecorner"; tag = "icon-whitebluecorner"},/area/security/medbay)
+"aje" = (/obj/machinery/sleeper/syndie{dir = 4},/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/shuttle/syndicate)
"ajf" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor/plasteel,/area/security/seceqstorage)
"ajg" = (/obj/structure/stool,/turf/simulated/floor/plasteel{dir = 2; icon_state = "redfull"; tag = "icon-redfull (NORTHWEST)"},/area/security/seceqstorage)
"ajh" = (/obj/structure/stool/bed/chair/comfy/black,/obj/effect/landmark/start{name = "Head of Security"},/turf/simulated/floor/plasteel{dir = 2; icon_state = "redfull"; tag = "icon-redfull (NORTHWEST)"},/area/security/main)
@@ -930,7 +930,7 @@
"arT" = (/turf/simulated/floor/plating/airless,/turf/simulated/floor/plating/airless/catwalk{tag = "icon-catwalk13"; icon_state = "catwalk13"},/area/solar/auxstarboard)
"arU" = (/turf/simulated/floor/plating/airless,/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"; tag = ""},/turf/simulated/floor/plating/airless/catwalk{tag = "icon-catwalk6"; icon_state = "catwalk6"},/area/solar/auxstarboard)
"arV" = (/turf/simulated/floor/plating/airless,/obj/structure/cable{d2 = 8; icon_state = "0-8"},/turf/simulated/floor/plating/airless/catwalk{tag = "icon-catwalk13"; icon_state = "catwalk13"},/area/solar/auxstarboard)
-"arW" = (/obj/machinery/sleep_console{dir = 8},/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/shuttle/abandoned)
+"arW" = (/obj/machinery/sleeper/upgraded{dir = 4},/turf/simulated/shuttle/floor4/vox,/area/shuttle/vox)
"arX" = (/obj/structure/table/woodentable,/obj/item/weapon/folder/red,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 1; layer = 2.9},/turf/simulated/floor/plasteel{dir = 2; icon_state = "carpet"},/area/crew_quarters/courtroom)
"arY" = (/obj/structure/stool/bed/chair,/obj/machinery/alarm{dir = 4; pixel_x = -23; pixel_y = 0},/turf/simulated/floor/plasteel,/area/security/processing)
"arZ" = (/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 8; initialize_directions = 11; level = 1},/obj/machinery/power/apc{cell_type = 5000; dir = 8; name = "Prisoner Cell Block B APC"; pixel_x = -24; pixel_y = 0},/turf/simulated/floor/plasteel,/area/security/prison/cell_block/B)
@@ -5004,7 +5004,7 @@
"bSl" = (/obj/structure/disposalpipe/segment{dir = 4; icon_state = "pipe-c"},/turf/simulated/floor/plasteel,/area/hallway/primary/central/se)
"bSm" = (/obj/machinery/vending/wallmed1{name = "Emergency NanoMed"; pixel_x = -25; pixel_y = 0; req_access_txt = "0"},/obj/machinery/light{dir = 8},/obj/structure/stool/bed,/turf/simulated/floor/plasteel{dir = 8; icon_state = "whitered"},/area/medical/sleeper)
"bSn" = (/obj/machinery/sleeper{dir = 8},/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/sleeper)
-"bSo" = (/obj/machinery/sleep_console{dir = 8},/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/sleeper)
+"bSo" = (/obj/machinery/sleeper{dir = 4},/turf/simulated/floor/plasteel{tag = "icon-whiteblue (NORTHWEST)"; icon_state = "whiteblue"; dir = 9},/area/security/medbay)
"bSp" = (/obj/machinery/door/firedoor,/obj/machinery/door/poddoor/shutters{density = 0; dir = 4; icon_state = "shutter0"; id_tag = "acute1"; name = "Acute 1 Privacy Shutters"; opacity = 0},/turf/simulated/floor/plasteel{tag = "icon-whitebluefull"; icon_state = "whitebluefull"},/area/medical/sleeper)
"bSq" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/medbay2)
"bSr" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/obj/structure/disposalpipe/segment,/turf/simulated/floor/plasteel{dir = 4; icon_state = "whiteblue"; tag = "icon-whitehall (WEST)"},/area/medical/medbay2)
@@ -5994,7 +5994,7 @@
"cln" = (/obj/structure/sign/securearea{desc = "A warning sign which reads 'HIGH VOLTAGE'"; icon_state = "shock"; name = "HIGH VOLTAGE"},/turf/simulated/wall/r_wall,/area/storage/tech)
"clo" = (/obj/structure/table,/obj/item/device/aicard,/obj/item/weapon/aiModule/reset,/turf/simulated/floor/plating,/area/storage/tech)
"clp" = (/obj/structure/rack{dir = 8; layer = 2.9},/obj/item/weapon/circuitboard/rdconsole{pixel_x = -4},/obj/item/weapon/circuitboard/rdserver{pixel_x = 4; pixel_y = -2},/obj/item/weapon/circuitboard/destructive_analyzer,/obj/item/weapon/circuitboard/protolathe{pixel_x = -2; pixel_y = 3},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/obj/item/weapon/circuitboard/circuit_imprinter{pixel_x = -4; pixel_y = -3},/turf/simulated/floor/plating,/area/storage/tech)
-"clq" = (/obj/structure/rack{dir = 8; layer = 2.9},/obj/item/weapon/circuitboard/autolathe{pixel_x = 3; pixel_y = -3},/obj/item/weapon/circuitboard/bodyscanner,/obj/item/weapon/circuitboard/bodyscanner_console,/obj/item/weapon/circuitboard/sleeper{pixel_x = 3},/obj/item/weapon/circuitboard/sleep_console{pixel_x = 3},/turf/simulated/floor/plating,/area/storage/tech)
+"clq" = (/turf/simulated/floor/plasteel{dir = 4; icon_state = "whitebluecorner"; tag = "icon-whitebluecorner"},/area/security/medbay)
"clr" = (/obj/structure/rack{dir = 8; layer = 2.9},/obj/item/weapon/circuitboard/message_monitor{pixel_y = -5},/obj/item/weapon/circuitboard/arcade/battle,/obj/item/weapon/circuitboard/arcade/orion_trail{pixel_x = -4; pixel_y = 2},/turf/simulated/floor/plating,/area/storage/tech)
"cls" = (/obj/item/device/radio/intercom{pixel_x = 28},/turf/simulated/floor/plating,/area/storage/tech)
"clt" = (/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/plasteel{dir = 8; icon_state = "cautioncorner"},/area/hallway/primary/aft)
@@ -8315,9 +8315,9 @@
"ddU" = (/obj/machinery/newscaster{pixel_y = -32},/turf/simulated/floor/plasteel{dir = 2; icon_state = "escape"},/area/hallway/secondary/exit)
"ddV" = (/obj/structure/closet/emcloset,/obj/item/clothing/mask/breath,/obj/item/clothing/mask/breath,/obj/item/weapon/tank/emergency_oxygen,/obj/item/weapon/tank/emergency_oxygen,/obj/machinery/light,/obj/effect/decal/warning_stripes/southeastcorner,/turf/simulated/floor/plasteel,/area/hallway/secondary/exit)
"ddW" = (/obj/machinery/status_display{density = 0; layer = 4; pixel_x = 32; pixel_y = 0},/obj/structure/closet/emcloset,/obj/item/clothing/mask/breath,/obj/item/clothing/mask/breath,/obj/item/weapon/tank/emergency_oxygen,/obj/item/weapon/tank/emergency_oxygen,/obj/effect/decal/warning_stripes/southeast,/turf/simulated/floor/plasteel,/area/hallway/secondary/exit)
-"ddX" = (/obj/machinery/sleeper{dir = 8},/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/shuttle/escape)
+"ddX" = (/obj/machinery/sleeper{dir = 4},/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/shuttle/escape)
"ddY" = (/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/shuttle/escape)
-"ddZ" = (/obj/machinery/sleep_console{dir = 8},/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/shuttle/escape)
+"ddZ" = (/obj/machinery/sleeper/upgraded{dir = 4},/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/shuttle/administration)
"dea" = (/obj/structure/stool/bed/roller,/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/shuttle/escape)
"deb" = (/turf/simulated/shuttle/floor4,/area/shuttle/escape)
"dec" = (/obj/structure/stool/bed/chair,/turf/simulated/shuttle/floor4,/area/shuttle/escape)
@@ -8489,8 +8489,7 @@
"dhm" = (/obj/structure/rack,/obj/item/weapon/tank/nitrogen,/obj/item/weapon/tank/nitrogen,/obj/item/weapon/tank/nitrogen,/obj/item/weapon/tank/nitrogen,/obj/item/weapon/tank/nitrogen,/obj/item/weapon/tank/nitrogen,/turf/simulated/shuttle/floor4/vox,/area/shuttle/vox)
"dhn" = (/obj/structure/rack,/obj/item/clothing/accessory/storage/black_vest,/obj/item/clothing/suit/space/vox/carapace,/obj/item/clothing/head/helmet/space/vox/carapace,/obj/item/clothing/mask/breath,/turf/simulated/shuttle/floor4/vox,/area/shuttle/vox)
"dho" = (/obj/structure/rack,/obj/item/weapon/gun/dartgun/vox/raider,/obj/item/weapon/gun/dartgun/vox/medical,/obj/item/weapon/dart_cartridge,/obj/item/weapon/dart_cartridge,/obj/item/weapon/dart_cartridge,/obj/item/weapon/dart_cartridge,/turf/simulated/shuttle/floor4/vox,/area/shuttle/vox)
-"dhp" = (/obj/machinery/sleep_console,/turf/simulated/shuttle/floor4/vox,/area/shuttle/vox)
-"dhq" = (/obj/machinery/sleeper/upgraded,/turf/simulated/shuttle/floor4/vox,/area/shuttle/vox)
+"dhp" = (/obj/structure/rack{dir = 8; layer = 2.9},/obj/item/weapon/circuitboard/autolathe{pixel_x = 3; pixel_y = -3},/obj/item/weapon/circuitboard/bodyscanner,/obj/item/weapon/circuitboard/bodyscanner_console,/obj/item/weapon/circuitboard/sleeper{pixel_x = 3},/turf/simulated/floor/plating,/area/storage/tech)
"dhr" = (/obj/machinery/body_scanconsole,/turf/simulated/shuttle/floor4/vox,/area/shuttle/vox)
"dhs" = (/obj/machinery/bodyscanner,/obj/machinery/light/spot,/turf/simulated/shuttle/floor4/vox,/area/shuttle/vox)
"dht" = (/obj/structure/shuttle/engine/heater,/obj/structure/window/reinforced{dir = 1},/turf/simulated/floor/plating/airless,/area/shuttle/vox)
@@ -8555,12 +8554,9 @@
"diA" = (/obj/machinery/door/window/westright{name = "Tool Storage"; req_access_txt = "150"},/obj/machinery/light/spot{tag = "icon-tube1 (NORTH)"; icon_state = "tube1"; dir = 1},/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/shuttle/syndicate)
"diB" = (/obj/structure/table,/obj/item/weapon/storage/toolbox/syndicate,/obj/item/weapon/crowbar/red,/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/shuttle/syndicate)
"diC" = (/obj/machinery/door/airlock/hatch{frequency = 1331; icon_state = "door_locked"; id_tag = "vox_northeast_lock"; locked = 1; req_access_txt = "152"; req_one_access = null; req_one_access_txt = "0"},/obj/docking_port/mobile{dir = 2; dwidth = 2; height = 18; id = "skipjack"; name = "Vox Skipjack"; roundstart_move = "skipjack_away"; width = 19},/obj/docking_port/stationary{dir = 2; dwidth = 2; height = 18; id = "skipjack_ne"; name = "northeast of SS13"; width = 19},/turf/simulated/shuttle/plating/vox,/area/shuttle/vox)
-"diD" = (/obj/machinery/sleeper/upgraded,/obj/machinery/light/spot{tag = "icon-tube1 (WEST)"; icon_state = "tube1"; dir = 8},/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/shuttle/syndicate)
-"diE" = (/obj/machinery/sleep_console{dir = 8},/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/shuttle/syndicate)
"diF" = (/obj/machinery/door/window{base_state = "right"; dir = 4; icon_state = "right"; name = "Infirmary"; req_access_txt = "150"},/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/shuttle/syndicate)
"diG" = (/obj/machinery/door/window{dir = 8; name = "Tool Storage"; req_access_txt = "150"},/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/shuttle/syndicate)
"diH" = (/obj/structure/closet/crate/internals,/obj/item/weapon/tank/oxygen/red,/obj/item/clothing/mask/gas,/obj/item/weapon/tank/oxygen/red,/obj/item/clothing/mask/gas,/obj/item/weapon/tank/oxygen/red,/obj/item/clothing/mask/gas,/obj/item/weapon/tank/oxygen/red,/obj/item/clothing/mask/gas,/obj/item/weapon/tank/oxygen/red,/obj/item/clothing/mask/gas,/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/shuttle/syndicate)
-"diI" = (/obj/machinery/sleeper/upgraded,/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/shuttle/syndicate)
"diJ" = (/obj/structure/table,/obj/item/weapon/reagent_containers/syringe/charcoal,/obj/item/weapon/reagent_containers/syringe/charcoal{pixel_y = 2},/obj/item/weapon/reagent_containers/syringe/charcoal{pixel_y = 4},/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/shuttle/syndicate)
"diK" = (/obj/structure/table,/obj/item/weapon/gun/syringe,/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/shuttle/syndicate)
"diL" = (/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 1},/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/shuttle/syndicate)
@@ -8665,8 +8661,6 @@
"dkG" = (/obj/machinery/body_scanconsole,/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/shuttle/administration)
"dkH" = (/obj/structure/window/plasmareinforced{color = "#FF0000"; dir = 8},/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/shuttle/administration)
"dkI" = (/obj/structure/stool/bed/chair{dir = 8},/obj/machinery/light/spot{tag = "icon-tube1 (EAST)"; icon_state = "tube1"; dir = 4},/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/shuttle/administration)
-"dkJ" = (/obj/machinery/sleep_console{dir = 8},/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/shuttle/administration)
-"dkK" = (/obj/machinery/sleeper/upgraded,/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/shuttle/administration)
"dkL" = (/obj/machinery/chem_master,/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/shuttle/administration)
"dkM" = (/obj/machinery/chem_dispenser,/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/shuttle/administration)
"dkN" = (/obj/machinery/door/airlock/centcom{id_tag = "adminshuttle"; name = "Holding Cell"; opacity = 1; req_access_txt = "104"},/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/shuttle/administration)
@@ -8926,7 +8920,7 @@ bikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbi
bikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbik
bikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbik
bikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikaraaaeaaeaaeaaearbarcbikbikbikbikbikbikbikaraarcbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbik
-bikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikaraaaeareardardarfarWargasOarbarcbikbikbikbikaraasOasPbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbik
+bikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikaraaaeareardardarfardargasOarbarcbikbikbikbikaraasOasPbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbik
bikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikaraasRasQardardardardardardcUJargcUKarcbikbikaraddsdeVdeUbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbik
bikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikaracUKasOdeWardardardarddeXardardarddeYcUKarcaraddsdeZdeVdeUbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbik
bikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikaadbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikaracUKaredfaargaaearbdfcdfbdfdaaeaaedfeasOasOasOasRdffdeZdeVdeUbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbik
@@ -8960,15 +8954,15 @@ bikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbi
bikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikdhPaafaafaafaafaafaafdincaVcaVaafaafaafaafaafaafdhXbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikaalabiabjabkablabmabnaboabpabqabraatabsabtaalbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikdiobikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbik
bikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbFldipdipdiqdisdirbFlditcaVcaVbFldiudiwdivdiydixbFlbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikaahbikbikbikbikbikbikbikbikbikaalabuaalabvabwabxabxaalaalabyaaoaalaalabzaalbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbik
bikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbFlcaVcaVcaVayLcaVdizcaVcaVcaVdiAcaVayLcaVayLdiBbFlbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikaalabBaatabCabDabEabFbikbikbikbikbikaalabGaalbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikabAcQScJadgjbikbikbikabAbikbikbikdgjbikbikbikabAdiCdgldgjbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbik
-bikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbFldiDdiEcaVcaVcaVdiFcaVcaVcaVdiGcaVcaVcaVcaVdiHbFlbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikaalabBaatabCabHaalbikbikbikbikbikbikaalaalaalbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikaahbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikdgmdgodgndgmbikbikabAdgmdgpdgrdgqdgmdgjbikbikdgmdgsdgtdgmbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbik
-bikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbFldiIdiEcaVdiKdiJbFldiLdiMdiLbFlaWldiOcaVcaVcaVbFlbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikaahbikbikbikbikbikbikaalaalaalaalabuaatabIabJaalaalaalaalbikbikbikabKabLabLabKbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikdgmdgvdgudgmbikabAdgwdgydgxdgAdgzdgydgwdgjbikdgmdgBdgCdgmbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbik
+bikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbFlajbcaVcaVcaVcaVdiFcaVcaVcaVdiGcaVcaVcaVcaVdiHbFlbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikaalabBaatabCabHaalbikbikbikbikbikbikaalaalaalbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikaahbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikdgmdgodgndgmbikbikabAdgmdgpdgrdgqdgmdgjbikbikdgmdgsdgtdgmbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbik
+bikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbFlajecaVcaVdiKdiJbFldiLdiMdiLbFlaWldiOcaVcaVcaVbFlbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikaahbikbikbikbikbikbikaalaalaalaalabuaatabIabJaalaalaalaalbikbikbikabKabLabLabKbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikdgmdgvdgudgmbikabAdgwdgydgxdgAdgzdgydgwdgjbikdgmdgBdgCdgmbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbik
bikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbFlcaVcaVdiPbFlaafbFlcaVdiRdiQbFlaafbFlcaVcaVcaVbFlbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikaalabMabNabOabPabQabRabSabTabUabVaalbikbikbikbikabKabLabWabKbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikdgmdgEdgDdgFbikdgHdgGdgydgydgIdgydgydgGdgJbikdgLdgKdgMdgmbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbik
bikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbFldiSdiUdiTbFlbikbFldiVdiVdiVbFlbikbFldiWdiYdiXbFlbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikaalabXabYabZacaacbaccacdaceacfacfaalbikbikbikbikbikabKabLabLabKbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikdgwdgNdgwbikbikdgOdgGdgydgPdgQdgydgydgGdgRbikbikdgwdgNdgwbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbik
bikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbFldiVdiVdiVbFlbikcVGdiZdjbdjadelbikbFldiVdiVdiVbFlbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikacgacgacgacgacgacgachaciacjackaclaalacmbikbikbikbikbikabKabLabLabKbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikdgwdgNdgwdgwdgwdgwdgwdgwdgwdgSdgwdgwdgwdgwdgwdgwdgwdgNdgwbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbik
bikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikcVGdiZdjbdjadelbikbikbikbikbikbikbikcVGdiZdjbdjadelbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikacgacnacoacpacqacracsacdaalaalaalaalbikbikbikbikbikbikbikabKabLabLabKactactactacuacvactactactabKabKabKabKabKbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikdgHdgNdgTdgTdgTdgTdgTdgTdgmdgUdgmdgTdgTdgTdgTdgTdgTdgNdgJbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbik
bikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikacgacwacxacyaczacAacBacCaalacDacEacEacEacEacEbikbikbikbikbikabKacFacGactacHacIacJacKacLacMactabLabLabLabLabLabKbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikdgVdgXdgWdgZanqdhadgmdgSdgwdgSdgwdgSdgmdhcdhbdhedhddgXdhfbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbik
bikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikaahbikbikbikbikbikbikbikbikbikbikacgacNacOacPacQacRacSacCaalacEacEacUacTacVacEacEacEbikbikbikbikabKacGactacWacXacYacXacXacZactadaadaadaadaadaadaabLadbbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikdgOdgXdgydgydgydhgdgmdgydgydgydgydgydgmdgydgydhhdgydgXdgRbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbik
-bikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikacgacgacgacgacgacgadcaddacEacEadeadgadfadiadhacEacEbikbikbikbikbikabKactadjadkadladmadnadoactadpadqadradsadtaduadvbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikdgmdhjdhidhldhkdhmdgmdhndgydgydgydhodgmdhqdhpdhsdhrdhjdgmbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbik
+bikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikacgacgacgacgacgacgadcaddacEacEadeadgadfadiadhacEacEbikbikbikbikbikabKactadjadkadladmadnadoactadpadqadradsadtaduadvbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikdgmdhjdhidhldhkdhmdgmdhndgydgydgydhodgmarWdgydhsdhrdhjdgmbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbik
bikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikaabaabaabaabaabaaladBadCacEadEadDadGadFadIadHadJacEbikbikbikbikbikbikactadKadLadMadNacXadOactadPadtadtadtadtaduadvbikbikbikbikbikbikbikaahbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikdgmdhtdhtdgwdgwdgwdgmdhudgydgydgydhvdgmdgwdgwdgwdhtdhtdgmbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbik
bikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikaabbikbikbikbikbikaabaalachacdacEadWadVadYadFaeaadZaebacEbikbikbikbikbikaesactaecaedadAaeeacXaefactaeiadtaejadtadtaduadvbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikdgLdhwdhwdgFbikbikdgmdhxdgydgydgydhydgmbikbikdgLdhwdhwdgFbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbik
bikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikaabaabaabbikaabbikbikbikaabaaladRacdacEaetadVadYadFaeaadZaevacEbikbikbikbikbikbikactaeIadLaewadNacXaexactaeyadtadtadtadtaezadvbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikdgmdhzdgydgydgydhydgmbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbik
@@ -8981,7 +8975,7 @@ bikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbi
bikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikacGacGafxacGacGbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikaeAafyafyafAaeAafyafyafAaeAaabaabbikbikadwadwaiOafFailailadTaatahTahNagvaiqaisahhamuaitaiuahOahVahPahXahWahYaifaibaiaamyamzamzaicaiCaidahAaieaieaieaieaieaieaieaieahAbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikagQbikbikbikaiIbikbikbikagQbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbik
bikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikacGbikaabbikaabbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikaeAafAafyaiJaeAafAafyaiKaeAamcaabaabaabaabadwagTaiOaigaiwaeEaatagXaiSagvaimaiUaiVaiWaiXaiYaihaijaiiajgajfahYaioaiyaixaiEaiDaiHaiGaiCaiLahAaieaieaieaieaieaieaieaieahAagQagQajjaabagQagQagQagQagQagQagQagQagQagQagQagQagQagQaabaabajkajlajmaabaabagQbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbik
bikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikaVydmddmkdmjdmldmddmddmmdmddmddmnbikbikbikbikbikbikbikbikbikafxaabajnaabafxbikbikbikbikbikbikbikbikbikbikaahbikbikbikbikbikbikbikaeAajoajpajqajrajoajpajqajsajtajtajtajtajtajtajuajuafdaiAagSafHakoagUajGajGajNahIajEajFajGaiRaiPaiMaiNaipaiTajaajwaixaiEajhajiaiGajMajvajOaieaieaieaieaieaieaieaieahAaabaabaabaabaabaabbikaabbikaabaabaabaabaabaabaabaabbikbikbikajkajPajmbikbikagQbikbikbikbikbikbikbikaahbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbik
-bikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikdmpdmodmrdmqdmtdmsdmsdmsdmvdmudmwbikbikbikacGacGacGafxafxaabaabbikajQbikaabaabafxafxacGacGacGbikbikbikbikbikbikbikbikbikbikbikbikaeAajRajSajTafyajUajVajWakcajtajbajeajcajAajyajDajuahDahCajJajxajLahHajBakjakkaklakmaiFajFaiRakiakaaiRajIaiRahUalhajKakbajYakpakdakzaiCakAaieaieaieaieaieaieaieaieahAaabakBakCakCakCakDakCakCakCakCakDakCakCakCakCakEaabbikbikbikajkajPajmbikbikagQbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbik
+bikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikdmpdmodmrdmqdmtdmsdmsdmsdmvdmudmwbikbikbikacGacGacGafxafxaabaabbikajQbikaabaabafxafxacGacGacGbikbikbikbikbikbikbikbikbikbikbikbikaeAajRajSajTafyajUajVajWakcajtbSoclqajcajAajyajDajuahDahCajJajxajLahHajBakjakkaklakmaiFajFaiRakiakaaiRajIaiRahUalhajKakbajYakpakdakzaiCakAaieaieaieaieaieaieaieaieahAaabakBakCakCakCakDakCakCakCakCakDakCakCakCakCakEaabbikbikbikajkajPajmbikbikagQbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbik
bikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikdmxdmodmzdmydmsdmAdmAdmAdmAdmAdmBbikbikbikacGbikbikaabbikaabbikbikajQbikbikaabbikaabbikbikacGbikbikbikbikbikbikbikbikbikbikbikbikaeAakFafyakGakHakIakJakKakLajtakMakNakOakOakPajZajuaivainaiBaizakrahHakWakXakYakZalaalbajdaknakwakuakqaksaktakTalBakSalcakUalealdaiCalfajOaieaieaieaieaieaieaieaieahAaabaloaabaabaabaloaabbikbikaabaloaabaabbikbikaloaabbikaabaabajkajPajmbikbikagQbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikaahbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbik
bikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikdmCdmodmEdmDdmAdmAdmAdmAdmGdmFdmwbikbikbikacGaabalpalpalpalpalpbikalqbikalpalpalpalpalpaabacGbikbikbikbikbikbikbikbikbikbikbikbikaeAalralsakGafyaltakJalualvajtalwalxalyalzakQakxajuampaiQakRaiZalEajzajBalFalGaklalHalIajFaliahPaljaljallalCalgalJajXakfakealMakeakhakgahAahAahAahAahAahAahAahAahAahAaabaloaabbikajkajlajmbikbikajkajlajmbikbikajkajlajmaabaabbikajkajPajmbikbikagQbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbik
bikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikaXhdmddmddmddmldmddmddmmdmddmddmIbikbikbikacGbikalSalTalTalTalTalUalValWalXalXalXalXalYbikacGbikbikbikamaalZaowanxambbikbikbikamcaeAaeAaeAamdamdamealKamgamdajuamfamiamjamkamhamlajualNajHammalQamnakvajGamsamtaXNamvaYjajGamXamDamqanlamYdoHaocaoNdoIasvaiCateauydoNalkahAamKamKamKamKamKbikbikbikbikaabaloaabbikajkajPajmbikbikajkajPajmbikbikajkajPajmbikbikbikajkajPajmbikbikagQbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbik
@@ -9033,9 +9027,9 @@ bikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbi
bikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbrcbltbltblubltbltbltblvbltbltbtnaabaInboibdFbokbgNbjObjObjObimbolbombonboobgNbopboqbjWblCborblCbosbotblCboubovbowbcobnbbncbndbiCbcobejbnfbngboxboybozboAboBbngboCboDboEbSVbyzbyzbyzbuVboGboHboIbnqboJboKboLboMboNboOboPboQbmgboRbnvboSboTboUboTboSbnvboVbmgboWboXboYboZbpabpbbpcbpdbnAbpebpfbpfbpgaMeaMeaMeaMebphbjfbphbpiaMeaURaMeaMeaUTaUTaUTaUTbplbpkbpkbpkbpkbpmbpJaVbbakbpnbakbpobpobakbpnbakaVbbnSbmFbmFbppbnTaRDaRDaRDaRDaRDbjvaRDaRDaRDaRDaQbbpqaQcaQcaQcaQcaQcaQcaQbaQbbprbpsbatbatbatbavbatbatddAbaAbaAbaAbaAbgKbqUddFbmKbmKbmKbmKbmKbmKbmKbmKbmKddGbqUbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbik
bikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikaLyaCuaKzaKzaKzaDEaDEaDEaDEaDEaDEbtobpubgNbgNbgNbgNbgNbgNbpvbgNbgNbgNbejbejbpxblCbpybpzbosbpAblCdlEbpCbpBbcobnbbncbndbecbcobejbnfbngbpDbpEbpFboAbpFbngboCbpGbpHbAibmubpKbpLbnmbpMbpNboIbpObpPbpQbpRbpSbpSbpRbpTbpUbmgbpVbnvbnvbpWbpXboTboSbnvbpYbmkbpZbqabqbbqcbqdbqebqbbqfbnAbqgbqhbqibqjbqkbqlbqmbqnbqnbqnbqnbqnbqnbqobqpbqqbqnbqnbqsbqnbqnbqnbqnbqnbqnbqnbqndcZbqubqvbqvbqvbqvbqvbqvbqwbqlbqxbqybqyaHkbqAbqBbqAbqCbqAbqDbqEbqFbqAbqGbqHbqIbqJbqKbqKbqKbqKbqKbqKbqKbqLbqMbqNbqNbqNbqNbqObqNbqPbKnddHbPfddIbiibPfdlbbmKbmKbmKbmKddKbmKddKbmKbmKbmKddGbdBbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbik
bikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbtpbtqbtqbtqbtqbwpbwpbtqbtqbxZbikaabaInaLAaJtbzPbzObzRbzQbzQbzQbzQbzSbzUbzTbcsbdVbBFbrhblCblCblCbribotblCbcobcobcobcobnbbrjbrkbrlbcobrmbrnbngbrobrpboAbpFbrqbngboCbrrbpHbAibpIbrsbrtbnmbrubpNboIbpObrvbrwbrxbrybrzbrAbpTbrBbmgbrCbpWbnvbrDbrEbrDbnvbpWbrFbnzbrGbqbbqbbqcbrHbqebqbbrIbnAbrJbqibqibqjbqkbqlbqnbqnbqnbqnbqnbqnbqnbrKbqnbqnbqnbqnbqnbqnbrLbrMbrMbrMbrMbrMbrMbrMbrMbrMbrMbrMbrMbrMbrMbrNbrObrPbqKbqKbrQbmFbmFbmFbmFbmFbmGbmFbmFbmFbmFbmFbmFbmFbmFbmFbmFbmFbmFbrRbmFbrSbrTbatbatbatbatbatbatbatddLbaAbgKbaAbaAbaAbqUddMddOddNbdBddPbdBddPbdBddQddMddObqUbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbik
-bikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbBGbDCbBHdjhbDDdjidjidjkdjjbtqbxZbjNaInaInaKBbrWbrXbrYbrXbrXbrXbrXbrZbsabsbbcsbcsbscbsdblCbmUbsebsfbpAblCbsgbshbsgbcobcobcobcobsibcobsjbskbngbslbsmbpFbsnbsobngboCbnmbspbAibpIbpIbsqbnmbsrbpNboIbpObWDbrwbrxbstbsubrAbpTbsvbmgbswbsxbnvbsybszbsAboSbsBbsCbsDbsEbsFbsGbsHbsIbsJbqbbsKbnAbsLbsMbqibqjbqkbqlbqnbsNbqnbqnbqnbqnbsObsPbsPbsPbsPbsQbqnbqnbqnbqnbsRbqnbsNbsSbqnbsTbsUbsVbqnbsWbsXbsXbsYbsZbtabtbbmFbmFbmFbmFbmFbmFbmFbtcbtdbmFbmFbmFbmFbmFbmFbmFbmFbmFbmFbmFbtebtfbtfbtgddSddRddUddTddTddTddTddVddWbaAaabbikbikaabbqUddXddZddYdeabqUbikbqUdecdebdecdecbqUbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbik
+bikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbBGbDCbBHdjhbDDdjidjidjkdjjbtqbxZbjNaInaInaKBbrWbrXbrYbrXbrXbrXbrXbrZbsabsbbcsbcsbscbsdblCbmUbsebsfbpAblCbsgbshbsgbcobcobcobcobsibcobsjbskbngbslbsmbpFbsnbsobngboCbnmbspbAibpIbpIbsqbnmbsrbpNboIbpObWDbrwbrxbstbsubrAbpTbsvbmgbswbsxbnvbsybszbsAboSbsBbsCbsDbsEbsFbsGbsHbsIbsJbqbbsKbnAbsLbsMbqibqjbqkbqlbqnbsNbqnbqnbqnbqnbsObsPbsPbsPbsPbsQbqnbqnbqnbqnbsRbqnbsNbsSbqnbsTbsUbsVbqnbsWbsXbsXbsYbsZbtabtbbmFbmFbmFbmFbmFbmFbmFbtcbtdbmFbmFbmFbmFbmFbmFbmFbmFbmFbmFbmFbtebtfbtfbtgddSddRddUddTddTddTddTddVddWbaAaabbikbikaabbqUddXddYddYdeabqUbikbqUdecdebdecdecbqUbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbik
bikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbBGbDCdjldjidjidjidjidjidjidjideHdjnaGddjnaJrbtrbrXbtsbttbtubtvbtwbrZbtxbtybtzbtzbtAbtBblCblCblCbosbtCborbcsbcsbcsbcsbtDbejbejbskbejbsjbskbngbtEbtFbtGbtHboAbngbtIbnmbtJbAibpIbpIbtKbtLbtMbpNbtNbnqbtObtPbpRbpRbpRbpRbpTbtQbmgbtRbtSbmgbmgbmgbmgbmgbmgbmgbnzbnAbqrbtUbtVbtWbtXbtYbtZbnAbvubuabuabucbucbucbucbucbucbucbudbudbuebufbugbugbufbuebudbudbuhbuhbuhbuhbuhbuhbuibuibujbuibuibuibuibuibukafkbumbunbmFbmFbuobuobupbupbupbupbupbuqbtfbtfbtebtfbmFbtfbtfbtfbtfburbusbusbusbusdedbuubuubuubuubuubuubuubuubuubikbikbikbikbdBddYddYddYdeebqUbikbqUdefdebdebdegbqUbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbik
-bikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbBGbDCdjodjpdjpdjidjpdjpdjpbtqdjqaInaInaInaKBbuvbrXbuwbuxbuxbuxbuybrZbejbuzbuAbuBbuCbuDblCbmUbuEbosbuFborbuGbuHbuIbuJbuKbuLbuLbuMbuLbuNbuObngbuPbuQbuRbuSbuTbuUdngbyzdnidnhbpIbuXbuYbuZbtMbpNbvabnqbvbbvcbvdbvebvfbvgbvhbnqbnqbvibvjbvkbvlbvmbvlbvnbvjbikbvobnAbvpbvqbvrccIbtXbqbbvtbnAbxebvwbxfbucbzcbvybvzbvAbvBbvCbvDbvEbvFbvGbvHbvHbvGbvIbvJbvKbuhbvLbvMbvNbvObuhbvPbvQbvRbvSbvTbvUbvUbvVbukafNbvXbvYbvZbvYbwabwabupbwbbwcbwdbupbwebwfbwebupbwgbtfburbusbwhbwibwhbusbwjbwkbusdeicngbxXbwobikbikbikbikbikbikbikbikbikbikbqUddXddZddYdejbqUbikbqUdekdekdekdekbqUbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbik
+bikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbBGbDCdjodjpdjpdjidjpdjpdjpbtqdjqaInaInaInaKBbuvbrXbuwbuxbuxbuxbuybrZbejbuzbuAbuBbuCbuDblCbmUbuEbosbuFborbuGbuHbuIbuJbuKbuLbuLbuMbuLbuNbuObngbuPbuQbuRbuSbuTbuUdngbyzdnidnhbpIbuXbuYbuZbtMbpNbvabnqbvbbvcbvdbvebvfbvgbvhbnqbnqbvibvjbvkbvlbvmbvlbvnbvjbikbvobnAbvpbvqbvrccIbtXbqbbvtbnAbxebvwbxfbucbzcbvybvzbvAbvBbvCbvDbvEbvFbvGbvHbvHbvGbvIbvJbvKbuhbvLbvMbvNbvObuhbvPbvQbvRbvSbvTbvUbvUbvVbukafNbvXbvYbvZbvYbwabwabupbwbbwcbwdbupbwebwfbwebupbwgbtfburbusbwhbwibwhbusbwjbwkbusdeicngbxXbwobikbikbikbikbikbikbikbikbikbikbqUddXddYddYdejbqUbikbqUdekdekdekdekbqUbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbik
bikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikdjrbtqbtqbtqbtqbtqbtqbtqbtqdjqbikbikaInbwqbdFbwrbrXbwsbrXbwtbuxbwubwvbrZbwwbwxbwybwzbuDblCblCblCblCblCblCbwAbwBbwCbwDbwEbngbngbngbngbngbngbngbwFbngbngbngbwGbngbwHbwIbwJbpIbpIbpIbwKbtLbwLbpNbwMbnqbIDbvcbnrbnrbnrbnqbwObnqbwPbwQbwRbwSbwTbwUbwVbwWbwXbwYbwZbnAbxabqbbxbbxcbtXbxdbqbbnAbzbbxgbANbucbxhbxibxjbxkbxlbxmbxnbvHbvHbvHbvHbvHbvHbvHbvHbxobxpbxqbxrbxsbxtbuhbxubxvbxwbxxbxybxzbxvbxAbukbDdbvXbxCbxDbxEbxFbxFbxGbxHbxIbxJbxKbxLbxMbxNbupbxObxPbxQbusbxRbxSbxTbLSbxUbxVbusbxWbxXbxYbwobikbikbikbikbikbikbikbikbikbikbDybtldemdemdemdenbikdeodepdepdepbtlbDzbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbik
bikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikaLyaCuaKzaKzaInaInaInaInaInaInaInaKBaJrbyabrXbybbycbydbyebyebyfbygbyhbyibyibyjbykbtzbtzbtzbtzbtzbtzbylbymbymbynbyobngbypbyqbyrbysbytbyubyvbywbngbyxbyybyzbuVbtLbwJbpIbpIbyAbnmbnmbyBbyCbyDbyEbyFbyGbyHbyIbyJbyKbyLbyMbyNbyObwXbyPbyQbyPbyQbyRbwXbwYbySbyTbyUbyVbyWbyXbyYbyZbzabyTbAObvwbvwbucbzebzdcSCbzfbzgbucbxnbvHbvHbvHbvHbvHbvHbvHbzhbzibzjbzkbzlbxqbzmbuhbznbzobzpbxxbxAbxzbzqbzrbukbIbbztbzubzvbzvbzwbzxbzybzzbzAbzAbzAbzBbzAbzCbzDbzEbzFbzGbzHbzIbzJbzKbzKbzKbzLbusbzMbxXbzNbwobikbikbikbikbikbikbikbikbikbikbikbDyderderderbDzbikbDyderderderbDzbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbik
bikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikaIndjtdjsdjuaIoaIoaIobdFaJraJrbrXbzVbrXbzWbzXbzYbzZbrXbcsbAabAabAbbAcbAbbAbbAbbAcbAbbcsbcsbngbngbngbAdbngbAebAebAebAebAebAebyvbAfbAgbAhbAibAjbAkbAlbAmbAnbAobApbAqbArbAsbAtbAubAvbAwbAwbAxbAybAzbAAbABbACbADbAEbvjbAFbwVbAGbwTbAHbvjbikbAIbAJbAKbALbAJbAJbAJbAJbAMbnAbCBbvwbCCbAPbAQbARbASbATbAUbucbAVbAWbAXbAYbAZbBabBbbBcbvHbBdbuhbBebzlbBfbBgbuhbBhbBibxwbxxbxAbxzbxvbxAbukbDdbvXbBjbBkbBlbBmbBnbBobBpbBqbBrbBsbBtbBubKpbupbBwbBxbBybusbBzbBAbBBbxUbBCbKwbusbzMbxXbBEbwobikbikbikbikaabaabaabaabaabaabaabaabaabbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbik
@@ -9049,11 +9043,11 @@ bikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbi
bikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikdkhdjYdjHdjHdjHdjHdjHdkidjHdjHdjFdjydjydjydjydjydjydkjbikbikbikbikbikbikbikbikbikbikdewdevdevdevdevdevdeEdeDdeGdeDbNlbNmbNnbNnbNnbNnbNnbNobNpbNqbICbWSbngbNsbNtbNubNvbNwbNxbNybNybNybNzbNzbNAbvvbNBbNCbHmbCpbNDbNEbNFbKvbNGbKzbNHbNIbNJbNKbNLbFNbNMbMabikbikbikbHybNNbNObNPbNQbMebMfbMgbHybPibNUbQObPjbNVbNWbNXbNYbNZbOabObbOcbKUbKUbOdbOebKUbKUbJkbKZbOfbOgbOhbOibOjbOkbLdbOlbOmbOnbOobOpbOqbOrbOrbOsbOtbOubOvbOwbJVbJVbOxbJVbOybJVbOzbJVbOAbOBbOBbOCbODbOEbOFbOGbOHcsjbOJbOKbOLbNabOMcxHbikbikbikbGxbORbJFbOPbOQbGzbOObNibGxbikbikaabbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbik
bikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikdkkdjydkmdkldkodkndjHdjFdjHdjHdjFdjHdkqdkpdkrbikbikbikbikbikbikbikbikbikbikbikbikbikdewdevdevdevdevdevdewbFnbBRbBRbngbngbBRbBRbBRbBRbBRbngbngbBRbBRbBRbngbOVbOVbOVbOWbOVbNzbOXbOYbOZbPabNzbDXbvvbPbbPcbPcbCpbCpbCpbCpbCpbPdbKzbISbIRbPebNKbPgbPhbMabMabvjbvjbvjbHybHzbHybHybHybHybHybHybHybQPbvwbQQbPkbPlbPmbPnbPlbPlbPobPpbPqbPrbPsbPtbPubPvbPwbMqbPxbPybPzbPAbPBbPCbPDbRpbPFbPGbPHbPIbPJbPKbPLbTdbXBbLhbLhbPNbPObPNbPPbPQbPPbPPbPPbPRbPSbPTbPTbPUbPVbPWbPXbOFbPYbPZbQabQbbQcbQdbNabOMcxHbikbikbikbGxbNfbNgbGxbGzbGxbGxbGzbGxbikbikaabbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbik
bikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikdjydjydjydjydjydjydjFdjOdjHdksdjHdkudktdkvbikbikbikbikbikbikbikbikbikbikbikbikbikdeJdeIdevdeKdevdeLdeMbikbikbikbikbikbikbikbikbikbikbQgaabbikbikbikbikbOVbQhbQibQjbQkbNzbQlbQmbQnbQobNzbDXbvvbQpbQqbQrbQsbQtbQubQvbQwbQxbQybQzbQAbQBbQCbQDbQEbQFbQGbQHbQIbQJbQKbQLbQMbQRbuabQSbvwbShbSgbSibvwbSjbPlbQTbQUbQVbQWbQXbJkbQYbQZbRabRbbRcbRdbRebRfbRgbRhbRibLbbRjbOibRkbRlbRmbRnbRobRqbPEbSFbMHbMHbMHbUzbLhbPNbRsbRtbRubRvbRwbRxbRybPPbRzbRAbRBbPTbPTbRCbPWbRDbREbWHbRGbRHbRIbRJbRrbNabRLbwobikbikbikbGxbGxbGxbGxbikbikaabbikbikbikbikaabbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbik
-bikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikdjxdjydkxdkwdkydkxdkzdjFdjHdjHdjFdjHdkBdkAdkCbikbikbikbikbikbikbikbikbikbikbikbikbikdmideNdePdePdePdeNdmHbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbOVbRMbRNbRObRPbNybRQbRRbRSbRTbNzbDXbRUbRVbvvbvvbFXbRWbubbQNbQMbRXbRYbRXbRZbSabSabSbbScbSdbSabSabSebSabSfbSabQMbQRbuabSlbSkbTJbTIbTLbTKbvwbPlbSmbQUbSnbSobSpbJkbSqbSrbSsbStbSubSvbSwbSxbJkbSybSzbLbbSAbSBbSBbSCbSDbSEbSHbSGbPEcgQbSIbMHbSJbSKbLhbPNbSLbSMbSNbSObSPbSQbSRbPPbSSbRAbSTbSTbPTbSUdnjbSWbSXbSYbSZbTabTbbTcbRKbNabOMbwobTebikbikbikbikbikbikbikbikaabbikbikbikbikaabbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbik
+bikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikdjxdjydkxdkwdkydkxdkzdjFdjHdjHdjFdjHdkBdkAdkCbikbikbikbikbikbikbikbikbikbikbikbikbikdmideNdePdePdePdeNdmHbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbOVbRMbRNbRObRPbNybRQbRRbRSbRTbNzbDXbRUbRVbvvbvvbFXbRWbubbQNbQMbRXbRYbRXbRZbSabSabSbbScbSdbSabSabSebSabSfbSabQMbQRbuabSlbSkbTJbTIbTLbTKbvwbPlbSmbQUbSnbQVbSpbJkbSqbSrbSsbStbSubSvbSwbSxbJkbSybSzbLbbSAbSBbSBbSCbSDbSEbSHbSGbPEcgQbSIbMHbSJbSKbLhbPNbSLbSMbSNbSObSPbSQbSRbPPbSSbRAbSTbSTbPTbSUdnjbSWbSXbSYbSZbTabTbbTcbRKbNabOMbwobTebikbikbikbikbikbikbikbikaabbikbikbikbikaabbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbik
bikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikdjZdjYdkDdkDdkDdkDdkDdkEdjHdjHdjFdjydjydjydjydjydjydjBbikbikbikbikbikbikbikbikbikbikbikdeRdeSdeSdeSdeTbikbikbikbikbikbikbikbOUbOTbQebOTbQfbikbikbikbOVbOVbOVbTjbTkbRObTlbNybTmbQnbTnbTobNzbDXbTpbTqbTrbTsbTtbTubTvbTwbTxbTybTzbTAbTBbTCbTCbTDbTEbTEbTEbTEbTEbTEbTFbTGbTHbTNbTMbTPbTOdlidjmdlkdljdllbPlbTQbQUbQVbTRbSpbJkbSqbSrbTSbTTbTUbTVbTWbTXbJsbTYbTZbLbbLbbUabUabLbbSDbLdbUbbUcbLgbUdbUebUfbUgbUhbLhbPNbUibUjbUkbUlbUmbUnbUobPPbUpbRAbSTbSTbPTbUqbUrbUsbUtbUubUvbUwbUxbUybVObNabOMbUAbUBbUAbUCbUDbUCbUCbUCbikbikbikbikaabaabaabaabbikbikbikbikbikbikbikbikbikbikbikbikaabaabaabaabaabbikbikbikbikaabaabaabaabbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbik
bikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikdkhdjYdkDdkDdkDdkFdkGdjFdjHdjHdjFdjHdjHdjHdkHdjHdkIdjFbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbTgbTfbTibThbTgbUIbUIbUIbOVbUJdpmbUKbULbUMbUNbUObUPbUQbUQbURbNzbUSbUTbUUbUVbUVbUWbUXbUYbUVbUZbUZbVabVbbONbUZbUZbVdbQMbQMbVebVfbVfbVfbVgbVhbVfbVfbVibVjbVkbVkbVlbVkbVmbVnbVkbVobVpbVqbPlbVrbVsbSqbVtbVubVvbVwbVxbVybVubJkbSybVzbVAbVBbVCbVDbVEbVFbVGbVHbVIbVJbVKbVLbVMbVNbPMbLhbPNbPNbVPbVQbVRbVSbVRbVTbPPbVUbVVbVWbVWbPTbVXbVYbVZbNabNabNabNabNabNabNabNabOMbUAbWabWbbWcbWdbWdbWebUCbikbikbikbikbikbikbikaabbikbikbikbikbikbikbikbikbikbikbikbikaabbWfbWfbWfbWfbWgbWgbWhbWhbWhbWhbWiaabaabbikbikbikaahbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbik
-bikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikdkkdjydkKdkJdkDdkLdkMdjFdjHdjHdkNdjHdjHdjHdkOdjHdkPdjFbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbQebUEbUFbUEbQebUIbWmbWlbOVbWnbTkbWpbWqbWrbWsbNzbWtbWubWvbWwbNzbUTbUTbWxbUVbWybWzbWAbWBbWCbUZdmbbWEbWFbWGcAzbUZbWIbWJbWKbVfbWLbWMbWObWNbWPbWQbWRceLbWTbWUbWVbWWbWXbWYbWZbXabXbbXcbXdbXebXfbXgbXhbSrbXibXjbXkbXlbXmbXnbJsbXobXpbXqbXrbVDbXsbXsbXtbXubLgbXvbXwbXxbXybXzbXAdoEbLhbXCbXDbXEbXFbXEbXEbXGbXHbXIbXJbXKbXLbXMbPTbXNbXObPXbEXbxXbXPbXQbXRbXRbXQbXRbXSbUAbXTbXUbWcbWdbXWbXVbUCbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbWfbXXbXYbXXbWgbWhbWhbXZbYabXZbWhbWhaabaabbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbik
-bikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikdkkdjydkQdkDdkDdkRdjFdjHdjHdjFdkSdjHdjHdkUdkTdjydkjbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbTgbUGbUEbUEdeycOWbTkbTkdeAbZAbTkbTkbWqbYhbYibNzbNzbNzbNzbNzbNzbYjbUTbYkbYlbYmbYnbYnbYnbYobUZbYpbYqbYqbYqbYrbYsbYtbYubYvbYwbYxbYybYzbYAbYBbYCbVfbVibYDbVkbYEbYFbYGbYHbYIbVkbSmbQVbSnbSobYJbYKbYLbYMbYNbYObYPbYQbYRbVubYSbYTbYUbYVbYWbYXbYYbYZbZabZbbLgbLgbLgbLgbLgbZcbZdbZebLhbZfbXEbXEbZgbZhbXEbZibZjbZkbZlbRAbZmbZmbPTbPVbZnbPXbEXbUAbZobUAbUAbUAbUAbUAbUAbUAbZpbZqbUCbZrbZtbZsbUCaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacbZubXXbXXbZvbWhbWhbXZbXZbZwbXZbXZbWhbWhaabaabbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbik
+bikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikdkkdjyddZdkDdkDdkLdkMdjFdjHdjHdkNdjHdjHdjHdkOdjHdkPdjFbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbQebUEbUFbUEbQebUIbWmbWlbOVbWnbTkbWpbWqbWrbWsbNzbWtbWubWvbWwbNzbUTbUTbWxbUVbWybWzbWAbWBbWCbUZdmbbWEbWFbWGcAzbUZbWIbWJbWKbVfbWLbWMbWObWNbWPbWQbWRceLbWTbWUbWVbWWbWXbWYbWZbXabXbbXcbXdbXebXfbXgbXhbSrbXibXjbXkbXlbXmbXnbJsbXobXpbXqbXrbVDbXsbXsbXtbXubLgbXvbXwbXxbXybXzbXAdoEbLhbXCbXDbXEbXFbXEbXEbXGbXHbXIbXJbXKbXLbXMbPTbXNbXObPXbEXbxXbXPbXQbXRbXRbXQbXRbXSbUAbXTbXUbWcbWdbXWbXVbUCbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbWfbXXbXYbXXbWgbWhbWhbXZbYabXZbWhbWhaabaabbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbik
+bikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikdkkdjydkQdkDdkDdkRdjFdjHdjHdjFdkSdjHdjHdkUdkTdjydkjbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbTgbUGbUEbUEdeycOWbTkbTkdeAbZAbTkbTkbWqbYhbYibNzbNzbNzbNzbNzbNzbYjbUTbYkbYlbYmbYnbYnbYnbYobUZbYpbYqbYqbYqbYrbYsbYtbYubYvbYwbYxbYybYzbYAbYBbYCbVfbVibYDbVkbYEbYFbYGbYHbYIbVkbSmbQVbSnbQVbYJbYKbYLbYMbYNbYObYPbYQbYRbVubYSbYTbYUbYVbYWbYXbYYbYZbZabZbbLgbLgbLgbLgbLgbZcbZdbZebLhbZfbXEbXEbZgbZhbXEbZibZjbZkbZlbRAbZmbZmbPTbPVbZnbPXbEXbUAbZobUAbUAbUAbUAbUAbUAbUAbZpbZqbUCbZrbZtbZsbUCaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacbZubXXbXXbZvbWhbWhbXZbXZbZwbXZbXZbWhbWhaabaabbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbik
bikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikdkkdjydkWdkVdkXdjFdjHdkYdjFdkZdladjHdjydjydkjbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbQebUFbUFbUFbQebUIbYfbYebZzbZAbTkbTkbZBbZCbZDbZEbZFbZFbZFbZGbUTbUTbUTbWxbUVbZHbYnbZIbYnbZJbUZbYpbYqbZKbYqbZLbUZbZMbZNbZObVfbZPbZQbZRbZSbZTbZUbZVbZWbZXbZYbZZcaacabcaccadbVkbTQbQVbQVcaebYJbYKcafcagcahbXjcaicajcElcalcamcancaocapcaqcarcIfcasbXscatbVAcaucavcawcaxcaycazcaAbZjbZfcaBbXEbXEbXEcaCcaDbZjbZkcaEbRAbZmbZmbPTcaFcaGbPXbEXcaHcaIcaJbUAcaKcaLcaMcaNcaOcaPcaQbUCcaRcaScaTbUCbUAbUAbUAbUAbUAbUAbUAbUAbikbikbikbikbikaabbikbikbikbikbikbikbikcaUbWhbZubWhbWhbXZbXZbXZbXZbXZbXZbXZbWhbWhaabaabbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbik
bikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikdkkdjydjydjydjydjydjydjydjydjydjydkjbikbikbikbikbikbikbikbikbikbikbikbikbikaabaabaabaacbUTcjMcjMbUTcjMcjMbUTbikbikbTgbWjbYbbWkbTgbUIbUIbUIbOVcaYdpncaZcaZcaZbOVbOVbUTcbbcbaccAcbcbUTcbdcbebUVbZHbYnbYnbYncbfbUZbYpbYqbYqcbgcbhcbicbjcbkcblbVfbVfbVfbVfbVfcbmbVfbVfcbncbobVkbVkcbpbVkbVnbVkbVkbPlcbqcbqbPlccicbrcbscbtcbucbvcbwcbxcbycbzcbAcbBcaocapcbCcbDcbEcbFcbGcbHbVAcbIcbJcbKcbLcbMcbNcbOcbPcbQcbPcbRcbRcbRcbPcbScbPcbPcbTcbUbZmbZmbPTcbVbZnbPXcbWcbXcbYcbZccaccbccccccccdcceccfccgcckccjcdqcclcfeccmccnccoccpccqccrccscctaabaabaabaabaabaabaabaabbikbikbikbikbikbWgbWhccuccvccvbXZbXZbXZbXZbXZbXZbXZbXZbWhbWhaabaabbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbik
bikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikaabbikbikbUTccBcqsbUTccBcqsbUTbikbikbYcbOTbYgbOTbZxbikaabbikbOVbOVbOVbOVbOVbOVbOVclabUTcuRcsuccCccDbZFccEccFbUVccGccHdmcbYnccJccKccLccMccNccOccPbUZccQccRccSccTccUccUccUccUccVccWccXccYccYccZccZcdacdbcdcbVibPlcddcdecdfcdgcdhbYKcdicbtcdjcdkcdlcdmbSwcdncdocdpcffcdrcdrcdscdrcdrcdrcdtbVAcducdvcdwcdxcdycdzcdAcbPcdBcdCcdDcdEcdFcdCcdGcdHcdCcdIcdJbRBbPTbPTcdKcdLcdMcdNcdOcdPcdQcdRcdScdTcdUcdVcdWcdXcdYcdZceacebceaceccebcebcebcedceecefcegcehaabbikbikbikbikaabbikbikbikbikbikbikbikbWhbWhceibXZbXZbXZbXZbXZbXZbXZbXZbXZbXZbXZbWhbWhaabaabbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbik
@@ -9062,7 +9056,7 @@ bikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbi
bikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikaabaacaaccjMcqscqscqscqsdoadnxcqscqscuRdnpdnpdowdnpdnpdnpdnpdnpdnpdnpdnpdnpdnpdnpdnpcsubUTchocfQchpbUTcfSchrchrchrchrchrchrbUZbUZbUZbUZbUZbUZbUZchschtchucWpchwchxchychychzchAcglbGybGychBchCchDbGybGybGycqOchFchGceOchHchIchJcgEchKchLchMbSqchLchNcfdcfdcfdcjncjlcjlcjlcjlckacgIbSqclPchPchQchRchSchTchUclQcbPchWchXcfrchYcfrchZciacibciccidciecifbBxcigcfybZncihbEXbFeciicijcikbwobxXbxXbUAcilcimcinciocipciqcirciscitciucivbUAciwciycixcizbikbikbikbikaahbikbikbikbikbikbikbikbikciAbXXbXXbXXbXXbXXbXXbXXciBciCbXZbXZbXZbXZciDbYabWhaabbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbik
bikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikaabaacaabaabaaccjMdnrdnqdnscqscqsdoxcqscqsdnobUTbUTbUTbUTbUTbUTcekbUTbUTbUTbUTdntdntdntdntdntdntdntdntdntbUTcfScejbikbikbikbikciEbaTciGciHciIciJciKciLciMciNcmPciPciQciRciSciSciTciUciVciWciWciWciWciXciWbGybGybPlciYciZcjacjbcjccjdchScjecjfcjgcjhcjicjjcjkcjlcfdcnicjpcjpcjpcjpckNclSckUcnjcjqcjrcjscjtcbAcwncjvcbPcjwcjxcjycjzcjAcfrcjBcbPcbPbEXcjCbEXbEXbEXcjDcjEcjFbEXbxXciicjGcjHbwobwobwobUAbUAbUAbUAbUAbUAbUAbUAbUAbUAbUAbUAbUAbUAbUAbUAbUAbikbikbikbikbikaabbikbikbikbikbikbikbikbWhccvccvccvccvccvccvcjIbXZccuccvcjJbXZbXZbXZbXZbWhaabbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbik
bikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikaabbUTcjKcjKcjKcjKcjKcjKcjLcjKdnodnubUTcqsdoydnwdnycqsdnydnvdnzdnwdntdnAdnAdntdnBdntdnDdnCdntcqscelcjMbikcjNcjOcjPcjQcjRcjScjTcjUcjVcjWcjXcjYcjZcosckbckcckdckeckfckgckhciVckickjckjckjckkciWbGybGycklcklcklcklckmcklckncknckocklcklckpcklckqckrckscktcksclZaPKcmacmmcmlcmocmnckzckAckBckCckDckEckFcdccbPcbPckGcbPckHcbPckIckJckKcgnckLckMckvckOckPckQckRckSckPbxXciickTbxXbxXckVckWckXchabxXbxXbxXbxXbxXbxXbxXckYckZcxHbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbWhbXZbXZbXZbXZbXZbXZcfNbXZcjJbXZbXZbXZbXZbXZbWhbWhaabbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbik
-bikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikdnEclbclbclbclbclbclbclccldcleclfclgclhclicjLdnocnRbUTcqsdozdnwcqscqscqsdnvcwNdnwdntdnAdnFdnCdnCdnGdnCdnHdntcljcelcjMbikclkcllclmclnclocjSclpclqclrclsciLcltcgdcoaciPcluchyclvchyclwclxclyclzclAclAclAclBciWbGybGycklclCclDclEclFclGclHclHclIclJclKclLclMclNclOcotcfhcpwcmpcmrcmqctbcsZcuoctcckDclVclWclXckzclYcmtcmscmbcmbcmccmdcmecmfcmgcmhcmfcmfcmfcmicmfcmfcmjcmucnpcnlcqRcoXcrGcqScrHcrHcrIcrHcrHcrHcrHcrJcrKcrHcrHcrHcrMcmvbxXcxHbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbWhbWhceibXZbXZbXZbXZbXZbXZbXZbXZbXZbXZbXZbWhbWhaabaabbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbik
+bikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikdnEclbclbclbclbclbclbclccldcleclfclgclhclicjLdnocnRbUTcqsdozdnwcqscqscqsdnvcwNdnwdntdnAdnFdnCdnCdnGdnCdnHdntcljcelcjMbikclkcllclmclnclocjSclpdhpclrclsciLcltcgdcoaciPcluchyclvchyclwclxclyclzclAclAclAclBciWbGybGycklclCclDclEclFclGclHclHclIclJclKclLclMclNclOcotcfhcpwcmpcmrcmqctbcsZcuoctcckDclVclWclXckzclYcmtcmscmbcmbcmccmdcmecmfcmgcmhcmfcmfcmfcmicmfcmfcmjcmucnpcnlcqRcoXcrGcqScrHcrHcrIcrHcrHcrHcrHcrJcrKcrHcrHcrHcrMcmvbxXcxHbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbWhbWhceibXZbXZbXZbXZbXZbXZbXZbXZbXZbXZbXZbWhbWhaabaabbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbik
bikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikcmwcmxcmxcmxcmxcmycmzcmAcmBcmCcmCcmDcjKdnocqscekcqscqscqscqscqscqscqscqscqsdntdntdnCdnIdnCdntdnCdnIdntcmEcfScjMbikclkcmFcmGcmHcmIcmJcmKcmLcmIcmIcmMcmNcmOcpxcmQcmQcmRbHtchycmTcmUclyclAclAclAclAcmVciWbGybGycklcmWcmXcmYcmZcnacnbcnbbzsbvWbulbxBclHcnhcklcqQcfdcrLcjpcwscvxcwEcwCcxNcxIckDcnmcnncnockDbJGcumctecnqcnqcnqcnqcnqcnrcnscntcnucnvcnvcnwcnwcnvcnxcnycnzcnAcnBcnCcnDcnEcnCcnCcnCcnCcnCcnCcnCcnCcnCcnCcnCcnCcuncnFcnGcxHbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikcaUbWhbWhchlchlbXZbXZbXZbXZbXZbXZbXZbXZbWhbWhaabaabbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbik
bikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikcnHcnIcnJcnKcnJcnLcnMcnNcnOcnPcnQcjKdnobUTbUTdnJcjMcjMcjMcjMcjMcjMcjMdnKdntdnCdnCdnCdnCdnLdnCdnCdntcnRcelcjMbikclkcnScnTcnUcnVcjScnWcnXcnYcnZciLcltcgdcbkchqcgfcoccodciPciPciPcoecofclAclAcogcohciWbGycoicklcojcokcolcomcomcomconcoocomcomcopclHcoqcorcrNcfdcupcjpcxVcxUcxVcxVcxNcEickDcowcoxcoyckDcozcuscoicoAcoAcoAcoAcoAcoDcoDcoDcoAcoAbikbikbikbikckPcoEcoFcoGcnCcoHcoIcoJcoKcoLcoMcoNcoOcoPcoQcoRcoScoTcoUcnCcuncoWcvtcoYcoZcoZcoZcoZcoZcoZcoZcoZcoZcoZcoZcoZcoZcoZcoZcoZcoZcoZcpacpbbWhbZubWhbXZbXZbXZbXZbXZbXZbXZbWhbWhaabaabbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbik
bikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikcnHcpccpdcpecpfcmBcpgcphcpicmBcpjcpkdnMchobUTcqscjMbikbikbikbikbikcjMcqsdnldnAdnOdnCdnCdnCdnCdnPdnNcplcpmcjMbikcpncjOcpocjQcppcjScjScpqcprcpscptcpucpvcwqchqcgfcpycpzcpAcpBcpCciVcpDclAclAclAcpEciWbGybGycpFcpFcpGcpHcpIcpIcpIcyFcpJcpJcpJcpKcpFcpGcpMcqQcfdcrLcEjbjVcEYdbndbmcxNclRckDcoucpNcovckDbGycuscoAcoAaabaabbikbikbikbikbikbikbikbikbikbikbikcpRcpScpTcpUcpVcpWcpXcpXcpYcpXcpXcpXcpXcpXcpZcqacqbcqccqdbwocvvbXSbwobwoaabbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbWhcqhcqicqjbWhbWhbXZbXZcqkbXZbXZbWhbWhaabaabbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbikbik
diff --git a/_maps/map_files/cyberiad/z2.dmm b/_maps/map_files/cyberiad/z2.dmm
index 41715794c29..c644a9afd3d 100644
--- a/_maps/map_files/cyberiad/z2.dmm
+++ b/_maps/map_files/cyberiad/z2.dmm
@@ -688,6 +688,7 @@
"nl" = (/turf/unsimulated/wall/fakeglass{tag = "icon-fakewindows2 (NORTH)"; icon_state = "fakewindows2"; dir = 1},/area/trader_station/sol)
"nm" = (/obj/machinery/light{dir = 4},/turf/unsimulated/floor{tag = "icon-floor"; icon_state = "floor"},/area/trader_station/sol)
"nn" = (/obj/docking_port/stationary/transit{dir = 8; dwidth = 2; height = 11; id = "trade_sol_transit"; name = "trade_sol in transit"; turf_type = /turf/space/transit/horizontal; width = 5},/turf/space/transit/horizontal,/area/space)
+"no" = (/obj/machinery/sleeper{dir = 4},/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/centcom/evac)
"oB" = (/turf/unsimulated/wall/fakeglass{tag = "icon-fakewindows (WEST)"; icon_state = "fakewindows"; dir = 8},/area/syndicate_mothership)
"oC" = (/turf/unsimulated/wall/fakeglass{tag = "icon-fakewindows (EAST)"; icon_state = "fakewindows"; dir = 4},/area/syndicate_mothership)
"oH" = (/obj/structure/table,/obj/item/weapon/storage/fancy/crayons,/obj/item/weapon/storage/fancy/crayons,/turf/unsimulated/floor{icon_state = "freezerfloor"; dir = 2},/area/syndicate_mothership)
@@ -1069,8 +1070,6 @@
"zV" = (/obj/structure/grille,/obj/structure/window/full/shuttle,/turf/simulated/floor/plating,/area/centcom/evac)
"zW" = (/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/centcom/evac)
"zX" = (/obj/structure/grille,/obj/structure/window/full/shuttle{icon_state = "15"},/turf/simulated/floor/plating,/area/centcom/evac)
-"Aj" = (/obj/machinery/sleeper/upgraded,/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/centcom/evac)
-"Ak" = (/obj/machinery/sleep_console{dir = 8},/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/centcom/evac)
"Al" = (/obj/machinery/door/airlock/hatch{name = "Infirmary"; req_access_txt = "0"},/turf/simulated/shuttle/floor{tag = "icon-floor2"; icon_state = "floor2"},/area/centcom/evac)
"Aw" = (/turf/unsimulated/wall,/area/centcom)
"AD" = (/obj/machinery/vending/wallmed1{name = "Emergency NanoMed"; pixel_x = -30; pixel_y = 0; req_access_txt = "0"},/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/centcom/evac)
@@ -1537,9 +1536,9 @@ aNaNaNaNaNaNbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbW
aNaNaNaNaNaNbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNwKztzezezezezewKwKzBwKwKxLwKwNwNwNyHxzxzxzaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNykylylylyoyNzazbyNzHyiaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaN
aNaNaNaNaNaNbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNcjcjcjcjcjcjcjcjcjcjcjcjcjcjcjytytytwKxLwKxZxZxZxZwKaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNyizOzOzPzQyNzazbyNzRyiaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaN
aNaNaNaNaNaNbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNcjcpcpcpcpcpcpcpcpcpcpcpcpcpcqytytytwKxLwKxzxzxzxzwKaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNzVzWzWzWzXyNzazbyNyMyiaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaN
-aNaNaNaNaNaNbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNcjcpcraNaNaNaNaNaNaNaNaNcrcpcsytytytwKxLxLxLxLxLxLwKaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNyiAjAkzWAlyNyNyNyNyNaBaDaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaN
+aNaNaNaNaNaNbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNcjcpcraNaNaNaNaNaNaNaNaNcrcpcsytytytwKxLxLxLxLxLxLwKaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNyinozWzWAlyNyNyNyNyNaBaDaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaN
aNaNaNaNaNaNbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNcjcraNaNaNaNaNaNaNaNaNaNaNcCcBytytytwKwKwKwKwKwKwKAwaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNyiADzWzWzQyNyMyMyMyPyiaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaN
-aNaNaNaNaNaNbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNcjaNaNaNaNaNaNaNaNaNaNaNcEcGcFytytytcHwKaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNyiAjAkzWzXyNAMANAOyyyiaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaN
+aNaNaNaNaNaNbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNcjaNaNaNaNaNaNaNaNaNaNaNcEcGcFytytytcHwKaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNyinozWzWzXyNAMANAOyyyiaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaN
aNaNaNaNaNaNbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNcjcraNaNaNaNaNaNaNaNaNaNaNcCcIytytytytwKaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNySAXAXylylAYylylAXAXyUaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaN
aNaNaNaNaNaNbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNcjcpcraNaNaNaNaNaNaNaNaNcrcpcsytytytytwKaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNySyoBbzayNzbBcykyUaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaN
aNaNaNaNaNaNbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNcjcpcpcpcpcpcpcpcpcpcpcpcpcpcJytytytcKwKaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNyiAMyMBeyMBfyiaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaN
diff --git a/_maps/map_files/cyberiad/z5.dmm b/_maps/map_files/cyberiad/z5.dmm
index 7277830b8bc..355b75460a6 100644
--- a/_maps/map_files/cyberiad/z5.dmm
+++ b/_maps/map_files/cyberiad/z5.dmm
@@ -544,8 +544,8 @@
"kx" = (/obj/machinery/atmospherics/pipe/manifold/hidden/supply{level = 1},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plasteel,/area/research_outpost/entry)
"ky" = (/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 4; initialize_directions = 11; level = 1},/obj/machinery/light_switch{pixel_y = -23},/turf/simulated/floor/plasteel,/area/research_outpost/entry)
"kz" = (/obj/effect/spawner/window/reinforced,/turf/simulated/floor/plasteel,/area/research_outpost/med)
-"kA" = (/obj/machinery/sleeper{dir = 8},/obj/machinery/light_switch{pixel_y = -23},/turf/simulated/floor/plasteel{dir = 9; icon_state = "warnwhite"},/area/research_outpost/med)
-"kB" = (/obj/machinery/sleep_console{dir = 8},/obj/machinery/light/small,/obj/machinery/camera{c_tag = "Research Outpost Medbay"; dir = 8; network = list("Research Outpost")},/turf/simulated/floor/plasteel{icon_state = "warnwhite"; dir = 5},/area/research_outpost/med)
+"kA" = (/obj/machinery/light_switch{pixel_y = -23},/turf/simulated/floor/plasteel{dir = 9; icon_state = "warnwhite"},/area/research_outpost/med)
+"kB" = (/obj/machinery/light/small,/obj/machinery/camera{c_tag = "Research Outpost Medbay"; dir = 8; network = list("Research Outpost")},/obj/machinery/sleeper,/turf/simulated/floor/plasteel{icon_state = "warnwhite"; dir = 5},/area/research_outpost/med)
"kC" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{level = 1},/obj/machinery/firealarm{dir = 8; pixel_x = -24},/turf/simulated/floor/plasteel{icon_state = "vault"; dir = 5},/area/research_outpost/tempstorage)
"kD" = (/turf/simulated/wall/r_wall,/area/research_outpost/entry)
"kE" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0},/obj/machinery/door/firedoor{dir = 4; name = "Firelock"},/obj/machinery/door/airlock/glass_research{name = "Expedition Prep"; req_access_txt = "65"},/turf/simulated/floor/plasteel,/area/research_outpost/entry)
@@ -1330,8 +1330,8 @@
"zD" = (/turf/simulated/floor/plasteel{dir = 4; icon_state = "loadingarea"; tag = "loading"},/area/mine/production{name = "Mining Station Mech Bay"})
"zE" = (/obj/structure/plasticflaps/mining,/turf/simulated/floor/plasteel{dir = 4; icon_state = "loadingarea"; tag = "loading"},/area/mine/production{name = "Mining Station Mech Bay"})
"zF" = (/turf/simulated/floor/plasteel/airless{dir = 5; icon_state = "asteroidfloor"; tag = "icon-asteroidfloor"},/area/mine/explored)
-"zG" = (/obj/machinery/sleeper{dir = 8},/turf/simulated/floor/plasteel{tag = "icon-warnwhite (NORTH)"; icon_state = "warnwhite"; dir = 1},/area/mine/living_quarters)
-"zH" = (/obj/machinery/sleep_console{dir = 8},/turf/simulated/floor/plasteel{tag = "icon-warnwhite (NORTHEAST)"; icon_state = "warnwhite"; dir = 5},/area/mine/living_quarters)
+"zG" = (/turf/simulated/floor/plasteel{tag = "icon-warnwhite (NORTHEAST)"; icon_state = "warnwhite"; dir = 5},/area/mine/living_quarters)
+"zH" = (/obj/machinery/sleeper{dir = 4},/turf/simulated/floor/plasteel{tag = "icon-warnwhite (NORTH)"; icon_state = "warnwhite"; dir = 1},/area/mine/living_quarters)
"zI" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 1; on = 1},/obj/machinery/camera{c_tag = "Mining Outpost Sleeper Room"; dir = 1; network = list("Mining Outpost")},/turf/simulated/floor/plasteel{icon_state = "white"},/area/mine/living_quarters)
"zK" = (/obj/machinery/power/terminal{icon_state = "term"; dir = 1},/obj/structure/cable{icon_state = "0-2"; d2 = 2},/turf/simulated/floor/plating,/area/mine/living_quarters)
"zL" = (/turf/simulated/floor/plating,/area/mine/living_quarters)
@@ -1632,7 +1632,7 @@ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacacafafaeaeaeaeaevkyqyrysytvkyuyvoeaeaeaeaeaeqEaeaeaeqKrsrsqLaeaeaeaeafacacacacacacacacacacafaeaetRrstSaeaeaeaeafaeaeqEaeaeaeaeaeaeqCaeaeaeaeaeaeaeuWaeafafafafafuEwgywyxyyyyyxyzyAyByyyyyCyxyDyEyEyEyFyFyFyFyFyFyFyFyGyGyGyGyGyGyHyIyIyIyJyKyLyMyNyOyPyOyOyOyOyOyOyQaeaeaeaenmafafafoVoVoVoVafafafafafafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacacafafaeaeaeaevkyRySyTyUvkaeaeaeaeaeaeafafnlafaeaeaeaeaeqCaeaeaeaeaeafacacacacacafafafafafaetRtSaeaeaeafafafafafafnlaeaeaeaeaeaeqCaeaeaeaeaeaeaeaeaeaeaeafafuEuEwRyVwRuEuEyWyXyYuEuEuEyZwRuEuVaeaeaeaaaaaaaaagaaaaaaagaaaaaaaaaaagaawFwFwWzazbzczdzezfBRzhziyOvbzjaeaeaeaeaeafafafoVoVoVoVafafafoVafafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacacacafafaeaeaevkvkvkvkvkvkaeaeafafafafafacacafafaeaeaeaeqCaeaeaeaeaeaeafafafafafafaeaeaeaeaeqCaeaeafafafacacacacacafaeaeaeaeaeaeqCaeaeaerTquaeaeaeaeaeaeaeafuEzkwAzmzluEzozpzqzrzsuEztzuzvuEaeaeaeaeaeaeaaaaagaaaaaaagagagagagagagagagwEzwzxzyzzzAzAzBzCzCzDzEzFvjaeaeaeaeaeafafafoVoVoVafafoVoVoVafafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacacacafaeaeaeaeaeaeaeaeaeaeaeafacacacacacacacafafaeaeaeqKrsrsrsqLaeaeaeaeaeaeaeaeaeaeaeaeaeqCaeafafacacacacacacacafafaeaeaeaeaeqKrsrsrstTtUrsrsrsqLaeaeaeaeuEzGzHzIznuEzKzLzLzMzNuEzOzPzQuEaeaeaeaeaeaeagagagagagagagaaaaaaaaaaagaaaawEzSzTzUzVzWzXzWzCzCzDzEzFvjaeaeaeaeafafafafoVoVafafafoVoVoVafafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacacacafaeaeaeaeaeaeaeaeaeaeaeafacacacacacacacafafaeaeaeqKrsrsrsqLaeaeaeaeaeaeaeaeaeaeaeaeaeqCaeafafacacacacacacacafafaeaeaeaeaeqKrsrsrstTtUrsrsrsqLaeaeaeaeuEzHzGzIznuEzKzLzLzMzNuEzOzPzQuEaeaeaeaeaeaeagagagagagagagaaaaaaaaaaagaaaawEzSzTzUzVzWzXzWzCzCzDzEzFvjaeaeaeaeafafafafoVoVafafafoVoVoVafafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacacacafaeaeaeaeaeaeaeaeaeafafafacacacacacacacacafafafaeaeaeaeaeqKqLaeaerTquaeaetRrsrsrsrsrstSaeafacacacacbjbjbjacacafafafaeaeaeaeaeaeaeqpqraeaeaeqCaeaeaeaewPuEuEuEuEuEzZAaAbAczNuEuEAdwRwPaeaeaeaeaeaeaaaaagaaaaaaagaaaaaaaaaaagaawFwFAeAfAgyOAhAiAjAkzhziyOvtvuaeaeaeaeafafafoVoVoVafafafafoVoVafafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacacacafafafafaeaeaeaeafafafacacacacacacacacacacacacafafafaeqEaeaeqKrsrstTtUrsrstSaeaeaeaeaeaeaeafacacacbjbjbjbjbjacacacafafafafaeaeaeaeaeaeaeaeaeqKrsrsqLaeaeaeaeaeaewPuEuEuEuEuEwPzFAlAmAnaeaeaeaeaeaaaaaaagaaaaaaagaaaaaaaaaaAowFApAqArAsAtwEAuAvAuAuAuAuAuAutNaeaeaeafafafafoVoVafafafafoVoVoVafafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacacacacacafafafafafafacacacacacacacacacacacacacacacacafafnlafaeaeaeaeqpqraeaeaeaeqEaeafafafafafacacbjbjbjbjbjbjbjacacacacacafafafafafafafafaeaeaeaeaeqCaeaeaeaeaeaeaeaeqpAwAxAxAxAxAyqraeaeaeaeaeaeagagagagagagagagaaaaaaaahMhgwWBSwWwWAsADwEAEAFAGAHAIAJAKALaeaeaeaeafafafafoVoVafafafoVoVoVafafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
diff --git a/_maps/map_files/cyberiad/z6.dmm b/_maps/map_files/cyberiad/z6.dmm
index 84dd4bfbd99..e47f28bf95c 100644
--- a/_maps/map_files/cyberiad/z6.dmm
+++ b/_maps/map_files/cyberiad/z6.dmm
@@ -47,8 +47,8 @@
"aU" = (/obj/structure/table,/obj/item/weapon/paper/djstation{info = "Welcome new owner!
You have purchased the latest in listening equipment. The telecommunication setup we created is the best in listening to common and private radio fequencies. Here is a step by step guide to start listening in on those saucy radio channels:
- Equip yourself with a multi-tool
- Use the multitool on each machine, that is the broadcaster, receiver and the relay.
- Turn all the machines on, it has already been configured for you to listen on.
Simple as that. Now to listen to the private channels, you'll have to configure the intercoms, located on the front desk. Here is a list of frequencies for you to listen on.
- 145.7 - Common Channel
- 144.7 - Private AI Channel
- 135.9 - Security Channel
- 135.7 - Engineering Channel
- 135.5 - Medical Channel
- 135.3 - Command Channel
- 135.1 - Science Channel
- 134.7 - Supply Channel
"},/turf/simulated/floor/plasteel{tag = "icon-cafeteria (NORTHEAST)"; icon_state = "cafeteria"; dir = 5},/area/djstation)
"aV" = (/obj/structure/computerframe{anchored = 1},/turf/simulated/floor/plasteel{icon_state = "grimy"},/area/djstation)
"aW" = (/obj/structure/stool/bed/chair{dir = 8},/turf/simulated/floor/plasteel{icon_state = "grimy"},/area/djstation)
-"aX" = (/obj/machinery/light/small,/obj/machinery/sleeper{dir = 8},/turf/simulated/floor/plasteel{icon_state = "grimy"},/area/djstation)
-"aY" = (/obj/machinery/sleep_console{dir = 8},/turf/simulated/floor/plasteel{icon_state = "grimy"},/area/djstation)
+"aX" = (/obj/machinery/sleeper{dir = 8},/turf/simulated/floor/plasteel{icon_state = "grimy"},/area/djstation)
+"aY" = (/obj/machinery/light/small,/turf/simulated/floor/plasteel{icon_state = "grimy"},/area/djstation)
"aZ" = (/obj/structure/disposalpipe/segment,/turf/simulated/wall,/area/djstation)
"ba" = (/obj/machinery/door/airlock{name = "Restroom"; req_access_txt = "0"},/turf/simulated/floor/plasteel{icon_state = "freezerfloor"},/area/djstation)
"bb" = (/obj/machinery/light{dir = 4},/turf/simulated/floor/plasteel{tag = "icon-cafeteria (NORTHEAST)"; icon_state = "cafeteria"; dir = 5},/area/djstation)
@@ -413,7 +413,6 @@
"hW" = (/obj/machinery/light/small{dir = 1},/turf/simulated/floor/plasteel/airless,/area/derelict/medical/chapel)
"hX" = (/obj/structure/cable,/obj/machinery/power/apc/noalarm{dir = 4; name = "Worn-out APC"; pixel_x = 24; pixel_y = 0},/turf/simulated/floor/plasteel/airless,/area/derelict/medical/chapel)
"hY" = (/obj/machinery/sleeper{dir = 8},/turf/simulated/floor/plasteel/airless{icon_state = "white"},/area/derelict/medical)
-"hZ" = (/obj/machinery/sleep_console{dir = 8},/turf/simulated/floor/plasteel/airless{icon_state = "white"},/area/derelict/medical)
"ia" = (/obj/machinery/power/apc/noalarm{dir = 0; name = "Worn-out APC"; pixel_y = -24},/obj/structure/cable,/turf/simulated/floor/plasteel/airless{icon_state = "white"},/area/derelict/medical)
"ib" = (/obj/item/stack/medical/ointment,/turf/simulated/floor/plasteel/airless{icon_state = "white"},/area/derelict/medical)
"ic" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/turf/simulated/floor/plasteel/airless{icon_state = "white"},/area/derelict/medical)
@@ -748,8 +747,8 @@ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafafafauafafafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaavavaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafafafafafafawaxaxaxayafafafafafafaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaeaeaeavazavaAaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaagaBaCaDaEagaxaxaxaxaxagaFaGaHaIagaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaeaaaeavavazazaAaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaagaJaDaDaDaKaxaLaMaLaxaNaOaOaOaOagaaaaaaaaaaaeaeaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaeaaavavavazazavaPaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaagaQaRaSaDagaxaTaLaUaxagaVaWaXaYagaeaaaaaaaaaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaavavavavazazazavavaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaagaJaDaDaDaKaxaLaMaLaxaNaOaOaOaXagaaaaaaaaaaaeaeaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaeaaavavavazazavaPaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaagaQaRaSaDagaxaTaLaUaxagaVaWaYaOagaeaaaaaaaaaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaavavavavazazazavavaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaZafafbaafaxaxaxaxbbafafafafafafaeaeaaaaaaaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaAbcbcbdbcbcbcaAaAaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabeaeafbfafafbgaxbhbiafaaaeaeaebjaaaeaeaaaaaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabkblblbmblbkaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaebeaeafbnboafbpaxbqbrafaaaaaebsbsaaaaaeaaaaaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabtblblbublbkbkbkaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
@@ -798,7 +797,7 @@ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahfhghhhihhhihhhihhgjgZgrgZgrgZgrgOgDgDgDgDgDhjgDhkgFhlgGgygyhmguguguguhnhnaeaaaeaahoaaaaavfmfmhdfofmfmfPfpfPfEfufHgQaaaaaaaeaaaaaaaaaaaaaaaafSfXfYgfgffYfYfYfYfYaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahfhphqhrhqhrhqhrhqgjgrgrgrgrgrgrgjgDgDgDgDgDhsgDhtgDgFgFgGgygyhugyhuavavavavaaaeaeaeaeaaavfmfphvfpfpfmfpfpfpfpfugVfHaaaaaaaeaaaaaaaaaaaaaaaafXfXfXgfgffYhwhwhwfYaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahxhyhzhAhBhAhihhhihhgjgjgjgjgjgjhChDhEhEhFhFhGhHhEhEhEhEhIgGgGgGguhJgufSavavavhKhLavavavhMhNfmfphOfpfpfmfpfofphPfufufuavaeaeavaeavaeaeaeavaeaeavavfXgfgfgfgfgfhQfYaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahRhShShShShThrhqhrhqhUhVhVhVhWhVhXgjhYhZgDgDiahsibgDgDguicgDguguguguguidhNfSfIieavfIavavfShNfmfphOfphPfmfpfpfpfPfpfpfufmififbBigaaaaaaaaaeaaaaaaaefXgfgfgfgfgfihfYiiijaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahRhShShShShThrhqhrhqhUhVhVhVhWhVhXgjhYgDgDgDiahsibgDgDguicgDguguguguguidhNfSfIieavfIavavfShNfmfphOfphPfmfpfpfpfPfpfpfufmififbBigaaaaaaaaaeaaaaaaaefXgfgfgfgfgfihfYiiijaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaikiliminioinhihhhihhgjgjgjgjgjgjipgjfmfmfmfmfmfmfmfmfmfmiqirfmfmfmfmfmfmfmfmfmfmfIhNhNhNfIavfmfpisitititititiuitititivitiwiwixiyifaabBbBbsbBbBbBgnfXfYgfgfgfgfgfizgNizaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahfhphqhrhqhrhqhrhqgjaaaaaafmfpfpfpfpfpiAfpfpfpfpfmfpfphOfpfpfpfmfpfpfpfpfpfmfmfmfmfmfmfmfmfmfphOfpfpfmfpfofpfpfPfpfufmgLbBiBiwiCiDiEiFiGiCiwiCiCiHiIiJiKgNgfgffYiiijaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahfhghhhiiLhihhhihhgjaaaaaafmfpfpfpfpfpfpfpfpfpfpfmiMfphOfpfphPfmiMfpfpfpfpfmfmfmfmfpfpfpfpfpfpiNitiOfmfpfpfofofpiPfueKaeaaiQiQiQiReKbBaaiSiSiQiTfXfYgfiUgfgfiVfYaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
diff --git a/code/__DEFINES/preferences.dm b/code/__DEFINES/preferences.dm
index 1753045cb8c..8ac165cec6a 100644
--- a/code/__DEFINES/preferences.dm
+++ b/code/__DEFINES/preferences.dm
@@ -24,5 +24,6 @@
#define DISABLE_SCOREBOARD 2048
#define DISABLE_KARMA_REMINDER 4096
#define MEMBER_PUBLIC 8192
+#define CHAT_NO_ADMINLOGS 16384
#define TOGGLES_DEFAULT (CHAT_OOC|CHAT_DEAD|CHAT_GHOSTEARS|CHAT_GHOSTSIGHT|CHAT_PRAYER|CHAT_RADIO|CHAT_ATTACKLOGS|CHAT_LOOC|MEMBER_PUBLIC)
diff --git a/code/game/gamemodes/objective.dm b/code/game/gamemodes/objective.dm
index afda54e4204..c54ab8a97c2 100644
--- a/code/game/gamemodes/objective.dm
+++ b/code/game/gamemodes/objective.dm
@@ -31,7 +31,7 @@ var/list/potential_theft_objectives=subtypesof(/datum/theft_objective) \
proc/find_target()
var/list/possible_targets = list()
for(var/datum/mind/possible_target in ticker.minds)
- if(possible_target != owner && ishuman(possible_target.current) && (possible_target.current.stat != DEAD))
+ if(possible_target != owner && ishuman(possible_target.current) && (possible_target.current.stat != DEAD) && possible_target.current.client)
possible_targets += possible_target
if(possible_targets.len > 0)
target = pick(possible_targets)
@@ -39,7 +39,7 @@ var/list/potential_theft_objectives=subtypesof(/datum/theft_objective) \
proc/find_target_by_role(role, role_type=0)//Option sets either to check assigned role or special role. Default to assigned.
var/list/possible_targets = list()
for(var/datum/mind/possible_target in ticker.minds)
- if((possible_target != owner) && ishuman(possible_target.current) && ((role_type ? possible_target.special_role : possible_target.assigned_role) == role) && (possible_target.current.stat != DEAD) )
+ if((possible_target != owner) && ishuman(possible_target.current) && ((role_type ? possible_target.special_role : possible_target.assigned_role) == role) && (possible_target.current.stat != DEAD) && possible_target.current.client)
possible_targets += possible_target
if(possible_targets.len > 0)
target = pick(possible_targets)
@@ -48,7 +48,7 @@ var/list/potential_theft_objectives=subtypesof(/datum/theft_objective) \
proc/find_target_with_special_role(role)
var/list/possible_targets = list()
for(var/datum/mind/possible_target in ticker.minds)
- if((possible_target != owner) && ishuman(possible_target.current) && (role && possible_target.special_role == role || !role && possible_target.special_role) && (possible_target.current.stat != DEAD) )
+ if((possible_target != owner) && ishuman(possible_target.current) && (role && possible_target.special_role == role || !role && possible_target.special_role) && (possible_target.current.stat != DEAD) && possible_target.current.client)
possible_targets += possible_target
if(possible_targets.len > 0)
target = pick(possible_targets)
@@ -376,7 +376,7 @@ var/list/potential_theft_objectives=subtypesof(/datum/theft_objective) \
find_target()
var/list/possible_targets = list() //Copypasta because NO_SCAN races, yay for snowflakes.
for(var/datum/mind/possible_target in ticker.minds)
- if(possible_target != owner && ishuman(possible_target.current) && (possible_target.current.stat != DEAD))
+ if(possible_target != owner && ishuman(possible_target.current) && (possible_target.current.stat != DEAD) && possible_target.current.client)
var/mob/living/carbon/human/H = possible_target.current
if(!(H.species.flags & NO_SCAN))
possible_targets += possible_target
diff --git a/code/game/gamemodes/shadowling/shadowling_abilities.dm b/code/game/gamemodes/shadowling/shadowling_abilities.dm
index b22ccbf3a01..6106bb04ec4 100644
--- a/code/game/gamemodes/shadowling/shadowling_abilities.dm
+++ b/code/game/gamemodes/shadowling/shadowling_abilities.dm
@@ -509,15 +509,14 @@
sleep(10)
qdel(B)
-datum/reagent/shadowling_blindness_smoke //Blinds non-shadowlings, heals shadowlings/thralls
+/datum/reagent/shadowling_blindness_smoke //Blinds non-shadowlings, heals shadowlings/thralls
name = "odd black liquid"
id = "blindness_smoke"
description = "<::ERROR::> CANNOT ANALYZE REAGENT <::ERROR::>"
color = "#000000" //Complete black (RGB: 0, 0, 0)
metabolization_rate = 100 //lel
-datum/reagent/shadowling_blindness_smoke/on_mob_life(var/mob/living/M as mob)
- if(!M) M = holder.my_atom
+/datum/reagent/shadowling_blindness_smoke/on_mob_life(mob/living/M)
if(!is_shadow_or_thrall(M))
to_chat(M, "You breathe in the black smoke, and your eyes burn horribly!")
M.eye_blind = 5
@@ -530,9 +529,6 @@ datum/reagent/shadowling_blindness_smoke/on_mob_life(var/mob/living/M as mob)
M.adjustOxyLoss(-2)
M.adjustToxLoss(-2)
..()
- return
-
-
/obj/effect/proc_holder/spell/aoe_turf/unearthly_screech
name = "Sonic Screech"
diff --git a/code/game/machinery/Sleeper.dm b/code/game/machinery/Sleeper.dm
index 609274fbc17..a0b3f147b46 100644
--- a/code/game/machinery/Sleeper.dm
+++ b/code/game/machinery/Sleeper.dm
@@ -1,275 +1,23 @@
#define ADDICTION_SPEEDUP_TIME 1500 // 2.5 minutes
-/////////////////////////////////////////
-// SLEEPER CONSOLE
-/////////////////////////////////////////
-
-/obj/machinery/sleep_console
- name = "Sleeper Console"
- icon = 'icons/obj/Cryogenic2.dmi'
- icon_state = "console"
- var/obj/machinery/sleeper/connected = null
- var/ui_title = "Sleeper"
-
- anchored = 1 //About time someone fixed this.
- density = 1
- var/orient = "LEFT"
- dir = 8
- idle_power_usage = 250
- active_power_usage = 500
- interact_offline = 1
-
-/obj/machinery/sleep_console/power_change()
- if(stat & BROKEN)
- icon_state = "console-p"
- else if(powered() && !panel_open)
- icon_state = initial(icon_state)
- stat &= ~NOPOWER
- else
- spawn(rand(0, 15))
- src.icon_state = "console-p"
- stat |= NOPOWER
-
-/obj/machinery/sleep_console/New()
- ..()
- component_parts = list()
- component_parts += new /obj/item/weapon/circuitboard/sleep_console(null)
- component_parts += new /obj/item/weapon/stock_parts/console_screen(null)
- component_parts += new /obj/item/weapon/stock_parts/console_screen(null)
- component_parts += new /obj/item/stack/cable_coil(null, 2)
- RefreshParts()
- findsleeper()
-
-/obj/machinery/sleep_console/RefreshParts()
-
-/obj/machinery/sleep_console/process()
-
-/obj/machinery/sleep_console/ex_act(severity)
- switch(severity)
- if(1.0)
- //SN src = null
- qdel(src)
- return
- if(2.0)
- if(prob(50))
- //SN src = null
- qdel(src)
- return
- else
- return
-
-/obj/machinery/sleep_console/proc/findsleeper()
- var/obj/machinery/sleeper/sleepernew = null
- // Loop through every direction
- for(dir in list(NORTH,EAST,SOUTH,WEST))
- // Try to find a scanner in that direction
- var/temp = locate(/obj/machinery/sleeper, get_step(src, dir))
- if(!isnull(temp))
- sleepernew = temp
- src.connected = sleepernew
- return
-
-/obj/machinery/sleeper/attack_animal(var/mob/living/simple_animal/M)//Stop putting hostile mobs in things guise
- if(M.environment_smash)
- M.do_attack_animation(src)
- visible_message("[M.name] smashes [src] apart!")
- go_out()
- qdel(src)
- return
-
-/obj/machinery/sleep_console/attackby(var/obj/item/weapon/G as obj, var/mob/user as mob, params)
- if(istype(G, /obj/item/weapon/screwdriver))
- default_deconstruction_screwdriver(user, "console-p", "console", G)
- return
-
- if(istype(G, /obj/item/weapon/wrench))
- if(panel_open)
- to_chat(user, "Close the maintenance panel first.")
- return
- if(dir == 4)
- orient = "LEFT"
- dir = 8
- else
- orient = "RIGHT"
- dir = 4
- playsound(src.loc, 'sound/items/Ratchet.ogg', 50, 1)
-
- if(exchange_parts(user, G))
- return
-
- default_deconstruction_crowbar(G)
-
-/obj/machinery/sleep_console/attack_ai(mob/user as mob)
- return attack_hand(user)
-
-/obj/machinery/sleep_console/attack_ghost(mob/user as mob)
- return attack_hand(user)
-
-/obj/machinery/sleep_console/attack_hand(mob/user as mob)
- if(stat & (NOPOWER|BROKEN))
- return
-
- if(panel_open)
- to_chat(user, "Close the maintenance panel first.")
- return
-
- if(!src.connected)
- findsleeper()
-
- if(src.connected)
- ui_interact(user)
-
-/obj/machinery/sleep_console/ui_interact(mob/user, ui_key = "main", var/datum/nanoui/ui = null, var/force_open = 1)
- var/data[0]
- var/mob/living/carbon/human/occupant = connected.occupant
- data["hasOccupant"] = occupant ? 1 : 0
- var/occupantData[0]
- var/crisis = 0
- if(occupant)
- occupantData["name"] = occupant.name
- occupantData["stat"] = occupant.stat
- occupantData["health"] = occupant.health
- occupantData["maxHealth"] = occupant.maxHealth
- occupantData["minHealth"] = config.health_threshold_dead
- occupantData["bruteLoss"] = occupant.getBruteLoss()
- occupantData["oxyLoss"] = occupant.getOxyLoss()
- occupantData["toxLoss"] = occupant.getToxLoss()
- occupantData["fireLoss"] = occupant.getFireLoss()
- occupantData["paralysis"] = occupant.paralysis
- occupantData["hasBlood"] = 0
- occupantData["bodyTemperature"] = occupant.bodytemperature
- occupantData["maxTemp"] = 1000 // If you get a burning vox armalis into the sleeper, congratulations
- // Because we can put simple_animals in here, we need to do something tricky to get things working nice
- occupantData["temperatureSuitability"] = 0 // 0 is the baseline
- if(ishuman(occupant) && occupant.species)
- // I wanna do something where the bar gets bluer as the temperature gets lower
- // For now, I'll just use the standard format for the temperature status
- var/datum/species/sp = occupant.species
- if(occupant.bodytemperature < sp.cold_level_3)
- occupantData["temperatureSuitability"] = -3
- else if(occupant.bodytemperature < sp.cold_level_2)
- occupantData["temperatureSuitability"] = -2
- else if(occupant.bodytemperature < sp.cold_level_1)
- occupantData["temperatureSuitability"] = -1
- else if(occupant.bodytemperature > sp.heat_level_3)
- occupantData["temperatureSuitability"] = 3
- else if(occupant.bodytemperature > sp.heat_level_2)
- occupantData["temperatureSuitability"] = 2
- else if(occupant.bodytemperature > sp.heat_level_1)
- occupantData["temperatureSuitability"] = 1
- else if(istype(occupant, /mob/living/simple_animal))
- var/mob/living/simple_animal/silly = occupant
- if(silly.bodytemperature < silly.minbodytemp)
- occupantData["temperatureSuitability"] = -3
- else if(silly.bodytemperature > silly.maxbodytemp)
- occupantData["temperatureSuitability"] = 3
- // Blast you, imperial measurement system
- occupantData["btCelsius"] = occupant.bodytemperature - T0C
- occupantData["btFaren"] = ((occupant.bodytemperature - T0C) * (9.0/5.0))+ 32
-
-
- crisis = (occupant.health < connected.min_health)
- // I'm not sure WHY you'd want to put a simple_animal in a sleeper, but precedent is precedent
- // Runtime is aptly named, isn't she?
- if(ishuman(occupant) && occupant.vessel && !(occupant.species && occupant.species.flags & NO_BLOOD))
- var/blood_type = occupant.get_blood_name()
- occupantData["pulse"] = occupant.get_pulse(GETPULSE_TOOL)
- occupantData["hasBlood"] = 1
- occupantData["bloodLevel"] = round(occupant.vessel.get_reagent_amount(blood_type))
- occupantData["bloodMax"] = occupant.max_blood
- occupantData["bloodPercent"] = round(100*(occupant.vessel.get_reagent_amount(blood_type)/occupant.max_blood), 0.01)
-
- data["occupant"] = occupantData
- data["maxchem"] = connected.max_chem
- data["minhealth"] = connected.min_health
- data["dialysis"] = connected.filtering
- if(connected.beaker)
- data["isBeakerLoaded"] = 1
- if(connected.beaker.reagents)
- data["beakerFreeSpace"] = round(connected.beaker.reagents.maximum_volume - connected.beaker.reagents.total_volume)
- else
- data["beakerFreeSpace"] = 0
-
- var/chemicals[0]
- for(var/re in connected.injection_chems)
- var/datum/reagent/temp = chemical_reagents_list[re]
- if(temp)
- var/reagent_amount = 0
- var/pretty_amount
- var/injectable = occupant ? 1 : 0
- var/overdosing = 0
- var/caution = 0 // To make things clear that you're coming close to an overdose
- if(crisis && !(temp.id in connected.emergency_chems))
- injectable = 0
-
- if(occupant && occupant.reagents)
- reagent_amount = occupant.reagents.get_reagent_amount(temp.id)
- // If they're mashing the highest concentration, they get one warning
- if(temp.overdose_threshold && reagent_amount + 10 > temp.overdose_threshold)
- caution = 1
- if(temp.id in occupant.reagents.overdose_list())
- overdosing = 1
-
- // Because I don't know how to do this on the nano side
- pretty_amount = round(reagent_amount, 0.05)
-
- chemicals.Add(list(list("title" = temp.name, "id" = temp.id, "commands" = list("chemical" = temp.id), "occ_amount" = reagent_amount, "pretty_amount" = pretty_amount, "injectable" = injectable, "overdosing" = overdosing, "od_warning" = caution)))
- data["chemicals"] = chemicals
-
- ui = nanomanager.try_update_ui(user, src, ui_key, ui, data, force_open)
- if(!ui)
- ui = new(user, src, ui_key, "sleeper.tmpl", ui_title, 550, 655)
- ui.set_initial_data(data)
- ui.open()
- ui.set_auto_update(1)
-
-/obj/machinery/sleep_console/Topic(href, href_list)
- if(!connected | usr == connected.occupant)
- return 0
-
- if(..())
- return 1
-
- if(panel_open)
- to_chat(usr, "Close the maintenance panel first.")
- return 0
-
- if((usr.contents.Find(src) || ((get_dist(src, usr) <= 1) && istype(src.loc, /turf))) || (istype(usr, /mob/living/silicon/ai)))
- if(href_list["chemical"])
- if(src.connected)
- if(src.connected.occupant)
- if(src.connected.occupant.stat == DEAD)
- to_chat(usr, "This person has no life for to preserve anymore. Take them to a department capable of reanimating them.")
- else if(src.connected.occupant.health > src.connected.min_health || (href_list["chemical"] in connected.emergency_chems))
- src.connected.inject_chemical(usr,href_list["chemical"],text2num(href_list["amount"]))
- else
- to_chat(usr, "This person is not in good enough condition for sleepers to be effective! Use another means of treatment, such as cryogenics!")
- if(href_list["removebeaker"])
- src.connected.remove_beaker()
- if(href_list["togglefilter"])
- src.connected.toggle_filter()
- if(href_list["ejectify"])
- src.connected.eject()
- src.add_fingerprint(usr)
- return 1
-
-/////////////////////////////////////////
-// THE SLEEPER ITSELF
-/////////////////////////////////////////
+/////////////
+// SLEEPER //
+////////////
/obj/machinery/sleeper
name = "Sleeper"
icon = 'icons/obj/Cryogenic2.dmi'
icon_state = "sleeper-open"
+ var/base_icon = "sleeper"
density = 1
anchored = 1
dir = 8
var/orient = "LEFT" // "RIGHT" changes the dir suffix to "-r"
var/mob/living/carbon/human/occupant = null
- var/possible_chems = list(list("epinephrine", "ether", "salbutamol", "styptic_powder"),
- list("epinephrine", "ether", "salbutamol", "styptic_powder", "oculine"),
- list("epinephrine", "ether", "salbutamol", "styptic_powder", "oculine", "charcoal", "mutadone", "mannitol"),
- list("epinephrine", "ether", "salbutamol", "styptic_powder", "oculine", "charcoal", "mutadone", "mannitol", "pen_acid", "omnizine"))
+ var/possible_chems = list(list("epinephrine", "ether", "salbutamol", "styptic_powder", "silver_sulfadiazine"),
+ list("epinephrine", "ether", "salbutamol", "styptic_powder", "silver_sulfadiazine", "oculine"),
+ list("epinephrine", "ether", "salbutamol", "styptic_powder", "silver_sulfadiazine", "oculine", "charcoal", "mutadone", "mannitol"),
+ list("epinephrine", "ether", "salbutamol", "styptic_powder", "silver_sulfadiazine", "oculine", "charcoal", "mutadone", "mannitol", "pen_acid", "omnizine"))
var/emergency_chems = list("epinephrine") // Desnowflaking
var/amounts = list(5, 10)
var/obj/item/weapon/reagent_containers/glass/beaker = null
@@ -278,6 +26,7 @@
var/initial_bin_rating = 1
var/min_health = -25
var/injection_chems = list()
+ var/controls_inside = FALSE
idle_power_usage = 1250
active_power_usage = 2500
@@ -369,6 +118,154 @@
return
+/obj/machinery/sleeper/attack_ai(mob/user)
+ return attack_hand(user)
+
+/obj/machinery/sleeper/attack_ghost(mob/user)
+ return attack_hand(user)
+
+/obj/machinery/sleeper/attack_hand(mob/user)
+ if(stat & (NOPOWER|BROKEN))
+ return
+
+ if(panel_open)
+ to_chat(user, "Close the maintenance panel first.")
+ return
+
+ ui_interact(user)
+
+/obj/machinery/sleeper/ui_interact(mob/user, ui_key = "main", datum/nanoui/ui = null, force_open = 1)
+ var/data[0]
+ data["hasOccupant"] = occupant ? 1 : 0
+ var/occupantData[0]
+ var/crisis = 0
+ if(occupant)
+ occupantData["name"] = occupant.name
+ occupantData["stat"] = occupant.stat
+ occupantData["health"] = occupant.health
+ occupantData["maxHealth"] = occupant.maxHealth
+ occupantData["minHealth"] = config.health_threshold_dead
+ occupantData["bruteLoss"] = occupant.getBruteLoss()
+ occupantData["oxyLoss"] = occupant.getOxyLoss()
+ occupantData["toxLoss"] = occupant.getToxLoss()
+ occupantData["fireLoss"] = occupant.getFireLoss()
+ occupantData["paralysis"] = occupant.paralysis
+ occupantData["hasBlood"] = 0
+ occupantData["bodyTemperature"] = occupant.bodytemperature
+ occupantData["maxTemp"] = 1000 // If you get a burning vox armalis into the sleeper, congratulations
+ // Because we can put simple_animals in here, we need to do something tricky to get things working nice
+ occupantData["temperatureSuitability"] = 0 // 0 is the baseline
+ if(ishuman(occupant) && occupant.species)
+ // I wanna do something where the bar gets bluer as the temperature gets lower
+ // For now, I'll just use the standard format for the temperature status
+ var/datum/species/sp = occupant.species
+ if(occupant.bodytemperature < sp.cold_level_3)
+ occupantData["temperatureSuitability"] = -3
+ else if(occupant.bodytemperature < sp.cold_level_2)
+ occupantData["temperatureSuitability"] = -2
+ else if(occupant.bodytemperature < sp.cold_level_1)
+ occupantData["temperatureSuitability"] = -1
+ else if(occupant.bodytemperature > sp.heat_level_3)
+ occupantData["temperatureSuitability"] = 3
+ else if(occupant.bodytemperature > sp.heat_level_2)
+ occupantData["temperatureSuitability"] = 2
+ else if(occupant.bodytemperature > sp.heat_level_1)
+ occupantData["temperatureSuitability"] = 1
+ else if(istype(occupant, /mob/living/simple_animal))
+ var/mob/living/simple_animal/silly = occupant
+ if(silly.bodytemperature < silly.minbodytemp)
+ occupantData["temperatureSuitability"] = -3
+ else if(silly.bodytemperature > silly.maxbodytemp)
+ occupantData["temperatureSuitability"] = 3
+ // Blast you, imperial measurement system
+ occupantData["btCelsius"] = occupant.bodytemperature - T0C
+ occupantData["btFaren"] = ((occupant.bodytemperature - T0C) * (9.0/5.0))+ 32
+
+
+ crisis = (occupant.health < min_health)
+ // I'm not sure WHY you'd want to put a simple_animal in a sleeper, but precedent is precedent
+ // Runtime is aptly named, isn't she?
+ if(ishuman(occupant) && occupant.vessel && !(occupant.species && occupant.species.flags & NO_BLOOD))
+ var/blood_type = occupant.get_blood_name()
+ occupantData["pulse"] = occupant.get_pulse(GETPULSE_TOOL)
+ occupantData["hasBlood"] = 1
+ occupantData["bloodLevel"] = round(occupant.vessel.get_reagent_amount(blood_type))
+ occupantData["bloodMax"] = occupant.max_blood
+ occupantData["bloodPercent"] = round(100*(occupant.vessel.get_reagent_amount(blood_type)/occupant.max_blood), 0.01)
+
+ data["occupant"] = occupantData
+ data["maxchem"] = max_chem
+ data["minhealth"] = min_health
+ data["dialysis"] = filtering
+ if(beaker)
+ data["isBeakerLoaded"] = 1
+ if(beaker.reagents)
+ data["beakerFreeSpace"] = round(beaker.reagents.maximum_volume - beaker.reagents.total_volume)
+ else
+ data["beakerFreeSpace"] = 0
+
+ var/chemicals[0]
+ for(var/re in injection_chems)
+ var/datum/reagent/temp = chemical_reagents_list[re]
+ if(temp)
+ var/reagent_amount = 0
+ var/pretty_amount
+ var/injectable = occupant ? 1 : 0
+ var/overdosing = 0
+ var/caution = 0 // To make things clear that you're coming close to an overdose
+ if(crisis && !(temp.id in emergency_chems))
+ injectable = 0
+
+ if(occupant && occupant.reagents)
+ reagent_amount = occupant.reagents.get_reagent_amount(temp.id)
+ // If they're mashing the highest concentration, they get one warning
+ if(temp.overdose_threshold && reagent_amount + 10 > temp.overdose_threshold)
+ caution = 1
+ if(temp.id in occupant.reagents.overdose_list())
+ overdosing = 1
+
+ // Because I don't know how to do this on the nano side
+ pretty_amount = round(reagent_amount, 0.05)
+
+ chemicals.Add(list(list("title" = temp.name, "id" = temp.id, "commands" = list("chemical" = temp.id), "occ_amount" = reagent_amount, "pretty_amount" = pretty_amount, "injectable" = injectable, "overdosing" = overdosing, "od_warning" = caution)))
+ data["chemicals"] = chemicals
+
+ ui = nanomanager.try_update_ui(user, src, ui_key, ui, data, force_open)
+ if(!ui)
+ ui = new(user, src, ui_key, "sleeper.tmpl", "Sleeper", 550, 770)
+ ui.set_initial_data(data)
+ ui.open()
+ ui.set_auto_update(1)
+
+/obj/machinery/sleeper/Topic(href, href_list)
+ if(!controls_inside && usr == occupant)
+ return 0
+
+ if(..())
+ return 1
+
+ if(panel_open)
+ to_chat(usr, "Close the maintenance panel first.")
+ return 0
+
+ if((usr.contents.Find(src) || ((get_dist(src, usr) <= 1) && istype(src.loc, /turf))) || (istype(usr, /mob/living/silicon/ai)))
+ if(href_list["chemical"])
+ if(occupant)
+ if(occupant.stat == DEAD)
+ to_chat(usr, "This person has no life for to preserve anymore. Take them to a department capable of reanimating them.")
+ else if(occupant.health > min_health || (href_list["chemical"] in emergency_chems))
+ inject_chemical(usr,href_list["chemical"],text2num(href_list["amount"]))
+ else
+ to_chat(usr, "This person is not in good enough condition for sleepers to be effective! Use another means of treatment, such as cryogenics!")
+ if(href_list["removebeaker"])
+ remove_beaker()
+ if(href_list["togglefilter"])
+ toggle_filter()
+ if(href_list["ejectify"])
+ eject()
+ src.add_fingerprint(usr)
+ return 1
+
/obj/machinery/sleeper/blob_act()
if(prob(75))
var/atom/movable/A = occupant
@@ -398,7 +295,7 @@
if(src.occupant)
to_chat(user, "The maintenance panel is locked.")
return
- default_deconstruction_screwdriver(user, "sleeper-o", "sleeper-open", G)
+ default_deconstruction_screwdriver(user, "[base_icon]-o", "[base_icon]-open", G)
return
if(istype(G, /obj/item/weapon/wrench))
@@ -451,7 +348,7 @@
M.client.eye = src
M.forceMove(src)
src.occupant = M
- src.icon_state = "sleeper"
+ src.icon_state = "[base_icon]"
to_chat(M, "You feel cool air surround you. You go numb as your senses turn inward.")
src.add_fingerprint(user)
@@ -528,7 +425,7 @@
occupant.client.perspective = MOB_PERSPECTIVE
occupant.forceMove(loc)
occupant = null
- icon_state = "sleeper-open"
+ icon_state = "[base_icon]-open"
// eject trash the occupant dropped
for(var/atom/movable/A in contents - component_parts - list(beaker))
A.forceMove(loc)
@@ -559,7 +456,7 @@
set src in oview(1)
if(usr.stat != 0)
return
- src.icon_state = "sleeper-open"
+ src.icon_state = "[base_icon]-open"
src.go_out()
add_fingerprint(usr)
return
@@ -626,7 +523,7 @@
L.client.eye = src
L.forceMove(src)
src.occupant = L
- src.icon_state = "sleeper"
+ src.icon_state = "[base_icon]"
to_chat(L, "You feel cool air surround you. You go numb as your senses turn inward.")
src.add_fingerprint(user)
if(user.pulling == L)
@@ -665,7 +562,7 @@
usr.client.eye = src
usr.forceMove(src)
src.occupant = usr
- src.icon_state = "sleeper"
+ src.icon_state = "[base_icon]"
for(var/obj/O in src)
qdel(O)
@@ -673,4 +570,11 @@
return
return
+/obj/machinery/sleeper/syndie
+ icon_state = "sleeper_s-open"
+ base_icon = "sleeper_s"
+ controls_inside = TRUE
+
+ light_color = LIGHT_COLOR_DARKRED
+
#undef ADDICTION_SPEEDUP_TIME
\ No newline at end of file
diff --git a/code/game/machinery/constructable_frame.dm b/code/game/machinery/constructable_frame.dm
index fae97ee9d5b..2defdbf4623 100644
--- a/code/game/machinery/constructable_frame.dm
+++ b/code/game/machinery/constructable_frame.dm
@@ -744,16 +744,6 @@ obj/item/weapon/circuitboard/rdserver
/obj/item/stack/cable_coil = 1,
/obj/item/weapon/stock_parts/console_screen = 2)
-/obj/item/weapon/circuitboard/sleep_console
- name = "circuit board (Sleeper Console)"
- build_path = /obj/machinery/sleep_console
- board_type = "machine"
- origin_tech = "programming=3;biotech=2;engineering=3;materials=3"
- frame_desc = "Requires 2 pieces of cable and 2 Console Screens."
- req_components = list(
- /obj/item/stack/cable_coil = 2,
- /obj/item/weapon/stock_parts/console_screen = 2)
-
/obj/item/weapon/circuitboard/bodyscanner
name = "circuit board (Body Scanner)"
build_path = /obj/machinery/bodyscanner
diff --git a/code/game/machinery/rechargestation.dm b/code/game/machinery/rechargestation.dm
index aa16f852f11..342b24fa055 100644
--- a/code/game/machinery/rechargestation.dm
+++ b/code/game/machinery/rechargestation.dm
@@ -216,11 +216,6 @@
if(istype(O,/obj/item/weapon/reagent_containers/food/condiment/enzyme))
if(O.reagents.get_reagent_amount("enzyme") < 50)
O.reagents.add_reagent("enzyme", 2 * coeff)
- //Medical
- if(istype(O,/obj/item/weapon/reagent_containers/glass/bottle/robot))
- var/obj/item/weapon/reagent_containers/glass/bottle/robot/B = O
- if(B.reagent && (B.reagents.get_reagent_amount(B.reagent) < B.volume))
- B.reagents.add_reagent(B.reagent, 2 * coeff)
//Janitor
if(istype(O, /obj/item/device/lightreplacer))
var/obj/item/device/lightreplacer/LR = O
diff --git a/code/game/machinery/vending.dm b/code/game/machinery/vending.dm
index ed69b66614d..78f7eb4efb5 100644
--- a/code/game/machinery/vending.dm
+++ b/code/game/machinery/vending.dm
@@ -208,16 +208,21 @@
break
return total
-/obj/machinery/vending/attackby(obj/item/weapon/W, mob/user, params)
+/obj/machinery/vending/attackby(obj/item/I, mob/user, params)
if(currently_vending && vendor_account && !vendor_account.suspended)
var/paid = 0
var/handled = 0
- if(istype(W, /obj/item/weapon/card/id))
- var/obj/item/weapon/card/id/C = W
+ if(istype(I, /obj/item/weapon/card/id))
+ var/obj/item/weapon/card/id/C = I
paid = pay_with_card(C)
handled = 1
- else if(istype(W, /obj/item/weapon/spacecash))
- var/obj/item/weapon/spacecash/C = W
+ if(istype(I, /obj/item/device/pda))
+ var/obj/item/device/pda/PDA = I
+ if(PDA.id)
+ paid = pay_with_card(PDA.id)
+ handled = 1
+ else if(istype(I, /obj/item/weapon/spacecash))
+ var/obj/item/weapon/spacecash/C = I
paid = pay_with_cash(C, user)
handled = 1
@@ -228,10 +233,10 @@
nanomanager.update_uis(src)
return // don't smack that machine with your 2 thalers
- if(default_unfasten_wrench(user, W, time = 60))
+ if(default_unfasten_wrench(user, I, time = 60))
return
- if(istype(W, /obj/item/weapon/screwdriver) && anchored)
+ if(istype(I, /obj/item/weapon/screwdriver) && anchored)
playsound(loc, 'sound/items/Screwdriver.ogg', 50, 1)
panel_open = !panel_open
to_chat(user, "You [panel_open ? "open" : "close"] the maintenance panel.")
@@ -242,9 +247,9 @@
return
if(panel_open)
- if(istype(W, /obj/item/device/multitool)||istype(W, /obj/item/weapon/wirecutters))
+ if(istype(I, /obj/item/device/multitool)||istype(I, /obj/item/weapon/wirecutters))
return attack_hand(user)
- if(component_parts && istype(W, /obj/item/weapon/crowbar))
+ if(component_parts && istype(I, /obj/item/weapon/crowbar))
var/datum/data/vending_product/machine = product_records
for(var/datum/data/vending_product/machine_content in machine)
while(machine_content.amount !=0)
@@ -253,21 +258,21 @@
machine_content.amount--
if(!machine_content.amount)
break
- default_deconstruction_crowbar(W)
- if(istype(W, /obj/item/weapon/coin) && premium.len > 0)
+ default_deconstruction_crowbar(I)
+ if(istype(I, /obj/item/weapon/coin) && premium.len > 0)
user.drop_item()
- W.loc = src
- coin = W
+ I.loc = src
+ coin = I
categories |= CAT_COIN
- to_chat(user, "\blue You insert the [W] into the [src]")
+ to_chat(user, "\blue You insert the [I] into the [src]")
nanomanager.update_uis(src)
return
- else if(istype(W, refill_canister) && refill_canister != null)
+ else if(istype(I, refill_canister) && refill_canister != null)
if(stat & (BROKEN|NOPOWER))
to_chat(user, "It does nothing.")
else if(panel_open)
//if the panel is open we attempt to refill the machine
- var/obj/item/weapon/vending_refill/canister = W
+ var/obj/item/weapon/vending_refill/canister = I
if(canister.charges == 0)
to_chat(user, "This [canister.name] is empty!")
else
diff --git a/code/modules/admin/admin.dm b/code/modules/admin/admin.dm
index 4427e694ffd..233cc931831 100644
--- a/code/modules/admin/admin.dm
+++ b/code/modules/admin/admin.dm
@@ -8,8 +8,9 @@ var/global/nologevent = 0
msg = "ADMIN LOG: [msg]"
log_adminwarn(msg)
for(var/client/C in admins)
- if(R_SERVER & C.holder.rights)
- to_chat(C, msg)
+ if(R_ADMIN & C.holder.rights)
+ if(C.prefs && !(C.prefs.toggles & CHAT_NO_ADMINLOGS))
+ to_chat(C, msg)
/proc/msg_admin_attack(var/text) //Toggleable Attack Messages
log_attack(text)
diff --git a/code/modules/admin/admin_verbs.dm b/code/modules/admin/admin_verbs.dm
index 1c24e8cf214..90ad26039db 100644
--- a/code/modules/admin/admin_verbs.dm
+++ b/code/modules/admin/admin_verbs.dm
@@ -56,6 +56,7 @@ var/list/admin_verbs_admin = list(
/datum/admins/proc/show_player_notes,
/client/proc/free_slot, /*frees slot for chosen job*/
/client/proc/toggleattacklogs,
+ /client/proc/toggleadminlogs,
/client/proc/toggledebuglogs,
/client/proc/update_mob_sprite,
/client/proc/toggledrones,
@@ -883,6 +884,20 @@ var/list/admin_verbs_snpc = list(
else
to_chat(usr, "You now won't get attack log messages")
+/client/proc/toggleadminlogs()
+ set name = "Toggle Admin Log Messages"
+ set category = "Preferences"
+
+ if(!check_rights(R_ADMIN))
+ return
+
+ prefs.toggles ^= CHAT_NO_ADMINLOGS
+ prefs.save_preferences(src)
+ if(prefs.toggles & CHAT_NO_ADMINLOGS)
+ to_chat(usr, "You now won't get admin log messages.")
+ else
+ to_chat(usr, "You now will get admin log messages.")
+
/client/proc/toggledrones()
set name = "Toggle Maintenance Drones"
set category = "Server"
diff --git a/code/modules/admin/verbs/adminjump.dm b/code/modules/admin/verbs/adminjump.dm
index 5cbb8dd26d5..2512171e80d 100644
--- a/code/modules/admin/verbs/adminjump.dm
+++ b/code/modules/admin/verbs/adminjump.dm
@@ -24,7 +24,8 @@
admin_forcemove(usr, T)
log_admin("[key_name(usr)] jumped to [A]")
- message_admins("[key_name_admin(usr)] jumped to [A]")
+ if(!isobserver(usr))
+ message_admins("[key_name_admin(usr)] jumped to [A]")
feedback_add_details("admin_verb","JA") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
/client/proc/jumptoturf(var/turf/T in world)
@@ -35,7 +36,8 @@
return
log_admin("[key_name(usr)] jumped to [T.x], [T.y], [T.z] in [T.loc]")
- message_admins("[key_name_admin(usr)] jumped to [T.x], [T.y], [T.z] in [T.loc]", 1)
+ if(!isobserver(usr))
+ message_admins("[key_name_admin(usr)] jumped to [T.x], [T.y], [T.z] in [T.loc]", 1)
admin_forcemove(usr, T)
feedback_add_details("admin_verb","JT") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
return
@@ -48,7 +50,8 @@
return
log_admin("[key_name(usr)] jumped to [key_name(M)]")
- message_admins("[key_name_admin(usr)] jumped to [key_name_admin(M)]", 1)
+ if(!isobserver(usr))
+ message_admins("[key_name_admin(usr)] jumped to [key_name_admin(M)]", 1)
if(src.mob)
var/mob/A = src.mob
var/turf/T = get_turf(M)
@@ -69,7 +72,8 @@
if(T)
admin_forcemove(usr, T)
feedback_add_details("admin_verb","JC") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
- message_admins("[key_name_admin(usr)] jumped to coordinates [tx], [ty], [tz]")
+ if(!isobserver(usr))
+ message_admins("[key_name_admin(usr)] jumped to coordinates [tx], [ty], [tz]")
/client/proc/jumptokey()
set category = "Admin"
@@ -87,7 +91,8 @@
return
var/mob/M = selection:mob
log_admin("[key_name(usr)] jumped to [key_name(M)]")
- message_admins("[key_name_admin(usr)] jumped to [key_name_admin(M)]", 1)
+ if(!isobserver(usr))
+ message_admins("[key_name_admin(usr)] jumped to [key_name_admin(M)]", 1)
admin_forcemove(usr, M.loc)
diff --git a/code/modules/admin/verbs/debug.dm b/code/modules/admin/verbs/debug.dm
index 98f14e0da2d..f439f93653c 100644
--- a/code/modules/admin/verbs/debug.dm
+++ b/code/modules/admin/verbs/debug.dm
@@ -595,36 +595,41 @@ But you can call procs that are of type /mob/living/carbon/human/proc/ for that
"space pirate",
"soviet admiral",
"tunnel clown",
+ "survivor",
"masked killer",
"singuloth knight",
"dark lord",
"assassin",
+ "spy",
"death commando",
"syndicate commando",
"chrono legionnaire",
- "special ops officer",
- "special ops formal",
"blue wizard",
"red wizard",
"marisa wizard",
"emergency response team member",
"emergency response team leader",
- "nanotrasen officer",
- "nanotrasen captain",
+ "nt vip guest",
+ "nt navy officer", // now in jobs list
+ "nt navy captain",
+ "nt special ops officer", // now in jobs list
+ "nt special ops formal",
)
- var/dostrip = input("Do you want to strip [M] before equipping them? (0=no, 1=yes)", "STRIPTEASE") as null|anything in list(0,1)
- if(isnull(dostrip))
- return
+ var/dostrip = 0
+ switch(alert("Strip [M] before dressing?", "Strip?", "Yes", "No", "Cancel"))
+ if("Yes")
+ dostrip = 1
+ if("Cancel")
+ return
var/dresscode = input("Select dress for [M]", "Robust quick dress shop") as null|anything in dresspacks
if(isnull(dresscode))
return
-
var/datum/job/jobdatum
if(dresscode == "as job...")
var/jobname = input("Select job", "Robust quick dress shop") as null|anything in get_all_jobs()
jobdatum = job_master.GetJob(jobname)
- feedback_add_details("admin_verb","SEQ") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
+ feedback_add_details("admin_verb", "SEQ") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
if(dostrip)
for(var/obj/item/I in M)
if(istype(I, /obj/item/weapon/implant))
@@ -640,19 +645,22 @@ But you can call procs that are of type /mob/living/carbon/human/proc/ for that
if(jobdatum)
dresscode = "[jobdatum.title]"
jobdatum.equip(M)
+ equip_special_id(M,jobdatum.access,jobdatum.title, jobdatum.idtype)
if("standard space gear")
M.equip_to_slot_or_del(new /obj/item/clothing/shoes/black(M), slot_shoes)
-
M.equip_to_slot_or_del(new /obj/item/clothing/under/color/grey(M), slot_w_uniform)
M.equip_to_slot_or_del(new /obj/item/clothing/suit/space(M), slot_wear_suit)
M.equip_to_slot_or_del(new /obj/item/clothing/head/helmet/space(M), slot_head)
+ M.equip_to_slot_or_del(new /obj/item/device/radio/headset(M), slot_l_ear)
var /obj/item/weapon/tank/jetpack/J = new /obj/item/weapon/tank/jetpack/oxygen(M)
M.equip_to_slot_or_del(J, slot_back)
J.toggle()
M.equip_to_slot_or_del(new /obj/item/clothing/mask/breath(M), slot_wear_mask)
J.Topic(null, list("stat" = 1))
- if("Engineer RIG","CE RIG","Mining RIG","Syndi RIG","Wizard RIG","Medical RIG","Atmos RIG")
+ equip_special_id(M,get_all_accesses(), "Space Explorer", /obj/item/weapon/card/id)
+
+ if("Engineer RIG", "CE RIG", "Mining RIG", "Syndi RIG", "Wizard RIG", "Medical RIG", "Atmos RIG")
if(dresscode=="Engineer RIG")
M.equip_to_slot_or_del(new /obj/item/clothing/suit/space/rig(M), slot_wear_suit)
M.equip_to_slot_or_del(new /obj/item/clothing/head/helmet/space/rig(M), slot_head)
@@ -678,32 +686,27 @@ But you can call procs that are of type /mob/living/carbon/human/proc/ for that
M.equip_to_slot_or_del(J, slot_back)
J.toggle()
M.equip_to_slot_or_del(new /obj/item/clothing/mask/breath(M), slot_wear_mask)
+ equip_special_id(M,get_all_accesses(), "RIG Tester", /obj/item/weapon/card/id)
J.Topic(null, list("stat" = 1))
- if("tournament standard red","tournament standard green") //we think stunning weapon is too overpowered to use it on tournaments. --rastaf0
+ if("tournament standard red", "tournament standard green") //we think stunning weapon is too overpowered to use it on tournaments. --rastaf0
if(dresscode=="tournament standard red")
M.equip_to_slot_or_del(new /obj/item/clothing/under/color/red(M), slot_w_uniform)
else
M.equip_to_slot_or_del(new /obj/item/clothing/under/color/green(M), slot_w_uniform)
M.equip_to_slot_or_del(new /obj/item/clothing/shoes/black(M), slot_shoes)
-
M.equip_to_slot_or_del(new /obj/item/clothing/suit/armor/vest(M), slot_wear_suit)
M.equip_to_slot_or_del(new /obj/item/clothing/head/helmet/thunderdome(M), slot_head)
-
M.equip_to_slot_or_del(new /obj/item/weapon/gun/energy/pulse/destroyer(M), slot_r_hand)
M.equip_to_slot_or_del(new /obj/item/weapon/kitchen/knife(M), slot_l_hand)
M.equip_to_slot_or_del(new /obj/item/weapon/grenade/smokebomb(M), slot_r_store)
-
if("tournament gangster") //gangster are supposed to fight each other. --rastaf0
M.equip_to_slot_or_del(new /obj/item/clothing/under/det(M), slot_w_uniform)
M.equip_to_slot_or_del(new /obj/item/clothing/shoes/black(M), slot_shoes)
-
M.equip_to_slot_or_del(new /obj/item/clothing/suit/storage/det_suit(M), slot_wear_suit)
M.equip_to_slot_or_del(new /obj/item/clothing/glasses/thermal/monocle(M), slot_glasses)
M.equip_to_slot_or_del(new /obj/item/clothing/head/det_hat(M), slot_head)
-
-
M.equip_to_slot_or_del(new /obj/item/weapon/gun/projectile/automatic/proto(M), slot_r_hand)
M.equip_to_slot_or_del(new /obj/item/ammo_box/a357(M), slot_l_store)
@@ -712,7 +715,6 @@ But you can call procs that are of type /mob/living/carbon/human/proc/ for that
M.equip_to_slot_or_del(new /obj/item/clothing/suit/chef(M), slot_wear_suit)
M.equip_to_slot_or_del(new /obj/item/clothing/shoes/black(M), slot_shoes)
M.equip_to_slot_or_del(new /obj/item/clothing/head/chefhat(M), slot_head)
-
M.equip_to_slot_or_del(new /obj/item/weapon/kitchen/rollingpin(M), slot_r_hand)
M.equip_to_slot_or_del(new /obj/item/weapon/kitchen/knife(M), slot_l_hand)
M.equip_to_slot_or_del(new /obj/item/weapon/kitchen/knife(M), slot_r_store)
@@ -725,12 +727,10 @@ But you can call procs that are of type /mob/living/carbon/human/proc/ for that
for(var/obj/item/I in backpack)
del(I)
M.equip_to_slot_or_del(backpack, slot_back)
-
M.equip_to_slot_or_del(new /obj/item/weapon/mop(M), slot_r_hand)
var/obj/item/weapon/reagent_containers/glass/bucket/bucket = new(M)
bucket.reagents.add_reagent("water", 70)
M.equip_to_slot_or_del(bucket, slot_l_hand)
-
M.equip_to_slot_or_del(new /obj/item/weapon/grenade/chem_grenade/cleaner(M), slot_r_store)
M.equip_to_slot_or_del(new /obj/item/weapon/grenade/chem_grenade/cleaner(M), slot_l_store)
M.equip_to_slot_or_del(new /obj/item/stack/tile/plasteel(M), slot_in_backpack)
@@ -747,6 +747,7 @@ But you can call procs that are of type /mob/living/carbon/human/proc/ for that
M.equip_to_slot_or_del(new /obj/item/clothing/head/bandana(M), slot_head)
M.equip_to_slot_or_del(new /obj/item/clothing/glasses/eyepatch(M), slot_glasses)
M.equip_to_slot_or_del(new /obj/item/weapon/melee/energy/sword/pirate(M), slot_r_hand)
+ equip_special_id(M,get_all_accesses(), "Pirate", /obj/item/weapon/card/id)
if("space pirate")
M.equip_to_slot_or_del(new /obj/item/clothing/under/pirate(M), slot_w_uniform)
@@ -754,38 +755,47 @@ But you can call procs that are of type /mob/living/carbon/human/proc/ for that
M.equip_to_slot_or_del(new /obj/item/clothing/suit/space/pirate(M), slot_wear_suit)
M.equip_to_slot_or_del(new /obj/item/clothing/head/helmet/space/pirate(M), slot_head)
M.equip_to_slot_or_del(new /obj/item/clothing/glasses/eyepatch(M), slot_glasses)
-
M.equip_to_slot_or_del(new /obj/item/weapon/melee/energy/sword/pirate(M), slot_r_hand)
+ equip_special_id(M,get_all_accesses(), "Space Pirate", /obj/item/weapon/card/id)
if("soviet soldier")
M.equip_to_slot_or_del(new /obj/item/clothing/under/soviet(M), slot_w_uniform)
M.equip_to_slot_or_del(new /obj/item/clothing/shoes/black(M), slot_shoes)
M.equip_to_slot_or_del(new /obj/item/clothing/head/ushanka(M), slot_head)
+ equip_special_id(M,get_all_accesses(), "Soviet Soldier", /obj/item/weapon/card/id)
- if("tunnel clown")//Tunnel clowns rule!
+ if("tunnel clown")
M.equip_to_slot_or_del(new /obj/item/clothing/under/rank/clown(M), slot_w_uniform)
+ M.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack(M), slot_back)
M.equip_to_slot_or_del(new /obj/item/clothing/shoes/clown_shoes(M), slot_shoes)
M.equip_to_slot_or_del(new /obj/item/clothing/gloves/color/black(M), slot_gloves)
M.equip_to_slot_or_del(new /obj/item/clothing/mask/gas/clown_hat(M), slot_wear_mask)
M.equip_to_slot_or_del(new /obj/item/clothing/head/chaplain_hood(M), slot_head)
M.equip_to_slot_or_del(new /obj/item/device/radio/headset(M), slot_l_ear)
+ M.equip_to_slot_or_del(new /obj/item/weapon/storage/belt/utility/full/multitool(M), slot_belt)
M.equip_to_slot_or_del(new /obj/item/clothing/glasses/thermal/monocle(M), slot_glasses)
M.equip_to_slot_or_del(new /obj/item/clothing/suit/chaplain_hoodie(M), slot_wear_suit)
M.equip_to_slot_or_del(new /obj/item/weapon/reagent_containers/food/snacks/grown/banana(M), slot_l_store)
M.equip_to_slot_or_del(new /obj/item/weapon/bikehorn(M), slot_r_store)
-
- var/obj/item/weapon/card/id/W = new(M)
- W.name = "[M.real_name]'s ID Card (Tunnel Clown!)"
- W.access = get_all_accesses()
- W.assignment = "Tunnel Clown!"
- W.registered_name = M.real_name
- M.equip_to_slot_or_del(W, slot_wear_id)
-
+ equip_special_id(M,get_all_accesses(), "Tunnel Clown", /obj/item/weapon/card/id)
+ M.equip_to_slot_or_del(new /obj/item/device/flashlight(M), slot_in_backpack)
var/obj/item/weapon/twohanded/fireaxe/fire_axe = new(M)
M.equip_to_slot_or_del(fire_axe, slot_r_hand)
+ if("survivor")
+ M.equip_to_slot_or_del(new /obj/item/clothing/under/overalls(M), slot_w_uniform)
+ M.equip_to_slot_or_del(new /obj/item/clothing/shoes/white(M), slot_shoes)
+ M.equip_to_slot_or_del(new /obj/item/clothing/gloves/color/latex(M), slot_gloves)
+ M.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack(M), slot_back)
+ M.equip_to_slot_or_del(new /obj/item/device/radio/headset(M), slot_l_ear)
+ equip_special_id(M,get_all_accesses(), "Survivor", /obj/item/weapon/card/id)
+ for(var/obj/item/carried_item in M.contents)
+ if(!istype(carried_item, /obj/item/weapon/implant))
+ carried_item.add_blood(M)
+
if("masked killer")
M.equip_to_slot_or_del(new /obj/item/clothing/under/overalls(M), slot_w_uniform)
+ M.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack(M), slot_back)
M.equip_to_slot_or_del(new /obj/item/clothing/shoes/white(M), slot_shoes)
M.equip_to_slot_or_del(new /obj/item/clothing/gloves/color/latex(M), slot_gloves)
M.equip_to_slot_or_del(new /obj/item/clothing/mask/surgical(M), slot_wear_mask)
@@ -795,46 +805,40 @@ But you can call procs that are of type /mob/living/carbon/human/proc/ for that
M.equip_to_slot_or_del(new /obj/item/clothing/suit/apron(M), slot_wear_suit)
M.equip_to_slot_or_del(new /obj/item/weapon/kitchen/knife(M), slot_l_store)
M.equip_to_slot_or_del(new /obj/item/weapon/scalpel(M), slot_r_store)
-
+ M.equip_to_slot_or_del(new /obj/item/device/flashlight(M), slot_in_backpack)
+ equip_special_id(M,get_all_accesses(), "Masked Killer", /obj/item/weapon/card/id/syndicate)
var/obj/item/weapon/twohanded/fireaxe/fire_axe = new(M)
M.equip_to_slot_or_del(fire_axe, slot_r_hand)
-
for(var/obj/item/carried_item in M.contents)
- if(!istype(carried_item, /obj/item/weapon/implant))//If it's not an implant.
+ if(!istype(carried_item, /obj/item/weapon/implant))
carried_item.add_blood(M)//Oh yes, there will be blood...
if("dark lord")
M.equip_to_slot_or_del(new /obj/item/clothing/under/color/black(M), slot_w_uniform)
M.equip_to_slot_or_del(new /obj/item/clothing/shoes/black(M), slot_shoes)
M.equip_to_slot_or_del(new /obj/item/clothing/gloves/color/black(M), slot_gloves)
- M.equip_to_slot_or_del(new /obj/item/device/radio/headset(M), slot_l_ear)
+ M.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack(M), slot_back)
+ M.equip_to_slot_or_del(new /obj/item/device/flashlight(M), slot_in_backpack)
+ M.equip_to_slot_or_del(new /obj/item/device/radio/headset/syndicate(M), slot_l_ear)
M.equip_to_slot_or_del(new /obj/item/weapon/twohanded/dualsaber/red(M), slot_l_hand)
-
var/obj/item/clothing/head/chaplain_hood/hood = new(M)
hood.name = "dark lord hood"
M.equip_to_slot_or_del(hood, slot_head)
-
var/obj/item/clothing/suit/chaplain_hoodie/robe = new(M)
robe.name = "dark lord robes"
M.equip_to_slot_or_del(robe, slot_wear_suit)
-
- var/obj/item/weapon/card/id/syndicate/W = new(M)
- W.name = "[M.real_name]'s ID Card (Dark Lord)"
- W.icon_state = "syndie"
- W.access = get_all_accesses()
- W.assignment = "Dark Lord"
- W.registered_name = M.real_name
- M.equip_to_slot_or_del(W, slot_wear_id)
+ equip_special_id(M,get_all_accesses(), "Dark Lord", /obj/item/weapon/card/id/syndicate)
if("assassin")
M.equip_to_slot_or_del(new /obj/item/clothing/under/suit_jacket(M), slot_w_uniform)
M.equip_to_slot_or_del(new /obj/item/clothing/shoes/black(M), slot_shoes)
M.equip_to_slot_or_del(new /obj/item/clothing/gloves/color/black(M), slot_gloves)
- M.equip_to_slot_or_del(new /obj/item/device/radio/headset(M), slot_l_ear)
+ M.equip_to_slot_or_del(new /obj/item/device/radio/headset/syndicate(M), slot_l_ear)
M.equip_to_slot_or_del(new /obj/item/clothing/glasses/sunglasses(M), slot_glasses)
M.equip_to_slot_or_del(new /obj/item/clothing/suit/wcoat(M), slot_wear_suit)
M.equip_to_slot_or_del(new /obj/item/weapon/melee/energy/sword/saber(M), slot_l_store)
-
+ M.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack(M), slot_back)
+ M.equip_to_slot_or_del(new /obj/item/device/flashlight(M), slot_in_backpack)
var/obj/item/weapon/storage/secure/briefcase/sec_briefcase = new(M)
for(var/obj/item/briefcase_item in sec_briefcase)
qdel(briefcase_item)
@@ -844,22 +848,43 @@ But you can call procs that are of type /mob/living/carbon/human/proc/ for that
sec_briefcase.contents += new /obj/item/weapon/gun/projectile/revolver/mateba
sec_briefcase.contents += new /obj/item/ammo_box/a357
sec_briefcase.contents += new /obj/item/weapon/grenade/plastic/c4
+ // briefcase must be unlocked by setting the code.
M.equip_to_slot_or_del(sec_briefcase, slot_l_hand)
-
+ var/obj/item/weapon/implant/dust/DUST = new /obj/item/weapon/implant/dust(M)
+ DUST.implant(M)
var/obj/item/device/pda/heads/pda = new(M)
pda.owner = M.real_name
pda.ownjob = "Reaper"
pda.name = "PDA-[M.real_name] ([pda.ownjob])"
-
M.equip_to_slot_or_del(pda, slot_belt)
+ equip_special_id(M,get_all_accesses(), "Reaper", /obj/item/weapon/card/id/syndicate)
- var/obj/item/weapon/card/id/syndicate/W = new(M)
- W.name = "[M.real_name]'s ID Card (Reaper)"
- W.icon_state = "syndie"
- W.access = get_all_accesses()
- W.assignment = "Reaper"
- W.registered_name = M.real_name
- M.equip_to_slot_or_del(W, slot_wear_id)
+ if("spy")
+ M.equip_to_slot_or_del(new /obj/item/clothing/under/suit_jacket/really_black(M), slot_w_uniform)
+ M.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack(M), slot_back)
+ M.equip_to_slot_or_del(new /obj/item/weapon/storage/box/survival(M), slot_in_backpack)
+ M.equip_to_slot_or_del(new /obj/item/weapon/gun/projectile/automatic/pistol(M), slot_in_backpack)
+ M.equip_to_slot_or_del(new /obj/item/weapon/suppressor(M), slot_in_backpack)
+ M.equip_to_slot_or_del(new /obj/item/weapon/card/emag(M), slot_in_backpack)
+ M.equip_to_slot_or_del(new /obj/item/device/flashlight(M), slot_in_backpack)
+ M.equip_to_slot_or_del(new /obj/item/clothing/shoes/black(M), slot_shoes)
+ M.equip_to_slot_or_del(new /obj/item/clothing/glasses/hud/security/chameleon(M), slot_glasses)
+ var/obj/item/clothing/gloves/combat/G = new /obj/item/clothing/gloves/combat(src)
+ G.name = "black gloves"
+ M.equip_to_slot_or_del(G, slot_gloves)
+ M.equip_to_slot_or_del(new /obj/item/device/radio/headset/syndicate(M), slot_l_ear)
+ M.equip_to_slot_or_del(new /obj/item/weapon/melee/energy/sword/saber(M), slot_l_store)
+ M.equip_to_slot_or_del(new /obj/item/weapon/pen/sleepy(M), slot_r_store)
+ var/obj/item/weapon/implant/dust/DUST = new /obj/item/weapon/implant/dust(M)
+ DUST.implant(M)
+ var/obj/item/weapon/implant/dust/STOR = new /obj/item/weapon/implant/storage(M)
+ STOR.implant(M)
+ var/obj/item/device/pda/heads/pda = new(M)
+ pda.owner = M.real_name
+ pda.ownjob = "Spy"
+ pda.name = "PDA-[M.real_name] ([pda.ownjob])"
+ M.equip_to_slot_or_del(pda, slot_belt)
+ equip_special_id(M,get_all_accesses(), "Spy", /obj/item/weapon/card/id/syndicate)
if("death commando")//Was looking to add this for a while.
M.equip_death_commando()
@@ -867,139 +892,117 @@ But you can call procs that are of type /mob/living/carbon/human/proc/ for that
if("syndicate commando")
M.equip_syndicate_commando()
- if("nanotrasen officer")
+ if("nt vip guest")
+ M.equip_or_collect(new /obj/item/clothing/under/suit_jacket/really_black(M), slot_w_uniform)
+ M.equip_or_collect(new /obj/item/clothing/shoes/black(M), slot_shoes)
+ M.equip_or_collect(new /obj/item/clothing/gloves/color/black(M), slot_gloves)
+ M.equip_or_collect(new /obj/item/weapon/storage/backpack/satchel(M), slot_back)
+ M.equip_or_collect(new /obj/item/clothing/head/that(M), slot_head)
+ M.equip_or_collect(new /obj/item/device/radio/headset/ert(M), slot_l_ear)
+ M.equip_or_collect(new /obj/item/device/pda/(M), slot_belt)
+ equip_special_id(M,get_centcom_access("VIP Guest"), "VIP Guest", /obj/item/weapon/card/id/centcom)
+ if("nt navy officer")
M.equip_or_collect(new /obj/item/clothing/under/rank/centcom/officer(M), slot_w_uniform)
M.equip_or_collect(new /obj/item/clothing/shoes/centcom(M), slot_shoes)
M.equip_or_collect(new /obj/item/clothing/gloves/color/white(M), slot_gloves)
- M.equip_or_collect(new /obj/item/device/radio/headset/ert(M), slot_l_ear)
+ M.equip_or_collect(new /obj/item/device/radio/headset/centcom(M), slot_l_ear)
M.equip_or_collect(new /obj/item/clothing/head/beret/centcom/officer(M), slot_head)
M.equip_or_collect(new /obj/item/device/pda/centcom(M), slot_belt)
M.equip_or_collect(new /obj/item/clothing/glasses/hud/security/sunglasses(M), slot_glasses)
M.equip_or_collect(new /obj/item/weapon/storage/backpack/satchel(M), slot_back)
M.equip_or_collect(new /obj/item/weapon/gun/energy/pulse/pistol(M), slot_in_backpack)
-
+ M.equip_or_collect(new /obj/item/weapon/implanter/dust(M), slot_in_backpack)
+ M.equip_or_collect(new /obj/item/weapon/implanter/death_alarm(M), slot_in_backpack)
var/obj/item/weapon/implant/loyalty/L = new/obj/item/weapon/implant/loyalty(M)
L.imp_in = M
L.implanted = 1
M.sec_hud_set_implants()
+ equip_special_id(M,get_centcom_access("Nanotrasen Navy Officer"), "Nanotrasen Navy Officer", /obj/item/weapon/card/id/centcom)
- var/obj/item/weapon/card/id/centcom/W = new(M)
- W.name = "[M.real_name]'s ID Card (Nanotrasen Navy Officer)"
- W.assignment = "Nanotrasen Navy Officer"
- W.access = get_centcom_access(W.assignment)
- W.registered_name = M.real_name
- M.equip_or_collect(W, slot_wear_id)
-
- if("nanotrasen captain")
+ if("nt navy captain")
M.equip_or_collect(new /obj/item/clothing/under/rank/centcom/captain(M), slot_w_uniform)
M.equip_or_collect(new /obj/item/clothing/shoes/centcom(M), slot_shoes)
M.equip_or_collect(new /obj/item/clothing/gloves/color/white(M), slot_gloves)
- M.equip_or_collect(new /obj/item/device/radio/headset/ert(M), slot_l_ear)
+ M.equip_or_collect(new /obj/item/device/radio/headset/centcom(M), slot_l_ear)
M.equip_or_collect(new /obj/item/clothing/head/beret/centcom/captain(M), slot_head)
M.equip_or_collect(new /obj/item/device/pda/centcom(M), slot_belt)
M.equip_or_collect(new /obj/item/clothing/glasses/hud/security/sunglasses(M), slot_glasses)
M.equip_or_collect(new /obj/item/weapon/storage/backpack/satchel(M), slot_back)
M.equip_or_collect(new /obj/item/weapon/gun/energy/pulse/pistol(M), slot_in_backpack)
+ M.equip_or_collect(new /obj/item/weapon/implanter/dust(M), slot_in_backpack)
+ M.equip_or_collect(new /obj/item/weapon/implanter/death_alarm(M), slot_in_backpack)
var/obj/item/weapon/implant/loyalty/L = new/obj/item/weapon/implant/loyalty(M)
L.imp_in = M
L.implanted = 1
M.sec_hud_set_implants()
+ equip_special_id(M,get_centcom_access("Nanotrasen Navy Captain"), "Nanotrasen Navy Captain", /obj/item/weapon/card/id/centcom)
- var/obj/item/weapon/card/id/centcom/W = new(M)
- W.name = "[M.real_name]'s ID Card (Nanotrasen Navy Captain)"
- W.access = get_all_accesses()
- W.assignment = "Nanotrasen Navy Captain"
- W.access = get_centcom_access(W.assignment)
- W.registered_name = M.real_name
- M.equip_or_collect(W, slot_wear_id)
+ if("emergency response team member", "emergency response team leader")
+ var/datum/response_team/equip_team = null
+ switch(alert("Level", "Emergency Response Team", "Amber", "Red", "Gamma"))
+ if("Amber")
+ equip_team = new /datum/response_team/amber
+ if("Red")
+ equip_team = new /datum/response_team/red
+ if("Gamma")
+ equip_team = new /datum/response_team/gamma
+ if(!equip_team)
+ return
+ if(dresscode == "emergency response team leader")
+ equip_team.equip_officer("Commander", M)
+ else
+ switch(alert("Loadout Type", "Emergency Response Team", "Security", "Engineer", "Medic"))
+ if("Commander")
+ equip_team.equip_officer("Commander", M)
+ if("Security")
+ equip_team.equip_officer("Security", M)
+ if("Engineer")
+ equip_team.equip_officer("Engineer", M)
+ if("Medic")
+ equip_team.equip_officer("Medic", M)
+ else
+ to_chat(src, "Invalid ERT Loadout selected")
- if("emergency response team member")
- M.equip_to_slot_or_del(new /obj/item/clothing/under/rank/centcom_officer(M), slot_w_uniform)
- M.equip_to_slot_or_del(new /obj/item/clothing/shoes/combat(M), slot_shoes)
- M.equip_to_slot_or_del(new /obj/item/clothing/gloves/combat(M), slot_gloves)
- M.equip_to_slot_or_del(new /obj/item/device/radio/headset/ert/alt(M), slot_l_ear)
- M.equip_to_slot_or_del(new /obj/item/weapon/gun/energy/gun(M), slot_belt)
- M.equip_to_slot_or_del(new /obj/item/clothing/glasses/sunglasses(M), slot_glasses)
- M.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack/ert(M), slot_back)
-
- var/obj/item/weapon/card/id/W = new(M)
- W.name = "[M.real_name]'s ID Card (Emergency Response Team - Member)"
- W.icon_state = "ERT_empty"
- W.assignment = "Emergency Response Team Member"
- W.access = get_centcom_access(W.assignment)
- W.registered_name = M.real_name
- M.equip_to_slot_or_del(W, slot_wear_id)
-
- var/obj/item/device/pda/centcom/pda = new(M)
- pda.owner = M.real_name
- pda.ownjob = "Emergency Response Team"
- pda.name = "PDA-[M.real_name] ([pda.ownjob])"
-
- if("emergency response team leader")
- M.equip_to_slot_or_del(new /obj/item/clothing/under/rank/centcom_officer(M), slot_w_uniform)
- M.equip_to_slot_or_del(new /obj/item/clothing/shoes/combat(M), slot_shoes)
- M.equip_to_slot_or_del(new /obj/item/clothing/gloves/combat(M), slot_gloves)
- M.equip_to_slot_or_del(new /obj/item/device/radio/headset/ert/alt(M), slot_l_ear)
- M.equip_to_slot_or_del(new /obj/item/weapon/gun/energy/gun(M), slot_belt)
- M.equip_to_slot_or_del(new /obj/item/clothing/glasses/sunglasses(M), slot_glasses)
- M.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack/ert/commander(M), slot_back)
-
- var/obj/item/weapon/card/id/W = new(M)
- W.name = "[M.real_name]'s ID Card (Emergency Response Team - Leader)"
- W.icon_state = "ERT_leader"
- W.assignment = "Emergency Response Team Leader"
- W.access = get_centcom_access(W.assignment)
- W.registered_name = M.real_name
- M.equip_to_slot_or_del(W, slot_wear_id)
-
- var/obj/item/device/pda/centcom/pda = new(M)
- pda.owner = M.real_name
- pda.ownjob = "Emergency Response Team Leader"
- pda.name = "PDA-[M.real_name] ([pda.ownjob])"
-
- if("special ops officer")
+ if("nt special ops officer")
M.equip_to_slot_or_del(new /obj/item/clothing/under/syndicate/combat(M), slot_w_uniform)
- M.equip_to_slot_or_del(new /obj/item/clothing/suit/space/deathsquad/officer(M), slot_wear_suit)
M.equip_to_slot_or_del(new /obj/item/clothing/shoes/combat(M), slot_shoes)
M.equip_to_slot_or_del(new /obj/item/clothing/gloves/combat(M), slot_gloves)
- M.equip_to_slot_or_del(new /obj/item/device/radio/headset/ert/alt(src), slot_l_ear)
- M.equip_to_slot_or_del(new /obj/item/clothing/glasses/thermal/cyber(M), slot_glasses)
- M.equip_to_slot_or_del(new /obj/item/clothing/mask/cigarette/cigar/cohiba(M), slot_wear_mask)
- M.equip_to_slot_or_del(new /obj/item/clothing/head/helmet/space/deathsquad/beret(M), slot_head)
+ M.equip_to_slot_or_del(new /obj/item/device/radio/headset/centcom(src), slot_l_ear)
+ M.equip_to_slot_or_del(new /obj/item/clothing/head/helmet/space/deathsquad/beret(M), slot_head) // job has /obj/item/clothing/head/beret/centcom/officer/navy
+ M.equip_to_slot_or_del(new /obj/item/device/pda/centcom(M), slot_belt)
+ M.equip_to_slot_or_del(new /obj/item/clothing/glasses/thermal/cyber(M), slot_glasses) // job has /obj/item/clothing/glasses/hud/security/sunglasses
M.equip_to_slot_or_del(new /obj/item/weapon/gun/energy/pulse/pistol/m1911(M), slot_belt)
- M.equip_to_slot_or_del(new /obj/item/weapon/storage/box/matches(M), slot_r_store)
- M.equip_to_slot_or_del(new /obj/item/weapon/twohanded/dualsaber/red(M), slot_l_store)
-
- M.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack/satchel(M), slot_back)
- M.equip_to_slot_or_del(new /obj/item/clothing/mask/gas/sechailer/swat(M), slot_in_backpack)
+ M.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack/security(M), slot_back)
+ M.equip_to_slot_or_del(new /obj/item/clothing/suit/space/deathsquad/officer(M), slot_wear_suit)
M.equip_to_slot_or_del(new /obj/item/weapon/tank/emergency_oxygen/double/full(M), slot_in_backpack)
+ M.equip_to_slot_or_del(new /obj/item/weapon/implanter/dust(M), slot_in_backpack)
+ M.equip_to_slot_or_del(new /obj/item/weapon/implanter/death_alarm(M), slot_in_backpack)
+ equip_special_id(M,get_centcom_access("Special Operations Officer"), "Special Operations Officer", /obj/item/weapon/card/id/centcom)
+ // The following items are unique to this outfit - the special ops officer job does not spawn with them.
+ M.equip_to_slot_or_del(new /obj/item/clothing/mask/gas/sechailer/swat(M), slot_in_backpack)
+ M.equip_to_slot_or_del(new /obj/item/weapon/twohanded/dualsaber/red(M), slot_in_backpack)
+ M.equip_to_slot_or_del(new /obj/item/weapon/pinpointer/advpinpointer(M), slot_in_backpack)
M.equip_to_slot_or_del(new /obj/item/weapon/reagent_containers/hypospray/combat/nanites(M), slot_in_backpack)
- M.equip_to_slot_or_del(new /obj/item/weapon/storage/box/flashbangs(src), slot_in_backpack)
- M.equip_to_slot_or_del(new /obj/item/weapon/storage/box/zipties(src), slot_in_backpack)
- M.equip_to_slot_or_del(new /obj/item/clothing/shoes/magboots/syndie/advance(src), slot_in_backpack)
+ M.equip_to_slot_or_del(new /obj/item/weapon/storage/box/flashbangs(M), slot_in_backpack)
+ M.equip_to_slot_or_del(new /obj/item/weapon/storage/box/zipties(M), slot_in_backpack)
+ M.equip_to_slot_or_del(new /obj/item/clothing/mask/cigarette/cigar/cohiba(M), slot_wear_mask)
+ M.equip_to_slot_or_del(new /obj/item/weapon/storage/box/matches(M), slot_r_store)
+ M.equip_to_slot_or_del(new /obj/item/clothing/shoes/magboots/advance(M), slot_in_backpack)
+ M.equip_to_slot_or_del(new /obj/item/weapon/implanter/loyalty(M), slot_in_backpack)
-
- var/obj/item/weapon/card/id/W = new(M)
- W.name = "[M.real_name]'s ID Card"
- W.icon_state = "commander"
- W.assignment = "Special Operations Officer"
- W.access = get_centcom_access(W.assignment)
- W.registered_name = M.real_name
- M.equip_to_slot_or_del(W, slot_wear_id)
-
- if("special ops formal")
+ if("nt special ops formal")
M.equip_or_collect(new /obj/item/clothing/under/rank/centcom/captain(M), slot_w_uniform)
- M.equip_to_slot_or_del(new /obj/item/device/radio/headset/ert/alt(src), slot_l_ear)
- M.equip_to_slot_or_del(new /obj/item/clothing/gloves/combat(M), slot_gloves)
M.equip_to_slot_or_del(new /obj/item/clothing/shoes/combat(M), slot_shoes)
+ M.equip_to_slot_or_del(new /obj/item/clothing/gloves/combat(M), slot_gloves)
+ M.equip_to_slot_or_del(new /obj/item/device/radio/headset/centcom(src), slot_l_ear)
M.equip_to_slot_or_del(new /obj/item/clothing/head/helmet/space/deathsquad/beret(M), slot_head)
- M.equip_to_slot_or_del(new /obj/item/clothing/glasses/thermal/cyber(M), slot_glasses)
+ M.equip_to_slot_or_del(new /obj/item/clothing/glasses/thermal/cyber(M), slot_glasses) // special
+ M.equip_to_slot_or_del(new /obj/item/weapon/gun/energy/pulse/pistol/m1911(M), slot_in_backpack)
M.equip_to_slot_or_del(new /obj/item/clothing/mask/cigarette/cigar/cohiba(M), slot_wear_mask)
M.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack/satchel(M), slot_back)
M.equip_to_slot_or_del(new /obj/item/weapon/storage/box/matches(M), slot_r_store)
- M.equip_or_collect(new /obj/item/weapon/melee/classic_baton/telescopic(M), slot_l_store)
- M.equip_to_slot_or_del(new /obj/item/weapon/gun/energy/pulse/pistol/m1911(M), slot_in_backpack)
+ M.equip_or_collect(new /obj/item/weapon/melee/classic_baton/telescopic(M), slot_in_backpack)
var/obj/item/device/pda/centcom/pda = new(M)
pda.owner = M.real_name
@@ -1009,17 +1012,9 @@ But you can call procs that are of type /mob/living/carbon/human/proc/ for that
pda.desc = "A portable microcomputer by Thinktronic Systems, LTD. This is model is a special edition designed for military field work."
M.equip_or_collect(pda, slot_belt)
-
- M.equip_or_collect(new /obj/item/clothing/glasses/sunglasses(M), slot_l_store)
- M.equip_or_collect(new /obj/item/weapon/melee/classic_baton/telescopic(M), slot_r_store)
-
- var/obj/item/weapon/card/id/W = new(M)
- W.name = "[M.real_name]'s ID Card (Special Operations Officer)"
- W.icon_state = "commander"
- W.assignment = "Special Operations Officer"
- W.access = get_centcom_access(W.assignment)
- W.registered_name = M.real_name
- M.equip_to_slot_or_del(W, slot_wear_id)
+ M.equip_or_collect(new /obj/item/weapon/implanter/dust(M), slot_in_backpack)
+ M.equip_or_collect(new /obj/item/weapon/implanter/death_alarm(M), slot_in_backpack)
+ equip_special_id(M,get_centcom_access("Special Operations Officer"), "Special Operations Officer", /obj/item/weapon/card/id/centcom)
if("singuloth knight")
M.equip_to_slot_or_del(new /obj/item/clothing/under/syndicate/combat(M), slot_w_uniform)
@@ -1033,16 +1028,7 @@ But you can call procs that are of type /mob/living/carbon/human/proc/ for that
M.equip_to_slot_or_del(new /obj/item/weapon/claymore/ceremonial(M), slot_belt)
M.equip_to_slot_or_del(new /obj/item/weapon/tank/oxygen(M), slot_s_store)
M.equip_to_slot_or_del(new /obj/item/weapon/twohanded/knighthammer(M), slot_back)
-
-
- var/obj/item/weapon/card/id/W = new(M)
- W.name = "[M.real_name]'s ID Card (Singuloth Knight)"
- W.icon_state = "syndie"
- W.access = get_all_accesses()
- W.access += get_all_centcom_access()
- W.assignment = "Singuloth Knight"
- W.registered_name = M.real_name
- M.equip_to_slot_or_del(W, slot_wear_id)
+ equip_special_id(M,get_all_accesses(), "Singuloth Knight", /obj/item/weapon/card/id)
if("blue wizard")
M.equip_to_slot_or_del(new /obj/item/clothing/under/color/lightpurple(M), slot_w_uniform)
@@ -1055,6 +1041,7 @@ But you can call procs that are of type /mob/living/carbon/human/proc/ for that
M.equip_to_slot_or_del(new /obj/item/weapon/twohanded/staff(M), slot_l_hand)
M.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack(M), slot_back)
M.equip_to_slot_or_del(new /obj/item/weapon/storage/box(M), slot_in_backpack)
+ equip_special_id(M,get_all_accesses(), "Wizard", /obj/item/weapon/card/id)
if("red wizard")
M.equip_to_slot_or_del(new /obj/item/clothing/under/color/lightpurple(M), slot_w_uniform)
@@ -1067,6 +1054,7 @@ But you can call procs that are of type /mob/living/carbon/human/proc/ for that
M.equip_to_slot_or_del(new /obj/item/weapon/twohanded/staff(M), slot_l_hand)
M.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack(M), slot_back)
M.equip_to_slot_or_del(new /obj/item/weapon/storage/box(M), slot_in_backpack)
+ equip_special_id(M,get_all_accesses(), "Wizard", /obj/item/weapon/card/id)
if("marisa wizard")
M.equip_to_slot_or_del(new /obj/item/clothing/under/color/lightpurple(M), slot_w_uniform)
@@ -1079,6 +1067,7 @@ But you can call procs that are of type /mob/living/carbon/human/proc/ for that
M.equip_to_slot_or_del(new /obj/item/weapon/twohanded/staff(M), slot_l_hand)
M.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack(M), slot_back)
M.equip_to_slot_or_del(new /obj/item/weapon/storage/box(M), slot_in_backpack)
+ equip_special_id(M,get_all_accesses(), "Wizard", /obj/item/weapon/card/id)
if("soviet admiral")
M.equip_to_slot_or_del(new /obj/item/clothing/head/hgpiratecap(M), slot_head)
@@ -1090,14 +1079,8 @@ But you can call procs that are of type /mob/living/carbon/human/proc/ for that
M.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack/satchel(M), slot_back)
M.equip_to_slot_or_del(new /obj/item/weapon/gun/projectile/revolver/mateba(M), slot_belt)
M.equip_to_slot_or_del(new /obj/item/clothing/under/soviet(M), slot_w_uniform)
- var/obj/item/weapon/card/id/W = new(M)
- W.name = "[M.real_name]'s ID Card"
- W.icon_state = "commander"
- W.access = get_all_accesses()
- W.access += get_all_centcom_access()
- W.assignment = "Admiral"
- W.registered_name = M.real_name
- M.equip_to_slot_or_del(W, slot_wear_id)
+ equip_special_id(M,get_all_accesses() + get_all_centcom_access(), "Admiral", /obj/item/weapon/card/id)
+ //W.icon_state = "commander"
if("chrono legionnaire")
M.equip_to_slot_or_del(new /obj/item/clothing/head/helmet/space/chronos(M), slot_head)
@@ -1109,12 +1092,7 @@ But you can call procs that are of type /mob/living/carbon/human/proc/ for that
M.equip_to_slot_or_del(new /obj/item/weapon/chrono_eraser(M), slot_back)
M.equip_to_slot_or_del(new /obj/item/clothing/under/syndicate(M), slot_w_uniform)
M.equip_to_slot_or_del(new /obj/item/weapon/tank/emergency_oxygen/double/full(src), slot_s_store)
- var/obj/item/weapon/card/id/W = new(M)
- W.name = "[M.real_name]'s ID Card"
- W.icon_state = "syndie"
- W.assignment = "Chrono Legionnaire"
- W.registered_name = M.real_name
- M.equip_to_slot_or_del(W, slot_wear_id)
+ equip_special_id(M,get_all_accesses() + get_all_centcom_access(), "Chrono Legionnaire", /obj/item/weapon/card/id/syndicate)
M.regenerate_icons()
@@ -1122,6 +1100,19 @@ But you can call procs that are of type /mob/living/carbon/human/proc/ for that
message_admins("\blue [key_name_admin(usr)] changed the equipment of [key_name_admin(M)] to [dresscode].", 1)
return
+/client/proc/equip_special_id(var/mob/living/carbon/human/H, var/list/theaccess = null, var/jobtext, var/obj/item/weapon/card/id/id_type = /obj/item/weapon/card/id)
+ if(!check_rights(R_EVENT))
+ return
+
+ var/obj/item/weapon/card/id/W = new id_type(H)
+ if(istype(W, /obj/item/weapon/card/id/syndicate))
+ W.icon_state = "syndie"
+ W.name = "[H.real_name]'s ID Card ([jobtext])"
+ W.access = theaccess
+ W.assignment = "[jobtext]"
+ W.registered_name = H.real_name
+ H.equip_to_slot_or_del(W, slot_wear_id)
+
/client/proc/startSinglo()
set category = "Debug"
set name = "Start Singularity"
diff --git a/code/modules/clothing/glasses/hud.dm b/code/modules/clothing/glasses/hud.dm
index 25a0833c304..8e5d7c08397 100644
--- a/code/modules/clothing/glasses/hud.dm
+++ b/code/modules/clothing/glasses/hud.dm
@@ -121,6 +121,10 @@
desc = "A heads-up display capable of analyzing the health and status of plants growing in hydro trays and soil."
icon_state = "hydroponichud"
HUDType = DATA_HUD_HYDROPONIC
+ species_fit = list("Vox")
+ sprite_sheets = list(
+ "Vox" = 'icons/mob/species/vox/eyes.dmi'
+ )
/obj/item/clothing/glasses/hud/hydroponic/night
name = "Night Vision Hydroponic HUD"
diff --git a/code/modules/clothing/spacesuits/rig.dm b/code/modules/clothing/spacesuits/rig.dm
index a656feeb08f..415a5dcd12a 100644
--- a/code/modules/clothing/spacesuits/rig.dm
+++ b/code/modules/clothing/spacesuits/rig.dm
@@ -292,7 +292,7 @@
/obj/item/clothing/head/helmet/space/rig/syndi
name = "blood-red hardsuit helmet"
desc = "A dual-mode advanced helmet designed for work in special operations. It is in travel mode. Property of Gorlex Marauders."
- icon_state = "hardsuit1-syndi"
+ icon_state = "rig1-syndi"
item_state = "syndie_helm"
item_color = "syndi"
armor = list(melee = 40, bullet = 50, laser = 30, energy = 15, bomb = 35, bio = 100, rad = 50)
@@ -301,7 +301,7 @@
action_button_name = "Toggle Helmet Mode"
/obj/item/clothing/head/helmet/space/rig/syndi/update_icon()
- icon_state = "hardsuit[on]-[item_color]"
+ icon_state = "rig[on]-[item_color]"
/obj/item/clothing/head/helmet/space/rig/syndi/attack_self(mob/user)
if(!isturf(user.loc))
@@ -334,7 +334,7 @@
/obj/item/clothing/suit/space/rig/syndi
name = "blood-red hardsuit"
desc = "A dual-mode advanced hardsuit designed for work in special operations. It is in travel mode. Property of Gorlex Marauders."
- icon_state = "hardsuit1-syndi"
+ icon_state = "rig1-syndi"
item_state = "syndie_hardsuit"
item_color = "syndi"
w_class = 3
@@ -344,7 +344,7 @@
allowed = list(/obj/item/weapon/gun,/obj/item/ammo_box,/obj/item/ammo_casing,/obj/item/weapon/melee/baton,/obj/item/weapon/melee/energy/sword/saber,/obj/item/weapon/restraints/handcuffs,/obj/item/weapon/tank)
/obj/item/clothing/suit/space/rig/syndi/update_icon()
- icon_state = "hardsuit[on]-[item_color]"
+ icon_state = "rig[on]-[item_color]"
/obj/item/clothing/suit/space/rig/syndi/attack_self(mob/user)
on = !on
@@ -374,7 +374,7 @@
/obj/item/clothing/head/helmet/space/rig/syndi/elite
name = "elite syndicate hardsuit helmet"
desc = "An elite version of the syndicate helmet, with improved armour and fire shielding. It is in travel mode. Property of Gorlex Marauders."
- icon_state = "hardsuit0-syndielite"
+ icon_state = "rig0-syndielite"
item_color = "syndielite"
armor = list(melee = 60, bullet = 60, laser = 50, energy = 25, bomb = 55, bio = 100, rad = 70)
heat_protection = HEAD
@@ -393,7 +393,7 @@
/obj/item/clothing/suit/space/rig/syndi/elite
name = "elite syndicate hardsuit"
desc = "An elite version of the syndicate hardsuit, with improved armour and fire shielding. It is in travel mode."
- icon_state = "hardsuit0-syndielite"
+ icon_state = "rig0-syndielite"
item_color = "syndielite"
armor = list(melee = 60, bullet = 60, laser = 50, energy = 25, bomb = 55, bio = 100, rad = 70)
heat_protection = UPPER_TORSO|LOWER_TORSO|LEGS|FEET|ARMS|HANDS
@@ -516,14 +516,14 @@
/obj/item/clothing/head/helmet/space/rig/security/hos
name = "head of security's hardsuit helmet"
desc = "a special bulky helmet designed for work in a hazardous, low pressure environment. Has an additional layer of armor."
- icon_state = "hardsuit0-hos"
+ icon_state = "rig0-hos"
item_color = "hos"
armor = list(melee = 45, bullet = 25, laser = 30,energy = 10, bomb = 25, bio = 100, rad = 50)
sprite_sheets = null
/obj/item/clothing/suit/space/rig/security/hos
- icon_state = "hardsuit-hos"
+ icon_state = "rig-hos"
name = "head of security's hardsuit"
desc = "A special bulky suit that protects against hazardous, low pressure environments. Has an additional layer of armor."
armor = list(melee = 45, bullet = 25, laser = 30, energy = 10, bomb = 25, bio = 100, rad = 50)
@@ -535,7 +535,7 @@
/obj/item/clothing/suit/space/rig/shielded
name = "shielded hardsuit"
desc = "A hardsuit with built in energy shielding. Will rapidly recharge when not under fire."
- icon_state = "hardsuit-hos"
+ icon_state = "rig-hos"
allowed = list(/obj/item/device/flashlight,/obj/item/weapon/tank, /obj/item/weapon/gun,/obj/item/weapon/reagent_containers/spray/pepper,/obj/item/ammo_box,/obj/item/ammo_casing,/obj/item/weapon/melee/baton,/obj/item/weapon/restraints/handcuffs)
armor = list(melee = 30, bullet = 15, laser = 30, energy = 10, bomb = 10, bio = 100, rad = 50)
var/current_charges = 3
@@ -585,7 +585,7 @@
/obj/item/clothing/suit/space/rig/shielded/syndi
name = "blood-red hardsuit"
desc = "An advanced hardsuit with built in energy shielding."
- icon_state = "hardsuit1-syndi"
+ icon_state = "rig1-syndi"
item_state = "syndie_hardsuit"
item_color = "syndi"
armor = list(melee = 40, bullet = 50, laser = 30, energy = 15, bomb = 35, bio = 100, rad = 50)
@@ -603,7 +603,7 @@
/obj/item/clothing/head/helmet/space/rig/shielded/syndi
name = "blood-red hardsuit helmet"
desc = "An advanced hardsuit helmet with built in energy shielding."
- icon_state = "hardsuit1-syndi"
+ icon_state = "rig1-syndi"
item_state = "syndie_helm"
item_color = "syndi"
armor = list(melee = 40, bullet = 50, laser = 30, energy = 15, bomb = 35, bio = 100, rad = 50)
\ No newline at end of file
diff --git a/code/modules/clothing/under/accessories/accessory.dm b/code/modules/clothing/under/accessories/accessory.dm
index a8e44f2c363..b285624ffe0 100644
--- a/code/modules/clothing/under/accessories/accessory.dm
+++ b/code/modules/clothing/under/accessories/accessory.dm
@@ -103,35 +103,45 @@
/obj/item/clothing/accessory/stethoscope/attack(mob/living/carbon/human/M, mob/living/user)
if(ishuman(M) && isliving(user))
- if(user.a_intent == I_HELP)
- var/body_part = parse_zone(user.zone_sel.selecting)
- if(body_part)
- var/their = "their"
- switch(M.gender)
- if(MALE) their = "his"
- if(FEMALE) their = "her"
-
- var/sound = "pulse"
- var/sound_strength
-
- if(M.stat == DEAD || (M.status_flags&FAKEDEATH))
- sound_strength = "cannot hear"
- sound = "anything"
- else
- sound_strength = "hear a weak"
- switch(body_part)
- if("chest")
- if(M.oxyloss < 50)
- sound_strength = "hear a healthy"
- sound = "pulse and respiration"
- if("eyes","mouth")
- sound_strength = "cannot hear"
- sound = "anything"
- else
- sound_strength = "hear a weak"
-
- user.visible_message("[user] places [src] against [M]'s [body_part] and listens attentively.", "You place [src] against [their] [body_part]. You [sound_strength] [sound].")
- return
+ if(user == M)
+ user.visible_message("[user] places \the [src] against \his chest and listens attentively.", "You place \the [src] against your chest...")
+ else
+ user.visible_message("[user] places \the [src] against [M]'s chest and listens attentively.", "You place \the [src] against [M]'s chest...")
+ var/obj/item/organ/internal/H = M.get_int_organ(/obj/item/organ/internal/heart)
+ var/obj/item/organ/internal/L = M.get_int_organ(/obj/item/organ/internal/lungs)
+ if((H && M.pulse) || (L && !(NO_BREATH in M.mutations) && !(M.species.flags & NO_BREATH)))
+ var/color = "notice"
+ if(H)
+ var/heart_sound
+ switch(H.damage)
+ if(0 to 1)
+ heart_sound = "healthy"
+ if(1 to 25)
+ heart_sound = "offbeat"
+ if(25 to 50)
+ heart_sound = "uneven"
+ color = "warning"
+ if(50 to INFINITY)
+ heart_sound = "weak, unhealthy"
+ color = "warning"
+ to_chat(user, "You hear \an [heart_sound] pulse.")
+ if(L)
+ var/lung_sound
+ switch(L.damage)
+ if(0 to 1)
+ lung_sound = "healthy respiration"
+ if(1 to 25)
+ lung_sound = "labored respiration"
+ if(25 to 50)
+ lung_sound = "pained respiration"
+ color = "warning"
+ if(50 to INFINITY)
+ lung_sound = "gurgling"
+ color = "warning"
+ to_chat(user, "You hear [lung_sound].")
+ else
+ to_chat(user, "You don't hear anything.")
+ return
return ..(M,user)
diff --git a/code/modules/mob/living/carbon/death.dm b/code/modules/mob/living/carbon/death.dm
index fca8c59fec3..b0ccdc8381d 100644
--- a/code/modules/mob/living/carbon/death.dm
+++ b/code/modules/mob/living/carbon/death.dm
@@ -2,4 +2,8 @@
losebreath = 0
med_hud_set_health()
med_hud_set_status()
+
+ if(reagents)
+ reagents.death_metabolize(src)
+
..(gibbed)
\ No newline at end of file
diff --git a/code/modules/mob/living/silicon/ai/ai.dm b/code/modules/mob/living/silicon/ai/ai.dm
index b2dffb540be..842b03c4bbd 100644
--- a/code/modules/mob/living/silicon/ai/ai.dm
+++ b/code/modules/mob/living/silicon/ai/ai.dm
@@ -54,6 +54,7 @@ var/list/ai_verbs_default = list(
var/obj/item/device/pda/silicon/ai/aiPDA = null
var/obj/item/device/multitool/aiMulti = null
var/custom_sprite = 0 //For our custom sprites
+ var/custom_hologram = 0 //For our custom holograms
var/obj/item/device/radio/headset/heads/ai_integrated/aiRadio = null
@@ -298,18 +299,19 @@ var/list/ai_verbs_default = list(
Entry[i] = trim(Entry[i])
if(Entry.len < 2)
- continue;
+ continue
- if(Entry[1] == src.ckey && Entry[2] == src.real_name)
+ if(Entry.len < 3 && Entry[1] == ckey && Entry[2] == real_name)
custom_sprite = 1 //They're in the list? Custom sprite time
icon = 'icons/mob/custom-synthetic.dmi'
+
//if(icon_state == initial(icon_state))
var/icontype = ""
if(custom_sprite == 1) icontype = ("Custom")//automagically selects custom sprite if one is available
else icontype = input("Select an icon!", "AI", null, null) in list("Monochrome", "Blue", "Clown", "Inverted", "Text", "Smiley", "Angry", "Dorf", "Matrix", "Bliss", "Firewall", "Green", "Red", "Static", "Triumvirate", "Triumvirate Static", "Red October", "Sparkles", "ANIMA", "President", "NT")
switch(icontype)
- if("Custom") icon_state = "[src.ckey]-ai"
+ if("Custom") icon_state = "[ckey]-ai"
if("Clown") icon_state = "ai-clown2"
if("Monochrome") icon_state = "ai-mono"
if("Inverted") icon_state = "ai-u"
@@ -792,6 +794,21 @@ var/list/ai_verbs_default = list(
if(check_unable())
return
+ if(!custom_hologram) //Check to see if custom sprite time, checking the appopriate file to change a var
+ var/file = file2text("config/custom_sprites.txt")
+ var/lines = splittext(file, "\n")
+
+ for(var/line in lines)
+ // split & clean up
+ var/list/Entry = splittext(line, ":")
+ for(var/i = 1 to Entry.len)
+ Entry[i] = trim(Entry[i])
+
+ if(Entry.len < 3)
+ continue
+
+ if (Entry[1] == ckey && Entry[2] == real_name && Entry[3] == "Hologram") //Custom holograms
+ custom_hologram = 1 // option is given in hologram menu
var/input
if(alert("Would you like to select a hologram based on a crew member or switch to unique avatar?",,"Crew Member","Unique")=="Crew Member")
@@ -818,6 +835,9 @@ var/list/ai_verbs_default = list(
"eldritch",
"ancient machine"
)
+ if(custom_hologram) //insert custom hologram
+ icon_list.Add("custom")
+
input = input("Please select a hologram:") as null|anything in icon_list
if(input)
qdel(holo_icon)
@@ -832,6 +852,8 @@ var/list/ai_verbs_default = list(
holo_icon = getHologramIcon(icon('icons/mob/AI.dmi',"holo4"))
if("ancient machine")
holo_icon = getHologramIcon(icon('icons/mob/ancient_machine.dmi', "ancient_machine"))
+ if("custom")
+ holo_icon = getHologramIcon(icon('icons/mob/custom-synthetic.dmi', "[ckey]-ai-holo"))
return
/mob/living/silicon/ai/proc/corereturn()
diff --git a/code/modules/reagents/Chemistry-Holder.dm b/code/modules/reagents/Chemistry-Holder.dm
index ab97744e8bc..bce80d857b1 100644
--- a/code/modules/reagents/Chemistry-Holder.dm
+++ b/code/modules/reagents/Chemistry-Holder.dm
@@ -49,7 +49,7 @@ var/const/INGEST = 2
chemical_reactions_list[id] += D
break // Don't bother adding ourselves to other reagent ids, it is redundant.
-/datum/reagents/proc/remove_any(var/amount=1)
+/datum/reagents/proc/remove_any(amount=1)
var/total_transfered = 0
var/current_list_element = 1
@@ -91,7 +91,7 @@ var/const/INGEST = 2
return the_id
-/datum/reagents/proc/trans_to(var/target, var/amount=1, var/multiplier=1, var/preserve_data=1)//if preserve_data=0, the reagents data will be lost. Usefull if you use data for some strange stuff and don't want it to be transferred.
+/datum/reagents/proc/trans_to(target, amount=1, multiplier=1, preserve_data=1)//if preserve_data=0, the reagents data will be lost. Usefull if you use data for some strange stuff and don't want it to be transferred.
if(!target)
return
if(src.total_volume <= 0)
@@ -135,7 +135,7 @@ var/const/INGEST = 2
src.handle_reactions()
return amount
-/datum/reagents/proc/copy_to(var/obj/target, var/amount=1, var/multiplier=1, var/preserve_data=1, var/safety = 0)
+/datum/reagents/proc/copy_to(obj/target, amount=1, multiplier=1, preserve_data=1, safety = 0)
if(!target)
return
if(!target.reagents || src.total_volume<=0)
@@ -156,7 +156,7 @@ var/const/INGEST = 2
src.handle_reactions()
return amount
-/datum/reagents/proc/trans_id_to(var/obj/target, var/reagent, var/amount=1, var/preserve_data=1)//Not sure why this proc didn't exist before. It does now! /N
+/datum/reagents/proc/trans_id_to(obj/target, reagent, amount=1, preserve_data=1)//Not sure why this proc didn't exist before. It does now! /N
if(!target)
return
if(!target.reagents || src.total_volume<=0 || !src.get_reagent_amount(reagent))
@@ -214,12 +214,12 @@ var/const/INGEST = 2
*/
-/datum/reagents/proc/conditional_update_move(var/atom/A, var/Running = 0)
+/datum/reagents/proc/conditional_update_move(atom/A, Running = 0)
for(var/datum/reagent/R in reagent_list)
R.on_move (A, Running)
update_total()
-/datum/reagents/proc/conditional_update(var/atom/A, )
+/datum/reagents/proc/conditional_update(atom/A, )
for(var/datum/reagent/R in reagent_list)
R.on_update (A)
update_total()
@@ -323,14 +323,14 @@ var/const/INGEST = 2
update_total()
return 0
-/datum/reagents/proc/isolate_reagent(var/reagent)
+/datum/reagents/proc/isolate_reagent(reagent)
for(var/A in reagent_list)
var/datum/reagent/R = A
if(R.id != reagent)
del_reagent(R.id)
update_total()
-/datum/reagents/proc/del_reagent(var/reagent)
+/datum/reagents/proc/del_reagent(reagent)
for(var/A in reagent_list)
var/datum/reagent/R = A
if(R.id == reagent)
@@ -341,8 +341,6 @@ var/const/INGEST = 2
qdel(A)
update_total()
my_atom.on_reagent_change()
- check_gofast(my_atom)
- check_goreallyfast(my_atom)
return 0
@@ -363,7 +361,7 @@ var/const/INGEST = 2
del_reagent(R.id)
return 0
-/datum/reagents/proc/reaction_check(var/mob/M, var/datum/reagent/R)
+/datum/reagents/proc/reaction_check(mob/M, datum/reagent/R)
var/can_process = 0
if(!istype(M, /mob/living)) //Non-living mobs can't metabolize reagents, so don't bother trying (runtime safety check)
return can_process
@@ -436,7 +434,7 @@ var/const/INGEST = 2
var/amt = list_reagents[r_id]
add_reagent(r_id, amt, data)
-/datum/reagents/proc/add_reagent(var/reagent, var/amount, var/list/data=null, var/reagtemp = 300)
+/datum/reagents/proc/add_reagent(reagent, amount, list/data=null, reagtemp = 300)
if(!isnum(amount)) return 1
update_total()
if(total_volume + amount > maximum_volume) amount = (maximum_volume - total_volume) //Doesnt fit in. Make it disappear. Shouldnt happen. Will happen.
@@ -476,7 +474,7 @@ var/const/INGEST = 2
return 1
-/datum/reagents/proc/remove_reagent(var/reagent, var/amount, var/safety)//Added a safety check for the trans_id_to
+/datum/reagents/proc/remove_reagent(reagent, amount, safety)//Added a safety check for the trans_id_to
if(!isnum(amount)) return 1
@@ -492,7 +490,7 @@ var/const/INGEST = 2
return 1
-/datum/reagents/proc/has_reagent(var/reagent, var/amount = -1)
+/datum/reagents/proc/has_reagent(reagent, amount = -1)
for(var/A in reagent_list)
var/datum/reagent/R = A
@@ -504,7 +502,7 @@ var/const/INGEST = 2
return 0
-/datum/reagents/proc/get_reagent_amount(var/reagent)
+/datum/reagents/proc/get_reagent_amount(reagent)
for(var/A in reagent_list)
var/datum/reagent/R = A
if(R.id == reagent)
@@ -523,7 +521,7 @@ var/const/INGEST = 2
/datum/reagents/proc/get_reagent(type)
. = locate(type) in reagent_list
-/datum/reagents/proc/remove_all_type(var/reagent_type, var/amount, var/strict = 0, var/safety = 1) // Removes all reagent of X type. @strict set to 1 determines whether the childs of the type are included.
+/datum/reagents/proc/remove_all_type(reagent_type, amount, strict = 0, safety = 1) // Removes all reagent of X type. @strict set to 1 determines whether the childs of the type are included.
if(!isnum(amount)) return 1
var/has_removed_reagent = 0
@@ -545,7 +543,7 @@ var/const/INGEST = 2
return has_removed_reagent
// Admin logging.
-/datum/reagents/proc/get_reagent_ids(var/and_amount=0)
+/datum/reagents/proc/get_reagent_ids(and_amount=0)
var/list/stuff = list()
for(var/datum/reagent/A in reagent_list)
if(and_amount)
@@ -555,19 +553,19 @@ var/const/INGEST = 2
return english_list(stuff)
//two helper functions to preserve data across reactions (needed for xenoarch)
-/datum/reagents/proc/get_data(var/reagent_id)
+/datum/reagents/proc/get_data(reagent_id)
for(var/datum/reagent/D in reagent_list)
if(D.id == reagent_id)
// to_chat(world, "proffering a data-carrying reagent ([reagent_id])")
return D.data
-/datum/reagents/proc/set_data(var/reagent_id, var/new_data)
+/datum/reagents/proc/set_data(reagent_id, new_data)
for(var/datum/reagent/D in reagent_list)
if(D.id == reagent_id)
// to_chat(world, "reagent data set ([reagent_id])")
D.data = new_data
-/datum/reagents/proc/copy_data(var/datum/reagent/current_reagent)
+/datum/reagents/proc/copy_data(datum/reagent/current_reagent)
if(!current_reagent || !current_reagent.data) return null
if(!istype(current_reagent.data, /list)) return current_reagent.data
@@ -591,11 +589,11 @@ var/const/INGEST = 2
// Convenience proc to create a reagents holder for an atom
// Max vol is maximum volume of holder
-atom/proc/create_reagents(var/max_vol)
+atom/proc/create_reagents(max_vol)
reagents = new/datum/reagents(max_vol)
reagents.my_atom = src
-/datum/reagents/proc/get_reagent_from_id(var/id)
+/datum/reagents/proc/get_reagent_from_id(id)
var/datum/reagent/result = null
for(var/datum/reagent/R in reagent_list)
if(R.id == id)
diff --git a/code/modules/reagents/Chemistry-Machinery.dm b/code/modules/reagents/Chemistry-Machinery.dm
index fae10a20d01..acbb9648098 100644
--- a/code/modules/reagents/Chemistry-Machinery.dm
+++ b/code/modules/reagents/Chemistry-Machinery.dm
@@ -19,7 +19,7 @@
var/hackedcheck = 0
var/list/dispensable_reagents = list("hydrogen", "lithium", "carbon", "nitrogen", "oxygen", "fluorine",
"sodium", "aluminum", "silicon", "phosphorus", "sulfur", "chlorine", "potassium", "iron",
- "copper", "mercury", "plasma", "radium", "water", "ethanol", "sugar", "tungsten", "iodine", "bromine", "silver")
+ "copper", "mercury", "plasma", "radium", "water", "ethanol", "sugar", "iodine", "bromine", "silver")
var/list/hacked_reagents = list("toxin")
var/hack_message = "You disable the safety safeguards, enabling the \"Mad Scientist\" mode."
var/unhack_message = "You re-enable the safety safeguards, enabling the \"NT Standard\" mode."
@@ -108,7 +108,7 @@
* @return nothing
*/
-/obj/machinery/chem_dispenser/ui_interact(mob/user, ui_key = "main",var/datum/nanoui/ui = null, var/force_open = 1)
+/obj/machinery/chem_dispenser/ui_interact(mob/user, ui_key = "main", datum/nanoui/ui = null, force_open = 1)
if(broken_requirements.len)
to_chat(user, "[src] is broken. [broken_requirements[broken_requirements[1]]]")
return
@@ -197,7 +197,7 @@
add_fingerprint(usr)
return 1 // update UIs attached to this object
-/obj/machinery/chem_dispenser/attackby(var/obj/item/weapon/reagent_containers/B as obj, var/mob/user as mob, params)
+/obj/machinery/chem_dispenser/attackby(obj/item/weapon/reagent_containers/B, mob/user, params)
if(isrobot(user))
return
@@ -232,7 +232,7 @@
overlays += icon_beaker
return
-/obj/machinery/chem_dispenser/attackby(var/obj/item/weapon/B as obj, var/mob/user as mob, params)
+/obj/machinery/chem_dispenser/attackby(obj/item/weapon/B, mob/user, params)
..()
if(istype(B, /obj/item/device/multitool))
if(hackedcheck == 0)
@@ -247,13 +247,13 @@
hackedcheck = 0
return
-/obj/machinery/chem_dispenser/attack_ai(mob/user as mob)
+/obj/machinery/chem_dispenser/attack_ai(mob/user)
return src.attack_hand(user)
-/obj/machinery/chem_dispenser/attack_ghost(mob/user as mob)
+/obj/machinery/chem_dispenser/attack_ghost(mob/user)
return src.attack_hand(user)
-/obj/machinery/chem_dispenser/attack_hand(mob/user as mob)
+/obj/machinery/chem_dispenser/attack_hand(mob/user)
if(stat & BROKEN)
return
@@ -297,7 +297,7 @@
amount = 5
recharge_delay = 10
dispensable_reagents = list()
- var/list/special_reagents = list(list("hydrogen", "oxygen", "silicon", "phosphorus", "sulfur", "carbon", "nitrogen", "tungsten", "water"),
+ var/list/special_reagents = list(list("hydrogen", "oxygen", "silicon", "phosphorus", "sulfur", "carbon", "nitrogen", "water"),
list("lithium", "sugar", "copper", "mercury", "sodium","iodine","bromine"),
list("ethanol", "chlorine", "potassium", "aluminum","plasma", "radium", "fluorine", "iron", "silver"),
list("oil", "ash", "acetone", "saltpetre", "ammonia", "diethylamine", "fuel"))
@@ -343,7 +343,7 @@
for(i=1, i<=M.rating, i++)
dispensable_reagents = sortList(dispensable_reagents | special_reagents[i])
-/obj/machinery/chem_dispenser/constructable/attackby(var/obj/item/I, var/mob/user, params)
+/obj/machinery/chem_dispenser/constructable/attackby(obj/item/I, mob/user, params)
if(istype(I, /obj/item/weapon/reagent_containers/glass))
if(panel_open)
to_chat(user, "Close the maintenance panel first.")
@@ -426,7 +426,7 @@
spawn(rand(0, 15))
stat |= NOPOWER
-/obj/machinery/chem_master/attackby(var/obj/item/weapon/B as obj, var/mob/user as mob, params)
+/obj/machinery/chem_master/attackby(obj/item/weapon/B, mob/user, params)
if(istype(B, /obj/item/weapon/reagent_containers/glass) || istype(B, /obj/item/weapon/reagent_containers/food/drinks/drinkingglass))
@@ -692,31 +692,31 @@
nanomanager.update_uis(src)
return
-/obj/machinery/chem_master/attack_ai(mob/user as mob)
+/obj/machinery/chem_master/attack_ai(mob/user)
return src.attack_hand(user)
-/obj/machinery/chem_master/attack_ghost(mob/user as mob)
+/obj/machinery/chem_master/attack_ghost(mob/user)
return src.attack_hand(user)
-/obj/machinery/chem_master/attack_hand(mob/user as mob)
+/obj/machinery/chem_master/attack_hand(mob/user)
if(..())
return 1
ui_interact(user)
return
-/obj/machinery/chem_master/ui_interact(mob/user, ui_key="main", var/datum/nanoui/ui = null, var/force_open = 1)
-
+/obj/machinery/chem_master/ui_interact(mob/user, ui_key="main", datum/nanoui/ui = null, force_open = 1)
+
var/datum/asset/chem_master/assets = get_asset_datum(/datum/asset/chem_master)
assets.send(user)
-
+
var/data = list()
-
+
data["condi"] = condi
data["loaded_pill_bottle"] = (loaded_pill_bottle ? 1 : 0)
if(loaded_pill_bottle)
data["loaded_pill_bottle_contents_len"] = loaded_pill_bottle.contents.len
data["loaded_pill_bottle_storage_slots"] = loaded_pill_bottle.storage_slots
-
+
data["beaker"] = (beaker ? 1 : 0)
if(beaker)
var/list/beaker_reagents_list = list()
@@ -727,17 +727,17 @@
data["buffer_reagents"] = buffer_reagents_list
for(var/datum/reagent/R in reagents.reagent_list)
buffer_reagents_list[++buffer_reagents_list.len] = list("name" = R.name, "volume" = R.volume, "id" = R.id, "description" = R.description)
-
+
data["pillsprite"] = pillsprite
data["mode"] = mode
-
+
ui = nanomanager.try_update_ui(user, src, ui_key, ui, data, force_open)
if(!ui)
ui = new(user, src, ui_key, "chem_master.tmpl", src.name, 575, 400)
ui.set_initial_data(data)
ui.open()
-/obj/machinery/chem_master/proc/isgoodnumber(var/num)
+/obj/machinery/chem_master/proc/isgoodnumber(num)
if(isnum(num))
if(num > 200)
num = 200
@@ -874,7 +874,7 @@
icon_state = "juicer"+num2text(!isnull(beaker))
return
-/obj/machinery/reagentgrinder/attackby(var/obj/item/O as obj, var/mob/user as mob, params)
+/obj/machinery/reagentgrinder/attackby(obj/item/O, mob/user, params)
if(istype(O,/obj/item/weapon/reagent_containers/glass) || \
istype(O,/obj/item/weapon/reagent_containers/food/drinks/drinkingglass) || \
@@ -924,14 +924,14 @@
src.updateUsrDialog()
return 0
-/obj/machinery/reagentgrinder/attack_ai(mob/user as mob)
+/obj/machinery/reagentgrinder/attack_ai(mob/user)
return 0
-/obj/machinery/reagentgrinder/attack_hand(mob/user as mob)
+/obj/machinery/reagentgrinder/attack_hand(mob/user)
user.set_machine(src)
interact(user)
-/obj/machinery/reagentgrinder/interact(mob/user as mob) // The microwave Menu
+/obj/machinery/reagentgrinder/interact(mob/user) // The microwave Menu
var/is_chamber_empty = 0
var/is_beaker_ready = 0
var/processing_chamber = ""
@@ -1014,38 +1014,38 @@
holdingitems -= O
holdingitems = list()
-/obj/machinery/reagentgrinder/proc/is_allowed(var/obj/item/weapon/reagent_containers/O)
+/obj/machinery/reagentgrinder/proc/is_allowed(obj/item/weapon/reagent_containers/O)
for(var/i in blend_items)
if(istype(O, i))
return 1
return 0
-/obj/machinery/reagentgrinder/proc/get_allowed_by_id(var/obj/item/weapon/grown/O)
+/obj/machinery/reagentgrinder/proc/get_allowed_by_id(obj/item/weapon/grown/O)
for(var/i in blend_items)
if(istype(O, i))
return blend_items[i]
-/obj/machinery/reagentgrinder/proc/get_allowed_snack_by_id(var/obj/item/weapon/reagent_containers/food/snacks/O)
+/obj/machinery/reagentgrinder/proc/get_allowed_snack_by_id(obj/item/weapon/reagent_containers/food/snacks/O)
for(var/i in blend_items)
if(istype(O, i))
return blend_items[i]
-/obj/machinery/reagentgrinder/proc/get_allowed_juice_by_id(var/obj/item/weapon/reagent_containers/food/snacks/O)
+/obj/machinery/reagentgrinder/proc/get_allowed_juice_by_id(obj/item/weapon/reagent_containers/food/snacks/O)
for(var/i in juice_items)
if(istype(O, i))
return juice_items[i]
-/obj/machinery/reagentgrinder/proc/get_allowed_snack_by_tag(var/obj/item/weapon/reagent_containers/food/snacks/grown/O)
+/obj/machinery/reagentgrinder/proc/get_allowed_snack_by_tag(obj/item/weapon/reagent_containers/food/snacks/grown/O)
for(var/i in blend_tags)
if(O.seed.kitchen_tag == i)
return blend_tags[i]
-/obj/machinery/reagentgrinder/proc/get_allowed_juice_by_tag(var/obj/item/weapon/reagent_containers/food/snacks/grown/O)
+/obj/machinery/reagentgrinder/proc/get_allowed_juice_by_tag(obj/item/weapon/reagent_containers/food/snacks/grown/O)
for(var/i in juice_tags)
if(O.seed.kitchen_tag == i)
return juice_tags[i]
-/obj/machinery/reagentgrinder/proc/get_grownweapon_amount(var/obj/item/weapon/grown/O)
+/obj/machinery/reagentgrinder/proc/get_grownweapon_amount(obj/item/weapon/grown/O)
if(!istype(O))
return 5
else if(O.potency == -1)
@@ -1053,7 +1053,7 @@
else
return round(O.potency)
-/obj/machinery/reagentgrinder/proc/get_juice_amount(var/obj/item/weapon/reagent_containers/food/snacks/grown/O)
+/obj/machinery/reagentgrinder/proc/get_juice_amount(obj/item/weapon/reagent_containers/food/snacks/grown/O)
if(!istype(O))
return 5
else if(O.potency == -1)
@@ -1061,7 +1061,7 @@
else
return round(5*sqrt(O.potency))
-/obj/machinery/reagentgrinder/proc/remove_object(var/obj/item/O)
+/obj/machinery/reagentgrinder/proc/remove_object(obj/item/O)
holdingitems -= O
qdel(O)
diff --git a/code/modules/reagents/newchem/Blob-Reagents.dm b/code/modules/reagents/newchem/Blob-Reagents.dm
index f4fcdf9a2b1..3d1ec96501b 100644
--- a/code/modules/reagents/newchem/Blob-Reagents.dm
+++ b/code/modules/reagents/newchem/Blob-Reagents.dm
@@ -29,7 +29,7 @@
message = "The blob splashes you with burning oil"
message_living = ", and you feel your skin char and melt"
-/datum/reagent/blob/boiling_oil/reaction_mob(var/mob/living/M as mob, var/method=TOUCH, var/volume)
+/datum/reagent/blob/boiling_oil/reaction_mob(mob/living/M, method=TOUCH, volume)
if(method == TOUCH)
M.adjust_fire_stacks(round(volume/12))
volume = ..()
@@ -97,7 +97,7 @@
color = "#61407E"
message = "You feel a thrum as the blob strikes you, and everything flies at you"
-/datum/reagent/blob/dark_matter/reaction_mob(var/mob/living/M as mob, var/method=TOUCH, var/volume)
+/datum/reagent/blob/dark_matter/reaction_mob(mob/living/M, method=TOUCH, volume)
if(method == TOUCH)
reagent_vortex(M, 0, volume)
volume = ..()
@@ -110,7 +110,7 @@
color = "#808000"
message = "The blob slams into you, and sends you flying"
-/datum/reagent/blob/b_sorium/reaction_mob(var/mob/living/M as mob, var/method=TOUCH, var/volume)
+/datum/reagent/blob/b_sorium/reaction_mob(mob/living/M, method=TOUCH, volume)
if(method == TOUCH)
reagent_vortex(M, 1, volume)
volume = ..()
@@ -145,7 +145,7 @@
if(!step_towards(X, pull))
break
-/datum/reagent/blob/proc/send_message(var/mob/living/M as mob)
+/datum/reagent/blob/proc/send_message(mob/living/M)
var/totalmessage = message
if(message_living && !issilicon(M))
totalmessage += message_living
diff --git a/code/modules/reagents/newchem/disease.dm b/code/modules/reagents/newchem/disease.dm
index aa0a2db6ae0..6793f19548a 100644
--- a/code/modules/reagents/newchem/disease.dm
+++ b/code/modules/reagents/newchem/disease.dm
@@ -19,8 +19,7 @@
description = "Microscopic construction robots."
color = "#535E66" // rgb: 83, 94, 102
-/datum/reagent/nanomachines/on_mob_life(var/mob/living/carbon/M as mob)
- if(!M) M = holder.my_atom
+/datum/reagent/nanomachines/on_mob_life(mob/living/carbon/M)
if(volume > 1.5)
M.ForceContractDisease(new /datum/disease/transformation/robot(0))
..()
@@ -32,8 +31,7 @@
description = "Microbes with an entirely alien cellular structure."
color = "#535E66" // rgb: 83, 94, 102
-/datum/reagent/xenomicrobes/on_mob_life(var/mob/living/carbon/M as mob)
- if(!M) M = holder.my_atom
+/datum/reagent/xenomicrobes/on_mob_life(mob/living/carbon/M)
if(volume > 1.5)
M.ContractDisease(new /datum/disease/transformation/xeno(0))
..()
@@ -44,8 +42,7 @@
description = "Active fungal spores."
color = "#92D17D" // rgb: 146, 209, 125
-/datum/reagent/fungalspores/on_mob_life(var/mob/living/carbon/M as mob)
- if(!M) M = holder.my_atom
+/datum/reagent/fungalspores/on_mob_life(mob/living/carbon/M)
if(volume > 2.5)
M.ForceContractDisease(new /datum/disease/tuberculosis(0))
..()
@@ -57,8 +54,7 @@
reagent_state = SOLID
color = "#FA0000" // rgb: 250, 0, 0
-/datum/reagent/jagged_crystals/on_mob_life(var/mob/living/carbon/M as mob)
- if(!M) M = holder.my_atom
+/datum/reagent/jagged_crystals/on_mob_life(mob/living/carbon/M)
M.ForceContractDisease(new /datum/disease/berserker(0))
..()
@@ -69,8 +65,7 @@
reagent_state = LIQUID
color = "#1E4600"
-/datum/reagent/salmonella/on_mob_life(var/mob/living/carbon/M as mob)
- if(!M) M = holder.my_atom
+/datum/reagent/salmonella/on_mob_life(mob/living/carbon/M)
M.ForceContractDisease(new /datum/disease/food_poisoning(0))
..()
@@ -81,8 +76,7 @@
reagent_state = LIQUID
color = "#FF0000"
-/datum/reagent/gibbis/on_mob_life(var/mob/living/carbon/M as mob)
- if(!M) M = holder.my_atom
+/datum/reagent/gibbis/on_mob_life(mob/living/carbon/M)
if(volume > 2.5)
M.ForceContractDisease(new /datum/disease/gbs/curable(0))
..()
@@ -94,8 +88,7 @@
reagent_state = LIQUID
color = "#FFFFFF"
-/datum/reagent/prions/on_mob_life(var/mob/living/carbon/M as mob)
- if(!M) M = holder.my_atom
+/datum/reagent/prions/on_mob_life(mob/living/carbon/M)
if(volume > 4.5)
M.ForceContractDisease(new /datum/disease/kuru(0))
..()
@@ -107,8 +100,7 @@
reagent_state = LIQUID
color = "#465046"
-/datum/reagent/grave_dust/on_mob_life(var/mob/living/carbon/M as mob)
- if(!M) M = holder.my_atom
+/datum/reagent/grave_dust/on_mob_life(mob/living/carbon/M)
if(volume > 4.5)
M.ForceContractDisease(new /datum/disease/vampire(0))
..()
@@ -120,8 +112,7 @@
reagent_state = SOLID
color = "#925D6C"
-/datum/reagent/heartworms/on_mob_life(var/mob/living/carbon/M as mob)
- if(!M) M = holder.my_atom
+/datum/reagent/heartworms/on_mob_life(mob/living/carbon/M)
if(volume > 4.5)
if(ishuman(M))
var/mob/living/carbon/human/H = M
@@ -140,8 +131,7 @@
var/client/blob_client = null
var/blob_point_rate = 3
-/datum/reagent/spore/on_mob_life(var/mob/living/M)
- if(!M) M = holder.my_atom
+/datum/reagent/spore/on_mob_life(mob/living/M)
if(holder.has_reagent("atrazine",45))
holder.del_reagent("spore") //apparently this never metabolizes and stays in forever unless you have 45 units of atrazine in you or some stupid thing like that.
if(prob(1))
diff --git a/code/modules/reagents/newchem/drinks.dm b/code/modules/reagents/newchem/drinks.dm
index a9912f8722b..201cc97f806 100644
--- a/code/modules/reagents/newchem/drinks.dm
+++ b/code/modules/reagents/newchem/drinks.dm
@@ -14,8 +14,7 @@
mix_message = "The drink turns electric blue and starts quivering violently."
mix_sound = 'sound/goonstation/misc/drinkfizz.ogg'
-/datum/reagent/ginsonic/on_mob_life(var/mob/living/M as mob)
- if(!M) M = holder.my_atom
+/datum/reagent/ginsonic/on_mob_life(mob/living/M)
M.drowsyness = max(0, M.drowsyness-5)
if(prob(25))
M.AdjustParalysis(-1)
@@ -29,7 +28,6 @@
else
to_chat(M, "[sonic_message ]")
..()
- return
/datum/reagent/ethanol/applejack
name = "Applejack"
@@ -72,13 +70,12 @@
color = "#DC0000"
alcohol_perc = 1
-/datum/reagent/ethanol/dragons_breath/reaction_mob(var/mob/living/M, var/method=TOUCH, var/volume)
+/datum/reagent/ethanol/dragons_breath/reaction_mob(mob/living/M, method=TOUCH, volume)
if(method == INGEST && prob(20))
if(M.on_fire)
M.adjust_fire_stacks(3)
-/datum/reagent/ethanol/dragons_breath/on_mob_life(var/mob/living/M as mob)
- if(!M) M = holder.my_atom
+/datum/reagent/ethanol/dragons_breath/on_mob_life(mob/living/M)
if(M.reagents.has_reagent("milk"))
to_chat(M, "The milk stops the burning. Ahhh.")
M.reagents.del_reagent("milk")
@@ -128,7 +125,7 @@
mix_message = "The chemicals mix to create shiny, blue substance."
mix_sound = 'sound/goonstation/misc/drinkfizz.ogg'
-/datum/reagent/ethanol/synthanol/on_mob_life(var/mob/living/M as mob, var/alien)
+/datum/reagent/ethanol/synthanol/on_mob_life(mob/living/M)
if(!M.isSynthetic())
holder.remove_reagent(id, 3.6) //gets removed from organics very fast
if(prob(25))
@@ -136,7 +133,7 @@
M.fakevomit()
..()
-datum/reagent/ethanol/synthanol/reaction_mob(var/mob/M, var/method=TOUCH, var/volume)
+/datum/reagent/ethanol/synthanol/reaction_mob(mob/M, method=TOUCH, volume)
if(!istype(M, /mob/living))
return
if(M.isSynthetic())
diff --git a/code/modules/reagents/newchem/drugs.dm b/code/modules/reagents/newchem/drugs.dm
index 937ebff0397..37cdef2b103 100644
--- a/code/modules/reagents/newchem/drugs.dm
+++ b/code/modules/reagents/newchem/drugs.dm
@@ -13,8 +13,7 @@
overdose_threshold = 35
addiction_chance = 70
-/datum/reagent/nicotine/on_mob_life(var/mob/living/M as mob)
- if(!M) M = holder.my_atom
+/datum/reagent/nicotine/on_mob_life(mob/living/M)
var/smoke_message = pick("You feel relaxed.", "You feel calmed.", "You feel less stressed.", "You feel more placid.", "You feel more undivided.")
if(prob(5))
to_chat(M, "[smoke_message]")
@@ -24,9 +23,8 @@
M.AdjustWeakened(-1)
M.adjustStaminaLoss(-1*REM)
..()
- return
-/datum/reagent/nicotine/overdose_process(var/mob/living/M as mob, severity)
+/datum/reagent/nicotine/overdose_process(mob/living/M, severity)
var/effect = ..()
if(severity == 1)
if(effect <= 2)
@@ -75,8 +73,7 @@
overdose_threshold = 20
addiction_chance = 50
-/datum/reagent/crank/on_mob_life(var/mob/living/M as mob)
- if(!M) M = holder.my_atom
+/datum/reagent/crank/on_mob_life(mob/living/M)
M.AdjustParalysis(-2)
M.AdjustStunned(-2)
M.AdjustWeakened(-2)
@@ -95,9 +92,8 @@
M.jitteriness += 30
M.emote(pick("groan", "moan"))
..()
- return
-/datum/reagent/crank/overdose_process(var/mob/living/M as mob, severity)
+/datum/reagent/crank/overdose_process(mob/living/M, severity)
var/effect = ..()
if(severity == 1)
if(effect <= 2)
@@ -146,12 +142,11 @@
mix_sound = 'sound/goonstation/effects/crystalshatter.ogg'
min_temp = 390
-/datum/chemical_reaction/crank/on_reaction(var/datum/reagents/holder, var/created_volume)
+/datum/chemical_reaction/crank/on_reaction(datum/reagents/holder, created_volume)
var/turf/T = get_turf(holder.my_atom)
for(var/turf/turf in range(1,T))
new /obj/effect/hotspot(turf)
explosion(T,0,0,2)
- return
/datum/reagent/krokodil
name = "Krokodil"
@@ -163,8 +158,7 @@
addiction_chance = 50
-/datum/reagent/krokodil/on_mob_life(var/mob/living/M as mob)
- if(!M) M = holder.my_atom
+/datum/reagent/krokodil/on_mob_life(mob/living/M)
M.jitteriness -= 40
if(prob(25))
M.adjustBrainLoss(1)
@@ -185,9 +179,8 @@
to_chat(M, "Your skin feels all rough and dry.")
M.adjustBruteLoss(2)
..()
- return
-/datum/reagent/krokodil/overdose_process(var/mob/living/M as mob, severity)
+/datum/reagent/krokodil/overdose_process(mob/living/M, severity)
var/effect = ..()
if(severity == 1)
if(effect <= 2)
@@ -242,8 +235,7 @@
addiction_chance = 60
metabolization_rate = 0.6
-/datum/reagent/methamphetamine/on_mob_life(var/mob/living/M as mob)
- if(!M) M = holder.my_atom
+/datum/reagent/methamphetamine/on_mob_life(mob/living/M)
if(prob(5))
M.emote(pick("twitch_s","blink_r","shiver"))
if(current_cycle >= 25)
@@ -258,9 +250,12 @@
if(prob(50))
M.adjustBrainLoss(1.0)
..()
- return
-/datum/reagent/methamphetamine/overdose_process(var/mob/living/M as mob, severity)
+/datum/reagent/methamphetamine/reagent_deleted(mob/living/M)
+ M.status_flags &= ~GOTTAGOREALLYFAST
+ ..()
+
+/datum/reagent/methamphetamine/overdose_process(mob/living/M, severity)
var/effect = ..()
if(severity == 1)
if(effect <= 2)
@@ -293,7 +288,7 @@
result_amount = 4
min_temp = 374
-/datum/chemical_reaction/methamphetamine/on_reaction(var/datum/reagents/holder)
+/datum/chemical_reaction/methamphetamine/on_reaction(datum/reagents/holder)
var/turf/T = get_turf(holder.my_atom)
T.visible_message("The solution generates a strong vapor!")
for(var/mob/living/carbon/C in range(T, 1))
@@ -328,8 +323,7 @@
addiction_chance = 80
metabolization_rate = 0.6
-/datum/reagent/bath_salts/on_mob_life(var/mob/living/M as mob)
- if(!M) M = holder.my_atom
+/datum/reagent/bath_salts/on_mob_life(mob/living/M)
var/check = rand(0,100)
if(ishuman(M))
var/mob/living/carbon/human/H = M
@@ -361,7 +355,7 @@
to_chat(M, "THEY'RE GONNA GET YOU!")
..()
-/datum/reagent/bath_salts/reaction_mob(var/mob/living/M, var/method=TOUCH, var/volume)
+/datum/reagent/bath_salts/reaction_mob(mob/living/M, method=TOUCH, volume)
if(method == INGEST)
to_chat(M, "You feel FUCKED UP!!!!!!")
M << 'sound/effects/singlebeat.ogg'
@@ -372,7 +366,7 @@
else
to_chat(M, "You feel a bit more salty than usual.")
-/datum/reagent/bath_salts/overdose_process(var/mob/living/M as mob, severity)
+/datum/reagent/bath_salts/overdose_process(mob/living/M, severity)
var/effect = ..()
if(severity == 1)
if(effect <= 2)
@@ -434,7 +428,7 @@
mix_message = "The mixture ferments into a filthy morass."
mix_sound = 'sound/effects/blobattack.ogg'
-/datum/chemical_reaction/jenkem/on_reaction(var/datum/reagents/holder)
+/datum/chemical_reaction/jenkem/on_reaction(datum/reagents/holder)
var/turf/T = get_turf(holder.my_atom)
T.visible_message("The solution generates a strong vapor!")
for(var/mob/living/carbon/C in range(T, 1))
@@ -449,8 +443,7 @@
color = "#644600"
addiction_chance = 30
-/datum/reagent/jenkem/on_mob_life(var/mob/living/M as mob)
- if(!M) M = holder.my_atom
+/datum/reagent/jenkem/on_mob_life(mob/living/M)
M.Dizzy(5)
if(prob(10))
M.emote(pick("twitch_s","drool","moan"))
@@ -471,8 +464,7 @@
reagent_state = LIQUID
color = "#60A584" // rgb: 96, 165, 132
-/datum/reagent/aranesp/on_mob_life(var/mob/living/M as mob)
- if(!M) M = holder.my_atom
+/datum/reagent/aranesp/on_mob_life(mob/living/M)
M.adjustStaminaLoss(-40)
if(prob(90))
M.adjustToxLoss(1)
@@ -487,7 +479,6 @@
M.Stun(1)
M.losebreath++
..()
- return
/datum/reagent/thc
name = "Tetrahydrocannabinol"
@@ -497,8 +488,7 @@
color = "#0FBE0F"
-/datum/reagent/thc/on_mob_life(var/mob/living/M as mob)
- if(!M) M = holder.my_atom
+/datum/reagent/thc/on_mob_life(mob/living/M)
M.stuttering += rand(0,2)
if(prob(5))
M.emote(pick("laugh","giggle","smile"))
@@ -510,7 +500,6 @@
if(prob(10))
M.drowsyness = max(M.drowsyness, 10)
..()
- return
/datum/reagent/fliptonium
name = "Fliptonium"
@@ -531,15 +520,14 @@
result_amount = 4
mix_message = "The mixture swirls around excitedly!"
-/datum/reagent/fliptonium/reaction_mob(var/mob/M, var/method=TOUCH, var/volume)
+/datum/reagent/fliptonium/reaction_mob(mob/M, method=TOUCH, volume)
if(!istype(M, /mob/living))
return
if(method == INGEST || method == TOUCH)
M.SpinAnimation(speed = 12, loops = -1)
..()
-/datum/reagent/fliptonium/on_mob_life(var/mob/living/M as mob)
- if(!M) M = holder.my_atom
+/datum/reagent/fliptonium/on_mob_life(mob/living/M)
if(current_cycle == 5)
M.SpinAnimation(speed = 11, loops = -1)
if(current_cycle == 10)
@@ -564,12 +552,11 @@
M.adjustStaminaLoss(-1.5)
M.SetSleeping(0)
..()
- return
-/datum/reagent/fliptonium/reagent_deleted(var/mob/living/M as mob)
+/datum/reagent/fliptonium/reagent_deleted(mob/living/M)
M.SpinAnimation(speed = 12, loops = -1)
-/datum/reagent/fliptonium/overdose_process(var/mob/living/M as mob, severity)
+/datum/reagent/fliptonium/overdose_process(mob/living/M, severity)
var/effect = ..()
if(severity == 1)
if(effect <= 2)
@@ -619,8 +606,7 @@
result_amount = 2
mix_message = "The mixture darkens and appears to partially vaporize into a chilling aerosol."
-/datum/reagent/lube/ultra/on_mob_life(var/mob/living/M as mob)
- if(!M) M = holder.my_atom
+/datum/reagent/lube/ultra/on_mob_life(mob/living/M)
var/high_message = pick("You feel your servos whir!", "You feel like you need to go faster.", "You feel like you were just overclocked!")
if(prob(1))
if(prob(1))
@@ -637,9 +623,12 @@
if(prob(5))
M.emote(pick("twitch", "shiver"))
..()
- return
-/datum/reagent/lube/ultra/overdose_process(var/mob/living/M as mob, severity)
+/datum/reagent/lube/ultra/reagent_deleted(mob/living/M)
+ M.status_flags &= ~GOTTAGOREALLYFAST
+ ..()
+
+/datum/reagent/lube/ultra/overdose_process(mob/living/M, severity)
if(prob(20))
M.emote("ping")
if(prob(33))
@@ -647,10 +636,10 @@
var/obj/item/I = M.get_active_hand()
if(I)
M.drop_item()
- ..()
if(prob(50))
M.adjustFireLoss(10)
M.adjustBrainLoss(pick(0.5, 0.6, 0.7, 0.8, 0.9, 1))
+ ..()
//Surge: Krokodil
/datum/reagent/surge
@@ -665,8 +654,7 @@
addiction_chance = 50
-/datum/reagent/surge/on_mob_life(var/mob/living/M as mob)
- if(!M) M = holder.my_atom
+/datum/reagent/surge/on_mob_life(mob/living/M)
M.druggy = max(M.druggy, 15)
var/high_message = pick("You feel calm.", "You feel collected.", "You feel like you need to relax.")
if(prob(1))
@@ -675,9 +663,8 @@
if(prob(5))
to_chat(M, "[high_message]")
..()
- return
-/datum/reagent/surge/overdose_process(var/mob/living/M as mob, severity)
+/datum/reagent/surge/overdose_process(mob/living/M, severity)
//Hit them with the same effects as an electrode!
M.Stun(5)
M.Weaken(5)
diff --git a/code/modules/reagents/newchem/food.dm b/code/modules/reagents/newchem/food.dm
index 97643169e6f..c1b78581534 100644
--- a/code/modules/reagents/newchem/food.dm
+++ b/code/modules/reagents/newchem/food.dm
@@ -6,7 +6,7 @@
color = "#63DE63"
metabolization_rate = 0.4
-datum/reagent/questionmark/reaction_mob(var/mob/M, var/method=TOUCH, var/volume)
+/datum/reagent/questionmark/reaction_mob(mob/M, method=TOUCH, volume)
if(!istype(M, /mob/living))
return
if(method == INGEST)
@@ -15,23 +15,21 @@ datum/reagent/questionmark/reaction_mob(var/mob/M, var/method=TOUCH, var/volume)
to_chat(M, "Ugh! Eating that was a terrible idea!")
M.ForceContractDisease(new /datum/disease/food_poisoning(0))
-datum/reagent/egg
+/datum/reagent/egg
name = "Egg"
id = "egg"
description = "A runny and viscous mixture of clear and yellow fluids."
reagent_state = LIQUID
color = "#F0C814"
-datum/reagent/egg/on_mob_life(var/mob/living/M as mob)
- if(!M) M = holder.my_atom
+/datum/reagent/egg/on_mob_life(mob/living/M)
if(prob(8))
M.emote("fart")
if(prob(3))
M.reagents.add_reagent("cholesterol", rand(1,2))
..()
- return
-datum/reagent/triple_citrus
+/datum/reagent/triple_citrus
name = "Triple Citrus"
id = "triple_citrus"
description = "A refreshing mixed drink of orange, lemon and lime juice."
@@ -47,13 +45,13 @@ datum/reagent/triple_citrus
mix_message = "The citrus juices begin to blend together."
mix_sound = 'sound/goonstation/misc/drinkfizz.ogg'
-datum/reagent/triple_citrus/reaction_mob(var/mob/living/carbon/M as mob, var/method=TOUCH, var/volume)
+/datum/reagent/triple_citrus/reaction_mob(mob/living/carbon/M, method=TOUCH, volume)
if(!istype(M, /mob/living/carbon))
return
if(method == INGEST)
M.adjustToxLoss(-rand(1,2))
-datum/reagent/corn_starch
+/datum/reagent/corn_starch
name = "Corn Starch"
id = "corn_starch"
description = "The powdered starch of maize, derived from the kernel's endosperm. Used as a thickener for gravies and puddings."
@@ -69,18 +67,16 @@ datum/reagent/corn_starch
min_temp = 374
mix_message = "The mixture forms a viscous, clear fluid!"
-datum/reagent/corn_syrup
+/datum/reagent/corn_syrup
name = "Corn Syrup"
id = "corn_syrup"
description = "A sweet syrup derived from corn starch that has had its starches converted into maltose and other sugars."
reagent_state = LIQUID
color = "#C8A5DC"
-datum/reagent/corn_syrup/on_mob_life(var/mob/living/M as mob)
- if(!M) M = holder.my_atom
+/datum/reagent/corn_syrup/on_mob_life(mob/living/M)
M.reagents.add_reagent("sugar", 1.2)
..()
- return
/datum/chemical_reaction/vhfcs
name = "vhfcs"
@@ -91,18 +87,16 @@ datum/reagent/corn_syrup/on_mob_life(var/mob/living/M as mob)
result_amount = 1
mix_message = "The mixture emits a sickly-sweet smell."
-datum/reagent/vhfcs
+/datum/reagent/vhfcs
name = "Very-high-fructose corn syrup"
id = "vhfcs"
description = "An incredibly sweet syrup, created from corn syrup treated with enzymes to convert its sugars into fructose."
reagent_state = LIQUID
color = "#C8A5DC"
-datum/reagent/vhfcs/on_mob_life(var/mob/living/M as mob)
- if(!M) M = holder.my_atom
+/datum/reagent/vhfcs/on_mob_life(mob/living/M)
M.reagents.add_reagent("sugar", 2.4)
..()
- return
/datum/chemical_reaction/cola
name = "cola"
@@ -120,14 +114,11 @@ datum/reagent/vhfcs/on_mob_life(var/mob/living/M as mob)
reagent_state = LIQUID
color = "#d3a308"
-datum/reagent/honey/on_mob_life(var/mob/living/M as mob)
- if(!M)
- M = holder.my_atom
+/datum/reagent/honey/on_mob_life(mob/living/M)
M.reagents.add_reagent("sugar", 0.4)
if(prob(20))
M.heal_organ_damage(3,1)
..()
- return
/datum/reagent/chocolate
name = "Chocolate"
@@ -137,18 +128,15 @@ datum/reagent/honey/on_mob_life(var/mob/living/M as mob)
nutriment_factor = 5 * REAGENTS_METABOLISM //same as pure cocoa powder, because it makes no sense that chocolate won't fill you up and make you fat
color = "#2E2418"
-/datum/reagent/chocolate/on_mob_life(var/mob/living/M as mob)
- if(!M) M = holder.my_atom
+/datum/reagent/chocolate/on_mob_life(mob/living/M)
M.nutrition += nutriment_factor
M.reagents.add_reagent("sugar", 0.8)
..()
- return
-/datum/reagent/chocolate/reaction_turf(var/turf/T, var/volume)
+/datum/reagent/chocolate/reaction_turf(turf/T, volume)
src = null
if(volume >= 5)
new /obj/item/weapon/reagent_containers/food/snacks/choc_pile(T)
- return
/datum/reagent/mugwort
name = "Mugwort"
@@ -157,8 +145,7 @@ datum/reagent/honey/on_mob_life(var/mob/living/M as mob)
reagent_state = LIQUID
color = "#21170E"
-datum/reagent/mugwort/on_mob_life(var/mob/living/M as mob)
- if(!M) M = holder.my_atom
+/datum/reagent/mugwort/on_mob_life(mob/living/M)
if(istype(M, /mob/living/carbon/human) && M.mind)
if(M.mind.special_role == "Wizard")
M.adjustToxLoss(-1*REM)
@@ -166,7 +153,6 @@ datum/reagent/mugwort/on_mob_life(var/mob/living/M as mob)
M.adjustBruteLoss(-1*REM)
M.adjustFireLoss(-1*REM)
..()
- return
/datum/reagent/porktonium
name = "Porktonium"
@@ -177,7 +163,7 @@ datum/reagent/mugwort/on_mob_life(var/mob/living/M as mob)
metabolization_rate = 0.2
overdose_threshold = 133
-/datum/reagent/porktonium/overdose_process(var/mob/living/M as mob, severity)
+/datum/reagent/porktonium/overdose_process(mob/living/M, severity)
if(prob(15))
M.reagents.add_reagent("cholesterol", rand(1,3))
if(prob(8))
@@ -191,7 +177,7 @@ datum/reagent/mugwort/on_mob_life(var/mob/living/M as mob)
reagent_state = LIQUID
color = "#C87D28"
-datum/reagent/fungus/reaction_mob(var/mob/M, var/method=TOUCH, var/volume)
+/datum/reagent/fungus/reaction_mob(mob/M, method=TOUCH, volume)
if(!istype(M, /mob/living))
return
if(method == INGEST)
@@ -213,10 +199,9 @@ datum/reagent/fungus/reaction_mob(var/mob/M, var/method=TOUCH, var/volume)
color = "#B4B400"
metabolization_rate = 0.2
-/datum/reagent/chicken_soup/on_mob_life(var/mob/living/M as mob)
+/datum/reagent/chicken_soup/on_mob_life(mob/living/M)
M.nutrition += 2
..()
- return
/datum/reagent/msg
name = "Monosodium glutamate"
@@ -226,14 +211,14 @@ datum/reagent/fungus/reaction_mob(var/mob/M, var/method=TOUCH, var/volume)
color = "#F5F5F5"
metabolization_rate = 0.2
-datum/reagent/msg/reaction_mob(var/mob/M, var/method=TOUCH, var/volume)
+/datum/reagent/msg/reaction_mob(mob/M, method=TOUCH, volume)
if(!istype(M, /mob/living))
return
if(method == INGEST)
to_chat(M, "That tasted amazing!")
-/datum/reagent/msg/on_mob_life(var/mob/living/M as mob)
+/datum/reagent/msg/on_mob_life(mob/living/M)
if(prob(5))
if(prob(10))
M.adjustToxLoss(rand(2.4))
@@ -241,7 +226,6 @@ datum/reagent/msg/reaction_mob(var/mob/M, var/method=TOUCH, var/volume)
to_chat(M, "A horrible migraine overpowers you.")
M.Stun(rand(2,5))
..()
- return
/datum/reagent/cheese
name = "Cheese"
@@ -252,16 +236,15 @@ datum/reagent/msg/reaction_mob(var/mob/M, var/method=TOUCH, var/volume)
metabolization_rate = 0 //heheheh
-/datum/reagent/cheese/on_mob_life(var/mob/living/M as mob)
+/datum/reagent/cheese/on_mob_life(mob/living/M)
if(prob(3))
M.reagents.add_reagent("cholesterol", rand(1,2))
..()
-datum/reagent/cheese/reaction_turf(var/turf/T, var/volume)
+/datum/reagent/cheese/reaction_turf(turf/T, volume)
src = null
if(volume >= 5)
new /obj/item/weapon/reagent_containers/food/snacks/cheesewedge(T)
- return
/datum/chemical_reaction/cheese
name = "cheese"
@@ -271,7 +254,7 @@ datum/reagent/cheese/reaction_turf(var/turf/T, var/volume)
result_amount = 1
mix_message = "The mixture curdles up."
-/datum/chemical_reaction/cheese/on_reaction(var/datum/reagents/holder)
+/datum/chemical_reaction/cheese/on_reaction(datum/reagents/holder)
var/turf/T = get_turf(holder.my_atom)
T.visible_message("A faint cheesy smell drifts through the air...")
@@ -283,7 +266,7 @@ datum/reagent/cheese/reaction_turf(var/turf/T, var/volume)
color = "#B2B139"
overdose_threshold = 50
-/datum/reagent/fake_cheese/overdose_process(var/mob/living/M as mob, severity)
+/datum/reagent/fake_cheese/overdose_process(mob/living/M, severity)
if(prob(8))
to_chat(M, "You feel something squirming in your stomach. Your thoughts turn to cheese and you begin to sweat.")
M.adjustToxLoss(rand(1,2))
@@ -297,16 +280,15 @@ datum/reagent/cheese/reaction_turf(var/turf/T, var/volume)
metabolization_rate = 0 //heheheh
addiction_chance = 5
-/datum/reagent/weird_cheese/on_mob_life(var/mob/living/M as mob)
+/datum/reagent/weird_cheese/on_mob_life(mob/living/M)
if(prob(5))
M.reagents.add_reagent("cholesterol", rand(1,3))
..()
-datum/reagent/weird_cheese/reaction_turf(var/turf/T, var/volume)
+/datum/reagent/weird_cheese/reaction_turf(turf/T, volume)
src = null
if(volume >= 5)
new /obj/item/weapon/reagent_containers/food/snacks/weirdcheesewedge(T)
- return
/datum/chemical_reaction/weird_cheese
name = "Weird cheese"
@@ -317,23 +299,21 @@ datum/reagent/weird_cheese/reaction_turf(var/turf/T, var/volume)
mix_message = "The disgusting mixture sloughs together horribly, emitting a foul stench."
mix_sound = 'sound/goonstation/misc/gurggle.ogg'
-/datum/chemical_reaction/weird_cheese/on_reaction(var/datum/reagents/holder)
+/datum/chemical_reaction/weird_cheese/on_reaction(datum/reagents/holder)
var/turf/T = get_turf(holder.my_atom)
T.visible_message("A horrible smell assaults your nose! What in space is it?")
-datum/reagent/beans
+/datum/reagent/beans
name = "Refried beans"
id = "beans"
description = "A dish made of mashed beans cooked with lard."
reagent_state = LIQUID
color = "#684435"
-datum/reagent/beans/on_mob_life(var/mob/living/M as mob)
- if(!M) M = holder.my_atom
+/datum/reagent/beans/on_mob_life(mob/living/M)
if(prob(10))
M.emote("fart")
..()
- return
/datum/reagent/bread
name = "Bread"
@@ -342,11 +322,10 @@ datum/reagent/beans/on_mob_life(var/mob/living/M as mob)
reagent_state = SOLID
color = "#9C5013"
-datum/reagent/bread/reaction_turf(var/turf/T, var/volume)
+/datum/reagent/bread/reaction_turf(turf/T, volume)
src = null
if(volume >= 5)
new /obj/item/weapon/reagent_containers/food/snacks/breadslice(T)
- return
/datum/reagent/vomit
name = "Vomit"
@@ -355,12 +334,11 @@ datum/reagent/bread/reaction_turf(var/turf/T, var/volume)
reagent_state = LIQUID
color = "#FFFF00"
-datum/reagent/vomit/reaction_turf(var/turf/T, var/volume)
+/datum/reagent/vomit/reaction_turf(turf/T, volume)
src = null
if(volume >= 5)
new /obj/effect/decal/cleanable/vomit(T)
playsound(T, 'sound/effects/splat.ogg', 50, 1, -3)
- return
/datum/reagent/greenvomit
name = "Green vomit"
@@ -369,12 +347,11 @@ datum/reagent/vomit/reaction_turf(var/turf/T, var/volume)
reagent_state = LIQUID
color = "#78FF74"
-datum/reagent/greenvomit/reaction_turf(var/turf/T, var/volume)
+/datum/reagent/greenvomit/reaction_turf(turf/T, volume)
src = null
if(volume >= 5)
new /obj/effect/decal/cleanable/vomit/green(T)
playsound(T, 'sound/effects/splat.ogg', 50, 1, -3)
- return
/datum/reagent/ectoplasm
@@ -385,25 +362,23 @@ datum/reagent/greenvomit/reaction_turf(var/turf/T, var/volume)
color = "#8EAE7B"
process_flags = ORGANIC | SYNTHETIC //Because apparently ghosts in the shell
-datum/reagent/ectoplasm/reaction_mob(var/mob/M, var/method=TOUCH, var/volume)
+/datum/reagent/ectoplasm/reaction_mob(mob/M, method=TOUCH, volume)
if(!istype(M, /mob/living))
return
if(method == INGEST)
var/spooky_eat = pick("Ugh, why did you eat that? Your mouth feels haunted. Haunted with bad flavors.", "Ugh, why did you eat that? It has the texture of ham aspic. From the 1950s. Left out in the sun.", "Ugh, why did you eat that? It tastes like a ghost fart.", "Ugh, why did you eat that? It tastes like flavor died.")
to_chat(M, "[spooky_eat]")
-/datum/reagent/ectoplasm/on_mob_life(var/mob/living/M as mob)
+/datum/reagent/ectoplasm/on_mob_life(mob/living/M)
var/spooky_message = pick("You notice something moving out of the corner of your eye, but nothing is there...", "Your eyes twitch, you feel like something you can't see is here...", "You've got the heebie-jeebies.", "You feel uneasy.", "You shudder as if cold...", "You feel something gliding across your back...")
if(prob(8))
to_chat(M, "[spooky_message]")
..()
- return
-datum/reagent/ectoplasm/reaction_turf(var/turf/T, var/volume)
+/datum/reagent/ectoplasm/reaction_turf(turf/T, volume)
src = null
if(volume >= 10)
new /obj/item/weapon/reagent_containers/food/snacks/ectoplasm(T)
- return
/datum/reagent/soybeanoil
name = "Space-soybean oil"
@@ -412,13 +387,12 @@ datum/reagent/ectoplasm/reaction_turf(var/turf/T, var/volume)
reagent_state = LIQUID
color = "#B1B0B0"
-/datum/reagent/soybeanoil/on_mob_life(var/mob/living/M as mob)
+/datum/reagent/soybeanoil/on_mob_life(mob/living/M)
if(prob(10))
M.reagents.add_reagent("cholesterol", rand(1,3))
if(prob(8))
M.reagents.add_reagent("porktonium", 5)
..()
- return
/datum/reagent/hydrogenated_soybeanoil
name = "Partially hydrogenated space-soybean oil"
@@ -429,7 +403,7 @@ datum/reagent/ectoplasm/reaction_turf(var/turf/T, var/volume)
metabolization_rate = 0.2
overdose_threshold = 75
-/datum/reagent/hydrogenated_soybeanoil/on_mob_life(var/mob/living/M as mob)
+/datum/reagent/hydrogenated_soybeanoil/on_mob_life(mob/living/M)
if(prob(15))
M.reagents.add_reagent("cholesterol", rand(1,3))
if(prob(8))
@@ -439,9 +413,8 @@ datum/reagent/ectoplasm/reaction_turf(var/turf/T, var/volume)
else
metabolization_rate = 0.2
..()
- return
-/datum/reagent/hydrogenated_soybeanoil/overdose_process(var/mob/living/M as mob, severity)
+/datum/reagent/hydrogenated_soybeanoil/overdose_process(mob/living/M, severity)
if(prob(33))
to_chat(M, "You feel horribly weak.")
if(prob(10))
@@ -469,12 +442,12 @@ datum/reagent/ectoplasm/reaction_turf(var/turf/T, var/volume)
reagent_state = LIQUID
color = "#EBD7D7"
-/datum/reagent/meatslurry/on_mob_life(var/mob/living/M as mob)
+/datum/reagent/meatslurry/on_mob_life(mob/living/M)
if(prob(4))
M.reagents.add_reagent("cholesterol", rand(1,3))
..()
-/datum/reagent/meatslurry/reaction_turf(var/turf/T, var/volume)
+/datum/reagent/meatslurry/reaction_turf(turf/T, volume)
src = null
if(volume >= 5 && prob(10))
new /obj/effect/decal/cleanable/blood/gibs/cleangibs(T)
@@ -519,7 +492,7 @@ datum/reagent/ectoplasm/reaction_turf(var/turf/T, var/volume)
reagent_state = SOLID
color = "#AC7E67"
-/datum/reagent/beff/on_mob_life(var/mob/living/M as mob)
+/datum/reagent/beff/on_mob_life(mob/living/M)
if(prob(5))
M.reagents.add_reagent("cholesterol", rand(1,3))
if(prob(8))
@@ -528,7 +501,6 @@ datum/reagent/ectoplasm/reaction_turf(var/turf/T, var/volume)
to_chat(M, "[pick("You feel ill.","Your stomach churns.","You feel queasy.","You feel sick.")]")
M.emote(pick("groan","moan"))
..()
- return
/datum/chemical_reaction/beff
name = "Beff"
@@ -546,7 +518,7 @@ datum/reagent/ectoplasm/reaction_turf(var/turf/T, var/volume)
reagent_state = SOLID
color = "#AC7E67"
-datum/reagent/pepperoni/reaction_mob(var/mob/living/M, var/method=TOUCH, var/volume)
+/datum/reagent/pepperoni/reaction_mob(mob/living/M, method=TOUCH, volume)
if(method == TOUCH)
if(ishuman(M))
var/mob/living/carbon/human/H = M
@@ -584,7 +556,7 @@ datum/reagent/pepperoni/reaction_mob(var/mob/living/M, var/method=TOUCH, var/vol
reagent_state = LIQUID
color = "#FFFAC8"
-/datum/reagent/cholesterol/on_mob_life(var/mob/living/M as mob)
+/datum/reagent/cholesterol/on_mob_life(mob/living/M)
if(volume >= 25 && prob(volume*0.15))
to_chat(M, "Your chest feels [pick("weird","uncomfortable","nasty","gross","odd","unusual","warm")]!")
M.adjustToxLoss(rand(1,2))
diff --git a/code/modules/reagents/newchem/medicine.dm b/code/modules/reagents/newchem/medicine.dm
index 9357fc62899..5d4fb8ef6bc 100644
--- a/code/modules/reagents/newchem/medicine.dm
+++ b/code/modules/reagents/newchem/medicine.dm
@@ -4,7 +4,7 @@
#define REM REAGENTS_EFFECT_MULTIPLIER
-datum/reagent/silver_sulfadiazine
+/datum/reagent/silver_sulfadiazine
name = "Silver Sulfadiazine"
id = "silver_sulfadiazine"
description = "This antibacterial compound is used to treat burn victims."
@@ -12,7 +12,7 @@ datum/reagent/silver_sulfadiazine
color = "#F0C814"
metabolization_rate = 3
-datum/reagent/silver_sulfadiazine/reaction_mob(var/mob/living/M as mob, var/method=TOUCH, var/volume, var/show_message = 1)
+/datum/reagent/silver_sulfadiazine/reaction_mob(mob/living/M, method=TOUCH, volume, show_message = 1)
if(iscarbon(M))
if(method == TOUCH)
M.adjustFireLoss(-volume)
@@ -23,15 +23,12 @@ datum/reagent/silver_sulfadiazine/reaction_mob(var/mob/living/M as mob, var/meth
if(show_message)
to_chat(M, "You feel sick...")
..()
- return
-datum/reagent/silver_sulfadiazine/on_mob_life(var/mob/living/M as mob)
- if(!M) M = holder.my_atom
+/datum/reagent/silver_sulfadiazine/on_mob_life(mob/living/M)
M.adjustFireLoss(-2*REM)
..()
- return
-datum/reagent/styptic_powder
+/datum/reagent/styptic_powder
name = "Styptic Powder"
id = "styptic_powder"
description = "Styptic (aluminium sulfate) powder helps control bleeding and heal physical wounds."
@@ -39,7 +36,7 @@ datum/reagent/styptic_powder
color = "#C8A5DC"
metabolization_rate = 3
-datum/reagent/styptic_powder/reaction_mob(var/mob/living/M as mob, var/method=TOUCH, var/volume, var/show_message = 1)
+/datum/reagent/styptic_powder/reaction_mob(mob/living/M, method=TOUCH, volume, show_message = 1)
if(iscarbon(M))
if(method == TOUCH)
M.adjustBruteLoss(-volume)
@@ -51,13 +48,10 @@ datum/reagent/styptic_powder/reaction_mob(var/mob/living/M as mob, var/method=TO
if(show_message)
to_chat(M, "You feel gross!")
..()
- return
-datum/reagent/styptic_powder/on_mob_life(var/mob/living/M as mob)
- if(!M) M = holder.my_atom
+/datum/reagent/styptic_powder/on_mob_life(mob/living/M)
M.adjustBruteLoss(-2*REM)
..()
- return
/datum/reagent/salglu_solution
name = "Saline-Glucose Solution"
@@ -69,8 +63,6 @@ datum/reagent/styptic_powder/on_mob_life(var/mob/living/M as mob)
metabolization_rate = 0.15
/datum/reagent/salglu_solution/on_mob_life(mob/living/M)
- if(!M)
- M = holder.my_atom
if(prob(33))
M.adjustBruteLoss(-2*REM)
M.adjustFireLoss(-2*REM)
@@ -80,15 +72,14 @@ datum/reagent/styptic_powder/on_mob_life(var/mob/living/M as mob)
H.vessel.add_reagent("blood", 1)
..()
-datum/reagent/synthflesh
+/datum/reagent/synthflesh
name = "Synthflesh"
id = "synthflesh"
description = "A resorbable microfibrillar collagen and protein mixture that can rapidly heal injuries when applied topically."
reagent_state = LIQUID
color = "#FFEBEB"
-datum/reagent/synthflesh/reaction_mob(var/mob/living/M, var/method=TOUCH, var/volume,var/show_message = 1)
- if(!M) M = holder.my_atom
+/datum/reagent/synthflesh/reaction_mob(mob/living/M, method=TOUCH, volume, show_message = 1)
if(iscarbon(M))
if(method == TOUCH)
M.adjustBruteLoss(-1.5*volume)
@@ -96,31 +87,27 @@ datum/reagent/synthflesh/reaction_mob(var/mob/living/M, var/method=TOUCH, var/vo
if(show_message)
to_chat(M, "The synthetic flesh integrates itself into your wounds, healing you.")
..()
- return
-datum/reagent/synthflesh/reaction_turf(var/turf/T, var/volume) //let's make a mess!
+/datum/reagent/synthflesh/reaction_turf(turf/T, volume) //let's make a mess!
src = null
if(volume >= 5)
new /obj/effect/decal/cleanable/blood/gibs/cleangibs(T)
playsound(T, 'sound/effects/splat.ogg', 50, 1, -3)
- return
-datum/reagent/charcoal
+/datum/reagent/charcoal
name = "Charcoal"
id = "charcoal"
description = "Activated charcoal helps to absorb toxins."
reagent_state = LIQUID
color = "#000000"
-datum/reagent/charcoal/on_mob_life(var/mob/living/M as mob)
- if(!M) M = holder.my_atom
+/datum/reagent/charcoal/on_mob_life(mob/living/M)
M.adjustToxLoss(-1.5*REM)
if(prob(50))
for(var/datum/reagent/R in M.reagents.reagent_list)
if(R != src)
M.reagents.remove_reagent(R.id,1)
..()
- return
/datum/chemical_reaction/charcoal
name = "Charcoal"
@@ -165,7 +152,7 @@ datum/reagent/charcoal/on_mob_life(var/mob/living/M as mob)
result_amount = 4
mix_message = "The solution yields an astringent powder."
-datum/reagent/omnizine
+/datum/reagent/omnizine
name = "Omnizine"
id = "omnizine"
description = "Omnizine is a highly potent healing medication that can be used to treat a wide range of injuries."
@@ -175,8 +162,7 @@ datum/reagent/omnizine
overdose_threshold = 30
addiction_chance = 5
-/datum/reagent/omnizine/on_mob_life(var/mob/living/M as mob)
- if(!M) M = holder.my_atom
+/datum/reagent/omnizine/on_mob_life(mob/living/M)
M.adjustToxLoss(-1*REM)
M.adjustOxyLoss(-1*REM)
M.adjustBruteLoss(-2*REM)
@@ -184,9 +170,8 @@ datum/reagent/omnizine
if(prob(50))
M.losebreath -= 1
..()
- return
-/datum/reagent/omnizine/overdose_process(var/mob/living/M as mob, severity)
+/datum/reagent/omnizine/overdose_process(mob/living/M, severity)
var/effect = ..()
if(severity == 1) //lesser
M.stuttering += 1
@@ -220,7 +205,7 @@ datum/reagent/omnizine
M.Dizzy(5)
M.Weaken(3)
-datum/reagent/calomel
+/datum/reagent/calomel
name = "Calomel"
id = "calomel"
description = "This potent purgative rids the body of impurities. It is highly toxic however and close supervision is required."
@@ -228,8 +213,7 @@ datum/reagent/calomel
color = "#22AB35"
metabolization_rate = 0.8
-datum/reagent/calomel/on_mob_life(var/mob/living/M as mob)
- if(!M) M = holder.my_atom
+/datum/reagent/calomel/on_mob_life(mob/living/M)
for(var/datum/reagent/R in M.reagents.reagent_list)
if(R != src)
M.reagents.remove_reagent(R.id,5)
@@ -238,7 +222,6 @@ datum/reagent/calomel/on_mob_life(var/mob/living/M as mob)
if(prob(6))
M.fakevomit()
..()
- return
/datum/chemical_reaction/calomel
name = "Calomel"
@@ -249,19 +232,17 @@ datum/reagent/calomel/on_mob_life(var/mob/living/M as mob)
min_temp = 374
mix_message = "Stinging vapors rise from the solution."
-datum/reagent/potass_iodide
+/datum/reagent/potass_iodide
name = "Potassium Iodide"
id = "potass_iodide"
description = "Potassium Iodide is a medicinal drug used to counter the effects of radiation poisoning."
reagent_state = LIQUID
color = "#B4DCBE"
-datum/reagent/potass_iodide/on_mob_life(var/mob/living/M as mob)
- if(!M) M = holder.my_atom
+/datum/reagent/potass_iodide/on_mob_life(mob/living/M)
if(prob(80))
M.radiation = max(0, M.radiation-1)
..()
- return
/datum/chemical_reaction/potass_iodide
name = "Potassium Iodide"
@@ -271,15 +252,14 @@ datum/reagent/potass_iodide/on_mob_life(var/mob/living/M as mob)
result_amount = 2
mix_message = "The solution settles calmly and emits gentle fumes."
-datum/reagent/pen_acid
+/datum/reagent/pen_acid
name = "Pentetic Acid"
id = "pen_acid"
description = "Pentetic Acid is an aggressive chelation agent. May cause tissue damage. Use with caution."
reagent_state = LIQUID
color = "#C8A5DC"
-datum/reagent/pen_acid/on_mob_life(var/mob/living/M as mob)
- if(!M) M = holder.my_atom
+/datum/reagent/pen_acid/on_mob_life(mob/living/M)
for(var/datum/reagent/R in M.reagents.reagent_list)
if(R != src)
M.reagents.remove_reagent(R.id,4)
@@ -300,7 +280,7 @@ datum/reagent/pen_acid/on_mob_life(var/mob/living/M as mob)
result_amount = 6
mix_message = "The substance becomes very still, emitting a curious haze."
-datum/reagent/sal_acid
+/datum/reagent/sal_acid
name = "Salicylic Acid"
id = "sal_acid"
description = "This is a is a standard salicylate pain reliever and fever reducer."
@@ -310,8 +290,7 @@ datum/reagent/sal_acid
shock_reduction = 25
overdose_threshold = 25
-datum/reagent/sal_acid/on_mob_life(var/mob/living/M as mob)
- if(!M) M = holder.my_atom
+/datum/reagent/sal_acid/on_mob_life(mob/living/M)
if(prob(55))
M.adjustBruteLoss(-2*REM)
if(ishuman(M))
@@ -319,7 +298,6 @@ datum/reagent/sal_acid/on_mob_life(var/mob/living/M as mob)
if(H.traumatic_shock < 100)
H.shock_stage = 0
..()
- return
/datum/chemical_reaction/sal_acid
name = "Salicyclic Acid"
@@ -330,7 +308,7 @@ datum/reagent/sal_acid/on_mob_life(var/mob/living/M as mob)
mix_message = "The mixture crystallizes."
mix_sound = 'sound/goonstation/misc/drinkfizz.ogg'
-datum/reagent/salbutamol
+/datum/reagent/salbutamol
name = "Salbutamol"
id = "salbutamol"
description = "Salbutamol is a common bronchodilation medication for asthmatics. It may help with other breathing problems as well."
@@ -338,12 +316,10 @@ datum/reagent/salbutamol
color = "#00FFFF"
metabolization_rate = 0.2
-datum/reagent/salbutamol/on_mob_life(var/mob/living/M as mob)
- if(!M) M = holder.my_atom
+/datum/reagent/salbutamol/on_mob_life(mob/living/M)
M.adjustOxyLoss(-6*REM)
M.losebreath = max(0, M.losebreath-4)
..()
- return
/datum/chemical_reaction/salbutamol
name = "Salbutamol"
@@ -354,7 +330,7 @@ datum/reagent/salbutamol/on_mob_life(var/mob/living/M as mob)
mix_message = "The solution bubbles freely, creating a head of bluish foam."
mix_sound = 'sound/goonstation/misc/drinkfizz.ogg'
-datum/reagent/perfluorodecalin
+/datum/reagent/perfluorodecalin
name = "Perfluorodecalin"
id = "perfluorodecalin"
description = "This experimental perfluoronated solvent has applications in liquid breathing and tissue oxygenation. Use with caution."
@@ -363,8 +339,7 @@ datum/reagent/perfluorodecalin
metabolization_rate = 0.2
addiction_chance = 20
-datum/reagent/perfluorodecalin/on_mob_life(var/mob/living/carbon/human/M as mob)
- if(!M) M = holder.my_atom
+/datum/reagent/perfluorodecalin/on_mob_life(mob/living/carbon/human/M)
M.adjustOxyLoss(-25*REM)
if(volume >= 4)
M.losebreath = max(M.losebreath, 6)
@@ -373,7 +348,6 @@ datum/reagent/perfluorodecalin/on_mob_life(var/mob/living/carbon/human/M as mob)
M.adjustBruteLoss(-1*REM)
M.adjustFireLoss(-1*REM)
..()
- return
/datum/chemical_reaction/perfluorodecalin
name = "Perfluorodecalin"
@@ -395,8 +369,7 @@ datum/reagent/perfluorodecalin/on_mob_life(var/mob/living/carbon/human/M as mob)
overdose_threshold = 35
addiction_chance = 25
-/datum/reagent/ephedrine/on_mob_life(var/mob/living/M as mob)
- if(!M) M = holder.my_atom
+/datum/reagent/ephedrine/on_mob_life(mob/living/M)
M.drowsyness = max(0, M.drowsyness-5)
M.AdjustParalysis(-1)
M.AdjustStunned(-1)
@@ -411,9 +384,8 @@ datum/reagent/perfluorodecalin/on_mob_life(var/mob/living/carbon/human/M as mob)
M.adjustBruteLoss(-1)
M.adjustFireLoss(-1)
..()
- return
-/datum/reagent/ephedrine/overdose_process(var/mob/living/M as mob, severity)
+/datum/reagent/ephedrine/overdose_process(mob/living/M, severity)
var/effect = ..()
if(severity == 1)
if(effect <= 1)
@@ -442,7 +414,7 @@ datum/reagent/perfluorodecalin/on_mob_life(var/mob/living/carbon/human/M as mob)
result_amount = 4
mix_message = "The solution fizzes and gives off toxic fumes."
-datum/reagent/diphenhydramine
+/datum/reagent/diphenhydramine
name = "Diphenhydramine"
id = "diphenhydramine"
description = "Anti-allergy medication. May cause drowsiness, do not operate heavy machinery while using this."
@@ -450,8 +422,7 @@ datum/reagent/diphenhydramine
color = "#5BCBE1"
addiction_chance = 10
-datum/reagent/diphenhydramine/on_mob_life(var/mob/living/M as mob)
- if(!M) M = holder.my_atom
+/datum/reagent/diphenhydramine/on_mob_life(mob/living/M)
M.jitteriness = max(0, M.jitteriness-20)
M.reagents.remove_reagent("histamine",3)
M.reagents.remove_reagent("itching_powder",3)
@@ -462,7 +433,6 @@ datum/reagent/diphenhydramine/on_mob_life(var/mob/living/M as mob)
M.drowsyness += 1
M.visible_message("[M] looks a bit dazed.")
..()
- return
/datum/chemical_reaction/diphenhydramine
name = "Diphenhydramine"
@@ -473,7 +443,7 @@ datum/reagent/diphenhydramine/on_mob_life(var/mob/living/M as mob)
mix_message = "The mixture fizzes gently."
mix_sound = 'sound/goonstation/misc/drinkfizz.ogg'
-datum/reagent/morphine
+/datum/reagent/morphine
name = "Morphine"
id = "morphine"
description = "A strong but highly addictive opiate painkiller with sedative side effects."
@@ -483,8 +453,7 @@ datum/reagent/morphine
addiction_chance = 50
shock_reduction = 50
-datum/reagent/morphine/on_mob_life(var/mob/living/M as mob)
- if(!M) M = holder.my_atom
+/datum/reagent/morphine/on_mob_life(mob/living/M)
M.jitteriness = max(0, M.jitteriness-25)
switch(current_cycle)
if(1 to 15)
@@ -500,10 +469,8 @@ datum/reagent/morphine/on_mob_life(var/mob/living/M as mob)
if(H.traumatic_shock < 100)
H.shock_stage = 0
..()
- return
-datum/reagent/oculine/on_mob_life(var/mob/living/M as mob)
- if(!M) M = holder.my_atom
+/datum/reagent/oculine/on_mob_life(mob/living/M)
if(prob(80))
if(ishuman(M))
var/mob/living/carbon/human/H = M
@@ -521,7 +488,6 @@ datum/reagent/oculine/on_mob_life(var/mob/living/M as mob)
if(prob(30))
M.ear_deaf = 0
..()
- return
/datum/chemical_reaction/oculine
name = "Oculine"
@@ -531,7 +497,7 @@ datum/reagent/oculine/on_mob_life(var/mob/living/M as mob)
result_amount = 3
mix_message = "The mixture settles, becoming a milky white."
-datum/reagent/oculine
+/datum/reagent/oculine
name = "Oculine"
id = "oculine"
description = "Oculine is a saline eye medication with mydriatic and antibiotic effects."
@@ -540,7 +506,7 @@ datum/reagent/oculine
metabolization_rate = 0.4
var/cycle_amount = 0
-datum/reagent/atropine
+/datum/reagent/atropine
name = "Atropine"
id = "atropine"
description = "Atropine is a potent cardiac resuscitant but it can causes confusion, dizzyness and hyperthermia."
@@ -549,8 +515,7 @@ datum/reagent/atropine
metabolization_rate = 0.2
overdose_threshold = 25
-datum/reagent/atropine/on_mob_life(var/mob/living/M as mob)
- if(!M) M = holder.my_atom
+/datum/reagent/atropine/on_mob_life(mob/living/M)
M.dizziness += 1
M.confused = max(M.confused, 5)
if(prob(4))
@@ -567,7 +532,6 @@ datum/reagent/atropine/on_mob_life(var/mob/living/M as mob)
M.adjustToxLoss(1)
M.reagents.remove_reagent("sarin", 20)
..()
- return
/datum/chemical_reaction/atropine
name = "Atropine"
@@ -577,7 +541,7 @@ datum/reagent/atropine/on_mob_life(var/mob/living/M as mob)
result_amount = 5
mix_message = "A horrid smell like something died drifts from the mixture."
-datum/reagent/epinephrine
+/datum/reagent/epinephrine
name = "Epinephrine"
id = "epinephrine"
description = "Epinephrine is a potent neurotransmitter, used in medical emergencies to halt anaphylactic shock and prevent cardiac arrest."
@@ -586,8 +550,7 @@ datum/reagent/epinephrine
metabolization_rate = 0.2
overdose_threshold = 20
-datum/reagent/epinephrine/on_mob_life(var/mob/living/M as mob)
- if(!M) M = holder.my_atom
+/datum/reagent/epinephrine/on_mob_life(mob/living/M)
M.drowsyness = max(0, M.drowsyness-5)
if(prob(20))
M.AdjustParalysis(-1)
@@ -609,9 +572,8 @@ datum/reagent/epinephrine/on_mob_life(var/mob/living/M as mob)
M.adjustBruteLoss(-1*REM)
M.adjustFireLoss(-1*REM)
..()
- return
-/datum/reagent/epinephrine/overdose_process(var/mob/living/M as mob, severity)
+/datum/reagent/epinephrine/overdose_process(mob/living/M, severity)
var/effect = ..()
if(severity == 1)
if(effect <= 1)
@@ -641,7 +603,7 @@ datum/reagent/epinephrine/on_mob_life(var/mob/living/M as mob)
mix_message = "Tiny white crystals precipitate out of the solution."
mix_sound = 'sound/goonstation/misc/drinkfizz.ogg'
-datum/reagent/strange_reagent
+/datum/reagent/strange_reagent
name = "Strange Reagent"
id = "strange_reagent"
description = "A glowing green fluid highly reminiscent of nuclear waste."
@@ -649,7 +611,7 @@ datum/reagent/strange_reagent
color = "#A0E85E"
metabolization_rate = 0.2
-datum/reagent/strange_reagent/reaction_mob(var/mob/living/M as mob, var/method=TOUCH, var/volume)
+/datum/reagent/strange_reagent/reaction_mob(mob/living/M, method=TOUCH, volume)
if(isanimal(M))
if(method == TOUCH)
var/mob/living/simple_animal/SM = M
@@ -680,15 +642,12 @@ datum/reagent/strange_reagent/reaction_mob(var/mob/living/M as mob, var/method=T
M.stat = UNCONSCIOUS
add_logs(M, M, "revived", object="strange reagent")
..()
- return
-datum/reagent/strange_reagent/on_mob_life(var/mob/living/M as mob)
- if(!M) M = holder.my_atom
+/datum/reagent/strange_reagent/on_mob_life(mob/living/M)
if(prob(10))
M.adjustBruteLoss(2*REM)
M.adjustToxLoss(2*REM)
..()
- return
/datum/chemical_reaction/strange_reagent
name = "Strange Reagent"
@@ -698,7 +657,7 @@ datum/reagent/strange_reagent/on_mob_life(var/mob/living/M as mob)
result_amount = 3
mix_message = "The substance begins moving on its own somehow."
-datum/reagent/life
+/datum/reagent/life
name = "Life"
id = "life"
description = "Can create a life form, however it is not guaranteed to be friendly. May want to have Security on hot standby."
@@ -714,13 +673,12 @@ datum/reagent/life
result_amount = 3
min_temp = 374
-/datum/chemical_reaction/life/on_reaction(var/datum/reagents/holder, var/created_volume)
+/datum/chemical_reaction/life/on_reaction(datum/reagents/holder, created_volume)
chemical_mob_spawn(holder, 1, "Life")
-/datum/reagent/mannitol/on_mob_life(mob/living/M as mob)
+/datum/reagent/mannitol/on_mob_life(mob/living/M)
M.adjustBrainLoss(-3)
..()
- return
/datum/chemical_reaction/mannitol
name = "Mannitol"
@@ -736,7 +694,7 @@ datum/reagent/life
description = "Mannitol is a sugar alcohol that can help alleviate cranial swelling."
color = "#D1D1F1"
-/datum/reagent/mutadone/on_mob_life(var/mob/living/carbon/human/M as mob)
+/datum/reagent/mutadone/on_mob_life(mob/living/carbon/human/M)
M.jitteriness = 0
var/needs_update = M.mutations.len > 0 || M.disabilities > 0 || M.sdisabilities > 0
@@ -753,7 +711,6 @@ datum/reagent/life
var/mob/living/carbon/human/H = M
H.update_mutations()
..()
- return
/datum/chemical_reaction/mutadone
name = "Mutadone"
@@ -770,13 +727,13 @@ datum/reagent/life
description = "Mutadone is an experimental bromide that can cure genetic abnomalities."
color = "#5096C8"
-datum/reagent/antihol
+/datum/reagent/antihol
name = "Antihol"
id = "antihol"
description = "A medicine which quickly eliminates alcohol in the body."
color = "#009CA8"
-datum/reagent/antihol/on_mob_life(var/mob/living/M as mob)
+/datum/reagent/antihol/on_mob_life(mob/living/M)
M.slurring = 0
M.AdjustDrunk(-4)
M.reagents.remove_all_type(/datum/reagent/ethanol, 8, 0, 1)
@@ -800,8 +757,7 @@ datum/reagent/antihol/on_mob_life(var/mob/living/M as mob)
color = "#C8A5DC"
metabolization_rate = 0.4
-datum/reagent/stimulants/on_mob_life(var/mob/living/M as mob)
- if(!M) M = holder.my_atom
+/datum/reagent/stimulants/on_mob_life(mob/living/M)
if(volume > 5)
M.adjustOxyLoss(-5*REM)
M.adjustToxLoss(-5*REM)
@@ -823,11 +779,9 @@ datum/reagent/stimulants/on_mob_life(var/mob/living/M as mob)
M.Stun(3)
..()
-datum/reagent/stimulants/reagent_deleted(var/mob/living/M as mob)
- if(!M) M = holder.my_atom
+/datum/reagent/stimulants/reagent_deleted(mob/living/M)
M.status_flags |= CANSTUN | CANWEAKEN | CANPARALYSE
..()
- return
/datum/reagent/medicine/stimulative_agent
name = "Stimulative Agent"
@@ -850,24 +804,26 @@ datum/reagent/stimulants/reagent_deleted(var/mob/living/M as mob)
M.adjustStaminaLoss(-5*REM)
..()
+/datum/reagent/medicine/stimulative_agent/reagent_deleted(mob/living/M)
+ M.status_flags &= ~GOTTAGOFAST
+ ..()
+
/datum/reagent/medicine/stimulative_agent/overdose_process(mob/living/M, severity)
if(prob(33))
M.adjustStaminaLoss(2.5*REM)
M.adjustToxLoss(1*REM)
M.losebreath++
-datum/reagent/insulin
+/datum/reagent/insulin
name = "Insulin"
id = "insulin"
description = "A hormone generated by the pancreas responsible for metabolizing carbohydrates and fat in the bloodstream."
reagent_state = LIQUID
color = "#C8A5DC"
-datum/reagent/insulin/on_mob_life(var/mob/living/M as mob)
- if(!M) M = holder.my_atom
+/datum/reagent/insulin/on_mob_life(mob/living/M)
M.reagents.remove_reagent("sugar", 5)
..()
- return
/datum/reagent/simethicone
@@ -884,7 +840,7 @@ datum/reagent/insulin/on_mob_life(var/mob/living/M as mob)
result_amount = 4
-datum/reagent/teporone
+/datum/reagent/teporone
name = "Teporone"
id = "teporone"
description = "This experimental plasma-based compound seems to regulate body temperature."
@@ -893,14 +849,12 @@ datum/reagent/teporone
addiction_chance = 20
overdose_threshold = 50
-datum/reagent/teporone/on_mob_life(var/mob/living/M as mob)
- if(!M) M = holder.my_atom
+/datum/reagent/teporone/on_mob_life(mob/living/M)
if(M.bodytemperature > 310)
- M.bodytemperature -= 10
- if(M.bodytemperature < 310)
- M.bodytemperature += 10
+ M.bodytemperature = max(310, M.bodytemperature - (40 * TEMPERATURE_DAMAGE_COEFFICIENT))
+ else if(M.bodytemperature < 311)
+ M.bodytemperature = min(310, M.bodytemperature + (40 * TEMPERATURE_DAMAGE_COEFFICIENT))
..()
- return
/datum/chemical_reaction/teporone
name = "Teporone"
@@ -911,15 +865,14 @@ datum/reagent/teporone/on_mob_life(var/mob/living/M as mob)
mix_message = "The mixture turns an odd lavender color."
mix_sound = 'sound/goonstation/misc/drinkfizz.ogg'
-datum/reagent/haloperidol
+/datum/reagent/haloperidol
name = "Haloperidol"
id = "haloperidol"
description = "Haloperidol is a powerful antipsychotic and sedative. Will help control psychiatric problems, but may cause brain damage."
reagent_state = LIQUID
color = "#FFDCFF"
-datum/reagent/haloperidol/on_mob_life(var/mob/living/M as mob)
- if(!M) M = holder.my_atom
+/datum/reagent/haloperidol/on_mob_life(mob/living/M)
M.reagents.remove_reagent("crank", 5)
M.reagents.remove_reagent("methamphetamine", 5)
M.reagents.remove_reagent("space_drugs", 5)
@@ -940,7 +893,6 @@ datum/reagent/haloperidol/on_mob_life(var/mob/living/M as mob)
if(prob(20))
M.adjustBrainLoss(1)
..()
- return
/datum/chemical_reaction/haloperidol
name = "Haloperidol"
@@ -958,8 +910,7 @@ datum/reagent/haloperidol/on_mob_life(var/mob/living/M as mob)
reagent_state = LIQUID
color = "#96DEDE"
-/datum/reagent/ether/on_mob_life(var/mob/living/M as mob)
- if(!M) M = holder.my_atom
+/datum/reagent/ether/on_mob_life(mob/living/M)
M.jitteriness = max(M.jitteriness-25,0)
switch(current_cycle)
if(1 to 15)
@@ -971,7 +922,6 @@ datum/reagent/haloperidol/on_mob_life(var/mob/living/M as mob)
M.Paralyse(15)
M.drowsyness = max(M.drowsyness, 20)
..()
- return
/datum/chemical_reaction/ether
name = "Ether"
@@ -1001,15 +951,15 @@ datum/reagent/haloperidol/on_mob_life(var/mob/living/M as mob)
required_reagents = list("oil" = 1, "sterilizine" = 1)
result_amount = 2
-/datum/reagent/degreaser/reaction_turf(var/turf/simulated/T, var/volume)
- if(!istype(T)) return
+/datum/reagent/degreaser/reaction_turf(turf/simulated/T, volume)
+ if(!istype(T))
+ return
src = null
if(volume >= 1)
if(istype(T) && T.wet)
T.MakeDry(TURF_WET_LUBE)
-/datum/reagent/degreaser/on_mob_life(var/mob/living/M as mob)
- if(!M) M = holder.my_atom
+/datum/reagent/degreaser/on_mob_life(mob/living/M)
if(prob(50)) //Same effects as coffee, to help purge ill effects like paralysis
M.AdjustParalysis(-1)
M.AdjustStunned(-1)
@@ -1023,7 +973,6 @@ datum/reagent/haloperidol/on_mob_life(var/mob/living/M as mob)
else
M.reagents.remove_reagent(R.id,1)
..()
- return
//Liquid Solder: Mannitol
/datum/reagent/liquid_solder
@@ -1034,10 +983,9 @@ datum/reagent/haloperidol/on_mob_life(var/mob/living/M as mob)
color = "#D7B395"
process_flags = SYNTHETIC
-/datum/reagent/liquid_solder/on_mob_life(mob/living/M as mob)
+/datum/reagent/liquid_solder/on_mob_life(mob/living/M)
M.adjustBrainLoss(-3)
..()
- return
/datum/chemical_reaction/liquid_solder
name = "Liquid Solder"
@@ -1049,19 +997,18 @@ datum/reagent/haloperidol/on_mob_life(var/mob/living/M as mob)
mix_message = "The solution gently swirls with a metallic sheen."
-datum/reagent/medicine/syndicate_nanites //Used exclusively by Syndicate medical cyborgs
+/datum/reagent/medicine/syndicate_nanites //Used exclusively by Syndicate medical cyborgs
name = "Restorative Nanites"
id = "syndicate_nanites"
description = "Miniature medical robots that swiftly restore bodily damage. May begin to attack their host's cells in high amounts."
reagent_state = SOLID
color = "#555555"
-datum/reagent/medicine/syndicate_nanites/on_mob_life(mob/living/M)
+/datum/reagent/medicine/syndicate_nanites/on_mob_life(mob/living/M)
M.adjustBruteLoss(-5*REM) //A ton of healing - this is a 50 telecrystal investment.
M.adjustFireLoss(-5*REM)
M.adjustOxyLoss(-15*REM)
M.adjustToxLoss(-5*REM)
M.adjustBrainLoss(-15*REM)
M.adjustCloneLoss(-3*REM)
- ..()
- return
+ ..()
\ No newline at end of file
diff --git a/code/modules/reagents/newchem/newchem_procs.dm b/code/modules/reagents/newchem/newchem_procs.dm
index 7ec43e6a028..4508125387e 100644
--- a/code/modules/reagents/newchem/newchem_procs.dm
+++ b/code/modules/reagents/newchem/newchem_procs.dm
@@ -12,16 +12,18 @@
var/chem_temp = 300
var/list/datum/reagent/addiction_list = new/list()
-/datum/reagents/proc/metabolize(var/mob/M)
+/datum/reagents/proc/metabolize(mob/living/M)
if(M)
- if(!istype(M, /mob/living)) //Non-living mobs can't metabolize reagents, so don't bother trying (runtime safety check)
- return
chem_temp = M.bodytemperature
handle_reactions()
for(var/A in reagent_list)
var/datum/reagent/R = A
if(!istype(R))
continue
+ if(!R.holder)
+ continue
+ if(!M)
+ M = R.holder.my_atom
if(ishuman(M))
var/mob/living/carbon/human/H = M
//Check if this mob's species is set and can process this type of reagent
@@ -82,6 +84,18 @@
addiction_list.Remove(R)
update_total()
+/datum/reagents/proc/death_metabolize(mob/living/M)
+ if(!M)
+ return
+ if(M.stat != DEAD) //what part of DEATH_metabolize don't you get?
+ return
+ for(var/A in reagent_list)
+ var/datum/reagent/R = A
+ if(!istype(R))
+ continue
+ if(M && R)
+ R.on_mob_death(M)
+
/datum/reagents/proc/overdose_list()
var/od_chems[0]
for(var/datum/reagent/R in reagent_list)
@@ -95,42 +109,28 @@
R.on_tick()
return
-/datum/reagents/proc/check_gofast(var/mob/M)
- if(istype(M, /mob))
- if(M.reagents.has_reagent("unholywater")||M.reagents.has_reagent("nuka_cola")||M.reagents.has_reagent("stimulative_agent"))
- return 1
- else
- M.status_flags &= ~GOTTAGOFAST
-
-/datum/reagents/proc/check_goreallyfast(var/mob/M)
- if(istype(M, /mob))
- if(M.reagents.has_reagent("methamphetamine"))
- return 1
- else
- M.status_flags &= ~GOTTAGOREALLYFAST
-
// Called every time reagent containers process.
-/datum/reagent/proc/on_tick(var/data)
+/datum/reagent/proc/on_tick(data)
return
// Called when the reagent container is hit by an explosion
-/datum/reagent/proc/on_ex_act(var/severity)
+/datum/reagent/proc/on_ex_act(severity)
return
// Called if the reagent has passed the overdose threshold and is set to be triggering overdose effects
-/datum/reagent/proc/overdose_process(var/mob/living/M as mob, severity)
+/datum/reagent/proc/overdose_process(mob/living/M, severity)
var/effect = rand(1, 100) - severity
if(effect <= 8)
M.adjustToxLoss(severity)
return effect
-/datum/reagent/proc/overdose_start(var/mob/living/M as mob)
+/datum/reagent/proc/overdose_start(mob/living/M)
return
-/datum/reagent/proc/addiction_act_stage1(var/mob/living/M as mob)
+/datum/reagent/proc/addiction_act_stage1(mob/living/M)
return
-/datum/reagent/proc/addiction_act_stage2(var/mob/living/M as mob)
+/datum/reagent/proc/addiction_act_stage2(mob/living/M)
if(prob(8))
M.emote("shiver")
if(prob(8))
@@ -138,7 +138,7 @@
if(prob(4))
to_chat(M, "You feel a dull headache.")
-/datum/reagent/proc/addiction_act_stage3(var/mob/living/M as mob)
+/datum/reagent/proc/addiction_act_stage3(mob/living/M)
if(prob(8))
M.emote("twitch_s")
if(prob(8))
@@ -146,7 +146,7 @@
if(prob(4))
to_chat(M, "You begin craving [name]!")
-/datum/reagent/proc/addiction_act_stage4(var/mob/living/M as mob)
+/datum/reagent/proc/addiction_act_stage4(mob/living/M)
if(prob(8))
M.emote("twitch")
if(prob(4))
@@ -154,7 +154,7 @@
if(prob(4))
to_chat(M, "You REALLY crave some [name]!")
-/datum/reagent/proc/addiction_act_stage5(var/mob/living/M as mob)
+/datum/reagent/proc/addiction_act_stage5(mob/living/M)
if(prob(8))
M.emote("twitch")
if(prob(6))
diff --git a/code/modules/reagents/newchem/other.dm b/code/modules/reagents/newchem/other.dm
index 1e31ba5b506..44d506a026a 100644
--- a/code/modules/reagents/newchem/other.dm
+++ b/code/modules/reagents/newchem/other.dm
@@ -5,67 +5,64 @@
var/list/random_color_list = list("#00aedb","#a200ff","#f47835","#d41243","#d11141","#00b159","#00aedb","#f37735","#ffc425","#008744","#0057e7","#d62d20","#ffa700")
-datum/reagent/oil
+/datum/reagent/oil
name = "Oil"
id = "oil"
description = "A decent lubricant for machines. High in benzene, naptha and other hydrocarbons."
reagent_state = LIQUID
color = "#3C3C3C"
-datum/reagent/iodine
+/datum/reagent/iodine
name = "Iodine"
id = "iodine"
description = "A purple gaseous element."
reagent_state = GAS
color = "#493062"
-datum/reagent/carpet
+/datum/reagent/carpet
name = "Carpet"
id = "carpet"
description = "A covering of thick fabric used on floors. This type looks particularly gross."
reagent_state = LIQUID
color = "#701345"
-/datum/reagent/carpet/reaction_turf(var/turf/simulated/T, var/volume)
+/datum/reagent/carpet/reaction_turf(turf/simulated/T, volume)
if(istype(T, /turf/simulated/floor/plating) || istype(T, /turf/simulated/floor/plasteel))
var/turf/simulated/floor/F = T
F.ChangeTurf(/turf/simulated/floor/carpet)
..()
- return
-datum/reagent/bromine
+/datum/reagent/bromine
name = "Bromine"
id = "bromine"
description = "A red-brown liquid element."
reagent_state = LIQUID
color = "#4E3A3A"
-datum/reagent/phenol
+/datum/reagent/phenol
name = "Phenol"
id = "phenol"
description = "Also known as carbolic acid, this is a useful building block in organic chemistry."
reagent_state = LIQUID
color = "#525050"
-datum/reagent/ash
+/datum/reagent/ash
name = "Ash"
id = "ash"
description = "Ashes to ashes, dust to dust."
reagent_state = LIQUID
color = "#191919"
-datum/reagent/acetone
+/datum/reagent/acetone
name = "Acetone"
id = "acetone"
description = "Pure 100% nail polish remover, also works as an industrial solvent."
reagent_state = LIQUID
color = "#474747"
-/datum/reagent/acetone/on_mob_life(var/mob/living/M as mob)
- if(!M) M = holder.my_atom
+/datum/reagent/acetone/on_mob_life(mob/living/M)
M.adjustToxLoss(1.5)
..()
- return
/datum/chemical_reaction/acetone
name = "acetone"
@@ -111,7 +108,7 @@ datum/reagent/acetone
mix_sound = null
no_message = 1
-datum/reagent/colorful_reagent
+/datum/reagent/colorful_reagent
name = "Colorful Reagent"
id = "colorful_reagent"
description = "It's pure liquid colors. That's a thing now."
@@ -126,22 +123,20 @@ datum/reagent/colorful_reagent
result_amount = 6
mix_message = "The substance flashes multiple colors and emits the smell of a pocket protector."
-datum/reagent/colorful_reagent/reaction_mob(var/mob/living/simple_animal/M, var/method=TOUCH, var/volume)
+/datum/reagent/colorful_reagent/reaction_mob(mob/living/simple_animal/M, method=TOUCH, volume)
if(M && istype(M))
M.color = pick(random_color_list)
..()
- return
-datum/reagent/colorful_reagent/reaction_obj(var/obj/O, var/volume)
+/datum/reagent/colorful_reagent/reaction_obj(obj/O, volume)
if(O)
O.color = pick(random_color_list)
..()
- return
-datum/reagent/colorful_reagent/reaction_turf(var/turf/T, var/volume)
+
+/datum/reagent/colorful_reagent/reaction_turf(turf/T, volume)
if(T)
T.color = pick(random_color_list)
..()
- return
/datum/chemical_reaction/corgium
name = "corgium"
@@ -151,19 +146,17 @@ datum/reagent/colorful_reagent/reaction_turf(var/turf/T, var/volume)
result_amount = 3
min_temp = 374
-datum/reagent/corgium
+/datum/reagent/corgium
name = "Corgium"
id = "corgium"
description = "Corgi in liquid form. Don't ask."
reagent_state = LIQUID
color = "#F9A635"
-/datum/chemical_reaction/corgium/on_reaction(var/datum/reagents/holder, var/created_volume)
+/datum/chemical_reaction/corgium/on_reaction(datum/reagents/holder, created_volume)
var/location = get_turf(holder.my_atom)
new /mob/living/simple_animal/pet/corgi(location)
..()
- return
-
/datum/chemical_reaction/flaptonium
name = "Flaptonium"
@@ -174,14 +167,12 @@ datum/reagent/corgium
min_temp = 374
mix_message = "The substance turns an airy sky-blue and foams up into a new shape."
-/datum/chemical_reaction/flaptonium/on_reaction(var/datum/reagents/holder, var/created_volume)
+/datum/chemical_reaction/flaptonium/on_reaction(datum/reagents/holder, created_volume)
var/location = get_turf(holder.my_atom)
new /mob/living/simple_animal/parrot(location)
..()
- return
-
-datum/reagent/hair_dye
+/datum/reagent/hair_dye
name = "Quantum Hair Dye"
id = "hair_dye"
description = "A rather tubular and gnarly way of coloring totally bodacious hair. Duuuudddeee."
@@ -195,7 +186,7 @@ datum/reagent/hair_dye
required_reagents = list("colorful_reagent" = 1, "hairgrownium" = 1)
result_amount = 2
-datum/reagent/hair_dye/reaction_mob(var/mob/living/M, var/volume)
+/datum/reagent/hair_dye/reaction_mob(mob/living/M, volume)
if(M && ishuman(M))
var/mob/living/carbon/human/H = M
var/obj/item/organ/external/head/head_organ = H.get_organ("head")
@@ -208,9 +199,8 @@ datum/reagent/hair_dye/reaction_mob(var/mob/living/M, var/volume)
H.update_hair()
H.update_fhair()
..()
- return
-datum/reagent/hairgrownium
+/datum/reagent/hairgrownium
name = "Hairgrownium"
id = "hairgrownium"
description = "A mysterious chemical purported to help grow hair. Often found on late-night TV infomercials."
@@ -226,7 +216,7 @@ datum/reagent/hairgrownium
result_amount = 3
mix_message = "The liquid becomes slightly hairy."
-datum/reagent/hairgrownium/reaction_mob(var/mob/living/M, var/volume)
+/datum/reagent/hairgrownium/reaction_mob(mob/living/M, volume)
if(M && ishuman(M))
var/mob/living/carbon/human/H = M
var/obj/item/organ/external/head/head_organ = H.get_organ("head")
@@ -235,9 +225,8 @@ datum/reagent/hairgrownium/reaction_mob(var/mob/living/M, var/volume)
H.update_hair()
H.update_fhair()
..()
- return
-datum/reagent/super_hairgrownium
+/datum/reagent/super_hairgrownium
name = "Super Hairgrownium"
id = "super_hairgrownium"
description = "A mysterious and powerful chemical purported to cause rapid hair growth."
@@ -254,7 +243,7 @@ datum/reagent/super_hairgrownium
result_amount = 3
mix_message = "The liquid becomes amazingly furry and smells peculiar."
-datum/reagent/super_hairgrownium/reaction_mob(var/mob/living/M, var/volume)
+/datum/reagent/super_hairgrownium/reaction_mob(mob/living/M, volume)
if(M && ishuman(M))
var/mob/living/carbon/human/H = M
var/obj/item/organ/external/head/head_organ = H.get_organ("head")
@@ -278,9 +267,8 @@ datum/reagent/super_hairgrownium/reaction_mob(var/mob/living/M, var/volume)
H.equip_to_slot(fakemoustache, slot_wear_mask)
to_chat(H, "Hair bursts forth from your every follicle!")
..()
- return
-datum/reagent/fartonium
+/datum/reagent/fartonium
name = "Fartonium"
id = "fartonium"
description = "Oh god it never ends, IT NEVER STOPS!"
@@ -295,9 +283,7 @@ datum/reagent/fartonium
result_amount = 2
mix_message = "The substance makes a little 'toot' noise and starts to smell pretty bad."
-datum/reagent/fartonium/on_mob_life(var/mob/living/M as mob)
- if(!M) M = holder.my_atom
-
+/datum/reagent/fartonium/on_mob_life(mob/living/M)
if(prob(66))
M.emote("fart")
@@ -312,8 +298,6 @@ datum/reagent/fartonium/on_mob_life(var/mob/living/M as mob)
M.emote("scream")
M.adjustBruteLoss(4)
..()
- return
-
/datum/chemical_reaction/soapification
name = "Soapification"
@@ -327,7 +311,6 @@ datum/reagent/fartonium/on_mob_life(var/mob/living/M as mob)
/datum/chemical_reaction/soapification/on_reaction(datum/reagents/holder, created_volume)
var/location = get_turf(holder.my_atom)
new /obj/item/weapon/soap/homemade(location)
- return
/datum/chemical_reaction/candlefication
name = "Candlefication"
@@ -340,8 +323,6 @@ datum/reagent/fartonium/on_mob_life(var/mob/living/M as mob)
/datum/chemical_reaction/candlefication/on_reaction(datum/reagents/holder, created_volume)
var/location = get_turf(holder.my_atom)
new /obj/item/candle(location)
- return
-
/datum/chemical_reaction/meatification
name = "Meatification"
@@ -353,7 +334,6 @@ datum/reagent/fartonium/on_mob_life(var/mob/living/M as mob)
/datum/chemical_reaction/meatification/on_reaction(datum/reagents/holder, created_volume)
var/location = get_turf(holder.my_atom)
new /obj/item/weapon/reagent_containers/food/snacks/meat/slab/meatproduct(location)
- return
/datum/chemical_reaction/lye
name = "lye"
@@ -376,12 +356,10 @@ datum/reagent/fartonium/on_mob_life(var/mob/living/M as mob)
reagent_state = LIQUID
color = "#FF83A5"
-/datum/reagent/love/reaction_mob(var/mob/living/M, var/method=TOUCH, var/volume)
+/datum/reagent/love/reaction_mob(mob/living/M, method=TOUCH, volume)
to_chat(M, "You feel loved!")
-/datum/reagent/love/on_mob_life(var/mob/living/M as mob)
- if(!M) M = holder.my_atom
-
+/datum/reagent/love/on_mob_life(mob/living/M)
if(M.a_intent == I_HARM)
M.a_intent = I_HELP
@@ -410,35 +388,35 @@ datum/reagent/fartonium/on_mob_life(var/mob/living/M as mob)
///Alchemical Reagents
-datum/reagent/eyenewt
+/datum/reagent/eyenewt
name = "Eye of newt"
id = "eyenewt"
description = "A potent alchemic ingredient."
reagent_state = LIQUID
color = "#050519"
-datum/reagent/toefrog
+/datum/reagent/toefrog
name = "Toe of frog"
id = "toefrog"
description = "A potent alchemic ingredient."
reagent_state = LIQUID
color = "#092D09"
-datum/reagent/woolbat
+/datum/reagent/woolbat
name = "Wool of bat"
id = "woolbat"
description = "A potent alchemic ingredient."
reagent_state = LIQUID
color = "#080808"
-datum/reagent/tonguedog
+/datum/reagent/tonguedog
name = "Tongue of dog"
id = "tonguedog"
description = "A potent alchemic ingredient."
reagent_state = LIQUID
color = "#2D0909"
-datum/reagent/triplepiss
+/datum/reagent/triplepiss
name = "Triplepiss"
id = "triplepiss"
description = "Ewwwwwwwww."
diff --git a/code/modules/reagents/newchem/paradise_pop.dm b/code/modules/reagents/newchem/paradise_pop.dm
index 4ba859c430e..055b96020db 100644
--- a/code/modules/reagents/newchem/paradise_pop.dm
+++ b/code/modules/reagents/newchem/paradise_pop.dm
@@ -25,6 +25,13 @@
reagent_state = LIQUID
color = "#44FF44"
+/datum/reagent/apple_pocalypse/on_mob_life(mob/living/M)
+ if(prob(1))
+ var/turf/simulated/T = get_turf(M)
+ goonchem_vortex(T, 0, 2, 1)
+ to_chat(M, "You briefly feel super-massive, like a black hole. Probably just your imagination...")
+ ..()
+
//Berry Banned: This one is tasty and safe to drink, might have a low chance of healing a random damage type?
/datum/reagent/berry_banned
name = "Berry Banned"
@@ -33,6 +40,25 @@
reagent_state = LIQUID
color = "#FF44FF"
+/datum/reagent/berry_banned/on_mob_life(mob/living/M)
+ if(prob(10))
+ var/heal_type = rand(0, 5) //still prefer the string version
+ switch(heal_type)
+ if(0)
+ M.adjustBruteLoss(-0.5*REM)
+ if(1)
+ M.adjustFireLoss(-0.5*REM)
+ if(2)
+ M.adjustToxLoss(-0.5*REM)
+ if(3)
+ M.adjustOxyLoss(-0.5*REM)
+ if(4)
+ M.adjustCloneLoss(-0.5*REM)
+ if(5)
+ M.adjustBrainLoss(-1*REM)
+ to_chat(M, "You feel slightly rejuvinated!")
+ ..()
+
//Berry Banned 2: This one is tasty and toxic. Deals toxin damage and MAYBE plays the "BWOINK!" sound if it kills someone?
/datum/reagent/berry_banned2
name = "Berry Banned"
@@ -41,6 +67,18 @@
reagent_state = LIQUID
color = "#FF44FF"
+/datum/reagent/berry_banned2/on_mob_life(mob/living/M)
+ if(prob(50))
+ M.adjustToxLoss(2*REM) //double strength of poison berry juice alone, because it's concentrated (this is equal to the damage of normal toxin, less often)
+ if(prob(10))
+ to_chat(M, "You feel slightly rejuvinated!") //meta this!
+ ..()
+
+/datum/reagent/berry_banned2/on_mob_death(mob/living/M)
+ M << sound('sound/effects/adminhelp.ogg',0,1,0,25)
+ to_chat(M, "PM from-Administrator: BWOINK!")
+ ..()
+
//Blackeye Brew: Chance to make the drinker say greytider-themed things like "I thought clown was valid!"
/datum/reagent/blackeye_brew
name = "Blackeye Brew"
@@ -49,6 +87,21 @@
reagent_state = LIQUID
color = "#4d2600"
+/datum/reagent/blackeye_brew/on_mob_life(mob/living/M)
+ if(prob(25))
+ var/list/tider_talk = list("CLOWN IS VALID, RIGHT?",
+ "SHITMINS! SHITMINS! SHITMINS!",
+ "FURRIES ARE OPPRESSED!",
+ "I OWN THIS SERVER NOW, I JUST BOUGHT IT.",
+ "SECRET TECHNIQUE: TOOLBOX TO THE FACE!",
+ "SECRET TECHNIQUE: PLASMA CANISTER FIRE!",
+ "SECRET TECHNIQUE: TABLE AND DISPOSAL!",
+ "[pick("MY BROTHER", " MY DOG", "MY BEST FRIEND", "THE BORER", "GEORGE MELONS", "SHITMINS")] DID IT!",
+ "WHAT DO YOU MEAN [pick("Barrack Obama", "John Cena", "Hughe Jass", "Hitler", "xX360noscopeXx")] ISN'T AN ACCEPTABLE NAME?",
+ "WHAT THE FUCK DID YOU JUST FUCKING SAY ABOUT ME, YOU LITTLE BITCH? I'LL HAVE YOU KNOW I GRADUATED TOP OF MY CLASS IN...")
+ M.say(pick(tider_talk))
+ ..()
+
//Grape Granade: causes the drinker to sometimes burp, has a low chance to cause a goonchem vortex that pushes things within a very small radius (1-2 tiles) away from the drinker
/datum/reagent/grape_granade
name = "Grape Granade"
@@ -57,6 +110,16 @@
reagent_state = LIQUID
color = "#9933ff"
+/datum/reagent/grape_granade/on_mob_life(mob/living/M)
+ if(prob(1))
+ var/turf/simulated/T = get_turf(M)
+ goonchem_vortex(T, 1, 1, 2)
+ M.emote("burp")
+ to_chat(M, "You feel ready to burst! Oh wait, just a burp...")
+ else if(prob(25))
+ M.emote("burp")
+ ..()
+
//Meteor Malt: Sometimes causes screen shakes for the drinker like a meteor impact, low chance to add 1-5 units of a random mineral reagent to the drinker's blood (iron, copper, silver, gold, uranium, carbon, etc)
/datum/reagent/meteor_malt
name = "Meteor Malt"
@@ -64,3 +127,13 @@
description = "Soft drinks have been detected on collision course with your tastebuds."
reagent_state = LIQUID
color = "#cc9900"
+
+/datum/reagent/meteor_malt/on_mob_life(mob/living/M)
+ if(prob(25))
+ M << sound('sound/effects/meteorimpact.ogg',0,1,0,25)
+ shake_camera(M, 3, 1)
+ if(prob(5))
+ var/amount = rand(1, 5)
+ var/mineral = pick("copper", "iron", "gold", "carbon", "silver", "aluminum", "silicon", "sodiumchloride", "plasma")
+ M.reagents.add_reagent(mineral, amount)
+ ..()
diff --git a/code/modules/reagents/newchem/pyro.dm b/code/modules/reagents/newchem/pyro.dm
index bd7f488c449..5bb6700dd49 100644
--- a/code/modules/reagents/newchem/pyro.dm
+++ b/code/modules/reagents/newchem/pyro.dm
@@ -36,20 +36,17 @@
result_amount = 2
min_temp = 424
-/datum/reagent/clf3/on_mob_life(var/mob/living/M as mob)
- if(!M) M = holder.my_atom
+/datum/reagent/clf3/on_mob_life(mob/living/M)
M.adjust_fire_stacks(4)
M.adjustFireLoss(0.35*M.fire_stacks)
..()
- return
-/datum/chemical_reaction/clf3/on_reaction(var/datum/reagents/holder, var/created_volume)
+/datum/chemical_reaction/clf3/on_reaction(datum/reagents/holder, created_volume)
var/turf/T = get_turf(holder.my_atom)
for(var/turf/turf in range(1,T))
new /obj/effect/hotspot(turf)
- return
-/datum/reagent/clf3/reaction_turf(var/turf/simulated/T, var/volume)
+/datum/reagent/clf3/reaction_turf(turf/simulated/T, volume)
if(istype(T, /turf/simulated/floor/plating))
var/turf/simulated/floor/plating/F = T
if(prob(1))
@@ -66,14 +63,12 @@
W.ChangeTurf(/turf/simulated/floor)
if(istype(T, /turf/simulated/shuttle/))
new /obj/effect/hotspot(T)
- return
-/datum/reagent/clf3/reaction_mob(var/mob/living/M, var/method=TOUCH, var/volume)
+/datum/reagent/clf3/reaction_mob(mob/living/M, method=TOUCH, volume)
if(method == TOUCH && isliving(M))
M.adjust_fire_stacks(5)
M.IgniteMob()
M.bodytemperature += 30
- return
/datum/reagent/sorium
name = "Sorium"
@@ -96,11 +91,11 @@
required_reagents = list("sorium" = 1)
min_temp = 474
-/datum/chemical_reaction/sorium_vortex/on_reaction(var/datum/reagents/holder, var/created_volume)
+/datum/chemical_reaction/sorium_vortex/on_reaction(datum/reagents/holder, created_volume)
var/turf/simulated/T = get_turf(holder.my_atom)
goonchem_vortex(T, 1, 5, 6)
-/datum/chemical_reaction/sorium/on_reaction(var/datum/reagents/holder, var/created_volume)
+/datum/chemical_reaction/sorium/on_reaction(datum/reagents/holder, created_volume)
if(holder.has_reagent("stabilizing_agent"))
return
holder.remove_reagent("sorium", created_volume)
@@ -128,19 +123,18 @@
required_reagents = list("liquid_dark_matter" = 1)
min_temp = 474
-/datum/chemical_reaction/ldm_vortex/on_reaction(var/datum/reagents/holder, var/created_volume)
+/datum/chemical_reaction/ldm_vortex/on_reaction(datum/reagents/holder, created_volume)
var/turf/simulated/T = get_turf(holder.my_atom)
goonchem_vortex(T, 0, 5, 6)
- return
-/datum/chemical_reaction/liquid_dark_matter/on_reaction(var/datum/reagents/holder, var/created_volume)
+
+/datum/chemical_reaction/liquid_dark_matter/on_reaction(datum/reagents/holder, created_volume)
if(holder.has_reagent("stabilizing_agent"))
return
holder.remove_reagent("liquid_dark_matter", created_volume)
var/turf/simulated/T = get_turf(holder.my_atom)
goonchem_vortex(T, 0, 5, 6)
- return
-/proc/goonchem_vortex(var/turf/simulated/T, var/setting_type, var/range, var/pull_times)
+/proc/goonchem_vortex(turf/simulated/T, setting_type, range, pull_times)
for(var/atom/movable/X in orange(range, T))
if(istype(X, /obj/effect))
continue //stop pulling smoke and hotspots please
@@ -182,21 +176,19 @@
no_message = 1
mix_sound = null
-datum/reagent/blackpowder/reaction_turf(var/turf/T, var/volume) //oh shit
+/datum/reagent/blackpowder/reaction_turf(turf/T, volume) //oh shit
src = null
if(volume >= 5)
if(!locate(/obj/effect/decal/cleanable/dirt/blackpowder) in get_turf(T)) //let's not have hundreds of decals of black powder on the same turf
new /obj/effect/decal/cleanable/dirt/blackpowder(T)
- return
-/datum/chemical_reaction/blackpowder_explosion/on_reaction(var/datum/reagents/holder, var/created_volume)
+/datum/chemical_reaction/blackpowder_explosion/on_reaction(datum/reagents/holder, created_volume)
var/location = get_turf(holder.my_atom)
var/datum/effect/system/spark_spread/s = new /datum/effect/system/spark_spread
s.set_up(2, 1, location)
s.start()
sleep(rand(20,30))
blackpowder_detonate(holder, created_volume)
- return
/*
/datum/reagent/blackpowder/on_ex_act()
@@ -209,7 +201,7 @@ datum/reagent/blackpowder/reaction_turf(var/turf/T, var/volume) //oh shit
holder.remove_reagent("blackpowder", volume)
return */
-/proc/blackpowder_detonate(var/datum/reagents/holder, var/created_volume)
+/proc/blackpowder_detonate(datum/reagents/holder, created_volume)
var/turf/simulated/T = get_turf(holder.my_atom)
var/ex_severe = round(created_volume / 100)
var/ex_heavy = round(created_volume / 42)
@@ -220,7 +212,6 @@ datum/reagent/blackpowder/reaction_turf(var/turf/T, var/volume) //oh shit
if(istype(holder.my_atom, /obj/effect/decal/cleanable/dirt/blackpowder))
spawn(0)
qdel(holder.my_atom)
- return
/datum/reagent/flash_powder
name = "Flash Powder"
@@ -243,7 +234,7 @@ datum/reagent/blackpowder/reaction_turf(var/turf/T, var/volume) //oh shit
required_reagents = list("flash_powder" = 1)
min_temp = 374
-/datum/chemical_reaction/flash_powder_flash/on_reaction(var/datum/reagents/holder, var/created_volume)
+/datum/chemical_reaction/flash_powder_flash/on_reaction(datum/reagents/holder, created_volume)
var/location = get_turf(holder.my_atom)
var/datum/effect/system/spark_spread/s = new /datum/effect/system/spark_spread
s.set_up(2, 1, location)
@@ -256,7 +247,7 @@ datum/reagent/blackpowder/reaction_turf(var/turf/T, var/volume) //oh shit
C.Stun(5)
-/datum/chemical_reaction/flash_powder/on_reaction(var/datum/reagents/holder, var/created_volume)
+/datum/chemical_reaction/flash_powder/on_reaction(datum/reagents/holder, created_volume)
if(holder.has_reagent("stabilizing_agent"))
return
var/location = get_turf(holder.my_atom)
@@ -295,7 +286,7 @@ datum/reagent/blackpowder/reaction_turf(var/turf/T, var/volume) //oh shit
mix_message = "The mixture quickly turns into a pall of smoke!"
var/forbidden_reagents = list("sugar", "phosphorus", "potassium", "stimulants") //Do not transfer this stuff through smoke.
-/datum/chemical_reaction/smoke/on_reaction(var/datum/reagents/holder, var/created_volume)
+/datum/chemical_reaction/smoke/on_reaction(datum/reagents/holder, created_volume)
for(var/f_reagent in forbidden_reagents)
if(holder.has_reagent(f_reagent))
holder.remove_reagent(f_reagent, holder.get_reagent_amount(f_reagent))
@@ -316,7 +307,6 @@ datum/reagent/blackpowder/reaction_turf(var/turf/T, var/volume) //oh shit
S.start(4)
if(holder && holder.my_atom)
holder.clear_reagents()
- return
/datum/chemical_reaction/smoke/smoke_powder
name = "smoke_powder_smoke"
@@ -350,7 +340,7 @@ datum/reagent/blackpowder/reaction_turf(var/turf/T, var/volume) //oh shit
required_reagents = list("sonic_powder" = 1)
min_temp = 374
-/datum/chemical_reaction/sonic_powder_deafen/on_reaction(var/datum/reagents/holder, var/created_volume)
+/datum/chemical_reaction/sonic_powder_deafen/on_reaction(datum/reagents/holder, created_volume)
var/location = get_turf(holder.my_atom)
playsound(location, 'sound/effects/bang.ogg', 25, 1)
for(var/mob/living/M in hearers(5, location))
@@ -377,7 +367,7 @@ datum/reagent/blackpowder/reaction_turf(var/turf/T, var/volume) //oh shit
if(M.ear_damage >= 5)
to_chat(M, "Your ears start to ring!")
-/datum/chemical_reaction/sonic_powder/on_reaction(var/datum/reagents/holder, var/created_volume)
+/datum/chemical_reaction/sonic_powder/on_reaction(datum/reagents/holder, created_volume)
if(holder.has_reagent("stabilizing_agent"))
return
var/location = get_turf(holder.my_atom)
@@ -422,21 +412,18 @@ datum/reagent/blackpowder/reaction_turf(var/turf/T, var/volume) //oh shit
required_reagents = list("phosphorus" = 1, "sacid" = 1, "plasma" = 1)
result_amount = 3
-/datum/chemical_reaction/phlogiston/on_reaction(var/datum/reagents/holder, var/created_volume)
+/datum/chemical_reaction/phlogiston/on_reaction(datum/reagents/holder, created_volume)
if(holder.has_reagent("stabilizing_agent"))
return
var/turf/simulated/T = get_turf(holder.my_atom)
for(var/turf/simulated/turf in range(min(created_volume/10,4),T))
new /obj/effect/hotspot(turf)
- return
-/datum/reagent/phlogiston/on_mob_life(var/mob/living/M as mob)
- if(!M) M = holder.my_atom
+/datum/reagent/phlogiston/on_mob_life(mob/living/M)
M.adjust_fire_stacks(1)
M.IgniteMob()
M.adjustFireLoss(0.2*M.fire_stacks)
..()
- return
/datum/reagent/napalm
name = "Napalm"
@@ -446,16 +433,13 @@ datum/reagent/blackpowder/reaction_turf(var/turf/T, var/volume) //oh shit
color = "#FF9999"
process_flags = ORGANIC | SYNTHETIC
-/datum/reagent/napalm/on_mob_life(var/mob/living/M as mob)
- if(!M) M = holder.my_atom
+/datum/reagent/napalm/on_mob_life(mob/living/M)
M.adjust_fire_stacks(1)
..()
- return
-/datum/reagent/napalm/reaction_mob(var/mob/living/M, var/method=TOUCH, var/volume)
+/datum/reagent/napalm/reaction_mob(mob/living/M, method=TOUCH, volume)
if(method == TOUCH && isliving(M))
M.adjust_fire_stacks(7)
- return
/datum/chemical_reaction/napalm
name = "Napalm"
@@ -464,7 +448,7 @@ datum/reagent/blackpowder/reaction_turf(var/turf/T, var/volume) //oh shit
required_reagents = list("sugar" = 1, "fuel" = 1, "ethanol" = 1 )
result_amount = 1
-datum/reagent/cryostylane
+/datum/reagent/cryostylane
name = "Cryostylane"
id = "cryostylane"
description = "Comes into existence at 20K. As long as there is sufficient oxygen for it to react with, Cryostylane slowly cools all other reagents in the mob down to 0K."
@@ -479,27 +463,25 @@ datum/reagent/cryostylane
result_amount = 3
mix_sound = 'sound/goonstation/misc/drinkfizz.ogg'
-datum/reagent/cryostylane/on_mob_life(var/mob/living/M as mob) //TODO: code freezing into an ice cube
+/datum/reagent/cryostylane/on_mob_life(mob/living/M) //TODO: code freezing into an ice cube
if(M.reagents.has_reagent("oxygen"))
M.reagents.remove_reagent("oxygen", 1)
M.bodytemperature -= 30
..()
- return
-datum/reagent/cryostylane/on_tick()
+/datum/reagent/cryostylane/on_tick()
if(holder.has_reagent("oxygen"))
holder.remove_reagent("oxygen", 1)
holder.chem_temp -= 10
holder.handle_reactions()
..()
- return
-datum/reagent/cryostylane/reaction_turf(var/turf/simulated/T, var/volume)
+/datum/reagent/cryostylane/reaction_turf(turf/simulated/T, volume)
if(volume >= 5)
for(var/mob/living/carbon/slime/M in T)
M.adjustToxLoss(rand(15,30))
-datum/reagent/pyrosium
+/datum/reagent/pyrosium
name = "Pyrosium"
id = "pyrosium"
description = "Comes into existence at 20K. As long as there is sufficient oxygen for it to react with, Pyrosium slowly cools all other reagents in the mob down to 0K."
@@ -513,20 +495,18 @@ datum/reagent/pyrosium
required_reagents = list("plasma" = 1, "radium" = 1, "phosphorus" = 1)
result_amount = 3
-datum/reagent/pyrosium/on_mob_life(var/mob/living/M as mob)
+/datum/reagent/pyrosium/on_mob_life(mob/living/M)
if(M.reagents.has_reagent("oxygen"))
M.reagents.remove_reagent("oxygen", 1)
M.bodytemperature += 30
..()
- return
-datum/reagent/pyrosium/on_tick()
+/datum/reagent/pyrosium/on_tick()
if(holder.has_reagent("oxygen"))
holder.remove_reagent("oxygen", 1)
holder.chem_temp += 10
holder.handle_reactions()
..()
- return
/datum/chemical_reaction/azide
name = "azide"
@@ -537,12 +517,11 @@ datum/reagent/pyrosium/on_tick()
mix_message = "The substance violently detonates!"
mix_sound = 'sound/effects/bang.ogg'
-/datum/chemical_reaction/azide/on_reaction(var/datum/reagents/holder, var/created_volume)
+/datum/chemical_reaction/azide/on_reaction(datum/reagents/holder, created_volume)
var/location = get_turf(holder.my_atom)
- explosion(location,0,1,4)
- return
+ explosion(location, 0, 1, 4)
-datum/reagent/firefighting_foam
+/datum/reagent/firefighting_foam
name = "Firefighting foam"
id = "firefighting_foam"
description = "Carbon Tetrachloride is a foam used for fire suppression."
@@ -559,7 +538,7 @@ datum/reagent/firefighting_foam
mix_message = "The mixture bubbles gently."
mix_sound = 'sound/goonstation/misc/drinkfizz.ogg'
-datum/reagent/firefighting_foam/reaction_mob(var/mob/living/M, var/method=TOUCH, var/volume)
+/datum/reagent/firefighting_foam/reaction_mob(mob/living/M, method=TOUCH, volume)
if(!istype(M, /mob/living))
return
@@ -568,10 +547,10 @@ datum/reagent/firefighting_foam/reaction_mob(var/mob/living/M, var/method=TOUCH,
M.adjust_fire_stacks(-(volume / 5)) // more effective than water
if(M.fire_stacks <= 0)
M.ExtinguishMob()
- return
-datum/reagent/firefighting_foam/reaction_turf(var/turf/simulated/T, var/volume)
- if(!istype(T)) return
+/datum/reagent/firefighting_foam/reaction_turf(turf/simulated/T, volume)
+ if(!istype(T))
+ return
var/CT = cooling_temperature
src = null
if(!istype(T, /turf/space))
@@ -583,9 +562,8 @@ datum/reagent/firefighting_foam/reaction_turf(var/turf/simulated/T, var/volume)
lowertemp.react()
T.assume_air(lowertemp)
qdel(hotspot)
- return
-datum/reagent/firefighting_foam/reaction_obj(var/obj/O, var/volume)
+/datum/reagent/firefighting_foam/reaction_obj(obj/O, volume)
src = null
var/turf/T = get_turf(O)
var/hotspot = (locate(/obj/effect/hotspot) in T)
@@ -595,7 +573,6 @@ datum/reagent/firefighting_foam/reaction_obj(var/obj/O, var/volume)
lowertemp.react()
T.assume_air(lowertemp)
qdel(hotspot)
- return
/datum/chemical_reaction/clf3_firefighting
name = "clf3_firefighting"
@@ -606,10 +583,9 @@ datum/reagent/firefighting_foam/reaction_obj(var/obj/O, var/volume)
mix_message = "The substance violently detonates!"
mix_sound = 'sound/effects/bang.ogg'
-/datum/chemical_reaction/clf3_firefighting/on_reaction(var/datum/reagents/holder, var/created_volume)
+/datum/chemical_reaction/clf3_firefighting/on_reaction(datum/reagents/holder, created_volume)
var/location = get_turf(holder.my_atom)
- explosion(location,-1,0,2)
- return
+ explosion(location, -1, 0, 2)
/datum/chemical_reaction/shock_explosion
name = "shock_explosion"
@@ -620,14 +596,13 @@ datum/reagent/firefighting_foam/reaction_obj(var/obj/O, var/volume)
mix_message = "The reaction releases an electrical blast!"
mix_sound = 'sound/magic/lightningbolt.ogg'
-/datum/chemical_reaction/shock_explosion/on_reaction(var/datum/reagents/holder, var/created_volume)
+/datum/chemical_reaction/shock_explosion/on_reaction(datum/reagents/holder, created_volume)
var/turf/T = get_turf(holder.my_atom)
for(var/mob/living/carbon/C in view(6, T))
C.Beam(T,icon_state="lightning[rand(1,12)]",icon='icons/effects/effects.dmi',time=5) //What? Why are we beaming from the mob to the turf? Turf to mob generates really odd results.
C.electrocute_act(3.5, "electrical blast")
holder.del_reagent("teslium") //Clear all remaining Teslium and Uranium, but leave all other reagents untouched.
holder.del_reagent("uranium")
- return
/datum/reagent/plasma_dust
name = "Plasma Dust"
diff --git a/code/modules/reagents/newchem/toxins.dm b/code/modules/reagents/newchem/toxins.dm
index ae8b80ac1cd..1590ae2b9c2 100644
--- a/code/modules/reagents/newchem/toxins.dm
+++ b/code/modules/reagents/newchem/toxins.dm
@@ -13,11 +13,9 @@
metabolization_rate = 0.1
penetrates_skin = 1
-/datum/reagent/polonium/on_mob_life(var/mob/living/M as mob)
- if(!M) M = holder.my_atom
+/datum/reagent/polonium/on_mob_life(mob/living/M)
M.apply_effect(8, IRRADIATE, negate_armor = 1)
..()
- return
/datum/reagent/histamine
@@ -29,7 +27,7 @@
metabolization_rate = 0.2
overdose_threshold = 40
-/datum/reagent/histamine/reaction_mob(var/mob/living/M as mob, var/method=TOUCH, var/volume) //dumping histamine on someone is VERY mean.
+/datum/reagent/histamine/reaction_mob(mob/living/M, method=TOUCH, volume) //dumping histamine on someone is VERY mean.
if(iscarbon(M))
if(method == TOUCH)
M.reagents.add_reagent("histamine",10)
@@ -37,8 +35,7 @@
to_chat(M, "You feel a burning sensation in your throat...")
M.emote("drool")
-/datum/reagent/histamine/on_mob_life(var/mob/living/M as mob)
- if(!M) M = holder.my_atom
+/datum/reagent/histamine/on_mob_life(mob/living/M)
if(prob(20))
M.emote(pick("twitch", "grumble", "sneeze", "cough"))
if(prob(10))
@@ -53,9 +50,8 @@
to_chat(M, "You're getting a rash!")
M.adjustBruteLoss(2)
..()
- return
-/datum/reagent/histamine/overdose_process(var/mob/living/M as mob, severity)
+/datum/reagent/histamine/overdose_process(mob/living/M, severity)
var/effect = ..()
if(severity == 1)
if(effect <= 2)
@@ -103,13 +99,11 @@
color = "#DED6D0"
penetrates_skin = 1
-/datum/reagent/formaldehyde/on_mob_life(var/mob/living/M as mob)
- if(!M) M = holder.my_atom
+/datum/reagent/formaldehyde/on_mob_life(mob/living/M)
M.adjustToxLoss(1*REM)
if(prob(10))
M.reagents.add_reagent("histamine",rand(5,15))
..()
- return
/datum/chemical_reaction/formaldehyde
name = "formaldehyde"
@@ -129,8 +123,7 @@
metabolization_rate = 0.2
overdose_threshold = 40
-/datum/reagent/venom/on_mob_life(var/mob/living/M as mob)
- if(!M) M = holder.my_atom
+/datum/reagent/venom/on_mob_life(mob/living/M)
if(prob(25))
M.reagents.add_reagent("histamine",rand(5,10))
if(volume < 20)
@@ -142,9 +135,8 @@
M.adjustToxLoss(2)
M.adjustBruteLoss(2)
..()
- return
-/datum/reagent/venom/overdose_process(var/mob/living/M as mob)
+/datum/reagent/venom/overdose_process(mob/living/M)
if(volume >= 40)
if(prob(4))
M.visible_message("[M] starts convulsing violently!", "You feel as if your body is tearing itself apart!")
@@ -161,7 +153,7 @@
color = "#60A584"
metabolization_rate = 1
-/datum/reagent/neurotoxin2/on_mob_life(var/mob/living/M as mob)
+/datum/reagent/neurotoxin2/on_mob_life(mob/living/M)
switch(current_cycle)
if(1 to 4)
current_cycle++
@@ -189,7 +181,6 @@
M.emote("drool")
M.adjustToxLoss(1)
..()
- return
/datum/chemical_reaction/neurotoxin2
name = "neurotoxin2"
@@ -210,8 +201,7 @@
metabolization_rate = 0.1
penetrates_skin = 1
-/datum/reagent/cyanide/on_mob_life(var/mob/living/M as mob)
- if(!M) M = holder.my_atom
+/datum/reagent/cyanide/on_mob_life(mob/living/M)
M.adjustToxLoss(1.5*REM)
if(prob(5))
M.emote("drool")
@@ -224,7 +214,6 @@
M.Stun(2)
M.adjustToxLoss(2)
..()
- return
/datum/chemical_reaction/cyanide
name = "Cyanide"
@@ -236,7 +225,7 @@
mix_message = "The mixture gives off a faint scent of almonds."
mix_sound = 'sound/goonstation/misc/drinkfizz.ogg'
-/datum/chemical_reaction/cyanide/on_reaction(var/datum/reagents/holder)
+/datum/chemical_reaction/cyanide/on_reaction(datum/reagents/holder)
var/turf/T = get_turf(holder.my_atom)
T.visible_message("The solution generates a strong vapor!")
for(var/mob/living/carbon/C in range(T, 1))
@@ -252,8 +241,7 @@
metabolization_rate = 0.3
penetrates_skin = 1
-/datum/reagent/itching_powder/on_mob_life(var/mob/living/M as mob)
- if(!M) M = holder.my_atom
+/datum/reagent/itching_powder/on_mob_life(mob/living/M)
if(prob(25))
M.emote(pick("twitch", "laugh", "sneeze", "cry"))
if(prob(20))
@@ -277,7 +265,6 @@
M.visible_message("[M] falls to the floor, scratching themselves violently!")
M.emote("scream")
..()
- return
/datum/chemical_reaction/itching_powder
name = "Itching Powder"
@@ -288,12 +275,10 @@
mix_message = "The mixture congeals and dries up, leaving behind an abrasive powder."
mix_sound = 'sound/effects/blobattack.ogg'
-/datum/reagent/facid/on_mob_life(var/mob/living/M as mob)
- if(!M) M = holder.my_atom
+/datum/reagent/facid/on_mob_life(mob/living/M)
M.adjustToxLoss(1*REM)
M.adjustFireLoss(1)
..()
- return
/datum/reagent/facid
name = "Fluorosulfuric Acid"
@@ -303,7 +288,7 @@
color = "#4141D2"
process_flags = ORGANIC | SYNTHETIC
-/datum/reagent/facid/reaction_mob(var/mob/living/M, var/method=TOUCH, var/volume)
+/datum/reagent/facid/reaction_mob(mob/living/M, method=TOUCH, volume)
if(!istype(M, /mob/living))
return //wooo more runtime fixin
if(method == TOUCH || method == INGEST)
@@ -347,7 +332,7 @@
H.emote("scream")
H.status_flags |= DISFIGURED
-/datum/reagent/facid/reaction_obj(var/obj/O, var/volume)
+/datum/reagent/facid/reaction_obj(obj/O, volume)
if((istype(O,/obj/item) || istype(O,/obj/effect/glowshroom)))
if(!O.unacidable)
var/obj/effect/decal/cleanable/molten_item/I = new/obj/effect/decal/cleanable/molten_item(O.loc)
@@ -373,8 +358,7 @@
color = "#7F10C0"
metabolization_rate = 0.4
-/datum/reagent/initropidril/on_mob_life(var/mob/living/M as mob)
- if(!M) M = holder.my_atom
+/datum/reagent/initropidril/on_mob_life(mob/living/M)
if(prob(33))
M.adjustToxLoss(rand(5,25))
if(prob(33))
@@ -395,7 +379,6 @@
if(!H.heart_attack)
H.heart_attack = 1 // rip in pepperoni
..()
- return
/datum/chemical_reaction/initropidril
name = "Initropidril"
@@ -414,8 +397,7 @@
color = "#AB1CCF"
metabolization_rate = 0.4
-/datum/reagent/concentrated_initro/on_mob_life(var/mob/living/M as mob)
- if(!M) M = holder.my_atom
+/datum/reagent/concentrated_initro/on_mob_life(mob/living/M)
if(volume >=5)
if(ishuman(M))
var/mob/living/carbon/human/H = M
@@ -430,8 +412,7 @@
color = "#1E4664"
metabolization_rate = 0.2
-/datum/reagent/pancuronium/on_mob_life(var/mob/living/M as mob)
- if(!M) M = holder.my_atom
+/datum/reagent/pancuronium/on_mob_life(mob/living/M)
switch(current_cycle)
if(1 to 5)
if(prob(10))
@@ -454,7 +435,6 @@
to_chat(M, "You can't breathe!")
M.losebreath += 3
..()
- return
/datum/reagent/sodium_thiopental
name = "Sodium Thiopental"
@@ -464,8 +444,7 @@
color = "#5F8BE1"
metabolization_rate = 0.7
-/datum/reagent/sodium_thiopental/on_mob_life(var/mob/living/M as mob)
- if(!M) M = holder.my_atom
+/datum/reagent/sodium_thiopental/on_mob_life(mob/living/M)
switch(current_cycle)
if(1)
M.emote("drool")
@@ -482,7 +461,6 @@
M.emote("drool")
M.adjustBrainLoss(1)
..()
- return
/datum/reagent/ketamine
name = "Ketamine"
@@ -493,8 +471,7 @@
metabolization_rate = 0.8
penetrates_skin = 1
-/datum/reagent/ketamine/on_mob_life(var/mob/living/M as mob)
- if(!M) M = holder.my_atom
+/datum/reagent/ketamine/on_mob_life(mob/living/M)
switch(current_cycle)
if(1 to 5)
if(prob(25))
@@ -509,7 +486,6 @@
if(11 to INFINITY)
M.Paralyse(25)
..()
- return
/datum/reagent/sulfonal
name = "Sulfonal"
@@ -528,8 +504,7 @@
mix_message = "The mixture gives off quite a stench."
mix_sound = 'sound/goonstation/misc/drinkfizz.ogg'
-/datum/reagent/sulfonal/on_mob_life(var/mob/living/M as mob)
- if(!M) M = holder.my_atom
+/datum/reagent/sulfonal/on_mob_life(mob/living/M)
M.jitteriness = max(0, M.jitteriness-30)
switch(current_cycle)
if(1 to 10)
@@ -546,7 +521,6 @@
M.drowsyness = max(M.drowsyness, 20)
M.adjustToxLoss(1)
..()
- return
/datum/reagent/amanitin
name = "Amanitin"
@@ -555,16 +529,9 @@
reagent_state = LIQUID
color = "#D9D9D9"
-/datum/reagent/amanitin/on_mob_life(var/mob/living/M as mob)
- if(!M) M = holder.my_atom
- ..()
- return
-
-/datum/reagent/amanitin/reagent_deleted(var/mob/living/M as mob)
- if(!M) M = holder.my_atom
+/datum/reagent/amanitin/reagent_deleted(mob/living/M)
M.adjustToxLoss(current_cycle*rand(2,4))
..()
- return
/datum/reagent/lipolicide
name = "Lipolicide"
@@ -581,8 +548,7 @@
required_reagents = list("mercury" = 1, "diethylamine" = 1, "ephedrine" = 1)
result_amount = 3
-/datum/reagent/lipolicide/on_mob_life(var/mob/living/M as mob)
- if(!M) M = holder.my_atom
+/datum/reagent/lipolicide/on_mob_life(mob/living/M)
if(!M.nutrition)
switch(rand(1,3))
if(1)
@@ -596,7 +562,6 @@
M.nutrition = max(0, M.nutrition-fat_to_burn)
M.overeatduration = 0
..()
- return
/datum/reagent/coniine
name = "Coniine"
@@ -606,12 +571,10 @@
color = "#C2D8CD"
metabolization_rate = 0.05
-/datum/reagent/coniine/on_mob_life(var/mob/living/M as mob)
- if(!M) M = holder.my_atom
+/datum/reagent/coniine/on_mob_life(mob/living/M)
M.adjustToxLoss(2)
M.losebreath += 5
..()
- return
/datum/reagent/curare
name = "Curare"
@@ -622,8 +585,7 @@
metabolization_rate = 0.1
penetrates_skin = 1
-/datum/reagent/curare/on_mob_life(var/mob/living/M as mob)
- if(!M) M = holder.my_atom
+/datum/reagent/curare/on_mob_life(mob/living/M)
M.adjustToxLoss(1)
M.adjustOxyLoss(1)
switch(current_cycle)
@@ -646,7 +608,6 @@
to_chat(M, "You can't [pick("breathe", "move", "feel your legs", "feel your face", "feel anything")]!")
M.losebreath++
..()
- return
/datum/reagent/sarin
name = "Sarin"
@@ -668,15 +629,14 @@
min_temp = 374
mix_sound = 'sound/goonstation/misc/drinkfizz.ogg'
-/datum/chemical_reaction/sarin/on_reaction(var/datum/reagents/holder)
+/datum/chemical_reaction/sarin/on_reaction(datum/reagents/holder)
var/turf/T = get_turf(holder.my_atom)
T.visible_message("The solution generates a strong vapor!")
for(var/mob/living/carbon/C in range(T, 2))
if(!(C.wear_mask && (C.internals != null || C.wear_mask.flags & BLOCK_GAS_SMOKE_EFFECT)))
C.reagents.add_reagent("sarin",4)
-/datum/reagent/sarin/on_mob_life(var/mob/living/M as mob)
- if(!M) M = holder.my_atom
+/datum/reagent/sarin/on_mob_life(mob/living/M)
switch(current_cycle)
if(1 to 15)
M.jitteriness += 20
@@ -721,7 +681,6 @@
M.adjustBrainLoss(1)
M.adjustFireLoss(1)
..()
- return
/datum/reagent/atrazine
name = "Atrazine"
@@ -730,14 +689,12 @@
reagent_state = LIQUID
color = "#17002D"
-/datum/reagent/atrazine/on_mob_life(var/mob/living/M as mob)
- if(!M) M = holder.my_atom
+/datum/reagent/atrazine/on_mob_life(mob/living/M)
M.adjustToxLoss(2)
..()
- return
// Clear off wallrot fungi
-/datum/reagent/atrazine/reaction_turf(var/turf/T, var/volume)
+/datum/reagent/atrazine/reaction_turf(turf/T, volume)
if(istype(T, /turf/simulated/wall))
var/turf/simulated/wall/W = T
if(W.rotting)
@@ -749,7 +706,7 @@
for(var/mob/O in viewers(W, null))
O.show_message(text("\blue The fungi are completely dissolved by the solution!"), 1)
-/datum/reagent/atrazine/reaction_obj(var/obj/O, var/volume)
+/datum/reagent/atrazine/reaction_obj(obj/O, volume)
if(istype(O,/obj/structure/alien/weeds/))
var/obj/structure/alien/weeds/alien_weeds = O
alien_weeds.health -= rand(15,35) // Kills alien weeds pretty fast
@@ -760,7 +717,7 @@
if(prob(50)) qdel(O) //Kills kudzu too.
// Damage that is done to growing plants is separately at code/game/machinery/hydroponics at obj/item/hydroponics
-/datum/reagent/atrazine/reaction_mob(var/mob/living/M, var/method=TOUCH, var/volume)
+/datum/reagent/atrazine/reaction_mob(mob/living/M, method=TOUCH, volume)
src = null
if(iscarbon(M))
var/mob/living/carbon/C = M
@@ -772,12 +729,10 @@
if(H.species.flags & IS_PLANT) //plantmen take a LOT of damage
H.adjustToxLoss(50)
..()
- return
else if(istype(M,/mob/living/simple_animal/diona)) //plantmen monkeys (diona) take EVEN MORE damage
var/mob/living/simple_animal/diona/D = M
- D.adjustToxLoss(100)
+ D.adjustHealth(100)
..()
- return
/datum/chemical_reaction/atrazine
name = "atrazine"
@@ -802,8 +757,7 @@
result_amount = 1
mix_message = "The smell of death wafts up from the solution."
-/datum/reagent/capulettium/on_mob_life(var/mob/living/M as mob)
- if(!M) M = holder.my_atom
+/datum/reagent/capulettium/on_mob_life(mob/living/M)
switch(current_cycle)
if(1 to 5)
M.eye_blurry += 10
@@ -817,7 +771,6 @@
if(61 to INFINITY)
M.eye_blurry += 10
..()
- return
/datum/reagent/capulettium_plus
name = "Capulettium Plus"
@@ -834,11 +787,9 @@
result_amount = 3
mix_message = "The solution begins to slosh about violently by itself."
-/datum/reagent/capulettium_plus/on_mob_life(var/mob/living/M as mob)
- if(!M) M = holder.my_atom
+/datum/reagent/capulettium_plus/on_mob_life(mob/living/M)
M.silent = max(M.silent, 2)
..()
- return
/datum/reagent/toxic_slurry
name = "Toxic Slurry"
@@ -847,8 +798,7 @@
reagent_state = LIQUID
color = "#00C81E"
-/datum/reagent/toxic_slurry/on_mob_life(var/mob/living/M as mob)
- if(!M) M = holder.my_atom
+/datum/reagent/toxic_slurry/on_mob_life(mob/living/M)
if(prob(10))
M.adjustToxLoss(rand(2.4))
if(prob(7))
@@ -857,7 +807,6 @@
if(prob(7))
M.fakevomit(1)
..()
- return
/datum/reagent/glowing_slurry
name = "Glowing Slurry"
@@ -866,7 +815,7 @@
reagent_state = LIQUID
color = "#00FD00"
-/datum/reagent/glowing_slurry/reaction_mob(var/mob/M, var/method=TOUCH, var/volume) //same as mutagen
+/datum/reagent/glowing_slurry/reaction_mob(mob/M, method=TOUCH, volume) //same as mutagen
if(!..()) return
if(!M.dna) return //No robots, AIs, aliens, Ians or other mobs should be affected by this.
src = null
@@ -874,10 +823,8 @@
randmutb(M)
domutcheck(M, null)
M.UpdateAppearance()
- return
-/datum/reagent/glowing_slurry/on_mob_life(var/mob/living/M as mob)
- if(!M) M = holder.my_atom
+/datum/reagent/glowing_slurry/on_mob_life(mob/living/M)
M.apply_effect(2, IRRADIATE, 0, negate_armor = 1)
if(prob(15))
randmutb(M)
@@ -886,7 +833,6 @@
domutcheck(M, null)
M.UpdateAppearance()
..()
- return
/datum/reagent/ants
name = "Ants"
@@ -896,7 +842,7 @@
color = "#993333"
process_flags = ORGANIC | SYNTHETIC
-/datum/reagent/ants/reaction_mob(var/mob/living/M as mob, var/method=TOUCH, var/volume) //NOT THE ANTS
+/datum/reagent/ants/reaction_mob(mob/living/M, method=TOUCH, volume) //NOT THE ANTS
if(iscarbon(M))
if(method == TOUCH || method==INGEST)
to_chat(M, "OH SHIT ANTS!!!!")
@@ -904,11 +850,9 @@
M.adjustBruteLoss(4)
-/datum/reagent/ants/on_mob_life(var/mob/living/M as mob)
- if(!M) M = holder.my_atom
+/datum/reagent/ants/on_mob_life(mob/living/M)
M.adjustBruteLoss(2)
..()
- return
/datum/reagent/teslium //Teslium. Causes periodic shocks, and makes shocks against the target much more effective.
name = "Teslium"
@@ -938,9 +882,8 @@
min_temp = 400
mix_sound = null
-/datum/chemical_reaction/teslium/on_reaction(var/datum/reagents/holder, var/created_volume)
+/datum/chemical_reaction/teslium/on_reaction(datum/reagents/holder, created_volume)
var/location = get_turf(holder.my_atom)
var/datum/effect/system/spark_spread/s = new /datum/effect/system/spark_spread
s.set_up(6, 1, location)
- s.start()
- return
\ No newline at end of file
+ s.start()
\ No newline at end of file
diff --git a/code/modules/reagents/oldchem/chemical_reaction/_chemical_reaction_base.dm b/code/modules/reagents/oldchem/chemical_reaction/_chemical_reaction_base.dm
index 6b5656c8dc5..3b4cc507415 100644
--- a/code/modules/reagents/oldchem/chemical_reaction/_chemical_reaction_base.dm
+++ b/code/modules/reagents/oldchem/chemical_reaction/_chemical_reaction_base.dm
@@ -19,5 +19,5 @@
var/mix_sound = 'sound/effects/bubbles.ogg'
var/no_message = 0
-/datum/chemical_reaction/proc/on_reaction(var/datum/reagents/holder, var/created_volume)
+/datum/chemical_reaction/proc/on_reaction(datum/reagents/holder, created_volume)
return
\ No newline at end of file
diff --git a/code/modules/reagents/oldchem/chemical_reaction/chemical_reaction_food.dm b/code/modules/reagents/oldchem/chemical_reaction/chemical_reaction_food.dm
index 5f96f794b34..b43c9b344f1 100644
--- a/code/modules/reagents/oldchem/chemical_reaction/chemical_reaction_food.dm
+++ b/code/modules/reagents/oldchem/chemical_reaction/chemical_reaction_food.dm
@@ -7,11 +7,10 @@
required_catalysts = list("enzyme" = 5)
result_amount = 1
-/datum/chemical_reaction/tofu/on_reaction(var/datum/reagents/holder, var/created_volume)
+/datum/chemical_reaction/tofu/on_reaction(datum/reagents/holder, created_volume)
var/location = get_turf(holder.my_atom)
for(var/i = 1, i <= created_volume, i++)
new /obj/item/weapon/reagent_containers/food/snacks/tofu(location)
- return
/datum/chemical_reaction/chocolate_bar
name = "Chocolate Bar"
@@ -20,11 +19,10 @@
required_reagents = list("soymilk" = 2, "cocoa" = 2, "sugar" = 2)
result_amount = 1
-/datum/chemical_reaction/chocolate_bar/on_reaction(var/datum/reagents/holder, var/created_volume)
+/datum/chemical_reaction/chocolate_bar/on_reaction(datum/reagents/holder, created_volume)
var/location = get_turf(holder.my_atom)
for(var/i = 1, i <= created_volume, i++)
new /obj/item/weapon/reagent_containers/food/snacks/chocolatebar(location)
- return
/datum/chemical_reaction/chocolate_bar2
name = "Chocolate Bar"
@@ -33,11 +31,10 @@
required_reagents = list("milk" = 2, "cocoa" = 2, "sugar" = 2)
result_amount = 1
-/datum/chemical_reaction/chocolate_bar2/on_reaction(var/datum/reagents/holder, var/created_volume)
+/datum/chemical_reaction/chocolate_bar2/on_reaction(datum/reagents/holder, created_volume)
var/location = get_turf(holder.my_atom)
for(var/i = 1, i <= created_volume, i++)
new /obj/item/weapon/reagent_containers/food/snacks/chocolatebar(location)
- return
/datum/chemical_reaction/soysauce
name = "Soy Sauce"
@@ -54,10 +51,10 @@
required_catalysts = list("enzyme" = 5)
result_amount = 1
-/datum/chemical_reaction/cheesewheel/on_reaction(var/datum/reagents/holder, var/created_volume)
+/datum/chemical_reaction/cheesewheel/on_reaction(datum/reagents/holder, created_volume)
var/location = get_turf(holder.my_atom)
- new /obj/item/weapon/reagent_containers/food/snacks/sliceable/cheesewheel(location)
- return
+ for(var/i = 1, i <= created_volume, i++)
+ new /obj/item/weapon/reagent_containers/food/snacks/sliceable/cheesewheel(location)
/datum/chemical_reaction/syntiflesh
name = "Syntiflesh"
@@ -66,10 +63,10 @@
required_reagents = list("blood" = 5, "cryoxadone" = 1)
result_amount = 1
-/datum/chemical_reaction/syntiflesh/on_reaction(var/datum/reagents/holder, var/created_volume)
+/datum/chemical_reaction/syntiflesh/on_reaction(datum/reagents/holder, created_volume)
var/location = get_turf(holder.my_atom)
- new /obj/item/weapon/reagent_containers/food/snacks/meat/syntiflesh(location)
- return
+ for(var/i = 1, i <= created_volume, i++)
+ new /obj/item/weapon/reagent_containers/food/snacks/meat/syntiflesh(location)
/datum/chemical_reaction/hot_ramen
name = "Hot Ramen"
@@ -131,5 +128,4 @@
/datum/chemical_reaction/dough/on_reaction(datum/reagents/holder, created_volume)
var/location = get_turf(holder.my_atom)
for(var/i = 1, i <= created_volume, i++)
- new /obj/item/weapon/reagent_containers/food/snacks/dough(location)
- return
+ new /obj/item/weapon/reagent_containers/food/snacks/dough(location)
\ No newline at end of file
diff --git a/code/modules/reagents/oldchem/chemical_reaction/chemical_reaction_harm.dm b/code/modules/reagents/oldchem/chemical_reaction/chemical_reaction_harm.dm
index 3a5cf0e73dd..afcd0d398ce 100644
--- a/code/modules/reagents/oldchem/chemical_reaction/chemical_reaction_harm.dm
+++ b/code/modules/reagents/oldchem/chemical_reaction/chemical_reaction_harm.dm
@@ -7,12 +7,11 @@
result_amount = 2
mix_message = "The mixture explodes!"
-/datum/chemical_reaction/explosion_potassium/on_reaction(var/datum/reagents/holder, var/created_volume)
+/datum/chemical_reaction/explosion_potassium/on_reaction(datum/reagents/holder, created_volume)
var/datum/effect/system/reagents_explosion/e = new()
e.set_up(round (created_volume/10, 1), holder.my_atom, 0, 0)
e.start()
holder.clear_reagents()
- return
/datum/chemical_reaction/emp_pulse
name = "EMP Pulse"
@@ -21,13 +20,12 @@
required_reagents = list("uranium" = 1, "iron" = 1) // Yes, laugh, it's the best recipe I could think of that makes a little bit of sense
result_amount = 2
-/datum/chemical_reaction/emp_pulse/on_reaction(var/datum/reagents/holder, var/created_volume)
+/datum/chemical_reaction/emp_pulse/on_reaction(datum/reagents/holder, created_volume)
var/location = get_turf(holder.my_atom)
// 100 created volume = 4 heavy range & 7 light range. A few tiles smaller than traitor EMP grandes.
// 200 created volume = 8 heavy range & 14 light range. 4 tiles larger than traitor EMP grenades.
empulse(location, round(created_volume / 24), round(created_volume / 14), 1)
holder.clear_reagents()
- return
/datum/chemical_reaction/mutagen
name = "Unstable mutagen"
@@ -58,13 +56,11 @@
required_reagents = list("glycerol" = 1, "facid" = 1, "sacid" = 1)
result_amount = 2
-/datum/chemical_reaction/nitroglycerin/on_reaction(var/datum/reagents/holder, var/created_volume)
+/datum/chemical_reaction/nitroglycerin/on_reaction(datum/reagents/holder, created_volume)
var/datum/effect/system/reagents_explosion/e = new()
e.set_up(round(created_volume/2, 1), holder.my_atom, 0, 0)
e.start()
-
holder.clear_reagents()
- return
/datum/chemical_reaction/condensedcapsaicin
name = "Condensed Capsaicin"
diff --git a/code/modules/reagents/oldchem/chemical_reaction/chemical_reaction_misc.dm b/code/modules/reagents/oldchem/chemical_reaction/chemical_reaction_misc.dm
index 6d89c5a8e9c..8a5dedf218b 100644
--- a/code/modules/reagents/oldchem/chemical_reaction/chemical_reaction_misc.dm
+++ b/code/modules/reagents/oldchem/chemical_reaction/chemical_reaction_misc.dm
@@ -15,7 +15,7 @@
required_reagents = list("fluorosurfactant" = 1, "water" = 1)
result_amount = 2
-/datum/chemical_reaction/foam/on_reaction(var/datum/reagents/holder, var/created_volume)
+/datum/chemical_reaction/foam/on_reaction(datum/reagents/holder, created_volume)
var/location = get_turf(holder.my_atom)
holder.my_atom.visible_message("The solution spews out foam!")
@@ -32,7 +32,7 @@
required_reagents = list("aluminum" = 3, "fluorosurfactant" = 1, "sacid" = 1)
result_amount = 5
-/datum/chemical_reaction/metalfoam/on_reaction(var/datum/reagents/holder, var/created_volume)
+/datum/chemical_reaction/metalfoam/on_reaction(datum/reagents/holder, created_volume)
var/location = get_turf(holder.my_atom)
holder.my_atom.visible_message("The solution spews out a metalic foam!")
@@ -49,7 +49,7 @@
required_reagents = list("iron" = 3, "fluorosurfactant" = 1, "sacid" = 1)
result_amount = 5
-/datum/chemical_reaction/ironfoam/on_reaction(var/datum/reagents/holder, var/created_volume)
+/datum/chemical_reaction/ironfoam/on_reaction(datum/reagents/holder, created_volume)
var/location = get_turf(holder.my_atom)
holder.my_atom.visible_message(" 310)
- M.bodytemperature = max(310, M.bodytemperature-5)
- M.Jitter(1)
- return
+ M.bodytemperature = max(310, M.bodytemperature - (5 * TEMPERATURE_DAMAGE_COEFFICIENT))
+ M.Jitter(5)
+ ..()
/////////////////////////////////////////////////////////////////cocktail entities//////////////////////////////////////////////
@@ -350,6 +339,11 @@
color = "#664300" // rgb: 102, 67, 0
alcohol_perc = 0.5
+/datum/reagent/ethanol/toxins_special/on_mob_life(mob/living/M)
+ if(M.bodytemperature < 330)
+ M.bodytemperature = min(330, M.bodytemperature + (15 * TEMPERATURE_DAMAGE_COEFFICIENT)) //310 is the normal bodytemp. 310.055
+ ..()
+
/datum/reagent/ethanol/beepsky_smash
name = "Beepsky Smash"
id = "beepskysmash"
@@ -458,6 +452,11 @@
color = "#664300" // rgb: 102, 67, 0
alcohol_perc = 0.2
+/datum/reagent/ethanol/antifreeze/on_mob_life(mob/living/M)
+ if(M.bodytemperature < 330)
+ M.bodytemperature = min(330, M.bodytemperature + (20 * TEMPERATURE_DAMAGE_COEFFICIENT)) //310 is the normal bodytemp. 310.055
+ ..()
+
/datum/reagent/ethanol/barefoot
name = "Barefoot"
id = "barefoot"
@@ -526,11 +525,10 @@
color = "#664300" // rgb: 102, 67, 0
alcohol_perc = 0.4
-/datum/reagent/ethanol/sbiten/on_mob_life(var/mob/living/M as mob)
- ..()
+/datum/reagent/ethanol/sbiten/on_mob_life(mob/living/M)
if(M.bodytemperature < 360)
- M.bodytemperature = min(360, M.bodytemperature+50) //310 is the normal bodytemp. 310.055
- return
+ M.bodytemperature = min(360, M.bodytemperature + (50 * TEMPERATURE_DAMAGE_COEFFICIENT)) //310 is the normal bodytemp. 310.055
+ ..()
/datum/reagent/ethanol/devilskiss
name = "Devils Kiss"
@@ -564,11 +562,10 @@
color = "#664300" // rgb: 102, 67, 0
alcohol_perc = 0.2
-/datum/reagent/ethanol/iced_beer/on_mob_life(var/mob/living/M as mob)
+/datum/reagent/ethanol/iced_beer/on_mob_life(mob/living/M)
+ if(M.bodytemperature > 270)
+ M.bodytemperature = max(270, M.bodytemperature - (20 * TEMPERATURE_DAMAGE_COEFFICIENT)) //310 is the normal bodytemp. 310.055
..()
- if(M.bodytemperature < 270)
- M.bodytemperature = min(270, M.bodytemperature-40) //310 is the normal bodytemp. 310.055
- return
/datum/reagent/ethanol/grog
name = "Grog"
@@ -624,17 +621,16 @@
description = "A strong neurotoxin that puts the subject into a death-like state."
reagent_state = LIQUID
color = "#2E2E61" // rgb: 46, 46, 97
+ dizzy_adj = 6
alcohol_perc = 0.7
-/datum/reagent/ethanol/neurotoxin/on_mob_life(var/mob/living/M as mob)
+/datum/reagent/ethanol/neurotoxin/on_mob_life(mob/living/M)
M.weakened = max(M.weakened, 3)
- dizzy_adj = 6
if(current_cycle >=55)
M.druggy = max(M.druggy, 55)
if(current_cycle >=200)
M.adjustToxLoss(2)
..()
- return
/datum/reagent/ethanol/changelingsting
name = "Changeling Sting"
@@ -644,10 +640,9 @@
color = "#2E6671" // rgb: 46, 102, 113
alcohol_perc = 0.7
-/datum/reagent/ethanol/changelingsting/on_mob_life(var/mob/living/M as mob)
- ..()
+/datum/reagent/ethanol/changelingsting/on_mob_life(mob/living/M)
M.dizziness +=5
- return
+ ..()
/datum/reagent/ethanol/irishcarbomb
name = "Irish Car Bomb"
@@ -657,10 +652,9 @@
color = "#2E6671" // rgb: 46, 102, 113
alcohol_perc = 0.3
-/datum/reagent/ethanol/irishcarbomb/on_mob_life(var/mob/living/M as mob)
- ..()
+/datum/reagent/ethanol/irishcarbomb/on_mob_life(mob/living/M)
M.dizziness +=5
- return
+ ..()
/datum/reagent/ethanol/syndicatebomb
name = "Syndicate Bomb"
@@ -686,15 +680,12 @@
color = "#2E6671" // rgb: 46, 102, 113
alcohol_perc = 0.5
-/datum/reagent/ethanol/driestmartini/on_mob_life(var/mob/living/M as mob)
+/datum/reagent/ethanol/driestmartini/on_mob_life(mob/living/M)
M.dizziness +=10
- if(current_cycle >= 55 && current_cycle <115)
- if(!M.stuttering) M.stuttering = 1
+ if(current_cycle >= 55 && current_cycle < 115)
M.stuttering += 10
..()
- return
-
/datum/reagent/ethanol/kahlua
name = "Kahlua"
id = "kahlua"
@@ -702,10 +693,9 @@
color = "#664300" // rgb: 102, 67, 0
alcohol_perc = 0.2
-/datum/reagent/ethanol/kahlua/on_mob_life(var/mob/living/M as mob)
- M.dizziness = max(0,M.dizziness-5)
- M.drowsyness = max(0,M.drowsyness-3)
- M.sleeping = max(0,M.sleeping-2)
+/datum/reagent/ethanol/kahlua/on_mob_life(mob/living/M)
+ M.dizziness = max(0, M.dizziness-5)
+ M.drowsyness = max(0, M.drowsyness-3)
+ M.AdjustSleeping(-2)
M.Jitter(5)
- ..()
- return
+ ..()
\ No newline at end of file
diff --git a/code/modules/reagents/oldchem/reagents/drink/reagents_drink.dm b/code/modules/reagents/oldchem/reagents/drink/reagents_drink.dm
index cc4daaa7bc5..6969b9e3677 100644
--- a/code/modules/reagents/oldchem/reagents/drink/reagents_drink.dm
+++ b/code/modules/reagents/oldchem/reagents/drink/reagents_drink.dm
@@ -4,10 +4,10 @@
description = "Both delicious AND rich in Vitamin C, what more do you need?"
color = "#E78108" // rgb: 231, 129, 8
-/datum/reagent/drink/orangejuicde/on_mob_life(var/mob/living/M as mob)
+/datum/reagent/drink/orangejuicde/on_mob_life(mob/living/M)
+ if(M.getOxyLoss() && prob(30))
+ M.adjustOxyLoss(-1*REM)
..()
- if(M.getOxyLoss() && prob(30)) M.adjustOxyLoss(-1*REM)
- return
/datum/reagent/drink/tomatojuice
name = "Tomato Juice"
@@ -15,10 +15,10 @@
description = "Tomatoes made into juice. What a waste of big, juicy tomatoes, huh?"
color = "#731008" // rgb: 115, 16, 8
-/datum/reagent/drink/tomatojuice/on_mob_life(var/mob/living/M as mob)
+/datum/reagent/drink/tomatojuice/on_mob_life(mob/living/M)
+ if(M.getFireLoss() && prob(20))
+ M.adjustFireLoss(-1)
..()
- if(M.getFireLoss() && prob(20)) M.adjustFireLoss(-1)
- return
/datum/reagent/drink/limejuice
name = "Lime Juice"
@@ -26,11 +26,10 @@
description = "The sweet-sour juice of limes."
color = "#365E30" // rgb: 54, 94, 48
-/datum/reagent/drink/limejuice/on_mob_life(var/mob/living/M as mob)
+/datum/reagent/drink/limejuice/on_mob_life(mob/living/M)
+ if(M.getToxLoss() && prob(20))
+ M.adjustToxLoss(-1)
..()
- if(M.getToxLoss() && prob(20)) M.adjustToxLoss(-1)
- return
-
/datum/reagent/drink/carrotjuice
name = "Carrot juice"
@@ -38,19 +37,16 @@
description = "It is just like a carrot but without crunching."
color = "#973800" // rgb: 151, 56, 0
-/datum/reagent/drink/carrotjuicde/on_mob_life(var/mob/living/M as mob)
- ..()
+/datum/reagent/drink/carrotjuicde/on_mob_life(mob/living/M)
M.eye_blurry = max(M.eye_blurry-1 , 0)
M.eye_blind = max(M.eye_blind-1 , 0)
- if(!data) data = 1
- switch(data)
+ switch(current_cycle)
if(1 to 20)
//nothing
if(21 to INFINITY)
- if(prob(data-10))
+ if(prob(current_cycle-10))
M.disabilities &= ~NEARSIGHTED
- data++
- return
+ ..()
/datum/reagent/drink/doctor_delight
name = "The Doctor's Delight"
@@ -59,11 +55,10 @@
reagent_state = LIQUID
color = "#FF8CFF" // rgb: 255, 140, 255
-/datum/reagent/drink/doctors_delight/on_mob_life(var/mob/living/M as mob)
- if(!M) M = holder.my_atom
- if(M.getToxLoss() && prob(20)) M.adjustToxLoss(-1)
+/datum/reagent/drink/doctors_delight/on_mob_life(mob/living/M)
+ if(M.getToxLoss() && prob(20))
+ M.adjustToxLoss(-1)
..()
- return
/datum/reagent/drink/berryjuice
name = "Berry Juice"
@@ -77,10 +72,9 @@
description = "A tasty juice blended from various kinds of very deadly and toxic berries."
color = "#863353" // rgb: 134, 51, 83
-/datum/reagent/drink/poisonberryjuice/on_mob_life(var/mob/living/M as mob)
- ..()
+/datum/reagent/drink/poisonberryjuice/on_mob_life(mob/living/M)
M.adjustToxLoss(1)
- return
+ ..()
/datum/reagent/drink/watermelonjuice
name = "Watermelon Juice"
@@ -106,15 +100,11 @@
description = "The raw essence of a banana."
color = "#863333" // rgb: 175, 175, 0
-/datum/reagent/drink/banana/on_mob_life(var/mob/living/M as mob)
+/datum/reagent/drink/banana/on_mob_life(mob/living/M)
M.nutrition += nutriment_factor
- if(istype(M, /mob/living/carbon/human) && M.job in list("Clown"))
- if(!M) M = holder.my_atom
+ if((istype(M, /mob/living/carbon/human) && M.job in list("Clown") ) || issmall(M))
M.adjustBruteLoss(-1)
M.adjustFireLoss(-1)
- M.nutrition += nutriment_factor
- ..()
- return
..()
/datum/reagent/drink/nothing
@@ -122,15 +112,11 @@
id = "nothing"
description = "Absolutely nothing."
-/datum/reagent/drink/nothing/on_mob_life(var/mob/living/M as mob)
+/datum/reagent/drink/nothing/on_mob_life(mob/living/M)
M.nutrition += nutriment_factor
if(istype(M, /mob/living/carbon/human) && M.job in list("Mime"))
- if(!M) M = holder.my_atom
M.adjustBruteLoss(-1)
M.adjustFireLoss(-1)
- M.nutrition += nutriment_factor
- ..()
- return
..()
/datum/reagent/drink/potato_juice
@@ -146,12 +132,12 @@
description = "An opaque white liquid produced by the mammary glands of mammals."
color = "#DFDFDF" // rgb: 223, 223, 223
-/datum/reagent/drink/milk/on_mob_life(var/mob/living/M as mob)
- if(M.getBruteLoss() && prob(20)) M.adjustBruteLoss(-1)
+/datum/reagent/drink/milk/on_mob_life(mob/living/M)
+ if(M.getBruteLoss() && prob(20))
+ M.adjustBruteLoss(-1)
if(holder.has_reagent("capsaicin"))
holder.remove_reagent("capsaicin", 2)
..()
- return
/datum/reagent/drink/milk/soymilk
name = "Soy Milk"
@@ -177,7 +163,7 @@
description = "Made with love! And coco beans."
nutriment_factor = 2 * FOOD_METABOLISM
color = "#403010" // rgb: 64, 48, 16
- adj_temp = 5
+ adj_temp_hot = 5
/datum/reagent/drink/coffee
name = "Coffee"
@@ -187,11 +173,11 @@
adj_dizzy = -5
adj_drowsy = -3
adj_sleepy = -2
- adj_temp = 25
+ adj_temp_hot = 25
overdose_threshold = 45
addiction_chance = 1 // It's true.
-/datum/reagent/drink/coffee/on_mob_life(var/mob/living/M as mob)
+/datum/reagent/drink/coffee/on_mob_life(mob/living/M)
if(holder.has_reagent("frostoil"))
holder.remove_reagent("frostoil", 5)
if(prob(50))
@@ -199,9 +185,8 @@
M.AdjustStunned(-1)
M.AdjustWeakened(-1)
..()
- return
-/datum/reagent/drink/coffee/overdose_process(var/mob/living/M as mob, severity)
+/datum/reagent/drink/coffee/overdose_process(mob/living/M, severity)
if(volume > 45)
M.Jitter(5)
@@ -210,7 +195,8 @@
id = "icecoffee"
description = "Coffee and ice, refreshing and cool."
color = "#102838" // rgb: 16, 40, 56
- adj_temp = -5
+ adj_temp_hot = 0
+ adj_temp_cool = 5
/datum/reagent/drink/coffee/soy_latte
name = "Soy Latte"
@@ -218,13 +204,13 @@
description = "A nice and tasty beverage while you are reading your hippie books."
color = "#664300" // rgb: 102, 67, 0
adj_sleepy = 0
- adj_temp = 5
+ adj_temp_hot = 5
-/datum/reagent/drink/coffee/soy_latte/on_mob_life(var/mob/living/M as mob)
+/datum/reagent/drink/coffee/soy_latte/on_mob_life(mob/living/M)
..()
- M.sleeping = 0
- if(M.getBruteLoss() && prob(20)) M.adjustBruteLoss(-1)
- return
+ M.SetSleeping(0)
+ if(M.getBruteLoss() && prob(20))
+ M.adjustBruteLoss(-1)
/datum/reagent/drink/coffee/cafe_latte
name = "Cafe Latte"
@@ -232,14 +218,13 @@
description = "A nice, strong and tasty beverage while you are reading."
color = "#664300" // rgb: 102, 67, 0
adj_sleepy = 0
- adj_temp = 5
+ adj_temp_hot = 5
-/datum/reagent/drink/coffee/cafe_latte/on_mob_life(var/mob/living/M as mob)
+/datum/reagent/drink/coffee/cafe_latte/on_mob_life(mob/living/M)
..()
- M.sleeping = 0
+ M.SetSleeping(0)
if(M.getBruteLoss() && prob(20))
M.adjustBruteLoss(-1)
- return
/datum/reagent/drink/coffee/cafe_latte/cafe_mocha
name = "Cafe Mocha"
@@ -255,20 +240,20 @@
adj_dizzy = -2
adj_drowsy = -1
adj_sleepy = -3
- adj_temp = 20
+ adj_temp_hot = 20
-/datum/reagent/drink/tea/on_mob_life(var/mob/living/M as mob)
- ..()
+/datum/reagent/drink/tea/on_mob_life(mob/living/M)
if(M.getToxLoss() && prob(20))
M.adjustToxLoss(-1)
- return
+ ..()
/datum/reagent/drink/tea/icetea
name = "Iced Tea"
id = "icetea"
description = "No relation to a certain rap artist/ actor."
color = "#104038" // rgb: 16, 64, 56
- adj_temp = -5
+ adj_temp_hot = 0
+ adj_temp_cool = 5
/datum/reagent/drink/bananahonk
name = "Banana Mama"
@@ -277,15 +262,11 @@
nutriment_factor = 1 * FOOD_METABOLISM
color = "#664300" // rgb: 102, 67, 0
-/datum/reagent/drink/bananahonk/on_mob_life(var/mob/living/M as mob)
+/datum/reagent/drink/bananahonk/on_mob_life(mob/living/M)
M.nutrition += nutriment_factor
- if(istype(M, /mob/living/carbon/human) && M.job in list("Clown"))
- if(!M) M = holder.my_atom
+ if((istype(M, /mob/living/carbon/human) && M.job in list("Clown") ) || issmall(M))
M.adjustBruteLoss(-1)
M.adjustFireLoss(-1)
- M.nutrition += nutriment_factor
- ..()
- return
..()
/datum/reagent/drink/silencer
@@ -295,13 +276,9 @@
nutriment_factor = 1 * FOOD_METABOLISM
color = "#664300" // rgb: 102, 67, 0
-/datum/reagent/drink/silencer/on_mob_life(var/mob/living/M as mob)
+/datum/reagent/drink/silencer/on_mob_life(mob/living/M)
M.nutrition += nutriment_factor
if(istype(M, /mob/living/carbon/human) && M.job in list("Mime"))
- if(!M) M = holder.my_atom
M.adjustBruteLoss(-1)
M.adjustFireLoss(-1)
- M.nutrition += nutriment_factor
- ..()
- return
..()
\ No newline at end of file
diff --git a/code/modules/reagents/oldchem/reagents/drink/reagents_drink_base.dm b/code/modules/reagents/oldchem/reagents/drink/reagents_drink_base.dm
index 7195dad5df5..1868489adb7 100644
--- a/code/modules/reagents/oldchem/reagents/drink/reagents_drink_base.dm
+++ b/code/modules/reagents/oldchem/reagents/drink/reagents_drink_base.dm
@@ -8,16 +8,21 @@
var/adj_dizzy = 0
var/adj_drowsy = 0
var/adj_sleepy = 0
- var/adj_temp = 0
+ var/adj_temp_hot = 0
+ var/adj_temp_cool = 0
-/datum/reagent/drink/on_mob_life(var/mob/living/M as mob)
- if(!M) M = holder.my_atom
+/datum/reagent/drink/on_mob_life(mob/living/M)
M.nutrition += nutriment_factor
- if(adj_dizzy) M.dizziness = max(0,M.dizziness + adj_dizzy)
- if(adj_drowsy) M.drowsyness = max(0,M.drowsyness + adj_drowsy)
- if(adj_sleepy) M.sleeping = max(0,M.sleeping + adj_sleepy)
- if(adj_temp)
+ if(adj_dizzy)
+ M.dizziness = max(0, M.dizziness + adj_dizzy)
+ if(adj_drowsy)
+ M.drowsyness = max(0, M.drowsyness + adj_drowsy)
+ if(adj_sleepy)
+ M.AdjustSleeping(adj_sleepy)
+ if(adj_temp_hot)
if(M.bodytemperature < 310)//310 is the normal bodytemp. 310.055
- M.bodytemperature = min(310, M.bodytemperature + (25 * TEMPERATURE_DAMAGE_COEFFICIENT))
- ..()
- return
+ M.bodytemperature = min(310, M.bodytemperature + (adj_temp_hot * TEMPERATURE_DAMAGE_COEFFICIENT))
+ if(adj_temp_cool)
+ if(M.bodytemperature > 310)//310 is the normal bodytemp. 310.055
+ M.bodytemperature = max(310, M.bodytemperature - (adj_temp_cool * TEMPERATURE_DAMAGE_COEFFICIENT))
+ ..()
\ No newline at end of file
diff --git a/code/modules/reagents/oldchem/reagents/drink/reagents_drink_cold.dm b/code/modules/reagents/oldchem/reagents/drink/reagents_drink_cold.dm
index b955b18203a..fe54ed97246 100644
--- a/code/modules/reagents/oldchem/reagents/drink/reagents_drink_cold.dm
+++ b/code/modules/reagents/oldchem/reagents/drink/reagents_drink_cold.dm
@@ -1,6 +1,6 @@
/datum/reagent/drink/cold
name = "Cold drink"
- adj_temp = -5
+ adj_temp_cool = 5
/datum/reagent/drink/cold/tonic
name = "Tonic Water"
@@ -25,6 +25,11 @@
description = "Frozen water, your dentist wouldn't like you chewing this."
reagent_state = SOLID
color = "#619494" // rgb: 97, 148, 148
+ adj_temp_cool = 0
+
+/datum/reagent/drink/cold/ice/on_mob_life(mob/living/M)
+ M.bodytemperature = max(M.bodytemperature - 5 * TEMPERATURE_DAMAGE_COEFFICIENT, 0)
+ ..()
/datum/reagent/drink/cold/space_cola
name = "Cola"
@@ -32,7 +37,7 @@
description = "A refreshing beverage."
reagent_state = LIQUID
color = "#100800" // rgb: 16, 8, 0
- adj_drowsy = -3
+ adj_drowsy = -5
/datum/reagent/drink/cold/nuka_cola
name = "Nuka Cola"
@@ -41,14 +46,17 @@
color = "#100800" // rgb: 16, 8, 0
adj_sleepy = -2
-/datum/reagent/drink/cold/nuka_cola/on_mob_life(var/mob/living/M as mob)
+/datum/reagent/drink/cold/nuka_cola/on_mob_life(mob/living/M)
M.Jitter(20)
M.druggy = max(M.druggy, 30)
M.dizziness +=5
M.drowsyness = 0
M.status_flags |= GOTTAGOFAST
..()
- return
+
+/datum/reagent/drink/cold/nuka_cola/reagent_deleted(mob/living/M)
+ M.status_flags &= ~GOTTAGOFAST
+ ..()
/datum/reagent/drink/cold/spacemountainwind
name = "Space Mountain Wind"
@@ -70,14 +78,14 @@
id = "space_up"
description = "Tastes like a hull breach in your mouth."
color = "#202800" // rgb: 32, 40, 0
- adj_temp = -8
+ adj_temp_cool = 8
/datum/reagent/drink/cold/lemon_lime
name = "Lemon Lime"
description = "A tangy substance made of 0.5% natural citrus!"
id = "lemon_lime"
color = "#878F00" // rgb: 135, 40, 0
- adj_temp = -8
+ adj_temp_cool = 8
/datum/reagent/drink/cold/lemonade
name = "Lemonade"
@@ -96,37 +104,14 @@
description = "It's not what it sounds like..."
id = "brownstar"
color = "#9F3400" // rgb: 159, 052, 000
- adj_temp = - 2
+ adj_temp_cool = 2
/datum/reagent/drink/cold/milkshake
name = "Milkshake"
description = "Glorious brainfreezing mixture."
id = "milkshake"
color = "#AEE5E4" // rgb" 174, 229, 228
- adj_temp = -9
-
-/datum/reagent/drink/cold/milkshake/on_mob_life(var/mob/living/M as mob)
- if(!M) M = holder.my_atom
- if(!data) data = 1
- switch(data)
- if(1 to 15)
- M.bodytemperature -= 5 * TEMPERATURE_DAMAGE_COEFFICIENT
- if(holder.has_reagent("capsaicin"))
- holder.remove_reagent("capsaicin", 5)
- if(istype(M, /mob/living/carbon/slime))
- M.bodytemperature -= rand(5,20)
- if(15 to 25)
- M.bodytemperature -= 10 * TEMPERATURE_DAMAGE_COEFFICIENT
- if(istype(M, /mob/living/carbon/slime))
- M.bodytemperature -= rand(10,20)
- if(25 to INFINITY)
- M.bodytemperature -= 15 * TEMPERATURE_DAMAGE_COEFFICIENT
- if(prob(1)) M.emote("shiver")
- if(istype(M, /mob/living/carbon/slime))
- M.bodytemperature -= rand(15,20)
- data++
- ..()
- return
+ adj_temp_cool = 9
/datum/reagent/drink/cold/rewriter
name = "Rewriter"
@@ -134,7 +119,6 @@
id = "rewriter"
color = "#485000" // rgb:72, 080, 0
-/datum/reagent/drink/cold/rewriter/on_mob_life(var/mob/living/M as mob)
- ..()
+/datum/reagent/drink/cold/rewriter/on_mob_life(mob/living/M)
M.Jitter(5)
- return
\ No newline at end of file
+ ..()
\ No newline at end of file
diff --git a/code/modules/reagents/oldchem/reagents/reagents_admin.dm b/code/modules/reagents/oldchem/reagents/reagents_admin.dm
index 4b0588c625b..fa2f661f648 100644
--- a/code/modules/reagents/oldchem/reagents/reagents_admin.dm
+++ b/code/modules/reagents/oldchem/reagents/reagents_admin.dm
@@ -5,13 +5,9 @@
reagent_state = LIQUID
color = "#C8A5DC" // rgb: 200, 165, 220
process_flags = ORGANIC | SYNTHETIC //Adminbuse knows no bounds!
- admin_only=1
+ admin_only = 1
-/datum/reagent/adminordrazine/on_mob_life(var/mob/living/carbon/M as mob)
- if(!M) M = holder.my_atom ///This can even heal dead people.
- for(var/datum/reagent/R in M.reagents.reagent_list)
- if(R != src)
- M.reagents.remove_reagent(R.id,5)
+/datum/reagent/adminordrazine/on_mob_life(mob/living/carbon/M)
M.setCloneLoss(0)
M.setOxyLoss(0)
M.radiation = 0
@@ -20,15 +16,18 @@
M.adjustToxLoss(-5)
M.hallucination = 0
M.setBrainLoss(0)
+ if(ishuman(M))
+ var/mob/living/carbon/human/H = M
+ for(var/name in H.internal_organs)
+ var/obj/item/organ/internal/I = H.get_int_organ(name)
+ I.damage = max(0, I.damage-5)
+ for(var/obj/item/organ/external/E in H.organs)
+ if(E.mend_fracture())
+ E.perma_injury = 0
M.disabilities = 0
M.sdisabilities = 0
M.eye_blurry = 0
M.eye_blind = 0
- if(ishuman(M))
- var/mob/living/carbon/human/H = M
- var/obj/item/organ/internal/eyes/E = H.get_int_organ(/obj/item/organ/internal/eyes)
- if(istype(E))
- E.damage = max(E.damage-5 , 0)
M.SetWeakened(0)
M.SetStunned(0)
M.SetParalysis(0)
@@ -38,12 +37,15 @@
M.stuttering = 0
M.slurring = 0
M.confused = 0
- M.sleeping = 0
+ M.SetSleeping(0)
M.jitteriness = 0
- if(istype(M,/mob/living/carbon)) // make sure to only use it on carbon mobs
- var/mob/living/carbon/C = M
- for(var/datum/disease/D in C.viruses)
- D.cure(0)
+ for(var/datum/disease/D in M.viruses)
+ if(D.severity == NONTHREAT)
+ continue
+ D.spread_text = "Remissive"
+ D.stage--
+ if(D.stage < 1)
+ D.cure()
..()
/datum/reagent/adminordrazine/nanites
diff --git a/code/modules/reagents/oldchem/reagents/reagents_drugs.dm b/code/modules/reagents/oldchem/reagents/reagents_drugs.dm
index 87e51bf89ef..ec3996f485c 100644
--- a/code/modules/reagents/oldchem/reagents/reagents_drugs.dm
+++ b/code/modules/reagents/oldchem/reagents/reagents_drugs.dm
@@ -6,12 +6,11 @@
color = "#202040" // rgb: 20, 20, 40
metabolization_rate = 0.25 * REAGENTS_METABOLISM
-/datum/reagent/serotrotium/on_mob_life(var/mob/living/M as mob)
+/datum/reagent/serotrotium/on_mob_life(mob/living/M)
if(ishuman(M))
if(prob(7))
M.emote(pick("twitch","drool","moan","gasp"))
..()
- return
/datum/reagent/lithium
@@ -21,14 +20,12 @@
reagent_state = SOLID
color = "#808080" // rgb: 128, 128, 128
-/datum/reagent/lithium/on_mob_life(var/mob/living/M as mob)
- if(!M) M = holder.my_atom
+/datum/reagent/lithium/on_mob_life(mob/living/M)
if(isturf(M.loc) && !istype(M.loc, /turf/space))
if(M.canmove && !M.restrained())
step(M, pick(cardinal))
if(prob(5)) M.emote(pick("twitch","drool","moan"))
..()
- return
/datum/reagent/hippies_delight
@@ -39,11 +36,9 @@
color = "#664300" // rgb: 102, 67, 0
metabolization_rate = 0.2 * REAGENTS_METABOLISM
-/datum/reagent/hippies_delight/on_mob_life(var/mob/living/M as mob)
- if(!M) M = holder.my_atom
+/datum/reagent/hippies_delight/on_mob_life(mob/living/M)
M.druggy = max(M.druggy, 50)
- if(!data) data = 1
- switch(data)
+ switch(current_cycle)
if(1 to 5)
if(!M.stuttering) M.stuttering = 1
M.Dizzy(10)
@@ -60,10 +55,7 @@
M.Dizzy(40)
M.druggy = max(M.druggy, 60)
if(prob(30)) M.emote(pick("twitch","giggle"))
- data++
..()
- return
-
/datum/reagent/lsd
name = "Lysergic acid diethylamide"
@@ -72,13 +64,10 @@
reagent_state = LIQUID
color = "#0000D8"
-/datum/reagent/lsd/on_mob_life(var/mob/living/M)
- if(!M) M = holder.my_atom
+/datum/reagent/lsd/on_mob_life(mob/living/M)
M.druggy = max(M.druggy, 15)
M.hallucination += 10
..()
- return
-
/datum/reagent/space_drugs
name = "Space drugs"
@@ -89,12 +78,10 @@
metabolization_rate = 0.2
addiction_chance = 65
-/datum/reagent/space_drugs/on_mob_life(var/mob/living/M as mob)
- if(!M) M = holder.my_atom
+/datum/reagent/space_drugs/on_mob_life(mob/living/M)
M.druggy = max(M.druggy, 15)
if(isturf(M.loc) && !istype(M.loc, /turf/space))
if(M.canmove && !M.restrained())
step(M, pick(cardinal))
if(prob(7)) M.emote(pick("twitch","drool","moan","giggle"))
- ..()
- return
\ No newline at end of file
+ ..()
\ No newline at end of file
diff --git a/code/modules/reagents/oldchem/reagents/reagents_flammable.dm b/code/modules/reagents/oldchem/reagents/reagents_flammable.dm
index 8494ff3957b..cf425957f8c 100644
--- a/code/modules/reagents/oldchem/reagents/reagents_flammable.dm
+++ b/code/modules/reagents/oldchem/reagents/reagents_flammable.dm
@@ -5,7 +5,7 @@
reagent_state = LIQUID
color = "#060606"
-/datum/reagent/fuel/reaction_mob(var/mob/living/M, var/method=TOUCH, var/volume)//Splashing people with welding fuel to make them easy to ignite!
+/datum/reagent/fuel/reaction_mob(mob/living/M, method=TOUCH, volume)//Splashing people with welding fuel to make them easy to ignite!
if(!istype(M, /mob/living))
return
if(method == TOUCH)
@@ -18,6 +18,7 @@
id = "unholywater"
description = "Something that shouldn't exist on this plane of existance."
process_flags = ORGANIC | SYNTHETIC //ethereal means everything processes it.
+ metabolization_rate = 1
/datum/reagent/fuel/unholywater/on_mob_life(mob/living/M)
M.adjustBrainLoss(3)
@@ -32,7 +33,11 @@
M.adjustFireLoss(2)
M.adjustOxyLoss(2)
M.adjustBruteLoss(2)
- holder.remove_reagent(src.id, 1)
+ ..()
+
+/datum/reagent/fuel/unholywater/reagent_deleted(mob/living/M)
+ M.status_flags &= ~GOTTAGOFAST
+ ..()
/datum/reagent/plasma
name = "Plasma"
@@ -41,8 +46,7 @@
reagent_state = LIQUID
color = "#7A2B94"
-/datum/reagent/plasma/on_mob_life(var/mob/living/M as mob)
- if(!M) M = holder.my_atom
+/datum/reagent/plasma/on_mob_life(mob/living/M)
M.adjustToxLoss(1*REM)
if(holder.has_reagent("epinephrine"))
holder.remove_reagent("epinephrine", 2)
@@ -50,15 +54,13 @@
var/mob/living/carbon/C = M
C.adjustPlasma(10)
..()
- return
-/datum/reagent/plasma/reaction_mob(var/mob/living/M, var/method=TOUCH, var/volume)//Splashing people with plasma is stronger than fuel!
+/datum/reagent/plasma/reaction_mob(mob/living/M, method=TOUCH, volume)//Splashing people with plasma is stronger than fuel!
if(!istype(M, /mob/living))
return
if(method == TOUCH)
M.adjust_fire_stacks(volume / 5)
..()
- return
/datum/reagent/thermite
@@ -69,14 +71,13 @@
color = "#673910" // rgb: 103, 57, 16
process_flags = ORGANIC | SYNTHETIC
-/datum/reagent/thermite/reaction_turf(var/turf/T, var/volume)
+/datum/reagent/thermite/reaction_turf(turf/T, volume)
src = null
if(volume >= 5)
if(istype(T, /turf/simulated/wall))
T:thermite = 1
T.overlays.Cut()
T.overlays = image('icons/effects/effects.dmi',icon_state = "thermite")
- return
/datum/reagent/glycerol
name = "Glycerol"
diff --git a/code/modules/reagents/oldchem/reagents/reagents_food.dm b/code/modules/reagents/oldchem/reagents/reagents_food.dm
index 90c65bbf4eb..b31bfe7230b 100644
--- a/code/modules/reagents/oldchem/reagents/reagents_food.dm
+++ b/code/modules/reagents/oldchem/reagents/reagents_food.dm
@@ -8,14 +8,13 @@
reagent_state = SOLID
nutriment_factor = 12 * REAGENTS_METABOLISM
color = "#664330" // rgb: 102, 67, 48
+ var/diet_flags = DIET_OMNI | DIET_HERB | DIET_CARN
/datum/reagent/nutriment/on_mob_life(mob/living/M)
- if(!M)
- M = holder.my_atom
if(!(M.mind in ticker.mode.vampires))
if(ishuman(M))
var/mob/living/carbon/human/H = M
- if(H.can_eat()) //Make sure the species has it's dietflag set, otherwise it can't digest any nutrients
+ if(H.can_eat(diet_flags)) //Make sure the species has it's dietflag set, otherwise it can't digest any nutrients
H.nutrition += nutriment_factor // For hunger and fatness
if(prob(50))
M.adjustBruteLoss(-1)
@@ -24,54 +23,44 @@
else
if(!(H.species.flags & NO_BLOOD))
H.vessel.add_reagent("blood", 0.4)
- if(istype(M,/mob/living/simple_animal)) //Any nutrients can heal simple animals
- if(prob(50))
- M.heal_organ_damage(1,0)
..()
-/datum/reagent/protein // Meat-based protein, digestable by carnivores and omnivores, worthless to herbivores
+/datum/reagent/nutriment/protein // Meat-based protein, digestable by carnivores and omnivores, worthless to herbivores
name = "Protein"
id = "protein"
description = "Various essential proteins and fats commonly found in animal flesh and blood."
- reagent_state = SOLID
nutriment_factor = 15 * REAGENTS_METABOLISM
- color = "#664330" // rgb: 102, 67, 48
+ diet_flags = DIET_CARN | DIET_OMNI
-/datum/reagent/protein/on_mob_life(var/mob/living/M as mob)
- if(!M) M = holder.my_atom
- if(!(M.mind in ticker.mode.vampires))
- if(ishuman(M))
- var/mob/living/carbon/human/H = M
- if(H.can_eat(DIET_CARN | DIET_OMNI)) //Make sure that it is not a herbivore
- H.nutrition += nutriment_factor // For hunger and fatness
- if(prob(50)) M.adjustBruteLoss(-1)
- if(istype(M,/mob/living/simple_animal)) //Any nutrients can heal simple animals
- if(prob(50)) M.heal_organ_damage(1,0)
- ..()
- return
-
-
-/datum/reagent/plantmatter // Plant-based biomatter, digestable by herbivores and omnivores, worthless to carnivores
+/datum/reagent/nutriment/plantmatter // Plant-based biomatter, digestable by herbivores and omnivores, worthless to carnivores
name = "Plant-matter"
id = "plantmatter"
description = "Vitamin-rich fibers and natural sugars commonly found in fresh produce."
- reagent_state = SOLID
nutriment_factor = 15 * REAGENTS_METABOLISM
+ diet_flags = DIET_HERB | DIET_OMNI
+
+
+/datum/reagent/vitamin
+ name = "Vitamin"
+ id = "vitamin"
+ description = "All the best vitamins, minerals, and carbohydrates the body needs in pure form."
+ reagent_state = SOLID
+ nutriment_factor = 1 * REAGENTS_METABOLISM
color = "#664330" // rgb: 102, 67, 48
-/datum/reagent/plantmatter/on_mob_life(var/mob/living/M as mob)
- if(!M) M = holder.my_atom
- if(!(M.mind in ticker.mode.vampires))
- if(ishuman(M))
- var/mob/living/carbon/human/H = M
- if(H.can_eat(DIET_HERB | DIET_OMNI)) //Make sure that it is not a carnivore
- H.nutrition += nutriment_factor // For hunger and fatness
- if(prob(50)) M.adjustBruteLoss(-1)
- if(istype(M,/mob/living/simple_animal)) //Any nutrients can heal simple animals
- if(prob(50)) M.heal_organ_damage(1,0)
+/datum/reagent/vitamin/on_mob_life(mob/living/M) //everyone needs vitamins, so this works on everyone, regardless of diet or if they're a vampire.
+ M.nutrition += nutriment_factor
+ if(prob(50))
+ M.adjustBruteLoss(-1)
+ M.adjustFireLoss(-1)
+ if(ishuman(M))
+ var/mob/living/carbon/human/H = M
+ if(H.species.exotic_blood)
+ H.vessel.add_reagent(H.species.exotic_blood, 0.5)
+ else
+ if(!(H.species.flags & NO_BLOOD))
+ H.vessel.add_reagent("blood", 0.5)
..()
- return
-
/datum/reagent/soysauce
name = "Soysauce"
@@ -97,10 +86,8 @@
reagent_state = LIQUID
color = "#B31008" // rgb: 179, 16, 8
-/datum/reagent/capsaicin/on_mob_life(var/mob/living/M as mob)
- if(!M) M = holder.my_atom
- if(!data) data = 1
- switch(data)
+/datum/reagent/capsaicin/on_mob_life(mob/living/M)
+ switch(current_cycle)
if(1 to 15)
M.bodytemperature += 5 * TEMPERATURE_DAMAGE_COEFFICIENT
if(holder.has_reagent("frostoil"))
@@ -119,9 +106,7 @@
M.bodytemperature += 20 * TEMPERATURE_DAMAGE_COEFFICIENT
if(istype(M, /mob/living/carbon/slime))
M.bodytemperature += rand(20,25)
- data++
..()
- return
/datum/reagent/frostoil
name = "Frost Oil"
@@ -131,10 +116,8 @@
color = "#8BA6E9" // rgb: 139, 166, 233
process_flags = ORGANIC | SYNTHETIC
-/datum/reagent/frostoil/on_mob_life(var/mob/living/M as mob)
- if(!M) M = holder.my_atom
- if(!data) data = 1
- switch(data)
+/datum/reagent/frostoil/on_mob_life(mob/living/M)
+ switch(current_cycle)
if(1 to 15)
M.bodytemperature -= 10 * TEMPERATURE_DAMAGE_COEFFICIENT
if(holder.has_reagent("capsaicin"))
@@ -157,11 +140,9 @@
M.emote("shiver")
if(istype(M, /mob/living/carbon/slime))
M.bodytemperature -= rand(20,25)
- data++
..()
- return
-/datum/reagent/frostoil/reaction_turf(var/turf/simulated/T, var/volume)
+/datum/reagent/frostoil/reaction_turf(turf/simulated/T, volume)
if(volume >= 5)
for(var/mob/living/carbon/slime/M in T)
M.adjustToxLoss(rand(15,30))
@@ -175,12 +156,10 @@
color = "#B1B0B0"
overdose_threshold = 100
-/datum/reagent/sodiumchloride/overdose_process(var/mob/living/M as mob, severity)
+/datum/reagent/sodiumchloride/overdose_process(mob/living/M, severity)
if(prob(70))
M.adjustBrainLoss(1)
..()
- return
-
/datum/reagent/blackpepper
name = "Black Pepper"
@@ -197,10 +176,9 @@
nutriment_factor = 5 * REAGENTS_METABOLISM
color = "#302000" // rgb: 48, 32, 0
-/datum/reagent/cocoa/on_mob_life(var/mob/living/M as mob)
+/datum/reagent/cocoa/on_mob_life(mob/living/M)
M.nutrition += nutriment_factor
..()
- return
/datum/reagent/hot_coco
name = "Hot Chocolate"
@@ -210,12 +188,11 @@
nutriment_factor = 2 * REAGENTS_METABOLISM
color = "#403010" // rgb: 64, 48, 16
-/datum/reagent/hot_coco/on_mob_life(var/mob/living/M as mob)
+/datum/reagent/hot_coco/on_mob_life(mob/living/M)
if(M.bodytemperature < 310)//310 is the normal bodytemp. 310.055
M.bodytemperature = min(310, M.bodytemperature + (5 * TEMPERATURE_DAMAGE_COEFFICIENT))
M.nutrition += nutriment_factor
..()
- return
/datum/reagent/psilocybin
@@ -224,11 +201,9 @@
description = "A strong psycotropic derived from certain species of mushroom."
color = "#E700E7" // rgb: 231, 0, 231
-/datum/reagent/psilocybin/on_mob_life(var/mob/living/M as mob)
- if(!M) M = holder.my_atom
+/datum/reagent/psilocybin/on_mob_life(mob/living/M)
M.druggy = max(M.druggy, 30)
- if(!data) data = 1
- switch(data)
+ switch(current_cycle)
if(1 to 5)
if(!M.stuttering) M.stuttering = 1
M.Dizzy(5)
@@ -245,9 +220,7 @@
M.Dizzy(20)
M.druggy = max(M.druggy, 40)
if(prob(30)) M.emote(pick("twitch","giggle"))
- data++
..()
- return
/datum/reagent/sprinkles
@@ -257,15 +230,11 @@
nutriment_factor = 1 * REAGENTS_METABOLISM
color = "#FF00FF" // rgb: 255, 0, 255
-/datum/reagent/sprinkles/on_mob_life(var/mob/living/M as mob)
+/datum/reagent/sprinkles/on_mob_life(mob/living/M)
M.nutrition += nutriment_factor
- if(istype(M, /mob/living/carbon/human) && M.job in list("Security Officer", "Head of Security", "Detective", "Warden"))
- if(!M) M = holder.my_atom
+ if(istype(M, /mob/living/carbon/human) && M.job in list("Security Officer", "Security Pod Pilot", "Detective", "Warden", "Head of Security", "Brig Physician", "Internal Affairs Agent", "Magistrate"))
M.adjustBruteLoss(-1)
M.adjustFireLoss(-1)
- M.nutrition += nutriment_factor
- ..()
- return
..()
@@ -277,12 +246,11 @@
nutriment_factor = 20 * REAGENTS_METABOLISM
color = "#302000" // rgb: 48, 32, 0
-/datum/reagent/cornoil/on_mob_life(var/mob/living/M as mob)
+/datum/reagent/cornoil/on_mob_life(mob/living/M)
M.nutrition += nutriment_factor
..()
- return
-/datum/reagent/cornoil/reaction_turf(var/turf/simulated/T, var/volume)
+/datum/reagent/cornoil/reaction_turf(turf/simulated/T, volume)
if(!istype(T)) return
src = null
if(volume >= 3)
@@ -312,10 +280,9 @@
nutriment_factor = 1 * REAGENTS_METABOLISM
color = "#302000" // rgb: 48, 32, 0
-/datum/reagent/dry_ramen/on_mob_life(var/mob/living/M as mob)
+/datum/reagent/dry_ramen/on_mob_life(mob/living/M)
M.nutrition += nutriment_factor
..()
- return
/datum/reagent/hot_ramen
@@ -326,12 +293,11 @@
nutriment_factor = 5 * REAGENTS_METABOLISM
color = "#302000" // rgb: 48, 32, 0
-/datum/reagent/hot_ramen/on_mob_life(var/mob/living/M as mob)
+/datum/reagent/hot_ramen/on_mob_life(mob/living/M)
M.nutrition += nutriment_factor
if(M.bodytemperature < 310)//310 is the normal bodytemp. 310.055
M.bodytemperature = min(310, M.bodytemperature + (10 * TEMPERATURE_DAMAGE_COEFFICIENT))
..()
- return
/datum/reagent/hell_ramen
@@ -342,11 +308,10 @@
nutriment_factor = 5 * REAGENTS_METABOLISM
color = "#302000" // rgb: 48, 32, 0
-/datum/reagent/hell_ramen/on_mob_life(var/mob/living/M as mob)
+/datum/reagent/hell_ramen/on_mob_life(mob/living/M)
M.nutrition += nutriment_factor
M.bodytemperature += 10 * TEMPERATURE_DAMAGE_COEFFICIENT
..()
- return
/datum/reagent/flour
@@ -357,12 +322,11 @@
nutriment_factor = 1 * REAGENTS_METABOLISM
color = "#FFFFFF" // rgb: 0, 0, 0
-/datum/reagent/flour/on_mob_life(var/mob/living/M as mob)
+/datum/reagent/flour/on_mob_life(mob/living/M)
M.nutrition += nutriment_factor
..()
- return
-/datum/reagent/flour/reaction_turf(var/turf/T, var/volume)
+/datum/reagent/flour/reaction_turf(turf/T, volume)
src = null
if(!istype(T, /turf/space))
new /obj/effect/decal/cleanable/flour(T)
@@ -376,10 +340,9 @@
nutriment_factor = 1 * REAGENTS_METABOLISM
color = "#FFFFFF" // rgb: 0, 0, 0
-/datum/reagent/rice/on_mob_life(var/mob/living/M as mob)
+/datum/reagent/rice/on_mob_life(mob/living/M)
M.nutrition += nutriment_factor
..()
- return
/datum/reagent/cherryjelly
@@ -390,11 +353,9 @@
nutriment_factor = 1 * REAGENTS_METABOLISM
color = "#801E28" // rgb: 128, 30, 40
-/datum/reagent/cherryjelly/on_mob_life(var/mob/living/M as mob)
+/datum/reagent/cherryjelly/on_mob_life(mob/living/M)
M.nutrition += nutriment_factor
..()
- return
-
/datum/reagent/toxin/coffeepowder
name = "Coffee Grounds"
@@ -416,7 +377,6 @@
id = "fertilizer"
description = "A chemical mix good for growing plants with."
reagent_state = LIQUID
-// toxpwr = 0.2 //It's not THAT poisonous.
color = "#664330" // rgb: 102, 67, 48
/datum/reagent/toxin/fertilizer/eznutrient
@@ -440,7 +400,7 @@
color = "#FFFFFF" // rgb: 255, 255, 255
overdose_threshold = 200 // Hyperglycaemic shock
-/datum/reagent/sugar/on_mob_life(var/mob/living/M as mob)
+/datum/reagent/sugar/on_mob_life(mob/living/M)
M.drowsyness = max(0, M.drowsyness-5)
if(current_cycle >= 90)
M.jitteriness += 2
@@ -451,14 +411,13 @@
if(prob(4))
M.reagents.add_reagent("epinephrine", 1.2)
..()
- return
-/datum/reagent/sugar/overdose_start(var/mob/living/M as mob)
+/datum/reagent/sugar/overdose_start(mob/living/M)
to_chat(M, "You pass out from hyperglycemic shock!")
M.emote("collapse")
..()
-/datum/reagent/sugar/overdose_process(var/mob/living/M as mob, severity)
+/datum/reagent/sugar/overdose_process(mob/living/M, severity)
M.Paralyse(3 * severity)
M.Weaken(4 * severity)
if(prob(8))
diff --git a/code/modules/reagents/oldchem/reagents/reagents_med.dm b/code/modules/reagents/oldchem/reagents/reagents_med.dm
index ebf04593fcb..6a2c2320894 100644
--- a/code/modules/reagents/oldchem/reagents/reagents_med.dm
+++ b/code/modules/reagents/oldchem/reagents/reagents_med.dm
@@ -7,14 +7,12 @@
metabolization_rate = 0.3 // Lasts 1.5 minutes for 15 units
shock_reduction = 200
-/datum/reagent/hydrocodone/on_mob_life(var/mob/living/M as mob)
- if(!M) M = holder.my_atom
+/datum/reagent/hydrocodone/on_mob_life(mob/living/M)
if(ishuman(M))
var/mob/living/carbon/human/H = M
if(H.traumatic_shock < 100)
H.shock_stage = 0
..()
- return
/datum/reagent/sterilizine
name = "Sterilizine"
@@ -24,14 +22,14 @@
color = "#C8A5DC" // rgb: 200, 165, 220
//makes you squeaky clean
-/datum/reagent/sterilizine/reaction_mob(var/mob/living/M, var/method=TOUCH, var/volume)
+/datum/reagent/sterilizine/reaction_mob(mob/living/M, method=TOUCH, volume)
if(method == TOUCH)
M.germ_level -= min(volume*20, M.germ_level)
-/datum/reagent/sterilizine/reaction_obj(var/obj/O, var/volume)
+/datum/reagent/sterilizine/reaction_obj(obj/O, volume)
O.germ_level -= min(volume*20, O.germ_level)
-/datum/reagent/sterilizine/reaction_turf(var/turf/T, var/volume)
+/datum/reagent/sterilizine/reaction_turf(turf/T, volume)
T.germ_level -= min(volume*20, T.germ_level)
/datum/reagent/synaptizine
@@ -42,8 +40,7 @@
color = "#FA46FA"
overdose_threshold = 40
-/datum/reagent/synaptizine/on_mob_life(var/mob/living/M as mob)
- if(!M) M = holder.my_atom
+/datum/reagent/synaptizine/on_mob_life(mob/living/M)
M.drowsyness = max(0, M.drowsyness-5)
M.AdjustParalysis(-1)
M.AdjustStunned(-1)
@@ -52,9 +49,8 @@
if(prob(50))
M.adjustBrainLoss(-1.0)
..()
- return
-/datum/reagent/synaptizine/overdose_process(var/mob/living/M as mob, severity)
+/datum/reagent/synaptizine/overdose_process(mob/living/M, severity)
var/effect = ..()
if(severity == 1)
if(effect <= 1)
@@ -82,8 +78,7 @@
reagent_state = LIQUID
color = "#C8A5DC" // rgb: 200, 165, 220
-/datum/reagent/mitocholide/on_mob_life(var/mob/living/M as mob)
- if(!M) M = holder.my_atom
+/datum/reagent/mitocholide/on_mob_life(mob/living/M)
if(ishuman(M))
var/mob/living/carbon/human/H = M
@@ -93,9 +88,8 @@
if(I.damage > 0)
I.damage = max(I.damage-0.4, 0)
..()
- return
-/datum/reagent/mitocholide/reaction_obj(var/obj/O, var/volume)
+/datum/reagent/mitocholide/reaction_obj(obj/O, volume)
if(istype(O, /obj/item/organ))
var/obj/item/organ/Org = O
Org.rejuvenate()
@@ -107,8 +101,7 @@
reagent_state = LIQUID
color = "#0000C8" // rgb: 200, 165, 220
-/datum/reagent/cryoxadone/on_mob_life(var/mob/living/M as mob)
- if(!M) M = holder.my_atom
+/datum/reagent/cryoxadone/on_mob_life(mob/living/M)
if(M.bodytemperature < 265)
M.adjustCloneLoss(-4)
M.adjustOxyLoss(-10)
@@ -117,7 +110,6 @@
M.adjustFireLoss(-12)
M.status_flags &= ~DISFIGURED
..()
- return
/datum/reagent/rezadone
name = "Rezadone"
@@ -134,7 +126,6 @@
M.adjustFireLoss(-1)
M.status_flags &= ~DISFIGURED
..()
- return
/datum/reagent/rezadone/overdose_process(mob/living/M, severity)
M.adjustToxLoss(1)
diff --git a/code/modules/reagents/oldchem/reagents/reagents_misc.dm b/code/modules/reagents/oldchem/reagents/reagents_misc.dm
index e6064e54347..c4fec24d054 100644
--- a/code/modules/reagents/oldchem/reagents/reagents_misc.dm
+++ b/code/modules/reagents/oldchem/reagents/reagents_misc.dm
@@ -98,7 +98,7 @@
reagent_state = SOLID
color = "#1C1300" // rgb: 30, 20, 0
-/datum/reagent/carbon/reaction_turf(var/turf/T, var/volume)
+/datum/reagent/carbon/reaction_turf(turf/T, volume)
src = null
// Only add one dirt per turf. Was causing people to crash.
if(!istype(T, /turf/space) && !(locate(/obj/effect/decal/cleanable/dirt) in T))
@@ -152,8 +152,6 @@
color = "#C8A5DC" // rgb: 200, 165, 220
/datum/reagent/iron/on_mob_life(mob/living/M)
- if(!M)
- M = holder.my_atom
if(ishuman(M))
var/mob/living/carbon/human/H = M
if(!H.species.exotic_blood && !(H.species.flags & NO_BLOOD))
diff --git a/code/modules/reagents/oldchem/reagents/reagents_toxin.dm b/code/modules/reagents/oldchem/reagents/reagents_toxin.dm
index f9f3c75726b..a11232427ea 100644
--- a/code/modules/reagents/oldchem/reagents/reagents_toxin.dm
+++ b/code/modules/reagents/oldchem/reagents/reagents_toxin.dm
@@ -5,12 +5,9 @@
reagent_state = LIQUID
color = "#CF3600" // rgb: 207, 54, 0
-/datum/reagent/toxin/on_mob_life(var/mob/living/M as mob)
- if(!M) M = holder.my_atom
+/datum/reagent/toxin/on_mob_life(mob/living/M)
M.adjustToxLoss(2)
..()
- return
-
/datum/reagent/spider_venom
name = "Spider venom"
@@ -19,12 +16,9 @@
reagent_state = LIQUID
color = "#CF3600" // rgb: 207, 54, 0
-/datum/reagent/spider_venom/on_mob_life(var/mob/living/M as mob)
- if(!M) M = holder.my_atom
- M.adjustToxLoss(1.5)
- ..()
- return
-
+/datum/reagent/spider_venom/on_mob_life(mob/living/M)
+ M.adjustToxLoss(1.5)
+ ..()
/datum/reagent/plasticide
name = "Plasticide"
@@ -33,11 +27,9 @@
reagent_state = LIQUID
color = "#CF3600" // rgb: 207, 54, 0
-/datum/reagent/plasticide/on_mob_life(var/mob/living/M as mob)
- if(!M) M = holder.my_atom
+/datum/reagent/plasticide/on_mob_life(mob/living/M)
M.adjustToxLoss(1.5)
..()
- return
/datum/reagent/minttoxin
@@ -47,13 +39,10 @@
reagent_state = LIQUID
color = "#CF3600" // rgb: 207, 54, 0
-/datum/reagent/minttoxin/on_mob_life(var/mob/living/M as mob)
- if(!M) M = holder.my_atom
+/datum/reagent/minttoxin/on_mob_life(mob/living/M)
if(FAT in M.mutations)
M.gib()
..()
- return
-
/datum/reagent/slimejelly
name = "Slime Jelly"
@@ -62,14 +51,13 @@
reagent_state = LIQUID
color = "#801E28" // rgb: 128, 30, 40
-/datum/reagent/slimejelly/on_mob_life(var/mob/living/M as mob)
+/datum/reagent/slimejelly/on_mob_life(mob/living/M)
if(prob(10))
to_chat(M, "\red Your insides are burning!")
M.adjustToxLoss(rand(20,60)*REM)
else if(prob(40))
M.adjustBruteLoss(-5*REM)
..()
- return
/datum/reagent/slimetoxin
name = "Mutation Toxin"
@@ -78,8 +66,7 @@
reagent_state = LIQUID
color = "#13BC5E" // rgb: 19, 188, 94
-/datum/reagent/slimetoxin/on_mob_life(var/mob/living/M as mob)
- if(!M) M = holder.my_atom
+/datum/reagent/slimetoxin/on_mob_life(mob/living/M)
if(ishuman(M))
var/mob/living/carbon/human/human = M
if(human.species.name != "Shadow")
@@ -89,7 +76,6 @@
to_chat(M, "Aside from your new traits, you are mentally unchanged and retain your prior obligations.")
human.set_species("Shadow")
..()
- return
/datum/reagent/aslimetoxin
name = "Advanced Mutation Toxin"
@@ -98,7 +84,7 @@
reagent_state = LIQUID
color = "#13BC5E" // rgb: 19, 188, 94
-/datum/reagent/aslimetoxin/reaction_mob(mob/M, method=TOUCH, reac_volume)
+/datum/reagent/aslimetoxin/reaction_mob(mob/M, method=TOUCH, volume)
if(method != TOUCH)
M.ForceContractDisease(new /datum/disease/transformation/slime(0))
@@ -112,13 +98,10 @@
metabolization_rate = 0.2
penetrates_skin = 1
-/datum/reagent/mercury/on_mob_life(var/mob/living/M as mob)
- if(!M) M = holder.my_atom
+/datum/reagent/mercury/on_mob_life(mob/living/M)
if(prob(70))
M.adjustBrainLoss(1)
..()
- return
-
/datum/reagent/chlorine
name = "Chlorine"
@@ -129,11 +112,9 @@
penetrates_skin = 1
process_flags = ORGANIC | SYNTHETIC
-/datum/reagent/chlorine/on_mob_life(var/mob/living/M as mob)
- if(!M) M = holder.my_atom
+/datum/reagent/chlorine/on_mob_life(mob/living/M)
M.adjustFireLoss(1)
..()
- return
/datum/reagent/fluorine
name = "Fluorine"
@@ -144,13 +125,10 @@
penetrates_skin = 1
process_flags = ORGANIC | SYNTHETIC
-/datum/reagent/fluorine/on_mob_life(var/mob/living/M as mob)
- if(!M) M = holder.my_atom
+/datum/reagent/fluorine/on_mob_life(mob/living/M)
M.adjustFireLoss(1)
M.adjustToxLoss(1*REM)
..()
- return
-
/datum/reagent/radium
name = "Radium"
@@ -161,13 +139,12 @@
metabolization_rate = 0.4
penetrates_skin = 1
-/datum/reagent/radium/on_mob_life(var/mob/living/M as mob)
- if(!M) M = holder.my_atom
+/datum/reagent/radium/on_mob_life(mob/living/M)
if(M.radiation < 80)
M.apply_effect(4, IRRADIATE, negate_armor = 1)
..()
-/datum/reagent/radium/reaction_turf(var/turf/T, var/volume)
+/datum/reagent/radium/reaction_turf(turf/T, volume)
src = null
if(volume >= 3)
if(!istype(T, /turf/space))
@@ -183,7 +160,7 @@
color = "#04DF27"
metabolization_rate = 0.3
-/datum/reagent/mutagen/reaction_mob(var/mob/M, var/method=TOUCH, var/volume)
+/datum/reagent/mutagen/reaction_mob(mob/M, method=TOUCH, volume)
if(!..()) return
if(!M.dna) return //No robots, AIs, aliens, Ians or other mobs should be affected by this.
src = null
@@ -191,16 +168,13 @@
randmutb(M)
domutcheck(M, null)
M.UpdateAppearance()
- return
-/datum/reagent/mutagen/on_mob_life(var/mob/living/M as mob)
+/datum/reagent/mutagen/on_mob_life(mob/living/M)
if(!M.dna) return //No robots, AIs, aliens, Ians or other mobs should be affected by this.
- if(!M) M = holder.my_atom
M.apply_effect(2*REM, IRRADIATE, negate_armor = 1)
if(prob(4))
randmutb(M)
..()
- return
/datum/reagent/uranium
@@ -210,13 +184,11 @@
reagent_state = SOLID
color = "#B8B8C0" // rgb: 184, 184, 192
-/datum/reagent/uranium/on_mob_life(var/mob/living/M as mob)
- if(!M) M = holder.my_atom
+/datum/reagent/uranium/on_mob_life(mob/living/M)
M.apply_effect(2, IRRADIATE, negate_armor = 1)
..()
- return
-/datum/reagent/uranium/reaction_turf(var/turf/T, var/volume)
+/datum/reagent/uranium/reaction_turf(turf/T, volume)
src = null
if(volume >= 3)
if(!istype(T, /turf/space))
@@ -231,13 +203,9 @@
color = "#52685D"
metabolization_rate = 0.2
-/datum/reagent/lexorin/on_mob_life(var/mob/living/M as mob)
- if(M.stat == 2.0)
- return
- if(!M) M = holder.my_atom
+/datum/reagent/lexorin/on_mob_life(mob/living/M)
M.adjustToxLoss(1)
..()
- return
/datum/reagent/sacid
@@ -248,13 +216,11 @@
color = "#00D72B"
process_flags = ORGANIC | SYNTHETIC
-/datum/reagent/sacid/on_mob_life(var/mob/living/M as mob)
- if(!M) M = holder.my_atom
+/datum/reagent/sacid/on_mob_life(mob/living/M)
M.adjustFireLoss(1)
..()
- return
-/datum/reagent/sacid/reaction_mob(var/mob/living/M, var/method=TOUCH, var/volume)
+/datum/reagent/sacid/reaction_mob(mob/living/M, method=TOUCH, volume)
if(!istype(M, /mob/living))
return
if(method == TOUCH)
@@ -307,7 +273,7 @@
else
M.take_organ_damage(0,20)
-/datum/reagent/sacid/reaction_obj(var/obj/O, var/volume)
+/datum/reagent/sacid/reaction_obj(obj/O, volume)
if((istype(O,/obj/item) || istype(O,/obj/effect/glowshroom)) && prob(40))
if(!O.unacidable)
var/obj/effect/decal/cleanable/molten_item/I = new/obj/effect/decal/cleanable/molten_item(O.loc)
@@ -322,14 +288,15 @@
id = "hell_water"
description = "YOUR FLESH! IT BURNS!"
process_flags = ORGANIC | SYNTHETIC //Admin-bus has no brakes! KILL THEM ALL.
+ metabolization_rate = 1
-/datum/reagent/hellwater/on_mob_life(var/mob/living/M as mob)
- M.fire_stacks = min(5,M.fire_stacks + 3)
+/datum/reagent/hellwater/on_mob_life(mob/living/M)
+ M.fire_stacks = min(5, M.fire_stacks + 3)
M.IgniteMob() //Only problem with igniting people is currently the commonly availible fire suits make you immune to being on fire
M.adjustToxLoss(1)
M.adjustFireLoss(1) //Hence the other damages... ain't I a bastard?
M.adjustBrainLoss(5)
- holder.remove_reagent(src.id, 1)
+ ..()
/datum/reagent/carpotoxin
@@ -339,12 +306,9 @@
reagent_state = LIQUID
color = "#003333" // rgb: 0, 51, 51
-/datum/reagent/carpotoxin/on_mob_life(var/mob/living/M as mob)
- if(!M) M = holder.my_atom
+/datum/reagent/carpotoxin/on_mob_life(mob/living/M)
M.adjustToxLoss(2*REM)
..()
- return
-
/datum/reagent/staminatoxin
name = "Tirizene"
@@ -354,7 +318,7 @@
color = "#6E2828"
data = 13
-/datum/reagent/staminatoxin/on_mob_life(var/mob/living/M)
+/datum/reagent/staminatoxin/on_mob_life(mob/living/M)
M.adjustStaminaLoss(REM * data)
data = max(data - 1, 3)
..()
@@ -366,13 +330,11 @@
description = "A toxic spore cloud which blocks vision when ingested."
color = "#9ACD32"
-/datum/reagent/spores/on_mob_life(var/mob/living/M as mob)
+/datum/reagent/spores/on_mob_life(mob/living/M)
M.adjustToxLoss(1)
M.damageoverlaytemp = 60
M.eye_blurry = max(M.eye_blurry, 3)
..()
- return
-
/datum/reagent/beer2 //disguised as normal beer for use by emagged brobots
name = "Beer"
@@ -381,18 +343,14 @@
color = "#664300" // rgb: 102, 67, 0
metabolization_rate = 1.5 * REAGENTS_METABOLISM
-/datum/reagent/beer2/on_mob_life(var/mob/living/M as mob)
- if(!data)
- data = 1
- switch(data)
+/datum/reagent/beer2/on_mob_life(mob/living/M)
+ switch(current_cycle)
if(1 to 50)
- M.sleeping += 1
+ M.AdjustSleeping(1)
if(51 to INFINITY)
- M.sleeping += 1
- M.adjustToxLoss((data - 50)*REM)
- data++
+ M.AdjustSleeping(1)
+ M.adjustToxLoss((current_cycle - 50)*REM)
..()
- return
///////////////////////////////////////////////////////////////////////////////////////////////////////////////
/datum/reagent/condensedcapsaicin
@@ -402,7 +360,7 @@
reagent_state = LIQUID
color = "#B31008" // rgb: 179, 16, 8
-/datum/reagent/condensedcapsaicin/reaction_mob(var/mob/living/M, var/method=TOUCH, var/volume)
+/datum/reagent/condensedcapsaicin/reaction_mob(mob/living/M, method=TOUCH, volume)
if(!istype(M, /mob/living))
return
if(method == TOUCH)
@@ -459,9 +417,7 @@
victim.Weaken(5)
victim.drop_item()
-/datum/reagent/condensedcapsaicin/on_mob_life(var/mob/living/M as mob)
- if(!M) M = holder.my_atom
+/datum/reagent/condensedcapsaicin/on_mob_life(mob/living/M)
if(prob(5))
M.visible_message("[M] [pick("dry heaves!","coughs!","splutters!")]")
- ..()
- return
\ No newline at end of file
+ ..()
\ No newline at end of file
diff --git a/code/modules/reagents/oldchem/reagents/reagents_water.dm b/code/modules/reagents/oldchem/reagents/reagents_water.dm
index beb0892067a..7df0fd3fdba 100644
--- a/code/modules/reagents/oldchem/reagents/reagents_water.dm
+++ b/code/modules/reagents/oldchem/reagents/reagents_water.dm
@@ -16,7 +16,7 @@
var/cooling_temperature = 2
process_flags = ORGANIC | SYNTHETIC
-/datum/reagent/water/reaction_mob(var/mob/living/M, var/method=TOUCH, var/volume)
+/datum/reagent/water/reaction_mob(mob/living/M, method=TOUCH, volume)
if(!istype(M, /mob/living))
return
@@ -27,8 +27,9 @@
M.ExtinguishMob()
return
-/datum/reagent/water/reaction_turf(var/turf/simulated/T, var/volume)
- if(!istype(T)) return
+/datum/reagent/water/reaction_turf(turf/simulated/T, volume)
+ if(!istype(T))
+ return
src = null
if(volume >= 3)
T.MakeSlippery()
@@ -43,9 +44,8 @@
lowertemp.react()
T.assume_air(lowertemp)
qdel(hotspot)
- return
-/datum/reagent/water/reaction_obj(var/obj/O, var/volume)
+/datum/reagent/water/reaction_obj(obj/O, volume)
src = null
var/turf/T = get_turf(O)
var/hotspot = (locate(/obj/effect/hotspot) in T)
@@ -73,7 +73,7 @@
reagent_state = LIQUID
color = "#1BB1AB"
-/datum/reagent/lube/reaction_turf(var/turf/simulated/T, var/volume)
+/datum/reagent/lube/reaction_turf(turf/simulated/T, volume)
if(!istype(T)) return
src = null
if(volume >= 1)
@@ -87,7 +87,7 @@
reagent_state = LIQUID
color = "#61C2C2"
-/datum/reagent/space_cleaner/reaction_obj(var/obj/O, var/volume)
+/datum/reagent/space_cleaner/reaction_obj(obj/O, volume)
if(O && !istype(O, /atom/movable/lighting_overlay))
O.color = initial(O.color)
if(istype(O,/obj/effect/decal/cleanable))
@@ -96,7 +96,7 @@
if(O)
O.clean_blood()
-/datum/reagent/space_cleaner/reaction_turf(var/turf/T, var/volume)
+/datum/reagent/space_cleaner/reaction_turf(turf/T, volume)
if(volume >= 1)
if(T)
T.color = initial(T.color)
@@ -110,7 +110,7 @@
var/turf/simulated/S = T
S.dirt = 0
-/datum/reagent/space_cleaner/reaction_mob(var/mob/M, var/method=TOUCH, var/volume)
+/datum/reagent/space_cleaner/reaction_mob(mob/M, method=TOUCH, volume)
if(iscarbon(M))
var/mob/living/carbon/C = M
if(istype(M,/mob/living/carbon/human))
@@ -151,7 +151,7 @@
reagent_state = LIQUID
color = "#C80000" // rgb: 200, 0, 0
-/datum/reagent/blood/reaction_mob(mob/M, method=TOUCH, reac_volume)
+/datum/reagent/blood/reaction_mob(mob/M, method=TOUCH, volume)
if(data && data["viruses"])
for(var/datum/disease/D in data["viruses"])
@@ -194,15 +194,15 @@
color = mix_data["blood_colour"]
return 1
-/datum/reagent/blood/on_update(var/atom/A)
+/datum/reagent/blood/on_update(atom/A)
if(data["blood_colour"])
color = data["blood_colour"]
return ..()
-/datum/reagent/blood/reaction_turf(turf/simulated/T, reac_volume)//splash the blood all over the place
+/datum/reagent/blood/reaction_turf(turf/simulated/T, volume)//splash the blood all over the place
if(!istype(T))
return
- if(reac_volume < 3)
+ if(volume < 3)
return
if(!data["donor"] || istype(data["donor"], /mob/living/carbon/human))
var/obj/effect/decal/cleanable/blood/blood_prop = locate() in T //find some blood here
@@ -232,7 +232,7 @@
id = "vaccine"
color = "#C81040" // rgb: 200, 16, 64
-/datum/reagent/vaccine/reaction_mob(mob/M, method=TOUCH, reac_volume)
+/datum/reagent/vaccine/reaction_mob(mob/M, method=TOUCH, volume)
if(islist(data) && (method == INGEST))
for(var/datum/disease/D in M.viruses)
if(D.GetDiseaseID() in data)
@@ -250,21 +250,19 @@
reagent_state = LIQUID
color = "#757547"
-/datum/reagent/fishwater/reaction_mob(var/mob/M, var/method=TOUCH, var/volume)
+/datum/reagent/fishwater/reaction_mob(mob/M, method=TOUCH, volume)
if(!istype(M, /mob/living))
return
if(method == INGEST)
to_chat(M, "Oh god, why did you drink that?")
-/datum/reagent/fishwater/on_mob_life(var/mob/living/M as mob)
- if(!M) M = holder.my_atom
+/datum/reagent/fishwater/on_mob_life(mob/living/M)
if(prob(30)) // Nasty, you drank this stuff? 30% chance of the fakevomit (non-stunning version)
if(prob(50)) // 50/50 chance of green vomit vs normal vomit
M.fakevomit(1)
else
M.fakevomit(0)
..()
- return
/datum/reagent/fishwater/toiletwater
name = "Toilet Water"
@@ -273,7 +271,7 @@
reagent_state = LIQUID
color = "#757547"
-/datum/reagent/fishwater/toiletwater/reaction_mob(var/mob/M, var/method=TOUCH, var/volume) //For shennanigans
+/datum/reagent/fishwater/toiletwater/reaction_mob(mob/M, method=TOUCH, volume) //For shennanigans
return
/datum/reagent/holywater
@@ -284,18 +282,14 @@
color = "#0064C8" // rgb: 0, 100, 200
process_flags = ORGANIC | SYNTHETIC
-/datum/reagent/holywater/on_mob_life(var/mob/living/M as mob)
- if(!data) data = 1
- data++
+/datum/reagent/holywater/on_mob_life(mob/living/M)
M.jitteriness = max(M.jitteriness-5,0)
- if(data >= 30) // 12 units, 60 seconds @ metabolism 0.4 units & tick rate 2.0 sec
- if(!M.stuttering) M.stuttering = 1
+ if(current_cycle >= 30) // 12 units, 60 seconds @ metabolism 0.4 units & tick rate 2.0 sec
M.stuttering += 4
M.Dizzy(5)
if(iscultist(M) && prob(5))
M.say(pick("Av'te Nar'sie","Pa'lid Mors","INO INO ORA ANA","SAT ANA!","Daim'niodeis Arc'iai Le'eones","Egkau'haom'nai en Chaous","Ho Diak'nos tou Ap'iron","R'ge Na'sie","Diabo us Vo'iscum","Si gn'um Co'nu"))
- if(data >= 75 && prob(33)) // 30 units, 150 seconds
- if(!M.confused) M.confused = 1
+ if(current_cycle >= 75 && prob(33)) // 30 units, 150 seconds
M.confused += 3
if(isvampirethrall(M))
ticker.mode.remove_vampire_mind(M.mind)
@@ -312,7 +306,7 @@
M.confused = 0
return
if(ishuman(M) && M.mind && M.mind.vampire && !M.mind.vampire.get_ability(/datum/vampire_passive/full) && prob(80))
- switch(data)
+ switch(current_cycle)
if(1 to 4)
to_chat(M, "Something sizzles in your veins!")
M.mind.vampire.nullified = max(5, M.mind.vampire.nullified + 2)
@@ -331,7 +325,7 @@
..()
-/datum/reagent/holywater/reaction_mob(var/mob/living/M, var/method=TOUCH, var/volume)
+/datum/reagent/holywater/reaction_mob(mob/living/M, method=TOUCH, volume)
// Vampires have their powers weakened by holy water applied to the skin.
if(ishuman(M) && M.mind && M.mind.vampire && !M.mind.vampire.get_ability(/datum/vampire_passive/full))
var/mob/living/carbon/human/H=M
@@ -347,7 +341,7 @@
M.mind.vampire.nullified = max(5, M.mind.vampire.nullified + 2)
-/datum/reagent/holywater/reaction_turf(var/turf/simulated/T, var/volume)
+/datum/reagent/holywater/reaction_turf(turf/simulated/T, volume)
..()
if(!istype(T)) return
if(volume>=10)
@@ -363,7 +357,7 @@
description = "You don't even want to think about what's in here."
reagent_state = LIQUID
-/datum/reagent/liquidgibs/reaction_turf(var/turf/T, var/volume) //yes i took it from synthflesh...
+/datum/reagent/liquidgibs/reaction_turf(turf/T, volume) //yes i took it from synthflesh...
src = null
if(volume >= 5)
new /obj/effect/decal/cleanable/blood/gibs/cleangibs(T)
@@ -386,11 +380,11 @@
reagent_state = LIQUID
color = "#A70FFF"
-/datum/reagent/drying_agent/reaction_turf(turf/simulated/T, reac_volume)
+/datum/reagent/drying_agent/reaction_turf(turf/simulated/T, volume)
if(istype(T) && T.wet)
T.MakeDry(TURF_WET_WATER)
-/datum/reagent/drying_agent/reaction_obj(obj/O, reac_volume)
+/datum/reagent/drying_agent/reaction_obj(obj/O, volume)
if(istype(O, /obj/item/clothing/shoes/galoshes))
var/t_loc = get_turf(O)
qdel(O)
diff --git a/code/modules/reagents/reagent_containers.dm b/code/modules/reagents/reagent_containers.dm
index 7a3ec304296..f977047d700 100644
--- a/code/modules/reagents/reagent_containers.dm
+++ b/code/modules/reagents/reagent_containers.dm
@@ -56,7 +56,7 @@
reagents.handle_reactions()
..()
-/obj/item/weapon/reagent_containers/attack_self(mob/user as mob)
+/obj/item/weapon/reagent_containers/attack_self(mob/user)
return
// this prevented pills, food, and other things from being picked up by bags.
@@ -69,7 +69,7 @@
/obj/item/weapon/reagent_containers/afterattack(obj/target, mob/user , flag)
return
-/obj/item/weapon/reagent_containers/proc/reagentlist(var/obj/item/weapon/reagent_containers/snack) //Attack logs for regents in pills
+/obj/item/weapon/reagent_containers/proc/reagentlist(obj/item/weapon/reagent_containers/snack) //Attack logs for regents in pills
var/data
if(snack && snack.reagents && snack.reagents.reagent_list && snack.reagents.reagent_list.len) //find a reagent list if there is and check if it has entries
for(var/datum/reagent/R in snack.reagents.reagent_list) //no reagents will be left behind
diff --git a/code/modules/reagents/reagent_containers/blood_pack.dm b/code/modules/reagents/reagent_containers/blood_pack.dm
index 3312ec09af8..a04087603ad 100644
--- a/code/modules/reagents/reagent_containers/blood_pack.dm
+++ b/code/modules/reagents/reagent_containers/blood_pack.dm
@@ -7,22 +7,25 @@
var/blood_type = null
- New()
- ..()
- if(blood_type != null)
- name = "BloodPack [blood_type]"
- reagents.add_reagent("blood", 200, list("donor"=null,"viruses"=null,"blood_DNA"=null,"blood_type"=blood_type,"resistances"=null,"trace_chem"=null))
- update_icon()
-
- on_reagent_change()
+/obj/item/weapon/reagent_containers/blood/New()
+ ..()
+ if(blood_type != null)
+ name = "BloodPack [blood_type]"
+ reagents.add_reagent("blood", 200, list("donor"=null,"viruses"=null,"blood_DNA"=null,"blood_type"=blood_type,"resistances"=null,"trace_chem"=null))
update_icon()
+/obj/item/weapon/reagent_containers/blood/on_reagent_change()
update_icon()
- var/percent = round((reagents.total_volume / volume) * 100)
- switch(percent)
- if(0 to 9) icon_state = "empty"
- if(10 to 50) icon_state = "half"
- if(51 to INFINITY) icon_state = "full"
+
+/obj/item/weapon/reagent_containers/blood/update_icon()
+ var/percent = round((reagents.total_volume / volume) * 100)
+ switch(percent)
+ if(0 to 9)
+ icon_state = "empty"
+ if(10 to 50)
+ icon_state = "half"
+ if(51 to INFINITY)
+ icon_state = "full"
/obj/item/weapon/reagent_containers/blood/random/New()
blood_type = pick("A+", "A-", "B+", "B-", "O+", "O-")
diff --git a/code/modules/reagents/reagent_containers/borghydro.dm b/code/modules/reagents/reagent_containers/borghydro.dm
index 0d97be00a17..6f53f4c423b 100644
--- a/code/modules/reagents/reagent_containers/borghydro.dm
+++ b/code/modules/reagents/reagent_containers/borghydro.dm
@@ -60,7 +60,7 @@
return 1
// Use this to add more chemicals for the borghypo to produce.
-/obj/item/weapon/reagent_containers/borghypo/proc/add_reagent(var/reagent)
+/obj/item/weapon/reagent_containers/borghypo/proc/add_reagent(reagent)
reagent_ids |= reagent
var/datum/reagents/RG = new(30)
RG.my_atom = src
@@ -69,7 +69,7 @@
var/datum/reagents/R = reagent_list[reagent_list.len]
R.add_reagent(reagent, 30)
-/obj/item/weapon/reagent_containers/borghypo/attack(mob/living/M as mob, mob/user as mob)
+/obj/item/weapon/reagent_containers/borghypo/attack(mob/living/M, mob/user)
var/datum/reagents/R = reagent_list[mode]
if(!R.total_volume)
to_chat(user, "The injector is empty.")
@@ -94,7 +94,7 @@
to_chat(user, "[trans] units injected. [R.total_volume] units remaining.")
return
-/obj/item/weapon/reagent_containers/borghypo/attack_self(mob/user as mob)
+/obj/item/weapon/reagent_containers/borghypo/attack_self(mob/user)
playsound(src.loc, 'sound/effects/pop.ogg', 50, 0) //Change the mode
mode++
if(mode > reagent_list.len)
diff --git a/code/modules/reagents/reagent_containers/dropper.dm b/code/modules/reagents/reagent_containers/dropper.dm
index d37f607608b..12334c2941d 100644
--- a/code/modules/reagents/reagent_containers/dropper.dm
+++ b/code/modules/reagents/reagent_containers/dropper.dm
@@ -11,111 +11,110 @@
volume = 5
var/filled = 0
- afterattack(obj/target, mob/user , flag)
- if(!target.reagents) return
-
- if(filled)
-
- if(target.reagents.total_volume >= target.reagents.maximum_volume)
- to_chat(user, "\red [target] is full.")
- return
-
- if(!target.is_open_container() && !ismob(target) && !istype(target,/obj/item/weapon/reagent_containers/food) && !istype(target, /obj/item/clothing/mask/cigarette)) //You can inject humans and food but you cant remove the shit.
- to_chat(user, "\red You cannot directly fill this object.")
- return
-
- var/trans = 0
-
- if(ismob(target))
- if(istype(target , /mob/living/carbon/human))
- var/mob/living/carbon/human/victim = target
-
- var/obj/item/safe_thing = null
- if( victim.wear_mask )
- if( victim.wear_mask.flags & MASKCOVERSEYES )
- safe_thing = victim.wear_mask
- if( victim.head )
- if( victim.head.flags & MASKCOVERSEYES )
- safe_thing = victim.head
- if(victim.glasses)
- if( !safe_thing )
- safe_thing = victim.glasses
-
- if(safe_thing)
- if(!safe_thing.reagents)
- safe_thing.create_reagents(100)
- trans = src.reagents.trans_to(safe_thing, amount_per_transfer_from_this)
-
- for(var/mob/O in viewers(world.view, user))
- O.show_message(text("\red [] tries to squirt something into []'s eyes, but fails!", user, target), 1)
- spawn(5)
- src.reagents.reaction(safe_thing, TOUCH)
-
-
-
- to_chat(user, "\blue You transfer [trans] units of the solution.")
- if(src.reagents.total_volume<=0)
- filled = 0
- icon_state = "[initial(icon_state)]"
- return
-
-
- for(var/mob/O in viewers(world.view, user))
- O.show_message(text("\red [] squirts something into []'s eyes!", user, target), 1)
- src.reagents.reaction(target, TOUCH)
-
- var/mob/living/M = target
-
- var/list/injected = list()
- for(var/datum/reagent/R in src.reagents.reagent_list)
- injected += R.name
- var/contained = english_list(injected)
- M.attack_log += text("\[[time_stamp()]\] Has been squirted with [src.name] by [key_name(user)]. Reagents: [contained]")
- user.attack_log += text("\[[time_stamp()]\] Used the [src.name] to squirt [key_name(M)]. Reagents: [contained]")
- if(M.ckey)
- msg_admin_attack("[key_name_admin(user)] squirted [key_name_admin(M)] with [src.name]. Reagents: [contained] (INTENT: [uppertext(user.a_intent)])")
- if(!iscarbon(user))
- M.LAssailant = null
- else
- M.LAssailant = user
-
- // /vg/: Logging transfers of bad things
- if(isobj(target))
- if(target.reagents_to_log.len)
- var/list/badshit=list()
- for(var/bad_reagent in target.reagents_to_log)
- if(reagents.has_reagent(bad_reagent))
- badshit += reagents_to_log[bad_reagent]
- if(badshit.len)
- var/hl = "([english_list(badshit)])"
- message_admins("[key_name_admin(user)] added [reagents.get_reagent_ids(1)] to \a [target] with [src].[hl]")
- log_game("[key_name(user)] added [reagents.get_reagent_ids(1)] to \a [target] with [src].")
-
- trans = src.reagents.trans_to(target, amount_per_transfer_from_this)
- to_chat(user, "\blue You transfer [trans] units of the solution.")
- if(src.reagents.total_volume<=0)
- filled = 0
- icon_state = "[initial(icon_state)]"
-
- else
-
- if(!target.is_open_container() && !istype(target,/obj/structure/reagent_dispensers))
- to_chat(user, "\red You cannot directly remove reagents from [target].")
- return
-
- if(!target.reagents.total_volume)
- to_chat(user, "\red [target] is empty.")
- return
-
- var/trans = target.reagents.trans_to(src, amount_per_transfer_from_this)
-
- to_chat(user, "\blue You fill the [src] with [trans] units of the solution.")
-
- filled = 1
- icon_state = "[initial(icon_state)][filled]"
-
+/obj/item/weapon/reagent_containers/dropper/afterattack(obj/target, mob/user , flag)
+ if(!target.reagents)
return
+ if(filled)
+
+ if(target.reagents.total_volume >= target.reagents.maximum_volume)
+ to_chat(user, "\red [target] is full.")
+ return
+
+ if(!target.is_open_container() && !ismob(target) && !istype(target,/obj/item/weapon/reagent_containers/food) && !istype(target, /obj/item/clothing/mask/cigarette)) //You can inject humans and food but you cant remove the shit.
+ to_chat(user, "\red You cannot directly fill this object.")
+ return
+
+ var/trans = 0
+
+ if(ismob(target))
+ if(istype(target , /mob/living/carbon/human))
+ var/mob/living/carbon/human/victim = target
+
+ var/obj/item/safe_thing = null
+ if( victim.wear_mask )
+ if( victim.wear_mask.flags & MASKCOVERSEYES )
+ safe_thing = victim.wear_mask
+ if( victim.head )
+ if( victim.head.flags & MASKCOVERSEYES )
+ safe_thing = victim.head
+ if(victim.glasses)
+ if( !safe_thing )
+ safe_thing = victim.glasses
+
+ if(safe_thing)
+ if(!safe_thing.reagents)
+ safe_thing.create_reagents(100)
+ trans = src.reagents.trans_to(safe_thing, amount_per_transfer_from_this)
+
+ for(var/mob/O in viewers(world.view, user))
+ O.show_message(text("\red [] tries to squirt something into []'s eyes, but fails!", user, target), 1)
+ spawn(5)
+ src.reagents.reaction(safe_thing, TOUCH)
+
+
+
+ to_chat(user, "\blue You transfer [trans] units of the solution.")
+ if(src.reagents.total_volume<=0)
+ filled = 0
+ icon_state = "[initial(icon_state)]"
+ return
+
+
+ for(var/mob/O in viewers(world.view, user))
+ O.show_message(text("\red [] squirts something into []'s eyes!", user, target), 1)
+ src.reagents.reaction(target, TOUCH)
+
+ var/mob/living/M = target
+
+ var/list/injected = list()
+ for(var/datum/reagent/R in src.reagents.reagent_list)
+ injected += R.name
+ var/contained = english_list(injected)
+ M.attack_log += text("\[[time_stamp()]\] Has been squirted with [src.name] by [key_name(user)]. Reagents: [contained]")
+ user.attack_log += text("\[[time_stamp()]\] Used the [src.name] to squirt [key_name(M)]. Reagents: [contained]")
+ if(M.ckey)
+ msg_admin_attack("[key_name_admin(user)] squirted [key_name_admin(M)] with [src.name]. Reagents: [contained] (INTENT: [uppertext(user.a_intent)])")
+ if(!iscarbon(user))
+ M.LAssailant = null
+ else
+ M.LAssailant = user
+
+ // /vg/: Logging transfers of bad things
+ if(isobj(target))
+ if(target.reagents_to_log.len)
+ var/list/badshit=list()
+ for(var/bad_reagent in target.reagents_to_log)
+ if(reagents.has_reagent(bad_reagent))
+ badshit += reagents_to_log[bad_reagent]
+ if(badshit.len)
+ var/hl = "([english_list(badshit)])"
+ message_admins("[key_name_admin(user)] added [reagents.get_reagent_ids(1)] to \a [target] with [src].[hl]")
+ log_game("[key_name(user)] added [reagents.get_reagent_ids(1)] to \a [target] with [src].")
+
+ trans = src.reagents.trans_to(target, amount_per_transfer_from_this)
+ to_chat(user, "\blue You transfer [trans] units of the solution.")
+ if(src.reagents.total_volume<=0)
+ filled = 0
+ icon_state = "[initial(icon_state)]"
+
+ else
+
+ if(!target.is_open_container() && !istype(target,/obj/structure/reagent_dispensers))
+ to_chat(user, "\red You cannot directly remove reagents from [target].")
+ return
+
+ if(!target.reagents.total_volume)
+ to_chat(user, "\red [target] is empty.")
+ return
+
+ var/trans = target.reagents.trans_to(src, amount_per_transfer_from_this)
+
+ to_chat(user, "\blue You fill the [src] with [trans] units of the solution.")
+
+ filled = 1
+ icon_state = "[initial(icon_state)][filled]"
+
/obj/item/weapon/reagent_containers/dropper/cyborg
name = "Industrial Dropper"
desc = "A larger dropper. Transfers 10 units."
diff --git a/code/modules/reagents/reagent_containers/drugs.dm b/code/modules/reagents/reagent_containers/drugs.dm
index 54c14f714ee..8071347a275 100644
--- a/code/modules/reagents/reagent_containers/drugs.dm
+++ b/code/modules/reagents/reagent_containers/drugs.dm
@@ -12,80 +12,81 @@
var/label_text = ""
- New()
- ..()
- src.pixel_x = rand(-10.0, 10) //Randomizes postion
- src.pixel_y = rand(-10.0, 10)
- base_name = name
+/obj/item/weapon/reagent_containers/drugs/New()
+ ..()
+ src.pixel_x = rand(-10.0, 10) //Randomizes postion
+ src.pixel_y = rand(-10.0, 10)
+ base_name = name
- afterattack(obj/target, mob/user, proximity)
- if(!proximity) return
+/obj/item/weapon/reagent_containers/drugs/afterattack(obj/target, mob/user, proximity)
+ if(!proximity)
+ return
- if(istype(target, /obj/structure/reagent_dispensers)) //A dispenser. Transfer FROM it TO us.
+ if(istype(target, /obj/structure/reagent_dispensers)) //A dispenser. Transfer FROM it TO us.
- if(!target.reagents.total_volume && target.reagents)
- to_chat(user, "\red [target] is empty.")
- return
-
- if(reagents.total_volume >= reagents.maximum_volume)
- to_chat(user, "\red [src] is full.")
- return
-
- for(var/datum/reagent/A in target.reagents.reagent_list)
- if(A.reagent_state != 1)
- to_chat(user, "\red You can only put powders in [src].")
- return
-
- var/trans = target.reagents.trans_to(src, target:amount_per_transfer_from_this)
- to_chat(user, "\blue You fill [src] with [trans] units of the contents of [target].")
-
- else if(target.is_open_container() && target.reagents) //Something like a glass. Player probably wants to transfer TO it.
- if(!reagents.total_volume)
- to_chat(user, "\red [src] is empty.")
- return
-
- if(target.reagents.total_volume >= target.reagents.maximum_volume)
- to_chat(user, "\red [target] is full.")
- return
-
- // /vg/: Logging transfers of bad things
- if(target.reagents_to_log.len)
- var/list/badshit=list()
- for(var/bad_reagent in target.reagents_to_log)
- if(reagents.has_reagent(bad_reagent))
- badshit += reagents_to_log[bad_reagent]
- if(badshit.len)
- var/hl = "([english_list(badshit)])"
- message_admins("[key_name_admin(user)] added [reagents.get_reagent_ids(1)] to \a [target] with [src].[hl]")
- log_game("[key_name(user)] added [reagents.get_reagent_ids(1)] to \a [target] with [src].")
-
- var/trans = src.reagents.trans_to(target, amount_per_transfer_from_this)
- to_chat(user, "\blue You transfer [trans] units of the solution to [target].")
-
- //Safety for dumping stuff into a ninja suit. It handles everything through attackby() and this is unnecessary.
-
- /*else if(istype(target, /obj/machinery/bunsen_burner))
+ if(!target.reagents.total_volume && target.reagents)
+ to_chat(user, "\red [target] is empty.")
return
- else if(istype(target, /obj/machinery/radiocarbon_spectrometer))
- return*/
+ if(reagents.total_volume >= reagents.maximum_volume)
+ to_chat(user, "\red [src] is full.")
+ return
+
+ for(var/datum/reagent/A in target.reagents.reagent_list)
+ if(A.reagent_state != 1)
+ to_chat(user, "\red You can only put powders in [src].")
+ return
+
+ var/trans = target.reagents.trans_to(src, target:amount_per_transfer_from_this)
+ to_chat(user, "\blue You fill [src] with [trans] units of the contents of [target].")
+
+ else if(target.is_open_container() && target.reagents) //Something like a glass. Player probably wants to transfer TO it.
+ if(!reagents.total_volume)
+ to_chat(user, "\red [src] is empty.")
+ return
+
+ if(target.reagents.total_volume >= target.reagents.maximum_volume)
+ to_chat(user, "\red [target] is full.")
+ return
+
+ // /vg/: Logging transfers of bad things
+ if(target.reagents_to_log.len)
+ var/list/badshit=list()
+ for(var/bad_reagent in target.reagents_to_log)
+ if(reagents.has_reagent(bad_reagent))
+ badshit += reagents_to_log[bad_reagent]
+ if(badshit.len)
+ var/hl = "([english_list(badshit)])"
+ message_admins("[key_name_admin(user)] added [reagents.get_reagent_ids(1)] to \a [target] with [src].[hl]")
+ log_game("[key_name(user)] added [reagents.get_reagent_ids(1)] to \a [target] with [src].")
+
+ var/trans = src.reagents.trans_to(target, amount_per_transfer_from_this)
+ to_chat(user, "\blue You transfer [trans] units of the solution to [target].")
+
+ //Safety for dumping stuff into a ninja suit. It handles everything through attackby() and this is unnecessary.
+
+ /*else if(istype(target, /obj/machinery/bunsen_burner))
+ return
+
+ else if(istype(target, /obj/machinery/radiocarbon_spectrometer))
+ return*/
- attackby(obj/item/weapon/W as obj, mob/user as mob, params)
- if(istype(W, /obj/item/weapon/pen) || istype(W, /obj/item/device/flashlight/pen))
- var/tmp_label = sanitize(input(user, "Enter a label for [src.name]","Label",src.label_text))
- if(length(tmp_label) > 10)
- to_chat(user, "\red The label can be at most 10 characters long.")
- else
- to_chat(user, "\blue You set the label to \"[tmp_label]\".")
- src.label_text = tmp_label
- src.update_name_label()
-
- proc/update_name_label()
- if(src.label_text == "")
- src.name = src.base_name
+/obj/item/weapon/reagent_containers/drugs/attackby(obj/item/weapon/W, mob/user, params)
+ if(istype(W, /obj/item/weapon/pen) || istype(W, /obj/item/device/flashlight/pen))
+ var/tmp_label = sanitize(input(user, "Enter a label for [src.name]","Label",src.label_text))
+ if(length(tmp_label) > 10)
+ to_chat(user, "\red The label can be at most 10 characters long.")
else
- src.name = "[src.base_name] ([src.label_text])"
+ to_chat(user, "\blue You set the label to \"[tmp_label]\".")
+ src.label_text = tmp_label
+ src.update_name_label()
+
+/obj/item/weapon/reagent_containers/drugs/proc/update_name_label()
+ if(src.label_text == "")
+ src.name = src.base_name
+ else
+ src.name = "[src.base_name] ([src.label_text])"
/obj/item/weapon/reagent_containers/drugs/baggie
name = "baggie"
@@ -94,39 +95,42 @@
icon_state = "baggie"
item_state = "beaker"
- on_reagent_change()
- update_icon()
-
- pickup(mob/user)
- ..()
- update_icon()
-
- dropped(mob/user)
- ..()
- update_icon()
-
- attack_hand()
- ..()
- update_icon()
-
+/obj/item/weapon/reagent_containers/drugs/on_reagent_change()
update_icon()
- overlays.Cut()
- if(reagents.total_volume)
- var/image/filling = image('icons/obj/reagentfillings.dmi', src, "[icon_state]2")
+/obj/item/weapon/reagent_containers/drugs/pickup(mob/user)
+ ..()
+ update_icon()
- switch(reagents.total_volume)
- if(0 to 2) filling.icon_state = "[icon_state]2"
- if(3 to 4) filling.icon_state = "[icon_state]4"
- if(5 to 6) filling.icon_state = "[icon_state]6"
- if(7 to 8) filling.icon_state = "[icon_state]8"
- if(9 to 10) filling.icon_state = "[icon_state]10"
+/obj/item/weapon/reagent_containers/drugs/dropped(mob/user)
+ ..()
+ update_icon()
+
+/obj/item/weapon/reagent_containers/drugs/attack_hand()
+ ..()
+ update_icon()
+
+/obj/item/weapon/reagent_containers/drugs/update_icon()
+ overlays.Cut()
+
+ if(reagents.total_volume)
+ var/image/filling = image('icons/obj/reagentfillings.dmi', src, "[icon_state]2")
+
+ switch(reagents.total_volume)
+ if(0 to 2)
+ filling.icon_state = "[icon_state]2"
+ if(3 to 4)
+ filling.icon_state = "[icon_state]4"
+ if(5 to 6)
+ filling.icon_state = "[icon_state]6"
+ if(7 to 8)
+ filling.icon_state = "[icon_state]8"
+ if(9 to 10)
+ filling.icon_state = "[icon_state]10"
- filling.icon += mix_color_from_reagents(reagents.reagent_list)
- overlays += filling
+ filling.icon += mix_color_from_reagents(reagents.reagent_list)
+ overlays += filling
/obj/item/weapon/reagent_containers/drugs/baggie/meth
- New()
- ..()
- reagents.add_reagent("methamphetamine", 10)
\ No newline at end of file
+ list_reagents = list("methamphetamine" = 10)
\ No newline at end of file
diff --git a/code/modules/reagents/reagent_containers/food.dm b/code/modules/reagents/reagent_containers/food.dm
index 50a3ecd1a1d..6bf920f5e64 100644
--- a/code/modules/reagents/reagent_containers/food.dm
+++ b/code/modules/reagents/reagent_containers/food.dm
@@ -13,6 +13,6 @@
var/instant_application = 0 //if we want to bypass the forcedfeed delay
/obj/item/weapon/reagent_containers/food/New()
- ..()
- src.pixel_x = rand(-10.0, 10) //Randomizes postion
- src.pixel_y = rand(-10.0, 10)
\ No newline at end of file
+ ..()
+ pixel_x = rand(-10, 10) //Randomizes postion
+ pixel_y = rand(-10, 10)
\ No newline at end of file
diff --git a/code/modules/reagents/reagent_containers/food/drinks/bottle/robot.dm b/code/modules/reagents/reagent_containers/food/drinks/bottle/robot.dm
deleted file mode 100644
index e69de29bb2d..00000000000
diff --git a/code/modules/reagents/reagent_containers/glass/bottle.dm b/code/modules/reagents/reagent_containers/glass/bottle.dm
index ce0d298839e..363ff89119f 100644
--- a/code/modules/reagents/reagent_containers/glass/bottle.dm
+++ b/code/modules/reagents/reagent_containers/glass/bottle.dm
@@ -12,190 +12,158 @@
flags = OPENCONTAINER
volume = 30
- New()
- ..()
- if(!icon_state)
- icon_state = "bottle[rand(1,20)]"
+/obj/item/weapon/reagent_containers/glass/bottle/New()
+ ..()
+ if(!icon_state)
+ icon_state = "bottle[rand(1,20)]"
//Copypasta from /obj/item/weapon/reagent_containers/glass/beaker
- on_reagent_change()
- update_icon()
-
- pickup(mob/user)
- ..()
- update_icon()
-
- dropped(mob/user)
- ..()
- update_icon()
-
- attack_hand()
- ..()
- update_icon()
-
+/obj/item/weapon/reagent_containers/glass/bottle/on_reagent_change()
update_icon()
- overlays.Cut()
- if(reagents.total_volume)
- var/image/filling = image('icons/obj/reagentfillings.dmi', src, "[icon_state]10")
+/obj/item/weapon/reagent_containers/glass/bottle/pickup(mob/user)
+ ..()
+ update_icon()
- var/percent = round((reagents.total_volume / volume) * 100)
- switch(percent)
- if(0 to 24) filling.icon_state = "[icon_state]10"
- if(25 to 49) filling.icon_state = "[icon_state]25"
- if(50 to 74) filling.icon_state = "[icon_state]50"
- if(75 to 90) filling.icon_state = "[icon_state]75"
- if(91 to INFINITY) filling.icon_state = "[icon_state]100"
+/obj/item/weapon/reagent_containers/glass/bottle/dropped(mob/user)
+ ..()
+ update_icon()
- filling.icon += mix_color_from_reagents(reagents.reagent_list)
- overlays += filling
+/obj/item/weapon/reagent_containers/glass/bottle/attack_hand()
+ ..()
+ update_icon()
- if(!is_open_container())
- var/image/lid = image(icon, src, "lid_bottle")
- overlays += lid
+/obj/item/weapon/reagent_containers/glass/bottle/update_icon()
+ overlays.Cut()
+
+ if(reagents.total_volume)
+ var/image/filling = image('icons/obj/reagentfillings.dmi', src, "[icon_state]10")
+
+ var/percent = round((reagents.total_volume / volume) * 100)
+ switch(percent)
+ if(0 to 24)
+ filling.icon_state = "[icon_state]10"
+ if(25 to 49)
+ filling.icon_state = "[icon_state]25"
+ if(50 to 74)
+ filling.icon_state = "[icon_state]50"
+ if(75 to 90)
+ filling.icon_state = "[icon_state]75"
+ if(91 to INFINITY)
+ filling.icon_state = "[icon_state]100"
+
+ filling.icon += mix_color_from_reagents(reagents.reagent_list)
+ overlays += filling
+
+ if(!is_open_container())
+ var/image/lid = image(icon, src, "lid_bottle")
+ overlays += lid
/obj/item/weapon/reagent_containers/glass/bottle/toxin
name = "toxin bottle"
desc = "A small bottle of toxins. Do not drink, it is poisonous."
icon = 'icons/obj/chemical.dmi'
icon_state = "bottle12"
-
- New()
- ..()
- reagents.add_reagent("toxin", 30)
+ list_reagents = list("toxin" = 30)
/obj/item/weapon/reagent_containers/glass/bottle/cyanide
name = "cyanide bottle"
desc = "A small bottle of cyanide. Bitter almonds?"
icon = 'icons/obj/chemical.dmi'
icon_state = "bottle12"
-
- New()
- ..()
- reagents.add_reagent("cyanide", 30)
+ list_reagents = list("cyanide" = 30)
/obj/item/weapon/reagent_containers/glass/bottle/mutagen
name = "unstable mutagen bottle"
desc = "A small bottle of unstable mutagen. Randomly changes the DNA structure of whoever comes in contact."
icon = 'icons/obj/chemical.dmi'
icon_state = "bottle20"
-
- New()
- ..()
- reagents.add_reagent("mutagen", 30)
+ list_reagents = list("mutagen" = 30)
/obj/item/weapon/reagent_containers/glass/bottle/ammonia
name = "ammonia bottle"
desc = "A small bottle."
icon = 'icons/obj/chemical.dmi'
icon_state = "bottle20"
-
- New()
- ..()
- reagents.add_reagent("ammonia", 30)
+ list_reagents = list("ammonia" = 30)
/obj/item/weapon/reagent_containers/glass/bottle/diethylamine
name = "diethylamine bottle"
desc = "A small bottle."
icon = 'icons/obj/chemical.dmi'
icon_state = "bottle17"
-
- New()
- ..()
- reagents.add_reagent("diethylamine", 30)
+ list_reagents = list("diethylamine" = 30)
/obj/item/weapon/reagent_containers/glass/bottle/facid
name = "Fluorosulfuric Acid Bottle"
desc = "A small bottle. Contains a small amount of Fluorosulfuric Acid"
icon = 'icons/obj/chemical.dmi'
icon_state = "bottle17"
- New()
- ..()
- reagents.add_reagent("facid", 30)
+ list_reagents = list("facid" = 30)
/obj/item/weapon/reagent_containers/glass/bottle/adminordrazine
name = "Adminordrazine Bottle"
desc = "A small bottle. Contains the liquid essence of the gods."
icon = 'icons/obj/drinks.dmi'
icon_state = "holyflask"
- New()
- ..()
- reagents.add_reagent("adminordrazine", 30)
+ list_reagents = list("adminordrazine" = 30)
/obj/item/weapon/reagent_containers/glass/bottle/capsaicin
name = "Capsaicin Bottle"
desc = "A small bottle. Contains hot sauce."
icon = 'icons/obj/chemical.dmi'
icon_state = "bottle3"
- New()
- ..()
- reagents.add_reagent("capsaicin", 30)
+ list_reagents = list("capsaicin" = 30)
/obj/item/weapon/reagent_containers/glass/bottle/frostoil
name = "Frost Oil Bottle"
desc = "A small bottle. Contains cold sauce."
icon = 'icons/obj/chemical.dmi'
icon_state = "bottle17"
- New()
- ..()
- reagents.add_reagent("frostoil", 30)
+ list_reagents = list("frostoil" = 30)
/obj/item/weapon/reagent_containers/glass/bottle/morphine
name = "Morphine Bottle"
desc = "A small bottle. Contains morphine."
icon = 'icons/obj/chemical.dmi'
icon_state = "bottle17"
- New()
- ..()
- reagents.add_reagent("morphine", 30)
+ list_reagents = list("morphine" = 30)
/obj/item/weapon/reagent_containers/glass/bottle/ether
name = "Ether Bottle"
desc = "A small bottle. Contains ether."
icon = 'icons/obj/chemical.dmi'
icon_state = "bottle17"
- New()
- ..()
- reagents.add_reagent("ether", 30)
+ list_reagents = list("ether" = 30)
/obj/item/weapon/reagent_containers/glass/bottle/charcoal
name = "Charcoal Bottle"
desc = "A small bottle. Contains charcoal."
icon = 'icons/obj/chemical.dmi'
icon_state = "bottle17"
- New()
- ..()
- reagents.add_reagent("charcoal", 30)
+ list_reagents = list("charcoal" = 30)
/obj/item/weapon/reagent_containers/glass/bottle/epinephrine
name = "Epinephrine Bottle"
desc = "A small bottle. Contains epinephrine."
icon = 'icons/obj/chemical.dmi'
icon_state = "bottle17"
- New()
- ..()
- reagents.add_reagent("epinephrine", 30)
+ list_reagents = list("epinephrine" = 30)
/obj/item/weapon/reagent_containers/glass/bottle/pancuronium
name = "Pancuronium Bottle"
desc = "A small bottle of pancuronium."
icon = 'icons/obj/chemical.dmi'
icon_state = "bottle14"
-
- New()
- ..()
- reagents.add_reagent("pancuronium", 30)
+ list_reagents = list("pancuronium" = 30)
/obj/item/weapon/reagent_containers/glass/bottle/sulfonal
name = "Sulfonal Bottle"
desc = "A small bottle of Sulfonal."
icon = 'icons/obj/chemical.dmi'
icon_state = "bottle19"
-
- New()
- ..()
- reagents.add_reagent("sulfonal", 30)
+ list_reagents = list("sulfonal" = 30)
//Reagent bottles
@@ -209,86 +177,64 @@
name = "Oil Bottle"
desc = "A reagent bottle. Contains oil."
icon_state = "rbottle1"
- New()
- ..()
- reagents.add_reagent("oil", 50)
+ list_reagents = list("oil" = 50)
/obj/item/weapon/reagent_containers/glass/bottle/reagent/phenol
name = "Phenol Bottle"
desc = "A reagent bottle. Contains phenol."
icon_state = "rbottle2"
- New()
- ..()
- reagents.add_reagent("phenol", 50)
+ list_reagents = list("phenol" = 50)
/obj/item/weapon/reagent_containers/glass/bottle/reagent/acetone
name = "Acetone Bottle"
desc = "A reagent bottle. Contains acetone."
icon_state = "rbottle3"
- New()
- ..()
- reagents.add_reagent("acetone", 50)
+ list_reagents = list("acetone" = 50)
/obj/item/weapon/reagent_containers/glass/bottle/reagent/ammonia
name = "Ammonia Bottle"
desc = "A reagent bottle. Contains ammonia."
icon_state = "rbottle4"
- New()
- ..()
- reagents.add_reagent("ammonia", 50)
+ list_reagents = list("ammonia" = 50)
/obj/item/weapon/reagent_containers/glass/bottle/reagent/diethylamine
name = "Diethylamine Bottle"
desc = "A reagent bottle. Contains diethylamine."
icon_state = "rbottle5"
- New()
- ..()
- reagents.add_reagent("diethylamine", 50)
+ list_reagents = list("diethylamine" = 50)
/obj/item/weapon/reagent_containers/glass/bottle/reagent/acid
name = "Acid Bottle"
desc = "A reagent bottle. Contains sulfuric acid."
icon_state = "rbottle6"
- New()
- ..()
- reagents.add_reagent("sacid", 50)
+ list_reagents = list("sacid" = 50)
/obj/item/weapon/reagent_containers/glass/bottle/reagent/formaldehyde
name = "Formaldehyde Bottle"
desc = "A reagent bottle. Contains formaldehyde."
icon_state = "rbottle"
- New()
- ..()
- reagents.add_reagent("formaldehyde", 50)
+ list_reagents = list("formaldehyde" = 50)
/obj/item/weapon/reagent_containers/glass/bottle/reagent/morphine
name = "Morphine Bottle"
desc = "A reagent bottle. Contains morphine."
- New()
- ..()
- reagents.add_reagent("morphine", 50)
+ list_reagents = list("morphine" = 50)
/obj/item/weapon/reagent_containers/glass/bottle/reagent/insulin
name = "Insulin Bottle"
desc = "A reagent bottle. Contains insulin."
- New()
- ..()
- reagents.add_reagent("insulin", 50)
+ list_reagents = list("insulin" = 50)
/obj/item/weapon/reagent_containers/glass/bottle/reagent/hairgrownium
name = "Hair Grow Gel"
desc = "A bottle full of a stimulative hair growth formula"
- New()
- ..()
- reagents.add_reagent("hairgrownium", 50)
+ list_reagents = list("hairgrownium" = 50)
/obj/item/weapon/reagent_containers/glass/bottle/reagent/hair_dye
name = "Quantum Hair Dye Bottle"
desc = "A bottle of the ever-changing quantum hair dye."
- New()
- ..()
- reagents.add_reagent("hair_dye", 50)
+ list_reagents = list("hair_dye" = 50)
////////////////////Traitor Poison Bottle//////////////////////////////
@@ -297,9 +243,9 @@
possible_transfer_amounts = list(5,10,15,25,30,40)
volume = 40
- New()
- ..()
- reagents.add_reagent(pick_list("chemistry_tools.json", "traitor_poison_bottle"), 40)
+/obj/item/weapon/reagent_containers/glass/bottle/traitor/New()
+ ..()
+ reagents.add_reagent(pick_list("chemistry_tools.json", "traitor_poison_bottle"), 40)
/obj/item/weapon/reagent_containers/glass/bottle/plasma
name = "plasma dust bottle"
diff --git a/code/modules/reagents/reagent_containers/glass/bottle/robot.dm b/code/modules/reagents/reagent_containers/glass/bottle/robot.dm
deleted file mode 100644
index 6a8eb261bb4..00000000000
--- a/code/modules/reagents/reagent_containers/glass/bottle/robot.dm
+++ /dev/null
@@ -1,32 +0,0 @@
-
-/obj/item/weapon/reagent_containers/glass/bottle/robot
- amount_per_transfer_from_this = 10
- possible_transfer_amounts = list(5,10,15,25,30,50,100)
- flags = OPENCONTAINER
- volume = 60
- var/reagent = ""
-
-
-/obj/item/weapon/reagent_containers/glass/bottle/robot/epinephrine
- name = "internal epinephrine bottle"
- desc = "A small bottle. Contains epinephrine - used to stabilize patients."
- icon = 'icons/obj/chemical.dmi'
- icon_state = "bottle16"
- reagent = "epinephrine"
-
-/obj/item/weapon/reagent_containers/glass/bottle/robot/epinephrine/New()
- ..()
- reagents.add_reagent("epinephrine", 60)
- return
-
-/obj/item/weapon/reagent_containers/glass/bottle/robot/charcoal
- name = "internal charcoal bottle"
- desc = "A small bottle of charcoal. Counters poisons and repairs damage."
- icon = 'icons/obj/chemical.dmi'
- icon_state = "bottle17"
- reagent = "charcoal"
-
-/obj/item/weapon/reagent_containers/glass/bottle/robot/charcoal/New()
- ..()
- reagents.add_reagent("charcoal", 60)
- return
\ No newline at end of file
diff --git a/code/modules/reagents/reagent_containers/glass_containers.dm b/code/modules/reagents/reagent_containers/glass_containers.dm
index 686c4234bc2..cf0b9132b57 100644
--- a/code/modules/reagents/reagent_containers/glass_containers.dm
+++ b/code/modules/reagents/reagent_containers/glass_containers.dm
@@ -268,7 +268,7 @@
if(assembly)
assembly.Crossed(AM)
-/obj/item/weapon/reagent_containers/glass/beaker/on_found(mob/finder as mob) //for mousetraps
+/obj/item/weapon/reagent_containers/glass/beaker/on_found(mob/finder) //for mousetraps
if(assembly)
assembly.on_found(finder)
@@ -319,20 +319,14 @@
possible_transfer_amounts = list(5,10,15,25,30,50,100,300)
flags = OPENCONTAINER
-/obj/item/weapon/reagent_containers/glass/beaker/cryoxadone/New()
- ..()
- reagents.add_reagent("cryoxadone", 30)
- update_icon()
+/obj/item/weapon/reagent_containers/glass/beaker/cryoxadone
+ list_reagents = list("cryoxadone" = 30)
-/obj/item/weapon/reagent_containers/glass/beaker/sulphuric/New()
- ..()
- reagents.add_reagent("sacid", 50)
- update_icon()
+/obj/item/weapon/reagent_containers/glass/beaker/sulphuric
+ list_reagents = list("sacid" = 50)
-/obj/item/weapon/reagent_containers/glass/beaker/slime/New()
- ..()
- reagents.add_reagent("slimejelly", 50)
- update_icon()
+/obj/item/weapon/reagent_containers/glass/beaker/slime
+ list_reagents = list("slimejelly" = 50)
/obj/item/weapon/reagent_containers/glass/bucket
desc = "It's a bucket."
@@ -347,7 +341,7 @@
volume = 120
flags = OPENCONTAINER
-/obj/item/weapon/reagent_containers/glass/bucket/attackby(var/obj/D, mob/user as mob, params)
+/obj/item/weapon/reagent_containers/glass/bucket/attackby(obj/D, mob/user, params)
if(isprox(D))
to_chat(user, "You add [D] to [src].")
qdel(D)
@@ -365,52 +359,4 @@
volume = 15
amount_per_transfer_from_this = 5
possible_transfer_amounts = list(1,5,15)
- flags = OPENCONTAINER
-
-/*
-/obj/item/weapon/reagent_containers/glass/blender_jug
- name = "Blender Jug"
- desc = "A blender jug, part of a blender."
- icon = 'icons/obj/kitchen.dmi'
- icon_state = "blender_jug_e"
- volume = 100
-
- on_reagent_change()
- switch(src.reagents.total_volume)
- if(0)
- icon_state = "blender_jug_e"
- if(1 to 75)
- icon_state = "blender_jug_h"
- if(76 to 100)
- icon_state = "blender_jug_f"
-
-/obj/item/weapon/reagent_containers/glass/canister //not used apparantly
- desc = "It's a canister. Mainly used for transporting fuel."
- name = "canister"
- icon = 'icons/obj/tank.dmi'
- icon_state = "canister"
- item_state = "canister"
- materials = list(MAT_METAL=300)
- w_class = 4
-
- amount_per_transfer_from_this = 20
- possible_transfer_amounts = list(10,20,30,60)
- volume = 120
-
-/obj/item/weapon/reagent_containers/glass/dispenser
- name = "reagent glass"
- desc = "A reagent glass."
- icon = 'icons/obj/chemical.dmi'
- icon_state = "beaker0"
- amount_per_transfer_from_this = 10
- flags = OPENCONTAINER
-
-/obj/item/weapon/reagent_containers/glass/dispenser/surfactant
- name = "reagent glass (surfactant)"
- icon_state = "liquid"
-
- New()
- ..()
- reagents.add_reagent("fluorosurfactant", 20)
-
-*/
+ flags = OPENCONTAINER
\ No newline at end of file
diff --git a/code/modules/reagents/reagent_containers/hypospray.dm b/code/modules/reagents/reagent_containers/hypospray.dm
index a9181138a85..73f0afc9a61 100644
--- a/code/modules/reagents/reagent_containers/hypospray.dm
+++ b/code/modules/reagents/reagent_containers/hypospray.dm
@@ -43,11 +43,8 @@
var/trans = reagents.trans_to(M, amount_per_transfer_from_this)
to_chat(user, "\blue [trans] units injected. [reagents.total_volume] units remaining in [src].")
- return
-
-/obj/item/weapon/reagent_containers/hypospray/CMO/New()
- ..()
- reagents.add_reagent("omnizine", 30)
+/obj/item/weapon/reagent_containers/hypospray/CMO
+ list_reagents = list("omnizine" = 30)
/obj/item/weapon/reagent_containers/hypospray/combat
name = "combat stimulant injector"
@@ -55,21 +52,14 @@
amount_per_transfer_from_this = 10
possible_transfer_amounts = list(10)
icon_state = "combat_hypo"
- volume = 60
+ volume = 75
ignore_flags = 1 // So they can heal their comrades.
-
-/obj/item/weapon/reagent_containers/hypospray/combat/New()
- ..()
- reagents.add_reagent("synaptizine", 30)
+ list_reagents = list("epinephrine" = 30, "omnizine" = 30, "teporone" = 15)
/obj/item/weapon/reagent_containers/hypospray/combat/nanites
- name = "combat stimulant injector"
- desc = "A modified air-needle autoinjector filled with expensive regeneration nanites."
+ desc = "A modified air-needle autoinjector for use in combat situations. Prefilled with expensive medical nanites for rapid healing."
volume = 100
-
-/obj/item/weapon/reagent_containers/hypospray/combat/nanites/New()
- ..()
- reagents.add_reagent("nanites", 70)
+ list_reagents = list("nanites" = 100)
/obj/item/weapon/reagent_containers/hypospray/autoinjector
name = "emergency autoinjector"
@@ -81,56 +71,41 @@
volume = 10
ignore_flags = 1 //so you can medipen through hardsuits
flags = null
+ list_reagents = list("epinephrine" = 10)
-/obj/item/weapon/reagent_containers/hypospray/autoinjector/New()
- ..()
- reagents.add_reagent("epinephrine", 10)
- update_icon()
- return
-
-/obj/item/weapon/reagent_containers/hypospray/autoinjector/attack(mob/M as mob, mob/user as mob)
+/obj/item/weapon/reagent_containers/hypospray/autoinjector/attack(mob/M, mob/user)
+ if(!reagents.total_volume)
+ to_chat(user, "[src] is empty!")
+ return
..()
update_icon()
- return
/obj/item/weapon/reagent_containers/hypospray/autoinjector/update_icon()
if(reagents.total_volume > 0)
- icon_state = "[initial(icon_state)]1"
+ icon_state = initial(icon_state)
else
icon_state = "[initial(icon_state)]0"
-/obj/item/weapon/reagent_containers/hypospray/autoinjector/examine(mob/user)
- ..(user)
+/obj/item/weapon/reagent_containers/hypospray/autoinjector/examine()
+ ..()
if(reagents && reagents.reagent_list.len)
- to_chat(user, "\blue It is currently loaded.")
+ to_chat(usr, "It is currently loaded.")
else
- to_chat(user, "\blue It is spent.")
+ to_chat(usr, "It is spent.")
/obj/item/weapon/reagent_containers/hypospray/autoinjector/teporone //basilisks
name = "teporone autoinjector"
- desc = "A rapid way to regulate your body's temperature in the event of a hardsuit malfunction at the cost of some shortness of breath."
+ desc = "A rapid way to regulate your body's temperature in the event of a hardsuit malfunction."
icon_state = "lepopen"
-
-/obj/item/weapon/reagent_containers/hypospray/autoinjector/teporone/New()
- ..()
- reagents.remove_reagent("epinephrine", 10)
- reagents.add_reagent("teporone", 9)
- reagents.add_reagent("lexorin", 1)
- update_icon()
- return
+ list_reagents = list("teporone" = 10)
/obj/item/weapon/reagent_containers/hypospray/autoinjector/stimpack //goliath kiting
name = "stimpack autoinjector"
- desc = "A rapid way to stimulate your body's adrenaline, allowing for freer movement in restrictive armor at the cost of some shortness of breath."
+ desc = "A rapid way to stimulate your body's adrenaline, allowing for freer movement in restrictive armor."
icon_state = "stimpen"
-
-/obj/item/weapon/reagent_containers/hypospray/autoinjector/stimpack/New()
- ..()
- reagents.remove_reagent("epinephrine", 10)
- reagents.add_reagent("methamphetamine", 9)
- reagents.add_reagent("lexorin", 1)
- update_icon()
- return
+ volume = 20
+ amount_per_transfer_from_this = 20
+ list_reagents = list("methamphetamine" = 10, "coffee" = 10)
/obj/item/weapon/reagent_containers/hypospray/autoinjector/stimulants
name = "Stimulants autoinjector"
@@ -139,10 +114,4 @@
amount_per_transfer_from_this = 50
possible_transfer_amounts = list(50)
volume = 50
-
-/obj/item/weapon/reagent_containers/hypospray/autoinjector/stimulants/New()
- ..()
- reagents.remove_reagent("epinephrine", 10)
- reagents.add_reagent("stimulants", 50)
- update_icon()
- return
\ No newline at end of file
+ list_reagents = list("stimulants" = 50)
\ No newline at end of file
diff --git a/code/modules/reagents/reagent_containers/pill.dm b/code/modules/reagents/reagent_containers/pill.dm
index 37c73ca760f..7f027fc8a97 100644
--- a/code/modules/reagents/reagent_containers/pill.dm
+++ b/code/modules/reagents/reagent_containers/pill.dm
@@ -11,14 +11,15 @@
volume = 50
consume_sound = null
- New()
- ..()
- if(!icon_state)
- icon_state = "pill[rand(1,20)]"
+/obj/item/weapon/reagent_containers/food/pill/New()
+ ..()
+ if(!icon_state)
+ icon_state = "pill[rand(1,20)]"
-/obj/item/weapon/reagent_containers/food/pill/attack_self(mob/user as mob)
+/obj/item/weapon/reagent_containers/food/pill/attack_self(mob/user)
return
-/obj/item/weapon/reagent_containers/food/pill/attack(var/mob/living/carbon/M, mob/user as mob, def_zone)
+
+/obj/item/weapon/reagent_containers/food/pill/attack(mob/living/carbon/M, mob/user, def_zone)
if(!istype(M))
return 0
bitesize = reagents.total_volume
@@ -29,7 +30,8 @@
return 0
/obj/item/weapon/reagent_containers/food/pill/afterattack(obj/target, mob/user, proximity)
- if(!proximity) return
+ if(!proximity)
+ return
if(target.is_open_container() != 0 && target.reagents)
if(!target.reagents.total_volume)
@@ -65,89 +67,64 @@
name = "Toxins pill"
desc = "Highly toxic."
icon_state = "pill5"
- New()
- ..()
- reagents.add_reagent("toxin", 50)
+ list_reagents = list("toxin" = 50)
/obj/item/weapon/reagent_containers/food/pill/initropidril
name = "initropidril pill"
desc = "Don't swallow this."
icon_state = "pill5"
- New()
- ..()
- reagents.add_reagent("initropidril", 50)
+ list_reagents = list("initropidril" = 50)
/obj/item/weapon/reagent_containers/food/pill/adminordrazine
name = "Adminordrazine pill"
desc = "It's magic. We don't have to explain it."
icon_state = "pill16"
- New()
- ..()
- reagents.add_reagent("adminordrazine", 50)
+ list_reagents = list("adminordrazine" = 50)
/obj/item/weapon/reagent_containers/food/pill/methamphetamine
name = "Methamphetamine pill"
desc = "Helps improve the ability to concentrate."
icon_state = "pill8"
- New()
- ..()
- reagents.add_reagent("methamphetamine", 5)
+ list_reagents = list("methamphetamine" = 5)
/obj/item/weapon/reagent_containers/food/pill/haloperidol
name = "Haloperidol pill"
desc = "Haloperidol is an anti-psychotic use to treat psychiatric problems."
icon_state = "pill8"
- New()
- ..()
- reagents.add_reagent("haloperidol", 15)
+ list_reagents = list("haloperidol" = 15)
/obj/item/weapon/reagent_containers/food/pill/paroxetine
name = "Paroxetine pill"
desc = "Heavy anti-depressant."
icon_state = "pill8"
- New()
- ..()
- reagents.add_reagent("paroxetine", 15)
-
+ list_reagents = list("paroxetine" = 15)
/obj/item/weapon/reagent_containers/food/pill/happy
name = "Happy pill"
desc = "Happy happy joy joy!"
icon_state = "pill18"
- New()
- ..()
- reagents.add_reagent("space_drugs", 15)
- reagents.add_reagent("sugar", 15)
+ list_reagents = list("space_drugs" = 15, "sugar" = 15)
/obj/item/weapon/reagent_containers/food/pill/zoom
name = "Zoom pill"
desc = "Zoooom!"
icon_state = "pill18"
- New()
- ..()
- reagents.add_reagent("synaptizine", 5)
- reagents.add_reagent("methamphetamine", 5)
+ list_reagents = list("synaptizine" = 5, "methamphetamine" = 5)
/obj/item/weapon/reagent_containers/food/pill/charcoal
name = "Charcoal pill"
desc = "Neutralizes many common toxins."
icon_state = "pill17"
- New()
- ..()
- reagents.add_reagent("charcoal", 25)
+ list_reagents = list("charcoal" = 25)
/obj/item/weapon/reagent_containers/food/pill/salicylic
name = "Salicylic Acid pill"
desc = "Commonly used to treat moderate pain and fevers."
icon_state = "pill4"
- New()
- ..()
- reagents.add_reagent("sal_acid", 20)
+ list_reagents = list("sal_acid" = 20)
/obj/item/weapon/reagent_containers/food/pill/salbutamol
name = "Salbutamol pill"
desc = "Used to treat respiratory distress."
icon_state = "pill8"
- New()
- ..()
- reagents.add_reagent("salbutamol", 20)
\ No newline at end of file
+ list_reagents = list("salbutamol" = 20)
\ No newline at end of file
diff --git a/code/modules/reagents/reagent_containers/spray.dm b/code/modules/reagents/reagent_containers/spray.dm
index a55a3c6319c..205d025383f 100644
--- a/code/modules/reagents/reagent_containers/spray.dm
+++ b/code/modules/reagents/reagent_containers/spray.dm
@@ -17,7 +17,7 @@
possible_transfer_amounts = null
-/obj/item/weapon/reagent_containers/spray/afterattack(atom/A as mob|obj, mob/user as mob)
+/obj/item/weapon/reagent_containers/spray/afterattack(atom/A, mob/user)
if(istype(A, /obj/item/weapon/storage) || istype(A, /obj/structure/table) || istype(A, /obj/structure/rack) || istype(A, /obj/structure/closet) \
|| istype(A, /obj/item/weapon/reagent_containers) || istype(A, /obj/structure/sink) || istype(A, /obj/structure/janitorialcart) || istype(A, /obj/machinery/portable_atmospherics/hydroponics))
return
@@ -103,20 +103,13 @@
/obj/item/weapon/reagent_containers/spray/cleaner
name = "space cleaner"
desc = "BLAM!-brand non-foaming space cleaner!"
-
-
-/obj/item/weapon/reagent_containers/spray/cleaner/New()
- ..()
- reagents.add_reagent("cleaner", 250)
+ list_reagents = list("cleaner" = 250)
/obj/item/weapon/reagent_containers/spray/cleaner/drone
name = "space cleaner"
desc = "BLAM!-brand non-foaming space cleaner!"
volume = 50
-
-/obj/item/weapon/reagent_containers/spray/cleaner/New()
- ..()
- reagents.add_reagent("cleaner", src.volume)
+ list_reagents = list("cleaner" = 50)
//pepperspray
/obj/item/weapon/reagent_containers/spray/pepper
@@ -128,11 +121,7 @@
volume = 40
spray_maxrange = 4
amount_per_transfer_from_this = 5
-
-
-/obj/item/weapon/reagent_containers/spray/pepper/New()
- ..()
- reagents.add_reagent("condensedcapsaicin", 40)
+ list_reagents = list("condensedcapsaicin" = 40)
//water flower
/obj/item/weapon/reagent_containers/spray/waterflower
@@ -143,12 +132,9 @@
item_state = "sunflower"
amount_per_transfer_from_this = 1
volume = 10
+ list_reagents = list("water" = 10)
-/obj/item/weapon/reagent_containers/spray/waterflower/New()
- ..()
- reagents.add_reagent("water", 10)
-
-/obj/item/weapon/reagent_containers/spray/waterflower/attack_self(var/mob/user) //Don't allow changing how much the flower sprays
+/obj/item/weapon/reagent_containers/spray/waterflower/attack_self(mob/user) //Don't allow changing how much the flower sprays
return
//chemsprayer
@@ -218,14 +204,10 @@
icon_state = "plantbgone"
item_state = "plantbgone"
volume = 100
+ list_reagents = list("atrazine" = 100)
-/obj/item/weapon/reagent_containers/spray/plantbgone/New()
- ..()
- reagents.add_reagent("atrazine", 100)
-
-
-/obj/item/weapon/reagent_containers/spray/plantbgone/afterattack(atom/A as mob|obj, mob/user as mob, proximity)
+/obj/item/weapon/reagent_containers/spray/plantbgone/afterattack(atom/A, mob/user, proximity)
if(!proximity) return
if(istype(A, /obj/machinery/portable_atmospherics/hydroponics)) // We are targeting hydrotray
diff --git a/code/modules/reagents/reagent_containers/syringes.dm b/code/modules/reagents/reagent_containers/syringes.dm
index 81dd637a855..b268b6aa883 100644
--- a/code/modules/reagents/reagent_containers/syringes.dm
+++ b/code/modules/reagents/reagent_containers/syringes.dm
@@ -19,6 +19,12 @@
var/mode = SYRINGE_DRAW
var/projectile_type = /obj/item/projectile/bullet/dart/syringe
+/obj/item/weapon/reagent_containers/syringe/New()
+ ..()
+ if(list_reagents) //syringe starts in inject mode if its already got something inside
+ mode = SYRINGE_INJECT
+ update_icon()
+
/obj/item/weapon/reagent_containers/syringe/on_reagent_change()
update_icon()
@@ -30,8 +36,7 @@
..()
update_icon()
-/obj/item/weapon/reagent_containers/syringe/attack_self(mob/user as mob)
-
+/obj/item/weapon/reagent_containers/syringe/attack_self(mob/user)
switch(mode)
if(SYRINGE_DRAW)
mode = SYRINGE_INJECT
@@ -45,10 +50,10 @@
..()
update_icon()
-/obj/item/weapon/reagent_containers/syringe/attack(mob/living/M as mob, mob/living/user as mob, def_zone)
+/obj/item/weapon/reagent_containers/syringe/attack(mob/living/M, mob/living/user, def_zone)
return
-/obj/item/weapon/reagent_containers/syringe/attackby(obj/item/I as obj, mob/user as mob, params)
+/obj/item/weapon/reagent_containers/syringe/attackby(obj/item/I, mob/user, params)
if(istype(I,/obj/item/weapon/storage/bag))
..()
return
@@ -66,13 +71,6 @@
to_chat(user, "\red This syringe is broken!")
return
-/* if(user.a_intent == I_HARM && ismob(target))
- if((CLUMSY in user.mutations) && prob(50))
- target = user
- syringestab(target, user)
- return */
-
-
switch(mode)
if(SYRINGE_DRAW)
@@ -286,60 +284,6 @@
filling.icon += mix_color_from_reagents(reagents.reagent_list)
overlays += filling
-
-/obj/item/weapon/reagent_containers/syringe/proc/syringestab(mob/living/carbon/target as mob, mob/living/carbon/user as mob)
-
- user.attack_log += "\[[time_stamp()]\] Attacked [target.name] ([target.ckey]) with [src.name] (INTENT: [uppertext(user.a_intent)])"
- target.attack_log += "\[[time_stamp()]\] Attacked by [user.name] ([user.ckey]) with [src.name] (INTENT: [uppertext(user.a_intent)])"
- if(target.ckey)
- msg_admin_attack("[key_name_admin(user)] attacked [key_name_admin(target)] with [src.name] (INTENT: [uppertext(user.a_intent)])")
- if(!iscarbon(user))
- target.LAssailant = null
- else
- target.LAssailant = user
-
- if(istype(target, /mob/living/carbon/human))
-
- var/target_zone = ran_zone(check_zone(user.zone_sel.selecting, target))
- var/obj/item/organ/external/affecting = target:get_organ(target_zone)
-
- if(!affecting || (affecting.status & ORGAN_DESTROYED) || affecting.is_stump())
- to_chat(user, "They are missing that limb!")
- return
- var/hit_area = affecting.name
-
- var/mob/living/carbon/human/H = target
- if((user != target) && H.check_shields(7, "the [src.name]"))
- return
-
- if(target != user && target.getarmor(target_zone, "melee") > 5 && prob(50))
- for(var/mob/O in viewers(world.view, user))
- O.show_message(text("\red [user] tries to stab [target] in \the [hit_area] with [src.name], but the attack is deflected by armor!"), 1)
- user.unEquip(src)
- qdel(src)
- return
-
- for(var/mob/O in viewers(world.view, user))
- O.show_message(text("\red [user] stabs [target] in \the [hit_area] with [src.name]!"), 1)
-
- if(affecting.take_damage(3))
- target:UpdateDamageIcon()
-
- else
- for(var/mob/O in viewers(world.view, user))
- O.show_message(text("\red [user] stabs [target] with [src.name]!"), 1)
- target.take_organ_damage(3)// 7 is the same as crowbar punch
-
- src.reagents.reaction(target, INGEST)
- var/syringestab_amount_transferred = rand(0, (reagents.total_volume - 5)) //nerfed by popular demand
- src.reagents.trans_to(target, syringestab_amount_transferred)
- src.desc += " It is broken."
- src.mode = SYRINGE_BROKEN
- src.add_blood(target)
- src.add_fingerprint(usr)
- src.update_icon()
-
-
/obj/item/weapon/reagent_containers/ld50_syringe
name = "Lethal Injection Syringe"
desc = "A syringe used for lethal injections."
@@ -351,104 +295,101 @@
volume = 50
var/mode = SYRINGE_DRAW
- on_reagent_change()
- update_icon()
+/obj/item/weapon/reagent_containers/ld50_syringe/on_reagent_change()
+ update_icon()
- pickup(mob/user)
- ..()
- update_icon()
+/obj/item/weapon/reagent_containers/ld50_syringe/pickup(mob/user)
+ ..()
+ update_icon()
- dropped(mob/user)
- ..()
- update_icon()
+/obj/item/weapon/reagent_containers/ld50_syringe/dropped(mob/user)
+ ..()
+ update_icon()
- attack_self(mob/user as mob)
- mode = !mode
- update_icon()
+/obj/item/weapon/reagent_containers/ld50_syringe/attack_self(mob/user)
+ mode = !mode
+ update_icon()
- attack_hand()
- ..()
- update_icon()
+/obj/item/weapon/reagent_containers/ld50_syringe/attack_hand()
+ ..()
+ update_icon()
+/obj/item/weapon/reagent_containers/ld50_syringe/attackby(obj/item/I, mob/user)
+ return
- attackby(obj/item/I as obj, mob/user as mob)
-
+/obj/item/weapon/reagent_containers/ld50_syringe/afterattack(obj/target, mob/user , flag)
+ if(!target.reagents)
return
- afterattack(obj/target, mob/user , flag)
- if(!target.reagents) return
+ switch(mode)
+ if(SYRINGE_DRAW)
- switch(mode)
- if(SYRINGE_DRAW)
+ if(reagents.total_volume >= reagents.maximum_volume)
+ to_chat(user, "\red The syringe is full.")
+ return
- if(reagents.total_volume >= reagents.maximum_volume)
- to_chat(user, "\red The syringe is full.")
+ if(ismob(target))
+ if(istype(target, /mob/living/carbon))//I Do not want it to suck 50 units out of people
+ to_chat(usr, "This needle isn't designed for drawing blood.")
+ return
+ else //if not mob
+ if(!target.reagents.total_volume)
+ to_chat(user, "\red [target] is empty.")
return
- if(ismob(target))
- if(istype(target, /mob/living/carbon))//I Do not want it to suck 50 units out of people
- to_chat(usr, "This needle isn't designed for drawing blood.")
- return
- else //if not mob
- if(!target.reagents.total_volume)
- to_chat(user, "\red [target] is empty.")
- return
+ if(!target.is_open_container() && !istype(target,/obj/structure/reagent_dispensers))
+ to_chat(user, "\red You cannot directly remove reagents from this object.")
+ return
- if(!target.is_open_container() && !istype(target,/obj/structure/reagent_dispensers))
- to_chat(user, "\red You cannot directly remove reagents from this object.")
- return
+ var/trans = target.reagents.trans_to(src, amount_per_transfer_from_this) // transfer from, transfer to - who cares?
- var/trans = target.reagents.trans_to(src, amount_per_transfer_from_this) // transfer from, transfer to - who cares?
+ to_chat(user, "\blue You fill the syringe with [trans] units of the solution.")
+ if(reagents.total_volume >= reagents.maximum_volume)
+ mode=!mode
+ update_icon()
- to_chat(user, "\blue You fill the syringe with [trans] units of the solution.")
- if(reagents.total_volume >= reagents.maximum_volume)
- mode=!mode
+ if(SYRINGE_INJECT)
+ if(!reagents.total_volume)
+ to_chat(user, "\red The Syringe is empty.")
+ return
+ if(istype(target, /obj/item/weapon/implantcase/chem))
+ return
+ if(!target.is_open_container() && !ismob(target) && !istype(target, /obj/item/weapon/reagent_containers/food))
+ to_chat(user, "\red You cannot directly fill this object.")
+ return
+ if(target.reagents.total_volume >= target.reagents.maximum_volume)
+ to_chat(user, "\red [target] is full.")
+ return
+
+ if(ismob(target) && target != user)
+ for(var/mob/O in viewers(world.view, user))
+ O.show_message(text("\red [] is trying to inject [] with a giant syringe!", user, target), 1)
+ if(!do_mob(user, target, 300)) return
+ for(var/mob/O in viewers(world.view, user))
+ O.show_message(text("\red [] injects [] with a giant syringe!", user, target), 1)
+ src.reagents.reaction(target, INGEST)
+ if(ismob(target) && target == user)
+ src.reagents.reaction(target, INGEST)
+ spawn(5)
+ var/trans = src.reagents.trans_to(target, amount_per_transfer_from_this)
+ to_chat(user, "\blue You inject [trans] units of the solution. The syringe now contains [src.reagents.total_volume] units.")
+ if(reagents.total_volume >= reagents.maximum_volume && mode==SYRINGE_INJECT)
+ mode = SYRINGE_DRAW
update_icon()
+/obj/item/weapon/reagent_containers/ld50_syringe/update_icon()
+ var/rounded_vol = round(reagents.total_volume,50)
+ if(ismob(loc))
+ var/mode_t
+ switch(mode)
+ if(SYRINGE_DRAW)
+ mode_t = "d"
if(SYRINGE_INJECT)
- if(!reagents.total_volume)
- to_chat(user, "\red The Syringe is empty.")
- return
- if(istype(target, /obj/item/weapon/implantcase/chem))
- return
- if(!target.is_open_container() && !ismob(target) && !istype(target, /obj/item/weapon/reagent_containers/food))
- to_chat(user, "\red You cannot directly fill this object.")
- return
- if(target.reagents.total_volume >= target.reagents.maximum_volume)
- to_chat(user, "\red [target] is full.")
- return
-
- if(ismob(target) && target != user)
- for(var/mob/O in viewers(world.view, user))
- O.show_message(text("\red [] is trying to inject [] with a giant syringe!", user, target), 1)
- if(!do_mob(user, target, 300)) return
- for(var/mob/O in viewers(world.view, user))
- O.show_message(text("\red [] injects [] with a giant syringe!", user, target), 1)
- src.reagents.reaction(target, INGEST)
- if(ismob(target) && target == user)
- src.reagents.reaction(target, INGEST)
- spawn(5)
- var/trans = src.reagents.trans_to(target, amount_per_transfer_from_this)
- to_chat(user, "\blue You inject [trans] units of the solution. The syringe now contains [src.reagents.total_volume] units.")
- if(reagents.total_volume >= reagents.maximum_volume && mode==SYRINGE_INJECT)
- mode = SYRINGE_DRAW
- update_icon()
- return
-
-
- update_icon()
- var/rounded_vol = round(reagents.total_volume,50)
- if(ismob(loc))
- var/mode_t
- switch(mode)
- if(SYRINGE_DRAW)
- mode_t = "d"
- if(SYRINGE_INJECT)
- mode_t = "i"
- icon_state = "[mode_t][rounded_vol]"
- else
- icon_state = "[rounded_vol]"
- item_state = "syringe_[rounded_vol]"
+ mode_t = "i"
+ icon_state = "[mode_t][rounded_vol]"
+ else
+ icon_state = "[rounded_vol]"
+ item_state = "syringe_[rounded_vol]"
////////////////////////////////////////////////////////////////////////////////
@@ -459,85 +400,27 @@
/obj/item/weapon/reagent_containers/syringe/antiviral
name = "Syringe (spaceacillin)"
desc = "Contains antiviral agents."
- New()
- ..()
- reagents.add_reagent("spaceacillin", 15)
- mode = SYRINGE_INJECT
- update_icon()
+ list_reagents = list("spaceacillin" = 15)
/obj/item/weapon/reagent_containers/ld50_syringe/lethal
- New()
- ..()
- reagents.add_reagent("cyanide", 10)
- reagents.add_reagent("neurotoxin2", 40)
- mode = SYRINGE_INJECT
- update_icon()
-
-
-//Robot syringes
-//Not special in any way, code wise. They don't have added variables or procs.
-/obj/item/weapon/reagent_containers/syringe/robot/charcoal
- name = "Syringe (charcoal)"
- desc = "Contains charcoal."
- New()
- ..()
- reagents.add_reagent("charcoal", 15)
- mode = SYRINGE_INJECT
- update_icon()
-
-/obj/item/weapon/reagent_containers/syringe/robot/epinephrine
- name = "Syringe (Epinephrine)"
- desc = "Contains epinephrine - used to stabilize patients."
- New()
- ..()
- reagents.add_reagent("epinephrine", 15)
- mode = SYRINGE_INJECT
- update_icon()
-
-/obj/item/weapon/reagent_containers/syringe/robot/mixed
- name = "Syringe (mixed)"
- desc = "Contains epinephrine & charcoal."
- New()
- ..()
- reagents.add_reagent("epinephrine", 7)
- reagents.add_reagent("charcoal", 8)
- mode = SYRINGE_INJECT
- update_icon()
+ list_reagents = list("cyanide" = 10, "neurotoxin2" = 40)
/obj/item/weapon/reagent_containers/syringe/charcoal
name = "Syringe (charcoal)"
desc = "Contains charcoal - used to treat toxins and damage from toxins."
- New()
- ..()
- reagents.add_reagent("charcoal", 15)
- mode = SYRINGE_INJECT
- update_icon()
+ list_reagents = list("charcoal" = 15)
/obj/item/weapon/reagent_containers/syringe/epinephrine
name = "Syringe (Epinephrine)"
desc = "Contains epinephrine - used to stabilize patients."
- New()
- ..()
- reagents.add_reagent("epinephrine", 15)
- mode = SYRINGE_INJECT
- update_icon()
+ list_reagents = list("epinephrine" = 15)
/obj/item/weapon/reagent_containers/syringe/insulin
name = "Syringe (insulin)"
desc = "Contains insulin - used to treat diabetes."
- New()
- ..()
- reagents.add_reagent("insulin", 15)
- mode = SYRINGE_INJECT
- update_icon()
+ list_reagents = list("insulin" = 15)
/obj/item/weapon/reagent_containers/syringe/bioterror
name = "bioterror syringe"
desc = "Contains several paralyzing reagents."
- New()
- ..()
- reagents.add_reagent("neurotoxin", 5)
- reagents.add_reagent("capulettium_plus", 5)
- reagents.add_reagent("sodium_thiopental", 5)
- mode = SYRINGE_INJECT
- update_icon()
+ list_reagents = list("neurotoxin" = 5, "capulettium_plus" = 5, "sodium_thiopental" = 5)
\ No newline at end of file
diff --git a/code/modules/reagents/reagent_dispenser.dm b/code/modules/reagents/reagent_dispenser.dm
index 3d8cc4af060..5d2323b9b6e 100644
--- a/code/modules/reagents/reagent_dispenser.dm
+++ b/code/modules/reagents/reagent_dispenser.dm
@@ -12,7 +12,7 @@
var/amount_per_transfer_from_this = 10
var/possible_transfer_amounts = list(10,25,50,100)
-/obj/structure/reagent_dispensers/attackby(obj/item/weapon/W as obj, mob/user as mob, params)
+/obj/structure/reagent_dispensers/attackby(obj/item/weapon/W, mob/user, params)
return
/obj/structure/reagent_dispensers/New()
@@ -139,7 +139,7 @@
rig = null
overlays = new/list()
-/obj/structure/reagent_dispensers/fueltank/attackby(obj/item/weapon/W as obj, mob/user as mob, params)
+/obj/structure/reagent_dispensers/fueltank/attackby(obj/item/weapon/W, mob/user, params)
if(istype(W,/obj/item/device/assembly_holder) && accepts_rig)
if(rig)
to_chat(user, "\red There is another device in the way.")
diff --git a/code/modules/research/designs/machine_designs.dm b/code/modules/research/designs/machine_designs.dm
index 1938b08dc20..e1f826eb9ca 100644
--- a/code/modules/research/designs/machine_designs.dm
+++ b/code/modules/research/designs/machine_designs.dm
@@ -192,16 +192,6 @@
build_path = /obj/item/weapon/circuitboard/sleeper
category = list("Medical Machinery")
-/datum/design/sleep_console
- name = "Machine Board (Sleeper Console)"
- desc = "Allows for the construction of circuit boards used to build a Sleeper Console."
- id = "sleeper_console"
- req_tech = list("programming" = 3, "biotech" = 2, "materials" = 3, "engineering" = 3)
- build_type = IMPRINTER
- materials = list(MAT_GLASS = 1000, "sacid" = 20)
- build_path = /obj/item/weapon/circuitboard/sleep_console
- category = list("Medical Machinery")
-
/datum/design/biogenerator
name = "Machine Board (Biogenerator)"
desc = "The circuit board for a Biogenerator."
diff --git a/code/modules/research/xenoarchaeology/chemistry.dm b/code/modules/research/xenoarchaeology/chemistry.dm
index 984ad2a0690..ea91ef76b35 100644
--- a/code/modules/research/xenoarchaeology/chemistry.dm
+++ b/code/modules/research/xenoarchaeology/chemistry.dm
@@ -1,81 +1,3 @@
-
-//chemistry stuff here so that it can be easily viewed/modified
-datum
- reagent
- tungsten
- name = "Tungsten"
- id = "tungsten"
- description = "A chemical element, and a strong oxidising agent."
- reagent_state = SOLID
- color = "#808080" // rgb: 128, 128, 128
- //todo: make this silvery grey
-
- lithiumsodiumtungstate
- name = "Lithium Sodium Tungstate"
- id = "lithiumsodiumtungstate"
- description = "A reducing agent for geological compounds."
- reagent_state = LIQUID
- color = "#808080" // rgb: 128, 128, 128
- //todo: make this silvery grey
-
- ground_rock
- name = "Ground Rock"
- id = "ground_rock"
- description = "A fine dust made of ground up rock."
- reagent_state = SOLID
- color = "#C81040" //rgb: 200, 16, 64
- //todo: make this brown
-
- density_separated_sample
- name = "Density separated sample"
- id = "density_separated_sample"
- description = "A watery paste used in chemical analysis, there are some chunks floating in it."
- reagent_state = LIQUID
- color = "#C81040" //rgb: 200, 16, 64
- //todo: make this browny-white
-
- analysis_sample
- name = "Analysis liquid"
- id = "analysis_sample"
- description = "A watery paste used in chemical analysis."
- reagent_state = LIQUID
- color = "#C81040" //rgb: 200, 16, 64
- //todo: make this white
-
- chemical_waste
- name = "Chemical Waste"
- id = "chemical_waste"
- description = "A viscous, toxic liquid left over from many chemical processes."
- reagent_state = LIQUID
- color = "#C81040" //rgb: 200, 16, 64
- //todo: make this fluoro/bright green
-
-datum
- chemical_reaction
- lithiumsodiumtungstate //LiNa2WO4, not the easiest chem to mix
- name = "Lithium Sodium Tungstate"
- id = "lithiumsodiumtungstate"
- result = "lithiumsodiumtungstate"
- required_reagents = list("lithium" = 1, "sodium" = 2, "tungsten" = 1, "oxygen" = 4)
- result_amount = 8
-
- density_separated_liquid
- name = "Density separated sample"
- id = "density_separated_sample"
- result = "density_separated_sample"
- secondary_results = list("chemical_waste" = 1)
- required_reagents = list("ground_rock" = 1, "lithiumsodiumtungstate" = 2)
- result_amount = 2
-
- analysis_liquid
- name = "Analysis sample"
- id = "analysis_sample"
- result = "analysis_sample"
- secondary_results = list("chemical_waste" = 1)
- required_reagents = list("density_separated_sample" = 5)
- result_amount = 4
- min_temp = 375
-
/obj/item/weapon/reagent_containers/glass/solution_tray
name = "solution tray"
desc = "A small, open-topped glass container for delicate research samples. It sports a re-useable strip for labelling with a pen."
@@ -111,55 +33,22 @@ obj/item/weapon/reagent_containers/glass/solution_tray/attackby(obj/item/weapon/
new /obj/item/weapon/reagent_containers/glass/solution_tray( src )
new /obj/item/weapon/reagent_containers/glass/solution_tray( src )
-/obj/item/weapon/reagent_containers/glass/beaker/tungsten
- name = "beaker 'tungsten'"
- New()
- ..()
- reagents.add_reagent("tungsten",50)
- update_icon()
-
/obj/item/weapon/reagent_containers/glass/beaker/oxygen
name = "beaker 'oxygen'"
- New()
- ..()
- reagents.add_reagent("oxygen",50)
- update_icon()
+ list_reagents = list("oxygen" = 50)
/obj/item/weapon/reagent_containers/glass/beaker/sodium
name = "beaker 'sodium'"
- New()
- ..()
- reagents.add_reagent("sodium",50)
- update_icon()
+ list_reagents = list("sodium" = 50)
/obj/item/weapon/reagent_containers/glass/beaker/lithium
name = "beaker 'lithium'"
-
- New()
- ..()
- reagents.add_reagent("lithium",50)
- update_icon()
+ list_reagents = list("lithium" = 50)
/obj/item/weapon/reagent_containers/glass/beaker/water
name = "beaker 'water'"
-
- New()
- ..()
- reagents.add_reagent("water",50)
- update_icon()
-
-/obj/item/weapon/reagent_containers/glass/beaker/water
- name = "beaker 'water'"
-
- New()
- ..()
- reagents.add_reagent("water",50)
- update_icon()
+ list_reagents = list("water" = 50)
/obj/item/weapon/reagent_containers/glass/beaker/fuel
name = "beaker 'fuel'"
-
- New()
- ..()
- reagents.add_reagent("fuel",50)
- update_icon()
+ list_reagents = list("fuel" = 50)
\ No newline at end of file
diff --git a/code/modules/research/xenoarchaeology/machinery/coolant.dm b/code/modules/research/xenoarchaeology/machinery/coolant.dm
index 5b7800ad36f..f0750f6388e 100644
--- a/code/modules/research/xenoarchaeology/machinery/coolant.dm
+++ b/code/modules/research/xenoarchaeology/machinery/coolant.dm
@@ -1,29 +1,21 @@
-datum/reagent/coolant
+/datum/reagent/coolant
name = "Coolant"
id = "coolant"
description = "Industrial cooling substance."
reagent_state = LIQUID
color = "#C8A5DC" // rgb: 200, 165, 220
-datum/chemical_reaction/coolant
- name = "Coolant"
- id = "coolant"
- result = "coolant"
- required_reagents = list("tungsten" = 1, "oxygen" = 1, "water" = 1)
- result_amount = 3
-
-
-
/obj/structure/reagent_dispensers/coolanttank
name = "coolant tank"
desc = "A tank of industrial coolant"
icon = 'icons/obj/objects.dmi'
icon_state = "coolanttank"
amount_per_transfer_from_this = 10
- New()
- ..()
- reagents.add_reagent("coolant",1000)
+
+/obj/structure/reagent_dispensers/coolanttank/New()
+ ..()
+ reagents.add_reagent("coolant",1000)
/obj/structure/reagent_dispensers/coolanttank/bullet_act(var/obj/item/projectile/Proj)
if(istype(Proj ,/obj/item/projectile/beam)||istype(Proj,/obj/item/projectile/bullet))
diff --git a/code/modules/surgery/organs/subtypes/nucleation.dm b/code/modules/surgery/organs/subtypes/nucleation.dm
index d237defe16b..d234b666ae3 100644
--- a/code/modules/surgery/organs/subtypes/nucleation.dm
+++ b/code/modules/surgery/organs/subtypes/nucleation.dm
@@ -32,6 +32,7 @@
/obj/item/organ/internal/eyes/luminescent_crystal/New()
set_light(2)
+ ..()
/obj/item/organ/internal/brain/crystal
name = "crystalized brain"
diff --git a/html/changelogs/AutoChangeLog-pr-5015.yml b/html/changelogs/AutoChangeLog-pr-5015.yml
new file mode 100644
index 00000000000..b062492b106
--- /dev/null
+++ b/html/changelogs/AutoChangeLog-pr-5015.yml
@@ -0,0 +1,5 @@
+author: LittleBigKid2000 and TullyBBurnalot
+delete-after: True
+changes:
+ - rscadd: "Stethoscopes can now be used to tell if a person's heart or lungs are damaged, or if they have any at all. Now they're actually useful instead of telling you the obvious in a vague way."
+ - bugfix: "Stethoscopes can no longer be used to hear the heartbeat and breathing of a person that doesn't have a heart or lungs."
diff --git a/html/changelogs/AutoChangeLog-pr-5044.yml b/html/changelogs/AutoChangeLog-pr-5044.yml
new file mode 100644
index 00000000000..7431255c248
--- /dev/null
+++ b/html/changelogs/AutoChangeLog-pr-5044.yml
@@ -0,0 +1,4 @@
+author: Kyep
+delete-after: True
+changes:
+ - tweak: "Improved admin 'select equipment' verb. ERT option now works, costumes get IDs and proper headsets, two new costumes added, and some outfits minorly tweaked (e.g: tunnel clowns get toolbelts)."
diff --git a/html/changelogs/AutoChangeLog-pr-5062.yml b/html/changelogs/AutoChangeLog-pr-5062.yml
new file mode 100644
index 00000000000..a7dbddfd294
--- /dev/null
+++ b/html/changelogs/AutoChangeLog-pr-5062.yml
@@ -0,0 +1,4 @@
+author: Fox McCloud
+delete-after: True
+changes:
+ - rscadd: "Can scan vending machines with your PDA to pay for items (if there's an ID in your PDA)"
diff --git a/html/changelogs/AutoChangeLog-pr-5065.yml b/html/changelogs/AutoChangeLog-pr-5065.yml
new file mode 100644
index 00000000000..d2c1f45c59d
--- /dev/null
+++ b/html/changelogs/AutoChangeLog-pr-5065.yml
@@ -0,0 +1,6 @@
+author: Krausus
+delete-after: True
+changes:
+ - tweak: "All admins can now see \"admin log\" messages."
+ - rscadd: "Admins can now toggle \"admin log\" messages on or off."
+ - tweak: "Admins will no longer be notified about ghosted admins jumping around."
diff --git a/html/changelogs/AutoChangeLog-pr-5067.yml b/html/changelogs/AutoChangeLog-pr-5067.yml
new file mode 100644
index 00000000000..d4fffce4cdf
--- /dev/null
+++ b/html/changelogs/AutoChangeLog-pr-5067.yml
@@ -0,0 +1,4 @@
+author: Allfd
+delete-after: True
+changes:
+ - rscadd: "Added hologram fluff sprites"
diff --git a/html/changelogs/AutoChangeLog-pr-5071.yml b/html/changelogs/AutoChangeLog-pr-5071.yml
new file mode 100644
index 00000000000..75141816f29
--- /dev/null
+++ b/html/changelogs/AutoChangeLog-pr-5071.yml
@@ -0,0 +1,8 @@
+author: Fox McCloud
+delete-after: True
+changes:
+ - tweak: "Sleepers no longer require a console to build, only the sleeper itself"
+ - tweak: "Clicking on the sleeper brings up the menu that was previously brought up for the console"
+ - rscadd: "Adds in syndicate sleepers--these sleepers are not only syndie themed but also allow the user to inject chems into themselves while inside the sleepers"
+ - tweak: "Sleepers can now inject silver sulfadiazine"
+ - tweak: "removes cryofeeds from cryodorms and adds in 2 more cryopods"
diff --git a/html/changelogs/AutoChangeLog-pr-5074.yml b/html/changelogs/AutoChangeLog-pr-5074.yml
new file mode 100644
index 00000000000..626b811a2c7
--- /dev/null
+++ b/html/changelogs/AutoChangeLog-pr-5074.yml
@@ -0,0 +1,14 @@
+author: Fox McCloud
+delete-after: True
+changes:
+ - tweak: "nanites will no longer purge chems, but will now heal internal organ damage, attempt to mend fractures, and will no longer cure beneficial viruses"
+ - bugfix: "cold and hot drinks should now properly heat you up or cool you down (this also goes for medical reagents)"
+ - tweak: "beer no longer reduces jitteriness"
+ - tweak: "toxins special and antifreeze heat you up"
+ - tweak: "banana juice and banana honk now heals monkeys"
+ - bugfix: "Fixes atrazine not killing nymphs"
+ - tweak: "mining autoinjectors no longer poison you"
+ - tweak: "combat hypospray now has omni+epinephrine+teporone"
+ - tweak: "stimpack is now meth+coffee instead of meth+epinephrine"
+ - tweak: "Cheese and synth meat amount creation scales with volume of the reaction"
+ - tweak: "sprinkles now heals all members of sec (brig phys, sec pod pilot, magistrate, and IAA are no longer left out)"
diff --git a/html/changelogs/AutoChangeLog-pr-5075.yml b/html/changelogs/AutoChangeLog-pr-5075.yml
new file mode 100644
index 00000000000..0674b01a7a6
--- /dev/null
+++ b/html/changelogs/AutoChangeLog-pr-5075.yml
@@ -0,0 +1,4 @@
+author: FalseIncarnate
+delete-after: True
+changes:
+ - rscadd: "Adds effects to the Paradise Pop reagents. Drink them all to unlock their powers!"
diff --git a/html/changelogs/AutoChangeLog-pr-5083.yml b/html/changelogs/AutoChangeLog-pr-5083.yml
new file mode 100644
index 00000000000..40bdae5f2c1
--- /dev/null
+++ b/html/changelogs/AutoChangeLog-pr-5083.yml
@@ -0,0 +1,4 @@
+author: Kyep
+delete-after: True
+changes:
+ - bugfix: "Prevented NPCs being made into objective targets."
diff --git a/html/changelogs/AutoChangeLog-pr-5084.yml b/html/changelogs/AutoChangeLog-pr-5084.yml
new file mode 100644
index 00000000000..7915ea660b3
--- /dev/null
+++ b/html/changelogs/AutoChangeLog-pr-5084.yml
@@ -0,0 +1,4 @@
+author: Fox McCloud
+delete-after: True
+changes:
+ - bugfix: "Fixes syndi+shielded+hos hardsuit sprite issues"
diff --git a/icons/mob/head.dmi b/icons/mob/head.dmi
index 63deb7f9acc..5bdf365b547 100644
Binary files a/icons/mob/head.dmi and b/icons/mob/head.dmi differ
diff --git a/icons/mob/species/drask/helmet.dmi b/icons/mob/species/drask/helmet.dmi
index df3929ddd08..9e8953e4c4f 100644
Binary files a/icons/mob/species/drask/helmet.dmi and b/icons/mob/species/drask/helmet.dmi differ
diff --git a/icons/mob/species/drask/suit.dmi b/icons/mob/species/drask/suit.dmi
index 37c03b3da9e..b7631041271 100644
Binary files a/icons/mob/species/drask/suit.dmi and b/icons/mob/species/drask/suit.dmi differ
diff --git a/icons/mob/species/skrell/helmet.dmi b/icons/mob/species/skrell/helmet.dmi
index 91456b5d203..d8a5beaf448 100644
Binary files a/icons/mob/species/skrell/helmet.dmi and b/icons/mob/species/skrell/helmet.dmi differ
diff --git a/icons/mob/species/skrell/suit.dmi b/icons/mob/species/skrell/suit.dmi
index 8057e0643bc..d0a12f2d0da 100644
Binary files a/icons/mob/species/skrell/suit.dmi and b/icons/mob/species/skrell/suit.dmi differ
diff --git a/icons/mob/species/tajaran/helmet.dmi b/icons/mob/species/tajaran/helmet.dmi
index 1b0e1213dab..37d312d3133 100644
Binary files a/icons/mob/species/tajaran/helmet.dmi and b/icons/mob/species/tajaran/helmet.dmi differ
diff --git a/icons/mob/species/tajaran/suit.dmi b/icons/mob/species/tajaran/suit.dmi
index 61e69d48a1e..eedf3501cb1 100644
Binary files a/icons/mob/species/tajaran/suit.dmi and b/icons/mob/species/tajaran/suit.dmi differ
diff --git a/icons/mob/species/unathi/helmet.dmi b/icons/mob/species/unathi/helmet.dmi
index 267e6653449..4ad3b228849 100644
Binary files a/icons/mob/species/unathi/helmet.dmi and b/icons/mob/species/unathi/helmet.dmi differ
diff --git a/icons/mob/species/unathi/suit.dmi b/icons/mob/species/unathi/suit.dmi
index e0d32323ebf..062c1b86db3 100644
Binary files a/icons/mob/species/unathi/suit.dmi and b/icons/mob/species/unathi/suit.dmi differ
diff --git a/icons/mob/species/vox/eyes.dmi b/icons/mob/species/vox/eyes.dmi
index d2ca8399639..7fb0e339cb7 100644
Binary files a/icons/mob/species/vox/eyes.dmi and b/icons/mob/species/vox/eyes.dmi differ
diff --git a/icons/mob/species/vox/helmet.dmi b/icons/mob/species/vox/helmet.dmi
index f80312633f0..05c31e1e1d6 100644
Binary files a/icons/mob/species/vox/helmet.dmi and b/icons/mob/species/vox/helmet.dmi differ
diff --git a/icons/mob/species/vox/suit.dmi b/icons/mob/species/vox/suit.dmi
index e4159ed2450..bea5f5904ae 100644
Binary files a/icons/mob/species/vox/suit.dmi and b/icons/mob/species/vox/suit.dmi differ
diff --git a/icons/mob/species/vulpkanin/helmet.dmi b/icons/mob/species/vulpkanin/helmet.dmi
index 599f248db03..9be69155ee3 100644
Binary files a/icons/mob/species/vulpkanin/helmet.dmi and b/icons/mob/species/vulpkanin/helmet.dmi differ
diff --git a/icons/mob/species/vulpkanin/suit.dmi b/icons/mob/species/vulpkanin/suit.dmi
index 31b6d96f4cd..ad946a3805b 100644
Binary files a/icons/mob/species/vulpkanin/suit.dmi and b/icons/mob/species/vulpkanin/suit.dmi differ
diff --git a/icons/mob/suit.dmi b/icons/mob/suit.dmi
index a7da1046b05..00e0112c53f 100644
Binary files a/icons/mob/suit.dmi and b/icons/mob/suit.dmi differ
diff --git a/icons/obj/Cryogenic2.dmi b/icons/obj/Cryogenic2.dmi
index 0401a41401f..88533a5d928 100644
Binary files a/icons/obj/Cryogenic2.dmi and b/icons/obj/Cryogenic2.dmi differ
diff --git a/icons/obj/clothing/hats.dmi b/icons/obj/clothing/hats.dmi
index 224454d5245..1eb8c732641 100644
Binary files a/icons/obj/clothing/hats.dmi and b/icons/obj/clothing/hats.dmi differ
diff --git a/icons/obj/clothing/suits.dmi b/icons/obj/clothing/suits.dmi
index abd21586fb5..6b3a721a732 100644
Binary files a/icons/obj/clothing/suits.dmi and b/icons/obj/clothing/suits.dmi differ
diff --git a/icons/obj/hypo.dmi b/icons/obj/hypo.dmi
index fe42acbe4d2..6baa7869c75 100644
Binary files a/icons/obj/hypo.dmi and b/icons/obj/hypo.dmi differ
diff --git a/paradise.dme b/paradise.dme
index 224f5db479c..843eb393f0a 100644
--- a/paradise.dme
+++ b/paradise.dme
@@ -1876,12 +1876,10 @@
#include "code\modules\reagents\reagent_containers\food\drinks\drinkingglass.dm"
#include "code\modules\reagents\reagent_containers\food\drinks\jar.dm"
#include "code\modules\reagents\reagent_containers\food\drinks\shotglass.dm"
-#include "code\modules\reagents\reagent_containers\food\drinks\bottle\robot.dm"
#include "code\modules\reagents\reagent_containers\food\snacks\candy.dm"
#include "code\modules\reagents\reagent_containers\food\snacks\meat.dm"
#include "code\modules\reagents\reagent_containers\food\snacks\seafood.dm"
#include "code\modules\reagents\reagent_containers\glass\bottle.dm"
-#include "code\modules\reagents\reagent_containers\glass\bottle\robot.dm"
#include "code\modules\recycling\conveyor2.dm"
#include "code\modules\recycling\disposal-construction.dm"
#include "code\modules\recycling\disposal.dm"