diff --git a/code/ATMOSPHERICS/components/valve.dm b/code/ATMOSPHERICS/components/valve.dm index 0120590d2d3..e8b99a9fb99 100644 --- a/code/ATMOSPHERICS/components/valve.dm +++ b/code/ATMOSPHERICS/components/valve.dm @@ -302,7 +302,7 @@ /obj/machinery/atmospherics/valve/attackby(var/obj/item/weapon/W as obj, var/mob/user as mob) if (!istype(W, /obj/item/weapon/wrench)) return ..() - if (istype(src, /obj/machinery/atmospherics/valve/digital)) + if (istype(src, /obj/machinery/atmospherics/valve/digital) && src:frequency) user << "\red You cannot unwrench this [src], it's too complicated." return 1 var/datum/gas_mixture/int_air = return_air() diff --git a/code/WorkInProgress/ZomgPonies/clothing/civilian.dm b/code/WorkInProgress/ZomgPonies/clothing/civilian.dm index ea89908ba9d..507cd00f4da 100644 --- a/code/WorkInProgress/ZomgPonies/clothing/civilian.dm +++ b/code/WorkInProgress/ZomgPonies/clothing/civilian.dm @@ -1,30 +1,30 @@ //Mime's Hardsuit -/obj/item/clothing/head/helmet/space/mime - name = "mime hardsuit helmet" +/obj/item/clothing/head/helmet/space/eva/mime + name = "mime eva helmet" // icon = 'spaceciv.dmi' - desc = "A hardsuit helmet specifically designed for the mime." + desc = "An eva helmet specifically designed for the mime." icon_state = "spacemimehelmet" item_state = "spacemimehelmet" -obj/item/clothing/suit/space/mime - name = "mime hardsuit" +obj/item/clothing/suit/space/eva/mime + name = "mime eva suit" // icon = 'spaceciv.dmi' - desc = "A hardsuit specifically designed for the mime." + desc = "An EVA suit specifically designed for the mime." icon_state = "spacemime_suit" item_state = "spacemime_items" allowed = list(/obj/item/weapon/tank) -/obj/item/clothing/head/helmet/space/clown - name = "clown hardsuit helmet" +/obj/item/clothing/head/helmet/space/eva/clown + name = "clown eva helmet" // icon = 'spaceciv.dmi' - desc = "A hardsuit helmet specifically designed for the clown. SPESSHONK!" + desc = "An EVA helmet specifically designed for the clown. SPESSHONK!" icon_state = "clownhelmet" item_state = "clownhelmet" -obj/item/clothing/suit/space/clown - name = "clown hardsuit" +obj/item/clothing/suit/space/eva/clown + name = "clown eva suit" // icon = 'spaceciv.dmi' - desc = "A hardsuit specifically designed for the clown. SPESSHONK!" + desc = "An EVA suit specifically designed for the clown. SPESSHONK!" icon_state = "spaceclown_suit" item_state = "spaceclown_items" allowed = list(/obj/item/weapon/tank) diff --git a/code/__HELPERS/game.dm b/code/__HELPERS/game.dm index 098ff4eb232..9de817ecb89 100644 --- a/code/__HELPERS/game.dm +++ b/code/__HELPERS/game.dm @@ -207,6 +207,8 @@ hear += C.mob else if(C.mob && C.mob.loc.loc in hear_and_objects) hear += C.mob + else if(C.mob && C.mob.loc.loc.loc in hear_and_objects) + hear += C.mob return hear @@ -444,7 +446,7 @@ proc/isInSight(var/atom/A, var/atom/B) var/r = mixOneColor(weights, reds) var/g = mixOneColor(weights, greens) var/b = mixOneColor(weights, blues) - return rgb(r,g,b) + return rgb(r,g,b) /proc/alone_in_area(var/area/the_area, var/mob/must_be_alone, var/check_type = /mob/living/carbon) var/area/our_area = get_area_master(the_area) @@ -456,6 +458,6 @@ proc/isInSight(var/atom/A, var/atom/B) if(our_area == get_area_master(C)) return 0 return 1 - + /proc/MinutesToTicks(var/minutes as num) return minutes * 60 * 10 \ No newline at end of file diff --git a/code/controllers/master_controller.dm b/code/controllers/master_controller.dm index e0615702b49..590474c2dbb 100644 --- a/code/controllers/master_controller.dm +++ b/code/controllers/master_controller.dm @@ -186,7 +186,7 @@ datum/controller/game_controller/proc/process() machines_cost = (world.timeofday - timer) / 10 sleep(breather_ticks) - + //BOTS timer = world.timeofday process_bots() @@ -280,7 +280,7 @@ datum/controller/game_controller/proc/process() continue - Machinery.removeAtProcessing() + if(Machinery) Machinery.removeAtProcessing() /datum/controller/game_controller/proc/process_bots() for(var/obj/machinery/bot/Bot in aibots) @@ -289,8 +289,8 @@ datum/controller/game_controller/proc/process() spawn(0) Bot.bot_process() continue - aibots -= Bot - + aibots -= Bot + /datum/controller/game_controller/proc/processObjects() for (var/obj/Object in processing_objects) if (Object && Object.loc) diff --git a/code/datums/mind.dm b/code/datums/mind.dm index 08fedbd7c32..146b7b318ff 100644 --- a/code/datums/mind.dm +++ b/code/datums/mind.dm @@ -177,6 +177,12 @@ datum/mind text += "employee|headrev|REV" else text += "EMPLOYEE|headrev|rev" + + if(current && current.client && current.client.prefs.be_special & BE_REV) + text += "|Enabled in Prefs" + else + text += "|Disabled in Prefs" + sections["revolution"] = text /** CULT ***/ @@ -195,6 +201,13 @@ datum/mind */ else text += "EMPLOYEE|cultist" + + + if(current && current.client && current.client.prefs.be_special & BE_CULTIST) + text += "|Enabled in Prefs" + else + text += "|Disabled in Prefs" + sections["cult"] = text /** WIZARD ***/ @@ -209,6 +222,12 @@ datum/mind text += "
Objectives are empty! Randomize!" else text += "yes|NO" + + if(current && current.client && current.client.prefs.be_special & BE_WIZARD) + text += "|Enabled in Prefs" + else + text += "|Disabled in Prefs" + sections["wizard"] = text /** CHANGELING ***/ @@ -224,12 +243,15 @@ datum/mind text += "
Transform to initial appearance." else text += "yes|NO" -// var/datum/game_mode/changeling/changeling = ticker.mode -// if (istype(changeling) && changeling.changelingdeath) -// text += "
All the changelings are dead! Restart in [round((changeling.TIME_TO_GET_REVIVED-(world.time-changeling.changelingdeathtime))/10)] seconds." + + if(current && current.client && current.client.prefs.be_special & BE_CHANGELING) + text += "|Enabled in Prefs" + else + text += "|Disabled in Prefs" + sections["changeling"] = text - /** NINJA ***/ + /** NINJA ***/ text = "ninja" if (ticker.mode.config_tag=="ninja") text = uppertext(text) @@ -241,26 +263,13 @@ datum/mind //text += "
Objectives are empty! Randomize!" else text += "yes|NO" - sections["ninja"] = text - - /** CHANGELING ***/ - text = "changeling" - if (ticker.mode.config_tag=="changeling" || ticker.mode.config_tag=="traitorchan") - text = uppertext(text) - text = "[text]: " - if (src in ticker.mode.changelings) - text += "YES|no" - if (objectives.len==0) - text += "
Objectives are empty! Randomize!" - if( changeling && changeling.absorbed_dna.len && (current.real_name != changeling.absorbed_dna[1]) ) - text += "
Transform to initial appearance." + + if(current && current.client && current.client.prefs.be_special & BE_NINJA) + text += "|Enabled in Prefs" else - text += "yes|NO" -// var/datum/game_mode/changeling/changeling = ticker.mode -// if (istype(changeling) && changeling.changelingdeath) -// text += "
All the changelings are dead! Restart in [round((changeling.TIME_TO_GET_REVIVED-(world.time-changeling.changelingdeathtime))/10)] seconds." - sections["changeling"] = text - + text += "|Disabled in Prefs" + + sections["ninja"] = text /** VAMPIRE ***/ text = "vampire" @@ -273,12 +282,15 @@ datum/mind text += "
Objectives are empty! Randomize!" else text += "yes|NO" + + if(src in ticker.mode.enthralled) + text += "YES|no" + else + text += "yes|NO" + /** Enthralled ***/ text += "
enthralled" - if(src in ticker.mode.enthralled) - text += " YES | no" - else - text += " yes | NO" + sections["vampire"] = text @@ -299,6 +311,12 @@ datum/mind text += " Code is [code]. tell the code." else text += "operative|NANOTRASEN" + + if(current && current.client && current.client.prefs.be_special & BE_OPERATIVE) + text += "|Enabled in Prefs" + else + text += "|Disabled in Prefs" + sections["nuclear"] = text /** TRAITOR ***/ @@ -315,6 +333,12 @@ datum/mind text += "
Objectives are empty! Randomize!" else text += "traitor|EMPLOYEE" + + if(current && current.client && current.client.prefs.be_special & BE_TRAITOR) + text += "|Enabled in Prefs" + else + text += "|Disabled in Prefs" + sections["traitor"] = text /** MONKEY ***/ @@ -335,6 +359,12 @@ datum/mind else text += "healthy|infected|human|OTHER" + + /*if(current && current.client && current.client.prefs.be_special & BE_MONKEY) + text += "|Enabled in Prefs" + else + text += "|Disabled in Prefs"*/ + sections["monkey"] = text diff --git a/code/game/atoms.dm b/code/game/atoms.dm index b58e3bf099f..6dec5fed5c8 100644 --- a/code/game/atoms.dm +++ b/code/game/atoms.dm @@ -257,16 +257,25 @@ its easier to just keep the beam vertical. return 0 if(H.gloves) if(fingerprintslast != H.ckey) + //Add the list if it does not exist. + if(!fingerprintshidden) + fingerprintshidden = list() fingerprintshidden += text("\[[time_stamp()]\] (Wearing gloves). Real name: [], Key: []",H.real_name, H.key) fingerprintslast = H.ckey return 0 if(!( fingerprints )) if(fingerprintslast != H.ckey) + //Add the list if it does not exist. + if(!fingerprintshidden) + fingerprintshidden = list() fingerprintshidden += text("\[[time_stamp()]\] Real name: [], Key: []",H.real_name, H.key) fingerprintslast = H.ckey return 1 else if(fingerprintslast != M.ckey) + //Add the list if it does not exist. + if(!fingerprintshidden) + fingerprintshidden = list() fingerprintshidden += text("\[[time_stamp()]\] Real name: [], Key: []",M.real_name, M.key) fingerprintslast = M.ckey return diff --git a/code/game/dna/genes/goon_disabilities.dm b/code/game/dna/genes/goon_disabilities.dm index 32617d456be..c0973e2206d 100644 --- a/code/game/dna/genes/goon_disabilities.dm +++ b/code/game/dna/genes/goon_disabilities.dm @@ -333,6 +333,10 @@ */ var/mob/living/carbon/L = usr + if(L) + usr.attack_log += text("\[[time_stamp()]\] [usr.real_name] ([usr.ckey]) cast the spell [name] on [L.real_name] ([L.ckey]).") + msg_admin_attack("[usr.real_name] ([usr.ckey]) has cast the spell [name] on [L.real_name] ([L.ckey]) ()") + L.adjust_fire_stacks(0.5) L.visible_message("\red [L.name] suddenly bursts into flames!") L.on_fire = 1 diff --git a/code/game/dna/genes/goon_powers.dm b/code/game/dna/genes/goon_powers.dm index 29cebeac06f..e421a9594f8 100644 --- a/code/game/dna/genes/goon_powers.dm +++ b/code/game/dna/genes/goon_powers.dm @@ -159,11 +159,15 @@ if(istype(H.wear_suit, /obj/item/clothing/suit/space)) handle_suit = 1 if(H.internal) - H.visible_message("\red A cloud of fine ice crystals engulfs [H]!", - "A cloud of fine ice crystals cover your [H.head]'s visor.") + H.visible_message("\red [usr] sprays a cloud of fine ice crystals, engulfing [H]!", + "[usr] sprays a cloud of fine ice crystals over your [H.head]'s visor.") + log_admin("[ckey(usr.key)] has used cryokinesis on [ckey(C.key)], internals yes, suit yes") + msg_admin_attack("[usr.real_name] ([usr.ckey]) has cast cryokinesis on [C.real_name] ([C.ckey]), ()") else - H.visible_message("\red A cloud of fine ice crystals engulfs [H]!", - "A cloud of fine ice crystals cover your [H.head]'s visor and make it into your air vents!.") + H.visible_message("\red [usr] sprays a cloud of fine ice crystals engulfing, [H]!", + "[usr] sprays a cloud of fine ice crystals cover your [H.head]'s visor and make it into your air vents!.") + log_admin("[usr.real_name] ([ckey(usr.key)]) has used cryokinesis on [C.real_name] ([ckey(C.key)]), ()") + msg_admin_attack("[usr.real_name] ([usr.ckey]) has cast cryokinesis on [C.real_name] ([C.ckey]), ()") H.bodytemperature = max(0, H.bodytemperature - 50) H.adjustFireLoss(5) if(!handle_suit) @@ -171,8 +175,9 @@ C.adjustFireLoss(10) C.ExtinguishMob() - C.visible_message("\red A cloud of fine ice crystals engulfs [C]!") - log_admin("[ckey(usr.key)] has used cryokinesis on [ckey(C.key)].") + C.visible_message("\red [usr] sprays a cloud of fine ice crystals, engulfing [C]!") + log_admin("[ckey(usr.key)] has used cryokinesis on [ckey(C.key)], internals no, suit no") + msg_admin_attack("[usr.real_name] ([usr.ckey]) has cast cryokinesis on [C.real_name] ([C.ckey]), ()") //playsound(usr.loc, 'bamf.ogg', 50, 0) diff --git a/code/game/gamemodes/nuclear/pinpointer.dm b/code/game/gamemodes/nuclear/pinpointer.dm index ce93498919c..a0b777d75dd 100644 --- a/code/game/gamemodes/nuclear/pinpointer.dm +++ b/code/game/gamemodes/nuclear/pinpointer.dm @@ -342,5 +342,67 @@ icon_state = "pinonmedium" if(16 to INFINITY) icon_state = "pinonfar" + spawn(5) + .() + +/obj/item/weapon/pinpointer/operative + name = "operative pinpointer" + icon = 'icons/obj/device.dmi' + desc = "A pinpointer that leads to the first Syndicate operative detected." + var/mob/living/carbon/nearest_op = null + +/obj/item/weapon/pinpointer/operative/attack_self() + if(!active) + active = 1 + workop() + usr << "You activate the pinpointer." + else + active = 0 + icon_state = "pinoff" + usr << "You deactivate the pinpointer." + +/obj/item/weapon/pinpointer/operative/proc/scan_for_ops() + if(!nearest_op) + for(var/mob/living/carbon/M in mob_list) + if(M.mind in ticker.mode.syndicates) + nearest_op = M + +/obj/item/weapon/pinpointer/operative/proc/workop() + scan_for_ops() + point_at(nearest_op, 0) + spawn(5) + .() + +/obj/item/weapon/pinpointer/operative/examine(mob/user) + ..() + if(nearest_op != null) + user << "Nearest operative: [nearest_op]." + if(nearest_op == null && active) + user << "No operatives detected within scanning range." + +/obj/item/weapon/pinpointer/operative/proc/point_at(atom/target, spawnself = 1) + if(!active) + return + if(!target) + icon_state = "pinonnull" + return + + var/turf/T = get_turf(target) + var/turf/L = get_turf(src) + + if(T.z != L.z) + icon_state = "pinonnull" + else + dir = get_dir(L, T) + switch(get_dist(L, T)) + if(-1) + icon_state = "pinondirect" + if(1 to 8) + icon_state = "pinonclose" + if(9 to 16) + icon_state = "pinonmedium" + if(16 to INFINITY) + icon_state = "pinonfar" + if(spawnself) spawn(5) .() \ No newline at end of file diff --git a/code/game/jobs/job/medical.dm b/code/game/jobs/job/medical.dm index 876dca62e30..4a6a299f318 100644 --- a/code/game/jobs/job/medical.dm +++ b/code/game/jobs/job/medical.dm @@ -216,6 +216,8 @@ H.equip_to_slot_or_del(new /obj/item/clothing/under/rank/psych(H), slot_w_uniform) if("Psychologist") H.equip_to_slot_or_del(new /obj/item/clothing/under/rank/psych/turtleneck(H), slot_w_uniform) + if("Therapist") + H.equip_to_slot_or_del(new /obj/item/clothing/under/rank/medical(H), slot_w_uniform) else H.equip_to_slot_or_del(new /obj/item/clothing/under/rank/medical(H), slot_w_uniform) H.equip_to_slot_or_del(new /obj/item/clothing/suit/storage/labcoat(H), slot_wear_suit) diff --git a/code/game/machinery/adv_med.dm b/code/game/machinery/adv_med.dm index 10359e84421..e991c569706 100644 --- a/code/game/machinery/adv_med.dm +++ b/code/game/machinery/adv_med.dm @@ -242,6 +242,8 @@ dir = 8 idle_power_usage = 250 active_power_usage = 500 + var/printing = null + var/printing_text = null /obj/machinery/body_scanconsole/power_change() if(stat & BROKEN) @@ -506,10 +508,31 @@ dat += text("Cataracts detected.
") if(occupant.sdisabilities & NEARSIGHTED) dat += text("Retinal misalignment detected.
") + src.printing_text = dat + dat += "

Print medical condition
" else dat += "\The [src] is empty." else dat = " Error: No Body Scanner connected." - dat += text("

Close", user) + dat += text("Close", user) user << browse(dat, "window=scanconsole;size=430x600") return + +/obj/machinery/body_scanconsole/Topic(href, href_list) + if(stat & (BROKEN|NOPOWER)) return + if(usr.stat || usr.restrained()) return + + if (href_list["print_p"]) + if (!(src.printing) && src.printing_text) + src.printing = 1 + for(var/mob/O in viewers(usr)) + O.show_message("\blue \the [src] rattles and prints out a sheet of paper.", 1) + sleep(20) + var/obj/item/weapon/paper/P = new /obj/item/weapon/paper( src.loc ) + P.info = "
Body Scan - [href_list["name"]]

" + P.info += "Time of scan: [worldtime2text(world.time)]

" + P.info += "[src.printing_text]" + P.info += "

