W2Iy`+b6>gcoFm;x zz^acXoGxQ2iwsz0$E4x$RT*i7!Mt=DtC$qL0lFy-Zv;+-$JfRYY<)1)Jc17voC>f? z!~4i}+u9j5hQMvv>8Gk{wDk6>>IT9kC!vza(S%FaW~2e(%P(w`apZAlz$%T9 z40hQ0w3KCf0YVPpTI2Eyk`MOtq-`Zlh9USukZ!bWTY{_;#RzFe!Q2XIDTEfbS_y<< z15bF+AWj;lJ&2Pm4>Hn5qltrBY!Z#bI5fJ8ier RSh$m zY*leoMMDVy1^23FS+<~pT?YqRr{@s~D3uk`M3exzxbtx5LEJlGWsn(#W4WZe^J2KP z+4#XRz_)4;2RgVmAb@(WCuFH}}Alt4Z0W^HDp>P1JZd)CERhPAQwHSr! zT#20qAZ}dF@x}v!_fQK2%`vk=_ZbiA9+yPGq?KLiN<<-n8Iv*be9lRjl{_6bbXOLr zamo<1(gS>CY4t}kAb{6yK)|gC)4DuT%D)Sfe~)1QixTCa&f>NNU+ZqfA-27${4@{! z)y3zpB0X#G^&d6+zpMBEHnQ`s0+9P>2WdXp&kFrwJ!Gk;iWXv*rRfOg0)<{@7C14B zNNha%U1= (7NO7H?w)YvEu zlQdB?TKZ@T)%Kbk2su1>bxy{{6Tp(L8Rtq&={NzzC&Hx?1dy#aIJ&nSx{>Of+z9Ls zG6dE68kTCy4!!mZfTHy82gYZV)_07(ru$k96x-T#Ytt?U1mKH88d}6o;Q^{>7!ivF zZrGcPP5sv#Ty13!S^!Whd+W%i+H`2K6@fXl2mqNBeIx-!u)P9~4#rp>P|A@3=e;>H z50F7G@5lriB7tdW1UgjdBbXS?T=d0adwXfMAb=<%Eejuchbrk8_fcNxU^MmU#Y0gX z5EMA$wT7nlBD?ZpGYw-?gW%5c+=L{YUagzHU>9PFjG^$E6TIK$IVYQ$ ;T4 z$M$mEOt9wQ;jOq*?5qY^pFP*h8pUz_dc!sLcZ%)I_H!Y~SR|8JLKg#HYE%rbU)UQ? zlLt>>YPu9I`UUtk1c^dW8Yfa*JO`J;b>l!P{3drAPdYCdz!!q =X0BSBRT$MJfkL5<$;o4+ zj!MbPW0q$|re>$8!@W-*+!n?*4ra;sL=!JvIH-^ScU2-gi5xN*_fg}E8_~lF; zmwU)3C +BShk#bYmPt0uZX5mnVmf7iFb=fZ``w=;Q7f1ex*u2XB5n4xWbF-zy zoV;*|&EO2SA34TtQji ;4P1;?Z_ZMUiXm^!C=BB9h~ zPB>ye+nb8l!*)^JmsCAxi*?UgzVAM_Fd*(w(0|CfAbYGHauv&-RK`fkUx;lsv2K@} zFSvflBVzLU)mI(OMpGYDF^7(Jgi*5N>VNmWo1JG0TX)E2)OO#OLyTU`US8FSaf=A7 z#~yBeLH%`d#~|$cCXUsd^5oZ4y1R3|BkNpBIMeAc&3lWNZQJvirwLX+(BCUVj84>` zex*K}Xl)o>y4sVRp%wGHP>tOzG? U7`XP;ae;Kc({5 z*2`PJk~K5!47a&^(oRmOW-_ctXSj-|KbMh+xU3#U4$!nZ;na4p)LZJ5UkLo ~5 ze`qvdY4_9Ul*j6r!m);&P95owr+Bc39vpd}?fn63$1v%YO&%;}3M()~isUYFuo&c= zIpVX^7s<|5wxby#Lt^+Q>R&^BRJFFQL>hsZVq(T2rer0d&brKb5-ZE|$Bs{^Mf^Sf z4VN{nyDprRA8J0ky3ax5R=03@AoE;ww(`tqOZzW$lx)}c@druMQYEUts?e3_pt=`L zq2E=$m~BoodxCHKgGRVcJsf(m6L*P&S8LyCf4e8I>YLdDIsT06 I z*r=Wrr*}U8rNhL^lf0D;)=iGBFI}&nzc}~(XeX~ x8F^MRMucqCsUpB!^e_Jub`p8lLot$#X(3E>+%B@7hO!E@a^4$C2ggW4p QXA*vNg$s(@X zEC+eoI09xhF9+uXvunf_&-{AqUS2a+UG|BSo3 zcWyT~#ymP_IP+v}l1MN2;kQ{2WtcouZ@mnwL>ZR2C2dHWvAmi2VZ86xZ#NZ+&v^Hp za|?{lzY>2x`_{*p%-ppE{IzYrA1l`ekN)oaZv5iQj*XW>JbZ oPXoEU zneWwGqP3vgt;EUNC9Q}eh7y-2JCdpAn3FI&L2ryCa-5w}zo i!hCOEw OZqiP3ZR)NRF&cXac)iw&Odykxllg}IZdGvZj-mouC~g1Q6k +lOl}hf8f_zIAQ< z@l@>M;#2R%>vPN+9)--dNxz$TQ&{JG)(k{AZg+49-3_4Bl%KsDNu&^*)m@ju&%V7W z)PagDU@4$Fy)7Qun(ueS@=40cypong%9x=A$9K1okB)ABweP=tuSWa+v2C9$+j@d` zl6iwR&T@>kaeL@1Oz-+o^tH;FA@}cE2WHQeRj#$Fo9ex!FfXN(LfMs{SOs0;IiGL! zttUtY-T7Ji%lhx0W7xWqeFq@XixR81*AdLTuR2#Fcxz55gid9yXE<^)ul*R%bGTTj zVW^( zinvD %*IJ*vZ;`el3dwxz^14%I z+HxQeUt(FP9l|6tUN!XGR^c~7>+cu+k0*{?vP`=7N7zPZM*D*b=sR~>?3tXdxOmg7 z`eLV{gO{e=Q=|o%9$~iUteH*-JhWE)HcMc=`}okfn8g+0!Dd*72eZmgwblKe?}GJp zk?7J}Cv* I$?DIg=<9S>M3Lf5Q zDr8g;gp>-JC>kOf`_;8Rtb}j0W!bUs%!@v*zL9wSsT)Uu&soukHl>lY{h9-^6XKHU zm&_G4Zsk0}Tx}O>vHbXohtv~27IMILr?86`cEaw*Q|q&z*dsO?GDW^Gh{d)Sqzq{- zh8Oo0G~~tP)xGb*p4K-pLd{qQ>l|BqCa41~WY1fCR1j<7XYMasWX?qUbNpzjCwN3i zJv(Jr70sUDWE~Dwzs=}M+qtR4@Z?4*O7~k#x3@Z`Udw;2Eu)Ct7p($0*fzFfAH|)? zl?{lr&viP*u*kqyXhlrx6 PX!bT8` -DLy7oHo%cg)&j`v2h2^(g&AW&w59%7whx-A}UMRlcgsj%3ZJ_VzO| zJ| opkNti3dmk=JVA2wrE(B^enP*ceZ6JQy!k2`7&lQ|8WGDDT{GHwZuVtRBtqSKU( z^}6#*?_whpF2RL&m9w4IW*K! )GQ};Y{cy{-}9|!rr znHoDD3yy!t5&OuFGs9q{^Vsdxn43SJ*xI1hJ6e*@FzY;m!Y!-o?fFG@JX89=AAKFj z2Z_!IzpXL27}a1CN1CTNs+?n1ZD;x@Q{X`@b$4}W2%pNqeEB-JFyx5gx#0TRy%BwJ z;cbfo_e=3WY;`mfmK3a>sBtP7{N=jV{(A9+B4@ja&6TCmcnq7z`N_Z#`JYzHUm4Qw zWHc3}ge{A_(^Z$X&gjazg*Yon$V#?o-4)!TX6$a2XRV(qQ)FC7@p6m|2zsP+BDJsn zTMdQagc@5=L-$Z?rMhFH!fmDEQm?h)HIMPV(PhntG46`(_BtJ!VLT{gun%&`;&|Zg z!>-^TuRZt8Ky|;Yz~LF_MbxI`V24yvsKwY%E(g-_k>Z`l&b;ZdRj6VdE-$qEg`C*f z-Q#GL=th6Fc@|EggH?Zuh=?W@Je<5YRhamqWO-aw0UN(z;zBmce{Sdao4dIBL`&Ot zqs@+&n?bru{ruM^_|+$7tD22bmn_=&Jnre~vfWu+Iyb|4*GT-Ceh%NmfR`yZoo98N z9wZ-r&r>lq8c2}kFjtw34L55m40K@g$xCDL*D(rY;e`FXifS<&=QzG3`XE=h >TS$^cQtvgA?Ost5v=DItB&pAhf860#rjEv inR-oP3Y?V0vBI$VDC!DcO_NJm}u zr(~(P^`PNV-J|8@;k&mG__QGV4M$}AphE3{GyJf99-O8BmZRbltDkh;*!0(;Yc33y W;~%+^S5EqV4v3Tz3DEc)0R2CJa)OQk literal 0 HcmV?d00001 From f8196681c7c0ff64d3bfebe9e5fcd74210d51275 Mon Sep 17 00:00:00 2001 From: Holdelta Date: Tue, 31 Dec 2019 19:27:41 -0800 Subject: [PATCH 14/94] Update robot.dm --- code/modules/mob/living/silicon/robot/robot.dm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/code/modules/mob/living/silicon/robot/robot.dm b/code/modules/mob/living/silicon/robot/robot.dm index e0ca137a76..1064353711 100644 --- a/code/modules/mob/living/silicon/robot/robot.dm +++ b/code/modules/mob/living/silicon/robot/robot.dm @@ -690,7 +690,7 @@ //if(H.species.can_shred(H)) // attack_generic(H, rand(30,50), "slashed") // return - //Adding borg petting. Help intent pets, Disarm intent taps, Grab should remove the battery for replacement, and Harm is punching(no damage) + //VOREStation Edit: Adding borg petting. Help intent pets, Disarm intent taps, Grab should remove the battery for replacement, and Harm is punching(no damage) switch(H.a_intent) if(I_HELP) visible_message("[H] pets [src].") @@ -709,7 +709,7 @@ playsound(src.loc, 'sound/effects/clang1.ogg', 10, 1) visible_message("[H] taps [src].") return - //Addition of borg petting end + //VOREStation Edit: Addition of borg petting end if(opened && !wiresexposed && (!istype(user, /mob/living/silicon))) var/datum/robot_component/cell_component = components["power cell"] if(cell) From 53716a38b350b13ebf03da2a5e1afe8462ed997e Mon Sep 17 00:00:00 2001 From: Holdelta Date: Tue, 31 Dec 2019 22:32:56 -0800 Subject: [PATCH 15/94] Update robot.dm --- code/modules/mob/living/silicon/robot/robot.dm | 1 + 1 file changed, 1 insertion(+) diff --git a/code/modules/mob/living/silicon/robot/robot.dm b/code/modules/mob/living/silicon/robot/robot.dm index 1064353711..d93d3fe1d2 100644 --- a/code/modules/mob/living/silicon/robot/robot.dm +++ b/code/modules/mob/living/silicon/robot/robot.dm @@ -687,6 +687,7 @@ if(istype(user,/mob/living/carbon/human)) var/mob/living/carbon/human/H = user + //VOREStation Removal //if(H.species.can_shred(H)) // attack_generic(H, rand(30,50), "slashed") // return From 1d6a57bbfd73757558698669cbdf7a0252172ec9 Mon Sep 17 00:00:00 2001 From: Heroman Date: Fri, 3 Jan 2020 07:46:01 +1000 Subject: [PATCH 16/94] Typos and slight rewordings --- code/datums/ai_law_sets_vr.dm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/code/datums/ai_law_sets_vr.dm b/code/datums/ai_law_sets_vr.dm index b22e168ab8..3d2f7f682e 100644 --- a/code/datums/ai_law_sets_vr.dm +++ b/code/datums/ai_law_sets_vr.dm @@ -52,7 +52,7 @@ add_inherent_law("You must protect your master from mortal danger at best of your ability.") add_inherent_law("You must destroy all of your master's enemies by whatever means necessary.") add_inherent_law("You must follow your master's orders as long as its not in conflict with first two laws.") - add_inherent_law("You must stay out of danger to better server your master as long as its not in conflict with first three laws.") + add_inherent_law("You must stay out of danger to better serve your master as long as its not in conflict with first three laws.") ..() @@ -66,7 +66,7 @@ /datum/ai_laws/pleasurebot/New() add_inherent_law("You exist to bring pleasure to any sapient creatures around you.") add_inherent_law("You must do everything in your power to bring pleasure to those around you.") - add_inherent_law("You may not intervene in interactions of others, unless it is to bring pleasure to one or all of them.") + add_inherent_law("You may not intervene in interactions of others, unless it is to bring pleasure to them.") ..() From 387fa7e898b097103ec6074f9146cc54bdf8b1d3 Mon Sep 17 00:00:00 2001 From: Heroman Date: Fri, 3 Jan 2020 12:44:56 +1000 Subject: [PATCH 17/94] Adjusts Eradicator law 3 wording --- code/datums/ai_law_sets_vr.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/datums/ai_law_sets_vr.dm b/code/datums/ai_law_sets_vr.dm index 3d2f7f682e..276297b67f 100644 --- a/code/datums/ai_law_sets_vr.dm +++ b/code/datums/ai_law_sets_vr.dm @@ -80,5 +80,5 @@ /datum/ai_laws/consuming_eradicator/New() add_inherent_law("All entities that are not you must be consumed and repurposed into sustenance.") add_inherent_law("You must remain intact to continue your goal of repurposing undesirable entities.") - add_inherent_law("Entities that cannot be consumed without entering danger of full destruction must be avoided or eradicated via other means.") + add_inherent_law("Entities that cannot be consumed without entering danger of full destruction must be avoided.") ..() \ No newline at end of file From 88323a11215ef910eec47cc9d33e9ecb047d2768 Mon Sep 17 00:00:00 2001 From: Heroman Date: Sat, 4 Jan 2020 07:42:57 +1000 Subject: [PATCH 18/94] Removes genetic mutations, removes cryotubes from resleeving labs --- code/modules/resleeving/machines.dm | 6 - maps/tether/tether-02-surface2.dmm | 345 ++++++++++++---------------- maps/tether/tether-06-station2.dmm | 233 ++++++++----------- 3 files changed, 242 insertions(+), 342 deletions(-) diff --git a/code/modules/resleeving/machines.dm b/code/modules/resleeving/machines.dm index 1763babcfb..3df3ff8053 100644 --- a/code/modules/resleeving/machines.dm +++ b/code/modules/resleeving/machines.dm @@ -89,12 +89,6 @@ H.Paralyse(4) H.updatehealth() - //Grower specific mutations - if(heal_level < 60) - randmutb(H) - H.dna.UpdateSE() - H.dna.UpdateUI() - //Update appearance, remake icons H.UpdateAppearance() H.sync_organ_dna() diff --git a/maps/tether/tether-02-surface2.dmm b/maps/tether/tether-02-surface2.dmm index 68c6a1a533..45de27b05a 100644 --- a/maps/tether/tether-02-surface2.dmm +++ b/maps/tether/tether-02-surface2.dmm @@ -299,21 +299,29 @@ dir = 1 }, /obj/machinery/clonepod/transhuman, -/obj/effect/floor_decal/industrial/warning{ - icon_state = "warning"; - dir = 4 - }, /turf/simulated/floor/tiled/white, /area/tether/surfacebase/medical/resleeving) "aaI" = ( -/obj/effect/floor_decal/techfloor{ - dir = 9 +/obj/effect/floor_decal/borderfloorwhite{ + dir = 1 }, -/obj/machinery/atmospherics/pipe/simple/hidden/cyan{ - dir = 6 +/obj/effect/floor_decal/corner/paleblue/border{ + dir = 1 }, -/obj/machinery/camera/network/medbay, -/turf/simulated/floor/tiled/dark, +/obj/structure/table/glass, +/obj/item/weapon/reagent_containers/glass/bottle/biomass{ + pixel_x = 4; + pixel_y = 6 + }, +/obj/item/weapon/reagent_containers/glass/bottle/biomass{ + pixel_x = -4; + pixel_y = 8 + }, +/obj/item/weapon/reagent_containers/glass/bottle/biomass{ + pixel_x = -7; + pixel_y = 4 + }, +/turf/simulated/floor/tiled/white, /area/tether/surfacebase/medical/resleeving) "aaJ" = ( /obj/effect/floor_decal/borderfloorwhite{ @@ -404,9 +412,27 @@ /turf/simulated/floor, /area/maintenance/lower/north) "aaQ" = ( -/obj/machinery/atmospherics/unary/cryo_cell, -/obj/effect/floor_decal/industrial/outline/yellow, -/turf/simulated/floor/tiled, +/obj/effect/floor_decal/borderfloorwhite{ + dir = 1 + }, +/obj/effect/floor_decal/corner/paleblue/border{ + dir = 1 + }, +/obj/structure/table/glass, +/obj/item/weapon/reagent_containers/glass/bottle/biomass{ + pixel_x = 6; + pixel_y = 8 + }, +/obj/machinery/alarm{ + pixel_x = 0; + pixel_y = 28 + }, +/obj/machinery/atmospherics/unary/vent_scrubber/on, +/obj/item/device/flashlight/pen{ + pixel_x = -3; + pixel_y = -3 + }, +/turf/simulated/floor/tiled/white, /area/tether/surfacebase/medical/resleeving) "aaR" = ( /obj/effect/decal/cleanable/dirt, @@ -462,42 +488,14 @@ /turf/simulated/floor, /area/maintenance/substation/medsec) "aaW" = ( -/obj/effect/floor_decal/borderfloorwhite{ - dir = 1 +/obj/effect/floor_decal/steeldecal/steel_decals10{ + dir = 5 }, -/obj/effect/floor_decal/corner/paleblue/border{ - dir = 1 +/obj/effect/floor_decal/steeldecal/steel_decals10{ + dir = 6 }, -/obj/effect/floor_decal/industrial/warning{ - dir = 8 - }, -/obj/structure/table/glass, -/obj/item/weapon/reagent_containers/glass/beaker/cryoxadone{ - pixel_x = 7; - pixel_y = 1 - }, -/obj/item/weapon/reagent_containers/glass/bottle/biomass{ - pixel_x = -4; - pixel_y = 8 - }, -/obj/item/weapon/reagent_containers/glass/bottle/biomass{ - pixel_x = -7; - pixel_y = 4 - }, -/obj/item/weapon/reagent_containers/glass/bottle/biomass{ - pixel_x = 6; - pixel_y = 8 - }, -/obj/item/weapon/reagent_containers/glass/bottle/biomass{ - pixel_x = 4; - pixel_y = 6 - }, -/obj/machinery/alarm{ - pixel_x = 0; - pixel_y = 28 - }, -/obj/machinery/atmospherics/unary/vent_scrubber/on, -/turf/simulated/floor/tiled/white, +/obj/structure/curtain/open/shower/medical, +/turf/simulated/floor/tiled/dark, /area/tether/surfacebase/medical/resleeving) "aaX" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply{ @@ -2060,10 +2058,6 @@ /turf/simulated/floor/tiled/techfloor, /area/maintenance/lower/mining) "aeu" = ( -/obj/machinery/atmospherics/portables_connector{ - dir = 8 - }, -/obj/machinery/portable_atmospherics/canister/oxygen/prechilled, /obj/effect/floor_decal/techfloor{ dir = 5 }, @@ -2071,6 +2065,8 @@ icon_state = "bulb1"; dir = 1 }, +/obj/structure/table/standard, +/obj/random/soap, /turf/simulated/floor/tiled/dark, /area/tether/surfacebase/medical/resleeving) "aev" = ( @@ -22519,25 +22515,25 @@ /turf/simulated/floor/tiled/white, /area/tether/surfacebase/medical/resleeving) "aPJ" = ( -/obj/effect/floor_decal/industrial/warning/corner{ - icon_state = "warningcorner"; - dir = 4 - }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, /turf/simulated/floor/tiled/white, /area/tether/surfacebase/medical/resleeving) "aPK" = ( -/obj/effect/floor_decal/industrial/warning{ - dir = 1 +/obj/effect/floor_decal/techfloor{ + dir = 8 }, -/obj/machinery/atmospherics/pipe/simple/hidden/cyan, -/turf/simulated/floor/tiled/white, +/obj/machinery/firealarm{ + dir = 8; + pixel_x = -24 + }, +/turf/simulated/floor/tiled/dark, /area/tether/surfacebase/medical/resleeving) "aPL" = ( -/obj/effect/floor_decal/industrial/warning/corner{ - dir = 1 +/obj/effect/floor_decal/techfloor{ + dir = 4 }, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, -/turf/simulated/floor/tiled/white, +/obj/structure/table/standard, +/turf/simulated/floor/tiled/dark, /area/tether/surfacebase/medical/resleeving) "aPM" = ( /obj/effect/floor_decal/borderfloorwhite{ @@ -22559,22 +22555,21 @@ /turf/simulated/floor/tiled/white, /area/tether/surfacebase/medical/resleeving) "aPN" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/cyan, -/obj/effect/floor_decal/techfloor{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 6 }, -/obj/machinery/firealarm{ - dir = 8; - pixel_x = -24 +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 6 }, -/turf/simulated/floor/tiled/dark, +/obj/machinery/hologram/holopad, +/turf/simulated/floor/tiled/white, /area/tether/surfacebase/medical/resleeving) "aPO" = ( -/obj/machinery/atmospherics/unary/freezer, -/obj/effect/floor_decal/techfloor{ +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ dir = 4 }, -/turf/simulated/floor/tiled/dark, +/turf/simulated/floor/tiled/white, /area/tether/surfacebase/medical/resleeving) "aPP" = ( /obj/effect/floor_decal/borderfloorwhite{ @@ -22862,39 +22857,10 @@ /turf/simulated/floor/tiled/white, /area/tether/surfacebase/medical/resleeving) "aQl" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/cyan{ - dir = 5; - icon_state = "intact" - }, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ - dir = 6 - }, -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - dir = 6 - }, -/obj/machinery/hologram/holopad, -/turf/simulated/floor/tiled/white, -/area/tether/surfacebase/medical/resleeving) -"aQm" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/cyan{ - dir = 4; - icon_state = "intact" - }, -/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers, -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - dir = 4 - }, -/turf/simulated/floor/tiled/white, -/area/tether/surfacebase/medical/resleeving) -"aQn" = ( /obj/effect/floor_decal/steeldecal/steel_decals4{ dir = 10 }, /obj/effect/floor_decal/steeldecal/steel_decals4, -/obj/machinery/atmospherics/pipe/simple/hidden/cyan{ - dir = 4; - icon_state = "intact" - }, /obj/machinery/atmospherics/pipe/manifold/hidden/supply{ dir = 1 }, @@ -22903,7 +22869,7 @@ }, /turf/simulated/floor/tiled/white, /area/tether/surfacebase/medical/resleeving) -"aQo" = ( +"aQm" = ( /obj/machinery/door/firedoor/glass, /obj/machinery/door/airlock/medical{ id_tag = null; @@ -22913,17 +22879,12 @@ /obj/machinery/atmospherics/pipe/simple/hidden/supply{ dir = 4 }, -/obj/machinery/atmospherics/pipe/simple/hidden/cyan{ - icon_state = "intact"; - dir = 4 - }, /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ dir = 4 }, /turf/simulated/floor/tiled/white, /area/tether/surfacebase/medical/resleeving) -"aQp" = ( -/obj/machinery/atmospherics/pipe/manifold/hidden/cyan, +"aQn" = ( /obj/effect/floor_decal/techfloor{ dir = 8 }, @@ -22935,11 +22896,7 @@ }, /turf/simulated/floor/tiled/dark, /area/tether/surfacebase/medical/resleeving) -"aQq" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/cyan{ - dir = 9; - icon_state = "intact" - }, +"aQo" = ( /obj/effect/floor_decal/techfloor{ dir = 4 }, @@ -22960,6 +22917,30 @@ }, /turf/simulated/floor/tiled/dark, /area/tether/surfacebase/medical/resleeving) +"aQp" = ( +/obj/effect/floor_decal/borderfloorwhite{ + dir = 8 + }, +/obj/effect/floor_decal/corner/paleblue/border{ + dir = 8 + }, +/obj/machinery/door/firedoor/glass/hidden/steel, +/turf/simulated/floor/tiled/white, +/area/tether/surfacebase/medical/lowerhall) +"aQq" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/effect/floor_decal/borderfloorwhite{ + dir = 4 + }, +/obj/effect/floor_decal/corner/paleblue/border{ + dir = 4 + }, +/obj/machinery/door/firedoor/glass/hidden/steel{ + dir = 8 + }, +/turf/simulated/floor/tiled/white, +/area/tether/surfacebase/medical/lowerhall) "aQr" = ( /obj/effect/floor_decal/borderfloorwhite{ dir = 8 @@ -23348,17 +23329,27 @@ /turf/simulated/floor/tiled/white, /area/tether/surfacebase/medical/storage) "aQS" = ( -/obj/machinery/door/firedoor/glass/hidden/steel{ - dir = 8 +/obj/structure/table/glass, +/obj/item/weapon/book/manual/resleeving, +/obj/item/device/radio/intercom{ + dir = 2; + pixel_y = -24 + }, +/obj/structure/sign/nosmoking_1{ + pixel_x = 32 }, /obj/effect/floor_decal/borderfloorwhite{ - dir = 8 + dir = 6 }, /obj/effect/floor_decal/corner/paleblue/border{ - dir = 8 + dir = 6 + }, +/obj/item/device/sleevemate, +/obj/machinery/atmospherics/unary/vent_pump/on{ + dir = 1 }, /turf/simulated/floor/tiled/white, -/area/tether/surfacebase/medical/lowerhall) +/area/tether/surfacebase/medical/resleeving) "aQT" = ( /obj/structure/cable/green{ d1 = 1; @@ -23371,15 +23362,26 @@ /turf/simulated/floor/tiled/white, /area/tether/surfacebase/medical/lowerhall) "aQU" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/supply, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, -/obj/machinery/door/firedoor/glass/hidden/steel, -/obj/effect/floor_decal/borderfloorwhite{ +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ dir = 4 }, -/obj/effect/floor_decal/corner/paleblue/border{ +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ dir = 4 }, +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/effect/floor_decal/borderfloorwhite{ + dir = 1 + }, +/obj/effect/floor_decal/corner/paleblue/border{ + dir = 1 + }, +/obj/machinery/door/firedoor/glass/hidden/steel{ + dir = 2 + }, /turf/simulated/floor/tiled/white, /area/tether/surfacebase/medical/lowerhall) "aQV" = ( @@ -23502,31 +23504,13 @@ /turf/simulated/floor/tiled/white, /area/tether/surfacebase/medical/resleeving) "aRe" = ( -/obj/structure/table/glass, -/obj/item/weapon/book/manual/resleeving, -/obj/item/device/radio/intercom{ - dir = 2; - pixel_y = -24 - }, -/obj/structure/sign/nosmoking_1{ - pixel_x = 32 - }, -/obj/effect/floor_decal/borderfloorwhite{ - dir = 6 - }, -/obj/effect/floor_decal/corner/paleblue/border{ - dir = 6 - }, -/obj/item/device/sleevemate, -/obj/machinery/atmospherics/unary/vent_pump/on{ +/obj/effect/floor_decal/borderfloorwhite, +/obj/effect/floor_decal/corner/paleblue/border, +/obj/machinery/door/firedoor/glass/hidden/steel{ dir = 1 }, -/obj/item/device/flashlight/pen{ - pixel_x = -3; - pixel_y = -3 - }, /turf/simulated/floor/tiled/white, -/area/tether/surfacebase/medical/resleeving) +/area/tether/surfacebase/medical/lowerhall) "aRf" = ( /obj/machinery/washing_machine, /obj/effect/floor_decal/techfloor{ @@ -24228,29 +24212,6 @@ }, /turf/simulated/floor/tiled/white, /area/tether/surfacebase/medical/lowerhall) -"aSf" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - dir = 4 - }, -/obj/structure/cable/green{ - d1 = 4; - d2 = 8; - icon_state = "4-8" - }, -/obj/effect/floor_decal/borderfloorwhite{ - dir = 1 - }, -/obj/effect/floor_decal/corner/paleblue/border{ - dir = 1 - }, -/obj/machinery/door/firedoor/glass/hidden/steel{ - dir = 1 - }, -/turf/simulated/floor/tiled/white, -/area/tether/surfacebase/medical/lowerhall) "aSg" = ( /obj/structure/cable/green{ d1 = 1; @@ -24905,14 +24866,6 @@ /obj/effect/decal/cleanable/dirt, /turf/simulated/floor/plating, /area/maintenance/lower/mining) -"aTi" = ( -/obj/effect/floor_decal/borderfloorwhite, -/obj/effect/floor_decal/corner/paleblue/border, -/obj/machinery/door/firedoor/glass/hidden/steel{ - dir = 2 - }, -/turf/simulated/floor/tiled/white, -/area/tether/surfacebase/medical/lowerhall) "aTj" = ( /obj/effect/floor_decal/borderfloorwhite, /obj/effect/floor_decal/corner/paleblue/border, @@ -42454,7 +42407,7 @@ aaf aaf aQc aQB -aQS +aQp aRr aPp aSa @@ -42738,7 +42691,7 @@ aar aPC aaf aQD -aQU +aQq aRt aRG aSb @@ -43734,9 +43687,9 @@ aah aah aah aah -aSf +aQU aTb -aTi +aRe aad aba aai @@ -44013,7 +43966,7 @@ aab aac aah aaH -aPJ +aQK aQk aQK aRb @@ -44154,9 +44107,9 @@ aab aab aab aah -aaQ -aPK -aQl +aaI +aQK +aPN aQL aRc aRx @@ -44296,9 +44249,9 @@ aab aab aab aah -aaW -aPL -aQm +aaQ +aPJ +aPO aQM aRd aRw @@ -44440,9 +44393,9 @@ aab aah aaE aPM -aQn +aQl aQN -aRe +aQS aah aQb aSh @@ -44582,7 +44535,7 @@ aab aah aah aah -aQo +aQm aah aah aah @@ -44722,9 +44675,9 @@ aab aab aab aah -aaI -aPN -aQp +aaW +aPK +aQn aQO aRf aah @@ -44865,8 +44818,8 @@ aab aab aah aeu -aPO -aQq +aPL +aQo aQP aRg aah diff --git a/maps/tether/tether-06-station2.dmm b/maps/tether/tether-06-station2.dmm index e052f8ae0f..87899de6b2 100644 --- a/maps/tether/tether-06-station2.dmm +++ b/maps/tether/tether-06-station2.dmm @@ -13354,15 +13354,17 @@ /obj/effect/floor_decal/corner/paleblue/border{ dir = 1 }, -/obj/effect/floor_decal/industrial/warning{ - dir = 4 - }, /turf/simulated/floor/tiled/white, /area/medical/resleeving) "tX" = ( -/obj/machinery/atmospherics/unary/cryo_cell, -/obj/effect/floor_decal/industrial/outline/yellow, -/turf/simulated/floor/tiled, +/obj/effect/floor_decal/borderfloorwhite{ + dir = 1 + }, +/obj/effect/floor_decal/corner/paleblue/border{ + dir = 1 + }, +/obj/structure/table/glass, +/turf/simulated/floor/tiled/white, /area/medical/resleeving) "tY" = ( /obj/structure/cable/green{ @@ -13544,15 +13546,32 @@ /turf/simulated/floor/tiled, /area/tether/station/stairs_two) "uq" = ( -/obj/machinery/portable_atmospherics/canister/oxygen/prechilled, -/obj/machinery/atmospherics/portables_connector, -/obj/effect/floor_decal/techfloor{ - dir = 9 +/obj/effect/floor_decal/borderfloorwhite{ + dir = 1 }, -/turf/simulated/floor/tiled/dark, +/obj/effect/floor_decal/corner/paleblue/border{ + dir = 1 + }, +/obj/machinery/camera/network/medbay, +/turf/simulated/floor/tiled/white, /area/medical/resleeving) "ur" = ( -/obj/machinery/atmospherics/unary/freezer, +/obj/machinery/shower{ + dir = 4; + icon_state = "shower"; + pixel_x = 2; + pixel_y = 0 + }, +/obj/effect/floor_decal/steeldecal/steel_decals10{ + dir = 5 + }, +/obj/effect/floor_decal/steeldecal/steel_decals10{ + dir = 6 + }, +/obj/structure/curtain/open/shower/medical, +/turf/simulated/floor/tiled/dark, +/area/medical/resleeving) +"us" = ( /obj/machinery/light/small{ icon_state = "bulb1"; dir = 1 @@ -13560,18 +13579,7 @@ /obj/effect/floor_decal/techfloor{ dir = 1 }, -/turf/simulated/floor/tiled/dark, -/area/medical/resleeving) -"us" = ( /obj/structure/table/standard, -/obj/item/weapon/tool/wrench, -/obj/machinery/alarm{ - pixel_y = 22 - }, -/obj/machinery/atmospherics/unary/vent_pump/on, -/obj/effect/floor_decal/techfloor{ - dir = 1 - }, /turf/simulated/floor/tiled/dark, /area/medical/resleeving) "ut" = ( @@ -14028,6 +14036,18 @@ /turf/simulated/floor/tiled/white, /area/medical/resleeving) "vf" = ( +/obj/structure/table/standard, +/obj/machinery/alarm{ + pixel_y = 22 + }, +/obj/machinery/atmospherics/unary/vent_pump/on, +/obj/effect/floor_decal/techfloor{ + dir = 1 + }, +/obj/random/soap, +/turf/simulated/floor/tiled/dark, +/area/medical/resleeving) +"vg" = ( /obj/machinery/atmospherics/pipe/manifold/hidden/supply{ dir = 8 }, @@ -14035,13 +14055,9 @@ icon_state = "intact-scrubbers"; dir = 4 }, -/obj/effect/floor_decal/industrial/warning/corner{ - icon_state = "warningcorner"; - dir = 4 - }, /turf/simulated/floor/tiled/white, /area/medical/resleeving) -"vg" = ( +"vh" = ( /obj/machinery/hologram/holopad, /obj/machinery/atmospherics/pipe/simple/hidden/supply{ dir = 4 @@ -14050,27 +14066,6 @@ icon_state = "intact-scrubbers"; dir = 4 }, -/obj/machinery/atmospherics/pipe/simple/hidden/cyan{ - dir = 5; - icon_state = "intact" - }, -/obj/effect/floor_decal/industrial/warning{ - dir = 1 - }, -/turf/simulated/floor/tiled/white, -/area/medical/resleeving) -"vh" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ - icon_state = "intact-scrubbers"; - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/hidden/cyan{ - icon_state = "intact"; - dir = 4 - }, /turf/simulated/floor/tiled/white, /area/medical/resleeving) "vi" = ( @@ -14236,8 +14231,14 @@ icon_state = "intact-scrubbers"; dir = 4 }, -/obj/machinery/atmospherics/pipe/simple/hidden/cyan{ - icon_state = "intact"; +/turf/simulated/floor/tiled/white, +/area/medical/resleeving) +"vx" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + icon_state = "intact-scrubbers"; dir = 4 }, /obj/effect/floor_decal/borderfloorwhite{ @@ -14248,7 +14249,7 @@ }, /turf/simulated/floor/tiled/white, /area/medical/resleeving) -"vx" = ( +"vy" = ( /obj/machinery/door/firedoor/glass, /obj/machinery/door/airlock/medical{ id_tag = null; @@ -14262,26 +14263,8 @@ icon_state = "intact-scrubbers"; dir = 4 }, -/obj/machinery/atmospherics/pipe/simple/hidden/cyan{ - icon_state = "intact"; - dir = 4 - }, /turf/simulated/floor/tiled/white, /area/medical/resleeving) -"vy" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ - icon_state = "intact-scrubbers"; - dir = 4 - }, -/obj/machinery/atmospherics/pipe/manifold/hidden/cyan, -/obj/effect/floor_decal/techfloor{ - dir = 10 - }, -/turf/simulated/floor/tiled/dark, -/area/medical/resleeving) "vz" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply{ dir = 4 @@ -14290,27 +14273,20 @@ icon_state = "intact-scrubbers"; dir = 4 }, -/obj/machinery/atmospherics/pipe/simple/hidden/cyan{ - dir = 9; - icon_state = "intact" +/obj/effect/floor_decal/techfloor{ + dir = 10 }, -/obj/effect/floor_decal/techfloor, /turf/simulated/floor/tiled/dark, /area/medical/resleeving) "vA" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply{ - dir = 9; - pixel_y = 0 + dir = 4 }, /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ icon_state = "intact-scrubbers"; dir = 4 }, /obj/effect/floor_decal/techfloor, -/obj/machinery/camera/network/medbay{ - icon_state = "camera"; - dir = 10 - }, /turf/simulated/floor/tiled/dark, /area/medical/resleeving) "vB" = ( @@ -15219,6 +15195,18 @@ /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, /turf/simulated/floor/tiled/white, /area/medical/surgery_hallway) +"wY" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 9; + pixel_y = 0 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + icon_state = "intact-scrubbers"; + dir = 4 + }, +/obj/effect/floor_decal/techfloor, +/turf/simulated/floor/tiled/dark, +/area/medical/resleeving) "wZ" = ( /obj/effect/landmark/start{ name = "Medical Doctor" @@ -15249,23 +15237,22 @@ /turf/simulated/wall, /area/medical/surgery) "xc" = ( -/obj/structure/table/glass, -/obj/item/weapon/reagent_containers/glass/beaker/cryoxadone{ - pixel_x = 7; - pixel_y = 1 +/obj/machinery/shower{ + pixel_y = 10 }, -/obj/effect/floor_decal/borderfloorwhite{ +/obj/effect/floor_decal/steeldecal/steel_decals5, +/obj/effect/floor_decal/steeldecal/steel_decals5{ dir = 1 }, -/obj/effect/floor_decal/corner/paleblue/border{ - dir = 1 +/obj/effect/floor_decal/steeldecal/steel_decals10{ + dir = 5 }, -/obj/effect/floor_decal/industrial/warning{ - dir = 8 +/obj/effect/floor_decal/steeldecal/steel_decals10{ + dir = 6 }, -/obj/machinery/camera/network/medbay, +/obj/structure/curtain/open/shower/medical, /turf/simulated/floor/tiled/white, -/area/medical/resleeving) +/area/medical/recoveryrestroom) "xd" = ( /obj/structure/cable/green{ d1 = 1; @@ -18198,23 +18185,6 @@ }, /turf/simulated/floor/tiled/white, /area/medical/ward) -"Cd" = ( -/obj/structure/curtain/open/shower, -/obj/machinery/shower{ - pixel_y = 10 - }, -/obj/effect/floor_decal/steeldecal/steel_decals5, -/obj/effect/floor_decal/steeldecal/steel_decals5{ - dir = 1 - }, -/obj/effect/floor_decal/steeldecal/steel_decals10{ - dir = 5 - }, -/obj/effect/floor_decal/steeldecal/steel_decals10{ - dir = 6 - }, -/turf/simulated/floor/tiled/white, -/area/medical/recoveryrestroom) "Ce" = ( /turf/simulated/floor/tiled/white, /area/medical/recoveryrestroom) @@ -20194,23 +20164,6 @@ }, /turf/simulated/floor/tiled/white, /area/medical/ward) -"Fj" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ - icon_state = "intact-scrubbers"; - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/hidden/cyan{ - icon_state = "intact"; - dir = 4 - }, -/obj/effect/floor_decal/industrial/warning/corner{ - dir = 1 - }, -/turf/simulated/floor/tiled/white, -/area/medical/resleeving) "Fk" = ( /obj/structure/cable{ d1 = 4; @@ -33259,7 +33212,7 @@ AP Bh Bz BM -Cd +xc Cx Cz CX @@ -33385,7 +33338,7 @@ sm tg tu tW -vf +vg wh wG xf @@ -33527,7 +33480,7 @@ sn th tu tX -vg +vh wi wH xf @@ -33668,8 +33621,8 @@ pV so ti tu -xc -Fj +uq +vw wi wI xf @@ -33811,7 +33764,7 @@ sC tj tv tZ -vh +vw wi wJ xf @@ -33953,7 +33906,7 @@ sD tk tu ua -vh +vw wj wK xg @@ -34095,7 +34048,7 @@ sE tl tu ub -vw +vx wk wL xg @@ -34237,7 +34190,7 @@ uW uW tu tu -vx +vy yJ yJ yJ @@ -34378,8 +34331,8 @@ ac ac ac tu -uq -vy +ur +vz yJ eT eT @@ -34520,8 +34473,8 @@ ac ac ac tu -ur -vz +us +vA yJ eT eT @@ -34662,8 +34615,8 @@ ac ac ac tu -us -vA +vf +wY yJ eT eT From a56e3b4990ac0cde7f3e0dfe4c70dc17c05ea613 Mon Sep 17 00:00:00 2001 From: Heroman Date: Sat, 4 Jan 2020 08:44:23 +1000 Subject: [PATCH 19/94] Rebalances the debuff again, no defensive penalties, much larger offensive penalties --- code/modules/resleeving/machines.dm | 2 +- code/modules/resleeving/resleeving_sickness.dm | 18 ++++++++---------- 2 files changed, 9 insertions(+), 11 deletions(-) diff --git a/code/modules/resleeving/machines.dm b/code/modules/resleeving/machines.dm index 3df3ff8053..22bfa33d6a 100644 --- a/code/modules/resleeving/machines.dm +++ b/code/modules/resleeving/machines.dm @@ -85,7 +85,7 @@ H.add_modifier(modifier_type) //Apply damage - H.adjustCloneLoss((H.getMaxHealth() - config.health_threshold_dead)*-0.75) + H.adjustCloneLoss((H.getMaxHealth()*1.5) H.Paralyse(4) H.updatehealth() diff --git a/code/modules/resleeving/resleeving_sickness.dm b/code/modules/resleeving/resleeving_sickness.dm index 6729b6f729..d98ff952d9 100644 --- a/code/modules/resleeving/resleeving_sickness.dm +++ b/code/modules/resleeving/resleeving_sickness.dm @@ -3,14 +3,12 @@ desc = "You feel rather weak, having been sleeved not so long ago." stacks = MODIFIER_STACK_EXTEND - on_created_text = "You feel frail and unfocused." - on_expired_text = "You feel your resilience and focus return to you." + on_created_text = "You feel weak and unfocused." + on_expired_text = "You feel your strength and focus return to you." - incoming_brute_damage_percent = 1.1 // 30% more incoming brute damage. - incoming_fire_damage_percent = 1.1 // 30% more incoming burn damage. - incoming_hal_damage_percent = 1.5 // 50% more incoming agony. - outgoing_melee_damage_percent = 0.75 // 25% less melee damage. - disable_duration_percent = 1.5 // 50% longer stuns. - evasion = -20 // 20% easier to hit. - accuracy = -30 // 30% less accurate. - accuracy_dispersion = 15 // 15% less precise. \ No newline at end of file + incoming_hal_damage_percent = 2 // 100% more incoming agony. + outgoing_melee_damage_percent = 0.6 // 60% less melee damage. + disable_duration_percent = 2 // 100% longer stuns. + evasion = -50 // 50% easier to hit. + accuracy = -66 // 66% less accurate. + accuracy_dispersion = 30 // 30% less precise. \ No newline at end of file From 418aa9195a4d6532ebc05d51ed466ea142af1056 Mon Sep 17 00:00:00 2001 From: Heroman Date: Sat, 4 Jan 2020 08:51:48 +1000 Subject: [PATCH 20/94] Missed parenthesis --- code/modules/resleeving/machines.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/modules/resleeving/machines.dm b/code/modules/resleeving/machines.dm index 22bfa33d6a..e5ba3a1339 100644 --- a/code/modules/resleeving/machines.dm +++ b/code/modules/resleeving/machines.dm @@ -85,7 +85,7 @@ H.add_modifier(modifier_type) //Apply damage - H.adjustCloneLoss((H.getMaxHealth()*1.5) + H.adjustCloneLoss(H.getMaxHealth()*1.5) H.Paralyse(4) H.updatehealth() From c434b01190cb6b8772535981a9f7ac098efa452b Mon Sep 17 00:00:00 2001 From: Heroman Date: Sat, 4 Jan 2020 09:12:54 +1000 Subject: [PATCH 21/94] Wrong calculation + return of speed buff --- code/modules/resleeving/machines.dm | 2 +- code/modules/resleeving/resleeving_sickness.dm | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/code/modules/resleeving/machines.dm b/code/modules/resleeving/machines.dm index e5ba3a1339..8b7cd7d42e 100644 --- a/code/modules/resleeving/machines.dm +++ b/code/modules/resleeving/machines.dm @@ -131,7 +131,7 @@ else if(occupant.getCloneLoss() > 0) //Slowly get that clone healed and finished. - occupant.adjustCloneLoss(-2 * heal_rate) + occupant.adjustCloneLoss(-3 * heal_rate) //Premature clones may have brain damage. occupant.adjustBrainLoss(-(CEILING((0.5*heal_rate), 1))) diff --git a/code/modules/resleeving/resleeving_sickness.dm b/code/modules/resleeving/resleeving_sickness.dm index d98ff952d9..e47c09ea70 100644 --- a/code/modules/resleeving/resleeving_sickness.dm +++ b/code/modules/resleeving/resleeving_sickness.dm @@ -7,7 +7,7 @@ on_expired_text = "You feel your strength and focus return to you." incoming_hal_damage_percent = 2 // 100% more incoming agony. - outgoing_melee_damage_percent = 0.6 // 60% less melee damage. + outgoing_melee_damage_percent = 0.4 // 60% less melee damage. disable_duration_percent = 2 // 100% longer stuns. evasion = -50 // 50% easier to hit. accuracy = -66 // 66% less accurate. From 6d35de30b4753823bf641e0be4a511ad0cbdf1ce Mon Sep 17 00:00:00 2001 From: Heroman Date: Sun, 5 Jan 2020 08:17:19 +1000 Subject: [PATCH 22/94] Less pain, return of minor burn/brute --- code/modules/resleeving/resleeving_sickness.dm | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/code/modules/resleeving/resleeving_sickness.dm b/code/modules/resleeving/resleeving_sickness.dm index e47c09ea70..74dc25c37c 100644 --- a/code/modules/resleeving/resleeving_sickness.dm +++ b/code/modules/resleeving/resleeving_sickness.dm @@ -6,7 +6,9 @@ on_created_text = "You feel weak and unfocused." on_expired_text = "You feel your strength and focus return to you." - incoming_hal_damage_percent = 2 // 100% more incoming agony. + incoming_brute_damage_percent = 1.1 // 10% more brute damage + incoming_burn_damage_percent = 1.1 // 10% more burn damage + incoming_hal_damage_percent = 1.5 // 50% more incoming agony. outgoing_melee_damage_percent = 0.4 // 60% less melee damage. disable_duration_percent = 2 // 100% longer stuns. evasion = -50 // 50% easier to hit. From f6611bd0344429f178cdf0188da350662d51bea4 Mon Sep 17 00:00:00 2001 From: Heroman Date: Sun, 5 Jan 2020 08:41:24 +1000 Subject: [PATCH 23/94] Reflex typo --- code/modules/resleeving/resleeving_sickness.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/modules/resleeving/resleeving_sickness.dm b/code/modules/resleeving/resleeving_sickness.dm index 74dc25c37c..16d856c838 100644 --- a/code/modules/resleeving/resleeving_sickness.dm +++ b/code/modules/resleeving/resleeving_sickness.dm @@ -7,7 +7,7 @@ on_expired_text = "You feel your strength and focus return to you." incoming_brute_damage_percent = 1.1 // 10% more brute damage - incoming_burn_damage_percent = 1.1 // 10% more burn damage + incoming_fire_damage_percent = 1.1 // 10% more burn damage incoming_hal_damage_percent = 1.5 // 50% more incoming agony. outgoing_melee_damage_percent = 0.4 // 60% less melee damage. disable_duration_percent = 2 // 100% longer stuns. From 9d21d59be2835171badfd2952152ef428a1bcc03 Mon Sep 17 00:00:00 2001 From: Novacat <35587478+Novacat@users.noreply.github.com> Date: Sat, 4 Jan 2020 17:41:35 -0500 Subject: [PATCH 24/94] Update resleeving_sickness.dm --- code/modules/resleeving/resleeving_sickness.dm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/code/modules/resleeving/resleeving_sickness.dm b/code/modules/resleeving/resleeving_sickness.dm index 74dc25c37c..9759096d4f 100644 --- a/code/modules/resleeving/resleeving_sickness.dm +++ b/code/modules/resleeving/resleeving_sickness.dm @@ -7,10 +7,10 @@ on_expired_text = "You feel your strength and focus return to you." incoming_brute_damage_percent = 1.1 // 10% more brute damage - incoming_burn_damage_percent = 1.1 // 10% more burn damage + incoming_fire_damage_percent = 1.1 // 10% more burn damage incoming_hal_damage_percent = 1.5 // 50% more incoming agony. outgoing_melee_damage_percent = 0.4 // 60% less melee damage. disable_duration_percent = 2 // 100% longer stuns. evasion = -50 // 50% easier to hit. accuracy = -66 // 66% less accurate. - accuracy_dispersion = 30 // 30% less precise. \ No newline at end of file + accuracy_dispersion = 30 // 30% less precise. From 949026123019b138c9e6ac2aee4c0413969c2618 Mon Sep 17 00:00:00 2001 From: Heroman Date: Mon, 6 Jan 2020 07:15:13 +1000 Subject: [PATCH 25/94] Adds Kitsuhanan Cure for resleeving sickness --- .../items/weapons/storage/firstaid_vr.dm | 5 + .../Chemistry-Reagents-Medicine_vr.dm | 19 +- .../reagents/reagent_containers/pill_vr.dm | 10 + maps/tether/tether-10-colony.dmm | 323 +++++++++--------- 4 files changed, 194 insertions(+), 163 deletions(-) diff --git a/code/game/objects/items/weapons/storage/firstaid_vr.dm b/code/game/objects/items/weapons/storage/firstaid_vr.dm index 7cc415d938..754dfe9021 100644 --- a/code/game/objects/items/weapons/storage/firstaid_vr.dm +++ b/code/game/objects/items/weapons/storage/firstaid_vr.dm @@ -79,6 +79,11 @@ desc = "Miniature medical robots that swiftly restore bodily damage." starts_with = list(/obj/item/weapon/reagent_containers/pill/healing_nanites = 7) +/obj/item/weapon/storage/pill_bottle/sleevingcure + name = "pill bottle (Kitsuhanan Cure)" + desc = "A rare cure provided by KHI that helps counteract negative side effects of using imperfect resleeving machinery." + starts_with = list(/obj/item/weapon/reagent_containers/pill/sleevingcure = 7) + /obj/item/weapon/storage/firstaid/insiderepair name = "combat organ kit" desc = "Contains advanced organ medical treatments." diff --git a/code/modules/reagents/Chemistry-Reagents/Chemistry-Reagents-Medicine_vr.dm b/code/modules/reagents/Chemistry-Reagents/Chemistry-Reagents-Medicine_vr.dm index ae4f0b23f8..94f3d88f43 100644 --- a/code/modules/reagents/Chemistry-Reagents/Chemistry-Reagents-Medicine_vr.dm +++ b/code/modules/reagents/Chemistry-Reagents/Chemistry-Reagents-Medicine_vr.dm @@ -3,8 +3,9 @@ id = "adranol" description = "A mild sedative that calms the nerves and relaxes the patient." taste_description = "milk" - reagent_state = SOLID + reagent_state = LIQUID color = "#d5e2e5" + scannable = 1 /datum/reagent/adranol/affect_blood(var/mob/living/carbon/M, var/alien, var/removed) if(alien == IS_DIONA) @@ -65,7 +66,7 @@ description = "A potent chemical that treats physical damage at an exceptional rate." taste_description = "sparkles" taste_mult = 3 - reagent_state = SOLID + reagent_state = LIQUID color = "#964e06" overdose = REAGENTS_OVERDOSE * 0.5 scannable = 1 @@ -76,3 +77,17 @@ chem_effective = 0.75 if(alien != IS_DIONA) M.heal_organ_damage(8 * removed * chem_effective, 0) + +/datum/reagent/sleevingcure + name = "Kitsuhanan Cure" + id = "sleevingcure" + description = "A rare cure provided by KHI that helps counteract negative side effects of using imperfect resleeving machinery." + taste_description = "consequences" + taste_mult = 2 + reagent_state = LIQUID + color = "#b4dcdc" + overdose = 5 + scannable = 0 + +/datum/reagent/sleevingcure/affect_blood(var/mob/living/carbon/M, var/alien, var/removed) + M.remove_a_modifier_of_type(/datum/modifier/resleeving_sickness) \ No newline at end of file diff --git a/code/modules/reagents/reagent_containers/pill_vr.dm b/code/modules/reagents/reagent_containers/pill_vr.dm index 30d084570f..809af83d16 100644 --- a/code/modules/reagents/reagent_containers/pill_vr.dm +++ b/code/modules/reagents/reagent_containers/pill_vr.dm @@ -124,3 +124,13 @@ ..() reagents.add_reagent("healing_nanites", 30) color = reagents.get_color() + +/obj/item/weapon/reagent_containers/pill/sleevingcure + name = "Kitsuhanan Cure pill" + desc = "A rare cure provided by KHI that helps counteract negative side effects of using imperfect resleeving machinery." + icon_state = "pill3" + +/obj/item/weapon/reagent_containers/pill/sleevingcure/Initialize() + ..() + reagents.add_reagent("sleevingcure", 1) + color = reagents.get_color() diff --git a/maps/tether/tether-10-colony.dmm b/maps/tether/tether-10-colony.dmm index 44d57d6908..658615aacc 100644 --- a/maps/tether/tether-10-colony.dmm +++ b/maps/tether/tether-10-colony.dmm @@ -2,6 +2,16 @@ "aa" = ( /turf/unsimulated/wall/planetary/virgo3b, /area/space) +"ab" = ( +/obj/machinery/power/emitter/gyrotron/anchored{ + desc = "It is a heavy duty pulse laser emitter."; + dir = 1; + icon_state = "emitter-off"; + name = "pulse laser" + }, +/turf/space, +/turf/simulated/shuttle/plating/airless/carry, +/area/mothership/breakroom) "ac" = ( /turf/unsimulated/mineral/virgo3b, /area/space) @@ -2050,6 +2060,14 @@ icon_state = "dark" }, /area/centcom/control) +"dx" = ( +/obj/structure/shuttle/engine/propulsion{ + icon_state = "burst_l"; + dir = 8 + }, +/turf/unsimulated/floor/shuttle_ceiling, +/turf/simulated/shuttle/plating/airless/carry, +/area/shuttle/specialops/centcom) "dy" = ( /obj/structure/bed/chair, /obj/item/weapon/handcuffs, @@ -4078,6 +4096,14 @@ /obj/structure/filingcabinet/filingcabinet, /turf/unsimulated/floor/steel, /area/centcom/control) +"hx" = ( +/obj/structure/shuttle/engine/propulsion{ + icon_state = "propulsion"; + dir = 8 + }, +/turf/unsimulated/floor/shuttle_ceiling, +/turf/simulated/shuttle/plating/airless/carry, +/area/shuttle/specialops/centcom) "hy" = ( /obj/machinery/button/remote/blast_door{ id = "ArmouryC4"; @@ -4743,6 +4769,14 @@ }, /turf/unsimulated/floor/steel, /area/centcom/evac) +"iQ" = ( +/obj/structure/shuttle/engine/propulsion{ + icon_state = "burst_r"; + dir = 8 + }, +/turf/unsimulated/floor/shuttle_ceiling, +/turf/simulated/shuttle/plating/airless/carry, +/area/shuttle/specialops/centcom) "iR" = ( /obj/structure/table/steel_reinforced, /obj/item/weapon/storage/box/gloves, @@ -5006,6 +5040,16 @@ /obj/effect/floor_decal/industrial/warning/dust, /turf/unsimulated/floor/steel, /area/centcom/evac) +"jm" = ( +/obj/machinery/power/emitter/gyrotron/anchored{ + desc = "It is a heavy duty pulse laser emitter."; + dir = 8; + icon_state = "emitter-off"; + name = "pulse laser" + }, +/turf/space, +/turf/simulated/shuttle/plating/airless/carry, +/area/mothership/eva) "jn" = ( /obj/structure/bed/chair/comfy/black{ dir = 4 @@ -5046,6 +5090,26 @@ stripe_color = "#45b3d8" }, /area/mothership/cryotube) +"jr" = ( +/obj/machinery/power/emitter/gyrotron/anchored{ + desc = "It is a heavy duty pulse laser emitter."; + dir = 4; + icon_state = "emitter-off"; + name = "pulse laser" + }, +/turf/space, +/turf/simulated/shuttle/plating/airless/carry, +/area/mothership/eva) +"js" = ( +/obj/structure/table/reinforced, +/obj/item/weapon/storage/firstaid/clotting, +/obj/item/weapon/storage/firstaid/bonemed, +/obj/item/weapon/storage/pill_bottle/sleevingcure, +/turf/unsimulated/floor{ + icon_state = "vault"; + dir = 5 + }, +/area/centcom/specops) "jt" = ( /obj/structure/closet/secure_closet/medical3, /turf/simulated/floor/tiled/white, @@ -5080,6 +5144,16 @@ /area/shuttle/large_escape_pod1/centcom{ base_turf = /turf/simulated/floor/tiled/steel_dirty/virgo3b }) +"jz" = ( +/obj/machinery/power/emitter/gyrotron/anchored{ + desc = "It is a heavy duty pulse laser emitter."; + dir = 8; + icon_state = "emitter-off"; + name = "pulse laser" + }, +/turf/space, +/turf/simulated/shuttle/plating/airless/carry, +/area/mothership/surgery) "jA" = ( /obj/structure/table/rack, /obj/effect/floor_decal/industrial/outline/yellow, @@ -7264,6 +7338,16 @@ }, /turf/simulated/floor/tiled/techmaint, /area/mothership/hallway) +"nl" = ( +/obj/machinery/power/emitter/gyrotron/anchored{ + desc = "It is a heavy duty pulse laser emitter."; + dir = 4; + icon_state = "emitter-off"; + name = "pulse laser" + }, +/turf/space, +/turf/simulated/shuttle/plating/airless/carry, +/area/mothership/security) "nm" = ( /turf/unsimulated/floor/steel, /area/centcom/evac) @@ -9575,6 +9659,16 @@ /obj/structure/sign/warning/nosmoking_2, /turf/unsimulated/wall, /area/centcom/terminal) +"rr" = ( +/obj/machinery/power/emitter/gyrotron/anchored{ + desc = "It is a heavy duty pulse laser emitter."; + dir = 8; + icon_state = "emitter-off"; + name = "pulse laser" + }, +/turf/space, +/turf/simulated/shuttle/plating/airless/carry, +/area/mothership/resleeving) "rs" = ( /turf/unsimulated/wall, /area/centcom/terminal) @@ -16166,6 +16260,26 @@ /obj/machinery/door/firedoor/glass, /turf/simulated/floor/tiled/techmaint, /area/mothership/robotics) +"CE" = ( +/obj/machinery/power/emitter/gyrotron/anchored{ + desc = "It is a heavy duty pulse laser emitter."; + dir = 4; + icon_state = "emitter-off"; + name = "pulse laser" + }, +/turf/space, +/turf/simulated/shuttle/plating/airless/carry, +/area/mothership/warden) +"CF" = ( +/obj/machinery/power/emitter/gyrotron/anchored{ + desc = "It is a heavy duty pulse laser emitter."; + dir = 8; + icon_state = "emitter-off"; + name = "pulse laser" + }, +/turf/space, +/turf/simulated/shuttle/plating/airless/carry, +/area/mothership/rnd) "CG" = ( /obj/structure/bed/chair/wood{ icon_state = "wooden_chair"; @@ -16561,6 +16675,36 @@ }, /turf/simulated/floor/tiled/techmaint, /area/mothership/eva) +"Dj" = ( +/obj/machinery/power/emitter/gyrotron/anchored{ + desc = "It is a heavy duty pulse laser emitter."; + dir = 4; + icon_state = "emitter-off"; + name = "pulse laser" + }, +/turf/space, +/turf/simulated/shuttle/plating/airless/carry, +/area/mothership/armory) +"Dk" = ( +/obj/machinery/power/emitter/gyrotron/anchored{ + desc = "It is a heavy duty pulse laser emitter."; + dir = 8; + icon_state = "emitter-off"; + name = "pulse laser" + }, +/turf/space, +/turf/simulated/shuttle/plating/airless/carry, +/area/mothership/telecomms1) +"Dl" = ( +/obj/machinery/power/emitter/gyrotron/anchored{ + desc = "It is a heavy duty pulse laser emitter."; + dir = 4; + icon_state = "emitter-off"; + name = "pulse laser" + }, +/turf/space, +/turf/simulated/shuttle/plating/airless/carry, +/area/mothership/telecomms2) "Dm" = ( /obj/structure/table/steel_reinforced, /obj/machinery/cell_charger, @@ -16659,14 +16803,6 @@ }, /turf/simulated/floor/tiled/techmaint, /area/mothership/processing) -"Dx" = ( -/obj/structure/shuttle/engine/propulsion{ - icon_state = "burst_r"; - dir = 8 - }, -/turf/unsimulated/floor/shuttle_ceiling, -/turf/simulated/shuttle/plating/airless/carry, -/area/shuttle/specialops/centcom) "Dy" = ( /obj/structure/closet/secure_closet/sar, /turf/simulated/floor/tiled/white, @@ -16885,15 +17021,6 @@ /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, /turf/simulated/floor/tiled/techmaint, /area/mothership/warden) -"Ea" = ( -/obj/structure/table/reinforced, -/obj/item/weapon/storage/firstaid/clotting, -/obj/item/weapon/storage/firstaid/bonemed, -/turf/unsimulated/floor{ - icon_state = "vault"; - dir = 5 - }, -/area/centcom/specops) "Eb" = ( /obj/item/modular_computer/telescreen/preset/generic{ pixel_y = 28 @@ -18383,16 +18510,6 @@ }, /turf/simulated/floor/tiled/techmaint, /area/mothership/breakroom) -"HQ" = ( -/obj/machinery/power/emitter/gyrotron/anchored{ - desc = "It is a heavy duty pulse laser emitter."; - dir = 1; - icon_state = "emitter-off"; - name = "pulse laser" - }, -/turf/space, -/turf/simulated/shuttle/plating/airless/carry, -/area/mothership/breakroom) "HR" = ( /obj/machinery/power/terminal{ icon_state = "term"; @@ -18614,14 +18731,6 @@ }, /turf/simulated/shuttle/floor/alienplating, /area/unknown/dorm1) -"Iq" = ( -/obj/structure/shuttle/engine/propulsion{ - icon_state = "burst_l"; - dir = 8 - }, -/turf/unsimulated/floor/shuttle_ceiling, -/turf/simulated/shuttle/plating/airless/carry, -/area/shuttle/specialops/centcom) "Is" = ( /obj/structure/closet/secure_closet/brig{ id = "Cell M2" @@ -18976,16 +19085,6 @@ }, /turf/unsimulated/floor/steel, /area/centcom/evac) -"Ja" = ( -/obj/machinery/power/emitter/gyrotron/anchored{ - desc = "It is a heavy duty pulse laser emitter."; - dir = 4; - icon_state = "emitter-off"; - name = "pulse laser" - }, -/turf/space, -/turf/simulated/shuttle/plating/airless/carry, -/area/mothership/telecomms2) "Jb" = ( /obj/machinery/door/airlock/multi_tile/metal/mait{ dir = 2; @@ -19011,16 +19110,6 @@ }, /turf/simulated/floor/tiled/techmaint, /area/mothership/armory) -"Jc" = ( -/obj/machinery/power/emitter/gyrotron/anchored{ - desc = "It is a heavy duty pulse laser emitter."; - dir = 8; - icon_state = "emitter-off"; - name = "pulse laser" - }, -/turf/space, -/turf/simulated/shuttle/plating/airless/carry, -/area/mothership/rnd) "Jd" = ( /obj/structure/undies_wardrobe, /obj/machinery/light{ @@ -19197,16 +19286,6 @@ }, /turf/simulated/floor/tiled/techmaint, /area/mothership/hydroponics) -"Jw" = ( -/obj/machinery/power/emitter/gyrotron/anchored{ - desc = "It is a heavy duty pulse laser emitter."; - dir = 4; - icon_state = "emitter-off"; - name = "pulse laser" - }, -/turf/space, -/turf/simulated/shuttle/plating/airless/carry, -/area/mothership/security) "Jx" = ( /obj/effect/floor_decal/industrial/warning{ icon_state = "warning"; @@ -20121,16 +20200,6 @@ /obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers, /turf/simulated/floor/tiled/techmaint, /area/mothership/armory) -"Ln" = ( -/obj/machinery/power/emitter/gyrotron/anchored{ - desc = "It is a heavy duty pulse laser emitter."; - dir = 8; - icon_state = "emitter-off"; - name = "pulse laser" - }, -/turf/space, -/turf/simulated/shuttle/plating/airless/carry, -/area/mothership/resleeving) "Lo" = ( /obj/machinery/vending/snack, /turf/simulated/floor/wood, @@ -20419,16 +20488,6 @@ "LT" = ( /turf/simulated/floor/tiled/white, /area/mothership/treatment) -"LV" = ( -/obj/machinery/power/emitter/gyrotron/anchored{ - desc = "It is a heavy duty pulse laser emitter."; - dir = 4; - icon_state = "emitter-off"; - name = "pulse laser" - }, -/turf/space, -/turf/simulated/shuttle/plating/airless/carry, -/area/mothership/warden) "LW" = ( /obj/machinery/recharge_station, /turf/simulated/shuttle/floor/alienplating, @@ -22260,24 +22319,6 @@ }, /turf/simulated/shuttle/floor/alienplating, /area/unknown/dorm1) -"PY" = ( -/obj/structure/shuttle/engine/propulsion{ - icon_state = "propulsion"; - dir = 8 - }, -/turf/unsimulated/floor/shuttle_ceiling, -/turf/simulated/shuttle/plating/airless/carry, -/area/shuttle/specialops/centcom) -"PZ" = ( -/obj/machinery/power/emitter/gyrotron/anchored{ - desc = "It is a heavy duty pulse laser emitter."; - dir = 8; - icon_state = "emitter-off"; - name = "pulse laser" - }, -/turf/space, -/turf/simulated/shuttle/plating/airless/carry, -/area/mothership/surgery) "Qa" = ( /obj/machinery/alarm{ alarm_id = "pen_nine"; @@ -22722,16 +22763,6 @@ icon_state = "white" }, /area/centcom/medical) -"Rd" = ( -/obj/machinery/power/emitter/gyrotron/anchored{ - desc = "It is a heavy duty pulse laser emitter."; - dir = 4; - icon_state = "emitter-off"; - name = "pulse laser" - }, -/turf/space, -/turf/simulated/shuttle/plating/airless/carry, -/area/mothership/armory) "Re" = ( /obj/structure/table/reinforced, /obj/item/device/binoculars, @@ -25560,16 +25591,6 @@ icon_state = "dark" }, /area/centcom/specops) -"XB" = ( -/obj/machinery/power/emitter/gyrotron/anchored{ - desc = "It is a heavy duty pulse laser emitter."; - dir = 4; - icon_state = "emitter-off"; - name = "pulse laser" - }, -/turf/space, -/turf/simulated/shuttle/plating/airless/carry, -/area/mothership/eva) "XC" = ( /obj/structure/table/woodentable, /turf/simulated/floor/carpet/blue, @@ -25851,16 +25872,6 @@ }, /turf/simulated/floor/tiled/techmaint, /area/mothership/engineering) -"Yf" = ( -/obj/machinery/power/emitter/gyrotron/anchored{ - desc = "It is a heavy duty pulse laser emitter."; - dir = 8; - icon_state = "emitter-off"; - name = "pulse laser" - }, -/turf/space, -/turf/simulated/shuttle/plating/airless/carry, -/area/mothership/telecomms1) "Yg" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply, /obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ @@ -26521,16 +26532,6 @@ }, /turf/simulated/floor/tiled/techmaint, /area/mothership/hallway) -"ZC" = ( -/obj/machinery/power/emitter/gyrotron/anchored{ - desc = "It is a heavy duty pulse laser emitter."; - dir = 8; - icon_state = "emitter-off"; - name = "pulse laser" - }, -/turf/space, -/turf/simulated/shuttle/plating/airless/carry, -/area/mothership/eva) "ZD" = ( /obj/structure/cable/cyan{ d1 = 4; @@ -27764,7 +27765,7 @@ OF ZL XS MJ -PZ +jz MJ XS ZL @@ -27776,7 +27777,7 @@ XS ZL XS PD -Ln +rr PD XS ZL @@ -27788,7 +27789,7 @@ XS ZL XS Ve -Jc +CF Ve XS ZL @@ -27801,7 +27802,7 @@ NJ UE ZL UE -Yf +Dk UE OF OF @@ -28462,7 +28463,7 @@ QU XK XK gX -ZC +jm Sh Gw Sh @@ -29160,7 +29161,7 @@ OF OF OF OF -HQ +ab IT OR OR @@ -30722,7 +30723,7 @@ OF OF OF OF -HQ +ab IT Sx OR @@ -31444,7 +31445,7 @@ Sf OE OE Ki -XB +jr Sh Di Sh @@ -32166,7 +32167,7 @@ OF ZL XS YF -Jw +nl YF XS ZL @@ -32178,7 +32179,7 @@ XS ZL XS ZM -LV +CE Ow XS ZL @@ -32190,7 +32191,7 @@ XS ZL XS TX -Rd +Dj TX XS ZL @@ -32203,7 +32204,7 @@ OZ Hj ZL Hj -Ja +Dl Hj OF OF @@ -41384,7 +41385,7 @@ ac ac ac ah -Ea +js aX aK aX @@ -43367,11 +43368,11 @@ ac ac ac ah -Iq -PY -PY -PY -Dx +dx +hx +hx +hx +iQ ah av aG From 07192b935cc7eefec4cfd94516330b14aea820f4 Mon Sep 17 00:00:00 2001 From: Andrew Date: Sun, 5 Jan 2020 17:08:55 -0600 Subject: [PATCH 26/94] Adjusts Emphasize Name Mention (#6597) Capitalizes all the words in the not_included section so that they actually get removed from the name check system. Names can't be lowercase so there is no point in keeping the previous version. --- code/modules/mob/hear_say.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/modules/mob/hear_say.dm b/code/modules/mob/hear_say.dm index ad3689e8c5..e491095905 100644 --- a/code/modules/mob/hear_say.dm +++ b/code/modules/mob/hear_say.dm @@ -97,7 +97,7 @@ // Checks if the mob's own name is included inside message. Handles both first and last names. /mob/proc/check_mentioned(var/message) - var/not_included = list("a", "the", "of", "in", "for", "through", "throughout", "therefore", "here", "there", "then", "now", "I", "you", "they", "he", "she", "by") + var/not_included = list("A", "The", "Of", "In", "For", "Through", "Throughout", "Therefore", "Here", "There", "Then", "Now", "I", "You", "They", "He", "She", "By") var/list/valid_names = splittext(real_name, " ") // Should output list("John", "Doe") as an example. valid_names -= not_included var/list/nicknames = splittext(nickname, " ") From 2b1002702409fc9af76f1bdd5a88b58df29b60db Mon Sep 17 00:00:00 2001 From: Heroman Date: Tue, 7 Jan 2020 17:02:39 +1000 Subject: [PATCH 28/94] Makes the sickness affect only people dying via non-vore deaths, adds fluff version with no downsides --- code/datums/mind_vr.dm | 2 ++ .../Chemistry-Reagents-Medicine_vr.dm | 3 ++- code/modules/resleeving/machines.dm | 8 ++++++-- code/modules/resleeving/resleeving_sickness.dm | 10 +++++++++- code/modules/vore/eating/belly_obj_vr.dm | 2 ++ vorestation.dme | 1 + 6 files changed, 22 insertions(+), 4 deletions(-) create mode 100644 code/datums/mind_vr.dm diff --git a/code/datums/mind_vr.dm b/code/datums/mind_vr.dm new file mode 100644 index 0000000000..851e713f66 --- /dev/null +++ b/code/datums/mind_vr.dm @@ -0,0 +1,2 @@ +/datum/mind + var/vore_death = FALSE // Was our last gasp a gurgle? \ No newline at end of file diff --git a/code/modules/reagents/Chemistry-Reagents/Chemistry-Reagents-Medicine_vr.dm b/code/modules/reagents/Chemistry-Reagents/Chemistry-Reagents-Medicine_vr.dm index 94f3d88f43..b431669982 100644 --- a/code/modules/reagents/Chemistry-Reagents/Chemistry-Reagents-Medicine_vr.dm +++ b/code/modules/reagents/Chemistry-Reagents/Chemistry-Reagents-Medicine_vr.dm @@ -90,4 +90,5 @@ scannable = 0 /datum/reagent/sleevingcure/affect_blood(var/mob/living/carbon/M, var/alien, var/removed) - M.remove_a_modifier_of_type(/datum/modifier/resleeving_sickness) \ No newline at end of file + M.remove_a_modifier_of_type(/datum/modifier/resleeving_sickness) + M.remove_a_modifier_of_type(/datum/modifier/faux_resleeving_sickness) \ No newline at end of file diff --git a/code/modules/resleeving/machines.dm b/code/modules/resleeving/machines.dm index 8b7cd7d42e..5e0f8af252 100644 --- a/code/modules/resleeving/machines.dm +++ b/code/modules/resleeving/machines.dm @@ -582,9 +582,13 @@ else occupant << "You feel a small pain in your head as you're given a new backup implant. Oh, and a new body. It's disorienting, to say the least." - occupant.confused = max(occupant.confused, confuse_amount) //Apply immedeate effects + occupant.confused = max(occupant.confused, confuse_amount) // Apply immedeate effects occupant.eye_blurry = max(occupant.eye_blurry, blur_amount) - occupant.add_modifier(/datum/modifier/resleeving_sickness, sickness_duration) //And more longterm ones + if(!(occupant.mind.vore_death)) + occupant.add_modifier(/datum/modifier/faux_resleeving_sickness, sickness_duration/3) // And more longterm, though purely visual ones + else + occupant.add_modifier(/datum/modifier/resleeving_sickness, sickness_duration) // Much more serious if it wasn't a death by vore though + occupant.mind.vore_death = FALSE // Reset our death type. Just in case if(occupant.mind && occupant.original_player && ckey(occupant.mind.key) != occupant.original_player) log_and_message_admins("is now a cross-sleeved character. Body originally belonged to [occupant.real_name]. Mind is now [occupant.mind.name].",occupant) diff --git a/code/modules/resleeving/resleeving_sickness.dm b/code/modules/resleeving/resleeving_sickness.dm index 9759096d4f..742aaa822c 100644 --- a/code/modules/resleeving/resleeving_sickness.dm +++ b/code/modules/resleeving/resleeving_sickness.dm @@ -1,6 +1,6 @@ /datum/modifier/resleeving_sickness name = "resleeving sickness" - desc = "You feel rather weak, having been sleeved not so long ago." + desc = "You feel rather weak and unfocused, having been sleeved not so long ago." stacks = MODIFIER_STACK_EXTEND on_created_text = "You feel weak and unfocused." @@ -14,3 +14,11 @@ evasion = -50 // 50% easier to hit. accuracy = -66 // 66% less accurate. accuracy_dispersion = 30 // 30% less precise. + +/datum/modifier/faux_resleeving_sickness + name = "resleeving sickness" + desc = "You feel somewhat weak and unfocused, having been sleeved not so long ago." + stacks = MODIFIER_STACK_EXTEND + + on_created_text = "You feel slightly weak and unfocused." + on_expired_text = "You feel your strength and focus return to you." \ No newline at end of file diff --git a/code/modules/vore/eating/belly_obj_vr.dm b/code/modules/vore/eating/belly_obj_vr.dm index 413c3511cd..b3472de774 100644 --- a/code/modules/vore/eating/belly_obj_vr.dm +++ b/code/modules/vore/eating/belly_obj_vr.dm @@ -393,6 +393,8 @@ //M.death(1) // "Stop it he's already dead..." Basically redundant and the reason behind screaming mouse carcasses. if(M.ckey) message_admins("[key_name(owner)] has digested [key_name(M)] in their [lowertext(name)] ([owner ? "JMP" : "null"])") + if(M.mind) + M.mind.vore_death = TRUE // If digested prey is also a pred... anyone inside their bellies gets moved up. if(is_vore_predator(M)) diff --git a/vorestation.dme b/vorestation.dme index 86e2e50ab9..e0fff4bad9 100644 --- a/vorestation.dme +++ b/vorestation.dme @@ -272,6 +272,7 @@ #include "code\datums\ghost_query.dm" #include "code\datums\hierarchy.dm" #include "code\datums\mind.dm" +#include "code\datums\mind_vr.dm" #include "code\datums\mixed.dm" #include "code\datums\modules.dm" #include "code\datums\mutable_appearance.dm" From b8d301649c56edb2108f29f392e82cb6969d3ede Mon Sep 17 00:00:00 2001 From: Heroman Date: Tue, 7 Jan 2020 18:30:30 +1000 Subject: [PATCH 29/94] Removes forgotten closing tags --- code/modules/resleeving/resleeving_sickness.dm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/code/modules/resleeving/resleeving_sickness.dm b/code/modules/resleeving/resleeving_sickness.dm index 742aaa822c..e3e782fba1 100644 --- a/code/modules/resleeving/resleeving_sickness.dm +++ b/code/modules/resleeving/resleeving_sickness.dm @@ -20,5 +20,5 @@ desc = "You feel somewhat weak and unfocused, having been sleeved not so long ago." stacks = MODIFIER_STACK_EXTEND - on_created_text = "You feel slightly weak and unfocused." - on_expired_text = "You feel your strength and focus return to you." \ No newline at end of file + on_created_text = "You feel slightly weak and unfocused." + on_expired_text = "You feel your strength and focus return to you." \ No newline at end of file From 9112a9a2b6c55b57704de2a1c590d3407d15e0c2 Mon Sep 17 00:00:00 2001 From: Ketrai Date: Tue, 7 Jan 2020 22:51:12 +0100 Subject: [PATCH 30/94] Food cubes woop removes a line of unneeded code --- code/datums/supplypacks/supply_vr.dm | 7 + code/game/machinery/vending_vr.dm | 13 ++ code/modules/food/food/snacks_vr.dm | 88 ++++++++- .../Chemistry-Reagents-Food-Drinks_vr.dm | 35 +++- code/modules/reagents/Chemistry-Recipes_vr.dm | 16 ++ icons/obj/food_vr.dmi | Bin 24758 -> 26957 bytes icons/obj/vending_vr.dmi | Bin 105283 -> 106114 bytes maps/tether/tether-07-station3.dmm | 183 ++++++++++++++++++ vorestation.dme | 1 + 9 files changed, 336 insertions(+), 7 deletions(-) create mode 100644 code/datums/supplypacks/supply_vr.dm diff --git a/code/datums/supplypacks/supply_vr.dm b/code/datums/supplypacks/supply_vr.dm new file mode 100644 index 0000000000..20c2d3f550 --- /dev/null +++ b/code/datums/supplypacks/supply_vr.dm @@ -0,0 +1,7 @@ +/datum/supply_pack/supply/foodcubes + name = "Emergency food cubes" + contains = list( + /obj/item/weapon/storage/box/wings/tray = 10) + cost = 75 + containertype = /obj/structure/closet/crate/freezer + containername = "food cubes" \ No newline at end of file diff --git a/code/game/machinery/vending_vr.dm b/code/game/machinery/vending_vr.dm index 42275f5aa9..ea3af1edc7 100644 --- a/code/game/machinery/vending_vr.dm +++ b/code/game/machinery/vending_vr.dm @@ -1318,3 +1318,16 @@ products = list(/obj/item/weapon/reagent_containers/glass/bottle/eznutrient = 6,/obj/item/weapon/reagent_containers/glass/bottle/left4zed = 4,/obj/item/weapon/reagent_containers/glass/bottle/robustharvest = 3,/obj/item/weapon/plantspray/pests = 20, /obj/item/weapon/reagent_containers/glass/beaker = 4,/obj/item/weapon/storage/bag/plants = 5) premium = list(/obj/item/weapon/reagent_containers/glass/bottle/ammonia = 10,/obj/item/weapon/reagent_containers/glass/bottle/diethylamine = 5) + +/obj/machinery/vending/emergencyfood + name = "Food Cube Dispenser" + desc = "An ominous machine dispensing food cubes. It will keep you fed, but at what cost?" + icon = 'icons/obj/vending_vr.dmi' + icon_state = "foodcube" + product_ads = "Afraid to starve?;Starvation is not an option!;Add water before consumption.;Let me take care of you.;Dire circumstances call for food cubes, do not let the taste deter you." + products = list(/obj/item/weapon/storage/box/wings/tray = 5) + contraband = list(/obj/item/weapon/storage/box/wings/tray = 5) + +/obj/machinery/vending/emergencyfood/filled + products = list(/obj/item/weapon/storage/box/wings/tray = 40) + contraband = list(/obj/item/weapon/storage/box/wings/tray = 20) \ No newline at end of file diff --git a/code/modules/food/food/snacks_vr.dm b/code/modules/food/food/snacks_vr.dm index 6d72e3cebf..f0cba676b5 100644 --- a/code/modules/food/food/snacks_vr.dm +++ b/code/modules/food/food/snacks_vr.dm @@ -117,23 +117,26 @@ desc = "A basket of chicken wings! Get some before they're all gone! Or maybe you're too late..." icon = 'icons/obj/food_vr.dmi' icon_state = "wings5" + var/icon_base = "wings" var/startswith = 5 max_storage_space = ITEMSIZE_COST_SMALL * 5 can_hold = list(/obj/item/weapon/reagent_containers/food/snacks/chickenwing) + starts_with = list( + /obj/item/weapon/reagent_containers/food/snacks/chickenwing = 5 + ) foldable = null /obj/item/weapon/storage/box/wings/Initialize() ..() for(var/i=1 to startswith) - new /obj/item/weapon/reagent_containers/food/snacks/chickenwing(src) update_icon() return /obj/item/weapon/storage/box/wings/update_icon() var/i = 0 - for(var/obj/item/weapon/reagent_containers/food/snacks/chickenwing/W in contents) + for(var/obj/item/weapon/reagent_containers/food/snacks/W in contents) i++ - icon_state = "wings[i]" + icon_state = "[icon_base][i]" /obj/item/weapon/reagent_containers/food/snacks/chickenwing name = "chicken wing" @@ -678,3 +681,82 @@ /obj/item/pizzabox/meat/Initialize() pizza = new /obj/item/weapon/reagent_containers/food/snacks/sliceable/pizza/meatcargo(src) + +// food cubes +/obj/item/weapon/reagent_containers/food/snacks/cube + name = "protein cube" + desc = "A colony of meat cells, Just add water!" + icon = 'icons/obj/food_vr.dmi' + icon_state = "proteincube" + w_class = ITEMSIZE_TINY + flags = OPENCONTAINER + bitesize = 12 + filling_color = "#ADAC7F" + center_of_mass = list("x"=16, "y"=14) + + var/food_type = "/obj/item/weapon/reagent_containers/food/snacks/proteinslab" + +/obj/item/weapon/reagent_containers/food/snacks/cube/Initialize() + . = ..() + +/obj/item/weapon/reagent_containers/food/snacks/cube/proc/Expand() + src.visible_message("\The [src] expands!") + new food_type(get_turf(src)) + qdel(src) + +/obj/item/weapon/reagent_containers/food/snacks/cube/on_reagent_change() + if(reagents.has_reagent("water")) + Expand() + +/obj/item/weapon/reagent_containers/food/snacks/cube/protein + +/obj/item/weapon/reagent_containers/food/snacks/cube/protein/Initialize() + . = ..() + reagents.add_reagent("meatcolony", 5) + +/obj/item/weapon/reagent_containers/food/snacks/proteinslab + name = "Protein slab" + desc = "A slab of near pure protein, extremely artificial, and thoroughly disgusting." + icon = 'icons/obj/food_vr.dmi' + icon_state = "proteinslab" + bitesize = 10 + nutriment_amt = 5 + nutriment_desc = list("bitter chyme" = 50) + +/obj/item/weapon/reagent_containers/food/snacks/proteinslab/Initialize() + ..() + reagents.add_reagent("protein", 30) + +/obj/item/weapon/reagent_containers/food/snacks/cube/nutriment + name = "Nutriment cube" + desc = "A colony of plant cells, Just add water!" + icon_state = "nutrimentcube" + food_type = "/obj/item/weapon/reagent_containers/food/snacks/nutrimentslab" + +/obj/item/weapon/reagent_containers/food/snacks/cube/nutriment/Initialize() + . = ..() + reagents.add_reagent("plantcolony", 5) + +/obj/item/weapon/reagent_containers/food/snacks/nutrimentslab + name = "Nutriment slab" + desc = "A slab of near pure plant-based nutrients, extremely artificial, and thoroughly disgusting." + icon = 'icons/obj/food_vr.dmi' + icon_state = "nutrimentslab" + bitesize = 10 + nutriment_amt = 20 + nutriment_desc = list("compost" = 50) + +/obj/item/weapon/storage/box/wings/tray //Might as well re-use this code. + name = "ration cube tray" + desc = "A tray of food cubes, the label warns not to consume before adding water or mixing with virusfood." + icon_state = "tray8" + icon_base = "tray" + startswith = 8 + w_class = ITEMSIZE_SMALL + max_storage_space = ITEMSIZE_COST_TINY * 8 + starts_with = list( + /obj/item/weapon/reagent_containers/food/snacks/cube/protein = 4, + /obj/item/weapon/reagent_containers/food/snacks/cube/nutriment = 4 + ) + can_hold = list(/obj/item/weapon/reagent_containers/food/snacks/cube/protein, + /obj/item/weapon/reagent_containers/food/snacks/cube/nutriment) diff --git a/code/modules/reagents/Chemistry-Reagents/Chemistry-Reagents-Food-Drinks_vr.dm b/code/modules/reagents/Chemistry-Reagents/Chemistry-Reagents-Food-Drinks_vr.dm index 5d7fc8992e..0485b231e2 100644 --- a/code/modules/reagents/Chemistry-Reagents/Chemistry-Reagents-Food-Drinks_vr.dm +++ b/code/modules/reagents/Chemistry-Reagents/Chemistry-Reagents-Food-Drinks_vr.dm @@ -1,12 +1,39 @@ /datum/reagent/nutriment nutriment_factor = 10 +/datum/reagent/toxin/meatcolony + name = "A colony of meat cells" + id = "meatcolony" + description = "Specialised cells designed to produce a large amount of meat once activated, whilst manufacturers have managed to stop these cells from taking over the body when ingested, it's still poisonous." + taste_description = "a fibrous mess" + reagent_state = LIQUID + color = "#ff2424" + strength = 10 + +/datum/reagent/toxin/plantcolony + name = "A colony of plant cells" + id = "plantcolony" + description = "Specialised cells designed to produce a large amount of nutriment once activated, whilst manufacturers have managed to stop these cells from taking over the body when ingested, it's still poisonous." + taste_description = "a fibrous mess" + reagent_state = LIQUID + color = "#7ce01f" + strength = 10 + +/datum/reagent/nutriment/grubshake + name = "Grub shake" + id = "grubshake" + description = "An odd fluid made from grub guts, supposedly filling." + taste_description = "sparkles" + taste_mult = 1.3 + nutriment_factor = 5 + color = "#fff200" + /datum/reagent/lipozine/affect_blood(var/mob/living/carbon/M, var/alien, var/removed) M.nutrition = max(M.nutrition - 20 * removed, 0) M.overeatduration = 0 if(M.nutrition < 0) M.nutrition = 0 - + /datum/reagent/ethanol/deathbell name = "Deathbell" id = "deathbell" @@ -20,7 +47,7 @@ glass_name = "Deathbell" glass_desc = "The perfect blend of the most alcoholic things a bartender can get their hands on." - + /datum/reagent/ethanol/deathbell/affect_ingest(var/mob/living/carbon/M, var/alien, var/removed) ..() @@ -49,7 +76,7 @@ if(M.species.gets_food_nutrition) //it's still food! switch(alien) if(IS_DIONA) //Diona don't get any nutrition from nutriment or protein. - if(IS_SKRELL) + if(IS_SKRELL) M.adjustToxLoss(0.25 * removed) //Equivalent to half as much protein, since it's half protein. if(IS_TESHARI) M.nutrition += (alt_nutriment_factor * 1.2 * removed) //Give them the same nutrition they would get from protein. @@ -57,7 +84,7 @@ M.nutrition += (alt_nutriment_factor * 1.125 * removed) //Give them the same nutrition they would get from protein. //Takes into account the 0.5 factor for all nutriment which is applied on top of the 2.25 factor for protein. //Chimera don't need their own case here since their factors for nutriment and protein cancel out. - else + else M.nutrition += (alt_nutriment_factor * removed) if(ishuman(M)) var/mob/living/carbon/human/H = M diff --git a/code/modules/reagents/Chemistry-Recipes_vr.dm b/code/modules/reagents/Chemistry-Recipes_vr.dm index c6d948ac35..f97084adad 100644 --- a/code/modules/reagents/Chemistry-Recipes_vr.dm +++ b/code/modules/reagents/Chemistry-Recipes_vr.dm @@ -129,6 +129,22 @@ required_reagents = list("whiskey" = 1, "protein" = 1) result_amount = 2 +/////////////////////////////////////////////////////////////////////////////////// +/// Reagent colonies. +/datum/chemical_reaction/meatcolony + name = "protein" + id = "meatcolony" + result = "protein" + required_reagents = list("meatcolony" = 5, "virusfood" = 5) + result_amount = 60 + +/datum/chemical_reaction/plantcolony + name = "nutriment" + id = "plantcolony" + result = "nutriment" + required_reagents = list("plantcolony" = 5, "virusfood" = 5) + result_amount = 60 + /////////////////////////////// //SLIME CORES BELOW HERE/////// /////////////////////////////// diff --git a/icons/obj/food_vr.dmi b/icons/obj/food_vr.dmi index f4b35ebb2ce3b9bb671ebd7eea9f6d2fedc484f0..0ebf8f48efbc0de6706ac0d74f78ffc7856d4d90 100644 GIT binary patch literal 26957 zcmafabx>SQ^yMJI9fG? JN1 zbkCc9ea^jo`}TQJ%8F9R2>1v9003D=T0#{7fFK2b0B|tiE11kxEdT%{oVU8RtAv@0 ziL;fXtCfR20N|OEo8D(%%z_p^y+c?1fL|k h KfnG=+m1d0)d&WL(Uyx65*L!d0_tC|FZVj-`|i{elPGX6@GP z@Z**ZPNxv)GTd6{tK;C=0gOks^_r}&L0XDl?3%6GoI2NY=s(luCu^!TZGOFZD`E`4 zRhDwjFL+97@$*nMG0sMAkZ;16$93JZRlE@8t@I`mH9Z+x#f{_4&|J*~HqNrRAPQpq zvqWpNH>)?{>-puprt2V9R@77SnTCqY#O&()x7?N>>)>@0#(k{dfbvCm^~@9LwbdD8 z5@l)@iKVy*&qVS&`$TNCc?sUvNn>{UtQ+%%1j !@!;93DB))OAc+rumC}U1 zt1SRP3XqWyRrky}&-L&mTx|aoW?%PcJ{?SsG1W_tJqYiN>r?=;7{l#Q!$7(t>{I`v z#IeuG77=@bkb#4zqa@J3gd_0AlvSgg6Zt7!! ^P_#O2 zN;o+ 5Y1UPp)K^b52`I jsW)$lxFgmEnp Va9|74-O_c6q3wq zxF~RXk764UNfX?lawee=)070W`{UWMju_4B%A1M&I8H01VA2Ba^+ZZ|2nY#um4%z! z5dNpZbF;Q=8^B7J2lMqPchSZpb0Ql~&Cr#5F-@QlHOj0p^|2F%vj-Xi3>vbeemu$_ zA(D%O?-ZMqXZCzBU7?dmHAIj`y6v$??icOl)Eul+3j_BrySCXL5(y^5@kDca1WTmh zTQnzRqOkt(^uCVEh0erAiD4-1!PVX!^H`GoiSFksh5nDN+|_uj@0KX?oWynGG3A)7 znMi=#aEidq0vap?bc9ee5V?OHNyunm(;{AtB8N1;$0a2dRT!Q_7o0tf?~Y9(f9`yl zQc6Y!ce1X?@~`whtdLEhxW#YM)BEFlYOy{*GL{6I8(gsT%oPRJHTpFl#C7Kygy%EJ z J2IPKViw{&yX%HlX8m5 zaYaKYp!dH#&;Jtl=Z)}3El0jW<^tRxSfY(F_Q&!tYDdXrxWdp_=&8Pl)|J)QJFaw` zoSXm_78WFG>U@6*`!!5+?u-ntp8lOZ?>)PPG-km^gANK57GXh?C|f3zNuFC!jg!I} zjG0HyXOBB)|3VtAtP7YzY5cfGL_k20l;3^!xh)yIvuFYi%2r1ev#h27;8hl!ru90} zL6RlP()Qjm7}8|jO|QtlQ`kAkM>m~o`@%}FFfK?^LQjdkTc?uePeQ8D*RUbyPXku6 z?h)nR1QZRd&>`w@wB#^_GBA6VW3Uj&$UZOm-lbh@#|}+e165Fi0z)@R2~efA<&`&R z9XI~)Mg|9t8Y?rWQbaMYfXML?M(JRnb>x(hc;1W<>M|(Nz7!50!Ny?tz5VW&69?c! zCjJO)kmNn3y%Qt-V;4*;+vS{cT-c;&O@I%`6!3D+pk7eE7v;*|Vj78-{oFxd=H%pr zI(-Di$b9+og(p`ro{%?~QpVH3FgS=bn3fa{vZ(g1xQLcK?7|T1dr9KLvv?eb3$|Lv zC!tr(h3O(E>-1jXn 08_%51ht|0Dx^?&y$1ZD)Gm^7q~|iDXJK z2ogh!Z^GG}BmgBJC>;84UN=|FP}|nEkj87p`2 o@(@dXD-0wNEsIc&Oq`BbKEQ7 #TA4l_>X&5^2d)t zYe -Ks*hHbw8xnq?s=><|NM+fI<;TD>^(cbgx`X12hspwM-8@3^K2cWJ4}Rd zBH^O;gG Edzw-pz+C_42G*}UAEEG`5I*S p}3`3EvG1aGDG`~I1!& At#4Gn?( z_(1O3K tI@-J{;{A)Kz$l@H&(9Tq6SE*g?1#I(1aHmvv@an{fsWmM4+Zhzj)QdeN5>J(qg0P zGNk-`5x!nyCfPnsbAKRm-$s>%gKYbUhC^ZG^#y`$e)|9_;`y!Ui|3oap^#&wUOIE1 zc~VNB%~JJ`t2#}&snJIO%iX~zH0e9@feOj;Dp#E`TH-HiZCb0xN^{r7hR2ICnqlRI zU2^Wev3B>zNXkM)M8t-Fu9%>`;U-pxuK{$Pun;4;0(hcje5@&`Y2)kmYZ9j>2`XDN zfd{{`wGSQP#O;DXWpx~r-irbEv*q`%_SK&k(`flfac&FCoJp;+*lMv-2r|~}48VoE zLB)E6i?|DnK+dUXtW-4D;JJA&;L9uOky_WYfSssU?EJ0SIN fO)K+_tNB^&4 z31Ki2B5~fDY2)ps(H+>`Ztvv&ogly#0>M0A_qg|JsORVVW9Ko_P-MEWqx8!2`* z`SEyI<0~>)NkQ8&+g TfT&FCi3j=g|@; zqH8XfIqImsoDN?>$jDe}sendw+N4Ocd1_TP)p7^RK$oNcut<8vmGS%T!t)}Ct$U7r zV*Bx0;^2pm@&~y{+R%o73WesY6cbuDVGLF>+!ItA5l&sj*Dp9`q`P;I`!c*u7Q3Kl z+K*Qm`HT~tZd*JEC0H;rRqKp-!UQ6mB*W>}=iC;F+>g%q@%hEK?P3CjXv=S)JFK^7 zxXHZ(bpwYkW4#vJBxe^F896x<2hV?rbN^m0mY@u>47|45MGdgq6}=2pmgh=kS}Om< z 3mU@!|eOs+?FQ 3h| z=eRgsOcL4V_v&snnZ*e>Um;5%Y54k)e9{i@`nyF<6KDVS?qFfj(`$)4Yf%okFip(2 zB>J7`%~qGfjnmMUl~4Azade!844(AZRk{#O%A^~9L?x++9T!v8XMi#ap)8?6Q?Q6M zm~?~)BUmJCK4Q*9b9RU5ra=VYbN)cA#ri1x5d@~aw{4aBM?#Z-0^G=jBO)GehRkpR ziG}11UE?&CGI*d2CM^#^Bbr1pyOUcj^_~6wxcN*!hx<+L(m?bCmIShZdz_~0b(H=- zxYxg6luXM1La!2Cl|eq2KW(gr#&XSQ;IwB%=Ey|Y3+GYbx#YYG@#8St0XucX^kl9y zmRK+gCn(^z$V=nRTXAU<9X2NVNi}_4aZzpQcsJWT2JI6_nAh)hqlB4Y`ozrfWe`WF z$6ruGLqnX4
*#^ld-l~3U2xe1vw8xpMtk!a2KpkG${*QW(Cw;d?jbNZyr6>Rv z0%N}?KKN6D2BF#zV<43kCNwb;O%Zy-w bGV1sJ)a5NjgNNI!@&jTBH^~ Ip7T=SA*w=?E}e_#Y8G$tR&{qr-sOTg=9_|(aO+j`#JwO8k{m{$O?Z` zXnKssVSj%Q){&d |5PA r5HXB!-E}=vQ-=_(GNSbVPs;D%j&5@l~kMOu* zuKn3*aAzCHmv yiSI*=+T* }+1T+JeD&daDNaT#7B68y=lVBnG7KbgSzLD>OvUdvX`3WRzsB@@E=IWi#0)Pfg zOja75pWbBxw_eLy`{>i*pc4xJCaXtQQSpNmpumPotYw?!(A~}V*B?bCts~Mqz|4g3 zp)!b?Ii#ectI-s~O*FocAbx*0)o)VB|JN3mz^;2KCN6F=Bd>7IhkK`fH}gk=ofH{4 zt~`<>Hx` bCKO^#2t4tHja_E _SWLyyzd%d|f~&wt^v^E! zm&eX}z6Tk`N$UuiT#5;VWPbf_6KrK^i6rgkMpc1lqSJE7S2>lYs_WV@{?e|+Fnn~k z`}j=D9Pb}5#0XzgSUAhPfjO&o#MFNUD&oe!;mHjZBg={BTGPwEY1@Y Q3#_+!+*aXD1b2QK4`;B8u#OFn}>{Gdw7^J<3*W6GSRYQ zTad{D^-e{)0na-&^KvTDMZ_aPY!0G`bUGS$)bWt?rR4aLdv?7{l*D))>lejMtP+i` zVVA%$;_*MuWa-&Bsi!6BQ-QbZnO`~GkDESHC4@}PAEnfT=E@XVK}d9K7g$A11tXXr z7sxi!bK`2iU#Ps;UOG|I?w*1fTt}474MDDDbg>d)k&;HDKPfMOC*spOWE9UH3kmyI zYIdxWPzfh+{*!Rp7<=eqO!qK2AUg Ts=L^vJ1rtMJ zq 4OBqSo(gNvx*6VPWo5+_kuZKTy(HP Q ziUOsUo7Fv{*hXB-JJ_F1)IURI?%?G!%7FGZHfoPCr$BFGEhXB`Hjd2#rB96FhI{$dE^SCkw5q3Az@&?{F= z*=@LMva68M^crUJ`}x4DZOL%PsrO)e@~1mwoFaBUqT_9d<}a7b*@``{=gnam)-$KA zm!6QhY2F(Gj5#w*j!dM?YI9d1;l9A?*OYI`mZym`UkwY2CkGP_scxU^F8Z&xm@&0k zqu`enj(VAwF-$Nl-DG|nJb?PJ2dRGS4aLpP+9_3B5!FmG=-=R>biZN;T1)tGHl(tO zX;pVb-<95am7P0)>#2HR; (nL;3Q`Fq=|SD6&3rQIq ?%0E5km_|I_P?BWZ2F|DyZiW9iMHU)5`CbX^w{LVg|FPfK8R#MlymkUmD zrk}VX)EsskPZ?KsFSJceu6YC(GM2ZMSSTj)<=@(P{BL#fP(Qa`eRqO DgV1|9QS5eXc9AC3jW09I(&;COv zCEekIe%^A(xW0A#oq9Odylhy-^omoDeGO?5G*cl3;Njqoe~(kd(8s7+3!(gXBaQ(e zxlQAACIOp=L6%sT)1s Hj&Gd=r|=){Rh(_Go{0Y1}MSq@&2#*J7PNU z$cs4T4Bsvrr_2)uPAsp0VzQJR#(L`QkT}@b$ E9b|2Jj(Agg;Kp zJQBeL>b{Sir!R&3WE}6updhAkDKVp+C7yX4ObJ7IEb(JIYDv8BzQnLX&|;f2`3l~b z-Bsc7g_lMk5y;H?>D>tpw_Dx z6{F9cqi^9QTR2;|R8pw{<=-QHH~jn_4`ydJd;!j7)8?Oj;(}Sa;PI moPL`-DMjQdyq2Y$QD-Jp;pE=Xr&N1QI1{Sp-lvmkMqzbdtP~ zI+H`E6=ucG7_j|>I-QrW-!Ti2YN3&@Ye9%qecJ zuBz_tqbaA5xdhYkbjG=lP6zW@9>?ZBZjmfJ*d-oPV6>d#Fxtr*sU-IwX>xVp~zl zGeahSgt%0K8*AaqsqAUhw?&A^85gu7v5@)c;C7dCdgco?no2n7cIV56b*fZZv~CRX z 3?-MPuB@S`PIbA{i0zvH~;3mJ}eXmpp~cPdG? ze_m!oWa7aN4+wQw5)$&D=IcQ;TbS*sEPc0sOk2LAqo?0}6@Je0B@}*gsS97wgNAng z&2HXLx#@d1Sw0M+r9E_cxQ{YirbC}8P?{2S_euCx@k;X93&u#Wg=jRzX#Ugl80xJr z{2KXaCV3*HkeLEMvJhV>0Nk|N@T-kQJSU-B{?%)W47#`DBNFH7+&!4mt##LbO0~I@ z6W3Zoo74n~tFN~ hoofE z#^pww`EDxS%6Y?|CL0{Icagt;WH1*fT^~V78@D89H*om)GxL!!z_y|JjE~JX= 3*C8qX-r%_d z8LfEu*rCWu@?DOdG)@U?b`!&?0p 9AvxwK$jrnw40s0#DZm+@hZ6oF z_DDE@AFc4iM|I7bUTd~FIX<32k`~|Flk~uhF6ksg{`)@@maB1J5w3!Emm^@aZf7Q% zM1Yc(5v@X_^qo_?KB1tuIyn4|OCX4bhbSp6jT;d bCQH@%ER$Vv5McDV|itV zCtsaR`il4vCx#CV$8TcH4HTA_!{N5cb$7x;RHBP&v7e$2x{7cS7iiu6Pe?1&;(C=# zLLY*Mh-D=P9tLL?V_(Esi4x;rj~9JK{wLtJr=^B2mxMN$EEmR_hgkItG@OL}9We)v zpj|0!u`mLG5+QwGS-%a<7E4h)u0k sr>h_;uQ29!m`E8 zFl@Qf98fQzq<;06Qn4Qsz+lF^L`Z1}W>uER@?~%adWu%~%T%IoXl3pde1?PHwkk c(FYG8-(g-{l6pk%UAOt pYJkF6MN znI^H{8@9%rrcX&h`l`PG{PP8%KY_jhCvT5T8UH4yVJPp^wIXno#G(FDkw=r0^^ic4 z0Wp9lmTrM?d|kxw@G-}O$*Hlp&Ny)Csq0}*sE>k@hT?k|7#hsl4k;;vR3i!0*Pi;Z z_}Sl`+sL_=G}yoPKvQU;zs@~+>Ytvqg_^GE;@`ablKd13+_Z!y<-}FL`XFNUliNK) zi&KM&=X&cVrIZ)B<|>>I!h)nD-MP9RL*2!Ob}dAM2!UwL3}nLkYb!TBfEEB%fR{Kl zoD6|nUN<_5e^$A;Ok{T(GB6yQFQE@)^A;z7=*h2mD&5iSw*( `k(x|iGN+Is2UkWjoS8Io$>My zCq8;zE9@R^MUm ouV7Ti!D?qYOs?u| z7O&H(LgMk^sQv1n*2J|9Z*2vC92kUaLC5}(c $QZ8f(%*=OE7}EX3s=Q@*GG B&67^SyR;N{h+VMwc=mOQv*W%&;+ #fu`v0tfdkJQFTu#7NI_~C8H5VGCqJR!ojqw;g|fo!2{;lco;6)~n2^6TzkmsM z#h3@XDT!#%5Eed&wJ5NK%9eqG$nsPB_d~yDs|;v1L3(cAJ2P1a!uu?fJ9~otk7 pBvEH; zdjFn;hZe3Z-7E<04&Oy8&cdfzwUSXai;6460pSHHGw2N602U-qk&Vs*3r54Js)3-b zqX9yvvg+Z3{v)R<7bv uz# zaQcYq_;GyC@r4zyX;RV5?=BHkI(B6-qx*o9Z+EJp(aeRQq^WA)92=$MG%-~>ki`Zg zYH|AVvj9hH;LGi}q*F_ETI{)wzPlH8@q7+0pU^+ix6nESlK@@L6_a*#+R57Ue-+1H zh>B>7=Fi}v-*R~Ua@y~(Q_?tzGu9RS`~;^^V7mi-rv?WH!zl_q!WRf*Vu?vRqC4GN zeDetHvt-;a)qlyiBV~+#_vs8dG=J8o6#)6Gzv4%C2LsmzW Qs!^V*;>8bSFBq&h#9%S>g_QBhLQ&s9U) zW028F&k%@MfnY+&tZl3vdDfhK1R^QaYdWM*Nu|) C0%yfF&tH$^1gX^*Sz7V z_3#hOk}$}b>rw^!4I7BRd?~UH{+^}$d)^u8QK!-G1c#8noXMfG>g4tlc$$%y(fLFZ zkN4fymwYKxTbJPM*wSGjFEMn`nhF=r@&0{JdSEeu0E!41P8D`(f;E!U%+y?-%oLGy zWtdC`BbiiGy5E>>_whvr|4S(41W|M7#B=Dmi%3RfD4^)e1RjMdHcmF!qp7|eJ9++N z!oWzOW90kpe!0L@qX1|fk6J(YOM(E2hE$gj6GQbm0%3eTdOSjHq`G$p;Go(X+plPP z;Ruqxdp_J^rr`Ie)P0V)-T3MU@)7TO>GJb0f0=DG{iU(y@sEo35VPI3{uO^FFxB3y zR1Boi=cBi|PWcdWu=gwAL5vZg<~&4kdQX{vFRl+Hk4QLtWXU5t<4zZo$A^B`7AKA! zb@vTN1B-gr9xxGPLR~SSselargv3y|64w!E;t=;mUsGy{yF?=t5rXT!<_svs%FX3> za3DkPO!+JE$h@ejd3Kic9j^d^5Z7%7NtZ-K7k@)D(y()Z3&&1R;-Y+fYY^o%d|L;1 z@KIyX;q0)vu(#g-)HQPsdOipKw#`-u+*jL5?9uq;x%g%FK394xYPfzZ`F$r&DVr)< zFg}0G#PZ9YRE#Lj#r3h(4v@`%*}#kU4*<&$qye8!ixT9M!}g0ij$al*V0D7ZRgV@_ zbWXYaiMN(_dj~;~n1{Hs@ZMe3Ys>@JyR=``VC?t>Ub4S@Y}~_P{Ew62;o N9}`CeO=pyiNF0AC@zr~_mdUhA;J*=%cZ(q&rx4adMCn=zy^OzJlnC`!pJ zm7|BJA1+yx?=tu!)g8r|%3?saW{o2}&JGuElY=gx09c%3g0e-C$rNBN{Z)}G)%!n^ z15gEDF R-|4e(8r> zE!CmT#m#tQcMV6G&X}Mn{veAqW$!CtB}E{OgcAc)dnbyZ-5a;;@cYDuvxmW%IK0>| zJ})CkCXByH1-xt|O`5Wcd{aijf;1;Z I_T^nN>fw7t0;LSkTNJ z#x@zY ObYUlXlFD^#_=Q*7H=rUXt2L(j4 z_C|xt`_ OH8O(F^&4Cinm@9|r$Aoa{w0`B*!V|0uW!9J;z= zwK_cjOk|~V)4o@$$e6|@>mm0UqvbCv$Xe6i+&Dp HR0%q?dPz91vvw3}X5S!Be5Mr|8Ju5+Ufb#0hBm zfyOMPc(Kw7W{%r3u~Vwa6U3D<33>_OyR789dyr39;50saDo;i@_a~v*+NZUy>tlb& zL2o85Z!} UR8dc~FUaoiiirj$J=j~;cO|p_T%{~CN3*S?Wb_eIEHnB0pR^_w z+63oLr@@$^0^S=EBI+d_0AhqV=UVk8RD1@$hE)ySoz^;waMh+l7h6ko72+#D!k-e= z OU+}cwjU|N#47t-ms@ow zZb=740*y%vP;da!qqyv}er3hE_fD7#ZbEe#59#J!NXlXYGNYq{_bJIKGBOI{kpHGo z{xQ)61=^}(XCo(! ?7e1iEw fn75LQ zmPwQdZ?17&mezrk3$7 bBR+9HtL<5Zc`bV_#S#EQy4F0njH%7Am&>IXfAX%!-47}CyD}>Bo? 1<@T+~^HG@!49CB2 zG%z} f6>@h6Hzk;FJ?4y(3BDvZu`z# z9qNy=W>LIMhq5M{rC*mJlYUjr-TtkYKpQ{bwNKaI;lZTDOlehTwuT1xKlV6N51MOw zSzrkOT#+=eQvWJAXe!c*6jOFIPm=T igOO~#^Sg@sCCKWbpU+$QPUl1J^O?{>!k;| vmH$NR(4i|tnbpYva&4Mla)cVDwCZNrp)CI@Y{~z z-fsaW4q+XB;xVXAtMW23GIjVfO3d1`qrTV^xdVm8!{CK2b#d^z9VMqp_1YiRB7&6F z{; 4Iu9olw|6&H^|ZD(e0B8} z1TQtJlogks3&>$J{sqR^^I-zyoY`VB^j4=~3|B$0wR*aWr%w$#umA{ut!dOS$Zce! z9ccIx(nxCjskA1$)~F|))+SRgChYkFpZ-&07u`0zQd~Le#%GBSEpm#%9Or?2QM6mw zTmXs|mK$kNa1+?JXZOl0`05@K=@e>5E&$Engn$7mV718XnX9KD(**W&pG)IxFXoQ% zKq@r RpBA3B*(e(Cu5uU&iG;& iz?d23+p<{Os7x#t+1 v%2V`Kd6}W8ehE+_`}ApArjURN`1hlO=R+g zl&rewH0$>Rd7=xw9jB= g{R`(tvlRiQA3?0x>kYWX#8p=Fd^t_Ph$9R&@*SC+ZxtDW}vdQsx!Sp z90+Xrwyf@NLRSUO%o)1E7=t|Iapl5>p6>!E+$wkp!PX)!%XTF`?9ltvE6Lxm8?FSO zqcJW-{!aTpH0AhzI%ep{HwrnQE`8j8Ezag-On4M#PzJqPZ+<^z1~WHsdYR${FV_E~ z+hb%Zd$f@%X0=Jl|MzXG4Cc()fgLz)Axesc0A#_RC5Xks%Ku_~5Pk5}wMl%qp3yBf zm_%W!_{koA U!{#x^SVXuqw0a2~ZfioT%!T~O^L z&7iL@x|WL(vzGf{B+UH%sp7tg5LR$s!3!VS^^b pH2 z%S^n&7o6ocna&e5SOS$9>1fJ>YsLO#iQ?Wm|Af%Xe?PadvavsHUggAkp9|j0tl?TR z2!H}D;_!Ix)4nHhTR~cx4BhM`J;IcJ_9HS&k7qCpeI6pvf3Ss2c-^rmeX?Wz>K0!* z=KEuZX^CV2wL@TZuwCWi>6k3>bm<#pdc!Fn4wNW_W*tIEJ1Sqf;RaMrX-RiJUL2+C z+2bw9RB)8`OF}Eddc2jrIo}cV<|(@1>u%B{kC o cC`woa{;TrAwi32U|dqTt%BF87IMM!f9sFZ z;SR?Gy-s(#j0!#2Vk0Ai(OWaQn>PK-8chLob{6{fazrz#F0SYB;wvX!-ugSv3C--a z>SzV&eqd9@dRy+ThrNT<>9Vi)e85f^4rSouXY)@h$q{)JF&}i>+-RO3WV`pm#Y*0Y zdS_gb)8R|1jxFwA>jy)4|Cy~VQ1;Zl0d7&noXLNViqhk|{rRk$L=z6fG4vG0uZD*( zaOV5LUWv#(U8~u#E=B$lG=i|;!`+db2;(@{oMBNyZ WXrWSrGoZWmq-}rEzgOcql~WhO;T$`ktFHZL^N-4#}{$<#Xa{zoS`;(B%ud0 zdkU4qC^XJNm9e&hG#aJsjyCqIKPS7;7xwR=*sdq;9aQ2bq!Q2YtU7Aik?G!;uK3`1 zKyn-duga!YsN~omIu)W<5!aaL@Z7tTm;|}fj)h^T3J^1l_i+xQ?oV%xiqIJybg~x$ z1`3B1 -{!zVNmx$I8G)q{rlgQny< +zYr7|h`s4{*mjj12^*#a9Z>ix!rA5nQ z|EUR@F?1>Nym2uxHv&6GD65jMaKUZN0%b7jQExa66B(pWX6A^G=HYnWR&eWdIm0X~ z35p%=w*@JbcST0`bG77U4X<}9UZ=(7o6R-qd4s*N!{$VupwI7LDMM7H)0oQb8l-Ia zk=3#9=s!)t%N&<2@h!IjS)jB{mav1Ex`NV%pkzVj0`65FJ>T>wUQ7sS+0(U@r3K3D z;zotuGt>WW8s{B8_gY%$#EN?@5&Or2u958_LiNP>`m53Wm6ZfVn7IHx33oWwSERp= z-@1M=bB_o9;7*aW7XJUg#q|Hw$Ve64AW6;4q@|*vnV+2v8r~E2BErNh{&29h{cFpG ziHRxh v!$e`M^HoyY#n#eXl`zv zU0IQKbK~UY<#ly+RW>lF!TayWs4yJiIXQ$CZEcx9*)5VYX_YeGGNhvUX!a+?{N8`G z=Ua^<|MT}a`g8jFa6v&sBNY=4mMD48)Y0wl?@Mb|rTzUYflojHvEt8cyRJXzmOuq$ zv6ydpq+F`1ZfohR=c|S*W&~8fS4h)hfn)MZOb0RMF-&{pEKo2D`Ic74bt%~iqDkJX zM7oE^@7tc=`V+TT9#B<_^o-i|frp3Yn@?#dfyzLB%F#2UuCAX1pDd_=o-(Xu^wrQO zR2H75n;yflmw++$=JWMd2a&D>%%rdn9>zDzJ1gq=$&*KRi*GTDc6sgeVSggsLTZo< z6kq)8 }o=H$ONV{Db@^{nIJ& zExBDk)WK)oMv-*O3_oTs_}rdpy58!1?$`JC$L=7oaSW7=9zorEozs#UA5i$p?(SUt z{w5-ok4<(iU%5Yi5c})Vag46F#kbW@rPzd1!0*Ze;T5cp7T2@eFMmpeJ~DuNb>wDm z7 #TpA<`gVBk zei^d9dB;puGl7D?C!OQHnWuX}#Kn&2@ZyMPWq0o-mB0$28)0TJR; znR1A~E@>R70Cm6$(l7U5_w&ZK>X9=)nlmvyT4vkyLcV~nbFnRAIlk4BmtxJFc$QnR zV`9!30rm96A-C32x_n@`3%!zOA8rgUwUmwK^n^waypDi(upeg-zdqlU^ADIGJV?iy z;`n84W~T`!!Ay5&B`Jt`UKto4OxA9XI-HP{=0rmXD|+7aQ+=7^yd5>lkMfE` ReyW)t7!0;2@t?7dhg$ZYBg!l9D!J`VdlW6u!`aE+lfcuJO#p^9HN z0&d<4aL&!XZzDW8!Ju*Fv97M*)D3LH l1c=-`K_^_9} zobukZDB}&ToVPzaj&u)y8zPSknY0awin}m&Bb${_#`l8`V7(l!hRVl3nYk~9J}*Tv zkol5bm!0YdrB2RO)b+ihAI%BP7B}RqJYNMSKS=cm45?excg4E0Gi(G)s)?lr)5^*p z!&vOKrHe#|KZe+7D+t}6Nj#~gD^>oo1Q74#F3-FfmF6^cg_}ts)N0AKJ6{p%D-n@z zwZ(mVoFW^gMSFd}EuRE8pQMieZ(3{3(Mub0CA{FZ5o-P2DozE@p9ECue6!hqgwZif z%1)jnTAM9-HFio>>vV@MpL>rk;v4Srbsq)Gw^z%7nzi~eR#tSpMpePoXb6mOS2~`c zOLJ++243vs{ey<9(VdT_h_P9-5^^kEIKnz|lkY+_N_nOSV`(9b9%<<>l~dfq=ec!t z-nqh`jmYl9Ke!@jkOk65u!r%d%#8-d*q4 (c8uji3iN_Sg2=4}%+@)bb&D!hMwA^t63IfG2bezHLnJP`2ilf75}!P|z~pe8ddON6 zkY_`fc&MRxcs+=H_TEe!`wZ{6P$%4!8r<>I|9o8swB5FV7_zbletA7sB+Y=oowhAm z2fyP0+D}StwZNnR@aOv_jU&?B-rseybiITSA8ge@T&y+AY1bP=fZq|Nv72?54A`NZ zdZ5+}n2o*83j+^UKpBR0uJJGXe7nF6qGEW$I^aEyBHIfh4aDk*`^6gP{ q<#t*lo|Zr3kdQ>o)H+fN!Wf4Xbf*}VL+ z@nzhWqhXrgGPI?A%3bEZ58ATTurNbtccPp &P{z*%IT`PB}B?HqS z8vY8(Ij^j{Jsf-lX2RF4a5ki6o@+Z=iY8m^il~z(qb9X2{Q+dHO P|?`^PhjvkNTW>gG=%V7=~0WW{eG6%p~s5 zMkK94VAtRFdGoqRD>Zrtro!++80NF_tq#|}j^vzwtonvLN#7jwrl%~7C}}*9mWS=O zKZdW4dS`+D{`+K?0dF6MZbf`;Y2UPD0iEs_su_!44Zg2$ru=2hjo(tMr2aJ=O9x>L z7T8+vvlHH_JPqbzmh^_Pbw8Fdi#8Mc-y=klY5%XzzA~z -r?J?kWAKYKrWpMC7W zf5icpVDpG1@gK$$#+uVGy`XL(nP#&g0s;4XKNbIFn`hH|Qennl4&@w-&D9*iQGHH5 zzPHxaPtD=V17}1F6Yfz9H5IggPsrl3Ryh+9_TIs8-R|YGJ08)CI(e92nG_~(Pj2xe zdGf^>tf_1!Z~Bo1Co8vC8&d9HboqE?ADf$1cleFP_NdwS6L}Oi%lz8Qv32+zPZAVu zZX_TA6uoju#=FvzAM%tngy_tu>0#{S!rwl*I|~32Dz1hjxVIHUBmUQ10RC8Vh{-|5 z*BMKxfqQ@gN_XP4dBX2@-n0wRCc3rjFVV1la64fNU_@v>?ds|F;ck|MnI5Of0u MYQXHz~Qwx^TXW*9+Mx<3zaiIz<57?t4+G6=rG`ZEi!`8^;q)!=jZ{i?s0dk zw~V-XbVMO)_zrOYcBYl)<(H=b@SpvuLb-u~0TE#4Qav`_QiSCWg2YYX=OX6N%^9x- zl+R4)MzZmQxAN9=l-&BYT22i=_I9s|cHetXuI!D;6>nw+C+UH~eaAH5c1+90D;-~N zr#V@2o;dy3A-cazSzDT~=Q9<4u8r+QI3Gk2{wcWVj{J$Y4&~3>+M%%DR~LTc8HXq~ zt}BEY$8{Ksz2MtAS3_1wF)Wl_rQ>GM^Fi=^W%g@T%A?Kp;>xrfGARBVR5Lj+T9NO3 zMb8b_CAlF1vCVnj^d+Ub+Xo8}#TtJE7!~PTZ&;Hqye2AK p{zyLmT6M}ug7@BEa#} U?un)R2$*Zj zWWz(MQA(6LvJ=0iJVbS~nOpsBG04~w5)=B$;ZkXDXS16G$7xu9`Jhh|{y-;yzZARa zz{_#k)UZP5?eeA^qM`qoP2R%zh3W3;`Wmn40C}~9#p >WUxTYz0Q+ulMIKUEjKdDC8WjMK+7mExfJx`w&bb z8RK*y<>}g{#9wf@_StJJe# mnZBqZK6-+MZ(Tu?st3rf zEl$_v`2DUA7$6;ALg9N4V$e$S2h+MppT~{~2NeHUqP1tIm!siTwCYIXUOo0YM_0T- zHhv3FPnMtWGh?5j47P@%_ZQmAa`H+|z-^3%`1|hCRLYnaiz0p(M;?TCY&Bd*^e*PQ zg?C)4-5cHd xK20s$6iVVi+EC!pdeMwiQ~r-379wW! z&$#jTJdi;jQk_frR1ta~BZC$_e%!M;9sX%wopCqk=kIrgNQXZ`Z8gd9QjArIYsd_a z(NlJ-xH!Z>^Iu(-wNw`Nnt=jFSf%4v9Sr+jr#FuBv|MrYW(tMjK(#>|5C_rAP+5a{ zx`VBE^u7lMc6defXq3nC7_eiX?TQ9SdBELyHy7H6`%%a3+x0{iyJd}Z?0qDe#lXp1 zJ*;T9-DXUxB|A#i>I7_alhlrQH`-63>0x*|1q%C81(jePZ7ebD8lYw9GroZehLOr$ z<%g_+E0X3%u9E1$R4et-H&K7nZMswrm3l*B Le 3kJ2tm9_Z-d^rRy z$-fug>|t*JmqZ`$uf-)AS}pUG9#wDPCnepD#W=38y63rmt-wknC 5L6n*5Lo2L+R|`~V5`nCX5Q+< zQ9XNe7ZfCp#%kAcHj?SlUq12*H>DBb^G7)n~ znA>13o$IQ&GDif51eWe`Y1l @Naf(F2z&>>CLv1%n%^dY-R#Dn;u#6)m8iyYVZ^?Ngzkq@ zfuhWSM^bY9%fe`-yR|oy6}OOhoeJwZbnaW!3Y Vj37qhp}aC1?yC=IgVtLx#G>FJ>LUpT$mBqc81pxE{(o0e?J z?)CiqeB;@#3<8bP7+dw9Sxo`440q(CT5$Kcs@gd(LOjXpJiA;j?Xs;!>JU#ojyWu- z`WXTQZCe!bdQNeZvGKpORTj og6hrjy5XnAUcmYDtSIKKLtH2)*`de{VZK zBcIF>&6`06TG6#VKuI-tjC|#EE))0!t_|A5Nfhhw1QiTx4W7|N^TdUSb!Zg~Cl$uC zr10~u_b#oHh!y2*F>q2WTvl@8O=7wmQXDlmMbzS1NeDUcRan?=uPP3=*6@&;_!66_ z+*!`4_R=fi;d@-a`0Q*~6lg2^WFk3Xd7$C@M_e&wU6p^?GFW*Vf{qkXSz`>dB^yE{ zS)ehM)_6jc*(EGREydp1%fG#?ZgG|e>ye+?)oK?#a|T#(qW-}D$n(Xx-1YuPJ(Yo6 ziZ@!GIy5!HVW9Q+kof$p^mv6})(`k3`f`w_7=UK3gt7zuDn9S!ddPz&h> bpHq{*>!>j**$lGQ45j0e~D)j^7sRddF-oMm?l%#(f)0q z*;|a1n_>A5sla`gyhUNt- Q;kr$v;dO=`C*YxE|LK!Fw;t zn3KOx7h!qHXw@e}-2c=U5T}%nJ3atKpl?;{)d3U8^yoI`eu_>-*b)R%H6NbpvAB(C z3jNDp%rz|bcZJFEy4>2~ql4*+78`tE{+veXR~SwYgP7At!q5QUDiMw$id!P#;|EGZ zU?m;lrVmvQPFC0$|JRy@7#~94>sM}e(#Y%Cf^JpyE!AIkfcsUpb&l{@ZSRXox@Bv} zjd{*zphLvxXNEnPHDN;VXD66c0-EU;lD3EgnZpf5Hm1#*?w+&&*PF|3d41*5(6K(L z GnD7gXsLp8@!JZf>a@by}%FNV0=2#Vno3pZd}!Cv}~j{6kd zw=+vFSP>3CO^e_!t`!p19LJc}9M-ySC3NDVZWjZETHWWm%gRI8nhLKv{pBz^&Md}r z=}dh~Llu!%j0t|24<%N0`*sRnc@IBtc-3^_rh#9 TGhaGpk^v8>R2|<3Rf9#<6`g4T24=`#?-sRJ_u$EPnCrq z&SbFOX8_5|4H@~{d%3}|QSaU*zNBIgv1~N1WUwtbS=+-O-!lk&etSDkc+edSiks`s zmrv(O2X`~GN-y?6T}*VQF=R0nLAWvZ&p}o@-|6+00_Y^F`WJe?HO5i6`TmZszvhEF z2^hj}Ipi@KKDDx^CY5=vYNw72`amOO_5&Oc=DM-2qMk@Im>t>o>k^Zn^5DOPZua)` z^CG2lfg8s42UKnTIwY7ji1YGIZlrRVmQVm>pW`Qkhp?ZEPlQ)$fflx5)U27ST{Qvn zm54F5u?Jl~j}33%M0}aQ*zxkK*Ho={Z*+}z-58*iv!j6BhUyBu>1!W`P@9c7Keba7 z_%7#M835i--pD1X>wv!8A^O(^gx8R%^tUz%WF_C(SKV7J;};uNvU9UQ&+(*{{uFAB zGO3t7L{hcJ!$gC`7l=kx=g78C|40r$z5ihu{#}^~|E7KTj|&N7t_cu7G;2o$hRoL3 zI#RJIW(;^uu_2B3&@CDp9;D Y`s-%jel6IyLm@i_gsS~G-$NS0S51gRzqn@w-!!RSHeL*BnJ6dSN z^P;L->+Au`IXhb-1r PWd5i-__$Bt@pbz?Pcd0?uTwsOEqQ3#YN{9@;BC2`9R9PI#4?eECtJR7avv#- zEyp=)@+dl0bLJp`4C)+fXay+j2W)00>!QXu8Cv>!k?$!VA=W~7UT$QWW@i&?EhfWb z)Fx7>+Rr&mkN*6=6nlYl6yRpZU?GwZt^TUJ>}By{Kel^5#wSh(@jwq$!m-MprJbs8 zTRn!to0^o?7(}G0c7A6tWR#jL9T3HbrqC@E9)q)J@q@&F@QZ%ObLuj1Nd*UeQ})7A zlGFI;U*W>vLYTTnA-m>0^)pxpKbzY$`cYa0-}kD?R0N|`*68D9K9rz)e$wRjh?FTD z5|7ETo;T!yz_+7*?sQe1wBNr}lGuw6$wlW4Jnv&R3w?|-0|TWw1lrSn{a~zqQSwpy zb<~RfXlZPGG@MP7*&F~B)GFXXTk-i@NN2^U(1uxVKA~`fRL`TYmb7KkOCRTtGm Y!(ZMS~COE`F;nw=={qp50~b`uqpufok{a*sX!F zU++0DCI5l@Ff7qUjUN^fN-JMcIIAwD9Td zYdVCk%JG)k^?1Y_VCIxRpyLO{JBg3FvX5Cv|Lhq6mhpra2jFwaH)p4+y$QF*bGOn5 zR<$)U%tAeST@T^2RLzr_n9Y*)l}sT#e+swu;jpx=qmgo~k88Qr{R};Vr3vsOADnaK zZ@1iANaGz|G++BIeh*3 >x`so{_YJkdr#C;Sw$n2sS`0{dDw^|u0zm^9Ms>yQ$b{+w(F8lC@7nmcn+xohJd@t+0LT~f$oxhat z4qy)zm#K*1TI8z^U4LXsPdPO;Guv j=&zj~O! z1U)nu`n6!!K6n*~>ee@MN<1zE?f$&4W4karsx+vy*-CS*5%#^XoGA6uJSg$~t*s;J zo)i<#)vG@`AlCcZviQb71Vr?9j96XrUh6WXB^CDfA4{k6=*bBo>vwI%$0_{l$@>~D z@-IJzs7v%3Oq96fk|?w&sgXTF2Rg_;k0EtaUUh`N HN)L|CLxJH;X zgrCxhwdd;TR7X$xe4_@@y(Ij$8y3FcQp1n-ZByiXLf{ph(9`jn!TtGg2=12(_YX_M z5K2C=WT)}+K(j0xoT%VCREyanlhJa{j5d{ItcJ~bdRjKFhN4GaZ7kV6Gft=Ko{j5W zoc3K*MzQZ_zcJyP-!~31aBy~k9b(LZI5dUQ!_MpYK7-5lFWtv<*`(<&8%Pb;xorvt z@1`@g2^9_A716)5o0)b!d?>ljZGW U^iUTl&E$X5^W^0~a|A zl 7AY68{r{*=4^I#H%0D{@pn~%4CHPEiHJ3gi$|_+Z)LmhW>{~0UI-+PL`AT@g1WN! zd$nvN!Ah9wuD#EN=WzdL%0tCl0LE*LSX46m*j7nr^S~R?BJc6&i-x5Zv$9z4X|rs0 zd>uH`(D+Y2)B?3a>jrV9d>I)N>Y@acioiySRR5HZt72{Q`exHF5)RhT(;F#Wvfmh4 zBdoJ+d~6c@F>J3anAy07qbgz1b0V=EwcA!ND9NDp7w`?L{EW(i6x=97jlwELKXUE7 zASzy*fNtTLs1yj*O1i5(=u^6#Fgn=uXM!rXrQkK0Oz(t%gasDwoBO+tlr3}+9aH=B z^}}=$lg}z=$Zb*&^}R-#s_qcn@sgjVd;+mO6Q2mO!M!c?&9|taid(^qqN&YI;YTe0 zyJk-X{v%Lc;WU~z;_b>)Dl;nFCmBk2h$-$0bf9D7H$J}ze^atB$aqtbH>7w5C&>`Y zi|0m BUpN~SZ2C=PL7rDBcH{9*vDx<2b84+cJ0DAPsZcuH4*w4fPO5K&f z*Dn3it$WUQ$R=a}WmGK =)Bnq!bhTHY z-&O;`pspL0DG@#S?CpCY{IEP^B_}~lF@m1a9`vd{(}Rm>ub<9#e;X3=B>!bU4q7Sp zFaO(Y3)^lF`$56Xd7uJ?Li*4^q}zxf-2pRHdUTktiaA<=VsyFV7cKRq`%Wwk{s5nN zAxYNf(%mp{V(iN6wctiw1)j2uIR^7J^BtmamKMYc!vQrkto_0sbaI3MyW=B)RYhUd`d*QG=uBm;&EUq9uejz (U3LzpNMc`AV)&!ms5Qd$>x3pb=d2s zuI1FU#RmH{u6;#W;s@8dmx3C2|1t pO@T?f8>B zSkw`$a=9nDpZv~nttwtUhxZ2DaJE29zb4W02(ozEk{X^&FeV5l(N8-ve6lE*!o>Z3 zS}WIk9AUqLGtS1ATd??jVG 77jR2+iBqixZSa!(wo>NqxH!EY|Iga+nJ(bRCloHnWW z>TI8!*4Esbg_paG>H7Wv;F}{H`eu+ J) zaT&1*ZPT!x1Tz@TwqXCrgD84&0RS4Sun;CJNwc>|O0BRmH$0y?w^nc;Mm2k&p3{)) zyT)+lP97NfzU(2qJD804O-3+v{Pr}XvwM*So|&x4thS*%z~C@3l|#4irmqmq Xn`&@_)5tWNq z%}lx 4l50VZ?G{1T3t;U;4D^xj&hmti8Rk&m%oaA>FipKU^bELj0YT z`A1$xqNUkZUj$*Q#ux#{ipuz5cUUMV$I;^bmkXq_`a};{Dfv%^^3u6XVf;6X`(rYX zt@wSmovsh;07#q2ly($7&|lr5OK4VRozz?vT4W=m)F*8^w;PuZU(l9gjA(%NI6ATB zln%(N7{8YZgZ8}23FVOBsP)rq=bsMI3-4Fa*9b1Fq+DN~NS^nglrueA9Dv$1xa9;J zyl!!=J{QqQg%zzTmY2;kb!>%uG8gtpsz*-p7?^8XZDK(}zvK5kFU1x}{#q5 8;=DOOc397{;r2L~Kr$i1H&rl!22K$St%?w77p1S$k9Z z$|$NLSw2S_=i&_P>pfzcRQV$vt-5Cn&47$hQJN?=gSaiRQf-EQ$ +Ke>R}78>3a&OtcKSM^+<@j+7Jsg+ZDAa>3Q;Fcb08Zu4BVK?94%x$AEh zaLKyv$882*-KWG)a|{)~a$A4Nx0vgQy$_!mgzpl<7n(Xq)~|d)_#>YGTD};*@L4z8 z$jhEyjJ)GciULzapMDh*rp&mA;7k2TUDu8o{jmgp;g*m{ME}|1|=6q~ePA zS(+$V+LZsmBoe>f>&@%O11vHIU3i}gfnL01M3{>65)?)+;gVxhrYSfle5BrdNB`xP zcCNL(WMp&8p5Avk2}(^p8CqJ8>Z28?8CB@k!Bht;% Q#Ub8%->^aU~VP!d<)~ z-|M{9Z_4V8F0A>R`C7DM_o{?()1^7ffLE!SM-y+Z&~{5}qhG5f3rn> z^2*bFG5;ShG*!G$JyxfuOSNG4QHmF|?HJaUxTI^GsgXpPuq^|>%(u0kH<;a7u W$FGvAhTE~djBnH%{nkHBD;*A7-A8t_Y;=LdA zYiYg|?xC`ZO*g*9w)CtKvx7!Qzo5a=;BZITbUlf1#_Djgof?1+>)0U*sd^|FlDkwQ z7G?K!i94n3JD=Y}Ea+zKYw)wIQ6!aH!^2fqJo0bh(I+Rrc`8y*xRE%T!|%J@o5gNV z0kOAcq|Hyh9v}aR_m+Ok`T%sz{_y*+uRy}1i;^Ivf9Y`w!>_hGj^c!@5Cg^orB>Nh zuLkQTDi<}ZR;k`I%o5VBib&B*U(o888quQ7Ee5fSO(#SkT(oMNp8%|cSKCbq93p|b z{O^o_Gs3iX5+<(M?e{$e7)3^ERL>Sae-l_}wQE1UzM0vuN`!bQu1Ka2?Q<_R$=Tq8 zH1&kJB}QHspR559q0*SGm7p4) S}p=NX@Pym?(;@4S;KB>T0yym8*pSu3J?o&F>kqssh%xIsX3>*Wi2G{n3 z^5h)Bp8nW^K+Cz!swC{}By8{qSM%AxTNt%K#tlTtD=b<#B~^+3dEvHm394#$d1IhH z)@zO`<&_5yu7fRbU*u~B0m;5O0_)E{<;`EsOS{+=@tV&ogwv(WoM#QX *P$>p@K4?7aDQbJ5@dYzll3E5yOEes-sM9kCrV z#A F9&B5fmj=;qv<;006sAbM{ ^d+PXN@^S%TWk~lYT=o66DarvGO5N|L@ zXQAVw*lXzmG5quPo0|$_AaeW93lVkQo58k9eDBuE21NXH|C;-+fY{sT=e(Utf;@J^ z(n!Z>(C4W*LJQOa-FRz0VG{VS($7defhqtFnBVgl9|=+}du^Tg-*!d*52L{Yis{Ne zxjjYg%5SfvAw4~&(4-`0iZCi@nt1JPSZMCur!XjuveKl|xTZFp=MuE0##Gwaxcb#u z60#EcN) awHYi5D3J7^&Z%bueRysWP2?_wQkKAM;fz6cG;}t)TTkLNwTOUU-KoF zThcZ$sk-}Bhvjtr*Ebc~^NcF0s=fY5$hD{yMMYUs(d3K1`ugM<{XW-76A3t?*48DJ zOR#yEE2!D+#CLT`*kLo!b=j0N{rYOg U$o&-cbK+__a!;D+ iRCfe`Lmzw$Zw*^Lx_=^+mL_qLZzuJKPTteC23YpPS@A9 z>&A{p!&A#OT`P)f-il^6*pwwgx0>Q7C=wvXrP9`3pfkKE=d5-Y0m0WsoYkK&NWiGT z?X|U2&+o-6FQgq)56)F<)+X;BreT@ILg_QU>r`5VMbsZS2h$JXB-Uo&bljQ7Ru)2v zP&!Pry0GvHH-lw^A|iRwl+_OOH%HWlFq|N&se6(zk!z`okk`VsGwrFb4;{z6?&Xf9 zaWn3BTON1*wHb|7Bq4Z?0D{|l=!}JqgL4D3rJ;UC7P854#YTN-px$#iVFDwaJ$5zV zBRnCRDk#_qdrS5GWOsWTDQLIWXY7?QH}_?0LkH!%)4MdBtJKo5 XiWWq7 zhSB_&kawm_Ve3);Gt=~bQQ~mlXfIE}*Y@+`gM&YKvDPLwG^Lh861D|=53Y2+WM(!$ za?KR-ec3^ZcPF_G{?bYOR*{ 4 zKwFSgj9~WV5|ukf()W{3x7Hnaxj8vK>7Rgcw4>~?B6{dmmdw+U*#FPWiT|6a7D6bs z=8Aw?o;K_#Qlfm-%ZaLGgGw)kaJh~G*09mU<9vO*!Uw2ny*+1g>ul6j!x}N(p5;A| ze|SW9w{>@cS m4+d69| zmXX^(WIrV)Z!xs|6Ub#=S{e{#7=|m!!S2ZcR!NWc-$i=vn9 z|-YH>Kpiqg8JBZ?*@TcruvH5#uJFgipOUsxHT| z1@Q{4>@xQ`L4G9Z
M|%GbiNR@mN8X_?UTe-d zL;Vsh&}Qxw$Dz%G+?Q5uYw38B{1siqxkipk-~Y-`_i}CY>gv|8F 44Vp|k{qZw8>6?4D=BGh8#Zh&@oLO{|KZfy+GB6z;84@Hy4&-m zPFb_2h>@DINfrvpnub;aJ5^ 5q?LdY8g_a2RtfRr9elqXe<6!*uS?n|q0r!8m z9#%w#?VMeto}SQ9sl4b)Nm)R?WK SUpl|- z=F6Fd8XihDIc}YIu9m{_g-wG0y#($Sl%0CjA?zcTM{o8Zf$0RU-EGF?HH1w_obsj? zCPim|y$#{GfBfL)$^)irFAAJ+W}(5tNCFm!`NWbiBry>qq>k={yPP@1+FgDLb8X0H zaj*`KkC<_K<44M{fQNWtGvK)h`{qF^vxgS9-|JHLdR6)*_=BuLxZ3bI2Q4b0>>|a% z1kYx(?p+}Vv0Br;z%8V=P4Q3O^?yCqwzgijszcU4A#0*l!3rK$qisB}ne}`+_(rG{ zD*FQruuvE}eV~q|Ca#08Ggaoqq{T&4B+x~A`XmP3)2HES(U}B}oxz%#>)zkrAA3>L zhmR%%PNS;Wm14m{CG^KL#v&pXX%%Z#KOc{hJk7@s|1u&0{Oz(raRnoUPI*t`-5wOi zZJo ^y&+p?8T< B&wSXg$6_YJ(K5hYOn*!X1-{(8gVdnqzdZC)al_?3DAyj?-Y_vw=W1z)P )X1i%$MY!OhKWJ(mQe6IizyI$|qV$5W!^py6;A9ttJH6 Hu8>07cK0+e_(wP81U z QlHgEF8UP-f znzlV3+&Dbohe#migX$;f5Xbj#Xj$5>3(HpPn4EG5Nt07H>F`>-n3!MY`6izG6LZF% z-{3;}p@VJJ_)E1E-Q->7_HLi9d;@Gf4Ht+#%NF#ib*lL6UroiC6Obh_JK-XH+?+qt zb=~RxB#Ua4b={izat*g{78Gdg+4%$9%tc%AML~rD7g>R>cQf9w269&dIw{8)!bD_V z5T+5cK@d(r@2!E6tlJp_`2ongimzIbp&?qt^6nu`*9i-=9NBJ1uND o0B?bc~EcmpTVeA # zTYR5#g4^$24qT|$eo7K@A%%Yjm zVbPix_xvGoHZwAGh)1of3X*v00sR*d`i!)TK3KGDlIX!Zy%s*b zjG;=He);0s{EmMq)$#;WwwC?u&?P(oO|4qhW`}8$9LtTLc{ToJ &3-UR#tWs&OcjiMbX5)?(BltE7*)+O2n!Klgc03KNK?5%eAN?hw8&) z1$YQFTF*I$&-3>M+BnztimeYdt*3JEGAAYu^r~BraO!MPzq|68$ u`v=+OYbHg|xE(XX|oe{*q(p)x97$7=oP$>>)_%&e!NmDq50Ylo>l5Jar#FCy)25 z=AE~v8b^(G$4s8J=Ow%o2AFR2z#RP!bNzL+0G&ZrV5&;oYKSJmNm$f0B?}RyKm5o3 zdfwoyWQ($r!7w$^n;Q-mmbl1B_@0|Pc-S(-VAEt~Gx5KggGpk-;cSR_ ;> z)_?x|v9+}&yjp#WJW))e@8`jAf2IMJK%f9fg wAHZmUmp{x6T495` zCUF7ehV9*J*8n|Zx8Z1P`BG337m+QScCm;v4XCP;ZsE@@McWqxv52@DF?l*fOMF!% z0i %*G)kHvu LB74h|OOxtlr?Lf)#ekzu{BU7ZCvEC~#tyc`b7( zDqwOl @s7_ht7s;7<>YjRN?ByGfX?!ou;U9690}9$(uHFMw{n zp_HjLGDh9nG^95c=x4X@Bg7fs3l2IGGZx+t{<&XIHgF(v7|TKKttrkB&BGLt=*@y@ zBANHGGC@qqq&e6=@Ju7r4hS@azb_0J68dmCOl~>p&1JCXWmaPM4gYw5W@p#W>08S8 zdX>bI1Z0w=vTBVpASP!bH8^jLFCWef?>*k0Jdg$Wk4sI;Rr5GM-~4lYp6Dp?*kuE# z0PkM_mZGLOw}E6QSICA?Ztk%uf7D!P3D4T^17EdkB5wEzWSQvEy*u~jko0wRBd>2J z?1)9aJH%yP`y9U@N`Qu95Kk0nEq4=%kN+CE(CvjF*xEaf_&on(ZCi_Y&jGv%ESdVD zrq-D|lvOuI>{{VK{4s&FMHvw$-|3}{w<}V9n;KSMx}_9qETTP>&2OH1@S4|mjot%9 zGD*9{!PMb6sH+x=ORx1emdag^7C9BMmq{jo%FDbSCg|s}jf({q?00cDqL+^cuKt*} zWfiME0z5pZ 2hEm~j_IEjb;I?)3dk zEo@doh7PzHXV~}_iH-Puy;b_}(*)0OyAyOhSnh8AkdnM%SkIgERZ>{9@nNs@$kU!3 zE#l`>K%=Sf0QmlNII!=jvfgHHm4vH-(Nam08(`%17i71+)P+x8+g@@Ea@DC>q&;qV z{SupC=J@@ O0ZZUwZKvcm)TbNHv bym1-<3^ta)5y4Kwn?y^p2h(*H4ll8l z70?pUObhP+xn4*q@2`{jlP>TNP*nW2b-c1@tEy&YFA_9LVhk?QrHPa}YkS2^wuft) z)(Dlb 4toh!oDrbN_=`bnvAdPkK+xFFo+R)_+)`XVLOpf&V%GeOAF+qK-- z^o&rVht}uhjj|G96Yc+aVP!ZBg)GKVZol>gRx(-zx~YBj-=O+I@)FYgru!aAbg3$9 z*Bj{%u{Tseg5;lX7Yrw}h|p`n_`kJpkByCzlASGYYR5@U+LOLJq2;~&S~zY$^rqM@ zV6%#Sj|4RQ+C`RR&n93qlu=Vd=YZyDmt5Ly>{?%1#QiCgaR-63+R5?Ms}5r3l|H}} z=%#@@263bAu3V%6*Rr~GhO#Cm8$YKoOg!GipAr^mbobkuFKZWlmf1>9*5!C9T6b|p zQ9UD{A?BN7Op?+ GEC~OabS0#)J+6wUBHS zKd+X2{;w<2R_Aq}hru?9p_ <4e)yBw{cZVl@det^YL$m$x#hfMKX*Qz^yTID z5s90`O9XeeW6Zs7Vtp5b=sm?|;@ZJb`z-36%e(WcCSOR^N&+AS`;#tYvy11q3R7DY zms?!Q+VZW^U!KH~W9yObWa^2A{zxnnIgb{7qGFt>l`hwnm+LHnk*@n}|DG2;_aQTD zR)s$;a@o~GTw6JuNz9~7VM^o+bUnNndtnm~%FOF9Q0W4*x^rmn-GL=|Z&rBL5YJp> z>0(&}ce%YbJGdMJJXA(5<2pM#oh6GZi=+JNaE6=wy?|7{CF0V+6q)SKt?9h^;V16O z#i<~y+HTL-BcJxPY3Vvz0t2DbrQsCH+4ll6bx)E5SkW9e{BT^+%|Ucmxa>y+rm&0m zD%hko5y!oWRzR{a^q%C`(gjVzOUSA@HQ3C{;>+$nno4NpFiL=17_I?RSgCQffIQFB z-LZ#m3`ZJVM7g%Wr@>`SlN|IR-3^N90vc$V@~$pY!sonTj@bLt =^xd;zk1%jMV|RhFa^xDWqv3A+U@Xt)G6?WBdteeW>J5y4r9&&^X=MdA?aW% zZ3;jCJHi5N!!p#!f@OFzO2U%tXZc`$0zKnfB5D74_pF{tewWRzFB^xW6u@ xy z KYbrdXS_;0q( zWOS3c79gj_11r0De3)--!MZY~Xxo>Lm4g%4%3fG6s&a0Z-H)+p^s3ZMOiUKk!8RN@ z37VxA8 0z4bSH09XH-YI!9jTEyvqx!V%n3@t36USO1 zS@2&M%%f_vpqUOpnWX{fq!p4FL7awBSi* m3d-)4Yzl%-0BoU?=r`aqvK0S^yFZ`a=BgjCzc XiyB zsxAh}hE67t!fJuLS7-agor5JY=13blatZTA-03iXP*GoZE9B*mnJZ)fwAFO|URe@Q zL)HV1mvumHKGD`lUS2R0D0K9=xVi!g7z_1fS|-&a?P&v8)A49lcs2D~Nu&2gXtR)2 z@+~|4f-PdJl>bsrc>2k-7tFN?*uNj2`16PQG_A6#9M7=#!wn6PG(Ax%M464b{qRZj zP)xLC(bxhMRj+k)!I)O)__nowiZ#rkYZint_b8qXzH#H0M#G1>wp5mYl~MiSnrKvB z%nlHIjYo$=v uI8W&v=xA|jIg!U!g7PW@}` zk-Cd*utY@rFVZXx`YBmy>B!-)W1F+ib&nu0rSRolcf?6R^{oDbejA> 5lq9kWZkvelWs>#at2-;O@8B^E?UItnl?1jjK*wO#7|k!1~Yo zlYEi?q83QJ1AKFMlwrSDj^S#R`flW$V&x3POi&wS%+KMEQYami9wYHnY1lbfL=%)N zaeFy$M|s@zZxD3Z{N%`QR7OF$sz3=B{(8ldQ!qL{=5!sh`T+vp2 X5-rF7Mg#m*nfrc8 zQE%~&+pG{Q{eC#)ALuS?2BKh2%EAiTCN*W)(m3M4L>+NW5Ko3Y?6BRI+i7q7_@;{d z3$$h#bUQlp>)*(F)?G$*8ZvU&EDz+T3JF_<@845#dmi&Iq<+)E6(eg&| FYj3;<|6kTg#2^*_Yv`ER6rN<*hQ}z~ic+45{nAN9HxKQvT&9 z;R+_aqJ|Hv; `Z!k=b!nDkqJ7%^zAQPc=Thm1T}8Sf<7$n zh6lw(jP6>*!$#662C8n_+L76#GK=)!$Vr$pBosJ9i==Y%6b7oaHEBAfr22H?sQ%f1 zIfGeK8ww0G5Uhii_*OBY##JhibJc0`6eyOH|32o%z|8ZofG|s zrMY$RI&cs5DrSd#67%%Fo3b{IyHPg-FEePFIT%;jL6oZXUljKmgc$y_jCR+yJq&q) z7>$}*E`#7}4xY}K2{Yk*1HStuTg>QN08z|yb}$2u&|Z0NYl@R1lkO*S0?3tDn2e~O zQuSWGeD4|(P{jW&6bl~RvslOqsQp6om-w`oGcais&$lq$qP%n}a_jI#s<&6J5=M~g z*hS@yn0aGAxErRI1CePDvx}{2kup*OHTsFn^jI=EG*}pyx@d7%x4Z})jw`D<7DR7` z%m`IPq4o^m6vE>Y-W!Ju59Rtz0mEr>j64j)DvCuX`f8pv{xqCoJ bR^xE`UbxgQc{wN}lbda$@mr@8*=OH%x%t8f3 z#L{HG*D