From 87998f7eb1a3d79601a99b5fd38122b86febc236 Mon Sep 17 00:00:00 2001 From: PsiOmega Date: Mon, 8 Dec 2014 14:29:04 +0100 Subject: [PATCH 01/16] Fixes #7295. Cleans up round end summary. Removes duplication of traitor summaries. Attempts to improve how the traitor purchase log is presented. Ghosts made manifest now have different names and assignments, otherwise one would get messages like "Anguished Phantom played as an Anguished Phantom". Instead the message is "Anguished Phantom played as a Manifest Ghost". --- code/game/gamemodes/changeling/changeling.dm | 2 +- code/game/gamemodes/cult/cult.dm | 2 +- code/game/gamemodes/cult/runes.dm | 8 +++---- code/game/gamemodes/game_mode.dm | 23 +++++++++++++++----- code/game/gamemodes/gameticker.dm | 2 +- code/game/gamemodes/nuclear/nuclear.dm | 2 +- code/game/gamemodes/traitor/traitor.dm | 2 +- code/game/objects/items/devices/uplinks.dm | 8 ++----- 8 files changed, 28 insertions(+), 21 deletions(-) diff --git a/code/game/gamemodes/changeling/changeling.dm b/code/game/gamemodes/changeling/changeling.dm index 1f7b8a6510..e1ce51997d 100644 --- a/code/game/gamemodes/changeling/changeling.dm +++ b/code/game/gamemodes/changeling/changeling.dm @@ -161,7 +161,7 @@ var/list/possible_changeling_IDs = list("Alpha","Beta","Gamma","Delta","Epsilon" var/text = "The changelings were:" for(var/datum/mind/changeling in changelings) var/changelingwin = changeling.current - text += printplayer(changeling) + text += print_player_full(changeling) //Removed sanity if(changeling) because we -want- a runtime to inform us that the changelings list is incorrect and needs to be fixed. text += "
Changeling ID: [changeling.changeling.changelingID]." diff --git a/code/game/gamemodes/cult/cult.dm b/code/game/gamemodes/cult/cult.dm index e6e70ff35f..4c4226e4ea 100644 --- a/code/game/gamemodes/cult/cult.dm +++ b/code/game/gamemodes/cult/cult.dm @@ -334,7 +334,7 @@ if( cult.len || (ticker && istype(ticker.mode,/datum/game_mode/cult)) ) var/text = "The cultists were:" for(var/datum/mind/cultist in cult) - text += printplayer(cultist) + text += print_player_full(cultist) text += "
" world << text diff --git a/code/game/gamemodes/cult/runes.dm b/code/game/gamemodes/cult/runes.dm index aeafddb015..88e16dbe46 100644 --- a/code/game/gamemodes/cult/runes.dm +++ b/code/game/gamemodes/cult/runes.dm @@ -414,12 +414,12 @@ var/list/sacrificed = list() else ticker.mode.cult+=D.mind - D.mind.assigned_role = pick("Anguished", "Blasphemous", "Corrupt", "Cruel", "Depraved", "Despicable", "Disturbed", "Exacerbated", "Foul", "Hateful", "Inexorable", "Implacable", "Impure", "Malevolent", "Malignant", "Malicious", "Pained", "Profane", "Profligate", "Relentless", "Resentful", "Restless", "Spiteful", "Tormented", "Unclean", "Unforgiving", "Vengeful", "Vindictive", "Wicked", "Wronged") - D.mind.assigned_role += " " - D.mind.assigned_role += pick("Apparition", "Aptrgangr", "Dis", "Draugr", "Dybbuk", "Eidolon", "Fetch", "Fylgja", "Ghast", "Ghost", "Gjenganger", "Haint", "Phantom", "Phantasm", "Poltergeist", "Revenant", "Shade", "Shadow", "Soul", "Spectre", "Spirit", "Spook", "Visitant", "Wraith") + D.mind.assigned_role = "Manifest Ghost" D.mind.special_role = "Cultist" if(!chose_name) - D.real_name = D.mind.assigned_role + D.real_name = pick("Anguished", "Blasphemous", "Corrupt", "Cruel", "Depraved", "Despicable", "Disturbed", "Exacerbated", "Foul", "Hateful", "Inexorable", "Implacable", "Impure", "Malevolent", "Malignant", "Malicious", "Pained", "Profane", "Profligate", "Relentless", "Resentful", "Restless", "Spiteful", "Tormented", "Unclean", "Unforgiving", "Vengeful", "Vindictive", "Wicked", "Wronged") + D.real_name += " " + D.real_name += pick("Apparition", "Aptrgangr", "Dis", "Draugr", "Dybbuk", "Eidolon", "Fetch", "Fylgja", "Ghast", "Ghost", "Gjenganger", "Haint", "Phantom", "Phantasm", "Poltergeist", "Revenant", "Shade", "Shadow", "Soul", "Spectre", "Spirit", "Spook", "Visitant", "Wraith") D << "Your blood pulses. Your head throbs. The world goes red. All at once you are aware of a horrible, horrible truth. The veil of reality has been ripped away and in the festering wound left behind something sinister takes root." D << "Assist your new compatriots in their dark dealings. Their goal is yours, and yours is theirs. You serve the Dark One above all else. Bring It back." diff --git a/code/game/gamemodes/game_mode.dm b/code/game/gamemodes/game_mode.dm index 12d9278205..68bf3935d8 100644 --- a/code/game/gamemodes/game_mode.dm +++ b/code/game/gamemodes/game_mode.dm @@ -155,7 +155,7 @@ for(var/mob/M in player_list) if(M.mind) - pltext += printplayer(M.mind) + pltext += print_player_lite(M.mind) if(M.client) clients++ if(ishuman(M)) @@ -183,7 +183,7 @@ if(isobserver(M)) ghosts++ - var/text = "A round of [src.name] has ended." + var/text = "" if(surviving_total > 0) text += "
There [surviving_total>1 ? "were [surviving_total] survivors" : "was one survivor"]" text += " ([escaped_total>0 ? escaped_total : "none"] [emergency_shuttle.evac ? "escaped" : "transferred"]) and [ghosts] ghosts.
" @@ -526,7 +526,7 @@ proc/get_nt_opposed() player.current << "Objective #[obj_count]: [objective.explanation_text]" obj_count++ -/datum/game_mode/proc/printplayer(var/datum/mind/ply) +/datum/game_mode/proc/print_player_lite(var/datum/mind/ply) var/role = ply.assigned_role == "MODE" ? "\improper[ply.special_role]" : "\improper[ply.assigned_role]" var/text = "
[ply.name] ([ply.key]) as \a [role] (" if(ply.current) @@ -540,6 +540,11 @@ proc/get_nt_opposed() text += "body destroyed" text += ")" + return text + +/datum/game_mode/proc/print_player_full(var/datum/mind/ply) + var/text = print_player_lite(ply) + var/TC_uses = 0 var/uplink_true = 0 var/purchases = "" @@ -547,9 +552,15 @@ proc/get_nt_opposed() if(H && H.uplink_owner && H.uplink_owner == ply) TC_uses += H.used_TC uplink_true = 1 - for(var/log in H.purchase_log) - purchases += "[log]" + var/list/refined_log = new() + for(var/datum/uplink_item/UI in H.purchase_log) + var/obj/I = new UI.path + refined_log.Add("[H.purchase_log[UI]]x\icon[I][I.name]") + del(I) + purchases = english_list(refined_log, nothing_text = "") if(uplink_true) - text += " (used [TC_uses] TC) [purchases]" + text += " (used [TC_uses] TC)" + if(purchases) + text += "
[purchases]" return text diff --git a/code/game/gamemodes/gameticker.dm b/code/game/gamemodes/gameticker.dm index d4d14c9120..6f78217649 100644 --- a/code/game/gamemodes/gameticker.dm +++ b/code/game/gamemodes/gameticker.dm @@ -376,7 +376,7 @@ var/global/datum/controller/gameticker/ticker /datum/controller/gameticker/proc/declare_completion() - world << "


The round has ended." + world << "


A round of [mode.name] has ended!

