From 8c596e5c536455d1c26ef4cb8dad564818bd1858 Mon Sep 17 00:00:00 2001 From: Tastyfish Date: Fri, 2 Dec 2011 17:28:24 -0500 Subject: [PATCH] added sleeping on logout, willful sleeping, custom event message, slots --- baystation12.dme | 1 + code/defines/global.dm | 2 + code/defines/mob/mob.dm | 1 + code/game/mecha/equipment/weapons/weapons.dm | 3 +- code/modules/admin/admin_verbs.dm | 3 +- code/modules/admin/verbs/custom_event.dm | 35 ++++++++++++++++++ code/modules/chemical/Chemistry-Reagents.dm | 33 +++++++++++------ .../carbon/alien/humanoid/caste/hunter.dm | 9 ++++- .../carbon/alien/humanoid/caste/sentinel.dm | 9 ++++- .../living/carbon/alien/humanoid/humanoid.dm | 3 +- .../mob/living/carbon/alien/humanoid/life.dm | 9 ++++- .../mob/living/carbon/alien/humanoid/queen.dm | 9 ++++- .../mob/living/carbon/alien/larva/larva.dm | 3 +- .../mob/living/carbon/alien/larva/life.dm | 9 ++++- code/modules/mob/living/carbon/brain/life.dm | 6 ++- code/modules/mob/living/carbon/carbon.dm | 20 +++++++++- code/modules/mob/living/carbon/human/life.dm | 9 ++++- code/modules/mob/living/carbon/monkey/life.dm | 6 ++- code/modules/mob/living/silicon/robot/life.dm | 9 ++++- code/modules/mob/mob.dm | 6 +++ code/modules/mob/new_player/preferences.dm | 10 +++-- code/modules/mob/new_player/savefile.dm | 2 +- code/modules/mob/screen.dm | 7 +++- icons/mob/screen1_old.dmi | Bin 121273 -> 121442 bytes 24 files changed, 165 insertions(+), 39 deletions(-) create mode 100644 code/modules/admin/verbs/custom_event.dm diff --git a/baystation12.dme b/baystation12.dme index 943c966012c..38a32a1a4cd 100644 --- a/baystation12.dme +++ b/baystation12.dme @@ -699,6 +699,7 @@ #include "code\modules\admin\verbs\adminsay.dm" #include "code\modules\admin\verbs\atmosdebug.dm" #include "code\modules\admin\verbs\BrokenInhands.dm" +#include "code\modules\admin\verbs\custom_event.dm" #include "code\modules\admin\verbs\deadsay.dm" #include "code\modules\admin\verbs\debug.dm" #include "code\modules\admin\verbs\diagnostics.dm" diff --git a/code/defines/global.dm b/code/defines/global.dm index ac16bb8d921..d3a29ab23e8 100644 --- a/code/defines/global.dm +++ b/code/defines/global.dm @@ -139,6 +139,8 @@ var no_auth_motd = null forceblob = 0 + custom_event_msg = null + //airlockWireColorToIndex takes a number representing the wire color, e.g. the orange wire is always 1, the dark red wire is always 2, etc. It returns the index for whatever that wire does. //airlockIndexToWireColor does the opposite thing - it takes the index for what the wire does, for example AIRLOCK_WIRE_IDSCAN is 1, AIRLOCK_WIRE_POWER1 is 2, etc. It returns the wire color number. //airlockWireColorToFlag takes the wire color number and returns the flag for it (1, 2, 4, 8, 16, etc) diff --git a/code/defines/mob/mob.dm b/code/defines/mob/mob.dm index 56575936ce6..db1bd81df09 100644 --- a/code/defines/mob/mob.dm +++ b/code/defines/mob/mob.dm @@ -87,6 +87,7 @@ var/antitoxs = null var/plasma = null var/sleeping = 0.0//Carbon + var/sleeping_willingly = 0.0 //Carbon, allows people to sleep forever if desired var/resting = 0.0//Carbon var/lying = 0.0 var/canmove = 1.0 diff --git a/code/game/mecha/equipment/weapons/weapons.dm b/code/game/mecha/equipment/weapons/weapons.dm index 8017ed9a9d9..14b0794bf6a 100644 --- a/code/game/mecha/equipment/weapons/weapons.dm +++ b/code/game/mecha/equipment/weapons/weapons.dm @@ -125,7 +125,8 @@ if(istype(H.ears, /obj/item/clothing/ears/earmuffs)) continue M << "HONK" - M.sleeping = 0 + if(!M.sleeping_willingly) + M.sleeping = 0 M.stuttering += 20 M.ear_deaf += 30 M.weakened = 3 diff --git a/code/modules/admin/admin_verbs.dm b/code/modules/admin/admin_verbs.dm index ffd2046c514..0b8952d95f2 100644 --- a/code/modules/admin/admin_verbs.dm +++ b/code/modules/admin/admin_verbs.dm @@ -225,7 +225,7 @@ verbs += /client/proc/cmd_admin_create_centcom_report verbs += /client/proc/toggle_hear_deadcast verbs += /client/proc/toggle_hear_radio - + verbs += /client/proc/cmd_admin_change_custom_event if (holder.level >= 0)//Mod******************************************************************** verbs += /obj/admins/proc/toggleAI //Toggle the AI @@ -391,6 +391,7 @@ verbs -= /client/proc/toggle_hear_deadcast verbs -= /client/proc/toggle_hear_radio verbs -= /client/proc/tension_report + verbs -= /client/proc/cmd_admin_change_custom_event return diff --git a/code/modules/admin/verbs/custom_event.dm b/code/modules/admin/verbs/custom_event.dm new file mode 100644 index 00000000000..c4eed427a44 --- /dev/null +++ b/code/modules/admin/verbs/custom_event.dm @@ -0,0 +1,35 @@ +// verb for admins to set custom event +/client/proc/cmd_admin_change_custom_event() + set category = "Fun" + set name = "Change Custom Event" + + if(!authenticated || !holder) + src << "Only administrators may use this command." + return + + var/input = input(usr, "Enter the description of the custom event. Be descriptive. To cancel the event, make this blank or hit cancel.", "Custom Event", custom_event_msg) as message|null + if(!input || input == "") + custom_event_msg = null + return + + custom_event_msg = input + + world << "

Custom Event

" + world << "

A custom event is starting. OOC Info:

" + world << "[html_encode(custom_event_msg)]" + world << "
" + +// normal verb for players to view info +/client/verb/cmd_view_custom_event() + set category = "OOC" + set name = "Custom Event Info" + + if(!custom_event_msg || custom_event_msg == "") + src << "There currently is no known custom event taking place." + src << "Keep in mind: it is possible that an admin has not properly set this." + return + + src << "

Custom Event

" + src << "

A custom event is taking place. OOC Info:

