From f698f16e27ac92a427109d0df15637744a462171 Mon Sep 17 00:00:00 2001 From: QuoteFox <49098813+quotefox@users.noreply.github.com> Date: Sat, 13 Feb 2021 14:44:55 +0000 Subject: [PATCH] Thirst System Thirst System --- code/__DEFINES/mobs.dm | 3 +- code/__DEFINES/traits.dm | 1 + code/_onclick/hud/alert.dm | 10 ++++ code/datums/components/mood.dm | 11 +++- code/datums/mood_events/needs_events.dm | 8 +++ code/modules/mob/living/blood.dm | 4 +- .../mob/living/carbon/carbon_movement.dm | 6 +- code/modules/mob/living/carbon/human/human.dm | 1 + .../mob/living/carbon/human/species.dm | 10 ++++ code/modules/mob/mob_defines.dm | 1 + code/modules/mob/mob_helpers.dm | 9 +++ code/modules/reagents/chemistry/reagents.dm | 3 + .../chemistry/reagents/alcohol_reagents.dm | 1 + .../chemistry/reagents/drink_reagents.dm | 56 +++++++++++++++++- .../chemistry/reagents/food_reagents.dm | 1 + .../chemistry/reagents/other_reagents.dm | 5 ++ icons/mob/screen_alert.dmi | Bin 107438 -> 107778 bytes .../reagents/chemistry/reagents/SDGF.dm | 1 + .../modules/reagents/reagents/cit_reagents.dm | 2 + 19 files changed, 126 insertions(+), 7 deletions(-) diff --git a/code/__DEFINES/mobs.dm b/code/__DEFINES/mobs.dm index c5a2f65a..c7284dc4 100644 --- a/code/__DEFINES/mobs.dm +++ b/code/__DEFINES/mobs.dm @@ -250,7 +250,8 @@ #define POCKET_STRIP_DELAY 40 //time taken (in deciseconds) to search somebody's pockets #define DOOR_CRUSH_DAMAGE 15 //the amount of damage that airlocks deal when they crush you -#define HUNGER_FACTOR 0.1 //factor at which mob nutrition decreases +#define HUNGER_FACTOR 0.08 //factor at which mob nutrition decreases +#define THIRST_FACTOR 0.08 //factor at which mob thirst decreases #define REAGENTS_METABOLISM 0.4 //How many units of reagent are consumed per tick, by default. #define REAGENTS_EFFECT_MULTIPLIER (REAGENTS_METABOLISM / 0.4) // By defining the effect multiplier this way, it'll exactly adjust all effects according to how they originally were with the 0.4 metabolism diff --git a/code/__DEFINES/traits.dm b/code/__DEFINES/traits.dm index f2f52a63..c9e10ea5 100644 --- a/code/__DEFINES/traits.dm +++ b/code/__DEFINES/traits.dm @@ -94,6 +94,7 @@ #define TRAIT_NOFIRE "nonflammable" #define TRAIT_NOGUNS "no_guns" #define TRAIT_NOHUNGER "no_hunger" +#define TRAIT_NOTHIRST "no_thirst" #define TRAIT_EASYDISMEMBER "easy_dismember" #define TRAIT_LIMBATTACHMENT "limb_attach" #define TRAIT_NOLIMBDISABLE "no_limb_disable" diff --git a/code/_onclick/hud/alert.dm b/code/_onclick/hud/alert.dm index 7c135d7b..c0fb234c 100644 --- a/code/_onclick/hud/alert.dm +++ b/code/_onclick/hud/alert.dm @@ -162,11 +162,21 @@ desc = "Some food would be good right about now." icon_state = "hungry" +/obj/screen/alert/thirsty + name = "Thristy" + desc = "Some water would be good right about now." + icon_state = "thirsty" + /obj/screen/alert/starving name = "Starving" desc = "You're severely malnourished. The hunger pains make moving around a chore." icon_state = "starving" +/obj/screen/alert/dehydrated + name = "Dehydrated" + desc = "You're severely dehydrated." + icon_state = "dehydrated" + /obj/screen/alert/gross name = "Grossed out." desc = "That was kind of gross..." diff --git a/code/datums/components/mood.dm b/code/datums/components/mood.dm index 375277ee..21a3c37c 100644 --- a/code/datums/components/mood.dm +++ b/code/datums/components/mood.dm @@ -161,6 +161,7 @@ holdmyinsanityeffect = insanity_effect HandleNutrition(owner) + HandleThirst(owner) /datum/component/mood/proc/setSanity(amount, minimum=SANITY_INSANE, maximum=SANITY_NEUTRAL)//I'm sure bunging this in here will have no negative repercussions. var/mob/living/master = parent @@ -289,7 +290,6 @@ /datum/component/mood/proc/hud_click(datum/source, location, control, params, mob/user) print_mood(user) - /datum/component/mood/proc/HandleNutrition(mob/living/L) switch(L.nutrition) if(NUTRITION_LEVEL_FULL to INFINITY) @@ -305,5 +305,14 @@ if(0 to NUTRITION_LEVEL_STARVING) add_event(null, "nutrition", /datum/mood_event/starving) +/datum/component/mood/proc/HandleThirst(mob/living/L) + switch(L.thirst) + if(NUTRITION_LEVEL_HUNGRY to INFINITY) + clear_event(null, "thirst") + if(NUTRITION_LEVEL_STARVING to NUTRITION_LEVEL_HUNGRY) + add_event(null, "thirst", /datum/mood_event/thirsty) + if(0 to NUTRITION_LEVEL_STARVING) + add_event(null, "thirst", /datum/mood_event/dehydrated) + #undef MINOR_INSANITY_PEN #undef MAJOR_INSANITY_PEN diff --git a/code/datums/mood_events/needs_events.dm b/code/datums/mood_events/needs_events.dm index 962681eb..d9564d73 100644 --- a/code/datums/mood_events/needs_events.dm +++ b/code/datums/mood_events/needs_events.dm @@ -19,6 +19,14 @@ description = "I'm starving!\n" mood_change = -15 +/datum/mood_event/thirsty + description = "I'm getting a bit thirsty.\n" + mood_change = -8 + +/datum/mood_event/dehydrated + description = "I'm dehydrated!\n" + mood_change = -15 + //Disgust /datum/mood_event/gross description = "I saw something gross.\n" diff --git a/code/modules/mob/living/blood.dm b/code/modules/mob/living/blood.dm index 968df0c0..4b04639b 100644 --- a/code/modules/mob/living/blood.dm +++ b/code/modules/mob/living/blood.dm @@ -35,7 +35,7 @@ if(bleed_rate < 0) bleed_rate = 0 - + if(HAS_TRAIT(src, TRAIT_NOMARROW)) //Bloodsuckers don't need to be here. return @@ -44,6 +44,7 @@ //Blood regeneration if there is some space if(blood_volume < (BLOOD_VOLUME_NORMAL * blood_ratio) && !HAS_TRAIT(src, TRAIT_NOHUNGER)) var/nutrition_ratio = 0 + var/thirst_ratio = 1 switch(nutrition) if(0 to NUTRITION_LEVEL_STARVING) nutrition_ratio = 0.2 @@ -60,6 +61,7 @@ if(satiety > 80) nutrition_ratio *= 1.25 nutrition = max(0, nutrition - nutrition_ratio * HUNGER_FACTOR) + thirst = max(0, thirst - thirst_ratio * THIRST_FACTOR) blood_volume = min((BLOOD_VOLUME_NORMAL * blood_ratio), blood_volume + 0.5 * nutrition_ratio) //Effects of bloodloss diff --git a/code/modules/mob/living/carbon/carbon_movement.dm b/code/modules/mob/living/carbon/carbon_movement.dm index 8e6c888c..7d3c22b6 100644 --- a/code/modules/mob/living/carbon/carbon_movement.dm +++ b/code/modules/mob/living/carbon/carbon_movement.dm @@ -40,6 +40,8 @@ if(HAS_TRAIT(src, TRAIT_NOHUNGER)) nutrition = NUTRITION_LEVEL_FED - 1 //just less than feeling vigorous else if(nutrition && stat != DEAD) - nutrition -= HUNGER_FACTOR/10 + nutrition -= HUNGER_FACTOR/3 + thirst -= THIRST_FACTOR/5 if(m_intent == MOVE_INTENT_RUN) - nutrition -= HUNGER_FACTOR/10 + nutrition -= HUNGER_FACTOR/5 + thirst -= THIRST_FACTOR/10 //running around depleats thirst more so. \ No newline at end of file diff --git a/code/modules/mob/living/carbon/human/human.dm b/code/modules/mob/living/carbon/human/human.dm index 100e9f43..b8b62a8b 100644 --- a/code/modules/mob/living/carbon/human/human.dm +++ b/code/modules/mob/living/carbon/human/human.dm @@ -100,6 +100,7 @@ stat("Unique Identity:", "[dna.unique_enzymes]") stat("Overall Status:", "[stat > 1 ? "dead" : "[health]% healthy"]") stat("Nutrition Status:", "[nutrition]") + stat("Hydration Status:", "[thirst]") stat("Oxygen Loss:", "[getOxyLoss()]") stat("Toxin Levels:", "[getToxLoss()]") stat("Burn Severity:", "[getFireLoss()]") diff --git a/code/modules/mob/living/carbon/human/species.dm b/code/modules/mob/living/carbon/human/species.dm index 7126a794..643161bd 100644 --- a/code/modules/mob/living/carbon/human/species.dm +++ b/code/modules/mob/living/carbon/human/species.dm @@ -1243,6 +1243,7 @@ GLOBAL_LIST_EMPTY(roundstart_races) if (H.nutrition > 0 && H.stat != DEAD && !HAS_TRAIT(H, TRAIT_NOHUNGER)) // THEY HUNGER var/hunger_rate = HUNGER_FACTOR + var/thirst_rate = THIRST_FACTOR var/datum/component/mood/mood = H.GetComponent(/datum/component/mood) if(mood && mood.sanity > SANITY_DISTURBED) hunger_rate *= max(0.5, 1 - 0.002 * mood.sanity) //0.85 to 0.75 @@ -1261,6 +1262,7 @@ GLOBAL_LIST_EMPTY(roundstart_races) hunger_rate = 3 * HUNGER_FACTOR hunger_rate *= H.physiology.hunger_mod H.nutrition = max(0, H.nutrition - hunger_rate) + H.thirst = max(0, H.thirst - thirst_rate) if (H.nutrition > NUTRITION_LEVEL_FULL) @@ -1296,6 +1298,14 @@ GLOBAL_LIST_EMPTY(roundstart_races) if(0 to NUTRITION_LEVEL_STARVING) H.throw_alert("nutrition", /obj/screen/alert/starving) + switch(H.thirst) + if(NUTRITION_LEVEL_HUNGRY to INFINITY) + H.clear_alert("thirst") + if(NUTRITION_LEVEL_STARVING to NUTRITION_LEVEL_HUNGRY) + H.throw_alert("thirst", /obj/screen/alert/thirsty) + if(0 to NUTRITION_LEVEL_STARVING) + H.throw_alert("thirst", /obj/screen/alert/dehydrated) + /datum/species/proc/update_health_hud(mob/living/carbon/human/H) return 0 diff --git a/code/modules/mob/mob_defines.dm b/code/modules/mob/mob_defines.dm index a5edbb0d..9c07bffc 100644 --- a/code/modules/mob/mob_defines.dm +++ b/code/modules/mob/mob_defines.dm @@ -57,6 +57,7 @@ var/dizziness = 0//Carbon var/jitteriness = 0//Carbon var/nutrition = NUTRITION_LEVEL_START_MIN // randomised in Initialize + var/thirst = NUTRITION_LEVEL_START_MIN // randomised in Initialize var/satiety = 0//Carbon var/overeatduration = 0 // How long this guy is overeating //Carbon diff --git a/code/modules/mob/mob_helpers.dm b/code/modules/mob/mob_helpers.dm index 91f68cd3..540c9431 100644 --- a/code/modules/mob/mob_helpers.dm +++ b/code/modules/mob/mob_helpers.dm @@ -528,3 +528,12 @@ It's fairly easy to fix if dealing with single letters but not so much with comp //Can the mob see reagents inside of containers? /mob/proc/can_see_reagents() return stat == DEAD || has_unlimited_silicon_privilege //Dead guys and silicons can always see reagents + +/mob/proc/can_read(obj/O) + if(is_blind()) + to_chat(src, "As you are trying to read [O], you suddenly feel very stupid!") + return + if(!is_literate()) + to_chat(src, "You try to read [O], but can't comprehend any of it.") + return + return TRUE diff --git a/code/modules/reagents/chemistry/reagents.dm b/code/modules/reagents/chemistry/reagents.dm index 4aabd82d..61d32c29 100644 --- a/code/modules/reagents/chemistry/reagents.dm +++ b/code/modules/reagents/chemistry/reagents.dm @@ -53,6 +53,9 @@ GLOBAL_LIST_INIT(name2reagent, build_name2reagent()) var/chemical_flags // See fermi/readme.dm REAGENT_DEAD_PROCESS, REAGENT_DONOTSPLIT, REAGENT_ONLYINVERSE, REAGENT_ONMOBMERGE, REAGENT_INVISIBLE, REAGENT_FORCEONNEW, REAGENT_SNEAKYNAME var/value = 0 //How much does it sell for in cargo? + //hyperstation + var/hydration = 0 //does this hydrate your thirst? + /datum/reagent/Destroy() // This should only be called by the holder, so it's already handled clearing its references . = ..() holder = null diff --git a/code/modules/reagents/chemistry/reagents/alcohol_reagents.dm b/code/modules/reagents/chemistry/reagents/alcohol_reagents.dm index a9f9bb48..32e97f0a 100644 --- a/code/modules/reagents/chemistry/reagents/alcohol_reagents.dm +++ b/code/modules/reagents/chemistry/reagents/alcohol_reagents.dm @@ -14,6 +14,7 @@ taste_description = "alcohol" var/boozepwr = 65 //Higher numbers equal higher hardness, higher hardness equals more intense alcohol poisoning pH = 7.33 + hydration = 1 * REAGENTS_METABOLISM /* Boozepwr Chart diff --git a/code/modules/reagents/chemistry/reagents/drink_reagents.dm b/code/modules/reagents/chemistry/reagents/drink_reagents.dm index 9d401a33..0789df9f 100644 --- a/code/modules/reagents/chemistry/reagents/drink_reagents.dm +++ b/code/modules/reagents/chemistry/reagents/drink_reagents.dm @@ -3,6 +3,8 @@ ///////////////////////////////////////////////////////////////////////////////////////////////////////// /////////////////////// DRINKS BELOW, Beer is up there though, along with cola. Cap'n Pete's Cuban Spiced Rum//////////////////////////////// ///////////////////////////////////////////////////////////////////////////////////////////////////////// +/datum/reagent/water/ + hydration = 10 * REAGENTS_METABOLISM /datum/reagent/consumable/orangejuice name = "Orange Juice" @@ -12,6 +14,7 @@ glass_icon_state = "glass_orange" glass_name = "glass of orange juice" glass_desc = "Vitamins! Yay!" + hydration = 4 * REAGENTS_METABOLISM pH = 3.3 /datum/reagent/consumable/orangejuice/on_mob_life(mob/living/carbon/M) @@ -28,6 +31,7 @@ glass_icon_state = "glass_red" glass_name = "glass of tomato juice" glass_desc = "Are you sure this is tomato juice?" + hydration = 4 * REAGENTS_METABOLISM /datum/reagent/consumable/tomatojuice/on_mob_life(mob/living/carbon/M) if(M.getFireLoss() && prob(20)) @@ -44,6 +48,7 @@ glass_name = "glass of lime juice" glass_desc = "A glass of sweet-sour lime juice." pH = 2.2 + hydration = 3 * REAGENTS_METABOLISM /datum/reagent/consumable/limejuice/on_mob_life(mob/living/carbon/M) if(M.getToxLoss() && prob(20)) @@ -59,6 +64,7 @@ glass_icon_state = "carrotjuice" glass_name = "glass of carrot juice" glass_desc = "It's just like a carrot but without crunching." + hydration = 4 * REAGENTS_METABOLISM /datum/reagent/consumable/carrotjuice/on_mob_life(mob/living/carbon/M) M.adjust_blurriness(-1) @@ -80,6 +86,7 @@ glass_icon_state = "berryjuice" glass_name = "glass of berry juice" glass_desc = "Berry juice. Or maybe it's jam. Who cares?" + hydration = 4 * REAGENTS_METABOLISM /datum/reagent/consumable/applejuice name = "Apple Juice" @@ -87,6 +94,7 @@ color = "#ECFF56" // rgb: 236, 255, 86 taste_description = "apples" pH = 3.2 // ~ 2.7 -> 3.7 + hydration = 4 * REAGENTS_METABOLISM /datum/reagent/consumable/poisonberryjuice name = "Poison Berry Juice" @@ -96,6 +104,7 @@ glass_icon_state = "poisonberryjuice" glass_name = "glass of berry juice" glass_desc = "Berry juice. Or maybe it's poison. Who cares?" + hydration = 2 * REAGENTS_METABOLISM /datum/reagent/consumable/poisonberryjuice/on_mob_life(mob/living/carbon/M) M.adjustToxLoss(1, 0) @@ -110,6 +119,7 @@ glass_icon_state = "glass_red" glass_name = "glass of watermelon juice" glass_desc = "A glass of watermelon juice." + hydration = 4 * REAGENTS_METABOLISM /datum/reagent/consumable/lemonjuice name = "Lemon Juice" @@ -120,6 +130,7 @@ glass_name = "glass of lemon juice" glass_desc = "Sour..." pH = 2 + hydration = 4 * REAGENTS_METABOLISM /datum/reagent/consumable/strawberryjuice name = "Strawberry Juice" @@ -128,6 +139,7 @@ taste_description = "strawberry" glass_name = "glass of strawberry juice" glass_desc = "Refreshing seasonal summer drink." + hydration = 4 * REAGENTS_METABOLISM /datum/reagent/consumable/banana name = "Banana Juice" @@ -137,6 +149,7 @@ glass_icon_state = "banana" glass_name = "glass of banana juice" glass_desc = "The raw essence of a banana. HONK." + hydration = 1 * REAGENTS_METABOLISM /datum/reagent/consumable/banana/on_mob_life(mob/living/carbon/M) if((ishuman(M) && M.job == "Clown") || ismonkey(M)) @@ -200,6 +213,7 @@ description = "The juice of a bunch of grapes. Guaranteed non-alcoholic." color = "#290029" // dark purple taste_description = "grape soda" + hydration = 2 * REAGENTS_METABOLISM /datum/reagent/consumable/milk name = "Milk" @@ -210,6 +224,7 @@ glass_name = "milk drum" glass_desc = "White and nutritious goodness!" pH = 6.5 + hydration = 2 * REAGENTS_METABOLISM /datum/reagent/consumable/milk/on_mob_life(mob/living/carbon/M) if(HAS_TRAIT(M, TRAIT_CALCIUM_HEALER)) @@ -231,6 +246,7 @@ glass_icon_state = "glass_white" glass_name = "glass of soy milk" glass_desc = "White and nutritious soy goodness!" + hydration = 2 * REAGENTS_METABOLISM /datum/reagent/consumable/soymilk/on_mob_life(mob/living/carbon/M) if(M.getBruteLoss() && prob(20)) @@ -247,6 +263,7 @@ glass_icon_state = "glass_white" glass_name = "glass of coconut milk" glass_desc = "White and nutritious goodness!" + hydration = 4 * REAGENTS_METABOLISM /datum/reagent/consumable/coconutmilk/on_mob_life(mob/living/carbon/M) if(M.getBruteLoss() && prob(20)) @@ -262,6 +279,7 @@ glass_icon_state = "glass_white" glass_name = "glass of cream" glass_desc = "Ewwww..." + hydration = 2 * REAGENTS_METABOLISM /datum/reagent/consumable/cream/on_mob_life(mob/living/carbon/M) if(M.getBruteLoss() && prob(20)) @@ -279,6 +297,7 @@ glass_icon_state = "glass_brown" glass_name = "glass of coffee" glass_desc = "Don't drop it, or you'll send scalding liquid and glass shards everywhere." + hydration = 2 * REAGENTS_METABOLISM /datum/reagent/consumable/coffee/overdose_process(mob/living/M) M.Jitter(5) @@ -304,6 +323,7 @@ glass_icon_state = "teaglass" glass_name = "glass of tea" glass_desc = "Drinking it from here would not seem right." + hydration = 2 * REAGENTS_METABOLISM /datum/reagent/consumable/tea/on_mob_life(mob/living/carbon/M) M.dizziness = max(0,M.dizziness-2) @@ -324,6 +344,7 @@ glass_icon_state = "lemonpitcher" glass_name = "pitcher of lemonade" glass_desc = "This drink leaves you feeling nostalgic for some reason." + hydration = 4 * REAGENTS_METABOLISM /datum/reagent/consumable/tea/arnold_palmer name = "Arnold Palmer" @@ -335,6 +356,7 @@ glass_icon_state = "arnold_palmer" glass_name = "Arnold Palmer" glass_desc = "You feel like taking a few golf swings after a few swigs of this." + hydration = 4 * REAGENTS_METABOLISM /datum/reagent/consumable/tea/arnold_palmer/on_mob_life(mob/living/carbon/M) if(prob(5)) @@ -351,6 +373,7 @@ glass_icon_state = "icedcoffeeglass" glass_name = "iced coffee" glass_desc = "A drink to perk you up and refresh you!" + hydration = 2 * REAGENTS_METABOLISM /datum/reagent/consumable/icecoffee/on_mob_life(mob/living/carbon/M) M.dizziness = max(0,M.dizziness-5) @@ -370,6 +393,7 @@ glass_icon_state = "icedteaglass" glass_name = "iced tea" glass_desc = "All natural, antioxidant-rich flavour sensation." + hydration = 2 * REAGENTS_METABOLISM /datum/reagent/consumable/icetea/on_mob_life(mob/living/carbon/M) M.dizziness = max(0,M.dizziness-2) @@ -389,6 +413,7 @@ glass_icon_state = "glass_brown" glass_name = "glass of Space Cola" glass_desc = "A glass of refreshing Space Cola." + hydration = 2 * REAGENTS_METABOLISM /datum/reagent/consumable/space_cola/on_mob_life(mob/living/carbon/M) M.drowsyness = max(0,M.drowsyness-5) @@ -404,6 +429,7 @@ glass_icon_state = "nuka_colaglass" glass_name = "glass of Nuka Cola" glass_desc = "Don't cry, Don't raise your eye, It's only nuclear wasteland." + hydration = 2 * REAGENTS_METABOLISM /datum/reagent/consumable/nuka_cola/on_mob_metabolize(mob/living/L) ..() @@ -448,6 +474,7 @@ glass_icon_state = "dr_gibb_glass" glass_name = "glass of Dr. Gibb" glass_desc = "Dr. Gibb. Not as dangerous as the glass_name might imply." + hydration = 2 * REAGENTS_METABOLISM /datum/reagent/consumable/dr_gibb/on_mob_life(mob/living/carbon/M) M.drowsyness = max(0,M.drowsyness-6) @@ -462,7 +489,7 @@ glass_icon_state = "space-up_glass" glass_name = "glass of Space-Up" glass_desc = "Space-up. It helps you keep your cool." - + hydration = 5 * REAGENTS_METABOLISM /datum/reagent/consumable/space_up/on_mob_life(mob/living/carbon/M) M.adjust_bodytemperature(-8 * TEMPERATURE_DAMAGE_COEFFICIENT, BODYTEMP_NORMAL) @@ -476,7 +503,7 @@ glass_icon_state = "glass_yellow" glass_name = "glass of lemon-lime" glass_desc = "You're pretty certain a real fruit has never actually touched this." - + hydration = 2 * REAGENTS_METABOLISM /datum/reagent/consumable/lemon_lime/on_mob_life(mob/living/carbon/M) M.adjust_bodytemperature(-8 * TEMPERATURE_DAMAGE_COEFFICIENT, BODYTEMP_NORMAL) @@ -490,6 +517,7 @@ glass_icon_state = "glass_red" glass_name = "glass of Pwr Game" glass_desc = "Goes well with a Vlad's salad." + hydration = 2 * REAGENTS_METABOLISM /datum/reagent/consumable/pwr_game/on_mob_life(mob/living/carbon/M) M.adjust_bodytemperature(-8 * TEMPERATURE_DAMAGE_COEFFICIENT, BODYTEMP_NORMAL) @@ -503,6 +531,7 @@ glass_icon_state = "glass_red" glass_name = "glass of Shambler's juice" glass_desc = "Mmm mm, shambly." + hydration = 2 * REAGENTS_METABOLISM /datum/reagent/consumable/shamblers/on_mob_life(mob/living/carbon/M) M.adjust_bodytemperature(-8 * TEMPERATURE_DAMAGE_COEFFICIENT, BODYTEMP_NORMAL) @@ -517,6 +546,7 @@ glass_icon_state = "grey_bull_glass" glass_name = "glass of Grey Bull" glass_desc = "Surprisingly it isnt grey." + hydration = 2 * REAGENTS_METABOLISM /datum/reagent/consumable/grey_bull/on_mob_metabolize(mob/living/L) ..() @@ -542,6 +572,7 @@ glass_icon_state = "glass_clear" glass_name = "glass of soda water" glass_desc = "Soda water. Why not make a scotch and soda?" + hydration = 4 * REAGENTS_METABOLISM /datum/reagent/consumable/sodawater/on_mob_life(mob/living/carbon/M) M.dizziness = max(0,M.dizziness-5) @@ -557,6 +588,7 @@ glass_icon_state = "glass_clear" glass_name = "glass of tonic water" glass_desc = "Quinine tastes funny, but at least it'll keep that Space Malaria away." + hydration = 4 * REAGENTS_METABOLISM /datum/reagent/consumable/tonic/on_mob_life(mob/living/carbon/M) M.dizziness = max(0,M.dizziness-5) @@ -575,6 +607,7 @@ glass_icon_state = "iceglass" glass_name = "glass of ice" glass_desc = "Generally, you're supposed to put something else in there too..." + hydration = 5 * REAGENTS_METABOLISM //ice is water dummy, just as good. /datum/reagent/consumable/ice/on_mob_life(mob/living/carbon/M) M.adjust_bodytemperature(-5 * TEMPERATURE_DAMAGE_COEFFICIENT, BODYTEMP_NORMAL) @@ -589,6 +622,7 @@ glass_icon_state = "soy_latte" glass_name = "soy latte" glass_desc = "A nice and refreshing beverage while you're reading." + hydration = 2 * REAGENTS_METABOLISM /datum/reagent/consumable/soy_latte/on_mob_life(mob/living/carbon/M) M.dizziness = max(0,M.dizziness-5) @@ -610,6 +644,7 @@ glass_icon_state = "cafe_latte" glass_name = "cafe latte" glass_desc = "A nice, strong and refreshing beverage while you're reading." + hydration = 2 * REAGENTS_METABOLISM /datum/reagent/consumable/cafe_latte/on_mob_life(mob/living/carbon/M) M.dizziness = max(0,M.dizziness-5) @@ -631,6 +666,7 @@ glass_icon_state = "doctorsdelightglass" glass_name = "Doctor's Delight" glass_desc = "The space doctor's favorite. Guaranteed to restore bodily injury; side effects include cravings and hunger." + hydration = 2 * REAGENTS_METABOLISM /datum/reagent/consumable/doctor_delight/on_mob_life(mob/living/carbon/M) M.adjustBruteLoss(-0.5, 0) @@ -697,6 +733,7 @@ glass_icon_state = "pumpkin_latte" glass_name = "pumpkin latte" glass_desc = "A mix of coffee and pumpkin juice." + hydration = 2 * REAGENTS_METABOLISM /datum/reagent/consumable/gibbfloats name = "Gibb Floats" @@ -708,12 +745,14 @@ glass_icon_state = "gibbfloats" glass_name = "Gibbfloat" glass_desc = "Dr. Gibb with ice cream on top." + hydration = 3 * REAGENTS_METABOLISM /datum/reagent/consumable/pumpkinjuice name = "Pumpkin Juice" description = "Juiced from real pumpkin." color = "#FFA500" taste_description = "pumpkin" + hydration = 2 * REAGENTS_METABOLISM /datum/reagent/consumable/blumpkinjuice name = "Blumpkin Juice" @@ -730,6 +769,7 @@ glass_icon_state = "triplecitrus" //needs own sprite mine are trash glass_name = "glass of triple citrus" glass_desc = "A mixture of citrus juices. Tangy, yet smooth." + hydration = 2 * REAGENTS_METABOLISM /datum/reagent/consumable/grape_soda name = "Grape soda" @@ -738,6 +778,7 @@ taste_description = "grape soda" glass_name = "glass of grape juice" glass_desc = "It's grape (soda)!" + hydration = 2 * REAGENTS_METABOLISM /datum/reagent/consumable/grape_soda/on_mob_life(mob/living/carbon/M) M.adjust_bodytemperature(-5 * TEMPERATURE_DAMAGE_COEFFICIENT, BODYTEMP_NORMAL) @@ -750,6 +791,7 @@ color = "#7D4E29" quality = DRINK_NICE taste_description = "chocolate milk" + hydration = 2 * REAGENTS_METABOLISM /datum/reagent/consumable/menthol name = "Menthol" @@ -771,6 +813,7 @@ taste_description = "sweet pomegranates" glass_name = "glass of grenadine" glass_desc = "Delicious flavored syrup." + hydration = 1 * REAGENTS_METABOLISM /datum/reagent/consumable/parsnipjuice name = "Parsnip Juice" @@ -778,6 +821,7 @@ color = "#FFA500" taste_description = "parsnip" glass_name = "glass of parsnip juice" + hydration = 1 * REAGENTS_METABOLISM /datum/reagent/consumable/pineapplejuice name = "Pineapple Juice" @@ -786,6 +830,7 @@ taste_description = "pineapple" glass_name = "glass of pineapple juice" glass_desc = "Tart, tropical, and hotly debated." + hydration = 2 * REAGENTS_METABOLISM /datum/reagent/consumable/peachjuice //Intended to be extremely rare due to being the limiting ingredients in the blazaam drink name = "Peach Juice" @@ -793,6 +838,7 @@ color = "#E78108" taste_description = "peaches" glass_name = "glass of peach juice" + hydration = 2 * REAGENTS_METABOLISM /datum/reagent/consumable/cream_soda name = "Cream Soda" @@ -803,6 +849,7 @@ glass_icon_state = "cream_soda" glass_name = "Cream Soda" glass_desc = "A classic space-American vanilla flavored soft drink." + hydration = 2 * REAGENTS_METABOLISM /datum/reagent/consumable/cream_soda/on_mob_life(mob/living/carbon/M) M.adjust_bodytemperature(-5 * TEMPERATURE_DAMAGE_COEFFICIENT, BODYTEMP_NORMAL) @@ -844,6 +891,7 @@ taste_description = "sweet strawberry and milk cream" glass_name = "tall glass of strawberry milk" glass_desc = "Delicious flavored strawberry syrup mixed with milk." + hydration = 3 * REAGENTS_METABOLISM /datum/reagent/consumable/pinkmilk/on_mob_life(mob/living/carbon/M) if(prob(15)) @@ -860,6 +908,7 @@ taste_description = "sweet tea with a hint of strawberry" glass_name = "mug of strawberry tea" glass_desc = "Delicious traditional tea flavored with strawberries." + hydration = 2 * REAGENTS_METABOLISM /datum/reagent/consumable/tea/pinktea/on_mob_life(mob/living/carbon/M) if(prob(10)) @@ -875,6 +924,7 @@ glass_icon_state = "monkey_energy_glass" glass_name = "glass of Monkey Energy" glass_desc = "You can unleash the ape, but without the pop of the can?" + hydration = 1 * REAGENTS_METABOLISM /datum/reagent/consumable/monkey_energy/on_mob_life(mob/living/carbon/M) M.Jitter(20) @@ -892,6 +942,7 @@ glass_icon_state = "glass_yellow" glass_name = "glass of bungo juice" glass_desc = "Exotic! You feel like you are on vacation already." + hydration = 1 * REAGENTS_METABOLISM /datum/reagent/consumable/wockyslush name = "Wocky Slush" @@ -902,6 +953,7 @@ glass_icon_state = "wockyslush" glass_name = "Wocky Slush" glass_desc = "That thang bleedin' to the-... ya know I mean?" + hydration = 3 * REAGENTS_METABOLISM /datum/reagent/consumable/wockyslush/on_mob_life(mob/living/carbon/M) M.emote(pick("twitch","giggle","stare")) diff --git a/code/modules/reagents/chemistry/reagents/food_reagents.dm b/code/modules/reagents/chemistry/reagents/food_reagents.dm index 45afb498..988c0133 100644 --- a/code/modules/reagents/chemistry/reagents/food_reagents.dm +++ b/code/modules/reagents/chemistry/reagents/food_reagents.dm @@ -18,6 +18,7 @@ /datum/reagent/consumable/on_mob_life(mob/living/carbon/M) current_cycle++ M.nutrition += nutriment_factor + M.thirst += hydration holder.remove_reagent(type, metabolization_rate) /datum/reagent/consumable/reaction_mob(mob/living/M, method=TOUCH, reac_volume) diff --git a/code/modules/reagents/chemistry/reagents/other_reagents.dm b/code/modules/reagents/chemistry/reagents/other_reagents.dm index 69934a44..189c8d94 100644 --- a/code/modules/reagents/chemistry/reagents/other_reagents.dm +++ b/code/modules/reagents/chemistry/reagents/other_reagents.dm @@ -250,6 +250,11 @@ glass_name = "glass of water" glass_desc = "The father of all refreshments." shot_glass_icon_state = "shotglassclear" + hydration = 5 * REAGENTS_METABOLISM + +//hydration +/datum/reagent/water/on_mob_life(mob/living/carbon/M) + M.thirst += hydration /* * Water reaction to turf diff --git a/icons/mob/screen_alert.dmi b/icons/mob/screen_alert.dmi index fef57630e29c20ef251f141154b59e66290ed380..1d9d5a373c80bc9c5a2d5eaa0f09f97ba63abe3c 100644 GIT binary patch delta 21897 zcmV)bK&ij3#|DDR29P9wDSA{`bVOxyV{&P5bZKvH004NLotVLH<2Ve4&&g95GuL1- zNt<@(kjtWjMGrHtATSawX(NjsimoU7^m}NLxSe`M7rrFG_fs_Wo1*=>`Rm)?k3X7+ z?~m&zgLDb7;2f zRm;%f^Y1rkrk?|1R?_tAtRw}yK7nY{5c*XonQ7EfUv$`3hwXIOjSjojVS62Rr^D{w z$9C(L!vyE%(A;nC-)R1_LzuNvB^0e@~Msv_LQ(5(k8N}m|I#_Z%b(=_C&GY>|ZPDmba8# z-SL)^n=$-k`J2tnL^32X1#_u41&1vRX~rPi^(v5*o}@W6yZz?t)FF-s?-fPYZK2~K zpX$ZH?ugEzqvJnlXS1H*y__wkR3%%eM^iQXmg!$bm-kG6rRb=7RXkHE^`__tU>6}9 z3%LkFlCVG%fPMY;FML!l5x|}lJ_=w@F?;CkvS%?wugD?#&@+}YFxDU3DLu10^Vt;R z8En0hfkcrBN!=cSWMKmdL-vYB9y3VD__G+yj>c~Gq?u?EsdhWjXfdUF1zx~<6<)x4 zC0^}UqS17JXoHDa&~uctDy26XRd#PQ_2)U!sQ2syUTE1a=4dkT`>LrG;ruv^fgb&-gj@?C7n~&Q8~J+8!9vxy1Te(9?))82#MovcE2|+q_&? zIS(1#^H5Nq*(Y$_SrfRvWv_oIW#WdeO|N_b%CzyX0_({01@;;wRk!){25e3Y>@In~BkY}&@&^fO^oBXpz000XYEe(R{kd+f3*m}IO*8xdF`Yor+Dtb$$b(kne^J)Y2y&*IkGW;)$`&U9;kTwlX;lT zL(k~T*UoAXX1B$8Xn&$F2C-i`rSxBA1b$jmLox`MH<{;Y*TsY!oO0=$7s()~2yMt?Q@mtkHhFGVU z=-D3XS$=*gNjL4-K%0VNLUqJ!B723cPiQtJ1T9c^jlxcv=y;!%ZF+JBAR3H%AncoBjv8soqV2Na#R zO1?Hqq_o`$RF$?I+p*2_2Br)uCnc-LvuAX8k$8`vPOsF7-e*ITjXOQ&HG|g=iGin} z?g1q8Jj5^J(We#>^UBB{`~&LXW3c-n!iiSO&6WNO6Z>J&AA%|fRb{XSB=XV&p2+NB=6Yhjd?fDvJ1^7=vaW5q1!pc8^Y&xjv@3JOS8S++MBHl6WS5*Zrr`2nm z-2*>KMVeu>7s8u5L@CpcDNhiwJd&{}bxu7kk$-Bk#WLMg7Kh=?ocymE0W2K{&#xK*3>%ozh=H7l~?@RkB4Hs!ajgk!*ALMY`gBdt{KrNsbY~{ttq({Rh9*3*-+j1#=km6 z`Okja$H`{1r$hp0gRM2br4R+>#pm{UPNO@n<^abl0w|J1F5xQ&H*Jg zYYSD>g0?`8Y2@g?^KZRL9vxi9pSKKP7k>n>mY;g@V4x~LX0pYB`&DM~lAz9us=z9V9@y!mXH|L0)-?)} z;EW2o_#&j=!i!IDVP5+Lv)Vm!MVIGywe#H8LEinRO^j{c$%;cAsA@rXDMo%QG=EGHO{uJCy!=VZhd;pJecPD%MyQ_vc?P%?oDh_!2+WI$0E7gH zFO^E9Ck(Ps({!~TmqUUCNXzV?`hVyPk5`T#Ds^ zB|P+?KDum$np-`ryv(2{_4BD7Ip|Dj-wk#>rkJp^BPup|m1`T??uzR1*%vov2DV?fpUo8S~ z3de}JbHXbT4@35Z*or0Wv5L&PkhR5-PH`)?uwSo`27X`DBY-1s;^uU5!g9dh^?>ZWo3T#OQ$OHns-2Vn7hB@vg!BIteIa8y!P?Q zsGOjX_;v7`Gy>C|y@s#5u4}?|amr;Ee;vb@hc{YCwz8GoBhOJ>NF4iDK=@n;mgOQ08m`VN#I%j z)?Xdel4oMer`>;8d8ywSZV0TQjLyXFH;F2(aGSw-{6nzd1AoLi?e{$5j|1(dwR!iC^p{ymEeC% zT743WRMFDOz(f2|69fgss#c1JgkT8}U4*mnEd)otfwF|>M%x*@znTk<_HblooGYRZ zp3El|>7sK)Xn$NN6uJcN2fs>4mvzaxCeX?#HMU#jYOj{492TXN8d3+Or|NQZA$t@P zsQj#DUaglFlkQctB1A6$KQseryO~ey>t)2Bfu)4&=j`T==T~xGco#%x(PCz zniSeD6arh|BE`D%6@3G~m;ISGRD0G)kDv9n$(Xu?hJP#Hqry^(9?;>S5IIEM>}$NX zrbw<~`+t=CodEC^R$M5yy^%!Q2e|gVf5Plmk9^?Lq|;nMH%qVR2U!6Ln{q~AA*Ak9 z6l;NIShyC32Ls2vB*BY4_Hb)2@z}V@K3X#6+dmn!atN$IsrrQ`<{#0)_(93H&-JT= zR)svRP=B_df)vzTLp=0 zAhA$FL#cofS7ohHrRL|+z%&0hxIbz+TR$Nuzd8h_=wcJ}@B+)WqG`$ly8zMCF9C*AWj(sgTNXEOqp z-+ylC?Pf`98p{RiYfCx7B6=LRr*GW#SEo@y05sow@A~eWZtAKFIn)_Nxo{@$+_a}Z z`)wZw;PAKq`qiddfl}D6O$`AxLBIpH&1J{=htxjrBeY8YxXZ=&OxjU32+nV;-w<9~w1JuJKaQ?UJQFs2|Wr1Mbq5X{;jMDoBx ziem%d&ag_Uqmn0U%tberTB>f9nzfU_i*h|zi$lNq$~B)W-}=)J#(sF?P1!~Hi*&ho z6jVt_KM8f0mmvNEb8CTK!x7zppGIl9241V1l z-1K4IxH1CnQ#`qQ78kbkzzm1kjmwd}Hz2$L83y&Z@bp&Ak|?kOf|z1>tIo7vB-Pi$2Y>)l~gON{^V^=ftw zwelaEtDumC!N;+JG?rKSn}3TB?j&%3WeF;sq&T(DDYRT$PQ+U!RJxi_WG{IJROIBx zI zmpgZM<;4BZVF((l)$s*e_|5~%_`R#o^yUG+^X;z!oU%snTE-t9NK@ekk}z=APBzob zop7AZ^E8~?58!kop!$xph#nkdU0a4~1wZ}v1#CMW32c1fnq8b_5&EHBSdNyZY%C+&d%+4SPxwL=0XSKfEGydE`Nm0M~>JJ&0OmxF1oUi zQ!Xk#--H4S__-p~Ajr=x)Gdo4+zpFTH0m_Z4mYv(n(I-q0u0@YwAqxp3<(Q*b}81r zMeue)IShUK+zEe>AP9+C^+A8ORls6Ifg?-QAlh$|$k0w}xqnO*BdblKSSGNmfe}UF zNx^RJLB@ZC+J7U+Y=v(Hj2?*6=tPjvOE5G_tmdn%dNYV9R?ZY^Y$zsSqC3E8w5(V{ zTq}!;tQ5Ps6)n}cDy&?dlRd*dR-t)i5Ycl{r9&z>)T^gLj)|Zl`A)EM?}MCyz17hC zIL{9yc+dPD;7mZr7Xgc6-Ap*QH%GAI+&7kK7SnT%{PCdtRwNHjb-&6lsupkW4jt=nK&J2~>6f9Za#z z?nRAV5BwgY^O6BZkENaEdb%V@OXd}qzHt1-AcpPyqWh(s;e=*}1h;<0n@IfT`dhC6F zLtz-igQ+AmE`wlPlk*Kd4}_1Y0Z8rA1@8$n6_1iUX2fo?IUc$nf6mUCgFjV~{^@tW z$K^}T+7s#&oUJP7mx%xtj(-+68l`3NVzOgnCw~k;VQPx%mKGZ3&IMp zix*SQ=g%4iyk<7gS4#t3aKQz<>-aLj=FOYWIqunKpCzBqzsx7}3JB%HxgGn{u{kqp z_`$b#0LRlh$Cdea9#{sz55B#FTQ<(%q3soK{+5mHuR4Ctj2d?ApX8GD&AFfN7z&?b z3V$bd0#Cm`9l>e+08TanOIp(S-2HUf#U+(wF}X;FM#7XZdZnW3kr@=+HjJAixH8 z*fzr=v>#8=sn!1aSfi2D7h`@^v@A3snSZ+|Odf>gI~Ao3LczYA*dI?~@7RfM%u^Nm z4F2F}kUK6WxAgr4@%K|0-NM>Gcp6qidK8K~A-_aX9Wf+Ae$=v!HG2hhRU0Hm8eaTN zXmG{r%1={}AI@CqfddVpAcg~M0UZD(!81?{&%_>l96IVS)@&S^&8AD6@E-UNEPwk5 z>O6zj(LkzojCvy#>WyKcC#4u`6{&!UI@;wh1n6#&#ob~?O|kU0_7TLQk4bc0x%5qi@`Bq zCWN39DtbdZQ)r!bU{;AOpLOcuc2IEeS>*BJvdyP&ScnO~Q znr7`k*WnJ0AZ=5a(XaF1<|>S8BNN<2aeNTB{|P2aNotya2jKC4(yY6}aClg;@; z{65X>uYR2RI)xtVBhuf+m)`kNV$bZOFmRashL7Wi<}g0|Jni!Z-X^q+g1;BWj%s`@ zG+gP2VzuHPc*Gv-c$2B|eMNahm6>TmYAG-XbsZ*_eo7ZI-O6+3VD&w$ShPks(ynQ# z-hhcTVB9KnZi0V%S1WcdOMkggN7;gMX(7kzze&!z864r*!(dMd_B8>$DOjHq=BFk4V=pe{OB(~dYlFH*NXt2AL=h zw)e%RjlkK)&zVuf>UnXL=-1RW?3K8CPUrlGmyLiOQk;JpchJ(d3~z80>drrmBp04} zzr`Cibos#Ie4Y`@qJPR5yqYjfRRWaFs|`QAQfh>_Id$JoY?kZ zrKk?sH06ra7{gUTK)zU{{_@Ma{BM}$nSZhRT34524J-YQvHNvq-QRib0}q0#QiPsS zZ2i(!RwfL!AB2gIfW-%i|4-00BRF6ABXaja=x<=g#Xt!9?tfM!Q^NkDuy~c7+Vg}x zQC)*oAN8F0ETtnUB8%3P>P?0lv;wlK!kztk0D(zJ90Ha>tq0>AAjtu=2V`ONb70j# z{MrgR849v{N10az48xrDhL8iHCSk#1owbsFGSP)=y$*!~6u~UONEuJBQ;o7;7v>a; zs1&+pt_c^TI)9klg%w*O=&b=SZrQ`qDj^=8KqkQq{1}<9kfPx2h0LA8)N;k#R=@?@ z0-YBqKw~xjkr-AUT~1z$Q$17SYQjLP#!M2+KOyPjXV_E!CYI_JRJbH|X@ZjxZte*?v)q<`a#2XqUb6+>6@G$is|2QKbf`5^)=8{f<-C)~Le?9c=5Vrku zcn|G_;_VV*8<111s5SNGJ;fv=F!nC_kiA;<*~_G5PK&h6X)F_L5`u!DzNfg#6$b8k zAC4y!_CeW)VEk>EHgM+cCf@&DyfG-xQ?y?$a1@4~QZ$7G`)Wh|(^knFf(b|GlCzA( z0KOU$uYYN!RFR`XP*nxFK~*~Xw3Vt^Y$6j=PNAjKi?IMMtP=Kq;=_dM1nX9zc!xqQ z0B4av67=1VkiQ280?m~l7T5*hq=G(SOvBQ-s+b5%xV)PnTcz`D^`_dZm%KH{xXR{~ za=KTp!#`7*Z`obx0DCq=aITvCUv>>(qPLesV}B#@=X@59f0lSlJ>`7q-J=pe~pPtoTj0`0lebIaU zZ{WzAStN_cuA+NriJkEC${ZQBvv2rHVG#jPfZFZHdk6dixEdPXPi2>~C#WcJuYbbi z1P;J(57@VXE<&4)VWx>$^HC}T1dzE`6)B5r-u3DdhUeV4^}9G;h67O?#a_wxh)}6|S}E24{hq05A+=R1gl43^(nHpAzq`{{hx|!ZV+M@0ndW8seg*>BcM9L z6&O5RnSXW+8ZQuPQ&787AuCKM`;ac%5#!qH2uGsImQIOG?WR;clf2m2r61!OEfYuf zS>sD)NlRP2oJ@2mO8pSJSjZkxL=pnu2R8+h1i}h+6s(lc_&UYqYYpn3A^&=aqAD6@LDW_1F$)u!v4~7W>&lb?3oQ|H;?cp2q`;1pT(nl0t!qF^sse z?c0Ogx@pD!!{_u_B%X?s$27R{?b-;U6&j(bTt>7euQgj@F>cCc83kk?pLWI9gFCIX zofRh;4MG#U)Ku5q(SLm{GxMuP1DItDN4F}Tep<2Q%|aok$o)GwHY|OkkcdO^NySKu zV*D>~lU1bb4SL7C#o0WNdM`-90RgB^=pZ#i6`5)Qmzg@RY z9A~a?c=2nR%ieCt#(&_Y`xMR9u(MauxK^0c zDCh(n`iVW!7z*O07nI+4wTY91VuuRG$F#R@?tj7k|aer?6ruw_sEz7L_>lltXzPV#+`R7%){65_0Q+vZ53dmR~QJR?uNV zx)p^yq|1P#NYopgC|tVN@bj;0%C=(dgpfLHr4HR^k7P!5IZ|(&;%v&{5D|KTqd*d* zRzX-kuk!xzgWa)o`KzjXu~Tv*;JOVeQnS>nOZO<+*MA6)Zq>|MCmiWf%;M z?S5#9LO3di^cPk?BY!VlC#Qkjs&c)&IFMkyQjAUVc!)s^u{8cgC67p>FFTQ)j zu6;K>c1Hi+9UC7$rO)rV5O~59Z`;Py9e)tH$%d2r3FJ~LvY<81+nxP|hfb2e`*pAD z^6KkxJddL9lhvA%Wg*5eX2rHEV<-WZ2%ZSFN>Q>j7$FcrD}@+?u`E;&V6;ZGCT2`! z1AiFc2>6yoN-4&aq9X`+G#o}=_qwi2f1h=U8=R@FcZZKGd}F>fT2Hv~GO3=ME_(|u zqfon0BHi1aaS9@}m#CcEBC-6aF12nlk*1a)o(SVgps+4;#t!e6V&i-huWdAugI`q{ zXQt-7HrVSJuMir#q&3&xyttGwp5TuW6z;^& z#dUf3u+FBB>2gbT5U&;q`yD1!lSW@s6de!qTLF-hCf+KYz&^JwKMl#)VJ=Hc7w%>4&}Fc7{W3V%NIsEEMmsUme%Jcx^7(#K$L+{e$P^=%apkDukspK(&7bEr#FrDQnTKB9 zqKfr1O;p8|Djtw>RgrMx>jl-VkTzgGun6q^;^_!_;wh^%!$^W+pO9lL%?>nRY z&se$6OM?223;met6C`n}0e^Tc9l5g89lqAweX9OA(fR9_c04L*YrJxt@KCab{zf4B}ixw?n$BrGZ7y%6Rm1&Ga zyxMt9p8BtYJv(w|w1hla{>lA&H@MlV#KNtFT57%c z=r%plbfsy^52^Bk3;p_;YyG-CcR53YF+CMJN^#*rufv|J9d*A!lt#@ktiQs~Qsw_W z1AK4b7kV<$Zo-)Zx+sF=6n?VNL?R914)y44X+W1lO@7k8D1UH*I1)@^R7ojikm`=W zSvKFV<4NTl3-r|bx0gCeSu-R?d~NXUIw>S+~e$VzN# zOcmpoi>nVRxPJ;H1VcYoV@=B>>BTVRd(340GKq2*T>Am<6GZsaa*tX#`KT%leNRuu z*GPCy5Hyr(#W!)0MKk<*(+)uqlWW)IoJ)D)K3$X=k?I)|vszG*xY(`XAYnIQwZuyC z)M1r>@VW4j1y^}>b{Hj1im4AV)s=Emv->?y*Qn^qzklS zm8?DAYk%9l-Rh5JO>F6VO^b+-eO8yUqAKpD|!8= z$oLI#0o}{RryiJA)pf5vk6(EW;MMj3oGk)aw0~&P+3$T4n!+#V<+D@&wcbC#;x#eo zN|S7K7c{sOz42#Juzp&$Tb7`XoWu1arV+1B&b(A-=!Du;KJCp#C1qMP13zAAfI zm7jYobhMUIsOkD3!7gAFqL+%B2pK2!g3cVuSh@TFUgrwaRJ~MJmoP!Y3KP>tcz7G9wnRd)T5;Vvu^MNXC^5*4sPcga z?TOWI^O{k>YAP(J0mxQRO+cP87W1&5=9cm=?4VGigZkz1NZ$cJ-~D}##p(*F2S8ukjBIX5|YO>-h44dOBYzJ(EWlR!Ki(h z*a8VZ_mb6{C<*nOgNQzW4qu2JGJn|He(d&D5l{*fl;a{HR~+hq=b?Y8r^FU1S^PNSq_UVh(2qRCDzb6CE;6I+}6BZ*i=2f1x<=ze&~4H*uW+s|KrPLfl!` zc+GwRpK9F9F!^Ag5}i`oT`5-fh$ zqh@HRugvY~8+YB&^7ExP58ZG|8^^`z8+U!VZt$%2U$>`kJgw#9#D6n)JydsIeXy@k z-66}Y8)W1jy)iYWd)lhA zdZ6T&Cy(Y!+)hh6qJN5uE>^XV?zH-^ST8ec=Szer?D(wRpBu-&?ET(MT3~#O%8fsv zCK?w7@!&a?W~PL9|3nR@#_htT@6OL41oLk38vcBFszK(f3J1-8b1z+7#~Y-MW9sds zVd*V}=5mIhIyvH$=WAuVqGF50vG${#t0dC(*G_L!t%=QE7k|`+LfBR+!0JcaW9U$= z*lK5GAymy1P~aBCYOf0-JP)h@Z%_r;@C^1MslSDtGEq!`5~0px*xSP=H3=?)0h zh}qEKC3O`bpc;kw*>ZCJ%yNxdfTdiv0X^*Ewqt$PJ%2~{+r8z_nXK1JV*U(C=9>jw zkM!Lc8X4~OeSeOLAHK^TY-pA6C4X3&-M>qx+voVvOhNmRu((wyck%0k=7~r2K=~Ph zgL~A7J6k*X$7QPhb;UYszNj_XQlnd?w8VslR_>+DE!1(>p{@3X`4Kg_WRVvMxB50Vg(zxhF*lCsRM1 zj2%06yxeE_IG*3V8-R_Sojh{%Xzo+*ZDFXd%;)bKKam}83UfxP=2yk(_xkT5ce{6`bV1-1c;sC2+ARw`3uH>3}c zi?1Z21GK6V=&1Aw7(c?)b9XV?HX^~|k1<3&8*r>%dV+!RXIYpjDCHLMRfb?n*?;Ah zbzU;i%H$4P#oUWQc4*A(wCYu;*MC|TVjurrv(%FkV@1A8v}+T#>e14qjP6IPZlF<+NzK#~ zD!cE98Vd$VFZsh@cJ&1k=UxTp34cVPG(oxlDK!>ZqoS=>NDU)GIj4PVmsr|XO1T2_ z1=5f?L^d(PAG3jF1bk3h6~q6^vBw`)V~eYZL>fisqc)L9pj1Ju)P5&R%Jb4SmV5bI z%>tf+{57U%^=aiyiMy{`^)1>g9cG#E(!bhA%g;zAHiaimCR~Ns`Ub1Eb$_F&8~s-` zVXhFjsb0m^JX7&v2Kh7Me572a#%;nG{dYB)KE!0pyH%_1hVo4Di73T$Vu)iGo>RHe z!!qi$<0d3b2Y9Vmvt|uDcI@E! z=bwMYaZTZh2c8=7__G`9im4HgWTW$6vKTyl-|5$p>>2Wh{=4N*qx{Gt>z5sWf8_e> zyQYEwaV!6)i|@H-y#U=e-`q9hjyu*be$$(}cHVjC`qWidb+rLAJ%5kUty|ZJfUY;Z zp{u@B;;K@K)RrylM}h4(-`thBCx3A9Djxa9JA-w;#@H9|O#-4!a)<=~%s%;?TA~sh1D;XP3u;!S z#E@b|`IF~~-b2pH&XxXE`L9I3AH6RB#i4%n;l?FW;|F-57Wq7f`ExZxg|^@A44v2L z#glK5X8DrBL=bDK+)>xU|GvcVV0g7^BP@HU1&&G!W%ZA>Ie#|RE#N{Krh9CzzOdEv zYrGe=L1DGO$MkWNIF0+5Sz8;78&ngWst`0uc>Ww&m>*P`#GCaO(6sK}qTV!@pgPo~ zERM+p2gx-@gZbfBW#}RPu-u9TEY$$uxjsYNboTM@xJPdJ*V1{o-1F3T zokiFsI1i#J9WLha*dS7~Qw&))>!(TV8wq{LtqH92l7D5p?NjPQjN^UxYq8JYwlO=^ z_*U65me$v)P6HM{Vggqzb&DFK!R@BRI(e+2T|GaQwQkGx8n3#|L=uZ|L40+P-Q^`L zPb`%K^@Do8RcG$q`xU)%-bJR?P71NN@gKCYnpT-58x`t#n709kHvP@-KOMX3*6QqC zOqjRDJ%8;=l{`)#4QiG;Wv6RHOZ#v9ng3<*+mNp|c6PpUmvmsVww9V#Y3Tl|Uh}u# z`j&e0wHvb2>5!2uCsHH7X`FoTku3b+zO8Y9H($G<>$fC-{pn){uD`yk?IZ;au>A7N zyZ)03e?L?hM5jsQeqCJl*v7x3$O@{si9_<(UVmlJU-WMOJs6hJ!&?cnfD9E<6$@Al zyhugyte}#5ILare!lQuZT9OD=U2001BWNklzYQenCz$s(O&wt9gH`5gPqos6hq)_;(tQO_k8WcV@nFoUP5qxZqjg+F%H?ZuyA zcr)!Z5e8l)de5Eez;%BvH^`*gSMHD?36#ch361^ge>cJse;iwSNp| zKFg01A7&w=ARPk7d6rQ0Qs#gfkr;-DFyu&bDJYv1GihNS4mVR&^_1jYc&d(=nMpg) zr(jh6ie36sat&~RLG=jV%3dVzk07t!C}T4qSvrOfszS?L`8iR}8@iw7);0zR zqhwgkBcZ;|prn)~Z<8jP$%85==zjxQA*gNYX_oLkhB=>AvWf)^%NR!Wt2vK$Zkf4x z^KBI!s9(L*`ZtLme*ZfP;I}DXZQZ){6(^t+h=5Y+_-BPRJx(b^1Y;^YP(=*WEC%YN z^RF}kfX$n4J14n~Qc8))sq(GqdA@>tb>jRvC-B1`emDMV^8YLGJNe)JFBCGh|KGue z4I6&jQ}`YJFNSJto*|d~g#jlAdTaoU$xY{%Duw|nfA8cE{aU?z8~Pa zt|}CY#`ApfJWrHT_Rtc#um0)R{{H`e!etviaKhPm zV|433zcPu_@9;bP7I8`haNcKElI~4&Q0_;eP@-_kVQNO(Ft$&8q!GIi!Yc&OSi(D4 z=@=9==W&L^c(FXW*d&E$8f`2B%fsjZWhy!QnQ9~FeRd^V{^+r@PR4OU#dLZ~mnVn; zMt?Omg)xRl_FesQLI3DU`t9WRE1CeQot%&Mc7794K^yaC!whMS4<6d?wKAr2l+1da9S zvu zS&U@Yd6>U*&fRP8ZKit`&J5X{8Co1t)Iun-B1)D8BM}kAj%Q+_xw|}eI z-P6_6O>sCQpuU&xs#{h6JvGz+`Tz58AAREUc5ZfY^YOJOK5xgHz?gfLZ5u#!uF4Om z|1ZK6IsIcF!c2bZmB_xYE`uvLk_>aC1W)DANX(lg46yWZXaUOzu5C24n!s`xXkaO0X@8MY@#@TZ zhsl#`_}QC$!seXk6hAXpcb7eC{X6*blV9Af{DF@@e2%Yu{mIgozVMZOZ2}|L{|@lE z&wbWjyY^N-_1xU7eYZA&q4M7$f4m8dxo6qj0E7^<7u%HI)L_BMJ-mU3NcvRQW^lB| zGcKlMsg(jmDZ)&Cgh4kWh<`ki#f)5NvhPZ!=O^ekEQ!}I8n7Ed=EX!fbixjMIpNOQJW+QLEw`lnb2A@7$mAV z5{mU;kl0}?Ax%>YLS$KHUDw(5k8xM)_qprvzS{>$Tdmf54-y3wgz z5p*JSs<2&`bP4?BkbfK?9j10#1P*@H!2(`QArlwlB&5sW&Q21~3DPh@W(t`F^k!OA zn-#3JNV!c13v2DB1uCV$^Sq6$9}my-Y!n5uxXJoQ-?}P_% z7E2_{)WY|0UBU_(O+0>Tb4Y##`4zA!5K=V6uTc!Y$wBu(uR?yF1$B%C{|t}G5P`)y z5l5oOSdU-kj2Uog#J%mu1L$QLCD-NCXCDFB{Mp+G^55=zxYHiMm@#Aa&n+H6^@_#K z6p#?~D}=F6*ne}uB+zkaUTaZl6eWzy*H-Zs&ol9%kKlz0kqcZupu5(GXC;#lROy#m z2rcn@Wx}$hQ}5z9g;*&i#+c1)pH{1d5a7D57z|>F@Nu|Eo`q-UObz&YAB2*mnSQxaN`n7y?3no{J)(Wi=NNEToH&{i2w3O@j|J#}t|X zyYY`_(fFj4Sx54;?Loc>`U=mx4{^#n$%AC1!r`!gl60_pwfAo8-^suKqc8Nn_Vp)A zkDob9tbcRX(*$1?;e=<;zsi2&00-r-;^5kD&;MRHm^<)?y$$ZR{4rzh6t~0xl5#+* z6+t(|td$Wr%H*MB<+(OWxDX05-=bV-oScA@|A;urxqfMtxig2*nISw>CigNJL5%E~H7kIvaVH`HoXwAKJBib7#6@I*)(w zyS*Cwv;2qbWdS$*v#dHk9Wu`2a4A`U^hIETk21|MasmvF2v9Oa3LhaP+6>U9&!kN_ zN`Hy#)c70Qg!C2Ouoe-V<_w0iQ>N-Y0NgU`e&qUh@})0)rT670zgT+w%vnNJ{P%hG z{HuKF3t!on7j#e$;M+_3+NVBra@QWZ-~Q<<*FH6)?x+&J+w#YZxsz=30J>MYgk%J< zPuLF$Rx3ycR$gcmm5Z*a6Eh9+M05H4RexrW9me-OR#uxFo|t0cnFY?g_W=YJ)pa1! zgqI?;o1ulG@3%?T6FkquShKBIO9(-)*TWcNqbQWFE2WgkEX!G1T9#oLV6COmXrQ&` z%9Sf(c6Qc!p2ynyx}BPuU8k_s+5Tiwk3`RA1ROMvVpE(k&0JAox*-klmLe?Kt*fT0I4)}zOw5S4X089?rb*c-IhOQ%$tbpeY=FouuB-5; zeS*NhMG+_^sZ=Vst|Ox;ltJK0fNr-Vj~_p_+1jDmTocLi8z`qvzdsO{FI{13X3BqF zzkW@eK7GcnuC9nfhh~PyIzkAn?WA9K9=DD&;a@ky;?!LaE5MLy{(BSw^|$BBewFj#J1_l0g0I_2ws2vf|#3|BRV`!WUTG>yP`2s=jzofqTZ;p{PXV$d*3+w%0Q6Yc9b&rzyv%It|BS?a77AsRFP6>|_8<{^x{TW;`D%n+j zhdST0Z5X`BweT@~Mo%0XwfS!ErHqz~yf1-)i{}Gk``hyuMdmz(G9#S1Hbn=vDOhON)QIKL1W~x8;u+b0={C zlu`siKyoF)A;nt?$Ojp!Yw@h0vlKHsH3eNwn&iCp$^`&!-nan>!YHKQ?XXfgMAYm7 z4SI_mT;&ngJ!DoG;hEMX-4w@Bm@SG(DM=6n2w`Nu-zN-xX^cT@jWG_rUYDt9A%7hRIYEvT65l_{>$b%jmLKUp41Ttu_!~UNEFOZt zvwhIZ(0`gAhri9oWymEov(6+^ukaBferRt%`X+tv=*WMy?6v-wB!PHOZ2~d^dSc7)EqEJ%muy8#RozXsxZ3 za5!uNTNETe18eyx zr?`(Czc|_AECE-!kH4{tko<}_qsJ*@D0@dp)2n|>*&K+#bm)rF3Vi4Kht~hfplG`H z(!v7g=I5CT!du?EGKhI;VPW(4QC`5f4q(ifdxydUkb(?ImJ_0Z!=RhtNe{Ot=r&_i z-{SfZ-{>M^%Vb!k9j_o`L6RiofEZXxQHg%mp{zor3K=8=s$q!ABqSD;C94+WA&s%< zyf}YPgkflvlEbu6;&@;;!Y&V9c0%2M1t~WH^q4mwPl1Yi#1+PWoh6Tt8s7+os-_q}&KGt2bEctPo6> z=`Rhy8k{H~!;t%i$*BnjB*dhIQvoy-TEU>1!3jfS;E|>&It6VCr92p<)^QwBtyX^} zSnIl;D3v0>QZAS1blQ}n5~Zlb%JNOtnroD671A_8OYk-9B|>KsLz_ip(f)xtXONU- zNTc)t7U&YAnGesPJFA?*<9V9{0x5qS6fROkxa5Ef!XZ6?2e9+ne%SfCosZuY58&(n z7OsDN`D>kTcoDg1x4XL4>c}7{-!dfT?Ro$QsTkhV0yc%UtjNiQV%^4Mq+G@Uy9!L< zl7XD!qHVEE&JU8;`PW&GK9YauX@LkfzS9(eOKiFf&_DwClx#+4g!obGKQ}+Wt^M;} zeEG>Qmd?%3Z~M%xj6HxcW9}Us0M~J7uB{ME`Sey5YKkIR&=YiS_7IZ_6?rHe%vHfs zZ;kuTo#5J~8&s-36V4QV=#wM~m3ocpToqh_0dkv?WEm*XXJZ--pI(2jPgrRbeSZ+R zt|OYwHI5xSW?k1ER_O{Mgza=XA_#nZ-$zP?l#=z3~MP z&Saxuhecj_o|9$y#%N1ntQDr$>l20*wse62e!UpLek+FewtyYL#YN%a;|LdtM=^}o z!^Oi#5y&zKhXe^W=6`>&w(;II@E+$w!Xd(?Yy>HW1Q*aCrznYA8}Z$4{h@L=H$T65 z#=jTm=I05Ovl%zID;~g@F=O_HV~in5Gd$0w*Y5)f+ze1PgGitrge+ZNL(7cGxf%~W zct71{pMa2HRQJ<>QZFO-S$+07|*w{edqS5r@9)S~JkMw_u`%ARt+{Wm}Vt%i& zh9pU?=eew}x2)qR>o~4ZstC>oL1lw|1`K})ar7F#tx+L`;L##2)DFNo&BN{tb(>HpU_H4=Y%^ZL0x_rtq0L50 z-);TF)Xrzmzq+sQ;H8BHwzi2FdjMm`+`BjcS{K3A&u9Nx6$QPv&>LI z4;jjzpRbBE&9vuvPGRjA1L>nE!t*@xJjdS%@JcD^_WIOnHLH|jW_sExSCI@7q9|f% zX_+t#t>Y+RjL~VD8<3`2t#b3`^K~95vi0}ZFz{9>jTYsMl zLRJRxwoIU{k9WT3o$vrUsXw}Z#k;_Px)hH(Es2hpq+%nQMPALLn@)+G|W557D`yH_;^19k|-3 zv}kF2?OTpshVrjoy{>0wCY?^FW5O^H!(sHk@7Zp*FRIlt#Ry2(uC1*J&vnW3Oc-OV z&T~|%uohNURwNrm9hF4&B${(_u1-#!1->vLbF}$Y*ECL{=iDkmZ zbh3XNNXO$ah6ObP`YJ!C&PS}k^k3j;c$Pp2O5|uP0g4GcRJuenyGY+!zC{YGf%^eI zYzMfEmcQHjM^*Gb{qjqE{NZz(^#NNyW3PTd2lW6x>BW`rEWA;qffc>L0T4piPkQkk zcPH+){4rzhBo45tkV_{@TsXSQ)Gy~SS&DxMz{y;&7IDnde62%$q6%2*jXKM3tRkc& znu$o`3^NcobwOpaOl~vUCt7q5b;*JhD;3(!skC?Y)v}xNeLu8ms&%avI@V%`T|WU4 zMUm-t`?6jyEXtXg8GG~Q5>g7P)hcP4U@bU~L$zA5d7jhn544nyab2wAcxY{`wU&S7 z<=qFO?6iOnQsKMbFMLl6*gFQ<%lyzLoWjH8>l|`Vk}v@O6zCgV)~lT0C@0K-PXA@9 z&J>fXjt~m1JEXeFK(7;{c$yqo2IoQU^G;C5Ft^7v#{GIg!{eQ&Uw&!Z!x))<2^nqIGOn$2~SB&mhsm?_KhofhcGI)HzJR`~8` zCNS)60UrSt#RS+U>l{Mq8`Sk-d}(-sj34;F1@TY$TYHI19O5x+C}mes*;ND zBy)~@}tEI_$jMhJlr!f0&>fJq0etCj~_)(z~Ff<>uX%543s&GPl#lhoHywM zZ4fy)XCZiqPok;ea+(Uw17AJ(X8q-)U z(W@oIQ3n^u-GsJi?;3!$*4kF9xaK&DZntZqD3rsAUDjGW&oz}wNm^@-5JF0+HVV8X z{eE8*eg2Ke^PFzCX8}1F40OLATR@~~W~G!xThLv&+cSa7Hl=^=OtUU0xMXf{jX7rZ zGA3T&aB!TQm?s4MBz!+V zYgblA#{i%>4!aXGfrrX(lm%QBK96GgLGWIPf6QOoHlKf{j+-wLB|fKvZ3ez_2U4@TwtZe3b>L#gOMpB%gKeIbYlWD(Zg*C)S82KW3-!+tCT}G z=g||I%G!SnGzG>h6iQpR`S~BeF!E+DTv!OEre+38DFIm5b%fT&6q!mw7-R7~$3#&` zwOW>18xsUVWEmpQwb5GJEXz?!(rR^dr_(bVZ6JnTgk4!#3U*Ec+bMte_;=2JxA(nQ zKXKrhz=n0FTkV<69& zo}OiS`8rSk(KE$`jlt=|zg24$N_kjo34)ADrAHKnKp&+f#u(b|E@2q3(0Pt_y9hRB z8x4Q=x1PF8&mMz3hb>BFdU|%SynH=aU0n_~FL>9l-y4FLmr*^=39yLZ|->046wFGTFoxpPX2SzpDTcwXn5rk zKiT%mpYZD-IN17!{Mldp=`Ft7+S=+Zul;}8*Pkr?%YX52Miv{4TK||aW8QtXc>vQq z-Qsot008(&L_t)u$F^O3Yiyz@+BOJ*QW9%Hx(ea=xUNHzWLONfiD}|E!3`vnVP&%e z=k6!&x3W_)3$;(xoD8?h-`5@7ZN-0d zugd@L|MS1>Iu3H<^_y8h!`J-TU;L^15C85z?K?Gg%$PBE2j{7$z9ByInLjKPo^Wd zDZ53!eM|mO`H#MVr=I#o`8M+JD8DXA@`pM9TUlN%+Fk6{CSrJPKk~(o6PKMpcu-n(M z?RsU9;MDA!+xGT_=2KO3)80%pi4ccsItL{379)oII(vPIziBt^rk#q(2UA~y_;A1& zpkx)e1D!e6eS08(W>IW5CYErlqeUMH>mfCuH8LX)Ge=>Ox^LC z$;=pjviwzhHIWp`Dq%?VreLsxLNf;0tXGb68aOxmX1i-YPaR@nu~txY*%q2u!m(Zq z> zl8&<=6V7#eIL-?jh%3Pg8o3XUUBF*SVK6-QvnS0&LoC{D;!z_}y#h~Qy$VlYy%Nv% zi+EH$YNvdE$Y`U_Cs9f-G@|TYXzI^1@hJD~1YT&_-UqJ&#Mf1y{~01K*Cj?^Q5O!J z6$UQWDa{MhoM?m3v3|zSsb@!Tfp&Jfp3@ExflkTS&w_zRj4Gm?J6(2{CARI;b&s$70_)QKBkE%z(sF^%@%?noIW#WdeO|Nmyu*uTXL7&jV)uq7RJORq2xmNha@BPXWy?aZ8h&fa^y{|`qatJ^gky9j>VH{$VHZ8y_M9*RCwu?!n?(R?ANnL*RC%9I zrAW57pNInHUvv>nT*R|ifB2l&pH2Q*BLINKix;2u1}92G&v9-BCoBJxkH1<3V4QSp z^@4U%Q`0K{gxW14od$_hu zOR2;dV2*|2eb4Juys>OoEe)KIBjL<|F6n6#;wU(?!OcAawQC^18>}!=4)e3N@4?}3 zg9ik+!Rp0?e(?lokOVMDCbOZ09J^`3V@DM=6Q*g%_t zV?uSrcO;Hx5GD>mYc1rT2CfQ#0J671zQmRGVEStO(A=Qtxsq+ zB?K){cdf!sn&?Eom2a6HB;={eZ{i(R(@wo?lG$pzjEVw?91Zkztq!Oc)PH~=Q$Pbm z{O`hO9Ym@D#d}x0z=3!pO1_Nr2FS!1?h?b?)e0OKeHaqEp|e9#`%aBDWopKr)OOWu z6S9|x<);yAZ{;h=4$Z-B_IS)SR@I2n`}VpMts8@yJwMYlN~E;i2~?G~9NV$Y z^9H63DkmkY*RyAJc#(LopH8pTiN0q;Q;j=47Bqu50Exk;pzc8=^E|{a=9f<`A?B5l zKltCMgO9=PhY2TIDK}U8FHG)-C4UI2AXJsX8kERO4~9mRL1zDHW`C}|2rZ)um6H3F zPuJ*SD{E;$A=($WW{HlEJOXSL%KIU)|8ZD!378@f=cS{Ih($t>ei6P+1&?GjsC4ZUnG+;`FBUV?(*ujG| z%%4wgVuGo`LE6qc4<7m?J#~M1ZW*s70tkmItjwuYiexf*#!b#<1YXVapZWZ%5kOvX zcreY5{Tbf+jy3$=JKhT;@2{L}{xSfYu6hpulatc`93C|6*ngjX#qnzvDpGmHzx{YP z#w+Xtcs2aCjlj0+ukW4}jgl%B>C>8$Yf)ucaFz|#jc@+zQ<^{`UzT>cmO`UxS_oMSV$VxCnAS^lXg`t^J2gtJEk$ zA+hDBUOX7A%8#3Daqt0^=~^1pc~KQuCDDUBo%Eb4FWI_AK@yxXK^I?y^xJsx=`Ad1 zpJYzEN3Q7d{H}JM+d9O1|Fntm%{y6fr~_3k=x)X6kAH>c>p)qG$V#y%kLbL(0n|X= zD4)a8sqg>Td*J53_8KAt#D?iRdr2^kQcn!PrEkvVb-Zd6ubjWbeA9bN0 z+sfRg%EIPPKA^eo-9lspa#<)I4g2HE%eki>j2wC6M~cg^Jg|g^AJRvcuTb-=N0gTt z@}zzt)uRWUY3;kguE!J$)*HM52`yiWeVIxbxhRXbbL=j&g(DfaVaCpK-^2{3Nq)`&hZ7Zh0V+13G_f zpU&8`aXaVv(dw{No`Dy@uUm>(`&jm#Cvam4VisJ~(96Hw_ZW%rG@GwphYBBnZwQjs zM1RXdY&FN%gTM_L9rCn2Z+_6A7Ye)g>CC*9cAV0w%J$VF0H<(_h+D_pSc$f9fRcc? zrAfLjaXUoJ5=w4O;6|gw>gvc%Ob|^b$xTcUtE(fQN|BqG zpmD(hIPlqXMgp&CCvZ2zxgyzK>0qZY$&-F+6#EI2>+7Ja`^)ftiNP>lPJsk%+p`gZ-1G! z$+TpKP3iEkJsp2W!FvSyAgJ#^`7y42@g6=svWc3N1-?1Bp74OjqWB=~DvcdK%JO#t z0>v$$>wqz6xd7^m`PS4=q)@w*$p5=3y8V_vEiBrvGv&1rbzA*4K`nVEw|v_D-zzWk zJHriuHJs6z*aId}r4?>7IFElA7JvN(vCanwM+3Yui`|D>sVn7pYkm}lAEv7J0sJDF!YL^Ec`F}#&0Y(-tm>-|4LeY5{p#P(#gO>{4o;* z1;naWiid?@DG*(Pv-oWUN4|lwgy+WE8G4|a3y=14WOke@qYj=dBo*nVbAME5Tr3p2 z1s(vuN=TP=$+ur;9b$=-hSG`Y#r4&7&!$Bc(h`PDgdTmXST*LPNC=WOR;47@S zP;7fMiMGGsy7&JHb6Y*~flHH4b0s}2yK(?z1te_B8G*%+x=T^41)5>;S{NA$9P^R{ zFZS9at$oB}6DIr1k}2Qu$)J@(U}vIP~SpypcQ zq5ns9D9b!GPBtH6dLqQZOfzr2paGMcX1ZCZpMb~$@Q(ni!9E0u#S$7$1&q2XYmF(j zFpr){1$I;E)wzIX)&c5%e-i-9Z=FZ8-9)huReB0 z{vUqz2w?HVXK7rpfPX_zK1oYg*C|T>|Op;Hf7~Zpoc^6;I+H*t#uZ;`Hbtx8$ zCnA9voGT(Y8U6kJ6E47}&W z8o`eJ>DM&=s&(z``{}uxE}Z|3==Oa#KXy*K=NY8y*2d0e1b-~Q-O$&=($+MV3)a_` zae_tkIPOT_wCk@=qk;fvzVE*EJvZOnT^DkwGm3KIOy0Q}Pk-(^J`TX)Z~x7!O|=50 zuw9!P0&0SQ2W^|nkMj?yecnfDm4S7C=v6=dmGIT;-d5~reXmr>Uf@!Q4+AfJ0hZlN z$F&X2wZXRy>FmGNN0rx4M+&zbj zT6$rY!`#O6ki9n|ya^cr^|7s{&4OD3?i3#Dft2eEHY_rcYi}*gn|Mr3?TcIL${YMZO^Sue=gd57 z^pd~z{?6=^`>Upvd(}Ub=RWv;1q-3+e}H;?4S#acr@8-6+L7R4ZvW0QZkWG|n=hM< z$~rKX!fU#W!(V%trdmkO7W^?FFJv-`+Ab5de5Il_zEv8Q+~9H*zT-CE6HS%s2RZ~L z>}|X-Se#g#Rqo^c%ZTbl}=Ke-scort}7?vtr99-LnyMBJcBB7@?&x?4}2yH*s^;&TXt{f z3%9?GYH=~edV(@|fnpfL!~Lg{GoJ4K!>60BX}+24-clPa05vgIBO@H8Rkwn&gOX&aw#o@GZA=FDjL=ZJY68KpDfyysYWT$$wK8 zfwS4y)Fd*J z@A;s9#l=89l{CnmKZBbEQc=$DJj^UNgVbJ+N?r+xhbh;r}~HE}3T!?+P5 zwFy#pKBGc7**iNQZl*Trizi(CQ&RC*ww(OqVS|(H}@hFKYv2)5oE5y zw*tlvL}_#)Na!UP9wS!sRaU(fL=-D$3pF+rlQ7v6;51rREFrFyMMYMM-Q0?nYFrgo zF3-uHkzT9NyfTRB`KZz%6&&i*(;>%1(2#sLSh){C&cNPkXnvgMhZDSS;SO*nq2r5y zMX_!+9anq`J_x}tVdTqTPk+P3Hv~L4V5(QWx7ZRbifdg;O>m#dOy5ViCd=2QT{R!g zshf`68Sbi549!2kR3DqbRX&O|NIgiV8a@04X#4~!JBSXZS#I~C#&3XuW3XWp1@}!% z^?nKJghULIRp7;8mJ6k{3de5@Tyq4eiyC+K62g+az207DBv}-fxcQA z=)wyxme9m#tKKm^BeEwxVp;tgCAI|OApN`F&Rl^Uyy#qL&);X@szw_X7 z0Dkc89o)Kc77uT)c=NYzY=719^JdksWB(MFu5Zr$e8+J39Dh?du@iXa{pko!>j!YM z5m?%i#_t*AV_%8S001BWNkl zvW)FmEGU;bHvIDDwU@s9X8@-h8#>ExyB&+YUOAz!uN}P!c=?#qezGp~s=44r9&5k-2QTtO@VI|9`-;kD$&scpVL-TF0q3QlZ`$ z5qeXK@m8U#Gq9Y92^Bh(XMu$Sqy(z?7FmuFNb;B8i4NR!M|NJeS9z`BAdxF5LJ>vc zc8h#(5!DC51+_3Y!Ufqigtk3`Oi!X*15K*3U|ax3puP(n17=bPIze6#6YN9!_gE=A zBFaCibbrSx30tj*tmK~>?I6Un5N|N<)PycBf2Y^zq=A>zYjT!qo z4{ff(s5Uae%@ikwa0i}XvXrEz33w15|0m75D-DN76e}+h3g4pWzkrcV8n+rZwUer$ ze-8~^bXDmu)JpT#j=ErT&D*Vx$!ADC`<&bFJ%1xcTi!yMghxK0nfuj`Q(vdhezsm{F`uE-j_-K}&H# zP<`_Aa;^v; zpGg5h#RxqAhDt_Y?L(i$Iqtx}+8V?wvVVaVi^Vh2KB?nnM<*YfS>Qe0`+xS?XPI^Q zF#DUEPrdgm7=rn2wYgObqA{o_?jL*`Dus*y6>ilT zjuQQvx`w?HchBjZ|M0RAutSOqPU8+*)|TN-jzZn_hmqvsGw;{6VMDhMbmjAmT7MQ* z#^BY2VY(8aY+h~n;iczOdzKAeC*uGXn^&K@0JYZ(Sn9;Kk0?cT$fhY*q{bMo4g&JU zBK22X(d~c3oR|3*tG{)1Io7b!?-+kTXV(3_*FN|Vs47M18O7EwZDnP`Q2Qa6{3uv_ zi1_~mT{DXFl|LePKZO1kW?ce=pnv}!MKUGqFA80&?9`qo?8)jHtoo?u#OEj-NfBAH zrc`e-+^7|hRTb{+Hv$MuLE;dw9BMt7-~dSupgkZ9W1j=72IALM$jMNU-8;sDDqsZW ztv7@m2sH_dx^&h``pHB$uJr~K4p0QM2qR@Yy-qdCeqESXETU5An)xPNjDPB2Y8O^) zsi3z8ytri#%c_KUcoLZcGx%dMV3QCO1ob_|)vhpj?+0)^p|B6iJ_Hl*z_fw0 zU^nrB@8XR^d4Zz+3W1|A{FI_8B-qy&>Yuhs-Y`r$I+vVdEC%t_uzz?>E2WAY6@scN z$PKB|(Wk9cO_zyGPCJE`PA|qHxTs3l`-zVbsuQf+gyNkFwFsOg0!h&KJWBpv7z{L5 zeMDdvgp&&Tg>enb=Br{NEaCEQf^3z}x7C|!uU_)jJmV^xQ_AUHxeotKWxi#1r338Q z48gf-@_*GefXTi-5`T@2#Gmt7Jn>oLE%lW1`BN5w%lSOjEiI>b{3l=cO7hR$58y2O z0b;S(DN6q2%Ad0-|1UiGB!7DG#gNax=5AxDQI9R7)43}ysgBKQ2Ij(=XqnLATwIe&TtFoW)Q zbz^;P8Bt$O;SQSVCot1ltfhVOlpe!-wr*W-U3+c!vSN`(qfr7No$;urlEUd+T`@Q_ zujj(d=C7Hw&ksDIH5A`IjUp^U#%R27n3OS?T#o0%VY=?WfBj|quUytUq`$lR-DXZ^ zt5rVulr1zP2(bx8^xbf14>Yt_9?FJ` zgopke)^D&Uhxh5+f|Y))a#4?cF?z7=IX^w8y%-rzIQruE``^Hkx3WaK#;>Mlc&VN6 z^U53yVlTSf)S(TNy}BR`pnNbp z1ie5#9)JHM{>5I&_lQubdRi&g3kbPd;C86{IaJLB*{h*Xh>8#mQQ0l{IcRHu zr(Og}DEgig*8QHrvS4Yu@}F5qxMi*%_tVPQE5#xysG}%7fXxL^cZL4cbMLV}GRN|U zb`UR_3Vf8Drwjo}l*!`c1Yi|@{7X#0Nw126J>?5E$!4()fT$z7%92zeaYEw|V zQXwl$DEqK3+Y#g1>j+1p%9c)vOz);tJ)6AP*rgxi8ZDDY_E{54=SWLiyqrvQC`tnm zx7Zk_5sEbrh_W(D(+$6>AOZpCSK7h~*Uz4#9@iR?3+bB*wQ`dAmcb ziGQ$Fip}*RrsOHFM{+z6uzkkj(Cu7g1t;<|To#^CsHk>U2IC1^kzE$}7 zH`Zf2oWUYG(^>3i57(U!!viN@XL}wGCK3$THcJZyBE~T4#R!t`;8nd2#)%%Kb(BS8x zFbzQ?M19CLL(+q(BkHvN06IOD`zD z@fs5+2gME*OpI%9)xw~Ko$5}m0X=0@-IrN1{bQLv^qf81R3B82_Bun#_gWhlKx4Ba zh$ym045Mkq*b|ECgF^Egg{l^XED=N$B?H?&uetCGLZVG)thB_*DcEVi0e>%wmrr5E zP;SAfOe`vK>M4ivI>fYr1~6c%CMD$70cAxgCY*PJU|KeBMPPn+#X6i5B(6p+4%l(ym@G%gmY^HA!gzH25_z z)~^`b2alCCqM>0G)O8BOI~48^v|a|)3&A=J>01>h51oq*S1q?PO@D1c_4I^QwAYD_ zt}u4=X=P3IS_P9q$8R#oX^gtBwi7r1b>Kbs0Gwe6e)Lx#J3i*j%AZqY{F?g!dg}g? z#S;}Hu=DP_i6)b@op&C?d-kyN?z?H}>H;8MU(d7h2bK3{na8gj0i2u$a*rQ7-P_OQ zay+s0_?qhR4mg*D!+*b01TdO~g$=Kr+4I-MOiReK$-m^D4ZHT;{MZ@&dv|Pn5m$tLQr$9 ziBbb^SraT^6n_}t?cI0TmwScK@TIM}_U5iq!gzu|PEfcDKNr{Kk;6KhKBmhp)j_;k zBJs~<;BTm#tw=Iys z_ncIuBd{eVA+K8813z`f=WGs=(N1v}-bOb4n6hFeaX24EOdtp1Dxz5lr;ll`V2gJw zWfhhs{qyhtnEUxl-|YFZG&U}T8n8(M4#)uP{kAg_Y7@I|j)^)gV(F+zbx6VyABM!r z7AM3C?SGbV)j}04`#qHj_la}35K8&a;uS`fKX;v9f8O<8vsF#ypJ4#}-AZ=$StHDa z6?X(J&HtYrClh4$JfyPj0>XJuo54dWmFwq7DX8ZwQka(to8$5_j=hFRq?Y`13^4&+D>o6|pX+ zdgphopPskSZ|b-MnGTs^#4@fNRXqBG(4mD3yoUIBglZO`&udY|`q?I`;z|_{NV%#= zxbcmG>QP7=un<@R_I~kn1U>nbRhnfa!E&f=45Fn1e((34v4Ll-T<4`heaA(9O!W(r zIDgduyq1n!*_jSsYwkH!f1K$2^{a95{3`OFrLqoi>-??cCML*DOwiKRb)qB`VC$-P zzv3Kz?FisxoUIh}lHJF(+VPi}2w=&QCG6O-;}s)-;r=p>afnwtugO#YO|WN2?u?d@ zC(A#%fA7W@uH7}$$?LUXCOX*jwn{&NnSah==_wUaET-z_uji6pkc#? z?iXS)ED@X_zyi`iKoKyug%YSy7Gf!?EyJV%M?q^4FbVj^Q0sa0g+j!9pRm@9YE45B zkOyjmfcd`9L!l5$ibeK04(<2eyIu`$kj`mScJ`MOJ&%URYp?biCZ185i7k4f(0@qv zzDIR#*1Di7zf5^c*7@}q$X%t&L)|(%w8xrmae`R5l~7Bq7a!ZEN1LuPP5EI}UUZRP zKYOiTx94tWcqpc)Lq{ntUhH+)^R=TMFo@EqS%&pj`dO;{|HUBR8~lZyO0=7B=727W zAUTDfY&4NbgSf-JI$IjlpClyYJ}dRKiZo;;Ha)J2@himD2Y(e@4HAOk zAFJ`E<&yMbnDV`5s(!gdxf`zg3-1#|_|tN)T0HejRT}=Do{F!L@Vp>sDAkH@;v!3C z`Sqq9f+8l@uFE->^5p%xC^aJ0vm|Ds_AOKO7f6-QI#?oRqoqm zr3cbZdet?4lT2vwCQK>WVq$@XKY2ip4G!z#`OCc7^-d7F>u;ia|L9A(HBv8<9meZu zHC35Fm94qrOnq047ur>1R;`JXfb(t-n$&KvT~y6b;HJyERP0l-_J0DeZTEI-AeJ?; zW$!mFB0~0AU3QbA$NKEt(+}8(FZkoq{Hi)}O$U@l#p8e?8WU%FN|n48@x2Z)b{?JG zs!PS9@>`bqi8(8S`l+Jw?1d=Fs+T#Wj^kJ1{{UTUV$hu?+2}C(!rA4|^zS`+ zJz(bgQ=);>a7s_$TA1l9wzwrttmh{Mzcs^AR|CNb`7`K^L@3AOc=>?V_C`j^lc=FI z)k@)bKC>-FIs!#sbIgN;F*F)O?s#{_yi#Nw2P=R&6X5wifq&~Vsubal7$XA(b~zCe zA&Wyn0LCzQ!wub)-omo2_p71#xoA`l?vw-aoM_dsvm9dn|OcmQtwch9JQ% zU<{&{iJJ%+C-s8P9LiX^{2*TE3e!}*OjnmMLBk3Y(?)pgPPf0Y#zfa%=hq*2#u@w4 z|42UfXP=l_Cx0C_3>z2)X48OhwcHJC8kjTQ28p-BuT1_7_zVR_uy^h;2iT2tF zoEmvQ5wfK^%S0~4ol}s;#Dx-)$28tTF-1!kSgp_lf*--CeVEuH2|xFe)t4v<^_zo; zK7bBignu0}*xP>W_E!;53KNv$A|Y2C>VW5AV436DPq`*`iQhQ?I=@=-3N=Syj$GIG zxAu42Hc4Z2Zs5=lnY>l@+r+f4G>Mvm2_OBSd(fG}G!!JXFKtb^VpMC?IQ2IMb)8}C zNEM+Mzv=XKt@9gb25TH`Cqz$=P(IQdo?Lcev45$jE>ybU#$p{4im`684f7<<5ul61 z*+JD@z0^d9jgyXM9PwKmD?Lys4*p+K^$Sg0C%~$~s+kmb&b3~%U%;mtH#0&$*r!CN zly+B&l|7=$h38fNu&wgJTIIy5#c8<6MD;Fk=7`;}6kCl|HaKP`Rf&^Gp{r(9v6{_1 z)_?HY+AIF5xNPjruXz4WQiU$tx zL~kMd!FSaZhx^OFHfh_rFmuoU^NmUgXlm4>F%B<{pCZ5IgYT*t9_}x5NBX8+ceea| z*)792p3=s#D}B?hFV_v7wf^gl^i8L=e1DvL=I)2<&aV&l6{Oh{BG~+5@=>{L4S+&87t=wy5016Kb+?Ne~a7Q)y;Pc=u1# zP-?<1T=w4lEJCp0RCQno9lU#)NxF`lQb;5wa{G75L72eo$^Ah zY*$oli8$7Nv~#sYy8p)MYpOM|xqs_|x=;w)N(ER0XnPzTsuf%9tSp481p*4(f>`Z! zL4@al72pl2Ao~)T^r%vugYpaBrfw%k@$lEJE9(-b>|Pfr{h(1bu~bxDY(>fgQg({2 z|I1HUed{+#TgPqX&Y_pARCCfeLoZs{wmDMe*DGZOO4);A(F&fU%6=bm^nWKz5NNA9 zX6%ual$vS-$C(zfr?J8diKJcrj{=8BH>ow$!znd^?$VQtXShWh8o14 z2&qC~FwT9-WO^utZo!F#2~C&CGJ+Lt7PnZWFm+V<$z@`dr?5-iltURURZ9aMii>5% zQAQ)dk5ph^r)<>*31l}Fw*Y`gZhMULKf98Z16Q5#Y#)^SU$d^6udX}m@ib|k`O6p1 zdhT~6Uv2E{lt+(Nh<}S#EnRx*6|Q?m_b=eYCNcMl^>isPY_m}zn-4iFW<4s}CNY(thIQ?F~zrL!NY;<_!sR>>hXV*#cTh4XO zZ(08EjQoGObL)BlcjLzH9a^&xh>MU4g-CcFo-qWW5aCjZet+AhS%k3f6DU>Lp(w(r zQq%%zrO4SfH9s+Mba);UmPHS+(iqB*KDr*@^63qGd7jA7&j=lgsdAM~ zIb49MWxDpr-5g#0iC}s9kk0k}Q2G;BtHy=~iS+$I`c~Y+Qm+%g>{6QUrKqRzCy%K7 zXrG<$y4r7vE`P*HKQ7sZYpJsxIwtuh0ZWJ}>Z3OpoOqVSnSxSo5np8prhk=PZdvCg1FcN%uvN^x7-WaX zEw5>jIMD{<%)W+po`Jpp$?gdoYLi%5l$pxdUUe~0^))yp&!}irq^Hl$&#(3)8B41^ zg?i(sWij^g?=?p~DKS>$yG6S;VXGc3P0Hv2wCVvG1)0)JKcTYwj;Qfqi1gAw4CYo} zC~@vnaDTo)6iSnn2cA;nku@sXdZpAbDwK2Dw|0r8ZKaeeuuvcknL}g~qx>-&SWdu) zq*XEUuN-^)5jEabMI_QFIv=%(L;|G>Vx{&wSyG;tuCd%J-fkB06y&cpMXO&cXIk8S zJ*t1nX6Z1?g_r)-K3aZ8GO=kqX)@s|#MU=jwSTP}P2JePs!4ODxJ~sct`?Yz7c<14 z5$B`jGBs`!&e*@Jsq`VHTHdQ#bq|zhi%&!;o)beHyYQUKjUARTryV!hNh}nX@Wc># z*{$-0S*Vt`(_lS<*aaoSk1`sG8Js1$zTw?cE%l1R4)Nj_;G%#>g{Duo($G+O?8nB= z-G3b#hNv1*s)^=&p-eCD~@XlS3L04sK=k( zR98%mdL$d2|B}VvnfuPXj%Lr0Km6Yuv`1>O_+|WH81c+PtKkd5r-t_|X z+;U6ztUK>q-}RQabnm?DuJx&_ukLOGW`BDgV_Ubb4*}h8dQ*3Osl?T#5~(d)){g<( zZ@HyAap#@uHBf!S4c+Bm{NhAMFzL5{t^$*5T`$$Gfvn>iv`n(DcT`f=C03(~2dY6# zb;Cb!__6PWgN2(4_as+yJ4YaOL}k2goeGWxe#d5BYMv#V=C^xxDWUvuz36xs9)C~Z z;#EBIjdum>e2uX$LZOyrN$5NLM`%n4)f<~mI`gZ#~D7q(TgYFCe89Cg^3{6GP$#^ zh5vi0;i2$q)kawMPzxND7Ru@$YkzZWtXsrIGD6Sze0@=?=ht{IYJ{y*mFix%O0JTWN`J{5Vgx{@ z(p`&D2#v92-p#Tn>+yl!NAy&4ow37p#8n$ey+L}^n403Dy${$|EScvwbA)fR6Qs$8 zhTwfIx2q3qzJjk29{nyg@xZL~Hcbz5JB{(0VDIG56@z@|z zvr`ONHtVNJ>>CYz*sTey^M8|NyX{lz!%X0P_iM4w-@Y+B-S~FdF`m}ft4;$JKVlMB zEOo0Ir@`%^#5#GbpPWZM>ZQ8U{r6#5PA_jK%px*WNL4JL3wV)=;#ol@^>CC=P{;qn zu!kWrV*HmcQJ-hHUYx^Uhl!5tLj zP6B+HQX;cR_;ID(T5^n%Pp3?>s*y1i76u=OG{Q&lcpn~76w8QEAf&={OOhoz$6WOS zlkz$CnY$QOBY&(ROQW7oF39j>?qwEFQ%B!Jp9}xP)przshT*NW(?l3}k?6g5sRP&l zx!fpIYG1iSf{>@~;;_0&U1G9KQcs>cXk-(kY^H&y5dMZ7|BDX(Hz_8hSCv_*u3=nm zRlDT^>VUbx3kurRA4o+0m>lWtUvlTI|10mKSlr72)_+mUQ0BAzDDe>%GX~NjaGYle zMIU7js8NYwco;*DB$t7*Nimxi7T|CTMO9Bp-h-#=h?&{61N{odkLUsS@I5P zqM1CXf`5X3kQIX3rk-Xg-(!ReSS71i#E6Vz)PS1z%g!ycH*dbZq677-ms{R-4XbP4I6$JqF=}BcpZRhY@Q{T4~79J z2X<@_jLFU9mpz67Du3(phZ!9m`Y(#NUdQWr9j}H{)&RzaU#3bv+2aOqU59u)Mm}98 zkw}166iO9-nsV8rSS(R0mC#z_`vH|5HWg@X;dw9T)X$ac8XJ3=q)iz}VPuxT>m( z`ufHq$31_o6(Zm`wn`*oRuBXd3b{%tr5wjr<#O5het_$`s!%8z&-2CeJW)#F`@u=c zs7eaS_X8OpAAb#xjSYuSS3;-B2Vh(G6)~=xf9fyRdZxpA;hz8VnmdfWn*4)D+5`Ln zAj##_GK+u+21iG5tQuS^iECGba`2A-xHcLs0p%b~*`J~uOyZjyB^1NhJj4_*0agq1 z=L}h|_4}U-#uz^SnU9^Qcm2D+{-@vg`@fFY@jCwdaaKwMaQ`P@-_k zVQR+OFt$&8v=O@y!Yc&OSi(D4=@=9==W#~Dc(FXW*c63m8f`2B%fsjZWhy!Q*=i%_ ze|9BX{^+r@PR4OU#dLaFmq&;JMt?m$jWLEt_g(XHLI2oE`t9WRE1Ce<*7d>I;wS&+ zRh6LD`W59LJe&wH14L=&IvlDfVCyImyOprp%orsy_>@Q!oR-zHP`H*RX4O$k3ywDl z-XLuz!!1O4iV#D=Fb5AOg2wvvSvNPI{QX}EU;Nk4#I9I=-pdC*^^w>I{(tC0zw!5f z9k1hc{P*G%15njk#sA;lnZ($2or(E7=iK>?HIh{#DUwo&q}rlnc@P}8W7+LAf&@q! zaK}g*NPuL~i!8DT+UP}WWMO9!$jHJ7vhbo4qyZ;T!$^AB-L~wOrp*8m8g`Uor-+^rhXha&R1kWp;_MC4(PD2L7sZzeDDiPk^f z_hA~1#@6Cr9{c#dry7l_0jO3hMr);vF=SarnvS$P|EdC1aOz_!2!DLhT6xuK#rFF{ zvaCGvDGJMY@h^%3rL8&3uYcFDFU@(rY<|vgF^^%q>mRn-bDsP&Qz9 ziaZ#S;L(k{`2L;Eij-2S)9Fxd0N{C^ilR_$ZaSHsZkRmJC4UTkilR_)9FZh3w()66 z)08L*Nz+_eYZ;AFQyvKo?P!$BIF^uQnSfGxo{R5$d$#o4)B1h+27Ki1LDF`+eNSJw zJ|NZW<1Da5Mxa9CaEZ1T^Ny^O0yj~-fk1W*>`K{IQOZ-47CtRq1w9M?0!upLC^;Jp znF|_Bo0wws3x6Jy5wO5TR`%85pbcQB<^Mll|9||evmf35^RrK!h3CF>S5M#|{U=PA z@WHaZ5{n4+#j+cnDGX6J!Da^O`D7~)uErDq**LXRPOUYKjUzlOI zsL0|Jof~u>(VuTqZ`BYHwBEG_D-qeYK($r`L9mte6Mql{fh0+!%jYc5^Z|_V2*a`( zIS2ysycoBw(6h5M((eykQ52$-Qc7tx9FCmUr3awP2iSFvveN?oy^p`t|Gz(Zrm{fo zuA9I!Z+@-+ci{n?K}d9!M*JaeXjmhsMZk}xfb$gL3#y0k#iz9g1@- zo1-j;r+;}`$0!8x5*|vPW^?!kr`?E)`#jsdcmVx8r{ep3{>+mA+kf`Ag8X;;9wr{Z zgb5E0cX$Bx%YvU9ASD{qh=(C@-v^gM*Q0g4O>L?yVO+hwPH^oU)1UYhL2OWk!Ve>Q z8v}SrGxKPjL8Xndny_Cbt_s~|56>&bYOQh3ZGUI`wA*cz0^j%5Xfz~_W99o=Ip@@9 zl%kYUt=0y$S`|>Nt*xox`Z=aP{P)H8eME#X4C(a-IF}jE(+r2XQ%b2gjuZ%;PRH$# zubgw+o51ZB@Mli_W&gXs_}%?CftPP^y7yo2IRHA=dEZ}#f;e2_f=X$N>A`h zD}N_lGsP!aWEM+=Z2j^COGrkQO*Ah^ABt;WFY}83I46S>JVs8YJPwB^$VPitd+(+H z?fknx{9^y>-*~R_%;_@>ZNX-i5}Goc@Y1=rxYszqgb5QK4DN^lq}7Pb8lql|+o+;$ zRw-i5+RGh`@*!5_p^J(TdN1Ik01UPZKinWwd^!t6BbCM*n_I<6j zM(26K%F3#a;|LL9YHA8=EtfA}RtpOY5(EJoo0~E_JHyX@_Le$z>M?PytbYR#5iv%q zqOd3hy(4xwm8gT^wWqcfEw0(&s9gi|KjD-vnm) zCp4I1gs)>_Z;?1yV3Uj#heHU_)bO$S`gZ2eKc&i_1LUuBUMZTvafF;De|BH__YwmD z7<&L?o;iJHJ1uk)1DG)3H-Cri4Zs*p?V&0yTX#5I-Pau>qlG~T6VW508zt(<=ruag zqD6=jy$^CnFVRCHqIZT!^b)<-5Q#zb5Iu;_;G2B!@BVk6=iKw$yUsp)t-a3Ola;xX zcm38rtax_r*$#ESiIfYy)pOnh-59yqP$KsN{_JSk){f4up$e7yhQ(z0cLm+S1G~X2 zf#qKebR6=xLw4_WHYReB?HZHBj(>N27`QN@c591^OjNcKi~lo|Y0hP5%+a~T>&QG7 z`y37{)u0y?k;ccrxXV+cVy(=#M@J96*T-QSnJT6#V1j?~YO?L&ooasA? z>FH5Q2D&sjvke7AIkzcDC8`Ww}dGX!G9TwEoiW!6WIcsxk zCtbEmNE(_UxcB;iiNMPMw-loLAkN2rZhI+u67JpZiWR0dU6`cFu)|0l$@D~(oQ&VSf=?u_ z#^2auU~%Vs*Eq2C${VvjowX9(Y%aYi{Q2N+BHyFv6|&nQJT!i8knYqp<^14UsEsHP zt|#%J+r4{uxJD~k=Z;Om!tQ%iOKZ??U}uJ+w&pO+-f$4O*g4>d1(P{(lc}_c=QxsU z@hbD~mMI@_QyVpbOcQ>p+n4=_aTH}3G=0!(@8ea{P%N_7;k< z4sT?C7b1u+T-QyxyPxQ+uXWdT-;=iQ`xT+U$v2>Q6*&r;N!ULM-30%SotV)=5nM5< zg2jH%Z}3w0aP=LA$lsmt0N_-sz)|rCu5@im zzi^{_1eEzs+0TXFL9pw9+@(+cc`RoPdx{4N4x{SJ^%=FU=#fl#)z-JYT~4c{l|`Q+ zeNqQDZgy`;VNvmtVk(f*nB59?p{fzXr(7jn4t55rs`AIAM~F~Q-=g4ojoaHhv)Vm- z8Z77egTIhh2^Y)>z?b`UF}~=uU$pjxq+R#E+;bMAdSyinKOdOvMD|SZQRST8y@NIn z@3@JBUpYU**a$o`*|Qt-iPKKn3u+{tzD?AT6yzpz)~2i>;!797G!>B)L{tvAzxb`tsif?y9i~TC4^(BX zmBH~czG(`?AVQ(Hu>6G)3Dx;*MI3S?-D*aKTZtB8HrdEYPFUz2yi2_7pGEz7@FXai zL#{h%O)_h(6i&YStx#i-l2A$!ax_RJuPiK$mL3wUmP#Xz{BEgPoonHdw z2KEJDl@;)}^H=^zL91l~ypUVeL4iz@2sa$ng@M1YBM&gs;>qonNh%R4994vPz=kfs)NvhM0V6q@Od{YHHx(YwN+M{sZD$OBQ}8Nxq!;A>Me=-Gb| z%etpJffq9FqvN}jpC$=Zo9B8>Ra%}D);7g>$9tvZft>hL3)G8$a*`2t!r3)1c;an@ z0Of=U`8!aRD*gq!wi@D3BMVABZm*ce5Wxf<_(W}Z{*paWAk=JCE#5PhI`^X@xH z0{Q!;pXyMr<0grID97<>d}avYe{JAkjdG0X{7tJ=w9J*n$|V!WHzd^SnF^>Y%{6)7 zbb4)0VC4rew_lXP=CR`z!QzL#VroHoMmc zE2-Jes|O;hK#)H&y?;uJrX0N2Oi8(T>~zw(b24{@`fsTh10$>KY5Y z?N70>bb2#80=l)0msITRO4fxF8|t;`X&#?6*w}4(v*F|pzBBgu17u76NlF4wo4OAV zMMFCh$L;$Mhso9MvkeKyGfFGB=-qCyJu@?V=}#TL>4mDB`?CpfmCXxr{JuniPV|KW zb0FL5PSZL%TwO)v0|O0V#8uGYOt06Teg^K|j(zvZJUqK_hHF8R33l0&TFV<19 zpJd6x3^^gjqEc0=Ms8> z?IBr(d4FDZ`-)%M{BrkkaJY!QX2l~web-gm1^yphMQ3rE$MKJ z0{LmF8h4E|MXIM3_xqT0u?$qyH2g3zQ|I(*P1Fu^Yq8|{7+BZ~PQ~}ORLb`BUGT_H#o6my#|kU`v(u3Xr8$qE%WF6F2*az1tt~*Vh%)WxV2#e5VBeSrIREtIZye7=TH19y z<`vOwY242SPEuRnUH$q#`fjwvTYI5nYiMZuC5_PkkN}nQhgP^#x&H!QzV7`Q>6XOv zz=PnGID5(I;Q(nmffS`1kr+y5x$9whrM=h-cy7^8O*IA~Uh&Cj=tb0%!>si&Qsrz6VJ3hdn^kWrYy&RQaVXY;!Ksz~%m4quM#ErKdQ(J^(8M7DdhIQd)Ghhpe z@p{P|*0#2(67f9;u^zzaG#@Xcy-_8$(R-^m%QFTj<;&s!^W@)NC@*gJ;o95N5jB)o z?YI?VD??nTsUBLk^;xxB)!~Zmtq+cau7s_-oef;{m)X2oD;up*9+E|PO|>6n08Y5L z+Q#{d#hBcs@U;c+1O{CM{HG8EEF=X!XJCF(Ty)b@gabAEQnyozbI>UMoB$iept=wS zsj_J8ExQkj^6Mt>#0zLKxq8mrwAHb3EI;Gr23_M$=MREZC;12Kv+jq&Z-Jvt3TY(r zmv^%{eP0p-WjEUG2A42wy*#~L&}HKh~0t54hLF&fQJ_SlXpxVF~2>_?fz+PV+1 zn5Kv{BT!Vedb@w;Z{M~p!Gcrxt`@Wm_Gk?Jgc@ED4(C^BI@7G7cZ2m+y(bPx&HlEc zpXU~8BzY^FO)rKFLdVt#*F+CIv0tT!MeXqmTM^du$LY)^Eg%BL#prRA@ry}pM0EXi~hUR(NAW%y46T)J`+3VeCh!9{)Vjw zImsOEE%UPC9}1Nukx0RMmx`R)Jd4UVw%qKC{>(=x&6qqZILxF%X6+(s4Pp#zDJmM9 z&jqj!;tTgngVXsf`d2v+M#gX)MXMn915&ph&PW_hK`bkR^qBMAwp5>Fr@MHbv|nhG z_)x4vUP{M|zxE(*eK?Z5cq`u`qI z@N%5Ce1@l2r8l*SO-YUzkkLhVM~gedXt9>P)5N~5TFtWvDghmN`yO$Y!`gfAC6R=) zHDSyq$i#`pEAj^V2SluYy=+dBi=8A#-Kj;Pd1uy5qGrU-JR!2t*a_dEPWB0d!PtH2 zf2{rPZ#AEalLCxrIipKbqYdd+F-cW-oAdiLZ$sWKiRTp#YmR~sub~zu*-6+i17wM zlGo?|Snn2j?wla;`jri9zz?EXXW^OuN-Aq3b=4i?IJuD*>rKzG;AO3F>*|C9{#T}n z<=+#PhJHH*fdQsPkB&;e2Gyu7ws1m(g6W;)zKHEybd4P~#Nh|~O!4H$og+rDPQ?>l z_1qMXNvS+8J%@D3LUMNXynZZuFcUPAlLTBpb#L?psScpyeF5R(qX?*%I=W1;6;`x@;-(+%EFYn6-tzH|feFPWW=SYuWDM}I&+ zYY2rWq#C|N_G~#rD2}2K+G?f~4IB#241tI#uTy3H8j;SXgb|2fMERrVjxF+SNy3kt zP664aVlRUiUqR(js?FvW2MC2qtS7#3-tQKmW+MqS!Wh;>Nff3`&b++s=Rg!1%yWU0 zHl+RM6@X+I;!5X z%ky7KhfbtHicMXm)Y5WqD!&TXCMvQ|o?Y`#3bg^C6-`>BcOmJ2+kzf{3<( zvJn*R`Kt!bbk%>V8`A6qg0fwUuTDDg0?2m)=nNxe;cFH{@8S;V&!(_h%LABfh%7zX zcnDX+(=SmIcX$N3Qt~}K8N}!MTzQ8hB99`Ck@@gDkuLn!#r(B#{`TBYbp*JW=9Y?q z!_8Jo&nujVsI)XvxR*;da6x}k%E*p~do_dVMwUi$8mgtN!W$5XNg4Ds&^3Nhk%|z6 zD^IxiI@ka7HFIX|wFtvokBar$;AZoy)1%#tGoNc|*PuVGFTgC%SD87ko5!!=EKFB7 zFH*GpeprTV8@57l%n#GgAmI9eq&*I2XOe+ZYst7y9!gp+M&$@Udmh+t65TTf-f3H5 zwZ`bah0&I0w7^NxwbtPy=60WQ96c#Sy!EyN*u@DDJ(p2c$! z;^B4MyhcWw$IlPHgX0LlIUX;%{I%4&swYU(?lltln{V!W6=g}(bGd>1t$n?%{bz4Z zOl)$u;pG24QNio!w(0sQE98HsdG!!snwdn?)^dOijp1~i9Cz$^6#AHA@aBF{g6If9 z%^0^K8PP?H{5ITOy93P#$Zl8|*tyx|mpD`xSWzcVP$5&8Qi)$YhxF*EqVY643C8H% zK4B4>-4sAudvD7kjoIMrdbRDcSf)?TWv(p~BHFt4@1=&@uIsOtvh;2KS@&BV0as_P zWrBfAl!FitN~}3|?GVaH-8sS6?JzcSfB5()4<>F-=rr^(<)Yh+zz;u|2mNm}>SC5% zox3(6a34Ww6T6)#xI4ficy)nnKlln%qv+4t^j^JLN$|Y#t!gr@Yo5YrcAw77tspP9 it9@Hs@!{OYaD|*$g-^5CNiT!&mzt86;zxO_kpBZ^|0LW1 diff --git a/modular_citadel/code/modules/reagents/chemistry/reagents/SDGF.dm b/modular_citadel/code/modules/reagents/chemistry/reagents/SDGF.dm index 741a7a7e..ed821fed 100644 --- a/modular_citadel/code/modules/reagents/chemistry/reagents/SDGF.dm +++ b/modular_citadel/code/modules/reagents/chemistry/reagents/SDGF.dm @@ -286,6 +286,7 @@ IMPORTANT FACTORS TO CONSIDER WHILE BALANCING M.adjustCloneLoss(-2, 0) M.setOrganLoss(ORGAN_SLOT_BRAIN, -1) M.nutrition += 10 + M.thirst += 10 ..() //Unobtainable, used if SDGF is impure but not too impure diff --git a/modular_citadel/code/modules/reagents/reagents/cit_reagents.dm b/modular_citadel/code/modules/reagents/reagents/cit_reagents.dm index 5bce8969..7f8b9d47 100644 --- a/modular_citadel/code/modules/reagents/reagents/cit_reagents.dm +++ b/modular_citadel/code/modules/reagents/reagents/cit_reagents.dm @@ -12,6 +12,7 @@ glass_icon_state = "semen" glass_name = "chalice of semen" glass_desc = "In the Sumerian mythology, Enki - the God of water, was believed to have created the Tigris and Euphrates rivers by masturbating and ejaculating into their empty riverbeds." + hydration = 2 * REAGENTS_METABOLISM //thats one way to stay hydrated... /datum/reagent/consumable/semen/reaction_turf(turf/T, reac_volume) if(!istype(T)) @@ -55,6 +56,7 @@ color = "#AAAAAA77" can_synth = FALSE nutriment_factor = 0.5 * REAGENTS_METABOLISM + hydration = 1 * REAGENTS_METABOLISM //thats one way to stay hydrated... /obj/effect/decal/cleanable/femcum name = "female ejaculate"