" for(var/mob/Player in player_list) if(Player.mind && !isnewplayer(Player)) if(Player.stat != DEAD) diff --git a/code/game/gamemodes/nuclear/nuclear.dm b/code/game/gamemodes/nuclear/nuclear.dm index 980b786200..8fd46fc897 100644 --- a/code/game/gamemodes/nuclear/nuclear.dm +++ b/code/game/gamemodes/nuclear/nuclear.dm @@ -313,7 +313,7 @@ var/global/list/turf/synd_spawn = list() var/text = "The mercenaries were:" for(var/datum/mind/syndicate in syndicates) - text += printplayer(syndicate) + text += print_player_full(syndicate) world << text return 1 diff --git a/code/game/gamemodes/traitor/traitor.dm b/code/game/gamemodes/traitor/traitor.dm index 7ac8ffd671..2e0f8b91fa 100644 --- a/code/game/gamemodes/traitor/traitor.dm +++ b/code/game/gamemodes/traitor/traitor.dm @@ -180,7 +180,7 @@ var/text = "The traitors were:" for(var/datum/mind/traitor in traitors) var/traitorwin = 1 - text += printplayer(traitor) + text += print_player_full(traitor) if(traitor.objectives.len)//If the traitor had no objectives, don't need to process this. var/count = 1 diff --git a/code/game/objects/items/devices/uplinks.dm b/code/game/objects/items/devices/uplinks.dm index 35a80a1b4e..9b58a812ce 100644 --- a/code/game/objects/items/devices/uplinks.dm +++ b/code/game/objects/items/devices/uplinks.dm @@ -128,11 +128,7 @@ datum/nano_item_lists var/mob/living/carbon/human/A = usr A.put_in_any_hand_if_possible(I) - if(istype(I ,/obj/item/weapon/storage/box/) && I.contents.len>0) - for(var/atom/o in I) - purchase_log += "\icon[o]" - else - purchase_log += "\icon[I]" + purchase_log[UI] = purchase_log[UI] + 1 return 1 return 0 @@ -192,7 +188,7 @@ datum/nano_item_lists data["menu"] = nanoui_menu data["nano_items"] = nanoui_items data += nanoui_data - + // update the ui if it exists, returns null if no ui is passed/found ui = nanomanager.try_update_ui(user, src, ui_key, ui, data, force_open) if (!ui) From 239eb2a0e8df4f01aa64a20d7ea0956d807da0f1 Mon Sep 17 00:00:00 2001 From: PsiOmega Date: Tue, 9 Dec 2014 08:57:42 +0100 Subject: [PATCH 02/16] Fixes #7323. pAIs no longer check and cut wires when interacting with radio functionality. --- code/game/objects/items/devices/paicard.dm | 21 +++++++------------ .../game/objects/items/devices/radio/radio.dm | 10 +++++++-- 2 files changed, 16 insertions(+), 15 deletions(-) diff --git a/code/game/objects/items/devices/paicard.dm b/code/game/objects/items/devices/paicard.dm index 3b7e66b7df..2f3a9c682e 100644 --- a/code/game/objects/items/devices/paicard.dm +++ b/code/game/objects/items/devices/paicard.dm @@ -169,19 +169,13 @@ - - - - - - @@ -261,10 +255,11 @@ removePersonality() if(href_list["wires"]) var/t1 = text2num(href_list["wires"]) - if (radio.wires & t1) - radio.wires &= ~t1 - else - radio.wires |= t1 + switch(t1) + if(4) + radio.ToggleBroadcast() + if(2) + radio.ToggleReception() if(href_list["setlaws"]) var/newlaws = copytext(sanitize(input("Enter any additional directives you would like your pAI personality to follow. Note that these directives will not override the personality's allegiance to its imprinted master. Conflicting directives will be ignored.", "pAI Directive Configuration", pai.pai_laws) as message),1,MAX_MESSAGE_LEN) if(newlaws) @@ -315,4 +310,4 @@ if(pai) pai.ex_act(severity) else - del(src) + del(src) diff --git a/code/game/objects/items/devices/radio/radio.dm b/code/game/objects/items/devices/radio/radio.dm index dad292fd47..bb6f0d91f5 100644 --- a/code/game/objects/items/devices/radio/radio.dm +++ b/code/game/objects/items/devices/radio/radio.dm @@ -108,6 +108,12 @@ Speaker: [list ? "Engaged" : "Disengaged"]
"} +/obj/item/device/radio/proc/ToggleBroadcast() + broadcasting = !broadcasting && !(wires.IsIndexCut(WIRE_TRANSMIT) || wires.IsIndexCut(WIRE_SIGNAL)) + +/obj/item/device/radio/proc/ToggleReception() + listening = !listening && !(wires.IsIndexCut(WIRE_RECEIVE) || wires.IsIndexCut(WIRE_SIGNAL)) + /obj/item/device/radio/Topic(href, href_list) //..() if (usr.stat || !on) @@ -135,11 +141,11 @@ return else if (href_list["talk"]) - broadcasting = !(wires.IsIndexCut(WIRE_TRANSMIT) || wires.IsIndexCut(WIRE_SIGNAL)) && text2num(href_list["talk"]) + ToggleBroadcast() else if (href_list["listen"]) var/chan_name = href_list["ch_name"] if (!chan_name) - listening = !(wires.IsIndexCut(WIRE_RECEIVE) || wires.IsIndexCut(WIRE_SIGNAL)) && text2num(href_list["listen"]) + ToggleReception() else if (channels[chan_name] & FREQ_LISTENING) channels[chan_name] &= ~FREQ_LISTENING From c6c7ee8729d013669ce5660ed4162b355539fb92 Mon Sep 17 00:00:00 2001 From: PsiOmega Date: Tue, 9 Dec 2014 09:57:24 +0100 Subject: [PATCH 03/16] Map fixes. Removes lone pipe in the nuke arrival airlock. A pipe for the new atmos ejection line had relocated itself into space. Returned to its place. Adds airlocks mentioned in #7325. --- maps/exodus-1.dmm | 37 +++++++++++++++++++------------------ 1 file changed, 19 insertions(+), 18 deletions(-) diff --git a/maps/exodus-1.dmm b/maps/exodus-1.dmm index eb68b0aa79..bc1f373474 100644 --- a/maps/exodus-1.dmm +++ b/maps/exodus-1.dmm @@ -2300,7 +2300,7 @@ "aSl" = (/obj/structure/stool/bed/chair/comfy/beige{tag = "icon-comfychair (NORTH)"; icon_state = "comfychair"; dir = 1},/turf/simulated/floor{icon_state = "grimy"},/area/hallway/secondary/entry/starboard) "aSm" = (/obj/machinery/vending/snack,/turf/simulated/floor{icon_state = "dark"},/area/hallway/secondary/entry/starboard) "aSn" = (/obj/structure/cable/green,/obj/machinery/power/apc/high{dir = 4; name = "east bump"; pixel_x = 24},/turf/simulated/floor,/area/hallway/secondary/entry/starboard) -"aSo" = (/obj/machinery/door/airlock/maintenance{req_access_txt = "12"},/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plating,/area/hallway/primary/port) +"aSo" = (/obj/machinery/door/airlock/maintenance{req_access_txt = "12"},/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/door/firedoor/border_only,/turf/simulated/floor/plating,/area/hallway/primary/port) "aSp" = (/obj/machinery/door/firedoor/border_only{dir = 1; name = "Firelock North"},/turf/simulated/floor,/area/hallway/primary/port) "aSq" = (/obj/structure/disposalpipe/segment,/obj/machinery/door/firedoor/border_only{dir = 1; name = "Firelock North"},/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor,/area/hallway/primary/port) "aSr" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 4},/turf/simulated/floor/plating,/area/hallway/primary/port) @@ -5983,7 +5983,7 @@ "clc" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/plating,/area/engine/engine_eva_maintenance) "cld" = (/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/unary/vent_pump/on,/turf/simulated/floor/plating,/area/engine/engine_eva_maintenance) "cle" = (/turf/simulated/wall/r_wall,/area/hallway/primary/aft) -"clf" = (/obj/machinery/door/airlock/maintenance{name = "Engineering EVA Storage Maintainance"; req_access_txt = "12"; req_one_access_txt = "11;24"},/obj/machinery/atmospherics/pipe/simple/hidden/purple,/turf/simulated/floor,/area/hallway/primary/aft) +"clf" = (/obj/machinery/door/airlock/external{frequency = 1380; icon_state = "door_locked"; id_tag = "nuke_shuttle_dock_inner"; locked = 1; name = "Docking Port Airlock"; req_access = null; req_access_txt = "13"},/turf/simulated/floor/plating,/area/hallway/secondary/entry/port) "clg" = (/obj/machinery/computer/station_alert,/turf/simulated/floor,/area/hallway/primary/aft) "clh" = (/obj/structure/stool/bed/chair/office/dark{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/cyan,/turf/simulated/floor,/area/hallway/primary/aft) "cli" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 1},/turf/simulated/floor,/area/medical/virologyaccess) @@ -6116,7 +6116,7 @@ "cnF" = (/obj/structure/disposalpipe/segment,/obj/machinery/door/firedoor/border_only{dir = 1; name = "Engineering Firelock"},/obj/machinery/door/airlock/atmos{name = "Atmospherics Maintenance"; req_access_txt = "12;24"},/obj/machinery/atmospherics/pipe/simple/visible/supply,/turf/simulated/floor,/area/atmos) "cnG" = (/obj/machinery/atmospherics/pipe/simple/hidden/cyan,/turf/simulated/wall/r_wall,/area/hallway/primary/aft) "cnH" = (/obj/machinery/door/airlock/maintenance{name = "Atmospherics Maintenance Access"; req_access_txt = "12;24"},/obj/machinery/atmospherics/pipe/simple/hidden/purple,/turf/simulated/floor,/area/hallway/primary/aft) -"cnI" = (/obj/machinery/door/airlock/glass_atmos{name = "Atmospherics Monitoring Room"; req_access_txt = "24"},/turf/simulated/floor,/area/hallway/primary/aft) +"cnI" = (/obj/machinery/door/airlock/maintenance{name = "Engineering EVA Storage Maintainance"; req_access_txt = "12"; req_one_access_txt = "11;24"},/obj/machinery/atmospherics/pipe/simple/hidden/purple,/obj/machinery/door/firedoor/border_only,/turf/simulated/floor,/area/hallway/primary/aft) "cnJ" = (/obj/machinery/door/firedoor/border_only{dir = 1; name = "Engineering Firelock"},/obj/machinery/door/airlock/glass_engineering{name = "Engineering Monitoring Room"; req_access_txt = "11"},/turf/simulated/floor,/area/hallway/primary/aft) "cnK" = (/obj/structure/sign/securearea,/turf/simulated/wall/r_wall,/area/hallway/primary/aft) "cnL" = (/obj/machinery/door/firedoor/border_only{dir = 1; name = "Engineering Firelock"},/obj/machinery/door/airlock/glass_engineering{name = "Engineering Hallway"; req_one_access_txt = "10;24"},/turf/simulated/floor,/area/hallway/primary/aft) @@ -6284,6 +6284,8 @@ "cqR" = (/obj/structure/stool/bed/chair{dir = 1},/obj/effect/landmark/start{name = "Atmospheric Technician"},/turf/simulated/floor,/area/atmos) "cqS" = (/obj/machinery/atmospherics/pipe/simple/visible/purple{dir = 6},/turf/simulated/floor,/area/atmos) "cqT" = (/obj/structure/grille,/turf/simulated/floor/plating/airless,/area/security/prison) +"cqU" = (/obj/machinery/door/airlock/glass_atmos{name = "Atmospherics Monitoring Room"; req_access_txt = "24"},/obj/machinery/door/firedoor/border_only,/turf/simulated/floor,/area/hallway/primary/aft) +"cqV" = (/obj/machinery/door/firedoor/border_only{dir = 1; name = "Engineering Firelock"},/obj/machinery/atmospherics/pipe/simple/visible/yellow{dir = 4},/obj/machinery/door/airlock/atmos{name = "Atmospherics Maintenance"; req_access_txt = "12;24"},/turf/simulated/floor,/area/atmos) "cqW" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/machinery/door/firedoor/border_only{dir = 2},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/manifold/visible/green{dir = 8},/turf/simulated/floor/plating,/area/atmos) "cqX" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 4},/turf/simulated/floor/plating,/area/engine/drone_fabrication) "cqY" = (/obj/machinery/atmospherics/pipe/simple/visible/cyan,/turf/simulated/floor,/area/atmos) @@ -6341,6 +6343,7 @@ "crY" = (/obj/effect/decal/cleanable/cobweb2,/turf/simulated/floor/plating,/area/maintenance/engineering) "crZ" = (/obj/machinery/atmospherics/pipe/manifold/visible/purple,/turf/simulated/floor,/area/atmos) "csa" = (/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor/plating,/area/engine/drone_fabrication) +"csb" = (/obj/machinery/door/firedoor/border_only{dir = 1; name = "Engineering Firelock"},/obj/machinery/door/airlock/atmos{name = "Atmospherics Maintenance"; req_access_txt = "12;24"},/turf/simulated/floor,/area/atmos) "csc" = (/obj/machinery/door/airlock/maintenance{name = "Drone Fabrication/Engine Waste Handling"; req_one_access_txt = "10;24"},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor/plating,/area/engine/drone_fabrication) "csd" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/simple/visible/purple{dir = 4},/obj/machinery/atmospherics/pipe/simple/visible/cyan,/turf/simulated/floor,/area/atmos) "cse" = (/obj/machinery/atmospherics/unary/vent_scrubber/on{dir = 4},/obj/machinery/light/small{dir = 1},/turf/simulated/floor/plating,/area/engine/engine_waste) @@ -6394,6 +6397,7 @@ "cta" = (/obj/structure/cable/cyan{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/unary/vent_scrubber/on{dir = 8},/turf/simulated/floor/plating,/area/engine/engine_room) "ctb" = (/obj/machinery/atmospherics/binary/pump{dir = 8},/turf/simulated/floor/plating,/area/engine/engine_room) "ctc" = (/obj/structure/cable/cyan{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plating,/area/engine/engine_room) +"ctd" = (/obj/machinery/door/airlock/maintenance{name = "Atmospherics Maintenance Access"; req_access_txt = "12;24"},/obj/structure/disposalpipe/segment,/obj/structure/cable/cyan{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/door/firedoor/border_only,/turf/simulated/floor/plating,/area/atmos) "cte" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/unary/vent_pump/on{dir = 1},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 4},/area/engine/engine_waste) "ctf" = (/obj/machinery/atmospherics/binary/pump{dir = 8},/turf/simulated/floor/plating,/area/engine/engine_waste) "ctg" = (/obj/machinery/atmospherics/pipe/simple/visible/cyan{tag = "icon-intact (NORTHWEST)"; icon_state = "intact"; dir = 9},/turf/simulated/floor,/area/atmos) @@ -6510,6 +6514,8 @@ "cvn" = (/obj/structure/cable/yellow{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/structure/cable/yellow{d1 = 2; d2 = 8; icon_state = "2-8"},/turf/simulated/floor/airless/catwalk{icon_state = "catwalk8"},/area/solar/starboard) "cvo" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/visible/yellow,/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 6},/area/engine/engine_room) "cvp" = (/obj/machinery/atmospherics/pipe/simple/visible/yellow,/turf/simulated/floor,/area/atmos) +"cvq" = (/obj/machinery/door/airlock/maintenance{req_access_txt = "0"; req_one_access_txt = "10;24"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/door/firedoor/border_only,/turf/simulated/floor/plating,/area/engine/engine_hallway) +"cvr" = (/obj/machinery/door/airlock/maintenance{name = "Drone Fabrication"; req_one_access_txt = "10;24"},/obj/structure/disposalpipe/segment,/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/door/firedoor/border_only,/turf/simulated/floor/plating,/area/engine/drone_fabrication) "cvu" = (/obj/machinery/atmospherics/unary/freezer{dir = 2; icon_state = "freezer"},/turf/simulated/floor{icon_state = "bot"; dir = 1},/area/atmos) "cvv" = (/obj/machinery/atmospherics/unary/heater{dir = 2; icon_state = "heater"},/turf/simulated/floor{icon_state = "bot"; dir = 1},/area/atmos) "cvw" = (/obj/structure/disposalpipe/segment{dir = 1; icon_state = "pipe-c"},/turf/simulated/floor,/area/atmos) @@ -6611,7 +6617,6 @@ "cxp" = (/obj/machinery/atmospherics/pipe/manifold4w/visible/yellow,/turf/simulated/floor,/area/atmos) "cxq" = (/obj/machinery/portable_atmospherics/powered/scrubber,/turf/simulated/floor,/area/atmos) "cxr" = (/obj/machinery/atmospherics/pipe/manifold/hidden/yellow{tag = "icon-map (WEST)"; icon_state = "map"; dir = 8},/turf/simulated/wall/r_wall,/area/atmos) -"cxs" = (/obj/machinery/door/firedoor/border_only{dir = 1; name = "Engineering Firelock"},/obj/machinery/door/airlock/glass_atmos{name = "Atmospherics"; req_access_txt = "24"},/turf/simulated/floor,/area/atmos) "cxt" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 6},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 6},/turf/simulated/floor,/area/atmos) "cxu" = (/obj/machinery/atmospherics/pipe/manifold/visible/purple,/obj/machinery/meter,/turf/simulated/floor,/area/atmos) "cxv" = (/obj/machinery/atmospherics/pipe/simple/visible/green,/obj/machinery/atmospherics/pipe/simple/visible/purple{dir = 4},/turf/simulated/floor,/area/atmos) @@ -6703,7 +6708,6 @@ "czf" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor,/area/atmos) "czg" = (/obj/machinery/atmospherics/valve/digital{name = "CO2 Outlet Valve"},/turf/simulated/floor{dir = 6; icon_state = "yellow"},/area/atmos) "czh" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/portable_atmospherics/canister/phoron,/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor{icon_state = "bot"; dir = 1},/area/atmos) -"czj" = (/obj/machinery/door/airlock/maintenance{name = "Drone Fabrication"; req_one_access_txt = "10;24"},/obj/structure/disposalpipe/segment,/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor/plating,/area/engine/drone_fabrication) "czk" = (/obj/machinery/atmospherics/valve/digital{name = "Phoron Outlet Valve"},/turf/simulated/floor{dir = 6; icon_state = "warning"},/area/atmos) "czl" = (/obj/machinery/computer/general_air_control/large_tank_control{frequency = 1441; input_tag = "n2o_in"; name = "Nitrous Oxide Supply Control"; output_tag = "n2o_out"; sensors = list("n2o_sensor" = "Tank")},/obj/machinery/atmospherics/unary/vent_scrubber/on,/obj/machinery/light,/turf/simulated/floor{dir = 7; icon_state = "escape"},/area/atmos) "czm" = (/obj/machinery/atmospherics/pipe/simple/visible/purple,/turf/simulated/floor{dir = 10; icon_state = "escape"},/area/atmos) @@ -6719,7 +6723,6 @@ "czw" = (/obj/machinery/light,/turf/simulated/floor,/area/atmos) "czx" = (/obj/machinery/atmospherics/portables_connector{dir = 1},/turf/simulated/floor,/area/atmos) "czy" = (/obj/machinery/computer/general_air_control/large_tank_control{frequency = 1441; input_tag = "co2_in"; name = "Carbon Dioxide Supply Control"; output_tag = "co2_out"; sensors = list("co2_sensor" = "Tank")},/obj/machinery/atmospherics/unary/vent_scrubber/on,/obj/machinery/light,/turf/simulated/floor{dir = 2; icon_state = "yellow"},/area/atmos) -"czz" = (/obj/machinery/door/airlock/maintenance{name = "Atmospherics Maintenance Access"; req_access_txt = "12;24"},/obj/structure/disposalpipe/segment,/obj/structure/cable/cyan{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/plating,/area/atmos) "czA" = (/obj/machinery/atmospherics/pipe/simple/visible/purple,/turf/simulated/floor{dir = 10; icon_state = "yellow"},/area/atmos) "czB" = (/obj/machinery/space_heater,/turf/simulated/floor,/area/atmos) "czD" = (/obj/structure/table,/obj/item/device/multitool{pixel_x = 5},/obj/item/device/t_scanner,/turf/simulated/floor,/area/engine/workshop) @@ -6777,7 +6780,6 @@ "cAD" = (/obj/machinery/portable_atmospherics/canister/nitrogen,/turf/simulated/floor{icon_state = "bot"; dir = 1},/area/atmos) "cAE" = (/obj/machinery/portable_atmospherics/canister/air,/turf/simulated/floor{icon_state = "bot"; dir = 1},/area/atmos) "cAF" = (/obj/machinery/portable_atmospherics/canister/carbon_dioxide,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor{icon_state = "bot"; dir = 1},/area/atmos) -"cAG" = (/obj/machinery/door/firedoor/border_only{dir = 1; name = "Engineering Firelock"},/obj/machinery/atmospherics/pipe/simple/visible/yellow{dir = 4},/obj/machinery/door/airlock/glass_atmos{name = "Atmospherics"; req_access_txt = "24"},/turf/simulated/floor,/area/atmos) "cAH" = (/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/grille,/obj/machinery/door/firedoor/border_only{dir = 2},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers,/turf/simulated/floor/plating,/area/atmos) "cAI" = (/turf/simulated/wall/r_wall,/area/engine/hallway) "cAJ" = (/obj/machinery/door/firedoor/border_only{dir = 1; name = "Engineering Firelock"},/obj/machinery/door/airlock/glass_engineering{name = "Engineering Hallway"; req_one_access_txt = "10;24"},/turf/simulated/floor,/area/engine/hallway) @@ -6825,7 +6827,6 @@ "cBE" = (/obj/machinery/portable_atmospherics/canister/carbon_dioxide,/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 9; pixel_y = 0},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 9},/turf/simulated/floor{icon_state = "bot"; dir = 1},/area/atmos) "cBF" = (/obj/structure/disposalpipe/segment,/obj/machinery/light/small{dir = 8},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/power/sensor{name = "Powernet Sensor - Atmospherics Subgrid"; name_tag = "Atmospherics Subgrid"},/obj/structure/cable/cyan{d2 = 4; icon_state = "0-4"},/obj/structure/cable/cyan,/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 4},/area/atmos) "cBG" = (/obj/machinery/power/terminal{icon_state = "term"; dir = 1},/obj/structure/cable{d2 = 8; icon_state = "0-8"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 1},/area/atmos) -"cBH" = (/obj/machinery/door/airlock/maintenance{req_access_txt = "0"; req_one_access_txt = "10;24"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor/plating,/area/engine/engine_hallway) "cBI" = (/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 1},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor,/area/engine/engine_hallway) "cBJ" = (/obj/machinery/light{dir = 1},/obj/structure/cable/green{d1 = 2; d2 = 4; icon_state = "2-4"},/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 1},/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 1},/turf/simulated/floor,/area/engine/engine_hallway) "cBK" = (/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor,/area/engine/engine_hallway) @@ -7400,7 +7401,7 @@ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaTDaTDaTDaTDaTDaTDaTDaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaTDaTDaTDaTDaTDaTDaTDaTDaTDaaaaaaaaaaaaaaaaafaBIawqaBIaQBaQCaGOaQDaQEaQFaQGaGOaQCaQHaQIaBIaQJaLEaPeaQKaQLaPhaPhaPiaIAaQMaNnaLJaQNaNpaQOaQPaNraNraQQaQRaQSaQTaNraQUaQVaQWaQVaQXaQYaQVaQVaQZaQVaQVaRaaRbaQVaRcaQVaRdaNraNraNraReaPFaPGaPHaMkaRfaMkaRgaRgaRgaRgaRgaRgaRgaRgaRhaRiaRgaRjaRgaRgaRkaRgaRgaRgaRgaRlaRmaRnaRoaRoaRoaRoaRoaRoaRoaRpaRqaRpaJlaRraRsaRsaRsaRsaRsaRtaRuaRvaRwaKZaKZaKZaKZaKZaRxaLfaRyaQmaQnaRzaRAaRBaRCaRDaREaRFaQraRGaRHaRIaRJaLfaGraIgaRKaRKaRLaRMaRNaRNaROaIgaRPaRQaRRaGGaRSaRTaRUaRVaRVaRWaRXaGGaRYaGGaRZaRZaRZaSaaSbaScaaaaaaaaaaIuaIuaIuaIuaIuaIuaIuaIuaIuaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaTDaTDaTDaTDaTDaTDaTDaTDaTDaTDaTDaTDaTDaTDaTDaGeaGgaGgaGiaGfaGhaSdaOYaLDaDPaHxaHxaSfaLDaOYaLDaHyaHAaHzaLEaSkaSlaSlaNkaSlaNlaIAaSmaNnaSnaIAaLKaLKaSoaLKaLKaLKaLKaLKaLKaSpaSqaLKaLKaLKaLKaLKaLKaSraSsaSraLKaStaLKaNraQPaSuaSvaSwaSxaNraSyaLKaMbaMbaMkaSzaKOaSAaMnaMnaSBaSBaSBaSBaSCaJeaSDaSEaSFaSGaSGaSHaSGaSGaSFaSEaSIaJeaSJaSKaSKaSKaSKaSLaSLaSMaSNaRqaRpaJlaSOaSPaSPaSPaSPaSPaSPaSQaSRaSSaSTaSUaSVaSWaSXaSYaKZaKZaSZaTaaTbaTcaTdaTeaTeaTeaTfaTgaTfaTeaTeaTeaTeaGraIgaThaONaRLaRMaONaONaTiaIgaTjaTkaTlaGGaIoaTmaTnaToaTpaTqaIoaTraTsaGGaTtaTuaRZaTvaTwaTxaafaaaaaaaIuaIuaIuaIuaIuaIuaIuaIuaIuaaaaaaaaaaaaaacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaIvaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaTDaTDaTDaTDaTDaTDaTDaTDaTDaTDaTDaTDaTDaTDaTDaKQaNXaLmaKMaQAaSgaSeaSiaShaSjaSiaTzaTyaTBaTAaTEaTCaTAaTFcozaTIaTJaTKaTLaTLaTLaTMaTLaTNaTOaIAaTPaTQaTRaTSaTTaTUaTVaTWaTXaTUaTYaTZaUaaUbaUcaUdaUeaUfaUgaUhaUeaUiaLKaLKaUjaLKaLKaLKaLKaUkaUlaLKaUmaMbaUnaSzaKOaUoaaaaaaaaaaaaaaaaaaaaaaUpaUqaUraUsaUtaUuaUvaUuaUwaUxaUyaUzaUpaaaaaaaaaaaaaaaaaaaaaaUAaSNaRqaUBaUCaUDaUEaUFaUFaUFaUFaUGaUHaUIaUFaUFaUFaUJaUKaULaUMaUNaUOaUPaUQaURaUSaUTaTfaUUaUVaUWaUXaUYaUZaVaaVbaTeaGraIgaVcaVcaRLaRMaVdaVdaVeaIgaIgaVfaIgaGGaVgaVhaViaViaViaVjaVkaGGaGGaGGaVlaVmaVnaVoaVpaVqaafaafaaaaIuaIuaIuaIuaIuaIuaIuaIuaIuaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaTDaTDaTDaTDaTDaTDaTDaTDaTDaTDaTDaTDaTDaTDaTDaKQcmVaVraKMaDPaVsaVsaVtaVsaVsaVsaVDaVsaVsaVtaVsaVsaYEaWYaVuaVvaKdaKdaKdaKdaKdaVwaVxaVyaVzaIAaTQaTQaVAaTSaVBaTUaTUaTUaTUaTUaTYaVCaTUaTUaTUaUdaUeclraVEaVFaUeaUiaVGaVHaVIaVJaVKaUmaVLaVMaVNaVOaVPaVQaMkaSzaKOaUoaaaaaaaaaaaaaUpaUpaUpaUpaVRaVSaVTaVUaVVaVWaVXaVYaVZaWaaWbaUpaUpaUpaUpaaaaaaaaaaaaaUAaSNaRqaRpaWcaSSaWdaWeaWfaSSaWgaWhaWiaWjaWkaWlaWmaWnaQbaWoaWpaWqaWraWsaWtaWtaWuaWvaWwaWxaWyaWzaWAaWBaWCaWDaWEaTeaGraIgaThaONaRLaRMaONaONaONaWFaWGaONaWHaGGaWIaWJaToaToaToaWKaWLaWLaWMaWNaWOaWPaWQaVoaWRaWSaWTaWTaWUaIuaIuaIuaIuaIuaIuaIuaIuaIuaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaTDaTDaTDaTDaTDaTDaTDaTDaTDaTDaTDaTDaTDaTDaTDaKQcmVaVrclfaDPaVsaVsaVtaVsaVsaVsaVDaVsaVsaVtaVsaVsaYEaWYaVuaVvaKdaKdaKdaKdaKdaVwaVxaVyaVzaIAaTQaTQaVAaTSaVBaTUaTUaTUaTUaTUaTYaVCaTUaTUaTUaUdaUeclraVEaVFaUeaUiaVGaVHaVIaVJaVKaUmaVLaVMaVNaVOaVPaVQaMkaSzaKOaUoaaaaaaaaaaaaaUpaUpaUpaUpaVRaVSaVTaVUaVVaVWaVXaVYaVZaWaaWbaUpaUpaUpaUpaaaaaaaaaaaaaUAaSNaRqaRpaWcaSSaWdaWeaWfaSSaWgaWhaWiaWjaWkaWlaWmaWnaQbaWoaWpaWqaWraWsaWtaWtaWuaWvaWwaWxaWyaWzaWAaWBaWCaWDaWEaTeaGraIgaThaONaRLaRMaONaONaONaWFaWGaONaWHaGGaWIaWJaToaToaToaWKaWLaWLaWMaWNaWOaWPaWQaVoaWRaWSaWTaWTaWUaIuaIuaIuaIuaIuaIuaIuaIuaIuaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaTDaTDaTDaTDaTDaTDaTDaTDaTDaTDaTDaTDaTDaTDaTDaTGaGgaTHaGiaBIaBIaBIaWVaWWaWWaWWaWWaWWaWWaWWaWXaBIaBLcpSaWZaIAaXaaXbaXbaXbaXcaXdaIAaIAaIAaIAaTQaXeaXfaTSaXgaTUaTUaXhaXiaXjaXkaXhaTUaTUaTUaXlaUeaXmaXnaXoaUeaUiaVGaXpaXqaXraXsaUmaXtaVPaXuaXvaXwaXxaMkaSzaKOaMmaSCaMbaXyaUpaUpaXzaXAaXBaXCaXDaXDaXEaXFaXGaXEaXFaXDaXDaXHaXIaXJaXKaUpaUpaXyaJlaXLaXMaSNaRqaRpaJlaXNaWdaXOaWfaSSaXPaXQaSSaXRaXSaWfaSSaXTaOtaXUaXVaUQaXWaXXaXYaXZaYaaYbaYcaYdaYeaYfaYgaWBaYhaWDaYiaTeaGraIgaYjaYjaRLaRMaYkaONaONaYlaONaYmaYnaGGaIoaYoaYpaToaYqaYpaYraYsaGGaYtaVoaYuaVoaYvaYwaYxaYyaYzaYAaIuaIuaIuaIuaIuaIuaIuaIuaIuaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaTDaTDaTDaTDaTDaTDaTDaTDaTDaTDaTDaTDaTDaTDaTDaYVaaaaaaaYBaYBaYBaYBaYBaYBaYBaYBaYBaYBaYBaYBaafaYCaYDcpKaYFaYGaYHaYHaYIaYJaYKaYLaYMaYNaYOaYPaYQaYRaYSaTSaYTaTUaTUaXhaXjaYUbbTaXhaTUaTUaYWaUdaUeaUeaUeaUeaUeaUiaVGaVGaYXaVGaVGaUmaYYaXvaYZaXvaXvaXxaMkaSzaKOaNSaNSaZaaZbaZcaUpaZdaZeaZfaZgaZfaZfaZfaZfaZhaZfaZfaZfaZfaZfaZfaZiaZjaUpaZkaZbaZlaZmaZnaSNaRqaRpaWcaSSaSSaSSaSSaSSaXPaZoaSSaXRaZpaWfaSSaXTaOtaZqaXVaUQaZraZsaZtaZuaYaaZvaZwaYdaYeaYfaYgaWBaYhaZxaZyaZzaZAaZzaZzaZzaZBaZCaZDaZEaOOaZFaZGaZHaZIaGGaZJaZKaZLaToaZMaZLaIoaIoaGGaYtaVoaYuaVoaZNaZOaZPaZQaWTaZRaIuaIuaIuaIuaIuaIuaIuaIuaIuaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaTDaTDaTDaTDaTDaTDaTDaTDaTDaTDaTDaTDaTDaTDaTDaaaaaaaYBaYBaYBaYBaYBaYBaYBaYBaYBaYBaYBaYBaYBaZSaZTaZUbjnaZWaZXaZYaZZbaababbacbadbaebafaYObagbahbaibajaTSbakbalbambanbaobapbaqbarbarbarbasbataTSbaubavbawbaxbaybazbaAbaBbajbaCaUmbaDbaEbaFbaGbaHbaIaMkbaJbaKaMkbaLbaMbaNbaObaPbaQbaRbaQbaSbaTbaUbaVbaWbaXbaYbaZbbabbbbbcbaQbbdbbebbfbbgbbhbbibbjbbkbblbbmbbnaJlaUDaWdbboaWfaSSbbpbbqbbrbbsaXOaWfaSSaXTbbtaULaXVbbubbvbbwaUQaUQaYabbxbbybbzbbAbbBaYgaWBbbCaWDbbDaZzbbEbbFbbFbbGbbHbbIaRLaRLaRLaRLaRLaRLaRLaGGbbJaYoaYpaToaYqaYpaIobbKaGGbbLaVoaYuaVoaZNbbMbbNbbOaafbbPaIuaIuaIuaIuaIuaIuaIuaIuaIuaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa @@ -7445,9 +7446,9 @@ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamaaaaafaafaafcgRcgRcgRcgRcgRcgRcgRcgRcgRcgRcgRcgRcgRaaaaaacgScgTcgTcgTcgUcgVcejcgWcgXcgYcgZchachbchcchdchechfchgchhchichjchkchlchmchnbNFbUGbUGbUGbUGbUGbUGbUGcaqcaqcaqcaqcaqbTFcbIcbIchochpchqcbIcbIchrchschtcfYcaEcaEcaEcaEcaEcaIchuchvcaIchwchxchwbZychychzbZychAchBbVichCbVichDbYfcdDbYfchEchFchGcdHchHcjecdDcdLchIchJchJchKchLchMchNchOchPchQchRchSchTchUchVchWcgIcgIcgIchXchYcdSchZciacibcgNaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafaafaafaafaaaaaaaaaaaaaafaafaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamaaaaaaaaaaaacgRciccidciccgRciecifciecgRcigcihcigcgRaaaaaaciicgTcgTcgUcgUcijcejcikcilcemcimcinciocipciqcirbQJbQJcisbQJcbzbYScitbYUciucivciwcixciycixcizciAciBciCciDciEciFciAbTFciGciHciIciIciJciKciLciMciXciOciPciQciRciSciSciTciUcaIcaIcaIciVciWckqbZybZybZybZychBchBbViciYbViciZbYfcdDbYfcjacjbcjbcjccjdcchcjfcdLcjgcjhcjhcjicjjcjkcjlcjmcjncjocjpcjqcgIcgIcjrcjscgIcjtcgIchXcjucdScjvcjwcjxcgNaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamaaaaaaaaaaaacgRciccjyciccgRciecjzciecgRcigcjAcigcgRaaaaaaciicgTcgUcgUcgUcjBcjCcjDcjEcemcjFcjGcjHcjIcjJcivcjKcjLcjMcjNcbzbYScjOchmcjPcjQcjRcjScjScjScjTcjUcjVcjWcjXcjYcjZciAbTFciGckaciIckbckcckdckeckfckgckhckickjckkcklciSckmciUcknckockpclickrclsckscktcktckucktckvbVibVibVibVibYfckwbYfckxckycchcchcchcchcjfcdLckCckDckDckDckEcdOckFcdOckGckHckIckJckJckKckLckLckMckJckJckNckOcdSckPckQckRcgNaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamaaaaaaaaaaaacgRckSckTckUcgRckXckWckVcgRclackZckYcgRaaaaafciiclbcgTcgUcgUcgUcejclccldclecleclfclecleclecleclgbQJclhcltcbzcljclkcllclmclncloclpclpclpclqciAceCcnacIIcluclvclwclxciGclyciIclzclAclBclCclDclEclFclGclHclIclJciSclKciUclLclMclNclOclPclQclNclRclSclTbYfclUcktcktcktcktcktclVclWclXclYcktcktcktcktclZcdLcmacmbcmccmdcdOcmecmfcmgcdScmhcmicmicmicmjcmkcmlcmmcmicmicmicmncdScmocmpcmqcmraaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamaaaaaaaaaaaacgRckSckTckUcgRckXckWckVcgRclackZckYcgRaaaaafciiclbcgTcgUcgUcgUcejclccldcleclecnIclecleclecleclgbQJclhcltcbzcljclkcllclmclncloclpclpclpclqciAceCcnacIIcluclvclwclxciGclyciIclzclAclBclCclDclEclFclGclHclIclJciSclKciUclLclMclNclOclPclQclNclRclSclTbYfclUcktcktcktcktcktclVclWclXclYcktcktcktcktclZcdLcmacmbcmccmdcdOcmecmfcmgcdScmhcmicmicmicmjcmkcmlcmmcmicmicmicmncdScmocmpcmqcmraaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamaaaaaaaafaafcgRcmscmtcmucgRcCpcmtcmwcgRcCpcmtcmwcgRaaaaafcmzcgTcgTcgUcgUcmAcejcmBcmCcmDcmEcmFcmGcmHcmHcmIcmJcmHcmKcmLcbzcmMcmNcmOcmPcivcmQcmQcmRcmScmTciAcmUcIHcIIcIGcmYcmZcqgciGcnbciIcnccndcneciGcnfciNcngcfYcnhcnicnjciScnkciUclLclMclNcnlcnmcnlclNaaaaaaaaabYfbYfbYfcnnclSclSclTbYfbYfbYfbYfbYfbYfcdOcdOcdOcdOcdOcdOcdOcdOcdOcnocnpcnqcdScdScnrcnscntcdScdScdScdScnucnscntcdScdScnvcnwcnvaafaaaaaaaaaaaaaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaIvaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabZSaafaafaafaaaaafcnxaafcnxaafcKBaafcKAaafcKBaafcKAaafaafaaacejcnAcnBcgUcgUcnCcnDcnEcnFclecnGcnHcleclecnIcleclecnJcivclecnKcnLcnMcnNcnKclecnOcnOcnOcnPcnQcnOcnRcnRcnRcnRcnRcnRcnSciGcnTcnUcnccnVcnWciGcnfciNcnXciUcnYcnZcnjcoacobciUclLclMclNcoccodcoeclNaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaaaaaaaaaaaacdOcofcogcohcoicojcokcolcomconcoocopcoqcoraaaaaaaafaafaaaaaaaaaaaaaaaaaaaaaaafcoscotcosaafaaaaaaaaaaaaaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabZSaafaafaafaaaaafcnxaafcnxaafcKBaafcKAaafcKBaafcKAaafaafaaacejcnAcnBcgUcgUcnCcnDcnEcnFclecnGcnHcleclecqUcleclecnJcivclecnKcnLcnMcnNcnKclecnOcnOcnOcnPcnQcnOcnRcnRcnRcnRcnRcnRcnSciGcnTcnUcnccnVcnWciGcnfciNcnXciUcnYcnZcnjcoacobciUclLclMclNcoccodcoeclNaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaaaaaaaaaaaacdOcofcogcohcoicojcokcolcomconcoocopcoqcoraaaaaaaafaafaaaaaaaaaaaaaaaaaaaaaaafcoscotcosaafaaaaaaaaaaaaaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamaaaaaaaafcoucovcowcoxcowcovcKvcoxcqWcrScKvcoAcrTcrUcoBcoCcoCcoCcoCcoCcoCcoCcoCcoDcoEcoFcoGcoHcoIcKucoKcoLcoMcoNcoOcoPcoMcoQcoRcoScnOcoTcoUcoVcoWcoXcoYcnOcoZcoZcpacpbcpbcnRbTFciGciGcpccpdciGciGciGcpeciNcpfciUciUciUcpgcphciUciUclLcpiclNcpjcpkcpjclNaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaaaaaaaafaafcdOcplcpmcplcpncpocppcpqcomcomcprcomcdOcdOaaaaaaaaaaafaafaaaaacaaaaaaaaaaaaaafaaacpsaaaaafaafaafaafaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaIaaaaaaaaaaafcptcuicpvcHhcGYcuicHFcHDcHEcHBcHCcHvcHAcHucpucHscpHcHrcpJcHlcpLcpMcpNcpOckzcpQcGtcGWcpTcpUcpVcpWcpXcpYcpZcqacqbcoQcqccqdcnOcoXcoXcoXcoXcoXcqecnOcqfcqfcqfcpbcpbcnRbTFcrYciGcqhcqicqjcqkciGcqlciNcqmciUcqncqocqpcqqciUcqrclLcpiclNcqscqtcquclNaaaaaaaaaaaaaaaaaacqvcqwcqxcqycqvaafaaaaaaaaaaaacdOcplcplcplcqzcqAcqBcqCcqDcqEcqFcqGcqHcdOaaaaaaaaaaaaaafaafaaaaaaaaaaaaaaaaafaaacqIaaaaafaafaaaaaaaaaaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamaaaaaaaaaaafcqJcpucFtcGmcFVcpucymcpucrRczxcymcpucrRczxcpucpucpucpucpucqRcpucpucpucGWckAcGtcqYcymcpTcracrbcrccrdcrecrfcrgcrhcoQcqccricnOcrjcoXcoXcrkcoXcrlcnOcrmcrncrocrncrpcnRbTFcrqciGcrrcrscrtcrucrvcrwcrxcrycrzcrAcrBcrCcrDciUcrEcrFcrGcrHcqvcrIcqvcrHaaaaaaaafaaaaaaaaacqvcrJcrKcrLcqvaafaafaaaaaaaaacdOcomcomcomcomcrMcppcrNcrNcrNcnpcrNcrOcdOaaaaaaaaaaaaaaacrPcrPcrPbZSaafaafaafaafcrQaafaafaafaafaafaaqcrPcrPaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa @@ -7456,14 +7457,14 @@ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaactYctYctYctYctYctYctYaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamaaaaaaaaaaaacptcpucsUcsXcsXcsXcHTcsXcsXcsXcHTcsXcsXcsXcsXcsXcIncsXcsXcHTcsXcIvcsXcsXcsXcIpctgcthcuicpucIzcukculcumcuncuocupcuncuqcurcuscutcuucuucuvcuucuwcuxcuycuzcuAcuBcuBcnRcuCcuDcuEcuFcuFcuGcuHcuIcuJcuJcuJcuJcuJcuJcuJcuJcuKcrFcrGaaactFcuLcuMcuNctFcuOcuPcuQcuQcuRcuQcuScuTcuUcuVcuWcuXcuQcqvaaaaaacdOcplcplcplcsQcuYcuZcvacvbcvccvdcrNcrNcvecvfcvgcdOaafaafcrPaafcvhcvicvicvicvicvjcvkcvlcvmcvmcvmcvmcvnaafcrPaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaactYctYctYctYctYctYctYctYctYaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamaaaaaaaaaaaacptcpucpucpucpucpucymcpucpucpucymcpucpucpucpucpucrRcpucpucymcpucIlcpucpucvucvvcIkcvwcvxcvycvxcvAcvBcvCcvDcvEcvBcvBcvFcvGcnPcvHcoXcvIcvJcoXcoXcvKcrncrncvLcuBcuBcnRbPxcAscvNcvNcvNcvNcvOcvNcvNcvNcvNclMcvPcrGcrGcrGcrGcrGcrGaaactFctFcvQctFctFcvRcvScvTcvUcvVcvWcvVcvXcvYcvZcwacwbcwccqvaaaaaacdOcomcomcomcomcwdcppcvacwecwfcwgcrNcrNcwhcrNcwicdOaaaaaacrPaafcwjcwjcwjcwjcwjaaacsTaaacwjcwjcwjcwjcwjaafcrPaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaactYctYctYctYctYctYctYctYctYaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaaaaaaaaaaaaaaabZSaaaaaaaaaaaacptcpucpucpucpucpucymcpucpucpucymcpucpucpucpucpucrRcpucpucymcpucvpcpucpucvpcvpcvpcpucpucwtcAtcoCcoCcoCcoCcwvcwwcoQcwxcwycspcwzcoXcwAcvJcoXcwBcnOcwCcrncwEcwFcwGcnRcwHcvMcvNcwIcwJcwKcwLcwMcwNcwOcvNcwPcwQcrGaaaaaaaaaaaaaaaaaacqvcwRcwScwTcwUcwVcwWcwXcwYcwZcxacvZcxbcxccxdcuWcqvcxecqvaaaaaacdOcofcogcohcxfcsRcuZcxgcxhcxhcxicxjcxkcxlcxmcxncdOaaaaaacrPaaaaafaaaaafaafaafaaacsTaaaaafaaaaafaaaaafaaacrPaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaactYctYctYctYctYctYctYctYctYaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamaaaaaaaaaaaacptcpucpucpucpucpucyocpucpucpucyocpucpucpucpucpucrRcpucpucrWcGmcxpcuecuecxpcykcxpcIBcIAcIDcuecAGcuecxAcxBcIEcwwcoQcxDcoQcxEcxFcoXcoXcxGcoXcxHcnOcxIcxIcxJcwFcwGcnRbPxcvMcvNcxKcxLcxMcxNcxOcxNcxPcvNcxQcxRcrGaaaaaaaaaaaaaaaaaacqvcxScxTcxUcxVcxWcxXcxYcxZcuTcyacuScybcuTcyccuVcqvcqvcqvaaaaaacdOcplcpmcplcydcpocppcrNcrNcyecyfcrNcygcomcomcomcdOaaaaaacrPaaactXctXctXctXctXaafcsTaafctXctXctXctXctXaafcrPaaaaaaaaaaaaaaaaaaaaaaaacyhaaaaaaaaacyhaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaactYctYctYctYctYctYctYctYctYaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamaafaaaaaaaaacptcpucqScqPcqPcxwcxycqPcxwcqPcxxcxwcqPcqPcqPcqPcxvcqPcrXcxucqQcvpcpucpucyvcwscywcxtcyycyzcpucxscpucxqcxqcxrcyGcoQcxDcyHcnOcyIcoXcyJcoXcyKcyLcnOcnRcnRcnRcnRcnRcnRbPxcvMcvNcyMcyNcxLcyOcxLcxNcyPcvNcyQcyRcrGaaaaaaaaaaaaaaaaaacqvcuVcySctFctFcyTcyUcyVcyWctMctDctNcyXctMctDcyYcqvaaaaaaaaaaaacdOcplcplcplcxfcyZczacrNcrNcrNcyfcrNczbcrNczccrNczdaafaafcrPaafcvhcvicvicvicvicvjcvkcvlcvmcvmcvmcvmcvnaafcrPaaaaaaaaaaaaaaaaaaaaaaaacyhcyhcyhcyhcyhaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaactYctYctYctYctYctYctYctYctYaaaaaaaaaaaaaaaaaaaaaaaaaacaaaaaaaaaaaaaaaaaaaaaaaaaaaaamaafaaaaaaaaacptcpucymcpucpucpucyocpucpucpucyocpucpucpucpucpucrRcpucywcpucyncvpcpucpucylcykcuhcyjcoCczzcoCcoCcpucyiczBcxCcyGcoQcxDcoQcnOczDczEczFczGczHcoXcnOczIczJczJczKczLczMczNczOcvNcxNczPczQcxNczRczSczTcvNczUczVcrGaaaaaaaaaaaaaaaaaacqvczWcuMczXcuVczYczZcAactFcAbcAccsPcyXczWcAdcAecqvaaaaaaaaaaaackEcdOcAfcAgcAgcAhcAicAjcAkcAlcAmcAncAocApcAqcokcAraaaaaacrPaafcwjcwjcwjcwjcwjaaacsTaafcwjcwjcwjcwjcwjaaacrPaaacyhaaaaaacyhaaaaaacyhcyhcyhcyhcyhcyhcyhaaaaaacyhaaaaaacyhaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaactYctYctYctYctYctYctYctYctYaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamaaaaaaaaaaaacptcpucpucpucpucpucyocpucpucpucyocpucpucpucpucpucrRcpucpucrWcGmcxpcuecuecxpcykcxpcIBcIAcIDcuecqVcuecxAcxBcIEcwwcoQcxDcoQcxEcxFcoXcoXcxGcoXcxHcnOcxIcxIcxJcwFcwGcnRbPxcvMcvNcxKcxLcxMcxNcxOcxNcxPcvNcxQcxRcrGaaaaaaaaaaaaaaaaaacqvcxScxTcxUcxVcxWcxXcxYcxZcuTcyacuScybcuTcyccuVcqvcqvcqvaaaaaacdOcplcpmcplcydcpocppcrNcrNcyecyfcrNcygcomcomcomcdOaaaaaacrPaaactXctXctXctXctXaafcsTaafctXctXctXctXctXaafcrPaaaaaaaaaaaaaaaaaaaaaaaacyhaaaaaaaaacyhaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaactYctYctYctYctYctYctYctYctYaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamaafaaaaaaaaacptcpucqScqPcqPcxwcxycqPcxwcqPcxxcxwcqPcqPcqPcqPcxvcqPcrXcxucqQcvpcpucpucyvcwscywcxtcyycyzcpucsbcpucxqcxqcxrcyGcoQcxDcyHcnOcyIcoXcyJcoXcyKcyLcnOcnRcnRcnRcnRcnRcnRbPxcvMcvNcyMcyNcxLcyOcxLcxNcyPcvNcyQcyRcrGaaaaaaaaaaaaaaaaaacqvcuVcySctFctFcyTcyUcyVcyWctMctDctNcyXctMctDcyYcqvaaaaaaaaaaaacdOcplcplcplcxfcyZczacrNcrNcrNcyfcrNczbcrNczccrNczdaafaafcrPaafcvhcvicvicvicvicvjcvkcvlcvmcvmcvmcvmcvnaafcrPaaaaaaaaaaaaaaaaaaaaaaaacyhcyhcyhcyhcyhaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaactYctYctYctYctYctYctYctYctYaaaaaaaaaaaaaaaaaaaaaaaaaacaaaaaaaaaaaaaaaaaaaaaaaaaaaaamaafaaaaaaaaacptcpucymcpucpucpucyocpucpucpucyocpucpucpucpucpucrRcpucywcpucyncvpcpucpucylcykcuhcyjcoCctdcoCcoCcpucyiczBcxCcyGcoQcxDcoQcnOczDczEczFczGczHcoXcnOczIczJczJczKczLczMczNczOcvNcxNczPczQcxNczRczSczTcvNczUczVcrGaaaaaaaaaaaaaaaaaacqvczWcuMczXcuVczYczZcAactFcAbcAccsPcyXczWcAdcAecqvaaaaaaaaaaaackEcdOcAfcAgcAgcAhcAicAjcAkcAlcAmcAncAocApcAqcokcAraaaaaacrPaafcwjcwjcwjcwjcwjaaacsTaafcwjcwjcwjcwjcwjaaacrPaaacyhaaaaaacyhaaaaaacyhcyhcyhcyhcyhcyhcyhaaaaaacyhaaaaaacyhaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaactYctYctYctYctYctYctYaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamaaaaaaaaacyxcpucymcpucqKcqMcyucqMcuacqMcyucqMcuacqMcqMcqMcyqcytcyqcyscyrcuhcyBcyCcACcADcAEcAFcoCcBFcyAcoCcoCcoCcoCcoCcAIcAJcAKcAJcnOcnOcnOcnOcnOcnOcnOcnOcALczJczJcAMcANcAObPxcAPcvNcAQcARcAScATcAUcAVcAWcvNcAXcAYcrGaaaaaaaaaaaaaaaaaacqvcuQcAZcAectFcBacBbcBcctFcBdcBecBfcBgcBhcBicBjcqvaafaafaaaaaaaaaaaacBkaaacdOcBlcBmcBncBocBpcBmcBqcBrcBpcBmcBscdOaaaaaabZSaaaaafaaaaafaaaaafaaacsTaaaaafaaaaafaafaafaafcrPaaacyhcyhcyhcyhaaacyhcyhcyhcyhcyhcyhcyhcyhcyhaaacyhcyhcyhcyhaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaIvaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaactYctYctYctYctYctYctYaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabZSaaaaaaaaaaaacpEaaaaaaaaacyDcpucymcpucywcwscymcpucywcwscymcpucywcwscpucpucyvcpucywcwscyEczfczhczecBBcBCcBDcBEcoCcyFcBGcBHcBIcBJcBKcBLcBMcBKcBNcBKcBOcBPcBQcBRcBScBScBTcBUcBVcBWcBWcBXcBYcAObPxcBZcvNcvNcCacCbcCccCbcCacCdcvNcrGcCecrGaaaaaaaaaaaaaaaaaacqvctFcCfcuVctFcCgcChcCictFcCjcCkcqycmWcCmcCncCocrHaaaaaaaaaaaaaaaaaacKwaafcdOcCqcCrcCscomcCtcCucCvcomcCwcCxcCycdOaaaaaacrPaaactXctXctXctXctXaafcsTaafctXctXctXctXctXaafcrPaaacyhcyhcyhcyhaaacyhcyhcyhcyhcyhcyhcyhcyhcyhaaacyhcyhcyhcyhaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaactYctYctYctYctYctYctYctYctYaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacrPaafaafaafaafaamaafaafaafcyDczwczAczyczgczsczqczpczkcznczmczlczoczscpuczwczvczuczrczncztcoCcoCcoCcCzcCzcCzcCzcCzczjcCzcCBcCCcCDcCEcCFcCEcCEcCGcCEcCEcCHcCEcCDcCIcCJcCKcCLcCMcCNcCOcCPcCQcAObPwcCRcCScCTcCacCUcAVcCVcCacCWaafcCXcCYcCXaaaaaaaaaaaaaaaaaacqvcCZctDcuQcDacDbcuQcDccDdcDeaafaaacDfaaLcClcDgaaaaaaaaaaacaaaaaaaaaaaaaaacdOcDhcplcplcomcDicplcplcomcDicplcplcdOaafaafcrPaafcvhcvicvicvicvicvjcvkcvlcvmcvmcvmcvmcvnaafcrPaaacyhcyhcyhcyhaaacyhcyhcyhcyhcyhcyhcyhcyhcyhaaacyhcyhcyhcyhaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaactYctYctYctYctYctYctYaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabZSaaaaaaaaaaaaaamaaaaaaaaacyDcpucymcpucywcwscymcpucywcwscymcpucywcwscpucpucyvcpucywcwscyEczfczhczecBBcBCcBDcBEcoCcyFcBGcvqcBIcBJcBKcBLcBMcBKcBNcBKcBOcBPcBQcBRcBScBScBTcBUcBVcBWcBWcBXcBYcAObPxcBZcvNcvNcCacCbcCccCbcCacCdcvNcrGcCecrGaaaaaaaaaaaaaaaaaacqvctFcCfcuVctFcCgcChcCictFcCjcCkcqycmWcCmcCncCocrHaaaaaaaaaaaaaaaaaacKwaafcdOcCqcCrcCscomcCtcCucCvcomcCwcCxcCycdOaaaaaacrPaaactXctXctXctXctXaafcsTaafctXctXctXctXctXaafcrPaaacyhcyhcyhcyhaaacyhcyhcyhcyhcyhcyhcyhcyhcyhaaacyhcyhcyhcyhaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaactYctYctYctYctYctYctYctYctYaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacrPaafaafaafaafaamaafaafaafcyDczwczAczyczgczsczqczpczkcznczmczlczoczscpuczwczvczuczrczncztcoCcoCcoCcCzcCzcCzcCzcCzcvrcCzcCBcCCcCDcCEcCFcCEcCEcCGcCEcCEcCHcCEcCDcCIcCJcCKcCLcCMcCNcCOcCPcCQcAObPwcCRcCScCTcCacCUcAVcCVcCacCWaafcCXcCYcCXaaaaaaaaaaaaaaaaaacqvcCZctDcuQcDacDbcuQcDccDdcDeaafaaacDfaaLcClcDgaaaaaaaaaaacaaaaaaaaaaaaaaacdOcDhcplcplcomcDicplcplcomcDicplcplcdOaafaafcrPaafcvhcvicvicvicvicvjcvkcvlcvmcvmcvmcvmcvnaafcrPaaacyhcyhcyhcyhaaacyhcyhcyhcyhcyhcyhcyhcyhcyhaaacyhcyhcyhcyhaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaactYctYctYctYctYctYctYctYctYctYctYctYctYctYctYaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacrPcpFaaaaaaaaaaamaaaaaaaaacAzcAvcAwcAxcAycABcAAcAHcAycABcAAcAHcAycABcBucBucBvcAHcAycABcBtcoCaaacDvcDwcDxcDycDzcDAcAucDCcDDcDDcDEcDFcDGcDHcDIcDJcDHcDIcDGcDKcDLcDMcDKcCBcCBcAOcDNcDOcDPcDQcAObNUcDRcDScDTcCacCbcDUcCbcCacCWaafaaaaafaaaaaaaaaaaaaaaaaaaaacqvcCZcDVcDWcDXcDXcDWcsPcDYcqvaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacdOcDZcplcplcomcEacplcplcomcEacplcplcdOaaaaaacrPaafcwjcwjcwjcwjcwjaaacsTaaacwjcwjcwjcwjcwjaaacrPaaacyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaactYctYctYctYctYctYctYctYctYctYctYctYctYctYctYaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacrPcClcqLcqLcqLaamcpIcpIcpIcqLcpIcpPcpIcpGcpIcpPcpIcpGcpIcpPcpIcpGcpIcqLcpIcpRcpIcpGcpIcqNaafaaacEicEjcEkcElcEmcEncAucEocDDcEpcEqcErcEscEtcEucEvcEwcExcEscEycEzcEAcDKaaaaafcAOcEBcECcEDaafaaabNUbPxbPxbSkcCacEEcEFcEGcCacCWaafaafaaaaaaaaaaaaaaaaaaaaaaaacqvcEHcuXcEIcEJcEJcEIcuQcEKcqvaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacdOcplcplcplcomcELcplcplcomcELcplcplcdOaacaaacrPaaaaaaaafaafaafaaaaaacEMaafaaaaaaaafaafaaaaaacrPaaacyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaactYctYctYctYctYctYctYctYctYctYctYctYctYctYctYaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacrPcClcqLcqLcqLcpEcpIcpIcpIcqLcpIcpPcpIcpGcpIcpPcpIcpGcpIcpPcpIcpGcpIcqLcpIcpRcpIcpGcpIcqNaafaaacEicEjcEkcElcEmcEncAucEocDDcEpcEqcErcEscEtcEucEvcEwcExcEscEycEzcEAcDKaaaaafcAOcEBcECcEDaafaaabNUbPxbPxbSkcCacEEcEFcEGcCacCWaafaafaaaaaaaaaaaaaaaaaaaaaaaacqvcEHcuXcEIcEJcEJcEIcuQcEKcqvaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacdOcplcplcplcomcELcplcplcomcELcplcplcdOaacaaacrPaaaaaaaafaafaafaaaaaacEMaafaaaaaaaafaafaaaaaacrPaaacyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaactYctYctYctYctYctYctYctYctYctYctYctYctYctYctYaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacrPaafaafaaaaaaaaqaaaaaaaaaaafcgRcCpcmtcmvcgRcCpcmtcmvcgRcCpcmtcmxcgRaaacgRcmycmtcmxcgRaaaaafaaacEicEQcERcEScEQcCAcDBcEUcDDcEVcEWcEXcEscEYcEZcFacFbcFccEscFdcFecFfcDKaaaaaacAOcFgcFhcFiaaaaaabNUbPxbPxbNUcCacFjcFjcFjcCacFkcFlaaaaaaaaaaaaaaaaaaaaaaaaaaacqvcFmcFncuQcuQcuQcuQcuQcFocqvaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaackEcdOcdOcdOcdOcdOcdOcdOcdOcFpcFpcFpckEaaaaaacrPcrPcrPcrPcrPaaaaaaaaacqIaaaaaaaaacrPcrPcrPbZScrPaaacyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaactYctYctYctYctYctYctYctYctYctYctYctYctYctYctYaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacrPaaaaafaafaaaaamaaaaaaaaaaafcgRcDjcDkcDlcgRcDmcDncDocgRcDpcDqcDrcgRaafcgRcDscDtcDucgRaaaaafaaacEicFrcEkcEQcEQcqZcqXcFucFvcFwcFxcFycFzcFAcFBcFCcFDcFEcFFcFGcFHcFIcDKaafaaacFJcDNcFKcAOcFLaaabNUcFMbPxcFNcFOaafaafaafaaacBkaafaafaaaaaaaaaaaaaaaaaaaaaaaacrHcqvcqvcFPcFQcEIcEIcEIcFRcFPaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaLaaLaaLaaaaaaaaaaaaaaaaaaaaaaaaaaacrPaafcFTaafcrPaaaaaaaaaaaaaaaaaaaaacyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaactYctYctYctYctYctYctYctYctYctYctYctYctYctYctYaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafaamaaaaaaaafaafcgRcEbcEccEbcgRcEdcEecEdcgRcEfcEgcEfcgRaaacgRcEfcEfcEhcgRaaaaafaaacEicFUcEkcEScEQcEncrVcEocDDcFWcFXcFYcEscFZcGacGbcGacGccEscGdcGecGfcDKaaLcGgcGgcGgcGgcGgcGgcGgbNUcGhcGicGjaafaaaaaaaafcGkcDfaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacGlcEJcEJcEJcEJcEJcGlaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacrPaaaaafaaacrPaaaaaaaaaaaaaaaaaacyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa @@ -7471,7 +7472,7 @@ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaactYctYctYctYctYctYctYctYctYctYctYctYctYctYctYaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafbZSaaaaaacgRcgRcgRcgRcgRcgRcgRcgRcgRcgRcgRcgRcgRaaacFqcgRcgRcgRcgRaaaaaaaaaaaacCzcCzcCzcCzcCzcsccGJcGJcGJcGJcGKcGJcGLcGMcGNcGMcGOcGJcGJcGPcGJcGJcGJcGgcGgcGgcGgcGgcGgcGgaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacyhcyhcyhcyhaaaaaacyhcyhcyhcyhcyhcyhcyhaaaaaacyhcyhcyhcyhaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaactYctYctYctYctYctYctYctYctYctYctYctYctYctYctYctYctYaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafcrPaaaaaaaafaafaaaaafaafaaaaaaaafaafaafaaaaaaaaaaaaaaaaaaaafaaacGQcGRcGRcGRcGScGTcGUcsecsfcsgcshcGZcHacHbcHccHdcHecHfcsZcsYctacHgcHicmXcnycsVcHmcGJcGgcGgcGgcGgcGgcGgcGgaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacyhcyhcyhcyhcyhcyhcyhaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaactYctYctYctYctYctYctYctYctYctYctYctYctYctYctYctYctYaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamaafcHncHocHpaaacHncHocHpaaacHncHocHpaafaafaaaaafaafaafaafaafcHqcGRcGRcGRcGScGTcHLctfcHtctecubcHwcHxcHjcHycHzctkctZcoyctccHjcHjcHjcnzcHkctbcHIcGJcGgcGgcGgcGgcGgcGgcGgaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaaaaaaaaaaaaaaaaaaaaaaaacyhcyhcyhcyhcyhcyhcyhaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaactYctYctYctYctYctYctYctYctYctYctYctYctYctYctYctYctYaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamaaacHncHJcHpaaacHncHJcHpaaacHncHJcHpaafaafaafaafaaaaaacHKaafcGQcGRcGRcGRcGScGTcHLcHMcHNcuccudcHwcHxcHjcufcHjcugcoJcpxcpwcpycnycnycpzcpBcHZcIacGJcIbaafaaIaafaafaafaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacyhcyhcyhcyhcyhcyhcyhaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaactYctYctYctYctYctYctYctYctYctYctYctYctYctYctYctYctYaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamaaacHncHJcHpaaacHncHJcHpaaacHncHJcHpaafaafaaaaafaaaaaacHKaafcGQcGRcGRcGRcGScGTcHLcHMcHNcuccudcHwcHxcHjcufcHjcugcoJcpxcpwcpycnycnycpzcpBcHZcIacGJcIbaafaaIaafaafaafaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacyhcyhcyhcyhcyhcyhcyhaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaactYctYctYctYctYctYctYctYctYctYctYctYctYctYctYctYctYaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaIaafcHncHJcHpaaacHncHJcHpaafcHncHJcHpaafaaaaaaaafaafcIcaaaaafcHqcGRcGRcGRcGScGTcwmcIecIfcwlcwqcwrcwncwocxocwocwucwDcpDcImcpCcIocIocIocwkcHZcIqcGJaaaaaaaaIaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacyhcyhcyhcyhcyhcyhcyhaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaactYctYctYctYctYctYctYctYctYctYctYctYctYctYctYctYctYaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaaacHncHJcHpaafcHncHJcHpaaacHncHJcHpaaaaaaaaaaaaaafaafaaaaafaaaaaaaaaaaaaafcIrcGVcIscItcIucLacGZcIwcHjcIxcIycKYcLbcvocIycKUcKVcKYcKZcKXcHZcKTcGJaaaaaaaaIaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacyhcyhcyhcyhcyhcyhcyhaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaactYctYctYctYctYctYctYctYctYctYctYctYctYctYctYctYctYaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamaamaaIaafaaacHncHJcHpaafcHncHJcHpaaacHncHJcHpaafaaaaaaaaaaaaaafaafcIJcIKcIKcIKcIKcILcILcILcILcILcIMcILcGJcHjcHjcINcGJcGJcGJcujcIPcIQcGJcGJcGJcIRcIScHzcGJaafaaabZSaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacyhcyhcyhcyhcyhaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa From 2b98f70f9f59d89a906012d7cc68c13709b82300 Mon Sep 17 00:00:00 2001 From: Loganbacca Date: Tue, 9 Dec 2014 22:05:14 +1300 Subject: [PATCH 04/16] Science goggles overlay fix --- code/modules/mob/living/carbon/human/life.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/modules/mob/living/carbon/human/life.dm b/code/modules/mob/living/carbon/human/life.dm index 058619cbc7..997dac1212 100644 --- a/code/modules/mob/living/carbon/human/life.dm +++ b/code/modules/mob/living/carbon/human/life.dm @@ -1245,7 +1245,7 @@ if(copytext(hud.icon_state,1,4) == "hud") //ugly, but icon comparison is worse, I believe client.images.Remove(hud) - client.screen.Remove(global_hud.blurry, global_hud.druggy, global_hud.vimpaired, global_hud.darkMask, global_hud.nvg, global_hud.thermal, global_hud.meson) + client.screen.Remove(global_hud.blurry, global_hud.druggy, global_hud.vimpaired, global_hud.darkMask, global_hud.nvg, global_hud.thermal, global_hud.meson, global_hud.science) update_action_buttons() From 9fce8921ac9f8aa1b00b2d0060a25a55055a0ead Mon Sep 17 00:00:00 2001 From: Loganbacca Date: Tue, 9 Dec 2014 22:53:49 +1300 Subject: [PATCH 05/16] Tape fixes - All paper variants now have taped icon states (might change this to an overlay in future) - Tape objects inherit overlays from attached papers --- code/game/objects/items/weapons/tape.dm | 2 ++ icons/obj/bureaucracy.dmi | Bin 11622 -> 13803 bytes 2 files changed, 2 insertions(+) diff --git a/code/game/objects/items/weapons/tape.dm b/code/game/objects/items/weapons/tape.dm index 8177c746d7..0514e7d1d2 100644 --- a/code/game/objects/items/weapons/tape.dm +++ b/code/game/objects/items/weapons/tape.dm @@ -45,6 +45,7 @@ W.forceMove(src) icon_state = W.icon_state + "_taped" name = W.name + " (taped)" + overlays = W.overlays /obj/item/weapon/ducttape/attack_self(mob/user as mob) if(!stuck) @@ -56,6 +57,7 @@ stuck.forceMove(get_turf(src)) user.put_in_hands(stuck) stuck = null + overlays = null del(src) /obj/item/weapon/ducttape/afterattack(var/A, mob/user as mob, flag, params) diff --git a/icons/obj/bureaucracy.dmi b/icons/obj/bureaucracy.dmi index 2cef74e33a6cf679cadfaecd56c2fc9d333f75e7..a2a99f01f8d03a5a98f90351ca3befad023404c6 100644 GIT binary patch literal 13803 zcmb8WWmp_hv@KXjkl+&BA%p~X2_D=bcyOn23l5EYfCSgz5Zp;{hv4q+?gZx*_syO6 z&CLDYo%f@^>aIRrb?V64d#$}XOi4i!?KRPB007XWrNmSK0EXh_g@gbA0B%4T6#UTP zp{nUDX6j_@Xld_kX=e)nZfWuH&9<8?sDTGppOK`~KRwOcpc9kSN$DAi3^>z}Fz(a5 zRah1by6}t&ULv~bBOUKN`+e{IZ|7ze{a^1|vTRh!;_}kdACj+DY1;Olu1*4nu)V#b zbs_VGl?#p4TBhrcANbSJ8s8`EUmrtehl22yeV(Jgop;gQ|E2nqeMw~W=}V3PyD5N2 zq}8C4y{d+PiG5M1dS~@Wqj-lZ_1M8)z?A;pi8qS%O7dRpzSB^4iKt9F|8W*acvk4n^kvhm!@H7C0i)AXWHWJ>j+1gSU)V#zph zwl~D>rGBaCU#ksID&878X;}vm|6Psbm640i=t-KD(x=NvjG~zix@*ADSx~hQ_rH(m zuHnEIk$mjQ4q)O%8s$CHu52oAp-}i2bZ&_|^}fTL@NM^)|VSwE)``f&ZOkNK>(@O|N>^u%N(P4zrS?fldm#%i4l#MG(d@jJA7Ma|5k zkm6~x{e8=d42+0y^NLWgQ#1Qu+e5=YGKA%k-hkdk z&*OCWbi(bHZSUosMJEnROG^qQ|5XwEa*%zV+VwmvUeNgZe0wJad<{||g6_P(O zSrff5=5b#F;}`h4W|MwwdGm=x6gCQf`xwSAbx7sS*C`Fp=L5_rkQC_rU8DLzVBH9$ zzo~wFz66J}9jOB*7ytR+iZ2G>c2qkvNcH_&Avtco%kGHY;Wwy);A71vJNv=u(kj05 zznjsd<0~-)%*8&_PX#37(e5|oRr}`V<{xv(Nl6)tpO%|FNyjq;aX*Lo9N zaa8Ubqvl&vSD?F-KCa)Hc=9OWW<6I>wSVBu*ElRIE8E$4(n8PwZ_(+z<#{aUi0@>w z=(CiJ4EFc$-xv3d>;rRs(_mP7E^ngQc^;z8KgPG{DB(m>9Gdihf18r1@1wOyPVx~a zz}OrX(DS)9%{5Uquzetgy+5$HlUY^8<}0q4hPcZmVN|`gl8;r%lD&e&|0;f^J^=SX zt?W|Ub}ZGerLb47#YkRy6!!Vf>Z_#8u+hPjK)OOmO%2E8$qM-oT6q<@XRuT11Cr5X zQJ)JGDCy{s#>U3N_v*Xj-hU3fymS`NE{}_Ro#qB%N9Y|Ed%Q|LJwJR6@ED>>wyoM% zJMHweQXW2OF4Lvew=D83p(NNJr_DXxQGU`Xi=;Nmvu0n2PHxdudyMxTVqaJ}U8hjH z(kRh1tZQ}HkWjmNzOHXgJ}TF)l~MC18;tV(gharv-E>o~t{1Ff&jNhrFkySRlLN_%_V+4;>wjlgp-%o-G+7^7R*y@gSus$GAWBrN$)BPvxDa?4khC- zA<6cu&Tfy$>FdBXBLO3m$&tRkw%JPK?xV=aNW7g$(vNtAgoJK~mAx^sv6NQ0-_z5h zD2IgD=H}*-_*@_nPQj>z{)dOwyUu(j=H|xNhjUeX#o|`-_yZBGjAWX1Xe);gU6eSh zrR7`-;=&k#2>rSkA-njr1+~1x0XVlUzRP1hX}nGi`}D6OShP31wgpRkU0@`lk^rFZ zmKPs6xo#x$vTLA_Pk#^Zjz7kmVjV6^WY&i6$Gz!MzWyu$?wf};`RDd9ksGSowA80x zYQ@?d(UT^_X}q)5<`~@Gfc@L&&o0XzKE<5I21DckIIh%!5RXfQm=pCo$VLo|?(g|r zRe{6oH3>8g@8y%$h6aMHa-nasz7PHpPx15`hl2HW(;kxIo;~Uv>hlce$iGp1pBl-a z%ZDTr-N(y!{6B5oxT!9$dWXo6U1lH8$T>`tPhfyRg!`N?lEbwo+k?rl_f~&AP$37! zua;1@C3NmK@O7wv4*wlYW)BJtMf&-m-w+(Kiep4(gM_x#@U`3HbHV<@`_x$ZRF8zh z+;UoULZzuFVwtH&}Mx%*W@}0L-++JB`rw)7etx} z!;9DlpoUT)*~Y+N!MCG<@JP`h@?YcWf8BWPG_K@Joi!F<0D=gS=ie=(t-tYKha{^E zI}z%WkiStNy+gI=i6rE4JN;?Flh8Z4-Vubt_?L=`ip6PLu6^3;PvAvvZf?yj9E^npc5`ndcg>s8Cybhdb}=Qy8Xyz|F7g2 z&Wk;61Ly>;7{Vsa+1Z(>vol9kb#>O51qD(aTx?nzNrhAVXnn8F=Jbv@1o9ymgBStm z6Y#`yaBz^4mwyFxb$7r2<(-!+mc-&-H3cph5|Q$!N3|%X0QB*UI1lr9$s~8ww zn8q7IQ&Ur}5l*70m<;*?pRZrJwns9Vw}lv_<>b1C!4NdF6E2gK>d&;CcFj5xfgdy z@<^p|ul@C*7OK@ZR9d+t12aL#{fi!L=Godme3f#@xv|k(EYPklu@aq1f5KQuvmHM* zdE4a1mds`+1)L-BW!t#sM$JTu`KfO3FP8T}pLs_hauSOnEU*fKrTUO0`r|dURFCED z-c)O=gdNN3Y%Dcniou|lOr!*ONmyboTh*n&Ne*($8e_)uESefoO?L8}u}}kgxDAF> zU2qIoh@zOTgu8otQC_A7>lSF6t2T!L6a}tuuTNH1vgh80_;?12e}bNy<&yHL@~Er$ z8%uuE6nHXL#{(CevNucad@P3jLf|Zyy{8=J78JKl`6BjOCO$E7z(}yYy}hr$-xBLq zioA5oYjZTwC>c(fxTvKyGjq!E?I0>7ZHqqPV9jtj01Cs}akKYtf45>oR{ zCLa+@6Lxa*OBi=*a!*@?cq&);wlA4V2;tDfwhRX@Xi;POmd<7*f7)1L<6QT>|2DWI z;0R;VEA(ir1Y{D7p>ch`!EJ!__9r3Mkucw=5(Iu6B{O~?-N_Q;4n7MP7iP|nT6b1P z=b`BeS@eA$c-d(law|HAvkUN7c|Y}7UO<8O{}>wn8yu-feP8SiKOlMCTW=QFD2nqP ziz)U=y)+m#6hpDZd-Blf`60f1(Uy%5M9mP2YSz*LTgBw>{FT?rYZn?V<5JHIXwtUM zeCZXI6SP{KCae^7JcP_GTF(p`-pzmY1!X569wt_Pao)$MhrH*^XL!8$n}EXtbCZKIvA{&Pp;$PH_eA7y!KH0)3QKn_^=jmG>wPMj zuYO)P9CE7K%*=taC<9au&_*BFWLi|CNb`EcioD$r`t9|UAg6Uit(g+{y<}PuYxDub zO*XYGoQXZ{BsI~}YyraX!+OX|CPX!R<+pGpvYGq0VyU5!*u=z;t%1bGk~J0hF1+lO z`UAjh*i-3BYWL;N7&O+?58m;3U=Q@Jq@>CxkmqYSGscrl#rKFB%YQUz>7)g1^tU8>Oi75vBROIjf^97L* zRAG>pfXG0&y4}PCRW6bf6Y^uZdM8;ZEwkseH*<0c-y4e7FcFCG^f9F?R1Dr~(tpM- zLe^T)2#`lIlX@pmy|@Qw_RGVW>7Tml`O#VPf1xtxte)}2yLACJe2eVquah-}l zo^`DHf%}oUur;k zONmb)nDF@i=NAs;nVGWXA_$wXBJ%Q5mXP)Q=MnBF@-p3`wR{X{qYucm3Z|Kh9fkm% zEUFK$SJX8cFNsWqnJ|UCc+k{9I_|&d&|kc zwR#IcQ=bHI-WlCGjr_hOLMMz-D8Sj&j9J!lJCH4kXAsKX_IHlN4_?+wkL&$g({x4d z`{1DLw3aQNt{~KWeeJ4nzbd3QGcr7k$Jyw-w_ek-gpfP27x>$0=Wi87GyCauy~K*o z<7mCU(D*y=aaZid=~qAW9wM8X_(Kv6UGS{#l z4EDzJ!l%M6rCW3M7EFb~!68alc*lZc5F4sZOEYD@ec?MI6#XFd;AiDj($bQV$g%gs zCuG#s!qNU1!mJlNAGpG#4rQ_&A@5RcbLb zG(>}a|9@np=3moX!sz31U(TjIL5ds7>jY0mGV7mk$AI_M+cX+SG7n?3)%?(Xg`&B)n|1e&hGuG_Odg#^MOq5}XdEG#A-9s)qez#yik z_69JREL7HPa&t&sdBsM-Z7`A{u&(F>&Mmq_zIwst-EP%l9!qUH7-++YcW;C@CwCtzCv)!?BYCr76+W zF)+Vj{w;gj6@%&I?C3V{af#xo`9hsd$K$^hyD2xo>EgHjn*UO{EW##&n1lo@%j1tc z4o=RsyQ>3Iz0B2tI-7++FeBUC+^k8t2n!7r*3wG;R4$LONsEh%n{>3&a!qUg$LnN~OhEHr`fcWhFqd?KS(C;F~ab<%+(IEJE)!9D@|phYQ822!6MNdhV*K zDw32tZdzK2>0Ewh@98d&hqGQ~ZS8Q7Bm?$5`?2faVdTMx0|?)Jsnziia4e9+s`CMw z^5l22%O_H?Yb>>0JiMP=P92MT05dvU7g`jt*a9Raw z=zC9Xoq#$-4=5m@0J{?f(F5gMH8ApH_ei0yVvyy=ZjtsZ_fwRPcx#PAE!CTV7~nZv6s;i>LlxKigk- zkc0O}MHuMzTvS}a=8X(lo0hLwF*Sp&6t*^FIQc~<^Z7H5$Ms=YqMnB|!^P$0A;(>0 zJiU4i-GN~qnZD0$o^^`VbcusoUObpC5}+dJ{BiC-x+2`#+G66YwO*S>xcoP(Y5fRw zdaIg*{0vT$PAYfPRo-PiE9Q4)Ev@&d(=QKvw$c0Xp=oo|gy*8^I-l9}`RNg`j`l)F zLbBg?(PjJjkqr+3h7CgKnKw9yB_lzt^6kT*xNn#L8UW3FxAmcHOAaGICr!wA+4_0C zJ0cC@m?{_LjzX`lWG3A(mLmzrqJKMqcXf4DSX#NBK84l>2m=O0SlisbF=NMvp7zWSsJa<}=d;?LkqqDQy+p34%=fRCc$VaD=Pm}s{ zPP;Uqh~nRX7A3)v`mx+h+3zNEVhC5y>&8Kje_XjctE(x`t;8Y5$VhUWza0amM=a@Svoti)LqM zH#s$B2*Rqr3hn6J)dEpS4m?Cs@478T`yD4yq+b=SiQ=)iwA%suyeV_ie3riXbgTOX z?Xvq0sq*J22c9M>X3yDqYp(I_S%O#2508&;+|=%i%E}~^m9hN&{SW!{iwKeD#hGW1 z@1ISUj~-+%sPET!tvsYc+-dcg@{g9$fZ5j+TsTPZG0AfbnaGPzx(XU%z9X5}NzKo* z+cpvP%pa{uhBKcZ%q!)F9C-Mtn7>r$j7$tEV-6rkSqiEfQ7a!XlwFJR4uH!FKH;D; zF+BV=DglddY+;e^rGK846=%#>ra>o}3Ck4EmeYiq*Cm4IE*`TqrCdV~kHtTcPf0^M zsm~!1ni1RT`MHR4$dkuGj@@2yxl336So`h9B$y|C#hlvgX}ky1Szqs*wVc5QRa`eQ zobK8=6%|T#d^O^Y4fv5t7<$dh*J65*D43LLThj39Qn>I4Wn65kul3b7dpRmR^C(-^ z95fo$ibbp<&di$c0wwL@1U9^moB!#l^}tQ#=UI9=^Z5}*PFgSwKuptqq-Ze5RSyZ~ z?JqESwj;T$vXWz@YU&kCAhVkfi^fyD_=g9woxz#92cyI)g|KYFPZPkF8#N*w>x6{+k!F3 zk5$?CHCpf9>>nKHPTQgFzdFc0J&sy09lFfx86rlR*-r?&4EZ5`|+NQ6S5aPjsh zOn5_#uf(G-;cBfjBnMPnY0{R#c3ZH5$4P&j0H`VXh&_Ip0pT`(*@=g5Qn8PP@ml zT~^6+dy*M*nWzEJM(JNc9`b!uW)bZGX?l>BjS9A@Igjb(XDE0K z!b%3fllv|v+3#l`F;xtesX#CQ!UL!0=dcDT=u}`Bq!#G8{+KPe_QW%V#=MhOacwZ< zM(|4gT%Nh<)c>a{ZjHTi6AKL$Hgn4*6=1OQ?xTYsGe#^H)~Wg_`dLW{gP-m$bk9h? z!oY8i7X}7KN=gb7pm_ft8K^MsMHfK_l_a|;J9IK!VAYS1y>D|7w*Xa&aU+(E?}>SL zikm>N`7TQ_M#$sVBPSoZ&<@fzl#ehuqc5rSFLn253_6n_NZa_-A%51;wacpc$AlFy zI7ldMxER)4bY1bLqi62L*FWybd^*L>M?|2*do`5)v3|(OY$PLUch}-~-a=4I+)EOF z`tKru0%`VXOtPaxJc6$VIS&-a+&>Op?oGV8M~xe=Ux3D?;7se4-Jy5AL$K5Nhaz#Z zO}?JAENoX!d*jS`^_LTusFH$DRedQaVm-)*66@xOx>fYF!jQ-1oJQp{1~m;0yyc!` zh1(jeT*JL>U`R;kh!9|U<&xyH(tJckUIPwBnLNev9ck2Ndp}q7+YCjq|0$)t&$6qB zspK`Z$+{$(n(-FJ!rq1hG~K*t_~E=Oe&0I;Ug3@wBeJj+VhVKpX>SeTm(69+!DU8` zBnk~1GiG^f`=N}J(-52&WgVSJ+oeW0AccrHR>K~~HL4LMLx4YP&rscU}YUh`TrR95W z8>X&VIw3o@(5^T!ad|0Q?~qgjWo2dcfp~4~1lA8-h~}tm(2TY@r#Egp=~}bph`)$m zp`rj@e_%d6Fm+C_kDD@1FA}kEyv9;imbzs^16Gd?A~FQ)HL^8p9bf(N^a$U^8GD!$ z6BA!kCQLCx2oQh^GIL;e!dGV@EO{xLkb$a6ck5}nZ!l3 zw6y$9ziWh>P8wT^jk||$O}3_K1pfNjwhGkRq~C?N9LXCI&BCE<@lJ)yc99Mc z#*aeK)6)ahitdXMA?6C+;uYU#Z?!0cM1^;Y?Cy>QtdwSK>&Bx;bbW**e+aLZTvxh} zmm1SGocz9I6dR;nB9oEoMn`UF@tjSJXlguB*-pOhyLpQtq|36p)1iVCC15h~kjcH$ zwi=2wn8XSf8ynjmk8f@j7D3RSRXq7cgqs#>ZyiFbJGDl4M7>bc>j)(grcY(E9P@9YWT z;DNh=H?xVJuq$|hhT}H`7KoM(hwg>3-ABdVfbTjV|Nf6EbHDB+)Ww^#!8&_C%YrD^umk>(AN#0YHoDx~pbxncjw&L`pi185Y>4Yhy5 zsb8BL*RbDNdaOM0m3L2MiXz)xkY9EXo;Z$}c(8gFqy(jx-@zA17%08H9|d0|jF-*> z6cj8#L6w|<*b9EPKi(UI>n}7ivaA1xP`@@Pb?2z#Bwcw_>crqC;1dyfA_|t2NZyU* z+}JMih`IH(uKvxuJ`~BX(ZlPtGSR3RY67K2b1NU1Y0vgDPHtb*5f~Vo=x3OpGT3)U zE@Z%}%-&m)24iBSS2uUB)=qih%!b`P54ZsUXZFPlKos8m5ly%mQAXyA!khIE`iIK_ zT~i~SGc$;soV7?u9LYAupQ(XWP;qQ94h;m=W-zsx_~Tq$7y|YjA6`>$_ZoK@Fn(y27jMZ$ zeur2KN-=vHi)ZDHO)NP34BK$C$FH0c)X^*+@2;$)$PGb4YQ&cEcwV)gMAX_PnulmM z&Df;@voKog9uzYJrw)VGw&sLznF6E3>qaVCpIT*Q_q=O7^b*Z~#nan=peKIj{L1ij zF`?MtHCLnVVQh>e`U%nC&ih|>cGc^*J=pMf_tfAl%@CJ$agxJopdh$iHB)Ro4w zZjyv_B9Ow?;|u{TMn3%4_(?t_8K{@AWq2E%e?8>lv|5|TlLvdT@z7v~#f6}v|NM0u zzYZ1st?9XIbTwLSlj09D@2V;zBRk#Q_X`d_$oCHtHvR!Ej|J0>>uAC02YU|P2CGF~ z0NR9tFAkUD<4Y18P2dNP>$;a78I$e@QPGYMK-(VqQ$V#izLM)B9tkV?9uJA^g&`a) z+Ygm~lMO2|a3pkHie6r9I3LX&^YeOm#+lQaX zDFxi-)`*-IT@;)uk{HI>P>a%O-0$)6@mbl~9YuNCrDOA6!gWdz!Jp%fIZCDs;vj%o zKdr*KdAb{J7RC}}O;Lf%tibmM!>9S?z1H@MC8KKx?SqkK2ED+s9C~oQ;23X=w}coM zm72n2iqRC=-4*)urb#-UKP=qp$w@S_>q=B(&r(q9(}+GR4b?cqzC%zQleR{5y{mV& z6U9MfsEdnB!`Gvfb=RH?v)*r{1iTO$Y;5(cg`rfb=WUic-%D0qd-yd91;!z3D=`js z^4}?XNAXAG-X*;0PDF?pWL8Ja zWdGgM-7AkQ&@n(sNlC}V)B}ou=|q8YSYUk{{j-ja_4O`;?Hibv{F!%NyFV<|?Eoh| zmD6e(2@Gs6%3{dvx8G4Pb53XPFcc(=WU_w-zEq2Es=V*NX8rl|NBlPY4ZZ5UeqwyQ zgD%R@cd)wRe6qZhH)Br>2MYx?sagIy!wm_V3`NyR&>DjCP*_&hlOf6&ywU zX2KBXx#D>uV7S>AYZh!=Du?`yOaM~%q94(} z-QsdSntuZpC>-x@nFul2GnI2BYTa!W6u!}`93i|^v>}E=UKwud$hNd5MddZiRi*MtgoK3NZq0L+C4Iv!K%)~B)C>LgP2%g2G~*&DxGw#1 zak_I!W1}d#9n2IW?|1rMnwj)UtRzawy5E3IN}jgHJxH@Q3ekel{gj0~<4&x%ZOzuL zc>Bkz3!%0_FZisDOR0k^57uX}sP9lzFdv0X{_x zS1*!_1q8xIjIzl97B`0a-btJz*07LANla{i7d-Y?FXkM04h#-Tj(?99!8Lomlj)0Y zg=|^7Z&Xyyp>m;BXPs;|S7l1XMtNn}Z$6Fdgx8pA08UUxp>mEkSoump>#LemQ&&gG z8QZ-UFi4QfA>;fpmOu-?NQTozjji%IddoMLm)y!U&;y)ezDJ!#)R$pILPwWSP*51? zlMIhfQ*?L#U9$bzh~w`WTh;EptcS>C8NS`dS{P>z<;7YE{RVViC!u%DK~P3qaCmW^ zV&_p4tOI8YoPqfxvNhAsm>5h@XDnzr_(}*SFkZlf=F4P<@n(LTJ)}Ys6+9e!mkjz;u8k652uXL> zD8Vl}^ycM6ao|C$SQrYG!W8TE`~PW3AvM!w@mKm$-uk3nSXAU!Ud{}GKv?XS`PEK< zUAj9^YL&bN7TE;@_9)TtB~^!!*!0t@xTx zCZ-I6c7maAO9DRppq6+hFB1;AiZx;(2)w)V=<4dS04P8O9iTX_*YJk;^R|I{mUj9Z zhuib5^bfBO7^I?l@q|c(Y`?ZFDl4h0Cx9BM>BY_BZzn8FOlV*rJPZK(@BrZB*F(%r z7RtQKBd(uy`84v<(pYh6{&DqB;N=3z1U!CbWx)V3F)>hLZrirb&QD%Ctv<~Fov~Qc zO6$j6NePMY`(XtvNW|EguSj`I`{~{khPVI2*~Ior#E_7_zCQo;bt~rNBdv!g$7*d} zbpLxsHrHbvhx=Y~Uycd$!3=>fl`c1NqpozY+P{s08Xjd-R3cu}J-*${W9G~Ry9p|? zSzvt(4gnP~NMYXVi6RD-5&$UCZ`D)k2>gz?q6eJM(U1Iky1kgTJ9>Uzk6;e(ZFxAC zovSVXU!sH^GfZ(D=_JO0?ORArLKFALGLXyr;IdV^g z4lfS|QsC}b2Wpg(zSDM1ua84&L7uz2cU0OS7~x~P*g%;8?o=Z%<6H+nBcKvMv$Lrx z<%%r&h{ASoVCWuh?>T&*YPEO02Zek&FA0ihj%}3N$(_PIB zTgeJ-aakCE(>(;#vqn_K5ve&2G=u;Oo9h>o-}z?$x*&Vzs@Z2QqNtZrjhk1y|0|{~ zXvrQN?S-L4T+1^{K0p7^gL|_1;dJ5<^!pF_HTSTwP&8uhzgJa^F-!p6lDeq={H1n_ z7ccOmo#jHS#p}1(M815-4-E7!ux1h)6GNe(zhEt>3AO-hmbnecVOF)KOI)yTN2eh} z^;T0;h;rLb*liR36tgTL#UFwrz)j!rt-F*}BEM#EWnxH8oSbs|t%gLhpKFWJcXY-SQb~ zPENJj+BpG!{=q>+7S2jR{!^3$0W5k6vE}7uvoRG(e{o?Casf~}dEtl)keE4Z4n-8$ zIvKflb#swKW%?RoGxgi}{5iL;-^6nk7L^Gb`eC&{*4%s^nPKJIG(|mKh_+pF&CbnI z!18{72um*L)zDB*^U3%GlbWnZFv3e`%(c>dVVBX^Ks%|ocXh$_`M?|0 zF;68&!Xh^2vAMln7s|vyjWNyf(d(vyLE2(E7i4H5T0agP^|0>HiAL9TBrlhkU}fax zyYo6kbv`hNK_I_C8o3qh(g=r%Gc;XTUR2>e7++hxKwR{us9~}m6XeSvZB}D2UVvcI zBN=V7Bd|mS#;qspd?0w|?Jp@gL%rdKr|@veJ{{j0N?Z%e=F{J)h>v>ny8>6#7(?sQ z$jFG}1)KhXnfB26M-^?WZ~a9hDZ0Uf?Ah=0PJ|*sF~zWtKL9*9aD4bn>0KWIU0+}C zIvTC0z%!LGCLF6E84W@7!NM8y^Yb%el1eE&M(TRi4U;IpkR@VRKcH%6<egA1GQ%GvR+#UNQ$A*Z2 zkX==!!a)gS-&PodM$Mbm01Up(J`1a6gY_N#VlStpEsqS_Z*H0j7IGJr*g@x%Z#cIa z#$JKbhz{^@I1pzrdcSgAULwDLngM{_@m;@`r8rVVny9ZNTIC~eG|Lk?FuGQwRpstS{v75A*`(` zOgVQ+N7RQ^kn(#B0k$5xA)`n6hx5V%`EO*oWK+!&@~aKnVbAiFcrOe1`Q;=1lb+%N zr+A3o1m!3zyRnU;c$eWB`-)^N-Jweg%LFwH@7~|vYB44f59AXV5bYTA?q3IB2x5+C zl(1=qH&=DuX&2)A4Qth-iyutGba&IeMsA0$8v&U0dC@WzPsiy5JS^CXYlM|0#UY6N ze_q1n?*m`T(OH^RtK8ou??^+8Ed{NGe{KnA)cxHWH|M3u|IBWMN4vdaOeHrqa*QD) zK2)N$ZbcFm4q?aGjDdO2+g8zhz>Z^dKmC0`Mp8fqiNk>(toLGKFJgc! zvZMK3hFFilN7lXj+Z&I~#=`RQ-q6S$`?dCTDee0eCPf)qn?IVvl|K>_-zm7Zg9iVO zpCSQW-gwPCo}Ydd-zk?j!2*5yjdg0?pr6+Q&T|{CN(>zia@0{fSgM&}H6%QrBluzr zUbH`W@%Ake|L<(Swyx|D$xj6nXJxRUSD5O5;{rs#^7nqcnt}Zi(U_l)aIrnK!F51> z@(1Kpq2HjNu$1KGqvog;-DZO71x1|U7a=4{U|nIzU2B&0?F`LMsUjvRS|jz(qlNnV zh8s}uEId?!$JPcds{H{!j`&7M!JL%Zs2)a5BNb2Y;_8aiQ}qW(!a{wg_rJRdDl5Mj zfx#<;q!?IFA-_zZ!c5S%Y}m8&1?SA4!q|80Qt zXx5AL0aif+01^fUVw-u9g}=Qy2^)oM=h=@Exp^%ETH{+O%)pIV8)16&lAnPepp%oT zsN`IzK#b=#1Bjh5DJic3klJi$ar)bT?ynIE4HqJ4$NaZmww`Ci%0V5R<)0G$;GehvX>kRyGEoEn{{aW& BR__1+ literal 11622 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 P#sy>~6vWHl8V3AduaE82 From ff2c23714f1fdec70d8fbcee7890d6d4bef309c1 Mon Sep 17 00:00:00 2001 From: Zuhayr Date: Tue, 9 Dec 2014 20:52:41 +1030 Subject: [PATCH 06/16] Bunch of diona nymph tweaks/fixes. --- code/modules/hydroponics/hydro_tray.dm | 19 ++++++++ code/modules/mob/holder.dm | 1 + code/modules/mob/living/carbon/alien/alien.dm | 2 +- .../mob/living/carbon/alien/diona/diona.dm | 9 ---- .../carbon/alien/diona/diona_attacks.dm | 1 + .../living/carbon/alien/diona/diona_powers.dm | 35 +------------ .../living/carbon/alien/diona/progression.dm | 23 +-------- .../mob/living/carbon/alien/larva/larva.dm | 4 -- .../living/carbon/alien/larva/progression.dm | 5 -- .../mob/living/carbon/alien/progression.dm | 2 + .../mob/living/carbon/carbon_powers.dm | 46 ------------------ .../mob/living/carbon/human/update_icons.dm | 6 +-- icons/mob/items_righthand.dmi | Bin 156880 -> 156284 bytes 13 files changed, 29 insertions(+), 124 deletions(-) diff --git a/code/modules/hydroponics/hydro_tray.dm b/code/modules/hydroponics/hydro_tray.dm index 75169cd30c..66cf467657 100644 --- a/code/modules/hydroponics/hydro_tray.dm +++ b/code/modules/hydroponics/hydro_tray.dm @@ -122,6 +122,25 @@ "mutagen" = 15 ) +/obj/machinery/portable_atmospherics/hydroponics/attack_generic(var/mob/user) + if(istype(user,/mob/living/carbon/alien/diona)) + var/mob/living/carbon/alien/diona/nymph = user + + if(nymph.stat == DEAD || nymph.paralysis || nymph.weakened || nymph.stunned || nymph.restrained()) + return + + if(weedlevel > 0) + nymph.reagents.add_reagent("nutriment", weedlevel) + weedlevel = 0 + nymph.visible_message("[nymph] begins rooting through [src], ripping out weeds and eating them noisily.","You begin rooting through [src], ripping out weeds and eating them noisily.") + else if(nymph.nutrition > 100 && nutrilevel < 10) + nymph.nutrition -= ((10-nutrilevel)*5) + nutrilevel = 10 + nymph.visible_message("[nymph] secretes a trickle of green liquid, refilling [src].","You secrete a trickle of green liquid, refilling [src].") + else + nymph.visible_message("[nymph] rolls around in [src] for a bit.","You roll around in [src] for a bit.") + return + /obj/machinery/portable_atmospherics/hydroponics/New() ..() temp_chem_holder = new() diff --git a/code/modules/mob/holder.dm b/code/modules/mob/holder.dm index 1b8cf6eee6..81e8137f04 100644 --- a/code/modules/mob/holder.dm +++ b/code/modules/mob/holder.dm @@ -7,6 +7,7 @@ sprite_sheets = list("Vox" = 'icons/mob/species/vox/head.dmi') /obj/item/weapon/holder/New() + item_state = icon_state ..() processing_objects.Add(src) diff --git a/code/modules/mob/living/carbon/alien/alien.dm b/code/modules/mob/living/carbon/alien/alien.dm index 1e1748e1cc..67a134ec9b 100644 --- a/code/modules/mob/living/carbon/alien/alien.dm +++ b/code/modules/mob/living/carbon/alien/alien.dm @@ -11,7 +11,7 @@ var/adult_form var/dead_icon var/amount_grown = 0 - var/max_grown = 10 + var/max_grown = 200 var/time_of_birth var/language diff --git a/code/modules/mob/living/carbon/alien/diona/diona.dm b/code/modules/mob/living/carbon/alien/diona/diona.dm index d2e362269a..fd5a80de66 100644 --- a/code/modules/mob/living/carbon/alien/diona/diona.dm +++ b/code/modules/mob/living/carbon/alien/diona/diona.dm @@ -6,12 +6,6 @@ icon_state = "nymph" language = "Rootspeak" - amount_grown = 0 - max_grown = 5 // Target number of donors. - - var/list/donors = list() - var/last_checked_stage = 0 - universal_understand = 1 universal_speak = 0 // Dionaea do not need to speak to people other than other dionaea. holder_type = /obj/item/weapon/holder/diona @@ -20,7 +14,4 @@ ..() species = all_species["Diona"] - verbs += /mob/living/carbon/proc/eat_weeds - verbs += /mob/living/carbon/proc/fertilize_plant - verbs += /mob/living/carbon/alien/diona/proc/steal_blood verbs += /mob/living/carbon/alien/diona/proc/merge \ No newline at end of file diff --git a/code/modules/mob/living/carbon/alien/diona/diona_attacks.dm b/code/modules/mob/living/carbon/alien/diona/diona_attacks.dm index 82f7a78902..a379af21c7 100644 --- a/code/modules/mob/living/carbon/alien/diona/diona_attacks.dm +++ b/code/modules/mob/living/carbon/alien/diona/diona_attacks.dm @@ -11,5 +11,6 @@ src.loc = M else get_scooped(M) + return ..() \ No newline at end of file diff --git a/code/modules/mob/living/carbon/alien/diona/diona_powers.dm b/code/modules/mob/living/carbon/alien/diona/diona_powers.dm index bac7c75d2b..65e1f6b1c0 100644 --- a/code/modules/mob/living/carbon/alien/diona/diona_powers.dm +++ b/code/modules/mob/living/carbon/alien/diona/diona_powers.dm @@ -63,37 +63,4 @@ for(var/atom/A in M.contents) if(istype(A,/mob/living/simple_animal/borer) || istype(A,/obj/item/weapon/holder)) return - M.status_flags &= ~PASSEMOTES - -/mob/living/carbon/alien/diona/proc/steal_blood() - set category = "Abilities" - set name = "Steal Blood" - set desc = "Take a blood sample from a suitable donor." - - if(stat == DEAD || paralysis || weakened || stunned || restrained()) - return - - var/list/choices = list() - for(var/mob/living/carbon/human/H in oview(1,src)) - if(src.Adjacent(H)) - choices += H - - var/mob/living/carbon/human/M = input(src,"Who do you wish to take a sample from?") in null|choices - - if(!M || !src) return - - if(M.species.flags & NO_BLOOD) - src << "\red That donor has no blood to take." - return - - if(donors.Find(M.real_name)) - src << "\red That donor offers you nothing new." - return - - src.visible_message("\red [src] flicks out a feeler and neatly steals a sample of [M]'s blood.","\red You flick out a feeler and neatly steal a sample of [M]'s blood.") - donors += M.real_name - for(var/datum/language/L in M.languages) - languages |= L - - spawn(25) - update_progression() \ No newline at end of file + M.status_flags &= ~PASSEMOTES \ No newline at end of file diff --git a/code/modules/mob/living/carbon/alien/diona/progression.dm b/code/modules/mob/living/carbon/alien/diona/progression.dm index b99f593a10..fa567cbb44 100644 --- a/code/modules/mob/living/carbon/alien/diona/progression.dm +++ b/code/modules/mob/living/carbon/alien/diona/progression.dm @@ -16,25 +16,4 @@ del(L) src.visible_message("\red [src] begins to shift and quiver, and erupts in a shower of shed bark as it splits into a tangle of nearly a dozen new dionaea.","\red You begin to shift and quiver, feeling your awareness splinter. All at once, we consume our stored nutrients to surge with growth, splitting into a tangle of at least a dozen new dionaea. We have attained our gestalt form.") - return "Diona" - -/mob/living/carbon/alien/diona/show_evolution_blurb() - //TODO - return - -/mob/living/carbon/alien/diona/update_progression() - - amount_grown = donors.len - - if(amount_grown <= last_checked_stage) - return - - // Only fire off these messages once. - last_checked_stage = amount_grown - if(amount_grown == max_grown) - src << "\green You feel ready to move on to your next stage of growth." - else if(amount_grown == 3) - universal_understand = 1 - src << "\green You feel your awareness expand, and realize you know how to understand the creatures around you." - else - src << "\green The blood seeps into your small form, and you draw out the echoes of memories and personality from it, working them into your budding mind." \ No newline at end of file + return "Diona" \ No newline at end of file diff --git a/code/modules/mob/living/carbon/alien/larva/larva.dm b/code/modules/mob/living/carbon/alien/larva/larva.dm index 8dd64654b7..2369cb9fe5 100644 --- a/code/modules/mob/living/carbon/alien/larva/larva.dm +++ b/code/modules/mob/living/carbon/alien/larva/larva.dm @@ -5,10 +5,6 @@ speak_emote = list("hisses") icon_state = "larva" language = "Hivemind" - - amount_grown = 0 - max_grown = 200 - maxHealth = 25 health = 25 diff --git a/code/modules/mob/living/carbon/alien/larva/progression.dm b/code/modules/mob/living/carbon/alien/larva/progression.dm index 50d75af813..05bab1bfde 100644 --- a/code/modules/mob/living/carbon/alien/larva/progression.dm +++ b/code/modules/mob/living/carbon/alien/larva/progression.dm @@ -1,8 +1,3 @@ -/mob/living/carbon/alien/larva/update_progression() - if(amount_grown < max_grown) - amount_grown++ - return - /mob/living/carbon/alien/larva/confirm_evolution() src << "\blue You are growing into a beautiful alien! It is time to choose a caste." diff --git a/code/modules/mob/living/carbon/alien/progression.dm b/code/modules/mob/living/carbon/alien/progression.dm index fe3ec5d2d5..b6306ed5e2 100644 --- a/code/modules/mob/living/carbon/alien/progression.dm +++ b/code/modules/mob/living/carbon/alien/progression.dm @@ -41,6 +41,8 @@ del(src) /mob/living/carbon/alien/proc/update_progression() + if(amount_grown < max_grown) + amount_grown++ return /mob/living/carbon/alien/proc/confirm_evolution() diff --git a/code/modules/mob/living/carbon/carbon_powers.dm b/code/modules/mob/living/carbon/carbon_powers.dm index 6f52ac106c..65fcbc7b17 100644 --- a/code/modules/mob/living/carbon/carbon_powers.dm +++ b/code/modules/mob/living/carbon/carbon_powers.dm @@ -1,49 +1,3 @@ -//TODO: Consider renaming carbon/monkey to carbon/small. - -/mob/living/carbon/proc/fertilize_plant() - - set category = "Abilities" - set name = "Fertilize plant" - set desc = "Turn your food into nutrients for plants." - - if(stat == DEAD || paralysis || weakened || stunned || restrained()) - return - - var/list/trays = list() - for(var/obj/machinery/portable_atmospherics/hydroponics/tray in range(1)) - if(tray.nutrilevel < 10 && src.Adjacent(tray)) - trays += tray - - var/obj/machinery/portable_atmospherics/hydroponics/target = input("Select a tray:") as null|anything in trays - - if(!src || !target || target.nutrilevel == 10) return //Sanity check. - - src.nutrition -= ((10-target.nutrilevel)*5) - target.nutrilevel = 10 - src.visible_message("\red [src] secretes a trickle of green liquid, refilling [target]'s nutrient tray.","\red You secrete a trickle of green liquid from your tail, refilling [target]'s nutrient tray.") - -/mob/living/carbon/proc/eat_weeds() - - set category = "Abilities" - set name = "Eat Weeds" - set desc = "Clean the weeds out of soil or a hydroponics tray." - - if(stat == DEAD || paralysis || weakened || stunned || restrained()) - return - - var/list/trays = list() - for(var/obj/machinery/portable_atmospherics/hydroponics/tray in range(1)) - if(tray.weedlevel > 0 && src.Adjacent(tray)) - trays += tray - - var/obj/machinery/portable_atmospherics/hydroponics/target = input("Select a tray:") as null|anything in trays - - if(!src || !target || target.weedlevel == 0) return //Sanity check. - - src.reagents.add_reagent("nutriment", target.weedlevel) - target.weedlevel = 0 - src.visible_message("\red [src] begins rooting through [target], ripping out weeds and eating them noisily.","\red You begin rooting through [target], ripping out weeds and eating them noisily.") - //Brain slug proc for voluntary removal of control. /mob/living/carbon/proc/release_control() diff --git a/code/modules/mob/living/carbon/human/update_icons.dm b/code/modules/mob/living/carbon/human/update_icons.dm index cae4b35426..860f5a9a25 100644 --- a/code/modules/mob/living/carbon/human/update_icons.dm +++ b/code/modules/mob/living/carbon/human/update_icons.dm @@ -760,8 +760,8 @@ proc/get_damage_icon_part(damage_state, body_part) /mob/living/carbon/human/update_inv_wear_suit(var/update_icons=1) - if( wear_suit && istype(wear_suit, /obj/item/clothing/suit) ) //TODO check this - wear_suit.screen_loc = ui_oclothing //TODO + if( wear_suit && istype(wear_suit, /obj/item/) ) + wear_suit.screen_loc = ui_oclothing var/image/standing @@ -831,7 +831,7 @@ proc/get_damage_icon_part(damage_state, body_part) if(back.icon_override) overlays_standing[BACK_LAYER] = image("icon" = back.icon_override, "icon_state" = "[back.icon_state]") //If this is a rig and a mob_icon is set, it will take species into account in the rig update_icon() proc. - else if(istype(rig) && !rig.offline && rig.mob_icon) + else if(istype(rig) && rig.mob_icon) overlays_standing[BACK_LAYER] = rig.mob_icon else if(back.sprite_sheets && back.sprite_sheets[species.name]) overlays_standing[BACK_LAYER] = image("icon" = back.sprite_sheets[species.name], "icon_state" = "[back.icon_state]") diff --git a/icons/mob/items_righthand.dmi b/icons/mob/items_righthand.dmi index 92325b5e3d55a2045a90092096e3b0098b518307..cae6ddf04286cc56c6c80414143bf014b975f753 100644 GIT binary patch delta 15137 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 VO{#{<7Z9+>N-IbeOT7R5e*m`ZJ%9iJ delta 15738 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 From 7bc72fb8364f2d817aab08ef36a02ba9d38fea9e Mon Sep 17 00:00:00 2001 From: Zuhayr Date: Tue, 9 Dec 2014 21:01:17 +1030 Subject: [PATCH 07/16] Tidied up/fixed up the rig back icons. --- code/modules/clothing/spacesuits/rig/rig.dm | 8 ++++++-- icons/mob/rig_back.dmi | Bin 0 -> 1248 bytes 2 files changed, 6 insertions(+), 2 deletions(-) create mode 100644 icons/mob/rig_back.dmi diff --git a/code/modules/clothing/spacesuits/rig/rig.dm b/code/modules/clothing/spacesuits/rig/rig.dm index 41c02cba10..d5b79092f4 100644 --- a/code/modules/clothing/spacesuits/rig/rig.dm +++ b/code/modules/clothing/spacesuits/rig/rig.dm @@ -76,7 +76,8 @@ var/datum/effect/effect/system/spark_spread/spark_system /obj/item/weapon/rig/examine() - ..() + usr << "This is a \icon[mob_icon][src.name]." + usr << "[src.desc]" if(wearer) for(var/obj/item/piece in list(helmet,gloves,chest,boots)) if(!piece || piece.loc != wearer) @@ -90,6 +91,7 @@ /obj/item/weapon/rig/New() ..() + item_state = icon_state wires = new(src) if((!req_access || !req_access.len) && (!req_one_access || !req_one_access.len)) @@ -140,6 +142,8 @@ piece.siemens_coefficient = siemens_coefficient piece.permeability_coefficient = permeability_coefficient + update_icon(1) + /obj/item/weapon/rig/Del() for(var/obj/item/piece in list(gloves,boots,helmet,chest)) var/mob/living/M = piece.loc @@ -450,7 +454,7 @@ mob_icon.overlays.Cut() if(!mob_icon || update_mob_icon) - var/species_icon = 'icons/mob/back.dmi' + var/species_icon = 'icons/mob/rig_back.dmi' // Since setting mob_icon will override the species checks in // update_inv_wear_suit(), handle species checks here. if(wearer && sprite_sheets && sprite_sheets[wearer.species.name]) diff --git a/icons/mob/rig_back.dmi b/icons/mob/rig_back.dmi new file mode 100644 index 0000000000000000000000000000000000000000..8266d74b0b63875d440494a7e764ea4bf1ca94be GIT binary patch literal 1248 zcmV<61Rwi}P)004jp0{{R3yS^?cz8}uP9-HJFE1}iNl8jdN>^7`k&%%@Lql3x zT2D_;mzS3{H6}nnFC-)yBqSudy1F|%J0oe(FfcH`001t4_&S*XDJd!60093002vt> zRaI52tgPPN-v9sqtZe|^lmP#{00XrpVgLXD0d!JMQvg8b*k%9#0GE1HSad{Xb7OL8 zaCB*JZU6vyoQ;sZ3c@fHM(5-yLc5E9tBbUh4)zsFXg-q*CWV`;;@jKm;3nD52j?tb zZO(1i52m^F`T@=~Cv!5#%~q=?ISI=+?6nFYALKi-Siyo-rIjPjtFP6SZN$pEp8%F| znq#!dfk!4^RAfwdCV3SH5soH%EB28*C4edUe@$)Lq4^y12I~7(MqN1ung9R;YDq*v zRCt{2n(K0#Fc5{QEg_k8OdXdbRb&@J;@W=y2dsoKnIyZC$fZm>`!NBJcdc`fKtIkT z%NT}X80NG1_UihY**p_MWb+wX6`m9svQfUezVVm$A9CE`Oemq0nk#`h)C*A*2^L+8 z>sx5VAM_u9a=1J@%$G#{O09%D)D>3LqR`%5#9`N>3xOB}fEQQ9VCfy^C1p^|zYBNF zQ4fnk4-O&*-Q5%mqy`G4lI~3Xc&*Fa9ePa-?(B7c0fXW?Z17qH40ekQk~X->${%I6 zAq^@~Rh2so88dg`U)vD5{6ODgOjf6E1+YI@; z<=y({`i`1Fw-IXhlIT^s5r$zHhG7_nVVM6BmHg$X5k8CoxOWE_+~7SOJH5cQ-CL{> z%m1AIcDr@@RNa8t{n{Da;7;vaLtV%0)ioHi+wBm4k^Il=HxG?F6AlenE2Xp+8vu+i zcmolCzSml7-cEKb|MU8dY@7@=g>4I90ooRsL9nXr#(k_eWQ3qM^<&rEwiYoF%U%Y3 zYW&Wd@4}X#y{u4;N7Nm&x*y44BC+gc&?gO=?hXuUP>wT*4G}eX(WmNQjRa{dU@ytA zGARaIbeSRspY^E*<2!sEdj{R)_XdN{U~kaA;~58o&P22GYrEp48t%C!!QxR$9PyFA^$rZ4pjcvkH-^vD}I0v{Quuco~ZoqG$wyM;R(~E`CnW=n>PQ8>u1yEe{ub6 z()=$$f7<*nK|h-||BLH)9eu+j`Cm-`xnsio?_>H5!!Qi<@9_tifm>N=!Nt7*0000< KMNUMnLSTX~i%UBI literal 0 HcmV?d00001 From 79fbc2cde9df91109386d545c991e359f48d8ec2 Mon Sep 17 00:00:00 2001 From: Zuhayr Date: Tue, 9 Dec 2014 21:32:40 +1030 Subject: [PATCH 08/16] Fixes autolathe menu. --- code/game/machinery/autolathe.dm | 65 +++++++++++++++----------------- 1 file changed, 30 insertions(+), 35 deletions(-) diff --git a/code/game/machinery/autolathe.dm b/code/game/machinery/autolathe.dm index e70875941e..6f9a2c4b95 100644 --- a/code/game/machinery/autolathe.dm +++ b/code/game/machinery/autolathe.dm @@ -31,7 +31,7 @@ var/dat = "

