From 0b7f81603356ba7f52387b2b89230ec93a358889 Mon Sep 17 00:00:00 2001 From: Cruix Date: Fri, 30 Mar 2018 12:09:19 -0700 Subject: [PATCH 1/2] Added a new ability to sentient diseases --- code/__DEFINES/components.dm | 12 ++- code/__HELPERS/type2type.dm | 21 +++++ code/datums/components/infective.dm | 82 ++++++++++++++++-- code/datums/diseases/_MobProcs.dm | 12 ++- code/game/atoms_movable.dm | 2 +- code/game/objects/items.dm | 4 +- .../objects/structures/beds_chairs/chair.dm | 2 + .../antagonists/disease/disease_abilities.dm | 43 ++++++++- code/modules/food_and_drinks/food/snacks.dm | 13 +-- .../mob/living/carbon/carbon_defense.dm | 1 + .../mob/living/carbon/human/human_defense.dm | 2 + code/modules/mob/living/living_defense.dm | 1 + icons/mob/actions/actions_minor_antag.dmi | Bin 13836 -> 15104 bytes 13 files changed, 172 insertions(+), 23 deletions(-) diff --git a/code/__DEFINES/components.dm b/code/__DEFINES/components.dm index 51579b4d88..deca4df437 100644 --- a/code/__DEFINES/components.dm +++ b/code/__DEFINES/components.dm @@ -71,7 +71,8 @@ #define COMSIG_MOVABLE_MOVED "movable_moved" //from base of atom/movable/Moved(): (/atom, dir) #define COMSIG_MOVABLE_CROSSED "movable_crossed" //from base of atom/movable/Crossed(): (/atom/movable) #define COMSIG_MOVABLE_COLLIDE "movable_collide" //from base of atom/movable/Collide(): (/atom) -#define COMSIG_MOVABLE_IMPACT "movable_impact" //from base of atom/movable/throw_impact(): (/atom, throwingdatum) +#define COMSIG_MOVABLE_IMPACT "movable_impact" //from base of atom/movable/throw_impact(): (/atom/hit_atom, /datum/thrownthing/throwingdatum) +#define COMSIG_MOVABLE_IMPACT_ZONE "item_impact_zone" //from base of mob/living/hitby(): (mob/living/target, hit_zone) #define COMSIG_MOVABLE_BUCKLE "buckle" //from base of atom/movable/buckle_mob(): (mob, force) #define COMSIG_MOVABLE_UNBUCKLE "unbuckle" //from base of atom/movable/unbuckle_mob(): (mob, force) @@ -80,7 +81,13 @@ #define COMSIG_ITEM_ATTACK_SELF "item_attack_self" //from base of obj/item/attack_self(): (/mob) #define COMSIG_ITEM_ATTACK_OBJ "item_attack_obj" //from base of obj/item/attack_obj(): (/obj, /mob) #define COMSIG_ITEM_EQUIPPED "item_equip" //from base of obj/item/equipped(): (/mob/equipper, slot) +<<<<<<< HEAD #define COMSIG_ITEM_DROPPED "item_drop" //from base of obj/item/dropped(): (/mob/dropper) +======= +#define COMSIG_ITEM_DROPPED "item_drop" +#define COMSIG_ITEM_PICKUP "item_pickup" //from base of obj/item/pickup(): (/mob/taker) +#define COMSIG_ITEM_ATTACK_ZONE "item_attack_zone" //from base of mob/living/carbon/attacked_by(): (mob/living/carbon/target, mob/living/user, hit_zone) +>>>>>>> 251c542... Added a new ability to sentient diseases (#36548) // /obj/item/clothing signals #define COMSIG_SHOES_STEP_ACTION "shoes_step_action" //from base of obj/item/clothing/shoes/proc/step_action(): () @@ -101,3 +108,6 @@ //Wet floors #define COMSIG_TURF_IS_WET "check_turf_wet" //(): Returns bitflags of wet values. #define COMSIG_TURF_MAKE_DRY "make_turf_try" //(max_strength, immediate, duration_decrease = INFINITY): Returns bool. + +//Food +#define COMSIG_FOOD_EATEN "food_eaten" //from base of obj/item/reagent_containers/food/snacks/attack(): (mob/living/eater, mob/feeder) diff --git a/code/__HELPERS/type2type.dm b/code/__HELPERS/type2type.dm index d4d69df017..79f6a2c007 100644 --- a/code/__HELPERS/type2type.dm +++ b/code/__HELPERS/type2type.dm @@ -398,7 +398,28 @@ return covered_parts +/proc/slot2body_zone(slot) + switch(slot) + if(slot_back, slot_wear_suit, slot_w_uniform, slot_belt, slot_wear_id) + return BODY_ZONE_CHEST + if(slot_gloves, slot_hands, slot_handcuffed) + return pick(BODY_ZONE_PRECISE_L_HAND, BODY_ZONE_PRECISE_R_HAND) + + if(slot_head, slot_neck, slot_neck, slot_ears) + return BODY_ZONE_HEAD + + if(slot_wear_mask) + return BODY_ZONE_PRECISE_MOUTH + + if(slot_glasses) + return BODY_ZONE_PRECISE_EYES + + if(slot_shoes) + return pick(BODY_ZONE_PRECISE_R_FOOT, BODY_ZONE_PRECISE_L_FOOT) + + if(slot_legcuffed) + return pick(BODY_ZONE_L_LEG, BODY_ZONE_R_LEG) //adapted from http://www.tannerhelland.com/4435/convert-temperature-rgb-algorithm-code/ /proc/heat2colour(temp) diff --git a/code/datums/components/infective.dm b/code/datums/components/infective.dm index 521d9ece2c..f434ed6f52 100644 --- a/code/datums/components/infective.dm +++ b/code/datums/components/infective.dm @@ -1,12 +1,78 @@ /datum/component/infective + dupe_mode = COMPONENT_DUPE_ALLOWED var/list/datum/disease/diseases //make sure these are the static, non-processing versions! + var/expire_time + var/min_clean_strength = CLEAN_WEAK -/datum/component/infective/Initialize(list/datum/disease/_diseases) - RegisterSignal(COMSIG_MOVABLE_CROSSED, .proc/Infect) - diseases = _diseases +/datum/component/infective/Initialize(list/datum/disease/_diseases, expire_in) + if(islist(_diseases)) + diseases = diseases + else + diseases = list(_diseases) + if(expire_in) + expire_time = world.time + expire_in + QDEL_IN(src, expire_in) + RegisterSignal(COMSIG_MOVABLE_BUCKLE, .proc/try_infect_buckle) + RegisterSignal(COMSIG_MOVABLE_COLLIDE, .proc/try_infect_collide) + RegisterSignal(COMSIG_MOVABLE_CROSSED, .proc/try_infect_crossed) + RegisterSignal(COMSIG_ITEM_ATTACK_ZONE, .proc/try_infect_attack_zone) + RegisterSignal(COMSIG_ITEM_ATTACK, .proc/try_infect_attack) + RegisterSignal(COMSIG_ITEM_EQUIPPED, .proc/try_infect_equipped) + RegisterSignal(COMSIG_MOVABLE_IMPACT_ZONE, .proc/try_infect_impact_zone) + RegisterSignal(COMSIG_FOOD_EATEN, .proc/try_infect_eat) + RegisterSignal(COMSIG_COMPONENT_CLEAN_ACT, .proc/clean) -/datum/component/infective/proc/Infect(atom/movable/AM) - var/mob/living/carbon/victim = AM - if(istype(victim)) - for(var/datum/disease/D in diseases) - victim.ContactContractDisease(D, "feet") \ No newline at end of file +/datum/component/infective/proc/try_infect_eat(mob/living/eater, mob/living/feeder) + for(var/V in diseases) + eater.ForceContractDisease(V) + try_infect(feeder, BODY_ZONE_L_ARM) + +/datum/component/infective/proc/clean(clean_strength) + if(clean_strength >= min_clean_strength) + qdel(src) + +/datum/component/infective/proc/try_infect_buckle(mob/M, force) + if(isliving(M)) + try_infect(M) + +/datum/component/infective/proc/try_infect_collide(atom/A) + var/atom/movable/P = parent + if(P.throwing) + //this will be handled by try_infect_impact_zone() + return + if(isliving(A)) + try_infect(A) + +/datum/component/infective/proc/try_infect_impact_zone(mob/living/target, hit_zone) + try_infect(target, hit_zone) + +/datum/component/infective/proc/try_infect_attack_zone(mob/living/carbon/target, mob/living/user, hit_zone) + try_infect(user, BODY_ZONE_L_ARM) + try_infect(target, hit_zone) + +/datum/component/infective/proc/try_infect_attack(mob/living/target, mob/living/user) + if(!iscarbon(target)) //this case will be handled by try_infect_attack_zone + try_infect(target) + try_infect(user, BODY_ZONE_L_ARM) + +/datum/component/infective/proc/try_infect_equipped(mob/living/L, slot) + var/old_permeability + if(isitem(parent)) + //if you are putting an infective item on, it obviously will not protect you, so set its permeability high enough that it will never block ContactContractDisease() + var/obj/item/I = parent + old_permeability = I.permeability_coefficient + I.permeability_coefficient = 1.01 + + try_infect(L, slot2body_zone(slot)) + + if(isitem(parent)) + var/obj/item/I = parent + I.permeability_coefficient = old_permeability + +/datum/component/infective/proc/try_infect_crossed(atom/movable/M) + if(isliving(M)) + try_infect(M, BODY_ZONE_PRECISE_L_FOOT) + +/datum/component/infective/proc/try_infect(mob/living/L, target_zone) + for(var/V in diseases) + L.ContactContractDisease(V, target_zone) diff --git a/code/datums/diseases/_MobProcs.dm b/code/datums/diseases/_MobProcs.dm index 1a28c3eadf..7955f81e66 100644 --- a/code/datums/diseases/_MobProcs.dm +++ b/code/datums/diseases/_MobProcs.dm @@ -46,8 +46,12 @@ if(satiety>0 && prob(satiety/10)) // positive satiety makes it harder to contract the disease. return + + //Lefts and rights do not matter for arms and legs, they both run the same checks if(!target_zone) - target_zone = pick(head_ch;BODY_ZONE_HEAD,body_ch;"body",hands_ch;"hands",feet_ch;"feet") + target_zone = pick(head_ch;BODY_ZONE_HEAD,body_ch;BODY_ZONE_CHEST,hands_ch;BODY_ZONE_L_ARM,feet_ch;BODY_ZONE_L_LEG) + else + target_zone = check_zone(target_zone) if(ishuman(src)) var/mob/living/carbon/human/H = src @@ -63,14 +67,14 @@ if(passed && isobj(H.wear_neck)) Cl = H.wear_neck passed = prob((Cl.permeability_coefficient*100) - 1) - if("body") + if(BODY_ZONE_CHEST) if(isobj(H.wear_suit)) Cl = H.wear_suit passed = prob((Cl.permeability_coefficient*100) - 1) if(passed && isobj(slot_w_uniform)) Cl = slot_w_uniform passed = prob((Cl.permeability_coefficient*100) - 1) - if("hands") + if(BODY_ZONE_L_ARM, BODY_ZONE_R_ARM) if(isobj(H.wear_suit) && H.wear_suit.body_parts_covered&HANDS) Cl = H.wear_suit passed = prob((Cl.permeability_coefficient*100) - 1) @@ -78,7 +82,7 @@ if(passed && isobj(H.gloves)) Cl = H.gloves passed = prob((Cl.permeability_coefficient*100) - 1) - if("feet") + if(BODY_ZONE_L_LEG, BODY_ZONE_R_LEG) if(isobj(H.wear_suit) && H.wear_suit.body_parts_covered&FEET) Cl = H.wear_suit passed = prob((Cl.permeability_coefficient*100) - 1) diff --git a/code/game/atoms_movable.dm b/code/game/atoms_movable.dm index 49407327f5..3ecdbb61a1 100644 --- a/code/game/atoms_movable.dm +++ b/code/game/atoms_movable.dm @@ -400,7 +400,7 @@ SSspacedrift.processing[src] = src return 1 -/atom/movable/proc/throw_impact(atom/hit_atom, throwingdatum) +/atom/movable/proc/throw_impact(atom/hit_atom, datum/thrownthing/throwingdatum) set waitfor = 0 SendSignal(COMSIG_MOVABLE_IMPACT, hit_atom, throwingdatum) return hit_atom.hitby(src) diff --git a/code/game/objects/items.dm b/code/game/objects/items.dm index 92a4a93243..8c4c9a587e 100644 --- a/code/game/objects/items.dm +++ b/code/game/objects/items.dm @@ -440,7 +440,6 @@ GLOBAL_VAR_INIT(rpg_loot_items, FALSE) var/datum/action/A = X if(item_action_slot_check(slot, user)) //some items only give their actions buttons when in a specific slot. A.Grant(user) - SendSignal(COMSIG_ITEM_EQUIPPED,user,slot) item_flags |= IN_INVENTORY //sometimes we only want to grant the item's action if it's equipped in a specific slot. @@ -571,8 +570,9 @@ GLOBAL_VAR_INIT(rpg_loot_items, FALSE) else return -/obj/item/throw_impact(atom/A) +/obj/item/throw_impact(atom/A, datum/thrownthing/throwingdatum) if(A && !QDELETED(A)) + SendSignal(COMSIG_MOVABLE_IMPACT, A, throwingdatum) if(is_hot() && isliving(A)) var/mob/living/L = A L.IgniteMob() diff --git a/code/game/objects/structures/beds_chairs/chair.dm b/code/game/objects/structures/beds_chairs/chair.dm index 54b10a6203..93b8635dc5 100644 --- a/code/game/objects/structures/beds_chairs/chair.dm +++ b/code/game/objects/structures/beds_chairs/chair.dm @@ -228,6 +228,7 @@ return usr.visible_message("[usr] grabs \the [src.name].", "You grab \the [src.name].") var/C = new item_chair(loc) + TransferComponents(C) usr.put_in_hands(C) qdel(src) @@ -279,6 +280,7 @@ user.visible_message("[user] rights \the [src.name].", "You right \the [name].") var/obj/structure/chair/C = new origin_type(get_turf(loc)) + TransferComponents(C) C.setDir(dir) qdel(src) diff --git a/code/modules/antagonists/disease/disease_abilities.dm b/code/modules/antagonists/disease/disease_abilities.dm index 8172d58d8e..9a792749a0 100644 --- a/code/modules/antagonists/disease/disease_abilities.dm +++ b/code/modules/antagonists/disease/disease_abilities.dm @@ -7,6 +7,7 @@ is currently following. GLOBAL_LIST_INIT(disease_ability_singletons, list( new /datum/disease_ability/action/cough(), new /datum/disease_ability/action/sneeze(), + new /datum/disease_ability/action/infect(), new /datum/disease_ability/symptom/cough(), new /datum/disease_ability/symptom/sneeze(),\ new /datum/disease_ability/symptom/hallucigen(), @@ -165,7 +166,6 @@ GLOBAL_LIST_INIT(disease_ability_singletons, list( short_desc = "Force the host you are following to sneeze, spreading your infection to those in front of them." long_desc = "Force the host you are following to sneeze with extra force, spreading your infection to any victims in a 4 meter cone in front of your host.
Cooldown: 20 seconds" - /datum/action/cooldown/disease_sneeze name = "Sneeze" icon_icon = 'icons/mob/actions/actions_minor_antag.dmi' @@ -194,6 +194,47 @@ GLOBAL_LIST_INIT(disease_ability_singletons, list( StartCooldown() return TRUE + +/datum/disease_ability/action/infect + name = "Secrete Infection" + actions = list(/datum/action/cooldown/disease_infect) + cost = 2 + required_total_points = 3 + short_desc = "Cause all objects your host is touching to become infectious for a limited time, spreading your infection to anyone who touches them." + long_desc = "Cause the host you are following to excrete an infective substance from their pores, causing all objects touching their skin to transmit your infection to anyone who touches them for the next 30 seconds. This includes the floor, if they are not wearing shoes, and any items they are holding, if they are not wearing gloves.
Cooldown: 40 seconds" + +/datum/action/cooldown/disease_infect + name = "Secrete Infection" + icon_icon = 'icons/mob/actions/actions_minor_antag.dmi' + button_icon_state = "infect" + desc = "Cause the host you are following to excrete an infective substance from their pores, causing all objects touching their skin to transmit your infection to anyone who touches them for the next 30 seconds.
Cooldown: 40 seconds" + cooldown_time = 400 + +/datum/action/cooldown/disease_infect/Trigger() + if(!..()) + return FALSE + var/mob/camera/disease/D = owner + var/mob/living/carbon/human/H = D.following_host + if(!H) + return FALSE + for(var/V in H.get_equipped_items(FALSE)) + var/obj/O = V + O.AddComponent(/datum/component/infective, D.disease_template, 300) + //no shoes? infect the floor. + if(!H.shoes) + var/turf/T = get_turf(H) + if(T && !isspaceturf(T)) + T.AddComponent(/datum/component/infective, D.disease_template, 300) + //no gloves? infect whatever we are holding. + if(!H.gloves) + for(var/V in H.held_items) + if(!V) + continue + var/obj/O = V + O.AddComponent(/datum/component/infective, D.disease_template, 300) + StartCooldown() + return TRUE + //passive symptom abilities /datum/disease_ability/symptom/cough diff --git a/code/modules/food_and_drinks/food/snacks.dm b/code/modules/food_and_drinks/food/snacks.dm index c8b9a2bd17..c6a6a11c1a 100644 --- a/code/modules/food_and_drinks/food/snacks.dm +++ b/code/modules/food_and_drinks/food/snacks.dm @@ -37,20 +37,20 @@ else ..() -/obj/item/reagent_containers/food/snacks/proc/On_Consume() - if(!usr) +/obj/item/reagent_containers/food/snacks/proc/On_Consume(mob/living/eater) + if(!eater) return if(!reagents.total_volume) - var/obj/item/trash_item = generate_trash(usr) + var/obj/item/trash_item = generate_trash(eater) qdel(src) - usr.put_in_hands(trash_item) + eater.put_in_hands(trash_item) /obj/item/reagent_containers/food/snacks/attack_self(mob/user) return -/obj/item/reagent_containers/food/snacks/attack(mob/living/M, mob/user, def_zone) +/obj/item/reagent_containers/food/snacks/attack(mob/living/M, mob/living/user, def_zone) if(user.a_intent == INTENT_HARM) return ..() if(!eatverb) @@ -109,11 +109,12 @@ M.satiety -= junkiness playsound(M.loc,'sound/items/eatfood.ogg', rand(10,50), 1) if(reagents.total_volume) + SendSignal(COMSIG_FOOD_EATEN, M, user) var/fraction = min(bitesize / reagents.total_volume, 1) reagents.reaction(M, INGEST, fraction) reagents.trans_to(M, bitesize) bitecount++ - On_Consume() + On_Consume(M) checkLiked(fraction, M) return 1 diff --git a/code/modules/mob/living/carbon/carbon_defense.dm b/code/modules/mob/living/carbon/carbon_defense.dm index 75233a70c1..54ad7da184 100644 --- a/code/modules/mob/living/carbon/carbon_defense.dm +++ b/code/modules/mob/living/carbon/carbon_defense.dm @@ -75,6 +75,7 @@ affecting = get_bodypart(ran_zone(user.zone_selected)) if(!affecting) //missing limb? we select the first bodypart (you can never have zero, because of chest) affecting = bodyparts[1] + I.SendSignal(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 diff --git a/code/modules/mob/living/carbon/human/human_defense.dm b/code/modules/mob/living/carbon/human/human_defense.dm index b744630a56..17971bd4d9 100644 --- a/code/modules/mob/living/carbon/human/human_defense.dm +++ b/code/modules/mob/living/carbon/human/human_defense.dm @@ -173,6 +173,8 @@ affecting = get_bodypart(ran_zone(user.zone_selected)) var/target_area = parse_zone(check_zone(user.zone_selected)) //our intended target + I.SendSignal(COMSIG_ITEM_ATTACK_ZONE, src, user, affecting) + SSblackbox.record_feedback("nested tally", "item_used_for_combat", 1, list("[I.force]", "[I.type]")) SSblackbox.record_feedback("tally", "zone_targeted", 1, target_area) diff --git a/code/modules/mob/living/living_defense.dm b/code/modules/mob/living/living_defense.dm index 085f43075c..37c2af605e 100644 --- a/code/modules/mob/living/living_defense.dm +++ b/code/modules/mob/living/living_defense.dm @@ -67,6 +67,7 @@ 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() + I.SendSignal(COMSIG_MOVABLE_IMPACT_ZONE, src, zone) dtype = I.damtype if (I.throwforce > 0) //If the weapon's throwforce is greater than zero... diff --git a/icons/mob/actions/actions_minor_antag.dmi b/icons/mob/actions/actions_minor_antag.dmi index 20daacd32c4a930f907740e1c8803ab9b2d839b1..66a3e06f312421df6a9478adf42c77c5845929a8 100644 GIT binary patch literal 15104 zcmYLwbzD@>7xvvv-jRJXU?4GIWu!+W3^r@Qb@ucCfPjyQX+17|{CH90r@Aqh;sf6gzbWuC+iy;Eg?qcP&N!I% z_>p}7v{IbXYqV7okG4{4sj|>_ds-@`;N$WmL4X+Z^V;9jS9-X)ZpBgAj@rg$JzK7+ z--fY-50r)%E}wM!l{_aS{pCfZ&yYFj+LcxSu@Dy~>j}&6VRW=nE>^kHojVC7&6NAZ ztJSx*X1H`g$Hj-wXa9*HGaF&F>7Z^LC=$Tn%z;l@{yd*wjkHZtb~`6A$;JCmX$m_J zVpA%cvdE^35}!;u^HQm(ytcPS`U^?~cinE0_^f)^<%9g> z)}sikpQ1Q1EB1~!QhObdhid^IMPg0sm|nLyM2GzQ900%wyi%0Y3;1|w9u%zm2l-gQ zqLJRb+gYBW!vRulv*c0$k#e|Di`&1hcx@`8O&s^V5JB*Sk-ulm-2#RaPFr-IR5CRw zhKtPz=FY}x%n%{NDR<}SWN}BRrJdh0zthxw?b9vv^6WnNY^bekJTHCwq3hU(BT_yL zSbA^9`w1jltfh5edvFijh@w3l!AH?Ve186U^PxgxkW=;bZG$DKH5mr9VwL;_!EAQl zHCtVT)PlVzC87SS4)5iQi&}XJG)xPQ_odNSr8`_ezYC@EtRn}nj*oSfI0B*M_yBcs z?O$qh5g&waGI|jQEJ7!Q9OAanIMh3}xw(0`IOJ=%h_2AtmOP9E5?4RAKtkeh@nqL8xR`6H%GiWgDeL!n|h z>4;dBe!q*@7UV&)aY+)LCB9n+uY_kho-9 zaOrrCC2uyuj7L+OZS>gvQ1c;}_uwAsrl_nO)F08jvuGPCB1sN@8r)TO?2TuYj4b?{ z%4c@*!1bY3oT+#XC9bHrjSeMn&cAHR5e#pY`2kd1w8{$MucFD8=UsMMqdyUNT>lZD z?@?7>KWXp3X;6$3G%>L6uGl*AD5549sKD`@-cpUcvpcRJBP;w;1Rr1&d5(rZdRQRh zPWqq_xBK5dHM3#b(3uJmT5mbD1hFEt4?7 zB<#xOC}D6`=hN^PA`%(`z{$yD@KLoEseUV%v%V!pX*GJ`^B8Qn`i0v@wdfL)Yif2i<=eQ^|CW3kTby&qcAD{jIu)9N8Q$l3m`c|QBaRLP z3~%7&E0n(TSBvM!&PhrXHoRt@-8?N!X3L@am;eI0rterFdM4#cL3vTwQM&22UZ*bU zqOZXG=*@cH#R%&D?BzhLHSeI!$d)Z1$QW{YCdqxFG1iYPf#k+*i~VA`TrH_hp216I ztN!f>O-M2t?B^ZK8E;j;f#^C7X}I;6C)Q=XZJqEscJSUm2@Mz^KZ_(Un<sSn~ND z-YL_~x2o3CM}3jGxZMnN$OMU0|KXPjYoTV?8NG{GQ;_e|HrI_lhIR~_shKf(zE6Mv zb&X)%XSJsoJWv7pux_;EqT0}IQ#r4-uf~m8gAK!XUBK)i2+j`;%EK6XPr@G(oL1Xz zEjAjKhtcGx0o>E`5=L~&1o;&{m$4!Np3f(ub(QP8{L}B^^c4kjk6VV}%E>|o))6CB z(CW_x0nH7-^}TEXJhSJsX>6AouNJByk!5<@vNb(k>6BC<#o@4Qy5Qgvb;22jIoNP_5$6VlMOx3! zCd8kvxsu~XTsxlCLv9rOTBT5+2snEfqRJ;pcDKy$H^k(-j%cplCDap_)y~+pow*@H zk0)M(N&I?T%K)y^k)R8k(D1qch}0PhBPKadIjVJT6Ql)ygni2gfuDU+5k#;p$-aI~ z@aO0Plj{T5gX+SPh}RM;wR*FM|CzAEq^ki-s=E+B|NzOQK#`A>EZ#Uuww zD($MXHNds$IVsT=y9a^jM#EuMI;uCG-XoOh8!=HWVg##j`PT4{AD_gby)U?4KN{(` zLu~WPd$V7jWJqU6ale0)w6o|Nc7uD~uv~b1{3LdYOSn1Y?bLc7JsNYJ1E*v!Hl-OO zpA!`BW7u!L<%qcIC-=!l9!~n(2g9jv4A6_Z`DI`hU5{r6)J6qT?<3!fjqX|zpw+pV2sRC}VtWZA6&oTm!sKK-vN48+} z9?W#{S-77qT@|+adjJ|v`r4G%N}n0a%c=*-R*x7bX}RjdMX;C1l%y6 zlctD0^re*$k@6l1Zn1l1j60$gC+Elj$6-1gWa>PH5C7e{wSJrXu_!1e&g35 z8+LQiRjYX%gL?IL?H)i?A0F=?Dxg)8&`%h>C^?>q^7TnOk7R}28k8Jbg7y;7%3O7CNCugrY?=7kz)-5_A*TB7LUf2J$ z{C%E1RiE6ZCUbHZa(f5i)dFP1TGP<#xc+|!8>FFrHoeq0e%oO5J;bBc+r?SmHh1)b z?sFjuK8u4BIA$e<36f&?543VYKBxvm`rEA5V}!tTX#Vknor z0Qlc9ge??-mZq@qBGA3mm>Ge8Wh_~sMQEu8p9Wry`R?AAMhE1eedwf1H{c!E`~z9} zD>OpYaTTBgf4%|wvYBv--h=vIlF&B5O~O>VnckD3wL7mpJc!2RrJsr%p0Rz|!A zahzn)Pi0wgWqFR!zWZX`iy4jJ140v7k~v?>VKiNn0Y}5MoUa$b z#L2Nj({BU#xxP-&a9F}@B~R6pMG_Q? zPteiPjdZE7^j2u(g_6t+(1E;!8Iv-%ScJm8Vx3=OwLeNCFApL zvjaVGHnB7XYwnOnU9oM{8r6sYZuMr)Pfu5fj*eDfArUA%Iq~|Z5v{04nc-I>Z-fb* zr7JWX<447JlOGit<~tP}t3{w+^$y7Au_j&fdyhXL_r!$1w)Fa|Rb{8*BaomXspmOy zvBl5Z+dos8w+Nh0k?#?b_(s#pDgYZbeiP1rTeIw3wkd$@-A*PnZiBByj$ns6kM zBP8l=)rgrg);NV34zJ(v`+rNvj&#$ai5L0-{Zbl8D7IzeEn z9ti|q#Ew-AU`7Tg^Cs24w}v7dZSQaX>LF?nM%iiqw82B9Yob)KNouq)S7rO)mp^dx zci+>*|3A`0XpxQ+37B2`)0|s^;`y?6>I>-?5n1>|+EBc;mf!O%P|lbj_v&@JQti{O zg4%$2*(BlNY;6GJrSdvrfP$;Ii4H?9<>8oYS}uQ(3I`4~k;4^+QF!%%=WM=p*+`>w z*_ceu(&etg@fLX*pDXD2R9H9@`OgxLx{XH0`Z3BfCP#0##)pQADS1r#gWtS))8Szq zbGyNtglG`RT<~0|w?*&WOxAgh)Y+oWZvwJhe zvXq>5*NWKF<0Wf_h_J0EN8wdY&UibKa!b=7M;28gd>L>Ml{dm|&B18ewoUixvQva2 zTB4W*gmXlF=()JLd6Enb3~aVWaycf*R<-#iP3mpXrMy;UGqSUpB_)^EpTvsk=;~^l znl9Ep8w*oqa=`Z-1Yrf`>;BBvA&yBg3oFjc`YFK?8IA#q8b5D>d@F=%M%3KP1-dX^ zFAuyaV0#uYB$$s8=g*ZmfOJLXL7fvVRMwQ3kB>f5%NK_^;t@|&yDOOx64UWQBiBnC zMgi>~M*UQ-tKsNgBJjWZj0c`KZguy_q$GkT;=VCrhNh-J-5A7uu?|L3*u8;RF;!L7 zgMlZktgIHXVjbjn;@`lhJ2<6GDa*jX>mNeJCcKUT-$J+Z+*g~j2?+Pa$#}8(G#F@p z+ZSES5PV{)c&C>t^}WPXl=@xJ$|S9eO+s^GKg*bMfi6oZ4Sv7oN!6YLiL$-9XsH_aFsi}#|lr>C+#ir(OguraArRL%9 zPFm=f!sxU#k}3h^SFf-i^kfLz{g00fDS$dU+(yP1zW_-dG^iZif(--sS%KzX8Gouw z(-uFyRV8I}ZW$w-1r=>4feBxqUc|U~{pKmT`0K8WmDmY%pbPW!WBs@U8Q`BgWU9X7 zc{2m|^FL}8z(RQ#N(;H*U`c>cTAJRriX}i!9M^w|%I>eUe_hC}-`+R`hlqi}Q+O*T zIeD-Ulg#S&@{nFYW^(GcYREzhSkhZGq2X`QChWBNc|!AW`qN?bI%>S24&FKO6H z7is>871k$bD1ezt#Pfr%nEAowp-=rw4@kYYpE>Br`<9sQJ7oS+-CHHLxXUG8yfEax~?Y zar2evSUxg@&1zra?ZOPESi`bf&}1}o3ysMk^U7soTjeYx$kSJq`c1HyXTeb5_*n`s4Kr;F&rcf2>N2tkz;=mAS0R`F5I)%XvHd% zJA}^{`S|6L@u@g6ZK-ghsDj9+j2u<7M*T=Aea%S0W1=W?Gx=s%cZuebTd z(^RbJKDB2xKIE5;GS;C0TZLz9)CVt4eNx_X8rquT(rWTqUdy^&F!7z5Z>Do}kwN|L z3w%5V7J<7gPpmkh6J#k#)|Mi>)L$~_uZ9Zsad-Ra3o$(MfnSrv8m(l#3QuZjec2+9 zhTd99XSIJ(Ze?<@TA8vpg;02fK zQxs=+Qs$IIw@HYLQ;Bj*OBYPu6*$0v)#VS#r+kz84uzw4hbBBFwxl57y%1MmiqcDn ztZkq0mPrtU>1W-|mHFY)-5COLliE^-U$i@qZ?Vy8oi753fseA!rop8}=)UrppS!V& z5V||-lSB{lg#E*R-l&e3HsH(uYU!V7dP=q6?5j<<#?&rJZ$!KWjG^U66VUa-B```# z%OHy_o}d01b)}UV&(RoS_Z!1INQGhk_6SzS#$9s{=^K14*KQCW_p?3F`GP1G4aK9Q zekG(B-xbrPG(LO?=qZxPoADq!Q%F=|p>np1d=(%=Tj#qAeUG6kYF6pKizTPEC`^UZ zPo#*&h~pxAjte2C45i=b+Y{-o#)mr0hg4e+WLOn9hM+%&VX3)a_SE>+K~(+2 zwKO3*P=vq84$JmDf+6p48MrxL%ns;zrRaL&=vFJdmQjQ^Cjm+v$sLM>RTZ%&&9oKT!);!qTQ-Uti~<;y->%jL{Tu zI<_+hw*OWxUQN8CVpac;PUlM>HFWGC$XE|1WmAWrto3PYt#)Rc6A{rIg!nI}&1!y{ zA9>uX>0ZA&FH}-CI#u~E65uk{C3uIvS#|JirwPu zcKG3~VSy9~j)Vnl;wI}@i;2li{Tb7w-IiNPO%SqXRl0o1Z=&WLSi ztz5I$KR4ejOx8c(S)%9PqqC3-%4h#@I`*s18rmmyV5O4w!x3LF$%SR#GxhKfQOw^E zm2pXzy{*Q$QN@3ZpD~D=UHX!@K*xohZp>N02!lO`2bAEpmg0xc2V-HN%RS@3b)h~} z+clTl_#?ADwE0FAO7PQWV~5ZNgF2L4N{2%xHHQO$$(_B_YqasHP=COgMpPsh>v3?1 z^rd@hRw-NvcToFYDsx~2YYy#yLiCdWGuwX~U7OgpM7QtT>fV0D_aGV-J!?nG4Up%% zU+5I41h$&j5{k8LAdaUjp`G=uMKI$NR~RqeYKyCEXAkCmB;ae$?cpSmC`a8?J)DeBE97zC@FcZ>R@c`&B}0Y6R#`=? zx!VxA*~RNh0V&D^*3aW5ZMXeWIH@XB@v>-T@*TL7^|4NFty}yjO(Ikjm2-2&x%UT^ zBB8U^#W{SGaVKRkN2dukHmGsg0y{Pt;dWrkfPX#c5%Y%8?uc4MFVof^xnp`1@SiQtA>D4_5BKo>0ou!+ADKL z&j~_!h?j18;@hT#W_D?4jAE}H)NLB{^bn{EqNBt;5aO_Bse6dC(Ippy zDioZbuF5He+;*QaH26VF?sC280$AV5)?ZQLE%Lmh8at7MDZCkQD`kK`3JMQ6u z`&qJMC!h=s5@Sn8Xcq?dqEW;G_`SiDV=iwE)jrK~h#*pB9Xoez$+hD&y1mOa;CeKv z7Ae~|Xv2Ga{!H&eDb5cGq(_B0on;V@uWtW><}k@+{6Tc0K?NJ!#&b*ziQXFnYZJu^ zIbsN*8h-l?c3#r%t`(t|@WKn3QF9U^SRS6L`@mBmu0x3h!1lVeYbg`z&)+m06Swsp-$R25`dSk9qop5fs@G! zZT02>9Fa^LKey-z6cH=FWsaFD&7)ZTxvLAr$?NNrf5^+5TyXjDMA&(X1+}ukN@vrM zcXj3d*HA_V834bJel4exyT$Q#N}kG^>v-;@&)RIoav~o4USmbyZT?$%rW>C{$6On> zphbW0f04>Vmq}Z6h?}&_V*}4m@B5|R8!wCVJk&d+YVuU_Y-JDGxnge&8VHvfE#sLr z&4j--GJ+Mw7&T_*D_|{$o2N$r_V5W~!qv-e&mRNrTa2vsFM!owmAW}X&Lpq%#qH}0 z)6&AfeBpZb>_toi-y=r$LpuaG+1d4Q`Ytbv8B0t??AjoRn$tdOcAKC2qEk8c?dnzs zi$aN4a@Zm8sEbcqOG|dU`(q+8vl9Ox7Z;Znsy?14I?gV?8iT~%u>6kmtSZ*K(mlSC zD794C#>z#KWDu_xR;I{;7pFK{d`KnyI{eSH;e@Xpp|3dImdZw*J>oovIkB()*xx2e zh(J7_Kts8!w?W^fOg%>V?*k823Ynveqb~``070Z(1Q~IuGAfU=vMT}MJ%_+l%f){- zWBra&XLD@qG(JBzp=$HOM&?{4FL?9>&4qMO<= z2YeTFJv6ADbEcC_)|8=5WnI;%1t0&j5O?f?&_mK2QU3}nb7f2-3JhO=NKcQfk6@^e zBhJ5Df%^>5LsD+|^aI+DJ%`OFf;_)ht}Q0T;r(}>-LrLLckZGTbwt3c1&)YGe4rfs za+jE%4%;0e>}2Xol-P>T>BFGtY)rk-Wb*klRuMTs4ytTMFM67CcJ7A9e}`)_>Kvh4 zjFp_Epq5S`bWN1}BofP(DnL%I)!WFr3FQGRmc@Ep6(HG6^-!`D1`SSXm+ng}b+E$G zIUB{p5%yPC5Ac^N4f%(zcY?4HRYGRn&0u7)YCBt^gHh`>S%cr_bUtPr&!UQ2td@v1LJ#&f`ta7^hW zXOT(j3gTmlDuhkxBpA0~zwFLS+>5V{A;9VTGbP?(GOX+>S|n%|mAW-Q4M+JbRy-vi zL4!Sdna-|}KDMI0sro6j?XjIb2_^~7!EI4F{dJgeV zOT4exa+avXm`-I*Gyj`4?VMm}_%qj<Himn*F@mnrlNu{J`s8z$+u4LBXx9|3?mT#jznPy!4CGvPEIt< z?n`V9OX&nC9a`gpsQ36C=4p2Iv5n6=V2;DABY^l1B`>3}FgZ3h z_UEdq{U5=oLTlh3oP`Aq`{O8l+NiG#d>bP_)%b14K~Yg5xDyHtz;CpZJ7;n>O?96* z>6c=mmx!*V<1F+#N&q4yzg8uiV+S2sRMUFyOF4*>;-g%}W(Hn07v1^E*Il-9(`{)J zYx5$Z(4*%<#{CDptS86MknNJ*l5pgaF6%W-*lfJ!BwxiRq$1XTBGlL4vaTMLRs^L_ z@v~2>;a||_&QGKO*eGWO>rh`5e&617Rek7vV8`hIZNO%#a-i_V0IetgqOq|t#T7%S z6~#cO%ZKBQICKCe3>ZLO=)PIvy+^IgpILT20r)+7^}en-g@%`&Yjl-xL#&f>3h_Pd z-_Lz8WlLue9={z0e-#vw(BES;-F%*P=T3M(y4XFKPd9XZTta-ES5N$MFy8w;Wd!pl zX#cOEEt{eH=aOG(VbG<*7)$7zoCiCll0kXKbTaprfor=}T+UP#Ojtlsc2*0_wehP)o_owEr7wgKbt1pm~A=LVNY{ zE(VhsJbUhvr6n13W$p=m9#7G)_-|3xPmVwK=xL*DAeQkDt5*I2C*N|sw@8kFjo#rh zQ_`bz@9UyqIwP+(>Ir5S+^o*nN$Wl=e*Er6@8HK$%HK*OIQ;h7xSinkCZ%o1 zr2OXAmUstryVVYH-|+j#g}de7Jy*5ecNv{-Av7|#Ql@GJ@1lxj0#2-=kRU6KdHb@O zP|`ulrT4$4JxhW|&sEIt*-XYVL0&Q#DXQhR`NU|BwGEifThXub1jRzjNstl;OKLTy zRBaQToZp`K_Qmw{DZ?JuM4sejMa4)d6F+Cc?!JEDz$mL&i;cqgY(vWUutxPjCq(gU zIzC7GW!!R4GaJuhbki?(>rjV&N}#4s@8a(1eyg^^=ng*V-9p)0HGJ1_})VnIrkkr@5rsuRV%+`Al@cAkvuF>#(@=XmM&-SoaaF5i8$UK9LH_ex-s?)=kmGBDZ3d!q# zula1hPAGhlIC+VB?yF~Zf&b;B)hZ4%YR>l}0V`Zo_AAJG^9y$Nw|~Z1nCxIK4E|So zUdTLaf9Ujk(lr%b;r=k4~N*S7RV`uJ3m}w2%|N-H0)$CAT)I zrdYG?$tm<^0Qgr-&fm14b}0E*(hEGD1T6n}LimYDfDIqz?udP5QZ=uJM6^6X={f7)j!I#p-hg%J`RP}>gWDHg z!rT`-d~6$hg`r_lmwrq60(5kV+oy%Dh!mPv@40xCTNtsHgF(J)WYVrq$}QTsjCf7% zbpN#vD5$8jO#BH>!at_ z&?RC>Pb^@=lAX*Y0O=^rOpxUx<^25o3sXOAh3K3ahJ&RxQdFI4t^b~<*1ZYY_lhFs z`q0g?>yH^Vz45tZ7N6zV1g4151Sb6Yrm||qZh^=0yyGQa(eEqHfsQUjN;=d!{r7jo}pRY%&G?S^HLKJ^@Z&f1YV=AlScZHe3y5$g7*F!>*XeR zbZH57TEsd!Wmx$5eLvKiUij32)7i@AJ035WSB#s0k+%-G@Fd9GV&UOKRPoD*+G{(` zDfZ+6R5(4EKk`Hk>FBR4WS;Y42NdPoukE3&T9tZ^Z8f9&wcXPAfJN}>kJ5vEGmj+# zic6=!vJAYYFY{t^_J=h782xx@SSJdst7^T(PYJ?!6%%UrnmAsV$9A-{mD0+JYOEzY zx(d9}dXlhCG;v47XcW;(B(NS4tXs6l@-g?UZlI&4FC3|va|d;#fP3jyQGn}S+r$}u z`SJz0Q1P_QI{Gw=goA+;M}3V}v~rzP zLZh2=yQGwNqVWd};WjN8KN75oWpmJOtOUMug08Je?%Ip-_3VUxe_sfXNg*=Ze-6u1 zEK(oGq$7!_TV?Ez4JYC*B4YRIIw@*ud$7Bms#hC1)xR>Cy>ojJ$37=-#RT{~-$a=+ zMTKR;rKz)P+wQ+p^HlKr^uS?jy{4vhyHnzkvDU@P+ZBuxTJ}LuYujD=4`l#0gqAM@ zrFR_D=O4`GvrO_PtytHv!15t%p)<4ro*zfI<6k&E&RRl4XiTwMuU@?T4`XCkJ$>J{ z0HS9vwmMBpm_h}Y)CgZX#=hsHTvAx}Use7NuV2H zhuhlNcx?zqqmy`E@JZbg~?~ z@;W6yKQUjz|M|$c6eSHwxPtQQA`}p9<>tImOYavzcI-Uf<9a+Fy|8IigCgVCA&?UFDXOf=c)Y_^qm8* z4&7Upx2Eph`p3;-)|xyH6^4B`CI`yN>tG91*SEvsOz0j=o4RoWToVc*x_I+Dp?zb=1TJ7ZWOB6#^(B~%jM<{p>l|XaV7tN zU1!~g5qx{t^0}sFppS zG-V}tHu13MGSu0Cw#M?~YifA=`}>Qks&M6tC**_J+1X1`5tdmQ58@@NltdMUO7lqG zUm)hbzpc`}S_F$?Slyl^^R{Acj~BMIJ~k|`tQKP)_c^wA%e{H?{GaIwWggOELBLNp zqI$F=yD%)H57K!2*gf%lT>*`JXz&c|Z#9RyF9d*CNCzj@O$t#AM^T+x43m6%yP!}G zp)hOjgcZGwIac62zu?!GU8n^^Xsy%o_A#I7tF1dywN-o+DH!u4&P`5+C5?GRsL2;k zHVc?QSGqz_`}?13MdwRWnU#yW#`G97M{|;nTF^ZxVn+Triy20t6r1WDMc&1C2JH0Q zYMuTKqB_OZz1&8P(~EcCN1pnv4iFzXgkgOZ_+Fb^SjLZ<426Hiu-(4SRQ=INccOs@ zS4z-=wKC#BI2or7jtR-nh~z+!NXhJP(lbP+_66Gz-7e^%MbEGtN$du;r$cKA68jlu zuTp|d&TaFeM<3`9li3SP7w?Bb!Sa-dNG2{W97{R#SYcmq9(=@no>!^QbHx4X+8{O z`VCj!y373?b1-}K6P>acjc%6z@nqKEv(`!Ou8hSC;(&`a!Q*QCI z(sH+2T|YYAggD}5PxEPuH^cLnnMPJ9g~M{5bc>xsjFQewB(`vKa+Whzk{gHs9B;V_ zPk(gTO1+wr!V3Tb9nCVkOe2k zc{sIYhSEDevHT={KW5&T=>8O|ejEv=qJ3t6VQJ2C~NBuA!d@>G!`7M7cU zjDK#K?x9aaUoZH&-Jzm;_eweC<%z@xfAz&4agR|jz?cQE`Wq%q|KT+u{yLKZ<3D3! zyUV8WW6|W;01yr4jFpYYpLWj|%$c;fGOJJ!vjAr!gA!>Zn6R3^hOZ))SUob?uP`Jz zlaDlRL?H+Iq33V)TZ?;wQK}8xGf6)t%kphqVYK=L+NC}HbmYU1<#$8=3UrO}rfq4( zytRBSYlo|eI(}{|s{PpYI`1KL1R6iVov~$bC43KbU}isqRdaQY6aAk4q3 zpp{vgKGSUb;qC14x`N9S0c8%Y0ssZKU{09lbNzR>PnxLffQLv__L+L?4LjFy@&#^r zTW2^)xrlA*^+;uT)ZF!yyt79a(uV>-J)ehD-iGvVy3_T*%Si5bfmjX;5uuBQpikD(!84OY$Sv}EsC&`Wr6{8R6baR-{As6Yra zY)js`#ztXk^8NEC=xKEZQKcL>(BpahHDyBH!Ny^A{oh`>WlllXXOB%WZ%xm4c$9enR;oIlAZq+)KW7>OX)lm@my6mkk!!j6~8`#P?koGg^zPFh4? z`Z16pz2OA&Uf!8kS3iOOv$RNPbJ5yO=zZDnx|kY;{r3e1xxTj~622c66NFlbWM$;| zKy_BqNm**i$%^&g=hyS_k5a3cw4P7x{7(T*=<9Dskz1M=oi}!GFR~QZ&4q zWC}lL-F=)EdG~fW3)Mp-`M%5t^i^7;R$09B`AKcF3do4AA>jx0$A1go<^Buzb;J)% zFwDc|rdeH|UY}#MTu}d=AG^xC_|RIveBZE`ecRt21ts10dkWA%pM>^%?HUuq6Y~uR z4W;eDy2U>9SGro_*VB)$*w|L~jEKe;nYDdv*%U_8|vV1&>dxX#`0U1O9 z`(TM5vVprgDsXhU9n~75=RZY+udYT?20S=Z)XB1aE`;xx`j3rQR}I z-I*vqfJoJ777O{mFGc;KCTNZlR%J!;v>{~a;##FFSs(;!3QCT>C*Z<5G*2q3f^t?` zE1S^M-F0^JSWLG`_S+Z;5vDE*&uw+ASZ0=HC_VaJr<=jD!GHdPQJgR?vaqE~mj2C_MYPSB$+g}GwQ zoa84yjZPo1m?k6`MG1BEDOG*WbKkt1-S0++UGDJbiryeHGw!GWs$S;7bJ|}u*=huE zM=Lb=^jGX#LdPy+lYr^Yn@#*z%CjITJe8ak8Xm(PpU6p?kjr;|vL2&2_FvA@hKjOL zekRggj?^>MIkQF0Cq*R>lid!7-}y)1C2>}AbeP=Bt));dj6gg<*VHrbt&%MBrQ7@~ zAh4G>Dfhf=mnxM=a^d|9uJUsP>Blm{oRHITcT?azLP%UUQ<+oKkzXEob?hpkGx(J_ zv(U6UFXzFaf{Ra2M7x>7sAUTAuq1Y-$$k}iu*@NC-tm>26De?lWCDKI&#M3-81xgR zA+xC6Zv?}{z7_@}6^HZ?PGB|6`eC0xF^MDxGa^Qb4WiI&VX(>@vbB^CXRy4b2GZd? z-Qw=75|@m*94O|HkYHqY52n1iwtx%8YOrxG6jTo5qF9Vx2Nemr9`?VBYu?&Q|20Ip zx*0%}{V^cT=p%548&4&RdbUQ7%g~s=xXmEGNhaU=;rTfxzrf?$EK@iMS`Crc8dpfs zAbHT?${>|EZCX+dbHbQLAIZ&u5zFVJ1$tmYL%qy)Hy5(|OYY^A5p%qN9ha26! zYluW=G=Sv?vSz^+qfmgf-O}4hLt(gKGvKOdQyHgnoJ~M})eSlVu~sdAqmSZA^EbSx z#+N&6p20$a>=`tlCX2uhB)Yw`l^J6iohk$AP(S)i1y3ua-6T5`hm`^*u?6>wZgsc& za<;kT3R*4T_EbcG<&1b9O~6<5?e_wha1>FxS8yG3`sCT68(T4cErg4KRKV#FcD&aQ z!Ae*oyhPMQPs56svwL)J{-s|Az+Rseh#dUi?+{)qhmepgZ^T(F$at_mb zWWcB(I|dEO{?QZUr}UQ}t}Jd|H)w!3rNI;Z9ulwzNOb)A;b=pP$oU%-*z6pX*s-a8 zn%RbG?gTZk#LYX(U|G?R^iD|CFEM^KH0ALxX+0UHm+#j4;5wrBN6c3M(ja$_8_k>2 znQ35FXXy(RIev&Zq*M@(puLb%LJ?E`yAZfs4eF>+{;;7__Om@z)ll_-rW=TY;wDR| z+BxSxAG5?JZ-xMQNL1L4RxuHVJ)mc+F^iw$sJfag(j6Z2hImeRM|F7|M2G^i!Ofdj zW;c;jOFvQJlPPHd*9ds*l?OgnRv)RC*8Fnxzx>#})9^)nGhUOj@Zd?o2Uk37Ivik~ zK~s8z^Bx9VQ+7UsNi@w!RgRCngqE!c+s*0r{-n(9`C3!9Ip~xckRqUdX8A3k;3FcD z{*lsqHWJC=0&sN~o%h!rE@>b#h2P7Tc(f|Me literal 13836 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 YVs(lws#c;9|MCLVm9>>>6s#lv4?N#>LI3~& From d63ff01364f5b6caf6b5cf220388d75e3542be9e Mon Sep 17 00:00:00 2001 From: LetterJay Date: Sun, 1 Apr 2018 17:38:50 -0500 Subject: [PATCH 2/2] Update components.dm --- code/__DEFINES/components.dm | 4 ---- 1 file changed, 4 deletions(-) diff --git a/code/__DEFINES/components.dm b/code/__DEFINES/components.dm index deca4df437..91dafd3cf4 100644 --- a/code/__DEFINES/components.dm +++ b/code/__DEFINES/components.dm @@ -81,13 +81,9 @@ #define COMSIG_ITEM_ATTACK_SELF "item_attack_self" //from base of obj/item/attack_self(): (/mob) #define COMSIG_ITEM_ATTACK_OBJ "item_attack_obj" //from base of obj/item/attack_obj(): (/obj, /mob) #define COMSIG_ITEM_EQUIPPED "item_equip" //from base of obj/item/equipped(): (/mob/equipper, slot) -<<<<<<< HEAD -#define COMSIG_ITEM_DROPPED "item_drop" //from base of obj/item/dropped(): (/mob/dropper) -======= #define COMSIG_ITEM_DROPPED "item_drop" #define COMSIG_ITEM_PICKUP "item_pickup" //from base of obj/item/pickup(): (/mob/taker) #define COMSIG_ITEM_ATTACK_ZONE "item_attack_zone" //from base of mob/living/carbon/attacked_by(): (mob/living/carbon/target, mob/living/user, hit_zone) ->>>>>>> 251c542... Added a new ability to sentient diseases (#36548) // /obj/item/clothing signals #define COMSIG_SHOES_STEP_ACTION "shoes_step_action" //from base of obj/item/clothing/shoes/proc/step_action(): ()