From b560ff82844599b2259377bb877479573bc9c46c Mon Sep 17 00:00:00 2001 From: Ghommie <42542238+Ghommie@users.noreply.github.com> Date: Sun, 17 Nov 2019 06:23:12 +0100 Subject: [PATCH 001/192] refactoring code to allow all living mobs to use shields. --- code/__HELPERS/unsorted.dm | 10 --- code/_onclick/item_attack.dm | 20 ++--- .../mob/living/carbon/alien/alien_defense.dm | 15 ++-- .../carbon/alien/humanoid/humanoid_defense.dm | 74 +++++++++---------- .../mob/living/carbon/carbon_defense.dm | 65 ++++++++-------- .../mob/living/carbon/human/human_defense.dm | 53 ++++--------- .../mob/living/carbon/human/species.dm | 5 -- .../living/carbon/monkey/monkey_defense.dm | 4 +- code/modules/mob/living/living_defense.dm | 34 ++++++++- .../mob/living/silicon/ai/ai_defense.dm | 20 ++++- .../mob/living/silicon/pai/pai_defense.dm | 3 + .../mob/living/silicon/silicon_defense.dm | 15 ---- .../living/simple_animal/animal_defense.dm | 4 +- code/modules/paperwork/paperplane.dm | 2 +- 14 files changed, 167 insertions(+), 157 deletions(-) diff --git a/code/__HELPERS/unsorted.dm b/code/__HELPERS/unsorted.dm index 9abe42ea8e..43791a5642 100644 --- a/code/__HELPERS/unsorted.dm +++ b/code/__HELPERS/unsorted.dm @@ -758,16 +758,6 @@ GLOBAL_LIST_INIT(can_embed_types, typecacheof(list( /obj/item/stack/rods, /obj/item/pipe))) -/proc/can_embed(obj/item/W) - if(W.get_sharpness()) - return 1 - if(is_pointed(W)) - return 1 - - if(is_type_in_typecache(W, GLOB.can_embed_types)) - return 1 - - /* Checks if that loc and dir has an item on the wall */ diff --git a/code/_onclick/item_attack.dm b/code/_onclick/item_attack.dm index 3a45e9bf60..9107fa9e3e 100644 --- a/code/_onclick/item_attack.dm +++ b/code/_onclick/item_attack.dm @@ -109,17 +109,19 @@ take_damage(I.force, I.damtype, "melee", 1) /mob/living/attacked_by(obj/item/I, mob/living/user) + //CIT CHANGES START HERE - combatmode and resting checks + var/totitemdamage = I.force + if(iscarbon(user)) + var/mob/living/carbon/tempcarb = user + if(!tempcarb.combatmode) + totitemdamage *= 0.5 + if(user.resting) + totitemdamage *= 0.5 + //CIT CHANGES END HERE + if(user != src && check_shields(I, totitemdamage, "the [I.name]", MELEE_ATTACK, I.armour_penetration)) + return FALSE send_item_attack_message(I, user) if(I.force) - //CIT CHANGES START HERE - combatmode and resting checks - var/totitemdamage = I.force - if(iscarbon(user)) - var/mob/living/carbon/tempcarb = user - if(!tempcarb.combatmode) - totitemdamage *= 0.5 - if(user.resting) - totitemdamage *= 0.5 - //CIT CHANGES END HERE apply_damage(totitemdamage, I.damtype) //CIT CHANGE - replaces I.force with totitemdamage if(I.damtype == BRUTE) if(prob(33)) diff --git a/code/modules/mob/living/carbon/alien/alien_defense.dm b/code/modules/mob/living/carbon/alien/alien_defense.dm index b9e27c0637..b6fbe3a875 100644 --- a/code/modules/mob/living/carbon/alien/alien_defense.dm +++ b/code/modules/mob/living/carbon/alien/alien_defense.dm @@ -6,8 +6,10 @@ return 2 //no ears /mob/living/carbon/alien/hitby(atom/movable/AM, skipcatch, hitpush) - ..(AM, skipcatch = TRUE, hitpush = FALSE) + return ..(AM, skipcatch = TRUE, hitpush = FALSE) +/mob/living/carbon/alien/can_embed(obj/item/I) + return FALSE /*Code for aliens attacking aliens. Because aliens act on a hivemind, I don't see them as very aggressive with each other. As such, they can either help or harm other aliens. Help works like the human help command while harm is a simple nibble. @@ -50,9 +52,9 @@ In all, this is a lot like the monkey code. /N /mob/living/carbon/alien/attack_hand(mob/living/carbon/human/M) - if(..()) //to allow surgery to return properly. - return 0 - + . = ..() + if(.) //To allow surgery to return properly. + return switch(M.a_intent) if("help") help_shake_act(M) @@ -60,11 +62,10 @@ In all, this is a lot like the monkey code. /N grabbedby(M) if ("harm") M.do_attack_animation(src, ATTACK_EFFECT_PUNCH) - return 1 + return FALSE if("disarm") M.do_attack_animation(src, ATTACK_EFFECT_DISARM) - return 1 - return 0 + return FALSE /mob/living/carbon/alien/attack_paw(mob/living/carbon/monkey/M) diff --git a/code/modules/mob/living/carbon/alien/humanoid/humanoid_defense.dm b/code/modules/mob/living/carbon/alien/humanoid/humanoid_defense.dm index b3839a6033..c2be4249a2 100644 --- a/code/modules/mob/living/carbon/alien/humanoid/humanoid_defense.dm +++ b/code/modules/mob/living/carbon/alien/humanoid/humanoid_defense.dm @@ -21,46 +21,46 @@ return 1 /mob/living/carbon/alien/humanoid/attack_hand(mob/living/carbon/human/M) - if(..()) - switch(M.a_intent) - if ("harm") - var/damage = rand(1, 9) - if (prob(90)) - playsound(loc, "punch", 25, 1, -1) - visible_message("[M] has punched [src]!", \ - "[M] has punched [src]!", null, COMBAT_MESSAGE_RANGE) - if ((stat != DEAD) && (damage > 9 || prob(5)))//Regular humans have a very small chance of knocking an alien down. - Unconscious(40) - visible_message("[M] has knocked [src] down!", \ - "[M] has knocked [src] down!") - var/obj/item/bodypart/affecting = get_bodypart(ran_zone(M.zone_selected)) - apply_damage(damage, BRUTE, affecting) - log_combat(M, src, "attacked") + . = ..() + if(.) //To allow surgery to return properly. + return + switch(M.a_intent) + if ("harm") + var/damage = rand(1, 9) + if (prob(90)) + playsound(loc, "punch", 25, 1, -1) + visible_message("[M] has punched [src]!", \ + "[M] has punched [src]!", null, COMBAT_MESSAGE_RANGE) + if ((stat != DEAD) && (damage > 9 || prob(5)))//Regular humans have a very small chance of knocking an alien down. + Unconscious(40) + visible_message("[M] has knocked [src] down!", \ + "[M] has knocked [src] down!") + var/obj/item/bodypart/affecting = get_bodypart(ran_zone(M.zone_selected)) + apply_damage(damage, BRUTE, affecting) + log_combat(M, src, "attacked") + else + playsound(loc, 'sound/weapons/punchmiss.ogg', 25, 1, -1) + visible_message("[M] has attempted to punch [src]!", \ + "[M] has attempted to punch [src]!", null, COMBAT_MESSAGE_RANGE) + + if ("disarm") + if (!lying) + if (prob(5)) + Unconscious(40) + playsound(loc, 'sound/weapons/thudswoosh.ogg', 50, 1, -1) + log_combat(M, src, "pushed") + visible_message("[M] has pushed down [src]!", \ + "[M] has pushed down [src]!") else - playsound(loc, 'sound/weapons/punchmiss.ogg', 25, 1, -1) - visible_message("[M] has attempted to punch [src]!", \ - "[M] has attempted to punch [src]!", null, COMBAT_MESSAGE_RANGE) - - if ("disarm") - if (!lying) - if (prob(5)) - Unconscious(40) + if (prob(50)) + dropItemToGround(get_active_held_item()) playsound(loc, 'sound/weapons/thudswoosh.ogg', 50, 1, -1) - log_combat(M, src, "pushed") - visible_message("[M] has pushed down [src]!", \ - "[M] has pushed down [src]!") + visible_message("[M] has disarmed [src]!", \ + "[M] has disarmed [src]!", null, COMBAT_MESSAGE_RANGE) else - if (prob(50)) - dropItemToGround(get_active_held_item()) - playsound(loc, 'sound/weapons/thudswoosh.ogg', 50, 1, -1) - visible_message("[M] has disarmed [src]!", \ - "[M] has disarmed [src]!", null, COMBAT_MESSAGE_RANGE) - else - playsound(loc, 'sound/weapons/punchmiss.ogg', 25, 1, -1) - visible_message("[M] has attempted to disarm [src]!",\ - "[M] has attempted to disarm [src]!", null, COMBAT_MESSAGE_RANGE) - - + playsound(loc, 'sound/weapons/punchmiss.ogg', 25, 1, -1) + visible_message("[M] has attempted to disarm [src]!",\ + "[M] has attempted to disarm [src]!", null, COMBAT_MESSAGE_RANGE) /mob/living/carbon/alien/humanoid/do_attack_animation(atom/A, visual_effect_icon, obj/item/used_item, no_effect) if(!no_effect && !visual_effect_icon) diff --git a/code/modules/mob/living/carbon/carbon_defense.dm b/code/modules/mob/living/carbon/carbon_defense.dm index b0e9b808df..6f03ea4364 100644 --- a/code/modules/mob/living/carbon/carbon_defense.dm +++ b/code/modules/mob/living/carbon/carbon_defense.dm @@ -48,31 +48,48 @@ if(affecting && affecting.dismemberable && affecting.get_damage() >= (affecting.max_damage - P.dismemberment)) affecting.dismember(P.damtype) -/mob/living/carbon/proc/can_catch_item(skip_throw_mode_check) - . = FALSE +/mob/living/carbon/catch_item(obj/item/I, skip_throw_mode_check = FALSE) + . = ..() if(!skip_throw_mode_check && !in_throw_mode) return if(get_active_held_item()) return if(restrained()) return - return TRUE + I.attack_hand(src) + if(get_active_held_item() == I) //if our attack_hand() picks up the item... + visible_message("[src] catches [I]!") //catch that sucker! + throw_mode_off() + return TRUE -/mob/living/carbon/hitby(atom/movable/AM, skipcatch, hitpush = TRUE, blocked = FALSE) - if(!skipcatch) //ugly, but easy - if(can_catch_item()) - if(istype(AM, /obj/item)) - var/obj/item/I = AM - if(isturf(I.loc)) - I.attack_hand(src) - if(get_active_held_item() == I) //if our attack_hand() picks up the item... - visible_message("[src] catches [I]!") //catch that sucker! - throw_mode_off() - return 1 - ..() +/mob/living/carbon/can_embed(obj/item/I) + if(I.get_sharpness() || is_pointed(I) || is_type_in_typecache(I, GLOB.can_embed_types)) + return TRUE +/mob/living/carbon/embed_item(obj/item/I) + throw_alert("embeddedobject", /obj/screen/alert/embeddedobject) + var/obj/item/bodypart/L = pick(bodyparts) + L.embedded_objects |= I + I.add_mob_blood(src)//it embedded itself in you, of course it's bloody! + I.forceMove(src) + L.receive_damage(I.w_class*I.embedding.embedded_impact_pain_multiplier) + visible_message("[I] embeds itself in [src]'s [L.name]!","[I] embeds itself in your [L.name]!") + SEND_SIGNAL(src, COMSIG_ADD_MOOD_EVENT, "embedded", /datum/mood_event/embedded) /mob/living/carbon/attacked_by(obj/item/I, mob/living/user) + //CIT CHANGES START HERE - combatmode and resting checks + var/totitemdamage = I.force + if(iscarbon(user)) + var/mob/living/carbon/tempcarb = user + if(!tempcarb.combatmode) + totitemdamage *= 0.5 + if(user.resting) + totitemdamage *= 0.5 + if(!combatmode) + totitemdamage *= 1.5 + //CIT CHANGES END HERE + if(user != src && check_shields(I, totitemdamage, "the [I.name]", MELEE_ATTACK, I.armour_penetration)) + return FALSE var/obj/item/bodypart/affecting if(user == src) affecting = get_bodypart(check_zone(user.zone_selected)) //we're self-mutilating! yay! @@ -83,17 +100,6 @@ SEND_SIGNAL(I, COMSIG_ITEM_ATTACK_ZONE, src, user, affecting) send_item_attack_message(I, user, affecting.name) if(I.force) - //CIT CHANGES START HERE - combatmode and resting checks - var/totitemdamage = I.force - if(iscarbon(user)) - var/mob/living/carbon/tempcarb = user - if(!tempcarb.combatmode) - totitemdamage *= 0.5 - if(user.resting) - totitemdamage *= 0.5 - if(!combatmode) - totitemdamage *= 1.5 - //CIT CHANGES END HERE apply_damage(totitemdamage, I.damtype, affecting) //CIT CHANGE - replaces I.force with totitemdamage if(I.damtype == BRUTE && affecting.status == BODYPART_ORGANIC) var/basebloodychance = affecting.brute_dam + totitemdamage @@ -127,7 +133,9 @@ //ATTACK HAND IGNORING PARENT RETURN VALUE /mob/living/carbon/attack_hand(mob/living/carbon/human/user) - + . = ..() + if(.) //To allow surgery to return properly. + return for(var/thing in diseases) var/datum/disease/D = thing if(D.spread_flags & DISEASE_SPREAD_CONTACT_SKIN) @@ -142,8 +150,7 @@ if(user.a_intent == INTENT_HELP || user.a_intent == INTENT_DISARM) for(var/datum/surgery/S in surgeries) if(S.next_step(user, user.a_intent)) - return 1 - return 0 + return TRUE /mob/living/carbon/attack_paw(mob/living/carbon/monkey/M) diff --git a/code/modules/mob/living/carbon/human/human_defense.dm b/code/modules/mob/living/carbon/human/human_defense.dm index 2ab7c6d404..fda60aeb98 100644 --- a/code/modules/mob/living/carbon/human/human_defense.dm +++ b/code/modules/mob/living/carbon/human/human_defense.dm @@ -100,23 +100,29 @@ return 1 return 0 -/mob/living/carbon/human/proc/check_shields(atom/AM, var/damage, attack_text = "the attack", attack_type = MELEE_ATTACK, armour_penetration = 0) +/mob/living/proc/check_shields(atom/AM, damage, attack_text = "the attack", attack_type = MELEE_ATTACK, armour_penetration = 0) var/block_chance_modifier = round(damage / -3) - for(var/obj/item/I in held_items) if(!istype(I, /obj/item/clothing)) var/final_block_chance = I.block_chance - (CLAMP((armour_penetration-I.armour_penetration)/2,0,100)) + block_chance_modifier //So armour piercing blades can still be parried by other blades, for example if(I.hit_reaction(src, AM, attack_text, final_block_chance, damage, attack_type)) - return 1 + return TRUE + return FALSE + +/mob/living/carbon/human/check_shields(atom/AM, damage, attack_text = "the attack", attack_type = MELEE_ATTACK, armour_penetration = 0) + . = ..() + if(.) + return + var/block_chance_modifier = round(damage / -3) if(wear_suit) var/final_block_chance = wear_suit.block_chance - (CLAMP((armour_penetration-wear_suit.armour_penetration)/2,0,100)) + block_chance_modifier if(wear_suit.hit_reaction(src, AM, attack_text, final_block_chance, damage, attack_type)) - return 1 + return TRUE if(w_uniform) var/final_block_chance = w_uniform.block_chance - (CLAMP((armour_penetration-w_uniform.armour_penetration)/2,0,100)) + block_chance_modifier if(w_uniform.hit_reaction(src, AM, attack_text, final_block_chance, damage, attack_type)) - return 1 - return 0 + return TRUE + return FALSE /mob/living/carbon/human/proc/check_block() if(mind) @@ -125,37 +131,7 @@ return FALSE /mob/living/carbon/human/hitby(atom/movable/AM, skipcatch = FALSE, hitpush = TRUE, blocked = FALSE) - if(dna && dna.species) - var/spec_return = dna.species.spec_hitby(AM, src) - if(spec_return) - return spec_return - var/obj/item/I - var/throwpower = 30 - if(istype(AM, /obj/item)) - I = AM - throwpower = I.throwforce - if(I.thrownby == src) //No throwing stuff at yourself to trigger hit reactions - return ..() - if(check_shields(AM, throwpower, "\the [AM.name]", THROWN_PROJECTILE_ATTACK)) - hitpush = FALSE - skipcatch = TRUE - blocked = TRUE - else if(I) - if(I.throw_speed >= EMBED_THROWSPEED_THRESHOLD) - if(can_embed(I)) - if(prob(I.embedding.embed_chance) && !HAS_TRAIT(src, TRAIT_PIERCEIMMUNE)) - throw_alert("embeddedobject", /obj/screen/alert/embeddedobject) - var/obj/item/bodypart/L = pick(bodyparts) - L.embedded_objects |= I - I.add_mob_blood(src)//it embedded itself in you, of course it's bloody! - I.forceMove(src) - L.receive_damage(I.w_class*I.embedding.embedded_impact_pain_multiplier) - visible_message("[I] embeds itself in [src]'s [L.name]!","[I] embeds itself in your [L.name]!") - SEND_SIGNAL(src, COMSIG_ADD_MOOD_EVENT, "embedded", /datum/mood_event/embedded) - hitpush = FALSE - skipcatch = TRUE //can't catch the now embedded item - - return ..() + return dna?.species?.spec_hitby(AM, src) || ..() /mob/living/carbon/human/grabbedby(mob/living/carbon/user, supress_message = 0) if(user == src && pulling && !pulling.anchored && grab_state >= GRAB_AGGRESSIVE && (HAS_TRAIT(src, TRAIT_FAT)) && ismonkey(pulling)) @@ -203,7 +179,8 @@ return 1 /mob/living/carbon/human/attack_hand(mob/user) - if(..()) //to allow surgery to return properly. + . = ..() + if(.) //To allow surgery to return properly. return if(ishuman(user)) var/mob/living/carbon/human/H = user diff --git a/code/modules/mob/living/carbon/human/species.dm b/code/modules/mob/living/carbon/human/species.dm index 49ae178d8c..b54f30df57 100644 --- a/code/modules/mob/living/carbon/human/species.dm +++ b/code/modules/mob/living/carbon/human/species.dm @@ -1678,11 +1678,6 @@ GLOBAL_LIST_EMPTY(roundstart_race_names) return if(M.mind) attacker_style = M.mind.martial_art - if((M != H) && M.a_intent != INTENT_HELP && H.check_shields(M, 0, M.name, attack_type = UNARMED_ATTACK)) - log_combat(M, H, "attempted to touch") - H.visible_message("[M] attempted to touch [H]!") - return 0 - SEND_SIGNAL(M, COMSIG_MOB_ATTACK_HAND, M, H, attacker_style) switch(M.a_intent) if("help") help(M, H, attacker_style) diff --git a/code/modules/mob/living/carbon/monkey/monkey_defense.dm b/code/modules/mob/living/carbon/monkey/monkey_defense.dm index df90dd56fd..da5f8e75c3 100644 --- a/code/modules/mob/living/carbon/monkey/monkey_defense.dm +++ b/code/modules/mob/living/carbon/monkey/monkey_defense.dm @@ -28,9 +28,9 @@ apply_damage(damage, BRUTE, affecting) /mob/living/carbon/monkey/attack_hand(mob/living/carbon/human/M) - if(..()) //To allow surgery to return properly. + . = ..() + if(.) //To allow surgery to return properly. return - switch(M.a_intent) if("help") help_shake_act(M) diff --git a/code/modules/mob/living/living_defense.dm b/code/modules/mob/living/living_defense.dm index 93e64fd4cc..f5dd982ad5 100644 --- a/code/modules/mob/living/living_defense.dm +++ b/code/modules/mob/living/living_defense.dm @@ -55,9 +55,32 @@ else return 0 +/mob/living/proc/catch_item(obj/item/I, skip_throw_mode_check = FALSE) + return FALSE + +/mob/living/proc/embed_item(obj/item/I) + return + +/mob/living/proc/can_embed(obj/item/I) + return FALSE + /mob/living/hitby(atom/movable/AM, skipcatch, hitpush = TRUE, blocked = FALSE) - if(istype(AM, /obj/item)) - var/obj/item/I = AM + var/obj/item/I + var/throwpower = 30 + if(isitem(AM)) + I = AM + throwpower = I.throwforce + if(check_shields(AM, throwpower, "\the [AM.name]", THROWN_PROJECTILE_ATTACK)) + hitpush = FALSE + skipcatch = TRUE + blocked = TRUE + else if(I && I.throw_speed >= EMBED_THROWSPEED_THRESHOLD && can_embed(I, src) && prob(I.embedding.embed_chance) && !HAS_TRAIT(src, TRAIT_PIERCEIMMUNE)) + embed_item(I) + hitpush = FALSE + skipcatch = TRUE //can't catch the now embedded item + if(I) + if(!skipcatch && isturf(I.loc) && catch_item(I)) + return TRUE var/zone = ran_zone(BODY_ZONE_CHEST, 65)//Hits a random part of the body, geared towards the chest var/dtype = BRUTE var/volume = I.get_volume_by_throwforce_and_or_w_class() @@ -211,6 +234,13 @@ Move(user.loc) return 1 +/mob/living/attack_hand(mob/user) + ..() //Ignoring parent return value here. + SEND_SIGNAL(user, COMSIG_MOB_ATTACK_HAND, user, src) + if((user != src) && user.a_intent != INTENT_HELP && check_shields(user, 0, user.name, attack_type = UNARMED_ATTACK)) + log_combat(user, src, "attempted to touch") + visible_message("[user] attempted to touch [src]!") + return TRUE /mob/living/attack_slime(mob/living/simple_animal/slime/M) if(!SSticker.HasRoundStarted()) diff --git a/code/modules/mob/living/silicon/ai/ai_defense.dm b/code/modules/mob/living/silicon/ai/ai_defense.dm index 7c59c2b791..8799d34a08 100644 --- a/code/modules/mob/living/silicon/ai/ai_defense.dm +++ b/code/modules/mob/living/silicon/ai/ai_defense.dm @@ -1,8 +1,26 @@ +//ATTACK HAND IGNORING PARENT RETURN VALUE +/mob/living/silicon/ai/attack_hand(mob/living/carbon/human/M) + . = ..() + if(.) //the attack was blocked + return + switch(M.a_intent) + if ("help") + M.visible_message("[M] pets [src].", \ + "You pet [src].") + if("grab") + grabbedby(M) + else + M.do_attack_animation(src, ATTACK_EFFECT_PUNCH) + playsound(src.loc, 'sound/effects/bang.ogg', 10, 1) + visible_message("[M] punches [src], but doesn't leave a dent.", \ + "[M] punches [src], but doesn't leave a dent.", null, COMBAT_MESSAGE_RANGE) /mob/living/silicon/ai/attacked_by(obj/item/I, mob/living/user, def_zone) + . = ..() + if(!.) + return FALSE if(I.force && I.damtype != STAMINA && stat != DEAD) //only sparks if real damage is dealt. spark_system.start() - return ..() /mob/living/silicon/ai/attack_alien(mob/living/carbon/alien/humanoid/M) diff --git a/code/modules/mob/living/silicon/pai/pai_defense.dm b/code/modules/mob/living/silicon/pai/pai_defense.dm index dda8ddfebd..647951ed4e 100644 --- a/code/modules/mob/living/silicon/pai/pai_defense.dm +++ b/code/modules/mob/living/silicon/pai/pai_defense.dm @@ -27,6 +27,9 @@ Knockdown(200) /mob/living/silicon/pai/attack_hand(mob/living/carbon/human/user) + . = ..() + if(.) + return switch(user.a_intent) if("help") visible_message("[user] gently pats [src] on the head, eliciting an off-putting buzzing from its holographic field.") diff --git a/code/modules/mob/living/silicon/silicon_defense.dm b/code/modules/mob/living/silicon/silicon_defense.dm index 073a2eec2b..482ecc429f 100644 --- a/code/modules/mob/living/silicon/silicon_defense.dm +++ b/code/modules/mob/living/silicon/silicon_defense.dm @@ -63,21 +63,6 @@ return 1 return 0 -//ATTACK HAND IGNORING PARENT RETURN VALUE -/mob/living/silicon/attack_hand(mob/living/carbon/human/M) - switch(M.a_intent) - if ("help") - M.visible_message("[M] pets [src].", \ - "You pet [src].") - if("grab") - grabbedby(M) - else - M.do_attack_animation(src, ATTACK_EFFECT_PUNCH) - playsound(src.loc, 'sound/effects/bang.ogg', 10, 1) - visible_message("[M] punches [src], but doesn't leave a dent.", \ - "[M] punches [src], but doesn't leave a dent.", null, COMBAT_MESSAGE_RANGE) - return 0 - /mob/living/silicon/attack_drone(mob/living/simple_animal/drone/M) if(M.a_intent == INTENT_HARM) return diff --git a/code/modules/mob/living/simple_animal/animal_defense.dm b/code/modules/mob/living/simple_animal/animal_defense.dm index 793df63c87..e74b29be44 100644 --- a/code/modules/mob/living/simple_animal/animal_defense.dm +++ b/code/modules/mob/living/simple_animal/animal_defense.dm @@ -1,7 +1,9 @@ /mob/living/simple_animal/attack_hand(mob/living/carbon/human/M) - ..() + . = ..() + if(.) //the attack was blocked + return switch(M.a_intent) if("help") if (health > 0) diff --git a/code/modules/paperwork/paperplane.dm b/code/modules/paperwork/paperplane.dm index b547089aef..9ba7fba157 100644 --- a/code/modules/paperwork/paperplane.dm +++ b/code/modules/paperwork/paperplane.dm @@ -100,7 +100,7 @@ /obj/item/paperplane/throw_impact(atom/hit_atom) if(iscarbon(hit_atom)) var/mob/living/carbon/C = hit_atom - if(C.can_catch_item(TRUE)) + if(!get_active_held_item() && !restrained()) var/datum/action/innate/origami/origami_action = locate() in C.actions if(origami_action?.active) //if they're a master of origami and have the ability turned on, force throwmode on so they'll automatically catch the plane. C.throw_mode_on() From 5d06ea5d486a40900d68221307e334a32f352673 Mon Sep 17 00:00:00 2001 From: Ghommie <42542238+Ghommie@users.noreply.github.com> Date: Sun, 17 Nov 2019 07:16:53 +0100 Subject: [PATCH 002/192] o --- code/modules/paperwork/paperplane.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/modules/paperwork/paperplane.dm b/code/modules/paperwork/paperplane.dm index 9ba7fba157..0920b76332 100644 --- a/code/modules/paperwork/paperplane.dm +++ b/code/modules/paperwork/paperplane.dm @@ -100,7 +100,7 @@ /obj/item/paperplane/throw_impact(atom/hit_atom) if(iscarbon(hit_atom)) var/mob/living/carbon/C = hit_atom - if(!get_active_held_item() && !restrained()) + if(!C.get_active_held_item() && !C.restrained()) var/datum/action/innate/origami/origami_action = locate() in C.actions if(origami_action?.active) //if they're a master of origami and have the ability turned on, force throwmode on so they'll automatically catch the plane. C.throw_mode_on() From 6e9d2d57c08244309234a6efbf0818511cf26e9a Mon Sep 17 00:00:00 2001 From: Ghommie <42542238+Ghommie@users.noreply.github.com> Date: Sun, 17 Nov 2019 22:06:19 +0100 Subject: [PATCH 003/192] check_shields from human to living, part 2 --- code/game/atoms.dm | 2 +- .../mob/living/carbon/alien/alien_defense.dm | 35 +++--- .../carbon/alien/humanoid/humanoid_defense.dm | 10 +- .../carbon/alien/larva/larva_defense.dm | 38 ++++--- .../mob/living/carbon/carbon_defense.dm | 2 +- .../mob/living/carbon/human/human_defense.dm | 105 +++++++----------- .../mob/living/carbon/monkey/combat.dm | 22 ++++ .../living/carbon/monkey/monkey_defense.dm | 99 +++++++++-------- code/modules/mob/living/living_defense.dm | 36 +++++- .../mob/living/silicon/ai/ai_defense.dm | 24 ---- .../mob/living/silicon/pai/pai_defense.dm | 23 ++-- .../mob/living/silicon/robot/robot_defense.dm | 36 +++--- .../mob/living/silicon/silicon_defense.dm | 44 ++++++-- .../living/simple_animal/animal_defense.dm | 51 +++++---- .../mob/living/simple_animal/bot/honkbot.dm | 2 +- .../mob/living/simple_animal/friendly/cat.dm | 8 +- .../mob/living/simple_animal/friendly/dog.dm | 4 +- .../friendly/drone/interaction.dm | 38 +++---- .../living/simple_animal/hostile/mushroom.dm | 4 +- .../mob/living/simple_animal/slime/slime.dm | 10 +- 20 files changed, 316 insertions(+), 277 deletions(-) diff --git a/code/game/atoms.dm b/code/game/atoms.dm index e8651ba93d..f9c45184b7 100644 --- a/code/game/atoms.dm +++ b/code/game/atoms.dm @@ -164,7 +164,7 @@ return FALSE -/atom/proc/attack_hulk(mob/living/carbon/human/user, does_attack_animation = 0) +/atom/proc/attack_hulk(mob/living/carbon/human/user, does_attack_animation = FALSE) SEND_SIGNAL(src, COMSIG_ATOM_HULK_ATTACK, user) if(does_attack_animation) user.changeNext_move(CLICK_CD_MELEE) diff --git a/code/modules/mob/living/carbon/alien/alien_defense.dm b/code/modules/mob/living/carbon/alien/alien_defense.dm index b6fbe3a875..839239a888 100644 --- a/code/modules/mob/living/carbon/alien/alien_defense.dm +++ b/code/modules/mob/living/carbon/alien/alien_defense.dm @@ -16,13 +16,10 @@ As such, they can either help or harm other aliens. Help works like the human he In all, this is a lot like the monkey code. /N */ /mob/living/carbon/alien/attack_alien(mob/living/carbon/alien/M) - if(isturf(loc) && istype(loc.loc, /area/start)) - to_chat(M, "No attacking people at spawn, you jackass.") - return - + . = ..() switch(M.a_intent) - if ("help") + if (INTENT_HELP) if(!recoveringstam) resting = 0 AdjustStun(-60) @@ -31,10 +28,9 @@ In all, this is a lot like the monkey code. /N AdjustSleeping(-100) visible_message("[M.name] nuzzles [src] trying to wake [p_them()] up!") - if ("grab") - grabbedby(M) - - else + if(INTENT_DISARM, INTENT_HARM) + if(!.) // the attack was blocked or was help/grab intent + return if(health > 0) M.do_attack_animation(src, ATTACK_EFFECT_BITE) playsound(loc, 'sound/weapons/bite.ogg', 50, 1, -1) @@ -56,23 +52,26 @@ In all, this is a lot like the monkey code. /N if(.) //To allow surgery to return properly. return switch(M.a_intent) - if("help") + if(INTENT_HELP) help_shake_act(M) - if("grab") + if(INTENT_GRAB) grabbedby(M) - if ("harm") + if (INTENT_HARM) + if(HAS_TRAIT(M, TRAIT_PACIFISM)) + to_chat(M, "You don't want to hurt [src]!") + return TRUE M.do_attack_animation(src, ATTACK_EFFECT_PUNCH) - return FALSE - if("disarm") + if(INTENT_DISARM) + if(HAS_TRAIT(M, TRAIT_PACIFISM)) + to_chat(M, "You don't want to hurt [src]!") + return TRUE M.do_attack_animation(src, ATTACK_EFFECT_DISARM) - return FALSE /mob/living/carbon/alien/attack_paw(mob/living/carbon/monkey/M) if(..()) - if (stat != DEAD) - var/obj/item/bodypart/affecting = get_bodypart(ran_zone(M.zone_selected)) - apply_damage(rand(1, 3), BRUTE, affecting) + var/obj/item/bodypart/affecting = get_bodypart(ran_zone(M.zone_selected)) + apply_damage(rand(1, 3), BRUTE, affecting) /mob/living/carbon/alien/attack_animal(mob/living/simple_animal/M) diff --git a/code/modules/mob/living/carbon/alien/humanoid/humanoid_defense.dm b/code/modules/mob/living/carbon/alien/humanoid/humanoid_defense.dm index c2be4249a2..468abf251a 100644 --- a/code/modules/mob/living/carbon/alien/humanoid/humanoid_defense.dm +++ b/code/modules/mob/living/carbon/alien/humanoid/humanoid_defense.dm @@ -5,9 +5,11 @@ else ..() -/mob/living/carbon/alien/humanoid/attack_hulk(mob/living/carbon/human/user, does_attack_animation = 0) +/mob/living/carbon/alien/humanoid/attack_hulk(mob/living/carbon/human/user, does_attack_animation = FALSE) if(user.a_intent == INTENT_HARM) - ..(user, 1) + . = ..(user, TRUE) + if(.) + return adjustBruteLoss(15) var/hitverb = "punched" if(mob_size < MOB_SIZE_LARGE) @@ -25,7 +27,7 @@ if(.) //To allow surgery to return properly. return switch(M.a_intent) - if ("harm") + if (INTENT_HARM) var/damage = rand(1, 9) if (prob(90)) playsound(loc, "punch", 25, 1, -1) @@ -43,7 +45,7 @@ visible_message("[M] has attempted to punch [src]!", \ "[M] has attempted to punch [src]!", null, COMBAT_MESSAGE_RANGE) - if ("disarm") + if (INTENT_DISARM) if (!lying) if (prob(5)) Unconscious(40) diff --git a/code/modules/mob/living/carbon/alien/larva/larva_defense.dm b/code/modules/mob/living/carbon/alien/larva/larva_defense.dm index 69c1be707d..88c34f4387 100644 --- a/code/modules/mob/living/carbon/alien/larva/larva_defense.dm +++ b/code/modules/mob/living/carbon/alien/larva/larva_defense.dm @@ -1,26 +1,30 @@ /mob/living/carbon/alien/larva/attack_hand(mob/living/carbon/human/M) - if(..()) - var/damage = rand(1, 9) - if (prob(90)) - playsound(loc, "punch", 25, 1, -1) - log_combat(M, src, "attacked") - visible_message("[M] has kicked [src]!", \ - "[M] has kicked [src]!", null, COMBAT_MESSAGE_RANGE) - if ((stat != DEAD) && (damage > 4.9)) - Unconscious(rand(100,200)) + . = ..() + if(. || M.a_intent == INTENT_HELP || M.a_intent == INTENT_GRAB) + return + var/damage = rand(1, 9) + if (prob(90)) + playsound(loc, "punch", 25, 1, -1) + log_combat(M, src, "attacked") + visible_message("[M] has kicked [src]!", \ + "[M] has kicked [src]!", null, COMBAT_MESSAGE_RANGE) + if ((stat != DEAD) && (damage > 4.9)) + Unconscious(rand(100,200)) - var/obj/item/bodypart/affecting = get_bodypart(ran_zone(M.zone_selected)) - apply_damage(damage, BRUTE, affecting) - else - playsound(loc, 'sound/weapons/punchmiss.ogg', 25, 1, -1) - visible_message("[M] has attempted to kick [src]!", \ - "[M] has attempted to kick [src]!", null, COMBAT_MESSAGE_RANGE) + var/obj/item/bodypart/affecting = get_bodypart(ran_zone(M.zone_selected)) + apply_damage(damage, BRUTE, affecting) + else + playsound(loc, 'sound/weapons/punchmiss.ogg', 25, 1, -1) + visible_message("[M] has attempted to kick [src]!", \ + "[M] has attempted to kick [src]!", null, COMBAT_MESSAGE_RANGE) -/mob/living/carbon/alien/larva/attack_hulk(mob/living/carbon/human/user, does_attack_animation = 0) +/mob/living/carbon/alien/larva/attack_hulk(mob/living/carbon/human/user, does_attack_animation = FALSE) if(user.a_intent == INTENT_HARM) - ..(user, 1) + . = ..(user, TRUE) + if(.) + return adjustBruteLoss(5 + rand(1,9)) new /datum/forced_movement(src, get_step_away(user,src, 30), 1) return 1 diff --git a/code/modules/mob/living/carbon/carbon_defense.dm b/code/modules/mob/living/carbon/carbon_defense.dm index 6f03ea4364..d045e5361d 100644 --- a/code/modules/mob/living/carbon/carbon_defense.dm +++ b/code/modules/mob/living/carbon/carbon_defense.dm @@ -134,7 +134,7 @@ //ATTACK HAND IGNORING PARENT RETURN VALUE /mob/living/carbon/attack_hand(mob/living/carbon/human/user) . = ..() - if(.) //To allow surgery to return properly. + if(.) //was the attack blocked? return for(var/thing in diseases) var/datum/disease/D = thing diff --git a/code/modules/mob/living/carbon/human/human_defense.dm b/code/modules/mob/living/carbon/human/human_defense.dm index fda60aeb98..7e7cb18d37 100644 --- a/code/modules/mob/living/carbon/human/human_defense.dm +++ b/code/modules/mob/living/carbon/human/human_defense.dm @@ -85,11 +85,7 @@ return -1 // complete projectile permutation - if(check_shields(P, P.damage, "the [P.name]", PROJECTILE_ATTACK, P.armour_penetration)) - P.on_hit(src, 100, def_zone) - return 2 - - return (..(P , def_zone)) + return ..() /mob/living/carbon/human/proc/check_reflect(def_zone) //Reflection checks for anything in your l_hand, r_hand, or wear_suit based on the reflection chance of the object if(wear_suit) @@ -100,15 +96,6 @@ return 1 return 0 -/mob/living/proc/check_shields(atom/AM, damage, attack_text = "the attack", attack_type = MELEE_ATTACK, armour_penetration = 0) - var/block_chance_modifier = round(damage / -3) - for(var/obj/item/I in held_items) - if(!istype(I, /obj/item/clothing)) - var/final_block_chance = I.block_chance - (CLAMP((armour_penetration-I.armour_penetration)/2,0,100)) + block_chance_modifier //So armour piercing blades can still be parried by other blades, for example - if(I.hit_reaction(src, AM, attack_text, final_block_chance, damage, attack_type)) - return TRUE - return FALSE - /mob/living/carbon/human/check_shields(atom/AM, damage, attack_text = "the attack", attack_type = MELEE_ATTACK, armour_penetration = 0) . = ..() if(.) @@ -165,12 +152,12 @@ return dna.species.spec_attacked_by(I, user, affecting, a_intent, src) -/mob/living/carbon/human/attack_hulk(mob/living/carbon/human/user, does_attack_animation = 0) +/mob/living/carbon/human/attack_hulk(mob/living/carbon/human/user, does_attack_animation = FALSE) if(user.a_intent == INTENT_HARM) - var/hulk_verb = pick("smash","pummel") - if(check_shields(user, 15, "the [hulk_verb]ing")) + . = ..(user, TRUE) + if(.) return - ..(user, 1) + var/hulk_verb = pick("smash","pummel") playsound(loc, user.dna.species.attack_sound, 25, 1, -1) var/message = "[user] has [hulk_verb]ed [src]!" visible_message("[message]", \ @@ -214,56 +201,50 @@ if(can_inject(M, 1, affecting))//Thick suits can stop monkey bites. if(..()) //successful monkey bite, this handles disease contraction. var/damage = rand(1, 3) - if(check_shields(M, damage, "the [M.name]")) - return 0 - if(stat != DEAD) - apply_damage(damage, BRUTE, affecting, run_armor_check(affecting, "melee")) + apply_damage(damage, BRUTE, affecting, run_armor_check(affecting, "melee")) return 1 /mob/living/carbon/human/attack_alien(mob/living/carbon/alien/humanoid/M) - if(check_shields(M, 0, "the M.name")) - visible_message("[M] attempted to touch [src]!") - return 0 + . = ..() + if(!.) + return + if(M.a_intent == INTENT_HARM) + if (w_uniform) + w_uniform.add_fingerprint(M) + var/damage = prob(90) ? 20 : 0 + if(!damage) + playsound(loc, 'sound/weapons/slashmiss.ogg', 50, 1, -1) + visible_message("[M] has lunged at [src]!", \ + "[M] has lunged at [src]!") + return 0 + var/obj/item/bodypart/affecting = get_bodypart(ran_zone(M.zone_selected)) + if(!affecting) + affecting = get_bodypart(BODY_ZONE_CHEST) + var/armor_block = run_armor_check(affecting, "melee", null, null,10) - if(..()) - if(M.a_intent == INTENT_HARM) - if (w_uniform) - w_uniform.add_fingerprint(M) - var/damage = prob(90) ? 20 : 0 - if(!damage) - playsound(loc, 'sound/weapons/slashmiss.ogg', 50, 1, -1) - visible_message("[M] has lunged at [src]!", \ - "[M] has lunged at [src]!") - return 0 - var/obj/item/bodypart/affecting = get_bodypart(ran_zone(M.zone_selected)) - if(!affecting) - affecting = get_bodypart(BODY_ZONE_CHEST) - var/armor_block = run_armor_check(affecting, "melee", null, null,10) + playsound(loc, 'sound/weapons/slice.ogg', 25, 1, -1) + visible_message("[M] has slashed at [src]!", \ + "[M] has slashed at [src]!") + log_combat(M, src, "attacked") + if(!dismembering_strike(M, M.zone_selected)) //Dismemberment successful + return 1 + apply_damage(damage, BRUTE, affecting, armor_block) - playsound(loc, 'sound/weapons/slice.ogg', 25, 1, -1) - visible_message("[M] has slashed at [src]!", \ - "[M] has slashed at [src]!") - log_combat(M, src, "attacked") - if(!dismembering_strike(M, M.zone_selected)) //Dismemberment successful - return 1 - apply_damage(damage, BRUTE, affecting, armor_block) - - if(M.a_intent == INTENT_DISARM) //Always drop item in hand, if no item, get stun instead. - var/obj/item/I = get_active_held_item() - if(I && dropItemToGround(I)) - playsound(loc, 'sound/weapons/slash.ogg', 25, 1, -1) - visible_message("[M] disarmed [src]!", \ - "[M] disarmed [src]!") + if(M.a_intent == INTENT_DISARM) //Always drop item in hand, if no item, get stun instead. + var/obj/item/I = get_active_held_item() + if(I && dropItemToGround(I)) + playsound(loc, 'sound/weapons/slash.ogg', 25, 1, -1) + visible_message("[M] disarmed [src]!", \ + "[M] disarmed [src]!") + else + playsound(loc, 'sound/weapons/pierce.ogg', 25, 1, -1) + if(!lying) //CITADEL EDIT + Knockdown(100, TRUE, FALSE, 30, 25) else - playsound(loc, 'sound/weapons/pierce.ogg', 25, 1, -1) - if(!lying) //CITADEL EDIT - Knockdown(100, TRUE, FALSE, 30, 25) - else - Knockdown(100) - log_combat(M, src, "tackled") - visible_message("[M] has tackled down [src]!", \ - "[M] has tackled down [src]!") - + Knockdown(100) + log_combat(M, src, "tackled") + visible_message("[M] has tackled down [src]!", \ + "[M] has tackled down [src]!") /mob/living/carbon/human/attack_larva(mob/living/carbon/alien/larva/L) diff --git a/code/modules/mob/living/carbon/monkey/combat.dm b/code/modules/mob/living/carbon/monkey/combat.dm index 25bc243f07..59f694e0f6 100644 --- a/code/modules/mob/living/carbon/monkey/combat.dm +++ b/code/modules/mob/living/carbon/monkey/combat.dm @@ -365,6 +365,28 @@ retaliate(L) return ..() +/mob/living/carbon/monkey/attack_alien(mob/living/carbon/alien/humanoid/M) + if(M.a_intent == INTENT_HARM && prob(MONKEY_RETALIATE_HARM_PROB)) + retaliate(M) + else if(M.a_intent == INTENT_DISARM && prob(MONKEY_RETALIATE_DISARM_PROB)) + retaliate(M) + return ..() + +/mob/living/carbon/monkey/attack_hulk(mob/living/carbon/human/user, does_attack_animation = FALSE) + if(user.a_intent == INTENT_HARM) + if(prob(MONKEY_RETALIATE_HARM_PROB)) + retaliate(user) + . = ..(user, TRUE) + if(.) + return + var/hulk_verb = pick("smash","pummel") + playsound(loc, user.dna.species.attack_sound, 25, 1, -1) + var/message = "[user] has [hulk_verb]ed [src]!" + visible_message("[message]", \ + "[message]") + adjustBruteLoss(15) + return 1 + /mob/living/carbon/monkey/attack_paw(mob/living/L) if(L.a_intent == INTENT_HARM && prob(MONKEY_RETALIATE_HARM_PROB)) retaliate(L) diff --git a/code/modules/mob/living/carbon/monkey/monkey_defense.dm b/code/modules/mob/living/carbon/monkey/monkey_defense.dm index da5f8e75c3..6d2d7bcbcf 100644 --- a/code/modules/mob/living/carbon/monkey/monkey_defense.dm +++ b/code/modules/mob/living/carbon/monkey/monkey_defense.dm @@ -13,9 +13,8 @@ affecting = get_bodypart(BODY_ZONE_CHEST) if(M.limb_destroyer) dismembering_strike(M, affecting.body_zone) - if(stat != DEAD) - var/dmg = rand(1, 5) - apply_damage(dmg, BRUTE, affecting) + var/dmg = rand(1, 5) + apply_damage(dmg, BRUTE, affecting) /mob/living/carbon/monkey/attack_larva(mob/living/carbon/alien/larva/L) if(..()) //successful larva bite. @@ -32,11 +31,14 @@ if(.) //To allow surgery to return properly. return switch(M.a_intent) - if("help") + if(INTENT_HELP) help_shake_act(M) - if("grab") + if(INTENT_GRAB) grabbedby(M) - if("harm") + if(INTENT_HARM) + if(HAS_TRAIT(M, TRAIT_PACIFISM)) + to_chat(M, "You don't want to hurt [src]!") + return M.do_attack_animation(src, ATTACK_EFFECT_PUNCH) if (prob(75)) visible_message("[M] has punched [name]!", \ @@ -60,7 +62,7 @@ playsound(loc, 'sound/weapons/punchmiss.ogg', 25, 1, -1) visible_message("[M] has attempted to punch [name]!", \ "[M] has attempted to punch [name]!", null, COMBAT_MESSAGE_RANGE) - if("disarm") + if(INTENT_DISARM) if(!IsUnconscious()) M.do_attack_animation(src, ATTACK_EFFECT_DISARM) if (prob(25)) @@ -74,50 +76,51 @@ visible_message("[M] has disarmed [src]!", "[M] has disarmed [src]!", null, COMBAT_MESSAGE_RANGE) /mob/living/carbon/monkey/attack_alien(mob/living/carbon/alien/humanoid/M) - if(..()) //if harm or disarm intent. - if (M.a_intent == INTENT_HARM) - if ((prob(95) && health > 0)) - playsound(loc, 'sound/weapons/slice.ogg', 25, 1, -1) - var/damage = rand(15, 30) - if (damage >= 25) - damage = rand(20, 40) - if(AmountUnconscious() < 300) - Unconscious(rand(200, 300)) - visible_message("[M] has wounded [name]!", \ - "[M] has wounded [name]!", null, COMBAT_MESSAGE_RANGE) - else - visible_message("[M] has slashed [name]!", \ - "[M] has slashed [name]!", null, COMBAT_MESSAGE_RANGE) - - var/obj/item/bodypart/affecting = get_bodypart(ran_zone(M.zone_selected)) - log_combat(M, src, "attacked") - if(!affecting) - affecting = get_bodypart(BODY_ZONE_CHEST) - if(!dismembering_strike(M, affecting.body_zone)) //Dismemberment successful - return 1 - apply_damage(damage, BRUTE, affecting) - + . = ..() + if(!.) // the attack was blocked or was help/grab intent + return + if (M.a_intent == INTENT_HARM) + if ((prob(95) && health > 0)) + playsound(loc, 'sound/weapons/slice.ogg', 25, 1, -1) + var/damage = rand(15, 30) + if (damage >= 25) + damage = rand(20, 40) + if(AmountUnconscious() < 300) + Unconscious(rand(200, 300)) + visible_message("[M] has wounded [name]!", \ + "[M] has wounded [name]!", null, COMBAT_MESSAGE_RANGE) else - playsound(loc, 'sound/weapons/slashmiss.ogg', 25, 1, -1) - visible_message("[M] has attempted to lunge at [name]!", \ - "[M] has attempted to lunge at [name]!", null, COMBAT_MESSAGE_RANGE) + visible_message("[M] has slashed [name]!", \ + "[M] has slashed [name]!", null, COMBAT_MESSAGE_RANGE) - if (M.a_intent == INTENT_DISARM) - var/obj/item/I = null - playsound(loc, 'sound/weapons/pierce.ogg', 25, 1, -1) - if(prob(95)) - Knockdown(20) - visible_message("[M] has tackled down [name]!", \ - "[M] has tackled down [name]!", null, COMBAT_MESSAGE_RANGE) + var/obj/item/bodypart/affecting = get_bodypart(ran_zone(M.zone_selected)) + log_combat(M, src, "attacked") + if(!affecting) + affecting = get_bodypart(BODY_ZONE_CHEST) + if(!dismembering_strike(M, affecting.body_zone)) //Dismemberment successful + return 1 + apply_damage(damage, BRUTE, affecting) + + else + playsound(loc, 'sound/weapons/slashmiss.ogg', 25, 1, -1) + visible_message("[M] has attempted to lunge at [name]!", \ + "[M] has attempted to lunge at [name]!", null, COMBAT_MESSAGE_RANGE) + + else + var/obj/item/I = null + playsound(loc, 'sound/weapons/pierce.ogg', 25, 1, -1) + if(prob(95)) + Knockdown(20) + visible_message("[M] has tackled down [name]!", \ + "[M] has tackled down [name]!", null, COMBAT_MESSAGE_RANGE) + else + I = get_active_held_item() + if(dropItemToGround(I)) + visible_message("[M] has disarmed [name]!", "[M] has disarmed [name]!", null, COMBAT_MESSAGE_RANGE) else - I = get_active_held_item() - if(dropItemToGround(I)) - visible_message("[M] has disarmed [name]!", "[M] has disarmed [name]!", null, COMBAT_MESSAGE_RANGE) - else - I = null - log_combat(M, src, "disarmed", "[I ? " removing \the [I]" : ""]") - updatehealth() - + I = null + log_combat(M, src, "disarmed", "[I ? " removing \the [I]" : ""]") + updatehealth() /mob/living/carbon/monkey/attack_animal(mob/living/simple_animal/M) . = ..() diff --git a/code/modules/mob/living/living_defense.dm b/code/modules/mob/living/living_defense.dm index f5dd982ad5..d4f07e531e 100644 --- a/code/modules/mob/living/living_defense.dm +++ b/code/modules/mob/living/living_defense.dm @@ -36,7 +36,19 @@ /mob/living/proc/on_hit(obj/item/projectile/P) return +/mob/living/proc/check_shields(atom/AM, damage, attack_text = "the attack", attack_type = MELEE_ATTACK, armour_penetration = 0) + var/block_chance_modifier = round(damage / -3) + for(var/obj/item/I in held_items) + if(!istype(I, /obj/item/clothing)) + var/final_block_chance = I.block_chance - (CLAMP((armour_penetration-I.armour_penetration)/2,0,100)) + block_chance_modifier //So armour piercing blades can still be parried by other blades, for example + if(I.hit_reaction(src, AM, attack_text, final_block_chance, damage, attack_type)) + return TRUE + return FALSE + /mob/living/bullet_act(obj/item/projectile/P, def_zone) + if(check_shields(P, P.damage, "the [P.name]", PROJECTILE_ATTACK, P.armour_penetration)) + P.on_hit(src, 100, def_zone) + return 2 var/armor = run_armor_check(def_zone, P.flag, null, null, P.armour_penetration, null) if(!P.nodamage) apply_damage(P.damage, P.damage_type, def_zone, armor) @@ -242,6 +254,17 @@ visible_message("[user] attempted to touch [src]!") return TRUE +/mob/living/attack_hulk(mob/living/carbon/human/user, does_attack_animation = FALSE) + if(user.a_intent == INTENT_HARM) + if(HAS_TRAIT(user, TRAIT_PACIFISM)) + to_chat(user, "You don't want to hurt [src]!") + return TRUE + var/hulk_verb = pick("smash","pummel") + if(user != src && check_shields(user, 15, "the [hulk_verb]ing")) + return TRUE + ..() + return FALSE + /mob/living/attack_slime(mob/living/simple_animal/slime/M) if(!SSticker.HasRoundStarted()) to_chat(M, "You cannot attack people before the game has started.") @@ -295,6 +318,8 @@ if(M.is_muzzled() || (M.wear_mask && M.wear_mask.flags_cover & MASKCOVERSMOUTH)) to_chat(M, "You can't bite with your mouth covered!") return FALSE + if(check_shields(M, 0, "the [M.name]")) + return FALSE M.do_attack_animation(src, ATTACK_EFFECT_BITE) if (prob(75)) log_combat(M, src, "attacked") @@ -331,20 +356,23 @@ return FALSE /mob/living/attack_alien(mob/living/carbon/alien/humanoid/M) + if((M != src) && M.a_intent != INTENT_HELP && check_shields(M, 0, "the [M.name]")) + visible_message("[M] attempted to touch [src]!") + return FALSE switch(M.a_intent) - if ("help") + if (INTENT_HELP) visible_message("[M] caresses [src] with its scythe like arm.") return FALSE - if ("grab") + if (INTENT_GRAB) grabbedby(M) return FALSE - if("harm") + if(INTENT_HARM) if(HAS_TRAIT(M, TRAIT_PACIFISM)) to_chat(M, "You don't want to hurt anyone!") return FALSE M.do_attack_animation(src) return TRUE - if("disarm") + if(INTENT_DISARM) M.do_attack_animation(src, ATTACK_EFFECT_DISARM) return TRUE diff --git a/code/modules/mob/living/silicon/ai/ai_defense.dm b/code/modules/mob/living/silicon/ai/ai_defense.dm index 8799d34a08..97d26f672a 100644 --- a/code/modules/mob/living/silicon/ai/ai_defense.dm +++ b/code/modules/mob/living/silicon/ai/ai_defense.dm @@ -1,20 +1,3 @@ -//ATTACK HAND IGNORING PARENT RETURN VALUE -/mob/living/silicon/ai/attack_hand(mob/living/carbon/human/M) - . = ..() - if(.) //the attack was blocked - return - switch(M.a_intent) - if ("help") - M.visible_message("[M] pets [src].", \ - "You pet [src].") - if("grab") - grabbedby(M) - else - M.do_attack_animation(src, ATTACK_EFFECT_PUNCH) - playsound(src.loc, 'sound/effects/bang.ogg', 10, 1) - visible_message("[M] punches [src], but doesn't leave a dent.", \ - "[M] punches [src], but doesn't leave a dent.", null, COMBAT_MESSAGE_RANGE) - /mob/living/silicon/ai/attacked_by(obj/item/I, mob/living/user, def_zone) . = ..() if(!.) @@ -22,13 +5,6 @@ if(I.force && I.damtype != STAMINA && stat != DEAD) //only sparks if real damage is dealt. spark_system.start() - -/mob/living/silicon/ai/attack_alien(mob/living/carbon/alien/humanoid/M) - if(!SSticker.HasRoundStarted()) - to_chat(M, "You cannot attack people before the game has started.") - return - ..() - /mob/living/silicon/ai/attack_slime(mob/living/simple_animal/slime/user) return //immune to slimes diff --git a/code/modules/mob/living/silicon/pai/pai_defense.dm b/code/modules/mob/living/silicon/pai/pai_defense.dm index 647951ed4e..f8fc5faaab 100644 --- a/code/modules/mob/living/silicon/pai/pai_defense.dm +++ b/code/modules/mob/living/silicon/pai/pai_defense.dm @@ -26,16 +26,14 @@ fold_in(force = 1) Knockdown(200) +//ATTACK HAND IGNORING PARENT RETURN VALUE /mob/living/silicon/pai/attack_hand(mob/living/carbon/human/user) - . = ..() - if(.) - return switch(user.a_intent) - if("help") + if(INTENT_HELP) visible_message("[user] gently pats [src] on the head, eliciting an off-putting buzzing from its holographic field.") - if("disarm") + if(INTENT_DISARM) visible_message("[user] boops [src] on the head!") - if("harm") + if(INTENT_HARM) user.do_attack_animation(src) if (user.name == master) visible_message("Responding to its master's touch, [src] disengages its holochassis emitter, rapidly losing coherence.") @@ -44,14 +42,19 @@ if(user.put_in_hands(card)) user.visible_message("[user] promptly scoops up [user.p_their()] pAI's card.") else + if(HAS_TRAIT(user, TRAIT_PACIFISM)) + to_chat(user, "You don't want to hurt [src]!") + return visible_message("[user] stomps on [src]!.") take_holo_damage(2) + else + grabbedby(user) -/mob/living/silicon/pai/bullet_act(obj/item/projectile/Proj) - if(Proj.stun) +/mob/living/silicon/pai/bullet_act(obj/item/projectile/P, def_zone) + if(P.stun) fold_in(force = TRUE) - src.visible_message("The electrically-charged projectile disrupts [src]'s holomatrix, forcing [src] to fold in!") - . = ..(Proj) + visible_message("The electrically-charged projectile disrupts [src]'s holomatrix, forcing [src] to fold in!") + . = ..() /mob/living/silicon/pai/stripPanelUnequip(obj/item/what, mob/who, where) //prevents stripping to_chat(src, "Your holochassis stutters and warps intensely as you attempt to interact with the object, forcing you to cease lest the field fail.") diff --git a/code/modules/mob/living/silicon/robot/robot_defense.dm b/code/modules/mob/living/silicon/robot/robot_defense.dm index 0f09b6f62a..ddf2da2343 100644 --- a/code/modules/mob/living/silicon/robot/robot_defense.dm +++ b/code/modules/mob/living/silicon/robot/robot_defense.dm @@ -14,6 +14,9 @@ return ..() /mob/living/silicon/robot/attack_alien(mob/living/carbon/alien/humanoid/M) + . = ..() + if(!.) // the attack was blocked or was help/grab intent + return if (M.a_intent == INTENT_DISARM) if(!(lying)) M.do_attack_animation(src, ATTACK_EFFECT_DISARM) @@ -30,9 +33,6 @@ visible_message("[M] has forced back [src]!", \ "[M] has forced back [src]!", null, COMBAT_MESSAGE_RANGE) playsound(loc, 'sound/weapons/pierce.ogg', 50, 1, -1) - else - ..() - return /mob/living/silicon/robot/attack_slime(mob/living/simple_animal/slime/M) if(..()) //successful slime shock @@ -56,23 +56,17 @@ //ATTACK HAND IGNORING PARENT RETURN VALUE /mob/living/silicon/robot/attack_hand(mob/living/carbon/human/user) add_fingerprint(user) - if(opened && !wiresexposed && !issilicon(user)) - if(cell) - cell.update_icon() - cell.add_fingerprint(user) - user.put_in_active_hand(cell) - to_chat(user, "You remove \the [cell].") - cell = null - update_icons() - diag_hud_set_borgcell() + if(opened && !wiresexposed && cell && !issilicon(user)) + cell.update_icon() + cell.add_fingerprint(user) + user.put_in_active_hand(cell) + to_chat(user, "You remove \the [cell].") + cell = null + update_icons() + diag_hud_set_borgcell() if(!opened) - if(..()) // hulk attack - spark_system.start() - spawn(0) - step_away(src,user,15) - sleep(3) - step_away(src,user,15) + return ..() /mob/living/silicon/robot/fire_act() if(!on_fire) //Silicons don't gain stacks from hotspots, but hotspots can ignite them @@ -182,9 +176,9 @@ if (stat != DEAD) adjustBruteLoss(30) -/mob/living/silicon/robot/bullet_act(var/obj/item/projectile/Proj) - ..(Proj) +/mob/living/silicon/robot/bullet_act(obj/item/projectile/P, def_zone) + ..() updatehealth() - if(prob(75) && Proj.damage > 0) + if(prob(75) && P.damage > 0) spark_system.start() return 2 diff --git a/code/modules/mob/living/silicon/silicon_defense.dm b/code/modules/mob/living/silicon/silicon_defense.dm index 482ecc429f..80a5058ed4 100644 --- a/code/modules/mob/living/silicon/silicon_defense.dm +++ b/code/modules/mob/living/silicon/silicon_defense.dm @@ -6,7 +6,10 @@ return 2 /mob/living/silicon/attack_alien(mob/living/carbon/alien/humanoid/M) - if(..()) //if harm or disarm intent + . = ..() + if(!.) // the attack was blocked or was help/grab intent + return + if(M.a_intent == INTENT_HARM) var/damage = 20 if (prob(90)) log_combat(M, src, "attacked") @@ -53,9 +56,11 @@ if(L.a_intent == INTENT_HELP) visible_message("[L.name] rubs its head against [src].") -/mob/living/silicon/attack_hulk(mob/living/carbon/human/user, does_attack_animation = 0) +/mob/living/silicon/attack_hulk(mob/living/carbon/human/user, does_attack_animation = FALSE) if(user.a_intent == INTENT_HARM) - ..(user, 1) + . = ..(user, TRUE) + if(.) + return adjustBruteLoss(rand(10, 15)) playsound(loc, "punch", 25, 1, -1) visible_message("[user] has punched [src]!", \ @@ -63,6 +68,22 @@ return 1 return 0 +/mob/living/silicon/attack_hand(mob/living/carbon/human/M) + . = ..() + if(.) //the attack was blocked + return + switch(M.a_intent) + if (INTENT_HELP) + M.visible_message("[M] pets [src].", \ + "You pet [src].") + if(INTENT_GRAB) + grabbedby(M) + else + M.do_attack_animation(src, ATTACK_EFFECT_PUNCH) + playsound(src.loc, 'sound/effects/bang.ogg', 10, 1) + visible_message("[M] punches [src], but doesn't leave a dent.", \ + "[M] punches [src], but doesn't leave a dent.", null, COMBAT_MESSAGE_RANGE) + /mob/living/silicon/attack_drone(mob/living/simple_animal/drone/M) if(M.a_intent == INTENT_HARM) return @@ -93,19 +114,22 @@ M.visible_message("[M] is thrown off of [src]!") flash_act(affect_silicon = 1) -/mob/living/silicon/bullet_act(obj/item/projectile/Proj) - if((Proj.damage_type == BRUTE || Proj.damage_type == BURN)) - adjustBruteLoss(Proj.damage) - if(prob(Proj.damage*1.5)) +/mob/living/silicon/bullet_act(obj/item/projectile/P, def_zone) + if(check_shields(P, P.damage, "the [P.name]", PROJECTILE_ATTACK, P.armour_penetration)) + P.on_hit(src, 100, def_zone) + return 2 + if((P.damage_type == BRUTE || P.damage_type == BURN)) + adjustBruteLoss(P.damage) + if(prob(P.damage*1.5)) for(var/mob/living/M in buckled_mobs) M.visible_message("[M] is knocked off of [src]!") unbuckle_mob(M) M.Knockdown(40) - if(Proj.stun || Proj.knockdown) + if(P.stun || P.knockdown) for(var/mob/living/M in buckled_mobs) unbuckle_mob(M) - M.visible_message("[M] is knocked off of [src] by the [Proj]!") - Proj.on_hit(src) + M.visible_message("[M] is knocked off of [src] by the [P]!") + P.on_hit(src) return 2 /mob/living/silicon/flash_act(intensity = 1, override_blindness_check = 0, affect_silicon = 0, visual = 0, type = /obj/screen/fullscreen/flash/static) diff --git a/code/modules/mob/living/simple_animal/animal_defense.dm b/code/modules/mob/living/simple_animal/animal_defense.dm index e74b29be44..4542f140d4 100644 --- a/code/modules/mob/living/simple_animal/animal_defense.dm +++ b/code/modules/mob/living/simple_animal/animal_defense.dm @@ -5,18 +5,18 @@ if(.) //the attack was blocked return switch(M.a_intent) - if("help") + if(INTENT_HELP) if (health > 0) visible_message("[M] [response_help] [src].") playsound(loc, 'sound/weapons/thudswoosh.ogg', 50, 1, -1) - if("grab") + if(INTENT_GRAB) if(grab_state >= GRAB_AGGRESSIVE && isliving(pulling)) vore_attack(M, pulling) else grabbedby(M) - if("harm", "disarm") + if(INTENT_HARM, INTENT_DISARM) if(HAS_TRAIT(M, TRAIT_PACIFISM)) to_chat(M, "You don't want to hurt [src]!") return @@ -29,12 +29,11 @@ updatehealth() return TRUE -/mob/living/simple_animal/attack_hulk(mob/living/carbon/human/user, does_attack_animation = 0) +/mob/living/simple_animal/attack_hulk(mob/living/carbon/human/user, does_attack_animation = FALSE) if(user.a_intent == INTENT_HARM) - if(HAS_TRAIT(user, TRAIT_PACIFISM)) - to_chat(user, "You don't want to hurt [src]!") - return FALSE - ..(user, 1) + . = ..(user, TRUE) + if(.) + return playsound(loc, "punch", 25, 1, -1) visible_message("[user] has punched [src]!", \ "[user] has punched [src]!", null, COMBAT_MESSAGE_RANGE) @@ -43,10 +42,9 @@ /mob/living/simple_animal/attack_paw(mob/living/carbon/monkey/M) if(..()) //successful monkey bite. - if(stat != DEAD) - var/damage = rand(1, 3) - attack_threshold_check(damage) - return 1 + var/damage = rand(1, 3) + attack_threshold_check(damage) + return 1 if (M.a_intent == INTENT_HELP) if (health > 0) visible_message("[M.name] [response_help] [src].") @@ -54,20 +52,21 @@ /mob/living/simple_animal/attack_alien(mob/living/carbon/alien/humanoid/M) - if(..()) //if harm or disarm intent. - if(M.a_intent == INTENT_DISARM) - playsound(loc, 'sound/weapons/pierce.ogg', 25, 1, -1) - visible_message("[M] [response_disarm] [name]!", \ - "[M] [response_disarm] [name]!", null, COMBAT_MESSAGE_RANGE) - log_combat(M, src, "disarmed") - else - var/damage = rand(15, 30) - visible_message("[M] has slashed at [src]!", \ - "[M] has slashed at [src]!", null, COMBAT_MESSAGE_RANGE) - playsound(loc, 'sound/weapons/slice.ogg', 25, 1, -1) - attack_threshold_check(damage) - log_combat(M, src, "attacked") - return 1 + . = ..() + if(!.) // the attack was blocked or was help/grab intent + return + if(M.a_intent == INTENT_DISARM) + playsound(loc, 'sound/weapons/pierce.ogg', 25, 1, -1) + visible_message("[M] [response_disarm] [name]!", \ + "[M] [response_disarm] [name]!", null, COMBAT_MESSAGE_RANGE) + log_combat(M, src, "disarmed") + else + var/damage = rand(15, 30) + visible_message("[M] has slashed at [src]!", \ + "[M] has slashed at [src]!", null, COMBAT_MESSAGE_RANGE) + playsound(loc, 'sound/weapons/slice.ogg', 25, 1, -1) + attack_threshold_check(damage) + log_combat(M, src, "attacked") /mob/living/simple_animal/attack_larva(mob/living/carbon/alien/larva/L) . = ..() diff --git a/code/modules/mob/living/simple_animal/bot/honkbot.dm b/code/modules/mob/living/simple_animal/bot/honkbot.dm index 1c19cd82a1..5ca3f1f758 100644 --- a/code/modules/mob/living/simple_animal/bot/honkbot.dm +++ b/code/modules/mob/living/simple_animal/bot/honkbot.dm @@ -112,7 +112,7 @@ Maintenance panel panel is [open ? "opened" : "closed"]"}, mode = BOT_HUNT /mob/living/simple_animal/bot/honkbot/attack_hand(mob/living/carbon/human/H) - if(H.a_intent == "harm") + if(H.a_intent == INTENT_HARM) retaliate(H) addtimer(CALLBACK(src, .proc/react_buzz), 5) return ..() diff --git a/code/modules/mob/living/simple_animal/friendly/cat.dm b/code/modules/mob/living/simple_animal/friendly/cat.dm index 3a21a04bf9..de43098496 100644 --- a/code/modules/mob/living/simple_animal/friendly/cat.dm +++ b/code/modules/mob/living/simple_animal/friendly/cat.dm @@ -231,9 +231,9 @@ /mob/living/simple_animal/pet/cat/attack_hand(mob/living/carbon/human/M) . = ..() switch(M.a_intent) - if("help") + if(INTENT_HELP) wuv(1, M) - if("harm") + if(INTENT_HARM) wuv(-1, M) /mob/living/simple_animal/pet/cat/proc/wuv(change, mob/M) @@ -288,7 +288,9 @@ D.frost_donut() /mob/living/simple_animal/pet/cat/cak/attack_hand(mob/living/L) - ..() + . = ..() + if(.) //the attack was blocked + return if(L.a_intent == INTENT_HARM && L.reagents && !stat) L.reagents.add_reagent("nutriment", 0.4) L.reagents.add_reagent("vitamin", 0.4) diff --git a/code/modules/mob/living/simple_animal/friendly/dog.dm b/code/modules/mob/living/simple_animal/friendly/dog.dm index c194233c42..366a1ff20f 100644 --- a/code/modules/mob/living/simple_animal/friendly/dog.dm +++ b/code/modules/mob/living/simple_animal/friendly/dog.dm @@ -638,9 +638,9 @@ /mob/living/simple_animal/pet/dog/attack_hand(mob/living/carbon/human/M) . = ..() switch(M.a_intent) - if("help") + if(INTENT_HELP) wuv(1,M) - if("harm") + if(INTENT_HARM) wuv(-1,M) /mob/living/simple_animal/pet/dog/proc/wuv(change, mob/M) diff --git a/code/modules/mob/living/simple_animal/friendly/drone/interaction.dm b/code/modules/mob/living/simple_animal/friendly/drone/interaction.dm index 33031fd80c..b2f58bc01b 100644 --- a/code/modules/mob/living/simple_animal/friendly/drone/interaction.dm +++ b/code/modules/mob/living/simple_animal/friendly/drone/interaction.dm @@ -31,26 +31,24 @@ //ATTACK HAND IGNORING PARENT RETURN VALUE /mob/living/simple_animal/drone/attack_hand(mob/user) - if(ishuman(user)) - if(stat == DEAD || status_flags & GODMODE || !can_be_held) - ..() - return - if(user.get_active_held_item()) - to_chat(user, "Your hands are full!") - return - visible_message("[user] starts picking up [src].", \ - "[user] starts picking you up!") - if(!do_after(user, 20, target = src)) - return - visible_message("[user] picks up [src]!", \ - "[user] picks you up!") - if(buckled) - to_chat(user, "[src] is buckled to [buckled] and cannot be picked up!") - return - to_chat(user, "You pick [src] up.") - drop_all_held_items() - var/obj/item/clothing/head/mob_holder/drone/DH = new(get_turf(src), src) - user.put_in_hands(DH) + if(user.a_intent != INTENT_HELP || !LAZYLEN(user.held_items) || stat == DEAD || status_flags & GODMODE || !can_be_held) + return ..() + if(user.get_active_held_item()) + to_chat(user, "Your hands are full!") + return + visible_message("[user] starts picking up [src].", \ + "[user] starts picking you up!") + if(!do_after(user, 20, target = src)) + return + visible_message("[user] picks up [src]!", \ + "[user] picks you up!") + if(buckled) + to_chat(user, "[src] is buckled to [buckled] and cannot be picked up!") + return + to_chat(user, "You pick [src] up.") + drop_all_held_items() + var/obj/item/clothing/head/mob_holder/drone/DH = new(get_turf(src), src) + user.put_in_hands(DH) /mob/living/simple_animal/drone/proc/try_reactivate(mob/living/user) var/mob/dead/observer/G = get_ghost() diff --git a/code/modules/mob/living/simple_animal/hostile/mushroom.dm b/code/modules/mob/living/simple_animal/hostile/mushroom.dm index dbaa8ab5fa..da8101ee6a 100644 --- a/code/modules/mob/living/simple_animal/hostile/mushroom.dm +++ b/code/modules/mob/living/simple_animal/hostile/mushroom.dm @@ -166,7 +166,9 @@ ..() /mob/living/simple_animal/hostile/mushroom/attack_hand(mob/living/carbon/human/M) - ..() + . = ..() + if(.) // the attack was blocked + return if(M.a_intent == INTENT_HARM) Bruise() diff --git a/code/modules/mob/living/simple_animal/slime/slime.dm b/code/modules/mob/living/simple_animal/slime/slime.dm index 2001c61e12..4deb62aac2 100644 --- a/code/modules/mob/living/simple_animal/slime/slime.dm +++ b/code/modules/mob/living/simple_animal/slime/slime.dm @@ -61,7 +61,7 @@ var/mood = "" // To show its face var/mutator_used = FALSE //So you can't shove a dozen mutators into a single slime var/force_stasis = FALSE - + do_footstep = TRUE var/static/regex/slime_name_regex = new("\\w+ (baby|adult) slime \\(\\d+\\)") @@ -320,9 +320,11 @@ attacked += 10 /mob/living/simple_animal/slime/attack_alien(mob/living/carbon/alien/humanoid/M) - if(..()) //if harm or disarm intent. - attacked += 10 - discipline_slime(M) + . = ..() + if(!.) // the attack was blocked or was help/grab intent + return + attacked += 10 + discipline_slime(M) /mob/living/simple_animal/slime/attackby(obj/item/W, mob/living/user, params) From bddb43787296906d763a31f5c59eab13490723f0 Mon Sep 17 00:00:00 2001 From: Ghommie <42542238+Ghommie@users.noreply.github.com> Date: Mon, 18 Nov 2019 18:30:46 +0100 Subject: [PATCH 004/192] It works now. --- code/game/objects/items/melee/misc.dm | 5 +- code/game/objects/items/robot/robot_items.dm | 8 +- code/game/objects/items/stunbaton.dm | 8 +- .../abductor/equipment/abduction_gear.dm | 8 +- .../mob/living/carbon/alien/alien_defense.dm | 25 ++--- .../carbon/alien/humanoid/caste/hunter.dm | 7 +- .../carbon/alien/humanoid/humanoid_defense.dm | 4 +- .../carbon/alien/larva/larva_defense.dm | 3 + .../mob/living/carbon/carbon_defense.dm | 44 ++++----- .../mob/living/carbon/human/human_defense.dm | 98 +++++++------------ .../mob/living/carbon/monkey/combat.dm | 21 ++-- .../living/carbon/monkey/monkey_defense.dm | 74 ++++++++------ code/modules/mob/living/living_defense.dm | 67 ++++++++++--- .../mob/living/silicon/robot/robot_defense.dm | 29 +++--- .../mob/living/silicon/silicon_defense.dm | 17 ++-- .../living/simple_animal/animal_defense.dm | 7 +- .../simple_animal/guardian/types/charger.dm | 6 +- .../mob/living/simple_animal/slime/slime.dm | 35 +++---- .../living/silicon/robot/dogborg_equipment.dm | 7 +- 19 files changed, 244 insertions(+), 229 deletions(-) diff --git a/code/game/objects/items/melee/misc.dm b/code/game/objects/items/melee/misc.dm index d7c2f7f4f6..1120e1856d 100644 --- a/code/game/objects/items/melee/misc.dm +++ b/code/game/objects/items/melee/misc.dm @@ -216,10 +216,11 @@ return else if(last_hit < world.time) + if(target.check_shields(src, 0, "[user]'s [name]", MELEE_ATTACK)) + playsound(target, 'sound/weapons/genhit.ogg', 50, 1) + return if(ishuman(target)) var/mob/living/carbon/human/H = target - if (H.check_shields(src, 0, "[user]'s [name]", MELEE_ATTACK)) - return if(check_martial_counter(H, user)) return playsound(get_turf(src), 'sound/effects/woodhit.ogg', 75, 1, -1) diff --git a/code/game/objects/items/robot/robot_items.dm b/code/game/objects/items/robot/robot_items.dm index 77bc7ed810..c09f5b1b65 100644 --- a/code/game/objects/items/robot/robot_items.dm +++ b/code/game/objects/items/robot/robot_items.dm @@ -11,11 +11,9 @@ var/charge_cost = 30 /obj/item/borg/stun/attack(mob/living/M, mob/living/user) - if(ishuman(M)) - var/mob/living/carbon/human/H = M - if(H.check_shields(src, 0, "[M]'s [name]", MELEE_ATTACK)) - playsound(M, 'sound/weapons/genhit.ogg', 50, 1) - return FALSE + if(M.check_shields(src, 0, "[M]'s [name]", MELEE_ATTACK)) + playsound(M, 'sound/weapons/genhit.ogg', 50, 1) + return FALSE if(iscyborg(user)) var/mob/living/silicon/robot/R = user if(!R.cell.use(charge_cost)) diff --git a/code/game/objects/items/stunbaton.dm b/code/game/objects/items/stunbaton.dm index 47d9af2795..e1e599b1b6 100644 --- a/code/game/objects/items/stunbaton.dm +++ b/code/game/objects/items/stunbaton.dm @@ -168,11 +168,9 @@ /obj/item/melee/baton/proc/baton_stun(mob/living/L, mob/user) - if(ishuman(L)) - var/mob/living/carbon/human/H = L - if(H.check_shields(src, 0, "[user]'s [name]", MELEE_ATTACK)) //No message; check_shields() handles that - playsound(L, 'sound/weapons/genhit.ogg', 50, 1) - return FALSE + if(L.check_shields(src, 0, "[user]'s [name]", MELEE_ATTACK)) //No message; check_shields() handles that + playsound(L, 'sound/weapons/genhit.ogg', 50, 1) + return FALSE var/stunpwr = stunforce var/obj/item/stock_parts/cell/our_cell = get_cell() if(!our_cell) diff --git a/code/modules/antagonists/abductor/equipment/abduction_gear.dm b/code/modules/antagonists/abductor/equipment/abduction_gear.dm index 37652d1887..ee5000a3b8 100644 --- a/code/modules/antagonists/abductor/equipment/abduction_gear.dm +++ b/code/modules/antagonists/abductor/equipment/abduction_gear.dm @@ -482,11 +482,9 @@ user.do_attack_animation(L) - if(ishuman(L)) - var/mob/living/carbon/human/H = L - if(H.check_shields(src, 0, "[user]'s [name]", MELEE_ATTACK)) - playsound(L, 'sound/weapons/genhit.ogg', 50, 1) - return 0 + if(L.check_shields(src, 0, "[user]'s [name]", MELEE_ATTACK)) + playsound(L, 'sound/weapons/genhit.ogg', 50, 1) + return 0 switch (mode) if(BATON_STUN) diff --git a/code/modules/mob/living/carbon/alien/alien_defense.dm b/code/modules/mob/living/carbon/alien/alien_defense.dm index 839239a888..bdc691ce49 100644 --- a/code/modules/mob/living/carbon/alien/alien_defense.dm +++ b/code/modules/mob/living/carbon/alien/alien_defense.dm @@ -17,8 +17,9 @@ In all, this is a lot like the monkey code. /N */ /mob/living/carbon/alien/attack_alien(mob/living/carbon/alien/M) . = ..() + if(!.) // the attack was blocked or was help/grab intent + return switch(M.a_intent) - if (INTENT_HELP) if(!recoveringstam) resting = 0 @@ -27,10 +28,7 @@ In all, this is a lot like the monkey code. /N AdjustUnconscious(-60) AdjustSleeping(-100) visible_message("[M.name] nuzzles [src] trying to wake [p_them()] up!") - if(INTENT_DISARM, INTENT_HARM) - if(!.) // the attack was blocked or was help/grab intent - return if(health > 0) M.do_attack_animation(src, ATTACK_EFFECT_BITE) playsound(loc, 'sound/weapons/bite.ogg', 50, 1, -1) @@ -69,7 +67,8 @@ In all, this is a lot like the monkey code. /N /mob/living/carbon/alien/attack_paw(mob/living/carbon/monkey/M) - if(..()) + . = ..() + if(.) //successful monkey bite. var/obj/item/bodypart/affecting = get_bodypart(ran_zone(M.zone_selected)) apply_damage(rand(1, 3), BRUTE, affecting) @@ -93,13 +92,15 @@ In all, this is a lot like the monkey code. /N adjustStaminaLoss(damage) /mob/living/carbon/alien/attack_slime(mob/living/simple_animal/slime/M) - if(..()) //successful slime attack - var/damage = rand(5, 35) - if(M.is_adult) - damage = rand(10, 40) - adjustBruteLoss(damage) - log_combat(M, src, "attacked") - updatehealth() + . = ..() + if(!.) //unsuccessful slime attack + return + var/damage = rand(5, 35) + if(M.is_adult) + damage = rand(10, 40) + adjustBruteLoss(damage) + log_combat(M, src, "attacked") + updatehealth() /mob/living/carbon/alien/ex_act(severity, target, origin) if(origin && istype(origin, /datum/spacevine_mutation) && isvineimmune(src)) 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 fe682b5c99..d1ed09665b 100644 --- a/code/modules/mob/living/carbon/alien/humanoid/caste/hunter.dm +++ b/code/modules/mob/living/carbon/alien/humanoid/caste/hunter.dm @@ -63,12 +63,7 @@ if(A) if(isliving(A)) var/mob/living/L = A - var/blocked = FALSE - if(ishuman(A)) - var/mob/living/carbon/human/H = A - if(H.check_shields(src, 0, "the [name]", attack_type = LEAP_ATTACK)) - blocked = TRUE - if(!blocked) + if(!L.check_shields(src, 0, "the [name]", attack_type = LEAP_ATTACK)) L.visible_message("[src] pounces on [L]!", "[src] pounces on you!") L.Knockdown(100) sleep(2)//Runtime prevention (infinite bump() calls on hulks) diff --git a/code/modules/mob/living/carbon/alien/humanoid/humanoid_defense.dm b/code/modules/mob/living/carbon/alien/humanoid/humanoid_defense.dm index 468abf251a..1d613db07a 100644 --- a/code/modules/mob/living/carbon/alien/humanoid/humanoid_defense.dm +++ b/code/modules/mob/living/carbon/alien/humanoid/humanoid_defense.dm @@ -42,7 +42,7 @@ log_combat(M, src, "attacked") else playsound(loc, 'sound/weapons/punchmiss.ogg', 25, 1, -1) - visible_message("[M] has attempted to punch [src]!", \ + visible_message("[M] has attempted to punch [src]!", \ "[M] has attempted to punch [src]!", null, COMBAT_MESSAGE_RANGE) if (INTENT_DISARM) @@ -61,7 +61,7 @@ "[M] has disarmed [src]!", null, COMBAT_MESSAGE_RANGE) else playsound(loc, 'sound/weapons/punchmiss.ogg', 25, 1, -1) - visible_message("[M] has attempted to disarm [src]!",\ + visible_message("[M] has attempted to disarm [src]!",\ "[M] has attempted to disarm [src]!", null, COMBAT_MESSAGE_RANGE) /mob/living/carbon/alien/humanoid/do_attack_animation(atom/A, visual_effect_icon, obj/item/used_item, no_effect) diff --git a/code/modules/mob/living/carbon/alien/larva/larva_defense.dm b/code/modules/mob/living/carbon/alien/larva/larva_defense.dm index 88c34f4387..7dabcf5abf 100644 --- a/code/modules/mob/living/carbon/alien/larva/larva_defense.dm +++ b/code/modules/mob/living/carbon/alien/larva/larva_defense.dm @@ -25,6 +25,9 @@ . = ..(user, TRUE) if(.) return + playsound(loc, "punch", 25, 1, -1) + visible_message("[user] has pummeled [src]!", \ + "[user] has pummeled [src]!", null, COMBAT_MESSAGE_RANGE) adjustBruteLoss(5 + rand(1,9)) new /datum/forced_movement(src, get_step_away(user,src, 30), 1) return 1 diff --git a/code/modules/mob/living/carbon/carbon_defense.dm b/code/modules/mob/living/carbon/carbon_defense.dm index d045e5361d..815b0a909b 100644 --- a/code/modules/mob/living/carbon/carbon_defense.dm +++ b/code/modules/mob/living/carbon/carbon_defense.dm @@ -62,10 +62,6 @@ throw_mode_off() return TRUE -/mob/living/carbon/can_embed(obj/item/I) - if(I.get_sharpness() || is_pointed(I) || is_type_in_typecache(I, GLOB.can_embed_types)) - return TRUE - /mob/living/carbon/embed_item(obj/item/I) throw_alert("embeddedobject", /obj/screen/alert/embeddedobject) var/obj/item/bodypart/L = pick(bodyparts) @@ -170,7 +166,8 @@ help_shake_act(M) return 0 - if(..()) //successful monkey bite. + . = ..() + if(.) //successful monkey bite. for(var/thing in M.diseases) var/datum/disease/D = thing ForceContractDisease(D) @@ -178,26 +175,27 @@ /mob/living/carbon/attack_slime(mob/living/simple_animal/slime/M) - if(..()) //successful slime attack - if(M.powerlevel > 0) - var/stunprob = M.powerlevel * 7 + 10 // 17 at level 1, 80 at level 10 - if(prob(stunprob)) - M.powerlevel -= 3 - if(M.powerlevel < 0) - M.powerlevel = 0 + . = ..() + if(!.) + return + if(M.powerlevel > 0) + var/stunprob = M.powerlevel * 7 + 10 // 17 at level 1, 80 at level 10 + if(prob(stunprob)) + M.powerlevel -= 3 + if(M.powerlevel < 0) + M.powerlevel = 0 - visible_message("The [M.name] has shocked [src]!", \ - "The [M.name] has shocked [src]!") + visible_message("The [M.name] has shocked [src]!", \ + "The [M.name] has shocked [src]!") - do_sparks(5, TRUE, src) - var/power = M.powerlevel + rand(0,3) - Knockdown(power*20) - if(stuttering < power) - stuttering = power - if (prob(stunprob) && M.powerlevel >= 8) - adjustFireLoss(M.powerlevel * rand(6,10)) - updatehealth() - return 1 + do_sparks(5, TRUE, src) + var/power = M.powerlevel + rand(0,3) + Knockdown(power*20) + if(stuttering < power) + stuttering = power + if (prob(stunprob) && M.powerlevel >= 8) + adjustFireLoss(M.powerlevel * rand(6,10)) + updatehealth() /mob/living/carbon/proc/dismembering_strike(mob/living/attacker, dam_zone) if(!attacker.limb_destroyer) diff --git a/code/modules/mob/living/carbon/human/human_defense.dm b/code/modules/mob/living/carbon/human/human_defense.dm index 7e7cb18d37..a8d1eb8180 100644 --- a/code/modules/mob/living/carbon/human/human_defense.dm +++ b/code/modules/mob/living/carbon/human/human_defense.dm @@ -61,40 +61,12 @@ P.setAngle(rand(0, 360))//SHING return FALSE - if(!(P.original == src && P.firer == src)) //can't block or reflect when shooting yourself - if(P.is_reflectable) - if(check_reflect(def_zone)) // Checks if you've passed a reflection% check - visible_message("The [P.name] gets reflected by [src]!", \ - "The [P.name] gets reflected by [src]!") - // Find a turf near or on the original location to bounce to - if(P.starting) - var/new_x = P.starting.x + pick(0, 0, 0, 0, 0, -1, 1, -2, 2) - var/new_y = P.starting.y + pick(0, 0, 0, 0, 0, -1, 1, -2, 2) - var/turf/curloc = get_turf(src) - - // redirect the projectile - P.original = locate(new_x, new_y, P.z) - P.starting = curloc - P.firer = src - P.yo = new_y - curloc.y - P.xo = new_x - curloc.x - var/new_angle_s = P.Angle + rand(120,240) - while(new_angle_s > 180) // Translate to regular projectile degrees - new_angle_s -= 360 - P.setAngle(new_angle_s) - - return -1 // complete projectile permutation - return ..() -/mob/living/carbon/human/proc/check_reflect(def_zone) //Reflection checks for anything in your l_hand, r_hand, or wear_suit based on the reflection chance of the object - if(wear_suit) - if(wear_suit.IsReflect(def_zone) == 1) - return 1 - for(var/obj/item/I in held_items) - if(I.IsReflect(def_zone) == 1) - return 1 - return 0 +/mob/living/carbon/human/check_reflect(def_zone) + if(wear_suit?.IsReflect(def_zone)) + return TRUE + return ..() /mob/living/carbon/human/check_shields(atom/AM, damage, attack_text = "the attack", attack_type = MELEE_ATTACK, armour_penetration = 0) . = ..() @@ -111,6 +83,11 @@ return TRUE return FALSE +/mob/living/carbon/human/can_embed(obj/item/I) + if(I.get_sharpness() || is_pointed(I) || is_type_in_typecache(I, GLOB.can_embed_types)) + return TRUE + return FALSE + /mob/living/carbon/human/proc/check_block() if(mind) if(mind.martial_art && prob(mind.martial_art.block_chance) && mind.martial_art.can_use(src) && in_throw_mode && !incapacitated(FALSE, TRUE)) @@ -179,8 +156,7 @@ if(!affecting) affecting = get_bodypart(BODY_ZONE_CHEST) if(M.a_intent == INTENT_HELP) - ..() //shaking - return 0 + return ..() //shaking if(M.a_intent == INTENT_DISARM) //Always drop item in hand, if no item, get stunned instead. var/obj/item/I = get_active_held_item() @@ -247,26 +223,23 @@ "[M] has tackled down [src]!") /mob/living/carbon/human/attack_larva(mob/living/carbon/alien/larva/L) - - if(..()) //successful larva bite. - var/damage = rand(1, 3) - if(check_shields(L, damage, "the [L.name]")) - return 0 - if(stat != DEAD) - L.amount_grown = min(L.amount_grown + damage, L.max_grown) - var/obj/item/bodypart/affecting = get_bodypart(ran_zone(L.zone_selected)) - if(!affecting) - affecting = get_bodypart(BODY_ZONE_CHEST) - var/armor_block = run_armor_check(affecting, "melee") - apply_damage(damage, BRUTE, affecting, armor_block) + . = ..() + if(!.) //unsuccessful larva bite. + return + var/damage = rand(1, 3) + if(stat != DEAD) + L.amount_grown = min(L.amount_grown + damage, L.max_grown) + var/obj/item/bodypart/affecting = get_bodypart(ran_zone(L.zone_selected)) + if(!affecting) + affecting = get_bodypart(BODY_ZONE_CHEST) + var/armor_block = run_armor_check(affecting, "melee") + apply_damage(damage, BRUTE, affecting, armor_block) /mob/living/carbon/human/attack_animal(mob/living/simple_animal/M) . = ..() if(.) var/damage = rand(M.melee_damage_lower, M.melee_damage_upper) - if(check_shields(M, damage, "the [M.name]", MELEE_ATTACK, M.armour_penetration)) - return FALSE var/dam_zone = dismembering_strike(M, pick(BODY_ZONE_CHEST, BODY_ZONE_PRECISE_L_HAND, BODY_ZONE_PRECISE_R_HAND, BODY_ZONE_L_LEG, BODY_ZONE_R_LEG)) if(!dam_zone) //Dismemberment successful return TRUE @@ -278,23 +251,22 @@ /mob/living/carbon/human/attack_slime(mob/living/simple_animal/slime/M) - if(..()) //successful slime attack - var/damage = rand(5, 25) - if(M.is_adult) - damage = rand(10, 35) + . = ..() + if(!.) //unsuccessful slime attack + return + var/damage = rand(5, 25) + if(M.is_adult) + damage = rand(10, 35) - if(check_shields(M, damage, "the [M.name]")) - return 0 + var/dam_zone = dismembering_strike(M, pick(BODY_ZONE_HEAD, BODY_ZONE_CHEST, BODY_ZONE_L_ARM, BODY_ZONE_R_ARM, BODY_ZONE_L_LEG, BODY_ZONE_R_LEG)) + if(!dam_zone) //Dismemberment successful + return 1 - var/dam_zone = dismembering_strike(M, pick(BODY_ZONE_HEAD, BODY_ZONE_CHEST, BODY_ZONE_L_ARM, BODY_ZONE_R_ARM, BODY_ZONE_L_LEG, BODY_ZONE_R_LEG)) - if(!dam_zone) //Dismemberment successful - return 1 - - var/obj/item/bodypart/affecting = get_bodypart(ran_zone(dam_zone)) - if(!affecting) - affecting = get_bodypart(BODY_ZONE_CHEST) - var/armor_block = run_armor_check(affecting, "melee") - apply_damage(damage, BRUTE, affecting, armor_block) + var/obj/item/bodypart/affecting = get_bodypart(ran_zone(dam_zone)) + if(!affecting) + affecting = get_bodypart(BODY_ZONE_CHEST) + var/armor_block = run_armor_check(affecting, "melee") + apply_damage(damage, BRUTE, affecting, armor_block) /mob/living/carbon/human/mech_melee_attack(obj/mecha/M) diff --git a/code/modules/mob/living/carbon/monkey/combat.dm b/code/modules/mob/living/carbon/monkey/combat.dm index 59f694e0f6..30afa491c5 100644 --- a/code/modules/mob/living/carbon/monkey/combat.dm +++ b/code/modules/mob/living/carbon/monkey/combat.dm @@ -372,20 +372,15 @@ retaliate(M) return ..() +/mob/living/carbon/monkey/attack_larva(mob/living/carbon/alien/larva/L) + if(L.a_intent == INTENT_HARM && prob(MONKEY_RETALIATE_HARM_PROB)) + retaliate(user) + return ..() + /mob/living/carbon/monkey/attack_hulk(mob/living/carbon/human/user, does_attack_animation = FALSE) - if(user.a_intent == INTENT_HARM) - if(prob(MONKEY_RETALIATE_HARM_PROB)) - retaliate(user) - . = ..(user, TRUE) - if(.) - return - var/hulk_verb = pick("smash","pummel") - playsound(loc, user.dna.species.attack_sound, 25, 1, -1) - var/message = "[user] has [hulk_verb]ed [src]!" - visible_message("[message]", \ - "[message]") - adjustBruteLoss(15) - return 1 + if(user.a_intent == INTENT_HARM && prob(MONKEY_RETALIATE_HARM_PROB)) + retaliate(user) + return ..() /mob/living/carbon/monkey/attack_paw(mob/living/L) if(L.a_intent == INTENT_HARM && prob(MONKEY_RETALIATE_HARM_PROB)) diff --git a/code/modules/mob/living/carbon/monkey/monkey_defense.dm b/code/modules/mob/living/carbon/monkey/monkey_defense.dm index 6d2d7bcbcf..32e3d21ee2 100644 --- a/code/modules/mob/living/carbon/monkey/monkey_defense.dm +++ b/code/modules/mob/living/carbon/monkey/monkey_defense.dm @@ -6,25 +6,41 @@ ..() /mob/living/carbon/monkey/attack_paw(mob/living/M) - if(..()) //successful monkey bite. - var/dam_zone = pick(BODY_ZONE_CHEST, BODY_ZONE_PRECISE_L_HAND, BODY_ZONE_PRECISE_R_HAND, BODY_ZONE_L_LEG, BODY_ZONE_R_LEG) - var/obj/item/bodypart/affecting = get_bodypart(ran_zone(dam_zone)) - if(!affecting) - affecting = get_bodypart(BODY_ZONE_CHEST) - if(M.limb_destroyer) - dismembering_strike(M, affecting.body_zone) - var/dmg = rand(1, 5) - apply_damage(dmg, BRUTE, affecting) + . = ..() + if(!.) //unsuccessful monkey bite. + return + var/dam_zone = pick(BODY_ZONE_CHEST, BODY_ZONE_PRECISE_L_HAND, BODY_ZONE_PRECISE_R_HAND, BODY_ZONE_L_LEG, BODY_ZONE_R_LEG) + var/obj/item/bodypart/affecting = get_bodypart(ran_zone(dam_zone)) + if(!affecting) + affecting = get_bodypart(BODY_ZONE_CHEST) + if(M.limb_destroyer) + dismembering_strike(M, affecting.body_zone) + var/dmg = rand(1, 5) + apply_damage(dmg, BRUTE, affecting) /mob/living/carbon/monkey/attack_larva(mob/living/carbon/alien/larva/L) - if(..()) //successful larva bite. - var/damage = rand(1, 3) - if(stat != DEAD) - L.amount_grown = min(L.amount_grown + damage, L.max_grown) - var/obj/item/bodypart/affecting = get_bodypart(ran_zone(L.zone_selected)) - if(!affecting) - affecting = get_bodypart(BODY_ZONE_CHEST) - apply_damage(damage, BRUTE, affecting) + . = ..() + if(!.) //unsuccessful larva bite + return + var/damage = rand(1, 3) + if(stat != DEAD) + L.amount_grown = min(L.amount_grown + damage, L.max_grown) + var/obj/item/bodypart/affecting = get_bodypart(ran_zone(L.zone_selected)) + if(!affecting) + affecting = get_bodypart(BODY_ZONE_CHEST) + apply_damage(damage, BRUTE, affecting) + +/mob/living/carbon/monkey/attack_hulk(mob/living/carbon/human/user, does_attack_animation = FALSE) + . = ..(user, TRUE) + if(.) + return + var/hulk_verb = pick("smash","pummel") + playsound(loc, user.dna.species.attack_sound, 25, 1, -1) + var/message = "[user] has [hulk_verb]ed [src]!" + visible_message("[message]", \ + "[message]") + adjustBruteLoss(15) + return TRUE /mob/living/carbon/monkey/attack_hand(mob/living/carbon/human/M) . = ..() @@ -135,17 +151,19 @@ apply_damage(damage, M.melee_damage_type, affecting) /mob/living/carbon/monkey/attack_slime(mob/living/simple_animal/slime/M) - if(..()) //successful slime attack - var/damage = rand(5, 35) - if(M.is_adult) - damage = rand(20, 40) - var/dam_zone = dismembering_strike(M, pick(BODY_ZONE_HEAD, BODY_ZONE_CHEST, BODY_ZONE_L_ARM, BODY_ZONE_R_ARM, BODY_ZONE_L_LEG, BODY_ZONE_R_LEG)) - if(!dam_zone) //Dismemberment successful - return 1 - var/obj/item/bodypart/affecting = get_bodypart(ran_zone(dam_zone)) - if(!affecting) - affecting = get_bodypart(BODY_ZONE_CHEST) - apply_damage(damage, BRUTE, affecting) + . = ..() + if(!.) //unsuccessful slime attack + return + var/damage = rand(5, 35) + if(M.is_adult) + damage = rand(20, 40) + var/dam_zone = dismembering_strike(M, pick(BODY_ZONE_HEAD, BODY_ZONE_CHEST, BODY_ZONE_L_ARM, BODY_ZONE_R_ARM, BODY_ZONE_L_LEG, BODY_ZONE_R_LEG)) + if(!dam_zone) //Dismemberment successful + return 1 + var/obj/item/bodypart/affecting = get_bodypart(ran_zone(dam_zone)) + if(!affecting) + affecting = get_bodypart(BODY_ZONE_CHEST) + apply_damage(damage, BRUTE, affecting) /mob/living/carbon/monkey/acid_act(acidpwr, acid_volume, bodyzone_hit) . = 1 diff --git a/code/modules/mob/living/living_defense.dm b/code/modules/mob/living/living_defense.dm index d4f07e531e..e95e994734 100644 --- a/code/modules/mob/living/living_defense.dm +++ b/code/modules/mob/living/living_defense.dm @@ -45,10 +45,41 @@ return TRUE return FALSE +/mob/living/proc/check_reflect(def_zone) //Reflection checks for anything in your hands, based on the reflection chance of the object(s) + for(var/obj/item/I in held_items) + if(I.IsReflect(def_zone)) + return TRUE + return FALSE + +/mob/living/proc/reflect_bullet_check(obj/item/projectile/P, def_zone) + if(P.is_reflectable && check_reflect(def_zone)) // Checks if you've passed a reflection% check + visible_message("The [P.name] gets reflected by [src]!", \ + "The [P.name] gets reflected by [src]!") + // Find a turf near or on the original location to bounce to + if(P.starting) + var/new_x = P.starting.x + pick(0, 0, 0, 0, 0, -1, 1, -2, 2) + var/new_y = P.starting.y + pick(0, 0, 0, 0, 0, -1, 1, -2, 2) + var/turf/curloc = get_turf(src) + // redirect the projectile + P.original = locate(new_x, new_y, P.z) + P.starting = curloc + P.firer = src + P.yo = new_y - curloc.y + P.xo = new_x - curloc.x + var/new_angle_s = P.Angle + rand(120,240) + while(new_angle_s > 180) // Translate to regular projectile degrees + new_angle_s -= 360 + P.setAngle(new_angle_s) + return TRUE + return FALSE + /mob/living/bullet_act(obj/item/projectile/P, def_zone) - if(check_shields(P, P.damage, "the [P.name]", PROJECTILE_ATTACK, P.armour_penetration)) - P.on_hit(src, 100, def_zone) - return 2 + if(P.original != src || P.firer != src) //try to block or reflect the bullet, can't do so when shooting oneself + if(reflect_bullet_check(P, def_zone)) + return -1 // complete projectile permutation + if(check_shields(P, P.damage, "the [P.name]", PROJECTILE_ATTACK, P.armour_penetration)) + P.on_hit(src, 100, def_zone) + return 2 var/armor = run_armor_check(def_zone, P.flag, null, null, P.armour_penetration, null) if(!P.nodamage) apply_damage(P.damage, P.damage_type, def_zone, armor) @@ -279,6 +310,12 @@ to_chat(M, "You don't want to hurt anyone!") return FALSE + var/damage = rand(5, 35) + if(M.is_adult) + damage = rand(20, 40) + if(check_shields(M, damage, "the [M.name]")) + return FALSE + if (stat != DEAD) log_combat(M, src, "attacked") M.do_attack_animation(src) @@ -295,7 +332,8 @@ if(HAS_TRAIT(M, TRAIT_PACIFISM)) to_chat(M, "You don't want to hurt anyone!") return FALSE - + if(check_shields(M, rand(M.melee_damage_lower, M.melee_damage_upper), "the [M.name]", MELEE_ATTACK, M.armour_penetration)) + return FALSE if(M.attack_sound) playsound(loc, M.attack_sound, 50, 1, 1) M.do_attack_animation(src) @@ -306,10 +344,6 @@ /mob/living/attack_paw(mob/living/carbon/monkey/M) - if(isturf(loc) && istype(loc.loc, /area/start)) - to_chat(M, "No attacking people at spawn, you jackass.") - return FALSE - if (M.a_intent == INTENT_HARM) if(HAS_TRAIT(M, TRAIT_PACIFISM)) to_chat(M, "You don't want to hurt anyone!") @@ -334,15 +368,16 @@ /mob/living/attack_larva(mob/living/carbon/alien/larva/L) switch(L.a_intent) - if("help") + if(INTENT_HELP) visible_message("[L.name] rubs its head against [src].") return FALSE else if(HAS_TRAIT(L, TRAIT_PACIFISM)) to_chat(L, "You don't want to hurt anyone!") - return - + return FALSE + if(L != src && check_shields(L, rand(1, 3), "the [L.name]")) + return FALSE L.do_attack_animation(src) if(prob(90)) log_combat(L, src, "attacked") @@ -353,7 +388,6 @@ else visible_message("[L.name] has attempted to bite [src]!", \ "[L.name] has attempted to bite [src]!", null, COMBAT_MESSAGE_RANGE) - return FALSE /mob/living/attack_alien(mob/living/carbon/alien/humanoid/M) if((M != src) && M.a_intent != INTENT_HELP && check_shields(M, 0, "the [M.name]")) @@ -361,7 +395,8 @@ return FALSE switch(M.a_intent) if (INTENT_HELP) - visible_message("[M] caresses [src] with its scythe like arm.") + if(!isalien(src)) //I know it's ugly, but the alien vs alien attack_alien behaviour is a bit different. + visible_message("[M] caresses [src] with its scythe like arm.") return FALSE if (INTENT_GRAB) grabbedby(M) @@ -370,10 +405,12 @@ if(HAS_TRAIT(M, TRAIT_PACIFISM)) to_chat(M, "You don't want to hurt anyone!") return FALSE - M.do_attack_animation(src) + if(!isalien(src)) + M.do_attack_animation(src) return TRUE if(INTENT_DISARM) - M.do_attack_animation(src, ATTACK_EFFECT_DISARM) + if(!isalien(src)) + M.do_attack_animation(src, ATTACK_EFFECT_DISARM) return TRUE /mob/living/ex_act(severity, target, origin) diff --git a/code/modules/mob/living/silicon/robot/robot_defense.dm b/code/modules/mob/living/silicon/robot/robot_defense.dm index ddf2da2343..7e06c66eff 100644 --- a/code/modules/mob/living/silicon/robot/robot_defense.dm +++ b/code/modules/mob/living/silicon/robot/robot_defense.dm @@ -13,6 +13,15 @@ spark_system.start() return ..() +/mob/living/silicon/robot/attack_hulk(mob/living/carbon/human/user, does_attack_animation = FALSE) + . = ..() + if(.) + spark_system.start() + spawn(0) + step_away(src,user,15) + sleep(3) + step_away(src,user,15) + /mob/living/silicon/robot/attack_alien(mob/living/carbon/alien/humanoid/M) . = ..() if(!.) // the attack was blocked or was help/grab intent @@ -35,19 +44,17 @@ playsound(loc, 'sound/weapons/pierce.ogg', 50, 1, -1) /mob/living/silicon/robot/attack_slime(mob/living/simple_animal/slime/M) - if(..()) //successful slime shock - flash_act() - var/stunprob = M.powerlevel * 7 + 10 - if(prob(stunprob) && M.powerlevel >= 8) - adjustBruteLoss(M.powerlevel * rand(6,10)) - - var/damage = rand(1, 3) - + . = ..() + if(!.) //unsuccessful slime shock + return + var/stunprob = M.powerlevel * 7 + 10 + var/damage = M.powerlevel * rand(6,10) + if(prob(stunprob) && M.powerlevel >= 8) + flash_act(affect_silicon = TRUE) //my borg eyes! if(M.is_adult) - damage = rand(20, 40) + damage += rand(10, 20) else - damage = rand(5, 35) - damage = round(damage / 2) // borgs receive half damage + damage += rand(2, 17) adjustBruteLoss(damage) updatehealth() diff --git a/code/modules/mob/living/silicon/silicon_defense.dm b/code/modules/mob/living/silicon/silicon_defense.dm index 80a5058ed4..ca8ad25713 100644 --- a/code/modules/mob/living/silicon/silicon_defense.dm +++ b/code/modules/mob/living/silicon/silicon_defense.dm @@ -52,10 +52,6 @@ /mob/living/silicon/attack_paw(mob/living/user) return attack_hand(user) -/mob/living/silicon/attack_larva(mob/living/carbon/alien/larva/L) - if(L.a_intent == INTENT_HELP) - visible_message("[L.name] rubs its head against [src].") - /mob/living/silicon/attack_hulk(mob/living/carbon/human/user, does_attack_animation = FALSE) if(user.a_intent == INTENT_HARM) . = ..(user, TRUE) @@ -65,8 +61,8 @@ playsound(loc, "punch", 25, 1, -1) visible_message("[user] has punched [src]!", \ "[user] has punched [src]!") - return 1 - return 0 + return TRUE + return FALSE /mob/living/silicon/attack_hand(mob/living/carbon/human/M) . = ..() @@ -115,9 +111,12 @@ flash_act(affect_silicon = 1) /mob/living/silicon/bullet_act(obj/item/projectile/P, def_zone) - if(check_shields(P, P.damage, "the [P.name]", PROJECTILE_ATTACK, P.armour_penetration)) - P.on_hit(src, 100, def_zone) - return 2 + if(P.original != src || P.firer != src) //try to block or reflect the bullet, can't do so when shooting oneself + if(reflect_bullet_check(P, def_zone)) + return -1 // complete projectile permutation + if(check_shields(P, P.damage, "the [P.name]", PROJECTILE_ATTACK, P.armour_penetration)) + P.on_hit(src, 100, def_zone) + return 2 if((P.damage_type == BRUTE || P.damage_type == BURN)) adjustBruteLoss(P.damage) if(prob(P.damage*1.5)) diff --git a/code/modules/mob/living/simple_animal/animal_defense.dm b/code/modules/mob/living/simple_animal/animal_defense.dm index 4542f140d4..0dfa126e79 100644 --- a/code/modules/mob/living/simple_animal/animal_defense.dm +++ b/code/modules/mob/living/simple_animal/animal_defense.dm @@ -41,7 +41,8 @@ return TRUE /mob/living/simple_animal/attack_paw(mob/living/carbon/monkey/M) - if(..()) //successful monkey bite. + . = ..() + if(.) //successful larva bite var/damage = rand(1, 3) attack_threshold_check(damage) return 1 @@ -50,7 +51,6 @@ visible_message("[M.name] [response_help] [src].") playsound(loc, 'sound/weapons/thudswoosh.ogg', 50, 1, -1) - /mob/living/simple_animal/attack_alien(mob/living/carbon/alien/humanoid/M) . = ..() if(!.) // the attack was blocked or was help/grab intent @@ -83,7 +83,8 @@ return attack_threshold_check(damage, M.melee_damage_type) /mob/living/simple_animal/attack_slime(mob/living/simple_animal/slime/M) - if(..()) //successful slime attack + . = ..() + if(.) //successful slime shock var/damage = rand(15, 25) if(M.is_adult) damage = rand(20, 35) diff --git a/code/modules/mob/living/simple_animal/guardian/types/charger.dm b/code/modules/mob/living/simple_animal/guardian/types/charger.dm index 3ece5d4e27..3719861d63 100644 --- a/code/modules/mob/living/simple_animal/guardian/types/charger.dm +++ b/code/modules/mob/living/simple_animal/guardian/types/charger.dm @@ -54,10 +54,8 @@ var/blocked = FALSE if(hasmatchingsummoner(A)) //if the summoner matches don't hurt them blocked = TRUE - if(ishuman(A)) - var/mob/living/carbon/human/H = A - if(H.check_shields(src, 90, "[name]", attack_type = THROWN_PROJECTILE_ATTACK)) - blocked = TRUE + if(L.check_shields(src, 90, "[name]", attack_type = THROWN_PROJECTILE_ATTACK)) + blocked = TRUE if(!blocked) L.drop_all_held_items() L.visible_message("[src] slams into [L]!", "[src] slams into you!") diff --git a/code/modules/mob/living/simple_animal/slime/slime.dm b/code/modules/mob/living/simple_animal/slime/slime.dm index 4deb62aac2..affb476534 100644 --- a/code/modules/mob/living/simple_animal/slime/slime.dm +++ b/code/modules/mob/living/simple_animal/slime/slime.dm @@ -252,33 +252,34 @@ return /mob/living/simple_animal/slime/attack_slime(mob/living/simple_animal/slime/M) - if(..()) //successful slime attack - if(M == src) - return - if(buckled) - Feedstop(silent = TRUE) - visible_message("[M] pulls [src] off!") - return - attacked += 5 - if(nutrition >= 100) //steal some nutrition. negval handled in life() - nutrition -= (50 + (40 * M.is_adult)) - M.add_nutrition(50 + (40 * M.is_adult)) - if(health > 0) - M.adjustBruteLoss(-10 + (-10 * M.is_adult)) - M.updatehealth() + . = ..() + if(!. || M == src) //unsuccessful slime shock + return + if(buckled) + Feedstop(silent = TRUE) + visible_message("[M] pulls [src] off!") + return + attacked += 5 + if(nutrition >= 100) //steal some nutrition. negval handled in life() + nutrition -= (50 + (40 * M.is_adult)) + M.add_nutrition(50 + (40 * M.is_adult)) + if(health > 0) + M.adjustBruteLoss(-10 + (-10 * M.is_adult)) + M.updatehealth() /mob/living/simple_animal/slime/attack_animal(mob/living/simple_animal/M) . = ..() if(.) attacked += 10 - /mob/living/simple_animal/slime/attack_paw(mob/living/carbon/monkey/M) - if(..()) //successful monkey bite. + . = ..() + if(.)//successful monkey bite. attacked += 10 /mob/living/simple_animal/slime/attack_larva(mob/living/carbon/alien/larva/L) - if(..()) //successful larva bite. + . = ..() + if(.) //successful larva bite. attacked += 10 /mob/living/simple_animal/slime/attack_hulk(mob/living/carbon/human/user, does_attack_animation = 0) diff --git a/modular_citadel/code/modules/mob/living/silicon/robot/dogborg_equipment.dm b/modular_citadel/code/modules/mob/living/silicon/robot/dogborg_equipment.dm index 99ba9ad3e2..6f73d5ae84 100644 --- a/modular_citadel/code/modules/mob/living/silicon/robot/dogborg_equipment.dm +++ b/modular_citadel/code/modules/mob/living/silicon/robot/dogborg_equipment.dm @@ -400,12 +400,7 @@ SLEEPER CODE IS IN game/objects/items/devices/dogborg_sleeper.dm ! if(A) if(isliving(A)) var/mob/living/L = A - var/blocked = 0 - if(ishuman(A)) - var/mob/living/carbon/human/H = A - if(H.check_shields(0, "the [name]", src, attack_type = LEAP_ATTACK)) - blocked = 1 - if(!blocked) + if(!L.check_shields(0, "the [name]", src, attack_type = LEAP_ATTACK)) L.visible_message("[src] pounces on [L]!", "[src] pounces on you!") L.Knockdown(iscarbon(L) ? 60 : 45, override_stamdmg = CLAMP(pounce_stamloss, 0, pounce_stamloss_cap-L.getStaminaLoss())) // Temporary. If someone could rework how dogborg pounces work to accomodate for combat changes, that'd be nice. playsound(src, 'sound/weapons/Egloves.ogg', 50, 1) From d5e7f77c13ca0f86828783ccbbc68de06c7f9758 Mon Sep 17 00:00:00 2001 From: Ghommie <42542238+Ghommie@users.noreply.github.com> Date: Mon, 18 Nov 2019 18:47:34 +0100 Subject: [PATCH 005/192] A --- code/modules/mob/living/carbon/monkey/combat.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/modules/mob/living/carbon/monkey/combat.dm b/code/modules/mob/living/carbon/monkey/combat.dm index 30afa491c5..0a21994145 100644 --- a/code/modules/mob/living/carbon/monkey/combat.dm +++ b/code/modules/mob/living/carbon/monkey/combat.dm @@ -374,7 +374,7 @@ /mob/living/carbon/monkey/attack_larva(mob/living/carbon/alien/larva/L) if(L.a_intent == INTENT_HARM && prob(MONKEY_RETALIATE_HARM_PROB)) - retaliate(user) + retaliate(L) return ..() /mob/living/carbon/monkey/attack_hulk(mob/living/carbon/human/user, does_attack_animation = FALSE) From ccd966ed28ccf7bcfaa6994aa34cde005e6afdb3 Mon Sep 17 00:00:00 2001 From: Ghommie <42542238+Ghommie@users.noreply.github.com> Date: Wed, 4 Dec 2019 20:32:25 +0100 Subject: [PATCH 006/192] Update, fix. --- code/modules/mob/living/living_defense.dm | 2 +- code/modules/ninja/suit/n_suit_verbs/ninja_stealth.dm | 5 ++--- 2 files changed, 3 insertions(+), 4 deletions(-) diff --git a/code/modules/mob/living/living_defense.dm b/code/modules/mob/living/living_defense.dm index 82ebb6e763..39c8435076 100644 --- a/code/modules/mob/living/living_defense.dm +++ b/code/modules/mob/living/living_defense.dm @@ -282,7 +282,7 @@ /mob/living/attack_hand(mob/user) ..() //Ignoring parent return value here. - SEND_SIGNAL(user, COMSIG_MOB_ATTACK_HAND, user, src) + SEND_SIGNAL(src, COMSIG_MOB_ATTACK_HAND, user) if((user != src) && user.a_intent != INTENT_HELP && check_shields(user, 0, user.name, attack_type = UNARMED_ATTACK)) log_combat(user, src, "attempted to touch") visible_message("[user] attempted to touch [src]!") diff --git a/code/modules/ninja/suit/n_suit_verbs/ninja_stealth.dm b/code/modules/ninja/suit/n_suit_verbs/ninja_stealth.dm index 8c304d8a2b..56c50078c1 100644 --- a/code/modules/ninja/suit/n_suit_verbs/ninja_stealth.dm +++ b/code/modules/ninja/suit/n_suit_verbs/ninja_stealth.dm @@ -26,10 +26,9 @@ Contents: /obj/item/clothing/suit/space/space_ninja/proc/enable_signals() if(!affecting) return - RegisterSignal(affecting, list(COMSIG_MOB_ITEM_ATTACK, COMSIG_MOB_ATTACK_RANGED, COMSIG_MOB_ATTACK_HAND, COMSIG_MOB_THROW, COMSIG_PARENT_ATTACKBY, COMSIG_MOVABLE_TELEPORTED, COMSIG_LIVING_GUN_PROCESS_FIRE), .proc/reduce_stealth) + RegisterSignal(affecting, list(COMSIG_MOB_ITEM_ATTACK, COMSIG_MOB_ATTACK_RANGED, COMSIG_HUMAN_MELEE_UNARMED_ATTACK, COMSIG_MOB_ATTACK_HAND, COMSIG_MOB_THROW, COMSIG_PARENT_ATTACKBY, COMSIG_MOVABLE_TELEPORTED, COMSIG_LIVING_GUN_PROCESS_FIRE), .proc/reduce_stealth) RegisterSignal(affecting, COMSIG_MOVABLE_BUMP, .proc/bumping_stealth) - /obj/item/clothing/suit/space/space_ninja/proc/reduce_stealth(datum/source) affecting.alpha = min(affecting.alpha + 40, 100) @@ -42,7 +41,7 @@ Contents: return FALSE stealth = !stealth stealth_cooldown = world.time + 5 SECONDS - UnregisterSignal(affecting, list(COMSIG_MOB_ITEM_ATTACK, COMSIG_MOB_ATTACK_RANGED, COMSIG_MOB_ATTACK_HAND, COMSIG_MOB_THROW, COMSIG_PARENT_ATTACKBY, COMSIG_MOVABLE_BUMP, COMSIG_MOVABLE_TELEPORTED, COMSIG_LIVING_GUN_PROCESS_FIRE)) + UnregisterSignal(affecting, list(COMSIG_MOB_ITEM_ATTACK, COMSIG_MOB_ATTACK_RANGED, COMSIG_HUMAN_MELEE_UNARMED_ATTACK, COMSIG_MOB_ATTACK_HAND, COMSIG_MOB_THROW, COMSIG_PARENT_ATTACKBY, COMSIG_MOVABLE_BUMP, COMSIG_MOVABLE_TELEPORTED, COMSIG_LIVING_GUN_PROCESS_FIRE)) animate(affecting, alpha = 255, time = 3 SECONDS) affecting.visible_message("[affecting.name] appears from thin air!", \ "You are now visible.") From cd1cf1e1e32c95c7154241a432c08af799e44757 Mon Sep 17 00:00:00 2001 From: kevinz000 <2003111+kevinz000@users.noreply.github.com> Date: Sun, 8 Dec 2019 22:01:50 -0700 Subject: [PATCH 007/192] Update carbon.dm --- code/modules/mob/living/carbon/carbon.dm | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/code/modules/mob/living/carbon/carbon.dm b/code/modules/mob/living/carbon/carbon.dm index 3a9495a5cb..568edaa8d5 100644 --- a/code/modules/mob/living/carbon/carbon.dm +++ b/code/modules/mob/living/carbon/carbon.dm @@ -157,6 +157,7 @@ if(getStaminaLoss() >= STAMINA_SOFTCRIT) to_chat(src, "You're too exhausted.") return + var/random_turn = a_itnent == INTENT_DISARM //END OF CIT CHANGES var/atom/movable/thrown_thing @@ -960,4 +961,4 @@ /mob/living/carbon/transfer_ckey(mob/new_mob, send_signal = TRUE) if(combatmode) toggle_combat_mode(TRUE, TRUE) - return ..() \ No newline at end of file + return ..() From f8c6f0eb8a92e0025e9921df3cfbb92dfb407e92 Mon Sep 17 00:00:00 2001 From: kevinz000 <2003111+kevinz000@users.noreply.github.com> Date: Sun, 8 Dec 2019 22:03:35 -0700 Subject: [PATCH 008/192] Update items.dm --- code/game/objects/items.dm | 17 +++++++++-------- 1 file changed, 9 insertions(+), 8 deletions(-) diff --git a/code/game/objects/items.dm b/code/game/objects/items.dm index c5d198c05f..b7f6ef550f 100644 --- a/code/game/objects/items.dm +++ b/code/game/objects/items.dm @@ -578,21 +578,22 @@ GLOBAL_VAR_INIT(rpg_loot_items, FALSE) itempush = 0 //too light to push anything return A.hitby(src, 0, itempush) -/obj/item/throw_at(atom/target, range, speed, mob/thrower, spin=1, diagonals_first = 0, datum/callback/callback) +/obj/item/throw_at(atom/target, range, speed, mob/thrower, spin=1, diagonals_first = 0, datum/callback/callback, messy_throw = TRUE) thrownby = thrower - callback = CALLBACK(src, .proc/after_throw, callback) //replace their callback with our own + callback = CALLBACK(src, .proc/after_throw, callback, messy_throw) //replace their callback with our own . = ..(target, range, speed, thrower, spin, diagonals_first, callback) -/obj/item/proc/after_throw(datum/callback/callback) +/obj/item/proc/after_throw(datum/callback/callback, messy_throw) if (callback) //call the original callback . = callback.Invoke() throw_speed = initial(throw_speed) //explosions change this. item_flags &= ~IN_INVENTORY - var/matrix/M = matrix(transform) - M.Turn(rand(-170, 170)) - transform = M - pixel_x = rand(-8, 8) - pixel_y = rand(-8, 8) + if(messy_throw) + var/matrix/M = matrix(transform) + M.Turn(rand(-170, 170)) + transform = M + pixel_x = rand(-8, 8) + pixel_y = rand(-8, 8) /obj/item/proc/remove_item_from_storage(atom/newLoc) //please use this if you're going to snowflake an item out of a obj/item/storage if(!newLoc) From 5cbcc064976ce515786218a5ead8e68e7252e165 Mon Sep 17 00:00:00 2001 From: kevinz000 <2003111+kevinz000@users.noreply.github.com> Date: Sun, 8 Dec 2019 22:04:32 -0700 Subject: [PATCH 009/192] Update objs.dm --- code/game/objects/objs.dm | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/code/game/objects/objs.dm b/code/game/objects/objs.dm index e6c7f987d5..da9cd6ba82 100644 --- a/code/game/objects/objs.dm +++ b/code/game/objects/objs.dm @@ -80,13 +80,12 @@ SEND_SIGNAL(src, COMSIG_OBJ_SETANCHORED, anchorvalue) anchored = anchorvalue -/obj/throw_at(atom/target, range, speed, mob/thrower, spin=1, diagonals_first = 0, datum/callback/callback) - ..() +/obj/throw_at(atom/target, range, speed, mob/thrower, spin=1, diagonals_first = 0, datum/callback/callback, messy_throw) + . = ..() if(obj_flags & FROZEN) visible_message("[src] shatters into a million pieces!") qdel(src) - /obj/assume_air(datum/gas_mixture/giver) if(loc) return loc.assume_air(giver) From 4ba64f5fa767f62a065dfd01a7755cce954f2fea Mon Sep 17 00:00:00 2001 From: kevinz000 <2003111+kevinz000@users.noreply.github.com> Date: Sun, 8 Dec 2019 22:05:13 -0700 Subject: [PATCH 010/192] Update atoms_movable.dm --- code/game/atoms_movable.dm | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/code/game/atoms_movable.dm b/code/game/atoms_movable.dm index ef20b6e35e..6bc960332d 100644 --- a/code/game/atoms_movable.dm +++ b/code/game/atoms_movable.dm @@ -515,10 +515,10 @@ step(src, AM.dir) ..() -/atom/movable/proc/safe_throw_at(atom/target, range, speed, mob/thrower, spin=TRUE, diagonals_first = FALSE, var/datum/callback/callback) - return throw_at(target, range, speed, thrower, spin, diagonals_first, callback) +/atom/movable/proc/safe_throw_at(atom/target, range, speed, mob/thrower, spin=TRUE, diagonals_first = FALSE, var/datum/callback/callback, messy_throw = TRUE) + return throw_at(target, range, speed, thrower, spin, diagonals_first, callback, messy_throw) -/atom/movable/proc/throw_at(atom/target, range, speed, mob/thrower, spin=TRUE, diagonals_first = FALSE, var/datum/callback/callback) //If this returns FALSE then callback will not be called. +/atom/movable/proc/throw_at(atom/target, range, speed, mob/thrower, spin=TRUE, diagonals_first = FALSE, var/datum/callback/callback, messy_throw = TURE) //If this returns FALSE then callback will not be called. . = FALSE if (!target || speed <= 0) return From 0dc69942a9411dee111c95f5778b7a10e7b2223b Mon Sep 17 00:00:00 2001 From: kevinz000 <2003111+kevinz000@users.noreply.github.com> Date: Sun, 8 Dec 2019 22:08:29 -0700 Subject: [PATCH 011/192] Update carbon.dm --- code/modules/mob/living/carbon/carbon.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/modules/mob/living/carbon/carbon.dm b/code/modules/mob/living/carbon/carbon.dm index 568edaa8d5..413bfb0f14 100644 --- a/code/modules/mob/living/carbon/carbon.dm +++ b/code/modules/mob/living/carbon/carbon.dm @@ -194,7 +194,7 @@ do_attack_animation(target, no_effect = 1) playsound(loc, 'sound/weapons/punchmiss.ogg', 50, 1, -1) newtonian_move(get_dir(target, src)) - thrown_thing.throw_at(target, thrown_thing.throw_range, thrown_thing.throw_speed, src) + thrown_thing.throw_at(target, thrown_thing.throw_range, thrown_thing.throw_speed, src, null, null, null, random_turn) /mob/living/carbon/restrained(ignore_grab) . = (handcuffed || (!ignore_grab && pulledby && pulledby.grab_state >= GRAB_AGGRESSIVE)) From 1866276d38d577601625d7d5cd221a46be6e05b7 Mon Sep 17 00:00:00 2001 From: kevinz000 <2003111+kevinz000@users.noreply.github.com> Date: Sun, 8 Dec 2019 22:13:15 -0700 Subject: [PATCH 012/192] wrong intent --- code/modules/mob/living/carbon/carbon.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/modules/mob/living/carbon/carbon.dm b/code/modules/mob/living/carbon/carbon.dm index 413bfb0f14..e3ee7db90e 100644 --- a/code/modules/mob/living/carbon/carbon.dm +++ b/code/modules/mob/living/carbon/carbon.dm @@ -157,7 +157,7 @@ if(getStaminaLoss() >= STAMINA_SOFTCRIT) to_chat(src, "You're too exhausted.") return - var/random_turn = a_itnent == INTENT_DISARM + var/random_turn = a_intent == INTENT_HARM //END OF CIT CHANGES var/atom/movable/thrown_thing From d8dd0a4db599beecd064c010ee74d2403b18064a Mon Sep 17 00:00:00 2001 From: kevinz000 <2003111+kevinz000@users.noreply.github.com> Date: Mon, 9 Dec 2019 12:45:27 -0700 Subject: [PATCH 013/192] bet Co-Authored-By: Ghom <42542238+Ghommie@users.noreply.github.com> --- code/game/objects/items.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/game/objects/items.dm b/code/game/objects/items.dm index b7f6ef550f..a410827347 100644 --- a/code/game/objects/items.dm +++ b/code/game/objects/items.dm @@ -580,7 +580,7 @@ GLOBAL_VAR_INIT(rpg_loot_items, FALSE) /obj/item/throw_at(atom/target, range, speed, mob/thrower, spin=1, diagonals_first = 0, datum/callback/callback, messy_throw = TRUE) thrownby = thrower - callback = CALLBACK(src, .proc/after_throw, callback, messy_throw) //replace their callback with our own + callback = CALLBACK(src, .proc/after_throw, callback, (spin && messy_throw)) //replace their callback with our own . = ..(target, range, speed, thrower, spin, diagonals_first, callback) /obj/item/proc/after_throw(datum/callback/callback, messy_throw) From f42164964752c99470b200cb2186c5fb86834f4d Mon Sep 17 00:00:00 2001 From: kevinz000 <2003111+kevinz000@users.noreply.github.com> Date: Mon, 9 Dec 2019 23:00:59 -0700 Subject: [PATCH 014/192] Update atoms_movable.dm --- code/game/atoms_movable.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/game/atoms_movable.dm b/code/game/atoms_movable.dm index 6bc960332d..7c57de74a4 100644 --- a/code/game/atoms_movable.dm +++ b/code/game/atoms_movable.dm @@ -518,7 +518,7 @@ /atom/movable/proc/safe_throw_at(atom/target, range, speed, mob/thrower, spin=TRUE, diagonals_first = FALSE, var/datum/callback/callback, messy_throw = TRUE) return throw_at(target, range, speed, thrower, spin, diagonals_first, callback, messy_throw) -/atom/movable/proc/throw_at(atom/target, range, speed, mob/thrower, spin=TRUE, diagonals_first = FALSE, var/datum/callback/callback, messy_throw = TURE) //If this returns FALSE then callback will not be called. +/atom/movable/proc/throw_at(atom/target, range, speed, mob/thrower, spin=TRUE, diagonals_first = FALSE, var/datum/callback/callback, messy_throw = TRUE) //If this returns FALSE then callback will not be called. . = FALSE if (!target || speed <= 0) return From c098d497ad1b2e4c1cdf9b32067626357c8bf134 Mon Sep 17 00:00:00 2001 From: Ghommie <42542238+Ghommie@users.noreply.github.com> Date: Fri, 13 Dec 2019 06:50:14 +0100 Subject: [PATCH 015/192] Minor underwear fixes and tweaks. --- code/__HELPERS/mobs.dm | 2 - code/game/objects/structures/dresser.dm | 6 +-- code/modules/client/preferences.dm | 6 +-- .../sprite_accessories/_sprite_accessories.dm | 3 +- .../new_player/sprite_accessories/socks.dm | 3 ++ .../sprite_accessories/underwear.dm | 9 ++++ .../mob/living/carbon/human/species.dm | 39 ++++++++++-------- icons/mob/underwear.dmi | Bin 59789 -> 60553 bytes icons/mob/underwear_old.dmi | Bin 52536 -> 0 bytes 9 files changed, 41 insertions(+), 27 deletions(-) delete mode 100644 icons/mob/underwear_old.dmi diff --git a/code/__HELPERS/mobs.dm b/code/__HELPERS/mobs.dm index 0d6345dae2..f9b3d0bb2b 100644 --- a/code/__HELPERS/mobs.dm +++ b/code/__HELPERS/mobs.dm @@ -20,8 +20,6 @@ else return "000" -#define UNDIE_COLORABLE(U) (U?.has_color) - /proc/random_underwear(gender) if(!GLOB.underwear_list.len) init_sprite_accessory_subtypes(/datum/sprite_accessory/underwear/bottom, GLOB.underwear_list, GLOB.underwear_m, GLOB.underwear_f) diff --git a/code/game/objects/structures/dresser.dm b/code/game/objects/structures/dresser.dm index 05e62c196f..7f0c3c6eb8 100644 --- a/code/game/objects/structures/dresser.dm +++ b/code/game/objects/structures/dresser.dm @@ -30,11 +30,11 @@ return var/list/undergarment_choices = list("Underwear", "Underwear Color", "Undershirt", "Undershirt Color", "Socks", "Socks Color") - if(!UNDIE_COLORABLE(GLOB.underwear_list[H.underwear])) + if(!(GLOB.underwear_list[H.underwear]?.has_color)) undergarment_choices -= "Underwear Color" - if(!UNDIE_COLORABLE(GLOB.undershirt_list[H.undershirt])) + if(!(GLOB.undershirt_list[H.undershirt]?.has_color)) undergarment_choices -= "Undershirt Color" - if(!UNDIE_COLORABLE(GLOB.socks_list[H.socks])) + if(!(GLOB.socks_list[H.socks]?.has_color)) undergarment_choices -= "Socks Color" var/choice = input(H, "Underwear, Undershirt, or Socks?", "Changing") as null|anything in undergarment_choices diff --git a/code/modules/client/preferences.dm b/code/modules/client/preferences.dm index e91d379ddd..322f79b8c3 100644 --- a/code/modules/client/preferences.dm +++ b/code/modules/client/preferences.dm @@ -712,13 +712,13 @@ GLOBAL_LIST_EMPTY(preferences_datums) dat += "
" dat += "

Clothing & Equipment

" dat += "Underwear:[underwear]" - if(UNDIE_COLORABLE(GLOB.underwear_list[underwear])) + if(GLOB.underwear_list[underwear]?.has_color) dat += "Underwear Color:     Change
" dat += "Undershirt:[undershirt]" - if(UNDIE_COLORABLE(GLOB.undershirt_list[undershirt])) + if(GLOB.undershirt_list[undershirt]?.has_color) dat += "Undershirt Color:     Change
" dat += "Socks:[socks]" - if(UNDIE_COLORABLE(GLOB.socks_list[socks])) + if(GLOB.socks_list[socks]?.has_color) dat += "Socks Color:     Change
" dat += "Backpack:[backbag]" dat += "Jumpsuit:
[jumpsuit_style]
" diff --git a/code/modules/mob/dead/new_player/sprite_accessories/_sprite_accessories.dm b/code/modules/mob/dead/new_player/sprite_accessories/_sprite_accessories.dm index dd66f68e5d..241ec8118e 100644 --- a/code/modules/mob/dead/new_player/sprite_accessories/_sprite_accessories.dm +++ b/code/modules/mob/dead/new_player/sprite_accessories/_sprite_accessories.dm @@ -74,4 +74,5 @@ /datum/sprite_accessory/underwear icon = 'icons/mob/underwear.dmi' - var/has_color = FALSE \ No newline at end of file + var/has_color = FALSE + var/has_digitigrade = FALSE \ No newline at end of file diff --git a/code/modules/mob/dead/new_player/sprite_accessories/socks.dm b/code/modules/mob/dead/new_player/sprite_accessories/socks.dm index 524c1f0f13..ddb5c4e21b 100644 --- a/code/modules/mob/dead/new_player/sprite_accessories/socks.dm +++ b/code/modules/mob/dead/new_player/sprite_accessories/socks.dm @@ -2,6 +2,9 @@ // Socks Definitions // /////////////////////// +/datum/sprite_accessory/underwear/socks + has_digitigrade = TRUE + /datum/sprite_accessory/underwear/socks/nude name = "Nude" icon_state = null diff --git a/code/modules/mob/dead/new_player/sprite_accessories/underwear.dm b/code/modules/mob/dead/new_player/sprite_accessories/underwear.dm index 3356804cb3..9441b5120a 100644 --- a/code/modules/mob/dead/new_player/sprite_accessories/underwear.dm +++ b/code/modules/mob/dead/new_player/sprite_accessories/underwear.dm @@ -28,41 +28,49 @@ name = "Boxers" icon_state = "boxers" has_color = TRUE + has_digitigrade = TRUE gender = MALE /datum/sprite_accessory/underwear/bottom/male_bee name = "Boxers - Bee" icon_state = "bee_shorts" + has_digitigrade = TRUE gender = MALE /datum/sprite_accessory/underwear/bottom/male_hearts name = "Boxers - Heart" icon_state = "boxers_heart" + has_digitigrade = TRUE gender = MALE /datum/sprite_accessory/underwear/bottom/male_stripe name = "Boxers - Striped" icon_state = "boxers_striped" + has_digitigrade = TRUE gender = MALE /datum/sprite_accessory/underwear/bottom/male_commie name = "Boxers - Striped Communist" icon_state = "boxers_commie" + has_digitigrade = TRUE gender = MALE /datum/sprite_accessory/underwear/bottom/male_usastripe name = "Boxers - Striped Freedom" icon_state = "boxers_assblastusa" + has_digitigrade = TRUE gender = MALE /datum/sprite_accessory/underwear/bottom/male_uk name = "Boxers - Striped UK" icon_state = "boxers_uk" + has_digitigrade = TRUE gender = MALE /datum/sprite_accessory/underwear/bottom/boxer_briefs name = "Boxer Briefs" icon_state = "boxer_briefs" + has_digitigrade = TRUE has_color = TRUE /datum/sprite_accessory/underwear/bottom/panties @@ -140,6 +148,7 @@ /datum/sprite_accessory/underwear/bottom/longjon name = "Long John Bottoms" icon_state = "ljonb" + has_digitigrade = TRUE has_color = TRUE /datum/sprite_accessory/underwear/bottom/swimsuit_red diff --git a/code/modules/mob/living/carbon/human/species.dm b/code/modules/mob/living/carbon/human/species.dm index 96bd62b1f6..ddf258077b 100644 --- a/code/modules/mob/living/carbon/human/species.dm +++ b/code/modules/mob/living/carbon/human/species.dm @@ -545,6 +545,20 @@ GLOBAL_LIST_EMPTY(roundstart_race_names) //Underwear, Undershirts & Socks if(!(NO_UNDERWEAR in species_traits)) + + if(H.socks && H.get_num_legs(FALSE) >= 2) + if(H.hidden_socks) + H.socks = "Nude" + else + H.socks = H.saved_socks + var/datum/sprite_accessory/underwear/socks/S = GLOB.socks_list[H.socks] + if(S) + var/digilegs = ((DIGITIGRADE in species_traits) && S.has_digitigrade) ? "_d" : "" + var/mutable_appearance/MA = mutable_appearance(S.icon, "[S.icon_state][digilegs]", -BODY_LAYER) + if(S.has_color) + MA.color = "#[H.socks_color]" + standing += MA + if(H.underwear) if(H.hidden_underwear) H.underwear = "Nude" @@ -552,8 +566,9 @@ GLOBAL_LIST_EMPTY(roundstart_race_names) H.underwear = H.saved_underwear var/datum/sprite_accessory/underwear/bottom/B = GLOB.underwear_list[H.underwear] if(B) - var/mutable_appearance/MA = mutable_appearance(B.icon, B.icon_state, -BODY_LAYER) - if(UNDIE_COLORABLE(B)) + var/digilegs = ((DIGITIGRADE in species_traits) && B.has_digitigrade) ? "_d" : "" + var/mutable_appearance/MA = mutable_appearance(B.icon, "[B.icon_state][digilegs]", -BODY_LAYER) + if(B.has_color) MA.color = "#[H.undie_color]" standing += MA @@ -564,28 +579,16 @@ GLOBAL_LIST_EMPTY(roundstart_race_names) H.undershirt = H.saved_undershirt var/datum/sprite_accessory/underwear/top/T = GLOB.undershirt_list[H.undershirt] if(T) + var/state = "[T.icon_state][((DIGITIGRADE in species_traits) && T.has_digitigrade) ? "_d" : ""]" var/mutable_appearance/MA if(H.dna.species.sexes && H.gender == FEMALE) - MA = wear_female_version(T.icon_state, T.icon, BODY_LAYER) + MA = wear_female_version(state, T.icon, BODY_LAYER) else - MA = mutable_appearance(T.icon, T.icon_state, -BODY_LAYER) - if(UNDIE_COLORABLE(T)) + MA = mutable_appearance(T.icon, state, -BODY_LAYER) + if(T.has_color) MA.color = "#[H.shirt_color]" standing += MA - if(H.socks && H.get_num_legs(FALSE) >= 2) - if(H.hidden_socks) - H.socks = "Nude" - else - H.socks = H.saved_socks - var/datum/sprite_accessory/underwear/socks/S = GLOB.socks_list[H.socks] - if(S) - var/digilegs = (DIGITIGRADE in species_traits) ? "_d" : "" - var/mutable_appearance/MA = mutable_appearance(S.icon, "[S.icon_state][digilegs]", -BODY_LAYER) - if(UNDIE_COLORABLE(S)) - MA.color = "#[H.socks_color]" - standing += MA - if(standing.len) H.overlays_standing[BODY_LAYER] = standing diff --git a/icons/mob/underwear.dmi b/icons/mob/underwear.dmi index 3174397b545570a3f8093280c61ead35ed3ab9b7..ee93b27f9ff32213623f2ba13f5a089a3d1c3f67 100644 GIT binary patch literal 60553 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 AE&u=k literal 59789 zcmc$`1yohG*c;YTCgC8Bh9DX9{oC=F5q(%l=B?vjvHKtUt~>F#c%q`PC&z3;pI zk8{3p$Gzu_d%y2H-`QiJYc1AZ>s{}f@0`zk<}(R>uBwQKO@$3X5Z)6dxfc+G#(@06 zx&w|(+uyMOJ8wKSw4CM4oJ<@o?VT;{Y$3=!Eg`u%YLtgCXmC0=B#}P^qp1F~yamAl z_OQsO4g+!5WCxwgQ<^yEmxPD=CSL~|&F?SIFE>~jx}$Ns%sEzog;G7c?#M!A7~d%Q?AT`B-m8M2vxgS!NyUkzq5I zk^I=hC*x#OS9pQ4LmUDauNUfeEtTe9baBLr6Uf^I{2btY{AzyZj;#9nl)b9ieyi7u zyc4cV_L&$8n*g2GYdXgT6)J-_0r@mXYchgd>;XDE_oKy12_5;Z^P!p)aaVjzGM9Z_ z-xQuCr`loE89{N&tsd=+v_D;|vZanTO5|k8Lf^S7PwrT~kwR;qK4-j#o@p|eHICxn z<*10c#y^z#5YnWRkJjq#F>;k3E{<0ey-*&me9V>NjFPZ^h?ns2($%@XYV>qy3 zg?H&IuTM7l$0=D^{m^t+t8WB&jrq3O|ixo8^yeS>&{;k@0T@A zIrz$>k?k33f9y4=JGkG6%f+*K_w#q_MZbquD6!OZEU(jKbVv`)x>a_xq6H- zo;`I}8I~bgigM7Z$w$RlkNE9jV-k1B4#%^3AA8TmAPLhR4~PA#%feBLueD~Xrg{9Q zpJN4=G0MD>1}V-N9)>e(*u}eeqG^(UR95&**j<>kK4u8O=v6q*~^-X zrbk0AjX#jumD7f=UY(&bKo(nuThI3BEfZz%}lVicGe39l|p%7Xc`V`WBmBt0)+<0Dl4qCAcBqUO$T5d(8q z5sN3DkK~Y_9NDL(#0*T}ll93T1B(dxv1~;R2tj_zj8Go`J?qa;h!J@XlZ}=iA@Y=1 zAr6_przlaAG5qU7csPWAPZ&F@d|Ni|uhg`bG>yhbx zaFIJ0U}y(;rjDH4T=U=S$nj?XzdqVPD2K6G45GH@k5 zOA~j)=Ssr)@*GPj6|cX){{a`5f|Jv)kq#LzuUf70ccj)r)R5d#?>qs$RK$l5s6t94 zrBl{S6u9`hww2RF*nuDE5!FuX#+xHwe@)r;4%pd3r|^s z`5mT+{EnGZU#}0vv@2-9jr5DdIi#FLJq}lX?uvUH=2UrKlv>!?k;BJ-bbSG*={0zZ z+DasdmQ_}UFD)5!=+}@uOX6w|BV}i5Bqt}g61{!+@F8-j4#ykAd7U3Wl916+=~p|l zZ1GYa9v#J#iI0DMmh^d9RqOlr?@J?JpXIlemT($7MJzI4h z9kv-;x0T$oG7V=pw{UQnefAdl%jXa7J$?2puyZ-|`eR~Z*z*TDEU-E=axOi>+1c5w z+FIQUc#;E`UKOF6*Q-6WqwQe1xio7Bu4_8t(=VM)-yR;Wnc{$>A8iq)A@sEzcB&OW zQ@`1ZrS~lN(xj>8{v@zDDqKl^!09M0J;RV@RvB1XyCY;IHNybD7@p{m=GCF$M?ykE z5llcI)c-b|gt5K79lRJFPkLZr&L=P}>T~c&-n&+Yvaeo|zAn`Hy86!A)|Lxw1?K0o zA%Ee2BCFwic*)W6i;tDex%Ahm1QB>ZWU0zYww(HuV*E%--%OJk-uCUmatz)OQ4 zd^j0RD}@`}`aTm+{~!)dp!uqK(f-Xu{;Q|U^GD5?c?AU#b?fZx?CneK;c#PfRvLUv zuv!v2F#VdFABoW5*G*1^wuh4w^sZ+RNIfUhCA;p7qHX;m8_XmPHo|p^#cs3Y!?O~5 z*TuM$z*Fa{Ws+T7T;vrMb@&rVFZ7rVpV8&RYEckT{FUsd1KiErcyW?2?I1NeebOTe}wr`wVuQ@(D!+{>Kv7thB zXLDY8d3n!M6v3pQA0{>8LI)S#kY8V)^6oSp7P_3ODt=9Et-6+$$g)>vO-+rQt!+_} zoyi1QZ_nFbpL@bTSB)IZS)~xyPGC-fGf>^+=`-z263w|D*l%*!qq%Nx zw@(uf&LkyYM$R*xZt3*ylKm@EI;x((UmWahb!is`YXHYe_UiZdm+I|J+%P!K%F2rJ z^m)^P!fi(+H45Z)y3^beh*M630BZ!tN{=0^>*Q|_=*@hHq1*{^8(`c8gZn?P=`?6` zOLZO3Io_sk-5?6tHDlCIiS%eQqxd}!<8pSHXE6eUav34+*I+r=d-v#~xoksM-bDlhw;Fr0o@}81WwBkXl zy-5Vy3CTrp;5RI~nC?-w2lp8bW=I+@cSKHBIhf>Nsi(JgTsNY=OcOCrslt9k z=4V_?z9y{e_ak>Py#xN<9!(l}k8_Ja@fY4myG>8>I=;CfShaU~5IhJK45hV(1`Q6O zzj2kVLa*_@IIJ=-*OLTsPvF<2wNPxFqsebu9tweiBf=uX#-cjRd!OKnJ+hiJrt5@W zC-Z+OD!EdN;3h}Ol3qfdUS8$xDz5lz69l2zZ<;}qj|#gn}2 zoB7YH!oGf|f#J{XFGq;TYwjJ%{p%mw4UclY+TQz4Qk-0VI}=s6 zUqC4-oAjZCq%6Q@_m7pxf;;MC!;g!cF?z7acl2Jw=6CA65X`)j^?T-UrrE$jC5PqJWF^;H{f`L= zc)GB)K1y`|M_>1SDyKPZPwlq0w-Z*MYiT_|eJ}HSdwSQE5pjyb;94I>v$9`bU*CG_ zQAb1EZd-{1LYn(JlsSmmIA44$$$+@^Z)O0#n7P-<(eX{?bmz&LbOT+?zXc2Sn!mxq z;H?BQ@=tBp@v4+;^^h{`z6Ac*Mil(R(Er|y)NO&4k}~!KGg#3U>NL}d7#uW<>cOU+ zh5{C0FTc-q!3__hGOCzM$kM{^sKCFsX#Ltzh0-Z@8nMzW6cO!)D6D^YCo?hAEIK)A zpBXua&-5KEmwq_!CFQFh{AX$d`F7ANOqu#$^GT2=B$5W0ti4qrr2%g$7A?2*=b(n0 z(GwW=+90Kr<7vz4wupzNYZ~G!*KJ_$L^e#5)^~fql4<{3HtXm#lM=Gutan*boX1~x zT0C@d#(TT`jWg$;%Ud*+E|uNTHi?Tlu~@{aaLYPknIN>VvDlVgKuAbx4uD4BXx+@M zQS3K{zI386u*lEmy|eO$4z6xu2lZ*;VESCeXrj_fW0&FXOu^IZN4px@*IMl)AH=t} zws5Px^N8|tppxm`zgTp7*QaEgkDq^da`J(OkPJ07b&2!lh*a&Yl(jw&g`9~=_Q-1) zJ3DR(IyC?Z2JQr$1yAqp#lyF^w{6&#(H2oVcU^;5r1FZ3qj#L5JBjm)i#5r_DR8L( z4uV>8s{sfEF%I$@X)%0fYb%tJn#vrQcd~DIix)ALj1vRi81zf3y);aGi2CR{8*a*T zM;1@g2zC=AqEmZ^Gtq^WO6n!-M0d?TYw=g!U^Q@jS&k#F zXuT;dgKA~L^hu;|Ub~9=oh1ZG9}rOEjb5c`f!8c|mUz_F{DGQXt&DyD2J*|iJ!5OV zt`gchPo+o5tn6q(1qADPY_9#>&+IPkG7zQt8{N^F;Dtp<`>s7ikq|6HJY$xmN1D7R zvj(Btj^OR}r`!NRF4)5(?Qa5@9%eT~Uu2;cyu-b{y-qOi<;PH4ICuD6TDX7n=f$(D zz#X#~`9T24-7arnV~fnD1sxq7O2aNUmnZ%C#WI-wkFpC3RiG}mhY#P++V11r@z;)w zjEp_WH}0LVv$iII7;qS8k?$#RdKbUjI2S<8-d)$T^73-a8g%Tk@^Ujy-HL)@a2O|q zB*^FFvbL0l-{Z|3O2vDPj{4B>4l3rwmHz_XnpV3!pbo%8iRgF=K2-EuD#bM z@Q#+>I+U-I*k{pB6tgwt%4sy0FyvFjV1%kpJhu5`qOiF|u>Sc;KXv>F?jQha{N%}-;DkKhk3OB$*lgr9R~a-*yhPIS5!Hu!{GP+{riV!Q%H)#Hnek@$i>B_Rn-wcSQeoCLe|DuVERuKoi(Jwsl(YPVtmsi zsYm*P)czUdH$MK_Y(3k(Jy60C%0!`(DG7O@2X?{#jXB>B3jS zQknbkO&aOb6BDNwl!(_LCFC78rf#gETClCuo!oU55EMj#dU|`aVZergkJU`-^tx#! z^N^q$1|&z>qV%_92S??cfq?-d`7R~-Cs}4-@agI4vB~7z25og7M@;QXuC5hZBui^K zR#%12B;F;So}Ntf6~D{}qd4|=cQFWU1M)aRMn*;gByLLyG5o+Jv1=AFaB~w(6zRVt zlQw8J=L~ZpX%Y_4Eq%~GFhJ%ug&jVI87wKMwTQ&V&eBpoM(S($VW@uMgZDB}U|?V}zxlvVms0Y_ z!Ldtf@+K*0#+B27AZtFXp57$`Q{XO}pRjq*f;47HmnJSH!YS2Uj?obV#M7S8GPlZ?Lm-Wec`y8o)KDjc0O0q0mzPhq^+=pN5|rlwg(l>RqpIqBW+`2XGf!<(L}%A zQ}EF10mD--#J|E{j-#tn;Y)l7(J2fDf8iPpkRIkoIGAq zZ+UfXtyk{+ex?OiW#8Rx_}bc-2E_uK0WL#XNEXx+EuO*3jvPL72AFGQvim}OtZH3-5X z<8XhzmdEzi$ESYLwKlMP9cAeE6%Sysg1n@7BpTj;5whzu%u-5_k}~xBH@Y@@ zVp5W=dOwnvgS8K57^m>0W}dT^m*nqF_Fy1qpYl~ zY13K3SocVM3WqtEzPzG>i4ZGfay7qO1P>3dmFiZ^k%EGP2N-c+`9VyeTAh()WeeaS z{&`~i?I9amSlY25DLv#jGc!XZZ4EeqvQ^$u?c%!acgL!U=Z+7ObAFtsSc?)4_r<2C z`#3DN1jepsdLMSz)$Y}7XL-Xek1dankNZZ68Vd{YXlZGW)&|nON^)}Ko_Rmy=RaC1 z(Ei2XWclvhV~|K6R+Wf;OiDt-vO635p;^8zL)`gq^y}i;|2MYv|FmCzng16%GHvI2 zdZS)mUM}q|$0lxv6!Hgu>RYtmN$a}&PUriLor8nsWPkhZHZhTJ4n=lhcAL`ax?Slq zv5GLbfP)APv5xc@fRFJrLxYy9&97FDygZFfBpJ3 zeyz0#_)kFK;*h=B5(U^czGUcAfd|VA20|Xc#lR?Uu8AK4+Bmed9xPW!!c*|~)R~AL zw8&x8{_y*i4`2C_kdmrc+-O7-K)_&tR|;xfwC^Be6bp-U=cUCDe!2El4EFZzT5=-m z3vKPGfN|ExuU{u3S3WxGd!ub<5*D~IIw}e-E-r<(wsuc6LV5k{ivH~CCR*)VM?>r4 z6Sl9yGeaZG0 z2tNFqNAs(Wp|Pids&vtcReD@swvRHuC4u2W%)+ItFQfhNkzC^RZWP<&8QaR2E_znD zwX?84yRPD?sj1~@?*EE!Ml&wJk%F1h^n4sOu|eN^DMtmY8yFq+7;&k^Fw?3-Aupg> z+h?ks+JQr>Ajklt!0asbt~mrxpsAs;^Kn{VT^;^LUOwz;w~SfFA-tS5sr5?D^} zj=wl=BgR6<)sE5j)#!|j)C5mgc)qo@^;lDL;wMwvG90T~wR{+xVYQia#k>eS7k~2w2+(GYXSwCt9V+X!U4b#6l(6QPY>&m;q^ji{%qwhwV`Bv`0 zN!L1$YCUrj2-l3<+;--G?TfqPU|>LZ4MS8-upi2RXWL6Yq>%W`|5jI*ngj2) z%gcbv%F60xhHPC%;+OTunz9l?6*Jso71BcARR6{D%Us{_eLyl27yK`z5Oh+V*u?8C zMGvwiUbj8Hm9@33($W_+lAaoyUO&MWIDiU?iHQx(&lmIQkpRwob2Y3I;UkqfV%$Y# z*b(kiR7>%z;mo-$dKPnhnTHOngjo8$(qYNtNv3duG5TAnOuNZ$#Y1bQGNW%aLL#NlL|j|~hm&d-;l9nNOmm_d97Pu*j3c6P?h&(FU{ia0)Y1_X2TM-rd( zu$!Bk*c%k(Yg2o6@S<=%Mz(i$0`_czz7B5#!yWAH9Tg+#*1;nXQzrSBF7%G_PT zi;u_%9`>Y&(+}tiNQN~^^9?>0`taU3B8B;IWipqjsU|T~oGX)$lKp`0U_<%{MFhF$d8y+ zRW4CC={p_%?}-W4wZ2cpn~|a}TO|LAj<~Z<3@bVNUVGJ;&_OqArbVdlgudH9(0RWd z3=Pt$)Fp$)4Wit8-+q{6)U2tH)^>P591iKnH^o!V_w2eVI$By;jgm=Mkmoft7)-nN z4oal<2Z0cfwGY1#vOkpHxri6a+~fp_s|sn#jAEz&dsV;Q7FuO zi-x3H&DqA6X<4NjHQ;T<_Czrbr1azouY#^n{Knkvr-sH*rN&7d+Y$}opmk+F$YC^ohA-3g+uS zUwTpe#q}2NsLyQNxk2scVoA_yv3XJR?^guk97q`e=;RH@{ac=+;vYcy|5wZVKNMX? z;?f}^70!Plag&^Nu_Z&h+xV^{k_oFJ%1mTkFi4U?;H{*jq;c8$sN}8kD%>3%0;nB0 za;ytxYJ_9`7R@!Rk?3b5;RXEaCMat1_4w`tr5oSMa}AAq3SLFbFkpi#if-PZ)_Gr0 z@T5PqAUYTWD^eQI8K0I^;F}rpDj5@G6w`?ELvhcD6?C=q!1NK{Z%W2G8Dic|3>xv#+f7at=&qpE^ z&xpyC1z#ZKp!)UxJ<4*$v@J0p2A078vH%aA-f3!Tl6gVhP>O}h05TO4?QhH#93o&q zv6-30E{5)Z;l9A{jT_QLl*IKdK|#St%W5`&vJwq44H>_Fe=^M@5Zubx)7yGwu=XXq zbD5ItXk$2Ap>B0FeQ=$h4OEAQvlZh@XS+irM;tOjJ2OM>cL2mwc^$p$>h*gp@ePkf zn{HzAZwtOSNxCF1{l_3_7zT4jQ4!bfRZ6FH!zagUl+XG3PazpYL;BLvQl@Cgex-|O^`h$>z7ayt zE<`^jx)Eibkdkt_1~RRBfaRp4^ff``vH&cVsEEjUr-?^D@0lOq0ztq>fdCT;sE<3) zxwq8$&234;Ofm?vC{V6yIx2L1TG`l6-f(~cHG%3E1c6Aa!`g}}qo$^2`e_TbPv-z+ zQfPh^Mm#0$ozL+*0Cj3c6!&rQdAAUN1sgPXzGe?qlk&TqCy?k8Za%nEz?+hiQfA=M z;0|X()Q=ZP!R!+RVC4FAbA;Sf2%e`D5Ek zLDmESHtoR|!07);Zyj{M4o-d2*$AejFGEuNP>+n>QTx@agy&NXQIYf0(>U8sV{nu9 z0r8#P-Lbn9HT`0P2-#h)Um$E&oT&u2F6x8o&eY^2R^xm$fb!9sf}H}GImN{U;C7%0 z7P~G}bq)yMFbU1}{WD3XNOm*_(i$DGPsf zc;WpAJ6+w8=LXhj`D<$7?5aPWRW0hOyh8vT2YT`HC9~Z*D2y_nUR3da`T+I=cVOtp zc+$U4KOCQ&^jF=`iNhteB~eQPgNxYh#~BU%8md_#@bnn=%US;3=zf=%o~s`JGRf5N z6IsP|8o~=Nb@kZsT~&ZqL6J?Jc+hMa#JYJNTrguic5`)Iq!;1j+`vc3VtqL|*QNFa zXAQXs*5u_q$Y1<%)FT~@z~hIX_Zqp&O7b9I&Dn=7MkDZ=m`;7juk_5LV`j)}Ogi^4 z(`DhnMCQ=5xGQ>Gm27SIl7kFUmLJH3JWz%~ELM-bOP2?o$BmWOy>Ug4pP4Tz%E|Fh z1mcj-Ig8Lhgcm!&sVSJ4FhgC8TJP5V2-USpsc*ZZq(`->Z^eRrdmbyE#k>T8;(Kl` z>pPteEx6aebRHHOrDx1U|B3p8^$RgFPz)>8$rv}<$5t+~{0%oYBIx0N!_)t~mgK)A z{!qR|i9>o3x$)7qLjBs;5oXm z6X)feAksC*2YD*#_IP2cGi!~@_V_Eb77yGX8d-_fN+|lRL+)V zxN^#%4$wyoq<#aeYW)4&?;kL_Na8Y5whL24|PNQmIq2TgfAmOYH@HD+0)$hzoAKZHM7uG$*NV zol2$Da#(eB5$7*Q zuhk&?f837{>B0nvizWFLG+$gu4PSDAM6*cmi7R$I6J`n}?0ArOC@;&-6PO$v7!7gNf zuNZ>rG}5!2uTb9HrjcClJ|{W{XH$j4dO9#Sc_)c%R|s6O_HPqn&t^SFNusgdBh(zu z=TdL{oADvlc5SVkfxrVhzs1QPd0hr}Ks0S`TB$ zk^9T#hv3Wy@*=(-WSbN>y}^vS&MYqDcvOX#h`o@~a{e7^Sb>KCFJ!du_Ulsi{qJh* z>`q1;J{dA5ofe&G?3)0Zk3n%Au@bX2|ypIya z;+sp7s~T-iM%?wYcOWU|QSSzcE+st$RpQt8fS{x&Ctu!kT0hutZ`b<#eU_It@;g** zzu1xr6g*9Nk_+3mV;ER?n)>>jkj2BMIHG9a6D`D^D50PRgcFWo zC`pVPH@*G!1*j=3uYnY+!7_cn#n>O|I5);4w}t9T+Jm{^_Zy!9J(4b6b~_cPV%B$S zq?ZUJYKYjv7}dDF;b3mhQ2zEf3ZVXOp|#pKDz8Bb3o1GWWAO`!n|Z`6HUDP1QaJEe zq0_p$aE&zHT<+v=A_h9x36d~BjUMPR_A zvRHmy_a-H)q+kd0VHl2Iz1P{TnWv{1Rc{Z>zOIa99}SE;tfRD)9?(H1`*Zca-}xGV zfa^~Kuo>*_hUb*iJvH;Ik%S68u@BTU5UJ$2qKh}67W-4mb?%m5)@9kSgPTn$Jj_rd z<{Qf`yWk-9_SsLQxoB-&1;s?OndoYp=rks=f-)^LOpRbzj`P4XvZh8Xn_hTL|H@nH z7%lI|4}J}`pvsQQ6s2p2ew0vQ^k)+^F@QrC_K}+ZN#jh)AhS{{qrA=ciFiFA<{bzY z#6W{5T?MzQLB*zG?9TO1-bVfZuPA_Pt)t zNehUlOa*4iMmYQGwI>@u zyJ_uC%%W~>;(K5C7ID@c|0k@to8({DITHRCC?JZQ_*jcWh79B&Z~f1eqyHt*-spem zSSkIJIWnt7E~$a_Qu<+Y-R&(}{FQlGQpufMzf0k)fKp03Pno+H{j8Niap1qavR$mh& zbFc4cxx3)4938GNOQ38WaRdt6i4abmf$T>QyfJua+(Sh%hMPK+-KN=h8s6e=uJQb9F4p)<4VQqJ>aOcRe$PJ@Uk zVDh_Ikzf$`Wgwxrw!1R0gbqg6qQE-r`P71dpnL4Vfd>veHXR1?n&S#WZOW*6cf^Px z0sG^=V*0!LhL=_pQT0IbSkN?V0DT?6xFf#cSS?p$8OF^unJuwGPQLS~2B}kJ;hFsM zbs`uG0>B5ma+>z6r*V3BuG)F?#VVY&RBE{3sujF~SFc|6n7n@V>QTpN$>5X1GE-Kb z1n)ZwQUUA6ee?qDwP$E&wCFps+b>b{Uee5qw$#Y`e-rs3a@(JV{!>Oa;v&q1FfwOn zMzqdQFM=CJ`?yRRGkZa_&Udp|-F1&<;a2!-2?6yTiN}8frRKE+U9^Zbg&!cPgCF?Q zik!ijMPBL^m|cA>by~OoRz~+r)y_ho=NDr8AZ;)FcckNkFt!7hiIM(y(I;&|kJG#`M z;4hgtjbf+wlU0JA6;Zr!lX=E=b@j~EJL}WV>xPZztKJ{G3IA4EsjRMf`%y&gQkD>< z%9p=@WEkhYXRDv=vZ)NP9U$V2DOtT|3N~-+tCAymUa<8Gv@aOEIlc4QZR0*PA<(cM zM~bKeR!3I{uV+8Jk6sFmocM46F_95x!^%7&>(R@fSj=N1%QL8Y>v&KcDN+#If#LP$ zhN;Ktq%qj|tZ`BAX5aGWI*B)Y7D1LUm~lkCxH2#OaKTwj9uyx!wg=Nh{XrqiY`-4V z5=yM6N{J>iMI3;dN=Dne`sR?!nl75vk&bG=BHH6_4G?8Fzu{qfo^6SJ7Rwx>Ulaz8 zu>Qyo5)@ckRmkZ9eyiJh=RR|TLkCHTo4A#LN{RB3{*bCQl-ObIRW}o&Vacl!+t*RF zcYgSKu%tbTBgAEBCQ`al1sga1L_z<;&( z{|}f?+pLO;*Vgk5`cTv9?zFs(O`(#j>dRMuMTb=3NF-W051XdgtbRu=WK9Ug#Kyh{ z6>TQ^!=ts&^4HP$RxfH-6I}3x!&E)cCi9`UQgiM zPWfcN=1OjHs8;CwPi@eR+8!}PSaqilwmeJeb-fD1YWU_#zY#_}_@~?o`2<3Ca~#mZ zn5LoN%09^GhNVcX_$F)J>`dvQMV~Cb3_-GR0;UnO-b7AgP?C0-=+Bg<*R8N75_jEs z?y4#VyB2x(?j4u{2_w++5mKmINj1Kn>3dt9Kh(N2S<>o$*v%>r6y6!IOG`8esim(P zriz z`(Q7PxTs>?yuT%|;RocW#(nn4Wk=m9?rK#dcSI{gx=LlbA?hS`%d0gqv(J9AMY>uI zy(nM9Dkh3bYUb4daVNlP}s&Tf=(R{3kg37=)2Uw%~$2y=wb#cNTY+q{ePvR_@Z9oo6 zo-8@E&^AR^cBQ&Ry`A2(glOO9%=-KQ&r%j1tvjABG40=YP#!{Go%H7RPbvm!zKjm3JfAYMrZ_~|;pi9ok$S}H+ zC8bpCyuHs<3JRcpt&2^)+>IPaF-n16^<9vcfe$E{ot(&fY6F{Z2Nus9jkG2oAD%Oy*om**O)jcp^2Vt}IrPu#_Af>kPKB^*&iylA+{^ zY5%u6CtRHT6}HSiED3fyRKGM8pLB2?=iMf?RdqLW=lr$XtV@!T!u6!j- zb~dvkIos6Hm*uB*5%ke}8PKO^Kwt@-v=-kJ#kD%!v9Io>BV>B9yP9MemF5*q-{^30 zb~D0Za+v^eKmZ>^Tn~!CuFtFPzhPw}hmfsE(8)Ac_p<%@ zff1BE`` zt83WS);kl#?G5OD(XqU~xjG9+o_lq+ucp*2_|>-cYFiV3(YJm$0CA!~ymh;3y`so< z1(wT4&==Cyk+iK5=Okt96nC*>yu%IR-o->rF#C zw&>l+PQdUm&HK?>U7hY4gZ$ompPi(*#PH=yVxaD;fpZ(qi=DOpIr<{j;DVKMFFfkc zADz{9Oi0UQ7qBK;QgBC_{^V5E@o65^*4i6k;952CFp_5^8NM#E<}Y{FHO#Qqc*!tL z)3DN~*UNMhR*~sDcXc0hXVpUSyf^jNbu3Jh1fkYJ#LLR*381 z9n?LlK>#trMjyWeDL6(kST&(>#c9q3Z$aUrj@wG0?M>RZyVJbr+Pg?mz%Iz>5)= z#TJ&9l-s>?cRk2C-mHjHue)=1xYvunrP%3}qlZ8=)Hh#3RA43Fx5YR>y{Lu)xD zpuywlE#rPCVkw-P3OcCY_fZ3+vPCM^L)JIj8Rs^UoSS`%9ffYe_ujy;TN>i*`sfv8Df7T(b zV0s?_QJ@yza5gXB0;C|vj+%tgc#^ZKPr`I zR++W3x_-((Cy>5AAcHbdwQ!p%?B*M2WqTh(QkeGZ4L(<{d13VNiWVE+@gV26$au5@ zkGuiKsZPVSH=K{-cu_7!C+NucT{Yz@5DjT}W-eI8%PZ>d1K!~z((AII{2YSF=mEz* z0tOWc7GP*6omXFoPmw3qKvKi;*OV{r`#tAi$xIuCBDf&Vz$S1<7zgWToiLO_aI{j^ z93M_~UQ=AtIUqVDh$3o02Uak-Zl$fDl+P|a2iGSJS9IvN(ANe`(D?e6Yic2~o}e*G z_ql4&`N-aEZTmNs)HtzY`HsZud(4_m~2$nM*eGE+2R1Ak!ylbK5vmr+Joowu=<%-;!c(WCU5Z}1TZ`_66mvo-^f zsg}w+pahTYsIc}1{YRAJ)r4U8A3H1rXp)|6;v|p9LodIJXjDIVccvL9#X6 zB;Mzy^95C%J7q z8UgS(7PtyMukce`I>e_!&|C`o@H%HZvkOzX;3g(O7{GFKlbDde;%rk3xLvL!cH6Y! zah0U=k`m|kRE}yIaaU#J4`>7wVH*d1mVtV?%(o>bopPX>xzbsqXLda);oMe3T60Lb zo5ngQJ1W}nduWJfa{vK~)H;q&o;?evHqTiVcIw4Y0-$TM#^pzBY%GzRkAlJ-q<6`y zq0$GHNj^TlpT_NBc^$dldI0)^-Ot%XbpZZ$k)C(IK}H3Dgr8C`NZcCnpPajaep-+r zl8})xowlVWB#>(7ZpkuC!IxKwu+Tqt)@pMBjjdS4EJ)5%`|kiXOHWTvo=8GMLaa+Z zRZDjiJvYIHo>^V$DiAGI+)S33826_LYJtXJd>Ro*I{-Ya7BYT=(B76JX!SXtkz=`7 z`_~=STw+d6&RF`~(SNE{6^Tf=69+!r6DlgQ8SL)n1zGCMksSk}jH+rBZ~F2x&=#nm zt2><|il{6v|B{vUxVHkWH9Qgy)B~Jk3_!<=CVPRqGxZQMx%0()#K?D$B zBM%lg-qys~tiu~)JC%X7c^D6RFT+sUcljXchXqzN$-L*Pq1m;&N0$~~M$wPwhg+%T zgr#fQ@21WC#YwPHC}6AlTuBJqn)W1KWJk9@Cc)A|v%fl?FW?41JvxCNae8{%<=T7B zm)ROj!2a;Dft5b@c!9QmMTOAEk00g2V&>-Nl;A)M_yHVY!84lbvbC~8gJxVNdMlsf z{hJm*KlXzOnD(meBGAZw7g7FNklYwZ1rtX%fVeWf0Odj9c z>nemTNTEdR7i4}n(!0GTGapC`6@W$4OGl-oP$APuic)oJAAlp_O3dedpZNdrX=-VO#KqlBU_^mfSXh3N(Tz)JhgEK{(ow9QiD{uJh84eKdA#wVHXuLPSj~e&R#})PAh4*_e49Tt3f;k=+>|el- z17^yg5+Q4le1qzKkbdB7g-xox2+addP8D}q(2dQpbz-_KG?y(n53D)Bm#|v`q+a)t zGYQ&~6;Fese$2;3tlNtKl^}tYYG?!Mz_M>EuuxG^Q3ZgNbKrK8-8#h$z3iXC@&zTF zf41?XBllfvmv6-@rwi}F3P2eRDS%r=v%6|bVqes8Jo+>sw@Rx|TttDfXI?RuZ-1V4G`uOq9-c0p_hYy>Djx^7= zG3TQMf{1S_jUuI~Ucn11J~g(CbJvqS6e*~GEZoaYq@$yA@MvIuu^3h&G=h`O%thF6 zDfQ>V(1kz-$So;$uZykd+LT{Ee@=KYtK+Se6y2_ZL%4lF4FR$Bzhz^{^Z70kg1LGRlTNV(eAd|6ig(B~nQnT=l?d|Z(v(OMbmSxGC<58rKKpxrw62$i) zJ$ty1Jq>a-#$`NQ+|S^v<7sz&Fw!~^L7&{O-&30y*ae2c^TyBNMdv^ zL2>=ngC`x4Nu$nW*nv!~g$lZfecs<*&VV*zYI@kY(TqaT4pGTFOUq^uWJADF))hM* zAy^%1>mTv>jq?(PEz2Q?6Wu>=Z?S6|`LB)riwt5+Yo;!I`BwPTmrsw687OcSI6)&8 zpgJihwj*`?w2FC(4eI{@;vZ^>99r&-W@cx{>5Qh27LWqMtDM-x5F?Sprxo5aAVUIw z^CA#*WQ73sG)>e=0sKt?6X5Q_pUS|gb=~DFKu8U1`WI?`(gc>ISM7)a{%}DDP>q?= zZ!j#=N_kTN{v>qEMQJ6${a-Q}U2W=<@p!|X(C4p~4I6BC>VhZD*g9J~8eFa2s#KX> zuC^%%tZlBhZ2feD=_4yRK3ynRR`n)v3oi+7tj>h%UQ~ug&|hU#N@)@qI*O%({^bf@ z(4L-0(f#1EkT;3j(6+1285fNjy!Su-1Be=ytLsc$Akd3F9RO;!s&E2GiQ2|&$3A7> zdtJQ4BwF%5SPyS#-Czq%C_rgr1lmg!>JY*Phfiy04A3B;m5k=#W@qQWbLUPQ=DVGHDg__5RZhpvh8U<=j)#W^&q9?_?m%D*%ZAa6B3WRDM9eU-%6Z9ZPs^ zWgi)fz>tEhy?Yi#t;P$Q0j$dkn!RWIKxrqzdE5T;q$o6QBpsT8Wy4b0dwD)q3?oIp zm(%_EVsG3fko2^JZ$uQsPJTEzJu&6jmfHsq#(}-l@U~VCw>71p)39T@-m6mS6rLoS zM+Fo7wAp}4BHp1jN5-eUH0$YjKhl4E_K46c=?5?X=1+l|pmD^>$>}$I!hyBu6Pqi= zAJAD64{HFha>6^N+ixB5-S?J$l$@wT=oE<|+Jvx)Kj~Swin(SvShx1p%v~lw;BLG= z{OMooi-4)?>)QbAhRkSJS?^gDxZ{E5;i#nYSYJSt>5AQs`w9=A`ImQSw|L|JW$|UPglMZZ-XBq z*s%5FpeeG}hsDWjRRZ@S`|7Fpj$W|opwDwjxa7F}P%7ek2npiinhxS( zUI|)bZ7-fBQex&+&}Sl?aSqI|@#}|Dz{>*I#c?PxEYC~Gg}$;sj>iSnQl@6o{q- zxIp2$z~JhGy}&kdQcv>K`yWy#sDX8yo>*_Ox?J&7Fx-OlC{R1%3dD*_UWNP(o(Fkp zq7GRJDJiU=Os`lGO=NSx=%P)v#|Fy`2X-#BV$O<|mX^1RC~-dw>GRNeIij~r>i`ty zqW@hmEKE%yu(|=x`w$5dqyUSrGsr0c@Ja*%DdOAD%e|IzTC;(7>ZyC?3nc#uhwa0@Sp68vSw-g`}ko%AVx+Bo1bOUZne0Fvm z*!O`~k)@rm;d0fg?ktFviDbedt!NL$hH+ zg$@n$f6o>8ecGf{)xM)BQ!|vxVFzxZr5=o*UM8;{>=bNa#0XIqejl0}4)|3^hLrJf zprcbtu13y{8PrSAd<=~z!U?*At|)s~YnBn0eSq?*6<*Fdb}1UqS9p8tKAN)G5S60R zx%fatY%sf=R;!m23jPv_BX&>)2R3>IQH78i+ehQye*Q35&Cm6})v!kkt(GqgbxU_k zA0YfUGru6}w#3$i^jZnaSd0Bvag8ov?MVidP%UQ*Mh*-kjD}Zg>K+8ZyU856;HNKN zMs{^6-xAiXg_uC}0bHKWLG?d`wGH(6_LL306C|>&lu2$ZYUWbj$3&&@*jGQ}86P?= zDn2J2vY)9hzbE0o?mi0&NLBze37ravrR0}CvuyO(n|=I5!`}Nn+~;I76aX_yD}sC= zzi31N1dgMz#HxM`cJEZdSpcu`yCKXYZ>uXEPR`c>4 zz=U&hastd(Am&5MffIu;+EUlhDbzOLcxcV8RYOlpi&$~)WOct`7pUKt%5w?}aiB7f zJ!8nc2*vOgP_rLHViD5aErl!pK|;Voh|6$p>!boiJv@>i(XuS8tR^#1S`>ho(lzX30BZ`0an zqbriX4_!A?Xd!A;R=Q&fqfunf`HIzC-1*cJp&oRH9l0MY##|XWH53HH!o+DpJ~S3` zGEe}9ucNL%=iiX!*=q``C-=~MtU=I=`JG2$4r(>!E3+xB!-Sq{X@M8j)sxNuSC~qt z=*3r*4-cJ~VnJ?Z(H+|}4R1Qtrv-I>Z`MU1@Gk~dOh5|r12{NAAybNPViXzFNS5sU zhm|N6fFwoE*;&9=BxC!M&~lE?`IKF`^ld# z&XfX}fpwa)QF~#ge`?|vv9Kp}k6Lw`%p}w3zO~l&2EHwDyjCm9ly!cPe}26B;Hg7# zgHrbIGpk=%rYNRZ=3_oHkneeL7GglT)oet=q`zD5ZWIPIk2S<#C^L##4xK*~67}cR z)7I#cg0&qW&)89==O+(U5}XE2AfXNBf%I0>pdTmc{a9(5hzBeRU+J%Qac6`w8a4G6 z1>8oK3?17r&Vl}h&$JcF|NOZPOc)|;2x`9El`!<)_zW!H$iD!n9R>n1EKm&~jK;yf zkF>)dBnj-dN&>2|gFmmc%K<1s2iDAePs#QZQc_Z4diuD^N+I9VKdi|3<%wyJ$oj!L0Ba%O8-_lmX;$Ueqh~W zDu7*L${c3~BPuQ~yl-W5+u)6|p&>1_ZY8_8w6r3D^d?D%X$761>tAG|fO**LMHi;P zcJ2A2Gx=7pXU?JI*L06ZH`38hn0}5}*4f$1MYt<=(fk16@Wh>gvoE%`7V>R&ey)p^ zlY~US5yRl?M#V%k)y}l}M2d}x0z>1wittCg8%R-+Iv#6umm$i)JEw+P07f^9X~k(8 zi9!7>FxThDTal&GD{?2Q4z1HEB-1>aq;%_BlwRXY6U)a&F*zpNSo~+ZEqvpcsC1$z<$v8rKhKxrzd5Z9)F$o9d=fPOage>etiFY4^ucTS-zmXc(jbesVjv zis&CrO_kmUnFJ8VV1fE}AfrOq&*>J#CMVdqn2R6eQMfnU0}*{tzg0&hDVu4Pe(2^$ zz`L;eP6bF)AcH%^MhE-rXbwogZi}*qI+xno+PB>cQb!cl5h{(Hop^w8qAgES@AcZf&f{H8qQ+QUTy!mJ1q-Uw0x%^KjWPP(`gnZEFg}S5g)&qZ z(%-#dlaJcNEbKwEstBsn45<5C|D56d-}4mWuF?(DFGH!C`saXMonl4u-pB zPyB$xWrkjU%Ss&^88;m=6h$Nlu@k`^!W72wI~M}z$J$TEVlr`59ox~dg7{kFFc%OL z*C>1)1ZcL_L4uVe;iek*o}~S5Z{PH6ZMgv6 zMNBjO?JhTZQV)yWOntIbQ+_^+7rhDeB{x@Y{dLYC!!m$^M)cHJALY{RcH$2&bcCbG zrY^khr;f>P@y6iOQuqy~Q9cL>F(D}(sc?&=?4V&Qg`9FN5&El#B~{6YM@wy5_FKg_ zgIxjZFW+I$T-2<8>Bf1%fZ9(M@z%@dD{8JT2Fs9PAkNPnqHnF}dHN^^7rqZY>!iuz zqj{y7Y&Kt_)RD^K$+OB{R80iLUl17~mk^CZGdU3*pM#sz=h_HlBqK29(dL!5qCbuQ zy(3{xL>(~>mV@C8Qlu|6l{UpE+ZC?cc|nTI9J7`GF_Q8pA`B-X#;Oc5joAna(9O=3 zp|yBSvEOs<&8S8~BVegI*%)_+rxpSg8nk-XjUa_^0{#S6*+dq1uxaGx=cD@}j!}s8 zuK|yXQBY93)<549lYkZ*I+P@80{e%Gw|9N%TCosCFB#mklbIi+LwLiPd%5ESzkaA!5a4Ks8iSGWQ8oI`K=sc7N>bAg48?Nei;VNJQm<|_{xYU=#+b5G25 z2ibEA1qFpkEY0QLt(&;$DsbG8XW4bVX4_K~fk~H)odsKYGB;JEkL!NF0N9d{l>)2a zWW5ml$LB#>qQU}v!=t8zg==`Mmb$Vzin&?XJ=RIn_cfwSkZAf4BojN&L;QO!#J>gH z9*4Fa=jktZeVI=Ny)y1IV~*|PPGAKrq($nbwF#fyeT=(h;}*j-Pdd;+e?pB#Da9&T z7s{cV>22d*?RxolMw}bE_n~I>b@)k@xH7j{j2Z|s-cwvX&Fgj~DkX$W{4ZWjHmmY) zPz_$>s1rS^y@()B_{RA0^9W|hAgoM}3;d{RYNiySc=xwOgk-rqHRPd4OiBWK%~wt$ z+NK9Y3rF%UH{&?#GSW7!SC3DCkiMM9uLbo;NR9w7ltfb7p*x7^Oq-^?o6rBk{ z4f!Wxxu0L}U|+A<$y*~tp%~ID1<$vB(&*~E*D^~lu1IRa?R*Ge7)0qoJo@z3Z_xbb zE>qJ+&0_SKy-QV8z%r>XHDU40J!yi&aLM+XVkZVM9zJg_%;&e$LrPu0%t6^N===X~D3nf+zzmfj+saifIP7uQY zxinS?JmhnJSs774tr){jr=!T!M-hfKl3o)=8Tyk!kMq4m#ii7tK@7j3huI45c~g! zF8@XFLWRP_mw#!H5STf>p%|#Ur#>(zg$Lp8R#pFg<1jaqS+^za@0d3yX>@ zp!oRsp+^Nxeliq(RXY0m)VHolQ%I4FcQ2klhrspJQ@G5aeNaEB{O^ap63ICD$sDIx zg*5TrxW9UKi4q}mW?ciTJQ>s1KZX@>GTi>(-=}wO_tdTLIPn0*S7us9D_+H|{nCui`arL;5_Xp|Vax$#9ZxF2_0eeb#SbiQ#JiMy);3U<`)1w|hK~kSl0}buv@hq=1Z3{l7d>@^ zzeqeg*y-=K_F}8&_M>V;5HCG#x8V2_7IYzIUPN?shf)Ae&}7X_UNR`PwntZeZH5)2 z5T0k-ff;kn_vr=Fp|%c>%A%X8%ugbW$K~xTGT~UpNEow`gz=dP6_&%%&KbHXt@!hC zv>bIZ`O;=+-i~AvRP9X!!w86mkiA=3(>q}^_Nj2ef77-@>d_Qwl}i8ohwrcc!jY02 zm{8Wf&hzICjEr)Nm*?*OF)1EP%o{SNlNN_JAk)Vki@O`17!`#J>WGw38StUVy_WGg zwZ(+KTlLEulw14lN^YQnYXEbzTXrMKTzAcpMP(yt$@tzJFFqPCea!FQ%45S^dyLw-brck z+;*3U)$qr?ik4#mH@Ks`=SisFp9d{5RbO5lnpAKfHYeI~N7jaUEKQHDO`~tsL^eEl zOn7?tXO}F?2i=+O#1JoP~hkh=feuB^cHQVQjL+`Z@ud>Z-4 zvVfbod_pMiq{Dg~H6XVylYP1jr7KsVjZ=`IAH!g2-iaNLN>tWtCy#h@xdp6q(6Yp? zuL)qvPM$n1YB<>0;G|dDs0l?N9BQWB8g4i_`SRdM&=l;;P?_g}IS~J59QecZx6t)-+~4+1*Ph(1pF=+}eR> zJ4rd<^}YRllW+_>FUPbQx9?grAT;ft>eu`3{+;i-8jM^sZ%G`AcNL4du?pyG=17@3 zbIB}2e!9W6wcf!`Ge};^dSX~sb?M07$Q!f@z#RkxWu+S?^Z*dP-bP9ren;Z>WM6YM zInc$3&=ADHRA+U78D#foVT?2V`&Z{?>WA50!tMM2r9Mfg>XzFOR8zx4q~@w?u#J z!5$ke7195E4m=Ga>@AUGmd}ZvUimF}*`CVS)@I0!xaTurL&mpH7Wl z?SKUp|J;fqo1i8CjeK+srce8EAK+Af&Cj*I zC6Zy}<`(XgS}&$z&9ExEu>8?D*KU(Kjb*;C)uqVHO?BxxMZrO@qlBwvQrp^vAo%aEBe=F$J{(owjGNa&R;Tbo}znS?`7X-M}v8e;(q2 zK+;xFxkPRD@W+3-0PJbm%qzcmO&=X4jK5}yWu%Zgb-M~|YOzj$#!wQ9y*)LY^s7~9zDjY>u^ zkOg=V_Wtv+Zr2`wq{qVi+aR}K;zUM5!e9!}Y0%n9?cEN!A6)2ea;^n{csB2txyi%I ziggrBxWh~@JX)akpPn+?{8o9;T@#stTHVpq1~1TaoHKszOTRiq!ZIgzm*_ZS~Mje zl3N^cPsXoxO#0sGYA_*tEA5HbJE2oVCiR<9R|f0~zcD`gJkfw*<#&HutMqO7`X-Zy zzvTw|ji0hPGLvgNJBe(^ap2Cf2#kyTl3t>tevax;cEC3#>xvje3o3&e84x5TYA4@* zx7_f~uw2Uv$t0Qf_)CwF&QDl}VskBMghEeL zCrArMIM}Y6$OZ>>J(a#T5Ga(@hIQn2$9(z;GTt7tIN-{zl8MKSD}Aggh0aCYk(2kC ze#a%t_fo^t6JZ1e++6?WyEx5o9n(#Zy}5=baxxB^x7&T%pTACW9cefQ1GCody}kEa zgwb7ui!jtTOHcUyPt4rSX-$3C&`vTwJJ&T^eNzR>+-PG_k-Nb@&cVlAZA?WkEF$c8 zPsqhk%9xo-Jo7*j75mPZ(!F5ra+VUxI-A9J}k%Kx@MOp^XK++gK+epssZD9CC3sqN3B$oKEQ?hU;(Y5L*N)}-?WgkEMl zxwm)3aQqumiB|!ylBH!+rD=Hjywc-3PMK!i?;1rQsXc7pCVmC$E3BCLa9N#Bz|=hP`af4LP01{3b{X6;?yGgke*gxIT$tt7TqEEEpIuMi52@?*>$s?IYg6x?pGL6{MGXG2!N68 zJMMky!wiWiLtElM+}?j-rgq_b|NQxLQ$RK%;z!E&FZU!ReE2{$=5lkmmA$_*A%g;q z7ta(IRf9z-tBH&+!)BTCSkLd9l=Pf8lvyTdYO zdwHuyc7GH)hS7;9G@PbkFGc9V?*MjxbgM?nw@HFjL2f!OvJbDKRix;2(S56^ZVcb8 zyRCB)*vd_Xq6MZ|daA7TnS}VkYLxT2piW652H#zUqaOytEp5Z&m%6mrCDKXm3$nE2 zR8T<2AN9cBzn}WNHhvf6Q&K?oiJY=PqhmeuBA@}6j7-`x=b~@Ut_?gt->Q65LSoJh ztSeHSomanCAKyWbMPf1`dlBnB^eFeIpFaC7EQFAdn? z_Wl&oGd=I-yXX5Bg%bZ^ilX^z_>Bcuc=M*!E`;!shv(+_#XQYL>`6OpJD}#GHz91J3;GS@Ek@t-ja&Zg4@Gp7X z$eSkieFbUq>hnLJp0GH?dEmfH&R`khDVb-E)3A$T7U?mt`4AHd)xM&vZq)fHyzY98 zg588!9i>q4qoqkNh42ywxVznh7<`8L&B{HSjNL&3-dEQJh(pVM3SoFCM7=WZd$Zgu z#HZd(#U?HO?7X~K(2wr!4)gL>P}f*-M!6*bm4gyuZlotDw=`^5^g$3f1Ln|ODiL=7 zkszQ0V?gIOmwTZZc|aOo4)FY2evn?7X<)uT_p^*G30eZzz1e&AH8h}Z08j%^XQ@1B5`(NwSkIY?8RzZr!FUMek8{E(oS48{+?y?EjN_2JU;NhzZM_fuV6a zc;0{#LUJ`JC-Qg08z^*jZ!>Y|P=vt3SUehSS)HzvnwbO!Ma zbkL9vmwtA`tIg-*D;K%1=yu$}r;Sjb_UJs1++P5VeA?a}|U@!45drhXJ46j)j03`|d0$A6HRShn8y* z!4HpzrX$$jsQ{%7t46wOS3N)=w>=3APH#Lfs-|MBL9Zo;11JOVdgr4!OXE$B{J`7+ zhoFQU>Ty3n8y?r~7C7yQ8H!%r46k^=T#snCcxv;Yh=InQXG93o*elKKPekanO0I7U z7R3ymfLZU4v!Sah zizKL_X?c5dC~?t#XIa?4&fWvGEs`o3A*%fRe2v z`{b)sTQr`!x)rzY7w1<;gZxcpHLI-iU>-p-{@9kr+@m3i-~2Q%Kxp=SFpld>kPjZ77qUyaMk?bM_0SqaA{Tb$>aEoOJQP6Kt{& zq*HYA*dkI@UOq_3b@j`TQEKAH+~_MFi=)|?6ttNpc@u&Ux;EZyUyb}~Fv^bB%#V{} z`fE%(h3D9f&)yC@#1_mOm%K3O&KWm!>NkVJSJEnD%z7~#9!2Y{m52JNEPSi~aQ*B|=0AD}y@CBxsr3iMeE~-5 zt)h!m^U2T(?z|q*-PW<{TWJ8ueI#}yV|i8oK-UC?opfO%v?xPq5PL#Y8V0YbNe6OsqH*dhDP^bI(^K%gCk+qsxzP9l>a8Pf_W4fwi_Zx_^Az%gxssA3? zWVe8zf`<&?cRkfwKw}W$z<*(cI!`*N{^*f@C%UE0H?hkw-#5c-Uba%?3{tr}M+PSK z5PRrq4=nAbhVfeU1*CFO?~Nr^Po$x{53SxKK^T zYSwt~Z?M;7v8X7*A}{IPIwoH^riJ7eGA^n#*Z7Mu| z9P=DdTDH)vU*Kz{6UrLiXA%~Eam$}~Mioa30BCDiRivubVAeZ8c)2|Q4!Ek@a`Kn~ zWBR;k4E90{0n$L92RBg{mjU0lpCwe7ApoQEcC`cU<6Pu->OJ;ie?Rj(W(MW$ke(Cz z2+eCtZOghaN_p%_E4&<6))895!lhSs2`A+ z)XsB5d}4+J<9V9ho#QLDvt|5^S6+&f!IwP^0|U1uH&%+0ygEjv5gkG(*4-^*y?-QgDg zT&KNYl4tX3j5X&4Q}IL1um1UBl)XJ0sBmP-tO5VB4cLD`F<410JmEU1VI}hg86ol7 zV3HRIssQQ}3_wu8Zs01qo$_h2U$pV>H7*J^)P|x!x*)e*VcSmiIaJEr{!6#10LiQxVvvB-5Bo+~Dbc}Y z_YZX;*{|q#)3b+P==!bD5&`bk501jwT8u*mr5FYX+gW9b z))X_t_a8ky!Znqz3gd<=DUyC+1|3D15nb+iu*gU1EZx2qxZVb)%E9*cL3iIAhUSNu zdhcXmSY_Qf`P-NCjiQVPBBro+o@f;Z*hD@vcPphxi(E2?35jpKro^EHw#;bCpw15| zFcJWqP$JUH$L0WZ@?|Ca?)`gOuA)EOO{Ug>+;H&T^Nt~3PTfbtLdFTKnMD?()OCl$lG|@V zC*T&GD?O@yHxOCtO{otsfyiv1Nj{;r?F=)*4_Vlx1I+lzBZ;6pP^~{)9vqK6u>e-T z;81{A)jvA>E1nmh=)Q9D0ZLKg;93U|zMIudmxD^e0zVfJ$Ajqh_FgO;T?`Ek5sf1Y zwC{@>_}4p&yAygs4Oo%^tr1v6g5LGkJv#f0>sMNYqb+g*7F~Ef_B9=AM+?F9ZgPPu-V9oCPa&<>|Ysi4yMJ*`oImS- zcUjZKi#oh`khC*&G~U;C=hG)K1}#}JdWF6V3Sv;zu|4pz&j4SC&6Y|Z)I^cw;nuYx zCJCHkVlPX(A~HQ^>A>Jra&xQVK>&aJaoHG7ibw(+lMP%be@dUP)6#mFo$V80Ve$Kuy6T@7^gB(rK~Gnm3-f9CI3ArOr9`$T zYG6TjZ0%z5x(MazW!!Y_je|{-hDG~oF1v;GIJw_--0@9E%0!q^Txf?bnvDWT;-UC{ zz;((jT@CI?oqHjzoUy!YIfM7q*|~y8{Ovg*VRiC)v~f_%R!xlwSfSVJ(90?a&z&1z zcf7nN5vRAm|JzlO={FyJLZpKV|9VMD?1Jye8mnyNI=!h4FJ@Dfm~U;;dOp%{WUa$D z#$}CZNb;_N>mm&YW+}X;S^!fP=@M7%pKm7Z&C+bwnNw3O9(JVG(!?n3eMK}^moqn> z?Gu6irmV`;{UBUE53gCNp1bV2|3Yg)c=2G>*E05hkDM>zCdk_VX_=JK5P;I!_3mikKP|gk+~w_&ZfCAZ z;!`}&TDTQAUHq>XH8G(*De?2nb=WLV-k@J^ddk+`7O8%zu$>)6;T$>BiI_(zo)Ho$ zcJjCO=E$AcZ?~rDgiJ7_S;;sK?$lQ{Rxv*C#Njo*2-`3I!dgVHs03N?Z7Qyh1+*b4 zMqVq)5s{H7kS|D951Rq?2n}j9=Dj(}Mq;b|0?B0`VBJK3GbbTgV8ILsXyDKj$IVd= zNLELO+q0v}S{hqdAilq~=XF!9tb!IXE`0#L{jkLn(;^#pmlmJ zukx6(YMVf^e0od{6CLO5TIu}3jHJ-eXr)OS$Dw!AHqd;9*Ij&XvFIl7nu}*tfB+;x z4=gs6L2R?i4-)usxQWc|Nf;2IC7PA%ffGxBzZV1n7hqrr11Iv+{BM#jJD>z%kHv&c zY$adH06sIc4`go4ARbbs)gF(rC~q<-J;Il%GDQCS56|h6)vr=-li;!9w6TWeNQ~Z1 zx%-LFZ{Q=R%gb%0+@q6}8bjm>pY)^mR$Q!7uGbC^mnp2GSmE5}6H?Omt}Pt8EY7Lb zDL%Je;tc8i31M^Ch^vhzeJb;rh|^dsbb`_AeIB)<(#Ys8|v49 zCO`%Sc%TqeG!_LYyE%Y9Z8mLgZVoz1bj~;Fm8E44II36m@ndudFxpW6$!UKALkKF- zd%X`eKZ=Kf19JfPR{UZcyCg}rbni9Z&8p=Hm)ci+%miybpnXzLEMswfWzW;c_rWxk zWfDJkIC|HVNS2*yj1$L5(4KZltw4Z4)PmjS?Qcn(&o_il&8IC>zOEs+*|y*+*1XN^ zTNDdT)kJ3743-a}AL9T1#rS2tjiMH1Cn6i)|AbF3F9U~4bl0m(BV2%>i<$_VcI0nJ z3~UEo&`@NdGLF!{MR}y*z|iFFA;TnP{U7TxH@W#`f69ha{OPX8I{hbNE&fhy7B9u( z7e^R7Jz7Q{xv*gp(s6AWJNMjIRaGTIFdl=!f4SF!6`;c(!3RDgoXvC25aw63 zREpUCUWTq!6k^+7>%=u|8eo*TOnLrEf-=M?A>dF&)B^Of@DuE0oUbnv%jVV;OrkOT zyULCzT4e3)xL5m0CAciwf-t!F`H6#(*L&dVs?|etiV(Tojx8~eD6`$zuyLh%lhpU ze$s}swco%_?k?dgJSMzbyyc3Z0R$YK=5LPlz|oD_yrbj*G)sSu0TwclXvzEfHqxTO zis5h-u=5u8&>Qhk0K`%V{s@@9SKQ{7W2vAzZs^oWmY(h6^Yv1JD!6Z@9hlP#mjtmV z8D-6*wQ8H3;z;b)Enxk7|KAHQrHKtg!A6M|5EQH=pCo~uG!u}+o8MCvY>x@Ed+MT) zBgBB2gg${nzj&!0)NHx-wR3Ln-DMxWoQ&oR&>q%~=vZ!47+dSvwjz7lZpK>TWBqX+wbh zWWA0!?V(eitvH}#daZr*XpbF91b+SVfG%HgQ>b0AT)_-wK6H|w-E|drS_q|R-*A0P z9ZZt74s;Gbrhqup*uTkW-~bWQ#2ba7cerqOXdha5U2d zy_%DcdXjqbIg7b9_9j2FIT1^j9;cm`Le_sezDZERwx!>^3yjY;LBG@9?l+NbJZ%Pa*iCS$yK(nF zuOQ~Ydez3$lOT;xxo+lH)QrxUKN8=|&%a%ly-J%G zpT85Wq^`Lm6_U0TKL1DhE6abm0Ah`IbXi*>>Ps~#_nOd!!ynfk2AbqpI@}{@f??YS z<9A=%`_9e(sM@k2ws|L3awfCGsCOkMisHLY2wee7C_=zEAxk;7kwWK8YzA8;C*xn= zh#}p)%>5?dLIa#sM8zfZ}FT25l#)U0$y zJyfZg?RCe$7X?h^7Qrf+Chb?xLlzH2)t|tgmnQD^0MmXhmVd8>H!_p5#1?s(Rig9^ zbv`24@WK%*xYkPx|3>8dO1fk7F)Xhw;0;{2<0av?1nwl9gQ%HE77TcmxvyI znCN?f6`PVAP<;#z^)bXDE`;A=)3-&LZ+B^E`T%6TLU~*quzv(EEma1@<@^|R8;up; zV2qVixhR~xyb8J5Inhrvr>P%X57py(rz`1#I%a?Q$eaH_6=RbO|DUV)eroS=VJ7`rYGcr zruMBapKbzwY+$max+|RZ1^RvG>E5dGkLJ9tdYJeO%gQ?F2W6?xR(1hd_nSYgSG>UvGeZ`P!GLUf8v#+q;q zARBvhN}Krbj{>VIz#yu~LTNL5pghl-v(15ui8V`=8BekFXJ^vp0sNz>swT#KSh)>( zS`ThvPjG8b5){*jn&U@x%Pw|EMF%_UF$UTnhsz zc^Xil^y!z?*TRjO;3ZYPJ< zVvk`Ya5{50dPSf^+7s|sHiTXWTL$&*rweLVwS$55Jbwdsf)P1=9!h*dY5dODy_%g) z%5E88+xY1sS8e-;i4Z29y>RqY@w-_E=JC$7u02eOsuCu1OD4TVMYEzUKqlbcQ0}-O ze|&vvFk=xV!hCZ?e{~QC`vDrbjYzt#6J`0GzQmiW)>wb~sruZ}on#vm2bPf@^adUt zX7X{bI4uz`N3B+K_m}>*aUz#tffNge&JB`R&5DIhMKsGLFvW{~abfj|!)(^J?6YS% zb*RJU;#*rg{bbm7;j>jGCegLE0pCzbfH-hlP6VoN!+u}^SXvj!ttO}#j<~M z6QZUTzwyvN91CP#Pp6D4#mV&&I~b=drhS1*J0TkD5(y`um3!60Z|UK?{!+{EMes2K zv+pjX_aqu-^|&Lx~a`g(rT|gHi@&U%hc&1hQHh-<{hylPqfU?)75u z?nrIb<_Tq^cEhk5{i>DNy@ZqD3&(oYuk}eeRBT|RkmMu2?%wP>u+X4ER=?6vAiZW^ zu~ML2&$s0~cP@Sr_4%pNr)D&n)$6nSG8UB0b~IVA8?Tu~&zp-ie&1=4bE=NCvktbV zkDAHzwsl)8DY*ok=E3`>9Fw8%412e4tvXKXjwPZ2AzxX;OnTfhBL3GiqyXjlG2&xhQ%6eML7I zvD9n)^5-Kpd7Vcj{^Bn~zto#{BcCb&AmbMDB1_ZlZsa|{S#Q)(?3m7Yat?EQe13v- z{igUjDtGqXgF(CV_0he9Uk7K7(MKke)qAKv=+6m0E!pyAtzWGni>*rkx{henXAnsv zgW*3r*GwTI@qj)zKdI8ZxnE)ugUwElTvdnwf68atHLBL zp4QJJna8;o^k2{wtm&|WW7p%e4!|^ z^7)iCv!6%2`l|uhW2xQ*5TtrQAp#F_Gdpr{VhOrO28a72ZRQ?@w2foPilbgmYzbif zm^`C^0zmlGD0-+^bj@U8{q4@;2Wg*I%&lwzSZ^oW7#Is|n z+Ea2`E}(#fZo&?&YD^{aI~CQi$oe9Ld8_F35VthdtSk;Sjf4#DdL<0!r5LDEJoBNp3%y9Tp!gTr)d^H zbrT-^`~JjHI5snQpET52>4C8K74>;t&Y;_9`TB{?y4~&TNQkV~$(R?5pkMh@TA)#0%w~KX->v)~NlDN{?L6(i{|ZbN z8$do3)w1KdT4S<5BG}< zn$@V#8F<1P<|D5QNg-Ocf?)ww9@ULAMZOnKJXS-ZMY zy8gXLA}kfJ^V$Pre`VaHd;opu<;?+t@^m!j@o}9(`*M}iHmv4u`F)eWyw3$mBvK`N zaa(A+oBtv>b^aig&%=@AEiVzVWe>+=Xu7>K`q%A5mM$fB18y_;J@5dU>rOJ$LPTPs zNoPMKo@UdKAKt04xXf2O_gz$Ep~jOx5#w}m`J-ed$Rm)^F(sRC#qxe?Lz(&aJLNx= zk*0rZ*FFq;a>R70^S}AM%6F}nBoe&0)KkXpr{-+h9x?{9WGPn7zaf#N6BgiUJWKdf zzuVrj5;zI%89mF~fPrKXQ{jtkjAA_Cd3c|0M}o5F(x*}*v$r<_d@IXkarN#>fLt;R ziXAB|O7Z@KSyG?}&9V!$Zu+XHTF)YX$KCB-ZIpbeeqku|)<|kVsu3v@%+Wpa7fE-j zH8JSAiA*m%eg5Dnyl>8 z9@zNoAFT~!qlZYJe(zeI)@@S|a{^BS3)!E(qhn(mQ%FDo1IK?PApt*ipceT#C@6@4 zF#T{>^q1oio?av2;@OO7E-Z%d#t_T>lAH4FW5tpJay2R(Ra%(vHgn*A@TTFvk=GXE zc&8Z+Jj&j4FvjW{;+DU<_}V9Tf7Kle(q4QeU=Bm7Q>a`WOiur~*W?{ABSb_cYLMWP zjlM-sFTXKtv48h*cRkW5_YJM&g^ZE^;iYgB&ESb&jM){S3P7NyYuvPm``6?-I>2Zk zJ&&ELGS$RYL}qeb9ao2CkWr$kXh`FC2}*Pb&+l@l>|1~;fN!Ry-;h8doeNfYuQW8$ zb*(%PVfE;!GS=RrSpY0lF*94&4DU2=n{T^Q=CUSPhYZK}!AP_mH_W~T*Qwq~F{qW_ z0>h96J`~_FOI2Wle3Ds92emJn7NZ2V^7nHJUM=pOT>{b6!r3K%=U(c&)-9{=jWf0) zOF)vHK8vHhRTIkY=SFK-R9;RD1X#t~$}4MkuJLRK`Yd|g*ZB9{iJf*6E|CO(up90D zwHW~npwDYT?P{M&1Pr*H zRS9!`Psn8y-mXh3dvQdV>j7`0TvlyAUm)<6zR+CY zIZvAYQqkZ7S6*4bM4!DRiCZpJJ~L3s9kvOn$;COSX3;n~zvu43hfQyTJob%gyNAa# zV;!R75!wWBG$G1)0?gqblw9QMKdpg?RQ=iH))%X5#b7x>zx#C{pPtC}MP+a;o%3qq zQ_CH^I8{puvHk{_0ZA+i5^&w!R1?@Cjm9njH2N6fR@0xOmB{-& z!dk4J#F#K73z97-!H1m<#+{qBB=TE#29BggTAs|+Xc|&(7w7RTzp`Hu+4zLYJB+TCWwY01V ze)Z>(mmx7M`tn8D{*G}ZF}^5$;|w63=vPIjRL&qL(4el&#w-MK`Na9Yvd~}O{o8KL zZWIt&-d#?%7`VKV@mis*BVnetm-cK>DMDTleGLf-L2lmc4FzOQ`CxZdM$dEThuav! z+m|F`;Cp3xhw(VUyR?C|#p>k?O=w?5yB7807tq$!4E2nn^=y89$aH8>#bowvW2H4V ziJ?dl_!0Z7BY#wvDA;^E!%D^P^SRgwe{AXbS$Mb^-+ftu&iSxf#j7G-5kKYQ7!9EDi8^4PleBbmJ$J~J~sQ|kscyhj+#Bm4&1;;gZ zmww;<(ZEr~lrG;YKlV@45aFemPFK&_e1ThTj*?MIAzs~Hpb@cI1&}y)b8Di!LRMY} zFFnAVliJ@bnpjMF^2PLcJ(b^W6SrSD*`)R=FB>(dyWBjVJ(l?7)z?u6!eNsxS~~S- z&q%KPWu8HQLL&Yz-rh5;sjgiY#fGmaqN1W8pi&eOP^y3sEUyp&QIuYl-g^;3f})@z z#h~<}0!l|Zp+!K6)JW(g5Rl$NiIk8s&xqf*zO~mndtcYt*IMi74?>uknRARe?(vlS zxu5Wqn4`~z#Uv!)>K^xQQXt#kSK^->6>Z0*Vwo8iQx0`|Qr|qC%-Mj|WQ`f?^Ssx7 zh3KFSL$m0!fByDFTH@Xk^phJKkAwPI%a?4d>YbzCGDd1=lODC~B|`@_+iFDGZEy0G zarfWYdw2E0DSrjAUs@r%4hDt1C^@l8N#!(`yH4NNv{~Gqpjhj&N})=Vl_gz7jvo`t2xTAcd{fj4^&P~C~(r*@32hKj+q$jEw5I<=0 z_7^7@M)N;6Tch3+IM5^tFVuNa`#9L`(hKlTiFfb$&TtJ~W2|KmsC+O1eY_h-Q$wjY zNz!mYMl5AT-iY8j`BcGg;#O`!?!NXStPqf5S)&uVIpzKC3KG!bEt4ONIAW8NFG$t0 zg3dG-_ZOqg`4#4!CTH{#xL*uETXB1>{3Zh?n0ZUBaOhAD@M#jl4~E=kbGHCf-!cRs zEzrF(LCyaB{OmyEaJ5(Z(Z5bLuMfbE^+RoEOoHC`YwPO1E5foQz{!D*W)`4Dz2Jjv z)Jjd=@^f>qIXUIpiv?C7vt&+8jVKqc_kr#0Z&LaZuly6k1ZT<0vJXs_j7!B5V+pc7 z?43p+)I!0%r@$MCC6xO&-w)hU^>o+~$c>3I&A0xK!H?eMppSDE7fz9cW115v-!_|z zuO&3aJaoKdGr9flI&N%)>fU~WT)bIxNz_Hj(l>bJXMxb*C8{b27=`8)iJccz*i+j; zdV1!Lzy$&ApU1wgImJCot2&$H;MaKi$N|o+6JdX&uQwN+2&<=sf_$4()AqVseV@s~ zE{)LvtB55$ecJ^L&BN{6!?#zKICmZT>#rWS?Ck54ugqWBrtd(EhJjrxKElEaB;vBz zzG9x0@s`#gtEow|Y1_&rM9fWWD@fpw!dauqUwl4(Cc!HuzZ7GRwb0E}HHyTtt>6jAyA*=rBlC$ghdRB3NA9(*x`8H%++~_7G zsSlYipi=V);OI{Kk9|H`}HgsL%1^g`Vpz{do)4!gag@$l2!iakVQ>BiL~X zVATdF{hg!fA(ToV-8_Lt7~j=uS8yvS|fnYVbtfi8-ae zBTSrHmRGLXSXJLyY8tsN!tqM7=5+9~J*i*h7-c!;Bd%tkNw%A0)L<(hd`enWwO$M+ z42Q#k4h}o1R96p}sL}}w?re)IF-JVX_khcblIWKSm`Ha(1wNI#otZ$2-8+;w33fh`{@tkvtd zIloP_I(*ULL+kK16IC*&@W9?Gf|sb6*^s~M$1(n$XyldGBR+H11gp3x>QyXgM19b$KxMk`yauBqJPc=Z>XCg8|XuHEv0Bkn0E!Hm8xud2(#POoz?KxMnt5anh8S@gUR`~@jbcS_tvAMO*@qo zE*9nd{KyD7w~U(4g}dmqO?RTC@cDuPJlD5`4y7c(+(sD#c{#>Xc(W4)J70%%jD)(Y z!nUa%)#D53>FMQ|5;{Yd8xwL@axN9gnCP4kskq7 z+AbX@>cfd3@W(weJe}pcfmNo0ZH8F*aGPxrL%<~i?c(N4_ zD?+p8Ioc3kO|y$i`Lt(C)q-a2fh@(t_E17q)&}$z1U3faltKtr{_sN1 zV7k1lO4j^is)DS1mhyhh-;L+6E=)q0gZl5w&<#9-9GCT(#Z+Sv`XqgSjop)~%`!}K zi&4h>9=Bo@OR-X)i>Rnxy}%uF!5r@fJ=zp!ykrroqXN>CqiEviOd}&1FTI;9hGe^~ z_^VdC?w4IAPu_I#dIP)XUae@>5fuvg(blXN^{6P`Z`0iGyBSxC)-sj;PIh}pk2%CY zE%QOMDi|Etl1|OoZG#G8&+eX~cFALKK+f0;Oc%}FJAqd*2uo$eIaR7sgF(Ql2hFSNp10`c^qJRAvhprL>k zn`UU{O!~%#o+>Q)-8a@|>Cj?1D?&$nLP=g;3r)d7NH()6U36)rc0ehEc)V*EFm@o& zS@<>@D5V!FoCz4EI-wdres3IbxUca_RUz48V%;jN(ty={_tetSeTzXu8a_q{a)rC0tV6LS=~e{?%LKzCBGOnl9+;RU(Zy!1iP{)ArBjJ~5gtUr%y5a<@~Xw# zvOE|q9*&^93pxwr3ii^Wt*CDrWP3u3O zeGLZziER)SFl|6!*hv?l8@#8u3}}-=@n-Jbs}s1sp&=)`BPY6maZn99s6TxzrX9a! zPclSSN3SmoXrtL5Dm1NVYt5=MmePz7>XWJ>orMnrY2XS|_E@62KmOe~z;ks)BbEwe zRCZ%y023%12&T!e@)NpZ@+Uwt742*JxW`$esT23}XDkp*mPfG=A>;e4eu7^1z96GF zBvWTkM#!BkW(phO2;1A)YV z?QH7wgHEXv`8hdX`k#?DR5O0_T{JCt^-4K8jyx)I<3{6zuI_Sw0&CXBa1%;^e$kO; z#NwyL&3><=qh~vEN57@S&SuejQ9<`WlL4T}MF1BECZb|?xkzRUg--p8&qe)C>Xi>5 z6`<^L{i9!^sp#BN71_W486byj15ua~(Wu~2{WZKA$@&CdZPR?^G06sg=b0|mYh%%b zJ;7+8+G{Qdv|96xiltAafW$(Dcor5*1}bj(1{M~DV5oOb0F_oWNuFbz^So*E*w}k^ z7tG{Cq8Ek{Kv8=yZwS@c#Ugga(j4dxC&>4|0KLwf zCt9KmW9otQqyBBL2@;_+vSCUpy>mkbM+JPOjX{j$pp*;o3tM<-I?}ANf#^~u*Q+=j6M7( z`MJcmxLp);f<~Lhg25c!Rb*D&`8O^AeLM~5c&eeE{5k%J?$@+U#Bgz5(LwR;(NtwL zsFUWR9m53OqLLTDIR&Vcb%2T&T+Us@Cot=ZK zhKG@29$lx_8~U=7?GlXJ_v_Wv>iyP6PivW$e7pl5%Wg0By zu8=)Nzg|iD{+_)DCx8=+MtP`+?jiepKW5|z8j~Q8@Q$-sNEA?3ZX6OX!}3X+=YTco zGTu}&6G9;=v!@<#MEe@U_VTvMd;-0RKzB2=djrj0%A{1(@w)ltPMi;3jjte-10H#Y zrK+kbHYFZ{SEsu+w&BX~>H<2izRy?<@0 zJ&cS}1ge%!;2qG$C@$;i%W9|VXx}~qBO2(fQ|Dg4ZU}N-x549OT4o<5ItSKaqw`n5 z;;aB_KvJgVTI{31TAf-RDx0aRf<$ShX~G+0VLTUVwhx274188V$vw3npL%cCqvRM+ zwc+gOs09X(n?DScdL%J^NXQ9*+r{wn^AiZ!+F{^{JB^lCQTh0x@tT2wQT}SFK#Oj9 z{*2Uv=49@miKzH7I{LxA%bH=k93B{06uv^J9qXe$#c76j0a(3r_cKPcHNLz1aN3;m zN%NrTJlZ84Uhnty2K$do8IoUC9kuvy8=W+HoA6bbVaf+zyK2?2+)71&)%9Q(YQ?1! z$|rx3Jrg~>nRev^;Bau-oV$~HH|jg%QN<}NU0JFfa~0NBAa5SB-e>6Z>N1fo$HOQrYS?zJ|4q=&?R!e#OJ^v7l|0dn zH#0K}6aOmD1)uR4Diy1qlywDyF2kU?$~%U)|3YEaeD3FTf-tjNIJct004(DRm0Z?B z%Rt~b|IkbJN3u`LnYRNj3@@H1c%^Y~*wvn`=hWuTu?M=fJ1(c`y;YW*xn5H6s3HwW zJT7>s`QRIWj=dLk!j+K;EoPK`4G!#A>q;Xhud2&mNgNcr+s(+EcQ$x1X?U&0@J35A zk3@h+cvN4^=Y~xS8AS6Y4x$QkI?QAezloRCNA|t5?blXfel??K^6bTz6&LHFC+X?Y zLTYEpo1pl~67+s>LQXu2QXuDcUgyM^}CC8WHfpK>ueH@PZK%1J4d{|8`_n7%faCAU|>82P9=!I(|{h zeaYeN6&_Ya5@4}fJxbW|oC?ImPNXij!o(#4mT`d5<_o%Se4}PofKXBXxIjbLz|_}V zX#;Md*yENdzOGM{kgH49!FqT3JV!g`!?GmwW;-{*8cN%|aMPRxBKrHKVQBA!hQxP6 zqSSLe!^0Qg6Z2k;R~_W$s?OAHvs-__2|ao+!Qku|lRuQAa{Eqx_F6Ks@aubAc>QR5 z0$1^FS?XvOHS?q7X|VPhZaGM_rAy7pRSmxuuBzuwSq}AEiT2#(7x9)bP9<2OS8cyIOB|I) zcF`u`$<%piwcl10!jwziZxn>XmYpo_%T#^3R6jwE)-mRbeFmz3T);*&3d))hPOfWa zMn-({yFcw1toF*R0-eL(duge_5VSWBrJu+SjGappK3B(YttuJ)xa(6qPsr?zmk!U2 zgr_@GW|HW7uV?E|*wa&j#Q=`=Q%#@0XwPunBihQyS>bwN;^x(`^N7NwOP&p|Ur*bR z6H&)4P(5jlVwwUT7|k#T`g)6iRF_MV)G*KT#X)h!q$R=nRdP0{8LVfP#LPW{d!QC= z@{~hVj894!2?mhP)bd$PA3(0(@gsRfkkTn9%Dnrsw>88wGxt`yOqy4WUfC3=aby*X zL&DmF21ZtVuDry-QBMi?sb(E^OBx}aubJe8Ua`A!Oyx@HM%e`ZPDT7xs?IOTGca1K zp6@~-hBps%b;?NxEHt>0hN3$uXD?t}Y(blgLvfBQz*M^%d$MQ>G?aNct(lbJLfMRT z-@hPv8tlgxx3% zJl?HafC#ZXSOogyGOA0sZ&0zM)767|{2K~VLYaJl+{g&wjSZZ-B2CG}8|ak+0Vy5O zCUw7bYbnV8m5zy1!Nykn>65teo{-i0<#*vrmQUAz0k1idnx6rR{O+SrsK$oq{={-{ z+=$SI$n=EX1TGgm+eRw3l;vQmcetvuJ-SS)3pX`HZ`uYiKx*I;PbgSJg{O!6{ zB0S{%ONRAdKR%b|sRnwfu6zy_@ntvnSZ(5+*F*f`jT_x{HmY7~iFSuIvDPek`W|4e z>&nCCn}t~`)d3hTteoKm$fk`8X0ODPM(;Zpt$=p zFc5WFQSqQ(&O!>ARw6pbYo?w_R3tB53>OjQ=GVT*Zok)3;lM@ZSmT@qTJ%xva*ctmNa-4_&-bet^FW>US|u&95?ps~W@fXAp((qur3K)C&o3{71a{kxA1^@J z;r*4%Zbjs9r9YjFLPF|qX=(yz0qo89jf_46BW|G>@?^0M5tpxE5l}?2g@v6lidVWn z{qWxa-o7<`L6qv8`lNO(wHa|Q&H$E-pgpgg&aYFs#AG)yjG@y&D%v_07RQ8TVxPIYZ+F?s zA{#EjOIezKMS)_jZL}}w7;u}vcAuJgiWKk2UzA^jjG{mhD zci~?t+pyJfNAlvXkS|%h6HGdgca^ZPVY$P%i{B5xG@WMj|32K*H><2QYsD z^oo)hf}#nuaTOi=K(lIj0cQ?RBs;2*_-(G|^ZJ4nq_PzR)~`y)b~!kQAVcuQF-gNK z?HbTJVPz*wOnR60U>1={T`$C3VaKGNi_b+wc zPJ9e6r)HWYSRpZSbuX()5V(fw6@zp=^VticE6?%m z_GLZW!a$pQ92j`oXm&{uWtF`Lj@CVXdFQ$ZI5P@=W8k0OSJzOPLkP7ZcP3AUqL1bs z|Kor)UmZAqUmJLMU{7$Y*r8LVd{EZ6kI%dvoCB}e@a7I54I`dH|erfJ;D!$ z&T~B3f7crD367`I6dlN&#({RH_XV(i45Y6UHr){>g@rP?wCIHjWPQ?r6<^*&P(@{B z9%d-6+%kZ5KIx^WJgWW1<}=y)yHcBupo8m!U?!?n0_4IDCxi2Ua_ z-P={_*!|IZDib(Npjft~bmtMvkSp|Gk(j4E(Sd69ZrDy!fL(!dJ6}@Z5=P;iuFZ480UIXJT6k0XTHSOYZJWQ*n4Rs)yx1>gLyA) zr~&TmE)do`4I1$cm)dEs_~|$0^H3E>W~V5y718>O@HfGiuU1qBfjm`a0QeFXsLJr` zy-m58vCO37D4`Ro^{l+$EK;nl3Nw!x!Gz z)^mcdHLw0O68en%Qi38F!+ti2LFdG&2X(%WhO}M9WFNP?-hYj_fvM9Y!|BC z`^_KudxlICv1((g9V**tTg(BkLM?qCYv6@XNMDZ3KMc-#$-aCiVK}*V@)HI#G)G2& z?spL$-kCbO(yW8G$~ldOyv&zl{&fNF8cme?O-n1Z5Q^dTIqoNqnhJ8?Bp3^wLe7Dq zZvHj}VQ@~qbgHuk_{m|da)BVtexX5o{~zO^pO}B(CseW`(uHdjkyBfRj}(yXV?6S! zZmYPrOY$`MP+}j@2Cn%1Yif^;wv1&FV7;EB=_XhlP9gga9lNvEoK%!fz4>bc=lf;n z)BU%We(__$rVZv$Mf zR@_EU!q>#=L0!b?`heAPO0k%-)Af&d8W58~lN8R_|04F5-)VrEeu25##nV|zyo~J{ zuya*bGWYO8;H9$*QKoft;dC8YRi&1T|HG$Ge&`36(tZ7HY%;+uo~Cx&;-bzasR^u2 zIIq^dvd++^#GsrO145T(fT~mmH*E^R(ECk?F+#Gp=`hzy2HnHZx@(4vl5T7&FsiL? zv8pJ&lWuedpZ_xl_R+=yQ}z>AGfK#T9l2WRY-h1JM57*NO^Luq)YRrFl&+A`kwQv( z`dA5wcR7JBMZhfnJHzLGkBWk#qByH=A`#`;3A@tGd?;B)+C&9-WGMY4e~#{wrm=F8 zllyc1y`qGLJe*DWUY|?z5I^}{T(|+|TtRaL@6`2Ylk)VoY__}v=-9bZ$;r-K{T@4` zoT_42^`iCM_x3*GK=H~%Wekd%Dz=AyHEM#q80o01DBB(aLh!4w?qw8Q4Eo0{3Rl5C zMRM-udq$zetugO`FOT-CKW5Il3@*mT!edX2UqD9rTe2X6LT~6wRThD(_)Nb>kYkwY zW*_lGo0@&R+hUGpdU|@-`~y*gM@Aq)LBVuUKVRQKr$q>aX!X#;!^2mN=wuy5_K9__ zbX31prJoSeLnj6L`uZQUP4=SlfAKpWJ%KuagZ=rBk~jsKKivZ!@2@BS;N1UwGT^_E zg2>gW^sv^0%gbHG%8$Bp@T66wN9OV5(6!Rl0_u9D1DOdU(xJT~R2KJ`@i0{1hp4~l! z!NHttJ{g%4W8}D3(SokSopvHVCF!%+JoQ{AzKX z3iiqSq!3MbwBZB535H-`Mxk!R!0_-!44oihWTV#wzQv@a1xSzXi#{xtdI3`9!> ztwYZK>a^$_J0UX3NQ|8JX6ynM^L@)5CICG>43*=hEl(8$0&zU&){l`-@c=TNrWT2y*IGzf zTSH-y*sAU7IjI?$QaQ#j*5#Y&k2HwsJ<|yjrdnxgD+v2?ZG9+){FcG$dkYH^U zn_PiaOknND5e_)$0X}b7g`Vusa&6O{Q2tcU?CFXLR4!lpqJh!Qumtua)xm8#0*NHq zIm!^*6o%kP^7D9DinsRMR)+pA{r@+hdcgHpy8mG5uecKS=96z&$kjlh%-sWhmnl?= zyWi&T-7)M$PMhdAc>(Yktued3bhR`c5&&ZEnSjrvz;6M71&?Z!i#h^TZhf_Nadu-f z`{|M}vQ)7Wavg*o{u8q6rc(gOmXvhEdD&M2NOceH_tXqdbaQT?9t%Ss_I26Dr6#<~ zc=1l3^*~lki8t(S%Y#Zybdp^?B+?oFAZuUAJK-VD@5wRNq(>V!Z~H@f@e*DP7fvE- zelyfJ%r{v(423`DP8_IPj>$VGzpt|J^XJc}iHpH0AL&;R3;+entPvro z&BDf=6*=l^%=ftNC^hqVR_w{+UFoYt>#j>OfyEF*bA}Fk&hX^bkG=0odTNc*On&`n zLa|ht<#UDQ$HHYKfW}Kwya1g!UXAe_W+!R?8?&xsz}-7*{UYV(CMT2Yv<-7J}82Or?3+`VAD1G7?>3Kh%!&NwMaW2}em3A7Ibq-rldT3J^3P&w4|BcY`@D0K*|!_TJ# zp>9sC3$8agPT%9RqpYVC6Z88mjBcavI0$b_w~-dK(I;VPAtYd4dJ4KcDAX<@8r+Rs zA~|yFQyyb07E}cL-^aPhU->UxLWiQJVB0D zJAN9*)Avh%>#>zLPCD(1Qx#{~QZ~tlQlqc{$B0{h*ONtVT^8^gY{R~HzaE2OH0fL+ zR3E%ry?E=xzI{p`cKUlVc1^XXx~08Xk{fsGzZ)Epm94+jN*b`ZLAx9k6~H~Dl`cr@ zR>^8IHRpnP+>eNK6HZX*wkcCX)o^R2c_*0qCZim0B-kh6EFAB%kYVK>j01hvlsz1- zaQc?ED*1f-1Z+wBG@*-U;IN?f!jS_B3R!HtD`rmAJDaD{85+gEr#vR zCXO;r-W^D=?qzvV9@nNa*jU_Qwcx-|fG%&+#_!DO$}D`3GI_;QM>8`iCg8VR=Cf|W z-=&>|tVxN_P1XC(by`TIEwqQ!E5O8~qC9j}e2-6QF2r)Vcu6qobOjY%5~)G`be@ot zD9RMCD>RT@h+90ht8z^yNBaxMdvmF+7g;J!*BoqhCUDx9!3|DI%jK=zpy{poJy6LJ zSz5}lXJPS^;#bh}N+KcD=UbQg2zgUunKD}WWEnx)0O{)p(p`sN02@q@{AQmHRS6QF zz9S?tN}D6B@KJD^3E@iY(ZjBLbFIy)AAA|n6^wV$3W3aiWKe3Yb?4}(QePsJy{AiB zU&H(HO}9T(Sw^KY%f-Rh{$p<{%_y%z4bu+W1u#5Jl2*l>C{qLs!^&egNT;oLMqO9{ zzoppqG&@Z=J{La)x2dT9q0mto%e62V)Pc0eP@oV=mda);0k4IYJ%=54sIsf?m^KQL zOMin%V}zFyiz?Stez+q0@Kba`tA`dEywlb9MIJ)`h;d1I?g}^EM$S!2Vj63UB9J{BIFh-oa-Mt1n9+ubIAzP~F$QlVpEy{ys#!@49}k5Ue{$N*DAFq}4YY0cM-B-=5WSF?T{XOZP(cel z`k*$8C?=S^aygh*H6z?QqaCE#z$||wY^Ha<$G|;SaQHZ8v1DodELFF{#ZpnJ5zoH6 zA)VUgAPC|h68==zsO~}^rQoDY^Sj+TPrJH$my+HAdZVHft2>Ke+G+B@bK{P zO&-l}Kb~N6|6wI+*w1?V4~y#64-%`cIIm)jjJ&JwPH+)#02$euTZC7~ByC;JlE8_8 zV){=7baG0H9sl8;*IOR2^9F_QmRi2L?u~nADEBBG6-d_RRRE z+_(i(J@T3%hXgJ+bTRLXS`O^Z)kI!HJEU!yy(UX9u!gN_%d z+;kbU_#%DrKQZByK7a_S&S}V98>#1#AFcHY>G}n+D{z>`Jyf7{_3C1Zzz9+9B$%6x z_ndr6PiM%-I(X7IKj}8K3WBS|oMblrvMU=ZcVRz#cf~)|@ASSmJ^C~Skz7oaggcM; zWsA=FZg}Mj=CsC4^H)-Ly#0(vv8a2nbhe0qjC;WYYGmK|1*J~@S5ufgktGC&)^NFz zh9N_A!V2Td*cy$)#8^}fTkJGjjU&~bI-1|;uO7Pg0GQF(wX^{(^hU$RtC~NqaQT{8 zZg%$f?PaW^Ai6+(`4L#b?QX(da>Sv&N-b3@^!&mC6Zo1Iv@RFl*`H_N1PxS%js<9x ztgopV(Km1n_^l|w2jj&1v6}ed=#wDQ)DpzafxcXLELJjKwt*5`{$O53qVTVfI(-bj zHhl4@GoV?w$F&UH4c5;yXd$cKw&&{Yxg{Gy>Ok4(kExT;uXh++XJXX#W`jzJ>Md!o|$lEa4sKAf^D z_9DTGlYIHj2JXZEFd%p`c5r7rNqBI{UebzRbwWU$C?Hh!nDgzi*e#W;HM1QOm5`W{ zFD)fR3IL`8+mAA@)j{_XL(T>+Y2sX`A{JgmcghE} zNuI`TK6#CztdnMZjBb+=Y72X8LI|XG9~(J|M=I06>QF2`(6{#FHPp$sW)t$<2JY}V zgj042gc!B5QJlTD@e3>-E0+cY&3gp&v$Z58zFRru(=t#;5vB3K7@mv9grTWA=v>~7 z3(N^D@X_gv8Q8MkL%NwVC!uR*OB177>J%5Bh!<0^Ei199TqOOx=#w}14q-@2bnDhh z)161lyN8>^(TlBQS8#!`(ez6h!+?t#(LM(8#?4v7LZE<$sZ><32X2^mfF* z!pIdN{#_?G{BCqs3IC&(xDG{!;ExU|A04tqYnPv*4Uy&Xj-Mh)o((k8_aUq&+gO-Y z9E4yRYr?#fx+lLhweILtlR->F3~$CW9bQ+L#zM)5Q|D(v$D`yQo!qbAs%LG#8xmWn|VpH&T9Gee96P+`CwP z786z&(70{uKd735=|yR>7L+P(6Fz*LfDacKa6yd6LpMfmPQYK)jvDKGa=Vw{Zi}Hx zgUqKsy|b7M^3iK!9;pUudJ|n8%Iz}V_LoW!A{2}|(86(ca(Y>>t_J^Jl0^d*B|&DrEf3r&o1}8TdunW zKo`x9=kM_oRPogUVO+z~W(9T+=0=}1?3Y{UrzIfpRWQKuUdN!YGvt)Yl~v>1>CZ_{ z9}e=z?$`S1cgORPE$XLr1#cIrkHXikXj56Ux}eCE$(^4%EeSSU001BlSu_DXhB9uW zk&NO6u~xWyIVXINpD}qu|4U&R%<(Uw{D$Ac-Wjj!S+}LF(9+oP;5`aQg~BElO7)xR zs55hXmvN9x0Sv{VF}DIZ(XUy!;qM9)@z!9wDY%1-h=^bUHZdH%u}m%oTQh(MLnJ^A zl-H6hT;F4JpWo&N7{SW51+eWjNAS1+Fx^A*NSl>DQT9$I$}J4w>H^xXVh_<8kd)b! zLlqU3g5J9nI?P+J?-JOBwF$O#EA+bojbYjm9156W4#UL0mGlCq z4W9&!2ZaW78M!t^d1LH>OPvT21g*JfNw~X6r2r>}4LOPK+fQh>Wru9+Yofc3dirmk`&XI>k+HY6+`$PTIY zsIv%NO1D8sZI$Z>I6GR@XSG!l&2K;0q0{$9H>La=A|2$7%Is#sr@in>?j7NgvL_)v z8a_cwC9N}v&rX)r^#kB~EE^LYZ@C1?t8fB=lecl)j2`s{I&gHC~SYt zNt-a5d=*PhY$`Vy^ z(RDo|zo;K@irGemmFva1#qt~P-rPJq^v+I9 z>s^qKUY8r|o)J*8m#qEAuHmA4BNJ$PPJIWbkFKHAEHJ=_Y)k(Uwa@Zte+=n8hpfrR2_9( zHY(+AfE)BeMNxiXnv~VEy_x~&`*K*dxK*P`*fL>I!1^Z6)fOLb+V&WVct==;WpZYX z9o+i44&51javJRr|Ft90) zU8k`hQ$)YdG(REKY4$y*s?cBJ*zq_|d!5^?XU6ORFQA#4&*GqRf!LKHqvj2h!4;ER zB9sGJZ+<8JnDsdbBhMyTQ>&Mbh2|-ETi^3|C5Sj* zvft1~4=qBgz=yP$OkVU>W%c}la2_S~Y45#qw95{si)9DwwO=Ydbehrp`&{O@(lyV= zYt7~?8yCXK1QYPo`Ov8iNsN?m5r7<^T$eN!fdgdl?&*o?#%pXS`|f;OK80!Z{%thm zMBY^jR))Xx;wVom%Wqaw(M@*X_}<5#h7>F^aZjKy5N%AiedqfS&&EhFw%fWYjqccSzf2V2m&LqJ$TnZ2N6w{~KSVx!Smn z5k|b06b+SAqrBBv+|(FI%8wlHognDglLqSnPicC7QI|!EoA?f~M2|!Pm@eggQee%I zq!-Dq#AW31QPvQ{7W9-M1e3?!1BdkUn~ab(@!}fRVXO8A(J29LiOu-2s*7~A43+hL)kmsS6_oH3-*i9wg0NK z`9E57Gp}S1jGdThJK&^ADk2-6cUB@e&O3lPfznZEB+ZNv%!1F?onPon>)M)Luwupc z#&(+0M^gNeB`UyfDGBW9L(uHh=OfErMku(H%e?gMzgk6#GBz41~eMgTZ;trGnlwTc4Co?{5z z{2es#c0M!VB-|$9W>O5$e1EOmCItsB5m=c&0gwamS1@+^D`u$jp+i2~*s;d#LVHVU zbYC_bmOF{{5}gQ6dTkY;GNFx;yJLy0Q;RzpplmJyjQok zEHIW&?-lWDwur0jRbXvXr8N`O<$(ikH0!=F$T)L{LnQ(i*XX+k5>}_!7gP0E{ zlA>xx7KPFhIbtfDr%yU?zJgU+Bi;20V>$6*=>9uDebZ0I`o7706e|05Ri=-Ek#cn1 z$S}^aQ&JyK+oGLg__c3`EzdQ~OStF`K3H=bI1P8Qz4g56xqPLXd4KFP38mBQC$u07 z6dFtWr~osRztlumgJKE&7aE-=Wx8!0aQ3wj$m z1-d)AXT!q6*rTP~$nUcp%T~|1FzZ;n`%WEIl&qo$@^!m& zz~Q5! zjuQqqzNDNS#(VHAd?>#9>zF{sJU&f-7aGHSYz1IW-XC+Hg%&9sZLqkJqBxhg;jd74 zE`=@(mYLp~eoi?xo0P4WM9kRioP?$k&2Ip-Ed#WMF!Rpb(=Bf?+DL+~)=z}*)kBk2 z<>iykTu}xCF!Yw4BN$uqR!?ro@>3dSS#K@DbC`C2>TDI*ITu*1_SX^im}QjQ&|lMWN{(loRJ zi?Jv~)df7D>s@>+IFX???5=N^I305 zN(W7hV>_`^?*D{sA^}ZoG;j&KY~rZ?dS&Qc7}_vrWuf9S+2}Tnw=YhSui|DERyatY z!`}`uKqvb(yoHsW^a=5EFTJejK5^v5EcJq7V~N6!J8Z~DeGDSBtm0R#?%Fi5R_I32 zunAZ<*EeEw(5&R#6fx(_#V8#SceC9?@rD||WS8rg&*-7!N4B1AI>dyOj3p*^`LC3c zB>!v}hgqPh0QmR+SH0zb@_zn5Re8Q+yK#vmKI}@U70QcZA?Y+d`gCSwD0qt?^5i!zpt71KeT~@hg=n( z5I8s#0Sys5uI^j@hKG$8oAt}cjfV8y?`Iv>Q6>N7aN9dxz`pW% zs}ixqOxVbl;3c0Vn*n4^eNbWGEfa^%sXZ2YW8_tSiQE&6S{#n&X2;x0S&6 z)^u?1_lSHSE-*3)obW&M7%^e^;kJy`EAn!Y)m|_9NZ-Qyg@s!AD%MR3HCiM&IKXBx zQ7Uc<>!ge|7DT5`-g1e3J71a622x!a$AFu*wW$63z}tuP1CGhGTk;@aZcIwLl;WU~ znKV@mO_Z7gyr{fJN-T6W)G*#5v3V>OR3)u1$WTta5GX@;a%s5=>OU?FeMWs1Wp$ob z5NfVLP~Vm0-*7Mb&nYS)pMm6J?y1BD{C?bGRt!MY+$OpZi?#za_5KzmW~HsX41Mvw z%Bn36a%SAVvA9v?b08}XmJ$uYUMsV3F=AHxB~Pz{=o5A)0T}c3p39qzfZk&1ACW^W z|7espP5v}rES527`5a%aMF_#tK5=z%yz^{0-1TS3MO#8eqny4w6yLXDxl%Etr0K!SX5#H0Z+i)ZM^fzZ`bUJ)yK+f) z+I19?Yt3LYS!zAA(lY$HF|SLqi>l@BqI*|ER2{59DlpQ%rcL1^@p>tWQ=V;VBN2DT z*Jrj9WVYR-A(H?3t1O&H%4Au402JZHNFcLhHYXrbz`-pGepHK^y~5Wjuj7adG!N4b zo=CGDUT<6y-Ogalc3=)|KssxmeR;IDw)LETxoC7wC>DLc=wF{3xo|hqV%Nei)3HD4 zoqJv&!;-y9Y?`d8-hfFLr*6P-*p{icJuIawtacwLVQEzu(`9)9$qkaHX0&m-^vBKX zgFj;O&n3^D9k9hs-QJ+wkeFh^vX8~it``vo=^--gC4j%a%p*NiD_%9I>RugqF8a~( zPJLIBVdcHW1HHzA*>S?h66Vety&@mKR+%mLzGNVU?=fF;2~PVQd2CC#8Gw@vxZCDc z^7^{PJV82XVVQhjWb;xt@VaZy($F9CPxmkXz0Uy*-O#w(nISBXn7eR_LHKO_$)XL^ zl|KU{Hv-k|KmG@tE{H>aUTAUtM>hEXbanXu4O)EyNdo(M_RMydU;>na6y;Ff_^ziN zX4s0xe=#<7%fcT$mR?Ad0$Ve)j}^>Sxh`BlkN?m3blGeJh1ni{Be#dR?UT><2k8Di zDr6@JjNWstfU|v{HC+uyyLYXUmqM(6!%_0HzlYpI2?b9kU=0UfPGC<(L)G?@ZT`F7+H;?R zz%o1qO?fhK3TF3u+(JL~g?_7F5v|eGPU#?xc3v#Fk!JICdBngRS#=0~k(E?l+#ColT7T4{UasqPE?AnSfHkEGAg#Z7Hi{L2l1v1#sa5XS^7ixc}`tr9B*am>o${GRUxFhYU4D z1Ax=d4lxfyTV3I%g!IttG%)PBzl}6>Ku{MI4gEF(*?++6`x71jM`8zUJU+mj!J=$Kq8@@NR+>xu_?OK>?`(gHy zFa{zM`_^p|*T>uG`^Keo2%1}j9(6`XiaUPfyy$+l)pY~f`bRcb5rM0c8{>s6=jV3;UfSC1sBso%XX z_Hn_3wR8D619#J*I9+cyy{|o8JlYFeJkUpO=&6)qdR8?&I_o3vX)1Vf^bBM2N#&*I zQYMGfLqXo!FdBy<4LRhlEMFSDxtFI7r5kVf?r2G)2b*Mv9)&(F=)Lf;NRoIf5OLqfFj|DOiJgS1=JRRlL`O8-Wfxg zFQvR}rm9f`l^;$R9k9FyXvcg?AS-o&hGy@A%sv0vLeXzc_?7bIJdykEzm`vs(Hm+;LN9H@Z5eE^F4Y<)&$vJyg1EQc;ipbPCt)`yb$y5 zc7v#trQ-f*=%`B|jfwi~!{UMy)c>EY_g+1JpLW@qX|AD2e=}2*;nV~9mb$0$kS3bl{w)#d#-#+x8#;! zU|^l%>Eal&^vF?PSpbPv%`Y@KHX#{m4goS^cdwn!vfh!@G~qiY?}hC;>M6 za#lb~R(q?ste-)7UmtcIayt$jjGdUfx-HXOA*gCU2dt>k+*|E%D)kd^oCCE8f{O!3 zBYz2R0DEX@Isb`Po1b$%>waWU|GBj4&-oRMp4p-*Z|5G6oNx$O#-}^@U@d<1zh3R% zl0Eb7@AyYQw$HVk{k?wW`nnq{Qlq{%%n-lJpTEN~sIGZ^+yii*b%x5@wGk74Y|Rk; zUorpw>W|-LT-NVjKcPl?^8A%g_GcQ}>%5Z_5Z~E$Q*6@iY6rcRzxl@Xz}Q>*>yQ4f zDo;@F_x(R$q7MEU-;n0B>3e_RhyHW%f4ojT&AjqQ=v=?&B~9+@i^6#BKmR^YqW-+& zmtViRPHs2+InxUi&rjQr-erEIblu>#QxV9wz+Iou^y9wi_J%$0`(F?2jD5WSd&c*u z=yyNNlP5Jl{y%sBr4^r!*Dsyf^7L5IR<-&+@;^WD|526#8hqxjz`owjh+97s3%@r& zmiFAa3vAbc&Q_^;f3)gp|JUX3KRtW)|1bZsl>a~WKYV-V{ZCNq{p!#9|7T~YoSl1Y z|9{{@T*LQuqT4?Sn%gavw{pF>nJ4I@vA{#nZ0mU|m-8$r4Xd*FA8-CYntpHR4wdyc zRLk}Bjwb)_Uk_<_75`aY@<)8j@JOQ>>oV6i?D>9de%8G`!jqP4PXF%< zwEG>fQvq%%sHpF}D5bJ=7qlI8Nx$x&qpP%kW{hx#YPH!_U@cW(7s2ScfN$lVFj&*& z)LOeUz+CCUB_#`*+TONS3cPG&-A1NK4zfWn*Ef^^2e7@T+lkG6aV)o98x*0SkvVn$ zd+H}mEZ=_vE~!sxxBYx(x3lkcc2INh&kn=uyoSK>;SjhHGtS)H^WVGn>tQ!t;Ncw% z4A+XKvza4<4t}z959<-W6YFL&2LLt1*IdsND&n2AT<yrL%wNEvL z+`maHd#9X33vN7jsA*Qld%EM7^_@ZHTUTyyT=CMbmeN@z_6&_Y9cyi4KcW9Rc>jIG z?&|Exh106Gqt`}8;I>zyca?E~ji}muwjb#)U8wO(->E&7#5vZcq>EkNds@3U<|pJf z?s$Yfi(-&GCGtQ2GxYnFz2KOu4Mm-evU>>e$}MLG3cFhw9WTXWZ?J@o8WN36Mp>0L zMtqTdcb?Fq`A|)X7-K_CKHqh{3YI6{(KF=28h^s)KcG=b)6nrqwc%kh>aqA&bw~5a zzdEzY&xb?AjFR4s-p!}Q@A{h9^sU7WFv&2uanaJZjl@6f$2;;emylogdKh^uWmyyNRfAB@eM2EY)!=>B~-;`Dt+y0cjca0;J&uxPYc^if` z)vA>?;^h;pCF+@^qth|bdR}TAYp7q#(vedg>05gr5goN8{^OReONbD4Pc7F=3~|WM z=rLwlwOzyKqZjzk^^PLO@n_yBwCWuK51T5ln-K61^05c_Xyi1q|5zvxsJR-kAc~ux z?R7Z81k7C#;XhxC*}qJ}000N@Oj$wC`}_7h#9wbUUF>p%Gw%5Z#;1x;!=-~nr0vaS zDXgq4$f}H+9+=%~_PeSvDZb@Zx=@O3p6xNKU*<1upoG=I&ED)((e2gVLh;Wmc<|l6 z6jVrl*9<4QN&U3%`OT-DgkL|amMyZ!BmWNmP6_?oSQhUhyN7TvAN)?UhLu@={&mE( zahQ<+Um5qx5bD|?{)l^dSONELgD=fj|69i#q4}_0Ryis0vBN_1OuS^=qou?CbIhyB z{8LVWwcj)IHa#Z{wEaGEBm~eyz{=eJ)8k9?6FyP}E>eIm~C zi(B^K+VSym`})yRZk((l2bFvlPnL)3yTCWi1tle+BkKe}bz6&tu5O5DeOX$f9hU}u z^TJfZ{%LvJ``U2`baOWCm&_&Q)lir8<%0{%jo=W+c00A8IyR0Gl5I!A#J_l%^Lg(V z<(hQ<^q*Cxwm*gV1X|GS_oac&A+GuIvkF;%AIWPn{}~`)I>Gl*56UdlZr(F+q)iUA zEx9MCW3k{oL$bZlw^Ba3esy}Z+#N~N*Votngx)MvH(w*Wyqxmv?CiAX>MU#=!fwh& z8!QjxYoz1jI?a9~f?ASl`QYSZ0EGrd;+_bR6;^$g2q47A^FJO_bzSOhGN)$@@HjiD zmSd}h$OWK#m+7SfIP0J_X5ys=V_oQ^x@e2-(=cn91etdjbe>Qg)U-T$cLlnXeLc6% zxl4(;+d7S%CataY*+1>`oSkpRIR*??W{k73nKAn9-u0;*b+`_NqniG1%3PkJlT@7- z>!G~+0#~|!NGxu}BK42=L&|@>y|<;BpwDbQl3ss@&bM?4@lU@z3;kV=(fYDH6>oFf zMJdU9Q4f3@)|L#1lrMO0f+Gb!XJ*E=wY4?uJD8P6Q$U;a%=AUyVvEX(ZX(LsUY3~F z>ipBIe*K3%wZ-M0CHc7|mUsN`afN1-uNq2kt|w~&=3Yq2+`K$u*~}3N1yFRdnVJI| z#U*>nh>dbl%U!t&3;$jBOeH}EWn0_3=K;{I!+q=ps29qD4BhLpClcFo6^q-doFMipN=cb``q!YiQ`L226bWPuuoYdII`4q<`tp ztZMoB2+A&PN=Wh-^rl+J!a5t$0mf{_S zGdoj(5@~E~>>C+T_4RGqI((|BsTvR<>*nrGO-ks}6(g2>u|WpaVZ8L1(ae%5muPo; zpeW9w!a+4Ei?Re&t!E2XJR}#qH&d%_0&(d37F_@12VqQ1%#82U<@kF}2Yh)ECQ$@r zb+?>nPeJ2J1zTXcF6Cp0-$cPmd2ySlO@F(Iq2b51wbza~^}C0=!N4G?(do!K4R*qj zf1Bl9G?C@JE+w1UeHZJqKH86nEflOi{5hjH`8qJf+D;%hInhPg_Fym-a4E90nO{6l z!?69;3#|*O1WNq2I*MZOSH)tV2Nwjsu=uBcVh;SH5SFRxXPT4*y zq*K~sN4K3*=b4&keQCQh%#Ytuq0Q$OPS6=ObC1hBc22EV)Lt!kAQp~SPg57KiZ0o< zMR#O28%pOk77i>LwUfo>Ys>uw+ty%|$h{8piG}!Z6F~;>K9UdxPUj{E1AYA-m}#Ti zPxL=GzG?I{+gUgX{OZ&~MhIG5Y9F$4f`80yM(2Ob?*G`)%^dHPUz&fnbLIB*(D(8} zI3=!sFU*MVF);6St}Jt(J|qAhRG0(ue02=JogMwr82AFt;D7x7TpW-pZ1>HUB5c-< z$6d*j8^-&O7kj1#l=aXlX{e3{=R$EF!=p_c|NlGSuQkA2T!)Pe>|4a*(h$Na`Abez9NmDcK%-PJ0 zRZ>#2Vi)e&BHm7ThYz@F!&1qncqX071mqk8{x`iM7rof=tMp#FzN{`+`SJ579zaG; zKE^_tCCEYyh=_?`Dr8%fh&a-De zdrLBOL$axcGh~X-Bib(susxp`A8|MkKm6c|`tJKY@$2|ayzYQ0Ticixpt-r3Gmz); zV-fJNK4C|orwbWb?*cnNv}!l}T|rZm(%08_bbKzSf3#fx1paksyuH`rxA8JGt= znMP}dVbJSPu;CLmHL|jXWip^$40`b5XYUpJI)a_2LGjFew##b^84m3MU zYSFdYv&bpyuQ=yVsz*H7E9`HKD87+}C~JEE_v|7uFxm>G4{xKo>q!>6wO?HP%MhF= zZ5oPSyOa@&Nd$P0z7=_BzPJuvJaFTnGJxJ=P=57_GeFO%u;w!A0_!U5JAQsoic#i1 zf7_|m`O)uq9$wz=(b3Q27(h@&B($?r5qGiSbU9iTRc&<@uqxx>>6u+y3u}>xAuafv zk#PfXT|!_C%M6|ooBJ%TA90F_dFg3B82TaxO zPTvkDWda~r>G(J`DiuJXNg{< zRI;)7>b{yUMShakZZ9Y-#1lNc*8=+1;GCdr$@8*i&vfe8P}X`OmTM0w7q5;-u0)E^ z6IX{dQ)kF@tMziPsQjzdH>-I5ExsBuv0?5(+#GlB5&>F_WF6~A*%DMi;Ciyl+ zTP1mRcJ@`NUy_$ybvcQ%;V9P8joT;r0aIB9RY zjPg@NjIokh_FP`{hve&5+_o>7g0jzd>B@t)B1r403FZ9!{92#0gM))9RqH6ygdmS% zerIO~Y}`u1_@T7J!hjM6gL&^ZuDfiEa!Q}fxw|SHE0#l7Q@&7gV5;S?kAO-L&XwhY zt!*jM3wliAW^%%Z&E@yehSeE;8XPmsSOgoX{#V@_Ij#G*N*Om-9i&hf8kaK~x!hGW zfR&80--_RaB~A-}{ZcVlnIYu6gV&=)w56{(eE^kch#E0{IjuspfgvV!=q3aunn#gnTpO#GS9m`JHKZr6injq$86rNN%;^#)wmb)GA8HZU`bQHr?n zru?A{C?>-i`!99Ab|e}Ejv)-<5QdNF+rIlG#BKE|6yIejSl)F_9kY^&ksMsY=jiw>?i2fq#L^_PV7JObV~6l=4&fPR3(kXl3!=8Ag^ zJA=gKgOj7P(J_OimfxkByQttVpIJ@A3O&#B?JaaO|HRb0H^cBop1%gaXYXZc;dnHa z;y)+OtzliSsL8@&4U?wXiyI_h6cJsQ)G!4{IP@7rS_-Rt6n3yd1No^ z73DE3RipKJJ+o@i8^x{bb9(&yMG&9#;Iz4oUcP9eT~;j8z~xV?2QTX;=lE zmP)ZK#KMsh|Dd*X0QNGLo`;M9U$L)g%$~OTqPmtPB7Q8sbB}#`EI0>Hy$~Vi4dayL z1WH8R_KP;UUjXkJB;Kl8vO4g?9&I%*U7ipH(HtJE<@2ZDPU1}3?gSp`COt1k+$IoA zkM|uopTR6uJPcyK{znvxNO(wQvjVYeJWltrPA3nuJ%t%Px*3_3lan*Z_Q94aTKTs8 zm*Lns?i1DR;EdF&jM#QZ*u(@u<_Jly(dXm#DD;Zin5aP z7n2pP>;Q-@Q+XbF@XmO(?TcmdgzVhHdQZJW*ARVEmxZd@DfotyAQMiJnb(8>{^G;!_*%3!Pe2R}hbz zcg$wNo}PO{66;~*79eZt9)YSH9^K1K^SkZaGEdPV&wKuht$wYzWZrL?0BBFNQyFn* zXG_lzBq(d~%G*>U)PY4TCSa>QT^a$&>@GIjTZAi&zi9Wg9;SDkrA9uCV0v*Sb z8&Ev1FCWozL?$OhS$mpeZkYrabn~71>Gh+Iy_4QB3sy)U295{{u&?1n>{88!o_}ugJt$-3vXCEA=t~=1zPZOsJkYpp2Od8(p$}wQxgc{ z5Wi1<=sIxaaK^3t1InJ6EI~7`q|~SOtV7jqIEzPyHPHO(%eYt0B2R_@e})8&(f#{? zB|PawPS&0H%DW_TFFX>&|6lvw!y?4fGMjA5hRwgeQp7uD?l~fQjsIkG^K@g7(cfzA z`J?lGlq5j`I813Oo||%{sub9&LB>adq?Y^JMpKC54NlKr6hH7cJPXz*t*gEdTyuV~ zj@N7k9d3VwKC5e5Ux_ss0deayk*k+FGL#5oxto#61EmAr&v-oZ#t-)P_QaC%DX%WI z&E)i$Z=yGe4+(hacnz~WZ|r~Jsw9sSN9Dd%Q$AH%ry2e6RC!0*&<`^3%zkETHZ$)$@mwgU>cM zlan%Hs|KIH<9#TKtwiVbIaHXTw^y4{e!DqF7maYFN-ln4CayiFQOl6!k=yU~Ze`%D#SnU((Y{OU*&_ zRpV6?jgCc6jm#1WhB&LLl4RW{7#Jw~Jp&K$h*30AS~Se<{B3jH>+rI`mP{ao&XkC& zhPl)C{^R*2gQ{J>v1^=IEyxp6MmI68$G2NR5eAPGmWW${2A`qf3Nj|-LTqtr{dYjU z>f-#0rRRGM{0Ku8`z)O>->*NUwXUVSnFK2mf)fMl5~AN+cXg748-wHmRaIb{s`G%WA8_sv zifQ(itKg~&f7!gZ7Rny43X=a~HqF@?u1%X*J}=CyUZ15`4dQO!0hZrGIOqhyXFdkM z#EIcX#yza{t?zGN+t|!;V0Db7q@eGL`1Hf4Ov-#h+&?kqF`9ow-h`HpLgDd-}J{|Frx^B*aO1yruPY- zk$UPPLr+eQlL)Ys4D#=0ZAoGJCgILLEH(nlMfzs?sDwyf1Fc2ZRHd9%k5W;9<2JE{o_R^#p3wQwFG&67q zaY!!66r&g}i_E+N@rg>V>8vZBks=tNXdFsPT*)wV$Mg5vYUxd9mQB%WGm`fhAQD?dRDHi7z7PGpAmHN}Hy4y}EZ_zIIcW)`$ z0W~xyGb;Wb=frg|suQy8N5_;Ag9+fn!Ju?+Bn|h=t)ltq={E}}Xa4AnWjONoBCR3a z{p;-vH(C>Cq6T6<3$#Xk8LcO1H>QZNV8uISBwae5P*H{Cr*^e&e~uG{&Aoz1GZNnu zvTway_?#U7c*4KL_t>B+7T=5Fdq<+(hnWDNf9x@cNx}G4PXidZ3ZsA)t!Lp^eo@VD zYy%-)Qy%_P^cPh#ROyl?A|NTztZH!Xijk4gb;+QYWpdSkmtL4qy^3UB7Z3dCxuNFy zg#M!Bydv0C*+u+#TGa}VA-mAi>Lb5f=Eh9GJgP)(K&>9{fV-t%tnIog^S4jZ#(d2- zMxBK>aLaxi6R8rk+UM19zr-Jl#~~`{`7mF+;Y-_d3=1l=D9*e{DpUzfzqy_#~w|6tb%2LrO8VT-qU{SDWmGw zxCoVLxiBH|8c7`|i7U9LqPB#gXuc?jeA*YcNSX6>av?RzxbUfveT*qJ3;XFr6vP+r zT?TfDhT11=N*Mhu1hj}vZMK)iwXqVEh%kwE^P9=+Q;G33>RE7rtXt9E&MtpkTdN)^ zRXMDx0cIgkvoJNJfth}7DHOWsU*cAi#P5#_UXMu#!kNQ;I@4mNZtBRgBfNhJenM5I zP2CP{Fd$`Yia~`hsho=Dhc>jA&Y<@<6EN10Q57(^Q78MWsE3juJ2H8cbUz%sNRQqm zfuA)5EfmX(!`!!ojBXA=6ZA&9YT@-6=eA~#6Y`##+LwTsWE=+j>B06c=OKq-Qeg>n ze>rS8C3aIb*-{gX(SIc!^gEPGLB#G z5sWgo?Kms{ts6idY$c~{)5?2Rnj8kL-rKQy$r= zpmKBDKueg+IrVd2DxvQp+d-~@Isnho#bw_|f+)MX`sh8Qth<|A2D^FQPcQ^`vV-1F zOGrSqY+(uu3tjOZfwt~?n0Fg!A;I(d;u}za%888mr|nNG@DXQVl!}&LKt$8GI^3Fd z8&8iLsn70#;wV?-B*+7SL<@eHXR{KOV)!3Bj&5aa@@TOw4%Hy{u3uvmks==cBL;m( zG@1&NZA}HC-XI*NR^pS4qyorA33X$;r>>=07cByGZbekX>h+W4}PA9 zWn^79;JSJ7`T6;}=67*dDJt@xV8(X@S+M9*(?L2&`O!9sclLF9xb{D(vNgYNVuJ5L z0kI)}B0da+%;JLhks3d_{=9S|(!xUWZHwLozbc8Kf>Rrc@k8$+@wqq+(L!Sn6~7~% zxuD+=Kgef&zRK2TvaL&XV_VKroKM%xg4oiC{bP(`ahbsH_LQ_Vat^wuoo{t za%4SV`eOwDpg581yg2I?XL|YPg0d!DD`zwIUt&O#0@wcm(!u{f(n5~=O9Kn;U%n-| zml4nsVdo~KpV`^6n-JWZ6;;}6;RR{>{PEgchA9^gnAOKT>CJ9IAZW@{msMhfDY5Xjf zkCOBi&tHvlik&S#%WIABG3hO-);|zpI63Rx9NA2a+U(AhXhi)6qr;soSGDQkm=Ejn zx|(-;dg6`2s1t#F*WzO`fae1Hwa|4tVsq=Ej0{9^z;hBltrRP#YU(leL>%t@PL1_y z`KuK!@#~=?ReN09;9q&LBv9Nv&Rmo~88G^@rG*8sYGohE7vHRNwbW)sSf+j-hNQ>A8=eMcJOI|I=^sS-PN_yx>R`}-e;EdlaX}` zN)jEyEN0gF@f9er&VG!cCuO9H)I3vU?Jj|tsORop!|ZXfFR=-d0xoEB7H$ z;@=)$&eBh)aM!x`PrsM4Vu%3T|DNd?&ecT%4N=fzB(7MP>hRu-@n>_8eodQ1`*8l! zu9tC%-5Dax3SQyGbl*k*h7Mh}Etyf!O0@$r$^LT-VL znW#{nU?(niIK~{L^_V4dn(3u-_ZPX(1MfX1TDCOd4Uz%5C11o;12$y;Loz{Srn^v1 zq|Jd@pr3iEuVtW>tIS~71cw>30~AjdQ5s1Nz4rx zpBZ`r>}8E`jG@7XGfCZV>$9qLec0a4&I@reGjN*0-L-y##?*)k zfnpn;w|v3u`(pO))@x(ULpo-VbVJj&sXwN~nVQ=p`!SfZ z@2 zPYv-4A`dRGH*=SqnV(#<3Viz*ggsL?vGGqqq4aCEGaa3w;?7f@N$;@gQkP&&(OCm3 zcwB)_ZGD4-pQNsBPcQBJET3NcIU5N6=jzSmic*j2neUCoV-~|_7F(WPw%U-!d%m@| z*GnTI;ayR!+lDuKGia6h3%8qF&}9JYUA%4;_9s5uwFVXz?Bv!3aZ;Sm4K9?C`f&ER zGU`8)4aa#(?cj`CPf+y_SnJ;CU(qC;(3czY{fX+$bs+Svl+u-;T#y#RFUcgYdk2rQq5tfMa0$4eM*OZiS|WWnx7ll3rYK-<#HS(*n=g1fPW#aJbf&vPg>2-^|JWc^?I z+7fpM^;nG-INxQO`-vC61d1qqo|~`?wLGP`3H_W$f98`((hKrT3_ABi2^USA217Iq z;}@@JgexW57fooIw_n~SnVlRC@oaAEy(@|LLinv64-ShtOI&+l0>K^)(BSDK>P|T8 z{ZyVry|TzJiUSR9UO5iA|D?N9KHoSfBsCGb)i$yoO+F=Y$x@k9P2*DMk;K@Y+_0vWT zTT&6rWW)@goEh09I-BKZK_<+y%s`(R(E37sGP?6nSlpa=2yU(Od#uMT0(ZmeNl=ha z>3q}GMOmZw!Ik@TpKsVF%X`be49r??6a4XKtkIUaH$);f99WZ_lp~YNfPN3C!L;0)dE?HC5NrdO$F^a4nE<8OHk3G&gpSkwJ zv+T_BFlw|_B-jAp7$RMDK4qOR>v4=z$Jc|&m1o=2)y#jPO|qX9%!x~DN{)q$pg0*> zL!L%F0O4=k&!0aX0V~7`tdUY!*h<09($cbe>yNW7dl->OOq)hF20dDgwGqjOaA36- zLL6xymr=4h1Nrh0zYSP`aB7#VAa>MSagLlgw4d676(wOEI-D{ABk?f*(!PU<#Ej~D z6&+hrrb%|$rQ=mjEk&5;tQLXp?Y8Siu2R|gO_%CA&$2>h15TIfwh3vI5tQYN8&07d zVo0f<_XN-`c$UDuoNJX4FX}tj_5Q#>0+Gl(j>(zME!G81TJ)x(enI!&p#J|L%}5&0 ze5R*Am>aSjBP*L z+mHqmam!kQAD?7XeYmAyD`O@(jCrmfmj4t2OdYW(A0-8K29lJWJ$fFwQeK*0Llkc! zXY|PJUcD@1IP^+r5|8C-;J)j*&`C4?eRr#qw7u_4GGjyz8cxH>ar%B3`YUU-mS20= z^FY#izZ5c=QIC7WM~PQv!9FHW=7h1mr)>?G5!p6PmO^BEm)AwV zdwK8+xihYnrRIRU84&->iaq*UHt7+2n1re0c)4-eLoAB@q8^0Kz2-k1*zYtCcjwC+ z{v3>a5ymsg{NeAn2pquhq+_dt1vTh?3M~U62T^kn7yq#pY)5DQGoFway^E=C>n|~m z*mB|ub={6vDofDZrVDMoRhiqP=#4(g#THd%Pi(Fr89gwxwbh%)I`6Z9jOVw#AvhTf zrqP)2@$`mf$#}{vM4cZN#YjDQBmSv!GQ2W|c&P^W_A!$i_DHXJ2(bjdMUtCZixL17j<eEfAuxhdh*=4Bp?nB)lFRl(>_m*7Zt+5T7)ni`4Y;5uYgD zA8#ezjp3A}4|V%gZ77{Gd!=_qsso=J%@YLt-4o^CY`0Ogy0880F1nY|=Ub#!aEvg3EOFj@vXE(#n&U`_ z0rfZxH55L)(+0{a(x*D<7m+3ybtDvWfG`Gm!s}0N?~SCj>dlfK<5cq%q&nNZd6l$; zg^1WH7uuv^nLkci0kN1fl{QhoFo;d3m3Ko+34F&9D@DTp%$qzh*WTv6BSA*dtrCcr z#phSc73a1~ss_c2Zpk*{SS@U>SCki(`$Epg@2+AKr!xQQYY@1QLE!;< zBY5w91AKJYfb;p%9peDJ{)bND>8JT_?BZdX&s0eh+=J4~l;*}33jJkECXNQ;4}+#| zaq7Y9z8cKBNFHde%6@ha3hw5rc(4xaVG;8Hl^CTF+&P*eGdS1#Mirz+)XBVN`3yRq zksfnx-Bb!CPDlLb+SFTlQz_{^kFqW(tT@|4wrUn7<9zy-QvayVs(97S)N6Q_DJ?Dy zOS)Wk!!;Xr(y($}DcL0TRL=m$-SJGrz~nRD_sKUB5^kLaIVeeSGso;)c`9a#CwKoS;Q>_MKMetfbnnl0#JoRY4 z1i=HU37Wms%Q@=?D-kX2g&thzk-4<@n=H5~SY)!REMd6-9zLZ5d6NE3rh&zH)L!#@ zou!p~erM(PTtyu(3NFR>!I9;5=EXjgH$={s*NxJ_4HkWu(@Z<2dV1TzD8* zL}xZ9)6@hQsGMROnzRE)+^NvTGSb%aykq{iK89G}@76jt>pDM}E+;8X+r=E}IDjAP zQC`uG`P?GS_g%XsEaI=+Ec&j|2Sqe5BMwWP5cbdrehTh}5CIk8d}8HoS2lOXNzFP!JZZ&H=OM_F4 zK7Z`myW{n#DBk`o?B(J>6i8YaS$ryP^{L*}_CoodF<3!#??+9EUOS~n&V=dO33f@~ zh}?|RqbPJ945vHJZojAWTU>ZZ$7dW0=Jbv#P3t{2b%6Hv_Mj?`nv9JeP3 z%wcfK$go~qT!=$3B0yF}g_aMMpDQ+cIX?6J$8@}DnG}VQ!}{uKO6w-+DjMR?@BIAh zeJ(DpvOH8w#ajWVKyClm^LC$Fo%e1vDP9?tfT^DY0RaK_TaW8ypfA29B^C2JG#!tt z)1ZG2)UDS?>KDJ{)S^wk361FdQZd!)C#Khiha(C0MALJLdWs7ZTLxU2x&6Ki1c6b1 z4j}tBAw5x)vXK#EYHBI~Oixeu_4g}!d5JYOH37iU`bee=gupn^W6Z;#t-*8>0gLku zzH1zi?f!@mNddLBwRIiP(bfHum>3=$96UuS8=b2fcTbe69|MkfV{eZH_>rHV+uF(s za)@0A#wRA?%`JSv(c|P({d!0dq_+dfa{jY3Gc~dD{i6;$E61A?;=acP<6qwR@cxyp zlY6NTa$N)joF@+ujaNVOT;jn`d4Q7zAR!^)Re)t%;*0?Fu8xq_emghv^$+S5{IZOd&Bwb|WT!%Fmuf9%9huA38V^dCix% z_F6(bNuKb~>aYdu$Xz`W7XF-?8r9L!q3tXi$0n0H`Nh&G5Twh48A2eaq=dJot}Z7l zi^Ivt*mx#%OVgY1H0kam<&OO;GB#O6|A0c-Yinx@3JRWL9>?`C1x!p# zXoJONQBh#5BDzVH51R%7|NikxD#I@J$OCVw~Uia*XqRNQ84}s z8Z~1QYb-vH8WF@ji+XnimJ;B~Y=BBR2{XtD4BvnNg+c*A67Fk%>Q76@*-DNA@7Ay3 z1#V4b-UI|47I=>|T~GxE#z$Ml<*~5Ba#eVKH6d`0h6WUSG;3zc#!%;XKOkVlM9Lihi zN=r*YqM*LH7&kWwZXqft;4OHsT<7Cj09B5Gg+n5>mQq$K}Jjo02h^-Vidz^ZRTY6Ngh))MjM z%LZJ*GAR!e>H8I{+$N;;j2L2MB6c=l5N?iigSnkc+|K1V5MZiT$pS?s^ER;HHgbc^ z^l)SjSVlLC5}I_CpEudWgi64YmNa88jk*M~oFqFPkxq|FxZ7DtS*hCl+D2~${Y|5i zKy@u7_0Jr7u6vw&R)hy)54@shdo7aUxi!Ic3V);k?s%WB;4W68wHSB0Ft%AbmSzR()JHwpTiW2 z4q#caLiD`9TpdpP5p*4WXTRW7H$HtL27A1{Zi>|05VqH>BhU3AZOAWUE%zeVyYyl< z-=hQ1%m$wRXua$-Zbj|1c^0q&gBZ!YAe^O`BZ0GdeCCSD*UVH=QX()mHXa=vwY)sk zmbp32xFZ6Rbp-8(S!`@=Q|dug#nIVZ957EnYYn#ChiBA(Lj*dEn5d|$N1v^;vC6u` z>?jA^vjK$f&D04*Q9))&xeR-KY4eZ^S&ByPa*;SpZ8C|>nl-T84SR~*-_(T6 zkcKIGpUiuW&CEnyUIu_>Zh78o5wwe)`EsZ?Kg*#GWo^Ig-@OZc#USpz&k-~gB!A~7 zqo{yk((v%q?>~-?j)q6mqW#G7vu!4&%b!Z{mwY#48Q}8MFj!b{Fdk6(hEkYT3Q`({ z`HeBQ{D60gY^;=PzOr}aFB=fnIwJ9D;2&s@qg($~YS6QTc^_EM^U?sF8||59ODXyH z)Lj|mqJc$EgK}NAHa7D70|)Co^H*>Tjui630MgtQL7AJIt7P|EoRyVT-2b!!-2`t; za^ufKY_h~m$Q;`BuE?d*$6jUBqd!^-engfv-$*ih&lnXQ?K*9nlnqu9c328JnU@t| zqUreX0bZjjLiu+O7I3vkpe0-dnJA6thXX5lD;qjsR&+oBYKnbKAh^DO&*ko#Uwlmy z{@L9;JrQ{t@BfO-rO>gc<7W!-=))S#Yu;663{6V)x|B}vld56+d=ODI`<}PHAJ3kg zoBIS7i-6Tw4&;{T_>x4DBxVxi4YKxhU~+LWZnb08wKwpAX{tI2Ti`{n+!86WYAG;U zPtUW!x!gT01M}V$t7Pq1zol{a#fuj_JUsHcx)VR}PkkUazgq*a0uImP7bNvvyN$^= zWHbz#RFg+~JvLm0|DN}PUkbWsE-^8B(C?SUDQ?ML8!q-fZ-t!yp8fmG8)R8MRaaL6 zO#?^|^NINL=1hU1G~^(=-c#@Zv6Y3r9#k?t2T`zNP0cCcR@{`vQ~S!TXn5sm0(ynp zUq03uJALN9gGQkw%v}{webptI8*eF{V*CeI%5vN0NWMH(9zzo`gO1;!vZPAp=mD@!MNFDVVKwvb>IRsvJmH;S_n1r)-Nq^*JU<5--E5|-fMm{M z)gMbVZJc0L&BC9zk?LPQlLa#l-}yUkKgrcz1?eJ=-!A$f*~k$25`=l3Q+2D{tzVc) zfpqpT!Yi(thn4WZAk=7s0`f;h%_~XA^fd8crIwR|H zw}_$$0p(6=uEw43?CBS@L{XvtMbXRk`X>kbTL*y~W4)b9;i{|PE zt@kGe=)Hcuz3>>?khCss*4mnNI6Dlo`>=aS0aB1hC+M03*=C(A=PU|yuX?L&2LNEq ze$uo=isJVu0T2LX2lhKi*a3Vstcz3-9SCOMzI_0e$PC#YRt}2+1N=t!K;(hs#9<8( zg~)ne5h$&ueU7-qa8`OBSb<&}_{Vj+&)X)M5d#}Yq>`Cg`d5o?$_tc|)lz4ey}dm^ zp!JmyfS!sVgFZICyri!OVY4HxnPIsjp8P@QmO@rUiqG3TSr@#G0&f zPVE4gQ46^{IyyRF5uOcye4OVb^dfe)=V&%VEKiNJ4$bMOtBn&$=7^na#!jXqT!K;N zO>`ukSZPA&`@V0xQo5+FPl3yUJ_XZCm}pU9*7m-%8Qbd1j_(+A@xB6+ymaIwo0p z|GBXMu#8Eu6rdq*C&sxq(0dP!-VZ$6qEHe(20kKli;Ky@0%`U?HKJQiU{~8~ZGKagjr5W?Gum)+uuCYCJCBoXhoe z{}rwi#$cJ*?peP~ziL1!=fL_=$}9D<_<>c#okt(<76}xV?M+4`Z2tty0+CK;`NxL; z{hb9u!JGa&t#=@^JJ};iVmIslN;aAXybxA;m4o@Zh0%Z*{x(lV<28#FT}a@54dDEt z^$871IM`8cPokZGfS{nPOy%WEx*$WU+SvXgtLsouOyD)PTk?AF#FK&k{z1X*8gttV za6|C_g0DiOl~<*)Y%)>u9F}Z;X1x||#Q4F04PfwuICgkg;~0fX86Y7h9)-bfoy;IX zm9w+s25a9(-ZXVK!ZkrIICzd@W2dCNAvOaUf}cK7xEnb;3rI>yefj$JYYiq6e8kd_ z*rGC6*#g}0OzQ=EmXea<4Hgov#71w;9A1JGrP?Z_(|U1umL3a@#k_ZJJG+M;9OSd@ z$r^aZL`sN{Yn%YDju=TzWddvCY|RXGb*+gNa6t|vv}lVP+^*3Wlpn-8D-!D_fEqC7 z-7B`z*@haDAD`~Bn~+`ie1TQ@kR{-3a;Ba_@Er`%&woJeYlw5$0 zZmHyIgR3g{=g%INgBm0V+0@m^L7vk}9`W6f#XYgidQjQ;`1o9rCdS5tg;cmwKnrq^ zGznHN8dg{;%n6&7)PfZdLEzvVQMRYVR-99B8o>$gwJ?A@L>_=b9(#!}9+(Ls1Je+d z4ha57{{5f5_7kxn%5wn^c-X5s3kbp;K~5VTgg5xrble?_1v=cdfhbT{qSO zXM8zt?Q_mP&)#S6XO~32g`a3%khZhb^Q2}-m=(U#1VnS?0n+fvEOB9@?@8oEtw{1=+5 z7ppbfE+3Fy2iAI@56?s2ii(P=CcH9d%rV!&xEr(3Z|~kOUv9`}4XNGG!k)~aU3$7L$reni=#cIDt(AWC)akLrTKDtb?It!ziiTnpa}Fg)NkXAuZmTA5A5 zf=u7?rbBP3<}Hu*JEj|Cx1LsAL49k}>Ygi@mciz0%Y75s?crZJaJjp2>fNN~Y*^I$ zVxYAO=4NL0P1~!dSJjH76+E&L_?G0dHO%|T4(FI#89WzwyI|>I01wz`_npqb-9`$= zIXiB_rKPUF>JuY)tWjzz!tjKPTD3lL{*YtqUQ6A|!bb73{6OPHqk&G;J-+LH5=U43 zC1{6{Z~EIu^?OO8ah3-6uwyM8?Q}P`BU|1SI~5Ds&%6h>*;|_UwZspN;7^}uJ4G^H#RmpY32;J>NpS2IfO}K>r@GxNu!%jyZyj>uHRjL99!fb{^%SkBoJ3MPs+qEjxnoqL1?piUWQ;0E7aQ>C&Z3mGD-VwxyDgRGhfO ztQ1&mjbCRdH_IU#R}mn`fZ9qzF>P?R#7`rO`ku>0L$B36UQ->J*Mhh)xn<+w57 z8F_r-vrI;`Rm?9OuVmsQWikrCradqOcCVv&YGDpzO+4do7r(5b+$G9aqlmW1w`_zL zsNVbH)uO&!{Zos~<%_;A&g8n4&@_z$A#*ya{vUu2?VtQ(Sks>(raE1WhD?^W(vrXN2P=3HQ6hNn7hJ7CmHv{|K{-c>zQ_aUDpfb#`8v6Hyy-DN-THH9y>2!F0I)CTD!gaLOrjYp!2n?C8LPyR$riKQ6dh6L* zHC>J?E3kQnZgyUj!?oCse=w*e!;?v-zxa(Z*Z)eC`wz0De@T=6uYKNjd0>d?1T;gt z!y;X8$8LvDp+Xw%W%b;;pSC0rNm0Kra8N!9Ch(lxMOTZ|K9#lN1KCUvpjP6~AJ9Vb zegYwZbsH*i2CfZta!|`;%2-ss&{!Smx28r70Btn%%GySka06I3c^exp2sPz9JefiO zHPkJQs=0LOxP2L^K>*KTdoN$(=Eh$0@|bQ1NHGBIwhysjzq>IW5!H-5d2-(e-}sF0 zg7KG~zNqV3r#hDbN;O;ym%QlhG45nSAcQD>d8NZZjFs1O^?ISZ=5bw$$gH&^Vj_T5bURw}5tGWeMbm zo2P-a)s=$WoScV`shsPZp0j}LPiUI7Rq#ybRBg03O4BX$oOu8M!^R5Sb!S{nb@g2m zV|#?#hMeXuQvoe2O@|pQ-}AfGmdZ^Y9&(7EpP%Ze*R>F6LwKS9{*>Xg{g{^9)IF!e zP3`k+i$NNxuCDw^9|h39v&@xTiQ8<8@@!rd7vq|4B(e(D=BA<|BOXWjmbuJ z+%0lg$8VB?S|r^lZ*FmkySp*>8OVE#^4zpxXu5Z20`d&$0z7o_DOwJgSn_%itk4f;=(Mdk( z)%fRp+OkIMw}h+ne_+SLZ3}F~1T+v-joHB!ND*tDmVUVZs5|ttO9!7CU(f7ep6gl0 z*<=Ca-(~*!EB~R0A#PSh3j3^bD}FjCy?WfR$?gQM2LhdYPT*xt!tc>ba6D$-rp1Y? z@~)e*`;%4ftJ^nP5<(EmKFk^`qBM|iO-b%Pt_CJPb@YVhMe1OqXEqf3D;E(pVfPnew-&BaalFt0ta@y1nF-@`?R z-3nU2tU}+LV105znG(NHAyh%isA;?1WyU#3`H(j49q=4)!yN>7>V5ta>T&m}frj=K zXt$-G&qf+6X)tqR*2742_PZCcqL6&vY5SP4lT?%h{XHRxG7nCa-7lBGho7 zqR<-BcDY5;5jlKB+ovZ^g_x7LG7SGTW%aGbOg7}&{v=B(LGt0kI$xiH9glzdyT?V> zz?%4aqznj?_qX;#)*|Fbi7VD6&7LUh?h@TbPZ8Ix$+!cw>p2qK>GcutIK@^$r_j&rU3@t=rB{_WL1gj9Ys!xw*JK zIN;;wWT<}F+=#8Vn^JtIGSPnBZ8{d*066tme2`6p{Y`VrO&KshUv*>yHlu_Qq3@Rl zf-dEOT_7kVw6}`H5zTrzzz#M1Y-i^hS3lE7fj-+q`!%J1!Z?(`fJfRpd&5}IbN$*1 z;)lW044E`=@p3}Q)ZF}n?6k~aYaK3N{P3p_pO+F%&Jran@21bvx-KiC*Y^c84wupB z937omcZ#!c6?;uFp~s7>c17;3 zGDTxI)uuG7W_3HB1Qijo6jWLVz9asrayv$r^>@12N0su4%@d4(7rO;V{r8sCi66dm zC7K43l0r#vw}Bp0nbWi#2~vowUVU(Cg2d**g|UvBmi0G^ML1l|F}XN3o@xkLC-%%? zkFhrEx6)Q)AC^x~FZYCRMB~DQbHG+>PXCXMsUb;il>US>Im!@!!)wbwh>s-$J4o2- zy*IXUKTCVCDMt^X&R%ji{i}j z-VZ5nt=>?iN!!aVYZ^X23Io4|inL6;xK}a?KG2P2iZkhl*(akcDcxVAyUC6v9)|Ti zswKIM$ooc=kC!5_WZQq%!_Sh59dY<(X+|mO<{L&YG|+Xt_mLl^TQpwR&o+9t7R^)r zp5dbeA>EqIet@yyB_Et~J4aJ9=6xsh`^XP4FKt_~;NLp1Yt9nEql}heSIM9*F7nf; zR0|&QpH_SQEgmJ3g;T)ArEP&kMu%qo4Wv(QQQQtr9s|-ZmzRcE{%})u_J+qDg9+#TRFL@jv={|stC@I{hRrxXL!UsKL!Td3Ef=!@%daTC3?>~=V zfjt&#El0Iqmz0rVc5-rZM<12^{6I#EAl1abTaN+ne3=M2;*yhgVRMp5s@k{A3JqG7 zvfr9tqa;0U1NJpkhE;P6t(NwDZ4+p zO2`mg(E<9*DnN?cJg%XU5eGK<3ll8)oOCE(1@w^GC(+EvKHis+GaEk(na)zhhp-228pY2z5*-$w8~ zc>S6o9g8WL^sh`X@aPuyvG>%~WdyOZ6X#+Yu55SO5}~~zAyG6Jf~T#F(YR!uo)q2O zaOju4wl1-C6*W4HSLm~^)X|BDF!Ym7_gJAHHl{mzbLXd|#q`9o}4?m8_n_#Ke4dsn_4l(XH~dPO)XVd(mG&a&HAK#5gC z3;o$oB*k&UC@GZQQMO2Rr3=PjM`hnd$=X2$e0-ch zdyF6uDb~JtZxanM5tM>TtOrao-m<#s9_BJ1J`S5cvGzWBNy?C-Q|7#yqr+ZXmUqq2 zcl4&dF3#P6ML+)`^UbZRG{%RN)yAag z4Ow%X5!WnNYUGCxSJpG2%)FAPFq&jL6;AGs&D%Sfl}!fRPd+Ge`46Byukw1(?p!nY z#kWMqt4J^3dqAOq&qPiUj)K?fG>`HW>9?dB@K26=|NCC%dZZ%Fi?2;h28u2Ri-^x0H@?bR4NSpRf*Bx%$24*Cx=MVZIq3-SRuSMVuF@%F{s~5ju7wX*MfrH z5!?Fo?lHbD2fuPPuT8iLe+gc^3eY1Oy2#5R;{9jE)noW-XVkSAk}8!x&VYH(A@PMK zGTYw_M$UpQUF(#+kS^GR+4DHUpJg9GoW{JH@9(zh?p&RTwg?NCL#mNyyL*%cqK+ya zp<}dgM68?BuW9)_Xmg8X?d8^U16-3k7i z>pk{CAS1g^oCn{^5sY>{J^pOog4DYdm+< z7!}p`oNt{kLdi|GOOmo=L*j0cMzBO5>;iK|uc!fjr%`paOt984rNx7OEaO#^&=nL* zIC?=j*LGjv8JW2a(j-*GX9G7#XRLxVMdKVEbaLLOA~^qvU<#Hdj$$PaJpXCxiNRz4 z`>XLK!Ir-oP{}LbCrtdiLFk&aPl#scP@KccTadK6HteRw;6MH@2M&>avL3 z$q^c?{-|JBVirI9=>2kB{hT@Eh+#`W4bxjr^<TrwjIryIYzupXjI|k`SVyTJ(d$ZDNqDAx`Jr=Vz2Zru!SVGFAUCdaNM@J zS7cYD!{ym%a7U3Fa3wA7dNx9t7J=VSt}Vr0>*aE5?oaLU*=jx>AQeuFY(|HSVbe8A zuCmeCVH};@bw;t#@gyrNnh_5*xDictX_3xRzh+@h6T&L191c4}lepX*-LT8y)xNdj zQJ!^p@^Av@eXcGxuK2Ss5pE8FmtMG)^%~22n%;XvMHriV$=~S8ERiAMS=m|ivIoli zV$H@<<;L1?)^Eng#C&e_TSAEmr*W0ksoUUy$NNq;|M?TIZEg}!NmKXrm(al-P3Y6{ zu(S2Hz0n`!G_IWuSAaume=}vQr zU51!L`c>*amF%2RQj2mqAwQ_{Xgc)$%7N(+(TjGE-?C|kzSh3X?#h7SQ1&`@6<+gb z3ulN!uxO2aRfc@JfV2Ouofr6i{v>@_>GlyofPE~`mb930ri8Ti0p6&ihFFcw&gx2j zS5UY5%ybk_O&V7fjx_x&bU8bUaL~e=D?g=b>w8|-w?rd*K_J7}kBRyJ%@(jZ!MQdEf-k6d(V*N7>9INxc~V+h+M`F02LH=bpfSE% zjl=5%(IgPq@tU1FNFTvAySH}snLj6`JwEZ2Vz#UAH)o6|Vb&m#w~AF2Y4DH7%>2QS zLHT!zOW+R|94XwHK4H08=;^259%X{uLSvfR${!rJgMWWDeaF~B%GXeuu@1zZVBVw{ z2x4!@w}TO4{LG}ElT|0c#t)@2`x)kFZikk-SkS<2FO8OS8hWZSfV8+5&6F!g^EI?b7A2I?MJd14&Ib(M||-CiTsT9-(Al% z2n8q6dTbr@GAEY-OV%X;p+<#x_n7ICp&OppM*A_wAHJM|0m_+-*Y{-0;vVMV)H9){ z2BN}$pVUQ~C)7sJHjr(VfDDOXL=-Z7A1Isrz}mzJl|mhgGtc@zI3MDV&(VJTN>|(SJ5=#}407`Eg^=yv-qYVe=4?kkvr7Jt}o(c;B^~G$r-dCNa6xy>ba^FDhIn+h4A%frYX{W z2&jxZUO#^**BABk*Q&Orw6pVbIl!whXyMjb9ZCa+mz;7a3a2 z*%NwdSv-3^;0xgE7=hBWw(<%eXavs*g?e3Ha`T%42!F~=G6eItXp8oF*>Ac`5AGtvsU@l)xCeqRSn^ zpW?Wen8#?d%UxjE)c>PF@#cB+bk26cmdqgn|3y{yBXU`MW28+GS`KsLf;7`qXmhD1g4HRT(VxhRru%B zDjlsK{jwqLwo3(w$l%K~Dj5?iLa9S!nxr-~=8T4o+wZG!B+I29qVXo?gyYI8(wXbw z*_YWegDlaRRvn>htjSH53<5Xrg=X_5D@KG;fO}P7;7ddm}|H@N%SJ zbZp0?0z4X&8RdoF4CZ~J0_yZuA}yIsoA>?o+JEdze_=3U)%vKb`=zNTol!lSD+qLC z$i}*Llo-J%@Xuk`Bf>ti{UexPlfnZ1 zQvt$a9xsa7N8PJv^S(Q7c?@bs{jhO;BCrExJ_?*kl3%i?@hjng!G{m zc5hSOJ@~s#Vl$l2Fl(1AhYlYRFHPj|b;;RB$ow6Z#T0Q4M?LvXdVZn4Ij@x2=kCGJ zBLe>Wb?7S|oL^>`(VmeEmoiV_{yl&mAFlYpx3+t;JQ5)*kXTd{ePisPUD`asu7NPD z)z;33tSp;lTcF-{N#tL&g>j6YFk>tUFy`0QWsxgf5Ao{bo${u*8ZlZ# zxYw5do(!`0UNeG422|7c_rl<>Ab#W~fpW90!;4eDqp6&7xXcy-G`%YuIih9n`Pgo0 zHQ~Tv>2HKq)S*qnDY4a?d+4`UoL9IcRE0CkI30PSDF})0OKKWneqK;1uCIgf(n>1yLxc#4jRO`@&XdBi;}~3Btnjdcgb1c5!p&;0@Fg zgd+cCJP&A?rDg8xHrE$C*JUnlx*&S|6nZhdN;h?6AnaRXza<$~^Em2n@TDx6j^A~G z^%nEvGVc#!NoHTaS?wq+X^Pay+ThS#ivM6g{$6*AtE8V9oS35vwZ?FQ3H{<+23~v& z%`*-e`Bk_9JAHNKUD5*f@`-(>pbZC}BPEemKAcoY|2j7 zFZp=!f}LzOhUP{6=T(P0$A!=T0fK$tSvoJ|DyDV=9GI6-Y--`VdWp$yFVoi|$s7RB z{=_n>C3U9pJ-FC6I)P$J==9K=#@Lg3__fo|N^OW$1*XT8Id(413bL}?Yj>ElzKgM? z@mN{PQv16N4~qaKxO1DFoQ`z<+rb-vs{qf$az`rFu%xsM-U*S7Kk$eoHwQl)D*#blxx~pZ)!T0bLx7BK3=W!Vb)p;`-!jA-g5rAVh z-)SpWB}%KN3+z^RI(qsdZpYc`UG-nc9vsd%CnC{SIsg%wh+#XOG z?4z0MLhSoQ2ph*9NC2l&=Z!X#ys6=LDwI9F{&+2cFW0%9lP7Vp#scVR78T9$>Wr83 zmf^HOhRGyPm3tK)npBzlp15X3CR#Rie-ppC-CdJ`8rPd1ZTXtKo5f>LiSTtEFSncQ<;D~ADE%ji9b!N+rO-@FU17Ro^9u>Kc{WMk-JRw zeJ|*2?7fh*n8EOH_YHjTkW*QQPK$+aW9(eK>V*H(otG*Gs2ah{o$q?Vo;18DBJIN@ zmOQ!2qx?(ArhU=ws*Kt`t{3=uX+pesP8As-K%Q}Cx=4{bmiE2krqCKOiS(V$*^Z1 zIm}r*w-n7EpwM%5+-JUXb!5jIc1tLfH_COcoIco%bC>d>|AIi;^D4s={p^H(SMkzO zB)NcxF`@btvv8iG+4-6MJtXyWZqBcFYmyn-QK++`Y(-ts_Fam1MFxCS5xr}PKq(d# z)(HfqB_;S@f0-sORKkb66)(TLDv`Sb1U@!);4(MWpRjkjvYf1Ziib1G5P&yg$i zxO@0;L8D~7KRaHNL)mn*UrNCsuP=CMV);fH&L@$(TWB(qUQBiV7FApPqSW~a*fM$- zbFZ2X15nS(Q*)#Q*8`|`(JrWQ-M9yuz`&?g%8#A%*$WZ4k&ndzZ! z!`irZ_I7mMuY-pc@-m`);ru#=zb!PIOFBO!#!n^0rI%5mTK5wkKQs|Bm_6lcXhx}> zZLRoO2Ghm3%}(oWZ*O$S=MuVeLrjHghT;DEP(#WriE71*<_me? z>AdggTZ)VHE6+!0D~g!}@b3Ij?qw4Dy7ZGjBeN;d zWjU1oS<;H8-{zcIlu1QS0R#mvdpYZa5{9MQ({32gClKY;W8 z3Q?I#TO8YuTj~>?&rYqxZ9Q}EYnNJE(qH>8cWyL#d9Rm@H-zh9%;T@+;a?7ipPl^K zvAL?p(Dbal5&MMIOv6$yax^&p!WwD{**p><_OS0MV^K*6a*ZC0=0>ts{<96D<&8jI zB;%cG>V;M`;YIp&GJQ;jAX92$P}#kT@AU=L_2k?EgGd%K2E8FWtBLjEfmcXMADYld z>@RS~`tc{f(F+mTwNK5-i?QPkOg9)D^?kZDf1NxO{DSV@DevPzP+ACAxrm6U+c=`S zSC)x~{E-8qc^C!iyYcsSfzvz*ow>IhYDOja@84NJ6c_GCn?68A&zU8u7PAakS|e{E z<~O4IdoO3=A^Jy(5}dG${#;JdEbcV+hDm7jy?LiQ6q^MJIq=6o-7W9KMxrwOhKI>o zK3DY!Qaxera9$ChClULIE)P88Ptu^rpFco*c8k!ov@VUX%nDmF4IQjo$g@86lpoH? zxEvsUa`_2M2ioYSD3wZvuOh+XZ}U@ zCW2is_l|jXK|md#=zKmt@f_>sD=JGYz%NXHn~E*&++V!bOKR`_Sus`uvg2>-KW5D$ zF#c)`(6yn#?%9VRCE-ZFT6&fU-T+oKRgM8Z)d%t@8Z_O3z!iLFZ~A#lK`nAeVJf7P zSr$tuoe9~w+qJ_}Z(=tfxa_BqNXw9HVRu|4Jp)@(tF?btfL1gYqs$%Ykx2UUJFznb=?ioZ=Nt9JTXk7E9#!Chg(R7=Wz-jr}>yWaeCk&Mjq*p@E# z++`X9Lr2G7UdndM&}M^&Qc*nZYwZXU$xbn(5NjkNnsDF`#;Q2p{L2HG@s9_RZkX~Y zQNMbRfs?SJ3MJ5y>?=-vcgmgoZ`f!x~w#_un&SwT=ed=C5d zSyrf-gg3RAeoj$r@T^X-nNT|(yZ5h?G4MF}Pd_uk!@vEERPAs7Z+I8~6UzNx^@C3B zo&9PAlNw?!ba)m)zIx2hmF{vINe6+dEXEHG2~?2Jwr*(X=v;!d)EXY>km<2NAZWA- z1?nD5mMi=CFqvDDU#wXCewsZ@2kFIR1cdwjp;SROa_}1AatnzdsXu4Df1%gJnAqGR z*o(O@JiQ}`?pMKM&-jJX^S@u@E-`)rOM8Uu4{cT6(#o;+yVjeMifG2M6(-zIsgJz< z{llk6J0ue4h>;Ki3&VIx5z*i7&np(UKmV@e%R;+pHrU)n9v4!#?4_NS3bh=Wf2{xr zPwUs+_tZueOOG9%L zWG0-yn<_{sI2P4D2XR%V$PE)ZZh#}fOO9VWp-+^!eG$A|x0kA3i@(giq_ff`-XCyc zfjq$jz8~yzsA8GDv7Px@Ox0-|n=_AEQV(H;3d@82zE3U+dbK!N?X9urc-AT^3TUyyQ9bWyU`KjXNMO+BLENehG z%h#6GP8m5%I4!PcxZHHoxB&d0b55O^Ms&?>{p^r1p18OG5jEx5JTM`Yqg7kBi=VD* zk9!IIqDRzy{c=D2m969HllArBZpYy#)DuCgJ`t0XI_DL@s;g;0Vr25=emER4W&sXV zR*nqX-V*aTJC2>7+QIBjsmqZ35wFz%(X=2e{lVk|R~lFSo_qh`$RRsQh{YZogR=F5 zc+#1_iZ2Z=uD2eR=nAvlb5;tgmg%Gq@q01Gm>l_=J(>k}#oKGTFJr0UWR-rFQi`H@ z)Vq)|&qVQE<-1Mp%^9(@t`65#fn8UDx-FFBN0BY0&rexopAr1i^TecNAlQlNd`#G} z3IdH)N-7 zpf+Ie289012P3`GVXtPVJuU(GjXzl3Gq(C;jFPtdNXjp;mJDhhKh79Gh|$B>OBVof~feICErobC4Z5wkrxZo8WDNKeWD=$OVfm zJBcS!Y0PS+1_TR0F==U$XJ_6JDBLBJKI_KQgd5Se1gTtr?K$xuBQ%)9QvE~J1DK&dftD9a!9zymt4)Wa=X}MFw7iC2ZGj9|ED<}$n z&#B&r4fL6<7P~7eCg(_>bOL=-b*Em`G%10(VXc9l@1BF=N~L?&?bBEZ9)n^05lRAd zZE$<3jemWZf6x8>bIVW#m^gDPsw~?J!Tn%n=wVIqXE7X(vmbqewX#oER?2~#dqw|5 zn1J+R<~}T4RZgzoOG*aU0#DfQm-i{03;_P)2GcIIM2>-+t< zB>6_X6(9zc0?N^h(W6TM4EXdd%9h1-lDtk49Txv=77}grP3b8XS>%Fi|L&i{eb8Iu zSeNiO7$AGCTHEUz8ykb=CGtWY<^66z(1fJ(6a+DZtRPn1v|f_Rzt=c6J%9j|pm}LM z<^nq4_M}Kl(~9}lS^wv zP3e!4#sZXtBC@fDNAG;zm?_dEG8!5>3vK4*P1=AEzJq&4=_vX9I&S+Zq2;UQsw$C6 z5`oep*NQ)r#FL9nHf;3=GaA|-AKQTJA1UVO7k25Wx6k!yY7{D%0#ei_R^cM4Pjki& z%}dw65Sq2-zd6)AyOLybld-Uw8GGB2E;t2Fg@M2DG1!J=dpm$zeJv7oZmbK{a(9^! zo~5>T3a2iS^+KvZ8KXo*lE=9uB*^^ZFN#tFr+`Sa6g%63xw^w!xcE{;=;_Z9M9MbE zmhFdn3tIsVK&KlYrr7nY8G~{72j}*exDWh$PEG{NbteFgJu8wHBZkRJ`_Kpy`uCjJ z(VWS>C)-jfcyyJb+MTO-As2dWoCtsv56{Jq2d2} znAW`6Cx)1}Gg4Ji7@Z!8*{mt7TWjd?`1xg0PFYyrTU(Dq=rrZGk~)RQ1Cv3Agm2^r zB_(#wH3H(N1Ager^9B?AuVo6~;R+f@WNuMlypKByBnPs1lN?hvir#76OoRgk!WGg!NL;7sIOdI?BM|`2$6l8(5yTb zt7o6J4I`NzYeqz}5Ph-*GIA4MY{A2DjVg$o%yC-bRGX`yGR<>I@UW9{Z`p$z=qMl1aj;j zMab9e1ObGzG`*T3mVwu@LMg_DU-Yqvg+l0{lMVz0kX0;dJ560G+CoTwe@buLsEm2^ z;~&heb%-$|gVHfe73xdc>A!zX;_^gm1jjv-(6MyIO@a3*^Zq=ZHI0vr&u*lRG#s72 zu*Hdrj8u=%ssw(;SIK)!tbe<3t;)Q2^a;Din~pN~>Rq_-{r`NEPOKT==?*2o&jQWc zeQ;>=U}C3-2N-LMm0ViQ@RNaz(CtLuI@PQ5BGNool0w77@gdupx|dU;Ac*y^x{I!x z<2O1(<{$V*u481d0vveNFjuvf6KP&fI;tHC1-f-XDf-RJJS5NKK8{Tk38{qS_W5=XV#{ zLF%E1ir;=nO5C-YA|pw+Z4f8G))%=0s!Wz{_qbe&RtX*po6;yf&wC%qRfGJaWzdhN zTtT_F3+EL8_ICVmx?uu(K-8knE6Q8RPn47%cza8M#3(?dKq%WtQSC6tJDSLQiWL;~ zK?A>h06tMA$~@)OUVF>e#~&f6-fbt|JTQUdyOzPO9}IedI4X%)ZsDJuchAA$6kXMuI~$CQv7o1tcm8SQi7r-`rHB&6aeFU<#?E@RoGaK6Et-y#2*BV__A zTW0~9Ab47e>gAOF;M!X8^V-upMSuWS37V@H zMB)MQcFyqop{$4a5J<7Z%QYY8rq%<4!)chSYhlm*nZ7>HC;=SiAR~zydH$+O=R935 z)pgPeP)KxwqIN1mp8?&dKLV)$V(~wG{J7vKUh2I1bU1RY2-XlcVJn(w_f}yEd33th zHw=FSKLfl4LZkX~@*;4Yo&ls?Cjusy#`# z$;PA7`!t;se?7dU`~Vf9Q}-hL9pfC(9Hw8t-GIRigH4G6NqRCf#6!WHu&~x|VfU_X zla6%g%ohaKTNA2Jv+Ejq19lCeOvR0V-Rbtq-#$pwI!0^>HB+*XVfc;sr){fhYHSp# z&jU0-LXuox38+Eo=^z;1lfD!p|(`Gm*bGkeZ832jh93#RK*cXY^%eTbO5Dj0wk zJF|@-W(e@55&|~RS79F*8G6 zGZp#xBRhGX-m6>?HQVD@KLe_3fZ5ex{^sL{5B%06oOb$vFJ#(Y40JyEaI`#NqySHK znT3T?w!bajo?B!Yy}BX>!fV09-@q6P_kPsl9=3ibMl~3*l0&OExI^Th97#?PV^u}* z*G+iC6^2*Y#h$8FayzCbl2arve%YY3_J`+9mYh4ig)%CxQ`j-$4)7rGrT;CqD7&ka z`>O%2zSR%w*_85;O~DX8XKj7%C+`o9CaCso)X@vxU%Y*($+I5r9mcNuTTOOD(d~chCJD@LxnKzaZ-J-BO1|i*SoUoE(I!%-gkBu0#l<51pnJj zfn3n@FX!p0poGAAsm#ZLYT{{6w`xKE0K9i&3IwQBsfU8pQ*cxcg>si-wwgpd{r$I0yleDL>=_#1#;OW4btatA8JoAwTlpW`V$2BzK_v5XU{*48w zwg-s{oLpQV^GP9)@SO;@-w$QDxJZG2A-LvyXoA29>aguP@qCsuyc6WRPx-=F(!6-5 z1E390uc{9OS&p1xuG2taQV=|-t`AyC>|TEs?2Bai#Z3h(mdqy`-37Zz=i70?$&_k_ zeGRWWTm%m!&c@F|80~$e%v)UAJ59w|rc2%md1E5zSaZl^M`(pgn4Hr31POd?vF+q; z&+5J3*~H+ditEYso&|^Z$kOm?KbM~Gj)E<|@{(d(uAxZFzvy`0=s`1&p2Hc`wgF5cEO-#uQ6HaR=qQ|x`W zobI*Vnk-^-eu$DGf$Y5I@GZ$_NWw0OfE@%Z=#*;&W$p;F)QgHdR@}fj+3O+gJ4Ysu zPj$1`Ro;9toQUNf1Izyci#SNNIqx+X?gW10^n3sn6_GFcD#qa#dc96-v$6XwBUUSQ znha)tCSL*5!URmF03_vpHB1WVU2a?HU-3T18^O65{}E8vQ`~)#qPq~h-=6o}sr$Oy zXK*Dzb|neTA5J+u1d-d@wM!J<;x2cg(HMr87xqBoJkl{t9X_5r{V$$-e8?L1+k7bH-WD4%p&%;e8*6-B3AO}&9e9u}o=#8@wRM^h z>bX@v-ioH&)^x;THXcekJkPy6yujx} zEEf!pudJEL4j=UPe_$?CcEXcPCYsxkKkTQtpPc>8Vk}+S{Z9|a0?M;$(+dEX1_M5gBAs{7xwx{fAl~mr zVsDaF$hbJU6Q()?M0=ZInKIRJIDOqjn1N@Xk=twBryhU#i5DUInn$8tg9l;ixweBH z#RyXMY&Ok&N#1r8l36nmP7Go8B!(&@R?k(K>y}QTPL)!&EzEr^pgB1}24C9Zkf{?e zAOU)*p!S89c1jqxbZ`iZFJ1FVzr*=Uf_llX1~w&bU>v$+8}cQ%N|z#Z%fRoDBu*ou z&i$Qjk1vRy4{1ma@Qs<$b!hq~&O~wSEz^LCvwGEn-g5>CjgI0>?#TX{2k5!J0RNqa z{U~j9%)FVJh+tQvylh5*uOli*NmEnv$L3XYR%@ABbZZPYLHgKXJLyoBF4}(-gx(uTeK%7vS7#c z)k)>@)!>lMEA0uXWG8ZSgdvo{Lew%B=`%>qA&rjcy<`lZGnI~bk<(IFQZ_9`8Hg%l z3cC=}8CW|XK?PR7qKgy+j#6;N5Ig@Guz1bnExHDg1i?+&#%{pv0YUlq>c3*un@5rF zP)(=GDTGCTnsJPc1)3p!KLoTQ6a{v+%Xf!;{@MjH{U>0GzdNI5U?%6^pelS>p?ZL^ zfa~)$SlC4Duncy9icLjm9=w0{+S-Dl_vIeTAL&GH0Fz%!rS(`rTl(Ap)tOIKhG|b( z8H5ZWAM>3wx7neU3=!&@De{EgYkwH*x*{1ZlJTOePo!P;&HF<=gYbv@Iv9y9C(lss z^nb)!-#b!UH}1$B5VE}cDQd6)0%Oc=!Udp}46hLsh@BE^bytY^D|SlYD{PR>Rj7&B z_}1D(hEEnNw6ER{Uo&C*O}$kj9~F$1jUMkmV_3A@_)mWX7BT*isV{jsH)iQyQxMp- z%Z&dK%pOeo@8;3}OA+e-6DDx=(#bc*ZgG03!Lcukj&WeGOsc07ng^EShOD zAlvtr>4vj^>um@iGQJrEvIt7*%qm00Eo9y?mN|+8lU4MfekVfQdU!PLO}y ztbtu4JvrY^tbnOb5#;Y9E&c1Bna79l<%@7eDBshw(hTECZ`X=S3AEdOcD3WqB~QAb zggh02G3&T&`1?_;+wE(D1uprAO*KbP?6jK=x?sk|EX2YPboKUS|Lgvg5iStK9skA( z&9s`hpVTi(4p9-0SR?yu_rgNWTa0@Mp<|5K*O^b}>xvLuirT5Q8B?TNV?AXKPbY^! z;k(wT>yo98tq5@}`~oMrnwY3!Uj0P^Q+I=%qNBgyq~Z!nA$=klmN#g&rnMw+B@_nHUE zsm+(>j#AIcLjIF<<|1u>ZqY7r@N_Mhkv%-~ZC8oGM*HzcVA+17r6ay@9CtJ4a5@rQ zaMb3$fn2<*FsVRQfGKG{ArBrByHO0+qJ#_`i>^mhJy81~H+DxUwKCfyG}RbUAn$Gex+3t~vU=Al3?cw2wQ-Q1Ukh-|(yxZ2cfK&-97k zRO3P1B#+nZ#_?^?l`$@TG!C^g9H^h&biERkVM5el&P{-Sc|q#?Ulx+A>aZ`3QRtl0=AS+8IG8;?Qx50&(*CRDnJDJ2XD4YpEnBWjL4H4c zxL;#0t_mgezB}{7Rv3~AlEsXVpHV9Rj<-nJ4KXvpWBpAzk_!u6e$2a4t~F1*(M3`M z1V*uNVZOxR94eCGf|zn~c+R|m&9DpAC3*`AQIUs)vonadc+l^1hIsr)e7 zpdSr|T_Nha_nGtkeSJ{Mw*T|!F5?Gxe1gs0Q@0j#NovK6ec82BxrqB+6hpg z>t`tHXPBJ~&y8VKyKsQd<;pY7QhsUyzEI#Eros0EBoN&IPK&5uH}>2IfBiCc*Ep;q zFDV18PCTa#c2lCME@Rrk|6I6rY43Ag-Q*xQzdp{VV-dwSi?a*6P=DoQP^N1>I`*_# zMXeOE+MefHzpyGrg~n2uh^L?8oJJup`u5m#X48og!;-TBH^+1I27>Ha=7W|be#e{) zMf<)5gg<9|{(*iNQf*Pj!((q9ZozrKXJ?dq9Dde#(AldAt@GdMKep8AwGy{YVQfyE zmjLd5i7}Eg3GyR=fGFpmT~&brD{E?y_`%Q-4AMJvB#o+uR3DFA^pA|LbL`FHaX)1q zB}f^NM_fhU}C+2?ixF7liiDLeZn-wvKu z5%t2+&Y-bCGSa~MqWZA^N{Ro7!#h)$!U&mZN;ONeZotK^HLmX#{x2OUHtJiXTuM#* zFYGhDTVx7piG_a_7ZUNg?Ixq;5_bcA6Xv~4rS+5<;`@}`9JHKDghV8PVIJVIK_ zJNvED|Ilj0O%Wa&83~Ij3@N+C_Xjs}IO1T%3`Vj%{su`O`l@NK&QDlmC;))1QKb;g*M^zX-LB|Y!q!IOY0eG59|~FknDn}Jr6sXm8GmR8y!poj24sO3yil3~oN%v?5>Bv}l0oKk*$Gls|D&R;_F?GP zA8~bcjrpRQ;?A?3zJzqVdyey};>({NwrEk(*(m5D_rv-EB#ayHz`FohmCn@c>};`_ zz66L*a7>js= zaWXaZW5b|V1rn3+R#qLlz-;j27`NROqA?C^41jFI0_A+0t9doHaVFd}<3Z=mT(!7& z1%gdD+;J?`b`%_rYlAnG6Z!FA=%Hxk9*E=iZ9M1-^(mI5hbi`lqzhP8ikc!g9G<6JT+jVDPk-M0Mb56Lp-dx%&v(;V{+^i29WiXu4H0sG+OY#BeqE`nezcy9 z43Jj9ipCw6Qcs`G^}t0YqRzRC=HZm)8I8XV6y$@x@0xKHt|u8)yF;?`;al0J{yaGa zH?5~?@G6$+44>8_GZN%-*$cDgngmfH!TPnqBUf>!bMEs2MCaf;ZS6~NUz5-2?pjv#;&j-h zygclqhX2;wdq*|(M2(_B1XKi61StZdSdgYvsj&+JA|0dzq<4`j5Q3nf(xgalN|WAu z35bA7uc7xMgb*M=NJ5f3{C?m4*8S^#_uhBkTW>8E=bSlnCNq0x_Uyjl8mBI@(;*C` z+1vZ_mRZW4fh7Z>+{4Rjvd=DeM9gMAMR9^Nyu5*M8-afPkQ;oI`8G#W zljyM6*cmhWYU~3I--as*Z`C{QYwu2TDAw!8(`_2UIB z{>0KIS-ZK3ttgKUXIh&r26nkZ&Z&#gaC}SvTdLcu@{B}_=c57pmlm9S+}47vC+(SZ zLKQCt>lS{a9xuaoSPhlyf5J8P z73~k(%FAlEf3p`NC&%hbTIYtoN+#~+F@Bh$Du&J1SM@~s_dJ(YTL0nUkgQoQDP>QF zo|_xu-`1Dtx5=1zk**Jc^?xQ_K8)LT_w=-b%n$MiWoer^?-H0X6TKMMNxkfBwixhp(ZUtlp8VcQ`Ay#>W7+4KfIk9}A~xd7SO z*_2X8mQX%NDr=0E^NTYypMIz}I&D@+`~E$WW?~7go_46+#=yly2d9s-(4*fUx%&Ip zZ`b1$NR`sb!_AmzlpK=3|sM za1^&@2@F->4pr+g5H|0b;RwB&MX%3(Wt+lsDeLs`>7v{8Rsl>BEwhAO?TfpltNIYy zTs^&)-+rE@27R^m;RFX49dqa-p}YF1WSrn<4aDW<$1yf8>hHUbY1;?LfO&nGOxHJ) zbn3L%@!We`hs-TPXj&LM6>|PE1siUw-P8k~w9K))RUTP;;(J&4wbLc$ zuT?d%C_=@F={2DnZn+eFz$a*sS|14a?sI;+<{vm)tnkfF(bI(;t!(>f>bqp&VS3Qu z%QJfwv?8T+8-Kaj7#e)fclWOvyJBwamt0}(-z|XyhNt9H`VS>TZ@P5~Q7CVFi?p$f zMp?`UzE9E{&k^6((>x2Q!vpuGNKRr(lqXfDi&`6fiW5=@Lw4Ijo?tiSNF#%%~4W-+>d)KIQHhHg;`r~%w&RzRc1!#;^kNcCC;LNgmQFQRe zE%b*)%vXuLvG#Mgg-Se+uHrPk~l{}o8HUTuT7?v=}KHD zS{r_jQL&^;MftMMv@rw#_H$nQ!U=xly3&w@9q=J^4tYI zVGS1#yhV~`d|o`gcqGjiE5^z}$;o)ED_b4)}>aTpC3C<=MOYz z>)E&d;rou(KBWCOhxW&OuQ9yqwzo;Cj6Abn27C;N(l| zh%X5kDj)fip=blo_FFasw+Ze+^T@coaR)8<@QEs*8%2qAwO&{o%@g8nr5%DidP@Up#O5 zjKqBoS6J)rCE?hkT4uiveKj|2anOGAO^4Bvvp#!+`Od@AM-ovUh6=q6kM14P*37@! zyXOwCJto5K#myD+k7~>`08Qd(`@)AfeWVUNARF4uGfY+k(H@8)f3RO;u7BRnbgAR^ zvpB1Y)~`2S84RO)xz&EMH4^jfuGJnfQaSozZCxA@2jt*n;7P)BI#c}?%BGNEc^P^< zV;|v95z{mzFcwi)dwjV*os$tJn~y-;hUmU`s3OciOj@->^5x$6pnd*MV2SIem!F!` z`WhN;w^~2Q8TkazgmthI>UZS}P|&tIJ*~BO&@+lwsvZR&oQ!s^>IJ(2A>E#x=& z4D!o&Y0XsZ;osrUd;vsivCCCeEVZHeOSiwFmmI{6h#+3=GF)i9T!|XKe4U`vt-{0T zn@KD9TQsAZw$$kJoAJ{Z$@M%Qh?{NtUDAvB+{kcU{20?od+=GJ$aOx9RMoGD^mn*x zx%@rpAHre<)ND_+DE$e}i%)$Ea?9S?YRreCrwoJFLftWn?<|lLCw+Zr{6w0*`))`t zsrPmkE}b`i<1Frf+dOcWg1inFZ+Nq9EV+rji$(LzcZR}R4}?VT+tjd4^8gEKtGDyJ~S7u+oWo4$8qh5BC5=(fAf}7}n}sQ}7t&9P&W({tPLIC>q*+ z3m(D@h`IghSb#EI>rhu^fk?l+f#PW^@_b!Vg~n?xI1d^2SPZ*s&V(AiRK`ZuHOVz zpcpNED)hlX1oxK2LFD_6IVgKS?|Uy$ap5!Rp2D2f*2W$`e?bYR?yNYirVxJ@eV=Li zyp!lREW+8lietmI7MH1QQBTF@rHJZk3$*g)uKnJmR-2IeU2XY5BJ;PhA&5|mJyJh~ zsx?sC7c5(28a5!SU54#xv#k;^vx($$sggFM!W=$xK>yr=J9G&Co!F=E-9F?sDI#tE zX49;Pk`hFt=xX+ z{M_EunG-K_$BVR~8QIM=4LNfZ$nL+IP&qfWB=;J1b+Qtj?>132-Vp7CZwmcWXR+KW zc%6-{s4Yib_3Vk^z%sp}sk@Q(pN+u7%b}d?7wW}liEM0M40}hGi7f^N&l;p^n`z(P z6}fqHlee5wT4La`rLFg?-i$bXx-qQv>>=%3A}r)vLJl8uNc%D5N1}g6xAz;N4wJ%rb%OA%Ow$cEobtCwx9LneM#X zc;9YEw_U|xnV^7lyU1pSPhBT=$q0>Q_ZykVZ11cL_+Rvt=ZbjqvYOg19Th${6Vz^X z{0VbYuBDXIlg+U^jeG5{FWwR74WD@?(0(-o7uxq6v1)sm7c+m?m!Wxc-#m8ulM~wK zRbOBD$HiY?@v*~wGVlJbjuk3@QoVcF-1HskCRt4~;U{wId2r;2?L2i0+CiAgNGq(g z@==HLQl$OQ&zMmkt}NyKDl?2SXalL=qjhF zPCv-Ai`%wDjq~S~1>btlCp?i|z*}JGF3cqrlng}hVMtUdeOP8;)7&w^WtPoqt>tf_ zdKP3N+mRQgS#w009-wEAT`;MfC_Q%qNQSkZzsk+QZhHsrAp>5}7LL;TD)6c!Gv<2v z(R}*E{w@y3u-4)m>lTqWlKP?o0c+~x%P>1|LxgqS`lVJ`sGUc=5`CzNCR)7d^s9H9 zLaK=GfU}NnEtM7i8!Sr}OM*pobDrGAKs(|BKE`x1*OsV}zitSHDq|EtiEND9*2R3w zKNh`97sHrirenvcAip2=2ILmOMrh1|RPQ>nyr%5kKm)@(>xhr3e%V#19kol4HjrB= zt#?AsyZ+t78mBQ*`I5Kxc(3nk6#cxgniiC`BM$WCV$#yKom9(sh6*>&xsxszoQ-79 zW_!U!wYebuv8JJI7ew0kBWF4{MvqH+jvj+}l9xH{R>?p|`sNg4*+o%L;WI59p>#^q zWat4FRutqElgk2mlZOorDmGXQ# zm-|KWm1QN;6xnzPl9+XMA^fJu2xI!OuQy5=pz!gas@gK=K!$=y@fTgi%48_?67cdX zXqPNIZYFTKf>|OZuAR4OpW=mJJ5Ajv-@#}rzw;hL104*TeW z#IzL#W4y6r&;ebGh~~6HOQB{3A5l3){l&4^aNC2oezcV}=u-y!BSTMo0eN)^qVn*b z&Ri*y0mpc)g@X%ciGAwBfQMZHk06oi3C5L>PzlJ~DecG^f~M z%X#v?-z!`CLdvxRmS=Z6X8K%RA0KO$n-G2=T}YYahI1%Nv8J&^n3by#St7eE@E3~) zC#s1N@BfT-QV_mgd>1?6vtEZ4-U6+(9~hKqGESa5BdEoab0W=Fxt5vsO*xbbg3T;pne2QN;nOX@@~Pl-PM~djYX+b%@Q>Qh9Q+ zvL1reD(jn@AQb9TOi*wz{dl60%S_Vk(HSn>+H!n)lItNBCFK85<9DAF#jOYC&QwZX zFB#)tGm6t=Kc6*vOhfJO>kl4ugj4Q6IdtFcp6Z8B2x2{bnR3!Mw4bY=&$hl7dh?Xd z^OtM&*UqmXARzX2oJc{&<&^~*C7Tz=wIE5FWj$C zByKm0v%TNqPc!o0(+<~&T_nicjkN%`y z@3~d!gKgHJYcKFn#f$BF7e17U7e&d(Aql8>buxv|7eoEKAc9{Hs(B&RnDYnar;@*^ zP}C5AU02K2J=OC@>o_S{QOPq+#OIm=u~Ognx#sXCu=w;Y7K%UCbcCHfzq{gi zra+Tuor~WT-VcjM5Hk66qpa*~UtZo@@#Di`xBzUv|1kBMg6{bv?Z+DMZw&QxJ5CqI z*3pmkts=d!xSKZ&#JXPaTXdvc<;X)1bI+|LL38QHl(1MULA1{Wqzy0T(AdH02l4qQ z@Y^iHvz$Snd;QG&c1=+4KK(hBf{T3Cz4vZVMyu_YWi_0qI>Qt)W@uigB>5FOL#!V9 zAWjj4A<^%OM@3_nuy!Y52(!ev5J^h9H?=a~hx*v*>Q(y#1cQ`2N*aD}!NtzxO?dR8 zV!h8^5|&UynWg5Xe-Rx5(O|W)&Ltyc%yoBFtJLCWDWfAoloc3H5|NxPM^tT(cN8` z0on2WDuG!Wv!lhE>ql*(9`>zizf#G4mU_yP-W#{l6P-0Mph^B({j6@bglmJ-KoEaG zQlwQFI_Q%^^zyxXt8x!<9C!a$`ewNDJ-;(8_kZ>6sh~fRqVQ?((Rl6{;Ii^P)nLn_BYDGmYEvuVDaLge^c5-XjwzUMH4 zSV^(h(_c%(Vcv#OQE@Kf?}a)%FvNH6@cWxS&0lu$>H$NkXr=EgKTgTd_HK`!8=jpv zuDd6UsDwt`;f6x#$4mUU%pefR!>8VzS~L(yz?pssEkL?jwgKSjjG$x-c=_S{zjaPA z-2zXS-_vt|OVoYZ)1bccR~mW<r)Ut-qi$r;0nvi^0N(mMu8 z+Zy&cJD+^jH3y_s235u29pnB~IG%ynWdm?g>L0#0OHZP+&?t?AnOH0WjvTLZ%LT?* zg(Pgl?2bRiraBe&FLwJ98*A(Ct^?2+2uS>PiHc#Nj4B-Vx9L5x30d3Rj5~igrkc1o z+uxs2B;!)GF>(0I2n-@tx6r+rm$QCjYTp^3d9n)E8I2N9p`&|Weu~kmqf_ekZBdn* zq9!Xw%|$+Bde(x%IDxAr5tdUI9^ypQ;r!3*8`YvE74FO#v2HjkWlu4EU(&d;(u0NX z2Hp@)s`TtNZUAs_homGt^KT$I_!r_LwZx7HAWT)0I#8(@#uzM;7jQ)bEnwuoB44 zYx>dB&SUdan{vJai_LyAUp*;5f4=MX&L6Kj#RxV*{*Q&|Fei`=s#&Ua1TB+L{^`rj z8#i>!UCRXQ{2aUMka=sOfpu0%DTwKS)YQxHa5A-1m7>Vp&pX6mIi%nj@+^&pw1nfg}i1BRY_ z-2wr-Ke#yCK$`B}l(@T%TR-9}T^An%iyhdn1klh-@wac7=*N4%u0RJV@%!A!WHT?E z&=*_BjaT*bYw47=E?~Sq*hVaK8TT=+-y3y{&ieLky57GD77Z-7bqCQDC4@Wzw^DFZ zkQ24_D)D8Re|SX1`mi7s*F^CfVgbpy3I_({1yrVKmX4O3-9aBybXIh9fxQFiE${wq z7pEb1Z7}hR78cKf>Rj8Hzla*mD_AcE^Q_DH{5s>DQIb3dwS{9;`)NzeSN zKwd`1-JDCheGiFc)_%r|i;Fi!MS6_<+3y5weW#Cp5`*DRo0SevTj9YK|#>f982;kr^nDTw&U$HGSb zAj##^r%zKd?{1QIQqw~l;sCP5OnB5V^UB#CItQ|VizlYuC^ePmrl4TrP9u$3^~x{= zG0!-wX+BS%J8-ygVX+t9VLUL?)TbKsrsQ@Txalg-Pf48p@q>xD>E&g&*bz=#x{fT` z-mVyYAmJDD#%H%=v0QrQN&$R2mZbLWmK3W`I&^%~5BDPd)Vk*{0j1Bn&Cghyo>+cC zjN$!C5MJL^-sjqDOZ0zK%7bqDQZf-d@%DOMH%rv}0%Zu&Gu0nIx`tnk0U**{T!AGI z{sln(8qV$ccQ`LyKC&w}Fz`Ouh~H}~b?DZ7PCbp6#YaYl=VxT}=M9;jn~OjC`ZV($ zRcN5Szmq4cUwwhP6`RnPzsMWd({QD6^*8|&@{Sl=jHTh@4uf*x%(OJOdg3z7o=}6` z&F06gTqlxrjf~KaXs}G{A_;Z&bz1}(-I!)4EDQ1ol)_!#Gc$+s%zI$|DUUf?QhM@e zo&gMcv!oW~cesei_}L#>^heBJ$>YX^Vepys{n^#frsHi1!-ZpQEQ*eF+Z~M;_)4@q zJR<*ei3zcX%1(xagbbly6}Tf|^PGg`Pwl;S0GVCAx+}Rd3fO|VamS670sR^8m7O)Ubl}BB%5ccr&yb+~rTemt(_yRLE6;O(1!IOc}1vUUVe9i(U1@A zMNx~~>vCtx@q!)j>j$UX1lWSEUd?7k#@`%ycMZ9nvQC|oc&da?Ifu_lTEO$Y>52CM z4hF`DfBN)7^>?`Y>`;7%#Vf>|^|}cUJoYAG%5Bi10=O`|PDI)DmzUXC1etXw2p8Nb zRWP!r_f$}%oy0n7^t8}R(JG{+z2(*DgT!aqWOP1ArQzk_8Og)6c0*id{5pQ``qGb~ z!SZ%EnkZ%hmNMZ>#8}XwkhgAC=gO$8)wBuUmdW(MQ9` zKUF*6IU(|1Gj=0~=IMe4rin_dk8U{x6oq$L+3ZsXQaLR!MFT8H2ZGJC!_EX-UEk9) zv1LnAZ0zy2!f$#E&&|tVxzRo|ver(u7-osDzu^lqzKF@(0Q8$xgAM}{c?DVnh9iv& z@*6~ zzAi)$d%R*WD^E(`K*@Kq9HilTw`q@1mbv*Yb?W^XIpTS@-s2!6?_wd{vm8`F2>&n6 zt%sMtCM6{$@|}PTC1}%v%#s@FiSuMaA9CUFn3Bi3&LxQ!keDGZ%bj*NmD8a+{)o~! zg^L;c(TmtE$?e_RBvSs|?W0wwW0{Gm+U8x0v@X6qd+l0Bc9{;VV>&`w8JtTug++U7 znT_nF`u)N@g38 z7ptLxW9&bloYja&7c)^Rpy4868i9;Lh%V~Hfm0MlS z2W4)ny=yBXG9-Vl+Wkx??OvYcRh;Q}DYNZGNn7Amm5H;=%`>Wb9Ia!EP)$yEY-{;yi&uT>tsFDZ!^FpLh%8vB$W->E{_0;lx6JX9Co|0$*m;cXLng3HK>W2zw-0A06bq zefgv!$H_Q*|6;koKPI+P5XiUr);^_#ZJE^&1pa~0WOaLN-|1T`S!HFKBL$tb!Y>+6GPe{e>@DZ2xww?PEK9g~^XBeh zO?pilaYx(Q)>gT#tquJ85N_6grpE9?DXz%_7{mTB| z88p4lzA2tsLvk+}txeF?&Ckz|j!imSEszKjMeIz2 z6w12)?j-;qki%GyG$747EPle55Y&X7UYw6F#UsWD&WuinXjIYAJ41}aN>Dnye>Yzr zuuTeu^Yi8^TA<^&gqayr#e;E%aK4a*AH7}`64NMB+L%oqLh z&NE;sGFlxJFQ^@KAG!z?4BMW?|7;fQ>r&c?!)zHwvyHS1TeDkvyy z_!h@f7G)InBGc1D?j4QRn;Y}>>(?*`Y$y#BXHjPG*k70(Cp9ZH>Bj7H=oTIVOWb#o z?<3)`{=o9C52;9*Nk>3&O;b>Zeen;s{3+9_w+<GT?xq>o;T;Kuk+@L2EVsnhd-|*^HLb0!VUBq3gZ3ua z;4zk0qb z^G040=R|Zs*B8aIlWsR`pRzcdCWKKBcSH!3Bszd24DQ@v`F~l^@n2&H!BY*OC#OdX zO>kcldEMp@-@Aw`1L+-pbjgO|xKloI0y2IJ9BUO`!f-;1M_G*s!Ox4f-WroM>$yrl z;O!$Gk?oM6#SQ6x$7u#hNFFh4Zsxd8k;~?qySpQng4`;SazOcAowkio_R$!`_^&=& z^i-E_wek$-AEh-ro2XBFIA_BrIpYL9Y~Xt#W7@lrPcslrX+x-K#bk*$@P97gJTZ61 z+m?_f_jnK%Jm_6(O-hkFR`~V)+A1cW{}=sODpK^9ABtKhI2rT{c0=lt53`YxI&Po2 zs>!k#!7)v+5ufU3BlMA~qB=>7n=g&B!e* z=Ny>VPoGZh?eF*Ejg}q(j1wFTg6Jz;wCDK{%Woxp_rck&n)iydwy6H|uU0;b!vfxk zQ}|bCqbe4l?#d&BpCY|1onvwwVV?+_-6JDwlQdS=1^1$LM2h^sn~-U7BqiauVCoYd zk35LZ&(5dmlUAQ@J`eDda;uef(LEVc2Bxix@8BooHvBYrG?k7sUwZjN={OJQH8Zxl zl=&@#VcTSK7OrYAySdwGa2TU{d)6ofIP_F=WpS4T(R=&Xy~=QL&>W7_r6+_ zS-&x2Q;RT)mv46Y3p)YDX+lr^u(aK4k__6f%WJ(99~4_A78qMLivgi%9?Wpf!8JA{ zW=REDy4M_*v#g}<(m?poq+{RhHPpwkwqBTWop}mYVuQ@*NxA>W>M*G9s3eS<6C>V$ z&WaWp{EprrGz^i0o8Ut#i4sP!cw~_IYQwmPa!l3nD2EFCd&w&1*+Mu7qMW@RsY2U% zy#|@o?BoI?H4YGRcaVJ5iNCM%(L&Ws5ZZ(I!I}c3K%O2kO@rWEl7kPDtP?x*nHe9m z;8!oQh*%kcbiTa3>Iv2aNH-+~)`T)^BlaV_Luv7W$@EeIkC!@O<%O?&jK%&Uj?j5& z<8a*aX}#hHV-z1UL&^Kn?$IC|#oG^5!>G|05k-U?S#2DjM9m&G&wai?&J8b+&6}KXHofJw>IBW&x$fc6ARtSK9)8u@j8}crm#)?K9y9p#0g3mnL1{C5P{zD!qzV-}-sovuX!eR{3>&2;Y9bsn!Yyl@WM* zac<(okfzbbgu#%($h|92U&WZjd&|$PeLE4a5#3+11+m%3!A6P`Me6s0D}?d?Txc9H zZn#(JDk@s!QklfAngbX`RNt44zZpSY74J*vB)KWAgp#2>^M@u(I zvZm9hvN9+Ut)(76?JXrEgO*ltKox(1g&TxktpF~E)7SFq>I^-vILfqvYFgXZ2r~&_ zQN^%nNjO3gcuM-t4+!KlE7PrjwQ==yfr5Rp>;?4+oOk3#M^{he>P(1b59 zHtLg1_ImW8Qy}I74Lm(wa@;*xweMioyJ3vf)8ozpMw-A(FC+-HE8c>=k6_pj-Vx{{^{QfxY!=zOHWpucaEQ zAXgox)HbAA{5QNH27eO%Q!UUU>^-|w?M5Rkvo+dccq=ZK8KYh>+a6*%HM`otFe+TJr>5H+rS1yZT2?yH7cM*q$l zsArE+yVe8sZFY|8e%ZAuX`4`G;)NC8EMehMu(X=2)&Y|8vpSpi3ux}Td$Zhz+Wn7( z`Ck`P7v%))+U4^iZ`At{UOyjr(+h)?2-gZnsFI?jLDTBuiISKn6Kcgy=F8V(RA8XF zc|5LH_rYgU8tBbH^A-u}%cDsk&tA@cZJ*XVM%_n=L}Mjd2)(OWvj29*VYDzxz@+w7 zYvS8IXQO;Tp@067Ov6m9qy6w*SA(0)<>_=a)amwQb#@Xqf3Y=^{4{#EE#3c4mBCvlpA_zLoFR$ib`94+ZU<=@0Jrhmb$cylbkSEPH zh!py%+!PUHvOJvjP@WG*JSXwm!ZSyv+=tYovw(}LzOPbQ=b!4Hl0(3+SX=3a3#`3v zoFx$O&N!i2lMpYX^Zrx`N{q)A31OEo#5E@dCkSy$Jd;a+C&Pa9_8EqpS1zuhS9z<1 z|A!ElMSs40oARMLP0?4!ZZ=LJ22_jKu=P|T61?SvCZ&<;zfa#l83kqCO%I;=k^_O9 zVn4D4kY9uvb|%P6WEi_JMT?{7Y$*!euG7Eoo6?>iev$IMnC6r(wSr!FYJ2q@=4d)t zBRkapZ z@WPYs60iIlxwfrqVIFT_C+VbEIe+5Px(p5ydk&uX9@af1Eu<|cJJa`xM4#t z`BONlwvkk==5BkYSEGBu(G~O(C^+GqCq-@V_!n+H&oL5o<1lgk)>2w!>)b+jM2iBpt z0aui>M5hVVkRLwlY9xcDwnB>Qew%*rR>%-)wkCG{k)9&P1zQH$X-Wo-B(`~Kta$m? z2N!ROx{dkwR(yArb4#P~45>B{H*%>{znQP=&pjy`=$CLKxTNvx`DvXG?R7cRf+0M!}cc=m1P96z~Avl7ahMW zbqo0YtdY*jT%8CT?!_H4!T27@n*P$n=F{!c2TP{&p>k7`iz zES`Eo^Dn5XRxK(gZzKig0|o2D2jEPyN+M}I1z5X=a%ID>fgX>lsdL8e%1(NY>9)D{ z!QJ4LM{Z0SQVDs_Cg1E>*i@1uuG2aw)XWYz+I4FOX>-r9VuiX@`(7BRQ>dmR7L z&~JY?tI|N6kHD~21dCVNVHq6N=vw#I?Vu2gV0a|WDG8`P&%NbfleQQs4b}E!_qptF zxf5>De6~z76983P&`K!Qtkcmjpq!iok(f=Iw{5Gol(*};{ysMScz3m zGnK(?n<9*lUf##Q)@y@}zzfCj1dx#gWQ%34j)|yD!26tqN_hn~4l9S%d~domq%qY{ zD;yG58<2OHCNAEw$@uP+=-0WJpBrv(bWE1<@faZj;8D_`f2ByRaXdR-9)<~>O(gf_ zql=~uv1lKMnioW};^BEu|KKu-!7)xS!)F|wU#L|Nk3c~?HGsjh4!i$lvS{LF%f9=X-5DEITV+2pu(?8o$!SY+IcehIo3u z6S=6Hh?7vT)+V|dK~t&ZGXRqXc4NGCSBfqLDu6o9s_?@y$pJ`TM}BTk3|cG15YyI^ z*Vf$gVs;|GOwqTps6dq)`uY<2K;l|St|hQtXj596M$56dpQ+0W`wfrU@YivPi_70s zPF@#K!TDbQYb?%5{Tq%5y{f(6vB7Ipt+03C*UWK39#I|m%c;zAmjwji?Xx_zsn+S_ zQ@sFqxv`$k+|erKwYFwoCA!~Zg#lS5FOwUkq zb~dqAesZ;K>pviOks4JHQ`4vXq5!y8TD_Ul`jcLqR!XO-`VYEZTR%B@Kc6m?5t~XE z@O>fk0p#I%nr-6mwT8r7LBzfhKF8G3|YHJxZ z9pB2F(9)_&6SkAENj%B!tMtUZVW2(qeSjC+_Y)kk6#Mzu_vKT+iaIiaCBMrXDy3)-vYF1}^`5LE&z`T6RHZPW13 z5UYD*wbQiq)nHa_YZJ2b!=^X)n*M&y0#vC=bY8ckWO!H^Ry!LhwPgPqL$7dS&toqx z>bB=5AXW2k798UYIWU{j(R;S}_l*n^a>iWvZA;Vg~t3XYFdnwa&PuhG)s*dsNNz?U2I2_K!$?0kx=oAzb1nx9pu=ElF zpt_&6tva>%`uc)1X2ro@8dYr4WgAFdarQ4UX;|^)1qy{invN7TlqLP%waQz#X#n=z zIAe!Q@?0t%i~Y%Wu|5^xm@4}7=MU&i;=tjip^6=EjFnxjkp>n!-7MhW!y{hd z!^?jSc&vanD)j2mc7C@z%Ac+N%nqz)haA)$pR*Y>J`9BA0V?496g3ic`s2#;t`yhT zEIV#SKd{yN(AXDqQQSqp9ZBuzM{n{_C;ih94*rc4jnV t6M|eie^KJt8O_4~WFYOBjFuH< Date: Sat, 14 Dec 2019 14:13:23 -0800 Subject: [PATCH 016/192] that's storytellers. time for voting --- code/game/gamemodes/dynamic/dynamic.dm | 3 +- .../gamemodes/dynamic/dynamic_rulesets.dm | 2 + .../dynamic/dynamic_rulesets_events.dm | 19 ++++ .../dynamic/dynamic_rulesets_latejoin.dm | 3 + .../dynamic/dynamic_rulesets_midround.dm | 12 +++ .../dynamic/dynamic_rulesets_roundstart.dm | 14 +++ .../storytellers/dynamic_storytellers.dm | 93 +++++++++++++++++++ 7 files changed, 145 insertions(+), 1 deletion(-) create mode 100644 code/game/gamemodes/dynamic/storytellers/dynamic_storytellers.dm diff --git a/code/game/gamemodes/dynamic/dynamic.dm b/code/game/gamemodes/dynamic/dynamic.dm index cd9500284b..6566d41e21 100644 --- a/code/game/gamemodes/dynamic/dynamic.dm +++ b/code/game/gamemodes/dynamic/dynamic.dm @@ -60,7 +60,8 @@ GLOBAL_VAR_INIT(dynamic_forced_threat_level, -1) announce_text = "Dynamic mode!" // This needs to be changed maybe reroll_friendly = FALSE; - + // Current storyteller + var/datum/dynamic_storyteller/storyteller = null // Threat logging vars /// The "threat cap", threat shouldn't normally go above this and is used in ruleset calculations var/threat_level = 0 diff --git a/code/game/gamemodes/dynamic/dynamic_rulesets.dm b/code/game/gamemodes/dynamic/dynamic_rulesets.dm index 0c8ec0a2b8..e26eaa03c4 100644 --- a/code/game/gamemodes/dynamic/dynamic_rulesets.dm +++ b/code/game/gamemodes/dynamic/dynamic_rulesets.dm @@ -80,6 +80,8 @@ /// Delay for when execute will get called from the time of post_setup (roundstart) or process (midround/latejoin). /// Make sure your ruleset works with execute being called during the game when using this, and that the clean_up proc reverts it properly in case of faliure. var/delay = 0 + /// List of tags for use in storytellers. + var/list/property_weights = list() /datum/dynamic_ruleset/New() ..() diff --git a/code/game/gamemodes/dynamic/dynamic_rulesets_events.dm b/code/game/gamemodes/dynamic/dynamic_rulesets_events.dm index 4ac8cc91d3..0c0dbee820 100644 --- a/code/game/gamemodes/dynamic/dynamic_rulesets_events.dm +++ b/code/game/gamemodes/dynamic/dynamic_rulesets_events.dm @@ -46,6 +46,7 @@ cost = 10 blocking_rules = list(/datum/dynamic_ruleset/roundstart/nuclear,/datum/dynamic_ruleset/midround/from_ghosts/nuclear) requirements = list(70,60,50,50,40,40,40,30,20,15) + property_weights = list("story_potential" = 1, "trust" = 1, "chaos" = 1) high_population_requirement = 15 /datum/dynamic_ruleset/event/pirates/ready(forced = FALSE) @@ -69,6 +70,7 @@ cost = 10 requirements = list(70,60,50,50,40,40,40,30,20,15) high_population_requirement = 15 + property_weights = list("chaos" = 1, "valid" = 1) ////////////////////////////////////////////// // // @@ -88,6 +90,7 @@ requirements = list(5,5,5,5,5,5,5,5,5,5) // yes, can happen on fake-extended high_population_requirement = 5 repeatable = TRUE + property_weights = list("chaos" = 1, "extended" = 2) /datum/dynamic_ruleset/event/ventclog/ready() if(mode.threat_level > 30 && mode.threat >= 5 && prob(20)) @@ -125,6 +128,7 @@ requirements = list(5,5,5,5,5,5,5,5,5,5) high_population_requirement = 5 repeatable = TRUE + property_weights = list("story_potential" = 5, "extended" = 1) ////////////////////////////////////////////// // // @@ -143,6 +147,7 @@ repeatable_weight_decrease = 2 requirements = list(60,50,40,30,30,30,30,30,30,30) high_population_requirement = 30 + property_weights = list("extended" = -2) /datum/dynamic_ruleset/event/meteor_wave/ready() if(mode.threat_level > 40 && mode.threat >= 25 && prob(20)) @@ -174,6 +179,7 @@ requirements = list(5,5,5,5,5,5,5,5,5,5) high_population_requirement = 5 repeatable = TRUE + property_weights = list("extended" = 1) /datum/dynamic_ruleset/event/anomaly_flux name = "Anomaly: Hyper-Energetic Flux" @@ -187,6 +193,7 @@ requirements = list(5,5,5,5,5,5,5,5,5,5) high_population_requirement = 10 repeatable = TRUE + property_weights = list("extended" = 1) /datum/dynamic_ruleset/event/anomaly_gravitational name = "Anomaly: Gravitational" @@ -198,6 +205,7 @@ requirements = list(5,5,5,5,5,5,5,5,5,5) high_population_requirement = 5 repeatable = TRUE + property_weights = list("extended" = 1) /datum/dynamic_ruleset/event/anomaly_pyroclastic name = "Anomaly: Pyroclastic" @@ -211,6 +219,7 @@ requirements = list(10,10,10,10,10,10,10,10,10,10) high_population_requirement = 10 repeatable = TRUE + property_weights = list("extended" = 1) /datum/dynamic_ruleset/event/anomaly_vortex name = "Anomaly: Vortex" @@ -224,6 +233,7 @@ requirements = list(10,10,10,10,10,10,10,10,10,10) high_population_requirement = 10 repeatable = TRUE + property_weights = list("extended" = 1) ////////////////////////////////////////////// // // @@ -243,6 +253,7 @@ requirements = list(10,10,10,10,10,10,10,10,10,10) high_population_requirement = 10 repeatable = TRUE + property_weights = list("extended" = -1, "chaos" = 1) /datum/dynamic_ruleset/event/carp_migration name = "Carp Migration" @@ -254,6 +265,7 @@ requirements = list(10,10,10,10,10,10,10,10,10,10) high_population_requirement = 10 repeatable = TRUE + property_weights = list("extended" = 1) /datum/dynamic_ruleset/event/communications_blackout name = "Communications Blackout" @@ -267,6 +279,7 @@ requirements = list(5,5,5,5,5,5,5,5,5,5) high_population_requirement = 5 repeatable = TRUE + property_weights = list("extended" = 1, "chaos" = 1) /datum/dynamic_ruleset/event/processor_overload name = "Processor Overload" @@ -280,6 +293,7 @@ requirements = list(5,5,5,5,5,5,5,5,5,5) high_population_requirement = 5 repeatable = TRUE + property_weights = list("extended" = 1, "chaos" = 1) /datum/dynamic_ruleset/event/space_dust name = "Minor Space Dust" @@ -293,6 +307,7 @@ requirements = list(5,5,5,5,5,5,5,5,5,5) high_population_requirement = 5 repeatable = TRUE + property_weights = list("extended" = 1) /datum/dynamic_ruleset/event/major_dust name = "Major Space Dust" @@ -306,6 +321,7 @@ requirements = list(10,10,10,10,10,10,10,10,10,10) high_population_requirement = 10 repeatable = TRUE + property_weights = list("extended" = 1) /datum/dynamic_ruleset/event/electrical_storm name = "Electrical Storm" @@ -319,6 +335,7 @@ requirements = list(5,5,5,5,5,5,5,5,5,5) high_population_requirement = 5 repeatable = TRUE + property_weights = list("extended" = 1) /datum/dynamic_ruleset/event/heart_attack name = "Random Heart Attack" @@ -332,6 +349,7 @@ requirements = list(101,101,101,5,5,5,5,5,5,5) high_population_requirement = 5 repeatable = TRUE + property_weights = list("extended" = 1) /datum/dynamic_ruleset/event/radiation_storm name = "Radiation Storm" @@ -343,3 +361,4 @@ required_enemies = list(1,1,1,1,1,1,1,1,1,1) requirements = list(5,5,5,5,5,5,5,5,5,5) high_population_requirement = 5 + property_weights = list("extended" = 1,"chaos" = 1) diff --git a/code/game/gamemodes/dynamic/dynamic_rulesets_latejoin.dm b/code/game/gamemodes/dynamic/dynamic_rulesets_latejoin.dm index 5810fd0ae0..8d9d14b473 100644 --- a/code/game/gamemodes/dynamic/dynamic_rulesets_latejoin.dm +++ b/code/game/gamemodes/dynamic/dynamic_rulesets_latejoin.dm @@ -69,6 +69,8 @@ high_population_requirement = 15 repeatable = TRUE flags = TRAITOR_RULESET + property_weights = list("story_potential" = 2, "trust" = -1, "extended" = 1) + ////////////////////////////////////////////// // // @@ -93,6 +95,7 @@ requirements = list(101,101,70,40,40,40,40,40,40,40) high_population_requirement = 40 flags = HIGHLANDER_RULESET + property_weights = list("trust" = -3, "chaos" = 5, "extended" = -5, "valid" = 2) var/required_heads_of_staff = 3 var/finished = FALSE var/datum/team/revolution/revolution diff --git a/code/game/gamemodes/dynamic/dynamic_rulesets_midround.dm b/code/game/gamemodes/dynamic/dynamic_rulesets_midround.dm index 8cda402ebf..1c077aec55 100644 --- a/code/game/gamemodes/dynamic/dynamic_rulesets_midround.dm +++ b/code/game/gamemodes/dynamic/dynamic_rulesets_midround.dm @@ -189,6 +189,7 @@ repeatable = TRUE high_population_requirement = 15 flags = TRAITOR_RULESET + property_weights = list("story_potential" = 2, "trust" = -1, "extended" = 1) /datum/dynamic_ruleset/midround/autotraitor/acceptable(population = 0, threat = 0) var/player_count = mode.current_players[CURRENT_LIVING_PLAYERS].len @@ -245,6 +246,7 @@ requirements = list(101,101,70,50,50,50,40,30,30,30) high_population_requirement = 30 required_type = /mob/living/silicon/ai + property_weights = list("story_potential" = 2, "trust" = 1, "chaos" = 3) var/ion_announce = 33 var/removeDontImproveChance = 10 @@ -297,6 +299,7 @@ requirements = list(90,90,70,50,50,50,50,40,30,30) high_population_requirement = 30 repeatable = TRUE + property_weights = list("story_potential" = 5, "trust" = 1, "chaos" = 3, "extended" = -2) var/datum/mind/wizard /datum/dynamic_ruleset/midround/from_ghosts/wizard/ready(forced = FALSE) @@ -344,6 +347,7 @@ cost = 35 requirements = list(90,90,90,80,70,60,50,40,40,40) high_population_requirement = 40 + property_weights = list("story_potential" = 3, "trust" = 5, "chaos" = 2, "extended" = -5, "valid" = 10) var/operative_cap = list(2,2,3,3,4,5,5,5,5,5) var/datum/team/nuclear/nuke_team flags = HIGHLANDER_RULESET @@ -396,6 +400,7 @@ requirements = list(101,101,101,80,60,50,50,50,50,50) high_population_requirement = 50 repeatable = TRUE + property_weights = list("story_potential" = -1, "trust" = 5, "chaos" = 3, "extended" = -5, "valid" = 4) /datum/dynamic_ruleset/midround/from_ghosts/blob/ready(forced = FALSE) if (required_candidates > (dead_players.len + list_observers.len)) @@ -426,6 +431,7 @@ high_population_requirement = 50 repeatable_weight_decrease = 2 repeatable = TRUE + property_weights = list("story_potential" = -1, "trust" = 5, "chaos" = 2, "extended" = -2, "valid" = 2) var/list/vents = list() /datum/dynamic_ruleset/midround/from_ghosts/xenomorph/ready(forced = FALSE) @@ -480,6 +486,7 @@ high_population_requirement = 50 repeatable_weight_decrease = 2 repeatable = TRUE + property_weights = list("story_potential" = 1, "trust" = 1, "extended" = 1, "valid" = 2, "integrity" = 5) var/list/spawn_locs = list() /datum/dynamic_ruleset/midround/from_ghosts/nightmare/execute() @@ -525,6 +532,7 @@ weight = 4 cost = 5 requirements = list(30,30,20,20,15,10,10,10,10,5) // yes, it can even happen in "extended"! + property_weights = list("story_potential" = 3, "extended" = 5, "valid" = -5, "integrity" = 2) high_population_requirement = 5 /datum/dynamic_ruleset/midround/from_ghosts/sentient_disease/ready(forced = FALSE) @@ -558,6 +566,7 @@ cost = 5 requirements = list(30,30,30,30,20,15,15,15,15,15) high_population_requirement = 15 + property_weights = list("story_potential" = -3, "extended" = 5, "integrity" = 5) var/list/spawn_locs = list() /datum/dynamic_ruleset/midround/from_ghosts/revenant/ready(forced = FALSE) @@ -609,6 +618,7 @@ weight = 4 cost = 15 requirements = list(101,101,101,90,80,70,60,50,40,30) + property_weights = list("story_potential" = -3, "extended" = -5, "integrity" = 5, "valid" = 5, "trust" = 3) high_population_requirement = 30 var/list/spawn_locs = list() @@ -660,6 +670,7 @@ blocking_rules = list(/datum/dynamic_ruleset/roundstart/nuclear,/datum/dynamic_ruleset/midround/from_ghosts/nuclear) high_population_requirement = 15 var/datum/team/abductor_team/team + property_weights = list("story_potential" = 10, "extended" = 1, "valid" = 1, "trust" = -3) repeatable_weight_decrease = 4 repeatable = TRUE @@ -699,6 +710,7 @@ cost = 15 requirements = list(101,101,101,90,80,70,60,50,40,30) high_population_requirement = 30 + property_weights = list("story_potential" = 1, "extended" = -3, "valid" = 3) var/list/spawn_locs = list() var/spawn_loc diff --git a/code/game/gamemodes/dynamic/dynamic_rulesets_roundstart.dm b/code/game/gamemodes/dynamic/dynamic_rulesets_roundstart.dm index 56b02a1364..0a5fead01b 100644 --- a/code/game/gamemodes/dynamic/dynamic_rulesets_roundstart.dm +++ b/code/game/gamemodes/dynamic/dynamic_rulesets_roundstart.dm @@ -21,6 +21,7 @@ requirements = list(50,50,50,50,50,50,50,50,50,50) high_population_requirement = 40 antag_cap = list(1,1,1,1,2,2,2,2,3,3) + property_weights = list("story_potential" = 2, "trust" = -1, "extended" = 1, "valid" = 1) var/autotraitor_cooldown = 450 // 15 minutes (ticks once per 2 sec) /datum/dynamic_ruleset/roundstart/traitor/pre_execute() @@ -60,6 +61,7 @@ requirements = list(101,101,101,101,101,101,101,101,101,101) high_population_requirement = 101 antag_cap = list(2,2,2,2,2,2,2,2,2,2) // Can pick 3 per team, but rare enough it doesn't matter. + property_weights = list("story_potential" = 1, "trust" = -1, "extended" = 1, "valid" = 1) var/list/datum/team/brother_team/pre_brother_teams = list() var/const/min_team_size = 2 @@ -107,6 +109,7 @@ cost = 15 scaling_cost = 15 requirements = list(101,101,101,101,101,101,101,101,101,101) + property_weights = list("trust" = -2, "valid" = 3) high_population_requirement = 10 antag_cap = list(1,1,1,1,1,2,2,2,2,3) var/team_mode_probability = 30 @@ -159,6 +162,7 @@ cost = 30 requirements = list(101,101,101,60,50,50,50,50,50,50) high_population_requirement = 50 + property_weights = list("story_potential" = 5, "trust" = 1, "chaos" = 3, "extended" = -2, "valid" = 10) var/list/roundstart_wizards = list() /datum/dynamic_ruleset/roundstart/wizard/acceptable(population=0, threat=0) @@ -221,6 +225,7 @@ weight = 3 cost = 30 requirements = list(101,101,101,80,70,60,50,50,50,50) + property_weights = list("story_potential" = -1, "trust" = -1, "chaos" = 1, "conversion" = 1, "extended" = -5, "valid" = 5) high_population_requirement = 50 flags = HIGHLANDER_RULESET antag_cap = list(2,2,2,3,3,4,4,4,4,4) @@ -282,6 +287,7 @@ high_population_requirement = 50 flags = HIGHLANDER_RULESET antag_cap = list(1,1,2,3,4,5,5,5,5,5) + property_weights = list("story_potential" = 3, "trust" = 5, "chaos" = 2, "extended" = -5, "valid" = 10) var/datum/team/nuclear/nuke_team /datum/dynamic_ruleset/roundstart/nuclear/ready(forced = FALSE) @@ -372,6 +378,7 @@ flags = HIGHLANDER_RULESET // I give up, just there should be enough heads with 35 players... minimum_players = 35 + property_weights = list("trust" = -3, "chaos" = 5, "extended" = -5, "valid" = 2) var/datum/team/revolution/revolution var/finished = FALSE @@ -489,6 +496,7 @@ weight = 3 cost = 0 requirements = list(101,101,101,101,101,101,101,101,101,101) + property_weights = list("extended" = 1000) high_population_requirement = 101 /datum/dynamic_ruleset/roundstart/extended/pre_execute() @@ -516,6 +524,7 @@ high_population_requirement = 50 flags = HIGHLANDER_RULESET antag_cap = list(2,3,3,4,4,4,4,4,4,4) + property_weights = list("trust" = 3, "chaos" = 5, "extended" = -5, "conversion" = 1, "valid" = 10) var/ark_time /datum/dynamic_ruleset/roundstart/clockcult/pre_execute() @@ -615,6 +624,8 @@ antag_leader_datum = /datum/antagonist/nukeop/leader/clownop requirements = list(101,101,101,101,101,101,101,101,101,101) high_population_requirement = 101 + property_weights = list("trust" = 5, "chaos" = 5, "extended" = -5, "story_potential" = 10, "valid" = 10) + /datum/dynamic_ruleset/roundstart/nuclear/clown_ops/pre_execute() . = ..() @@ -646,6 +657,7 @@ requirements = list(101,101,101,101,101,101,101,101,101,101) high_population_requirement = 101 antag_cap = list(1,1,1,2,2,2,3,3,3,4) + property_weights = list("extended" = 1) /datum/dynamic_ruleset/roundstart/devil/pre_execute() var/num_devils = antag_cap[indice_pop] @@ -697,6 +709,7 @@ cost = 0 requirements = list(101,101,101,101,101,101,101,101,101,101) high_population_requirement = 101 + property_weights = list("extended" = -10, "chaos" = 5, "conversion" = 1, "valid" = 10) var/players_per_carrier = 30 var/monkeys_to_win = 1 var/escaped_monkeys = 0 @@ -758,6 +771,7 @@ cost = 0 requirements = list(101,101,101,101,101,101,101,101,101,101) high_population_requirement = 101 + property_weights = list("extended" = -10, "chaos" = 5, "trust" = 5) var/meteordelay = 2000 var/nometeors = 0 var/rampupdelta = 5 diff --git a/code/game/gamemodes/dynamic/storytellers/dynamic_storytellers.dm b/code/game/gamemodes/dynamic/storytellers/dynamic_storytellers.dm new file mode 100644 index 0000000000..c0a943a87e --- /dev/null +++ b/code/game/gamemodes/dynamic/storytellers/dynamic_storytellers.dm @@ -0,0 +1,93 @@ +/datum/dynamic_storyteller + var/name = "none" + var/desc = "A coder's idiocy." + var/list/property_weights = list() + var/datum/game_mode/dynamic/mode = null + +/** +Property weights are: +"story_potential" -- essentially how many different ways the antag can be played. +"trust" -- How much it makes the crew trust each other. Negative values means they're suspicious. Team antags are like this. +"chaos" -- How chaotic it makes the round. Has some overlap with "valid" and somewhat contradicts "extended". +"valid" -- How likely the non-antag-enemy crew are to get involved, e.g. nukies encouraging the warden to + let everyone into the armory, wizard moving around and being a nuisance, nightmare busting lights. +"extended" -- How much the antag is conducive to a long round. Nukies and cults are bad for this; Wizard is less bad; and so on. +"conversion" -- Basically a bool. Conversion antags, well, convert. It's its own class for a good reason. +*/ + +/datum/dynamic_storyteller/New() + ..() + if (istype(SSticker.mode, /datum/game_mode/dynamic)) + mode = SSticker.mode + else if (GLOB.master_mode != "dynamic") + qdel(src) + +/datum/dynamic_storyteller/proc/do_process() + continue + +/datum/dynamic_storyteller/proc/midround_draft() + var/list/drafted_rules = list() + for (var/datum/dynamic_ruleset/midround/rule in mode.midround_rules) + // if there are antags OR the rule is an antag rule, antag_acceptable will be true. + if (rule.acceptable(mode.current_players[CURRENT_LIVING_PLAYERS].len, mode.threat_level) && mode.threat >= rule.cost) + // Classic secret : only autotraitor/minor roles + if (GLOB.dynamic_classic_secret && !((rule.flags & TRAITOR_RULESET) || (rule.flags & MINOR_RULESET))) + continue + rule.trim_candidates() + if (rule.ready()) + var/property_weight = 0 + for(var/property in property_weights) + if(property in rule.property_weights) // just treat it as 0 if it's not in there + property_weight += rule.property_weight[property] * property_weights[property] + drafted_rules[rule] = rule.get_weight() + property_weight + return drafted_rules + +/datum/dynamic_storyteller/proc/latejoin_draft(mob/living/carbon/human/newPlayer) + var/list/drafted_rules = list() + for (var/datum/dynamic_ruleset/latejoin/rule in mode.latejoin_rules) + if (rule.acceptable(current_players[CURRENT_LIVING_PLAYERS].len, mode.threat_level) && mode.threat >= rule.cost) + // Classic secret : only autotraitor/minor roles + if (GLOB.dynamic_classic_secret && !((rule.flags & TRAITOR_RULESET) || (rule.flags & MINOR_RULESET))) + continue + // No stacking : only one round-ender, unless threat level > stacking_limit. + if (mode.threat_level > GLOB.dynamic_stacking_limit && GLOB.dynamic_no_stacking) + if(rule.flags & HIGHLANDER_RULESET && highlander_executed) + continue + + rule.candidates = list(newPlayer) + rule.trim_candidates() + if (rule.ready()) + var/property_weight = 0 + for(var/property in property_weights) + if(property in rule.property_weights) // just treat it as 0 if it's not in there + property_weight += rule.property_weight[property] * property_weights[property] + drafted_rules[rule] = rule.get_weight() + property_weight + +/datum/dynamic_storyteller/team + name = "Teamwork" + desc = "Rules that are likely to get the crew to work together against a common enemy." + property_weights = list("valid" = 3, "trust" = 5) + +/datum/dynamic_storyteller/liteextended + name = "Extended-lite" + desc = "Rules that are likely to lead to rounds that reach their finish at the shuttle autocall." + property_weights = list("extended" = 5, "chaos" = -1, "valid" = -1, "story_potential" = 1, "conversion" = -10) + +/datum/dynamic_storyteller/memes + name = "Story" + desc = "Rules that might lead to fun stories to tell." + property_weights = list("story_potential" = 10) + +/datum/dynamic_storyteller/cowabunga + name = "Cowabunga" + desc = "The most chaotic rules only. A validhunter's dream." + property_weights = list("extended" = -1, "chaos" = 10) + +/datum/dynamic_storyteller/suspicion + name = "Intrigue" + desc = "Rules that lead the crew to distrust one another." + property_weights = list("trust" = -5, "valid" = -1) + +/datum/dynamic_storyteller/classic + name = "Classic" + desc = "Uses default dynamic weights and nothing else. The most variety." From 0deaebc4ca9c9ad5d4bee056465983b3de1331a5 Mon Sep 17 00:00:00 2001 From: Putnam Date: Sat, 14 Dec 2019 14:16:02 -0800 Subject: [PATCH 017/192] voting makes everything dumb --- code/game/gamemodes/dynamic/dynamic.dm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/code/game/gamemodes/dynamic/dynamic.dm b/code/game/gamemodes/dynamic/dynamic.dm index 6566d41e21..72a6457b96 100644 --- a/code/game/gamemodes/dynamic/dynamic.dm +++ b/code/game/gamemodes/dynamic/dynamic.dm @@ -52,6 +52,8 @@ GLOBAL_LIST_EMPTY(dynamic_forced_roundstart_ruleset) // Forced threat level, setting this to zero or higher forces the roundstart threat to the value. GLOBAL_VAR_INIT(dynamic_forced_threat_level, -1) +GLOBAL_VAR_INIT(dynamic_storyteller, /datum/dynamic_storyteller/classic) + /datum/game_mode/dynamic name = "dynamic mode" config_tag = "dynamic" @@ -60,8 +62,6 @@ GLOBAL_VAR_INIT(dynamic_forced_threat_level, -1) announce_text = "Dynamic mode!" // This needs to be changed maybe reroll_friendly = FALSE; - // Current storyteller - var/datum/dynamic_storyteller/storyteller = null // Threat logging vars /// The "threat cap", threat shouldn't normally go above this and is used in ruleset calculations var/threat_level = 0 From 967bcce38ee534c9ea7f4571d3d20a6e8b3a7f2b Mon Sep 17 00:00:00 2001 From: Putnam Date: Sat, 14 Dec 2019 14:17:05 -0800 Subject: [PATCH 018/192] actually i still need this --- code/game/gamemodes/dynamic/dynamic.dm | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/code/game/gamemodes/dynamic/dynamic.dm b/code/game/gamemodes/dynamic/dynamic.dm index 72a6457b96..65c8cb347e 100644 --- a/code/game/gamemodes/dynamic/dynamic.dm +++ b/code/game/gamemodes/dynamic/dynamic.dm @@ -52,7 +52,7 @@ GLOBAL_LIST_EMPTY(dynamic_forced_roundstart_ruleset) // Forced threat level, setting this to zero or higher forces the roundstart threat to the value. GLOBAL_VAR_INIT(dynamic_forced_threat_level, -1) -GLOBAL_VAR_INIT(dynamic_storyteller, /datum/dynamic_storyteller/classic) +GLOBAL_VAR_INIT(dynamic_storyteller_type, /datum/dynamic_storyteller/classic) /datum/game_mode/dynamic name = "dynamic mode" @@ -62,6 +62,8 @@ GLOBAL_VAR_INIT(dynamic_storyteller, /datum/dynamic_storyteller/classic) announce_text = "Dynamic mode!" // This needs to be changed maybe reroll_friendly = FALSE; + // Current storyteller + var/datum/dynamic_storyteller/storyteller = null // Threat logging vars /// The "threat cap", threat shouldn't normally go above this and is used in ruleset calculations var/threat_level = 0 From b96d36e7192001897a51757d7a24a30bf9ffc8ca Mon Sep 17 00:00:00 2001 From: Putnam Date: Sat, 14 Dec 2019 20:01:30 -0800 Subject: [PATCH 019/192] alright that's that --- .../configuration/configuration.dm | 11 +++ code/controllers/subsystem/ticker.dm | 2 +- code/game/gamemodes/dynamic/dynamic.dm | 54 +++---------- .../dynamic_storytellers.dm | 78 +++++++++++++------ tgstation.dme | 1 + 5 files changed, 78 insertions(+), 68 deletions(-) rename code/game/gamemodes/dynamic/{storytellers => }/dynamic_storytellers.dm (55%) diff --git a/code/controllers/configuration/configuration.dm b/code/controllers/configuration/configuration.dm index a5d27819b8..14954524fa 100644 --- a/code/controllers/configuration/configuration.dm +++ b/code/controllers/configuration/configuration.dm @@ -14,6 +14,7 @@ var/list/modes // allowed modes var/list/gamemode_cache var/list/votable_modes // votable modes + var/list/storyteller_cache var/list/mode_names var/list/mode_reports var/list/mode_false_report_weight @@ -37,6 +38,7 @@ CRASH("/datum/controller/configuration/Load() called more than once!") InitEntries() LoadModes() + storyteller_cache = typecacheof(/datum/dynamic_storyteller, TRUE) if(fexists("[directory]/config.txt") && LoadEntries("config.txt") <= 1) var/list/legacy_configs = list("game_options.txt", "dbconfig.txt", "comms.txt") for(var/I in legacy_configs) @@ -227,6 +229,7 @@ for(var/T in gamemode_cache) // I wish I didn't have to instance the game modes in order to look up // their information, but it is the only way (at least that I know of). + // for future reference: just use initial() lol var/datum/game_mode/M = new T() if(M.config_tag) @@ -317,6 +320,14 @@ return new T return new /datum/game_mode/extended() +/datum/controller/configuration/proc/pick_storyteller(storyteller_name) + for(var/T in storyteller_cache) + var/datum/dynamic_storyteller/S = T + var/name = initial(S.name) + if(name && name == storyteller_name) + return T + return /datum/dynamic_storyteller/classic + /datum/controller/configuration/proc/get_runnable_modes() var/list/datum/game_mode/runnable_modes = new var/list/probabilities = Get(/datum/config_entry/keyed_list/probability) diff --git a/code/controllers/subsystem/ticker.dm b/code/controllers/subsystem/ticker.dm index 6f619fef0b..baaa78e56f 100755 --- a/code/controllers/subsystem/ticker.dm +++ b/code/controllers/subsystem/ticker.dm @@ -480,7 +480,7 @@ SUBSYSTEM_DEF(ticker) SSticker.timeLeft = 900 SSticker.modevoted = TRUE var/dynamic = CONFIG_GET(flag/dynamic_voting) - SSvote.initiate_vote(dynamic ? "dynamic" : "roundtype","server",TRUE) + SSvote.initiate_vote(dynamic ? "dynamic" : "roundtype","server",TRUE,dynamic) /datum/controller/subsystem/ticker/Recover() current_state = SSticker.current_state diff --git a/code/game/gamemodes/dynamic/dynamic.dm b/code/game/gamemodes/dynamic/dynamic.dm index 65c8cb347e..ea780d47fe 100644 --- a/code/game/gamemodes/dynamic/dynamic.dm +++ b/code/game/gamemodes/dynamic/dynamic.dm @@ -52,7 +52,7 @@ GLOBAL_LIST_EMPTY(dynamic_forced_roundstart_ruleset) // Forced threat level, setting this to zero or higher forces the roundstart threat to the value. GLOBAL_VAR_INIT(dynamic_forced_threat_level, -1) -GLOBAL_VAR_INIT(dynamic_storyteller_type, /datum/dynamic_storyteller/classic) +GLOBAL_VAR_INIT(dynamic_storyteller_type, null) /datum/game_mode/dynamic name = "dynamic mode" @@ -373,6 +373,7 @@ GLOBAL_VAR_INIT(dynamic_storyteller_type, /datum/dynamic_storyteller/classic) if("Event") if(ruleset.weight) events += ruleset + storyteller = new GLOB.dynamic_storyteller_type for(var/mob/dead/new_player/player in GLOB.player_list) if(player.ready == PLAYER_READY_TO_PLAY && player.mind) roundstart_pop_ready++ @@ -422,13 +423,7 @@ GLOBAL_VAR_INIT(dynamic_storyteller_type, /datum/dynamic_storyteller/classic) if (GLOB.dynamic_forced_extended) log_game("DYNAMIC: Starting a round of forced extended.") return TRUE - var/list/drafted_rules = list() - for (var/datum/dynamic_ruleset/roundstart/rule in roundstart_rules) - if (rule.acceptable(roundstart_pop_ready, threat_level) && threat >= rule.cost) // If we got the population and threat required - rule.candidates = candidates.Copy() - rule.trim_candidates() - if (rule.ready() && rule.candidates.len > 0) - drafted_rules[rule] = rule.weight + var/list/drafted_rules = storyteller.roundstart_draft() if(!drafted_rules.len) message_admins("Not enough threat level for roundstart antags!") log_game("DYNAMIC: Not enough threat level for roundstart antags!") @@ -655,7 +650,9 @@ GLOBAL_VAR_INIT(dynamic_storyteller_type, /datum/dynamic_storyteller/classic) for (var/datum/dynamic_ruleset/rule in current_rules) if(rule.rule_process() == RULESET_STOP_PROCESSING) // If rule_process() returns 1 (RULESET_STOP_PROCESSING), stop processing. current_rules -= rule - + + storyteller.do_process() + if (midround_injection_cooldown < world.time) if (GLOB.dynamic_forced_extended) return @@ -673,21 +670,7 @@ GLOBAL_VAR_INIT(dynamic_storyteller_type, /datum/dynamic_storyteller/classic) update_playercounts() if (get_injection_chance()) - var/cur_threat_frac = threat/threat_level - var/list/drafted_rules = list() - var/antag_num = current_players[CURRENT_LIVING_ANTAGS].len - for (var/datum/dynamic_ruleset/midround/rule in midround_rules) - // if there are antags OR the rule is an antag rule, antag_acceptable will be true. - if (rule.acceptable(current_players[CURRENT_LIVING_PLAYERS].len, threat_level) && threat >= rule.cost) - // Classic secret : only autotraitor/minor roles - if (GLOB.dynamic_classic_secret && !((rule.flags & TRAITOR_RULESET) || (rule.flags & MINOR_RULESET))) - continue - rule.trim_candidates() - if (rule.ready()) - if(!antag_num) - drafted_rules[rule] = round(rule.get_weight() + (rule.cost * cur_threat_frac)) - else - drafted_rules[rule] = rule.get_weight() + var/list/drafted_rules = storyteller.midround_draft() if (drafted_rules.len > 0) picking_midround_latejoin_rule(drafted_rules) else @@ -699,11 +682,7 @@ GLOBAL_VAR_INIT(dynamic_storyteller_type, /datum/dynamic_storyteller/classic) message_admins("DYNAMIC: Doing event injection.") log_game("DYNAMIC: Doing event injection.") update_playercounts() - var/list/drafted_rules = list() - for(var/datum/dynamic_ruleset/event/rule in events) - if(rule.acceptable(current_players[CURRENT_LIVING_PLAYERS].len, threat_level) && threat >= rule.cost) - if(rule.ready()) - drafted_rules[rule] = rule.get_weight() + var/list/drafted_rules = storyteller.event_draft() if(drafted_rules.len > 0) picking_midround_latejoin_rule(drafted_rules) @@ -795,22 +774,7 @@ GLOBAL_VAR_INIT(dynamic_storyteller_type, /datum/dynamic_storyteller/classic) forced_latejoin_rule = null else if (latejoin_injection_cooldown < world.time && prob(get_injection_chance())) - var/list/drafted_rules = list() - for (var/datum/dynamic_ruleset/latejoin/rule in latejoin_rules) - if (rule.acceptable(current_players[CURRENT_LIVING_PLAYERS].len, threat_level) && threat >= rule.cost) - // Classic secret : only autotraitor/minor roles - if (GLOB.dynamic_classic_secret && !((rule.flags & TRAITOR_RULESET) || (rule.flags & MINOR_RULESET))) - continue - // No stacking : only one round-ender, unless threat level > stacking_limit. - if (threat_level > GLOB.dynamic_stacking_limit && GLOB.dynamic_no_stacking) - if(rule.flags & HIGHLANDER_RULESET && highlander_executed) - continue - - rule.candidates = list(newPlayer) - rule.trim_candidates() - if (rule.ready()) - drafted_rules[rule] = rule.get_weight() - + var/list/drafted_rules = storyteller.latejoin_draft(newPlayer) if (drafted_rules.len > 0 && picking_midround_latejoin_rule(drafted_rules)) var/latejoin_injection_cooldown_middle = 0.5*(GLOB.dynamic_latejoin_delay_max + GLOB.dynamic_latejoin_delay_min) latejoin_injection_cooldown = round(CLAMP(EXP_DISTRIBUTION(latejoin_injection_cooldown_middle), GLOB.dynamic_latejoin_delay_min, GLOB.dynamic_latejoin_delay_max)) + world.time diff --git a/code/game/gamemodes/dynamic/storytellers/dynamic_storytellers.dm b/code/game/gamemodes/dynamic/dynamic_storytellers.dm similarity index 55% rename from code/game/gamemodes/dynamic/storytellers/dynamic_storytellers.dm rename to code/game/gamemodes/dynamic/dynamic_storytellers.dm index c0a943a87e..de15c03080 100644 --- a/code/game/gamemodes/dynamic/storytellers/dynamic_storytellers.dm +++ b/code/game/gamemodes/dynamic/dynamic_storytellers.dm @@ -2,6 +2,8 @@ var/name = "none" var/desc = "A coder's idiocy." var/list/property_weights = list() + var/curve_centre = 0 + var/curve_width = 1.8 var/datum/game_mode/dynamic/mode = null /** @@ -19,11 +21,23 @@ Property weights are: ..() if (istype(SSticker.mode, /datum/game_mode/dynamic)) mode = SSticker.mode - else if (GLOB.master_mode != "dynamic") - qdel(src) /datum/dynamic_storyteller/proc/do_process() - continue + return + +/datum/dynamic_storyteller/proc/roundstart_draft() + var/list/drafted_rules = list() + for (var/datum/dynamic_ruleset/roundstart/rule in mode.roundstart_rules) + if (rule.acceptable(mode.roundstart_pop_ready, mode.threat_level) && mode.threat >= rule.cost) // If we got the population and threat required + rule.candidates = mode.candidates.Copy() + rule.trim_candidates() + if (rule.ready() && rule.candidates.len > 0) + var/property_weight = 0 + for(var/property in property_weights) + if(property in rule.property_weights) // just treat it as 0 if it's not in there + property_weight += rule.property_weights[property] * property_weights[property] + drafted_rules[rule] = rule.get_weight() + property_weight + return drafted_rules /datum/dynamic_storyteller/proc/midround_draft() var/list/drafted_rules = list() @@ -37,55 +51,75 @@ Property weights are: if (rule.ready()) var/property_weight = 0 for(var/property in property_weights) - if(property in rule.property_weights) // just treat it as 0 if it's not in there - property_weight += rule.property_weight[property] * property_weights[property] + if(property in rule.property_weights) + property_weight += rule.property_weights[property] * property_weights[property] drafted_rules[rule] = rule.get_weight() + property_weight return drafted_rules /datum/dynamic_storyteller/proc/latejoin_draft(mob/living/carbon/human/newPlayer) - var/list/drafted_rules = list() - for (var/datum/dynamic_ruleset/latejoin/rule in mode.latejoin_rules) - if (rule.acceptable(current_players[CURRENT_LIVING_PLAYERS].len, mode.threat_level) && mode.threat >= rule.cost) - // Classic secret : only autotraitor/minor roles - if (GLOB.dynamic_classic_secret && !((rule.flags & TRAITOR_RULESET) || (rule.flags & MINOR_RULESET))) + var/list/drafted_rules = list() + for (var/datum/dynamic_ruleset/latejoin/rule in mode.latejoin_rules) + if (rule.acceptable(mode.current_players[CURRENT_LIVING_PLAYERS].len, mode.threat_level) && mode.threat >= rule.cost) + // Classic secret : only autotraitor/minor roles + if (GLOB.dynamic_classic_secret && !((rule.flags & TRAITOR_RULESET) || (rule.flags & MINOR_RULESET))) + continue + // No stacking : only one round-ender, unless threat level > stacking_limit. + if (mode.threat_level > GLOB.dynamic_stacking_limit && GLOB.dynamic_no_stacking) + if(rule.flags & HIGHLANDER_RULESET && mode.highlander_executed) continue - // No stacking : only one round-ender, unless threat level > stacking_limit. - if (mode.threat_level > GLOB.dynamic_stacking_limit && GLOB.dynamic_no_stacking) - if(rule.flags & HIGHLANDER_RULESET && highlander_executed) - continue - rule.candidates = list(newPlayer) - rule.trim_candidates() - if (rule.ready()) - var/property_weight = 0 - for(var/property in property_weights) - if(property in rule.property_weights) // just treat it as 0 if it's not in there - property_weight += rule.property_weight[property] * property_weights[property] - drafted_rules[rule] = rule.get_weight() + property_weight + rule.candidates = list(newPlayer) + rule.trim_candidates() + if (rule.ready()) + var/property_weight = 0 + for(var/property in property_weights) + if(property in rule.property_weights) + property_weight += rule.property_weights[property] * property_weights[property] + drafted_rules[rule] = rule.get_weight() + property_weight + return drafted_rules + +/datum/dynamic_storyteller/proc/event_draft() + var/list/drafted_rules = list() + for(var/datum/dynamic_ruleset/event/rule in mode.events) + if(rule.acceptable(mode.current_players[CURRENT_LIVING_PLAYERS].len, mode.threat_level) && mode.threat >= rule.cost) + if(rule.ready()) + var/property_weight = 0 + for(var/property in property_weights) + if(property in rule.property_weights) + property_weight += rule.property_weights[property] * property_weights[property] + drafted_rules[rule] = rule.get_weight() + property_weight + return drafted_rules /datum/dynamic_storyteller/team name = "Teamwork" desc = "Rules that are likely to get the crew to work together against a common enemy." + curve_centre = 2 + curve_width = 1.5 property_weights = list("valid" = 3, "trust" = 5) /datum/dynamic_storyteller/liteextended name = "Extended-lite" desc = "Rules that are likely to lead to rounds that reach their finish at the shuttle autocall." + curve_centre = -5 + curve_width = 0.5 property_weights = list("extended" = 5, "chaos" = -1, "valid" = -1, "story_potential" = 1, "conversion" = -10) /datum/dynamic_storyteller/memes name = "Story" desc = "Rules that might lead to fun stories to tell." + curve_width = 4 property_weights = list("story_potential" = 10) /datum/dynamic_storyteller/cowabunga name = "Cowabunga" + curve_centre = 10 desc = "The most chaotic rules only. A validhunter's dream." property_weights = list("extended" = -1, "chaos" = 10) /datum/dynamic_storyteller/suspicion name = "Intrigue" desc = "Rules that lead the crew to distrust one another." + curve_width = 4 property_weights = list("trust" = -5, "valid" = -1) /datum/dynamic_storyteller/classic diff --git a/tgstation.dme b/tgstation.dme index 4c7e29739f..98a998b2e2 100755 --- a/tgstation.dme +++ b/tgstation.dme @@ -573,6 +573,7 @@ #include "code\game\gamemodes\dynamic\dynamic_rulesets_latejoin.dm" #include "code\game\gamemodes\dynamic\dynamic_rulesets_midround.dm" #include "code\game\gamemodes\dynamic\dynamic_rulesets_roundstart.dm" +#include "code\game\gamemodes\dynamic\dynamic_storytellers.dm" #include "code\game\gamemodes\extended\extended.dm" #include "code\game\gamemodes\meteor\meteor.dm" #include "code\game\gamemodes\meteor\meteors.dm" From 74e4391cee917bfc672fc3e40361b74576deb01a Mon Sep 17 00:00:00 2001 From: Putnam Date: Sat, 14 Dec 2019 20:01:38 -0800 Subject: [PATCH 020/192] uh, vote changes necessary too --- code/controllers/subsystem/vote.dm | 106 ++++++++++++++++------------- 1 file changed, 57 insertions(+), 49 deletions(-) diff --git a/code/controllers/subsystem/vote.dm b/code/controllers/subsystem/vote.dm index dee10e4998..9c2f4814ac 100644 --- a/code/controllers/subsystem/vote.dm +++ b/code/controllers/subsystem/vote.dm @@ -1,3 +1,6 @@ +#define PLURALITY 0 +#define APPROVAL 1 + SUBSYSTEM_DEF(vote) name = "Vote" wait = 10 @@ -10,8 +13,10 @@ SUBSYSTEM_DEF(vote) var/started_time = null var/time_remaining = 0 var/mode = null + var/vote_system = PLURALITY var/question = null var/list/choices = list() + var/list/choice_descs = list() // optional descriptions var/list/voted = list() var/list/voting = list() var/list/generated_actions = list() @@ -124,9 +129,6 @@ SUBSYSTEM_DEF(vote) message_admins(admintext) return . -#define PEACE "calm" -#define CHAOS "chaotic" - /datum/controller/subsystem/vote/proc/result() . = announce_result() var/restart = 0 @@ -153,32 +155,15 @@ SUBSYSTEM_DEF(vote) if(SSticker.current_state > GAME_STATE_PREGAME)//Don't change the mode if the round already started. return message_admins("A vote has tried to change the gamemode, but the game has already started. Aborting.") GLOB.master_mode = "dynamic" - if("extended" in choices) - if(. == "extended") - GLOB.dynamic_forced_extended = TRUE // we still do the rest of the stuff - choices[PEACE] += choices["extended"] - var/mean = 0 - var/voters = 0 - for(var/client/c in GLOB.clients) - var/vote = c.prefs.preferred_chaos - if(vote) - voters += 1 - switch(vote) - if(CHAOS_NONE) - mean -= 0.1 - if(CHAOS_LOW) - mean -= 0.05 - if(CHAOS_HIGH) - mean += 0.05 - if(CHAOS_MAX) - mean += 0.1 - mean/=voters - if(voted.len != 0) - mean += (choices[PEACE]*-1+choices[CHAOS])/voted.len - GLOB.dynamic_curve_centre = mean*20 - GLOB.dynamic_curve_width = CLAMP(2-abs(mean*5),0.5,4) - to_chat(world,"Dynamic curve centre set to [GLOB.dynamic_curve_centre] and width set to [GLOB.dynamic_curve_width].") - log_admin("Dynamic curve centre set to [GLOB.dynamic_curve_centre] and width set to [GLOB.dynamic_curve_width]") + if(. == "extended") + GLOB.dynamic_forced_extended = TRUE // we still do the rest of the stuff + GLOB.dynamic_storyteller_type = /datum/dynamic_storyteller/liteextended + GLOB.dynamic_forced_threat_level = 15 + else + var/datum/dynamic_storyteller/S = config.pick_storyteller(.) + GLOB.dynamic_storyteller_type = S + GLOB.dynamic_curve_centre = initial(S.curve_centre) + GLOB.dynamic_curve_width = initial(S.curve_width) if("map") var/datum/map_config/VM = config.maplist[.] message_admins("The map has been voted for and will change to: [VM.map_name]") @@ -203,20 +188,36 @@ SUBSYSTEM_DEF(vote) if(mode) if(CONFIG_GET(flag/no_dead_vote) && usr.stat == DEAD && !usr.client.holder) return 0 - if(!(usr.ckey in voted)) - if(vote && 1<=vote && vote<=choices.len) - voted += usr.ckey - voted[usr.ckey] = vote - choices[choices[vote]]++ //check this - return vote - else if(vote && 1<=vote && vote<=choices.len) - choices[choices[voted[usr.ckey]]]-- - voted[usr.ckey] = vote - choices[choices[vote]]++ - return vote + if(vote && vote >= 1 && vote <= choices.len) + switch(vote_system) + if(PLURALITY) + if(usr.ckey in voted) + choices[choices[voted[usr.ckey]]]-- + voted[usr.ckey] = vote + choices[choices[vote]]++ + return vote + else + voted += usr.ckey + voted[usr.ckey] = vote + choices[choices[vote]]++ //check this + return vote + if(APPROVAL) + if(usr.ckey in voted) + if(vote in voted[usr.ckey]) + voted[usr.ckey] -= vote + choices[choices[vote]]-- + else + voted[usr.ckey].Add(vote) + choices[choices[vote]]++ + else + voted += usr.ckey + voted[usr.ckey] = list(vote) + choices[choices[vote]]++ + return vote return 0 -/datum/controller/subsystem/vote/proc/initiate_vote(vote_type, initiator_key, hideresults)//CIT CHANGE - adds hideresults argument to votes to allow for obfuscated votes +/datum/controller/subsystem/vote/proc/initiate_vote(vote_type, initiator_key, hideresults, votesystem = PLURALITY)//CIT CHANGE - adds hideresults argument to votes to allow for obfuscated votes + vote_system = votesystem if(!mode) if(started_time) var/next_allowed_time = (started_time + CONFIG_GET(number/vote_delay)) @@ -259,9 +260,11 @@ SUBSYSTEM_DEF(vote) if("dynamic") var/saved_threats = SSpersistence.saved_threat_levels if((saved_threats[1]+saved_threats[2]+saved_threats[3])>150) - choices.Add("extended",PEACE,CHAOS) - else - choices.Add(PEACE,CHAOS) + choices.Add("extended") + for(var/T in config.storyteller_cache) + var/datum/dynamic_storyteller/S = T + choices.Add(initial(S.name)) + choice_descs.Add(initial(S.desc)) if("custom") question = stripped_input(usr,"What is the vote for?") if(!question) @@ -311,13 +314,21 @@ SUBSYSTEM_DEF(vote) . += "

Vote: '[question]'

" else . += "

Vote: [capitalize(mode)]

" + . += "

Vote [vote_system == PLURALITY ? "your top choice" : "all that apply"].

" . += "Time Left: [time_remaining] s

" if(admin) . += "(Cancel Vote) " @@ -392,7 +403,7 @@ SUBSYSTEM_DEF(vote) set category = "OOC" set name = "Vote" - var/datum/browser/popup = new(src, "vote", "Voting Panel") + var/datum/browser/popup = new(src, "vote", "Voting Panel",nwidth=600,nheight=600) popup.set_window_options("can_close=0") popup.set_content(SSvote.interface(client)) popup.open(0) @@ -419,6 +430,3 @@ SUBSYSTEM_DEF(vote) var/datum/player_details/P = GLOB.player_details[owner.ckey] if(P) P.player_actions -= src - -#undef PEACE -#undef CHAOS From e44566038b9e949a92a40f208cb8a15dc89c7c04 Mon Sep 17 00:00:00 2001 From: Putnam Date: Sat, 14 Dec 2019 20:32:34 -0800 Subject: [PATCH 021/192] linter is correct --- code/controllers/subsystem/vote.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/controllers/subsystem/vote.dm b/code/controllers/subsystem/vote.dm index 9c2f4814ac..b34713254d 100644 --- a/code/controllers/subsystem/vote.dm +++ b/code/controllers/subsystem/vote.dm @@ -207,7 +207,7 @@ SUBSYSTEM_DEF(vote) voted[usr.ckey] -= vote choices[choices[vote]]-- else - voted[usr.ckey].Add(vote) + voted[usr.ckey] += vote choices[choices[vote]]++ else voted += usr.ckey From f943bcb3b573bce3aa1f7090cd4ce48d1968cef7 Mon Sep 17 00:00:00 2001 From: Putnam Date: Sun, 15 Dec 2019 12:17:07 -0800 Subject: [PATCH 022/192] make cowabunga description less, uh, bad --- code/game/gamemodes/dynamic/dynamic_storytellers.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/game/gamemodes/dynamic/dynamic_storytellers.dm b/code/game/gamemodes/dynamic/dynamic_storytellers.dm index de15c03080..8e33c94a24 100644 --- a/code/game/gamemodes/dynamic/dynamic_storytellers.dm +++ b/code/game/gamemodes/dynamic/dynamic_storytellers.dm @@ -113,7 +113,7 @@ Property weights are: /datum/dynamic_storyteller/cowabunga name = "Cowabunga" curve_centre = 10 - desc = "The most chaotic rules only. A validhunter's dream." + desc = "The most chaotic rules are weighted heavily here. Rounds are nasty, brutish and short." property_weights = list("extended" = -1, "chaos" = 10) /datum/dynamic_storyteller/suspicion From 3d0d1de94c912eaaa01ea47faf4aaa1d62942a72 Mon Sep 17 00:00:00 2001 From: Putnam Date: Sun, 15 Dec 2019 14:49:32 -0800 Subject: [PATCH 023/192] Added bloodsucker weights. --- .../dynamic/dynamic_rulesets_midround.dm | 37 ++++++++++--------- .../dynamic/dynamic_rulesets_roundstart.dm | 1 + 2 files changed, 20 insertions(+), 18 deletions(-) diff --git a/code/game/gamemodes/dynamic/dynamic_rulesets_midround.dm b/code/game/gamemodes/dynamic/dynamic_rulesets_midround.dm index be497b3cce..84d33ce669 100644 --- a/code/game/gamemodes/dynamic/dynamic_rulesets_midround.dm +++ b/code/game/gamemodes/dynamic/dynamic_rulesets_midround.dm @@ -754,23 +754,24 @@ ////////////////////////////////////////////// /datum/dynamic_ruleset/latejoin/bloodsucker - name = "Bloodsucker Infiltrator" - config_tag = "latejoin_bloodsucker" - antag_datum = ANTAG_DATUM_BLOODSUCKER - antag_flag = ROLE_TRAITOR - restricted_roles = list("AI", "Cyborg") - protected_roles = list("Security Officer", "Warden", "Detective", "Head of Security", "Captain", "Head of Personnel", "Chief Engineer", "Chief Medical Officer", "Research Director", "Quartermaster") - required_candidates = 1 - weight = 3 - cost = 10 - requirements = list(90,80,70,60,55,50,45,40,35,30) - high_population_requirement = 30 - repeatable = TRUE + name = "Bloodsucker Infiltrator" + config_tag = "latejoin_bloodsucker" + antag_datum = ANTAG_DATUM_BLOODSUCKER + antag_flag = ROLE_TRAITOR + restricted_roles = list("AI", "Cyborg") + protected_roles = list("Security Officer", "Warden", "Detective", "Head of Security", "Captain", "Head of Personnel", "Chief Engineer", "Chief Medical Officer", "Research Director", "Quartermaster") + required_candidates = 1 + weight = 3 + cost = 10 + property_weights = list("extended" = 2, "chaos" = -1, "trust" = -3, "story_potential" = -2, "conversion" = 1, "valid" = 1) + requirements = list(90,80,70,60,55,50,45,40,35,30) + high_population_requirement = 30 + repeatable = TRUE /datum/dynamic_ruleset/latejoin/bloodsucker/execute() - var/mob/M = pick(candidates) - assigned += M.mind - M.mind.special_role = antag_flag - if(mode.make_bloodsucker(M.mind)) - mode.bloodsuckers += M - return TRUE + var/mob/M = pick(candidates) + assigned += M.mind + M.mind.special_role = antag_flag + if(mode.make_bloodsucker(M.mind)) + mode.bloodsuckers += M + return TRUE diff --git a/code/game/gamemodes/dynamic/dynamic_rulesets_roundstart.dm b/code/game/gamemodes/dynamic/dynamic_rulesets_roundstart.dm index 80146b8657..1abdcef3f1 100644 --- a/code/game/gamemodes/dynamic/dynamic_rulesets_roundstart.dm +++ b/code/game/gamemodes/dynamic/dynamic_rulesets_roundstart.dm @@ -812,6 +812,7 @@ weight = 2 cost = 15 scaling_cost = 10 + property_weights = list("extended" = 2, "chaos" = -1, "trust" = -3, "story_potential" = -2, "conversion" = 1) requirements = list(90,80,70,60,50,50,50,50,50,50) high_population_requirement = 50 antag_cap = list(1,1,1,1,1,2,2,2,2,2) From 138f2d05f06410c5f2f534d2c9140f720dcde01c Mon Sep 17 00:00:00 2001 From: Putnam Date: Sun, 15 Dec 2019 14:49:43 -0800 Subject: [PATCH 024/192] Made intrigue not care about valid. --- code/game/gamemodes/dynamic/dynamic_storytellers.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/game/gamemodes/dynamic/dynamic_storytellers.dm b/code/game/gamemodes/dynamic/dynamic_storytellers.dm index 8e33c94a24..1f0abc7312 100644 --- a/code/game/gamemodes/dynamic/dynamic_storytellers.dm +++ b/code/game/gamemodes/dynamic/dynamic_storytellers.dm @@ -120,7 +120,7 @@ Property weights are: name = "Intrigue" desc = "Rules that lead the crew to distrust one another." curve_width = 4 - property_weights = list("trust" = -5, "valid" = -1) + property_weights = list("trust" = -5) /datum/dynamic_storyteller/classic name = "Classic" From f244ac84b21a6bbf9a2cf53b4b265d2fa0aa1b27 Mon Sep 17 00:00:00 2001 From: Putnam Date: Sun, 15 Dec 2019 15:25:47 -0800 Subject: [PATCH 025/192] whoops --- code/game/gamemodes/dynamic/dynamic_rulesets_midround.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/game/gamemodes/dynamic/dynamic_rulesets_midround.dm b/code/game/gamemodes/dynamic/dynamic_rulesets_midround.dm index 84d33ce669..6b03bb3fb3 100644 --- a/code/game/gamemodes/dynamic/dynamic_rulesets_midround.dm +++ b/code/game/gamemodes/dynamic/dynamic_rulesets_midround.dm @@ -773,5 +773,5 @@ assigned += M.mind M.mind.special_role = antag_flag if(mode.make_bloodsucker(M.mind)) - mode.bloodsuckers += M + mode.bloodsuckers += M return TRUE From 5bf252a58c408b8b5f9a70acd6b70bdcc1e81766 Mon Sep 17 00:00:00 2001 From: Ghommie <42542238+Ghommie@users.noreply.github.com> Date: Tue, 17 Dec 2019 01:57:56 +0100 Subject: [PATCH 026/192] Ports "Fixes ChangeTurf CHANGETURF_INHERIT_AIR flag and add it to all calls." --- code/game/mecha/equipment/tools/work_tools.dm | 6 +- .../effects/effect_system/effects_foam.dm | 2 +- code/game/objects/items/stacks/stack.dm | 9 ++- code/game/objects/items/twohanded.dm | 2 +- code/game/objects/structures/lattice.dm | 2 +- code/game/objects/structures/stairs.dm | 4 +- code/game/turfs/change_turf.dm | 15 ++-- code/game/turfs/closed.dm | 2 +- code/game/turfs/open.dm | 2 +- code/game/turfs/openspace/openspace.dm | 2 +- code/game/turfs/simulated/chasm.dm | 4 +- code/game/turfs/simulated/floor.dm | 22 +++--- code/game/turfs/simulated/floor/plating.dm | 12 +-- .../game/turfs/simulated/floor/reinf_floor.dm | 14 ++-- code/game/turfs/simulated/lava.dm | 2 +- code/game/turfs/space/space.dm | 4 +- code/game/turfs/turf.dm | 4 +- .../clock_items/replica_fabricator.dm | 2 +- .../clockcult/clock_structures/wall_gear.dm | 2 +- .../antagonists/cult/cult_structures.dm | 4 +- code/modules/buildmode/submodes/basic.dm | 6 +- .../mining/lavaland/necropolis_chests.dm | 4 +- .../mob/living/simple_animal/bot/floorbot.dm | 8 +- .../hostile/megafauna/colossus.dm | 5 +- .../hostile/mining_mobs/necropolis_tendril.dm | 2 +- code/modules/projectiles/projectile/magic.dm | 2 +- .../chemistry/reagents/other_reagents.dm | 77 ++++--------------- .../reagents/pyrotechnic_reagents.dm | 2 +- .../ruins/objects_and_mobs/sin_ruins.dm | 2 +- code/modules/spells/spell_types/conjure.dm | 2 +- code/modules/spells/spell_types/devil.dm | 4 +- .../reagents/chemistry/reagents/astrogen.dm | 2 +- 32 files changed, 91 insertions(+), 141 deletions(-) diff --git a/code/game/mecha/equipment/tools/work_tools.dm b/code/game/mecha/equipment/tools/work_tools.dm index 36708fcf90..ca8e8cecd9 100644 --- a/code/game/mecha/equipment/tools/work_tools.dm +++ b/code/game/mecha/equipment/tools/work_tools.dm @@ -262,14 +262,14 @@ occupant_message("Deconstructing [W]...") if(do_after_cooldown(W)) chassis.spark_system.start() - W.ScrapeAway() + W.ScrapeAway(flags = CHANGETURF_INHERIT_AIR) playsound(W, 'sound/items/deconstruct.ogg', 50, 1) else if(isfloorturf(target)) var/turf/open/floor/F = target occupant_message("Deconstructing [F]...") if(do_after_cooldown(target)) chassis.spark_system.start() - F.ScrapeAway() + F.ScrapeAway(flags = CHANGETURF_INHERIT_AIR) playsound(F, 'sound/items/deconstruct.ogg', 50, 1) else if (istype(target, /obj/machinery/door/airlock)) occupant_message("Deconstructing [target]...") @@ -282,7 +282,7 @@ var/turf/open/space/S = target occupant_message("Building Floor...") if(do_after_cooldown(S)) - S.PlaceOnTop(/turf/open/floor/plating) + S.PlaceOnTop(/turf/open/floor/plating, flags = CHANGETURF_INHERIT_AIR) playsound(S, 'sound/items/deconstruct.ogg', 50, 1) chassis.spark_system.start() else if(isfloorturf(target)) diff --git a/code/game/objects/effects/effect_system/effects_foam.dm b/code/game/objects/effects/effect_system/effects_foam.dm index 10ee73915c..b6deaa1d06 100644 --- a/code/game/objects/effects/effect_system/effects_foam.dm +++ b/code/game/objects/effects/effect_system/effects_foam.dm @@ -123,7 +123,7 @@ if(metal) var/turf/T = get_turf(src) if(isspaceturf(T)) //Block up any exposed space - T.PlaceOnTop(/turf/open/floor/plating/foam) + T.PlaceOnTop(/turf/open/floor/plating/foam, flags = CHANGETURF_INHERIT_AIR) for(var/direction in GLOB.cardinals) var/turf/cardinal_turf = get_step(T, direction) if(get_area(cardinal_turf) != get_area(T)) //We're at an area boundary, so let's block off this turf! diff --git a/code/game/objects/items/stacks/stack.dm b/code/game/objects/items/stacks/stack.dm index e8bd50f19b..d2ddd493b2 100644 --- a/code/game/objects/items/stacks/stack.dm +++ b/code/game/objects/items/stacks/stack.dm @@ -192,9 +192,14 @@ var/obj/O if(R.max_res_amount > 1) //Is it a stack? O = new R.result_type(usr.drop_location(), R.res_amount * multiplier) - else + else if(ispath(R.result_type, /turf)) + var/turf/T = usr.drop_location() + if(!isturf(T)) + return + T.PlaceOnTop(R.result_type, flags = CHANGETURF_INHERIT_AIR) O = new R.result_type(usr.drop_location()) - O.setDir(usr.dir) + if(O) + O.setDir(usr.dir) use(R.req_amount * multiplier) //START: oh fuck i'm so sorry diff --git a/code/game/objects/items/twohanded.dm b/code/game/objects/items/twohanded.dm index dd7d46d0d7..d7891feaa0 100644 --- a/code/game/objects/items/twohanded.dm +++ b/code/game/objects/items/twohanded.dm @@ -872,7 +872,7 @@ user.visible_message("[user] blasts \the [target] with \the [src]!") playsound(target, 'sound/magic/disintegrate.ogg', 100, 1) W.break_wall() - W.ScrapeAway() + W.ScrapeAway(flags = CHANGETURF_INHERIT_AIR) return //HF blade diff --git a/code/game/objects/structures/lattice.dm b/code/game/objects/structures/lattice.dm index b946a06432..a7eaea0d16 100644 --- a/code/game/objects/structures/lattice.dm +++ b/code/game/objects/structures/lattice.dm @@ -60,7 +60,7 @@ to_chat(user, "You build a floor.") var/turf/T = src.loc if(isspaceturf(T)) - T.PlaceOnTop(/turf/open/floor/plating) + T.PlaceOnTop(/turf/open/floor/plating, flags = CHANGETURF_INHERIT_AIR) qdel(src) return TRUE return FALSE diff --git a/code/game/objects/structures/stairs.dm b/code/game/objects/structures/stairs.dm index bd657fe1e8..f2c4e628e0 100644 --- a/code/game/objects/structures/stairs.dm +++ b/code/game/objects/structures/stairs.dm @@ -102,13 +102,13 @@ /obj/structure/stairs/proc/force_open_above() var/turf/open/openspace/T = get_step_multiz(get_turf(src), UP) if(T && !istype(T)) - T.ChangeTurf(/turf/open/openspace) + T.ChangeTurf(/turf/open/openspace, flags = CHANGETURF_INHERIT_AIR) /obj/structure/stairs/proc/on_multiz_new(turf/source, dir) if(dir == UP) var/turf/open/openspace/T = get_step_multiz(get_turf(src), UP) if(T && !istype(T)) - T.ChangeTurf(/turf/open/openspace) + T.ChangeTurf(/turf/open/openspace, flags = CHANGETURF_INHERIT_AIR) /obj/structure/stairs/intercept_zImpact(atom/movable/AM, levels = 1) . = ..() diff --git a/code/game/turfs/change_turf.dm b/code/game/turfs/change_turf.dm index 6a055bbd35..990ec91eeb 100644 --- a/code/game/turfs/change_turf.dm +++ b/code/game/turfs/change_turf.dm @@ -128,16 +128,15 @@ GLOBAL_LIST_INIT(blacklisted_automated_baseturfs, typecacheof(list( /turf/open/ChangeTurf(path, list/new_baseturfs, flags) if ((flags & CHANGETURF_INHERIT_AIR) && ispath(path, /turf/open)) SSair.remove_from_active(src) - var/stashed_air = air - air = null // so that it doesn't get deleted + var/datum/gas_mixture/stashed_air = new() + stashed_air.copy_from(air) . = ..() - if (!. || . == src) // changeturf failed or didn't do anything - air = stashed_air + if (!.) // changeturf failed or didn't do anything + QDEL_NULL(stashed_air) return var/turf/open/newTurf = . - if (!istype(newTurf.air, /datum/gas_mixture/immutable/space)) - QDEL_NULL(newTurf.air) - newTurf.air = stashed_air + newTurf.air.copy_from(stashed_air) + QDEL_NULL(stashed_air) SSair.add_to_active(newTurf) else if(ispath(path,/turf/closed)) @@ -315,5 +314,5 @@ GLOBAL_LIST_INIT(blacklisted_automated_baseturfs, typecacheof(list( SSair.add_to_active(src) /turf/proc/ReplaceWithLattice() - ScrapeAway() + ScrapeAway(flags = CHANGETURF_INHERIT_AIR) new /obj/structure/lattice(locate(x, y, z)) diff --git a/code/game/turfs/closed.dm b/code/game/turfs/closed.dm index 6297cadc63..9e593cafce 100644 --- a/code/game/turfs/closed.dm +++ b/code/game/turfs/closed.dm @@ -23,7 +23,7 @@ icon = 'icons/turf/walls.dmi' explosion_block = 50 -/turf/closed/indestructible/TerraformTurf(path, defer_change = FALSE, ignore_air = FALSE) +/turf/closed/indestructible/TerraformTurf(path, new_baseturf, flags, defer_change = FALSE, ignore_air = FALSE) return /turf/closed/indestructible/acid_act(acidpwr, acid_volume, acid_id) diff --git a/code/game/turfs/open.dm b/code/game/turfs/open.dm index 4bdb13effc..577c45a7f0 100644 --- a/code/game/turfs/open.dm +++ b/code/game/turfs/open.dm @@ -58,7 +58,7 @@ /turf/open/indestructible/singularity_act() return -/turf/open/indestructible/TerraformTurf(path, defer_change = FALSE, ignore_air = FALSE) +/turf/open/indestructible/TerraformTurf(path, new_baseturf, flags, defer_change = FALSE, ignore_air = FALSE) return /turf/open/indestructible/sound diff --git a/code/game/turfs/openspace/openspace.dm b/code/game/turfs/openspace/openspace.dm index e68aabcd08..66507e7053 100644 --- a/code/game/turfs/openspace/openspace.dm +++ b/code/game/turfs/openspace/openspace.dm @@ -106,7 +106,7 @@ qdel(L) playsound(src, 'sound/weapons/genhit.ogg', 50, 1) to_chat(user, "You build a floor.") - PlaceOnTop(/turf/open/floor/plating) + PlaceOnTop(/turf/open/floor/plating, flags = CHANGETURF_INHERIT_AIR) else to_chat(user, "You need one floor tile to build a floor!") else diff --git a/code/game/turfs/simulated/chasm.dm b/code/game/turfs/simulated/chasm.dm index 0a7b507488..dab0c1c376 100644 --- a/code/game/turfs/simulated/chasm.dm +++ b/code/game/turfs/simulated/chasm.dm @@ -38,7 +38,7 @@ switch(passed_mode) if(RCD_FLOORWALL) to_chat(user, "You build a floor.") - PlaceOnTop(/turf/open/floor/plating) + PlaceOnTop(/turf/open/floor/plating, flags = CHANGETURF_INHERIT_AIR) return TRUE return FALSE @@ -70,7 +70,7 @@ playsound(src, 'sound/weapons/genhit.ogg', 50, 1) to_chat(user, "You build a floor.") // Create a floor, which has this chasm underneath it - PlaceOnTop(/turf/open/floor/plating) + PlaceOnTop(/turf/open/floor/plating, flags = CHANGETURF_INHERIT_AIR) else to_chat(user, "You need one floor tile to build a floor!") else diff --git a/code/game/turfs/simulated/floor.dm b/code/game/turfs/simulated/floor.dm index 194014b61a..4973e68a68 100644 --- a/code/game/turfs/simulated/floor.dm +++ b/code/game/turfs/simulated/floor.dm @@ -62,29 +62,29 @@ if(severity != 1 && shielded && target != src) return if(target == src) - ScrapeAway() + ScrapeAway(flags = CHANGETURF_INHERIT_AIR) return if(target != null) severity = 3 switch(severity) if(1) - ScrapeAway(2) + ScrapeAway(2, flags = CHANGETURF_INHERIT_AIR) if(2) switch(pick(1,2;75,3)) if(1) if(!length(baseturfs) || !ispath(baseturfs[baseturfs.len-1], /turf/open/floor)) - ScrapeAway() + ScrapeAway(flags = CHANGETURF_INHERIT_AIR) ReplaceWithLattice() else - ScrapeAway(2) + ScrapeAway(2, flags = CHANGETURF_INHERIT_AIR) if(prob(33)) new /obj/item/stack/sheet/metal(src) if(2) - ScrapeAway(2) + ScrapeAway(2, flags = CHANGETURF_INHERIT_AIR) if(3) if(prob(80)) - ScrapeAway() + ScrapeAway(flags = CHANGETURF_INHERIT_AIR) else break_tile() hotspot_expose(1000,CELL_VOLUME) @@ -135,7 +135,7 @@ burnt = 1 /turf/open/floor/proc/make_plating() - return ScrapeAway() + return ScrapeAway(flags = CHANGETURF_INHERIT_AIR) /turf/open/floor/ChangeTurf(path, new_baseturf, flags) if(!isfloorturf(src)) @@ -213,15 +213,15 @@ /turf/open/floor/narsie_act(force, ignore_mobs, probability = 20) . = ..() if(.) - ChangeTurf(/turf/open/floor/engine/cult) + ChangeTurf(/turf/open/floor/engine/cult, flags = CHANGETURF_INHERIT_AIR) /turf/open/floor/ratvar_act(force, ignore_mobs) . = ..() if(.) - ChangeTurf(/turf/open/floor/clockwork) + ChangeTurf(/turf/open/floor/clockwork, flags = CHANGETURF_INHERIT_AIR) /turf/open/floor/acid_melt() - ScrapeAway() + ScrapeAway(flags = CHANGETURF_INHERIT_AIR) /turf/open/floor/rcd_vals(mob/user, obj/item/construction/rcd/the_rcd) switch(the_rcd.mode) @@ -267,7 +267,7 @@ A.autoclose = TRUE return TRUE if(RCD_DECONSTRUCT) - if(ScrapeAway() == src) + if(ScrapeAway(flags = CHANGETURF_INHERIT_AIR) == src) return FALSE to_chat(user, "You deconstruct [src].") return TRUE diff --git a/code/game/turfs/simulated/floor/plating.dm b/code/game/turfs/simulated/floor/plating.dm index ae67edf073..a6d8ec5db2 100644 --- a/code/game/turfs/simulated/floor/plating.dm +++ b/code/game/turfs/simulated/floor/plating.dm @@ -61,7 +61,7 @@ to_chat(user, "You begin reinforcing the floor...") if(do_after(user, 30, target = src)) if (R.get_amount() >= 2 && !istype(src, /turf/open/floor/engine)) - PlaceOnTop(/turf/open/floor/engine) + PlaceOnTop(/turf/open/floor/engine, flags = CHANGETURF_INHERIT_AIR) playsound(src, 'sound/items/deconstruct.ogg', 80, 1) R.use(2) to_chat(user, "You reinforce the floor.") @@ -76,7 +76,7 @@ var/obj/item/stack/tile/W = C if(!W.use(1)) return - var/turf/open/floor/T = PlaceOnTop(W.turf_type) + var/turf/open/floor/T = PlaceOnTop(W.turf_type, flags = CHANGETURF_INHERIT_AIR) if(istype(W, /obj/item/stack/tile/light)) //TODO: get rid of this ugly check somehow var/obj/item/stack/tile/light/L = W var/turf/open/floor/light/F = T @@ -117,7 +117,7 @@ qdel(L) to_chat(user, "You reinforce the foamed plating with tiling.") playsound(src, 'sound/weapons/Genhit.ogg', 50, TRUE) - ChangeTurf(/turf/open/floor/plating) + ChangeTurf(/turf/open/floor/plating, flags = CHANGETURF_INHERIT_AIR) else playsound(src, 'sound/weapons/tap.ogg', 100, TRUE) //The attack sound is muffled by the foam itself user.changeNext_move(CLICK_CD_MELEE) @@ -125,7 +125,7 @@ if(prob(I.force * 20 - 25)) user.visible_message("[user] smashes through [src]!", \ "You smash through [src] with [I]!") - ScrapeAway() + ScrapeAway(flags = CHANGETURF_INHERIT_AIR) else to_chat(user, "You hit [src], to no effect!") @@ -136,13 +136,13 @@ /turf/open/floor/plating/foam/rcd_act(mob/user, obj/item/construction/rcd/the_rcd, passed_mode) if(passed_mode == RCD_FLOORWALL) to_chat(user, "You build a floor.") - ChangeTurf(/turf/open/floor/plating) + ChangeTurf(/turf/open/floor/plating, flags = CHANGETURF_INHERIT_AIR) return TRUE return FALSE /turf/open/floor/plating/foam/ex_act() ..() - ScrapeAway() + ScrapeAway(flags = CHANGETURF_INHERIT_AIR) /turf/open/floor/plating/foam/tool_act(mob/living/user, obj/item/I, tool_type) return diff --git a/code/game/turfs/simulated/floor/reinf_floor.dm b/code/game/turfs/simulated/floor/reinf_floor.dm index b04f89f8be..28ffbbd1ff 100644 --- a/code/game/turfs/simulated/floor/reinf_floor.dm +++ b/code/game/turfs/simulated/floor/reinf_floor.dm @@ -43,7 +43,7 @@ return TRUE if(floor_tile) new floor_tile(src, 2) - ScrapeAway() + ScrapeAway(flags = CHANGETURF_INHERIT_AIR) return TRUE /turf/open/floor/engine/acid_act(acidpwr, acid_volume) @@ -56,23 +56,23 @@ if(severity != 1 && shielded && target != src) return if(target == src) - ScrapeAway() + ScrapeAway(flags = CHANGETURF_INHERIT_AIR) return switch(severity) if(1) if(prob(80)) if(!length(baseturfs) || !ispath(baseturfs[baseturfs.len-1], /turf/open/floor)) - ScrapeAway() + ScrapeAway(flags = CHANGETURF_INHERIT_AIR) ReplaceWithLattice() else - ScrapeAway(2) + ScrapeAway(2, flags = CHANGETURF_INHERIT_AIR) else if(prob(50)) - ScrapeAway(2) + ScrapeAway(2, flags = CHANGETURF_INHERIT_AIR) else - ScrapeAway() + ScrapeAway(flags = CHANGETURF_INHERIT_AIR) if(2) if(prob(50)) - ScrapeAway() + ScrapeAway(flags = CHANGETURF_INHERIT_AIR) /turf/open/floor/engine/singularity_pull(S, current_size) ..() diff --git a/code/game/turfs/simulated/lava.dm b/code/game/turfs/simulated/lava.dm index 362b410cbb..2f8ae0cb93 100644 --- a/code/game/turfs/simulated/lava.dm +++ b/code/game/turfs/simulated/lava.dm @@ -54,7 +54,7 @@ switch(passed_mode) if(RCD_FLOORWALL) to_chat(user, "You build a floor.") - PlaceOnTop(/turf/open/floor/plating) + PlaceOnTop(/turf/open/floor/plating, flags = CHANGETURF_INHERIT_AIR) return TRUE return FALSE diff --git a/code/game/turfs/space/space.dm b/code/game/turfs/space/space.dm index f38f13e657..5278374abd 100644 --- a/code/game/turfs/space/space.dm +++ b/code/game/turfs/space/space.dm @@ -125,7 +125,7 @@ qdel(L) playsound(src, 'sound/weapons/genhit.ogg', 50, 1) to_chat(user, "You build a floor.") - PlaceOnTop(/turf/open/floor/plating) + PlaceOnTop(/turf/open/floor/plating, flags = CHANGETURF_INHERIT_AIR) else to_chat(user, "You need one floor tile to build a floor!") else @@ -212,7 +212,7 @@ switch(passed_mode) if(RCD_FLOORWALL) to_chat(user, "You build a floor.") - PlaceOnTop(/turf/open/floor/plating) + PlaceOnTop(/turf/open/floor/plating, flags = CHANGETURF_INHERIT_AIR) return TRUE return FALSE diff --git a/code/game/turfs/turf.dm b/code/game/turfs/turf.dm index d618e457b0..81757ab7f5 100755 --- a/code/game/turfs/turf.dm +++ b/code/game/turfs/turf.dm @@ -391,7 +391,7 @@ continue if(O.invisibility == INVISIBILITY_MAXIMUM) O.singularity_act() - ScrapeAway() + ScrapeAway(flags = CHANGETURF_INHERIT_AIR) return(2) /turf/proc/can_have_cabling() @@ -564,4 +564,4 @@ //Whatever happens after high temperature fire dies out or thermite reaction works. //Should return new turf /turf/proc/Melt() - return ScrapeAway() + return ScrapeAway(flags = CHANGETURF_INHERIT_AIR) diff --git a/code/modules/antagonists/clockcult/clock_items/replica_fabricator.dm b/code/modules/antagonists/clockcult/clock_items/replica_fabricator.dm index 0365ae63af..501bcdc1c4 100644 --- a/code/modules/antagonists/clockcult/clock_items/replica_fabricator.dm +++ b/code/modules/antagonists/clockcult/clock_items/replica_fabricator.dm @@ -139,7 +139,7 @@ var/new_thing_type = fabrication_values["new_obj_type"] if(isturf(target)) //if our target is a turf, we're just going to ChangeTurf it and assume it'll work out. var/turf/T = target - T.ChangeTurf(new_thing_type) + T.ChangeTurf(new_thing_type, flags = CHANGETURF_INHERIT_AIR) else if(new_thing_type) if(fabrication_values["dir_in_new"]) diff --git a/code/modules/antagonists/clockcult/clock_structures/wall_gear.dm b/code/modules/antagonists/clockcult/clock_structures/wall_gear.dm index 32b1b61dd1..d823f19d4a 100644 --- a/code/modules/antagonists/clockcult/clock_structures/wall_gear.dm +++ b/code/modules/antagonists/clockcult/clock_structures/wall_gear.dm @@ -59,7 +59,7 @@ if(anchored) T.PlaceOnTop(/turf/closed/wall/clockwork) else - T.PlaceOnTop(/turf/open/floor/clockwork) + T.PlaceOnTop(/turf/open/floor/clockwork, flags = CHANGETURF_INHERIT_AIR) new /obj/structure/falsewall/brass(T) qdel(src) else diff --git a/code/modules/antagonists/cult/cult_structures.dm b/code/modules/antagonists/cult/cult_structures.dm index f38f379abe..6f340b9271 100644 --- a/code/modules/antagonists/cult/cult_structures.dm +++ b/code/modules/antagonists/cult/cult_structures.dm @@ -239,9 +239,9 @@ var/turf/T = safepick(validturfs) if(T) if(istype(T, /turf/open/floor/plating)) - T.PlaceOnTop(/turf/open/floor/engine/cult) + T.PlaceOnTop(/turf/open/floor/engine/cult, flags = CHANGETURF_INHERIT_AIR) else - T.ChangeTurf(/turf/open/floor/engine/cult) + T.ChangeTurf(/turf/open/floor/engine/cult, flags = CHANGETURF_INHERIT_AIR) else var/turf/open/floor/engine/cult/F = safepick(cultturfs) if(F) diff --git a/code/modules/buildmode/submodes/basic.dm b/code/modules/buildmode/submodes/basic.dm index 4f7b176691..fe3d831d81 100644 --- a/code/modules/buildmode/submodes/basic.dm +++ b/code/modules/buildmode/submodes/basic.dm @@ -22,9 +22,9 @@ if(istype(object,/turf) && left_click && !alt_click && !ctrl_click) var/turf/T = object if(isspaceturf(object)) - T.PlaceOnTop(/turf/open/floor/plating) + T.PlaceOnTop(/turf/open/floor/plating, flags = CHANGETURF_INHERIT_AIR) else if(isplatingturf(object)) - T.PlaceOnTop(/turf/open/floor/plasteel) + T.PlaceOnTop(/turf/open/floor/plasteel, flags = CHANGETURF_INHERIT_AIR) else if(isfloorturf(object)) T.PlaceOnTop(/turf/closed/wall) else if(iswallturf(object)) @@ -35,7 +35,7 @@ log_admin("Build Mode: [key_name(c)] deleted [object] at [AREACOORD(object)]") if(isturf(object)) var/turf/T = object - T.ScrapeAway() + T.ScrapeAway(flags = CHANGETURF_INHERIT_AIR) else if(isobj(object)) qdel(object) return diff --git a/code/modules/mining/lavaland/necropolis_chests.dm b/code/modules/mining/lavaland/necropolis_chests.dm index ab3b20ac9f..7bef9b652a 100644 --- a/code/modules/mining/lavaland/necropolis_chests.dm +++ b/code/modules/mining/lavaland/necropolis_chests.dm @@ -926,7 +926,7 @@ timer = world.time + create_delay + 1 if(do_after(user, create_delay, target = T)) var/old_name = T.name - if(T.TerraformTurf(turf_type)) + if(T.TerraformTurf(turf_type, flags = CHANGETURF_INHERIT_AIR)) user.visible_message("[user] turns \the [old_name] into [transform_string]!") message_admins("[ADMIN_LOOKUPFLW(user)] fired the lava staff at [ADMIN_VERBOSEJMP(T)]") log_game("[key_name(user)] fired the lava staff at [AREACOORD(T)].") @@ -937,7 +937,7 @@ qdel(L) else var/old_name = T.name - if(T.TerraformTurf(reset_turf_type)) + if(T.TerraformTurf(reset_turf_type, flags = CHANGETURF_INHERIT_AIR)) user.visible_message("[user] turns \the [old_name] into [reset_string]!") timer = world.time + reset_cooldown playsound(T,'sound/magic/fireball.ogg', 200, 1) diff --git a/code/modules/mob/living/simple_animal/bot/floorbot.dm b/code/modules/mob/living/simple_animal/bot/floorbot.dm index 396c6de166..cae707ce46 100644 --- a/code/modules/mob/living/simple_animal/bot/floorbot.dm +++ b/code/modules/mob/living/simple_animal/bot/floorbot.dm @@ -318,9 +318,9 @@ sleep(50) if(mode == BOT_REPAIRING && src.loc == target_turf) if(autotile) //Build the floor and include a tile. - target_turf.PlaceOnTop(/turf/open/floor/plasteel) + target_turf.PlaceOnTop(/turf/open/floor/plasteel, flags = CHANGETURF_INHERIT_AIR) else //Build a hull plating without a floor tile. - target_turf.PlaceOnTop(/turf/open/floor/plating) + target_turf.PlaceOnTop(/turf/open/floor/plating, flags = CHANGETURF_INHERIT_AIR) else var/turf/open/floor/F = target_turf @@ -334,7 +334,7 @@ if(mode == BOT_REPAIRING && F && src.loc == F) F.broken = 0 F.burnt = 0 - F.PlaceOnTop(/turf/open/floor/plasteel) + F.PlaceOnTop(/turf/open/floor/plasteel, flags = CHANGETURF_INHERIT_AIR) if(replacetiles && F.type != initial(tiletype.turf_type) && specialtiles && !isplatingturf(F)) anchored = TRUE @@ -345,7 +345,7 @@ if(mode == BOT_REPAIRING && F && src.loc == F) F.broken = 0 F.burnt = 0 - F.PlaceOnTop(initial(tiletype.turf_type)) + F.PlaceOnTop(initial(tiletype.turf_type), flags = CHANGETURF_INHERIT_AIR) specialtiles -= 1 if(specialtiles == 0) speak("Requesting refill of custom floortiles to continue replacing.") diff --git a/code/modules/mob/living/simple_animal/hostile/megafauna/colossus.dm b/code/modules/mob/living/simple_animal/hostile/megafauna/colossus.dm index 51a9d8d62b..c2c9f5a71f 100644 --- a/code/modules/mob/living/simple_animal/hostile/megafauna/colossus.dm +++ b/code/modules/mob/living/simple_animal/hostile/megafauna/colossus.dm @@ -486,10 +486,7 @@ Difficulty: Very Hard if(isturf(Stuff)) var/turf/T = Stuff if((isspaceturf(T) || isfloorturf(T)) && NewTerrainFloors) - var/turf/open/O = T.ChangeTurf(NewTerrainFloors) - if(O.air) - var/datum/gas_mixture/G = O.air - G.copy_from_turf(O) + var/turf/open/O = T.ChangeTurf(NewTerrainFloors, flags = CHANGETURF_INHERIT_AIR) if(prob(florachance) && NewFlora.len && !is_blocked_turf(O, TRUE)) var/atom/Picked = pick(NewFlora) new Picked(O) diff --git a/code/modules/mob/living/simple_animal/hostile/mining_mobs/necropolis_tendril.dm b/code/modules/mob/living/simple_animal/hostile/mining_mobs/necropolis_tendril.dm index e3c81b2639..27ebb71c0e 100644 --- a/code/modules/mob/living/simple_animal/hostile/mining_mobs/necropolis_tendril.dm +++ b/code/modules/mob/living/simple_animal/hostile/mining_mobs/necropolis_tendril.dm @@ -91,5 +91,5 @@ visible_message("The tendril falls inward, the ground around it widening into a yawning chasm!") for(var/turf/T in range(2,src)) if(!T.density) - T.TerraformTurf(/turf/open/chasm/lavaland, /turf/open/chasm/lavaland) + T.TerraformTurf(/turf/open/chasm/lavaland, /turf/open/chasm/lavaland, flags = CHANGETURF_INHERIT_AIR) qdel(src) diff --git a/code/modules/projectiles/projectile/magic.dm b/code/modules/projectiles/projectile/magic.dm index 173d9721a9..791db320a2 100644 --- a/code/modules/projectiles/projectile/magic.dm +++ b/code/modules/projectiles/projectile/magic.dm @@ -93,7 +93,7 @@ /obj/item/projectile/magic/door/proc/CreateDoor(turf/T) var/door_type = pick(door_types) var/obj/structure/mineral_door/D = new door_type(T) - T.ChangeTurf(/turf/open/floor/plating) + T.ChangeTurf(/turf/open/floor/plating, flags = CHANGETURF_INHERIT_AIR) D.Open() /obj/item/projectile/magic/door/proc/OpenDoor(var/obj/machinery/door/D) diff --git a/code/modules/reagents/chemistry/reagents/other_reagents.dm b/code/modules/reagents/chemistry/reagents/other_reagents.dm index eceb1cdd29..7aae6cc3a5 100644 --- a/code/modules/reagents/chemistry/reagents/other_reagents.dm +++ b/code/modules/reagents/chemistry/reagents/other_reagents.dm @@ -1870,133 +1870,82 @@ reagent_state = LIQUID color = "#b51d05" taste_description = "carpet" // Your tounge feels furry. + var/carpet_type = /turf/open/floor/carpet /datum/reagent/carpet/reaction_turf(turf/T, reac_volume) if(isplatingturf(T) || istype(T, /turf/open/floor/plasteel)) var/turf/open/floor/F = T - F.PlaceOnTop(/turf/open/floor/carpet) + F.PlaceOnTop(carpet_type, flags = CHANGETURF_INHERIT_AIR) ..() /datum/reagent/carpet/black name = "Liquid Black Carpet" id = "blackcarpet" color = "#363636" - -/datum/reagent/carpet/black/reaction_turf(turf/T, reac_volume) - if(isplatingturf(T) || istype(T, /turf/open/floor/plasteel)) - var/turf/open/floor/F = T - F.PlaceOnTop(/turf/open/floor/carpet/black) - ..() + carpet_type = /turf/open/floor/carpet/black /datum/reagent/carpet/blackred name = "Liquid Red Black Carpet" id = "blackredcarpet" color = "#342125" - -/datum/reagent/carpet/blackred/reaction_turf(turf/T, reac_volume) - if(isplatingturf(T) || istype(T, /turf/open/floor/plasteel)) - var/turf/open/floor/F = T - F.PlaceOnTop(/turf/open/floor/carpet/blackred) - ..() + carpet_type = /turf/open/floor/carpet/blackred /datum/reagent/carpet/monochrome name = "Liquid Monochrome Carpet" id = "monochromecarpet" color = "#b4b4b4" - -/datum/reagent/carpet/monochrome/reaction_turf(turf/T, reac_volume) - if(isplatingturf(T) || istype(T, /turf/open/floor/plasteel)) - var/turf/open/floor/F = T - F.PlaceOnTop(/turf/open/floor/carpet/monochrome) - ..() + carpet_type = /turf/open/floor/carpet/monochrome /datum/reagent/carpet/blue name = "Liquid Blue Carpet" id = "bluecarpet" color = "#1256ff" - -/datum/reagent/carpet/blue/reaction_turf(turf/T, reac_volume) - if(isplatingturf(T) || istype(T, /turf/open/floor/plasteel)) - var/turf/open/floor/F = T - F.PlaceOnTop(/turf/open/floor/carpet/blue) - ..() + carpet_type = /turf/open/floor/carpet/blue /datum/reagent/carpet/cyan name = "Liquid Cyan Carpet" id = "cyancarpet" color = "#3acfb9" - -/datum/reagent/carpet/cyan/reaction_turf(turf/T, reac_volume) - if(isplatingturf(T) || istype(T, /turf/open/floor/plasteel)) - var/turf/open/floor/F = T - F.PlaceOnTop(/turf/open/floor/carpet/cyan) - ..() + carpet_type = /turf/open/floor/carpet/cyan /datum/reagent/carpet/green name = "Liquid Green Carpet" id = "greencarpet" color = "#619b62" - -/datum/reagent/carpet/green/reaction_turf(turf/T, reac_volume) - if(isplatingturf(T) || istype(T, /turf/open/floor/plasteel)) - var/turf/open/floor/F = T - F.PlaceOnTop(/turf/open/floor/carpet/green) - ..() + carpet_type = /turf/open/floor/carpet/green /datum/reagent/carpet/orange name = "Liquid Orange Carpet" id = "orangecarpet" color = "#cc7900" - -/datum/reagent/carpet/orange/reaction_turf(turf/T, reac_volume) - if(isplatingturf(T) || istype(T, /turf/open/floor/plasteel)) - var/turf/open/floor/F = T - F.PlaceOnTop(/turf/open/floor/carpet/orange) - ..() + carpet_type = /turf/open/floor/carpet/orange /datum/reagent/carpet/purple name = "Liquid Purple Carpet" id = "purplecarpet" color = "#6d3392" + carpet_type = /turf/open/floor/carpet/purple -/datum/reagent/carpet/purple/reaction_turf(turf/T, reac_volume) - if(isplatingturf(T) || istype(T, /turf/open/floor/plasteel)) - var/turf/open/floor/F = T - F.PlaceOnTop(/turf/open/floor/carpet/purple) - ..() /datum/reagent/carpet/red name = "Liquid Red Carpet" id = "redcarpet" color = "#871515" + carpet_type = /turf/open/floor/carpet/red -/datum/reagent/carpet/red/reaction_turf(turf/T, reac_volume) - if(isplatingturf(T) || istype(T, /turf/open/floor/plasteel)) - var/turf/open/floor/F = T - F.PlaceOnTop(/turf/open/floor/carpet/red) - ..() /datum/reagent/carpet/royalblack name = "Liquid Royal Black Carpet" id = "royalblackcarpet" color = "#483d05" + carpet_type = /turf/open/floor/carpet/royalblack -/datum/reagent/carpet/royalblack/reaction_turf(turf/T, reac_volume) - if(isplatingturf(T) || istype(T, /turf/open/floor/plasteel)) - var/turf/open/floor/F = T - F.PlaceOnTop(/turf/open/floor/carpet/royalblack) - ..() /datum/reagent/carpet/royalblue name = "Liquid Royal Blue Carpet" id = "royalbluecarpet" color = "#24227e" - -/datum/reagent/carpet/royalblue/reaction_turf(turf/T, reac_volume) - if(isplatingturf(T) || istype(T, /turf/open/floor/plasteel)) - var/turf/open/floor/F = T - F.PlaceOnTop(/turf/open/floor/carpet/royalblue) - ..() + carpet_type = /turf/open/floor/carpet/royalblue // Virology virus food chems. diff --git a/code/modules/reagents/chemistry/reagents/pyrotechnic_reagents.dm b/code/modules/reagents/chemistry/reagents/pyrotechnic_reagents.dm index c170858d98..36621aa662 100644 --- a/code/modules/reagents/chemistry/reagents/pyrotechnic_reagents.dm +++ b/code/modules/reagents/chemistry/reagents/pyrotechnic_reagents.dm @@ -53,7 +53,7 @@ if(isplatingturf(T)) var/turf/open/floor/plating/F = T if(prob(10 + F.burnt + 5*F.broken)) //broken or burnt plating is more susceptible to being destroyed - F.ScrapeAway() + F.ScrapeAway(flags = CHANGETURF_INHERIT_AIR) if(isfloorturf(T)) var/turf/open/floor/F = T if(prob(reac_volume)) diff --git a/code/modules/ruins/objects_and_mobs/sin_ruins.dm b/code/modules/ruins/objects_and_mobs/sin_ruins.dm index caa2ca7adf..76897b5276 100644 --- a/code/modules/ruins/objects_and_mobs/sin_ruins.dm +++ b/code/modules/ruins/objects_and_mobs/sin_ruins.dm @@ -108,7 +108,7 @@ if (levels.len) dest = locate(T.x, T.y, pick(levels)) - T.ChangeTurf(/turf/open/chasm) + T.ChangeTurf(/turf/open/chasm, flags = CHANGETURF_INHERIT_AIR) var/turf/open/chasm/C = T C.set_target(dest) C.drop(user) diff --git a/code/modules/spells/spell_types/conjure.dm b/code/modules/spells/spell_types/conjure.dm index 3ebded7487..38a2d5bddd 100644 --- a/code/modules/spells/spell_types/conjure.dm +++ b/code/modules/spells/spell_types/conjure.dm @@ -31,7 +31,7 @@ if(ispath(summoned_object_type, /turf)) var/turf/O = spawn_place var/N = summoned_object_type - O.ChangeTurf(N) + O.ChangeTurf(N, flags = CHANGETURF_INHERIT_AIR) else var/atom/summoned_object = new summoned_object_type(spawn_place) diff --git a/code/modules/spells/spell_types/devil.dm b/code/modules/spells/spell_types/devil.dm index 8b8328abbe..d97d466e4d 100644 --- a/code/modules/spells/spell_types/devil.dm +++ b/code/modules/spells/spell_types/devil.dm @@ -234,7 +234,7 @@ dancefloor_exists = FALSE for(var/i in 1 to dancefloor_turfs.len) var/turf/T = dancefloor_turfs[i] - T.ChangeTurf(dancefloor_turfs_types[i]) + T.ChangeTurf(dancefloor_turfs_types[i], flags = CHANGETURF_INHERIT_AIR) else var/list/funky_turfs = RANGE_TURFS(1, user) for(var/turf/closed/solid in funky_turfs) @@ -248,7 +248,7 @@ var/turf/T = t dancefloor_turfs[i] = T dancefloor_turfs_types[i] = T.type - T.ChangeTurf((i % 2 == 0) ? /turf/open/floor/light/colour_cycle/dancefloor_a : /turf/open/floor/light/colour_cycle/dancefloor_b) + T.ChangeTurf((i % 2 == 0) ? /turf/open/floor/light/colour_cycle/dancefloor_a : /turf/open/floor/light/colour_cycle/dancefloor_b, flags = CHANGETURF_INHERIT_AIR) i++ /datum/effect_system/smoke_spread/transparent/dancefloor_devil diff --git a/modular_citadel/code/modules/reagents/chemistry/reagents/astrogen.dm b/modular_citadel/code/modules/reagents/chemistry/reagents/astrogen.dm index d7ff42a9eb..7e094eddda 100644 --- a/modular_citadel/code/modules/reagents/chemistry/reagents/astrogen.dm +++ b/modular_citadel/code/modules/reagents/chemistry/reagents/astrogen.dm @@ -54,7 +54,7 @@ I'd like to point out from my calculations it'll take about 60-80 minutes to die /datum/reagent/fermi/astral/reaction_turf(turf/T, reac_volume) if(isplatingturf(T) || istype(T, /turf/open/floor/plasteel)) var/turf/open/floor/F = T - F.PlaceOnTop(/turf/open/floor/fakespace) + F.PlaceOnTop(/turf/open/floor/fakespace, flags = CHANGETURF_INHERIT_AIR) ..() /datum/reagent/fermi/astral/reaction_obj(obj/O, reac_volume) From 9f21fca798df0aac5e5b3d62422b12c1d366c049 Mon Sep 17 00:00:00 2001 From: Putnam Date: Tue, 17 Dec 2019 14:18:13 -0800 Subject: [PATCH 027/192] workin on IRV --- code/__DEFINES/citadel_defines.dm | 5 ++ code/controllers/subsystem/ticker.dm | 2 +- code/controllers/subsystem/vote.dm | 77 +++++++++++++++++++++------- 3 files changed, 65 insertions(+), 19 deletions(-) diff --git a/code/__DEFINES/citadel_defines.dm b/code/__DEFINES/citadel_defines.dm index e3cafd4613..f954abf453 100644 --- a/code/__DEFINES/citadel_defines.dm +++ b/code/__DEFINES/citadel_defines.dm @@ -119,3 +119,8 @@ //belly sound pref things #define NORMIE_HEARCHECK 4 + +// Voting stuff (move this somewhere else eventually probs) +#define PLURALITY 0 +#define APPROVAL 1 +#define IRV 2 diff --git a/code/controllers/subsystem/ticker.dm b/code/controllers/subsystem/ticker.dm index baaa78e56f..9ca252b1dc 100755 --- a/code/controllers/subsystem/ticker.dm +++ b/code/controllers/subsystem/ticker.dm @@ -480,7 +480,7 @@ SUBSYSTEM_DEF(ticker) SSticker.timeLeft = 900 SSticker.modevoted = TRUE var/dynamic = CONFIG_GET(flag/dynamic_voting) - SSvote.initiate_vote(dynamic ? "dynamic" : "roundtype","server",TRUE,dynamic) + SSvote.initiate_vote(dynamic ? "dynamic" : "roundtype","server",TRUE,dynamic ? PLURALITY : IRV) /datum/controller/subsystem/ticker/Recover() current_state = SSticker.current_state diff --git a/code/controllers/subsystem/vote.dm b/code/controllers/subsystem/vote.dm index b34713254d..8daf140121 100644 --- a/code/controllers/subsystem/vote.dm +++ b/code/controllers/subsystem/vote.dm @@ -1,6 +1,3 @@ -#define PLURALITY 0 -#define APPROVAL 1 - SUBSYSTEM_DEF(vote) name = "Vote" wait = 10 @@ -89,8 +86,23 @@ SUBSYSTEM_DEF(vote) . += option return . +/datum/controller/subsystem/vote/proc/get_result_runoff() + for(var/i in 1 to choices.len) // if it takes more than this something REALLY wrong happened + for(var/ckey in voted) + choices[voted[ckey][1]]++ + var/least_vote = 100000 + var/least_voted + for(var/option in choices) + if(choices[option] > voted.len/2) + return option + else if(choices[option] < least_vote) + least_vote = choices[option] + least_voted = option + for(var/ckey in voted) + voted[ckey] -= least_voted + /datum/controller/subsystem/vote/proc/announce_result() - var/list/winners = get_result() + var/list/winners = vote_system == IRV ? get_result_runoff() : get_result() var/text var/was_roundtype_vote = mode == "roundtype" || mode == "dynamic" if(winners.len > 0) @@ -214,6 +226,14 @@ SUBSYSTEM_DEF(vote) voted[usr.ckey] = list(vote) choices[choices[vote]]++ return vote + if(IRV) + if(usr.ckey in voted) + if(vote in voted[usr.ckey]) + voted[usr.ckey] -= vote + else + voted += usr.ckey + voted[usr.ckey] = list() + voted[usr.ckey] += vote return 0 /datum/controller/subsystem/vote/proc/initiate_vote(vote_type, initiator_key, hideresults, votesystem = PLURALITY)//CIT CHANGE - adds hideresults argument to votes to allow for obfuscated votes @@ -314,21 +334,42 @@ SUBSYSTEM_DEF(vote) . += "

Vote: '[question]'

" else . += "

Vote: [capitalize(mode)]

" - . += "

Vote [vote_system == PLURALITY ? "your top choice" : "all that apply"].

" + switch(vote_system) + if(PLURALITY) + . += "

Vote one.

" + if(APPROVAL) + . += "

Vote any number of choices.

" + if(IRV) + . += "

Vote by order of preference. Revoting will demote to the bottom.

" . += "Time Left: [time_remaining] s
    " - for(var/i=1,i<=choices.len,i++) - var/votes = choices[choices[i]] - var/ivotedforthis = FALSE - switch(vote_system) - if(PLURALITY) - ivotedforthis = ((C.ckey in voted) && (voted[C.ckey] == i)) - if(APPROVAL) - ivotedforthis = ((C.ckey in voted) && (i in voted[C.ckey])) - if(!votes) - votes = 0 - . += "
  • [ivotedforthis ? "" : ""][choices[i]] ([obfuscated ? (admin ? "??? ([votes])" : "???") : votes] votes)[ivotedforthis ? "" : ""]
  • " // CIT CHANGE - adds obfuscated votes - if(choice_descs.len >= i) - . += "
  • [choice_descs[i]]
  • " + switch(vote_system) + if(PLURALITY, APPROVAL) + for(var/i=1,i<=choices.len,i++) + var/votes = choices[choices[i]] + var/ivotedforthis = FALSE + switch(vote_system) + if(PLURALITY) + ivotedforthis = ((C.ckey in voted) && (voted[C.ckey] == i)) + if(APPROVAL) + ivotedforthis = ((C.ckey in voted) && (i in voted[C.ckey])) + if(!votes) + votes = 0 + . += "
  • [ivotedforthis ? "" : ""][choices[i]] ([obfuscated ? (admin ? "??? ([votes])" : "???") : votes] votes)[ivotedforthis ? "" : ""]
  • " // CIT CHANGE - adds obfuscated votes + if(choice_descs.len >= i) + . += "
  • [choice_descs[i]]
  • " + if(IRV) + var/list/display_choices = choices.Copy() + if(C.ckey in voted) + for(var/vote in voted[C.ckey]) + display_choices.Cut(vote,vote+1) + . += "
  • [choices[vote]]
  • " // no reasonable way to show votes with IRV + if(choice_descs.len >= vote) + . += "
  • [choice_descs[vote]]
  • " + for(var/choice in display_choices) + var/index = choices.Find(choice) + . += "
  • [choices[index]]
  • " + if(choice_descs.len >= index) + . += "
  • [choice_descs[index]]
  • " . += "

" if(admin) . += "(Cancel Vote) " From 04f82f3153b4eb4f98ed04b28172b50cf9d00314 Mon Sep 17 00:00:00 2001 From: Putnam Date: Tue, 17 Dec 2019 15:48:28 -0800 Subject: [PATCH 028/192] it works --- code/__DEFINES/citadel_defines.dm | 6 +-- code/controllers/subsystem/ticker.dm | 5 ++- code/controllers/subsystem/vote.dm | 65 +++++++++++++++------------- 3 files changed, 41 insertions(+), 35 deletions(-) diff --git a/code/__DEFINES/citadel_defines.dm b/code/__DEFINES/citadel_defines.dm index f954abf453..7cad6b5be7 100644 --- a/code/__DEFINES/citadel_defines.dm +++ b/code/__DEFINES/citadel_defines.dm @@ -121,6 +121,6 @@ #define NORMIE_HEARCHECK 4 // Voting stuff (move this somewhere else eventually probs) -#define PLURALITY 0 -#define APPROVAL 1 -#define IRV 2 +#define PLURALITY_VOTING 0 +#define APPROVAL_VOTING 1 +#define INSTANT_RUNOFF_VOTING 2 diff --git a/code/controllers/subsystem/ticker.dm b/code/controllers/subsystem/ticker.dm index d676b2df40..cbd7dfdd52 100755 --- a/code/controllers/subsystem/ticker.dm +++ b/code/controllers/subsystem/ticker.dm @@ -480,7 +480,10 @@ SUBSYSTEM_DEF(ticker) SSticker.timeLeft = 900 SSticker.modevoted = TRUE var/dynamic = CONFIG_GET(flag/dynamic_voting) - SSvote.initiate_vote(dynamic ? "dynamic" : "roundtype","server",TRUE,dynamic ? PLURALITY : IRV) + if(dynamic) + SSvote.initiate_vote("dynamic","server",TRUE,INSTANT_RUNOFF_VOTING) + else + SSvote.initiate_vote("roundtype","server",TRUE,PLURALITY_VOTING) /datum/controller/subsystem/ticker/Recover() current_state = SSticker.current_state diff --git a/code/controllers/subsystem/vote.dm b/code/controllers/subsystem/vote.dm index 8daf140121..6ea13c832d 100644 --- a/code/controllers/subsystem/vote.dm +++ b/code/controllers/subsystem/vote.dm @@ -10,7 +10,7 @@ SUBSYSTEM_DEF(vote) var/started_time = null var/time_remaining = 0 var/mode = null - var/vote_system = PLURALITY + var/vote_system = PLURALITY_VOTING var/question = null var/list/choices = list() var/list/choice_descs = list() // optional descriptions @@ -87,22 +87,29 @@ SUBSYSTEM_DEF(vote) return . /datum/controller/subsystem/vote/proc/get_result_runoff() - for(var/i in 1 to choices.len) // if it takes more than this something REALLY wrong happened + var/already_lost_runoff = list() + for(var/n in 1 to choices.len) // if it takes more than this something REALLY wrong happened for(var/ckey in voted) - choices[voted[ckey][1]]++ + choices[choices[voted[ckey][1]]]++ // jesus christ how horrifying var/least_vote = 100000 var/least_voted - for(var/option in choices) + for(var/i in 1 to choices.len) + var/option = choices[i] if(choices[option] > voted.len/2) - return option - else if(choices[option] < least_vote) + message_admins("[option] has a majority, returning...") + return list(option) + else if(choices[option] < least_vote && !(option in already_lost_runoff)) least_vote = choices[option] - least_voted = option + least_voted = i + message_admins("[choices[least_voted]] lost the runoff, running again...") + already_lost_runoff += choices[least_voted] for(var/ckey in voted) voted[ckey] -= least_voted + for(var/option in choices) + choices[option] = 0 /datum/controller/subsystem/vote/proc/announce_result() - var/list/winners = vote_system == IRV ? get_result_runoff() : get_result() + var/list/winners = vote_system == INSTANT_RUNOFF_VOTING ? get_result_runoff() : get_result() var/text var/was_roundtype_vote = mode == "roundtype" || mode == "dynamic" if(winners.len > 0) @@ -202,7 +209,7 @@ SUBSYSTEM_DEF(vote) return 0 if(vote && vote >= 1 && vote <= choices.len) switch(vote_system) - if(PLURALITY) + if(PLURALITY_VOTING) if(usr.ckey in voted) choices[choices[voted[usr.ckey]]]-- voted[usr.ckey] = vote @@ -213,7 +220,7 @@ SUBSYSTEM_DEF(vote) voted[usr.ckey] = vote choices[choices[vote]]++ //check this return vote - if(APPROVAL) + if(APPROVAL_VOTING) if(usr.ckey in voted) if(vote in voted[usr.ckey]) voted[usr.ckey] -= vote @@ -226,7 +233,7 @@ SUBSYSTEM_DEF(vote) voted[usr.ckey] = list(vote) choices[choices[vote]]++ return vote - if(IRV) + if(INSTANT_RUNOFF_VOTING) if(usr.ckey in voted) if(vote in voted[usr.ckey]) voted[usr.ckey] -= vote @@ -236,7 +243,7 @@ SUBSYSTEM_DEF(vote) voted[usr.ckey] += vote return 0 -/datum/controller/subsystem/vote/proc/initiate_vote(vote_type, initiator_key, hideresults, votesystem = PLURALITY)//CIT CHANGE - adds hideresults argument to votes to allow for obfuscated votes +/datum/controller/subsystem/vote/proc/initiate_vote(vote_type, initiator_key, hideresults, votesystem = PLURALITY_VOTING)//CIT CHANGE - adds hideresults argument to votes to allow for obfuscated votes vote_system = votesystem if(!mode) if(started_time) @@ -335,41 +342,37 @@ SUBSYSTEM_DEF(vote) else . += "

Vote: [capitalize(mode)]

" switch(vote_system) - if(PLURALITY) + if(PLURALITY_VOTING) . += "

Vote one.

" - if(APPROVAL) + if(APPROVAL_VOTING) . += "

Vote any number of choices.

" - if(IRV) + if(INSTANT_RUNOFF_VOTING) . += "

Vote by order of preference. Revoting will demote to the bottom.

" . += "Time Left: [time_remaining] s
    " switch(vote_system) - if(PLURALITY, APPROVAL) + if(PLURALITY_VOTING, APPROVAL_VOTING) for(var/i=1,i<=choices.len,i++) var/votes = choices[choices[i]] var/ivotedforthis = FALSE switch(vote_system) - if(PLURALITY) + if(PLURALITY_VOTING) ivotedforthis = ((C.ckey in voted) && (voted[C.ckey] == i)) - if(APPROVAL) + if(APPROVAL_VOTING) ivotedforthis = ((C.ckey in voted) && (i in voted[C.ckey])) if(!votes) votes = 0 . += "
  • [ivotedforthis ? "" : ""][choices[i]] ([obfuscated ? (admin ? "??? ([votes])" : "???") : votes] votes)[ivotedforthis ? "" : ""]
  • " // CIT CHANGE - adds obfuscated votes if(choice_descs.len >= i) . += "
  • [choice_descs[i]]
  • " - if(IRV) - var/list/display_choices = choices.Copy() - if(C.ckey in voted) - for(var/vote in voted[C.ckey]) - display_choices.Cut(vote,vote+1) - . += "
  • [choices[vote]]
  • " // no reasonable way to show votes with IRV - if(choice_descs.len >= vote) - . += "
  • [choice_descs[vote]]
  • " - for(var/choice in display_choices) - var/index = choices.Find(choice) - . += "
  • [choices[index]]
  • " - if(choice_descs.len >= index) - . += "
  • [choice_descs[index]]
  • " + if(INSTANT_RUNOFF_VOTING) + for(var/i=1,i<=choices.len,i++) + var/vote = ((C.ckey in voted) ? (voted[C.ckey].Find(i)) : 0) + if(vote) + . += "
  • [choices[i]] ([vote])
  • " + else + . += "
  • [choices[i]]
  • " + if(choice_descs.len >= i) + . += "
  • [choice_descs[i]]
  • " . += "

" if(admin) . += "(Cancel Vote) " From 5ef7d9cbf736865999dfc167d2dfc5db72d7786b Mon Sep 17 00:00:00 2001 From: Putnam Date: Tue, 17 Dec 2019 16:09:40 -0800 Subject: [PATCH 029/192] why did i not have revs as conversion --- code/game/gamemodes/dynamic/dynamic_rulesets_latejoin.dm | 2 +- code/game/gamemodes/dynamic/dynamic_rulesets_roundstart.dm | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/code/game/gamemodes/dynamic/dynamic_rulesets_latejoin.dm b/code/game/gamemodes/dynamic/dynamic_rulesets_latejoin.dm index 8d9d14b473..f014504a68 100644 --- a/code/game/gamemodes/dynamic/dynamic_rulesets_latejoin.dm +++ b/code/game/gamemodes/dynamic/dynamic_rulesets_latejoin.dm @@ -95,7 +95,7 @@ requirements = list(101,101,70,40,40,40,40,40,40,40) high_population_requirement = 40 flags = HIGHLANDER_RULESET - property_weights = list("trust" = -3, "chaos" = 5, "extended" = -5, "valid" = 2) + property_weights = list("trust" = -3, "chaos" = 5, "extended" = -5, "valid" = 2, "conversion" = 1) var/required_heads_of_staff = 3 var/finished = FALSE var/datum/team/revolution/revolution diff --git a/code/game/gamemodes/dynamic/dynamic_rulesets_roundstart.dm b/code/game/gamemodes/dynamic/dynamic_rulesets_roundstart.dm index 1abdcef3f1..f7cf9cd78e 100644 --- a/code/game/gamemodes/dynamic/dynamic_rulesets_roundstart.dm +++ b/code/game/gamemodes/dynamic/dynamic_rulesets_roundstart.dm @@ -378,7 +378,7 @@ flags = HIGHLANDER_RULESET // I give up, just there should be enough heads with 35 players... minimum_players = 35 - property_weights = list("trust" = -3, "chaos" = 5, "extended" = -5, "valid" = 2) + property_weights = list("trust" = -3, "chaos" = 5, "extended" = -5, "valid" = 2, "conversion" = 1) var/datum/team/revolution/revolution var/finished = FALSE From f25d75fed9c205c178382ca1f1f80fe3b292503e Mon Sep 17 00:00:00 2001 From: Putnam Date: Tue, 17 Dec 2019 16:29:24 -0800 Subject: [PATCH 030/192] thanks linter --- code/controllers/subsystem/vote.dm | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/code/controllers/subsystem/vote.dm b/code/controllers/subsystem/vote.dm index 6ea13c832d..ed589ca3c8 100644 --- a/code/controllers/subsystem/vote.dm +++ b/code/controllers/subsystem/vote.dm @@ -366,7 +366,12 @@ SUBSYSTEM_DEF(vote) . += "
  • [choice_descs[i]]
  • " if(INSTANT_RUNOFF_VOTING) for(var/i=1,i<=choices.len,i++) - var/vote = ((C.ckey in voted) ? (voted[C.ckey].Find(i)) : 0) + var/vote = 0 + //linter yells at me if i use Find here + if(C.ckey in voted) + for(var/n=1,n<=voted[C.ckey].len,n++) + if(voted[C.ckey][n] == i) + vote = n if(vote) . += "
  • [choices[i]] ([vote])
  • " else From 94b7a48bbcec4bace70b962f8302f3ed938e3251 Mon Sep 17 00:00:00 2001 From: Putnam Date: Tue, 17 Dec 2019 18:29:49 -0800 Subject: [PATCH 031/192] aaa --- code/controllers/subsystem/vote.dm | 8 ++------ 1 file changed, 2 insertions(+), 6 deletions(-) diff --git a/code/controllers/subsystem/vote.dm b/code/controllers/subsystem/vote.dm index ed589ca3c8..b8068215cf 100644 --- a/code/controllers/subsystem/vote.dm +++ b/code/controllers/subsystem/vote.dm @@ -365,13 +365,9 @@ SUBSYSTEM_DEF(vote) if(choice_descs.len >= i) . += "
  • [choice_descs[i]]
  • " if(INSTANT_RUNOFF_VOTING) + var/list/myvote = voted[C.ckey] for(var/i=1,i<=choices.len,i++) - var/vote = 0 - //linter yells at me if i use Find here - if(C.ckey in voted) - for(var/n=1,n<=voted[C.ckey].len,n++) - if(voted[C.ckey][n] == i) - vote = n + var/vote = (myvote ? (myvote.Find(i)) : 0) if(vote) . += "
  • [choices[i]] ([vote])
  • " else From fab65a3dbc41accdd4782dfb67ac92544563ce11 Mon Sep 17 00:00:00 2001 From: Putnam Date: Tue, 17 Dec 2019 20:12:23 -0800 Subject: [PATCH 032/192] actually condorcet not IRV --- code/__DEFINES/citadel_defines.dm | 2 +- code/controllers/subsystem/ticker.dm | 2 +- code/controllers/subsystem/vote.dm | 41 +++++++++++----------------- 3 files changed, 18 insertions(+), 27 deletions(-) diff --git a/code/__DEFINES/citadel_defines.dm b/code/__DEFINES/citadel_defines.dm index 7cad6b5be7..55526eabc1 100644 --- a/code/__DEFINES/citadel_defines.dm +++ b/code/__DEFINES/citadel_defines.dm @@ -123,4 +123,4 @@ // Voting stuff (move this somewhere else eventually probs) #define PLURALITY_VOTING 0 #define APPROVAL_VOTING 1 -#define INSTANT_RUNOFF_VOTING 2 +#define RANKED_CHOICE_VOTING 2 diff --git a/code/controllers/subsystem/ticker.dm b/code/controllers/subsystem/ticker.dm index cbd7dfdd52..cad5798a4c 100755 --- a/code/controllers/subsystem/ticker.dm +++ b/code/controllers/subsystem/ticker.dm @@ -481,7 +481,7 @@ SUBSYSTEM_DEF(ticker) SSticker.modevoted = TRUE var/dynamic = CONFIG_GET(flag/dynamic_voting) if(dynamic) - SSvote.initiate_vote("dynamic","server",TRUE,INSTANT_RUNOFF_VOTING) + SSvote.initiate_vote("dynamic","server",TRUE,RANKED_CHOICE_VOTING) else SSvote.initiate_vote("roundtype","server",TRUE,PLURALITY_VOTING) diff --git a/code/controllers/subsystem/vote.dm b/code/controllers/subsystem/vote.dm index b8068215cf..42bd00d4af 100644 --- a/code/controllers/subsystem/vote.dm +++ b/code/controllers/subsystem/vote.dm @@ -86,30 +86,21 @@ SUBSYSTEM_DEF(vote) . += option return . -/datum/controller/subsystem/vote/proc/get_result_runoff() - var/already_lost_runoff = list() - for(var/n in 1 to choices.len) // if it takes more than this something REALLY wrong happened - for(var/ckey in voted) - choices[choices[voted[ckey][1]]]++ // jesus christ how horrifying - var/least_vote = 100000 - var/least_voted - for(var/i in 1 to choices.len) - var/option = choices[i] - if(choices[option] > voted.len/2) - message_admins("[option] has a majority, returning...") - return list(option) - else if(choices[option] < least_vote && !(option in already_lost_runoff)) - least_vote = choices[option] - least_voted = i - message_admins("[choices[least_voted]] lost the runoff, running again...") - already_lost_runoff += choices[least_voted] - for(var/ckey in voted) - voted[ckey] -= least_voted - for(var/option in choices) - choices[option] = 0 +/datum/controller/subsystem/vote/proc/calculate_condorcet_votes() + for(var/ckey in voted) + var/list/this_vote = voted[ckey] + for(var/a in 1 to choices.len) + for(var/b in a+1 to choices.len) + var/vote_sgn = SIGN(this_vote.Find(a)-this_vote.Find(b)) + if(vote_sgn==-1) + choices[choices[a]]++ + else if(vote_sgn==1) + choices[choices[b]]++ /datum/controller/subsystem/vote/proc/announce_result() - var/list/winners = vote_system == INSTANT_RUNOFF_VOTING ? get_result_runoff() : get_result() + if(vote_system == RANKED_CHOICE_VOTING) + calculate_condorcet_votes() + var/list/winners = get_result() var/text var/was_roundtype_vote = mode == "roundtype" || mode == "dynamic" if(winners.len > 0) @@ -233,7 +224,7 @@ SUBSYSTEM_DEF(vote) voted[usr.ckey] = list(vote) choices[choices[vote]]++ return vote - if(INSTANT_RUNOFF_VOTING) + if(RANKED_CHOICE_VOTING) if(usr.ckey in voted) if(vote in voted[usr.ckey]) voted[usr.ckey] -= vote @@ -346,7 +337,7 @@ SUBSYSTEM_DEF(vote) . += "

    Vote one.

    " if(APPROVAL_VOTING) . += "

    Vote any number of choices.

    " - if(INSTANT_RUNOFF_VOTING) + if(RANKED_CHOICE_VOTING) . += "

    Vote by order of preference. Revoting will demote to the bottom.

    " . += "Time Left: [time_remaining] s
    " else dat += "No trait-related genes detected in sample.
    " - if(can_insert && istype(disk.gene, /datum/plant_gene/trait)) + if(can_insert && istype(disk.gene, /datum/plant_gene/trait) && !seed.is_gene_forbidden(disk.gene)) dat += "Insert: [disk.gene.get_name()]" dat += "" else diff --git a/code/modules/hydroponics/grown/misc.dm b/code/modules/hydroponics/grown/misc.dm index b37e494233..dbeddfdbd0 100644 --- a/code/modules/hydroponics/grown/misc.dm +++ b/code/modules/hydroponics/grown/misc.dm @@ -232,7 +232,7 @@ /obj/item/reagent_containers/food/snacks/grown/cherry_bomb/proc/detonate() reagents.chem_temp = 1000 //Sets off the black powder reagents.handle_reactions() - + // Lavaland cactus /obj/item/seeds/lavaland/cactus @@ -244,3 +244,283 @@ product = /obj/item/reagent_containers/food/snacks/grown/ash_flora/cactus_fruit growing_icon = 'icons/obj/hydroponics/growing_fruits.dmi' growthstages = 2 + + +// Coconut +/obj/item/seeds/coconut + name = "pack of coconut seeds" + desc = "They're seeds that grow into coconut palm trees." + icon_state = "seed-coconut" + species = "coconut" + plantname = "Coconut Palm Tree" + product = /obj/item/reagent_containers/food/snacks/grown/coconut + lifespan = 50 + endurance = 30 + potency = 35 + growing_icon = 'icons/obj/hydroponics/growing.dmi' + icon_dead = "coconut-dead" + genes = list(/datum/plant_gene/trait/repeated_harvest) + forbiddengenes = list(/datum/plant_gene/trait/squash, /datum/plant_gene/trait/stinging) + reagents_add = list("coconutmilk" = 0.3) + +/obj/item/reagent_containers/food/snacks/grown/coconut + seed = /obj/item/seeds/coconut + name = "coconut" + desc = "Hard shell of a nut containing delicious milk inside. Perhaps try using something sharp?" + icon_state = "coconut" + item_state = "coconut" + possible_transfer_amounts = list(5, 10, 15, 20, 25, 30, 50) + spillable = FALSE + resistance_flags = ACID_PROOF + volume = 150 //so it won't cut reagents despite having the capacity for them + w_class = WEIGHT_CLASS_SMALL + force = 5 + throwforce = 5 + hitsound = 'sound/weapons/klonk.ogg' + attack_verb = list("klonked", "donked", "bonked") + var/opened = FALSE + var/carved = FALSE + var/chopped = FALSE + var/straw = FALSE + var/fused = FALSE + var/fusedactive = FALSE + var/defused = FALSE + +/obj/item/reagent_containers/food/snacks/grown/coconut/Initialize(mapload, obj/item/seeds/new_seed) + . = ..() + var/newvolume + newvolume = 50 + round(seed.potency,10) + if (seed.get_gene(/datum/plant_gene/trait/maxchem)) + newvolume = newvolume + 50 + volume = newvolume + reagents.maximum_volume = newvolume + reagents.update_total() + + transform *= TRANSFORM_USING_VARIABLE(40, 100) + 0.5 //temporary fix for size? + +/obj/item/reagent_containers/food/snacks/grown/coconut/attack_self(mob/user) + if (opened == TRUE) + if(possible_transfer_amounts.len) + var/i=0 + for(var/A in possible_transfer_amounts) + i++ + if(A == amount_per_transfer_from_this) + if(i[src]'s transfer amount is now [amount_per_transfer_from_this] units.") + return + +/obj/item/reagent_containers/food/snacks/grown/coconut/attackby(obj/item/W, mob/user, params) + //DEFUSING NADE LOGIC + if (W.tool_behaviour == TOOL_WIRECUTTER && fused == TRUE) + user.show_message("You cut the fuse!", 1) + playsound(user, W.hitsound, 50, 1, -1) + icon_state = "coconut_carved" + desc = "A coconut. This one's got a hole in it." + name = "coconut" + defused = TRUE + fused = FALSE + fusedactive = FALSE + if(!seed.get_gene(/datum/plant_gene/trait/glow)) + set_light(0, 0.0) + return + //IGNITING NADE LOGIC + if(fusedactive == FALSE && fused == TRUE) + var/lighting_text = W.ignition_effect(src, user) + if(lighting_text) + user.visible_message("[user] ignites [src]'s fuse!", "You ignite the [src]'s fuse!") + fusedactive = TRUE + defused = FALSE + playsound(src, 'sound/effects/fuse.ogg', 100, 0) + message_admins("[ADMIN_LOOKUPFLW(user)] ignited a coconut bomb for detonation at [ADMIN_VERBOSEJMP(user)] "+ pretty_string_from_reagent_list(reagents.reagent_list)) + log_game("[key_name(user)] primed a coconut grenade for detonation at [AREACOORD(user)].") + addtimer(CALLBACK(src, .proc/prime), 5 SECONDS) + icon_state = "coconut_grenade_active" + desc = "RUN!" + if(!seed.get_gene(/datum/plant_gene/trait/glow)) + light_color = "#FFCC66" //for the fuse + set_light(3, 0.8) + return + + //ADDING A FUSE, NADE LOGIC + if (istype(W,/obj/item/stack/sheet/cloth) || istype(W,/obj/item/stack/sheet/durathread)) + if (carved == TRUE && straw == FALSE && fused == FALSE) + user.show_message("You add a fuse to the coconut!", 1) + W.use(1) + fused = TRUE + icon_state = "coconut_grenade" + desc = "A makeshift bomb made out of a coconut. You estimate the fuse is long enough for 5 seconds." + name = "coconut bomb" + return + //ADDING STRAW LOGIC + if (istype(W,/obj/item/stack/sheet/mineral/bamboo) && opened == TRUE && straw == FALSE && fused == FALSE) + user.show_message("You add a bamboo straw to the coconut!", 1) + straw = TRUE + W.use(1) + icon_state += "_straw" + desc = "You can already feel like you're on a tropical vacation." + //OPENING THE NUT LOGIC + if (carved == FALSE && chopped == FALSE) + if(W.tool_behaviour == TOOL_SCREWDRIVER) + user.show_message("You make a hole in the coconut!", 1) + carved = TRUE + opened = TRUE + reagent_flags = OPENCONTAINER + ENABLE_BITFIELD(reagents.reagents_holder_flags, OPENCONTAINER) + icon_state = "coconut_carved" + desc = "A coconut. This one's got a hole in it." + playsound(user, W.hitsound, 50, 1, -1) + return + else if(W.sharpness) + user.show_message("You slice the coconut open!", 1) + chopped = TRUE + opened = TRUE + reagent_flags = OPENCONTAINER + ENABLE_BITFIELD(reagents.reagents_holder_flags, OPENCONTAINER) + spillable = TRUE + icon_state = "coconut_chopped" + desc = "A coconut. This one's sliced open, with all its delicious contents for your eyes to savour." + playsound(user, W.hitsound, 50, 1, -1) + return + +/obj/item/reagent_containers/food/snacks/grown/coconut/attack(mob/living/M, mob/user, obj/target) + if(M && user.a_intent == INTENT_HARM && spillable == FALSE) + var/obj/item/bodypart/affecting = user.zone_selected //Find what the player is aiming at + if (affecting == BODY_ZONE_HEAD && prob(15)) + //smash the nut open + var/armor_block = min(90, M.run_armor_check(affecting, "melee", null, null,armour_penetration)) // For normal attack damage + M.apply_damage(force, BRUTE, affecting, armor_block) + + //Sound + playsound(user, hitsound, 100, 1, -1) + + //Attack logs + log_combat(user, M, "attacked", src) + + //Display an attack message. + if(M != user) + M.visible_message("[user] has cracked open a [src.name] on [M]'s head!", \ + "[user] has cracked open a [src.name] on [M]'s head!") + else + user.visible_message("[M] cracks open a [src.name] on their [M.p_them()] head!", \ + "[M] cracks open a [src.name] on [M.p_their()] head!") + + //The coconut breaks open so splash its reagents + spillable = TRUE + SplashReagents(M) + + //Lastly we remove the nut + qdel(src) + else + . = ..() + return + + if(fusedactive) + return + + if(opened == FALSE) + return + + if(!canconsume(M, user)) + return + + if(!reagents || !reagents.total_volume) + to_chat(user, "[src] is empty!") + return + + if(istype(M)) + if(user.a_intent == INTENT_HARM && spillable == TRUE) + var/R + M.visible_message("[user] splashes the contents of [src] onto [M]!", \ + "[user] splashes the contents of [src] onto [M]!") + if(reagents) + for(var/datum/reagent/A in reagents.reagent_list) + R += A.id + " (" + R += num2text(A.volume) + ")," + if(isturf(target) && reagents.reagent_list.len && thrownby) + log_combat(thrownby, target, "splashed (thrown) [english_list(reagents.reagent_list)]") + message_admins("[ADMIN_LOOKUPFLW(thrownby)] splashed (thrown) [english_list(reagents.reagent_list)] on [target] at [ADMIN_VERBOSEJMP(target)].") + reagents.reaction(M, TOUCH) + log_combat(user, M, "splashed", R) + reagents.clear_reagents() + else + if(M != user) + M.visible_message("[user] attempts to feed something to [M].", \ + "[user] attempts to feed something to you.") + if(!do_mob(user, M)) + return + if(!reagents || !reagents.total_volume) + return // The drink might be empty after the delay, such as by spam-feeding + M.visible_message("[user] feeds something to [M].", "[user] feeds something to you.") + log_combat(user, M, "fed", reagents.log_list()) + else + to_chat(user, "You swallow a gulp of [src].") + var/fraction = min(5/reagents.total_volume, 1) + reagents.reaction(M, INGEST, fraction) + addtimer(CALLBACK(reagents, /datum/reagents.proc/trans_to, M, 5), 5) + playsound(M.loc,'sound/items/drink.ogg', rand(10,50), 1) + +/obj/item/reagent_containers/food/snacks/grown/coconut/afterattack(obj/target, mob/user, proximity) + . = ..() + if(fusedactive) + return + + if((!proximity) || !check_allowed_items(target,target_self=1)) + return + + if(target.is_refillable()) //Something like a glass. Player probably wants to transfer TO it. + if(!reagents.total_volume) + to_chat(user, "[src] is empty!") + return + + if(target.reagents.holder_full()) + to_chat(user, "[target] is full.") + return + + var/trans = reagents.trans_to(target, amount_per_transfer_from_this) + to_chat(user, "You transfer [trans] unit\s of the solution to [target].") + + else if(target.is_drainable()) //A dispenser. Transfer FROM it TO us. + if(!target.reagents.total_volume) + to_chat(user, "[target] is empty and can't be refilled!") + return + + if(reagents.holder_full()) + to_chat(user, "[src] is full.") + return + + var/trans = target.reagents.trans_to(src, amount_per_transfer_from_this) + to_chat(user, "You fill [src] with [trans] unit\s of the contents of [target].") + + else if(reagents.total_volume) + if(user.a_intent == INTENT_HARM && spillable == TRUE) + user.visible_message("[user] splashes the contents of [src] onto [target]!", \ + "You splash the contents of [src] onto [target].") + reagents.reaction(target, TOUCH) + reagents.clear_reagents() + +/obj/item/reagent_containers/food/snacks/grown/coconut/dropped(mob/user) + . = ..() + transform *= TRANSFORM_USING_VARIABLE(40, 100) + 0.5 //temporary fix for size? + +/obj/item/reagent_containers/food/snacks/grown/coconut/proc/prime() + if (!defused) + var/turf/T = get_turf(src) + reagents.chem_temp = 1000 + //Disable seperated contents when the grenade primes + if (seed.get_gene(/datum/plant_gene/trait/noreact)) + DISABLE_BITFIELD(reagents.reagents_holder_flags, NO_REACT) + reagents.handle_reactions() + log_game("Coconut bomb detonation at [AREACOORD(T)], location [loc]") + qdel(src) + +/obj/item/reagent_containers/food/snacks/grown/coconut/ex_act(severity) + qdel(src) + +/obj/item/reagent_containers/food/snacks/grown/coconut/deconstruct(disassembled = TRUE) + if(!disassembled && fused) + prime() + if(!QDELETED(src)) + qdel(src) \ No newline at end of file diff --git a/code/modules/hydroponics/seeds.dm b/code/modules/hydroponics/seeds.dm index 4132719389..904bc5228c 100644 --- a/code/modules/hydroponics/seeds.dm +++ b/code/modules/hydroponics/seeds.dm @@ -27,6 +27,7 @@ var/rarity = 0 // How rare the plant is. Used for giving points to cargo when shipping off to CentCom. var/list/mutatelist = list() // The type of plants that this plant can mutate into. var/list/genes = list() // Plant genes are stored here, see plant_genes.dm for more info. + var/list/forbiddengenes = list() var/list/reagents_add = list() // A list of reagents to add to product. // Format: "reagent_id" = potency multiplier @@ -96,6 +97,10 @@ S.reagents_add = reagents_add.Copy() // Faster than grabbing the list from genes. return S +obj/item/seeds/proc/is_gene_forbidden(typepath) + return (locate(typepath) in forbiddengenes) + + /obj/item/seeds/proc/get_gene(typepath) return (locate(typepath) in genes) @@ -448,7 +453,7 @@ for(var/i in 1 to amount_random_traits) var/random_trait = pick((subtypesof(/datum/plant_gene/trait)-typesof(/datum/plant_gene/trait/plant_type))) var/datum/plant_gene/trait/T = new random_trait - if(T.can_add(src)) + if(T.can_add(src) && !is_gene_forbidden(T)) genes += T else qdel(T) diff --git a/code/modules/reagents/chemistry/reagents/drink_reagents.dm b/code/modules/reagents/chemistry/reagents/drink_reagents.dm index 5d31bfae9b..e8551074e7 100644 --- a/code/modules/reagents/chemistry/reagents/drink_reagents.dm +++ b/code/modules/reagents/chemistry/reagents/drink_reagents.dm @@ -247,6 +247,23 @@ . = 1 ..() +/datum/reagent/consumable/coconutmilk + name = "Coconut Milk" + id = "coconutmilk" + description = "A transparent white liquid extracted from coconuts. Rich in taste." + color = "#DFDFDF" // rgb: 223, 223, 223 + taste_description = "sweet milk" + quality = DRINK_GOOD + glass_icon_state = "glass_white" + glass_name = "glass of coconut milk" + glass_desc = "White and nutritious goodness!" + +/datum/reagent/consumable/coconutmilk/on_mob_life(mob/living/carbon/M) + if(M.getBruteLoss() && prob(20)) + M.heal_bodypart_damage(2,0, 0) + . = 1 + ..() + /datum/reagent/consumable/cream name = "Cream" id = "cream" diff --git a/code/modules/vending/megaseed.dm b/code/modules/vending/megaseed.dm index 5c092c3659..03241c4a86 100644 --- a/code/modules/vending/megaseed.dm +++ b/code/modules/vending/megaseed.dm @@ -14,6 +14,7 @@ /obj/item/seeds/chanter = 3, /obj/item/seeds/chili = 3, /obj/item/seeds/cocoapod = 3, + /obj/item/seeds/coconut = 3, /obj/item/seeds/coffee = 3, /obj/item/seeds/cotton = 3, /obj/item/seeds/corn = 3, diff --git a/icons/obj/bongs.dmi b/icons/obj/bongs.dmi new file mode 100644 index 0000000000000000000000000000000000000000..406cce3817d022f258bcf2759b4009b1ec20ad18 GIT binary patch literal 1489 zcmZuxX;hL46#W4AjWIO|E1FzN%G6FtNg*|wLgjIzEJx*_*kVX-X-2}hw3#%S3%R6a zDDG`U=9a0IVd5a>5@})%6)G{gfFcdeIrFa{_ucpIJ@3am=bd}m&)3`32yO%bfGN($ zGeFBkEwBc9+B&%{&P+?pl%U`QPjY-j+=#$T^xQqgs}Q$8_FmrLB>zKzs6wXOz-22?A@G8L~vKF z=&gqjqB_kYJlEH4f@OK-+R6iWCBGw(M>!_3(0-yq(0O4z9cre>UL!n1@s6GfjStCj z(9PP3$+Z#Q6Q7GYBUqkvSTN3XK#2t^MN`|k-bU4VTl*D;Lyj+CH|%f^td4piv&SMf zuv}jR5xB-@52qsYNV#gEQf{pqBr(?mE~bR-_4#~>=v9#Rej5TLx%{fIO07Jzl*O(L9op~%5zV%jp9d{#puN7=O-F%8Me3X8I&xxD<+jd@LrQ<8!} zds?93hhZOGcV^*E_GBDD z8{IJ9)H|cSKziLCNKBO-%nKMZWby`u5Z4>i#6 z{!HtF(ma{`6A{&6(MfAp*z|&0Y{Tj;ELkuWn=8xH>K6)<7#2i3PXi;Y$Ai ziTO&}BJL`)I8qj!y#N|Y!WF~an_8Co0{7l(5kX3$5oP3gQQz=){Ixo9nAej{8Kv}+ zeHR6mMIqcCRI{#Xi6m4DxAr#AIUI^aw;u`9 zaC=d;j3I2_In2Cy{g(RmeZ$Pmu8_&CkG}gq_TjvDFFyu z_Hd2XUt*p}H%!VrZI27?t+<` z0XQ-w$!%4uYBoL)!bxhal0&uye`Y)yyhF&M&3K!${V3QG8M=ss)|||v27~Z;1)$jl zY+F0Di7NrIc@K4;(8&>_x<8q`kwGnbm>fnD+~5F-5Q9=t&SUwPc%?!k}p zEW*J7E7>jNx;*@OI&XnL_wpT^)H=Vwe}!9d?CSNIDsbeH)IIWK!mJeHhvK;`b`|K@ zy5!5C>;8l7GH9R|W$V2NDSj@!&Ne(vqGPz58-U6=X(0d6o^)xv?-xPk%ERE~)F{SN zb(Jdb3LgPX9huJd4AqF#_{b@!vg9qo?=nXfrR_hJPYdW#WR{nHQ=)XOKMk$b*3Ag$ ziU|*#>dxdMm{wSEE mTK}{C|24vb2KX{R`yJ#xk{nQmeC?^tXaMKs>sh~-nD#GaLf?u2 literal 0 HcmV?d00001 diff --git a/icons/obj/hydroponics/growing.dmi b/icons/obj/hydroponics/growing.dmi index 469b1e1afffe3b88e9867b0b71ded9282c8e6260..712ea11a3b7a0e1a6c1f595882d26ca9f4136fe2 100644 GIT binary patch literal 74172 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∓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%0AK>hy= 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 literal 72075 zcmbT7WnUaWxc3(pcM231mlk&~F2$YV?ykk9xD?mo?(XhRad&rj_p|-q_jv>7!ECab z&(2PMmn4&KCPZFV3>g6z0RR9XONf701OOni{vB{I;FeSNT6F*bi0`hX=J?&%!SJWK zouj#}4FKSpHkVXwv%-ieVtPXJ+sG-5Q=!$3>Jug?R+lm(-!!a<7U7FA_uDf{$#)5? z%kz_YI*4($zYY?T+wD*H*Kc=gJe}<(*!SHn1E(_YPb4c^)*zZ%4!NkM0t1f{gAcji zm`kT)YxM@9nX>EJE-p(2b$m(fOU9|Wg)9%=l~qv)_Y&Rv2=`%rZwNJ5Pl&;A(_ep3 z<)F-;=ryCLoaj}f%pdC&%Vy86_z5bIQK#Z6sQ+n%?#<<85gD6LzPWBXXybYO#?Z)n zus43tw(7a9ko)yV8E#~?Xks@riKaHWQRPU0m2-0Rnk>eL0U}qBl8LgSGM_TF^5;L0 zZ09_U^>jr}U)=@9fL%;%sDR)(9^zIlD5K0UpSC>;h{sVm^ddMeqBg_?dhK7Nwm`K( z3u$^|HgeTk+&Dyyh#|J}f!&(-(Ck0Rg4+6DU6yMG;B;njx}|W*Tm=oG7)--A`{P&P z^LLjDc2oF9*H0T-&um&p*fS~{s204h21976q{KmOf$`mz;37D_I}BWe@a2{pye7vL z`c%C24YzoFUTc7UO1Mg_CR6{&20f7yqk4Z5fSsF}Y{qE8c=E%&4Ky7e$<4gE=91&# zT8j4}f32nQcG@(;ppj#(zW#ziW4oOpVtmW`g|r2T6$n(8Hdh~rPjEtFZE z;4dpZnG7$+O8EeRTPdx#9Kl@9dkX5XB0ov^)8h)fHG++MOMgfY7lRtEL=iYSaCso6Zk=6-T+Tzv7uH_n;YGp@6T()B?ljFN*Wc4}AC< zI3hRf50C#SoZ;`v( z{_NyXkeDngf=3#rCkqo4kXJXB4;B&Jfh74<>)OdA#ERQkssk186r`V!k$j$U)NXo~ zaeniXd#t2-$IOC*@i)qyFY{e#PJR7BNj3c@kP3@ z?z7CzrsKgH_reXY*kvgKM!6)xNTOw-GgsMBMk9qCzw96cA0SvDoGZW;_pz3~^_vJ!q@t8?B+lISO8t(!mz(2v1 z)2W0IV7K=NZwJN^Y3eVH?V}h+L+HM|eP4RXaoBeX{iAC~5fT z>&4Z~<|l1&a;l29pFPoMidmZ<7xFmKe)>CqfFp-^w$@p~iLXEHmdhAZ>zQG0!`5hy ze*eT9h$#OaG85kNTu|l&+WGdY1s%ZXd~4imBCV>$g!1*PGd{l;t|9dZll`_UCjq;3 z8mA5|3%Fj5v|?&?@R&`fM7;yFlC#WGKMI(VBqfc?<+Vm~U>+UDN zZ2d`28!-01o(^L?B~y?9k-ehOv^(8zRpA<=CZ49lpK1&rcuH8z^w^W_W+LW# zHLP5~N+z>%+PA=GzCBSrqb`hnbq<3z3Hw}l{CarlWQd?>b+GmjxtU^nlX({~X3(?@`@WdE+{^v6kB&6eqq)+ui)jZ{dhGPl9!~3r2huUabtuScy>dud>o@ zIa*~Ss~+I6LMn29B-GH-g8Nef7e!Zr{&Lz=Uu)hG>eCY$i=O}Oq;j?XH*SO|ZHx6+ z^_u3;5=UwrBpBL^ck%J}N*rQnQhau@Iv8Z!@rDp{?#$8xltPe7D$M6n!eIVy5Yj_s zBRJC(L`1L!05Z||-YwQNY{Tnk&)?22hQoIl`n5RryKjZX3m32?ZT8fZhrnn9ZVadf zU>?pyQ}v%q_f~n;jW34M{##%RL%l(;dgR~`>q7z0gq}fl&A9@xq?nFmn>V?0XQCu6 zXqQh+Pr*^2E)EzJ3TJ{EH{JohvNSNiVNhxz#AMUDlMu){?)>L=%Yk@BV_ChX6yrX* zYpy$Iy-k+yagtDJeqjjYaVY&7Y^(H@Ne!Mio)$H@*=(iREEWn6ZrbxL;Uwvwabjy{ z;r*4lzZfdc`(XaQbPhs8cIvfZ8=h|I;Wab2&(7`+Tzas^fE`ywq0RMn^&o@xNk~v} z#H>BjlNwa>34wVE!NR&43lNcOwsnVhpc`9z48G_w2wzyma}{O&7&9Se^v zyU>Utb+JptC&~2+p%kCkW5Z4yQ`mdNa@VB)oSRpc2jyG~aj>d@&ufoDCYiR)*M-N> z*a}qD`9=utt#Im!f205omho5dFK#YwmZ^9L8f#4+-73sriDEmKNmIbC4&m2L`P|~J z$9%MFKBZIF*qFPvH!uL}^83wuuR_FegkeD*a9QVpb}b@L&G^Nc2geW+6L{+qn1Y=! zh3(z`UditD&5Ham9M_f0&vmC9`4-jIHqW^fohuH8(1i$hqQFEn{E8L9YPV(>VG&=H zm93?!*@V6vUmYSij-L<(<=vf)_xgQCsgh~{Y;C(m8J^Uur^)5>UcdbM?Fe1f4X7xN z=m8%MyJu;PSRl0;Etl)Bbi3s{gZGLQkz4GE^3kUa9cpu?TZo)x>UCA^Go!^m`Q?^rKA0B z26bCMQpemeE$84Kdl%ch+19Q{*k+BUv(+j^8yR419SYSFm@@7^uWN47y7cHVb)Ee* z?9QzKEJ_1wQSa@$4Fnhoj#E^cIEsN^X+s(Zb-wn7T0d!l|n+w zgW^2p;|rDjr7s$p`{q5hGWu%;ab(*AG&}t|pV^1%ybnDot@_iC5=Cs`T>1gw8%03? z4N<0;GA?8mlrh=x&-qF>eGnU-%;VKZIeC^d zS`}V6lE>Yh+QYMp!C_aF{XKCq)zX+{wHiLjW3K>$qR2s1OS!~})q=I;oCWunx|a7=1p z3XfBma^hXS=4CL{Y}P(x=BVm0;d*<0z`bv^D6RRm@c?`zCS3T2S50j=T0C0pANt&T)g=%;o89g_j5lT*L{ty6n?~Ed6WwJ(|qns-aB^C2t%S+ zzk2z6IP=ax)QC8qbkObNT)W3%ImDn5c88pfs zTZMi_VtEY$@QTxNqs~W3vewUTX@YFdb0QL)sVnw#Q926}xb&pO=9HkZd9*u0^X5i+ zm7LC%0g=wT5`dx$XF9>2UmuS;W#ja)>Gx5wW!iIXa%FIsqWGW ziv=Oz;*-gi{$es>LoB(zLPGQ2V?rJy+JRg=h%P~FhH9Jm@Njbtukw6N7^3T7#1jvS zh9y4SYLJY2IQXk@cVKVe@yBTTzH>8#Tat!@AqDJCU{E1ZB3m}n=LMjZC3WuE66WvT1PV~; zRpVT3S1!!3t8znj=uCc@Tq6+TEa|UtW82N&u*&k4N3&`G0?x|M0Fv^2IY?2q+Cts^ zjI-e(+4=ccfd0P6zteLAa0o%!(b4S=y%)=vOV$AswEi08)m?1UvI#D+8 z=$V_RgzSTAlocOUxDnrBdmmLgT~0je32eoaX@tv(yJR| zBYs{4p^ z9)#ek75cU@a}E(mkWZFYgvvgGg9a#K6#)PuWPx(ILe70AzNpn*ub2Ip-;0{a22|~Il?WEr;W;xDwCe2S z3aKoNW^<#I<#6lbt;hAUG0^6!l)`iQ!|>^%0Up((`r*^G}aALDD*0NiUHF(AarIEQhT9AoKK|Z%o1@#sZb+ z9vPA&dH&6FYJ4mP)7K_(Ok^^?_=y%DrVvnPbc7iY_08zWPTgzdsKnxm2yqITY?Qtv zIHAO+sJYH(gw??6%^*ES1i4Zk4Ou3EPinLs8}!+8d)xAL-pLU7%+7?hMZ9 z5+T+G>ULhf2>%Xh)vr&{W3{a6C`f5&Z0NlR%hFkThGn@%PFW^{koNf|BPf!M`f|Tx+_%35ilHsHE9vbXt~e+bN3Q7n$j#YE`S8% z_~@4tCW9N_MeMY6bo*Miu>!*EZKV+_2qyrB>80{HU`!PSu;EBFDwjU7_COGL@jEU{ zx4+)aj2x$ozGl%ljqJJS%jpnqVATv0`b{xDr2oa4iG=ue65?!H!_m4naDs*u7!MIa z$q@HP0@k6l+SA*IsEhCEwn{As)S$(Tsnr5@-($f=B2n;o9Xc1d*ks53&EplHoql%- zxit)#D}A(|99dE?y5)3MW8DD_?t9h2$NF6Rvk^@ zH(xk+()L5MlYr9XOmx?kHZvXZu6#3F6 zsLDzQ`6$GZ1v#ez{Ht(xpd^FTT3e#BNszSWSu)~YJft%XKiQ3Q5c4$%?4&080x}V8 z)p5+ke13GTw%i1?)bx1GdX}5!B(wMZC2SE_le-}5XS*{9|Ky=T{52J8Zc zN@R;mVHswqfG+hdKwqww_*XB6x6-ukCPPTXkeK$ovLLW58$@rq4b! z0`wWO`um&-@KIn4Z4O@>%*5ZB5M(3|mw^yw!QJmbd3pLb^t%0GYPuYB;H5!ThaR@q-UD{5)|Esb~VA|;9N z(VdWRsb*pvATyQ*O!)M?Gd5JN2~YcDe+TZ;RukiyjJ8`Za_pzoyS(*t*t6n`&@Q9; z4-re9+&htN-jQG)2lWq4JSNPmOgS;!c*&TCKzl`@mY3_ONj`dZis^W5rM#Hk1(lRp z8@+3m7vPK|z|wvON>Zm?!uG&922~r6*<8UpSJJSp=!3o9r?i>CZOFhZ!r~Dqh$Bt) zxq3U~9!1 z1{(C6d{Ohg8tpI1(%TQg^D~*N^~%l|xVNua))+9h0|H(Rj)jyT+&>bcTb>ib5BwM3 z)=7~1Vyg+${iKf44jahepuVCyBj`PWRb@B!#_(H9F>f;f4$*#fFr3C|ZJJnhQF6Wf z4N5X%{>nlUk~OmLXK1Wl{>n>C07w$7)_ANskNrf!nlcOMTeYCg1eNj7%h6(l7`^K% zQoemmpMBtA+e{pOIExJ{)8KvutSp?9fEN-{?|Fq5CcH)GgX=Xq#$d=gjUR6B>pi|d zh1qCIXr!(gT>6>$In26ByVf-x>kFgL{D+L_vdl{RwQX5@N9Y0KaQKeK8S>hTf{5 z>nwe1+rq?uXI#VjDN#!P8$5#1eFbp-jUODRI&x`dmSKV2ItYI>#L3#^)Jm0& z;~^AT2#>{5s#t{WB9Qg{%=w7aHpF{LQN zI)vT~2YVw?`R4eE)MR6((ffrX(c%5-C!hCkw72Tep3fc%m&b7;X6Y!{d`5q{)I@$f z60k55c{zS59cPx>zhi+H?LFJWPAOMkHAS*%6muTcvPH_o-@lVYChlE(;1!tGcJ-P5 zV7Pm)#8^aVO>AxX@c@(x`~KvS0m^gy9{6g-{BsT+IeNT{(`_j&J{KA|kc`<-(LEE*9y$lk=X&;CTo zx-@u0x8%rjOUM?FZ~FG+=cwN&3C?|&tN@gZKOLK;Kc<^CB|Hqp#y>Y82k*d#GwY~lcQNg!P}>6_~THXP8CFxanWbg#F~PteG&_*bb2Ult@) zP&7_7k?FxRkHC@Dux$o$fI?HY}Oh(7^*v*K%R3Wstm z!6R>5Il<*i56DSM^qN4z)3t`R-j!-RG{Aezf^GO3bgSX@*^t>Zh;ha0wdeMqxm*&K z&bt5%X~?s{>d|fwVtS;@kT2WSqf1Vte7}(-;A$uMn-I5zHicR@l`Oiw$3N%EkTX@5 zr)Qe~kYu`{a0rnt?G_I~3_Jqa;JC8?e_h|GR%=-4o4*Tb#NJ&PeFEAKg`=1|)%=ZK z56hMxZjJ8t`RV(X9GHShU<8N2l5SQPmiU!cv~c3L+M1Q4_s#a&m&FV>{TlrjLk0|8 zMp6%aUe%YSkcA45kV+u&<{ySn6Yt$*yKxVEgJd_BAwzk+!)_C3wwkai<2%37`l&nC zG|E4tGAs(Ucsyrwm>mB&nO$si=QujrHyvc}erPjz|NQg$J4-{^lCXeJ#(73KcoEF5 zM{hs^2S&<}1tC_<=m{y0xDm;`Etfsa`$>o;OKJ_;WgF@vaMosPozwHttfZnVvPWOX zR8Fq42^Bylc0GEs+HAt4>rN{J^!d({kga?4k?8!?XnxF5n zr6J{EqvaXqZ>}ib;SMeTR^Mf5yJy%!ljEswNJG?Zh^+(cHmYt39IWvs8z6b?oI7yM zY*0CzEH#nK)pWrp{a2O-oQ3tUx4%J)JyKW^czNA3Uv4RE%Id(B*18R5hog(n3^dwr z-r55Mw);Q|4=t=~Ujd&en5i6gbIH22ea1&RS4M9JQGGOBLEJM&oAhpL;}3iTB@d4` z`UmyLov0xPi5c^gc8UoM2^iBbaS(tclFEnf4*y5J4MFuaj1OMATzVp?2qYm5arf%&oy}ea&6G-=jLcY;IwZhjCHL+fAHO?(=0w86o2Rphwt0#p zk*i1oe-iklmqzOidao~bW{$HV6H417<`}HqrpS9>@sT;WfjHjuP7a@&c4XqK|H2>m z{14sbH~!nfhpOYKnIavH2QshJ3>5&e5^UMCp~;8loq{t6`smqqi(@z4WgUGcL!CKd zz4HnUbgrUQWBBN_$lktnidu8zGfv64T8??}gQFe!AeS3&ym776+0*UK`>2`bnSt*O zR>w2cz4MU(KdvKq%O+pX+-3njUP&6i=A6!DeC*I)@LXvijI)`DcN(ZKAVPXoTM?!dkZ z5!7kjveDP@hj&<_yx>M&ktm+@C-NID&L(%{x6|USKeoT@=p(H6`6)Us&WWZvWGtDF z-4aIghf?a}|6FXmQpzNf$c(6v^J<&;sFZ0+kEyWub<;A8(75!N&F8MMJqDNKuwST4 zjnGJK+1w$iJFmq_71b(6$!?YY$)$)Fwj2+h6)*Gn316>zxM_W38b3iU%yWNvk(<)$ zO0M1J$^NTMG^665n%F?E>Yr@wqgy_MiBBn+_J97^rHpaT%%ls8Bp7I_?{ z=eb1ubv4tZ#h*(HL`gxe-ajzq>h^nh{h)QnazDm~qLwq8OCm_PN8nEr?x@^N;d zpbYURe{zIIz@%(a+q`n}QN&AAX{G(Ou>EybfHIbhazIrlq4vFd&a!CCV1NykM_|0+ zGRU;*8mVyN`rITUm$4Ve|9O`p$N_son!p3{w`j}c+6=6} zAVpm6KjZZF`x=iNYT~iK&uKl#mJ*nhiw^kwvloGWt-hA=SIJS6SvEG~@)4YgBT+u@ zQ{!G!>BK04h)=E16yvjoX|+(Q;duU^N}<68SwgeHD$ajAt?;h98O+nhN?wcx%g=0F zTUzDKorZS--*BRDot9|nmN5ibbNYjVpX8{dmQVnBEQE5Y*zwc)OvJi{MDf?*0|y~l zr5p&8m_W(u986%2L zs2bTbNKw-{^im2i6hH}+$uOzT9a#v;VhTS>Wk(kncLw+{WsC&MIm~i!_)d3&FnWuh zVgAv!RWtm17<3C%VqZ+4`^|f%;)?)(?2rN}P?B71YZ!j#yXwjcktd`iRRs<|N`bhy z6Y)M@?eZAoA_Cf_X#X!=F@TpYU~8Py3MDLQer^pBCD6>;xpyJP zK)}6SMMV{CD+Cdloc{cxlm{|MK{))LLj@& z-ENMan8^oxRy$CtHX&O3VQN((<}(P>Y{0?U?_ULb7qnGW%4nvO+_ zz{$C2#$+Iq?-i4z68;wqizKUt=d$bPM9aCPx}AeO?KttiFrLLHm;% z4|p(j%2;}&g@?`sONsWmVQD_FMx^iC2tMh~(b=&e1j3eiocA<4c0<`tCutGKVU_~6 zzc9&bx}cSMW9s3ZhS_ZYA;LrN0kTl#Lg)*?wvE&)1H#GOpLAvFsD66^jckk3FB{I8 z_lU7gJ5&2VM*Yp&9b{R@i)DgGsZo9?SWPv2gnO?drQ9 zj)Ed&p=cOiEmq-pM*o6yhd4F9r-nAEZ?Cm=)2J2p1H`&(Gxuu}rwuEgwWWWlupT!G z1x$e4d{DCQS>UhTlyv^YU!SyD1xhUlbL2WMag>WgAANvvC|~zvq5Sm&AW3Fz z+-1x5Z0?9Le;YAo-J396$4uar$-{9O9?w)ZXE1zW7_p!QVd!H*1u5hKff^Z3zuzPAmXmk^g5fS$*Dto6S?a5Ge4i) zoqSj<%$d}66)9ws?GA!7>~tfCO^%8`h+Kwg^{t)rL|2WACH|m%PXD|vi<(nrDG>7Z&6q6)Y<$?!4Q%Acad zAI)-NA7lRORE2cmfH4Y%I<4**Xr+yQ7HV9DAo zKK$dJg8kCG3p-C+gzIt}Tp;P;*|G1C5gI>U=DVjt1FTXQo5`s$@Xn$_plj;Gwi9mergZ$H=`H@lrtFp zr-}g(p3X!9(B+iNg#7t^_&uMg&ev2}@&-jbO$v+Q1JGtAa3;aJiECzI00baTHJiCk zp2u$^@P>}&Rb1Z);2fQL&FlSi%rpGtBg`_D^7o2n5;-@a&kxB7*uv0vp~53ryu& z4{X$fn_e2Pcg_#bpa3?%p3r={Bamp~vdLr${K61vOyA=9n7j$sROq}Bhj(rcrsml> zJYyI|;}iGGK6*lpZ#nST~q(gWuKdBUG+Y^;T`+j{(_G$Zn7c6*Uw9Ejzy= zG9KLdj_NImpDTzjztxqYi1#{L!6Nq+a|opz%ob)){HY=I7o|9N@Zs@`K!bE?g^iKN zUOh8Mw+cX=N)YYK7e1~rL<#`q%Tq$irK++zEAAd3Qqbd+8+0F@fd&19?1D%Uqx?0g zSgx^p*kIy`Yz-|<&MOEVB$R*@Jbf%ZLLw~QIX9xJ7euA0oxqVN4UG+521Azi8PRhq zI;o+&C53CuB%G2aP}x>M%F^TCR*d?(tEWBVuQ>FE2IqC6iHHGc;GjN43Z6RrslODN z-bb*T$&r`k+TadyN|6zFsU9mUCNXU%xD0-Sb9(48sr!wz+kBi~H)|kjnv@tvNRSw+ zw*#77Dll;j@Z(Hvy+YRF-e$HSv(yt(GY8s(A- zB6tP9HS%^Qrrp5Xre(*XEBBbez_{{`npN{KhwBVLygtiNq6va$mLmOui&dU@#r$(V z$Rln+y|Uj+=SVR_yTEf$(@7&NN~a}rM^DgyfawUSDC;-B{ggHNH}wJMBu#pPe%$qK z=G?CZQjz&(g{7qwgB$ioLiq9g<1yoQeBRm@Xf=6g;r>PZ5q-Z;1CJ8xc5HN0RvjVZ zy~?!S(-vD?Ny^>qrl6T7JM7@LDs0q{L|@(C+*_>QA&(J*(az6BEL-u$GT28;mn6Mv z^?`qC2mojxMRlqMdUa;nfxc)2oFYKJ64<>23O^+P>ogvFyqGAr%1YJu4Qee}t8gEk z^2Y51(xhuQVN$!p8`-UPBhtSJWOXF#&VY2keZu{N+i0^a&d22i2`>Lebqalpn*v02 z0>M*a6zxzEaT2GceL9i zVRp+3*^=C$M2!TFEV`x({ZJEM5N+!g7#m(K;cIrPd8>V zcftmmc@^J23)so(35?NWd&a<}ut365mWfKuXFh;IoZ?Zz z=Bll4@rngP)10BAryeen|001HNGhMtgbeeKaD>e1+cayT7S+^u^a#$I{$v8v3&W4- zB#NiOyfO;HsDoMi>`UdQz;{xRm5-@EE8b(W;NKpe@mB36_|wE0hO^8WM$ROp0)FQ2 zPg0nl+aX{g5Z>+JU}4 zs@cKJtr)1{4^eTSP1LV<&f?7p6*Uo683jTNi|p+3^2Jh*AWve$omJxho^KW0J-1BH zOjtPQm(buG!(?4rQ6L)z{ceZWsneO!QDp$Kj%nIY3Ajs(!NQuv{A{@2fcx`t6f}yt z7{OU}5^))*NY8FA59vQ^T)1%klrBV2+8rMA=|6o7Y?r^YQu~I88>bW*N=KL3Y?+%I&|-6O|rz h$9D(qJ(yRbK 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 diff --git a/icons/obj/hydroponics/harvest.dmi b/icons/obj/hydroponics/harvest.dmi index a57719fb3a31d66ce7822e8ba015fbe3bb0e47d2..e746d8f43d7b16c2207e5f00623f75c7e9c80688 100644 GIT binary patch literal 87028 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

    Vote any number of choices.

    " if(RANKED_CHOICE_VOTING) . += "

    Vote by order of preference. Revoting will demote to the bottom. 1 is your favorite, and higher numbers are worse.

    " + if(SCORE_VOTING) + . += "

    Grade the candidates by how much you like them, 1-5 least-most.

    " . += "Time Left: [DisplayTimeText(end_time-world.time)]
      " switch(vote_system) if(PLURALITY_VOTING, APPROVAL_VOTING) @@ -425,12 +472,38 @@ SUBSYSTEM_DEF(vote) if(choice_descs.len >= i) . += "
    • [choice_descs[i]]
    • " . += "

    " + /* if(!(C.ckey in saved)) . += "(Save vote)" else . += "(Saved!)" if((mode in SSpersistence.saved_votes) && (C.ckey in SSpersistence.saved_votes[mode])) . += "(Load vote from save)" + */ + . += "(Reset votes)" + if(SCORE_VOTING) + var/list/myvote = voted[C.ckey] + for(var/i=1,i<=choices.len,i++) + . += "
  • [choices[i]]" + for(var/r in 1 to SCORE_OPTIONS) + . += " " + if((choices[i] in myvote) && myvote[choices[i]] == r) + . +="([r])" + else + . +="[r]" + . += "" + . += "
  • " + if(choice_descs.len >= i) + . += "
  • [choice_descs[i]]
  • " + . += "
    " + /* + if(!(C.ckey in saved)) + . += "(Save vote)" + else + . += "(Saved!)" + if((mode in SSpersistence.saved_votes) && (C.ckey in SSpersistence.saved_votes[mode])) + . += "(Load vote from save)" + */ . += "(Reset votes)" if(admin) . += "(Cancel Vote) " @@ -503,7 +576,10 @@ SUBSYSTEM_DEF(vote) voted[usr.ckey] = SSpersistence.saved_votes[mode][usr.ckey] saved += usr.ckey else - submit_vote(round(text2num(href_list["vote"]))) + if(vote_system == SCORE_VOTING) + submit_vote(round(text2num(href_list["vote"])),round(text2num(href_list["score"]))) + else + submit_vote(round(text2num(href_list["vote"]))) usr.vote() /datum/controller/subsystem/vote/proc/remove_action_buttons() From 58e50de4340a45100e9d323dd2de2b2db5f1632e Mon Sep 17 00:00:00 2001 From: CameronWoof Date: Tue, 31 Dec 2019 17:44:18 -0800 Subject: [PATCH 154/192] grampa ghommles doesn't like kids and their newfangled technology and also the VA denied his claim and now he hates bureaucracy --- code/game/objects/structures/ghost_role_spawners.dm | 2 -- 1 file changed, 2 deletions(-) diff --git a/code/game/objects/structures/ghost_role_spawners.dm b/code/game/objects/structures/ghost_role_spawners.dm index c6b19a51f8..fd6030453c 100644 --- a/code/game/objects/structures/ghost_role_spawners.dm +++ b/code/game/objects/structures/ghost_role_spawners.dm @@ -663,6 +663,4 @@ new /obj/item/clothing/head/chameleon(src) new /obj/item/clothing/mask/chameleon(src) new /obj/item/storage/backpack/chameleon(src) - new /obj/item/radio/headset/chameleon(src) - new /obj/item/stamp/chameleon(src) new /obj/item/clothing/neck/cloak/chameleon(src) From 0d42d9356bcfe0d0bbb00ba1e54d949f743e7f44 Mon Sep 17 00:00:00 2001 From: CitadelStationBot Date: Tue, 31 Dec 2019 21:28:58 -0600 Subject: [PATCH 155/192] Automatic changelog generation for PR #10361 [ci skip] --- html/changelogs/AutoChangeLog-pr-10361.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-10361.yml diff --git a/html/changelogs/AutoChangeLog-pr-10361.yml b/html/changelogs/AutoChangeLog-pr-10361.yml new file mode 100644 index 0000000000..0224bdcb49 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-10361.yml @@ -0,0 +1,4 @@ +author: "CameronWoof" +delete-after: True +changes: + - rscadd: "Ghost Cafe patrons now spawn with chameleon kits. Dress up! Be fancy!" From b592af1745b2f5dbbeac8a72b133f7f53992201c Mon Sep 17 00:00:00 2001 From: CitadelStationBot Date: Tue, 31 Dec 2019 21:29:50 -0600 Subject: [PATCH 156/192] Automatic changelog generation for PR #10356 [ci skip] --- html/changelogs/AutoChangeLog-pr-10356.yml | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-10356.yml diff --git a/html/changelogs/AutoChangeLog-pr-10356.yml b/html/changelogs/AutoChangeLog-pr-10356.yml new file mode 100644 index 0000000000..1016b559ee --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-10356.yml @@ -0,0 +1,5 @@ +author: "Bhijn" +delete-after: True +changes: + - rscadd: "Added a preference to make the sprint hotkey be a toggle instead of a hold bind" + - rscadd: "Added a preference to bind the sprint hotkey to space instead of shift." From 12c099c23e24a857dac48030799103c2aaf66f9e Mon Sep 17 00:00:00 2001 From: CitadelStationBot Date: Tue, 31 Dec 2019 21:32:07 -0600 Subject: [PATCH 157/192] Automatic changelog generation for PR #10330 [ci skip] --- html/changelogs/AutoChangeLog-pr-10330.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-10330.yml diff --git a/html/changelogs/AutoChangeLog-pr-10330.yml b/html/changelogs/AutoChangeLog-pr-10330.yml new file mode 100644 index 0000000000..b2a46ef605 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-10330.yml @@ -0,0 +1,4 @@ +author: "keronshb" +delete-after: True +changes: + - rscadd: "Adds new features for nanites" From 318a6812c39bf6df05f3b31f32ac3a97c1c20d5b Mon Sep 17 00:00:00 2001 From: Hatterhat Date: Tue, 31 Dec 2019 21:38:11 -0600 Subject: [PATCH 158/192] manually copied tgstation#47443 --- code/modules/projectiles/gun.dm | 5 +++++ code/modules/projectiles/guns/ballistic/revolver.dm | 1 + code/modules/projectiles/guns/ballistic/shotgun.dm | 2 ++ code/modules/projectiles/guns/ballistic/toy.dm | 1 + 4 files changed, 9 insertions(+) diff --git a/code/modules/projectiles/gun.dm b/code/modules/projectiles/gun.dm index 531c6082b0..19fdfd2b7e 100644 --- a/code/modules/projectiles/gun.dm +++ b/code/modules/projectiles/gun.dm @@ -37,6 +37,7 @@ var/burst_spread = 0 //Spread induced by the gun itself during burst fire per iteration. Only checked if spread is 0. var/randomspread = 1 //Set to 0 for shotguns. This is used for weapons that don't fire all their bullets at once. var/inaccuracy_modifier = 1 + var/pb_knockback = 0 lefthand_file = 'icons/mob/inhands/weapons/guns_lefthand.dmi' righthand_file = 'icons/mob/inhands/weapons/guns_righthand.dmi' @@ -125,6 +126,10 @@ if(message) if(pointblank) user.visible_message("[user] fires [src] point blank at [pbtarget]!", null, null, COMBAT_MESSAGE_RANGE) + if(pb_knockback > 0) + var/atom/throw_target = get_edge_target_turf(pbtarget, user.dir) + pbtarget.throw_at(throw_target, pb_knockback, 2) + else user.visible_message("[user] fires [src]!", null, null, COMBAT_MESSAGE_RANGE) diff --git a/code/modules/projectiles/guns/ballistic/revolver.dm b/code/modules/projectiles/guns/ballistic/revolver.dm index c2206fcea8..31a5131804 100644 --- a/code/modules/projectiles/guns/ballistic/revolver.dm +++ b/code/modules/projectiles/guns/ballistic/revolver.dm @@ -273,6 +273,7 @@ "Maple" = "dshotgun-l", "Rosewood" = "dshotgun-p" ) + pb_knockback = 3 // it's a super shotgun! /obj/item/gun/ballistic/revolver/doublebarrel/attackby(obj/item/A, mob/user, params) ..() diff --git a/code/modules/projectiles/guns/ballistic/shotgun.dm b/code/modules/projectiles/guns/ballistic/shotgun.dm index 571525d8f0..deec187f88 100644 --- a/code/modules/projectiles/guns/ballistic/shotgun.dm +++ b/code/modules/projectiles/guns/ballistic/shotgun.dm @@ -12,6 +12,8 @@ var/recentpump = 0 // to prevent spammage weapon_weight = WEAPON_MEDIUM + pb_knockback = 2 + /obj/item/gun/ballistic/shotgun/attackby(obj/item/A, mob/user, params) . = ..() if(.) diff --git a/code/modules/projectiles/guns/ballistic/toy.dm b/code/modules/projectiles/guns/ballistic/toy.dm index 8b358832b0..8f9bc13583 100644 --- a/code/modules/projectiles/guns/ballistic/toy.dm +++ b/code/modules/projectiles/guns/ballistic/toy.dm @@ -56,6 +56,7 @@ item_flags = NONE casing_ejector = FALSE can_suppress = FALSE + pb_knockback = 0 /obj/item/gun/ballistic/shotgun/toy/process_chamber(empty_chamber = 0) ..() From 51a7c7776a695528aae3dd46eca9e428f127875f Mon Sep 17 00:00:00 2001 From: Putnam Date: Tue, 31 Dec 2019 23:03:58 -0800 Subject: [PATCH 159/192] 1-5 -> -2 to 2 --- code/controllers/subsystem/vote.dm | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/code/controllers/subsystem/vote.dm b/code/controllers/subsystem/vote.dm index fa4ef47819..191ca9c2b0 100644 --- a/code/controllers/subsystem/vote.dm +++ b/code/controllers/subsystem/vote.dm @@ -443,7 +443,7 @@ SUBSYSTEM_DEF(vote) if(RANKED_CHOICE_VOTING) . += "

    Vote by order of preference. Revoting will demote to the bottom. 1 is your favorite, and higher numbers are worse.

    " if(SCORE_VOTING) - . += "

    Grade the candidates by how much you like them, 1-5 least-most.

    " + . += "

    Grade the candidates by how much you like them.

    " . += "Time Left: [DisplayTimeText(end_time-world.time)]

    " - /* if(!(C.ckey in saved)) . += "(Save vote)" else . += "(Saved!)" - if((mode in SSpersistence.saved_votes) && (C.ckey in SSpersistence.saved_votes[mode])) - . += "(Load vote from save)" - */ + . += "(Load vote from save)" . += "(Reset votes)" if(admin) . += "(Cancel Vote) " @@ -580,14 +574,21 @@ SUBSYSTEM_DEF(vote) voted -= usr.ckey if("save") if(usr.ckey in voted) - if(!(mode in SSpersistence.saved_votes)) - SSpersistence.saved_votes[mode] = list() - SSpersistence.saved_votes[mode][usr.ckey] = voted[usr.ckey] + if(!(usr.ckey in SSpersistence.saved_votes)) + SSpersistence.saved_votes[usr.ckey] = list() + SSpersistence.saved_votes[usr.ckey][mode] = voted[usr.ckey] saved += usr.ckey if("load") - if((mode in SSpersistence.saved_votes) && (usr.ckey in SSpersistence.saved_votes[mode])) - voted[usr.ckey] = SSpersistence.saved_votes[mode][usr.ckey] - saved += usr.ckey + if(!(usr.ckey in SSpersistence.saved_votes)) + SSpersistence.LoadSavedVote(usr.ckey) + if(!(usr.ckey in SSpersistence.saved_votes)) + SSpersistence.saved_votes[usr.ckey] = list() + if(usr.ckey in voted) + SSpersistence.saved_votes[usr.ckey][mode] = voted[usr.ckey] + else + SSpersistence.saved_votes[usr.ckey][mode] = list() + voted[usr.ckey] = SSpersistence.saved_votes[usr.ckey][mode] + saved += usr.ckey else if(vote_system == SCORE_VOTING) submit_vote(round(text2num(href_list["vote"])),round(text2num(href_list["score"]))) From 96a57d74db107a57f9d97b8a59748a34d1c9ddff Mon Sep 17 00:00:00 2001 From: CitadelStationBot Date: Thu, 2 Jan 2020 00:07:20 -0600 Subject: [PATCH 185/192] Automatic changelog generation for PR #10374 [ci skip] --- html/changelogs/AutoChangeLog-pr-10374.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-10374.yml diff --git a/html/changelogs/AutoChangeLog-pr-10374.yml b/html/changelogs/AutoChangeLog-pr-10374.yml new file mode 100644 index 0000000000..376f49a4d4 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-10374.yml @@ -0,0 +1,4 @@ +author: "Bhijn helped" +delete-after: True +changes: + - bugfix: "Fixes Dragon's Tooth Sword 50% armor penetration by making it 35%" From 49084e8394733527db4aff3747b99c4e97f17b47 Mon Sep 17 00:00:00 2001 From: CitadelStationBot Date: Thu, 2 Jan 2020 00:07:42 -0600 Subject: [PATCH 186/192] Automatic changelog generation for PR #10366 [ci skip] --- html/changelogs/AutoChangeLog-pr-10366.yml | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-10366.yml diff --git a/html/changelogs/AutoChangeLog-pr-10366.yml b/html/changelogs/AutoChangeLog-pr-10366.yml new file mode 100644 index 0000000000..ec8d234edd --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-10366.yml @@ -0,0 +1,5 @@ +author: "Hatterhat" +delete-after: True +changes: + - balance: "Beakers are generally more useful now, with slight capacity increases." + - tweak: "Transfer amounts are different now. Adjust your muscle memory to compensate." From ab15fdcabfc272060d73a8478943608861b381af Mon Sep 17 00:00:00 2001 From: CitadelStationBot Date: Thu, 2 Jan 2020 00:08:23 -0600 Subject: [PATCH 187/192] Automatic changelog generation for PR #10371 [ci skip] --- html/changelogs/AutoChangeLog-pr-10371.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-10371.yml diff --git a/html/changelogs/AutoChangeLog-pr-10371.yml b/html/changelogs/AutoChangeLog-pr-10371.yml new file mode 100644 index 0000000000..e4322d70f1 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-10371.yml @@ -0,0 +1,4 @@ +author: "kappa-sama" +delete-after: True +changes: + - rscadd: "loot crates in cargo contraband" From 12680566b7464b5a970dc0c430004c056220656c Mon Sep 17 00:00:00 2001 From: Putnam Date: Wed, 1 Jan 2020 23:37:14 -0800 Subject: [PATCH 188/192] fixed voting. FUCK --- code/controllers/subsystem/vote.dm | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/code/controllers/subsystem/vote.dm b/code/controllers/subsystem/vote.dm index 85ecfb955f..573c89a5af 100644 --- a/code/controllers/subsystem/vote.dm +++ b/code/controllers/subsystem/vote.dm @@ -158,7 +158,7 @@ SUBSYSTEM_DEF(vote) scores_by_choice -= score_name while(scores_by_choice.len > 1) var/highest_median = 0 - for(var/score_name in scores_by_choice) + for(var/score_name in scores_by_choice) // first get highest median var/list/score = scores_by_choice[score_name] if(!score.len) scores_by_choice -= score_name @@ -166,7 +166,10 @@ SUBSYSTEM_DEF(vote) var/median = score[max(1,round(score.len/2))] if(median >= highest_median) highest_median = median - else + for(var/score_name in scores_by_choice) // then, remove + var/list/score = scores_by_choice[score_name] + var/median = score[max(1,round(score.len/2))] + if(median < highest_median) scores_by_choice -= score_name for(var/score_name in scores_by_choice) // after removals var/list/score = scores_by_choice[score_name] From 2f1e44a3a5905f42b5f4dd025ef3bb6e3c9fb592 Mon Sep 17 00:00:00 2001 From: CitadelStationBot Date: Thu, 2 Jan 2020 17:54:17 -0600 Subject: [PATCH 189/192] Automatic changelog generation for PR #10388 [ci skip] --- html/changelogs/AutoChangeLog-pr-10388.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-10388.yml diff --git a/html/changelogs/AutoChangeLog-pr-10388.yml b/html/changelogs/AutoChangeLog-pr-10388.yml new file mode 100644 index 0000000000..fd06a5db3f --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-10388.yml @@ -0,0 +1,4 @@ +author: "CameronWoof" +delete-after: True +changes: + - rscadd: "Robots can now check the crew manifest from anywhere with the \"View Crew Manifest\" verb." From 3a20d16b2e66d9f204638cce05f7beedd22ee7a3 Mon Sep 17 00:00:00 2001 From: CitadelStationBot Date: Thu, 2 Jan 2020 17:56:46 -0600 Subject: [PATCH 190/192] Automatic changelog generation for PR #10270 [ci skip] --- html/changelogs/AutoChangeLog-pr-10270.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-10270.yml diff --git a/html/changelogs/AutoChangeLog-pr-10270.yml b/html/changelogs/AutoChangeLog-pr-10270.yml new file mode 100644 index 0000000000..b47a249f9a --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-10270.yml @@ -0,0 +1,4 @@ +author: "Ghommie" +delete-after: True +changes: + - bugfix: "Fixed the secret sauce recipe being randomized every round." From 312d56903991d342ba02aa508d5a26bc3ce9eaed Mon Sep 17 00:00:00 2001 From: CitadelStationBot Date: Thu, 2 Jan 2020 18:01:56 -0600 Subject: [PATCH 191/192] Automatic changelog generation for PR #10238 [ci skip] --- html/changelogs/AutoChangeLog-pr-10238.yml | 7 +++++++ 1 file changed, 7 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-10238.yml diff --git a/html/changelogs/AutoChangeLog-pr-10238.yml b/html/changelogs/AutoChangeLog-pr-10238.yml new file mode 100644 index 0000000000..dda40c86c9 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-10238.yml @@ -0,0 +1,7 @@ +author: "SpaceManiac, bobbahbrown, ShizCalev, SpaceManiac (ported by Ghommie)" +delete-after: True +changes: + - code_imp: "It is now possible to set a different most-base-turf per z-level." + - spellcheck: "Removed unlawful reference to Disney's Star Wars franchise in map logging." + - tweak: "Moved mapping related errors to their own log file." + - bugfix: "Destruction on Lavaland will no longer reveal space in rare situations." From f4b35e635b6505030da4c4a4539e2058596fba31 Mon Sep 17 00:00:00 2001 From: CitadelStationBot Date: Thu, 2 Jan 2020 22:01:22 -0600 Subject: [PATCH 192/192] Automatic changelog generation for PR #10189 [ci skip] --- html/changelogs/AutoChangeLog-pr-10189.yml | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-10189.yml diff --git a/html/changelogs/AutoChangeLog-pr-10189.yml b/html/changelogs/AutoChangeLog-pr-10189.yml new file mode 100644 index 0000000000..5889e127d2 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-10189.yml @@ -0,0 +1,5 @@ +author: "Putnam3145" +delete-after: True +changes: + - rscadd: "Dynamic storytellers, a new voting paradigm for dynamic" + - rscadd: "Support for approval voting and condorcet (ranked choice) voting in server votes"

    GpLGRF?(uQM=&2L6Bj= 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 VO0s|Iqkato($>&duX=1B^*^~jTV4PF delta 5995 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 Date: Sat, 28 Dec 2019 23:58:28 +0800 Subject: [PATCH 087/192] weh --- code/game/objects/items/cigs_lighters.dm | 164 ++++++++++++----------- 1 file changed, 83 insertions(+), 81 deletions(-) diff --git a/code/game/objects/items/cigs_lighters.dm b/code/game/objects/items/cigs_lighters.dm index bd5e959a3f..1c697ab98c 100644 --- a/code/game/objects/items/cigs_lighters.dm +++ b/code/game/objects/items/cigs_lighters.dm @@ -898,70 +898,74 @@ CIGARETTE PACKETS ARE IN FANCY.DM if (DP.dry) //Nothing if our bong is full if (reagents.holder_full()) - user.show_message("The bowl is full!", 1) + user.show_message("The bowl is full!", MSG_VISUAL) return //Transfer reagents and remove the plant - user.show_message("You stuff the [DP] into the [src]'s bowl.", 1) + user.show_message("You stuff the [DP] into the [src]'s bowl.", MSG_VISUAL) DP.reagents.trans_to(src, 100) qdel(DP) return else - user.show_message("[DP] must be dried first!", 1) + user.show_message("[DP] must be dried first!", MSG_VISUAL) return - if (O.heat > 500) - if (reagents && reagents.total_volume) //if there's stuff in the bong - var/lighting_text = O.ignition_effect(src, user) - if(lighting_text) - //Logic regarding igniting it on - if (firecharges == 0) - user.show_message("You light the [src] with the [O]!", 1) - bongturnon() - else - user.show_message("You rekindle [src]'s flame with the [O]!", 1) + if (O.get_temperature() <= 500) + return + if (reagents && reagents.total_volume) //if there's stuff in the bong + var/lighting_text = O.ignition_effect(src, user) + if(lighting_text) + //Logic regarding igniting it on + if (firecharges == 0) + user.show_message("You light the [src] with the [O]!", MSG_VISUAL) + bongturnon() + else + user.show_message("You rekindle [src]'s flame with the [O]!", MSG_VISUAL) - firecharges = 1 - return - else - user.show_message("There's nothing to light up in the bowl.", 1) + firecharges = 1 return + else + user.show_message("There's nothing to light up in the bowl.", MSG_VISUAL) + return /obj/item/bong/CtrlShiftClick(mob/user) //empty reagents on alt click + ..() if(!istype(user) || !user.canUseTopic(src, BE_CLOSE, ismonkey(user))) return if (reagents && reagents.total_volume) - user.show_message("You empty the [src].", 1) + user.show_message("You empty the [src].", MSG_VISUAL) reagents.clear_reagents() if(firecharges) firecharges = 0 bongturnoff() else - user.show_message("The [src] is already empty.", 1) + user.show_message("The [src] is already empty.", MSG_VISUAL) /obj/item/bong/AltClick(mob/user) + ..() if(!istype(user) || !user.canUseTopic(src, BE_CLOSE, ismonkey(user))) return if(firecharges) firecharges = 0 bongturnoff() - user.show_message("You quench the flame.", 1) + user.show_message("You quench the flame.", MSG_VISUAL) + return TRUE /obj/item/bong/examine(mob/user) - ..() + . = ..() if(!reagents.total_volume) - to_chat(user, "The bowl is empty.") + . += "The bowl is empty." else if (reagents.total_volume > 80) - to_chat(user, "The bowl is filled to the brim.") + . += "The bowl is filled to the brim." else if (reagents.total_volume > 40) - to_chat(user, "The bowl has plenty weed in it.") + . += user, "The bowl has plenty weed in it." else - to_chat(user, "The bowl has some weed in it.") + . += "The bowl has some weed in it." - to_chat(user, "Ctrl+Shift-click to empty.") - to_chat(user, "Alt-click to extinguish.") + . += "Ctrl+Shift-click to empty." + . += "Alt-click to extinguish." /obj/item/bong/ignition_effect(atom/A, mob/user) if(firecharges) @@ -971,78 +975,76 @@ CIGARETTE PACKETS ARE IN FANCY.DM /obj/item/bong/attack(mob/living/carbon/M, mob/living/carbon/user, obj/target) //if it's lit up, some stuff in the bowl and the user is a target, and we're not on cooldown - if (!reagents) - return - if (M ==! user) - return + if (M != user) + return ..() if(user.is_mouth_covered(head_only = 1)) to_chat(user, "Remove your headgear first.") - return + return ..() if(user.is_mouth_covered(mask_only = 1)) to_chat(user, "Remove your mask first.") - return + return ..() if (!reagents.total_volume) to_chat(user, "There's nothing in the bowl.") - return + return ..() if (!firecharges) to_chat(user, "You have to light it up first.") + return ..() + + if (last_used_time + 30 >= world.time) + return ..() + var/hit_strength + var/noise + var/hittext = "" + //if the intent is help then you take a small hit, else a big one + if (user.a_intent == INTENT_HARM) + hit_strength = 2 + noise = 100 + hittext = "big hit" + else + hit_strength = 1 + noise = 70 + hittext = "hit" + //bubbling sound + playsound(user.loc,'sound/effects/bonghit.ogg', noise, 1) + + last_used_time = world.time + + //message + user.visible_message("[user] begins to take a [hittext] from the [src]!", \ + "You begin to take a [hittext] from [src].") + + //we take a hit here, after an uninterrupted delay + if(!do_after(user, 25, target = user)) return + if (reagents && reagents.total_volume) + var/fraction = 12 * hit_strength - if (last_used_time + 30 < world.time) - var/hit_strength - var/noise - var/hittext = "" - //if the intent is help then you take a small hit, else a big one - if (user.a_intent == INTENT_HARM) - hit_strength = 2 - noise = 100 - hittext = "big hit" - else - hit_strength = 1 - noise = 70 - hittext = "hit" - //bubbling sound - playsound(user.loc,'sound/effects/bonghit.ogg', noise, 1) + var/datum/effect_system/smoke_spread/chem/smoke_machine/s = new + s.set_up(reagents, hit_strength, 18, user.loc) + s.start() - last_used_time = world.time + reagents.reaction(user, INGEST, fraction) + if(!reagents.trans_to(user, fraction)) + reagents.remove_any(fraction) - //message - user.visible_message("[user] begins to take a "+ hittext +" from the [src]!", \ - "You begin to take a "+ hittext +" from [src].") + if (hit_strength == 2 && prob(15)) + user.emote("cough") + user.adjustOxyLoss(15) - //we take a hit here, after an uninterrupted delay - if(do_after(user, 25, target = user)) - if (reagents && reagents.total_volume) - var/fraction = 12 * hit_strength + user.visible_message("[user] takes a [hittext] from the [src]!", \ + "You take a [hittext] from [src].") - var/datum/effect_system/smoke_spread/chem/smoke_machine/s = new - s.set_up(reagents, hit_strength, 18, user.loc) - s.start() - - reagents.reaction(user, INGEST, fraction) - if(!reagents.trans_to(user, fraction)) - reagents.remove_any(fraction) - - if (hit_strength == 2 && prob(15)) - user.emote("cough") - user.adjustOxyLoss(15) - - //playsound(user.loc, 'sound/effects/smoke.ogg', 10, 1, -3) - - user.visible_message("[user] takes a "+ hittext +" from the [src]!", \ - "You take a "+ hittext +" from [src].") - - firecharges = firecharges - 1 - if (firecharges == 0) - bongturnoff() - if (!reagents.total_volume) - firecharges = 0 - bongturnoff() + firecharges = firecharges - 1 + if (!firecharges) + bongturnoff() + if (!reagents.total_volume) + firecharges = 0 + bongturnoff() @@ -1060,4 +1062,4 @@ CIGARETTE PACKETS ARE IN FANCY.DM name = "coconut bong" icon_off = "coconut_bong" icon_on = "coconut_bong_lit" - desc = "A water bong used for smoking dried plants. This one's made out of a coconut and some bamboo" \ No newline at end of file + desc = "A water bong used for smoking dried plants. This one's made out of a coconut and some bamboo." \ No newline at end of file From c0e8e55d7060ecf9bf04f79966367ba18abe2ca5 Mon Sep 17 00:00:00 2001 From: Seris02 Date: Sun, 29 Dec 2019 00:07:11 +0800 Subject: [PATCH 088/192] more weh. --- code/modules/hydroponics/grown/misc.dm | 106 ++++++++++++------------- 1 file changed, 53 insertions(+), 53 deletions(-) diff --git a/code/modules/hydroponics/grown/misc.dm b/code/modules/hydroponics/grown/misc.dm index dbeddfdbd0..6dba7c74af 100644 --- a/code/modules/hydroponics/grown/misc.dm +++ b/code/modules/hydroponics/grown/misc.dm @@ -288,8 +288,7 @@ /obj/item/reagent_containers/food/snacks/grown/coconut/Initialize(mapload, obj/item/seeds/new_seed) . = ..() - var/newvolume - newvolume = 50 + round(seed.potency,10) + var/newvolume = 50 + round(seed.potency,10) if (seed.get_gene(/datum/plant_gene/trait/maxchem)) newvolume = newvolume + 50 volume = newvolume @@ -299,23 +298,25 @@ transform *= TRANSFORM_USING_VARIABLE(40, 100) + 0.5 //temporary fix for size? /obj/item/reagent_containers/food/snacks/grown/coconut/attack_self(mob/user) - if (opened == TRUE) - if(possible_transfer_amounts.len) - var/i=0 - for(var/A in possible_transfer_amounts) - i++ - if(A == amount_per_transfer_from_this) - if(i[src]'s transfer amount is now [amount_per_transfer_from_this] units.") - return + if (opened) + if(!possible_transfer_amounts.len) + return + var/i=0 + for(var/A in possible_transfer_amounts) + i++ + if(A != amount_per_transfer_from_this) + continue + if(i[src]'s transfer amount is now [amount_per_transfer_from_this] units.") + return /obj/item/reagent_containers/food/snacks/grown/coconut/attackby(obj/item/W, mob/user, params) //DEFUSING NADE LOGIC - if (W.tool_behaviour == TOOL_WIRECUTTER && fused == TRUE) - user.show_message("You cut the fuse!", 1) + if (W.tool_behaviour == TOOL_WIRECUTTER && fused) + user.show_message("You cut the fuse!", MSG_VISUAL) playsound(user, W.hitsound, 50, 1, -1) icon_state = "coconut_carved" desc = "A coconut. This one's got a hole in it." @@ -327,14 +328,14 @@ set_light(0, 0.0) return //IGNITING NADE LOGIC - if(fusedactive == FALSE && fused == TRUE) + if(!fusedactive && fused) var/lighting_text = W.ignition_effect(src, user) if(lighting_text) user.visible_message("[user] ignites [src]'s fuse!", "You ignite the [src]'s fuse!") fusedactive = TRUE defused = FALSE playsound(src, 'sound/effects/fuse.ogg', 100, 0) - message_admins("[ADMIN_LOOKUPFLW(user)] ignited a coconut bomb for detonation at [ADMIN_VERBOSEJMP(user)] "+ pretty_string_from_reagent_list(reagents.reagent_list)) + message_admins("[ADMIN_LOOKUPFLW(user)] ignited a coconut bomb for detonation at [ADMIN_VERBOSEJMP(user)] [pretty_string_from_reagent_list(reagents.reagent_list)]") log_game("[key_name(user)] primed a coconut grenade for detonation at [AREACOORD(user)].") addtimer(CALLBACK(src, .proc/prime), 5 SECONDS) icon_state = "coconut_grenade_active" @@ -346,7 +347,7 @@ //ADDING A FUSE, NADE LOGIC if (istype(W,/obj/item/stack/sheet/cloth) || istype(W,/obj/item/stack/sheet/durathread)) - if (carved == TRUE && straw == FALSE && fused == FALSE) + if (carved && !straw && !fused) user.show_message("You add a fuse to the coconut!", 1) W.use(1) fused = TRUE @@ -355,14 +356,14 @@ name = "coconut bomb" return //ADDING STRAW LOGIC - if (istype(W,/obj/item/stack/sheet/mineral/bamboo) && opened == TRUE && straw == FALSE && fused == FALSE) + if (istype(W,/obj/item/stack/sheet/mineral/bamboo) && opened && !straw && fused) user.show_message("You add a bamboo straw to the coconut!", 1) straw = TRUE W.use(1) icon_state += "_straw" desc = "You can already feel like you're on a tropical vacation." //OPENING THE NUT LOGIC - if (carved == FALSE && chopped == FALSE) + if (!carved && !chopped) if(W.tool_behaviour == TOOL_SCREWDRIVER) user.show_message("You make a hole in the coconut!", 1) carved = TRUE @@ -386,7 +387,7 @@ return /obj/item/reagent_containers/food/snacks/grown/coconut/attack(mob/living/M, mob/user, obj/target) - if(M && user.a_intent == INTENT_HARM && spillable == FALSE) + if(M && user.a_intent == INTENT_HARM && !spillable) var/obj/item/bodypart/affecting = user.zone_selected //Find what the player is aiming at if (affecting == BODY_ZONE_HEAD && prob(15)) //smash the nut open @@ -420,7 +421,7 @@ if(fusedactive) return - if(opened == FALSE) + if(!opened) return if(!canconsume(M, user)) @@ -430,37 +431,36 @@ to_chat(user, "[src] is empty!") return - if(istype(M)) - if(user.a_intent == INTENT_HARM && spillable == TRUE) - var/R - M.visible_message("[user] splashes the contents of [src] onto [M]!", \ - "[user] splashes the contents of [src] onto [M]!") - if(reagents) - for(var/datum/reagent/A in reagents.reagent_list) - R += A.id + " (" - R += num2text(A.volume) + ")," - if(isturf(target) && reagents.reagent_list.len && thrownby) - log_combat(thrownby, target, "splashed (thrown) [english_list(reagents.reagent_list)]") - message_admins("[ADMIN_LOOKUPFLW(thrownby)] splashed (thrown) [english_list(reagents.reagent_list)] on [target] at [ADMIN_VERBOSEJMP(target)].") - reagents.reaction(M, TOUCH) - log_combat(user, M, "splashed", R) - reagents.clear_reagents() + if(user.a_intent == INTENT_HARM && spillable) + var/R + M.visible_message("[user] splashes the contents of [src] onto [M]!", \ + "[user] splashes the contents of [src] onto [M]!") + if(reagents) + for(var/datum/reagent/A in reagents.reagent_list) + R += A.id + " (" + R += num2text(A.volume) + ")," + if(isturf(target) && reagents.reagent_list.len && thrownby) + log_combat(thrownby, target, "splashed (thrown) [english_list(reagents.reagent_list)]") + message_admins("[ADMIN_LOOKUPFLW(thrownby)] splashed (thrown) [english_list(reagents.reagent_list)] on [target] at [ADMIN_VERBOSEJMP(target)].") + reagents.reaction(M, TOUCH) + log_combat(user, M, "splashed", R) + reagents.clear_reagents() + else + if(M != user) + M.visible_message("[user] attempts to feed something to [M].", \ + "[user] attempts to feed something to you.") + if(!do_mob(user, M)) + return + if(!reagents || !reagents.total_volume) + return // The drink might be empty after the delay, such as by spam-feeding + M.visible_message("[user] feeds something to [M].", "[user] feeds something to you.") + log_combat(user, M, "fed", reagents.log_list()) else - if(M != user) - M.visible_message("[user] attempts to feed something to [M].", \ - "[user] attempts to feed something to you.") - if(!do_mob(user, M)) - return - if(!reagents || !reagents.total_volume) - return // The drink might be empty after the delay, such as by spam-feeding - M.visible_message("[user] feeds something to [M].", "[user] feeds something to you.") - log_combat(user, M, "fed", reagents.log_list()) - else - to_chat(user, "You swallow a gulp of [src].") - var/fraction = min(5/reagents.total_volume, 1) - reagents.reaction(M, INGEST, fraction) - addtimer(CALLBACK(reagents, /datum/reagents.proc/trans_to, M, 5), 5) - playsound(M.loc,'sound/items/drink.ogg', rand(10,50), 1) + to_chat(user, "You swallow a gulp of [src].") + var/fraction = min(5/reagents.total_volume, 1) + reagents.reaction(M, INGEST, fraction) + addtimer(CALLBACK(reagents, /datum/reagents.proc/trans_to, M, 5), 5) + playsound(M.loc,'sound/items/drink.ogg', rand(10,50), 1) /obj/item/reagent_containers/food/snacks/grown/coconut/afterattack(obj/target, mob/user, proximity) . = ..() From 46f3a70c4bfec62ae263b596b3a17eaa6d05ff38 Mon Sep 17 00:00:00 2001 From: Seris02 Date: Sun, 29 Dec 2019 00:09:30 +0800 Subject: [PATCH 089/192] even more weh. --- code/modules/hydroponics/grown/misc.dm | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/code/modules/hydroponics/grown/misc.dm b/code/modules/hydroponics/grown/misc.dm index 6dba7c74af..7ffb970e67 100644 --- a/code/modules/hydroponics/grown/misc.dm +++ b/code/modules/hydroponics/grown/misc.dm @@ -385,6 +385,7 @@ desc = "A coconut. This one's sliced open, with all its delicious contents for your eyes to savour." playsound(user, W.hitsound, 50, 1, -1) return + return ..() /obj/item/reagent_containers/food/snacks/grown/coconut/attack(mob/living/M, mob/user, obj/target) if(M && user.a_intent == INTENT_HARM && !spillable) @@ -402,11 +403,11 @@ //Display an attack message. if(M != user) - M.visible_message("[user] has cracked open a [src.name] on [M]'s head!", \ - "[user] has cracked open a [src.name] on [M]'s head!") + M.visible_message("[user] has cracked open a [name] on [M]'s head!", \ + "[user] has cracked open a [name] on [M]'s head!") else - user.visible_message("[M] cracks open a [src.name] on their [M.p_them()] head!", \ - "[M] cracks open a [src.name] on [M.p_their()] head!") + user.visible_message("[M] cracks open a [name] on their [M.p_them()] head!", \ + "[M] cracks open a [name] on [M.p_their()] head!") //The coconut breaks open so splash its reagents spillable = TRUE From 1ff770976527af3d960162d054529d9b78f1357e Mon Sep 17 00:00:00 2001 From: Seris02 Date: Sun, 29 Dec 2019 00:12:25 +0800 Subject: [PATCH 090/192] all of the weh. --- code/game/objects/items/cigs_lighters.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/game/objects/items/cigs_lighters.dm b/code/game/objects/items/cigs_lighters.dm index 1c697ab98c..71d6050ca1 100644 --- a/code/game/objects/items/cigs_lighters.dm +++ b/code/game/objects/items/cigs_lighters.dm @@ -960,7 +960,7 @@ CIGARETTE PACKETS ARE IN FANCY.DM else if (reagents.total_volume > 80) . += "The bowl is filled to the brim." else if (reagents.total_volume > 40) - . += user, "The bowl has plenty weed in it." + . += "The bowl has plenty weed in it." else . += "The bowl has some weed in it." From 390cfd8b64cdd10d5d74719d8354cba5cc133a26 Mon Sep 17 00:00:00 2001 From: keronshb Date: Sat, 28 Dec 2019 16:56:17 -0500 Subject: [PATCH 091/192] Nanite ports from /tg/ Ports a couple of the newer nanite features from /tg/ --- .../subsystem/processing/nanites.dm | 1 + code/datums/components/nanites.dm | 9 +- .../research/designs/nanite_designs.dm | 30 ++++ .../nanites/nanite_programs/utility.dm | 154 +++++++++++++++++- code/modules/research/techweb/all_nodes.dm | 8 +- 5 files changed, 192 insertions(+), 10 deletions(-) diff --git a/code/controllers/subsystem/processing/nanites.dm b/code/controllers/subsystem/processing/nanites.dm index 69bd5781de..5b53f9f884 100644 --- a/code/controllers/subsystem/processing/nanites.dm +++ b/code/controllers/subsystem/processing/nanites.dm @@ -6,6 +6,7 @@ PROCESSING_SUBSYSTEM_DEF(nanites) var/list/datum/nanite_cloud_backup/cloud_backups = list() var/list/mob/living/nanite_monitored_mobs = list() var/list/datum/nanite_program/relay/nanite_relays = list() + var/neural_network_count = 0 /datum/controller/subsystem/processing/nanites/proc/check_hardware(datum/nanite_cloud_backup/backup) if(QDELETED(backup.storage) || (backup.storage.stat & (NOPOWER|BROKEN))) diff --git a/code/datums/components/nanites.dm b/code/datums/components/nanites.dm index 0ef13b514b..dc87bb78e5 100644 --- a/code/datums/components/nanites.dm +++ b/code/datums/components/nanites.dm @@ -11,8 +11,9 @@ var/list/datum/nanite_program/programs = list() var/max_programs = NANITE_PROGRAM_LIMIT - var/stealth = FALSE //if TRUE, does not appear on HUDs and health scans, and does not display the program list on nanite scans - + var/stealth = FALSE //if TRUE, does not appear on HUDs and health scans + var/diagnostics = TRUE //if TRUE, displays program list when scanned by nanite scanners + /datum/component/nanites/Initialize(amount = 100, cloud = 0) if(!isliving(parent) && !istype(parent, /datum/nanite_cloud_backup)) return COMPONENT_INCOMPATIBLE @@ -252,8 +253,8 @@ to_chat(user, "Cloud ID: [cloud_id ? cloud_id : "Disabled"]") to_chat(user, "================") to_chat(user, "Program List:") - if(stealth) - to_chat(user, "%#$ENCRYPTED&^@") + if(diagnostics) + to_chat(user, "Diagnostics Disabled") else for(var/X in programs) var/datum/nanite_program/NP = X diff --git a/code/modules/research/designs/nanite_designs.dm b/code/modules/research/designs/nanite_designs.dm index 177d7073a1..09fe1d9c9b 100644 --- a/code/modules/research/designs/nanite_designs.dm +++ b/code/modules/research/designs/nanite_designs.dm @@ -25,6 +25,20 @@ program_type = /datum/nanite_program/viral category = list("Utility Nanites") +/datum/design/nanites/research + name = "Distributed Computing" + desc = "The nanites aid the research servers by performing a portion of its calculations, increasing research point generation." + id = "research_nanites" + program_type = /datum/nanite_program/research + category = list("Utility Nanites") + +/datum/design/nanites/researchplus + name = "Neural Network" + desc = "The nanites link the host's brains together forming a neural research network, that becomes more efficient with the amount of total hosts. Can be overloaded to increase research output." + id = "researchplus_nanites" + program_type = /datum/nanite_program/researchplus + category = list("Utility Nanites") + /datum/design/nanites/monitoring name = "Monitoring" desc = "The nanites monitor the host's vitals and location, sending them to the suit sensor network." @@ -39,6 +53,13 @@ program_type = /datum/nanite_program/triggered/self_scan category = list("Utility Nanites") +/datum/design/nanites/dermal_button + name = "Dermal Button" + desc = "Displays a button on the host's skin, which can be used to send a signal to the nanites." + id = "dermal_button_nanites" + program_type = /datum/nanite_program/dermal_button + category = list("Utility Nanites") + /datum/design/nanites/stealth name = "Stealth" desc = "The nanites hide their activity and programming from superficial scans." @@ -46,6 +67,15 @@ program_type = /datum/nanite_program/stealth category = list("Utility Nanites") + +/datum/design/nanites/reduced_diagnostics + name = "Reduced Diagnostics" + desc = "Disables some high-cost diagnostics in the nanites, making them unable to communicate their program list to portable scanners. \ + Doing so saves some power, slightly increasing their replication speed." + id = "red_diag_nanites" + program_type = /datum/nanite_program/reduced_diagnostics + category = list("Utility Nanites") + /datum/design/nanites/access name = "Subdermal ID" desc = "The nanites store the host's ID access rights in a subdermal magnetic strip. Updates when triggered, copying the host's current access." diff --git a/code/modules/research/nanites/nanite_programs/utility.dm b/code/modules/research/nanites/nanite_programs/utility.dm index a269d01ac0..242fabfbb9 100644 --- a/code/modules/research/nanites/nanite_programs/utility.dm +++ b/code/modules/research/nanites/nanite_programs/utility.dm @@ -130,8 +130,7 @@ /datum/nanite_program/stealth name = "Stealth" - desc = "The nanites hide their activity and programming from superficial scans." - rogue_types = list(/datum/nanite_program/toxic) + desc = "The nanites mask their activity from superficial scans, becoming undetectable by HUDs and non-specialized scanners." rogue_types = list(/datum/nanite_program/toxic) use_rate = 0.2 /datum/nanite_program/stealth/enable_passive_effect() @@ -142,6 +141,22 @@ . = ..() nanites.stealth = FALSE +/datum/nanite_program/reduced_diagnostics + name = "Reduced Diagnostics" + desc = "Disables some high-cost diagnostics in the nanites, making them unable to communicate their program list to portable scanners. \ + Doing so saves some power, slightly increasing their replication speed." + rogue_types = list(/datum/nanite_program/toxic) + use_rate = -0.1 + +/datum/nanite_program/reduced_diagnostics/enable_passive_effect() + . = ..() + nanites.diagnostics = FALSE + +/datum/nanite_program/reduced_diagnostics/disable_passive_effect() + . = ..() + nanites.diagnostics = TRUE + + /datum/nanite_program/relay name = "Relay" desc = "The nanites receive and relay long-range nanite signals." @@ -271,3 +286,138 @@ if(fault == src) return fault.software_error() + +/datum/nanite_program/dermal_button + name = "Dermal Button" + desc = "Displays a button on the host's skin, which can be used to send a signal to the nanites." + extra_settings = list("Sent Code","Button Name","Icon","Color") + unique = FALSE + var/datum/action/innate/nanite_button/button + var/button_name = "Button" + var/icon = "power" + var/color = "green" + var/sent_code = 0 + +/datum/nanite_program/dermal_button/set_extra_setting(user, setting) + if(setting == "Sent Code") + var/new_code = input(user, "Set the sent code (1-9999):", name, null) as null|num + if(isnull(new_code)) + return + sent_code = CLAMP(round(new_code, 1), 1, 9999) + if(setting == "Button Name") + var/new_button_name = stripped_input(user, "Choose the name for the button.", "Button Name", button_name, MAX_NAME_LEN) + if(!new_button_name) + return + button_name = new_button_name + if(setting == "Icon") + var/new_icon = input("Select the icon to display on the button:", name) as null|anything in list("one","two","three","four","five","plus","minus","power") + if(!new_icon) + return + icon = new_icon + if(setting == "Color") + var/new_color = input("Select the color of the button's icon:", name) as null|anything in list("green","red","yellow","blue") + if(!new_color) + return + color = new_color + +/datum/nanite_program/dermal_button/get_extra_setting(setting) + if(setting == "Sent Code") + return sent_code + if(setting == "Button Name") + return button_name + if(setting == "Icon") + return capitalize(icon) + if(setting == "Color") + return capitalize(color) + +/datum/nanite_program/dermal_button/copy_extra_settings_to(datum/nanite_program/dermal_button/target) + target.sent_code = sent_code + target.button_name = button_name + target.icon = icon + target.color = color + +/datum/nanite_program/dermal_button/enable_passive_effect() + . = ..() + if(!button) + button = new(src, button_name, icon, color) + button.target = host_mob + button.Grant(host_mob) + +/datum/nanite_program/dermal_button/disable_passive_effect() + . = ..() + if(button) + button.Remove(host_mob) + +/datum/nanite_program/dermal_button/on_mob_remove() + . = ..() + qdel(button) + +/datum/nanite_program/dermal_button/proc/press() + if(activated) + host_mob.visible_message("[host_mob] presses a button on [host_mob.p_their()] forearm.", + "You press the nanite button on your forearm.", null, 2) + SEND_SIGNAL(host_mob, COMSIG_NANITE_SIGNAL, sent_code, "a [name] program") + +/datum/action/innate/nanite_button + name = "Button" + icon_icon = 'icons/mob/actions/actions_items.dmi' + check_flags = AB_CHECK_RESTRAINED|AB_CHECK_STUN|AB_CHECK_CONSCIOUS + button_icon_state = "power_green" + var/datum/nanite_program/dermal_button/program + +/datum/action/innate/nanite_button/New(datum/nanite_program/dermal_button/_program, _name, _icon, _color) + ..() + program = _program + name = _name + button_icon_state = "[_icon]_[_color]" + +/datum/action/innate/nanite_button/Activate() + program.press() + +/datum/nanite_program/research + name = "Distributed Computing" + desc = "The nanites aid the research servers by performing a portion of its calculations, increasing research point generation." + use_rate = 0.2 + rogue_types = list(/datum/nanite_program/toxic) + +/datum/nanite_program/research/active_effect() + if(!iscarbon(host_mob)) + return + var/points = 1 + if(!host_mob.client) //less brainpower + points *= 0.25 + SSresearch.science_tech.add_point_list(list(TECHWEB_POINT_TYPE_GENERIC = points)) + +/datum/nanite_program/researchplus + name = "Neural Network" + desc = "The nanites link the host's brains together forming a neural research network, that becomes more efficient with the amount of total hosts." + use_rate = 0.3 + rogue_types = list(/datum/nanite_program/brain_decay) + +/datum/nanite_program/researchplus/enable_passive_effect() + . = ..() + if(!iscarbon(host_mob)) + return + if(host_mob.client) + SSnanites.neural_network_count++ + else + SSnanites.neural_network_count += 0.25 + +/datum/nanite_program/researchplus/disable_passive_effect() + . = ..() + if(!iscarbon(host_mob)) + return + if(host_mob.client) + SSnanites.neural_network_count-- + else + SSnanites.neural_network_count -= 0.25 + +/datum/nanite_program/researchplus/active_effect() + if(!iscarbon(host_mob)) + return + var/mob/living/carbon/C = host_mob + var/points = round(SSnanites.neural_network_count / 12, 0.1) + if(!C.client) //less brainpower + points *= 0.25 + SSresearch.science_tech.add_point_list(list(TECHWEB_POINT_TYPE_GENERIC = points)) + diff --git a/code/modules/research/techweb/all_nodes.dm b/code/modules/research/techweb/all_nodes.dm index 6877ba71f6..4fe2ddaaa6 100644 --- a/code/modules/research/techweb/all_nodes.dm +++ b/code/modules/research/techweb/all_nodes.dm @@ -960,7 +960,7 @@ prereq_ids = list("datatheory","robotics") design_ids = list("nanite_disk","nanite_remote","nanite_scanner",\ "nanite_chamber","public_nanite_chamber","nanite_chamber_control","nanite_programmer","nanite_program_hub","nanite_cloud_control",\ - "relay_nanites", "monitoring_nanites", "access_nanites", "repairing_nanites","sensor_nanite_volume", "repeater_nanites", "relay_repeater_nanites") + "relay_nanites", "monitoring_nanites", "access_nanites", "repairing_nanites","sensor_nanite_volume", "repeater_nanites", "relay_repeater_nanites","red_diag_nanites") research_costs = list(TECHWEB_POINT_TYPE_GENERIC = 2500) export_price = 5000 @@ -969,7 +969,7 @@ display_name = "Smart Nanite Programming" description = "Nanite programs that require nanites to perform complex actions, act independently, roam or seek targets." prereq_ids = list("nanite_base","adv_robotics") - design_ids = list("purging_nanites", "metabolic_nanites", "stealth_nanites", "memleak_nanites","sensor_voice_nanites", "voice_nanites") + design_ids = list("purging_nanites", "research_nanites", "metabolic_nanites", "stealth_nanites", "memleak_nanites","sensor_voice_nanites", "voice_nanites") research_costs = list(TECHWEB_POINT_TYPE_GENERIC = 2000) export_price = 4000 @@ -978,7 +978,7 @@ display_name = "Mesh Nanite Programming" description = "Nanite programs that require static structures and membranes." prereq_ids = list("nanite_base","engineering") - design_ids = list("hardening_nanites", "refractive_nanites", "cryo_nanites", "conductive_nanites", "shock_nanites", "emp_nanites", "temperature_nanites") + design_ids = list("hardening_nanites", "dermal_button_nanites", "refractive_nanites", "cryo_nanites", "conductive_nanites", "shock_nanites", "emp_nanites", "temperature_nanites") research_costs = list(TECHWEB_POINT_TYPE_GENERIC = 2500) export_price = 5000 @@ -1015,7 +1015,7 @@ display_name = "Harmonic Nanite Programming" description = "Nanite programs that require seamless integration between nanites and biology." prereq_ids = list("nanite_bio","nanite_smart","nanite_mesh") - design_ids = list("fakedeath_nanites","aggressive_nanites","defib_nanites","regenerative_plus_nanites","brainheal_plus_nanites","purging_plus_nanites","adrenaline_nanites") + design_ids = list("fakedeath_nanites","researchplus_nanites","aggressive_nanites","defib_nanites","regenerative_plus_nanites","brainheal_plus_nanites","purging_plus_nanites","adrenaline_nanites") research_costs = list(TECHWEB_POINT_TYPE_GENERIC = 4000) export_price = 8000 From dda7c832f1074c3b352509a67dce58d4b547c522 Mon Sep 17 00:00:00 2001 From: Putnam Date: Sat, 28 Dec 2019 18:14:02 -0800 Subject: [PATCH 092/192] Fixes a runtime, almost definitely --- code/controllers/subsystem/vote.dm | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/code/controllers/subsystem/vote.dm b/code/controllers/subsystem/vote.dm index 812f30078e..06da7c5c24 100644 --- a/code/controllers/subsystem/vote.dm +++ b/code/controllers/subsystem/vote.dm @@ -181,7 +181,8 @@ SUBSYSTEM_DEF(vote) for(var/i=1,i<=voted.len,i++) var/list/myvote = voted[voted[i]] for(var/j=1,j<=myvote.len,j++) - SSblackbox.record_feedback("nested tally","voting",1,list(vote_title_text,"[j]\th",choices[myvote[j]])) + if(choices.len <= myvote[j]) + SSblackbox.record_feedback("nested tally","voting",1,list(vote_title_text,"[j]\th",choices[myvote[j]])) if(obfuscated) //CIT CHANGE - adds obfuscated votes. this messages admins with the vote's true results var/admintext = "Obfuscated results" if(vote_system == RANKED_CHOICE_VOTING) From 00c7d5a41de16d55a7ee4dff2e99bd04a4efc76e Mon Sep 17 00:00:00 2001 From: Putnam Date: Sat, 28 Dec 2019 19:40:31 -0800 Subject: [PATCH 093/192] WOW THAT'S A BIG NUMBER --- code/game/gamemodes/dynamic/dynamic_rulesets_midround.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/game/gamemodes/dynamic/dynamic_rulesets_midround.dm b/code/game/gamemodes/dynamic/dynamic_rulesets_midround.dm index be01e620fe..3a43c1c1ed 100644 --- a/code/game/gamemodes/dynamic/dynamic_rulesets_midround.dm +++ b/code/game/gamemodes/dynamic/dynamic_rulesets_midround.dm @@ -677,7 +677,7 @@ blocking_rules = list(/datum/dynamic_ruleset/roundstart/nuclear,/datum/dynamic_ruleset/midround/from_ghosts/nuclear) high_population_requirement = 15 var/datum/team/abductor_team/team - property_weights = list("story_potential" = 10, "extended" = -2, "valid" = 1, "trust" = -3, "chaos" = 4) + property_weights = list("story_potential" = 2, "extended" = -2, "valid" = 1, "trust" = -3, "chaos" = 4) repeatable_weight_decrease = 4 repeatable = TRUE From 0ac05584170821c89fcba97eca69e5ef9cb989d4 Mon Sep 17 00:00:00 2001 From: Putnam Date: Sat, 28 Dec 2019 20:16:14 -0800 Subject: [PATCH 094/192] balancing is good --- .../dynamic/dynamic_rulesets_latejoin.dm | 4 +-- .../dynamic/dynamic_rulesets_midround.dm | 27 ++++++++++--------- .../dynamic/dynamic_rulesets_roundstart.dm | 22 +++++++-------- 3 files changed, 28 insertions(+), 25 deletions(-) diff --git a/code/game/gamemodes/dynamic/dynamic_rulesets_latejoin.dm b/code/game/gamemodes/dynamic/dynamic_rulesets_latejoin.dm index 6474c5e90f..56af89900c 100644 --- a/code/game/gamemodes/dynamic/dynamic_rulesets_latejoin.dm +++ b/code/game/gamemodes/dynamic/dynamic_rulesets_latejoin.dm @@ -101,7 +101,7 @@ requirements = list(101,101,70,40,40,40,40,40,40,40) high_population_requirement = 40 flags = HIGHLANDER_RULESET - property_weights = list("trust" = -3, "chaos" = 5, "extended" = -5, "valid" = 2, "conversion" = 1) + property_weights = list("trust" = -2, "chaos" = 2, "extended" = -2, "valid" = 2, "conversion" = 1) var/required_heads_of_staff = 3 var/finished = FALSE var/datum/team/revolution/revolution @@ -211,7 +211,7 @@ required_candidates = 1 weight = 3 cost = 10 - property_weights = list("extended" = 2, "chaos" = -1, "trust" = -3, "story_potential" = -2, "conversion" = 1, "valid" = 1) + property_weights = list("extended" = 2, "chaos" = -1, "trust" = -2, "story_potential" = -2, "conversion" = 1, "valid" = 1) requirements = list(90,80,70,60,55,50,45,40,35,30) high_population_requirement = 30 repeatable = TRUE diff --git a/code/game/gamemodes/dynamic/dynamic_rulesets_midround.dm b/code/game/gamemodes/dynamic/dynamic_rulesets_midround.dm index 3a43c1c1ed..9965937b47 100644 --- a/code/game/gamemodes/dynamic/dynamic_rulesets_midround.dm +++ b/code/game/gamemodes/dynamic/dynamic_rulesets_midround.dm @@ -244,7 +244,7 @@ requirements = list(101,101,70,50,50,50,40,30,30,30) high_population_requirement = 30 required_type = /mob/living/silicon/ai - property_weights = list("story_potential" = 2, "trust" = 1, "chaos" = 3) + property_weights = list("story_potential" = 2, "trust" = 1, "chaos" = 2) var/ion_announce = 33 var/removeDontImproveChance = 10 @@ -299,7 +299,7 @@ requirements = list(90,90,70,50,50,50,50,40,30,30) high_population_requirement = 30 repeatable = TRUE - property_weights = list("story_potential" = 5, "trust" = 1, "chaos" = 3, "extended" = -2) + property_weights = list("story_potential" = 2, "trust" = 1, "chaos" = 2, "extended" = -2) var/datum/mind/wizard /datum/dynamic_ruleset/midround/from_ghosts/wizard/ready(forced = FALSE) @@ -348,7 +348,7 @@ cost = 35 requirements = list(90,90,90,80,70,60,50,40,40,40) high_population_requirement = 40 - property_weights = list("story_potential" = 3, "trust" = 5, "chaos" = 2, "extended" = -5, "valid" = 10) + property_weights = list("story_potential" = 2, "trust" = 2, "chaos" = 2, "extended" = -2, "valid" = 2) var/operative_cap = list(2,2,3,3,4,5,5,5,5,5) var/datum/team/nuclear/nuke_team flags = HIGHLANDER_RULESET @@ -402,7 +402,7 @@ requirements = list(101,101,101,80,60,50,50,50,50,50) high_population_requirement = 50 repeatable = TRUE - property_weights = list("story_potential" = -1, "trust" = 5, "chaos" = 3, "extended" = -5, "valid" = 4) + property_weights = list("story_potential" = -1, "trust" = 2, "chaos" = 2, "extended" = -2, "valid" = 2) /datum/dynamic_ruleset/midround/from_ghosts/blob/ready(forced = FALSE) if (required_candidates > (dead_players.len + list_observers.len)) @@ -434,7 +434,7 @@ high_population_requirement = 50 repeatable_weight_decrease = 2 repeatable = TRUE - property_weights = list("story_potential" = -1, "trust" = 5, "chaos" = 2, "extended" = -2, "valid" = 2) + property_weights = list("story_potential" = -1, "trust" = 2, "chaos" = 2, "extended" = -2, "valid" = 2) var/list/vents = list() /datum/dynamic_ruleset/midround/from_ghosts/xenomorph/ready(forced = FALSE) @@ -490,7 +490,7 @@ high_population_requirement = 50 repeatable_weight_decrease = 2 repeatable = TRUE - property_weights = list("story_potential" = 1, "trust" = 1, "extended" = 1, "valid" = 2, "integrity" = 5) + property_weights = list("story_potential" = 1, "trust" = 1, "extended" = 1, "valid" = 2, "integrity" = 2) var/list/spawn_locs = list() /datum/dynamic_ruleset/midround/from_ghosts/nightmare/execute() @@ -536,7 +536,7 @@ weight = 4 cost = 5 requirements = list(30,30,20,20,15,10,10,10,10,5) // yes, it can even happen in "extended"! - property_weights = list("story_potential" = 3, "extended" = 5, "valid" = -5, "integrity" = 2) + property_weights = list("story_potential" = 2, "extended" = 2, "valid" = -2) high_population_requirement = 5 /datum/dynamic_ruleset/midround/from_ghosts/sentient_disease/ready(forced = FALSE) @@ -571,15 +571,18 @@ cost = 5 requirements = list(30,30,30,30,20,15,15,15,15,15) high_population_requirement = 15 - property_weights = list("story_potential" = -3, "extended" = 5, "integrity" = 5) + property_weights = list("story_potential" = -2, "extended" = 1, "integrity" = 1) var/list/spawn_locs = list() -/datum/dynamic_ruleset/midround/from_ghosts/revenant/ready(forced = FALSE) +/datum/dynamic_ruleset/midround/from_ghosts/revenant/acceptable(population = 0,threat = 0) var/deadMobs = 0 for(var/mob/M in GLOB.dead_mob_list) deadMobs++ if(deadMobs < REVENANT_SPAWN_THRESHOLD) return FALSE + return ..() + +/datum/dynamic_ruleset/midround/from_ghosts/revenant/ready(forced = FALSE) if(required_candidates > (dead_players.len + list_observers.len)) SSblackbox.record_feedback("tally","dynamic",1,"Times rulesets rejected due to not enough ghosts") return FALSE @@ -624,7 +627,7 @@ weight = 4 cost = 15 requirements = list(101,101,101,90,80,70,60,50,40,30) - property_weights = list("story_potential" = -3, "extended" = -5, "integrity" = 5, "valid" = 5, "trust" = 3) + property_weights = list("story_potential" = -2, "extended" = -2, "integrity" = 2, "valid" = 2, "trust" = 2) high_population_requirement = 30 var/list/spawn_locs = list() @@ -677,7 +680,7 @@ blocking_rules = list(/datum/dynamic_ruleset/roundstart/nuclear,/datum/dynamic_ruleset/midround/from_ghosts/nuclear) high_population_requirement = 15 var/datum/team/abductor_team/team - property_weights = list("story_potential" = 2, "extended" = -2, "valid" = 1, "trust" = -3, "chaos" = 4) + property_weights = list("story_potential" = 2, "extended" = -2, "valid" = 1, "trust" = -2, "chaos" = 2) repeatable_weight_decrease = 4 repeatable = TRUE @@ -718,7 +721,7 @@ cost = 15 requirements = list(101,101,101,90,80,70,60,50,40,30) high_population_requirement = 30 - property_weights = list("story_potential" = 1, "extended" = -3, "valid" = 3) + property_weights = list("story_potential" = 1, "extended" = -2, "valid" = 2) var/list/spawn_locs = list() var/spawn_loc diff --git a/code/game/gamemodes/dynamic/dynamic_rulesets_roundstart.dm b/code/game/gamemodes/dynamic/dynamic_rulesets_roundstart.dm index c31dfa4302..ab188b4635 100644 --- a/code/game/gamemodes/dynamic/dynamic_rulesets_roundstart.dm +++ b/code/game/gamemodes/dynamic/dynamic_rulesets_roundstart.dm @@ -110,7 +110,7 @@ cost = 15 scaling_cost = 15 requirements = list(101,101,101,101,101,101,101,101,101,101) - property_weights = list("trust" = -2, "valid" = 3) + property_weights = list("trust" = -2, "valid" = 2) high_population_requirement = 10 antag_cap = list(1,1,1,1,1,2,2,2,2,3) var/team_mode_probability = 30 @@ -163,7 +163,7 @@ cost = 30 requirements = list(101,101,101,60,50,50,50,50,50,50) high_population_requirement = 50 - property_weights = list("story_potential" = 5, "trust" = 1, "chaos" = 3, "extended" = -2, "valid" = 10) + property_weights = list("story_potential" = 2, "trust" = 1, "chaos" = 2, "extended" = -2, "valid" = 2) var/list/roundstart_wizards = list() /datum/dynamic_ruleset/roundstart/wizard/acceptable(population=0, threat=0) @@ -226,7 +226,7 @@ weight = 3 cost = 30 requirements = list(101,101,101,80,70,60,50,50,50,50) - property_weights = list("story_potential" = -1, "trust" = -1, "chaos" = 1, "conversion" = 1, "extended" = -5, "valid" = 5) + property_weights = list("story_potential" = -1, "trust" = -1, "chaos" = 1, "conversion" = 1, "extended" = -2, "valid" = 2) high_population_requirement = 50 flags = HIGHLANDER_RULESET antag_cap = list(2,2,2,3,3,4,4,4,4,4) @@ -288,7 +288,7 @@ high_population_requirement = 50 flags = HIGHLANDER_RULESET antag_cap = list(1,1,2,3,4,5,5,5,5,5) - property_weights = list("story_potential" = 3, "trust" = 5, "chaos" = 2, "extended" = -5, "valid" = 10) + property_weights = list("story_potential" = 2, "trust" = 2, "chaos" = 2, "extended" = -2, "valid" = 2) var/datum/team/nuclear/nuke_team /datum/dynamic_ruleset/roundstart/nuclear/ready(forced = FALSE) @@ -379,7 +379,7 @@ flags = HIGHLANDER_RULESET // I give up, just there should be enough heads with 35 players... minimum_players = 35 - property_weights = list("trust" = -3, "chaos" = 5, "extended" = -5, "valid" = 2, "conversion" = 1) + property_weights = list("trust" = -2, "chaos" = 2, "extended" = -2, "valid" = 2, "conversion" = 1) var/datum/team/revolution/revolution var/finished = FALSE @@ -497,7 +497,7 @@ weight = 3 cost = 0 requirements = list(101,101,101,101,101,101,101,101,101,101) - property_weights = list("extended" = 1000) + property_weights = list("extended" = 2) high_population_requirement = 101 /datum/dynamic_ruleset/roundstart/extended/pre_execute() @@ -525,7 +525,7 @@ high_population_requirement = 50 flags = HIGHLANDER_RULESET antag_cap = list(2,3,3,4,4,4,4,4,4,4) - property_weights = list("trust" = 3, "chaos" = 5, "extended" = -5, "conversion" = 1, "valid" = 10) + property_weights = list("trust" = 2, "chaos" = 2, "extended" = -2, "conversion" = 1, "valid" = 2) var/ark_time /datum/dynamic_ruleset/roundstart/clockcult/pre_execute() @@ -625,7 +625,7 @@ antag_leader_datum = /datum/antagonist/nukeop/leader/clownop requirements = list(101,101,101,101,101,101,101,101,101,101) high_population_requirement = 101 - property_weights = list("trust" = 5, "chaos" = 5, "extended" = -5, "story_potential" = 10, "valid" = 10) + property_weights = list("trust" = 2, "chaos" = 2, "extended" = -2, "story_potential" = 2, "valid" = 2) /datum/dynamic_ruleset/roundstart/nuclear/clown_ops/pre_execute() @@ -710,7 +710,7 @@ cost = 0 requirements = list(101,101,101,101,101,101,101,101,101,101) high_population_requirement = 101 - property_weights = list("extended" = -10, "chaos" = 5, "conversion" = 1, "valid" = 10) + property_weights = list("extended" = -2, "chaos" = 2, "conversion" = 1, "valid" = 2) var/players_per_carrier = 30 var/monkeys_to_win = 1 var/escaped_monkeys = 0 @@ -772,7 +772,7 @@ cost = 0 requirements = list(101,101,101,101,101,101,101,101,101,101) high_population_requirement = 101 - property_weights = list("extended" = -10, "chaos" = 5, "trust" = 5) + property_weights = list("extended" = -2, "chaos" = 2, "trust" = 2) var/meteordelay = 2000 var/nometeors = 0 var/rampupdelta = 5 @@ -813,7 +813,7 @@ weight = 2 cost = 15 scaling_cost = 10 - property_weights = list("extended" = 2, "chaos" = -1, "trust" = -3, "story_potential" = -2, "conversion" = 1) + property_weights = list("extended" = 2, "chaos" = -1, "trust" = -2, "story_potential" = -2, "conversion" = 1) requirements = list(90,80,70,60,50,50,50,50,50,50) high_population_requirement = 50 antag_cap = list(1,1,1,1,1,2,2,2,2,2) From f6caff82271b4f1f5b36d40dd25b974aa2332aad Mon Sep 17 00:00:00 2001 From: Seris02 Date: Sun, 29 Dec 2019 20:10:15 +0800 Subject: [PATCH 095/192] hnnnnnng code improvements --- code/_onclick/other_mobs.dm | 6 ++---- code/modules/clothing/glasses/_glasses.dm | 2 +- code/modules/clothing/glasses/disablerglasses.dm | 2 +- 3 files changed, 4 insertions(+), 6 deletions(-) diff --git a/code/_onclick/other_mobs.dm b/code/_onclick/other_mobs.dm index 26b9d64c80..6ee7d51091 100644 --- a/code/_onclick/other_mobs.dm +++ b/code/_onclick/other_mobs.dm @@ -91,10 +91,8 @@ var/obj/item/clothing/gloves/G = gloves if(istype(G) && G.Touch(A,0)) // for magic gloves return - if (glasses) - var/obj/item/clothing/glasses/Gl = glasses - if (istype(Gl)) - Gl.ranged_attack(src,A,mouseparams) + if (istype(glasses) && glasses.ranged_attack(src,A,mouseparams)) + return for(var/datum/mutation/human/HM in dna.mutations) HM.on_ranged_attack(src, A, mouseparams) diff --git a/code/modules/clothing/glasses/_glasses.dm b/code/modules/clothing/glasses/_glasses.dm index 7d1ca624e3..969af341ed 100644 --- a/code/modules/clothing/glasses/_glasses.dm +++ b/code/modules/clothing/glasses/_glasses.dm @@ -55,7 +55,7 @@ eyes.applyOrganDamage(5) /obj/item/clothing/glasses/proc/ranged_attack(mob/living/carbon/human/user,atom/A, params) - return + return FALSE /obj/item/clothing/glasses/meson name = "optical meson scanner" diff --git a/code/modules/clothing/glasses/disablerglasses.dm b/code/modules/clothing/glasses/disablerglasses.dm index a349642d6c..a46e4c8339 100644 --- a/code/modules/clothing/glasses/disablerglasses.dm +++ b/code/modules/clothing/glasses/disablerglasses.dm @@ -5,11 +5,11 @@ /obj/item/clothing/glasses/hud/security/sunglasses/disablers/ranged_attack(mob/living/carbon/human/user,atom/A, params) user.changeNext_move(CLICK_CD_RANGE) - var/obj/item/projectile/beam/disabler/LE = new beamtype( loc ) playsound(usr.loc, 'sound/weapons/taser2.ogg', 75, 1) LE.firer = src LE.def_zone = user.get_organ_target() LE.preparePixelProjectile(A, src, params) LE.fire() + return TRUE //shamelessly copied \ No newline at end of file From a39c0249c480c8ac6499a8cd708338442263096a Mon Sep 17 00:00:00 2001 From: Seris02 Date: Sun, 29 Dec 2019 21:55:25 +0800 Subject: [PATCH 096/192] marshmallow --- code/_globalvars/lists/maintenance_loot.dm | 1 + code/game/objects/items/storage/boxes.dm | 9 ++++ .../food_and_drinks/food/snacks_other.dm | 41 +++++++++++++++++- icons/obj/food/food.dmi | Bin 71373 -> 71597 bytes icons/obj/storage.dmi | Bin 71380 -> 71620 bytes 5 files changed, 50 insertions(+), 1 deletion(-) diff --git a/code/_globalvars/lists/maintenance_loot.dm b/code/_globalvars/lists/maintenance_loot.dm index c25ebf5b0a..914e45add5 100644 --- a/code/_globalvars/lists/maintenance_loot.dm +++ b/code/_globalvars/lists/maintenance_loot.dm @@ -115,5 +115,6 @@ GLOBAL_LIST_INIT(maintenance_loot, list( /obj/item/clothing/shoes/kindleKicks = 1, /obj/item/autosurgeon/penis = 1, /obj/item/autosurgeon/testicles = 1, + /obj/item/storage/box/marshmallow = 2, "" = 3 )) diff --git a/code/game/objects/items/storage/boxes.dm b/code/game/objects/items/storage/boxes.dm index e214db3c71..ad553a7e25 100644 --- a/code/game/objects/items/storage/boxes.dm +++ b/code/game/objects/items/storage/boxes.dm @@ -1259,3 +1259,12 @@ var/obj/item/stack/sheet/cardboard/I = new(user.drop_location()) qdel(src) user.put_in_hands(I) + +/obj/item/storage/box/marshmallow + name = "box of marshmallows" + desc = "A box of marshmallows." + icon_state = "marshmallowbox" + +/obj/item/storage/box/marshmallow/PopulateContents() + for (var/i in 1 to 5) + new /obj/item/reagent_containers/food/snacks/marshmallow(src) \ No newline at end of file diff --git a/code/modules/food_and_drinks/food/snacks_other.dm b/code/modules/food_and_drinks/food/snacks_other.dm index 58a0ab4382..a1750a2c23 100644 --- a/code/modules/food_and_drinks/food/snacks_other.dm +++ b/code/modules/food_and_drinks/food/snacks_other.dm @@ -609,4 +609,43 @@ filling_color = "#ECA735" tastes = list("fried corn" = 1) foodtype = JUNKFOOD | FRIED - dunkable = TRUE \ No newline at end of file + dunkable = TRUE + +/obj/item/reagent_containers/food/snacks/marshmallow + name = "marshmallow" + desc = "A marshmallow filled with fluffy marshmallow fluff." + icon_state = "marshmallow" + list_reagents = list("sugar" = 5, "nutriment" = 2) + filling_color = "#fafafa" + w_class = WEIGHT_CLASS_TINY + tastes = list("marshmallow" = 2) + foodtype = SUGAR | JUNKFOOD + +/obj/item/reagent_containers/food/snacks/marshmallow/attackby(obj/item/I, mob/user) + switch (I.get_temperature()) + if (355 to 1500) + if (prob(30)) + burnmallow() + if (1500 to 2000) + if (prob(50)) + burnmallow() + else + burnmallow(TRUE) + if (2000 to 3000) + if (prob(10)) + burnmallow() + else + burnmallow(TRUE) + if (3000 to INFINITY) + burnmallow(TRUE) + ..() + +/obj/item/reagent_containers/food/snacks/marshmallow/proc/burnmallow(reallyburned = FALSE) + if (reallyburned && icon_state != "marshmallowrburned") + icon_state = "marshmallowrburned" + desc = "[initial(desc)] It looks very burned." + tastes = list("charcoal" = 2) + else if (icon_state != "marshmallowrburned") + icon_state = "marshmallowburned" + desc = "[initial(desc)] It looks just right for eating!" + tastes = list("marshmallow" = 1, "cream" = 1) \ No newline at end of file diff --git a/icons/obj/food/food.dmi b/icons/obj/food/food.dmi index 6b29d599ccbd52cd64043a2837d700984aea75c6..a719150f1163013da87f535ed2ec43e97d8fe213 100644 GIT binary patch delta 17234 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 D!Q4q9 delta 16988 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 delta 9129 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 Vy`@$a#RkwnRYgsON;!+L{{c;zw=4hv From 68c9a371d9f241c1fccee5f5fff049857d355eb0 Mon Sep 17 00:00:00 2001 From: Putnam Date: Sun, 29 Dec 2019 10:56:48 -0800 Subject: [PATCH 097/192] Made story *purely* story, no extended-weighting --- code/game/gamemodes/dynamic/dynamic_storytellers.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/game/gamemodes/dynamic/dynamic_storytellers.dm b/code/game/gamemodes/dynamic/dynamic_storytellers.dm index 8fadb741c1..249f1dbadb 100644 --- a/code/game/gamemodes/dynamic/dynamic_storytellers.dm +++ b/code/game/gamemodes/dynamic/dynamic_storytellers.dm @@ -193,7 +193,7 @@ Property weights are: name = "Story" desc = "Chaos: varies. Variation: high. Likely antags: abductors, nukies, wizard, traitor." curve_width = 4 - property_weights = list("story_potential" = 10, "extended" = 1) + property_weights = list("story_potential" = 10) /datum/dynamic_storyteller/suspicion name = "Intrigue" From eb9e27a497d68e3a433059cb15a7d39d2136b4fc Mon Sep 17 00:00:00 2001 From: Putnam Date: Sun, 29 Dec 2019 11:23:37 -0800 Subject: [PATCH 098/192] actually screw this "remove if recent" thing it's too much trouble --- code/controllers/subsystem/vote.dm | 12 +++--------- 1 file changed, 3 insertions(+), 9 deletions(-) diff --git a/code/controllers/subsystem/vote.dm b/code/controllers/subsystem/vote.dm index 06da7c5c24..17c4c6db1b 100644 --- a/code/controllers/subsystem/vote.dm +++ b/code/controllers/subsystem/vote.dm @@ -181,8 +181,7 @@ SUBSYSTEM_DEF(vote) for(var/i=1,i<=voted.len,i++) var/list/myvote = voted[voted[i]] for(var/j=1,j<=myvote.len,j++) - if(choices.len <= myvote[j]) - SSblackbox.record_feedback("nested tally","voting",1,list(vote_title_text,"[j]\th",choices[myvote[j]])) + SSblackbox.record_feedback("nested tally","voting",1,list(vote_title_text,"[j]\th",choices[myvote[j]])) if(obfuscated) //CIT CHANGE - adds obfuscated votes. this messages admins with the vote's true results var/admintext = "Obfuscated results" if(vote_system == RANKED_CHOICE_VOTING) @@ -332,13 +331,8 @@ SUBSYSTEM_DEF(vote) if("dynamic") for(var/T in config.storyteller_cache) var/datum/dynamic_storyteller/S = T - var/recent_rounds = 0 - for(var/i in 1 to 3) - if(SSpersistence.saved_storytellers[i] == initial(S.name)) - recent_rounds++ - if(recent_rounds Date: Sun, 29 Dec 2019 16:03:38 -0500 Subject: [PATCH 099/192] Fixes Reduced Diagnostics and adds disks Fixes reduced diagnostics not working properly and adds program disks for each of the new nanites. --- code/datums/components/nanites.dm | 2 +- .../research/nanites/nanite_programs/utility.dm | 5 +++-- code/modules/research/nanites/program_disks.dm | 14 +++++++++++++- 3 files changed, 17 insertions(+), 4 deletions(-) diff --git a/code/datums/components/nanites.dm b/code/datums/components/nanites.dm index dc87bb78e5..89c4deb2e9 100644 --- a/code/datums/components/nanites.dm +++ b/code/datums/components/nanites.dm @@ -253,7 +253,7 @@ to_chat(user, "Cloud ID: [cloud_id ? cloud_id : "Disabled"]") to_chat(user, "================") to_chat(user, "Program List:") - if(diagnostics) + if(!diagnostics) to_chat(user, "Diagnostics Disabled") else for(var/X in programs) diff --git a/code/modules/research/nanites/nanite_programs/utility.dm b/code/modules/research/nanites/nanite_programs/utility.dm index 242fabfbb9..3db482d989 100644 --- a/code/modules/research/nanites/nanite_programs/utility.dm +++ b/code/modules/research/nanites/nanite_programs/utility.dm @@ -130,7 +130,8 @@ /datum/nanite_program/stealth name = "Stealth" - desc = "The nanites mask their activity from superficial scans, becoming undetectable by HUDs and non-specialized scanners." rogue_types = list(/datum/nanite_program/toxic) + desc = "The nanites mask their activity from superficial scans, becoming undetectable by HUDs and non-specialized scanners." + rogue_types = list(/datum/nanite_program/toxic) use_rate = 0.2 /datum/nanite_program/stealth/enable_passive_effect() @@ -300,7 +301,7 @@ /datum/nanite_program/dermal_button/set_extra_setting(user, setting) if(setting == "Sent Code") - var/new_code = input(user, "Set the sent code (1-9999):", name, null) as null|num + var/new_code = input(user, "Set the sent code (1-9999):", name, null) as null|num if(isnull(new_code)) return sent_code = CLAMP(round(new_code, 1), 1, 9999) diff --git a/code/modules/research/nanites/program_disks.dm b/code/modules/research/nanites/program_disks.dm index 86b7803fc9..f780f40932 100644 --- a/code/modules/research/nanites/program_disks.dm +++ b/code/modules/research/nanites/program_disks.dm @@ -130,4 +130,16 @@ program_type = /datum/nanite_program/pacifying /obj/item/disk/nanite_program/stun - program_type = /datum/nanite_program/triggered/stun \ No newline at end of file + program_type = /datum/nanite_program/triggered/stun + +/obj/item/disk/nanite_program/dermal_button + program_type = /datum/nanite_program/dermal_button + +/obj/item/disk/nanite_program/research + program_type = /datum/nanite_program/research + +/obj/item/disk/nanite_program/researchplus + program_type = /datum/nanite_program/researchplus + +/obj/item/disk/nanite_program/reduced_diagnostics + program_type = /datum/nanite_program/reduced_diagnostics \ No newline at end of file From 55cb844bc2ab355d697c67264aee1b6103544824 Mon Sep 17 00:00:00 2001 From: Ghommie <42542238+Ghommie@users.noreply.github.com> Date: Mon, 30 Dec 2019 01:00:36 +0100 Subject: [PATCH 100/192] chestbursters deleting brains fix. --- code/modules/mob/living/carbon/alien/special/alien_embryo.dm | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/code/modules/mob/living/carbon/alien/special/alien_embryo.dm b/code/modules/mob/living/carbon/alien/special/alien_embryo.dm index 0bfd23cbff..53c795b328 100644 --- a/code/modules/mob/living/carbon/alien/special/alien_embryo.dm +++ b/code/modules/mob/living/carbon/alien/special/alien_embryo.dm @@ -106,7 +106,8 @@ if(kill_on_sucess) //ITS TOO LATE new_xeno.visible_message("[new_xeno] bursts out of [owner]!", "You exit [owner], your previous host.", "You hear organic matter ripping and tearing!") owner.apply_damage(rand(100,300),BRUTE,zone,FALSE) //Random high damage to torso so health sensors don't metagame. - owner.spill_organs(TRUE,FALSE,TRUE) //Lets still make the death gruesome and impossible to just simply defib someone. + var/obj/item/bodypart/B = owner.get_bodypart(zone) + B.drop_organs(owner) //Lets still make the death gruesome and impossible to just simply defib someone. owner.death(FALSE) //Just in case some freak occurance occurs where you somehow survive all your organs being removed from you and the 100-300 brute damage. else //When it is removed via surgery at a late stage, rather than forced. new_xeno.visible_message("[new_xeno] wriggles out of [owner]!", "You exit [owner], your previous host.") From 8a32b89f17cb019a2e6b48d6cc7a28301e71bfbf Mon Sep 17 00:00:00 2001 From: Ghommie <42542238+Ghommie@users.noreply.github.com> Date: Mon, 30 Dec 2019 01:05:21 +0100 Subject: [PATCH 101/192] Wait a minute... --- code/modules/mob/living/carbon/alien/special/alien_embryo.dm | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/code/modules/mob/living/carbon/alien/special/alien_embryo.dm b/code/modules/mob/living/carbon/alien/special/alien_embryo.dm index 53c795b328..f02f32cd18 100644 --- a/code/modules/mob/living/carbon/alien/special/alien_embryo.dm +++ b/code/modules/mob/living/carbon/alien/special/alien_embryo.dm @@ -103,6 +103,7 @@ new_xeno.notransform = 0 new_xeno.invisibility = 0 + var/old_owner = owner if(kill_on_sucess) //ITS TOO LATE new_xeno.visible_message("[new_xeno] bursts out of [owner]!", "You exit [owner], your previous host.", "You hear organic matter ripping and tearing!") owner.apply_damage(rand(100,300),BRUTE,zone,FALSE) //Random high damage to torso so health sensors don't metagame. @@ -112,7 +113,7 @@ else //When it is removed via surgery at a late stage, rather than forced. new_xeno.visible_message("[new_xeno] wriggles out of [owner]!", "You exit [owner], your previous host.") owner.adjustBruteLoss(40) - owner.cut_overlay(overlay) + old_owner.cut_overlay(overlay) qdel(src) From 87cca7a649067fd9c34c545c90b16d6239058649 Mon Sep 17 00:00:00 2001 From: Ghommie <42542238+Ghommie@users.noreply.github.com> Date: Mon, 30 Dec 2019 01:05:54 +0100 Subject: [PATCH 102/192] ...which var are you? --- code/modules/mob/living/carbon/alien/special/alien_embryo.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/modules/mob/living/carbon/alien/special/alien_embryo.dm b/code/modules/mob/living/carbon/alien/special/alien_embryo.dm index f02f32cd18..c08fe4f582 100644 --- a/code/modules/mob/living/carbon/alien/special/alien_embryo.dm +++ b/code/modules/mob/living/carbon/alien/special/alien_embryo.dm @@ -103,7 +103,7 @@ new_xeno.notransform = 0 new_xeno.invisibility = 0 - var/old_owner = owner + var/mob/living/carbon/old_owner = owner if(kill_on_sucess) //ITS TOO LATE new_xeno.visible_message("[new_xeno] bursts out of [owner]!", "You exit [owner], your previous host.", "You hear organic matter ripping and tearing!") owner.apply_damage(rand(100,300),BRUTE,zone,FALSE) //Random high damage to torso so health sensors don't metagame. From 4a5715e5ac5e9de21c326018eadbd0ad8e0776e8 Mon Sep 17 00:00:00 2001 From: Trilbyspaceclone <30435998+Trilbyspaceclone@users.noreply.github.com> Date: Sun, 29 Dec 2019 19:13:32 -0500 Subject: [PATCH 103/192] Update belt.dm --- code/game/objects/items/storage/belt.dm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/code/game/objects/items/storage/belt.dm b/code/game/objects/items/storage/belt.dm index 3a4579d3f8..7a16cdb018 100755 --- a/code/game/objects/items/storage/belt.dm +++ b/code/game/objects/items/storage/belt.dm @@ -582,7 +582,7 @@ /obj/item/storage/belt/bandolier name = "bandolier" - desc = "A bandolier for holding shotgun ammunition." + desc = "A bandolier for holding ammunition." icon_state = "bandolier" item_state = "bandolier" @@ -592,7 +592,7 @@ STR.max_items = 18 STR.display_numerical_stacking = TRUE STR.can_hold = typecacheof(list( - /obj/item/ammo_casing/shotgun + /obj/item/ammo_casing )) /obj/item/storage/belt/bandolier/durathread From fa35c5128c15a25f5a7345753be4188473eb49d8 Mon Sep 17 00:00:00 2001 From: Putnam Date: Sun, 29 Dec 2019 18:09:23 -0800 Subject: [PATCH 104/192] Rebalancing bloodsuckers a tad --- code/game/gamemodes/dynamic/dynamic_rulesets_latejoin.dm | 4 ++-- code/game/gamemodes/dynamic/dynamic_rulesets_roundstart.dm | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/code/game/gamemodes/dynamic/dynamic_rulesets_latejoin.dm b/code/game/gamemodes/dynamic/dynamic_rulesets_latejoin.dm index 56af89900c..20964ec1f8 100644 --- a/code/game/gamemodes/dynamic/dynamic_rulesets_latejoin.dm +++ b/code/game/gamemodes/dynamic/dynamic_rulesets_latejoin.dm @@ -211,8 +211,8 @@ required_candidates = 1 weight = 3 cost = 10 - property_weights = list("extended" = 2, "chaos" = -1, "trust" = -2, "story_potential" = -2, "conversion" = 1, "valid" = 1) - requirements = list(90,80,70,60,55,50,45,40,35,30) + property_weights = list("extended" = 1, "trust" = -2, "valid" = 1) + requirements = list(70,65,60,55,50,45,40,35,30,30) high_population_requirement = 30 repeatable = TRUE diff --git a/code/game/gamemodes/dynamic/dynamic_rulesets_roundstart.dm b/code/game/gamemodes/dynamic/dynamic_rulesets_roundstart.dm index ab188b4635..52f609db7b 100644 --- a/code/game/gamemodes/dynamic/dynamic_rulesets_roundstart.dm +++ b/code/game/gamemodes/dynamic/dynamic_rulesets_roundstart.dm @@ -813,8 +813,8 @@ weight = 2 cost = 15 scaling_cost = 10 - property_weights = list("extended" = 2, "chaos" = -1, "trust" = -2, "story_potential" = -2, "conversion" = 1) - requirements = list(90,80,70,60,50,50,50,50,50,50) + property_weights = list("extended" = 1, "trust" = -2, "valid" = 1) + requirements = list(70,65,60,55,50,50,50,50,50,50) high_population_requirement = 50 antag_cap = list(1,1,1,1,1,2,2,2,2,2) From fb9b6dcc102216a0ac9c97dff5b86019977c1557 Mon Sep 17 00:00:00 2001 From: Putnam Date: Sun, 29 Dec 2019 18:25:11 -0800 Subject: [PATCH 105/192] SCORING WRONG THE WHOLE TIME --- code/controllers/subsystem/vote.dm | 19 ++++++++++--------- 1 file changed, 10 insertions(+), 9 deletions(-) diff --git a/code/controllers/subsystem/vote.dm b/code/controllers/subsystem/vote.dm index 17c4c6db1b..0c8e860019 100644 --- a/code/controllers/subsystem/vote.dm +++ b/code/controllers/subsystem/vote.dm @@ -110,15 +110,16 @@ SUBSYSTEM_DEF(vote) //if equal, do nothing var/list/p[][] = new/list(choices.len,choices.len) //matrix of shortest path from a to b for(var/i in 1 to choices.len) - for(var/j in i+1 to choices.len) - var/pref_number = d[i][j] - var/opposite_pref = d[j][i] - if(pref_number>opposite_pref) - p[i][j] = d[i][j] - p[j][i] = 0 - else - p[i][j] = 0 - p[j][i] = d[i][j] + for(var/j in 1 to choices.len) + if(i != j) + var/pref_number = d[i][j] + var/opposite_pref = d[j][i] + if(pref_number>opposite_pref) + p[i][j] = d[i][j] + p[j][i] = 0 + else + p[i][j] = 0 + p[j][i] = d[i][j] for(var/i in 1 to choices.len) for(var/j in 1 to choices.len) if(i != j) From 93207cae0ba7880dc316b21f3733e38ce86b3a63 Mon Sep 17 00:00:00 2001 From: Putnam Date: Sun, 29 Dec 2019 18:53:27 -0800 Subject: [PATCH 106/192] made "random" more random --- code/game/gamemodes/dynamic/dynamic_storytellers.dm | 1 + 1 file changed, 1 insertion(+) diff --git a/code/game/gamemodes/dynamic/dynamic_storytellers.dm b/code/game/gamemodes/dynamic/dynamic_storytellers.dm index 249f1dbadb..0e1c10fc01 100644 --- a/code/game/gamemodes/dynamic/dynamic_storytellers.dm +++ b/code/game/gamemodes/dynamic/dynamic_storytellers.dm @@ -188,6 +188,7 @@ Property weights are: /datum/dynamic_storyteller/classic name = "Random" desc = "Chaos: medium. Variation: highest. No special weights attached." + curve_width = 4 /datum/dynamic_storyteller/memes name = "Story" From ddf233e0d5387cbaf7365a03eaef2262af9c3469 Mon Sep 17 00:00:00 2001 From: Putnam Date: Sun, 29 Dec 2019 18:53:49 -0800 Subject: [PATCH 107/192] Made no antags show up after auto call --- code/game/gamemodes/dynamic/dynamic.dm | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/code/game/gamemodes/dynamic/dynamic.dm b/code/game/gamemodes/dynamic/dynamic.dm index 77f0761589..58f76d6381 100644 --- a/code/game/gamemodes/dynamic/dynamic.dm +++ b/code/game/gamemodes/dynamic/dynamic.dm @@ -674,6 +674,8 @@ GLOBAL_VAR_INIT(dynamic_storyteller_type, null) // Time to inject some threat into the round if(EMERGENCY_ESCAPED_OR_ENDGAMED) // Unless the shuttle is gone return + if((world.realtime - SSshuttle.realtimeofstart) > SSshuttle.auto_call) // no rules after shuttle is auto-called + return message_admins("DYNAMIC: Checking for midround injection.") log_game("DYNAMIC: Checking for midround injection.") @@ -748,7 +750,8 @@ GLOBAL_VAR_INIT(dynamic_storyteller_type, null) return if(EMERGENCY_ESCAPED_OR_ENDGAMED) // No more rules after the shuttle has left return - + if((world.realtime - SSshuttle.realtimeofstart) > SSshuttle.auto_call) // no rules after shuttle is auto-called + return update_playercounts() if (forced_latejoin_rule) From f663c4db96570ac0689a6ab7dc406a7378dd3e4a Mon Sep 17 00:00:00 2001 From: Seris02 Date: Mon, 30 Dec 2019 11:24:12 +0800 Subject: [PATCH 108/192] tiny fixes --- code/game/objects/items/cigs_lighters.dm | 40 ++++++++++--------- code/modules/hydroponics/grown/misc.dm | 50 +++++++++++++----------- 2 files changed, 48 insertions(+), 42 deletions(-) diff --git a/code/game/objects/items/cigs_lighters.dm b/code/game/objects/items/cigs_lighters.dm index 71d6050ca1..884f5c4400 100644 --- a/code/game/objects/items/cigs_lighters.dm +++ b/code/game/objects/items/cigs_lighters.dm @@ -1021,30 +1021,32 @@ CIGARETTE PACKETS ARE IN FANCY.DM //we take a hit here, after an uninterrupted delay if(!do_after(user, 25, target = user)) return - if (reagents && reagents.total_volume) - var/fraction = 12 * hit_strength + if (!(reagents && reagents.total_volume)) + return - var/datum/effect_system/smoke_spread/chem/smoke_machine/s = new - s.set_up(reagents, hit_strength, 18, user.loc) - s.start() + var/fraction = 12 * hit_strength - reagents.reaction(user, INGEST, fraction) - if(!reagents.trans_to(user, fraction)) - reagents.remove_any(fraction) + var/datum/effect_system/smoke_spread/chem/smoke_machine/s = new + s.set_up(reagents, hit_strength, 18, user.loc) + s.start() - if (hit_strength == 2 && prob(15)) - user.emote("cough") - user.adjustOxyLoss(15) + reagents.reaction(user, INGEST, fraction) + if(!reagents.trans_to(user, fraction)) + reagents.remove_any(fraction) - user.visible_message("[user] takes a [hittext] from the [src]!", \ - "You take a [hittext] from [src].") + if (hit_strength == 2 && prob(15)) + user.emote("cough") + user.adjustOxyLoss(15) - firecharges = firecharges - 1 - if (!firecharges) - bongturnoff() - if (!reagents.total_volume) - firecharges = 0 - bongturnoff() + user.visible_message("[user] takes a [hittext] from the [src]!", \ + "You take a [hittext] from [src].") + + firecharges = firecharges - 1 + if (!firecharges) + bongturnoff() + if (!reagents.total_volume) + firecharges = 0 + bongturnoff() diff --git a/code/modules/hydroponics/grown/misc.dm b/code/modules/hydroponics/grown/misc.dm index 7ffb970e67..2ef59d29fe 100644 --- a/code/modules/hydroponics/grown/misc.dm +++ b/code/modules/hydroponics/grown/misc.dm @@ -298,20 +298,22 @@ transform *= TRANSFORM_USING_VARIABLE(40, 100) + 0.5 //temporary fix for size? /obj/item/reagent_containers/food/snacks/grown/coconut/attack_self(mob/user) - if (opened) - if(!possible_transfer_amounts.len) - return - var/i=0 - for(var/A in possible_transfer_amounts) - i++ - if(A != amount_per_transfer_from_this) - continue - if(i[src]'s transfer amount is now [amount_per_transfer_from_this] units.") - return + if (!opened) + return + + if(!possible_transfer_amounts.len) + return + var/i=0 + for(var/A in possible_transfer_amounts) + i++ + if(A != amount_per_transfer_from_this) + continue + if(i[src]'s transfer amount is now [amount_per_transfer_from_this] units.") + return /obj/item/reagent_containers/food/snacks/grown/coconut/attackby(obj/item/W, mob/user, params) //DEFUSING NADE LOGIC @@ -362,6 +364,7 @@ W.use(1) icon_state += "_straw" desc = "You can already feel like you're on a tropical vacation." + return //OPENING THE NUT LOGIC if (!carved && !chopped) if(W.tool_behaviour == TOOL_SCREWDRIVER) @@ -507,15 +510,16 @@ transform *= TRANSFORM_USING_VARIABLE(40, 100) + 0.5 //temporary fix for size? /obj/item/reagent_containers/food/snacks/grown/coconut/proc/prime() - if (!defused) - var/turf/T = get_turf(src) - reagents.chem_temp = 1000 - //Disable seperated contents when the grenade primes - if (seed.get_gene(/datum/plant_gene/trait/noreact)) - DISABLE_BITFIELD(reagents.reagents_holder_flags, NO_REACT) - reagents.handle_reactions() - log_game("Coconut bomb detonation at [AREACOORD(T)], location [loc]") - qdel(src) + if (defused) + return + var/turf/T = get_turf(src) + reagents.chem_temp = 1000 + //Disable seperated contents when the grenade primes + if (seed.get_gene(/datum/plant_gene/trait/noreact)) + DISABLE_BITFIELD(reagents.reagents_holder_flags, NO_REACT) + reagents.handle_reactions() + log_game("Coconut bomb detonation at [AREACOORD(T)], location [loc]") + qdel(src) /obj/item/reagent_containers/food/snacks/grown/coconut/ex_act(severity) qdel(src) From 40730b48d5d9512c06ef313ddc877de535e17505 Mon Sep 17 00:00:00 2001 From: Seris02 Date: Mon, 30 Dec 2019 11:49:16 +0800 Subject: [PATCH 109/192] few fixes --- code/game/objects/items/storage/boxes.dm | 2 +- .../food_and_drinks/food/snacks_other.dm | 30 +++++++++++++++--- icons/obj/storage.dmi | Bin 71620 -> 71424 bytes 3 files changed, 26 insertions(+), 6 deletions(-) diff --git a/code/game/objects/items/storage/boxes.dm b/code/game/objects/items/storage/boxes.dm index ad553a7e25..4b2b3e2203 100644 --- a/code/game/objects/items/storage/boxes.dm +++ b/code/game/objects/items/storage/boxes.dm @@ -1263,7 +1263,7 @@ /obj/item/storage/box/marshmallow name = "box of marshmallows" desc = "A box of marshmallows." - icon_state = "marshmallowbox" + illustration = "marshmallow" /obj/item/storage/box/marshmallow/PopulateContents() for (var/i in 1 to 5) diff --git a/code/modules/food_and_drinks/food/snacks_other.dm b/code/modules/food_and_drinks/food/snacks_other.dm index a1750a2c23..3da0fc1eac 100644 --- a/code/modules/food_and_drinks/food/snacks_other.dm +++ b/code/modules/food_and_drinks/food/snacks_other.dm @@ -620,6 +620,7 @@ w_class = WEIGHT_CLASS_TINY tastes = list("marshmallow" = 2) foodtype = SUGAR | JUNKFOOD + var/burned = 0 /obj/item/reagent_containers/food/snacks/marshmallow/attackby(obj/item/I, mob/user) switch (I.get_temperature()) @@ -638,14 +639,33 @@ burnmallow(TRUE) if (3000 to INFINITY) burnmallow(TRUE) - ..() + return ..() /obj/item/reagent_containers/food/snacks/marshmallow/proc/burnmallow(reallyburned = FALSE) - if (reallyburned && icon_state != "marshmallowrburned") + if (reallyburned && burned == 1) icon_state = "marshmallowrburned" desc = "[initial(desc)] It looks very burned." - tastes = list("charcoal" = 2) - else if (icon_state != "marshmallowrburned") + else if (burned == 0) icon_state = "marshmallowburned" desc = "[initial(desc)] It looks just right for eating!" - tastes = list("marshmallow" = 1, "cream" = 1) \ No newline at end of file + +/obj/item/reagent_containers/food/snacks/marshmallow/fire_act(temp,volume) + switch (temp) + if (355 to 1500) + if (prob(30)) + burnmallow() + if (1500 to 2000) + if (prob(50)) + burnmallow() + else + burnmallow(TRUE) + if (2000 to 3000) + if (prob(10)) + burnmallow() + else + burnmallow(TRUE) + if (3000 to 7000) + burnmallow(TRUE) + if (7000 to INFINITY) + burn() + ..() \ No newline at end of file diff --git a/icons/obj/storage.dmi b/icons/obj/storage.dmi index 3785f660e3a43eb07797b046bf7c3a578757df68..8fee8fcf9f79b11d952463367c06a02eb87f87c4 100644 GIT binary patch delta 9230 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 delta 9413 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 m$D9JdJpZ@y_ Date: Sun, 29 Dec 2019 21:01:55 -0800 Subject: [PATCH 110/192] Code improvements --- code/__DEFINES/citadel_defines.dm | 9 --------- code/__DEFINES/dynamic.dm | 14 ++++++++++++++ code/__DEFINES/vote.dm | 5 +++++ code/controllers/subsystem/vote.dm | 2 +- code/game/gamemodes/dynamic/dynamic.dm | 11 ----------- tgstation.dme | 2 ++ 6 files changed, 22 insertions(+), 21 deletions(-) create mode 100644 code/__DEFINES/dynamic.dm create mode 100644 code/__DEFINES/vote.dm diff --git a/code/__DEFINES/citadel_defines.dm b/code/__DEFINES/citadel_defines.dm index 75f4de5abc..47b5c2f602 100644 --- a/code/__DEFINES/citadel_defines.dm +++ b/code/__DEFINES/citadel_defines.dm @@ -119,12 +119,3 @@ //belly sound pref things #define NORMIE_HEARCHECK 4 - -// Voting stuff (move this somewhere else eventually probs) -#define PLURALITY_VOTING 0 -#define APPROVAL_VOTING 1 -#define RANKED_CHOICE_VOTING 2 - -// Dynamic storyteller stuff (see above, move later) -#define NO_ASSASSIN (1<<0) -#define WAROPS_ALWAYS_ALLOWED (1<<1) diff --git a/code/__DEFINES/dynamic.dm b/code/__DEFINES/dynamic.dm new file mode 100644 index 0000000000..45c1ba9cb2 --- /dev/null +++ b/code/__DEFINES/dynamic.dm @@ -0,0 +1,14 @@ +#define CURRENT_LIVING_PLAYERS 1 +#define CURRENT_LIVING_ANTAGS 2 +#define CURRENT_DEAD_PLAYERS 3 +#define CURRENT_OBSERVERS 4 + +#define NO_ASSASSIN (1<<0) +#define WAROPS_ALWAYS_ALLOWED (1<<1) + +#define ONLY_RULESET (1<<0) +#define HIGHLANDER_RULESET (1<<1) +#define TRAITOR_RULESET (1<<2) +#define MINOR_RULESET (1<<3) + +#define RULESET_STOP_PROCESSING 1 diff --git a/code/__DEFINES/vote.dm b/code/__DEFINES/vote.dm new file mode 100644 index 0000000000..aeec9bf8fd --- /dev/null +++ b/code/__DEFINES/vote.dm @@ -0,0 +1,5 @@ +// Voting stuff (move this somewhere else eventually probs) +#define PLURALITY_VOTING 0 +#define APPROVAL_VOTING 1 +#define RANKED_CHOICE_VOTING 2 + diff --git a/code/controllers/subsystem/vote.dm b/code/controllers/subsystem/vote.dm index 0c8e860019..dffe4c3dac 100644 --- a/code/controllers/subsystem/vote.dm +++ b/code/controllers/subsystem/vote.dm @@ -251,7 +251,7 @@ SUBSYSTEM_DEF(vote) if(mode) if(CONFIG_GET(flag/no_dead_vote) && usr.stat == DEAD && !usr.client.holder) return 0 - if(vote && vote >= 1 && vote <= choices.len) + if(vote && ISINRANGE(vote, 1, choices.len)) switch(vote_system) if(PLURALITY_VOTING) if(usr.ckey in voted) diff --git a/code/game/gamemodes/dynamic/dynamic.dm b/code/game/gamemodes/dynamic/dynamic.dm index 58f76d6381..9e5ee6ade8 100644 --- a/code/game/gamemodes/dynamic/dynamic.dm +++ b/code/game/gamemodes/dynamic/dynamic.dm @@ -1,14 +1,3 @@ -#define CURRENT_LIVING_PLAYERS 1 -#define CURRENT_LIVING_ANTAGS 2 -#define CURRENT_DEAD_PLAYERS 3 -#define CURRENT_OBSERVERS 4 - -#define ONLY_RULESET 1 -#define HIGHLANDER_RULESET 2 -#define TRAITOR_RULESET 4 -#define MINOR_RULESET 8 - -#define RULESET_STOP_PROCESSING 1 // -- Injection delays GLOBAL_VAR_INIT(dynamic_latejoin_delay_min, (10 MINUTES)) diff --git a/tgstation.dme b/tgstation.dme index 9da07f6eca..0a9d018b4c 100755 --- a/tgstation.dme +++ b/tgstation.dme @@ -43,6 +43,7 @@ #include "code\__DEFINES\diseases.dm" #include "code\__DEFINES\DNA.dm" #include "code\__DEFINES\donator_groupings.dm" +#include "code\__DEFINES\dynamic.dm" #include "code\__DEFINES\events.dm" #include "code\__DEFINES\exports.dm" #include "code\__DEFINES\fantasy_affixes.dm" @@ -108,6 +109,7 @@ #include "code\__DEFINES\typeids.dm" #include "code\__DEFINES\vehicles.dm" #include "code\__DEFINES\voreconstants.dm" +#include "code\__DEFINES\vote.dm" #include "code\__DEFINES\vv.dm" #include "code\__DEFINES\wall_dents.dm" #include "code\__DEFINES\wires.dm" From 283ccceb24a6a396e6f155fedcd5ee91d831226a Mon Sep 17 00:00:00 2001 From: KathrinBailey Date: Mon, 30 Dec 2019 09:25:03 +0000 Subject: [PATCH 111/192] CE Locker Exodus: The Removaling Removes junk from the CE locker. Adds empty engineering lockers. I don't know how to do this as a child and not have populate contents fill the child. --- .../closets/secure/engineering.dm | 18 +++++++++++------- 1 file changed, 11 insertions(+), 7 deletions(-) diff --git a/code/game/objects/structures/crates_lockers/closets/secure/engineering.dm b/code/game/objects/structures/crates_lockers/closets/secure/engineering.dm index 8da50d488f..b3adae577b 100644 --- a/code/game/objects/structures/crates_lockers/closets/secure/engineering.dm +++ b/code/game/objects/structures/crates_lockers/closets/secure/engineering.dm @@ -12,18 +12,12 @@ new /obj/item/clothing/head/hardhat/white(src) new /obj/item/clothing/head/hardhat/weldhat/white(src) new /obj/item/clothing/gloves/color/yellow(src) - new /obj/item/clothing/shoes/sneakers/brown(src) new /obj/item/tank/jetpack/suit(src) new /obj/item/cartridge/ce(src) new /obj/item/radio/headset/heads/ce(src) - new /obj/item/storage/toolbox/mechanical(src) - new /obj/item/clothing/suit/hazardvest(src) new /obj/item/megaphone/command(src) new /obj/item/areaeditor/blueprints(src) - new /obj/item/airlock_painter(src) new /obj/item/holosign_creator/engineering(src) - new /obj/item/clothing/mask/gas(src) - new /obj/item/multitool(src) new /obj/item/assembly/flash/handheld(src) new /obj/item/clothing/glasses/meson/engine(src) new /obj/item/door_remote/chief_engineer(src) @@ -56,6 +50,12 @@ for(var/i in 1 to 3) new /obj/item/multitool(src) +/obj/structure/closet/secure_closet/engineering_electrical_empty + name = "electrical supplies locker" + req_access = list(ACCESS_ENGINE_EQUIP) + icon_state = "eng" + icon_door = "eng_elec" + /obj/structure/closet/secure_closet/engineering_welding name = "welding supplies locker" req_access = list(ACCESS_ENGINE_EQUIP) @@ -67,7 +67,7 @@ for(var/i in 1 to 3) new /obj/item/clothing/head/welding(src) for(var/i in 1 to 3) - new /obj/item/weldingtool(src) + new /obj/item/weldingtool/largetank(src) /obj/structure/closet/secure_closet/engineering_personal name = "engineer's locker" @@ -84,6 +84,10 @@ new /obj/item/clothing/glasses/meson/engine(src) new /obj/item/storage/box/emptysandbags(src) +/obj/structure/closet/secure_closet/engineering_personal_empty + name = "engineer's locker" + req_access = list(ACCESS_ENGINE_EQUIP) + icon_state = "eng_secure" /obj/structure/closet/secure_closet/atmospherics name = "\proper atmospheric technician's locker" From bc2e4f3b5ac309d5f37fe9e73de901df44372147 Mon Sep 17 00:00:00 2001 From: Seris02 <49109742+Seris02@users.noreply.github.com> Date: Mon, 30 Dec 2019 19:08:37 +0800 Subject: [PATCH 112/192] desc --- code/modules/food_and_drinks/food/snacks_other.dm | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/code/modules/food_and_drinks/food/snacks_other.dm b/code/modules/food_and_drinks/food/snacks_other.dm index 3da0fc1eac..f3c102b4fa 100644 --- a/code/modules/food_and_drinks/food/snacks_other.dm +++ b/code/modules/food_and_drinks/food/snacks_other.dm @@ -644,10 +644,15 @@ /obj/item/reagent_containers/food/snacks/marshmallow/proc/burnmallow(reallyburned = FALSE) if (reallyburned && burned == 1) icon_state = "marshmallowrburned" - desc = "[initial(desc)] It looks very burned." else if (burned == 0) icon_state = "marshmallowburned" - desc = "[initial(desc)] It looks just right for eating!" + +/obj/item/reagent_containers/food/snacks/marshmallow/proc/examine(mob/user) + . = ..() + if (burned == 2) + . += "It looks very burned." + if (burned == 1) + . += "It looks just right for eating!" /obj/item/reagent_containers/food/snacks/marshmallow/fire_act(temp,volume) switch (temp) @@ -668,4 +673,4 @@ burnmallow(TRUE) if (7000 to INFINITY) burn() - ..() \ No newline at end of file + ..() From 8bb7a4a40d01d284c0b133869c5b03f2479a234b Mon Sep 17 00:00:00 2001 From: Seris02 <49109742+Seris02@users.noreply.github.com> Date: Mon, 30 Dec 2019 19:24:07 +0800 Subject: [PATCH 113/192] hnnnng --- code/modules/food_and_drinks/food/snacks_other.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/modules/food_and_drinks/food/snacks_other.dm b/code/modules/food_and_drinks/food/snacks_other.dm index f3c102b4fa..de22537063 100644 --- a/code/modules/food_and_drinks/food/snacks_other.dm +++ b/code/modules/food_and_drinks/food/snacks_other.dm @@ -647,7 +647,7 @@ else if (burned == 0) icon_state = "marshmallowburned" -/obj/item/reagent_containers/food/snacks/marshmallow/proc/examine(mob/user) +/obj/item/reagent_containers/food/snacks/marshmallow/examine(mob/user) . = ..() if (burned == 2) . += "It looks very burned." From 84574a150bcfda9b437a3e46a3498214fd7bae3d Mon Sep 17 00:00:00 2001 From: Seris02 <49109742+Seris02@users.noreply.github.com> Date: Mon, 30 Dec 2019 21:00:25 +0800 Subject: [PATCH 114/192] weh --- code/modules/hydroponics/grown/misc.dm | 35 ++++++++++---------------- 1 file changed, 13 insertions(+), 22 deletions(-) diff --git a/code/modules/hydroponics/grown/misc.dm b/code/modules/hydroponics/grown/misc.dm index 2ef59d29fe..cb70c7c48f 100644 --- a/code/modules/hydroponics/grown/misc.dm +++ b/code/modules/hydroponics/grown/misc.dm @@ -367,27 +367,18 @@ return //OPENING THE NUT LOGIC if (!carved && !chopped) - if(W.tool_behaviour == TOOL_SCREWDRIVER) - user.show_message("You make a hole in the coconut!", 1) - carved = TRUE - opened = TRUE - reagent_flags = OPENCONTAINER - ENABLE_BITFIELD(reagents.reagents_holder_flags, OPENCONTAINER) - icon_state = "coconut_carved" - desc = "A coconut. This one's got a hole in it." - playsound(user, W.hitsound, 50, 1, -1) - return - else if(W.sharpness) - user.show_message("You slice the coconut open!", 1) - chopped = TRUE - opened = TRUE - reagent_flags = OPENCONTAINER - ENABLE_BITFIELD(reagents.reagents_holder_flags, OPENCONTAINER) - spillable = TRUE - icon_state = "coconut_chopped" - desc = "A coconut. This one's sliced open, with all its delicious contents for your eyes to savour." - playsound(user, W.hitsound, 50, 1, -1) - return + var/screwdrivered = W.tool_behaviour == TOOL_SCREWDRIVER + if(screwdrivered || W.sharpness) + user.show_message("You [screwdrivered ? "make a hole in the coconut" : "slice the coconut open"]!", 1) + carved = TRUE + opened = TRUE + spillable = !screwdrivered + reagent_flags = OPENCONTAINER + ENABLE_BITFIELD(reagents.reagents_holder_flags, OPENCONTAINER) + icon_state = screwdrivered ? "coconut_carved" : "coconut_chopped" + desc = "A coconut. [screwdrivered ? "This one's got a hole in it" : "This one's sliced open, with all its delicious contents for your eyes to savour"]." + playsound(user, W.hitsound, 50, 1, -1) + return return ..() /obj/item/reagent_containers/food/snacks/grown/coconut/attack(mob/living/M, mob/user, obj/target) @@ -528,4 +519,4 @@ if(!disassembled && fused) prime() if(!QDELETED(src)) - qdel(src) \ No newline at end of file + qdel(src) From 1030698c10e869bb813bc7b362b371150e83d573 Mon Sep 17 00:00:00 2001 From: Seris02 <49109742+Seris02@users.noreply.github.com> Date: Mon, 30 Dec 2019 21:18:05 +0800 Subject: [PATCH 115/192] did this actually change anything --- code/modules/hydroponics/grown/misc.dm | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/code/modules/hydroponics/grown/misc.dm b/code/modules/hydroponics/grown/misc.dm index cb70c7c48f..3af284974e 100644 --- a/code/modules/hydroponics/grown/misc.dm +++ b/code/modules/hydroponics/grown/misc.dm @@ -368,17 +368,17 @@ //OPENING THE NUT LOGIC if (!carved && !chopped) var/screwdrivered = W.tool_behaviour == TOOL_SCREWDRIVER - if(screwdrivered || W.sharpness) - user.show_message("You [screwdrivered ? "make a hole in the coconut" : "slice the coconut open"]!", 1) - carved = TRUE - opened = TRUE + if(screwdrivered || W.sharpness) + user.show_message("You [screwdrivered ? "make a hole in the coconut" : "slice the coconut open"]!", 1) + carved = TRUE + opened = TRUE spillable = !screwdrivered - reagent_flags = OPENCONTAINER - ENABLE_BITFIELD(reagents.reagents_holder_flags, OPENCONTAINER) - icon_state = screwdrivered ? "coconut_carved" : "coconut_chopped" - desc = "A coconut. [screwdrivered ? "This one's got a hole in it" : "This one's sliced open, with all its delicious contents for your eyes to savour"]." - playsound(user, W.hitsound, 50, 1, -1) - return + reagent_flags = OPENCONTAINER + ENABLE_BITFIELD(reagents.reagents_holder_flags, OPENCONTAINER) + icon_state = screwdrivered ? "coconut_carved" : "coconut_chopped" + desc = "A coconut. [screwdrivered ? "This one's got a hole in it" : "This one's sliced open, with all its delicious contents for your eyes to savour"]." + playsound(user, W.hitsound, 50, 1, -1) + return return ..() /obj/item/reagent_containers/food/snacks/grown/coconut/attack(mob/living/M, mob/user, obj/target) From 5c9c9d95663718cc6038745bb9c82e2f470eb6e2 Mon Sep 17 00:00:00 2001 From: deathride58 Date: Mon, 30 Dec 2019 15:32:15 -0500 Subject: [PATCH 116/192] Adds space to sprint and toggle sprint as preferences --- code/modules/client/preferences.dm | 11 +++++++++++ code/modules/client/preferences_savefile.dm | 6 ++++++ code/modules/keybindings/bindings_human.dm | 14 ++++++++++++-- 3 files changed, 29 insertions(+), 2 deletions(-) diff --git a/code/modules/client/preferences.dm b/code/modules/client/preferences.dm index d83cd9edc0..e746968312 100644 --- a/code/modules/client/preferences.dm +++ b/code/modules/client/preferences.dm @@ -195,6 +195,9 @@ GLOBAL_LIST_EMPTY(preferences_datums) var/auto_fit_viewport = TRUE var/uplink_spawn_loc = UPLINK_PDA + + var/sprint_spacebar = FALSE + var/sprint_toggle = FALSE var/list/exp = list() var/list/menuoptions @@ -889,6 +892,8 @@ GLOBAL_LIST_EMPTY(preferences_datums) dat += "
    " dat += "Ambient Occlusion: [ambientocclusion ? "Enabled" : "Disabled"]
    " dat += "Fit Viewport: [auto_fit_viewport ? "Auto" : "Manual"]
    " + dat += "Sprint Key: [sprint_spacebar ? "Space" : "Shift"]
    " + dat += "Toggle Sprint: [sprint_toggle ? "Enabled" : "Disabled"]
    " if (CONFIG_GET(flag/maprotation) && CONFIG_GET(flag/tgstyle_maprotation)) var/p_map = preferred_map @@ -2230,6 +2235,12 @@ GLOBAL_LIST_EMPTY(preferences_datums) if(auto_fit_viewport && parent) parent.fit_viewport() + if("sprint_key") + sprint_spacebar = !sprint_spacebar + + if("sprint_toggle") + sprint_toggle = !sprint_toggle + if("save") save_preferences() save_character() diff --git a/code/modules/client/preferences_savefile.dm b/code/modules/client/preferences_savefile.dm index 5fdcbf0484..d78b9fe6fd 100644 --- a/code/modules/client/preferences_savefile.dm +++ b/code/modules/client/preferences_savefile.dm @@ -167,6 +167,8 @@ SAVEFILE UPDATING/VERSIONING - 'Simplified', or rather, more coder-friendly ~Car S["parallax"] >> parallax S["ambientocclusion"] >> ambientocclusion S["auto_fit_viewport"] >> auto_fit_viewport + S["sprint_spacebar"] >> sprint_spacebar + S["sprint_toggle"] >> sprint_toggle S["menuoptions"] >> menuoptions S["enable_tips"] >> enable_tips S["tip_delay"] >> tip_delay @@ -204,6 +206,8 @@ SAVEFILE UPDATING/VERSIONING - 'Simplified', or rather, more coder-friendly ~Car parallax = sanitize_integer(parallax, PARALLAX_INSANE, PARALLAX_DISABLE, null) ambientocclusion = sanitize_integer(ambientocclusion, 0, 1, initial(ambientocclusion)) auto_fit_viewport = sanitize_integer(auto_fit_viewport, 0, 1, initial(auto_fit_viewport)) + sprint_spacebar = sanitize_integer(sprint_spacebar, 0, 1, initial(sprint_spacebar)) + sprint_toggle = sanitize_integer(sprint_toggle, 0, 1, initial(sprint_toggle)) ghost_form = sanitize_inlist(ghost_form, GLOB.ghost_forms, initial(ghost_form)) ghost_orbit = sanitize_inlist(ghost_orbit, GLOB.ghost_orbits, initial(ghost_orbit)) ghost_accs = sanitize_inlist(ghost_accs, GLOB.ghost_accs_options, GHOST_ACCS_DEFAULT_OPTION) @@ -264,6 +268,8 @@ SAVEFILE UPDATING/VERSIONING - 'Simplified', or rather, more coder-friendly ~Car WRITE_FILE(S["parallax"], parallax) WRITE_FILE(S["ambientocclusion"], ambientocclusion) WRITE_FILE(S["auto_fit_viewport"], auto_fit_viewport) + WRITE_FILE(S["sprint_spacebar"], sprint_spacebar) + WRITE_FILE(S["sprint_toggle"], sprint_toggle) WRITE_FILE(S["menuoptions"], menuoptions) WRITE_FILE(S["enable_tips"], enable_tips) WRITE_FILE(S["tip_delay"], tip_delay) diff --git a/code/modules/keybindings/bindings_human.dm b/code/modules/keybindings/bindings_human.dm index a9eafacef6..ed033935b2 100644 --- a/code/modules/keybindings/bindings_human.dm +++ b/code/modules/keybindings/bindings_human.dm @@ -58,13 +58,23 @@ return switch(_key) if("Shift") - sprint_hotkey(TRUE) + if(!user.prefs.sprint_spacebar) + user.prefs.sprint_toggle ? togglesprint() : sprint_hotkey(TRUE) //Yes, this looks hacky. Yes, this works. + return + if("Space") + if(user.prefs.sprint_spacebar) + user.prefs.sprint_toggle ? togglesprint() : sprint_hotkey(TRUE) return return ..() /mob/living/carbon/human/key_up(_key, client/user) switch(_key) if("Shift") - sprint_hotkey(FALSE) + if(!user.prefs.sprint_spacebar && !user.prefs.sprint_toggle) + sprint_hotkey(FALSE) + return + if("Space") + if(user.prefs.sprint_spacebar && !user.prefs.sprint_toggle) + sprint_hotkey(FALSE) return return ..() From d8c9dd967b988cc3ef6e1f42cd504f0f12e00ec0 Mon Sep 17 00:00:00 2001 From: CameronWoof Date: Mon, 30 Dec 2019 14:31:47 -0800 Subject: [PATCH 117/192] Dolly Dress-Up: Ghost Hunter Edition --- .../objects/structures/ghost_role_spawners.dm | 19 ++++++++++++++++++- 1 file changed, 18 insertions(+), 1 deletion(-) diff --git a/code/game/objects/structures/ghost_role_spawners.dm b/code/game/objects/structures/ghost_role_spawners.dm index 4304e275d1..c6b19a51f8 100644 --- a/code/game/objects/structures/ghost_role_spawners.dm +++ b/code/game/objects/structures/ghost_role_spawners.dm @@ -605,7 +605,7 @@ rank = "Gunner" /obj/effect/mob_spawn/human/ghostcafe - name = "ghost cafe sleeper" + name = "Ghost Cafe Sleeper" uses = -1 icon = 'icons/obj/machines/sleeper.dmi' icon_state = "sleeper" @@ -633,6 +633,7 @@ uniform = /obj/item/clothing/under/color/random shoes = /obj/item/clothing/shoes/sneakers/black id = /obj/item/card/id + r_hand = /obj/item/storage/box/syndie_kit/chameleon/ghostcafe /datum/outfit/ghostcafe/pre_equip(mob/living/carbon/human/H, visualsOnly = FALSE, client/preference_source) @@ -649,3 +650,19 @@ else uniform = /obj/item/clothing/under/skirt/color/random +/obj/item/storage/box/syndie_kit/chameleon/ghostcafe + name = "ghost cafe costuming kit" + desc = "Look just the way you did in life - or better!" + +/obj/item/storage/box/syndie_kit/chameleon/ghostcafe/PopulateContents() // Doesn't contain a PDA, for isolation reasons. + new /obj/item/clothing/under/chameleon(src) + new /obj/item/clothing/suit/chameleon(src) + new /obj/item/clothing/gloves/chameleon(src) + new /obj/item/clothing/shoes/chameleon(src) + new /obj/item/clothing/glasses/chameleon(src) + new /obj/item/clothing/head/chameleon(src) + new /obj/item/clothing/mask/chameleon(src) + new /obj/item/storage/backpack/chameleon(src) + new /obj/item/radio/headset/chameleon(src) + new /obj/item/stamp/chameleon(src) + new /obj/item/clothing/neck/cloak/chameleon(src) From ea4306922214bd7a1152ce4779d6cd49c7249463 Mon Sep 17 00:00:00 2001 From: Trilbyspaceclone <30435998+Trilbyspaceclone@users.noreply.github.com> Date: Mon, 30 Dec 2019 18:05:34 -0500 Subject: [PATCH 118/192] Update chem_master.dm --- .../reagents/chemistry/machinery/chem_master.dm | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/code/modules/reagents/chemistry/machinery/chem_master.dm b/code/modules/reagents/chemistry/machinery/chem_master.dm index 1ac62ba651..513626465a 100644 --- a/code/modules/reagents/chemistry/machinery/chem_master.dm +++ b/code/modules/reagents/chemistry/machinery/chem_master.dm @@ -260,7 +260,7 @@ if(!amount) return vol_each = min(reagents.total_volume / amount, 50) - var/name = stripped_input(usr,"Name:","Name your pill!", "[reagents.get_master_reagent_name()] ([vol_each]u)", MAX_NAME_LEN) + var/name = html_decode(stripped_input(usr,"Name:","Name your pill!", "[reagents.get_master_reagent_name()] ([vol_each]u)", MAX_NAME_LEN)) if(!name || !reagents.total_volume || !src || QDELETED(src) || !usr.canUseTopic(src, !issilicon(usr))) return var/obj/item/reagent_containers/pill/P @@ -287,7 +287,7 @@ adjust_item_drop_location(P) reagents.trans_to(P,vol_each) else - var/name = stripped_input(usr, "Name:", "Name your pack!", reagents.get_master_reagent_name(), MAX_NAME_LEN) + var/name = html_decode(stripped_input(usr, "Name:", "Name your pack!", reagents.get_master_reagent_name(), MAX_NAME_LEN)) if(!name || !reagents.total_volume || !src || QDELETED(src) || !usr.canUseTopic(src, !issilicon(usr))) return var/obj/item/reagent_containers/food/condiment/pack/P = new/obj/item/reagent_containers/food/condiment/pack(drop_location()) @@ -313,7 +313,7 @@ if(!amount) return vol_each = min(reagents.total_volume / amount, 40) - var/name = stripped_input(usr,"Name:","Name your patch!", "[reagents.get_master_reagent_name()] ([vol_each]u)", MAX_NAME_LEN) + var/name = html_decode(stripped_input(usr,"Name:","Name your patch!", "[reagents.get_master_reagent_name()] ([vol_each]u)", MAX_NAME_LEN)) if(!name || !reagents.total_volume || !src || QDELETED(src) || !usr.canUseTopic(src, !issilicon(usr))) return var/obj/item/reagent_containers/pill/P @@ -331,7 +331,7 @@ return if(condi) - var/name = stripped_input(usr, "Name:","Name your bottle!", (reagents.total_volume ? reagents.get_master_reagent_name() : " "), MAX_NAME_LEN) + var/name = html_decode(stripped_input(usr, "Name:","Name your bottle!", (reagents.total_volume ? reagents.get_master_reagent_name() : " "), MAX_NAME_LEN)) if(!name || !reagents.total_volume || !src || QDELETED(src) || !usr.canUseTopic(src, !issilicon(usr))) return var/obj/item/reagent_containers/food/condiment/P = new(drop_location()) @@ -344,7 +344,7 @@ if(text2num(many)) amount_full = round(reagents.total_volume / 30) vol_part = ((reagents.total_volume*1000) % 30000) / 1000 //% operator doesn't support decimals. - var/name = stripped_input(usr, "Name:","Name your bottle!", (reagents.total_volume ? reagents.get_master_reagent_name() : " "), MAX_NAME_LEN) + var/name = html_decode(stripped_input(usr, "Name:","Name your bottle!", (reagents.total_volume ? reagents.get_master_reagent_name() : " "), MAX_NAME_LEN)) if(!name || !reagents.total_volume || !src || QDELETED(src) || !usr.canUseTopic(src, !issilicon(usr))) return @@ -372,7 +372,7 @@ if(text2num(many)) amount_full = round(reagents.total_volume / 60) vol_part = reagents.total_volume % 60 - var/name = stripped_input(usr, "Name:","Name your hypovial!", (reagents.total_volume ? reagents.get_master_reagent_name() : " "), MAX_NAME_LEN) + var/name = html_decode(stripped_input(usr, "Name:","Name your hypovial!", (reagents.total_volume ? reagents.get_master_reagent_name() : " "), MAX_NAME_LEN)) if(!name || !reagents.total_volume || !src || QDELETED(src) || !usr.canUseTopic(src, !issilicon(usr))) return @@ -407,7 +407,7 @@ return vol_each = min(reagents.total_volume / amount, 20) - var/name = stripped_input(usr,"Name:","Name your SmartDart!", "[reagents.get_master_reagent_name()] ([vol_each]u)", MAX_NAME_LEN) + var/name = html_decode(stripped_input(usr,"Name:","Name your SmartDart!", "[reagents.get_master_reagent_name()] ([vol_each]u)", MAX_NAME_LEN)) if(!name || !reagents.total_volume || !src || QDELETED(src) || !usr.canUseTopic(src, !issilicon(usr))) return From b5ccbe86c06f454aeb9f952abc41701a1f6742b2 Mon Sep 17 00:00:00 2001 From: Putnam Date: Mon, 30 Dec 2019 15:40:20 -0800 Subject: [PATCH 119/192] Halved midround antag injection chance on calm --- code/game/gamemodes/dynamic/dynamic_storytellers.dm | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/code/game/gamemodes/dynamic/dynamic_storytellers.dm b/code/game/gamemodes/dynamic/dynamic_storytellers.dm index 0e1c10fc01..f8b2a1a4a2 100644 --- a/code/game/gamemodes/dynamic/dynamic_storytellers.dm +++ b/code/game/gamemodes/dynamic/dynamic_storytellers.dm @@ -182,7 +182,7 @@ Property weights are: flags = WAROPS_ALWAYS_ALLOWED property_weights = list("valid" = 3, "trust" = 5) -/datum/dynamic_storyteller/team/get_injection_chance() +/datum/dynamic_storyteller/team/get_injection_chance(dry_run = false) return (mode.current_players[CURRENT_LIVING_ANTAGS].len ? 0 : ..()) /datum/dynamic_storyteller/classic @@ -212,6 +212,9 @@ Property weights are: weight = 2 property_weights = list("extended" = 1, "chaos" = -1, "valid" = -1, "story_potential" = 1, "conversion" = -10) +/datum/dynamic_storyteller/liteextended/get_injection_chance(dry_run = FALSE) + return ..()/2 + /datum/dynamic_storyteller/extended name = "Extended" desc = "Chaos: none. Variation: none. Likely antags: none." From 8fb817b8f2850d95857cff89076c346057be3ced Mon Sep 17 00:00:00 2001 From: CitadelStationBot Date: Mon, 30 Dec 2019 18:28:19 -0600 Subject: [PATCH 120/192] Automatic changelog generation for PR #10123 [ci skip] --- html/changelogs/AutoChangeLog-pr-10123.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-10123.yml diff --git a/html/changelogs/AutoChangeLog-pr-10123.yml b/html/changelogs/AutoChangeLog-pr-10123.yml new file mode 100644 index 0000000000..208b17b930 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-10123.yml @@ -0,0 +1,4 @@ +author: "kevinz000" +delete-after: True +changes: + - rscadd: "throwing things no longer makes them randomly turned as long as you aren't on harm intent" From 2271246910dda042d5b0dc1725a4a7ee707d2d99 Mon Sep 17 00:00:00 2001 From: CitadelStationBot Date: Mon, 30 Dec 2019 18:28:51 -0600 Subject: [PATCH 121/192] Automatic changelog generation for PR #10165 [ci skip] --- html/changelogs/AutoChangeLog-pr-10165.yml | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-10165.yml diff --git a/html/changelogs/AutoChangeLog-pr-10165.yml b/html/changelogs/AutoChangeLog-pr-10165.yml new file mode 100644 index 0000000000..be6f9dedf7 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-10165.yml @@ -0,0 +1,5 @@ +author: "Ghommie" +delete-after: True +changes: + - bugfix: "Fixed missing digi versions fishnet sprites and wrong digitigrade left dir purple stockings sprite." + - imageadd: "Add digitigrade versions for boxers and the long johns." From 9538b7e6641376ab6a833c39f720d672aef33dec Mon Sep 17 00:00:00 2001 From: CitadelStationBot Date: Mon, 30 Dec 2019 18:31:09 -0600 Subject: [PATCH 122/192] Automatic changelog generation for PR #10338 [ci skip] --- html/changelogs/AutoChangeLog-pr-10338.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-10338.yml diff --git a/html/changelogs/AutoChangeLog-pr-10338.yml b/html/changelogs/AutoChangeLog-pr-10338.yml new file mode 100644 index 0000000000..c4816a3fbe --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-10338.yml @@ -0,0 +1,4 @@ +author: "Seris02" +delete-after: True +changes: + - rscadd: "marshmallow" From d2027c9abf84488522ac4af6cb3f8c750a0eca2e Mon Sep 17 00:00:00 2001 From: CitadelStationBot Date: Mon, 30 Dec 2019 18:31:37 -0600 Subject: [PATCH 123/192] Automatic changelog generation for PR #10344 [ci skip] --- html/changelogs/AutoChangeLog-pr-10344.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-10344.yml diff --git a/html/changelogs/AutoChangeLog-pr-10344.yml b/html/changelogs/AutoChangeLog-pr-10344.yml new file mode 100644 index 0000000000..e0381c6a43 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-10344.yml @@ -0,0 +1,4 @@ +author: "Ghommie" +delete-after: True +changes: + - bugfix: "Chestbursters won't delete the host's brain somewhat anymore." From 018904694f714f948cb5d0987a833e4b56c74594 Mon Sep 17 00:00:00 2001 From: Putnam Date: Mon, 30 Dec 2019 17:03:06 -0800 Subject: [PATCH 124/192] caps --- code/game/gamemodes/dynamic/dynamic_storytellers.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/game/gamemodes/dynamic/dynamic_storytellers.dm b/code/game/gamemodes/dynamic/dynamic_storytellers.dm index f8b2a1a4a2..07771fbb62 100644 --- a/code/game/gamemodes/dynamic/dynamic_storytellers.dm +++ b/code/game/gamemodes/dynamic/dynamic_storytellers.dm @@ -182,7 +182,7 @@ Property weights are: flags = WAROPS_ALWAYS_ALLOWED property_weights = list("valid" = 3, "trust" = 5) -/datum/dynamic_storyteller/team/get_injection_chance(dry_run = false) +/datum/dynamic_storyteller/team/get_injection_chance(dry_run = FALSE) return (mode.current_players[CURRENT_LIVING_ANTAGS].len ? 0 : ..()) /datum/dynamic_storyteller/classic From c4caa5460815aa1661e784690611069f0de74c22 Mon Sep 17 00:00:00 2001 From: Arturlang Date: Tue, 31 Dec 2019 03:23:14 +0200 Subject: [PATCH 125/192] Oh god oh fuck --- .../antagonists/bloodsucker/objects/bloodsucker_crypt.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/modules/antagonists/bloodsucker/objects/bloodsucker_crypt.dm b/code/modules/antagonists/bloodsucker/objects/bloodsucker_crypt.dm index f73912d0f5..3493622945 100644 --- a/code/modules/antagonists/bloodsucker/objects/bloodsucker_crypt.dm +++ b/code/modules/antagonists/bloodsucker/objects/bloodsucker_crypt.dm @@ -275,7 +275,7 @@ // All done! if(convert_progress <= 0) // FAIL: Can't be Vassal - if(!SSticker.mode.can_make_vassal(target, user, display_warning=FALSE) && HAS_TRAIT(target, TRAIT_MINDSHIELD)) // If I'm an unconvertable Antag ONLY + if(!SSticker.mode.can_make_vassal(target, user, display_warning=FALSE) || HAS_TRAIT(target, TRAIT_MINDSHIELD)) // If I'm an unconvertable Antag ONLY to_chat(user, "[target] doesn't respond to your persuasion. It doesn't appear they can be converted to follow you, they either have a mindshield or their external loyalties are too difficult for you to break.\[ALT+click to release\]") convert_progress ++ // Pop it back up some. Avoids wasting Blood on a lost cause. // SUCCESS: All done! From 5e403dd0a739e4cb5c293dd4c2c17cefc94d3566 Mon Sep 17 00:00:00 2001 From: Seris02 <49109742+Seris02@users.noreply.github.com> Date: Tue, 31 Dec 2019 09:34:03 +0800 Subject: [PATCH 126/192] Update code/modules/hydroponics/seeds.dm Co-Authored-By: Ghom <42542238+Ghommie@users.noreply.github.com> --- code/modules/hydroponics/seeds.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/modules/hydroponics/seeds.dm b/code/modules/hydroponics/seeds.dm index 904bc5228c..76b8be9b32 100644 --- a/code/modules/hydroponics/seeds.dm +++ b/code/modules/hydroponics/seeds.dm @@ -453,7 +453,7 @@ obj/item/seeds/proc/is_gene_forbidden(typepath) for(var/i in 1 to amount_random_traits) var/random_trait = pick((subtypesof(/datum/plant_gene/trait)-typesof(/datum/plant_gene/trait/plant_type))) var/datum/plant_gene/trait/T = new random_trait - if(T.can_add(src) && !is_gene_forbidden(T)) + if(T.can_add(src) && !is_gene_forbidden(random_trait)) genes += T else qdel(T) From 2e8c671a2fb980baa07d436d0217f22d34df178a Mon Sep 17 00:00:00 2001 From: Seris02 <49109742+Seris02@users.noreply.github.com> Date: Tue, 31 Dec 2019 09:34:15 +0800 Subject: [PATCH 127/192] Update code/modules/hydroponics/seeds.dm Co-Authored-By: Ghom <42542238+Ghommie@users.noreply.github.com> --- code/modules/hydroponics/seeds.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/modules/hydroponics/seeds.dm b/code/modules/hydroponics/seeds.dm index 76b8be9b32..39e97e3801 100644 --- a/code/modules/hydroponics/seeds.dm +++ b/code/modules/hydroponics/seeds.dm @@ -98,7 +98,7 @@ return S obj/item/seeds/proc/is_gene_forbidden(typepath) - return (locate(typepath) in forbiddengenes) + return (typepath in forbiddengenes) /obj/item/seeds/proc/get_gene(typepath) From 46c68f8fd8b03acffeebd8b2c6ed814cb90cf76d Mon Sep 17 00:00:00 2001 From: Seris02 <49109742+Seris02@users.noreply.github.com> Date: Tue, 31 Dec 2019 09:34:22 +0800 Subject: [PATCH 128/192] Update code/modules/hydroponics/gene_modder.dm Co-Authored-By: Ghom <42542238+Ghommie@users.noreply.github.com> --- code/modules/hydroponics/gene_modder.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/modules/hydroponics/gene_modder.dm b/code/modules/hydroponics/gene_modder.dm index 916390b488..77199b3496 100644 --- a/code/modules/hydroponics/gene_modder.dm +++ b/code/modules/hydroponics/gene_modder.dm @@ -240,7 +240,7 @@ dat += "" else dat += "No trait-related genes detected in sample.
    " - if(can_insert && istype(disk.gene, /datum/plant_gene/trait) && !seed.is_gene_forbidden(disk.gene)) + if(can_insert && istype(disk.gene, /datum/plant_gene/trait) && !seed.is_gene_forbidden(disk.gene.type)) dat += "Insert: [disk.gene.get_name()]" dat += "" else From 79c609aa40a2a14ab9ad78e021891cb743acc297 Mon Sep 17 00:00:00 2001 From: kevinz000 <2003111+kevinz000@users.noreply.github.com> Date: Mon, 30 Dec 2019 17:55:59 -0800 Subject: [PATCH 129/192] Update telescopic_iv.dm --- code/game/objects/items/telescopic_iv.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/game/objects/items/telescopic_iv.dm b/code/game/objects/items/telescopic_iv.dm index e1ec33569f..9b0b714ea5 100644 --- a/code/game/objects/items/telescopic_iv.dm +++ b/code/game/objects/items/telescopic_iv.dm @@ -9,7 +9,7 @@ /obj/item/tele_iv/afterattack(atom/target, mob/user, proximity) . = ..() - if(proximity|| isopenturf(target)) + if(proximity && isopenturf(target) && user.CanReach(target)) deploy_iv(user, target) /obj/item/tele_iv/proc/deploy_iv(mob/user, atom/location) From 5f9666d8663c4395d638beba98f09838f83aa060 Mon Sep 17 00:00:00 2001 From: CitadelStationBot Date: Mon, 30 Dec 2019 20:10:32 -0600 Subject: [PATCH 130/192] Automatic changelog generation for PR #10364 [ci skip] --- html/changelogs/AutoChangeLog-pr-10364.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-10364.yml diff --git a/html/changelogs/AutoChangeLog-pr-10364.yml b/html/changelogs/AutoChangeLog-pr-10364.yml new file mode 100644 index 0000000000..8834c494ad --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-10364.yml @@ -0,0 +1,4 @@ +author: "kevinz000" +delete-after: True +changes: + - bugfix: "telescopic iv drips now have the proper sanity checks for deployment." From 0b60b121c2ff0acb0abcc9839ab9eff312164550 Mon Sep 17 00:00:00 2001 From: Putnam Date: Mon, 30 Dec 2019 19:34:57 -0800 Subject: [PATCH 131/192] afwafwadjiwao --- code/__DEFINES/citadel_defines.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/__DEFINES/citadel_defines.dm b/code/__DEFINES/citadel_defines.dm index 24f6c393b3..e29be375e6 100644 --- a/code/__DEFINES/citadel_defines.dm +++ b/code/__DEFINES/citadel_defines.dm @@ -116,7 +116,7 @@ #define HYPNO (1<<7) #define NEVER_HYPNO (1<<8) #define NO_APHRO (1<<9) -#define NO_ASS_SLAP (1<<9) +#define NO_ASS_SLAP (1<<10) #define TOGGLES_CITADEL (EATING_NOISES|DIGESTION_NOISES|BREAST_ENLARGEMENT|PENIS_ENLARGEMENT) From 8ac23f41e62ae8cff0c4b7993b19775b4a8a3b21 Mon Sep 17 00:00:00 2001 From: CitadelStationBot Date: Mon, 30 Dec 2019 22:12:58 -0600 Subject: [PATCH 132/192] Automatic changelog generation for PR #10365 [ci skip] --- html/changelogs/AutoChangeLog-pr-10365.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-10365.yml diff --git a/html/changelogs/AutoChangeLog-pr-10365.yml b/html/changelogs/AutoChangeLog-pr-10365.yml new file mode 100644 index 0000000000..f7ba047fc7 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-10365.yml @@ -0,0 +1,4 @@ +author: "Putnam3145" +delete-after: True +changes: + - bugfix: "no ass slap is no longer the same thing as no aphro" From dc339b69627fa7d91d1a1c5d293d797dac369384 Mon Sep 17 00:00:00 2001 From: Hatterhat Date: Mon, 30 Dec 2019 22:24:41 -0600 Subject: [PATCH 133/192] beaker capacity buff --- .../reagents/reagent_containers/glass.dm | 25 ++++++++++--------- 1 file changed, 13 insertions(+), 12 deletions(-) diff --git a/code/modules/reagents/reagent_containers/glass.dm b/code/modules/reagents/reagent_containers/glass.dm index 3ed505c360..128967614a 100644 --- a/code/modules/reagents/reagent_containers/glass.dm +++ b/code/modules/reagents/reagent_containers/glass.dm @@ -109,8 +109,9 @@ /obj/item/reagent_containers/glass/beaker name = "beaker" - desc = "A beaker. It can hold up to 50 units. Unable to withstand extreme pHes" + desc = "A beaker. It can hold up to 60 units. Unable to withstand extreme pHes." icon = 'icons/obj/chemical.dmi' + volume = 60 icon_state = "beaker" item_state = "beaker" materials = list(MAT_GLASS=500) @@ -162,22 +163,22 @@ /obj/item/reagent_containers/glass/beaker/large name = "large beaker" - desc = "A large beaker. Can hold up to 100 units. Unable to withstand reagents of an extreme pH." + desc = "A large beaker. Can hold up to 120 units. Unable to withstand reagents of an extreme pH." icon_state = "beakerlarge" materials = list(MAT_GLASS=2500) - volume = 100 + volume = 120 amount_per_transfer_from_this = 10 - possible_transfer_amounts = list(5,10,15,20,25,30,50,100) + possible_transfer_amounts = list(5,10,15,20,25,30,50,100,120) container_HP = 3 /obj/item/reagent_containers/glass/beaker/plastic name = "x-large beaker" - desc = "An extra-large beaker. Can hold up to 150 units. Is able to resist acid and alkaline solutions, but melts at 444K" + desc = "An extra-large beaker. Can hold up to 180 units. Is able to resist acid and alkaline solutions, but melts at 444 K." icon_state = "beakerwhite" materials = list(MAT_GLASS=2500, MAT_PLASTIC=3000) - volume = 150 + volume = 180 amount_per_transfer_from_this = 10 - possible_transfer_amounts = list(5,10,15,20,25,30,50,100,150) + possible_transfer_amounts = list(5,10,15,20,25,30,50,100,180) /obj/item/reagent_containers/glass/beaker/plastic/Initialize() beaker_weakness_bitflag &= ~PH_WEAK @@ -191,14 +192,14 @@ /obj/item/reagent_containers/glass/beaker/meta name = "metamaterial beaker" - desc = "A large beaker. Can hold up to 200 units. Is able to withstand all chemical situations." + desc = "A large beaker. Can hold up to 240 units, and is able to withstand all chemical situations." icon_state = "beakergold" materials = list(MAT_GLASS=2500, MAT_PLASTIC=3000, MAT_GOLD=1000, MAT_TITANIUM=1000) - volume = 200 + volume = 240 amount_per_transfer_from_this = 10 - possible_transfer_amounts = list(5,10,15,20,25,30,50,100,200) + possible_transfer_amounts = list(5,10,15,20,25,30,50,100,120,200,240) -/obj/item/reagent_containers/glass/beaker/meta/Initialize() +/obj/item/reagent_containers/glass/beaker/meta/Initialize() // why the fuck can't you just set the beaker weakness bitflags to nothing? fuck you beaker_weakness_bitflag &= ~PH_WEAK . = ..() @@ -228,7 +229,7 @@ volume = 300 amount_per_transfer_from_this = 10 possible_transfer_amounts = list(5,10,15,20,25,30,50,100,300) - container_HP = 4 + container_HP = 5 /obj/item/reagent_containers/glass/beaker/cryoxadone list_reagents = list("cryoxadone" = 30) From dcb5c5878463e84a1f62dafedfb90b48d1ad69d2 Mon Sep 17 00:00:00 2001 From: Hatterhat Date: Mon, 30 Dec 2019 22:33:40 -0600 Subject: [PATCH 134/192] hypovial users dont deserve rights --- code/modules/reagents/reagent_containers/hypovial.dm | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/code/modules/reagents/reagent_containers/hypovial.dm b/code/modules/reagents/reagent_containers/hypovial.dm index ba5ce48a4a..01acda18bc 100644 --- a/code/modules/reagents/reagent_containers/hypovial.dm +++ b/code/modules/reagents/reagent_containers/hypovial.dm @@ -1,6 +1,6 @@ //hypovials used with the MkII hypospray. See hypospray.dm. -/obj/item/reagent_containers/glass/bottle/vial +/obj/item/reagent_containers/glass/bottle/vial // these have literally no fucking right to just be better beakers that you can shit out of a chemmaster name = "broken hypovial" desc = "A hypovial compatible with most hyposprays." icon_state = "hypovial" @@ -27,6 +27,8 @@ for(var/R in comes_with) reagents.add_reagent(R,comes_with[R]) update_icon() + beaker_weakness_bitflag |= PH_WEAK // fuck you if you're using these like beakers + beaker_weakness_bitflag |= TEMP_WEAK /obj/item/reagent_containers/glass/bottle/vial/on_reagent_change() @@ -60,11 +62,11 @@ /obj/item/reagent_containers/glass/bottle/vial/small name = "hypovial" volume = 60 - possible_transfer_amounts = list(5,10) + possible_transfer_amounts = list(1) /obj/item/reagent_containers/glass/bottle/vial/small/bluespace volume = 120 - possible_transfer_amounts = list(5,10) + possible_transfer_amounts = list(1) name = "bluespace hypovial" icon_state = "hypovialbs" unique_reskin = null @@ -74,7 +76,7 @@ desc = "A large hypovial, for deluxe hypospray models." icon_state = "hypoviallarge" volume = 120 - possible_transfer_amounts = list(5,10,15,20) + possible_transfer_amounts = list(1) unique_reskin = list("large hypovial" = "hypoviallarge", "large red hypovial" = "hypoviallarge-b", "large blue hypovial" = "hypoviallarge-d", @@ -106,7 +108,7 @@ add_overlay(filling) /obj/item/reagent_containers/glass/bottle/vial/large/bluespace - possible_transfer_amounts = list(5,10,15,20) + possible_transfer_amounts = list(1) name = "bluespace large hypovial" volume = 240 icon_state = "hypoviallargebs" From ff8a86d05a66d4a51e4897db66a6df558de26826 Mon Sep 17 00:00:00 2001 From: Hatterhat Date: Mon, 30 Dec 2019 23:28:14 -0600 Subject: [PATCH 135/192] squashing is hell but orm lasers work --- code/modules/mining/machine_redemption.dm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/code/modules/mining/machine_redemption.dm b/code/modules/mining/machine_redemption.dm index 79da476719..b5f7bbf8ab 100644 --- a/code/modules/mining/machine_redemption.dm +++ b/code/modules/mining/machine_redemption.dm @@ -50,7 +50,7 @@ /obj/machinery/mineral/ore_redemption/examine(mob/user) . = ..() if(in_range(user, src) || isobserver(user)) - . += "The status display reads: Smelting [sheet_per_ore] sheet(s) per piece of ore.
    Ore pickup speed at [ore_pickup_rate].
    " + . += "The status display reads: Smelting [sheet_per_ore] sheet(s) per piece of ore.
    Reward point generation at [point_upgrade*100]%.
    Ore pickup speed at [ore_pickup_rate].
    " /obj/machinery/mineral/ore_redemption/proc/smelt_ore(obj/item/stack/ore/O) var/datum/component/material_container/mat_container = materials.mat_container @@ -63,7 +63,7 @@ ore_buffer -= O if(O && O.refined_type) - points += O.points * O.amount + points += O.points * point_upgrade * O.amount var/material_amount = mat_container.get_item_material_amount(O) From 4c5f6f895baf38c0b77861f15274163b76cb58e3 Mon Sep 17 00:00:00 2001 From: Hatterhat <31829017+Hatterhat@users.noreply.github.com> Date: Tue, 31 Dec 2019 00:07:36 -0600 Subject: [PATCH 136/192] tgstation 42481 --- .../living/simple_animal/hostile/mining_mobs/mining_mobs.dm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/code/modules/mob/living/simple_animal/hostile/mining_mobs/mining_mobs.dm b/code/modules/mob/living/simple_animal/hostile/mining_mobs/mining_mobs.dm index 05dec578bd..03d2365016 100644 --- a/code/modules/mob/living/simple_animal/hostile/mining_mobs/mining_mobs.dm +++ b/code/modules/mob/living/simple_animal/hostile/mining_mobs/mining_mobs.dm @@ -20,7 +20,7 @@ lighting_alpha = LIGHTING_PLANE_ALPHA_MOSTLY_INVISIBLE mob_size = MOB_SIZE_LARGE var/icon_aggro = null - var/crusher_drop_mod = 5 + var/crusher_drop_mod = 25 /mob/living/simple_animal/hostile/asteroid/Initialize(mapload) . = ..() @@ -58,7 +58,7 @@ /mob/living/simple_animal/hostile/asteroid/death(gibbed) SSblackbox.record_feedback("tally", "mobs_killed_mining", 1, type) var/datum/status_effect/crusher_damage/C = has_status_effect(STATUS_EFFECT_CRUSHERDAMAGETRACKING) - if(C && crusher_loot && prob((C.total_damage/maxHealth) * crusher_drop_mod)) //on average, you'll need to kill 20 creatures before getting the item + if(C && crusher_loot && prob((C.total_damage/maxHealth) * crusher_drop_mod)) //on average, you'll need to kill 4 creatures before getting the item spawn_crusher_loot() ..(gibbed) From 76e789d3d107bff30210429e326422f5c2a820c9 Mon Sep 17 00:00:00 2001 From: Hatterhat Date: Tue, 31 Dec 2019 00:14:52 -0600 Subject: [PATCH 137/192] getting limb crippled is a 4head bruh --- code/datums/status_effects/buffs.dm | 2 ++ 1 file changed, 2 insertions(+) diff --git a/code/datums/status_effects/buffs.dm b/code/datums/status_effects/buffs.dm index 5c4fc61827..5dab98d5ca 100644 --- a/code/datums/status_effects/buffs.dm +++ b/code/datums/status_effects/buffs.dm @@ -292,6 +292,7 @@ var/mob/living/carbon/C = owner for(var/X in C.bodyparts) var/obj/item/bodypart/BP = X + BP.max_damage *= 10 BP.brute_dam *= 10 BP.burn_dam *= 10 owner.toxloss *= 10 @@ -377,6 +378,7 @@ var/obj/item/bodypart/BP = X BP.brute_dam *= 0.1 BP.burn_dam *= 0.1 + BP.max_damage /= 10 owner.toxloss *= 0.1 owner.oxyloss *= 0.1 owner.cloneloss *= 0.1 From 970814adbce4603f642eb9f583e23bf9dc6074b8 Mon Sep 17 00:00:00 2001 From: kappa-sama <44128284+kappa-sama@users.noreply.github.com> Date: Tue, 31 Dec 2019 01:42:07 -0500 Subject: [PATCH 138/192] it begins --- code/modules/cargo/packs/misc.dm | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/code/modules/cargo/packs/misc.dm b/code/modules/cargo/packs/misc.dm index aa680e1b1e..f0b4e9446f 100644 --- a/code/modules/cargo/packs/misc.dm +++ b/code/modules/cargo/packs/misc.dm @@ -13,17 +13,16 @@ //////////////////// Paperwork and Writing Supplies ////////////////////////// ////////////////////////////////////////////////////////////////////////////// -/* I did it Kevin /datum/supply_pack/misc/abandonedcrate - name = "Abandoned Crate" - desc = "Someone keeps finding these locked crates out in the boonies. How about you take a crack at it, we've had our fill. WARNING: EXPLOSIVE" + name = "Loot Box" + desc = "Try your luck with these highly secure loot boxes! Solve the lock, win great prizes! WARNING: EXPLOSIVE FAILURE." contraband = TRUE - cost = 12800 + cost = 10000 contains = list(/obj/structure/closet/crate/secure/loot) crate_name = "abandoned crate" crate_type = /obj/structure/closet/crate/large dangerous = TRUE -*/ + /datum/supply_pack/misc/artsupply name = "Art Supplies" desc = "Make some happy little accidents with six canvasses, two easels, two boxes of crayons, and a rainbow crayon!" From c0bc53ea81d6af646f6917c90ba1805e8957cb5c Mon Sep 17 00:00:00 2001 From: kappa-sama <44128284+kappa-sama@users.noreply.github.com> Date: Tue, 31 Dec 2019 01:43:42 -0500 Subject: [PATCH 139/192] more --- code/modules/cargo/packs/misc.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/modules/cargo/packs/misc.dm b/code/modules/cargo/packs/misc.dm index f0b4e9446f..29133b78d2 100644 --- a/code/modules/cargo/packs/misc.dm +++ b/code/modules/cargo/packs/misc.dm @@ -17,7 +17,7 @@ name = "Loot Box" desc = "Try your luck with these highly secure loot boxes! Solve the lock, win great prizes! WARNING: EXPLOSIVE FAILURE." contraband = TRUE - cost = 10000 + cost = 15000 contains = list(/obj/structure/closet/crate/secure/loot) crate_name = "abandoned crate" crate_type = /obj/structure/closet/crate/large From 5a497b02ace910f29a2b5bbf3e11214601ea3224 Mon Sep 17 00:00:00 2001 From: Hatterhat Date: Tue, 31 Dec 2019 01:56:01 -0600 Subject: [PATCH 140/192] hey i'm WALKIN here --- .../items/devices/forcefieldprojector.dm | 2 +- code/game/objects/items/holosign_creator.dm | 2 +- code/game/objects/items/storage/belt.dm | 5 +++-- icons/obj/device.dmi | Bin 46156 -> 49032 bytes 4 files changed, 5 insertions(+), 4 deletions(-) diff --git a/code/game/objects/items/devices/forcefieldprojector.dm b/code/game/objects/items/devices/forcefieldprojector.dm index 0c73d829ff..bf9c5daccd 100644 --- a/code/game/objects/items/devices/forcefieldprojector.dm +++ b/code/game/objects/items/devices/forcefieldprojector.dm @@ -2,7 +2,7 @@ name = "forcefield projector" desc = "An experimental device that can create several forcefields at a distance." icon = 'icons/obj/device.dmi' - icon_state = "signmaker_engi" + icon_state = "signmaker_forcefield" slot_flags = ITEM_SLOT_BELT w_class = WEIGHT_CLASS_SMALL item_flags = NOBLUDGEON diff --git a/code/game/objects/items/holosign_creator.dm b/code/game/objects/items/holosign_creator.dm index 78881d901e..eb58089293 100644 --- a/code/game/objects/items/holosign_creator.dm +++ b/code/game/objects/items/holosign_creator.dm @@ -79,7 +79,7 @@ /obj/item/holosign_creator/atmos name = "ATMOS holofan projector" desc = "A holographic projector that creates holographic barriers that prevent changes in atmosphere conditions." - icon_state = "signmaker_engi" + icon_state = "signmaker_atmos" holosign_type = /obj/structure/holosign/barrier/atmos creation_time = 0 max_signs = 3 diff --git a/code/game/objects/items/storage/belt.dm b/code/game/objects/items/storage/belt.dm index 3a4579d3f8..12cbbec081 100755 --- a/code/game/objects/items/storage/belt.dm +++ b/code/game/objects/items/storage/belt.dm @@ -61,6 +61,7 @@ /obj/item/radio, /obj/item/clothing/gloves, /obj/item/holosign_creator, + /obj/item/forcefield_projector, /obj/item/assembly/signaler )) STR.can_hold = can_hold @@ -458,8 +459,7 @@ /obj/item/extinguisher/mini, /obj/item/radio, /obj/item/clothing/gloves, - /obj/item/holosign_creator/atmos, - /obj/item/holosign_creator/engineering, + /obj/item/holosign_creator, /obj/item/forcefield_projector, /obj/item/assembly/signaler, /obj/item/lightreplacer, @@ -571,6 +571,7 @@ /obj/item/reagent_containers/spray, /obj/item/soap, /obj/item/holosign_creator, + /obj/item/forcefield_projector, /obj/item/key/janitor, /obj/item/clothing/gloves, /obj/item/melee/flyswatter, diff --git a/icons/obj/device.dmi b/icons/obj/device.dmi index f467da6fbfa21c45d916bc13ba6a47926471dc5a..73eb12fd6a1326358e18f20b7823538eb974b544 100644 GIT binary patch literal 49032 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 literal 46156 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 Date: Tue, 31 Dec 2019 05:25:12 -0500 Subject: [PATCH 141/192] Update energy.dm --- code/game/objects/items/melee/energy.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/game/objects/items/melee/energy.dm b/code/game/objects/items/melee/energy.dm index 16262d61c3..4549dc73b6 100644 --- a/code/game/objects/items/melee/energy.dm +++ b/code/game/objects/items/melee/energy.dm @@ -374,7 +374,7 @@ It appears to have a wooden grip and a shaved down guard." icon_state = "cxsword_hilt_traitor" force_on = 30 - armour_penetration = 50 + armour_penetration = 35 embedding = list("embedded_pain_multiplier" = 10, "embed_chance" = 75, "embedded_fall_chance" = 0, "embedded_impact_pain_multiplier" = 10) block_chance = 50 hitsound_on = 'sound/weapons/blade1.ogg' From cf77f7b18e6fe9654bb6efb49da3c69d18b4c511 Mon Sep 17 00:00:00 2001 From: Putnam Date: Tue, 31 Dec 2019 02:40:50 -0800 Subject: [PATCH 142/192] Balance pass (see description) 1. Made bloodsuckers more likely on calm, story, slightly more common on intrigue 2. Made intrigue no longer have low threat by default 3. Made abductors have lower weights in general, making them less likely to show up 4. Made sentient disease, revenant less likely on calm 5. Added a new storyteller, "Conversion", which rolls conversion antags. --- .../gamemodes/dynamic/dynamic_rulesets_latejoin.dm | 2 +- .../gamemodes/dynamic/dynamic_rulesets_midround.dm | 8 ++++---- .../gamemodes/dynamic/dynamic_rulesets_roundstart.dm | 2 +- code/game/gamemodes/dynamic/dynamic_storytellers.dm | 10 +++++++++- 4 files changed, 15 insertions(+), 7 deletions(-) diff --git a/code/game/gamemodes/dynamic/dynamic_rulesets_latejoin.dm b/code/game/gamemodes/dynamic/dynamic_rulesets_latejoin.dm index 20964ec1f8..f4e9971a05 100644 --- a/code/game/gamemodes/dynamic/dynamic_rulesets_latejoin.dm +++ b/code/game/gamemodes/dynamic/dynamic_rulesets_latejoin.dm @@ -211,7 +211,7 @@ required_candidates = 1 weight = 3 cost = 10 - property_weights = list("extended" = 1, "trust" = -2, "valid" = 1) + property_weights = list("story_potential" = 2, "extended" = 2, "trust" = -2, "valid" = 1) requirements = list(70,65,60,55,50,45,40,35,30,30) high_population_requirement = 30 repeatable = TRUE diff --git a/code/game/gamemodes/dynamic/dynamic_rulesets_midround.dm b/code/game/gamemodes/dynamic/dynamic_rulesets_midround.dm index 9965937b47..c89562c9f9 100644 --- a/code/game/gamemodes/dynamic/dynamic_rulesets_midround.dm +++ b/code/game/gamemodes/dynamic/dynamic_rulesets_midround.dm @@ -434,7 +434,7 @@ high_population_requirement = 50 repeatable_weight_decrease = 2 repeatable = TRUE - property_weights = list("story_potential" = -1, "trust" = 2, "chaos" = 2, "extended" = -2, "valid" = 2) + property_weights = list("story_potential" = -1, "trust" = 1, "chaos" = 2, "extended" = -2, "valid" = 2) var/list/vents = list() /datum/dynamic_ruleset/midround/from_ghosts/xenomorph/ready(forced = FALSE) @@ -536,7 +536,7 @@ weight = 4 cost = 5 requirements = list(30,30,20,20,15,10,10,10,10,5) // yes, it can even happen in "extended"! - property_weights = list("story_potential" = 2, "extended" = 2, "valid" = -2) + property_weights = list("story_potential" = 1, "extended" = 1, "valid" = -2) high_population_requirement = 5 /datum/dynamic_ruleset/midround/from_ghosts/sentient_disease/ready(forced = FALSE) @@ -571,7 +571,7 @@ cost = 5 requirements = list(30,30,30,30,20,15,15,15,15,15) high_population_requirement = 15 - property_weights = list("story_potential" = -2, "extended" = 1, "integrity" = 1) + property_weights = list("story_potential" = -2, "extended" = -1) var/list/spawn_locs = list() /datum/dynamic_ruleset/midround/from_ghosts/revenant/acceptable(population = 0,threat = 0) @@ -680,7 +680,7 @@ blocking_rules = list(/datum/dynamic_ruleset/roundstart/nuclear,/datum/dynamic_ruleset/midround/from_ghosts/nuclear) high_population_requirement = 15 var/datum/team/abductor_team/team - property_weights = list("story_potential" = 2, "extended" = -2, "valid" = 1, "trust" = -2, "chaos" = 2) + property_weights = list("story_potential" = 1, "extended" = -2, "valid" = 1, "trust" = -1, "chaos" = 2) repeatable_weight_decrease = 4 repeatable = TRUE diff --git a/code/game/gamemodes/dynamic/dynamic_rulesets_roundstart.dm b/code/game/gamemodes/dynamic/dynamic_rulesets_roundstart.dm index 52f609db7b..abd40a1756 100644 --- a/code/game/gamemodes/dynamic/dynamic_rulesets_roundstart.dm +++ b/code/game/gamemodes/dynamic/dynamic_rulesets_roundstart.dm @@ -813,7 +813,7 @@ weight = 2 cost = 15 scaling_cost = 10 - property_weights = list("extended" = 1, "trust" = -2, "valid" = 1) + property_weights = list("story_potential" = 1, "extended" = 1, "trust" = -2, "valid" = 1) requirements = list(70,65,60,55,50,50,50,50,50,50) high_population_requirement = 50 antag_cap = list(1,1,1,1,1,2,2,2,2,2) diff --git a/code/game/gamemodes/dynamic/dynamic_storytellers.dm b/code/game/gamemodes/dynamic/dynamic_storytellers.dm index 07771fbb62..4ec1d92a11 100644 --- a/code/game/gamemodes/dynamic/dynamic_storytellers.dm +++ b/code/game/gamemodes/dynamic/dynamic_storytellers.dm @@ -185,6 +185,15 @@ Property weights are: /datum/dynamic_storyteller/team/get_injection_chance(dry_run = FALSE) return (mode.current_players[CURRENT_LIVING_ANTAGS].len ? 0 : ..()) +/datum/dynamic_storyteller/conversion + name = "Conversion" + desc = "Chaos: high. Variation: medium. Likely antags: cults, bloodsuckers, revs." + curve_centre = 3 + curve_width = 1 + weight = 2 + flags = WAROPS_ALWAYS_ALLOWED + property_weights = list("valid" = 1, "conversion" = 20) + /datum/dynamic_storyteller/classic name = "Random" desc = "Chaos: medium. Variation: highest. No special weights attached." @@ -199,7 +208,6 @@ Property weights are: /datum/dynamic_storyteller/suspicion name = "Intrigue" desc = "Chaos: low. Variation: high. Likely antags: traitor, bloodsucker. Rare: revs, blood cult." - curve_centre = -2 curve_width = 4 property_weights = list("trust" = -5, "extended" = 3) From 3589803caf30a3a0ccc73fc203cc428d926bf6e9 Mon Sep 17 00:00:00 2001 From: CitadelStationBot Date: Tue, 31 Dec 2019 06:16:10 -0600 Subject: [PATCH 143/192] Automatic changelog generation for PR #10319 [ci skip] --- html/changelogs/AutoChangeLog-pr-10319.yml | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-10319.yml diff --git a/html/changelogs/AutoChangeLog-pr-10319.yml b/html/changelogs/AutoChangeLog-pr-10319.yml new file mode 100644 index 0000000000..88235aab8e --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-10319.yml @@ -0,0 +1,5 @@ +author: "Seris02" +delete-after: True +changes: + - rscadd: "adds coconut" + - rscadd: "adds a coconut bong" From 4349371b0b6ccb63131deec462d0e01e985f7968 Mon Sep 17 00:00:00 2001 From: CitadelStationBot Date: Tue, 31 Dec 2019 07:36:56 -0600 Subject: [PATCH 144/192] Automatic changelog generation for PR #10345 [ci skip] --- html/changelogs/AutoChangeLog-pr-10345.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-10345.yml diff --git a/html/changelogs/AutoChangeLog-pr-10345.yml b/html/changelogs/AutoChangeLog-pr-10345.yml new file mode 100644 index 0000000000..a95653cdda --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-10345.yml @@ -0,0 +1,4 @@ +author: "Trilbyspaceclone" +delete-after: True +changes: + - tweak: "allows bandoliers to hold any ammo type as long as it has a casing" From c25605f7e6c5b70f56f494158dac64e14820bcd5 Mon Sep 17 00:00:00 2001 From: CitadelStationBot Date: Tue, 31 Dec 2019 07:39:37 -0600 Subject: [PATCH 145/192] Automatic changelog generation for PR #10362 [ci skip] --- html/changelogs/AutoChangeLog-pr-10362.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-10362.yml diff --git a/html/changelogs/AutoChangeLog-pr-10362.yml b/html/changelogs/AutoChangeLog-pr-10362.yml new file mode 100644 index 0000000000..f92e16302a --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-10362.yml @@ -0,0 +1,4 @@ +author: "Trilbyspaceclone" +delete-after: True +changes: + - bugfix: "rouge cases of #$39; in bottle/pill/patch/condiments" From 98e9196cfe75e1e909733a6ccf31aca9dc96f58e Mon Sep 17 00:00:00 2001 From: CitadelStationBot Date: Tue, 31 Dec 2019 07:43:42 -0600 Subject: [PATCH 146/192] Automatic changelog generation for PR #10309 [ci skip] --- html/changelogs/AutoChangeLog-pr-10309.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-10309.yml diff --git a/html/changelogs/AutoChangeLog-pr-10309.yml b/html/changelogs/AutoChangeLog-pr-10309.yml new file mode 100644 index 0000000000..a59ebff156 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-10309.yml @@ -0,0 +1,4 @@ +author: "Seris02" +delete-after: True +changes: + - rscadd: "disabler sechuds" From f2e9ba2a8e895b870ada8da119f7e0e24f1739de Mon Sep 17 00:00:00 2001 From: KathrinBailey Date: Tue, 31 Dec 2019 16:41:23 +0000 Subject: [PATCH 147/192] Makes lockers into subtypes Adds new lockers cleanly at the bottom instead and as subtypes. --- .../closets/secure/engineering.dm | 42 ++++++++++++++----- 1 file changed, 31 insertions(+), 11 deletions(-) diff --git a/code/game/objects/structures/crates_lockers/closets/secure/engineering.dm b/code/game/objects/structures/crates_lockers/closets/secure/engineering.dm index b3adae577b..44fbd7b461 100644 --- a/code/game/objects/structures/crates_lockers/closets/secure/engineering.dm +++ b/code/game/objects/structures/crates_lockers/closets/secure/engineering.dm @@ -50,12 +50,6 @@ for(var/i in 1 to 3) new /obj/item/multitool(src) -/obj/structure/closet/secure_closet/engineering_electrical_empty - name = "electrical supplies locker" - req_access = list(ACCESS_ENGINE_EQUIP) - icon_state = "eng" - icon_door = "eng_elec" - /obj/structure/closet/secure_closet/engineering_welding name = "welding supplies locker" req_access = list(ACCESS_ENGINE_EQUIP) @@ -84,11 +78,6 @@ new /obj/item/clothing/glasses/meson/engine(src) new /obj/item/storage/box/emptysandbags(src) -/obj/structure/closet/secure_closet/engineering_personal_empty - name = "engineer's locker" - req_access = list(ACCESS_ENGINE_EQUIP) - icon_state = "eng_secure" - /obj/structure/closet/secure_closet/atmospherics name = "\proper atmospheric technician's locker" req_access = list(ACCESS_ATMOSPHERICS) @@ -107,3 +96,34 @@ new /obj/item/clothing/head/hardhat/atmos(src) new /obj/item/clothing/glasses/meson/engine/tray(src) new /obj/item/extinguisher/advanced(src) + +/* + * Empty lockers + * Some of the lockers are filled with junk, and sometimes its nice to just fill it with your own set-up for your own map gimmicks. + */ + +/obj/structure/closet/secure_closet/engineering_chief/empty + +/obj/structure/closet/secure_closet/engineering_electrical/empty + +/obj/structure/closet/secure_closet/engineering_welding/empty + +/obj/structure/closet/secure_closet/engineering_personal/empty + +/obj/structure/closet/secure_closet/atmospherics/empty + + +/obj/structure/closet/secure_closet/engineering_chief/empty/PopulateContents() + return + +/obj/structure/closet/secure_closet/engineering_electrical/empty/PopulateContents() + return + +/obj/structure/closet/secure_closet/engineering_welding/empty/PopulateContents() + return + +/obj/structure/closet/secure_closet/engineering_personal/empty/PopulateContents() + return + +/obj/structure/closet/secure_closet/atmospherics/empty/PopulateContents() + return \ No newline at end of file From 0a19f62fa973d751574ce8d421327a61c8679c60 Mon Sep 17 00:00:00 2001 From: KathrinBailey Date: Tue, 31 Dec 2019 16:45:06 +0000 Subject: [PATCH 148/192] dab --- .../structures/crates_lockers/closets/secure/engineering.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/game/objects/structures/crates_lockers/closets/secure/engineering.dm b/code/game/objects/structures/crates_lockers/closets/secure/engineering.dm index 44fbd7b461..fde5725329 100644 --- a/code/game/objects/structures/crates_lockers/closets/secure/engineering.dm +++ b/code/game/objects/structures/crates_lockers/closets/secure/engineering.dm @@ -126,4 +126,4 @@ return /obj/structure/closet/secure_closet/atmospherics/empty/PopulateContents() - return \ No newline at end of file + return From 243aebe12ae1b6e967a79be36de2b3b59b377c39 Mon Sep 17 00:00:00 2001 From: KathrinBailey Date: Tue, 31 Dec 2019 16:54:59 +0000 Subject: [PATCH 149/192] dab 2x --- .../closets/secure/engineering.dm | 17 ++++++++--------- 1 file changed, 8 insertions(+), 9 deletions(-) diff --git a/code/game/objects/structures/crates_lockers/closets/secure/engineering.dm b/code/game/objects/structures/crates_lockers/closets/secure/engineering.dm index fde5725329..579b1444a5 100644 --- a/code/game/objects/structures/crates_lockers/closets/secure/engineering.dm +++ b/code/game/objects/structures/crates_lockers/closets/secure/engineering.dm @@ -104,26 +104,25 @@ /obj/structure/closet/secure_closet/engineering_chief/empty -/obj/structure/closet/secure_closet/engineering_electrical/empty - -/obj/structure/closet/secure_closet/engineering_welding/empty - -/obj/structure/closet/secure_closet/engineering_personal/empty - -/obj/structure/closet/secure_closet/atmospherics/empty - - /obj/structure/closet/secure_closet/engineering_chief/empty/PopulateContents() return +/obj/structure/closet/secure_closet/engineering_electrical/empty + /obj/structure/closet/secure_closet/engineering_electrical/empty/PopulateContents() return +/obj/structure/closet/secure_closet/engineering_welding/empty + /obj/structure/closet/secure_closet/engineering_welding/empty/PopulateContents() return +/obj/structure/closet/secure_closet/engineering_personal/empty + /obj/structure/closet/secure_closet/engineering_personal/empty/PopulateContents() return +/obj/structure/closet/secure_closet/atmospherics/empty + /obj/structure/closet/secure_closet/atmospherics/empty/PopulateContents() return From a3ee3fe82698d1635b549b6bbec7042bd641a5dd Mon Sep 17 00:00:00 2001 From: CitadelStationBot Date: Tue, 31 Dec 2019 11:01:26 -0600 Subject: [PATCH 150/192] Automatic changelog generation for PR #10349 [ci skip] --- html/changelogs/AutoChangeLog-pr-10349.yml | 6 ++++++ 1 file changed, 6 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-10349.yml diff --git a/html/changelogs/AutoChangeLog-pr-10349.yml b/html/changelogs/AutoChangeLog-pr-10349.yml new file mode 100644 index 0000000000..fad3179c6e --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-10349.yml @@ -0,0 +1,6 @@ +author: "KathrinBailey" +delete-after: True +changes: + - rscadd: "Empty engineering lockers for mappers." + - rscadd: "Industrial welding tools to the engineer welding locker." + - rscdel: "Removed the multitool, airlock painter, mechanical toolbox, brown sneakers, hazard vest and airlock painter from the CE's locker." From 67fcdeebb3a957f3778eb364e98f65eb29d5e190 Mon Sep 17 00:00:00 2001 From: Putnam Date: Tue, 31 Dec 2019 12:43:37 -0800 Subject: [PATCH 151/192] Made loading saved votes not automatic --- code/controllers/subsystem/vote.dm | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/code/controllers/subsystem/vote.dm b/code/controllers/subsystem/vote.dm index dffe4c3dac..32a85a306b 100644 --- a/code/controllers/subsystem/vote.dm +++ b/code/controllers/subsystem/vote.dm @@ -366,9 +366,6 @@ SUBSYSTEM_DEF(vote) C.player_details.player_actions += V V.Grant(C.mob) generated_actions += V - if((vote_type in SSpersistence.saved_votes) && (C.ckey in SSpersistence.saved_votes[vote_type])) - voted[C.ckey] = SSpersistence.saved_votes[vote_type][C.ckey] - saved += C.ckey if(forced) var/datum/browser/popup = new(C, "vote", "Voting Panel",nwidth=600,nheight=700) popup.set_window_options("can_close=0") @@ -432,6 +429,8 @@ SUBSYSTEM_DEF(vote) . += "(Save vote)" else . += "(Saved!)" + if((mode in SSpersistence.saved_votes) && (C.ckey in SSpersistence.saved_votes[mode])) + . += "(Load vote from save)" . += "(Reset votes)" if(admin) . += "(Cancel Vote) " @@ -499,6 +498,10 @@ SUBSYSTEM_DEF(vote) SSpersistence.saved_votes[mode] = list() SSpersistence.saved_votes[mode][usr.ckey] = voted[usr.ckey] saved += usr.ckey + if("load") + if((mode in SSpersistence.saved_votes) && (usr.ckey in SSpersistence.saved_votes[mode])) + voted[usr.ckey] = SSpersistence.saved_votes[mode][usr.ckey] + saved += usr.ckey else submit_vote(round(text2num(href_list["vote"]))) usr.vote() From 811f1f37681302082cf18f49c4b504be28cd693d Mon Sep 17 00:00:00 2001 From: CitadelStationBot Date: Tue, 31 Dec 2019 16:54:56 -0600 Subject: [PATCH 152/192] Automatic changelog generation for PR #9856 [ci skip] --- html/changelogs/AutoChangeLog-pr-9856.yml | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-9856.yml diff --git a/html/changelogs/AutoChangeLog-pr-9856.yml b/html/changelogs/AutoChangeLog-pr-9856.yml new file mode 100644 index 0000000000..697c1c78f5 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-9856.yml @@ -0,0 +1,5 @@ +author: "Ghommie" +delete-after: True +changes: + - rscadd: "Refactored code to allow all living mobs to use shields and not only humans." + - tweak: "Monkys will now retaliate against aliens attacking them (as if they even posed a threat to start with)." From 850a407cf4772641f690f0e2fa6ba3c3625fb0fd Mon Sep 17 00:00:00 2001 From: Putnam Date: Tue, 31 Dec 2019 16:37:33 -0800 Subject: [PATCH 153/192] majority judgement time --- code/__DEFINES/vote.dm | 3 +- code/controllers/subsystem/ticker.dm | 2 +- code/controllers/subsystem/vote.dm | 80 +++++++++++++++++++++++++++- 3 files changed, 81 insertions(+), 4 deletions(-) diff --git a/code/__DEFINES/vote.dm b/code/__DEFINES/vote.dm index aeec9bf8fd..2537cf956d 100644 --- a/code/__DEFINES/vote.dm +++ b/code/__DEFINES/vote.dm @@ -1,5 +1,6 @@ -// Voting stuff (move this somewhere else eventually probs) #define PLURALITY_VOTING 0 #define APPROVAL_VOTING 1 #define RANKED_CHOICE_VOTING 2 +#define SCORE_VOTING 3 +#define SCORE_OPTIONS 5 diff --git a/code/controllers/subsystem/ticker.dm b/code/controllers/subsystem/ticker.dm index 3b57e15d48..b11cb5001a 100755 --- a/code/controllers/subsystem/ticker.dm +++ b/code/controllers/subsystem/ticker.dm @@ -481,7 +481,7 @@ SUBSYSTEM_DEF(ticker) SSticker.modevoted = TRUE var/dynamic = CONFIG_GET(flag/dynamic_voting) if(dynamic) - SSvote.initiate_vote("dynamic","server",hideresults=TRUE,votesystem=RANKED_CHOICE_VOTING,forced=TRUE) + SSvote.initiate_vote("dynamic","server",hideresults=TRUE,votesystem=SCORE_VOTING,forced=TRUE) else SSvote.initiate_vote("roundtype","server",hideresults=TRUE,votesystem=PLURALITY_VOTING,forced=TRUE) diff --git a/code/controllers/subsystem/vote.dm b/code/controllers/subsystem/vote.dm index 32a85a306b..fa4ef47819 100644 --- a/code/controllers/subsystem/vote.dm +++ b/code/controllers/subsystem/vote.dm @@ -135,6 +135,43 @@ SUBSYSTEM_DEF(vote) choices[choices[i]]++ // higher shortest path = better candidate, so we add to choices here // choices[choices[i]] is the schulze ranking, here, rather than raw vote numbers +/datum/controller/subsystem/vote/proc/calculate_majority_judgement_vote(var/blackbox_text) + // https://en.wikipedia.org/wiki/Majority_judgment + var/list/scores_by_choice = list() + for(var/choice in choices) + scores_by_choice[choice] = list() + for(var/ckey in voted) + var/list/this_vote = voted[ckey] + for(var/choice in this_vote) + sorted_insert(scores_by_choice[choice],this_vote[choice],/proc/cmp_numeric_asc) + for(var/score_name in scores_by_choice) + var/list/score = scores_by_choice[score_name] + for(var/i in score.len) + SSblackbox.record_feedback("nested_tally","voting",1,list(blackbox_text,"Scores",score_name,score[i])) + if(score.len == 0) + scores_by_choice -= score_name + while(scores_by_choice.len > 1) + var/highest_median = 0 + for(var/score_name in scores_by_choice) + var/list/score = scores_by_choice[score_name] + if(!score.len) + scores_by_choice -= score_name + continue + var/median = score[max(1,round(score.len/2))] + if(median >= highest_median) + highest_median = median + else + scores_by_choice -= score_name + for(var/score_name in scores_by_choice) // after removals + var/list/score = scores_by_choice[score_name] + var/median_pos = max(1,round(score.len/2)) + score.Cut(median_pos,median_pos+1) + choices[score_name]++ + if(score.len == 0) + choices[score_name] += 100 // we're in a tie situation--just go with the first one + return + choices[choices[scores_by_choice[1]]] += 100 // hardcoded make-sure-this-guy-is-winner + /datum/controller/subsystem/vote/proc/announce_result() var/vote_title_text var/text @@ -146,6 +183,8 @@ SUBSYSTEM_DEF(vote) vote_title_text = "[capitalize(mode)] Vote" if(vote_system == RANKED_CHOICE_VOTING) calculate_condorcet_votes(vote_title_text) + if(vote_system == SCORE_VOTING) + calculate_majority_judgement_vote(vote_title_text) var/list/winners = get_result() var/was_roundtype_vote = mode == "roundtype" || mode == "dynamic" if(winners.len > 0) @@ -247,7 +286,7 @@ SUBSYSTEM_DEF(vote) return . -/datum/controller/subsystem/vote/proc/submit_vote(vote) +/datum/controller/subsystem/vote/proc/submit_vote(vote, score = 0) if(mode) if(CONFIG_GET(flag/no_dead_vote) && usr.stat == DEAD && !usr.client.holder) return 0 @@ -286,6 +325,12 @@ SUBSYSTEM_DEF(vote) voted[usr.ckey] = list() voted[usr.ckey] += vote saved -= usr.ckey + if(SCORE_VOTING) + if(!(usr.ckey in voted)) + voted += usr.ckey + voted[usr.ckey] = list() + voted[usr.ckey][choices[vote]] = score + saved -= usr.ckey return 0 /datum/controller/subsystem/vote/proc/initiate_vote(vote_type, initiator_key, hideresults, votesystem = PLURALITY_VOTING, forced = FALSE)//CIT CHANGE - adds hideresults argument to votes to allow for obfuscated votes @@ -397,6 +442,8 @@ SUBSYSTEM_DEF(vote) . += "