Autolathe Control Panel


" - if(!panel_open) + if(panel_open == 0) dat += "
Transmit:[(radio.wires & 4) ? "En" : "Dis" ]abled + [radio.broadcasting ? "En" : "Dis" ]abled
Receive:[(radio.wires & 2) ? "En" : "Dis" ]abled - -
Signal Pulser:[(radio.wires & 1) ? "En" : "Dis" ]abled + [radio.listening ? "En" : "Dis" ]abled
" var/material_top = "" var/material_bottom = "" @@ -48,41 +48,36 @@ index++ if(R.hidden && !hacked || (show_category != "All" && show_category != R.category)) continue + var/can_make = 1 + var/material_string = "" + var/multiplier_string = "" + var/max_sheets + var/comma + if(!R.resources || !R.resources.len) + material_string = "No resources required." + else + //Make sure it's buildable and list requires resources. + for(var/material in R.resources) + var/sheets = round(stored_material[material]/R.resources[material]) + if(isnull(max_sheets) || max_sheets > sheets) + max_sheets = sheets + if(!isnull(stored_material[material]) && stored_material[material] < R.resources[material]) + can_make = 0 + if(!comma) + comma = 1 + else + material_string += ", " + material_string += "[R.resources[material]] [material]" + material_string += ".
" + //Build list of multipliers for sheets. + if(R.is_stack) + if(max_sheets && max_sheets > 0) + multiplier_string += "
" + for(var/i = 5;i sheets) - max_sheets = sheets - - if(!isnull(stored_material[material]) && stored_material[material] < R.resources[material]) - can_make = 0 - if(!comma) - comma = 1 - else - material_string += ", " - material_string += "[R.resources[material]] [material]" - material_string += ".
" - - //Build list of multipliers for sheets. - if(R.is_stack) - if(max_sheets && max_sheets > 0) - multiplier_string += "
" - for(var/i = 5;i*" : ""][can_make ? "" : ""][R.name][can_make ? "" : ""][R.hidden ? "*" : ""][multiplier_string]
" + dat += "" dat += "
[material_string]
[R.hidden ? "*" : ""][can_make ? "" : ""][R.name][can_make ? "" : ""][R.hidden ? "*" : ""][multiplier_string][material_string]

