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 04ce040162..b94f42d0c6 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 5e3c29996f..259012f4db 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 c1126464f5..3111545aec 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 8e63a00a1e..93dd601cea 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 e1f0804c0e..6f6df201dc 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 ac2bac7e1b..915bbbf684 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 4fb2c56d77..f41d8ff841 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 c529cc9154..03dd42b031 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 df9d22c5dc..94dfb9688c 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 c1adb74fee..222d451162 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 c0f813635f..9fc052fde2 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 c22bc58c88..7ff2e96049 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 d3aa156ea4..3abf928244 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 8c98daaa87..0cd46b7bc3 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 2a1f9f4347..9674517a4c 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 afad2591b8..8091454024 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 343e54a3bf..4861a53ffc 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 c0ae3196ca..09a0207ec6 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 0607c14632..564e3a1f71 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 eee2874b4c..65d2725086 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 b4b9b07791..35c2ecdc1f 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 c6e22fc1e3..c966d06f64 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 3bf23c5941..4e9fbcc9af 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 1d9a9aecda..c568372c8b 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 c42d495cec..01142a3e2b 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 9c403f0883..d709967530 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 57e45c8bba..c0bfd97ac1 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 880f21bad5..cbd536da93 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 aae0870d8c..337bfa50bb 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 443e642963..2e563bd9a5 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 8fc6fa3599..8ae68ce862 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 eea0358763..d08ce8ec20 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 3f4bc2105d..a91f55d4b6 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 feed242bef..bf72360399 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 f4bc6e4d68..7dc0f45087 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 275790fe5e..59e402548a 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 0c21befe29..579927ec04 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 30c883becb..c5436aa48f 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 15fdb60349..23ca8acbf6 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 4371c68f8f..aff3c11f33 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 a69ee36c7d..fe3937cf67 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 6bbf2553c9..c0c2397518 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 885301fa4d..6389ab94ee 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 c72574495d..0f0e4484cb 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 d037b6fd31..d1edb9cdcf 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 72af3d913a..9acf108130 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 6f73830770..3c500afcdd 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 3111545aec..ca80c8f1d2 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 5b369dc9f4..98db047b88 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 073ad330fa..7c8ac39db1 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 98db047b88..a9dd96241d 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 a9e428953b..90c5cc0f6a 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 4b64a0821e..566f99f724 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 90c5cc0f6a..5d1f5db452 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 a312416ccc..83254f6e0d 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 2647e5a0d3..b9d5b30323 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 f4e163394c..169d82dba3 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 449f49ac89..84702cd670 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 c31f6f92b7..9d67602e5e 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 221863ce3c..05ea07dd01 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 861d436c67..d884eaf3a7 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 7c8ac39db1..6825c07df3 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 bdc93347ff..5e26498a2b 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 2c34229620..29f2331a49 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 fd91142cdf..6004dc43f5 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 80c816e436..4c6b9754bd 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 212fc14096..48e9642339 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 2490eb1429..93d4438d7b 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 d9a3efe959..0a22aa0dd9 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 98ac645196..f2f8a1b8b9 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 b49374cecd..b9fcefbdde 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 b24e995aec..aaf82a90c3 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 776fb186b9..5f95b306c4 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 3e2d037d13..09418b8bb0 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 593c41b742..3591523477 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 4678531947..56f615c77f 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 a7b7cbc622..1e41a1d5d1 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 6eccd808c0..c85f5bc734 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 ef9731bb0b..b40e6fb819 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 f6200a3e7e..c6f3cfb87c 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 ef2eb6cd61..5b4121bedd 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 1248e702d2..57c0f4c939 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 9b12edb4ed..227d2bcf04 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 ab6874276a..447ad6b1c9 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 15786b6751..fa3e8c2385 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 d69ac01012..14b069a6a1 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 3b82b64540..4d0792d789 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 6e43df9378..9900249c34 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 2ccf788893..e3a4ce4667 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 2bb2610f66..cdaf72f6bd 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 ddbd35d0e3..65f4e6f787 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 8c2a470dcd..b09a6ec548 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 11a81284f2..6a38202135 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 b263cd2112..a908af9868 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 3d9515c88b..3e52a40874 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 21833161ad..7790f9ecd8 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 ed5f35d55b..c200ef6f70 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 078159c12d..8695741ed8 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 zcmY*=2|QHa`~OIh>>*2*kc22nc9U$WkYwKp$sS|uSK0Sak+mrMzVB=HtYK_pF!o{W zjCKB(`ux7H|9QP;?%Z?EJRJQkzkh-ND?oPn0~XWJm;%9W_gf}Iy1U${*Yn7bZX7@%}ttS5IjdEwMROQ7R<@yK>Q z-PKA|ps*xia?t;!C%zP#^pE8JF9CB3WYfW5v5oPl?)MY<`oA?h^v`oSUi|Q{v(UG% zbULe_o?wjiHf-np*zblPeyvulZ@A6Psaci#Qe2`;Z&h3QJB?qrVMt z5D>a@aHL+QY&0WC`)Uh7}(D%gwXyS&!>qNLpKBQ8k9z#VE#fN#OJepuG)Q8>hq)%N+3y1t>*X6 zW0bGpnPCRa!iLl}^QBsofAd{1J@4f^2m9&?I8e_>c`FIPTcMqK>vqBuwU$Term=+>Zm;s_zxKu!*f zLRIb}Foo#>4dLN4g0{9M+ClP)_D>rn;g7kueo2-`w_+OAp;J2_k4m;Y%NnGU#k?h z+Ad$xGBk|X#URX14tHvO3fAU0Y$jVE+qvZJG#4RE?v50irbipIB5^X z_BspIpt8&rBbb|Fjl7rfbx-f>D=RD879yU-3eeHqdJchrT@occw0(P3^TBE2i$%LW z*PdaF#Uy?NV_Pu$k}V)W$fwmg02}?4y&-1*L&p{I7I;as*Oc6icicpWA{WgekQ)#s zIhj`*a&iFs%EBfN|K9UHGzC!NKscDvA20MIv@Q*#85}J3XBReXMzK0NI+p9A3~F40 zfBd+KKT=Xs8ZEPqtz3w={xmFR@tYx00-oPw*4f#q-QX>C>v^0{z1NZH?>IqaY5PCv z${a&CUb$!yztxv@Dzh6e<@v$sL`EuGeZMV~}^E22TvZw*hvPYLBWvj8bFJHcl*?gQQ z%nX21+lNX>T-Q=foUJ}tJV5sdVJ;bRVJ}5V$vwSc_{v%TV!e)m>a*Y3!%Ehv%{~N# zntBGZ9?Q8p^P`}GbrdADbIv6Umt~rc2rplrA+&C=QT$@P=a<-|WU!$EJ`}+$HcJW7 zAWq=@92;v*5(HnL3YYTOd*CK1Akg~}h+H2l$ruy)c3K%--pdUw-xRf7lSGwRQo5{9 zAxD;VTTkr0@bnChORyy;#2U1Z%|3bTeI>RK(A4~bd(%#_IS|2e0fMbrmnMLOCcCw% z9YOi{a%4`n;^)x39l`@*is+NVkk!WW;(#ZX8lzBG2Y8xl%Ed5-85t9k_jCYPsg8*W zfkN2EH!zosb<$wMUCc_E_8@2YlHViCo~|~#KhzHn##m=M7dEfR*^Ts|sn^@vj!*^2 za^)}v!R7$~TVXqKOZ<}lpWBg&nUcHz^6{u#?FHN~l)m6g>t`16_kyLX@+g+kfBe*O9s zGg0Ru@={&hSDF=<({;c^`Vi2AioBY{yXURpp>5%h-QBAP512|!@dU|G*03?;y2Zg1 z48i!w>l+#5x`-Vur6lfK(b8ATUxbv>Z;miYpFeY5yQ^brGg&#n284B6yPK@(aY=;7E%)M>uJk3Ox|a2cn{Nmq5#&1kN++}t~k>pzrSy~plPLd}Ry zE8o%$4h~NHZLnlE5J7O=*X^fI8HH8~2&wMo8ejkc{dfF;b1%UIWaKcyAmiePKneP z0M!(#Ekof7fGsdzeLwc7JlfJnV)>54BO|0{K_K1s!u&jm#CpS5NkSe985$Rs5$Y3&D zFG=rN^b=N_v&bR6{JuB-b9j%?be4t+*=$e#SlEFJqDR>IH_e?@+hf6ra$6ekQ*wfk zae@(%&P=40mtT`kp+vVw+V2tDtr3Oa%M+ zHNE}RhM2?_+oKsGl`4|&@#-He03nQXSN!cp3Rh*b3Nase*8rcz$nqy)_We-<5v^s! zB7VJe#RWtZ_XSg)~xbjRcme z+9D~1XlZGKQcia=o~Wp_CBdhb~ z&CMw+JY0woy!j(AW)GU!s27+`gD;+Q(s1euEs7ubiv5&8y+-HSRw;Qp=U-->cZcWo znG!=O4W-i$$zVvQQCn!@;KAA_@nGf;EF1A{cAI3b8N|P{G4Mn8QUtcTsx7x*oo>BN z-yFun{&jb^&eRb>UkYHq{y{tu=e)RLfiE6gY>#BKuRY%C<`C$u5BykB_N=a@q(NQ0 zfDCow6v@W67nipdsH2i7Y62r+AJC{6#+b|>yR3c?sX3B*`7_;cX>UgGZq(x1E~>dT z>4;Oftas$dh)p-Lw3-a^){bZ>a^UW03 zxmo(QC-z?|$g#^oaE=~ZL>p|lG-LMzR!=QsZb#4MGg;NfiEz%X)8Ad_x%W;hytHRO zfxru0Xs_WS2Shqr?@NGAqgiWfYx#l16TN>MTb6t^AkhK4pX0(^K>dR4FoF#_wQ=BC z4z;-TD%|&-M8JBq!CqP=?lG~^^XFuyrlz^K(~!=?w!7{ZdsSDx?SGR9M+=QDOKyGf zqj6R54teHVQ;w>4Q(wC&_pKZhPb zIkX%af?hpyHB$=(!3$Kvuby}L3X02M#$y_%x!w*o#zI&Bta`;|#l4cG2IcGYGH>pV zi^qF)4k0Ai2ItFO0DPLmEA05#6Uec?!I9v0FdyrWbr`#2S9z_Z;QLRN@tKyu2^W6Y z-?`c^?uy9D$h^ln^jN&+KPcnD*p2A(-s#l6t#In>{0j)DI(N;-$j@K^$2&hR9a4GF z{Y_^kFzp$(!%-Xy!{T%FH%w(zg^$_9Kh|n z%=$5D1plz+0-t*s&H_4vV0z6LyR-BjHZ>Np1QfeGP5Q38n8cr0%63-f((-Qz#o=eY zSoQ5SHpU6!whKf|OxsGzSIZ6ec3wFuMY0BAkmN@pPaVLY<$1!d-g^`sWUXzmNG(@e z-vm1w{9k8;W^L2c!OEJk1KHObpbX$c_naM4hkw37f2sp+oJ}a_b`I&;4~}STC7J>+ zNMF!!TAe0t3q#oLjcZrY^PO4?DYUf_-WGBizcp9H7hY43aI*}>Gi5b-!LQ^1|43A55O)P zU<}&!u9XofZzm_+D*Eo^WL|d^Rb;hPhOXq6oFzkTuY?|RPJUZBg1j}^i`@R=B<`e1 z)aCg4D`qhgNWOHuJht_xIX(N{pxtSi17`Os*m+hP=m5-EZPr$=Hn?YPuO%KQ4-eBs$9KnJo zigj+NY$~8rRN(;o$P|6|@)>!!(aunIqlClVIblL$sxvJaQuv2~!9FLE<+cfVE%0yk zhB}thW-5#gWmWU*JyWD+{ajQ=%(AUfF_|mF$55Tu07Gtfed^U?^FL4mNDAG7gVKKJ zNki9$myw!MsBnO361@Bg6H{d66!PPP2UEaK=%CX0ZHK$kG^pu6nQuL{XSNX*8U|;I zqtf(m%H6#)H9u+;YI5Iyh3%|NkO;BrS}_Mh1DE0aHZF#47sDvda(3$3S=+un0}5g7 z(g4F<;B(|Im{WJ?^70{Qh<}D~a;rJc{V+FyqwC@v&@^p3HP@IFXZvPauCU3Tt&vpC zjmu1DDpMRD&c{j-49+XRW~@p#@LG`jX~wfiuyfjah!!Q6__##!8; zna&(Wa5hOfyN?goDv0U@jJXR*ju#u&1-Wq=EX5V_#y9~KAhIr~=jEkbxk)lHEQj4{ zVLN?MyR#+~Y$E#*Nfz57G&%LQX+q1 zR`qV}`_BETkZ``Cz-X&K-quUZ(2q2G&3Oh08lhxiPsLr9ytH_|{r9Ug#4NoxPG!E$ z%23+xBrYxp^YHLcLkgXjUsB`h4Qh8@*53v*s;a6^$1k9O<)5Bq)o&{wfrekPw=t*jl=N&%7^w-Hlfz)c~zM62#1{9m+lTQfO68{U+FkV6G2&IpSW}J^avo0 zii-Mv%yz90KhK$mCM4gVJ!tU!VHQ#-_ip-nCqgBPs}4$qzv0k{ho~Og1NEB#ejg}5 z9tU#DBdyqL)kkj9-XA^HTQFm|H%%;Bcb}4w=okWYd;TspuHlbh*(QJ(daMy9imHWw z`eZ-zEBI~g-Z(LNGNq!DQt(F+_6t2p5?Yd{xT{fLzh(*hLBR$hq4gI*l%JQ+6VD~P zmMk?)JR!c6U6P&s8*c#wQW*xUzlUYrGw-5B_-`bL*k4mme@=49e7=`(6u(kX2w;%* z6wR;O)BV-jIujv*b=Wa#L(k4Std$|o0t#KSTM;Z0Z&?~P4V_m<)#gDPZ~Ic}(o)ft z(cQA)&!sjt8SiQ}CWwKgr2Lb`FJ}{Mk2v_4=qa=@#tJ|hjiwH)PiRusWZrG{JpEv+ zG3DkgVdw?BR2xH&PWHgQhi{qI9V zOZ7)s^uF1p-qywIpYeUCckdsnI`Uxks;7WY;z`A~zKesZir0C^Jk=R0xET(gPO4=9 zZzmrj*CF@p4Zk=(>)n+}so`35|D6y^w|DA{WsZ!CW5r>!2FUAU!94Sh7n6YRW8Z;> z{nXlHDwP!JpSBb?Ts!z$;EX%t254~&zq$K_{RochV^4w1M;m4M5Fo_uXsuv+o3zvOdApX9yuP5ESHv( zYnp_kyqbgA%X2+IjL~&r&=HQb=oAmD!8|k>o(w-hcv~hq)fe{H+L>hJDtVlVgIQvs zr6{fD-fYv%?K_hp)RYwM;H|@IoT^e`UNbuKE_G+82q(|-5m4zhvqtW%tWvKtR<+En z^2+R&Z%cxt_u&rDr&zY;C6tH8bDE)AHys5#>|@zQy!adDtu6{oM!K?)revb6bAI-~ z!-}Wj7_!=AhlmKBB2$00KPBfyx!x=A0J2$YcNaT{2jN|4s|%PfPD4AZtCUk(&|L|$ z)|Rnd7!LqCj*Pm{jYh(9T-6`LV(gb@cw+#8=Ub6Tsult@#*OJkqOcR9UL?QI)9FbE z=QoqKcAtmrlB=Cs2AV{P5|eKG^pWE~*pEfu4Kv%_O%G5j_%k9$7un8v5u$he!J$CwRN~~^RlAwFmx} z%o!GaHz|l51hyY16?@Cd*Y)bsn3JVJ4)hXtP1O(dl7-3A8iltZi@x45j{)4|VhTO_ z^i;;Tz3t?La3XM{8uJC+P-7JX@qvrjUcHs~EGe;KXKFJYD`UJ-vw-!mslz{NVS)vY zSoqIc)1TBVA=3y)?jFFudr(GbePV(*%ym%jEQyn98A?F+U+Wxb8EG;ly8yp z=iox_%k*@Zy=QVInOmT3LxD_?r0w_vlYJ`h)(|=cbo^N!p!9@Q<q^N!oZ1E1zF@e{umAa%d!-10Bq6$)r^^Sm9Aks*UbD zb(c2JFHEhx!MlPvI6kJJBKTz`Gx?_;t+US7tJdq8|Lvts07u(F_dah;3Oc3Q>tbs{Lv?3|p|sf2Yk-3n&z z&1H?u{QPUdss(R1Dh1we8z$Dg#OS|&yzh8ogepl32%zN) zzn%?V=sa7?K#w=%X&1HaZ!O)D>mwO;hQJAovygBCT*Fp@utHgKITvBKt=DTNO+#7g z%H%f%utP1smxGR9FWFUW7+e|oIyH#?{)PvFpo`F(>8gXusQxmuJXVJYB+A(B0~-d> z?6qX+@HVJ_a?qLPr+Od1-)w9=EQ^-$JZ|JWQT*d4%PLF*-FOOY)C-;Rbcpp##uBr- zJ`(*&<2{fnui#;KO>X(lE!qn{MTGYvATXjE5ZPabuBTm`5EpF?19h1d|De2vA`^zj z7nja9g=Vf6cn;=;OaQvNKoLMlYOc!bJ9F<~X#I2WdnEPMxgu97ST5OBGPMrSf7MZ_ z>8!Sw);HQ$4vd_o@rPkp8;VoQ?h(6mm#p3G^jjg6NOe<*YSa zQ%Mr{7qaY~UL8y57g`Ww9*4@i^{5!8EV$Mga&mIY;yiaP!>ifnyiRrz;S$(N*^V^R zTEl`t>p|iA>);Ux83_qV9spwT1Btu>)X_6wBjWugd4!l_bmI&6arH4%?v;Y&!#YZ{ zqt6Ypm3O%(M0b*by;m+?qmdatNso>TO)|%;gmT5iwT6dMPU@YwUE0=jDW?dY?fv4J zsToRkw?z=xuM)516S^2((cjq*u*{ZQgGkrWih8j4oM>u{ek^LJPd45)+<_bS9k_?z zTY-(o`*rir)VvT*t>F32l+~N#q7eE7k2OJB|$jkvmf`WpYv5(|vzci{~8Y!%~{njZ9v=njqZ_iOn) z`lo;%)WX&%Rq4U|pFbNQ#Dhj@IoB3>?(vof(LaDSW0+CA=0A;0Hhi>)lD(Oe#Cv4d zmj47rL@4MiYgLMNO~q<^96k_-RkM_3uqg(HnwAZ%&h4H>T~a&fMy=L9O&h$mj;*Q% z(ydg@L%|7scFwGL5Lvv*{BAWeW=x<^nJwDL62fwgwOL*b;}dFlF$}bPX(I$Rk&D+M z;&VnZ_Mx5&GkjZp1eI@Q*!5}aD1yX|?1w@h?T9~u&@(p5FG2-wp3j#hKd+TrL_eJH zZbO(VxU2%Lt@8x3G=>8%>%z-`)Z04yIR0KebzfD5TQiM(1=BH6O5+Q~#TZ>~>IBmz zvUXUceO|>$!*$7NE>g^!$O=6?6}gj`CFs}c!WVus<~#!Z@)ef}~ZHG%UsYbRcwvtwK--{#lfGQkd{3B%2&|w(@t~`Yxa?Q(s-y&w?p%e8cKr z5{K0hG)4|&aXO^0+zbg>Z)+_-*6Y5MB<|vudyo*{V3p9Gg^`t;(*&In&Dd|?A!qn7 z7gZFg{7Z(l(gd;}06jiSL9Tp@Ex`yjN6CYP>6HnnASvJFho+ICL3?U?1Qj6qh?;in z4tbjvzP^xxN4DZzws_=1OCYJAduRT>Q}EbX?(adcrZmbUXXck3wvp<1yRL#m*LDxP zI0U}<)P66w%8r$*Aez4|S1$1%T|j{YvHT|^PvEVx$9M0aMMgQy(^XTjaSf&Con5M4#0Jj}j*8}V zzZnLbp!E&Z&wt?81HxwzYeif(fem+^M24NPX>H3w8oNYBZs+B2kxlc=*6ohyJq8a( zNx!bEMygV6^{nW2h(}#z!qoSILJKu%3Gm-NxYBJkTyMuiU9=9oUv=$q$vq30a3E$| zL&Ic5P^~|vgBD?v0*ja7_<5a;XT{gzx7MkM zHsm0CYZJtfeDWETJBFX#{=TS*XNi3fb8aR91QDunUdWezboi2{m4o08G4N!s z6+{K$KcB@ih0@=38Qu?V4W&OS$m3@(`!kYShfrJrg}}_n$oTj)+ubwCOdU5_ju+`s z61u8D{uqqE?;U))^k0NTO*j$tiAVi8xl0lgM}@*ZYp6gR}44{mP zH{{!KnydbLvbeSx+zh91oTPnS@d-k(p3Z}v5S>#{eWfLUyagl}{2I!NWN$?~?jU@~ z+V|HcxC6+q2fS$6{9@DDCsJ;YikPbN;G8r@WqUnYnHV08PO<;=<#Q8eSKPhNchkKt zwKSJZ57^o!H<+mj@jfgw^MMR7^^ZP-nhZWt7=1O%-%_xANEnwoNy z&n-%bSB`;`1%sBL^A25gsO5q!_VTcRa_H#k5xzo7YCw1DUT3JLtsOK8OzPWOXNph5 z(b94k3J`qYg3%sHBR(xM;ZLpKHM7M}aKvdus$PYwCI($cd0*$mdX5fN1$R_^5inq) zM)8fmOHwf;{al7}+Lr?jFJf9t!z|}hR1`ZAWfe1MsTd^Z-l;dwR#u9h1;PeL4~@{} zs2}rWTi`h?r`?e+t3+i7=*J~WzXfYCD_T7?Gi2y(^F+yyzl=9KZrX)X$KS$(q z!IE1VuQv=q=~NF!7Umj3=N1;?N8AJ!@tL*6p!A|jO$ckIf^WY*+F!4zzR2}TKQIaL z7;amSfi_OF$F{&vh;}&2$fD zQ`Z{+qXztXL*EG{Ey+an@1&#uW6c7Gni(Ype7 z?)V*x4;}2P$jL>?y12C4HgvAM)E%yJviyk#_k*B?HvL-HA_54wr9}X#gh!4)nge6F zBlx5)EVRasFmkI71=fm*iP!?VR8t(U86tdIo z5Gx0j#VP*QYa9l6E#Be?!S$p?@=B>nGvw^a1T?6mON0%vY!HsD%04r3H=f4sy2~3Z zD~=irQ2YD)E4M|l%ycR##W~{cDNG*R^C4Y~CQeqBp6v}3L~oefXbdlSCG0DpQ-epd5fB}Utv{yxNco%OideBY@e4(kf;n*l4^ z2!c1)EBGt%yBsh)L7l+{`=yQdGE1PWp6f9PEne^$NK?FS(U%p{>o6H|W3sEx;h9J+ zuO{*%Q23T@a*(_rL__3e?kF*Grr1uUz^HgdJdt7L>lnY?$YGqID*8oT5x5p!XdP06 z`hW7?!^DLBbvwL}$y^Z^))IKqo_bLtRx-;Tak%)<=Cb$*HY9@GK;6zRpWQkyGxM?) z**9rivY1o)8&9*w+>_X*28|>vNV+RD$I$}6K~k9?kZGP(mX#`(ytLZRCZ=foI{r*nq&nksy}IFc~h%=llJ5nr#g;fV|_>YGpr{X#R~0~_jrJYtGwW$cRZDUH)fYfo_J3LH@p)6Au4ISSVbdg+^_%v9`5(B z@^PeyqzOradr9fMEA?m4Ig4C9iFJlGT|YQD&?UMBdQjU-(lJQP?v_7;e~p$t__-?%`|mBl zp+iYo@_|b#xa!)=21jIj4ZzBhiH#>LZ!KTL5~*Tv7QuIz2am~Re2GlJ6OE@puRo0F z%vaXw!|Z|_))$5au`?1;k5jM{#LVIgz{Js*rDp6<_E~4Yj^JkK;~We|3-}#uJ*YV_ zFp#RguMKI;>bm->cPfHHjpbyW@KFY~2txGr^FMkd0$v!h0V4XP2`x_B>}+3|`NeQ&KdwrbG^zuN#uNv}$w4)W6s zx$~7g$nXPlt97hF*g=-M!fb+L;J{iq`_hoqwTuW>h1jW+7ap}2xb3BULXFleySIB`BWpv#AXI)SzpJzH z??^D{wyC_LVyK_rMbF(~Ee0pdMH_cBsktM|-ozr?{@fBfv4;>q|D-N~x#Uc?=cEV2 zI(L(urGfui2x_KIz)&N+?p+)(s7~8+1+imf>sR&mB6K=oX53f%i9(%!%D|!V%B5*r zUi%D5fN;&!%iif+h1NE&Kpuf#pgOhgKin^=EdH{bJCSAmSWfQ8V4$_qLq5j9e-sCB z3}7MvNmswLKwy%~)j*L$n*9G4f^=cGb1jRaag$^{$I+nfbI|;Sb38y}8NqR3+2gna zx4*5Of4_fDIo)%)@*f@i`ID5R5|%z=rIE)0f4LRsm1wW26XF~`Y?g-{t?3XzP)g4! zmbd2@I~~s_^!Mwri7tfA?%tGUgV-T6WEzBg3b#}4LRBMV|MdodSK2FoF5nz|H_LGr zF{(-(ccDfRivNni%aCFE#f|I_ng(^g}w^>uR>Yi9>frK zZ|dr>0cQ2X8NmFTQeS)>Bq)&R5CAz!BxyuEln3_zBZ&W{Vf<}GtwwG+`G(2Rjmb~> z6-RZ|)w+utq4Zn(cI3v$s}FOs#lS2wX3@eG8oD<85_{n8=B|&584uTUK9Y6>_S0 zDmps)R$o>o{PY+&FrDj&f~+*8bX=zn4i5f^;s*KZRyDA{|5o6L{zSB4k=WVmG}_sd z$oi0YM2ZtiL734Y>rFaqYN>fwZ)L^`8*~H1%78Eo4c_q(w708=P ze7zYrbCJN>e5u`fw?GXU*bn*R4e-5P{tWE0O1e@#^12Lk^H<aWf!cgw zJ6cMM9N&u9K-_^swfk?`Ki^py?%tHqcQO%z?1a`+J?xH5NTW`pY2j&-nJ#+b( z#kug{%4en@q}LxbRo6Xx`jjen!UH>5^<^DEyU&~PVv<141G}%6*aE070~xApkX^jc zH&AI@v?>2B6XQ>?#)RRMd=HA6&aSSjV4V8NlP8Zr5@()-By9MwgEKNHE{?$&Y_wDF zFVimGZwpWv)*WTW395WcwQv*Sn2dD%Fw(rx80mO{PPjXPdd52}Ml^3i4_r@vp%QT79Ae0srOTaZ?<&LJLOK&0&nTsW~HOv32C;`YiY{o$varUGH)j z>$=F2DCVSa;Hl|oJ<6=oQ|G?h+|C97VUFlFVK=+UN=FBPiV;!!$vdM zoM=(oDW?q0Rq6fVHo-K6FrO7WE%pjaA8)h}EoQBw8c_J7=;*7SxS7CmlEj|;iu`<) z)_eb~SNhAVjU`7(&ZK095!Wc22WDktQk=vq{Cj3bj=^`t#0DG#f{^K9EhF2lTF+H< zBs9Pva?XnKyoRLI(SF+qFbo%Kh^i>>+}%m zEr0{JE$z@pTY?$6iq9q)9_D1~cu&!tm?cPZvpIFSmj?c^zmuKcVA+?v^e2O|+zuJy zw!L728Ob}lb>Cafa%TN!CWo6TrpHe5jg*zi-@bjDE0Ct_Jk0ycpQwF`u>R3Hfzd^; z-sQ<_4<(8$_^LpTlxdHqlWs)?z_=@5SUU>-38lR){5k=|pxT)L0`l3ZK~G7$)>W|K zzrQh+r#7?rAlF}i!JImpZmX>bWvq-qe zwMVdQ&c&#XpJF(#F0DGpT0Vsy%*6yuuD30|jwy3?sRq}}C7*z!yKGKp=1d~b@Sgxm z7(v&P9oUM__2&RLfxMYYMyJfP&89`lJMTH~o|EL>y?1wKW@mQiGdnr1qsXYE_;QOtvxu9UQp`8# z5#^Jslvsh1oJTtu&$xwbh)>L{6&g+Fy&1Ysmx?ygP+8o$`|fdtAsR;}pZuFod1U{C zpFd@wKP5qhKP4fI4bXU0ns)ou-I0*2Zt z-?0o5zPAHeEIIRAO00LUzYWbGxOR<;)+Ca`|6Ttr*5W$ZCg$5woPpoUrUxhMQNKyP zaav2GU#XBEVhaN-8|Y~NSFHLQ*9n9ESAd|&AOb1yX~bnJ7=LMf2gBbtzkR~jYEXrg z6(T>QLS4dAy!RelUl9oU<;}^3FOHI=7zG6dVcyuL>DDUBmOdGe@dGC>K~Xlym%W52 z;UYosDOiep|LrKIPzRP$1C#7?Sm>rDg`A$umR!o_0xmk^k~D%mS5Ua-XTrS^gXAed zZaH;a!AF9B{9<-@V!QFTdTbkmR5sUZqyKQEcsy^AX3VLBQqobC~#|hFH-K zSJhvN?b1?DhxQU&>a>3oEj+p8S|}ju_c;6zfgwkoQLGrB9;4dx`}y+M`^jqy@ZfK1XI#5=HAbVtO*n7`D~K`i5` zL4K!j577TGQ|%fT@|bR?beff9FW}T}jFOA5J5fB!P*%ZA@4aj8o^ zD*5JDeY?-AvxitkOu{!OpdNRQ4a2>1kl3n!Ww-VLnu9g4>_ErX-T(!ubkUyI*VrD_ z{raZ6see;WZf;AwsCA)55A#cH?RYUX7F{nGK*O>1`^tz)CGM?r9Xy1fGM!T9A!8ge z!*9!X^0MdS-o?GG?QbHMA;-Hb34d-pRv2P;&}Mi9a(3_q09m?r{d!1R8kewH$CdW; z1w~iO>Tgr%p<*I3>e-xvx=W`pZl-(-3k$I^6t`+@kg#bR1Og5jwvR$WDf#4NZ~v*9 z5SboZhl^|hsQq#st11q^G^Pd<33=Df?k_W)o{!B)lI9S4b29c^SE_Q$53(VU8xR$R z$1mxK+yJgLa`>(rA?}gP^6qxvEyv3|E{*o1g^wq_c6;(qB}(sZ&`AHedFM{2HVR=o zAr=uEd)-Zzpa1eixhNvGzQ} zdYA&U|L?7Jqg2tvyb+LU<@@Hklem#XpgoKY$e#el+-;SEB%X;1i({^{w$X`yqwD(+XIY%UtzA9C$HzAS4z#y9fgD`BmgYi==w4Ugq=3_nZjbjm!Jyb^imnF5MYGa2+G`^Rua>-p|B27)uLp2i+Q@#G zgtfM~7^u~kR+qQQk1gQ**xa`RjNWK?J(b4(RQ78O0E3=}Tmn4eq?RpID2-|lhE3q zD$jNXuXo?I7`U?jQ7N&X4kS;2whqjtSmZP5@o5mKM6`D9S z$B&pvdRaneGf@tx5eK^C1#-NSQn2S1{>I$Gf>|~89_`xN8U&Kk7nqpHnz3&?Q^)r0 z+c#qlnscosuhgcVnUV0&Ylrn3)>vG)29%SJPj$^JHFp&7T?r2~bvZ=np= zO<*)t4L3QFr(vQ@@p<(OSmm5BM1z7Wdb4d}3O)kf8@+}NQs(IJQA8}gT1}L{G);5t zS*)GwT(4??U>AA%RK~UC^4G}7zJW57@TTX&4^fTT>kvUb0|m*oT)nYT+e@?3?lR3* zoHbz{N#&#pw)D&g)mje-j+aX&zmPLD8M2ut%^fT>OxyeZ;3fMRq<5C~L%Yx3a>ECS zN^+eB2q1eXWZ(SLrmoITVY8LObxc{t_RGEulV@zA4!8;2q-p)?jk-MSCCXUC{(O(c zul4bzhKUnZ96q}f0YNe_dMIhnfa8K%u;M2MmO)3SR_}$jxvC7+?b+x%N6o)u7==xU z6R*?}g(4vkz-L!Y>Y@451vq5><8Tg9pQ0*||FKuxcNtr>K5ngbdCIQn+CxnzA~M)p zIEC%~ce5E;xu-3qRVKuev!bC>^Ry4@q*mDEIjv)%m%G1q<^7TDb~@c(t0NUbK0&^o zYnsk6Jd2v!+j504N;qdZ?B@V)9oZsS=}SQU&@eO%2Nw+Pjdqeg2RZUnY3pY#o^YW2 zY}7TcnqzC?X)?jqkCFxgZ@7LfyLPv}t}gFJ4bH-)e!`v2ncQ_T$RM1v6O@s&e_v6z z6&5!fCYdMD9Fyos6{-iX-v6m^W5b~AH=gCAF@Fl}xN8w9YF~Y2b6*E*4d~|z z+#m!kT}-UcH&a_&I0%Zc5Lup>7V7F3eqLD!-RrZNuF(TOV+Sc@mN_D?$!FO2_xCZ_ zGe&8TJw04gUW&|R9)&&Cq1ZE_Z<~i__o7GGhP>@MJ#@#;>{h6q01<0RuOp#Ll$1#) z`~7yHk}G+5NSy4W0)5U-IKc%KU9+o>=q z+#&pKF|-z)K)cBuF0NPhHb$5qs&mhvyn8)GGQHS&?7rzMyL?@+-l3-q$t=-i4Q}VQ zvXc#WpqwwAo&x=P^&cg_;Ao+FI3tjsC= z8&ehb9P22Q@yZpL%P;f4Vs&(;v;kPj(smrVN_l|Xk6L(B%LGlPvyWtkI#-|(SOvFoW8+Rg`eI| zDY`@Z07;(b@}6j8*oU$ziQcPT-(cVg$RQytzRJ-gO$ z7B?qC$Owoejc24QmyOTKc|Wy4?ZZzDl$neqe1T)jST$Uo%4per z!JqZ*m1Wo@&?|gtW%bL}ht!HMNi>Hwfk3M4i7P->rEW32wJ1u+EI%`luFT?7KXcID zt#J1NZ-wcRz?ix0Q`J6a4EL>DH#j*PL++2O;b&MGbK0_X_>X#4L}I71)A?8w3ma=y*IJ4k3fgEgNYIJ&VAdcU326O*_=t1=Y?z2ec}NQO4%v_L*DuF7;4Lq|-^~@rEvyg#oP3i{n7qnvwMDmq63YnNvH+ABO{!7X(w3uEv{t3ngmtTuYao*ea-+p=ha zGV$uSHLwrnBFA${u=Sehk(W#kV10ut!F?%4$A9bH*gd<->m>!L8S3Ml@&ThR{P1Dh zeGlS3`;~pDyoN@^5$5=EhrubI=EziT)l1z(#3L%~T8}VJT<*fFHiQ24MQK3{apexw z!0dN~kVS8XoUw80(Mf@!#Bu<^1@O?wouz#Mwpe7eAe{%)DP{;Pho4^ba7}fT0PhX| zTYeBo;sL>b<-rAj0H2kY?EMPnnnZ6lbdPToQ@i}~17GQ|awEQc(f`=*Kbf~f?$8tn z$pQ8}>RB2wy4Biv^f3Hi@8yoLaCWyb$!1yuU_||w$O}PFOLCq~GO&5XR3Q-vAi!c{ zx~56j8f58V^r-3G>6#8oSPaXg@1ig0{Wk4kfilgl{jC54Zgc$Q#0c}R+1gRe;`JjM zcBd)Pt9bFYQG-AQEX6Sd6wO74s~$OBZ-y_=a0G#k7#|1?ufHgD_zeTDfbWiJB@UC| zFKAUg>H|=o0^UbKn#C!ygMDr|usMO{_hvqWBLQ|bV z76Paja049ox)xa&fp1Q@MTDn=PpkM7sd{}Q{z;Eo{PblDHG2A>`&nM9e40{4yustn7CJ*GxANGs8C55%v;ji~}K_Di4zfOj!_Qd6dSOL{cMmACVKk(VF=Ekn8u+LR<4yHR( zl=xmS#xW_Jcs@1w{?+)gw(6zu;O)by0NFasZKY=?q5L0K%KsQ3#;i>bYe7AicYcEU zvo5}UH+O8$TEhSq4id$=hZKfNaVZp zBrdFrVDL7WMsEoxxUfq*A(KD$R9>1b>PB?Ly}*pIIwnWL%>L6X#-I)dn=>sxIc0Wg zUMSBAo?Hr)Jxz66L-2e#Dh-FasV~Iq7UbqW`|BBmZbv zo_%^%yr;+dg|_x>h*4)GH`kFj!flN^g_n2e)Fb(RP*$$%-BoWM!rX0z}t zkB*ydeWd3z&)<8V)7!&UjK48`kTh50qGh$|ix*XeH00`)*f7{|Na?=+@PY7Ik_0^q z)aU(lZ9z+0sG-sN&@WzI-iAg$`fJz`-E=UXo)su2>azWI~yp`ET zwP|pHi@L3LHMLC9x;fx-d8OEJuZzLOLL1cKI5svmUyrL`gnss%+~z#EyujWL;OvEq zOG;vJ&GS{VKrY+ROBK{7$*qK2anGVK0_rb{oL$GvN*aoMl(v zSp^FF^?DPY4Nkw!`X#A=^E1GAf$!2lJ&p!bk=Xu>vV3B`pHmhxyN{G@7)TF{h}dRh zmG)pPs6T%kwUVv@ihfZo$f(4k=c?0+z;$qbU&$YV9SFN_nY?!F)T;jZkdNu@;l?kS z(UHeGNur|k?*XW!Kjyv{O}^?!3cA~s0{%0F#(rOgjO9jG{5kvgF{i)FeR9ojy zaYWMHZ5MBjQ*))*gZhfZ;@c4qojbz!_Vj)G09Od){B+BZIpxTU?9ZUR##Nh~ovjUi zx6QI8Oqij+C%TqldixV*+`4NUtbW=i$jkc(cP{(pz-^_svvM&qM+jt&)lehLEdSl& zIES={?gZ-`aUeRI5H|G^S><)?m~Md@c~oeqqd9obAG)v_H!J?3`LH^k84?O*e+!h` zweBo+rB_qvzIyex@{WJpoTrtQ)hN8k9FkJSKiDxDJ7z{CH6<00nV@WD*JV?fonI2M z?@{f}+$5dv7&hC!QF9x#%ZQ_1bNdkc=OGq=tIP8ZR3%4uozqytZ)=yqlPk1U10Zzn zL$_Z_e0sn%jO#lWynpiCL1xRa7-);ed%_VCZiR$6Jr`n-SD}L**EzO&a`3iAYzhq# zvQ*D^us(+yryxXe65ZdTSoY7Iw-P`5`?FV8A1vRVQC;rt6gA^zuY8=^*i*loR_w?T z#!)aVMs`JJF=h@y<*_MHs!q>YMKxDcL73!upkSbO`R>7%zf>&G5%7lDz_K4Ies1yT zK3Io;ByqSwv61)B)jCx>iaCAC8G-~-j7ip;H*T12Spn%Xb|S4eLSifr_rD8)V#&dxh%n!&!3r^OyznkdgRT> zC@sSa&sM7G-j)K0{Mtx`rzxu2Q+u*EADEp_)5oP*7u-_Lb9l;8CW^524hm|j0t09t z>Evzn4zsm#qDg+FZ`Dmj!WrR*n@!nO@@Ggp%S5NT@1r$##+kV)o}h%RStSBH4U3AUepA^=;iLcYY8@*561=#!pYKogrI#r@RFNH5MC0VbR_T;^IlhlZ$ z>lqO4iW7vcd$_diDDQmMdVW6g<*}DRU$0u&PYrh|wRcmFVb#e=M2*;N9>Dq@aI2t5 zKoOWj+>%GF4Q5WvqmvFI;T6~Fh{UL7MG)@(jD$h!-^uEQj5fsHt+NxnB+3lbwY%cbq?vz83UP7J)hHHnR&r?*~68|A>~I2!|g-#2-3>U027VJ3I&URicQ)x3n+5laDzCcF-+u`^e*!a-873$Y zNQILcJ}+IVDDc>+upC*~Qws*VT+V+82g!Or2+bCmPuT2S6Bn2`rgP5!WnBzyg#X$b z(YH6AYx)>AdiW0|gTRAn4^*BuE^(944f4pe-)7R;+*GFmoqgE)i%hX(rAP4Iz2=8( zpIwD~HN`F0qxV_vuER&-c}*D=F}BVlpVW@UWK0>ABCMAQ)XC0nf5eagebPKiXJ>x5 z!$VK7WaTt-a3p^_V1MR8072&&3O;)kM=EZA?47PQ&>HYllwX1}7#arg_$Fg(z7|Wg@})`-MvQ z3h))k(9lM}ez1QOKxjBs_Nw-}cHi@&r9Z0euM9reexzK2SANHZ_k3;Jo@5TtH-D=h zrt$8CM2Qj%nrS*Y+LYBfEiW=lx?VS)u5njekB8bP7dcr*L?)2n>&a;BBvDQhhQ36(U&VNM8t?R5u4%m4^xYHj#kx+99xp}HsBL0$m zDhlOtPUsn>Q>GjKv~dohDKY1Vvgzs}!jfRLLhHSz-F|2VCft|0{H-jR)SWv8x8(f$ zwYj2$@k`N>-PX06l~fHKx%-K~J1~ia{d1J``x3Tl*D!8UO)I-hGASZ`l~HA=Ep@0V zdwBazF~H8NO$ep*q#ij#25C`a6{O~nxi^11i~-cMm|Xi6{=*RP^x#uc#bi#Yow)kC zCZEF*#yH|+==be#)Kw{T6$xKyFa0ypdZl3{0tkciy3P1xM5HLQ7K<62B93XFi%|}hj|4} zqF^Vs^F2;sklY# zfL-yH{sDBvd*R&g=%w*gb-Vpw%~`MV?>fIUw|3c5AN7ve!w%@>E5S@*SlErLBA;*0 z+#~m2T=-d^vB&HjPV-=^(fjc15|?nZ5aMk1JMbZ5Xhl!M=@yxT!_53*ClCek-9@;T zovp~(+VZO>K71d=W3SNXZ&_r2NW3H}>F(XzhT3Na9la*By_EIPWll7UeU0&?`%01= zJN?4GM+__~e|xHuLBZmQii*`44TuZA51v#f)sqvW8NW;}ex>7~pw8ft{>D?DwjG~8 zaZFzR`aoX+>sXwcdia9}*kx|^k)p66i6o;@>KVz?=ozT`nZLbpn5SPP>TYd{q1G+t z0Wo^U!H_kA+RYT&|Bk=#%xgBW9xAQLy>)Z8WcPg(l5o^k>!TVIf(1pPgBAzKToUt< zLHMmerF0V9$1M!P!`ySnKl%0DYeX^}D82HQuB$7AQp=RI0ANTZBT%SmWJ*3uPi|@< z1rBq5lX&<6_9Q2#8OgBsN5b$8vdrsrM*DpFV20s?H7j0?7bYwo>10-KZMUldU4`q* z%7-m=TrvXGaR<*8*N+n%tZ*-#*Z#E9S|*SoSveRoGc0%to~zct3g*hGt=*-wn_Z_C z5DtPtlQ#e`sYYuj^BDcwM5MKTF}o(JGG|TNC`Swa2ohE$U4L! z8+LT$_A(j>bz0c)4&HAMPuI+p{0Hz7kVuTm!b@#~JuE5<09TwdVmh_uhAT`+_(XlymQyPk98tQ%immAg?rqH@cE zQKH#lYC#{B)PN>E06Lo_#ut)Ca6ti8i6t@$3VD(a^Zvu!S7;+l8k0uUFU`C^AR8)H zHBbzcsPfyCm?ik0R`C2Yq$P;YPhG!ic8|sPciq9Ics}e2vl4_{2OV}3asnvH1`dw+ z^S(Hz+xM-fd+KnNQTliBr8_4+)@9-8EHFQ{SYqOQPmqN@_BsxRnZd1 z3L!?+eX=-h{LPeS-C(^W!;D&iV$DN}8?ZH2br{D5Tusw$!5?UY9f3OqllsOoHFabC zs5{I2umzex-2i+kWKsvKnk(=ge2L2pA@Xlrjn@TWll7TgzdCL{oUL_g_yj}}&f0&` zB^b~Ui;RrS6=-x3sC)C}*RBH%*my|TOD1Jl^deY=S0`H9D(e6LDBVS{;0M9Kfck<= zuFHQh-QR{92rwN1@c+iK^76kC!2vq-5c6wE&`F%g7Z zBqUt)tZ`TrRu0#zk_6e3PF>jRo08HT-pP@zgj|2Mzcb zmgAF%^US?MN>a?V-Dw}JE$2*b{>Sda_9|0hyMAGY6~r~7^|Hv@^tlWhw1;V-j;ugMy^sJn zN05pcA4$9VGnYznf24Q%O6c1$qk`D|GuKx?^{mx>?O`j@i|}u1%I#HZYspQ zE4IvCEpIZgr$9ECZE2=*3neoYwqxJ2j7%AlP<}uF746CVtxkeV-F-g;qI z{lvWkz^m48HHOrztd26n!KXw=ms!Mk4SCs2BiYrbaw2XjgC6Uavn{z`v%_q6C@CV` zei`-|NGWL>1-|!|an?|^zZZcrZ^+br^DMFf&$Lh@d0(a6i@(eX_dj^)a^Ib;5s93B zSHsQ39{%;=ws3a>^f@Sfht{Py)3IW6CC~PXw;X>?Ttw@DC9SXbU2d`W^|`ht2kyH0 z)ZuUO)lX0pT3u>kZwSwI#{zYWa`Xd$QH}G^(P4gh-ECQx+~ky?#G5=k%J=k&Tkr^` z2-F-M?|R+RHyX3!<5you+VYQkdjIGxN>~1pl*GSSkll_HcX?=c$p=onkP5o4xlV4I z3;HU0kb2{0QeopJVy$M9XJ3UHhm4TFI32B>4dcSjpiY95%uRs-3!pe!fR2cpG2Zec z!gchXb0b$|9DZ?ay80v5^WVGf@Vfucn(4J9xbzu!!vH?CKYzh`ep7Y-vH4v z+vrDY^>8{eR3@d!yzBbj))dPCDOP(^{?$x=n^H<2Z$XwX5(VE&4g`HAMR!FKu@kR= ze2jr&1Ny)_h@J^xe?F_!4Qg!TcT*NMtRX)rU5rQV`(rY;i8o)xWogAHO05Q2X{9P! z(-c3ofY)5-=az?MK?f(VOqBvF?!w`3S#n`sYvv1&VmMS(dJO%=BqjBU3sfpRyHZa` z^p_}eTo4sCJsj!l9XFt4_1V|x>4VqT-U$v9AhZ&Fsyl%zC%0UhbeK;rGIeN{L>sLdgnyNQ(uyM^xm8W( zJr(uy2Rp4(iw``}Onl%j5r3Nf)+PoYscZNo`1r+(tE4cm;5$%C@X?p(X#ZV07C>#> zF+EmfHJnxa!w-IFKrO}hPx>DW0fWX$vk|pR71LC~623?#&{+(?Sdg7puT676r@RPy ziR-PA`C81{`YOstc5V1oDWVbmv+r$mz_9io+PVbcIxVPz*%5Y~ui&dhfj~jsPRI!6 zZ2Qzp<6s~88_&Gi5h}p+AJ7`0++IlGz=Q*WH&V%&8R`ElM%=LgMt+1)O@I3IY2cr8 z;aJ!^0#H=XP*QQb!0R!h*4EZ1`iNKqw8FKbDTJ%O!H27N^P79EQxRe~IET?}Yg_{` zMfPe%qY-_`$5Em$cUahX5^*zhrI{mZhitkaC+E`%)qzoam{^$A@Tab7(Ic(Lu7`-l z*aXfw1^R~PDKZ8Cq@Nk&xtmrhjz!LGY7W7Kwbvp?$6~xU$IHf>4)M!|M0=c52Mbp< z?2*{ek+?Ngg+Dq$CTHM!T{yUS^o!Re%1>Vz*e5KWyQg2?&5J#;ZVv>in;c5o{+;=q zkW1}oz+Lg<2*$v*0qyS%D!7T>G!fV9iaLNQKtzhYXm2}^Nbo*iA9tMn&c8#ZB&6mwnmU|?X7_hDZ@_2L0{8BR$=RQco^ z_?^7<$*Ph++jwOdYkOV#CV~J$Bv?nx?dgIyk@hfl4Hsgnez(N#qV!Ns006gxgf^|= zGxYMT4nCUu^~5Q5Z1)>yHpB;vd$j4>*JfnLYJU@tqlz)_*mz*!zkr8*c6G-VgLZYg zWen;vl(54dVi7y-4)KwEgB+*$62~1qOtt;(uMQ=0y+vy!%t?a}ZZ;e83^IigH56F( zX?rAlJ=EUxqXLqi0j`X{BxlKT#{y%U_GTNVQ2QYPJK;sO**8NzeM$(uDcLkQ_(#Yb z=R;MCqJ>!Ya?{A9c!9=X^!xnm$#XElYNWV^jO#=)tFrRp6>TubO7ZMaceR?B44n#y z*>1jCN?~y9kw+#pO8(kQpHTi3J6*w-1eb)XaV^C%?7egVZhcBZ%B?tvPhG7hYg&qw zMhx($BJzKwT^)z#7gMr9s$FS-sbXxczMN~#(Vwn>-{8@%sGYv}FUskS1d?jROiwaT z;$-k)F!-_3(`jDWEyMc#e4Zk3UEp;Ghl}a8L)r4$vxA8yew@7TI6B;^oxI|dhJdTW zT}syQ)B`xM@$oJn1es6>tON6Bn19P&Omk`4Z-xQlKVSwNeFSMY z_;dMmf%A{BS)AtsQ-x+wWE&ec@~}^1qTMO7hG1smAg!V1?n)m6-WY=^i_DOYtBnTk>k7C9lgER?;d6q7XI_vc|b92wP6}OGq}^<)N+-nP7t>J zVMjDHiwLhg0h*G{HIu+5Y3CoN~1`e(6`R|rI~ptC*1XpfB^NR zzfcY-lNr&YzOAW*8hf4TrLNWv+M7a-E#&@jV$@eAn%r;;9awPosAf!~ktp*c^&kC~2p0k@HOaJ#&w14_ciGz(Zw`|UzlkEdY5LH8zGa|A z)G7zWtpmS2xgg)mtEq-X%D>CMZg0Rs`oXICg$3JTlB^QD%zO&kh^H=F`0Q2b>&=JJ z(bs4x(0^P*iO_gw@w<-)HHP7S@#8_wBzd5X5Sd9g(crJwOB z4L?Cubx|aj+syPtU(jO#($gjgxG#63EK|Hk4pIP|r0Zr=?_d&IVjVsoU)uhKBeb;_ z<$EMBHGukt`sdRbgn8!q2I1?2^rGuJjLE&#N!8$a&)qR$e~Uwe(_g5OX5r=(Xc99> zXd$u=9|zf}MryNwN=6r)^q#Ivx&MxgFlI7%{N|GlD*a^F{Qsnh&rt%v>YO(l~rI>^SzG~++!tdL>%)^2$zyHmP z;0n=`1|$KhHICPxL2d~kH`}FyKx#1qp`QPU4qMtf@b~{KX?g^_u>?CccEpwYFZL_R zAA3i@tUi=}{)8U#9sB~X7ve87=)TtLa{gCEH=9?Wx(0-JVh(V3{!E|cds1s{oDf#= z&t2r7TyzB}C~$(AX{|`$>}u5~z+6wL_Mz+hCsk`)d2^LaPFcm^U4IcrRaF(C@6LiH zg#EGnUlPFYp=a9Ku|-D(l=sk;VmBFG<&N^B!e$Lj@X0w5BvS0*_}IiniLj9RH>(7X zHG`fI{SU{+CF&5;#nq}1vIqwKFTv$vg#R0KrnPE-#0BUO-nnQA{6Dq?BLz10VC0-@ zuV^I&fcbkSUQh*sU;)O4DAUE26)43x%x#W@_Jpwt32qJX8~dKXS8h3uo38j+`zo@) zu%x}~_wW7!!}`KGDc~=Yv=MB)G_y`T(>#tm)0zBKoqc@_vbf{EkEgZzM7kCJJ=t%2 z!73tBsy7Emz63w*QwWAykA26*>e3c9-+fB z1(h$)?q}ualR~6UR@3JPlsV`j{}>o-2EncPG6Q=W%lNxIA1UZNVLXm#*hu=Fac6;H z5+(-YT~<@m3@|s&7n+(0{XllI|903P z)**t(952#A-W1=4Tsf^_L;lEQ z=MY2$kc4wBLWtT3G2}x^#X@|k^1BLXKchfg3=qRvIl%&vImO6#$BTCDSc~Ssm^Qkq zz*O*o%;zZ$qY#@S_RXbjx4-cxys|ye94ANtc>oufFOiW~$>+7)_6C#{<>Uw@T(>4S z_>VC@3iMNcYsi*%O4!AtaVeclsW_4~aKl@hk<}C?b1RA^oG<>`!HGGN)u@;`k5xBtRaZ;CNJ0Wvv|^Se<^G|Ok+kx1?ft@s4)es*ENATak9Mx^ zdwM=?qdiabT(9d)YcL&8be|=CML^HM&?Gpx*G?x7qv+e0B`Zpy%paf29JgpdxnIqX z6pF{kNA;>U`~-lQ+45Y6o@4~SHLKWJ&c*Zl)+6^8nrUQh9FtGBrVvE+f_!`>YKM|W zKDC!GU%ngg_b)G8T=zpwdwprBVbrlOf4>ZdkKVm&lh?(R^>;VMN-n$abz2wIj%>Ie ze;o`@iTL{f?}YEHeuGl#Ks{kH%K;0Pz^zQUXP1YWcVw=iV(s8hH9ApI(be%XKC0%1 zqwNJ_M$&4R&5-zb=4T0FJ@h!Dkblj6vR#~xVDn(Q)QS#bG+Jo9I#$91Dj$D-zPQM`d58MHG^sBJ-F%bmHcydm+8!1Z z9&UdyQe>*^yfI1(S`TqE6HEWtnm}K)&wMZsRn<)Didj^dvr9E_u0`+r6D!E!LqJ5eU~f_{wSCOMrkyMNwTLU(V>m{{hI? 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 c39a74b7c3..214044a88e 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 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