" + src << "[html_encode(custom_event_msg)]" + src << "
" diff --git a/code/modules/chemical/Chemistry-Reagents.dm b/code/modules/chemical/Chemistry-Reagents.dm index 8152683ca91..94248ba3119 100644 --- a/code/modules/chemical/Chemistry-Reagents.dm +++ b/code/modules/chemical/Chemistry-Reagents.dm @@ -1257,7 +1257,8 @@ datum M:drowsyness = 0 M:stuttering = 0 M:confused = 0 - M:sleeping = 0 + if(!M:sleeping_willingly) + M:sleeping = 0 M:jitteriness = 0 for(var/datum/disease/D in M.viruses) D.spread = "Remissive" @@ -2147,7 +2148,8 @@ datum ..() M.dizziness = max(0,M.dizziness-5) M:drowsyness = max(0,M:drowsyness-3) - M:sleeping = 0 + if(!M:sleeping_willingly) + M:sleeping = 0 if (M.bodytemperature < 310)//310 is the normal bodytemp. 310.055 M.bodytemperature = min(310, M.bodytemperature+5) M.make_jittery(5) @@ -2166,7 +2168,8 @@ datum M.dizziness = max(0,M.dizziness-2) M:drowsyness = max(0,M:drowsyness-1) M:jitteriness = max(0,M:jitteriness-3) - M:sleeping = 0 + if(!M:sleeping_willingly) + M:sleeping = 0 if(M:getToxLoss() && prob(20)) M:adjustToxLoss(-1) if (M.bodytemperature < 310) //310 is the normal bodytemp. 310.055 @@ -2185,7 +2188,8 @@ datum ..() M.dizziness = max(0,M.dizziness-5) M:drowsyness = max(0,M:drowsyness-3) - M:sleeping = 0 + if(!M:sleeping_willingly) + M:sleeping = 0 if (M.bodytemperature > 310)//310 is the normal bodytemp. 310.055 M.bodytemperature = min(310, M.bodytemperature-5) M.make_jittery(5) @@ -2203,7 +2207,8 @@ datum ..() M.dizziness = max(0,M.dizziness-2) M:drowsyness = max(0,M:drowsyness-1) - M:sleeping = 0 + if(!M:sleeping_willingly) + M:sleeping = 0 if(M:getToxLoss() && prob(20)) M:adjustToxLoss(-1) if (M.bodytemperature > 310)//310 is the normal bodytemp. 310.055 @@ -2237,7 +2242,8 @@ datum M.druggy = max(M.druggy, 30) M.dizziness +=5 M:drowsyness = 0 - M:sleeping = 0 + if(!M:sleeping_willingly) + M:sleeping = 0 if (M.bodytemperature > 310)//310 is the normal bodytemp. 310.055 M.bodytemperature = max(310, M.bodytemperature-5) M:nutrition += 1 @@ -2253,7 +2259,8 @@ datum on_mob_life(var/mob/living/M as mob) M:drowsyness = max(0,M:drowsyness-7) - M:sleeping = 0 + if(!M:sleeping_willingly) + M:sleeping = 0 if (M.bodytemperature > 310) M.bodytemperature = max(310, M.bodytemperature-5) M.make_jittery(5) @@ -2270,7 +2277,8 @@ datum on_mob_life(var/mob/living/M as mob) M:drowsyness = max(0,M:drowsyness-7) - M:sleeping = 0 + if(!M:sleeping_willingly) + M:sleeping = 0 if (M.bodytemperature > 310) M.bodytemperature = max(310, M.bodytemperature-5) M.make_jittery(5) @@ -2538,7 +2546,8 @@ datum on_mob_life(var/mob/living/M as mob) M.dizziness = max(0,M.dizziness-5) M:drowsyness = max(0,M:drowsyness-3) - M:sleeping = 0 + if(!M:sleeping_willingly) + M:sleeping = 0 if (M.bodytemperature > 310) M.bodytemperature = max(310, M.bodytemperature-5) ..() @@ -2554,7 +2563,8 @@ datum on_mob_life(var/mob/living/M as mob) M.dizziness = max(0,M.dizziness-5) M:drowsyness = max(0,M:drowsyness-3) - M:sleeping = 0//Copy-paste from Coffee, derp + if(!M:sleeping_willingly) + M:sleeping = 0 M.make_jittery(5) ..() return @@ -2627,7 +2637,8 @@ datum on_mob_life(var/mob/living/M as mob) M.dizziness = max(0,M.dizziness-5) M:drowsyness = max(0,M:drowsyness-3) - M:sleeping = 0 + if(!M:sleeping_willingly) + M:sleeping = 0 if (M.bodytemperature > 310) M.bodytemperature = max(310, M.bodytemperature-5) ..() diff --git a/code/modules/mob/living/carbon/alien/humanoid/caste/hunter.dm b/code/modules/mob/living/carbon/alien/humanoid/caste/hunter.dm index ec396649eff..26887cb561c 100644 --- a/code/modules/mob/living/carbon/alien/humanoid/caste/hunter.dm +++ b/code/modules/mob/living/carbon/alien/humanoid/caste/hunter.dm @@ -40,7 +40,11 @@ src.see_in_dark = 5 src.see_invisible = 2 - if (src.sleep) src.sleep.icon_state = text("sleep[]", src.sleeping) + if (src.sleep) + src.sleep.icon_state = text("sleep[]", src.sleeping > 0 ? 1 : 0) + src.sleep.overlays = null + if(src.sleeping_willingly) + src.sleep.overlays += icon(src.sleep.icon, "sleep_willing") if (src.rest) src.rest.icon_state = text("rest[]", src.resting) if (src.healths) @@ -83,7 +87,8 @@ if(src.sleeping) src.paralysis = max(src.paralysis, 3) if (prob(10) && health) spawn(0) emote("snore") - src.sleeping-- + if(!src.sleeping_willingly) + src.sleeping-- if(src.resting) src.weakened = max(src.weakened, 5) diff --git a/code/modules/mob/living/carbon/alien/humanoid/caste/sentinel.dm b/code/modules/mob/living/carbon/alien/humanoid/caste/sentinel.dm index 40e669c0487..c155f1eaac2 100644 --- a/code/modules/mob/living/carbon/alien/humanoid/caste/sentinel.dm +++ b/code/modules/mob/living/carbon/alien/humanoid/caste/sentinel.dm @@ -40,7 +40,11 @@ src.see_in_dark = 7 src.see_invisible = 3 - if (src.sleep) src.sleep.icon_state = text("sleep[]", src.sleeping) + if (src.sleep) + src.sleep.icon_state = text("sleep[]", src.sleeping > 0 ? 1 : 0) + src.sleep.overlays = null + if(src.sleeping_willingly) + src.sleep.overlays += icon(src.sleep.icon, "sleep_willing") if (src.rest) src.rest.icon_state = text("rest[]", src.resting) if (src.healths) @@ -84,7 +88,8 @@ if(src.sleeping) src.paralysis = max(src.paralysis, 3) if (prob(10) && health) spawn(0) emote("snore") - src.sleeping-- + if(!src.sleeping_willingly) + src.sleeping-- if(src.resting) src.weakened = max(src.weakened, 5) diff --git a/code/modules/mob/living/carbon/alien/humanoid/humanoid.dm b/code/modules/mob/living/carbon/alien/humanoid/humanoid.dm index 6101c6c0720..7675f890e6c 100644 --- a/code/modules/mob/living/carbon/alien/humanoid/humanoid.dm +++ b/code/modules/mob/living/carbon/alien/humanoid/humanoid.dm @@ -702,7 +702,8 @@ In all, this is a lot like the monkey code. /N switch(M.a_intent) if ("help") - sleeping = 0 + if(!sleeping_willingly) + sleeping = 0 resting = 0 if (paralysis >= 3) paralysis -= 3 if (stunned >= 3) stunned -= 3 diff --git a/code/modules/mob/living/carbon/alien/humanoid/life.dm b/code/modules/mob/living/carbon/alien/humanoid/life.dm index a6f08cee3f7..e32495dcf51 100644 --- a/code/modules/mob/living/carbon/alien/humanoid/life.dm +++ b/code/modules/mob/living/carbon/alien/humanoid/life.dm @@ -403,7 +403,8 @@ if(src.sleeping) src.paralysis = max(src.paralysis, 3) if (prob(10) && health) spawn(0) emote("snore") - src.sleeping-- + if(!src.sleeping_willingly) + src.sleeping-- if(src.resting) src.weakened = max(src.weakened, 5) @@ -493,7 +494,11 @@ src.see_in_dark = 4 src.see_invisible = 2 - if (src.sleep) src.sleep.icon_state = text("sleep[]", src.sleeping) + if (src.sleep) + src.sleep.icon_state = text("sleep[]", src.sleeping > 0 ? 1 : 0) + src.sleep.overlays = null + if(src.sleeping_willingly) + src.sleep.overlays += icon(src.sleep.icon, "sleep_willing") if (src.rest) src.rest.icon_state = text("rest[]", src.resting) if (src.healths) diff --git a/code/modules/mob/living/carbon/alien/humanoid/queen.dm b/code/modules/mob/living/carbon/alien/humanoid/queen.dm index 72bcf28ad6d..7f3b8837c5c 100644 --- a/code/modules/mob/living/carbon/alien/humanoid/queen.dm +++ b/code/modules/mob/living/carbon/alien/humanoid/queen.dm @@ -43,7 +43,11 @@ src.see_in_dark = 8 src.see_invisible = 2 - if (src.sleep) src.sleep.icon_state = text("sleep[]", src.sleeping) + if (src.sleep) + src.sleep.icon_state = text("sleep[]", src.sleeping > 0 ? 1 : 0) + src.sleep.overlays = null + if(src.sleeping_willingly) + src.sleep.overlays += icon(src.sleep.icon, "sleep_willing") if (src.rest) src.rest.icon_state = text("rest[]", src.resting) if (src.healths) @@ -85,7 +89,8 @@ if(src.sleeping) src.paralysis = max(src.paralysis, 3) if (prob(10) && health) spawn(0) emote("snore") - src.sleeping-- + if(!src.sleeping_willingly) + src.sleeping-- if(src.resting) src.weakened = max(src.weakened, 5) diff --git a/code/modules/mob/living/carbon/alien/larva/larva.dm b/code/modules/mob/living/carbon/alien/larva/larva.dm index a1972b669dd..6d59ab7f36f 100644 --- a/code/modules/mob/living/carbon/alien/larva/larva.dm +++ b/code/modules/mob/living/carbon/alien/larva/larva.dm @@ -455,7 +455,8 @@ switch(M.a_intent) if ("help") - sleeping = 0 + if(!sleeping_willingly) + sleeping = 0 resting = 0 if (paralysis >= 3) paralysis -= 3 if (stunned >= 3) stunned -= 3 diff --git a/code/modules/mob/living/carbon/alien/larva/life.dm b/code/modules/mob/living/carbon/alien/larva/life.dm index f42624d3c3b..ce956a1ed5d 100644 --- a/code/modules/mob/living/carbon/alien/larva/life.dm +++ b/code/modules/mob/living/carbon/alien/larva/life.dm @@ -330,7 +330,8 @@ if(sleeping) paralysis = max(paralysis, 3) if (prob(10) && health) spawn(0) emote("snore") - sleeping-- + if(!src.sleeping_willingly) + src.sleeping-- if(resting) weakened = max(weakened, 5) @@ -420,7 +421,11 @@ see_in_dark = 4 see_invisible = 2 - if (sleep) sleep.icon_state = text("sleep[]", sleeping) + if (src.sleep) + src.sleep.icon_state = text("sleep[]", src.sleeping > 0 ? 1 : 0) + src.sleep.overlays = null + if(src.sleeping_willingly) + src.sleep.overlays += icon(src.sleep.icon, "sleep_willing") if (rest) rest.icon_state = text("rest[]", resting) if (healths) diff --git a/code/modules/mob/living/carbon/brain/life.dm b/code/modules/mob/living/carbon/brain/life.dm index 1713e449595..4520e48f49c 100644 --- a/code/modules/mob/living/carbon/brain/life.dm +++ b/code/modules/mob/living/carbon/brain/life.dm @@ -240,7 +240,11 @@ see_in_dark = 2 see_invisible = 0 - if (sleep) sleep.icon_state = text("sleep[]", sleeping) + if (src.sleep) + src.sleep.icon_state = text("sleep[]", src.sleeping > 0 ? 1 : 0) + src.sleep.overlays = null + if(src.sleeping_willingly) + src.sleep.overlays += icon(src.sleep.icon, "sleep_willing") if (rest) rest.icon_state = text("rest[]", resting) if (healths) diff --git a/code/modules/mob/living/carbon/carbon.dm b/code/modules/mob/living/carbon/carbon.dm index 72780bc7cbe..b0e8b08af8b 100644 --- a/code/modules/mob/living/carbon/carbon.dm +++ b/code/modules/mob/living/carbon/carbon.dm @@ -164,7 +164,8 @@ if (istype(src,/mob/living/carbon/human) && src:w_uniform) var/mob/living/carbon/human/H = src H.w_uniform.add_fingerprint(M) - src.sleeping = 0 + if(!src.sleeping_willingly) + src.sleeping = 0 src.resting = 0 if (src.paralysis >= 3) src.paralysis -= 3 if (src.stunned >= 3) src.stunned -= 3 @@ -176,4 +177,19 @@ ) /mob/living/carbon/proc/eyecheck() - return 0 \ No newline at end of file + return 0 + +// in a coma from logitis! +/mob/living/carbon/Logout() + ..() + + if(!src.sleeping) // would be exploited by stoxin'd people otherwise ;) + src.sleeping = 1 + src.sleeping_willingly = 1 + +/mob/living/carbon/Login() + ..() + + if(src.sleeping_willingly) + src.sleeping = 0 + src.sleeping_willingly = 0 \ No newline at end of file diff --git a/code/modules/mob/living/carbon/human/life.dm b/code/modules/mob/living/carbon/human/life.dm index 4bbe1663bf5..a2bb90c89a6 100644 --- a/code/modules/mob/living/carbon/human/life.dm +++ b/code/modules/mob/living/carbon/human/life.dm @@ -663,7 +663,8 @@ if(sleeping) paralysis = max(paralysis, 3) if (prob(10) && health) spawn(0) emote("snore") - sleeping-- + if(!src.sleeping_willingly) + src.sleeping-- if(resting) weakened = max(weakened, 3) @@ -866,7 +867,11 @@ - if (sleep) sleep.icon_state = text("sleep[]", sleeping) + if (src.sleep) + src.sleep.icon_state = text("sleep[]", src.sleeping > 0 ? 1 : 0) + src.sleep.overlays = null + if(src.sleeping_willingly) + src.sleep.overlays += icon(src.sleep.icon, "sleep_willing") if (rest) rest.icon_state = text("rest[]", resting) if (healths) diff --git a/code/modules/mob/living/carbon/monkey/life.dm b/code/modules/mob/living/carbon/monkey/life.dm index 9b9afb40841..ef452964200 100644 --- a/code/modules/mob/living/carbon/monkey/life.dm +++ b/code/modules/mob/living/carbon/monkey/life.dm @@ -493,7 +493,11 @@ src.see_in_dark = 2 src.see_invisible = 0 - if (src.sleep) src.sleep.icon_state = text("sleep[]", src.sleeping) + if (src.sleep) + src.sleep.icon_state = text("sleep[]", src.sleeping > 0 ? 1 : 0) + src.sleep.overlays = null + if(src.sleeping_willingly) + src.sleep.overlays += icon(src.sleep.icon, "sleep_willing") if (src.rest) src.rest.icon_state = text("rest[]", src.resting) if (src.healths) diff --git a/code/modules/mob/living/silicon/robot/life.dm b/code/modules/mob/living/silicon/robot/life.dm index 98fd2d08913..6f054c950aa 100644 --- a/code/modules/mob/living/silicon/robot/life.dm +++ b/code/modules/mob/living/silicon/robot/life.dm @@ -93,7 +93,8 @@ if(src.sleeping) src.paralysis = max(src.paralysis, 3) - src.sleeping-- + if(!src.sleeping_willingly) + src.sleeping-- if(src.resting) src.weakened = max(src.weakened, 5) @@ -181,7 +182,11 @@ if(hud && hud.hud) hud.hud.process_hud(src) - if (src.sleep) src.sleep.icon_state = text("sleep[]", src.sleeping) + if (src.sleep) + src.sleep.icon_state = text("sleep[]", src.sleeping > 0 ? 1 : 0) + src.sleep.overlays = null + if(src.sleeping_willingly) + src.sleep.overlays += icon(src.sleep.icon, "sleep_willing") if (src.rest) src.rest.icon_state = text("rest[]", src.resting) if (src.healths) diff --git a/code/modules/mob/mob.dm b/code/modules/mob/mob.dm index 14d703cf080..caaec2d1bd1 100644 --- a/code/modules/mob/mob.dm +++ b/code/modules/mob/mob.dm @@ -684,6 +684,12 @@ authorize() + if(custom_event_msg && custom_event_msg != "") + src << "