" //Hacking. From 065d9b110c1b07de7436a3f63e01efa351c8d270 Mon Sep 17 00:00:00 2001 From: Segrain Date: Tue, 9 Dec 2014 14:52:43 +0300 Subject: [PATCH 09/16] Fix for #6476. --- code/modules/recycling/disposal.dm | 1 + 1 file changed, 1 insertion(+) diff --git a/code/modules/recycling/disposal.dm b/code/modules/recycling/disposal.dm index 48c16a2977..002ef71687 100644 --- a/code/modules/recycling/disposal.dm +++ b/code/modules/recycling/disposal.dm @@ -742,6 +742,7 @@ icon_state = "[base_icon_state]f" else icon_state = base_icon_state*/ + icon_state = base_icon_state return From 4ae3d3029f4a0055a4502864e75d46bc5a097574 Mon Sep 17 00:00:00 2001 From: Segrain Date: Tue, 9 Dec 2014 14:54:20 +0300 Subject: [PATCH 10/16] Fix for #6643. --- code/modules/recycling/disposal.dm | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/code/modules/recycling/disposal.dm b/code/modules/recycling/disposal.dm index 002ef71687..04fa4f6b7a 100644 --- a/code/modules/recycling/disposal.dm +++ b/code/modules/recycling/disposal.dm @@ -49,8 +49,6 @@ if(stat & BROKEN || !I || !user) return - if(isrobot(user) && !istype(I, /obj/item/weapon/storage/bag/trash)) - return src.add_fingerprint(user) if(mode<=0) // It's off if(istype(I, /obj/item/weapon/screwdriver)) @@ -123,7 +121,10 @@ msg_admin_attack("[usr] ([usr.ckey]) placed [GM] ([GM.ckey]) in a disposals unit. (JMP)") return - if(!I) return + if(isrobot(user)) + return + if(!I) + return user.drop_item() if(I) From 4fb83010e1c3dbaa2e3b7f60b62c9d3e4954286e Mon Sep 17 00:00:00 2001 From: Segrain Date: Tue, 9 Dec 2014 14:55:25 +0300 Subject: [PATCH 11/16] Fix for #7322. --- code/game/objects/items.dm | 8 ++------ 1 file changed, 2 insertions(+), 6 deletions(-) diff --git a/code/game/objects/items.dm b/code/game/objects/items.dm index 5ef7686e42..d73e2a5fc7 100644 --- a/code/game/objects/items.dm +++ b/code/game/objects/items.dm @@ -331,9 +331,7 @@ if(slot_l_ear) if(H.l_ear) return 0 - if( w_class < 2 ) - return 1 - if( !(slot_flags & SLOT_EARS) ) + if( (w_class > 1) && !(slot_flags & SLOT_EARS) ) return 0 if( (slot_flags & SLOT_TWOEARS) && H.r_ear ) return 0 @@ -341,9 +339,7 @@ if(slot_r_ear) if(H.r_ear) return 0 - if( w_class < 2 ) - return 1 - if( !(slot_flags & SLOT_EARS) ) + if( (w_class > 1) && !(slot_flags & SLOT_EARS) ) return 0 if( (slot_flags & SLOT_TWOEARS) && H.l_ear ) return 0 From bc394b72d69b5d193d15733d5043aa2407e9e7ac Mon Sep 17 00:00:00 2001 From: Zuhayr Date: Tue, 9 Dec 2014 22:14:41 +1030 Subject: [PATCH 12/16] Fixes diona and simple_animals eating snacks. --- .../reagent_containers/food/snacks.dm | 36 ++++++++----------- 1 file changed, 14 insertions(+), 22 deletions(-) diff --git a/code/modules/reagents/reagent_containers/food/snacks.dm b/code/modules/reagents/reagent_containers/food/snacks.dm index 98285e04e0..b6f9c36b77 100644 --- a/code/modules/reagents/reagent_containers/food/snacks.dm +++ b/code/modules/reagents/reagent_containers/food/snacks.dm @@ -16,9 +16,7 @@ /obj/item/weapon/reagent_containers/food/snacks/proc/On_Consume(var/mob/M) if(!usr) return if(!reagents.total_volume) - if(M == usr) - usr << "You finish eating \the [src]." - M.visible_message("[M] finishes eating \the [src].") + M.visible_message("[M] finishes eating \the [src].","You finish eating \the [src].") usr.drop_from_inventory(src) //so icons update :[ if(trash) @@ -194,8 +192,8 @@ del(src) return -/obj/item/weapon/reagent_containers/food/snacks/proc/is_sliceable() - return (slices_num && slice_path && slices_num > 0) +/obj/item/weapon/reagent_containers/food/snacks/proc/is_sliceable() + return (slices_num && slice_path && slices_num > 0) /obj/item/weapon/reagent_containers/food/snacks/Del() if(contents) @@ -206,24 +204,18 @@ //////////////////////////////////////////////////////////////////////////////// /// FOOD END //////////////////////////////////////////////////////////////////////////////// - /obj/item/weapon/reagent_containers/food/snacks/attack_generic(var/mob/living/user) - - if(isanimal(user) || isalien(user)) - - if(bitecount == 0 || prob(50)) - user.custom_emote(1,"nibbles away at the [src]") - bitecount++ - - if(reagents && user.reagents) - reagents.trans_to_ingest(user, bitesize) - - spawn(5) - if(!src && !user.client) - user.custom_emote(1,"[pick("burps", "cries for more", "burps twice", "looks at the area where the food was")]") - del(src) - - On_Consume(user) + if(!isanimal(user) && !isalien(user)) + return + user.visible_message("[user] nibbles away at the [src].","You nibble away at the [src].") + bitecount++ + if(reagents && user.reagents) + reagents.trans_to_ingest(user, bitesize) + spawn(5) + if(!src && !user.client) + user.custom_emote(1,"[pick("burps", "cries for more", "burps twice", "looks at the area where the food was")]") + del(src) + On_Consume(user) ////////////////////////////////////////////////// ////////////////////////////////////////////Snacks From e068d9f8d461b31305ccd61f04044930a2ae1cb2 Mon Sep 17 00:00:00 2001 From: Amunak Date: Tue, 9 Dec 2014 14:50:36 +0100 Subject: [PATCH 13/16] Blast doors' sprite now doesn't disappear when damaged - fixes #7341 --- code/game/machinery/doors/poddoor.dm | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/code/game/machinery/doors/poddoor.dm b/code/game/machinery/doors/poddoor.dm index aeccacd45c..4f5e416d33 100644 --- a/code/game/machinery/doors/poddoor.dm +++ b/code/game/machinery/doors/poddoor.dm @@ -21,6 +21,13 @@ else return 0 +/obj/machinery/door/poddoor/update_icon() + if(density) + icon_state = "pdoor1" + else + icon_state = "pdoor0" + return + /obj/machinery/door/poddoor/attackby(obj/item/weapon/C as obj, mob/user as mob) src.add_fingerprint(user) if (!( istype(C, /obj/item/weapon/crowbar) || (istype(C, /obj/item/weapon/twohanded/fireaxe) && C:wielded == 1) )) From e80f59742d95211924b08793e7b2fc361e707700 Mon Sep 17 00:00:00 2001 From: Zuhayr Date: Wed, 10 Dec 2014 00:56:26 +1030 Subject: [PATCH 14/16] Fixes #7316 --- code/game/objects/items/weapons/RCD.dm | 2 +- code/modules/clothing/spacesuits/rig/modules/utility.dm | 4 ++++ 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/code/game/objects/items/weapons/RCD.dm b/code/game/objects/items/weapons/RCD.dm index 0427960398..d08377a704 100644 --- a/code/game/objects/items/weapons/RCD.dm +++ b/code/game/objects/items/weapons/RCD.dm @@ -59,7 +59,7 @@ if(!proximity) return if(disabled && !isrobot(user)) return 0 - if(istype(A,/area/shuttle)||istype(A,/turf/space/transit)) + if(istype(get_area(A),/area/shuttle)||istype(get_area(A),/turf/space/transit)) return 0 return alter_turf(A,user,(mode == 3)) diff --git a/code/modules/clothing/spacesuits/rig/modules/utility.dm b/code/modules/clothing/spacesuits/rig/modules/utility.dm index 3a09ad41b1..5a8063fd82 100644 --- a/code/modules/clothing/spacesuits/rig/modules/utility.dm +++ b/code/modules/clothing/spacesuits/rig/modules/utility.dm @@ -96,6 +96,10 @@ device.attack_self(holder.wearer) return 1 + var/turf/T = get_turf(target) + if(istype(T) && !T.Adjacent(get_turf(src))) + return 0 + var/resolved = target.attackby(device,holder.wearer) if(!resolved && device && target) device.afterattack(target,holder.wearer,1) From fea8868753411f76f5863daf2b0eaf08d4197264 Mon Sep 17 00:00:00 2001 From: Zuhayr Date: Wed, 10 Dec 2014 02:28:03 +1030 Subject: [PATCH 15/16] Fixes #7310 and should also fix #7311 --- .../mob/living/carbon/human/human_attackhand.dm | 14 ++++++++------ .../mob/living/carbon/human/unarmed_attack.dm | 9 +++++---- 2 files changed, 13 insertions(+), 10 deletions(-) diff --git a/code/modules/mob/living/carbon/human/human_attackhand.dm b/code/modules/mob/living/carbon/human/human_attackhand.dm index 086a1ef0aa..361d47afc0 100644 --- a/code/modules/mob/living/carbon/human/human_attackhand.dm +++ b/code/modules/mob/living/carbon/human/human_attackhand.dm @@ -131,24 +131,26 @@ /* This is kind of convoluted, but it seems to break down like this: (note that the chance to miss is exaggerated here since ran_zone() might roll "chest" - + If aiming for chest: 80% chance you hit your target 17% chance you hit a random zone 3% chance you miss - + If aiming for something else: 68% chance you hit your target 17% chance you hit a random zone 15% chance you miss - + Why don't we just use get_zone_with_miss_chance() ??? */ if(prob(80)) hit_zone = ran_zone(hit_zone) if(prob(15) && hit_zone != "chest") // Missed! - attack_message = "[H] attempted to [pick(attack.attack_verb)] [src], but the [attack.attack_noun] missed!" + attack_message = "[H] attempted to strike [src], but missed!" miss_type = 1 + else + hit_zone = ran_zone(hit_zone) if(!miss_type && block) attack_message = "[H] went for [src]'s [affecting.display_name] but was blocked!" @@ -160,9 +162,9 @@ H.visible_message("[attack_message]") playsound(loc, ((miss_type) ? (miss_type == 1 ? attack.miss_sound : 'sound/weapons/thudswoosh.ogg') : attack.attack_sound), 25, 1, -1) - H.attack_log += text("\[[time_stamp()]\] [miss_type ? (miss_type == 1 ? "Missed" : "Blocked") : "[pick(attack.attack_verb)]ed"] [src.name] ([src.ckey])") + H.attack_log += text("\[[time_stamp()]\] [miss_type ? (miss_type == 1 ? "Missed" : "Blocked") : "[pick(attack.attack_verb)]"] [src.name] ([src.ckey])") src.attack_log += text("\[[time_stamp()]\] [miss_type ? (miss_type == 1 ? "Was missed by" : "Has blocked") : "Has Been [pick(attack.attack_verb)]ed"] by [H.name] ([H.ckey])") - msg_admin_attack("[key_name(H)] [miss_type ? (miss_type == 1 ? "has missed" : "was blocked by") : "has [pick(attack.attack_verb)]ed"] [key_name(src)]") + msg_admin_attack("[key_name(H)] [miss_type ? (miss_type == 1 ? "has missed" : "was blocked by") : "has [pick(attack.attack_verb)]"] [key_name(src)]") if(miss_type) return 0 diff --git a/code/modules/mob/living/carbon/human/unarmed_attack.dm b/code/modules/mob/living/carbon/human/unarmed_attack.dm index b96d9b6fdb..b80eb2b1fd 100644 --- a/code/modules/mob/living/carbon/human/unarmed_attack.dm +++ b/code/modules/mob/living/carbon/human/unarmed_attack.dm @@ -107,6 +107,7 @@ var/organ = affecting.display_name if(!skill) skill = 1 + attack_damage = Clamp(attack_damage, 1, 5) if(target == user) user.visible_message("[user] [pick(attack_verb)] \himself in the [organ]!") @@ -125,7 +126,7 @@ switch(attack_damage) if(1 to 2) user.visible_message("[user] slapped [target]'s [organ]!") if(3 to 4) user.visible_message("[user] [pick(attack_verb)] [target] in \his [organ]!") - if(5) user.visible_message("[user] slams \his [pick(attack_noun)] into [target]'s [organ]!") + if(5) user.visible_message("[user] slammed \his [pick(attack_noun)] into [target]'s [organ]!") if("groin", "l_leg", "r_leg") // -- LOWER BODY -- // switch(attack_damage) @@ -138,7 +139,7 @@ if(1 to 4) user.visible_message("[user] kicked [target] in \his [organ]!") if(5) user.visible_message("[user] stomped down hard on [target]'s [organ]!") else if (user.loc != target.loc) - user.visible_message("[user] [pick("stomped down hard on", "kicked against", "gave a strong kick against", "slams their foot into")] [target]'s [organ]!") + user.visible_message("[user] [pick("stomped down hard on", "kicked against", "gave a strong kick against", "slammed their foot into")] [target]'s [organ]!") else user.visible_message("[user] [pick("punched", "threw a punch", "struck", "slapped", "rammed their [pick(attack_noun)] into")] [target]'s [organ]!") @@ -171,13 +172,13 @@ switch(zone) if("head", "mouth", "eyes") // ----- HEAD ----- // - switch(damage) + switch(attack_damage) if(1 to 2) user.visible_message("[user] scratched [target] across \his cheek!") if(3 to 4) user.visible_message("[user] [pick(attack_verb)] [target]'s [pick("head", "neck")] [pick("", "", "", "with spread [pick(attack_noun)]")]!") if(5) user.visible_message("[pick("[user] [pick(attack_verb)] [target] across \his face!", "[user] rakes \his [pick(attack_noun)] across [target]'s face!")]") if("chest", "l_arm", "r_arm", "l_hand", "r_hand", "groin", "l_leg", "r_leg", "l_foot", "r_foot") // ----- BODY ----- // - switch(damage) + switch(attack_damage) if(1 to 2) user.visible_message("[user] scratched [target]'s [affecting.display_name]!") if(3 to 4) user.visible_message("[user] [pick(attack_verb)] [pick("", "", "the side of")] [target]'s [affecting.display_name]!") if(5) user.visible_message("[user] tears \his [pick(attack_noun)] deep into [target]'s [affecting.display_name]!") From 39f303c50e339a3ca866d487b28f0ea883c74a87 Mon Sep 17 00:00:00 2001 From: Zuhayr Date: Wed, 10 Dec 2014 02:37:23 +1030 Subject: [PATCH 16/16] Actually fixes hardsuit back icons. --- code/modules/clothing/spacesuits/rig/rig.dm | 27 ++++++++------------- 1 file changed, 10 insertions(+), 17 deletions(-) diff --git a/code/modules/clothing/spacesuits/rig/rig.dm b/code/modules/clothing/spacesuits/rig/rig.dm index d5b79092f4..1c10aa36ac 100644 --- a/code/modules/clothing/spacesuits/rig/rig.dm +++ b/code/modules/clothing/spacesuits/rig/rig.dm @@ -76,7 +76,7 @@ var/datum/effect/effect/system/spark_spread/spark_system /obj/item/weapon/rig/examine() - usr << "This is a \icon[mob_icon][src.name]." + usr << "This is \icon[src][src.name]." usr << "[src.desc]" if(wearer) for(var/obj/item/piece in list(helmet,gloves,chest,boots)) @@ -182,13 +182,13 @@ sealing = 1 if(!seal_target && !suit_is_deployed()) - M << "The suit flashes an error light. It can't function properly without being fully deployed." + M.visible_message("[M]'s suit flashes an error light.","Your suit flashes an error light. It can't function properly without being fully deployed.") failed_to_seal = 1 if(!failed_to_seal) if(!instant) - M << "With a quiet hum, the suit begins running checks and adjusting components." + M.visible_message("[M]'s suit emits a quiet hum as it begins to adjust its seals.","With a quiet hum, the suit begins running checks and adjusting components.") if(!do_after(M,SEAL_DELAY)) if(M) M << "You must remain still while the suit is adjusting the components." failed_to_seal = 1 @@ -207,12 +207,11 @@ continue if(!istype(M) || !istype(piece) || !istype(compare_piece) || !msg_type) - if(!failed_to_seal) - if(M) M << "You must remain still while the suit is adjusting the components." + if(M) M << "You must remain still while the suit is adjusting the components." failed_to_seal = 1 break - if(M.back == src && piece == compare_piece) + if(!failed_to_seal && M.back == src && piece == compare_piece) if(!instant) if(!do_after(M,SEAL_DELAY)) @@ -236,11 +235,11 @@ if(!seal_target) if(flags & AIRTIGHT) helmet.flags |= AIRTIGHT - helmet.flags_inv |= (HIDEEYES|HIDEFACE) + helmet.flags_inv |= (HIDEEYES|HIDEFACE|HIDEMASK) helmet.body_parts_covered |= (FACE|EYES) else helmet.flags &= ~AIRTIGHT - helmet.flags_inv &= ~(HIDEEYES|HIDEFACE) + helmet.flags_inv &= ~(HIDEEYES|HIDEFACE|HIDEMASK) helmet.body_parts_covered &= ~(FACE|EYES) helmet.update_light(wearer) else @@ -450,9 +449,6 @@ //TODO: Maybe consider a cache for this (use mob_icon as blank canvas, use suit icon overlay). overlays.Cut() - if(mob_icon) - mob_icon.overlays.Cut() - if(!mob_icon || update_mob_icon) var/species_icon = 'icons/mob/rig_back.dmi' // Since setting mob_icon will override the species checks in @@ -462,10 +458,8 @@ mob_icon = image("icon" = species_icon, "icon_state" = "[icon_state]") if(installed_modules.len) - for(var/obj/item/rig_module/module in installed_modules) if(module.suit_overlay) - mob_icon.overlays += image("icon" = 'icons/mob/rig_modules.dmi', "icon_state" = "[module.suit_overlay]") chest.overlays += image("icon" = 'icons/mob/rig_modules.dmi', "icon_state" = "[module.suit_overlay]", "dir" = SOUTH) if(wearer) @@ -492,10 +486,9 @@ user << "Unauthorized user. Access denied." return 0 - else if(user.loc && user.loc.loc && istype(user.loc.loc,/obj/item/rig_module/ai_container)) - if(!ai_override_enabled) - user << "Synthetic access disabled. Please consult hardware provider." - return 0 + else if(!ai_override_enabled) + user << "Synthetic access disabled. Please consult hardware provider." + return 0 return 1