From a88b5d797c3797ac9c890a4282df99854060c375 Mon Sep 17 00:00:00 2001 From: Incoming Date: Sat, 7 Nov 2015 14:24:48 -0500 Subject: [PATCH 1/4] *adds action buttons for slimes *technically obsoletes the slime tab, but I left it in just in case anyone prefers it. --- .../mob/living/carbon/human/species_types.dm | 2 +- .../mob/living/simple_animal/slime/death.dm | 2 + .../mob/living/simple_animal/slime/powers.dm | 69 +++++++++++++++++- .../mob/living/simple_animal/slime/slime.dm | 7 ++ icons/mob/actions.dmi | Bin 55211 -> 56726 bytes 5 files changed, 78 insertions(+), 2 deletions(-) diff --git a/code/modules/mob/living/carbon/human/species_types.dm b/code/modules/mob/living/carbon/human/species_types.dm index f46e48ca5d1..aaa18221bd4 100644 --- a/code/modules/mob/living/carbon/human/species_types.dm +++ b/code/modules/mob/living/carbon/human/species_types.dm @@ -262,7 +262,7 @@ datum/species/human/spec_death(gibbed, mob/living/carbon/human/H) /datum/action/innate/split_body name = "Split Body" check_flags = AB_CHECK_ALIVE - button_icon_state = "split" + button_icon_state = "slimesplit" background_icon_state = "bg_alien" /datum/action/innate/split_body/CheckRemoval() diff --git a/code/modules/mob/living/simple_animal/slime/death.dm b/code/modules/mob/living/simple_animal/slime/death.dm index 549a4e2c728..2c631b9db6a 100644 --- a/code/modules/mob/living/simple_animal/slime/death.dm +++ b/code/modules/mob/living/simple_animal/slime/death.dm @@ -9,6 +9,8 @@ M.regenerate_icons() is_adult = 0 maxHealth = 150 + var/datum/action/innate/slime/evolve/E = new + E.Grant(src) revive() regenerate_icons() number = rand(1, 1000) diff --git a/code/modules/mob/living/simple_animal/slime/powers.dm b/code/modules/mob/living/simple_animal/slime/powers.dm index bc64b2168c2..c7862581253 100644 --- a/code/modules/mob/living/simple_animal/slime/powers.dm +++ b/code/modules/mob/living/simple_animal/slime/powers.dm @@ -1,3 +1,12 @@ +/datum/action/innate/slime + check_flags = AB_CHECK_ALIVE + background_icon_state = "bg_alien" + +/datum/action/innate/slime/CheckRemoval() + if(!isslime(owner)) + return 1 + return 0 + /mob/living/simple_animal/slime/verb/Feed() set category = "Slime" set desc = "This will let you feed on any valid creature in the surrounding area. This should also be used to halt the feeding process." @@ -16,6 +25,15 @@ Feedon(M) return 1 +/datum/action/innate/slime/feed + name = "Feed" + button_icon_state = "slimeeat" + + +/datum/action/innate/slime/feed/Activate() + var/mob/living/simple_animal/slime/S = owner + S.Feed() + /mob/living/simple_animal/slime/proc/CanFeedon(mob/living/M) if(!Adjacent(M)) return 0 @@ -79,6 +97,32 @@ else src << "I have already evolved..." +/datum/action/innate/slime/evolve + name = "Evolve" + button_icon_state = "slimegrow" + +/datum/action/innate/slime/evolve/CheckRemoval() + if(!..()) + var/mob/living/simple_animal/slime/S = owner + if(S.is_adult) + return 1 + return 0 + return 1 + +/datum/action/innate/slime/evolve/IsAvailable() + if(..()) + var/mob/living/simple_animal/slime/S = owner + if(S.amount_grown > 10) + return 1 + return 0 + +/datum/action/innate/slime/evolve/Activate() + var/mob/living/simple_animal/slime/S = owner + S.Evolve() + if(S.is_adult) + var/datum/action/innate/slime/reproduce/A = new + A.Grant(S) + /mob/living/simple_animal/slime/verb/Reproduce() set category = "Slime" set desc = "This will make you split into four Slimes." @@ -123,4 +167,27 @@ else src << "I am not ready to reproduce yet..." else - src << "I am not old enough to reproduce yet..." \ No newline at end of file + src << "I am not old enough to reproduce yet..." + +/datum/action/innate/slime/reproduce + name = "Reproduce" + button_icon_state = "slimesplit" + +/datum/action/innate/slime/reproduce/CheckRemoval() + if(!..()) + var/mob/living/simple_animal/slime/S = owner + if(!S.is_adult) + return 1 + return 0 + return 1 + +/datum/action/innate/slime/reproduce/IsAvailable() + if(..()) + var/mob/living/simple_animal/slime/S = owner + if(S.amount_grown > 10) + return 1 + return 0 + +/datum/action/innate/slime/reproduce/Activate() + var/mob/living/simple_animal/slime/S = owner + S.Reproduce() \ No newline at end of file diff --git a/code/modules/mob/living/simple_animal/slime/slime.dm b/code/modules/mob/living/simple_animal/slime/slime.dm index a9d13772d0b..61ab08debf0 100644 --- a/code/modules/mob/living/simple_animal/slime/slime.dm +++ b/code/modules/mob/living/simple_animal/slime/slime.dm @@ -70,9 +70,16 @@ var/list/slime_mutation[4] /mob/living/simple_animal/slime/New() + var/datum/action/innate/slime/feed/F = new + F.Grant(src) if(is_adult) + var/datum/action/innate/slime/reproduce/R = new + R.Grant(src) health = 200 maxHealth = 200 + else + var/datum/action/innate/slime/evolve/E = new + E.Grant(src) create_reagents(100) spawn (0) number = rand(1, 1000) diff --git a/icons/mob/actions.dmi b/icons/mob/actions.dmi index 7bfb21bedf17f04eb693b1778c12ba82e7a99f99..ee4c6813cd09205bc8626de84fb55493018d0314 100644 GIT binary patch delta 15173 zcmW++V|X2Z6U_}88#lJyHfd}&ZqlH!(b&$$wi?^EZQFLz7>)Jj|L%wT?A;Ih?980O z`JE}Pgi36Milzjp+^6U97^ zsKARWuLbYiRC>!KK!OV54QP3%OQ3I2y4UNH44Xq8>;<~iKmILVvC@m3c2+iFTrWVw z5Klqh#?^A4(SW%cWE1hojZ3NHC>Y!@%rtUCJlkM-XurwzGVLcP8WwYk1X3f}cARM1 zWxS`l z2F^A!{243_w#lGB&CRl$K*71N+Ik>Vi2%Oa`KS_hnst z8f;};9%L(`YrEMEox#$Ia}-Mm9(E z$fUVTp?o+AZzK%*!mrFY=}(AeGaX`_J^Bu?ZxaWD=cA2-|6%%yrj8~uJk*64qE-~D zCI@JD^-yx`cz@?zZq0LFR(JX-7_a<;?i)P<0&Vc>ma=gh^P*5&WcXX#@fhbZ=bL!C zt?0iN%|Rn^B5W~qv7Z)3=ygoKk}&GOT4veDJ2EavXlP_-@?>Z8jQ)?JI^0vpm<0;(0T=uIpsH+>?Y`%hO@EQ7$y@wG@KV&?v8xhFauikju3uKmiT%bFr@ zC2h`~sZFz%OPk_9U&ZYBV?NS;$gtoy^)BK{*uv4no=Y(?S}dtKDP+2qpI?+}ZMb@a zL~fs6FLFNFkVdX{0z_||dhZ^Y^ogTNcL9(cX4`iBYuC&fwG%WPHx4*v*d9$+T2_F1 z6L0n%-#jruUBSDl#1sO_rNxEwTv(w=KgV73)9=>Jc|Y@gjY@AsVXGlZ*S7#t2zOAs zuv<5)s7R8~W7TrRSBh+S!UYyJ!cGaxLo-b8@w6;w{*5vq3Crf_#pM-J%-y04fkXQa zGr;t8^i6vll|O%#KBB+O!xK#`<{My8%W}84AN8KlN;%r06+lW#FUo5bwK>TEiI7Qu z=hm)B1Yb!YiXI>g6CCUd+c+AsJQJz1?#W)KhW4FI!t=%U@*bAku?wyYIj!g-v&@R) zqCIjMbMr20vf@6XEd@1n)cRr_gV!bGv@La%w#Iqq1t??vKph5J( zvrU0MSi&OjTz-l0yV{zC%k4zxUu@=FsrT9v(uhJGo8#`42GeD-A+K*7+cfI+>P+L- z$8fF@$An~e@(gZD79E$1`UzT(Z&_r*rNU-BJY341^;Jbfzbsgxi}e6(`tE?*KIG2E zEGg9-&K&W3`{otS>yei*R3kiQdn0}9d%LI5wAp^0keow$y(;k^zlrbm|E;JyXKWk$ z(}aBw7Re}y@Ycy-xTYZS1UAw^Lp7B-NM3_C^+sBVX89NaJ6 zU7bFZop8EAfP^H@>q7*r6>0+FL4`+k@?3W5SMKaPse@LkBih$yAcezHzl3haHdA z$MJEA2#owLalrasPpo~#TlG>t=9Ca!c;gnf$%t_q$P?d--1&Vyh{Cf-FF?9)dG2rO z6ec#>D2swKNwjEb^zL#;u6U^LWvN#B9#mujqPX+jexfkmU#>S5QD4#r15Xeju@^}h zri+odE#GyiECDDn%)j0JJ1bbo+KW&i9K8TKS1WsU7P|!&3%&QB&_f>HzULu^88exj zEks^@gc@pLYNo~?wUH5YDIw7}`(|Q9lCya7N@&oyI(>3$Xo4cVIp^B8x5Y7*?j%-t zBU+RBqi$rwYdf8XN$LrPz`w*V9Tg^C>QO604%DfrH-ZaQkD>ZfsYK-K2yK!N2;y+*YdB0xXnPjMMN%JN0 z+uJee0L2Y{M=U~g0)G(CA5MfwoeZa**Dz|#g)fz*Fri^KPoJNX+TIM7JJ#?-0{iu^ zR3#8Oh^?PVtX#p-n&>`o${p9dr23+w@@IbtUj{Ods05C0-Q-4-`#K8vl4J_xo?Caa z1fSnM_8rM~`XG=#GpZs4vrC|@)S`uc-Ks9h0ZdRwo>P&X+xU1VPa57%nybVt1M#fn zYqOV>QK`;~-l8@B-M2#sK@-Bm@;`NE3IF{9%Cvg~K4D9LdZ8rb#DUKSygLTGUqR1< zey`!-;c`awpp})CmmeVY@&ytiy=paIMJIRj&gSNj(^EpxD;VhQZ=ye>hH?B?U*@-K zfLi;OdT{BhXf_RWnu!|oOR%s#enmXeO89f=#(Dh2^6#cyon)~|?ajDF(!D6WY0IU4 zRrz=x&Z{AUvoYM86`V|os)Lm z4Tg`_=6CienoRa``LjEmX$+ejG;9zJfPtSq$~*}lRNmp9A1&Ed|F&xontk4UNPIOw zVExb9q_Qbj_0U}Vw(R}!q_T4Y^COA=x?Q*(Eeo&_pPII2@LVIMlzNHgPlrI@^$xVA zqFzYB^HQ74VO3UVE0V$alG`8AZR7?yF;JUnT$q#gXC}sn$LHihDaK|~Jd8&Gq%Edo z=>mM!Pf2d?ur_u=Fs}gOoxKsNO3Y61XM=qH3&)N~JkN-1x~mE|0+PG}r?!f+aAs<8 zki_rBMVCd9$v3@+p=qo&ugt>b16C+FqyFWcnoUA9>=DZD6I;U9z3~?%FyB1nmXHEu z9Z>t(aYvb>8G?5||9BRM#hwzN^Opz&MNYoI@pRi^DZ={E)>9~ezBjlrO7Y=${m>Dj zAK1`ZgZMNh4J{`0@0MJYRxZ`cHgjoH^~rVVD!?GOlw(z+tTepc(bd|v_pJ1bx6V#m98 zZb7K|TI&PnEs_k%W<*9gd_3!0olmsH>(B~4aW=eoZ&jbG9cDQ zC#KSZA>RKv)Wb+4Mv@b#Z2vMu^)v2U!=TQF`P&KAJJ-hJrpC+Qrp*{Uz-s zDVk`P53_G>BUWgMlHiFwjk*+ki}H_j;f`KT z6@X5o(;k8ftMvHHI398eF6Hws#!zyNJ2{)S#|awx0O9PWEet=v{n)H`p5jX$r)d=J z6L@IO~4%bC<^YVUe2qek=6c~a^(JxU$ih3-L|&8 zW(@o1ZR$@pgt@B8Hr3?%>=i;G<`3ZDgiP7|Ltp@NZ_tm3{?M z)ijhI<3Ky*2o)Ewf9CvlkJDY~Q3%Qv^dR(~%$LxH=aYDb4ah0{G~*$5u8!i*VtULE zaa^jFuKe9gnqX9RG##{w4XJ?MB+%9vJs$z9@>s5CU6tH?`C8t=5 z9ju){_*c;JU$ETg>z_1TEsmKCVP0uySjMw&vsSlRUkjUoGr7ix>(Yzj0?)hm*GXhd z=g&9dTes_Vr!a@nvqfb~qg6ja`85*5etZM}Mf4Y@-a$l_fpYdz4fs?1C4?}#Xcvjo ztQ{Zmk(8MP`9Oy-rT!`6UcG8)HdFFT!iJk<&+16Wr2q*Vqmq{!g3ul!Q543C04)}X zt;4vB$r2d5m{1W!T^508xKCnP>v}44EJNY#SWs|TuFBbw?@8}9`@(RafOFHu_ipxn zv$;8x^faw?|L65!GzbeJ0AHc*U5(s0%{5XL8phjdjk4PI-pObn`OpOvzImaLFQ5GP zTeH}dX+m>cp?haF|BK60d@_o5=5vr^V%X;bVlp6;`cq+^WI&vc1VnN%@sSdZ|!MAqUE^Dwr z?a?smxh4VUC&B5~Hx;r@t(UPJN3n~F{3ESf(S1$LC*#=f*)Tl5>oPUpVCqMGhA}$S z+*GanWbO0sP1gUKz($xKcrid~KK#18Z2(Tsj*oZ4#Qtc}RJ`t;HO2Kmv+zHp{)k@X`Fv+}m}Wo0rFDKm zk9}pR+*Nb3&0%+=K%#zp!kw^oigNLC!6aOS`VhFPnhq1*Q%Kq>yt1R8oh}?B769lw z@8Lz=)Xl2~D_J#-YOkLg_U4O_XtG|ZXRdAqx_gzkfkq9e5Frmytw~g?PSXHrCQ=!5 zlKa-0x=;zo!xzt;1K?Y$h z(Kc1hD+Wd!28pPJti{6GPiC4x`<907-5}8*<;YppQO!wDVARO&7xY2Dcxfpq+*g&M z${CW2!^inj*T?)n3KO?yJX8T>Toj`tWfwDR&#p-669+tK2twIMW7Tb5-B)aelN(l5bG&-^^GZl41%p_$vXZgf~e z)P2IDan?Jao0^{*ziLkaHIy?~SLEBo!nUu8cQo&Z>qIKroe%d>Z#Dx;0HA9R(lGYW zR6&#JS&wj9oQr)%eA2jgGAzMncHno&a|dJM=GNSim?U zLVu$~#&{anBIMK@B|HFMI4f>n8}W6LQLs|}&~hRW4I`4q(06>H zEbGh$ng|h3l_VAik~b4Z`mx9G@7G^0+X1JX5+fbs!1Wg?sl2F!GU$uWeW|PJKO0ex z?VQtRr7h%h3Pa^V|4?9I932V2%kB@RZDI9gq@i{#ZA?!b87c!^5Y)Bs?UkSsq+}0+ z5dY}jagRM7gv_V*|J?9TY3twuQ@ZDj1S>RUky2G$_2x@p1X!aHs2I<1tTtcG$n=R` zz5BZAG-RlrsB$HlH3O5h&P~^(Yzt9PAN9O$^#?YH)YaY6d#`3e-vRnx47^a*>%V~R zN?>>3o#N})ufRVv2z3pOAG8?Y)%K70_aPpx?{6}%K7Avdznd7I%q?#Dv?QbCD2pZ( zRI-z?^I;nJyv01E>GwSS`x2eOpcAi($_5JS%{@!4em_En*OM72Ps2I6%gyft7r)Cc zM74xe>K`8;kCe41))hywGeodZ@di59ET}Ci4y%L!#Y!G$DLmQfr`S;^r?##*Wso1s z+Ucd2ty(YvIS#Z0?hdQ4^bxg@80>={A?tTTPV%U~tZj(jUy;rJsA zN!z>YOvNT#)HUVz?I9=ogN#+-NwTO%WfqKIP-etq zG;9boSbkj6 z(Vi=iN#Cz>@4+cS6Vit(b>U2Ghj7m?@j8%aAW`+MqQAwEL8!>d;$aA{f z3j7%xllcI^t0yw#AbGKYcPO#AXm~2?x_n>FHPZ(Su=n$S6fX;Mh%T#y1RG&Q&U3t6 zOS9M-zIp7eErSc6g^5YLmgI$VC89p*4us?N`9X`E2|PS+I&Vy)-dQs-A>&8&cSxy} zWz#bH&&mfmZ^AVHwe|AiH#5+{i&upOR@3s%Ibu}SyEbN(f2Na{Ux;$+P$E5eQ~lRN zebUp7u+z#Gzgp}S<2nO0DM9ilcZisTS5wIz?!FblY{bVLXb1tqQ@`s?(P4r}MGd#4 z%at~s*&d&>R!gNLW*59tv>RxZOONN$xY@r)dHek{blJcBMGBFFUw;LcvpxgtE+!`@ z4`1&q2H&ignt(_bC)66PwEhf=OLv4Zx5^Q62$46~VitVW-?KnKD7d=xi%mBT`D&9< zmSv=P0sk0D%$LGY*%o`KT1owtAq=)q{(_C>Yw3+MjrJb+w?Op6Q*TE&7-}PEe$xXp z&Qtk=ul;=Y=*vu}W>{*rC*T4u+MG&Cu8S)caxerf&8a*s7-Wk5JeWe`e_DvlJ`|5h zo{(}-tXl=jW`s*mS1)B`qf08ovn{oIXtd0dz_#VTFz7G^N9yy^v_hhsT{6-bE#;Oe zqsLlg`#w}c?dk)IvK(fXa%aHqIiS8rTd3(|>;wglR53_xGyQXy%W8BqjT z$)ZD{I4BRjnLTjTImh0b)T(eBLUl4Z!sbg=Yds$A5?OR6Vkly9;)m~FEH#p~usUHl zlRX+O=x$24)I3^hfMcqG8itF`cYb6?$GQdw4++Q+RvS%mUTo8>S8(qO1aFI%XXY|$ zo7H1|pWCZm@6$d@OBNOp1SLw>SjfmaUR_2Sd;4(e_F#IdOt7j0$0t+yc~8pLr0~u`m&sOM znns07%~y zVL(60rO@L6h$B|6HA?ucPigv-t}}*TKEKT={c3k}oO0Qi%6_TqysxK%oVO-@9HFI6 z5*O+|;eFYP_#BjkjK|+HIB2z80~4+CO5*vjO-i-2G9$bl0Jh7j!H5vwC5bvbd#^U^ zba{2_eEk65EWgM=MD6X)X*xTkkUCuTi&Ppy z3xjS)!J+UsD+zlqS#jv-((D)#|9a1iKF=9aA4o!2T8U{JXREB>5}6Td8u?Khnio_? z=_^gn*Dl0+zh-2yRMq_+fK+HWdLOUbWcnEySs96#H?6YME4kY*2#VEW$@O&Y(YnU# z5oG}A_sf0LZ(N8+RI=9GhQ`7hRz#)!nfm-p|egavn|S9?7*T3kxbD zKT7)WEjIpd3)8HE3Y2#3$(Gqk@vrw9pV?vcyG!!YNR8 zJ`PMtgskGy6LUgiR@Q!@+)Ju3XDCgg{=+uu$af$fSS%aS98~aYblIZBt}k4iF>o3L zUJ}cyq(S=U#&>ftjtTXh6RS6H5**s`BFLs$m-N|y*|0Yd*?0QLaJwf!-^z+vsZe|L z4?!jfUv!xYoe5e94fH9WilNB-mjAIk-TY7bO;n}gdFItsepGMa{rJPf3+%d6?c(xf zU+Li?d<&bEz%F9OvlGsiU~*bE6!2q2-<&O`d^9Tn2~8+hF2Db`kTd};8!i*hNR-P| zNlWD?vbc*BTa&Nm3my$tT9dE$oBhZ0rGDhZILw+u0`HIfwZ`LrV!!B<>iv5C6l={J z%z<_HEp=17>@W_S%)#FC(W zJ-!R}M?>f> zDGJI2s#j0r7dF}iJWk#M|zl~qXvGLczPd{sWV`DdQ-;c@ziF!4u2c}PsKkbcz`#Ya+c4I9$@>kN zRk92H6z06wALz0Mu3;v=Awx?7zdHKBas?54g81gGYbVZ8WEHT7AVPR#9iLd&F*LcJ}+v<%erN zDxq^|@4!HM2+Gb1ppH*(2I)O51d|0y_f-PW>&e55zo3J6i?24FCckP{ZhW{a2L~Z% zlKjgTc(PB{KaOA^9OrR1Make%XM8hlm$DsLcH(!JW@;s6j7nf!dTZP#fh9V`mi*zj z{%5F`%;ZyKZr2G_o8v#iSP}Jj_J%sYQjn3#w=;2EHd9tpAeTj=+1)v4CkDK2C~)}^ z&DSs+f!8_L0DkJF>4dL?qk7Q(h1i@-AU8GFn!%5tZ^gdVB*^>T{eAA~A)LVw^ z=Z46Z3Ew`gs^f92p`e;=6EJwpqeQ4DnFiE`M?N zn>__VLET$`o?o@b=^L(YG|s-8&y*MkjpEs6m2LMI+r$gHE6h{JMQJXyh=_=`#{oXZ z_HFpz=8cc9oxkf-*e`g;a;Q+NtT#;P489B3_+@iP>&ntJ$RRq=aC`Tw`qG2^e5?RO~xNKC8_c8_GtmX$t}1KnIqx~4uPgFZ`;#U0!*7m%%aM{sp!(FNChs=f>N zFRAo3^B)-+e?;(`KvG^F6+z_0>@^6&U&Emm^c=DU+p&jHe33eAC|tSd+(Z)1eJz*7 z=C`t9DU;y=)9U0ov^T6e_0dorfklCy6?Wjdbbo3PKF)Z`Wls1!3+wLX5;JZB7qzST z(CLm{gOK@$PtV19v}YGYtg~8(qA64Wao9Xk4iSh7BNZXI;~hw}ufX!4d2-S#sLqaI zOTf`|Tnaw3w)mD>Tv}?dTw{bj?D+9JH$VT`;b^MrxwV&Twtza`#mE83W4b52ShGj0 zl}{eW;bswsVHOn9$2tlz7GMOas;JE5)MpRZe<|q_yMv>Oa1XjX$N7pmsQww37vu3j zT}Yw#SF?>IvM+>A3fZNx>(5Vn)FMWRZ0crm_zGRwtf-mPNuayXP&Oyl8Nbfd2i?R zV|hM;Al&bz=4s8%8-H{ZLjQV%Okcyuo;sNm?u{%z4!UR!G12joAC9(t6Ah0&ym(g2 zQA6ve;{u&35r51qS=I^5HiD_Aqk<0tyuvCOJ{aNHc<+PO1w1) zDB(~QCt~<^I%t(h#k!LRa%N*%dZURB0+Ws`jIva9f3z8`1K z?Qv&J>y6d)C zB|}OVWOfVa8D#-uUMmjuavY(bK8jGA9J6k7!gs%*5Skcr{>(;$0zbT_C;7Hzr5JSvH@R?vJ6#qkiVafKP&Z#1u0&pmkva|ktyD0SzE&X++&LYj2 z0fL-aGmkv*B_mie!0AQ0gIMPwL)>rmtOrC}&n;@sKqt&&n)_Tf43As+xpcNekc72s zAcElac_%#@U4H16QeQ|F0Zn(dK$h*4?x0!VOjfe-7IWOIuON*AA63}Bea}f!TBKC@ zi_@u^9Y7!khb3bLQ)jMcO%!1yTQ)MDD{7jZpC3?dFqnfmyA_OaJvft6o@3bsONh>H zW&ra6r&Ww!vIV9?e?HE+r^N-WIdn9u{-6jarh69q+lpAMJuvRO=jr@jR&Cu&+00cb zHM6kD^N@%Cm>W*+K^H5x*_k%`wvS5#1LB`h0b)5TE34@1bcX>KeEbsHO{Ja|$CH;u zia`*MXpE3qEVXPZ=Xmd6C1i9sOgPSry|}{cv0&*0j4FW>DYlPq!I{Mb7uW+_AQJne z&1SgMbzZYYNl-@&;lGDv6C7OBjhT*$+hywT`D1*Lp{8hcw${5no`0hac05_oV{3T< zsOTE4&e9Sb8TD4mPCOFka(cV{h&py)H#V{6KVP3YTT2OLAl*^i`9J>xWiG{XTE``b zG)wWT(%4sJW1G7n5K8&9M|f099kj+{;S-!lS~={oJ*o+IF!7L_kg8evva>X%k9i z-}T_l5fpQ5pZL|0y2<+zziRs)9yRRbO)e5z7Xx01{W`6#u^eyD4XoW$Y#yYcc%!fo zheZgvu!ibl*Cd_u3MO-62YrL8$|i@&&5h9eKAiQJ8_9B3vlvP|>l!AB(+m1!p?tTp za|NMm{XMC_?}}pS1W_n1!KMrzFGPHKp>f)X(otYKs4&w@U9DO_;J@>#4EJ*`DQRif zbFSjSV+r#`MJ)y<0M{8CeTpD$=&toN^z_Qjg@TVDOtE`Xz+>WL^nMsPGCDbMV@~s8 zrt6jXvSDm6l_j)v=5%~~Y{N;o?xaer&=nJ+{U>Kv*Qoht;Fk%P-AC*J2yDVVl7+tx zNix(eBmPiDb?BA$H@?DGgD|Sy@fP{I(4R%IyOQ& zyt+LU@wgbFP+_0JT_H4R(I28%{mcfQtv%k5iP0Gu#C5n}lOg&hB04tYEQ!686CdI_77TESUJI7YTtv}nA>xWx9$9|u3nBA6)uDs|&M zw!hxpMMe$+Z#NeYneTs#5P`#Vj^|yEi?^UU*1`{g-nM6w_vVYwV8`8x`I|j4gXP~S z!VQ^Jp!hJ^CWN#hZr!VpHu!wb{DViBnVC`2NTBTeJtka_vCmPqai+{P#a`Q_yin?{ zd7cGf=vggQWv?3S)0_Iiq84UnhaxgJjdv9s~3yY|zr0DWKh>WyN zQVVeNYE=HR&pqEL)wbvL>JK>F2-1MSKI;Ds{5<;HDyVMf_p?51&YLF?M|9yYO?D}y z_GT}S1ogI*vO$@p?n1LkZEG3QDfMNcE%ff`VLq|V_1(Pcq{;3;#9LskaV?f{@?qG0 zd2#7Y)Ob2i>e*_e{V>%Z2W}Jj%|D`9h37#a$`1*0L-7q829r7XSNo@&R(t4g2l3UF zz(4!{3#vt1p84t0)Mce*y4y>(p2E>5^bF+ZwHl}GB;B>+e#CLVcK1hB% z1vMo2IDDYnR}phHs!%vP%XXA|`?NGMG=hMC`|5U+L7CZnHLqRO=1`!cD!gqwW|PRv zV4tFilx0~=%p59O#!ZEOYk_MjW+ z;2c~TA_!mEFiU>CydKC$}VVqX*(o>;0`n0rgPjK!c zz2BwHlnXs~Ch;?zauVrH%mE)GDb;~94L{r|P2s3y=8;VZn`*<&R?0K zSoea)8_?BzVU4$4N)WmK&J!TT9VAY^!Jyla=j|WIvP#>VK5r~20}1F%x&|kM1-W925|pvp1=>| za%o>qs%n!wu%hTf(9j`$66st~6`Gv0O zd_3Gz^Un1CPXh-uvMCwkE>594Bggl39DmZE!X!3X>rd6VU3@22R3l961EAu zxyvwzPP`ay-S2YtTWf$r|D>-Uyg;4Tp_-^xip~bZ4g2=Ps|KwhaA{XXC4sFfX9nODBQ=1nMmr?Q@CS#ke0Q z?>g&ji+d#$7454!{(_E6y0eSaX_-(1Bd>zNy<91Pf#pN+vGeqZ@;zYUt{)nJ<*ho~ zWNRe8wGNs%^aF9!Tw!mAp(WCv_9!isb7?-1PGGXLIXe8G1Eqa>CaB{4Dd_j7sU3T(q$ zFe>D6@#~v-+lO{5L<2+kU1%c1283$y?5qZZ4;0Du60wjlOosWtHIN`X{UDA(Lsf(s zpj9es5iA-(2?AlS3DC-TDruUr26IgK#l~v9zFVcy#OUiCr>4JAXE(03H^W5rdjS*~ zi$G4cG)Yw%>HZ1|aQ!GRf=!E-C+9<&k6$9%s@UbJC!m5$p#HremG|kB{MaFCAM=PA zkVUui<`VOI75w%S_-foX6mhdPAz>|+^qHtSZ|>fO;gbBnr%Gbd@@mge!7SX$B8Z{F z(Tz}WN*fb0#5*LZY<9wh&DS?s5}RBU*_~(3K`hq`aP}LT`VB(I2F17kxa0z?x3Zt3y$yM9w!+HTaQi;&qx;5kmTJzzB=)cV z8ADnsyDsW0?(_89-PvmCZ*!iMffb8yj5vsm8*V3;%qTp1r-PVU3s8~%I~QSi96}|( zSU;44Z^98&{n9DjndDM^6f5fU#X z@@I1UYSOr>mn1my45eDppETy&5j^86yyaG*6PlTj9rLat=NjJ%c1b$u(Y+4cYW43NmyhlXgYDfNSS`GONNwfg(dHCj0{qs$y%ZVhX z^2~a(qg{%cKR{TWJ675T63(}){eA;cQWV!3K-4}>x1IsQLwG5IjdVp=>%$@ zX4pH6YLpw5*o-`dfevp5ks8rQTK){VYkU>#6YlV_ z-^~{_7_UO~M6TWfx9smcer4$+V}IOcTG;Lifgxblq*d4g#IHpNK4)Lo-IeEtA7&=CE2miyHCi~mR!ENVY1+=`iV$mmo=_X zHh(}b(xpQU%ZB$O&s>_&-AYAw|MCa#Yj#dCfmxDW>4@7jCkVB-wboo%^#;O%VNs>x zg`%!wv%u&ya-v&v`LhPp+X0pwDzAgsqg8r^0S!QkFOh*sVm{$O@rlBg6XB5}FJ*SF zql9vYL4myl2DjCFRO<}{642gOV)`Tj|A?_-k7>JLu;LXVZ>w(EAcyQ!E?6^eTnf5w zIZm=CT#e%4?gvRcahUBvXZgV~j7a+tr)oqg?y~0As+(Ey9Ro=BEErF#UbH(x-tAlx z)&RDJwM8ny>ebf1B7$p7<7fSzV0f?<$+DZxPG1BptX$cW?;DrR)BT_?7rS(cvCiip zoE6jD_JQhLJ>y?bI3-NXW%RHr7HU;HeF4(@`zB%7j&3~2JSbyjg)v|5<}7mK>6|m8 zvh}?xzy313#S0b0rWaAkZm(b7yc3x#^Z-_^krmQaHaoj4qpbv+{}!Y^EOx$O-?(pX z-aSL|U4y{JC^-XqcX1nAV=*%i@xq~|;9rIUwmUqKC}^)5Tj< z=c%R4I&R2rikDmE&1qb1MJ^eJg^0EDQYl-X+GrI>ABfv!wWsK8HM&E!RJPb5_hert zf8lDk=aiWK3u;&C$@VvyOc*d^$A92OKSF&zJ3FIIkRm-w6o`NDr7WEPeO6<=cV#FL zb5xDmv}40%XI&h6tvDc?BzJWW^vmFLksUp#<)D8=g>(n62OAZz(CPK>f7euLlGCL9 zk@fGD=HX7v_o&qNj~I7Qn!ZA5Muo10saV)2)Qu-;y1hrD$qAXoUsb`{YbxLktjisk zLU5EgIRIalUe5RImj6RJw3)7(<%c$YnIIIp zP{crq_pVVV4<)%*gTVKu!bJlMQ{5GCJ0iY<-p zeV+F7FZt36IeEz{lMHP@7$%swjaCK)?g1nS#i`}OhC$|@t|*xX1;gBl;G8Wwd|5ka z;PO6Fl5=`*pxFJa(n@Y|^-K z=hHv3WZhf578W>5OUuFX*ABs-2utU2*B^@hhtGY4Fb|%vivSs~IB~g4fsy0dLi)PS zGZJYyWRtK&(Wv>A?sGTro*2iXFEaZvKCIj+rw#pDFf{>exK-PY{UT3e-Gu6cKC@<1 zH~cJ1Q}jj0lP~&TQZ*{_MC>M5`3P8R;`5C{D}fs!IwZc@(N||?xoGG!*k_QQw(EmO zDL*uZ9_^LbBk+g+?u-V1onH6XuTT6VwoN{}>?rn^-#XORSn2C%5IE8AT7}7HT`*nG zMHf&OvbsaQ_D!zxiHfF}QKTXbsW<@;u}^n9{p6mF@x*Nzb!_0r?{0zH`_Eb_kAG(o zxQQAsy7&<$Bw@QWtoKYdn=tbCDj+zI1DNqSFWh(^8UU|rPoiwixC;i14A(VMxsFQ7 zsdBbpY4KOT093xc%+~Ylpe9G|w7Z{!ZAHuvxHTl9Fo-xvI<>~K^RZOY5R!6oiR%zw z9$_#t-(BtPzuw;7e#oCbADd7d#+~lK>II@hsW((YKA{h*RgVMxM?I3Xof(3kdpLN` zMc>(i0?wtMeU2;#!(1H3f)^~wROO*w>iuA#56YtXo2ui7>UK%tiE>!>7}bYLzM|c- z3Dv@ii&<+34q>AGh7g_h6Du#s9$DH)J5G4uZALz@%Xl>p)3!;$54@tujf;%k>HS{B=iUZa_xG* zeRZrumh>Q4mSM`r-Vq1^x}X72kg#A^NLb6WvmzUZ$8iHvvUdg~af3(qp2mTyU;G@P zM<`$@u`VxRqLP{Zd|SlCe)z{zS>&9~ApZ!qjg7d7Qea&~OlZOFka_o|WOxQL&0;e$ zec`>+HwQ6iG%_xPB^p{}{_hC^_c1fCqs|^{wc1DSijc)^ZTAK>KU>jtaI^Mgl}J5} z4fnzJCH!X;Il3d3KVeWQ;TLR=H((LL7n}YcGh%t?naD#V*n94Z90B9(>?-?c0!-+5 zwuNg^szA1NWzsYpJ^bzRN643>W=t@%W>WZo)tP^Zz#R*QW5j}ovlTvM20jd=#GuKk z!nrB;X0~c<>AixE(r`3mk+l!m_tftJ}s`QL+McwCf!(+MXYBNoRDII$C=@ z34HsROH5HD-g=A;`ES@!dY6rve%c>1qG39q(X$xAQ2ywIqTpaKIv9nJ^D{@?j<#o= z#w~#ZQxriT`#mv|c<>C8KF zC^eZhtA+Ej)5@97&;3Y;9LR*LAFztgMap86EZ*S!*vI5e=K+h9@h|6ndNK1TLY?A+%GoKh1FdOve;*`#Fg%8fV}Fhx^=B5UgF^4%laCp zr=IpT{=8qU_&fCU=x%!@pLFAp@wm+y-9(~$;`whPyQOb$r zONhV~yvrRl@>xPB1M$BHt-c-xEJdAw@9=b7REw-}D0jjN%MGUAAa=rt8FZJyt%o+Q z(buOT7xf$n04MPsMRp?*%TtX(V7S_E*!zDk5PL8`jYl!^#OjfB)~r)i-K?&CwaH?v zmuc7-J!&Rhr_RP8>TK`{ z-@T@@^AwDaq;K2RleU&t^MHF!24?YZT`>6j@gGcRSg60SpAfG~ zr4BatR5}83#OPU`V5^WSC4uZ@!^R5gDHj;!zZZguzLKw;>YZ)v!oQaDN0|&!Vl}O2 zRsw~Uwv0NR(E`T)YOgow5D1XZ)l_I29^-5`gW(W@4V$VcjF0P+Bwu}jj_aq-H-orc z5Evl}s(r(OHjCD*xKDrQCE*miG$31$?qTItiYf668r!yUgLi-Lz4O=kzH`63_sm{1 zd)BN;?S!tZg-)af@O{*@+$7CiOukv9Ct{PHMFB;W%rdP7X zAmX{o1_W9Cps646qgPZRJUn$(+WN${U_3PeSMj2JLK{OC0rb3r?(Dr@U)=O4!dwZz z4GfS0r07JQClRw(&zHOXA(n=ZBE>30PK3gIU+2W%oCNuRRF16h-uMVPdXo?TA>7y(M&QywJS(3MBq|qauu#87m8-%YL-rxTMZvK~)99p-=tp#*u&4 z_b3kcd%Nj0c{&u@p)5&3xEdAJZ2SD?z8Ao0U-_oJU5bqejof||i)2cRq2AW=;-K|~ zE!M4eJv22?PF6AWOZ9jMMgdu>*~>i0q-bPW$>@%$s85zQU#{jktQqF7KZ$2iURfb) z5RPuMDesiI^4F308u9Y4HhkI_=r?F2aXVgr*VT%~;P5^TGVP4ME#^Wd8NZA_gMg0q z&`vqvlyN^(3v+H+sKti-mtN61c3p`!)sw>}U%fCeKc!Vyt!`qjn1j;8kPBfp)uJFPUTZG}NvQk#u1d^c|Yz z*gLD5UZ}-o!yQZC(XAFUZ-iy~IUE)AK@oy(-DS90FIeAp}4lOLxq`Ky3w1|^?(54isk!MyD z@WH6({JZA)n>uq^=@~Mt-))wZU-L01@u7jF&5ripdB!K3bxUAP&{A3JTp<37UV7V& z--xmt&gk)Y|B{I77^-+Nw;Z=~Pg99f4%HIBd6tqLH ze!42HWHZOgIJU(3o;Rtcr4|nUIKDuV@e{QPpqMls6{|3{XR_=53|w z@q&V>7?UBLq%u&HU%&7PWa~QgF|Pm9e6vOz0|S>5t#e@i5En8`6}PpuRl%Kl<(xd4 z9*0p>5{G!n-u@ShqSgGmrUWwFJB~}=NG=QjVEeRCkj1iGXwlB8d&<*Hkt%&uYZOW6t}z| ztzNpRARdPgA;Csc#t-5ZG$|q|>m;XAMO(*BwL02C51#ODIGM5N-03yXaCj8D54kc9 z$cQMK=i>I2|0ILcTmI6m(wF}Ni?k3>$47JK%d`%W?CANhyZe*cuy!E6yL%vv+*4YE zZ@$X5zZzKIM&Ue-M8%WB%p53Bm6|CJn75kyQoyBLHc!ZWKz;%lfkAh^x%mhFtR@gz zSSIly>8Hlke96==0e4KInA*}BH1y5O;hocT0e63|-Vg4!NR4U@g~J0& z7zhn8ToV@0RaWemkMN8P4#4r^;$ZCA-L2u z)lTJ`MMb#XDm_63=oQp)-BQg)0jQZoW{n*_{*l` zNtWnTnV7WP(<~kx>{PCwy$6j}ge>j(u%9Z9c+F6wAsI~GX5tU2DYF+(jr<)ebz2_j zbJCDeWty*fxKk|gN!UYm%o@D}dRJ?It1tF*FO~=HzhG`Zy~`CLyOy$=>>tEm#|_Qa@YqEE;gu)F1Lx$jg| z+=<>}o~ZAdx()bw$ds$S@DHX&i%@81lxL;KL86X}!eDpQcYxLmjf|P}?F|8fUw@7% zaiCk;;(NienTvV)SnpStjg~R9lLve&)hHY#wo)i~6OrV|rAK>UJe_}X&h!}Iq+7g6 zu@Q)@!AibyZQqKoB!w}Nf$N@Sq3EQAu`K2iQ>t^{{7$!bpF8@nKS{vBj2Bb+C8PFQ zY4yWq)-rG}+9{&-Cgl(^fQr(`rgv*gL$e_5wQTY9Q_9bYo(!R1UrWA$I(NuDK_3Ai zq5exrUKB276{JX98H|jd7&q9!*78l4Ci*zY7S%H#D`m#P@qLRsSIYh$s^?&H-jX{C zQihUHPR8Su2?RRSLj<(pN3Bf0TYBKsQ^LooGV>>=A9bK#B3>VmFNByNOb}hjTWDzL zH*-cvLPA14Wk{Xs1zZy2dM!Z}4`18fmX`3nJsinvRG4iKNoDylywFuZe}4OCl4?gY ze$|^(J{?S!u@?22RQ{(h7TTcjVSjHjPx-?t-nC~jlZ{H=hdpkD^Z|HJB9Hp*{Sp88 zkL`gC=WZ=tgB(av6^ zD!c_R)}s7vT3Zp40|&x@Km@+5X#{-_Z!`g&c=uYI-%$w*Rl@lMC-0z3e0*lDt(9*E zewMY9nw@v*i?@#(z6tmSUiq{48*hV^2}I}~P5R$STzH!IeU+`_&JnH8kI&YhdrnD@04nEB}LJpP9x4UM*xW?B_72IN6v5 z@;5#ZzOj|%eK__9u$}fZsvxlYh0Yyzk1w+q*0R&n&Z#>}ge)z^FQz0<4-G;X#ht$p zUIy&Uk2Hp(P#wm@lQgqva0V(R=Q6W)9R`*uNh6-4onAW%{}pt-P;iGpgP{?fU2v~A zt?gNc+oESsOUP&irU{ENa^&HwHa~8a`(21l-~;KKsgxjs3sw&(?>e zFvQrlF=1yGV=y)dxQ`oz>w9ajd~~DO&h*A-s#wgA{NSIBc`mk_MNZ<^iXLEUf#b(j>q@W>A|dN?lG<2&~Eoo8ZM{u zB0l0ikGH%6Kb)jh(<2nhC>7RaG+3S?UQ~)72+ldoG0rkr`5;j z-ZClWz2Q|yoWdr+?;#)7l~kS(<%J5$$DXK{r17)4I1dd-K{PTygTSzsu1J=U$O9WQ zYw$>&R$3kjb1QsSM8GsHda$JI_sv zaghVQd4py@+SQ#HH>3KLFmj={eUE>%c2CXRnb#bZ1@c+`=v$9PyRK5PORb#=I z0LfAU7Ym}k3iVB<+lTmTghuNZ`_?b#Sy8~l0#E1DfAb_c( zaeqPL0Ymi9p&rHBU`CNTv#UtYzeE8hA+`@9!$T|1^b`=%t@qRW$LdQf(3AUl`?Qmc zvEy)r4hJcWP>JiD1p|AMzgHgyHqgPW#cHivG2LnM`5YonptW*mSQ8KqUz_?&an zN-K}Zv)=0ygT_YY^%LVCbFN`h3LuFPZg5aGEC~`=zlU-rs^Z@BSu6kh_cn`-tk>VV zhR@}COrfh*$hGq+En@SibrGmoy-Y^*yr0*M_=A@Vyz`GmS!2SUMI3!x?-Q+YUOqVJ za=J$#(;1xj82D5vJ%CPvO1tG2Nt|zQVADh0nQp`GAndsP(~$%5+mRIIfOeCAomDf{ zXBmDf5m^)0mm)NW;UY-(_Vy>kgJS1$rp8XT=6_3Tg*Sh2w7$DSTx33uui^K0*%pHc zAiQ(ib;8zoFH_npZ-jN_HY`u-$3HFIHA`YkkW?d7TNE_2m)UE4#oHYE*Xcr3l}phr zQaSl$%2bbY*AjDU=Tfk?6{u;etVCxynCvjnd!87fpo?MK@X{cD9a%K=B(q(AxD-J0 zlo!G)eSaQWgzRa%T@&DlkgpyWm(wY2@ZXes4ydzVZE-lv0^XnXFD@Bzuie!98cw%K z+r7)M-A5|Eq^zBx{TI%`t>{nS6_W>O^CrD^a?$DC>r zPgW~hn_vn1uMO~dnA&NYCm9L-bN<UW}`nV-!|51xtsyz=fxag#|4(?bCPHwR%&T zw2{tLNQPHMG}w??O-RkbIE=f9hZyK^pAPa98%F)=G#>!!F|5`0qf2iNNiVqR=z*$_ zMdmW|RpTHA_B|dQ7x57znuwRX`)M=R-tnOO52^3VVx!^9;Q*2A5|_8Tay%WPXGB5U zzfxMBI6oYS6j^)y!XmCgt-O?y1&i=F!H^8NDS8A$hmc|Qc9YjEKjYmqz3W|yL+9h- zMMx!8DnuZvr3KH%R+sNEi}>!vOZY(WigH^?oOTK3O;m-0lR(fc!)+o{1>k)d7>{`WAaz|y0uuj`tMTHmqXMXfqxvl#hvweV`AdOgv99&u}(2vSe%>ShVtYgqVa<$g-F3+oBGb`>=I=y3l~Ffl0r z9w{K^78eVZLfKk;FRD(5Vk|e#S6EkG*~#Z0zK#9OJFtSS`;k$IOA2#d9qk)!nFdg- z`9JzOAO9<^sppiAJ@R5^>V!5LH+8J{x;8Ngcs7SD()CR5^9fO1?y(8ImDCs0XiiU0 zKTL=rJd_G_|d&TQCDaM(BmC^GOoOXSFax~IWEKk^DHt%QQJY+K%bGwDbp zq9pK=7QEuZdVWW^`VSH7KWbwyWcieSo+Ay12;l5~Oc_?~ICgRsvc7%qdEEh(=|3WT zzok^}8TByT$yx25qDW|0W5d#h)-rNeQ^R2?Kv7o<-^Un;jh1J?A@Pe zr41w1t@L_V*wOS$1jHQuk0%{pjg%f&Db2tNWUY$&pUc9spWP@=~P)~J+(IUC*18Q3L_lwZz*RJzUY(rov?Yd+YRA+a(kat$e5rKYibSa~^ zY~2u?%|0+12H^838{~}56zZr!mFb>Dktw6^R+6j6P|~KRiaEb(%*py^WK(zu9PbVr ztGY3_&{@Hls6)+HpTFw04dB9em79e$;z`P|=gjIu`g(e$CUNLMSE+BO*yRUL*Fq1C zXvVk?+nCfWDgGmahlm8fCug|AAjJQ|MG7<8cy4?F-iLUVT82H&7nO_2o-*hvSN{;v z)xbRQ^jKZ|=Q}pXthSq*;V7nwbNhL|%uu^$kbWiX-==1Is{wF}27wmFq~0Xr2xs~k zP2x7py7Cq_#<=lmHcVB!#qLuK9*fCLffO-6rL|bPAKOYpy0v${ZeY@w=WGdO8WP%Y zDHBj>5X{_pGlXxbq^~aJuRr2Bn2oSLVjijz)UgW8j-dC=+AiFs`#+wh8YJJ62InoLI57L=+TmG5~nog4ktZsrFLR6_mc@)a!US;mELZC*PFJ=>*#HJUbX2$2*KZVr{`1AqMDSU0=`dz~VET zov$?4uobb<=r)u>4A9(`)v#Lj1u_S`9J9coj6#tMy@`9AJ%tvD1jz4p0g#YD{V9`t zC?YamD`a%26$AfM#N0^&o0ZCYX;)dxWqT-ti(p+<0Av%R6pHKwFSs$s`~KFeF;%r3 z`vuo-&;*Z2Y;I=3gjNh)18W8`aA~a&;wkrX6nCOmVGRG;M+jG4-3*0LvZ8T1vA!cC zx`Oe}M+jU6qEE!;N?nEmu{pmp{ajs&zH|z?OSDO7^h0BVJ$t{mxA)}7Dq)bfqN}n) z_=h+{p1uI%n>i>zB!ViQ)codsvy3cje47AOYh^19Y1%B%24hg00ylCocnoQvx#+8` zsg5divPOT8i&evKH_YMwdzL!%B~0bMfT#`4JBcO(vPk6LG8y#%@_8TYn!k{6-r{LG zziY|Sx8EDGQyt=?plgL0r!m2B^xj|1wu?w{arS@HIc2^oDw_WeJ$-UsXA*6u@1%wb zBS)YV)zNDTu6TL)uPomGef!Z&agaY&$p)bH_&eR4#E{mvW~{DO7nA}+Vts}{iK5~($8kL3Bw?F5* zM(8x=&;2;1ADiWNy$TeGY<_McNO`{UmX9|mLDO(sgn=CtwkEqGhy zY#q;g-_Kt3fOwxeV^Ax)JkrxOu+~U83NhWfaJy3?M_pVrvoaUCJ&Hc6ZRc{GO{P-P zc7_rUTPTD^lK1W34}#LtyH>1@kY+u~P1nh>{FVjIJ=@o(Ylt&9WVwoJp<({Ry}IDr zFXltAQ0aa_d3YO8V)7Pns5B$NUk=qZ^-wMfm9pR_l=Hy7Zm%aA zIA-ZSylcqW^dr+hF_OA|f)fr=1St`ZoE*MbU>?G!r6KO;C%DZ>WY|#JH;@gXq_2+_ zxVM-Bw2YX2_n7!3;DHBW+Y^ujPI(N=s$19erWb4NJGKgr?iadLC6@Zz*To|5zCTQU z2M;Z*kgRgUvk}l90Nv8Xe4s9k9*`_cCpq&J-rtRf1gT1)cw78PWr<48AC~sxW>q6W zk4R5PPtTIR&GeiL+(FfZ<|-VDafzus5KTcqTH#uEr^NMWj8g-d*JKudja1uaz-gB_ z8NwcQjAgF=DDUPgA>NL=%;x~3M7%QQJ~TY_eBZfq=o%H0vy_oVHufP+g^KZ znlo^7g~!&O(Hk8%J^%JTut&%AZvQ;?RMu{X&76=ne7Z}o&A1J^H!(rWlE#ueu4|+~@tL+^y z_n{W^t~{Evw<@e3FV1ys|+Vp-$QdWbrQx7GX9l~hPe znMajOl~D-^j|dW{)^G5ZcBcnue)c9VgBG3>P_Zli@NsFvr{ zE?`FXIdG3eqX36cG=Jou9b7#wBn?(3Qsm@EuR^;hQV(`^=V#L@9<0)T!PU`t!62f{ z35$w~3avJ$d_x!gHYW;ob#)X%uF=Ey3#a!%L}MC*PbAiVgn*IK$IbC3&XW45$r$Ae zWF-tzSf7gJN4Y+5l|E;!J6*)X$u%N@OlhFK+({NS z7(yhY|INbN3aUt2LYssjvpg=E-pKJ+BQ26epio$i+TI<7rHZ$gNL*ap;0XL4SpW>f z^A5$9r{LIvJb>@={bAlmB0jY3sDLk7o`#60OU&J!zth8CY9qnWq|J=fTOp8egQu6t?LxmTlDTZ!Bt#n^gff{h8kP)l(@b#K-c3^j>fM^H@W{^wQf-OW73W z9+o_rd%!~%1SBjaB}Ry7rqz&5s80A3+$DjobfZwc5rp$$rR2#N)1XA;!61ANz zQZrnw&eF7$>!7C2dY0D3#ii{bY(LQPru}Ir2GZ+Zy&Th)e%I-{Iw%`KYtl>rjyjvc z=?z+kPr%0vFA)L)2VPE6Of6;;NAC4f6aH6gFRDZ%VK{$g*!)QUAhWEhNhO!5o?(3P zaO{8sAX7O{8Of+*V`Ry4Kf*$tOQhVVkJ+6Sj*=+6_x0b8*Z%b)N-`&5gD5piJq36Q zksY3?QX+8!uO!^hTlvA}A5K0mVXQRF+a$v8TgpFG;M;yrmwfL{az8cr@1k6)mteeN zV=`_R%IdO$S0TRYC+kr+*LO=-EEdiFDb&*qJeB4q*C3|qG&zqorDsB7)EiUb&73|; zN-{R>>fE^V4LouYo_P>yh?dV&@GN3eaRu?zO=V;SUbCtSoVz|kLRaawPByd6A%4ma z)%#9K;8qL)xln8P{XWOfz_)~td41tKHz**}1&xO^w8Zr1Dg`TAwZ>Q^CY3CA^cL$c z;0(#?pSUybZ~pRoU*3o2>9!Cl(Um0VmejXca0g0YePq*rhWenSht!;#tw7Vc>PV0J2itDUEmL zPP0?ypa%LwNP2c6dbP-=*>BE09p%Mx&>r3%LP7eFn@y6=U>y;ynDN@Z_NoPCoF&5eWvc63pGllAQ9;i5e2MOji=?lLvPpHlXckP+!e z-H6)5ik{5eyXC=bL1_3vfGQ0f7eWlpya)#; zo|=fsI+|}K)L){QsnuYHxZ3JyIiAem*X=^{!S2awSnIYw?6mNUoofWeBgG7b=9?6V z6z1$(tO#VWxZrgsdYzE=RyF}qiaK{PoxoGI3bjXV)VU7{88tn>Q=g=s9x(&7>XNG3 z;NCAxD>t1pT6hm&?e@HLvRh;ww=TBBRGk#rgS}VL08LDqP5vS;J z>D88OVB4uJ9t@t>whLT49-@wv=il-gUv>l2K(Wx@2>4XWmfJKkxt=MB3q+4+OgmbB zuCLwhDR`VpBxxqu!Ab?=SW~f8NzoP9*I4?GYhP^{1bhSdks(OV`IuRXw)2!jEhwVo z?BVIL=#1uRAy~>H^Ji8>ebl(DI?yC^MI=rFw`=?$hvP~AR;X7#fpU4Eoi2MzI6Ur* zqO&Qi8nDoKD5%!x!L6%~(6S4^~Y^%yQPhdDQdfE@3r21_T}R> z|z`rAPW3u*y-)Bd_02V~Ez(>LLIwFk9qEKVrm2%WLq9 zlc6Pcqt+SSL(Y-I?*Zr5>#N$YdR}Z3zJSF?Jzz%+|JY1x_PwQ+t)^+}6EZ5db>gph zD?vCgmx0S(l165<8*E@VN3t*(`=`y`5{Q9I$1+*Y&6OTY9T!IX>^p;Gp)+ISmN!F1 z-xN^m3hr+@U!GNNx1#L}_}ozkfT|P0l;^7h!wzi{B7cd|-H}{Vb2Itnh5*QBu2BRX z(2a=A>Fdt({jP^GEhZi`dH!4}Aao8=@8dA5umS7YmGcF0F$082qWUKgT!@H+^f-LP zXfR@;I8u_zXB-QyOp-Wtp-)d<2}5ldVD_Xan{N#vM7eo#;u7%TF9c33JAsheIQYQs z4I(rb51auq6hw;rS5jUnt@mM>!B~LMQDk>tfh>1t+=i*3hG2pE+iwj=s3xuY0%Zs& zE@)>PZrl_ZD^oDT5rLs#xQFd1>~lEPxl$2GA@LmT`@KXUnSTKBE;h zoSCw|{v_GEQ>Sgd!$|yhCpLv;>?XuWov`qtBEJ0Vty*@@UZO`gjRu28lc0;B%FSkB z&;22M!AN}w+@qnwvT4&6AgE~%uHJ^I-oX>aJ+kVbWg!#%#_B++Ohf%pg>_Yx#R=?T zeP}+f`fVIu@#K zUi|kHd&74G7j^COP5zgNBiuu@xYQ ziv&BYSQ&a-(<8=J^A>)%aHdvaH-Wl5r0KHQ8&HSReq1ht-rKv!V3&w#U)a<`7)dM4 zfLCXV-!IOE5r%{elygB_m?XY*ax<}Dr1YhiBeme;e%3*cXH~#<&nqj71e@vnd@B*73>? z4N;CVMs?-pOQFS6u7S6BNOD0X$jM0@eF+CcG6X38T!FP!tb2I4FysEpQVgl% z_*S>?PD6U%G`d~~vme*NBLHj;UU#&xqT)KVCuNck4*J+JIFF(x!vytP5efHw3J?VA5NAYA-qO5xpF$R!c!>x@;rg^yXBL~q{PehbDJ2|>nbq={ z0Ojos>zi#^p5+Noa$<@Lu$n*~j6ivW{-h{{M)&$036hVNp>~A9lysu(lj`%A>S+I7NRBcKJ;___a3mO zDWd7eJ_D!>m&eb(y-*#+eoJ>^YW3S$$?@HGuUfl7bY<(B6ftABP#PDvSF z+$gzKM70AtDYk2$O$q(>c$(11i*rHLd_VFGD;M_7br|LYO0a7m8$A5f+0uR3K9$nC ze%O9_$|&8|dkzog{OC>yffB^~vebq$l3#8 zL>$jgs~1drgeY$&k8Zv12(N`nP{R1fJS5c3UaTbJY8wyS=vM@{!v9%9wakB!00SBi zsB@y*3`zDq6BtyEB9N#G^=H5~Z^jEvvD=7TpJte^ZuGZ>OAVH(Jwq2H%#4iX2-x7L=> zhiKqJ+Kgy%aMli9T8&C1qucArJbV;4TGzVUVbO;J0IK9gvi@>dbf|CNzM7hj!SSTp zT`6UNWnpT%lIvJ>SjLaroKt`Bwkp41zS;K*aA_=JEAo2Z&By0WT>@z7M+1rvLPL9F zjtxe%Yxj5d2ua0NLdG}L7d|?a{bNa+g2m@D7-IA@<%AhBIKf@#C4~FugGWI%^=A~O zUnWv=eFeWv9i#vE&##H~;%#>W&y<1N;o78oS}j`gG83IIAcM-xz(`WT(G84MWkK4h zHTWQbyndc)ealY-E;wh zhIh2yp2=?=iy>#Xf1iWD{=PBgi+lo~ka1K$`AKZpnujhh@|5X_cVl4u^j7y~4Xn1< z??Z4}PTsYDJRjz=!T**HeX|z{o-SPV=?fAUZsGnysPF1pJ2_+c@YbK!@wf9qAlL9t ziE*Y2z4y4NDPO|gwRsWD-@(oDwz;d!up7W()jzVQKl-rG)R7Da#~N6-cW zto8i?akqM1zK0O=RsF+mjW}RF%E+bG0{YXF_LA%f%3N2oY`o0{@yPNTt@+(f_+9nG zi&@UxwZ0+zP9S{_bj6-6tIN3Au>pYEsewKuhw!D%M!zhJQm>!LF0RA;LV>Z zYvc;4=fBy1NCtcI>E=-rUaa)j`e`GCOdh*@=->XP76U;2J-WX%;l6EFU|&ccDf)dX zjRyNV#sRmkig}%EpHJ`c8mV&GmB^C01|4?=8GXP=hmA-!2>q9)=HB-e`AqFBaGXSNOXg4 zpXL}C=L#j@eQ9N71qIl{w_|@$T7GnY`%#kh78B^#*B)g}>fDB_!AUjpl~RIeb?lKa z^5(1@op0`;Q^HZeAhgg_n%p5$X&!B3UoEjShcohGYW=VcdtCwj1sz-9)44Aop-~Wl zPIj>2dpQ9iNQpB3r}$BiR+zkKys;M?S;8>HuoNTPjPTzeNNTYv310UUp2ELp0 zK3R2F_fBs<iomD}wDEckecIUX7KOvQ2EqnM5$!~R5yYcNnT(e4 zI}e?rB5uy2E}MCg_;4QH@>@yRUK&ipV~uR!;bSh;%-hr~9nXE)gvTZrLbMYFmbXrI zzL%bg%*>d=GJ}sY-SR?samAow>b+%iH6Gu8o_zq{M@QhvE#&K$QljU*!+pedxDc-n zgO4b*lt)odfN@TMwKWOq98Uj7)mk@S)`Otyx$O#CFHW z!_#Bitcyi}5-dEUxP3we0hRkJ*9E8mEx>D-n zV1K~>w(2Mi;~zYm?nmMBMn|bOoi7PO{_k2tpp5*KCvx=xDF>-crKa5w1_6HLq`pbk Ih#Lj}4;yOXWB>pF From 91b196ea9e2fbf197f44716afb247a51a854cdcf Mon Sep 17 00:00:00 2001 From: Incoming5643 Date: Sat, 7 Nov 2015 14:34:52 -0500 Subject: [PATCH 2/4] Not sure how the dme got in here --- tgstation.dme | 2 ++ 1 file changed, 2 insertions(+) diff --git a/tgstation.dme b/tgstation.dme index 8c382cadd8b..db1d18ef99c 100644 --- a/tgstation.dme +++ b/tgstation.dme @@ -255,6 +255,7 @@ #include "code\datums\spells\mind_transfer.dm" #include "code\datums\spells\projectile.dm" #include "code\datums\spells\santa.dm" +#include "code\datums\spells\shapeshift.dm" #include "code\datums\spells\summonitem.dm" #include "code\datums\spells\touch_attacks.dm" #include "code\datums\spells\trigger.dm" @@ -1517,6 +1518,7 @@ #include "code\modules\surgery\cavity_implant.dm" #include "code\modules\surgery\core_removal.dm" #include "code\modules\surgery\dental_implant.dm" +#include "code\modules\surgery\dethralling.dm" #include "code\modules\surgery\eye_surgery.dm" #include "code\modules\surgery\gender_reassignment.dm" #include "code\modules\surgery\generic_steps.dm" From d8a0dc6b543ed512b01fe8ecbd5b24da9651b726 Mon Sep 17 00:00:00 2001 From: Incoming Date: Wed, 11 Nov 2015 16:00:38 -0500 Subject: [PATCH 3/4] jumps through hoops to save two lines adds slime growth as a define --- code/__DEFINES/misc.dm | 3 + code/game/objects/items/devices/scanners.dm | 6 +- .../mob/living/simple_animal/slime/life.dm | 4 +- .../mob/living/simple_animal/slime/powers.dm | 62 +++++++++---------- .../mob/living/simple_animal/slime/slime.dm | 2 +- 5 files changed, 39 insertions(+), 38 deletions(-) diff --git a/code/__DEFINES/misc.dm b/code/__DEFINES/misc.dm index fab1bae9525..a6ad2311974 100644 --- a/code/__DEFINES/misc.dm +++ b/code/__DEFINES/misc.dm @@ -163,6 +163,9 @@ #define MOB_SIZE_HUMAN 2 #define MOB_SIZE_LARGE 3 +//Slime evolution threshold. Controls how fast slimes can split/grow +#define SLIME_EVOLUTION_THRESHOLD 10 + //singularity defines #define STAGE_ONE 1 #define STAGE_TWO 3 diff --git a/code/game/objects/items/devices/scanners.dm b/code/game/objects/items/devices/scanners.dm index 268440117f7..32fdb40f65b 100644 --- a/code/game/objects/items/devices/scanners.dm +++ b/code/game/objects/items/devices/scanners.dm @@ -49,9 +49,9 @@ MASS SPECTROMETER if(O.level != 1) continue - + var/mob/living/L = locate() in O - + if(O.invisibility == 101) O.invisibility = 0 if(L) @@ -417,4 +417,4 @@ MASS SPECTROMETER user.show_message("Genetic destability: [T.mutation_chance] % chance of mutation on splitting", 1) if (T.cores > 1) user.show_message("Anomalious slime core amount detected", 1) - user.show_message("Growth progress: [T.amount_grown]/10", 1) + user.show_message("Growth progress: [T.amount_grown]/[SLIME_EVOLUTION_THRESHOLD]", 1) diff --git a/code/modules/mob/living/simple_animal/slime/life.dm b/code/modules/mob/living/simple_animal/slime/life.dm index f65100a6d64..1774f2e592d 100644 --- a/code/modules/mob/living/simple_animal/slime/life.dm +++ b/code/modules/mob/living/simple_animal/slime/life.dm @@ -222,11 +222,11 @@ if(prob(75)) adjustBruteLoss(rand(0,5)) - else if (nutrition >= get_grow_nutrition() && amount_grown < 10) + else if (nutrition >= get_grow_nutrition() && amount_grown < SLIME_EVOLUTION_THRESHOLD) nutrition -= 20 amount_grown++ - if(amount_grown >= 10 && !buckled && !Target && !ckey) + if(amount_grown >= SLIME_EVOLUTION_THRESHOLD && !buckled && !Target && !ckey) if(is_adult) Reproduce() else diff --git a/code/modules/mob/living/simple_animal/slime/powers.dm b/code/modules/mob/living/simple_animal/slime/powers.dm index c7862581253..abcaa142356 100644 --- a/code/modules/mob/living/simple_animal/slime/powers.dm +++ b/code/modules/mob/living/simple_animal/slime/powers.dm @@ -1,12 +1,36 @@ +#define SIZE_DOESNT_MATTER -1 +#define BABIES_ONLY 0 +#define ADULTS_ONLY 1 + +#define NO_GROWTH_NEEDED 0 +#define GROWTH_NEEDED 1 + /datum/action/innate/slime check_flags = AB_CHECK_ALIVE background_icon_state = "bg_alien" + var/adult_action = SIZE_DOESNT_MATTER + var/needs_growth = NO_GROWTH_NEEDED /datum/action/innate/slime/CheckRemoval() if(!isslime(owner)) return 1 + var/mob/living/simple_animal/slime/S = owner + if(adult_action != SIZE_DOESNT_MATTER) + if(adult_action == ADULTS_ONLY && !S.is_adult) + return 1 + else if(adult_action == BABIES_ONLY && S.is_adult) + return 1 return 0 +/datum/action/innate/slime/IsAvailable() + if(..()) + var/mob/living/simple_animal/slime/S = owner + if(needs_growth == GROWTH_NEEDED) + if(S.amount_grown > SLIME_EVOLUTION_THRESHOLD) + return 1 + return 0 + return 1 + /mob/living/simple_animal/slime/verb/Feed() set category = "Slime" set desc = "This will let you feed on any valid creature in the surrounding area. This should also be used to halt the feeding process." @@ -86,7 +110,7 @@ src << "I must be conscious to do this..." return if(!is_adult) - if(amount_grown >= 10) + if(amount_grown >= SLIME_EVOLUTION_THRESHOLD) is_adult = 1 maxHealth = 200 amount_grown = 0 @@ -100,21 +124,8 @@ /datum/action/innate/slime/evolve name = "Evolve" button_icon_state = "slimegrow" - -/datum/action/innate/slime/evolve/CheckRemoval() - if(!..()) - var/mob/living/simple_animal/slime/S = owner - if(S.is_adult) - return 1 - return 0 - return 1 - -/datum/action/innate/slime/evolve/IsAvailable() - if(..()) - var/mob/living/simple_animal/slime/S = owner - if(S.amount_grown > 10) - return 1 - return 0 + adult_action = BABIES_ONLY + needs_growth = GROWTH_NEEDED /datum/action/innate/slime/evolve/Activate() var/mob/living/simple_animal/slime/S = owner @@ -132,7 +143,7 @@ return if(is_adult) - if(amount_grown >= 10) + if(amount_grown >= SLIME_EVOLUTION_THRESHOLD) if(stat) src << "I must be conscious to do this..." return @@ -172,21 +183,8 @@ /datum/action/innate/slime/reproduce name = "Reproduce" button_icon_state = "slimesplit" - -/datum/action/innate/slime/reproduce/CheckRemoval() - if(!..()) - var/mob/living/simple_animal/slime/S = owner - if(!S.is_adult) - return 1 - return 0 - return 1 - -/datum/action/innate/slime/reproduce/IsAvailable() - if(..()) - var/mob/living/simple_animal/slime/S = owner - if(S.amount_grown > 10) - return 1 - return 0 + adult_action = ADULTS_ONLY + needs_growth = GROWTH_NEEDED /datum/action/innate/slime/reproduce/Activate() var/mob/living/simple_animal/slime/S = owner diff --git a/code/modules/mob/living/simple_animal/slime/slime.dm b/code/modules/mob/living/simple_animal/slime/slime.dm index 61ab08debf0..02b052d8263 100644 --- a/code/modules/mob/living/simple_animal/slime/slime.dm +++ b/code/modules/mob/living/simple_animal/slime/slime.dm @@ -156,7 +156,7 @@ if(!docile) stat(null, "Nutrition: [nutrition]/[get_max_nutrition()]") - if(amount_grown >= 10) + if(amount_grown >= SLIME_EVOLUTION_THRESHOLD) if(is_adult) stat(null, "You can reproduce!") else From 5c5c24380efd456a1d43d70320d2941991cc797e Mon Sep 17 00:00:00 2001 From: Incoming5643 Date: Wed, 11 Nov 2015 16:04:05 -0500 Subject: [PATCH 4/4] ayy --- code/modules/mob/living/simple_animal/slime/powers.dm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/code/modules/mob/living/simple_animal/slime/powers.dm b/code/modules/mob/living/simple_animal/slime/powers.dm index abcaa142356..286b63ad9d1 100644 --- a/code/modules/mob/living/simple_animal/slime/powers.dm +++ b/code/modules/mob/living/simple_animal/slime/powers.dm @@ -26,7 +26,7 @@ if(..()) var/mob/living/simple_animal/slime/S = owner if(needs_growth == GROWTH_NEEDED) - if(S.amount_grown > SLIME_EVOLUTION_THRESHOLD) + if(S.amount_grown >= SLIME_EVOLUTION_THRESHOLD) return 1 return 0 return 1 @@ -188,4 +188,4 @@ /datum/action/innate/slime/reproduce/Activate() var/mob/living/simple_animal/slime/S = owner - S.Reproduce() \ No newline at end of file + S.Reproduce()