Custom Event

" + src << "

A custom event is taking place. OOC Info:

" + src << "[html_encode(custom_event_msg)]" + src << "
" + if(admins.Find(ckey)) holder = new /obj/admins(src) holder.rank = admins[ckey] diff --git a/code/modules/mob/new_player/preferences.dm b/code/modules/mob/new_player/preferences.dm index 01174aeb6bb..d1e60625d19 100644 --- a/code/modules/mob/new_player/preferences.dm +++ b/code/modules/mob/new_player/preferences.dm @@ -178,9 +178,9 @@ datum/preferences // slot options if (!IsGuestKey(user.key)) if(!curslot) - dat += "Save Slot 1
" - else - dat += "Save Slot [curslot]
" + curslot = 1 + slotname = savefile_getslots(user)[1] + dat += "Save Slot [curslot] ([slotname])
" dat += "Load
" dat += "Create New Slot
" @@ -573,6 +573,7 @@ datum/preferences alert(user, "You do not have a savefile.") else curslot = slot + slotname = savefile_getslots(user)[curslot] loadsave(user) if(link_tags["removeslot"]) var/slot = text2num(link_tags["removeslot"]) @@ -583,6 +584,7 @@ datum/preferences usr << "Slot [slot] Deleted." curslot = 1 + slotname = savefile_getslots(user)[curslot] loadsave(usr) if(link_tags["loadslot2"]) loadsave(user) @@ -593,7 +595,7 @@ datum/preferences if(count > 10) usr << "You have reached the character limit." return - var/slotname = input(usr,"Choose a name for your slot","Name","Default") + slotname = input(usr,"Choose a name for your slot","Name","Default") curslot = savefile_createslot(user, slotname) diff --git a/code/modules/mob/new_player/savefile.dm b/code/modules/mob/new_player/savefile.dm index 7243cca918b..ad9543abee4 100644 --- a/code/modules/mob/new_player/savefile.dm +++ b/code/modules/mob/new_player/savefile.dm @@ -22,7 +22,7 @@ datum/preferences/proc/savefile_getslots(mob/user) for(var/i=1, i<=F.dir.len, i++) var/dname = F.dir[i] if(copytext(dname, 1, 6) == "slot.") - slots.Add(copytext(dname, 6)) + slots.Insert(2, copytext(dname, 6)) // reverse order so it's oldest->newest, like old system return slots diff --git a/code/modules/mob/screen.dm b/code/modules/mob/screen.dm index 271c808e5a0..57978a409a0 100644 --- a/code/modules/mob/screen.dm +++ b/code/modules/mob/screen.dm @@ -386,7 +386,12 @@ if("pull") usr.pulling = null if("sleep") - usr.sleeping = !( usr.sleeping ) + if(usr.sleeping && usr.sleeping_willingly) + usr.sleeping = 0 + usr.sleeping_willingly = 0 + else if(!usr.sleeping) + usr.sleeping = 1 + usr.sleeping_willingly = 1 if("rest") usr.resting = !( usr.resting ) if("throw") diff --git a/icons/mob/screen1_old.dmi b/icons/mob/screen1_old.dmi index 1a70335cafd5c9d370f0f237d7e8949a76131f66..ae9ed11ff79ef29db97bab706255b7b5c63929c5 100644 GIT binary patch delta 14664 zcmYLvbyQT{_xDf|f;5sM4bmVbN{2{yNGKiBofnG~5Rh(=kZz4QZ!Ww7pJ!hZ2KXs?R3Ujp@^D85S@X^w9ld*6$bFp!9vvG8Q!Msv)6O<;o)>1ijVrmnpb-t716wg~+NYvWA=Hc{?SrA491e1iu_RxiQu%Jb;h0${VeSLI! zdU92#*ZN$(>`zmzTyfXxJV)|7_eW1Eh+HX@pNv|No^y*8z)YDO9I_Qk(;l)zM+C|^ z`ILvIOfd{!3yb#+h{l-%`Ejh|`RY}e-)Y2{XVHwZJe))EFWmF2W}82-R%}17&VA!M zr!h}AtUyo?V))SM!|4po&TUId!xU>ibA6$&v~Zxg^y#btyCJrK|xn7 zEX`F^4(F-=7|GWbOEVMsdq?Haymp@Q)z)+}V;zni^UgD~#BDLZP!9dv7*x)FM{1*g zj(>DjbnP_t62?|;JLE5Dj+>`KXy3{QZ93J3S#b1Pwzd8K)x2dDFUGIv<73|!S44c( zwz|LF{7knroqzMMGahfX@^swB%dP&Ki?s`B)u%t+9hTskG7(WIiY$aiK$8LQlG6Q; z|FCn>bbg}Tz9gY^79NqSEt|3w7_E%U92pGB`+p+cPA;8cV7k59&c|0C0F|_@b{jNgv|?)%xax?l9MSqf1_~{ zSnxb*aU5zXk6zI%gyk>WJ*Wuqj)bH6%}aD{PvE}z$beSIfQI6f1$AaOR5stGn?5op zA|U)KNlhs8RUJd%Bjq~*8&|XJlF&uEipJOl70>Dn?mEo2YnOL(&EO6Z*lZBaVAD)5h#ipOPplD&E7R zWDFQ_VW6p>w0rpyD+BUBr?@y+-r8Sm?CR;MbXt)j?1-bf_$9u3dvy}}<;!>9i+#f; zujtcLH;?^=(5R@W%f?>=1D);dlGU%5YVE0Vu9pgFlrJS62;^X7L#l=3la=9U2mXb$tOHsM^@D-Cdup{b~Pr zd36=~&pSe{b3`05SYg)tiD!SQIi*Oq%w=y*KuStVrZj|l?w*WQQ)cGlj*bqQycWY` z&x57rPeDPIu3IYU-kTIho|SLfQ3Gz~mn$uYC{a;SFIU64Lqb9_8yb>RQ>k5CU3rCs zSQr`6<>loI3k%61VW-DbLJr@vvr)k-J&`nuBk3>H)1kDBtLeR&so_1??XC$TnOVr_ z>vSe4QbJ%LtfRA2HqF!9?K@Ri?3P9A?Xlv!cki6s-MbeSQg^4z#&hKHV`5`}6c(E9 zPL;^W$T;mUh!`3f&4OzAU!S&jc1lmYqMo+TMYI z@b_q#F)1knl@qpIXMjA%q{ljYGmZ(!um~II^*=KEJN$JAHDD?x1SdT zyRWFMG(Fpy{5M-AACi=xpHFVX`MMVO;lqbx+p9MRtq-&7eJ>ma2M5XdEpg=|sp&u$ z%*^P45>PyIE6~gEUH?V+$oC)b7H=;qu4 zY^CXXrwAPb!};di9=;|H|G3ob8{TjP8iVBRbegCqpZkv1!s4QSlNYbmNcu*SReF|c zhM3>QqNg9??&8y@PXq)662``lF7_AKe&;GSfu{TU^XF)@ujhoVfa~TUVeY4#oE#Cq zOP*!F6TFAq#*9y&e*5+7Wi$j;*iCa;4yT5`$|af|Givnc9v+Sazj(nNr^-x5+TNqd z4k7-I=ZCxRxtQjr#=dcI82)_!p_7ZtYSoAs12ePSm(e8%;r~ieQPyr%Rs4Ee{^9@iCqO|qm;^Oj}n(p~|D)95+5MEn3x!u_DFzdU@;-#;cF1$ z0`k88o8OI9X*XT^GUiijYpd5GK%F-h7P6pCFdtC=xoAbac*tc45uBujhK3gFRebpK z=gqwb)GwD?{6$>Wv4~kzWMUZAm1MZyCMP8Hf`+W9s{@z#^!+;{{4`&D3@lL$erZNc zO})L?D1^A(5|3sKb!@o`ie`{EwX*7sW7plDuj8f-xTM?I*pQKzU)$Tmv;MpeMupU_ z(PIAm{2WFt3VA4fAsEgO9~nv!a&~oHLyoUht<}gQdV2bw&TIEdOG~YvQi9&E_d23y z*DYmy_KZ?oTpZwA(sOUVM$ZH0XU~$s^gHcLu%)J^Ch}R}oNNve@9wy|xX9!r$%d1S z)j66RA0GqKAXa!uCHU@5ZzRo^M=uOGC{B-$J0O6WU%uc5;nNO-hU^<2CbLT|DJkh2 z8L=A8lmtVRsZ$gh9!{LJxU#bHEg_-GW}I2w@4If9v6r{Ex|Ws((a7c}-6J zY`CW<=)(upd${Cnpsq<^6SA_h*)>j(tgI|V_zSg&#&a!A4GnT6=I*2)y72H1wd? zR##0+jT)Kx;%TUa4%seA{8lrKp4|DW8O+SgL11dbuijW$S&7{qO3Ot( z8UipP`(p~(jj!t*#=!W2&qRSeFflO!vgUK!R*U{duUi$v4vpsK=dbakm=>&3Q$gA=@;VgO9st6rS{25(&c1S0hiora69nkZoreW+@AG8*Wk=% zYV35=iuXO2yo1>^^UAHEF?uBA>YDg7@#XUK^RuzBWdTH8M!+u$CT*!{XuwdK0RccQ z9zdqAd+g&F<$;T3X)<@Rz`~xlCFH=W6V{*CK=t4-eab zFaWUB-{1e!_k!#F`}fGgbaY7l`}a@AL&!RuKpWE5&Kk33<=|KcstlLr83{l~upn%F zeEAZcDzn}PJ{S8D1|^nDP2K=PT-SQ=z*+asR#}Z%KW#efxIZ&LZ|3MY0yq*24=*<} zGw|}#YdBTp)v>m- z^S_(nA>+_%TZO#Xd!9i) z@{Ns6Xmj(65wRN%Fdx}U&gSNfiV0j6zrQOOHv5o*mK=N8-QOPu_+a(lKaK!E03{53 zd@&y}@sXs?1sOGT0nM~MSHrHLpwQLby|T3>4%ufFmD|*6=rPQ+`YrYDt;nm`B-#B(z6^Tz^V=5l>% zqb@2{N=QIR*uK&k?0t7OtzI;V97X8ncK1{v@Sy2r_$iR*>R;AIv!tJ2EVv3kd$zj0 z9g>zt^XSo|g`dtJN!fLr&UUn;shO>e4rVGoQt(@jR#~Z5R#rMWJFlcTw!EDwe_NpS zXil7s~8=6sKVj!v>TBd#iZ<9Y$G_7;#Wgm0|?U)4G;4;QHCu(GogLy9)*pHhGR z6psG13dCPZ3Kgi{#(H1u?Rj16f5cZ)$)sS~7Kk!4GgA)0*VNP$Nh`+2#vH~?i3J6$ ze0+S{%dO&dj?0#tgGoSMz5aCLu-q~PluMGRCs$d^b>a5xQpsx}uu>$W=`)^6eYRlFu%u*ws4m@87@4fglBy>l_0VG*hUo4BP_YCM8z=vJb1%_%pi_jts42*q)=YdLV zz@5z9m5A$Rh?IB?W2iO;VAoC0)*G6b?|ZRabp&Dox57xH6sszRJZeA{3e@CtHBcH-Ymc9@0BL`OixNU@I@@ z0qms$^yuf$pP!#iK$=~>z2WNf_~N$`PEO?oWFnS>)t-Zd!J_=+NKzd>C zW5%nitLNu4X0Yty?B_znq@=QjhSYt1ec$5a`MeI_`1$!^VPj`yXMX^6!NI|y*XY41 z9fX?&A>h;^E}tG6dr1}};(VopgM(cU|45b^H$RcmJbu2_;J%B6gOd#eOrXc&(IK?b zNdbria7Rv}{NV6#US=i?OsJs4!b>SBR8W7U$uf^0D0yLKX7=}Y?)@U25+vpPtgo-| z*fYq^&c0laRlOX~fOmld{q^hDAE0f!y1Kr`$IBt$cS(Zwl)z?Y0vQTSd8lBH%l!Pb zv2O$r5jw?sl5gKabkJodtxN@(LW~n&nxoZj;QD}`?Enxj%Rm_SsvAJNjE2#>cg5Cg zY{Az64fX3BXt-N0>49%!o1C04q`Xd4KH}aeT6d?!B*qBSqPGt5~=`AOeNAZ|SUtQ|SZ+b=z}aI6{Dq$oK?o8Q42~WIFKsHxY1s#U&;6K4(t=5-asB(7DO!}*ap^fAKw1?_1Etc`)TCEwj;$(o^<6K@cYBl$ zSUk3l27s%kpqoK+5I=kvoS)A^K|ulf&ghdbaC}3+8zqVPKLc*bz@Q&&S_G^{)Z^b9 z0FuJO!cHff%1FIqv;{J(mg^mMkV1iAi^RQW(zb>i((bn2%S3vEUcxiy#jy}5PH`yI(~lQ8UxOF^%CReWO2mRNVfFS#1Bm* zODJk1onmDry|{P=xFyos081tlZ>Oh64jegsr!UA>0LE5WkI}=S7I9J%J4b z%RRi>$_N)30h;|cV0Yk6pFDHwljR3~Q$bO24M;O&ECgf?Qrn)Km;qgOyYJcB+0lV& zVq&6_{=5&Q0*ZcqO<0;%=H}%AcRu|C10ZyJIApv2{V8A?q^+&57jbZKC^oFuV1$m) z(a}RHTU@-(LEx9IwFCM_c7@J+Uzh9Au{h#H99S@zL2t+MvPsBYmUJ+=hzp}_O)`kN z!h?r^WJWr+-5)~sb27kF@$&QM6cmJbpKS61K?i~&3P9%I-TYR=A#(@b-rlL=P&%kZ zOmcERds)*5Muk*J*!ctKMN~92?}O$GwW3KtQM?Wd!k}A`{u;=%&0yMqKVayPYBM`+ z2gp*}n47^l~|1rj2h$q%R?ptyh;mQ85*p_w1n?+y?P6x0d05`g&qz~c!6 zb7}(J34rgbR;HlM|BFQ&yq@yt>-00=?A zi2-;IjJpC*-{7(wdgX!H+4LZzm1)PRCr(JsWL6*wBo8%e@zWoq@b>ZwStY4+Sj+~N zBb1oM<#b!!=X6_AO^rZDN2dt^zj=N#$e);$bad29%Ma`(XfSL%JSK5*6F1J-&z!8R zSflX<%`O`d4k!dJmEad-hV^J0+&CLG@j1kKKRmUG(G$(p*_p6;cO!@b223Y7KUesz z_YwX?d;5FPeL&|W3fPf>3MZzdj01%W6cZ3a%m5l72m(76f#Am5$@#DnJWU01Bsn$K|mk0E^w-T;zkmy54o`7$7MQ4i4bT zd?09UZ~cIjLXuRDTm(Is0dUCt&Z{y2aAcw%f%<_o=n{xBy=ET)$EKqotYBSjZIFJN z5KvNvfmnsLiysI(U~YdYayNgH%XzyCO_iAX*8!IStbNbNlb#8s@o0T2DX$kzJC1`^gcul4q;mq4=LC$a$KKrMx;mj?d|EQnQPr2q61r zIFRa^hK3yRjliEE0SK^T58x8uvTy|j1+&FIIY{L*Dj*dnvo;`QW(Eed|B)I^Gfrk_ zEDR`$eEXU5_s9Y|I&x2$^ec#fTjhb#$(}kv`eR&NkWFF&egvhJ2iY^w?SFt`0AdJo z0R|yEC+Fz!@DI}dU9HD1v_cu+w4?owFV~`CQ&PY~uLeDqTVN*C4GopR{*scCW@cyA zb#!_F%E|7Xf=HhbXjFIi8dj2{E@D*>H8N3-!m@LWz^y=x`UiZJl=K&9b6N0&1EuTg zIEGOn=2w3|Jtrp=;k?$v>wEsrVc{p;6Njsto7mLUL12gyfq_E;DIf)8wEp~yzn|YW z&~Q~&Bg`QC0>NGMCBWYduZ9sj{@{*5Xo<V1j2eTYqVUDU#ONE!!NY?w zRGm^|R;#YyprEj5GmtL(p8um`WRw}y&k*&DoS4vBU0a)N^ejvCt*xkN9~@L7fk)fn zfc!;GOREd;DhTkQ$6Q$*HJ3m@YGUc(+ zW5A;_YiR&D0Ym)n5u5Je**}#ubcnV2?tGr|%5s09p20!MVJh2qaN>r9bQy!lSH^iorxc_G7ou4MnDOY+MRq1^0;hx{@_L?AlFVuGV5lBbGZW%2apU=>4Z#4#C`*yS-57d1Z6n41 zMYcUoP%{IO3YU-4BXyPBPtZuD=*Hu3mlgO&jb7UzCh1TJNWfkC99GX~Vk9 zfQuUpM&_X)BdKLs9T+8S>>BWTSx$Nt;(`xB)5Bny2GUz@jP6~_ygPU3=*Uw7Gq{BZIP{_!v!Wnf=;J@q8v1F!S z3Y}il;4kflcU7#nJA7^J!1K2hENf)zOi@}ct))QBJAP4J{Ya8HhCIa$KVn9g9<*Q-PJ}XABI_-;JWA%< z_X$xilyV@W9buFPY@2wu;>%soV_~gIG%T4=F82F2i3`uJ-NEl&wI<=qFYn$nFG}0( z5I$`W$hjDmx%uxf<-eYjAMLtuZ>(XsRAsm^s7NFZ*YA0l4Vlj>vc&{M)7CTl%SYT= z+_YLACDb=4<=Dp3%lA$1wm9tOi7M;M&5XXN&U+-OxhLd?uUuU=0T9IN+gCeOa!Axt z%KR<9Z`VAEr(Vc1EKTzCZ0s&cQ&aObB&o@9WfzGBKEhcdKWcc>v!4}h_rLy#@L)Y2 zCx{9gWxov@<@OnWw0+-7aX+ghEmjat{f!z1@($2NsOm?h3{MVfwq87q|1>k`@j*&H_IG;? z#j_%RHYTRrZpTOjIKRMeQLEW=J3)__Za_a!Iy>7gVn%#RF0}R67R2~Wwn{*Y(3hWs zxRn*I%;e{y!ozpfdUK4?C9+P4%5>=`wa8CAh>3~kyWv3O(LTF5GU>MaDq(^0gujg> z3Ioqt=T!l_$haOX#cF|lf{A7fx0`c2y z&kRwt7_`@0H$IYae5hsWm-tdyS>OuVDm!pueGrJM#vl>F)Lxy%>Cf_*mskA+=*a5u zyRI&oh!!l*?{}AFs{)12ZyZo8Hyc4E!0< zLR|ht%$RtQYpMpY?VlA1XBf%O+Eg2_*?=l;CWZd)=qq14c=PhT9!d{XbMQFfi}A_z z+1%zsASLnUJUu+f%EH6LQ9!)98p@K+vyJ|=JHXYt(qDlcP8LsOS(;g>pUS?Rddntw z7CJl1BUN(mhs4eGLxzV?byb~pcJ8Jt!kB5%(3i>$)m(|K>+jz`ly)=N*4#I5-v*_@ zl3)+VYcPLmeYdO*u9swyVD2)XS|K5bSVe!%0cs~@L`jSwMC4aRsIy4$Yjieh?6o>Z z$mO`BE?7JLP%>K;xB1Oj(F_8a9F@STD*njZIce5H+ zz8#;iOKQt1VXm$vm#-5)zGAw;;Pe%<#r+ARjPS@X!1(!r*~Csa<2X$8n{M^5cd-=} zg2wL#CvpzUc}lRvi_ewW;Kyg&q!g+*Jh_(x)8ZDUR5;4=pqj}+k(c702ppAQW(F=7vDy~)#foA)~|U{N^m)5=lvzE$CmsuIHG8iaa@WbSVj{+ET< z(=P7r0_SUW;HzfZ$qV37yVM%8WL4zb2lOpg#t>Jbr=jOMLS?AMQ{vya_0yMjuOD5- z%8yhMXGT$baDy_XzxRxS3p{yK$Lb;cMdrJwl&KEyadwFRw$93_X;)sP}N{XQhZaSN86TY?1_wH3IaG@Jk%BO>rYIQ23 z%T*6fAjvb$I=JXARt!4AQDSdr2GRctErL?O_WQj`^lw;!AEdStq=>@7xG_oadG8=sF|}NI8O#1@!hW9~%+ zB_FnE9XvZ0*qIx3e#+Q65-!I8tGk$3-V!Wax!4{{#%hCqy1og5rdJ09QrPbOE3=lr z8OM*CoWD?3x^aiTroPpLOfACd7STBb%}Y;k9s%E_Y4bpD0ic% zSyOxe&Dh6*!Ipb#R8S_I(Z4sxyhNX%xvFDEAtCF=;K6kN}fi5|Wq7 z19XlG=n`b`)}2|}nTL6k)cm;&Jh>=0$Gn=)P%95dsEj=!E!7a?(ifJm%b3YS+ry-l$ne-dS3jl)h5RkQAA2>=t?%(cWl^s&Zv2`Pxx7H zzsfgm^{FM*l ze43{|s#GL*^KIvO02n55e0ozFfYe8g1!1=C@3H2 zi~&}ftf_P|+7d5IYumcJpCW_;ww8X60Yz{sa^Z=vV>NZT*bVU;!w7$Ux2*HV{gzf0 z>jmtWs=*(gu5ARKCH+>qi4Z~g`*)7pOg8W|DWKqsjZsaR#aQs%LBq`^p5p>G0PoG4 z6m7WylwJPLdwKfPGlhiy1$U)Tqhq?~no1knAD&ktf2J~N*{rSMCgT6fqHKy(Sf4jc zgdn``d#$9)`6aaC+L!&(*QnFT6yqd;c+zk48zJyr1NSEwJL8l`nD*#z^mTN?iD6V# z+}yJtlX)BRbe8Ncrr|6Zx>hBva=Tct0(bbhgWZnd00D>w+*{nDKR<%1JIY!Q)(JbO zzqTf`!>`SEW+-Rs;4QB5lmU=y_cFQ!uLaU!zlU*Y9TgxuW&Q{j&QI{Qt2@7gq!|-iD zjhs<_P+;lDx44T~ZC_;enh=$;fssG)!U{>@vCnQ27C#-8N&H^D_D1I`e{XDSn#1Em_YzISCQmudSB}!0(}bi!T|lfm#^!Y*ox!qU3Nl3|=WkE{^i6 z3@V8aLDaSLJks-c|7=nevwjk%wRD@iDDdcg+u!SHjjmwpqSCEpXa z9^a7`*JHpoO?(+YihDFIOLiP2cgA=81VuVh>UD_t)7A$PntOKgM-6K}JH=NCyRbkH zh0MX%`Zi}!9*kh%Hq$^A$BqT>shkz6oBZ8tp-9tPeqZ4uBXY*=iLyyz|0MtWG)Ien zzGN7$|A9C6lSSN4VjHkL-fC?5n#n&gMQoImdw-9jG3$OTvBN~YilRKcRdw_k%1{l$ z7w!Bt-*HBwm%vmJy+ndgXk&$-%~K8p*C5Ub)@!8@X<;vCNn&{gYSV?|ax7$FJCEeH=p+qbR9$Id~4OnvCKZo5>2VRM^d_y<-^f^-a>Kp>k z^=0L5e@tP|)r}JFeiGI4%O^#M*a`9!-QYSm)x1T-i7bi`e8U9$+uZGbU*vteqFRGm z<(Bm#9{b{QL$u_wrDfCq81YP*+R=WdmFaw}YB{+aahuVgv6_JoHuy##jQN)83!NsLa(XLGfZq%`kexV|kk4uqK1D5Ty5>AhLZ zi3zhaILdH!7cMuV*6nJ2>o$K$nWzGO0xgNO#fwO zG4*2Av+|xCZ^6&T@~`bW|n@*l0KpY707&(%2q~Jxf)*j#)LuY+()Hp>HM4SeO@LS zeGCF6UF`CPS0CjV)JyKg85n8Sn;4gw$%8V_h$)@BqT-+Txi3C5iQvw=t2P-Y zjel-LzG>s|I(a1V?6|sz`!Zw}I?TlFx%gC4FHFPvuxtxqt{7@RVaShZB1G{ zKQDsbOFaCk_GvrM*&^nKWI-6xP;MmR8LzEG!zeZKysjR<60 z&Q`{mD1jA384@0rv`)9QlKwimI^G3OBV*&^r;0BUQ8i^@6LD(Vxsp%5wvlQ*@zyG< zq7Q7S2qc@=kakDW(zV&!(JXt=X0J!xLaryZdgP{;J%j-zR#|@3IZXII?%(Hp-9$9J zD$5=Fi^$N(&JLwob`eq6iFokNa_Wd$FFP$9@*lb}Xg7-axEo_}*}@l5_fYu_*=y@@ zf;QS3-PEVdYs9oJ&(o#VAq;?OE*=gW22Xl)IQ%rOd;>#J}r z0TKM&S=Mw%<94}A^Z zw}kZe^iYb7I|;Pa%CzE@a|Jy^6{Nz`(zZ1zII*)mOI(f4M0rXyscqmJRERQNgwFc8 z{1-#2&7-f!Of~m|O|V%$&rNTUH4oB9F?q2Bt4TofvalcslZq&hcNndu*bJgH(YU$Z z$;N(nIMXp;&(Xr(@{w(*9BPW#gNV%rPNl1orbsnn-2bU28r@u}CJxnecIvIW1ZwWo zk|MslB)+Xmvzhwp53ZVWb^;`^+*qg+9sk>lBK3jIUoh1x{A}B4v zhb~aA5d~FEw0C)C)}9b$H2*~-f+G9>{*fZQGr7WQvTeaMrAB}cL$lPMhgkE<}& zr%KX8{-+~$osc$+PnivkBg3jt8`hxGR+4gdu%%9f=utzyISmsCZ=T2nk^<@@ z?8kHOG@`RwLhxL1uxw6?^Gp<1R^*V;0K@%@^4Sr)4aDIMmgFfN*EE}TF1m%F$ zbXzMqFXpAzc^#Ru@$yy-?Fni7iOvPcR|$AWJPlZIwTGVwY2PL^f1_9CZ(lai>_%K| zX?_O*%TfUH?=la?B4eN8y*(lI+YD8OXr1nqKU=z8h%Dr4(P<_tb@Ot%D|7ZdpK{vI z&g)cHTR6TR`yJnGPjA`!nbUWEu!VjqEfRtM;GJ$tQPGd@Fz}-wt0Ge>_2$F>1I%5}g5?(Q5ElmZgp78^R9_ve1T4b};& zV!23FZ@1^s)lvC3`dvD6^Y_Mow2pCDE7IXU=qx!{h}mt$R-EWnrXU>>O0A4Q?y;8H zeXU4llDkFXKkUoOT!Z)iS#*MxN48QYqudV-gD;B`gtq4-15y;hUh>655GcL7x_Or(k{w>Hn=<=;a^p==+~%?A6=%O zc{%j**XobtPHHNqYNuxr-CKWGxJ;4n>cmWg)p>dAm#y)f<%-Pggde@5o4nCq6j7V` zW0~=y+s^;w$J3?7r%OvumzL+l;%&MJ?@#SV=Oq}IU!G+3XxXoM&{)Q%NNlVZ#{MlM zq$e`?#$*^%w!t-J!VD5SZ%QgPUThQWR)eZWrLu$u<&KHJByXLVAfkiY8MDJc|P)^#=LLO|_BV3?ee0|6CxtiqM$%RJcT?nN&?<2H7% zvuZZi1WI0I3>m~H4e1?i>cgM6uR~&t{{HPRzpk(m?hskDUc;Pkc|>fIsKA76lsqTU zG(PvGJo!WFC%%W@za2k|kEh*fPE-gE&!&7eJac!RC^r+6M3MKyd}n>pIE~pLqryEU1&Jm3N#cgG|puh70A-C(>o&c;XZvTg>=gSAXMdxg!DmMn1`ElwnJ~_t!!-&hh)?$aeZM$A-QL|L znb@u5*d10CbN|yxbURkqcjM2_Vz*IqK+203go*6=;kB59l-#VWksm+aODrx=UYcnR zs`~p2!Y8qmyw7t)0`o&Iyl4AcT;v}5y5RlFMV&2c6|6q3 z#PdGfn8CrpA*7?@`rE`_b?00ytCH)qo!r#S(lYG*d-kQJC8I{4I69Gl7g_Xt$O%AiU&%sAWN53{V zxi22u^rSzLePcdZZQoh>!SrCLK(WDVmAIgw03LqNb4f`yfsXSajDX^vc+XYLcsh~j zv@~*Tyc>VIQrJ24E5j=+zgw7_KPfBY{QC7PBNG!56uLzF{pG7yTPF?1Y>nja!uE$< zj^Z?|MPiBW$hxf#F`b>Cul{^b4rLS&5~>V5bkQj{QMR&rTXa^yXOzKX`CKn%WAF{0 zVXf2cM~`UO+1YhI82$KQ+!&tj9}p0oF`C4r=;rQD6vy@XbVK;|E2vvrPfzUN8#&LF zf!j}?K8=ivYybH(<+W5q^m#+X4chrcIXWU`H$*`};b{9iz5n0hcWz!@e$9e}{p9tC^cc6=n=@lSctZ0`g6K(+z=v@Al*$$bVRLb(vF@H8(wa{-2AqqFi$S}+ z{7w^<&wjjQiBa&@*4DAfq|aCTQ6BySk!wgUTtV-z`@1U(9#Oe&7~*jHfj6%^$CnzMMz7~u?KRpw<_i2 z#PL0W-gdq%%BaaNG35MY8`ih;_kDS#Z9g5e@++K?(m8g?BI)Q4Ce6`RRlIN$tLb`o znD@s$N+}Z-5)zm*pS(#5!nsYFSbfx3*G=!-xzpgkTexDGo1V_fa9?3C2X>M-_{2;7 zK)2YW7{;rwzeR-}Qw^!b{Cnv1*?j@m#Kh!rk~EB=@5c1k(b3eBlDmW9(#7vShnxp6 ztLF4TK^)8IKbW@Uu;d02o0^(VPftq=jt#$4U07Or4#SuCUaZ{DZ>G_gMNlv!FYgwY zQT>+&&t+ClP9|aDOenYK=B&tIcN5gVv$6*e$AAB)F7oX1#Q69}zio@I?rxcf8&M=I zAFHaq!Si8=(cACj?7TWv$1Qeo^k#+8*4p|ROce~t`1m*>4NcF%`qZF9O?_kI%j9In zt3J}w(!Z9LWQ~kykkhF-Kj`T;{7T2M508_=TUuI zO0tX!laP?;*E&(cxZ=|Yy!ae^>H$;3tdt(gD4(AmsnN>E&z}Y>vvhTZTU?fxmp}VW zfaJ*~&;^}se-{uC7-;l$z1U7bZpjm)`|FNed|O{%ykZ*HV4bU}=-HN3S65eLe0;~$ z6!pNBAN+GccMg2mYuDG;5ljJ(KauITvqS<@srg;t?K^zuf?2|y#y%LsYTV9Gyp4>F z6RjzIeSQ0K#rgq@qu@R;Mt}ZTL2I|8I6&-1Xz*V|Q;*u3oz)Ri!8XkoYl<)nP*giydIEVpijs*0U!m8Q+LAoSO+U1OAI5ECq~3v)80&e=$3E536y+xgutQDiUTbOvecK|O^-T~gDR;iC`7M3Dw3v* zj){?(_yYsYgIomNzkmO+y!>ruX59VV^4*Y&V{2rt0eOir7jn8@%*4dRVbYX7hq^dC zTNXoo?dW(8ghEJ6EUB(eq+4!6M%jJi#tkU!OW=#h5<}bmoW+r1&9&L)%$F>x#3UqA zK#lDIFgv{TAxF2Nx;W7HWCaE-7blJ`vrY1-i*v!i0}kLmQgU(rQ@2dxn=(<-|YgLEg z7#B2DR^Gos_ox%O*rkUNo~W?I14N_|_CXVyn!37#y!@4mi;JM`c5;Tbz1hG`B3jyB zbc>%DvopC@Ayri}azX`NIWaLYot1M<{=BZAj|;~G;XV7#j(25hU6qt#$K$p1^?#6? z21!UtK3&;d|NB<~x^HEu;93|SflWv3f4w_Ct~a=Q5kVhfw)5vl{ijd!hQ@ia#mP5m zX_evPbV1L;mBkMuYV=SvVV||4l%MB)!khOHXtbLgdg3i1=SMr;+%kn;Ha5)d?d_zb zq+3&S7dOjvV&1&Dgtbl9?P}}#LewqB}bL-rb(he+N)Q0N1wdO z&zBC~0!sGSo|ggk?xl8ZdJ++V2fzxGtY%=)l`ZUh86V%OEs_XsZ)R)DQrU<|=!O?n zRub!{vaz!M0!@PEP5o5;Mjy`Kzkl1+7}PpX$!^Xz1IqPe@J6hx*Z~6fLGKC%pYVZD zJKOCCP)cZS7O8WcV+Kw;I}4g$SP=C7OM3I>O{eMlM3x*sEcv95b#>%3xaa5Rl#l%G z!LW3UjitrL;;$iVYg-2gH<|p%o?oZ#fbsR)8`voe zSX<+uD%R82uKIJBeAvgj-5Hs4*wZ;qAqeli>8hV!kKo$moWK+}5 zuE?%~6!-yDQD;w&)vqs4vL5+sjKr%s;Gj`;>z9NHa_$Y%0QtLYx_o~2Z%;mSvuU?a zOHol#J$B*C6YNK)YgM4c=2uoCv$JWT9gSK-vaP#Q-H&&y6KM*qj9sT{<5q{?4OiK! zR#sL5O#c2?-eNQU(cF%Y3I^gaY+c~N+U?u7CDwAaD`QelrhyI?f!J@F+X9%^y3BMH zslP#h9?1;tlf$!M-HGAz>+5lunba}l+)GE>3uh-|Elc0&5z?AUCV7i5p_l+QAI-nv zg0NTtPK3tdFsgr1RKyC8oF-(V99-vn%WUbbO&7#5abNs#=n1$ zfKKU1pjVZVdA8zFFlZ-@IvN;Ii>DD}xNlZfRdwacm9Ia3L_w`%*4;s%eg%pJfdfC% zNx3_x>NZqeJ^27wTH4xC&L+UIXos+z6L>>DNe^l8V1jlmEGfB4Pfsr!NA;|rfa%GT zC#`~NwV0y2J-iGRPVLcTpbSAXDyXTwIC@e0@#B~2=`4_=mw9=4bNrVm(P|6?2hZ}qU##Bdgb00XSvhLlHPa4<$=((&CvYR<~Oa7DSs=~G300BegredPUe@I|p zoh3QYD7mzv$7(rzo6!fqM{}}lb=x+fltH2WNJFW zHt+@>ID!3aAC)90Cx>mUcl(XS#l;nLFkve#Bjdi%aUC2B8y8n$X{nO5186<*fB+#- zFr_tk(@=l3eE&=W58GRt&^)6BjTfnqg7Lp$^PFrc^yJ0_2vF%odV9$ntEHaf6H%rp zTrR7uOaj#su(tw8j|G~Tg_}D;j?N!PJXu?7)FwYaKQbof4#-PrFI)n;*n|WE7_j8D zG!i9!1c+n_xP$OtAOCZ=ZqO;J4_1vR#y)QvxRnM1Ka zF3~^*(JoC(i!?WA=L&N4jUKJ6Kue*qB0ZgAXlMvMmYVNW7RM_rz1AmFhK4i-ZM5tI zPbVGAi9khEBG%ok0Q|l!r`fEd4D!Tirh%CTXQH8@ArO30ZO52DXjdP6TKl*pCN7T5 z`B93RDZruQXzA}~dh z2D|{2$Ka5tawlicj7Ysq^70S26An@!IK5#jewwF zRK_95qc%Xripoj`NFqQAfS*>-*U#`PPqAVzFlkImCnqEfh1rFYX9;;nquH3K96?>= zzn=t{d%+lWdbmjfTnsuyrZ-4_Xx~ItMTJ=u5v2=FP9}wJW*N;64hlk}b$2Q!KIQ#z z=c(E#Mn3VgGfCfSu z{Gg+)jm|HaRkB!Txg8xHKY6V(jP7G&WB=&y2OtoJ(#J$bUM4C)czAgi+M-C%5;gIT z+|K#oT#WZIAP2Npj~solGzf$7diOVWDep&I+WR(Sa4oqsWK)@brYHBLj1hjsFCPX6vggvBWWED{Vo9b`G z-PNGnk>wkB_qMh8aY?w zbd;dy(u<^|RXdxlyydLicO&(x3L+KRY>cPg0BIr?f zcXxP1QevV6h)$XMIxyX6A!r)x=R#8=5 z?&fY`1V;$VQny8n-v5l&FSySPzy~-yXy?`3Iy^LV`Nj=q$e3WBiOI-h{QLx{;$%lY z9ByspfmVXCL-&i#jf{*8P)HSV4v-(5f%_t*-6>SckOY<(FR=itn36)~@9&S!GlGuX zZqN!bRvLY4Z3Ryr-MMAb9Pj{yEyAJqF;wh)RTV5Lc+ba5N@#nIpibv3dOa`Bjsd=2 zw#Sgi+%QrYjD>IwM!Mc-oeJ#Mw}}Zf41rcj=e51ja@_0s5r_$7)x!4#;H`c_dV22G z5decy(nUSOsg$1w{Rmv~@$1XzW5BwP>J-6 z40S!dPOyL!51lALM8;C^U;zWcL`$z9f(-;#=mujXudKYdn1-0jCNaV&$wFCycAE}o z17S;(l9DKdeK=sM(6JuGg}X2po@YnyImm_opo%wmqCbEB5K>S)2F`)Fsorh1w7YTBl%cQ9jgkK*RM8AvUW&J9fxN$*H3tcZ@!qH(Qs0u*(u#@94e=(E` z^Ldr0Fb1H!rYS^D9v+BCTS)H%$I*KhZI=hh4UeTJ>s;woMUNRF@VEmZ-dod_5Qvki z+!th3az%T=e4+zk5X1ApC}?>Pj1m+a?C#-VF+gpefX8}XTFNmS@DJe}Y!v3?R1P2N>FKElSligxK==IKo)_FUgWr|z z*|TSm(?&lfQ()m@l2A@!#NZ)m^xMwYh3Bff)Z2&2M78ff3xIwPUn3>%Iqix+9 zeg!N}6oUxt9{~N zMdjt({I0WYv$H1Els@k6U!fnY3LN>U(CM7+BPKlY2`(^#&jD&+7;(LbqJV8f4jbpp zU0nL0n-DliFoQ0ExF+${D+NFSh#CGYEotcM%Y*Gah7i&Z#_S0G+csIdbNJrs9Xpbs zP|zwGd~(mKlQ8M!OPQxr;Kvdfqrm(nF1*Oi?XP!Vkk;`7t+d&K5(SrnmP3}`?jr#ifJP<$E!qEnr(L@6H9zJ}S zFB%>q`HoROIVB~ESsP>~6(oTiKpEIPG*qAk5sYnOS{h4| zDqZlN`Uj&1$$)@Q<1A+rwz=wBTGFsKfPnFd33agb;3{O+_pVbvBm}O~)=pt1-5$40 zfOcY{8oR)cP>gp=PsY!9E@7g%e;HJs(i}xTRhKFCCpC0bc#~|F% zFZ3bLfUDjX7Dk)QfRl=)dZ1AHlHI}zcq$IM}@NheaE^;NCJ)^U@xESnT0>o~S`xbGs-{7=Jx-1-k0Bv+Va52=0$H&HW z&oTjg?*a|MVNv8tD_VtK(<=ygokT=WMRnIE9u(l(WK9elmQ~mUgH+Yf)Qn0?TLZ%HvZu`gR%bx95E-Mn+j9ug2aL7Iwv%S_{z~Z2S83Tqgj`9reHg8LSk0 zcG!8Ng1vd{bsuzxMEY7%|zb25#?C@Ok%nROmDf}#*}oq0ODxLE6*;GAAiRUm|Umw?z3qt2(gM!SX} zkLS_5=$2>&yw{N}-u5%)sb*_*`+^jA?-DS$Hf!x#ulZ}1+ZQ`q_Wz@n3LdK^>j+V? zTyVhkroni?qbgH?ZC^a@yVtC(rPPiWgLs*q^k;g+Rs5UuP@{__V)y zu?;2EAq70C8RSx4e*O?6>2KBY z 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