From ab2b4608e0e7041fcc4c3d9d18a20fd4de2bfecb Mon Sep 17 00:00:00 2001 From: mwerezak Date: Wed, 12 Nov 2014 16:03:23 -0500 Subject: [PATCH 01/27] Fixes #6702 and cleanup Makes reinforced glass a subtype of glass, cleans up window creation copypasta. Cleaned up window initialization leaking outside of the window constructor. Removes unnecessary init_dir var from windows. --- code/game/machinery/autolathe_datums.dm | 2 +- code/game/machinery/computer/ai_core.dm | 8 +- .../game/objects/items/stacks/sheets/glass.dm | 198 +++++------------- code/game/objects/structures/door_assembly.dm | 6 +- code/game/objects/structures/grille.dm | 16 +- .../objects/structures/windoor_assembly.dm | 16 +- code/game/objects/structures/window.dm | 32 ++- code/modules/mob/living/carbon/carbon.dm | 3 +- .../mob/living/carbon/metroid/metroid.dm | 3 +- code/modules/mob/living/living.dm | 3 +- .../modules/mob/living/silicon/robot/robot.dm | 3 +- .../mob/living/silicon/robot/robot_modules.dm | 8 +- .../mob/living/simple_animal/constructs.dm | 3 +- .../living/simple_animal/friendly/corgi.dm | 3 +- .../living/simple_animal/friendly/slime.dm | 3 +- code/modules/power/solar.dm | 2 +- .../research/xenoarchaeology/finds/finds.dm | 2 +- code/unused/hivebot/hive_modules.dm | 2 +- .../mining/machine_craftlathe_unused.dm | 4 +- 19 files changed, 121 insertions(+), 196 deletions(-) diff --git a/code/game/machinery/autolathe_datums.dm b/code/game/machinery/autolathe_datums.dm index 04ce0401628..b94f42d0c6f 100644 --- a/code/game/machinery/autolathe_datums.dm +++ b/code/game/machinery/autolathe_datums.dm @@ -89,7 +89,7 @@ /datum/autolathe/recipe/rglass name = "reinforced glass sheets" - path = /obj/item/stack/sheet/rglass + path = /obj/item/stack/sheet/glass/reinforced category = "General" is_stack = 1 diff --git a/code/game/machinery/computer/ai_core.dm b/code/game/machinery/computer/ai_core.dm index 5e3c29996f1..259012f4dbc 100644 --- a/code/game/machinery/computer/ai_core.dm +++ b/code/game/machinery/computer/ai_core.dm @@ -87,8 +87,8 @@ var/obj/item/stack/cable_coil/A = new /obj/item/stack/cable_coil( loc ) A.amount = 5 - if(istype(P, /obj/item/stack/sheet/rglass)) - var/obj/item/stack/sheet/rglass/RG = P + if(istype(P, /obj/item/stack/sheet/glass/reinforced)) + var/obj/item/stack/sheet/glass/reinforced/RG = P if (RG.get_amount() < 2) user << "You need two sheets of glass to put in the glass panel." return @@ -161,7 +161,7 @@ icon_state = "3b" else icon_state = "3" - new /obj/item/stack/sheet/rglass( loc, 2 ) + new /obj/item/stack/sheet/glass/reinforced( loc, 2 ) return if(istype(P, /obj/item/weapon/screwdriver)) @@ -388,4 +388,4 @@ That prevents a few funky behaviors. U << "\red ERROR: \black [A_T.name] data core is corrupted. Unable to install." else U << "\red ERROR: \black AI flush is in progress, cannot execute transfer protocol." - return \ No newline at end of file + return diff --git a/code/game/objects/items/stacks/sheets/glass.dm b/code/game/objects/items/stacks/sheets/glass.dm index c1126464f56..3111545aecc 100644 --- a/code/game/objects/items/stacks/sheets/glass.dm +++ b/code/game/objects/items/stacks/sheets/glass.dm @@ -18,6 +18,8 @@ matter = list("glass" = 3750) origin_tech = "materials=1" var/created_window = /obj/structure/window/basic + var/is_reinforced = 0 + var/list/construction_options = list("One Direction", "Full Window") /obj/item/stack/sheet/glass/cyborg name = "glass" @@ -32,19 +34,24 @@ /obj/item/stack/sheet/glass/attackby(obj/item/W, mob/user) ..() - if(istype(W,/obj/item/stack/cable_coil)) - var/obj/item/stack/cable_coil/CC = W - if (get_amount() < 1 || CC.get_amount() < 5) - user << "You attach wire to the [name]." - new /obj/item/stack/light_w(user.loc) - else if(istype(W, /obj/item/stack/rods)) - var/obj/item/stack/rods/V = W - if (V.get_amount() >= 1 && get_amount() >= 1) - var/obj/item/stack/sheet/rglass/RG = new (user.loc) + if(!is_reinforced) + if(istype(W,/obj/item/stack/cable_coil)) + var/obj/item/stack/cable_coil/CC = W + if (get_amount() < 1 || CC.get_amount() < 5) + user << "You attach wire to the [name]." + new /obj/item/stack/light_w(user.loc) + else if(istype(W, /obj/item/stack/rods)) + var/obj/item/stack/rods/V = W + if (V.get_amount() < 1 || get_amount() < 1) + user << "You need one rod and one sheet of glass to make reinforced glass." + return + + var/obj/item/stack/sheet/glass/reinforced/RG = new (user.loc) RG.add_fingerprint(user) RG.add_to_stacks(user) var/obj/item/stack/sheet/glass/G = src @@ -54,11 +61,6 @@ G.use(1) if (!G && replace) user.put_in_hands(RG) - else - user << "You need one rod and one sheet of glass to make reinforced glass." - return - else - return ..() /obj/item/stack/sheet/glass/proc/construct_window(mob/user as mob) if(!user || !src) return 0 @@ -66,9 +68,9 @@ if(!user.IsAdvancedToolUser()) user << "\red You don't have the dexterity to do this!" return 0 - var/title = "Sheet-Glass" + var/title = "Sheet-[name]" title += " ([src.amount] sheet\s left)" - switch(alert(title, "Would you like full tile glass or one direction?", "One Direction", "Full Window", "Cancel", null)) + switch(input(title, "What would you like to construct?") in (construction_options + "Cancel")) if("One Direction") if(!src) return 1 if(src.loc != user) return 1 @@ -81,7 +83,7 @@ user << "\red There are too many windows in this location." return 1 directions-=win.dir - if(!(win.ini_dir in cardinal)) + if(!(win.dir in cardinal)) user << "\red Can't let you do that." return 1 @@ -95,113 +97,22 @@ if(!found) dir_to_set = direction break - var/obj/structure/window/W - W = new created_window( user.loc, 0 ) - W.dir = dir_to_set - W.ini_dir = W.dir - W.anchored = 0 + new created_window( user.loc, dir_to_set, 1 ) src.use(1) if("Full Window") if(!src) return 1 if(src.loc != user) return 1 - if(src.amount < 2) + if(src.amount < 4) user << "\red You need more glass to do that." return 1 if(locate(/obj/structure/window) in user.loc) user << "\red There is a window in the way." return 1 - var/obj/structure/window/W - W = new created_window( user.loc, 0 ) - W.dir = SOUTHWEST - W.ini_dir = SOUTHWEST - W.anchored = 0 - src.use(2) - return 0 - - -/* - * Reinforced glass sheets - */ -/obj/item/stack/sheet/rglass - name = "reinforced glass" - desc = "Glass which seems to have rods or something stuck in them." - singular_name = "reinforced glass sheet" - icon_state = "sheet-rglass" - - matter = list("metal" = 1875,"glass" = 3750) - - origin_tech = "materials=2" - -/obj/item/stack/sheet/rglass/cyborg - name = "reinforced glass" - desc = "Glass which seems to have rods or something stuck in them." - singular_name = "reinforced glass sheet" - icon_state = "sheet-rglass" - -/obj/item/stack/sheet/rglass/attack_self(mob/user as mob) - construct_window(user) - -/obj/item/stack/sheet/rglass/proc/construct_window(mob/user as mob) - if(!user || !src) return 0 - if(!istype(user.loc,/turf)) return 0 - if(!user.IsAdvancedToolUser()) - user << "\red You don't have the dexterity to do this!" - return 0 - var/title = "Sheet Reinf. Glass" - title += " ([src.amount] sheet\s left)" - switch(input(title, "Would you like full tile glass a one direction glass pane or a windoor?") in list("One Direction", "Full Window", "Windoor", "Cancel")) - if("One Direction") - if(!src) return 1 - if(src.loc != user) return 1 - var/list/directions = new/list(cardinal) - var/i = 0 - for (var/obj/structure/window/win in user.loc) - i++ - if(i >= 4) - user << "\red There are too many windows in this location." - return 1 - directions-=win.dir - if(!(win.ini_dir in cardinal)) - user << "\red Can't let you do that." - return 1 - - //Determine the direction. It will first check in the direction the person making the window is facing, if it finds an already made window it will try looking at the next cardinal direction, etc. - var/dir_to_set = 2 - for(var/direction in list( user.dir, turn(user.dir,90), turn(user.dir,180), turn(user.dir,270) )) - var/found = 0 - for(var/obj/structure/window/WT in user.loc) - if(WT.dir == direction) - found = 1 - if(!found) - dir_to_set = direction - break - - var/obj/structure/window/W - W = new /obj/structure/window/reinforced( user.loc, 1 ) - W.state = 0 - W.dir = dir_to_set - W.ini_dir = W.dir - W.anchored = 0 - src.use(1) - - if("Full Window") - if(!src) return 1 - if(src.loc != user) return 1 - if(src.amount < 2) - user << "\red You need more glass to do that." - return 1 - if(locate(/obj/structure/window) in user.loc) - user << "\red There is a window in the way." - return 1 - var/obj/structure/window/W - W = new /obj/structure/window/reinforced( user.loc, 1 ) - W.state = 0 - W.dir = SOUTHWEST - W.ini_dir = SOUTHWEST - W.anchored = 0 - src.use(2) - + new created_window( user.loc, SOUTHWEST, 1 ) + src.use(4) if("Windoor") + if(!is_reinforced) return 1 + if(!src || src.loc != user) return 1 if(isturf(user.loc) && locate(/obj/structure/windoor_assembly/, user.loc)) @@ -216,31 +127,33 @@ user << "\red You need more glass to do that." return 1 - var/obj/structure/windoor_assembly/WD - WD = new /obj/structure/windoor_assembly(user.loc) - WD.state = "01" - WD.anchored = 0 + new /obj/structure/windoor_assembly(user.loc, user.dir, 1) src.use(5) - switch(user.dir) - if(SOUTH) - WD.dir = SOUTH - WD.ini_dir = SOUTH - if(EAST) - WD.dir = EAST - WD.ini_dir = EAST - if(WEST) - WD.dir = WEST - WD.ini_dir = WEST - else//If the user is facing northeast. northwest, southeast, southwest or north, default to north - WD.dir = NORTH - WD.ini_dir = NORTH - else - return 1 - return 0 +/* + * Reinforced glass sheets + */ +/obj/item/stack/sheet/glass/reinforced + name = "reinforced glass" + desc = "Glass which has been reinforced with metal rods." + singular_name = "reinforced glass sheet" + icon_state = "sheet-rglass" + + matter = list("metal" = 1875,"glass" = 3750) + origin_tech = "materials=2" + + created_window = /obj/structure/window/reinforced + is_reinforced = 1 + construction_options = list("One Direction", "Full Window", "Windoor") + +/obj/item/stack/sheet/glass/reinforced/cyborg + name = "reinforced glass" + desc = "Glass which has been reinforced with metal rods." + singular_name = "reinforced glass sheet" + icon_state = "sheet-rglass" /* * Phoron Glass sheets @@ -254,9 +167,6 @@ origin_tech = "materials=3;phorontech=2" created_window = /obj/structure/window/phoronbasic -/obj/item/stack/sheet/glass/phoronglass/attack_self(mob/user as mob) - construct_window(user) - /obj/item/stack/sheet/glass/phoronglass/attackby(obj/item/W, mob/user) ..() if( istype(W, /obj/item/stack/rods) ) @@ -279,13 +189,11 @@ */ /obj/item/stack/sheet/glass/phoronrglass name = "reinforced phoron glass" - desc = "Phoron glass which seems to have rods or something stuck in them." + desc = "Phoron glass which has been reinforced with metal rods." singular_name = "reinforced phoron glass sheet" icon_state = "sheet-phoronrglass" matter = list("glass" = 7500,"metal" = 1875) origin_tech = "materials=4;phorontech=2" created_window = /obj/structure/window/phoronreinforced - -/obj/item/stack/sheet/glass/phoronrglass/attack_self(mob/user as mob) - construct_window(user) \ No newline at end of file + is_reinforced = 1 diff --git a/code/game/objects/structures/door_assembly.dm b/code/game/objects/structures/door_assembly.dm index 8e63a00a1e4..93dd601cea2 100644 --- a/code/game/objects/structures/door_assembly.dm +++ b/code/game/objects/structures/door_assembly.dm @@ -159,7 +159,7 @@ obj/structure/door_assembly if(do_after(user, 40)) if(!src || !WT.isOn()) return user << "\blue You welded the glass panel out!" - new /obj/item/stack/sheet/rglass(src.loc) + new /obj/item/stack/sheet/glass/reinforced(src.loc) glass = 0 else if(!anchored) user.visible_message("[user] dissassembles the airlock assembly.", "You start to dissassemble the airlock assembly.") @@ -239,7 +239,7 @@ obj/structure/door_assembly var/obj/item/stack/sheet/S = W if (S) if (S.get_amount() >= 1) - if(istype(S, /obj/item/stack/sheet/rglass)) + if(istype(S, /obj/item/stack/sheet/glass/reinforced)) playsound(src.loc, 'sound/items/Crowbar.ogg', 100, 1) user.visible_message("[user] adds [S.name] to the airlock assembly.", "You start to install [S.name] into the airlock assembly.") if(do_after(user, 40) && !glass) @@ -303,4 +303,4 @@ obj/structure/door_assembly name = "Wired " if(2) name = "Near Finished " - name += "[glass == 1 ? "Window " : ""][istext(glass) ? "[glass] Airlock" : base_name] Assembly" \ No newline at end of file + name += "[glass == 1 ? "Window " : ""][istext(glass) ? "[glass] Airlock" : base_name] Assembly" diff --git a/code/game/objects/structures/grille.dm b/code/game/objects/structures/grille.dm index e1f0804c0e9..6f6df201dc1 100644 --- a/code/game/objects/structures/grille.dm +++ b/code/game/objects/structures/grille.dm @@ -123,8 +123,8 @@ return //window placing begin - else if(istype(W,/obj/item/stack/sheet/rglass) || istype(W,/obj/item/stack/sheet/glass)) - var/obj/item/stack/sheet/ST = W + else if(istype(W,/obj/item/stack/sheet/glass)) + var/obj/item/stack/sheet/glass/ST = W var/dir_to_set = 1 if(loc == user.loc) dir_to_set = user.dir @@ -153,16 +153,10 @@ if(WINDOW.dir == dir_to_set)//checking this for a 2nd time to check if a window was made while we were waiting. user << "There is already a window facing this way there." return + + var/wtype = ST.created_window if (ST.use(1)) - var/obj/structure/window/WD - if(istype(W, /obj/item/stack/sheet/rglass)) - WD = new/obj/structure/window/reinforced(loc) //reinforced window - else - WD = new/obj/structure/window/basic(loc) //normal window - WD.dir = dir_to_set - WD.ini_dir = dir_to_set - WD.anchored = 0 - WD.state = 0 + var/obj/structure/window/WD = new wtype(loc, dir_to_set, 1) user << "You place the [WD] on [src]." WD.update_icon() return diff --git a/code/game/objects/structures/windoor_assembly.dm b/code/game/objects/structures/windoor_assembly.dm index ac2bac7e1bb..915bbbf684c 100644 --- a/code/game/objects/structures/windoor_assembly.dm +++ b/code/game/objects/structures/windoor_assembly.dm @@ -18,7 +18,6 @@ obj/structure/windoor_assembly density = 0 dir = NORTH - var/ini_dir var/obj/item/weapon/airlock_electronics/electronics = null //Vars to help with the icon's name @@ -26,9 +25,17 @@ obj/structure/windoor_assembly var/secure = "" //Whether or not this creates a secure windoor var/state = "01" //How far the door assembly has progressed in terms of sprites -obj/structure/windoor_assembly/New(dir=NORTH) +obj/structure/windoor_assembly/New(Loc, start_dir=NORTH, constructed=0) ..() - src.ini_dir = src.dir + if(constructed) + state = "01" + anchored = 0 + switch(start_dir) + if(NORTH, SOUTH, EAST, WEST) + dir = start_dir + else //If the user is facing northeast. northwest, southeast, southwest or north, default to north + dir = NORTH + update_nearby_tiles(need_rebuild=1) obj/structure/windoor_assembly/Del() @@ -70,7 +77,7 @@ obj/structure/windoor_assembly/Del() if(do_after(user, 40)) if(!src || !WT.isOn()) return user << "\blue You dissasembled the windoor assembly!" - new /obj/item/stack/sheet/rglass(get_turf(src), 5) + new /obj/item/stack/sheet/glass/reinforced(get_turf(src), 5) if(secure) new /obj/item/stack/rods(get_turf(src), 4) del(src) @@ -270,7 +277,6 @@ obj/structure/windoor_assembly/Del() if(src.state != "01") update_nearby_tiles(need_rebuild=1) - src.ini_dir = src.dir update_icon() return diff --git a/code/game/objects/structures/window.dm b/code/game/objects/structures/window.dm index 4fb2c56d77e..f41d8ff841a 100644 --- a/code/game/objects/structures/window.dm +++ b/code/game/objects/structures/window.dm @@ -8,7 +8,6 @@ anchored = 1.0 flags = ON_BORDER var/health = 14.0 - var/ini_dir = null var/state = 2 var/reinf = 0 var/basestate @@ -16,7 +15,6 @@ // var/silicate = 0 // number of units of silicate // var/icon/silicateIcon = null // the silicated icon - /obj/structure/window/bullet_act(var/obj/item/projectile/Proj) //Tasers and the like should not damage windows. @@ -62,11 +60,16 @@ if(reinf) new /obj/item/stack/rods( loc) del(src) +//TODO: Make full windows a separate type of window. +//Once a full window, it will always be a full window, so there's no point +//having the same type for both. +/obj/structure/window/proc/is_full_window() + return (dir == SOUTHWEST || dir == SOUTHEAST || dir == NORTHWEST || dir == NORTHEAST) /obj/structure/window/CanPass(atom/movable/mover, turf/target, height=0, air_group=0) if(istype(mover) && mover.checkpass(PASSGLASS)) return 1 - if(dir == SOUTHWEST || dir == SOUTHEAST || dir == NORTHWEST || dir == NORTHEAST) + if(is_full_window()) return 0 //full tile window, you can't move into it! if(get_dir(loc, target) == dir) return !density @@ -255,7 +258,6 @@ dir = turn(dir, 90) // updateSilicate() update_nearby_tiles(need_rebuild=1) - ini_dir = dir return @@ -272,7 +274,6 @@ dir = turn(dir, 270) // updateSilicate() update_nearby_tiles(need_rebuild=1) - ini_dir = dir return @@ -292,18 +293,19 @@ */ -/obj/structure/window/New(Loc,re=0) +/obj/structure/window/New(Loc, start_dir=null, constructed=0) ..() -// if(re) reinf = re - - ini_dir = dir + //player-constructed windows + if (constructed) + anchored = 0 + + if (start_dir) + dir = start_dir update_nearby_tiles(need_rebuild=1) update_nearby_icons() - return - /obj/structure/window/Del() density = 0 @@ -314,6 +316,7 @@ /obj/structure/window/Move() + var/ini_dir = dir update_nearby_tiles(need_rebuild=1) ..() dir = ini_dir @@ -412,6 +415,13 @@ health = 40 reinf = 1 +/obj/structure/window/New(Loc, constructed=0) + ..() + + //player-constructed windows + if (constructed) + state = 0 + /obj/structure/window/reinforced/tinted name = "tinted window" desc = "It looks rather strong and opaque. Might take a few good hits to shatter it." diff --git a/code/modules/mob/living/carbon/carbon.dm b/code/modules/mob/living/carbon/carbon.dm index c529cc9154d..03dd42b0310 100644 --- a/code/modules/mob/living/carbon/carbon.dm +++ b/code/modules/mob/living/carbon/carbon.dm @@ -515,7 +515,8 @@ if (!( AM.anchored )) var/t = get_dir(src, AM) if (istype(AM, /obj/structure/window)) - if(AM:ini_dir == NORTHWEST || AM:ini_dir == NORTHEAST || AM:ini_dir == SOUTHWEST || AM:ini_dir == SOUTHEAST) + var/obj/structure/window/W = AM + if(W.is_full_window()) for(var/obj/structure/window/win in get_step(AM,t)) now_pushing = 0 return diff --git a/code/modules/mob/living/carbon/metroid/metroid.dm b/code/modules/mob/living/carbon/metroid/metroid.dm index df9d22c5dc2..94dfb9688c8 100644 --- a/code/modules/mob/living/carbon/metroid/metroid.dm +++ b/code/modules/mob/living/carbon/metroid/metroid.dm @@ -147,7 +147,8 @@ if (!( AM.anchored )) var/t = get_dir(src, AM) if (istype(AM, /obj/structure/window)) - if(AM:ini_dir == NORTHWEST || AM:ini_dir == NORTHEAST || AM:ini_dir == SOUTHWEST || AM:ini_dir == SOUTHEAST) + var/obj/structure/window/W = AM + if(W.is_full_window()) for(var/obj/structure/window/win in get_step(AM,t)) now_pushing = 0 return diff --git a/code/modules/mob/living/living.dm b/code/modules/mob/living/living.dm index c1adb74feee..222d4511620 100644 --- a/code/modules/mob/living/living.dm +++ b/code/modules/mob/living/living.dm @@ -414,7 +414,8 @@ else if (pulling) if (istype(pulling, /obj/structure/window)) - if(pulling:ini_dir == NORTHWEST || pulling:ini_dir == NORTHEAST || pulling:ini_dir == SOUTHWEST || pulling:ini_dir == SOUTHEAST) + var/obj/structure/window/W = pulling + if(W.is_full_window()) for(var/obj/structure/window/win in get_step(pulling,get_dir(pulling.loc, T))) stop_pulling() if (pulling) diff --git a/code/modules/mob/living/silicon/robot/robot.dm b/code/modules/mob/living/silicon/robot/robot.dm index c0f813635f0..9fc052fde26 100644 --- a/code/modules/mob/living/silicon/robot/robot.dm +++ b/code/modules/mob/living/silicon/robot/robot.dm @@ -584,7 +584,8 @@ var/list/robot_verbs_default = list( if (!AM.anchored) var/t = get_dir(src, AM) if (istype(AM, /obj/structure/window)) - if(AM:ini_dir == NORTHWEST || AM:ini_dir == NORTHEAST || AM:ini_dir == SOUTHWEST || AM:ini_dir == SOUTHEAST) + var/obj/structure/window/W = AM + if(W.is_full_window()) for(var/obj/structure/window/win in get_step(AM,t)) now_pushing = 0 return diff --git a/code/modules/mob/living/silicon/robot/robot_modules.dm b/code/modules/mob/living/silicon/robot/robot_modules.dm index c22bc58c88a..7ff2e960490 100644 --- a/code/modules/mob/living/silicon/robot/robot_modules.dm +++ b/code/modules/mob/living/silicon/robot/robot_modules.dm @@ -167,7 +167,7 @@ stacktypes = list( /obj/item/stack/sheet/metal = 50, /obj/item/stack/sheet/plasteel = 10, - /obj/item/stack/sheet/rglass = 50, + /obj/item/stack/sheet/glass/reinforced = 50, /obj/item/stack/rods = 50 ) @@ -188,7 +188,7 @@ stacktypes = list( /obj/item/stack/sheet/metal = 50, /obj/item/stack/sheet/glass = 50, - /obj/item/stack/sheet/rglass = 50, + /obj/item/stack/sheet/glass/reinforced = 50, /obj/item/stack/cable_coil = 50, /obj/item/stack/rods = 15, /obj/item/stack/tile/plasteel = 15 @@ -217,7 +217,7 @@ M.amount = 50 src.modules += M - var/obj/item/stack/sheet/rglass/cyborg/R = new /obj/item/stack/sheet/rglass/cyborg(src) + var/obj/item/stack/sheet/glass/reinforced/cyborg/R = new (src) R.amount = 50 src.modules += R @@ -400,7 +400,7 @@ stacktypes = list( /obj/item/stack/sheet/wood = 1, /obj/item/stack/sheet/mineral/plastic = 1, - /obj/item/stack/sheet/rglass = 5, + /obj/item/stack/sheet/glass/reinforced = 5, /obj/item/stack/tile/wood = 5, /obj/item/stack/rods = 15, /obj/item/stack/tile/plasteel = 15, diff --git a/code/modules/mob/living/simple_animal/constructs.dm b/code/modules/mob/living/simple_animal/constructs.dm index d3aa156ea4b..3abf928244c 100644 --- a/code/modules/mob/living/simple_animal/constructs.dm +++ b/code/modules/mob/living/simple_animal/constructs.dm @@ -80,7 +80,8 @@ if (!( AM.anchored )) var/t = get_dir(src, AM) if (istype(AM, /obj/structure/window)) - if(AM:ini_dir == NORTHWEST || AM:ini_dir == NORTHEAST || AM:ini_dir == SOUTHWEST || AM:ini_dir == SOUTHEAST) + var/obj/structure/window/W = AM + if(W.is_full_window()) for(var/obj/structure/window/win in get_step(AM,t)) now_pushing = 0 return diff --git a/code/modules/mob/living/simple_animal/friendly/corgi.dm b/code/modules/mob/living/simple_animal/friendly/corgi.dm index 8c98daaa872..0cd46b7bc3c 100644 --- a/code/modules/mob/living/simple_animal/friendly/corgi.dm +++ b/code/modules/mob/living/simple_animal/friendly/corgi.dm @@ -351,7 +351,8 @@ if (!( AM.anchored )) var/t = get_dir(src, AM) if (istype(AM, /obj/structure/window)) - if(AM:ini_dir == NORTHWEST || AM:ini_dir == NORTHEAST || AM:ini_dir == SOUTHWEST || AM:ini_dir == SOUTHEAST) + var/obj/structure/window/W = AM + if(W.is_full_window()) for(var/obj/structure/window/win in get_step(AM,t)) now_pushing = 0 return diff --git a/code/modules/mob/living/simple_animal/friendly/slime.dm b/code/modules/mob/living/simple_animal/friendly/slime.dm index 2a1f9f43470..9674517a4ce 100644 --- a/code/modules/mob/living/simple_animal/friendly/slime.dm +++ b/code/modules/mob/living/simple_animal/friendly/slime.dm @@ -41,7 +41,8 @@ if (!( AM.anchored )) var/t = get_dir(src, AM) if (istype(AM, /obj/structure/window)) - if(AM:ini_dir == NORTHWEST || AM:ini_dir == NORTHEAST || AM:ini_dir == SOUTHWEST || AM:ini_dir == SOUTHEAST) + var/obj/structure/window/W = AM + if(W.is_full_window()) for(var/obj/structure/window/win in get_step(AM,t)) now_pushing = 0 return diff --git a/code/modules/power/solar.dm b/code/modules/power/solar.dm index afad2591b81..8091454024f 100644 --- a/code/modules/power/solar.dm +++ b/code/modules/power/solar.dm @@ -230,7 +230,7 @@ var/list/solars_list = list() playsound(src.loc, 'sound/items/Ratchet.ogg', 75, 1) return 1 - if(istype(W, /obj/item/stack/sheet/glass) || istype(W, /obj/item/stack/sheet/rglass)) + if(istype(W, /obj/item/stack/sheet/glass)) var/obj/item/stack/sheet/S = W if(S.use(2)) glass_type = W.type diff --git a/code/modules/research/xenoarchaeology/finds/finds.dm b/code/modules/research/xenoarchaeology/finds/finds.dm index 343e54a3bf3..4861a53ffc5 100644 --- a/code/modules/research/xenoarchaeology/finds/finds.dm +++ b/code/modules/research/xenoarchaeology/finds/finds.dm @@ -235,7 +235,7 @@ possible_spawns += /obj/item/stack/sheet/metal possible_spawns += /obj/item/stack/sheet/plasteel possible_spawns += /obj/item/stack/sheet/glass - possible_spawns += /obj/item/stack/sheet/rglass + possible_spawns += /obj/item/stack/sheet/glass/reinforced possible_spawns += /obj/item/stack/sheet/mineral/phoron possible_spawns += /obj/item/stack/sheet/mineral/gold possible_spawns += /obj/item/stack/sheet/mineral/silver diff --git a/code/unused/hivebot/hive_modules.dm b/code/unused/hivebot/hive_modules.dm index c0ae3196ca9..09a0207ec61 100644 --- a/code/unused/hivebot/hive_modules.dm +++ b/code/unused/hivebot/hive_modules.dm @@ -48,7 +48,7 @@ M.amount = 50 src.modules += M - var/obj/item/stack/sheet/rglass/G = new /obj/item/stack/sheet/rglass(src) + var/obj/item/stack/sheet/glass/reinforced/G = new (src) G.amount = 50 src.modules += G diff --git a/code/unused/mining/machine_craftlathe_unused.dm b/code/unused/mining/machine_craftlathe_unused.dm index 0607c14632f..564e3a1f715 100644 --- a/code/unused/mining/machine_craftlathe_unused.dm +++ b/code/unused/mining/machine_craftlathe_unused.dm @@ -170,7 +170,7 @@ proc/check_craftlathe_recipe(var/list/param_recipe) CRAFT_ITEMS += new/datum/craftlathe_item("METAL","Metal",1,1,list("","","","","","","","",""),/obj/item/stack/sheet/metal) CRAFT_ITEMS += new/datum/craftlathe_item("R METAL","Reinforced Metal",1,1,list("","","","","","","","",""),/obj/item/stack/sheet/r_metal) CRAFT_ITEMS += new/datum/craftlathe_item("GLASS","Glass",1,1,list("","","","","","","","",""),/obj/item/stack/sheet/glass) - CRAFT_ITEMS += new/datum/craftlathe_item("R GLASS","Reinforced Glass",1,1,list("","","","","","","","",""),/obj/item/stack/sheet/rglass) + CRAFT_ITEMS += new/datum/craftlathe_item("R GLASS","Reinforced Glass",1,1,list("","","","","","","","",""),/obj/item/stack/sheet/glass/reinforced) CRAFT_ITEMS += new/datum/craftlathe_item("GOLD","Gold",1,1,list("","","","","","","","",""),/obj/item/stack/sheet/mineral/gold) CRAFT_ITEMS += new/datum/craftlathe_item("SILVER","Silver",1,1,list("","","","","","","","",""),/obj/item/stack/sheet/mineral/silver) CRAFT_ITEMS += new/datum/craftlathe_item("DIAMOND","Diamond",1,1,list("","","","","","","","",""),/obj/item/stack/sheet/mineral/diamond) @@ -230,4 +230,4 @@ proc/check_craftlathe_recipe(var/list/param_recipe) - return \ No newline at end of file + return From 67b87a840dcd84946b025acb4e3dfe221fde211a Mon Sep 17 00:00:00 2001 From: mwerezak Date: Wed, 12 Nov 2014 20:10:40 -0500 Subject: [PATCH 02/27] Mapping changes for #6702 fix --- maps/tgstation2.dmm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/maps/tgstation2.dmm b/maps/tgstation2.dmm index eee2874b4cf..65d2725086a 100644 --- a/maps/tgstation2.dmm +++ b/maps/tgstation2.dmm @@ -3041,7 +3041,7 @@ "bgA" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plating,/area/quartermaster/office) "bgB" = (/obj/structure/stool/bed,/obj/item/weapon/bedsheet/rd,/obj/item/weapon/storage/secure/safe{pixel_x = 32},/obj/item/device/radio/intercom{name = "Station Intercom (General)"; pixel_y = 25},/turf/simulated/floor{icon_state = "yellowfull"; dir = 8},/area/crew_quarters/sleep/engi) "bgC" = (/turf/simulated/floor/wood,/area/bridge/meeting_room) -"bgD" = (/obj/machinery/light{icon_state = "tube1"; dir = 4},/obj/structure/table/reinforced,/obj/item/stack/sheet/rglass{amount = 50},/obj/item/stack/rods{amount = 50},/obj/structure/extinguisher_cabinet{pixel_x = 27; pixel_y = 0},/obj/machinery/camera{c_tag = "EVA East"; dir = 8},/turf/simulated/floor{dir = 4; icon_state = "warning"},/area/ai_monitored/storage/eva) +"bgD" = (/obj/machinery/light{icon_state = "tube1"; dir = 4},/obj/structure/table/reinforced,/obj/item/stack/sheet/glass/reinforced{amount = 50},/obj/item/stack/rods{amount = 50},/obj/structure/extinguisher_cabinet{pixel_x = 27; pixel_y = 0},/obj/machinery/camera{c_tag = "EVA East"; dir = 8},/turf/simulated/floor{dir = 4; icon_state = "warning"},/area/ai_monitored/storage/eva) "bgE" = (/obj/machinery/door/airlock{id_tag = "Dorm"; name = "Dorm"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/carpet{icon_state = "carpet8-0"},/area/crew_quarters/sleep/bedrooms) "bgF" = (/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced,/turf/simulated/floor/bluegrid,/area/turret_protected/ai) "bgG" = (/obj/machinery/atm{pixel_y = 28},/turf/simulated/floor,/area/hallway/primary/starboard) @@ -5068,7 +5068,7 @@ "bTz" = (/obj/machinery/alarm{dir = 1; icon_state = "alarm0"; pixel_y = -22},/obj/machinery/atmospherics/unary/vent_pump/on{dir = 1},/turf/simulated/floor{icon_state = "freezerfloor"},/area/crew_quarters/locker/locker_toilet) "bTA" = (/obj/item/weapon/screwdriver,/obj/effect/decal/cleanable/dirt,/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4; icon_state = "intact-supply"; tag = "icon-intact (EAST)"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor/plating,/area/maintenance/locker) "bTB" = (/turf/simulated/wall,/area/maintenance/incinerator) -"bTC" = (/obj/item/stack/sheet/rglass,/obj/effect/decal/cleanable/cobweb,/obj/effect/decal/cleanable/dirt,/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 6; icon_state = "intact-supply"; tag = "icon-intact (SOUTHWEST)"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 6},/turf/simulated/floor/plating,/area/maintenance/locker) +"bTC" = (/obj/item/stack/sheet/glass/reinforced,/obj/effect/decal/cleanable/cobweb,/obj/effect/decal/cleanable/dirt,/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 6; icon_state = "intact-supply"; tag = "icon-intact (SOUTHWEST)"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 6},/turf/simulated/floor/plating,/area/maintenance/locker) "bTD" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/obj/machinery/door/poddoor{density = 0; icon_state = "pdoor0"; id = "Biohazard"; name = "Biohazard Shutter"; opacity = 0},/obj/machinery/door/firedoor/border_only{dir = 2},/turf/simulated/floor/plating,/area/hallway/primary/starboard) "bTE" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/obj/machinery/door/poddoor{density = 0; icon_state = "pdoor0"; id = "Biohazard"; name = "Biohazard Shutter"; opacity = 0},/turf/simulated/floor/plating,/area/hallway/primary/starboard) "bTF" = (/obj/structure/table/reinforced,/obj/machinery/door/firedoor/border_only{dir = 1; name = "hazard door north"},/obj/item/weapon/paper_bin{pixel_x = -3; pixel_y = 7},/obj/item/weapon/pen,/obj/item/weapon/folder/white,/obj/machinery/door/poddoor{density = 0; icon_state = "pdoor0"; id = "Biohazard"; name = "Biohazard Shutter"; opacity = 0},/obj/machinery/door/window/eastright{base_state = "left"; dir = 2; icon_state = "left"; name = "Robotics Desk"; req_access_txt = "29"},/turf/simulated/floor/plating,/area/hallway/primary/starboard) From 1e29289986182e0916a4df43929d77beec56ccbe Mon Sep 17 00:00:00 2001 From: PsiOmega Date: Fri, 14 Nov 2014 14:06:20 +0100 Subject: [PATCH 03/27] Dedicated Service Server The service radio channel now has its own dedicated message log server on the telecommunication satellite. As a bonus the telecommunication equipment room is now symmetrical. --- code/game/machinery/telecomms/presets.dm | 11 +++-- maps/tgstation2.dmm | 53 +++++++++++------------- 2 files changed, 33 insertions(+), 31 deletions(-) diff --git a/code/game/machinery/telecomms/presets.dm b/code/game/machinery/telecomms/presets.dm index b4b9b077918..35c2ecdc1f5 100644 --- a/code/game/machinery/telecomms/presets.dm +++ b/code/game/machinery/telecomms/presets.dm @@ -40,7 +40,7 @@ id = "Hub" network = "tcommsat" autolinkers = list("hub", "relay", "c_relay", "s_relay", "m_relay", "r_relay", "science", "medical", - "supply", "common", "command", "engineering", "security", + "supply", "service", "common", "command", "engineering", "security", "receiverA", "receiverB", "broadcasterA", "broadcasterB") /obj/machinery/telecomms/hub/preset_cent @@ -95,7 +95,7 @@ id = "Bus 2" network = "tcommsat" freq_listening = list(SUP_FREQ, SRV_FREQ) - autolinkers = list("processor2", "supply") + autolinkers = list("processor2", "supply", "service") /obj/machinery/telecomms/bus/preset_three id = "Bus 3" @@ -167,8 +167,13 @@ /obj/machinery/telecomms/server/presets/supply id = "Supply Server" - freq_listening = list(SUP_FREQ, SRV_FREQ) + freq_listening = list(SUP_FREQ) autolinkers = list("supply") + +/obj/machinery/telecomms/server/presets/service + id = "Service Server" + freq_listening = list(SRV_FREQ) + autolinkers = list("service") /obj/machinery/telecomms/server/presets/common id = "Common Server" diff --git a/maps/tgstation2.dmm b/maps/tgstation2.dmm index c6e22fc1e37..c966d06f64c 100644 --- a/maps/tgstation2.dmm +++ b/maps/tgstation2.dmm @@ -822,7 +822,7 @@ "apP" = (/obj/machinery/light,/obj/machinery/atmospherics/unary/vent_pump/on{dir = 1},/turf/simulated/floor,/area/security/main) "apQ" = (/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/security/main) "apR" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/turf/simulated/floor/plating,/area/maintenance/dormitory) -"apS" = (/obj/machinery/atmospherics/pipe/simple/visible{tag = "icon-intact (SOUTHWEST)"; icon_state = "intact"; dir = 10},/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 1},/area/maintenance/dormitory) +"apS" = (/obj/machinery/atmospherics/pipe/simple/visible{tag = "icon-intact (SOUTHWEST)"; icon_state = "intact"; dir = 10},/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plating,/area/maintenance/dormitory) "apT" = (/obj/structure/table,/obj/item/ashtray/plastic,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor{icon_state = "floorgrime"},/area/security/prison) "apU" = (/obj/machinery/door/window/eastright{dir = 1; name = "Security Delivery"; req_access_txt = "1"},/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor{icon_state = "delivery"},/area/security/main) "apV" = (/obj/structure/table,/obj/machinery/vending/wallmed1{pixel_y = -32; req_access_txt = "0"},/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor,/area/security/prison) @@ -912,7 +912,7 @@ "arB" = (/turf/simulated/shuttle/wall{icon_state = "swall_s9"; dir = 2},/area/shuttle/escape_pod3/station) "arC" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plating,/area/maintenance/security_port) "arD" = (/obj/machinery/light,/obj/machinery/flasher/portable,/turf/simulated/floor{icon_state = "vault"; dir = 8},/area/security/warden) -"arE" = (/obj/machinery/atmospherics/pipe/manifold/visible{dir = 4},/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plating{dir = 2; icon_state = "warnplate"},/area/maintenance/dormitory) +"arE" = (/obj/machinery/atmospherics/pipe/manifold/visible{dir = 4},/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plating,/area/maintenance/dormitory) "arF" = (/obj/machinery/camera{c_tag = "Bar East"; network = list("SS13")},/obj/structure/flora/pottedplant{tag = "icon-plant-22"; icon_state = "plant-22"},/turf/simulated/floor/wood,/area/crew_quarters/bar) "arG" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/obj/structure/cable/green{d2 = 2; icon_state = "0-2"},/turf/simulated/floor/plating,/area/security/main) "arH" = (/turf/simulated/shuttle/wall{icon_state = "swall_s10"; dir = 2},/area/shuttle/escape_pod3/station) @@ -5937,14 +5937,14 @@ "cki" = (/obj/machinery/atmospherics/pipe/simple/visible/yellow{dir = 4},/turf/simulated/floor,/area/atmos) "ckj" = (/obj/structure/cable/green{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor,/area/engine/engine_monitoring) "ckk" = (/obj/machinery/door/airlock/external{frequency = 1380; icon_state = "door_locked"; id_tag = "research_dock_inner"; locked = 1; name = "Shuttle Airlock"; req_access_txt = "13"},/turf/simulated/floor{icon_state = "white"},/area/rnd/docking) -"ckl" = (/obj/machinery/atmospherics/pipe/simple/visible/yellow{dir = 6},/turf/simulated/floor/plating,/area/engine/engine_room) +"ckl" = (/obj/machinery/light{tag = "icon-tube1 (NORTH)"; icon_state = "tube1"; dir = 1},/turf/simulated/floor/plating,/area/engine/engine_room) "ckm" = (/turf/simulated/floor,/area/engine/engine_monitoring) "ckn" = (/obj/machinery/shower{icon_state = "shower"; dir = 8},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 4},/turf/simulated/floor,/area/engine/engine_airlock) "cko" = (/obj/machinery/light/small{dir = 4},/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"},/turf/simulated/floor/plating{dir = 2; icon_state = "warnplate"},/area/engine/engine_waste) "ckp" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 5},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 9},/turf/simulated/floor,/area/engine/engine_airlock) "ckq" = (/obj/machinery/door_control{desc = "A remote control-switch for the engine control room blast doors."; id = "EngineEmitterPortWest"; name = "Engine Room Blast Doors"; pixel_x = 0; pixel_y = 25; req_access_txt = "10"},/turf/simulated/floor/plating{dir = 1; icon_state = "warnplatecorner"},/area/engine/engine_room) "ckr" = (/obj/machinery/light{dir = 8; icon_state = "tube1"; pixel_y = 0},/obj/machinery/light_switch{pixel_x = -27; pixel_y = 0},/obj/machinery/airlock_sensor/airlock_exterior{id_tag = "eng_al_ext_snsr"; layer = 3.3; master_tag = "engine_room_airlock"; pixel_y = -22; req_access_txt = "10"},/obj/structure/table,/obj/item/weapon/book/manual/supermatter_engine,/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 8},/turf/simulated/floor,/area/engine/engine_airlock) -"cks" = (/obj/item/device/radio/intercom{name = "Station Intercom (General)"; pixel_y = 22},/obj/machinery/light{tag = "icon-tube1 (NORTH)"; icon_state = "tube1"; dir = 1},/turf/simulated/floor/plating,/area/engine/engine_room) +"cks" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/visible/cyan{dir = 4; icon_state = "intact"; tag = "icon-intact (EAST)"},/obj/item/device/radio/intercom{name = "Station Intercom (General)"; pixel_y = -29},/turf/simulated/floor/plating{dir = 2; icon_state = "warnplate"},/area/engine/engine_room) "ckt" = (/turf/simulated/floor{dir = 1; icon_state = "blue"},/area/medical/morgue) "cku" = (/obj/machinery/alarm{dir = 1; icon_state = "alarm0"; pixel_y = -22},/obj/machinery/atmospherics/unary/vent_scrubber/on{dir = 1},/turf/simulated/floor{icon_state = "white"},/area/medical/virology) "ckv" = (/obj/machinery/door/firedoor,/obj/machinery/door/airlock/medical{name = "Mental Health"; req_access_txt = "0"},/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{icon_state = "white"},/area/medical/medbay4) @@ -5970,7 +5970,7 @@ "ckP" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor{icon_state = "freezerfloor"},/area/medical/surgery2) "ckQ" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 9},/turf/simulated/floor{icon_state = "freezerfloor"},/area/medical/surgery2) "ckR" = (/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/wall,/area/quartermaster/office) -"ckS" = (/obj/machinery/atmospherics/pipe/simple/visible/yellow{dir = 4},/turf/simulated/floor/plating,/area/engine/engine_room) +"ckS" = (/obj/structure/cable{d2 = 8; icon_state = "0-8"},/obj/machinery/power/apc{dir = 4; name = "east bump"; pixel_x = 24},/obj/machinery/atmospherics/pipe/simple/hidden{dir = 10; icon_state = "intact"; tag = "icon-intact-f (SOUTHWEST)"},/turf/simulated/floor,/area/tcommsat/computer) "ckT" = (/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 10},/turf/simulated/floor{icon_state = "freezerfloor"},/area/medical/surgery2) "ckU" = (/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor{icon_state = "white"},/area/rnd/xenobiology) "ckV" = (/obj/item/device/radio/intercom{freerange = 0; frequency = 1459; name = "Station Intercom (General)"; pixel_x = 29},/turf/simulated/floor{icon_state = "white"},/area/rnd/xenobiology) @@ -6057,7 +6057,7 @@ "cmy" = (/obj/machinery/light{dir = 1},/obj/machinery/computer/centrifuge,/obj/item/weapon/storage/secure/safe{pixel_x = 5; pixel_y = 29},/turf/simulated/floor{icon_state = "white"},/area/medical/virology) "cmz" = (/obj/machinery/disposal,/obj/structure/disposalpipe/trunk,/obj/item/device/radio/intercom{broadcasting = 0; name = "Station Intercom (General)"; pixel_y = 26},/turf/simulated/floor{icon_state = "white"},/area/medical/virology) "cmA" = (/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor{icon_state = "freezerfloor"},/area/medical/surgery) -"cmB" = (/obj/machinery/atmospherics/pipe/simple/visible/yellow,/turf/simulated/floor/plating,/area/engine/engine_room) +"cmB" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 4},/obj/structure/cable{d2 = 8; icon_state = "0-8"},/obj/machinery/atmospherics/pipe/simple/hidden,/turf/simulated/floor/plating,/area/tcommsat/chamber) "cmC" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor,/area/medical/surgeryprep) "cmD" = (/obj/machinery/door/poddoor{density = 0; icon_state = "pdoor0"; id = "xenobio2"; name = "Containment Blast Doors"; opacity = 0},/obj/machinery/door/window/northleft{base_state = "right"; dir = 8; icon_state = "right"; name = "Containment Pen"; req_access_txt = "55"},/turf/simulated/floor/engine,/area/rnd/xenobiology) "cmE" = (/obj/machinery/door/window/northleft{dir = 4; name = "Containment Pen"; req_access_txt = "55"},/turf/simulated/floor{dir = 4; icon_state = "warning"},/area/rnd/xenobiology) @@ -6111,7 +6111,7 @@ "cnA" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/meter,/turf/simulated/floor/plating,/area/maintenance/research_port) "cnB" = (/obj/machinery/disposal,/obj/structure/disposalpipe/trunk{dir = 1},/obj/machinery/alarm{dir = 1; icon_state = "alarm0"; pixel_y = -22},/turf/simulated/floor{icon_state = "cafeteria"; dir = 5},/area/engine/break_room) "cnC" = (/obj/machinery/newscaster{pixel_x = 31; pixel_y = 3},/turf/simulated/floor{dir = 2; icon_state = "yellowcorner"},/area/hallway/primary/aft) -"cnD" = (/obj/machinery/atmospherics/pipe/simple/visible/yellow,/obj/machinery/atmospherics/pipe/simple/visible/cyan{dir = 4; icon_state = "intact"; tag = "icon-intact (EAST)"},/turf/simulated/floor/plating,/area/engine/engine_room) +"cnD" = (/obj/machinery/telecomms/relay/preset/station,/turf/simulated/floor/bluegrid{icon_state = "dark"; name = "Mainframe Floor"; nitrogen = 100; oxygen = 0; temperature = 80},/area/tcommsat/chamber) "cnE" = (/obj/machinery/atmospherics/pipe/manifold4w/visible/cyan,/turf/simulated/floor/plating,/area/engine/engine_room) "cnF" = (/obj/machinery/atmospherics/unary/vent_pump/on{dir = 4},/turf/simulated/floor,/area/engine/atmos_monitoring) "cnG" = (/obj/structure/window/reinforced{dir = 1},/obj/machinery/door/window/brigdoor{dir = 8; name = "Engine Waste"; req_access = null; req_access_txt = "0"; req_one_access_txt = "10;24"},/obj/machinery/atmospherics/portables_connector,/obj/machinery/portable_atmospherics/canister/empty/oxygen,/turf/simulated/floor/plating{icon_state = "platebot"; nitrogen = 0.01; oxygen = 0.01},/area/engine/engine_waste) @@ -8715,7 +8715,7 @@ "dlE" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor/plating{dir = 1; icon_state = "warnplate"; nitrogen = 0.01; oxygen = 0.01},/area/maintenance/research_port) "dlF" = (/obj/machinery/door/airlock/maintenance_hatch,/turf/simulated/wall,/area/constructionsite/hallway/aft) "dlG" = (/obj/machinery/door/airlock/highsecurity{icon_state = "door_closed"; locked = 0; name = "AI Upload Access"; req_access_txt = "16"},/turf/simulated/floor/plating/airless,/area/constructionsite/hallway/aft) -"dlH" = (/obj/machinery/atmospherics/tvalve/mirrored/digital{dir = 4},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plating{dir = 2; icon_state = "warnplate"},/area/engine/engine_room) +"dlH" = (/obj/machinery/atmospherics/pipe/simple/hidden{dir = 10; icon_state = "intact"; tag = "icon-intact-f (SOUTHWEST)"},/turf/simulated/floor/bluegrid{icon_state = "dark"; name = "Mainframe Floor"; nitrogen = 100; oxygen = 0; temperature = 80},/area/tcommsat/chamber) "dlI" = (/obj/effect/step_trigger/teleporter/random{affect_ghosts = 1; name = "escapeshuttle_leave"; teleport_x = 25; teleport_x_offset = 245; teleport_y = 25; teleport_y_offset = 245; teleport_z = 6; teleport_z_offset = 6},/turf/space/transit/east/shuttlespace_ew6,/area/space) "dlJ" = (/turf/space/transit/east/shuttlespace_ew7,/area/space) "dlK" = (/obj/machinery/access_button{command = "cycle_interior"; frequency = 1380; master_tag = "engineering_station_airlock"; name = "interior access button"; pixel_x = 30; pixel_y = -25; req_access_txt = "0"; req_one_access_txt = "13;32"},/obj/machinery/atmospherics/pipe/simple/hidden,/turf/simulated/floor{icon_state = "cafeteria"; dir = 5},/area/djstation) @@ -9063,7 +9063,7 @@ "dso" = (/turf/simulated/wall/r_wall,/area/research_outpost/sample) "dsp" = (/obj/machinery/vending/cigarette,/turf/unsimulated/floor{tag = "icon-cult"; name = "plating"; icon_state = "cult"},/area/syndicate_mothership) "dsq" = (/turf/simulated/floor{icon_state = "warning"},/area/research_outpost/maintstore1) -"dsr" = (/obj/machinery/telecomms/relay/preset/station,/obj/machinery/atmospherics/pipe/simple/hidden,/turf/simulated/floor/bluegrid{icon_state = "dark"; name = "Mainframe Floor"; nitrogen = 100; oxygen = 0; temperature = 80},/area/tcommsat/chamber) +"dsr" = (/obj/machinery/atmospherics/pipe/simple/hidden{dir = 5; icon_state = "intact"; tag = "icon-intact-f (NORTHEAST)"},/turf/simulated/floor/bluegrid{icon_state = "dark"; name = "Mainframe Floor"; nitrogen = 100; oxygen = 0; temperature = 80},/area/tcommsat/chamber) "dss" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor{dir = 1; icon_state = "warning"},/area/tcommsat/entrance) "dst" = (/obj/structure/rack,/obj/item/clothing/shoes/magboots,/obj/item/clothing/suit/space/syndicate/black/blue,/obj/item/clothing/mask/breath,/obj/item/clothing/head/helmet/space/syndicate/black/blue,/turf/unsimulated/floor{icon_state = "dark"},/area/syndicate_mothership) "dsu" = (/obj/structure/rack,/obj/item/clothing/shoes/magboots,/obj/item/clothing/suit/space/syndicate/black/engie,/obj/item/clothing/mask/breath,/obj/item/clothing/head/helmet/space/syndicate/black/engie,/turf/unsimulated/floor{icon_state = "dark"},/area/syndicate_mothership) @@ -10488,7 +10488,6 @@ "dTJ" = (/obj/machinery/alarm{frequency = 1441; pixel_y = 22},/obj/machinery/atmospherics/unary/vent_scrubber/on{dir = 8},/turf/simulated/floor{icon_state = "white"},/area/research_outpost/sample) "dTK" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/obj/machinery/door/firedoor/border_only{dir = 2},/obj/machinery/atmospherics/pipe/simple/visible/purple,/turf/simulated/floor/plating,/area/research_outpost/atmos) "dTL" = (/obj/structure/disposaloutlet{dir = 4},/obj/structure/disposalpipe/trunk{dir = 8},/turf/simulated/floor/plating/airless,/area/space) -"dTM" = (/obj/structure/cable{d2 = 8; icon_state = "0-8"},/obj/machinery/atmospherics/pipe/simple/hidden{dir = 10; icon_state = "intact"; tag = "icon-intact-f (SOUTHWEST)"},/obj/machinery/power/apc{dir = 4; name = "east bump"; pixel_x = 24},/turf/simulated/floor,/area/tcommsat/computer) "dTN" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/obj/machinery/atmospherics/pipe/simple/hidden{dir = 4; icon_state = "intact"; tag = "icon-intact-f (EAST)"},/turf/simulated/floor,/area/tcommsat/computer) "dTO" = (/obj/structure/window/shuttle,/obj/structure/grille,/turf/simulated/shuttle/plating,/area/centcom/evac) "dTP" = (/obj/structure/extinguisher_cabinet{pixel_x = 0; pixel_y = -30},/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor,/area/hallway/primary/starboard) @@ -10523,7 +10522,6 @@ "dUs" = (/obj/machinery/door/firedoor/border_only{dir = 4; name = "Firelock"},/obj/machinery/door/airlock{id_tag = "rbath"; name = "Bathroom"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor{icon_state = "showroomfloor"},/area/research_outpost/hallway) "dUt" = (/obj/structure/cable,/obj/machinery/power/apc{dir = 2; name = "south bump"; pixel_y = -24},/turf/simulated/floor,/area/mine/eva) "dUu" = (/obj/machinery/camera{c_tag = "Mech Bay"; dir = 4},/obj/item/device/radio/intercom{dir = 8; name = "Station Intercom (General)"; pixel_x = -28},/turf/simulated/floor,/area/assembly/chargebay) -"dUv" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 4},/obj/structure/cable{d2 = 8; icon_state = "0-8"},/obj/machinery/atmospherics/pipe/simple/hidden{dir = 5; icon_state = "intact"; tag = "icon-intact-f (NORTHEAST)"},/turf/simulated/floor/plating,/area/tcommsat/chamber) "dUw" = (/obj/structure/morgue{tag = "icon-morgue1 (WEST)"; icon_state = "morgue1"; dir = 8},/turf/simulated/floor{icon_state = "blue"; dir = 6},/area/medical/morgue) "dUx" = (/obj/machinery/door_control{id = "rbath"; name = "Door Bolt Control"; normaldoorcontrol = 1; pixel_x = 0; pixel_y = -25; req_access_txt = "0"; specialfunctions = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 5},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor{icon_state = "showroomfloor"},/area/research_outpost/hallway) "dUy" = (/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor{icon_state = "cafeteria"; dir = 2},/area/research_outpost/hallway) @@ -10554,7 +10552,6 @@ "dUX" = (/obj/structure/table,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/obj/item/weapon/storage/box/cups,/obj/item/weapon/storage/box/cups{pixel_x = 2; pixel_y = 5},/turf/simulated/floor{dir = 9; icon_state = "blue"},/area/medical/reception) "dUY" = (/obj/structure/table,/obj/machinery/door/window/northright{name = "Medbay Lobby"; req_access_txt = "5"},/obj/item/weapon/reagent_containers/spray/cleaner{pixel_x = -5},/turf/simulated/floor{dir = 1; icon_state = "blue"},/area/medical/reception) "dUZ" = (/obj/machinery/door/airlock/glass{name = "Central Access"},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor,/area/hallway/primary/central_two) -"dVa" = (/obj/structure/sign/securearea{desc = "A warning sign which reads 'SERVER ROOM'."; name = "SERVER ROOM"; pixel_y = 0},/obj/machinery/atmospherics/pipe/simple/hidden{dir = 10; icon_state = "intact"; tag = "icon-intact-f (SOUTHWEST)"},/turf/simulated/wall/r_wall,/area/tcommsat/chamber) "dVb" = (/obj/machinery/meter,/obj/machinery/light/small,/obj/machinery/atmospherics/pipe/simple/visible/cyan{dir = 4; icon_state = "intact"; tag = "icon-intact (EAST)"},/turf/simulated/floor/plating,/area/research_outpost/atmos) "dVc" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0},/obj/machinery/door/firedoor/border_only{dir = 4; name = "Firelock"},/obj/machinery/door/airlock/research{name = "Spectrometry Lab"; req_access_txt = "65"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor{icon_state = "white"},/area/research_outpost/spectro) "dVd" = (/obj/machinery/atmospherics/pipe/simple/visible/purple{dir = 5},/turf/simulated/floor/plating,/area/research_outpost/atmos) @@ -11016,7 +11013,6 @@ "edR" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 9},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 5},/obj/structure/cable/cyan{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plating,/area/engine/engine_room) "edS" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor/plating,/area/engine/engine_room) "edT" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/cable/yellow{d1 = 2; d2 = 4; icon_state = "2-4"},/obj/structure/cable/yellow{d1 = 2; d2 = 8; icon_state = "2-8"},/turf/simulated/floor/airless/catwalk{icon_state = "catwalk3"},/area/solar/port) -"edU" = (/obj/machinery/atmospherics/pipe/simple/visible/yellow,/obj/machinery/meter{frequency = 1443; id = "engine_cooling"; name = "Engine Cooling"},/turf/simulated/floor/plating,/area/engine/engine_room) "edV" = (/obj/machinery/atmospherics/pipe/manifold/visible/cyan{dir = 8},/turf/simulated/floor/plating,/area/engine/engine_room) "edW" = (/obj/machinery/atmospherics/unary/outlet_injector{dir = 4; icon_state = "map_injector"; on = 1},/obj/structure/window/reinforced/tinted{dir = 4; health = 1000; icon_state = "twindow"; name = "hardened window"; opacity = 0},/turf/simulated/floor/engine{name = "Outpost O2"; nitrogen = 0; oxygen = 5000},/area/research_outpost/atmos) "edX" = (/obj/machinery/atmospherics/unary/outlet_injector{dir = 8; icon_state = "map_injector"; on = 1},/obj/structure/window/reinforced/tinted{dir = 8; health = 1000; icon_state = "twindow"; name = "hardened window"; opacity = 0},/turf/simulated/floor/engine{name = "Outpost N2"; nitrogen = 20000; oxygen = 0},/area/research_outpost/atmos) @@ -11261,6 +11257,7 @@ "eiC" = (/obj/machinery/power/emitter,/turf/unsimulated/floor{icon_state = "vault"; dir = 1},/area/centcom) "eiD" = (/obj/structure/table/reinforced,/obj/item/weapon/circuitboard/aiupload,/obj/item/weapon/circuitboard/borgupload,/obj/item/weapon/circuitboard/smes,/obj/item/weapon/aiModule/nanotrasen,/obj/item/weapon/aiModule/reset,/obj/item/weapon/aiModule/freeformcore,/obj/item/weapon/aiModule/protectStation,/obj/item/weapon/aiModule/quarantine,/obj/item/weapon/aiModule/paladin,/obj/item/weapon/aiModule/robocop,/obj/item/weapon/aiModule/safeguard,/turf/unsimulated/floor{icon_state = "vault"; dir = 1},/area/centcom) "eiE" = (/obj/machinery/recharger/wallcharger{pixel_x = 4; pixel_y = 32},/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/shuttle/specops/centcom) +"eiF" = (/obj/machinery/telecomms/server/presets/service,/turf/simulated/floor{dir = 1; icon_state = "vault"; name = "Mainframe floor"; nitrogen = 100; oxygen = 0; temperature = 80},/area/tcommsat/chamber) (1,1,1) = {" aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa @@ -11450,11 +11447,11 @@ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaactvctvctvctvctvctvctvctvctvctvctvctvctvctvctvaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamaaaaaaaaeaaeaaaaaaaaaaaaaaaaaaaaaaaeaaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabYmbYQbXTbYNbXZcigbXRbYKcrjccoccjedBbYredCccicchccgbYvbYrccfedGedEbYoaaLcVGcVGcVGcVGcVGcVGcVGbmvcbZcbYccaaaeaaaaaaaaeedHciXaaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabYCciGciGciGciGciGbYCaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaciHaaaaaeaaaciHaaaaaaaaaaaaaaaaaacmdcmdcmdcmdcmdcmdcmdcmdcmdcmdcmdcmdcmdcmdcmdcmdcmdcmdcmdcmdcmdaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaactvctvctvctvctvctvctvctvctvctvctvctvctvctvctvaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaaaaaaaaaaaaaaaaaaaamaaaaaeaaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaaaaaaaaaaaacjgaaaaaaaaaaaaaaaaaaaaaaaabZbbZdbZfbZmdYLccAccvbYKcrjccwccxccycczcjjccGccFccHcjwbYrcjAedIcjBbYoaaacVGcVGcVGcVGcVGcVGcVGedKccsccpbmvaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabVubYXbYRbYRbYRbYTbVuaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaciHciHciHciHciHaaaaaaaaaaaaaaaaaacmdcmdcmdcmdcmdcmdcmdcmdcmdcmdcmdcmdcmdcmdcmdcmdcmdcmdcmdcmdcmdaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaactvctvctvctvctvctvctvctvctvctvctvctvctvctvctvaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamaaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaaaaaaaaaaaaaaaaaaaaeaaaaaaaaaaaaaaaaaaaaacfRcfRcfRcfRcfRcjSbZjbZjbZjbZjedLbZjccUccMccPccMccLbZjbZjbZnbZjbZjbZjcVGcVGcVGcVGcVGcVGcVGaaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacmdcmdcmdcmdaaaaaacmdcmdcmdcmdcmdcmdcmdaaaaaacmdcmdcmdcmdaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaactvctvctvctvctvctvctvctvctvctvctvctvctvctvctvctvctvaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaAaaaaaaaaeaaeaaaaaeaaeaaaaaaaaeaaeaaeaaaaaaaaaaaaaaaaaaaaaaaacjYcaacaacaaclQclMclRclzclVcjZckoctkckqcksccXcdbcdecyUcCucBEcCucCucBocklckSckWbZEbZjcVGcVGcVGcVGcVGcVGcVGaaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacmdcmdcmdcmdcmdcmdcmdaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaactvctvctvctvctvctvctvctvctvctvctvctvctvctvctvctvctvaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamaaacdzedMcdwaaacdzedMcdwaaacdzedMcdwaaeaaeaaaaaaaaaaaaaaeaaecmpcaacaacaaclQclMcmucmtcmWclAcnGcnrcyXbZCcdvcPScdtedNedSedRcdpcdpcdocmBbZHclkbZLbZjcVGcVGcVGcVGcVGcVGcVGaaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaaaaaaaaaaaaaaaaaaaaaaaacmdcmdcmdcmdcmdcmdcmdaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaactvctvctvctvctvctvctvctvctvctvctvctvctvctvctvctvctvaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamaaacdzedTcdwaaacdzedTcdwaaacdzedTcdwaaeaaeaaeaaeaaaaaacmnaaacjYcaacaacaaclQclMcolcoecRicotcRJcRIcSfcagcdBdyNcagefhcmGcEGcmObZCbZCedUedVcmPcmQbZjeeaaaeaaDaaeaaeaaeaaeaaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacmdcmdcmdcmdcmdcmdcmdaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaactvctvctvctvctvctvctvctvctvctvctvctvctvctvctvctvctvaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaDaaecdzedTcdwaaacdzedTcdwaaecdzedTcdwaaeaaaaaaaaeaaecdEaaaaaacmpcaacaacaaclQclMeflefkefnefmefocRIcSfcagcdBefpefrefqefscEJeftcascascnDcnEcmPcQNbZjaaaaaaaaDaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacmdcmdcmdcmdcmdcmdcmdaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaactvctvctvctvctvctvctvctvctvctvctvctvctvctvctvctvctvaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaaacdzedTcdwaaecdzedTcdwaaacdzedTcdwaaaaaaaaaaaaaaeaaeaaaaaaaaaaaaaaaaaaaaecjVclzefucSJefvefwctkcPDbZCdmsdmndmfdlWdlhdlidlbdlcdlxdlHdlqcmPcRDbZjaaaaaaaaDaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacmdcmdcmdcmdcmdcmdcmdaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaactvctvctvctvctvctvctvctvctvctvctvctvctvctvctvctvctvaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaAaaaaaaaaeaaeaaaaaeaaeaaaaaaaaeaaeaaeaaaaaaaaaaaaaaaaaaaaaaaacjYcaacaacaaclQclMclRclzclVcjZckoctkckqcklccXcdbcdecyUcCucBEcCucCucBobZCbZHckWbZEbZjcVGcVGcVGcVGcVGcVGcVGaaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacmdcmdcmdcmdcmdcmdcmdaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaactvctvctvctvctvctvctvctvctvctvctvctvctvctvctvctvctvaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamaaacdzedMcdwaaacdzedMcdwaaacdzedMcdwaaeaaeaaaaaaaaaaaaaaeaaecmpcaacaacaaclQclMcmucmtcmWclAcnGcnrcyXbZCcdvcPScdtedNedSedRcdpcdpcdobZCedVclkbZLbZjcVGcVGcVGcVGcVGcVGcVGaaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaaaaaaaaaaaaaaaaaaaaaaaacmdcmdcmdcmdcmdcmdcmdaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaactvctvctvctvctvctvctvctvctvctvctvctvctvctvctvctvctvaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamaaacdzedTcdwaaacdzedTcdwaaacdzedTcdwaaeaaeaaeaaeaaaaaacmnaaacjYcaacaacaaclQclMcolcoecRicotcRJcRIcSfcagcdBdyNcagefhcmGcEGcmObZCbZCbZCedVcmPcmQbZjeeaaaeaaDaaeaaeaaeaaeaaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacmdcmdcmdcmdcmdcmdcmdaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaactvctvctvctvctvctvctvctvctvctvctvctvctvctvctvctvctvaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaDaaecdzedTcdwaaacdzedTcdwaaecdzedTcdwaaeaaaaaaaaeaaecdEaaaaaacmpcaacaacaaclQclMeflefkefnefmefocRIcSfcagcdBefpefrefqefscEJeftcascascascnEcmPcQNbZjaaaaaaaaDaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacmdcmdcmdcmdcmdcmdcmdaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaactvctvctvctvctvctvctvctvctvctvctvctvctvctvctvctvctvaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaaacdzedTcdwaaecdzedTcdwaaacdzedTcdwaaaaaaaaaaaaaaeaaeaaaaaaaaaaaaaaaaaaaaecjVclzefucSJefvefwctkcPDbZCdmsdmndmfdlWdlhdlidlbdlcdlxcksdlqcmPcRDbZjaaaaaaaaDaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacmdcmdcmdcmdcmdcmdcmdaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaactvctvctvctvctvctvctvctvctvctvctvctvctvctvctvctvctvaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamaamaaDaaeaaacdzedTcdwaaecdzedTcdwaaacdzedTcdwaaeaaaaaaaaaaaaaaeaaecjMcjNcjNcjNcjNcOGcOGcOGcOGcOGcOxcOGbZjbZCbZCdkRbZjbZjbZjcPacPWcQHbZjbZjbZjdkVcRccPSbZjaaeaaabCVaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacmdcmdcmdcmdcmdaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaactvctvctvctvctvctvctvctvctvctvctvctvctvctvctvctvctvaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamaaaaaeaaaaaeaaeeedaaeaaeaaeeedaaeaaaaaeeedaaeaaaaaaaaaaaaaaackBckCckDeeedktdjecPqeegdgEdigdicdihdpKdicbZjcOWbZCdhrdhidhmcIGcLCcLDcLBcIGdhhdhidhybZCcFabZjaaaaaaaaDaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaactvctvctvctvctvctvctvctvctvctvctvctvctvctvctvctvctvaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaDaaeeejeeheeleekeemeekeekeekeemeekeekeekeemeekeeoeeheeheeheepdideeqdhNeerdhGdhsclEeesdyKdyKdyKdyMefyefzbZjbZCbZCdhrdhidhmcwIcyWcKrcKQcwIdhhdhidhybZCcyhbZjaaaaaaaaDaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa @@ -11896,17 +11893,17 @@ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaciHaalcYWcYYcYYcYYcZndpGdpFcZqdpHcZscZtcYXcZmcZudnScZwcZmcZxcYXdEHcYXcZzcZmcZmcZmcZmcZmcYXaalaalciHaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaciHaalcYWcYZcYYcYZcZAdqhdqfdqecZDcZEcZFcYXcZGcZmcZHcZmcZmdbRcYXdEHcYXcZJcZmcZmcZmcZmcZmcYXaalaalaaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaciHaalcYWcYZcYYcYZcYZdqddqcdpRcZNcZOcZPdpVdpSdpZcZmcZmcZTdbucYXdELcYXdpQdbydbpcZYcZZdaacYXaalaalciHaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaciHaalcYWcYZcYYcYZcZAdcPdtMdqydqxdqxdqxdqtdqsdUgdUadTNdTMdaldaldalcYXdamdqmdqndaodapdaqdardTQdTQdTZdTIdTLaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaciHaalcYWcYZcYYcYZcZAdcPdtMdqydqxdqxdqxdqtdqsdUgdUadTNckSdaldaldalcYXdamdqmdqndaodapdaqdardTQdTQdTZdTIdTLaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaciHciHciHciHciHciHciHciHciHbCVciHciHciHciHciHciHciHciHciHciHciHaalcYWcYZcYYcYZcZAdcndawdaxdaydaydaycYXdcmdTHdaBcZmdbTdaDdaEdalcYXcYXcYXdqlcYXcYXcYXcYXaalaalciHciHciHciHciHciHciHciHciHciHciHciHciHciHciHciHciHbCVciHciHciHciHaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaciHaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeciHaalcYWcYYeeYcYYdaIdcncZtdaldaldaldaldalddjdaKddgdaKdUvdVadaOdaPdaldaldaIdqIdaScYYeeYcYYcYWaalciHciHciHaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaciHaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaciHaaedUodUodUodUodUodUodUodUodUodUodUodUodUodUodUodUoaaaaaaciHaalcYWcYZcYYcYZcZAdcTdcSdaldaVdaVdaVdgUdcUdaYdaZdaVdaVddbdbbdaVdaVdaldaIdqIcZFcYZcYYcYZcYWaalciHciHaaaaaedUodUodUodUodUodUodUodUodUodUodUodUodUodUodUodUoaaaciHaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaciHaaaaaLaaLaaLaaLaaLaaLaaLaaLaaLaaLaaLaaLaaLaaLaaLaaLaaLaaaciHaalcYWcYZcYYcYZcZAdqQddHdaldaVdbbdbbdbbddBdbbdbfdbbdbbddBdbbdbbdaVdaldaIdqIcZFdqSdcrdcscYWaalaalciHaaeaaLaaLaaLaaLaaLaaLaaLaaLaaLaaLaaLaaLaaLaaLaaLaaLaaLaaeciHaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaciHaaadUodUodUodUodUodUodUodUodUodUodUodUodUodUodUodUoaaLaaaciHaalcYWcYZcYYcYZcZAddwddrdaldaVdbldbbdbbddBdbbdbmdbbdbbddBdbndbodaVdaldqPdqKcZFdcgdbqdqOdbscYWaalciHaaaaaLdUodUodUodUodUodUodUodUodUodUodUodUodUodUodUodUoaaaciHaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaciHaaaaaaaaaaaaaaaaaaaaeaaaaaaaaaaaaaaeaaaaaaaaaaaaaaaaaLdVxciHaalcYWcYZcYYcYZcZAdqIdbvdaldaVdbbdbbdbbddBdbwdbmdbxdbbddBdbbdbbdaVdaldsRdrOdbAdrSdbCdrFdbEcYWaalciHdVEaaLaaaaaaaaaaaaaaaaaeaaaaaaaaaaaaaaeaaaaaaaaaaaaaaaaaaciHaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaciHaaaaaaaaaaaaaaaaaaaaeaaaaaaaaaaaaaaeaaaaaaaaaaaaaaaaaLdVodVvaalcYWcYYcYYcYYdaIdcndbHdaldbIdbJdbKdbLddbdaVdbMdaVdaVdsrdbOdbPdbQdaldradsNdtMefdeeZdrbdbVcYWaaldVvdVoaaLaaaaaaaaaaaaaaaaaeaaaaaaaaaaaaaaeaaaaaaaaaaaaaaaaaaciHaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaciHaaaaaaaaaaaaaaaaaaaaeaaaaaaaaaaaaaaeaaaaaaaaaaaaaaaaaLaaaciHaalcYWcYZcYYcYZcZAdcncZFdaldaVdbWdbXdbbddBdbYdbmdbZdbbddBdcadcbdaVdalcZAdqIdccdcddbDdcedcfcYWaalciHaaaaaLaaaaaaaaaaaaaaaaaeaaaaaaaaaaaaaaeaaaaaaaaaaaaaaaaaaciHaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaciHaaadUodUodUodUodUodUodUodUodUodUodUodUodUodUodUodUoaaLaaaciHaalcYWcYZcYYcYZcZAdqIcZFdaldaVdbbdbbdbbddBdbbdbmdbbdbbddBdbbdbbdaVdalcZAdqIcZFdcgdchdcidcjcYWaalciHaaaaaLdUodUodUodUodUodUodUodUodUodUodUodUodUodUodUodUoaaaciHaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaciHaaaaaLaaLaaLaaLaaLaaLaaLaaLaaLaaLaaLaaLaaLaaLaaLaaLaaLaaaciHaalcYWcYZcYYcYZcZAdcncZFdaldaVdckdclduIdWHdbbdbfdbbdbbddBdcodcpdaVdalcZAdqIcZFdcqdcrdcscYWaalaalciHaaeaaLaaLaaLaaLaaLaaLaaLaaLaaLaaLaaLaaLaaLaaLaaLaaLaaLaaeciHaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaciHaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeciHaalcYWcYYeeYcYYdaIdcncZtdaldaldaldaldalddjdaKddgdaKcmBdaPdaOdaPdaldaldaIdqIdaScYYeeYcYYcYWaalciHciHciHaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaciHaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaciHaaedUodUodUodUodUodUodUodUodUodUodUodUodUodUodUodUoaaaaaaciHaalcYWcYZcYYcYZcZAdcTdcSdaldaVdaVdaVdgUdcUdaYdaZdaVddbdaVdbbdaVdaVdaldaIdqIcZFcYZcYYcYZcYWaalciHciHaaaaaedUodUodUodUodUodUodUodUodUodUodUodUodUodUodUodUoaaaciHaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaciHaaaaaLaaLaaLaaLaaLaaLaaLaaLaaLaaLaaLaaLaaLaaLaaLaaLaaLaaaciHaalcYWcYZcYYcYZcZAdqQddHdaldaVdbbdbbdbbddBdbbdbfdbbddBdbbdbbdbbdaVdaldaIdqIcZFdqSdcrdcscYWaalaalciHaaeaaLaaLaaLaaLaaLaaLaaLaaLaaLaaLaaLaaLaaLaaLaaLaaLaaLaaeciHaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaciHaaadUodUodUodUodUodUodUodUodUodUodUodUodUodUodUodUoaaLaaaciHaalcYWcYZcYYcYZcZAddwddrdaldaVdbleiFdbbddBdbbdbmdbbddBdbbdbndbodaVdaldqPdqKcZFdcgdbqdqOdbscYWaalciHaaaaaLdUodUodUodUodUodUodUodUodUodUodUodUodUodUodUodUoaaaciHaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaciHaaaaaaaaaaaaaaaaaaaaeaaaaaaaaaaaaaaeaaaaaaaaaaaaaaaaaLdVxciHaalcYWcYZcYYcYZcZAdqIdbvdaldaVdbbdbbdbbddBdbwdbmdbxddBdbbdbbdbbdaVdaldsRdrOdbAdrSdbCdrFdbEcYWaalciHdVEaaLaaaaaaaaaaaaaaaaaeaaaaaaaaaaaaaaeaaaaaaaaaaaaaaaaaaciHaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaciHaaaaaaaaaaaaaaaaaaaaeaaaaaaaaaaaaaaeaaaaaaaaaaaaaaaaaLdVodVvaalcYWcYYcYYcYYdaIdcndbHdaldbIdbJdbKdbLddbdaVdbMdaVddbcnDdbPdbOdbQdaldradsNdtMefdeeZdrbdbVcYWaaldVvdVoaaLaaaaaaaaaaaaaaaaaeaaaaaaaaaaaaaaeaaaaaaaaaaaaaaaaaaciHaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaciHaaaaaaaaaaaaaaaaaaaaeaaaaaaaaaaaaaaeaaaaaaaaaaaaaaaaaLaaaciHaalcYWcYZcYYcYZcZAdcncZFdaldaVdbWdbXdbbddBdbYdbmdbZddBdbbdcbdcadaVdalcZAdqIdccdcddbDdcedcfcYWaalciHaaaaaLaaaaaaaaaaaaaaaaaeaaaaaaaaaaaaaaeaaaaaaaaaaaaaaaaaaciHaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaciHaaadUodUodUodUodUodUodUodUodUodUodUodUodUodUodUodUoaaLaaaciHaalcYWcYZcYYcYZcZAdqIcZFdaldaVdbbdbbdbbddBdbbdbmdbbddBdbbdbbdbbdaVdalcZAdqIcZFdcgdchdcidcjcYWaalciHaaaaaLdUodUodUodUodUodUodUodUodUodUodUodUodUodUodUodUoaaaciHaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaciHaaaaaLaaLaaLaaLaaLaaLaaLaaLaaLaaLaaLaaLaaLaaLaaLaaLaaLaaaciHaalcYWcYZcYYcYZcZAdcncZFdaldaVdckdclduIdWHdbbdbfdbbdsrdlHdcodcpdaVdalcZAdqIcZFdcqdcrdcscYWaalaalciHaaeaaLaaLaaLaaLaaLaaLaaLaaLaaLaaLaaLaaLaaLaaLaaLaaLaaLaaeciHaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaciHaaedUodUodUodUodUodUodUodUodUodUodUodUodUodUodUodUoaaaaaaciHaalcYWcYZcYYcYZcZAdcncZFdaldaVdaVdaVdWCdaVdaVdcudaVdaVdWGdaVdaVdaVdalcZAdqIcZFcYZcYYcYZcYWaalciHciHaaaaaedUodUodUodUodUodUodUodUodUodUodUodUodUodUodUodUoaaaciHaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaciHaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaciHciHaalcYWcYYeeYcYYdaIdqIcZtdaldaldaldaldaldaldaldcwdaldaldaldaldaldaldaldaIdqIcZtcYYeeYcYYcYWaalciHciHciHaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaciHaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaciHciHciHciHciHciHciHciHciHciHciHciHbCVciHciHciHciHciHciHciHciHaalcYWcYZcYYcYZcZAdqIdcydczcZPcZPdcAeffdjCdsWefedthdtmefxdcAcZPcZPdcIdcJdqIcZFcYZcYYcYZcYWaalciHciHciHciHciHciHciHbCVciHciHciHciHciHciHciHciHciHciHbCVciHciHciHaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa From ae274de2750b73a99daf4ad460ce1e247a8682d2 Mon Sep 17 00:00:00 2001 From: PsiOmega Date: Sat, 15 Nov 2014 20:10:53 +0100 Subject: [PATCH 04/27] Security Records Check When machinery checks security records they now only check for explicitly set arrest status. Previously they would check for either missing security records or arrest status. --- code/defines/procs/records.dm | 3 +++ code/game/machinery/machinery.dm | 4 ++-- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/code/defines/procs/records.dm b/code/defines/procs/records.dm index 3bf23c59417..4e9fbcc9afc 100644 --- a/code/defines/procs/records.dm +++ b/code/defines/procs/records.dm @@ -39,6 +39,9 @@ data_core.security += R return R +/proc/find_security_record(field, value) + return find_record(field, value, data_core.security) + /proc/find_record(field, value, list/L) for(var/datum/data/record/R in L) if(R.fields[field] == value) diff --git a/code/game/machinery/machinery.dm b/code/game/machinery/machinery.dm index 1d9a9aecda2..c568372c8b9 100644 --- a/code/game/machinery/machinery.dm +++ b/code/game/machinery/machinery.dm @@ -345,8 +345,8 @@ Class Procs: if(id) perpname = id.registered_name - var/datum/data/record/R = find_record("name", perpname, data_core.security) - if(!R || (R.fields["criminal"] == "*Arrest*")) + var/datum/data/record/R = find_security_record("name", perpname) + if(R && (R.fields["criminal"] == "*Arrest*")) threatcount += 4 return threatcount From 33a9e26893919b6dbc91f3ca4e87034606eb2fd8 Mon Sep 17 00:00:00 2001 From: Raptor1628 Date: Sat, 15 Nov 2014 19:23:53 -0500 Subject: [PATCH 05/27] ERT Fixes Resets the turrets so they won't shoot the poor ERT if they take off their IDs, adds a large beaker for the medmaster, adjusts the shuttle so it doesn't float out of the dock. --- maps/tgstation2.dmm | 48 ++++++++++++++++++++++----------------------- 1 file changed, 23 insertions(+), 25 deletions(-) diff --git a/maps/tgstation2.dmm b/maps/tgstation2.dmm index c42d495cec2..01142a3e2bf 100644 --- a/maps/tgstation2.dmm +++ b/maps/tgstation2.dmm @@ -7344,7 +7344,7 @@ "cLl" = (/obj/structure/stool/bed/chair{dir = 4},/turf/unsimulated/floor{icon_state = "carpet"; dir = 2},/area/centcom/control) "cLm" = (/obj/structure/table/woodentable,/turf/unsimulated/floor{icon_state = "carpet"; dir = 2},/area/centcom/control) "cLn" = (/obj/effect/landmark{name = "Marauder Exit"},/turf/unsimulated/floor{name = "plating"},/area/centcom) -"cLo" = (/obj/machinery/porta_turret,/turf/unsimulated/floor{icon_state = "vault"; dir = 1},/area/centcom) +"cLo" = (/obj/machinery/porta_turret{check_records = 0; on = 0},/turf/unsimulated/floor{icon_state = "vault"; dir = 1},/area/centcom) "cLp" = (/obj/structure/table/reinforced,/obj/item/device/pda/ert,/obj/item/device/pda/ert,/obj/item/device/pda/ert,/obj/item/device/pda/ert,/obj/item/device/pda/ert,/obj/item/device/pda/ert,/obj/item/device/pda/ert,/turf/unsimulated/floor{icon_state = "vault"; dir = 1},/area/centcom/specops) "cLq" = (/obj/machinery/door/window{dir = 1; name = "Cell"; req_access_txt = "150"},/obj/item/device/radio/intercom{desc = "Talk through this. Evilly"; freerange = 1; frequency = 1213; name = "Syndicate Intercom"; pixel_x = -32; subspace_transmission = 1; syndie = 1},/turf/simulated/shuttle/floor{icon_state = "floor6"},/area/syndicate_station/start) "cLr" = (/turf/unsimulated/floor{icon_state = "vault"; dir = 9},/area/centcom) @@ -7467,7 +7467,7 @@ "cNE" = (/obj/machinery/door/firedoor,/obj/machinery/door/airlock/medical{name = "Operating Theatre 1"; req_access_txt = "45"},/turf/simulated/floor,/area/medical/surgeryprep) "cNF" = (/turf/simulated/floor{icon_state = "blue"; dir = 8},/area/medical/surgeryprep) "cNG" = (/turf/simulated/floor/plating,/area/maintenance/research_port) -"cNH" = (/obj/machinery/chem_dispenser/meds,/turf/unsimulated/floor{icon_state = "vault"; dir = 8},/area/centcom) +"cNH" = (/obj/machinery/chem_dispenser/meds,/obj/item/weapon/reagent_containers/glass/beaker/large,/turf/unsimulated/floor{icon_state = "vault"; dir = 8},/area/centcom) "cNI" = (/obj/structure/rack,/obj/item/clothing/shoes/magboots,/obj/item/clothing/head/helmet/space/rig/ert/medical,/obj/item/clothing/suit/space/rig/ert/medical,/obj/item/clothing/tie/storage/black_vest,/obj/item/clothing/shoes/magboots,/obj/item/clothing/head/helmet/space/rig/ert/medical,/obj/item/clothing/suit/space/rig/ert/medical,/obj/item/clothing/tie/storage/black_vest,/turf/unsimulated/floor{icon_state = "vault"; dir = 1},/area/centcom/specops) "cNJ" = (/obj/item/weapon/mop,/obj/structure/mopbucket,/turf/unsimulated/floor{icon_state = "vault"; dir = 1},/area/centcom/specops) "cNK" = (/obj/structure/reagent_dispensers/watertank,/obj/item/weapon/reagent_containers/glass/bucket{amount_per_transfer_from_this = 50},/turf/unsimulated/floor{icon_state = "vault"; dir = 1},/area/centcom/specops) @@ -7498,7 +7498,7 @@ "cOj" = (/obj/machinery/vending/coffee,/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/control) "cOk" = (/obj/structure/shuttle/engine/propulsion{icon_state = "propulsion"; dir = 4},/turf/space,/area/shuttle/specops/centcom) "cOl" = (/obj/structure/window/reinforced{dir = 4},/obj/structure/shuttle/engine/heater{icon_state = "heater"; dir = 8},/turf/unsimulated/floor,/area/shuttle/specops/centcom) -"cOm" = (/obj/structure/table/reinforced,/obj/item/device/radio/intercom{broadcasting = 0; dir = 1; frequency = 1443; listening = 1; name = "Spec Ops Intercom"; pixel_y = 28},/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/shuttle/specops/centcom) +"cOm" = (/obj/structure/table/reinforced,/obj/item/weapon/storage/box/flashbangs,/obj/item/weapon/handcuffs,/obj/item/device/flash,/obj/item/weapon/melee/baton/loaded,/obj/item/weapon/storage/belt/security/tactical,/turf/unsimulated/floor{icon_state = "vault"; dir = 8},/area/centcom) "cOn" = (/obj/structure/lattice,/obj/structure/grille,/obj/structure/lattice,/turf/space,/area/space) "cOo" = (/obj/structure/rack,/obj/item/clothing/mask/breath,/obj/item/clothing/mask/breath,/obj/item/clothing/mask/breath,/obj/item/clothing/mask/breath,/obj/item/clothing/mask/breath,/obj/item/clothing/mask/breath,/obj/item/clothing/mask/breath,/obj/item/clothing/mask/breath,/turf/unsimulated/floor{icon_state = "vault"; dir = 1},/area/centcom) "cOp" = (/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/shuttle/specops/centcom) @@ -8576,10 +8576,10 @@ "diV" = (/obj/machinery/door/airlock/external{frequency = 1380; glass = 1380; icon_state = "door_locked"; id_tag = "centcom_shuttle_bay_door"; locked = 1; name = "Transport Airlock"},/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/ferry) "diW" = (/obj/machinery/computer/shuttle_control{req_access = null; req_access_txt = "101"; shuttle_tag = "Centcom"},/turf/simulated/shuttle/floor,/area/shuttle/transport1/centcom) "diX" = (/obj/structure/table/reinforced,/obj/item/device/megaphone,/obj/item/clothing/glasses/sunglasses/sechud,/obj/item/weapon/storage/box/trackimp,/obj/item/weapon/storage/box/cdeathalarm_kit,/turf/unsimulated/floor{icon_state = "vault"; dir = 8},/area/centcom/specops) -"diY" = (/obj/machinery/computer/shuttle_control/specops,/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/shuttle/specops/centcom) +"diY" = (/obj/structure/table/reinforced,/obj/item/stack/sheet/glass{amount = 50},/obj/item/stack/sheet/glass{amount = 50},/obj/item/stack/sheet/glass{amount = 50},/obj/item/stack/sheet/glass{amount = 50},/obj/item/stack/sheet/metal{amount = 50; pixel_x = 2; pixel_y = 2},/obj/item/stack/sheet/metal{amount = 50; pixel_x = 2; pixel_y = 2},/obj/item/stack/sheet/metal{amount = 50; pixel_x = 2; pixel_y = 2},/obj/item/stack/sheet/metal{amount = 50; pixel_x = 2; pixel_y = 2},/obj/item/stack/sheet/plasteel{amount = 50},/obj/item/stack/sheet/plasteel{amount = 50},/obj/item/stack/sheet/plasteel{amount = 50},/obj/item/stack/sheet/plasteel{amount = 50},/obj/item/stack/sheet/rglass{amount = 50},/obj/item/stack/sheet/rglass{amount = 50},/obj/item/stack/sheet/rglass{amount = 50},/obj/item/weapon/storage/briefcase/inflatable{pixel_x = 3; pixel_y = 3},/obj/item/weapon/storage/briefcase/inflatable{pixel_x = 3; pixel_y = 3},/obj/item/weapon/storage/briefcase/inflatable{pixel_x = 3; pixel_y = 3},/obj/item/weapon/storage/briefcase/inflatable{pixel_x = 3; pixel_y = 3},/turf/unsimulated/floor{icon_state = "dark"},/area/centcom) "diZ" = (/obj/machinery/computer/shuttle_control/emergency,/turf/simulated/shuttle/floor,/area/shuttle/escape/centcom) "dja" = (/obj/machinery/door/airlock/external{frequency = 1380; icon_state = "door_locked"; id_tag = "specops_shuttle_fore_hatch"; locked = 1; name = "Forward Docking Hatch"; req_access_txt = "13"},/turf/simulated/shuttle/plating,/area/shuttle/specops/centcom) -"djb" = (/obj/machinery/embedded_controller/radio/simple_docking_controller{frequency = 1380; id_tag = "specops_shuttle_fore"; name = "forward docking hatch controller"; pixel_x = 0; pixel_y = -25; req_access_txt = "0"; req_one_access_txt = "0"; tag_door = "specops_shuttle_fore_hatch"},/obj/machinery/recharger/wallcharger{pixel_x = 4; pixel_y = 32},/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/shuttle/specops/centcom) +"djb" = (/obj/structure/table/reinforced,/obj/item/device/flash,/obj/item/device/flash,/obj/item/device/flash,/obj/item/device/flash,/obj/item/weapon/melee/baton/loaded,/obj/item/weapon/melee/baton/loaded,/obj/item/weapon/melee/baton/loaded,/obj/item/weapon/melee/baton/loaded,/obj/item/weapon/storage/belt/security/tactical,/obj/item/weapon/storage/belt/security/tactical,/obj/item/weapon/storage/belt/security/tactical,/obj/item/weapon/storage/belt/security/tactical,/obj/item/taperoll/police,/turf/unsimulated/floor{icon_state = "vault"; dir = 1},/area/centcom/specops) "djc" = (/obj/structure/table,/obj/item/weapon/storage/firstaid/fire,/obj/item/weapon/extinguisher,/obj/item/device/radio/intercom{dir = 8; name = "Station Intercom (General)"; pixel_x = -28},/obj/machinery/embedded_controller/radio/simple_docking_controller{frequency = 1380; id_tag = "escape_shuttle"; pixel_x = 8; pixel_y = 25; req_access_txt = "0"; req_one_access_txt = "13"; tag_door = "escape_shuttle_hatch"},/turf/simulated/shuttle/floor,/area/shuttle/escape/centcom) "djd" = (/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers,/obj/machinery/atmospherics/pipe/manifold/hidden/supply,/turf/simulated/floor/plating,/area/maintenance/research_port) "dje" = (/obj/structure/cable{d2 = 2; icon_state = "0-2"; pixel_y = 0},/obj/machinery/power/smes/buildable{charge = 0},/turf/simulated/floor/plating,/area/maintenance/portsolar) @@ -9647,7 +9647,7 @@ "dDA" = (/obj/machinery/door/window{base_state = "right"; dir = 4; icon_state = "right"; name = "Brig"; req_access_txt = "150"},/turf/simulated/shuttle/floor{icon_state = "floor6"},/area/syndicate_station/start) "dDB" = (/obj/machinery/light{icon_state = "tube1"; dir = 4},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0},/obj/machinery/door/firedoor/border_only{dir = 4; name = "Firelock"},/turf/simulated/floor{dir = 4; icon_state = "whitebluecorner"},/area/research_outpost/hallway) "dDC" = (/obj/machinery/door/window{base_state = "left"; dir = 8; icon_state = "left"; name = "Preparation"; req_access_txt = "150"},/turf/simulated/shuttle/floor{icon_state = "floor6"},/area/syndicate_station/start) -"dDD" = (/obj/structure/table/reinforced,/obj/item/weapon/storage/box/flashbangs,/obj/item/weapon/handcuffs,/obj/item/device/flash,/obj/item/weapon/melee/baton/loaded,/obj/item/weapon/storage/belt/security,/turf/unsimulated/floor{icon_state = "vault"; dir = 8},/area/centcom) +"dDD" = (/obj/machinery/computer/security/telescreen{desc = ""; name = "Spec. Ops. Monitor"; network = list("ERT"); pixel_y = 30},/obj/machinery/computer/shuttle_control/specops,/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/shuttle/specops/centcom) "dDE" = (/obj/machinery/door/firedoor/border_only{dir = 4; name = "Firelock"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor{icon_state = "white"},/area/research_outpost/hallway) "dDF" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor{icon_state = "white"},/area/research_outpost/hallway) "dDG" = (/obj/machinery/telecomms/allinone{intercept = 1},/turf/simulated/shuttle/floor{icon_state = "floor6"},/area/syndicate_station/start) @@ -11114,7 +11114,7 @@ "efL" = (/obj/machinery/shieldgen,/turf/unsimulated/floor{icon_state = "vault"; dir = 1},/area/centcom) "efM" = (/obj/structure/table/reinforced,/obj/item/mecha_parts/mecha_equipment/weapon/energy/ion,/obj/item/mecha_parts/mecha_equipment/weapon/energy/taser,/obj/item/mecha_parts/mecha_equipment/anticcw_armor_booster,/obj/item/mecha_parts/mecha_equipment/antiproj_armor_booster,/turf/unsimulated/floor{icon_state = "vault"; dir = 1},/area/centcom/specops) "efN" = (/obj/structure/table/reinforced,/obj/item/weapon/storage/box/handcuffs,/obj/item/clothing/glasses/sunglasses/sechud{pixel_y = 3},/obj/item/clothing/glasses/sunglasses/sechud{pixel_y = 3},/obj/item/clothing/glasses/sunglasses/sechud{pixel_y = 3},/obj/item/clothing/glasses/sunglasses/sechud{pixel_y = 3},/obj/item/clothing/glasses/thermal,/obj/item/clothing/glasses/thermal,/obj/item/clothing/glasses/night{pixel_x = -1; pixel_y = -3},/obj/item/clothing/glasses/night{pixel_x = -1; pixel_y = -3},/obj/item/clothing/glasses/night{pixel_x = -1; pixel_y = -3},/obj/item/clothing/glasses/night,/obj/item/weapon/storage/box/handcuffs,/turf/unsimulated/floor{icon_state = "vault"; dir = 1},/area/centcom/specops) -"efO" = (/obj/structure/table/reinforced,/obj/item/stack/sheet/glass{amount = 50},/obj/item/stack/sheet/glass{amount = 50},/obj/item/stack/sheet/glass{amount = 50},/obj/item/stack/sheet/glass{amount = 50},/obj/item/stack/sheet/metal{amount = 50; pixel_x = 2; pixel_y = 2},/obj/item/stack/sheet/metal{amount = 50; pixel_x = 2; pixel_y = 2},/obj/item/stack/sheet/metal{amount = 50; pixel_x = 2; pixel_y = 2},/obj/item/stack/sheet/metal{amount = 50; pixel_x = 2; pixel_y = 2},/obj/item/stack/sheet/plasteel{amount = 50},/obj/item/stack/sheet/plasteel{amount = 50},/obj/item/stack/sheet/plasteel{amount = 50},/obj/item/stack/sheet/plasteel{amount = 50},/obj/item/weapon/storage/briefcase/inflatable{pixel_x = 3; pixel_y = 3},/obj/item/weapon/storage/briefcase/inflatable{pixel_x = 3; pixel_y = 3},/obj/item/weapon/storage/briefcase/inflatable,/obj/item/weapon/storage/briefcase/inflatable,/obj/item/stack/sheet/rglass{amount = 50},/obj/item/stack/sheet/rglass{amount = 50},/obj/item/stack/sheet/rglass{amount = 50},/turf/unsimulated/floor{icon_state = "dark"},/area/centcom) +"efO" = (/obj/machinery/embedded_controller/radio/simple_docking_controller{frequency = 1380; id_tag = "specops_shuttle_port"; name = "port docking hatch controller"; pixel_x = 0; pixel_y = 25; req_access_txt = "0"; req_one_access_txt = "0"; tag_door = "specops_shuttle_port_hatch"},/obj/structure/stool/bed/chair,/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/shuttle/specops/centcom) "efP" = (/obj/structure/rack,/obj/item/weapon/storage/box/flashbangs,/obj/item/weapon/storage/box/flashbangs,/obj/item/weapon/storage/box/emps,/obj/item/weapon/grenade/smokebomb,/obj/item/weapon/grenade/smokebomb,/obj/item/weapon/grenade/smokebomb,/obj/item/weapon/grenade/smokebomb,/obj/item/weapon/grenade/smokebomb,/obj/item/weapon/grenade/smokebomb,/obj/item/weapon/grenade/smokebomb,/turf/unsimulated/floor{icon_state = "vault"; dir = 1},/area/centcom) "efQ" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 2; external_pressure_bound = 140; external_pressure_bound_default = 140; icon_state = "map_vent_out"; on = 1; pressure_checks = 0; pressure_checks_default = 0},/turf/simulated/floor/plating/airless,/area/research_outpost/atmos) "efR" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/obj/machinery/door/firedoor/border_only{dir = 2},/obj/structure/window/reinforced,/turf/simulated/floor/plating,/area/rnd/docking) @@ -11229,7 +11229,7 @@ "ehW" = (/obj/structure/table/reinforced,/obj/item/mecha_parts/mecha_equipment/tool/sleeper,/obj/item/mecha_parts/mecha_equipment/tool/sleeper,/obj/item/mecha_parts/mecha_equipment/tool/syringe_gun,/turf/unsimulated/floor{icon_state = "vault"; dir = 1},/area/centcom/specops) "ehX" = (/obj/structure/rack,/obj/item/clothing/suit/armor/vest/ert/security,/obj/item/clothing/suit/armor/vest/ert/security,/obj/item/clothing/suit/armor/vest/ert/security,/obj/item/clothing/suit/armor/vest/ert/security,/obj/item/clothing/head/helmet/ert/security,/obj/item/clothing/head/helmet/ert/security,/obj/item/clothing/head/helmet/ert/security,/obj/item/clothing/head/helmet/ert/security,/obj/item/weapon/storage/backpack/ert/security,/obj/item/weapon/storage/backpack/ert/security,/obj/item/weapon/storage/backpack/ert/security,/obj/item/weapon/storage/backpack/ert/security,/turf/unsimulated/floor{icon_state = "vault"; dir = 1},/area/centcom/specops) "ehY" = (/obj/structure/rack,/obj/item/weapon/tank/jetpack/oxygen,/obj/item/weapon/tank/jetpack/oxygen,/obj/item/weapon/tank/jetpack/oxygen,/turf/unsimulated/floor{icon_state = "vault"; dir = 8},/area/centcom) -"ehZ" = (/obj/structure/table/reinforced,/obj/item/device/flash,/obj/item/device/flash,/obj/item/device/flash,/obj/item/device/flash,/obj/item/weapon/melee/baton/loaded,/obj/item/weapon/melee/baton/loaded,/obj/item/weapon/melee/baton/loaded,/obj/item/weapon/melee/baton/loaded,/obj/item/weapon/storage/belt/security,/obj/item/weapon/storage/belt/security,/obj/item/weapon/storage/belt/security,/obj/item/weapon/storage/belt/security,/obj/item/taperoll/police,/turf/unsimulated/floor{icon_state = "vault"; dir = 1},/area/centcom/specops) +"ehZ" = (/obj/structure/stool/bed/chair{dir = 4},/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/shuttle/specops/centcom) "eia" = (/obj/machinery/vending/security,/turf/unsimulated/floor{icon_state = "vault"; dir = 8},/area/centcom) "eib" = (/obj/structure/table/reinforced,/obj/item/clothing/glasses/meson,/obj/item/clothing/glasses/meson,/obj/item/clothing/glasses/meson,/obj/item/clothing/glasses/meson,/obj/item/weapon/storage/belt/utility/full,/obj/item/weapon/storage/belt/utility/full,/obj/item/weapon/storage/belt/utility/full,/obj/item/weapon/storage/belt/utility/full,/obj/item/clothing/gloves/yellow,/obj/item/clothing/gloves/yellow,/obj/item/clothing/gloves/yellow,/obj/item/clothing/gloves/yellow,/obj/item/weapon/grenade/chem_grenade/metalfoam,/obj/item/weapon/grenade/chem_grenade/metalfoam,/obj/item/taperoll/engineering,/obj/item/clothing/glasses/welding/superior,/obj/item/clothing/glasses/welding/superior,/obj/item/clothing/glasses/welding/superior,/obj/item/clothing/glasses/welding/superior,/obj/item/clothing/glasses/welding/superior,/turf/unsimulated/floor{icon_state = "dark"},/area/centcom) "eic" = (/obj/machinery/vending/assist,/turf/unsimulated/floor{icon_state = "vault"; dir = 1},/area/centcom) @@ -11239,10 +11239,8 @@ "eig" = (/obj/structure/rack,/obj/item/weapon/plastique,/obj/item/weapon/plastique,/obj/item/weapon/plastique,/obj/item/weapon/plastique,/obj/item/weapon/plastique,/obj/item/weapon/plastique,/turf/unsimulated/floor{icon_state = "vault"; dir = 1},/area/centcom) "eih" = (/obj/structure/rack,/obj/item/ammo_magazine/c9mm,/obj/item/ammo_magazine/c9mm,/obj/item/ammo_magazine/c9mm,/obj/item/ammo_magazine/c9mm,/obj/item/ammo_magazine/c9mm,/obj/item/ammo_magazine/c9mm,/obj/item/ammo_magazine/c9mm,/obj/item/ammo_magazine/c9mm,/obj/item/ammo_magazine/c9mm,/obj/item/weapon/gun/projectile/automatic,/obj/item/weapon/gun/projectile/automatic,/obj/item/weapon/gun/projectile/automatic,/turf/unsimulated/floor{icon_state = "vault"; dir = 1},/area/centcom) "eii" = (/obj/machinery/door/poddoor{icon_state = "pdoor1"; id = "ASSAULT"; name = "Assault Weapon Storage"; p_open = 0},/turf/unsimulated/floor{icon_state = "vault"; dir = 8},/area/centcom/specops) -"eij" = (/obj/machinery/camera{c_tag = "Spec. Ops. Shuttle"; dir = 2; network = list("ERT")},/obj/structure/stool/bed/chair,/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/shuttle/specops/centcom) -"eik" = (/obj/machinery/embedded_controller/radio/simple_docking_controller{frequency = 1380; id_tag = "specops_shuttle_port"; name = "port docking hatch controller"; pixel_x = 0; pixel_y = 25; req_access_txt = "0"; req_one_access_txt = "0"; tag_door = "specops_shuttle_port_hatch"},/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/shuttle/specops/centcom) -"eil" = (/obj/machinery/computer/security/telescreen{desc = ""; name = "Spec. Ops. Monitor"; network = list("ERT"); pixel_y = 30},/obj/structure/stool/bed/chair{dir = 4},/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/shuttle/specops/centcom) -"eim" = (/obj/machinery/computer/communications,/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/shuttle/specops/centcom) +"eij" = (/obj/machinery/embedded_controller/radio/simple_docking_controller{frequency = 1380; id_tag = "specops_shuttle_fore"; name = "forward docking hatch controller"; pixel_x = 0; pixel_y = -25; req_access_txt = "0"; req_one_access_txt = "0"; tag_door = "specops_shuttle_fore_hatch"},/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/shuttle/specops/centcom) +"eik" = (/obj/machinery/computer/communications,/obj/item/device/radio/intercom{broadcasting = 0; dir = 1; frequency = 1443; listening = 1; name = "Spec Ops Intercom"; pixel_y = -28},/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/shuttle/specops/centcom) "ein" = (/obj/machinery/computer/prisoner{name = "Implant Management"},/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/shuttle/specops/centcom) "eio" = (/obj/structure/table/reinforced,/obj/item/device/megaphone,/obj/item/device/megaphone,/obj/item/device/megaphone,/obj/item/device/megaphone,/turf/unsimulated/floor{icon_state = "vault"; dir = 1},/area/centcom/specops) "eip" = (/obj/structure/rack,/obj/item/weapon/storage/backpack/security,/obj/item/clothing/under/syndicate/combat,/obj/item/clothing/shoes/galoshes,/obj/item/clothing/head/bio_hood/janitor,/obj/item/clothing/suit/bio_suit/janitor,/obj/item/clothing/gloves/purple,/obj/item/clothing/glasses/science,/obj/item/weapon/storage/backpack/security,/obj/item/clothing/under/syndicate/combat,/obj/item/clothing/shoes/galoshes,/obj/item/clothing/head/bio_hood/janitor,/obj/item/clothing/suit/bio_suit/janitor,/obj/item/clothing/gloves/purple,/obj/item/clothing/glasses/science,/obj/item/weapon/reagent_containers/spray/cleaner{pixel_x = 6; pixel_y = 3},/obj/item/weapon/reagent_containers/spray/cleaner{pixel_x = 6; pixel_y = 3},/obj/item/weapon/reagent_containers/spray/plantbgone,/obj/item/weapon/reagent_containers/spray/plantbgone,/obj/item/weapon/storage/box/lights/mixed,/obj/item/weapon/storage/box/lights/mixed,/obj/item/weapon/grenade/chem_grenade/cleaner,/obj/item/weapon/grenade/chem_grenade/cleaner,/obj/item/weapon/grenade/chem_grenade/cleaner,/turf/unsimulated/floor{icon_state = "vault"; dir = 1},/area/centcom/specops) @@ -11391,11 +11389,11 @@ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaVlaVlaVlaVlaVlaVlaVlaVlaVlaVlaVlaVlaVlbkUbkRbitbkVblbbiuaFfaFwaFsaFyaFeaEpaFsaFjaDPaFcaFdaDBaYyaZYaZZaFvaFxaYyaFXbadaFPaPEaDGaDJaErblcaPEaEtblDbalbalblEbalbalbalbalbanbaobaobaobapbaobaqatFboHbjvbpcasMasMasMbaAbaAbaAbayblLbaybaAbaBbaBbaBbaBbaBaFrbaBbaBbaBbaDbaDblVbaDaPWaPWaPWbqlbqlbqlbffbeiaLYauWbaFbaGaBlaUDaQobaIaFFbaJaFEbaLaZraZrbhWbaObcqbcqbcqaWPbaMbaMbaMbcqbcqbcqaFLaFMaFJaFKavyaKTaKTaKVbcqblWaZFbaYbcqbaZaFAbbbaWmbmabbabbdaFCaHPaEyaIbaQMaFBbbgaQMaQNaIbaIbaEyaFDaSsaEJaSsaKQbblbbmaYmaaeaFpaJGaJGaJGaJGaJGaJGaJGaJGaJGaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaVlaVlaVlaVlaVlaVlaVlaVlaVlaVlaVlaVlaCDbmcbmnbmdbmubmqaFfaFhaFgaFfaFeaEpaDUaDTaDPaDDaDCaDBaYyaYyaYybcJaEvaYyaEwbadaEqaPEaDGaDJaErbmyaPEaEtblDbalaEoaBkbbHbbHbbIbalbbJbbKaEkbbMbarbarbaratFaAcaYYbcmasMbbPbbQbbRbmzaEhaEiaEfbbWbaAbaBbbXbmAbmHbmBaEcbmIbcdbaBbaDbceaDZaDYaDXaDWaEbaEabjtbqlbrHbqnbrIauWbcqbcqbcqbcqaEZaEYaFbaFabcqbcqaEXbcqbcqbcqbcqaEUaERaETbcrbcrbcrbcsaKObcqaKKbmJbmMaKNaKIaKIaKIaKhbcqblWaZFaEObcqbcqbcqbcqbcqbcqbcqbcqbcqbcqbcqaEIaJtaEHaExaEAaEIaJtbcqaPtbcBaSsaEJaSsaKQaWAbcDbcEaTMaWDaJGaJGaJGaJGaJGaJGaJGaJGaJGaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabmRbmQbnxbnvbitbnAbnAbnAbnAbnAbnAbnOboabnAaDPaDPaDPaDPaDPaJmaDPaDPaDPaHtaHtaFRaYyaZYbcIbcJaHvaYybcLbcMbcLaPEaDGaDJaErbmyaPEaEtblDbalbToaScbcQbbHbcQbalbbJbcRbPhbcSbcTbcUbcVatFbtfbrJbcmbtgbcYbgCbdabdbbdbaHyaHzaHAbaAbaBbdebobbogbdhbbXaNPaHYbaBbaDboiaHNaHMaHXbfhaHGaHFaLgbqlbuFbuDaLYaKlbdubdvaZFaZFaIjaZFaIiaZFaZFaZFaZFbgGaZFaZFaZFaZFaBDaZFaZFaZFaZFaZFaZFbdvaZFaZFaIkaIlaIlaImaIlaIlaIobonaZFaBDaItaJybgGaZFaIxaZFaZFaZFaIyaIzaIAaIBaZFaICaZFaIDaZFaZFbdzaIEaIFaSsaEJaSsaHLaHKaHJaJYaPcaHHaJGaJGaJGaJGaJGaJGaJGaJGaJGaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabdQbdQbdQbdQbdQbdQbdQbdQbdQbdQbdQbdQaaaaaeboqbhBbosboOboNboPboPboPboPboPboRboSaFNaFUaFTaFSaFRaYyaYyaYybdXaEvaYyaPEaPEaPEaPEaDGaHhaFZbpfaPEaGbbphbalaJfaJlbpqbcQbeebalbbJbefbPhbcSbcSbcSbehatFbvdaMabcmbvqaGvaGwaGraGsaGpaGqaGlaGmbaAbaBberbprbetbetbetaNPbevbaBbaDbexaGibclbdpbeyaGeaGdaGcbqlbwybwxbwJbwIaGKaGEaGDaGDaGMaGLaGNaGzaGzaGzaGPaGzaGzaGzaGzaGzaGAaGBaGBaGBaGCaGDaGDaGEaGDaGDaGFaGBaGBaHiaGzaHeaHpaHlaGzaHjaGDaGDaGDaGDaGDaGDaGDaGDaGDaGDaGDaGDaGDaGRaGPaGQaGzaGXaGSaGTaHaaHaaGYaGZaKQaStbeLaTMaTMaTNaJGaJGaJGaJGaJGaJGaJGaJGaJGaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabdQbdQbdQbdQbdQbdQbdQbdQbdQbdQbdQbdQbdQbijbiebpxbpwbpzbnAbePbePbeQbePbePbePbUVaNlaNlaNlaNlaDBaYyaZYbeSbeTaHvaYybVdbVebVdaPEaPEaPEaPEbpAaPEbVcblDbalbTpcnLbcQbRAbVabalbbJbarbUXbcSbcSbcSbfeatFbwKaMabcmbxHblvbgCbembfibfjbepbVtbhZbaAbpGbpSbpRbetbpTbetbobbqsbqrbaDbfrbVibVjbVgbVgbVgbVhbVfbqlbxJbxIbyybyxcxRdPwdPxdTPbmZcFsbVFcegceibVGbVHctbctbctaaZFaZFaZFaZFaZFbfDbVwbEuaZFctcbVybVxbVBaZFbfDbfybVIbVJbdzaZFaZFbVKaZFaZFcejbfOaZFbfDaZFaZFaZFaZFaZFaZFaZFaZFaZFaBDaZFaZFbdzbfQbfRbfSbfTbfUcGxcGybfWaaeaaaaaeaJGaJGaJGaJGaJGaJGaJGaJGaJGaaaaaaaaaaaaaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabdQbdQbdQbdQbdQbdQbdQbdQbdQbdQbdQbdQbdQbqvbqubqzbqwbqEbnAbfYbfZbgabgabgbbgcbqYbqUbrabrabrjbrhaYyaYyaYybcJbUgaYyaNlaNlaNlaNlbUfaEtaEtbrBbUdbUcbrGbUCbMpbYMbUqbUBbUjbalbTKbarbUibcSbKabcSbgzbyzbyAaMabcmasMbUsbUrbUubUtbUobUnbUpbfkbaAbaBbgFbsfbsBbshbsCbsfbgKbaBbaDbaDbUybUDbgObgPbclbUwbUxbqlbyCbyBbyDbqlbTqbTqbTqbTqbTqbTqbcqbcqbUMbUNbUJbUKbUNbUMbcqbcqbcqbcqbcqbcqbcqbcqbcqbcqbUObcqbcqbcqbcqbcqbcqcuObcqaZFaZFbURbhkbhkbTqbTqbTqbTqbTqbhmbhnbhnbhobhnaZFbhnbhobUSbhnbhpbTqcuRcuRcuRcvMaPtcBhaPtaPtaaaaaaaaaaJGaJGaJGaJGaJGaJGaJGaJGaJGaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabdQbdQbdQbdQbdQbdQbdQbdQbdQbdQbdQbdQbdQbkUbkRbpxbpwbsLbnAbhtbePbhubhvbePbePbePauUbSSbSRbSRbRuaYyaZYbhzbcJbTzaYybsObsMbtdbsZbtobtebtebtpbtebtebtqbalaFibLsbbHbLwbTtbUCbTibarbTjbcSbcSbTkbhUbyEbyAaMabyHasMbTbbTbbTbbTbbTbbTbbtxbTbbaAbaBbtHbtEbtVbtMbtVbtWbunbaBbaDbaDbimbuCbiobipbclaGdbSVbqlbffaLXaLYbqlcqlcqncqSbTncrDcrGcrMcrFcqUcqVbTTbTUcqVbTOcpscoYcmTbTMbTNcmUcpMckbcrscpNbTRbTPbTScktcktclSbktbSibTqbTqbTJbTqbTLbTLbTqbiVbiWbiXbTqbTEbTFbTEbTqbhmbhnbhpbTqbTDbTIbTDbTqbThbTgbNtbTHbTGbkebhgaaaaaaaaaaaaaJGaJGaJGaJGaJGaJGaJGaJGaJGaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabdQbdQbdQbdQbdQbdQbdQbdQbdQbdQbdQbdQaaacbCbuQbuRbmdbvjbnAbjibePbjjbjkbjlbRxbePbRybRobRrbRsbRuaYyaYyaYyaYyaYyaYybSebSdbScbSbbvnbalbalbalbalbalbalbalbShbalbalbalbMVbalbSgbRFbSfbcSbcSbcSbjAbyzbyAaMabyJasMbRPbRObRRbRQbREbLrbRKbRIaaebaBbRMbRLbRUbvrbRWbRYbRZbaBaaebaDbjNbRSbjObjPbclaGdbRTbqlbyLbyKaLYbyMcqOcgPbSwbSxbSKbSLbSGbSIchochocgRcgScjtcjtbSOciEciDbSNbSMciAckcckbcjDbSQbSPcgecjvcjucgecgfbktbSibiSbkwbkxcgdbSlbkAbkBbkCbkDbkCbSjbkFbSsbkHbTqbcqbSrbSmbTqbSzbSEbSDbSvbNHbSAbNtbSubkSbkTbhgaaaaaaaaaaafaJGaJGaJGaJGaJGaJGaJGaJGaJGaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabdQbdQbdQbdQbdQbdQbdQbdQbdQbdQaaaaaeboqbhBbosboOboNboPboPboPboPboPboRboSaFNaFUaFTaFSaFRaYyaYyaYybdXaEvaYyaPEaPEaPEaPEaDGaHhaFZbpfaPEaGbbphbalaJfaJlbpqbcQbeebalbbJbefbPhbcSbcSbcSbehatFbvdaMabcmbvqaGvaGwaGraGsaGpaGqaGlaGmbaAbaBberbprbetbetbetaNPbevbaBbaDbexaGibclbdpbeyaGeaGdaGcbqlbwybwxbwJbwIaGKaGEaGDaGDaGMaGLaGNaGzaGzaGzaGPaGzaGzaGzaGzaGzaGAaGBaGBaGBaGCaGDaGDaGEaGDaGDaGFaGBaGBaHiaGzaHeaHpaHlaGzaHjaGDaGDaGDaGDaGDaGDaGDaGDaGDaGDaGDaGDaGDaGRaGPaGQaGzaGXaGSaGTaHaaHaaGYaGZaKQaStbeLaTMaTMaTNaJGaJGaJGaJGaJGaJGaJGaJGaJGaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabdQbdQbdQbdQbdQbdQbdQbdQbdQbdQbdQbijbiebpxbpwbpzbnAbePbePbeQbePbePbePbUVaNlaNlaNlaNlaDBaYyaZYbeSbeTaHvaYybVdbVebVdaPEaPEaPEaPEbpAaPEbVcblDbalbTpcnLbcQbRAbVabalbbJbarbUXbcSbcSbcSbfeatFbwKaMabcmbxHblvbgCbembfibfjbepbVtbhZbaAbpGbpSbpRbetbpTbetbobbqsbqrbaDbfrbVibVjbVgbVgbVgbVhbVfbqlbxJbxIbyybyxcxRdPwdPxdTPbmZcFsbVFcegceibVGbVHctbctbctaaZFaZFaZFaZFaZFbfDbVwbEuaZFctcbVybVxbVBaZFbfDbfybVIbVJbdzaZFaZFbVKaZFaZFcejbfOaZFbfDaZFaZFaZFaZFaZFaZFaZFaZFaZFaBDaZFaZFbdzbfQbfRbfSbfTbfUcGxcGybfWaaeaaaaaeaJGaJGaJGaJGaJGaJGaJGaJGaJGaaaaaaaaaaaaaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabdQbdQbdQbdQbdQbdQbdQbdQbdQbdQbdQbqvbqubqzbqwbqEbnAbfYbfZbgabgabgbbgcbqYbqUbrabrabrjbrhaYyaYyaYybcJbUgaYyaNlaNlaNlaNlbUfaEtaEtbrBbUdbUcbrGbUCbMpbYMbUqbUBbUjbalbTKbarbUibcSbKabcSbgzbyzbyAaMabcmasMbUsbUrbUubUtbUobUnbUpbfkbaAbaBbgFbsfbsBbshbsCbsfbgKbaBbaDbaDbUybUDbgObgPbclbUwbUxbqlbyCbyBbyDbqlbTqbTqbTqbTqbTqbTqbcqbcqbUMbUNbUJbUKbUNbUMbcqbcqbcqbcqbcqbcqbcqbcqbcqbcqbUObcqbcqbcqbcqbcqbcqcuObcqaZFaZFbURbhkbhkbTqbTqbTqbTqbTqbhmbhnbhnbhobhnaZFbhnbhobUSbhnbhpbTqcuRcuRcuRcvMaPtcBhaPtaPtaaaaaaaaaaJGaJGaJGaJGaJGaJGaJGaJGaJGaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabdQbdQbdQbdQbdQbdQbdQbdQbdQbdQbdQbkUbkRbpxbpwbsLbnAbhtbePbhubhvbePbePbePauUbSSbSRbSRbRuaYyaZYbhzbcJbTzaYybsObsMbtdbsZbtobtebtebtpbtebtebtqbalaFibLsbbHbLwbTtbUCbTibarbTjbcSbcSbTkbhUbyEbyAaMabyHasMbTbbTbbTbbTbbTbbTbbtxbTbbaAbaBbtHbtEbtVbtMbtVbtWbunbaBbaDbaDbimbuCbiobipbclaGdbSVbqlbffaLXaLYbqlcqlcqncqSbTncrDcrGcrMcrFcqUcqVbTTbTUcqVbTOcpscoYcmTbTMbTNcmUcpMckbcrscpNbTRbTPbTScktcktclSbktbSibTqbTqbTJbTqbTLbTLbTqbiVbiWbiXbTqbTEbTFbTEbTqbhmbhnbhpbTqbTDbTIbTDbTqbThbTgbNtbTHbTGbkebhgaaaaaaaaaaaaaJGaJGaJGaJGaJGaJGaJGaJGaJGaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabdQbdQbdQbdQbdQbdQbdQbdQbdQbdQaaacbCbuQbuRbmdbvjbnAbjibePbjjbjkbjlbRxbePbRybRobRrbRsbRuaYyaYyaYyaYyaYyaYybSebSdbScbSbbvnbalbalbalbalbalbalbalbShbalbalbalbMVbalbSgbRFbSfbcSbcSbcSbjAbyzbyAaMabyJasMbRPbRObRRbRQbREbLrbRKbRIaaebaBbRMbRLbRUbvrbRWbRYbRZbaBaaebaDbjNbRSbjObjPbclaGdbRTbqlbyLbyKaLYbyMcqOcgPbSwbSxbSKbSLbSGbSIchochocgRcgScjtcjtbSOciEciDbSNbSMciAckcckbcjDbSQbSPcgecjvcjucgecgfbktbSibiSbkwbkxcgdbSlbkAbkBbkCbkDbkCbSjbkFbSsbkHbTqbcqbSrbSmbTqbSzbSEbSDbSvbNHbSAbNtbSubkSbkTbhgaaaaaaaaaaafaJGaJGaJGaJGaJGaJGaJGaJGaJGaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabmRbmQbnxbnvbkRbvubvubvubvLbvubvWbikbwcbwkbnAbkWbkXbkYbkZblacaHcaGaJaaEtaEtaEtbwmbrabwqbrabrabrabrabwFbZXbZXbZZbwSbalbljblkcrwblmblnbloboAbZVblrblschfckRbTibgAbSfbcSbcSbZWbaratFbyAbztbzubxabxdbxcbxcbxfbxCbxhbxRcazbzmbaBbaBbaBbaBbznbaBbaBbaBbaBaaebaDcaqbRScahcajcaecafcadbqlbzEaLXaLYbqldVHdVIdVJcaXcaVbgUcUZbZscjtcjtcjtcjtcjtcjtbZNcaLcaQbSNcaUcaScaJckbdVwbZDcaKcgecjvcjucgedVLbktbSibiScbtbLZbLZcbpcbqcbmcbncbncbncbrcbncbhcbgbhlcbfcbkcbjbNtcbibNHcbdcbabXbbXfbNtbmPbkSbmsbhgaaaaaaaaaaaaaaaaJGaJGaJGaJGaJGaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaateaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabzwbzHbzBbzRbzObzYbzYbAjbAibApbnAbmSbmTbkZbmUbePbePbePaNlbZqbZrbYsbYtbYsbYsbYsbYtbYsaNlaNlbalbalbalbYubalblpblpblpblpblpblpboAbIwbnbbVobndbYwbYJbYLbYHbYIbqfbYFbYxbzFbzWbzVbAAbAzbABcwZbYSbTscDdbUkbRKbRIbAIbACbnybnzbBgbBdbnCbnzbnDbACaaebaDbnFbZobnFbaDbaDbaDbBobqlbzZaLXaLYbyMcqOcgPbZzbZAbZubgUdUSbZsdUXdUYdUVdUWdVnbZObZNbZMcmTdVpbZRbZQbZIckbbZGbZDbSPcgecjvcjucgecgfbktbSibiSdTXbnYdTYbXPbkxbocbodboebofbZSbpDbZTbohbhlbZUbsqchDbNtbVZbVAbVzbXBbVVbVXbNtbmPbkSborbhgaaaaaaaaaaaaaaeaaeaaeaaeaaeaaeaaeaaeaaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaaaaaaaaaaaaaaaaaaaaabzwbBCbBybBGbBEbBEbBEbBNbBEbBEbnAbotboubovbkZbePaaaaaaaaaaaeaaebowbowbowbowbowbowbowaaaaaaboxbXzbXybXAboBblpblpblpblpblpblpbXobXrbXsbqebXtbXvbPNboFbarbarbXwbarbarbAabAcbAbbAdbOxbXibTbbTbbTbbTbbTbbBQbTbbAIbCfbCUbCSbCXbCWbCXbCSbDbbCZaaebnFboVbXdbXabXcbXebnFbDdauWbAeaXObAfbqlbWmcqnbYlbYnbYjbixdUObYkdUJdUKdULbVWdUGdUFbYibYfcmTckbbYebYcbXYckbdUCbYbbXWbXVdUzdUzbXUdUwbktbSibiSdUubkxbkxbXPbXQbXNbXObXLbXMbXIbXJbXHbpFbhlbXGbXFbXEbNtbUYbUTbUPbXBbNHbUIbNtbSubkSbpMbhgaaaaaaaaaaaaaaebpNbpObMebpObMebpObpQaaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa @@ -11654,13 +11652,13 @@ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacFYeidcFYaaaaaaaaaaaacFYeiBeizeiAcJHcJHcFYcJfcJjcIQcJfcJkcIQcJlcJmcIQcJfcJjcIQcJncIRdRcdRbdRadQZcJqcGrcIScITcIScGrcJrcJscJtcJucJucIRaaaaaacGFcHbcHbcHbcHbcHbcHbcHbcHbcHccHdaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeeJaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadqLdqLdqLdqLdqLdqLdqLdqLdqLdqL aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacFYeiicFYcFYcFYcFYcFYcFYefLcJEcJEcJEeiCcFYcJGcJmcIQcJGcJgcIQcJGcJjcIQcJGcJicIQcJncIRcJIcJJcJJcJJcJJcGrcIScITcIScGrcJucJucJucJucJucIRaaaaaacJKcJKcJKcJKcJKcJKcJKcJKcJKcJKcJKcIRcIRcIRcIRcIRcIRcIRcIRcIRcIRaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeeJaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadqLdqLdqLdqLdqLdqLdqLdqLdqL aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacIPcIPcIPcIPcIPcFYcLteieeigeihcJceifcFYeiDcJEcJEcJEeiCcFYcIQcIQcIQcIQcIQcIQcIQcIQcIQcIQcIQcIQcJncIRcJIcJJcJJcJJcJJcGrcGrcIKcGrcGrcJucJucJucJucJucIRcJKcJKcJKcJKcJKcJKcJNcJOcJPcIRcJQcJQcJQcIRcJQcJQcJQcJQcJQcJQcJQcJQcIRaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeeJaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadqLdqLdqLdqLdqLdqLdqLdqL -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacIXcIPcIPcIPcIPcIPcIPcIPcIPcIPcIPcIPcIPcIPcIPcIPcIPcIPcIPcIPcIPcIYcIZcJbcJTdmScLtcJEcJEcJEcJEefPcFYefOcJEcJEcJEehVcFYcJYcJicIQcJfcJicIQcJZcJjcIQcJfcJmcIQcJncIRcKadQYdPKcKccKdcIRcKecKecKecIRcJucJucJucJucJucIRcKfcKgcKfcKhcKicJKcKjcKjcKjcKkcJQcJQcJQcKkcJQcKlcKmcKlcJQcKncKocKpcIRaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeeJaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadqLdqLdqLdqLdqLdqLdqL +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacIXcIPcIPcIPcIPcIPcIPcIPcIPcIPcIPcIPcIPcIPcIPcIPcIPcIPcIPcIPcIPcIYcIZcJbcJTdmScLtcJEcJEcJEcJEefPcFYdiYcJEcJEcJEehVcFYcJYcJicIQcJfcJicIQcJZcJjcIQcJfcJmcIQcJncIRcKadQYdPKcKccKdcIRcKecKecKecIRcJucJucJucJucJucIRcKfcKgcKfcKhcKicJKcKjcKjcKjcKkcJQcJQcJQcKkcJQcKlcKmcKlcJQcKncKocKpcIRaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeeJaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadqLdqLdqLdqLdqLdqLdqL aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacJvcJwcJwcJwcJwcJwcJwcJwcJwcJwcJwcJwcJwcJwcJxcJycJwcJwcJwcJzcJxcJAcJBcJDefMcFYefNcJEcJEcJEcJEcJVcFYeeBcJEcJEcJEefjcFYcJGcJjcJhcJGcJjcIQcJGcJXcIQcJGcKtcIQcJncIRcKucIRcKvcKwcKxcIRcJJcJJcJJcIRcKvcKwcKycIRcKzcIRcKAcKBcKAcKBcKAcJKcIRcIRcIRcIRcJQcJQcJQcIRcKCcKDcKlcKEcKCcKFcKGcKGcIRaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeeJaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadqLdqLaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadqLdqLdqLdqLdqLdqL -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacIXcIPcIPcIPcIPcIPcIPcIPcIPcIPcIPcIPcIPcIPcIPcIPcIPcIPcIPcIPcIPcIPcIPcIPcIPcFYehZcJEcJEcJEcJEeiacFYeibcJEcJEeiccFYcFYcFYcIPcIPcIPcIPcIPcIPcIPcIPcIPcIPcIPcJncIRcJJcJJcKKcKbcKbcKbcKbcKbcKbcKbcKbcKbcKLcJJcJJcKMcKAcKAcKAcKAcKAcJKcKNcKjcJNcIRcJQcJQcJQcIRcKOcKOcKPcKOcKOcKFcKGcKGcIRaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeeJaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadqLdqLdqLdqLaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadqLdqLdqLdqLdqL +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacIXcIPcIPcIPcIPcIPcIPcIPcIPcIPcIPcIPcIPcIPcIPcIPcIPcIPcIPcIPcIPcIPcIPcIPcIPcFYdjbcJEcJEcJEcJEeiacFYeibcJEcJEeiccFYcFYcFYcIPcIPcIPcIPcIPcIPcIPcIPcIPcIPcIPcJncIRcJJcJJcKKcKbcKbcKbcKbcKbcKbcKbcKbcKbcKLcJJcJJcKMcKAcKAcKAcKAcKAcJKcKNcKjcJNcIRcJQcJQcJQcIRcKOcKOcKPcKOcKOcKFcKGcKGcIRaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeeJaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadqLdqLdqLdqLaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadqLdqLdqLdqLdqL aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacIXcIPcIPcIPcIPcIPcIPcIPcIPcIPcIPcIPcIPcIPcIPcIPcIPcIPcIPcIPcIPcIYdpicJDehWcFYehXefCefCdvmcJEcFYcFYehYcJEcJEcKScFYefJefKcFYdmUdmUdmUdmUdmUdmUdmTcLacLbcIPcJncIRcJJcJJcLccLdcLecLecLecLecLecLecLecLfcJIcJJcJJcJKcLgcLhcLicLjcLkcJKcLlcKjcJOcIRcJQcJQcJQcIRcLmcLmcKjcLmcLmcKFcKGcKGcIRaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeeOaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadqLdqLdqLdqLdqLaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadqLdqLdqLdqLdqL aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacJvcJwcJwcJwcJwcJwcJwcJwcJwcJwcJwcJwcJwcJwcJRcJycJwcJwcJwcJzcJRcJScJBcJDdmCcFYcIPcFYcFYcFYcJEcFYdmEcJEcJEcJEcKTcFYcKXcLrcMxdmPdmPdmPdmPdmPdmPdmBcIPcIPcIPcIPcIPcJJcJJcLccLvcLwcJJcLxcLycLzcJJcLwcLvcJIcJJcJJcJKcJKcJKcJKcJKcJKcJKcLlcKjcJOcIRcJQcJQcJQcIRcLAcLAcKjcLAcLAcKFcKGcKGcIRaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeeJaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadqLdqLdqLdqLdqLdqLaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadqLdqLdqLdqL aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacIXcIPcIPcIPcIPcIPcIPcIPcIPcIPcIPcIPcIPcIPcIPcIPcIPcIPcIPcIPcIPcIYcKqcJDcOwcFYdiXcOLcOvcFYcJEcFYdiPdiPcJEcJEcKUcFYcKXdvmcIPcLHcLIcLIcLIcLJcLIcLKcIPcLLcLLcLLcIPcJJcJJcLMcLNcLOcLPcLQcLRcLScLTcLUcLNcLVcJJcJJcIRcLWcLWcLWcLWcLWcIRcIRcKkcIRcIRcIRcKkcIRcIRcKjcKjcKjcKjcKjcKFcKGcKGcIRaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeeJaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadqLdqLdqLdqLdqLdqLdqLaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadqLdqL -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacLncGbcGbcGbcGbcGbcGbcGbcGbcGbcGbcGbcGbcGbdptcGacGbcGbcGbcHrdptdprdpqdvmdFmcFYdDDcJEdFAcFYcLXcFYcFYcFYcLYcFYcFYcFYcKXcLrcLZcMacMacMacMacMacMacMacMbcMacMacMacMbcJJcJJcJJcMccJJcJJcMdcJJcMdcJJcJJcMccJJcJJcJJcMecJQcJQcJQcJQcJQcMecJQcJQcJQcJQcJQcJQcJQcMecLAcLAcLAcLAcLAcKFcKGcKGcIRaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeeJaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadqLdqLdqLdqLdqLdqLdqLdqLdqLaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadqL +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacLncGbcGbcGbcGbcGbcGbcGbcGbcGbcGbcGbcGbcGbdptcGacGbcGbcGbcHrdptdprdpqdvmdFmcFYcOmcJEdFAcFYcLXcFYcFYcFYcLYcFYcFYcFYcKXcLrcLZcMacMacMacMacMacMacMacMbcMacMacMacMbcJJcJJcJJcMccJJcJJcMdcJJcMdcJJcJJcMccJJcJJcJJcMecJQcJQcJQcJQcJQcMecJQcJQcJQcJQcJQcJQcJQcMecLAcLAcLAcLAcLAcKFcKGcKGcIRaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeeJaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadqLdqLdqLdqLdqLdqLdqLdqLdqLaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadqL aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacJMcFYcFYcFYcFYcFYcFYcFYcFYcFYcFYcFYcFYcFYcFYcFYcFYcFYcFYcFYcFYdmDdmLdvmdmQcFYdngcLtdpjcFYcJEcMhcJEcMicJEcMjdoWdoWcJEcMkcIPcMlcMmcMmcMncMocMpcMqcIPcMrcMrcMrcIPcJJcJJcKKcMscMtcLPcMucJJcMvcLTcMwcMscKLcJJcJJcMecJQcJQcJQcJQcJQcMecJQcJQcJQcJQcJQcJQcJQcMecLAcLAcLAcLAcLAcIRcKkcKkcIRcIRcIRcIRcIRaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeeJaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadqLdqLdqLdqLdqLdqLdqLdqLdqLaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacLncGbcGbcGbcGbcGbcGbcGbcGbcGbcGbcGbcGbcGbcKHcGacGbcGbcGbcHrcKHcKVcKJdvmcLrcKIcLtcJEcJEcKscJEcMycJEcKXcKXcMzcMzcKXcKXcMkcIPcMAcMAcMAcMBcMCcMBcMDcIPcIPcIPcIPcIPcJJcJJcLccLNcMEcJJcMdcJJcMdcJJcMEcLNcJIcJJcJJcIRcMFcMGcMGcMGcMHcIRcIRcMIcIRcIRcIRcKkcIRcIRcIRcMJcMJcMJcIRcIRcJQcJQcJQcMKcJQcMLcIRaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeeJaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadqLdqLdqLdqLdqLdqLdqLdqLdqLaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacJMcFYcFYcFYcFYcFYcFYcFYcFYcFYcFYcFYcFYcFYcFYcFYcFYcFYcFYcFYcFYcFYcFYdvmcJWcFYcFYcFYcFYcFYcMMcFYcJecKXcMNcJdcMOcMPcKXcMkcIPcIPcMQcMRcMScMTcMUcMVcMQaaaaaaaaacIRcJJcJJcLccIRcIRcMWcMXcJJcMYcMZcIRcIRcJIcJJcJJcIRaaaaaaaaaaaaaaacIRcNacNbcIRcKjcNccKjcKjcNdcNecNfcNfcNfcNgcIRcJQcJQcKmcKmcJQcJQcNhaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeeJaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadqLdqLdqLdqLdqLaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa @@ -11669,11 +11667,11 @@ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacFYdmycJEcJEcJEcJEcJEeiscFYdzScJEcJEdppcJEcJEeireiqeipeiocMQcNrcNrcNrcNrcNLcMQcIRcIRcIRcIRcIRcIRdaQcIRcIRcJJcJJcJJcJJcJJcIRcIRcIRcIRcIRcIRaaaaaaaaaaaaaaacIRcNNcNbcIRcKNcKjcKjcKjcNdaaaaaaaaaaaaaaacIRcJQcNwcKlcKlcNxcJQcNyaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeeJaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacFYeiteiteiueiveiyeixeiwcFYdzSdpndpncFYdpxdpxcFYcFYcFYcFYcMQcNrcNPcNQcNRcNScMQdRydRYdRYdRydRHdRXcJJdRzcIRcIRcIRcOacIRcIRdolaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacIRcIRcIRcIRcIRcIRcIRcIRcNdaaaaaaaaaaaaaaacNUcJQcNwcKlcKlcNxcJQcNyaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeeSeeJeeJeeJeeJeeJeeJeeJeeJeeJeeJeeJeeJeeJeeJeeJeeJeeJeeJeeJeeJeeJeeOeeJeeJeeJeeJeeJeeJeeJeeJeeJeeJeeJeeJeeJeeJeeJeeJeeJeeJeeJeeJeeJeeJeeJeeJeeJeeJeeJeeJeeJeeJeeJeeJeeJeeJeeJeeJeeJ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacFYcFYcFYcFYcFYcFYcFYcFYcFYcFYcFYcFYcNVcNWcNWcNVaaaaaaaaacMQcNrcNXcNYcNZcNYcMQdRydRZdRZdRydRJdRCcJJdRzcIRcJocLVcJJcLMcOhcIRaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacObcJQcJQcOccOccJQcJQcObaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacOdcOecOecOecOecOecOedjfdjfcOecOecOgaaacMQcNrcNrcNrcNrcNrcMQdRydRYdRYdRydRRdRCcJJdRzcIRcJIcJJcJJcJJcLccIRaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacOBdXUdXTcOFaaaaaaaaaaaaaaaaaaaaaaaaaaacIRcOicJQcJQcJQcJQcOjcIRaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacOkcOlcOmdiYeijcOqeikcOpcOpeiEeiEcOecOgcMQcMQcMQcMQcMQcMQcMQdRydRydRydRydRBdRCcJJdRzcIRdRAcORdRAdRDdRAcIRaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacOBdaCdiZdROdaFcOFaaaaaaaaaaaaaaaaaaaaaaaacIRcIRcIRcIRcIRcIRcIRcIRaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacOkcOleilcOpcOpcOpcOpcOpcOpcOpcOpdjbdjaaaaaaaaaaaaaaaaaaacIRdREdRydREdRydRHdRCcJJdRFdRGcJIcJJdRIcJJcMvcNdaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacOVdjccOMcOMdaJcOVaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacOkcOleimeincOHcOHcOHcOHcOHcOpcOpcOecOIaaaaaaaaaaaaaaaaaacIRdREdRydREdRydRJdRCcJJdRFdRGcKacJJcLxdRLcMXcNdaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadXIcOYcOYcOYcOMdXIaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacOQcOecOecOecOecOecOecOecOecOecOecOIaaaaaaaaaaaaaaaaaaaaacIRdREdRydREdRydRRdRQcMEdRTcOydRAdRSdRVdRWdRAcNdaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacOVcZpcOYcOZdaNcOVdaMaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacOdcOecOecOecOedjfdjfcOecOecOgaaacMQcNrcNrcNrcNrcNrcMQdRydRYdRYdRydRRdRCcJJdRzcIRcJIcJJcJJcJJcLccIRaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacOBdXUdXTcOFaaaaaaaaaaaaaaaaaaaaaaaaaaacIRcOicJQcJQcJQcJQcOjcIRaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacOkcOldDDcOqefOcOpcOpeiEeiEcOecOgcMQcMQcMQcMQcMQcMQcMQdRydRydRydRydRBdRCcJJdRzcIRdRAcORdRAdRDdRAcIRaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacOBdaCdiZdROdaFcOFaaaaaaaaaaaaaaaaaaaaaaaacIRcIRcIRcIRcIRcIRcIRcIRaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacOkcOlehZcOpcOpcOpcOpcOpcOpeijdjaaaaaaaaaaaaaaaaaaacIRdREdRydREdRydRHdRCcJJdRFdRGcJIcJJdRIcJJcMvcNdaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacOVdjccOMcOMdaJcOVaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacOkcOleikeincOHcOHcOHcOHcOHcOecOIaaaaaaaaaaaaaaaaaacIRdREdRydREdRydRJdRCcJJdRFdRGcKacJJcLxdRLcMXcNdaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadXIcOYcOYcOYcOMdXIaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacOQcOecOecOecOecOecOecOecOecOIaaaaaaaaaaaaaaaaaaaaacIRdREdRydREdRydRRdRQcMEdRTcOydRAdRSdRVdRWdRAcNdaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacOVcZpcOYcOZdaNcOVdaMaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacOycOycOycOycOycOycOycOycOycOycOycOycOycOycOycOycOycOycOycOycOycOycOycOycOycOycOydRncJJcJJdRmcLccNdcNdcNdaaaaaaaaaaaaaaaaaaaaacOBdTBcPrdXIcSocPpdTBcPpcOFaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacPgcPicPicPicPicPicPicPicPicPicPicPicPicPicPjcPhdiUdiTdRsdRrdRrdRrdRrdRrcOycPkcMscPlcJJcJJcPmcLccMscPkcNdaaaaaaaaaaaaaaaaaaaaacOVdaicOYcZrdYscRPdajcRPcOVaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacPgcPicPicPtcPucPvcPtcPucPudYldYhdYmcPucPxcPycPhcPicPidiVdRrdRrdRrdRrdRrcOycPkcLvcPlcJJcJJcJJcLccLvcPkcNdcNdcNdcNdcNdcNdaaaaaacOVcPLcOYcOYdancRWcRWdakcOVaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa From 4a845beb7dc279fc9f7cf27e539dcf0ca88cce0b Mon Sep 17 00:00:00 2001 From: Amunak Date: Sun, 16 Nov 2014 20:33:25 +0100 Subject: [PATCH 06/27] corrects volume shown in description of beakers --- code/modules/reagents/reagent_containers/glass.dm | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/code/modules/reagents/reagent_containers/glass.dm b/code/modules/reagents/reagent_containers/glass.dm index 9c403f08839..d7099675308 100644 --- a/code/modules/reagents/reagent_containers/glass.dm +++ b/code/modules/reagents/reagent_containers/glass.dm @@ -156,12 +156,16 @@ /obj/item/weapon/reagent_containers/glass/beaker name = "beaker" - desc = "A beaker. Can hold up to 50 units." + desc = "A beaker." icon = 'icons/obj/chemical.dmi' icon_state = "beaker" item_state = "beaker" matter = list("glass" = 500) + New() + ..() + desc += " Can hold up to [volume] units." + on_reagent_change() update_icon() @@ -202,7 +206,7 @@ /obj/item/weapon/reagent_containers/glass/beaker/large name = "large beaker" - desc = "A large beaker. Can hold up to 100 units." + desc = "A large beaker." icon_state = "beakerlarge" matter = list("glass" = 5000) volume = 120 @@ -212,7 +216,7 @@ /obj/item/weapon/reagent_containers/glass/beaker/noreact name = "cryostasis beaker" - desc = "A cryostasis beaker that allows for chemical storage without reactions. Can hold up to 60 units." + desc = "A cryostasis beaker that allows for chemical storage without reactions." icon_state = "beakernoreact" matter = list("glass" = 500) volume = 60 @@ -221,7 +225,7 @@ /obj/item/weapon/reagent_containers/glass/beaker/bluespace name = "bluespace beaker" - desc = "A bluespace beaker, powered by experimental bluespace technology. Can hold up to 300 units." + desc = "A bluespace beaker, powered by experimental bluespace technology." icon_state = "beakerbluespace" matter = list("glass" = 5000) volume = 300 @@ -232,7 +236,7 @@ /obj/item/weapon/reagent_containers/glass/beaker/vial name = "vial" - desc = "A small glass vial. Can hold up to 25 units." + desc = "A small glass vial." icon_state = "vial" matter = list("glass" = 250) volume = 30 From 07b050435fe51d5743de8d55e578fb654f7b573e Mon Sep 17 00:00:00 2001 From: Amunak Date: Sun, 16 Nov 2014 20:34:12 +0100 Subject: [PATCH 07/27] fixes redundant information for a custom beaker description --- code/modules/customitems/item_defines.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/modules/customitems/item_defines.dm b/code/modules/customitems/item_defines.dm index 57e45c8bbae..c0bfd97ac14 100644 --- a/code/modules/customitems/item_defines.dm +++ b/code/modules/customitems/item_defines.dm @@ -358,7 +358,7 @@ /obj/item/weapon/reagent_containers/glass/beaker/large/fluff/nashida_bishara_1 //rukral:Nashida Bisha'ra name = "Nashida's Etched Beaker" - desc = "The message: 'Please do not be removing this beaker from the chemistry lab. If lost, return to Nashida Bisha'ra' can be seen etched into the side of this 100 unit beaker." + desc = "The message: 'Please do not be removing this beaker from the chemistry lab. If lost, return to Nashida Bisha'ra' can be seen etched into the side of this large beaker." icon = 'icons/obj/chemical.dmi' icon_state = "beakerlarge" matter = list("glass" = 5000) From 9eb6dfdef45ef99e2861b2976800f6ddd3710aea Mon Sep 17 00:00:00 2001 From: mwerezak Date: Sun, 16 Nov 2014 14:43:38 -0500 Subject: [PATCH 08/27] Fixes #7026 Uploads species var from human to carbon mobs. --- code/WorkInProgress/Cib/meme.dm | 6 +++++- code/game/gamemodes/cult/runes.dm | 10 +++++++--- code/game/machinery/doors/airlock.dm | 5 ++++- code/game/machinery/suit_storage_unit.dm | 20 +++++++++++-------- code/game/objects/structures/morgue.dm | 8 +++++++- .../mob/living/carbon/alien/diona/diona.dm | 1 + .../mob/living/carbon/carbon_defines.dm | 1 + .../mob/living/carbon/carbon_powers.dm | 7 ++++++- code/modules/mob/living/carbon/human/human.dm | 1 - .../mob/living/carbon/human/human_damage.dm | 2 +- .../mob/living/carbon/human/human_movement.dm | 3 ++- .../mob/living/carbon/metroid/powers.dm | 16 ++++++++------- .../mob/living/carbon/monkey/monkey.dm | 13 ++++++------ code/modules/organs/organ.dm | 2 +- code/modules/organs/organ_external.dm | 5 +++-- code/modules/reagents/Chemistry-Reagents.dm | 15 ++++++++------ 16 files changed, 75 insertions(+), 40 deletions(-) diff --git a/code/WorkInProgress/Cib/meme.dm b/code/WorkInProgress/Cib/meme.dm index 880f21bad51..cbd536da936 100644 --- a/code/WorkInProgress/Cib/meme.dm +++ b/code/WorkInProgress/Cib/meme.dm @@ -292,8 +292,12 @@ mob/living/parasite/meme/verb/Agony() spawn // backup the host incase we switch hosts after using the verb - var/mob/host = src.host + var/mob/living/carbon/host = src.host + if (host.species && (host.species.flags & NO_PAIN)) + usr << "Nothing seems to happen." + return + host.paralysis = max(host.paralysis, 2) host.flash_weak_pain() diff --git a/code/game/gamemodes/cult/runes.dm b/code/game/gamemodes/cult/runes.dm index aae0870d8ca..337bfa50bb8 100644 --- a/code/game/gamemodes/cult/runes.dm +++ b/code/game/gamemodes/cult/runes.dm @@ -104,9 +104,13 @@ var/list/sacrificed = list() if(M.stat==2) continue usr.say("Mah[pick("'","`")]weyh pleggh at e'ntrath!") - M.visible_message("\red [M] writhes in pain as the markings below \him glow a bloody red.", \ - "\red AAAAAAHHHH!", \ - "\red You hear an anguished scream.") + + if (M.species && (M.species.flags & NO_PAIN)) + M.visible_message("\red The markings below [M] glow a bloody red.") + else + M.visible_message("\red [M] writhes in pain as the markings below \him glow a bloody red.", \ + "\red AAAAAAHHHH!", \ + "\red You hear an anguished scream.") if(is_convertable_to_cult(M.mind) && !jobban_isbanned(M, "cultist"))//putting jobban check here because is_convertable uses mind as argument // Mostly for the benefit of those who resist, but it makes sense for even those who join to have some.. effect. diff --git a/code/game/machinery/doors/airlock.dm b/code/game/machinery/doors/airlock.dm index 443e6429636..2e563bd9a57 100644 --- a/code/game/machinery/doors/airlock.dm +++ b/code/game/machinery/doors/airlock.dm @@ -1295,7 +1295,10 @@ About the new airlock wires panel: S.loc = M.loc spawn(20) del(S) - M.emote("scream") + if (iscarbon(M)) + var/mob/living/carbon/C = M + if (!(C.species && (C.species.flags & NO_PAIN))) + M.emote("scream") var/turf/location = src.loc if(istype(location, /turf/simulated)) location.add_blood(M) diff --git a/code/game/machinery/suit_storage_unit.dm b/code/game/machinery/suit_storage_unit.dm index 8fc6fa35993..8ae68ce862b 100644 --- a/code/game/machinery/suit_storage_unit.dm +++ b/code/game/machinery/suit_storage_unit.dm @@ -329,14 +329,18 @@ for(i=0,i<4,i++) sleep(50) if(src.OCCUPANT) - if(src.issuperUV) - var/burndamage = rand(28,35) - OCCUPANT.take_organ_damage(0,burndamage) - OCCUPANT.emote("scream") - else - var/burndamage = rand(6,10) - OCCUPANT.take_organ_damage(0,burndamage) - OCCUPANT.emote("scream") + var/datum/organ/internal/diona/nutrients/rad_organ = locate() in OCCUPANT.internal_organs + if (!rad_organ) + if(src.issuperUV) + var/burndamage = rand(28,35) + OCCUPANT.take_organ_damage(0,burndamage) + if (!(OCCUPANT.species && (OCCUPANT.species.flags & NO_PAIN))) + OCCUPANT.emote("scream") + else + var/burndamage = rand(6,10) + OCCUPANT.take_organ_damage(0,burndamage) + if (!(OCCUPANT.species && (OCCUPANT.species.flags & NO_PAIN))) + OCCUPANT.emote("scream") if(i==3) //End of the cycle if(!src.issuperUV) if(src.HELMET) diff --git a/code/game/objects/structures/morgue.dm b/code/game/objects/structures/morgue.dm index eea03587634..d08ce8ec201 100644 --- a/code/game/objects/structures/morgue.dm +++ b/code/game/objects/structures/morgue.dm @@ -319,7 +319,13 @@ for(var/mob/living/M in contents) if (M.stat!=2) - M.emote("scream") + if (!iscarbon(M)) + M.emote("scream") + else + var/mob/living/carbon/C = M + if (!(C.species && (C.species.flags & NO_PAIN))) + C.emote("scream") + //Logging for this causes runtimes resulting in the cremator locking up. Commenting it out until that's figured out. //M.attack_log += "\[[time_stamp()]\] Has been cremated by [user]/[user.ckey]" //No point in this when the mob's about to be deleted //user.attack_log +="\[[time_stamp()]\] Cremated [M]/[M.ckey]" diff --git a/code/modules/mob/living/carbon/alien/diona/diona.dm b/code/modules/mob/living/carbon/alien/diona/diona.dm index 3f4bc2105d8..a91f55d4b6b 100644 --- a/code/modules/mob/living/carbon/alien/diona/diona.dm +++ b/code/modules/mob/living/carbon/alien/diona/diona.dm @@ -19,6 +19,7 @@ /mob/living/carbon/alien/diona/New() ..() + 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 diff --git a/code/modules/mob/living/carbon/carbon_defines.dm b/code/modules/mob/living/carbon/carbon_defines.dm index feed242bef0..bf72360399f 100644 --- a/code/modules/mob/living/carbon/carbon_defines.dm +++ b/code/modules/mob/living/carbon/carbon_defines.dm @@ -1,5 +1,6 @@ /mob/living/carbon/ gender = MALE + var/datum/species/species //Contains icon generation and language information, set during New(). var/list/stomach_contents = list() var/list/datum/disease2/disease/virus2 = list() var/antibodies = 0 diff --git a/code/modules/mob/living/carbon/carbon_powers.dm b/code/modules/mob/living/carbon/carbon_powers.dm index f4bc6e4d68f..7dc0f45087a 100644 --- a/code/modules/mob/living/carbon/carbon_powers.dm +++ b/code/modules/mob/living/carbon/carbon_powers.dm @@ -72,7 +72,12 @@ if(B.host_brain.ckey) src << "\red You send a punishing spike of psychic agony lancing into your host's brain." - B.host_brain << "\red Horrific, burning agony lances through you, ripping a soundless scream from your trapped mind!" + + if (species && (species.flags & NO_PAIN)) + B.host_brain << "\red You feel a strange sensation as a foreign influence prods your mind." + src << "\red It doesn't seem to be as effective as you hoped." + else + B.host_brain << "\red Horrific, burning agony lances through you, ripping a soundless scream from your trapped mind!" /mob/living/carbon/proc/spawn_larvae() set category = "Abilities" diff --git a/code/modules/mob/living/carbon/human/human.dm b/code/modules/mob/living/carbon/human/human.dm index 275790fe5e6..59e402548a4 100644 --- a/code/modules/mob/living/carbon/human/human.dm +++ b/code/modules/mob/living/carbon/human/human.dm @@ -6,7 +6,6 @@ icon_state = "body_m_s" var/list/hud_list[9] - var/datum/species/species //Contains icon generation and language information, set during New(). var/embedded_flag //To check if we've need to roll for damage on movement while an item is imbedded in us. /mob/living/carbon/human/New(var/new_loc, var/new_species = null) diff --git a/code/modules/mob/living/carbon/human/human_damage.dm b/code/modules/mob/living/carbon/human/human_damage.dm index 0c21befe295..579927ec04b 100644 --- a/code/modules/mob/living/carbon/human/human_damage.dm +++ b/code/modules/mob/living/carbon/human/human_damage.dm @@ -351,7 +351,7 @@ This function restores all organs. //Handle other types of damage if((damagetype != BRUTE) && (damagetype != BURN)) - if(damagetype == HALLOSS) + if(damagetype == HALLOSS && !(species && (species.flags & NO_PAIN))) if ((damage > 25 && prob(20)) || (damage > 50 && prob(60))) emote("scream") diff --git a/code/modules/mob/living/carbon/human/human_movement.dm b/code/modules/mob/living/carbon/human/human_movement.dm index 30c883becbc..c5436aa48f2 100644 --- a/code/modules/mob/living/carbon/human/human_movement.dm +++ b/code/modules/mob/living/carbon/human/human_movement.dm @@ -17,7 +17,8 @@ var/health_deficiency = (100 - health) if(health_deficiency >= 40) tally += (health_deficiency / 25) - if(halloss >= 10) tally += (halloss / 10) + if (!(species && (species.flags & NO_PAIN))) + if(halloss >= 10) tally += (halloss / 10) //halloss shouldn't slow you down if you can't even feel it var/hungry = (500 - nutrition)/5 // So overeat would be 100 and default level would be 80 if (hungry >= 70) tally += hungry/50 diff --git a/code/modules/mob/living/carbon/metroid/powers.dm b/code/modules/mob/living/carbon/metroid/powers.dm index 15fdb60349f..23ca8acbf69 100644 --- a/code/modules/mob/living/carbon/metroid/powers.dm +++ b/code/modules/mob/living/carbon/metroid/powers.dm @@ -61,13 +61,15 @@ loc = M.loc if(prob(15) && M.client && istype(M, /mob/living/carbon)) - M << "[pick("You can feel your body becoming weak!", \ - "You feel like you're about to die!", \ - "You feel every part of your body screaming in agony!", \ - "A low, rolling pain passes through your body!", \ - "Your body feels as if it's falling apart!", \ - "You feel extremely weak!", \ - "A sharp, deep pain bathes every inch of your body!")]" + var/mob/living/carbon/C = M + if (!(C.species && (C.species.flags & NO_PAIN))) + M << "[pick("You can feel your body becoming weak!", \ + "You feel like you're about to die!", \ + "You feel every part of your body screaming in agony!", \ + "A low, rolling pain passes through your body!", \ + "Your body feels as if it's falling apart!", \ + "You feel extremely weak!", \ + "A sharp, deep pain bathes every inch of your body!")]" if(istype(M, /mob/living/carbon)) Victim.adjustCloneLoss(rand(5,6)) diff --git a/code/modules/mob/living/carbon/monkey/monkey.dm b/code/modules/mob/living/carbon/monkey/monkey.dm index 4371c68f8f5..aff3c11f332 100644 --- a/code/modules/mob/living/carbon/monkey/monkey.dm +++ b/code/modules/mob/living/carbon/monkey/monkey.dm @@ -41,6 +41,9 @@ reagents = R R.my_atom = src + species = all_species[greaterform] + add_language(species.language) + if(name == initial(name)) //To stop Pun-Pun becoming generic. name = "[name] ([rand(1, 1000)])" real_name = name @@ -78,24 +81,22 @@ /mob/living/carbon/monkey/unathi/New() - ..() dna.mutantrace = "lizard" greaterform = "Unathi" - add_language("Sinta'unathi") + ..() /mob/living/carbon/monkey/skrell/New() - ..() + dna.mutantrace = "skrell" greaterform = "Skrell" - add_language("Skrellian") + ..() /mob/living/carbon/monkey/tajara/New() - ..() dna.mutantrace = "tajaran" greaterform = "Tajara" - add_language("Siik'tajr") + ..() /mob/living/carbon/monkey/movement_delay() var/tally = 0 diff --git a/code/modules/organs/organ.dm b/code/modules/organs/organ.dm index a69ee36c7d6..fe3937cf67d 100644 --- a/code/modules/organs/organ.dm +++ b/code/modules/organs/organ.dm @@ -107,7 +107,7 @@ // standing is poor if(leg_tally <= 0 && !paralysis && !(lying || resting) && prob(5)) - if(species && species.flags & NO_PAIN) + if(!(species && (species.flags & NO_PAIN))) emote("scream") emote("collapse") paralysis = 10 diff --git a/code/modules/organs/organ_external.dm b/code/modules/organs/organ_external.dm index 6bbf2553c9b..c0c23975188 100644 --- a/code/modules/organs/organ_external.dm +++ b/code/modules/organs/organ_external.dm @@ -98,7 +98,8 @@ brute -= brute / 2 if(status & ORGAN_BROKEN && prob(40) && brute) - owner.emote("scream") //getting hit on broken hand hurts + if (!(owner.species && (owner.species.flags & NO_PAIN))) + owner.emote("scream") //getting hit on broken hand hurts if(used_weapon) add_autopsy_data("[used_weapon]", brute + burn) @@ -648,7 +649,7 @@ Note that amputating the affected organ does in fact remove the infection from t if(status & ORGAN_ROBOT && !no_explode && sabotaged) owner.visible_message("\red \The [owner]'s [display_name] explodes violently!",\ "\red Your [display_name] explodes!",\ - "You hear an explosion followed by a scream!") + "You hear an explosion!") explosion(get_turf(owner),-1,-1,2,3) var/datum/effect/effect/system/spark_spread/spark_system = new /datum/effect/effect/system/spark_spread() spark_system.set_up(5, 0, owner) diff --git a/code/modules/reagents/Chemistry-Reagents.dm b/code/modules/reagents/Chemistry-Reagents.dm index 885301fa4dd..6389ab94eef 100644 --- a/code/modules/reagents/Chemistry-Reagents.dm +++ b/code/modules/reagents/Chemistry-Reagents.dm @@ -1941,7 +1941,8 @@ datum if(affecting.take_damage(4*toxpwr, 2*toxpwr)) H.UpdateDamageIcon() if(prob(meltprob)) //Applies disfigurement - H.emote("scream") + if (!(H.species && (H.species.flags & NO_PAIN))) + H.emote("scream") H.status_flags |= DISFIGURED else M.take_organ_damage(min(6*toxpwr, volume * toxpwr)) // uses min() and volume to make sure they aren't being sprayed in trace amounts (1 unit != insta rape) -- Doohl @@ -2103,7 +2104,7 @@ datum if ( eyes_covered && mouth_covered ) victim << "\red Your [safe_thing] protects you from the pepperspray!" return - else if ( mouth_covered ) // Reduced effects if partially protected + else if ( eyes_covered ) // Reduced effects if partially protected victim << "\red Your [safe_thing] protect you from most of the pepperspray!" victim.eye_blurry = max(M.eye_blurry, 15) victim.eye_blind = max(M.eye_blind, 5) @@ -2112,13 +2113,15 @@ datum //victim.Paralyse(10) //victim.drop_item() return - else if ( eyes_covered ) // Eye cover is better than mouth cover - victim << "\red Your [safe_thing] protects your eyes from the pepperspray!" - victim.emote("scream") + else if ( mouth_covered ) // Mouth cover is better than eye cover + victim << "\red Your [safe_thing] protects your face from the pepperspray!" + if (!(victim.species && (victim.species.flags & NO_PAIN))) + victim.emote("scream") victim.eye_blurry = max(M.eye_blurry, 5) return else // Oh dear :D - victim.emote("scream") + if (!(victim.species && (victim.species.flags & NO_PAIN))) + victim.emote("scream") victim << "\red You're sprayed directly in the eyes with pepperspray!" victim.eye_blurry = max(M.eye_blurry, 25) victim.eye_blind = max(M.eye_blind, 10) From 72c6de26a4575e2b4d19d50d3324d1cb661bf5c1 Mon Sep 17 00:00:00 2001 From: mwerezak Date: Sun, 16 Nov 2014 21:58:40 -0500 Subject: [PATCH 09/27] Adjusts damaged stance system --- .../mob/living/carbon/human/human_movement.dm | 3 +-- code/modules/mob/mob_defines.dm | 2 +- code/modules/organs/organ.dm | 22 +++++++++++-------- 3 files changed, 15 insertions(+), 12 deletions(-) diff --git a/code/modules/mob/living/carbon/human/human_movement.dm b/code/modules/mob/living/carbon/human/human_movement.dm index c72574495d7..0f0e4484cb8 100644 --- a/code/modules/mob/living/carbon/human/human_movement.dm +++ b/code/modules/mob/living/carbon/human/human_movement.dm @@ -55,8 +55,7 @@ if (bodytemperature < 283.222) tally += (283.222 - bodytemperature) / 10 * 1.75 - if(can_stand <= 1) - tally += 5 //hopping around on one foot is slow + tally += 2*stance_damage //damaged/missing feet or legs is slow if(mRun in mutations) tally = 0 diff --git a/code/modules/mob/mob_defines.dm b/code/modules/mob/mob_defines.dm index d037b6fd31a..d1edb9cdcfa 100644 --- a/code/modules/mob/mob_defines.dm +++ b/code/modules/mob/mob_defines.dm @@ -213,7 +213,7 @@ var/universal_speak = 0 // Set to 1 to enable the mob to speak to everyone -- TLE var/universal_understand = 0 // Set to 1 to enable the mob to understand everyone, not necessarily speak - var/can_stand = 2 //Whether this mob have ability to stand + var/stance_damage = 0 //Whether this mob's ability to stand has been affected var/immune_to_ssd = 0 diff --git a/code/modules/organs/organ.dm b/code/modules/organs/organ.dm index 72af3d913a9..9acf108130d 100644 --- a/code/modules/organs/organ.dm +++ b/code/modules/organs/organ.dm @@ -104,16 +104,20 @@ W.germ_level += 1 /mob/living/carbon/human/proc/handle_stance() - can_stand = 2 + if (lying || resting) + return // don't need to process any of this if they aren't standing anyways + + stance_damage = 0 for (var/organ in list("l_leg","l_foot","r_leg","r_foot")) var/datum/organ/external/E = organs_by_name[organ] - if ((E.status & ORGAN_DESTROYED) || E.is_malfunctioning() || (E.is_broken() && !(E.status & ORGAN_SPLINTED)) || !E.is_usable()) - can_stand-- // let it fail even if just foot&leg + if (E.status & ORGAN_DESTROYED) + stance_damage += 2 // let it fail even if just foot&leg + else if (E.is_malfunctioning() || (E.is_broken() && !(E.status & ORGAN_SPLINTED)) || !E.is_usable()) + stance_damage += 1 // standing is poor - if(can_stand <= 0) - Weaken(10) - if (!(lying || resting)) - if(species && !(species.flags & NO_PAIN)) - emote("scream") - emote("collapse") \ No newline at end of file + if(stance_damage >= 4 || (stance_damage >= 2 && prob(5))) + Weaken(5) + if(species && !(species.flags & NO_PAIN)) + emote("scream") + emote("collapse") \ No newline at end of file From 2e222523e15e31101cca210134c37f2b9d03793b Mon Sep 17 00:00:00 2001 From: mwerezak Date: Sat, 8 Nov 2014 18:01:04 -0500 Subject: [PATCH 10/27] Fixes inverted slicing check --- code/modules/reagents/reagent_containers/food/snacks.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/modules/reagents/reagent_containers/food/snacks.dm b/code/modules/reagents/reagent_containers/food/snacks.dm index 6f738307701..3c500afcdd8 100644 --- a/code/modules/reagents/reagent_containers/food/snacks.dm +++ b/code/modules/reagents/reagent_containers/food/snacks.dm @@ -196,7 +196,7 @@ return /obj/item/weapon/reagent_containers/food/snacks/proc/is_sliceable() - return (slices_num <= 0 || !slices_num || !slice_path) + return (slices_num && slice_path && slices_num > 0) /obj/item/weapon/reagent_containers/food/snacks/Del() if(contents) From af8da7de03cdbe79d7c6a96691e0233034ddd88d Mon Sep 17 00:00:00 2001 From: mwerezak Date: Sun, 16 Nov 2014 22:30:07 -0500 Subject: [PATCH 11/27] Adjusts glass sheet construction menu input --- code/game/objects/items/stacks/sheets/glass.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/game/objects/items/stacks/sheets/glass.dm b/code/game/objects/items/stacks/sheets/glass.dm index 3111545aecc..ca80c8f1d28 100644 --- a/code/game/objects/items/stacks/sheets/glass.dm +++ b/code/game/objects/items/stacks/sheets/glass.dm @@ -70,7 +70,7 @@ return 0 var/title = "Sheet-[name]" title += " ([src.amount] sheet\s left)" - switch(input(title, "What would you like to construct?") in (construction_options + "Cancel")) + switch(input(title, "What would you like to construct?") as null|anything in construction_options) if("One Direction") if(!src) return 1 if(src.loc != user) return 1 From abd3551754424c364307f58eaf5f037551d4ddea Mon Sep 17 00:00:00 2001 From: DJSnapshot Date: Mon, 17 Nov 2014 01:30:21 -0800 Subject: [PATCH 12/27] headmin requested updates to adminhelps. Makes players select between three different types of help to narrow down what players are needing help for. That way mentors get only those relating to needing mentor help. --- code/modules/admin/admin.dm | 3 + code/modules/admin/verbs/adminhelp.dm | 93 +++++++++++++++++++++++---- 2 files changed, 84 insertions(+), 12 deletions(-) diff --git a/code/modules/admin/admin.dm b/code/modules/admin/admin.dm index 5b369dc9f4b..98db047b886 100644 --- a/code/modules/admin/admin.dm +++ b/code/modules/admin/admin.dm @@ -1141,6 +1141,9 @@ var/global/floorIsLava = 0 if(2) var/ref_mob = "\ref[M]" return "[key_name(C, link, name, highlight_special)](?) (PP) (VV) (SM) (JMP) (CA)" + if(3) + var/ref_mob = "\ref[M]" + return "[key_name(C, link, name, highlight_special)](VV)(JMP)" diff --git a/code/modules/admin/verbs/adminhelp.dm b/code/modules/admin/verbs/adminhelp.dm index 073ad330fa5..7c8ac39db10 100644 --- a/code/modules/admin/verbs/adminhelp.dm +++ b/code/modules/admin/verbs/adminhelp.dm @@ -3,7 +3,7 @@ //This is a list of words which are ignored by the parser when comparing message contents for names. MUST BE IN LOWER CASE! var/list/adminhelp_ignored_words = list("unknown","the","a","an","of","monkey","alien","as") -/client/verb/adminhelp(msg as text) +/client/verb/adminhelp() set category = "Admin" set name = "Adminhelp" @@ -15,8 +15,7 @@ var/list/adminhelp_ignored_words = list("unknown","the","a","an","of","monkey"," if(prefs.muted & MUTE_ADMINHELP) src << "Error: Admin-PM: You cannot send adminhelps (Muted)." return - if(src.handle_spam_prevention(msg,MUTE_ADMINHELP)) - return + adminhelped = 1 //Determines if they get the message to reply by clicking the name. @@ -26,6 +25,17 @@ var/list/adminhelp_ignored_words = list("unknown","the","a","an","of","monkey"," src.verbs += /client/verb/adminhelp // 2 minute cool-down for adminhelps src.verbs += /client/verb/adminhelp // 2 minute cool-down for adminhelps//Go to hell **/ + var/msg + var/list/type = list ("Gameplay/Roleplay question", "Rule/Gameplay issue", "Bug report") + var/selected_type = input("Pick a category.", "Admin Help", null, null) as null|anything in type + if(selected_type) + msg = input("Please enter your message:", "Admin Help", null, null) as text + + var/selected_upper = uppertext(selected_type) + + if(src.handle_spam_prevention(msg,MUTE_ADMINHELP)) + return + //clean the input msg if(!msg) return @@ -33,7 +43,7 @@ var/list/adminhelp_ignored_words = list("unknown","the","a","an","of","monkey"," if(!msg) return var/original_msg = msg - + //explode the input msg into a list var/list/msglist = text2list(msg, " ") @@ -91,11 +101,70 @@ var/list/adminhelp_ignored_words = list("unknown","the","a","an","of","monkey"," if(!mob) return //this doesn't happen var/ref_mob = "\ref[mob]" - var/mentor_msg = "\blue HELP: [get_options_bar(mob, 2, 1, 1, 0)][ai_found ? " (CL)" : ""]: [msg]" - msg = "\blue HELP: [get_options_bar(mob, 2, 1, 1)][ai_found ? " (CL)" : ""]: [msg]" - //send this msg to all admins + var/mentor_msg = "\blue [selected_upper]: [get_options_bar(mob, 0, 0, 1, 0)][ai_found ? " (CL)" : ""]: [msg]" + var/dev_msg = "\blue [selected_upper]: [get_options_bar(mob, 3, 0, 1, 0)][ai_found ? " (CL)" : ""]: [msg]" + msg = "\blue [selected_upper]: [get_options_bar(mob, 2, 1, 1)][ai_found ? " (CL)" : ""]: [msg]" + + + var/admin_number_afk = 0 + + var/list/mentorholders = list() + var/list/debugholders = list() + var/list/adminholders = list() for(var/client/X in admins) + if((R_MENTOR|R_ADMIN) & X.holder.rights) + mentorholders += X + if(R_MENTOR & X.holder.rights) + if(X.is_afk()) + admin_number_afk++ + if(R_DEBUG & X.holder.rights) + debugholders += X + if(!(R_ADMIN & X.holder.rights)) + if(X.is_afk()) + admin_number_afk++ + if(R_ADMIN & X.holder.rights) + adminholders += X + if(X.is_afk()) + admin_number_afk++ + + switch(selected_type) + if("Gameplay/Roleplay question") + if(mentorholders.len) + for(var/client/X in mentorholders) + if(R_ADMIN & X.holder.rights) + if(X.prefs.toggles & SOUND_ADMINHELP) + X << 'sound/effects/adminhelp.ogg' + X << msg + else + if(R_MENTOR & X.holder.rights) + if(X.prefs.toggles & SOUND_ADMINHELP) + X << 'sound/effects/adminhelp.ogg' + X << mentor_msg + if("Rule/Gameplay issue") + if(adminholders.len) + for(var/client/X in adminholders) + if(X.prefs.toggles & SOUND_ADMINHELP) + X << 'sound/effects/adminhelp.ogg' + X << msg + if("Bug report") + if(debugholders.len) + for(var/client/X in debugholders) + if(R_ADMIN & X.holder.rights) + if(X.prefs.toggles & SOUND_ADMINHELP) + X << 'sound/effects/adminhelp.ogg' + X << msg + else + if (R_DEBUG & X.holder.rights) + if(X.prefs.toggles & SOUND_ADMINHELP) + X << 'sound/effects/adminhelp.ogg' + X << dev_msg + + + + + + /*for(var/client/X in admins) if((R_ADMIN|R_MOD|R_MENTOR) & X.holder.rights) if(X.is_afk()) admin_number_afk++ @@ -104,19 +173,19 @@ var/list/adminhelp_ignored_words = list("unknown","the","a","an","of","monkey"," if(X.holder.rights == R_MENTOR) X << mentor_msg // Mentors won't see coloring of names on people with special_roles (Antags, etc.) else - X << msg + X << msg*/ //show it to the person adminhelping too - src << "PM to-Admins: [original_msg]" + src << "PM to-Staff: [original_msg]" var/admin_number_present = admins.len - admin_number_afk log_admin("HELP: [key_name(src)]: [original_msg] - heard by [admin_number_present] non-AFK admins.") if(admin_number_present <= 0) if(!admin_number_afk) - send2adminirc("ADMINHELP from [key_name(src)]: [html_decode(original_msg)] - !!No admins online!!") + send2adminirc("[selected_upper] from [key_name(src)]: [html_decode(original_msg)] - !!No admins online!!") else - send2adminirc("ADMINHELP from [key_name(src)]: [html_decode(original_msg)] - !!All admins AFK ([admin_number_afk])!!") + send2adminirc("[selected_upper] from [key_name(src)]: [html_decode(original_msg)] - !!All admins AFK ([admin_number_afk])!!") else - send2adminirc("ADMINHELP from [key_name(src)]: [html_decode(original_msg)]") + send2adminirc("[selected_upper] from [key_name(src)]: [html_decode(original_msg)]") feedback_add_details("admin_verb","AH") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! return From e212b4170b261f633008fdbb097b64f8eb64f5e6 Mon Sep 17 00:00:00 2001 From: DJSnapshot Date: Mon, 17 Nov 2014 02:23:04 -0800 Subject: [PATCH 13/27] R_HOST is now a thing. Also allows gives headmins a global note remove. --- code/modules/admin/admin.dm | 17 +++++++++++++++-- code/modules/admin/admin_ranks.dm | 2 +- code/setup.dm | 5 ++--- 3 files changed, 18 insertions(+), 6 deletions(-) diff --git a/code/modules/admin/admin.dm b/code/modules/admin/admin.dm index 98db047b886..a9dd96241d3 100644 --- a/code/modules/admin/admin.dm +++ b/code/modules/admin/admin.dm @@ -281,7 +281,7 @@ var/global/floorIsLava = 0 I.rank = "N/A" update_file = 1 dat += "[I.content] by [I.author] ([I.rank]) on [I.timestamp] " - if(I.author == usr.key || I.author == "Adminbot") + if(I.author == usr.key || I.author == "Adminbot" || ishost(usr)) dat += "Remove" dat += "

" if(update_file) info << infos @@ -1146,7 +1146,20 @@ var/global/floorIsLava = 0 return "[key_name(C, link, name, highlight_special)](VV)(JMP)" - +/proc/ishost(whom) + if(!whom) + return 0 + var/client/C + var/mob/M + if(istype(whom, /client)) + C = whom + if(istype(whom, /mob)) + M = whom + C = M.client + if(R_HOST & C.holder.rights) + return 1 + else + return 0 // // //ALL DONE diff --git a/code/modules/admin/admin_ranks.dm b/code/modules/admin/admin_ranks.dm index a9e428953b8..90c5cc0f6a6 100644 --- a/code/modules/admin/admin_ranks.dm +++ b/code/modules/admin/admin_ranks.dm @@ -37,7 +37,7 @@ var/list/admin_ranks = list() //list of all ranks with associated rights if("stealth") rights |= R_STEALTH if("rejuv","rejuvinate") rights |= R_REJUVINATE if("varedit") rights |= R_VAREDIT - if("everything","host","all") rights |= R_HOST + if("everything","host","all") rights |= R_HOST | R_BUILDMODE | R_ADMIN | R_BAN | R_FUN | R_SERVER | R_DEBUG | R_PERMISSIONS | R_POSSESS | R_STEALTH | R_REJUVINATE | R_VAREDIT | R_SOUNDS | R_SPAWN | R_MOD| R_MENTOR if("sound","sounds") rights |= R_SOUNDS if("spawn","create") rights |= R_SPAWN if("mod") rights |= R_MOD diff --git a/code/setup.dm b/code/setup.dm index 4b64a0821ef..566f99f7248 100644 --- a/code/setup.dm +++ b/code/setup.dm @@ -629,10 +629,9 @@ var/list/liftable_structures = list(\ #define R_SPAWN 4096 #define R_MOD 8192 #define R_MENTOR 16384 +#define R_HOST 32768 -#define R_MAXPERMISSION 16384 //This holds the maximum value for a permission. It is used in iteration, so keep it updated. - -#define R_HOST 65535 +#define R_MAXPERMISSION 32768 //This holds the maximum value for a permission. It is used in iteration, so keep it updated. //Preference toggles #define SOUND_ADMINHELP 1 From 0c84b3284723fad5ce05f5691896a6a93b4ef640 Mon Sep 17 00:00:00 2001 From: DJSnapshot Date: Mon, 17 Nov 2014 02:28:20 -0800 Subject: [PATCH 14/27] small sanity check. --- code/modules/admin/admin_ranks.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/modules/admin/admin_ranks.dm b/code/modules/admin/admin_ranks.dm index 90c5cc0f6a6..5d1f5db452e 100644 --- a/code/modules/admin/admin_ranks.dm +++ b/code/modules/admin/admin_ranks.dm @@ -37,7 +37,7 @@ var/list/admin_ranks = list() //list of all ranks with associated rights if("stealth") rights |= R_STEALTH if("rejuv","rejuvinate") rights |= R_REJUVINATE if("varedit") rights |= R_VAREDIT - if("everything","host","all") rights |= R_HOST | R_BUILDMODE | R_ADMIN | R_BAN | R_FUN | R_SERVER | R_DEBUG | R_PERMISSIONS | R_POSSESS | R_STEALTH | R_REJUVINATE | R_VAREDIT | R_SOUNDS | R_SPAWN | R_MOD| R_MENTOR + if("everything","host","all") rights |= (R_HOST | R_BUILDMODE | R_ADMIN | R_BAN | R_FUN | R_SERVER | R_DEBUG | R_PERMISSIONS | R_POSSESS | R_STEALTH | R_REJUVINATE | R_VAREDIT | R_SOUNDS | R_SPAWN | R_MOD| R_MENTOR) if("sound","sounds") rights |= R_SOUNDS if("spawn","create") rights |= R_SPAWN if("mod") rights |= R_MOD From 9c0ee5ad8a278adec77704e6119a957cd2e9ed48 Mon Sep 17 00:00:00 2001 From: DJSnapshot Date: Mon, 17 Nov 2014 02:40:56 -0800 Subject: [PATCH 15/27] speshul snoflake color for anyone with +everything in their admin_rank because it was requested by headmins. --- code/modules/admin/verbs/adminsay.dm | 6 +++++- code/stylesheet.dm | 1 + 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/code/modules/admin/verbs/adminsay.dm b/code/modules/admin/verbs/adminsay.dm index a312416ccc7..83254f6e0d0 100644 --- a/code/modules/admin/verbs/adminsay.dm +++ b/code/modules/admin/verbs/adminsay.dm @@ -9,8 +9,12 @@ log_admin("[key_name(src)] : [msg]") + var/color = "adminsay" + if(ishost(usr)) + color = "headminsay" + if(check_rights(R_ADMIN,0)) - msg = "ADMIN: [key_name(usr, 1)] (JMP): [msg]" + msg = "ADMIN: [key_name(usr, 1)] (JMP): [msg]" for(var/client/C in admins) if(R_ADMIN & C.holder.rights) C << msg diff --git a/code/stylesheet.dm b/code/stylesheet.dm index 2647e5a0d35..b9d5b303239 100644 --- a/code/stylesheet.dm +++ b/code/stylesheet.dm @@ -20,6 +20,7 @@ em {font-style: normal; font-weight: bold;} .adminobserver {color: #996600; font-weight: bold;} .admin {color: #386aff; font-weight: bold;} .adminsay {color: #9611D4; font-weight: bold;} +.headminsay {color: #5A0A7F; font-weight: bold;} .name { font-weight: bold;} From df63c63a41837e4c00ee1b74aa2318a118f51834 Mon Sep 17 00:00:00 2001 From: PsiOmega Date: Mon, 17 Nov 2014 12:27:29 +0100 Subject: [PATCH 16/27] Fixes #7040. Pipes should now only be considered overlapping if they share connection types. --- code/modules/admin/verbs/atmosdebug.dm | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/code/modules/admin/verbs/atmosdebug.dm b/code/modules/admin/verbs/atmosdebug.dm index f4e163394cb..169d82dba3d 100644 --- a/code/modules/admin/verbs/atmosdebug.dm +++ b/code/modules/admin/verbs/atmosdebug.dm @@ -6,7 +6,7 @@ src << "Only administrators may use this command." return feedback_add_details("admin_verb","CP") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! - + if(alert("WARNING: This command should not be run on a live server. Do you want to continue?", "Check Piping", "No", "Yes") == "No") return @@ -30,11 +30,12 @@ next_turf: for(var/turf/T in world) for(var/dir in cardinal) - var/check = 0 + var/list/connect_types = list(1 = 0, 2 = 0, 3 = 0) for(var/obj/machinery/atmospherics/pipe in T) if(dir & pipe.initialize_directions) - check++ - if(check > 1) + for(var/connect_type in pipe.connect_types) + connect_types[connect_type] += 1 + if(connect_types[1] > 1 || connect_types[2] > 1 || connect_types[3] > 1) usr << "Overlapping pipe ([pipe.name]) located at [T.x],[T.y],[T.z] ([get_area(T)])" continue next_turf usr << "Done" From 5bd25f8b8553a243f97cfa1b561cce0be127512a Mon Sep 17 00:00:00 2001 From: PsiOmega Date: Mon, 17 Nov 2014 12:36:00 +0100 Subject: [PATCH 17/27] Relevant pipe fixes. --- maps/tgstation2.dmm | 58 ++++++++++++++++++++++----------------------- 1 file changed, 29 insertions(+), 29 deletions(-) diff --git a/maps/tgstation2.dmm b/maps/tgstation2.dmm index 449f49ac890..84702cd670b 100644 --- a/maps/tgstation2.dmm +++ b/maps/tgstation2.dmm @@ -3213,10 +3213,10 @@ "bjO" = (/obj/machinery/computer/card,/obj/item/weapon/card/id/captains_spare,/turf/simulated/floor/wood,/area/crew_quarters/captain) "bjP" = (/obj/structure/table/woodentable,/obj/item/weapon/book/manual/security_space_law,/turf/simulated/floor/wood,/area/crew_quarters/captain) "bjQ" = (/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/manifold/hidden/scrubbers,/turf/simulated/floor{icon_state = "white"},/area/rnd/research) -"bjR" = (/obj/machinery/meter,/obj/machinery/door_control{id = "mixvent"; name = "Mixing Room Vent Control"; pixel_x = -25; pixel_y = 5; req_access_txt = "7"},/obj/machinery/ignition_switch{id = "mixingsparker"; pixel_x = -25; pixel_y = -5},/obj/machinery/atmospherics/pipe/simple/visible{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 9},/turf/simulated/floor{dir = 4; icon_state = "warnwhitecorner"},/area/rnd/mixing) +"bjR" = (/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor{icon_state = "white"},/area/rnd/mixing) "bjS" = (/turf/simulated/floor/airless,/area/rnd/test_area) -"bjT" = (/obj/structure/sign/fire{pixel_y = -32},/obj/machinery/atmospherics/binary/pump/on{dir = 8},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 5},/turf/simulated/floor/engine,/area/rnd/mixing) -"bjU" = (/obj/machinery/atmospherics/pipe/simple/hidden{tag = "icon-intact (EAST)"; icon_state = "intact"; dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/wall/r_wall,/area/rnd/mixing) +"bjT" = (/obj/effect/landmark/start{name = "Scientist"},/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor{icon_state = "white"},/area/rnd/mixing) +"bjU" = (/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 1},/turf/simulated/floor{icon_state = "white"},/area/rnd/mixing) "bjV" = (/obj/machinery/door/airlock{name = "Unisex Restrooms"; req_access_txt = "0"},/obj/structure/cable/green{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{icon_state = "freezerfloor"},/area/crew_quarters/locker/locker_toilet) "bjW" = (/obj/machinery/lapvend,/turf/simulated/floor,/area/storage/primary) "bjX" = (/turf/simulated/floor/airless{dir = 4; icon_state = "warning"},/area/rnd/test_area) @@ -3338,10 +3338,10 @@ "bmj" = (/obj/machinery/door/firedoor/border_only{dir = 8; name = "Firelock West"},/obj/machinery/door/airlock/research{name = "Toxins Storage"; req_access_txt = "8"},/obj/structure/cable/green{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,/area/rnd/research) "bmk" = (/obj/machinery/atmospherics/pipe/tank/air{dir = 8},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 1},/area/maintenance/research_starboard) "bml" = (/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor{icon_state = "white"},/area/rnd/research) -"bmm" = (/obj/machinery/meter,/obj/machinery/embedded_controller/radio/airlock/airlock_controller{tag_airpump = "tox_airlock_pump"; tag_exterior_door = "tox_airlock_exterior"; id_tag = "tox_airlock_control"; tag_interior_door = "tox_airlock_interior"; pixel_x = -24; pixel_y = 0; tag_chamber_sensor = "tox_airlock_sensor"},/obj/machinery/atmospherics/pipe/simple/visible{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 9; pixel_y = 0},/turf/simulated/floor{dir = 1; icon_state = "warnwhitecorner"},/area/rnd/mixing) +"bmm" = (/obj/structure/cable/green{d1 = 2; d2 = 8; icon_state = "2-8"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 6},/turf/simulated/floor{icon_state = "white"},/area/rnd/mixing) "bmn" = (/obj/structure/closet/emcloset,/turf/simulated/floor{dir = 9; icon_state = "warning"},/area/hallway/secondary/entry/aft) "bmo" = (/turf/simulated/wall,/area/medical/patient_a) -"bmp" = (/obj/machinery/atmospherics/pipe/simple/hidden{tag = "icon-intact (EAST)"; icon_state = "intact"; dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/wall/r_wall,/area/rnd/mixing) +"bmp" = (/obj/item/device/transfer_valve{pixel_x = -5},/obj/item/device/transfer_valve{pixel_x = -5},/obj/item/device/transfer_valve{pixel_x = 0},/obj/item/device/transfer_valve{pixel_x = 0},/obj/item/device/transfer_valve{pixel_x = 5},/obj/item/device/transfer_valve{pixel_x = 5},/obj/structure/table,/obj/machinery/atmospherics/pipe/simple/hidden/universal,/turf/simulated/floor{dir = 1; icon_state = "whitepurple"},/area/rnd/mixing) "bmq" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/machinery/door/firedoor/border_only,/turf/simulated/floor/plating,/area/hallway/secondary/entry/aft) "bmr" = (/obj/machinery/space_heater,/turf/simulated/floor/plating,/area/storage/emergency) "bms" = (/obj/structure/reagent_dispensers/watertank,/turf/simulated/floor/plating,/area/storage/emergency) @@ -3414,7 +3414,7 @@ "bnH" = (/obj/structure/disposalpipe/segment,/obj/machinery/door/firedoor/border_only,/turf/simulated/floor{dir = 2; icon_state = "yellowcorner"},/area/hallway/primary/aft) "bnI" = (/turf/simulated/wall/r_wall,/area/maintenance/cargo) "bnJ" = (/obj/machinery/status_display{layer = 4; pixel_x = 0; pixel_y = 32},/obj/machinery/atmospherics/unary/vent_scrubber/on,/turf/simulated/floor{icon_state = "white"},/area/rnd/research) -"bnK" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor{dir = 8; icon_state = "warnwhite"},/area/rnd/mixing) +"bnK" = (/obj/machinery/atmospherics/pipe/simple/hidden/cyan,/turf/simulated/wall/r_wall,/area/rnd/mixing) "bnL" = (/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 1},/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 1},/turf/simulated/floor{dir = 1; icon_state = "whiteredcorner"},/area/medical/patient_wing) "bnM" = (/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/manifold/hidden/supply,/obj/machinery/atmospherics/pipe/manifold4w/hidden/scrubbers,/turf/simulated/floor{dir = 1; icon_state = "whitered_b"; tag = "icon-whitered_b (WEST)"},/area/medical/patient_wing) "bnN" = (/obj/machinery/camera{c_tag = "Medbay Patient Hallway - Port"; dir = 4; network = list("SS13")},/turf/simulated/floor{icon_state = "white"},/area/medical/patient_wing) @@ -3800,7 +3800,7 @@ "bvd" = (/obj/machinery/status_display{density = 0; layer = 4; pixel_x = -32; pixel_y = 0},/obj/machinery/light{icon_state = "tube1"; dir = 8},/turf/simulated/floor,/area/hallway/primary/central_one) "bve" = (/mob/living/simple_animal/mouse,/turf/simulated/floor/plating,/area/maintenance/research_starboard) "bvf" = (/obj/machinery/sparker{dir = 2; id = "mixingsparker"; pixel_x = 25},/obj/machinery/atmospherics/unary/vent_pump{dir = 4; external_pressure_bound = 0; external_pressure_bound_default = 0; icon_state = "map_vent_in"; initialize_directions = 1; internal_pressure_bound = 4000; internal_pressure_bound_default = 4000; on = 1; pressure_checks = 2; pressure_checks_default = 2; pump_direction = 0},/turf/simulated/floor/engine/vacuum,/area/rnd/mixing) -"bvg" = (/obj/effect/decal/cleanable/blood/oil/streak{amount = 0},/turf/simulated/floor/plating,/area/maintenance/research_starboard) +"bvg" = (/obj/structure/sign/nosmoking_2{pixel_x = -32},/obj/machinery/camera{c_tag = "Toxins Lab"; dir = 4; network = list("SS13","Research")},/turf/simulated/floor{icon_state = "white"},/area/rnd/mixing) "bvh" = (/obj/machinery/firealarm{dir = 8; pixel_x = -24},/obj/machinery/atmospherics/pipe/simple/visible,/turf/simulated/floor{icon_state = "floorgrime"},/area/maintenance/incinerator) "bvi" = (/obj/machinery/atmospherics/pipe/simple/visible,/turf/simulated/floor{icon_state = "floorgrime"},/area/maintenance/incinerator) "bvj" = (/obj/machinery/atmospherics/unary/vent_scrubber/on{dir = 1},/turf/simulated/floor,/area/hallway/secondary/entry/aft) @@ -4174,9 +4174,9 @@ "bCn" = (/obj/machinery/atmospherics/portables_connector{dir = 1},/obj/machinery/portable_atmospherics/canister/oxygen,/turf/simulated/floor{icon_state = "delivery"},/area/medical/sleeper) "bCo" = (/obj/item/device/radio/intercom{dir = 4; name = "Station Intercom (General)"; pixel_x = 27},/obj/structure/disposalpipe/segment,/turf/simulated/floor,/area/quartermaster/qm) "bCp" = (/obj/structure/table,/obj/item/device/t_scanner,/turf/simulated/floor/plating,/area/maintenance/engineering) -"bCq" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor{icon_state = "white"},/area/rnd/mixing) +"bCq" = (/obj/machinery/airlock_sensor{id_tag = "tox_airlock_sensor"; master_tag = "tox_airlock_control"; pixel_y = 24},/obj/machinery/light/small{dir = 1},/obj/machinery/atmospherics/binary/pump/on{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/cyan,/turf/simulated/floor/engine,/area/rnd/mixing) "bCr" = (/obj/machinery/hologram/holopad,/turf/simulated/floor{icon_state = "white"},/area/rnd/mixing) -"bCs" = (/obj/item/device/transfer_valve{pixel_x = -5},/obj/item/device/transfer_valve{pixel_x = -5},/obj/item/device/transfer_valve{pixel_x = 0},/obj/item/device/transfer_valve{pixel_x = 0},/obj/item/device/transfer_valve{pixel_x = 5},/obj/item/device/transfer_valve{pixel_x = 5},/obj/structure/table,/turf/simulated/floor{dir = 1; icon_state = "whitepurple"},/area/rnd/mixing) +"bCs" = (/obj/machinery/meter,/obj/machinery/embedded_controller/radio/airlock/airlock_controller{tag_airpump = "tox_airlock_pump"; tag_exterior_door = "tox_airlock_exterior"; id_tag = "tox_airlock_control"; tag_interior_door = "tox_airlock_interior"; pixel_x = -24; pixel_y = 0; tag_chamber_sensor = "tox_airlock_sensor"},/obj/machinery/atmospherics/pipe/simple/visible{dir = 4},/turf/simulated/floor{dir = 1; icon_state = "warnwhitecorner"},/area/rnd/mixing) "bCt" = (/turf/simulated/wall,/area/hallway/primary/aft) "bCu" = (/obj/item/device/radio/intercom{dir = 4; name = "Station Intercom (General)"; pixel_x = 27},/turf/simulated/floor{dir = 2; icon_state = "redcorner"},/area/hallway/primary/central_three) "bCv" = (/obj/structure/dispenser,/turf/simulated/floor{dir = 5; icon_state = "whitepurple"},/area/rnd/mixing) @@ -4233,7 +4233,7 @@ "bDu" = (/obj/machinery/iv_drip,/obj/machinery/power/apc{dir = 4; name = "east bump"; pixel_x = 24},/obj/structure/cable/green{d2 = 8; icon_state = "0-8"},/turf/simulated/floor{dir = 6; icon_state = "whitered"},/area/medical/patient_b) "bDv" = (/obj/structure/cable/green{d1 = 2; d2 = 4; icon_state = "2-4"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 10},/turf/simulated/floor{dir = 3; icon_state = "whitered"},/area/medical/patient_b) "bDw" = (/obj/machinery/dna_scannernew,/obj/machinery/light_switch{dir = 2; name = "light switch "; pixel_x = 0; pixel_y = -22},/turf/simulated/floor{dir = 2; icon_state = "whitepurple"},/area/medical/genetics_cloning) -"bDx" = (/obj/structure/sign/nosmoking_2{pixel_x = -32},/obj/machinery/camera{c_tag = "Toxins Lab"; dir = 4; network = list("SS13","Research")},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor{icon_state = "white"},/area/rnd/mixing) +"bDx" = (/turf/simulated/floor{dir = 8; icon_state = "warnwhite"},/area/rnd/mixing) "bDy" = (/obj/machinery/firealarm{dir = 8; pixel_x = -24},/turf/simulated/floor{dir = 5; icon_state = "whitehall"},/area/rnd/research) "bDz" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor,/area/janitor) "bDA" = (/obj/structure/disposalpipe/segment{dir = 4; icon_state = "pipe-c"},/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor,/area/janitor) @@ -4380,7 +4380,7 @@ "bGl" = (/turf/simulated/floor{dir = 9; icon_state = "whitehall"},/area/rnd/research) "bGm" = (/obj/machinery/door/firedoor/border_only{dir = 8; name = "Firelock West"},/obj/machinery/door/poddoor{density = 0; icon_state = "pdoor0"; id = "Biohazard"; name = "Biohazard Shutter"; opacity = 0},/obj/machinery/door/airlock/research{name = "Toxins Launch Room Access"; req_access_txt = "8"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor{icon_state = "white"},/area/rnd/mixing) "bGn" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 8},/obj/machinery/door/firedoor/border_only{dir = 2},/turf/simulated/floor/plating,/area/rnd/mixing) -"bGo" = (/obj/structure/cable/green{d1 = 2; d2 = 8; icon_state = "2-8"},/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 1},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor{icon_state = "white"},/area/rnd/mixing) +"bGo" = (/obj/structure/sign/fire{pixel_y = -32},/obj/machinery/atmospherics/binary/pump/on{dir = 8},/obj/machinery/atmospherics/pipe/simple/hidden/cyan,/turf/simulated/floor/engine,/area/rnd/mixing) "bGp" = (/turf/simulated/shuttle/wall{icon_state = "swall3"; dir = 2},/area/shuttle/mining/station) "bGq" = (/obj/structure/table,/turf/simulated/shuttle/floor,/area/shuttle/mining/station) "bGr" = (/obj/machinery/portable_atmospherics/canister,/obj/machinery/light{dir = 1},/turf/simulated/floor/engine,/area/rnd/misc_lab) @@ -4392,10 +4392,10 @@ "bGx" = (/obj/machinery/door_control{id = "medprivb"; name = "Privacy Shutters"; pixel_y = 25},/obj/machinery/alarm{dir = 8; icon_state = "alarm0"; pixel_x = 24},/obj/structure/table,/obj/item/weapon/clipboard,/obj/item/weapon/paper_bin,/obj/item/weapon/pen,/obj/machinery/light_switch{dir = 2; name = "light switch "; pixel_x = 0; pixel_y = 36},/obj/machinery/atmospherics/unary/vent_scrubber/on{dir = 8},/turf/simulated/floor{dir = 5; icon_state = "whitered"},/area/medical/patient_b) "bGy" = (/obj/machinery/power/apc{dir = 1; name = "north bump"; pixel_x = 0; pixel_y = 24},/obj/structure/cable/green{d2 = 4; icon_state = "0-4"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/structure/cable/green{d2 = 8; icon_state = "0-8"},/turf/simulated/floor,/area/crew_quarters/heads/hop) "bGz" = (/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor{icon_state = "white"},/area/rnd/mixing) -"bGA" = (/obj/effect/landmark/start{name = "Scientist"},/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor{icon_state = "white"},/area/rnd/mixing) +"bGA" = (/obj/machinery/meter,/obj/machinery/door_control{id = "mixvent"; name = "Mixing Room Vent Control"; pixel_x = -25; pixel_y = 5; req_access_txt = "7"},/obj/machinery/ignition_switch{id = "mixingsparker"; pixel_x = -25; pixel_y = -5},/obj/machinery/atmospherics/pipe/simple/visible{dir = 4},/turf/simulated/floor{dir = 4; icon_state = "warnwhitecorner"},/area/rnd/mixing) "bGB" = (/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/unary/vent_pump/on{dir = 4},/turf/simulated/floor{icon_state = "white"},/area/rnd/mixing) -"bGC" = (/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 1},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 6},/turf/simulated/floor{icon_state = "white"},/area/rnd/mixing) -"bGD" = (/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor{icon_state = "white"},/area/rnd/mixing) +"bGC" = (/obj/effect/decal/cleanable/blood/oil/streak{amount = 0},/obj/machinery/atmospherics/pipe/simple/hidden/universal,/turf/simulated/floor/plating,/area/maintenance/research_starboard) +"bGD" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers,/turf/simulated/floor/plating,/area/maintenance/research_starboard) "bGE" = (/obj/machinery/portable_atmospherics/powered/pump,/obj/structure/window/reinforced{dir = 4},/turf/simulated/floor{dir = 2; icon_state = "whitepurple"},/area/rnd/mixing) "bGF" = (/turf/simulated/wall,/area/storage/tech) "bGG" = (/obj/structure/extinguisher_cabinet{pixel_x = -24},/turf/simulated/floor{dir = 5; icon_state = "whitehall"},/area/rnd/research) @@ -5469,7 +5469,7 @@ "cbi" = (/obj/machinery/requests_console{department = "Science"; departmentType = 2; name = "Science Requests Console"; pixel_x = -30; pixel_y = 0},/turf/simulated/floor{icon_state = "white"},/area/rnd/lab) "cbj" = (/obj/machinery/camera{c_tag = "Research Division Access"; dir = 2; network = list("SS13","Research")},/obj/structure/sink{dir = 4; icon_state = "sink"; pixel_x = 11; pixel_y = 0},/turf/simulated/floor{icon_state = "warnwhite"; dir = 5},/area/rnd/research) "cbk" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 10},/turf/simulated/floor{icon_state = "white"},/area/rnd/research) -"cbl" = (/obj/machinery/airlock_sensor{id_tag = "tox_airlock_sensor"; master_tag = "tox_airlock_control"; pixel_y = 24},/obj/machinery/light/small{dir = 1},/obj/machinery/atmospherics/binary/pump/on{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 6},/turf/simulated/floor/engine,/area/rnd/mixing) +"cbl" = (/obj/machinery/atmospherics/pipe/simple/hidden/universal{dir = 4},/turf/simulated/floor{icon_state = "hydrofloor"},/area/rnd/xenobiology/xenoflora) "cbm" = (/obj/machinery/door/firedoor/border_only{dir = 4; name = "hazard door east"},/obj/machinery/door/airlock/glass_research{name = "Robotics Lab"; req_access_txt = "29"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor{icon_state = "white"},/area/assembly/robotics) "cbn" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor{icon_state = "white"},/area/assembly/robotics) "cbo" = (/obj/structure/stool/bed/chair{dir = 8},/obj/item/device/radio/intercom{broadcasting = 0; listening = 1; name = "Station Intercom (General)"; pixel_y = 20},/turf/simulated/shuttle/floor,/area/shuttle/escape_pod5/station) @@ -5496,10 +5496,10 @@ "cbJ" = (/obj/machinery/atmospherics/pipe/simple/visible/green{tag = "icon-intact (NORTHEAST)"; icon_state = "intact"; dir = 5},/turf/simulated/floor,/area/atmos) "cbK" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/turf/simulated/wall/r_wall,/area/engine/engine_smes) "cbL" = (/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"},/obj/structure/table,/obj/item/stack/cable_coil,/obj/item/stack/cable_coil{pixel_x = 3; pixel_y = 3},/obj/item/weapon/storage/box/lights/mixed,/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"},/turf/simulated/floor,/area/engine/engine_smes) -"cbM" = (/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 1},/obj/structure/grille,/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/plating,/area/engine/engine_airlock) +"cbM" = (/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 1},/obj/structure/grille,/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/obj/machinery/atmospherics/pipe/simple/hidden/universal,/turf/simulated/floor/plating,/area/engine/engine_airlock) "cbN" = (/obj/structure/table,/obj/machinery/microwave{pixel_x = -3; pixel_y = 6},/turf/simulated/floor{icon_state = "white"},/area/medical/virology) "cbO" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/turf/simulated/wall/r_wall,/area/engine/engine_monitoring) -"cbP" = (/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 1},/obj/structure/grille,/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor/plating,/area/engine/engine_airlock) +"cbP" = (/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 1},/obj/structure/grille,/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/machinery/atmospherics/pipe/simple/hidden/universal,/turf/simulated/floor/plating,/area/engine/engine_airlock) "cbQ" = (/obj/machinery/door/airlock/maintenance_hatch{frequency = 1379; icon_state = "door_closed"; id_tag = "engine_airlock_exterior"; locked = 0; name = "Engine Airlock Exterior"; req_access_txt = "10"},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/turf/simulated/floor/plating,/area/engine/engine_airlock) "cbR" = (/obj/machinery/hologram/holopad,/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 8},/turf/simulated/floor,/area/engine/engine_monitoring) "cbS" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor,/area/engine/engine_monitoring) @@ -5515,7 +5515,7 @@ "ccc" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plating,/area/maintenance/starboardsolar) "ccd" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/turf/simulated/floor/plating,/area/maintenance/starboardsolar) "cce" = (/turf/simulated/shuttle/wall{icon_state = "swall_s5"; dir = 2},/area/shuttle/escape_pod5/station) -"ccf" = (/obj/machinery/embedded_controller/radio/airlock/advanced_airlock_controller{id_tag = "engine_room_airlock"; name = "Engine Room Airlock"; pixel_x = -24; tag_airpump = "engine_airlock_pump"; tag_chamber_sensor = "eng_al_c_snsr"; tag_exterior_door = "engine_airlock_exterior"; tag_exterior_sensor = "eng_al_ext_snsr"; tag_interior_door = "engine_airlock_interior"; tag_interior_sensor = "eng_al_int_snsr"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 5},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 9},/area/engine/engine_airlock) +"ccf" = (/obj/machinery/embedded_controller/radio/airlock/advanced_airlock_controller{id_tag = "engine_room_airlock"; name = "Engine Room Airlock"; pixel_x = -24; tag_airpump = "engine_airlock_pump"; tag_chamber_sensor = "eng_al_c_snsr"; tag_exterior_door = "engine_airlock_exterior"; tag_exterior_sensor = "eng_al_ext_snsr"; tag_interior_door = "engine_airlock_interior"; tag_interior_sensor = "eng_al_int_snsr"},/obj/machinery/atmospherics/pipe/simple/hidden{dir = 5; icon_state = "intact"; tag = "icon-intact-f (NORTHEAST)"},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 9},/area/engine/engine_airlock) "ccg" = (/obj/structure/stool/bed/chair/office/dark,/obj/effect/landmark/start{name = "Station Engineer"},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor,/area/engine/engine_monitoring) "cch" = (/obj/structure/table/reinforced,/obj/machinery/door_control{desc = "A remote control-switch for the engine control room blast doors."; id = "EngineBlast"; name = "Engine Room Blast Doors"; pixel_x = 0; pixel_y = -3; req_access_txt = "10"},/obj/machinery/door_control{desc = "A remote control-switch for the engine charging port."; id = "EngineEmitterPort"; name = "Engine Charging Port"; pixel_x = -6; pixel_y = 7; req_access_txt = "10"},/obj/machinery/door_control{desc = "A remote control-switch for the engine emitter."; id = "EngineEmitter"; name = "Engine Emitter"; normaldoorcontrol = 2; pixel_x = 6; pixel_y = 7; req_access_txt = "10"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor,/area/engine/engine_monitoring) "cci" = (/obj/structure/stool/bed/chair/office/dark,/obj/effect/landmark/start{name = "Station Engineer"},/turf/simulated/floor,/area/engine/engine_monitoring) @@ -11000,7 +11000,7 @@ "edB" = (/obj/machinery/camera{c_tag = "SMES"; dir = 8; network = list("SS13","Supermatter")},/obj/machinery/atmospherics/unary/vent_pump/on{dir = 8},/turf/simulated/floor,/area/engine/engine_smes) "edC" = (/obj/structure/table/reinforced,/obj/machinery/camera{c_tag = "Engine Monitoring Room"; dir = 4; network = list("SS13","Supermatter")},/obj/machinery/firealarm{dir = 8; pixel_x = -24},/turf/simulated/floor,/area/engine/engine_monitoring) "edD" = (/obj/machinery/portable_atmospherics/hydroponics/soil,/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/grass,/area/research_outpost/maintstore1) -"edE" = (/obj/structure/closet/emcloset,/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 9},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 5},/area/engine/engine_airlock) +"edE" = (/obj/structure/closet/emcloset,/obj/machinery/atmospherics/pipe/simple/hidden{dir = 9; icon_state = "intact"; tag = "icon-intact-f (NORTHWEST)"},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 5},/area/engine/engine_airlock) "edF" = (/obj/machinery/power/apc{dir = 1; name = "north bump"; pixel_x = 0; pixel_y = 24},/obj/structure/cable{d2 = 2; icon_state = "0-2"; pixel_y = 0},/obj/machinery/atmospherics/binary/pump/on{dir = 8; name = "Filter to Waste"; target_pressure = 4500},/turf/simulated/floor/plating,/area/research_outpost/atmos) "edG" = (/obj/machinery/atmospherics/binary/dp_vent_pump/high_volume{dir = 8; frequency = 1379; id = "engine_airlock_pump"},/turf/simulated/floor/plating,/area/engine/engine_airlock) "edH" = (/obj/structure/sign/securearea{desc = "A warning sign which reads 'EXTERNAL AIRLOCK'"; icon_state = "space"; layer = 4; name = "EXTERNAL AIRLOCK"; pixel_x = 32; pixel_y = 0},/turf/space,/area/space) @@ -11414,19 +11414,19 @@ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabrtbrtbrtbrtbrtbrtbrtbrtbrtbrtbrtbrtbrtbrtbrtbrtbrtbrtaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabGpbGqbEHbEIbGpbGsbTybGubASbDZbwHbwGbwAbwzbwCbwBbwDbwDbwEbAabAabAabUQbAabAabAabAabAabAabAabAabAabAabAabAabAaecmeclecpbAabAabAabAabAabTAbAaauWauWauWauWbNiauWaxoaBsecvauWbzXbBxbBxbwXbxebTCbTWbTQbIVbwYbxbbwZbwQbPZbwRbTXbwMbwNbwObwPbwTbwVbwWbEMbEKbAgbAybAybATbAgbAqboobhQbhQbhQbhQbhQbhQbhQbhQbhQbhQbBRbxkbBqbBqbuqbxibxgbFjbtCbjfbjfbjfbFCbFDbFybjfbjfbjfbjfbjfbxmbxlbxnbTYbTYbTYbTYbTYbTYbTYbTYbTYbTYbTYbTYbTYbTYbTYbTYbTYbTYbTYbTYbTYbTYbTYbxXbmNbmNbtnbjBbjBbjSbjSbBSbjSbjSbjBbjBaaeaaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabrtbrtbrtbrtbrtbrtbrtbrtbrtbrtbrtbrtbrtbrtbrtbrtbrtbrtaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabBTbHBbHCbHBbBTbHDbFSbFMbFPbTfbHHbEWbxrbxpbAUbxobHLbxtbFLbAUbxxbxybnqbkiaaaaaaaaaaaabGFbGfbHRbxwbHTblObQCbCtbxEbHXbBYbCtbxKbxFbxMbxLbxAbxzbLqbxBbTZbkLbxDbmvbmvbmvbmvbymbBmbBlbBlbBkbymbUabUebUbbubbxbbxObxNbykbxPbyibyjbygbyhbxZbyabyqbyrbwWbGebAybAybypbAgbAgbGebAqboobhQbGkbGrbCxbUUbCMbHEbGObGvbhQbCLbysbDpbDpbuqbyubytbGlbGwbDjbDMbDObDTbGMbGEbDsbDHbDJbDXbjfbywbyvbywbngbngbngbngbngaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaaaaaabxYbjBbxXbjBbjBbjSbjSbjSbjSbjSbjSbjSbjBbjBaaeaaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabrtbrtbrtbrtbrtbrtbrtbrtbrtbrtbrtbrtbrtbrtbrtbrtbrtaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabGpbHBbHBbHBbNvbNnbEWbOgbNdbNcbEWbEWbEsbJibAUbAUbAUbAUbAUbAUbEgbEhbEebEfaaabEdbnmbnmbErbJsbHVbEnbEjbHVbEibCtbDRbDQbDPbCtbDLbDBbDAbDzbEcbDYbDWbGHbGHbkLbDVbDUcjhbClbFtbymbzXbFvbBxbBxbFkbUlbOmbUmbIVbFqbFsbFrbENbPZbEYbFabPZbFebFfbFhbEEbEJbwWbAqbAqbAqbAqbAqbAqbAqbAqbpjbhQbKFbUGbUFbCxbCxbCxbCxbEDbhQbKtbAlbKpbKpbuqbSnbECbOWbEBbKgbKgbKgbKgbKhbIYbIYbKibKobJYbjfbEzbBJbEvbngbExbEwbJAbJzaaeaaeaaeaaeaaeaaeaaeaaeaaeaaeaaeaaeaaeaaeaaeaaeaaeaaebtybjBbptbpubpubjSbjSbjSbjSbjSbjSbjSbjSbjBbjBaaeaaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabrtbrtbrtbrtbrtbrtbrtbrtbrtbrtbrtbrtbrtbrtbrtaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabBTbHCbHCbHCbBTbKKbQvbQebKNbOUbEWbEWbFYbFWbFUbFxbFxbFxbFxbFxbFxbFzbFAbBtaaabCObLabFwbLcbLdbHVbFEbFBbHUbLgbCtbFHbYpbFIbCtbLlbLmbLnbFFbFObFNbFTbGHbFJbClbFKbmvbClbClbGSbymbFmbCgbFlbETbBxbUWbVbbTcbVkbGQbGPbGNbGWbGXbzzbmKbGYbFebFhbFhbEEbGTbwWbKwbVlbGVbmobKybVmbGxbkybpjbhQbCxbCxbLEbCxbCxbCxbCxbRqbhQbLCbAlbHPbHPbuqbGGbGJbGKbGLbGzbGzbGzbGzbGAbGzbGBbGCbGDbGobGmbGibGgbGdbGcbGbbGabFZbKJaaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabVnaaaaaeaaaaaabjBbjBbkQbjSbjSbjSbjSbjSbjSbjSbjSbjSbjSbjSbjBbjBaaeaaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabrtbrtbrtbrtbrtbrtbrtbrtbrtbrtbrtbrtaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaaaaaaaaaaaaaaaaaabGpbMwbMxbMybGpbMzbTybGubASbASbMAbMAbMAbASbASbkibBhbBhbkgbkgbkgbkgbnqbBtaaabBzbBubBwcdrbBDbBAbBBbVsbVpbVpbVMbBnbBjbBibCtbGHbGHbGHbGHbGHbVNbGHbGHbBsbBrbBpbmvbClbCjbCpbymbEbbCgbBxbCibHdbUWbVObSTbVQbCcbCebCdbCabLtbCbbtKbLhbBWbBXbBZbVUbBUbwWbBVbBMbBObmobBPbCEbCDbkybpjbhQbhQbhQbLEbCxbCxbCxbhQbhQbhQbCAbCybHPbHPbuqbCwbmlbGlbGwbHAbHybHzbHtbHubCsbCvbCqbCrbBIbjfbBKbBJbBLbngbHlbHkbBHbGnaaeaaeaaeaaeaaeaaeaaeaaeaaeaaeaaeaaeaaeaaeaaeaaeaaeaaebjBbjSbjSbjSbjSbjSbjSbjXbjSbHmbjSbjSbjSbjSbjSbjBbjBaaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabNObESbNPbESbNQbMoaaeaaaaaabASbNRbNSbNTbASaaabkibCKbCJbCIbCFbCFbCFbCNbBtaaabCObNWbCPbNYbNZbHVbMQbCQbMSbOdbCtbCRbqLbCTbVYbWdbWdbWdbWibWibWjbCYbClbClbClboJbmvbmvbmvbmvbymbymbDfbHwbDebymbWpbWXbWWbWZbWYbWpbXjbXmbXkbYzbXnbWpbwWbwWbwWbwWbwWbwWbDmbDibDlbmobDgbDvbDubkybpjbhQblzbYGbYAbIRbIQbITbISblzblUbDtbDrbOcblTbuqbDybmlbOabtCbjfbjfbjfbjfbjfbjfbjfbDxbIYbDabjfbnfcfdbnfbngbMYbIJbIGbngaaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaaaaaabjBbulbulbulbulbulbulbILbjSbuPbulbHmbjSbjSbjSbjSbjBaaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaaeaaeaaeaaeaaeaaeaaeaaeaaeaaeaaeaaeaaeaaeaaebnIbkibkibkibkibkgbnubnqbntaaabnnbnmbnmbnkbnlbHVbHVbnibHVbnhbCtbkpbkobnHbCtbgXbgXbgXbgXbgXbgXbgXbgXbnGbnBbZebYObZkbZibmvbymblCbmwbvJbmxbvMbZlbZYbZFcaccabcatbZYcavcaucaAcaycaEbmVbmWbmibmXbmYbidbnabncbnabmoblYbmbblYbkybpjbhQbmecaIcaFbmhbmgbplbmfbDqblUbuqbmjbuqbuqbuZbsabmlbsabvaaaebjcblZbvfbswcblbmpbmmbmtbnEbjfbriblSbpPbngbnwbnjbnjbolaaLaaLaaaaaaaaaaaaaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabombmNbmNbmNbmNbmNbmNbmNcbvbmLbjSbjSbjSbjSbmObmLbEOaaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaBcaCcaCcaDbpbbkiboZbkgbpabkiaaaaaaaaaaaabGFbQybQzbQAbQBefBbHVbCtboWboUbBYbCtbgXbmEbmGbmFbmCcbFbmDbgXccbccbccbccbccbboJbnZbnXcclboMbpkboLboQccNcdlccWcdscdmcdscducdscdycdDcdAcdGbokbojbokbozboCbrkboyboGboIboDboEbnMbnLcefcedbnQbnPbnSbnRbicbnTbnUbicbicbiabnWbnVbvYbnJbsabsabmlbsabwtaaebjcbjdcekbopcelboKbnKboYcepbjfbrXblSblXbngbngbngbngbngaaeaaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaaaaaabjBbpubpubpubpubpubpubpvbjSbptbpubkabjSbjSbjSbjSbjBaaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabkfbrKcbobrPbkgbkdbkjbkgbkhbkiaaMaaaaaaaaabGFbGFbGFbGFbGFbGFbCtbCtbkpbkobkmbCtbCtceqbgwbgxbgxbgwbgvbgXceWceuceuceYccbbisbymbymbqxbirbrlbfEbiAceZcfWcflcfYcfXcgacfZcgccgbcghcggcgibiFbiIbiJbiIbjgbjhbjnbiZbjabjbbjeblybjwblxblwblubqDbqDbjqbjIbjHbjGbjFbjEbjCbjzcgjbjMbjQbjLbjMcgmbjKbrWaaebjcbjdbszbswbjTbjUbjRcgnbjmbjfblXblSbnebmkbnfaaeaaeaaeaaeaaeaaeaaeaaeaaeaaeaaeaaeaaeaaeaaeaaeaaeaaeaaeaaeaaebjBbjSbjSbjSbjSbjSbjSbjXbjSbkabjSbjSbjSbjSbjSbjBbjBaaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaccecaCcaCcaDblBblAblRbkibpibkiblJcgtcgDblJblJblKcgGblMblNblPblQecQblGblFblHbllblIbgwbugbjDbiNbiMchecgLchwchiciBchTccbbkMbkLbkKbkJbkIbiTbiTbldciFcjbciPbWpbWpcjCcjcbWpbWpckvcjQckwbidbnNbksbhebiKbkGbiKbiGbiHbkEbiHbiGbliblxbooblubknbkrblhbtYbtTbltbkNbhQbhQbtCbtCbtCbtCbtCblgbleblfbtCbjfbjfbjfbjfbjfbjfbjfbjfbjfbjfbjfbpdboTbpgbpebnfaaaaaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaaaaaabjBbjBbkQbjSbjSbjSbjSbjSbjSbjSbjSbjSbjSbjSbjBbjBaaeaaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamaambCVaamaamaamaamaamaaaaaaaaaaaaaaaaaaaaeaaeaaabxWbxTbxTbxTbxVbxTbxTbupburblJbuockzblJbuIbuJbuGbuHckAbuEbuAbuBbuObuMbuLbxUbuKbgwbugbwLbxjbiMclnbgXclwclwclwclwclwbtQbkLbymbCnbvlbtSbtRbtIclDcnwcnpbWpbtNbtPbtObuibiDbujbukbumbwUbhebksaJzbiKbtUbtXbiGbtZbuabufbiGbtcblxbpjblublubsIbsIbsIbsIbsIbsIblubuScovcnAcowbvkbtCbtCbtFbtCbtCbvsbuUbvcbuTblXbvgblXblXbvebtlbtkcpwcpabtjbnfbnfbnfaaeaaeaaeaaeaaeaaeaaeaaeaaeaaeaaeaaeaaeaaeaaeaaeaaeaaeaaeaaebtybjBbuPbulbulbjSbjSbjSbjSbjSbjSbjSbjSbjBbjBaaeaaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamaaaaaaaaaaaaaaeaaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaaeecwecxbsKcrecqfbthcrfbwnbwoblJbwlcrhblJblJbwubwvbwwcribwrbwsbAkblGblFblHbwibwgbgwbgwbwhbwjbgwcrlbgXcrncrmclwcrAclwboJbqZbqZbqZbqZbqZbqZbqZbWpcrQcrHbWpbrAbwfbqJbtDbiDbvTbvUbvVbwUbhebksbhebiKbvObvPbiGbvSbvQbvRbiGbvAbGIcrUcrWbKUbvIbvHbsrbvtbvvbqhcsmcshcsybBFcsBcshctsbvobvpeczctWctScuacuacuacuacuacuacuacuacuacuabvFbvzbvxbvwcucbnfbnfbnfbnfaaaaaeaaaaaaaaaaajaajaajaaeaaaaaaaaeaaaaaaaaeaaaaaabxYbjBbxXbjBbjBbjSbjSbjSbjSbjSbjSbjSbjBbjBaaeaaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabrtbrtbrtbrtbrtbrtbrtbrtbrtbrtbrtbrtbrtbrtbrtaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabBTbHCbHCbHCbBTbKKbQvbQebKNbOUbEWbEWbFYbFWbFUbFxbFxbFxbFxbFxbFxbFzbFAbBtaaabCObLabFwbLcbLdbHVbFEbFBbHUbLgbCtbFHbYpbFIbCtbLlbLmbLnbFFbFObFNbFTbGHbFJbClbFKbmvbClbClbGSbymbFmbCgbFlbETbBxbUWbVbbTcbVkbGQbGPbGNbGWbGXbzzbmKbGYbFebFhbFhbEEbGTbwWbKwbVlbGVbmobKybVmbGxbkybpjbhQbCxbCxbLEbCxbCxbCxbCxbRqbhQbLCbAlbHPbHPbuqbGGbGJbGKbGLbGzbGBbjRbjRbjTbjUbjRbjRbjRbmmbGmbGibGgbGdbGcbGbbGabFZbKJaaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabVnaaaaaeaaaaaabjBbjBbkQbjSbjSbjSbjSbjSbjSbjSbjSbjSbjSbjSbjBbjBaaeaaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabrtbrtbrtbrtbrtbrtbrtbrtbrtbrtbrtbrtaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaaaaaaaaaaaaaaaaaabGpbMwbMxbMybGpbMzbTybGubASbASbMAbMAbMAbASbASbkibBhbBhbkgbkgbkgbkgbnqbBtaaabBzbBubBwcdrbBDbBAbBBbVsbVpbVpbVMbBnbBjbBibCtbGHbGHbGHbGHbGHbVNbGHbGHbBsbBrbBpbmvbClbCjbCpbymbEbbCgbBxbCibHdbUWbVObSTbVQbCcbCebCdbCabLtbCbbtKbLhbBWbBXbBZbVUbBUbwWbBVbBMbBObmobBPbCEbCDbkybpjbhQbhQbhQbLEbCxbCxbCxbhQbhQbhQbCAbCybHPbHPbuqbCwbmlbGlbGwbHAbHybHzbHtbHubmpbCvbIYbCrbBIbjfbBKbBJbBLbngbHlbHkbBHbGnaaeaaeaaeaaeaaeaaeaaeaaeaaeaaeaaeaaeaaeaaeaaeaaeaaeaaebjBbjSbjSbjSbjSbjSbjSbjXbjSbHmbjSbjSbjSbjSbjSbjBbjBaaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabNObESbNPbESbNQbMoaaeaaaaaabASbNRbNSbNTbASaaabkibCKbCJbCIbCFbCFbCFbCNbBtaaabCObNWbCPbNYbNZbHVbMQbCQbMSbOdbCtbCRbqLbCTbVYbWdbWdbWdbWibWibWjbCYbClbClbClboJbmvbmvbmvbmvbymbymbDfbHwbDebymbWpbWXbWWbWZbWYbWpbXjbXmbXkbYzbXnbWpbwWbwWbwWbwWbwWbwWbDmbDibDlbmobDgbDvbDubkybpjbhQblzbYGbYAbIRbIQbITbISblzblUbDtbDrbOcblTbuqbDybmlbOabtCbjfbjfbjfbjfbjfbnKbjfbvgbIYbDabjfbnfcfdbnfbngbMYbIJbIGbngaaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaaaaaabjBbulbulbulbulbulbulbILbjSbuPbulbHmbjSbjSbjSbjSbjBaaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaaeaaeaaeaaeaaeaaeaaeaaeaaeaaeaaeaaeaaeaaeaaebnIbkibkibkibkibkgbnubnqbntaaabnnbnmbnmbnkbnlbHVbHVbnibHVbnhbCtbkpbkobnHbCtbgXbgXbgXbgXbgXbgXbgXbgXbnGbnBbZebYObZkbZibmvbymblCbmwbvJbmxbvMbZlbZYbZFcaccabcatbZYcavcaucaAcaycaEbmVbmWbmibmXbmYbidbnabncbnabmoblYbmbblYbkybpjbhQbmecaIcaFbmhbmgbplbmfbDqblUbuqbmjbuqbuqbuZbsabmlbsabvaaaebjcblZbvfbswbCqbswbCsbmtbnEbjfbriblSbpPbngbnwbnjbnjbolaaLaaLaaaaaaaaaaaaaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabombmNbmNbmNbmNbmNbmNbmNcbvbmLbjSbjSbjSbjSbmObmLbEOaaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaBcaCcaCcaDbpbbkiboZbkgbpabkiaaaaaaaaaaaabGFbQybQzbQAbQBefBbHVbCtboWboUbBYbCtbgXbmEbmGbmFbmCcbFbmDbgXccbccbccbccbccbboJbnZbnXcclboMbpkboLboQccNcdlccWcdscdmcdscducdscdycdDcdAcdGbokbojbokbozboCbrkboyboGboIboDboEbnMbnLcefcedbnQbnPbnSbnRbicbnTbnUbicbicbiabnWbnVbvYbnJbsabsabmlbsabwtaaebjcbjdcekbopcelboKbDxboYcepbjfbrXblSblXbngbngbngbngbngaaeaaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaaaaaabjBbpubpubpubpubpubpubpvbjSbptbpubkabjSbjSbjSbjSbjBaaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabkfbrKcbobrPbkgbkdbkjbkgbkhbkiaaMaaaaaaaaabGFbGFbGFbGFbGFbGFbCtbCtbkpbkobkmbCtbCtceqbgwbgxbgxbgwbgvbgXceWceuceuceYccbbisbymbymbqxbirbrlbfEbiAceZcfWcflcfYcfXcgacfZcgccgbcghcggcgibiFbiIbiJbiIbjgbjhbjnbiZbjabjbbjeblybjwblxblwblubqDbqDbjqbjIbjHbjGbjFbjEbjCbjzcgjbjMbjQbjLbjMcgmbjKbrWaaebjcbjdbszbswbGobswbGAcgnbjmbjfblXblSbnebmkbnfaaeaaeaaeaaeaaeaaeaaeaaeaaeaaeaaeaaeaaeaaeaaeaaeaaeaaeaaeaaeaaebjBbjSbjSbjSbjSbjSbjSbjXbjSbkabjSbjSbjSbjSbjSbjBbjBaaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaccecaCcaCcaDblBblAblRbkibpibkiblJcgtcgDblJblJblKcgGblMblNblPblQecQblGblFblHbllblIbgwbugbjDbiNbiMchecgLchwchiciBchTccbbkMbkLbkKbkJbkIbiTbiTbldciFcjbciPbWpbWpcjCcjcbWpbWpckvcjQckwbidbnNbksbhebiKbkGbiKbiGbiHbkEbiHbiGbliblxbooblubknbkrblhbtYbtTbltbkNbhQbhQbtCbtCbtCbtCbtCblgbleblfbtCbjfbjfbjfbjfbjfbnKbjfbjfbjfbjfbjfbpdboTbpgbpebnfaaaaaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaaaaaabjBbjBbkQbjSbjSbjSbjSbjSbjSbjSbjSbjSbjSbjSbjBbjBaaeaaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamaambCVaamaamaamaamaamaaaaaaaaaaaaaaaaaaaaeaaeaaabxWbxTbxTbxTbxVbxTbxTbupburblJbuockzblJbuIbuJbuGbuHckAbuEbuAbuBbuObuMbuLbxUbuKbgwbugbwLbxjbiMclnbgXclwclwclwclwclwbtQbkLbymbCnbvlbtSbtRbtIclDcnwcnpbWpbtNbtPbtObuibiDbujbukbumbwUbhebksaJzbiKbtUbtXbiGbtZbuabufbiGbtcblxbpjblublubsIbsIbsIbsIbsIbsIblubuScovcnAcowbvkbtCbtCbtFbtCbtCbvsbuUbvcbuTblXbGCblXblXbvebtlbtkcpwcpabtjbnfbnfbnfaaeaaeaaeaaeaaeaaeaaeaaeaaeaaeaaeaaeaaeaaeaaeaaeaaeaaeaaeaaebtybjBbuPbulbulbjSbjSbjSbjSbjSbjSbjSbjSbjBbjBaaeaaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamaaaaaaaaaaaaaaeaaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaaeecwecxbsKcrecqfbthcrfbwnbwoblJbwlcrhblJblJbwubwvbwwcribwrbwsbAkblGblFblHbwibwgbgwbgwbwhbwjbgwcrlbgXcrncrmclwcrAclwboJbqZbqZbqZbqZbqZbqZbqZbWpcrQcrHbWpbrAbwfbqJbtDbiDbvTbvUbvVbwUbhebksbhebiKbvObvPbiGbvSbvQbvRbiGbvAbGIcrUcrWbKUbvIbvHbsrbvtbvvbqhcsmcshcsybBFcsBcshctsbvobvpeczctWctScuacuacuacuabGDcuacuacuacuacuabvFbvzbvxbvwcucbnfbnfbnfbnfaaaaaeaaaaaaaaaaajaajaajaaeaaaaaaaaeaaaaaaaaeaaaaaabxYbjBbxXbjBbjBbjSbjSbjSbjSbjSbjSbjSbjBbjBaaeaaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamaaaaaaaaaaaaaaaaaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeecCecCbsKcuHcukbthcuKbqpbqqblJbqtcwzcwacwJcwAcwXcwKcxabqHbqAbqCbqNbqLbqKbqIbqSbqQbqPbqObqVbqXcxdcxccxxcxeczecyRclwboJbqZbpEbqWbqRbpCbpBbpycBpcCKcBycCNbppbpscCTbsmbiDbsnbsobsibwUbhebksbhebiKbpKbpLbiGbrOcCVbpJbiGbqiblxblxbsTblxbqbbqcbqbbqbbqbbqabsSbybbybbxSbqobybbudecGbqkecHbuddfTbyobxsbxqdfTdfTdfTdfTbylbxsbxqdfTdfTblXbsGcDfbsNcDpcDobsEcExcEycEycEycEycEycEycEycEycEycEycEycEycEycEycEycEybpmbpnbpnbpobjBbjBbjSbjSbqmbjSbjSbjBbjBaaeaaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamaaeaaaaaaaaaaaaaaeaaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabsgbsgbsgbsgbsgbsgbsgbsjbsscvgcvgcvgcvgcvgbstbsubsvbsvbsvbsAbuNblGblFblHbtsblIbttbslbtucECbspbtGbgXcHMcEKclwcHTclwbrNbqZbzxbzsbzsbzsbrMbrLbWpcIncHYbWpbrAbqJbrzbtDbiDbtAbtBbtzbwUbhebksbtJbiKbrmbrnbiGbiGbiGbiGbiGbsecIHblxbsTblxbrYbsdbrYbqdbsbbscbtibybcJabBvbrVctibudbuhbrRbrSbudbrTbADbADbADbAGbzJbzQbAsbAvbzibzabyXdfTcMgcLFcNTbnfbnfbnfbnfaaaaaeaaaaaaaaaaajaajaajaaeaaaaaaaaeaaaaaaaaeaaeaaebtrbtwbtmbtnbtybjBbjBbjSbmLbjSbjBbjBaaeaaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamaaeaaeaaaaaaaaaaaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaaebsgctYctZcOfctXcRbbsgcufcvZdgkdgjcwYcrCcrrcrrbuKcBVcBVcBUcBZbAkblGblFblHcnCbuKcnzcRScnBcVhcnxcnybgXcWqcWiclwcWtclwboJbqZdZLdZOdZOdZOcyVbqZdYtdUGczmdYtczHdZRczodZHbiDdZGbtBcrVbwUcylcxUbxQbiKcyIcypbiKcONcdnbidcBbcugcuDcRdcRecRdcuSbqccvGbqdcvFcvEbsTbybcBrcAEcAEczIcALcAHcAMcAHcAOcANcCQcCPcCPcCRdfQdfQdgBcCUdgodgodgndfTbYUcxPbYWbYUaaaaaaaaaaaeaaeaaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaaecrLbEQbEQbFgbtybtybjBbjBbjBbjBbEOaaeaaeaaaaaaaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamaaaaaeaaeaaebTebTebTebTebTebTebTebTebTebTebTebTebTeaaaaaacnmcnjcnjcnjcnlcWxbsgcqqcpdcnWcnQcEzcnnctVctRctIctHctCctBctActzcujcWCcuhcuibCtbgXbgXbgXbgXbgXbgXbgXclwclwclwclwclwboJbqZbqZdZrdZscuobqZbqZcupcutcuxdYtbiDbiDbiDbiDbiDbwUdZydZzbwUcqXcuycqXbiKcuAcuzbiKcJLcNGbiddZVbidearblxbsTblxcWKcuEctubqbcttcvEbsTbybcvKcvLcvLcvPcvOcvNcvUcvTcvRcvQcvWdgWcBDcBzdgicBJdfQdfQdfQdfRdfSdfTculcumcunbYUaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaaeaaeaaeaaeaaaaaaaaaaaaaaeaaeaaeaaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamaaaaaeaaeaaebTebTebTebTebTebTebTebTebTebTebTebTebTeaaaaaacnmcnjcnjcnjcnlcWxbsgcqqcpdcnWcnQcEzcnnctVctRctIctHctCctBctActzcujcWCcuhcuibCtbgXbgXbgXbgXbgXbgXbgXclwclwclwclwclwboJbqZbqZdZrdZscuobqZbqZcupcutcuxdYtbiDbiDbiDbiDbiDbwUdZydZzbwUcqXcuycqXbiKcuAcuzbiKcJLcNGbiddZVbidearblxbsTblxcWKcuEctubqbcttcvEbsTbybcvKcvLcvLcvPcvOcvNcvUcvTcvRcvQcvWcblcBDcBzdgicBJdfQdfQdfQdfRdfSdfTculcumcunbYUaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaaeaaeaaeaaeaaaaaaaaaaaaaaeaaeaaeaaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamaaaaaaaaaaaabTecnScqacnSbTecnOcpYcnObTecnMcpZcnMbTeaaaaaacBvcnjcnjcnlcnlcWMbsgcDacxbcvgdcVddhcFHcFlcFkcFnbYpbYpcFobYpbAkblGcEUblHcpCcBscEZcpucpEcpucEPbskcBIcCncWrcCEcCJbskboJbEaeaxbMXbMXcNicNkcNEcNFcmCcNDcNmcNscNleaeeaeeaudXBbwUbwUbwUcLscKZcLubiKbiKbiKbiKcNGcNGbidcWPbidcIfblxbsTblxcWUcDxcDxcERcEScFpcUBbybcJCcGecGecFXcGlcGjcFTcFRcFVcFUcGtcGmdfQdfQcWZdhndfQdhpdfQdfRdghdfTcFKcFMcFJbYUaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamaaaaaaaaaaaabTecnScnRcnSbTecnOcnPcnObTecnMcnNcnMbTeaaaaaacBvcnjcnlcnlcnlcYCcXdcYGcvYcvgclOcClbpIcsMcsEcBscoycoEcoDdgFbAkblGdaHcuhdaRdcHdcBdeCdeCdeCdeEdeZdeKdfNcBqcBmcBnbskboJbEaeabbMXbOscEpeaaeageahcEscEtcEqeadcEreafeaeeandXBdfXdgadfZcEBdgGcEBdgHdgRdgRdgYdgRdhabidbidbidbidblxcRfblxdhodhdcDzcDJcDybqhcUBbybdgPdgQdgQdgQccQbudcEebuddgTcDKcEfdgMdgMdgXdgWdgWdgVdgMdgMcDndgOdfTdhBdhzdhCbYUaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamaaaaaaaaaaaabTecFfcnicFebTecFdcnfcFcbTecFbcnccEVbTeaaaaaecBvdeMcnjcnlcnlcnlbsgdaTcZgdaGdaGdaLdaGdaGdaGdaGcrzbYpcrxcrybAkcWIcWLcWQcWTcWFcWGcWHcWHcWHcQkbskcQKcPBcPVcFIcDedhLdhFbEadhObMXdcMdcKdcLdbGdbNdbkdbBdcCdcEdbSdbUeaedbhdXBcmIcqzdXFdbjdbidhMdXFdfJddEddFblxdhRdgRdgRdgRdgRdgRdjddhZdlEdkQdgRdgRdgRdgRdpbbybcFwcFxcFvdhTbuddcNdcQdcOdfTdhVcFrcFrcFrdhPcvudhQdhScFrcFrcFrdhYdfTdhXddxcccccdaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa From 594ac35ce103cc2a30b03086fe4e0b73c6963ebd Mon Sep 17 00:00:00 2001 From: RavingManiac Date: Mon, 17 Nov 2014 21:33:02 +0800 Subject: [PATCH 18/27] Fix for dual-vent-pumps being broken. --- .../components/binary_devices/dp_vent_pump.dm | 42 +++++++++++-------- 1 file changed, 25 insertions(+), 17 deletions(-) diff --git a/code/ATMOSPHERICS/components/binary_devices/dp_vent_pump.dm b/code/ATMOSPHERICS/components/binary_devices/dp_vent_pump.dm index c31f6f92b78..9d67602e5e3 100644 --- a/code/ATMOSPHERICS/components/binary_devices/dp_vent_pump.dm +++ b/code/ATMOSPHERICS/components/binary_devices/dp_vent_pump.dm @@ -27,6 +27,8 @@ active_power_usage = 7500 //This also doubles as a measure of how powerful the pump is, in Watts. 7500 W ~ 10 HP var/last_power_draw = 0 + connect_types = list(1,2,3) //connects to regular, supply and scrubbers pipes + var/on = 0 var/pump_direction = 1 //0 = siphoning, 1 = releasing @@ -62,7 +64,7 @@ return overlays.Cut() - + var/vent_icon = "vent" var/turf/T = get_turf(src) @@ -71,7 +73,7 @@ if(T.intact && node1 && node2 && node1.level == 1 && node2.level == 1 && istype(node1, /obj/machinery/atmospherics/pipe) && istype(node2, /obj/machinery/atmospherics/pipe)) vent_icon += "h" - + if(!powered()) vent_icon += "off" else @@ -88,8 +90,14 @@ if(T.intact && node1 && node2 && node1.level == 1 && node2.level == 1 && istype(node1, /obj/machinery/atmospherics/pipe) && istype(node2, /obj/machinery/atmospherics/pipe)) return else - add_underlay(T, node1, turn(dir, -180)) - add_underlay(T, node2, dir) + if (node1) + add_underlay(T, node1, turn(dir, -180), node1.icon_connect_type) + else + add_underlay(T, node1, turn(dir, -180)) + if (node2) + add_underlay(T, node2, dir, node2.icon_connect_type) + else + add_underlay(T, node2, dir) /obj/machinery/atmospherics/binary/dp_vent_pump/hide(var/i) update_icon() @@ -97,7 +105,7 @@ /obj/machinery/atmospherics/binary/dp_vent_pump/process() ..() - + if(stat & (NOPOWER|BROKEN) || !on) update_use_power(0) //usually we get here because a player turned a pump off - definitely want to update. last_power_draw = 0 @@ -107,19 +115,19 @@ var/datum/gas_mixture/environment = loc.return_air() var/power_draw = -1 - + //Figure out the target pressure difference var/pressure_delta = get_pressure_delta(environment) if(pressure_delta > 0.5) - if(pump_direction) //internal -> external + if(pump_direction) //internal -> external if (node1 && (environment.temperature || air1.temperature)) var/output_volume = environment.volume * environment.group_multiplier var/air_temperature = environment.temperature? environment.temperature : air1.temperature var/transfer_moles = pressure_delta*output_volume/(air_temperature * R_IDEAL_GAS_EQUATION) - + power_draw = pump_gas(src, air1, environment, transfer_moles, active_power_usage) - + if(power_draw >= 0 && network1) network1.update = 1 else //external -> internal @@ -127,15 +135,15 @@ var/output_volume = air2.volume + (network2? network2.volume : 0) var/air_temperature = air2.temperature? air2.temperature : environment.temperature var/transfer_moles = pressure_delta*output_volume/(air_temperature * R_IDEAL_GAS_EQUATION) - + //limit flow rate from turfs transfer_moles = min(transfer_moles, environment.total_moles*air2.volume/environment.volume) //group_multiplier gets divided out here - + power_draw = pump_gas(src, environment, air2, transfer_moles, active_power_usage) - + if(power_draw >= 0 && network2) network2.update = 1 - + if (power_draw < 0) last_power_draw = 0 last_flow_rate = 0 @@ -149,7 +157,7 @@ /obj/machinery/atmospherics/binary/dp_vent_pump/proc/get_pressure_delta(datum/gas_mixture/environment) var/pressure_delta = DEFAULT_PRESSURE_DELTA var/environment_pressure = environment.return_pressure() - + if(pump_direction) //internal -> external if(pressure_checks & PRESSURE_CHECK_EXTERNAL) pressure_delta = min(pressure_delta, external_pressure_bound - environment_pressure) //increasing the pressure here @@ -160,9 +168,9 @@ pressure_delta = min(pressure_delta, environment_pressure - external_pressure_bound) //decreasing the pressure here if(pressure_checks & PRESSURE_CHECK_OUTPUT) pressure_delta = min(pressure_delta, output_pressure_max - air2.return_pressure()) //increasing the pressure here - + return pressure_delta - + //Radio remote control @@ -203,7 +211,7 @@ /obj/machinery/atmospherics/binary/dp_vent_pump/examine() set src in oview(1) ..() - + if (get_dist(usr, src) <= 1) usr << "A small gauge in the corner reads [round(last_flow_rate, 0.1)] L/s; [round(last_power_draw)] W" From 438b750062e6e12aeb9c6343ef90d81bbee37e95 Mon Sep 17 00:00:00 2001 From: mwerezak Date: Sun, 16 Nov 2014 21:39:06 -0500 Subject: [PATCH 19/27] Fixes being able to hear people through space when the speaker is inside a pressurized room. Moves the pressure check to the hearer's side. --- code/modules/mob/hear_say.dm | 14 +++++++++++++- code/modules/mob/living/say.dm | 23 +++++++++++------------ 2 files changed, 24 insertions(+), 13 deletions(-) diff --git a/code/modules/mob/hear_say.dm b/code/modules/mob/hear_say.dm index 221863ce3c7..05ea07dd016 100644 --- a/code/modules/mob/hear_say.dm +++ b/code/modules/mob/hear_say.dm @@ -8,7 +8,19 @@ //Does the speaker have a client? It's either random stuff that observers won't care about (Experiment 97B says, 'EHEHEHEHEHEHEHE') //Or someone snoring. So we make it where they won't hear it. return - + + //make sure the air can transmit speech - hearer's side + var/turf/T = get_turf(src) + if (T) + var/datum/gas_mixture/environment = T.return_air() + var/pressure = (environment)? environment.return_pressure() : 0 + if(pressure < SOUND_MINIMUM_PRESSURE && get_dist(speaker, src) > 1) + return + + if (pressure < ONE_ATMOSPHERE*0.4) //sound distortion pressure, to help clue people in that the air is thin, even if it isn't a vacuum yet + italics = 1 + sound_vol *= 0.5 //muffle the sound a bit, so it's like we're actually talking through contact + if(sleeping || stat == 1) hear_sleep(message) return diff --git a/code/modules/mob/living/say.dm b/code/modules/mob/living/say.dm index 861d436c67e..d884eaf3a7e 100644 --- a/code/modules/mob/living/say.dm +++ b/code/modules/mob/living/say.dm @@ -73,22 +73,21 @@ var/list/department_radio_keys = list( if (speaking.flags & SIGNLANG) say_signlang(message, pick(speaking.signlang_verb), speaking) return 1 - - //make sure the air can transmit speech - var/datum/gas_mixture/environment = T.return_air() - if(environment) - var/pressure = environment.return_pressure() - if(pressure < SOUND_MINIMUM_PRESSURE) - italics = 1 - message_range = 1 - - if (speech_sound) - sound_vol *= 0.5 //muffle the sound a bit, so it's like we're actually talking through contact - + var/list/listening = list() var/list/listening_obj = list() if(T) + //make sure the air can transmit speech - speaker's side + var/datum/gas_mixture/environment = T.return_air() + var/pressure = (environment)? environment.return_pressure() : 0 + if(pressure < SOUND_MINIMUM_PRESSURE) + message_range = 1 + + if (pressure < ONE_ATMOSPHERE*0.4) //sound distortion pressure, to help clue people in that the air is thin, even if it isn't a vacuum yet + italics = 1 + sound_vol *= 0.5 //muffle the sound a bit, so it's like we're actually talking through contact + var/list/hear = hear(message_range, T) var/list/hearturfs = list() From 8c5639c7202b352ee2ffa70c7d11b6895a6354fc Mon Sep 17 00:00:00 2001 From: DJSnapshot Date: Mon, 17 Nov 2014 14:35:24 -0800 Subject: [PATCH 20/27] sanity checks and other cleanliness things. --- code/modules/admin/verbs/adminhelp.dm | 38 +++++++++++++-------------- code/modules/admin/verbs/adminpm.dm | 6 ++--- 2 files changed, 21 insertions(+), 23 deletions(-) diff --git a/code/modules/admin/verbs/adminhelp.dm b/code/modules/admin/verbs/adminhelp.dm index 7c8ac39db10..6825c07df3c 100644 --- a/code/modules/admin/verbs/adminhelp.dm +++ b/code/modules/admin/verbs/adminhelp.dm @@ -113,17 +113,16 @@ var/list/adminhelp_ignored_words = list("unknown","the","a","an","of","monkey"," var/list/debugholders = list() var/list/adminholders = list() for(var/client/X in admins) - if((R_MENTOR|R_ADMIN) & X.holder.rights) + if(R_MENTOR & X.holder.rights && !(R_ADMIN & X.holder.rights)) // we don't want to count admins twice. This list should be JUST mentors mentorholders += X - if(R_MENTOR & X.holder.rights) - if(X.is_afk()) - admin_number_afk++ - if(R_DEBUG & X.holder.rights) + if(X.is_afk()) + admin_number_afk++ + if(R_DEBUG & X.holder.rights) // Looking for anyone with +Debug which will be admins, developers, and developer mentors debugholders += X if(!(R_ADMIN & X.holder.rights)) if(X.is_afk()) admin_number_afk++ - if(R_ADMIN & X.holder.rights) + if(R_ADMIN & X.holder.rights) // just admins here please adminholders += X if(X.is_afk()) admin_number_afk++ @@ -131,31 +130,30 @@ var/list/adminhelp_ignored_words = list("unknown","the","a","an","of","monkey"," switch(selected_type) if("Gameplay/Roleplay question") if(mentorholders.len) - for(var/client/X in mentorholders) - if(R_ADMIN & X.holder.rights) - if(X.prefs.toggles & SOUND_ADMINHELP) - X << 'sound/effects/adminhelp.ogg' - X << msg - else - if(R_MENTOR & X.holder.rights) - if(X.prefs.toggles & SOUND_ADMINHELP) - X << 'sound/effects/adminhelp.ogg' - X << mentor_msg + for(var/client/X in mentorholders) // Mentors get a message without buttons and no character name + if(X.prefs.toggles & SOUND_ADMINHELP) + X << 'sound/effects/adminhelp.ogg' + X << mentor_msg + if(adminholders.len) + for(var/client/X in adminholders) // Admins get the full monty + if(X.prefs.toggles & SOUND_ADMINHELP) + X << 'sound/effects/adminhelp.ogg' + X << msg if("Rule/Gameplay issue") if(adminholders.len) - for(var/client/X in adminholders) + for(var/client/X in adminholders) // Admins of course get everything in their helps if(X.prefs.toggles & SOUND_ADMINHELP) X << 'sound/effects/adminhelp.ogg' X << msg if("Bug report") if(debugholders.len) for(var/client/X in debugholders) - if(R_ADMIN & X.holder.rights) + if(R_ADMIN & X.holder.rights) // Admins get every button & special highlights in theirs if(X.prefs.toggles & SOUND_ADMINHELP) X << 'sound/effects/adminhelp.ogg' X << msg else - if (R_DEBUG & X.holder.rights) + if (R_DEBUG & X.holder.rights) // Just devs or devmentors get non-highlighted names, but they do get JMP and VV for their bug reports. if(X.prefs.toggles & SOUND_ADMINHELP) X << 'sound/effects/adminhelp.ogg' X << dev_msg @@ -176,7 +174,7 @@ var/list/adminhelp_ignored_words = list("unknown","the","a","an","of","monkey"," X << msg*/ //show it to the person adminhelping too - src << "PM to-Staff: [original_msg]" + src << "PM to-Staff ([selected_type]): [original_msg]" var/admin_number_present = admins.len - admin_number_afk log_admin("HELP: [key_name(src)]: [original_msg] - heard by [admin_number_present] non-AFK admins.") diff --git a/code/modules/admin/verbs/adminpm.dm b/code/modules/admin/verbs/adminpm.dm index bdc93347fff..5e26498a2b7 100644 --- a/code/modules/admin/verbs/adminpm.dm +++ b/code/modules/admin/verbs/adminpm.dm @@ -43,7 +43,7 @@ if(!istype(C,/client)) if(holder) src << "Error: Private-Message: Client not found." - else adminhelp(msg) //admin we are replying to left. adminhelp instead + else src << "Error: Private-Message: Client not found. They may have lost connection, so try using an adminhelp!" return //get message text, limit it's length.and clean/escape html @@ -53,7 +53,7 @@ if(!msg) return if(!C) if(holder) src << "Error: Admin-PM: Client not found." - else adminhelp(msg) //admin we are replying to has vanished, adminhelp instead + else src << "Error: Private-Message: Client not found. They may have lost connection, so try using an adminhelp!" return if (src.handle_spam_prevention(msg,MUTE_ADMINHELP)) @@ -78,7 +78,7 @@ else recieve_color = "maroon" send_pm_type = holder.rank + " " - if(!C.holder && holder && holder.fakekey) + if(!C.holder && holder && holder.fakekey) recieve_pm_type = "Admin" else recieve_pm_type = holder.rank From 9d5ba587acb6f9c1c52ac6c553f266ed1b8c1f96 Mon Sep 17 00:00:00 2001 From: DJSnapshot Date: Mon, 17 Nov 2014 15:08:36 -0800 Subject: [PATCH 21/27] Mentors don't need faxes, communications, or prayers. --- code/WorkInProgress/kilakk/fax.dm | 8 ++++++-- code/modules/admin/verbs/pray.dm | 13 +++++++++---- 2 files changed, 15 insertions(+), 6 deletions(-) diff --git a/code/WorkInProgress/kilakk/fax.dm b/code/WorkInProgress/kilakk/fax.dm index 2c342296207..29f2331a490 100644 --- a/code/WorkInProgress/kilakk/fax.dm +++ b/code/WorkInProgress/kilakk/fax.dm @@ -186,12 +186,16 @@ var/list/alldepartments = list("Central Command") var/msg = "\blue CENTCOMM FAX: [key_name(Sender, 1)] (PP) (VV) (SM) (JMP) (CA) (RPLY): Receiving '[sentname]' via secure connection ... view message" - admins << msg + for(var/client/C in admins) + if(R_ADMIN & C.holder.rights) + C << msg /proc/Solgov_fax(var/originfax, var/sent, var/sentname, var/mob/Sender) var/msg = "\blue SOL GOVERNMENT FAX: [key_name(Sender, 1)] (PP) (VV) (SM) (JMP) (CA) (RPLY): Receiving '[sentname]' via secure connection ... view message" - admins << msg + for(var/client/C in admins) + if(R_ADMIN & C.holder.rights) + C << msg proc/SendFax(var/sent, var/sentname, var/mob/Sender, var/dpt) diff --git a/code/modules/admin/verbs/pray.dm b/code/modules/admin/verbs/pray.dm index fd91142cdf6..6004dc43f50 100644 --- a/code/modules/admin/verbs/pray.dm +++ b/code/modules/admin/verbs/pray.dm @@ -20,8 +20,9 @@ msg = "\blue \icon[cross] PRAY: [key_name(src, 1)] (?) (PP) (VV) (SM) (JMP) (CA) (SC): [msg]" for(var/client/C in admins) - if(C.prefs.toggles & CHAT_PRAYER) - C << msg + if(R_ADMIN & C.holder.rights) + if(C.prefs.toggles & CHAT_PRAYER) + C << msg usr << "Your prayers have been received by the gods." feedback_add_details("admin_verb","PR") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! @@ -30,9 +31,13 @@ /proc/Centcomm_announce(var/text , var/mob/Sender , var/iamessage) var/msg = copytext(sanitize(text), 1, MAX_MESSAGE_LEN) msg = "\blue CENTCOMM[iamessage ? " IA" : ""]:[key_name(Sender, 1)] (PP) (VV) (SM) (JMP) (CA) (BSA) (RPLY): [msg]" - admins << msg + for(var/client/C in admins) + if(R_ADMIN & C.holder.rights) + C << msg /proc/Syndicate_announce(var/text , var/mob/Sender) var/msg = copytext(sanitize(text), 1, MAX_MESSAGE_LEN) msg = "\blue SYNDICATE:[key_name(Sender, 1)] (PP) (VV) (SM) (JMP) (CA) (BSA) (RPLY): [msg]" - admins << msg + for(var/client/C in admins) + if(R_ADMIN & C.holder.rights) + C << msg From b078365f66d9e99b1af7540c2572affe5cc95fd7 Mon Sep 17 00:00:00 2001 From: DJSnapshot Date: Mon, 17 Nov 2014 15:18:22 -0800 Subject: [PATCH 22/27] vote powers r 4 admons only --- code/controllers/voting.dm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/code/controllers/voting.dm b/code/controllers/voting.dm index 80c816e436b..4c6b9754bd3 100644 --- a/code/controllers/voting.dm +++ b/code/controllers/voting.dm @@ -290,9 +290,9 @@ datum/controller/vote var/admin = 0 var/trialmin = 0 if(C.holder) - admin = 1 if(C.holder.rights & R_ADMIN) - trialmin = 1 + admin = 1 + trialmin = 1 // don't know why we use both of these it's really weird, but I'm 2 lasy to refactor this all to use just admin. voting |= C . = "Voting Panel" From 6918b0bca61ac8ba1f0bb338ad6178597c7c40b7 Mon Sep 17 00:00:00 2001 From: PsiOmega Date: Tue, 18 Nov 2014 10:18:05 +0100 Subject: [PATCH 23/27] Multiple Law Statements Synths can now report laws on multiple channels at the same time. --- code/modules/mob/living/silicon/laws.dm | 26 ++++++++++------------ code/modules/mob/living/silicon/silicon.dm | 2 +- 2 files changed, 13 insertions(+), 15 deletions(-) diff --git a/code/modules/mob/living/silicon/laws.dm b/code/modules/mob/living/silicon/laws.dm index 212fc14096d..48e96423399 100644 --- a/code/modules/mob/living/silicon/laws.dm +++ b/code/modules/mob/living/silicon/laws.dm @@ -27,18 +27,22 @@ laws.clear_supplied_laws() /mob/living/silicon/proc/statelaws() // -- TLE - if(stating_laws) - src << "You are currently stating laws." - return - stating_laws = 1 - var/prefix = "" switch(lawchannel) - if(MAIN_CHANNEL) prefix = ";" // Apparently defines are not constant expressions? + if(MAIN_CHANNEL) prefix = ";" if("Binary") prefix = ":b " else prefix = get_radio_key_from_channel(lawchannel == "Holopad" ? "department" : lawchannel) + " " + dostatelaws(lawchannel, prefix) + +/mob/living/silicon/proc/dostatelaws(var/method, var/prefix) + if(stating_laws[prefix]) + src << "[method]: Already stating laws using this communication method." + return + + stating_laws[prefix] = 1 + var/can_state = statelaw("[prefix]Current Active Laws:") //src.laws_sanity_check() @@ -71,9 +75,8 @@ number++ if(!can_state) - src << "Unable to state laws. Communication method unavailable." - - stating_laws = 0 + src << "[method]: Unable to state laws. Communication method unavailable." + stating_laws[prefix] = 0 /mob/living/silicon/proc/statelaw(var/law) if(src.say(law)) @@ -93,10 +96,7 @@ for (var/index = 1, index <= src.laws.ion.len, index++) var/law = src.laws.ion[index] - if (length(law) > 0) - - if (!src.ioncheck[index]) src.ioncheck[index] = "Yes" list += {"[src.ioncheck[index]] [ionnum()]: [law]
"} @@ -105,10 +105,8 @@ var/number = 1 for (var/index = 1, index <= src.laws.inherent.len, index++) var/law = src.laws.inherent[index] - if (length(law) > 0) src.lawcheck.len += 1 - if (!src.lawcheck[number+1]) src.lawcheck[number+1] = "Yes" list += {"[src.lawcheck[number+1]] [number]: [law]
"} diff --git a/code/modules/mob/living/silicon/silicon.dm b/code/modules/mob/living/silicon/silicon.dm index 2490eb1429c..93d4438d7b4 100644 --- a/code/modules/mob/living/silicon/silicon.dm +++ b/code/modules/mob/living/silicon/silicon.dm @@ -6,9 +6,9 @@ var/list/additional_law_channels = list("State") var/const/MAIN_CHANNEL = "Main Frequency" var/lawchannel = MAIN_CHANNEL // Default channel on which to state laws + var/list/stating_laws = list()// Channels laws are currently being stated on var/lawcheck[1] var/ioncheck[1] - var/stating_laws = 0 var/obj/item/device/radio/common_radio immune_to_ssd = 1 From 89e3167ab79ae03400fd2cbbccb5db54a8611b54 Mon Sep 17 00:00:00 2001 From: Atlantiscze Date: Tue, 18 Nov 2014 11:40:08 +0100 Subject: [PATCH 24/27] Cyborgs can now modify airlock electronics accesses. - Fixes #6997 --- code/game/machinery/doors/airlock_electronics.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/game/machinery/doors/airlock_electronics.dm b/code/game/machinery/doors/airlock_electronics.dm index d9a3efe9594..0a22aa0dd94 100644 --- a/code/game/machinery/doors/airlock_electronics.dm +++ b/code/game/machinery/doors/airlock_electronics.dm @@ -16,7 +16,7 @@ var/locked = 1 attack_self(mob/user as mob) - if (!ishuman(user) && !istype(user,/mob/living/silicon/robot/drone)) + if (!ishuman(user) && !istype(user,/mob/living/silicon/robot)) return ..(user) var/mob/living/carbon/human/H = user From f7bc35f333473ef35e21043e735374d6aad96df6 Mon Sep 17 00:00:00 2001 From: PsiOmega Date: Tue, 18 Nov 2014 12:24:54 +0100 Subject: [PATCH 25/27] Binary Tracking The AI can again finally track entities using the binary channel. --- .../game/objects/items/devices/radio/radio.dm | 17 ----------------- code/modules/mob/language.dm | 2 +- code/modules/mob/living/silicon/ai/ai.dm | 19 +------------------ 3 files changed, 2 insertions(+), 36 deletions(-) diff --git a/code/game/objects/items/devices/radio/radio.dm b/code/game/objects/items/devices/radio/radio.dm index 98ac6451968..f2f8a1b8b9a 100644 --- a/code/game/objects/items/devices/radio/radio.dm +++ b/code/game/objects/items/devices/radio/radio.dm @@ -135,23 +135,6 @@ A.ai_actual_track(target) return - else if (href_list["faketrack"]) - var/mob/target = locate(href_list["track"]) - var/mob/living/silicon/ai/A = locate(href_list["track2"]) - if(A && target) - - A:cameraFollow = target - A << text("Now tracking [] on camera.", target.name) - if (usr.machine == null) - usr.machine = usr - - while (usr:cameraFollow == target) - usr << "Target is not on or near any active cameras on the station. We'll check again in 5 seconds (unless you use the cancel-camera verb)." - sleep(40) - continue - - return - else if (href_list["freq"]) var/new_frequency = (frequency + text2num(href_list["freq"])) if (!freerange || (frequency < 1200 || frequency > 1600)) diff --git a/code/modules/mob/language.dm b/code/modules/mob/language.dm index b49374cecdf..b9fcefbddec 100755 --- a/code/modules/mob/language.dm +++ b/code/modules/mob/language.dm @@ -230,7 +230,7 @@ if(drone_only && !istype(S,/mob/living/silicon/robot/drone)) continue else if(istype(S , /mob/living/silicon/ai)) - message_start = "[name], [speaker.name]" + message_start = "[name], [speaker.name]" else if (!S.binarycheck()) continue diff --git a/code/modules/mob/living/silicon/ai/ai.dm b/code/modules/mob/living/silicon/ai/ai.dm index b24e995aecc..aaf82a90c3b 100644 --- a/code/modules/mob/living/silicon/ai/ai.dm +++ b/code/modules/mob/living/silicon/ai/ai.dm @@ -481,24 +481,7 @@ var/list/ai_verbs_default = list( else src << "\red System error. Cannot locate [html_decode(href_list["trackname"])]." return - - else if (href_list["faketrack"]) - var/mob/target = locate(href_list["track"]) in mob_list - var/mob/living/silicon/ai/A = locate(href_list["track2"]) in mob_list - if(A && target) - - A.cameraFollow = target - A << text("Now tracking [] on camera.", target.name) - if (usr.machine == null) - usr.machine = usr - - while (src.cameraFollow == target) - usr << "Target is not on or near any active cameras on the station. We'll check again in 5 seconds (unless you use the cancel-camera verb)." - sleep(40) - continue - - return - + return /mob/living/silicon/ai/meteorhit(obj/O as obj) From 4377ada588862e8731f72b90987f16aeb1c48eb5 Mon Sep 17 00:00:00 2001 From: mwerezak Date: Mon, 17 Nov 2014 01:03:46 -0500 Subject: [PATCH 26/27] Implements custom item for Foxler, fixes simple_animal emotes. --- code/modules/customitems/item_defines.dm | 83 ++++++++++++++++++ code/modules/mob/emote.dm | 2 + .../mob/living/simple_animal/borer/borer.dm | 4 +- .../mob/living/simple_animal/friendly/cat.dm | 63 +++++++------ .../living/simple_animal/friendly/corgi.dm | 14 +-- .../mob/living/simple_animal/friendly/crab.dm | 6 +- .../simple_animal/friendly/farm_animals.dm | 24 ++--- .../living/simple_animal/friendly/mouse.dm | 13 ++- .../living/simple_animal/friendly/mushroom.dm | 6 +- .../living/simple_animal/friendly/tomato.dm | 6 +- code/modules/mob/living/simple_animal/head.dm | 6 +- .../mob/living/simple_animal/hostile/alien.dm | 6 +- .../mob/living/simple_animal/hostile/bear.dm | 8 +- .../living/simple_animal/hostile/faithless.dm | 6 +- .../simple_animal/hostile/giant_spider.dm | 6 +- .../mob/living/simple_animal/hostile/mimic.dm | 8 +- .../living/simple_animal/hostile/pirate.dm | 4 +- .../simple_animal/hostile/retaliate/clown.dm | 8 +- .../simple_animal/hostile/retaliate/drone.dm | 6 +- .../living/simple_animal/hostile/russian.dm | 8 +- .../living/simple_animal/hostile/syndicate.dm | 8 +- .../mob/living/simple_animal/hostile/tree.dm | 8 +- .../mob/living/simple_animal/kobold.dm | 6 +- .../mob/living/simple_animal/parrot.dm | 14 +-- .../modules/mob/living/simple_animal/shade.dm | 2 +- .../mob/living/simple_animal/simple_animal.dm | 37 ++++---- icons/mob/animal.dmi | Bin 187751 -> 192339 bytes icons/mob/head.dmi | Bin 121969 -> 122871 bytes icons/mob/items_lefthand.dmi | Bin 153330 -> 154154 bytes icons/mob/items_righthand.dmi | Bin 155429 -> 155513 bytes icons/obj/objects.dmi | Bin 123347 -> 123597 bytes 31 files changed, 229 insertions(+), 133 deletions(-) diff --git a/code/modules/customitems/item_defines.dm b/code/modules/customitems/item_defines.dm index 776fb186b91..5f95b306c42 100644 --- a/code/modules/customitems/item_defines.dm +++ b/code/modules/customitems/item_defines.dm @@ -1412,3 +1412,86 @@ desc = "This cane seems to have 'Ryals' engraved on its handle." icon_state = "cane" item_state = "stick" + +////////////////////////////// Foxler - Erstatz Vryroxes ///////////////////////////////////////////////// + +/obj/item/weapon/holder/cat/fluff/bones + name = "Bones" + desc = "It's Bones! Meow." + gender = MALE + icon_state = "cat3" + +//Use this subtype for spawning in the custom item. +/obj/item/weapon/holder/cat/fluff/bones/custom_item + +/obj/item/weapon/holder/cat/fluff/bones/custom_item/New() + if (!contents.len) + new/mob/living/simple_animal/cat/fluff/bones (src) + ..() + +/mob/living/simple_animal/cat/fluff/bones + name = "Bones" + desc = "That's Bones the cat. He's a laid back, black cat. Meow." + gender = MALE + icon_state = "cat3" + icon_living = "cat3" + icon_dead = "cat3_dead" + holder_type = /obj/item/weapon/holder/cat/fluff/bones + bff_name = "Erstatz Vryroxes" + +/mob/living/simple_animal/cat/fluff + var/bff_name + var/mob/living/carbon/human/bff + +/mob/living/simple_animal/cat/fluff/handle_movement_target() + if (!bff) + for (var/mob/living/carbon/human/M in player_list) + if (M.real_name == bff_name) + bff = M + break + + if (bff) + var/follow_dist = 5 + if (bff.stat >= DEAD || bff.health <= config.health_threshold_softcrit) //danger + follow_dist = 1 + else if (bff.stat || bff.health <= 50) //danger or just sleeping + follow_dist = 2 + var/near_dist = max(follow_dist - 3, 1) + var/current_dist = get_dist(src, bff) + + if (movement_target != bff) + if (current_dist > follow_dist && !istype(movement_target, /mob/living/simple_animal/mouse) && (bff in oview(src))) + //stop existing movement + walk_to(src,0) + turns_since_scan = 0 + + //walk to bff + stop_automated_movement = 1 + movement_target = bff + walk_to(src, movement_target, near_dist, 4) + + //already following and close enough, stop + else if (current_dist <= near_dist) + walk_to(src,0) + movement_target = null + stop_automated_movement = 0 + + if (!(bff && movement_target == bff)) + ..() + +/mob/living/simple_animal/cat/fluff/Life() + ..() + if (stat || !bff) + return + if (get_dist(src, bff) <= 1) + if (bff.stat >= DEAD || bff.health <= config.health_threshold_softcrit) + if (prob((bff.stat < DEAD)? 50 : 15)) + audible_emote(pick("meows in distress.", "meows anxiously.")) + else + if (prob(5)) + visible_emote(pick("nuzzles [bff].", + "brushes against [bff].", + "rubs against [bff].", + "purrs.")) + else if (bff.health <= 50) + if (prob(10)) audible_emote("meows anxiously.") \ No newline at end of file diff --git a/code/modules/mob/emote.dm b/code/modules/mob/emote.dm index 3e2d037d132..09418b8bb08 100644 --- a/code/modules/mob/emote.dm +++ b/code/modules/mob/emote.dm @@ -1,4 +1,6 @@ // All mobs should have custom emote, really.. +//m_type == 1 --> visual. +//m_type == 2 --> audible /mob/proc/custom_emote(var/m_type=1,var/message = null) if(stat || !use_me && usr == src) diff --git a/code/modules/mob/living/simple_animal/borer/borer.dm b/code/modules/mob/living/simple_animal/borer/borer.dm index 593c41b742f..35915234775 100644 --- a/code/modules/mob/living/simple_animal/borer/borer.dm +++ b/code/modules/mob/living/simple_animal/borer/borer.dm @@ -7,8 +7,8 @@ speak_emote = list("chirrups") emote_hear = list("chirrups") response_help = "pokes" - response_disarm = "prods the" - response_harm = "stomps on the" + response_disarm = "prods" + response_harm = "stomps on" icon_state = "brainslug" icon_living = "brainslug" icon_dead = "brainslug_dead" diff --git a/code/modules/mob/living/simple_animal/friendly/cat.dm b/code/modules/mob/living/simple_animal/friendly/cat.dm index 4678531947d..56f615c77fc 100644 --- a/code/modules/mob/living/simple_animal/friendly/cat.dm +++ b/code/modules/mob/living/simple_animal/friendly/cat.dm @@ -8,14 +8,14 @@ speak = list("Meow!","Esp!","Purr!","HSSSSS") speak_emote = list("purrs", "meows") emote_hear = list("meows","mews") - emote_see = list("shakes its head", "shivers") + emote_see = list("shakes their head", "shivers") speak_chance = 1 turns_per_move = 5 see_in_dark = 6 meat_type = /obj/item/weapon/reagent_containers/food/snacks/meat - response_help = "pets the" - response_disarm = "gently pushes aside the" - response_harm = "kicks the" + response_help = "pets" + response_disarm = "gently pushes aside" + response_harm = "kicks" var/turns_since_scan = 0 var/mob/living/simple_animal/mouse/movement_target min_oxy = 16 //Require atleast 16kPA oxygen @@ -27,40 +27,45 @@ //MICE! if((src.loc) && isturf(src.loc)) if(!stat && !resting && !buckled) - for(var/mob/living/simple_animal/mouse/M in view(1,src)) + for(var/mob/living/simple_animal/mouse/M in loc) if(!M.stat) M.splat() - emote(pick("\red splats the [M]!","\red toys with the [M]","worries the [M]")) + visible_emote(pick("bites \the [M]!","toys with \the [M].","chomps on \the [M]!")) movement_target = null stop_automated_movement = 0 break ..() - for(var/mob/living/simple_animal/mouse/snack in oview(src, 3)) - if(prob(15)) - emote(pick("hisses and spits!","mrowls fiercely!","eyes [snack] hungrily.")) + for(var/mob/living/simple_animal/mouse/snack in oview(src,5)) + if(snack.stat < DEAD && prob(15)) + audible_emote(pick("hisses and spits!","mrowls fiercely!","eyes [snack] hungrily.")) break if(!stat && !resting && !buckled) - turns_since_scan++ - if(turns_since_scan > 5) - walk_to(src,0) - turns_since_scan = 0 - if((movement_target) && !(isturf(movement_target.loc) || ishuman(movement_target.loc) )) - movement_target = null - stop_automated_movement = 0 - if( !movement_target || !(movement_target.loc in oview(src, 3)) ) - movement_target = null - stop_automated_movement = 0 - for(var/mob/living/simple_animal/mouse/snack in oview(src,3)) - if(isturf(snack.loc) && !snack.stat) - movement_target = snack - break - if(movement_target) - stop_automated_movement = 1 - walk_to(src,movement_target,0,3) + handle_movement_target() +/mob/living/simple_animal/cat/proc/handle_movement_target() + turns_since_scan++ + if(turns_since_scan > 5) + walk_to(src,0) + turns_since_scan = 0 + + if((movement_target) && !(isturf(movement_target.loc) || ishuman(movement_target.loc) )) + movement_target = null + stop_automated_movement = 0 + if( !movement_target || !(movement_target.loc in oview(src, 4)) ) + movement_target = null + stop_automated_movement = 0 + for(var/mob/living/simple_animal/mouse/snack in oview(src)) + if(isturf(snack.loc) && !snack.stat) + movement_target = snack + world << "[src]: mouse located." + break + if(movement_target) + world << "[src]: locking on [movement_target]" + stop_automated_movement = 1 + walk_to(src,movement_target,0,3) /mob/living/simple_animal/cat/MouseDrop(atom/over_object) @@ -73,10 +78,16 @@ else return ..() +/mob/living/simple_animal/cat/get_scooped(var/mob/living/carbon/grabber) + if (stat >= DEAD) + return //since the holder icon looks like a living cat + ..() + //RUNTIME IS ALIVE! SQUEEEEEEEE~ /mob/living/simple_animal/cat/Runtime name = "Runtime" desc = "Her fur has the look and feel of velvet, and her tail quivers occasionally." + gender = FEMALE icon_state = "cat" icon_living = "cat" icon_dead = "cat_dead" diff --git a/code/modules/mob/living/simple_animal/friendly/corgi.dm b/code/modules/mob/living/simple_animal/friendly/corgi.dm index a7b7cbc6221..1e41a1d5d15 100644 --- a/code/modules/mob/living/simple_animal/friendly/corgi.dm +++ b/code/modules/mob/living/simple_animal/friendly/corgi.dm @@ -14,9 +14,9 @@ turns_per_move = 10 meat_type = /obj/item/weapon/reagent_containers/food/snacks/meat/corgi meat_amount = 3 - response_help = "pets the" - response_disarm = "bops the" - response_harm = "kicks the" + response_help = "pets" + response_disarm = "bops" + response_harm = "kicks" see_in_dark = 5 var/obj/item/inventory_head var/obj/item/inventory_back @@ -58,7 +58,7 @@ for (var/mob/M in viewers(src, null)) M.show_message("\red [user] gently taps [src] with the [O]. ") if(prob(15)) - emote("looks at [user] with [pick("an amused","an annoyed","a confused","a resentful", "a happy", "an excited")] expression on \his face") + visible_emote("looks at [user] with [pick("an amused","an annoyed","a confused","a resentful", "a happy", "an excited")] expression on \his face") return ..() @@ -310,10 +310,10 @@ if(isturf(movement_target.loc) ) UnarmedAttack(movement_target) else if(ishuman(movement_target.loc) && prob(20)) - custom_emote(1,"stares at the [movement_target] that [movement_target.loc] has with sad puppy eyes.") + visible_emote("stares at the [movement_target] that [movement_target.loc] has with sad puppy eyes.") if(prob(1)) - emote(pick("dances around","chases its tail")) + visible_emote(pick("dances around","chases their tail")) spawn(0) for(var/i in list(1,2,4,8,4,2,1,2,4,8,4,2,1,2,4,8,4,2)) dir = i @@ -467,7 +467,7 @@ if(prob(1)) - emote(pick("dances around","chases her tail")) + visible_emote(pick("dances around","chases her tail")) spawn(0) for(var/i in list(1,2,4,8,4,2,1,2,4,8,4,2,1,2,4,8,4,2)) dir = i diff --git a/code/modules/mob/living/simple_animal/friendly/crab.dm b/code/modules/mob/living/simple_animal/friendly/crab.dm index 6eccd808c02..c85f5bc7349 100644 --- a/code/modules/mob/living/simple_animal/friendly/crab.dm +++ b/code/modules/mob/living/simple_animal/friendly/crab.dm @@ -12,9 +12,9 @@ speak_chance = 1 turns_per_move = 5 meat_type = /obj/item/weapon/reagent_containers/food/snacks/meat - response_help = "pets the" - response_disarm = "gently pushes aside the" - response_harm = "stomps the" + response_help = "pets" + response_disarm = "gently pushes aside" + response_harm = "stomps" stop_automated_movement = 1 friendly = "pinches" var/obj/item/inventory_head diff --git a/code/modules/mob/living/simple_animal/friendly/farm_animals.dm b/code/modules/mob/living/simple_animal/friendly/farm_animals.dm index ef9731bb0b4..b40e6fb8196 100644 --- a/code/modules/mob/living/simple_animal/friendly/farm_animals.dm +++ b/code/modules/mob/living/simple_animal/friendly/farm_animals.dm @@ -14,9 +14,9 @@ see_in_dark = 6 meat_type = /obj/item/weapon/reagent_containers/food/snacks/meat meat_amount = 4 - response_help = "pets the" - response_disarm = "gently pushes aside the" - response_harm = "kicks the" + response_help = "pets" + response_disarm = "gently pushes aside" + response_harm = "kicks" faction = "goat" attacktext = "kicked" health = 40 @@ -99,9 +99,9 @@ see_in_dark = 6 meat_type = /obj/item/weapon/reagent_containers/food/snacks/meat meat_amount = 6 - response_help = "pets the" - response_disarm = "gently pushes aside the" - response_harm = "kicks the" + response_help = "pets" + response_disarm = "gently pushes aside" + response_harm = "kicks" attacktext = "kicked" health = 50 var/datum/reagents/udder = null @@ -160,9 +160,9 @@ turns_per_move = 2 meat_type = /obj/item/weapon/reagent_containers/food/snacks/meat meat_amount = 1 - response_help = "pets the" - response_disarm = "gently pushes aside the" - response_harm = "kicks the" + response_help = "pets" + response_disarm = "gently pushes aside" + response_harm = "kicks" attacktext = "kicked" health = 1 var/amount_grown = 0 @@ -201,9 +201,9 @@ var/global/chicken_count = 0 turns_per_move = 3 meat_type = /obj/item/weapon/reagent_containers/food/snacks/meat meat_amount = 2 - response_help = "pets the" - response_disarm = "gently pushes aside the" - response_harm = "kicks the" + response_help = "pets" + response_disarm = "gently pushes aside" + response_harm = "kicks" attacktext = "kicked" health = 10 var/eggsleft = 0 diff --git a/code/modules/mob/living/simple_animal/friendly/mouse.dm b/code/modules/mob/living/simple_animal/friendly/mouse.dm index f6200a3e7eb..c6f3cfb87c3 100644 --- a/code/modules/mob/living/simple_animal/friendly/mouse.dm +++ b/code/modules/mob/living/simple_animal/friendly/mouse.dm @@ -1,7 +1,7 @@ /mob/living/simple_animal/mouse name = "mouse" real_name = "mouse" - desc = "It's a small, disease-ridden rodent." + desc = "It's a small rodent." icon_state = "mouse_gray" icon_living = "mouse_gray" icon_dead = "mouse_gray_dead" @@ -17,9 +17,9 @@ maxHealth = 5 health = 5 meat_type = /obj/item/weapon/reagent_containers/food/snacks/meat - response_help = "pets the" - response_disarm = "gently pushes aside the" - response_harm = "stamps on the" + response_help = "pets" + response_disarm = "gently pushes aside" + response_harm = "stamps on" density = 0 var/body_color //brown, gray and white, leave blank for random layer = MOB_LAYER @@ -47,7 +47,7 @@ icon_state = "mouse_[body_color]" wander = 1 else if(prob(5)) - emote("snuffles") + audible_emote("snuffles.") /mob/living/simple_animal/mouse/New() ..() @@ -110,9 +110,6 @@ /mob/living/simple_animal/mouse/brown/Tom name = "Tom" desc = "Jerry the cat is not amused." - response_help = "pets" - response_disarm = "gently pushes aside" - response_harm = "splats" /mob/living/simple_animal/mouse/can_use_vents() return \ No newline at end of file diff --git a/code/modules/mob/living/simple_animal/friendly/mushroom.dm b/code/modules/mob/living/simple_animal/friendly/mushroom.dm index ef2eb6cd61e..5b4121beddc 100644 --- a/code/modules/mob/living/simple_animal/friendly/mushroom.dm +++ b/code/modules/mob/living/simple_animal/friendly/mushroom.dm @@ -10,7 +10,7 @@ maxHealth = 5 health = 5 meat_type = /obj/item/weapon/reagent_containers/food/snacks/hugemushroomslice - response_help = "pets the" - response_disarm = "gently pushes aside the" - response_harm = "whacks the" + response_help = "pets" + response_disarm = "gently pushes aside" + response_harm = "whacks" harm_intent_damage = 5 \ No newline at end of file diff --git a/code/modules/mob/living/simple_animal/friendly/tomato.dm b/code/modules/mob/living/simple_animal/friendly/tomato.dm index 1248e702d2d..57c0f4c939b 100644 --- a/code/modules/mob/living/simple_animal/friendly/tomato.dm +++ b/code/modules/mob/living/simple_animal/friendly/tomato.dm @@ -9,7 +9,7 @@ maxHealth = 15 health = 15 meat_type = /obj/item/weapon/reagent_containers/food/snacks/tomatomeat - response_help = "prods the" - response_disarm = "pushes aside the" - response_harm = "smacks the" + response_help = "prods" + response_disarm = "pushes aside" + response_harm = "smacks" harm_intent_damage = 5 \ No newline at end of file diff --git a/code/modules/mob/living/simple_animal/head.dm b/code/modules/mob/living/simple_animal/head.dm index 9b12edb4ed6..227d2bcf04a 100644 --- a/code/modules/mob/living/simple_animal/head.dm +++ b/code/modules/mob/living/simple_animal/head.dm @@ -12,9 +12,9 @@ speak_chance = 1 turns_per_move = 5 meat_type = /obj/item/weapon/reagent_containers/food/snacks/meat - response_help = "pets the" - response_disarm = "gently pushes aside the" - response_harm = "punches the" + response_help = "pets" + response_disarm = "gently pushes aside" + response_harm = "punches" var/list/insults = list( "Man you suck", "You look like the most retarded douche around", diff --git a/code/modules/mob/living/simple_animal/hostile/alien.dm b/code/modules/mob/living/simple_animal/hostile/alien.dm index ab6874276a2..447ad6b1c9c 100644 --- a/code/modules/mob/living/simple_animal/hostile/alien.dm +++ b/code/modules/mob/living/simple_animal/hostile/alien.dm @@ -6,9 +6,9 @@ icon_living = "alienh_running" icon_dead = "alien_l" icon_gib = "syndicate_gib" - response_help = "pokes the" - response_disarm = "shoves the" - response_harm = "hits the" + response_help = "pokes" + response_disarm = "shoves" + response_harm = "hits" speed = -1 meat_type = /obj/item/weapon/reagent_containers/food/snacks/xenomeat maxHealth = 100 diff --git a/code/modules/mob/living/simple_animal/hostile/bear.dm b/code/modules/mob/living/simple_animal/hostile/bear.dm index 15786b67517..fa3e8c23853 100644 --- a/code/modules/mob/living/simple_animal/hostile/bear.dm +++ b/code/modules/mob/living/simple_animal/hostile/bear.dm @@ -14,9 +14,9 @@ turns_per_move = 5 see_in_dark = 6 meat_type = /obj/item/weapon/reagent_containers/food/snacks/bearmeat - response_help = "pets the" - response_disarm = "gently pushes aside the" - response_harm = "pokes the" + response_help = "pets" + response_disarm = "gently pushes aside" + response_harm = "pokes" stop_automated_movement_when_pulled = 0 maxHealth = 60 health = 60 @@ -90,7 +90,7 @@ if(HOSTILE_STANCE_ATTACKING) if(stance_step >= 20) //attacks for 20 ticks, then it gets tired and needs to rest - custom_emote(1, "is worn out and needs to rest" ) + custom_emote(1, "is worn out and needs to rest." ) stance = HOSTILE_STANCE_TIRED stance_step = 0 walk(src, 0) //This stops the bear's walking diff --git a/code/modules/mob/living/simple_animal/hostile/faithless.dm b/code/modules/mob/living/simple_animal/hostile/faithless.dm index d69ac010129..14b069a6a19 100644 --- a/code/modules/mob/living/simple_animal/hostile/faithless.dm +++ b/code/modules/mob/living/simple_animal/hostile/faithless.dm @@ -6,9 +6,9 @@ icon_dead = "faithless_dead" speak_chance = 0 turns_per_move = 5 - response_help = "passes through the" + response_help = "passes through" response_disarm = "shoves" - response_harm = "hits the" + response_harm = "hits" speed = -1 maxHealth = 80 health = 80 @@ -38,7 +38,7 @@ /mob/living/simple_animal/hostile/faithless/FindTarget() . = ..() if(.) - emote("wails at [.]") + audible_emote("wails at [.]") /mob/living/simple_animal/hostile/faithless/AttackingTarget() . =..() diff --git a/code/modules/mob/living/simple_animal/hostile/giant_spider.dm b/code/modules/mob/living/simple_animal/hostile/giant_spider.dm index 3b82b645409..4d0792d7898 100644 --- a/code/modules/mob/living/simple_animal/hostile/giant_spider.dm +++ b/code/modules/mob/living/simple_animal/hostile/giant_spider.dm @@ -17,9 +17,9 @@ turns_per_move = 5 see_in_dark = 10 meat_type = /obj/item/weapon/reagent_containers/food/snacks/bearmeat - response_help = "pets the" - response_disarm = "gently pushes aside the" - response_harm = "pokes the" + response_help = "pets" + response_disarm = "gently pushes aside" + response_harm = "pokes" stop_automated_movement_when_pulled = 0 maxHealth = 200 health = 200 diff --git a/code/modules/mob/living/simple_animal/hostile/mimic.dm b/code/modules/mob/living/simple_animal/hostile/mimic.dm index 6e43df93780..9900249c34f 100644 --- a/code/modules/mob/living/simple_animal/hostile/mimic.dm +++ b/code/modules/mob/living/simple_animal/hostile/mimic.dm @@ -10,9 +10,9 @@ icon_living = "crate" meat_type = /obj/item/weapon/reagent_containers/food/snacks/carpmeat - response_help = "touches the" - response_disarm = "pushes the" - response_harm = "hits the" + response_help = "touches" + response_disarm = "pushes" + response_harm = "hits" speed = 4 maxHealth = 250 health = 250 @@ -39,7 +39,7 @@ /mob/living/simple_animal/hostile/mimic/FindTarget() . = ..() if(.) - emote("growls at [.]") + audible_emote("growls at [.]") /mob/living/simple_animal/hostile/mimic/death() ..() diff --git a/code/modules/mob/living/simple_animal/hostile/pirate.dm b/code/modules/mob/living/simple_animal/hostile/pirate.dm index 2ccf7888935..e3a4ce46671 100644 --- a/code/modules/mob/living/simple_animal/hostile/pirate.dm +++ b/code/modules/mob/living/simple_animal/hostile/pirate.dm @@ -6,9 +6,9 @@ icon_dead = "piratemelee_dead" speak_chance = 0 turns_per_move = 5 - response_help = "pushes the" + response_help = "pushes" response_disarm = "shoves" - response_harm = "hits the" + response_harm = "hits" speed = 4 stop_automated_movement_when_pulled = 0 maxHealth = 100 diff --git a/code/modules/mob/living/simple_animal/hostile/retaliate/clown.dm b/code/modules/mob/living/simple_animal/hostile/retaliate/clown.dm index 2bb2610f669..cdaf72f6bd1 100644 --- a/code/modules/mob/living/simple_animal/hostile/retaliate/clown.dm +++ b/code/modules/mob/living/simple_animal/hostile/retaliate/clown.dm @@ -1,5 +1,5 @@ /mob/living/simple_animal/hostile/retaliate/clown - name = "Clown" + name = "clown" desc = "A denizen of clown planet" icon_state = "clown" icon_living = "clown" @@ -7,9 +7,9 @@ icon_gib = "clown_gib" speak_chance = 0 turns_per_move = 5 - response_help = "pokes the" - response_disarm = "gently pushes aside the" - response_harm = "hits the" + response_help = "pokes" + response_disarm = "gently pushes aside" + response_harm = "hits" speak = list("HONK", "Honk!", "Welcome to clown planet!") emote_see = list("honks") speak_chance = 1 diff --git a/code/modules/mob/living/simple_animal/hostile/retaliate/drone.dm b/code/modules/mob/living/simple_animal/hostile/retaliate/drone.dm index ddbd35d0e34..65f4e6f7874 100644 --- a/code/modules/mob/living/simple_animal/hostile/retaliate/drone.dm +++ b/code/modules/mob/living/simple_animal/hostile/retaliate/drone.dm @@ -10,9 +10,9 @@ rapid = 1 speak_chance = 5 turns_per_move = 3 - response_help = "pokes the" - response_disarm = "gently pushes aside the" - response_harm = "hits the" + response_help = "pokes" + response_disarm = "gently pushes aside" + response_harm = "hits" speak = list("ALERT.","Hostile-ile-ile entities dee-twhoooo-wected.","Threat parameterszzzz- szzet.","Bring sub-sub-sub-systems uuuup to combat alert alpha-a-a.") emote_see = list("beeps menacingly","whirrs threateningly","scans its immediate vicinity") a_intent = "harm" diff --git a/code/modules/mob/living/simple_animal/hostile/russian.dm b/code/modules/mob/living/simple_animal/hostile/russian.dm index 8c2a470dcd8..b09a6ec548c 100644 --- a/code/modules/mob/living/simple_animal/hostile/russian.dm +++ b/code/modules/mob/living/simple_animal/hostile/russian.dm @@ -1,5 +1,5 @@ /mob/living/simple_animal/hostile/russian - name = "Russian" + name = "russian" desc = "For the Motherland!" icon_state = "russianmelee" icon_living = "russianmelee" @@ -7,9 +7,9 @@ icon_gib = "syndicate_gib" speak_chance = 0 turns_per_move = 5 - response_help = "pokes the" - response_disarm = "shoves the" - response_harm = "hits the" + response_help = "pokes" + response_disarm = "shoves" + response_harm = "hits" speed = 4 stop_automated_movement_when_pulled = 0 maxHealth = 100 diff --git a/code/modules/mob/living/simple_animal/hostile/syndicate.dm b/code/modules/mob/living/simple_animal/hostile/syndicate.dm index 11a81284f20..6a382021351 100644 --- a/code/modules/mob/living/simple_animal/hostile/syndicate.dm +++ b/code/modules/mob/living/simple_animal/hostile/syndicate.dm @@ -1,5 +1,5 @@ /mob/living/simple_animal/hostile/syndicate - name = "Syndicate Operative" + name = "\improper Syndicate operative" desc = "Death to Nanotrasen." icon_state = "syndicate" icon_living = "syndicate" @@ -7,9 +7,9 @@ icon_gib = "syndicate_gib" speak_chance = 0 turns_per_move = 5 - response_help = "pokes the" - response_disarm = "shoves the" - response_harm = "hits the" + response_help = "pokes" + response_disarm = "shoves" + response_harm = "hits" speed = 4 stop_automated_movement_when_pulled = 0 maxHealth = 100 diff --git a/code/modules/mob/living/simple_animal/hostile/tree.dm b/code/modules/mob/living/simple_animal/hostile/tree.dm index b263cd21129..a908af98688 100644 --- a/code/modules/mob/living/simple_animal/hostile/tree.dm +++ b/code/modules/mob/living/simple_animal/hostile/tree.dm @@ -9,9 +9,9 @@ speak_chance = 0 turns_per_move = 5 meat_type = /obj/item/weapon/reagent_containers/food/snacks/carpmeat - response_help = "brushes the" - response_disarm = "pushes the" - response_harm = "hits the" + response_help = "brushes" + response_disarm = "pushes" + response_harm = "hits" speed = -1 maxHealth = 250 health = 250 @@ -40,7 +40,7 @@ /mob/living/simple_animal/hostile/tree/FindTarget() . = ..() if(.) - emote("growls at [.]") + audible_emote("growls at [.]") /mob/living/simple_animal/hostile/tree/AttackingTarget() . =..() diff --git a/code/modules/mob/living/simple_animal/kobold.dm b/code/modules/mob/living/simple_animal/kobold.dm index 3d9515c88b6..3e52a408747 100644 --- a/code/modules/mob/living/simple_animal/kobold.dm +++ b/code/modules/mob/living/simple_animal/kobold.dm @@ -14,9 +14,9 @@ turns_per_move = 5 see_in_dark = 6 meat_type = /obj/item/weapon/reagent_containers/food/snacks/meat/monkey - response_help = "pets the" - response_disarm = "gently pushes aside the" - response_harm = "kicks the" + response_help = "pets" + response_disarm = "gently pushes aside" + response_harm = "kicks" minbodytemp = 250 min_oxy = 16 //Require atleast 16kPA oxygen minbodytemp = 223 //Below -50 Degrees Celcius diff --git a/code/modules/mob/living/simple_animal/parrot.dm b/code/modules/mob/living/simple_animal/parrot.dm index 21833161ad9..7790f9ecd83 100644 --- a/code/modules/mob/living/simple_animal/parrot.dm +++ b/code/modules/mob/living/simple_animal/parrot.dm @@ -44,9 +44,9 @@ turns_per_move = 5 meat_type = /obj/item/weapon/reagent_containers/food/snacks/cracker/ - response_help = "pets the" - response_disarm = "gently moves aside the" - response_harm = "swats the" + response_help = "pets" + response_disarm = "gently moves aside" + response_harm = "swats" stop_automated_movement = 1 universal_speak = 1 @@ -342,7 +342,7 @@ //Search for item to steal parrot_interest = search_for_item() if(parrot_interest) - emote("looks in [parrot_interest]'s direction and takes flight") + visible_emote("looks in [parrot_interest]'s direction and takes flight") parrot_state = PARROT_SWOOP | PARROT_STEAL icon_state = "parrot_fly" return @@ -364,7 +364,7 @@ if(AM) if(istype(AM, /obj/item) || isliving(AM)) //If stealable item parrot_interest = AM - emote("turns and flies towards [parrot_interest]") + visible_emote("turns and flies towards [parrot_interest]") parrot_state = PARROT_SWOOP | PARROT_STEAL return else //Else it's a perch @@ -478,11 +478,11 @@ var/datum/organ/external/affecting = H.get_organ(ran_zone(pick(parrot_dam_zone))) H.apply_damage(damage, BRUTE, affecting, H.run_armor_check(affecting, "melee"), sharp=1) - emote(pick("pecks [H]'s [affecting]", "cuts [H]'s [affecting] with its talons")) + visible_emote(pick("pecks [H]'s [affecting].", "cuts [H]'s [affecting] with its talons.")) else L.adjustBruteLoss(damage) - emote(pick("pecks at [L]", "claws [L]")) + visible_emote(pick("pecks at [L].", "claws [L].")) return //Otherwise, fly towards the mob! diff --git a/code/modules/mob/living/simple_animal/shade.dm b/code/modules/mob/living/simple_animal/shade.dm index ed5f35d55bd..c200ef6f703 100644 --- a/code/modules/mob/living/simple_animal/shade.dm +++ b/code/modules/mob/living/simple_animal/shade.dm @@ -13,7 +13,7 @@ emote_hear = list("wails","screeches") response_help = "puts their hand through" response_disarm = "flails at" - response_harm = "punches the" + response_harm = "punches" melee_damage_lower = 5 melee_damage_upper = 15 attacktext = "drained the life from" diff --git a/code/modules/mob/living/simple_animal/simple_animal.dm b/code/modules/mob/living/simple_animal/simple_animal.dm index 078159c12d1..8695741ed82 100644 --- a/code/modules/mob/living/simple_animal/simple_animal.dm +++ b/code/modules/mob/living/simple_animal/simple_animal.dm @@ -114,23 +114,23 @@ else randomValue -= speak.len if(emote_see && randomValue <= emote_see.len) - emote(pick(emote_see),1) + visible_emote("[pick(emote_see)].") else - emote(pick(emote_hear),2) + audible_emote("[pick(emote_hear)].") else say(pick(speak)) else if(!(emote_hear && emote_hear.len) && (emote_see && emote_see.len)) - emote(pick(emote_see),1) + visible_emote("[pick(emote_see)].") if((emote_hear && emote_hear.len) && !(emote_see && emote_see.len)) - emote(pick(emote_hear),2) + audible_emote("[pick(emote_hear)].") if((emote_hear && emote_hear.len) && (emote_see && emote_see.len)) var/length = emote_hear.len + emote_see.len var/pick = rand(1,length) if(pick <= emote_see.len) - emote(pick(emote_see),1) + visible_emote("[pick(emote_see)].") else - emote(pick(emote_hear),2) + audible_emote("[pick(emote_hear)].") //Atmos @@ -207,9 +207,14 @@ /mob/living/simple_animal/emote(var/act, var/type, var/desc) if(act) - if(act == "scream") act = "whimper" //ugly hack to stop animals screaming when crushed :P ..(act, type, desc) +/mob/living/simple_animal/proc/visible_emote(var/act_desc) + custom_emote(1, act_desc) + +/mob/living/simple_animal/proc/audible_emote(var/act_desc) + custom_emote(2, act_desc) + /mob/living/simple_animal/bullet_act(var/obj/item/projectile/Proj) if(!Proj || Proj.nodamage) return @@ -224,9 +229,11 @@ if("help") if (health > 0) - for(var/mob/O in viewers(src, null)) - if ((O.client && !( O.blinded ))) - O.show_message("\blue [M] [response_help] [src]") + M.visible_message("\blue [M] [response_help] \the [src]") + + if("disarm") + M.visible_message("\blue [M] [response_disarm] \the [src]") + //TODO: Push the mob away or something if("grab") if (M == src) @@ -242,15 +249,11 @@ G.affecting = src LAssailant = M - for(var/mob/O in viewers(src, null)) - if ((O.client && !( O.blinded ))) - O.show_message(text("\red [] has grabbed [] passively!", M, src), 1) + M.visible_message("\red [M] has grabbed [src] passively!") - if("hurt", "disarm") + if("hurt") adjustBruteLoss(harm_intent_damage) - for(var/mob/O in viewers(src, null)) - if ((O.client && !( O.blinded ))) - O.show_message("\red [M] [response_harm] [src]") + M.visible_message("\red [M] [response_harm] \the [src]") return diff --git a/icons/mob/animal.dmi b/icons/mob/animal.dmi index 20cb0a702c49fb41739214eca85633eaf0352fbd..3ebd2534d82f254b374d732f6e28c7285e70066c 100644 GIT binary patch delta 27139 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�WnGk5&k&^HeD2%*h}< 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 SwqpZ8ulwpcYGo=`Fa8S)tDNWn delta 25383 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 diff --git a/icons/mob/items_lefthand.dmi b/icons/mob/items_lefthand.dmi index ddea2d915691c222ae09c7b67e57cfa40649f287..ce4472f3f85865d19fb2de881d35bee0752338ec 100644 GIT binary patch delta 14283 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 diff --git a/icons/mob/items_righthand.dmi b/icons/mob/items_righthand.dmi index 2990e374cc7a79fefe04e0b5ba8174d9267589ae..2dc3c52abb118304bb58189e9af812f65560c5ca 100644 GIT binary patch delta 14054 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 BsILG3 diff --git a/icons/obj/objects.dmi b/icons/obj/objects.dmi index e50759742c74de564eb5bbe9426c20fcc1de8451..a30feb163e50376e4b96f0d59d0596e6bad3af13 100644 GIT binary patch delta 7803 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 M54BWEmCS?x2U8jse*gdg delta 7569 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 *lOtPZ8)ryfIqBM9`>eMSf_tt{@hz&^N$r3Y zHaw%hKi}*|d$H(aXh?%ZAI#Gls&Eoe-Q;MOgih_h8K5VLsEMDNnW59e$jHcu)aNEA zhk~FEA)S++-Noc&v?v0;wJ|S!1RpaHTZ_@GR8-3%F8;uDR>7BDK%jbkF0JX_pw9J; zq|oWp=fBUtg_W@A*(7i`)tP>xV`k3&gLfh2R529;hR0K6Xvsp;8C{2M3K6u-qBFbe z`}c|$*46-^YihcC{wPCJ9`@3~p}Y;Bl$4ZTR8*AH?E1kczC7j=Pp$Q`syEC7EQ#DX zh~8>jdV2aE&{kN$QO9XKm(PqeS*%Nv6AACg&eu@hBKex}C(>nXNq(;pz5>|K z(*!Mu(!S$mjZAx7OHWKp47dbf24ZQGa&nOIXJ?*MIdnk*t~!py>FJs81d}b>Jj-~q z`t1;yL7d6klhFHE&vkXXi!)OnK742mA!7mnY8smI-3ul%2na%#twHcl2k&05x|K`U zlGW&`z4(s1PdId4Jj$MsK07)ztu z;-6}#_}mMB4DaI9y$a8Wd*hE@!n$OGN4c?eNm-Yy)s+Z@YYRm`kQv9?e+)_O!Y4+h z#8L|E^|%1()RVOPnXkl+d1`6hM2Ju1q_tk^Vg{ixxI=@iNPh1P7Z;b|1Mh!j%+>A1 zdP2nyW-MGXY;ii0V}x{2Xg-oUVGt+#D@j7*vxP_>I}oSm^|K}3te`-XsMJj`kYN_gzdDY=SjVGR+y=*h(Oo9ky6%`R-;g6lwZIdYk6>%imfLawqJaXKYfV!WltkgB z<+%9Ycovr&&isem9ts`@^kr8}_*2zzsy%B`e10zYQ$&Xu_uz-Bl2Z4?e;tjpqAD9y zmNm#vm6O;&Z+aEWt1_;s1;9&h)^VO<7dAGgxUaqtW55GmIXiDeS6l#nKrXpSv#Z6> zeNGXPq=V%yRxpqerz4L+nfv8k;Ba!OY}fIXL5OMsau5gXpG;K*p5S-g{&leXv=}{A z5$nDS)_~>Z3hL@arwC~}Mn+;|?mAX84A?(918VN3rgb25-1;KVS`IJcOa*&VpaJ79 z&-rO$i`NPo8mPenG9SXFyUm-8T9vOc)$Tf`BRTx~Zi}7}-An^w7x3vSqiZF-+}@i; zRzozibsj3t-KwKvQvB}T;|uHkPxpzktcHM%Q*7{H;Y&-FTi)$`Qs|kP^q&(Gec)AA z<9q5LCLs~CtOn_`J~rSpF)^VVwI+&WhmpIIum6!9{fwx3SNn}xBp=LR3HsMns zk0}A9aWHXvnIJXQyfZsZkC7ZntA3jx=TmAryA6sZQYx8rcI*IdCFYkTvyOd+p<1Z zp1|a-5+{LKFfNjk3fy;RXNUYQl}fdNT&aT{T1i6vs?6Ycv&m&1_Yg1XzLf_f|Ic`z ze#Z{h55vQnpq~Ck&LHWpF^y&?_J9p<#oCeY{TfR#8DyZQc*IVE;mXR&!jB%I8XCm9 zTml0Fzd5Rqizo;Jnp}EAK1Sn#Q$#>3t(~>C^&HYqwZyeyH!Q_-hbvhvnJyTfz)tHD z=2vZ||my%b_F=lJw&MrYGJcz)U>zlYZ?qX*Q*f`+@kxtdk|CYlB^8 zZJs<}Xp2(-e~c5#atNuSHzThZG`(*B3|E>85Nc~{qy5`nOQL_188iOdodR8NU1)StyU1g|YySXc}@Hfo#FE0Uj}#(!w>3H9qw z2u#c-LJE29%bkR$d`!(l%i{AIERjlxe`Z#2XCVh!lQK%Igg{u*IR(M?N*D;4@qZH0 z-48lJNY@ziCqJ(_)qW_{)uD1K@w+nAskvYpFQ$VG>@$ovoQ5qOMbCf-J+w?RKJc)UbkjASpBZG@x3+8c>>~0#YTXAEerg^ z!q_MT1nB9ZVMyjMb#h#Ja@;%`O16LB@=DDAEAjL@+{eK1D)p(z%JJ%4sY<5C0nS); z=t3v(Q6k2Rz>f7<70$o4r6Gnr!|t!{k$^uah+h#!fK1q;N)@rg{!aw*|1$RfV@Uu1 eEZYAI`_sGYafv9BPk4O*_)&YRtyHC8jrt#FWP}?4 From c11cb65e1905c38045d55cbeb02be395789a8743 Mon Sep 17 00:00:00 2001 From: Zuhayr Date: Mon, 17 Nov 2014 22:57:36 +1030 Subject: [PATCH 27/27] Added combi-tool. --- code/game/objects/items/weapons/tools.dm | 47 +++++++++++++++++++++++ icons/obj/items.dmi | Bin 59098 -> 59393 bytes 2 files changed, 47 insertions(+) diff --git a/code/game/objects/items/weapons/tools.dm b/code/game/objects/items/weapons/tools.dm index c39a74b7c39..214044a88ed 100644 --- a/code/game/objects/items/weapons/tools.dm +++ b/code/game/objects/items/weapons/tools.dm @@ -472,3 +472,50 @@ else return ..() + +/obj/item/weapon/combitool + name = "combi-tool" + desc = "It even has one of those nubbins for doing the thingy." + icon = 'icons/obj/items.dmi' + icon_state = "combitool" + + var/list/spawn_tools = list( + /obj/item/weapon/screwdriver, + /obj/item/weapon/wrench, + /obj/item/weapon/wirecutters, + /obj/item/weapon/kitchen/utensil/knife, + /obj/item/weapon/kitchen/utensil/fork, + /obj/item/weapon/hatchet + ) + var/list/tools = list() + var/current_tool = 1 + +/obj/item/weapon/combitool/examine() + ..() + if(loc == usr && tools.len) + usr << "It has the following fittings:" + for(var/obj/item/tool in tools) + usr << "\icon[tool] - [tool.name][tools[current_tool]==tool?" (selected)":""]" + +/obj/item/weapon/combitool/New() + ..() + for(var/type in spawn_tools) + tools |= new type(src) + +/obj/item/weapon/combitool/attack_self(mob/user as mob) + if(++current_tool > tools.len) current_tool = 1 + var/obj/item/tool = tools[current_tool] + if(!tool) + user << "You can't seem to find any fittings in \the [src]." + else + user << "You switch \the [src] to the [tool.name] fitting." + return 1 + +/obj/item/weapon/combitool/attack(var/atom/target, var/mob/living/user) + var/obj/item/tool = tools[current_tool] + if(!tool) + return ..() + var/resolved = target.attackby(tool,user) + if(!resolved && tool && target) + tool.afterattack(target,user,1) + return 1 \ No newline at end of file diff --git a/icons/obj/items.dmi b/icons/obj/items.dmi index b23d6dad0806e5bd0ff22b99c3948047a3bf4bcf..afbbefd304adc1fc84edec83c97c85dcdd791185 100644 GIT binary patch delta 21384 zcmaHSbyOU|vo0P879_y}1PuiD;0f*ocNQn;;toTA1oz+&To-q@-~@NK;O?-na5uku z-aGfa_s;uccV~KfX1c4Zs_Xlzc5wvx+c$#$U)C&M3%eIfnWta(fXLG z5r#Ao=z-$p7-;aX3{qc8a|VCdXVB)l_BEhW`w(ifGDK;%a&B?(;O3@!VD*#S*>`1u zBWYAQOGJ?nEk;p)?d~X9K3(-HYm$oN1(tC2tw3OXToBIpmOQSnf!W$JpXRMl>Hn zf330|`JsBZ1hh37n)iHQnoUtDd_meIECVz9;N`*{_38Wm-_Eirb=>+WBvhm-Ud}nS z&6b`b;(Q{k$GZ=2D-6HqC3U@4YRQI%5;?i=3xYdcf!+2Pn`sJ1r%2tv_>jfCdcR~s zL^-ug-4LeDCUSi9qZUDNMkLABklmG1UD4zh%KQyAwBxe^i34vJWr`8xb4IxaMoa2h zrak-azV(e>l7{x+LwS%4O<0j!LPR^??E4!URbqN=bi^8bcBk046BKn+z()X^_3Kw= z>5a!?0*l5+IfeQ$Q|?_aqRpne3wRt{Qn^c$w69|ox^{99Z4cZuzfL<$9FrB&NwbU? zT=vgAxdJsF^1{uQYB}$w8m*7_N_s_+>U_TqPReAXALYJo+qD;ZlY|nYMH>5CL;ngvu-A*LQb2v`UD54dL4$T1+g58IXF;B~cP7Xe zKay3}11!|VF#AeXFj#(?OVQPSjU!1I58#J4GO_FMs~Y}hikm13dNVAUi@&a}@0Lr8 zAr6U77n%_qmBE)AHf3fA|9SeorvM+5%;N(_Q4l6J4#yi}rVGq)>{!1&)E#k5D8oT^ z6-K-W^|mmzq7q?z2J%}VBw%geZD)90u8|!+Xsu`$86_~cP$(`%4$(GwL65kFy@5aN z_Gm1lB{}BX;Q^P|}L=X8JSb*(pvo(PS|qG#TPIJgU=T#hblo`vzlHr386>c$|&}Zb=t$7}+aO3Vvcb z)d>$y!^%;xIufYQ65|tc%taA{jWxsWiA&cFIM|;k=mtQy*O7XSQ2W;z-%OfnU;e=9 z9RFcQM((styM|b1<)V9_g&3OaaKauXc?mRvvFQ*B{r_jbL$nt0I4mzKv>$UGHS)919-u`Ua zr1jSu(K7GXt3XF+!#gduzqM1^foxh6)N7sCU&caDCcw3b0N)FB8Z>#Y#WdGg8KFq) z9wS+0Z(R_NNo8K4a9IT@hxX*uuURldIk%DQVU8qOr37^>w`JbF+<}-##AoVQ8GZjY zC9O#xI#()eZTM+wNQ4VrWEXPHoE$B_?4e|8MPAha`oAmsK?>sX>7U)Y<78;#=yOOb zglo!d(ttcWn*ZD=afdg4&UW6P3j=i2L7htW2xF z!e{x#w{z(PtmXXg^$XDG@I$p?@hbBa9Y^>#sChXfvSC{vGrSWEHEpf%th#VTeUxpV zx8GyoO%QIIA+iG#fUd*}{3hQ#MEON5!0QsVard`t9TxNb@~RunmLfo5t7&n2Q8V>@ zk~O{b&r~b#ZRSXcJ$`7Ou?%uzEe0w6J$>eqp1#k95e|iLc|!5nTUG{!cQiDCTl{n* zLq~=wf_f6}he}q4tWyOd%cTeOu`&lz^@#Gi!X@`NC&UKe#ryS%t)L%2kltKk1211v zGcch0&(CW&OQG^W>bKq(j;U5hk<&Hn;fg$-wOMHJg-WRMP5RT7kuKFbi!b_MVqy;d z`I9FejALeDfizxaDxGzodbVL8h;j64xFgYL@;|S9yXErIYf+fs$ggYd$*4+t5~SK; zcPJQW-QIvDoXHZbG-J~~xO)Srz%^?NA}6v2KEsQ!gdymL&~-uDapVh8fR;Qa>L^e}(&6`#YUoez0_ zOSA51ZTA$SdXwv`qt=T$;C4qxM?ylv#+D()ox%N@pOlHr1#^-~>_>5cd>vW#dljDi z_UYRne)7Nf3#s_ST!dVa6QOo`9aPIn%PYkLa}@AFmYR3NM|M(FF2A4Rz?#&P`J3$l z=hf2T+c%@Wh6=x)TBWJ+>MU=_`6A+>s%ytk+!fE7`8sd+vWraK=LHk$Q?$aY!WFL1 zt*|Z=^U28Eo*=boe1W7{?z>mW))5Ltgr3qkfG)>ab@YnC-%rfnz zqxQ_3uMQ~bnVDmGWYXc$qB?f&ExBYhkT2Kn$BWw)Be@5FIKh>|6AG$L? ze(5+E!eQUWxG)9y-N@fPJY4RzHN13B^B0DFe%28~cs!lZ1K)%_b%0iIy9Sp}@(2}O`S!3-Q>m}F(La)R%U4?V3CZLoBv4L$Y9*FHJUj49=vt{~ zhioD&?e{xmkm|$omZ<(;p2f1H*irr(myuC8RV~6ykPt!o$j$hCrj-k2%@HkfY7=>5 zV=4>`4Evc(VQ*gFhnu<<-_zB$KdC&!WzhX^Y_EXD^0t-Z@2Cqs2_n0iuoFm2{9hw) zQU{l5m4^MfV5UD>`8Mh?A(4@FABN$o$j$w8eEf^*Zl2S^9$D%P+Y#=G93F!F95{Q- zT+0fte{1Sl`6@y%c+XzAar>ak9#TUC6Sg{(EL6%kyS?3w$9=O|?vh6X%kTP;IkaAl za0h@+FvkpctbEse#U(skP*L7rPKpY8Jwgeya`wU7|>E0r=DWrh@WT3z{x{MK0MXElutU@iS;N z^^#r6mMWp5!Gz6O&&bs;N!(4cv>$foZt}(8RN5ku?|y|E<4Cib%+jOZ^+9z zoSI8J+o|Q&Cl8$~tl-;7uIOn0GX?b`Fub|^8V%}L4az)*w)S6Z5Gc{c{sxhg1KD$P zX{UmeEGkDShfqJ5wN(^3*AEKk9R&8#uP8=|#rAAz$A71a-jevLjY0a0m9+U*T#(%r zoLY~E*^+qbDX=$xkl7bGFIAhL%xOi=3PSm+Z5NzfZS@ZPe2;8A#MUUFvbY zHEyU5m_$flH~4z#%eIz57_$63&V_7*O9A(ZtJrX{o$`e~Ui^N#^86y;##8;W?sh+f zldvoVV+p-;l40R-ZKL&goT5`#>oQ5nQBoblO-v);kImt}(oRu-?MD zQ}2^>euZK~Wr!g?zlShW55t9hE1tjeD1R{W3mk2OBw?1i32UB`p6f7th3jK0+L|)b z0&=4?EyEOsV#2+`17*F@pUGL9#~J)C127J0qUQ%H1q7S_fUYS2i7f0D06;TEd$!<< zj^hy8>A&(X5)heO)sn!aNeDEBH}}DE$_o#(_Wq8YA^cJ9PQ=p=NP#ffZWzQ5m!CVtyFxj zxBie4YB1ryAm;X{T=B|7JhX3(ZEY2zrlvO9R~-ogH}2Cv)j3ch;}ej?Bo~oi_Ju2B z&cqz2RHXwL@{`mPxI9R6lI_^re-fn8DG*+Fi0uQ$+77=bHOe=)IRa5ScggDGW79xP z$ClCe;ZM0okIqCb4PaX*1G3yTHmhW$FNxlhOi;czX~D=xFL^yAJ2?GvkzN`2b!c7v z(*ef$zJ~?>ksoT_({9q#h)Re zV;*0gmp6&+q^REVqLAHa!!|#jmlWq+sFBcgUJX!W0C^RqJgr{QgWA;S2MieSPy?4d z#FzA<(CGtBVCkluNb<+Z(dN^+viHWJ0W^uM`E$6Uuc}-at^8pe{B_v;G+glji~c~z z8`fGmNx>B~eSQ7U4(xY#cX|n)Vb#@~NJvO$mzOmkY?z?0x9L8;5^1kDFOy%ZC#qfz z8mm3*2F)E?zlk?KdQ|@9bP@!h;}O4=^OU0c{`@VwfwUKmuNI?2$RdV#8WNv)<9xGI zI4Lra`7elEcAbMMk)M8msTC@1oSw2FQ44xYiXuEUFwMWi4;wL@crO~UxBeiR`0Q;s z!8XPa{B(V~%L-$zChkHvxY&G&fbb4MR^qdI@Y1cRoo#T*RC|VrX&o>P7JGi8Jzg-q z)s`kSk);ykQk(V5Qoe4sd%@9`Xm^#S0(+IjlE!D_+Q6q@+=ccyIGM1>EE9-Er>36{ zv4i_v0+3(RpEB_;SJ1)1LCt~&t10?K78`kJV3`7Vs$hg!ufBF>Pmna2jEoE-oKVDn zzPl;3y{tzQ)PXN|4pfOrkmx%lsXT6q5x6akP|6cN4lOSzNq#Dy{^xB6$3D`g??-IQ z!N|f#ev4xBqFV}>HmUwwSvi*z)b5l~?egihn|;UL1@!p@s5_A&<-Og2v`w=^yXMV! z24A>)n1Wj{RmRXjrEbZ5svVW9+L{B^47XkJ@U%v~?J7`O2KliR!_loIid|e@jGiH& zLK6!u(*uFqOBPC^Q6j>_rzl>}zs&*ZjkfWK-Q5uWyk+gFz$F&wru0pFIH%K z(BuGAep^U61wZ|&z0S$r|LVTShRyppJ?>H~c$JF_VkJ$DatnU?J~f8dF($mu1Cyk3 zo?ABH_62A=&$@PB)){CV|3!(~btwl^<7jP!I(90-q0T0&?Z})P>rNE8V72Svtc4&E zSEpw@wS?yyQW4TK0o9Ry^4ecs(d(TTb?^DVGOw}Tf8jP$#c|)~BP>3pfb}djhuLLP z+%7(Yz@0`M#;$F2!V1~Na1_B!7B_axGQE2e0MK33-E!ybJbps)Kj9;h{3?MS_GSLw zZz~rS_EBC-l0p@9&_D>Q_ka6?)+%wHYi(!#$tF4%l=@SYXopFWV=bv4>*8QU86JgO zwVz0nR_5v85fVzs%F41_+Rc?`G(dJZDB5l{C#X1=ZTLis*{<7)*AinGzslB7{WEZ2 z?R<#$LPOBh+|0~Ds4!1sm2jHm2dUtw>VZ5gv2<-V1`e$j9L~QdR=H$nXS*ED$4(V0 zH}GE`zalxANvoJnf=>Df2S@nRjr@>4ZJW6`eAsg=E6wZSTy4zC%F;-yfC|k>DS{cU z^ZhXAzz{eVoV5LtSuok+t@RIH0B|G&?+1TU>docsf93%`XfQWJVUFcS{s-_73|sDH zeTz>OVfA7E69Ury!-=SH4EO&%Kv4aGL&zxpA`ChN?`IQ(#vCgnLn81+=z3bstwH#D z8c>rVNR-i!j&5LDmqWuQWfp0pdWlCE&?HAS{za}x;xwfpoJN$r5<4j-5$*KdzD$EE ze}Yo6(W$YEt3@$7L@h8eDxtcQLTAN-ygQN!X1LXrv;H=22l1 zIyxi>dTx}7nbNY5ERFmuh{Cq|&s0WM7TTJ|ux@;sd~*vzm2a<*jLSF2*Vw>cKG@x@ zJ4-$Xp+Mi$ewF$wyV%^`b6Kj_5G76FDIw2Sh(*po;rSPDwoGp~0b2TO8XcDaB=j!U z*}ySIuI1RTKPgb@`LLnt!rK=Y(>Y{OMI_+m(I8 zoEq3Q_aYF1N`V+ls9S_EjbU`e|{pQRujJTYiF z!$q%L1Yfi1EnmpDmL19qMT=kqi^labbC&>;HRLml0H^@+g(ix|s@{mx;{ziA}ouVV86h@w8He~t~RXD)7$i%wVN;5Q@krK{Iz)-NrpI< zQZaP4@tXt~c})#x47$4kF%wf$3|w4G_yiHIjuxiWG-73z|@>-*B{*FVm*aTb;P%H?DBM^wOVv>@^qD9M$566aOeQ&vL zPLv8;bHV@?=nG*l_dIp<8@mNrxU(bF`bPcXV8+nK~{Qx$R*ILEyg+cxKL z0JpIF%VcR*k(dw|-J#eOmG`3+XeL)tiM_igD@ygEy#J1h68yucw5Z$Ytjo4sOoecW zspRaIK%FF84)5`yH?#M6Oy9a;Rn+cDt*X{L3Z)20@YA5_BJ(&Fl z3P6bGAe7Jizp{PzHGSH}BqYBZacWQpQEF%;yd!*kd}M$W<>Y;&4D1RP-(UJz4JGHC zZ0}rC&Pw)e^iA}=)F|f2PBrYzWhKco=&%;47nRfh4!Q1MvCyoxZ^3OGvw<#41zs;v z4?{Y@qn!0cj-pow)O2)`@}Ip)^)3ybfqn`)^Sw`1z_VYo%gLWpGCu2!syqyNT~1B3 zM`*aR4WIuqzjLx`+b_*F1*bDF_>@WkYes}NFSp(Cjod|k0D5>G2@UAMZ4zsRomjdY z5rXYI%&9ZPps%L*e}Y$6nGwp< zcpE1`^9J5G+&5p6#%Hhf1XD-~NqvvDiEv(d5wt&cBi2zLBpOZDkOMB0YQfUmnZokg z9*x|_vfk)qxvgk`vcr2qTdDdv(v9U#~k&x)#2OOAh3}Qj(I%hS4i9KA|yds-X zia55Q5qH(!R(kCSp2dufIru##QBY7S57p~`!&=;qC5tLzL(aZFJ|fn{9;Lr6Q7~r+ z6I0mzf*{~l$NUW290QO#Rmdu7e&C8|NdyJ!wcY%seQjsZQCHL4IJs}y_a^0M)u)3? zuHF(22seS|$nE3hSi|DlY@QzeA+N0l+Vv@;Qo0bvJ4Nlu%__Oi{ccCvr-*oXc$)IB zXKasEJU9c(AUKZuzC=@S+5UKj*{CF8PzpM}3GDi$q47ExhaBkb?+;G)Lw-BEzi88c zdEb9JDN;i7jvcdWiOp^EsSuYcX#LNin2A7eoagdn{G84fYWRXnSR@^*$geBkhuXsq zp?jf?P<30qIq)%e9l3kor8D8DQr$W^dD%?h>AtmTJzn#=W1;$?lCua<{_Mp0Z>-hD zH3a{Ovb_NOM23$h`>N`PipXN$#02{nNu4H&6(1kl&0&SN2T}gt+0RD>$10z8vxDj} zX%0InZr<2dxc-?*GNjfly-Ve1Q`ns$vNYmNV_+%EsxAq$Uoi|cV~h2Nulr&4swbBucO#Cb2#|s%j!A zD9DJLl;6AFe=4Pk8R~%QzUoL5U#NtD@(g>Iesnw4Qyiafwu2$nexEx9nuH6_TGAf@ z$b>(TmhVc!E~LG%Rye!ECsieV;5%#Vmo=xOrSguQZ7L~8q&=kR1{c?{t%4hWO|@}^ ze^kUjRbFZU@5VC5myWi;nY}j?IQo>6L3Cw^Ovsu`-|QB^4b!Rc)wen<*|0ZoEn0Nx z|7cLfh27YNiiU>&>XrY**B&!Yz?e4;k>LY#c4OmD=P_ZpN9c84xo)_aO#+==yr#zz zk@CUzbd5qT$DHwTJ6?^b~E>HNkK~z9HWql`$~HM?h{-u$tS@`7-%oyjR zT91oCZ=JRqt#T#VZfW%@uKsAu9MmwA%}8aSae zB4J2k{v_YfzkDV7A_-`CASCg1`$V?4Cx2ieHz$-lzhh6IEnTCVtX^&w44jwgnvIt$ z+m8DEy0x-A+zZ8^d0HgeTH+=IgX5(%ebF!L!$B+)?0_Sd@7T9h+gR<_Y9UQTUrF(06C~>jj|?1Sc*&A(RC9=^G+?VCPp}BTd2x z#l{bmqM`^vXQRkEx{#;&2E`#kg2)_s+ERrY;_Bmz@2&=Srl%^~0qrZOMs+x^$jIbn zWkXjkA$Zv|1i)K8Gu2fLjxg3vIp!a>Ek4=drm)IN_JDwZ)VvO%9)^z&)2kb|If_|(0aIm=}=Nk~Zbg%EDg zaNu0+a*vO?-qmmTibL>eeSIR=h?4-HVz6Gcy-N$d1R(t0K&ezq2geWhKq&{zS z-n?c89ybehL0Ng(TDtVJ!~oD>I+Cr;5Lu>l-S}^ zmrS<-SWx&$%YaBMYZPUhaWSl&6jAWN<9cTYg^56I?ss=L10!Pww@03qxy5OD=={-?ARPy-5!$En6synP5&CBI%E89HfWhViVbl9dG*ClU; zt8T}F5bj;ha4-fyb9LZ@vwL&&`;1B2sf#W!y*W!B?bmw|VuEiIM2|4kCXJ^aoRIgG zrr-~kxbd0onI~#mf_CjN$kO#oOiZ9IO1eLa;(Fj!dVS76=NBP&K}Rz;xnl!v+Hybz z+q*6Im5^rAD5ZbgU^jp$p{A&;{JWN08^Cw?b*rob$912N=pV`yLvMe!OLN+m426fC z(Qr1S80%n7jrRR}uG8ORudjK=vn z*BEJo$LAx#3rCLY>Q61u58<5PLX$PI<2ulzSU!@ zUAKMPol%=GxO=W~f;rLyUwxwrt^zcpN$2?!nd4Kw&9ng-*TbyzT<(cPvF4mL7iW$~ z*8!__Hd?t?X_zJVNU0d!ElQ&~Qr)*}9EP?F)u{fT1JQWy?ve}*)!OQ%m|7_OX@8Z= zZArz+Agv>O zUnIYj7oVO)ay2O&3h2KGzf32x@`X)MiC~>lerN`6T6!2^7N(u$M#G6CIBWBZT(W}F z@W>5e{t0$_M;v*5bnK?d^_GB}a6hGXPlQy(pQq_JS1TM%Kh&Ts@5HWA93272f8!1b58r}kTvp4Ka;+5lA;p%rOx9#) znamSIf&M0$tM*{z)s`I|NjqdeU`nZMSzWiJj0`!+2n!1`gLd?Cb!TEkEO^I)>u05zhsS18Llqq%KINL)eHI> zrUclV7wu@N>JAOYzvuV7pry;t*LS?%t^;x=XN%TS9e$pSjE)wxbJs#V;cx#*!et>8 zO!u;!Af+I&R_bjESVF=hcZ?DK>TJG_)@A*hw_!A^th+b(9WXg|wK{^&?u3=|iWeWN-lieAJdB^EL5ix@s4X(fdr{XYEoR9H|;b%@;{ zu=or|gCx2-&W{^ZR^*K|NQr36-4ki2IO{}Ymx^#cu;+GPe0MbCexsk#V3n*%MJxV9h^2Cet<;{q-w3b(rJdah}!5eDYn@z2JdAEK50ukET!N_SLz z>X&SbKR~+QcLuu`GP^Y^u_*w3<`XbyXON5Tb0A5)egU9-@LuVVje@J&97>>BYIk9o zQ;yzPMbC`gh^hu;-Upc9DZ_cpZWZ-Kbr_Tyq_q#a9>6glt1&n>ZiMnu5-Du|^GL zNb#&T-R8%srROG44hYQeIg3;p1t5@`^^}~8a9lnQ3h#oGQ8wX>kj9S?b8(e1 zog}3?R>QA>~Ytuufs-_0|GE&b$UURi?0;}>uo;%GIoHq7qX591p)ObVF2=LEf4Vg1On6-~Q7+tv-9k}G>}Wv$*nMRgWZhaZdS9sKT2WNgIW{(SQjbR? zZM|DD93+~|AzRexbgUR^Cc=VR&I`2bwmxOn&_PKDz;I065GvdBkz9V~QN&RYv zhz%vz#}_df4tThPm(h-}eGOU;e!y+HR7p{hTr%=rz(o9-qoWvYaXd=LEkeUUw+@gz zq`8Fm(AV^h5WIiWIGce~a{uIKMgS^(hzo)<$^AE5&4_aj1@FQoJA5Uc=l%5OX-NFj zH{WU=-DxgaD)$+($Z1Ba+}>Nm<|4@4gq0(_m$NY-J1usHBD3W>zxj8s5aDGTg#LQq zmegmT=9m6A6Dnqw+YX0zS~d0~06qSTz9|ubh%4B8cs&IjTSZK+v{GzFf;c?1u$e10 z?iq+(=G$fsrY}uBt+FH2Zn}9fdb~0sNBNGr85!Z6rY}CNT`@ca`FAdV{m8`)x1x9N zPDj!T%Ph%d8wC1R&t0<%(kndgjFED37={O{(!8QV!jazr?>>Y@M3RMugip;PLSXQV zArKK|-{}Mk`=e^szwCK$B=k7fAgm;`?XShS*8VE3SRZpueKm_B>qmsRh7chs@ADab zja>D~gq-@6Q^c7GqG_+m4y)|4X;~f0$SW$s-pJJGfVtzJISgB!9^~H+2n=W)c3Aif zDKZ;g^Me7AGtwC4 zlrs#%heWKNu%ce7Xt%ErvdxFlpr9Wb-YfRs~8y$0O` zNi*}WhjbkP}{?Y$!TY;2Y9 zR@%086wzXS)cX3kwVW`E7O0zSm6$jPHUE+#pQX%U?^>29s3m z8m;dmNVr&?r$=qTJ4`bkuH;Sn#@%z95sdFtY(k*>M#yzzA6>g1k~fE#PzWrPU`o zoVA@)9r7|A9cH4nyHsMqNBc@iF7>d-FcQ;pyQhA5S34q@;e}frm1jer>ah9=f3#+` zpdNNGqQ&Fj-Cs;zL)sl>w^SQ)-O{j1ou~F5O+5)$Mu8T7G+$pf>uA8%5<$LHKeJda zs^#m^jIB-Tzy%bPrLav){95fva~&tsIKWhX>AI(QU8-dd*9+ILGB22XrAwPfH$uH2 z^H>?p^;FPPC7n_scoad*cjQ&(dmHK)eYx4shWF}V>;*2X+2}!&5XXt5A#7-JLzZXW zpv6rm<1l@1^$z9k)$6yt-%11F`&Y{QXIL#S;XdRV1k91*J}xg4B@h*e!qcvA2SZ|M z>I{b$bogtdqpHK~m!zc~uLc;)E;XP}1n_Mu<|F%R2}OycrR8>|t4%5|q1ACJPhB7K zT0AuLqANnytBAt;BVLJ1 zM_cRxdlQ-#IxYu46N(q5+7IeaSG~gFg*k4++4SaZaJLb>_062D63+8?u${KIj3ifx zTwKk*9UIBU`EU?O1dmo$INQv`uV%~*j@w;H(t}5|j$>x__Ov2xyYN^1crQ)=X*xe- zcT%*TlF7{ng8g1KcMZPHOy}s&{OreW0e-=^b(Aa?yD>1XZ^_+RHjVDmaediCseq=r z<+gT0U33&Y;pVH$wtrOm)~=(wTdZZbA$T$LWmaWnOl#?sCh&z|qy)Y>SBMPFQ0C6f zWx@;o+*U*2Q-F8Q0IEMpbJDFdL>=d)Bt z)R%rlLC^W|f3RcsC9-;9UTsRSjyJ1=X+e`M3O3IS_d5(y3Rp>z${E2H#azz1_m1Lh zJ!Ie9RYyb9Ji$qG_$uD9XlZ8ecBaD6`6F2(De4+LXkd9M;$YNK@B43wqN=nkaCxA< zKvyu1d?T01BCWf5w)e>#&fTrs-_{?98~y0)koPgPynbYMKEy zG$2?WC3h)JqDA*;PAdDfL`}U4g!K3q!OD`gLC46Oy7#WWYJf@!J(k1T&z4%N_jXko zQK~EbD!7(2MTco&syxR2@IlVdFZ%Z>i(~Lu7_O=REWrrOKh_l8(TYBH`FS7`<@FH) zZ%-e09dX$XJFb^OwwEfxW%&q4c>dBO75saG;^w;XKYZ(neKYPq5}?k7`Q?fSpnlR+ zsZx7Z&S-A~He^Nf;n)#n_PG2@%W*>$G_uqF>M)|+IiSc0W{5(iqx zt$O|Y<}r1>Rw;*BF_3wU{>Vzr~PYo%2zh7+D zZMQk8dHJdPsslsKSj2m`V+S9WWFPhh!T1}`W!O&AY^$>My?CZ}`E!OWxujolXko`6 z>$vvg-v`2Weyg+YL4I$T6SBftbN)80C7W_?oGcWzmf>ouslrQ;s(2L!f8Ce#<$}OL z?HT}zZOyPl#*=yZ?A*-f%&^(#my;1hr8Ev&`|^wQ@qN*Rv$TuAEzl}9IC5t#OwT|0kBUcQ#R(gt%_XBty6wCG<}Ubm}J5~;PIY98W_ z?}I01iLP68mWVpR(`HypnoV#jG%ZJR9q24ZpcQC*O3QsydAJM zR|tG4|2FqD5=*zGQtDdU*bd~nGV4$s7M9SL97FC4IiA@HUMT>9$d5=WAlGzuWYI#n z^RJ4|#+L6BuSIPrvg}9ec(s4?&njoI|9BWbZe?)P$;7OyE@C)b&^0kJfmc;;11G@+ zf{$lp;=i?ttw@CGi)t%04PO^yjw(pngihl}by~=<#5~mw*jkj??jlW5a z4ujA?W#)$0I;r_7mRKo^U>%yLB zlW7^RQK)yaj+yEX08eD^6q~v=)bYZ8r1n7Agc$qmp|K<&pOJqgN)dTvmRre8ijoYA ztfo1(3Qmlp7ko*Js+p?$5KqNF#MB%}ZR ze^*)g5C{H0_^tn&@%lenL~ykykD6{vUO8?yX0F&l+_yjE;!__-VIEJ`1pu%HnJ8>K zbK3WGdaw?@e84X5*;F<>PX+BQx$Ud%?QJtNvoD5*O19VB2HSnF#;|&BtJ`~=m%TMY zJS;Wex8DuKm16WmK|&v>R29e;yGm^3y;u>HN36%%w7!Sb8+GF@d)6c{wmnSXM;q1@ zUd6}9^&YEbmTS<%)4uqQUeq`pC1QAQ-pCo+^YVK({R9#dFYe>m&M~nN*1vT;&Xj>r zz=sfpv=)`WZ+;@aT442WD8!BBLmr6{DxlsNm6=|GPVLweR;hI9yZI4uI?I10`rF?dYV6Z=k~i-zlw=U> ze0K!?t#=%0Bq^Bt(QcQ~ha8K&ptDXHO~7$EnoWe$q04OeFge*#A^Gx0J?y@UXABa> zFM{L$*-8)L?n-sosjt*T$!tLx#OF?t!YRA#Gz_pH1bzP=n|b<3(DAQ{dlsdwtfCOy z@O6T<`Ms}qZ}sh$AJ_GURf{6t(dKoFr@!*9H);{3rKD7KbOUl29(RW;5cY^)D_SVM z!4+ap03Np}6?~_kD%7>s6=7D+d|{Z-o>zZQ<#jw?qj$k4W4o;L$v+eK+<>NuE*}#B zK(%TJd6`9?5*m``itxf2(yKHoDa0=*ghcn1Jjb;rH=u7>tFn{J8H z3Ci?9qGHZGw=|T|KrnLMN_3W=5n#h4ula1b$KV)fd$I_HvUdD=oRqybpiq2 zCT?esC4kQ|7&J%g`ljm>>o_7qyB&4IXhl=DeWrkHh_YyIiPu`J)%z7UJHhC`=b7Ts zVsWnbS+y)NJ6>(yF^TZ;@KjFy;Q!5tAFiYHyEBH&K{U%IXCJN)3(HOyY6@qo7#SIT zp6++C-hQm?Jvfw=lMATjRx$(L&SGiN32w0)Pn!Z#Rin2iqjhw;b=nNW0kxmMnfSWR-{)HBp+V0Ev2C?HOO|f&)69piFRz&%YO4FWxU{?~{_* z+j5P9_rk&k@N6=C|NV&wG~8(QYA2fC+7l2H%iz66fu=E|5sP;6@Yn|VnHZ*AY&Es@ z#!(Fh#1u&#D#AU3OE|`MfCz`?wqH9MD+%#vy)T`vj)~8!2OKSj`l9qt0F9rB6nfA_ z*ax{`2tpAj&&i-#gMQNH75UR8c(&8!cJ^Gwy|M~)_WumAAa0k*dmWA<@$vvE-y5^kQ8jI&fX^Q-DcbP z^Ao&|4w;6{cI*fF{Z9>by!Bmi_%xPo629nahMIg~$7Cn|r2djnl8SjedP@gYm(*)+ zBOPrr>Ada#fXZEijXesJ$s<7MS4yKuNc`jPyD&L$;!hxfbssO zax3+-NvFHs-;vSp@H+iU`+4>##M@Gkvby>)Kp77=(o&6r6HCsN+A(p{>tGF>z~0Iy zoH4i?PUQ|wVA6_9Otg@dT%uxOQCuQorayWqWxy#@`qT?`7B)VTfl&5@Csmy9?XJc{ zSKFUv%TH?&nZkM>k&sKh6B9KOjoFEhNOPGS3)`(*t(%(+V)94ov+~~h%fHZFMB)RE zDzDHqM%=fQ!tYVh?o>5Z@@EMV;&ozT^%Po+hMO+Jh7ON|%xzkW0hMP(NuJ>;Hq)1$ zSf-VtulsM-=gKnc|6UFMS;v4l^UQ>-6)Ev2sSQ@MBJYi7=hoYCIQ$MJSLF8%^e7SM zyF!iJmxiR>?wtyI}`1b~+IA zx)OU+T$i^0QcUA@TydSVk~;jFxtj^Bnx`T_fQ6hra5q6;6k#u)8N2cPcLZj`XTg8x zzc@EAOr^t4JDx>G>i-x(Z_1x{To04O@(Z_o3fQUWdM}|f!YsS*J!OGR)RB5B0pgcaTnORz1j_|FWjqm|$(~ISamX?;e%+*() z2S!Kj<8~^)`PQ9=dl6{TWJVI{3KR z)H6|a-z!w?LFO{2;ewvkIr(YBA4+5*a5wh`Q*V|LL@7Bh<)%!`-W(Sq% z44>Vl&kEiG4~0Pjq15WSN}?kPd02=kKBU2i0KC6`lyTA{Upr3Gh%m?GS z$!1k8EYgg=D)RBY2er`~NXLNBJe8fDnl86r1c7?xydMtzL+Ce%#MOxgq~s2hj&kVo*Dtlvh1} z0cB+Rg#Oyw%34IfM8EAb)rD}tg#lv6VkF<-F4t5%@piMZKn|jzpCVyvgity$Np(|q z6;mcj=rqanaYY@y%TGT@z+NRq2AOR@Y(yt$Xq&#L-UlVuxm3&jrRQXy}lERkuj96(}Di(T<7APqO&A8-j;*f{1A@;I6L8^hLJz0BP`JqiWq#I#gl zCDK@-!KGN{egYXPkN+O*a!MWmp4J>Xq#(^+P1%s#cQQZ_D-Pus5#f{I#f=Zke3097 zn2gDSsD@o)Kz1n={A8YGC zv%<<0(IvEeZ9-35PELG7T3$X4B$c_=0e3R{g<4A|j_5hv?CQPzx`Cl7?dFsnYap;; zKX}G3u1&kvPLB%T;OmB?RTp^b5)gx|*+yaIp6`KWKA>dN<;tnqKbKZZ^?F>aH*=}9 zE=WEQl@%e6*O2x0DJv{qWxS}Ob&{bS3rjA`uh>B_qWz99QWvDUYFawk%UIj+EV|WK ztQ>d*`W;tBIsr~C`-{bHWSl!E=Ekov^gR{lXZ_!&FE=4$(=!}PMoJ0COLuk4oye?O z89xyO>!qySmdWl3IaZ*D;mRBlP&L()dm;49^XUs?UudCv4nv6jp7~~}OY~lwn`r+S zh5XFpZ4r{_SX{EDhEss&S9@A_XhY{}(l;Up1hpX^2Na90Dcj{Idjp*C?m&kN3Uv<- zfZWwfEBkYknR$L|EH;+0cogJQk_^!L?GrYui>$g2tXOjLgE$rFzKGO&eIFR%5NG>G z<~t>nmW*m+5q~M^y|Hjy)DJciZlBQjoY0gJxCF=OiW6C1SJ&T}mSFJoWnyE~cpAp- z-vF?cC_H~EI#XS;=|wISl2uU|wX@?{vAf&Z-(PsJmUy%~7^ZdDV;k4(R_Yr?*os46 zr_%>(FvO3|x_VJTq(V2C5?#H*EsoE&B(L)q7q#|dA1>|RCZW2zz2xOe4di9Qb}B#P z>%H5ir?~(?Tebnjgvl?Beq4))jI7EAG{K%TE-}$oY9hI^j$+W_W)`TUSQ7hA$06mX zQ!KMOid`8lbWYxav1v31xVWKb{M+^l&^4vaRRp zroX1;uVqNQ3nR@K8C6=)l$={5)&7)=iiWg4I%Q~;l|8wQANu=6Y!Lx!J^=NqQK|Vx z#-(I=e@~*Ee-L7$uCV0jov9M|Zodaax zi?n7kw^mWl0qSYwh`pYLrYT zg>tmCh`bHf$IlQhPBZfoQ@}_~m?GUeDlLt3|7On zK=VXruS^DpiCv5u=3fSJB?D-TpY>RpZv+MM`f zg05`>#5yiqN#fP7{fCbeTk!X+?lx%g0gmES{+pZgzeojU<)tQYAtMt2mpxVTPIXrD zLU*PKD#h3?WN#g18^yj=;VgRT@~&0uA7P?h+tZ*8h#EH*H1i-QpaV>J)1=4#?pK{# z^6A!6@H`!et&ReHQX;Ka_a3$H!l(K83UZD2=MJXF@CUfAxuGa?D$vK{^)(oV&U)vy zw1ku1I1rjC@|kajr@%@{71DchsEx5fLwQ_}F04lEUU9f9=%Cjr#k^OaWo_JL7{3sU z&ri704~1A_vv!ZSW^PEsN|_d~R7aqU`qH}QN4=HYu@d?tdf-CS9__#LiS6v{3^?a4 zaX3x)t*~1{{xrqU1W#fyg4|5aOXb0p ztusU=ZeelQR@2S-4JUyM@7F23SeUX=lAcPK+?x;xWAY8l{!-kAM} z%$`lV{{o^z(sFOXuD6jVQ-+}8w2t^%8^M4l>v+zVvL!QWb&E8hgOvW2)Dv|UJ~_&7 zhwS`HF=_`b3LS&L!Ym6ip&KN2c#};U?^CzJK1)k)Cvf|>X+Wf&VJs3!5b$MDDL+;4 z--ZbvvtWATcvSc5%{df`0g7H4Dw1jBK810s>$f1;D}L=p()VY-a#Ze!J3yU@AjGDn z{ZJkAp?$=KNF?HKQV{%ix=DMW`JJ{Y0(MD<_S=jQwB;$qs2=;K&o5EMvts*iE(D$JL{}OD^1?-EHI34G>%Ip$pcXPu#L94OSdi(GER%B zV)}{b4K&KgRQx{jz*@uhtrGGCHuyyMaJ6q(6*28s(men2_(SDXg7-j0ucGNm?W2iZ zp_6B8Bi+#MYIpA?m`Vx==baXf25J0%i)0u1JJGjwEXKIGk4^N&T(xLT&0Z>#x?0P# z^Z-3#_D?T5K#GolhUY1Pty6YUj5KowivN%qR?*#?0aiI4y~KTzh!+(fO% zF83r*X~`b4cvttOz~!W9=#$zW^7WPJM%Nophgls@03CLMB5|=5i=c_0IDSt9zoC#x z(p^lhNEvDn>^%LEZ2Bxa4ep&|aNAk~74aC<1GsO~YRqjmeg;F00#liE23Ou@%up`8 z`d}vE0W-gpb#%3Bzav3K(rRMY&SV2#f3wu*6AUL>clTq);MDHLWFZ+D#OIMGN}9YI zz|U-ws~lq{-=^zL-d<;_On;@~_D3d_WZF_ME5ZiP znZn!SA4ts1MAN^gTPw!fgEjNdUxX2{c#3FB-nST=chaTi*oxv3o6evI4B)N$>{*;o zMp6>{_0IucwE@Ma24zX-;0k(ugOTujMAFrJlxu1^Xv)y16!&FC;%We?1|%mm2pGM> z4nf4!&f4b5i>DSbJbG|6Rl(={ubxSsVlCnZJHxvlPgR8b*@4F>4vZ`t8%wr&mNhKWGB&m~J}8CMSl3|G{ZH^cWKFIwe*o;#;< zc8MHpUds$|-3>l^l6P!a|DPeC~J6?vxKU_|Mbmku%?9Dc&wC zb9ZgN22U>Oy>u-4b2GH@pzVVdvhJWo{hE9EeRy8?=*pa@4v^44pX0kItMj5Jfvb&C z>#2t$rh2i^EjT^m&R(&;a)T_{W71 zHutT|6ieeak`~C1m(KpAe06F(M)|D+!ZAM1k~WCRlP0s|LAJr@g~W6YX=p>>a>v@l zmLR0%@vn2>hbiuKc_@)k^Fp3*4GM*FW*`RT;GrNtG>@Sv3;b(ybu_Q>CzQ1_ewZD% z8UUdV!+%X#iDm81O<4*u8zy$P>N2fDPP&g^_m8cg2}xsTJ;l$br-;E)3>_Yjb49@_ zfgB2%lx)o#G1#l-)fYC-d|KP>hpte}JFY_aP9{vI}Pdk?cqttbu_e;TChD z`j_BHbF~{hhoW(;E^(ePYVIc!8GO}sSC&G3_l9^6L@SBN1i6osO{Z@IcSSadRxk0H zF$02Ku;t_P^-cURc~jRR`$*OFJ(lx&C#)-e`mw^Si_aiqyPO?=>*JQ|suK!byo#AJ zz-7oi$U?LCJhfXyj%gotXw+j^T{btZCRsVE(@HltOPcF4bn7}EEtJ`xNKkfTK_hW* zrKm|Ti@yo^lHXd2p6nHyw$9fW0aLeM0^^cR4^D6J$8A*z(+b#4GD4 zbH@!S4K zWCDFcFxyu18Jt%Z74FyTxweiaCLOs(v2Mt-o+d$f{-D`0lGf3b{c9AdCp*i_S-~dN zG9h6Zl?exMrKay^YN~Rnoh5!R#KJqBJt3E_HG7AaP?yjk-r=IHSuM^0NqsTGTh&8eAIg#RoWA&+#Yc0ZJgQztomzO!X zmK3T!ouA*mc12e4356>cIICbH({7LC*sqr-EQ*IUgzH?L4|(4|%T>@Vj4IP|kgoW? zT5C}C6{?uX>V?^_yrZuVTvFk>E{iKB#Bt;XYDu zfnUr_{|(VB5lWIp<{}eMgF{c2z+X`D%rws=V*4kWqp4n zP)YV1xP7SYPLhXwoo8Ol8;bSC@D?khLU*ZO-biKT}b?RJ=yb1~$3IC}X z8!RUY{-!|HfzCGed$c#U@|MkhMFdaZKT#zCu)jKxYFrV^Y@jU%ly4l z1F*8juo_OjQYZ6a=u@Q*U#s<5w6L9_QSB#HI;6WV5+^Mr(fuXaH5R@MFU$ngoKC4M znV=}7Vcug47>;=S-`9&NPp_JNHkD8OGZO(xG89;*Z_%(vWMnjJM@t4P>5U2Ud2n)A zH|nT31|v}&jqH~k26h$E?=&f4cseYD@(B}|@)}VI^QYlvpTNu8xnX$gpY`1Hii2_@ zqsuc7$SkQa3bt8aCrJFh7Bx`|`}UmwH7fmvXrNdG>OlB?uZdVbh4_fF4!+t42U zp5J3Mi!RQ6N#{dKMT&t+v}_kq87EWo?L9xVjD_D!scjTRwFA*PM=?kjvPM&SF=a3;*@Wb}%@rw$f<-k@*KpYU9Xj!Ryh-Wr`Bk zW5H$RU$`SXElrD_5>NOxr8z6$TQ1~{Q3|(#?;~Vw8F*OseLSyzAe79Q!&@w%;jP<7 zu}%Oof*3~!uTfE7Cz)tV zh`*i64_?KSe%CRUzD5!6<6_Ci{)<{ob!^w`d^yc!_S=B1#cM4v_9{7%bD65DPC0C6_7Coc2KT%Q`xA&;0o86EzJD$u`LAb_#*A2J6SEdSNt`P76W*-nQA$OfY1|wT z`N=3uoazjTO`Wkuq7hLJeCV^&8P|lkq`(OO_uvSDL$B(8;!gc*gZCk_p)y*z>G>%J zHN(@1Q(wiRF<5czjRJ)0$2jw|Y}J2Vd=?@jxE{Q!Wl~m#$H!jEE}_@5DP2Uj zJlU$c#YFBP02KcUNW>7Dy90 zV$ZVoQ%^Va`7rD$2D_4cr}7VIVx>v9oH4!OEBHr{?zKmw8qFy~)h;(^TYz;Z7Y<(* zV~FCcRp+nWD?BoQ*EKsoKj`XcDLyk((bt!Me}BK;ZYe1y<|P|D`>&y)w@gfxzZ$T* zz;*4#I+BM#?oj<{pE&1fVLrDDZ$uB|{0#TGX!XMV$pn0%ygN+!5a^r-YR4_Pkgn>< z>X`MSwnOLH+1aaCuRL3SNA85ZQTiyvpe;X+#cXlY|KkgQBkGWAE$dfug7vTyJX}V} z6Ykm$Lr8*G=ynM%r!9{b49%01@wyh9_kuIaEUwhuk9A}syygipydryBxy!?le%GGN zw&hhNPGvoQxKu^K3@hjygi*9_(bU*nAM0!j**(@Rh_AvFMU=XHay{8TjKj z0jYH@$OSUD=7|3dk5pNhVW$#8SyHkW5PjM)7Z%{^&qS|Mz?qh{C zmR)nF{=JVaJB54#28L2_gsP|E3)7?m2y_xSjY<`YV`qRqTP1o|QEY z4i_3Nq-}TIocFA*O&R8Kw79MIuux}t_gM%KxIxW2@X%curG>+CYId+V(9%*;WI|q$ z)w{ZapL8ETzT@Lt!dLge`nKlR>kzAgV5@r-zv5RXNm8t^7{t_%+IY8^K0bqSs zYz~P(z~w>4RLXih8lJpcxze^zL?~ruMt$O2FV1Jku>*EtdZeD(Fblr#yxk!wtF@`> zNRrC(Dp4VZMfs~=M22BB`0#%$3tgg(-ia^xC~z*NF{(*MWg=&6Oo@SkK|Y%$;KK>3 zY=e*Q$!Z7x!{s#jtP&37Yjq=VbV$z3FhtXN$rJrg43X5&2B-b=@}j-vyO@@ZJL&av z#l-dW($%#=6Eik81`Q{cmo`yuP;V{2(-?5H3`fvvg)(0O`TusV0W#`RhJ z=V#$GGXuEgv#PGgpSo?K-Oa+Fl!g^rOgk#O=vx{BAZTnv_RW)da83 zV$9^{AClA{jDL&X!^7>}C22%HeJsq=fT=1p`Llrz-bcm0menO|_(;N@y z4Gj3B zHf0y4o(GG3e9oYIl^$;@Cr}mb_uOG`NlfS$+KfZGgCBRMTJBy^!A#TbKrnH?pU0Zg zAXX+mAklSftX6Z9l%hrfaqzvXQ~#T@OX2cVBHsoj=$XJ;=_Vv}f~r5*Wsz&*IUG@8 z(ycr2kLxf)*VI3m&g4$C*fiEe{yYn_`B3TyP|W%sJ$Q&mlMSE0{z$|%r+R|??1kfc zH)5+M#Z&2`XM8d1R+T)>07>K`0YfmcfDJ)3w=_u?_-+?>1w6(`3pGxP)E(kU?;l-@ zRsOCxA|vdkyS#Yzg0$LO|Em78-ZARKIM69+l3kMs1Gus@QWS3B;|;BXv|&rLsI2|9wUn+Tigtx%Z?AXkM!0+ppybtOY~rcT#itBoWhp4`t^mxZunr zlM1hXMW((y83#opy|+eDU5_ZWI4LtN(R0w*dD#6Gx&3idE%&B$(9>JlwL+TIXkxv` z9U6;P-nM~uetsSr5fM}%$ARDZI6!hc-}?<)THZ|9B-ecu3ObU{VvUvq&NKjnOr5yU z4Ei$R?c5J`P12lEgyNgmvQJojOEb*++e`-Je9{QMoyL4`T5cPrAXmvh~ z4ay&{K;#~c@`-N?i&*xxi+k=N)d|~}u#Gp-T20CxVflRxh^{_k8Ihy$b#UfFtTy)G z1=s28v2NR82(-lrYn1EnvOlO5DXJJ49J4>Xy;*CNEa6hjx_6{o{mcGv9x>2y9XUHr zg~fsC?!F2!iu(1Fl=i3F7o$mtY z38ey`m1SbkBk-`$;L|kA1G`n>NsJZIaC%Q6PrO%u zeCKv2qm{cpR3Nv1+lM30q%TWs1jsAeiH!}7{58ZPJg@qORiQe`)PzV#s5w#i{N@%_ zC(-MBZ7o|sKma;AdNsWbBmDLDdtr3QW1~5v+*%`H?P}0?{n3cw{E;VCY zkzxiF3yU&}gxh%-ZYs~Dx_&OmUHamG_rLlq;b~SE=&>RoqQp+2Vu04UPWzlyx;40OOtrG@cW2O!1P-v zTl0-#-c5fb&0%ARP!iouVoRNVxc_p=8nab%T$Yn`^VFN+3^>=TG%4T3fwy}55!;Fn z<>W&2tSyA-n!KhhYQR#_;A_oyMji+MdDx~Lii-V_Tb+eKk7erB4{Qr$!LIc0`mD=L zY#P6D7gcVEmRc=tj?Aco%L2-e%7S&XSbLeOg8$mmi~g{m5zdDU&&{V*SvMZU`GcY3 zqUu)#N_fNevM$v(07t~DN)*XEFbDa5vh9rKa4aP2cYT{Z?ginjg9WwH-aoiMNQ=4( zdYs}6&ibzf8QB;X_nV%~oS!Zo8mJvu+`@3C*Uk@goL za4Gx51qPoV#oT9inUhNG4d4GXJiySf3Gg+p)22-@BPBo@@hisH zo;jzo4J!#4nqRdRSMU-+@wew9me4Yz3s?Sg3+c;4ec+b!kRVqzJm4aHnDZwMrnZXv z!@gGd=g}rQ&oDJXh;Zj)B$Zq=D71wL8^7Y|QVMn;D5!fvUtqN;3% zgS=&zU{a92*Ahplgc;^nvX&b2;fqW>B}ijL*MPI%oagF%rsig5j{HUW5`wR0-UJi# zj;S8VJ?xaPEym!2vvr(&Ijq%MUCqMly4SrwU8I|F+ZY{wy5Fby-?*z{AOWN4dw0ET za(m?mk|GUNlQ#|^Et<$3)znvN5Sbe*wtqKhiBIMx=~S=PZ}aJ8jJH^>0rYNrG&&p#A@?vEWvE{RQ952sBl+O!DhTBB(%iV=PaLKzKhm-+9xZqT{2 z(>@%V{hb73u>2$_iIimGts0R@X-v}gS!M8y9k4K|w4eVKE1ZNjs7(UxXE%=-aARzvY zBlI}5{X<{USOpgWgxvv>eM^p`^1}2GPzXQ!`<-r1jdw;;`g~401~>Xb%wI8B;eOhG z<$5>dzPTI(Nf-1>%@JcNXwOZ~lfqF`{T%Vj>~>RG<-^d}==#_aIV}}$0-wDP3OgD$ z8Vk{V^Ys|t-qL6U9p=rp(#>Pg+z(5T!F-3)jqFaon zq6$Zo3$&}h4*Qumv*d5+bN1nElxs~ZQQzmNfge61M}B8S^Yc1KU!ITGaL5lI@k(?ACM8q1RA5W{cEznrmki1c07(EEX+#I z)%6wPSG3Z?6*-78qFt{jtHx(zmK$SE%^W(+?bqrkXy~O8$_40;51Zqgjh0L`x+htj zPbFH50#b-GvOrfU?t0kPppCu{f1UW!)6Fxrz*WK~C}El#t|PG?*MJqu;RnB|LL{s` z`q3sCd;;Rqg3OLl(9r2Xlc&YR!s56X1+yg5*H71f?su zwFupJPrK~Q9NbS#i@iqPBc9c0zZfeDk_uuwZv6pbM+tcvv6cv{WF=11u z5=T&1Pkj3d2?>d=tT;EHn+ww38khYHuc-`v(kIJu?3)I{tSNGY7SJm+cnei{r~O^OE)t70 zd5D)o+*`;a33)*=dwe@>SY| zoY>uMge{4V&ZexV8r5U8p3*gjG~y~$L+N7!6mumRR%xAM%)YcCUeg z-Mz}o!xiyjiuzWp}yth)k8s~Q>P2Z zWijP^v$s%3*tEhQ7M0TxcJyk1%fW#FVP279c^&7lQox7UyF~ZP5u7n&Btq?Z=T$8w za?olJGYMO^hWHApymwRwgW34ZJZ3cOk!GfMovub)PSE@=Wi2gvMFU(B5s^dQ z#G})DCVg+b9S3SQs$hTNZd+-a*Cm zej^rTb@l!nF)85e;^JN78bXL$>rN_$@8elp{r6)8^byh1tM6njCnaL&l-w@0F@F?| z&B&WB|GLe3_Ly*zZEc30Oov?h-PO+n+UH)qBqe|TP1?$q?|5W)m(E|S!8$Q1PVnje z!ppRWmhr%$4#ZJ&?=*iZx=xqs7ESit&9KyZx?t&D432j*!tudsoNwJJm183KsNp-BPH1s@@SUAC zO(7vkLs?s0V!pEGa^H^$;Wgxf+vWVLWI-n4=G|ou7>xbA-WR({VLx2#Nb_k=j%z47 z8AYD~=HYl4()daBqz9zIW;VTzgP*~eKUXcyKhsvnyRjGg5|gaWowVkGNRO7sZ87 z*KnwYAVLc1yxOuBnMN}tLaq0d3TsVO8Yt+%sZ6no{FSiM41CW=ZixgwTtw0zrng6m z>Sj0Car8Lf&Obw^h>-EMwek4aYxxiPgf%Adx_qomi|r6Xjo+O+c_#0|LFZBvsP{+R zZj=gIQ+U;EMh#?tk{;aUDi&G~Vj8Q6k3lUcRq!Yue$A&A{Y=l%kp)yzqDV=38UWv- z?u~zLFJAa}IiBm~3+^IIipq{-g4O$TEQ8MFpq}y2F3RzJZX?U$ojRLq`&SY@x;wkl zYfGN8PZ=_jPUF&G276ChqcbJhF>w0md|#4vTMX*sdc2&1Ppim1<9H*qgdcb`Gl_+2MDChl!48fkGvnW2gKYP{$R~n?tzZ zfZv&x*1IOCyy}PcIqK9xcIk%Qp~u*pxhT3y^bL)CFEmekTgMJwyB_P^36|n6yyKjq zBTdQnE~}tr4`oMhOik2TA}e^^o*nLf98uv5GJrssx*l0@{@|RRZrlQ|D5&;4Tc1$% zm$U@ryx}7DZ7`=oMLz(oZXqHUy|k2`1udB6Zvf&YbVW+M38UMVfaozH=78M2IZIA{65*WNPIQMW{8uRw4iH!0$iv5ZT>FNOifzG9JFJ8=p$9O9rZ z!?)_{>gcFDjJ}b-nx4Kj2vt~~|1F^t&89;OLISfLX8Y&wF}snYJKvgk-1qe4N%fe~ ze4+}s1AGI!UVa8XU^)mT$p0Fn`0$aCsFfNH-7)g2Mg`}OFf7I4$A)F3D<(^pw7U(UKgaCQeg zeb1u%yYRD)=oLPpWC{ibPVQEAXOR1Wi1sS$h<`wA5Z{`+*L_thbC7Tb#&6wv0zVEU z_nEVU$WaUpn!@9dkPtOhRTJ}01Z!7sku`f!4r@!hpVlac#apu^7*{Yv1w)Rt;61MQ zolhIjDuL#EXG6`t_qGZ*f6lh}Vb}8sB8I+{daN6_xE*8=nN)Z8uEEImlj1=Xe^ze2 zkL-y%Hh0#ymD}U=2pC(BH1Y+vhx!*dO*2QU&5no@k|o+#4O+=4vH-3B6lmgfqKk82zGuV?*Hki)(g7p%O?E^7M>FI#rBr6YneuEsFBnAb5Bd z_l}`z&F~uj(XDE2P5Al>k-wQi4bk&Hmrg~`%3`&!jtR<@0`q5Xw{1rMBs#9R>u4Xn z8qsX>icpV#sDRM*to!2UGt+mha51Cow@vgh&4_;J#}nUw-}n73Iw@MJpJhsOcsg+J z=LG%n6vC(<;CCs8fvJ&U0gcm*6SfjBWtQD9oP;1=S}42OVvay zJ~#dAqpMhdPHWfhHrtZ|QKJMoCS}n2-CE-ZO}%8gR}yD%Yw5^;fJ4Q@lj21IsVwe7 zhUtiTLc|?Z&TkYDs123bk4>j3tbm{G_iX);j{4fT(m?*roi58YmFO_5A81Rnn%W6o zB(LuXth=6FrUY!!LlPnzZb0b3fQVfRQNj5TMgJ3no_2#VM))S~)}1ftE}!G9PSsC6_+er$W;Pn}sRyM-1fjb!kQMjZ8f_At}* z*!QTY##T*RTLvd5r)AiBg!jWyWX}czzb84uceXpLZFLQqA^{>^oF<@kOsJiG_p)7D zkGq=2+Fn|Jkq+%A-wA>veKQTxs{#((b*JnuCSJ5qPU4nkm*PFazj2cLAtYiv4msPa z4+LaoJj&{MP0xn=OqzSn9}i1@7q}=hfLi|c3cJ!PkN6V)@EqlV4afi9PqKo4PhKJ0 z`xQ6yZ#Zl)2+o=dBm;X>Cni5G(;^Vt0vUBV`Fu@n#;K2p!Egc9=Q3^yZse0E>1Q&iM zTks;|FK3zr88oMLI6_d7w=f@78CDF=aa&4$GBo zDlk7*Dl(qVqsITZ{P7qv4j?hPT?l}gu+hI5c?S;#7xBz<&6g?hXv;`4Z#b3pD$~f7 z7%!4A;5vqzJgRDHPrH;ZKcrI`$Tl|-z`d8Z%qO-LjNMmuOZuHv@*+(vpD#XsVBG%u zD?XjyD=uzIm8t8n7SK_#lACdm;g-F&u(VXuBwk$kH~R096!xq>JXAi3!jkulxKcYL zZ{AF<`^X~Oi|mauGjsj$ySuJ)c!HceyL6ZYtj4*PuHUDedoxEA?1U3TPCO~P+x2{T_Ff3g7g4yl}iX{n4BKv5`F_n26P7XGHGkO*`=e(z|rMCpFW>7+A0_*%818j$cv!0df{o zkIj#ZD2Hsnvp4GT?DTu&Z6TNtgkK&jfV%=W8-o-pt0XN<7j8cufifqBT1#T^!EYxo*oA# zKcJVr5thpYD?(h?5nHiZ(Ra4_*CXCf&*3;o;X^n2U#Ovu|YC0?;x@mEa5SBR>(OkJ931c<%x#sqR zW7|MhEi^TW9oY*6cgi-yHiTdbd~IS+$1Fl+z`^}Bo3Xv=@t^j~o~cS8Ej6_?mAM;B zYihJnvYnEH1BN0qyinw59Ed>K$aj8{~yzbDn zOA(3zL{{6bF zFOoDTwc?0i{r>00k%0^R@=eG!=m@Z#`h5io3=J>r7`!i_?@;m{9uSl9tzXr(FQXk| z`RTVE1gEfDRw^nekSRpo@|uXjIJ!#Ebk?G@-6PajbQ&Z8=(`K>4g(#(NZMP1=7D&m z(%VOf8NOlpT^vY;;DfNOMMO=P!nfZgy8OhSnjzTxnb^XLPA@*X`<7+Y(VA8fyf2$C z-t}#Gv>CwZiW(dg+L;JazgTH>qp+DT-$-}yMt(^^fY!~}WY7-?>Z1y`C4Z@{b8gU+YzEl$R1@8jh<%EQq0yE=%Plx zMDE;)7$>rUc^`zO?l;tKLjCw&>nC8kz%<-=gPk;s@0*Ro2WLR_pO7b@^>DKFUtx8gu=P&wS&=MfwC}eK-@|CkKeI*OZ)=k$3#!WrtT{u~`Okk?-a^@< z&#nodRGvJxKG{kY1P1(y|#4`H-lhHkH33!EaHjHVSGS(3>#wGOPp#+22@ zG=(l-icC%>Z2$eEARsj`i2U*uK&CJ-5Gg(|XmjU3>jifH)LbiKN-szuX>|)G4W5bk zqOjw$-5>a~N%YH3+H#Feg^R_T$dR*kZli`5enH*3a2SzJ9@pCLL2Fi92=zh~;+)5n z^UUqA{vz)bh)G?jQ?^$mBMD73p_=wSVaVFgZml2Y<)vF<`^yA(BSE&)6O=$wF><{n zMflH>{^?P$tJ2QZ{PE_$OO)G^ojOk(K5SP=U(Bl@FdX>hL7yhHYe#ragb{NNS~hty z`L3vbuSshBSSLR%BN3;&y@_z5!bhsCw!K}{0DwBAZV0mY(F1-vtYw^=Uy7zY@nE4F^Paf zsZ1ALjN_|%iGVbR+RFvY+v8C##PY@iCm89&Z7C~sT-YPx~$&+5}xcKnKA zGZHp&8PFBwG^CtR=r-vjN?4eGxqILBAUX7n&|7rTn5;dgs?n{~6mZ+OeEk5)*jWp+hu1zjJ=FV2WwcyQIz(r#?9X+)`;ZqWL+qQW@z{M?GUDTdcw~}WQK{c# z5#I=a4!F^7Me2948R&MF8l9llHgI9>#X)wgyozuw5p~BwK zuhJWH$hdVny&#iB-i`iNwe-0rV-^7JRTV@ndL51W77$lezWc!^e?zPn>g;A{(OD7Q zXc%M2XiCbrPE3=(Jan@$U*kEut622}3h8j{5AqDr;Xe&3gBf1j+zi%V%(xupa1A7= z{Q4)Bf7Z6s(IL#fJ2b=snqA^a=fhkn1K-CG@Ov3_)@HW2h3OI)Aet7){6U`b`?;wk z(kWbyndM;9tTrm&WepieS;uO#`xkqCbogKJUxG$z^U2p|2!{rm6t*+p<|K~zMWAXV65^cSj!1Tv_HB)KcF!y_?2U$2aZGIbImk|z>xPP0x6n@H%T?f3=f?Fy+}MUZpwV_it@}yr2e2! z9{5@wcsShvD>e5votNqz16^-?lIk3Zi-7^9Rhox&EDPwD9T)q>ZGx98di#?s||4-|OOYt8sn`2s61qh1OrK{9DF%iY{?wt+x~ae{~E` z+3q>`{ybqHnv0{HHE1 zhMx_R&mxF;tY5v8ik$Lhw6xp?@n?~~)s7H<^q(sk)7-yPiUAR5vs+LDrX0x!zWNH? z>G~XL5RXbY$Zw8klo9|O3q=A`NrSQE*dMwL$V*}lz1|lMQXu+3mKxwB7!wmo<& z5KgG+Kl}xSG9^?=@eiG!)2imJ(bA4h>H*_}Ax_?6zA=DgEcI%=%A zE9ccPx7^lB1kuJ~Y0giFdH=AS^r*eJSG4WADP%DWGrPJv21Ha1A!Yp0QV@r$1b@#0 zhI#YzYis0i_tn*vRx7dCaK(&THcdC+UwxN6qZ**ubRb|0j^xnv&(1MahwpX1-UdWK z$a12P-Op-`*)7L>$H>r%6=kg0aq1eG9K{M-Y!P4_v!C8#98f%z7OR|YZBb0;uD9(f zOh%RMo4e_%YnUfGYYbn;I~5NCvwPRGRgW8voD3Y8ogN1nIfOAQ}r&%qPH?Pm1Rb}u2H3o_$U*9df3_!7$In&b<=2P=tTa99}3e@-aH2rM|#5Zcj*^OanD9#Fl(}N#tWilrOTkL>8RB+lyJjwVl`HIHfXh6V~9PrN()B8(>XPBQ1AI8^!iyu~m8ORf_d% zcM8Jy2-rOwZk#{n+6jY=zJ*c)kDmN$hi=aD8Nf{9>;IKW zZ26Z-WCt^e-);{xo^YD>x?D{o5YTZdQ#3zy)$jPJ4pZF!JcqBPEQ|d8k?MIcTrLUX z50l1;-Ni*i=ex@~qmm#!Pf8F_2T0>Fl*T2uZTzZJ<5c_SA{vZkuSPUE$R8lcmlae- zX=;*tm&|TWos}=(pX(oWV=UT@$iBA88BX!0@Ea$9dnlTg4!ht2`Se_Sa2u%BkGFDv ziv3DD)B8m@W9G#9pmNdmsMtODw~`siz4QLAa`zlZVqrV8f9_7vM_wLEtXCl(wSQf5YEcTwkSO@VWqNOi>rDjs!16H!5RQO!;o?GUFG;@7ul}bl>>|=5FanEOja+KDPLb9&v8Z?J*yCkRZG+W0ZWu0(fI4E@`y9N6j#_ zrea(^hexhh8vr_rk&kw>xYe>mT(Z<63h z*U#ypYViJKJm*q1;%nwrncIMP;<}7R%E6zl zK~l~4hwq6ZJXHrG1UQ6f*wdGXbw`5A?UGXnCZYIY=1IAQNlix;VdrvgcHMFTkwMQ$ zY#I>d`1{JK;{VYIHYKt;pYnqJ`FZMpWS`Z3I(p=O(}o;4el2nI1*Ji)qS95=S`l87 ztEcPOs}IKu69BUfOGiQP!5XLU6)D`jtKJmHV9_i zoc=v6qloXkUnLjtWMY4*EcjgN<+*1V`@rO(D3{{Vvh*I^3#tl z@5{h-8^6ST7q0N-05*i&MYOZ4h@5l8b&Jmz0z{{55BR~00=qjKyBD|cBlqZ|)rMGu z*GlK>hiapoco4wz;ICwb^Z7u45;3gRucB%YEbY1Xd6Z+rOZvp87v=x)<8TQBhx6&W z2)%sLud%_1H^|*>Cu6h|pQ-uZgu!(H_;Mr_Q|t2|nQJK{%Xo{yD2^&7+=i8WAFjy8 z&F42r1@D$Z3GUu%P0rCNE@^+O>OdSIX!bDA#veq!*?b2e6Ux`zlaugehPfEbM+pg4 zT67%z+1f%RN@zs&S7NTQwG`AJ31hh1hZc_YsnLEZ;CSNuC+A2KOD;FkTa1ue*XL_vEV&jcrVa-kLmwn zlGSX-%;^bunD&HLG$mh!J~)&dcmIG-@7lj2yo`EJJ&{#=PX99CJ6_*HbDe)Sf)Ly_ zY;z}J?A~uu5itgmYY|o&{ySA(%;nP_muMtXHaZ;&+Cl4y9Y>!PJ1Lk&e7aaa_s8FD zAM;vyhj;_U@i^x{(awsg|CUcJt-DSxuvBlY-^>mim8KekM@brL!IMjTExEzkbrw!N zsDzFeqg*cFAJ-5H_)>}-=7}b|06@_!@qB=!3ao>R)*%D7BIgnI*1EdDjAUK!dt`{q z7(3E>RkTpl%cQ3>O9N?j1cQe=!~R%&+7I;1L8l1AfgihiD=31zp~y>Af#SIfBXJNQ zY`MPXtmFg7c||b`a$<5R3TnY?1QgU86%CdCiHpTrJ41{>?At~~%*52n1|8w)0mu(umS|$) zYUyjw<@RQn>TA@`>CN|3La%x*hw062zsf8)!QR%?@KT{Ad+rOPy-G=VZ5Nr#ATVtT z19KPFe@Wh`P^s(Vl?upw+B$e_N7mY!-iWm~DSwTJ zCK>-th)v?YjFQq1u&{;zT;W>9gF0)H`GVgf%Cl!`;;21eX}%*~y;;vB<`foUt&+bz zTQ)HHHDM<5#WfICIKD#HIuPt6a-vmsjsO}QPK41?Ctd|ZjS~7D@IuqEu{eEQ_#Gld z5Gk%T}yi>u-VI^rbVYNJeZ}Y|h`UmIj=w+H=o&`HUBc9S#g^J1x_lJzTF9EhKr#uB}45tX6mnjraGtvr6RUWzISwZc4+qGJ;c< zi1{1_YvxVo7Z-g-EH80!MYJUfG$1!a829)0q4p#je-8$>KKM0cH0cMu@0jJJp7`y_ z{D$b)Kn7~+0?idh4cpp_SV{zxTM`ifU3T~*#^rThc5`~nTcN1TM)7Vpi7qa~G^)+5 zt+425S{O5AB*p&cXT29ihK7_sZ;srmjj~rbGN8^F1j?pmfd0T;G)dXJQ?i zVpD$*DBM`WQDZkYJ=SBX;+@a6K8SJNkL^#VERM%K?{YcUvJ$gjdpq`QXS@k;d5hur zl9Iz?riyU*2lMVw?7PE1HDY%>&VNItraCX@j+8FHLO4X89=R447JNZO`1jWkRkjU& zrTfm{_p-LGj--Ic*U0ebB3CeIcF1z;rQB|P2z`k4-Mpb!i4-5w9_(nt-p{fM&`It0 zl@?MdhK|c@ZN5&%oN2#Zza<1PPX3FMO)%^n4c)OcWt2n7hQMsNIPD@eIyE8cXjGM z&Uq}Ik+N#YB-wnM2He8b1&?XtOc35HY%mNc2G%qL(PqTl7SW zP7v+r(L#{uL}zrO4@M%)6Fo&6UBVD8qL20-?^@q_|9$)CIeV{l&c5%p_r9-vT^FCi zH^afl#gBvg^`8EmB@fi|m`q5}zE(gh8*YBh?7~xD*sk7ZY;VcuA5$>lc zup6Bu@kPP_XgpC`J~f1f?$)gh!%6lX=B&4*g{lo4Kj7@B?V-jJA7+~OL%mLPnOYR8 z#XSrqV`yu(*7oYf+!0HGOwU(Yk>i-rAEmi&!~Q$mISp#RHxaT@GY8jsvWbAb)!|5u zv?6%yJRegvVS}h}9K=SovOpeP5$}usj}Gq0@~tlzw|R{dRF%XXa~} zZ^-nRk>TN$_`9|0L@q2|%78LSU*GmsKr%{7JV^_NzUF0;J#r|04C>S*&Uf&$PfzIH zJdKmfC<(BJJ>=0=(XbeUhh$Js+0c;}7QiXux!TUtEu`{OG`ze-Yzu8`=SQB&qOO8N z%E8B#*|vs&P_2z8MQz^@ytoK+=)b0$S89SKC-}ZDv7F(E9{?)J{~rCEl-Kp%)Z(MK0r9oE=U2&sCL`|6ykz89u7{wP&Vs6$spZgQz7=-r0Gl)LQ#x&cieGek3B~ zF^$mDs&t|6#zc*R*iDpH^STOQuAkd#$7#H3S>xioo)_)KflT&U=5BU-_2*$ehCuZ9 z4|l4-U*F4b0P4d`0J_qB2|P*n{XiMag^m(*VwRqVs67eBPJ%l^{*O|JbYea}+lw;F zoKV>4t8!g5s*K4M)=fb46k;&W<78A`f~Px|vV``r4gTr%xYhrzHKE@Os}PI4g1a5v zMbC*3qvgUrMW}9|Wtp1_;Rebr3994@3iD=3K;8hyPhY++2aMK*{3;~E{TwMN)Y!Uj zAV1Fw(NBHQu%WK4t23Sm)p1}pvrKCSh#?|fue`?JY#SP9n;l_AGKP-U)pnR|vIw+` zpX2C_u}X@HY*rQ^aqJ)nKavL(C(b{|p@%Co{vu6cT<&nFfy(@1p9~5&45yF60svsO zKfQ~SniZipw#Qr5CUj_l#l+#-jD%{1Gg9q?S6(e*F*lcuhFw-2MDjrqm$=`})ViQ0 zTruwfk^2_mK1i%37kD%X7ZT!^kxxE53l1C(&60<`jE%y`YMz`P24dT2J=Uwf{@HK8 z)hv0sT}5bIo-Dq~39wp9R0T+Z;*`dC0irW1Ul&P=u-LJOI{5TIYJ@CRU72Z+J_M=- zu2VIYe3)r*dz6D{=0-0s+quE@!Gd#TWhHaikI&6rRs0<(1E`wlENiyyC989mP&w}a zFOPli(aUYEu7R*yFLS3yTQ_KDv*EE$sP+G(Pi2^;Wk@cZ(_;e&*B=~vb;#{9D68mM z=^Gwtvxc`G98|HP9C9sf*1Z^5Se2EXI229Q9Dx#x2eJ~MgF#})_ku$lVb)~%fkBxT z>Xb*w^Jvb0@^qF~?zo_DeFHVeJ%cYj>_s`n0HVI z{3=IO!6PgUJbqb^c)z*3^`+B*n=!4D2`+5m$?*=;o*bag6N2t1FPKPt^7}FWxqy1Z zc<(BRCuEC)-ws+-h^Q)aMAe_cZ4fzn45VpahOF6v)E(o?&A1N4^$-tkZ9}ex0@iAm z&n+u~AbR-LbS{FEPQ&2y3i-{&LyLZj57Vyexpu<(Mn)=z%2K2%eZj2+$K+cvbqD{o z0dWQdsYS1RLqPJ)>)t&dHBC?#rp$$k{(l5vgS~Hf=rjg75kJ;81k`zIm{|S~{&-3v z=!~d7{cY)H7j3|wY;hYMLU`nT)~d|qZ2YfRPpZSmj=Fiq>v(FvfZ#14LxbKO0)RFo zDaSO)i#gg^xw)KX(42&B@=aHPC69nW<#@}t-tGLqt~^}a)QR0m0>LA}q`~aGkXA1JHf`9Q z3Tn-lEFbQVI*xRVnd9>XYVDr3+B8hO<_jK?V2&-w_ku)azJ9A0{Ur%{H&k^%_vu$R zPg*bEJ=@mxav%|7ZFV${R=j;V(_p~tKWBcW2aIqfc844mSv#(5E5g&?^WT3^qkew(zNJ zHyfJ*Y_Sbe_lcg(bQ!}-ZG%!O`UOENqMp_S%wjeWM=x7@(x(P9I|xkbS~d?oyT~yY zvqOm=ajKiV$lh+L6Rpzeo~vG`-=4ni1XH znAix4&B0!v>>@=R`CEMPD>E%!6)E%biAAZ+XRZI7j(Q*+VrF}YaV(U#PoE!cpx2`>dm zV2-M&_`K*yA~{+wzLX?$yj+}oGw8qxqH|lumGQ<*Q4+Cxl2XcY1ex>cVd4Y}P`Qhn z7eaem+gE|u=xm}AF}qxSohjx;9gzf|lgyW>d6GKJU;Tzn%%#sv??~1~Qxj=y2@38^ znfYG)9j~AlI@F+~{*zW+1*FHzy8M$UeYk4$rs$Ebh>L&#XPX*-u2Df{#Z9F!`FGN! z?%$0}6guE5-p0YL=65~Te}-)VStu}9q@~0c5ru_Ruql(EA-{FpyQ}|ZrR1PiCkpQ) z@i1>qdS+tvWemE@B_{_~z)o9o|HI;+1m1k`{r#vRgW#(CJvZncvS7h*ooV}8JTxe! z0;8~G2u+Nm{W(0m4SPlP&r~UrtjCI{_L$|)=n!Avug8E+cWd=m^UB@Itxm$>d`AqY z#F1Bz422vY+8efYb}AlNm0ZC~r}6z`At;b%EL1J9aZa#IP5s0emQ7@=?Wv(j0q%pY zvnkt%G@r834ph1jbUZ*2bAMoPuOmug@9RKd;36x`fj6EuVIgvrq{f!G;cBM-vAvRzOxR>JhNWv~? zcCX7UYnoZ_{Z>Yvtc>^*&}@n=BS=BWs#`THQ&dyXHjbCI58YM3EM#5020piq8x2$l z@|mq0=uh;HGW(Go^UY?zx5AX`+p@RV3g4)#e?rTqLM)CDO2+-k=|n73Q&Ysm5CLdn z=Q}V-T+84(T$9*VDyXvduW5*-5NLG8{(GDf*D{n7gMS`^Y;SMJ1&@skP15f@tb$Y6 z;KwO_7>!IFPy!XgAC_$z9Ot?FF5If3SX4wJShS*f*)E=0NA8c`;g=p2{j84Jt}9+c zAX*}spy-)k^!_b4Q4o(_s1&s$F!MzT@psk-K$!cFf4TJ73AJP;|0$IO)W*ukGv&m_ zgtL(qe_WKe@zkr2Rd{RECu&Ucx@agx7y^O5xpE<}=TH(SPcZoEVjynHru3P#JXR@2 zOW|exa6z)Hf8y4zpS<4;-bj{d7MFv@=kKJ6{@`RgNu~&8+AadNKVd4 zbWV+B?>AE0t!{7ooe5Y^3qOr22h?j`(Ds)vxn-S z;;BwAbs#sQnTe~zIS<}