From ce04739ccba49073d053d05fb1ebb604bbf4b5c6 Mon Sep 17 00:00:00 2001 From: Linzolle Date: Sun, 1 Dec 2019 15:53:40 -0600 Subject: [PATCH 01/61] neck slice --- code/__DEFINES/status_effects.dm | 2 ++ code/datums/components/butchering.dm | 36 ++++++++++++++++++++++++++- code/datums/status_effects/debuffs.dm | 13 ++++++++++ 3 files changed, 50 insertions(+), 1 deletion(-) diff --git a/code/__DEFINES/status_effects.dm b/code/__DEFINES/status_effects.dm index 0f1a36d663..6e5c2c8483 100644 --- a/code/__DEFINES/status_effects.dm +++ b/code/__DEFINES/status_effects.dm @@ -66,6 +66,8 @@ #define STATUS_EFFECT_SAWBLEED /datum/status_effect/saw_bleed //if the bleed builds up enough, takes a ton of damage +#define STATUS_EFFECT_NECKSLICE /datum/status_effect/neck_slice //Creates the flavor messages for the neck-slice + #define STATUS_EFFECT_NECROPOLIS_CURSE /datum/status_effect/necropolis_curse #define CURSE_BLINDING 1 //makes the edges of the target's screen obscured #define CURSE_SPAWNING 2 //spawns creatures that attack the target only diff --git a/code/datums/components/butchering.dm b/code/datums/components/butchering.dm index 1518a84456..c8bcc16788 100644 --- a/code/datums/components/butchering.dm +++ b/code/datums/components/butchering.dm @@ -23,17 +23,51 @@ RegisterSignal(parent, COMSIG_ITEM_ATTACK, .proc/onItemAttack) /datum/component/butchering/proc/onItemAttack(obj/item/source, mob/living/M, mob/living/user) - if(user.a_intent == INTENT_HARM && M.stat == DEAD && (M.butcher_results || M.guaranteed_butcher_results)) //can we butcher it? + if(user.a_intent != INTENT_HARM) + return + if(M.stat == DEAD && (M.butcher_results || M.guaranteed_butcher_results)) //can we butcher it? if(butchering_enabled && (can_be_blunt || source.get_sharpness())) INVOKE_ASYNC(src, .proc/startButcher, source, M, user) return COMPONENT_ITEM_NO_ATTACK + if(ishuman(M) && source.force && source.get_sharpness()) + var/mob/living/carbon/human/H = M + if((H.health <= H.crit_threshold || (user.pulling == H && user.grab_state >= GRAB_NECK) || H.IsSleeping()) && user.zone_selected == BODY_ZONE_HEAD) // Only sleeping, neck grabbed, or crit, can be sliced. + if(H.has_status_effect(/datum/status_effect/neck_slice)) + user.show_message("[H]'s neck has already been already cut, you can't make the bleeding any worse!", MSG_VISUAL, \ + "Their neck has already been already cut, you can't make the bleeding any worse!") + return COMPONENT_ITEM_NO_ATTACK + INVOKE_ASYNC(src, .proc/startNeckSlice, source, H, user) + return COMPONENT_ITEM_NO_ATTACK + /datum/component/butchering/proc/startButcher(obj/item/source, mob/living/M, mob/living/user) to_chat(user, "You begin to butcher [M]...") playsound(M.loc, butcher_sound, 50, TRUE, -1) if(do_mob(user, M, speed) && M.Adjacent(source)) Butcher(user, M) +/datum/component/butchering/proc/startNeckSlice(obj/item/source, mob/living/carbon/human/H, mob/living/user) + user.visible_message("[user] is slitting [H]'s throat!", \ + "You start slicing [H]'s throat!", \ + "You hear a cutting noise!", ignored_mobs = H) + H.show_message("Your throat is being slit by [user]!", MSG_VISUAL, \ + "Something is cutting into your neck!", NONE) + log_combat(user, H, "starts slicing the throat of") + + playsound(H.loc, butcher_sound, 50, TRUE, -1) + if(do_mob(user, H, CLAMP(500 / source.force, 30, 100)) && H.Adjacent(source)) + if(H.has_status_effect(/datum/status_effect/neck_slice)) + user.show_message("[H]'s neck has already been already cut, you can't make the bleeding any worse!", MSG_VISUAL, \ + "Their neck has already been already cut, you can't make the bleeding any worse!") + return + + H.visible_message("[user] slits [H]'s throat!", \ + "[user] slits your throat...") + log_combat(user, H, "finishes slicing the throat of") + H.apply_damage(source.force, BRUTE, BODY_ZONE_HEAD) + H.bleed_rate = CLAMP(H.bleed_rate + 20, 0, 30) + H.apply_status_effect(/datum/status_effect/neck_slice) + /datum/component/butchering/proc/Butcher(mob/living/butcher, mob/living/meat) var/turf/T = meat.drop_location() var/final_effectiveness = effectiveness - meat.butcher_difficulty diff --git a/code/datums/status_effects/debuffs.dm b/code/datums/status_effects/debuffs.dm index 84ed012b82..3ff4506f49 100644 --- a/code/datums/status_effects/debuffs.dm +++ b/code/datums/status_effects/debuffs.dm @@ -388,6 +388,19 @@ else new /obj/effect/temp_visual/bleed(get_turf(owner)) +/datum/status_effect/neck_slice + id = "neck_slice" + status_type = STATUS_EFFECT_UNIQUE + alert_type = null + duration = -1 + +/datum/status_effect/neck_slice/tick() + var/mob/living/carbon/human/H = owner + if(H.stat == DEAD || H.bleed_rate <= 8) + H.remove_status_effect(/datum/status_effect/neck_slice) + if(prob(10)) + H.emote(pick("gasp", "gag", "choke")) + /mob/living/proc/apply_necropolis_curse(set_curse, duration = 10 MINUTES) var/datum/status_effect/necropolis_curse/C = has_status_effect(STATUS_EFFECT_NECROPOLIS_CURSE) if(!set_curse) From 560ad9cce2646122f4bc579332e813673bff8486 Mon Sep 17 00:00:00 2001 From: Linzolle Date: Sun, 1 Dec 2019 16:03:36 -0600 Subject: [PATCH 02/61] tfw we don't have these defines --- code/datums/components/butchering.dm | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/code/datums/components/butchering.dm b/code/datums/components/butchering.dm index c8bcc16788..817dcb9c1f 100644 --- a/code/datums/components/butchering.dm +++ b/code/datums/components/butchering.dm @@ -34,7 +34,7 @@ var/mob/living/carbon/human/H = M if((H.health <= H.crit_threshold || (user.pulling == H && user.grab_state >= GRAB_NECK) || H.IsSleeping()) && user.zone_selected == BODY_ZONE_HEAD) // Only sleeping, neck grabbed, or crit, can be sliced. if(H.has_status_effect(/datum/status_effect/neck_slice)) - user.show_message("[H]'s neck has already been already cut, you can't make the bleeding any worse!", MSG_VISUAL, \ + user.show_message("[H]'s neck has already been already cut, you can't make the bleeding any worse!", 1, \ "Their neck has already been already cut, you can't make the bleeding any worse!") return COMPONENT_ITEM_NO_ATTACK INVOKE_ASYNC(src, .proc/startNeckSlice, source, H, user) @@ -50,14 +50,14 @@ user.visible_message("[user] is slitting [H]'s throat!", \ "You start slicing [H]'s throat!", \ "You hear a cutting noise!", ignored_mobs = H) - H.show_message("Your throat is being slit by [user]!", MSG_VISUAL, \ + H.show_message("Your throat is being slit by [user]!", 1, \ "Something is cutting into your neck!", NONE) log_combat(user, H, "starts slicing the throat of") playsound(H.loc, butcher_sound, 50, TRUE, -1) if(do_mob(user, H, CLAMP(500 / source.force, 30, 100)) && H.Adjacent(source)) if(H.has_status_effect(/datum/status_effect/neck_slice)) - user.show_message("[H]'s neck has already been already cut, you can't make the bleeding any worse!", MSG_VISUAL, \ + user.show_message("[H]'s neck has already been already cut, you can't make the bleeding any worse!", 1, \ "Their neck has already been already cut, you can't make the bleeding any worse!") return From 04e94664656d14a3fc96c1404fbebca53a273870 Mon Sep 17 00:00:00 2001 From: Linzolle Date: Sun, 1 Dec 2019 16:06:13 -0600 Subject: [PATCH 03/61] and we don't have this span... --- code/datums/components/butchering.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/datums/components/butchering.dm b/code/datums/components/butchering.dm index 817dcb9c1f..d5af47ea1f 100644 --- a/code/datums/components/butchering.dm +++ b/code/datums/components/butchering.dm @@ -49,7 +49,7 @@ /datum/component/butchering/proc/startNeckSlice(obj/item/source, mob/living/carbon/human/H, mob/living/user) user.visible_message("[user] is slitting [H]'s throat!", \ "You start slicing [H]'s throat!", \ - "You hear a cutting noise!", ignored_mobs = H) + "You hear a cutting noise!", ignored_mobs = H) H.show_message("Your throat is being slit by [user]!", 1, \ "Something is cutting into your neck!", NONE) log_combat(user, H, "starts slicing the throat of") From f4318c9dbaf7e579c0816461257c7362aa4aceec Mon Sep 17 00:00:00 2001 From: Linzolle Date: Sun, 1 Dec 2019 18:10:48 -0600 Subject: [PATCH 04/61] bleeding indicator for more than jsut heparin --- code/modules/mob/living/carbon/human/examine.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/modules/mob/living/carbon/human/examine.dm b/code/modules/mob/living/carbon/human/examine.dm index 04ec0454f8..84da74e9a9 100644 --- a/code/modules/mob/living/carbon/human/examine.dm +++ b/code/modules/mob/living/carbon/human/examine.dm @@ -243,7 +243,7 @@ if(bleedsuppress) msg += "[t_He] [t_is] bandaged with something.\n" else if(bleed_rate) - if(reagents.has_reagent("heparin")) + if(bleed_rate >= 8) //8 is the rate at which heparin causes you to bleed msg += "[t_He] [t_is] bleeding uncontrollably!\n" else msg += "[t_He] [t_is] bleeding!\n" From 8da7d1a0218feb173b85ac46d60e87a2092e009a Mon Sep 17 00:00:00 2001 From: Sishen Date: Fri, 6 Dec 2019 06:38:48 -0700 Subject: [PATCH 05/61] b --- code/game/mecha/combat/neovgre.dm | 2 +- .../clock_scriptures/scripture_applications.dm | 2 +- sound/effects/neovgre_exploding.ogg | Bin 0 -> 214173 bytes 3 files changed, 2 insertions(+), 2 deletions(-) create mode 100644 sound/effects/neovgre_exploding.ogg diff --git a/code/game/mecha/combat/neovgre.dm b/code/game/mecha/combat/neovgre.dm index b1f2cdd02a..df44f8d6a8 100644 --- a/code/game/mecha/combat/neovgre.dm +++ b/code/game/mecha/combat/neovgre.dm @@ -47,7 +47,7 @@ for(var/mob/M in src) to_chat(M, "You are consumed by the fires raging within Neovgre...") M.dust() - playsound(src, 'sound/magic/lightning_chargeup.ogg', 100, 0) + playsound(src, 'sound/effects/neovgre_exploding.ogg', 100, 0) src.visible_message("The reactor has gone critical, its going to blow!") addtimer(CALLBACK(src,.proc/go_critical),breach_time) diff --git a/code/modules/antagonists/clockcult/clock_scriptures/scripture_applications.dm b/code/modules/antagonists/clockcult/clock_scriptures/scripture_applications.dm index 3d467350ff..0bb4270ff6 100644 --- a/code/modules/antagonists/clockcult/clock_scriptures/scripture_applications.dm +++ b/code/modules/antagonists/clockcult/clock_scriptures/scripture_applications.dm @@ -146,6 +146,6 @@ /datum/clockwork_scripture/create_object/summon_arbiter/check_special_requirements() if(GLOB.neovgre_exists) - to_chat(invoker, "\"You've already got one...\"") + to_chat(invoker, "\"Only one of my weapons may exist in this temporal stream!\"") return FALSE return ..() diff --git a/sound/effects/neovgre_exploding.ogg b/sound/effects/neovgre_exploding.ogg new file mode 100644 index 0000000000000000000000000000000000000000..6ca2db05c3cc2364cf53073324ce914ee445fecb GIT binary patch literal 214173 zcmeFZby!qi+bFzdh8VgVap*=`Qiqa|4hcm`Y3UFJM(OTGqy-ctL_%T|>5vYk1f)wu z5l}cA{XNflzV~~tbH3|3*Z1Gq?7dkX_quznJvw%F1^^EJxvDh(2HKxmC&5@?KCT{C z4xZ;paOD^O6mkDsxB;efUi07Ac}*A;>+LWPql`KGFIOVsZ&UnG2@?l5dm$YUJCw77 z)r~(Lpwv;K!Xl!=qQYV*9vzo^4sIT{p0@YAco9%>I_NP}H`G*-zh~>}W9MOuvh{Ow zcC~T1XU7R;sc0+dD68npYdQE?dsyD}LR}WRj1m(SRCMq{DSA6N+n~fmBnhB`$_j=m z@=!O@Fx$sAU9Q-sZ+Wwv#^IlRg2a8KE~D z0!$l1Z%&1pABI}ehy8Q^446MWzyC}f1p|5P(rHV)1#FB3i_!&%kgykUU~>)<6hRUj zZ&IOp$z8`vhwRt(&tJRr)d=*}5dSFxp$X3UXh5DrR>}YCzH6Fh`@g@@_T78{4Z*U@ zow>`MLq(sX%R>PF4}`k`w5Di%fesIGRZsCQPdVsT^-}Ih(HuC?B>UGQoG&{7Xc6WP zcjg`l8v25x9umf$@{^uglMpD*A@aYz9{s@=XdY5H^t&}!WL!ro&Z0@>7!@uqQgBE4C za|Yi^e}-yAe#~}iBru0UM>aV-0|e)3{}p}E(7IVp(RV(1j0%Xuv!Z4#VNGW7iYHCZ z6Y1tHVu_8rrcoBGtIxn)?DhE1%uxV@kpIErf4%;o@?R`2N{Zs^<*Dr#?GreEy=Whl z*{o_OS0WaHuvkC>!s6Jvm0ZtCX*H+fx(PG>;uL)i-r~O$1uZJdCP4v@;SZ67Wq9=R zK7**@KNoI~;{(No;s3Zld}Y?7{FQ9%PSc_Tw3V;>jObnj2~q2^QG^OFJdld*T` z!u~5_{hM+CL^L6PXfnkrMx-kzSX+_c?*jjea@?uA5}A7vIj+}mXpIOA?2GGs6Cb8h z(G%A)pfMk&@gAkMHIOtPm9QN(vK{xaoqlb5vp&G|^*;pjmu%)Iz5j!9&Pjw#I&MiV z3Fm)OP99I(qEsBadJ>0e64(7SyU47v%-r>|0>b}7IrdS{GNPVEM6E`|@kFLML}ryY z7C84-ZZ`dI?|)N{ss{&jLzJW9!SNrIgB4*`f~cuRKfQ6#xbRmWxWp{7EUT5~L#)?2+p4nLBRD ztmhQoiV06(zox#;YS2%PQz7h|i0vUkJ_8`_ zf-!3$n6IA;i}Oo;6lhVy2B^-Z5p-dP#nDvqXeyPz(f_kI)RDLz4s`$14AjxEA#7Ou zpT3}8uwp7`aY&NHoIye*U&)rG^t7mhC>|Ta-$&*@5C+3|NFsV0KmZT0R~X@qW?Xn zLN!VNq>^k*A^k!v$rc7Mwx+rG03_MoXZi1&`Tw5!UpjNof*GH8TZ6PHn zl1&^6Qsl1QFCqBw4VpJkRDlB=5-$+ganHdnX|Ewbs%zh^0Z<$O`&laO%l!hLC`f-Q z?{ydG`=+c%tz}?jp1x#~wi;Q$lT}jQBm{Nz;g5)dlso&ZePB5Su2s} zEtHp65DLC$JP8V^WRt`xQ_<12C^T||Oj004!sZs!8 z_&3gwS6;r+RLS25AO&hV)z%bm;XGC&0Kftk22fa}OiyVIl1Zy!4^T7Kuz?5&7h)_m zM2d;6DHRFxEj1O@SZ(z6`FM*775O+*^%c~Li}Xb`1dG%3aamK7G|Es#`ue=M0CPbK zdQ6a^VJ~pNKBVngr&#q%uW~4Ah^*vzQnD7)L+VW#we`7B-s}JsD6Mcd-pr zE+<)E21+A^6b>(_NKuNu;#!U;q<=htiogK+FSMhawS_4S|A3nYU>DApE0-Grw|Y{^ z{akKHZ*@#6`kRs^_u(Jt-_QLA#vbO-YMcX#v+sP3%F4?Lq1Y${sL*qLx4eAw-RpDs zPkLK^ItTt{6BdHIw=F}%x%d_!0zk(N0KO_q?~vqzYAht^;OFu(L0EfMMdXTV zyrBvIPxOajpgI`xe=HQq7|VY`?u7qowfs-}<^Rvnl$ldS-3>rL7>YofhQx}!;CMn4 zheyX)LkW7RCE| z5n3Q94VsGCEh5(96tif-*Yw%Wtk9}CL21@v8g)<_G!-WSjYcS~x`W;+R)r_~=6SAD zg#_;x&+FCWX4Wt2xC&#E&eLAhO|Yfti*`~QK%uM<;m$*P>lY%cX33QAezF({LWP|m zTwu3}E$cLc5Qo4vCRT7f#d8oBpyj0inv-6Eo56_IvXFp|1@mWN8X+4JLcPv&3_Hgw z{UUl#2+dF-=ayIz@=t~Wq+UX6#$f%gjQo%!{a&cXc?Q%SXYttI8a(HkutwRxGm2AE z^#9aF{!x)3Q}kR@rG#)dMIWjc3ia_C>jAE!GDDiL7c}Gz6pZ5NAl%mh~Hwv*| z#5wn4=M#LdEmkQ9SEUx!ME{{#$U-B>uYNUQ_B_U;S6#hA=^EooUeS~~K5L!Hbz77| zue!#Q$4Fkhvd|d5;*8`p#l8%EVk>?TuNVho;otG+=}f zw}v{*@fDGZ09e2R#J;8h8(Tr<(%RlnKtRF3 z$}1wRK=CJA7W@Q2O&=2xVZS0JBXuvFOZ;S*F)FI14OyV&_P?{)FVo)oUfi-jW1vuM#b>ROyd^jBf+|uGu*X&i!FVpE=3?Sz1*;y z8&+6KtCVR`5yQ9OYkO-+K|@wr%1Y@30sNY`^bX3N2gzwQdZZk_hcjP~$<*9kZN_>; z3B$%W+%gL^)d3Jy4AOD9=Jo!2j?C*W*M~^SwD8rJ&Q$HUBS{UKsU6-}-Kq=s**r7N z&co2E=;7D$kT@Fg)k$n5rQTG}y#L_a(p9%hSH);wo!xAExGu|eNkow9!NG^F&lTHE zJ8weklh$GDKaGF%MbUF5O!j^Xv~%A1BDBa}mc{d-k|B6ncv*lpg#zDXhgRZC$M{;a zCV9&trx@X5KZ+ajdN3_U&C2_d#V{^8oZByYABFG?7|Mn~L#FYzWD71^&T?cWn~pA? zmE2(K6>gy9Ayp_Jc8szzx)CON1MZgc zXq6;7$XK%|&ye2+sji|fpIip_<^(hfiNL}QU5h`UK1BTitAaOWL{_n`93wDKPUR>P zF!~Xjj7N$Fa~c(kV*3SkfnOso59S{_bnF>>sj*Y-C#x|whZ_VHJ7twTle$yUcEYyy zn+aexH-tO)MtwWe)JgO>#cVkMu+N;o>faKOsJ;DLO6JLN;5=pJE3fAG$P#>DGQAU< zqk3t6{-yJY_`W~d)LUL%X1tv^D~jgr$KIs_a!%fF4cXQ^7u-jUk53Y`44QFF2WB6Z zGMT#GGU{RNi)I_np&Yo4S~E4!dzP%5OkvwL;!8jz_gY3uyH!NIdHl(uZh~XiVc*x= ziPnHaAwWv6NgbhP4daJ{&Jd^67cpeq9jxlix)lPV_SFmm%B3ARa1>`Ck$spZCyy03 z00hC$*LKXt`4r2_Zs34E42=0|HJrJM0EuR~Zeh_uO-oHQl-Pg}=eZ@*U2;O3pj5a% zPQ4Ci8(YwL$5P|_k{Yk?l{M+Jk>H4n2T#tZbhAuI0ZI=)ZyXLVAW*}5>y3vVo=|<# zs{WHRJf+D82DS4mM@j}&$Q&(FaKDe}cf)B7GcE@F3K=$Exz0VKJ%o2Swc{w2s z)aY7EYjQ_m#X&{*H`e<3&poI0XF+bO@t0c>;D*S{TE(X$SwR6)?ytlSHZpD8oF*^4 z_5bz}E6ek8=4Ws5+~V=xqnzRgTC+wn{8?JH`oeFU-yWpUX?UFV50vHjX@0+Oo!#`_ z)7@&iZ%3x7h~lP5mdeO{)EHHlQVMZV&TfMCuFHc4WmQ!;Ir&Xu)}mz#3U}vimV&XQ zVkO~NK{y|*c`83j*A5}!rYTgH5>V9@Z{mifp zDfrHuu$ykC@QryXH2|$J;C8R-s5x_24!D$;AL-ux2+@`sV_Y=iy3E*Fs?-(P7x+`I z*e|pog0t(s`^iqj{`$Q@&9CJwAj&L;5l?b${m#t*eO0CaGxj!(`n9O*XKGm@bDgg* zguf=%;jnVnouIB4xOe}qr~#Ml=yXlFT2kTXjo;He8RB zqRR7=(WpD!25R=W88*6TY&HVz56LQ5W7rS^D1+O4G=AUKN;JEvjCV^@Bd>mb_h|1u z(@Z>D$waCM?Ziz>66v+G-^NZ)>Th0!xI*WKt6*nmZqa@BsKf7{NbvHwi6o-)kaq7N zUQIrJ=4mc?P_^5lzxG+hj7*5Dq5kGY7+?)LyW83{cV(wP;NFiFo#(fT8AqO7foas} z;659CA`WUvz-@`yfb#M1t0_`mDP5CxCqvQ8ez&TXn{Xp?YoF$rnJ{a>i_&`z9}Ct# zBboh%U-|gg!e+c}_2~W8?{IR8ny-OZ7m0*8^cuK4-^;t-TNb?Nx+@7_5~X4e4;D|# z^mQ5qKqdiIA#)?lkxyf|_Z@tVl918ahP93kMvSd7?zt;mV_j5Z7_v2N#h9o&VZxZe zg2`EvyDU8P+~J!ZRWP|903Tp1-?wg_mfxgJ^@0 zFv=sWf5o#}ei#=}BT9pdD9F)rh7e++4bl4G7=}sw3|RPR7IfN8BrBWTy|r2hTkaPc zf3_%!z4Y*D%(Lo3^aGnV5-mxwiT1OOS=-!rR{)x$i;kFG7;*3|A`Ay6jks<>Iy3go zU7t~75xuUy_1_(@l?Yj{Y`)*>v<7I6PWqb;;@au9oQgH{HX5AmkNKpj(RNyTjQ29W zbX{E*59gTDVd}5!cDm_httUw5dG)*ds~Kk(^Zq%FP5eu#)8oRI`{H`|WTwYsZ`}Kk z*)CIXNJK$roIPiHoZO~oN_u6Allm8f-mA;)XHmq5fi$GGstL<8>De82^5aZ(0ds^_(c2`-#~D_h7NL zn#r6?)eqS2C~>awE4omMm!+QMt9h%g-+leDkaySjldOry%njUbPp{6MUQW@_j)Nf5 zp9Avbcj+wSziD2;H>YjGv8#;M(DhV}&b>}YBwd}t-B|8ehts~bXy;z>+{3(fM9nYM zWENAitG}ghVFcG5r4Nt57?o?7pkWv@6*Il(Ri)2w<6H=(^{Uc=VMab?e~WseC#!v7 zVn;Ol`lj7RV}w!A>U|34_9ZGwi}1i_dih9ly#5Nry!04${S* zruUAD6MZ2idOrqb_yFCGZSUG?&MIq*X6*i&ld>{)(Na@Xk)0=^)2`-Guj8u#{G8>gipr{E;D zFyA$*<6t@ur@*y^wtxpaQ*+1)@7rZ61s}Y!n?1#(cHe)-4w>YZhlUOA9IaB-QqG(A z%4hgWUA-(RbiH9|k;ZYfdE<^`>6nLx+ru9})@>ab!{Ssv48yW?j!zUHIWw5ri(utm1M2a7LK$GQHbjF5**o{m%Dg}E z#a?49=dnAP!ubLXD_}=Oq9a~me?n^mfMrjCC2px#?w!FC(@?Z^s5X?Eo9$yGksr#we z@XYY-73+No@qBp_-tgVhb*3OVc!&TCg`7#BHAz;6-0_YjSs(3Oz=|k_aA#ge*G53r z$L}kFft6*g?%uIKznnY=e%T8i07O5%^`r4+m+9-P4UNbmVmkhOzj%trSKk);DRh`i z5n?Wpc+_H0(-Ox{x4d|Z8r{~5556V!o!*{O`Vx|M_@JN>wbPS(n_))Fw#{_(D`irv z#3k^{L~BMq-2KD%PwBx`-nVsqck@4dy6{wskA1vB!s*?Yle58^R!Gn2;_M^oChktI zd;|MI&wgJ+qSpa6Y%}34WX*B+N{D|bHa7tVTAswKQInukMWo=_F~jo3{HO)(Xw{m# z0bPP0UgrfKma59(KF0wFjM6)G3pEQy+@EAa*SUw5(alIq2_K1WUZ{BY4;n9~#S6#~ zAK2E(;sakYYK*}zpd6S%5l2c+0vTZNIYQ8Yx9mua1MqK~*&fUCIvJY(();SK`kXxI z*$Dh|7dFK65)RlS0lK0I@!}-(->1`vLK%sCXhM?~c}O6hUv;NeN&IpGMsQv3&hXHS zisJ38kNtBe!l@brMb+i)2y@S`!ml>LE0>qMgXx|3S{QPh634<3X(nMm^OI)%Zg%fa zZeW8~{q%a$x~10C=?=XjB&rSL9*pBU-%RK_{b$1KlGTDAb7@KE46ta zCqXwXn2)wS?{Z}fFD2%*a8!@AO1Y-^p$6xVD7L)PCm_$5I8~RL2r_Mqa-+(xld(@w z+xLtRW8T7%PPQ^6o)4R;%xT_Hw>v` zXhs+?S_S|c3lab|9)MF~t^j}!7mmiq;RUUZ<16gTR9;_P+`nJ1usWm}!I5YY4BUzD zK6YaM5hsH7QtCW=a%TF5rs5(%SO0O(rvr^)-) zq~|7kZ*8|o{$Q?Ib`zXNNan>&pBYB@_^*}erR{s%S)F#VS?qFXGQEzLX3*JC|BThqhl^0j_kt zyAyq1zI|=P4~$zXW{>)at6uD?>f_Atl;Vv&0XJ-8u=k4#gn<01hC7}58u_zQ6)bsQ zsw!{W{J52DL&0O?#$FbTW_4U9$B_hPM&D`mqD;0mHNwkB&Uduegs2hs7!&lYYY~Km zV4-)U>3m-c4}*ib8}XBGyU3%UD8Ff*^iDSL#nu8qgoh@q!poyZ;(>91I)fbDT;Lz~ zf*Di~y3XAT=S`@ntW(oNt_2s!sbCL1HfI)Rwr7@SMrXIroUS;Iud%l}D2*R2`h=V1 z|BTea^*E)BY^gtTvqa8!d>u;%z*Fd5;Dc-Z0?v&cE9u(uYM2B!o@n(fh^f3LChgaI zKD$WU{xHjaE$nrAy4Cv^{?b2m!sF`5a2ATF1Ls$M{f@s8xsD-&5a!3IR&tBIbk%8c zjdfLO%X0i+fst;=vx+FgWEL-6PMiqo2LaM?-THw z(lfP9DPM?JU1;4ys%Cm#xve3<^I=P8A@*Lk$Nif>S^?7qs%OEQ{3&=%z|W|2rlDSk z@~*#`#S%F&24zJnen-HviOITLIkO30_*RKzUHLX{M>!6d`pgd;h9k0v^F|O-0B}sG zVDNLyo=IYM@Bn{UEOgRi2>pu|jF}-ZJG4U)r~0;U{mY|qQh!~QoSnGY7ksbl@kpeS zr5|DswucASny`TS+XgHINC6g&;sqUg!h@p(s~?p&ichGj)%`VE1rt{fbHb+|o^p(0 z%HlzWf-I9hV;$ZG|^CqwdEx8pk{{TJ_u0mzk3$}u}7G=IkelM7C{Z?t1|Bm0Lf z4{x&^FRNGad!NQ3jm`Mt!GZnm4kcP)9q&6H^3ib>gRW1khYG^q93PupCb)PjJ+_7A z&b>sGP|wX$!#6TjIy+DIdRd-z6X~*~_5E(Vut{zF*X>u!WZZKkMUT*V5S!Mcl75lEF>Mga(onmYnt)&m3^93&2M!e=isX znuKHlsQKz9qyzNbP+$gFWIBGjvI=P+s2)GiNIh_+`6Qa?lJbyjzO7fsJj=9lZuiQS zmUw!-<~w6=JiXtvV407*A1vV3`N*=Om5jtWI;gcEPh4cnZ1aN$-cOmGnC_l@b^RE( znLHTqLW5E3;*+6xGV3hApi3LCqjT@vPbq7mR5b3i6+6%oRQj~dbs}bQS6E{7YO0t; zz;T>DW2?;i{ORhJs*7UIv5Vxenh)n@&|*n>!t?0%e$O@?0Sa?}nkOgR`OhM_=XY)q z<7%ku!*SV)GVrn&`T7C8jGjuRNVEfP1@B;cC&mAMQ0Rw1 zZaFEY{F2l60-9(eUYZkl9*@V`0VRDyct9}Kp0pfN3N228=^DY*e~?;`!hMT*Ns5o^ zxB5~+rsr7_&SlqWJiqI(>#%k_6Zs%p>AR)waAkuf{e+_qt?n`~BE@dUtEdbC>2-XZ zsu_Ni7vceE)sWb6wba+>p5#b6mMp{hMOE#Bjs0}em=iNOv3;YmB{9h*=l5*KQeSZD zJODk_v2yM!{26p4x^03gx3#2h!8MTYAhjDS@7tw1?Xmi^Hi$-Bz__G0TEyrK?u^~b zitDxiCBLPL^QL*F?4b6j%FW2X#a+eizT7p{D@3W69$9A&<9NmQg%6HkNE1Cj`q{RJ zFHJOF`rYxf;_Ikan4zpsd^OD;Uw6zg&EyM}H^yaM#7`faa|cMYsdNni?55sSWna<(EAg*zR zk7m($%a)z|*;w796HmhBr^4bq-q|i=(hXz=l?@R^6!G)^6%_7YNdP%dVhrNx<7!D} z+qBZCv^Wt~^$f^*K|7t+ORfvW&A6(rj=IiNQv@7!N3EJk&o;vg5rL~ZgLF&ta{VgF zk0*Tuq#5+&PCr-P(fEY$pG@m{m3-+Z)8?*_ap$`%JJFLDhfD_s{C3T|cZTtFaB} z-$dH((fc_)19_RgJ@C?<$2K=$yrT4yrL1U3-@syo@Z#J>NthKJuFLOYAkp{n+fQR4 zah0K<*D7CH_KgAEI-j~)5*~|1F%`=2kX!&*P%*o?(t*#;nt6&Nt&HP4wJ2Fe$JrH1 z0i}TB_g}bur1IW7@D8(0sgh)p3Bb;MPQsi&K5HUYs`g40T|jA-dKVAph%Er6V(n}0 zc{}v07K@{sZS0uKZpTbgm}HN!7Y}_a7}D2mrKiF~Dyn0tvmD%RzJDDCS@4df7but+ zq=Hw{E*n?0*;nyvxkhqTOpeJoWgW{#a#DUB-F3Z)bBX?;@k`>K?sz$kOJ3=-`Lx|u zJs82P>uyqqUE%J@I%mW);pG`}AJ$%oad4fyu}ry<7W(k)cZ3?shFj^hhpMMYAqx|@ zlgjG8|9jt?^?@;K^gsw}4Y4lC>kC~}VSdG56iCf%-83~BqQ6@WRq)ZkY#!&#G6)Fx zpOX?GKZtobQ$~EX75ZxfNfh5QP-XPXlFN&dh!N z*0sQo%|`-=ZqkgsXU%Kq5(jDCC&Js4zxC^GA1UdiOq#ym z&9z`@wIR*e&gHZDvL`-Udh2as;juh{2<3sM*!&l7g3FoG^E*3Zw+4kDKcd{h)b!$E&{-=(KwTRQungoX z&mr#UW*3SWewzINV4gA46*f&%!b3jpY97-@|P#?dl(uAPXqey_mq6Ug#lg{ zpK*Qkt2<1|o=NXEI0!mgh%Q|HrGx+>6AH34gwQ?}%#5>FYj^~C z_9iS%sc_XNIQgy?(RA01J*xDQe(*T!z)SeAW5r!otM@1-u17n%2(b_TfetyaErzlUAWfqBIPmi ze28e_B|eIThv<1r^Oqa;12Z)p+S$Ig2OIo%8d~HWEuS{;#C+d188s!laOGy>*gLY* z&w4+pX{Mf3n6bGX1)wZklzx7z`p(Q-EA~88>~7oR;GB4x0_7(!Z4Dm9*BP`Pti;!) zgzw1AWEa^pM#N0>3D6@&k~tfaJV>HrDcaE?e0{wO?@A@DGP);a${E zl+Hsmxh@?=aplG>Ll^Ql&`_D_X{#3g47y3d8j9~B_GsmR8?c9_zI=h2=D-%0+!<&_ z;i2Xb7 z8rBIBD&oU*_H5dB^#bsV7SsC3CcK)sug2+lm~A+1ese+1ApfLA^ek*QCp{~8OmKH@ zK&ia=qMp`Cw7rV$Ra}~Z>GnJZTK@+wrE;nw%u7kyJk`HqTZ`k5l_RMay5-f+(iJkl zygKe_CpQ!sx8d;|^nzoSL%55-libvJdCj^|xc#k-p&1&dh)Un77gu8-&x)Bzm=gT_5tJqD4fHDA^>!J$m%+iC*%PD*PIj2?cxL%o53_% zF5(ezpatW=F1pDQgZEH6S_&Xzhv9%2v)uvzo(|)=47gFyVSp<#w)@rzI(b1>SlyS} zwnv2RkM&#&yP5s30?gXP*2DKNcj`a21pa~n6Ov`)XgoWDpELED^C7sN@2D&Ls2@NQ zttc8t*l%!xeW@xg-aBXuGlQXix{~mCGvrXQM4F{_)4^VK%m3t&rbe5|9pyVjj!}co ztHvWHh-}vpw5;pWwXEydm-fA;0f&>T9A3Zd8Pc{S>>m71h-;E^&fV<+_KQD*1(okz z|2C_Ba`zX_)8~cPrC%^HWa1!YQhX+J8Vg+MXZ8Ee4FU*TdYs4ar9^!&~de$~&0UnJVm``3_3 z^BaLNZ*Ir}q@l;;>oO6;^U%T&iu(!RESJIDz?6c}zx)_cP^-{&?#F=mC}7Z|KB7N! zJF|lRY|f0&?w*-IZ~ZfK$hTo|g|T>%`|d52t9HJbOzPG%Pa}8(|MiKrL(|aX$*d!L zhqXoLHLGRrphGpWk;?!ZP5VPEPiBuMy{=+Ph`J=UoFG1L3I{quh?%W>^7PJ+CwAX5 z@5Q?$Nc(eN_P+T9{Q_O{eL(HzHz%d$S1zkcZ~B&R%lH$GFmuftBrlzKI<)L&&Vz-o z8Rkn;HUu zK|(N%0>RR@R`SWp|H;%LvqY4Ao!l|sxnixt_Vr2)>WECq1<~oKQips*1lXG}Pn-dku>;?IHQrhqsLCWCoSAM{- z5xAHbHv9!CfG^$y?-54j$^t2jYv~T#S&nm_9}}pZpGHuE1*dY1v*_DJ7{(+OOM%L# z2YBjAk8v+)lk56ne%%4xhy-SQ*eOBBmT~_VM#?@8*~T!9N57cFXtQ23*OEL5e&F>w z>nk3>UWSAL(;$4$!EtC}(=mTTNz{N1B7xfMZ&$qo0)O;fX<8k)0{n=Eh!%j4)2h9h zW8i21hq-&RAC#Y_Otc3RvBqnpU3uDM8q-dUkl2}Hf8(cFJMVueFnrm}-edE(?^=En z>#ZlS8dZmy&reT(c~2GPpDN&uHE}d;%10A)Um2>)uE3~%sF=(AIziqTbV-5Iwyr## zKqlSN-1m9eV;i0!|9LTuZhK^V6m@2q`lEcg%-gaZuZ;;}6`5JVTPzP!^wl-stSsC> z&AFtb3b*98vWsw-y_OskmPBY717~=T+BU_)4Cqly21sGBd>xK{d70keG))XvOXh90 ztpR{j>~*khJ*jW|Mi!B(kPKmX3~!`A|x2%5&J7T7yICEeWGTDHbvmNcRFH zfDk5$g9n@*DgV@==SI$oUk-7gCY+hCGS%J4>m=Xl5_(Fpsyq@Yc)WJXO!g$;2MKUf z4wWVoFOAXT*7h(m`plYH4506`LONoZlGgo3_yICU-Xkc8WX8D{@*={HDTPdyuxC%iTujlrhNjfh5@;h!(9UX!w^s zBedX+aZpRgv*oeVX9(%$p~bl;fIuLb@!AY~ZgL@oYZ5}%=k)dyEu%fZ=S-$Q3?$X4CCp@e$vftEDhq=B-QT4fRB0~$6!N_fK&9A9T zsGF0YfJu|QumY7`95;y%jA9T6DK26m{**L<%Z1pnjM(h7mSZ6q>n}T1 z6M+i@_P=o^8wKjTUoz2oQc9cAr1`t#u9qd4txO4p>}hko01wF+9wu9c)q zC(PbSeYWL_vbU^DTMf-tZZw%-ifZRY;`w^5JnY&`b^UfOniRfCb3f2cUrRPZq&1T} zy0H27YEXWrBkw1y)yOyD?dG)SWn-i!V5cQg6;{{Fe}rp81n*2I=D}bx!s>`=!>rtb z5op)@v@ZpHE|SwShlJwhC|wq)u3`bJLlo5aO7olYfdwOGqstm@Fug{OvfOafF+P0J z(=shW`}_$nGX3#2d2#^b9vNf8Vk}XHZoj9<+o{2fKLEm@^*Ciw=W@10;<2S}Jh7gj zi{g*VRvD=81NyP_-<2MCpls+CzqK^++@55y>T|#C#qZF$XWHUrS8Dc5)F1`YcTh>E zSH9Jb4>Wr$Ol1YI&M0e~eDl0p9p|aq+IUv|d+b(FS7WCB{RaX4nXH6*IAHq#uSlYXra#9yHUmF z%J+*`(5?po?vB&=6g423Huwx@OR@3F%fsi&7boQop(9n-qp|SnlArPv#S_ z;xCUPF^lbp8gA4#GJ2GV!gfpO+RzA)T@*cd%!}{JBlTD!+*DUgz^Q&SY7%3)Z8(vo zr6~d`EKT@eQLN9^$e4}?jwmv=q^@yQlyD{Ac}fe5SeO3vqnczLhK^b$WwhbRTErc?IbswNfH28j*C{F^?!5V^U~3_jMo=ANu?(Y`SsdAYSudU#^fFSbotS~ zvstIu_6|sQet)8;H!HqOUT$frfvW9XmziI<&MC9g`ho@K|sXfq28%T;~zzU9*) z4Aj!Ak3J4~{dP_~QJiGE-t8u?!^z>J`|(l69hI36UiW==7&i`bkIATyPT!NTpFDk% zs(Cu*UieCeykaL2?;V{bmrt(*Y%cZ*)(9E|%+=rA zzkRn!_o=kX`rz0B=Fl%G*d)bt7N+5@A(kIl@8?-Kh=;UX->{@~wui%vdb>H@BFKfr zyTLnw@|gQMr9AX1xB>;~bcw)*(jL4pNjCs9&)+g)804hxzB&87Cy?4GiK{zgIH<~( zAl5&?N`&Vn1neRn?Q>f)ZZFJLv^A|-rv~j=5R-K$U^u+e9)UHG2ImYZhI~ku2oz;u z(m0B;Kj8*oP8xUbIqS{Ko%>(t+eY|O?{GS}ygGHd@_zP{U0k2kWk&uFuD&=;8yg>A z0&pZJ%rg*HFBh5+_Tg5E+B-!g#5A1Tb@Y{; zzk()bn^$af{S1>9r}7q1`ViRt^5Y?c*>@!VFLSGR4}0fh>pQhFvb(ZdZA~Y6g*ghs zq}_|tuyHUefHr~iZls9u5cjKas(_Gd^r?n=Du!?IoN>Sb1&myU;u;)VzBZgU9(66; zp|Dtjh(<|^A1_I8Q5m3>hp8dF!7srNeiY=}cPn$f={cp^)WBD3LfNXCc}L%2NMpu} z={F`3{(3A5>pA$HhRmUM3ugx3+=lq zL}aQ6P27*)(Cz?xLNFYTKq=r|xa~j*!r3IFZY1CsQ8-nrV7;ot>LA|O3zNex&`n&d z@4O(?)^JB`5ildbEUp`AAResZ1k8SAbLw|2IY|oJml;YR5rvIQlb}^m2J?aT%pbky zG3d*oLmx?A(!2-4i-3i&W1qiTI?qdoaY;rabl;fG)j+c8X;j$MoT>8m=Rjw5as_o)?_HfBCp||H4SN-#((o-%IzgCx=xXOp}Z^AuEtCo5l zoOZb%ja=kHu_-lO#*5SvXYE7X{-9_*x36q`N2f_n`?|aQFPOo%U(H!4C;tLj67vFk zWa39<&NYtRxy5NEj_EXvxA^Cc8vQ(iP+`D>47EYL8-A=ZV%}}TN?d_SzzD|_MU+n2 z7d6^unVC5lCIWaBsURUF(wiSGP3=uwlHEmQCh!$Fc)0KKB{wjF2G&8q0R}>zq^OZL z6#n)xWMXZ4q}}VE!!1IaVE9y66dzlru%055{?)aVkQoE#16LSRS1yDRD4w-TSLPdP zwDr>Wy)8YnkJyzT{9VZROMKI>$rXYm^3Bus`uEDwU_Iltw?ho40ANc!<4;a71y3zF5LUNq{6|PmC`^6j)y6^kBhbw04% zmA5)>k&0o?&i44gW;NgPYteSoPa98Z`FHV7_|}%RLdl8dcvw-5m}y~yck>XMh$Oy~ zP(V8*&p4Ki>zO_Vh}x*#OmwU0WJ4vmVX7}wP&Z4}a3>3&s!LP*xT-qyVWAIh3`k6> zEZjGLeXaMd$)q8bmk(y$s9<|HHt zsMV~m$^bk+d3vT_eyDr#*tf+vD_~B>`;=zCEdTo%-yoN-#`sR5#Vtg|iJf%UQGV+4 zg)ODvR}TXiTI#L_B7nu!j@;EbRbF>Nw{o+wqU%%;BSNNim@R6`?9RwT`~KE<>qRG4 z-@cKUAoyMi!0f5If$Q_9Jx&({x?RGynyS48xvLBu;_L7~exCX9B|PAW&3-2yhk}Sb z;BsV^3)zrvYwe6Hy(CZSPd#e9l<@wXDC<=>zlesVKr!7>gFvf@*yE2*iNw=|{2xap z*pg{E%pZKAcw0s}Z2wl0<&6>_8ymqjT4W?o=hI9=%kUfQ)WYih=?@*3dKHwMvHM@@Ew=D!;7b1`7@ zWi;_DU>~)Zq;`%j(jO6^l_h2=H78-Vk~%+#cfQgS*a`!zWAS}(bO?O}w}r%mb>AL> ztm9JHIoj^9WM8y6`oMdy%<#ffis_KFTxP8u0~vp>oLV*U+Nrc7lSTd|tM`cz`mR^H z|3KW_$zF_*`jDg1{c5C`R{_G{^uc?(FOJerXP2&;>D~68?{eKuxe-cwZ|-~DEw69hFdeYj?$J^rdYX}PYYWxq`3tY|8562ND4Tbg`jS)J zf_2oht1QCuQzYT~ydEA0H_aOTn{(C62JtRc!b?~+5$@QqK?M1?lC+~2puF|RJ4l-aWu?+OL~v; zJd%n5Fs<6dKy)HtvuT<{%|S21DCRQVKA7VJut@s~7M!A#NWK5<`B@ItB>Vi^_Z9b_G?z>KD8rY`xb=YHLV~9x6rjS-|e;CGrZk z+Z0~2;n_}T64oR)GUcUZ!tDLz_%Q>A>nU_lQ)*sUdf~L<>@X`VAQn-uK^_KqRW4NZ zL+U9o0kr)l%~PHtcOu1+Oaoo$e$1TZ3@IRr08w>;4@Yvp%Pv6&)70s2G(%hhd?oKb z#e@qn$12}`G|2m78j;IqyUt#O7~F5~v5_s*ZB`6?yLLuA$aOME-@)`II#G5ISN5=L z4pMGMlO$86co(x4D=RXKpwIV#1^ub}?5(oYM%DSZT{lnhoGxC}X>us}WCp{uX$v#t zKXZ0xwUQE~Ss4fl2>cna+WxfVKI@QmO6^qnmtqr*E>fGE-X;Z);@SGGzNaffl0WWI zDAS+#p+O!$&7#S?N;#n(g~^Olp%cFRT)TMhAwg$ zLS6a-XnVlwed=HmexhOD&OVz?A<{x+_%Q{x=vR2~fw`bC@#s6n>c_D+Iv6FR@tmk* zy(2161@?NxkQWNrSL;Ds0-qsp0p}-q6Ij$bhmH#NUpz5hXN97)| z?{~@qyiS7^j&zZRaG{XT^PNAgk@u zy>X;D`%&x0%c04$36Hg8Ve;wi{d&>98%XgYIgbeIbP*&Y6$4Fm`6%t1x7e3w$l~V& zK7Fe57H{~j0VaU(3xy8Rr9Q98Dy0YDhz>QYw|Wc1AgV6YWgr&6 zip_mQUm_sSV(>?R1J6{>p-BscuODD}6t1gv+33#~A0bT$@p&CE@{!Jgmyjw1&Tqd0 z$nnJ+dQ7=bA@iK+!Xnc~(F*Yq*+&_M3yVKlueNv%R456xUrwDvK#FWAf52Nw)tX2G zDRRN7bwTHg;F;riaq3-YS@Q|-z2!fz(S7@Tr=EM`m+5P#*3RP96Q48~IJ1ju);`|( z)lxQ)n5{rf{2ohMS1+=)CHOk>#}pG+`OvG`=HKG?xgIzTNah;-qK^N#z29!Cf?rhk zpl0<+VF6li*$jb=iIImHJZXC9QOZi`>`HlWBrV!tmAZiSeppCWY3N!o@&(Hm@x1ad z%d9b(9}vk{@D@^SMwBu#D5Hf(BCgU_*tIUZJ+!ioaIucHs<3eMawvjP>R^6vwB2@T z6s}skRSemX@pXZE%}F;K-U{S7phN!$QC}SubsKg2n_(D+bVx}Vx^?JKU`T0cX@``Q zZh@g&kZuQ%2BlG?8wI3OLPSzh5CMTZ?{~ku?)<}Az*?+zIL|rH*=O(l6sAD9+p@AR z%t_VT1@ByKMdpVSSg0u89*@>1-2?2&0XG#zY+V?_@{XuM7*%X63lbk#SzzyzX1y-- z+?Ac-@)jXFlYUFy|L&GLuP6B5g`e8?#;XNm>V}t>xJp4<${c)F&`%2fT(6w=3$p&M za?%ElJ0}_;Bgoa78`)7O>t*)+6TvUTT&;ymY%LaGObK(%lZ^hNi^+JEpWWP6aO-|7 zjG;|b^t<*H>h-U4-3!Xzs(=Z`w_MRVu?jC_Uh&8nZhcu(8>iR$3iOn<(9<0TB0ml$ zOJW-0qcc6R0_0#dxTPOv*Qky0_lS)=RL%g9zuw+^-P)l9i zz=}II)qJm!2%5wJDY)dH|-uVFM-yNm#!?k+ik z5hk;1vq^J8K62Cf-C9GhgjJfgA$oRs%AKO`gUqkfxcOd7=A5%aS54*L)WBL%FCsgC zoheVk#OM>)C?~45BpbK85EgD)tw@UKo-_CHw12WU#&@~We7mP)aYzmz+N#A~jO9O; z)^?t*ty`p{sS|a^k9Qx*FE9~!%%s;{w#fP_HRRLF-G*c0klViv5@xx^WLKvff3Ck4 z_;x(nmmp15v_LgYtl#-<>?xw9@OAm4OYwsM%fvo^U8y)pRO*>1)Hc9didYHl5i8Fb z#~$xv<*X;%q;&wF3fF<~>+UDfC~^<##(?nvNPwm&2L*zf;UmZrHnKRu+x@D>xGHK} zTdpx|*5q|s8vZZ#RKEXu07`?a%Hd-utMRiTuZpjyO2;J+6^qSb&Gj@>nU`^ zt^YyvEpwxihfqz@!c)?Pbn^^m+Mv8!0I;z`2EW2IT}`m3vst-o$`{({=A`h$08Aja zXUC|y_+P=*Un!{s1^(BLD$Bu_iVL0th;)!$w=w?qN)FD8TEaz6e1KL3}CZow=~ zvuY`G6B8c(y5EC~uLFVgwmDJ@Omc+{ESyt)Yx_qJ_F)WRUUU@Sg&q({>#%PBW+MBo zGEXN``|UR3u?IApxMxkBcinOY`ct zckMcjnN8Qd$L?J8Q4@fo+kxeSclw+zPslkpz;QL}Q(lTv*w801RI}3$S~eA69LgA= z4ra37Mla1W;;5A}A2+(_>Sd9;%%srA`IEma|KYLS7I&{Ll^K32TY5!q{YmVGpBPs` z5B%PIphePmXmO1_s9j*y$f}GJY`|^R;Vz?fBW8wWQstVRz55@=)6tFCTdG zlAkW*SDn3|*9|@nZM#QS_zAVn9kOgdQ0~xrXKA6&Bxu^HjAc@h%D1@aZ3>Z?OXi_B6qei(Xy09c}*w(#06XfeM zYAOOzgYe0Tdm9}W(WF%whQF%$XdM6BBJ#}vKvysxb0ooMN1AgeV;*heii_Dv+`n3F zC;r^Lj&MyqCA-q}bTu)udYbuof~_+kl2yHED2(;1!U{cxbtTy1GHny~hdFCbc3`n$ z>VxRUZI{uF@Z@sCd!=f|%fsAYNnKja-UBCTS9&udyq5_(5q?@_l%;lBB7NL(Jh+az zMW1l^iP7zq_z$tIK)!%)`Z%=eSR8ptefo24H#1p2<#uJZ!nL-oAb-hER?zXdab5Ms zP$mxl7m8@I9cHilW9Ss2e2CGH9cKAA(oLjndbnnkOy+*~;#+b*b%4*G-Jr6~ zOICq3E0oa7hfL%G=sYc2MRm1Ndpq2|jLHMQ%Wko>@-}~)Y4oi16Mxd5IqxKuSC+Xh zR{{b}Je(r$Q3w&w`ufxA^mF5q2rDBUkb=%sb%Xtjz_cbS~OBIz|0PHtbGb9AfX1TQARrp_^VDD%r7~+j;VyNMepUxnL2Oo&Acqnwd zO#LgGJwpM3dYp2rG}hr8``kT@DFECeE5i}acXpU1 zu0t|*Ia9+VNp5ktqIJdc!kJ|9>jJ;IXVJ~<6N3jC^nnLuzA2x*y`a~O;2x98$}HOc z6cAAUHC%R-XDPFy!K3)y@zBA@jr+TF50MXbUQgIX-;1S+jcNt0nr<@_%uJUzZZhWJ zu~3mrQ3;YLQ0%+>67VidlaS8$COz7AK#utxmfkr~B@FuG^c-|`+!OS(AVMwqMcD)C z=H<&r-l0(MFjnHa`@%(wrw}-mzOj9u@Ul=F^s4bvq(#awu0FZ}g=cRlo=?jy_a0`F z437w{lWWBG#n6%~=`>-{lpq}+E9*9?WR4M`aMmw{H=Z;a0<)||O8QkrdI_}FBevlA z|0?VJFB)9NFk&`9;rJvG5aRg&f~?Rh?zOo1ibQc;3e^XsScvL4L>6d$aW|}($P0|` z3OI;mfx@Fe1^&2X-RumVy{;QKzYn5S_`{6+5i-zf8uVt3N?Kw4TaAVrOLz9&2WN2MMaMS`yGI#t0sO#`?%W*JsT6OsZL+Uy2aFhGTI!B@5c2r>fE#z^I6s%yA0GQl}uMxm$yWifO1f(k3U;h52NGXf`U$M%`fB&5Si>>@OmuUUy<4Z1j}acEo3d0|*M)KqT|R$^IAyNA))C!i zo)SjPQbgl~-{0PzpZ@q6OS2G&j;>)Bd)^%79ndK$u{eCz1vbd+&*C8jFpRR!|E|6~ zTUwrToWpnZjq)m*vIw?=Ea(oC3AVjl?L1okrnUI()upnyq6nWFPxaq$1p=(fFc_|S zjKZuB*ZVnrFtJ&2Kxd`dU9;jCQFR6Z6tcfZmw*_LIG2U2%FMiVl7+m-; z;|Vysp#RiXKrUgI3>v6a0HH>JZCXNrN(KYq|BE0X0ia|?02uQ)mbqj2Et=${GxYVX z#I9lXn1=fmb8WBeE9iryy^!OZmiU`i7O+!u^9yPTH;x>U5K`;EqUqtqq&)Htcm{JN z{aLsSuMG10vr*}eJ*Q3Q-6~-CRxrTy>d?y9?c~IPwQ$$!&KThLCUGX8v6`Z*`qz^} zRlxwhqV;1y`}uJt05WpgduJmO(sEMLVD39PIQTgBcsBNKLxN)rxHZZuo|g$><;!h! z@Np&6md8W+tI%8h-*&%!=KFrU9{S1?y;J&9P0#ZBH0{&=9LhcMO|9eIDKQdZl9ouG zB6t|&bS9or0zwCLVT{7}sVKk4>h1SW3N_-*u5)e0QOk+4nlK2K#|fGYX0ftn7*p36 zhm(^l)#ApktZ|+$bQn-e)e2&Y--V)a_z4AfN{`$b>{Q z;&Ub=iKv1Xse*~tJ0}`##S=+gghCJGZhXg?@**u;rdBkXMFPoW0l@C3H@{u-l~2Ml zi!GM{RjHbwIut;g9~7+SS^u5$88KNhdZ(rEBSNMocvJg_+E?0tlG{)40HZ4*&Q4V( zv6pEA^#5)Q7BMg78meu4{5H;l#|Oo zp!a)8{N?(-9GJl4>$mqsxn#hY)W4hs6gcC24PSRr4CevS$|d#(Utz*Dur+ zLMvECY!kXL3Mg_NC6u5Lz0n|w3XaKaz$_hMo;aIUiiO3guo3W8I5-IU(3F;NMB#>< zENguYb#)CAIda^n>?(M^Sg<=EQN%*}(hg>65ZtA5YI3x|N=2W?tI?ZY^q&xRRFqVv zz6Q(fo%v;1<*0iK1b+vAk`=|gA!{gkhFccQ6a5A<@t=;9A{xm;EiHa;uH}RY4K{e6|AW&J^}N{2HJoebi+C#xURuZ=@7q$H(}*5g%llQm zVp(3q358^nE<9yW(tmqYch&@^8=DovCvWaE8cZ=)tzs3kQVbXPynVuD$OnTm0HJB9 z1bk^Is5a3jVkzR4h`<2tk`$HF49~WpFYViK3v@yo?9RQ_IB1R*87TR&cyKm zm*>id1H&;1u0c`oxG|UG_Phq@%l1kKBSC=-XH(bm*^c%p|BsHgrUBYciLD*YeA0i< zpFCWm7H)McmbQ7K<(|X7oyC;vMqF7e72yOOM|!f4OBYCL@-55u*T#A^Cf!~Da4_5+UomSdEG(R} zLg5gu=0P1vL%?3ym+_FQ9CWXhDwu3j7R?{RPx9PB@2%+kE#k^2o}JCA2nIw5s$!XHUUErr1L%E=e=d(23V$fG zO+~)ioLc(YJGc|@r#rLS3i2$rSMbf37;yJ`*V%F={*#N{9~VFG4i9o!?fc$5B@Ry9@n^Y9Y^?F!W~l84li0@3ymptr6aobkG&(x& z&m3}mw%jHt&nA2r`pWSF-X8b7j*m2;LxYfVT}B|NC4|S+M+Gq+Qxg*dKu>ciK_X3Y z2t*c>b!BY%Yzz%j6bq`N5rm?UnhZddA(aj}pOq0go)d2z_8$WR&7_%vkb5^WBnAL! zY%0CWef$Ju;shU%hh2i93z?MU2wEVUAQ?HeZxgtynO7b~8Js%Y9tFq3|;C)kk5 zuGn;&CuD6u-fK>61fgBk7T8wGv0{-9Xy^A*7mrjb$Y9IP`p z9vw9{4*6_6S(r6JPuekqM~Ix>EvZNN-!f0-qTwdPj+`BbJ7*0BgQ+P~p&(i7PWk}b zgVe&Hiq(3877kTJP&i7%Qow+uGLp3XwZ=FonT9ytHztg`2v%x2I@IP6W6}g~YJ@k5 z@VAlxetxO5BT`({sTWKQ`is7fHZn>te0!OId2=^tQwODDiG6;0lMTK zs~fR$vtwUTasvg!eTc}@Rk`P$DQdlH*-|Cw+rV-2zMd}MD+R?u70q<62e|3~9fV*^ zE_KtTOKQ+-9dVx`qKaNqZ$twO$oL0W)=4oU&pTHs?pnv66)TGFE!^1O9A$qz3$!g~ z2FA0wpHjxskFT48%_~a+`Cs2X+^oA-ypo_Mm}Ks_i!V6o@#g#Pz-h#b_2DlQ6=kv+ zi}~+=zY(f|+Q#p35e|8SQjX@bt*iszcfhxvxF-ZeS{emrgRjRE^>pHv(k z%{?i45gOi^Syou%272Q`Ed(FkbufTM_oXBfpa~_Ebb%)dBhcTY;@}7OeQy4JLrp@L zjnEx2;0RI*J~TH#4kjU{{geAvF5pZb^znw?`&h`XibU-V)<}^*K7JH17im}oQ@bN zoDdwqAm9>pnQ<^V@73Vy(`o%f##!~83yjg+y!U7L=79+oY#v?x9;T*}EBn>J80@+v zTUgFrWCyPEbM32gFw)<6gTF<`Ps8Js$|TqBFU&aVHd65QWd=#UuUhYE;j`U7jt7x? z(g}u7zVK1;pJhjiSwcprUa=W3hyc`ueAcA~hod`!!aJe~UnuDSvzf3Fp^v6H^(YTs z5irtdoU}QH?;*`l=8Rak(F{*f7_ANxYz2&Sd!e``LD=E5l*swBzOxqlYRYb$D`FRj z!0iZw2mI+a{#SWUp#2ku^10WuhI;6r3y8BrQ0zF|6$T&v)WUWcUQkl6nxnJbHIaBTa4iLBMw~$BXv>PNn?*x@h-JE_~n{3gc^i!d;OH}*tnh?&t{OO@K zJbl1xx@Z^+k`_Py9xnP%l6_R@y0At%t2t20x5G> zQKhn80bHJw{_7Y0zs2|p3P78@pre6zi|9)w2Zi1bira%peG_j2gU3tjQ7nlhVt^$) z0?ir@>W=6A2(9p5v4r!{8yM7bbDG^@kH&}VQ{`7e;Yu^Ees@&1D|cAGGcBE%OK|jY^u(tp*WzrdC=eLXM?0L&t}b8flUs1-yuA!U(A|9qQ@CWl8K$5jAD(GX zx5KJGsJ2Qk9ZZPeEd81XJF9}AkPf;nOP;R^+2+;<^ed1O_2h41Odk~802(LvYK*oD zjnTiKIy%J4o5azdA2k(ZQyUOBiF5(Y*S(I`?3gtX%67g zKVklYBN_(h08G|F2gp0dzG9g~1*{G6^iPxT*X0l)^eZB<=abik;UfTAv5)LK^Aopr zlaqvv3eOFzLvNw&!kXJS1Rnqn*Bg@=dMEFFdKpSQs7Qa;>%5{ACEtjO`alVlo1yR5 zNX3m`*GY#GeRcH;ocFBmjK53$68(PQy}0@3Hrs7Ok0s8jyifc~qZf>h?F)2zgVG#- z;odCGuFHJdunO)tZnWUOzW44~>1sLl3-wvtv&@qb9nqVri*CM=m;Og(?bh!dze?&n z?+v}ciZaTG*7+N{DjyG0A>{y#2PMNF6TZnSF0tk@Qh$h1uV@TdKaCr7Q-l*aY?t&u zuiPmpkdypeYv|?)a;}(})}U?y8GdH1Cz;=%iN~)Y(+73quykwSmpQY(4s}00AE@LF zPQmCvcjuv2{j%gB+&pTfx=;?6m|mOWbP&*diH|K`1yFz@4Dr9@6ci4y|L^mkN(RSb z1(srd=`yHj>Ed`PdN_6p;#T-p4EI$V$4@cBVJMRNx@X1-MW##@DGKX zN#SF)UDst3^s9qXHJK+Sud%n^Rr=p;R)4ECsjqXWKmuotPyD5y{0^a9xXvk3n$tbd z#cFShBIwBz5tXy7CN-p8p>;iS_|TH)cxEQ}_+H;{zYq1}T?wfPH~$s8VdK6h5e>Y6 zdYWf}+$y>X8Z=kxPtF_W?!QuMuF|e}knSX?eA{Y*hfIs=jiN=dl<%;QFpTv9s>e1Fo+ko+pKl94Wqfp>7vH z=A9aBo}8^OZ7!eJ`!nBEeQi=Np|k&8BYe4ZIQz5>;okDtB(H7b=%RY=<*(J_NGcJz z4ML6nZ_E_equ;$yTohu{dV_O^COdKjy~vGFBpNVS&PVFaMU;=%+ffRuTjnP+t9#w&~2_%i$v#Ks{JeQ;}J8- zC9B3TT5WBSsQI^IxmH9`L}54+@?*lh`K511^YBy;#`4)fA}I2DYKeZB3CY7=q=p{3++Xv}`jy4vO$C>wo?xPd;(PJc z*VMv#N}}2wj7>tW2`7Elz8V5MbWg(pR+>!Lt+H$1r-!7I4oel4W84k*zt~eHhBZpP zeoK)P7}j(~W`F0qgQ(O=ev>Lo<^owIm zFw}iO8=p!^pGk_EpEiDbqGF!b`2cg24ocvSr=`NLF{}&ybpCRkxz?@zyL_=?OeP{0 z6Qyo29uKh=d#aNUMuT8JoB$QksiJ$Lg(5hMsJSn)T8NjG5Yq_K;X%vk_R!)eyBw&! z>>FR)HoUczA-qg`WVh>|ueK&SN9Ipx^b3V2Bg#6`13z=0G81Q=&A)H4CO|wvdst0Ge=8%+_MKh&L zDo8S0C-kS;uQhnRcaLc-{&sPFX_CQ#c6RCq z%B=+Lk%sz$%bZqA_WhN(=cz#OzM>`^9iIeu;y_U3qpoh8iainwxpf_<|7;@YQ}J}u z5p?U!t4TZ&qVe#aetp2yM@E1D+#sqsoZ-c~7ni;zgRmi2A6Xu>xdqTpr=rA}EMR?> zk2iaFmR9YLpD8&lFQRXZzLQR__;luP;YcR}ZBj?=58pgWzR!pIT}5s3PY%KyB?m4| z$0;~`0>tFPoTGJM{_KfqqY~TKn;`h-;!lT+%a3Oy2BVN{ZT}8)uT*^$9w=;pNsCC` z7k-QKd&bE-NN#p)_vF0^f9zXad(heSRi&`7RgdYQw#?C(p&OPo&TH*NDqky45~~2a zIh4Mh?P&gZ=)JnxRQcoc@bZXRW4A@2y>~enKr;~UiDemTFd(Z>Uh28`txy zq2C2~T|K&hmKG^D1oQzcL1Y1nff|Ck;&Ds60y={(BkZkaVN*K3_bJi*{P!n?i+!TA z{RKwXCxe}dX+JJp0ZhwZ()m(m?=m)m=*Wf!LNsS~@>^U!o%HL?S@d=|&N1H$KoOLe zK5HQrKVP!@#5lweAGcVwX!`3H+~C0Iz0YPqfzj37;U4iS*NfWcqPH`oQcRA~%~z=t zrt4;fufAYU?9TmlLNC7?9le^}(JA6-(GxW7{ZROcVG_=KD-+#L`ACPtrBYd)9ei_G z-$KzCnN)P7D@9fLp!k(*QiCKCpIm~Vi#1`LoxHN%iW^9_Qm6(W)#PQk0R4ynUMqeY zfRx7Q&$~%We(X$n5igq4fKxg@HhIaprCbl$IjJArjfVm-^nekWo7D$#<7sA0DNjea zc+!SqaC%HXE#EI#c~=I&U-(5XFzo~Qh7KPKy;zm&CtKX1j;TQXTM&t~Re#AWOpa9@ zt-rZ?J>Ncv8}J6deg&J-({J?l>Gu7M8H&sm140dilqwK7LY{@JwDwg;@T9~N_w`u1 z-LCS@$@A%wiQ}bMc1zzXHpAqYd;sXXY{j?miZHbmlWF)|IN-I);5r3#hj4JeR0s8?l^GR`jw@ zKv~k%)7UzZgE2<0Vl0;_P}|P6ASFW@ej>#=!b%J{OvP|d6^zh=15Z)%VB+fD5p8k> zFl%}PS%FUaQ^&D>l;Fn4ByObK8xrpFT3X2I9U%FD!TyLaWf%|WpyNQ1UardFf1j__ z;#Vz0++t0PkuJ=1qSxO$rcWcMh5MGHJO8x`UaI3t8|-=~=*=Od`H?1`;cMoPz-wZR zp>_g~JUakvOMW>x-(0p0%u-(85BH2-p2J+pl8=Kfh2C}cZi}-(Z1B#7HhXjmIeyLu-$Be&U>U`33qp zs~nYP#zbaXV@uBXsfB)n+meA)AQ{g~tSHzH+ST=gXO>6i6qiA}^S$*i0T3f0ObUS$ z*kCEwV!4BPZQoJ%g*fMgBe6X1EgbR)*2{E?`Lo)JbK84yHzJ(G)35J2`$=2x)uZFK z(Bvp8>tYoE=+Y=Ub8x)6+nz^TQ}Rg`GlzOE<8z0-R>q9s(Pm@a;eM8m=xR8?TUNxS zQE7PIZocmyG!C+mC^J1R9(u*GvSYqxlHMBj`OCk~7H(qODT)L4Yt>4#p6=>daEG%B zS!yFoY|+0z{n#pzE$5Rc$|=Xm+P;s$zFyPbVitV9Z=Vs>kGP9VCuVIw&ygTaX1Bj2 z%($GG2j10%k${V_i(t6?}hA-DE z6i*6;0&am`oOnQsl!!`rEd?uFe)|sK^%j3eWvvh>P&J5cdVN-wUGq)8P53>{qxDNU zPu{A&eF6Y!$GRPIg}nQ{2`4egWNz-ex^(6o2BW4xuuOa$0s>s)7+V3YqSw{k)q+zY z5O(Zni08`e6M5Zmuet?Ea5ZH<2^1=2;t zIV_yWr6QN-^qv`sokre&ml{RF^+~?m(AUmaxBM^g=+gacpk%1${!mMAuCLx2!e^RPKBu>V3-y|WwV1|_zfRDov zG+j;FP6BapVhAg0;@L{@b|ZJCTx}GXBtpI#PM45Cn1KK=5I75fP~{iUr2u9$44n;> z6ss2tvu*80dFe914}sc#`!&sE1ufEV^*dPZaZvy`?J32r0C1|BueINM7-t=(ASNU? zVwg~ixF}%7n4_EOAG1D%qU0%2AJxA*^x+IVkIyJSI`$HkOt76Y3ELds?k6<-g92Fu z5>Vv=-?tvIc~*DDpgk~YyeL(04hF|H9KGX2+*$EK%!_a8g#*tk$!7}7I~Rf=K&NL= zF-ZI}F!pgF7KWaWuW5In$N6Re4`NFRe|z+Hs7da$^VG+u`lU0jFumXZJr+aCRdLJp zsyyLStYN;6YwGDn#_K8N1RLJrOYt^f!(-%i#>OYvO!v(lb@fKx<^}PIk(B)uPQABP z>8GU+_aGV?c2NwaBkw!-lJ~j8LRq^FQTY6q6Zr-MTO{=;7UBr>=5Md(?NZ#>*>1SH zsA4s%6iSI4&!`Ib#s_&xw33wEnz-Y7H}_ny*!vn`S5HE$RU*VX}A3P2oyVeSGj zCh0psfn!N9*@-MPA_SXnQISn-Ez`%V@1D4$b3KeZ$v7VZSqbgXN5_KoI|v^bMz8QL z8bXMoNXGq4boZ|Lw|2`A-_y~8pM>bno|tn@0DU8S8Q_6>S|w3KB=dKG;#XhwYDz9<>2GgKvAUUJ z)?~vsOt(9szfXVc9-W(b&w*R_7P4fH!HivV8z-y_M}^8%t*na`usF1!fLN(zQ>KX_ z5!eq?X#Rk;+5b4uw;-fhk=0{}S_T>TZkj6njbCqXdUcUzs*hRU*^DpeV*ZYQrj!DWR2|(?Jh5>@;Hqb4tFUvbZV_XC z;i~fq%08a7L=jWgTu`!A#bEd;1DV|J53qfwT0>I7@$4DK4Z)Q|5PjFFwd#JV#z#KO?`b316ap=xTTqA&v$^ zd!k2EO?Iazz8J>CrDP909G!_jo?sC3)^YT_`WZInMfq90R+XWSvHBl3rD|1gNz!9W zduFi#+J3>eZc>sCs^(*ydI1ehOj$cc)t}hPlUcv)=sX#0o%s1@#A{N2$@k^LaIDK8 z$mw8RzPq;&#mEi*)Q&UObgT+K%bFbFCMXiqRD|jMkX!>mU?hOD;!H^zHG~-B2x2p$ zrmiit>c)zq>&A2L5co?Ohn;f8Fj2>{|99Haj=m~GP}(8yI-+uLxky6vAScWOA+L?M z7Tw)%#{i&%0c!?Sh8sNvL4k3=ZOPe15snb!&_~L`Aqw;eIB7A%F=C7|) z&Fi~33dU&f)AK|ojLTmgg3ynIW@uqRzEBOw!2L0|H-DX0Th84N4b^{taXB#hc)mH( zHtTrc|BnET*E2U~`t58S4sSBhq1LHuh^HjZ{HA;37~~$bN_xp7;$$FT$X?ai5%haG zzCqUuo_Hh88n59$l7nB~@{%1df`g{$>U_-EmU1(8YC+(h{d~n&J@tFuJa|mUKYxl| zx*26?o2ENu^q!n?|2Uf$0a5OOtjENCw zUIEM7Sz&!r=+U9=xV|caNzSvf7O=7g>Pn0hNXhGXF#v|Sg*2TO)6+dWd0ivVNuq!# z!u+A+M*un9%SXKZ+LbOS2-Af zu5R%B+)JNVJgBzR2+DGs9301}>nKSuIx&~A=J?9{*^u!gQeM_$~9!M|ZYTJXYVYD+wy+qbuIh zwTGFp;W7`><9)y}d1L@cyE;yNoD#+fRc=lYEoU95w3D0IrUDdku0+(;SVt;uO%fcW z8Ua%Q$IKdyJ3>g~{p9%Q^Z8?_hjDv7$He~HCmQbla4aUv#vzEmH>aeVR!?~VF-wia zMH8)q2LOKvelc?EnyT0yKz{KFb+~@ZpTt0E&3{n?>d;H%RsG zzecN1JQ#ET>e&w&h-Aata5wfJU<7q<<=&aypk=R1XAD^M?`>MM`R)(#Q zQKVeYEG_?@?Ed9u_U_|uf$gmC1ial-nCUNTWbA(K7XY45oHDcK#Gbr=$RxZEcv<~8 zrh{@gzgg-6dS2&}sVZ4#!eh%nX6q-yhR7{}a9aKtMGp79Ddd%{n^l;m&0jk4p&OQ8KSSB0pn*XS&?J(Q((Yn}P#P5Tw^-nq~&DmGAE zWa8YU!X&JT7X%Pv8KBz*LdP_87Qy+S)B%Rm_ZS&DvkxS7Xv?HN)C3gtJ30oJF-yZQ$Cuavq#{|M8c&9j}dkD2cHM zDSj6{xSAn+)vJdp&myvvrSoTq%5Ec3Q$TdjVqa&};fk85R&&X4nl6yGl;3f49rQ^1 z;HqzH@IvLNe71z$(wVZT)6!0n5s^cSwU3&1xa2m|4Vrj$GJN~}ue8{Mnw(>|Pjj~_ zN{8+jfJSaQSy#H*v0u!5|C_mC@tx;IQo;ngUvi(w?_~+V^k!g&Oi!HKX8{|-IE7w( z2}mV4rW~YiayEK@W9DDtv_`ta*%)^Df}t>d7mk(V{nkK84Ms=F*d*zfP$s(mP+A++ zT3a4o`jk1?>-y`T2#2UiLUJ#H3?gy>L%kT*wu0D3=)T?%%rd_b_E@i{+%qRRCA}re zI8QTse>cD92Q7w0a;L-e@7{P>^taoP^IMN~*2fVRwfmn463J45R$v{(H0)yY9&BSF zJx1ogDf<#}yg%Sn*recl(Fw2|=7soQ+$6=9l&OD&V5I!toF%>47_ABRJGyuMY%ssZ zjNEctds?(ef!t8c%DTA3k_9vChTeRvH))2QF|r6IGSkK1sVLbyV$N6xa;hJ^m)axz zm~o5$R=q%+d2psUs)kSAF&%k4X>ZPG zQP(z2m&P<+NmNNK{ug0Tjw*-4PWY{O>ZXKF3Rg{>L(msykqBE>+`-4?{8Io!`4VC} z84$fAR+GNXmcVLYT@it6;BY#}Uk)%Zc=IX5>2PTYk6>I!`JGRErE_i76 zSlvD{^y1=$Nr3 zkl5}dCi8UkdDc6n^uxX2_o-Em`J73aaAl)&qz0aJ?CK8n1TuoJK3UEJk|F40fOBSJ zUoxLu(hAVU1N!U*V%V{wykIPKtvrH^Efo72@rnhkK&1p91QcJhcF8BJDRD`O#$k6$ zwQI-$AgZ=VAdZTa1$gub7=Jvfuomjj9K`$_Oz_~cClp`^4>irfiCwAiNcJD6mpeoO zm`#EF9st*|1|t6+$~7$806RPBmqu&1f;{4iSB&f0(%aUfQMm4e3%91x^4~{Yzet|d zZMiV@>Bg2=uIbB{rWC3C=Uab&^DXV*#;>oEgxEm5i}nX-P0XpnrP-mg#ZPn5Y@Fxu zrz!?6wLkdryit~mOIcP)4s{x%XV{1R+l%KkhkwrHp3vvZ1V{B>SJ137H5z5+ur?6zyK1UT;BBzCnQTqc;r08D9pP0hC;b4%a{L>iydlGLq@hG3)kT!#6 z>tVE7bYbK$2M*%+H{|_jMa3Bh($=Q!NozKs%LBj>GJr0^jUQb>xCPbGCgIsyp0x*W z7&BS~MoUO-*v0BqN>Gb?^@0SrXVQ;~__G>*pQaB7bmoy=cghtnSJQ?ZW`F)3;QEJ` z^`UUdR$1CA01T%3=SO?L_3yUNM+&;%KR~=y6P&`O^dJ{s`_}Y(zs{h|-@fCqCpj-y zf_YE*hYvkTU;qL0ob39&pMf;lb`6n7fo9Rf3;Ek6%sdj#`btVu-nY;8SSp_?{j6tl zX_iftT2v_X?>IAE_!fBDx#AiSd+O2YwIMjf|2}9@a+F=o{|RG?9obw9uZJt`D|J$Tar4p@d{bj4g?kd<201>I;9E*2>ZW&5B+< zv9i2;a9`QSt2~Wg+qD=0dZn@&tf(`b!9|Rem}I)AC(dEHlC~%Yi}R3uxrZJB8DqM; zTaC5BMiSuUZx~LS=O0Q5-mr{|m_(&RL4-hoN&nd6v0E*@)(C5s#YsNVcZJst4nD<< z9mRnh6#q@0m?}2|iQZ>6>=s+6di(;-1X}o(mFoW!x@(!2_5bK<=IBz+?eGFMm%Q@p_7U6v>nBefO3!j_IiM#PvEt)=hGtY&rb*y1fX3; zjr5jpl@&n(H1IlXuMyx}3B^Ifc$h|_P*e%dw~d$&f-0|3ps`Ls8IS-mXXwVXdmQsn zhHex^QQE zl6pJjEB14@KoZUfnB_(;ooVjq-h>P!K{Me)(5b`e5N?FUca0>zVa@%qMqVo@6&uUM z7|VwrQSmtq@!wt(eV8jgaL^+A+neV0C~%jN>t5Z;T#L+%$zPZop!a|*_={?j;JM?o zKP*_5+#gu=t-~mCSVzI!wV!0?fugGHLZWnBdNkdbBL&%_g^;2td&|?KZ57vzy$i$i zKl5JrQyB-0BwI-i8H5>Is*a;v3tzvQZnRshc)q4Qvwc0E+A2jEvD67L&;SP(8G@*K zB1$Pnw1+Vd;)B4pK0ku?dwcMWj!At_>>e@e*n^Kwo}A@SDiyKcX^8?xHuzBnEW0Ir z$Qm5kYu?$!NR(XNph~B%h!O&U02lz+BpPGzd6hyz?gHK;j$={J#Zr^0aDR+iM-nyS zo4^5SJbmbef~Wn=i-OD%V0t9?v7qVi+Y0ty-H=X z&zYEygAxZ(SPUX5W7g84(CLtUYOV>WV)htnP^9l_=^VfKz7}mW3wmufkBFzvYHA>3}j8U)zImxa03v#2pLD0 zgqMSDqMTx%xtxV!c<8(d1V|Xb$%TDDnC{s^d@5uFmKv^XLQYE)jk9$(L86}~eo&$Z zD!?&-a@#a6v1tJ`esd^+k0Wt2C{SBMt`NYJEw+#nKm@=PL63}`k)Z#_yomn)zzHEP zX1ePH@=VG&YP1dxB2mV%E*{=W;nXV%I2Fr(po!wGQJY~XFH$k6aEif_%!cf+JH}wF$ zvFj>!^4|-&~wws z0Hz|8Q9LZJ$)qNRd-6s&l;-=mYVe!Mm!A*y7S|6W49_N-D+CUJmYn6SY0CYUo$ul; zar-w?7|DTBI#Sc70T@DZ7iVxNJ>V8o zCl{OC{)b-m9*Trv*rUTuv~4Wp z5hOHrf-St+hCh3bePgI=y3zb#3~=vZWH5;t1I8geu5bRk8j27X#iBiyll>MR>BbH) z;5^DFbliBc6Tuh_c(ZWY z^?H>w2aY~o>hH<&qlFojXgN}u_j%i1bqKC4y9mb=)=;FJ6@BewGmSUQL4Se|MdU{Z zSJGo52a6G*8QTdmpkHBCLx zAEMqfs)_Cm_nuS&1V|u>p=qcF2uiOaA%xzmbVKM(>5qzF=plg8ML>j5rAb#%lrBx_ zMG;gGm1ggaH~)3cde4W zy5kh$JVvTP<#$T&jS0kFp|mJFW$$5Z{E_U+@p>jx50~j;jIRJGW^Xaxx~}z;1kTC{BQjIn!$*x@hvl{OGvYUeGuh zuv-l7f0ox9w7u;A%5^b#m6Ph99Cdo$EL&H4F>sq%u%hXB>+C5N=PysJX`X*SoGeU^ z&NI&%3G~P5ivs}Te4J^-q~b3R-LoYzSzT_o%5Csle{A2Z6s3Kbe(LtMzBOk5TJ;D8|6ikXCUr zJ4qrYdaiTKEvS#AYIP}xfb=8)MU=S&PART+WhszaY?>Hf01FH1ujmRmf5X|Uz0`ZM z^*OH+8A*6C-qn|KG)Z!m%h~I8Vwm2qYr?jOc4}5Xn+D9VlLl}Q9yb(0WPe3jQHB$_ z!5OT-TuHu?!q&H-8kK(^@(GS{^t`?5@YstO<=$HW;1l|F=XhKZ3ieqJbV=y&(&73Ob*$$V^ zNH}|Ktl+17V{EjMV}nZsUm%j{Yig9cwuDerRXG!9tCXw}&32LovSuq8@&mLHaFeMw z%`CBbft}TbGw4FwW@pPhF}1*Fo17*aRe}0nh#NJ=B&S_Sb5Ao~tZy*rC;TbGJv=hp zcDR1OoSv8Q=F({Qt@tid#LWq=q^{kK0QRrmc?Tx=#aHPYrWpm7WtfL4D)+zri2n6Z z^h>+?x9BnR9%EZhy@SKCM1BN;rRTQ`a!w8hFo5wdd;sv=`hWia!x>v19ZR|>A)!pP zLuYZZMOhw&bI-LNCy?fp<~1kQojz~tdnFHg z%U$oz$Jf<}8K*D7p3jU}N-&+rQ`y)u^nx1<(Lo8j0^GHr~D`59{MQ zIZ{9R{q=b&$_UHrh8kFVCjna5?n>m{7nmXNxz+XGwf-HzfGhtz|2tPoTmMQHRmiNW zC-@qE|HqC3&@UF%S&p;WBNl3rYVe*P<&Xd)|DFZU0}(s-w?2A7pPq$xI~=c@j0YH2 zUOgL6pGF+ne%)n;c^uw&QeS&y@_2SFuJos^bHM_}_j_D9wDs&-5{>rV>%s2h77~uA zmP&ykqy^H)9Dn8Hy$OD)6eH_##GPlnDEj-W9h{t9)zvxg&?Tl`mS1GvD88QV$B1D_ z=Qc`mB_`)lizcad&{SWOYq<+AiV!58dO{LyM(gwWX>MN#8a%{fs0)=TO#%wCkN>r8 z&YFqLv;4x11-0>K(nLo@T7xm5-bGj1zV-UGSh=yxuh zga&XfXpI&4t=4wJllDW$M+FJbvRgYi=?rL7BXuys+zEMrK$_xDiq_0JHqUNnlo&G| zr;TrFdM>;n5OW&RB`<7VIQa5wana2`4)_2oy|J$8!=;>#@n2pUh;c*#fJSi3dENb% zi~8=GzN&XcmwHSdwuHA_J^dlY&MR~E(dToU^w9n3ms6}%#W4KOeNcc~m+tPn;-;by zT#E{_yY9!Axs*-H-K7;FDdi`h^phk?D-B&|Go@!JsH_ZT$6Q8BmrcNg$HW#-;--pq zfuYH}J4E9NlG&k!ve+QMhr=a<&9?L4#)chOTf-@ga#}^G$I8u{NTfNqpb^aUI!+OH zv5b)tDf+c`pzB_Eb=><Y%F8Q;OH1bfL-VK37!O2@dN;9_z(hxn zBwyVk83dg!+|LR61pYUqSmzsS`Dz16Y8S3k_ANH`MGcZ2&&?mZQY0=c0Zse(YgyCH zl^V*pa9aPV>DHKP=Fl*IOtCZo{duWIsxG2(zC%f53;W5!Cg$1$v1 z6`B1dCZ$t2@tkz~T`oLM$r}%y#n0cZj1&fHVc!tSgm+%@U_7xIf$eWM7$YOMweTL= zS^(J!gi2%@xBw}F{9=?uWvF)`THd~xAKE4?Cyy0rX2E@cMmoNd^z||rL?Y_6@uRC! zij-&&pPR?vkYYv>2E57ju4-q@)_}<*t!a#X0P9a6WZGEaC_?R2KiwNigF?ZrRa!`8 zuV^3TI^d}UdqZIjkMyhE?Ds?cuAjfLp#6`7UpGHHxpaT^wNv{;feHGn zTa7*Hn`nGq$Ty*DJHy7G@b{lsaxhkr&n2(vd~BayKi#Lagv3S@kY zt&F)p!P%(So8flr?W^)~0eQFV+e%_z<<;m7e-WzSY&E`;k&d9GfxK0K;?0ZPMGn7(yAdxT;pwLSJ%+L4~yEc zhIhYmDZ-+KPCozxO&wN}pJR#*uRURIJ6a>|k3vr)Uwi1{(JuTo|~Q2UwkzjY?g5 z0#wGPs!mL+4rE|>$WR0yDP~b5`#IwJWf;><@79Rqi zHvWP&Ii5!3zDjJVr z7m=`)%@_r2@pn-9Vt5N7fCs^cCnH^s$Rhx!?kj4AaqGg)54EUpROf)i%A7n^M9vBn z0D{2#b3fWt0*pQiSv$G$Z$My_d-#QyU}(8KjH!XuzYTNG@NK?sZfN-D$qTamzp2mT z-qMnE6SQ>l5(|}{vD~>FWqd8K-(@%d+M=0dodtH#uca8^2FRW!UPe|AW0wBCYYY&U z5%6>92s`r4OE!M>gdErDs|!fWO&|E_lO%Orhv(bnx1K*Jn2CJ;F8c8!;r?SiTOmiA z31#K-^tQffXYs7B9{c|u;CF!V3)8crjR7casciZYY>HiD-?PKhy2&CTvvX=dP%C8d z8>(wOkhE9OyCtQ|^ek$g4fSTnz%Ont%-J%I$Y1II4{CPa5-3 z$0A9AT;SE*WU}B1u@9&j0@&FJ1%omivjW??JjA+e+r&boo7|36Ip|4e5kHi1rJgzO zf#ViOfRD2sN*GhQSyY3hHc4LM`x5n#HwSgKE}Jfj9D1ryn;;isfV^8XuDRan^79g3 z+Y+(f7|^l;yetY~@Q++~4BRZRaQFe&x#TZGY>hYC`GY3}!@oIS@|nbc{Pol9+p}H& z{&nNsk?9NKq6#veAL)B3AfR=$d6(xQQ`7rC?kn$;yLHyZpG8i#J?Q+ce|VPg{r2A8 z?TZD^dylN0IetDNrx4L`;mPW4_FTOPJ5N31D&eBb-viA!QG z9xtqB;Zh@eLn?JBJPWe@>j3zn9mk3dH^I5~Oz_ab}nE(*YEI9tp2Sb8(y_jytah_m`aCnS1q*@oJF z(C-(@`vw$7i%WZ3K99vx?hWBda^rM5znYK|Ae|EW%_g<2#`P*q)oJP2!I|G0_irz6 zoGSAhQ`aJf_=tuaKL78pVOoUkD(P^ia%8y5y|tfXr@t>YT|IAK)BtlMq4WL#qF|+@gQFUXeF&^RDQ>}I@Y<)R97ZN z3JC`2Di$7>N)zQ+3N^nimj~}G+;(aYTHov|qBWEPzpUL58Ldj1%IHUHAq?Pd+W-Lr2>#Q-rXgMn zINnB^^~sM2!V(B~t)#ymT{ynWI>waDca`1V(K>x?`gD3%80~q0Zd$(MhJ&`J%2rCo z$nc4LX<&sGTmPqLQ7p!C1E1gJ{a4^|%+X7wG4Yij@w;9vyw-K!rw?Da^*a4QbjX{; z6C(W24j{jq#fL5*mbaf&j$V)yU^+K+Kb)9)oPOp%v8Vr>dDKIv7^ZOuU)R|;PDwRp ztWh;m`~RpJ>UNj` zuv1&Xs$|!;h$TQ^iLOXU#Ao7otvq;rdl)F-3Mo~<b7aDaDffO3U(Ky*7C_@mRR^WTL zGq}%JBi4LItA4mwdIRBls@RzzO*(pZqah`&deYfWJ{!3|N`FM-p3rFvItqD-_ZEjy zloDM!TPy~Zy0gV9?71jJ=~2Q_gD>VIeezgDG)t(GLz!nh+b(?mnVjF-U3`|3I zm~iDb`yFYzd6v0n5N}0A8+2J4jj${1qTkx8%R9H>DYifm3I0Rq?SDl(TvRyNmgbx8 z@uf|;o(lr)H_4G#PQG|}=6zl(Mj;1DQ*y~NMnU9W6hHW#&QGu$8t(^{hZL5>|3U@~ zN(#<4tGs-1iNR;~6UUt^7Ugm4yjPg}p-zgl`}%C?oelBfvjz5kNBOPGlmGyit*r?! zON$zu?Jbgh6(jEc`|WQ}SIdKgD9t z)vL#SxKqwJq{&=M!{i9HWI~qJb4MV87V3ioDz5YEax+>D z=*m5o)MBfFOVGojBZ9aeZ;c}=IIW31GRUu?7%tYxnsV3$Zu+pp6PwW{iF{1=z29Pu zyR4trN2>9v%9+X_RUod-8MoSS^{9WqugyKt>3dP^qRek1|HVI#GrWoXPpf%#*+G-O z<-uCXKlpq0b-VoH{HXPXs6Q@GlUyL@6UXEsc6S8W#$6$GS?(H92yy9a9cx=FF8%E- z5z_u29Cgo{Nr^D0Ci+>41Rgc|Y|*uvxlS!e4V_okc3Z*;<_W82W*sYFqhzQAr3ocx zjBx?4IwDvO&te7nLtWcAqzx(}$rN3&d{j?Llv$az0fmRM8FVy7bJiCCLvTMCMFXHff`y+~0rN%%O-hl}Rm93B&fZA$ zm69iY1s<+_zv%3g((LoYn$87Ee^!%%^1(%g6KJv^)U|Q*fI z%!uI2ug>u8RPEpdh6m;P`Zu-tEwvqSZJGXz(btY=2b~Oh7L&D0+Y3_^2(M8!(jg4B ze4!5#7LiKkl7Xqjti}LSgR(+7v(H$JOl5So71;QpdB~!_sgINjN{$RS$QzcURjtZ5 zparmS2s?Drm1R&=-3~&B`8ZKM8X7oB&LMmV`KI7yx39kDD@QFvV@|7LtLlO~*({JT zspYQpqkZ`6Z{pqb>kUR~MEYz{;vgUpmg52+_Zu!bAQiTWhLfPkxg3q$~ym}E)SP~$G=C{GQ|cNui8DX zzB0_00a?_0Gb<<3)6*@ou0tW=mosEpdbKf*A8H3_N;MB2=4NEE8w?$>I3!=a zAD~ph;uQ~p9<2_XWpZe_q1VC-L?Heset0T2E#|E;DY$Y`l4A4)=o0qTrM^f#^Mqz# zMD;oH|Gx?XU?CQz5%xSy0uow3f{f` z;HHoLx^b-HWWV$#vXV%SwnvQ?D1dYhU8qI-XK@)+gGJRgOByCxyp~~cR8wnSTw?AN zZnxPGn`&nWQtNhv*okn09xfOh!jWmZDMWL9N$)ILh|%oLl-=IgquTx-R~@UC5AwoV z7e5~qsLEbMfvD?XI}N^o0~VEfzoY@{w79`al3y~vt0*1+aF`pvQO0-~R^Gv~^&b>j zi+mE}YO~z;W4c|!C^Ac}woHjjc$Qc%2`8nMHVc9FY@sONUof`BRPfT+okFuM7X@{~ z!jYM^oQd}c^#+hI#q{yh&%$?`DID&#;bw|Q5+rrZtkhR_ z68h9=4jS5(5r~!Eg<=fRiNA$Xe#yB57&bNXmbE?f` z6t=1fJwQi0jL_X-95M_Ogi2^U`tZ(armr%6mWa@pdF^@eIyS^OGsp=xY|E?8DIZY| z17yq{BTaj-`SREA;@>;lRL&J&`vxF6%Wcq@X+CjP;qI5aecu#17tt+Tw zp??Klkm9D$Yb3||d0xEI`hCF@&_W$v|ISklWTQ%0d5X4 z#iVXnvC4WOSSoi><5%;v+xx}v^s>`tj~_d-rb)0P(fj|9J|j3c z<{dbYA&8P4%pQpM;zfz?)|M%B*PWLiO~N)yHqed;3sl@%bT8cKwd29rb@J%68k4?p zA#G{0lP{bTpZmR&_!Jv0l*yv~3dp>Gs1v8VP*5r>L>=UHNa>muPWqK_9w5SGwa(PRqnl zYgB1bLqk*d0PFgi$@8J{FDg&Yh>AyxD;nlXZ_|#DND0Y**LD5lPv~sCk6$<}x?_$D zpr1Nqm`195^ff{$P&xB2Pl4mWtJMg*;}S4c{KI>`-$r+I(6&2142AR}v2-b3E+7y10R%XI=QV|gv-)h~h~AzvVq zlgkIEb}U|zd2OHGYoeu5S0~!`JU@;B{dqoTK8&xpEfe@})~(>DR+MB1Up^Q1-N!E2gQkhT~{Jd z#RD$amlM{|*1iEsN0>${Iouwg5c;#3UGn~Bv;j+0)~Nv`o>xI=@h}7fV&Jr?Zp$<< z1XACCZwPiWYI1FKsH6Gt;=a}kb(Gx*B5$U>zx*S=U6So!Gyqp(5F3oqXwd;&Qzg(( z;GsdC8d+>eb1>bl&913<2?=!^cLVU?%RXj$TGz(scRE^(`opzy?3suh8A%Ay7~s5N zz~L#`25??x_}=%U>SX*V$^_hx2o)NEx6<@506}7;k`o09{Ohd|fqr}rIzxz6kU=XP z=wkXrvpEa_uen(*&7)GXPnNzSeJ%Az1det}d{Hs1-IbptytnOJnR>5qTm5FdlR=g-HZfovM9^wx zl|SGk37_|Rs%4hNHK*}}{PZlBi*2x#WqmHJTM$5H?lB+l ztpzp|JUc60Cn7?`x!z02(wlH69P5M^$>cwIZ|`fJC-`|Alr?+DYkep=hjQB(d= zDAk0Rz@rxv^t<^_tAOxVkcNAYvD|tpI@HXYkE7G?n^xOJBoo9f8xaOW6!*haVV_*U zU8s2yX{-}!xHH$xN-1t-%-flP6G_2MwOx`)ZM&y}i5p(oL_)$@lcmH z8bft#=qdrBM0ush`4um+dtYDj2i3yJ%;5|H-nq&xtaqg1a-rpP4W6S)OhEK&ts ziOF&?s4|x@zw@u<*wcfrO_n)UpxU1yaC@|YdQ#ie+6_lSsA)*UyzNRQAAvSpJ0sEH za0_j4R+%HlK^b@>3%PpxlpH6SlnPEgS8|8%PwElV#ML$ALFq8lua4BqZoCw? zvt1RWOyqsY3qV6x#j2zVi-k;LP*Sv50xqf;Dh*U@iMBkC{4dDW!-B1?C%W*%=0iwd z$oPKOugQ#*;sV07dq|qY?%dbjjJnJfLj3ytn~270q z;pIGI>e6a?HH-awPo2pFrJp&3a%62 zYOdc2baEo-z3_M#iJB}Fya?MdF@4IlOwny&qJiz2qiqU~y|0o)BH(md(@GFwEOVQ)!pBU;LXmrMp zxBW-R=VatoBvjC3pGD^|G^B##jQPP|#s#e3wMs>NyF`9tT=So(5OehaB=(}&wiGLD zN=mr5*YWe1>ob%V!CSN{AuXS&GJXav-nDr;MAsmXzmq%czfg&uQNO?@s9z zKGd?-%1N`u$Xl=CZK_mo*<*RhX?p?s!Pf#a!yL@{PF+#k`RRJa)7V;WX2+1^(5azA zQ)F)!mE+s9@(Y@G1S8B%HJPT0H(ddxjGIoqEiG-Luu0QlXbKKbdo?N~$q`g8izPWj zykF#mD>E5P)tP#?su%E_85X-Ds<~mM;S6k#qCmhK(V(26pW@Cb03)PxQimHySpX+i zW!u()E`c_ypmrBD$)j6IN-LMMm5pdZFluMV(v@xoh!YE&a4_)3(|g9;UBv2BR#(7K zaxvoldVmt*6^_SH(z!EPQ1GxKi>e+-e<#|o;cHdm ztNNR-17;_3T-;pR=)3R63?79@Z_)+Mevb?3J=d$@dlSw0IQ{Tj!XJl<0FNWjSI!?xoT5VJN%lfJUj44%+f}ewzy)+j zzI=H;J1GQ4H~(PHg__Y2k?2%%7MsLlogC2(rW)Se-i7M491?9&n$*Nx`0_lDzB~Ca ze3n-$NX8K4LmsAwv@J2fqb{}_`$&jUmwMop-@!71kOc?|;CeBOIQL(*fm!@v6Rr=L z0er4t^sx#-gs`Y21R@wgQ@mSJ7VzhUw8q8PFNaHyfVXphpl9|VENm}Q`osiorS8SYdaTooLCN`Y?^zE17 zs^6=v-)RPoI9HRhYqo@6CP`cfdk>AFy=&!~k)R$#k(}S1fUFmtg$%6&S;Qt+Zm)LdfD01G<|I|4&2ykgQm3KJ@oC7$9evGf+#c|lqJ&Od4k5@~lzqS)CR48l*+Ql(W6 ze?M;u2CmtLt>&h{@LyQ#8Hi+607b#^x{>Hql;!;ifunChTED@8ir1?pMf)is{-Lib z=7QvfDo3K{tcEIWPJD8)W?omHgH()k!%WfA|8BmFr&kz&ZGrWWMQ)BHIg+-$yu*X| z1LBvaUR_ZxyN$Ih@!8h>Q^6HcPU&yP*G1CcfOJFhH>Vas>Bcan@W(nQPw=g(a&13Y zefwRIpKeh~(rL>Rel2`^RUA)sz2c}x#5U$|e~I>#uM;;pH&)kTAxf{tzIz=zC4tHg z=7edPiY?V#9%o4vYNjz$rWKLuu;3u2Ko!KPZ%hy^umkRu9R{gTH%y@zvN`L;#>Ix< zXDUU0m9#xu35H0jb44r8+08wZn2AkBwj_laP&uA|VDMq}bh~&OT!Z;MFR~ z06un`OZo2!SQU)}5XU(3aU>wVHZeb!4i13NaWxIs+6gV_a*@$fzx==FTUZH>60{@a zP<*9@HkF_dvYYv_1YzrYXniFp6*^N-J5lnXY)&ri;m|1AnK#O19E2&4i@A*0;5s){ zmKl?4Dtkcww4^h2i%AJnFc&QAvwYKeBXLsWVZC-PJqna4D3qzK6)}tiOqbf)((AG6 zSAY2~T=IUNQ#W$|(uzsP1W(nOq<+&=Losbc-np?d^(ArFzJKnoy_7p#Z$6~ItY>vA zslra~Ed-3#qoatwLA{SgBK0zu6klFKob`$ltN7g ziCuKEh;Fb~qr6C)HB4N@q6_4J zB9W{NUz+87YZC08jI}c?$Jo4xez1tQSUx)uZNVqobA#z;`iG87Ot_rEr02lE?sP_d zsYuc+WVIXH44{Gv4k_sw{ZEd(4EswSUww7)zniuF{Q?E&!uxLTiBcyHKVB@$OFpuS z;j8MaQnbmnpGtJGB&C{hRyE>ZGGZe%+yV-p)kFAnh<`6%u6h!tW2-*#b~HOfD*er# zAXnJs*spiAr5fJX*D%-Z?Q>yALw28fS+a&%lV4#qW&zieo{e{3O0X-yG4fJm|Eb=dLNu@57+VqsNvIMGMorfQdz5lSrKo&VHXI>-#LHOfC62I zmuf;wO4cfYb0KsIE}j~On>dCCs4|ctzOo(YHCJF5!N^V6SAa22)Q#MVR(#@P2!dgJ zsnSN+&SGWbg$w9KCp!$amBFgV?v5h#isW>ncQB6G&Lra$8?7ZW#5&8dvOQ&Q>v74r z7Ui~vmcrFE5qyTVbASl%ELn8!aH0$MnR!9GdD-187o=?kYf19Pof8qz<8Y<_>-vxa zbJUFgLkvN3&S=FmMk1UJ7cxiJ(B!BadYtQ%oK#$s1AWeSQ?J#L+|(b(XHFQL>z+jN z|2oY$iin2*p~a_qCo}`owcDE-1wI;H}Wizja}5>RgYdw4H)UPmdGfS z4db&96y(Ta8hqmxDsuIeOi586uEV0&#v6>r#*C{`(e*qH#waWW_72Vo!R>2bJ>NC| z44OwF175yHZEORM2Yjw7WUPapvK=fvX(HM{$JT0MSHLFxp`&I6mtYk3Ggb# za`ur&`uSe@XB!y&;|d@8P-LAsMldsbecV$8{Rcm!^F)`aJziY`$If%>DQ3g9^L;q-neTh#laZ|Y6vb>zb{2^^-Grs=!Rzh8FjI5#PU2hfYvJJMr zR#dx*C+m^qhra~-6Tdc%7^X~QpEWk(xB?$yD&?FC_6*x}&FW2mUL%$_I42BSi)`e= z9S3KRI=)`kgIxR)WoBJ7KHr%>-G;cylf=&P(%2 z6IJEdT2v5sKWWTmj`Zmq*(e2Z_{LlLv}2uL!24dO#d*15%07vxT=Ys2qLq#UzVJ2i zK>o$4A5Q-T`7{vpqfZB7_?uIZgxp>-rj*=;bZ_VX?PR>{u($p*=t`F3_>Z+C2prpn zvY1q(r)R)bJ%1VPRT($?`4;~Z@zZ^~Vfz;Iqr51&LN1ad-KRd0-i8Qv+WOWgo>B8> z=W!U?xybVaJMhiVm`B^Of@9TA=l71EUgVx1_T^Qm7!rTe+%eOQ4zvDt=bDF09ZQd= zX7H?mUzfpQBT1{sBE8CEys946eC_jU4zgItKF_v2O01Fv81Mid#BP40Mc1b<2FJt+ z!dx^Y1t!_gObVnralwolpQ=eqg6$?o%?y1G+2fzWO@S2dc;1T-9_M^15hP0Y15(US zS4(#&U@5LdZpTGqXeiog*8fDmxiDasw=p|?+gy?B;@z#MFo`l>bG~swfs}Jlt3g4O zn5}3wgW-~gGdMm|7M0v4+EJl&5^=KZD_{CIt}mKOW!bQ_U-K0Y5|gWWKQ_E!U*8A0 zDk_cY=uU2kdvMhW*~`kx;-Wb3iDct=x3fpP|J~6qY_BywrW&T(b9&jSnH1U{9QN0B zfh2SEHvWWqjP#>7TXF3N`y3p*-V}X%b8_?P_1a$Jo+UTP5OYL17xdBfZ8;`&!l&FN zx%y_dX|$rAlS5VdSc^wRq`~ZRm!Z>xkNho$QOb(&>tje$)Hy;9f6kT>y5+Z|->L*r$ zk~~Z)S=BLG52-&w?I5Pd2d*PikbC zM)+I}5n_CZsIKLY`_=qX?CTKGnSXM_)zmGh|L&_XFMpK*pp5GuuSRa_FM$_8A1y!d z!vVnm;qsiCkUE6`*)X{G?m@m@6t`P5?U(XXIb)KzzdS2Q*~D^>(}LET`};C?Sd#L< zf5xQY(DaEHZ}NMte!Fzu?)LA`pR7gVz6D>pc5M4o-p{6+#C+(G&r0{JC532=)$a%9 z!n88==4DB;O?GMhYB|dIruw-j|AmmQc_|;W8VnXmb73IEnqC))eQujd27d?3ar1;$ z%83mNt>PK3txc=~4H8|cey~6FVG=hghykZIx(zc&nUXv_3n!EA1@RwGKe%;!Jsvfh z_ri6gd~v8rJ?r*DRj^YiKz4-jv67fHcO z-y)F~E&-Y!GPGn^ZZf&3YSZOQC$2u({JL>B1Y>X|LNl>>-o4Mz)2ho%HWtr6d>H`9 zTVacxN5EDeUCvtZzkdFiGJ>4c6N${%^_+Zao_qCcdO-d~r~9cW^pSegG&!%Q`?h%A zZ*JS6n+9gtR~zh1O0dTl&ph4s8f(8LGCh+zk=N||V@<|8$zhQ8(1>eNMX1ym2%2$I zaIH8JLvO}5E5X%=DYUC1ja5XX;a!sV2BBYeoD5z?CQ^Z!3O1A9NL7vdVGiG8GG6@= zjTg+ViU&^unHWU>%F>@@|KmFgmj_W7yxWX!;nj_x=>!uG1eoQQC)+)5+2F)$An#07 z;nM?vI~*i?aM4ML0YrX-$>gCYw;!JMa@U-3`>F5S`x0E+{nW$xjL>sqD>ugUkxe$kq z;_4%XMI8eRTr6!lX)-)W`YEFkZ*cJr72s=kk$E$NHvyBCPUL^OT9@#Im{GT-9KSh@7q!<)XM zKkKK(#jXvNVI=4uhpmgv001d_pfIzz5+0tlz7*)u%(wZhT=Bci_g`1v$16!>xqY0C zdT{ba>hi}j6)P#ni&UNc_{*^oi1EySk}@@F!akYN^Do-J+6k$?IP>c6_$R9jIhs#o zyNmZUUQCtlYcMOAoXVDL=#)YvFEHxCbG)*H6;L=?arGv7VJ8^EK(hkz&12CkcW1zh$gG5}kFW*8Ny zgf#|NA>`e-Q3fIIs1Y2js-a#4SOpU?Ko#05R@5txaR=VtV+rRF`(V(MQtF4`C>9Kn zl_h8oK2Et0W#lKnFgFJNAR25pSFobG_&LOdl**uCemM zMBo*v>RX2^NS>oESCZh8FCSTFH|;(;TezE>b}*)`X*KmB#fwtI8Gz>^JtZ;}*WRhHYtA|e} zoD{S!PoO-{{LLqfIfvp<4#tSkaj+5a99aJyQ;z#_Nj106VB`C)uA=JSvvBrpkl_39 zjW1$oVF^RReT$D+fUx~#cAMuVHERVuK1?6p>*uU$RA(*`s}!!)?7S|d?c1ybdaQ}X z#9S4X$sw~(oW^@}CA@i5qHag3@e$a{^gsRI@7A*Oi*t%?Y>vlg(gr3s(Kj^zYD>Jz zzZo(4mTXg#rq0@2vjR!`bX}#)%G9#r(%_d5-Y_fMQ4oo@%5ioB?1=@p>lJ|*qamBFw>I7t<`yU@+C+s?kzGS%z_9u8-2eI_*2L zHR=PjPB^@p;gt!rswfZrd8+s)rG-a4z*4iWsq8q1hsJh+B5^Os134k0*bvW@KFl*c_l(?j&b-vugWf#4(mBj=b=muZV zjV0^ayzME;&z{qhCwfEG7=h}xn7(_R{f5EjYUkCx12kG}`mRoWvg=U*kc zfa=o_Y%rlBMG;23B_W&QT_S-!4q3U7h#L`Tp++13SqufX2V_j|EQtvEt+UdzSF#_7kfQ%j&p44-&DsY<7LcJ``+c2~&X~TIN1w9fY`rN;+jZ~U&NeUd zh+a9^clbm21b@)$Gk48v5b1ogD`Fs_ECGkOKVhmStdO?k{zU3 z$*n6Tfgmu$pX5zcBP@aGm83VHTUm96xp-+GF#?F$CX-VKDJ6m2R9nOF9UvaJM7K}~ z&`-mdzYdBMMLD@vB`G3+(UN|NNSY%y8@sE<7H)2%4>a)G#RSgc?Ls>pl}L(HtuNqA zkY65G4mBqg|5923l6ha3C+*M&&&Q1N1NG}4)wXWD*1~N@y#)PVO~Ua1X%d{yK!D4= zI{VmxwW)=Dz-Q|#_y zs_C(R50^gJ@ROTQ;n-6n2Y7`)kOTm5)yoPLI6Z9W^Kf=Pb6Ud{Dco`YOk1pm)SSvV zJ<8l^!tdz+{*48Kga1UC{~XspI25ZtUOMl5A}S z*{|7o`OUFb<-*L_)>rRLEUG3NV}$O7O%qaNHwV9$uwqYdE^3S*->;VD{>T3?q;~v@cT< z=|5koo-J^5YCEO#E^uOt5PSlgAqX>`wx8N5YM+NxYpG33PkS_MyjD42f8l)pHT6Z^-Y1O?QbGp_Ra)qv z!k$E#3u!rH=Q`&tA)OX(eS`(XlJlXdKID4*dm+`nxLcTIji7X8 zGpq5C5v2<#fb@BYI#Jnkq9oh{z>A@*=?}K6)w`=X^25%8%#41%R5w74J_a?Kivj5H zw@1$u1B(ZXtwS&8&Uq||XXl>_B-IuoiH{3KN8<@($`UJYA6G?9Btkn+UWHn%*{XWl zW++oxK<8to1Z3e0>LD;cUiDGZr17jKYE)`|(1 zl$c~B)m~Jf?OCHZ?*?Y@H!XSpyRw!05)tU;Mwd&kFlKUj`$qeMyp~3X{Uu$=5!iPQ z2lz{NdDz5Ok4ed)vvT#Y_1OH5Tt$*jh~;}y-19Lz+yI^nQ@$hpy~9MbE+eEjBnfSy_98b%~oI8KFJN*%-qzXN=MU#zpe|oeb!O< z-o{wY{=Ckp%mx$*tqxH{f(J_vb1tdlH?RMpv#Labw%*o&SM?no5}PhnA-{^HPhdxl zSDa|cb?6X2JZ|zX3O;ieCV|DCC*b{&ezC(M~f zyy1xXaep|e_SEGl(T~ai)%Z+YH_a93z}c64ZiFlcGcg2is^9G(*|n#Qw;i+Z>>Mu! z!zr1jX;@@|5nk=Gkx&0c%qlxe8C1v!n@H-w=5PI@V0pO0Sl!6ZO%OKmqpvhynOwYZ~sq9{d5C1-8?3senUX3C9OEG<=rjmtb=tFpX2j)Ex7FVJ{oPX zHnVM)ae1jCQQYALhTam>rH=m)z;9*u`{}~x^3Bu2B}W)EOBl4cpx$-x3ok1|a%_^8 zRMSYd(L1QL>A9<`9m%b z`zWBV6JD%eyPz<+a2O#7O|&D!n3Y@j^1PHbp?e9cd7qn*D!2Cs3WsfP+a!B0x^~S6 z3X1)}`ymR@vS}@35Dy81aUumrAU2iN?9$FuAF1(V$Vs~MUsnVzr%|Uc8lBvJ+2K4J zJj8+j9{S=ka{KQkz(fnv5De#CS%Xb-b4^r~$f26$ zDk#Nq?z<~3z4}+}s3!H|?_FQy6(Sx4&*FvrD2%H;dYs7|pMGrh;_Mty9HYp~>im4< z?fV2WKHPpK^lUm*B!iMwEHILtAOkcINyvC?l{gn7rQd6Wnf6wGN&4H{qZj9wx@R_g zhYy}U(*?#)VUY|ymmKk-jAA{Znl6g#m!jd`Ndz6mq zF(?a3sNvRttd`s)J=qx(ZY`drgQxqG9WZ^y*-B)#DkSeF+Ua76 z;ew;eC?bSpJ>87syF1Op>zBqvaHpzPXC-!|2f5^u#3eD3^g%Zo;Tlen7EJ;j9XNi% zSGvVoQ3AdQD|2sgAxDX*Y9^Es8PDH?q6mh^XYxTiuT!NkY5;UuaZYO7*H0WRa1Wz~ zC?L&yVM|xPQF=}>2?L5O!^)RmRf|`M-je4I_E!bfZN9e5#`+Nr6AfcoZ7gg!$wPi| zjl|bd=B_;kW(qRPMfN)b1|gwgdTzkKWL}Cto*j&{n$j0o=(EqV`BLf{3wBhJw1I1S zoa_E)btqf=1@D?LIN$Srm4Gh~gTB3`5-ShJth6E05(npr>v4ub&r8`JU$?Td33(d2 zs%81E=Zf0<&E#kw*jBPEXlt9#Iz(?3&kw2*yNuM|?YT0l6$qHo+R ztE;GgxIpPiYXrQ%0_y*B;<4T_#T^C@`;5+Nz=bZpQ7;-AO^&plCa^XM&=5(G$k_;h zHzWxLuniO#_1rGGAGWRf2xv=2)6Hjmi!T3CI{P{N-QVloUmgP@l2q*ArS#D*_{2zw z$CD?mAA1trXGErMlzd?KVa#WRGC$fXo4w^@1l2#JyzxiRngH60t%15+@5pn0KPN-> zzbdT{DUBQflYLY`{VwF}kFm)1g~-#LkfslB-+8<%`s8Gpso)fWF0%&75Z7d;ohGV{ z9c-!5GSy&cE$eb|ND%M~vrX)D>f^i6`mFU)@`J^#dN z!)B8J`iWDpW>n=K_GbFDT03+nVf`nrE)wd&&-Y}W5uCiOCk1aoq|;YLPWapL50`@!j_UR@;@=L*C%YxBQeBTo?2q{huPq%qku7uDSe<3d=vJaTxO`_jEV2u*2vm;GL4Vm}9-e z<@V#yQZ~CbR$=znszh0U{Y+uVAK!~tmDWo$603CaIegw9-talG)H9h0>jc}i1zd&M zqlXRuR^Hz_syAFAJfka0Hg|IloE6`2QNTXOp$hPxTu#ycy^$-KO^#$r9&K$cbU5-R zzkaKj?T0TlE*edLB(f`q*z=Hfz>|R4dcN{Er!0=f$uYTsLl^@EMF%7v1+kUS! zFRrb~ms-$O$W*L6WY#}ze_qw3$}i9Sw=&8<@<2yBs4d%UM(ch$vj%=sXdCZ$ZT^+G+`nDc+}GHkV<6yx`IexeV~PAO zpx4!j!=wz?g?)!dpxj`b6?zsCxV`dXJ8%<&qor?YWV*K1WX)0m% z#n2th^619Or3tn_eSESqmhe&B!7v1kCz2kfQm_2LR^=%6CmzHE*|6%~gAchsvKWFY zpA{uwH^LP5VpDLm)2!?T$9F^?YDZrHz@V_@a+UhiuL5VAe=P)m3M?G?l(=!*ZlWp$ zcL#DzWAfz4^f5r7fL}05=%|djDp{f*+ivwiTFr_b*8+`@qv%-E^SXWY33S5!{)ov0 z-Mgl7F%Hg?R0hZSa$;SUQhV<2#E$9z4*Hlv9%uKn$H%6nzo&X-Us!tO6TeG0VN%}m z+ej53x`jX!t33VBjjtl`rdgo*!_rb+>3gxk|J@65*-PQji1_eQB+$x=ErlQi7`JFY zGV@I$N+H07$!nEh}aIApC83d4Fe>GC1wV<~cw+b(n)d3Hxua{}+?>x~eu={;9&>qFu_vgc!HEy|Hm^}q9Bd{h zD5RLo1U<)1On#kK$V8CXra1UHlq$~Ce$XipApd3JTI{QKJl)MbSU^ya94ZNQ0o#=l04@dWGiN-AD>IUu zm*sE5YG10W!w4Z`UgIF)%;5245-_Ye@w`xj%_dxjJ{*)H9}@?G?}-2xXUMDMyv4i| zS=}CPiW!=y3-*Bv#E%Z`=}BY5SD=CCVvb?=7vqti?l0%ooPOb?<^QAImM)euC@e%i z?E>MZ=Vvn;eVnBFrJS|MZzdT?OMR?d;+lyN-k&&sR{QkXz5qd>! zVf4|IW7GWWCpXmnA3~?f%~C5Sgdk=z0PUQ8Olm=yyoM*!)DniZe3qHbGCoPSTfmbQ z)i4_vZi}j6O~S{+{s{0JaOhPoT<=Cv(8+O-eU^j8C?l14KqlNpQaQ+zRp%MTR;Ms# zbsixsP$`aZO5}jSt38o=gEPo5C#n=*S5b9fX$g>=p$gC4KdV|Jr=CE83MRzwX~V0A9>h{QM~U&m)k;43HMB`b?|GSQlD=?1LwL^7|iMC@X(ow*jG2& z!B=0mN40-FE^D3{zS?r-sfSnti*}vIqPMg>Uo)NT9CgjQr654&u<#Dg30z~po;JAg zvEt^IdUlpY)N4+B^V@H8p9+J8h8o6iP(`JdWzzOr;4Nc}dGwr$=_s%kKgzZ0Y;O51 zZgToEX;gc%Qfp5z+CWozjb^X*M^c!qG)fwC^0+i>fy`+4bU3xRoeL=!EO z&^k1rg0i0k9YAgp`~VhY*bzxBr`JX!{&4+vNVSfxo+`4 zCdNI`2Ny4XdZ3*@{F*Koz(D>eEFX?QU17OK2jfW$MIW|Vs;bqh%LZFswoZ zNu{3k12J?mSsK~^EU8bNibJQAqe8pfLQomTBw6t?HveVuhE|#BWoc~fPS>ON4oP-E)?0>-^ z)I_NUQ2(Lx0s~pJd&iibiCdq`aV7H1nByz}ZYjqcAEc?fzT- zCI8%uTh@sP+nrYeon+Y}pKA7Mc)VsLuqM2RYgR$p$-hkU>#azo$oyHF=itoL1=;|7 zU^-AuT5G6I0p4N_w2#kM7Lxu~RHJBm*z8gfUU|x1{4$^Hwx_0|(@>9K4|2E54|)(h z(tj(1?M=w~$By(w*w?S}zcdzCI*cY< zWOpcMi>ZJ~AXygrO*2IM&Q9&759Xfx-+9KzH0{s_|)F&Y#0Xe#Rl+$|KPI1SK#z+>M1Oqy6#y#}UC_5AQ#@PmM`8 zZ<@U=Y5g2#VVs}Y0#BrhM8rp#u|i{}Vh*69kL~?BAMiX@%Q`)Il({ze+naAcl3r-) z(+Sw``!`lS%ZYl`UF~}sZziT&A1jq12>{3E`qr~72MaITSC>7jug-llU*KoCJ_(i! zB!=MFMGGu^O5j`>V>ongqWddajjNwR8s1CmUVP??P6aK#O@O}l42yD!^zFJmq;vPn z1t*^Rg3pN?O5rpI<8XDa30*BK`h707DLv)dc-ZC{B1BU#MN{hFWhKtR~qo7XUZbt{&8Z>Rh`%dIwo3F#a zj7_NZS7ZDB>=&y+IGf*ccsLNG4Q~*}d-D>V0&VITA(F09&%pnZ$)v>k%f8K=OXM67 zRcmm$@$Uz$@v-~qY_r>tj1?SMRWF=fG@Nd&R6fk-Zsn+e59z`MSWHXTn;yX;i4_qD1C(C&f$9ucIqq7HtaP#aJflo;Mw%_^GW+{HyxCkyCDX z`KvF#$Gp%Cv40Vwz|hN;%Z};e!GkXzNy$7-b`FTiOrR{A0+?oUj&Wfkv4*c5{~@pb zO*Yr;f6|LCGIpd_nuKH5%PdC;iVtUi`%70k4Z(=A|QCkn+=n6+Pt!yh`X; zd^b)51IHx7s(JeleV~mqd&$l=WaI{2oFM=8zkA+kk3G+m>G`i;_2>?A2={9PJaaqm zsDk6TYNKt>KIkdesQjlkjZYM|OlocHrRB;|9vCNdx#TD+zO0?JC*AvvN4mx(lU!}f ziSeJd?FVATb_{kk+ta=YGeGFIo0ZGP`HR_Qk;wmH5lI zys@COkhFpIgJI`DF72K@E}eLH*-X6TC|11IyV;a$HVrnS{((&K>{Pq}$hNw8%2Xs4_RSGGxP|A{!UyX32(xUREHd2 z2pp?v(6bobNn=zfTbiiP9?$6@~Q!R}J3GaxL&4yH3-|1xK zVDW4ppBq&%TK7oI?ukNy$zb|PeeOEn*N>a*`ojIUbR1q^T&Wg@!a$|3mN*_iLa@#3 zrn#q1J-;FO{6{^hV1p*n*juM!R=I{k0gn(@W=%o~GzmnP^s=Q`Pw8ecf$GzcMZOEJ zr$JNI50j)H_=0Mxu#H*-kJhlLF>oK-xe898&6)XR%XXe)PFR6exp^9EJ(*;jsdubQUI|vGQ+v`4C zwpDLKd|BX7r$^yZMiVp{(;J?nFV-HkxApI0e3i9RaY7{Ys3#hYBqE5Wqxg8%O*0f7 zV~HnJ^C9M(3snP(4t=V_y(N!4J8|exP%``Eagw_Wfj1-ifG4<4=}++NX(rb3H*6n! z*>)u~D1$i=nTc9ycjZibJpEk1sed%5SxiGy^_Z(!F#W@Qw631puDhA!uq~cUgOKgjv?%}BF@>jJASqK#J_QUN2W=Yc*aYY&QdIUbvxAm zcO+8k8iO^%2PDHWpOcLl0w|?^adTBp%HUdk+PAase*)`u^%6?)rO#r!x!^f@tdr&` z4L)ooM(x)2)M7yfWFK>Cp|EHmnN<#bE(p07AlH8+k<9as|MI)PTBipKbslFYtG&{? zBL3st>Ejie(_Ow^bNF+#6(=@?i8T@XTfeM$182k|CtInZnMd~@4MgMj6a}T}!2MPt z-j5Q1CbA4xFD!C8?F3xkGIQ>qIB;JZ4GW*{29sa7aHW3IPaDRntjmjo!*7>&=H_0_ z>kpb@XnoA;kgVDqNE|AWP)&ox`6Wf`LTQAaHvBgvuy})ZYf7I127Sy*GrXhaJ5T>u z7@#`Wo^JL||&7fL_!eEVW#zFI$?mV4B>H7~Feqg>nh+iqkMOM}}vcU{6+XHXd2rd$2ZU_qEl2dxTy`$}vt4j+M zdZ4Ict#HSaRW?aA=t{}&7U}?tNWTm)YZURf@!>mp4uwa5nnT3O&K0Vy>JbFtTFoCY ztGxEY&a>&S)1yFJB)|A8Kh`6sh2oKO7pg&V|3>#MN>NS@3Lujy?}68Z;ZXm=8xK7c zj$l4CsoRb7O2TsPPIp?%cIR34M0+C{U|X5gp!Z`}CaR?0Z2@b~PxB8p9|K%vZj5e# zByFB2;lkUsZK?RJXZzz2{_{B({X!I!_^5ETwj$Pl>VkC9nNMSfdm8^GkG;+~RZOb9 zcNFqv&>3%h@5yumI`%D!fqXN^f3gqdl$~?J87>P%eKh;>#owdOxZWd$wHD;rs!UE$ z|1a7k;(yhIE94`?Pw57Ed6c%571kVwHPg`0)JJKdu~v4NTPPiMEp(muVre-mB&e_o8cmxsad%y#DGx_|sn7kzEy^L9@md`BQ( zYh#MeJ0_j3sqVqQqx&{DWDK#7^s-Rzz%(?kXsI1HCOUjdZ z5k+?PV9VL;BWMKKVz1>{3-Y&kRPIY|BKj^6H+j_0G)a( z3@uW*!9u3O*^{0LiO9t4rB=N#!c1DgNt`+yOh$B@=5N@>{F2sb;wxQq8LfUQa*=Q= zq6|Mov10yB?EpN>HhAE*+wts=`{fMjeth3Q9fH^znLKsDvd*Uexk))oCwhz(@U2W2 zT#mL)o|$RdMz2rh>((^jF!aoE&K%5x4-atVR#hAU0e@G9#-4}n3sN5dTbZw*lKT+U z=uR?nS_iiWL6M<$q!Efd=%^A{EPrg1v}!9=bZcIBCV4o)U=3YCVJ$1V8EslQ}~X3o&!E{Qhtx$YYk1AV$_wmbn{H579qlakhPa`Sb3Fi7I1W zb0b~My16BiIMwIb+o;$mJJs;c!AX{~YhSD56-M@d|(A{^Sq28+Dh5BHt88wnXj9>Gs@k9#HC|UOsdWkN* zY`k0`sphx)f773M!?!}IHI-UL5EArT~@KPKsFo{Qu`Cld{^!~1T+vhXeRmK6Ej%O$*H4UKwei>i{ z7`~^RmZSp7X@E4e2NDG&f8!txl;WcEXsq7%kJmnXC*GC@Dq4tm!mL$PKc3323)^wI zd^$~l)v!6oHBu%w z7HOVA=}Pwdp9^q%Lw_S)D5nt;H9$E!Ol9&(4zA66Fkm?o&G5tby_xaSR3@6@-D_z$ z?ZYb?)am4!z7-@8^Pn@VwTWymNM$&(%xW?)(=9F-7Jd=O2Nv!WDog zA9bVq@*drj%!KZYr(=tT?p9F~4knfr@2Uw?o~+k11u4Br;^iBLHV}!-m4RC0@&;O- z-j=Zh0#!Zvk$!JL$&U>68N%1N;$Bc9e?ARweun_w3Z;B+5-v9NE0cQoUxqd7LO$`6 z!HD;^c~|YY_dOouCR8p$WONL^LUj8f%E-^RNla-@5H{%@3mGA^m*XfQna}yU=Zm=* zt}{f>sx`m&`*da0E`+gDi{b|MsmIApBzs2x&Dj6RdSalk5P&da zKJFc?yG=DpkC@nKe_zRtW@sn|`>;(af8at_d+RU`_$17PJfqntP26cN;n>Y>FN_CD z+wQfue9elm1D-i3diZ!`#i-a`!$RKLsw`8{d(WshIU_%C06(KHcSNm8D3eF1lhFc8 zabAf!=C)EKIiOEm1L=@Y@~hJY`Fe@7c?}tc;;N}c*E)gvP}va~sh@0tu#@^oes9r* zZa$0A0oo;MEhiw`AkSmY@A?gX>9aoz3dBNQ5n2Ak0#;TcM+NJCxJiU8LA&>p^Hny` zWF`~!a`P86yS>{((fTfJS(LpnvR}pe{yRp%FS7H4z|Q-5$)sQVxwdf|)@=8M;k0SI zAu75OPEylbY8-5xv)~$hExuMmwh`c8y(oatNExZMA-OQ03kQBdL4qxo< zMbG~czqY?bjxRwvrHaFOWY;x(asZX`iU98Y>>~cH>Y;pv&xaiz{>{Et@-J3DUc3$V zh9jS~$xw9eJ`UWUv0-De%Iw~*45YGtt|Bb1K#|13S}hPBTQGOF23~Ywf(%*-zQ5II zCn=NnAN}vpTCewt!s)3WIsqY;+ft!N%wN{O5oPYGp``FK`JTb+2I2X&?s%ZzU&9(6NWS z5g6_Gxl}lu^kh*$R87NA2|Pr(EbmtN;a5$32=dXmx3xie8CsE7oOHL$(abm&2h+sV zM;Gc!h!_5VHGLgFz8mD&a{l1Iv0HkzHZOs#NLG+(Y`;8LWR z0}9g}CP?wDZZ`WrT6D@@)Om98=2;^(8w7qdc=YbP=*f;L!)w{!XvoNNmJS@0dw8!$ z^u={`Dxt@>^W<-|KF>VuUy681_i5*|lv*cqQLM&CfVy|WoA6(4GvQM!Q5n2)G8eG z`3-Lbzj1fA1h?M6z_cZ!(Z3CG@Z|lQu=!?HhXpssp%u9H{DQpi>n(K+BdYFEy6|j` z8aet*+vme1ORNz&kgPAll-Vb;1T)oQWXY;9c=4s_SbH>qQ1g&W;Qe(Ht$=qU17tat z3HtK+Nkrp%aMw%l%Kz-!>uMUQ>8>1PeNcJ3FzT4D#bIQgjCift=phu9C%8YK= zWb8)H=-$ZDSD@YjMKSI#4(Wy3Z%j!PNq#OHkziX(M&Ew%E2oQxf{p`Ns^_UZY8Eoc zjO-&xuPL<@s!7qo8j9O9>kG!ecNMb%|6*%k2j=1dBn!Idyez0YDE^MQZ?x4&a5yuh z4Sl5dB_Mh8qwe;2^R&2thkN_8E?g1Puf) zI>Z4i$KIrzGyU4;!x|`U;cajjU{2}|Qr~j3FdGYg?U6A(`+K#I> zM6L;o)Ktbm2?-NUpIA$8RqHxz-X`3bUz*5)J}5G-hx;%}@4h0@Y{f>orEw46>ECI; z#FO|f!@v1Hzeg4BQAZoGLMfA1Fm9Ka?Hmd7p;_}|8T`pyZaaBD`P6q`{M5ZxPNKr) zsTr?M#F|r*a%g}v1vkbQX{1HElC^>D-CSb=P2#CNC|hM5f0ld{mM>0a`xEua=j~V3 zZJT*b59gOG^x?AkQl*4m|}Ca{1ks@a;BRYY7!5)FZZ_F>5jU zntM(IwbQ-BZ)LMmxldM})_ztsqF6S#7`VK3$cMPaNI~KB@rBtRShfUT>g%S^iUcAd z9(9{vKi~Qa3%#}?mW*Xj!kR5U)h$6PkLss|)Hk{hQ9to$AEcnAP(58Yty6Xt3ch*& zY~BB@GFDB@4 zb5?h?Pe~!{CB_>68po%ceMa*9p0fX8bQyI9NyOKf-k8x$R|9%N6)FGpKkFKq_!KJE z8~91~O?JssfI=`r7MOwG#W=(~ua)0uTOr9$Vbi;~td8e1NGcT%0zH6q{8nNn!LCZ!a^Uoi;Mmg4q5{WjQ7N4UMav+h;4 ztMAa!fVycw1z~EPrd*8lqIM||JW6Cb?QouNE;W*^6^p!pFcyl)Z~`;Nch?tL+LSkZ z3~=)a5T)NA`@Dmg1cZXZa=mJFd)S6plK#Ce%#tT-0vXI{y^9QdR>r}DktkL0*~j2p zlPsiq40jvw(j>>WV7FlxE5T3N{4QzlLnaP9c42|=s!XJed1}HFgXmmnxoQMVXLJ+6 zG}4Wh&zGhE=wtb!g=$h$V)?hT1}cs9upJw|JoVDwT285Soyj^q8IA9Ge_147XUht* zuQJ&WdWeFLmya9fFUh>&v@*<50!0>Qc3*$|jS{*Y_tZVx-0l3 zDV7pyFkt%X<-K}EzZ{&wbd)P=fbzWNP!JRQ1@ zE5}yD)vU5yUR7}RUgrj<)0ZeQqI#lf`HHxB8;vYsAr@xzd&(!EgZ#Q@+#+T|x)gZ8`I6-H)CWkZ#K?hnf^zy-^&*E&# z@TO(jV=raapi8Ry*Ng5#>Dv9*Y=w~fTPmGqw*G0=bh1E7xH$u?bnlmM8V!%wdIB`z zivDV3p=mAn|IBOvdH<_2kf*VL-yCz*Qd&CNs9PA^EsIlkE`7xt*H_Zk zUjpZ3BBZ+B0MuesQxtLEv}7CqCY`#e(^saX*Ly{U)5Q0EIzb$C$-Boek+ZaWvK1lA zdZ9PD{`F?Vdg=abIkvQ(0m9wUA3>g+h*7)7vd|}0zi_OKO|v-doEw%buLS5c$PkYh zx4eTVt@`WoH00Bd7ei0~g-otrjeDwCJiB__=f*3H1hQheFTQtL(#(kd$x}N?d8MVo zw7*;)9oZmLBqLX2PYB0tGA8zVGKmy9=z+G9Z&I$h$F}b-%2sQWp``+-hLQS+Xo0Z_1P-jP6H%%f|RFe}LlaegqLrx?Y+cAM_Tg3Bt-d6W-3;Cmy zVEFTNLXtE#ZTF*9%}s8nUBYO3Q%A#r4iwu90X^6fxR|mj7u6zdR#$9f&$5wPaDDFI zhV04xfOadipDX39|L{;PHGs%fGZJX5s1l%=Xa8{^^AJV!95M z70TH`@&-b;_q}3aeXZbXN1pgfam9<1r=pv2KW2ZaVXX!W37Bz1T(vI!n7A;Wi?df# z^w!Lj+XC)y+t`?S>uy-w*$vo!CNE{M>Ia9*syU9O#2dvb3zP#$5CoD3c25?bMjHyJ z^Y%YiJR$MiDKfj1wEF3iFRk)6do`3KGcC%6g6Wjw@fu~5(|5%0sj5A=51M?N3TzpL zrM_8MXrs+%;3+591ZWN`bAg9$?!WS zc5VlbSbBzIUi{J-%u=XS2A~fYn;F}ejUn0=NxW*QKZwVM zz1jX5R{SAvrnlUi(`K@`R5V|pl&gW}K?KI>K=t+##!t^t5?D-o1eO#kTJiV!C<$u5 zHnwvF@vQ@mg5&?msJo$Z?2KJEr&!&wi6$-od7hrkVYJfam9xar7=m^~-WUk%AWp1b zLBDAyVxN(2u$BU=;8-vGYlIba)NOI$I-jMy#u5AhiacNIet(Sjf$NO#IU%!cvfthEjlq z<5)2i@2c?-2K3<3)GiZYKP4hX6ragy<6}-DT*40_^-5w?oh15B&hyplfd^&sF6XshkQQp{D&LffgY1$J`K7fTLfWo=ee(q#( zOoOaqKA!@tbuk)=h)!s1&+(I$d*1biHlimfsPeT6e$S$AMZ^bIlPo+diMO(*!fb0A zO>4r_Pp=zdRiMwIibp!vQ9*c~Yg4Shaku%8+qc24n3!b@NuknY;rZ zC5o^2J0nLdxrVz*`6@&GFz1^L*2(Zs(2rA)bw-j#nMPEQ0R2iQ+Ea<`%dc$0vH-9|85RVKi zV?+6pE*9T-S-Ty_0iw2DJd}VcOR4hV;8(koV%9rSG!-LmS7HytEAI8aU^7W@38FWR z5v^}wh{>L7PVx@9G%K}R<#q?E*&PtDo{*f zTB#X$eH*V{)*`|y_aZoM(~QT8r7ur3Bh5iY@>|n+-U>d_aZnxJ1pb$10nTcFA0PaC z7jF*>r|v%iY{~8EwD3u~b!#u!h*MtL1tk&O1yz8dVdywjW9tbkw_d9`^77}5CyUpYr@ zQ?f+r-Oo{XYO&`QVM9kDhirc6=?!aXHq5uX3zJpxEOF8tuVK`zE#CE8lL zd5K_j>@hj63KZ5mHiW-q>8gW5$QCc-@~o$a-mjyB7{<2te-yD;{1z|TG#8;Fn{4Ym zpiaEOU%K9n@iZLGe9ZT7e-yMN<6nFJ?^Ja1RI66bIg;8c&bUwtnI{a>j%gIMUGVEs zxFG5-sN(!&lg2=Giw~a1l=6D*Z1u9J%I7g7gz2TU3%FLqf+)C0BUM8FfigB@Zcc{} zE+kGZt+u_8O%W*$Muh7ZO_vHblw1{(jLG*<7!eqSG%%zn%@PU~y5mQ?iFvRZf?*Q9 zXO^P4IDsaTu67c*(OK(hN$SIwVI-yA*wtZSY_n-G`m|+2-F_*WnUHEV=+wBOGCTNc z;boi#f4IqyWyp^S|CY~hbG4c6aXpl_|x~Es+;jTaV*l%9Yi#!%bb(hptYhE zKfHGRd_MOLO~lWlYTShyr)^!cKZ~kkjU|o5;5wY=gGeS% zs&pfrGMoH5;*T3b4mCbJA@+)bAq1faS&ppsSP5;Cgwu5yn)x2MK#;3x&Cu6sd=s&o zL0g5h%J`*j=DHcHv_tejpL!F615lC73Er~88JF0=jC45XuW^cRP*#sbXjlLf%avRp z3OY7-$Ms)D)?S|;{Jt-$UbT|hur^tbFFf!TM>EwB?=&E|n}*Gi2lw?`rTcF&vxqh> zn-i5HuWV(u3N`iH;AbX|n_bg@xU_}3+$+^OgGm|+5$`_knVvkcY|p*&`?u}c%SqDT z|6a$}X;&@g-)1toN7Kk-ROf=Pi8ZI~-&xdQkx0^wsIYI>EJ(pX-(tll)BAB3Q2lb8aOdj@sM6Q{^G{0 z9sTY&UC{sNU?N|9DPFhmG66n<+$nj3>+rjYbnA z8yg#p1=GYDkQMKy7mSRPPkHPz0F1?_!>(({ZsD;+%jCs%Q zG^DYvIPgnJz0ciL+er4UW#D%2HbeBlxEu^g={%k(W|ZG^{aUfv3MN4bKACp&SEGGg zz_D8sPWJ_2-R@KVquMh7dCiFm*fW5wJ2V6RMv3z%n_zvF*V)#)pYX7^k8o?h=*b3=mNg z@dTzM7r}T%PkPRW$hxg->wfFanX{_3z;XyL68&vIe{u0vqirS2Kt8h9S?xS(YTg%? zFjvdA3J4XIua>L(?lh0L{Z5~(ni3Q6nkn-^Z;m6Bb?UivYS20=x=`635p4+s_~e$H zzfMKM|1~iHS+`BWPN02BEdz%s}nV{eJEFf-LNw>G!1G{;$*=<8V8SXy4XU)pPE zTVTy@nOmaKI+~_f8)FSEZEZEpeZ0iAh2($_Ul!ByAwH>+db_)@H7pzT5;bViZ|OQG zd<3=n7MaU7Gh*3V^Fpzl@Aox0&HI$^&PD=EVv9|oBne@ zJE`3>vshrlGVr@Kl)u~yg4IlWaIZ|Xf}}NI$nWMR8{t4l>)r|QL{XyR@5%Q{Cic^( zaw<*LlY5Ia0@uOl2rl;QAkc?$TD2?N|UCs=n#;Q zP6Z^CP(BKXgn@t{AosrKcmK|P4rhOI&d#>?>v}!oaT$IGLdTMy96R0DC93x^o3o1~ zfGCONq>A+Qz*lhnQfmy~j}lTm7UsoWhn@8vLetGCIqQ`Qgi6QbJzB8(&pI`oJF3Jf zl_gs6!zjPsHId)B!7MlJ`G3dEF*lg<5|b|jR9bRU@lJ}Fnj&y($*R39hnq{Z64(i$ zPU=Se>g~Bo{UB36-gxP3Dsjw>bCtr8TaaC%+ymOx!2w&}sIlCg&npL6$2EJ9>DVz@ zYRBsLKV6U2|JtE8d@dKLwEnxy@TmqXSFXEcnX-O+Y^s;E>-(r{v2fwfWneO&l2u*a z&+4da?#>sqGPHfX9$DWUiR10i0!@EskahUFu}-CAM!PdR+xV@8ZJ{WQh<9XO(-`n7qfPfox9(^)C)Mv=o#D)1o2! z{l|xSGr@fe$>E3C=AlH`X>;?tpi+V;N5mACRVR~O<+5){B7O){lZ4PPr)be2_42^r zN1v!9fHNW^wNws%Z9>d=rc?Pt3b+bTvG_yFjf@rh5@%p`T&oxZeQ9Q^7Tk;xus z(D+@yfjsZo9YZ)>So$=OIBO;7DBh1)M1jQ)nzn8;-+^*Ol!9@W0$PqQi2$$C{@uk% zl^_tbvGgpm-w&_t|91T`u;iLKgp&A>U)DL-nw4q()goPg+s`bH!L83&{}C6K!oGR#`sO}x^iyza8);ZAXfu_QoRVibo(~A!DaT&< z7}aP{ePnAU5r^*O2vRcVBMTL?h})FvHo#yHnAg}hCvTZN z7v<#E>&gbtizAvaH4SxvGXTMPPk~~VivrF!u|5$pM=7utpWIU4^v#t3CgLtI`~vkUiCU#_?o)@7O&aSol7~*@dPX|_MS6pu z(T>(pOhk+Kq^n-N*VLStm$_@v!MH>cN3uC*)uMVu-1$lEb!QMXiVsb&+hHT%q_`%z zWpCLdz-_15Nf|ZG*(`%tpsxMP);TG*MBJ(lMQ1y)#V0LY?BY15gjhPd)#+)07r;C7 z{pZ1j;N(Nk`9db~a*&ODgKRwf%u>$4=i39>6=$joNEx`_H3oP@2^99NZ@md3`Xs$D zabQ}iP;5t08%Z0Sob|=eLnXP{x;U7Ud3n7ls{msfi?{MQ5rB{VBoHkEi~adgjA#+)rh zSr{J}32kKdE1YRcn?sd~H?ocz8tct2V-urFk9mFQNh5%%nGTFOg(K znl3VmB+E(VCrK_(D&OwbT>Lwaq3e`5dJ%s-?SvR?FiCx3aLf$Xy$YrHBHf0SZDTug zv;8Y-6&|-~DqNn4=Q+E(vjOJ12)380k->+ak*hy@pN#z%81BFOY0(|kb}5ok=@vW7 z@88fA8k0MCIbl&tyF#wy_3ctpiN59b^q$FRVT=En^XXUa7NDg&|82N~tG}QDHw7wM&z8#}j$#1x-X+IkW<1 zGB1e)GY6wp7&CL|uEMyV>@{l0$110Q#bDeVYf5blh$aBxs-vZw$4yInwW(X$rnbS~ zF&Wx~sX`cdQ^|4D(}8)xubXtQD-%D+tv#+hc`If@l;hA6NrO!k@1+$<2At3VY(XGJ zZlIx|#gn|vn*w<=l=>_0Nkp`={(opBCfUa`E4jf(HXRh(EM~*-^3j&?&2PX#e4gTU z4IkqS=4EMaaq}LZ^4BB1R+aE{qcmDAN8oHDzAR?`0np&>u*Yz z{L2!q|B2#U$^J%n=96S)O1oX6iAPl8zCXjz9ILT&erhJtItmEq4Q)WAzL-d z67rAR$4??r8!SyB^L`^$>WqesIlDg+3|Opc-PqOKZ1K*el$qDO^++I28$&3`*QtCC zh-6%Y3^$j3J0^}1ik<5xE}9lY7i_Ny5vSm=T+dKM9tB1c{Tg!sKezc7jz{f&t2t!A zuGSe^Av5vAwZ8Kt*`I7~8hpRqZ;FLH&^UfU8Ih=1saEnIur(MZh#4p>*W2iWu0^~Y z@^Fs;k)UHx(8B;Qb5A;EwMR-?lPx=?I?q5)CfI^zf5}N8<)IulfysaE*nyXXo+rH* zI~KP-1TVl~l>Y~W-yV3}Hlg$dwtkPh0`@)!mJb-4vj$b&bT z3-|n5KgvT?+2cgPjR%u5b2TPKUduEEM%T{Bdxl=b9*hydP!n+V8 z&SMO#pK+Q{_o0&lNekZ9@C?FumZwm+6rpM@SS}Y)7KD}PGqhpAX&eG!DNrya#GJ(j zC*CaB$zdSx{w}lWJJbM_t<8ZF@TpzBz2zo0=P4xDab%tkQPQpEl{T(hBn^oMx6*2h zTosuFubKC&e-UNKX$+F(KWTU#b)QFph5o_7i3V_qK@vnsNyZ8@-8niHkL>m;dFk-# zc7BZh6LBj6xMUl5t+q#dWlxzApv^#CkgWu9uD*N*+h09?lwzsebx<1+|OpUyvI(W@+bC)kalqvD>)+fRu~9c3Ke_Sf?5%u^`q z;0XH26nw6JOs7z{X+?Ip-*1O!bw8MQFGj-7)O29b1gXX9wzKh5)Grmo*3EV=PmNvr z2H!aC4)A?VUi7zz@5^3cFv-ddTkVSD`ASq~7Gw)lf`L=j_5gfuR{o7%X1~~9c2z;= zMM=A`gG2Pq^>=sgYFXM+bL3V(IF`^^1jBL&ADrFgQvA5}=uaUWD02t~-Z$GFSKamj zr3I)pXB^1!1Ad@n&`Ytt?EU7fFSfn{H@{tO%vvyR#)Ha7eur%9g2k{` zOJprzK#TPuGhiVqOD!O7?$y3ERji876Y#M;%Fvi^!N&Qa8)WC%EoQh2gt^AOFHUB_ z2Qd~jDzOhV&+TOSa6h;!VQ0)NRFqUTTi?mV^Q*HBhTd62LT+^x$)#YjB($W0G0s7? z2;-;hn~1r@-IHhXZP{13v!fxxBx^= zYCQ_P1~EaYp}@ z3WRLy=AM4|PL*hu59HG_yg?e?(Rgv#`Q!Z`>~d4;fQnX)KEK5TLb7Dhg0d8Krb^sd z(NRLIq*k#QgJt_V%|0wDHm=vn0UQwF;PrV;kGxOhJT0*u!5<*1iCr2@-wg}k0D=iC z7kOA7d|>?eYrd|B2dXk0<5lL>YCccLmeA(WKsTPUG{?d2mfYEo+e&^diX9Ttq3E;< zS6d5we}!!FaH`)%3eGYw4O0f}=@c#6zC{*wtr{mb3AUziP4D$$18o^zakKxh$X0QQ zDNB+7+Q(;}%?oZAH#534$;os9}M-hDLNR z>>_be<1o8y(TC=_8>o6;hYn2pZQ(zO239Iv=-Bel*=8CQofOROINh~x56eM%^*Obe zdXuO4M2lF@(=l4Q?dze+Kwx0L}eBv55Xp61d0|s<#j{4bL%|ppYhxE%EyFpBrclrPDf`-pqZz z6mcxVHOf5AJ2}=$X+VKwBJ#dBTk#54Sra7OtjVvf7AwA`N$t=`j7=v>nbB**wG#|^ za>YrU3+pwn<^R{Qc0K`C9t%P?H%zv|!kg_gExrmXz>Ci*9f>N@emOu1V(Pk7s>*CO zlB!H<l@$kLq_0F!%ud) zuHDvS6>A@+$EiHe6B&GRyLKw#ZiXPX#^&BO(ZXD#B%;OBw$)Dp7d!`Tv?ifbW^>%9 zUb8(4Xs#?gkm;NK0J|a9C+v~!4+(Z9C?>8 zl4FiF!&uC%QM~GV&;7SvEiC_{Xho4{OD$LcnggM!?SKD$FJ#KtVqFkM6?PY=590uT zfH3u%+;mi~?|U$Q+qvuE{Pm~KI^=e&v3J!p)9b(Z+bk(nl^ZOQRSsQ8AJ=Xyf(dd3 zA7A`<>(Wp_(Mfoqd%chS>GBz_DmeGo9}Bo>XUJ&TE|~uBLEHH1aQ@e}n&fW3Yw!DK z?rMy$n5KgA7Fw{l5N(v6jmZ*S8+Bt9s*pfhG_+dEzk^W8N7E8`Vl-`Ji zGIYpNUew|nZR_OdQP zcP!QOpZKgppoFksSm7f#d)B#Lm#pZZgJE0fD&>oMDVmdKZNT}r#!xWZ36?B&i0#H^ z&ii~D?`$WdA@|62jUQvtwRCk%_;Muo!x-7qe3`J|r#-tzg@;k6QH6wStQ7oNmTT7U zzNgEwpF<@X%{v|)KRdes%5&(TiqQvut|qnrCyQ{I1cGrtMaoF;q*upBciQGNF=D*gpqAFo;ze>LES_TTWwW|{UPNOvntP?_Z;Q&9euy|_ zHt(mEVgS5ASA6})NY1ZvS2~h*vyjDwEUlyS-6_%rZ>w*wpoSAgMY7j{-7M;iN`qwkEGF%A(<%JVq9pxY#LkqA z!z*SM+Ms|YNI1pDdH~$sej2j6B4-$zM*8!9nZ|Is)PX0q!uy9PUvi%%ge1&vEA#ZHz;B=bC9DIw3W3`b>2` z?lj^mP1}MaM!T4E&FB_2&96(RJ;f9xofCAi^ootg&E-R49@V)J=ksZowo_n6Z;D#W zOzQ?pyU8;ZRb91h@f+DSJa4ikKxqA3!fF-R%Cy8Xh$j|<(}whneH$8hK-0J8mS9Z* zt&$*$HNtp}@V&>s+qo%At3avo`6rt9O*qyn(B*qZcNUYQ(RZuYjHQYLjqP>s24xAA zJ`;*u9N%h@ARuocrwKZqV2iOgpT~&$Fo?HgDTZV%FTMMi=NhRc-uUI8Wtn?G zIaQTjmMk?vxDTQ-+n<2fVSKLexTwB%+#W5-er<<0Y>+fuRi4?g#G7r?Z&*Bl5tag% z2!L5UCTu3q0Z%@Hab(xAgNY?2eXrUrb*gRkB@6KFR3wC5r?68UOefD_l z*QAoAl_he;VOB}(h|eZ>XW*$9%S*3nJyHp6-{-f5-S^|PxoZhGyUy~{u}l!nr6Uu>o7_F)~#Y4`L%-}F}ts!wV`lC$b8Np$cQ(YEqwJr+TB zAup2SlsKFrd-bz*=^S_^hT_i4-JlyY^N$M;*3$X&E8Wm9W`~NUJr)4EZmoS#5;{pB z-nfTlSRS%HNrVqSpBXDi(`Gd1QpA%``VGO~SdegKl7_jH*v|5$L#SB(QGTmY@hrNsNAk@kB+$UWdW@b}Kmp(d9pA$h!s z)IwuoPQQT!QF}|VA1OEFwP|`wvFKhC-yRYu2v7Q`oJ)Uqh4~aI%d*SD)$`No0(8|} zmJL=w7pqq2SBof%k6+pz@xHKYR!2MO&j{eFG~bpaUS@*|@XnLO*$ksG7`fI=F=tYd z0W)=SfRZDQ%!hFIcG$Ka#HEB`@H6>;Kvz{5xpC;e_cohTGm|b#6u(`1oOEOiPsb8G zwC0xnn$#pp9eE%nNN7prHiH_v=v$|J|GUj0D+<5fD!G6C!)hukp5g9Sjq0h4b4XeS zw3Qpj+xIb?Q~8E?k$8CT)!Ibm1rhp_e|9<`KH<{L-7tr%eFlnnG&S(qNR%={xB-ue z!#V+=LkTqJXgO=P5DUMf#HDBh;Ld&+J-3F%P<2%VYI}j^uUbRTv_y==wqb=qgOH7- zK8o5KE{NyjrDFTW)qvjM4E}5&_K4qw^0*SDIsZ&c^=_Ta6UefB7AG`HX-dZ!QE8Qe zJ+EcfvYUwe7kk-_Ze!-Q@x(0Y1LGobx@$;Rf``S7_+Rhmui;-igH1skZ%`gX^7q>@ zcfiz>*D`6VGk-j{_sr{d< zGfSgKEuFJy2}lls77n{Bgo>nD&*vGs717>1lm5e}+g(4yNOJv0baH4L^R(HV6JUP* z=a0Z$FI^46jqTD!nG&<33gcw$TFO@I#2EbqA-sW=FrBn*Gy};O6}CRy4q@f)DYKdoH&z08jbvf@obNG;$AvngGLYD0jiyV;NIKS4vmj^>40F?$p(vHs&nA)Bi=psfEQfv45<-Hxn1iK*9!}W2nYIFL%}LG^ zd4)u_@k(;~vKRZW6tB z>eJe&rZ%%#1uiv@EU&yh;x7VI$Ah#YXsNeEihA18jmf)tmH{^0wBp-#M&O}QV=ih% z67wG0VN;?f5}<2KvLG*_K6F;3u?!~ zpxt!$K@}BT5zd;DS}|9HzL~(i(_~QHN}aBqYr!(8qIb-A5D%wj`SschQ!Db;_?SND z6d<6023K%Yi|g~X)Ayr4tDXk;!pj3{32zrP9^2bws8*NzSbeehBF+Sn4$aVQY3{tT0`6lme$??1#*Nj3>~((Tsx8W2Ks;d z7Ki^&j$o(A5fmi;kc<_^28BfG85mgGVlJHYEKn%QpCw8||CTP&3TtI=hCyD~8t9qm zBT;v5X&YUBRw|zqJ=-Rb^Iw2a-{Ug>@4NgstOujkso_t2=+koVQP9gLvWYpe*tpKf zeB*>GqWe@=qW0opoBm?P;S<6@RMXPDqlJimrS7S$b1Pyj%R4M5VBs~2t`*!t_+pQWo~xJ6 zMHr}LfF`}f=(n#D#a^G?Yfk$uc$H`_06l`#nmGbF1it^QTc!Yv_6#sxDVxg5@O#pW?&&yk7W9k_W*>T6V5Fu?-eL% z*=cce>NIn+K=P=>T1h%~A->#8!XU_*u5`wR4$q1*5Asmre6n(z$A$;q!pTZ09k9|r zBKI#gFYRR~QGF9O{BE4dLWjd#kA@`c7D&$O!KLK3eI zJ#XzW9{Wpp)TT$F(OC?vPfy)9$KxXXa-H;P?El^4cpVZ-@^gnuW8@jMG^}G3o_!RM zK9qoV2wDFW;5OH4FNN#wu9LEGTHCOjOUEuMp+~ZGWkPKq>j%6@G-f`q z$WnsZB}%v_IhnD*k@J7Ky&1tCP{B`FSnId|#lePyr1QjF%<2Mq>A->?By|_h0B;Es z|5Bc!WTXN&zhLte&0(1zq6S}9<0&RCrZ1+%jW$k+jBQauY>^Y`Vyc4SzK2-0+p$w6 zVwR-&r-{}tR9qhyMl;_ZoTq1or6yXQQACJE(Vl-_+97&h45+l3B!rtl~a4RF}?>OD(6 zW29fGbF-ZCI!Mhn9}j1pV-G+t6Pp>zEg98Bb+zSBQc@zudo^ifi!&fo<#( z*4zhqjleo0FOG|@?O5t$3Vtw%d#%^vF8l0-lX22cC)WG76 zi?d@LrcQuzkMY_a<2*3GSST_2VxiS-n-R< z&hjDD0anyTC z*oqcFMfS9ch@WqWYZD6=&uNC24U=jYmlM%?H@)=JOq1g7rCD1S3oR6rgmT)h?Uocu zTf~8XjVBsTP>4OW=J7}K3yd7mQP_$O*58tll;%B}G_Ide@Sd?&_xz7R9-0SD$Q*NY zF}kO+WH{7-vCTQrOAje|$SdPe%kIKDsPhzM9dvv%23`{59nGx8MF-8100l^}f6b6u zoRmz|H$HZ~0Oj9FV6Hu&Ja;jR`hmK4W}bAVjyp{>+lx|5uwD; zk}{B^dr=5(_t25aber!<=CV^14LjC7je4rVs$&KPf@Lq7%B`jXb%;4IZsxGr zW@%(;t0>DS>_MMn;auB>3vvU|CMA}jOa1R9z?4rt#kEuA2UO&b>_okdxX{GcH(CMA zzaQbUt717RWuw{IU*Nwfc(2R@ue<0ScH)0W=7l;>sBKYkSUp=#CMpTuAtptq#IhMd zpy9R_Fe4+~LgXotyW*KHIF_=xnaT%_55#&k<}ddG&MA_hKJ~gj&yCbYN#hN-h9<+W z37YLW$B)_;6_tGSmpB+H^em@RM9UWHGG+TC*~I>u-?%aKdEXRtF4dDd==0hmpYPl( zsTzd1(^Ej32{HgU+5p}O3|npSbu=aA$@&dC87?~(ls?~!+nwK(%u=@#EuZ#KpFO7C zw7HH_Sn62Z+0cUTRrSxl>E;q(1G}=}*tCLgSeY!p?mMo8r3fmy$-I#^HtQ^P*0K|q z>6Xl()BX8WRFc!E7Brb^VM3!9=0<)$5Yp(IEvwmFJk4>gQ6!AGnq5*1_==%3|Zy-p#$rhC#jXyF6`Eu0f zW>M3vLtvj~cMeGJ*3&Z%`i4lHF9qT81@dtFUA%1oL{DuSjH<5*pAyq&8;?r9PM;3?5v_v3jj6eb zshL>avl>9ykzq57&7=`gi@E%`fNJBGYawXF&}jnfu%YnLKkw_C;!sML-hx_XY9s1> zcdDqD$EN*V)SRME0#J+2y8*&&0C!EcUUp;(QymW++~~zhc*(S!8{ZG6<1+C?5k#-b zS~!x|T3}uR@z`EBG3U3`DKEE_D8H>|w?55^a&GI_<`(tI$eG^Skt&+dvxPk(8KzYq zKPae>@$FoRY97TeM9RCjezT8vH)YkHcg?}0R?MnfLxv(y*=%to=!w)O`mv*bzpZSU zCHaQ$IIPGK7%0+tBgj>(Huyv5@rw-C`rv zT~^|&>?>Bq2q(vo-wAlss);+9NcS@ZUCSO~cAx}UGC*_T9RR~y8TF}v4(ds(l+sAt zRYOHCu!#s{y{+w=TU>!1;XC^2gg&~~e4a^DSxUm$3m}DO>!Ne+GUb@guZN63W6; zMHf!mg00Kl5=Ukn9o(9uQar|pTXXz?mXg9d&2e;|aKr=Yd%p6EA3~08N+Ydcxp_m} z04^~xpO!6V6tf@xX`=hP0)sCFPTuCn;K#H_P^2=WuXuQkcZ%sJ)iW-g_qc#VS*JrW z)0Xhd33`zy3o@x&qnhsecO4dzWT#;k#T$W2|J@^IwGkDolU-2@X=c3I(CaBFWopQw z4w#HhqTSUp(;EToAhrylL3*S+aUV9W;*&CA5(h{C;Dt5~D)TFPV$f2y&ev^n)B-NA z5~&Q0*>D1u&G~iwCWOU>CM-r+g4F6YNbgXMBfm!AQ!W#w`*4y_mN?eFm6#YhAz690 zwv19nt#`FkTGyLaYPkhrb>nN;xpbhJrBlwp2|?C&R8=h2WwB5sQJQ5hIc_&xO;7Rv zK294Ydh)yZrTve#tMv!NGxP0G3;IDV@t&oM9)BAP)s<_h1Yo~2BJ_(2!9Eyc z(8C+ys4xLoF`Fb$B+rQB1 z+no5&Wv!_VidvRvn^@)UGlP2?=Y zlV*4`by)Om;JnaiktSBy<*e|FW_~K*CKW@1I^FIp?Dfbo<0bHZ-0YiQ;1*FIum^vi z*-Izyh~>X-O5Zb;o;&wU4Qd97kl9M=oy5PBbmxocFof1lJK0~6L%Gd#wpYao7z@+S z-n2PVpI{WpzzF!fMEs_5>J%soZmui~p8pQ7_=~UyoHd?!-9kW%G`d3%xTB?cS?BNTzb-I$#IE+<&26XI<(tXlbCF zju-h8W;FgEDbq`XWt-GB=K>$3EApD6Fd$j9pr&H~KQ59LLXi{xzorGHDh$v=-F;;B z^>nrGV369BMg_{uP*)#?w#L{Z_0T9AthIq2%F0sL&;Vs^i_*2UwY_k>u$>G50UOe$ zT|F3Sx;&9LSUpP9q6#Pa1Vove=tq>&HFT%fh4vK$nd%Ha)gS_{LVlVTn@NXa91O$B;Ah7G za>;7+6w4qq`m-1EvZ`EwZRs@6g3jy~>;NCFm~q_vdCqOQmfLxE{FdeDR@ENJT=unI zJjmnIm6x?XoloR==VzcFLPoR?-A~S}Jna=(!*_b)u)8M-eZ@;xc8L~D>n0p;LV8`} zwZrhylAJjYDRzrjJaY8pw#LFJ&20c>M59uANH#v-kW< z3go2U_f6_%UZ6ay=k@77s$m0NMV9k1Brohvt*Ag|%zP}HN@NB-ih{Z-rqaare{DCZ z5Mn7Uheuz4Za5`@JPcwe^PGyZH-BsLpZEW4o?pKZ5HkZ_Dsf7V(-ox9z<6e*3W_!@X#%GQ;? z9qTP1}Ip{-Mc(9D@JJThlx~`Lz?OT(3w;{Ypj}-M89a-b-#*h*JZS> zYhQ{MWj}Ta6kQjHGIR42<$Dm-{gi#ed%L49Yzf_26;xf-)Jft^-bj8VIO|cnHf}gf z;Kpmd06Cjbv0$WejQ6i9+1T6rm4)pXuL@=l*p!xIP_aXZg>0c25}UUc2LX`{ zch+`;+qmnSLxoLSn(eK*X#&K6SMF3)kAx?Cqnd4vK^m6^&U>$k-*PE)XBUwG0$%yP zJngkCK!$aoH(Fn27R|errywQZ$@(ZoxTMYpF0ixr+>ySIVLu&}Aja1PQcDbumfHMI z$(CW{dCNGjalKPqg|NgJVHx_ms9j%(993DUOWR0bJ_Oet=5=}L+x%B{e`Tc(mkD+i z(sAROfjJA-J~RWeBv2{ZG5dL5wI(zcGJ7KDoSEgg56-bFZW(%{jJiv~G3B z%PA1o_s5rt9dJuThQ7+|wJ|$gm$&aDr_MqaOefeP$OSYtJNFhuzYv+Y`kQJ^O+J)} zNjPvlWYI2#%tVHXr3D{u%QCq@S; zAndoEN{YX1&jL8Ft>ou{oxeO??h7HiPo|6#KKigPe+1gLXgxs3(KtgrxSOa$AeH5# zdLsObr}rgwn$_{gh&@u4|BRa(mIF0Un~X>2SheZuCF7NdfHO!;ant&Y$a+nvP+$Ge zZ>pyqu?_cr+<4qW)0gi=Q8JB+%uE`Q-o!HsZ7VY|` z3`|9YYO|8%eYjaaz&KR=%TQcy3>-PaP-np*DVW#86@+NK@P_Q_vI8#20;EMNAlhvH zJmky7i-BjCK0eCS^O};qmwQ6}wju_dGeoGh&>N^V5N;3`upzP0-O;tKlDjh8j4jhn zzbdXM1fy7le1aNd-`+~R^zhF!(Qy%MR`&I}04suc{wLi;`^ISI;5?>)P8q z)wUeZEnRE%4wiBkUK(=b@S?hvjT=fVx7i9sppD5&*a+8c)ct$(hVfKDa*XFD&!!tq z_-YNKM1|SvJD(WigA1=o*8fzcG?1fHhMedQVH96N;dp3!$oU3*#D$ zYHxQ)m23BASzhe{vdf6Cfg)B@4#k2^TqN^U^WM9RgEj52dmnUE36i-?G5+&hAz@8r zEc-3AjaMmys?%JeOH~8s`l`~GDpnI)2kno{)12P`4-tQ3+CsbDdPb?T8h#7aTFu_D z4??#|gG(mP-Y8*`1-9NCL;FD7ABRYs$zMQ$J_|tm90^Pk3o!0=ydZQF#bhgc(kPLQ zSVPpn8XWfzLHUmFR$`$=S83gaz{{o0^%41BIyydGCZ@mC-8Qa15HFd* zLQwBDN+*vZk9*^i0wqF3A$px2jp?0{vYY1yz zW_NqZ;!lfnL`j1yHOo5;cM`N!ncQh1X#6$|Pr|e~OE^*yvMohI#eQ~%RF19_#UO({ z4E!M-u7bcXou8CuYNo6yMegC;ntpr|UUJ`?&JKN=?aZEif)NK(vWzMboME(g1yDst z0V|Kzn*3Cmpc%qfNB&Eq3V3^#FlGr3%QD#fdI2C!2_OWmPZ-Sio-N;WhDY$7%p1=? z?fu8?X@kw%K(UvW#DG9E0E}~549f^BY7mDU#23e9*LX#I{X;)&aI`N)wHN_h7NuCe z><{Pl-hWNF^KALK%Ay^IZI_z+bEKlPl#)g4v@KE2U?xUek-qjdcU2X$)&DA_`}T2wKX|zKnBo>aU#G{HOLJytCWm!HrmpAFCq6k=be#;y?$f5YfDIf+hWa#+tug`np)l^!DCOEkbS5 zWt<7XEHxTV?a~p~L?ZF?7f0P!-tjpaxaylgs_*!=dojx+-kA7}u-JCmwpp(%+B>)EAB#fSo+ZKlxAT`UB7|z5{gV zEbeCHM{UH%{+Y*DNi2;n|2MeIB#j`(k=~L2fJ3~ID9u$uPT{XBk>!DDyRofL z%403F0%{G*%LYkpZd9b7t-?WcnRwi>YdM}0S!Sem>j(e*sBA)gIkzSqh`N6YRLfEJ zLI{B`_IZ0E<1qkxmdtrjTKllga%^TvIm5oV4poI<)!RpI55W?cdZyjfVyeI_{>|ST zMA7SP!Z(izeHTEOFgsKW)Fl1aI!@AL zx=HjWMcb3Gv1XH-ViWS=tmIlbYPa?)mW@3|)2@o9qM2G9@l4)-3>O3}#TpkfNgOVo ze5wXGLtyT)1=uc^zc##=4hZ9(;pBI$5eFx_QD-XbBnEcsD`&$$+Hd|^zrLWs|JHbS zw$s8^lJj}KUa62DIXLsca%U_=Kvk#r<6ic?)TdgK(r*&JJpT9gG#Ni(3GkY@qf#3g zne&kT0r{dP!sv>D40EgMxOe=N8{nD*&{q(M4@zcZCseY_5%cnRC~i?Xc@&6tT6^dw z`j;K2Rn)t;c7d&XtU7c})}e%OFf<+>_T&fCY#&Oup!k7b0smj6vxE9(%NZS-0ocDK zxys!6k#3^<56PqZOm^W}Lg{hIl@6NrNmA(#OuqiN$|*N_n>aJO*NwcQe{(y|Z?rqG z4yu3HONtwHykSz6^N(A1r@KNI{k>r4wdx14FFRTsGCV$GgX=pbU6-yDkrIWP+ghC` z@J58+Rn9EaiRBmt(p5JjYI^z{IVLiqb`bAw!OCZlrY*H#&Q{zY3*t^PFcMY;aQs-) z{Xf6dOfQX=G4+OpS z4ZmSFq5;M!4yU|5>A~y^NZVwAEUzryl?=)=y`vz? z0pA!4yYp2zhv|)+u1v)a_azwDue!cxE#ZxV$)09yb4G#rs_BEUM!z43?G3Wo?=xlA zPjhzj$bSW1dPU<;_ zd?(rA7;V>94_1QYNlYefV&6L~tBLobfKaKSN0%uT0>Xg+C#H$y>Cu)K!9lN`)vEb| zezu8F_?RMEmELS@ou%C!nPm;zF{`aTdp67WqW;pgLmunMy&6kmnRv4i_?Q`pS>)Y$ zda8$rSulXo0|IIPHw=MO`G1-PWhpP97IUjdX4iJDj_%~`aXwuMI2bW=LAZ*?84_3e(oE8Q9renchu>5 z+A+KK<{y>+0G2`P2wKb4fBN!wGW)49^B?=J?|}z__0=};7W2XhG^?Jsp#S|1ar^@H z`Fws#ZP`hSQz?`Ssv z|NY;IgqTH>*sa}&U887KjKo$!G-8w(wTl|1twyXgMp3)VsM=d-sTM`e){Id)QAKy@ zp!K`o=ls6s^WS~)S8~ps*SMb7^|-jfAlF^mb-H2Etbaz}OCicg+_lPwKH54ws^z*& z<%vr{2RZWBzX?00!An5om@4q@4odRlm4S5Hk06^9i-!PS2UX4z#R-&mFPE6A)bnTi zudq?_pIO>5M$CF*_*Ge;>?&4Q@=nt_##IKrQy{^`r4$`QZfStH(cqj%o++m3mX^%6*3~Ak ze5a*@qoO~g)pnZ*55Cqg{+1J@UpIV?q=<3_oP@l+l;9(upXZO}1~q6VH~ZIP4DiOv zJkIv@6udGTDZgwnxrD>znqqqNIAs!X+Pe>i13n5Lzx?G|IR}?D@Y2<80I6|;1IAc+ z+48yJZpzt2TDiqP(C2L7H+(L*wSF4~c>a9RRQF^MX<`szV0lza3jq9K0O6S5c@Mq* z$1#u3IZNS8(oIw1to5a?RoM~poKKs-ciJ)fzWX$7uDvn+RAl$G$EDCm-w!nJ&P>;Q z`E+P)FDF>{sTX)CmZ9DUztZ6^!fu$C8=maK2t)-z$@t&vi zXaC}l-T0%?+p@jdzG(`i+Ln`HD;w0n{KC78ff*Egl~w~`jAmcu;)?qr+Mi=@a*Ktk zCh?~*g!@sQW;|{t)n=lb_z^Q1M2L@!J>Pj640@b^KFU)OXr|0iMT4uHwuP~Dm2y3+ zhJvbsG&Kc!!~83*jvy!a%c{ zzH=nJB%IMdSRBnU)x=!-2$%fA`O^B3GNwWFw&H!OEcD!&2sa&zyB?( zm*Buq2UzSy6k1-ZmM<)l2S2L-08gVQTZcjb>GbDa$wXH2FM|{V&ZVB4L497+f&2Gt zPaNOn=4?40)$s*h5WL)(tGjyC?yjAW)GhJvzmI(=IIOc7!&O|c@%G-*-ptsK_Ub1$ zFFm^WNo}dTq!NGi9FlXPV4HYM;G0J8A?wu8U{}|A9tEQR!XhtnpiAH7ftc(o%!b-> zLBa8Zw}pxNp`_9Z6+c-^DA$Egd~Q}Z55~^Wyt243Xy`uLK6kbHCFpchv zFVvxzh$k2eYP6fm9R-qg(RP;4CJ;S2bb_!jo!Eqy`c?k?7$;6zLkeN$&&^#==j^p= zY$JQY$=VaNw#+XhP+?xtyH68KnQJ-`C0@N4!dcftk@+ok8#-mOB$AHDjdNu?QvjSp zIt&mk;rFiteu?+8agdkRna?8koBTqEJ4(a;9r9HcV%`RPN*L~`N{ZDinRX`gNmLYD$|UE{AI#LbMS#5Zv=l4b|7 zNI#G|LnCJidcp+<`x4-K85)!1B97o-JU}XUY{pV1n1L#sP$g9WV%1kk?Y44C?7{TQ z9HODkCN2nRrc`94R4?QYk^@7W&;tfDH3FnWthdwB$wYu#0}AZ0;61|stTW|4{R-2y zDjrDZ7qziF*ig-1=^I#>7ZBWI1iq_1;Hm0za7JNbp>fxWP}Z3`u~x^9;!CK zp_4|J&+9McR}ZEmtHq9~PF}n6eiifP)#kY3@j2~0Aiys0zz>b{9w^yw8lR$um(nWc zx@PSXBR#rTkf#t|b5(jceU-fRmb~gK477}fPGkIn zm~NO76yqPgf0%H$=0Nc&(yo05w@M=3Q%nMjyjO~5X5_Pbi*4C_*3*8|$R~aFCX&Ew zPQX4lkz>aoniDCuAB?CdEQg#KIQlmI-}5Xp+u8_i8E~03Q$}q5HS(z&UHb*z2Tr#8 z`q=dgnbV?`zTS|=_4$IdbWngcV<4LQGO;`E9=D_Zyfg$LUYDkNKdh#^3Ox!%U#Am3 z&MANXt<072iE^3N%ib>7bx(1-{qMU5fAxppi>0BJhKj1KdjsRKT0|swI{&x(53Gb*_4N2>fg|d!OL@Y1l?R*G zSG2$K02k{7%Na~ricp?g(>5zYP|&L<2Q}nHgD7TeS%}@ba?PNR5t?cTLnS8HBP>e; zM5)YrT?&ip_p;3|F-nSAMP>EV;VDTp;3*V*$$CUF2|7!~^@BTJMMg>Vdn?5dX#dko z3K`FL4)nk*W~KRXY4Ts9EAKHoC%z6HiFX$>nv=WuquV|oC84kD4nqVOT_rmms|f*U z2wyP%2pLc`Owq)l8@J!1sH`q_!lI*srV)_wF+}XD7bDkLy z_d<*+s1hERwg!BQ6^OgTahcCq7;6_It}=(Q!p!UR>ou@&P2h04rDj~lPrl}oe|#z1 zTa5n&(8iR}l#bR4I~#LcSFrx^hb*3Nv5+YpRUw+YW!>-T5wV~C%t6~nMH}V#SIc8h zyHcOc;75~siwQSsWDRQRRVAYBW+da(pgIBOh&b=JRx(#acTgICe=%_p2--`zxJzoa z5W5<(m$2&v(&F8UJ%KOPkf;7?hW?ht{efosWJlLK*BYu)GwE(x5$jnB+Q#R@F*SkO z;wafH4(;pP$e!Lys$gX(H~jt&opymPO5==DQ^s+Npqpzdl@e#833fmDw9TQw{Usxc z5eOi|$f6}a*YuP>7nq9qX=i_=O;3#-u44oH*}79!4BQ%;g*oV zTFq`o_T!EW4wuI{3;I@HAT_EA%n8($2Qo?%DNnIgfhc0~#|qX=Qd!wgdMsh=yV3nu zx@W+cm}dUEcRo4m-f0^|74HN4tTnL4b-XBvBh0p^t(7B*!_wh3K@M~At3ilIp!)2m zg~(J$?qmrwL#GVi#&B*fK?yl=a4J%zT)6vbV46;qtn~;}G?V8uw~SlgYZh+0zn)`c!b!Ff$q8 zg2nKciMEEGKpGqJ>54KIY*gqU&(K%|1M?D?#yuZK^xsxT^98@`CW%WKdK*(z-$@L1 z#dq1B)I8YPn^PnmQs&&onOcDgqE|_m8*?o4DUcliWVL^1NsP#tCN{quQ6 zuoURh&=4iLJWQ+^wUWu*$MYba1D|!dNpGq|^<5T|wk$)-2`Rn~Vk)hpjz^T*!PCDOJfr=!X#2PRZw8v3 z>#LzQf`@bCy8FXcOdNIbJ@NULsiDB_ zz2@mbW~LJkL3M#j49Z9==L1lRi<~TAeyRiP^n$>?E#A)k>Sg5W+?Kx;_3+|{%2WFs zK3;{|_P`?lym8y#>|3`>4w^o;7SSqupW7{1OvD-MxxG1YjDHL>_=LF*(54Nxn3E+3 zMNF^aA~c;sM4PQLZYU(LP=7!e$(&$?dVSdW*yzg*gOP`o{yydLryk!hiAhjMCr7Q9 z)G@%^oIpE*F=;PE0`k}XFO5O@p8$ad&m6DLT+mY{P&`lBJ3HC!d*Pj2olaShz|ITn zecS!BRs?f18^UQakzi$FiX)JSHvPqLHJJtl&Fm$FVykZohC@Uj7a_OBRj48ML6j!J z_xf!_tj?R1a3x>(Cx@bv9EB%VWX@(&bsn6at>&^PqeuxZdgZWW>On9AaA&1m;6?K> zsHdmVwB|Wm+p*oyHg=>C-+oJrkKh91yJ@P?3pg=Xy^Y%r#>&+X)jpjwi%MVKZNl z$iUm)S4f-h)Nkiq+S(EU;7f5=ld`+MrpvzDrdJqG>a41W6fGNW&k(oH2l3j90s*1g za=hbRljYXS^?ttNHxP>?IFXb_rTW$@O$Z8&=#h0~tLL>UHM>?lf$`5M1M)v zlUG-Qd#vyc8Upr5#1?CSRp5tKmMG^|Jb#v%!Ptok>2nPQo`k3m?~5+(o-Zzr^8MTp&@QhB z=nu%8%P5X-f1QDUvD{y9Ao>HPRx??`REx4$-mx83=4fxsL8z_P^F~vvFcYEOzU%N6 z!L4GBwr1Bt^h~Q}SJ0fiB znMCMfOlH>UyWYT7i0JOwRh#lH-9KS&N|YrtG&Mkp$#U*5aU=#Co6TPBrKC$yXEo~5 zuvVc!j>HZ(l4F0%e5yibpy)-DU6aMzI}e1XFz45}fH0j!@2&4oKfhEn*IL=!E=%M_Vhby?(YQPV@GpxdVWSnU=H+Yq)mc(f%yu`IEeF6W#jC2C;)VP{5~6 zJob*bVqjthMwBs|ag}i|-e22$O=!S2tgqd=>%(xEt?!}zTMr-+wmHjxkN={F`Set# zXBE_WU-{eoUN)`k$dfmRlFly(J#&6=Lq5q}V$kQB;k4MDYtYNJzNqk`;t=C0nAZ6w z(CE}7ki000GgT5M5EILra&rtV zdH==%jpp;xO?osL#$1QvH@1?^mB)J{_Tf zNImPNVto!j1tDkH7Ii#{)*d(o?s~jgiZC6JRjvZN6iM5QIQ3P`_T1dOYSh_7*Iq>1 z`uf)EF>LCXDAKG#gx{ZwA{c6u-88{k87lc2ITJ4fyp_pO^1EKYlZKN%W&o`l@{g&j zA7(F$nw-iKNT9ivuXGJu$fyDRW0_qh0c>f}WKvo_qr0k`K-4tuMl~x!ZCp9PE-T2R zJmqv|$(iGvoa=@7yNLE~VEJAzu*CQJnrSOS_05Mj_gJIf@BOV_Yq}kEFjn?zgQk5y zg}>9R**UL?G09|#)OwPUKQ5{TJ)0P~$SSMeKSTc-#xl8va%iNS|Uwz;{dG@)}aZC9IVboa*HEs7Mi zdnlqBYt5iqxlmN>s}7#)t$B0EeeWPadrFBll!bnu6^yUqPn{Tk3kQS z8kfpA^~35-Gt-vO{<2*@ci+FAZ0Qf{e`tO)_w1n0EAUeCzEW{fFtHV_BY8=JFD3Z8 zFxDhcJ0&Xjc>dDreTP~&U?I`OMx*FR<(di#bHF|UC)zpqSejo;7Fi}OE`ijp39%F+ zjtzO(Vg#{##t<`NI)=wU8%>l5lWohFaFVf&>)^YbaWm1^!!tnz@%6_^cIxs`+xKp@ z!UA3h{wf5IB6*IeTjt2J!xMGbG-g4&EM;I`d>KP-b(#heI00A>u63{%Pyy)WkV7Zz zP+XcPdT0pk6Lz--HBQJ^^K-?CWxp&Pnoe^NR_Z+sN_1bo_t5<&?+Kqekd2AK0?-@? z;J+|F`rBD0Kq9@INz!fCJ!k&)cz$}E6m47DN6WpdciV+|2jL%ek{7;$ zQgZb3mf&D;Dc?*Q8rP)JXjjDmLD}ML;iKKh6@PYZ?kwE+LplO*DXrzyG~8<9_7WQT zdA38H{f0gmQ~l`t-!;dif=8s+t3j^3!p8=u<9F8Hb=TGqB|lYuPJNOcJvFn^ysi^- zIHm}I9x(Q^?C)NR;~19hxP5jpW^L%)jrC{YnlFaE|L~Jq1vhvj4st5hkv0V{MJ2q~ zrlKV3YpUMzI344RG<9RMRcmCOb>w8ZeZK{sZe0|BBowv*S8=xBaBZXO zN51Ru96T*j5zeOg*)mrV3W>C;!S__)qqZm%X&@X4Jl`*PK?59y!D3Ai z&;&Bz=NfwRS9!;unopQH;)zeJcd!gt%^Rtx$ExgmqW+sV!bGiuA90LCrJV@v~^fn6?7c21@c zIi;sDnC3C47BM-KrV!wal`SbF=?=DKPRDPgv z?Z`&ll$075;4r7b8E3Qe)9mBzj)?#^C_(f}wcH6Gd@&b8GRrq$|NdRk>(==qPCC&igUv>$uy0(}laApPc3a?SwV_(LaPvx?{z9qgPx{IDC&h zEPbR6Jly7sCU7Q3Pc8)K8Ql#QYy5?(pXnS@6de<9v+x64^rJk3cE-CG= z*q8yvC1rQ*Wim~@nmj0o7XQI~!=1pMtZ$HqnM&MKhItK$`NqtEQ1e*UlnA7YOPX!* z6rm#Ux{m?hcE1^YsMW5)$6`KuSlG2dRFH(Mhl=y@upxrA2AZ@gIGZ0I^f4awBVQky za`wc=*{;_u%i1a#tH zRB_}+!Z`!24(^qRtDIY&;6;4{9Ve30{yrI|B{dHGpmUEjpEbOXPnp~G#bh1l#(y!oO=)HFC8=6I z1^A3^AJWYX%8hqRDl%M6M-@{|H2NL5?J>2l^`ntwrq@B3Q*FV{(F9`;P zF>3q-=M(CQW_Z#^(Ba8M@l%bHCyN#CHRaCalvVCtfh>i}%oKZmztjDKqDBZFKa70< zre1E8+yhFu^=!loGy`z@RqWY|rD`LO+M6g?Z~Q1(8SPX}jARmL&ghbk&@tffL(X%g z6EOFmm8LXP$KsV#G9KBRW)FYbNfWMEu`P7+Y3Vw0>gr2^uQ9&{KxSKRhbUE`y+W$d z)=rJp7RK|sY%*_+XKNHM#6jp5mO&$w&sNWhYj$(~f4IYi|H%m=pqvo(=r&5j9FMnj zJWV`hPj=q7B;d)X$qr<5qBEGlAlmG^T9}y-i4LYF#&{D)3h9*DDW{t`m&a&s$u2p( zRSpr^+JbT_TNY|1w*iZBAMw|K%Au>uXs(&thQ}?GC?-c)T@!Co2vt0wNihhx|6=j7 z$RxHs3ko{ew{p0-8irn2L?mqF*(fXNkBuLBfZGNNZ`yz>Of#(W!UQAzV{BaUn=(C@ z-JLqu=3E~6%3I0DBm0{xr6x<8Nv7@foO{tiRo*9!??R7sy-?!^%+ZoyB>_zHLm2Q! zsdTyKjcIYZl7nhqM#Ym8R!MG1Yf{#Mpf+cIADc~^P2Fm0!oxj54#Y}ko+7_r9^S&Z zwcdwcCTFj8_(6%jdQXy9Rwm?r_yKa!B%?&oL$T%3mD}cFzP3CAG~aCOP*G`Y$92~G zKI(Xl0+oAs(Fj0ZROK*kFHog_yx5h*(K|Yh?rj(G)cQau5$Vb2QVwo{k-NKFTE^l7 z&i#5wW;06;qg-d{H7rIA-dNIFR{+(iAwDWOIyD7o?3DSN_gU*hB(JE#5Elg>q%ai9B`F&BEW8Wc0rJ7$~;q8rIDBdn+8BM=djzp;Yre=fZ%FH2#m9N zBkAsO{sM)h4?+5E7rPEL3D1}b^t1qXk1dv*>z3su&CIZ8=Ob)MKRG=%@l{k( zS`AY-_;}=c+8@EX0m{LH5`t4FuROxILtxkVdB#k{o8cK>kFOyn6jJDe_oruaWruGl zl40r9q_tzqX>nC-yv6T-?m_UmW(|JhW*x#2s+>4Un?U3%Vd~Vd+ftHc!4YGdXsz&n zh7%Ze;Ba-i?3d^P$smN%eik83Z12FtY#YH7lC>Pxb75G@=Y;QenTju~{jA@S)e+1l zGYT2xRZsBMk%3WM+vvm))aFd-Y$*vKh?=M;fh2BT=u)PF0>59WSZ+L4kp3}r0O7=N z*RC1|>pADaUQ6ykP|O?#e9hK1ipno6TGhH#kIw$`4S6%DQ7?y<7Do}yi1^7&g#KS@ zFQuL^%S21jD`K2rM@K8f1w?fKE5)i+9&WC5PK0kE1f=(6UuRks9Xh+UUf&1+)6eUa z-bxXeiG_(zjO9iDyW?;GJ{f-e7V}?cEO(0MVxDchF@OLW*Ic^E!FUa+dMYf5+__x6 zFzU?kkL>rEr1hPa9Msv)T<+>1xd)A(;gtE>b4C$^>R|5A_dh*XSMOLSZJ&&K+VOm}wo9IyW8K!P$h0gbKPOl~meIU}|{o_EWWhernWB%YxD~_OM`< z%Pk163I-Z|SX$PYhY#R+%?V~rpWVCan`Qy8b{(%Q7fnN{mJBGf14Sn!@QL&Zu16vv zT}JxA5?vpz(i&ezNtgESMNHILZ(sXGh5d#ERy^R4`yvmMCJ(^WzH5ujs(tz8R3~?( zN;9wWY<;HqaJVFlPuayOQre&2nIuK74CE3loZ*uW$o~9-NB$pN@;V1sC|N`n-la7B zwjakjlR7aS9CK~M&#wi$jNp40wR0i=(QHNGW-mU^p@WlEy&hy=R(7Ej#IAGMJE)p9 zTVcFs%TN{l_`6FdpIz)IaG~o3&Vars5^&4Led_+5r55gQYfU2V#*Qa(A&b(qcKM^jbio-`aGry^)n(@*1wIr07Jn>rbTHZ8y>Hvik*4+BJOs6SJdb_X`+-}^CUSj%s7GN z=YZXM_1Y;I-`7K}9{G#Yc(n!!p4|Mo83!gm`55gfsr(!!BULDA?@YnGK^6w?> z-P~?H78{Wq+Fn+;zI6|1*DmK%4jYgw35 zs%BF$eep&88P^8H!ay6O$2SboDg|CHzpHeQ+2^Gnk}$R)=upB%8Mv~8_8}QmWrjbz z-V<4erC38HA@ii(G7xCP4cj@vJ09=%SkwxmWmL6(xJ31b$?L0#y^M*Xvkeh>%$)U$ z-Gh~v&VHl|IikzXE1Bf`x1sCrrsrwoO5bx>=O9Sqnxwv56$J@+Z1Uz8=4n*YOtmZf#OLoLnSMpZ0P;$!=Y!>2AvLR-_XBVZlu*@p znj}e)M&O)}`tZ@3z4>xHwBUK)=Q_%Ao4$3mX9Gv-gfyR|I^JqF+3#*sZC-vu4=+0V zS!>*lza4Y)ZRYR)u6Ozz3%3Mj=whJ7NTAt1sYEizK_-=o^Wi7MJ z+3YUWn3!J1kx>FcweggoNRvurA&Hg=?FUX>U@nl_40hr&`J%gBOmUE7NU^O@1#fC) zl}Z)p1XU~`J1#zO`lIbSFxt{+CZW>HOjZ%E=fopXo6?v6q>`HnmA1(m!CJAMm7%G)`@s>` z-?7_w5D?Uu<^vc`;>Pk#B-8v-$#BX6!@-$N%l31rx$Q1w`&zgH%wFS8UD0cqA{(Au z^+A+~pz0LgPQm$cY1ElFIa+U2JJeMz7cIAJj~9eTpW@N3zLi9xWLFZ;aF%QDxYwJg zuhHTR-}Hq^x78rf{Xgf>%ERYoMmm})QRzKZ{h zn4o5Gq}${CC#x{fk{ahW=}~EhyUqkV0PdPNK=x5-O*xvMqym+m_a|A9COvrxwE53B z4%|zFPu7B7F>d2f-=scT9x$W;SgAqzI2i~bXCJQ~D+FIZ8W@t*=GU}+0%Y4zd9bQb zW-@R#;yV~PLRm3JF z%nLkc--py;j?K+Wo<6cYq+iwE+V;iZU3efX!=j#uxPd_+aHl~4Uacc(^1%=Yg_q&K zJ9b7Gr5zzbzyPaU@Qf3HniuG!Sm!vr)X{v~R44h5MGk3Wg6Nh6^XoMMaYH=TNltt; z!pV%X8vi#7&pGyT9sny&-!1O;`pAvUFOMI|J_+RefM#DU;jy$r-)`aI5UP}Gd4Bmb zvRN&qS-wuesRXrfO7@gky+Aqs_rfBiE*@T2vb5)a=cD;!gE4uh-`Dg1KTwn%173id!%Ex0hx$;7DvU(5{)7<`IW+ zjHM8vfQV#+^BADgGR~Y_Ph#JQ>)hM`Ih@)Cc^nAhP8ZkriFI6FG z@_2arUM<_I38Xq6^=DbZhmDg6(nWX=RS8G%9>>q&eD{X^#205izM=F77VwNqv{3GP z0Qdu0d@29^(UaJPuipaXO0QS`P`DO($l&q!!7&c}By}=DK+`|T2|pPSWLD=mOKcQU zA~<65n}ID48P1%XfPt6(b7^^qpyJ{P2>2Y+`pgS?SxZdpgCO94ru=W0c7DMpBv(>+ z?1;1H#Po2-3;uxbjxz+_X(apHj0q9QsZLcYjXhV6f#p0c-9GVonH4@mR}lN4A=p%K zk*d2+>OCqP+Xxezc|Fl2SZx31`M&(dF*&lx6Z?6%B&5#DQ1JDL$fYf1CsP`DZN3%@ zBqa}nclG;%HMs@ z5t-VGI{4_e2c*poj^HeCS&zIElaDV7xvsHHX}%mx7fndn3~ zOQ{txoT1f;>3;}= zl>xrve)r$RM>jt^IoP56AV8(F^{5o}NSWACud}$TnUk-MIiRBpVqB^!D(cak+m`Ca z{yiYqm>V{g%lqOoNL$afH@Sw~b35#*KVtGaoO>%bVYn&j2rba*MxZZtQ%ws$Y=u%L z&C$!|@)=|W7Ae^iN@e7-E@YR~vCp?m_`Y5;%goDuna!GCwcrGnn2>_?MD9CV5d(!5 zkkz5+R(OV@Jg@bHvT2&A*hQiXAz?dqevp!y_`4(SQk z1PiO*`8a=2z3kT?<}x^f5f^fbB+r(4QjX0cfA2_`=`hi}b>0E9xT)F?7d6L1iO9QJ zJ`G0E)^eV|TJO5;a|v>pa`3^dverB1;*J}=d#Ku}HXtk3TsM@mBAE;NMrxr9XF=oq zv5t9+LGwX{8Q4;$K77TbP?f$F`V7uP zvH6C@#H#wegKP@Y>#N@Xp&qXPPi7DWWrhz28V_reT(#gfq$;8mo z6i>8sFflbXHn(#mog!M|abUS7$ik-c*)JDG)KY)f_=v-NQ`3XMc zKCLLYe&oxh+1W>b-=w*Ex$J&4=&n1S(J0_PZF-f5s<1gJ7-cCfEu#^-T$kC)u^lUF68KIv`(f;N@xUaJ<)RtF}n6_m+R_ z4W0gwDY<$vrd}Uxm}%u&S%|)TI%p(xr^AE635C* zXJXS?0$|N;T^?#vx2gmIt?TPvsD&X@QSELA&f*7mRne}9uwRyipSGUG*|}H57KmUG zJx5paj2sFsA-bBQnGU7)RLzeXv)(BFe5fkJA*Ckb$4LC| zD4lLpIyBORH&XmU~+dD7(< zuS`XBbpK6Fp7?L+yQ`imbt1H`1x?C{a27kjB*zL~h{O)wHdAou3~lCWo^0d3u;KwM z`Em2h{}Q|y(@H^3LcjDb?*mE?@*}x%MzmLvy!SE>QmhLDH6_*)ss$I7mE;5CXG_xs zP`D6|KynB5sw^(^1>#{G5hm*XPY(szWj7*>zb!mocY|%6p>cbIySRT0A}gz5FCObs z@O`9bYbjhO+by^aOZ_6d;PuB+?277~?D`BNGE13bDME?+?y7nz&hys;w@biYR-*-c!a2j=dt_=*6jpKHukcSc5 zz%Lj00Bj+m0}5;SbC?O4|8F5rQ4~eEsl(P=nXTD_adZ<@%29{GrWOVR?~Nlm-?Y4A z7RR6_R&hVIE5QJ;M182RVWakG=;TIT2^MJHRh1tedvOmj}ee7h1Y^-+V*^l6iuCGe0g6bcLL zy}XlB1cRvEZ#-b{9&i*|;ERhr$M*llnPGS&Z{w4Wl}-mW7bBN!T%l0^2 zEORdv1_2imbrRGjR**iTT#xBH{OvrXjS1;6jW}roFRl0L+0tm)lmFqr5Bb&t{@OO~ z*SgbcHsn)I4F_5}N5bc-jM@}DRgFYO4(YJhtE^NRgt{t!81KBNl4s5QU1|WH|4sbi zR=Wl6yU~yk@6S3StP4lyJEDs`k*7j08h_Q8Hw0vwIn!|m!y0oRKmXNSJTCM6hI>u{ zZb2d2AY6%@b{x_AX~bx9(9A5T{`KGPA?Q+|(9=b12giUw`{&uC99X3T$OH5LI8=%i zBVcNf6Z&RX0|tHN{Jz~qDes1de62&*2rqn#^j!)UU1T#MC>?pN=_WHEjg55Zsx>ci2IbvK-1R_- zyO@QiDk4X)ZA}jSqH;c@CjeV8G|G6=;J4@y8ckKWy*~1jnw`TagpJX;Lwdgac+!2t zO~aV>W-WC!)Ck8*4w3d0yZZX+>e0+Es|!}>sQ8AAnI(>xo=c0>pnoBY!(7Io4O#72 z8i!T!S1Dt@biUBotWw`MYiuI5(KHL<7%==6uBn8*Xj0A zd3hE|AFFgNnLER7KjOWgUl{7M9~Twz!bUtmuH*UGjCxE@v@E;A*{SEbFqx^h7^i{S zic|8GZM^*D)vTK6w06b$WwD)z*5?_8JRw{OHe}2i}13GEd*FzZ{+sM;)XE{ee#T6ZyZSlZa8O zygX;mw5|H1PXvB0xZQAljP<4N@!1YL(AOKq3EM6pMAVi>Jf%aidqG}i;PWA%HVI5d zx;6AbM5dblMs@$-?+Zhoj=7(*fJK$!Q_*_qE!SL%j1`|=tHB4st}Y%Lvx6h`l=g*p z9}w<%h?Bie?wpSYZb@>2N4^UyLigi$x(`97Qm!xw+A})#Btg~DPORFeao7DLhCPG< zjjH)u*T4j=(pam|pCibN>y`AsJcu_}Fgp`h0L5V)PuNL)TEP2y$+LX*Qy!&93ZhiA zc4~_3zm7n&p>8h=BZjMWbUd#UHr& z5*1)ercL4k$B~R>{?rr7QROOGrZ};LwJ61r4qw+b`JmIQOU-rX+oW=Q5Am>4sP!m* zgZhZdM0**cCp4MSWauNAG>RQyYLY)fw&JKU1gC>ZB zU2Jdv)g27+xvVx&Kf5Kq8#5L;fXL2gmX$H@g^UZn#+5QADM9vTa)`o|s2jGBUWe?M zLXM?C8DMbbpzP1NS`rdtaCr4!<}ss9Ox)2Y(%?kt39-68SlyslwKOis`>Ns8J!~}% zz{8SwrwA&i2{F}+7%CY5hI3FG<+o3CduU=4?r3o%vcElxf)Ui-&q8BiPKr1%EH~aD(VI{k}!#Etcp)+4A@N<|EEgJUqecZ6N>VB%WVSL>+4I zj#^qJfE(al4u4wH+57}yTnFKV8b8!`dDZg6giz=yBOHw?uW^`Xs*2lx2rZ@JC(8;~ z1?GS;N`Un63+Yh*r_rs>vQ4T9F@)O1TU~bHA*rFpWN`2LqPw#EqOlcC`uKZYx0O&Y zpxm?MMf#jqrTB7?oJbDt#wwl(J~ERd11u%x(h1}FM83UZ{OJiNbs8a1ZVmuFe+&dJ z?aH(F{SpCqE%h2jaqp$Z2cMrLvllB-r@hlLHT3m%VuQ3@WiWmgTT>&?=0ILk1)8;y zUt*$r-_fAq#${K|bxqGczis(ayFgd2MECLDI>T!|cJfJQXK@h4y6$49B8E?_JZp_v zRmQOE^%qQwqBb`RllpT2vqs`YG6MtD(IL6wQ@=6r=P#!;fRtOlbJwP(oA%+s+~YDm zg3vp;Kz~{GEV1iqyW6Z?)ZCfY`0l|gpFI?uh?8YO6&TMK&TIoxISVA!l9hjq=AHEI z_Jsi8usV@1r0W@a#^-dr}SBRuFmR^qf?r|Zq3}Kz3(5j4B;;e zzWXe4S&+o5YJtE#CJW;xVt;84WwR{5k^$Vf4Y5~cdrHlvvbicHOb7feQSfBAq)y#-}zE8Y1FpC1AL zz0!qe4eml77S9x#Z7+Q&YCoYWT%SbFLSgIJ>-IV&20}i7OW{T=9DMak`syCh5^ z2C&R#)i75>2CS%Lq5jtcC|rMBvn;88V4q0HMyrYxD9?Huf!7cy?EY#e{cMA0c!`fZ zs}ZJpfqL$v_N0KTM?h*%xXG8!>x%ClT+DFh5xX3A7X3iHY{ZJJ>}+OS$ATL&i6*cF zN20Pn3*92xr6RQ(Y@K5x+V+8vm10jJf0%}O9CxfF zzKm6t=ezs&o!9rTRTZ5C9gjq>dVk)=ImZ(8FXu9AH5Dwo&U@n7XD(jn?r#7R{GR>L z-Zvs?s!;5c!*=@|ZP`IszzTW~FaHbLMssd#L2drr7l?5{H#gABn(A2V?&4hy^);Ac zmp_<;_X=|=_+=HTb^fSPy%t!mhfueV>hzVcf7N6w06TtQvH7Fq?7_+Lqw2;6gc8Z! z!3RaHBGq%J7XB2VZ8wnG8a8!#eEG9Hq(lKHM~EvCHkp!4nGe3+`}@W|&%+$0DrCExYoMzcucBjCo?Lt`jZrq4jV5%E5>!Io8`6n!!DaD1MDIR&Zhy67&5!V7l7Fqq94K*Npm(S$dJ z!L59+0L+wEO9hT5(kw1qfn5-{f4QqC~VP$z#D>`31f#K5N_LJ zd1@eE@gGhw3TZq^AvtN+Wbk0A^%yFD71NohiN+givz0K?*b)E{DK>j2{i_M5N%0i$ z{-)ypX%lV#(g3@1 zU+3n&gR!NtlM`{@V=q&zEJxw1m(mdFbD?98%ij{|V;%q(p92^K5Vpx)s{VB~dv+l( zxZJ0Ct%5;y)e|sHm`X~3*HajlN9d2Hird9``u(n+9-&`-RdReG&+js_%HiK@urkg{ zFa<65#Zq{F?rCJZsz&fv613q|giLH_3ciNzjQE;NDUpqvC+x|VfFN|Du<|r)DMb@X zUo={M*5J%1xEA>Ms?GJ*eIW74L?2Kh13S4@dnVEiw#UbP(D zOZw7pzQ=(<5aO3j2figHoZIC6wbge|Q}CQ&UlVut0gG%KUJly-BkJAbng0L(|L10# znbF3~x#k#i$hqh=Y|b=?F>`3<5JN?%becKM96~5cF^8B#CQ~^SLQWN8gnH>Lht5hz zzrBB#&*k#nU;Asj?DE{@`Fz}O_uK7yOW${NJtK(Aza|ynDdI?v_EFca1St5^HWo|6vIn65^rGMV1#5p2 zW%c#ryOHjs1kQH#Fe~o!FLM<)Ut{T+>*+$Cy@XxEL9tM%C6n}aV-ivJcO4Hj?&%VD zxct~462s<(oHLxFv+!K+Z%ek3Kew~jI9=C?}PGrncDOa zb?H~PhPb}AjbL%e1jtx+{d?uXK}jREz)uC+=uH;AI0+r_AG8e4 zQkOgAZX}{M^p;Xf#MKJUKQvvpD^8s?mFQjCCN5CCM`j;*b)f6kZ$RM*LV}#ly7h17 ze? zoR5elN4ef`evNI?W%~CLf5vTZ4e&&u2&&r;*iP_L4&K85uhRpbwsnVx?ejo^6U*k` zOQWIRzzM1ZtOEXtW9z~(mB}}__%g8J^`S}SuvM!f3{NtbL^9aGz7FJ5uSfd48bc#5 zSc6`c8oflszn3wGC)m7r^c^$@DdfPv8GIU?DX7VQkU4?s_VP5=iN^m|bxJ-}IH0MA zHCT30u$-Z4-z|zw>l^kBUF~&{xa4#sYw6lO=w~}IyHgz}Y2Uxi>Gj56JhJGw;!%p z5jRp$*`6GmnXWsPAqB%1psnYpGn7HkjKLvm|BK(~L>WP79z8bUNdn{b!mtKGt<1k2 z|Alxid}`Y3;E3Q84QiRP1Z8CnV?p38Kw*4Yi@+WNMiz7fwvuRy>U+f>&o{dQ_x z%QYE$Lm24X7D;jS-jh9E-Z-)xij;3r>OWL8abeN*m?sfCF-Y>a80oGPUSF$QzWj0MQfc|7lcuB~a$!{@!E7RsdNBZ{PdGhpwM4E{R zA|4$A!PBe2RZ;NoxD(to!*{D!$5Ust7$JIK>#mcR4|%~946OY1Og45lG7~xboF?`s z{MdUkz`!pPO#1t3;i>xe1J;k8$I-=O%y`#@U3W+{m+l}M}=JGxVBg&Fydn*PTJc>G|y`Elzs2} zCN7MNtxSh521y@vcu?wBtIrffyPlpE-c*u!daT2pXs5aqR7nzWBP_*E=8NQA1a;5~ zI?*AMKl1&<50V0f*uV2n$+3!L{lY?>^qqE>)P@A7o`D+Ue7MBAR zx1YKDJ-2IcWhB^m6vH#B!F(dN^?FL5zhK4U53O4OgVckZ@Ld&J@k7E zj!UvpOYwp%cs^g4xcDaMWAT@hKXxA&-9>*V+f+*|b8c~8{IDvK+sLD1$cGtDtyo_|NIhocUyxV-zO?b7~yseQE zBOUIqwvc8Ut*#OsL)B|ypwT)QU~<$Fo$+0Q_5R|DyzC!q+E*a_Uu8DMkbc1}v#QEPp_cmrLF9Q8rq6N9gLQ{p${o8pp~uNRBjrdzX&&8{Y&TtjzG$OI!Va09eFVHZ$8PoGp(X`*3p;MCPv*HPZm z(O9Wu|5R;OU1l9^9;gyH{=UC%*ZZl^`s#GJ#naQN(N@zu|re!O8 z>Al3Rk8e*~xsTWwE7krOV#hPF9^(p*9>gL`K+9jfG^25bdlBk6{15mEzD z$Eh=F%BE1Nn51mc;Orwrg*L$>@|98J%BhdHj9uz?|9$Y^_ENxsY{>=TewqMdj6}f4 z|Mcy5$4}LGGTFc9Pn_Spx~GPc5%xdnrDx~o`6h|FWc#RZ?F_+9U%8V1)M{*hKv8~CxO@dF`LK6=m5uNA$F%KZ z!mq6v&6|neuXcUwX&abK4zjOAPfMq}bj~DW4Qh5--cdl%{VBkdSWJc-E!zmG_4yx zBJ2+B)a@<&`kP2(bWk9eTR3SpmCqi;2OhEt59=CyRM^l?ncKH##CZm!|-#-(T8RAQtv;t*Z46+ zh9OJ&Jq!rZzTT8ETCroDtNGl&S%|<-ZHV&|HK6jLo%NYF=Vi>L@qgYvpYH~&FZ!ZV zX!36TEqAwmI{8N5-KP6Yo6g@Z=HJnGmU349FF!vl!!t{Dogyk~umMLa=)xWwpNXX@ zg2H^IaFDJKAhXqB*2GV6cK-gi3p;v7wt}-|7r$=a-m1~`)$wj%_0t{xS^7Vw zZwFR}7;17`TJ=&edK_?KDIr^DIF6%-PA^Ck@LLTX`VD4SXMiy-y6E!V{4hj(sf?Ch z#%0rUG+W~xJ-T(u)_@Us$i=@m=p%Y2e#iHYf#tc5J)=S|U$Rb9+aN>WOQvP}db-sQ zi)O(LT3TYS98_)8v6KkNjn>FQ&JpU!?4QNbmhgWppGwHrEkK2=zfo(>v5R-Kn!oqn z9T;-l`O({2E|h^i_Bx@Eb;(=I|0DCl?0r%&=N@(TCEW`e+_JJ&^!@eC{h1}BS91_d zhtx}J+&jg*8<9@KSKP)5%vNuhmKXghkMUC&JB6KY#nhf2mNh&+J}Qkab)I~EySW*u z6i&aRz&t!WT^7P2-f6`4L|@?CAs)KE3T0SC1ic&&yOc6a9^`0~P4&1Lyad1C&?wJD zj%|wuh&UeGqclm$WN3p_B9Bg)h5L#Jxl|U1LV=9yQGuRGmp4UR&66E!EHr6iww;r) ze0jCP@@-(VpEvf$Wt$1i9l0%Q3Gzmc%{B!7S!x&a>PPLr)M*;Ii8?^FwRM+QMXq2O z7;DjWtR!Jc2&?q+4fCE)*NBAn;MxJ3`lWq=5KxP_H({|-YJs7ld2sigyG6h6JhX$X z8h)1h@NVn!2eYRwHpW2I6GS?y^`*B!V4NAn^~zLI$R zg%4*lcq~~e;A_|qP|2_*6!;7I_p~~}{6Rx_=5q6n;!H37^kqy_gC_GPKaE5lx};LC zknWw(U0TG>(uC~&b_GJCVyQ2B5 z_AA@QqHH$2kE`_U%4HXq9sYiG+gem?=IQYuyXNem-QDGSM*Ra`_+K@ZDMg<0h7Y}o z>;&`oF;j}QRHK0o+gnSg7Cm&warH(Yt!^8^kLLdxvfnd_o-x^c-V<6= z9fzfnpJ&sGB^nSqI$iP@IVN{8Rk7fKLqkNH|6531C}va%%D~ZR6oB@=6Pb? z38TB`xoS+?ClP`1M~~}$-8gg*n2LuYb37jCJKY?ez7!mH$r3Snnx)r-6{BkCN9@bq zPCLFRedpnCn$kiOe>cgl1J9@Xro*M0lTGsgil>h{yz^rRkaPG9E2g~h+}jw{>0dyd z#lNkvz#gsTC!u? zbC_Df6}P7C6trcmyLPyHBgPMNW4e-Ff>Zy_Fnl=?jjjVw6oBwNiw8t zhSAgZ%%Syo4B>a*DgKt0L17=9C}ZLpGqx+|OPLp1IMSNrDI4(oKr!?rKmFSa**odw zPPFSJt-OoqN@_KV)Y1y`KO!_F2YTO41Xt%pg%eMn8Q$A)#-OylD{SoI?9I7ztSi@@ zQ7l#C9_eLSuV{=sISA9WZN#_v_JLo#=i`Db4R(d6>okIqGV2AgP!X?q*$694!)#c6 z*{@f{GyzB=ElC|X!}WG^jQA+_83>~5I$P72$=X)mPbbxcz_!5I*46pmbfXBlE<|0;0d!Hdd+UM7yY z;Tl_o)BsxxJToLj-4JL?V_iHdW1lE0<7*ZxLYvd4ZBfmJ!D!%Hl8)A?&mv(t;%Y{B zU?X8%ShrW^w-}d*EnFCK-UdG0S(x-^=pGqw;Av%WAoLAqeG3+`5jkq>GhVsmgTnu| zpdq~l6D1ibN)(|(P)bdbbnATLR#-P-lw56jaYa36anUYauJNO07468Bk=ckD#Vumw z%1TI+`taSy9tGF(GRoX6kIVIsgp5538WWYjNB8`0W9bmLz zzss)WcpAyp7DCLX;XCwu!jvI`tQ;iJY%-^$O)tda3^bHy>+FF4v97$ck}uh-`xvx-W!L_XoFa2O$Vi3WUZ2?LL)kOJHRCFM(p z-Zwp?Aa@0YiZQPW084it@GV|SlzCR?{^*k@krYMw2%Rk5Lw7ORd zd=tICF4;MA!oJMzy{AAov0h?GKeZFNe#K?gF9Z|-f$hLC&-gqNgIg8<5 zonUM|Nt@!~45%S9mo~m#lr&;wx3-^C7uStjBGUo_%|6_3A0?UYq`c|bJ}-%bDJwfH zs`UJQFcukU^PrBbaG>qq)Y)vKh#&|L)(^`RKXOw3d}@#Ql}DarJMI7$m{JbXTNOV) zc|2_=)i}`m^P3p0l_pN4xd7!B#au*mc`~!P7WqZ>i_qqptEpXy{?oa_={o}h zGd$sq&-X8+{$*0ba8Lf-PZAT2#oliNfDjEe##cgAw9mPb@&j$u#w^O;gZ3`f~Mfwo(^11Oh-L45~K@4P*iiE0oRqra%Ew>gS!m4{VBUFHj3GTS*HX zW@5UF%(PYug=;rBh4jGomY9$ucsxg!G?ZRw`VfHgfu?wZ_WF#X*bjc?cevJ-hH7P& zB$)s)(y#zxG>wX0$>7&jvX}ou#M!s>L^RZLYC=-@%OhqW6r}3C#WY7MD8cZ~E8DNK z1O!WPP5R&Jnl$`0V6yl4DA;b30IMCXzI!z9?4^D4F#!cY92WdyG4ePPV(1G4s4Y{< zG6f-_oThG`p!o6I!}&~6z)Dc!cHJiB@1=%@g`J1GM)bD{n9{0_xxeLVTU)#J5`7;p zzx(0-E-BWMeDBGbsXjV3YQ6$D<}qz#UR@KEd(<|7>GWb(7>orGLJ$Hd;R-|mMR{wZ zHS-t%%Z)wM@0=EAW8}z{cBqYW*151$Eg=LM*%2jL2P4+t{oN6!81W#8_x*8 zHjNMV-W0JpJ>zV6O&?kVhhfUwbm>@mTYk+QVk9gz+Ik9%EFD4#J({)-!Vh?_z%_m2 z@_JOi8lQ*P;|Q}&+jENOPR}cR-Nkudo4L092`qyYHsxdmF_?uDfaMH}Z?iY$%mWFD zk}()%WfQBRN;?v4(a&QJ2wpH!hs6=x%hToFzC5fFH!e{v>vHKVyUgr@iiTFI_UlIx z)@VON)6nLsC(8qGxQEIvov=}`_+My}Xc)rui)IU-(vDP1?);^(Pv+STw_MdL7I}GA zZt}mG*G>*|j%)qyAE|x=cm3P?_I-0&?ds)UJ$1DEPEY)yUkf9r{j`=!UGhb=cAJ2m zv$M=>X9o*kn8O7rW}3Q6sS+;SGbJ2W=1gtKK$rv*S{$O}Bsus-avE%2))cPRoIw;I zZX}sNbcq5KY&5M`lQMa<-Ie+>Sxggv^EuscBUBX!JFWUv#}&kh*2F? zjDP`HNR1Y-#-+8V}-L%&IH8gS*Ggeu(pJ%3k9~ z0M^(;+P%aN%eWFF<@=YfsmscO^VEV$uvZYe5eyiRrpIwA=<^$U6m=%)%;N3plgD3u zmEE#OwEM>+!BF0%Ig9=_dAFIiTV?FXVO031f%|319eR&0d@ByOS~TfUrF|=Q z@y{=$3P#sWRvyU9$UiianvhZI+&yBt_rkPoOqH<(?UuVR(#BsaA74@uJP9w@B^Xhl zMf2IcA)!4VP(Cmz1g$WZY9?X}?zZLUx_UmPhi5uv^y|a~DyNvh2&fn$k!&z-;bFvK z#fnLE;R7mAkbPQ=y)+BgA{A4E<_Y)=5{eKBF8~2vjt>d^Up2D%cSl>Tt~zZ{fA}N# zjH-z`c!iplPbf|)V4Mbmm*u5FLk$>4T)MXm$q=b(*ciZg2+2kJh$mSH3x_t5h_ATz zx?;;c#{3y6f&&7m_LU~5yS+cUNo&~Z$ul#JQvZ=xTxN&%fk%em@&_L)U-mQx-Kj+u zM_nGz!;#UI97va!AU*{LZo#WSDWyKDE}+*;PalV&F&qXo-&n$nI`*hfoK4+^%NRBV zugQP&IM-OeUGsvH?tS>{-!7heFI2A9PdljV`*eVn4Prw3MbuB5LCqVH z2k6;X1H{NE{W0~UwzgXLLdu4oN*U`#ZU9QKJHDD^xfZ+Hw)&I7lX3C^(U)}N0YO;S zkMnOfeuGuaty> zrq|ywhaOfjveF_w)z}g--dMCO!BC_2FQb|y>D2P=ZwI)`H&G82b1iL4=PX}xT&4QJ zM$2BHPwETAp+fg)S@70st$l(~yq%69U;A#YIwuLL;rLiK>a83BT~C#`9Q5Ehkme$- zhtKD4$vK`>GYR%_)cnm78#WdT3VI3jDDac>y9qC`w64!Tr|J@2_}~;p`HWU=yKyeK z3KaG>Fezc8&Fn(36L=vWJqEvRojSF+dh8Yo43BdSA|r+YFBx`(8rT#f%m{b<)aY_nGRdTDcmghn4Pn6 z7H&^K#PpPxwc?!8aZwp%Q z@J@Gb1SmA2B$RB@W8iY}^60eB7oaHl3@Qz^?cMU4M|X0O68X)Jw+Su30VC-`Db1tz z-N&<7uODe8Kd`Kd+}oO57)i}oR{=GV%n^x3?fce5j7w#gYhx+T6pdM?*DL?1VGGX62Ds906VU(&eo3X0KwkY&cUAK=OvaG&TbwVV?!|jc47WOh9!W!w6Nv3Bu={&D=}UOx#l!a zcxyETJ073u8_o%k9p_Y{=4^3&Y7f69y|9cV_j_F0Ku$40GKO8|*J2x}xgu0p!kqYg z*ka<5uTcU1d1Q34a8iZuGqSfpp?&%V+Z@GY}|70 ztvKGEjS%dct7hCidULnOeoC_&0#+|2j_4S`&6mWF-eSn~WwA$Ohg78GDB z;=m@g?3AnRq)CfoiLPR1c;!BI^4o=lS9<^rx8?zW2twXJfNwVQ@3v!3LM)M_CJQuXG@4$;5?zrc-7JZKeb{ySyYh`tRPl=PPoHFzMddO@#(&;a(-vcHs6URJif3|)JU>pXoV{zMAVw^^wIsNA6@<|a}!J>hLm zJ=^~R>gu+;{0#I~{6$`TCO1uf_tD0Fg_cKccEe`T6LU#tk30C}YBD83W}Ky)k25CucQ4MkmLK?X{d-x1^ZsEi z&nIS8Dgm}yTxy%1Z;R~?zk;&ac0Mx*QV-_Ri-o+mK)bI(ejCi?BAhz7NJzn&d;uK4eKE#e_uFK(?xrV%m7xz!bMB zPkBrvrQVhe4Yif<+P~CymNmjI1E;8#_89H$TFdb|$q}APNe-?rN^UYHDHN!|dh=`BsS3~;4xOQ0W4{L;4z}+Ru1%jGY;!LfNjXs) zU*v)`B&>2kfUWTbq5~>!)Y>jm=~r9#$7_H8Y+M{35tWn-AAhehdDT_&`QkP?LDfFB zysROPP5d24N9qZ_t8|gDp5KJ5eKbh@)F&I>jMz@13*2Fu79!O z{k;{@VG`bNl;_@r#O};{EDk<7+ z2H{>u@B{4uNaKmqFOC38JwV0N^=&f7;2oS@lT{#~&c+D%G^)H6*!Ra>rl{n)_L4k8 z_hM$ZpbvHx^ee4k^dotfrFW?&(XM~j?tk`W$E=B|*pG{ggt0u1+W=0t7U~4BX1Q?} z_xLr2P6_*w(j9)A@iEU11b=-0{>9A4lVAPR=f`JrCcT+=5tfPXrDM=RPL=0;wp=@R z70yIjahMzMFY|U}NA?>8#_MT4TAbJ7x1AwnwDb)oKc40`v@}Og}Mnnap zYT=z!Z`yKf^=BE;C*pI-cUFc$dGN&jKYo8X@&kS2e?cuzjDjH#9cf+NR91mQP=&_6 zKIIiE(_kBNxAyMm(=n-;J6ZB6_*>e0u0rHfb{${w1^uX039(A`M*Ypdw_W04GuZMakv~xar z^s9+G!jy#WwUP3vbps5T_d;UUHMI$ghZRpQ&$JrvDCGwH{I)$`?3R0G|NP{>!SA~F z&m`H}!;`tDJsfv%+v>3A4M*-3s-b)nF+B7F92rf672>xUy&3LYp3pVoQ(~H>(JE;zx8WK=iS&dWlUH zc*)wi)&)280odt?LRZdWqRFOhA4}rTnIg22B@pU~Y`5g+ECvG*2wH|i@Q!-=Y40q* zrS3RehRdGd;W>P!kWWqZt@57W4e%n#hTuVzpFBi@00CGahy_eln}7nznV@zpD@m^Y z?$*Grpd7|Qi?_kPqY6^tIg(6&)SKm4MO|9$KV*L!b!d7UKq$&OePUtXJ^}3A3A*#; z_cu$$e&AQ!d8Y)`0RbdCF@1$fD~%8(v&{UXG#N6pLIoUNghh?7z} z3h{Wx4M0K2;zh8NYUtBcbR5UFMB7fw2v(dXp&C--D#DZ9=weQ+vWtx%-$RW z0ld%v^WNTyg1gt zEWu)Z?Y!=%dkapBx0O*!c`Le>_Z6?Y#<1&ttLOQ0Q`^PSI6JC^71_(BwE3pb$2Wkc zeDzh3n%ms28H@OmD0ZXtzV1^`qIi+6R{uMS-d+1XuyXE-B04J5+*9?2S*1>!OL%&L zy{1o#uJTEJgZP8)+Q4d36woo4zIGw#h++kBw0C>wmi)yqB^X$T^&-V~U-`?dxm(7P zUNb2L#i8BVeJ=Kr1)PFtOhcFSKBbT8>H*@GMo);|?ZscmdMyxik@UMw(1@4VL|fS7 z(#aTmym7nfV^h(fexa+Vk>H9WLD6~&TJ-`2usY7SjR)#V@O4M`d#qoIu^onY1shRV z6=r3o|2>mvL5=r;>ZA;VYL9w4INWbciMf^>X7$Uo+(tT6Cm^mQGS+0jdkG2xSMedI z2AzT!D0Lks6{+QprLEkXW`L;U=!72!S&MyPVwOb)@WFkT>X44IO0=ra@4PQGdm0bF z%qlrXWGN`i8xU#OW7mQPi911UzTE`5YZ^9h+M0Z~(1)v!gYK+KwzS~xKq_qQI4_Qc z$=!6059}-~SAVfL`gR}RAp$dERx=*}K_nZUcz;0_KoVPZ7Pyu0F(2;_t4a6upbUA& z2XO^nQmPKC2J9wnQflI#!@E1(@ULkq=8e~96@dc&D7kQy7DhSmJH=>Y8KsA4A40(m z*m;wJCMdAOukhd8`HMdF(x3%qX)tJM0MjpGqI(Gue_xiz9`e6jKpbUf5f--=K4u&? zyzui?W$quS&_d@SbDYbA^CAC969jO@|lp_Z`j9_6q(kR_E?pB7!JzHo zh_JaCe!tg$PcKcpf7oFE;9JacVdgV+wCd}jj`!vbyNqZ%FX{%B39GES#eEC-D7~-#i{+0ZmFmJPvtXqff%MwhLpX#q%-Yk*a?IVZ& zR$?+R>DAM(QjdevRi$FOK?4l2N%(SB^LQKV&3DVwyG6QEqyZk&)4~DL)5d(}Ky;Vz9H44(c_foQ z1nUZ%<#r+u~pquq|XX=(>s z-*`1=n)Y<-Rm8)$*MF>gTr0K5-)oYTLYfFRh5_J|z&tkeJIsm^eI!+zVpQl$vA2vX zxWWzIw~6fjcqTS$|JjA~3KiuzQ$^3Vg9_iy#)@{x?0!G#?m6*1XLj>(SZCl+$W_{p zaQ7#48;whbA8R`$6!NJ%r3T`QZt6~4)ULwm*Mols;dbfeoSIx|e9xN9bc%2&B8OaJ zw)Ej80E#znIwikQvyf+mn#GMGpfYaracULdROytA{I*?2p}n=5n(ZWW5IY^*I=Q|V zZrjFyeA2AYgf%i1Fh1%u?`#${ZM(iU>K{~7r`sl{j*7;#R5U@a^hsz-*{Mml)XhSZ zfq`}z|AT@tPI;I~qhwMY*JVjRkUzLs9qFJ5f|!6gFB1l(nA_zFRg_m(XTTjOeG{t= z>3#wd0O%PSTYDScjQ0-Vk=qB;g0l!L>dT?Y_-nOvb?A^XIbOhDx>6)xa#&DMNJ!yqjX^`Mn)s z8+{%R*KVhLJ6sZKXKQYF!bh}q+pS4mn;F?9Twfz{>tMe?Hle%!*;+hD3Xjo6)N7B4 z^4D+pEXn~%16CN0q4tGS zhwWVI`bKJ9ZKJiQEdtYia4Nf}NW;|(5F=Ngm*KcntpImR3MD_R_y`qn{ zeeW&N1dyiyW( Wy4uaPP$Ak192l@d5^fGS-!O!D1tc5kQI4K3)VC5b$eh>8Rijuru#bH-jvsQ%|ts` z=~ym`Jr$6fH7dk5c=<=_k@7%Ng`9~69g?w7`0#lWs_v6Us(e3aKEyJdD)N~x^(cG3 z^-!u(`AGb`44|JD1*G-7U~UFLAqg}L0=q8JHb6(;?uXslOt`k1k#nU%^rmV(Jfhmt zvQ?)pQo=v9q0fbA+R>K2)m4x?PHR!9qEn_T@53tYJc&evu1c(O1q5#YN)W-;BDwbx zL&4-lnAq0*P~7~Su~VgGwIk)}gjUCm@Jd74fjTdE1I?$`={Zq0_69NC|=A8zcP%v7N5CsXb@oPuTKGU%y4hi4TFoBOS<&L7v4^BDX3K-E^k;#=W=qA61ru`x)7-Tl@@TVB4h zr1F}b1~n}=GZVXeTcP^_P#B4J^c5Xrdq`|+B!MB?IQeS29AJXI#iQtGt7YWT2~O#Q zxxLJc)WmB&=o_Nbhd)2|ab00L@pQqsjO;p1I3Ft_OM5~MA*-=%*)G52 z|NMI+xvOn%7T!iv=ykvdG~$}p_eXz{l!lZf2ipGF@xu7V+k4OV#a}?OIhr;Y49Qdz zD?&=!n;4p4&<0DyOtBn~1B^jAL(vJ>kKOZl{83^y2!xA0EEBw%m{szvUgN>2n^d%5 zr>|N9_yt?8{Q!q|7GjnT^ga{%%DswO&JFoi^paWl`_jql9&t6CS6qSpRWOLb5N{bQ ziYv>DIxI!Z_5-cMu5PHA&o5rh?w&m~X>~8}%HH~+Pxlzl^lK3M&QFaxH(sdGy9$VM zrRLn*9d>@wEGy+($UDBKAvcJK@M?lQNkfzVS-bLQ{Phc=wS)?*M1l-OnV6rXaq66` zSI@YKLB>^>8Y9hJlGg(E%5lW{DMF;%xC053ttj{UKkn^%JQk^{g2jPjA-#m|$#bTQ za<+hdV||uF1KYVtDS-psICM+~f2fDzd~0YK$YGHIW!=kvMew=LA7p+av#l)-$)54K zMr8V0_xnOgrdV=fvPmQDrjN-~8*|zMNtpoinP{|@3?{z=*jTx> zBQ4iB6h+TcLAAn6Q#F+XGLdT67bIS6&&OtQ$u^UC2e_YZYt@lxY@0(<6k#>7d=PMQ z@~GRJZ!nT!(gw;Ow_7A%GKFQb@g_pbfQT*=Bmr)dk)GuR`A_pGr3#@EjjjQl6FQnE zaBKm84gm0so}Q6K0pBx!Vzx2EdW5m+eryUP2J(XhsExOSylFLT(h%gnGMJ7H77iQ68CIg>Gd`^x|==#=pcl4TXsMeYH(qDi2JD$F$*kMx~ zGcsycwWs^vRb!c_3Qcht?N)Z&RDISe?PcDu9!FEUyI48XTEWULVP|r9$wxvVrJ7z! zbEva0!IL=yD%w5veaR|9cnJAA1DdAULp89%@y6#c>Kr`05!c_VBnONHD*VjP3HvVH zAfeO*rVq%}v8hOGf*zA*KHxLe4{3mfrH_a@&iriz5qhX3v*sNasvUkLj;QqG04m+_ z?!EWNW;OuW)R6ay9$L0i4kZ91lx6CbaMO)q+L%jIm3&`fBWHjBqH7nU7#%mF;gdhV zem-M;PsL&r=rJw;&dwKS!1fbXTNdm=6S=1@DnmTcLhc;@ zizYrYy&h>XeTgB<&}STbkqksKOdZ8rY4P--9Whj37GL`HVCOdTzinMn&mIKaA8hd( zAei){rnUQ?8u~rUeYZaJ%-p0_|C`nvBYJ7Y-FR&Gr#a~Corw}Rtfh(%siGl+Q4 zM+MwsLk-zW#2BW)(q&ewGq>K}f=z+1+9f8`C;Yo_O;LEbw*|3Luxzu%Lhb4oQ!@Y8Nju^!T_ zOVqIfB>-0&Su&hALCo=}sy~cx3_5;$=G4>g&C~9RxE>yidBih78qv3JyY~Elk_~%f z^RH%%8mcbE$oU`0>b-Mhe{wE9oul*4@XZfOkqu1v?eN~*=2F~riTZ?jwY-SbXahq3 zqNQ$Y4RhONkIi|1L#MY$%ewkljh{66NwlKrC6p(>S$)wfWr;tea(stj-lJrk|FA7! z(uPPJHTcey>dFhLkSz2I3P-?Fm|BY=;bAJUWHgQ+OSaIvq+H!gX+X5oZL98U(xWMf ze-qZXZonY#lb_Q92>tC8BPWOWmv+50A4)x##}5g4Ylk5v@HuF81W!d`7TbhiV5%6| z6LlkH+t~a{UImwt%I^hh`ciU*Hvc`s>cQTI^!wO$zOdifUj6f4`kzQcLwyRe8c; zO~-)Cc#;}zOoJl6KVazqfwG)*%C?wEy@1bR(snP+>%UJvK5rnhc$lcL`?IU5IWxC5 zJPYE4{5R$u-w_`rk{a#gFU-3MW4R0cRi)EF#zL0(??a5y+pcKtZhLg>M_JiW^@Zna zFGttGxwUNf#YVk$U?Cdf>70$HPw3e|o;Z-nM7o{=rSVB{YVT8IFiu&zNBfCG3cF3! zNYi4JJLLewYE`rps02*Y(Ai9FyG$vH?KHK83ukY?@3(Cq$S@v29Z1R#7w4;hVE2PV zhvU|lNzFcZ0tqCN!lKcJ=iJ>K2U&Uy$^=(Ii%JoX>Vh_=xlO_{!B)uBdTI3to)t&E<#e8zloA5=F=d2>U&Oe=CVsVb~VJ;d7nFFMGh)q4m!E0e#KX#)nQD z-0R*4k6S4==zQ1y?lDcE5XJQ!xKbWXa8?3sO1;ZTy$RS;u-U4WE7+84#emjw?*M(O1vnd}S`3oI8%` zit|XzU{-VYpE{{YoX9}efC$C%O)`!h$w7boAy--2_9 zTY%uv@GRXUl0Mm4cS;P9@MIQ9Bo;8`mVRs=-EKbkWPZjWr{wI#-_4SpkKYZ=_=Glx zhJ9^Ojjw(p1%as5if{p%#_m4VXEHnzi#DxzmE`EI5Gn{`LSx_G3B1!1fJfC80 zV@+(D3O}IUomjkJ{V3!a<2cfJyH4xI9-^vXp7nk#%x=fcWKCP)c3KHFY!3V^+nG-E zEW!7%E2cGGkd^EV06^Et;TBn8J}WFE%&n;CFpzErq038U;;i&4Whj}P7maAvOk@hy zCxOHEb@*V5Pz15Un{55bGR@5k8OneOM^+-fCx0&+K07Yc)0Y-(fmHxZFTs?-w{msb zcnAj66kr1=^ejjv6jTYsB!I~u-M)o;N>#C+F9jb$>-8`=PR~|2$fkRNH!_KN?{tl1Wh<}Ad7T#+6|iQq>T0@=dOQ@IUN;D2idwFUTSN{s z-DliaIMxmdP!%$>fl^J2#t?lzBLTQ3D?HrL8i#_2(tMosfDS=8g-#aQA{|KsEDfd0 zumBoBPsy<&*rG@il|T<$N+d&;KpP^{N7l#B834)Bkx&4nhw{3QfMZ4@dSv@>Qpmnp zjTD4})0@A$>zocov-A+0^bnGJG`57Nry}mB@s*xkZ0-Y~tq?*=MM5#u!MNCz21eaYz+n;IJaIbIiTHHU0uNEFV*kZf1{M^^9UUNXJ|fC*EaCk`!@8@|3}n&MR0|CA z67N%QX}&@3zV4RUDJZvUK=65&rBZi8fLYerBmYMy;c@=2PNFW+NuJ+u^vC^U{R{hd zN+Oa(|2uAB&6Y4pJS-Tl|4v%kI5AjPd&{a{ zP&s{J?b=QKD~rc<9DQ{aGNv>RepBMbDa%Thu1f(qi3OAH0gNzXC6J9xquukI{ODaZ zYY#&5uHAjLcCXoVZbg3Y81rm*!<`pishrQd?=9`i{$qSK$t4$_(dqOGV;P}!qn>a+ z^Zn5)aTJ$!byG!EC6~gw7XCN-+v6Wkw;XC%T756eb3ouc>`pTyMYgGI`2e!W8c>K; ziB#6&na2d|+{2|Z8VC8%R0Mz*U;=|<4QmjRebdJkE7XM#{R;09neel8BxDNbaXFNV z))$uZS*Zg-n|OjcG3QvVtj-h7yOn`1eIQ7=J1R~bU?}ML@BF4`bu4$g@8ZV8YNJM8 z)5;{gsMi=NyQRui!VjM)a8ptTdjSBBC(Ro~r3k%4ryRd4v7*AO2=~+CdwTh{Nci@?RQm%DUt9I0Jxjl2blO$rSNVhSD)2SkbBsY|8~qhcnnbp(i? z6^8L}AxDpT+j9YTSY_X&o|^dX;EkjO7y)UjRKWV2d zXR5LppqmTG%&y{H2zvjI|)(-XW_@`@zJaXXlkpg$mV&<$HP* zBv}Yv0WUuA^wErXR=EjF#6$LBanDO?JpC2c zw%*LJ$eS6qFI@K7@X@p0O7gsX_Vb8F@ArmlQ(R*6u+J{XL+Y5(@-sW3)@k0dE%~i4 zD8~D*tj@<05k795G9kab!6C1VU(TiVVnMPT@~4g` zMji0C|1IVPYUraXG%ng9ThGqy*w`+Yu0<)5n*F7@M@rBLOkwLdBrLNuK$e%nMll-L z%sR2D_b|1G7*G-5pa}!@!h+&~Q`WR^hj|7wOU0(A-r;snu^nuhKxFna5y0Cs0Dd)O zk`0gK$%K%fF_BAv^vq$6L1#^8;#)W*Y2jpU>YI%fyFd@>tF<4$V$c2b*4gLWdgXMP z>ewR0eq~nDF3)3}t(+O8w#ztNd*fYpt*;5c>FT?nuhtnC#U!Vv35DCgt_?p)7e4A2 zd)^58@%dgI?pOs?opnBx{N~C(b>GYiLwiFnR7tXsBR?9k58i+JN|e(Tve+wm_NrA%GkDC)_^w^-?slu=ES<^B+DQPbwBg($Z!{x z)-ic;6AA#Td@N}t$WEV%E3>gOP$P5R6{Yf@<<|X`QX$q)Z7oER$|S**nH*S^MIC{w z>WM^das;fQS!w#)lcrp9(-fZ|mRF`L=IrN4;Q=v6O3a@UPm0;*Ng70--kh97H(Hf| zHijT#HqAyWPh;a}Ly-x9-asmS_NUZlMKSRT!1Hp@fCFAYXb)m@hs=RT>Dllw^Xoy- zvw2(eP`|-SD~IWmL>WdFSCDzYJmBE|GnSW|&o@S`bTs{U=Ka+5k`|)Dp^TpS2%jek zU>^v8BR>BTp;XnZJ-M$V{dk6VZwr5JqW6acBl-F>pG`aoEneDvLM~NLOcEd7JKfx* zSV2sH?C2fa`Adj!|9ipao$pAWNmMtz=0`|pidXVo4Bl90p>Yb>~4r7LzK)N zu0fEpY*BOt~5s<@yGqgQ4UG+rlDu3?&T zeIpyFg-C*+@f?^BKyJd4c*~)FYB$slAP-88)98y2SOCgU+~>nXeYSLzQvg?4_`Pbr{ZE4A@eVSn;V_dkobn&*f=JvV8debPVtek}a;VoI{w zquA3R8~gudtms)>hfI7A`Mi6oeN)_2P|d*N+5Diii|roUjo&<~T#B#3s%eUf%4*nm zNmVlbFPleI`mGZ#pIjZBKf5?mwyIpZuhiluY)kY3RpncorxYQxHv6|e)1oaMyadmT z$VD2y_I_dd>Rq;}W%5|t=1L8%Vk-lXI`xKcwA71>7W@_Dqkhy&Jx$5)ZYu^xNe?zj z0z~mL`wf7ZDFKLXVj++sp%D9WRQCYjH}xnw3BerYK2?RF;*_^51gj;QHf=xnO7T%E z|ya)rSYyIOzvFBTbm&N;Uw(%8hDMk0~w ze1YHFl);Gb+Oz@zb9~*8e3wNqb@Rf!*3ALO~bNI;0N4zrD4=k`QfwKCjZ)Lk>k#m!tFrD?eWveOnBUnBtpQY*{7ubu#^qb@p* z8jXi!I}$T5A7|F?oj~wG$!hR&FUhh-(*Zbydm&Y}r%L9d5OnB zIsa_J)sBgIf)9YQoIus(DZNdJ;1nxr1r+vUx-_}zBF z;hW#xHG>$_XG)qiK>^Fou~-3|P)V~eiLcFk*# zoF?L_dyACtX49~^juE_=DSxV9!|ZDYB80Oyhv%fbU~)N9UOP8uM2FZ6U#n4fNQ zilIgZMH$fys?;^p6X278-R3wT$jO9`LP5>zbo^6S3mSa++beOPZ=f1V+7Mo+GZYFR6&hv6n;)DG8{=9erCI5_?DwvO> z#L_Y8a4#040nabbE5j`3!0>DcX#tG_na5M!T)kz=lWNiV^A@UU(Jls^%i0>b<%#Yl zNMNgi7E`k7tj5Oh{K~qY|CQowj{`~Z{sI9zwoxF5gKum-`cNTtocd5*22J%cN9vi4 z4Bo%`?B*-eQl8a*JTMoP+z*Bmto2&-Xn^E%S*pQ7LM&A6pf;=MO&)S589kVwSv+8W zO`VIYm{bnjuNo`vWt)`Z+2(N^bYYZC)3cZ26c`klXW}fLu&+b>z95gl4OoMoIFp*- zKm-B)1suV8i4^FC7C$t*;bcf0m^_y><+@(9ch&x?yOuRu!t`pz3z;V5Hx|kwj^ujE z$JDA!}f6C^$4R%6NW?Cutj?A<>G&AJx!H+yzd=v{{1iBe(!<% z`YV@{22JN%d6WaEZtE7lZI5`{GZ4{m74k?y;!)Qy2!P?Wa4nQ@r^=88?Qr{mC%4*i z{v*@bL-#fx)geZI()hGDca^BSm&-X+q>9Q2HYSDd@B4PCksMU_VmEQq)8zjYlklfn zqz|t)*Dqxgbqz#45rsG#q|4BV-M74&!L<4m|4l~SM`D00=NHTGsefbo2Z(tm^fm0> z;A+cLxVZ@BO+63g1W(GNv%731?T5rRb^f^z88Y*9?o*t%HP8VvVus=nKDnGKj;5Gp zXl3z}qRjS!)3RWaEsz$E#wzitg@zHf@H4w4j+YJsm`C}mzSwSuWg@2(Wy}V42dSxK zCCG!as9u_I4qA>2LRRBpKoo5X%|oQH(S||600+kby-q`z$+G~2oWbunoY z5c!pOvw$rO29_1^7_0%(=-22mlW;#E5vy+72BpzSl?nh6J!d4RfG6YLy?TCtVs_q2 zs70pld-%j__HuDc!Rs2bQ9W*(O1CPkm`1b;Os~SYqjO=MX3XkT)j-N8yjMDC?vTpl z&-XgHhcWj&4NKot(Yaweuy$PeA>ZQ#5=`m5VmwU<9u#CYR2iO3JG*1>(&yvt2ku`a zyvP6M(AW7)bX5)Xco3E|U?o??WyO~W+~k(WHN-`Kibhl527s^Q9}%cK9zPed?N+a7 zf8ub8P^WntPSV;AlY<;E5owNh)m19|)m&<2X4~&ts>_~?S7gXqtXOQY&P?tgb-65q zFGMIEoN?5R<)4#jySmCoL>iaen~kVfUuI^o^#t))m>RF&aI#PscmjGo!zBg}jnD2? zu26lZFan59e{V!V|Lm%>I0p2j=%ScSujt52>REy<<;pd28HKXbd zlzrmQGdJ~aK1=%2dyG@*6uu`ps^guf6^f#1hg=)uxeaR*e@c#!o zrCj*G(t_l76fnPkY(U%f-%(3*I@8sO;o{8X{PX#D^WRC1q@E(^-w_(s%F@!3?)1;S zCnmOx-hVauxI2kMjjeY{;2UrAa&UHmWL8t+_lN`2KGz+Xf3j(QwDiK*vxhmf$ZD}0 z(z?pWq54=lLCol8jyL2KSL^WeN0}a%3J`EOy>4YXBGMA_ba_HXYY|jhRr@!_gKEBs z&gQ(vWbbZ|3Ggkgs%BHq>b#y~{i`2PV?Qa|bYk*Xo}qfFkB{_rg^Z_Hfq@<$upH2` z@%WZSZqD-l)nqgG%3k@M?c0axmGXtm3uTW~zDxxF09CeoPd!f+A|#~dJI~aDE+4;b z__D!;>0!aTGn2cd8myjxR%`Rk{}}%GX-Tq-hy5mv>Rb`{i1D#N)oA~wiisSp*RN}m zS8p*gwxa?sH<;{X1?KiOB#$HNv$UGjcddso{M95h0Js;G?A7T+%YN!4>L>!`FRpNJ z@WeuJlm=l^z%o{bK!AI8B%Bi}o$Ct*km*wbbHbrHW}jJWVfACD?IG77h2wj})_>zQ ziVxljAawKeDWV+u9eM{rvRs$9SkM1*1ICcI>J-3X^aimNHMMsP%J05W@j;!^{pyQv zOD3(|t&h4hIa_ANVb4Ak8tts~Id#rfWW{WrG;ct96e2Z43}*s?N%4TWdFdYu{`UvW%Y zR@b}5JQSfKqg<=ZTk~tNRMDv-ynNk<=}^t;L9orK$D$S2a(#pAQ>=O^=Lu4fIE>FK zpk&bGL52b3H$J}r2hJsmmj-yQ_>EyiwHiIZ_OPq^^X6TK;jmAH37U6iS3?{ACVNy) z^~~j*aPAwHu?WWl=O1zD4Vc%aORB7uymo=mH7Au3H!ZHdz~zq||sak~V5=E|LvW@N6d!K{;uV z>wFUn)9qiJY>rRsalGsYsrIj)f7o1WBH4LYfYbtOMmPGx?ok()79MLi?mGNzpe$`+ z%`(MJpKt_~uBYCZ|8F6)eo}tD)y#YJQYVZTBuD1c$i-jhy}{U`eSFl zoQF1%NvQApCHFkALTdejA@urx2FAB>a6vouhQqRX#k zGoebEvRA-N!i$!7O zY1ghd!=od3)IhCUM93sQy-qp*lZF*K^TX$q6u1I*Wh0&oQ`Oba`G8uylBsr;p6q`l zrR8zy$eigu+aeGwDPC{1_A3I4Bx9ijY?e2*|i?}B=WVfi?Gwb7ki|Fdg z4dvKrFkomgi<~)f-x-BYCy3n8tj_&L=i*GPSWr-{7mG>(YE4a=hcrHECuJY-W|tjq zafm`amzJw-^eKjm8TUYd8;fQF%pR4pWe`4O!zk+DloXLAngS|JiB%2|$n#Cc8jOP* z0`g4V`Knl0na``hKmaWT*w^|{ARx`o(HqS^iKEHbAD19PLf#~XNdgW}fe067^cjb! zc(2&P75#~LLS`5Em%0bFv7?^rUKx*HNv1j$tjrhfR?<5!Dy-eIeRlH`D*ugfDcZN= zPkIof@te%ID)X+@44AL0EG15=0wg{Xe;I^$1R<1xM#Mz7U@jMGzR;pCr$db`26d=H zuE$CgCw%hm;>cy++7NlWX&^aR&R&UZC_e^M>gWK*9^Fem0fzZoRZ1o`TPTwP0vs@O zfH?vHTnvxswpCiVDUh?X!%Rmx(PT^&rlXU1A|r3I%DuV4m@MC2U;+Rb3aC^>Abtdl zlm0t#I_27y-gg~$ z042Zk%1{b3(O}rbpyw*tPx<>}__-!YE2b~{wag&Yeq4L;q} zdVKyXq8r&!*ov#Q74$I4vlQI)pdcaJ>H`zat~wjAk_1dqE6FYbkTh2GVIr@V4YXHT54 zpT!m-HL(zg9V>`D zQ#_gz!M4Z8c3p8xmvWFjybpj&yk38fB=D!aBxw^4hafC3Z}-hYER5)4Su_-oA_)*$Jx>J87YR zVV}81s0{8E8dUTcTN3lJa$oOgqLnv#*w=sO6B{G5he28{FcYgS-}l*9PCCfdX2h1K z!_64T+68@NPwYKaX|=POpk#zh^^xwQNh;Ftmiv1RgIDBQjSFRjH_HDWTl)6nNc2Et zcCa&swaLt{L}GeWny^<)=tKIW0#lf#-WG%kj!L?DIUT$^BhBckI6}A!eBB`S+1E^a z>oW80kv5A#P`uWd@KoUPQt7y{9YsNkxB54XJruc7qPDm-u*gOw(5>+CD6z3zz}eaV z`cp-d*nH-jzHb7n@i{VUy|w>`^ot>rgtYQFmfR-IkR2{e^b3&25&sXj`bAaEggaH~ z^*3Ui6m@^?t5-F=dG62e`3zSQ%p$`u{!j}ToY6Ba9A0zO)`>#mV1TmA6S+P@;+Y`& z+WUgB_D>bxjO83#9(&z6@2Ne3!S;~{3k=?78MNP>5ZHdGS+hE-p1Mc;QzN(xgriM8#PR_VF=Zj5A4uKm?399=Tv)PMQ=g2ZfG|?xHpD^mM>fmu( zZQ_UyUXUJDx?1xNTB{Qj?OEn8d{=*(Tg-PSM28{x5C# zr~LvYqX=v4&e(lTBrV~*Xp>8kk-8*{xvTpgHYNIqMGfBnt zPpKUaHu=-dZp8PBuMMIt(mjQM*(ZWr-Heq#c9jphZ9dyyNVZSJiz0U#aR$E*VPA2q z_vHbuLZi}JUkmh_0Qi!R*O0E9W=<#J}Itru|vg~B7VO5M_MQ~Xtj=Udr z?mikD4X1iiUKX+9R8>F^hc4Gmzb@9e?b-TZ`vJA1r$=6OUD(B~$v=|x8ZW}o=$$^V zJ=(Xf4C%tVqrt$?WeV0z4(J5!t4ge@hH}h~b@+_p*(iYQHmYHo&TX%M4bBSrqm0`Y zd#8DD;+WBvTe4HX0CPtLS*h49sO0m@@wXd&?{B_;DK&y9%5Ic71(I}q2#nMnzTO2L zx+Sp#;yX-g3>Xq%k_iOfy7&6GbvK?e zch$;`)Qj>CPcJ>B+SMc9M7)&Aj>3bX90kA0;uLwCGVgqgJ$2o zkCI@ds9voXn{O;Vjv@`uk;&i}aa$aT=RM!%za$RU0D4p(Heoe>; zY0o_WK1JzX6oc|SAAaWP(2gcOq~o2E%tp@(+q~v{$z&iHe0t&}`M;R^;8r8eoL-Rt zQf-1A$vJaV4c}&YKl<>t5B7f|%|J8kBDmH;*DHI6gR>WTZ}cp84i6V_Z;#x`k;B5k z#Y!PNVMO7e@qwd)q5{SK0y?NT;A2Ssjq&fLO>kA-(QD0(kl*}0FppGTM)M#3o*d0P zsw1D8Hqq_i2>b}V<67PQ#50~E#^8)z;3nrCy>Th0ElQ0mQn*Z6t|UG$5s?$bhK2o$ zL4hQ=aKshG0;vLX7gVI2U{lbG+GCaUqWJFfJQ_BUHtVFVb}pbIsVj2({5ku_v*)E@qx9o;LO z+atas&_3udN#MHQdF;k*0QjXAyxhB&Tqm{j6I#>X(8my<2&{BsN%?z>)Sas@o;WrT zbKmgO^feh^iL7$aKQmG{?ndPIhN7g1ibLNo!a@X8zOGS)fqQv z^H5LkDjUCR%6oU1n_gDGBYBn=cA~$NiwLq{_)W)p^zE7L%OER2d9~8jeN3g1KCvmK z7D$_E3R8Z|YT%&Mt9lSAtl_uckz^rFqpu~q9b}O_?l$ikRQ=znLjntfQojP4jPAKp z$_$MgWw$22kC}$=cZPY2>wf*SlDKDyW|3a;TEP_ukL#GR39~kl^t2IiuRiTl( zYslkYaT^Vaxu05bRo8&bOa43le>=vt|ErluOyt1Ju%`mUe{4qvo$kbRc5;z$S(#4G zE=~-Zvy<~di-Qa&mJ`d_p5siXGacCstHTUuCWB)t>wkkFkj~oVg_YBUe~DE+VDEDQ z0I2@9F4OZ3`u}fy;=NhB-Cn$81UTjO)dhr_{^rv-g(_H(uW3Y_!!Z=*->6ZRSJzLx%f?jiwD+ zgNW88LrY_iS|Ffq!u9yFO_s#I%HCDOm+--c%qa1O?P$AG$pJnnQ|PXi03S5ly%m*I zBc~4b=Z6*FrRvlbjqveT@qF7NDxAWH3;L{rs_dxNxIrLK+}G#1J$fD_6EMKR?xY&j zg8@kq1q=A5WLF+-p!3Oix!OhpDMJ*`8$?F4E1i~~@*iZS_wO+>7oK>q!A_cZt$ATD zYDf~EkHZO|>E&1y+Stt)SDGn6%xdk=ZHdh!p>n%RYTg`lySjd|-}PVz4yNvg1_bIp zQjoJU0LGVKE%%iO>Yyd@d+*U+lA!KmT5#UY&J)Y?zq5)3AGQxT$-lfx2!M{eS>9q1 z&?GUJITTNV(xjA~d+32W?wl`S1d%zKxz1Pd$>4ueke&|7D;9FjcXfUMO+lnnDR+SP zt~2^0JX+Mp_8h-trz*{ph#PELPy)TqG0+xa6Ua)jhN^ag5hc|wp|oOE_KzxG?X(CW zi>=#fr8wEKk;FccUKFaQ>mcbFh71fqQ5-cze=+jK_9Uw8{eMet2ZqMWua&=_q&L=C z-K4QyB~d0@_3Brj_g1incAS_yS<1!GP``j4KByG*&9UYF^o}x~xZYCfwKNAGFR2L6 z)mp(N+Lu|=ME5sMIIXt|nrg?b*3c1y0liwbKmJ^N&h~;xsDngELBCV^4c?${st)!0 z2hdEEE{va+8CCr^%f%N{E;8&CuVwZWXGb z>=tnsLU z{GKed{aW5;FS|@>@GeDiXQqW^qV*f@TDaX zzdA_vfcl5_%`0T2V(iA>^Sl6*4sRYf8n1xFrq@NC_x|G%YLK(EFizrxD^nLhPU&^e z-ex}Rv&Ks@b<#p@`vw# zip*J{lvBnLld_^nuA}^ z!=kKa#XTEV?wVzmKv@+bwK8i9FwQs3yf*4;-xw{cfPYzOzS({CJny=-7K{=Iyf^-F zf9ut3rAv_;bc5>$x7BPEj1uZE*Hv}Sn%oU5A`;6*)n+aLlXYiH`Y0l$Eys=E!Ui5) z&;=U-3Q^Twu_&il9)Dz0tzRc)*2ZvjN0s_|uIb6wRpkM_6Zn%Am?LQq=#>?IR=(rEejL+6FEhymJzBPr_AG_rr*B(sE_LOOIwrkZx2SHaH-(*^ z=0mtc@E>^p<;=Yp8oaCtJ3m!@1O(EkrtN*a-!OQ7dTQgbpK;RLZ-e4WR+2Y2r{97~Z+vc?1d`m00qrIcgZgs$B<9#B1Q@uNh#IGuKC)?j{xVSo zI#a77+Vwvc9?%WHmkRNGrF-?o^;@vq)1qVVp07P{K4MoH17(kk7ZS$fd{Rv`^Pig=4*A)!N@P6)6ob$|wDIRq_;Cc5ef{W`_A6fdzp=zhX zC)3i>7F+gsTMdy9FFveXwV0++)4`=c>Ug*Yqi(NfFDKs78=W zV>68(PXvT1KPtlsDrS_fAegM_!=PZN>I;=UQe`~A( z+to>_a^jM;qtuDAn*Bc&T_>f)UrQ2vbkXU`stsj~;L-BtzZ}ypx8ljb3K0ok1xPxz zLyULb{MBSr4po*vaT`gV@<V4 z^_V?4r=*6^v{yBXK#A1xi=Z}=oSkvNW!`psNN!M1=+#y4V|v}ec41$dV&_cziTE=n zmX;GKf}vRUOi5swPwR!~n>Vp;AY>N4#9&B_l#xMcy5|9MXXA8s(Sh>d_GuuPaI}HPO{}=XArg&TdBoYX1$q%pkL3yVpVCU(?J70Ieh2|0-Hf2K}nq)AQ@u z+x-R;M2!AZL(44>nQOf)hrW=rmP+Y-=$6f~zHYU+7ui@LGM3U4DLjg0O-GIdq28!JEUIHn?eG=`!vwEacHZr{ltGG`>HeBN*qx~kL8wx;WVJH zKONAO>rvFXIr?QQXHk!35w?abaUU*I(fEQGopuF(G+ z%EkireY-PgxdkJ4>T3IcwMWe-0|c9l!WvasYv<3ObG(VMJ zn7Nr?YyA}3$l%+e6j&-Y-J0{w4FnQf_40jKf$pv^q<>$K0r*F=*?t!uDElDJPwGsr zOV#o~NwE|ZCCmYqqIJk^KjU=dq?7Mme9k~iSymCbR<(L-YRhY-(&O9pi{#fzO5RGN z<0=()Zy1dDZ-MP9w5Tg5PfJ^G$604cV8A=y>n&xa>u$U=`^g@f#s;m{>zJt|cKSrb zm~$E=(6?g2r42*tq8YcnJ)G2mLxVOhM&LQV3?jbDT+(YN*&|lz@*}<-=&<1IG>2g2 z!55>nPjV-t?8c`XFSr-pdt9%0+cb4NSl>J|91u@U3R%`ukg?4snqbbmZ0*n2S=C}P zf72Yl_|i)g`vm@gPWMqgevNwelC0^qnJ2IItz8b9lZDL8&M_Ja8^?bhkMCUQ^e-AN^?>9lm-A?)3#yjpduIhw*9kI z5E!&wDpjeYtM++W+D_pFtN)Dn=8m6Vf~rrm3f&qBo;@O=a}l+UtrT)Am{w#z#{px~ z(}gHVyhf^tNq$%|5^>V{vP>7QF zoAvP0L}?nVMFM7%%|L%lr@l?{P|*JuXvD8td;k69%lp1dq&2fmskc3o19}5++=$bt zV#{g!9lI_@UhoO*fqPX81fl?WamxR3Y5>juS9OpqT7aOP_HPXT`ARse^#3tenTMGS zH_Jm3(}pwM*_q?SWHVTfRtzWlK_^Fsge2n3batjQ=|;aLw&O@%QQg&{u+jm+(|Vrf$f{8lunbsjFrgZbSYTA=ncJJ{hH2|1GZ=#)0on|(CQV22q%viE z;OZryEt<7_5QroYpQ!!lp&NFI7j)%(JmEP$`cr=+Wdtl@k$F7D%+iiIEb^q391gHz zG9rBBX;4YCS&yj|CaqkgI{`Hv4|vckKEWT`M`?FV_BeTjZ9$e#0SklzB3KB=!(pR5 zppOfs_9|~7BHVfbQca2yuo99CPg}q|cDY+hz)g7SzW)W}kjZku&;7Fr(PylZ_>+}= z;ybj*HwZXnnWmDoCdcLMfzc_RTJ`Xuz~%j?;A$83mI5p+Iwn4R-@D9o=X|r-J$;}f z+=8A;k?B}@S~xkgW5;2Sftlrz`No4#?a7oY0mUq8otF4jPJw&zp$MdWVDFLy07*1x zaDpB~t%r~tf!`OBE?v@Gb5S08dlK0(`d{o1X)cBz+c|$?w&PFA;<}hf%zHI4<5{`w zbC0$C7{jhgJ{=DiJ%d2P?Qzm6m(iqSqt^QicuszpEyA7D?MK#bT(Gq}G!2pBoxQYX>v6X6 ze!bqauGO0QT$8U#=}s(KDu;$iWuwvrj&ZPbG!ZX~J4$B<=;je1)8cYjF0c|{2rA6X z{)lRK>+dL~=H~qR4x9;;f!IQJ*QIqvFTc};%saWXdtOYwnB?~?znQ?iQGqQ5swYjC z_>QRp6swZQMFV4yx=w+Du_-5s)f>FF8JLTak+)b@c$mKmyM4tfn0WoY)SNcN0nu_9 zY)@zwf0-=6{3INy`nt(g{YZH##s)KLC?uDgQ5(e=njxKlNxk!%x`Z*;O97fvIp$ip z70_?KjObKDe`u@Mj$18qy5Y&+jJ6526?-VSTu|$A{1cl`y(`|0r1zDlFKNjcwna#; zs&iFJ9W!;BRh`1J+Hfeh4qnbOA&P5F75fs3oytWp$i=HxWr=(0B2Vxiz*sVVk-H_8 zqYlR4MgX+THR^5g%s%LvI4=Iu=yr+F8ji7`=`z?PK{;O_W>7KIIBF6W4bE*Ob2ih= zYgJjwgM_a+z;CuTBIKPU&SDajj_*%=9`>{LvC<(Eh^%=m1Z;L9=EnE2ul{Cdr~Vqe zrCDun>@85>k5rS@+#!qz)5fElr#KFGGAw-Ks<{zvVLQyRS{IK4C7*U5SyrAQlb?Qa zz57_UcHd`;(3f|<;7XZ3eBJ%j?dJJ6KenGi+uhExsA^Xm3{GwgHfID??zv)93t-Bp znuy#ZJ9C%n)Z9c?xMq8-k52aGmTu~aYX_cM1s z6UCn0_w{X|C`KbYka>w^2z4uLVzHp@KFYYcs`qfAIFCLt>NSJT(x zu`!KD2!hfV`6E_qQdN5Ccqp(sEye7$hul!Rb%ObfdF$<0Ldv^3nI7VLf{|>9kISBv18$!3lVVgH=bBUe#A6E$cjUI+hYP~OJ&LVUB{3<4n3@~O>dE~m~Z*JN~KVXt<&1ER_5g*!-jb} zy>IT8pBL!1GIAvbgGl>OcuMM9O|B+oX>`xyKOna>WjGa@n9Hy&#g7KRcqW=*U+M}G z>`_Vo??#H9x}SYL#Ay0x z8tt6z2Z9u4?Ct@w_)*0M&DiL-euu85ojCGAnz-`7`P}zI{~=ft1h?QxBlFg3=LoJ( zf>UL=iiA8_!@e9tYiv{Y=0#5A$fsIrUI$B_X^7CS^_0QY`L$WnAMOR8Aqbz7fA3~DpZvNs^?h*l>nY#qZ}ekl ztb-#jo0y^Q2w5a-Fk{xJGIyf+s5HOdf}#m_OASZ^q2mfceDdS=SD$yOJ}1WJgtl*@ z%X)(#BCy^Ao2kbEvIPi6TE5yk(KkE4OAEJ&fPG{!1C(li?bfRl7s0;6ositN4+g3!Dt(cs>$ac%R z9_pZ0!)lJ_zaq8`b{G~}Xfmkgm9>qQ#TdfX`#CuSX* z(jk>@!R=MsJT}lxZUoW3lC~>mTA@555z!{|R=E~4)}!j>)@%+U;n|irTc7>^o4GQK zlRt6JI0;UEuY`b0R3GY(-`yCO&)3SqZPGyYJPA4HeDLr&bb)8cc?@&o{=u7*_%|og zS^8{N@u-GXh1-kQW1l7Fp2VpstUlNcBoUTM`wpRrw>v#f=ANLq?rC*s+vdez7Qn|5 zRo)|aaLSAjM)^ZsTMq$uiw8!#78Cd)S2D8JVqEWZ@vSQHUX8W({rmC=O_H&2sJ*@h zVRA!G?xOsX#T7g9t>Fzt2+o6l_Z*15I17ISRe1cfu`~a*OK*GlRmV2d`pU>6;~F>T z@rY0HgLrB}6!$HHy3POuRlr1>9aM@i%yL7kZAl+x%zRvbNAS_))ZDi z;^8$Z(srXg;MA)fDL=nBT_3P@IkRv4)Noj&Zsg7;k#ic0(ba~5b!VlCu5`i`0;hk< z;U^J%6O#SZ{gQC~c0lf;wrPcLwZJ$Kc2=IaT{|!#@E$P4f2y1X@!!Z_*=^*mqY@&T zJaLz0&)N~gDCOwd_1Jo3>tgFhM)Q3BBUViknhcHnq+j5Z(8qe6c<$c|M{kWsfuQ_V z5N0*z?sc%@elJO*zh8JK1U#fj{$_VOBv@18y*c>oK*TkD|4Rn?v?DU3Xo;_zZihHVfVA ztk9KS?be|^7^19OA)YNQxp2UdTV2Gc)TbQsu8ji}8eRf%(+WL%);SsXV7sfqPuIJ}54IX-6=MX4swK((s-(q@b^tIz4r z#>6?*-;#sxdKg)4>02eR;FdF@^hmn@xu0AB$YS|~xZwHoM}+)I*FARXwo8qwG>@uM zW)n&`zNQQ~)ZF+J*<=grZfj~W<47cFRl+cUec=5v! z1$|KpLc9QBNi|*o9wln~PZO@b`R>^X2`pWl+xGAq42imo<823v9ekx#uC}M;=Z$w= zh_H^BBuK5Yvzp3x7w;w#?Bw0lchgPY_#7Ku@-QM5^@uuDK?%AgPic~;X@#!=arEsq zb^nlylk2sZJt!##4DPbR>5Y7}Z7=Mdn&awMpKdp8YP?9?nZVw!nf28PdaY5+W;xLa z5wU_pXq0?6hlcEN_~5J5TO*lezDx8~LtlhJg@JJYU(X#$9X2l4qrM;Ph*u&X#)W2k z{Xax~dpy(sAMdWr+%`73o4GXiOH_2*#^$bVwwa0Cb5BC0+sw70kV|x%A&j|GxfDX8 z`XZKFC8^}n-l^=FE^`NLW3Qji!?}GC?D#k&hh%= zjQ2IGok2(TH1#J<7;(=XmO@}I> z|Eoc+?&mJSSY`b43)f5j`Fb*O(r1chu?VC3b(6?UeXXYnp9u^Basp^vt+V z4(=#eUTo}K_&YN}5?-9V162HeUteHYj}nNlqVN?It)jmjdPWGzIdM0%*JoN~M(3ya z_NRk$`<_Orge2sKJsQuA{Lm3zR79@h2)LGU#+AgZF3O&8_t97rI^;VKuWz?8s z!X>{?DTEdFV~mzyDy#RohKNM~t|eQow^=4UwDWA-CNTWl8*lpXJIEAb$iYW}EUp|s zspoMm{jHdC+xK@uoX;mxoHJP;L3^)zMplPVq98A+0aUBCI76!|fc7Tb$O^l=?$vPcDuE3 ziaU9uCLt)is0@X;gW7eGkZ}x`HpRz$sWhZ2kAdFBOdv>)j09{Wd zWv{e(ojZ0(fs}wFO7d}rx$Xc-4ynQ+mE!o0t|{xZ7?+2LhK@bIm#Ab|ZW`3o4wNWQ zKE75AQZPX}on5beIV+$Q4*sO#oV?T%>K!Ylxbmw(#X@!+@oBvYk7bCxYFRN=3Lklb6V7D# zBYBq?R6cBJEK3R(ql}XuQXL?czqN;{%zU)}1BIMUl``!z_Eb*z>@7pbijuoyY;-V8 zH7PZmj7>Ou*ke4`>Yv%&2_m=WEw~9Kh-*i9Nu)WQ+$_>yRUkE}j$>+MSx@|X<0va` zpab*S!25{GD8CMUx$`27l*^>t{pYKLC`x^AjQy`|0j)R={+GLDca+!9z+^T*C`J3u zH6Gi@sI7e@oHU-RQA-i9E-@JS(XUy$_3)7NCR68&w#t_`t@Rw;hr3CVNp&JL-gd&Q9_n%NE8)JFg9kQ!klTC?sw# z6Gt+NW-XR%tvWoXg5sckf~v@Y3V?p9+4I^ABR(nSVW8376CF_w%95_s7%rD6fvO*N zRw{pfK3t*Qepei|nN=j_J0*BecG9P)Z0Th>(6PeDE6NekqwVPEc^kaiwv4{;6(5!A zkp_^QLu&GA1w~22hb(TTgtU0Y{s)Q{GoIaz)B5lEeybGu*Jn zbp)+*6(}N1plSv!*yKuuDdh}jQDoknk5e1^-_@4WiDVL)Ld z$SAkr0RCbq3la$pGrK>%6{ua>SX0en*fr90ZwRlb$!bUp zW7)70b8<##5ggRDF%uKXd1L@6@lXx#m-}e_&QMwZ+FRMNIf+0bzx*vX&Ed|zM;G6* z$`e)(T_0VQzOCb5b#||G`$Kj^K!SNdE>@%<6ndl!kY3@An=FW^oqgwH4s=iPeP0mj zv>5qSo5f`27 znSd66*in@XJYksTYvxsJXpvc-yQmjI#XR~VFLIpuL`ER_J74N8Yp}cm4=4D75BN_!X>qDA$#-xb{lM+>TUm0xI z*TOh?Vyr4nqxvsIs#!wh17|}KaSlyQ)DO{&)Ecf&JHHvlWKDbR=(kiA4i>4nO{L^w z3TaX<@fVjKoX_gJ7_G^t7!Cw%2ldJ>fbb`e2#a3F$)ua6Q51`mV}sE9WCvV+JnT8}Q>k~w_f zmAu=Md+R>ib82%p{``uMX2pPao+(HdISI9HJlh8l`|i~K-`)MZS&-{c4#Ms0)&cYy zQJ+@eM*dUL{dr1S^}ppSD>aL|k^O`Wy+u@5QiP!kCPZ%-g|NCEGo;xV?Rn+;!HO)$9EU`%ZB><-G?T@V0mnsm$Z;+3x;kwB|71*~aXu|W;P zMZ=0op@*WFHLpp&m@JNQyyTg2TbERO`v8;Y!1A>U-G2jXem7|K*lm@dx{6A zrUeKytwC5~E6C5|_1yTioKd5yf~f3MRnr9roG}Nw%Y*|`2SK@t z^Y@MtKnO-Ek3;zdfZ$_K{Cn>F3ztrajBW}C25`m)KVucQkFY~yUUVj|k`tLJ3V``| zNgDr6rBY_kA;?!s5bg5o72ra~1vxOndqGO^^@m{4F|)K`<+S@R*QJbHfD2$9DG|0^xsnm{omXtda)nqs1@_iAp?uGe6k!J@$@=C&(EhJocach_U2)r$8* zY&i|*Ukuf@JB$8V&O1A0(Vh%nt*LX1EEDfHrAsJr?l)@o#%=ek;M6RIirM!1gHZ1# zNjWoq ziQciY*B{SwlyW#lczOQ$D*b^_MMlM)NOPyq7lk4pJ;E|Z3vzeQRW38zIipUKSVPZe zw_m|aLcHaxV84s~DmVG6rt`pgE)uUl^=Qm6sVgAub0I@h;hV$}+ayx}Du#|#oD?kt zpdMEBzHG67ACWq)4RVj8V7DW{vCXQ8vX3e>rD(MX$^ z?U+fS*8lL{c0G%W4siwI)U)%`e+^&C1a4%M0vRJxPrr2q3h=h3GES0L?p4f^q_=A! z!0Vk98B&pR#{TOeQ2)0KFVZfq)r|JlKrIc$9XE|m{>Eo9HKPrp9rBM!beNgdnDbH=NtfCKkE#D%p zGPecSdsTSNB|+e@V-?M^ZWo4_m{?g>PPnl7Ij}W&#v1TAxm=2GU-hG`X487#FwIoW zdsQbujhQD`p`kEL=bcaAeYx)EUenpP^Vt_QYstpK!4VoXG!!?aIyw~@`>xYEYJR#f z2^~BxbJrne>!tq9Z4%i=?*`e5k$RgtN188^J>@+@vg#M^?Y%|m0nbxVc%I3%fwd13#nN-a-3N7=3;i@$;xB!h>OP4yAoTqwT7-P-C} zBWexkUZ<}-`rkQ#Ea8eQ_VcKIN<+eR-?(&fwbt1e$s~By2=0ghlUz^Ig~>*XY=wNU z;u9ByXz=T5`N__jD=$WUs=2snDa}+-0QPO+%vG}=qY-B*k=CarlO}mT7F4Bp=ET17 zc^3xtl|e!a`(cHupYbJIS8sb*OfFxDWo3)lynoE+ewPyvHXT@XBxX-oI*Gd4U%kNw zKH25+ph^0dWE(q@I`v|BweL@HqHz2|H^j~qbXOF7b-IOC)X2E9!|M#W{rW!FvHJfU!$h2JpF%HoEP zmjWOs)Xd&T+&1oL{GKEu?|;zt!Kw~M$pG*$ARoXBXtA5C_O>e_)){?TmZ?CK*fOLe zbf+R`M-%UCMJ;hH*gfEZlE3YFNQP}d;PYlsG~zA_2w~3RT*SYfMCudK^-lkP-zU zCAgi>+;+MTv~doIrGP9XGT?8rMgcI$>wxb-8()|-Xx#uN7sbs82=zJQLZaqQ`??0c zC_J+xy@iHEGmzd1Y;J#m<5+nXH&i+K_t7rhAUtL?(kMh4b=m;HttYaT`vPQ3p9~%Nw$Jc8Y6WGD?IbV zdld`s?0?WXOuz-HmDZQHB|!_Lg`Gt3tY=rUV`QI0IWR_tuN>HWO*2J9hJRhfhBf>s zY@WAVxf%4XR@<@kkW;J0Ub)dw+2&hJch;$oJ@dyEcX&8>xUJ6K$X*l}00xqb1~}># zeS6+Vmw=?`U6Ai=oq!8UD942iV1Hr0C2~QL=xtPgxU)$R>FQ`=?8ZiykFg31=5B@i z)q$cAEops}H!Uz6yUOD)ABw&Ke4J#2GOajbn)p?m9bp-Bqr78(?=_CW!v#Oa!rrbX zZSq6B!b;Jfw?5pH$fh zz5S!&C?>+@49lqqpV~ja{FK;cHj$jMTQg1Dc9WNBdRSGUM12G)wJG&kO11(rl={R* z`|)N-GXI6l!&mc&wMh#YCWj*7zR;ypkyPdST}0i}M>~3gvdt(( z_;{oARMd^VYw`JjTZU4^X5xVoH+@bhA7vu3^WD{`$AGBHu!aK$kxP5aXyQU66Q82# zsdn22A3!nAde#P6A0*F5GcwVGLwqXgzu-PLY1>At7M0YFgyM`*aE2f~wD0c|?#VOKRZ8b4{% zUz4DvQ!SIn7FubTNhU7z)_%9glUKBi&?nRd!O_qwJ-^{;ofs& zc98lc2Le{u%&fy<4QjHqUm!g-W>0A7>;#03pL`}WpLDl3w%@Xq^NG+{JZh6vm((7A z@RQifSKHcU*S`=@wYzE$ywkf#XJd8N{DI|w94z4!3AIl2Susg=LZ9lCk9bu=Z zdhJysLoVcRq*>T8{P(`Vddi)VQ=^6)E2CE%@ zDig-q-~F}LAtA{*k>FFCwhAw2Bvks0Et|nv8$uO?W^z8Y_IyCDd8+Jq)ZWnYT15lU zR)(6P*O8i_xutWTy@`1~`RP7aU&=OVY5*8qyB!S)`Um@1wgE4@U-N_Avik*)G9;-2 zI)*5<7RFGK3Yw+x&L)6Vu85n(%!X>Tw$Q0~$-h@}F4x9IT6YCBfbgXTn)vkp0Lr%! zAXm`($J9@k>z_P2cst5gvF>LZ&Zq$$VWN&YixSCpJRmdN9cl+vn6y+5nU(WWB_W%g z{RNAhS}YD5H&y`*oVy!_X=a=%Ik0NLrP{o!vGD&R&2sCN0+>mEZoIk2U|VsZg4v~! zf0)lFf2!5d%;>+1pV)zA_4>xpCq+CS37Lz3uBGNgXci)YK`?g)lqy*PE6b;WVE@Jb zyNil<2E6(U+$nvHThO~mBWqrkdsW9aiBdLs-f662#-vV-OIXJa#<;Oim5N{B>yNVP zuJoqp;nCN5ov{|!LVqFKQL;8E0;m(-t2{hx$r{hXb~_;NDK;4sB(8mfAJiJ_Q)Kmw zDpHRivW-_Uik*ryx6P)Fmskoq)_N7{Bj@!R@=FM}?OV*4iOZ8E!A(~%5J+kT!1TlQ zyWN3t&+xi!$1VOA7qP7)^rM&3@poq)HdmPviZQb#TYC#d%%%Kt9(la7Styi%avm1L z8&8$e=<1rNxWA2I!$a`i0F;LTlNnY6;SrnHH*+NvlxmaQ z95^`AAzUc>t<^I)u~;1?|fe#?0@3{W||0pUJu-geLgI(b?Az zBZL6`(=oQCNk)YH^2=QvWtx{Jt^}p5fZId?7z!9xFqoSXxVvGB8TDdwmN0+&jcMrua;iBBsqa{cKRS3NuW0gPr<7K5#4E z0FB2k{3ff4r z1Cf>`#>O*`A3NcBX zhH`YUjeTV0jN@h}`&V0RTlR;=yH$*V5KYDyl8*+!!}#nqaH~@txi4dEMm_^8i(0d zSa|N3B}GjIswHBwRf>!ZM|Q(W?_)1$?b%o<+J-xM3b+(j?i@{KK8#7b`UH#Jx>Axqf8*3LCzqQ%u@?ND(UMy-ap>d5e#%8+!aRE^h!ud|Q?#G&tB4Ok=# z#}rs!Ckn_q1m57H2Qxpn5tmWcH6o{c`qzPH648xXkd>w4JqFkz4)rjeUR_}?E zeTNOW@MCW@KZ4!!E=z-|K&=T+-@GkqxOnJWJj3Yrd#74d7FJl+PCk>su4PXNNrxlf zYPC2MDEeyOF9b9=(c+Yl*z@MaJ|m#^w3F zBdwn0W_4@qn@{HM4csH6PIa=M+pgZa+)Ty=`P9ML6}+JU zVgYhBydEyep9GYAt*#SeIsC{7KY3dPv|R!URw`MZB2giTrYD<0C|ult_Iq%pGRp8_ zz$qC`6kHbtbKE z>9(EI9b5zK=!v^AWx)#v2WUUt1hpYhauAj80EtN z_Y7No_pFDICNX~c;=UXo&sb$Dq0r@%M2W<#0K)uvcggH3f=mw$ta)1(O*Pj6g8W9yx*Em8fRB?u;j)d)OBoce>a)VKxgyA(L!t|bsGe7 zUN2yu-IMXY-QT|K0$Z}gc2BFWtP^h6AXHz>n-WY+#>=IkgiIUT zSWiM-`?4}pDO`r`T#)@jW1Mdse-j`tgf05}OQg4Iz#=+ueSQ6$8U&6W`1Wl-{x-rL zGqzu;oAJy&DLc5g>m#V(oce`f8w#N_z?M6c8FTg3T4-VSg$xXl_e3&0>gATf!*AJ#{XP5Z?o5ao?EZ)xXpE~`JFsl+)&vhrCi?9L6$hY zE5b?p_c)@*jd7gt=1E60*(EO6U@m&qyKnMtY+nXQxI7xWA1{Ci5aB1F#ahJf2l4dc zC{pdm_g{aOj8-L!m_=9V^I0_6(9pBXa$LM?IvUL9y7qk7SjbFBKxgkf2D)3i&hCKbC zlR55Ok&nni3kW&fpBqn~!LyA!q$~oKBx#ggkl5bWv6uR0Qe07q!0+Ed16ka3ynMiq z&xpX2IfAlV#iPHskJ=w=@>eGNJfGU$Ze8OR+Ki5>#8JKpBh9huBqR`?ivt-8`9>&9 zNaqq@E4j4yQCc10NY}hMpAgy-Z$IbH@vx-AOtT<6Nc~8qL-KARUD}pPj7*`xJYCer z6iG^cl@o+2Q^cDsIQ2f2W)=MM(U*#>JR$fh39@zW$fd|Crk2~^rxqtCYUOTq>OcSW z9k_E_NexMgQd;0znG_vTJAYsCcTK~_!}pg;iBsOFONCw*Ki^DToQ$dyrlnGHu1(c_ z#7Rn54~pO_tBdrVZnLeH9@8wtRyB#6OAiil8H|6qcvO($`f}#@d5!@QaS_ktjK5V4 z@6q)O9FIHW)8<5C(Ki@f2v>>d829s6yMGTvA(tyA#=DYDqiotKvW}01xcMe&xzk#c z$E-Ww3VzJtl--sLMA?c>McLdi{oPDz=h}w$HniyGCmsK*KC4mB!)-K;J$lrOh)DTP zIH_PFiCw8~Dl3C_R~k|PzxfOuATflwA%lnpDWK_jJz<4=qMYCKD~o{u>zQ)dUqAsQ zU0F59pQDvwqcb^TzmDb2vO^O^?BZcMszRs^rKUnXEEOJ5j2)A&^V2XquHmrtIMPrFtpJcTX956vlB+gI|APhfAdx09PSEI*6ik{olgad=Gg-ke)Db zYiu(SnP8Hsm58vnj8F@Wy1MpkabclHi4P$a)N0=rGw0vaaM22L$(#640k{@_o$~^d ziKQLCdx#4NVbsjD*6#{VEOv$|q$tmu#$E_3P3$AJDvk={yXajPi5tnyJXQJ3&hyEG zEc#`?jnErV$Lt_Poyh>Z-gRAiDc(*u$rW_#*lk&fV=_hR%~Kr?0>M}1XcR8+O;5M? z6~8&mOh=lTtfkb@mN4&Rz3t%Xy06NTqR{)>cO1C3F1K+`?HQs{dcA4z@B_eSgnMQ( zumfWOSp;c*FYip(S`#h)4YaEy5UEW7YrV~Wyk6s1) zg(nSc+go~D*a`s1X^C_Xa;@U_D3J2;;#;0hK!2!L8w_vSL;r$-?AWiG*M=|aa zb5rwqtyUymjhAzo$*w?GJ%HD78MIqmN}n;7Je@^t3mQ}zD4bDLSUOiVOgp(Lli2_T z^AdGij&`g|vw|3^AX+H@-!) zWrX`nhNtWP{m!TQJ0+^yvo#s>fnR}u#{{sgW6t21_$gxb!=0?JxxFPl`p~2JXrjqsPOi)XU@*PT_x3B8$mGI7)|ULlPV6x6YBU( zGbzu`&7=#ck6#0fz5$jbD+xkH|CisA@N50}^f%`?J6Y32OfhJ?*pkw|d+@SNW8*)E z2am-3^FXzDj-|nHqmHN>K^>{xtO|#rG2LIX{@uY89YKKyW0cXeB z%b&4R_OC>TV%L)xs#kRaJ8_AJy?!mTFKmnm`c{HS-Nvh+r9?>?Glt6N%qpCCEi{GL zekq6RpVugt-|n(?;_Cbpi0V;rr}_R~*IqK84C;#?3O`i-e9C0>;nz_=KciVe<@9D< zwy|0Z&Lp&o6^9swr_Rm!R)?k&R9P2^YJjL*VyQu)%p%~uw%lpulcOc?q+jaqNBX# zqL1FZd!|nz+cA=boyl%IgamA5EsGAIG5Q+`u0(xzY9KllICZd*`ipq>H+qV z%z|1Fo)G)>t$eC7_I1vl>Sy;8BlUJHb@X8ahQdb3jbfdZZ{N30ovgnYIw|CdmV-#w zxt=Ee?fk4xcmy6_n_MM8qODq3<@62zYfVfPLV7DHSD~i9s6zh8Z8t|5+kMA{EfQQC z0Sv#{+aUj-W>{ls{n;0ny~Vemd5t`1H}4nn>8{X8^D&GGLw*pAvl-6HVw&(ci)ap) zTrU(Bsrx-WvURQwLn}v;+^-%!s#0T9c*yd}vJStv$p!cX^x6I-q@cpSgY6tnCDn>U zeagl0!??UGY@(ki$pgm7^?$SxG<76dIpY}4aSct_-Llx7@X_D9QbM<+fclN&5(1A7 zrfKx5={xn!eF3W2>W#GkLT_tyB{ZLW0*?@#>lFAT`D_%8t5z&evZ5$OQO{@lH?3W( zR9mjZ2b!kSO`O>wjKOfa-kv?4ti7O{pvM_iSg8+x5e3yxqrGKgDSI^rFy%XD&T=Ma zA*LX=Hqfft^JTLKU#58HuK$Uzm6x46(%@>`-LR^j5vZCOxSYc!6)1TptV(iSdxEMP zm_lR~Vt7o5E)A^`YD;v%*LxK*zRQ)!{z>YI(Kr_RKkOLeCYKT_W3$&H&v*Ixmx7qX z(ycyM-A&%_h-HR&SWu@|gTAd9Dko>(0^!8)N?|!}Qg1^><=w7ZJL_Ke zw#?VTGzP>%RFVNbU5}ow1b!X)_|@sle>>W$;-@!$Vc01mp^ytJ;u33}?bcf;#ylB_ zi9+XLcPlgNS@6*AiTPjAq9~|bs@Cz=VgJ`N0dWEU=A9BXosvv-$P_Z@7ffNQfw+An zD{xwE&*q08T_!z08frrCJ`cxxbwsY$uoJvGiAYmWcatg3IVB@mH!cry8jvdpM}%wCbxoe-2qr4ck=A#9_BkJ6?byiXc zNKzfNI);fvX13Q1al+9`N;5<*RA(2vd?YAXLZ7ICS~?&xYV&V7LTr@RJDuJKEKt)H z;LqH|G~t;4-rI!@{G`29CrAO?A*09j;G()buX*?V?oZV}&uEPXq{z-ESCz~dIKuK~ z*14rM7#Ju_LRJS3CqjzlfVGDO=dQV<0ze zs<78Wr~26}?9Q2x7eYxlT~6Sg^T4g73QTY!S2Om#Pp-fh7#Pto0D&yM2t9L}(!irS#jzMH9cK72{D_S&z1Jg9s z2q@ld$!MY`b)COx%IiWxm9!`9{{pfZx)hVoTwRpHniS`gO{Dj>ZJich$~Wp!1`J2> z=tceXgh(?%a9fs{v*;o&92sp>ACC{GIQEUgmtY@2Yv(S%iymCN>u$#Se(ReFl*8CD z_xmhRV&ZXw+@Jtf1ARNh*Xmzna{?rHTn|7Z2l_p3&nhf>)I2SgK6ou&za-N%dZE{(jRhaaSofOEGC5={%1{j*-b6N$U3*n zm$L)yW+!-6a*xZrZ{B^qSU-?b!cgIus*CPnhbn_|l}N`VwB`=LkWtYc^FLB@1*6P= ze==7e23Ce+-7R$h_Vy0P{|GV^}E5lI$yz#MV}F@Zb-EgZY~P-s7P_; z^goR^dCBRcf23ZVVx-e57;zh#LM>6VrnDrPflPW0>QDL5Q5kh6*(k9VZ+xl2Od=GQ zAoszm)*_GX|6R32v^?RKlfFZjJ7BsCAe&ed%t_o4jqCrc8SOckv*YsD(>uvY8461( z^%t#{W$Ezo6t`?41vr;QMy7zEDUM^?Fu3@T1G70oj|Xsx_evCSYpLk^PPvbU>LGc7 ze( zzkTHET8O6Trs2fM^Ufmlpm@U9*ws%(cM&ZVj4~_XruT$xvstmxA>sCw;we0mrO>Wo zcryYF&`gzn8&GNC@K)xJxqXiK<4ES9E{76>Bmma+QXb7ET?*tyjOQEaoi^M%qW8`( zH|mjawxTEeLSE0I4pM?3=2)8)gi@i_QrKVCTUcfKle9KyZTdqVUXH5*O4QYG%#n;| zmwtmL!3<_b>UwwcMKlr%F+s2*-j07LJA3n~?a)_~Ln_j*H(Uwy+6QSrP=eM@S9Z{PCvBcBAWg_U(a?rvfKm!>~P(r57%RVT)+d)=xqWfsT&ZVOXz4 z*7-$VqI^O8R_dLG)k}>)tEU|Y5`Pj7bRP^JVz7}$!EazK`Nb;s{~nM%|3$3T{;F5( z@@nS9UE@6|@rMj6ifwmN$9L!|By7$fMUHL2ubt5hOKKjtS7_^D61X@y@ms2Sxu7n= ziF~}g{36YvJ{=Q3BtY_M?mUd4KEg!}*oz&#hhL{O%MD!ch0mE{%b;;b+~cW*E@^VE z+-L-o20DEExFtl&)U3RZ=7e4VnLvoD)*p6ck#?#+;BjOG-A9~l+G>9OHj2l)Y-D-nJ@`sZ zKmg>WUCKf2>S~$Gvb;LII=9X^WXX-e(#%pJ+rR0u^ z000Fajdx0pc{A5^C!~9KruXvI@XaWfJyd*7iHXL9eYs zwr8t!8jr{|zFPE^`hV65)Bn#p=u21!-=e*(2CPGWWB-ORSl)kw|3*6#s6Gr2M^|re z*54@70Y|bUnZf)UFHth2@+ny##+3T(9cmJ8Y%%?)0+~rc{F~*E4WVW2r6ffP zC-9y{V@rZ>tGg|W(-WR3jxl#iy|Ms@^qg2%z2Ta0*qj!w&{Ab_@AR(|dL?ay1L{%a zV6eG${9=_`0f0p5YLHo6J>-9(C@v`p^&<9J!VWmFSPuz)jQVIwo&a@v# z$Ii~1bZkZTeE)ZPQ~JE!hluJ>1BF{hZN-r6_^a7D?G!kjM18?b^6s45e;=LM?dn>G&_6$m5qHRxlOE|K`wo?QziG;GRbae% z_5nAbX!G)DWj3qgj`8sbol<<7al_r@mVhgt7wt8t%!H?knBuH`dPXYN?MhR{SbyV> z7z!SM29bw40tx9kR4<%!qDdABR__{mtX#oC)zaEAVRH13sth+9UnF|R(!!5D#i&9)P3Pe^|qreFh0VsA_B$yfFNbMXj zm{0=k(BaFdP5@w#@E?Rfru!DroKd&ANzi=T1BP z!<~3N4Sa7yVMkU0@MvI6gx1@n`i6fXA@-IFP6QTA>+jrZo_w9i^`3NBdz7Vtb%zBd zf?Zy=%8Pwp(Cs6Xl@*n!w#n>8ZICp(zYJHW)zHpDGa3@(R8{K<_0z+C?T6}O zW9|QEm@M&=*3I<(WdPXPtC+g^*`Fh_H-hXp_z?H&?%CU0FLQ-^r}Y0Re4-iIKFMG^ zl3KBQ#u|)7H6YeuYC=?RvM-!qyd2x1Ji4_s&m*N|`1>?Rk$n)di+4`Th3{ zDF|(mrc;X2Az#DZ2)R{StdH*?I~Kq^78BdUh&s&W)4N+uT4Q2nKR&l^Id-+J zJ`Pt-2^*9&v*``bcqF?`!9o zg+x45ms~YS&63lti!n;W7Oru<#>FfXfuuKukRMvGoIm#^=DKAs0cS^nDy&bdX!k1V z?s3};A_Wv9)O`1+(Ialt(~!!Gq=IVzRatI0)HJ+JfV?cQ@69TZ!`bZQkt?#MF$i$l z=PZ(ccj^0&2QViKKB3uxc;{3DQH`an(lknTmcMuSB4i*^RZsV7vjG!F2}yGt5D>`q*gl9H5dif zo7NzJ*zID5+=Y}E4^|DFJd&(|AE7UI0q~2L{X6_W9nHC$Ux)6RE*+=lUz&YfC^Cjv z?Koaq>f)T8j|7&UIyaJN|Aw7;sVgE9)w=$Dvm~P7&)Yj)0<=wFyjTpz97pH?ah`H<(HJ}&u;3bbt8LEJp`5&5l2 zXg@Av7(Q=Oa0~32g%f%7Wzz>iLzqei7xAP;iRz5ZCiLfXV6c9=GWpc$lHFOUmYEEe zqpn)#HH@a6xU6igf>o}shzxLUO2eW}Oog^Fx@*W(+o2$eqY0Ktg-Ms~dV8%fT0Xx8 ztX7)s;+h)ys6k0F6qJgI&H;zRo~030VLPG$L=OYcI`Yp}tVWBULlSENefr=tMEQvB zjz_NoKlCPnnekCSQ$C%!uq%vp(b51x9%{j+B8Iu>{l^nd9=u$C*4S41RM5ex9qQc_ zfacL=d}|9x{o-xbLPI@&=WcOr^QmF>#8h0&T(+KoTh*Vw}-Km zP7*8g7*getP!lnho4?{0^g`1fa{2-QVx`sids6@#9vJ!2F5N3BXQ)t-*~-&I(f%>; zG%_oNhZVlXlhgbmJKH6hV(sk)SmbbMrP z27Yh+%~icxW1B4FCs@BYQYw4g2Y&5n!i4DyunoIwO?ZzY)ROLL5VmZO+bQxr<7EpT@G1OALr&IGps&lfg_5Ab9F3*E3w~%AA zyZkxb1`Cu)#f9p(R{3th;ivRWb7#a#RCo{ckwSK#Oq8IF9|2{H>?aLWJh)V<2dRSX z6JeQ5dQPqno$M8OI8BHm;OeFV29ZIQmeB;g0r+aNq zpNLxgQn?XG+`PROlhv(ebgAI%o|Cs}M@#LLmHpymp1S_L_-QJt*nmf)+qzEUI>q#; zx@?CE=;f(0=&cKoT70OZD!Z1Ki_5OWPrpBmPlH_S>jlT}H7C1(XXASJXm4wTjAelD z9R+Z{U1_LzvH!$n@UtU+XU#^JQ8S$haOJpCKSO+0K`GGsK?F-nz2MHX>7(3Mo`=HL zy|tB{SI5_8hS%gjPSDGYT1y!c6n1E=u>8U`quk`lugz2HD>X-8KJ{(bDY=#GG=RDw zgHDpL;)wBV`+yIY03e{WqX-@3lM5&V1n%jBPN*{P5&)n*!MYmRW4uK4X-j!hniOak z9zWLyM?5R{R`$$6CPU4H0-*!sg;CSKY2C5mef`07mB5;+5P2>rLY_PbS7@rsQtHs; zJC4jYDG>?7_Q16Go=ZtPRpipR7*v!m+G<1wa*M0En}Jbj0uh#MjMM zK(bQ5O0zsfHz}aWt!bri$2|aq2*^(#RL36)r1pBQW_#|qs%pG;@!i2leLMh^1vCOh z;{nbmef5QYbtZF@5(xxSZLYg#wNK`jzY+j-!p?)?%I3#wow$o{4NMzsIs*XRQYG^Z z$L{6!DxIApTSx6dN2T*EQ;-al$mYu#KXQFP(Nu*b+rR~8A7czU8B2tWA_ePHvbL8G zcgx!YUmAY?sff=Dw9e^m0ZiZhEHB5^S{u8CCasjMzajOZi}a6uef78T{of$cS8MPA z`Ro(48%L`xnEajlV+DkqKpI}2i5(#1{9Okbmew;aYdTp;%2uaU^(abL;*Lxn zwvIVEH|k2#A1X%&s30NyW2&8NZ8z8v;jj>sk()s|N9s?|88~rKe80 zr7?Ym1GO_%17!m%y~OeRq!*fNoJ|NN)T)5!sF*2uEXW8?Z)#sV?5X^F_F_PGIEn*< z9M3KB3IRGH_g$&mD*)?nZ9!oU?QwEtK$x4WY-yS7FI421uDwG#Tu(NpM_9v#w$!uI zug!QKyuxbZy(WSPIUfQ6sMD7*rF}?R@_|F&$S4>QS@56qG#2=9S*iC;uG~cRLBsCa z4VRJ5Y|@-KL_ET3UuLcj)qil$Rj(_`;BpXE@LOZE6(ppupVLpw;IZZABL?T-8_AcQ z*7_^zY_2AE&6p(3JWCk)0We+Q^5oiw0mbA=OkVsOOF4&3wuvu}C&&_nJE~?XXbqJM zBN>eLpP#H@sIgnR|A(k|k7u%h|NpO@m>F$s&T8f~+Xx})G;9uYXq#U({DzsKkC*+07;_-C$N*ZX?E-mmxT zx&DWnYippP*{j@AvDCmT7N7LAz$q`^aA5XgEwZ%L6Ilr6;>OF?X8GasBju5u1h_vTi+t%4y5eW2MJy zW8sc;G}H`3)@f6z!?%UO6|O9};gMM@U;vs*e{k^jlb=Zr*DziK&PQmx(io ze+7_PrN%O&+tBbr(Va0KiSg% z#&@xI!`@IuwfkU!-MV$_2+A26(*Eyw&x-q_#lMW$w`(u#+W)v?sr$0xyT|_c=q01+ zt7llm)h~@8EwMXOK>PU#a@`02Y)%`(+{290WZ0~eX9lsmjPi+iX>ST9JjU(p^xZi0 za9(}KP{5-10JDPmuA1Sou^TduF`2}8xY2Wb4a5nhHSMYk zjLHJ~pwEY$D&E{Dt6bHKz@k#rAQG*Sz1c2tD7n2jk#J?Jr6Fh4;n&SG>-;QieA0Wi zQ+|xJWWs@SA*+owoolkXLc)kh@cnC}b8ncry&JYF`YzVu`Gq~)raLN%@<@ku_Z&um z<}VMe@NFaVDC>r}k&2A$-+l_=^uJM>TB(!=w;?-)k5YCWNJzE$bFMLMeG~n)?W|Ns z5|&MU8*}2=3Fn#p&dKiHmH0}cL`UrPnNxrH-{9M)&WAkKxaTkW_*@pvDu2mL!6o>4 zXuOps#USiT0pbn~?VOi{J}e8P?@kvNH~-DtPlH5L zA62aL1-$E|mJaQ0K(Mk<+*2A<9D_`xnl`y|&g>nEsn@r>s*xJH zOZ|9FSq|)?%rmJaG^&tT+*h%yt}u`z8jxP)FI=^PE(Gs7QeR7g_Gv}z0_tWH zE4q_qa>>ZIo#<_M+nd#1U>E+pq#$yGSi_gOokD5rQCC182cHX_yZRBL0j4|RC8 z;{dpbgpM138f#K&nfc)MKSL0je=gC@?SPu$jAQxQKc9(paQ5K z%6>KBs_zRhF`O~_$-H5ySW4pKdqd0cj1#X|oqLBzYgN`V|54Q&_E5{Wzjc0VdfdGo z5i7dR6~zLGSx0@{j=CFP{^1tExd1=pJpvIJ{`mumyGA;PT~{$?uzw z1q*%^j(bKcWEhKwYWJ4y*TIO)G__MnMl!>eqN=FHaOJUAmvbjbPR9)oDqrt5s(5sC zz2Bwiu%CU8?AMtXu8;IJwjxU()P6M24nFUAyS;5BIWRc)=v?DXPJnIE&#-<}|LgY$ z$BfsmUSm1V_h2r>sm*#E+no9E)8~tqJe@zQZ-o5emDV1ZA)ao2@ECUxw`VBa{G@au zZ-ve_PWEETY35nhh|pRcXHn?p(#RdzfEfmUc*4BahBfTn5?bHzFt02Aey7by z37_}cdy!U5__ zP@8b5N>!v@%(R0RM2kN8;guFE zi(#1gf0s9YTDvC3YUe7{mEi(kVfRpCzR6sgdGN#K_!tO0P2q_yEyxb2&F!tSKdz1w zYz16x&;<}OUSN{#zxfu=<#H;U(|cqOCnIdflx$nue?e!Q9ei;GXFcg~g@1ZF0seWn z9nb}Vy?n1D>Dxfqvt4bCsC7UuW6-RdU|Ha$n|QWo9ctxl;}*^SzI^on-Xy9X1`Fe7 z=mrO!Q9p9$v34?m+jDYNp^lc;*6yWEJG3fFwEm7d0vOtu*e-q*ZGXxJ$JXH#(%mpU z#}jHg*b9ORMwGBb>RebPVI1>dg43dsnw*PwztF*~LK8+pRlmzkrQuaamtt=}n;NGz z!2Sqll^Sf{Job{)A}K-tB^!4-_RjhJ5vq=2e4MYADH0Zur{@xxkfBsjv4)wYuU{LQ zwi-G!@}woB5e312nAyMYAK!#mwjNoVRj+HtGn2QnKHtq6g@t02(cW(>|NI*L z_-W##jYcD%udxEWK;w zvBMK(d^qgrQvkkSW6`24EW_y1Bfn#$DWUf8$2CBVd99vuBkV}UrZ4{T3oY+{n_6^S zGW}rSVu22DZ9U-H*L;vy-rFJ%oK!ia)VQQ|^10q-2Q_p`expu#d-lifgx-DfgFMvD zw=f(Vh{}$KZr$z?xP3>MMMHAAcE>8kqECIaj$6#O93f6VRp!-dgUQzU^)vtb_vsFm z<%4Q5k>li=u>TI46T=Rav%HP~R6DdYFqT;Jdo3fNBV_aFrFE$6-nq^ZuTlwv(`er@ zKH&uWb9Bjl)2fRq0BCSz)Duc#-d5atLWA7sHruoUb-3YRB63xuh4j=agC6Z3ZJv~O zdFTClSFlQWFy3*noqtk-E{f+_lH4BwH5?xt4gAD~=l41m}<{N{QZpb&i+4Y1aH_zpVVMcOr*@BeQw>nl9R!tL}Hl9a{R$ z=Dt|(U<4r_-R=3@Hz%=vD7x)_vhKCLZ6TZ9p5Q%@B8a|cJ#{1;3!Pa+7Q-Mlt?(pC1`a!kdeMQ8!k~#Jz^;vO8q$EUW-e|`Xl1E- zVwv7TsP!tX5}?&OwvqAl>xP*NCl}-RaNEhN-y8_vN$@p#Kwh?nv9_d9qaOp7`hBV^ zi6^M0jb;7M5Md!LCsZ6USJ8(C7x+nBgxM+>sO^hZXD!h&omIvs;_DRrQ&p#8%-6x{ zq3}0<2VH;J=eGO&=6_EruRcCvpFlZ18SfZ=Y%~7erDyq$&-AWE7A3|;Q8C{x;%eO(izQbMGQ$6xbu=WYT1AQMpdlH^ByXfw2DZNqK3k$^ z;vI{HyUk{(xC4ONxeOtKhc2&X)?R_+C{zl~PHLe_T02^Z6DFOu@v^$ayMf>He@Dmt z^H;TTV)dSf=;Hy|*P1_(-Xh$gVeS@R)b!2zVj+b@efJL02pH{c4U%VGVLh*pw-zq2 z*ZhFu03F}=`ADsdsT*s2TM%$$+0^Mc@XPEm_V%MJT|Y|gWW?ujm;VG#buRgXwQ=hX z4&1(7s$U!woJY%Ub?M0aNAYfY{*UlD^=R{7FHWpD4wlXueav)oTghKa8eeA+w#aSb z=)TiX+^u-|`fjqt;G>WSuOlZW?2C5$@&7s#E#1Z1Q66QI<(308+^J$0ny^Dd*M6RH z>&zB$+|dVVCcKg-$6b!vnCqEl;~JDz{r4ukL?WqqWcB^3Dq#R>g^(TFfhux0O<2~1 zIx=zMCnkmU+8v~Phop;3-^*sfxRUK>I=qlbXkis#ND2vGj&)-(j$^qLX;@PyFBoxg zJ-Pg@;{*2-US@O0d(W5yMObnHdd6bNd0NkWdl;hz6O;GoiuH zZS#y@Kx8^xK^*qdc$>gyO!_v;{#r{?y7gpi#FdHNo?$r~CO!0bc^o{Svj4G;&0kui z|0QG|`9G<_0+brYH@p080h;3jKvP4=AJ;!zcMtbXbazh{>ksb_&}y z3qj)5cQ%xNF8xU zMF;vbwV^s{HILGZ8;4xj4K>0#3fJ+-KYI6UZ3}Sp85h=M13^qkfL?huvFYf)8}qS{ zi+rR`+eMUletppPC&m1Kug5+`HK<(l*v;!h4b9R_4aywMuI%g1 z?*^&Nbrx{5hT_J;sG^5h^1n) z`?`+{#}d*GZ(OK4F*S3e+$q*TxEfzk6Owxi5_mkSbZpc3g*i3F`lV*C=C!L@$_C30 zyYU9^cr|P6m~0JS>!am$U?;-Ldmjv5V8tz{qRS0bxjOPW$mw=_7*f-egG{A~X@ODL zX3@#1*)QBFS>o|or!X)@GLdii=ul{zhLegKa-PTue5)hSVMS#yQf_KY@2z!v(==82 zOSt=jok^};L~InHFzWWxA#lk%8$*-=COFmbl3Kw~_`0)7H3JRT^aE2CI!)8k~W-~OLhYCJ^-sHb44-L3|ZilUMME~A- z2%D)<8~h)F1y!+v!syVxaEG%c9vh?|uC-qQ9Nld~fpfksxxN7qgKrgM)7ZCnXs|!) zK|5SMh3dAk`h}br={@;^GH5hVb?OwPhL{n4dM0V zx!MgikvVm%g4~dh66)l*lSW#qy0nFazv zMAstqN2N+e(FF1L+w2rCbhbZ$BVr0#m+c^079nnT`+YV zw@MWLom0mO(L7@K)7guh6Lg^D-5SB0@xwpy4`UA-uYPK<%%G|}ZTf`PI-~o&7hP6%n9@SIM$ef6_VmqZlID|yz?$KLt(w32Kr4r=(`SOKf|e2m zufIj!6VWqx*`QW~OToXx+d`{Suh4-^b_Se31+$G%D}cnVQLA5g=K;DB*>Q)BD!mot z45R^~^}%AB)%&PnuYxU`nz~#C@#Ctdkb&J+Qj2I0D}h@xPvHUBXW?oyKA#6N_vd53 z*+5Reee!de@ebJrt82r_{DgG@kmxCM{&DOqJ@%wW1ZJ$?OZVG}LKHeh-k9>L2V*!N zx#vM}bY{-1FdaDHN*Y8u*!QVL^yjKSXOjgM2i|+j%cl;Oim2Bf4eWQCcV?Y8fr61>CO{`8v)iP8ZewW$BfHl4`S|s%*InK{5Pi6D>WEPa80@GXX!L#`5L6u-PA|w|xDj<{ihC^biBSj@roY+JmH^PK#|0AsICKcGB+d ziRY%dW`nP7r5xR((qez`az|zso43U_<%zKQIHNg;m3;?<2vzTsu<8jcD;=~r(eFm- z3GMzfqD7isQZqF=kWq(K9Y(#Hj_Wf}t)K(ch)3Zf1a7XAAkGshc!55pfSK)3-aZ6! zl7CD@H0i_T4(~npHcZarnTm;G((1s$TH3}!_$3jx4+<8T{q$!vp>{xYQ^hzY8u&LNgtuNMa{kyNDonI}@lLvS{-ZOsP zld?Dd{B=RzR1L=m#>2KHEz@{jKYE$tO}hy5wmVxE8G&QC-gJ1eTFqMBRhva1510=+ zk^3@g7_4qd-pJLmSLFJ6Cmp?3>8uBrRV+g$VCd95)L&{Hv{U*iv&2OK4G5jeTG$@Ut~duh$R!oJ7~aI(<*D8+qY-?;@_n z>?IYpt*Pg^Ai>0Ve2OO~yKE zDg4X?g{A9zW8K`3fX(~w_&dMu|BUN;&59d8m*M=-{oMtP!45-(iB4O)@&$*3wbjFJ z9#E+VHqvK7YagreK^Yd;W?t>xW9A9IxV*ke?3p=ghliOMY+3=5A|Qp3SY}d&t=16yX!a01;sV~!Bf8v8 zzd|qK==?&vD8!YtvwE!Zm!sJp`Eg;w8TJ&h;`Vr|uyC(O4DlCWf-v(Spu&Zm+0zzN z1w95Q+DK;MP_Bbsfv;#?)w>H59hhKat$K)aI_x}PwqGr2s%-IjPNH39-QQK^sfQxI z0(7-LJ1A51>HHE?-Uh!(LUO64KEo!I8?95KGHA96_F~H=HEuVdHBxQc)j6^eXxuR| zhUL(1J#7&j?$}-bO>5={kfml(h$X4D@&^nD-n_tRk3~c>$%HpPgYUk)8sxA1881ZR z%wLob4dI{EK#V}e-+A1)XU+H%X2Ex+((UyR2u4S=58c=9Wt(J~LsT)4AXH~gIhE8^ zB|C0EcStRZH8Z0)nRe?Z$tR=Pd33x54^J^>rsR)gIXs5%*H%mBf2pYs2+NDNtO=nH3Pl$9(cj0=Gt#!cEQ&0>wFHX4Nbtb`VKc2{c zqw^+d6X0W353ez^{np4*X~H^(`)kjdoL%KX!XGFi@CFc(hjqGQX^1sW*aACmI~5!h zq&EPZS-;<5J07T;u;SNWPC2!z7~%K|?qM!MBX-Pvj=7rS<;W~5mk1D%hBIjV{VC;j zT#+a*ufg1D)~&ldp*7x+4dBZKv;Y-6EKdJ4ov9~b%PD$}P zetoxT&oNyP>e>vsWY*DmvNx0rKaBR@Hr3VX&!%H8%^(M6_PydSGIBbu$)1usoax1xc%R~$(-Tg9FKxMjLSATiPIfLK4?1K*8U`G)(r^LD^^K3Lv-ax* zw}Qrf*mOM%#^8uab|J4} z2OdV4u*kNP8{&T6JxdMdJ^GPZ9yD9MnI@Qx*GNO#rLq&t4;1Rb3|DoGjqGl6Sz%8l$`oP)s;m2;rAgivbNk0a6ap>Xe9wXu2c{?U+%7rsT7X#x+ z-X>-(JArNWS+sf{<-#z}W*Kz3CAEHxBWVwy%%gOcMJ()^)ec#z8sc4*3wygpo_hEY zN8aA&{yGo{MoQqQ09kDfI&{bD9A6ac{=3C?%)4rypClF^%pL^ceT-HQxn2sC&n+TH zzXM}uKF5XRcF*44SP4kVux^G@h!Q-1+CP`3!@*)@OI^7hY^m2{* zdbGJiYxtrNR|Ni@OeGl1by29`KG8N*c0F5+N#VR8mhWGI=(IY*=OA9EiW?t1S2=V+ z#_Q~CcHpm+<;Z4wS~NdbrgkYLmvVz#&)QubLdj1SmI+!1Q%d)%2A^R zgPn{zWYybOe~Nd`_n`EKEWfC1N~36yYqd>6#}@X~<1DN!J`3l6+@oXrBXb$gzRj%N z^Nth0fgGsOw74l@><&3H4WFA(SmMYBvwU;`51vBVb3m_*9Puq5rO$o4s7;nAAMdxNqZQM7cdz(ptT|kqc=-OnRVn7 zOJBZp-oAh3%ANW6RtbnF;;{!?PpO0W2MBW@Tj$G*izc*@BQ<`%V7tbu!N7(p2Z!fh zwPwg9iFFKnB}Yt@%5`u#{N%d4JRbhB%Y;~3BhG{rNv1OyG)O{j@;bJ5Y*zz-E;tGI z+@LC3Zgt+9G<(>6{FsRT<^vq+r`Ak&j<8vYbC{9{tsNiATIDP#p8P2nx-rAh?L(jqvMuTldF&Xb{Qla zg^4mhKkXf`*uJKw#B$gi>L)5IbLdan5OPB-i(P4aU1u+J)brpL89WVr+-cC|F&WQY z=&YY12VORa2+y?5i#ek4B%^A>m8SuL@<`swxF$7yBcx^e*^^hF zy4DpZh93T!ywp@~m6%V48$~I`RoEzo>q)VX;*QuU)TdU@T83nrD|>i~IFMkfM75_W zWKdKArexPyp+ZNDjJ!1jQ1=@r`R>eaZa8fJ0CK!VT6=pdtw+rQLn;Z6AGX!d;34KF zVikE6k2RL~kEg=tT%}svP$z^?L#3f(NU*nwjm>&&gHw>4B6&D#w*pIbz%0EedUO?6 zV3uAUvAhaS-9p11*2}1d^tbglleQf%cp}r9bNSTnGF%KTmjyBvpefoUOi&&%HNR3y ziHnBHQ4}^;HJjQ@Jz;)Qbve_oY{US+<)w|YLAU_A<$>yKUQz^Hs9tjqJEk!+*2%{) z*k$oND=|0#2ajYPb(5sbX)#}}kgk?&L5KEm1Lf20vk|vCOEL+i4?a9;g_@hnVy~0e1*v<9xE((Me18nwW=yNf z_zYdLx1mD8r81Rds(d*P>rPf%7K);Na4ybB-5X@_#bl1$)oTnQlQ77624enk z{w5fQ)xNHxnT-eKcaqK^N3SX-bjXid5V)%^@jLS2OPd1AMpoi?tx_;vM`H+(YT0rc zojqLkiSP=E&P|kpGbw1JvKVdC2nYBKnPS5&k_q6fU`p8A2P{;Zl-qhvX7@Rjcd3q& zrk?U}i8p^D?on{}*HzDosF+v?CJJs2*YBU674!Ve&pRUP_O(iqB6x)oMe1a%I*sKR z4`kwbbou0V%hPKxnvqaNrYzhWfM*4U@rSAq2VNnL>#97SK|BUSm~5;)Yf6Bv@x%A5 zjkbJ#b?C_V?k$sVqOMZon`C%isE#ALC^P1*jC`w>FR#`qF|$HBRLdkJ&c@#{>jyM% z+J?M?;L;O&c7{ufSrthN&L%OKH zvu+A<#P}jX0%LESJk}w0WqeHGrAgs5^VoAi%78Ep&7XaxIEEgh?O;v^aQj$o+ewb& z-ZznVz$4hR<55RN8`!PLjskdq%Q?d8^R_xUlM!^ev}5U2{31gD^I3|#WDlRIMY*iF z#Ox!;ViECh&B%Axal9x*Ec$+?+DBRyyY_tJOu;GRmKkwjsC3mcW^svnMkj>$EoguL zCT6)+IoEM6&w1aFD=BBpnbn}%Ad%XmvINo};u^B~k(9SHr+(TnJ)eZa+X08Pi+Pwd z4$S4r$txG6c|{-5iJE)lPhPr@`qJIPk(+kDzhEa@*K}rgB7)&64|w%Ylo}M9HkqfC zwJF{R>T14}2yKqR#Mw>p1L{m(v2d3v2wUzCud13@uKRw)wub2&`}sS>qKcpn8hO7R z-as^{i~h@`MY>@{LhUI=Cugx^`rU1OqD^h%uJ~>_~bQC^pf?)%}(bE;IQ8s z67;Xg>B8SFrG%`)S)=rXQG4b-?HL`Y#g3QE7{9miVw(^p-m(7v`f9!dXE?iiF37rs z8R1!r)cqAdgOWu?UmxK}TPVsGeZ#j`Z%Uy6d0GqPbB{GxZc^*)H!olv)@)=nMCBT} ztSJPrq`3v#c{u}5gxe~;k3#XV(;jw0tj58DNinMBjn=eGPeIVk(N!@^ z(Y{xl*;je&6PM&mw{Jhz>W9_?JX4RWlfndfiy-tNcd}b1o@oikvgr`{ zOc9wR_F(V6gN$09?tOXHD%z<+2j35vrJUxzamzmP^hMQw^LZI)==+bb+iFb=Fk~sh zyNz{3vywfil*KyAQ$w7EiujfC{#cFv!Pro0Gi&>#T%2`e{zt2>O&+{W zNitVvBQUlCw7}bMDOTg5aFWbNmKnQn*$iHD+mLvWBaz^h*CaE;vtfxZhcmAHv$=MR zbPya%8rSI8Bt4#Ad&@}FzjtdNTst2QEr2JzWlphAcCsuz8@LC`=9*^wd8dT(ws!uV zb8ZO@GQ4RX-|mxNT$=};S5o58Vi5d%ga`fq%DCSg;`6tKi*~*}(zC2(R@d%cMs#j_ z&IrcqVV>h$$Bfq?2-&R7lQEwa(;|%M5qi{GSdONP8R2%H4)q+85)~~Ed%AMsaWNX&nqvd`~wcARIUQCNP?g6 z(5On%DTc3NT3XcK=QSPc7-K8pD-9HlQ=wg5YqmT9aY9>Qs4QE1CBKf>%7*~dv_NAI zceJ`e_1IGr;MSpMmnH#yEqsy z4jG2?4=K2NIS751;-`A`&$ z5`IQpsuVhkWo&ioVje$ACXV4~(r%^o~r)65z=A?c+Wu}3Q4+-<+gYZj* zY+xZVCB<=Vs?v#ejmG2t;t0a1Szrco`MpuQ&$l1PeWRS^R2+=ief9%v*Nq}t79gYS z;+IV(;e#j1(Y5@*WU2U)^vzq>NxtXNPc>oF?a11>65}cfkxkzGSJ(0&y%y&w5FEPk zV*(CB_f+toa*us}b*|FE{PqD^xDvViUW`2-YK6NZb5$@Bnq_$kt3nTt zILCHaa4p|;I!|0|yus*tB*o*UGOtGb>CY97$B`L;87rH*yN#rQBi-IEa{5$+tFai? zw2bthakUyhIDgl+J37PoL{RK53Nu3~v*s(E&1{w*z$&pkfeC?h1UVYbtr;eDz@26_NoqRG!+6W`7Ujpv+ zanKB3YI8zsH;thPiWE-zK5p3;i?Ge(JItV5Iy~%#Y4x@t09ZUiVXooN7RSQ^UCpP9 zTYf{d^0RF>fQ8azL|ZopSfvn?+!`{&TzRXe&r9n_O)KLDVoAIr_KkbB+QNj-g@BFQ z`Mm^nb@16DW_jUU(b&R8`@&G!&X=EHW!jlgB;AkT=SHh0#5f!H74Z~SWp_C8J0UkV z+|`1!T{Mg8JKU%5PsdyT={@OiUQFaGDURnEZqQp_z)NEtWN-w(WL4RlpS4gN@f~Q^ ziq1sd2aZhjFWDYj9e4t^_5@Gyo@w5uTpabuCUMGpTC%_j_kxo!%^#^hecElLapvn+ znUZg}7R+d}gEQ!~K-1X*6R%CG2d2S$RHy~a94I5ZYqpnUHocjtLm4d15M(QHb<(;2 z&fw#sdSw%n+3`N_`=&A`XGKv72m&Y8v($AEx($L(IUf7k^snOF#O0gwzJ^vrBOmo! z>aB!rW*8|%Pxm$QCzF$GX=|+!kf2a`P$nkp@Gfe&*|iTC@F4GdX8tBc>kJg*Y4)cy($sm5bE)VQ1bAH!<9F8 zA@t!#=7RSqOZDy9&6q#!}74=6-B5X*sAbgm+n zSI4%sRs<`#L2*AN@k-(G_A9b(2~x(F|Ngo5-8I$aSrxfZv52R9gn@QasMEt7Kz`%J zZko5#b7V*SZ%C(>5wwA+7j0mMbU)A`lZ{3;j&0c?(=$Loib#MY)k>l6Zlr zxK-*=7H_RHE$rjEQiwacjLp)r5b+o{$LaCtJ*|C?+1(dUcb#*Ism~jL=ctMj1ts@+ zylInoSz@S+JMmR1@6?pX(&RY*F-s$1Tc)dRh8i=T*WuDZkR``r*$9X9SK8gf^D5Wl zf6F#jEjabv>*91#$9(1G*j5iavJM-^sB7Xg>RC7ji6T_+Lkn?Cr2&<=4kddqcI`rb zu^#wYWd?K!skHUwtcse^ae2^lfO`DpP;dpHd4+m{vWMr|_x7l$d?W`eEdi$B^zLv0 zgV({-ktk&cYIB83i59w?BB-Gm63Lzn-mBqoxH(1QyiC ze(jaf;ip=Y)~}&C+wC)D5pU4ik$>qThZ-{ZSV!hm;01qw7hbgl91y>cThR^}isXTO0c#*^cIc z57Q;ity!#grEoVWzdYCI4)K`tG*5eu$bJkSq>BcIM~Ym>0jQg#v^ftVuj8&XEjE!9 z*74;w>7ER@bkls!LmZBmBPv?PYQ`M0ctAyW zg=xrzYtvwUb{^rpyGb~@^S-di1Iy*5rKdl=H9lSxo))CwQ%uDYc&VrYO#Zt+&mm-# zxHXXr>Pg6oYsL{^`?nW5c5VCPHK%(wEg4-&ZQFiKR5eo6H-%<7)VH!-fQHy|9#5`j z4pnWF@H(Idf!1Koc2p5#u%m-ud9L`#x%b8q3gN3hSE-(SGbqu)Md+^8zxP1_NY`PA zhp$;K2=g=Niq&0>dtPcqz3L_k1y*7%i_5ken~)OAdKh$S_*vCZO|}9#$F+B*b>Lhe z^uwS6k+@?lv0(EZi-!rY;ED>*BbB}7sq&b}(<7KSI`1l^u{cIZOQ<&(8_U~SKe2>I z*tHx|DEka#T8>a@Ji}27k)gFQq)0*_&2;_SY-W@m6}8JEwsrIGT;}KqJ)?J3Ystxz zCjVn^n;OvT|I{rO3+lwXJ+i1W!6hx_AcMiitH(zak^Qf=|NY+og?&oOzQ+~ITMEF* zx(1?W{!FXzivf!J=uB(R3Rh;LzhT1$eW*%Q;YVCc?1Un&jvR|;yR#Lpn}Zj5-;Mps zpH2>xUgvH}{>k0p_*4~!PFI87+d?jr*!;FvX*~L#b$zQyTeA=(xWx>AK%zv~njes) z)>Yi-QjaDRd=x&w7-wDo8yJhdp!CA3+BWmWNMRI3Fk}Sg{Xh z^<^LU1Dh3Z!o=!Ap!Y4Uq~Cl?>}4KZHVS(I8$rQuwrS>TG-nI(Wb9z9Ucb$- zOQ=SUxRABdnOCi9mSxDA;|^)wj84j7_MqK!zN<=0Zt6fCVM+C74cOIB$#@6Zih{AX zY4!#aUftC3f5cqx--a+S%xG_fzSj zj@#;@Tp)#Mu>R)Q*pr4Xx5F(uVHNVbqqc!tBH~o_r`?(?$80sD3_)YVt=eEM=jKia zG!Y@p^GO`+%7!-~BFxfsOGs&2YN0JJcQ^KVmE_F~sCv=!a==TTf<+lV@c{23KJT)s zrv>u24DPG5J?gN20-9ODE_5_;)jL&_nW?}qUm;Da^z1#F__W&vM;?w|)&|gj&7+|Q zy3apvJDriG`8ACoLZDRip`fvq=vU_BY_#$f3-{TG4#dGDHI6bb#UV1l-hj>?Ffc$o z)%|D7?uBdHD8F#`j}7jQVnW}1Ye6L394gJuKJj!FfpA6yju0Oqi)%7>FbQ>Ov=amv?(-E)R5Sflrkw_dK^ z()~jfL(pv<05>6uEox0mV6#jsP>cW7bc}*Yc+>sx=(Uoxqq40B$e0tGy|ltWq4`E< zM8ltg6wvt-r}_I}(D#77y04x&$*N@^5wQwi|J?gRF?&_61WJ=CWiCTILh*b=mtcVr4;afsBoBF8h0GQ6ul4g`Sm^ zz>VAD7al#DdImMiYKWR@U<`7*PF|m~d#ijUu5C#do$?i-GqlwD6SDQN*R}wO3Tac& z;{u|P%}r<~OWuWB>*t8wpuy!&OJ3$L{L>2SXFQ+e{!T634mhNb!_V~fg|1H@N1y3q zz5k(;ERV5R(6*>V<~b-M*$xIpnbT?K*MIt2OUmRa`0_>&7&Tj;Su^`|BfkA-8U>l@ zHO0J=4oaXg(35XMQLLNS9?FSQ`o$@c!LMM2HUl~4dX7dbqQv8h+GOzxS?sO6H>}T@ zHL;k0xsDE_s5oND6j!|$pLM8D@4k>LqZCL< z;uzO71Zb*?;qbb21AX2LM;ggp>Xz%*5Paj!Ff2fgPZykdl|-MGu$x^_b6*UYc!iER zK~q7~49pZMwQPV83Ws^r*u1o$~jjP8BCY;OBW+O*>bW38!X4ubu;If z1JK8*?1Z}sOY6UNg*nXaH{9^-s7R}2f;gc`%ZxC~`Ia5)2!8L~3M9NKCdsH-{ZjK7 z`CCu7wL7<$tfgWij?wDNAWP!8IK_@O3Hga^J7Uv*Q$(ZU;Ecz9iUxP=>}z9+Y2(DHNgUSE2&aHP zZZZn1d=?ivEletX%V~3tIAoM_sD}W}X*CHK}CBhmKDF^MD*TtkT49=-5It zcPNPiLuLCs{k*ZT6S|t@*m$KIu;en2b8| zv4VfsfhRb6bg)RY<-tgp>8S$+W;G91RQ14WxB(gj$;&Q{%&Dc|DPke}vrkaLG@s66 zoL~GHy8Xx9KZgP@@Y1i<30LAw-W>_t2{FnthMZ#V+_LLdxF-$ycKOy%zyy%vX*E!S zIcfNHJFYqYLCbUt37JVF5(U#wHtrs9M&JDKG(GYEQTFcfOuzsC_;YN|yiD6-ku|58 zDTJbu)0Q)1n>8JnLqk*!=_GTA8FEY#r6FrfRz~Q6km#hGUJmJ?vyPHV<$HO(U+>TR z_wVo8?e@H$-MZc8>FK&2kNe~PxIZ43o`7bBCAWX8gTFCUz=Y?+fzCm%@M{#t?pny2 zllBMJDWClSE5RA17ADJ#njV4wRU2F}=0F&>9};#7gaEU#$S;UB94l5gVSr*>X{M0s z)7Dlf{&=qtm!182yAjSZK~}z86&9s^d;2W|Tj=<{np5Z3YsE4=x!S2u#zIeu7{g5I zLlbhNxc{AvtLSx%R=w8Nb05^@DTeTyzE-1n!^c!pW3`i<4Py^Ce7hv4A1hn*okk$3B5D*m_+M(_&i|+dV?ZrrF8gY`K7a}Y4*uR0Zwo(f zADX?FqnC@jrz^$V+tt;=-D!)9o7)ywS9dor2N!Q24;P2cwys+!7M|oS(?^GVzA^d? z=1TZl^?$ERCKcOSuCX zDSkVkc~cD)n;G=p;4c}im#<3tRf2OTP+GIIFn-y#675t&#hO`il{2%rriq54<+#yx zP$vjQo!tI}H%*h(_e0%FM(64n@hYLQ@;WO&D@(!yN$G*yT z`+b!s#E5UhICA#wm$u1XPi}G^P^cCSffgwA=j*edk4Ddfam{Jq^}};c85CsS@tbDH zgU6emFFbzpk^&OXvPFBsd*q|nuCxE)nEThnUr+M$4b%x*_C9XRZCqu604&2CYp^@^ zsmlS`?j>+eB9?Cc&(-+C(6x(&qpd^7L?aQ6Zmywzu&xEEU5k7xas4< z!~2iG?V*(|reW(q-`91Rzx0#z^3$Vdwxd4=?fZ4tUTbo+=Ad_hZlGdezFvi)Sy@GW z_@@Kf`^X8$yyB79C>^3!7kWV}3tcOEe*WEeJ1JKNwDP5fIBeM_x&MOt{z2qRM zqFSZB@W~fuanOf7|DR7*F+*NEW0xZBu||<^TgWHHWYlScqHb{hw;~e)7H@T9nu7P6 zAFM3FV7Z9VJS^~Upnl~8Hnz>T2?D0`?MJ8W`#30g@?Py8Ib*)Yd%LEnKm%y-kj9yLNM(W!q@g^Tm+e!rqMbkhmEnM2H|qkUCl zEjY5U#TOhrd5%nl(`$!B$4{TWjHv^QcXn!iUtw5V4gs4($xs9F?aUC=h}f7k-{qi* z{LZg9Ab0l8F`{A!5%Zw=%%$@xyQdozA&>o&noYPCP{4OK%ISE@`^- zux|Th(LVI`wl?C&R{~-lXPWLELvZb6>{qJn*ZJ; zK^@L`2TJ-S8DIQ1B&?xM1kldhUGHILqz|eVLw0zlbJojJiBUd%0u&ij8!F$j6Zd6} zTpA15366ePAuEh4NxzW;quF}M%aF`tV&J73>gL8&rOw)mSE&tjQ)WZOYjuan+ACMg ziNi`9IF0drI4oqN#0o?{=Y;o*bFT+^jC}2Ys2o1KSHu^-e!$95;)TCF5&1#(D}TA(wq(wg zYdb!((@fM=o9AJ0`P4FPZm|Wo3U&6@7h@k(qlgocWQWd4VPpxA^jbbe!XP6tP50(@ zy)SGe98H}4YOJaqYe19iW^RiZUHN}^j}N^qHejcK*R6ShC!}W)h{NHHB2BV0a)8J2 zd36rp)|`Ha>l^0E7q%3Gs*=rtbJ~aNAXIFQLRzE#1KVHhdSr55F`Si=glq4;y=+?3 zN)M(-)bC1ZNJvP~;V-2x1R%db=}R#B@ojjnK6vMH5v7*7SG@0pVf{m^*mo@m{RF)t z76$wESm$(fns2{j>UE#*FpZ^WQXs(K#}MT97qK}4pq-!tj`^3}&{RzgP{?%5@6)>x zS{CzhMf^qY9}8FVlVB>Tr`hh`XP(hc-+Xd@RKu=q{m{!~C}lbXe3PXGms@1H_aN!| zhL&ql3CSW5lfQVIVC4Vf!^8JGA|`%%ZU0$VJ5e5jn29M2$uXE;5l7nJ;(Dp4U_sRu zBQKLzXw;aZ(CETlbI)v}n$w@diH|2xZ(jaqoX?w#lmhl{Z05#Dgj6INi(2(?>52LH zOB$B3ITj0d?YE40oI1L8gm8IEB`)r6(VHYFCML$hLIptbJVRWMkv4`*r{ysGj=uS} zG^}3%Etd7p=4MdZoIq#S7VPPt5C^mcpnvgWL;DKCio-Vj`u)FK9R(b~S$gsnbeS_H zX=b78?|gV}IC*s?)iNcDUW@1B=YNu>_gr8C1DvIEch~26SCC*iSlmaotGkpoLoB-7Zvh4~u|2FeO_5vwl>TFG9i%KmA-660nm4CGc8vDG*A(!w)^WY9X|VIq3Cd8 z-wpjA3(qMmfABub2S8Jp?3+7wS$=9#c`mPx($5&egR)!x-YY3Z{bUm!rRcQ4M@htq zdY|=tkbot3HJ(+VcO6ZYh(%!W(50dw&Q)*@pMf8tSn;9Yo5?9hiANqrH&D;W=vGCw z63<6{WyUQIyp~0mMwr?TC=p&a$bp@jBcNLH@s5cf7n+9W#p2<5zwW!IqN>krJiJc6 zVGqWw;`7X;cKh|MgybH;*%+B=$P;DQ}qxq8?t{rv;`!-;qT;tW<52|Iz>kdpnBUaqnr~PsDrmcJ5d9!0q(A|Ipl?~gN zunZ~?V#X@Yv?)TaH03BC|LWsDV;YJvDuXu#j>5 zo@$Q^oCkcz4H2MQ%|Irl5jQ${&U@3-cZbhiChflL4nw8xQi0zNeS4fBcVAPXpnp*3 zGx*(N988zQc_o(n95Bw#D4;R01ZM2*pOG306+S*c@3k)TMy};qS5VSNuLRVp<_~|^ zokOyr-phyx%N}Yh!#RWDF{)>(Rz7%C$mGJmHtB>XJnM>pvEobeoBMe zILc&8S(Svo599m%J|^nTU#HIh-dbn+_`2E6kA6oJF-d3PzYZA~dg5cw552nR&wi+n z-^EHi3VlhdC{{@hgJ^&Rq+(cg0{Z0q;#A~vEZGt_rt``(pJNSr0b2597{9Z>O^q*3 zJ%_X-VX8h`EzXPvn^wSx?mf#6o6KQkQc_B#a7quK4jS}ki>TLY+fWj`fWCd)Nlz%? zg-_C`({eiJ?*200qXRd!?)E`V$0>MFV2))x4RRM9ld%f_~%b~%^$!< zTSD5@RcCOy#{~3jAxK*jnLbvm9Fef^y{UBg(3`X!0*gv) zC5%b9#+>1}Ciq`liKQV^iJOh=0EEk&RT)}+?DEKeZ<4t1gDGX&$@^hd2b{NY@2iW| zOxY$xK0{KyE#dWsmZ&)*6{u20-wS7mCvSWp8lC*p>H{Q@EpRR(>{LIHcbPSxKSMgE zpRoi+>bRQ7NM|Yj?c52sF<0br#*gav1cc_$`Zb4(c75TCGc?|R$sRH6? zUoVtrna&=BHXc5Wc-RY_JoL?4xhfyFI=(i(GS6|ZS?_Igb!DMcNhsn>|9RbrXAJN} z^tg&gw$71c8p`hX;p?RLN4A*KvqV{&s}i?qL#T|qaxx0*z4wjo#&Nl`N1zTk*ayjm z_HNGGN|e(pk)ZnZmFFR#P~cc9fy|+R(EZWxkKN=a01w`^xC&WAgueX-u)#ypuu7Rg z=DVTN93}2kppMJCiMv(t9&!zG$yC~RZpjQ*Pb3%tQVB_~FwqO(e zJN{NwTj3p{@{+4-&kfd0xc~95C%4SA!TShSfgsaR=nVYitxGDgNlTyEvx}dPufK7> z`9P2^DR#MR{kGYZ^|o>S6Wv^sk*m1lYLm)&IB)RtWw*kN)%-mm6-k7S35EcAXAa@t z{-G^OD!=9X(7~J8RAnR1ZM1uD!IFN}?U(sgoU4`gitEy0xe#C%rhY~ik9ahb3@I)l z2{=m+cEYgd1+}>H#_E6pzEH`(Z9^ZuB`P7PWqA7^-xlnPR(JocCLlBB&0dkSOTWbE zzc*lQE@e^VsF3UGEwsE(nzfiLITOB=QBTtN(EdM8GM8>a9<)c5$P*0UE*4%acm>+~V!-;pOh>;pXPy?&jm?;pye&>gnMM z3M;%_Ts*z~U43Xk#Q>BGUkh?&uauwQP5j>RWgpahStGw~5%v$FOa?gjN*W>8{a~F) zf~G%xxRVH6`QZC^F--#W08t>Sjn9ZI+DW{8@8SePNju5J!Cw$}RY&*Ml-q+71f4y% zZi#EG*RBO=r@|m#F0)%R*pv@eOX-RqAO9Ty%T@gb5xU-_{?n%}rHX{rBOhbMietN!oGXi1<}5UT5t8k!dNevdg$Xpd{*HH1b8j*i0-r(3g|p zz;99Lq6Nb(Se{WC`PFt^PZI1SIhJ(MLrXu8w zkoGJ&P%$HNiHP={xv?}7%GRx0m-%gKs(JhQxY)`84)`xhte=8@#;#peV}Hqvy*#OX zraV7lvjXSzl)Q^VK_NKs7^ne?s?2ixpA!G^?&vxp{}90AOT!3IPAA4a#8Z=CY>&S% z_u)hRGLTgGsHtGF25y>qGeHG@YI#brF3#Knm>R5%OJ>$A)1i3a9FtDZ0(yE=x1n$# za$<`yWIcvX_w2V5zgtS~j|rGr>}$IEd*nmA8n&)VENo7-V2{@2UDvhW3m|1kMHmD_ zhIba-s>asx1*}J{P9`ENA>NuFp(6rhY7gc}f)(AX-uP8SD7x@Q<#Hcr=J;tuePPi4 zw&!8V??Or@mmJqff$Rf{48x7*y8qnq$l&j36?_4?QZRr;mEZocj7o0A+a$Tw zR?vMA*+5<`pi(_fo{UR4wZ`TKG?9J+wzU=UYj<-{sC{uXZ1cFhOLm#IFAmXI#x3Ha zUc?$p#X!X%W{{n!MWE$bnN3PY1QA#`S$!H=zQ0bomwQa*s@#naPOrxhBTsgWDWwWPqzmcP31NKX)Am z+!F=F;>4IY-d{3QU)VMsz5P-irk|Rb?6oy(i&20@iRSAf>4CUQiCpIt0EOjzWz-$^ zrT16U=m2a=S!jUkKH8n(b5MTIp)SV+l15m`{p}J2w)4|uqoaUR@#=l{S1JLi1mPgZW%fI*t@;=wVam?9@1)Z;wXHIyrwd~$`bxv*Iqpxr=?;s zsHP~O**m8FML~nm{Q6Q-N|RiB#OmXq_@nO+<0guUaQptrUkyjMv|#HKR$RB<45_3p zd-bcju516`%_m(pNya7;ow+5)QkWm~0KT`XD)WnRD7}&Z@_@ZGv6q<712WJ`s`H

4`~ZWNr?d28%FyQkQz2X`!Y4yNIrm!E&G7(`=1 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

1zR2oYO2%gLYb-(A{RW~ZM-;%I9pMLxk`N9Bu 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 IC7wY32O6HIvH$=8 literal 0 HcmV?d00001 From 85b58b3d154a75c1773a941c9be5415e316a849b Mon Sep 17 00:00:00 2001 From: Sishen Date: Fri, 6 Dec 2019 07:56:11 -0700 Subject: [PATCH 06/61] Update scripture_applications.dm --- .../clockcult/clock_scriptures/scripture_applications.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/modules/antagonists/clockcult/clock_scriptures/scripture_applications.dm b/code/modules/antagonists/clockcult/clock_scriptures/scripture_applications.dm index 0bb4270ff6..755b324d71 100644 --- a/code/modules/antagonists/clockcult/clock_scriptures/scripture_applications.dm +++ b/code/modules/antagonists/clockcult/clock_scriptures/scripture_applications.dm @@ -146,6 +146,6 @@ /datum/clockwork_scripture/create_object/summon_arbiter/check_special_requirements() if(GLOB.neovgre_exists) - to_chat(invoker, "\"Only one of my weapons may exist in this temporal stream!\"") + to_chat(invoker, "\"Only one of my weapons may exist in this temporal stream!\"") return FALSE return ..() From 1158c03ed70ccc7a4e8cddc81e47b2e3d4cf28f9 Mon Sep 17 00:00:00 2001 From: Useroth Date: Fri, 6 Dec 2019 19:00:10 +0100 Subject: [PATCH 07/61] Added bamboo. --- .../items/stacks/sheets/sheet_types.dm | 28 ++++++++++++ code/modules/cargo/packs/organic.dm | 1 + code/modules/hydroponics/grown/misc.dm | 3 +- code/modules/hydroponics/grown/towercap.dm | 43 ++++++++++++++++++ .../projectiles/guns/misc/syringe_gun.dm | 14 ++++++ icons/mob/inhands/weapons/guns_lefthand.dmi | Bin 57671 -> 57901 bytes icons/mob/inhands/weapons/guns_righthand.dmi | Bin 61824 -> 62036 bytes icons/obj/guns/projectile.dmi | Bin 37418 -> 37576 bytes icons/obj/hydroponics/equipment.dmi | Bin 26022 -> 26306 bytes icons/obj/hydroponics/growing.dmi | Bin 72005 -> 72075 bytes icons/obj/hydroponics/harvest.dmi | Bin 83499 -> 83647 bytes icons/obj/hydroponics/seeds.dmi | Bin 25256 -> 25446 bytes icons/obj/stack_objects.dmi | Bin 41449 -> 41709 bytes 13 files changed, 88 insertions(+), 1 deletion(-) diff --git a/code/game/objects/items/stacks/sheets/sheet_types.dm b/code/game/objects/items/stacks/sheets/sheet_types.dm index 0aa19b13ef..36597e2295 100644 --- a/code/game/objects/items/stacks/sheets/sheet_types.dm +++ b/code/game/objects/items/stacks/sheets/sheet_types.dm @@ -241,6 +241,34 @@ GLOBAL_LIST_INIT(wood_recipes, list ( \ /obj/item/stack/sheet/mineral/wood/fifty amount = 50 +/* + * Bamboo + */ + +GLOBAL_LIST_INIT(bamboo_recipes, list ( \ + new/datum/stack_recipe("punji sticks trap", /obj/structure/punji_sticks, 5, time = 30, one_per_turf = TRUE, on_floor = TRUE), \ + new/datum/stack_recipe("blow gun", /obj/item/gun/syringe/blowgun, 10, time = 70), \ + )) + +/obj/item/stack/sheet/mineral/bamboo + name = "bamboo cuttings" + desc = "Finely cut bamboo sticks." + singular_name = "cut bamboo" + icon_state = "sheet-bamboo" + item_state = "sheet-bamboo" + icon = 'icons/obj/stack_objects.dmi' + sheettype = "bamboo" + throwforce = 15 + armor = list("melee" = 0, "bullet" = 0, "laser" = 0, "energy" = 0, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 50, "acid" = 0) + resistance_flags = FLAMMABLE + merge_type = /obj/item/stack/sheet/mineral/bamboo + grind_results = list("carbon" = 5) + +/obj/item/stack/sheet/mineral/bamboo/Initialize(mapload, new_amount, merge = TRUE) + recipes = GLOB.bamboo_recipes + return ..() + + /* * Cloth */ diff --git a/code/modules/cargo/packs/organic.dm b/code/modules/cargo/packs/organic.dm index 78f10b0908..a94ded9751 100644 --- a/code/modules/cargo/packs/organic.dm +++ b/code/modules/cargo/packs/organic.dm @@ -82,6 +82,7 @@ /obj/item/seeds/amanita, /obj/item/seeds/reishi, /obj/item/seeds/banana, + /obj/item/seeds/bamboo, /obj/item/seeds/eggplant/eggy, /obj/item/seeds/random, /obj/item/seeds/random) diff --git a/code/modules/hydroponics/grown/misc.dm b/code/modules/hydroponics/grown/misc.dm index 9d91d028ba..89d0404a50 100644 --- a/code/modules/hydroponics/grown/misc.dm +++ b/code/modules/hydroponics/grown/misc.dm @@ -141,8 +141,9 @@ endurance = 50 maturation = 3 yield = 4 - growthstages = 3 + growthstages = 2 reagents_add = list("sugar" = 0.25) + mutatelist = list(/obj/item/seeds/bamboo) /obj/item/reagent_containers/food/snacks/grown/sugarcane seed = /obj/item/seeds/sugarcane diff --git a/code/modules/hydroponics/grown/towercap.dm b/code/modules/hydroponics/grown/towercap.dm index 9a660ac282..b2bb42a91d 100644 --- a/code/modules/hydroponics/grown/towercap.dm +++ b/code/modules/hydroponics/grown/towercap.dm @@ -98,6 +98,49 @@ /obj/item/grown/log/steel/CheckAccepted(obj/item/I) return FALSE +/obj/item/seeds/bamboo + name = "pack of bamboo seeds" + desc = "Plant known for their flexible and resistant logs." + icon_state = "seed-bamboo" + species = "bamboo" + plantname = "Bamboo" + product = /obj/item/grown/log/bamboo + lifespan = 80 + endurance = 70 + maturation = 15 + production = 2 + yield = 5 + potency = 50 + growthstages = 2 + growing_icon = 'icons/obj/hydroponics/growing.dmi' + icon_dead = "bamboo-dead" + genes = list(/datum/plant_gene/trait/repeated_harvest) + +/obj/item/grown/log/bamboo + seed = /obj/item/seeds/bamboo + name = "bamboo log" + desc = "An long and resistant bamboo log." + icon_state = "bamboo" + plank_type = /obj/item/stack/sheet/mineral/bamboo + plank_name = "bamboo sticks" + +/obj/item/grown/log/bamboo/CheckAccepted(obj/item/I) + return FALSE + +/obj/structure/punji_sticks + name = "punji sticks" + desc = "Dont step on this." + icon = 'icons/obj/hydroponics/equipment.dmi' + icon_state = "punji" + resistance_flags = FLAMMABLE + max_integrity = 30 + density = FALSE + anchored = TRUE + +/obj/structure/punji_sticks/Initialize(mapload) + . = ..() + AddComponent(/datum/component/caltrop, 20, 30, 100, CALTROP_BYPASS_SHOES) + /////////BONFIRES////////// /obj/structure/bonfire diff --git a/code/modules/projectiles/guns/misc/syringe_gun.dm b/code/modules/projectiles/guns/misc/syringe_gun.dm index 342ceecbc2..4ef7fb9f50 100644 --- a/code/modules/projectiles/guns/misc/syringe_gun.dm +++ b/code/modules/projectiles/guns/misc/syringe_gun.dm @@ -151,3 +151,17 @@ max_syringes = 1 desc = "[initial(desc)] It has a [B] strapped to it, but it doesn't seem to be doing anything." ..() + +/obj/item/gun/syringe/blowgun + name = "blowgun" + desc = "Fire syringes at a short distance." + icon_state = "blowgun" + item_state = "blowgun" + fire_sound = 'sound/items/syringeproj.ogg' + +/obj/item/gun/syringe/blowgun/process_fire(atom/target, mob/living/user, message = TRUE, params = null, zone_override = "", bonus_spread = 0) + visible_message("[user] starts aiming with a blowgun!") + if(do_after(user, 25, target = src)) + user.adjustStaminaLoss(20) + user.adjustOxyLoss(20) + ..() \ No newline at end of file diff --git a/icons/mob/inhands/weapons/guns_lefthand.dmi b/icons/mob/inhands/weapons/guns_lefthand.dmi index 8978d1723741dbb806745eb239185b2c8f77cd14..ea185c5ad7d785bcb07e974dfd2de7db50c4392e 100644 GIT binary patch delta 18987 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 delta 3524 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 a-rQB>G@Ez95_JLSB`5v%RjCv#;C}$79mMzm delta 17175 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 literal 0 HcmV?d00001 From ea4f57beb673557c11ef6e13fd4d1598260caa80 Mon Sep 17 00:00:00 2001 From: Useroth Date: Sun, 8 Dec 2019 16:47:21 +0100 Subject: [PATCH 21/61] Spaghettid my way around the errors. --- code/modules/mob/living/emote.dm | 6 +++++ .../hostile/mining_mobs/elites/elite.dm | 10 ++++++-- .../mining_mobs/elites/goliath_broodmother.dm | 14 ++++++----- .../hostile/mining_mobs/elites/herald.dm | 23 ++++++++++--------- .../hostile/mining_mobs/elites/legionnaire.dm | 15 +++++++----- .../hostile/mining_mobs/elites/pandora.dm | 5 ++-- code/modules/mob/mob_defines.dm | 6 +++++ 7 files changed, 52 insertions(+), 27 deletions(-) diff --git a/code/modules/mob/living/emote.dm b/code/modules/mob/living/emote.dm index 6c1a2cfec9..041b367ebf 100644 --- a/code/modules/mob/living/emote.dm +++ b/code/modules/mob/living/emote.dm @@ -87,6 +87,12 @@ message_simple = S.deathmessage . = ..() message_simple = initial(message_simple) + if(. && user.deathsound) + if(isliving(user)) + var/mob/living/L = user + if(!L.can_speak_vocal() || L.oxyloss >= 50) + return //stop the sound if oxyloss too high/cant speak + playsound(user, user.deathsound, 200, TRUE, TRUE) if(. && isalienadult(user)) playsound(user.loc, 'sound/voice/hiss6.ogg', 80, 1, 1) diff --git a/code/modules/mob/living/simple_animal/hostile/mining_mobs/elites/elite.dm b/code/modules/mob/living/simple_animal/hostile/mining_mobs/elites/elite.dm index 7c135cc970..36abd92b40 100644 --- a/code/modules/mob/living/simple_animal/hostile/mining_mobs/elites/elite.dm +++ b/code/modules/mob/living/simple_animal/hostile/mining_mobs/elites/elite.dm @@ -24,7 +24,6 @@ var/list/attack_action_types = list() var/can_talk = FALSE var/obj/loot_drop = null - //Gives player-controlled variants the ability to swap attacks /mob/living/simple_animal/hostile/asteroid/elite/Initialize(mapload) @@ -138,6 +137,13 @@ While using this makes the system rely on OnFire, it still gives options for tim light_range = 3 anchored = TRUE density = FALSE + var/obj/item/gps/internal = null + +/obj/item/gps/internal/elite + icon_state = null + gpstag = "Menacing Signal" + desc = "You're not quite sure how a signal can be bloody." + invisibility = 100 /obj/structure/elite_tumor/attack_hand(mob/user) . = ..() @@ -196,7 +202,7 @@ obj/structure/elite_tumor/proc/return_elite() /obj/structure/elite_tumor/Initialize(mapload) . = ..() - AddComponent(/datum/component/gps, "Menacing Signal") + internal = new/obj/item/gps/internal/elite(src) START_PROCESSING(SSobj, src) /obj/structure/elite_tumor/Destroy() diff --git a/code/modules/mob/living/simple_animal/hostile/mining_mobs/elites/goliath_broodmother.dm b/code/modules/mob/living/simple_animal/hostile/mining_mobs/elites/goliath_broodmother.dm index 1bcd3173ea..c18a342206 100644 --- a/code/modules/mob/living/simple_animal/hostile/mining_mobs/elites/goliath_broodmother.dm +++ b/code/modules/mob/living/simple_animal/hostile/mining_mobs/elites/goliath_broodmother.dm @@ -30,13 +30,14 @@ melee_damage_lower = 30 melee_damage_upper = 30 armour_penetration = 30 - attack_verb_continuous = "beats down on" - attack_verb_simple = "beat down on" + attacktext = "beats down on" + /*attack_verb_continuous = "beats down on" + attack_verb_simple = "beat down on"*/ attack_sound = 'sound/weapons/punch1.ogg' throw_message = "does nothing to the rocky hide of the" speed = 2 move_to_delay = 5 - mob_biotypes = MOB_ORGANIC|MOB_BEAST + mob_biotypes = list(MOB_ORGANIC, MOB_BEAST) mouse_opacity = MOUSE_OPACITY_ICON deathmessage = "explodes into gore!" loot_drop = /obj/item/crusher_trophy/broodmother_tongue @@ -170,13 +171,14 @@ health = 30 melee_damage_lower = 5 melee_damage_upper = 5 - attack_verb_continuous = "bashes against" - attack_verb_simple = "bash against" + attacktext = "bashes against" + /*attack_verb_continuous = "bashes against" + attack_verb_simple = "bash against"*/ attack_sound = 'sound/weapons/punch1.ogg' throw_message = "does nothing to the rocky hide of the" speed = 2 move_to_delay = 5 - mob_biotypes = MOB_ORGANIC|MOB_BEAST + mob_biotypes = list(MOB_ORGANIC, MOB_BEAST) mouse_opacity = MOUSE_OPACITY_ICON butcher_results = list() guaranteed_butcher_results = list(/obj/item/stack/sheet/animalhide/goliath_hide = 1) diff --git a/code/modules/mob/living/simple_animal/hostile/mining_mobs/elites/herald.dm b/code/modules/mob/living/simple_animal/hostile/mining_mobs/elites/herald.dm index 3f184e2f52..f1e7494beb 100644 --- a/code/modules/mob/living/simple_animal/hostile/mining_mobs/elites/herald.dm +++ b/code/modules/mob/living/simple_animal/hostile/mining_mobs/elites/herald.dm @@ -28,8 +28,9 @@ health = 800 melee_damage_lower = 20 melee_damage_upper = 20 - attack_verb_continuous = "preaches to" - attack_verb_simple = "preach to" + attacktext = "preaches to" + /*attack_verb_continuous = "preaches to" + attack_verb_simple = "preach to"*/ attack_sound = 'sound/magic/clockwork/ratvar_attack.ogg' throw_message = "doesn't affect the purity of" speed = 4 @@ -124,11 +125,11 @@ /mob/living/simple_animal/hostile/asteroid/elite/herald/proc/shoot_projectile(turf/marker, set_angle, var/is_teleshot) var/turf/startloc = get_turf(src) - var/obj/projectile/herald/H = null + var/obj/item/projectile/herald/H = null if(!is_teleshot) - H = new /obj/projectile/herald(startloc) + H = new /obj/item/projectile/herald(startloc) else - H = new /obj/projectile/herald/teleshot(startloc) + H = new /obj/item/projectile/herald/teleshot(startloc) H.preparePixelProjectile(marker, startloc) H.firer = src if(target) @@ -210,7 +211,7 @@ my_master.my_mirror = null . = ..() -/obj/projectile/herald +/obj/item/projectile/herald name ="death bolt" icon_state= "chronobolt" damage = 15 @@ -220,12 +221,12 @@ damage_type = BRUTE pass_flags = PASSTABLE -/obj/projectile/herald/teleshot +/obj/item/projectile/herald/teleshot name ="golden bolt" damage = 0 color = rgb(255,255,102) -/obj/projectile/herald/on_hit(atom/target, blocked = FALSE) +/obj/item/projectile/herald/on_hit(atom/target, blocked = FALSE) . = ..() if(ismineralturf(target)) var/turf/closed/mineral/M = target @@ -237,7 +238,7 @@ if(F != null && istype(F, /mob/living/simple_animal/hostile/asteroid/elite) && F.faction_check_mob(L)) L.heal_overall_damage(damage) -/obj/projectile/herald/teleshot/on_hit(atom/target, blocked = FALSE) +/obj/item/projectile/herald/teleshot/on_hit(atom/target, blocked = FALSE) . = ..() firer.forceMove(get_turf(src)) @@ -258,8 +259,8 @@ /obj/item/clothing/neck/cloak/herald_cloak/proc/shoot_projectile(turf/marker, set_angle, mob/living/carbon/owner) var/turf/startloc = get_turf(owner) - var/obj/projectile/herald/H = null - H = new /obj/projectile/herald(startloc) + var/obj/item/projectile/herald/H = null + H = new /obj/item/projectile/herald(startloc) H.preparePixelProjectile(marker, startloc) H.firer = owner H.fire(set_angle) diff --git a/code/modules/mob/living/simple_animal/hostile/mining_mobs/elites/legionnaire.dm b/code/modules/mob/living/simple_animal/hostile/mining_mobs/elites/legionnaire.dm index 5e0c00d998..1bc9ea1e4e 100644 --- a/code/modules/mob/living/simple_animal/hostile/mining_mobs/elites/legionnaire.dm +++ b/code/modules/mob/living/simple_animal/hostile/mining_mobs/elites/legionnaire.dm @@ -28,8 +28,9 @@ health = 800 melee_damage_lower = 30 melee_damage_upper = 30 - attack_verb_continuous = "slashes its arms at" - attack_verb_simple = "slash your arms at" + attacktext = "slashes its arms at" + /*attack_verb_continuous = "slashes its arms at" + attack_verb_simple = "slash your arms at"*/ attack_sound = 'sound/weapons/bladeslice.ogg' throw_message = "doesn't affect the sturdiness of" speed = 1 @@ -130,7 +131,8 @@ visible_message("[src] attacks [L] with much force!") to_chat(L, "[src] grabs you and throws you with much force!") L.safe_throw_at(throwtarget, 10, 1, src) - L.Paralyze(20) + //L.Paralyze(20) + L.Stun(20) //substituting this for the Paralyze from the line above, because we don't have tg paralysis stuff L.adjustBruteLoss(50) addtimer(CALLBACK(src, .proc/legionnaire_charge_2, move_dir, (times_ran + 1)), 2) @@ -224,8 +226,9 @@ health = 80 melee_damage_lower = 10 melee_damage_upper = 10 - attack_verb_continuous = "bites at" - attack_verb_simple = "bite at" + attacktext = "bites at" + /*attack_verb_continuous = "bites at" + attack_verb_simple = "bite at"*/ attack_sound = 'sound/effects/curse1.ogg' throw_message = "simply misses" speed = 0 @@ -248,7 +251,7 @@ icon = 'icons/obj/lavaland/legionnaire_bonfire.dmi' icon_state = "bonfire" max_integrity = 100 - move_resist = MOVE_FORCE_EXTREMELY_STRONG + //move_resist = MOVE_FORCE_EXTREMELY_STRONG anchored = TRUE density = FALSE light_range = 4 diff --git a/code/modules/mob/living/simple_animal/hostile/mining_mobs/elites/pandora.dm b/code/modules/mob/living/simple_animal/hostile/mining_mobs/elites/pandora.dm index 7422a441aa..540470d505 100644 --- a/code/modules/mob/living/simple_animal/hostile/mining_mobs/elites/pandora.dm +++ b/code/modules/mob/living/simple_animal/hostile/mining_mobs/elites/pandora.dm @@ -28,8 +28,9 @@ health = 800 melee_damage_lower = 15 melee_damage_upper = 15 - attack_verb_continuous = "smashes into the side of" - attack_verb_simple = "smash into the side of" + attacktext = "smashes into the side of" + /*attack_verb_continuous = "smashes into the side of" + attack_verb_simple = "smash into the side of"*/ attack_sound = 'sound/weapons/sonic_jackhammer.ogg' throw_message = "merely dinks off of the" speed = 4 diff --git a/code/modules/mob/mob_defines.dm b/code/modules/mob/mob_defines.dm index 0cb886f11b..a9f4c94397 100644 --- a/code/modules/mob/mob_defines.dm +++ b/code/modules/mob/mob_defines.dm @@ -99,6 +99,12 @@ var/obj/control_object //Used by admins to possess objects. All mobs should have this var var/atom/movable/remote_control //Calls relaymove() to whatever it is + /** + * The sound made on death + * + * leave null for no sound. used for *deathgasp + */ + var/deathsound = null var/turf/listed_turf = null //the current turf being examined in the stat panel From 1d0438800e9152a73800697c1f4e74b1c43ba823 Mon Sep 17 00:00:00 2001 From: Useroth Date: Sun, 8 Dec 2019 17:04:11 +0100 Subject: [PATCH 22/61] Touched up a copy-paste leftover. --- .../living/simple_animal/hostile/mining_mobs/elites/elite.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/modules/mob/living/simple_animal/hostile/mining_mobs/elites/elite.dm b/code/modules/mob/living/simple_animal/hostile/mining_mobs/elites/elite.dm index 36abd92b40..04a1b4a468 100644 --- a/code/modules/mob/living/simple_animal/hostile/mining_mobs/elites/elite.dm +++ b/code/modules/mob/living/simple_animal/hostile/mining_mobs/elites/elite.dm @@ -142,7 +142,7 @@ While using this makes the system rely on OnFire, it still gives options for tim /obj/item/gps/internal/elite icon_state = null gpstag = "Menacing Signal" - desc = "You're not quite sure how a signal can be bloody." + desc = "You're not quite sure how a signal can be menacing." invisibility = 100 /obj/structure/elite_tumor/attack_hand(mob/user) From be3439e461e39a0e16375302eea4bf9bf465c654 Mon Sep 17 00:00:00 2001 From: kappa-sama <44128284+kappa-sama@users.noreply.github.com> Date: Wed, 11 Dec 2019 16:57:06 -0500 Subject: [PATCH 23/61] idk maybe? --- code/modules/mob/living/carbon/human/human.dm | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/code/modules/mob/living/carbon/human/human.dm b/code/modules/mob/living/carbon/human/human.dm index 13b57b0715..b07a00e6d2 100644 --- a/code/modules/mob/living/carbon/human/human.dm +++ b/code/modules/mob/living/carbon/human/human.dm @@ -866,9 +866,13 @@ piggyback(target) return //If you dragged them to you and you're aggressively grabbing try to fireman carry them - else if(user != target && user.a_intent == INTENT_HELP) - fireman_carry(target) + else if(user != target) + if(user.a_intent != INTENT_HELP) + to_chat(user, "You need to be in help intent to do that!") return + else if(user.a_intent == INTENT_HELP) + fireman_carry(target) + return . = ..() //src is the user that will be carrying, target is the mob to be carried From 2b8f81bca3036ed0b013e651b9df37187428c5d5 Mon Sep 17 00:00:00 2001 From: kappa-sama <44128284+kappa-sama@users.noreply.github.com> Date: Wed, 11 Dec 2019 17:22:14 -0500 Subject: [PATCH 24/61] idk maybe --- code/modules/mob/living/carbon/human/human.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/modules/mob/living/carbon/human/human.dm b/code/modules/mob/living/carbon/human/human.dm index b07a00e6d2..bd61140faa 100644 --- a/code/modules/mob/living/carbon/human/human.dm +++ b/code/modules/mob/living/carbon/human/human.dm @@ -867,7 +867,7 @@ return //If you dragged them to you and you're aggressively grabbing try to fireman carry them else if(user != target) - if(user.a_intent != INTENT_HELP) + if(user.a_intent == INTENT_GRAB || INTENT_DISARM || INTENT_HARM) to_chat(user, "You need to be in help intent to do that!") return else if(user.a_intent == INTENT_HELP) From b89d04884e9f06d41b6dbc011d116f0cc4b4a893 Mon Sep 17 00:00:00 2001 From: kappa-sama <44128284+kappa-sama@users.noreply.github.com> Date: Wed, 11 Dec 2019 17:23:00 -0500 Subject: [PATCH 25/61] indents oops --- code/modules/mob/living/carbon/human/human.dm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/code/modules/mob/living/carbon/human/human.dm b/code/modules/mob/living/carbon/human/human.dm index bd61140faa..0501a2a5ea 100644 --- a/code/modules/mob/living/carbon/human/human.dm +++ b/code/modules/mob/living/carbon/human/human.dm @@ -868,8 +868,8 @@ //If you dragged them to you and you're aggressively grabbing try to fireman carry them else if(user != target) if(user.a_intent == INTENT_GRAB || INTENT_DISARM || INTENT_HARM) - to_chat(user, "You need to be in help intent to do that!") - return + to_chat(user, "You need to be in help intent to do that!") + return else if(user.a_intent == INTENT_HELP) fireman_carry(target) return From acffa683c917aa8c4c40a60e2ee91a10dd134dea Mon Sep 17 00:00:00 2001 From: Linzolle Date: Thu, 12 Dec 2019 00:40:08 -0600 Subject: [PATCH 26/61] clearer message? --- code/modules/mob/living/carbon/human/human.dm | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/code/modules/mob/living/carbon/human/human.dm b/code/modules/mob/living/carbon/human/human.dm index 3ae2e3bdbd..3ab5407875 100644 --- a/code/modules/mob/living/carbon/human/human.dm +++ b/code/modules/mob/living/carbon/human/human.dm @@ -890,7 +890,10 @@ return visible_message("[src] fails to fireman carry [target]!") else - to_chat(src, "You can't fireman carry [target] while they're standing!") + if (ishuman(target)) + to_chat(src, "You can't fireman carry [target] while they're standing!") + else + to_chat(src, "You can't seem to fireman carry that kind of species.") /mob/living/carbon/human/proc/piggyback(mob/living/carbon/target) if(can_piggyback(target)) From f565c1cd3cb5d14b8cff23ea78668a9c6597eaf6 Mon Sep 17 00:00:00 2001 From: Seris02 Date: Thu, 12 Dec 2019 18:48:25 +0800 Subject: [PATCH 27/61] adds some distance checks --- code/game/objects/structures/window.dm | 7 +++++++ code/modules/modular_computers/hardware/ai_slot.dm | 7 +++++++ code/modules/modular_computers/hardware/card_slot.dm | 7 +++++++ 3 files changed, 21 insertions(+) diff --git a/code/game/objects/structures/window.dm b/code/game/objects/structures/window.dm index 9dee1e26cc..58588c5693 100644 --- a/code/game/objects/structures/window.dm +++ b/code/game/objects/structures/window.dm @@ -285,6 +285,13 @@ . += new /obj/item/shard(location) /obj/structure/window/proc/can_be_rotated(mob/user,rotation_type) + if (get_dist(src,user) > 1) + if (iscarbon(user)) + var/mob/living/carbon/H = user + if (!(H.dna && H.dna.check_mutation(TK) && tkMaxRangeCheck(src,H))) + return FALSE + else + return FALSE if(anchored) to_chat(user, "[src] cannot be rotated while it is fastened to the floor!") return FALSE diff --git a/code/modules/modular_computers/hardware/ai_slot.dm b/code/modules/modular_computers/hardware/ai_slot.dm index 47cbbff418..8428467a87 100644 --- a/code/modules/modular_computers/hardware/ai_slot.dm +++ b/code/modules/modular_computers/hardware/ai_slot.dm @@ -41,6 +41,13 @@ /obj/item/computer_hardware/ai_slot/try_eject(slot=0,mob/living/user = null,forced = 0) + if (get_dist(src,user) > 1) + if (iscarbon(user)) + var/mob/living/carbon/H = user + if (!(H.dna && H.dna.check_mutation(TK) && tkMaxRangeCheck(src,H))) + return FALSE + else + return FALSE if(!stored_card) to_chat(user, "There is no card in \the [src].") return FALSE diff --git a/code/modules/modular_computers/hardware/card_slot.dm b/code/modules/modular_computers/hardware/card_slot.dm index c68e1ad119..b233221c0d 100644 --- a/code/modules/modular_computers/hardware/card_slot.dm +++ b/code/modules/modular_computers/hardware/card_slot.dm @@ -73,6 +73,13 @@ /obj/item/computer_hardware/card_slot/try_eject(slot=0, mob/living/user = null, forced = 0) + if (get_dist(src,user) > 1) + if (iscarbon(user)) + var/mob/living/carbon/H = user + if (!(H.dna && H.dna.check_mutation(TK) && tkMaxRangeCheck(src,H))) + return FALSE + else + return FALSE if(!stored_card && !stored_card2) to_chat(user, "There are no cards in \the [src].") return FALSE From 7b75612ad1ac0ebc94e597ae341cf97fed508e45 Mon Sep 17 00:00:00 2001 From: Seris02 <49109742+Seris02@users.noreply.github.com> Date: Thu, 12 Dec 2019 19:21:23 +0800 Subject: [PATCH 28/61] woops --- code/modules/modular_computers/hardware/card_slot.dm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/code/modules/modular_computers/hardware/card_slot.dm b/code/modules/modular_computers/hardware/card_slot.dm index b233221c0d..e4bc45dbc5 100644 --- a/code/modules/modular_computers/hardware/card_slot.dm +++ b/code/modules/modular_computers/hardware/card_slot.dm @@ -76,8 +76,8 @@ if (get_dist(src,user) > 1) if (iscarbon(user)) var/mob/living/carbon/H = user - if (!(H.dna && H.dna.check_mutation(TK) && tkMaxRangeCheck(src,H))) - return FALSE + if (!(H.dna && H.dna.check_mutation(TK) && tkMaxRangeCheck(src,H))) + return FALSE else return FALSE if(!stored_card && !stored_card2) From bc2e6a7f9b72cd82da58520aba160bf92e824e89 Mon Sep 17 00:00:00 2001 From: Ghommie <42542238+Ghommie@users.noreply.github.com> Date: Thu, 12 Dec 2019 17:35:35 +0100 Subject: [PATCH 29/61] Ports "Fixes powernet avail checks" --- code/modules/power/apc.dm | 4 ++-- code/modules/power/cable.dm | 4 ++-- code/modules/power/power.dm | 4 ++-- 3 files changed, 6 insertions(+), 6 deletions(-) diff --git a/code/modules/power/apc.dm b/code/modules/power/apc.dm index 5e3888a8c5..474424fe3f 100644 --- a/code/modules/power/apc.dm +++ b/code/modules/power/apc.dm @@ -1113,9 +1113,9 @@ if(terminal && terminal.powernet) terminal.add_load(amount) -/obj/machinery/power/apc/avail() +/obj/machinery/power/apc/avail(amount) if(terminal) - return terminal.avail() + return terminal.avail(amount) else return 0 diff --git a/code/modules/power/cable.dm b/code/modules/power/cable.dm index a3dc6e7394..cc03976f79 100644 --- a/code/modules/power/cable.dm +++ b/code/modules/power/cable.dm @@ -217,9 +217,9 @@ By design, d1 is the smallest direction and d2 is the highest else return 0 -/obj/structure/cable/proc/avail() +/obj/structure/cable/proc/avail(amount) if(powernet) - return powernet.avail + return amount ? powernet.avail >= amount : powernet.avail else return 0 diff --git a/code/modules/power/power.dm b/code/modules/power/power.dm index 58a259de3a..d2d3d60066 100644 --- a/code/modules/power/power.dm +++ b/code/modules/power/power.dm @@ -46,9 +46,9 @@ else return 0 -/obj/machinery/power/proc/avail() +/obj/machinery/power/proc/avail(amount) if(powernet) - return powernet.avail + return amount ? powernet.avail >= amount : powernet.avail else return 0 From 221291f525b8a0f3592482e22b7456eb6b6aad00 Mon Sep 17 00:00:00 2001 From: Ghommie <42542238+Ghommie@users.noreply.github.com> Date: Fri, 13 Dec 2019 08:02:39 +0100 Subject: [PATCH 30/61] Fixing some not safe for work oddity. --- modular_citadel/code/modules/arousal/organs/breasts.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modular_citadel/code/modules/arousal/organs/breasts.dm b/modular_citadel/code/modules/arousal/organs/breasts.dm index a82d02703d..f4ba95d830 100644 --- a/modular_citadel/code/modules/arousal/organs/breasts.dm +++ b/modular_citadel/code/modules/arousal/organs/breasts.dm @@ -119,7 +119,7 @@ shape = D.features["breasts_shape"] fluid_id = D.features["breasts_fluid"] if(!D.features["breasts_producing"]) - DISABLE_BITFIELD(genital_flags, GENITAL_FUID_PRODUCTION) + DISABLE_BITFIELD(genital_flags, GENITAL_FUID_PRODUCTION|CAN_CLIMAX_WITH|CAN_MASTURBATE_WITH) if(!isnum(size)) cached_size = breast_values[size] else From b39ae815f314d26b2847d91afa1babb3556ce252 Mon Sep 17 00:00:00 2001 From: Ghommie <42542238+Ghommie@users.noreply.github.com> Date: Fri, 13 Dec 2019 16:12:04 +0100 Subject: [PATCH 31/61] Porting several quirks code updates. --- code/__HELPERS/cmp.dm | 20 ++++- code/__HELPERS/unsorted.dm | 10 ++- .../subsystem/processing/quirks.dm | 30 +++++--- code/controllers/subsystem/ticker.dm | 4 +- code/datums/components/mood.dm | 9 --- code/datums/datacore.dm | 2 +- code/datums/datumvars.dm | 26 +++++++ code/datums/traits/good.dm | 20 +++++ code/datums/traits/negative.dm | 13 +++- code/datums/traits/neutral.dm | 6 +- code/modules/client/preferences.dm | 75 ++++++++----------- code/modules/client/preferences_savefile.dm | 11 --- code/modules/hydroponics/grown/replicapod.dm | 2 +- code/modules/mob/living/carbon/human/human.dm | 1 + code/modules/mob/living/status_procs.dm | 30 ++++---- .../chemistry/reagents/other_reagents.dm | 2 +- 16 files changed, 163 insertions(+), 98 deletions(-) diff --git a/code/__HELPERS/cmp.dm b/code/__HELPERS/cmp.dm index f7131e63fa..4a86f57fcd 100644 --- a/code/__HELPERS/cmp.dm +++ b/code/__HELPERS/cmp.dm @@ -95,4 +95,22 @@ GLOBAL_VAR_INIT(cmp_field, "name") return sorttext(A.sample_object.name, B.sample_object.name) /proc/cmp_numbered_displays_name_dsc(datum/numbered_display/A, datum/numbered_display/B) - return sorttext(B.sample_object.name, A.sample_object.name) \ No newline at end of file + return sorttext(B.sample_object.name, A.sample_object.name) + +/proc/cmp_quirk_asc(datum/quirk/A, datum/quirk/B) + var/a_sign = num2sign(initial(A.value) * -1) + var/b_sign = num2sign(initial(B.value) * -1) + + // Neutral traits go last. + if(a_sign == 0) + a_sign = 2 + if(b_sign == 0) + b_sign = 2 + + var/a_name = initial(A.name) + var/b_name = initial(B.name) + + if(a_sign != b_sign) + return a_sign - b_sign + else + return sorttext(b_name, a_name) \ No newline at end of file diff --git a/code/__HELPERS/unsorted.dm b/code/__HELPERS/unsorted.dm index 9abe42ea8e..29f5331fd3 100644 --- a/code/__HELPERS/unsorted.dm +++ b/code/__HELPERS/unsorted.dm @@ -1548,4 +1548,12 @@ GLOBAL_DATUM_INIT(dview_mob, /mob/dview, new) /proc/CallAsync(datum/source, proctype, list/arguments) set waitfor = FALSE - return call(source, proctype)(arglist(arguments)) \ No newline at end of file + return call(source, proctype)(arglist(arguments)) + +/proc/num2sign(numeric) + if(numeric > 0) + return 1 + else if(numeric < 0) + return -1 + else + return 0 diff --git a/code/controllers/subsystem/processing/quirks.dm b/code/controllers/subsystem/processing/quirks.dm index 4af54b8c70..f96690126a 100644 --- a/code/controllers/subsystem/processing/quirks.dm +++ b/code/controllers/subsystem/processing/quirks.dm @@ -12,27 +12,40 @@ PROCESSING_SUBSYSTEM_DEF(quirks) var/list/quirk_names_by_path = list() var/list/quirk_points = list() //Assoc. list of quirk names and their "point cost"; positive numbers are good traits, and negative ones are bad var/list/quirk_objects = list() //A list of all quirk objects in the game, since some may process + var/list/quirk_blacklist = list() //A list a list of quirks that can not be used with each other. Format: list(quirk1,quirk2),list(quirk3,quirk4) /datum/controller/subsystem/processing/quirks/Initialize(timeofday) if(!quirks.len) SetupQuirks() + quirk_blacklist = list(list("Blind","Nearsighted"),list("Jolly","Depression","Apathetic"),list("Ageusia","Deviant Tastes"),list("Ananas Affinity","Ananas Aversion")) return ..() /datum/controller/subsystem/processing/quirks/proc/SetupQuirks() - for(var/V in subtypesof(/datum/quirk)) +// Sort by Positive, Negative, Neutral; and then by name + var/list/quirk_list = sortList(subtypesof(/datum/quirk), /proc/cmp_quirk_asc) + + for(var/V in quirk_list) var/datum/quirk/T = V quirks[initial(T.name)] = T quirk_points[initial(T.name)] = initial(T.value) quirk_names_by_path[T] = initial(T.name) /datum/controller/subsystem/processing/quirks/proc/AssignQuirks(mob/living/user, client/cli, spawn_effects, roundstart = FALSE, datum/job/job, silent = FALSE, mob/to_chat_target) - GenerateQuirks(cli) - var/list/quirks = cli.prefs.character_quirks.Copy() + var/badquirk = FALSE + var/list/my_quirks = cli.prefs.all_quirks.Copy() var/list/cut - if(job && job.blacklisted_quirks) + if(job?.blacklisted_quirks) cut = filter_quirks(quirks, job) - for(var/V in quirks) - user.add_quirk(V, spawn_effects) + for(var/V in my_quirks) + var/datum/quirk/Q = quirks[V] + if(Q) + user.add_quirk(Q, spawn_effects) + else + stack_trace("Invalid quirk \"[V]\" in client [cli.ckey] preferences") + cli.prefs.all_quirks -= V + badquirk = TRUE + if(badquirk) + cli.prefs.save_character() if(!silent && LAZYLEN(cut)) to_chat(to_chat_target || user, "All of your non-neutral character quirks have been cut due to these quirks conflicting with your job assignment: [english_list(cut)].") @@ -85,8 +98,3 @@ PROCESSING_SUBSYSTEM_DEF(quirks) quirks -= i return cut - -/datum/controller/subsystem/processing/quirks/proc/GenerateQuirks(client/user) - if(user.prefs.character_quirks.len) - return - user.prefs.character_quirks = user.prefs.all_quirks diff --git a/code/controllers/subsystem/ticker.dm b/code/controllers/subsystem/ticker.dm index 6f619fef0b..890725fbb1 100755 --- a/code/controllers/subsystem/ticker.dm +++ b/code/controllers/subsystem/ticker.dm @@ -384,8 +384,8 @@ SUBSYSTEM_DEF(ticker) captainless=0 if(player.mind.assigned_role != player.mind.special_role) SSjob.EquipRank(N, player.mind.assigned_role, 0) - if(CONFIG_GET(flag/roundstart_traits) && ishuman(N.new_character)) - SSquirks.AssignQuirks(N.new_character, N.client, TRUE, TRUE, SSjob.GetJob(player.mind.assigned_role), FALSE, N) + if(CONFIG_GET(flag/roundstart_traits) && ishuman(N.new_character)) + SSquirks.AssignQuirks(N.new_character, N.client, TRUE, TRUE, SSjob.GetJob(player.mind.assigned_role), FALSE, N) CHECK_TICK if(captainless) for(var/mob/dead/new_player/N in GLOB.player_list) diff --git a/code/datums/components/mood.dm b/code/datums/components/mood.dm index a0e6f97de0..2ecd77546d 100644 --- a/code/datums/components/mood.dm +++ b/code/datums/components/mood.dm @@ -150,15 +150,6 @@ if(9) setSanity(sanity+0.4, maximum=SANITY_GREAT) - if(HAS_TRAIT(owner, TRAIT_DEPRESSION)) - if(prob(0.05)) - add_event(null, "depression", /datum/mood_event/depression) - clear_event(null, "jolly") - if(HAS_TRAIT(owner, TRAIT_JOLLY)) - if(prob(0.05)) - add_event(null, "jolly", /datum/mood_event/jolly) - clear_event(null, "depression") - HandleNutrition(owner) /datum/component/mood/proc/setSanity(amount, minimum=SANITY_INSANE, maximum=SANITY_NEUTRAL)//I'm sure bunging this in here will have no negative repercussions. diff --git a/code/datums/datacore.dm b/code/datums/datacore.dm index 60bb24c8c2..cf33fa3633 100644 --- a/code/datums/datacore.dm +++ b/code/datums/datacore.dm @@ -255,7 +255,7 @@ M.fields["alg_d"] = "No allergies have been detected in this patient." M.fields["cdi"] = "None" M.fields["cdi_d"] = "No diseases have been diagnosed at the moment." - M.fields["notes"] = "No notes." + M.fields["notes"] = H.get_trait_string(medical) medical += M //Security Record diff --git a/code/datums/datumvars.dm b/code/datums/datumvars.dm index e44134f01f..feac1de972 100644 --- a/code/datums/datumvars.dm +++ b/code/datums/datumvars.dm @@ -1398,3 +1398,29 @@ var/mob/living/carbon/human/H = locate(href_list["copyoutfit"]) in GLOB.carbon_list if(istype(H)) H.copy_outfit() + else if(href_list["modquirks"]) + if(!check_rights(R_SPAWN)) + return + + var/mob/living/carbon/human/H = locate(href_list["modquirks"]) in GLOB.mob_list + if(!istype(H)) + to_chat(usr, "This can only be done to instances of type /mob/living/carbon/human") + return + + var/list/options = list("Clear"="Clear") + for(var/x in subtypesof(/datum/quirk)) + var/datum/quirk/T = x + var/qname = initial(T.name) + options[H.has_quirk(T) ? "[qname] (Remove)" : "[qname] (Add)"] = T + + var/result = input(usr, "Choose quirk to add/remove","Quirk Mod") as null|anything in options + if(result) + if(result == "Clear") + for(var/datum/quirk/q in H.roundstart_quirks) + H.remove_quirk(q.type) + else + var/T = options[result] + if(H.has_quirk(T)) + H.remove_quirk(T) + else + H.add_quirk(T,TRUE) diff --git a/code/datums/traits/good.dm b/code/datums/traits/good.dm index 09a4f0b060..15ac70a2c7 100644 --- a/code/datums/traits/good.dm +++ b/code/datums/traits/good.dm @@ -8,12 +8,14 @@ mob_trait = TRAIT_ALCOHOL_TOLERANCE gain_text = "You feel like you could drink a whole keg!" lose_text = "You don't feel as resistant to alcohol anymore. Somehow." + medical_record_text = "Patient demonstrates a high tolerance for alcohol." /datum/quirk/apathetic name = "Apathetic" desc = "You just don't care as much as other people. That's nice to have in a place like this, I guess." value = 1 mood_quirk = TRUE + medical_record_text = "Patient was administered the Apathy Evaluation Scale but did not bother to complete it." /datum/quirk/apathetic/add() var/datum/component/mood/mood = quirk_holder.GetComponent(/datum/component/mood) @@ -42,6 +44,7 @@ mob_trait = TRAIT_EMPATH gain_text = "You feel in tune with those around you." lose_text = "You feel isolated from others." + medical_record_text = "Patient is highly perceptive of and sensitive to social cues, or may possibly have ESP. Further testing needed." /datum/quirk/freerunning name = "Freerunning" @@ -50,6 +53,7 @@ mob_trait = TRAIT_FREERUNNING gain_text = "You feel lithe on your feet!" lose_text = "You feel clumsy again." + medical_record_text = "Patient scored highly on cardio tests." /datum/quirk/friendly name = "Friendly" @@ -59,6 +63,7 @@ gain_text = "You want to hug someone." lose_text = "You no longer feel compelled to hug others." mood_quirk = TRUE + medical_record_text = "Patient demonstrates low-inhibitions for physical contact and well-developed arms. Requesting another doctor take over this case." /datum/quirk/jolly name = "Jolly" @@ -66,6 +71,11 @@ value = 1 mob_trait = TRAIT_JOLLY mood_quirk = TRUE + medical_record_text = "Patient demonstrates constant euthymia irregular for environment. It's a bit much, to be honest." + +/datum/quirk/jolly/on_process() + if(prob(0.05)) + SEND_SIGNAL(quirk_holder, COMSIG_ADD_MOOD_EVENT, "jolly", /datum/mood_event/jolly) /datum/quirk/light_step name = "Light Step" @@ -74,6 +84,7 @@ mob_trait = TRAIT_LIGHT_STEP gain_text = "You walk with a little more litheness." lose_text = "You start tromping around like a barbarian." + medical_record_text = "Patient's dexterity belies a strong capacity for stealth." /datum/quirk/quick_step name = "Quick Step" @@ -82,6 +93,7 @@ mob_trait = TRAIT_SPEEDY_STEP gain_text = "You feel determined. No time to lose." lose_text = "You feel less determined. What's the rush, man?" + medical_record_text = "Patient scored highly on racewalking tests." /datum/quirk/musician name = "Musician" @@ -90,6 +102,7 @@ mob_trait = TRAIT_MUSICIAN gain_text = "You know everything about musical instruments." lose_text = "You forget how musical instruments work." + medical_record_text = "Patient brain scans show a highly-developed auditory pathway." /datum/quirk/musician/on_spawn() var/mob/living/carbon/human/H = quirk_holder @@ -108,6 +121,7 @@ mob_trait = TRAIT_PHOTOGRAPHER gain_text = "You know everything about photography." lose_text = "You forget how photo cameras work." + medical_record_text = "Patient mentions photography as a stress-relieving hobby." /datum/quirk/photographer/on_spawn() var/mob/living/carbon/human/H = quirk_holder @@ -121,12 +135,14 @@ desc = "You know your body well, and can accurately assess the extent of your wounds." value = 2 mob_trait = TRAIT_SELF_AWARE + medical_record_text = "Patient demonstrates an uncanny knack for self-diagnosis." /datum/quirk/skittish name = "Skittish" desc = "You can conceal yourself in danger. Ctrl-shift-click a closed locker to jump into it, as long as you have access." value = 2 mob_trait = TRAIT_SKITTISH + medical_record_text = "Patient demonstrates a high aversion to danger and has described hiding in containers out of fear." /datum/quirk/spiritual name = "Spiritual" @@ -135,6 +151,7 @@ mob_trait = TRAIT_SPIRITUAL gain_text = "You feel a little more faithful to the gods today." lose_text = "You feel less faithful in the gods." + medical_record_text = "Patient reports a belief in a higher power." /datum/quirk/tagger name = "Tagger" @@ -143,6 +160,7 @@ mob_trait = TRAIT_TAGGER gain_text = "You know how to tag walls efficiently." lose_text = "You forget how to tag walls properly." + medical_record_text = "Patient was recently seen for possible paint huffing incident." /datum/quirk/tagger/on_spawn() var/mob/living/carbon/human/H = quirk_holder @@ -158,6 +176,7 @@ mob_trait = TRAIT_VORACIOUS gain_text = "You feel HONGRY." lose_text = "You no longer feel HONGRY." + medical_record_text = "Patient demonstrates a disturbing capacity for eating." /datum/quirk/trandening name = "High Luminosity Eyes" @@ -179,6 +198,7 @@ mob_trait = TRAIT_HIGH_BLOOD gain_text = "You feel full of blood!" lose_text = "You feel like your blood pressure went down." + medical_record_text = "Patient's blood tests report an abnormal concentration of red blood cells in their bloodstream." /datum/quirk/bloodpressure/add() var/mob/living/M = quirk_holder diff --git a/code/datums/traits/negative.dm b/code/datums/traits/negative.dm index 178e1aaeb0..63bb9f45ed 100644 --- a/code/datums/traits/negative.dm +++ b/code/datums/traits/negative.dm @@ -22,14 +22,19 @@ value = -1 gain_text = "You start feeling depressed." lose_text = "You no longer feel depressed." //if only it were that easy! - medical_record_text = "Patient has a severe mood disorder causing them to experience sudden moments of sadness." + medical_record_text = "Patient has a severe mood disorder, causing them to experience acute episodes of depression." mood_quirk = TRUE +/datum/quirk/depression/on_process() + if(prob(0.05)) + SEND_SIGNAL(quirk_holder, COMSIG_ADD_MOOD_EVENT, "depression", /datum/mood_event/depression) + /datum/quirk/family_heirloom name = "Family Heirloom" desc = "You are the current owner of an heirloom, passed down for generations. You have to keep it safe!" value = -1 mood_quirk = TRUE + medical_record_text = "Patient demonstrates an unnatural attachment to a family heirloom." var/obj/item/heirloom var/where @@ -143,6 +148,7 @@ name = "Nyctophobia" desc = "As far as you can remember, you've always been afraid of the dark. While in the dark without a light source, you instinctually act careful, and constantly feel a sense of dread." value = -1 + medical_record_text = "Patient demonstrates a fear of the dark. (Seriously?)" /datum/quirk/nyctophobia/on_process() var/mob/living/carbon/human/H = quirk_holder @@ -163,7 +169,8 @@ desc = "Bright lights irritate you. Your eyes start to water, your skin feels itchy against the photon radiation, and your hair gets dry and frizzy. Maybe it's a medical condition. If only Nanotrasen was more considerate of your needs..." value = -1 gain_text = "The safty of light feels off..." - lose_text = "Enlighing." + lose_text = "Enlightening." + medical_record_text = "Despite my warnings, the patient refuses turn on the lights, only to end up rolling down a full flight of stairs and into the cellar." /datum/quirk/lightless/on_process() var/turf/T = get_turf(quirk_holder) @@ -373,7 +380,7 @@ value = -4 gain_text = "You can't see anything." lose_text = "You miraculously gain back your vision." - medical_record_text = "Subject has permanent blindness." + medical_record_text = "Patient has permanent blindness." /datum/quirk/blindness/add() quirk_holder.become_blind(ROUNDSTART_TRAIT) diff --git a/code/datums/traits/neutral.dm b/code/datums/traits/neutral.dm index 9e05af03b6..eae2db6a5f 100644 --- a/code/datums/traits/neutral.dm +++ b/code/datums/traits/neutral.dm @@ -16,6 +16,7 @@ value = 0 gain_text = "You feel an intense craving for pineapple." lose_text = "Your feelings towards pineapples seem to return to a lukewarm state." + medical_record_text = "Patient demonstrates a pathological love of pineapple." /datum/quirk/pineapple_liker/add() var/mob/living/carbon/human/H = quirk_holder @@ -34,6 +35,7 @@ value = 0 gain_text = "You find yourself pondering what kind of idiot actually enjoys pineapples..." lose_text = "Your feelings towards pineapples seem to return to a lukewarm state." + medical_record_text = "Patient is correct to think that pineapple is disgusting." /datum/quirk/pineapple_hater/add() var/mob/living/carbon/human/H = quirk_holder @@ -52,6 +54,7 @@ value = 0 gain_text = "You start craving something that tastes strange." lose_text = "You feel like eating normal food again." + medical_record_text = "Patient demonstrates irregular nutrition preferences." /datum/quirk/deviant_tastes/add() var/mob/living/carbon/human/H = quirk_holder @@ -92,7 +95,7 @@ value = 0 gain_text = "You feel more prudish." lose_text = "You don't feel as prudish as before." - medical_record_text = "Patient exhibits a special gene that makes them immune to Crocin and Hexacrocin." + medical_record_text = "Patient exhibits a special gene that makes them immune to aphrodisiacs." /datum/quirk/libido name = "Nymphomania" @@ -134,6 +137,7 @@ value = 0 mob_trait = TRAIT_PHARMA lose_text = "Your liver feels different." + medical_record_text = "Non-invasive tests report that the patient's metabolism is indeed incompatible with a certain \"stimulants\"." var/active = FALSE var/power = 0 var/cachedmoveCalc = 1 diff --git a/code/modules/client/preferences.dm b/code/modules/client/preferences.dm index c476e5a310..b35e996bc6 100644 --- a/code/modules/client/preferences.dm +++ b/code/modules/client/preferences.dm @@ -170,12 +170,8 @@ GLOBAL_LIST_EMPTY(preferences_datums) var/prefered_security_department = SEC_DEPT_RANDOM var/custom_species = null - //Quirk list - var/list/positive_quirks = list() - var/list/negative_quirks = list() - var/list/neutral_quirks = list() + //Quirk list var/list/all_quirks = list() - var/list/character_quirks = list() //Job preferences 2.0 - indexed by job title , no key or value implies never var/list/job_preferences = list() @@ -1200,7 +1196,7 @@ GLOBAL_LIST_EMPTY(preferences_datums) dat += "

Done
" dat += "
" dat += "
Current quirks: [all_quirks.len ? all_quirks.Join(", ") : "None"]
" - dat += "
[positive_quirks.len] / [MAX_QUIRKS] max positive quirks
\ + dat += "
[GetPositiveQuirkCount()] / [MAX_QUIRKS] max positive quirks
\ Quirk balance remaining: [GetQuirkBalance()]

" for(var/V in SSquirks.quirks) var/datum/quirk/T = SSquirks.quirks[V] @@ -1231,12 +1227,12 @@ GLOBAL_LIST_EMPTY(preferences_datums) LOCKED: [lock_reason]
" else if(has_quirk) - dat += "[quirk_name] - [initial(T.desc)] \ - [has_quirk ? "Lose" : "Take"] ([quirk_cost] pts.)
" + dat += "[has_quirk ? "Remove" : "Take"] ([quirk_cost] pts.) \ + [quirk_name] - [initial(T.desc)]
" else - dat += "[quirk_name] - [initial(T.desc)] \ - [has_quirk ? "Lose" : "Take"] ([quirk_cost] pts.)
" - dat += "
Reset Traits
" + dat += "[has_quirk ? "Remove" : "Take"] ([quirk_cost] pts.) \ + [quirk_name] - [initial(T.desc)]
" + dat += "
Reset Quirks
" var/datum/browser/popup = new(user, "mob_occupation", "
Quirk Preferences
", 900, 600) //no reason not to reuse the occupation window, as it's cleaner that way popup.set_window_options("can_close=0") @@ -1250,6 +1246,12 @@ GLOBAL_LIST_EMPTY(preferences_datums) bal -= initial(T.value) return bal +/datum/preferences/proc/GetPositiveQuirkCount() + . = 0 + for(var/q in all_quirks) + if(SSquirks.quirk_points[q] > 0) + .++ + /datum/preferences/Topic(href, href_list, hsrc) //yeah, gotta do this I guess.. . = ..() if(href_list["close"]) @@ -1315,43 +1317,30 @@ GLOBAL_LIST_EMPTY(preferences_datums) var/quirk = href_list["trait"] if(!SSquirks.quirks[quirk]) return + for(var/V in SSquirks.quirk_blacklist) //V is a list + var/list/L = V + for(var/Q in all_quirks) + if((quirk in L) && (Q in L) && !(Q == quirk)) //two quirks have lined up in the list of the list of quirks that conflict with each other, so return (see quirks.dm for more details) + to_chat(user, "[quirk] is incompatible with [Q].") + return var/value = SSquirks.quirk_points[quirk] - if(value == 0) - if(quirk in neutral_quirks) - neutral_quirks -= quirk - all_quirks -= quirk - else - neutral_quirks += quirk - all_quirks += quirk + var/balance = GetQuirkBalance() + if(quirk in all_quirks) + if(balance + value < 0) + to_chat(user, "Refunding this would cause you to go below your balance!") + return + all_quirks -= quirk else - var/balance = GetQuirkBalance() - if(quirk in positive_quirks) - positive_quirks -= quirk - all_quirks -= quirk - else if(quirk in negative_quirks) - if(balance + value < 0) - to_chat(user, "Refunding this would cause you to go below your balance!") - return - negative_quirks -= quirk - all_quirks -= quirk - else if(value > 0) - if(positive_quirks.len >= MAX_QUIRKS) - to_chat(user, "You can't have more than [MAX_QUIRKS] positive quirks!") - return - if(balance - value < 0) - to_chat(user, "You don't have enough balance to gain this quirk!") - return - positive_quirks += quirk - all_quirks += quirk - else - negative_quirks += quirk - all_quirks += quirk + if(GetPositiveQuirkCount() >= MAX_QUIRKS) + to_chat(user, "You can't have more than [MAX_QUIRKS] positive quirks!") + return + if(balance - value < 0) + to_chat(user, "You don't have enough balance to gain this quirk!") + return + all_quirks += quirk SetQuirks(user) if("reset") all_quirks = list() - positive_quirks = list() - negative_quirks = list() - neutral_quirks = list() SetQuirks(user) else SetQuirks(user) diff --git a/code/modules/client/preferences_savefile.dm b/code/modules/client/preferences_savefile.dm index 29ea8f5821..f7f49a66af 100644 --- a/code/modules/client/preferences_savefile.dm +++ b/code/modules/client/preferences_savefile.dm @@ -112,7 +112,6 @@ SAVEFILE UPDATING/VERSIONING - 'Simplified', or rather, more coder-friendly ~Car if(current_version < 24 && S["feature_exhibitionist"]) var/datum/quirk/exhibitionism/E var/quirk_name = initial(E.name) - neutral_quirks += quirk_name all_quirks += quirk_name /datum/preferences/proc/load_path(ckey,filename="preferences.sav") @@ -386,9 +385,6 @@ SAVEFILE UPDATING/VERSIONING - 'Simplified', or rather, more coder-friendly ~Car //Quirks S["all_quirks"] >> all_quirks - S["positive_quirks"] >> positive_quirks - S["negative_quirks"] >> negative_quirks - S["neutral_quirks"] >> neutral_quirks //Citadel code S["feature_genitals_use_skintone"] >> features["genitals_use_skintone"] @@ -519,10 +515,6 @@ SAVEFILE UPDATING/VERSIONING - 'Simplified', or rather, more coder-friendly ~Car all_quirks = SANITIZE_LIST(all_quirks) - positive_quirks = SANITIZE_LIST(positive_quirks) - negative_quirks = SANITIZE_LIST(negative_quirks) - neutral_quirks = SANITIZE_LIST(neutral_quirks) - cit_character_pref_load(S) return 1 @@ -598,9 +590,6 @@ SAVEFILE UPDATING/VERSIONING - 'Simplified', or rather, more coder-friendly ~Car //Quirks WRITE_FILE(S["all_quirks"] , all_quirks) - WRITE_FILE(S["positive_quirks"] , positive_quirks) - WRITE_FILE(S["negative_quirks"] , negative_quirks) - WRITE_FILE(S["neutral_quirks"] , neutral_quirks) cit_character_pref_save(S) diff --git a/code/modules/hydroponics/grown/replicapod.dm b/code/modules/hydroponics/grown/replicapod.dm index ce0ca0220b..bac480bee6 100644 --- a/code/modules/hydroponics/grown/replicapod.dm +++ b/code/modules/hydroponics/grown/replicapod.dm @@ -41,7 +41,7 @@ blood_type = B.data["blood_type"] features = B.data["features"] factions = B.data["factions"] - factions = B.data["quirks"] + quirks = B.data["quirks"] contains_sample = TRUE visible_message("The [src] is injected with a fresh blood sample.") else diff --git a/code/modules/mob/living/carbon/human/human.dm b/code/modules/mob/living/carbon/human/human.dm index 3ae2e3bdbd..3483b65753 100644 --- a/code/modules/mob/living/carbon/human/human.dm +++ b/code/modules/mob/living/carbon/human/human.dm @@ -858,6 +858,7 @@ .["Make slime"] = "?_src_=vars;[HrefToken()];makeslime=[REF(src)]" .["Toggle Purrbation"] = "?_src_=vars;[HrefToken()];purrbation=[REF(src)]" .["Copy outfit"] = "?_src_=vars;[HrefToken()];copyoutfit=[REF(src)]" + .["Add/Remove Quirks"] = "?_src_=vars;[HrefToken()];modquirks=[REF(src)]" /mob/living/carbon/human/MouseDrop_T(mob/living/target, mob/living/user) if(pulling == target && grab_state >= GRAB_AGGRESSIVE && stat == CONSCIOUS) diff --git a/code/modules/mob/living/status_procs.dm b/code/modules/mob/living/status_procs.dm index 0880f7f432..facc86da46 100644 --- a/code/modules/mob/living/status_procs.dm +++ b/code/modules/mob/living/status_procs.dm @@ -140,24 +140,28 @@ /////////////////////////////////// DISABILITIES //////////////////////////////////// -/mob/living/proc/add_quirk(quirk, spawn_effects) //separate proc due to the way these ones are handled - if(HAS_TRAIT(src, quirk)) +/mob/living/proc/add_quirk(quirktype, spawn_effects) //separate proc due to the way these ones are handled + if(has_quirk(quirktype)) return - if(!SSquirks || !SSquirks.quirks[quirk]) + var/datum/quirk/T = quirktype + var/qname = initial(T.name) + if(!SSquirks || !SSquirks.quirks[qname]) return - var/datum/quirk/T = SSquirks.quirks[quirk] - new T (src, spawn_effects) + new quirktype (src, spawn_effects) return TRUE -/mob/living/proc/remove_quirk(quirk) - var/datum/quirk/T = roundstart_quirks[quirk] - if(T) - qdel(T) - return TRUE - -/mob/living/proc/has_quirk(quirk) - return roundstart_quirks[quirk] +/mob/living/proc/remove_quirk(quirktype) + for(var/datum/quirk/Q in roundstart_quirks) + if(Q.type == quirktype) + qdel(Q) + return TRUE + return FALSE +/mob/living/proc/has_quirk(quirktype) + for(var/datum/quirk/Q in roundstart_quirks) + if(Q.type == quirktype) + return TRUE + return FALSE /////////////////////////////////// TRAIT PROCS //////////////////////////////////// /mob/living/proc/cure_blind(list/sources) diff --git a/code/modules/reagents/chemistry/reagents/other_reagents.dm b/code/modules/reagents/chemistry/reagents/other_reagents.dm index bb65392057..312254163b 100644 --- a/code/modules/reagents/chemistry/reagents/other_reagents.dm +++ b/code/modules/reagents/chemistry/reagents/other_reagents.dm @@ -1,5 +1,5 @@ /datum/reagent/blood - data = list("donor"=null,"viruses"=null,"blood_DNA"=null, "bloodcolor" = BLOOD_COLOR_HUMAN, "blood_type"= null,"resistances"=null,"trace_chem"=null,"mind"=null,"ckey"=null,"gender"=null,"real_name"=null,"cloneable"=null,"factions"=null) + data = list("donor"=null,"viruses"=null,"blood_DNA"=null, "bloodcolor" = BLOOD_COLOR_HUMAN, "blood_type"= null,"resistances"=null,"trace_chem"=null,"mind"=null,"ckey"=null,"gender"=null,"real_name"=null,"cloneable"=null,"factions"=null,"quirks"=null) name = "Blood" id = "blood" value = 1 From 3891c91799ea03e6f506a13117a70127f2a94b09 Mon Sep 17 00:00:00 2001 From: Ghommie <42542238+Ghommie@users.noreply.github.com> Date: Sat, 14 Dec 2019 17:19:48 +0100 Subject: [PATCH 32/61] virtual reality component improvements, fixes and documentation. --- code/__DEFINES/components.dm | 11 +- code/datums/components/_component.dm | 4 +- code/datums/components/bane.dm | 2 + code/datums/components/bouncy.dm | 2 + code/datums/components/decal.dm | 2 + code/datums/components/fantasy/_fantasy.dm | 2 + code/datums/components/igniter.dm | 2 + code/datums/components/knockback.dm | 2 + code/datums/components/lifesteal.dm | 2 + code/datums/components/nanites.dm | 2 + code/datums/components/orbiter.dm | 2 + code/datums/components/shrapnel.dm | 2 + code/datums/components/summoning.dm | 2 + code/datums/components/tactical.dm | 2 + code/datums/components/virtual_reality.dm | 234 ++++++++++++++------- code/datums/components/wet_floor.dm | 2 + code/game/machinery/_machinery.dm | 5 +- code/modules/VR/vr_mob.dm | 2 +- code/modules/VR/vr_sleeper.dm | 64 +++--- code/modules/mob/dead/observer/observer.dm | 2 +- code/modules/mob/living/death.dm | 11 +- 21 files changed, 237 insertions(+), 122 deletions(-) diff --git a/code/__DEFINES/components.dm b/code/__DEFINES/components.dm index 4f56b07fe7..aab8b340be 100644 --- a/code/__DEFINES/components.dm +++ b/code/__DEFINES/components.dm @@ -36,8 +36,10 @@ ////////////////////////////////////////////////////////////////// // /datum signals -#define COMSIG_COMPONENT_ADDED "component_added" //when a component is added to a datum: (/datum/component) -#define COMSIG_COMPONENT_REMOVING "component_removing" //before a component is removed from a datum because of RemoveComponent: (/datum/component) +#define COMSIG_COMPONENT_ADDED "component_added" //sent to the new datum parent when a component is added to them: (/datum/component) +#define COMSIG_COMPONENT_REMOVING "component_removing" //sent to the datum parent before a component is removed from them because of RemoveComponent: (/datum/component) +#define COMSIG_COMPONENT_UNREGISTER_PARENT "component_unregister_parent" //sent to the component itself when unregistered from a parent +#define COMSIG_COMPONENT_REGISTER_PARENT "component_register_parent" //sent to the component itself when registered to a parent #define COMSIG_PARENT_PREQDELETED "parent_preqdeleted" //before a datum's Destroy() is called: (force), returning a nonzero value will cancel the qdel operation #define COMSIG_PARENT_QDELETING "parent_qdeleting" //just before a datum's Destroy() is called: (force), at this point none of the other components chose to interrupt qdel and Destroy will be called @@ -140,7 +142,7 @@ #define HEARING_RAW_MESSAGE 4 /* #define HEARING_RADIO_FREQ 5 #define HEARING_SPANS 6 - #define HEARING_MESSAGE_MODE 7 + #define HEARING_MESSAGE_MODE 7 #define HEARING_SOURCE 8*/ #define COMSIG_MOVABLE_DISPOSING "movable_disposing" //called when the movable is added to a disposal holder object for disposal movement: (obj/structure/disposalholder/holder, obj/machinery/disposal/source) #define COMSIG_MOVABLE_TELEPORTED "movable_teleported" //from base of do_teleport(): (channel, turf/origin, turf/destination) @@ -152,7 +154,8 @@ #define COMSIG_MOB_EXAMINATE "mob_examinate" //from base of /mob/verb/examinate(): (atom/A) #define COMPONENT_ALLOW_EXAMINE 1 #define COMSIG_MOB_DEATH "mob_death" //from base of mob/death(): (gibbed) -#define COMSIG_MOB_GHOSTIZE "mob_ghostize" //from base of mob/Ghostize(): (can_reenter_corpse) + #define COMPONENT_BLOCK_DEATH_BROADCAST 1 //stops the death from being broadcasted in deathchat. +#define COMSIG_MOB_GHOSTIZE "mob_ghostize" //from base of mob/Ghostize(): (can_reenter_corpse, special, penalize) #define COMPONENT_BLOCK_GHOSTING 1 #define COMSIG_MOB_ALLOWED "mob_allowed" //from base of obj/allowed(mob/M): (/obj) returns bool, if TRUE the mob has id access to the obj #define COMSIG_MOB_RECEIVE_MAGIC "mob_receive_magic" //from base of mob/anti_magic_check(): (mob/user, magic, holy, tinfoil, chargecost, self, protection_sources) diff --git a/code/datums/components/_component.dm b/code/datums/components/_component.dm index f938a70308..72b9681f91 100644 --- a/code/datums/components/_component.dm +++ b/code/datums/components/_component.dm @@ -53,7 +53,7 @@ // If you want/expect to be moving the component around between parents, use this to register on the parent for signals /datum/component/proc/RegisterWithParent() - return + SEND_SIGNAL(src, COMSIG_COMPONENT_REGISTER_PARENT) //CITADEL EDIT /datum/component/proc/Initialize(...) return @@ -85,7 +85,7 @@ UnregisterFromParent() /datum/component/proc/UnregisterFromParent() - return + SEND_SIGNAL(src, COMSIG_COMPONENT_UNREGISTER_PARENT) //CITADEL EDIT /datum/proc/RegisterSignal(datum/target, sig_type_or_types, proctype, override = FALSE) if(QDELETED(src) || QDELETED(target)) diff --git a/code/datums/components/bane.dm b/code/datums/components/bane.dm index 84f8010270..bdfcfed517 100644 --- a/code/datums/components/bane.dm +++ b/code/datums/components/bane.dm @@ -19,12 +19,14 @@ src.damage_multiplier = damage_multiplier /datum/component/bane/RegisterWithParent() + . = ..() if(speciestype) RegisterSignal(parent, COMSIG_ITEM_AFTERATTACK, .proc/speciesCheck) else RegisterSignal(parent, COMSIG_ITEM_AFTERATTACK, .proc/mobCheck) /datum/component/bane/UnregisterFromParent() + . = ..() UnregisterSignal(parent, COMSIG_ITEM_AFTERATTACK) /datum/component/bane/proc/speciesCheck(obj/item/source, atom/target, mob/user, proximity_flag, click_parameters) diff --git a/code/datums/components/bouncy.dm b/code/datums/components/bouncy.dm index f6a2a89195..c7ca85455b 100644 --- a/code/datums/components/bouncy.dm +++ b/code/datums/components/bouncy.dm @@ -21,9 +21,11 @@ RegisterSignal(parent, bounce, .proc/bounce_up) /datum/component/bouncy/RegisterWithParent() + . = ..() RegisterSignal(parent, bounce_signals, .proc/bounce_up) /datum/component/bouncy/UnregisterFromParent() + . = ..() UnregisterSignal(parent, bounce_signals) /datum/component/bouncy/proc/bounce_up(datum/source) diff --git a/code/datums/components/decal.dm b/code/datums/components/decal.dm index 641dbdb1cf..60317797a7 100644 --- a/code/datums/components/decal.dm +++ b/code/datums/components/decal.dm @@ -17,6 +17,7 @@ apply() /datum/component/decal/RegisterWithParent() + . = ..() if(first_dir) RegisterSignal(parent, COMSIG_ATOM_DIR_CHANGE, .proc/rotate_react) if(cleanable) @@ -25,6 +26,7 @@ RegisterSignal(parent, COMSIG_PARENT_EXAMINE, .proc/examine) /datum/component/decal/UnregisterFromParent() + . = ..() UnregisterSignal(parent, list(COMSIG_ATOM_DIR_CHANGE, COMSIG_COMPONENT_CLEAN_ACT, COMSIG_PARENT_EXAMINE)) /datum/component/decal/Destroy() diff --git a/code/datums/components/fantasy/_fantasy.dm b/code/datums/components/fantasy/_fantasy.dm index 86e016784a..9e8493b6f4 100644 --- a/code/datums/components/fantasy/_fantasy.dm +++ b/code/datums/components/fantasy/_fantasy.dm @@ -30,11 +30,13 @@ return ..() /datum/component/fantasy/RegisterWithParent() + . = ..() var/obj/item/master = parent originalName = master.name modify() /datum/component/fantasy/UnregisterFromParent() + . = ..() unmodify() /datum/component/fantasy/InheritComponent(datum/component/fantasy/newComp, original, list/arguments) diff --git a/code/datums/components/igniter.dm b/code/datums/components/igniter.dm index b40383e828..13944b1200 100644 --- a/code/datums/components/igniter.dm +++ b/code/datums/components/igniter.dm @@ -9,6 +9,7 @@ src.fire_stacks = fire_stacks /datum/component/igniter/RegisterWithParent() + . = ..() if(ismachinery(parent) || isstructure(parent) || isgun(parent)) // turrets, etc RegisterSignal(parent, COMSIG_PROJECTILE_ON_HIT, .proc/projectile_hit) else if(isitem(parent)) @@ -17,6 +18,7 @@ RegisterSignal(parent, COMSIG_HOSTILE_ATTACKINGTARGET, .proc/hostile_attackingtarget) /datum/component/igniter/UnregisterFromParent() + . = ..() UnregisterSignal(parent, list(COMSIG_ITEM_AFTERATTACK, COMSIG_HOSTILE_ATTACKINGTARGET, COMSIG_PROJECTILE_ON_HIT)) /datum/component/igniter/proc/item_afterattack(obj/item/source, atom/target, mob/user, proximity_flag, click_parameters) diff --git a/code/datums/components/knockback.dm b/code/datums/components/knockback.dm index b4fcaa2dd8..988a0e575e 100644 --- a/code/datums/components/knockback.dm +++ b/code/datums/components/knockback.dm @@ -10,6 +10,7 @@ src.throw_anchored = throw_anchored /datum/component/knockback/RegisterWithParent() + . = ..() if(ismachinery(parent) || isstructure(parent) || isgun(parent)) // turrets, etc RegisterSignal(parent, COMSIG_PROJECTILE_ON_HIT, .proc/projectile_hit) else if(isitem(parent)) @@ -18,6 +19,7 @@ RegisterSignal(parent, COMSIG_HOSTILE_ATTACKINGTARGET, .proc/hostile_attackingtarget) /datum/component/knockback/UnregisterFromParent() + . = ..() UnregisterSignal(parent, list(COMSIG_ITEM_AFTERATTACK, COMSIG_HOSTILE_ATTACKINGTARGET, COMSIG_PROJECTILE_ON_HIT)) /datum/component/knockback/proc/item_afterattack(obj/item/source, atom/target, mob/user, proximity_flag, click_parameters) diff --git a/code/datums/components/lifesteal.dm b/code/datums/components/lifesteal.dm index c7a78e10a3..9d62d32866 100644 --- a/code/datums/components/lifesteal.dm +++ b/code/datums/components/lifesteal.dm @@ -10,6 +10,7 @@ src.flat_heal = flat_heal /datum/component/lifesteal/RegisterWithParent() + . = ..() if(isgun(parent)) RegisterSignal(parent, COMSIG_PROJECTILE_ON_HIT, .proc/projectile_hit) else if(isitem(parent)) @@ -18,6 +19,7 @@ RegisterSignal(parent, COMSIG_HOSTILE_ATTACKINGTARGET, .proc/hostile_attackingtarget) /datum/component/lifesteal/UnregisterFromParent() + . = ..() UnregisterSignal(parent, list(COMSIG_ITEM_AFTERATTACK, COMSIG_HOSTILE_ATTACKINGTARGET, COMSIG_PROJECTILE_ON_HIT)) /datum/component/lifesteal/proc/item_afterattack(obj/item/source, atom/target, mob/user, proximity_flag, click_parameters) diff --git a/code/datums/components/nanites.dm b/code/datums/components/nanites.dm index 362961a24f..0ef13b514b 100644 --- a/code/datums/components/nanites.dm +++ b/code/datums/components/nanites.dm @@ -34,6 +34,7 @@ cloud_sync() /datum/component/nanites/RegisterWithParent() + . = ..() RegisterSignal(parent, COMSIG_HAS_NANITES, .proc/confirm_nanites) RegisterSignal(parent, COMSIG_NANITE_UI_DATA, .proc/nanite_ui_data) RegisterSignal(parent, COMSIG_NANITE_GET_PROGRAMS, .proc/get_programs) @@ -57,6 +58,7 @@ RegisterSignal(parent, COMSIG_NANITE_SIGNAL, .proc/receive_signal) /datum/component/nanites/UnregisterFromParent() + . = ..() UnregisterSignal(parent, list(COMSIG_HAS_NANITES, COMSIG_NANITE_UI_DATA, COMSIG_NANITE_GET_PROGRAMS, diff --git a/code/datums/components/orbiter.dm b/code/datums/components/orbiter.dm index efa0fd14d5..05174c196b 100644 --- a/code/datums/components/orbiter.dm +++ b/code/datums/components/orbiter.dm @@ -20,12 +20,14 @@ begin_orbit(orbiter, radius, clockwise, rotation_speed, rotation_segments, pre_rotation) /datum/component/orbiter/RegisterWithParent() + . = ..() var/atom/target = parent while(ismovableatom(target)) RegisterSignal(target, COMSIG_MOVABLE_MOVED, .proc/move_react) target = target.loc /datum/component/orbiter/UnregisterFromParent() + . = ..() var/atom/target = parent while(ismovableatom(target)) UnregisterSignal(target, COMSIG_MOVABLE_MOVED) diff --git a/code/datums/components/shrapnel.dm b/code/datums/components/shrapnel.dm index a911221f26..4d1fe21b95 100644 --- a/code/datums/components/shrapnel.dm +++ b/code/datums/components/shrapnel.dm @@ -13,10 +13,12 @@ src.override_projectile_range = override_projectile_range /datum/component/shrapnel/RegisterWithParent() + . = ..() if(ismachinery(parent) || isstructure(parent) || isgun(parent)) // turrets, etc RegisterSignal(parent, COMSIG_PROJECTILE_ON_HIT, .proc/projectile_hit) /datum/component/shrapnel/UnregisterFromParent() + . = ..() UnregisterSignal(parent, list(COMSIG_PROJECTILE_ON_HIT)) /datum/component/shrapnel/proc/projectile_hit(atom/fired_from, atom/movable/firer, atom/target, Angle) diff --git a/code/datums/components/summoning.dm b/code/datums/components/summoning.dm index 552959603d..61718301b3 100644 --- a/code/datums/components/summoning.dm +++ b/code/datums/components/summoning.dm @@ -24,6 +24,7 @@ src.faction = faction /datum/component/summoning/RegisterWithParent() + . = ..() if(ismachinery(parent) || isstructure(parent) || isgun(parent)) // turrets, etc RegisterSignal(parent, COMSIG_PROJECTILE_ON_HIT, .proc/projectile_hit) else if(isitem(parent)) @@ -32,6 +33,7 @@ RegisterSignal(parent, COMSIG_HOSTILE_ATTACKINGTARGET, .proc/hostile_attackingtarget) /datum/component/summoning/UnregisterFromParent() + . = ..() UnregisterSignal(parent, list(COMSIG_ITEM_AFTERATTACK, COMSIG_HOSTILE_ATTACKINGTARGET, COMSIG_PROJECTILE_ON_HIT)) /datum/component/summoning/proc/item_afterattack(obj/item/source, atom/target, mob/user, proximity_flag, click_parameters) diff --git a/code/datums/components/tactical.dm b/code/datums/components/tactical.dm index 5917fc3009..ba028e2fd5 100644 --- a/code/datums/components/tactical.dm +++ b/code/datums/components/tactical.dm @@ -9,10 +9,12 @@ src.allowed_slot = allowed_slot /datum/component/tactical/RegisterWithParent() + . = ..() RegisterSignal(parent, COMSIG_ITEM_EQUIPPED, .proc/modify) RegisterSignal(parent, COMSIG_ITEM_DROPPED, .proc/unmodify) /datum/component/tactical/UnregisterFromParent() + . = ..() UnregisterSignal(parent, list(COMSIG_ITEM_EQUIPPED, COMSIG_ITEM_DROPPED)) unmodify() diff --git a/code/datums/components/virtual_reality.dm b/code/datums/components/virtual_reality.dm index 7bad836e47..bd48676541 100644 --- a/code/datums/components/virtual_reality.dm +++ b/code/datums/components/virtual_reality.dm @@ -1,128 +1,204 @@ +/** + * The virtual reality turned component. + * Originally created to overcome issues of mob polymorphing locking the player inside virtual reality + * and allow for a more "realistic" virtual reality in a virtual reality experience. + * (I was there when VR sleepers were first tested on /tg/station, it was whacky.) + * In short, a barebone not so hardcoded VR framework. + * If you plan to add more devices that make use of this component, remember to isolate their specific code outta here where possible. + */ /datum/component/virtual_reality can_transfer = TRUE - var/datum/mind/mastermind // where is my mind t. pixies + //the player's mind (not the parent's), should something happen to them or to their mob. + var/datum/mind/mastermind + //the current mob's mind, which we need to keep track for mind transfer. var/datum/mind/current_mind - var/obj/machinery/vr_sleeper/vr_sleeper + //the action datum used by the mob to quit the vr session. var/datum/action/quit_vr/quit_action + //This one's name should be self explainatory, currently used for emags. var/you_die_in_the_game_you_die_for_real = FALSE - var/datum/component/virtual_reality/inception //The component works on a very fragile link betwixt mind, ckey and death. + //Used to allow people to play recursively playing vr while playing vr without many issues. + var/datum/component/virtual_reality/inception + //Used to stop the component from executing certain functions that'd cause us some issues otherwise. + //FALSE if there is a connected player, otherwise TRUE. + var/session_paused = TRUE + //Used to stop unwarranted behaviour from happening in cases where the master mind transference is unsupported. Set on Initialize(). + var/allow_mastermind_transfer = FALSE -/datum/component/virtual_reality/Initialize(mob/M, obj/machinery/vr_sleeper/gaming_pod, yolo = FALSE, new_char = TRUE) - if(!ismob(parent) || !istype(M)) - return COMPONENT_INCOMPATIBLE +/datum/component/virtual_reality/Initialize(yolo = FALSE, _allow_mastermind_transfer = FALSE) var/mob/vr_M = parent - mastermind = M.mind - RegisterSignal(M, list(COMSIG_MOB_DEATH, COMSIG_PARENT_QDELETING), .proc/game_over) - RegisterSignal(M, COMSIG_MOB_KEY_CHANGE, .proc/switch_player) - RegisterSignal(mastermind, COMSIG_MIND_TRANSFER, .proc/switch_player) + if(!istype(vr_M) || !vr_M.mind) + return COMPONENT_INCOMPATIBLE you_die_in_the_game_you_die_for_real = yolo - quit_action = new() - if(gaming_pod) - vr_sleeper = gaming_pod - RegisterSignal(vr_sleeper, COMSIG_ATOM_EMAG_ACT, .proc/you_only_live_once) - RegisterSignal(vr_sleeper, COMSIG_MACHINE_EJECT_OCCUPANT, .proc/revert_to_reality) - vr_M.ckey = M.ckey - var/datum/component/virtual_reality/clusterfk = M.GetComponent(/datum/component/virtual_reality) - if(clusterfk && !clusterfk.inception) - clusterfk.inception = src - SStgui.close_user_uis(M, src) + allow_mastermind_transfer = _allow_mastermind_transfer + quit_action = new + +/datum/component/virtual_reality/Destroy() + QDEL_NULL(quit_action) + return ..() /datum/component/virtual_reality/RegisterWithParent() + . = ..() var/mob/M = parent current_mind = M.mind + if(!quit_action) + quit_action = new quit_action.Grant(M) - RegisterSignal(quit_action, COMSIG_ACTION_TRIGGER, .proc/revert_to_reality) + RegisterSignal(quit_action, COMSIG_ACTION_TRIGGER, .proc/action_trigger) RegisterSignal(M, list(COMSIG_MOB_DEATH, COMSIG_PARENT_QDELETING), .proc/game_over) RegisterSignal(M, COMSIG_MOB_GHOSTIZE, .proc/be_a_quitter) RegisterSignal(M, COMSIG_MOB_KEY_CHANGE, .proc/pass_me_the_remote) RegisterSignal(current_mind, COMSIG_MIND_TRANSFER, .proc/pass_me_the_remote) - mastermind.current.audiovisual_redirect = M - if(vr_sleeper) - vr_sleeper.vr_mob = M + if(mastermind) + mastermind.current.audiovisual_redirect = M /datum/component/virtual_reality/UnregisterFromParent() - quit_action.Remove(parent) + . = ..() + if(quit_action) + quit_action.Remove(parent) + UnregisterSignal(quit_action, COMSIG_ACTION_TRIGGER) UnregisterSignal(parent, list(COMSIG_MOB_DEATH, COMSIG_PARENT_QDELETING, COMSIG_MOB_KEY_CHANGE, COMSIG_MOB_GHOSTIZE)) UnregisterSignal(current_mind, COMSIG_MIND_TRANSFER) - UnregisterSignal(quit_action, COMSIG_ACTION_TRIGGER) current_mind = null - mastermind.current.audiovisual_redirect = null + if(mastermind) + mastermind.current.audiovisual_redirect = null +/** + * Called when attempting to connect a mob to a virtual reality mob. + * This will return FALSE if the mob is without player or dead. + */ +/datum/component/virtual_reality/proc/connect(mob/M) + if(!M.mind || M.stat == DEAD) + return FALSE + RegisterSignal(M, list(COMSIG_MOB_DEATH, COMSIG_PARENT_QDELETING), .proc/game_over) + mastermind = M.mind + RegisterSignal(mastermind, COMSIG_MIND_TRANSFER, .proc/switch_player) + var/datum/component/virtual_reality/clusterfk = M.GetComponent(/datum/component/virtual_reality) + if(clusterfk) + clusterfk.inception = src + var/mob/vr_M = parent + SStgui.close_user_uis(M, src) + M.transfer_ckey(vr_M, FALSE) + session_paused = FALSE + return TRUE + +/** + * Called when the mastermind mind is transferred to another mob. + * This is pretty much going to simply quit the session until machineries support polymorphed occupants etcetera. + */ /datum/component/virtual_reality/proc/switch_player(datum/source, mob/new_mob, mob/old_mob) - if(vr_sleeper || !new_mob.mind) - // Machineries currently don't deal up with the occupant being polymorphed et similar... Or did something fuck up? - revert_to_reality() + if(!allow_mastermind_transfer) + quit() return old_mob.audiovisual_redirect = null new_mob.audiovisual_redirect = parent -/datum/component/virtual_reality/proc/action_trigger(datum/signal_source, datum/action/source) - if(source != quit_action) - return COMPONENT_ACTION_BLOCK_TRIGGER - revert_to_reality(signal_source) - +/** + * VR sleeper emag_act() hook. + */ /datum/component/virtual_reality/proc/you_only_live_once() - if(you_die_in_the_game_you_die_for_real || vr_sleeper?.only_current_user_can_interact) + if(you_die_in_the_game_you_die_for_real) return FALSE you_die_in_the_game_you_die_for_real = TRUE return TRUE +/** + * Takes care of moving the component from a mob to another when their mind or ckey is transferred. + * The very reason this component even exists (else one would be stuck playing as a monky if monkyified) + * Should the new mob happen to be one of the virtual realities ultimately associated the player + * a 180° turn will be done and quit the session instead. + */ /datum/component/virtual_reality/proc/pass_me_the_remote(datum/source, mob/new_mob) - if(new_mob == mastermind.current) - revert_to_reality(source) - return TRUE + if(mastermind && new_mob == mastermind.current) + quit() + return + var/datum/component/virtual_reality/VR = new_mob.GetComponent(/datum/component/virtual_reality) + if(VR.inception) + var/datum/component/virtual_reality/VR2 = VR.inception + var/emergency_quit = FALSE + while(VR2) + if(VR2 == src) + emergency_quit = TRUE + break + VR2 = VR2.inception + if(emergency_quit) + VR.inception.quit() //this will make the ckey revert back to the new mob. + return new_mob.TakeComponent(src) - return TRUE +/** + * Required for the component to be transferable from mob to mob. + */ /datum/component/virtual_reality/PostTransfer() if(!ismob(parent)) return COMPONENT_INCOMPATIBLE +/** + *The following procs simply acts as hooks for quit(), since components do not use callbacks anymore + */ +/datum/component/virtual_reality/proc/action_trigger(datum/signal_source, datum/action/source) + quit() + return COMPONENT_ACTION_BLOCK_TRIGGER + /datum/component/virtual_reality/proc/revert_to_reality(datum/source) - quit_it() + quit() /datum/component/virtual_reality/proc/game_over(datum/source) - quit_it(TRUE, TRUE) + quit(you_die_in_the_game_you_die_for_real, TRUE) + return COMPONENT_BLOCK_DEATH_BROADCAST -/datum/component/virtual_reality/proc/be_a_quitter(datum/source, can_reenter_corpse) - quit_it() - return COMPONENT_BLOCK_GHOSTING +/datum/component/virtual_reality/proc/be_a_quitter(datum/source, can_reenter_corpse, special = FALSE, penalize = FALSE) + if(!special) + quit() + return COMPONENT_BLOCK_GHOSTING -/datum/component/virtual_reality/proc/virtual_reality_in_a_virtual_reality(mob/player, killme = FALSE, datum/component/virtual_reality/yo_dawg) +/datum/component/virtual_reality/proc/machine_destroyed(datum/source) + quit(cleanup = TRUE) + +/** + * Takes care of deleting itself, moving the player back to the mastermind's current and queueing the parent for deletion. + * It supports nested virtual realities by recursively calling vr_in_a_vr(), which in turns calls quit(), + * up to the deepest level, where the ckey will be transferred back to our mastermind's mob instead. + * The above operation is skipped when session_paused is TRUE (ergo no player in control of the current mob). + * vars: + * * deathcheck is used to kill the master, you want this FALSE unless for stuff that doesn't involve emagging. + * * cleanup is used to queue the parent for the next vr_clean_master's run, where they'll be deleted should they be dead. + * * mob/override is used for the recursive virtual reality explained above and shouldn't be used outside of vr_in_a_vr(). + */ +/datum/component/virtual_reality/proc/quit(deathcheck = FALSE, cleanup = FALSE, mob/override) var/mob/M = parent - quit_it(FALSE, killme, player, yo_dawg) - yo_dawg.inception = null - if(killme) - M.death(FALSE) - -/datum/component/virtual_reality/proc/quit_it(deathcheck = FALSE, cleanup = FALSE, mob/override) - var/mob/M = parent - var/mob/dreamer = override ? override : mastermind.current - if(!mastermind) - to_chat(M, "You feel a dreadful sensation, something terrible happened. You try to wake up, but you find yourself unable to...") - else - var/key_transfer = FALSE + if(!session_paused) + var/mob/dreamer = override || mastermind?.current + if(!dreamer) //This should NEVER happen. + stack_trace("virtual reality component quit() called without a mob to transfer the parent key to.") + to_chat(M, "You feel a dreadful sensation, something terrible happened. You try to wake up, but you find yourself unable to...") + qdel(src) + return if(inception?.parent) - inception.virtual_reality_in_a_virtual_reality(dreamer, cleanup, src) - else - key_transfer = TRUE - if(key_transfer) + inception.vr_in_a_vr(dreamer, deathcheck, cleanup, src) + else if(M.ckey) M.transfer_ckey(dreamer, FALSE) - dreamer.stop_sound_channel(CHANNEL_HEARTBEAT) - dreamer.audiovisual_redirect = null - if(deathcheck && you_die_in_the_game_you_die_for_real) - to_chat(mastermind, "You feel everything fading away...") - dreamer.death(FALSE) - if(cleanup) - var/obj/effect/vr_clean_master/cleanbot = locate() in get_area(M) - if(cleanbot) - LAZYADD(cleanbot.corpse_party, M) - if(vr_sleeper) - vr_sleeper.vr_mob = null - vr_sleeper = null - qdel(src) + if(deathcheck) + to_chat(dreamer, "You feel everything fading away...") + dreamer.death(FALSE) + dreamer.stop_sound_channel(CHANNEL_HEARTBEAT) + dreamer.audiovisual_redirect = null + if(cleanup) + var/obj/effect/vr_clean_master/cleanbot = locate() in get_area(M) + if(cleanbot) + LAZYOR(cleanbot.corpse_party, M) + qdel(src) + else if(mastermind) + UnregisterSignal(mastermind.current, list(COMSIG_MOB_DEATH, COMSIG_PARENT_QDELETING)) + UnregisterSignal(mastermind, COMSIG_MIND_TRANSFER) + mastermind = null + session_paused = TRUE -/datum/component/virtual_reality/Destroy() - var/datum/action/quit_vr/delet_me = quit_action - . = ..() - qdel(delet_me) \ No newline at end of file +/** + * Used for recursive virtual realities shenanigeans and should be called only through the above proc. + */ +/datum/component/virtual_reality/proc/vr_in_a_vr(mob/player, deathcheck = FALSE, cleanup = FALSE, datum/component/virtual_reality/yo_dawg) + var/mob/M = parent + quit(deathcheck, cleanup, player, yo_dawg) + yo_dawg.inception = null + if(deathcheck && cleanup) + M.death(FALSE) diff --git a/code/datums/components/wet_floor.dm b/code/datums/components/wet_floor.dm index 38b17993d8..d6c5c0bf83 100644 --- a/code/datums/components/wet_floor.dm +++ b/code/datums/components/wet_floor.dm @@ -34,10 +34,12 @@ last_process = world.time /datum/component/wet_floor/RegisterWithParent() + . = ..() RegisterSignal(parent, COMSIG_TURF_IS_WET, .proc/is_wet) RegisterSignal(parent, COMSIG_TURF_MAKE_DRY, .proc/dry) /datum/component/wet_floor/UnregisterFromParent() + . = ..() UnregisterSignal(parent, list(COMSIG_TURF_IS_WET, COMSIG_TURF_MAKE_DRY)) /datum/component/wet_floor/Destroy() diff --git a/code/game/machinery/_machinery.dm b/code/game/machinery/_machinery.dm index ff7383cd9e..5f44fccdac 100644 --- a/code/game/machinery/_machinery.dm +++ b/code/game/machinery/_machinery.dm @@ -181,8 +181,9 @@ Class Procs: if(isliving(A)) var/mob/living/L = A L.update_canmove() - SEND_SIGNAL(src, COMSIG_MACHINE_EJECT_OCCUPANT, occupant) - occupant = null + if(occupant) + SEND_SIGNAL(src, COMSIG_MACHINE_EJECT_OCCUPANT, occupant) + occupant = null /obj/machinery/proc/can_be_occupant(atom/movable/am) return occupant_typecache ? is_type_in_typecache(am, occupant_typecache) : isliving(am) diff --git a/code/modules/VR/vr_mob.dm b/code/modules/VR/vr_mob.dm index 5c0cea9f60..5f2caffc76 100644 --- a/code/modules/VR/vr_mob.dm +++ b/code/modules/VR/vr_mob.dm @@ -40,5 +40,5 @@ /datum/action/quit_vr/Trigger() //this merely a trigger for /datum/component/virtual_reality . = ..() - if(!.) + if(.) //The component was not there to block the trigger. Remove(owner) diff --git a/code/modules/VR/vr_sleeper.dm b/code/modules/VR/vr_sleeper.dm index 72cbdc1409..b09084bcd7 100644 --- a/code/modules/VR/vr_sleeper.dm +++ b/code/modules/VR/vr_sleeper.dm @@ -52,18 +52,16 @@ flags_1 = NODECONSTRUCT_1 only_current_user_can_interact = TRUE -/obj/machinery/vr_sleeper/hugbox/emag_act(mob/user) - return SEND_SIGNAL(src, COMSIG_ATOM_EMAG_ACT) - /obj/machinery/vr_sleeper/emag_act(mob/user) . = ..() if(!(obj_flags & EMAGGED)) return - obj_flags |= EMAGGED - you_die_in_the_game_you_die_for_real = TRUE - sparks.start() - addtimer(CALLBACK(src, .proc/emagNotify), 150) - return TRUE + if(!only_current_user_can_interact) + obj_flags |= EMAGGED + you_die_in_the_game_you_die_for_real = TRUE + sparks.start() + addtimer(CALLBACK(src, .proc/emagNotify), 150) + return TRUE /obj/machinery/vr_sleeper/update_icon() icon_state = "[initial(icon_state)][state_open ? "-open" : ""]" @@ -76,7 +74,7 @@ return ..() /obj/machinery/vr_sleeper/MouseDrop_T(mob/target, mob/user) - if(user.stat || user.lying || !Adjacent(user) || !user.Adjacent(target) || !iscarbon(target) || !user.IsAdvancedToolUser()) + if(user.lying || !iscarbon(target) || !Adjacent(target) || user.canUseTopic(src, BE_CLOSE, TRUE, NO_TK)) return close_machine(target) @@ -91,22 +89,19 @@ return switch(action) if("vr_connect") - var/mob/living/carbon/human/human_occupant = occupant - if(human_occupant && human_occupant.mind && usr == occupant) - - to_chat(occupant, "Transferring to virtual reality...") - if(vr_mob && (!istype(vr_mob) || !vr_mob.InCritical()) && !vr_mob.GetComponent(/datum/component/virtual_reality)) - vr_mob.AddComponent(/datum/component/virtual_reality, human_occupant, src, you_die_in_the_game_you_die_for_real) - to_chat(vr_mob, "Transfer successful! You are now playing as [vr_mob] in VR!") - else + var/mob/M = occupant + if(M?.mind && M == usr) + to_chat(M, "Transferring to virtual reality...") + var/datum/component/virtual_reality/VR + if(vr_mob) + VR = vr_mob.GetComponent(/datum/component/virtual_reality) + if(!(VR?.connect(M))) if(allow_creating_vr_mobs) to_chat(occupant, "Virtual avatar not found, attempting to create one...") var/obj/effect/landmark/vr_spawn/V = get_vr_spawnpoint() var/turf/T = get_turf(V) if(T) - SStgui.close_user_uis(occupant, src) new_player(occupant, T, V.vr_outfit) - to_chat(vr_mob, "Transfer successful! You are now playing as [vr_mob] in VR!") else to_chat(occupant, "Virtual world misconfigured, aborting transfer") else @@ -157,17 +152,29 @@ for(var/obj/effect/landmark/vr_spawn/V in GLOB.landmarks_list) GLOB.vr_spawnpoints[V.vr_category] = V -/obj/machinery/vr_sleeper/proc/new_player(mob/living/carbon/human/H, location, datum/outfit/outfit, transfer = TRUE) - if(!H) +/obj/machinery/vr_sleeper/proc/new_player(mob/M, location, datum/outfit/outfit, transfer = TRUE) + if(!M) return cleanup_vr_mob() vr_mob = new virtual_mob_type(location) - if(vr_mob.build_virtual_character(H, outfit)) - var/mob/living/carbon/human/vr_H = vr_mob - vr_H.updateappearance(TRUE, TRUE, TRUE) - if(!transfer || !H.mind) - return - vr_mob.AddComponent(/datum/component/virtual_reality, H, src, you_die_in_the_game_you_die_for_real) + if(vr_mob.build_virtual_character(M, outfit) && iscarbon(vr_mob)) + var/mob/living/carbon/C = vr_mob + C.updateappearance(TRUE, TRUE, TRUE) + var/datum/component/virtual_reality/VR = vr_mob.AddComponent(/datum/component/virtual_reality, you_die_in_the_game_you_die_for_real) + if(VR.connect(M)) + RegisterSignal(VR, COMSIG_COMPONENT_UNREGISTER_PARENT, .proc/unset_vr_mob) + RegisterSignal(VR, COMSIG_COMPONENT_REGISTER_PARENT, .proc/set_vr_mob) + if(!only_current_user_can_interact) + VR.RegisterSignal(src, COMSIG_ATOM_EMAG_ACT, /datum/component/virtual_reality.proc/you_only_live_once) + VR.RegisterSignal(src, COMSIG_MACHINE_EJECT_OCCUPANT, /datum/component/virtual_reality.proc/revert_to_reality) + VR.RegisterSignal(src, COMSIG_PARENT_QDELETING, /datum/component/virtual_reality.proc/machine_destroyed) + to_chat(vr_mob, "Transfer successful! You are now playing as [vr_mob] in VR!") + +/obj/machinery/vr_sleeper/proc/unset_vr_mob(datum/component/virtual_reality/VR) + vr_mob = null + +/obj/machinery/vr_sleeper/proc/set_vr_mob(datum/component/virtual_reality/VR) + vr_mob = VR.parent /obj/machinery/vr_sleeper/proc/cleanup_vr_mob() if(vr_mob) @@ -222,6 +229,7 @@ qdel(C) for (var/A in corpse_party) var/mob/M = A - if(get_area(M) == vr_area && M.stat == DEAD) + if(M && M.stat == DEAD && get_area(M) == vr_area) qdel(M) + corpse_party -= M addtimer(CALLBACK(src, .proc/clean_up), 3 MINUTES) diff --git a/code/modules/mob/dead/observer/observer.dm b/code/modules/mob/dead/observer/observer.dm index fbbd43bbe1..5bdfd174b5 100644 --- a/code/modules/mob/dead/observer/observer.dm +++ b/code/modules/mob/dead/observer/observer.dm @@ -265,7 +265,7 @@ Works together with spawning an observer, noted above. /mob/proc/ghostize(can_reenter_corpse = TRUE, special = FALSE, penalize = FALSE) penalize = suiciding || penalize // suicide squad. - if(!key || cmptext(copytext(key,1,2),"@") || (!special && SEND_SIGNAL(src, COMSIG_MOB_GHOSTIZE, can_reenter_corpse) & COMPONENT_BLOCK_GHOSTING)) + if(!key || cmptext(copytext(key,1,2),"@") || (SEND_SIGNAL(src, COMSIG_MOB_GHOSTIZE, can_reenter_corpse, special, penalize) & COMPONENT_BLOCK_GHOSTING)) return //mob has no key, is an aghost or some component hijacked. stop_sound_channel(CHANNEL_HEARTBEAT) //Stop heartbeat sounds because You Are A Ghost Now var/mob/dead/observer/ghost = new(src) // Transfer safety to observer spawning proc. diff --git a/code/modules/mob/living/death.dm b/code/modules/mob/living/death.dm index 0ff418d628..8345ef916d 100644 --- a/code/modules/mob/living/death.dm +++ b/code/modules/mob/living/death.dm @@ -62,12 +62,8 @@ unset_machine() timeofdeath = world.time tod = STATION_TIME_TIMESTAMP("hh:mm:ss") - var/turf/T = get_turf(src) for(var/obj/item/I in contents) I.on_mob_death(src, gibbed) - if(mind && mind.name && mind.active && !istype(T.loc, /area/ctf)) - var/rendered = "[mind.name] has died at [get_area_name(T)]." - deadchat_broadcast(rendered, follow_target = src, turf_target = T, message_type=DEADCHAT_DEATHRATTLE) if(mind) mind.store_memory("Time of death: [tod]", 0) GLOB.alive_mob_list -= src @@ -89,7 +85,12 @@ addtimer(CALLBACK(src, .proc/med_hud_set_status), (DEFIB_TIME_LIMIT * 10) + 1) stop_pulling() - SEND_SIGNAL(src, COMSIG_MOB_DEATH, gibbed) + var/signal = SEND_SIGNAL(src, COMSIG_MOB_DEATH, gibbed) + + var/turf/T = get_turf(src) + if(mind && mind.name && mind.active && !istype(T.loc, /area/ctf) && !(signal & COMPONENT_BLOCK_DEATH_BROADCAST)) + var/rendered = "[mind.name] has died at [get_area_name(T)]." + deadchat_broadcast(rendered, follow_target = src, turf_target = T, message_type=DEADCHAT_DEATHRATTLE) if (client) client.move_delay = initial(client.move_delay) From e5d45faee8be48a4296af96d233dc9c8c2131c39 Mon Sep 17 00:00:00 2001 From: Ghommie <42542238+Ghommie@users.noreply.github.com> Date: Sat, 14 Dec 2019 18:53:53 +0100 Subject: [PATCH 33/61] deadchat, not deathchat. --- code/__DEFINES/components.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/__DEFINES/components.dm b/code/__DEFINES/components.dm index aab8b340be..107631f9cc 100644 --- a/code/__DEFINES/components.dm +++ b/code/__DEFINES/components.dm @@ -154,7 +154,7 @@ #define COMSIG_MOB_EXAMINATE "mob_examinate" //from base of /mob/verb/examinate(): (atom/A) #define COMPONENT_ALLOW_EXAMINE 1 #define COMSIG_MOB_DEATH "mob_death" //from base of mob/death(): (gibbed) - #define COMPONENT_BLOCK_DEATH_BROADCAST 1 //stops the death from being broadcasted in deathchat. + #define COMPONENT_BLOCK_DEATH_BROADCAST 1 //stops the death from being broadcasted in deadchat. #define COMSIG_MOB_GHOSTIZE "mob_ghostize" //from base of mob/Ghostize(): (can_reenter_corpse, special, penalize) #define COMPONENT_BLOCK_GHOSTING 1 #define COMSIG_MOB_ALLOWED "mob_allowed" //from base of obj/allowed(mob/M): (/obj) returns bool, if TRUE the mob has id access to the obj From 70252d291464443d001981b94ea3093d2d44b85e Mon Sep 17 00:00:00 2001 From: Ghommie <42542238+Ghommie@users.noreply.github.com> Date: Sat, 14 Dec 2019 19:20:02 +0100 Subject: [PATCH 34/61] Fixing a few pill bottle issues with the ChemMaster. --- .../chemistry/machinery/chem_dispenser.dm | 2 +- .../chemistry/machinery/chem_master.dm | 34 ++++++++++--------- 2 files changed, 19 insertions(+), 17 deletions(-) diff --git a/code/modules/reagents/chemistry/machinery/chem_dispenser.dm b/code/modules/reagents/chemistry/machinery/chem_dispenser.dm index a3dd3c8049..c6aa51deda 100644 --- a/code/modules/reagents/chemistry/machinery/chem_dispenser.dm +++ b/code/modules/reagents/chemistry/machinery/chem_dispenser.dm @@ -161,7 +161,7 @@ . = ..() if(A == beaker) beaker = null - cut_overlays() + update_icon() /obj/machinery/chem_dispenser/ui_interact(mob/user, ui_key = "main", datum/tgui/ui = null, force_open = FALSE, \ datum/tgui/master_ui = null, datum/ui_state/state = GLOB.default_state) diff --git a/code/modules/reagents/chemistry/machinery/chem_master.dm b/code/modules/reagents/chemistry/machinery/chem_master.dm index 06e33ddf9f..6cd8ee8e8c 100644 --- a/code/modules/reagents/chemistry/machinery/chem_master.dm +++ b/code/modules/reagents/chemistry/machinery/chem_master.dm @@ -58,14 +58,14 @@ if(bottle) bottle.ex_act(severity, target) -/obj/machinery/chem_master/handle_atom_del(atom/A) - ..() +/obj/machinery/chem_master/Exited(atom/movable/A, atom/newloc) + . = ..() if(A == beaker) beaker = null - reagents.clear_reagents() update_icon() - else if(A == bottle) + if(A == bottle) bottle = null + update_icon() /obj/machinery/chem_master/update_icon() cut_overlays() @@ -115,32 +115,33 @@ . = ..() if(!istype(user) || !user.canUseTopic(src, BE_CLOSE, FALSE, NO_TK)) return - replace_beaker(user) + if(beaker) + replace_beaker(user) + else + replace_pillbottle(user) return TRUE /obj/machinery/chem_master/proc/replace_beaker(mob/living/user, obj/item/reagent_containers/new_beaker) if(beaker) - beaker.forceMove(drop_location()) + var/obj/item/reagent_containers/beaker/B = beaker + B.forceMove(drop_location()) if(user && Adjacent(user) && !issiliconoradminghost(user)) - user.put_in_hands(beaker) + B.put_in_hands(beaker) if(new_beaker) beaker = new_beaker - else - beaker = null update_icon() return TRUE /obj/machinery/chem_master/proc/replace_pillbottle(mob/living/user, obj/item/storage/pill_bottle/new_bottle) if(bottle) - bottle.forceMove(drop_location()) + var/obj/item/storage/pill_bottle/B = bottle + B.forceMove(drop_location()) if(user && Adjacent(user) && !issiliconoradminghost(user)) - user.put_in_hands(beaker) + B.put_in_hands(bottle) else - adjust_item_drop_location(bottle) + adjust_item_drop_location(B) if(new_bottle) bottle = new_bottle - else - bottle = null update_icon() return TRUE @@ -261,15 +262,16 @@ if(!name || !reagents.total_volume || !src || QDELETED(src) || !usr.canUseTopic(src, !issilicon(usr))) return var/obj/item/reagent_containers/pill/P - var/target_loc = bottle ? bottle : drop_location() + var/target_loc = drop_location() var/drop_threshold = INFINITY if(bottle) var/datum/component/storage/STRB = bottle.GetComponent(/datum/component/storage) if(STRB) drop_threshold = STRB.max_items - bottle.contents.len + target_loc = bottle for(var/i in 1 to amount) - if(i < drop_threshold) + if(i <= drop_threshold) P = new(target_loc) else P = new(drop_location()) From 6117434c7f04ddb3b3a08de26a322ccbe8305386 Mon Sep 17 00:00:00 2001 From: Ghommie <42542238+Ghommie@users.noreply.github.com> Date: Sat, 14 Dec 2019 19:24:43 +0100 Subject: [PATCH 35/61] Ok --- code/modules/reagents/chemistry/machinery/chem_master.dm | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/code/modules/reagents/chemistry/machinery/chem_master.dm b/code/modules/reagents/chemistry/machinery/chem_master.dm index 6cd8ee8e8c..fec0734092 100644 --- a/code/modules/reagents/chemistry/machinery/chem_master.dm +++ b/code/modules/reagents/chemistry/machinery/chem_master.dm @@ -117,7 +117,7 @@ return if(beaker) replace_beaker(user) - else + else if(bottle) replace_pillbottle(user) return TRUE @@ -130,7 +130,6 @@ if(new_beaker) beaker = new_beaker update_icon() - return TRUE /obj/machinery/chem_master/proc/replace_pillbottle(mob/living/user, obj/item/storage/pill_bottle/new_bottle) if(bottle) @@ -142,8 +141,6 @@ adjust_item_drop_location(B) if(new_bottle) bottle = new_bottle - update_icon() - return TRUE /obj/machinery/chem_master/on_deconstruction() replace_beaker(usr) From 2ccfaf38fbb16d79c4b3d721e4fd9f593e27f0f4 Mon Sep 17 00:00:00 2001 From: Ghommie <42542238+Ghommie@users.noreply.github.com> Date: Sat, 14 Dec 2019 19:27:39 +0100 Subject: [PATCH 36/61] consistency. --- code/modules/reagents/chemistry/machinery/chem_master.dm | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/code/modules/reagents/chemistry/machinery/chem_master.dm b/code/modules/reagents/chemistry/machinery/chem_master.dm index fec0734092..a3cc357307 100644 --- a/code/modules/reagents/chemistry/machinery/chem_master.dm +++ b/code/modules/reagents/chemistry/machinery/chem_master.dm @@ -103,6 +103,10 @@ updateUsrDialog() update_icon() else if(!condi && istype(I, /obj/item/storage/pill_bottle)) + . = TRUE // no afterattack + if(panel_open) + to_chat(user, "You can't use the [src.name] while its panel is opened!") + return if(!user.transferItemToLoc(I, src)) return replace_pillbottle(user, I) From 12b87b4f3d53416808ec4e9707d5a07cf345de41 Mon Sep 17 00:00:00 2001 From: Ghommie <42542238+Ghommie@users.noreply.github.com> Date: Sat, 14 Dec 2019 19:29:51 +0100 Subject: [PATCH 37/61] Better. --- code/modules/reagents/chemistry/machinery/chem_master.dm | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/code/modules/reagents/chemistry/machinery/chem_master.dm b/code/modules/reagents/chemistry/machinery/chem_master.dm index a3cc357307..88d67d2514 100644 --- a/code/modules/reagents/chemistry/machinery/chem_master.dm +++ b/code/modules/reagents/chemistry/machinery/chem_master.dm @@ -147,8 +147,9 @@ bottle = new_bottle /obj/machinery/chem_master/on_deconstruction() - replace_beaker(usr) - replace_pillbottle(usr) + var/atom/A = drop_location() + beaker.forceMove(A) + bottle.forceMove(A) return ..() /obj/machinery/chem_master/ui_interact(mob/user, ui_key = "main", datum/tgui/ui = null, force_open = FALSE, \ From 081d3df75043800c149ab580652e9bdfbde3dc92 Mon Sep 17 00:00:00 2001 From: Ghommie <42542238+Ghommie@users.noreply.github.com> Date: Sat, 14 Dec 2019 22:52:40 +0100 Subject: [PATCH 38/61] This is one serious Pepe Silvia complex. --- code/__DEFINES/components.dm | 4 +- code/datums/components/virtual_reality.dm | 53 +++++++++++++---------- code/datums/mind.dm | 5 ++- code/modules/VR/vr_sleeper.dm | 2 +- 4 files changed, 37 insertions(+), 27 deletions(-) diff --git a/code/__DEFINES/components.dm b/code/__DEFINES/components.dm index 107631f9cc..806680d8bf 100644 --- a/code/__DEFINES/components.dm +++ b/code/__DEFINES/components.dm @@ -148,7 +148,9 @@ #define COMSIG_MOVABLE_TELEPORTED "movable_teleported" //from base of do_teleport(): (channel, turf/origin, turf/destination) // /mind signals -#define COMSIG_MIND_TRANSFER "mind_transfer" //from base of mind/transfer_to(): (new_character, old_character) +#define COMSIG_PRE_MIND_TRANSFER "pre_mind_transfer" //from base of mind/transfer_to(): (new_character, old_character) + #define COMPONENT_STOP_MIND_TRANSFER 1 //stops the mind transfer from happening. +#define COMSIG_MIND_TRANSFER "mind_transfer" //from base of mind/transfer_to(): (new_character, old_character) // /mob signals #define COMSIG_MOB_EXAMINATE "mob_examinate" //from base of /mob/verb/examinate(): (atom/A) diff --git a/code/datums/components/virtual_reality.dm b/code/datums/components/virtual_reality.dm index bd48676541..7ed259d30a 100644 --- a/code/datums/components/virtual_reality.dm +++ b/code/datums/components/virtual_reality.dm @@ -1,8 +1,7 @@ /** * The virtual reality turned component. * Originally created to overcome issues of mob polymorphing locking the player inside virtual reality - * and allow for a more "realistic" virtual reality in a virtual reality experience. - * (I was there when VR sleepers were first tested on /tg/station, it was whacky.) + * and allow for a more "immersive" virtual reality in a virtual reality experience. * In short, a barebone not so hardcoded VR framework. * If you plan to add more devices that make use of this component, remember to isolate their specific code outta here where possible. */ @@ -46,9 +45,10 @@ RegisterSignal(quit_action, COMSIG_ACTION_TRIGGER, .proc/action_trigger) RegisterSignal(M, list(COMSIG_MOB_DEATH, COMSIG_PARENT_QDELETING), .proc/game_over) RegisterSignal(M, COMSIG_MOB_GHOSTIZE, .proc/be_a_quitter) - RegisterSignal(M, COMSIG_MOB_KEY_CHANGE, .proc/pass_me_the_remote) - RegisterSignal(current_mind, COMSIG_MIND_TRANSFER, .proc/pass_me_the_remote) - if(mastermind) + RegisterSignal(M, COMSIG_MOB_KEY_CHANGE, .proc/on_player_transfer) + RegisterSignal(current_mind, COMSIG_MIND_TRANSFER, .proc/on_player_transfer) + RegisterSignal(current_mind, COMSIG_PRE_MIND_TRANSFER, .proc/pre_player_transfer) + if(mastermind?.current) mastermind.current.audiovisual_redirect = M /datum/component/virtual_reality/UnregisterFromParent() @@ -57,24 +57,24 @@ quit_action.Remove(parent) UnregisterSignal(quit_action, COMSIG_ACTION_TRIGGER) UnregisterSignal(parent, list(COMSIG_MOB_DEATH, COMSIG_PARENT_QDELETING, COMSIG_MOB_KEY_CHANGE, COMSIG_MOB_GHOSTIZE)) - UnregisterSignal(current_mind, COMSIG_MIND_TRANSFER) + UnregisterSignal(current_mind, list(COMSIG_MIND_TRANSFER, COMSIG_PRE_MIND_TRANSFER)) current_mind = null - if(mastermind) + if(mastermind?.current) mastermind.current.audiovisual_redirect = null /** * Called when attempting to connect a mob to a virtual reality mob. - * This will return FALSE if the mob is without player or dead. + * This will return FALSE if the mob is without player or dead. TRUE otherwise */ /datum/component/virtual_reality/proc/connect(mob/M) if(!M.mind || M.stat == DEAD) return FALSE RegisterSignal(M, list(COMSIG_MOB_DEATH, COMSIG_PARENT_QDELETING), .proc/game_over) mastermind = M.mind - RegisterSignal(mastermind, COMSIG_MIND_TRANSFER, .proc/switch_player) - var/datum/component/virtual_reality/clusterfk = M.GetComponent(/datum/component/virtual_reality) - if(clusterfk) - clusterfk.inception = src + RegisterSignal(mastermind, COMSIG_PRE_MIND_TRANSFER, .proc/switch_player) + var/datum/component/virtual_reality/VR = M.GetComponent(/datum/component/virtual_reality) + if(VR) + VR.inception = src var/mob/vr_M = parent SStgui.close_user_uis(M, src) M.transfer_ckey(vr_M, FALSE) @@ -93,7 +93,7 @@ new_mob.audiovisual_redirect = parent /** - * VR sleeper emag_act() hook. + * emag_act() hook. Makes the game deadlier, killing the mastermind mob too should the parent die. */ /datum/component/virtual_reality/proc/you_only_live_once() if(you_die_in_the_game_you_die_for_real) @@ -102,17 +102,16 @@ return TRUE /** - * Takes care of moving the component from a mob to another when their mind or ckey is transferred. - * The very reason this component even exists (else one would be stuck playing as a monky if monkyified) - * Should the new mob happen to be one of the virtual realities ultimately associated the player - * a 180° turn will be done and quit the session instead. + * Called to stop the mind transfer should the new mob happen to be the mastermind's or in a damn mess associated with us. + * Since the target's mind.current is null'd in the mind transfer process, + * This has to be done in a different signal proc than on_player_transfer(), by then the mastermind.current will be null. */ -/datum/component/virtual_reality/proc/pass_me_the_remote(datum/source, mob/new_mob) +/datum/component/virtual_reality/proc/pre_player_transfer(datum/source, mob/new_mob, mob/old_mob) if(mastermind && new_mob == mastermind.current) quit() - return + return COMPONENT_STOP_MIND_TRANSFER var/datum/component/virtual_reality/VR = new_mob.GetComponent(/datum/component/virtual_reality) - if(VR.inception) + if(VR?.inception) var/datum/component/virtual_reality/VR2 = VR.inception var/emergency_quit = FALSE while(VR2) @@ -121,8 +120,14 @@ break VR2 = VR2.inception if(emergency_quit) - VR.inception.quit() //this will make the ckey revert back to the new mob. - return + VR.inception.quit() //this will revert the ckey back to new_mob. + return COMPONENT_STOP_MIND_TRANSFER + +/** + * Takes care of moving the component from a mob to another when their mind or ckey is transferred. + * The very reason this component even exists (else one would be stuck playing as a monky if monkyified) + */ +/datum/component/virtual_reality/proc/on_player_transfer(datum/source, mob/new_mob, mob/old_mob) new_mob.TakeComponent(src) /** @@ -168,7 +173,7 @@ var/mob/M = parent if(!session_paused) var/mob/dreamer = override || mastermind?.current - if(!dreamer) //This should NEVER happen. + if(!dreamer) //This shouldn't happen. stack_trace("virtual reality component quit() called without a mob to transfer the parent key to.") to_chat(M, "You feel a dreadful sensation, something terrible happened. You try to wake up, but you find yourself unable to...") qdel(src) @@ -189,7 +194,7 @@ qdel(src) else if(mastermind) UnregisterSignal(mastermind.current, list(COMSIG_MOB_DEATH, COMSIG_PARENT_QDELETING)) - UnregisterSignal(mastermind, COMSIG_MIND_TRANSFER) + UnregisterSignal(mastermind, COMSIG_PRE_MIND_TRANSFER) mastermind = null session_paused = TRUE diff --git a/code/datums/mind.dm b/code/datums/mind.dm index 0ded5f9912..a499cd56c0 100644 --- a/code/datums/mind.dm +++ b/code/datums/mind.dm @@ -88,6 +88,8 @@ /datum/mind/proc/transfer_to(mob/new_character, var/force_key_move = 0) var/old_character = current + if(SEND_SIGNAL(src, COMSIG_PRE_MIND_TRANSFER, new_character, old_character) & COMPONENT_STOP_MIND_TRANSFER) + return if(current) // remove ourself from our old body's mind variable current.mind = null SStgui.on_transfer(current, new_character) @@ -125,7 +127,6 @@ transfer_martial_arts(new_character) if(active || force_key_move) new_character.key = key //now transfer the key to link the client to our new body - SEND_SIGNAL(src, COMSIG_MIND_TRANSFER, new_character, old_character) //CIT CHANGE - makes arousal update when transfering bodies if(isliving(new_character)) //New humans and such are by default enabled arousal. Let's always use the new mind's prefs. @@ -134,6 +135,8 @@ L.canbearoused = L.client.prefs.arousable //Technically this should make taking over a character mean the body gain the new minds setting... L.update_arousal_hud() //Removes the old icon + SEND_SIGNAL(src, COMSIG_MIND_TRANSFER, new_character, old_character) + /datum/mind/proc/store_memory(new_text) if((length(memory) + length(new_text)) <= MAX_MESSAGE_LEN) memory += "[new_text]
" diff --git a/code/modules/VR/vr_sleeper.dm b/code/modules/VR/vr_sleeper.dm index b09084bcd7..479a65dabb 100644 --- a/code/modules/VR/vr_sleeper.dm +++ b/code/modules/VR/vr_sleeper.dm @@ -74,7 +74,7 @@ return ..() /obj/machinery/vr_sleeper/MouseDrop_T(mob/target, mob/user) - if(user.lying || !iscarbon(target) || !Adjacent(target) || user.canUseTopic(src, BE_CLOSE, TRUE, NO_TK)) + if(user.lying || !iscarbon(target) || !Adjacent(target) || !user.canUseTopic(src, BE_CLOSE, TRUE, NO_TK)) return close_machine(target) From 80f47872d76bed4a66b714e55c7bc281aad1a3c6 Mon Sep 17 00:00:00 2001 From: Ghommie <42542238+Ghommie@users.noreply.github.com> Date: Sun, 15 Dec 2019 20:31:36 +0100 Subject: [PATCH 39/61] My head splodes. --- code/__DEFINES/components.dm | 8 +- code/datums/components/virtual_reality.dm | 140 ++++++++++++++-------- code/datums/mind.dm | 3 +- code/modules/VR/vr_sleeper.dm | 6 +- code/modules/mob/mob.dm | 3 +- 5 files changed, 102 insertions(+), 58 deletions(-) diff --git a/code/__DEFINES/components.dm b/code/__DEFINES/components.dm index 806680d8bf..f95ff93ac3 100644 --- a/code/__DEFINES/components.dm +++ b/code/__DEFINES/components.dm @@ -148,9 +148,9 @@ #define COMSIG_MOVABLE_TELEPORTED "movable_teleported" //from base of do_teleport(): (channel, turf/origin, turf/destination) // /mind signals -#define COMSIG_PRE_MIND_TRANSFER "pre_mind_transfer" //from base of mind/transfer_to(): (new_character, old_character) +#define COMSIG_PRE_MIND_TRANSFER "pre_mind_transfer" //from base of mind/transfer_to() before it's done: (new_character, old_character) #define COMPONENT_STOP_MIND_TRANSFER 1 //stops the mind transfer from happening. -#define COMSIG_MIND_TRANSFER "mind_transfer" //from base of mind/transfer_to(): (new_character, old_character) +#define COMSIG_MIND_TRANSFER "mind_transfer" //from base of mind/transfer_to() when it's done: (new_character, old_character) // /mob signals #define COMSIG_MOB_EXAMINATE "mob_examinate" //from base of /mob/verb/examinate(): (atom/A) @@ -169,7 +169,9 @@ #define COMSIG_MOB_ITEM_AFTERATTACK "mob_item_afterattack" //from base of obj/item/afterattack(): (atom/target, mob/user, proximity_flag, click_parameters) #define COMSIG_MOB_ATTACK_RANGED "mob_attack_ranged" //from base of mob/RangedAttack(): (atom/A, params) #define COMSIG_MOB_THROW "mob_throw" //from base of /mob/throw_item(): (atom/target) -#define COMSIG_MOB_KEY_CHANGE "mob_key_change" //from base of /mob/transfer_ckey() +#define COMSIG_MOB_KEY_CHANGE "mob_key_change" //from base of /mob/transfer_ckey(): (new_character, old_character) +#define COMSIG_MOB_PRE_PLAYER_CHANGE "mob_pre_player_change" //sent to the target mob from base of /mob/transfer_ckey() and /mind/transfer_to(): (our_character, their_character) +// #define COMPONENT_STOP_MIND_TRANSFER 1 #define COMSIG_MOB_UPDATE_SIGHT "mob_update_sight" //from base of /mob/update_sight(): () #define COMSIG_MOB_SAY "mob_say" // from /mob/living/say(): (proc args list) #define COMPONENT_UPPERCASE_SPEECH 1 diff --git a/code/datums/components/virtual_reality.dm b/code/datums/components/virtual_reality.dm index 7ed259d30a..2f0405af2e 100644 --- a/code/datums/components/virtual_reality.dm +++ b/code/datums/components/virtual_reality.dm @@ -2,8 +2,9 @@ * The virtual reality turned component. * Originally created to overcome issues of mob polymorphing locking the player inside virtual reality * and allow for a more "immersive" virtual reality in a virtual reality experience. + * It relies on comically complex order of logic, expect things to break if procs such as mind/transfer_to() are revamped. * In short, a barebone not so hardcoded VR framework. - * If you plan to add more devices that make use of this component, remember to isolate their specific code outta here where possible. + * If you plan to add more devices that make use of this component, remember to isolate their code outta here where possible. */ /datum/component/virtual_reality can_transfer = TRUE @@ -16,7 +17,8 @@ //This one's name should be self explainatory, currently used for emags. var/you_die_in_the_game_you_die_for_real = FALSE //Used to allow people to play recursively playing vr while playing vr without many issues. - var/datum/component/virtual_reality/inception + var/datum/component/virtual_reality/level_below + var/datum/component/virtual_reality/level_above //Used to stop the component from executing certain functions that'd cause us some issues otherwise. //FALSE if there is a connected player, otherwise TRUE. var/session_paused = TRUE @@ -24,8 +26,8 @@ var/allow_mastermind_transfer = FALSE /datum/component/virtual_reality/Initialize(yolo = FALSE, _allow_mastermind_transfer = FALSE) - var/mob/vr_M = parent - if(!istype(vr_M) || !vr_M.mind) + var/mob/M = parent + if(!istype(M) || !M.mind) return COMPONENT_INCOMPATIBLE you_die_in_the_game_you_die_for_real = yolo allow_mastermind_transfer = _allow_mastermind_transfer @@ -33,6 +35,12 @@ /datum/component/virtual_reality/Destroy() QDEL_NULL(quit_action) + if(level_above) + level_above.level_below = null + level_above = null + if(level_below) + level_below.level_above = null + level_below = null return ..() /datum/component/virtual_reality/RegisterWithParent() @@ -67,31 +75,23 @@ * This will return FALSE if the mob is without player or dead. TRUE otherwise */ /datum/component/virtual_reality/proc/connect(mob/M) - if(!M.mind || M.stat == DEAD) + var/mob/vr_M = parent + if(!M.mind || M.stat == DEAD || !vr_M.mind || vr_M.stat == DEAD) return FALSE - RegisterSignal(M, list(COMSIG_MOB_DEATH, COMSIG_PARENT_QDELETING), .proc/game_over) - mastermind = M.mind - RegisterSignal(mastermind, COMSIG_PRE_MIND_TRANSFER, .proc/switch_player) var/datum/component/virtual_reality/VR = M.GetComponent(/datum/component/virtual_reality) if(VR) - VR.inception = src - var/mob/vr_M = parent - SStgui.close_user_uis(M, src) + VR.level_below = src + level_above = VR M.transfer_ckey(vr_M, FALSE) + mastermind = M.mind + mastermind.current.audiovisual_redirect = parent + RegisterSignal(mastermind, COMSIG_PRE_MIND_TRANSFER, .proc/switch_player) + RegisterSignal(M, list(COMSIG_MOB_DEATH, COMSIG_PARENT_QDELETING), .proc/game_over) + RegisterSignal(M, COMSIG_MOB_PRE_PLAYER_CHANGE, .proc/player_hijacked) + SStgui.close_user_uis(vr_M, src) session_paused = FALSE return TRUE -/** - * Called when the mastermind mind is transferred to another mob. - * This is pretty much going to simply quit the session until machineries support polymorphed occupants etcetera. - */ -/datum/component/virtual_reality/proc/switch_player(datum/source, mob/new_mob, mob/old_mob) - if(!allow_mastermind_transfer) - quit() - return - old_mob.audiovisual_redirect = null - new_mob.audiovisual_redirect = parent - /** * emag_act() hook. Makes the game deadlier, killing the mastermind mob too should the parent die. */ @@ -102,26 +102,60 @@ return TRUE /** - * Called to stop the mind transfer should the new mob happen to be the mastermind's or in a damn mess associated with us. - * Since the target's mind.current is null'd in the mind transfer process, + * Called when the mastermind mind is transferred to another mob. + * This is pretty much just going to simply quit the session until machineries support polymorphed occupants etcetera. + */ +/datum/component/virtual_reality/proc/switch_player(datum/source, mob/new_mob, mob/old_mob) + if(session_paused) + return + if(!allow_mastermind_transfer) + quit() + return COMPONENT_STOP_MIND_TRANSFER + UnregisterSignal(old_mob, list(COMSIG_MOB_DEATH, COMSIG_PARENT_QDELETING, COMSIG_MOB_PRE_PLAYER_CHANGE)) + RegisterSignal(new_mob, list(COMSIG_MOB_DEATH, COMSIG_PARENT_QDELETING), .proc/game_over) + RegisterSignal(new_mob, COMSIG_MOB_PRE_PLAYER_CHANGE, .proc/player_hijacked) + old_mob.audiovisual_redirect = null + new_mob.audiovisual_redirect = parent + +/** + * Called to stop the player mind from being transferred should the new mob happen to be one of our masterminds'. + * Since the target's mind.current is going to be null'd in the mind transfer process, * This has to be done in a different signal proc than on_player_transfer(), by then the mastermind.current will be null. */ /datum/component/virtual_reality/proc/pre_player_transfer(datum/source, mob/new_mob, mob/old_mob) - if(mastermind && new_mob == mastermind.current) + if(!mastermind || session_paused) + return + if(new_mob == mastermind.current) quit() return COMPONENT_STOP_MIND_TRANSFER - var/datum/component/virtual_reality/VR = new_mob.GetComponent(/datum/component/virtual_reality) - if(VR?.inception) - var/datum/component/virtual_reality/VR2 = VR.inception - var/emergency_quit = FALSE - while(VR2) - if(VR2 == src) - emergency_quit = TRUE - break - VR2 = VR2.inception - if(emergency_quit) - VR.inception.quit() //this will revert the ckey back to new_mob. + if(!level_above) + return + var/datum/component/virtual_reality/VR = level_above + while(VR) + if(VR.mastermind.current == new_mob) + VR.quit() //this will revert the ckey back to new_mob. return COMPONENT_STOP_MIND_TRANSFER + VR = VR.level_above + +/** + * Called when someone or something else is somewhat about to replace the mastermind's mob key somehow. + * And potentially lock the player in a broken virtual reality plot. Not really something to be proud of. + */ +/datum/component/virtual_reality/proc/player_hijacked(datum/source, mob/our_character, mob/their_character) + if(session_paused) + return + if(!their_character) + quit(cleanup = TRUE) + return + var/will_it_be_handled_in_their_pre_player_transfer = FALSE + var/datum/component/virtual_reality/VR = src + while(VR) + if(VR.parent == their_character) + will_it_be_handled_in_their_pre_player_transfer = TRUE + break + VR = VR.level_below + if(!will_it_be_handled_in_their_pre_player_transfer) //it's not the player playing shenanigeans, abandon all ships. + quit(cleanup = TRUE) /** * Takes care of moving the component from a mob to another when their mind or ckey is transferred. @@ -172,38 +206,40 @@ /datum/component/virtual_reality/proc/quit(deathcheck = FALSE, cleanup = FALSE, mob/override) var/mob/M = parent if(!session_paused) - var/mob/dreamer = override || mastermind?.current + session_paused = TRUE + var/mob/dreamer = override || mastermind.current if(!dreamer) //This shouldn't happen. - stack_trace("virtual reality component quit() called without a mob to transfer the parent key to.") + stack_trace("virtual reality component quit() called without a mob to transfer the parent ckey to.") to_chat(M, "You feel a dreadful sensation, something terrible happened. You try to wake up, but you find yourself unable to...") qdel(src) return - if(inception?.parent) - inception.vr_in_a_vr(dreamer, deathcheck, cleanup, src) - else if(M.ckey) + if(level_below?.parent) + level_below.vr_in_a_vr(dreamer, deathcheck, (deathcheck && cleanup)) + else M.transfer_ckey(dreamer, FALSE) if(deathcheck) to_chat(dreamer, "You feel everything fading away...") dreamer.death(FALSE) - dreamer.stop_sound_channel(CHANNEL_HEARTBEAT) - dreamer.audiovisual_redirect = null + mastermind.current.audiovisual_redirect = null + if(!cleanup) + if(level_above) + level_above.level_below = null + level_above = null + UnregisterSignal(mastermind.current, list(COMSIG_MOB_DEATH, COMSIG_PARENT_QDELETING, COMSIG_MOB_PRE_PLAYER_CHANGE)) + UnregisterSignal(mastermind, COMSIG_PRE_MIND_TRANSFER) + mastermind = null if(cleanup) var/obj/effect/vr_clean_master/cleanbot = locate() in get_area(M) if(cleanbot) LAZYOR(cleanbot.corpse_party, M) qdel(src) - else if(mastermind) - UnregisterSignal(mastermind.current, list(COMSIG_MOB_DEATH, COMSIG_PARENT_QDELETING)) - UnregisterSignal(mastermind, COMSIG_PRE_MIND_TRANSFER) - mastermind = null - session_paused = TRUE /** * Used for recursive virtual realities shenanigeans and should be called only through the above proc. */ -/datum/component/virtual_reality/proc/vr_in_a_vr(mob/player, deathcheck = FALSE, cleanup = FALSE, datum/component/virtual_reality/yo_dawg) +/datum/component/virtual_reality/proc/vr_in_a_vr(mob/player, deathcheck = FALSE, lethal_cleanup = FALSE) var/mob/M = parent - quit(deathcheck, cleanup, player, yo_dawg) - yo_dawg.inception = null - if(deathcheck && cleanup) + quit(deathcheck, lethal_cleanup, player) + M.audiovisual_redirect = null + if(lethal_cleanup) M.death(FALSE) diff --git a/code/datums/mind.dm b/code/datums/mind.dm index a499cd56c0..d1b4e51a7d 100644 --- a/code/datums/mind.dm +++ b/code/datums/mind.dm @@ -88,7 +88,8 @@ /datum/mind/proc/transfer_to(mob/new_character, var/force_key_move = 0) var/old_character = current - if(SEND_SIGNAL(src, COMSIG_PRE_MIND_TRANSFER, new_character, old_character) & COMPONENT_STOP_MIND_TRANSFER) + var/signals = SEND_SIGNAL(new_character, COMSIG_MOB_PRE_PLAYER_CHANGE, new_character, old_character) | SEND_SIGNAL(src, COMSIG_PRE_MIND_TRANSFER, new_character, old_character) + if(signals & COMPONENT_STOP_MIND_TRANSFER) return if(current) // remove ourself from our old body's mind variable current.mind = null diff --git a/code/modules/VR/vr_sleeper.dm b/code/modules/VR/vr_sleeper.dm index 479a65dabb..7cda24d98b 100644 --- a/code/modules/VR/vr_sleeper.dm +++ b/code/modules/VR/vr_sleeper.dm @@ -97,7 +97,7 @@ VR = vr_mob.GetComponent(/datum/component/virtual_reality) if(!(VR?.connect(M))) if(allow_creating_vr_mobs) - to_chat(occupant, "Virtual avatar not found, attempting to create one...") + to_chat(occupant, "Virtual avatar [vr_mob ? "corrupted" : "missing"], attempting to create one...") var/obj/effect/landmark/vr_spawn/V = get_vr_spawnpoint() var/turf/T = get_turf(V) if(T) @@ -106,6 +106,8 @@ to_chat(occupant, "Virtual world misconfigured, aborting transfer") else to_chat(occupant, "The virtual world does not support the creation of new virtual avatars, aborting transfer") + else + to_chat(vr_mob, "Transfer successful! You are now playing as [vr_mob] in VR!") . = TRUE if("delete_avatar") if(!occupant || usr == occupant) @@ -169,6 +171,8 @@ VR.RegisterSignal(src, COMSIG_MACHINE_EJECT_OCCUPANT, /datum/component/virtual_reality.proc/revert_to_reality) VR.RegisterSignal(src, COMSIG_PARENT_QDELETING, /datum/component/virtual_reality.proc/machine_destroyed) to_chat(vr_mob, "Transfer successful! You are now playing as [vr_mob] in VR!") + else + to_chat(M, "Transfer failed! virtual reality data likely corrupted!") /obj/machinery/vr_sleeper/proc/unset_vr_mob(datum/component/virtual_reality/VR) vr_mob = null diff --git a/code/modules/mob/mob.dm b/code/modules/mob/mob.dm index d4528fb91f..a47ea9d5a0 100644 --- a/code/modules/mob/mob.dm +++ b/code/modules/mob/mob.dm @@ -465,9 +465,10 @@ mob/visible_message(message, self_message, blind_message, vision_distance = DEFA /mob/proc/transfer_ckey(mob/new_mob, send_signal = TRUE) if(!ckey || !new_mob) CRASH("transfer_ckey() called [ckey ? "" : "on a ckey-less mob[new_mob ? "" : " and "]"][new_mob ? "" : "without a valid mob target"]!") + SEND_SIGNAL(new_mob, COMSIG_MOB_PRE_PLAYER_CHANGE, new_mob, src) + new_mob.ckey = ckey if(send_signal) SEND_SIGNAL(src, COMSIG_MOB_KEY_CHANGE, new_mob, src) - new_mob.ckey = ckey return TRUE /mob/verb/cancel_camera() From d3d1f8328f47b9eef95d0a7e926e7e86cd3656f0 Mon Sep 17 00:00:00 2001 From: Ghommie <42542238+Ghommie@users.noreply.github.com> Date: Sun, 15 Dec 2019 22:16:02 +0100 Subject: [PATCH 40/61] compiles now. --- code/modules/reagents/chemistry/machinery/chem_master.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/modules/reagents/chemistry/machinery/chem_master.dm b/code/modules/reagents/chemistry/machinery/chem_master.dm index 88d67d2514..bab986c6be 100644 --- a/code/modules/reagents/chemistry/machinery/chem_master.dm +++ b/code/modules/reagents/chemistry/machinery/chem_master.dm @@ -127,7 +127,7 @@ /obj/machinery/chem_master/proc/replace_beaker(mob/living/user, obj/item/reagent_containers/new_beaker) if(beaker) - var/obj/item/reagent_containers/beaker/B = beaker + var/obj/item/reagent_containers/B = beaker B.forceMove(drop_location()) if(user && Adjacent(user) && !issiliconoradminghost(user)) B.put_in_hands(beaker) From f8a05b5ae15286d362284c9a99b7b1654609ec86 Mon Sep 17 00:00:00 2001 From: kappa-sama <44128284+kappa-sama@users.noreply.github.com> Date: Sun, 15 Dec 2019 17:31:49 -0500 Subject: [PATCH 41/61] perhaps --- code/modules/mob/living/carbon/human/human.dm | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/code/modules/mob/living/carbon/human/human.dm b/code/modules/mob/living/carbon/human/human.dm index 0501a2a5ea..1e584c67c3 100644 --- a/code/modules/mob/living/carbon/human/human.dm +++ b/code/modules/mob/living/carbon/human/human.dm @@ -867,10 +867,7 @@ return //If you dragged them to you and you're aggressively grabbing try to fireman carry them else if(user != target) - if(user.a_intent == INTENT_GRAB || INTENT_DISARM || INTENT_HARM) - to_chat(user, "You need to be in help intent to do that!") - return - else if(user.a_intent == INTENT_HELP) + if(user.a_intent == INTENT_GRAB) fireman_carry(target) return . = ..() From 843f4ed0da0426ab38c5484011a5ece317d3d3bb Mon Sep 17 00:00:00 2001 From: Ghommie <42542238+Ghommie@users.noreply.github.com> Date: Mon, 16 Dec 2019 02:44:58 +0100 Subject: [PATCH 42/61] FLAK --- code/modules/reagents/chemistry/machinery/chem_master.dm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/code/modules/reagents/chemistry/machinery/chem_master.dm b/code/modules/reagents/chemistry/machinery/chem_master.dm index bab986c6be..1ac62ba651 100644 --- a/code/modules/reagents/chemistry/machinery/chem_master.dm +++ b/code/modules/reagents/chemistry/machinery/chem_master.dm @@ -130,7 +130,7 @@ var/obj/item/reagent_containers/B = beaker B.forceMove(drop_location()) if(user && Adjacent(user) && !issiliconoradminghost(user)) - B.put_in_hands(beaker) + user.put_in_hands(B) if(new_beaker) beaker = new_beaker update_icon() @@ -140,7 +140,7 @@ var/obj/item/storage/pill_bottle/B = bottle B.forceMove(drop_location()) if(user && Adjacent(user) && !issiliconoradminghost(user)) - B.put_in_hands(bottle) + user.put_in_hands(B) else adjust_item_drop_location(B) if(new_bottle) From 05497bb392921d9f5135cb877972e2939bcee550 Mon Sep 17 00:00:00 2001 From: DeltaFire Date: Mon, 16 Dec 2019 11:25:11 +0100 Subject: [PATCH 43/61] Changes required to enable for maintenance protocols All combat mechs that are special get their internals_access increased so the pilots of the deathsquad / nuke team can fix up their mechs without having to steal a robotics ID. Also removes engineering from being able to access mech internals, seems weird to have if only robotics is allowed to handle mechs, probably remnant of engineering robotics? --- code/game/gamemodes/clown_ops/clown_weapons.dm | 1 + code/game/mecha/combat/gygax.dm | 1 + code/game/mecha/combat/honker.dm | 1 + code/game/mecha/combat/marauder.dm | 3 +++ code/game/mecha/combat/neovgre.dm | 2 ++ code/game/mecha/combat/reticence.dm | 1 + code/game/mecha/mecha.dm | 2 +- 7 files changed, 10 insertions(+), 1 deletion(-) diff --git a/code/game/gamemodes/clown_ops/clown_weapons.dm b/code/game/gamemodes/clown_ops/clown_weapons.dm index ee96d1fa10..9b52ddda1e 100644 --- a/code/game/gamemodes/clown_ops/clown_weapons.dm +++ b/code/game/gamemodes/clown_ops/clown_weapons.dm @@ -265,6 +265,7 @@ armor = list("melee" = 40, "bullet" = 40, "laser" = 50, "energy" = 35, "bomb" = 20, "bio" = 0, "rad" = 0, "fire" = 100, "acid" = 100) max_temperature = 35000 operation_req_access = list(ACCESS_SYNDICATE) + internals_req_access = list(ACCESS_SYNDICATE) wreckage = /obj/structure/mecha_wreckage/honker/dark max_equip = 3 spawn_tracked = FALSE diff --git a/code/game/mecha/combat/gygax.dm b/code/game/mecha/combat/gygax.dm index c7c180af41..0e6980d6b7 100644 --- a/code/game/mecha/combat/gygax.dm +++ b/code/game/mecha/combat/gygax.dm @@ -27,6 +27,7 @@ max_temperature = 35000 leg_overload_coeff = 100 operation_req_access = list(ACCESS_SYNDICATE) + internals_req_access = list(ACCESS_SYNDICATE) wreckage = /obj/structure/mecha_wreckage/gygax/dark max_equip = 4 spawn_tracked = FALSE diff --git a/code/game/mecha/combat/honker.dm b/code/game/mecha/combat/honker.dm index 3a3d98ad1e..ffe318def5 100644 --- a/code/game/mecha/combat/honker.dm +++ b/code/game/mecha/combat/honker.dm @@ -10,6 +10,7 @@ max_temperature = 25000 infra_luminosity = 5 operation_req_access = list(ACCESS_THEATRE) + internals_req_access = list(ACCESS_THEATRE, ACCESS_ROBOTICS) wreckage = /obj/structure/mecha_wreckage/honker add_req_access = 0 max_equip = 3 diff --git a/code/game/mecha/combat/marauder.dm b/code/game/mecha/combat/marauder.dm index 42817b586c..fa9449937b 100644 --- a/code/game/mecha/combat/marauder.dm +++ b/code/game/mecha/combat/marauder.dm @@ -10,6 +10,7 @@ resistance_flags = LAVA_PROOF | FIRE_PROOF | ACID_PROOF infra_luminosity = 3 operation_req_access = list(ACCESS_CENT_SPECOPS) + internals_req_access = list(ACCESS_CENT_SPECOPS, ACCESS_ROBOTICS) wreckage = /obj/structure/mecha_wreckage/marauder add_req_access = 0 internal_damage_threshold = 25 @@ -46,6 +47,7 @@ name = "\improper Seraph" icon_state = "seraph" operation_req_access = list(ACCESS_CENT_SPECOPS) + internals_req_access = list(ACCESS_CENT_SPECOPS, ACCESS_ROBOTICS) step_in = 3 max_integrity = 550 wreckage = /obj/structure/mecha_wreckage/seraph @@ -72,6 +74,7 @@ name = "\improper Mauler" icon_state = "mauler" operation_req_access = list(ACCESS_SYNDICATE) + internals_req_access = list(ACCESS_SYNDICATE) wreckage = /obj/structure/mecha_wreckage/mauler max_equip = 5 diff --git a/code/game/mecha/combat/neovgre.dm b/code/game/mecha/combat/neovgre.dm index b1f2cdd02a..1b2693a1dd 100644 --- a/code/game/mecha/combat/neovgre.dm +++ b/code/game/mecha/combat/neovgre.dm @@ -12,6 +12,8 @@ layer = ABOVE_MOB_LAYER breach_time = 100 //ten seconds till all goes to shit recharge_rate = 100 + internals_req_access = list() + add_req_access = 0 wreckage = /obj/structure/mecha_wreckage/durand/neovgre spawn_tracked = FALSE diff --git a/code/game/mecha/combat/reticence.dm b/code/game/mecha/combat/reticence.dm index 7e8c865517..446e2e853c 100644 --- a/code/game/mecha/combat/reticence.dm +++ b/code/game/mecha/combat/reticence.dm @@ -10,6 +10,7 @@ max_temperature = 15000 wreckage = /obj/structure/mecha_wreckage/reticence operation_req_access = list(ACCESS_THEATRE) + internals_req_access = list(ACCESS_THEATRE, ACCESS_ROBOTICS) add_req_access = 0 internal_damage_threshold = 25 max_equip = 2 diff --git a/code/game/mecha/mecha.dm b/code/game/mecha/mecha.dm index 717c94362c..8ed3aad419 100644 --- a/code/game/mecha/mecha.dm +++ b/code/game/mecha/mecha.dm @@ -68,7 +68,7 @@ var/internal_damage = 0 //contains bitflags var/list/operation_req_access = list()//required access level for mecha operation - var/list/internals_req_access = list(ACCESS_ENGINE,ACCESS_ROBOTICS)//REQUIRED ACCESS LEVEL TO OPEN CELL COMPARTMENT + var/list/internals_req_access = list(ACCESS_ROBOTICS)//REQUIRED ACCESS LEVEL TO OPEN CELL COMPARTMENT var/wreckage From 5f59d7a9c558ab68088209d2550dd3041bd33d42 Mon Sep 17 00:00:00 2001 From: CitadelStationBot Date: Mon, 16 Dec 2019 05:24:00 -0600 Subject: [PATCH 44/61] Automatic changelog generation for PR #10115 [ci skip] --- html/changelogs/AutoChangeLog-pr-10115.yml | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-10115.yml diff --git a/html/changelogs/AutoChangeLog-pr-10115.yml b/html/changelogs/AutoChangeLog-pr-10115.yml new file mode 100644 index 0000000000..f7a60e4911 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-10115.yml @@ -0,0 +1,5 @@ +author: "Useroth" +delete-after: True +changes: + - rscadd: "New lavaland ruin: Pulsating tumor" + - rscadd: "New class of lavaland mobs, a bit weaker than megafauna but still stronger than most of what you normally see" From 9c5a66af6718b1e6d21ef8875b99d9b82b105d67 Mon Sep 17 00:00:00 2001 From: Ghommie <42542238+Ghommie@users.noreply.github.com> Date: Mon, 16 Dec 2019 15:58:10 +0100 Subject: [PATCH 45/61] Fixes AI being unable to talk through the holopad. --- code/modules/mob/living/silicon/ai/say.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/modules/mob/living/silicon/ai/say.dm b/code/modules/mob/living/silicon/ai/say.dm index 112add367f..f757203237 100644 --- a/code/modules/mob/living/silicon/ai/say.dm +++ b/code/modules/mob/living/silicon/ai/say.dm @@ -49,7 +49,7 @@ else padloc = "(UNKNOWN)" src.log_talk(message, LOG_SAY, tag="HOLOPAD in [padloc]") - send_speech(message, 7, T, "robot", language) + send_speech(message, 7, T, "robot", message_language = language) to_chat(src, "Holopad transmitted, [real_name] \"[message]\"") else to_chat(src, "No holopad connected.") From 93fbc17428bb72e3c20361988cf99f4ee8939175 Mon Sep 17 00:00:00 2001 From: Ghommie <42542238+Ghommie@users.noreply.github.com> Date: Mon, 16 Dec 2019 17:58:50 +0100 Subject: [PATCH 46/61] ports "Standardize obj/updateicon() and update_icons() to update_icon()" --- code/_onclick/hud/action_button.dm | 6 +++--- code/game/area/areas.dm | 6 +++--- code/game/machinery/Beacon.dm | 6 +++--- code/game/machinery/cell_charger.dm | 8 ++++---- code/game/machinery/lightswitch.dm | 10 +++++----- code/game/machinery/magnet.dm | 6 +++--- code/game/machinery/navbeacon.dm | 6 +++--- code/game/objects/items/pneumaticCannon.dm | 7 +++---- code/game/objects/items/robot/robot_parts.dm | 18 +++++++++--------- code/game/objects/structures/divine.dm | 6 +++--- code/modules/mob/living/silicon/robot/robot.dm | 2 +- code/modules/power/singularity/collector.dm | 8 ++++---- 12 files changed, 44 insertions(+), 45 deletions(-) diff --git a/code/_onclick/hud/action_button.dm b/code/_onclick/hud/action_button.dm index d2508b3e8e..858b8dbd06 100644 --- a/code/_onclick/hud/action_button.dm +++ b/code/_onclick/hud/action_button.dm @@ -113,7 +113,7 @@ name = "Show Buttons" else name = "Hide Buttons" - UpdateIcon() + update_icon() usr.update_action_buttons() /obj/screen/movable/action_button/hide_toggle/AltClick(mob/user) @@ -135,9 +135,9 @@ hide_icon = settings["toggle_icon"] hide_state = settings["toggle_hide"] show_state = settings["toggle_show"] - UpdateIcon() + update_icon() -/obj/screen/movable/action_button/hide_toggle/proc/UpdateIcon() +/obj/screen/movable/action_button/hide_toggle/update_icon() cut_overlays() add_overlay(mutable_appearance(hide_icon, hidden ? show_state : hide_state)) diff --git a/code/game/area/areas.dm b/code/game/area/areas.dm index 612c3cba42..f5e285a5c2 100644 --- a/code/game/area/areas.dm +++ b/code/game/area/areas.dm @@ -327,7 +327,7 @@ GLOBAL_LIST_EMPTY(teleportlocs) for(var/obj/machinery/light/L in src) L.update() -/area/proc/updateicon() +/area/proc/update_icon() var/weather_icon for(var/V in SSweather.processing) var/datum/weather/W = V @@ -337,7 +337,7 @@ GLOBAL_LIST_EMPTY(teleportlocs) if(!weather_icon) icon_state = null -/area/space/updateicon() +/area/space/update_icon() icon_state = null /* @@ -370,7 +370,7 @@ GLOBAL_LIST_EMPTY(teleportlocs) /area/proc/power_change() for(var/obj/machinery/M in src) // for each machine in the area M.power_change() // reverify power status (to update icons etc.) - updateicon() + update_icon() /area/proc/usage(chan) var/used = 0 diff --git a/code/game/machinery/Beacon.dm b/code/game/machinery/Beacon.dm index 3d0931d534..c98795c90b 100644 --- a/code/game/machinery/Beacon.dm +++ b/code/game/machinery/Beacon.dm @@ -25,10 +25,10 @@ // update the invisibility and icon /obj/machinery/bluespace_beacon/hide(intact) invisibility = intact ? INVISIBILITY_MAXIMUM : 0 - updateicon() + update_icon() // update the icon_state -/obj/machinery/bluespace_beacon/proc/updateicon() +/obj/machinery/bluespace_beacon/update_icon() var/state="floor_beacon" if(invisibility) @@ -45,4 +45,4 @@ else if (Beacon.loc != loc) Beacon.forceMove(loc) - updateicon() + update_icon() diff --git a/code/game/machinery/cell_charger.dm b/code/game/machinery/cell_charger.dm index 1839e44e3b..1c0635fd3d 100644 --- a/code/game/machinery/cell_charger.dm +++ b/code/game/machinery/cell_charger.dm @@ -13,7 +13,7 @@ var/chargelevel = -1 var/charge_rate = 500 -/obj/machinery/cell_charger/proc/updateicon() +/obj/machinery/cell_charger/update_icon() cut_overlays() if(charging) add_overlay(image(charging.icon, charging.icon_state)) @@ -53,7 +53,7 @@ charging = W user.visible_message("[user] inserts a cell into [src].", "You insert a cell into [src].") chargelevel = -1 - updateicon() + update_icon() else if(!charging && default_deconstruction_screwdriver(user, icon_state, icon_state, W)) return @@ -76,7 +76,7 @@ charging.update_icon() charging = null chargelevel = -1 - updateicon() + update_icon() /obj/machinery/cell_charger/attack_hand(mob/user) . = ..() @@ -127,4 +127,4 @@ use_power(charge_rate) charging.give(charge_rate) //this is 2558, efficient batteries exist - updateicon() + update_icon() diff --git a/code/game/machinery/lightswitch.dm b/code/game/machinery/lightswitch.dm index 694df02eb5..2a4b903906 100644 --- a/code/game/machinery/lightswitch.dm +++ b/code/game/machinery/lightswitch.dm @@ -21,9 +21,9 @@ name = "light switch ([area.name])" on = area.lightswitch - updateicon() + update_icon() -/obj/machinery/light_switch/proc/updateicon() +/obj/machinery/light_switch/update_icon() if(stat & NOPOWER) icon_state = "light-p" else @@ -41,11 +41,11 @@ on = !on area.lightswitch = on - area.updateicon() + area.update_icon() for(var/obj/machinery/light_switch/L in area) L.on = on - L.updateicon() + L.update_icon() area.power_change() @@ -57,7 +57,7 @@ else stat |= NOPOWER - updateicon() + update_icon() /obj/machinery/light_switch/emp_act(severity) . = ..() diff --git a/code/game/machinery/magnet.dm b/code/game/machinery/magnet.dm index 094db5a676..370621e0c8 100644 --- a/code/game/machinery/magnet.dm +++ b/code/game/machinery/magnet.dm @@ -46,10 +46,10 @@ // update the invisibility and icon /obj/machinery/magnetic_module/hide(intact) invisibility = intact ? INVISIBILITY_MAXIMUM : 0 - updateicon() + update_icon() // update the icon_state -/obj/machinery/magnetic_module/proc/updateicon() +/obj/machinery/magnetic_module/update_icon() var/state="floor_magnet" var/onstate="" if(!on) @@ -161,7 +161,7 @@ else use_power = NO_POWER_USE - updateicon() + update_icon() /obj/machinery/magnetic_module/proc/magnetic_process() // proc that actually does the magneting diff --git a/code/game/machinery/navbeacon.dm b/code/game/machinery/navbeacon.dm index d64ae75e2c..0f57bea656 100644 --- a/code/game/machinery/navbeacon.dm +++ b/code/game/machinery/navbeacon.dm @@ -72,10 +72,10 @@ // hide the object if turf is intact /obj/machinery/navbeacon/hide(intact) invisibility = intact ? INVISIBILITY_MAXIMUM : 0 - updateicon() + update_icon() // update the icon_state -/obj/machinery/navbeacon/proc/updateicon() +/obj/machinery/navbeacon/update_icon() var/state="navbeacon[open]" if(invisibility) @@ -94,7 +94,7 @@ user.visible_message("[user] [open ? "opens" : "closes"] the beacon's cover.", "You [open ? "open" : "close"] the beacon's cover.") - updateicon() + update_icon() else if (istype(I, /obj/item/card/id)||istype(I, /obj/item/pda)) if(open) diff --git a/code/game/objects/items/pneumaticCannon.dm b/code/game/objects/items/pneumaticCannon.dm index 72d27ae544..e63b4d7a3a 100644 --- a/code/game/objects/items/pneumaticCannon.dm +++ b/code/game/objects/items/pneumaticCannon.dm @@ -213,7 +213,7 @@ loadedWeightClass -= I.w_class else if (A == tank) tank = null - update_icons() + update_icon() /obj/item/pneumatic_cannon/ghetto //Obtainable by improvised methods; more gas per use, less capacity, but smaller name = "improvised pneumatic cannon" @@ -239,14 +239,13 @@ return to_chat(user, "You hook \the [thetank] up to \the [src].") tank = thetank - update_icons() + update_icon() -/obj/item/pneumatic_cannon/proc/update_icons() +/obj/item/pneumatic_cannon/update_icon() cut_overlays() if(!tank) return add_overlay(tank.icon_state) - update_icon() /obj/item/pneumatic_cannon/proc/fill_with_type(type, amount) if(!ispath(type, /obj) && !ispath(type, /mob)) diff --git a/code/game/objects/items/robot/robot_parts.dm b/code/game/objects/items/robot/robot_parts.dm index 95110692c9..ab8030c9c2 100644 --- a/code/game/objects/items/robot/robot_parts.dm +++ b/code/game/objects/items/robot/robot_parts.dm @@ -24,7 +24,7 @@ /obj/item/robot_suit/New() ..() - updateicon() + update_icon() /obj/item/robot_suit/prebuilt/New() l_arm = new(src) @@ -39,7 +39,7 @@ chest.cell = new /obj/item/stock_parts/cell/high/plus(chest) ..() -/obj/item/robot_suit/proc/updateicon() +/obj/item/robot_suit/update_icon() cut_overlays() if(l_arm) add_overlay("[l_arm.icon_state]+o") @@ -96,7 +96,7 @@ to_chat(user, "You disassemble the cyborg shell.") else to_chat(user, "There is nothing to remove from the endoskeleton.") - updateicon() + update_icon() /obj/item/robot_suit/proc/put_in_hand_or_drop(mob/living/user, obj/item/I) //normal put_in_hands() drops the item ontop of the player, this drops it at the suit's loc if(!user.put_in_hands(I)) @@ -160,7 +160,7 @@ W.icon_state = initial(W.icon_state) W.cut_overlays() src.l_leg = W - src.updateicon() + update_icon() else if(istype(W, /obj/item/bodypart/r_leg/robot)) if(src.r_leg) @@ -170,7 +170,7 @@ W.icon_state = initial(W.icon_state) W.cut_overlays() src.r_leg = W - src.updateicon() + update_icon() else if(istype(W, /obj/item/bodypart/l_arm/robot)) if(src.l_arm) @@ -180,7 +180,7 @@ W.icon_state = initial(W.icon_state) W.cut_overlays() src.l_arm = W - src.updateicon() + update_icon() else if(istype(W, /obj/item/bodypart/r_arm/robot)) if(src.r_arm) @@ -190,7 +190,7 @@ W.icon_state = initial(W.icon_state)//in case it is a dismembered robotic limb W.cut_overlays() src.r_arm = W - src.updateicon() + update_icon() else if(istype(W, /obj/item/bodypart/chest/robot)) var/obj/item/bodypart/chest/robot/CH = W @@ -202,7 +202,7 @@ CH.icon_state = initial(CH.icon_state) //in case it is a dismembered robotic limb CH.cut_overlays() src.chest = CH - src.updateicon() + update_icon() else if(!CH.wired) to_chat(user, "You need to attach wires to it first!") else @@ -222,7 +222,7 @@ HD.icon_state = initial(HD.icon_state)//in case it is a dismembered robotic limb HD.cut_overlays() src.head = HD - src.updateicon() + update_icon() else to_chat(user, "You need to attach a flash to it first!") diff --git a/code/game/objects/structures/divine.dm b/code/game/objects/structures/divine.dm index 5fd480f6fd..b8137d831b 100644 --- a/code/game/objects/structures/divine.dm +++ b/code/game/objects/structures/divine.dm @@ -40,11 +40,11 @@ last_process = world.time to_chat(user, "The water feels warm and soothing as you touch it. The fountain immediately dries up shortly afterwards.") user.reagents.add_reagent("godblood",20) - update_icons() - addtimer(CALLBACK(src, .proc/update_icons), time_between_uses) + update_icon() + addtimer(CALLBACK(src, .proc/update_icon), time_between_uses) -/obj/structure/healingfountain/proc/update_icons() +/obj/structure/healingfountain/update_icon() if(last_process + time_between_uses > world.time) icon_state = "fountain" else diff --git a/code/modules/mob/living/silicon/robot/robot.dm b/code/modules/mob/living/silicon/robot/robot.dm index 01edaba8ec..c5c2beb999 100644 --- a/code/modules/mob/living/silicon/robot/robot.dm +++ b/code/modules/mob/living/silicon/robot/robot.dm @@ -834,7 +834,7 @@ robot_suit.head.flash2.burn_out() robot_suit.head.flash2 = null robot_suit.head = null - robot_suit.updateicon() + robot_suit.update_icon() else new /obj/item/robot_suit(T) new /obj/item/bodypart/l_leg/robot(T) diff --git a/code/modules/power/singularity/collector.dm b/code/modules/power/singularity/collector.dm index b1b0d2d718..054b91f273 100644 --- a/code/modules/power/singularity/collector.dm +++ b/code/modules/power/singularity/collector.dm @@ -110,7 +110,7 @@ if(!user.transferItemToLoc(W, src)) return loaded_tank = W - update_icons() + update_icon() else if(W.GetID()) if(allowed(user)) if(active) @@ -197,14 +197,14 @@ if(active) toggle_power() else - update_icons() + update_icon() /obj/machinery/power/rad_collector/rad_act(pulse_strength) . = ..() if(loaded_tank && active && pulse_strength > RAD_COLLECTOR_EFFICIENCY) stored_power += (pulse_strength-RAD_COLLECTOR_EFFICIENCY)*RAD_COLLECTOR_COEFFICIENT -/obj/machinery/power/rad_collector/proc/update_icons() +/obj/machinery/power/rad_collector/update_icon() cut_overlays() if(loaded_tank) add_overlay("ptank") @@ -222,7 +222,7 @@ else icon_state = "ca" flick("ca_deactive", src) - update_icons() + update_icon() return #undef RAD_COLLECTOR_EFFICIENCY From 274f35dd23c4abbdad6708d79c7fd41e2d601357 Mon Sep 17 00:00:00 2001 From: CitadelStationBot Date: Mon, 16 Dec 2019 19:05:13 -0600 Subject: [PATCH 47/61] Automatic changelog generation for PR #10180 [ci skip] --- html/changelogs/AutoChangeLog-pr-10180.yml | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-10180.yml diff --git a/html/changelogs/AutoChangeLog-pr-10180.yml b/html/changelogs/AutoChangeLog-pr-10180.yml new file mode 100644 index 0000000000..0a22910940 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-10180.yml @@ -0,0 +1,5 @@ +author: "Ghommie" +delete-after: True +changes: + - bugfix: "Fixes a ghostchat eavesdropping exploit concerning VR." + - bugfix: "Fixes VR deaths being broadcasted in deadchat." From 4011f9a1e1b28c495a672a7c7f1c9b8ea6058261 Mon Sep 17 00:00:00 2001 From: CitadelStationBot Date: Mon, 16 Dec 2019 19:08:30 -0600 Subject: [PATCH 48/61] Automatic changelog generation for PR #10181 [ci skip] --- html/changelogs/AutoChangeLog-pr-10181.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-10181.yml diff --git a/html/changelogs/AutoChangeLog-pr-10181.yml b/html/changelogs/AutoChangeLog-pr-10181.yml new file mode 100644 index 0000000000..bb00ab1012 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-10181.yml @@ -0,0 +1,4 @@ +author: "Ghommie" +delete-after: True +changes: + - bugfix: "Fixed a few pill bottle issues with the ChemMaster." From 6b7dcbceb04e49567e7533dd4084ab0c79c64c91 Mon Sep 17 00:00:00 2001 From: Ghommie <42542238+Ghommie@users.noreply.github.com> Date: Tue, 17 Dec 2019 03:19:07 +0100 Subject: [PATCH 49/61] Porting a few martial art code updates. --- code/__DEFINES/traits.dm | 2 + code/datums/martial.dm | 12 +-- code/datums/martial/cqc.dm | 69 ++++++------ code/datums/martial/sleeping_carp.dm | 102 ++++++++++-------- code/datums/mutations/hulk.dm | 2 + .../objects/items/devices/laserpointer.dm | 7 +- .../mob/living/carbon/human/human_helpers.dm | 6 +- .../carbon/human/species_types/abductors.dm | 2 +- .../carbon/human/species_types/golems.dm | 16 +-- .../human/species_types/lizardpeople.dm | 2 +- .../human/species_types/shadowpeople.dm | 2 +- 11 files changed, 113 insertions(+), 109 deletions(-) diff --git a/code/__DEFINES/traits.dm b/code/__DEFINES/traits.dm index 8cc8960b01..d17db07b50 100644 --- a/code/__DEFINES/traits.dm +++ b/code/__DEFINES/traits.dm @@ -66,6 +66,7 @@ #define TRAIT_HUSK "husk" #define TRAIT_NOCLONE "noclone" #define TRAIT_CLUMSY "clumsy" +#define TRAIT_CHUNKYFINGERS "chunkyfingers" //means that you can't use weapons with normal trigger guards. #define TRAIT_DUMB "dumb" #define TRAIT_MONKEYLIKE "monkeylike" //sets IsAdvancedToolUser to FALSE #define TRAIT_PACIFISM "pacifism" @@ -223,5 +224,6 @@ #define LOCKED_HELMET_TRAIT "locked-helmet" #define NINJA_SUIT_TRAIT "ninja-suit" #define ANTI_DROP_IMPLANT_TRAIT "anti-drop-implant" +#define SLEEPING_CARP_TRAIT "sleeping_carp" #define ABDUCTOR_ANTAGONIST "abductor-antagonist" #define MADE_UNCLONEABLE "made-uncloneable" diff --git a/code/datums/martial.dm b/code/datums/martial.dm index 26a709590c..32850c69df 100644 --- a/code/datums/martial.dm +++ b/code/datums/martial.dm @@ -8,9 +8,7 @@ var/deflection_chance = 0 //Chance to deflect projectiles var/reroute_deflection = FALSE //Delete the bullet, or actually deflect it in some direction? var/block_chance = 0 //Chance to block melee attacks using items while on throw mode. - var/restraining = 0 //used in cqc's disarm_act to check if the disarmed is being restrained and so whether they should be put in a chokehold or not var/help_verb - var/no_guns = FALSE var/pacifism_check = TRUE //are the martial arts combos/attacks unable to be used by pacifist. var/allow_temp_override = TRUE //if this martial art can be overridden by temporary martial arts @@ -28,14 +26,16 @@ /datum/martial_art/proc/add_to_streak(element,mob/living/carbon/human/D) if(D != current_target) - current_target = D - streak = "" - restraining = 0 + reset_streak(D) streak = streak+element if(length(streak) > max_streak_length) streak = copytext(streak,2) return +/datum/martial_art/proc/reset_streak(mob/living/carbon/human/new_target) + current_target = new_target + streak = "" + /datum/martial_art/proc/basic_hit(mob/living/carbon/human/A,mob/living/carbon/human/D) var/damage = rand(A.dna.species.punchdamagelow, A.dna.species.punchdamagehigh) @@ -81,7 +81,7 @@ D.forcesay(GLOB.hit_appends) return 1 -/datum/martial_art/proc/teach(mob/living/carbon/human/H,make_temporary=0) +/datum/martial_art/proc/teach(mob/living/carbon/human/H, make_temporary = FALSE) if(!istype(H) || !H.mind) return FALSE if(H.mind.martial_art) diff --git a/code/datums/martial/cqc.dm b/code/datums/martial/cqc.dm index 73173a4a9a..09a493a670 100644 --- a/code/datums/martial/cqc.dm +++ b/code/datums/martial/cqc.dm @@ -9,24 +9,13 @@ id = MARTIALART_CQC help_verb = /mob/living/carbon/human/proc/CQC_help block_chance = 75 - var/just_a_cook = FALSE - var/static/list/areas_under_siege = typecacheof(list(/area/crew_quarters/kitchen, - /area/crew_quarters/cafeteria, - /area/crew_quarters/bar)) + var/old_grab_state = null + var/restraining = FALSE -/datum/martial_art/cqc/under_siege - name = "Close Quarters Cooking" - just_a_cook = TRUE - -/datum/martial_art/cqc/proc/drop_restraining() +/datum/martial_art/cqc/reset_streak(mob/living/carbon/human/new_target) + . = ..() restraining = FALSE -/datum/martial_art/cqc/can_use(mob/living/carbon/human/H) - var/area/A = get_area(H) - if(just_a_cook && !(is_type_in_typecache(A, areas_under_siege))) - return FALSE - return ..() - /datum/martial_art/cqc/proc/check_streak(mob/living/carbon/human/A, mob/living/carbon/human/D) if(!can_use(A)) return FALSE @@ -75,6 +64,7 @@ D.apply_damage(10, BRUTE) log_combat(A, D, "kicked (CQC)") if(D.IsKnockdown() && !D.stat) + log_combat(A, D, "knocked out (Head kick)(CQC)") D.visible_message("[A] kicks [D]'s head, knocking [D.p_them()] out!", \ "[A] kicks your head, knocking you out!") playsound(get_turf(A), 'sound/weapons/genhit1.ogg', 50, 1, -1) @@ -85,7 +75,8 @@ /datum/martial_art/cqc/proc/Pressure(mob/living/carbon/human/A, mob/living/carbon/human/D) if(!can_use(A)) return FALSE - D.visible_message("[A] forces their arm on [D]'s neck!") + log_combat(A, D, "pressured (CQC)") + D.visible_message("[A] punches [D]'s neck!") D.adjustStaminaLoss(60) playsound(get_turf(A), 'sound/weapons/cqchit1.ogg', 50, 1, -1) return TRUE @@ -96,18 +87,20 @@ if(!can_use(A)) return FALSE if(!D.stat) + log_combat(A, D, "restrained (CQC)") D.visible_message("[A] locks [D] into a restraining position!", \ "[A] locks you into a restraining position!") D.adjustStaminaLoss(20) D.Stun(100) restraining = TRUE - addtimer(CALLBACK(src, .proc/drop_restraining), 50, TIMER_UNIQUE) + addtimer(VARSET_CALLBACK(src, restraining, FALSE), 50, TIMER_UNIQUE) return TRUE /datum/martial_art/cqc/proc/Consecutive(mob/living/carbon/human/A, mob/living/carbon/human/D) if(!can_use(A)) return FALSE if(!D.stat) + log_combat(A, D, "consecutive CQC'd (CQC)") D.visible_message("[A] strikes [D]'s abdomen, neck and back consecutively", \ "[A] strikes your abdomen, neck and back consecutively!") playsound(get_turf(D), 'sound/weapons/cqchit2.ogg', 50, 1, -1) @@ -119,23 +112,20 @@ return TRUE /datum/martial_art/cqc/grab_act(mob/living/carbon/human/A, mob/living/carbon/human/D) - if(!can_use(A)) - return FALSE - add_to_streak("G",D) - if(check_streak(A,D)) - return TRUE - if(A == D) // no self grab. - return FALSE - if(A.grab_state >= GRAB_AGGRESSIVE) + if(A.a_intent == INTENT_GRAB && A!=D && can_use(A)) // A!=D prevents grabbing yourself + add_to_streak("G",D) + if(check_streak(A,D)) //if a combo is made no grab upgrade is done + return TRUE + old_grab_state = A.grab_state D.grabbedby(A, 1) - else - A.start_pulling(D, 1) - if(A.pulling) - D.stop_pulling() + if(old_grab_state == GRAB_PASSIVE) + D.drop_all_held_items() + A.grab_state = GRAB_AGGRESSIVE //Instant agressive grab if on grab intent log_combat(A, D, "grabbed", addition="aggressively") - A.grab_state = GRAB_AGGRESSIVE //Instant aggressive grab - - return TRUE + D.visible_message("[A] violently grabs [D]!", \ + "[A] violently grabs you!") + return TRUE + return FALSE /datum/martial_art/cqc/harm_act(mob/living/carbon/human/A, mob/living/carbon/human/D) if(!can_use(A)) @@ -190,6 +180,7 @@ playsound(D, 'sound/weapons/punchmiss.ogg', 25, 1, -1) log_combat(A, D, "disarmed (CQC)", "[I ? " grabbing \the [I]" : ""]") if(restraining && A.pulling == D) + log_combat(A, D, "knocked out (Chokehold)(CQC)") D.visible_message("[A] puts [D] into a chokehold!", \ "[A] puts you into a chokehold!") D.SetSleeping(400) @@ -208,9 +199,19 @@ to_chat(usr, "You try to remember some of the basics of CQC.") to_chat(usr, "Slam: Grab Harm. Slam opponent into the ground, knocking them down.") - to_chat(usr, "CQC Kick: Disarm Harm Harm. Knocks opponent away. Knocks out stunned or knocked down opponents.") - to_chat(usr, "Restrain: Grab Grab. Locks opponents into a restraining position, disarm to knock them out with a choke hold.") + to_chat(usr, "CQC Kick: Harm Harm. Knocks opponent away. Knocks out stunned or knocked down opponents.") + to_chat(usr, "Restrain: Grab Grab. Locks opponents into a restraining position, disarm to knock them out with a chokehold.") to_chat(usr, "Pressure: Disarm Grab. Decent stamina damage.") to_chat(usr, "Consecutive CQC: Disarm Disarm Harm. Mainly offensive move, huge damage and decent stamina damage.") to_chat(usr, "In addition, by having your throw mode on when being attacked, you enter an active defense mode where you have a chance to block and sometimes even counter attacks done to you.") + +///Subtype of CQC. Only used for the chef. +/datum/martial_art/cqc/under_siege + name = "Close Quarters Cooking" + +///Prevents use if the cook is not in the kitchen. +/datum/martial_art/cqc/under_siege/can_use(mob/living/carbon/human/H) //this is used to make chef CQC only work in kitchen + if(!istype(get_area(H), /area/crew_quarters/kitchen)) + return FALSE + return ..() diff --git a/code/datums/martial/sleeping_carp.dm b/code/datums/martial/sleeping_carp.dm index f89374dc2a..bb652208ee 100644 --- a/code/datums/martial/sleeping_carp.dm +++ b/code/datums/martial/sleeping_carp.dm @@ -9,35 +9,36 @@ id = MARTIALART_SLEEPINGCARP deflection_chance = 100 reroute_deflection = TRUE - no_guns = TRUE allow_temp_override = FALSE help_verb = /mob/living/carbon/human/proc/sleeping_carp_help + var/old_grab_state = null /datum/martial_art/the_sleeping_carp/proc/check_streak(mob/living/carbon/human/A, mob/living/carbon/human/D) if(findtext(streak,WRIST_WRENCH_COMBO)) streak = "" wristWrench(A,D) - return 1 + return TRUE if(findtext(streak,BACK_KICK_COMBO)) streak = "" backKick(A,D) - return 1 + return TRUE if(findtext(streak,STOMACH_KNEE_COMBO)) streak = "" kneeStomach(A,D) - return 1 + return TRUE if(findtext(streak,HEAD_KICK_COMBO)) streak = "" headKick(A,D) - return 1 + return TRUE if(findtext(streak,ELBOW_DROP_COMBO)) streak = "" elbowDrop(A,D) - return 1 - return 0 + return TRUE + return FALSE /datum/martial_art/the_sleeping_carp/proc/wristWrench(mob/living/carbon/human/A, mob/living/carbon/human/D) if(!D.stat && !D.IsStun() && !D.IsKnockdown()) + log_combat(A, D, "wrist wrenched (Sleeping Carp)") A.do_attack_animation(D, ATTACK_EFFECT_PUNCH) D.visible_message("[A] grabs [D]'s wrist and wrenches it sideways!", \ "[A] grabs your wrist and violently wrenches it to the side!") @@ -46,24 +47,29 @@ D.dropItemToGround(D.get_active_held_item()) D.apply_damage(5, BRUTE, pick(BODY_ZONE_L_ARM, BODY_ZONE_R_ARM)) D.Knockdown(60)//CIT CHANGE - makes sleepingcarp use knockdown() for its stuns instead of stun() - return 1 - log_combat(A, D, "wrist wrenched (Sleeping Carp)") + return TRUE return basic_hit(A,D) /datum/martial_art/the_sleeping_carp/proc/backKick(mob/living/carbon/human/A, mob/living/carbon/human/D) - if(A.dir == D.dir && !D.stat && !D.IsKnockdown()) - A.do_attack_animation(D, ATTACK_EFFECT_PUNCH) - D.visible_message("[A] kicks [D] in the back!", \ - "[A] kicks you in the back, making you stumble and fall!") - step_to(D,get_step(D,D.dir),1) - D.Knockdown(80) - playsound(get_turf(D), 'sound/weapons/punch1.ogg', 50, 1, -1) - return 1 - log_combat(A, D, "back-kicked (Sleeping Carp)") + if(!D.stat && !D.IsKnockdown()) + if(A.dir == D.dir) + log_combat(A, D, "back-kicked (Sleeping Carp)") + A.do_attack_animation(D, ATTACK_EFFECT_PUNCH) + D.visible_message("[A] kicks [D] in the back!", \ + "[A] kicks you in the back, making you stumble and fall!") + step_to(D,get_step(D,D.dir),1) + D.Knockdown(80) + playsound(get_turf(D), 'sound/weapons/punch1.ogg', 50, 1, -1) + return TRUE + else + log_combat(A, D, "missed a back-kick (Sleeping Carp) on") + D.visible_message("[A] tries to kick [D] in the back, but misses!", \ + "[A] tries to kick you in the back, but misses!") return basic_hit(A,D) /datum/martial_art/the_sleeping_carp/proc/kneeStomach(mob/living/carbon/human/A, mob/living/carbon/human/D) if(!D.stat && !D.IsKnockdown()) + log_combat(A, D, "stomach kneed (Sleeping Carp)") A.do_attack_animation(D, ATTACK_EFFECT_KICK) D.visible_message("[A] knees [D] in the stomach!", \ "[A] winds you with a knee in the stomach!") @@ -71,12 +77,12 @@ D.losebreath += 3 D.Knockdown(40)//CIT CHANGE - makes sleepingcarp use knockdown() for its stuns instead of stun() playsound(get_turf(D), 'sound/weapons/punch1.ogg', 50, 1, -1) - return 1 - log_combat(A, D, "stomach kneed (Sleeping Carp)") + return TRUE return basic_hit(A,D) /datum/martial_art/the_sleeping_carp/proc/headKick(mob/living/carbon/human/A, mob/living/carbon/human/D) if(!D.stat && !D.IsKnockdown()) + log_combat(A, D, "head kicked (Sleeping Carp)") A.do_attack_animation(D, ATTACK_EFFECT_KICK) D.visible_message("[A] kicks [D] in the head!", \ "[A] kicks you in the jaw!") @@ -84,12 +90,12 @@ D.drop_all_held_items() playsound(get_turf(D), 'sound/weapons/punch1.ogg', 50, 1, -1) D.Knockdown(80)//CIT CHANGE - makes sleepingcarp use knockdown() for its stuns instead of stun() - return 1 - log_combat(A, D, "head kicked (Sleeping Carp)") + return TRUE return basic_hit(A,D) /datum/martial_art/the_sleeping_carp/proc/elbowDrop(mob/living/carbon/human/A, mob/living/carbon/human/D) if(D.IsKnockdown() || D.resting || D.stat) + log_combat(A, D, "elbow dropped (Sleeping Carp)") A.do_attack_animation(D, ATTACK_EFFECT_PUNCH) D.visible_message("[A] elbow drops [D]!", \ "[A] piledrives you with their elbow!") @@ -97,37 +103,29 @@ D.death() //FINISH HIM! D.apply_damage(50, BRUTE, BODY_ZONE_CHEST) playsound(get_turf(D), 'sound/weapons/punch1.ogg', 75, 1, -1) - return 1 - log_combat(A, D, "elbow dropped (Sleeping Carp)") + return TRUE return basic_hit(A,D) /datum/martial_art/the_sleeping_carp/grab_act(mob/living/carbon/human/A, mob/living/carbon/human/D) - add_to_streak("G",D) - if(check_streak(A,D)) - return 1 - if(A == D) //no self grab stun - return FALSE - if(A.grab_state >= GRAB_AGGRESSIVE) + if(A.a_intent == INTENT_GRAB && A!=D) // A!=D prevents grabbing yourself + add_to_streak("G",D) + if(check_streak(A,D)) //if a combo is made no grab upgrade is done + return TRUE + old_grab_state = A.grab_state D.grabbedby(A, 1) - else - A.start_pulling(D, 1) - if(A.pulling) + if(old_grab_state == GRAB_PASSIVE) D.drop_all_held_items() - D.stop_pulling() - if(A.a_intent == INTENT_GRAB) - log_combat(A, D, "grabbed", addition="aggressively") - D.visible_message("[A] violently grabs [D]!", \ - "[A] violently grabs you!") - A.grab_state = GRAB_AGGRESSIVE //Instant aggressive grab - else - log_combat(A, D, "grabbed", addition="passively") - A.grab_state = GRAB_PASSIVE - return 1 + A.grab_state = GRAB_AGGRESSIVE //Instant agressive grab if on grab intent + log_combat(A, D, "grabbed", addition="aggressively") + D.visible_message("[A] violently grabs [D]!", \ + "[A] violently grabs you!") + return TRUE + return FALSE /datum/martial_art/the_sleeping_carp/harm_act(mob/living/carbon/human/A, mob/living/carbon/human/D) add_to_streak("H",D) if(check_streak(A,D)) - return 1 + return TRUE A.do_attack_animation(D, ATTACK_EFFECT_PUNCH) var/atk_verb = pick("punches", "kicks", "chops", "hits", "slams") D.visible_message("[A] [atk_verb] [D]!", \ @@ -138,15 +136,25 @@ D.visible_message("[D] stumbles and falls!", "The blow sends you to the ground!") D.Knockdown(80) log_combat(A, D, "[atk_verb] (Sleeping Carp)") - return 1 + return TRUE /datum/martial_art/the_sleeping_carp/disarm_act(mob/living/carbon/human/A, mob/living/carbon/human/D) add_to_streak("D",D) if(check_streak(A,D)) - return 1 + return TRUE return ..() +/datum/martial_art/the_sleeping_carp/teach(mob/living/carbon/human/H, make_temporary = FALSE) + . = ..() + if(!.) + return + ADD_TRAIT(H, TRAIT_NOGUNS, SLEEPING_CARP_TRAIT) + +/datum/martial_art/the_sleeping_carp/on_remove(mob/living/carbon/human/H) + . = ..() + REMOVE_TRAIT(H, TRAIT_NOGUNS, SLEEPING_CARP_TRAIT) + /mob/living/carbon/human/proc/sleeping_carp_help() set name = "Recall Teachings" set desc = "Remember the martial techniques of the Sleeping Carp clan." @@ -233,4 +241,4 @@ /obj/item/twohanded/bostaff/hit_reaction(mob/living/carbon/human/owner, atom/movable/hitby, attack_text = "the attack", final_block_chance = 0, damage = 0, attack_type = MELEE_ATTACK) if(wielded) return ..() - return 0 + return FALSE diff --git a/code/datums/mutations/hulk.dm b/code/datums/mutations/hulk.dm index 3d07e6066f..c536196e95 100644 --- a/code/datums/mutations/hulk.dm +++ b/code/datums/mutations/hulk.dm @@ -13,6 +13,7 @@ return ADD_TRAIT(owner, TRAIT_STUNIMMUNE, TRAIT_HULK) ADD_TRAIT(owner, TRAIT_PUSHIMMUNE, TRAIT_HULK) + ADD_TRAIT(owner, TRAIT_CHUNKYFINGERS, TRAIT_HULK) owner.update_body_parts() SEND_SIGNAL(owner, COMSIG_ADD_MOOD_EVENT, "hulk", /datum/mood_event/hulk) RegisterSignal(owner, COMSIG_MOB_SAY, .proc/handle_speech) @@ -31,6 +32,7 @@ return REMOVE_TRAIT(owner, TRAIT_STUNIMMUNE, TRAIT_HULK) REMOVE_TRAIT(owner, TRAIT_PUSHIMMUNE, TRAIT_HULK) + ADD_TRAIT(owner, TRAIT_CHUNKYFINGERS, TRAIT_HULK) owner.update_body_parts() SEND_SIGNAL(owner, COMSIG_CLEAR_MOOD_EVENT, "hulk") UnregisterSignal(owner, COMSIG_MOB_SAY) diff --git a/code/game/objects/items/devices/laserpointer.dm b/code/game/objects/items/devices/laserpointer.dm index 7baea7f488..1654ecde41 100644 --- a/code/game/objects/items/devices/laserpointer.dm +++ b/code/game/objects/items/devices/laserpointer.dm @@ -69,14 +69,9 @@ if (!user.IsAdvancedToolUser()) to_chat(user, "You don't have the dexterity to do this!") return - if(HAS_TRAIT(user, TRAIT_NOGUNS)) + if(HAS_TRAIT(user, TRAIT_CHUNKYFINGERS)) to_chat(user, "Your fingers can't press the button!") return - if(ishuman(user)) - var/mob/living/carbon/human/H = user - if(H.dna.check_mutation(HULK)) - to_chat(user, "Your fingers can't press the button!") - return add_fingerprint(user) diff --git a/code/modules/mob/living/carbon/human/human_helpers.dm b/code/modules/mob/living/carbon/human/human_helpers.dm index 8071d632ea..63d02af31a 100644 --- a/code/modules/mob/living/carbon/human/human_helpers.dm +++ b/code/modules/mob/living/carbon/human/human_helpers.dm @@ -119,16 +119,12 @@ . = ..() if(G.trigger_guard == TRIGGER_GUARD_NORMAL) - if(src.dna.check_mutation(HULK)) + if(HAS_TRAIT(src, TRAIT_CHUNKYFINGERS)) to_chat(src, "Your meaty finger is much too large for the trigger guard!") return FALSE if(HAS_TRAIT(src, TRAIT_NOGUNS)) to_chat(src, "Your fingers don't fit in the trigger guard!") return FALSE - if(mind) - if(mind.martial_art && mind.martial_art.no_guns) //great dishonor to famiry - to_chat(src, "Use of ranged weaponry would bring dishonor to the clan.") - return FALSE return . /* diff --git a/code/modules/mob/living/carbon/human/species_types/abductors.dm b/code/modules/mob/living/carbon/human/species_types/abductors.dm index ffd129ebf7..6e54e320ff 100644 --- a/code/modules/mob/living/carbon/human/species_types/abductors.dm +++ b/code/modules/mob/living/carbon/human/species_types/abductors.dm @@ -4,7 +4,7 @@ say_mod = "gibbers" sexes = FALSE species_traits = list(NOBLOOD,NOEYES,NOGENITALS,NOAROUSAL) - inherent_traits = list(TRAIT_VIRUSIMMUNE,TRAIT_NOGUNS,TRAIT_NOHUNGER,TRAIT_NOBREATH) + inherent_traits = list(TRAIT_VIRUSIMMUNE,TRAIT_CHUNKYFINGERS,TRAIT_NOHUNGER,TRAIT_NOBREATH) mutanttongue = /obj/item/organ/tongue/abductor /datum/species/abductor/on_species_gain(mob/living/carbon/C, datum/species/old_species) diff --git a/code/modules/mob/living/carbon/human/species_types/golems.dm b/code/modules/mob/living/carbon/human/species_types/golems.dm index 48ce55a052..3d6c5092e1 100644 --- a/code/modules/mob/living/carbon/human/species_types/golems.dm +++ b/code/modules/mob/living/carbon/human/species_types/golems.dm @@ -3,7 +3,7 @@ name = "Golem" id = "iron golem" species_traits = list(NOBLOOD,MUTCOLORS,NO_UNDERWEAR,NOGENITALS,NOAROUSAL) - inherent_traits = list(TRAIT_RESISTHEAT,TRAIT_NOBREATH,TRAIT_RESISTCOLD,TRAIT_RESISTHIGHPRESSURE,TRAIT_RESISTLOWPRESSURE,TRAIT_NOFIRE,TRAIT_NOGUNS,TRAIT_RADIMMUNE,TRAIT_PIERCEIMMUNE,TRAIT_NODISMEMBER) + inherent_traits = list(TRAIT_RESISTHEAT,TRAIT_NOBREATH,TRAIT_RESISTCOLD,TRAIT_RESISTHIGHPRESSURE,TRAIT_RESISTLOWPRESSURE,TRAIT_NOFIRE,TRAIT_CHUNKYFINGERS,TRAIT_RADIMMUNE,TRAIT_PIERCEIMMUNE,TRAIT_NODISMEMBER) inherent_biotypes = list(MOB_INORGANIC, MOB_HUMANOID) mutant_organs = list(/obj/item/organ/adamantine_resonator) speedmod = 2 @@ -88,7 +88,7 @@ fixed_mut_color = "a3d" meat = /obj/item/stack/ore/plasma //Can burn and takes damage from heat - inherent_traits = list(TRAIT_NOBREATH, TRAIT_RESISTCOLD,TRAIT_RESISTHIGHPRESSURE,TRAIT_RESISTLOWPRESSURE,TRAIT_NOGUNS,TRAIT_RADIMMUNE,TRAIT_PIERCEIMMUNE,TRAIT_NODISMEMBER) //no RESISTHEAT, NOFIRE + inherent_traits = list(TRAIT_NOBREATH, TRAIT_RESISTCOLD,TRAIT_RESISTHIGHPRESSURE,TRAIT_RESISTLOWPRESSURE,TRAIT_CHUNKYFINGERS,TRAIT_RADIMMUNE,TRAIT_PIERCEIMMUNE,TRAIT_NODISMEMBER) //no RESISTHEAT, NOFIRE info_text = "As a Plasma Golem, you burn easily. Be careful, if you get hot enough while burning, you'll blow up!" heatmod = 0 //fine until they blow up prefix = "Plasma" @@ -266,7 +266,7 @@ fixed_mut_color = "9E704B" meat = /obj/item/stack/sheet/mineral/wood //Can burn and take damage from heat - inherent_traits = list(TRAIT_NOBREATH, TRAIT_RESISTCOLD,TRAIT_RESISTHIGHPRESSURE,TRAIT_RESISTLOWPRESSURE,TRAIT_NOGUNS,TRAIT_RADIMMUNE,TRAIT_PIERCEIMMUNE,TRAIT_NODISMEMBER) + inherent_traits = list(TRAIT_NOBREATH, TRAIT_RESISTCOLD,TRAIT_RESISTHIGHPRESSURE,TRAIT_RESISTLOWPRESSURE,TRAIT_CHUNKYFINGERS,TRAIT_RADIMMUNE,TRAIT_PIERCEIMMUNE,TRAIT_NODISMEMBER) armor = 30 burnmod = 1.25 heatmod = 1.5 @@ -693,7 +693,7 @@ info_text = "As a Cloth Golem, you are able to reform yourself after death, provided your remains aren't burned or destroyed. You are, of course, very flammable. \ Being made of cloth, your body is magic resistant and faster than that of other golems, but weaker and less resilient." species_traits = list(NOBLOOD,NO_UNDERWEAR,NOGENITALS,NOAROUSAL) //no mutcolors, and can burn - inherent_traits = list(TRAIT_RESISTCOLD,TRAIT_NOBREATH,TRAIT_RESISTHIGHPRESSURE,TRAIT_RESISTLOWPRESSURE,TRAIT_RADIMMUNE,TRAIT_PIERCEIMMUNE,TRAIT_NODISMEMBER,TRAIT_NOGUNS) + inherent_traits = list(TRAIT_RESISTCOLD,TRAIT_NOBREATH,TRAIT_RESISTHIGHPRESSURE,TRAIT_RESISTLOWPRESSURE,TRAIT_RADIMMUNE,TRAIT_PIERCEIMMUNE,TRAIT_NODISMEMBER,TRAIT_CHUNKYFINGERS) inherent_biotypes = list(MOB_UNDEAD, MOB_HUMANOID) armor = 15 //feels no pain, but not too resistant burnmod = 2 // don't get burned @@ -893,7 +893,7 @@ special_names = list("Box") info_text = "As a Cardboard Golem, you aren't very strong, but you are a bit quicker and can easily create more brethren by using cardboard on yourself." species_traits = list(NOBLOOD,NO_UNDERWEAR,NOGENITALS,NOAROUSAL,MUTCOLORS) - inherent_traits = list(TRAIT_NOBREATH, TRAIT_RESISTCOLD,TRAIT_RESISTHIGHPRESSURE,TRAIT_RESISTLOWPRESSURE,TRAIT_NOGUNS,TRAIT_RADIMMUNE,TRAIT_PIERCEIMMUNE,TRAIT_NODISMEMBER) + inherent_traits = list(TRAIT_NOBREATH, TRAIT_RESISTCOLD,TRAIT_RESISTHIGHPRESSURE,TRAIT_RESISTLOWPRESSURE,TRAIT_CHUNKYFINGERS,TRAIT_RADIMMUNE,TRAIT_PIERCEIMMUNE,TRAIT_NODISMEMBER) fixed_mut_color = "ffffff" limbs_id = "c_golem" //special sprites attack_verb = "bash" @@ -936,7 +936,7 @@ name = "Leather Golem" id = "leather golem" special_names = list("Face", "Man", "Belt") //Ah dude 4 strength 4 stam leather belt AHHH - inherent_traits = list(TRAIT_NOBREATH, TRAIT_RESISTCOLD,TRAIT_RESISTHIGHPRESSURE,TRAIT_RESISTLOWPRESSURE,TRAIT_NOGUNS,TRAIT_RADIMMUNE,TRAIT_PIERCEIMMUNE,TRAIT_NODISMEMBER, TRAIT_STRONG_GRABBER) + inherent_traits = list(TRAIT_NOBREATH, TRAIT_RESISTCOLD,TRAIT_RESISTHIGHPRESSURE,TRAIT_RESISTLOWPRESSURE,TRAIT_CHUNKYFINGERS,TRAIT_RADIMMUNE,TRAIT_PIERCEIMMUNE,TRAIT_NODISMEMBER, TRAIT_STRONG_GRABBER) prefix = "Leather" fixed_mut_color = "624a2e" info_text = "As a Leather Golem, you are flammable, but you can grab things with incredible ease, allowing all your grabs to start at a strong level." @@ -952,7 +952,7 @@ special_names = list("Boll","Weave") species_traits = list(NOBLOOD,NO_UNDERWEAR,NOEYES) fixed_mut_color = null - inherent_traits = list(TRAIT_NOBREATH, TRAIT_RESISTCOLD,TRAIT_RESISTHIGHPRESSURE,TRAIT_RESISTLOWPRESSURE,TRAIT_NOGUNS,TRAIT_RADIMMUNE,TRAIT_PIERCEIMMUNE,TRAIT_NODISMEMBER) + inherent_traits = list(TRAIT_NOBREATH, TRAIT_RESISTCOLD,TRAIT_RESISTHIGHPRESSURE,TRAIT_RESISTLOWPRESSURE,TRAIT_CHUNKYFINGERS,TRAIT_RADIMMUNE,TRAIT_PIERCEIMMUNE,TRAIT_NODISMEMBER) info_text = "As a Durathread Golem, your strikes will cause those your targets to start choking, but your woven body won't withstand fire as well." /datum/species/golem/durathread/spec_unarmedattacked(mob/living/carbon/human/user, mob/living/carbon/human/target) @@ -974,7 +974,7 @@ fixed_mut_color = "ffffff" attack_verb = "rattl" species_traits = list(NOBLOOD,NO_UNDERWEAR,NOGENITALS,NOAROUSAL,MUTCOLORS) - inherent_traits = list(TRAIT_RESISTHEAT,TRAIT_NOBREATH,TRAIT_RESISTCOLD,TRAIT_RESISTHIGHPRESSURE,TRAIT_RESISTLOWPRESSURE,TRAIT_NOFIRE,TRAIT_NOGUNS,TRAIT_RADIMMUNE,TRAIT_PIERCEIMMUNE,TRAIT_NODISMEMBER,TRAIT_FAKEDEATH,TRAIT_CALCIUM_HEALER) + inherent_traits = list(TRAIT_RESISTHEAT,TRAIT_NOBREATH,TRAIT_RESISTCOLD,TRAIT_RESISTHIGHPRESSURE,TRAIT_RESISTLOWPRESSURE,TRAIT_NOFIRE,TRAIT_CHUNKYFINGERS,TRAIT_RADIMMUNE,TRAIT_PIERCEIMMUNE,TRAIT_NODISMEMBER,TRAIT_FAKEDEATH,TRAIT_CALCIUM_HEALER) info_text = "As a Bone Golem, You have a powerful spell that lets you chill your enemies with fear, and milk heals you! Just make sure to watch our for bone-hurting juice." var/datum/action/innate/bonechill/bonechill diff --git a/code/modules/mob/living/carbon/human/species_types/lizardpeople.dm b/code/modules/mob/living/carbon/human/species_types/lizardpeople.dm index c0973102d6..9317a51050 100644 --- a/code/modules/mob/living/carbon/human/species_types/lizardpeople.dm +++ b/code/modules/mob/living/carbon/human/species_types/lizardpeople.dm @@ -94,7 +94,7 @@ id = "ashlizard" limbs_id = "lizard" species_traits = list(MUTCOLORS,EYECOLOR,LIPS,DIGITIGRADE) - inherent_traits = list(TRAIT_NOGUNS) + inherent_traits = list(TRAIT_CHUNKYFINGERS) mutantlungs = /obj/item/organ/lungs/ashwalker burnmod = 0.9 brutemod = 0.9 diff --git a/code/modules/mob/living/carbon/human/species_types/shadowpeople.dm b/code/modules/mob/living/carbon/human/species_types/shadowpeople.dm index 90f63467a0..3247c96632 100644 --- a/code/modules/mob/living/carbon/human/species_types/shadowpeople.dm +++ b/code/modules/mob/living/carbon/human/species_types/shadowpeople.dm @@ -39,7 +39,7 @@ blacklisted = TRUE no_equip = list(SLOT_WEAR_MASK, SLOT_WEAR_SUIT, SLOT_GLOVES, SLOT_SHOES, SLOT_W_UNIFORM, SLOT_S_STORE) species_traits = list(NOBLOOD,NO_UNDERWEAR,NO_DNA_COPY,NOTRANSSTING,NOEYES,NOGENITALS,NOAROUSAL) - inherent_traits = list(TRAIT_RESISTCOLD,TRAIT_NOBREATH,TRAIT_RESISTHIGHPRESSURE,TRAIT_RESISTLOWPRESSURE,TRAIT_NOGUNS,TRAIT_RADIMMUNE,TRAIT_VIRUSIMMUNE,TRAIT_PIERCEIMMUNE,TRAIT_NODISMEMBER,TRAIT_NOHUNGER) + inherent_traits = list(TRAIT_RESISTCOLD,TRAIT_NOBREATH,TRAIT_RESISTHIGHPRESSURE,TRAIT_RESISTLOWPRESSURE,TRAIT_CHUNKYFINGERS,TRAIT_RADIMMUNE,TRAIT_VIRUSIMMUNE,TRAIT_PIERCEIMMUNE,TRAIT_NODISMEMBER,TRAIT_NOHUNGER) mutanteyes = /obj/item/organ/eyes/night_vision/nightmare mutant_organs = list(/obj/item/organ/heart/nightmare) mutant_brain = /obj/item/organ/brain/nightmare From f2cf1462557472cb4ad1e417b2ce2ca2b15cec23 Mon Sep 17 00:00:00 2001 From: Ghommie <42542238+Ghommie@users.noreply.github.com> Date: Tue, 17 Dec 2019 12:49:04 +0100 Subject: [PATCH 50/61] Two slimepeople fixes. --- .../carbon/human/species_types/jellypeople.dm | 70 +++++++++---------- 1 file changed, 33 insertions(+), 37 deletions(-) diff --git a/code/modules/mob/living/carbon/human/species_types/jellypeople.dm b/code/modules/mob/living/carbon/human/species_types/jellypeople.dm index 069317d4a8..5f91e3ae66 100644 --- a/code/modules/mob/living/carbon/human/species_types/jellypeople.dm +++ b/code/modules/mob/living/carbon/human/species_types/jellypeople.dm @@ -116,6 +116,33 @@ return to_chat(H, "...but there is not enough of you to go around! You must attain more mass to heal!") +/datum/species/jelly/spec_death(gibbed, mob/living/carbon/human/H) + if(H) + stop_wagging_tail(H) + +/datum/species/jelly/spec_stun(mob/living/carbon/human/H,amount) + if(H) + stop_wagging_tail(H) + . = ..() + +/datum/species/jelly/can_wag_tail(mob/living/carbon/human/H) + return ("mam_tail" in mutant_bodyparts) || ("mam_waggingtail" in mutant_bodyparts) + +/datum/species/jelly/is_wagging_tail(mob/living/carbon/human/H) + return ("mam_waggingtail" in mutant_bodyparts) + +/datum/species/jelly/start_wagging_tail(mob/living/carbon/human/H) + if("mam_tail" in mutant_bodyparts) + mutant_bodyparts -= "mam_tail" + mutant_bodyparts |= "mam_waggingtail" + H.update_body() + +/datum/species/jelly/stop_wagging_tail(mob/living/carbon/human/H) + if("mam_waggingtail" in mutant_bodyparts) + mutant_bodyparts -= "mam_waggingtail" + mutant_bodyparts |= "mam_tail" + H.update_body() + ////////////////////////////////////////////////////////SLIMEPEOPLE/////////////////////////////////////////////////////////////////// //Slime people are able to split like slimes, retaining a single mind that can swap between bodies at will, even after death. @@ -412,34 +439,6 @@ heatmod = 1 burnmod = 1 -/datum/species/jelly/roundstartslime/spec_death(gibbed, mob/living/carbon/human/H) - if(H) - stop_wagging_tail(H) - -/datum/species/jelly/roundstartslime/spec_stun(mob/living/carbon/human/H,amount) - if(H) - stop_wagging_tail(H) - . = ..() - -/datum/species/jelly/roundstartslime/can_wag_tail(mob/living/carbon/human/H) - return ("mam_tail" in mutant_bodyparts) || ("mam_waggingtail" in mutant_bodyparts) - -/datum/species/jelly/roundstartslime/is_wagging_tail(mob/living/carbon/human/H) - return ("mam_waggingtail" in mutant_bodyparts) - -/datum/species/jelly/roundstartslime/start_wagging_tail(mob/living/carbon/human/H) - if("mam_tail" in mutant_bodyparts) - mutant_bodyparts -= "mam_tail" - mutant_bodyparts |= "mam_waggingtail" - H.update_body() - -/datum/species/jelly/roundstartslime/stop_wagging_tail(mob/living/carbon/human/H) - if("mam_waggingtail" in mutant_bodyparts) - mutant_bodyparts -= "mam_waggingtail" - mutant_bodyparts |= "mam_tail" - H.update_body() - - /datum/action/innate/slime_change name = "Alter Form" check_flags = AB_CHECK_CONSCIOUS @@ -840,19 +839,16 @@ link_minds = new(src) link_minds.Grant(C) slimelink_owner = C - link_mob(C) + link_mob(C, TRUE) -/datum/species/jelly/stargazer/proc/link_mob(mob/living/M) - if(QDELETED(M) || M.stat == DEAD) +/datum/species/jelly/stargazer/proc/link_mob(mob/living/M, selflink = FALSE) + if(QDELETED(M) || (M in linked_mobs)) return FALSE - if(HAS_TRAIT(M, TRAIT_MINDSHIELD)) //mindshield implant, no dice - return FALSE - if(M.anti_magic_check(FALSE, FALSE, TRUE, 0)) - return FALSE - if(M in linked_mobs) + if(!selflink && (M.stat == DEAD || HAS_TRAIT(M, TRAIT_MINDSHIELD) || M.anti_magic_check(FALSE, FALSE, TRUE, 0))) return FALSE linked_mobs.Add(M) - to_chat(M, "You are now connected to [slimelink_owner.real_name]'s Slime Link.") + if(!selflink) + to_chat(M, "You are now connected to [slimelink_owner.real_name]'s Slime Link.") var/datum/action/innate/linked_speech/action = new(src) linked_actions.Add(action) action.Grant(M) From e751d6bef3f16cc0f1173bcc453b862f0d66ef2e Mon Sep 17 00:00:00 2001 From: CitadelStationBot Date: Tue, 17 Dec 2019 06:02:31 -0600 Subject: [PATCH 51/61] Automatic changelog generation for PR #10072 [ci skip] --- html/changelogs/AutoChangeLog-pr-10072.yml | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-10072.yml diff --git a/html/changelogs/AutoChangeLog-pr-10072.yml b/html/changelogs/AutoChangeLog-pr-10072.yml new file mode 100644 index 0000000000..9a6f45e61e --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-10072.yml @@ -0,0 +1,5 @@ +author: "Useroth" +delete-after: True +changes: + - rscadd: "bamboo which can be used to build punji sticks/ blowguns available as a sugarcane mutation or in exotic seed crate" + - tweak: "changed the sugar cane growth stages because fuck if I know why, but it was in the PR" From a749df2596cbea673ce45b34dabedff16fe6c08c Mon Sep 17 00:00:00 2001 From: CitadelStationBot Date: Tue, 17 Dec 2019 13:22:33 -0600 Subject: [PATCH 52/61] Automatic changelog generation for PR #10225 [ci skip] --- html/changelogs/AutoChangeLog-pr-10225.yml | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-10225.yml diff --git a/html/changelogs/AutoChangeLog-pr-10225.yml b/html/changelogs/AutoChangeLog-pr-10225.yml new file mode 100644 index 0000000000..964cc68223 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-10225.yml @@ -0,0 +1,5 @@ +author: "BlueWildrose" +delete-after: True +changes: + - bugfix: "Fixed stargazers being unable to link to themselves if mindshielded or if holding psionic shielding devices (tinfoil hats) when the species is set." + - bugfix: "Fixes non-roundstart slimes being unable to wag their tail." From 85b504042ad794e452706653cdf590789144ef81 Mon Sep 17 00:00:00 2001 From: CitadelStationBot Date: Tue, 17 Dec 2019 13:32:58 -0600 Subject: [PATCH 53/61] Automatic changelog generation for PR #10203 [ci skip] --- html/changelogs/AutoChangeLog-pr-10203.yml | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-10203.yml diff --git a/html/changelogs/AutoChangeLog-pr-10203.yml b/html/changelogs/AutoChangeLog-pr-10203.yml new file mode 100644 index 0000000000..7cb4df817b --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-10203.yml @@ -0,0 +1,5 @@ +author: "DeltaFire15" +delete-after: True +changes: + - tweak: "changed mecha internals access for some special mechs." + - tweak: "no more mech maintenance access for engineers." From 6888ca7e2987731eeebeceaa05c3110815badb99 Mon Sep 17 00:00:00 2001 From: CitadelStationBot Date: Tue, 17 Dec 2019 13:33:36 -0600 Subject: [PATCH 54/61] Automatic changelog generation for PR #10157 [ci skip] --- html/changelogs/AutoChangeLog-pr-10157.yml | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-10157.yml diff --git a/html/changelogs/AutoChangeLog-pr-10157.yml b/html/changelogs/AutoChangeLog-pr-10157.yml new file mode 100644 index 0000000000..6ec495b7fc --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-10157.yml @@ -0,0 +1,5 @@ +author: "ShizCalev" +delete-after: True +changes: + - bugfix: "Fixed floodlights not turning off properly when they're underpowered." + - bugfix: "Fixed emitters not changing icons properly when they're underpowered." From 1727bf321edeaff04719b359c678f18b07d9bad2 Mon Sep 17 00:00:00 2001 From: CitadelStationBot Date: Tue, 17 Dec 2019 13:34:15 -0600 Subject: [PATCH 55/61] Automatic changelog generation for PR #10155 [ci skip] --- html/changelogs/AutoChangeLog-pr-10155.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-10155.yml diff --git a/html/changelogs/AutoChangeLog-pr-10155.yml b/html/changelogs/AutoChangeLog-pr-10155.yml new file mode 100644 index 0000000000..d82ea5ed43 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-10155.yml @@ -0,0 +1,4 @@ +author: "Seris02" +delete-after: True +changes: + - bugfix: "distance checks" From f84bb03bf6e2bb392b0398c2546db5bbbfee73b8 Mon Sep 17 00:00:00 2001 From: CitadelStationBot Date: Tue, 17 Dec 2019 13:38:37 -0600 Subject: [PATCH 56/61] Automatic changelog generation for PR #10111 [ci skip] --- html/changelogs/AutoChangeLog-pr-10111.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-10111.yml diff --git a/html/changelogs/AutoChangeLog-pr-10111.yml b/html/changelogs/AutoChangeLog-pr-10111.yml new file mode 100644 index 0000000000..0a80f01eef --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-10111.yml @@ -0,0 +1,4 @@ +author: "kappa-sama" +delete-after: True +changes: + - bugfix: "you can now strip people while aggrograbbing or higher" From d215aa2d79482bfec5723399701f0732e30f1be7 Mon Sep 17 00:00:00 2001 From: CitadelStationBot Date: Tue, 17 Dec 2019 13:47:21 -0600 Subject: [PATCH 57/61] Automatic changelog generation for PR #10216 [ci skip] --- html/changelogs/AutoChangeLog-pr-10216.yml | 8 ++++++++ 1 file changed, 8 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-10216.yml diff --git a/html/changelogs/AutoChangeLog-pr-10216.yml b/html/changelogs/AutoChangeLog-pr-10216.yml new file mode 100644 index 0000000000..69daa62448 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-10216.yml @@ -0,0 +1,8 @@ +author: "Nervere and subject217, Militaires, py01, nemvar" +delete-after: True +changes: + - balance: "The cook's CQC now only works when in the kitchen or the kitchen backroom." + - spellcheck: "corrected CQC help instructions" + - bugfix: "CQC and Sleeping Carp are properly logged." + - tweak: "CQC can passively grab targets when not on grab intent. Passive grabs do not count towards combos for CQC or Sleeping carp." + - code_imp: "Martial Art and NOGUN cleanup." From 5d6c2e9f8216e237f36de8f7ede9fe808fbd6edc Mon Sep 17 00:00:00 2001 From: CitadelStationBot Date: Tue, 17 Dec 2019 13:51:05 -0600 Subject: [PATCH 58/61] Automatic changelog generation for PR #10172 [ci skip] --- html/changelogs/AutoChangeLog-pr-10172.yml | 11 +++++++++++ 1 file changed, 11 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-10172.yml diff --git a/html/changelogs/AutoChangeLog-pr-10172.yml b/html/changelogs/AutoChangeLog-pr-10172.yml new file mode 100644 index 0000000000..ce76e04d13 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-10172.yml @@ -0,0 +1,11 @@ +author: "Mickyan, nemvar, RaveRadbury, AnturK, SpaceManiac" +delete-after: True +changes: + - bugfix: "Certain incompatible quirks can no longer be taken together." + - bugfix: "If an admin sends a ghost back to the lobby, they can now choose a different set of quirks." + - spellcheck: "the quirk menu went through some minor formatting changes." + - bugfix: "Podcloning now lets you keep your quirks." + - rscadd: "Quirks have flavor text in medical records." + - spellcheck: "All quirk medical records refer to \"Patient\", removing a few instances of \"Subject\"." + - tweak: "Quirks no longer apply to off-station roundstart antagonists." + - code_imp: "Mood quirks are now only processed by the quirk holders" From 27a03aa30f38e765828eaacc785de2403104d518 Mon Sep 17 00:00:00 2001 From: CitadelStationBot Date: Tue, 17 Dec 2019 13:58:03 -0600 Subject: [PATCH 59/61] Automatic changelog generation for PR #10026 [ci skip] --- html/changelogs/AutoChangeLog-pr-10026.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-10026.yml diff --git a/html/changelogs/AutoChangeLog-pr-10026.yml b/html/changelogs/AutoChangeLog-pr-10026.yml new file mode 100644 index 0000000000..6e8062874b --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-10026.yml @@ -0,0 +1,4 @@ +author: "Linzolle" +delete-after: True +changes: + - rscadd: "neck slice. harm intent someone's head while they are unconscious or in a neck grab to make them bleed uncontrollably." From 844e9861b0f2272a46fc6d3a5e7f7c19c1c4db15 Mon Sep 17 00:00:00 2001 From: CitadelStationBot Date: Tue, 17 Dec 2019 13:58:42 -0600 Subject: [PATCH 60/61] Automatic changelog generation for PR #10076 [ci skip] --- html/changelogs/AutoChangeLog-pr-10076.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-10076.yml diff --git a/html/changelogs/AutoChangeLog-pr-10076.yml b/html/changelogs/AutoChangeLog-pr-10076.yml new file mode 100644 index 0000000000..0e04ceddbc --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-10076.yml @@ -0,0 +1,4 @@ +author: "Ghommie" +delete-after: True +changes: + - bugfix: "Fixed alien tech node not being unlockable with subtypes of the accepted items." From 8b61c077133e7989daf4480a04444bc5da7d4e31 Mon Sep 17 00:00:00 2001 From: CitadelStationBot Date: Tue, 17 Dec 2019 14:09:11 -0600 Subject: [PATCH 61/61] Automatic changelog generation for PR #10153 [ci skip] --- html/changelogs/AutoChangeLog-pr-10153.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-10153.yml diff --git a/html/changelogs/AutoChangeLog-pr-10153.yml b/html/changelogs/AutoChangeLog-pr-10153.yml new file mode 100644 index 0000000000..7196583de9 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-10153.yml @@ -0,0 +1,4 @@ +author: "Linzolle" +delete-after: True +changes: + - bugfix: "fireman failure has a different message depending on the circumstance"

PU2SH%P)II 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 ArvLx| diff --git a/icons/obj/hydroponics/growing.dmi b/icons/obj/hydroponics/growing.dmi index 45e73c9281ba287fa951fe669157def4274925b9..469b1e1afffe3b88e9867b0b71ded9282c8e6260 100644 GIT binary patch delta 16136 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 D7I%RX3oTCCcFxG`OV3D_uvz59m7bkp3i*CW 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 diff --git a/icons/obj/hydroponics/harvest.dmi b/icons/obj/hydroponics/harvest.dmi index 9d4eefc3bbd354c7bf5c6e61f17eedc981a3a62e..a57719fb3a31d66ce7822e8ba015fbe3bb0e47d2 100644 GIT binary patch delta 15277 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 delta 15112 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 I+{pj`0hew(NdN!< diff --git a/icons/obj/hydroponics/seeds.dmi b/icons/obj/hydroponics/seeds.dmi index d8fcaa62580a8e71f4bc7ed3a85f29a2be15a6b2..8695d03b3c3b53b497bae3bb11870237a0d3337c 100644 GIT binary patch delta 5939 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 delta 23040 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 From ae94e1cfbe54181a348141dc8fe347e5707da5fe Mon Sep 17 00:00:00 2001 From: Ghommie <42542238+Ghommie@users.noreply.github.com> Date: Fri, 6 Dec 2019 23:45:36 +0100 Subject: [PATCH 08/61] Fixed alien tech node not being unlockable with subtypes of the accepted items. --- code/modules/research/techweb/all_nodes.dm | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/code/modules/research/techweb/all_nodes.dm b/code/modules/research/techweb/all_nodes.dm index c0aa4a3127..9ad67a6923 100644 --- a/code/modules/research/techweb/all_nodes.dm +++ b/code/modules/research/techweb/all_nodes.dm @@ -1043,14 +1043,21 @@ display_name = "Alien Technology" description = "Things used by the greys." prereq_ids = list("biotech","engineering") - boost_item_paths = list(/obj/item/gun/energy/alien, /obj/item/scalpel/alien, /obj/item/hemostat/alien, /obj/item/retractor/alien, /obj/item/circular_saw/alien, - /obj/item/cautery/alien, /obj/item/surgicaldrill/alien, /obj/item/screwdriver/abductor, /obj/item/wrench/abductor, /obj/item/crowbar/abductor, /obj/item/multitool/abductor, /obj/item/stock_parts/cell/infinite/abductor, - /obj/item/weldingtool/abductor, /obj/item/wirecutters/abductor, /obj/item/circuitboard/machine/abductor, /obj/item/abductor_baton, /obj/item/abductor, /obj/item/stack/sheet/mineral/abductor) research_costs = list(TECHWEB_POINT_TYPE_GENERIC = 5000) export_price = 20000 hidden = TRUE design_ids = list("alienalloy") +/datum/techweb_node/alientech/New() + . = ..() + boost_items_paths = typecacheof(list(/obj/item/gun/energy/alien, /obj/item/scalpel/alien, /obj/item/hemostat/alien, + /obj/item/retractor/alien, /obj/item/circular_saw/alien, /obj/item/cautery/alien, + /obj/item/surgicaldrill/alien, /obj/item/screwdriver/abductor, /obj/item/wrench/abductor, + /obj/item/crowbar/abductor, /obj/item/multitool/abductor, + /obj/item/stock_parts/cell/infinite/abductor, /obj/item/weldingtool/abductor, + /obj/item/wirecutters/abductor, /obj/item/circuitboard/machine/abductor, + /obj/item/abductor_baton, /obj/item/abductor, /obj/item/stack/sheet/mineral/abductor)) + /datum/techweb_node/alien_bio id = "alien_bio" display_name = "Alien Biological Tools" From 7cb2092fcb26dc1e538b9334200dab4fdf38b34a Mon Sep 17 00:00:00 2001 From: Ghommie <42542238+Ghommie@users.noreply.github.com> Date: Sat, 7 Dec 2019 00:04:05 +0100 Subject: [PATCH 09/61] typo --- code/modules/research/techweb/all_nodes.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/modules/research/techweb/all_nodes.dm b/code/modules/research/techweb/all_nodes.dm index 9ad67a6923..ed41f2fdb8 100644 --- a/code/modules/research/techweb/all_nodes.dm +++ b/code/modules/research/techweb/all_nodes.dm @@ -1050,7 +1050,7 @@ /datum/techweb_node/alientech/New() . = ..() - boost_items_paths = typecacheof(list(/obj/item/gun/energy/alien, /obj/item/scalpel/alien, /obj/item/hemostat/alien, + boost_item_paths = typecacheof(list(/obj/item/gun/energy/alien, /obj/item/scalpel/alien, /obj/item/hemostat/alien, /obj/item/retractor/alien, /obj/item/circular_saw/alien, /obj/item/cautery/alien, /obj/item/surgicaldrill/alien, /obj/item/screwdriver/abductor, /obj/item/wrench/abductor, /obj/item/crowbar/abductor, /obj/item/multitool/abductor, From 3d42744d8a822f8e0d491451e95f4d5f0fea01cd Mon Sep 17 00:00:00 2001 From: Ghommie <42542238+Ghommie@users.noreply.github.com> Date: Sat, 7 Dec 2019 00:38:32 +0100 Subject: [PATCH 10/61] conflict with a certain framework for tech node discounts or something I guess. --- code/modules/research/techweb/all_nodes.dm | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/code/modules/research/techweb/all_nodes.dm b/code/modules/research/techweb/all_nodes.dm index ed41f2fdb8..0677f6fa3a 100644 --- a/code/modules/research/techweb/all_nodes.dm +++ b/code/modules/research/techweb/all_nodes.dm @@ -1050,13 +1050,13 @@ /datum/techweb_node/alientech/New() . = ..() - boost_item_paths = typecacheof(list(/obj/item/gun/energy/alien, /obj/item/scalpel/alien, /obj/item/hemostat/alien, - /obj/item/retractor/alien, /obj/item/circular_saw/alien, /obj/item/cautery/alien, - /obj/item/surgicaldrill/alien, /obj/item/screwdriver/abductor, /obj/item/wrench/abductor, - /obj/item/crowbar/abductor, /obj/item/multitool/abductor, - /obj/item/stock_parts/cell/infinite/abductor, /obj/item/weldingtool/abductor, - /obj/item/wirecutters/abductor, /obj/item/circuitboard/machine/abductor, - /obj/item/abductor_baton, /obj/item/abductor, /obj/item/stack/sheet/mineral/abductor)) + boost_item_paths = typesof(/obj/item/gun/energy/alien, /obj/item/scalpel/alien, /obj/item/hemostat/alien, + /obj/item/retractor/alien, /obj/item/circular_saw/alien, /obj/item/cautery/alien, + /obj/item/surgicaldrill/alien, /obj/item/screwdriver/abductor, /obj/item/wrench/abductor, + /obj/item/crowbar/abductor, /obj/item/multitool/abductor, + /obj/item/stock_parts/cell/infinite/abductor, /obj/item/weldingtool/abductor, + /obj/item/wirecutters/abductor, /obj/item/circuitboard/machine/abductor, + /obj/item/abductor_baton, /obj/item/abductor, /obj/item/stack/sheet/mineral/abductor) /datum/techweb_node/alien_bio id = "alien_bio" From 5f56d40f5812e5334e72b9d9046249e541d6b83d Mon Sep 17 00:00:00 2001 From: Useroth Date: Sat, 7 Dec 2019 06:41:24 +0100 Subject: [PATCH 12/61] Incorporated the bamboo grammar fixes. --- code/game/objects/items/stacks/sheets/sheet_types.dm | 1 - code/modules/hydroponics/grown/towercap.dm | 6 +++--- 2 files changed, 3 insertions(+), 4 deletions(-) diff --git a/code/game/objects/items/stacks/sheets/sheet_types.dm b/code/game/objects/items/stacks/sheets/sheet_types.dm index 36597e2295..166d851400 100644 --- a/code/game/objects/items/stacks/sheets/sheet_types.dm +++ b/code/game/objects/items/stacks/sheets/sheet_types.dm @@ -257,7 +257,6 @@ GLOBAL_LIST_INIT(bamboo_recipes, list ( \ icon_state = "sheet-bamboo" item_state = "sheet-bamboo" icon = 'icons/obj/stack_objects.dmi' - sheettype = "bamboo" throwforce = 15 armor = list("melee" = 0, "bullet" = 0, "laser" = 0, "energy" = 0, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 50, "acid" = 0) resistance_flags = FLAMMABLE diff --git a/code/modules/hydroponics/grown/towercap.dm b/code/modules/hydroponics/grown/towercap.dm index b2bb42a91d..ed380b7657 100644 --- a/code/modules/hydroponics/grown/towercap.dm +++ b/code/modules/hydroponics/grown/towercap.dm @@ -100,7 +100,7 @@ /obj/item/seeds/bamboo name = "pack of bamboo seeds" - desc = "Plant known for their flexible and resistant logs." + desc = "A plant known for its flexible and resistant logs." icon_state = "seed-bamboo" species = "bamboo" plantname = "Bamboo" @@ -119,7 +119,7 @@ /obj/item/grown/log/bamboo seed = /obj/item/seeds/bamboo name = "bamboo log" - desc = "An long and resistant bamboo log." + desc = "A long and resistant bamboo log." icon_state = "bamboo" plank_type = /obj/item/stack/sheet/mineral/bamboo plank_name = "bamboo sticks" @@ -129,7 +129,7 @@ /obj/structure/punji_sticks name = "punji sticks" - desc = "Dont step on this." + desc = "Don't step on this." icon = 'icons/obj/hydroponics/equipment.dmi' icon_state = "punji" resistance_flags = FLAMMABLE From c35acf00fe5b5298ede108d3f58234a917cc3bdb Mon Sep 17 00:00:00 2001 From: Useroth <37159550+Useroth@users.noreply.github.com> Date: Sat, 7 Dec 2019 15:18:37 +0100 Subject: [PATCH 13/61] Empty commit to make travis recompile. --- code/modules/projectiles/guns/misc/syringe_gun.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/modules/projectiles/guns/misc/syringe_gun.dm b/code/modules/projectiles/guns/misc/syringe_gun.dm index d775b810a7..d947e3155d 100644 --- a/code/modules/projectiles/guns/misc/syringe_gun.dm +++ b/code/modules/projectiles/guns/misc/syringe_gun.dm @@ -164,4 +164,4 @@ if(do_after(user, 25, target = src)) user.adjustStaminaLoss(20) user.adjustOxyLoss(20) - ..() \ No newline at end of file + ..() From 10c844e70d9b112bb39ccc0f469a8ca401db57a0 Mon Sep 17 00:00:00 2001 From: kappa-sama <44128284+kappa-sama@users.noreply.github.com> Date: Sun, 8 Dec 2019 03:36:09 -0500 Subject: [PATCH 14/61] does this even work --- code/modules/mob/living/carbon/human/human.dm | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/code/modules/mob/living/carbon/human/human.dm b/code/modules/mob/living/carbon/human/human.dm index 3ae2e3bdbd..3d4d8a3813 100644 --- a/code/modules/mob/living/carbon/human/human.dm +++ b/code/modules/mob/living/carbon/human/human.dm @@ -867,8 +867,9 @@ return //If you dragged them to you and you're aggressively grabbing try to fireman carry them else if(user != target) - fireman_carry(target) - return + if(user.a_intent = INTENT_HELP) + fireman_carry(target) + return . = ..() //src is the user that will be carrying, target is the mob to be carried From b015d2571a94c9dd8cc2e7281b0851b8e10ed072 Mon Sep 17 00:00:00 2001 From: kappa-sama <44128284+kappa-sama@users.noreply.github.com> Date: Sun, 8 Dec 2019 03:51:36 -0500 Subject: [PATCH 15/61] =?UTF-8?q?=3D=3D=3F?= --- code/modules/mob/living/carbon/human/human.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/modules/mob/living/carbon/human/human.dm b/code/modules/mob/living/carbon/human/human.dm index 3d4d8a3813..7751095d9b 100644 --- a/code/modules/mob/living/carbon/human/human.dm +++ b/code/modules/mob/living/carbon/human/human.dm @@ -867,7 +867,7 @@ return //If you dragged them to you and you're aggressively grabbing try to fireman carry them else if(user != target) - if(user.a_intent = INTENT_HELP) + if(user.a_intent == INTENT_HELP) fireman_carry(target) return . = ..() From 52a050e9eeb9ba029e1323875f2db75a4355fd0a Mon Sep 17 00:00:00 2001 From: kappa-sama <44128284+kappa-sama@users.noreply.github.com> Date: Sun, 8 Dec 2019 03:54:02 -0500 Subject: [PATCH 16/61] maybe --- code/modules/mob/living/carbon/human/human.dm | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/code/modules/mob/living/carbon/human/human.dm b/code/modules/mob/living/carbon/human/human.dm index 7751095d9b..3cb4b5edde 100644 --- a/code/modules/mob/living/carbon/human/human.dm +++ b/code/modules/mob/living/carbon/human/human.dm @@ -866,8 +866,7 @@ piggyback(target) return //If you dragged them to you and you're aggressively grabbing try to fireman carry them - else if(user != target) - if(user.a_intent == INTENT_HELP) + else if(user != target && user.a_intent = INTENT_HELP) fireman_carry(target) return . = ..() From 48be47d4d1c380a5c10f9cff473c5faf614e96b4 Mon Sep 17 00:00:00 2001 From: kappa-sama <44128284+kappa-sama@users.noreply.github.com> Date: Sun, 8 Dec 2019 03:54:29 -0500 Subject: [PATCH 17/61] yes? --- code/modules/mob/living/carbon/human/human.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/modules/mob/living/carbon/human/human.dm b/code/modules/mob/living/carbon/human/human.dm index 3cb4b5edde..5bbc62c3f9 100644 --- a/code/modules/mob/living/carbon/human/human.dm +++ b/code/modules/mob/living/carbon/human/human.dm @@ -866,7 +866,7 @@ piggyback(target) return //If you dragged them to you and you're aggressively grabbing try to fireman carry them - else if(user != target && user.a_intent = INTENT_HELP) + else if(user != target && user.a_intent == INTENT_HELP) fireman_carry(target) return . = ..() From cdda28f85ca374ff76193abb36e5e1fe0acdb3f5 Mon Sep 17 00:00:00 2001 From: kappa-sama <44128284+kappa-sama@users.noreply.github.com> Date: Sun, 8 Dec 2019 03:54:55 -0500 Subject: [PATCH 18/61] tabs --- code/modules/mob/living/carbon/human/human.dm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/code/modules/mob/living/carbon/human/human.dm b/code/modules/mob/living/carbon/human/human.dm index 5bbc62c3f9..13b57b0715 100644 --- a/code/modules/mob/living/carbon/human/human.dm +++ b/code/modules/mob/living/carbon/human/human.dm @@ -867,8 +867,8 @@ return //If you dragged them to you and you're aggressively grabbing try to fireman carry them else if(user != target && user.a_intent == INTENT_HELP) - fireman_carry(target) - return + fireman_carry(target) + return . = ..() //src is the user that will be carrying, target is the mob to be carried From a37f2de71d085799b16d6cc9bd9263bec39f998c Mon Sep 17 00:00:00 2001 From: Useroth Date: Sun, 8 Dec 2019 14:00:08 +0100 Subject: [PATCH 19/61] First step of porting lavaland tumors. Looks like Cita is much behind tg regarding simplemobs. --- code/_onclick/hud/_defines.dm | 4 ++++ code/_onclick/hud/screen_objects.dm | 6 ++++++ .../mood_events/generic_positive_events.dm | 5 +++++ code/datums/ruins/lavaland.dm | 11 ++++++++++- .../mob/living/carbon/human/human_defense.dm | 6 +++++- icons/mob/accessories.dmi | Bin 9452 -> 9688 bytes icons/mob/neck.dmi | Bin 44445 -> 45707 bytes icons/obj/lavaland/artefacts.dmi | Bin 25700 -> 26100 bytes tgstation.dme | 6 ++++++ 9 files changed, 36 insertions(+), 2 deletions(-) diff --git a/code/_onclick/hud/_defines.dm b/code/_onclick/hud/_defines.dm index 167fa989b2..9d53703cdd 100644 --- a/code/_onclick/hud/_defines.dm +++ b/code/_onclick/hud/_defines.dm @@ -107,6 +107,10 @@ #define ui_internal "EAST-1:28,CENTER+1:19"//CIT CHANGE - moves internal icon up a little bit to accommodate for the stamina meter #define ui_mood "EAST-1:28,CENTER-3:10" +//living +#define ui_living_pull "EAST-1:28,CENTER-2:15" +#define ui_living_health "EAST-1:28,CENTER:15" + //borgs #define ui_borg_health "EAST-1:28,CENTER-1:15" //borgs have the health display where humans have the pressure damage indicator. diff --git a/code/_onclick/hud/screen_objects.dm b/code/_onclick/hud/screen_objects.dm index 5f128ff76d..86b4b0c024 100644 --- a/code/_onclick/hud/screen_objects.dm +++ b/code/_onclick/hud/screen_objects.dm @@ -644,6 +644,12 @@ screen_loc = ui_construct_health mouse_opacity = MOUSE_OPACITY_TRANSPARENT +/obj/screen/healths/lavaland_elite + icon = 'icons/mob/screen_elite.dmi' + icon_state = "elite_health0" + screen_loc = ui_health + mouse_opacity = MOUSE_OPACITY_TRANSPARENT + /obj/screen/healthdoll name = "health doll" screen_loc = ui_healthdoll diff --git a/code/datums/mood_events/generic_positive_events.dm b/code/datums/mood_events/generic_positive_events.dm index 9ae7ba2289..731df2ea1a 100644 --- a/code/datums/mood_events/generic_positive_events.dm +++ b/code/datums/mood_events/generic_positive_events.dm @@ -148,3 +148,8 @@ /datum/mood_event/fedprey description = "It feels quite cozy in here.\n" mood_change = 3 + +/datum/mood_event/hope_lavaland + description = "What a peculiar emblem. It makes me feel hopeful for my future.\n" + mood_change = 5 + diff --git a/code/datums/ruins/lavaland.dm b/code/datums/ruins/lavaland.dm index 4f18e6fd62..7ea2d2615d 100644 --- a/code/datums/ruins/lavaland.dm +++ b/code/datums/ruins/lavaland.dm @@ -229,4 +229,13 @@ id = "puzzle" description = "Mystery to be solved." suffix = "lavaland_surface_puzzle.dmm" - cost = 5 \ No newline at end of file + cost = 5 + +/datum/map_template/ruin/lavaland/elite_tumor + name = "Pulsating Tumor" + id = "tumor" + description = "A strange tumor which houses a powerful beast..." + suffix = "lavaland_surface_elite_tumor.dmm" + cost = 5 + always_place = TRUE + allow_duplicates = TRUE diff --git a/code/modules/mob/living/carbon/human/human_defense.dm b/code/modules/mob/living/carbon/human/human_defense.dm index f9fa5d84da..d4a7e8e1fb 100644 --- a/code/modules/mob/living/carbon/human/human_defense.dm +++ b/code/modules/mob/living/carbon/human/human_defense.dm @@ -23,7 +23,7 @@ if(!d_type) return 0 var/protection = 0 - var/list/body_parts = list(head, wear_mask, wear_suit, w_uniform, back, gloves, shoes, belt, s_store, glasses, ears, wear_id) //Everything but pockets. Pockets are l_store and r_store. (if pockets were allowed, putting something armored, gloves or hats for example, would double up on the armor) + var/list/body_parts = list(head, wear_mask, wear_suit, w_uniform, back, gloves, shoes, belt, s_store, glasses, ears, wear_id, wear_neck) //Everything but pockets. Pockets are l_store and r_store. (if pockets were allowed, putting something armored, gloves or hats for example, would double up on the armor) for(var/bp in body_parts) if(!bp) continue @@ -116,6 +116,10 @@ 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 + if(wear_neck) + var/final_block_chance = wear_neck.block_chance - (CLAMP((armour_penetration-wear_neck.armour_penetration)/2,0,100)) + block_chance_modifier + if(wear_neck.hit_reaction(src, AM, attack_text, final_block_chance, damage, attack_type)) + return 1 return 0 /mob/living/carbon/human/proc/check_block() diff --git a/icons/mob/accessories.dmi b/icons/mob/accessories.dmi index 33964645ee192faadb0ce7db9dc4a2b412c7bdfd..cda7cca4049d1a95511f5cf0f97ab8bb34d66a90 100644 GIT binary patch literal 9688 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 O0-illS1gw|4fro9-8x(V literal 9452 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 mj5Ko5S7+u|A$RqX{!$Q diff --git a/icons/mob/neck.dmi b/icons/mob/neck.dmi index 5eb270d23f34996d04d8910f732a963cdc24a94d..de59a136d99ca23e0b751b962395756793bcaafb 100644 GIT binary patch delta 2980 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 Date: Sun, 8 Dec 2019 14:05:05 +0100 Subject: [PATCH 20/61] Forgot to track the new files --- .../lavaland_surface_elite_tumor.dmm | 111 ++++++ code/_onclick/hud/lavaland_elite.dm | 16 + .../hostile/mining_mobs/elites/elite.dm | 360 ++++++++++++++++++ .../mining_mobs/elites/goliath_broodmother.dm | 245 ++++++++++++ .../hostile/mining_mobs/elites/herald.dm | 274 +++++++++++++ .../hostile/mining_mobs/elites/legionnaire.dm | 300 +++++++++++++++ .../hostile/mining_mobs/elites/pandora.dm | 192 ++++++++++ icons/mob/actions/actions_elites.dmi | Bin 0 -> 8631 bytes icons/mob/lavaland/lavaland_elites.dmi | Bin 0 -> 20149 bytes icons/mob/screen_elite.dmi | Bin 0 -> 6735 bytes icons/obj/lavaland/elite_trophies.dmi | Bin 0 -> 1057 bytes icons/obj/lavaland/legionnaire_bonfire.dmi | Bin 0 -> 1184 bytes icons/obj/lavaland/tumor.dmi | Bin 0 -> 988 bytes sound/magic/curse.ogg | Bin 0 -> 17620 bytes 14 files changed, 1498 insertions(+) create mode 100644 _maps/RandomRuins/LavaRuins/lavaland_surface_elite_tumor.dmm create mode 100644 code/_onclick/hud/lavaland_elite.dm create mode 100644 code/modules/mob/living/simple_animal/hostile/mining_mobs/elites/elite.dm create mode 100644 code/modules/mob/living/simple_animal/hostile/mining_mobs/elites/goliath_broodmother.dm create mode 100644 code/modules/mob/living/simple_animal/hostile/mining_mobs/elites/herald.dm create mode 100644 code/modules/mob/living/simple_animal/hostile/mining_mobs/elites/legionnaire.dm create mode 100644 code/modules/mob/living/simple_animal/hostile/mining_mobs/elites/pandora.dm create mode 100644 icons/mob/actions/actions_elites.dmi create mode 100644 icons/mob/lavaland/lavaland_elites.dmi create mode 100644 icons/mob/screen_elite.dmi create mode 100644 icons/obj/lavaland/elite_trophies.dmi create mode 100644 icons/obj/lavaland/legionnaire_bonfire.dmi create mode 100644 icons/obj/lavaland/tumor.dmi create mode 100644 sound/magic/curse.ogg diff --git a/_maps/RandomRuins/LavaRuins/lavaland_surface_elite_tumor.dmm b/_maps/RandomRuins/LavaRuins/lavaland_surface_elite_tumor.dmm new file mode 100644 index 0000000000..6e44ec3197 --- /dev/null +++ b/_maps/RandomRuins/LavaRuins/lavaland_surface_elite_tumor.dmm @@ -0,0 +1,111 @@ +//MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE +"a" = ( +/turf/template_noop, +/area/lavaland/surface/outdoors) +"b" = ( +/obj/structure/elite_tumor, +/turf/open/floor/plating/asteroid/basalt/lava_land_surface, +/area/lavaland/surface/outdoors) +"c" = ( +/turf/open/floor/plating/asteroid/basalt/lava_land_surface, +/area/lavaland/surface/outdoors) + +(1,1,1) = {" +a +a +a +a +a +a +a +a +a +"} +(2,1,1) = {" +a +a +a +a +a +a +a +a +a +"} +(3,1,1) = {" +a +a +a +a +a +a +a +a +a +"} +(4,1,1) = {" +a +a +a +c +c +c +a +a +a +"} +(5,1,1) = {" +a +a +a +c +b +c +a +a +a +"} +(6,1,1) = {" +a +a +a +c +c +c +a +a +a +"} +(7,1,1) = {" +a +a +a +a +a +a +a +a +a +"} +(8,1,1) = {" +a +a +a +a +a +a +a +a +a +"} +(9,1,1) = {" +a +a +a +a +a +a +a +a +a +"} diff --git a/code/_onclick/hud/lavaland_elite.dm b/code/_onclick/hud/lavaland_elite.dm new file mode 100644 index 0000000000..277ea8b898 --- /dev/null +++ b/code/_onclick/hud/lavaland_elite.dm @@ -0,0 +1,16 @@ +/datum/hud/lavaland_elite + ui_style = 'icons/mob/screen_elite.dmi' + +/datum/hud/lavaland_elite/New(mob/living/simple_animal/hostile/asteroid/elite) + ..() + + pull_icon = new /obj/screen/pull() + pull_icon.icon = ui_style + pull_icon.update_icon() + pull_icon.screen_loc = ui_living_pull + pull_icon.hud = src + static_inventory += pull_icon + + healths = new /obj/screen/healths/lavaland_elite() + healths.hud = src + infodisplay += healths diff --git a/code/modules/mob/living/simple_animal/hostile/mining_mobs/elites/elite.dm b/code/modules/mob/living/simple_animal/hostile/mining_mobs/elites/elite.dm new file mode 100644 index 0000000000..7c135cc970 --- /dev/null +++ b/code/modules/mob/living/simple_animal/hostile/mining_mobs/elites/elite.dm @@ -0,0 +1,360 @@ +#define TUMOR_INACTIVE 0 +#define TUMOR_ACTIVE 1 +#define TUMOR_PASSIVE 2 + +//Elite mining mobs +/mob/living/simple_animal/hostile/asteroid/elite + name = "elite" + desc = "An elite monster, found in one of the strange tumors on lavaland." + icon = 'icons/mob/lavaland/lavaland_elites.dmi' + faction = list("boss") + robust_searching = TRUE + ranged_ignores_vision = TRUE + ranged = TRUE + obj_damage = 5 + vision_range = 6 + aggro_vision_range = 18 + environment_smash = ENVIRONMENT_SMASH_NONE //This is to prevent elites smashing up the mining station, we'll make sure they can smash minerals fine below. + harm_intent_damage = 0 //Punching elites gets you nowhere + stat_attack = UNCONSCIOUS + layer = LARGE_MOB_LAYER + sentience_type = SENTIENCE_BOSS + hud_type = /datum/hud/lavaland_elite + var/chosen_attack = 1 + var/list/attack_action_types = list() + var/can_talk = FALSE + var/obj/loot_drop = null + + +//Gives player-controlled variants the ability to swap attacks +/mob/living/simple_animal/hostile/asteroid/elite/Initialize(mapload) + . = ..() + for(var/action_type in attack_action_types) + var/datum/action/innate/elite_attack/attack_action = new action_type() + attack_action.Grant(src) + +//Prevents elites from attacking members of their faction (can't hurt themselves either) and lets them mine rock with an attack despite not being able to smash walls. +/mob/living/simple_animal/hostile/asteroid/elite/AttackingTarget() + if(istype(target, /mob/living/simple_animal/hostile)) + var/mob/living/simple_animal/hostile/M = target + if(faction_check_mob(M)) + return FALSE + if(istype(target, /obj/structure/elite_tumor)) + var/obj/structure/elite_tumor/T = target + if(T.mychild == src && T.activity == TUMOR_PASSIVE) + var/elite_remove = alert("Re-enter the tumor?", "Despawn yourself?", "Yes", "No") + if(elite_remove == "No" || !src || QDELETED(src)) + return + T.mychild = null + T.activity = TUMOR_INACTIVE + T.icon_state = "advanced_tumor" + qdel(src) + return FALSE + . = ..() + if(ismineralturf(target)) + var/turf/closed/mineral/M = target + M.gets_drilled() + +//Elites can't talk (normally)! +/mob/living/simple_animal/hostile/asteroid/elite/say(message, bubble_type, var/list/spans = list(), sanitize = TRUE, datum/language/language = null, ignore_spam = FALSE, forced = null) + if(can_talk) + . = ..() + return TRUE + return FALSE + +/*Basic setup for elite attacks, based on Whoneedspace's megafauna attack setup. +While using this makes the system rely on OnFire, it still gives options for timers not tied to OnFire, and it makes using attacks consistent accross the board for player-controlled elites.*/ + +/datum/action/innate/elite_attack + name = "Elite Attack" + icon_icon = 'icons/mob/actions/actions_elites.dmi' + button_icon_state = "" + background_icon_state = "bg_default" + var/mob/living/simple_animal/hostile/asteroid/elite/M + var/chosen_message + var/chosen_attack_num = 0 + +/datum/action/innate/elite_attack/Grant(mob/living/L) + if(istype(L, /mob/living/simple_animal/hostile/asteroid/elite)) + M = L + return ..() + return FALSE + +/datum/action/innate/elite_attack/Activate() + M.chosen_attack = chosen_attack_num + to_chat(M, chosen_message) + +/mob/living/simple_animal/hostile/asteroid/elite/updatehealth() + . = ..() + update_health_hud() + +/mob/living/simple_animal/hostile/asteroid/elite/update_health_hud() + if(hud_used) + var/severity = 0 + var/healthpercent = (health/maxHealth) * 100 + switch(healthpercent) + if(100 to INFINITY) + hud_used.healths.icon_state = "elite_health0" + if(80 to 100) + severity = 1 + if(60 to 80) + severity = 2 + if(40 to 60) + severity = 3 + if(20 to 40) + severity = 4 + if(10 to 20) + severity = 5 + if(1 to 20) + severity = 6 + else + severity = 7 + hud_used.healths.icon_state = "elite_health[severity]" + if(severity > 0) + overlay_fullscreen("brute", /obj/screen/fullscreen/brute, severity) + else + clear_fullscreen("brute") + +//The Pulsing Tumor, the actual "spawn-point" of elites, handles the spawning, arena, and procs for dealing with basic scenarios. + +/obj/structure/elite_tumor + name = "pulsing tumor" + desc = "An odd, pulsing tumor sticking out of the ground. You feel compelled to reach out and touch it..." + armor = list("melee" = 100, "bullet" = 100, "laser" = 100, "energy" = 100, "bomb" = 100, "bio" = 100, "rad" = 100, "fire" = 100, "acid" = 100) + resistance_flags = INDESTRUCTIBLE + var/activity = TUMOR_INACTIVE + var/boosted = FALSE + var/times_won = 0 + var/mob/living/carbon/human/activator = null + var/mob/living/simple_animal/hostile/asteroid/elite/mychild = null + var/potentialspawns = list(/mob/living/simple_animal/hostile/asteroid/elite/broodmother, + /mob/living/simple_animal/hostile/asteroid/elite/pandora, + /mob/living/simple_animal/hostile/asteroid/elite/legionnaire, + /mob/living/simple_animal/hostile/asteroid/elite/herald) + icon = 'icons/obj/lavaland/tumor.dmi' + icon_state = "tumor" + pixel_x = -16 + light_color = LIGHT_COLOR_RED + light_range = 3 + anchored = TRUE + density = FALSE + +/obj/structure/elite_tumor/attack_hand(mob/user) + . = ..() + if(ishuman(user)) + switch(activity) + if(TUMOR_PASSIVE) + activity = TUMOR_ACTIVE + visible_message("[src] convulses as your arm enters its radius. Your instincts tell you to step back.") + activator = user + if(boosted) + mychild.playsound_local(get_turf(mychild), 'sound/effects/magic.ogg', 40, 0) + to_chat(mychild, "Someone has activated your tumor. You will be returned to fight shortly, get ready!") + addtimer(CALLBACK(src, .proc/return_elite), 30) + INVOKE_ASYNC(src, .proc/arena_checks) + if(TUMOR_INACTIVE) + activity = TUMOR_ACTIVE + var/mob/dead/observer/elitemind = null + visible_message("[src] begins to convulse. Your instincts tell you to step back.") + activator = user + if(!boosted) + addtimer(CALLBACK(src, .proc/spawn_elite), 30) + return + visible_message("Something within [src] stirs...") + var/list/candidates = pollCandidatesForMob("Do you want to play as a lavaland elite?", ROLE_SENTIENCE, null, ROLE_SENTIENCE, 50, src, POLL_IGNORE_SENTIENCE_POTION) + if(candidates.len) + audible_message("The stirring sounds increase in volume!") + elitemind = pick(candidates) + elitemind.playsound_local(get_turf(elitemind), 'sound/effects/magic.ogg', 40, 0) + to_chat(elitemind, "You have been chosen to play as a Lavaland Elite.\nIn a few seconds, you will be summoned on Lavaland as a monster to fight your activator, in a fight to the death.\nYour attacks can be switched using the buttons on the top left of the HUD, and used by clicking on targets or tiles similar to a gun.\nWhile the opponent might have an upper hand with powerful mining equipment and tools, you have great power normally limited by AI mobs.\nIf you want to win, you'll have to use your powers in creative ways to ensure the kill. It's suggested you try using them all as soon as possible.\nShould you win, you'll receive extra information regarding what to do after. Good luck!") + addtimer(CALLBACK(src, .proc/spawn_elite, elitemind), 100) + else + visible_message("The stirring stops, and nothing emerges. Perhaps try again later.") + activity = TUMOR_INACTIVE + activator = null + + +obj/structure/elite_tumor/proc/spawn_elite(var/mob/dead/observer/elitemind) + var/selectedspawn = pick(potentialspawns) + mychild = new selectedspawn(loc) + visible_message("[mychild] emerges from [src]!") + playsound(loc,'sound/effects/phasein.ogg', 200, 0, 50, TRUE, TRUE) + if(boosted) + mychild.key = elitemind.key + mychild.sentience_act() + icon_state = "tumor_popped" + INVOKE_ASYNC(src, .proc/arena_checks) + +obj/structure/elite_tumor/proc/return_elite() + mychild.forceMove(loc) + visible_message("[mychild] emerges from [src]!") + playsound(loc,'sound/effects/phasein.ogg', 200, 0, 50, TRUE, TRUE) + mychild.revive(full_heal = TRUE, admin_revive = TRUE) + if(boosted) + mychild.maxHealth = mychild.maxHealth * 2 + mychild.health = mychild.maxHealth + +/obj/structure/elite_tumor/Initialize(mapload) + . = ..() + AddComponent(/datum/component/gps, "Menacing Signal") + START_PROCESSING(SSobj, src) + +/obj/structure/elite_tumor/Destroy() + STOP_PROCESSING(SSobj, src) + mychild = null + activator = null + return ..() + +/obj/structure/elite_tumor/process() + if(isturf(loc)) + for(var/mob/living/simple_animal/hostile/asteroid/elite/elitehere in loc) + if(elitehere == mychild && activity == TUMOR_PASSIVE) + mychild.adjustHealth(-mychild.maxHealth*0.05) + var/obj/effect/temp_visual/heal/H = new /obj/effect/temp_visual/heal(get_turf(mychild)) + H.color = "#FF0000" + +/obj/structure/elite_tumor/attackby(obj/item/I, mob/user, params) + . = ..() + if(istype(I, /obj/item/organ/regenerative_core) && activity == TUMOR_INACTIVE && !boosted) + var/obj/item/organ/regenerative_core/core = I + if(!core.preserved) + return + visible_message("As [user] drops the core into [src], [src] appears to swell.") + icon_state = "advanced_tumor" + boosted = TRUE + light_range = 6 + desc = "[desc] This one seems to glow with a strong intensity." + qdel(core) + return TRUE + +/obj/structure/elite_tumor/proc/arena_checks() + if(activity != TUMOR_ACTIVE || QDELETED(src)) + return + INVOKE_ASYNC(src, .proc/fighters_check) //Checks to see if our fighters died. + INVOKE_ASYNC(src, .proc/arena_trap) //Gets another arena trap queued up for when this one runs out. + INVOKE_ASYNC(src, .proc/border_check) //Checks to see if our fighters got out of the arena somehow. + addtimer(CALLBACK(src, .proc/arena_checks), 50) + +/obj/structure/elite_tumor/proc/fighters_check() + if(activator != null && activator.stat == DEAD || activity == TUMOR_ACTIVE && QDELETED(activator)) + onEliteWon() + if(mychild != null && mychild.stat == DEAD || activity == TUMOR_ACTIVE && QDELETED(mychild)) + onEliteLoss() + +/obj/structure/elite_tumor/proc/arena_trap() + var/turf/T = get_turf(src) + if(loc == null) + return + for(var/t in RANGE_TURFS(12, T)) + if(get_dist(t, T) == 12) + var/obj/effect/temp_visual/elite_tumor_wall/newwall + newwall = new /obj/effect/temp_visual/elite_tumor_wall(t, src) + newwall.activator = src.activator + newwall.ourelite = src.mychild + +/obj/structure/elite_tumor/proc/border_check() + if(activator != null && get_dist(src, activator) >= 12) + activator.forceMove(loc) + visible_message("[activator] suddenly reappears above [src]!") + playsound(loc,'sound/effects/phasein.ogg', 200, 0, 50, TRUE, TRUE) + if(mychild != null && get_dist(src, mychild) >= 12) + mychild.forceMove(loc) + visible_message("[mychild] suddenly reappears above [src]!") + playsound(loc,'sound/effects/phasein.ogg', 200, 0, 50, TRUE, TRUE) + +obj/structure/elite_tumor/proc/onEliteLoss() + playsound(loc,'sound/effects/tendril_destroyed.ogg', 200, 0, 50, TRUE, TRUE) + visible_message("[src] begins to convulse violently before beginning to dissipate.") + visible_message("As [src] closes, something is forced up from down below.") + var/obj/structure/closet/crate/necropolis/tendril/lootbox = new /obj/structure/closet/crate/necropolis/tendril(loc) + if(!boosted) + mychild = null + activator = null + qdel(src) + return + var/lootpick = rand(1, 2) + if(lootpick == 1 && mychild.loot_drop != null) + new mychild.loot_drop(lootbox) + else + new /obj/item/tumor_shard(lootbox) + mychild = null + activator = null + qdel(src) + +obj/structure/elite_tumor/proc/onEliteWon() + activity = TUMOR_PASSIVE + activator = null + mychild.revive(full_heal = TRUE, admin_revive = TRUE) + if(boosted) + times_won++ + mychild.maxHealth = mychild.maxHealth * 0.5 + mychild.health = mychild.maxHealth + if(times_won == 1) + mychild.playsound_local(get_turf(mychild), 'sound/effects/magic.ogg', 40, 0) + to_chat(mychild, "As the life in the activator's eyes fade, the forcefield around you dies out and you feel your power subside.\nDespite this inferno being your home, you feel as if you aren't welcome here anymore.\nWithout any guidance, your purpose is now for you to decide.") + to_chat(mychild, "Your max health has been halved, but can now heal by standing on your tumor. Note, it's your only way to heal.\nBear in mind, if anyone interacts with your tumor, you'll be resummoned here to carry out another fight. In such a case, you will regain your full max health.\nAlso, be weary of your fellow inhabitants, they likely won't be happy to see you!") + to_chat(mychild, "Note that you are a lavaland monster, and thus not allied to the station. You should not cooperate or act friendly with any station crew unless under extreme circumstances!") + +/obj/item/tumor_shard + name = "tumor shard" + desc = "A strange, sharp, crystal shard from an odd tumor on Lavaland. Stabbing the corpse of a lavaland elite with this will revive them, assuming their soul still lingers. Revived lavaland elites only have half their max health, but are completely loyal to their reviver." + icon = 'icons/obj/lavaland/artefacts.dmi' + icon_state = "crevice_shard" + lefthand_file = 'icons/mob/inhands/equipment/tools_lefthand.dmi' + righthand_file = 'icons/mob/inhands/equipment/tools_righthand.dmi' + item_state = "screwdriver_head" + throwforce = 5 + w_class = WEIGHT_CLASS_SMALL + throw_speed = 3 + throw_range = 5 + +/obj/item/tumor_shard/afterattack(atom/target, mob/user, proximity_flag) + . = ..() + if(istype(target, /mob/living/simple_animal/hostile/asteroid/elite) && proximity_flag) + var/mob/living/simple_animal/hostile/asteroid/elite/E = target + if(E.stat != DEAD || E.sentience_type != SENTIENCE_BOSS || !E.key) + user.visible_message("It appears [E] is unable to be revived right now. Perhaps try again later.") + return + E.faction = list("neutral") + E.revive(full_heal = TRUE, admin_revive = TRUE) + user.visible_message("[user] stabs [E] with [src], reviving it.") + E.playsound_local(get_turf(E), 'sound/effects/magic.ogg', 40, 0) + to_chat(E, "You have been revived by [user]. While you can't speak to them, you owe [user] a great debt. Assist [user.p_them()] in achieving [user.p_their()] goals, regardless of risk.Note that you now share the loyalties of [user]. You are expected not to intentionally sabotage their faction unless commanded to!") + E.maxHealth = E.maxHealth * 0.5 + E.health = E.maxHealth + E.desc = "[E.desc] However, this one appears appears less wild in nature, and calmer around people." + E.sentience_type = SENTIENCE_ORGANIC + qdel(src) + else + to_chat(user, "[src] only works on the corpse of a sentient lavaland elite.") + +/obj/effect/temp_visual/elite_tumor_wall + name = "magic wall" + icon = 'icons/turf/walls/hierophant_wall_temp.dmi' + icon_state = "wall" + duration = 50 + smooth = SMOOTH_TRUE + layer = BELOW_MOB_LAYER + var/mob/living/carbon/human/activator = null + var/mob/living/simple_animal/hostile/asteroid/elite/ourelite = null + color = rgb(255,0,0) + light_range = MINIMUM_USEFUL_LIGHT_RANGE + light_color = LIGHT_COLOR_RED + +/obj/effect/temp_visual/elite_tumor_wall/Initialize(mapload, new_caster) + . = ..() + queue_smooth_neighbors(src) + queue_smooth(src) + +/obj/effect/temp_visual/elite_tumor_wall/Destroy() + queue_smooth_neighbors(src) + activator = null + ourelite = null + return ..() + +/obj/effect/temp_visual/elite_tumor_wall/CanPass(atom/movable/mover, turf/target) + if(mover == ourelite || mover == activator) + return FALSE + else + return TRUE diff --git a/code/modules/mob/living/simple_animal/hostile/mining_mobs/elites/goliath_broodmother.dm b/code/modules/mob/living/simple_animal/hostile/mining_mobs/elites/goliath_broodmother.dm new file mode 100644 index 0000000000..1bcd3173ea --- /dev/null +++ b/code/modules/mob/living/simple_animal/hostile/mining_mobs/elites/goliath_broodmother.dm @@ -0,0 +1,245 @@ +#define TENTACLE_PATCH 1 +#define SPAWN_CHILDREN 2 +#define RAGE 3 +#define CALL_CHILDREN 4 + +/** + * # Goliath Broodmother + * + * A stronger, faster variation of the goliath. Has the ability to spawn baby goliaths, which it can later detonate at will. + * When it's health is below half, tendrils will spawn randomly around it. When it is below a quarter of health, this effect is doubled. + * It's attacks are as follows: + * - Spawns a 3x3/plus shape of tentacles on the target location + * - Spawns 2 baby goliaths on its tile, up to a max of 8. Children blow up when they die. + * - The broodmother lets out a noise, and is able to move faster for 6.5 seconds. + * - Summons your children around you. + * The broodmother is a fight revolving around stage control, as the activator has to manage the baby goliaths and the broodmother herself, along with all the tendrils. + */ + +/mob/living/simple_animal/hostile/asteroid/elite/broodmother + name = "goliath broodmother" + desc = "An example of sexual dimorphism, this female goliath looks much different than the males of her species. She is, however, just as dangerous, if not more." + gender = FEMALE + icon_state = "broodmother" + icon_living = "broodmother" + icon_aggro = "broodmother" + icon_dead = "egg_sac" + icon_gib = "syndicate_gib" + maxHealth = 800 + health = 800 + melee_damage_lower = 30 + melee_damage_upper = 30 + armour_penetration = 30 + attack_verb_continuous = "beats down on" + attack_verb_simple = "beat down on" + attack_sound = 'sound/weapons/punch1.ogg' + throw_message = "does nothing to the rocky hide of the" + speed = 2 + move_to_delay = 5 + mob_biotypes = MOB_ORGANIC|MOB_BEAST + mouse_opacity = MOUSE_OPACITY_ICON + deathmessage = "explodes into gore!" + loot_drop = /obj/item/crusher_trophy/broodmother_tongue + + attack_action_types = list(/datum/action/innate/elite_attack/tentacle_patch, + /datum/action/innate/elite_attack/spawn_children, + /datum/action/innate/elite_attack/rage, + /datum/action/innate/elite_attack/call_children) + + var/rand_tent = 0 + var/list/mob/living/simple_animal/hostile/asteroid/elite/broodmother_child/children_list = list() + +/datum/action/innate/elite_attack/tentacle_patch + name = "Tentacle Patch" + button_icon_state = "tentacle_patch" + chosen_message = "You are now attacking with a patch of tentacles." + chosen_attack_num = TENTACLE_PATCH + +/datum/action/innate/elite_attack/spawn_children + name = "Spawn Children" + button_icon_state = "spawn_children" + chosen_message = "You will spawn two children at your location to assist you in combat. You can have up to 8." + chosen_attack_num = SPAWN_CHILDREN + +/datum/action/innate/elite_attack/rage + name = "Rage" + button_icon_state = "rage" + chosen_message = "You will temporarily increase your movement speed." + chosen_attack_num = RAGE + +/datum/action/innate/elite_attack/call_children + name = "Call Children" + button_icon_state = "call_children" + chosen_message = "You will summon your children to your location." + chosen_attack_num = CALL_CHILDREN + +/mob/living/simple_animal/hostile/asteroid/elite/broodmother/OpenFire() + if(client) + switch(chosen_attack) + if(TENTACLE_PATCH) + tentacle_patch(target) + if(SPAWN_CHILDREN) + spawn_children() + if(RAGE) + rage() + if(CALL_CHILDREN) + call_children() + return + var/aiattack = rand(1,4) + switch(aiattack) + if(TENTACLE_PATCH) + tentacle_patch(target) + if(SPAWN_CHILDREN) + spawn_children() + if(RAGE) + rage() + if(CALL_CHILDREN) + call_children() + +/mob/living/simple_animal/hostile/asteroid/elite/broodmother/Life() + . = ..() + if(!.) //Checks if they are dead as a rock. + return + if(health < maxHealth * 0.5 && rand_tent < world.time) + rand_tent = world.time + 30 + var/tentacle_amount = 5 + if(health < maxHealth * 0.25) + tentacle_amount = 10 + var/tentacle_loc = spiral_range_turfs(5, get_turf(src)) + for(var/i in 1 to tentacle_amount) + var/turf/t = pick_n_take(tentacle_loc) + new /obj/effect/temp_visual/goliath_tentacle/broodmother(t, src) + +/mob/living/simple_animal/hostile/asteroid/elite/broodmother/proc/tentacle_patch(var/target) + ranged_cooldown = world.time + 15 + var/tturf = get_turf(target) + if(!isturf(tturf)) + return + visible_message("[src] digs its tentacles under [target]!") + new /obj/effect/temp_visual/goliath_tentacle/broodmother/patch(tturf, src) + +/mob/living/simple_animal/hostile/asteroid/elite/broodmother/proc/spawn_children(var/target) + ranged_cooldown = world.time + 40 + visible_message("The ground churns behind [src]!") + for(var/i in 1 to 2) + if(children_list.len >= 8) + return + var/mob/living/simple_animal/hostile/asteroid/elite/broodmother_child/newchild = new /mob/living/simple_animal/hostile/asteroid/elite/broodmother_child(loc) + newchild.GiveTarget(target) + newchild.faction = faction.Copy() + visible_message("[newchild] appears below [src]!") + newchild.mother = src + children_list += newchild + +/mob/living/simple_animal/hostile/asteroid/elite/broodmother/proc/rage() + ranged_cooldown = world.time + 70 + playsound(src,'sound/spookoween/insane_low_laugh.ogg', 200, 1) + visible_message("[src] starts picking up speed!") + color = "#FF0000" + set_varspeed(0) + move_to_delay = 3 + addtimer(CALLBACK(src, .proc/reset_rage), 65) + +/mob/living/simple_animal/hostile/asteroid/elite/broodmother/proc/reset_rage() + color = "#FFFFFF" + set_varspeed(2) + move_to_delay = 5 + +/mob/living/simple_animal/hostile/asteroid/elite/broodmother/proc/call_children() + ranged_cooldown = world.time + 60 + visible_message("The ground shakes near [src]!") + var/list/directions = GLOB.cardinals.Copy() + GLOB.diagonals.Copy() + for(var/mob/child in children_list) + var/spawndir = pick_n_take(directions) + var/turf/T = get_step(src, spawndir) + if(T) + child.forceMove(T) + playsound(src, 'sound/effects/bamf.ogg', 100, 1) + +//The goliath's children. Pretty weak, simple mobs which are able to put a single tentacle under their target when at range. +/mob/living/simple_animal/hostile/asteroid/elite/broodmother_child + name = "baby goliath" + desc = "A young goliath recently born from it's mother. While they hatch from eggs, said eggs are incubated in the mother until they are ready to be born." + icon = 'icons/mob/lavaland/lavaland_monsters.dmi' + icon_state = "goliath_baby" + icon_living = "goliath_baby" + icon_aggro = "goliath_baby" + icon_dead = "goliath_baby_dead" + icon_gib = "syndicate_gib" + maxHealth = 30 + health = 30 + melee_damage_lower = 5 + melee_damage_upper = 5 + attack_verb_continuous = "bashes against" + attack_verb_simple = "bash against" + attack_sound = 'sound/weapons/punch1.ogg' + throw_message = "does nothing to the rocky hide of the" + speed = 2 + move_to_delay = 5 + mob_biotypes = MOB_ORGANIC|MOB_BEAST + mouse_opacity = MOUSE_OPACITY_ICON + butcher_results = list() + guaranteed_butcher_results = list(/obj/item/stack/sheet/animalhide/goliath_hide = 1) + deathmessage = "falls to the ground." + status_flags = CANPUSH + var/mob/living/simple_animal/hostile/asteroid/elite/broodmother/mother = null + +/mob/living/simple_animal/hostile/asteroid/elite/broodmother_child/OpenFire(target) + ranged_cooldown = world.time + 40 + var/tturf = get_turf(target) + if(!isturf(tturf)) + return + if(get_dist(src, target) <= 7)//Screen range check, so it can't attack people off-screen + visible_message("[src] digs one of its tentacles under [target]!") + new /obj/effect/temp_visual/goliath_tentacle/broodmother(tturf, src) + +/mob/living/simple_animal/hostile/asteroid/elite/broodmother_child/death() + . = ..() + if(mother != null) + mother.children_list -= src + visible_message("[src] explodes!") + explosion(get_turf(loc),0,0,0,flame_range = 3, adminlog = FALSE) + gib() + +//Tentacles have less stun time compared to regular variant, to balance being able to use them much more often. Also, 10 more damage. +/obj/effect/temp_visual/goliath_tentacle/broodmother/trip() + var/latched = FALSE + for(var/mob/living/L in loc) + if((!QDELETED(spawner) && spawner.faction_check_mob(L)) || L.stat == DEAD) + continue + visible_message("[src] grabs hold of [L]!") + L.Stun(10) + L.adjustBruteLoss(rand(30,35)) + latched = TRUE + if(!latched) + retract() + else + deltimer(timerid) + timerid = addtimer(CALLBACK(src, .proc/retract), 10, TIMER_STOPPABLE) + +/obj/effect/temp_visual/goliath_tentacle/broodmother/patch/Initialize(mapload, new_spawner) + . = ..() + var/tentacle_locs = spiral_range_turfs(1, get_turf(src)) + for(var/T in tentacle_locs) + new /obj/effect/temp_visual/goliath_tentacle/broodmother(T, spawner) + var/list/directions = GLOB.cardinals.Copy() + for(var/i in directions) + var/turf/T = get_step(get_turf(src), i) + T = get_step(T, i) + new /obj/effect/temp_visual/goliath_tentacle/broodmother(T, spawner) + +// Broodmother's loot: Broodmother Tongue +/obj/item/crusher_trophy/broodmother_tongue + name = "broodmother tongue" + desc = "The tongue of a broodmother. If attached a certain way, makes for a suitable crusher trophy." + icon = 'icons/obj/lavaland/elite_trophies.dmi' + icon_state = "broodmother_tongue" + denied_type = /obj/item/crusher_trophy/broodmother_tongue + bonus_value = 10 + +/obj/item/crusher_trophy/broodmother_tongue/effect_desc() + return "mark detonation to have a [bonus_value]% chance to summon a patch of goliath tentacles at the target's location" + +/obj/item/crusher_trophy/broodmother_tongue/on_mark_detonation(mob/living/target, mob/living/user) + if(rand(1, 100) <= bonus_value && target.stat != DEAD) + new /obj/effect/temp_visual/goliath_tentacle/broodmother/patch(get_turf(target), user) diff --git a/code/modules/mob/living/simple_animal/hostile/mining_mobs/elites/herald.dm b/code/modules/mob/living/simple_animal/hostile/mining_mobs/elites/herald.dm new file mode 100644 index 0000000000..3f184e2f52 --- /dev/null +++ b/code/modules/mob/living/simple_animal/hostile/mining_mobs/elites/herald.dm @@ -0,0 +1,274 @@ +#define HERALD_TRISHOT 1 +#define HERALD_DIRECTIONALSHOT 2 +#define HERALD_TELESHOT 3 +#define HERALD_MIRROR 4 + +/** + * # Herald + * + * A slow-moving projectile user with a few tricks up it's sleeve. Less unga-bunga than Colossus, with more cleverness in it's fighting style. + * As it's health gets lower, the amount of projectiles fired per-attack increases. + * It's attacks are as follows: + * - Fires three projectiles in a a given direction. + * - Fires a spread in every cardinal and diagonal direction at once, then does it again after a bit. + * - Shoots a single, golden bolt. Wherever it lands, the herald will be teleported to the location. + * - Spawns a mirror which reflects projectiles directly at the target. + * Herald is a more concentrated variation of the Colossus fight, having less projectiles overall, but more focused attacks. + */ + +/mob/living/simple_animal/hostile/asteroid/elite/herald + name = "herald" + desc = "A monstrous beast which fires deadly projectiles at threats and prey." + icon_state = "herald" + icon_living = "herald" + icon_aggro = "herald" + icon_dead = "herald_dying" + icon_gib = "syndicate_gib" + maxHealth = 800 + health = 800 + melee_damage_lower = 20 + melee_damage_upper = 20 + attack_verb_continuous = "preaches to" + attack_verb_simple = "preach to" + attack_sound = 'sound/magic/clockwork/ratvar_attack.ogg' + throw_message = "doesn't affect the purity of" + speed = 4 + move_to_delay = 10 + mouse_opacity = MOUSE_OPACITY_ICON + deathsound = 'sound/magic/demon_dies.ogg' + deathmessage = "begins to shudder as it becomes transparent..." + loot_drop = /obj/item/clothing/neck/cloak/herald_cloak + + can_talk = 1 + + attack_action_types = list(/datum/action/innate/elite_attack/herald_trishot, + /datum/action/innate/elite_attack/herald_directionalshot, + /datum/action/innate/elite_attack/herald_teleshot, + /datum/action/innate/elite_attack/herald_mirror) + + var/mob/living/simple_animal/hostile/asteroid/elite/herald/mirror/my_mirror = null + var/is_mirror = FALSE + +/mob/living/simple_animal/hostile/asteroid/elite/herald/death() + . = ..() + if(!is_mirror) + addtimer(CALLBACK(src, .proc/become_ghost), 8) + if(my_mirror != null) + qdel(my_mirror) + +/mob/living/simple_animal/hostile/asteroid/elite/herald/proc/become_ghost() + icon_state = "herald_ghost" + +/mob/living/simple_animal/hostile/asteroid/elite/herald/say(message, bubble_type, var/list/spans = list(), sanitize = TRUE, datum/language/language = null, ignore_spam = FALSE, forced = null) + . = ..() + playsound(get_turf(src), 'sound/magic/clockwork/invoke_general.ogg', 20, TRUE) + +/datum/action/innate/elite_attack/herald_trishot + name = "Triple Shot" + button_icon_state = "herald_trishot" + chosen_message = "You are now firing three shots in your chosen direction." + chosen_attack_num = HERALD_TRISHOT + +/datum/action/innate/elite_attack/herald_directionalshot + name = "Circular Shot" + button_icon_state = "herald_directionalshot" + chosen_message = "You are firing projectiles in all directions." + chosen_attack_num = HERALD_DIRECTIONALSHOT + +/datum/action/innate/elite_attack/herald_teleshot + name = "Teleport Shot" + button_icon_state = "herald_teleshot" + chosen_message = "You will now fire a shot which teleports you where it lands." + chosen_attack_num = HERALD_TELESHOT + +/datum/action/innate/elite_attack/herald_mirror + name = "Summon Mirror" + button_icon_state = "herald_mirror" + chosen_message = "You will spawn a mirror which duplicates your attacks." + chosen_attack_num = HERALD_MIRROR + +/mob/living/simple_animal/hostile/asteroid/elite/herald/OpenFire() + if(client) + switch(chosen_attack) + if(HERALD_TRISHOT) + herald_trishot(target) + if(my_mirror != null) + my_mirror.herald_trishot(target) + if(HERALD_DIRECTIONALSHOT) + herald_directionalshot() + if(my_mirror != null) + my_mirror.herald_directionalshot() + if(HERALD_TELESHOT) + herald_teleshot(target) + if(my_mirror != null) + my_mirror.herald_teleshot(target) + if(HERALD_MIRROR) + herald_mirror() + return + var/aiattack = rand(1,4) + switch(aiattack) + if(HERALD_TRISHOT) + herald_trishot(target) + if(my_mirror != null) + my_mirror.herald_trishot(target) + if(HERALD_DIRECTIONALSHOT) + herald_directionalshot() + if(my_mirror != null) + my_mirror.herald_directionalshot() + if(HERALD_TELESHOT) + herald_teleshot(target) + if(my_mirror != null) + my_mirror.herald_teleshot(target) + if(HERALD_MIRROR) + herald_mirror() + +/mob/living/simple_animal/hostile/asteroid/elite/herald/proc/shoot_projectile(turf/marker, set_angle, var/is_teleshot) + var/turf/startloc = get_turf(src) + var/obj/projectile/herald/H = null + if(!is_teleshot) + H = new /obj/projectile/herald(startloc) + else + H = new /obj/projectile/herald/teleshot(startloc) + H.preparePixelProjectile(marker, startloc) + H.firer = src + if(target) + H.original = target + H.fire(set_angle) + +/mob/living/simple_animal/hostile/asteroid/elite/herald/proc/herald_trishot(target) + ranged_cooldown = world.time + 30 + playsound(get_turf(src), 'sound/magic/clockwork/invoke_general.ogg', 20, TRUE) + var/target_turf = get_turf(target) + var/angle_to_target = Get_Angle(src, target_turf) + shoot_projectile(target_turf, angle_to_target, FALSE) + addtimer(CALLBACK(src, .proc/shoot_projectile, target_turf, angle_to_target, FALSE), 2) + addtimer(CALLBACK(src, .proc/shoot_projectile, target_turf, angle_to_target, FALSE), 4) + if(health < maxHealth * 0.5) + playsound(get_turf(src), 'sound/magic/clockwork/invoke_general.ogg', 20, TRUE) + addtimer(CALLBACK(src, .proc/shoot_projectile, target_turf, angle_to_target, FALSE), 10) + addtimer(CALLBACK(src, .proc/shoot_projectile, target_turf, angle_to_target, FALSE), 12) + addtimer(CALLBACK(src, .proc/shoot_projectile, target_turf, angle_to_target, FALSE), 14) + +/mob/living/simple_animal/hostile/asteroid/elite/herald/proc/herald_circleshot() + var/static/list/directional_shot_angles = list(0, 45, 90, 135, 180, 225, 270, 315) + for(var/i in directional_shot_angles) + shoot_projectile(get_turf(src), i, FALSE) + +/mob/living/simple_animal/hostile/asteroid/elite/herald/proc/unenrage() + if(stat == DEAD || is_mirror) + return + icon_state = "herald" + +/mob/living/simple_animal/hostile/asteroid/elite/herald/proc/herald_directionalshot() + ranged_cooldown = world.time + 50 + if(!is_mirror) + icon_state = "herald_enraged" + playsound(get_turf(src), 'sound/magic/clockwork/invoke_general.ogg', 20, TRUE) + addtimer(CALLBACK(src, .proc/herald_circleshot), 5) + if(health < maxHealth * 0.5) + playsound(get_turf(src), 'sound/magic/clockwork/invoke_general.ogg', 20, TRUE) + addtimer(CALLBACK(src, .proc/herald_circleshot), 15) + addtimer(CALLBACK(src, .proc/unenrage), 20) + +/mob/living/simple_animal/hostile/asteroid/elite/herald/proc/herald_teleshot(target) + ranged_cooldown = world.time + 30 + playsound(get_turf(src), 'sound/magic/clockwork/invoke_general.ogg', 20, TRUE) + var/target_turf = get_turf(target) + var/angle_to_target = Get_Angle(src, target_turf) + shoot_projectile(target_turf, angle_to_target, TRUE) + +/mob/living/simple_animal/hostile/asteroid/elite/herald/proc/herald_mirror() + ranged_cooldown = world.time + 40 + playsound(get_turf(src), 'sound/magic/clockwork/invoke_general.ogg', 20, TRUE) + if(my_mirror != null) + qdel(my_mirror) + my_mirror = null + var/mob/living/simple_animal/hostile/asteroid/elite/herald/mirror/new_mirror = new /mob/living/simple_animal/hostile/asteroid/elite/herald/mirror(loc) + my_mirror = new_mirror + my_mirror.my_master = src + my_mirror.faction = faction.Copy() + +/mob/living/simple_animal/hostile/asteroid/elite/herald/mirror + name = "herald's mirror" + desc = "This fiendish work of magic copies the herald's attacks. Seems logical to smash it." + health = 60 + maxHealth = 60 + icon_state = "herald_mirror" + deathmessage = "shatters violently!" + deathsound = 'sound/effects/glassbr1.ogg' + movement_type = FLYING + del_on_death = TRUE + is_mirror = TRUE + var/mob/living/simple_animal/hostile/asteroid/elite/herald/my_master = null + +/mob/living/simple_animal/hostile/asteroid/elite/herald/mirror/Initialize() + ..() + toggle_ai(AI_OFF) + +/mob/living/simple_animal/hostile/asteroid/elite/herald/mirror/Destroy() + if(my_master != null) + my_master.my_mirror = null + . = ..() + +/obj/projectile/herald + name ="death bolt" + icon_state= "chronobolt" + damage = 15 + armour_penetration = 60 + speed = 2 + eyeblur = 0 + damage_type = BRUTE + pass_flags = PASSTABLE + +/obj/projectile/herald/teleshot + name ="golden bolt" + damage = 0 + color = rgb(255,255,102) + +/obj/projectile/herald/on_hit(atom/target, blocked = FALSE) + . = ..() + if(ismineralturf(target)) + var/turf/closed/mineral/M = target + M.gets_drilled() + return + else if(isliving(target)) + var/mob/living/L = target + var/mob/living/F = firer + if(F != null && istype(F, /mob/living/simple_animal/hostile/asteroid/elite) && F.faction_check_mob(L)) + L.heal_overall_damage(damage) + +/obj/projectile/herald/teleshot/on_hit(atom/target, blocked = FALSE) + . = ..() + firer.forceMove(get_turf(src)) + +//Herald's loot: Cloak of the Prophet + +/obj/item/clothing/neck/cloak/herald_cloak + name = "cloak of the prophet" + desc = "A cloak which protects you from the heresy of the world." + icon = 'icons/obj/lavaland/elite_trophies.dmi' + icon_state = "herald_cloak" + body_parts_covered = CHEST|GROIN|ARMS + hit_reaction_chance = 10 + +/obj/item/clothing/neck/cloak/herald_cloak/proc/reactionshot(mob/living/carbon/owner) + var/static/list/directional_shot_angles = list(0, 45, 90, 135, 180, 225, 270, 315) + for(var/i in directional_shot_angles) + shoot_projectile(get_turf(owner), i, owner) + +/obj/item/clothing/neck/cloak/herald_cloak/proc/shoot_projectile(turf/marker, set_angle, mob/living/carbon/owner) + var/turf/startloc = get_turf(owner) + var/obj/projectile/herald/H = null + H = new /obj/projectile/herald(startloc) + H.preparePixelProjectile(marker, startloc) + H.firer = owner + H.fire(set_angle) + +/obj/item/clothing/neck/cloak/herald_cloak/hit_reaction(mob/living/carbon/human/owner, atom/movable/hitby, attack_text = "the attack", final_block_chance = 0, damage = 0, attack_type = MELEE_ATTACK) + . = ..() + if(rand(1,100) > hit_reaction_chance) + return + owner.visible_message("[owner]'s [src] emits a loud noise as [owner] is struck!") + var/static/list/directional_shot_angles = list(0, 45, 90, 135, 180, 225, 270, 315) + playsound(get_turf(owner), 'sound/magic/clockwork/invoke_general.ogg', 20, TRUE) + addtimer(CALLBACK(src, .proc/reactionshot, owner), 10) diff --git a/code/modules/mob/living/simple_animal/hostile/mining_mobs/elites/legionnaire.dm b/code/modules/mob/living/simple_animal/hostile/mining_mobs/elites/legionnaire.dm new file mode 100644 index 0000000000..5e0c00d998 --- /dev/null +++ b/code/modules/mob/living/simple_animal/hostile/mining_mobs/elites/legionnaire.dm @@ -0,0 +1,300 @@ +#define LEGIONNAIRE_CHARGE 1 +#define HEAD_DETACH 2 +#define BONFIRE_TELEPORT 3 +#define SPEW_SMOKE 4 + +/** + * # Legionnaire + * + * A towering skeleton, embodying the power of Legion. + * As it's health gets lower, the head does more damage. + * It's attacks are as follows: + * - Charges at the target after a telegraph, throwing them across the arena should it connect. + * - Legionnaire's head detaches, attacking as it's own entity. Has abilities of it's own later into the fight. Once dead, regenerates after a brief period. If the skill is used while the head is off, it will be killed. + * - Leaves a pile of bones at your location. Upon using this skill again, you'll swap locations with the bone pile. + * - Spews a cloud of smoke from it's maw, wherever said maw is. + * A unique fight incorporating the head mechanic of legion into a whole new beast. Combatants will need to make sure the tag-team of head and body don't lure them into a deadly trap. + */ + +/mob/living/simple_animal/hostile/asteroid/elite/legionnaire + name = "legionnaire" + desc = "A towering skeleton, embodying the terrifying power of Legion." + icon_state = "legionnaire" + icon_living = "legionnaire" + icon_aggro = "legionnaire" + icon_dead = "legionnaire_dead" + icon_gib = "syndicate_gib" + maxHealth = 800 + health = 800 + melee_damage_lower = 30 + melee_damage_upper = 30 + attack_verb_continuous = "slashes its arms at" + attack_verb_simple = "slash your arms at" + attack_sound = 'sound/weapons/bladeslice.ogg' + throw_message = "doesn't affect the sturdiness of" + speed = 1 + move_to_delay = 3 + mouse_opacity = MOUSE_OPACITY_ICON + deathsound = 'sound/magic/curse.ogg' + deathmessage = "'s arms reach out before it falls apart onto the floor, lifeless." + loot_drop = /obj/item/crusher_trophy/legionnaire_spine + + attack_action_types = list(/datum/action/innate/elite_attack/legionnaire_charge, + /datum/action/innate/elite_attack/head_detach, + /datum/action/innate/elite_attack/bonfire_teleport, + /datum/action/innate/elite_attack/spew_smoke) + + var/mob/living/simple_animal/hostile/asteroid/elite/legionnairehead/myhead = null + var/obj/structure/legionnaire_bonfire/mypile = null + var/has_head = TRUE + +/datum/action/innate/elite_attack/legionnaire_charge + name = "Legionnaire Charge" + button_icon_state = "legionnaire_charge" + chosen_message = "You will attempt to grab your opponent and throw them." + chosen_attack_num = LEGIONNAIRE_CHARGE + +/datum/action/innate/elite_attack/head_detach + name = "Release Head" + button_icon_state = "head_detach" + chosen_message = "You will now detach your head or kill it if it is already released." + chosen_attack_num = HEAD_DETACH + +/datum/action/innate/elite_attack/bonfire_teleport + name = "Bonfire Teleport" + button_icon_state = "bonfire_teleport" + chosen_message = "You will leave a bonfire. Second use will let you swap positions with it indefintiely. Using this move on the same tile as your active bonfire removes it." + chosen_attack_num = BONFIRE_TELEPORT + +/datum/action/innate/elite_attack/spew_smoke + name = "Spew Smoke" + button_icon_state = "spew_smoke" + chosen_message = "Your head will spew smoke in an area, wherever it may be." + chosen_attack_num = SPEW_SMOKE + +/mob/living/simple_animal/hostile/asteroid/elite/legionnaire/OpenFire() + if(client) + switch(chosen_attack) + if(LEGIONNAIRE_CHARGE) + legionnaire_charge(target) + if(HEAD_DETACH) + head_detach(target) + if(BONFIRE_TELEPORT) + bonfire_teleport() + if(SPEW_SMOKE) + spew_smoke() + return + var/aiattack = rand(1,4) + switch(aiattack) + if(LEGIONNAIRE_CHARGE) + legionnaire_charge(target) + if(HEAD_DETACH) + head_detach(target) + if(BONFIRE_TELEPORT) + bonfire_teleport() + if(SPEW_SMOKE) + spew_smoke() + +/mob/living/simple_animal/hostile/asteroid/elite/legionnaire/proc/legionnaire_charge(target) + ranged_cooldown = world.time + 50 + var/dir_to_target = get_dir(get_turf(src), get_turf(target)) + var/turf/T = get_step(get_turf(src), dir_to_target) + for(var/i in 1 to 4) + new /obj/effect/temp_visual/dragon_swoop/legionnaire(T) + T = get_step(T, dir_to_target) + playsound(src,'sound/magic/demon_attack1.ogg', 200, 1) + visible_message("[src] prepares to charge!") + addtimer(CALLBACK(src, .proc/legionnaire_charge_2, dir_to_target, 0), 5) + +/mob/living/simple_animal/hostile/asteroid/elite/legionnaire/proc/legionnaire_charge_2(var/move_dir, var/times_ran) + if(times_ran >= 4) + return + var/turf/T = get_step(get_turf(src), move_dir) + if(ismineralturf(T)) + var/turf/closed/mineral/M = T + M.gets_drilled() + if(T.density) + return + for(var/obj/structure/window/W in T.contents) + return + for(var/obj/machinery/door/D in T.contents) + return + forceMove(T) + playsound(src,'sound/effects/bang.ogg', 200, 1) + var/list/hit_things = list() + var/throwtarget = get_edge_target_turf(src, move_dir) + for(var/mob/living/L in T.contents - hit_things - src) + if(faction_check_mob(L)) + return + hit_things += L + visible_message("[src] attacks [L] with much force!") + to_chat(L, "[src] grabs you and throws you with much force!") + L.safe_throw_at(throwtarget, 10, 1, src) + L.Paralyze(20) + L.adjustBruteLoss(50) + addtimer(CALLBACK(src, .proc/legionnaire_charge_2, move_dir, (times_ran + 1)), 2) + +/mob/living/simple_animal/hostile/asteroid/elite/legionnaire/proc/head_detach(target) + ranged_cooldown = world.time + 10 + if(myhead != null) + myhead.adjustBruteLoss(600) + return + if(has_head) + has_head = FALSE + icon_state = "legionnaire_headless" + icon_living = "legionnaire_headless" + icon_aggro = "legionnaire_headless" + visible_message("[src]'s head flies off!") + var/mob/living/simple_animal/hostile/asteroid/elite/legionnairehead/newhead = new /mob/living/simple_animal/hostile/asteroid/elite/legionnairehead(loc) + newhead.flags_1 |= (flags_1 & ADMIN_SPAWNED_1) + newhead.GiveTarget(target) + newhead.faction = faction.Copy() + myhead = newhead + myhead.body = src + if(health < maxHealth * 0.25) + myhead.melee_damage_lower = 30 + myhead.melee_damage_upper = 30 + else if(health < maxHealth * 0.5) + myhead.melee_damage_lower = 20 + myhead.melee_damage_upper = 20 + +/mob/living/simple_animal/hostile/asteroid/elite/legionnaire/proc/onHeadDeath() + myhead = null + addtimer(CALLBACK(src, .proc/regain_head), 50) + +/mob/living/simple_animal/hostile/asteroid/elite/legionnaire/proc/regain_head() + has_head = TRUE + if(stat == DEAD) + return + icon_state = "legionnaire" + icon_living = "legionnaire" + icon_aggro = "legionnaire" + visible_message("The top of [src]'s spine leaks a black liquid, forming into a skull!") + +/mob/living/simple_animal/hostile/asteroid/elite/legionnaire/proc/bonfire_teleport() + ranged_cooldown = world.time + 5 + if(mypile == null) + var/obj/structure/legionnaire_bonfire/newpile = new /obj/structure/legionnaire_bonfire(loc) + mypile = newpile + mypile.myowner = src + playsound(get_turf(src),'sound/items/fulext_deploy.wav', 200, 1) + visible_message("[src] summons a bonfire on [get_turf(src)]!") + return + else + var/turf/legionturf = get_turf(src) + var/turf/pileturf = get_turf(mypile) + if(legionturf == pileturf) + mypile.take_damage(100) + mypile = null + return + playsound(pileturf,'sound/items/fulext_deploy.wav', 200, 1) + playsound(legionturf,'sound/items/fulext_deploy.wav', 200, 1) + visible_message("[src] melts down into a burning pile of bones!") + forceMove(pileturf) + visible_message("[src] forms from the bonfire!") + mypile.forceMove(legionturf) + +/mob/living/simple_animal/hostile/asteroid/elite/legionnaire/proc/spew_smoke() + ranged_cooldown = world.time + 60 + var/turf/T = null + if(myhead != null) + T = get_turf(myhead) + else + T = get_turf(src) + if(myhead != null) + myhead.visible_message("[myhead] spews smoke from its maw!") + else if(!has_head) + visible_message("[src] spews smoke from the tip of their spine!") + else + visible_message("[src] spews smoke from its maw!") + var/datum/effect_system/smoke_spread/smoke = new + smoke.set_up(2, T) + smoke.start() + +//The legionnaire's head. Basically the same as any legion head, but we have to tell our creator when we die so they can generate another head. +/mob/living/simple_animal/hostile/asteroid/elite/legionnairehead + name = "legionnaire head" + desc = "The legionnaire's head floating by itself. One shouldn't get too close, though once it sees you, you really don't have a choice." + icon_state = "legionnaire_head" + icon_living = "legionnaire_head" + icon_aggro = "legionnaire_head" + icon_dead = "legionnaire_dead" + icon_gib = "syndicate_gib" + maxHealth = 80 + health = 80 + melee_damage_lower = 10 + melee_damage_upper = 10 + attack_verb_continuous = "bites at" + attack_verb_simple = "bite at" + attack_sound = 'sound/effects/curse1.ogg' + throw_message = "simply misses" + speed = 0 + move_to_delay = 2 + del_on_death = 1 + deathmessage = "crumbles away!" + faction = list() + ranged = FALSE + var/mob/living/simple_animal/hostile/asteroid/elite/legionnaire/body = null + +/mob/living/simple_animal/hostile/asteroid/elite/legionnairehead/death() + . = ..() + if(body) + body.onHeadDeath() + +//The legionnaire's bonfire, which can be swapped positions with. Also sets flammable living beings on fire when they walk over it. +/obj/structure/legionnaire_bonfire + name = "bone pile" + desc = "A pile of bones which seems to occasionally move a little. It's probably a good idea to smash them." + icon = 'icons/obj/lavaland/legionnaire_bonfire.dmi' + icon_state = "bonfire" + max_integrity = 100 + move_resist = MOVE_FORCE_EXTREMELY_STRONG + anchored = TRUE + density = FALSE + light_range = 4 + light_color = LIGHT_COLOR_RED + var/mob/living/simple_animal/hostile/asteroid/elite/legionnaire/myowner = null + + +/obj/structure/legionnaire_bonfire/Entered(atom/movable/mover, turf/target) + if(isliving(mover)) + var/mob/living/L = mover + L.adjust_fire_stacks(3) + L.IgniteMob() + . = ..() + +/obj/structure/legionnaire_bonfire/Destroy() + if(myowner != null) + myowner.mypile = null + . = ..() + +//The visual effect which appears in front of legionnaire when he goes to charge. +/obj/effect/temp_visual/dragon_swoop/legionnaire + duration = 10 + color = rgb(0,0,0) + +/obj/effect/temp_visual/dragon_swoop/legionnaire/Initialize() + . = ..() + transform *= 0.33 + +// Legionnaire's loot: Legionnaire Spine + +/obj/item/crusher_trophy/legionnaire_spine + name = "legionnaire spine" + desc = "The spine of a legionnaire. It almost feels like it's moving..." + icon = 'icons/obj/lavaland/elite_trophies.dmi' + icon_state = "legionnaire_spine" + denied_type = /obj/item/crusher_trophy/legionnaire_spine + bonus_value = 20 + +/obj/item/crusher_trophy/legionnaire_spine/effect_desc() + return "mark detonation to have a [bonus_value]% chance to summon a loyal legion skull" + +/obj/item/crusher_trophy/legionnaire_spine/on_mark_detonation(mob/living/target, mob/living/user) + if(!rand(1, 100) <= bonus_value || target.stat == DEAD) + return + var/mob/living/simple_animal/hostile/asteroid/hivelordbrood/legion/A = new /mob/living/simple_animal/hostile/asteroid/hivelordbrood/legion(user.loc) + A.flags_1 |= (flags_1 & ADMIN_SPAWNED_1) + A.GiveTarget(target) + A.friends = user + A.faction = user.faction.Copy() diff --git a/code/modules/mob/living/simple_animal/hostile/mining_mobs/elites/pandora.dm b/code/modules/mob/living/simple_animal/hostile/mining_mobs/elites/pandora.dm new file mode 100644 index 0000000000..7422a441aa --- /dev/null +++ b/code/modules/mob/living/simple_animal/hostile/mining_mobs/elites/pandora.dm @@ -0,0 +1,192 @@ +#define SINGULAR_SHOT 1 +#define MAGIC_BOX 2 +#define PANDORA_TELEPORT 3 +#define AOE_SQUARES 4 + +/** + * # Pandora + * + * A box with a similar design to the Hierophant which trades large, single attacks for more frequent smaller ones. + * As it's health gets lower, the time between it's attacks decrease. + * It's attacks are as follows: + * - Fires hierophant blasts in a straight line. Can only fire in a straight line in 8 directions, being the diagonals and cardinals. + * - Creates a box of hierophant blasts around the target. If they try to run away to avoid it, they'll very likely get hit. + * - Teleports the pandora from one location to another, almost identical to Hierophant. + * - Spawns a 5x5 AOE at the location of choice, spreading out from the center. + * Pandora's fight mirrors Hierophant's closely, but has stark differences in attack effects. Instead of long-winded dodge times and long cooldowns, Pandora constantly attacks the opponent, but leaves itself open for attack. + */ + +/mob/living/simple_animal/hostile/asteroid/elite/pandora + name = "pandora" + desc = "A large magic box with similar power and design to the Hierophant. Once it opens, it's not easy to close it." + icon_state = "pandora" + icon_living = "pandora" + icon_aggro = "pandora" + icon_dead = "pandora_dead" + icon_gib = "syndicate_gib" + maxHealth = 800 + health = 800 + melee_damage_lower = 15 + melee_damage_upper = 15 + attack_verb_continuous = "smashes into the side of" + attack_verb_simple = "smash into the side of" + attack_sound = 'sound/weapons/sonic_jackhammer.ogg' + throw_message = "merely dinks off of the" + speed = 4 + move_to_delay = 10 + mouse_opacity = MOUSE_OPACITY_ICON + deathsound = 'sound/magic/repulse.ogg' + deathmessage = "'s lights flicker, before its top part falls down." + loot_drop = /obj/item/clothing/accessory/pandora_hope + + attack_action_types = list(/datum/action/innate/elite_attack/singular_shot, + /datum/action/innate/elite_attack/magic_box, + /datum/action/innate/elite_attack/pandora_teleport, + /datum/action/innate/elite_attack/aoe_squares) + + var/sing_shot_length = 8 + var/cooldown_time = 20 + +/datum/action/innate/elite_attack/singular_shot + name = "Singular Shot" + button_icon_state = "singular_shot" + chosen_message = "You are now creating a single linear magic square." + chosen_attack_num = SINGULAR_SHOT + +/datum/action/innate/elite_attack/magic_box + name = "Magic Box" + button_icon_state = "magic_box" + chosen_message = "You are now attacking with a box of magic squares." + chosen_attack_num = MAGIC_BOX + +/datum/action/innate/elite_attack/pandora_teleport + name = "Line Teleport" + button_icon_state = "pandora_teleport" + chosen_message = "You will now teleport to your target." + chosen_attack_num = PANDORA_TELEPORT + +/datum/action/innate/elite_attack/aoe_squares + name = "AOE Blast" + button_icon_state = "aoe_squares" + chosen_message = "Your attacks will spawn an AOE blast at your target location." + chosen_attack_num = AOE_SQUARES + +/mob/living/simple_animal/hostile/asteroid/elite/pandora/OpenFire() + if(client) + switch(chosen_attack) + if(SINGULAR_SHOT) + singular_shot(target) + if(MAGIC_BOX) + magic_box(target) + if(PANDORA_TELEPORT) + pandora_teleport(target) + if(AOE_SQUARES) + aoe_squares(target) + return + var/aiattack = rand(1,4) + switch(aiattack) + if(SINGULAR_SHOT) + singular_shot(target) + if(MAGIC_BOX) + magic_box(target) + if(PANDORA_TELEPORT) + pandora_teleport(target) + if(AOE_SQUARES) + aoe_squares(target) + +/mob/living/simple_animal/hostile/asteroid/elite/pandora/Life() + . = ..() + if(health >= maxHealth * 0.5) + cooldown_time = 20 + return + if(health < maxHealth * 0.5 && health > maxHealth * 0.25) + cooldown_time = 15 + return + else + cooldown_time = 10 + +/mob/living/simple_animal/hostile/asteroid/elite/pandora/proc/singular_shot(target) + ranged_cooldown = world.time + (cooldown_time * 0.5) + var/dir_to_target = get_dir(get_turf(src), get_turf(target)) + var/turf/T = get_step(get_turf(src), dir_to_target) + singular_shot_line(sing_shot_length, dir_to_target, T) + +/mob/living/simple_animal/hostile/asteroid/elite/pandora/proc/singular_shot_line(var/procsleft, var/angleused, var/turf/T) + if(procsleft <= 0) + return + new /obj/effect/temp_visual/hierophant/blast/pandora(T, src) + T = get_step(T, angleused) + procsleft = procsleft - 1 + addtimer(CALLBACK(src, .proc/singular_shot_line, procsleft, angleused, T), 2) + +/mob/living/simple_animal/hostile/asteroid/elite/pandora/proc/magic_box(target) + ranged_cooldown = world.time + cooldown_time + var/turf/T = get_turf(target) + for(var/t in spiral_range_turfs(3, T)) + if(get_dist(t, T) > 1) + new /obj/effect/temp_visual/hierophant/blast/pandora(t, src) + +/mob/living/simple_animal/hostile/asteroid/elite/pandora/proc/pandora_teleport(target) + ranged_cooldown = world.time + cooldown_time + var/turf/T = get_turf(target) + var/turf/source = get_turf(src) + new /obj/effect/temp_visual/hierophant/telegraph(T, src) + new /obj/effect/temp_visual/hierophant/telegraph(source, src) + playsound(source,'sound/machines/airlockopen.ogg', 200, 1) + addtimer(CALLBACK(src, .proc/pandora_teleport_2, T, source), 2) + +/mob/living/simple_animal/hostile/asteroid/elite/pandora/proc/pandora_teleport_2(var/turf/T, var/turf/source) + new /obj/effect/temp_visual/hierophant/telegraph/teleport(T, src) + new /obj/effect/temp_visual/hierophant/telegraph/teleport(source, src) + for(var/t in RANGE_TURFS(1, T)) + new /obj/effect/temp_visual/hierophant/blast/pandora(t, src) + for(var/t in RANGE_TURFS(1, source)) + new /obj/effect/temp_visual/hierophant/blast/pandora(t, src) + animate(src, alpha = 0, time = 2, easing = EASE_OUT) //fade out + visible_message("[src] fades out!") + density = FALSE + addtimer(CALLBACK(src, .proc/pandora_teleport_3, T), 2) + +/mob/living/simple_animal/hostile/asteroid/elite/pandora/proc/pandora_teleport_3(var/turf/T) + forceMove(T) + animate(src, alpha = 255, time = 2, easing = EASE_IN) //fade IN + density = TRUE + visible_message("[src] fades in!") + +/mob/living/simple_animal/hostile/asteroid/elite/pandora/proc/aoe_squares(target) + ranged_cooldown = world.time + cooldown_time + var/turf/T = get_turf(target) + new /obj/effect/temp_visual/hierophant/blast/pandora(T, src) + var/max_size = 2 + addtimer(CALLBACK(src, .proc/aoe_squares_2, T, 0, max_size), 2) + +/mob/living/simple_animal/hostile/asteroid/elite/pandora/proc/aoe_squares_2(var/turf/T, var/ring, var/max_size) + if(ring > max_size) + return + for(var/t in spiral_range_turfs(ring, T)) + if(get_dist(t, T) == ring) + new /obj/effect/temp_visual/hierophant/blast/pandora(t, src) + addtimer(CALLBACK(src, .proc/aoe_squares_2, T, (ring + 1), max_size), 2) + +//The specific version of hiero's squares pandora uses +/obj/effect/temp_visual/hierophant/blast/pandora + damage = 20 + monster_damage_boost = FALSE + +//Pandora's loot: Hope +/obj/item/clothing/accessory/pandora_hope + name = "Hope" + desc = "Found at the bottom of Pandora. After all the evil was released, this was the only thing left inside." + icon = 'icons/obj/lavaland/elite_trophies.dmi' + icon_state = "hope" + resistance_flags = FIRE_PROOF + +/obj/item/clothing/accessory/pandora_hope/on_uniform_equip(obj/item/clothing/under/U, user) + var/mob/living/L = user + if(L && L.mind) + SEND_SIGNAL(L, COMSIG_ADD_MOOD_EVENT, "hope_lavaland", /datum/mood_event/hope_lavaland) + +/obj/item/clothing/accessory/pandora_hope/on_uniform_dropped(obj/item/clothing/under/U, user) + var/mob/living/L = user + if(L && L.mind) + SEND_SIGNAL(L, COMSIG_CLEAR_MOOD_EVENT, "hope_lavaland") diff --git a/icons/mob/actions/actions_elites.dmi b/icons/mob/actions/actions_elites.dmi new file mode 100644 index 0000000000000000000000000000000000000000..335261b0f646eace1032a8539d44eb0d46bcbd66 GIT binary patch literal 8631 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 KM5U5d=>G$|N=ZHd literal 0 HcmV?d00001 diff --git a/icons/mob/lavaland/lavaland_elites.dmi b/icons/mob/lavaland/lavaland_elites.dmi new file mode 100644 index 0000000000000000000000000000000000000000..69032735d96527a4df16717c8c1bb66006f4bd96 GIT binary patch literal 20149 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 literal 0 HcmV?d00001 diff --git a/icons/mob/screen_elite.dmi b/icons/mob/screen_elite.dmi new file mode 100644 index 0000000000000000000000000000000000000000..f407fb79e41c5e82c71510207f7505d6830dd1a0 GIT binary patch literal 6735 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 GNBtkn*|Qk{ literal 0 HcmV?d00001 diff --git a/icons/obj/lavaland/elite_trophies.dmi b/icons/obj/lavaland/elite_trophies.dmi new file mode 100644 index 0000000000000000000000000000000000000000..d194c93853dbb4e72d876448831b8b49e26b25f3 GIT binary patch literal 1057 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