From 8b135e284aceee92c2a1ab94a513d2af67de8eea Mon Sep 17 00:00:00 2001 From: csd4ni3l Date: Sat, 29 Nov 2025 17:58:23 +0100 Subject: [PATCH] Fix checkpoints, add restart delay, crop character images, make starting warmth less, add winning screen --- .../character/character_green_climb_a.png | Bin 3092 -> 2928 bytes .../character/character_green_climb_b.png | Bin 3106 -> 2934 bytes .../character/character_green_duck.png | Bin 3058 -> 2878 bytes .../character/character_green_front.png | Bin 3219 -> 3052 bytes .../character/character_green_hit.png | Bin 3341 -> 3144 bytes .../character/character_green_idle.png | Bin 3235 -> 3051 bytes .../character/character_green_jump.png | Bin 3278 -> 3093 bytes .../character/character_green_walk_a.png | Bin 3264 -> 3067 bytes .../character/character_green_walk_b.png | Bin 3317 -> 3102 bytes assets/levels/1.tmx | 41 +++--- game/play.py | 118 ++++++++++++------ menus/statistics.py | 4 +- utils/constants.py | 1 + 13 files changed, 102 insertions(+), 62 deletions(-) diff --git a/assets/graphics/KenneyNewPlatformerPack/character/character_green_climb_a.png b/assets/graphics/KenneyNewPlatformerPack/character/character_green_climb_a.png index 2c40758589562f108f9b46831d9d44686a0c59f8..331756a79e923ad2c6150245b1dfef215c835499 100644 GIT binary patch delta 2143 zcmV-l2%z_r81NP$iBL{Q4GJ0x0000DNk~Le000100001F2m=5B0Kg55V6h=91Ah-m zL_t(|oVA(3OB-7hhf}LjqlrsFc?;M17uro11viCKTCt1JT_BV$x(Qum7fLXtD+v$W zL`z*%B0OCPZW;(kkcvojrnRwEV`6QeB|?n280Ot`&YhV%lRJ~d@_sXFGWVR%Gv}Ur zXXcJ?y}7yO4*T-`R}mHWFK78gD`+7Nro zlS(;V5Zyj*R2}8Nlb;dVDGPlbRD$MznVQM(%7#^S@ws4wSidWE=r*)3e);l?Z%>_J zTH2T~t)8P*z>SInf5U_pw|`xk5O1EWelkPE_RFb3g#I*?cMp{3cg8R+!q?kFGU^~S z&6$>~ZJ12kMZCUP;}xi#+b0>1g2)IM-COn;`O&})YfyJG|b zIT#+YQwP9e;Tx$a>wSBqR{LG_>DvizYjd(t=bX^%YqERsjrhuXoT2t>^q1V^gWxL$%HGCNqsR7LD$w`@QZ=Ary{d6*!X@I6i$7V%r0@_#6t$ebi z8#T+Ra7|gFw(^dh8GnsvOxcF1sj)4Sx`G*hM4t1|Um_J6-;~R&t!xi9m(oy~hN!U} zPF+T$)iPqs&|f_kwFlBuJ}bk%BrxwKHLiwTnI&EZR36~SUHuj{hzY=^M?zKI*EAPu zqcKWpAj5g`g%tE!RG0#%&rreuh-)6y#?+QYT_WE{@Y$lmw}02vVkID|c~To=7Il|= z&vtoj`OJZJR>N&q3U&0BiCyN#Z_dzpOQ+%GGiKJUTCG;8)gIY$n$0k|QW@5WVH%xl zd+cM-ph5}E!r@BoAEWnGvq&?JdKI*^!p-+;7}OnJ1U{n#_A0ds+wX`y#eK6biDf-z zoY`!p0^Sf)$bUxN+^keKD|@{7#rWKV&89hZYqL_@tZYiCl}(EpX`#w8o6%I0itgUj zgsq&iE@c4!?Y1@pzn5$=jQ1jH;{%bztdu%A5M?^XE_O_&gdF zG#6#;OeUOR^|$E#XDHW6oJPzs^&`lbcXyITb!z^DErAyxQMCWDS_u zWP6$+tbr%!dk7_P+oHm=;PN49t2-*D^>1>0rSnTSQSr&;!{OmE+wOKxeT$CAhs(UP zglnw+gn!zOU)rx&9Z(;WCnj&eqQVVvV(j?%2iuNWu<5R-Tig*6&}-dg^w8uNhE}#O zcR@`;v2s5sb)QA`(=^riL3-RB^(}XU4$+4!YKYI%N4)*7`)z3!_2oP6^-?z z2vF5<=h$q_u&p;V2^E7)Bvn;WwDbCD{qz)mO?pE!=XEq>`-CQ=(sDy0sW4@aP7Q@U z!hg+9m}bVmPdKSYw1^E~p7QN-(yh}b!k1*jb`Fg=#ukXyhT@8{zOKYBEloCLafU5} zQ*NN%b5xdqjjpc)w%NRd9k=jgLyWjF5i=TLKQf>>=O_@dxd>nrY6rl6&^2?#GDRWi$u;9y&fE9Iy`481>znNI4gKuRS8Wu1-2gmK08pi;1^(Y*=>3rZ-cwypb8XgusszQ_abTsP*q_QeL}Y_Xu45x#Yj=w zU`q;KJk+=@tmS!7;TACm=jI6|W`79>R!3m}qz}M4mZ)DwP!W^&sBvz}-i&q!PXF|LhB%&-_ z6>G;iC*6!X($~J9Z$LHQ^E6VIba(z9@3{xf*YUE~xHqMa4EeBrdV}2t>Ph_*{RcPp VwNo(`t5W~~002ovPDHLkV1fxR9d-Z! delta 2308 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 bQ|s$LGHtU0RGFjY00000NkvXXu0mjf-@+x) delta 2322 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 diff --git a/assets/graphics/KenneyNewPlatformerPack/character/character_green_duck.png b/assets/graphics/KenneyNewPlatformerPack/character/character_green_duck.png index 316b2367082bc86206851af7c7d942cdeeaf509d..6b37e507e5dc5b52a094da4d03f972a6d0d80f8f 100644 GIT binary patch delta 2094 zcmV+}2+{ZQ7rquDiBL{Q4GJ0x0000DNk~Le000100001F2m=5B0Kg55V6h=81AhnI zNklhJGo) zE!|h9hFi#`K0k8GF!-l_KucvF-_|QqTdAYC|)D;>z?#qc7d0@*nkfD)zRXzep;26q|H~fiTYBza6T>l^_7>A zmwF~>ebF(aAawXp!)*i=T7RnhLm>`Ng&|=>dMeJS=`TV)7cW&`5vFh8{7NDy)BtwC zF?{8}hHlMB zG8#^Ew`qv1iyDUJseRI?hmcxc>}}!;%^nZA?m6&79>& zZ8UB!F+ez|05`iTuUd6$|5i249<9{xwp4yl!lX0DVkDjyR zprCe914_(*EG3j-_>C5*@SI!Eku!8DAgC~1OH?nyYD$*jPi=tYs)o7>^_*JsQVlN@LSu63st*;ad0$P}z#G~HhS#S=U!i!Z z?@&Zdsk7e@IcsR3Jg_D5)=}5khp2f6R46!5_mCBMRaQ{J+eL-db>hcxVMSP4eE79UkB7NP95cgC8)5?9^2jB{mlMKDitsAPuNf7^>wfgyduv*5mrHk zb-NBttPFanY%@G+=k;}L&6+^w=UoUuheD+vFL$YNcT%B>fl-IcRcG4u7v%Q>YLtBz zLG9Vkq*rwXF~9)>N)D)XrhS{c-Nw40L&e7{Y=7^U=IwWFnVvOTmR-98wazSYr?YHo z+~&LZ01qmL&4AYT>~Bm>`iyCs8OtqMmw3Ucv5GZ3Zp*u2i*td=_gq7kpKAT4`qdcZ z9&xL}b1qC&IOMy(_{qt8D8~g25M}oFt6!7c;iOTiROl`ia;W0`1uy~~H=1$TelwrX z4}bLcD+`*DKH(0@8d4$YB1jFYQ#5uW)QrvalaypI;=(v?NotFi3YWwcGu+tx0K5AB zyiA4$K@ZuL88x6*FtAZiT=D#ehbLIlP1q*Iz=li<)f!@P{&o@-(lzB68}UP-eUMX0kUY^4d9$%>Iko}Zt=2g><*Jm%~v*#0G!K0iC7W@t|v3suDChH)PE$Q^t@ zEJBG?mJjdw)fB5PFlshsasWNh;OlF|S=@LejPzBQ@x}sEKH)g?rzGOnaaWY8Q-3VQ zD!jYLOy}aG`(r7xurMr{cC_i2JP$5*6lV$B@b)6tSIL`2tFn-CknJ7LGhRszIa91c z*h;b3n8|^^3(qb_tyK_P9O{jK@+#TOni#aUKurH< znh@Bmq#`y4&Nq8wNeN6RdxxO5n12H(QoT=${i!ub-bxk09_6a+q%5hB>VaNHt>$nR zS8~nZTn@tyN%dW7L|J1Hn>Fpk0G)?*S*Ti}3dsJ2>afj!W&2U#$E>(x12sQRvn@X? zpFN;z*;-X-z;-{(^iXfW6U{`9Q`OwIO*54j8ZgK0jDX_ZPxFRDq2djEJb%Lmi7yoX zO4U#}1EOB2_erUuo_TSLP7QYRFD4kPSZ2^ZvI*)>id!juBp?x9PPUu-Mfu&Fc|bPmNp^mwy)W*c^mmJ YTV!Rnya9Ql00000NkvXXt^-0~f)n)><^TWy delta 2275 zcmV<92pspm7V;M%iBL{Q4GJ0x0000DNk~Le0001h0001h2m=5B0QBII`LQ7?1AhpS zNklBWxo4VK_JLIrz=e;+xKct=6m7KIa?02O^ z9?hHg(af7S`(yg9{>SPI0YZQfAb$i10YZQfAOr{jLVyq;1PB2_fDj-A2mwNX5Fi8y z0eUlwj>P)omrS8}d?+&f?*Rc-;Q%-=$5w^v>?ErgLT1<)s=?#BAJ%k*z~=`Tpr7AdKUHe;1|bXvoe)6*BGm56$5ZFwdY#gT+tdq}0}=!T7{o?j zY<>))M>Gtn=Z=iyPL=tKL{ybA9`1yxiDQbTY1b$)Q18@Zbpt`g3=MMU>db)hNT>ZpUU4BY`uYY4@X0if*`FQa8 z8Z*!g_}^jj?Ejz9JE{6J_Q8)(8El}#M%8ms4KRWMu*2o)fBBP3%QgYi3=G211pwmA zep~qWoPOJ%+JqTu`x&>vK~SC@C;_kozJEh{;N`!v0IE0%X0esrOp1xwrzBB#Gc0Js2Hp=Nd+t6yr`;3~NRT2o7Q z9GZ7`!SLWm_^gWZL7yX0e=9?@crE*JnRV24O<=l zIRVwYNwzQsibYWYFvKh$?Xos@kM7$38)|^ok_GS`**;+(FZBcfA@JY`^|hyePXHjG zx(j4`qz(cF0CwZMcSr0HBQWps?+wses8Z!7*&f|zpXFC;a)4oK10|ABo@Sq>$$}76 zy3cDrA!DGIyMK{?19`YYO^6WCZMT{npq1m*zb5OKrYalD0bmj=y?eLMjwigug2SsO z9|I#r)nAhJcgkrX2Z%uv`_RJvOKNb^Iq)TE7nBU%1r@ReeEE5i55U&`{{EH#$T`z* zNg9TRQQ!buV7zrPfGuc(12j4Tv`+spHaZ8`x;Ox|z<+x{cZI&@xgPQIjOYP4E(Gu^ ziU2as6+jcYK=bg=gP=mz7X*0DUIb9Ie3nXtSTh1`iHQCAE(|??I834?2fLUb>Dgof;$lTuE-h1}0 zI03MSe}PMoqIVgr1&_({mO2EK0B}mugjU#bs{_D%x;$$Zz025Ycn{sb--8iQ-KtUm z(Cx8rsGYq92Y`q-XB4{1bhG)8>>ff%Z`X$8-&}rAdfaq)o8-PG9kak$rkh`Jv#+pB z@qY+I4uFq_*i~?rH}#EaPx}U)ak#D$oMn228=d7d^QQ7PjT9gvvabdWy=Lz@XWq%_ zx}G!KvddBrIY6RjOwTK$Knl=r^>F$%*OVbsV?uZSsomlhNu$OmsI&{D0AR(hgOevG zui-c@dH6=@6BEuq)7;>sRjbwL3{e_~Dt`d+t4h!w=(yGHIX|Hni^a)_3CB{YWly+4 zx`6;NL#6An3}D2WdlM%@?F6|Al4Ck(Nl`gz*Z|T~qCf!9r(6lmO;DU<-9J&Zr$dYU zAF}?^8URqkAdoIcL1F-Z)#2d@9@#d6HYK1ARV~#UNPvl1x*SOXAPr=!cD3Z8(0_44 z?!IJKJ8abjK&q!8#M|W4HbMIA5Dxe!*%6DpPWFr{L7h@v0AzZbhEdGKj$D&Ivz2TQ z1sMFSvw~I^0O-G$tK$L6thu}hu=M%)8NA>)KTjsC%Mf;Tl*pc+ozd6ueO6noBSB#r z6Lc@Bm=6LdmC5q}KM$rveU$;^Gk-d7K=s%}bv_WYR#-k1S~iILWNVeFn6iwOk8PAU ztB2#%LWa%98t;T-rgQP~db3Hgx;kyUH{-qEuIGV(KOb|NVHCy?L8|n%vQb;jSl%xW z`fO+L0f<-$u|@>7a(OIEzWzA2|L30*Q{{5asPl7^{=NVk83H^r;!}|UG=FMHP@Wn~ z{?V!Q82gI(Z>*C0&+_yff*@}LAVC5ATpLTIZQt4S*c6nO3*a9Cg6^T{5}*M|p;kwR z4i)N*kIg^?2jPpJyR5#)aT8d z@Q){I7k2h diff --git a/assets/graphics/KenneyNewPlatformerPack/character/character_green_front.png b/assets/graphics/KenneyNewPlatformerPack/character/character_green_front.png index 9f131647827501742e22e74125cfbe5db6012ad9..7e09c4a4a621175d7d1f627310ea1f074833f88f 100644 GIT binary patch delta 2269 zcmV<32qO2B8SED!iBL{Q4GJ0x0000DNk~Le000100001F2m=5B0Kg55V6h=81AhpM zNkl%2-)1gfXL-Yki?m`T2Hk}J+@6zh)Nej?mW-){?1JF^l~qk`<+pe_kEsE z-g(~V{V_8=H~$mr`9GtM^h5@tTz`>B@9@7(9U1IzcWCrRPx!~F!-J!pNTz7$$Ecxb zAd*@<7#NB`YOlQV+Ar(ne{iiY?MU!oKp+CBLpPXTWAoSh-@bi2`^Nu)w$>}Wz5f0I zrOaukj4V9Ql>Z)hlbQ7Ug~5+H%o@76b;fmh)}i|gHEOO;xA{&`I%cc9{>u(& zX<^!^L+p*NREp_>>NdUEFw%dg{9LK0C=7I=614n9=y|#3H>?^?r^ z{nLAUpS@#mZ^5sff{9#cZ*7A)Y(TE`bx?;PsW$hR%6`!Ah8h?#=6^8_COsx~0I$Cb zG*dCDl?-$lZwSO-G^|sH!Exb$^un+A=S}GM@AFW;bZ}4yrwwol>C{0864cl02OIN7 zE91G@*+L66dF%F^g2gVIJ^-hBeMv@^Qz5G5I!Vu|CrQ^6L5X~OTVNpuHRkr4Oan#@ zVN~n;aJ*2N#jNWZRDVyR!E0c%UPs6JN}J~_qr#f9vQN})$sC_`nerO7m0uz1DkjGR z@_YsTrBb2t#Xd@DYTOlSnYx8xsG!|CdG14h^-5|lglGQ*j}-w;yIrWQNyMUILvbCH z)CdN^E8jnPAhPO-+m+h7EvW5Rel;4u7N0kvFs{YEVJDXq0g~sD6?4D&j=lChtz_KR?2;t7er(?Ti7Grx}&J zeW+NmtB$II3hkT=pe)O&=-o+ugCeTsO00kySXQ1PDtULOx&bN(Zoa^Zie0JC-n{w4 zJ70CB0vIK~6ZNI^j%uUe57h5hQB4tbm%O!6fYd)x%YQ#cy+_^}H4GJ0{%7Nds8i&u z%>%d=F26&~sX5@Li=L7?M=wKYgM8nus&f|3udk@$5m@o%iVgFe3N^}Tz%nX)mh&s@ z2A;ip_rW`t73wUuqgHFoN~l?e)JNoNtOYP>t$rYFODe`})mur6MjVwgq%M-{vo>40 ziHhB|{D0xYk$2pamxmtnu=9~rqs+o=CC?)WtFp%8e&7*R9nI*}wMu2pq{=c3$V2kP z;DwF7%goWyU*2(aPf#gq+I$lCD+B5_bA$lgPbI)rUtIe!&zHI}LR{jRv;v^UX>t9ux;EZ3e{ zWYifpTooz~gl$&8xZ++{x%L!u`Wf0aY*4YW58so{3x;z#jw$TKb0+l>b6JF@^4m^% z4+F{7SbTqq$C!bgn3(W-$0|-t7}QDTaQaL}Ri)wv=H)4qft{UT(sy6(U5|&FYRjl< z_kV`?2^@*tch+^)(u8S)f^+Ey=Hp;8{KE*^7@<%5}pgfKhCq*5P}=+83n0m16n@%j1r zF`fxC#Y8uGMr3k+j1&Fna1a%SZ99{;Q-9}D37_^B?v5!Itu*d5)aOJh6;_1yxMi2@ z)WyX)oOp~ST55~)cT-eJ=V7ZQ*Nc&8`}|V^v+3K^>>43%<^&I23Q_qB=Dsb`G9N5_&ThD|Lt3F`#CW42ruC<9~S;O|3;( zmu%Yi#ynjCjiF%<5+;p9D{9UIL+0xtpaw^wiq(e8=#WY6z@l5Mt^hW~MEg?qb zN~DitzAb^W)gwv zQl&1G2-Ss<%?k{OJSssFXWD9QwMl)pO;LzS7en4X=iK>ea_=~?eY{7$Gm751=bq2p zd+x89X}j_-tE~ml0%!rW09pVofPWT13!nwi0%!rW09pVofEIvX!``;QOoH^76!e= zqBnp(y8UP0PrrXRf1En~Ze3c&O6c@N;0d6cTHon$Ew_AkgETiY?z)Bqmo5r`+JDCG zVSKgh8i6))&urJJ8N9@S2Y&$apZjL&S*}=b5G>CMysT;tp4v9MxfU4wr+ zWL-f9&$!iG|9{Dqe}y<}j_kcn z0bm1+Z*6^L$JW+Ny}LKvBLdVyafKVKKyT@22A~Ie;OZ7vuAcv&E|sy#xWzbR5xWpy zy^IYY@E^~+0rGK(M1vU`VL%v%LVzCdF|$K@UN8Qq-Tr_6oQCwdot+XGt$>kmFc1QC zL4!h3rP9vIwCmnO$$!bobQLsu_1ct;03&gH2aHOkIaw440U!c$C6coPK91;2%SfV5>Va+vb_g?`vL&NKd2C+1ws!0?jSS>7AbR)Y!8aUj@TFghrxp{cS)O#3i2nAz5#-KLb7h zpc71e{sPBqKK|GnKHVq?s?{V1*d*(l!fwzQAb>?+88@jw$MD;@3ep+}m?CSyAM_6Z z+QjnW`Wb+FQNS*Q2wz<9`5T-5daxv1uOz({}%7=L1Mf z7yxM96u?^)0VujfVET6v@bowVkoAQD=na%M5mITMl({H?r*GfBVdqOB05G7e{|VrQ zW$gz52ckEq*D?UN2w;<}{SHJ3@DVld58xJA`vvHSGN_1;WnTbeWbAh?z$NMYd(@P@ z7wEAJQ-8$i(wT<-%Vhh0(dTT4>w%Y4#setOSPJr?K56&wN~4jO1Hj*ny$AqcSMc=x z`%mngw*gGz-4%=FNz1=G4FMjIt^XAfOoxk~Nb42=w(lZa`(|8iZc9UeSu%ZE6Ryhz z02qbypFZueO%LJeAtxneoVd`D|BZX>y$6J83d2;0f7(zpHR(HNgp=NDvz<* zc7NEuLvp7jYZJ2^U_v+!%K&gJTIWU0F6dsBtc`J_+i(lQw-;gntb+R=NXKcHpI8Wo z1}&6y13cg+vrqxz=e3fjWY81KvmXxe7;+JejEu0LQ!*nXE`U*PaQIXf0a5_m9=$l^ zauH09a5;C3`VHn9HCB^Ffc!}*zNxy+Z-3~plB!4GipMbchV0k?f@#1L0LEc?49eU; zJVT(xlF6jzNJ>W!jm$WS%br$C0s3KCFfnVi!eLk!Dpld$4>15FPbs|sP)}H#-8VFp zYV1B8HnZ(x50t;P@$kk3Ul=S7?H?Z>@8cPE_eV4OSSHGHypL;`0r?9|IRK2uwSRa_ zjUHPH*Qtf{jUii(Y793g@;7Hv09Y5*h7~odMo&(T;lyJoT(#Fj>PD0<(z#pBW|d*E z>}WO!@r_|9tEy^NyKzGP`FXM%HFRuCXGb)hWfoc7B+FizNC3#c3d*W_b@#-j3Z5>7 z(LYnjLo0{@u>M1uN`iK-R4OO*bAMv}X-_+eR&|~Hs~QqCF&E$)(~PER27q1|4OfI3 zx~>#-o%`3cjC3p#0>D%hhjIvkm8`1@A?#L+-@DeomFRUv0ZtP@jmriDApqdV3IziI z$6QrWu3nGs*3nRSR3ZNb?q1Uh_^`w;0E~h0LV*Z0Y6Dh!LIH+w)am>>cz;(C1)L%b z0A>qS;P-t&J1%n#0^SBtJ|HlSnz~8}2|h2G_s^6OZwovC=(ajA2OgC(*px7@YS#T1 z^kx8h`9j~UgQR`sp{WT=s%=h=ByIi?z;6>^5GE`Fw%S&8skC@4Y57ky6NESq;%)#5 zAfSU%0xbw#$MBEOEE_){l79j8nVSt(S_I-b7|e?Ot3d#WN4S67u=sy(NK1hXtoc-W z1QBGC_zz;nBy^b=4urxAkN|YMKb!-A#?4T`%Px}v@q{dy4c!FjA(++bx>tjB03`mU z>jBr-gTX8wbr8TkU39pYe%&WulJx}e8@@sOlpvdBE=Wqud~Bvg6n{(#;t%8t3<7s& z;3C$9rZ|A1i2Y6@whOYJ|KA2sEja;f7yiEh5LSw23PxreV_>w3Sn2SLPV~CmKL9vN z!lZyFPV~6mgq7=KD?M404Ss$BV5c5e3tadt5GVR}M>?(o&r_=Rthi4$KAxBaKm6m6 z4qJKxDn{~9#4i9ntXhb})TGhW#1|UvX1Y#0!e8`RFW;wHx-3h-Z~*$U%TPd`e&GQ8 z>snBUW0}#{VWfNiqSzOJF*|kyTyfSPK!kID+kWLA&P>^RJB$-u00000NkvXXu0mjf D8BlG_ diff --git a/assets/graphics/KenneyNewPlatformerPack/character/character_green_hit.png b/assets/graphics/KenneyNewPlatformerPack/character/character_green_hit.png index b92eb94018bf6e7c2eaf10c48b59f8540350bbf4..b22c8abb55971d0d434024b345f094ca67c7ce86 100644 GIT binary patch delta 2362 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 T4s{Z900000NkvXXu0mjf%IcYZ diff --git a/assets/graphics/KenneyNewPlatformerPack/character/character_green_jump.png b/assets/graphics/KenneyNewPlatformerPack/character/character_green_jump.png index af2071196e55e94d011c82b3e874f20358ca1bbc..a28b4469a99e49b581234161c5e3b98a643d0365 100644 GIT binary patch delta 2310 zcmV+h3HkQU8I>3ziBL{Q4GJ0x0000DNk~Le000100001F2m=5B0Kg55V6h=81Ahp# zNkl^WK}?o!On0b3U%Q?@DWH zX5MGtzIijVKYX$OLcaeQHROx>Cx1*uqr<^}O$`M``!0*v+VOH-?hTQ)f05eN_J*bujCZ`{54_3PKuujUR^TWy&Bs_i{W zxzSbyS@<~>_6)qin~bW$prQu3qZ_qTQ|G5H-CSsqyNYg8P{*j_w`%97gMYW1i*0P_ z{|;&xq3wn9@6dgU?}W3{T+}c*`uNNFmoL^=*7+B^Y8BlbjSQxaQAA}-t+M*_7HM(e zrK1k9Lj$Q4(*@D&87oX$5yNR*edKr#eadnVYRL`JelBcg_?bO^O<5hrlv*_`pHzq+fg3hHM40A zevU*`)DToPtd^^44_BTutH;397F>dhynt%A5R6m|SZ!)8R z{?Tw!8-K9ky6FhSU_2sIgJ8JuC#k0D{ijaow{K6Oe32Wifl*kd1|Ud(e!y+*sm#kJ z3b|aV3!1)ibxy!ymp$NSi*{s9DnxbW14+)Q)U3foP$FNgTUdxei<|vorvayiF{)Ji zL}ZrphT)(xSq`s2n}1b~UFw@T%c-!YEbV^S1=Ve4JZEqfC2F_0MAT(Wjy1IVFc1AD zQlat*t6-bpYQnJ8b?OR+p@HpI(QtPc`fJ#x4nuf$caPY%yJSH##sF$}8nM{0O_pdH zu&GfD0M^~IvMOZ^q;{`b)c!o#LI_4}DolYhN2nPkR7FKBwSQeA+gtFzO@&{-P>mUY zgamc=mWf@a#x1fvYVq9iSp(~+gBxE_;yUJ2k;$9dT{737Cr4-u=@T}oFtgS>oz6k0 zb4% zY?H4)Q7dVbdVf1x(m8dGd zuyC{tr-JpS2X&MCnh~dzqSssiWqFf|=5Fe16j7^&jkTZ-EHBRzm8=I-4G)zpZjpz@ zC=aAQdj0wpE1w@o1u)9~P1Gf{el;&raTL5l{eBVEDSx7FlQo>FU!wkndT}}G4YHQT z7S01y{#W}_)O%!H7pXC*c<~lBC*}YsQ)Zf#Q9>C)+hqF|rm$gYex0X^JJ2d;1NcZU zh)}VN1}vxc#kk_tz$2=7AyaecN~_ft4kVQ!^$ywI#^eo&>(=r+QeC2A*p}I1S~k>W zNd1jWCx5GDa+atO4D7r2u-%Z(7mc36#gCyZtHS?}$nss0en!ld8*Z@g@VbXC>Pn-r z;-vC2j7It$8XoiW2%A*69e()!{YSQevo@6yr*F>Vt}>w3$?)T3vxyxUHK~}fx1pAO zmIdmpNf2^NECcF2GJ9_{n@yk&SyyjxNi_G7bbni1U{eH;)^VYXQGVrS$tI`zE$T4# z7q9<8I9(&d(j_il#zNaa)pFE&rI&|vrB6rSR2PYf*UM8R>G~^) zO`&xYso-irrqa#fJ&rwbViQCaW|>kN8y>Q6QCnvlF5^L&8p8YdhtF8E!$a65dSMS{-4 z`SWK4)|Do^WV424DSdXwKr>*=J%p*ZJG#B6Fv0fpEdAD`iecEXnz zrzzr1>-6m>a6TGSWp|e}r<2Env~Q+eb3KDl`DxCCJkwj!s*JmDL989^({^s)+SMNs z9>n@+X3Z(63|qZ&ExoVM_2hIFW`F*sf%|OV@c`0CmqW@~&d~E!04LKj@!B*i&Npq9 z`@-`fP91mqs%P>7mucG46)MQ<7f>Ot1qoRe52JCgpuEQVNVlb;!nHuw4gq#(Ruf~Q zYk6C|Mu6f9;G{;xkyWKjh=is!m7x}nq*))Zh&ibA)D0hoZ~|eZK?}f&@aMjxTMfl=zBbYj>^31PO9sIj0Q z(spD5Uu&c=3z4fUxq4w;5cI{El4=TKkuQ=`wOF!ypcm0tx7pnryhS&_KqzEUYU0O5hus5p9ono~pB37Jq_uLr*|iOMq# zO&m&Psl#&kFe4hfkSZ=V=xR6|9kO0a4*5bsT9f0c6vf!}az_$GGnp70X!%=y|_w6G5`Po07*qoM6N<$f&z7W-T(jq delta 2497 zcmV;y2|o6f7|t0XiBL{Q4GJ0x0000DNk~Le0001h0001h2m=5B0QBII`LQ7?1Ahr^ zNklD)2Xn7Z|`yagAZXyJ-DO^e`-i34*2&Ic|LKoSEOK8en zNqC`~XsL@zgsTg=ZW<6oq!J`L(_Z!7TANtgS`-qciy`lMp6ATu%w*=wg-317s{qn-K2R))# znD7>h-T(sh^`Cva{`SrIG3)wUP_{4czfv5GbPNzg`(JbwoWDMgg*83v z7W_Nt))m|UMxmCXQR%Av_g;C$v_fpfEj{xB{OcBoE&vz+WyAiaoqzdP#UEV7SBSG^ z%0Ai=06O6D!NC`H9ULs!eS5<^B0wwbt?>eD&|3yO0q{c)+&tha*xCPKQ5jvvOFV`w zauf1ThtUDNwiz4ye-y0%#Xnf`j?N5D7?;MO6u=KQ7XBh_*~R}0tNkB8UO@UHFSG`Q zq=SJJzy}Wf>l0pUFMrIYlaWj+m8*iLZ`_;{2rv>K^J0r`Q6L3?2$=aqGIzk(tj0w4 z3F79CK>$wJj*M{07d{+^jtKbPivY5fXQfv709#736|>eu|Ng@i?F4`PluqL zhWT(x^fXB>?bq{Ky?}kFk_iYVo}MoECC3j2e6uZMi-1}Qh@4B1E4-nWx)qS zZ2`bMJadMcv9)gpfCQ9xiOSxCzuN+Ug1=HFx(6aA`_>@T36?4I9+f@YlXgUB02~I- zDtPfFSXjl*mw#n)2B(cRv1zj?Xy-LA9FU0Q(i>|4G^noB@Ko3Wo3#RcIQ1otq%1 za)3E%0l=SV7vKc7kM$+BCIGuAU>`&XV24U~1h9RweSdPYy)Sk_(FHaH0G8kYPI?V@=mev8Vct-&5Pz11{H3$s*76P80BmgSiH2}>)IRhcf{i5Z&1@QFU zySJ>0c_{!epc?-Zz!H{zJKrV%4n%KJzq0hS} zqHI|XN8=B8HBXuVR*Jzn!E@d^PHQ3=0Gv)g`S|fOyPydg0MyIs`Vyrn z4FGni;OEIw3FFhLBgz19B)AV1vDdNyFsmCAI--~c01v6yN3B#U0f5t~rF3%&d$YOE zq<{P3k~l`TOpA0OjT!un7mJoSfKwDo0R}J(c~$=s+FMJoz7-ZXNv5<+{mDySDyNpz zQocXCr$^3asWIfzkhUrS1o5Xl!&D50UjJ3@gfQX zkcEKTDH#mM<(EgOi@23wYAUbV0ZfB=(0?sOQ57{T>4k0pcux5nR0lO$2{KbtkyI*` ziI}IQ$s^uoaRmfRROb@{x06zs5bAd>NJr;clO;7jMKbLfqnH(PmkrZC8!gMV?n zZmlyZ>7;Zvb^#b0=EK|Ed98MOTDxHHadRV>l#A9*={l`N*HN%b8kgKglmhh8y}EEL ztz~c5jJl&u{ZWs;MyA>%*+&OBFUX_-BXplSJj;E{D!)PlSG8!>=G&wBD-M|@`?KHx z={*Da_MGiVjqx@Yzq+bjq1dn6(SNGg4%Nvxq}F(jV{ZT7Vd-i}3P882#DOLkLprI5PEnO~L;MrLK7X!*Ish0G$H5KSbwm`UWE&O&lw!P~gu8v`kr3~h;@z2a zCQNg3LUAFW6%Z-iDL_bH3K&YVc2yMnuF(uI>plv*05lO~R5t~EiMY;#?f@bGFboHS6ZjBS40|^ssI~}dW?c}(jqBqRZhru}z!}N3W)P@K ztZAM|$C7oyeoDF-Xc1t{n3{EjS-5wcFpkaC*%)@zR0BY|9cvX}RG69xAz!yu%3IA_3NYexHtcM1{kFPLj*jIa}02QAjs6pqs88ysPxengY$U&!^1+Oy8xm7 zx~OhGlJB)HpJ2cB2gths5c2B?!|guE-yr~-lloYE1-ffK6c+j~18WG+8WW^K00000 LNkvXXu0mjfT3dg2 diff --git a/assets/graphics/KenneyNewPlatformerPack/character/character_green_walk_a.png b/assets/graphics/KenneyNewPlatformerPack/character/character_green_walk_a.png index e134fcfa010cb50cbbb5c7542f2458f36e8ae9e8..327af9712e68a6f84c5545d62619e12465f43983 100644 GIT binary patch delta 2284 zcmV7?nX`FL?Id|#C%07kb(QF>naccOz#+UQa*ME)G4q8UO zff_?-XXVQ`=q}|q>1;F?HAaCx{PgL|C;P`GUa^JYj>Sh)$0?&KqEXxWd5^TZ^3+j> z*x*Pi<#a`Md%DwcbpO5DL#dv!5E(%wXzfp-hqZmLVbxi^E7>46>PwA>p?>x7@K1K# zc7|zd=br-a^AD8eciXZ$1k(n* z4adExlTfv^&7oV~5pF)Qv`HVh)ZoS|@HXN>#iVuwbjOSNr1_Pp`2;_sp_os)sd)eQ zUcUT@*NRu1f{9#+cYm84UT#BQ3A?Bh(5ZG_GS$4GUmfaT#+b)FFn-J$(h2w1&jIiLM^O9oh(*JW z`!G&{?z_DUwv4z-WXF-rJ@edNHbkjugqE%DWdL@_h@QX=}u*zZUE)^OR3MT z>p&h=6&dQnVtG+e!P`xJjv{K^w6Ox}z_N0UsN_AGYWk_{V47xiB=y1b=g+M2<kDmqkk@tw?d6W1(m<)d>8c&Im0{< zQs%6+7pO(K4}kJjOBodPmV^g&7)Qg4y3V=aJ5YvV0xSD|9sHmt?8YI>I;^)b0V7%J-) zHrLwQV}H1QQtlU>mSFQ^dY09(x4tFUjiIu};(p-PG3maGy4h@QI;pG-v+)Z#V)Eh= z6}}GNKR$kMT@b8IrH(V?^SG-FsJrC&9ug3gcNr7xBj3YoL!xFlLF!v_8Bp(#+c9+Y zu$%$hzAnBe{UR^0Spq2QxKw6!vfr57PgE+#)_;|8It*E3^*>0rYv!%FZdTsLC}pML z{m0DfKD&beqsG|#T~_~i-TYRShIg1#+R!s}6O%}tgxc&1f?8Qb(9cH(L zi(#}{bqxmsQ1RR*3metSMX&c7t{FFWZf?$MoqBa{PA;8i4!vmus4Z;CP=MV(YvO6E z9)IP=7Ur1bhP#eLu-A!--7XrSP(`Dsd-UPGZrKMbH(Z)R=)LZmIzn5x=q3X+T8rGS zGQ$i#utvUADjD|sN{-w1$~un~I&e6EZB>;_yS=ls9$slzZWWcgJ+K1PX@m-D(nYn5 z&$wn>;Yy#L7G`H@T^F(Dy{Tq-=HiTBX@8F{hPo~pUALhv+#*@61?M-K8b|k)gUKfLzbYG6Re?2EEt=Ccc4~bfUQ4oev0DBCrsAAIt zA~NvcD91Gz$e(zTtNg*Kg-m7^$7l$s_#IwztfKv+fkRz#^%h%hB<8q1YX=;4 zIM(z!=N_p)@J}~4U9an=Oid<}0e1St)`ECMrDB%#dj0Bj?#M$k>G?WA3nD&Q;)Em~ zN+hE2Kmg}O9dm0G>i|yYRN^!s>wiUT0Gy{?=eq9mS4i@#-ZE{jrFo&NR8VA%O5Y2d zSnu=KlCFzBrZcdlqFrlZzaNf|reeEk(5a=)Yv@H=N{uC4RHou1sEIJOmF~cf6h`ZR z{yM=PJmd}iZ(%XFlRnfqoxN)rYo7Rf*wj!u&2vz(%W5T@)d{O#4n!H+(0}h#7thI4 zdaGp^Hn;U{SlE1zc~TS9Pg@*I(dG-6GfkRfJkN@usq$v4CAa{!24pJZL=>}{bK?a= zEa63ElS)gDwutkbmdcASHAW^&+t;enmat_>dQfq*1qO1oDd$`!sVY+omrp|aCl7Gga)Q~U`f*w?PsYNQ?K0LRH2cltt3?^WYj%%G1EaX4n zMTJ4283Ie|rRS42k+8ZP>QI_s9HW4@tWLXT=MyGL7(_vW%JYj9HXiM3S!OsPW)x|)awPT{K zgUWpAE%DHHDsjmZzEC1)t+TPqAG@O_VhKxb?Rg3S delta 2483 zcmV;k2~76;7r+@IiBL{Q4GJ0x0000DNk~Le0001h0001h2m=5B0QBII`LQ7?1Ahr$ zNkl{z3D z^M3p0&70ZLWZ=esECYRjK0qI!4}Z`H=mYct`T%`^K0qI!56}nb1M~s9Rh$?Ij82;p z2n>z?n*bBOkw%M54Gv8HD*)rZsaESurv3jofPY$Oo&4bIurE3T7;3uy;OFh^OH;Pj z_L~g8j(VaKfU!YlqP+Xdov&ZNUVb%yf#kOfrWZPCw1c_>to{8gn#I>8_kY`9*kx5l zy!V4=fN^&FyZK8~zFoG+oz(+!g6C-T3NS{Yzn}khDZlQlm9ge%Zvp&hzr6a*gFK{I znD!Qn-T?e``%k}o`Szvx(<0^v+vtQ5PXwL-#;Eu0*7DiypZ7`DR$n?kLxRCx0Z{+1 z@)ln1mK_;rKl_yXoVvkF9DjHKAp6^2nK04AW7Gu`TD#%B%3!Ef8G*FaXMy{eRtd=3f-PGby}4 zoV>02#I*ph10KD7`x&p*c6V=?M+ES~!44_B-GR|Ed>w#s7=gQQnPl79|L%}7b{W%n z1XbiFPzo>(HdafeGmw0{_+NI~|Nea$%GXHe zYzLI2$v_I=gAOg78Gl#l?C!GT-h;__JY54>xOr=dBfv;}R4Sp`np+e|0U!bvv7J)M zJ^&+O9i(Q-!mT}vKw;d57fQdn4FnkgOv2^6**RVxAqyp7S!1$y)%dc zSuT(Pz#?qp?Cc#}+^Tmjt}{v1?6N@sn++mI#T5v{E&-sOXMgWdI0poEOKMKJiTzN( zdfTM=4#IG#D}W*B%6Fge+OX`$bO}Ih0ST~TnNyWa%Mt*{f*YSu?pi}IqDuj4w=96h z3h6>0jC2J6^Y9`yve?#sI{+l0x+XmQ-4y^R{z{FQJrK0nZwW$1ut}8TYs_(mpi) z40HhigJ9|O^z{7n{CAdr_>NDDf}mDQGJr!+K0W_YIt;`B0c_$N+W3(g4D)v_c0pQW z086Ni_|shjpd4a*irxayE((kff&{Qf+C2k^*v4K;Fn}EE^^}q_XaUU9tH*K+OpXBZHWt52-0Q@bs zA_0J>f+t1;AKtuKw*$oS1`iI(9FwgK0q&D-_bVcp4mUrL?AZXYi#LtsZ$@ulh5*k= z^+}`KH6cdf`iB#^ezG|n+h2yKFuiSA4zs`qQh(i)#-QtS!Tl4G$1MO`g~FB-fR$l) z+#^NoJ;~##3;=egAD^6jG%j#K6M#lp!(5`YlmWmVDSm_=kZl;s0LIyke1z8~2M{)m zaRZSr1Aqslb^F(Q9sYClnFH<|Fp7=1gl&YJpx z^MAJ5sm5pDH-MOV>&5tqq=MUemi({RFUGCj-MY(t>MlF6jje4mb*b*m}W^Z+CV z!B&+3V8Wi}(v|APMHR15OB~oFRjEQPs5*o8Er8BE-~ce%y)b3A#R(i}$f|Y`Qh!y; z1D$t)6F^VRUR{`1sLgmpxy@C&-LzlCXSL3P5Wc2T>^B#^YD%cq=I#yimRzJ%wMmfc zVi>|6Wz0cPuV1m(Red&8oTAPfZpJ~$|Zle3C(pe1s^5Q^H3&w%w@0)qvYARdn}csxG<0Wqf*^(KNL3zpoZ zf&`0I+9UEt(82kEq^ep2Qe_OBB$}VV0C;>Qs1}Qw)og@@_XGt* zU`#I-Ed;P{WZGcZX)O^^oDYkT5XDcW-T>GfROEe-z{yq##;k2KEq@%L?SYIfMB#x* zyhZ8>03Q&cE#3z~=Pb!dh6j)=#ybY!d?2%L-!kX{0Pc}!I`0FtKjLdS**P^$8Iy}o z$VINlxm;p^TO1<*`5%s{O%C{mE$f2;Saae!l5+vXifg8IsQ`IM(JTU5;R?@7Vvpr` z2gvrvJOPaHv8~cxhkxXl9`eRH`|i_`n~U%qj}kE!#xb@FH7dC&?1VouUyYj zd6*5&leA{6Np{?BG&h!5We-ad_w|5nWh%S<7J^|fOCk>o62BGggC6F0>+tbZpm#?) xhXRAf%GmGmu<*D)V2Ia~#sA;`U(hT08*t)di_@%00>D%PDHLkV1mU`kTU=P diff --git a/assets/graphics/KenneyNewPlatformerPack/character/character_green_walk_b.png b/assets/graphics/KenneyNewPlatformerPack/character/character_green_walk_b.png index 8852432b767af1a114802fc4948fbf117871d741..491f9a1c420aad7dc5f822d6f999590012131cdc 100644 GIT binary patch delta 2319 zcmV+q3Gnvy8J-v+iBL{Q4GJ0x0000DNk~Le000100001F2m=5B0Kg55V6h=81Ahp; zNklvFIp9$po+4;Hrd{*7yUAn!(;6;saM>neHsH<}+`T73B zHo5CDY#!7w4g6O1>YO(EPyI~W{iP=M?70CoiqPi5)eZER;+t>|nu{7GM}MFG$8`0d zx31*h8oJvZ3#NuCqB^BoUi)Kn(9SImpr2Z!eDo@?G7uD)Vgr4!CoMdt9`SKI@1us8sCUU{w?RC}}wspvrE*CWdNwx8X ztLz2+<%HaJt`Gy z%JMF0Q!+>MCf96R*MBlmS1>u&$?zqNmr8|$&vp-CQ(R4&w%Se&U>IuHZ;dQ>VZ1se zwG+a#yL-a6-DMk^H3O*aal~TBCYZ7vOnW7@p8^2X2X^b zGHPHx%`*8@+smTVGC#2UF9gD*_%^I9v8w>PNQisIy8LEe|ZV7i=n6yQv>hM6H+-YeOAa z-ku{WSqD>1KiS+_9u~6{NS*okfi-`48BAsFqvUs@K9|-BZ5Dh$y}6F+6j67`TAKw( z{r2qx+g|@3bpnlbDy{?HNX_4(PLZ*;4%~qQuRo(+sDC*C%9fZWb(GSE&?eb_h9%5i zvv7TVNe3Q5ue=2CnO;<(Y8y>hPKD2MeTBP$na}&IegCyi&7&*Z+fC&}S{qUyA#>kR z3t-V&*(YskR1Dh+E2bsWyA7#-lj)4bOE*zt7})*&?`*rLT`wBV!Of59*;c`9CCl$C ze6U32hJOd_N8d@)F6wHnw(6wvHjKtYGQ{9T6e>IpPk;Xhw|gp;62}tjxT_7Qo7`|l zgjG-@;*@Z7MWId#f|6Tm8&IdfjO~!>A(e``_2M7WL$$!B382++rHv)ob8ZF$V#PEn zK5D$?$9I&=HM4B38&z*(w6>x(y~wSmE&GAPzJJ$-@!I6a7njYOs%TBAu7({{eAa%r zx7T9Z-o?DzKAXfWHj?@@dqgI!MQ}B7$3ex&HW&9mt-TR9c5G~njZUF7Hm0_YLvPTG z;;KT$XZYtWe(H=1n;+v+2W}WIt<~C_vMl8>PI)$j#lX7PVqMr@>vYx!s}5YMh2qz5 zC4V~IRE%tMs?|Dfd1H-iu~;;6y~HiWfuEi`WgelzYfj&7NXM=sEPR zP#i_`cvz)|_#46Gl7Yqti;0i2K`5UaXA>wr*m1=wWIe((`XmhAx7?n}VFQCQ{T9V^1pSire;QPhp zNUE)R+#b$gGv5yYDzQ173n8BWdSRL$mRQ&?4>CgRi#Q$pmzjSjT{Y@;TyG;Gp8gsX zJUX~^=oEK{QV4w~sdb1!C`8#`@`&B(>802~m;7JR!v29A;hqX;9Y(A_L;=XUsDEaC zJarnVk)cW*s3HJ$pqhdTYhd0@H5(NV?g9Th%?wp44b%3OyGkoMP$8@ZubgaDDg#5A z0}qX)#w!G^l!^sTts_;$HSXan-4fLc6#%C)I&lb)l|mi5fNRODgknt#d&M=M&WY0) zz-1b@H9!po%5H;hwM%(UE#$DyhJUDPkIE@f!NM#X8XT;s&=3dHqTFT+2*tV83Dk%> zvkcKsU7L+YL8_swg?0^R4^wQFOy~I89TLlR2}7B;?;yOA%_*Fp@y;$wmAHeC(GL#n zmXy{qE8cY@EJERawO4_5*z0SoTRU4vgw~sMFq9tPuvUfp`SRSQ-n+z}U!U^2mwq=XUOj_a&Fo^0@ z7`z|#^wWSjI_d9f(C=HA#~w(-XuyVx)9tA-2bC@JMOa4~2sPl%fZy+N0aSRpEh$vy zT+xu?xq4eF#I>kX^Ad`W8GnAJ{!|RBGUwrOpnxkrZbeJpSl)u#=LmqAvr2W~Q7uUZ z3|0Wu8CG`5#ky2bSZ_gP(>^bukgaiFTYqZEF$q{$vyz$)m;-@x3$9TO4u56}@2OZ%}Wh{{aM#jfN)#kD~wp002ovPDHLkV1in!h(G`U delta 2536 zcmVbI#m*=l+`H-lXr#7jouClgZ4S z&&-@TbMEAJ{PI7Rjy6CWpbgLlXnzB=0onj8<5EBZZDCU@num|w z^_D_CfB|S_L2q=!x!>zAnXD7rLS8Gp1Rv`eVjTc9fU>TC%Srvq!ha7gg_nqvHx(af z3IHeI@uyGU@mg}~y{;Y+U=(&YSz$<liq z?Jb-D-rAId{?`R7K;bo5qQ(r9FeJ4@DL_ByxbyiKCGTYa3s(I6vIHPVGXMbh^(7cpr2y3t9iaAt>cSlK z_yT}^casQ5cIqRl|qq~B(Qd<@p8@GjLo+m$XvcK~#Q zXJ;oYo$(NCTz|pEH_yZ!pt`CBY)`2+EFgDh=nepp!1f8sebE4E@z2}+fNqHEy!aH= z-eYfrJ^)}5JpcCXgrz^Z{}CsC(ai{|)iej#gW6}`?nsw`J3tVd0R1O-s6mtabsvI7 zg##e|w-dk*`36AQ!}b!Y4Zz6?*cV{}*rwVo1Bj}&DSvPv0I+x~0p7E;C;C9a2ptG8 zKcxde?WO?UqYyw&H3)S576P81AONb}G62<0bcA_6FKVV$0CVr(u@>IFkOQzmK`}lP zz%!$^9{_Yj?@<1%2VfNf*rVEh9T5V2`SOmXSN;H|u(EFe+zY;tlzjorP-VY+!7tFp ztB)wp#eY=*63;N1Hft5~P=A@~euT}@&u)nEzzb^QAvBmYba8K=7WIpH5CvE>24Hm^7*HvuU?zt$0GXiWf^)|3eg zQOpB?8K}lCa3RuOO1{H|`1~)D2VzJZC0(WDr7q0MfHUIRKuLKR7t3uyk;> zXjc^vqjylkW~ca&s#KO?0Nl6Y`T%GJ<>dpA%E6eOU}9o|8C@zfF(KwoLTQk>x&u%T z01xV)Rd|PDHiF~?7ttPXBf)0B8l}nM&of;!L2#)9JKgd|r%^epX?GdxntgH?%qjmHel&*=1}IQp9eFqRgLT zK`1%;CY2t?>O&GUkOFk@Ux~xh^XI3U#B75gbpN(q?DY1VQmLdN_=<@7_|L>q7=PgT zv8$_7N~aNr^+?t?rj@y3`T+nCj{FlP0qRs7bp$K$195?h&OB_MNHjs=aG$I8Mm`v(2Oc^Qi8VVhdWRe^pm5@Zn zZU7LHj~iYnhf%kYQQ{1Oq)OVCQ7u4@r%*q7LbpxX4WM82gNoLq7S#h5mbiLCj6^ax?SD!Aro(AvS_K{NP*-Puo*euAj~*alre6Je=tEd1n+59vj2JuFqx%Hc<@yAOk@r zO~izQG?6_)es4t&(}Z2s7fU6n!FdK?ogNq%5IhJyPUL0>N~tt0S%2}q0Bk@oCgYC1 zSHSsBdmRAJ&l945aL}$OB}kHOuSEa>3jhmt(y;B6P`?7d6nJ~8(klR*AZG*s*5$Nf z2=@U$5ddr;Z3ajh`tfwiTZ0|}&;$g(4@W~OjC(MprCzrc00Wj8P!qLG5mZy~74~d{ zUIDBoz{WgXG{n0JG=B@gTz}Hg4_-j_tUwC@IxK#OnLykChXDg(k%}I>#(m6yX8=4p(Y zz>NY&&kxvp1_+pgJ&q8q7kjo2z#OXe_L~AX`D0@(0$|QS8$Ezyaap#K&%%E yg*y3sYe!kNTOOTY69878K^A-Z(cUV6X5?RiRBP@?kPBP@0000 - + @@ -10,10 +10,10 @@ - + - + @@ -46,12 +46,15 @@ + + + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,67,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,67,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,67,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,67,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,67,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, @@ -63,10 +66,10 @@ -17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -17,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -17,17,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -17,17,17,17,17,17,17,17,0,0,0,0,0,0,0,0,19,19,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,0,0,9,0,0,9,0,0,9,10,0,0,13,13,13,0,0,13,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,17,17,17,17,0,17,0,0,0,0,0,0,0,0,19,19,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,0,0,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 17,17,17,17,17,17,0,17,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,9,9,9,0,0,0,0,0,0,0,0,0,0,0,0,0,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,0,0,0,0,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,22,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, @@ -79,12 +82,12 @@ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,47,47,47,46,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,46,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,46,47,47,0,0,46,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,46,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,17,0,0,0,0,0,0,0,0,0,60,60,60,0,0,0,46,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -60,0,43,43,45,45,0,45,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +60,0,43,43,45,45,0,0,60,45,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,46,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,46,46,46,47,47,47,47,47,48,48,48,48,46,46,46,46,46,48,48,48,48,48,48,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,46,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,46,46,46,47,47,47,47,47,48,48,48,48,46,46,46,46,46,48,48,48,48,48,48,46,46,46,46,47,47,47,47,0,0,0,0, 0,0,0,0,0,0,0,46,46,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,61,61,62,0,36,36,36,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,47,48,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,17,17,17,0,60,0,0,0,0,0,0,0,0,0,0,0,0,44,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 @@ -92,11 +95,11 @@ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,11,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +11,11,11,11,11,11,0,11,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,0,0,0,0,0,0,0,0,0,0,0,0,0,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,11,0,0,0,0,0,0,11,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,0,0,0,0,19,19,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,19,19,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,11,11,0,0,0,0,0,11,11,0,0,0,0,0,11,11,11,0,0,0,0,0,0,0,0,0,19,17,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,0,0,0,0,0,0,8,22,0,0,0,0,0,0,0,0,0,0,0,0,0,46,46,46,46,46,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, @@ -105,9 +108,9 @@ -0,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, diff --git a/game/play.py b/game/play.py index 4c6db85..fdb2b1a 100644 --- a/game/play.py +++ b/game/play.py @@ -1,7 +1,7 @@ import arcade, arcade.gui, json, time, os -from utils.constants import FOLLOW_DECAY_CONST, GRAVITY, PLAYER_MOVEMENT_SPEED, PLAYER_JUMP_SPEED, GRID_PIXEL_SIZE, PLAYER_JUMP_COOLDOWN, LEFT_RIGHT_DIAGONAL_ID, RIGHT_LEFT_DIAGONAL_ID, AVAILABLE_LEVELS -from utils.preload import tilemaps, player_still_animation, player_jump_animation, player_walk_animation, freeze_sound, background_sound +from utils.constants import FOLLOW_DECAY_CONST, GRAVITY, PLAYER_MOVEMENT_SPEED, PLAYER_JUMP_SPEED, GRID_PIXEL_SIZE, PLAYER_JUMP_COOLDOWN, LEFT_RIGHT_DIAGONAL_ID, RIGHT_LEFT_DIAGONAL_ID, AVAILABLE_LEVELS, RESTART_DELAY, button_style +from utils.preload import tilemaps, player_still_animation, player_jump_animation, player_walk_animation, freeze_sound, background_sound, button_texture, button_hovered_texture class Game(arcade.gui.UIView): def __init__(self, pypresence_client, level_num): @@ -40,13 +40,16 @@ class Game(arcade.gui.UIView): walls=[self.scene["walls"], self.scene["ice"]] ) - self.warmth = 100 + self.warmth = 50 self.direction = "right" self.last_jump = time.perf_counter() self.start = time.perf_counter() self.trees = 0 self.collected_trees = [] self.checkpoints_hit = set() + self.restart_start = time.perf_counter() + self.restarting = False + self.won = False self.level_texts = [] @@ -63,7 +66,7 @@ class Game(arcade.gui.UIView): self.data = json.load(file) else: self.data = { - f"{level_num}_high_score": 9999 + f"{level_num}_best_time": 9999 for level_num in range(AVAILABLE_LEVELS) } self.data.update({ @@ -71,13 +74,13 @@ class Game(arcade.gui.UIView): for level_num in range(AVAILABLE_LEVELS) }) - self.high_score = self.data.get("high_score", 9999) + self.best_time = self.data.get("best_time", 9999) self.tries = self.data.get("tries", 1) - if self.high_score == 9999: - self.no_highscore = True - self.high_score = 0 + if self.best_time == 9999: + self.no_besttime = True + self.best_time = 0 else: - self.no_highscore = False + self.no_besttime = False self.scene.add_sprite("Player", self.player) @@ -90,29 +93,42 @@ class Game(arcade.gui.UIView): def on_show_view(self): super().on_show_view() - self.info_label = self.anchor.add(arcade.gui.UILabel(text=f"Time took: 0s High Score: {self.high_score}s Trees: 0 Tries: {self.tries}", font_size=20), anchor_x="center", anchor_y="top") + self.info_label = self.anchor.add(arcade.gui.UILabel(text=f"Time took: 0s Best Time: {self.best_time}s Trees: 0 Tries: {self.tries}", font_size=20), anchor_x="center", anchor_y="top") def reset(self, reached_end=False): - self.warmth = 100 - self.trees = 0 - self.player.change_x, self.player.change_y = 0, 0 - self.player.position = self.spawn_position - self.start = time.perf_counter() - self.tries += 1 + if not reached_end: + self.warmth = 50 + self.trees = 0 + + self.player.change_x, self.player.change_y = 0, 0 + self.player.position = self.spawn_position + + self.tries += 1 + + self.restart_start = time.perf_counter() + self.restarting = True - for collected_tree in self.collected_trees: - self.scene["trees"].append(collected_tree) + if self.no_besttime: + self.best_time = 9999 + + else: + if self.no_besttime: + self.no_besttime = False + + self.anchor.add(arcade.gui.UILabel(text=f"Level Complete! Time: {round(time.perf_counter() - self.start, 2)}s\nBest Time: {self.best_time}", multiline=True, font_size=30), anchor_x="center", anchor_y="center") + + self.back_button = arcade.gui.UITextureButton(texture=button_texture, texture_hovered=button_hovered_texture, text='<--', style=button_style, width=100, height=50) + self.back_button.on_click = lambda event: self.main_exit() + self.anchor.add(self.back_button, anchor_x="left", anchor_y="top", align_x=10, align_y=-10) + + self.won = True + + if not self.checkpoints_hit: + self.start = time.perf_counter() for level_text in self.level_texts: level_text.text = level_text.original_text - self.collected_trees = [] - - if not reached_end and self.no_highscore: - self.high_score = 9999 - elif reached_end and self.no_highscore: - self.no_highscore = False - self.update_data_file() def create_scene(self) -> arcade.Scene: @@ -128,15 +144,17 @@ class Game(arcade.gui.UIView): def on_draw(self): self.clear() - with self.camera_sprites.activate(): - self.scene.draw() + if not self.won: + with self.camera_sprites.activate(): + self.scene.draw() - for level_text in self.level_texts: - level_text.draw() + for level_text in self.level_texts: + level_text.draw() + + arcade.draw_lbwh_rectangle_filled(self.window.width / 4, 0, (self.window.width / 2), self.window.height / 20, arcade.color.SKY_BLUE) + arcade.draw_lbwh_rectangle_filled(self.window.width / 4, 0, (self.window.width / 2) * (self.warmth / 100), self.window.height / 20, arcade.color.RED) self.ui.draw() - arcade.draw_lbwh_rectangle_filled(self.window.width / 4, 0, (self.window.width / 2), self.window.height / 20, arcade.color.SKY_BLUE) - arcade.draw_lbwh_rectangle_filled(self.window.width / 4, 0, (self.window.width / 2) * (self.warmth / 100), self.window.height / 20, arcade.color.RED) def center_camera_to_player(self): self.camera_sprites.position = arcade.math.smerp_2d( @@ -158,26 +176,41 @@ class Game(arcade.gui.UIView): self.player.animation = animation def on_update(self, delta_time: float): + if self.won: + return + + if self.restarting: + if time.perf_counter() - self.restart_start >= RESTART_DELAY: + self.restarting = False + else: + return + hit_list = self.physics_engine.update() self.center_camera_to_player() if self.player.collides_with_list(self.scene["end"]): end_time = round(time.perf_counter() - self.start, 2) - if self.no_highscore or end_time < self.high_score: - self.high_score = end_time + if self.no_besttime or end_time < self.best_time: + self.best_time = end_time self.reset(True) return - if self.no_highscore: - self.high_score = round(time.perf_counter() - self.start, 2) + if self.no_besttime: + self.best_time = round(time.perf_counter() - self.start, 2) - self.info_label.text = f"Time took: {round(time.perf_counter() - self.start, 2)}s High Score: {self.high_score}s Trees: {self.trees} Tries: {self.tries}" + self.info_label.text = f"Time took: {round(time.perf_counter() - self.start, 2)}s Best Time: {self.best_time}s Trees: {self.trees} Tries: {self.tries}" - if self.warmth <= 0 or self.player.collides_with_list(self.scene["spikes"]) or self.player.center_x < 0 or self.player.center_x > tilemaps[self.level_num].width * GRID_PIXEL_SIZE or self.player.center_y < 0: + if self.warmth <= 0 or self.player.collides_with_list(self.scene["spikes"]) or self.player.center_y < 0: self.reset() + if self.player.center_x + self.player.width / 2 < 0: + self.player.center_x = self.player.width / 2 + + if self.player.center_x - self.player.width / 2 > tilemaps[self.level_num].width * GRID_PIXEL_SIZE: + self.player.center_x = (tilemaps[self.level_num].width * GRID_PIXEL_SIZE) - self.player.width / 2 + for tree in self.player.collides_with_list(self.scene["trees"]): self.trees += 1 self.collected_trees.append(tree) @@ -189,7 +222,7 @@ class Game(arcade.gui.UIView): if checkpoint not in self.checkpoints_hit: self.scene["checkpoints"].remove(checkpoint) self.checkpoints_hit.add(checkpoint) - self.spawn_position = checkpoint.position + self.spawn_position = checkpoint.position + arcade.math.Vec2(-GRID_PIXEL_SIZE / 8, GRID_PIXEL_SIZE / 2) moved = False ice_touch = any([ice_sprite in hit_list for ice_sprite in self.scene["ice"]]) and self.physics_engine.can_jump() @@ -249,11 +282,14 @@ class Game(arcade.gui.UIView): def update_data_file(self): with open("data.json", "w") as file: file.write(json.dumps({ - f"{self.level_num}_high_score": self.high_score, + f"{self.level_num}_best_time": self.best_time, f"{self.level_num}_tries": self.tries }, indent=4)) def on_key_press(self, symbol, modifiers): if symbol == arcade.key.ESCAPE: - from menus.main import Main - self.window.show_view(Main(self.pypresence_client)) \ No newline at end of file + self.main_exit() + + def main_exit(self): + from menus.main import Main + self.window.show_view(Main(self.pypresence_client)) \ No newline at end of file diff --git a/menus/statistics.py b/menus/statistics.py index 95ef490..763d9c1 100644 --- a/menus/statistics.py +++ b/menus/statistics.py @@ -17,7 +17,7 @@ class Statistics(arcade.gui.UIView): self.data = json.load(file) else: self.data = { - f"{level_num}_high_score": 9999 + f"{level_num}_best_time": 9999 for level_num in range(AVAILABLE_LEVELS) } self.data.update({ @@ -40,7 +40,7 @@ class Statistics(arcade.gui.UIView): for level_num in range(AVAILABLE_LEVELS): self.box.add(arcade.gui.UILabel(f"Level {level_num + 1}", font_size=32)) - self.box.add(arcade.gui.UILabel(f"High Score: {self.data[f'{level_num}_high_score']}", font_size=24)) + self.box.add(arcade.gui.UILabel(f"High Score: {self.data[f'{level_num}_best_time']}", font_size=24)) self.box.add(arcade.gui.UILabel(f"Tries: {self.data[f'{level_num}_tries']}", font_size=24)) self.box.add(arcade.gui.UISpace(height=self.window.height / 15)) diff --git a/utils/constants.py b/utils/constants.py index 44e622a..c230ed6 100644 --- a/utils/constants.py +++ b/utils/constants.py @@ -9,6 +9,7 @@ PLAYER_JUMP_COOLDOWN = 0.25 PLAYER_MOVEMENT_SPEED = 10 PLAYER_JUMP_SPEED = 28 GRID_PIXEL_SIZE = 70 +RESTART_DELAY = 0.1 LEFT_RIGHT_DIAGONAL_ID = 6 RIGHT_LEFT_DIAGONAL_ID = 7