Notes:
" + P.name = "Body Scan - [href_list["name"]]" + src.printing = null + src.printing_text = null \ No newline at end of file diff --git a/code/game/machinery/alarm.dm b/code/game/machinery/alarm.dm index 6de87e93a12..0ab30e69690 100644 --- a/code/game/machinery/alarm.dm +++ b/code/game/machinery/alarm.dm @@ -691,7 +691,7 @@ } if (!ui) // the ui does not exist, so we'll create a new one - ui = new(user, src, ui_key, "air_alarm.tmpl", name, 550, 410) + ui = new(user, src, ui_key, "air_alarm.tmpl", name, 570, 410) // When the UI is first opened this is the data it will use ui.set_initial_data(data) ui.open() @@ -758,7 +758,8 @@ "n2o_scrub", "o2_scrub", "panic_siphon", - "scrubbing") + "scrubbing", + "direction") var/val if(href_list["val"]) val=text2num(href_list["val"]) diff --git a/code/game/machinery/pipe/construction.dm b/code/game/machinery/pipe/construction.dm index 017856952ca..0a29da013ab 100644 --- a/code/game/machinery/pipe/construction.dm +++ b/code/game/machinery/pipe/construction.dm @@ -104,7 +104,7 @@ Buildable meters src.pipe_type = PIPE_UVENT else if(istype(make_from, /obj/machinery/atmospherics/valve)) src.pipe_type = PIPE_MVALVE - else if(istype(make_from, /obj/machinery/atmospherics/binary/volume_pump)) + else if(istype(make_from, /obj/machinery/atmospherics/binary/pump)) src.pipe_type = PIPE_PUMP else if(istype(make_from, /obj/machinery/atmospherics/trinary/filter/m_filter)) src.pipe_type = PIPE_GAS_FILTER_M @@ -709,7 +709,7 @@ Buildable meters V.node2.build_network() if(PIPE_PUMP) //gas pump - var/obj/machinery/atmospherics/binary/volume_pump/P = new(src.loc) + var/obj/machinery/atmospherics/binary/pump/P = new(src.loc) P.dir = dir P.initialize_directions = pipe_dir if (pipename) diff --git a/code/game/machinery/suit_storage_unit.dm b/code/game/machinery/suit_storage_unit.dm index 072cc4667b8..0b81ccabbeb 100644 --- a/code/game/machinery/suit_storage_unit.dm +++ b/code/game/machinery/suit_storage_unit.dm @@ -31,8 +31,8 @@ //The units themselves///////////////// /obj/machinery/suit_storage_unit/standard_unit - SUIT_TYPE = /obj/item/clothing/suit/space - HELMET_TYPE = /obj/item/clothing/head/helmet/space + SUIT_TYPE = /obj/item/clothing/suit/space/eva + HELMET_TYPE = /obj/item/clothing/head/helmet/space/eva MASK_TYPE = /obj/item/clothing/mask/breath diff --git a/code/game/machinery/vending.dm b/code/game/machinery/vending.dm index f7ce12324ca..348456523eb 100644 --- a/code/game/machinery/vending.dm +++ b/code/game/machinery/vending.dm @@ -1017,7 +1017,7 @@ /obj/machinery/vending/eva name = "Hardsuit Kits" desc = "Conversion kits for your alien hardsuit needs." - products = list(/obj/item/device/modkit = 6,/obj/item/device/modkit/tajaran = 6,/obj/item/device/modkit/unathi = 6) + products = list(/obj/item/device/modkit = 6,/obj/item/device/modkit/tajaran = 6,/obj/item/device/modkit/unathi = 6,/obj/item/device/modkit/skrell = 6,/obj/item/device/modkit/vox = 6) /obj/machinery/vending/sustenance diff --git a/code/game/objects/items/devices/modkit.dm b/code/game/objects/items/devices/modkit.dm index 26a0c066b01..6e23e94d4ad 100644 --- a/code/game/objects/items/devices/modkit.dm +++ b/code/game/objects/items/devices/modkit.dm @@ -70,8 +70,18 @@ name = "Tajaran hardsuit modification kit" desc = "A kit containing all the needed tools and parts to modify a hardsuit for another user. This one looks like it's meant for Tajaran." target_species = "Tajaran" - + /obj/item/device/modkit/unathi name = "Unathi hardsuit modification kit" desc = "A kit containing all the needed tools and parts to modify a hardsuit for another species. This one looks like it's meant for Unathi." - target_species = "Unathi" \ No newline at end of file + target_species = "Unathi" + +/obj/item/device/modkit/skrell + name = "Skrell hardsuit modification kit" + desc = "A kit containing all the needed tools and parts to modify a hardsuit for another species. This one looks like it's meant for Skrell." + target_species = "Skrell" + +/obj/item/device/modkit/vox + name = "Vox hardsuit modification kit" + desc = "A kit containing all the needed tools and parts to modify a hardsuit for another species. This one looks like it's meant for Vox." + target_species = "Vox" \ No newline at end of file diff --git a/code/game/objects/items/devices/scanners.dm b/code/game/objects/items/devices/scanners.dm index 5b77c5c8236..fd084bab1a9 100644 --- a/code/game/objects/items/devices/scanners.dm +++ b/code/game/objects/items/devices/scanners.dm @@ -43,7 +43,7 @@ REAGENT SCANNER /obj/item/device/t_scanner/attack_self(mob/user) on = !on - icon_state = "t-ray[on]" + icon_state = copytext(icon_state, 1, length(icon_state))+"[on]" if(on) processing_objects.Add(src) @@ -53,6 +53,9 @@ REAGENT SCANNER if(!on) processing_objects.Remove(src) return null + scan() + +/obj/item/device/t_scanner/proc/scan() for(var/turf/T in range(scan_range, src.loc) ) diff --git a/code/game/objects/items/weapons/storage/backpack.dm b/code/game/objects/items/weapons/storage/backpack.dm index cfe383edf21..25cb47ef3e8 100644 --- a/code/game/objects/items/weapons/storage/backpack.dm +++ b/code/game/objects/items/weapons/storage/backpack.dm @@ -218,6 +218,7 @@ icon_state = "duffel" item_state = "duffel" storage_slots = 9 // Duffelbags can hold more items. + max_combined_w_class = 27 slowdown = 1 /obj/item/weapon/storage/backpack/duffel/syndimed diff --git a/code/game/objects/items/weapons/storage/boxes.dm b/code/game/objects/items/weapons/storage/boxes.dm index 7af43c85cb3..628d287e7c5 100644 --- a/code/game/objects/items/weapons/storage/boxes.dm +++ b/code/game/objects/items/weapons/storage/boxes.dm @@ -537,6 +537,19 @@ for (var/i; i < storage_slots; i++) new /obj/item/weapon/reagent_containers/hypospray/autoinjector(src) +/obj/item/weapon/storage/box/autoinjector/utility + name = "autoinjector kit" + desc = "A box with several utility autoinjectors for the economical miner." + icon_state = "syringe" + + New() + ..() + new /obj/item/weapon/reagent_containers/hypospray/autoinjector/leporazine(src) + new /obj/item/weapon/reagent_containers/hypospray/autoinjector/leporazine(src) + new /obj/item/weapon/reagent_containers/hypospray/autoinjector/stimpack(src) + new /obj/item/weapon/reagent_containers/hypospray/autoinjector/stimpack(src) + new /obj/item/weapon/reagent_containers/hypospray/autoinjector/stimpack(src) + /obj/item/weapon/storage/box/lights name = "replacement bulbs" icon = 'icons/obj/storage.dmi' diff --git a/code/game/objects/structures/crates_lockers/closets/secure/medical.dm b/code/game/objects/structures/crates_lockers/closets/secure/medical.dm index 940fb1409f4..1724b921850 100644 --- a/code/game/objects/structures/crates_lockers/closets/secure/medical.dm +++ b/code/game/objects/structures/crates_lockers/closets/secure/medical.dm @@ -151,7 +151,7 @@ new /obj/item/weapon/defibrillator/loaded(src) new /obj/item/weapon/storage/belt/medical(src) new /obj/item/device/flash(src) - new /obj/item/weapon/reagent_containers/hypospray(src) + new /obj/item/weapon/reagent_containers/hypospray/CMO(src) return diff --git a/code/game/objects/structures/crates_lockers/closets/secure/security.dm b/code/game/objects/structures/crates_lockers/closets/secure/security.dm index dcd10cfb5d8..7bc09593e5e 100644 --- a/code/game/objects/structures/crates_lockers/closets/secure/security.dm +++ b/code/game/objects/structures/crates_lockers/closets/secure/security.dm @@ -339,7 +339,7 @@ new /obj/item/ammo_box/c38(src) new /obj/item/weapon/gun/projectile/revolver/detective(src) new /obj/item/taperoll/police(src) - new /obj/item/weapon/storage/belt/holster(src) + new /obj/item/clothing/tie/holster/armpit(src) return /obj/structure/closet/secure_closet/detective/update_icon() diff --git a/code/modules/admin/admin.dm b/code/modules/admin/admin.dm index a9bafc2e71e..f4b35c40ba2 100644 --- a/code/modules/admin/admin.dm +++ b/code/modules/admin/admin.dm @@ -68,6 +68,7 @@ var/global/nologevent = 0 if(M.client) body += "| Prison | " + body += "\ Send back to Lobby | " var/muted = M.client.prefs.muted body += {"
Mute: \[IC | diff --git a/code/modules/admin/admin_verbs.dm b/code/modules/admin/admin_verbs.dm index 89f222808b8..ed8989c3302 100644 --- a/code/modules/admin/admin_verbs.dm +++ b/code/modules/admin/admin_verbs.dm @@ -425,6 +425,9 @@ var/list/admin_verbs_mod = list( if ("Badmin") severity = 99 D.makerandom(severity) + + D.spreadtype = input("What method of contagion should the disease have?", "Give Disease") in list("Airborne","Contact","Injection") + D.infectionchance = input("How virulent is this disease? (1-100)", "Give Disease", D.infectionchance) as num if(istype(T,/mob/living/carbon/human)) diff --git a/code/modules/admin/topic.dm b/code/modules/admin/topic.dm index ce09a172a00..01f003bfd95 100644 --- a/code/modules/admin/topic.dm +++ b/code/modules/admin/topic.dm @@ -1141,6 +1141,30 @@ M << "\red You have been sent to the prison station!" log_admin("[key_name(usr)] sent [key_name(M)] to the prison station.") message_admins("\blue [key_name_admin(usr)] sent [key_name_admin(M)] to the prison station.", 1) + + else if(href_list["sendbacktolobby"]) + if(!check_rights(R_ADMIN)) + return + + var/mob/M = locate(href_list["sendbacktolobby"]) + + if(!isobserver(M)) + usr << "You can only send ghost players back to the Lobby." + return + + if(!M.client) + usr << "[M] doesn't seem to have an active client." + return + + if(alert(usr, "Send [key_name(M)] back to Lobby?", "Message", "Yes", "No") != "Yes") + return + + log_admin("[key_name(usr)] has sent [key_name(M)] back to the Lobby.") + message_admins("[key_name(usr)] has sent [key_name(M)] back to the Lobby.") + + var/mob/new_player/NP = new() + NP.ckey = M.ckey + qdel(M) else if(href_list["tdome1"]) if(!check_rights(R_SERVER|R_EVENT)) return diff --git a/code/modules/clothing/clothing.dm b/code/modules/clothing/clothing.dm index ca66eaf0ca9..fb8977de393 100644 --- a/code/modules/clothing/clothing.dm +++ b/code/modules/clothing/clothing.dm @@ -1,6 +1,7 @@ /obj/item/clothing name = "clothing" var/list/species_restricted = null //Only these species can wear this kit. + var/rig_restrict_helmet = 0 // Stops the user from equipping a rig helmet without attaching it to the suit first. /* Sprites used when the clothing item is refit. This is done by setting icon_override. @@ -281,7 +282,7 @@ BLIND // can't see anything icon_state = "space" desc = "A special helmet designed for work in a hazardous, low-pressure environment." flags = FPRINT | TABLEPASS | HEADCOVERSEYES | BLOCKHAIR | HEADCOVERSMOUTH | STOPSPRESSUREDMAGE - item_state = "space" + item_state = "s_helmet" permeability_coefficient = 0.01 armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 100, rad = 50) flags_inv = HIDEMASK|HIDEEARS|HIDEEYES|HIDEFACE diff --git a/code/modules/clothing/spacesuits/alien.dm b/code/modules/clothing/spacesuits/alien.dm index 51cf2a0903f..d1d9962393b 100644 --- a/code/modules/clothing/spacesuits/alien.dm +++ b/code/modules/clothing/spacesuits/alien.dm @@ -236,7 +236,27 @@ ..() if (magpulse) usr << "It would be hard to take these off without relaxing your grip first." //theoretically this message should only be seen by the wearer when the claws are equipped. - + +/obj/item/clothing/suit/space/eva/vox + name = "Vox EVA Suit" + icon_state = "voxspace" + item_state = "voxspace" + species_restricted = list("Vox", "Vox Armalis") + sprite_sheets = list( + "Vox" = 'icons/mob/species/vox/suit.dmi', + "Vox Armalis" = 'icons/mob/species/armalis/suit.dmi', + ) + +/obj/item/clothing/head/helmet/space/eva/vox + name = "Vox EVA Suit" + icon_state = "voxspace" + item_state = "voxspace" + species_restricted = list("Vox","Vox Armalis") + sprite_sheets = list( + "Vox" = 'icons/mob/species/vox/head.dmi', + "Vox Armalis" = 'icons/mob/species/armalis/head.dmi', + ) + /obj/item/clothing/suit/space/plasmaman w_class = 3 allowed = list(/obj/item/weapon/gun,/obj/item/ammo_box/magazine,/obj/item/ammo_casing,/obj/item/weapon/melee/baton,/obj/item/weapon/melee/energy/sword,/obj/item/weapon/handcuffs,/obj/item/weapon/tank) diff --git a/code/modules/clothing/spacesuits/miscellaneous.dm b/code/modules/clothing/spacesuits/miscellaneous.dm index e7a24a77ff4..9250796e29a 100644 --- a/code/modules/clothing/spacesuits/miscellaneous.dm +++ b/code/modules/clothing/spacesuits/miscellaneous.dm @@ -112,3 +112,19 @@ desc = "A paramedic space suit. Used in the recovery of bodies from space." slowdown = 1 flags = FPRINT | TABLEPASS | STOPSPRESSUREDMAGE | ONESIZEFITSALL + +/obj/item/clothing/suit/space/eva + name = "EVA suit" + icon_state = "spacenew" + item_state = "s_suit" + desc = "A lightweight space suit with the basic ability to protect the wearer from the vacuum of space during emergencies." + slowdown = 1 + armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 100, rad = 20) + +/obj/item/clothing/head/helmet/space/eva + name = "EVA helmet" + icon_state = "spacenew" + item_state = "s_helmet" + desc = "A lightweight space helmet with the basic ability to protect the wearer from the vacuum of space during emergencies." + flags_inv = HIDEMASK|HIDEEARS|HIDEEYES + armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 100, rad = 20) \ No newline at end of file diff --git a/code/modules/clothing/spacesuits/rig.dm b/code/modules/clothing/spacesuits/rig.dm index 21c3248bcc0..f9c912ffcc8 100644 --- a/code/modules/clothing/spacesuits/rig.dm +++ b/code/modules/clothing/spacesuits/rig.dm @@ -4,6 +4,7 @@ desc = "A special helmet designed for work in a hazardous, low-pressure environment." icon_state = "rig0-engineering" item_state = "eng_helm" + rig_restrict_helmet = 1 armor = list(melee = 10, bullet = 5, laser = 10, energy = 5, bomb = 10, bio = 100, rad = 75) allowed = list(/obj/item/device/flashlight) var/brightness_on = 4 //luminosity when on @@ -17,11 +18,13 @@ "Unathi" = 'icons/mob/species/unathi/helmet.dmi', "Tajaran" = 'icons/mob/species/tajaran/helmet.dmi', "Skrell" = 'icons/mob/species/skrell/helmet.dmi', + "Vox" = 'icons/mob/species/vox/helmet.dmi', ) sprite_sheets_obj = list( "Unathi" = 'icons/obj/clothing/species/unathi/hats.dmi', "Tajaran" = 'icons/obj/clothing/species/tajaran/hats.dmi', "Skrell" = 'icons/obj/clothing/species/skrell/hats.dmi', + "Vox" = 'icons/obj/clothing/species/vox/hats.dmi', ) attack_self(mob/user) @@ -60,16 +63,18 @@ armor = list(melee = 10, bullet = 5, laser = 10, energy = 5, bomb = 10, bio = 100, rad = 75) allowed = list(/obj/item/device/flashlight,/obj/item/weapon/tank,/obj/item/device/t_scanner, /obj/item/weapon/rcd, /obj/item/device/suit_cooling_unit) - species_restricted = list("exclude","Unathi","Tajaran","Diona","Vox") + species_restricted = list("exclude","Unathi","Tajaran","Skrell","Diona","Vox") sprite_sheets = list( "Unathi" = 'icons/mob/species/unathi/suit.dmi', "Tajaran" = 'icons/mob/species/tajaran/suit.dmi', "Skrell" = 'icons/mob/species/skrell/suit.dmi', + "Vox" = 'icons/mob/species/vox/suit.dmi', ) sprite_sheets_obj = list( "Unathi" = 'icons/obj/clothing/species/unathi/suits.dmi', "Tajaran" = 'icons/obj/clothing/species/tajaran/suits.dmi', "Skrell" = 'icons/obj/clothing/species/skrell/suits.dmi', + "Vox" = 'icons/obj/clothing/species/vox/suits.dmi', ) //Breach thresholds, should ideally be inherited by most (if not all) hardsuits. @@ -432,16 +437,17 @@ //Medical Rig /obj/item/clothing/head/helmet/space/rig/medical name = "medical hardsuit helmet" - desc = "A special helmet designed for work in a hazardous, low pressure environment. Has minor radiation shielding." + desc = "A special helmet designed for work in a hazardous, low pressure environment. Built with lightweight materials for extra comfort, but does not protect the eyes from intense light." icon_state = "rig0-medical" item_state = "medical_helm" _color = "medical" + flags_inv = HIDEMASK|HIDEEARS|HIDEEYES armor = list(melee = 10, bullet = 5, laser = 10, energy = 5, bomb = 10, bio = 100, rad = 50) /obj/item/clothing/suit/space/rig/medical icon_state = "rig-medical" name = "medical hardsuit" - desc = "A special suit that protects against hazardous, low pressure environments. Has minor radiation shielding." + desc = "A special helmet designed for work in a hazardous, low pressure environment. Built with lightweight materials for extra comfort." item_state = "medical_hardsuit" slowdown = 1 allowed = list(/obj/item/device/flashlight,/obj/item/weapon/tank,/obj/item/device/suit_cooling_unit,/obj/item/weapon/storage/firstaid,/obj/item/device/healthanalyzer,/obj/item/stack/medical) diff --git a/code/modules/clothing/suits/jobs.dm b/code/modules/clothing/suits/jobs.dm index b1b72376e8c..316cf98f2ff 100644 --- a/code/modules/clothing/suits/jobs.dm +++ b/code/modules/clothing/suits/jobs.dm @@ -7,6 +7,8 @@ desc = "A hazard vest used in the recovery of bodies." icon_state = "paramedic-vest" item_state = "paramedic-vest" + allowed = list(/obj/item/stack/medical, /obj/item/weapon/reagent_containers/dropper, /obj/item/weapon/reagent_containers/hypospray, /obj/item/weapon/reagent_containers/syringe, \ + /obj/item/device/healthanalyzer, /obj/item/device/flashlight, /obj/item/device/radio, /obj/item/weapon/tank/emergency_oxygen) armor = list(melee = 0, bullet = 0, laser = 0, energy = 0, bomb = 0, bio = 10, rad = 10) species_fit = list("Vox") sprite_sheets = list( diff --git a/code/modules/clothing/under/ties.dm b/code/modules/clothing/under/ties.dm index 7b847a09faa..5bf9e1cb75f 100644 --- a/code/modules/clothing/under/ties.dm +++ b/code/modules/clothing/under/ties.dm @@ -176,11 +176,12 @@ _color = "medgreen" /obj/item/clothing/tie/holster - name = "shoulder holster" + name = "large shoulder holster" desc = "A handgun holster." icon_state = "holster" _color = "holster" var/obj/item/weapon/gun/holstered = null + var/holster_allow = /obj/item/weapon/gun icon_action_button = "action_holster" /obj/item/clothing/tie/holster/attack_self() @@ -191,27 +192,27 @@ if(usr.stat) return if(!holstered) - if(!istype(usr.get_active_hand(), /obj/item/weapon/gun)) - usr << "\blue You need your gun equiped to holster it." + if(!istype(usr.get_active_hand(), holster_allow)) + usr << "You can't fit that in the holster." return var/obj/item/weapon/gun/W = usr.get_active_hand() if (!W.isHandgun()) - usr << "\red This gun won't fit in \the [src]!" + usr << "This gun won't fit in \the [src]!" return holstered = usr.get_active_hand() usr.drop_item() holstered.loc = src - usr.visible_message("\blue \The [usr] holsters \the [holstered].", "You holster \the [holstered].") + usr.visible_message("\The [usr] holsters \the [holstered].", "You holster \the [holstered].") else if(istype(usr.get_active_hand(),/obj) && istype(usr.get_inactive_hand(),/obj)) - usr << "\red You need an empty hand to draw the gun!" + usr << "You need an empty hand to draw the gun!" else if(usr.a_intent == "harm") - usr.visible_message("\red \The [usr] draws \the [holstered], ready to shoot!", \ - "\red You draw \the [holstered], ready to shoot!") + usr.visible_message("\The [usr] draws \the [holstered], ready to shoot!", \ + "You draw \the [holstered], ready to shoot!") else - usr.visible_message("\blue \The [usr] draws \the [holstered], pointing it at the ground.", \ - "\blue You draw \the [holstered], pointing it at the ground.") + usr.visible_message("\The [usr] draws \the [holstered], pointing it at the ground.", \ + "You draw \the [holstered], pointing it at the ground.") usr.put_in_hands(holstered) holstered = null @@ -220,6 +221,7 @@ desc = "A worn-out handgun holster. Perfect for concealed carry" icon_state = "holster" _color = "holster" + holster_allow = /obj/item/weapon/gun/projectile /obj/item/clothing/tie/storage name = "load bearing equipment" diff --git a/code/modules/customitems/item_defines.dm b/code/modules/customitems/item_defines.dm index c7e93804419..27736fe0858 100644 --- a/code/modules/customitems/item_defines.dm +++ b/code/modules/customitems/item_defines.dm @@ -427,7 +427,6 @@ /obj/item/weapon/reagent_containers/hypospray/fluff/asher_spock_1/New() ..() - reagents.remove_reagent("tricordrazine", 30) reagents.add_reagent("oxycodone", 15) update_icon() return diff --git a/code/modules/events/event_container.dm b/code/modules/events/event_container.dm index b6df7d94c3b..8441b36dcd4 100644 --- a/code/modules/events/event_container.dm +++ b/code/modules/events/event_container.dm @@ -150,7 +150,7 @@ var/global/list/severity_to_string = list(EVENT_LEVEL_MUNDANE = "Mundane", EVENT new /datum/event_meta(EVENT_LEVEL_MODERATE, "Meaty Ores", /datum/event/dust/meaty, 0, list(ASSIGNMENT_ENGINEER = 20)), new /datum/event_meta(EVENT_LEVEL_MODERATE, "Communication Blackout", /datum/event/communications_blackout, 500, list(ASSIGNMENT_AI = 150, ASSIGNMENT_SECURITY = 120)), new /datum/event_meta(EVENT_LEVEL_MODERATE, "Prison Break", /datum/event/prison_break, 0, list(ASSIGNMENT_SECURITY = 100)), - new /datum/event_meta(EVENT_LEVEL_MODERATE, "Grid Check", /datum/event/grid_check, 200, list(ASSIGNMENT_ENGINEER = 60)), +// new /datum/event_meta(EVENT_LEVEL_MODERATE, "Grid Check", /datum/event/grid_check, 200, list(ASSIGNMENT_ENGINEER = 60)), new /datum/event_meta(EVENT_LEVEL_MODERATE, "Electrical Storm", /datum/event/electrical_storm, 250, list(ASSIGNMENT_ENGINEER = 20, ASSIGNMENT_JANITOR = 150)), new /datum/event_meta(EVENT_LEVEL_MODERATE, "Radiation Storm", /datum/event/radiation_storm, 0, list(ASSIGNMENT_MEDICAL = 50), 1), new /datum/event_meta(EVENT_LEVEL_MODERATE, "Viral Infection", /datum/event/viral_infection, 0, list(ASSIGNMENT_MEDICAL = 150)), @@ -159,15 +159,15 @@ var/global/list/severity_to_string = list(EVENT_LEVEL_MUNDANE = "Mundane", EVENT new /datum/event_meta/alien(EVENT_LEVEL_MODERATE, "Alien Infestation", /datum/event/alien_infestation, 2.5, list(ASSIGNMENT_SECURITY = 1), 1, 0, 5), new /datum/event_meta/ninja(EVENT_LEVEL_MODERATE, "Space Ninja", /datum/event/space_ninja, 0, list(ASSIGNMENT_SECURITY = 1), 1, 0, 5), // NON-BAY EVENTS - new /datum/event_meta(EVENT_LEVEL_MODERATE, "Space Dust", /datum/event/dust, 50, list(ASSIGNMENT_ENGINEER = 50)), + new /datum/event_meta(EVENT_LEVEL_MODERATE, "Space Dust", /datum/event/dust, 50, list(ASSIGNMENT_ENGINEER = 50)), new /datum/event_meta(EVENT_LEVEL_MODERATE, "Dimensional Tear", /datum/event/tear, 0, list(ASSIGNMENT_SECURITY = 25)), - new /datum/event_meta(EVENT_LEVEL_MODERATE, "Wormholes", /datum/event/wormholes, 150), + new /datum/event_meta(EVENT_LEVEL_MODERATE, "Wormholes", /datum/event/wormholes, 150), - new /datum/event_meta(EVENT_LEVEL_MODERATE, "Pyro Anomaly", /datum/event/anomaly/anomaly_pyro, 100, list(ASSIGNMENT_ENGINEER = 60)), - new /datum/event_meta(EVENT_LEVEL_MODERATE, "Vortex Anomaly", /datum/event/anomaly/anomaly_vortex, 50, list(ASSIGNMENT_ENGINEER = 25)), - new /datum/event_meta(EVENT_LEVEL_MODERATE, "Bluespace Anomaly", /datum/event/anomaly/anomaly_bluespace, 50, list(ASSIGNMENT_ENGINEER = 25)), - new /datum/event_meta(EVENT_LEVEL_MODERATE, "Flux Anomaly", /datum/event/anomaly/anomaly_flux, 50, list(ASSIGNMENT_ENGINEER = 50)), - new /datum/event_meta(EVENT_LEVEL_MODERATE, "Gravitational Anomaly", /datum/event/anomaly/anomaly_grav, 200), + new /datum/event_meta(EVENT_LEVEL_MODERATE, "Pyro Anomaly", /datum/event/anomaly/anomaly_pyro, 100, list(ASSIGNMENT_ENGINEER = 60)), + new /datum/event_meta(EVENT_LEVEL_MODERATE, "Vortex Anomaly", /datum/event/anomaly/anomaly_vortex, 50, list(ASSIGNMENT_ENGINEER = 25)), + new /datum/event_meta(EVENT_LEVEL_MODERATE, "Bluespace Anomaly", /datum/event/anomaly/anomaly_bluespace, 50, list(ASSIGNMENT_ENGINEER = 25)), + new /datum/event_meta(EVENT_LEVEL_MODERATE, "Flux Anomaly", /datum/event/anomaly/anomaly_flux, 50, list(ASSIGNMENT_ENGINEER = 50)), + new /datum/event_meta(EVENT_LEVEL_MODERATE, "Gravitational Anomaly", /datum/event/anomaly/anomaly_grav, 200), ) /datum/event_container/major diff --git a/code/modules/events/event_dynamic.dm b/code/modules/events/event_dynamic.dm index d94c5f3ea3a..df494ddc245 100644 --- a/code/modules/events/event_dynamic.dm +++ b/code/modules/events/event_dynamic.dm @@ -47,7 +47,7 @@ var/global/list/possibleEvents = list() possibleEvents[/datum/event/economic_event] = 300 possibleEvents[/datum/event/trivial_news] = 400 - possibleEvents[/datum/event/mundane_news] = 300 + possibleEvents[/datum/event/mundane_news] = 300 possibleEvents[/datum/event/cargo_bonus] = 150 @@ -59,7 +59,7 @@ var/global/list/possibleEvents = list() possibleEvents[/datum/event/mass_hallucination] = 200 possibleEvents[/datum/event/vent_clog] = 300 possibleEvents[/datum/event/anomaly/anomaly_grav] = 200 - + possibleEvents[/datum/event/wormholes] = 150 possibleEvents[/datum/event/carp_migration] = 20 + 10 * active_with_role["Engineer"] @@ -72,7 +72,7 @@ var/global/list/possibleEvents = list() possibleEvents[/datum/event/communications_blackout] = 50 + 25 * active_with_role["AI"] + active_with_role["Scientist"] * 25 possibleEvents[/datum/event/ionstorm] = active_with_role["AI"] * 25 + active_with_role["Cyborg"] * 25 + active_with_role["Engineer"] * 10 + active_with_role["Scientist"] * 5 - possibleEvents[/datum/event/grid_check] = 25 + 10 * active_with_role["Engineer"] +// possibleEvents[/datum/event/grid_check] = 25 + 10 * active_with_role["Engineer"] possibleEvents[/datum/event/electrical_storm] = 15 * active_with_role["Janitor"] + 5 * active_with_role["Engineer"] possibleEvents[/datum/event/wallrot] = 30 * active_with_role["Engineer"] + 50 * active_with_role["Botanist"] @@ -82,8 +82,8 @@ var/global/list/possibleEvents = list() possibleEvents[/datum/event/anomaly/anomaly_pyro] = 100 + 60 * active_with_role["Engineer"] possibleEvents[/datum/event/anomaly/anomaly_vortex] = 50 + 25 * active_with_role["Engineer"] possibleEvents[/datum/event/anomaly/anomaly_bluespace] = 50 + 25 * active_with_role["Engineer"] - possibleEvents[/datum/event/anomaly/anomaly_flux] = 50 + 50 * active_with_role["Engineer"] - + possibleEvents[/datum/event/anomaly/anomaly_flux] = 50 + 50 * active_with_role["Engineer"] + possibleEvents[/datum/event/meteor_wave] = 10 * active_with_role["Engineer"] possibleEvents[/datum/event/meteor_shower] = 20 * active_with_role["Engineer"] possibleEvents[/datum/event/blob] = 10 * active_with_role["Engineer"] diff --git a/code/modules/mining/equipment_locker.dm b/code/modules/mining/equipment_locker.dm index 83ebb434540..1a0315b957d 100644 --- a/code/modules/mining/equipment_locker.dm +++ b/code/modules/mining/equipment_locker.dm @@ -140,31 +140,34 @@ /**********************Mining Equipment Locker**************************/ /obj/machinery/mineral/equipment_locker - name = "mining equipment locker" - desc = "An equipment locker for miners, points collected at an ore redemption machine can be spent here." + name = "mining equipment vendor" + desc = "An equipment vendor for miners, points collected at an ore redemption machine can be spent here." icon = 'icons/obj/machines/mining_machines.dmi' icon_state = "mining" density = 1 anchored = 1.0 var/obj/item/weapon/card/id/inserted_id var/list/prize_list = list( - new /datum/data/mining_equipment("Chili", /obj/item/weapon/reagent_containers/food/snacks/hotchili, 100), - new /datum/data/mining_equipment("Cigar", /obj/item/clothing/mask/cigarette/cigar/havana, 100), - new /datum/data/mining_equipment("Whiskey", /obj/item/weapon/reagent_containers/food/drinks/bottle/whiskey, 150), - new /datum/data/mining_equipment("Soap", /obj/item/weapon/soap/nanotrasen, 150), - //new /datum/data/mining_equipment("Stimulant pills", /obj/item/weapon/storage/pill_bottle/stimulant, 350), - //new /datum/data/mining_equipment("Alien toy", /obj/item/clothing/mask/facehugger/toy, 250), - //new /datum/data/mining_equipment("Laser pointer", /obj/item/device/laser_pointer, 250), - new /datum/data/mining_equipment("Point card", /obj/item/weapon/card/mining_point_card, 500), - new /datum/data/mining_equipment("Lazarus injector", /obj/item/weapon/lazarus_injector, 1000), - new /datum/data/mining_equipment("Space cash", /obj/item/weapon/spacecash/c1000, 5000), - new /datum/data/mining_equipment("Sonic jackhammer", /obj/item/weapon/pickaxe/jackhammer, 500), - new /datum/data/mining_equipment("Mining drone", /mob/living/simple_animal/hostile/mining_drone/, 500), - new /datum/data/mining_equipment("Jaunter", /obj/item/device/wormhole_jaunter, 250), - new /datum/data/mining_equipment("Resonator", /obj/item/weapon/resonator, 750), - new /datum/data/mining_equipment("Kinetic accelerator", /obj/item/weapon/gun/energy/kinetic_accelerator, 1000), - new /datum/data/mining_equipment("Jetpack", /obj/item/weapon/tank/jetpack/carbondioxide, 2000), - ) + new /datum/data/mining_equipment("Stimpack MediPen", /obj/item/weapon/reagent_containers/hypospray/autoinjector/stimpack, 50), + new /datum/data/mining_equipment("Leporazine MediPen", /obj/item/weapon/reagent_containers/hypospray/autoinjector/leporazine, 50), + new /datum/data/mining_equipment("MediPen Bundle", /obj/item/weapon/storage/box/autoinjector/utility, 200), + new /datum/data/mining_equipment("Whiskey", /obj/item/weapon/reagent_containers/food/drinks/bottle/whiskey, 100), + new /datum/data/mining_equipment("Cigar", /obj/item/clothing/mask/cigarette/cigar/havana, 150), + new /datum/data/mining_equipment("Soap", /obj/item/weapon/soap/nanotrasen, 200), + new /datum/data/mining_equipment("Jaunter", /obj/item/device/wormhole_jaunter, 250), + new /datum/data/mining_equipment("Advanced Scanner", /obj/item/device/t_scanner/adv_mining_scanner, 300), + new /datum/data/mining_equipment("Laser Pointer", /obj/item/device/laser_pointer, 400), + new /datum/data/mining_equipment("Alien Toy", /obj/item/clothing/mask/facehugger/toy, 450), + new /datum/data/mining_equipment("Mining Drone", /mob/living/simple_animal/hostile/mining_drone/, 500), + new /datum/data/mining_equipment("Resonator", /obj/item/weapon/resonator, 650), + new /datum/data/mining_equipment("Kinetic Accelerator", /obj/item/weapon/gun/energy/kinetic_accelerator, 650), + new /datum/data/mining_equipment("Sonic Jackhammer", /obj/item/weapon/pickaxe/jackhammer, 800), + new /datum/data/mining_equipment("Lazarus Injector", /obj/item/weapon/lazarus_injector, 1000), + new /datum/data/mining_equipment("Jetpack", /obj/item/weapon/tank/jetpack/carbondioxide/mining, 2000), + new /datum/data/mining_equipment("Space Cash", /obj/item/weapon/spacecash/c1000, 5000), + new /datum/data/mining_equipment("Point Card", /obj/item/weapon/card/mining_point_card, 500), + ) + /datum/data/mining_equipment/ var/equipment_name = "generic" @@ -183,13 +186,12 @@ /obj/machinery/mineral/equipment_locker/interact(mob/user) var/dat - dat += text("Mining Equipment Locker

") - + dat +="
" if(istype(inserted_id)) dat += "You have [inserted_id.mining_points] mining points collected. Eject ID.
" else dat += "No ID inserted. Insert ID.
" - + dat += "
" dat += "
Equipment point cost list:
" for(var/datum/data/mining_equipment/prize in prize_list) dat += "" @@ -230,26 +232,39 @@ if(istype(I, /obj/item/weapon/mining_voucher)) RedeemVoucher(I, user) return + if(istype(I,/obj/item/weapon/card/id)) + var/obj/item/weapon/card/id/C = usr.get_active_hand() + if(istype(C) && !istype(inserted_id)) + usr.drop_item() + C.loc = src + inserted_id = C + interact(user) + return ..() /obj/machinery/mineral/equipment_locker/proc/RedeemVoucher(voucher, redeemer) - var/selection = input(redeemer, "Pick your equipment", "Mining Voucher Redemption") in list("Resonator kit", "Kinetic Accelerator", "Mining Drone", "Cancel") + var/selection = input(redeemer, "Pick your equipment", "Mining Voucher Redemption") in list("Mining Drill", "Kinetic Accelerator", "Mining Drone", "Advanced Scanner", "Cancel") if(!selection || !Adjacent(redeemer)) return switch(selection) - if("Resonator kit") - new /obj/item/weapon/resonator(src.loc) - //new /obj/item/weapon/storage/pill_bottle/stimulant(src.loc) + if("Mining Drill") + new /obj/item/weapon/pickaxe/drill(src.loc) if("Kinetic Accelerator") new /obj/item/weapon/gun/energy/kinetic_accelerator(src.loc) if("Mining Drone") new /mob/living/simple_animal/hostile/mining_drone(src.loc) + if("Advanced Scanner") + new /obj/item/device/t_scanner/adv_mining_scanner(src.loc) if("Cancel") return del(voucher) -/obj/machinery/mineral/equipment_locker/ex_act() - return +/obj/machinery/mineral/equipment_locker/ex_act(severity) + var/datum/effect/effect/system/spark_spread/s = new /datum/effect/effect/system/spark_spread + s.set_up(5, 1, src) + s.start() + if(prob(50 / severity) && severity < 3) + del(src) /**********************Mining Equipment Locker Items**************************/ @@ -360,7 +375,7 @@ /obj/item/weapon/resonator/proc/CreateResonance(var/target, var/creator) if(cooldown <= 0) - playsound(src,'sound/effects/stealthoff.ogg',50,1) + playsound(src,'sound/weapons/resonator_fire.ogg',50,1) var/obj/effect/resonance/R = new /obj/effect/resonance(get_turf(target)) R.creator = creator cooldown = 1 @@ -384,7 +399,7 @@ icon_state = "shield1" layer = 4.1 mouse_opacity = 0 - var/resonance_damage = 30 + var/resonance_damage = 20 var/creator = null /obj/effect/resonance/New() @@ -393,7 +408,7 @@ return if(istype(proj_turf, /turf/simulated/mineral)) var/turf/simulated/mineral/M = proj_turf - playsound(src,'sound/effects/sparks4.ogg',50,1) + playsound(src,'sound/weapons/resonator_blast.ogg',50,1) M.GetDrilled() spawn(5) del(src) @@ -402,9 +417,9 @@ var/pressure = environment.return_pressure() if(pressure < 50) name = "strong resonance field" - resonance_damage = 60 + resonance_damage = 45 spawn(50) - playsound(src,'sound/effects/sparks4.ogg',50,1) + playsound(src,'sound/weapons/resonator_blast.ogg',50,1) if(creator) for(var/mob/living/L in src.loc) add_logs(creator, L, "used a resonator field on", object="resonator") @@ -416,15 +431,28 @@ L.adjustBruteLoss(resonance_damage) del(src) +/**********************Facehugger toy**********************/ + +/obj/item/clothing/mask/facehugger/toy + desc = "A toy often used to play pranks on other miners by putting it in their beds. It takes a bit to recharge after latching onto something." + throwforce = 0 + real = 0 + sterile = 1 + +/obj/item/clothing/mask/facehugger/toy/Die() + return + + /**********************Mining drone**********************/ /mob/living/simple_animal/hostile/mining_drone/ name = "nanotrasen minebot" - desc = "A small robot used to support miners, can be set to search and collect loose ore, or to help fend off wildlife." + desc = "The instructions printed on the side read: This is a small robot used to support miners, can be set to search and collect loose ore, or to help fend off wildlife. A mining scanner can instruct it to drop loose ore. Field repairs can be done with a welder." icon = 'icons/obj/aibots.dmi' icon_state = "mining_drone" icon_living = "mining_drone" status_flags = CANSTUN|CANWEAKEN|CANPUSH + stop_automated_movement_when_pulled = 1 mouse_opacity = 1 faction = list("neutral") a_intent = "harm" @@ -442,8 +470,8 @@ move_to_delay = 10 retreat_distance = 1 minimum_distance = 2 - health = 100 - maxHealth = 100 + health = 125 + maxHealth = 125 melee_damage_lower = 15 melee_damage_upper = 15 environment_smash = 0 @@ -452,8 +480,8 @@ ranged = 1 ranged_message = "shoots" ranged_cooldown_cap = 3 - projectiletype = /obj/item/projectile/beam - projectilesound = 'sound/weapons/Laser.ogg' + projectiletype = /obj/item/projectile/kinetic + projectilesound = 'sound/weapons/Gunshot4.ogg' wanted_objects = list(/obj/item/weapon/ore) /mob/living/simple_animal/hostile/mining_drone/attackby(obj/item/I as obj, mob/user as mob) @@ -469,7 +497,7 @@ health += 10 user << "You repair some of the armor on [src]." return - if(istype(I, /obj/item/device/mining_scanner)) + if(istype(I, /obj/item/device/mining_scanner) || istype(I, /obj/item/device/t_scanner/adv_mining_scanner)) user << "You instruct [src] to drop any collected ore." DropOre() return @@ -500,7 +528,6 @@ ..() /mob/living/simple_animal/hostile/mining_drone/proc/SetCollectBehavior() - stop_automated_movement_when_pulled = 1 idle_vision_range = 9 search_objects = 2 wander = 1 @@ -510,8 +537,7 @@ icon_state = "mining_drone" /mob/living/simple_animal/hostile/mining_drone/proc/SetOffenseBehavior() - stop_automated_movement_when_pulled = 0 - idle_vision_range = 5 + idle_vision_range = 7 search_objects = 0 wander = 0 ranged = 1 @@ -556,11 +582,13 @@ icon = 'icons/obj/syringe.dmi' icon_state = "lazarus_hypo" item_state = "hypo" + icon_override = 'icons/mob/in-hand/tools.dmi' throwforce = 0 w_class = 2.0 throw_speed = 3 throw_range = 5 var/loaded = 1 + var/malfunctioning = 0 /obj/item/weapon/lazarus_injector/afterattack(atom/target, mob/user, proximity_flag) if(!loaded) @@ -569,12 +597,17 @@ if(istype(target, /mob/living/simple_animal)) var/mob/living/simple_animal/M = target if(M.stat == DEAD) - M.faction = list("lazarus") + M.faction = list("neutral") M.revive() if(istype(target, /mob/living/simple_animal/hostile)) var/mob/living/simple_animal/hostile/H = M - H.friends += user - log_game("[user] has revived hostile mob [target] with a lazarus injector") + if(malfunctioning) + H.faction |= list("lazarus", "\ref[user]") + H.friends += user + H.attack_same = 1 + log_game("[user] has revived hostile mob [target] with a malfunctioning lazarus injector") + else + H.attack_same = 0 loaded = 0 user.visible_message("[user] injects [M] with [src], reviving it.") playsound(src,'sound/effects/refill.ogg',50,1) @@ -587,16 +620,22 @@ user << "[src] is only effective on lesser beings." return -/obj/item/weapon/lazarus_injector/examine() +/obj/item/weapon/lazarus_injector/emp_act() + if(!malfunctioning) + malfunctioning = 1 + +/obj/item/weapon/lazarus_injector/examine(mob/user) ..() if(!loaded) - usr << "[src] is empty." + user << "[src] is empty." + if(malfunctioning) + user << "The display on [src] seems to be flickering." /**********************Mining Scanner**********************/ /obj/item/device/mining_scanner desc = "A scanner that checks surrounding rock for useful minerals, it can also be used to stop gibtonite detonations. Requires you to wear mesons to work properly." name = "mining scanner" - icon_state = "mining" + icon_state = "mining1" item_state = "analyzer" w_class = 2.0 flags = CONDUCT @@ -638,9 +677,55 @@ M.icon_state = M.scan_state del(src) +/obj/item/device/t_scanner/adv_mining_scanner + desc = "A scanner that automatically checks surrounding rock for useful minerals; it can also be used to stop gibtonite detonations. Requires you to wear mesons to function properly." + name = "advanced mining scanner" + icon_state = "mining0" + item_state = "analyzer" + w_class = 2.0 + flags = CONDUCT + slot_flags = SLOT_BELT + var/cooldown = 0 + +/obj/item/device/t_scanner/adv_mining_scanner/scan() + if(!cooldown) + cooldown = 1 + spawn(80) + cooldown = 0 + var/turf/t = get_turf(src) + var/list/mobs = recursive_mob_check(t, 1,0,0) + if(!mobs.len) + return + var/list/L = list() + var/turf/simulated/mineral/M + for(M in range(7, t)) + if(M.scan_state) + L += M + if(L.len) + for(var/mob/user in mobs) + if(user.client) + var/client/C = user.client + for(M in L) + var/turf/T = get_turf(M) + var/image/I = image('icons/turf/walls.dmi', loc = T, icon_state = M.scan_state, layer = 18) + C.images += I + spawn(30) + if(C) + C.images -= I + /**********************Xeno Warning Sign**********************/ /obj/structure/sign/xeno_warning_mining name = "DANGEROUS ALIEN LIFE" desc = "A sign that warns would be travellers of hostile alien life in the vicinity." icon = 'icons/obj/mining.dmi' - icon_state = "xeno_warning" \ No newline at end of file + icon_state = "xeno_warning" + +/**********************Mining Jetpack**********************/ +/obj/item/weapon/tank/jetpack/carbondioxide/mining + name = "mining jetpack" + icon_state = "jetpack-mining" + item_state = "jetpack-mining" + desc = "A tank of compressed carbon dioxide for miners to use as propulsion in local space. The compact size allows for easy storage at the cost of capacity." + volume = 40 + throw_range = 7 + w_class = 3 //same as syndie harness \ No newline at end of file diff --git a/code/modules/mob/dead/observer/observer.dm b/code/modules/mob/dead/observer/observer.dm index af5790222ed..4be7623c8ff 100644 --- a/code/modules/mob/dead/observer/observer.dm +++ b/code/modules/mob/dead/observer/observer.dm @@ -23,10 +23,11 @@ universal_speak = 1 var/atom/movable/following = null var/medHUD = 0 + var/secHUD = 0 /mob/dead/observer/New(var/mob/body=null, var/flags=1) sight |= SEE_TURFS | SEE_MOBS | SEE_OBJS | SEE_SELF - see_invisible = SEE_INVISIBLE_OBSERVER + see_invisible = SEE_INVISIBLE_OBSERVER_AI_EYE see_in_dark = 100 verbs += /mob/dead/observer/proc/dead_tele @@ -103,6 +104,8 @@ Works together with spawning an observer, noted above. assess_targets(target_list, src) if(medHUD) process_medHUD(src) + if(secHUD) + process_secHUD(src) /mob/dead/proc/process_medHUD(var/mob/M) @@ -110,6 +113,13 @@ Works together with spawning an observer, noted above. for(var/mob/living/carbon/human/patient in oview(M, 14)) C.images += patient.hud_list[HEALTH_HUD] C.images += patient.hud_list[STATUS_HUD_OOC] + +/mob/dead/proc/process_secHUD(var/mob/M) + var/client/C = M.client + for(var/mob/living/carbon/human/target in oview(M, 14)) + C.images += target.hud_list[IMPTRACK_HUD] + C.images += target.hud_list[IMPLOYAL_HUD] + C.images += target.hud_list[IMPCHEM_HUD] /mob/dead/proc/assess_targets(list/target_list, mob/dead/observer/U) var/client/C = U.client @@ -258,7 +268,7 @@ This is the proc mobs get to turn into a ghost. Forked from ghostize due to comp /mob/dead/observer/verb/toggle_medHUD() set category = "Ghost" set name = "Toggle MedicHUD" - set desc = "Toggles Medical HUD allowing you to see how everyone is doing" + set desc = "Toggles the medical HUD." if(!client) return if(medHUD) @@ -450,14 +460,20 @@ This is the proc mobs get to turn into a ghost. Forked from ghostize due to comp src << "\blue Heat Capacity: [round(environment.heat_capacity(),0.1)]" -/mob/dead/observer/verb/toggle_darkness() - set name = "Toggle Darkness" +/mob/dead/observer/verb/toggle_sight() + set name = "Toggle Sight" set category = "Ghost" - if (see_invisible == SEE_INVISIBLE_OBSERVER_NOLIGHTING) - see_invisible = SEE_INVISIBLE_OBSERVER - else - see_invisible = SEE_INVISIBLE_OBSERVER_NOLIGHTING + switch(see_invisible) + if(SEE_INVISIBLE_OBSERVER_AI_EYE) + see_invisible = SEE_INVISIBLE_OBSERVER_NOOBSERVERS + usr << "You no longer see other observers or the AI eye." + if(SEE_INVISIBLE_OBSERVER_NOOBSERVERS) + see_invisible = SEE_INVISIBLE_OBSERVER_NOLIGHTING + usr << "You no longer see darkness." + else + see_invisible = SEE_INVISIBLE_OBSERVER_AI_EYE + usr << "You again see everything." /mob/dead/observer/verb/view_manfiest() set name = "View Crew Manifest" diff --git a/code/modules/mob/living/carbon/human/human.dm b/code/modules/mob/living/carbon/human/human.dm index 51d33edde47..1c0feaaef05 100644 --- a/code/modules/mob/living/carbon/human/human.dm +++ b/code/modules/mob/living/carbon/human/human.dm @@ -1014,6 +1014,10 @@ number += 2 if(istype(src.head, /obj/item/clothing/head/helmet/space)) number += 2 + if(istype(src.head, /obj/item/clothing/head/helmet/space/eva)) + number -= 2 + if(istype(src.head, /obj/item/clothing/head/helmet/space/rig/medical)) + number -= 2 if(istype(src.glasses, /obj/item/clothing/glasses/thermal)) number -= 1 if(istype(src.glasses, /obj/item/clothing/glasses/sunglasses)) @@ -1410,7 +1414,6 @@ if(H) H.brained=1 h_style = "Bald" - drop_from_inventory(head) update_hair() update_body() diff --git a/code/modules/mob/living/carbon/human/inventory.dm b/code/modules/mob/living/carbon/human/inventory.dm index 171de58faab..2520b2d1982 100644 --- a/code/modules/mob/living/carbon/human/inventory.dm +++ b/code/modules/mob/living/carbon/human/inventory.dm @@ -10,6 +10,10 @@ H << "You are not holding anything to equip." return + if(istype(I, /obj/item/clothing/head/helmet/space/rig)) // If the item to be equipped is a rigid suit helmet + src << "\red You must fasten the helmet to a hardsuit first. (Target the head and use on a hardsuit)" // Stop eva helms equipping. + return 0 + if(H.equip_to_appropriate_slot(I)) if(hand) update_inv_l_hand(0) diff --git a/code/modules/mob/living/say.dm b/code/modules/mob/living/say.dm index f1cf208b4b1..bad5c10d9e0 100644 --- a/code/modules/mob/living/say.dm +++ b/code/modules/mob/living/say.dm @@ -83,7 +83,7 @@ var/list/department_radio_keys = list( else dongle = H.r_ear if(!istype(dongle)) return - if(dongle.translate_binary) return 1 + if(dongle.translate_hive) return 1 /mob/living/say(var/message) diff --git a/code/modules/mob/living/silicon/ai/freelook/eye.dm b/code/modules/mob/living/silicon/ai/freelook/eye.dm index 3d833c8de21..c2c23b02188 100644 --- a/code/modules/mob/living/silicon/ai/freelook/eye.dm +++ b/code/modules/mob/living/silicon/ai/freelook/eye.dm @@ -1,17 +1,19 @@ // AI EYE // -// An invisible (no icon) mob that the AI controls to look around the station with. +// A mob that the AI controls to look around the station with. // It streams chunks as it moves around, which will show it what the AI can and cannot see. /mob/aiEye name = "Inactive AI Eye" - icon = 'icons/obj/status_display.dmi' // For AI friend secret shh :o + icon = 'icons/mob/AI.dmi' + icon_state = "eye" + alpha = 127 var/mob/living/silicon/ai/ai = null density = 0 status_flags = GODMODE // You can't damage it. mouse_opacity = 0 see_in_dark = 7 - invisibility = INVISIBILITY_MAXIMUM + invisibility = INVISIBILITY_AI_EYE /mob/aiEye/New() ..() diff --git a/code/modules/mob/living/silicon/robot/robot_modules.dm b/code/modules/mob/living/silicon/robot/robot_modules.dm index 3c8710caf1a..294e5859bb8 100644 --- a/code/modules/mob/living/silicon/robot/robot_modules.dm +++ b/code/modules/mob/living/silicon/robot/robot_modules.dm @@ -343,6 +343,7 @@ src.modules += new /obj/item/weapon/card/emag(src) src.modules += new /obj/item/weapon/tank/jetpack/carbondioxide(src) src.modules += new /obj/item/weapon/crowbar(src) + src.modules += new /obj/item/weapon/pinpointer/operative(src) src.emag = null return diff --git a/code/modules/mob/living/simple_animal/borer.dm b/code/modules/mob/living/simple_animal/borer.dm index 56ca314b62e..abcd7b94627 100644 --- a/code/modules/mob/living/simple_animal/borer.dm +++ b/code/modules/mob/living/simple_animal/borer.dm @@ -233,7 +233,7 @@ else src << "\red You plunge your probosci deep into the cortex of the host brain, interfacing directly with their nervous system." host << "\red You feel a strange shifting sensation behind your eyes as an alien consciousness displaces yours." - + var/borer_key = src.key host.attack_log += text("\[[time_stamp()]\] [src.name] ([src.ckey]) has assumed control of [host.name] ([host.ckey])") msg_admin_attack("[src.name] ([src.ckey]) has assumed control of [host.name] ([host.ckey]) (JMP)") // host -> brain @@ -275,6 +275,8 @@ host.verbs += /mob/living/carbon/proc/punish_host host.verbs += /mob/living/carbon/proc/spawn_larvae + if(src && !src.key) + src.key = "@[borer_key]" return /mob/living/simple_animal/borer/verb/secrete_chemicals() diff --git a/code/modules/mob/mob.dm b/code/modules/mob/mob.dm index 54188426075..0f008d9f81a 100644 --- a/code/modules/mob/mob.dm +++ b/code/modules/mob/mob.dm @@ -106,7 +106,14 @@ var/obj/item/W = get_active_hand() if(istype(W)) - equip_to_slot_if_possible(W, slot) + if (istype(W, /obj/item/clothing)) + var/obj/item/clothing/C = W + if(C.rig_restrict_helmet) + src << "\red You must fasten the helmet to a hardsuit first. (Target the head and use on a hardsuit)" // Stop eva helms equipping. + else + equip_to_slot_if_possible(C, slot) + else + equip_to_slot_if_possible(W, slot) if(ishuman(src) && W == src:head) src:update_hair() diff --git a/code/modules/mob/say.dm b/code/modules/mob/say.dm index 8ba4a4555fa..41612819446 100644 --- a/code/modules/mob/say.dm +++ b/code/modules/mob/say.dm @@ -62,31 +62,28 @@ if(!other) return 1 //Universal speak makes everything understandable, for obvious reasons. - else if(other.universal_speak || src.universal_speak || src.universal_understand) + if(other.universal_speak || src.universal_speak || src.universal_understand) return 1 - else if (src.stat == 2) + if (src.stat == 2) return 1 - else if (speaking) //Language check. - var/understood - for(var/datum/language/L in src.languages) - if(speaking.name == L.name) - understood = 1 - break - - if(understood || universal_speak) + if(!speaking) //Handle languages later + if(other.universal_speak || src.universal_speak) + return 1 + if(isAI(src) && ispAI(other)) + return 1 + if (istype(other, src.type) || istype(src, other.type)) + return 1 + if (istype(other, /mob/living/carbon/human) && (istype(src, /mob/living/carbon/human) || istype(src, /mob/living/silicon/pai))) + return 1 + if(istype(other, /mob/living/carbon/alien) && istype(src, /mob/living/carbon/alien)) + return 1 + return 0 + + for(var/datum/language/L in src.languages) //Handling languages + if(speaking.name == L.name) return 1 - else - return 0 - else if(other.universal_speak || src.universal_speak) - return 1 - else if(isAI(src) && ispAI(other)) - return 1 - else if (istype(other, src.type) || istype(src, other.type)) - return 1 - else if (istype(other, /mob/living/carbon/human) && istype(src, /mob/living/carbon/human)) - return 1 return 0 /mob/proc/say_quote(var/text,var/datum/language/speaking) diff --git a/code/modules/organs/organ_external.dm b/code/modules/organs/organ_external.dm index 78f31a5d177..1f7da7049b2 100644 --- a/code/modules/organs/organ_external.dm +++ b/code/modules/organs/organ_external.dm @@ -1005,7 +1005,7 @@ Note that amputating the affected organ does in fact remove the infection from t if (burn_dam > 40) disfigure("burn") if(!brained) - if(brute_dam > 25) + if(brute_dam > 40) if(prob(10)) breakskull() diff --git a/code/modules/power/apc.dm b/code/modules/power/apc.dm index acea2b9849c..9697509e5e1 100644 --- a/code/modules/power/apc.dm +++ b/code/modules/power/apc.dm @@ -1206,7 +1206,6 @@ update() else if (last_ch != charging) queue_icon_update() - src.updateDialog() // val 0=off, 1=off(auto) 2=on 3=on(auto) // on 0=off, 1=on, 2=autooff diff --git a/code/modules/power/singularity/generator.dm b/code/modules/power/singularity/generator.dm index f2081503195..bcd8403b54c 100644 --- a/code/modules/power/singularity/generator.dm +++ b/code/modules/power/singularity/generator.dm @@ -12,16 +12,20 @@ /obj/machinery/the_singularitygen/process() var/turf/T = get_turf(src) if(src.energy >= 200) - if(fingerprintshidden && fingerprintshidden.len) - var/prints - for(var/i = 1, i < fingerprintshidden.len, i++) - if(i > fingerprintshidden.len) - break - if(i == 1) - prints += fingerprintshidden[i] - else - prints += ", [fingerprintshidden[i]]" - log_admin("New singularity made, all touchers. [prints]. Last touched by [fingerprintslast].") + var/admin_message = "New singularity made" + if(fingerprintshidden && length(fingerprintshidden)) + admin_message += "touched by: " + if(islist(fingerprintshidden)) + for(var/fp in fingerprintshidden) + admin_message += "[fp], " + admin_message += " - Last touched by [fingerprintslast]. at [x],[y],[z]" + else + admin_message += fingerprintshidden + + log_admin(admin_message) + message_admins("[admin_message] at [x],[y],[z]",1) + investigate_log("[admin_message] at [x],[y],[z]","singulo") + new /obj/machinery/singularity/(T, 50) if(src) del(src) @@ -34,6 +38,9 @@ "You secure the [src.name] to the floor.", \ "You hear a ratchet") src.add_hiddenprint(user) + + + else user.visible_message("[user.name] unsecures [src.name] from the floor.", \ "You unsecure the [src.name] from the floor.", \ diff --git a/code/modules/projectiles/guns/projectile/launchers.dm b/code/modules/projectiles/guns/projectile/launchers.dm index 5e53c71efa9..d1d7e471f1b 100644 --- a/code/modules/projectiles/guns/projectile/launchers.dm +++ b/code/modules/projectiles/guns/projectile/launchers.dm @@ -9,6 +9,8 @@ fire_sound = 'sound/effects/Explosion1.ogg' origin_tech = "combat=3" mag_type = "/obj/item/ammo_box/magazine/m75" + isHandgun() + return 1 /obj/item/weapon/gun/projectile/automatic/gyropistol/New() ..() diff --git a/code/modules/projectiles/guns/projectile/pistol.dm b/code/modules/projectiles/guns/projectile/pistol.dm index 26555a3b040..108e6977e11 100644 --- a/code/modules/projectiles/guns/projectile/pistol.dm +++ b/code/modules/projectiles/guns/projectile/pistol.dm @@ -6,6 +6,8 @@ origin_tech = "combat=2;materials=2;syndicate=2" mag_type = "/obj/item/ammo_box/magazine/m10mm" can_suppress = 1 + isHandgun() + return 1 /obj/item/weapon/gun/projectile/automatic/pistol/update_icon() ..() @@ -19,6 +21,8 @@ w_class = 3.0 origin_tech = "combat=3;materials=2" mag_type = "/obj/item/ammo_box/magazine/m45" + isHandgun() + return 1 /obj/item/weapon/gun/projectile/automatic/m2411/update_icon() @@ -32,6 +36,8 @@ icon_state = "deagle" force = 14.0 mag_type = "/obj/item/ammo_box/magazine/m50" + isHandgun() + return 1 /obj/item/weapon/gun/projectile/automatic/deagle/update_icon() ..() diff --git a/code/modules/reagents/Chemistry-Machinery.dm b/code/modules/reagents/Chemistry-Machinery.dm index 369ccb1ec08..7bf99cec11e 100644 --- a/code/modules/reagents/Chemistry-Machinery.dm +++ b/code/modules/reagents/Chemistry-Machinery.dm @@ -363,6 +363,7 @@ var/bottlesprite = "1" //yes, strings var/pillsprite = "1" var/client/has_sprites = list() + var/printing = null /obj/machinery/chem_master/New() var/datum/reagents/R = new/datum/reagents(100) @@ -439,7 +440,33 @@ usr << browse(null, "window=chemmaster") usr.unset_machine() return - + + if (href_list["print_p"]) + if (!(src.printing)) + src.printing = 1 + for(var/mob/O in viewers(usr)) + O.show_message("\blue \the [src] rattles and prints out a sheet of paper.", 1) + sleep(25) + var/obj/item/weapon/paper/P = new /obj/item/weapon/paper( src.loc ) + P.info = "
Chemical Analysis

" + P.info += "Time of analysis: [worldtime2text(world.time)]

" + P.info += "Chemical name: [href_list["name"]]
" + if(href_list["name"] == "Blood") + var/datum/reagents/R = beaker:reagents + var/datum/reagent/blood/G + for(var/datum/reagent/F in R.reagent_list) + if(F.name == href_list["name"]) + G = F + break + var/B = G.data["blood_type"] + var/C = G.data["blood_DNA"] + P.info += "Description:
Blood Type: [B]
DNA: [C]" + else + P.info += "Description: [href_list["desc"]]" + P.info += "

Notes:
" + P.name = "Chemical Analysis - [href_list["name"]]" + src.printing = null + if(beaker) var/datum/reagents/R = beaker:reagents if (href_list["analyze"]) @@ -454,9 +481,11 @@ var/A = G.name var/B = G.data["blood_type"] var/C = G.data["blood_DNA"] - dat += "Chemmaster 3000Chemical infos:

Name:
[A]

Description:
Blood Type: [B]
DNA: [C]


(Back)" + dat += "Chemmaster 3000Chemical infos:

Name:
[A]

Description:
Blood Type: [B]
DNA: [C]" else - dat += "Chemmaster 3000Chemical infos:

Name:
[href_list["name"]]

Description:
[href_list["desc"]]


(Back)" + dat += "Chemmaster 3000Chemical infos:

Name:
[href_list["name"]]

Description:
[href_list["desc"]]" + dat += "

(Print Analysis)
" + dat += "(Back)" else dat += "Condimaster 3000Condiment infos:

Name:
[href_list["name"]]

Description:
[href_list["desc"]]


(Back)" usr << browse(dat, "window=chem_master;size=575x400") diff --git a/code/modules/reagents/reagent_containers/hypospray.dm b/code/modules/reagents/reagent_containers/hypospray.dm index d045f3d3644..cd0a0cca72f 100644 --- a/code/modules/reagents/reagent_containers/hypospray.dm +++ b/code/modules/reagents/reagent_containers/hypospray.dm @@ -19,11 +19,6 @@ return src.attack_hand(user) -/obj/item/weapon/reagent_containers/hypospray/New() //comment this to make hypos start off empty - ..() - reagents.add_reagent("doctorsdelight", 30) - return - /obj/item/weapon/reagent_containers/hypospray/attack(mob/M as mob, mob/user as mob) if(!reagents.total_volume) user << "\red [src] is empty." @@ -55,6 +50,10 @@ return +/obj/item/weapon/reagent_containers/hypospray/CMO/New() + ..() + reagents.add_reagent("doctorsdelight", 30) + /obj/item/weapon/reagent_containers/hypospray/combat name = "combat stimulant injector" desc = "A modified air-needle autoinjector, used by support operatives to quickly heal injuries in combat." @@ -65,7 +64,6 @@ /obj/item/weapon/reagent_containers/hypospray/combat/New() ..() - reagents.remove_reagent("doctorsdelight", 30) reagents.add_reagent("synaptizine", 30) @@ -77,20 +75,16 @@ amount_per_transfer_from_this = 10 possible_transfer_amounts = list(10) volume = 10 - var/emagged = 0 + flags = null /obj/item/weapon/reagent_containers/hypospray/autoinjector/New() ..() - reagents.remove_reagent("doctorsdelight", 30) reagents.add_reagent("inaprovaline", 10) update_icon() return /obj/item/weapon/reagent_containers/hypospray/autoinjector/attack(mob/M as mob, mob/user as mob) ..() - if(!emagged) - if(reagents.total_volume <= 0) //Prevents autoinjectors to be refilled. - flags &= ~OPENCONTAINER update_icon() return @@ -107,27 +101,28 @@ else usr << "\blue It is spent." -/obj/item/weapon/reagent_containers/hypospray/autoinjector/attackby(var/obj/item/weapon/D as obj, var/mob/user as mob) - if(istype(D, /obj/item/weapon/card/emag) && !emagged) - emagged = 1 - user << "You bypass the electronic child-safety lock on the reagent storage." - else - ..() - return +/obj/item/weapon/reagent_containers/hypospray/autoinjector/leporazine //basilisks + name = "leporazine 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." + icon_state = "lepopen" -/obj/item/weapon/reagent_containers/hypospray/hyperzine - name = "emergency stimulant autoinjector" - desc = "A potent mix of pain killers and muscle stimulants." - icon_state = "autoinjector" - item_state = "autoinjector" - amount_per_transfer_from_this = 5 - volume = 5 - -/obj/item/weapon/reagent_containers/hypospray/hyperzine/New() +/obj/item/weapon/reagent_containers/hypospray/autoinjector/leporazine/New() ..() - reagents.add_reagent("hyperzine", 5) + reagents.remove_reagent("inaprovaline", 10) + reagents.add_reagent("leporazine", 9) + reagents.add_reagent("lexorin", 1) update_icon() return -/obj/item/weapon/reagent_containers/hypospray/hyperzine/attack(mob/M as mob, mob/user as mob) - ..() \ No newline at end of file +/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." + icon_state = "stimpen" + +/obj/item/weapon/reagent_containers/hypospray/autoinjector/stimpack/New() + ..() + reagents.remove_reagent("inaprovaline", 10) + reagents.add_reagent("hyperzine", 9) + reagents.add_reagent("lexorin", 1) + update_icon() + return \ No newline at end of file diff --git a/code/modules/research/designs/autolathe_designs.dm b/code/modules/research/designs/autolathe_designs.dm index 69759b63b69..541518016b9 100644 --- a/code/modules/research/designs/autolathe_designs.dm +++ b/code/modules/research/designs/autolathe_designs.dm @@ -311,7 +311,7 @@ id = "retractor" build_type = AUTOLATHE materials = list("$metal" = 6000, "$glass" = 3000) - build_path = /obj/item/weapon/ + build_path = /obj/item/weapon/retractor category = list("initial", "Medical") /datum/design/scalpel diff --git a/code/modules/research/xenoarchaeology/artifact/effect.dm b/code/modules/research/xenoarchaeology/artifact/effect.dm index 06337842153..0518e677419 100644 --- a/code/modules/research/xenoarchaeology/artifact/effect.dm +++ b/code/modules/research/xenoarchaeology/artifact/effect.dm @@ -92,12 +92,12 @@ proc/GetAnomalySusceptibility(var/mob/living/carbon/human/H) //anomaly suits give best protection, but excavation suits are almost as good if(istype(H.wear_suit,/obj/item/clothing/suit/bio_suit/anomaly)) protected += 0.6 - else if(istype(H.wear_suit,/obj/item/clothing/suit/space/anomaly)) + else if(istype(H.wear_suit,/obj/item/clothing/suit/space/eva/anomaly)) protected += 0.5 if(istype(H.head,/obj/item/clothing/head/bio_hood/anomaly)) protected += 0.3 - else if(istype(H.head,/obj/item/clothing/head/helmet/space/anomaly)) + else if(istype(H.head,/obj/item/clothing/head/helmet/space/eva/anomaly)) protected += 0.2 //latex gloves and science goggles also give a bit of bonus protection diff --git a/code/modules/research/xenoarchaeology/tools/anomaly_suit.dm b/code/modules/research/xenoarchaeology/tools/anomaly_suit.dm index 8922c5dae17..b8277fa5e8e 100644 --- a/code/modules/research/xenoarchaeology/tools/anomaly_suit.dm +++ b/code/modules/research/xenoarchaeology/tools/anomaly_suit.dm @@ -14,7 +14,7 @@ item_state = "engspace_helmet" armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 100, rad = 100) -/obj/item/clothing/suit/space/anomaly +/obj/item/clothing/suit/space/eva/anomaly name = "Excavation suit" desc = "A pressure resistant excavation suit partially capable of insulating against exotic alien energies." icon_state = "cespace_suit" @@ -22,7 +22,7 @@ armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 100, rad = 100) allowed = list(/obj/item/device/flashlight,/obj/item/weapon/tank,/obj/item/device/suit_cooling_unit) -/obj/item/clothing/head/helmet/space/anomaly +/obj/item/clothing/head/helmet/space/eva/anomaly name = "Excavation hood" desc = "A pressure resistant excavation hood partially capable of insulating against exotic alien energies." icon_state = "cespace_helmet" diff --git a/code/modules/surgery/braincore.dm b/code/modules/surgery/braincore.dm index 7445fc2233e..3ce95d81553 100644 --- a/code/modules/surgery/braincore.dm +++ b/code/modules/surgery/braincore.dm @@ -30,7 +30,6 @@ user.visible_message("\blue [user] has cut through [target]'s skull open with \the [tool].", \ "\blue You have cut through [target]'s skull open with \the [tool].") target.brain_op_stage = 2 - target.expose_brain() fail_step(mob/living/user, mob/living/carbon/human/target, target_zone, obj/item/tool) user.visible_message("\red [user]'s hand slips, cracking [target]'s skull with \the [tool]!" , \ diff --git a/code/modules/vehicles/ambulance.dm b/code/modules/vehicles/ambulance.dm index 8212e93b085..581b8ca8efd 100644 --- a/code/modules/vehicles/ambulance.dm +++ b/code/modules/vehicles/ambulance.dm @@ -16,8 +16,8 @@ var/obj/item/weapon/key/ambulance_train/key /obj/item/weapon/key/ambulance_train - name = "key" - desc = "A keyring with a small steel key, and a yellow fob reading \"Choo Choo!\"." + name = "ambulance key" + desc = "A keyring with a small steel key, and tag with a red cross on it." icon = 'icons/obj/vehicles.dmi' icon_state = "keydoc" w_class = 1 diff --git a/code/modules/virus2/disease2.dm b/code/modules/virus2/disease2.dm index 41787ac3ef9..f699c68a82d 100644 --- a/code/modules/virus2/disease2.dm +++ b/code/modules/virus2/disease2.dm @@ -1,7 +1,7 @@ /datum/disease2/disease var/infectionchance = 70 var/speed = 1 - var/spreadtype = "Contact" // Can also be "Airborne" + var/spreadtype = "Contact" // Can also be "Airborne" or "Injection" var/stage = 1 var/stageprob = 10 var/dead = 0 @@ -16,7 +16,7 @@ uniqueID = rand(0,10000) ..() -/datum/disease2/disease/proc/makerandom(var/greater=0) +/datum/disease2/disease/proc/makerandom(var/greater=0, var/allow_injection=0) for(var/i=1 ; i <= max_stage ; i++ ) var/datum/disease2/effectholder/holder = new /datum/disease2/effectholder holder.stage = i @@ -30,6 +30,7 @@ antigen |= text2num(pick(ANTIGENS)) antigen |= text2num(pick(ANTIGENS)) spreadtype = prob(70) ? "Airborne" : "Contact" + if(allow_injection) spreadtype = prob(20) ? spreadtype : "Injection" if(all_species.len) affected_species = get_infectable_species() @@ -58,15 +59,18 @@ return var/mob/living/carbon/human/MS = mob - if(MS && (MS.species.flags & IS_SYNTHETIC)) - return + if(istype(MS)) + if(MS.species.flags & IS_SYNTHETIC) + return if(stage <= 1 && clicks == 0) // with a certain chance, the mob may become immune to the disease before it starts properly if(prob(5)) mob.antibodies |= antigen - if(mob.radiation > 50) - if(prob(1)) - majormutateinactivate(mob) + +// NO MORE MUTATING IN MOBS - Bone White +// if(mob.radiation > 50) +// if(prob(1)) +// majormutateinactivate(mob) //Space antibiotics stop disease completely if(mob.reagents.has_reagent("spaceacillin")) diff --git a/code/modules/virus2/helpers.dm b/code/modules/virus2/helpers.dm index c1fd6ea2139..e3525797d71 100644 --- a/code/modules/virus2/helpers.dm +++ b/code/modules/virus2/helpers.dm @@ -24,6 +24,8 @@ proc/get_infection_chance(var/mob/living/carbon/M, var/vector = "Airborne") if(istype(M:wear_suit, /obj/item/clothing/suit/bio_suit) && istype(M:head, /obj/item/clothing/head/bio_hood)) score += 15 + if (vector == "Injection") score = 30 // Makes sure Injection viruses cannot be caught normally + // log_debug("[M]'s resistance to [vector] viruses: [score]") diff --git a/code/modules/virus2/items_devices.dm b/code/modules/virus2/items_devices.dm index 914622c96f5..a43d8c15502 100644 --- a/code/modules/virus2/items_devices.dm +++ b/code/modules/virus2/items_devices.dm @@ -3,7 +3,7 @@ /obj/item/device/antibody_scanner name = "\improper Antibody Scanner" desc = "Scans living beings for antibodies in their blood." - icon_state = "health" + icon_state = "antibody" w_class = 2.0 item_state = "electronic" flags = FPRINT | TABLEPASS | CONDUCT @@ -50,7 +50,7 @@ /obj/item/weapon/virusdish/random/New() ..() src.virus2 = new /datum/disease2/disease - src.virus2.makerandom() + src.virus2.makerandom(0, 1) // Virus dishes get minor effects only on creation, and have a chance of being injection type growth = rand(5, 50) /obj/item/weapon/virusdish/attackby(var/obj/item/weapon/W as obj,var/mob/living/carbon/user as mob) diff --git a/code/setup.dm b/code/setup.dm index 8584fbf24b4..ce7ec7b3d02 100644 --- a/code/setup.dm +++ b/code/setup.dm @@ -596,8 +596,11 @@ var/list/liftable_structures = list(\ #define INVISIBILITY_SPIRIT 50 #define SEE_SPIRITS 50 +#define SEE_INVISIBLE_OBSERVER_NOOBSERVERS 59 #define INVISIBILITY_OBSERVER 60 #define SEE_INVISIBLE_OBSERVER 60 +#define INVISIBILITY_AI_EYE 61 +#define SEE_INVISIBLE_OBSERVER_AI_EYE 61 #define INVISIBILITY_MAXIMUM 100 diff --git a/icons/mob/AI.dmi b/icons/mob/AI.dmi index b8cb5064aae..c13a97fa50d 100644 Binary files a/icons/mob/AI.dmi and b/icons/mob/AI.dmi differ diff --git a/icons/mob/back.dmi b/icons/mob/back.dmi index d295d948414..bbc484bc8a7 100644 Binary files a/icons/mob/back.dmi and b/icons/mob/back.dmi differ diff --git a/icons/mob/head.dmi b/icons/mob/head.dmi index c9125d4430b..f0cc991cef5 100644 Binary files a/icons/mob/head.dmi and b/icons/mob/head.dmi differ diff --git a/icons/mob/in-hand/tools.dmi b/icons/mob/in-hand/tools.dmi index 8712f018e49..d7070df48f8 100644 Binary files a/icons/mob/in-hand/tools.dmi and b/icons/mob/in-hand/tools.dmi differ diff --git a/icons/mob/species/vox/head.dmi b/icons/mob/species/vox/head.dmi index db10541af06..67a90c9c4c5 100644 Binary files a/icons/mob/species/vox/head.dmi and b/icons/mob/species/vox/head.dmi differ diff --git a/icons/mob/species/vox/helmet.dmi b/icons/mob/species/vox/helmet.dmi new file mode 100644 index 00000000000..afbbc2f1cca Binary files /dev/null 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 336b49d7d3d..b401a0b05f9 100644 Binary files a/icons/mob/species/vox/suit.dmi and b/icons/mob/species/vox/suit.dmi differ diff --git a/icons/mob/suit.dmi b/icons/mob/suit.dmi index 661aa232a8e..254c1abce75 100644 Binary files a/icons/mob/suit.dmi and b/icons/mob/suit.dmi differ diff --git a/icons/obj/clothing/hats.dmi b/icons/obj/clothing/hats.dmi index c9b8287764a..d8af262681a 100644 Binary files a/icons/obj/clothing/hats.dmi and b/icons/obj/clothing/hats.dmi differ diff --git a/icons/obj/clothing/species/skrell/hats.dmi b/icons/obj/clothing/species/skrell/hats.dmi index 30c012ddf18..1fbf2cb6afc 100644 Binary files a/icons/obj/clothing/species/skrell/hats.dmi and b/icons/obj/clothing/species/skrell/hats.dmi differ diff --git a/icons/obj/clothing/species/skrell/suits.dmi b/icons/obj/clothing/species/skrell/suits.dmi index 47af90a1212..dfde1247285 100644 Binary files a/icons/obj/clothing/species/skrell/suits.dmi and b/icons/obj/clothing/species/skrell/suits.dmi differ diff --git a/icons/obj/clothing/species/unathi/hats.dmi b/icons/obj/clothing/species/unathi/hats.dmi index 987e0accac6..c4070d8eb46 100644 Binary files a/icons/obj/clothing/species/unathi/hats.dmi and b/icons/obj/clothing/species/unathi/hats.dmi differ diff --git a/icons/obj/clothing/species/unathi/suits.dmi b/icons/obj/clothing/species/unathi/suits.dmi index 9e6217ce1b2..f3eab9698a1 100644 Binary files a/icons/obj/clothing/species/unathi/suits.dmi and b/icons/obj/clothing/species/unathi/suits.dmi differ diff --git a/icons/obj/clothing/species/vox/hats.dmi b/icons/obj/clothing/species/vox/hats.dmi new file mode 100644 index 00000000000..ff959db69f9 Binary files /dev/null and b/icons/obj/clothing/species/vox/hats.dmi differ diff --git a/icons/obj/clothing/species/vox/suits.dmi b/icons/obj/clothing/species/vox/suits.dmi new file mode 100644 index 00000000000..ae8595ac047 Binary files /dev/null and b/icons/obj/clothing/species/vox/suits.dmi differ diff --git a/icons/obj/clothing/suits.dmi b/icons/obj/clothing/suits.dmi index a9923205537..f59d96322a0 100644 Binary files a/icons/obj/clothing/suits.dmi and b/icons/obj/clothing/suits.dmi differ diff --git a/icons/obj/device.dmi b/icons/obj/device.dmi index 977071c5f4d..a83f398a1b3 100644 Binary files a/icons/obj/device.dmi and b/icons/obj/device.dmi differ diff --git a/icons/obj/items.dmi b/icons/obj/items.dmi index a38b4e98c67..9d85238456b 100644 Binary files a/icons/obj/items.dmi and b/icons/obj/items.dmi differ diff --git a/icons/obj/syringe.dmi b/icons/obj/syringe.dmi index e430056402c..259a0993096 100644 Binary files a/icons/obj/syringe.dmi and b/icons/obj/syringe.dmi differ diff --git a/icons/obj/tank.dmi b/icons/obj/tank.dmi index 7ae00b2092f..245d1222ce2 100644 Binary files a/icons/obj/tank.dmi and b/icons/obj/tank.dmi differ diff --git a/maps/cyberiad.dmm b/maps/cyberiad.dmm index 9653666ba8d..53bf50e7e66 100644 --- a/maps/cyberiad.dmm +++ b/maps/cyberiad.dmm @@ -236,7 +236,7 @@ "aeB" = (/obj/structure/reagent_dispensers/fueltank,/obj/machinery/atmospherics/unary/vent_pump,/obj/effect/decal/warning_stripes/yellow/hollow,/obj/effect/decal/warning_stripes/northeastcorner,/turf/simulated/floor,/area/security/podbay) "aeC" = (/obj/effect/decal/warning_stripes/north,/turf/simulated/floor,/area/security/podbay) "aeD" = (/turf/simulated/floor{tag = "icon-stage_stairs"; icon_state = "stage_stairs"},/area/security/podbay) -"aeE" = (/obj/machinery/atmospherics/unary/vent_scrubber{on = 1; scrub_N2O = 1; scrub_Toxins = 1},/obj/structure/table,/obj/item/device/modkit/unathi,/obj/item/device/modkit/tajaran,/obj/effect/decal/warning_stripes/north,/turf/simulated/floor,/area/security/podbay) +"aeE" = (/obj/machinery/atmospherics/unary/vent_scrubber{on = 1; scrub_N2O = 1; scrub_Toxins = 1},/obj/effect/decal/warning_stripes/north,/turf/simulated/floor,/area/security/podbay) "aeF" = (/obj/effect/decal/warning_stripes/northwest,/turf/simulated/floor,/area/security/range) "aeG" = (/obj/machinery/light{dir = 1; on = 1},/turf/simulated/floor{icon_state = "floorgrime"},/area/security/range) "aeH" = (/obj/effect/decal/warning_stripes/northeast,/turf/simulated/floor,/area/security/range) @@ -280,7 +280,7 @@ "aft" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/structure/grille,/obj/structure/cable{icon_state = "0-4"; d2 = 4},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plating,/area/security/securearmoury) "afu" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"; tag = ""},/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"; tag = ""},/obj/machinery/door/window/brigdoor{dir = 2; name = "Secure Armory"; req_access_txt = "3"},/obj/machinery/door/window/brigdoor{dir = 1; name = "Secure Armory"; req_access_txt = "3"},/obj/machinery/door/firedoor,/turf/simulated/floor{icon_state = "dark"},/area/security/securearmoury) "afv" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/structure/grille,/obj/structure/cable{d2 = 8; icon_state = "0-8"},/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 1},/turf/simulated/floor/plating,/area/security/securearmoury) -"afw" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 6},/turf/simulated/floor{icon_state = "red"; dir = 9},/area/security/securehallway) +"afw" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 6},/obj/machinery/vending/eva,/turf/simulated/floor{icon_state = "red"; dir = 9},/area/security/securehallway) "afx" = (/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"; tag = ""},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor{icon_state = "red"; dir = 1},/area/security/securehallway) "afy" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/turf/simulated/floor{icon_state = "red"; dir = 1},/area/security/securehallway) "afz" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 8; on = 1},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/turf/simulated/floor{icon_state = "red"; dir = 1},/area/security/securehallway) @@ -595,7 +595,7 @@ "alw" = (/obj/structure/reagent_dispensers/peppertank{pixel_y = -30},/obj/machinery/light,/turf/simulated/floor{icon_state = "red"},/area/security/main) "alx" = (/obj/structure/closet/secure_closet/security,/obj/machinery/firealarm{dir = 1; pixel_y = -24},/turf/simulated/floor{icon_state = "red"; dir = 6},/area/security/main) "aly" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced,/obj/machinery/door/poddoor{density = 0; icon_state = "pdoor0"; id = "Secure Gate"; name = "Security Blast Door"; opacity = 0},/obj/structure/cable,/turf/simulated/floor/plating,/area/security/main) -"alz" = (/obj/structure/window/reinforced{dir = 8},/obj/structure/table/reinforced,/obj/structure/table/reinforced,/obj/item/stack/medical/bruise_pack{pixel_x = 10; pixel_y = 2},/obj/item/stack/medical/bruise_pack,/obj/item/stack/medical/ointment{pixel_y = 4},/obj/structure/cable{icon_state = "0-4"; d2 = 4},/obj/machinery/power/apc{name = "Security Office APC"; pixel_y = -24},/obj/structure/disposalpipe/segment{dir = 1; icon_state = "pipe-c"},/turf/simulated/floor{dir = 2; icon_state = "redfull"; tag = "icon-redfull (NORTHWEST)"},/area/security/main) +"alz" = (/obj/structure/window/reinforced{dir = 8},/obj/structure/table/reinforced,/obj/structure/table/reinforced,/obj/structure/cable{icon_state = "0-4"; d2 = 4},/obj/machinery/power/apc{name = "Security Office APC"; pixel_y = -24},/obj/structure/disposalpipe/segment{dir = 1; icon_state = "pipe-c"},/obj/item/stack/medical/advanced/bruise_pack,/turf/simulated/floor{dir = 2; icon_state = "redfull"; tag = "icon-redfull (NORTHWEST)"},/area/security/main) "alA" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/obj/structure/disposalpipe/segment{dir = 2; icon_state = "pipe-c"},/obj/machinery/vending/wallmed1{name = "Emergency NanoMed"; pixel_x = 0; pixel_y = -32; req_access_txt = "0"},/turf/simulated/floor,/area/security/main) "alB" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"; tag = ""},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/obj/structure/disposalpipe/segment,/turf/simulated/floor,/area/security/main) "alC" = (/obj/structure/stool/bed/chair{dir = 8},/obj/effect/landmark/start{name = "Security Officer"},/obj/machinery/alarm{dir = 1; icon_state = "alarm0"; pixel_y = -22},/turf/simulated/floor,/area/security/main) @@ -1743,8 +1743,8 @@ "aHA" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/turf/simulated/floor,/area/ai_monitored/storage/eva) "aHB" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/obj/machinery/camera{c_tag = "EVA East"; dir = 8; network = list("SS13")},/obj/structure/table/reinforced,/obj/item/stack/sheet/metal{amount = 50},/obj/item/stack/sheet/metal{amount = 50},/obj/item/stack/sheet/metal{amount = 50},/turf/simulated/floor{dir = 4; icon_state = "warning"},/area/ai_monitored/storage/eva) "aHC" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced,/obj/structure/cable{d2 = 8; icon_state = "0-8"},/obj/structure/cable{d2 = 8; icon_state = "0-8"},/turf/simulated/floor/plating,/area/ai_monitored/storage/eva) -"aHD" = (/obj/structure/rack{dir = 8; layer = 2.9},/obj/item/clothing/suit/space/skrell/white,/obj/item/clothing/head/helmet/space/skrell/white,/turf/simulated/floor{dir = 8; icon_state = "vault"; tag = "icon-vault (WEST)"},/area/ai_monitored/storage/eva) -"aHE" = (/obj/structure/rack{dir = 8; layer = 2.9},/obj/item/clothing/head/helmet/space/skrell/black,/obj/item/clothing/suit/space/skrell/black,/turf/simulated/floor{dir = 8; icon_state = "vault"; tag = "icon-vault (WEST)"},/area/ai_monitored/storage/eva) +"aHD" = (/obj/item/clothing/suit/space/eva/mime,/obj/item/clothing/head/helmet/space/eva/mime,/obj/structure/rack{dir = 8; layer = 2.9},/turf/simulated/floor{icon_state = "dark"},/area/ai_monitored/storage/eva) +"aHE" = (/obj/item/clothing/suit/space/eva/clown,/obj/item/clothing/head/helmet/space/eva/clown,/obj/structure/rack{dir = 8; layer = 2.9},/turf/simulated/floor{icon_state = "dark"},/area/ai_monitored/storage/eva) "aHF" = (/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 8; initialize_directions = 11; level = 1},/turf/simulated/floor/plating,/area/maintenance/fsmaint) "aHG" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 8; on = 1},/turf/simulated/floor{icon_state = "white"},/area/crew_quarters/sleep) "aHH" = (/obj/structure/sink{icon_state = "sink"; dir = 8; pixel_x = -12; pixel_y = 2},/obj/structure/mirror{pixel_x = -28},/obj/machinery/light{dir = 1},/turf/simulated/floor{icon_state = "freezerfloor"},/area/crew_quarters/toilet) @@ -1884,8 +1884,8 @@ "aKl" = (/obj/structure/table/reinforced,/obj/machinery/cell_charger,/obj/item/weapon/cell/high{charge = 100; maxcharge = 15000},/obj/item/weapon/cell/high{charge = 100; maxcharge = 15000},/obj/item/stack/cable_coil{pixel_x = 3; pixel_y = -7},/obj/item/stack/cable_coil{pixel_x = 3; pixel_y = -7},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/turf/simulated/floor{dir = 8; icon_state = "warning"},/area/ai_monitored/storage/eva) "aKm" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0; tag = ""},/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"; tag = ""},/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"; tag = ""},/turf/simulated/floor{icon_state = "dark"},/area/ai_monitored/storage/eva) "aKn" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/obj/structure/table/reinforced,/obj/item/weapon/book/manual/evaguide,/turf/simulated/floor{dir = 4; icon_state = "warning"},/area/ai_monitored/storage/eva) -"aKo" = (/obj/structure/rack{dir = 8; layer = 2.9},/obj/item/clothing/suit/space/vox/pressure{armor = list("melee" = 40, "bullet" = 10, "laser" = 20, "energy" = 15, "bomb" = 30, "bio" = 100, "rad" = 80); desc = "A huge, armoured, pressurized suit, designed for distinctly nonhuman proportions. Built by NT to emulate Vox design, but with the materials seen in an engineering RIG."; name = "NT Vox RIG"},/obj/item/clothing/gloves/yellow/vox,/obj/item/clothing/head/helmet/space/vox/pressure{armor = list("melee" = 40, "bullet" = 10, "laser" = 20, "energy" = 15, "bomb" = 30, "bio" = 100, "rad" = 80); name = "NT Vox Helmet"},/obj/item/clothing/mask/breath,/obj/item/clothing/shoes/magboots/vox,/obj/item/weapon/tank/nitrogen,/turf/simulated/floor{dir = 8; icon_state = "vault"; tag = "icon-vault (WEST)"},/area/ai_monitored/storage/eva) -"aKp" = (/obj/structure/rack{dir = 8; layer = 2.9},/obj/item/clothing/mask/breath,/obj/item/clothing/suit/space/unathi/rig_cheap,/obj/item/clothing/head/helmet/space/unathi/helmet_cheap,/obj/item/clothing/shoes/magboots,/turf/simulated/floor{dir = 8; icon_state = "vault"; tag = "icon-vault (WEST)"},/area/ai_monitored/storage/eva) +"aKo" = (/obj/structure/rack{dir = 8; layer = 2.9},/obj/item/clothing/shoes/magboots,/obj/item/weapon/tank/nitrogen,/obj/item/clothing/suit/space/eva/vox,/obj/item/clothing/mask/breath/vox,/obj/item/clothing/head/helmet/space/eva/vox,/turf/simulated/floor{dir = 8; icon_state = "vault"; tag = "icon-vault (WEST)"},/area/ai_monitored/storage/eva) +"aKp" = (/obj/machinery/light{icon_state = "tube1"; dir = 4},/obj/item/device/radio/intercom{freerange = 1; frequency = 1459; name = "Station Intercom (General)"; pixel_x = 30},/turf/simulated/floor{dir = 4; icon_state = "warning"},/area/ai_monitored/storage/eva) "aKq" = (/obj/machinery/door/firedoor/border_only,/turf/simulated/floor{dir = 8; icon_state = "bluecorner"},/area/hallway/primary/fore) "aKr" = (/obj/machinery/door/firedoor/border_only,/turf/simulated/floor{icon_state = "bluecorner"},/area/hallway/primary/fore) "aKs" = (/obj/machinery/camera{c_tag = "Dormitories South"; c_tag_order = 999; dir = 4; network = list("SS13")},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor{dir = 8; icon_state = "neutral"},/area/crew_quarters/fitness) @@ -1945,8 +1945,8 @@ "aLu" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/hologram/holopad,/turf/simulated/floor,/area/gateway) "aLv" = (/turf/simulated/floor,/area/gateway) "aLw" = (/obj/machinery/firealarm{dir = 4; pixel_x = 24},/turf/simulated/floor,/area/gateway) -"aLx" = (/obj/item/device/radio/intercom{freerange = 1; frequency = 1459; name = "Station Intercom (General)"; pixel_x = -30},/obj/machinery/suit_storage_unit,/turf/simulated/floor{dir = 8; icon_state = "warning"},/area/ai_monitored/storage/eva) -"aLy" = (/obj/machinery/light{icon_state = "tube1"; dir = 4},/obj/item/device/radio/intercom{freerange = 1; frequency = 1459; name = "Station Intercom (General)"; pixel_x = 30},/obj/machinery/suit_storage_unit,/turf/simulated/floor{dir = 4; icon_state = "warning"},/area/ai_monitored/storage/eva) +"aLx" = (/obj/item/device/radio/intercom{freerange = 1; frequency = 1459; name = "Station Intercom (General)"; pixel_x = -30},/turf/simulated/floor{dir = 8; icon_state = "warning"},/area/ai_monitored/storage/eva) +"aLy" = (/obj/structure/rack,/obj/item/weapon/storage/belt/archaeology,/obj/item/clothing/suit/space/eva/anomaly,/obj/item/clothing/head/helmet/space/eva/anomaly,/obj/item/clothing/mask/breath,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4; level = 1},/turf/simulated/floor,/area/research_outpost/gearstore) "aLz" = (/obj/machinery/door/airlock/glass{name = "Central Access"},/turf/simulated/floor{dir = 8; icon_state = "bluecorner"},/area/hallway/primary/fore) "aLA" = (/obj/machinery/door/airlock/glass{name = "Central Access"},/turf/simulated/floor,/area/hallway/primary/fore) "aLB" = (/obj/machinery/door/airlock/glass{name = "Central Access"},/turf/simulated/floor{icon_state = "bluecorner"},/area/hallway/primary/fore) @@ -2120,8 +2120,8 @@ "aON" = (/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 4; initialize_directions = 11; level = 1},/turf/simulated/floor{icon_state = "dark"},/area/chapel/main) "aOO" = (/obj/machinery/atmospherics/unary/vent_scrubber{dir = 8; on = 1},/turf/simulated/floor,/area/gateway) "aOP" = (/obj/machinery/light{dir = 4},/obj/effect/decal/warning_stripes/southwest,/obj/structure/closet/secure_closet/exile,/turf/simulated/floor,/area/gateway) -"aOQ" = (/obj/item/clothing/suit/space/mime,/obj/item/clothing/head/helmet/space/mime,/obj/structure/rack{dir = 8; layer = 2.9},/turf/simulated/floor{icon_state = "dark"},/area/ai_monitored/storage/eva) -"aOR" = (/obj/item/clothing/suit/space/clown,/obj/item/clothing/head/helmet/space/clown,/obj/structure/rack{dir = 8; layer = 2.9},/turf/simulated/floor{icon_state = "dark"},/area/ai_monitored/storage/eva) +"aOQ" = (/obj/structure/rack,/obj/item/weapon/storage/belt/archaeology,/obj/item/clothing/suit/space/eva/anomaly,/obj/item/clothing/head/helmet/space/eva/anomaly,/obj/item/clothing/mask/breath,/obj/machinery/light_switch{pixel_x = 0; pixel_y = 23},/turf/simulated/floor,/area/research_outpost/gearstore) +"aOR" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/firealarm{dir = 1; pixel_y = -24},/obj/structure/closet/paramedic,/obj/item/weapon/key/ambulance_train{name = "spare ambulance key"},/turf/simulated/floor{icon_state = "white"},/area/medical/paramedic) "aOS" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"; tag = ""},/turf/simulated/floor{dir = 8; icon_state = "warning"},/area/ai_monitored/storage/eva) "aOT" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"; tag = ""},/turf/simulated/floor,/area/ai_monitored/storage/eva) "aOU" = (/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"; tag = ""},/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"; tag = ""},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/turf/simulated/floor{icon_state = "dark"},/area/ai_monitored/storage/eva) @@ -3284,7 +3284,7 @@ "blh" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/firealarm{dir = 2; pixel_y = 24},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/turf/simulated/floor,/area/hallway/primary/starboard/east) "bli" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/power/apc{dir = 1; name = "Starboard Hall East APC"; pixel_y = 24},/obj/structure/cable{d2 = 8; icon_state = "0-8"},/turf/simulated/floor,/area/hallway/primary/starboard/east) "blj" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/item/device/radio/intercom{pixel_y = 25},/turf/simulated/floor,/area/hallway/primary/starboard/east) -"blk" = (/obj/machinery/atmospherics/pipe/manifold/hidden/supply{level = 1},/obj/machinery/camera{c_tag = "Starboard Primary Hallway 6"; dir = 2; network = list("SS13")},/turf/simulated/floor,/area/hallway/primary/starboard/east) +"blk" = (/obj/machinery/atmospherics/pipe/manifold/hidden/supply{level = 1},/obj/machinery/camera{c_tag = "Starboard Primary Hallway 7"; dir = 2; network = list("SS13")},/turf/simulated/floor,/area/hallway/primary/starboard/east) "bll" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor,/area/hallway/primary/starboard/east) "blm" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/status_display{layer = 4; pixel_x = 0; pixel_y = 32},/obj/machinery/door/firedoor/border_only{dir = 4; name = "Firelock East"},/obj/machinery/door/airlock/glass{name = "Central Access"},/turf/simulated/floor{dir = 4; icon_state = "whitecorner"},/area/hallway/secondary/exit) "bln" = (/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 1; level = 1},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor{icon_state = "redcorner"; dir = 1},/area/hallway/secondary/exit) @@ -3405,7 +3405,7 @@ "bny" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 6},/obj/machinery/door/firedoor/border_only,/turf/simulated/floor,/area/hallway/primary/starboard/west) "bnz" = (/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"; tag = ""},/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 4; initialize_directions = 11; level = 1},/turf/simulated/floor,/area/hallway/primary/starboard/east) "bnA" = (/obj/machinery/light,/turf/simulated/floor,/area/hallway/primary/starboard/east) -"bnB" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 1; on = 1},/obj/machinery/camera{c_tag = "Starboard Primary Hallway 5"; dir = 1; network = list("SS13")},/turf/simulated/floor,/area/hallway/primary/starboard/east) +"bnB" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 1; on = 1},/obj/machinery/camera{c_tag = "Starboard Primary Hallway 6"; dir = 1; network = list("SS13")},/turf/simulated/floor,/area/hallway/primary/starboard/east) "bnC" = (/obj/item/device/radio/intercom{name = "Station Intercom (General)"; pixel_x = -29; pixel_y = -29},/turf/simulated/floor,/area/hallway/primary/starboard/east) "bnD" = (/obj/machinery/light,/turf/simulated/floor{dir = 2; icon_state = "purple"},/area/hallway/primary/starboard/east) "bnE" = (/turf/simulated/floor{dir = 2; icon_state = "purple"},/area/hallway/primary/starboard/east) @@ -3703,7 +3703,7 @@ "btk" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/structure/disposalpipe/segment{dir = 2; icon_state = "pipe-c"},/turf/simulated/floor{icon_state = "white"},/area/medical/chemistry) "btl" = (/obj/structure/table/reinforced,/obj/item/weapon/hand_labeler,/obj/item/weapon/reagent_containers/spray/cleaner{desc = "Someone has crossed out the 'Space' from Space Cleaner and written in Chemistry. Scrawled on the back is, 'Okay, whoever filled this with polytrinic acid, it was only funny the first time. It was hard enough replacing the CMO's first cat!'"; name = "Chemistry Cleaner"},/obj/item/device/radio/intercom{freerange = 1; frequency = 1459; name = "Station Intercom (General)"; pixel_x = 30},/turf/simulated/floor{icon_state = "white"},/area/medical/chemistry) "btm" = (/obj/machinery/hologram/holopad,/turf/simulated/floor/airless{icon_state = "white"},/area/medical/reception) -"btn" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/camera{c_tag = "Medbay Psych Office Corridor"; network = list("SS13")},/turf/simulated/floor{icon_state = "white"},/area/medical/medbay2) +"btn" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/camera{c_tag = "Medbay Psych Office Corridor West"; network = list("SS13")},/turf/simulated/floor{icon_state = "white"},/area/medical/medbay2) "bto" = (/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 1; initialize_directions = 11; level = 1},/turf/simulated/floor{icon_state = "white"},/area/medical/medbay2) "btp" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 10},/obj/structure/disposalpipe/segment,/obj/structure/closet/walllocker/emerglocker/north,/turf/simulated/floor{icon_state = "white"},/area/medical/medbay2) "btq" = (/obj/machinery/door/airlock/maintenance{name = "Firefighting equipment"; req_access_txt = "12"},/turf/simulated/floor/plating,/area/maintenance/apmaint) @@ -5033,7 +5033,7 @@ "bSO" = (/obj/structure/reagent_dispensers/watertank,/obj/machinery/atmospherics/unary/vent_pump{dir = 4; on = 1},/obj/machinery/light_switch{pixel_y = -23},/turf/simulated/floor,/area/janitor) "bSP" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/light/small{dir = 1},/turf/simulated/floor/plating,/area/maintenance/asmaint) "bSQ" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0; tag = ""},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor/plating,/area/maintenance/asmaint) -"bSR" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/firealarm{dir = 1; pixel_y = -24},/obj/structure/closet/paramedic,/obj/item/key/ambulance,/turf/simulated/floor{icon_state = "white"},/area/medical/paramedic) +"bSR" = (/obj/structure/table/reinforced,/obj/item/weapon/reagent_containers/hypospray/CMO,/obj/item/weapon/reagent_containers/hypospray/CMO,/obj/item/weapon/reagent_containers/hypospray/CMO,/obj/item/weapon/reagent_containers/hypospray/CMO,/obj/item/weapon/reagent_containers/hypospray/CMO,/obj/item/weapon/reagent_containers/hypospray/CMO,/obj/item/weapon/storage/box/gloves,/obj/item/weapon/storage/box/gloves,/obj/item/weapon/storage/box/gloves,/obj/item/weapon/storage/box/gloves,/obj/item/weapon/storage/box/gloves,/obj/item/weapon/storage/box/gloves,/obj/item/weapon/storage/box/masks,/obj/item/weapon/storage/box/masks,/obj/item/weapon/storage/box/masks,/obj/item/weapon/storage/box/masks,/obj/item/weapon/storage/box/masks,/obj/item/weapon/storage/box/masks,/obj/item/device/radio/intercom{broadcasting = 1; dir = 1; frequency = 1441; listening = 0; name = "Spec Ops Intercom"; pixel_y = 28},/turf/unsimulated/floor{icon_state = "vault"; dir = 1},/area/centcom/specops) "bSS" = (/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 4; initialize_directions = 11; level = 1},/turf/simulated/floor{icon_state = "white"},/area/medical/paramedic) "bST" = (/obj/machinery/light,/obj/structure/cable{icon_state = "0-4"; d2 = 4},/obj/machinery/power/apc{dir = 2; name = "Paramedic APC"; pixel_y = -24},/obj/machinery/camera{c_tag = "Paramedic Bay"; dir = 1; network = list("SS13")},/turf/simulated/floor{icon_state = "white"},/area/medical/paramedic) "bSU" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/alarm{dir = 1; pixel_y = -22},/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"; tag = ""},/turf/simulated/floor{icon_state = "white"},/area/medical/paramedic) @@ -5418,7 +5418,7 @@ "caj" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/turf/simulated/floor{dir = 2; icon_state = "whiteblue"; tag = "icon-whitehall (WEST)"},/area/medical/medbay2) "cak" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 4; on = 1},/turf/simulated/floor{dir = 2; icon_state = "whiteblue"; tag = "icon-whitehall (WEST)"},/area/medical/medbay2) "cal" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor{dir = 2; icon_state = "whiteblue"; tag = "icon-whitehall (WEST)"},/area/medical/medbay2) -"cam" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 9; pixel_y = 0},/obj/machinery/power/apc{dir = 2; name = "Medbay APC"; pixel_y = -24},/obj/structure/cable,/turf/simulated/floor{dir = 2; icon_state = "whiteblue"; tag = "icon-whitehall (WEST)"},/area/medical/medbay2) +"cam" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 9; pixel_y = 0},/obj/machinery/power/apc{dir = 2; name = "Medbay APC"; pixel_y = -24},/obj/structure/cable,/obj/machinery/camera{c_tag = "Medbay Psych Office Corridor East"; dir = 1; network = list("SS13")},/turf/simulated/floor{dir = 2; icon_state = "whiteblue"; tag = "icon-whitehall (WEST)"},/area/medical/medbay2) "can" = (/obj/structure/disposalpipe/segment,/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/turf/simulated/floor{dir = 2; icon_state = "whiteblue"; tag = "icon-whitehall (WEST)"},/area/medical/medbay2) "cao" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/light/small{dir = 4},/obj/machinery/vending/medical,/turf/simulated/floor{icon_state = "white"},/area/medical/medbay2) "cap" = (/obj/machinery/alarm{dir = 4; icon_state = "alarm0"; pixel_x = -22},/obj/structure/table,/obj/item/weapon/paper_bin{pixel_x = 1; pixel_y = 9},/obj/item/weapon/pen,/turf/simulated/floor{icon_state = "white"},/area/toxins/telesci) @@ -6704,7 +6704,7 @@ "cyV" = (/obj/machinery/atmospherics/pipe/manifold/visible/yellow{dir = 1; level = 2},/turf/simulated/floor,/area/atmos) "cyW" = (/obj/machinery/atmospherics/pipe/simple/visible/green{level = 2},/obj/machinery/atmospherics/binary/pump{dir = 8; name = "N2O to Pure"; on = 0},/turf/simulated/floor,/area/atmos) "cyX" = (/obj/machinery/atmospherics/valve/digital{color = ""; dir = 4; name = "N2O Outlet Valve"},/turf/simulated/floor{icon_state = "escape"; dir = 5},/area/atmos) -"cyY" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 8; external_pressure_bound = 0; frequency = 1441; icon_state = "in"; id_tag = "n2o_out"; initialize_directions = 1; internal_pressure_bound = 4000; on = 1; pressure_checks = 2; pump_direction = 0},/obj/machinery/bot/secbot/buzzsky,/turf/simulated/floor/engine,/area/atmos) +"cyY" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 8; external_pressure_bound = 0; frequency = 1441; icon_state = "in"; id_tag = "n2o_out"; initialize_directions = 1; internal_pressure_bound = 4000; on = 1; pressure_checks = 2; pump_direction = 0},/turf/simulated/floor/engine,/area/atmos) "cyZ" = (/turf/simulated/floor/engine,/area/atmos) "cza" = (/obj/machinery/light,/obj/structure/sink{icon_state = "sink"; dir = 8; pixel_x = -12; pixel_y = 2},/turf/simulated/floor{dir = 10; icon_state = "warnwhite"; tag = "icon-warnwhite (NORTHEAST)"},/area/medical/virology/lab) "czb" = (/obj/machinery/atmospherics/unary/vent_scrubber{on = 1; scrub_N2O = 1; scrub_Toxins = 1},/obj/machinery/light,/obj/machinery/camera{c_tag = "Virology Decontamination West"; dir = 1; network = list("SS13")},/obj/item/device/radio/intercom{freerange = 0; frequency = 1459; name = "Station Intercom (General)"; pixel_x = 29},/obj/structure/sign/biohazard{pixel_x = 0; pixel_y = -32},/turf/simulated/floor{dir = 6; icon_state = "warnwhite"; tag = "icon-warnwhite (NORTHEAST)"},/area/medical/virology/lab) @@ -6898,7 +6898,7 @@ "cCH" = (/turf/simulated/floor/plating/airless,/turf/simulated/floor/plating/airless/catwalk{tag = "icon-catwalk3"; icon_state = "catwalk3"},/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"; tag = ""},/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"; tag = ""},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/turf/simulated/floor/plating/airless/catwalk{tag = "icon-catwalk0"; icon_state = "catwalk0"},/area/solar/starboard) "cCI" = (/turf/simulated/floor/plating/airless,/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"; tag = ""},/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"; tag = ""},/turf/simulated/floor/plating/airless/catwalk{tag = "icon-catwalk1"; icon_state = "catwalk1"},/area/solar/port) "cCJ" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"; tag = ""},/turf/simulated/floor,/area/engine/engineering) -"cCK" = (/obj/machinery/door/airlock/maintenance{name = "Engineering Shuttle"; req_access_txt = "10;24"; req_one_access_txt = null},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/turf/simulated/floor/plating,/area/maintenance/engi_shuttle) +"cCK" = (/obj/machinery/door/airlock/maintenance{name = "Engineering Shuttle"; req_access_txt = "0"; req_one_access_txt = "10;24"},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/turf/simulated/floor/plating,/area/maintenance/engi_shuttle) "cCL" = (/obj/structure/table,/turf/simulated/floor/plating,/area/maintenance/engi_shuttle) "cCM" = (/obj/machinery/power/apc{cell_type = 2500; dir = 1; name = "Engineering Shuttle Access APC"; pixel_x = 0; pixel_y = 25},/obj/structure/cable{icon_state = "0-4"; d2 = 4},/turf/simulated/floor/plating,/area/maintenance/engi_shuttle) "cCN" = (/obj/machinery/portable_atmospherics/canister/oxygen,/turf/simulated/floor,/area/engine/engineering) @@ -7064,7 +7064,7 @@ "cFR" = (/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"; tag = ""},/turf/simulated/floor,/area/engine/engineering) "cFS" = (/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"; tag = ""},/turf/simulated/floor{dir = 4; icon_state = "warning"},/area/engine/engineering) "cFT" = (/obj/machinery/status_display{density = 0; layer = 4; pixel_x = 0; pixel_y = -32},/obj/machinery/door/poddoor{density = 0; icon_state = "pdoor0"; id = "Engineering"; name = "Engineering Security Doors"; opacity = 0},/obj/machinery/door/airlock/external{name = "Engineering Escape Pod"; req_access = null; req_access_txt = "10"},/turf/simulated/floor/plating,/area/engine/engineering) -"cFU" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 8; on = 1},/obj/machinery/portable_atmospherics/pump,/turf/simulated/floor,/area/atmos) +"cFU" = (/obj/machinery/portable_atmospherics/pump,/turf/simulated/floor,/area/atmos) "cFV" = (/obj/machinery/portable_atmospherics/pump,/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/turf/simulated/floor,/area/atmos) "cFW" = (/obj/machinery/atmospherics/binary/pump{dir = 0; name = "Port to Filter"; on = 0},/turf/simulated/floor,/area/atmos) "cFX" = (/obj/machinery/camera{c_tag = "Atmospherics Central"; dir = 8; network = list("SS13")},/turf/simulated/floor,/area/atmos) @@ -7560,6 +7560,8 @@ "cPt" = (/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"; tag = ""},/obj/item/device/radio/intercom{dir = 4; name = "Station Intercom (General)"; pixel_x = 27},/turf/simulated/floor,/area/aisat/maintenance) "cPu" = (/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 4; initialize_directions = 11; level = 1},/turf/simulated/floor,/area/research_outpost/gearstore) "cPv" = (/obj/structure/reagent_dispensers/fueltank,/obj/machinery/atmospherics/pipe/simple/visible{dir = 5},/turf/simulated/floor/plating,/area/mine/laborcamp/security) +"cPw" = (/obj/structure/table/reinforced,/obj/item/weapon/storage/box/bodybags,/obj/item/weapon/storage/box/syringes,/obj/item/weapon/storage/box/autoinjectors,/obj/item/weapon/storage/box/gloves,/obj/item/weapon/storage/firstaid/adv,/obj/item/bodybag/cryobag,/obj/item/weapon/reagent_containers/hypospray/CMO,/turf/unsimulated/floor{icon_state = "vault"; dir = 8},/area/centcom/specops) +"cPx" = (/obj/machinery/bot/secbot/buzzsky,/turf/simulated/floor,/area/derelict/bridge) "cPy" = (/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"; tag = ""},/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"; tag = ""},/obj/effect/decal/warning_stripes/north,/obj/machinery/hologram/holopad,/turf/simulated/floor,/area/aisat/maintenance) "cPz" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/obj/effect/decal/warning_stripes/northwestcorner,/turf/simulated/floor,/area/aisat/maintenance) "cPA" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 6},/turf/simulated/floor,/area/aisat/maintenance) @@ -8584,7 +8586,6 @@ "djq" = (/obj/structure/rack,/obj/item/weapon/gun/energy/stunrevolver,/obj/item/weapon/gun/energy/stunrevolver,/obj/item/weapon/gun/energy/stunrevolver,/obj/item/weapon/gun/energy/stunrevolver,/obj/item/weapon/gun/energy/stunrevolver,/obj/item/weapon/gun/energy/stunrevolver,/turf/unsimulated/floor{icon_state = "vault"; dir = 1},/area/centcom/specops) "djr" = (/obj/structure/rack,/obj/item/weapon/storage/box/flashbangs,/obj/item/weapon/storage/box/flashbangs,/obj/item/weapon/storage/box/flashbangs,/obj/item/weapon/storage/box/flashbangs,/obj/item/weapon/storage/box/flashbangs,/obj/item/weapon/storage/box/flashbangs,/obj/item/weapon/storage/box/teargas,/obj/item/weapon/storage/box/teargas,/obj/item/weapon/storage/box/teargas,/obj/item/weapon/storage/box/teargas,/obj/item/weapon/storage/box/teargas,/obj/item/weapon/storage/box/teargas,/turf/unsimulated/floor{icon_state = "vault"; dir = 1},/area/centcom/specops) "djs" = (/obj/structure/table/reinforced,/obj/item/weapon/defibrillator/loaded,/turf/unsimulated/floor{icon_state = "vault"; dir = 1},/area/centcom/specops) -"djt" = (/obj/structure/table/reinforced,/obj/item/weapon/reagent_containers/hypospray,/obj/item/weapon/reagent_containers/hypospray,/obj/item/weapon/reagent_containers/hypospray,/obj/item/weapon/reagent_containers/hypospray,/obj/item/weapon/reagent_containers/hypospray,/obj/item/weapon/reagent_containers/hypospray,/obj/item/weapon/storage/box/gloves,/obj/item/weapon/storage/box/gloves,/obj/item/weapon/storage/box/gloves,/obj/item/weapon/storage/box/gloves,/obj/item/weapon/storage/box/gloves,/obj/item/weapon/storage/box/gloves,/obj/item/weapon/storage/box/masks,/obj/item/weapon/storage/box/masks,/obj/item/weapon/storage/box/masks,/obj/item/weapon/storage/box/masks,/obj/item/weapon/storage/box/masks,/obj/item/weapon/storage/box/masks,/obj/item/device/radio/intercom{broadcasting = 1; dir = 1; frequency = 1441; listening = 0; name = "Spec Ops Intercom"; pixel_y = 28},/turf/unsimulated/floor{icon_state = "vault"; dir = 1},/area/centcom/specops) "dju" = (/obj/machinery/vending/medical,/turf/unsimulated/floor{icon_state = "vault"; dir = 1},/area/centcom/specops) "djv" = (/obj/structure/table/reinforced,/obj/item/weapon/reagent_containers/glass/bottle/inaprovaline,/obj/item/weapon/reagent_containers/glass/bottle/inaprovaline,/obj/item/weapon/reagent_containers/glass/bottle/inaprovaline,/obj/item/weapon/reagent_containers/glass/bottle/inaprovaline,/obj/item/weapon/reagent_containers/glass/bottle/inaprovaline,/obj/item/weapon/reagent_containers/glass/bottle/inaprovaline,/obj/item/weapon/storage/box/autoinjectors,/obj/item/weapon/storage/box/autoinjectors,/obj/item/weapon/storage/box/autoinjectors,/obj/item/weapon/storage/box/autoinjectors,/obj/item/weapon/storage/box/autoinjectors,/obj/item/weapon/storage/box/autoinjectors,/obj/item/weapon/storage/box/syringes,/obj/item/weapon/storage/box/syringes,/obj/item/weapon/storage/box/syringes,/obj/item/weapon/storage/box/syringes,/obj/item/weapon/storage/box/syringes,/obj/item/weapon/storage/box/syringes,/turf/unsimulated/floor{icon_state = "vault"; dir = 1},/area/centcom/specops) "djw" = (/obj/machinery/door/poddoor{desc = "Good luck hacking this one open."; icon_state = "pdoor1"; id = "WEAPONS"; name = "Special Weaponry"; p_open = 0},/turf/unsimulated/floor{icon_state = "vault"; dir = 8},/area/centcom/specops) @@ -8711,7 +8712,6 @@ "dlN" = (/obj/structure/grille,/obj/structure/window/full/shuttle,/turf/simulated/floor/plating,/area/shuttle/escape/centcom) "dlO" = (/turf/simulated/shuttle/wall{icon_state = "swall_s10"; dir = 2},/area/shuttle/escape/centcom) "dlP" = (/obj/structure/rack,/obj/item/clothing/shoes/magboots,/obj/item/clothing/glasses/meson,/obj/item/clothing/glasses/night,/obj/item/clothing/glasses/sunglasses/sechud,/obj/item/clothing/glasses/hud/health_advanced,/obj/item/clothing/glasses/hud/security/night,/obj/item/clothing/glasses/hud/health/night,/obj/item/clothing/gloves/yellow,/obj/item/clothing/gloves/swat,/obj/item/clothing/gloves/color/latex,/turf/unsimulated/floor{icon_state = "vault"; dir = 8},/area/centcom/specops) -"dlQ" = (/obj/structure/table/reinforced,/obj/item/weapon/storage/box/bodybags,/obj/item/weapon/storage/box/syringes,/obj/item/weapon/storage/box/autoinjectors,/obj/item/weapon/storage/box/gloves,/obj/item/weapon/storage/firstaid/adv,/obj/item/bodybag/cryobag,/obj/item/weapon/reagent_containers/hypospray,/turf/unsimulated/floor{icon_state = "vault"; dir = 8},/area/centcom/specops) "dlR" = (/obj/machinery/door/airlock/external{frequency = 1380; icon_state = "door_locked"; id_tag = "specops_centcom_dock_inner"; locked = 1; name = "Shuttle Hatch"; req_access = null; req_access_txt = "101"},/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/specops) "dlS" = (/obj/item/weapon/gun/projectile/automatic/m2411,/obj/item/ammo_box/magazine/m45,/obj/item/ammo_box/magazine/m45,/obj/item/ammo_box/magazine/m45,/obj/structure/closet{icon_closed = "cabinet_closed"; icon_opened = "cabinet_open"; icon_state = "cabinet_closed"},/obj/item/clothing/head/helmet/space/deathsquad/beret,/obj/item/clothing/shoes/combat,/obj/item/clothing/under/syndicate/combat,/obj/item/clothing/gloves/combat,/obj/item/clothing/suit/space/deathsquad/officer,/obj/item/clothing/under/rank/centcom/captain,/obj/item/weapon/storage/box/handcuffs,/obj/item/weapon/storage/box/flashbangs,/obj/item/clothing/mask/gas,/obj/item/weapon/tank/emergency_oxygen/double,/turf/unsimulated/floor{icon_state = "grimy"},/area/centcom/specops) "dlT" = (/obj/machinery/recharge_station,/turf/unsimulated/floor{icon_state = "grimy"},/area/centcom/specops) @@ -10690,7 +10690,6 @@ "dYE" = (/turf/simulated/wall,/area/research_outpost/gearstore) "dYF" = (/obj/structure/closet/excavation,/turf/simulated/floor,/area/research_outpost/gearstore) "dYG" = (/obj/machinery/light/small{dir = 1},/turf/simulated/floor,/area/research_outpost/gearstore) -"dYH" = (/obj/structure/rack,/obj/item/weapon/storage/belt/archaeology,/obj/item/clothing/suit/space/anomaly,/obj/item/clothing/head/helmet/space/anomaly,/obj/item/clothing/mask/breath,/obj/machinery/light_switch{pixel_x = 0; pixel_y = 23},/turf/simulated/floor,/area/research_outpost/gearstore) "dYI" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{level = 1},/turf/simulated/floor/plating,/area/research_outpost/gearstore) "dYJ" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0},/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"},/turf/simulated/floor,/area/research_outpost/gearstore) "dYK" = (/obj/machinery/light{dir = 1},/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 8; initialize_directions = 11; level = 1},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_y = 0},/obj/machinery/alarm{pixel_y = 24},/turf/simulated/floor,/area/research_outpost/gearstore) @@ -10727,7 +10726,6 @@ "dZs" = (/obj/structure/transit_tube{tag = "icon-D-NW"; icon_state = "D-NW"},/turf/simulated/mineral,/area/mine/unexplored) "dZt" = (/obj/structure/closet/excavation,/obj/machinery/firealarm{dir = 8; pixel_x = -24},/turf/simulated/floor,/area/research_outpost/gearstore) "dZu" = (/obj/machinery/atmospherics/unary/vent_scrubber{dir = 4; on = 1},/turf/simulated/floor,/area/research_outpost/gearstore) -"dZv" = (/obj/structure/rack,/obj/item/weapon/storage/belt/archaeology,/obj/item/clothing/suit/space/anomaly,/obj/item/clothing/head/helmet/space/anomaly,/obj/item/clothing/mask/breath,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4; level = 1},/turf/simulated/floor,/area/research_outpost/gearstore) "dZw" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{level = 1},/turf/simulated/floor/plating,/area/research_outpost/gearstore) "dZx" = (/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/machinery/atmospherics/unary/vent_scrubber{dir = 8; on = 1; scrub_Toxins = 0},/turf/simulated/floor,/area/research_outpost/gearstore) "dZy" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/obj/machinery/atmospherics/pipe/simple/hidden/supply{level = 1},/turf/simulated/floor,/area/research_outpost/gearstore) @@ -12647,12 +12645,12 @@ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaDwaDxaDyaDzaDAaDBaDCaDDaDEaDCaDFaDGaDCaDCaDHaySaxCayWaabaabaaaaaaaaaaaaaaaaabaDIaDJaDKaDLaDMaaaaabaaaaaaaaaaaaaaaazbaDNazbaDOaDPaDQaDQaDQaDRaDQaDQaDQaDSaDOaDTaDUaDUaDUaDUaDUaDUaDUaAYaaiaDVaDWaDXaDYaDZaEaaEbaEcaEdaEeaEfaDWaEgaaiaEhauRaEiaaqaEjaosaEkaElaElaEmaEnaEoaEpaEqaEqaEraEsaBnaEtaEsaEsaEuaEvaEwayRayRaExaEyaEzaEAaEAaEAaEBayRaECaEDaxZaxZaxZaxZaxZaEEaaiaaiaaiaaaaaaaaaaEFaEGaEFaaaaaaaaqaaqaEHaaqaEIaEJaEKaELaCuaCuaEMaENaCuaEOaaqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabaySaEPaEQaEPaERaDyaDyaESaEPaEQaEPaETaEUaEVaEWaySaxCayVayVaEXayZayZayZayZazaayVaEYaEZaFaaFbaEYazbazbaFcaFdaFeazbazbazbaDNaFfaDOaaaaabaaaaabaaaaabaaaaabaaaaDOaDTaDUaFgaFhaFiaFjaFkaDUaAYaaiaFlaFlaFmaFnaFoaFpaFqaFpaFraFsaFtaFlaFlaaiaEhauRaFuaaqaEjaosaBeaysaytaaqaztaFvaFwaFxaFyaFzaFzaFAaFBaFzaFBaFCaFDaFEaFFaFGaFHaFIaFJaFKaFKaFKaFLayRaaqaFMaxZaxZaxZaxZaxZaFNaaiaabaaaaaaaaaaoHaFOaFPaFQaFRaaaaaqaFSaFTaFUaFVaFWaFXaCuaCuaCuaFYaFZaCuaGaaaqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaagaaaaaaaaaaaaaaaaaaaabaGbayaaGcaAPaGdaGeaGfaGgaGhaGdaAPaGiaGjayaaGkaGlaySaxCaxCaxCaxCaxCaxCaxCaxCaGmaGnaEYaGoaGpaGqaEYaGraGsaCNaCNaCNaCNaCNaGuaGtaGvaDOaabaGwaGwaGwaGwaGwaGwaGwaabaDOaDTaDUaGxaGyaGzaGAaGxaDUaAYaaiaaiaaiaaiaGBaGCaDWaGDaDWaGCaGEaaiaaiaaiaaiaEhauRaGFaaqaEjaosaAuaysaytaaqaAvaGGaaqaaqaaqaaqaaqaaqaaqaGHaaqaaqaaqaaqaaqaaqaGIaaqaGJaGKaGLaGMaGNaaqaaqaFMaxZaxZaxZaxZaxZaFNaaiaaaaaaaaaaaaaaiaGOaGPaGQaaiaaaaaqaGRaGSaaqaGTaGUaGVaGWaGXaGYaGZaHaaDtaaqaaiaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaDwaEQaHbaHcaHcaHcaHcaHdaEQaDwaHeayaaHfaHgaySaHhaHhaHhaHhaHhaHhaHhaxCaHiaHjaEYaHkaHlaHmaEYaHnaHoaHnaHnaHnaHnaHnaHnaHnaHnaHpaaaaGwaHqaHraHsaHtaHuaGwaaaaDOaDTaDUaGxaHvaHwaHxaGxaDUaAYaaibqbbqbaFmaHzaHAaFpaFqaFpaHAaHBaHCaHDaHEaaiaEhauRaEiaaqaHFaxQaHGaysaytaaqaztaGGaaqaHHaHIaHJaHJaaqaHKaHIaHLaaqaHMaHNaHOaaqaHPaaqaHQaHRaHRaHRaHSaaqaabaHTaHUaHUaHUaHUaHUaHVaabaaaaaaaagaaaaaiaHWaHXaHYaaiaaaaaqaHZaIaaaqaaqaaqaaqaaqaIbaaqaaqaaqaaqaaqaaqaaiaaiaaiaaiaaiaaiaaiaaiaaiaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaDwaEQaHbaHcaHcaHcaHcaHdaEQaDwaHeayaaHfaHgaySaHhaHhaHhaHhaHhaHhaHhaxCaHiaHjaEYaHkaHlaHmaEYaHnaHoaHnaHnaHnaHnaHnaHnaHnaHnaHpaaaaGwaHqaHraHsaHtaHuaGwaaaaDOaDTaDUaGxaHvaHwaHxaGxaDUaAYaaibqbbqbaFmaHzaHAaFpaFqaFpaHAaHBaHCaFlaFlaaiaEhauRaEiaaqaHFaxQaHGaysaytaaqaztaGGaaqaHHaHIaHJaHJaaqaHKaHIaHLaaqaHMaHNaHOaaqaHPaaqaHQaHRaHRaHRaHSaaqaabaHTaHUaHUaHUaHUaHUaHVaabaaaaaaaagaaaaaiaHWaHXaHYaaiaaaaaqaHZaIaaaqaaqaaqaaqaaqaIbaaqaaqaaqaaqaaqaaqaaiaaiaaiaaiaaiaaiaaiaaiaaiaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaIcaIdaIeaIdaIdaIfaIgaIdaIdaIeaIhaIiayaaERaIjaySaIkaIlaImaInaIoaIpaHhaxCaIqayVaEYaEYaIraIsaHpaItaIuaIvaIwaIxaIyaIzaIAaIBaICaHpaabaGwaIDaIEaIFaIGaIHaGwaabaDOaDTaDUaIIaIJaIKaILaIMaDUaAYaaiaDVaDWaHyaIOaGCaDWaIPaDWaGCaIQaIRaDWaEgaaiaEhauRaISaaqaEjazrazsaysaytaaqaITaIUaaqaIVaHIaHIaHIaIWaIXaIYaIZaaqaJaaJbaJcaJdaJeaaqaJfaJgaJhaJgaJiaaqaaaaabaaaaabaaaaabaaaaabaaaaaaaaaaaaaaaaaiaJjaJkaJlaaiaJmaaqaaqaaqaaqaJnaJoaJpaJpaJqaJpaJraJpaJsaJtaJtaNHaJtaJtaJtaJtaJvaJwaJxaaiaJyaaiaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaIcaIhaIdaJzbpZaJBaJCaJDaJEaJFaJGaINaJAaJHaJIaEPaERaJJaySaJKaJLaJMaJNaJMaJOaJPaxCaJQaJRaJSaJTaJUaJuaJVaJXaJYaJZaJZaJZaKaaJZaJZaKbaKcaHpaaaaGwaKdaIEaKeaIGaKfaGwaaaaDOaDTaDUaKgaKhaKiaKjaKkaDUaAYaaibqabqaaFmaKlaHAaFpaKmaFpaHAaKnaFtaKoaKpaaiaKqawzaKraaqaEjazrabZabZabZabZaKsaKtaKuaKvaKwabZabZabZaaEabZabsaKxaKyaKzaJWabZaKBaaqaaqaaqaaqaaqaaqaaqaaqaaqaaqaaiaaiaaiaaiaoHaoJaaiaaiaaiaaiaaiaaiaKCaamaaiaKDaKEaKFaKGaKHaKIaKJabZabZabZabZaaEaKKaKAabZabZaKMabZaBbabZabZaaEaKOaaqaaqaKPaaiaaiaaiaaiaaiaaiaaiaaiaaiaaiabAacOaaaaaaaaaaaaaaaaaaaaaaKQaKQaKQaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaJHaKRaKSaKTaJAaKUaJBaKUaJBaKUaJBaKUaJAaKVaKWaGdaERaKXaySaKYaKZaLaaLbaLcaLdaHhaLeaKNaKLaLhaLfaLiaLgaHnaLlaJZaJZaJZaJZaJZaJZaJZaKbaLmaHpaabaGwaLnaLoaLpaLqaLraGwaabaDOaDTaDUaLsaLtaLuaLvaLwaDUaAYaaiaaiaaiaaiaLxaGCaDWaGDaDWaGCaLyaaiaaiaaiaaiaLzaLAaLBaaqaHFaLCaLDaLDaLDaLEaLFaADabJaLGaLHabJaLIabJaLJabJaLKaxXaLLaLMaLNaaqaLOaLPaLQaLRaLRaLPaLjaLTaLTaLTaLTaLTaLkaLVaLTaLWaLXaLYaLZaMaaMbaMbaLSaMdaMeaMeaMeaMfaJwaMgaMhaMiaMjaaqaMkaMlaMmaaJaaqaMnaaqaMoaMpaMqaMraMsaMtaMuaMvaMwaMxaMyaaiaMzaMAaMBaMCaMDaMEaMFaMGaMHaMIaaaaaaaaaaaaaaaaaaaaaaKQaKQaKQaKQaKQaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaMJaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaIcaIhaIdaJzbpZaJBaJCaJDaJEaJFaJGaINaJAaJHaJIaEPaERaJJaySaJKaJLaJMaJNaJMaJOaJPaxCaJQaJRaJSaJTaJUaJuaJVaJXaJYaJZaJZaJZaKaaJZaJZaKbaKcaHpaaaaGwaKdaIEaKeaIGaKfaGwaaaaDOaDTaDUaKgaKhaKiaKjaKkaDUaAYaaibqabqaaFmaKlaHAaFpaKmaFpaHAaKnaFtaKoaKoaaiaKqawzaKraaqaEjazrabZabZabZabZaKsaKtaKuaKvaKwabZabZabZaaEabZabsaKxaKyaKzaJWabZaKBaaqaaqaaqaaqaaqaaqaaqaaqaaqaaqaaiaaiaaiaaiaoHaoJaaiaaiaaiaaiaaiaaiaKCaamaaiaKDaKEaKFaKGaKHaKIaKJabZabZabZabZaaEaKKaKAabZabZaKMabZaBbabZabZaaEaKOaaqaaqaKPaaiaaiaaiaaiaaiaaiaaiaaiaaiaaiabAacOaaaaaaaaaaaaaaaaaaaaaaKQaKQaKQaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaJHaKRaKSaKTaJAaKUaJBaKUaJBaKUaJBaKUaJAaKVaKWaGdaERaKXaySaKYaKZaLaaLbaLcaLdaHhaLeaKNaKLaLhaLfaLiaLgaHnaLlaJZaJZaJZaJZaJZaJZaJZaKbaLmaHpaabaGwaLnaLoaLpaLqaLraGwaabaDOaDTaDUaLsaLtaLuaLvaLwaDUaAYaaiaaiaaiaaiaLxaGCaDWaGDaDWaGCaKpaaiaaiaaiaaiaLzaLAaLBaaqaHFaLCaLDaLDaLDaLEaLFaADabJaLGaLHabJaLIabJaLJabJaLKaxXaLLaLMaLNaaqaLOaLPaLQaLRaLRaLPaLjaLTaLTaLTaLTaLTaLkaLVaLTaLWaLXaLYaLZaMaaMbaMbaLSaMdaMeaMeaMeaMfaJwaMgaMhaMiaMjaaqaMkaMlaMmaaJaaqaMnaaqaMoaMpaMqaMraMsaMtaMuaMvaMwaMxaMyaaiaMzaMAaMBaMCaMDaMEaMFaMGaMHaMIaaaaaaaaaaaaaaaaaaaaaaKQaKQaKQaKQaKQaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaMJaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaMKaJBaJBaIeaJAaKUaJBaKUaMLaKUaJBaKUaJAaKVaKWaGdaERaMMaySaySaMNaMOaMPaMOaySaySaySaySaySaMQaMRaMSaMTaHnaMUaMVaMWaJZaJZaMXaJZaMYaMZaNaaHpaaaaGwaGwaNbaNcaNbaGwaGwaaaaDOaDTaDUaNdaNeaNfaLvaNgaDUaAYaaiaDVaDWaNhaIOaGCaDWaGDaDWaGCaIQaNiaaiaaiaaiaNjaNkaNlaNmaNnabmaaiaaiaaiaaqaNoaNpaaqaNqaHIaaqaNraaqaNsaaqaNtaLUaNvaNwaNxaNyaNzaNAaNBaNCaNDaxSaNEaNDaNDaNFaNDaNAaNGaNAaNHaNAaNAaNIaNJaNKaNLaNLaNMaNNaNOaNPaNLaNQaJtabJbNxaNSaNTaNUaNVaNWaNXaaJaNYaNZaaqaOaaObaOcaOdaMsaOeaMuaMvaMwaOfaOgaaiaOhaOiaOiaOjaMGaMGaMGaMGaMHaMIaaaaaaaaaaaaaaaaaaaKQaKQaKQaKQaKQaKQaKQaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaagaaaaaaaaaaaaaaaaJHaOkaKSaKTaJAaKUaJBaKUaJBaKUaJBaKUaJAaKVaKWaGdaERaMcaOmaOnaOoaOpaOqaDyaOraOsaOtaOuaNuaNRaOxaOyaOyaHnaOzaOAaOBaOCaODaOEaOFaOGaOHaOIayaaaaaabaaaaOJaOKaOJaaaaabaaaayaaDTaDUaOLaOMaOlaOOaOPaDUaAYaaiaOQaORaFmaOSaOTaFpaOUaFpaOVaOWaOXaaiaOYaOZaPaaPbaPcaPdaPeaPfaaaaaaaaiaPgaPhaPiaaqaPjaHIaHIaHIaPkaHIaHIaHIaaJaPlaPmaaqaPnaosaaqaPoaaqaaqaPpaPqaPraPsaPtaaqaPuaPvaaqaPnaaqaaqaaqaaqaPwaaqaaqaosaaqaaqaaqaaqaPxaJwaaqaPyaNTaPzaPAaPBaPCaPDaPEaPFaPGaaqaPHaPIaPJaPKaPLaOeaMuaMvaMwaPMaPNaaiaPOaOiaOiaOjaMGaMGaMGaMGaMHaMIaaaaaaaaaaaaaaaaaaaKQaKQaKQaKQaKQaKQaKQaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaagaaaaaaaaaaaaaaaaJHaOkaKSaKTaJAaKUaJBaKUaJBaKUaJBaKUaJAaKVaKWaGdaERaMcaOmaOnaOoaOpaOqaDyaOraOsaOtaOuaNuaNRaOxaOyaOyaHnaOzaOAaOBaOCaODaOEaOFaOGaOHaOIayaaaaaabaaaaOJaOKaOJaaaaabaaaayaaDTaDUaOLaOMaOlaOOaOPaDUaAYaaiaHDaHEaFmaOSaOTaFpaOUaFpaOVaOWaOXaaiaOYaOZaPaaPbaPcaPdaPeaPfaaaaaaaaiaPgaPhaPiaaqaPjaHIaHIaHIaPkaHIaHIaHIaaJaPlaPmaaqaPnaosaaqaPoaaqaaqaPpaPqaPraPsaPtaaqaPuaPvaaqaPnaaqaaqaaqaaqaPwaaqaaqaosaaqaaqaaqaaqaPxaJwaaqaPyaNTaPzaPAaPBaPCaPDaPEaPFaPGaaqaPHaPIaPJaPKaPLaOeaMuaMvaMwaPMaPNaaiaPOaOiaOiaOjaMGaMGaMGaMGaMHaMIaaaaaaaaaaaaaaaaaaaKQaKQaKQaKQaKQaKQaKQaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaPPaPQaIdaJzaJAaJBaJBaPRaJBaJBaPSaJBaJAaJHaPTaPUaERaPVaPWaPXaPYaPXaPXaPXaPXaPXaPZaDyaySaQaaQaaQaaQaaQaaQbaQcaQdaHnaHnaHnaHnaQbaQeaQfaQgaQhaQiaQiaQjaQkaQlaQiaQiaQmaQgaQnaQgaQoaDUaQpaQqaQraQsaQtaaiaaiaaiaaiaQuaQvaQwaQxaQwaQyaQzaaiaaiaQAaPbaPbaPbaPbaQBaOvaQDaQEaQFaaiaQGaPhaQHaaqaaqaaqaaqaaqaaqaaqaaqaaqaaJaQIaQJaQKaQLaQMaQNaQOaQPaaqaQQaQRaQSaQTaQUaaqaQVaQWaQXaQYaQXaQZaRaaRbaRcaRdaReaRfaRgaRhaRiaaqaRjaMbaRkaRlaRmaPzaRnaPBaPCaRoaaqaRpaRqaRraRsaRtaOdaOdaaqaOgaMuaMvaMwaRuaRvaaiaRwaRxaRyaRzaRAaRBaMGaMGaRCaMIaaaaaaaaaaaaaaaaKQaKQaKQaKQaKQaKQaKQaKQaKQaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaPPaIdaIeaIdaIdaIfaIgaIdaIdaIeaPQaRDayaaREaPVaCyaRFaRFaRGaRFaRHaySaRIaRJaDyaRKaRLaRMaRNaROaRPaRNaRQaRNaRNaRNaRRaRNaRNaRSaRTaRUaRVaRWaRXaRVaRYaRVaRVaRVaRVaRZaSaaSbaRNaRNaScaSdaSeaSfaSgaShaSiaSjaSkaSlaSmaSmaSmaSmaSmaSmaSnaSoaSpaSqaSraSsaStaSuaSvaSwaPbaPbaSxaSyaSzaSyaSAaSBaSCaSDaSEaSFaSGaaqaSHaSIaSJaSKaSLaSLaSMaSNaSOaSPaaqaSQaSRaSSaSSaSTaaqaSUaSVaSWaSXaSYaSYaSZaTaaTbaTaaTcaTdaTeaTfaTgaaqaPxaThaaqaOwaTjaTjaTkaTlaTjaTmaaqaTnaToaaqaTpaTqaOdaTraaqaTsaTtaONaMwaOgaOgaaiaTvaaiabmafaaaiaaiaaiaaiaaiabAacOaaaaaaaaaaaaaKQaKQaKQaKQaKQaKQaKQaKQaKQaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaCyaTwaTxaHcaHcaHcaHcaTyaTwaCyaHeayaaTzaTAaTBaTCaTDaTEaTEaTFaySaTGaRJaTHaTIaRLaTJaTKaTLaTMaTMaTMaTOaTOaTOaTPaTQaTQaTRaTSaTTaTMaTMaTUaTVaTWaQCaTYaTYaTZaTYaUaaTVaTVaTVaTiaSdaSeaSfaSgaSgaSgaSgaUcaSgaSgaSgaSgaSgaSgaUdaUeaUfaUgaUhaUiaUjaUkaUlaUmaUnaUnaUnaUoaUpaUpaUpaUqaSGaSGaSGaUraUsaSGaaqaUtaUuaSLaSLaUvaSLaUwaUxaSOaUyaaqaUzaUAaUBaUCaUDaaqaUEaUFaUGaUHaUIaUJaaqaUKaULaUKaaqaaqaaqaosaaqaaqaPxaJwaaqaUMaNTaNTaNTaUNaNTaUOaaqaaqaaqaaqaaqaaqaaqaUPaaqaMwaMwaMvaMwaUQaURaaqaUSaUTaUUaUVaUWaUXaUYaUZaVaaaaaaaaaaaaaaKQaKQaKQaKQaKQaKQaKQaKQaKQaKQaKQaKQaKQaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa @@ -12689,7 +12687,7 @@ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabyZbyZbyZbyZbyZbyZbyZbyZby aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabyZbyZbyZbyZbyZbyZbyZbyZbyZaaaaaaaaaaaaaaaaaabzabzabzabzabzabzabzabzabzabzabzabzabzabzabzabzabzabzaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabNVbNWbNXbNYbNVbNZbOabObbIybOcbOdbOebsYbOgbOhbOibOjbOjbOkbwdbOlbOmbOnaaqaaqbOobOpbOqaaqaaqaaqbOrbOsbOtaaqaaqbOubKcbKcbOvaaqaaqaaqaosbOwaaqaaqaaqbOxaaqaaqbOyaaqbOzaosaaqbOAbOBbOCaaqbODbOEbLIbOFaaibOGbOHbOIbOJaaibCQbLQbwKaaqbwLbwMbwObyAbzZbAcabJbORbOSbOTbOUbOVbOWbOXaaiaaiaaiaaiaaiaaiaaiaaiaaiaaibOYbOZbPabPaaaqbPbbPcbPdaaiaaiaaiaaiaaiaaiaaiaaibIhaaibPebPfbPgbPhbPhbPiaJmaaaaaaaaaaaaaaaaaaaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabbPjbCfbCfbCgaaqaaqaaiaaiaaiaaibPkaabaabaaaaaaaaaaagaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabyZbyZbyZbyZbyZbyZbyZbyZbyZaaaaaaaaaaaaaaaaaabzabzabzabzabzabzabzabzabzabzabzabzabzabzabzabzabzabzaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabMzbPlbPmbPlbMzbPnbAdbPpbPqbPrbPsbPtbPubPvbIAbPwbPxbPybPzbIAbOmbOmbPAaaqbPBbPCbPDbPEbPFaaqbPGbPHbPIbPJbPKaaqbPLbPMbPNaaqbPObEabPQbPRbPSbPTbPUbPVbPWabZbPXbPYbPZbQabQbbQcbQdbQebQfbQgbQhbQibQjbLJbQkbQlbQmbQnbQobQpbCYbDabBrbBxbAebwObFXbFXbEEbFTaaqbQybQzbQAbQBbQCbQDbQEaaibQFbQGbQHbQIbQHbQHbQJacFacFbQKbQLbQMbQNaaqbQObQPbJmaaibsfbQQbQRbQSbQSbQRbQSbQTaaibQUbQVbPgbPhbQWbQXaJmaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabQYbQZbRabQZaaqaaiaaibRbbRcbRbbRdaaiaabaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabyZbyZbyZbyZbyZbyZbyZbyZbyZaaaaaaaaaaaaaaaaaaaaabzabzabzabzabzabzabzabzabzabzabzabzabzabzabzabzabzaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabNVbPlbPlbPlbRebRfbMCbRgbRhbRibMCbPtbRjbRkbIAbIAbIAbIAbIAbIAbRlbOmbEOabZbRnbRobRobRobRpaaqbRqbRrbRrbRrbRsaRkbRtbRubRvabZbRwbRxbRybRzbRAbRBaaqaaqbRCaaqbRDbREbRFbRGbRHaaqbLEbKlbLFbLGbRIbRJbRKbRLacFbRMbRNbRObRPaaibRQbLSbLUabZbTfbLVbKBbKCbKDbLTaaqaaqaaqaaqaaqaaJazraugaaibSabQHbQHbSbbQHbScbSdaaiaaibSebKRbSfbSfaaqbJkbSgbJmaaiaaibShaaiaaiaaiaaiaaiaaiaaibSibSjaJmbSkbSlbSmaJmaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacbSnbQZbQZbSoaaiaaibRbbRbbSpbRbbRbaaiaaiaabaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabyZbyZbyZbyZbyZbyZbyZbyZbyZaaaaaaaaaaaaaaaaaaaaaaaabzabzabzabzabzabzabzabzabzabzabzabzabzabzabzaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabMzbPmbPmbPmbMzbSqbLXbSsbStbLWbMCbSvbSwbSxbSybSzbSzbSzbSAbOmbOmbOmbPAaaqbRpbRobSBbRobSCaaqbSDbRrbSEbRrbSFaaqbSGbSHbSIaaqbSJbSKbSLbSMbSNbSOabJbSPbSQabJbSRbSSbSTbSUbSVaaqbNjbKlbKlbSWbRIbRJbSXbSYbSZbQlbTabTbbTcbTdbTebNubHGbOKbNvbNwbNtbNtbFXbLYaaqbTmbTnbTobTpbTqbTrbTsaaibSabTtbQHbQHbQHbTubTvaaiaaibTwbKRbSfbSfaaqbTxbTybJmaaibTzbTAbTBaaibTCbTDbTEbTFbTGbTHbTIaJmbTJbTKbTLaJmaaiaaiaaiaaiaaiaaiaaiaaiaaaaaaaaaaaaaaaaabaaaaaaaaaaaaaaaaaaaaabTMaaibSnaaiaaibRbbRbbRbbRbbRbbRbbRbaaiaaiaabaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabyZbyZbyZbyZbyZbyZbyZbyZbyZaaaaaaaaaaaaaaaaaaaaaaaabzabzabzabzabzabzabzabzabzabzabzabzabzabzabzaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabMzbPmbPmbPmbMzbSqbLXbSsbStbLWbMCbSvbSwbSxbSybSzbSzbSzbSAbOmbOmbOmbPAaaqbRpbRobSBbRobSCaaqbSDbRrbSEbRrbSFaaqbSGbSHbSIaaqbSJbSKbSLbSMbSNbSOabJbSPbSQabJaORbSSbSTbSUbSVaaqbNjbKlbKlbSWbRIbRJbSXbSYbSZbQlbTabTbbTcbTdbTebNubHGbOKbNvbNwbNtbNtbFXbLYaaqbTmbTnbTobTpbTqbTrbTsaaibSabTtbQHbQHbQHbTubTvaaiaaibTwbKRbSfbSfaaqbTxbTybJmaaibTzbTAbTBaaibTCbTDbTEbTFbTGbTHbTIaJmbTJbTKbTLaJmaaiaaiaaiaaiaaiaaiaaiaaiaaaaaaaaaaaaaaaaabaaaaaaaaaaaaaaaaaaaaabTMaaibSnaaiaaibRbbRbbRbbRbbRbbRbbRbaaiaaiaabaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabyZbyZbyZbyZbyZbyZbyZbyZbyZaaaaaaaaaaaaaaaaaaaaaaaaaaabzabzabzabzabzabzabzabzabzabzabzabzaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaagaaaaaaaaaaaaaaaaaabNVbTNbTObTPbNVbTQbOabObbIybIybTRbTRbTRbIybIybOmbTSbTSbTTbTUbOmbTVbTWaaqbRpbRobRobRobTXaaqbSDbRrbRrbTYbTZabJbIRbUbbUcaaqaaqaaqaaqaaqbUdaaqaaqbUebUfaaqaaqbUgaaqaosaaqaaqbUhbUibUiaaqaaqbUjbUkbUlbUmbUnbUobUpbUqbUraaqbIWbHGbHIbIUbIVbGebGfbKFbHFaaqbUvbUwbUxbUybUzbUAbUBaaibUCaaibUDbUEbUFaaiafaaaiaaibUGbUHbSfbSfaaqbUIbSgbJmbUJbUKbULbUMbUNbUObUPbUPbUQbURbUSbUTbUUbUVbUWbUXbUYbUZbVabVbachbVcbVdbVebVfaabaabaabaabaabaabaabaabaaaaaaaaaaaaaaaaaqaaibVgbVhbVhbRbbRbbRbbRbbRbbRbbRbbRbaaiaaiaabaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabyZbyZbyZbyZbyZbyZbyZbyZbyZaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabVibMybVjbMybVkbVlaabaaaaaabIybVmbVnbVobIyaaabOmbVpbVqbVrbVsbVtbVubVvaaqbVwbVxbVybRobRpaMhbVzbVAbVBbVCbVDaaqbVEbVFbVGbVHbVIbVIbVIbVIbVJbVKbVLbVMbVMbVNbVNbVObVPbVQaaqaaqbVRbIZbIXbVUbVVbRJbVWbUlbVXbVYaEmbVZbLObWaaEmbKAbKzaoaaoabJbaoaaoaaoabJaaaqbWjbWkbWlbWmbWnbWobWpaaibWqbWrbWsbWtbWubWrbWvbWwaaqbWxbWybKSaaqaaqbWzbWAbWBacFbWCbWDbWEacFbWFbWGbWHbWIbWJbWKbWLbWMbWNbWObWNbWPbWObWObWObWQbWRbWSbWTbWUaabaaaaaaaaaaaaaabaaaaaaaaaaaaaaaaaaaaaaaiaaibWVbRbbRbbRbbRbbRbbRbbRbbRbbRbbRbbRbaaiaaiaabaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabbWWbOmbOmbOmbtqbOmbOmbWYaaqbWZbXabXbbXcbXdaaJbXebXfbXgbXhbXiaMhbXjbXkbXlabJachachachachbnbbXmbowabZbXnabZabZbXobXpbXqbXrbXsbrCbrBbrDbXwbXxbXybXzbXAbXBbXCbrEbXEbXFbXGbXHbXIcagcagcagbrFbtnbtocdLbtpaaqaaqbXLaaqamfbXMbXNbXOaaibXPbXQbXRbXSbXRbXTbXUbXVaaqaaqbXWaaqaaqbXXbXYbSgbvwaaiaaibXZaaiaaibYabYbbYcbYdbYebWObYfbYgbYhbWHbYhbWHbYibWHbWHaaibYjbYkbYlbYmaabaabaabaabaabaabaabaabaaaaaaaaaaaaaaaaaibRbbRbbRbbRbbRbbRbbYnbRbbYobRbbRbbRbbRbbRbaaiaaiaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa @@ -12933,7 +12931,7 @@ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadhEdjediEdiEdiEdiEdiEdiEdiEdjfdhEaaaaaaaaaaaaaaaaaaaaaaaadhjdhjdhjdhjdhjdhjdhjdjgdjhdjidhjdhjdhjdhjdhjdhjdhjaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadhEdjjdiEdiEdiEdiEdiEdiEdiEdjkdhEaaaaaaaaaaaaaaaaaaaaaaaadhjdiUdiVdiVdiVdiVdiVdjldiZdjmdiVdiVdiVdiVdiVdiWdhjaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadhEdhEdhEdhEdhEdhEdhEdhEdhEdhEdhEdhEdjndiEdiEdiEdiEdiEdiEdiEdjodhEaaaaaaaaaaaaaaaaaaaaaaaadhjdiYdiZdiZdiZdiZdiZdiZdiZdiZdiZdiZdiZdiZdiZdjadhjaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadhEdhEdjpdjqdjrdhEdhEdhEdjsdjtdjudjvdhEdhEdhEdhEdjwdhEdhEdhEdhEdhEdhEdhEdhEdhEdhEdhEdhEaaadhjdiYdiZdjxdjydjydjydjydjydjydjydjydjydjzdiZdjadhjaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadhEdhEdjpdjqdjrdhEdhEdhEdjsbSRdjudjvdhEdhEdhEdhEdjwdhEdhEdhEdhEdhEdhEdhEdhEdhEdhEdhEdhEaaadhjdiYdiZdjxdjydjydjydjydjydjydjydjydjydjzdiZdjadhjaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadhEdjAdjBdjBdjBdjCdhEdhEdjDdjBdjBdjBdjEdhEdhEdjFdiEdiEdhEdjGdjGdjGdjGdjGdjGdjHdjIdjJdhEaaadhjdiYdiZdjadjKdiIdiIdiIdiIdiIdiIdiIdjLdiYdiZdjadhjaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadhEdjAdjBdjBdjBdjMdhEdhEdjDdjBdjBdjBdjNdhEdhEdjOdjBdjPdjQdjBdjBdjBdjBdjBdjBdjRdhEdhEdhEdhEdhjdiYdiZdjadjSdjTdjUdjVdjWdjXdjYdjZdjSdiYdiZdjadhjaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadhEdkadjBdjBdjBdkbdhEdhEdkcdjBdjBdjBdkddhEdhEdkedjBdhQdhEdkfdkgdkgdkgdkgdkgdkhdhEdkidkidkidhjdjldiZdjmdkjdkkdiZdkldkmdkndiZdiZdkjdjldiZdjmdhjaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa @@ -12944,7 +12942,7 @@ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadhEdlldjBdlmdlndlodhEdhEdhEdlpdhEdhEdhEdlqdiEdiEdkWdkXdkXdkXdladiEdiEdlrdhEdkPdlsdltdludlvdhEaaaaaaaaaaaaaaadhjdiYdiZdjadhjdhjdiJdiIdiIdiIdiLdhjdhjdiYdiZdjadhjaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadhEdhEdhEdhEdhEdhEdhEdlwdkCdjBdjBdlxdhEdlydiEdiEdiEdjRdjRdjRdiEdiEdiEdlzdhEdkPdlAdlBdlCdlDdhEaaaaaaaaaaaaaaadhjdiYdiZdjmdiVdiVdiVdiVdiVdiVdiVdiVdiVdjldiZdjadhjaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadhEdlEdjBdjBdjBdlFdhEdlGdiEdiEdiEdiEdiEdiEdlHdiEdiEdlIdhEdkPdlJdlKdlLdkPdhEaaaaaaaaaaaaaaadhjdiYdiZdiZdiZdiZdiZdiZdiZdiZdiZdiZdiZdiZdiZdjadhjaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadlMdlNdlOaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadhEdlPdjBdjBdjBdlQdhEdhEdhEdhEdhEdhEdlRdlRdhEdhEdhEdhEdhEdlSdkPdlTdlUdlVdhEaaaaaaaaaaaaaaadhjdlWdjydjydjydjydjydjzdiZdjxdjydjydjydjydjydlXdhjaaaaaaaaaaaaaaaaaaaaaaaaaaadlMdlYdlZdmadlOaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadhEdlPdjBdjBdjBcPwdhEdhEdhEdhEdhEdhEdlRdlRdhEdhEdhEdhEdhEdlSdkPdlTdlUdlVdhEaaaaaaaaaaaaaaadhjdlWdjydjydjydjydjydjzdiZdjxdjydjydjydjydjydlXdhjaaaaaaaaaaaaaaaaaaaaaaaaaaadlMdlYdlZdmadlOaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadhEdhEdmbdmcdmddhEdhEaaaaaaaaaaaadmedmfdmgdmeaaaaaaaaadhEdhEdhEdhEdhEdhEdhEaaaaaaaaaaaaaaadhjdhjdhjdhjdhjdhjdhjdhjdmhdhjdhjdhjdhjdhjdhjdhjdhjaaaaaaaaaaaaaaaaaaaaaaaadlMdlYdmidmjdmkdmadlOaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadhEdhEdhEdhEdhEdhEdhEaaaaaaaaaaaadmldmmdmndmlaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadmodmpdmqdmrdmsdmtdmoaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadlNdmudmvdmwdmvdmxdlNaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadmydmzdmzdmzdmzdmAdmAdmzdmzdmBaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadmodmCdmDdmEdmDdmFdmoaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadlMdlYdmGdmwdmwdmwdmHdmadlOaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa @@ -13637,8 +13635,8 @@ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabdVUdVVdVWdSSdVcdVXdTxdVYdTydVZdQGdWadWbdQGdWcdSWdWddWedQGdNAdNAdNAdNAdNAdNAdNAdNAdNAdNAdNAdNAdNAdNAdNAdNAdNAdNAdNAdNAdNAdNAdNAdNAdNAdNAdNAdNAdNAdNAdNAdNAdMwdMwdMwdMwdMwdMwdMwdMwdMwdMwdMwdMwdMwdMwaaaaaaaaaaaaaaadWfdWgdUrdUrdWhdUrdWidWjdWkdWlcNXdWndWodWpdUAdWqdWrdWsdWtdWudWvdWwdWxdWydWzdWAdWBdWCdWDdWAdWEdWBdWFdWAdWBdWGdWHdWIdWJdWKdWLdWMdWNdWOdWPdWQdWQdWRdUWdNOaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabaabdNAdNAdQGdSVdWSdWTdWUdVWdWVdTydTzdWWdOgdQfdWXdQGdWcdRSdSWdWedQGdNAdNAdNAdNAdNAdNAdNAdNAdNAdNAdNAdNAdNAdNAdNAdNAdNAdNAdNAdNAdNAdNAdNAdNAdNAdNAdNAdNAdNAdNAdMwdMwdMwdMwdWYdWYdWYdWYdWYdWYdMwdMwdMwdMwdMwdMwdMwaaaaaaaaaaaadWZdXadUrdXbdXcdXddXedXfdXgdXhdXidXjdXkdXldUAdXmdXndXodXpdXpdXpdXpdXqdXrdXsdXtdXrdXudXvdXwdXudXxdXydXzdXxdXxdXAdXBdXCdXDdUWdXEdXFdUWdXGdWQdWQdXHdUWdNOaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabdQGdQGdQGdQGdQGdQGdSUdTydXIdWSdTydVddXJdWWdWWdTBdSWdWadQGdWcdRmdXKdWedQGdNAdNAdNAdNAdNAdNAdNAdNAdNAdNAdNAdNAdNAdNAdNAdNAdNAdNAdNAdNAdNAdNAdNAdNAdNAdNAdNAdNAdNAdNAdMwdMwdWYdWYdWYdXLdXLdXLdXLdWYdWYdWYdMwdMwdMwdMwdXMdXNaaaaaaaaadXOdXPdTFdXQdXRdXRdXRdXRdXSdXTdXUdNsdXVdXVdUAdXWdXpdXXdXpdXYdXZdYadYbdXrdYcdYddYedXudYfdYgdYhdXxdYidYjdYkdXxdYldYmdXCdYndYodUWdUWdUWdYpdYqdYrdVTdUWdNOaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabdQGdYsdQfdTzdYtdQGdYudYvdYwdQGdVedQGdYxdYydYzdQGdQfdYAdOJdYBdRmdRRdOJdQGdNAdNAdNAdNAdNAdNAdNAdNAdNAdNAdNAdNAdNAdNAdNAdNAdNAdNAdNAdNAdNAdNAdNAdNAdNAdNAdNAdNAdMwdMwdMwdWYdWYdXLdXLdXLdXLdXLdXLdXLdXLdWYdWYdMwdMwdYCdYDcMucMudMBcMudNRdNSaabaabdYEdYFdYGdYHdYIdYJdYKdYLdYMdYNdYOdYPdYQdYRdYSdYTdYUdYVdYWdXrcNYdYYdYZdXucOhdZbdZcdXxcOgdZedZfdXxdZgdZhdZidZjdZkdZldZmdUWdUWdUWdUWdUWdZndNBaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadNAdQGdYsdRmdQfdTxdVedYAdWSdQfdWSdRRdQfdQfdZodSWdQfdRmdRmdQGdOJdZpdRmdQfdQGdNAdNAdNAdNAdNAdNAdNAdNAdNAdNAdNAdNAdNAdNAdNAdNAdNAdNAdNAdNAdNAdNAdNAdNAdNAdNAdNAdNAdMwdMwdWYdWYdXLdXLdXLdXLdXLdXLdXLdXLdXLdXLdWYdWYdZqdZrdZsdMwaaaaaaaaaaaaaaaaaaaabdYEdZtdZudZvdZwdZxdZydZzdXVdZAdZBdUAdXpdXXdXpdZCdXpdZDdZEdXrdZFdZGdZHdXudZIdZJdZKdXxdZLdZMdZNdXxdZOdZPdZQdZRdZSdZSdZTdYodZUdMAcMucMudZVdZWaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabdQGdYsdQfdTzdYtdQGdYudYvdYwdQGdVedQGdYxdYydYzdQGdQfdYAdOJdYBdRmdRRdOJdQGdNAdNAdNAdNAdNAdNAdNAdNAdNAdNAdNAdNAdNAdNAdNAdNAdNAdNAdNAdNAdNAdNAdNAdNAdNAdNAdNAdNAdMwdMwdMwdWYdWYdXLdXLdXLdXLdXLdXLdXLdXLdWYdWYdMwdMwdYCdYDcMucMudMBcMudNRdNSaabaabdYEdYFdYGaOQdYIdYJdYKdYLdYMdYNdYOdYPdYQdYRdYSdYTdYUdYVdYWdXrcNYdYYdYZdXucOhdZbdZcdXxcOgdZedZfdXxdZgdZhdZidZjdZkdZldZmdUWdUWdUWdUWdUWdZndNBaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadNAdQGdYsdRmdQfdTxdVedYAdWSdQfdWSdRRdQfdQfdZodSWdQfdRmdRmdQGdOJdZpdRmdQfdQGdNAdNAdNAdNAdNAdNAdNAdNAdNAdNAdNAdNAdNAdNAdNAdNAdNAdNAdNAdNAdNAdNAdNAdNAdNAdNAdNAdNAdMwdMwdWYdWYdXLdXLdXLdXLdXLdXLdXLdXLdXLdXLdWYdWYdZqdZrdZsdMwaaaaaaaaaaaaaaaaaaaabdYEdZtdZuaLydZwdZxdZydZzdXVdZAdZBdUAdXpdXXdXpdZCdXpdZDdZEdXrdZFdZGdZHdXudZIdZJdZKdXxdZLdZMdZNdXxdZOdZPdZQdZRdZSdZSdZTdYodZUdMAcMucMudZVdZWaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadNAdNAdQGdYsdZXdRmdRmdVedRmdXKdSxdRmdZYdRRdXKdWXdOJdRmdZZdRSdQGdWSdOJdYAdQfdQGdNAdNAdNAdNAdNAdNAdNAdNAdNAdNAdNAdNAdNAdNAdNAdNAdNAdNAdNAdNAdNAdNAdNAdNAdNAdNAdNAdNAdMwdWYeaadXLdXLdXLdXLdXLdXLdXLdXLdXLdXLdXLeabdWYeaceaddWYdWYaaaaaaaaaaaaaaaaaaaabdYEeaeeafeageaheagcPueajdXVdXVeakdUAealeameaneaodXpeapeaqdXreareaseatdXueaueaveawdXxeaxeayeazdXxeaAeaBdYoeaCeaDeaEeaDdYoeaFeaGdNAaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadNAdNAdNAdQGdYseaHdTxdSUdQGeaIdQGeaJeaKdQGdTzdQGeaJeaKdQGdTydYAdQGdZodVgdOJdWadQGdNAdNAdNAdNAdNAdNAdNAdNAdNAdNAdNAdNAdNAdNAdNAdNAdNAdNAdNAdNAdNAdNAdNAdNAdNAdNAdNAdNAdMwdWYeaLdXLdXLdXLdXLdXLdXLdXLdXLdXLdXLdXLeaMeaaeaNeaadWYaaaaaaaaaaaaaaaaaaaaaaabdYEeaOeajeajeaPeaQeaReajeaSdXVeaTdUAeaUeaUeaUeaUdXpeaVdYVdXreaWeaXeaYdXueaZebaebbdXxebcebdebedXxebfebgebhdYodYodYodYoebiebjdMwdNAdNAdNAaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadNAdNAdNAdNAdNAdNAdQGdQGdQGdQGdQGdQGeaIdQGebkdSWdTzdWadRSdTydWVdTydVgdTxdQGeaJeblebmebndQGdNAdNAdNAdNAdNAdNAdNAdNAdNAdNAdNAdNAdNAdNAdNAdNAdNAdNAdNAdNAdNAdNAdNAdNAdNAdNAdNAdNAdMwdWYeabdXLdXLdXLdXLdXLdXLdXLdXLdXLdXLdXLdXLeboebpebqaaaaaaaaaaaaaaaaaaaaaaabaabdYEebrebrebsebtebuebvebwebxdXVebydUAdXLdXLdXLdXLdXpebzebAdXrebBebCebDdXuebEebFebGdXxebHebIebJdXxebKebLebhdMwdNAdMwebMebNebOdMwdNAdNAdNAaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa @@ -13909,7 +13907,7 @@ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabesuesuesuesueszesuesAesuesBesCesDesuesuesuesuesuesuaabaabaaaaaaaaaaaaaaaespaaaaaaaaaaaiaaiaaierRerUerUerYerUerUesEesFesGesHesIesJesKesHesLesMcLOaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaesuesuesuesNesOesPesQesNesCesResResSesResNesPesNesuesuesuaabaaaaaaaaaaaaaaaaaaaaaespaaaaaaaaaaaaerResqerUesrerUerUesEesTesTesUesTesTesTesTesVesWcLOaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaesuesuesXesYesZetaesZesNetbesBetcesResSetdesNesNesNeteetfesuaaiaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaerResveswetgesvesvethesTesTesUesTesTesTesUesTetietjaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaesuesuetketketketketlesRetmesuesSetnesuesRetoesPetoetoesResuaaiaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaerRerUesgetperUerUetqesTesTesTesTetresTesTetsettcLOaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaesuesuetketketketketlesRetmesuesSetnesuesRetoesPetoetoesResuaaiaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaerRerUesgetperUerUetqesTesTcPxesTetresTesTetsettcLOaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaesuesuesRetoetoetoetuesOesNetvetoesRetoetoesNesOesOetoetoesuaaiaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaberRerUerUetwetxetyetzetAetAetBetCesUesTesTesTeticLOaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabesuesuetoesOesPesNetDesNesPesNesResRetoesNesNesNesNesPesNesuaaiaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaaberRerUerUetperUerUetEesHesHesTetFetGesTetGetHesWaacetIaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabesuesuesNesPesNetJetKetLetMesRetNesResRetOetPetQetoesOesPesuaaiaabaaaaaaaaaaaaaaaespaaaaaaaabaabaaberRerRerRerYerRerUesEetRetSetTetUetVesFesFesHesWetjaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa diff --git a/nano/templates/air_alarm.tmpl b/nano/templates/air_alarm.tmpl index 4f4b425cbb0..5d5437390f5 100644 --- a/nano/templates/air_alarm.tmpl +++ b/nano/templates/air_alarm.tmpl @@ -127,24 +127,24 @@ Used In File(s): /code/game/machinery/alarm.dm {{for data.vents}}
- {{>value.name}}: {{:value.state}} + {{>value.name}}:
Operating:
{{:helper.link(value.power ? 'On':'Off','power',{'id_tag':value.id_tag,'command':'power','val':value.power?0:1},null,(value.power?'linkOn':'red'))}} {{if value.direction=="siphon"}} - {{:helper.link('Siphoning','arrowthickstop-1-s',{'id_tag':value.id_tag,'command':'set_dir','dir':'release'})}} + {{:helper.link('Siphoning','arrowthickstop-1-s',{'id_tag':value.id_tag,'command':'direction','val':'1'})}} {{else}} - {{:helper.link('Blowing','arrowthick-1-n',{'id_tag':value.id_tag,'command':'set_dir','dir':'siphon'})}} + {{:helper.link('Blowing','arrowthick-1-n',{'id_tag':value.id_tag,'command':'direction','val':'0'})}} {{/if}}
Pressure checks:
- {{:helper.link('External','power',{'id_tag':value.id_tag,'command':'checks','val':helper.xor(value.checks,1)},null,(value.checks == 1 ?'linkOn':'red'))}} - {{:helper.link('Internal','power',{'id_tag':value.id_tag,'command':'checks','val':helper.xor(value.checks,2)},null,(value.checks == 2 ?'linkOn':'red'))}} + {{:helper.link('External','power',{'id_tag':value.id_tag,'command':'checks','val':1},null,(value.checks == 1 ?'linkOn':''))}} + {{:helper.link('Internal','power',{'id_tag':value.id_tag,'command':'checks','val':2},null,(value.checks == 2 ?'linkOn':''))}}
@@ -165,7 +165,7 @@ Used In File(s): /code/game/machinery/alarm.dm {{for data.scrubbers}}
- {{>value.name}}: {{:value.state}} + {{>value.name}}:
Operating:
@@ -188,7 +188,7 @@ Used In File(s): /code/game/machinery/alarm.dm
Filtering:
{{:helper.link('CO2',null,{'id_tag':value.id_tag,'command':'co2_scrub','val':(value.filter_co2==0?1:0)},null,(value.filter_co2?'linkOn':''))}} - {{:helper.link('Plasma', null,{'id_tag':value.id_tag,'command':'tox_scrub','val':(value.filter_tox==0?1:0)},null,(value.filter_tox?'linkOn':''))}} + {{:helper.link('Plasma', null,{'id_tag':value.id_tag,'command':'tox_scrub','val':(value.filter_toxins==0?1:0)},null,(value.filter_toxins?'linkOn':''))}} {{:helper.link('N2O',null,{'id_tag':value.id_tag,'command':'n2o_scrub','val':(value.filter_n2o==0?1:0)},null,(value.filter_n2o?'linkOn':''))}} {{:helper.link('O2', null,{'id_tag':value.id_tag,'command':'o2_scrub', 'val':(value.filter_o2 ==0?1:0)},null,(value.filter_o2 ?'linkOn':''))}}
diff --git a/nano/templates/chem_dispenser.tmpl b/nano/templates/chem_dispenser.tmpl index 1dd960f9c8a..3de1d02984d 100644 --- a/nano/templates/chem_dispenser.tmpl +++ b/nano/templates/chem_dispenser.tmpl @@ -64,9 +64,9 @@ Used In File(s): \code\modules\reagents\Chemistry-Machinery.dm {{empty}} {{if data.glass}} - Glass + Glass {{else}} - Beaker + Beaker {{/if}} is empty @@ -75,10 +75,10 @@ Used In File(s): \code\modules\reagents\Chemistry-Machinery.dm No {{if data.glass}} - Glass + Glass {{else}} - Beaker - {{/if}} + Beaker + {{/if}} loaded {{/if}} diff --git a/paradise.dme b/paradise.dme index 6407ea038b9..a790a81d85a 100644 --- a/paradise.dme +++ b/paradise.dme @@ -49,6 +49,7 @@ #define FILE_DIR "icons/obj/clothing/species/skrell" #define FILE_DIR "icons/obj/clothing/species/tajaran" #define FILE_DIR "icons/obj/clothing/species/unathi" +#define FILE_DIR "icons/obj/clothing/species/vox" #define FILE_DIR "icons/obj/doors" #define FILE_DIR "icons/obj/flora" #define FILE_DIR "icons/obj/machines" diff --git a/sound/weapons/resonator_blast.ogg b/sound/weapons/resonator_blast.ogg new file mode 100644 index 00000000000..7110a716b1c Binary files /dev/null and b/sound/weapons/resonator_blast.ogg differ diff --git a/sound/weapons/resonator_fire.ogg b/sound/weapons/resonator_fire.ogg new file mode 100644 index 00000000000..20665e5dd08 Binary files /dev/null and b/sound/weapons/resonator_fire.ogg differ
[prize.equipment_name][prize.cost]Purchase