From 4e0cc8e92d58e08ece3fc1fae2ee755a2998ae7a Mon Sep 17 00:00:00 2001 From: CaTronick Date: Thu, 10 Jul 2025 23:37:58 +0300 Subject: [PATCH 01/48] Zombie dead animation added --- .../animations/zombies/basic_zombie_walk.res | Bin 7003 -> 9106 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/resources/animations/zombies/basic_zombie_walk.res b/resources/animations/zombies/basic_zombie_walk.res index 0f6d641382e9df3f2730acd383ff7a851e7c0b88..ab83137badc08d963cfd6dd2140c71a90bdafc1f 100644 GIT binary patch literal 9106 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 MRHvXZ^tal70c|`Y$^ZZW From 8444d10561b11e33438f774ef42678b8adc1e12e Mon Sep 17 00:00:00 2001 From: Rendo Date: Fri, 11 Jul 2025 03:27:24 +0500 Subject: [PATCH 02/48] zombie animation impl --- .../animations/zombies/basic_zombie_anim.res | Bin 0 -> 12740 bytes .../zombies/basic_zombie_eating.res | Bin 7031 -> 7028 bytes .../animations/zombies/basic_zombie_tree.tres | 26 +- .../animations/zombies/basic_zombie_walk.res | Bin 9106 -> 9093 bytes scenes/entities/Zombies/bucket_zombie.tscn | 65 +- scenes/entities/Zombies/cone_zombie.tscn | 75 +- scenes/entities/Zombies/hobo.tscn | 190 +- scenes/entities/Zombies/zombie.tscn | 2981 ++++++++++++++++- scenes/prototype_survival.tscn | 1 - scenes/templates/plant_template.tscn | 4 +- scripts/components/Entity.cs | 10 +- translations/plants.csv | 36 +- translations/plants.en.translation | Bin 1205 -> 3102 bytes translations/plants.ru.translation | Bin 4209 -> 4221 bytes 14 files changed, 3173 insertions(+), 215 deletions(-) create mode 100644 resources/animations/zombies/basic_zombie_anim.res diff --git a/resources/animations/zombies/basic_zombie_anim.res b/resources/animations/zombies/basic_zombie_anim.res new file mode 100644 index 0000000000000000000000000000000000000000..8ce4df9b2998f69afab3bb27682fb1a70fed092c GIT binary patch literal 12740 zcmb801zc2LyYFY1p}V_7x;satOS&ZlX#q)5VrY;Kk&vzdK}wMB6qN3kRFM<}B+efF z`<`>|`#JZXyN9*+?3umx?3sDi`aZwkGwABwyN3b-76K5691RSLgn&SiU=YXy*rEbY zumX(&xPJs}&4BGOu-yV00%*p-zAMm>C&&icD^w7u0O-qJ&v$JF!v9VUO1tAPsqH+8 z21k^azl|Ol8Hr_fnOsJsyw=Q`V}2~9xJOMjEhDpkvqRHBNVt%EMms>8@r;f>PI%x6 zn-Z1>$O&W*TAhA)RFb*#MxCLl$CL)jq+2ht@535e`*yEBuv{6eAuM& zdEeQh*C>n%-X`MNbM2M?B8=zqT2Ke`-Ok8iTFKtqkngbDS&g}6a0^J1+Y{6ss)+F+ zav8Up=hp*xwqLxBFYz8P7~BHJHVEAkPOYi`fyIL2M;Xwg*f3@5l|H*9H77{eF1BH_ z@-c#U@n?AR>VxRVyLywY+duYY$r|*Z)ZV$n>~!Lm{G7KwP=BMIl6!#bK+wVWb+5pk z0jt)c`NY@lUO00y&WjIT6fdt+laqrj9qkcWR8B>AY_j&h@ArPXkz6jOES`1fAmI_T zKxFZ1zDZf(=_6DLC_9?9c&D&Cxo`P7kG*}CwC@XWJLX|8mc zkvVKjoU(LgLb3U*bG&N8(m6#>-8n{wM3De`mjEizPhqp?m$T!SQ$J(s%u$@G`ywMF zgZXL=mH5gE>+RZrtzd=*8*#J(Q<4e`&`E~`=yaE$m%=8t2I#co2lT20dZ}^P+1c%T z*-18Myt7p64E*Z(LPiQd8s@YuK?VPT=tA5RWFltaP@#hGLy|H?(TVcF5-+;M!>kFy z)~$8bR8@7AlKaCwkE9}bSF~ix4knr-B$~yapB24*^^NND(dUY$SIt@$jWz<(EY+&b z@M0Ty_|-Rp=_;eBUrvf!&UlIh1Mdo-X0oy0`UIF@F&Duj+BhgsdSK{Y-~JgbEEqbRqsxY%0T>aq56b^YxbBxnko6?w}P6z z8y%-79G{bY&s__s3oJ~9j~*4`b+;0|W5IL4`l>f?N6dFpsAPoTe_gbA?9lz?b@b4U zNqIj3RhmhX0Y3ZSqhR}YJjS;j33Z)$DU;54iN(t**4YHc(H9H8LumFj9mkgmH#WC=@oAPleB|%)k&Ck#8 z;`a7-A9cH$NJ$k(@v{nANzt@)dcTKNbacfAXEGVIpXKAd5I<=OT-CY}oUU{>o&gW4 z1XF0#(`U%#64`rye`R@j8G|v5;Gvz}HgMO#z+f5}{R#>Sy~D%U85vPgQBR*EmtX() z!*OB?j-tdlD~qkCbhtQPzAntuwXwr&NGuEHj_S3tgV>?vi8Ek<)eQ?+M!2nfeSLu! z5)p#H`w#+yL|9=l1q>yd&AlSxtaIOjJg|9lOK)F8V&PsPJe z;?8p~E0dMQ-)}Ls*x};4=10Gbc3aSyP`_UFacfz;Mi;G}*b9CZ2Fc-jSRj%8jQqCc z`+ZTvavz+Wm#zuWR%#_(N01}P9Q5|xHf3~1G9Qx$Sz$EA!%jg%(y%b?))`bAUV^7| z>h=|eZeQU&bR5k2%dk`Ra6x-MPI7H6Ep6!&8k;p*6Pu^C>Gm4jeQDUy`nn-M zxo;EYyoN|9xn&)+Df<utcK` z>EWW<%*hP7dkHP@%QJi?toiau_u&V}ucQ{^JH$$?T%KCa2;IsauB!U4O4_~;zJ{HR zFd3|yd`_InFy^-;j?+-2kbaX*TiLhEi9@W>Fxz$ECDlx?fF%bp-!o6CmIzMm7O3uRe6$M%SnJ`{DULZupUrQx$MyXY=N73;X2jHEvl;KnRtgd?sGgZURd1|}kv&Ixd)8fTOX2ix!l z(Bgjrr@+W?-I}$-<%`sC1hKAniGzQl zDZk>G|D06wx^+mJpY8UiPpvnccxm%NUCLyUL9Lj~*2v@66_Nz@@1hyL7QL57tuxD) zlUd)dkDq(k+j9LRgyIt&{H?s<8BL^T56%9sF7#}c)9mp4`vuerw)ijdaaT)10UJqY<^Tz>RMV9m)L zeS0olgrY)3TEnkMp-@^ck0(;vvLapIFYb$3Vq-ZzC-pnO(bSWFjkslekOCnH1SBLN zAUOd6i3$iGXj=ERfi)G-pg;ps77!ZHyc{1t@&qyBcv!o7I(j*}xx(epfrovpUA%$E z>99bcP7uiIuD83bwbvsZkglFS@GKb^ga_nJAOk}qD9G5v)C|r1fd#w+1k$#&vVMqW zWBbU?-oX*-)63h(7ZtcH5Ybb=XK>)81YOVl0|JBK!6Bhx;i$wB zkx^a1v(YbNVu|D86B3h>Q%F)@ron(CVX#-}8JQ$mud{P<^YWpj1%*Wfz_Ezpl2Qb; zto%(y<=ZN>>YCcRcl8bL8=IP2TH8?DJ38IFx_f$2`}zk4hdvAgrzV59A@awP*}^{v zqg#ctI8K0xtmH9930R2piLAQ9B3aU}?#op4;|&gTgH2=Y1#_o!^>d(&Y=nCL86KyymVF@e_yo|C3>g8FQ`69y*|~XCY}|##rA`ojjfKf4kvtdHPs9+!&??i?iIv4|t z3C04WVuNwOxL`bd0zxPeF$s*6jGO{WNkvUVOGgi3U}WlqF|)9;LGG|~aB^|;pz!kX z=K+_2(=8w|| zxy4$%hA}x;*IVvDW778L2E_aU?Tgo9rYpydsM7v2PW&YswQ{c3zcL=U>NuIOv3+@o za4{(uK_rmh?ar|F$V0d?6rjuAusE&>{@9=UbmrLEwZ7^fG^?T?Ez$pijxVTBbTHL&z@jYaEhN!aQO@TOqseNeqdCC zgrDHnVK5=njLOEv87D1Y;f(xSi_MtwC3=NI0@go4;!Ob}Gq+P-`y}biKk_Ioieij4 z48}to&;C#oX6R#Uh3RBTtG6;!|F&!~J?-!+XEgOXtu=dDRc6vB0i20xg`gHqJ5*>b zBqzt57erM7>4LOD^qWc6raBjxS7@$SAEJju?5TFJivw<E~Qs+O;V-x|hd? zE-0_CExLRN?AvPAD_70DMTGO0aQ4|UdkhP&F#_WgB~y};oN>-Bm2dks9|*9IsDHDq z)VIUhn(%mtsYX~q+URsLh48q>_H`RRe%{8?I7bSgR^)KMFXs14O7S3$Z19UPB|9erP$u?CP;Nx;)r*2 zbRdl5{OS2xg;;*v+X%LoSzX~`W^tnO3<3|=QFA;jIMgzq5M-5pevl9T1BAPf*f!pBQQ zYaSG_0_+7C8BanmSrC{^994ooEh=XXi7n6XiaXr><|Td^QRtP|kAArNGe`&i(8?!) zuYx))d;M*Rm(BhRS><|CnRWIF2Z2)^)F>RMmg7uYy*zq&Y- znd)y19(}Ahymb6R&gEpd;f$ zch<~w)N5HGnhRrG!wNf>54i5Mgg+?*A9QK|EEhKlwT9x+-F(H>1^+WHWXM5KasZsj zsS_KRHIUP01kjKuMPfA)Xed#@>VKdqko?OE2?@#l&s0UulyDdb_Ge0s1_9IqPWO9C z1>grwk~ounmz^n#q#zWaAQ%k(Gm9cY2yk#QfUiRa@}mvOLsVRVhhPRI3{e3XmRWVT zHy_BiBcTWZpok(QREL5h2k$`A5dz>5_2Wpa9BO<98fLU-Tk4ou`@{ha5}8l{nPBjr znI1__0GxcSif_NN$hs8%kb!>2mO*k9b>!nG_fdcV$eAAs&6)H_V9IYz3=>CE01aRO za`s09W`76-LUADY(sDxjHwQ=o5d4OA7ZL4A8nSi zXQqwEVc=*KKHz#AB-<8NQ4Lq48h~68S1kP6tfUMGoCfP!5KAd{aPqSNx`>;r! zyVlE!AwnI0#l!Fd>M69?JkWe|>X^O>4Q#+QDb~-^CL}bnzlg&`FsnLBQXC$jowY9d zlzd&fIiQ?%yDjBN$m-CF>d$Jt&!1*v++X;mU5HU{dv(5u7~f?!hfe)lE57+_zPH?a z5lgDyt)9xifmBu~Mcr5FcPybmb?1VX@5~1ui_o`?*9h7Fa^~INd<2q>{$@3uYcN*) zH{j!_Kxo;nYMr_h{AlIUjqF%BnloSoUR-(aS=g(2BWs-eBE8diw~zB_ST`f4Z#^31 zA|~h!9x4bwt;MFX{#sJr$Z-%Wrti(gke-sE3z{Hk`fXfxnS?}hHJQ}Y1d zlb~^v_!31B%{F(xzjMrPlWgvl_k3E?qi|3Yr<9eRVP}=-_k!0WS{k-BM6YQLjrF9H zU1A$5EZkJd8o(AHB?T=#G#(k7hl#Pq9C7jMeu2*#MryguzL|R1$YC{AlKMhckGT&j znF<&gIbXifCkcfInoH)=f>VM{rA)E zgV-$(P{?j*2Aunnl$!tl}P+s$*!*39TPwo_}Vuf$PAcU$} zqC}t+3JtN534aIw>`o5)J9y zT1hVQ55M$VJ-919DdPxI-E;0hhixVqE6`pKpTfvSr~FxHwe2!3_0*YjR6_V;6u2%t zU+Nak{v240n_BSDeJQXoJ%3`9lz9$*w@`EsJth3X$J{_#tedQfXv&u#+Kx1{9DUC6 z`PXiLnoX+2(MvC_K1UB){h?Amz#;ZCYKCIbwIWnqaJ*8U&+D-56=XS^OF1#XULa1e zCjTI0Kh0-ErDi#(0lS;YVjmYAll@>fEiCK(Rt|+`!(p<|cOSbGLlnl7q!BtRlc`OG z7PAA@Iu55)mbES4bw3n__udE8n676(i^#5ff{BkkwW_kdY{~TIjLHaC3bG? z-ZfuB;i{ump;bAbyHnOv=*LRF@{!$@6<7Fw{SR^w3HcvA1u{W$17wOsh#7La2ihOV zfRNcQk}`mf0@nWnR-&UYTK^L%06>sZ4Jpz(JCP#k4@)dTfCNLP=70(Vc-4u_dSQ^& z`nC4t4vLQ7x(pK#W}v%&g&8z6!$j^@VO96E0ZgRDf3&g0bi_~k_fL!ZDYBg*CS1ZhAr^Lx^NLT@^`VA^1r=S3+XgN07SMi&PQrnTJ zLXwK%?q5CoUzJKxD#J$_XD^=ObrwbYJbpT+6(N4^18 zz5WT+c6BOKcEz%{%{j#RS%SRxrvqrNqXw7MJJdgf^S2#yN8EqverYpO+Mw8-K4TD6 z-Sbs4YRU5cgRDu%;+R0&>T7|YZv#?=KU4+algX9%kB-mhSTR?moWB>j_1$63`yo7*(|=&I+;GJ&X2i$=4LER~4NB6B8vhsy^a-t9td ze9im#+tha)ub&&8`)hmf#Rz<3p4-J& zI*k}Rxg1E6*V|bun)16k@>8{!@to6`I&A#qVR-u&Cd*_XQDY0`PGijoNM}7|kq}A- zuWDoCr9Hc)jt+@NSE{mKs=XBgBY!W(&XfSg3`*(!9RYFV0fH2#lMqln_NA3VRFAOJ1rIuqoIp2lQ=JPh+dxs&W8uJ?6NAHf9RUW+{ zNsC3=rA^GHp2~9fn1uL9!hQ8eR7#TN9fL5HNrFsqb@{Hao(3k=7Rn)b z`}i7)2X@G zP#gFr0_^Cbl1!4e46r~m3y%oyK@!U-oP&XJPlJKUhB#`Fh4m5XQ$pr9dR8Yt9*Zip zHpNY5?EZY!`t;7n0+#?s`(E8!@q`_Plsg$5pHJJKtR@E3>L}^_n2?_c*e#I$)|i|wPs_i(mBA<8G2H-i(p zMI6spE?oR6a!q^$1clwVM^l&LEM|pl`*0F4Rcw_x@Lx%#KInG8mc>(0z*3SdRVdbw zSYycyD`uKKHZU!=L z!M%96Igv+C8l(V{1Lc!^wM9`i^VGZXJEVXMDbBGTurE-scQaF19A8R3 zHD%INz71aO^y-?#maBI^d)IAsQ7bM74|>jNDur1>)UZw}XR+Jji6R&7cKEy|c?4`y z7?8ALX@z3%A*KCPkWEBw=6We*q@g{xt19o)U~i`_A1@Cxf}4x8BC}Ta8Z1iDNk#Q| z_H4#-_S#RjZbSg(ops>+R+@>032T=3hc^aVu+`JoRHqz^UXBxmii=UN-mRfq7-39a zIP5z-2m*%9d?Jm2Zf_{eHY$-v1wWBq_Sqpq%4@T8y|_KvuSY3P%_bt2g5RQX%(U7# zzd)!%N-s}5KZCvN-ovn_x@ZjW=X>e{_dd;lOIZdeBA-Es?;Xsd;X=NCB!I6X#;Z9T zv2-a#A%IIWQ34^d5~3JoU@yT)3Pwprr0N8c?nRyQOqPCBq?^Wmfol<%`lV6gqhRk~ zS~cQfqpyj8(btgq(BZ&Eje*YSD-2?+J<*8uJ$IM*1af-U*2dsHrM091kArswZ;hiR z<0F;%T2%LELFir9jcfc%jj_30-k5zhB!MwK$Eog+hwp9X8b)jdcSfoY4T`YVH_>M< zCUz=?pRot~SD)M)&61MJc(!#AWn6r;PEx$J#p1c1tK!~~} zyZJWL;n{t+Dxe(1QQs_VRb?BYan#0kGmPDc#Nbsf0DijaE1Qm7XXlNDKO|xHCyd%L~cB zLKM|eCX0(cLN15`B0IF4^)EFFXzJgB6sbo^0X@1)J>7OFv>+4qBeYH19bX2iOQA?% z$^e+3gGjfM5O6C2yA%${d$e~kyKP%nqJPXwl0UvB8WyY*c)ze2ZdhmD2e~O=gYn{4 z?sX>0i`)Oh&7`Sa-5F{_dYZ(5rwOjcgLgI4fJnh)U~(`881=XF00IT0Aqc${MO4)$ z!AWR>LPB2DL?BO``+^kd7#KoYuqYT!3alt3B!q(3Nn61H{GVGr>W^tEq zguK=2l_48H_Ch4a1U5VI*$1()n8t6BgvBB#+-FJ zb>DnB#%5hX-99MgeKPdvpdWHg-RT3{vOy?iro3VuXg`LiYy0V|g`OB;b2_>3et&mO zbrS@oACw=0M;<}=J2x;C7$eMnLpYy@mHuF>P;sQ;5@U?)9M~o(!C~*V(A| zl28o81R1(wF3hV$HcG_~2*~_7zs|+DrM_812@|tW+V5&Xdxkq+Op40Yu4zq|!QE?N zbYIi3rYVA38T)dy_GfVZXp3{J{YuRp`o6_oEiCO%|BNeEY7iTZlWJ$O_YC`s0(Pwa zdxJ6?GxV91whfMn-U4ZK6l}5Xfown)AarA^iA$ZJV6Y`LNZpuam2@GeX(d4<=Ei4dEQm9hi|?_X zk4ylHhMkVchqGc z5gzgs=@W3|X(SS?L%Sj9xD-ni)@31zZw?{W83p07IxNM#X4Bc)(Vo%|V#>>Sqk8Wj zSM9S3qlaOm++Hj z|HEM2BSAB{kh=J8ZBb?$EW(n2{fwQ=80{}iII1i~MZPl<_OIO1StY=G!XLcbeAREI6WrV^v|N8I5hB{&!w@+802B zAqbtvqAaSMQZ@o;y@`}>7J=H29!@+XO)f^1fCe1ORIFgjrlMmabwvbr5ykO6j;rdH^CQayr4rINo9{b{DC&57bd6tP3M?Lf zaug>X-)?VMkjksCPfYz_J^Vdw2!u}SU0To;TGo#lRT*6IbOisE`^&eP{22WHRqo1i ze6Dym@_14+_wvvPLoW@$qW;m-&$dqq_`tsIC=$vBn31q#?10pRXn~(Nod_j@ZptjD zOPAxXibZl6Y+9)iKSW56UmTgFZSpDA2V-_-Hay{%Z5vdmFq}7EqdW-t8G2WtxUZ!) z&bUV+oVXUEwC&$pN=JA)y5FQ)Ku#Dv;Uczicw2G^6aDpNP;AD#Yxv{3jnt+u3j?Vw@L(k#BO#soaqO>LobfAg53mM z65bi-7$*37b^V}f9lDxXLjj5)5t58g7`04q-3)3Bsee|F^mc-Z^O5N&1c^Vc>_g0zGcWs%WJ zxvd26=Ow%E3LdAgXYuu&{p_N2H_Hd>XRFkXCtq2-pjJN3GYId-A7^zcevi{Q%OCTl~~2Vlo75_7e4ssx}4OTu77F)w96n%0G4^J~-e;5lC{+%#&iCsL)Va)|j73w`byS2xXIi zdP)D4?#uvR`rnB8UF!zT0*|18=8z#Z4>V*%fPS0*IKUn*(2x%zvwi{&m7}&wShey)Jr(ZA85lV$(CMw)6A*7mnfih`8~Tq#aBMz;W15G({11|#dGU@%l1ECH4TOM#JPQ!tR^ zA&aI!%@hUt{*_jn5?C3m0#*ehtEWK5CZ`GfumG&1s|R04tXFd+lhh7SScQ_X=%5q9 zA5z2<Wf?(*N*0yM?Kz}TsEMDp>mYm44 zcw$$#pZ@JG;c^;kb1@IaRt!JATD&5ik|o&LMdd@`GP;g=#r;^Lpl!|WiJ6igt5=(x zaowEq>9x&^30>B02L&fW&pE1)t* zu8QwDXYdjm{iG(XedA}Q^6cGn@nx0jfkg<&c0Ua+j@ zhsh~;&>Fss*EA1m94G~p4Z2>(CAldyC-f@lJ2P#M_j|QP?8bIi!-^^0Ei!S93;Vn8 zuV3`KecfhtxZQ*Nai_53Zr~>noewN{`0zN`?E0m;;ao;&FDh>lm~T>YonBCkFmS9q z5ni($?$kK;WRiDhxXHZ|yHNkswsAW+8gM@9cRqULNxSmyF#h~t-F)Tf)6cB&o1mNL zttYwI!nHLbC)P$7wlBWCyk*ge&N3fy+h=~0hZ61pkUh5ik-ifwuon44VZ!-C^pOS2IRaf)B>O-kju^me|c+?+j%xC)7%pU(6my zVE6AHINi{v^IK@LWpGL)xJl@vh! z^4g{NQ3Lu+#Y#;2cc7QzFE#S;eepom;GW&6vv|A&5s*}G;} zyI+)_1bW$F1(zWN9*8I~sbXOz&m^JtGVB(8Ln9nxXQdTlN#bBvOWsaa6Y!T77`WMW zU>FV;iiQ06b%2hez@IMJ^?I={|7*#{nS9EW)o%LETh+aQwd@u*gcDhW0T)!={6Vbr zp|tL=_rbl7y@{GMkG@7d#vCYno9yvOEublm(Mv**YaXL;!U5rAz1Hk|Jpw-^HZ}Oh zeY)#MJblT@sn4^>Nhj)PCIREsvX#HX z%^hwEyk~Q60YA&$1@18%exNUf#1E}kaORX4(VmOb%LIzn#MZyssRXw(P~1MUIkl9r zTQ{dCdP?%ln>unvY{{bN2kQQbuJ;bjbxYMo^Of`u^viv>8oswXU>A{=rHL6^G@tOT z$H|3}9ZI=*J(#=He1u{X*oA&i_t>g(mCK$}%*43XOubu$1gYBj9NAA`x6*Vkv)z9v zwL@T;kiABY3Qy?tPv*IBST;YCZ}M{6DdF;ua;4}Y8+qNc%)&qVo~BZo*n=m5 zex4r!Qr=%#-aPIO$sd{X&_9Z~i$8z35nB@XzQWzAn?5R2N$GQa5xdr=f6lZJ6P~oC z7!>oEHVuD$dwuAT<w-hjxs-=0n zXS+5EQY0O`g(s^;2@F4}(+JxQ9i#qiPQ5}$IoX#-U_DD)-QXb9G2}heuUOV;WIhm* zWMe~{kGWeieIuZ$Lb(h5!7$1|dB>2NV&^yD6zP;F@#0MEr97L8ex=GvEo81$ z$=3LQwI{TplKrIHG!_*l$;v{0%i;}vZcZ%eXgprzT~A&bcUNu~Cr;gW2_=QFkAsa= z53MZBP0hKvSX0%oK0swM>M1nTRFndvEsGTI!DMfu!<99bOCP zp$cM^@DtKb}pXFb(J&)ttDKe$nD*^u7Zak#>dpKvGfM}DHtG_wsuQIAZCI$ z520y^gD3o&EnucFKdTw3@aK+LRO&HnWEa{u?Aq{t+I`-D`h)nGO&r$IQhWnbTzS_) z@D^>rlF-0im%5Fp3OTf%FE7;rWfmq(Zl)yEPe9I+Dn{MqhHbl6EKz3R9`CmMXn=I0 z#+*OUAt=a~NnVF|0D@uhvIMhzkrvSueD=zoh{wpdR05V$XWN6_p?Cf=5RGKhYolBj I`2UUn08Ee>$7f z62eBu1_aAx;fHP4{&;3rsCM6IdH$<#2okNx^WoUp7sCFt95l8bt@iSVN6KNa`a1|0u)%kU2h7B7upF+$SMMXtLL_{>7EzF%046hds z95kOeV6UIM?c{Q~Xui2}ej7=eXg-6GKUcyy6B7kl0^>@s9TJH|^Nq9vqxsf?aesLd znr|bH`^$1va=-b18X=KCCEt>P`njS12XSaW(UKVZ1H}#sDKryiBott|BE+y{ApCy- z^IA1vu%JYMq#(gd3c&#b1ze~Ym;tC4ffoTM*8rE30GE~)mH;dyD=H$Z5|R`Os#Q9% zN~V=6B~o&diLt%A0Ee~P)%I>U3IKqHEKd|3Xuf%P=_vnya>JI-95kOfTv&K9gyu7I zf2_13L*?hegXWvikV^R!?xmJV{wCMLKojAdLGwwY{LLX2(T^WApEXP(8@VDXPn@9n zgs~!l-l$PkG&CY2Nm7su2Vn&UAqXY24G~Z&gRF+6Ky{h}R(ep^5`tR>pq5nApy)A$ z^_cA&YTv4VWW==tmiPmk`9Z*>LpKSq8F(LgP8PAO=D4RZ!E}R3_fZW2o1G~2I{Fkl z*`SkDi|i&sXZHH&PwFH)9SN7D1pgHw+ap`0er{<8|K)cwxBYNnQv=-Eqne*E^utd| zx+#`5DP>f8PjUNW{-ESdZN@WZe|55_Hq`wgJWoY`1l`PHpL`XWbwz-LrS|Cs3Wxb9 zxkJH4V3DeJfoAy5E%5jQxoYR$;wdmtD(-Ho-cl+BKL?#UXR)s=qDo3C1)w&??`l9V zibvKI?=D=g+RIC@Wxt;0CGTv<9@w@PY3xs*pH5n`=r(U)=d<%O-VkUQ{yAQ(sWu)- z*VWU1{rK0EHrC@OyAxe0gp=a|fN(EA}gwJYS1PFLQ`n*x^~9 zRW(boUa7x$-^b?_Y5Zg0C*_IpG#{PlfcPOy@ZLOrzQnSSy9WAy8WY^vHW`6muh^TSh##7Dap#p#kAWBT zhx7XVwQbvC-(>)t-0;=5L$Ki!@*<>69)MkO&oCGc$5RbNK>V@rb0yG! zgmfPsoxh0{G*m@ViP$T7A+#_8muAzLMF=6p??CGqC@@rv5wBN;Bg_M~QZROSEex^v zyh5eOCtx6_;8YoiLBqkp;#(IClvCH!5v4UnBr^^uW}1M21fQEb-wZJ&9>MmxGKr|k z_)Ke1f@e=2P%u!HoXG->4AEkO^xVLI`~i6C>id|$Cf}ECYm@2dY7Lz~waPy`!`W$! zZqb(CV1WYvmRI_XSrsr5Mdx+8ma=Y*UW5%)3bb;h9dYdHg9qNc;$Bz)4(m%^#>mD| zkJ^LpYKj*NTW5y-*0vLTPnRHqNVd;E7>o4>D77#BUmIBH8SDF4fc=Df0O@o7LT?2dOq*Y{-bS>(+C)K1uS!k;l+UkR4VS}}? z1#2B>yLxfW-kSjhba85J&~~G&am1$4L|`A;2LgX0O{e~J7pyhLV(VGlD#tzc^jxpS z#$k6Y)^Ld~2`|l^34OBK;pM47*Jq3wagSBJ`1ATd?09VP2Iq@^6~D>)%^klMu~z(k;=Ac2bt!2tsWUMZND0Vx;(7Xhf(fEJX178aJ304pOZDIqM95!Fe` zWkR(~C)P?8Lh_P{vAw$hhqc?)_HIZDP+PNAwF8>q2b=jpxSUHh3E(7*dnJ8~*Hv@e6L7%0;iUT@hH$-3lzJU~ zik)j~D%B#piO|np9R5QhW4$BIC6wU5LWp{3Q>o9b?BIXtPR4CN9N5G#xAy2JPZ<61 zlbp~swL0<{m)=v{{+T`~c9a}zvL6Ma=m3^0e*b4hq{>{Fg3yz6P&e=McAm z!^1wS>Xl-JSab1y-_J7=`p3mjmM4NUK04L``9n=`yt(mwkL7;u{MkH z;Yy~75_@=b?j}~yP!&a`VXwf8(1H=LG>670LYNSHCt7D<%TO^!yj~TKFb~*@;n?A| zFx2Am3Y8+CfPtKXQ)QqA2?r1B&s+#7PE}7oN`Hz?W*kt=Gywq#K9_dB8DdI2!tHxy z5>biqnbsf$zn(mxV4x~FlL;CfqQwM%`MJUQ1Mt+<_cDP`zAxR@C)3f@8ajV!b$@n- zv(p&e!Y#kS1O@&rt@InSD4^nr&g---ZRHxh3md2wXyiyc;^@^M54?HBzc2w9)|b45 zVT_}mwGZdj^e;AB7Yy^QX(#wTU6KfzY(M`oYU>XuwJ-f(1_kX50MgGnIxuy!*%_Mw DV?X*# diff --git a/resources/animations/zombies/basic_zombie_tree.tres b/resources/animations/zombies/basic_zombie_tree.tres index c8c07ab..26e010d 100644 --- a/resources/animations/zombies/basic_zombie_tree.tres +++ b/resources/animations/zombies/basic_zombie_tree.tres @@ -1,29 +1,41 @@ -[gd_resource type="AnimationNodeStateMachine" load_steps=9 format=3 uid="uid://dj0blope85bg7"] +[gd_resource type="AnimationNodeStateMachine" load_steps=10 format=3 uid="uid://dj0blope85bg7"] [sub_resource type="AnimationNodeAnimation" id="AnimationNodeAnimation_h0rfo"] -animation = &"basic_zombie/eat" +animation = &"basic_zombie_eating" [sub_resource type="AnimationNodeAnimation" id="AnimationNodeAnimation_nog33"] -animation = &"basic_zombie/idle" +animation = &"basic_zombie_stand" [sub_resource type="AnimationNodeAnimation" id="AnimationNodeAnimation_g2uel"] -animation = &"basic_zombie/walk" +animation = &"basic_zombie_walk" + +[sub_resource type="AnimationNodeAnimation" id="AnimationNodeAnimation_w2cv7"] +animation = &"dead_lmao" [sub_resource type="AnimationNodeStateMachineTransition" id="AnimationNodeStateMachineTransition_vxhht"] advance_mode = 2 [sub_resource type="AnimationNodeStateMachineTransition" id="AnimationNodeStateMachineTransition_r8rju"] +xfade_time = 0.5 +break_loop_at_end = true +switch_mode = 2 advance_mode = 2 +advance_expression = "can_process()" [sub_resource type="AnimationNodeStateMachineTransition" id="AnimationNodeStateMachineTransition_y2ivb"] +xfade_time = 0.5 +break_loop_at_end = true +switch_mode = 2 advance_mode = 2 -advance_expression = "get(\"isEating\") == true" +advance_expression = "get(\"isEating\") == true and can_process()" [sub_resource type="AnimationNodeStateMachineTransition" id="AnimationNodeStateMachineTransition_7d3k4"] +xfade_time = 0.5 advance_mode = 2 advance_expression = "get(\"isEating\") == true" [sub_resource type="AnimationNodeStateMachineTransition" id="AnimationNodeStateMachineTransition_kk4wi"] +xfade_time = 0.5 advance_mode = 2 advance_expression = "get(\"isEating\") == false" @@ -35,5 +47,7 @@ states/basic_zombie_idle/node = SubResource("AnimationNodeAnimation_nog33") states/basic_zombie_idle/position = Vector2(366, 100) states/basic_zombie_walk/node = SubResource("AnimationNodeAnimation_g2uel") states/basic_zombie_walk/position = Vector2(575, 35) +states/dead_lmao/node = SubResource("AnimationNodeAnimation_w2cv7") +states/dead_lmao/position = Vector2(778, 100) transitions = ["Start", "basic_zombie_idle", SubResource("AnimationNodeStateMachineTransition_vxhht"), "basic_zombie_idle", "basic_zombie_walk", SubResource("AnimationNodeStateMachineTransition_r8rju"), "basic_zombie_idle", "basic_zombie_eat", SubResource("AnimationNodeStateMachineTransition_y2ivb"), "basic_zombie_walk", "basic_zombie_eat", SubResource("AnimationNodeStateMachineTransition_7d3k4"), "basic_zombie_eat", "basic_zombie_walk", SubResource("AnimationNodeStateMachineTransition_kk4wi")] -graph_offset = Vector2(13, 26) +graph_offset = Vector2(-7, -20) diff --git a/resources/animations/zombies/basic_zombie_walk.res b/resources/animations/zombies/basic_zombie_walk.res index ab83137badc08d963cfd6dd2140c71a90bdafc1f..7bf6d2e5c1bef9850b9efe6efd9fef3664321ac7 100644 GIT binary patch delta 2136 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 OKUaPR9t;;!Q$s_8WA9}E delta 2150 zcmV-s2$}bVN0LVkQd2`i0ssI201yBGC6Nsm86E=w044(f07?S@01*QK0Ph0;0Eq+u z0Q#{#M-2w07y!l^Xp@Q!L4P)Fx>k0RDMA2K09yd(kNOkHVleY`)=-tf+m~yL^8uIb z_gC=truC+`HUqG%2R~I)wuAfoa(d!uX3x*^hvd5b9h};3sEVdGlSlne0YpulkfJD# zRA#eKLY z!fH1lR}4)}*pFbrTbIomYEwP<$#p=^ER$^xAQ4$szweZlkgtadQVoKjECv&ko(?E~ zMKVZ4hV*zsj$o{{L4fQCgt{L-dMK#^rhGBEC?Jm=I<8Ss4jeV_TW{DPx;1DF3GI%M zj8`NST`*{djFuQMUby(n^~>Mdf<+6MTcHAIDFUzMyE>(m%ri+aNhyAO!XBI&fb*#F zxHB~cDODN+Km!p;+Z+<$f)tH045kQw6@dZ@B&d=|d6lF(=6PRlPGk4{MZs6Tp8WP} zXa~rixT;cLHYsh_FK_z%uVHy{yn8w?F@ON&H`6*hY~MO{fb96?>|=SWAjbu~YH?_3 zh&9<7NvTjk#;7SJ1STQwrs88*{DPoereNa*NE?Ng+XC`w1Nh@m9w6rf{C&lLUX-Bd z;>j&}C~kW`3#zjf>l+MCnYzgdLIJO@e|-_!k8Mcz)H)JI9Zx=4>TT`pIyO#v*jQXG z-G=EalMBGM-k4^@Bzmp=g0VpJtbNYbNV2iLNbCJ-51R|mVXsl<_Dp0;7FCpqasy

Z!#r z6AmL3pmjQ)^}Y{Bn$V+zAPQ>#J=q#>WR^v`ceMW4ZP0VZ#%FH+5W9x$qa$3;RiO#; zsUo}zvzich4S)S30M_J)OVI9EV~FyO9$;(0y>Y;A`9KJ7MW-HtVtfdb;v9T{fNEV6mMfF32WSIFn`xe7b%k)bcBg38>0U!W)cVcV}1ZvbilZ~z$pLH-B* zmmSxtXUd)*aA?Y&Y=%^bMT<@$o}pANSt%9=%0!E7h=0x;+lk^3p&f8&>hs^bx~A>f zuIztQXl~r5o;WF@RmU{LgFtO+YKHiK`Vd>P=w=_L0%Z-G04jf!b$nEk|NAfNSOiJ_?+f51|2=Bl{j+;l)-GyD zs-MjLe=bk8(eh5=$^$cwLE`^-+_&;p^{{F%QQNAvbUNQtIumc823e3Qh*9?IHCM}tOl9o&i%*z&h2ZOBtvCXKoTy=O zBr^p`Y7KKC2E-tytUM9`v>cg|MiL>aoTN!%*bP!3`E`|D*r$8p?b2bzB=fTc;A_}) z{~i(CPv^(CO}=zIfxN3)UxL!U9UEvvsDGTE^``B&n3B5U6)D__XrwJ@hQ7h z7uKe`A2Kj-CNS`LP)6%@d!}>1^Zoe!94#bHl#Y!>!~0l+e#8EcImBA%?)COUdhMU- zQ*U0&i^vbCPceRPgOOHxB*6F{;gz7wewCigl>CJ?uD&VSU7sE0%;)XJw59(hYk$@K z`Kr$U`)Z;OYx&y$!y)p(AFoJ}ovz;yOW|&#p6W&4)~5gDho`1EeTC?Jb&YLJDGu~G zubPTvrbX5{=4 zXr@80XM^QD@rwhfhkJsKdoGhxLVpj53Gku=%xVd1uJDw-Cigp*G2f2tHr0065qS)c zv9&Y&7M&CN-$V~%zu|w$;15qyLS6v;O`4rEI&e1N8;$>2!XLcpeM<5cmUCHT)#BlW z#-{US-lX2Eyh@#zquqNE@Otcq+=}OuvC5`xTu+tDumlEh@r4B}q0xzjN{VeCB9mb4O`K}vk@3@9H7IBCj(ge z#1=g?;8|=os!h<6i1~s^>3@88?TkcXs;kg(swlND{a_^lg$DqF%OfjrPnrY#|NsC0 z|NsC0|I_$1v)Y$?BQ1~}n6CGvPll*8e)rU0|BVnVB`F@956&;QXfApytc5*oNv}nU zrF51QLF@|;ABwb86oXug_%r~e#^N5;n#(-7a5P~X(4$e&aff%_z<+Rw1+mGXP$)^j zV0_@<>IMZTIl)J+d1jiX=@&;h5p#iyJm4YU9ONz_5CaLQ<^eMXc+r`DEYMIgcO*|3 z$Z_hfH~K{%x-lC`nHH9B#&qI-ABmMW(FOu`XY&#@456Qo^8KcX< c`PR&4;aLwv0R*r;p9@_19hd<-0a8;#LtF0`-2eap diff --git a/scenes/entities/Zombies/bucket_zombie.tscn b/scenes/entities/Zombies/bucket_zombie.tscn index a0a21f2..66a8c37 100644 --- a/scenes/entities/Zombies/bucket_zombie.tscn +++ b/scenes/entities/Zombies/bucket_zombie.tscn @@ -34,23 +34,70 @@ mult_value = 1.0 [node name="CanvasGroup" parent="." index="0"] material = SubResource("ShaderMaterial_wdi07") -[node name="Hat" parent="CanvasGroup" index="1"] -position = Vector2(-13, -82) +[node name="Butt" parent="CanvasGroup/basic_zombie_walk/Zombie" index="0"] +scale = Vector2(0.999912, 0.999912) -[node name="Sprite" parent="CanvasGroup/Hat" index="0"] -position = Vector2(1, 0) +[node name="RightUpperLeg" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt" index="1"] +scale = Vector2(0.999828, 0.999828) + +[node name="RightLowerLeg" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/RightUpperLeg" index="1"] +scale = Vector2(0.999833, 0.999833) + +[node name="RightFoot" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/RightUpperLeg/RightLowerLeg" index="0"] +scale = Vector2(0.999831, 0.999831) + +[node name="LeftUpperLeg" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt" index="2"] +scale = Vector2(0.999834, 0.999834) + +[node name="LeftLowerLeg" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/LeftUpperLeg" index="1"] +scale = Vector2(0.999832, 0.999832) + +[node name="LeftFoot" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/LeftUpperLeg/LeftLowerLeg" index="1"] +scale = Vector2(0.999823, 0.999823) + +[node name="Body" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt" index="3"] +scale = Vector2(0.999829, 0.999829) + +[node name="RightUpperArm" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body" index="0"] +scale = Vector2(0.999824, 0.999824) + +[node name="RightLowerArm" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/RightUpperArm" index="1"] +scale = Vector2(0.999821, 0.999821) + +[node name="RightHand" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/RightUpperArm/RightLowerArm" index="0"] +scale = Vector2(0.999828, 0.999828) + +[node name="Head" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body" index="3"] +scale = Vector2(0.999828, 0.999828) + +[node name="Hat" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/Head/Head" index="0"] +position = Vector2(-4.00424, -6.00927) + +[node name="Sprite" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/Head/Head/Hat" index="0"] texture = ExtResource("3_0nlp0") degradationStages = Array[Texture]([ExtResource("3_0nlp0"), ExtResource("4_xx7fu"), ExtResource("5_v1iwd")]) +[node name="Jaw" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/Head" index="1"] +scale = Vector2(0.999828, 0.999828) + +[node name="LeftUpperArm" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body" index="4"] +scale = Vector2(0.999826, 0.999826) + +[node name="LeftLowerArm" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/LeftUpperArm" index="1"] +scale = Vector2(0.999829, 0.999829) + +[node name="LeftHand" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/LeftUpperArm/LeftLowerArm" index="0"] +scale = Vector2(0.999828, 0.999828) + [node name="Eatbox" parent="." index="2"] _damage = SubResource("Resource_2bm8y") -[node name="Mover" parent="." index="5"] +[node name="Mover" parent="." index="4"] _speed = SubResource("Resource_lt6ps") -[node name="Armor" parent="." index="7"] -MaxHP = 385 - -[node name="HitPlayer" parent="." index="8"] +[node name="HitPlayer" parent="." index="6"] playlist = Array[AudioStream]([ExtResource("5_lt6ps"), ExtResource("6_kedip")]) channels = Array[String](["metal_hit", "hit"]) + +[node name="Armor" parent="." index="7"] +MaxHP = 375.0 diff --git a/scenes/entities/Zombies/cone_zombie.tscn b/scenes/entities/Zombies/cone_zombie.tscn index ed27754..118f53e 100644 --- a/scenes/entities/Zombies/cone_zombie.tscn +++ b/scenes/entities/Zombies/cone_zombie.tscn @@ -40,45 +40,94 @@ _armor = NodePath("Armor") [node name="CanvasGroup" parent="." index="0"] material = SubResource("ShaderMaterial_sat5k") -[node name="Hat" type="RigidBody2D" parent="CanvasGroup" index="1" node_paths=PackedStringArray("data")] -position = Vector2(-9, -76) +[node name="RightUpperLeg" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt" index="1"] +scale = Vector2(0.999834, 0.999834) + +[node name="RightLowerLeg" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/RightUpperLeg" index="1"] +scale = Vector2(0.999838, 0.999838) + +[node name="RightFoot" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/RightUpperLeg/RightLowerLeg" index="0"] +scale = Vector2(0.999833, 0.999833) + +[node name="LeftUpperLeg" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt" index="2"] +scale = Vector2(0.999832, 0.999832) + +[node name="LeftLowerLeg" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/LeftUpperLeg" index="1"] +scale = Vector2(0.999833, 0.999833) + +[node name="LeftFoot" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/LeftUpperLeg/LeftLowerLeg" index="1"] +scale = Vector2(0.999828, 0.999828) + +[node name="Body" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt" index="3"] +scale = Vector2(0.999828, 0.999828) + +[node name="RightUpperArm" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body" index="0"] +scale = Vector2(0.999828, 0.999828) + +[node name="RightLowerArm" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/RightUpperArm" index="1"] +scale = Vector2(0.99983, 0.99983) + +[node name="RightHand" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/RightUpperArm/RightLowerArm" index="0"] +scale = Vector2(0.999829, 0.999829) + +[node name="Tie" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body" index="2"] +skew = -8.49962e-05 + +[node name="Head" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body" index="3"] +scale = Vector2(0.999828, 0.999828) + +[node name="Hat" type="RigidBody2D" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/Head/Head" index="0" node_paths=PackedStringArray("data")] +position = Vector2(-2.5, -13.5) +scale = Vector2(1.00043, 1.00043) collision_layer = 128 collision_mask = 64 mass = 0.5 center_of_mass_mode = 1 freeze = true script = ExtResource("3_w70im") -data = NodePath("../..") +data = NodePath("../../../../../../../..") maxAngle = 45.0 minTorque = -45.0 maxTorque = 45.0 Impulse = 100.0 -[node name="Sprite" type="Sprite2D" parent="CanvasGroup/Hat" index="0" node_paths=PackedStringArray("armor")] +[node name="Sprite" type="Sprite2D" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/Head/Head/Hat" index="0" node_paths=PackedStringArray("armor")] position = Vector2(-1, -12) texture = ExtResource("4_qdhik") script = ExtResource("5_ickyd") -armor = NodePath("../../../Armor") +armor = NodePath("../../../../../../../../../Armor") degradationStages = Array[Texture]([ExtResource("4_qdhik"), ExtResource("6_b6mal"), ExtResource("7_011r0")]) thresholdPercentage = Array[float]([1.0, 0.667, 0.333]) -[node name="CollisionShape2D" type="CollisionShape2D" parent="CanvasGroup/Hat" index="1"] +[node name="CollisionShape2D" type="CollisionShape2D" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/Head/Head/Hat" index="1"] position = Vector2(1, -6) shape = SubResource("CircleShape2D_67t4t") +[node name="Jaw" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/Head" index="1"] +scale = Vector2(0.999828, 0.999828) + +[node name="LeftUpperArm" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body" index="4"] +scale = Vector2(0.99983, 0.99983) + +[node name="LeftLowerArm" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/LeftUpperArm" index="1"] +scale = Vector2(0.999828, 0.999828) + +[node name="LeftHand" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/LeftUpperArm/LeftLowerArm" index="0"] +scale = Vector2(0.999829, 0.999829) + [node name="Eatbox" parent="." index="2"] _damage = SubResource("Resource_w70im") -[node name="Mover" parent="." index="5"] +[node name="Mover" parent="." index="4"] _speed = SubResource("Resource_qof5v") -[node name="Armor" type="Node" parent="." index="7"] -script = ExtResource("3_5s7in") -MaxHP = 130 - -[node name="HitPlayer" parent="." index="8"] +[node name="HitPlayer" parent="." index="6"] playlist = Array[AudioStream]([ExtResource("7_0amn8"), ExtResource("7_67t4t")]) channels = Array[String](["plastic_hit", "hit"]) +[node name="Armor" type="Node" parent="." index="7"] +script = ExtResource("3_5s7in") +MaxHP = 135.0 + [connection signal="ArmorLost" from="Armor" to="HitPlayer" method="Next"] -[connection signal="ArmorLost" from="Armor" to="CanvasGroup/Hat" method="FallOff"] +[connection signal="ArmorLost" from="Armor" to="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/Head/Head/Hat" method="FallOff"] diff --git a/scenes/entities/Zombies/hobo.tscn b/scenes/entities/Zombies/hobo.tscn index 8751989..e288cef 100644 --- a/scenes/entities/Zombies/hobo.tscn +++ b/scenes/entities/Zombies/hobo.tscn @@ -1,12 +1,10 @@ -[gd_scene load_steps=48 format=3 uid="uid://bgqmwsb6ynm81"] +[gd_scene load_steps=41 format=3 uid="uid://bgqmwsb6ynm81"] [ext_resource type="PackedScene" uid="uid://co11v3w8hbwgf" path="res://scenes/entities/Zombies/zombie.tscn" id="1_fnu7s"] [ext_resource type="Shader" uid="uid://d0eo5uuj222c4" path="res://assets/shaders/CG_color_blender.gdshader" id="2_6qr4h"] -[ext_resource type="Script" uid="uid://bcc7skl7ts6sh" path="res://scripts/systems/effects/Effect.cs" id="2_txjqc"] [ext_resource type="Texture2D" uid="uid://cse1504ao4g8e" path="res://assets/sprites/atlases/zombies/hobo.png" id="3_6qr4h"] [ext_resource type="Resource" uid="uid://dsg1vjx76ifgu" path="res://resources/effects/GarlicEffect.tres" id="3_b583s"] [ext_resource type="Script" uid="uid://dt5uj25u0g6y3" path="res://scripts/components/particles/FallParticle.cs" id="3_tu6af"] -[ext_resource type="AnimationLibrary" uid="uid://cuh2kyb21hmkm" path="res://resources/animations/zombies/basic_zombie.res" id="4_02fim"] [ext_resource type="Script" uid="uid://c5v2og85t7s6j" path="res://scripts/components/zombies/behaviours/HoboBehaviour.cs" id="4_5selg"] [ext_resource type="Script" uid="uid://c3cfnrmnnuqms" path="res://addons/floatmodifiers/FloatModifiers.cs" id="4_c1y3b"] [ext_resource type="Script" uid="uid://fd4im1fmwc5n" path="res://scripts/components/Armor.cs" id="4_w8pya"] @@ -44,130 +42,22 @@ flat_value = 10.0 percentage_value = 0.0 mult_value = 1.0 -[sub_resource type="Animation" id="Animation_qv5y7"] -length = 0.001 -tracks/0/type = "value" -tracks/0/imported = false -tracks/0/enabled = true -tracks/0/path = NodePath("CanvasGroup/Sprite:self_modulate") -tracks/0/interp = 1 -tracks/0/loop_wrap = true -tracks/0/keys = { -"times": PackedFloat32Array(0), -"transitions": PackedFloat32Array(1), -"update": 0, -"values": [Color(1, 1, 1, 1)] -} -tracks/1/type = "value" -tracks/1/imported = false -tracks/1/enabled = true -tracks/1/path = NodePath("Mover:_speedControlMult") -tracks/1/interp = 1 -tracks/1/loop_wrap = true -tracks/1/keys = { -"times": PackedFloat32Array(0), -"transitions": PackedFloat32Array(1), -"update": 0, -"values": [0.0] -} - -[sub_resource type="AnimationLibrary" id="AnimationLibrary_sq25x"] -_data = { -&"RESET": SubResource("Animation_qv5y7") -} - -[sub_resource type="Animation" id="Animation_w8pya"] -length = 2.0 -tracks/0/type = "method" -tracks/0/imported = false -tracks/0/enabled = true -tracks/0/path = NodePath("Mover") -tracks/0/interp = 1 -tracks/0/loop_wrap = true -tracks/0/keys = { -"times": PackedFloat32Array(1.93333), -"transitions": PackedFloat32Array(1), -"values": [{ -"args": [3.0], -"method": &"SetSpeedMult" -}] -} -tracks/1/type = "value" -tracks/1/imported = false -tracks/1/enabled = true -tracks/1/path = NodePath("CanvasGroup/Sprite:self_modulate") -tracks/1/interp = 1 -tracks/1/loop_wrap = true -tracks/1/keys = { -"times": PackedFloat32Array(0, 2), -"transitions": PackedFloat32Array(1, 1), -"update": 0, -"values": [Color(1, 1, 1, 1), Color(1, 0, 0, 1)] -} -tracks/2/type = "value" -tracks/2/imported = false -tracks/2/enabled = true -tracks/2/path = NodePath("Mover:_speedControlMult") -tracks/2/interp = 1 -tracks/2/loop_wrap = true -tracks/2/keys = { -"times": PackedFloat32Array(0, 2), -"transitions": PackedFloat32Array(1, 1), -"update": 1, -"values": [0.0, 1.0] -} -tracks/3/type = "method" -tracks/3/imported = false -tracks/3/enabled = true -tracks/3/path = NodePath("RipPlayer") -tracks/3/interp = 1 -tracks/3/loop_wrap = true -tracks/3/keys = { -"times": PackedFloat32Array(1.96667), -"transitions": PackedFloat32Array(1), -"values": [{ -"args": [], -"method": &"Play" -}] -} - -[sub_resource type="Animation" id="Animation_5selg"] -resource_name = "walk" -tracks/0/type = "value" -tracks/0/imported = false -tracks/0/enabled = true -tracks/0/path = NodePath("Mover:_speedControlMult") -tracks/0/interp = 1 -tracks/0/loop_wrap = true -tracks/0/keys = { -"times": PackedFloat32Array(0), -"transitions": PackedFloat32Array(1), -"update": 0, -"values": [1.0] -} - -[sub_resource type="AnimationLibrary" id="AnimationLibrary_5selg"] -_data = { -&"can_destroy": SubResource("Animation_w8pya"), -&"run": SubResource("Animation_5selg") -} - [sub_resource type="AnimationNodeTimeScale" id="AnimationNodeTimeScale_2q05d"] [sub_resource type="AnimationNodeAnimation" id="AnimationNodeAnimation_h0rfo"] -animation = &"basic_zombie/eat" +animation = &"basic_zombie_eating" [sub_resource type="AnimationNodeAnimation" id="AnimationNodeAnimation_nog33"] -animation = &"basic_zombie/idle" +animation = &"basic_zombie_stand" [sub_resource type="AnimationNodeAnimation" id="AnimationNodeAnimation_g2uel"] -animation = &"basic_zombie/walk" +animation = &"basic_zombie_walk" [sub_resource type="AnimationNodeAnimation" id="AnimationNodeAnimation_02fim"] animation = &"hobo_zombie/can_destroy" [sub_resource type="AnimationNodeAnimation" id="AnimationNodeAnimation_c1y3b"] -animation = &"hobo_zombie/run" +animation = &"basic_zombie_walk" [sub_resource type="AnimationNodeStateMachineTransition" id="AnimationNodeStateMachineTransition_vxhht"] advance_mode = 2 @@ -221,7 +111,7 @@ states/hobo_zombie_can_destroy/position = Vector2(368, 206) states/hobo_zombie_run/node = SubResource("AnimationNodeAnimation_c1y3b") states/hobo_zombie_run/position = Vector2(866, 89) transitions = ["Start", "basic_zombie_idle", SubResource("AnimationNodeStateMachineTransition_vxhht"), "basic_zombie_idle", "basic_zombie_eat", SubResource("AnimationNodeStateMachineTransition_y2ivb"), "basic_zombie_walk", "basic_zombie_eat", SubResource("AnimationNodeStateMachineTransition_7d3k4"), "basic_zombie_idle", "basic_zombie_walk", SubResource("AnimationNodeStateMachineTransition_qg8rq"), "basic_zombie_idle", "hobo_zombie_run", SubResource("AnimationNodeStateMachineTransition_4248q"), "hobo_zombie_run", "basic_zombie_eat", SubResource("AnimationNodeStateMachineTransition_tu6af"), "basic_zombie_eat", "hobo_zombie_run", SubResource("AnimationNodeStateMachineTransition_yalvk"), "hobo_zombie_can_destroy", "basic_zombie_idle", SubResource("AnimationNodeStateMachineTransition_7jlle"), "basic_zombie_eat", "basic_zombie_walk", SubResource("AnimationNodeStateMachineTransition_w1b1s"), "basic_zombie_walk", "hobo_zombie_run", SubResource("AnimationNodeStateMachineTransition_02fim")] -graph_offset = Vector2(210, 91) +graph_offset = Vector2(-30, 35) [sub_resource type="AnimationNodeBlendTree" id="AnimationNodeBlendTree_txjqc"] graph_offset = Vector2(-447, 53) @@ -241,11 +131,56 @@ mult_value = 1.0 [node name="Hobo" node_paths=PackedStringArray("_armor") instance=ExtResource("1_fnu7s")] _armor = NodePath("CanArmor") MaxHP = 130.0 -_effectImmunities = Array[ExtResource("2_txjqc")]([ExtResource("3_b583s")]) +_effectImmunities = [ExtResource("3_b583s")] [node name="CanvasGroup" parent="." index="0"] material = SubResource("ShaderMaterial_w8pya") +[node name="RightUpperLeg" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt" index="1"] +scale = Vector2(0.999825, 0.999825) + +[node name="RightLowerLeg" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/RightUpperLeg" index="1"] +scale = Vector2(0.999829, 0.999829) + +[node name="RightFoot" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/RightUpperLeg/RightLowerLeg" index="0"] +scale = Vector2(0.999826, 0.999826) + +[node name="LeftUpperLeg" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt" index="2"] +scale = Vector2(0.999829, 0.999829) + +[node name="LeftLowerLeg" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/LeftUpperLeg" index="1"] +scale = Vector2(0.999829, 0.999829) + +[node name="LeftFoot" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/LeftUpperLeg/LeftLowerLeg" index="1"] +scale = Vector2(0.999824, 0.999824) + +[node name="Body" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt" index="3"] +scale = Vector2(0.999829, 0.999829) + +[node name="RightUpperArm" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body" index="0"] +scale = Vector2(0.99983, 0.99983) + +[node name="RightLowerArm" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/RightUpperArm" index="1"] +scale = Vector2(0.99982, 0.99982) + +[node name="RightHand" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/RightUpperArm/RightLowerArm" index="0"] +scale = Vector2(0.99983, 0.99983) + +[node name="Head" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body" index="3"] +scale = Vector2(0.999829, 0.999829) + +[node name="Jaw" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/Head" index="1"] +scale = Vector2(0.999831, 0.999831) + +[node name="LeftUpperArm" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body" index="4"] +scale = Vector2(0.99983, 0.99983) + +[node name="LeftLowerArm" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/LeftUpperArm" index="1"] +scale = Vector2(0.999829, 0.999829) + +[node name="LeftHand" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/LeftUpperArm/LeftLowerArm" index="0"] +scale = Vector2(0.999829, 0.999829) + [node name="Can" type="RigidBody2D" parent="CanvasGroup" index="1" node_paths=PackedStringArray("data")] collision_layer = 128 collision_mask = 64 @@ -277,22 +212,17 @@ shape = SubResource("CapsuleShape2D_4248q") [node name="Eatbox" parent="." index="2"] _damage = SubResource("Resource_qg8rq") -[node name="AnimationPlayer" parent="." index="3"] -libraries = { -&"": SubResource("AnimationLibrary_sq25x"), -&"basic_zombie": ExtResource("4_02fim"), -&"hobo_zombie": SubResource("AnimationLibrary_5selg") -} -autoplay = "baisc_zombie/walk" -speed_scale = 3.0 - -[node name="AnimationTree" parent="." index="4"] +[node name="AnimationTree" parent="." index="3"] tree_root = SubResource("AnimationNodeBlendTree_txjqc") advance_expression_base_node = NodePath("../Behaviour") -[node name="Mover" parent="." index="5"] +[node name="Mover" parent="." index="4"] _speed = SubResource("Resource_4248q") +[node name="HitPlayer" parent="." index="6"] +playlist = Array[AudioStream]([ExtResource("8_4248q"), ExtResource("9_tu6af")]) +channels = Array[String](["metal_hit", "hit"]) + [node name="CanArmor" type="Node" parent="." index="7"] script = ExtResource("4_w8pya") MaxHP = 385.0 @@ -303,10 +233,6 @@ script = ExtResource("4_5selg") _eatBox = NodePath("../Eatbox") _animationTree = NodePath("../AnimationTree") -[node name="HitPlayer" parent="." index="9"] -playlist = Array[AudioStream]([ExtResource("8_4248q"), ExtResource("9_tu6af")]) -channels = Array[String](["metal_hit", "hit"]) - [node name="RipPlayer" type="Node" parent="." index="11"] script = ExtResource("11_7jlle") audioStream = ExtResource("12_w1b1s") diff --git a/scenes/entities/Zombies/zombie.tscn b/scenes/entities/Zombies/zombie.tscn index 60dabed..84b9fac 100644 --- a/scenes/entities/Zombies/zombie.tscn +++ b/scenes/entities/Zombies/zombie.tscn @@ -1,14 +1,13 @@ -[gd_scene load_steps=32 format=3 uid="uid://co11v3w8hbwgf"] +[gd_scene load_steps=60 format=3 uid="uid://co11v3w8hbwgf"] [ext_resource type="Script" uid="uid://dildme6epx8l4" path="res://scripts/components/zombies/RuntimeZombieData.cs" id="1_qq3f1"] -[ext_resource type="Texture2D" uid="uid://bwdqbrnn7ygtr" path="res://assets/sprites/atlases/zombies/Зондби.png" id="2_4pdxh"] [ext_resource type="AudioStream" uid="uid://dt13iugnnx4op" path="res://assets/audio/sfx/yuck_generic.tres" id="2_hh4qh"] [ext_resource type="Shader" uid="uid://d0eo5uuj222c4" path="res://assets/shaders/CG_color_blender.gdshader" id="2_srwwe"] [ext_resource type="Script" uid="uid://dqyony6jxt2p0" path="res://scripts/components/zombies/EatBox.cs" id="3_2aulo"] [ext_resource type="AudioStream" uid="uid://bjotp63arocci" path="res://assets/audio/sfx/frozen.mp3" id="3_ltj46"] [ext_resource type="Script" uid="uid://c5vfccegyy01t" path="res://scripts/components/FlashComponent.cs" id="3_rao3m"] [ext_resource type="Script" uid="uid://7hdj2k14lfe4" path="res://scripts/components/zombies/ZombieMover.cs" id="4_u5syx"] -[ext_resource type="AnimationLibrary" uid="uid://cuh2kyb21hmkm" path="res://resources/animations/zombies/basic_zombie.res" id="6_ckb7n"] +[ext_resource type="Texture2D" uid="uid://dacgbwohpmeed" path="res://assets/sprites/zombies/basic.png" id="6_xnora"] [ext_resource type="Script" uid="uid://c3cfnrmnnuqms" path="res://addons/floatmodifiers/FloatModifiers.cs" id="7_b3p4o"] [ext_resource type="AnimationNodeStateMachine" uid="uid://dj0blope85bg7" path="res://resources/animations/zombies/basic_zombie_tree.tres" id="8_ckb7n"] [ext_resource type="Script" uid="uid://c36bj8u7jghc7" path="res://scripts/audio/ChannelPlayer.cs" id="10_ruqsf"] @@ -28,42 +27,2705 @@ shader = ExtResource("2_srwwe") shader_parameter/blend_color = Color(0.73, 0.73, 0.73, 1) shader_parameter/amount = 0.0 -[sub_resource type="RectangleShape2D" id="RectangleShape2D_hxyad"] -size = Vector2(2, 48) +[sub_resource type="SkeletonModification2DCCDIK" id="SkeletonModification2DCCDIK_wn68q"] +tip_nodepath = NodePath("Butt/Body/LeftUpperArm/LeftLowerArm/LeftHand") +ccdik_data_chain_length = 2 +joint_data/0/bone_index = 17 +joint_data/0/bone2d_node = NodePath("Butt/Body/LeftUpperArm/LeftLowerArm") +joint_data/0/rotate_from_joint = false +joint_data/0/enable_constraint = true +joint_data/0/constraint_angle_min = 0.0 +joint_data/0/constraint_angle_max = 90.0 +joint_data/0/constraint_angle_invert = false +joint_data/0/constraint_in_localspace = true +joint_data/0/editor_draw_gizmo = true +joint_data/1/bone_index = 16 +joint_data/1/bone2d_node = NodePath("Butt/Body/LeftUpperArm") +joint_data/1/rotate_from_joint = false +joint_data/1/enable_constraint = false +joint_data/1/editor_draw_gizmo = true +editor/draw_gizmo = false -[sub_resource type="Resource" id="Resource_ruqsf"] -resource_local_to_scene = true -script = ExtResource("7_b3p4o") -flat_value = 10.0 -percentage_value = 0.0 -mult_value = 1.0 +[sub_resource type="SkeletonModification2DCCDIK" id="SkeletonModification2DCCDIK_x5uj2"] +tip_nodepath = NodePath("Butt/Body/RightUpperArm/RightLowerArm/RightHand") +ccdik_data_chain_length = 2 +joint_data/0/bone_index = 8 +joint_data/0/bone2d_node = NodePath("Butt/Body/RightUpperArm") +joint_data/0/rotate_from_joint = false +joint_data/0/enable_constraint = false +joint_data/0/editor_draw_gizmo = true +joint_data/1/bone_index = 9 +joint_data/1/bone2d_node = NodePath("Butt/Body/RightUpperArm/RightLowerArm") +joint_data/1/rotate_from_joint = false +joint_data/1/enable_constraint = true +joint_data/1/constraint_angle_min = 0.0 +joint_data/1/constraint_angle_max = 90.0 +joint_data/1/constraint_angle_invert = false +joint_data/1/constraint_in_localspace = true +joint_data/1/editor_draw_gizmo = true +editor/draw_gizmo = false -[sub_resource type="RectangleShape2D" id="RectangleShape2D_r4ug6"] -size = Vector2(16, 48) +[sub_resource type="SkeletonModification2DCCDIK" id="SkeletonModification2DCCDIK_vcc72"] +tip_nodepath = NodePath("Butt/RightUpperLeg/RightLowerLeg/RightFoot") +ccdik_data_chain_length = 2 +joint_data/0/bone_index = 1 +joint_data/0/bone2d_node = NodePath("Butt/RightUpperLeg") +joint_data/0/rotate_from_joint = false +joint_data/0/enable_constraint = true +joint_data/0/constraint_angle_min = -90.0 +joint_data/0/constraint_angle_max = 90.0 +joint_data/0/constraint_angle_invert = true +joint_data/0/constraint_in_localspace = true +joint_data/0/editor_draw_gizmo = true +joint_data/1/bone_index = 2 +joint_data/1/bone2d_node = NodePath("Butt/RightUpperLeg/RightLowerLeg") +joint_data/1/rotate_from_joint = false +joint_data/1/enable_constraint = true +joint_data/1/constraint_angle_min = 0.0 +joint_data/1/constraint_angle_max = 160.0 +joint_data/1/constraint_angle_invert = false +joint_data/1/constraint_in_localspace = true +joint_data/1/editor_draw_gizmo = true +editor/draw_gizmo = false -[sub_resource type="Animation" id="Animation_qv5y7"] -length = 0.001 +[sub_resource type="SkeletonModification2DCCDIK" id="SkeletonModification2DCCDIK_kto0i"] +tip_nodepath = NodePath("Butt/LeftUpperLeg/LeftLowerLeg/LeftFoot") +ccdik_data_chain_length = 2 +joint_data/0/bone_index = 4 +joint_data/0/bone2d_node = NodePath("Butt/LeftUpperLeg") +joint_data/0/rotate_from_joint = false +joint_data/0/enable_constraint = true +joint_data/0/constraint_angle_min = -90.0 +joint_data/0/constraint_angle_max = 90.0 +joint_data/0/constraint_angle_invert = true +joint_data/0/constraint_in_localspace = true +joint_data/0/editor_draw_gizmo = true +joint_data/1/bone_index = 5 +joint_data/1/bone2d_node = NodePath("Butt/LeftUpperLeg/LeftLowerLeg") +joint_data/1/rotate_from_joint = false +joint_data/1/enable_constraint = true +joint_data/1/constraint_angle_min = -90.0 +joint_data/1/constraint_angle_max = 0.0 +joint_data/1/constraint_angle_invert = true +joint_data/1/constraint_in_localspace = true +joint_data/1/editor_draw_gizmo = true +editor/draw_gizmo = false + +[sub_resource type="SkeletonModificationStack2D" id="SkeletonModificationStack2D_wn68q"] +modification_count = 4 +modifications/0 = SubResource("SkeletonModification2DCCDIK_wn68q") +modifications/1 = SubResource("SkeletonModification2DCCDIK_x5uj2") +modifications/2 = SubResource("SkeletonModification2DCCDIK_vcc72") +modifications/3 = SubResource("SkeletonModification2DCCDIK_kto0i") + +[sub_resource type="AtlasTexture" id="AtlasTexture_jvn5w"] +atlas = ExtResource("6_xnora") +region = Rect2(15, 30, 20, 8) + +[sub_resource type="AtlasTexture" id="AtlasTexture_vmdbp"] +atlas = ExtResource("6_xnora") +region = Rect2(64, 44, 10, 16) + +[sub_resource type="AtlasTexture" id="AtlasTexture_x1oyw"] +atlas = ExtResource("6_xnora") +region = Rect2(93, 50, 17, 9) + +[sub_resource type="AtlasTexture" id="AtlasTexture_vjx3c"] +atlas = ExtResource("6_xnora") +region = Rect2(79, 44, 10, 16) + +[sub_resource type="AtlasTexture" id="AtlasTexture_f31xd"] +atlas = ExtResource("6_xnora") +region = Rect2(47, 33, 8, 16) + +[sub_resource type="AtlasTexture" id="AtlasTexture_od8jf"] +atlas = ExtResource("6_xnora") +region = Rect2(59, 33, 7, 10) + +[sub_resource type="AtlasTexture" id="AtlasTexture_p4711"] +atlas = ExtResource("6_xnora") +region = Rect2(71, 30, 19, 13) + +[sub_resource type="AtlasTexture" id="AtlasTexture_1bk2b"] +atlas = ExtResource("6_xnora") +region = Rect2(12, 43, 6, 18) + +[sub_resource type="AtlasTexture" id="AtlasTexture_y06yv"] +atlas = ExtResource("6_xnora") +region = Rect2(36, 50, 9, 11) + +[sub_resource type="AtlasTexture" id="AtlasTexture_lu8go"] +atlas = ExtResource("6_xnora") +region = Rect2(22, 45, 8, 15) + +[sub_resource type="AtlasTexture" id="AtlasTexture_cdq7v"] +atlas = ExtResource("6_xnora") +region = Rect2(93, 8, 29, 39) + +[sub_resource type="AtlasTexture" id="AtlasTexture_e7wc3"] +atlas = ExtResource("6_xnora") +region = Rect2(72, 2, 13, 26) + +[sub_resource type="AtlasTexture" id="AtlasTexture_wn68q"] +atlas = ExtResource("6_xnora") +region = Rect2(36, 0, 32, 29) + +[sub_resource type="AtlasTexture" id="AtlasTexture_x5uj2"] +atlas = ExtResource("6_xnora") +region = Rect2(15, 17, 17, 6) + +[sub_resource type="AtlasTexture" id="AtlasTexture_vcc72"] +atlas = ExtResource("6_xnora") +region = Rect2(93, 3, 2, 3) + +[sub_resource type="AtlasTexture" id="AtlasTexture_kto0i"] +atlas = ExtResource("6_xnora") +region = Rect2(105, 2, 3, 4) + +[sub_resource type="AtlasTexture" id="AtlasTexture_djocr"] +atlas = ExtResource("6_xnora") +region = Rect2(2, 7, 6, 19) + +[sub_resource type="AtlasTexture" id="AtlasTexture_6y4ja"] +atlas = ExtResource("6_xnora") +region = Rect2(13, 2, 9, 10) + +[sub_resource type="AtlasTexture" id="AtlasTexture_auqeq"] +atlas = ExtResource("6_xnora") +region = Rect2(0, 32, 9, 15) + +[sub_resource type="Animation" id="Animation_x5uj2"] tracks/0/type = "value" tracks/0/imported = false tracks/0/enabled = true -tracks/0/path = NodePath("Mover:_speedControlMult") +tracks/0/path = NodePath("Zombie/Butt/Body/LeftUpperArm/LeftLowerArm:position") tracks/0/interp = 1 tracks/0/loop_wrap = true tracks/0/keys = { "times": PackedFloat32Array(0), "transitions": PackedFloat32Array(1), "update": 0, +"values": [Vector2(-2, 14)] +} +tracks/1/type = "value" +tracks/1/imported = false +tracks/1/enabled = true +tracks/1/path = NodePath("Zombie/Butt/Body/LeftUpperArm/LeftLowerArm:rotation") +tracks/1/interp = 1 +tracks/1/loop_wrap = true +tracks/1/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 0, +"values": [0.0] +} +tracks/2/type = "value" +tracks/2/imported = false +tracks/2/enabled = true +tracks/2/path = NodePath("Zombie/Butt/Body/LeftUpperArm/LeftLowerArm/LeftHand:position") +tracks/2/interp = 1 +tracks/2/loop_wrap = true +tracks/2/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 0, +"values": [Vector2(-1, 13)] +} +tracks/3/type = "value" +tracks/3/imported = false +tracks/3/enabled = true +tracks/3/path = NodePath("Zombie/Butt/Body/LeftUpperArm/LeftLowerArm/LeftHand:rotation") +tracks/3/interp = 1 +tracks/3/loop_wrap = true +tracks/3/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 0, +"values": [0.0] +} +tracks/4/type = "value" +tracks/4/imported = false +tracks/4/enabled = true +tracks/4/path = NodePath("Zombie/Butt/Body/LeftUpperArm:position") +tracks/4/interp = 1 +tracks/4/loop_wrap = true +tracks/4/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 0, +"values": [Vector2(-1, -20)] +} +tracks/5/type = "value" +tracks/5/imported = false +tracks/5/enabled = true +tracks/5/path = NodePath("Zombie/Butt/Body/LeftUpperArm:rotation") +tracks/5/interp = 1 +tracks/5/loop_wrap = true +tracks/5/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 0, +"values": [0.0] +} +tracks/6/type = "value" +tracks/6/imported = false +tracks/6/enabled = true +tracks/6/path = NodePath("Zombie/Butt/Body/Head/LeftEye:position") +tracks/6/interp = 1 +tracks/6/loop_wrap = true +tracks/6/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 0, +"values": [Vector2(-4, -9)] +} +tracks/7/type = "value" +tracks/7/imported = false +tracks/7/enabled = true +tracks/7/path = NodePath("Zombie/Butt/Body/Head/LeftEye:rotation") +tracks/7/interp = 1 +tracks/7/loop_wrap = true +tracks/7/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 0, +"values": [0.0] +} +tracks/8/type = "value" +tracks/8/imported = false +tracks/8/enabled = true +tracks/8/path = NodePath("Zombie/Butt/Body/Head/RightEye:position") +tracks/8/interp = 1 +tracks/8/loop_wrap = true +tracks/8/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 0, +"values": [Vector2(-16, -8)] +} +tracks/9/type = "value" +tracks/9/imported = false +tracks/9/enabled = true +tracks/9/path = NodePath("Zombie/Butt/Body/Head/RightEye:rotation") +tracks/9/interp = 1 +tracks/9/loop_wrap = true +tracks/9/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 0, +"values": [0.0] +} +tracks/10/type = "value" +tracks/10/imported = false +tracks/10/enabled = true +tracks/10/path = NodePath("Zombie/Butt/Body/Head/Jaw:position") +tracks/10/interp = 1 +tracks/10/loop_wrap = true +tracks/10/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 0, +"values": [Vector2(-3, 3)] +} +tracks/11/type = "value" +tracks/11/imported = false +tracks/11/enabled = true +tracks/11/path = NodePath("Zombie/Butt/Body/Head/Jaw:rotation") +tracks/11/interp = 1 +tracks/11/loop_wrap = true +tracks/11/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 0, +"values": [0.0] +} +tracks/12/type = "value" +tracks/12/imported = false +tracks/12/enabled = true +tracks/12/path = NodePath("Zombie/Butt/Body/Tie:position") +tracks/12/interp = 1 +tracks/12/loop_wrap = true +tracks/12/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 0, +"values": [Vector2(-9, -21)] +} +tracks/13/type = "value" +tracks/13/imported = false +tracks/13/enabled = true +tracks/13/path = NodePath("Zombie/Butt/Body/Tie:rotation") +tracks/13/interp = 1 +tracks/13/loop_wrap = true +tracks/13/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 0, +"values": [0.0] +} +tracks/14/type = "value" +tracks/14/imported = false +tracks/14/enabled = true +tracks/14/path = NodePath("Zombie/Butt/Body/RightUpperArm/RightLowerArm/RightHand:position") +tracks/14/interp = 1 +tracks/14/loop_wrap = true +tracks/14/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 0, +"values": [Vector2(-1, 13)] +} +tracks/15/type = "value" +tracks/15/imported = false +tracks/15/enabled = true +tracks/15/path = NodePath("Zombie/Butt/Body/RightUpperArm/RightLowerArm/RightHand:rotation") +tracks/15/interp = 1 +tracks/15/loop_wrap = true +tracks/15/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 0, +"values": [0.0] +} +tracks/16/type = "value" +tracks/16/imported = false +tracks/16/enabled = true +tracks/16/path = NodePath("Zombie/Butt/Body/RightUpperArm/RightLowerArm:position") +tracks/16/interp = 1 +tracks/16/loop_wrap = true +tracks/16/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 0, +"values": [Vector2(-2, 15)] +} +tracks/17/type = "value" +tracks/17/imported = false +tracks/17/enabled = true +tracks/17/path = NodePath("Zombie/Butt/Body/RightUpperArm/RightLowerArm:rotation") +tracks/17/interp = 1 +tracks/17/loop_wrap = true +tracks/17/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 0, +"values": [0.0] +} +tracks/18/type = "value" +tracks/18/imported = false +tracks/18/enabled = true +tracks/18/path = NodePath("Zombie/Butt/Body/RightUpperArm:position") +tracks/18/interp = 1 +tracks/18/loop_wrap = true +tracks/18/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 0, +"values": [Vector2(-14, -23)] +} +tracks/19/type = "value" +tracks/19/imported = false +tracks/19/enabled = true +tracks/19/path = NodePath("Zombie/Butt/Body/RightUpperArm:rotation") +tracks/19/interp = 1 +tracks/19/loop_wrap = true +tracks/19/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 0, +"values": [0.0] +} +tracks/20/type = "value" +tracks/20/imported = false +tracks/20/enabled = true +tracks/20/path = NodePath("Zombie/Butt/LeftUpperLeg/LeftLowerLeg/LeftFoot:position") +tracks/20/interp = 1 +tracks/20/loop_wrap = true +tracks/20/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 0, +"values": [Vector2(6, 10)] +} +tracks/21/type = "value" +tracks/21/imported = false +tracks/21/enabled = true +tracks/21/path = NodePath("Zombie/Butt/LeftUpperLeg/LeftLowerLeg/LeftFoot:rotation") +tracks/21/interp = 1 +tracks/21/loop_wrap = true +tracks/21/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 0, +"values": [0.0] +} +tracks/22/type = "value" +tracks/22/imported = false +tracks/22/enabled = true +tracks/22/path = NodePath("Zombie/Butt/LeftUpperLeg/LeftLowerLeg:position") +tracks/22/interp = 1 +tracks/22/loop_wrap = true +tracks/22/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 0, +"values": [Vector2(-1, 13)] +} +tracks/23/type = "value" +tracks/23/imported = false +tracks/23/enabled = true +tracks/23/path = NodePath("Zombie/Butt/LeftUpperLeg/LeftLowerLeg:rotation") +tracks/23/interp = 1 +tracks/23/loop_wrap = true +tracks/23/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 0, +"values": [0.0] +} +tracks/24/type = "value" +tracks/24/imported = false +tracks/24/enabled = true +tracks/24/path = NodePath("Zombie/Butt/LeftUpperLeg:position") +tracks/24/interp = 1 +tracks/24/loop_wrap = true +tracks/24/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 0, +"values": [Vector2(6, 4)] +} +tracks/25/type = "value" +tracks/25/imported = false +tracks/25/enabled = true +tracks/25/path = NodePath("Zombie/Butt/LeftUpperLeg:rotation") +tracks/25/interp = 1 +tracks/25/loop_wrap = true +tracks/25/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 0, +"values": [0.0] +} +tracks/26/type = "value" +tracks/26/imported = false +tracks/26/enabled = true +tracks/26/path = NodePath("Zombie/Butt/RightUpperLeg/RightLowerLeg/RightFoot:position") +tracks/26/interp = 1 +tracks/26/loop_wrap = true +tracks/26/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 0, +"values": [Vector2(-2, 14)] +} +tracks/27/type = "value" +tracks/27/imported = false +tracks/27/enabled = true +tracks/27/path = NodePath("Zombie/Butt/RightUpperLeg/RightLowerLeg/RightFoot:rotation") +tracks/27/interp = 1 +tracks/27/loop_wrap = true +tracks/27/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 0, +"values": [0.0] +} +tracks/28/type = "value" +tracks/28/imported = false +tracks/28/enabled = true +tracks/28/path = NodePath("Zombie/Butt/RightUpperLeg/RightLowerLeg:position") +tracks/28/interp = 1 +tracks/28/loop_wrap = true +tracks/28/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 0, +"values": [Vector2(-2, 12)] +} +tracks/29/type = "value" +tracks/29/imported = false +tracks/29/enabled = true +tracks/29/path = NodePath("Zombie/Butt/RightUpperLeg/RightLowerLeg:rotation") +tracks/29/interp = 1 +tracks/29/loop_wrap = true +tracks/29/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 0, +"values": [0.0] +} +tracks/30/type = "value" +tracks/30/imported = false +tracks/30/enabled = true +tracks/30/path = NodePath("Zombie/Butt/RightUpperLeg:position") +tracks/30/interp = 1 +tracks/30/loop_wrap = true +tracks/30/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 0, +"values": [Vector2(-6, 3)] +} +tracks/31/type = "value" +tracks/31/imported = false +tracks/31/enabled = true +tracks/31/path = NodePath("Zombie/Butt/RightUpperLeg:rotation") +tracks/31/interp = 1 +tracks/31/loop_wrap = true +tracks/31/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 0, +"values": [0.0] +} +tracks/32/type = "value" +tracks/32/imported = false +tracks/32/enabled = true +tracks/32/path = NodePath("Zombie/Butt:position") +tracks/32/interp = 1 +tracks/32/loop_wrap = true +tracks/32/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 0, +"values": [Vector2(5, -35)] +} +tracks/33/type = "value" +tracks/33/imported = false +tracks/33/enabled = true +tracks/33/path = NodePath("Zombie/Butt:rotation") +tracks/33/interp = 1 +tracks/33/loop_wrap = true +tracks/33/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 0, +"values": [0.0] +} +tracks/34/type = "value" +tracks/34/imported = false +tracks/34/enabled = true +tracks/34/path = NodePath("Zombie/Butt/Body:position") +tracks/34/interp = 1 +tracks/34/loop_wrap = true +tracks/34/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 0, +"values": [Vector2(1, -2)] +} +tracks/35/type = "value" +tracks/35/imported = false +tracks/35/enabled = true +tracks/35/path = NodePath("Zombie/Butt/Body:rotation") +tracks/35/interp = 1 +tracks/35/loop_wrap = true +tracks/35/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 0, +"values": [0.0] +} +tracks/36/type = "value" +tracks/36/imported = false +tracks/36/enabled = true +tracks/36/path = NodePath("Zombie:position") +tracks/36/interp = 1 +tracks/36/loop_wrap = true +tracks/36/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 0, +"values": [Vector2(0, 0)] +} +tracks/37/type = "value" +tracks/37/imported = false +tracks/37/enabled = true +tracks/37/path = NodePath("Zombie:rotation") +tracks/37/interp = 1 +tracks/37/loop_wrap = true +tracks/37/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 0, +"values": [0.0] +} +tracks/38/type = "value" +tracks/38/imported = false +tracks/38/enabled = true +tracks/38/path = NodePath("Zombie/Butt/Body/Head:position") +tracks/38/interp = 1 +tracks/38/loop_wrap = true +tracks/38/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 0, +"values": [Vector2(-10, -25)] +} +tracks/39/type = "value" +tracks/39/imported = false +tracks/39/enabled = true +tracks/39/path = NodePath("Zombie/Butt/Body/Head:rotation") +tracks/39/interp = 1 +tracks/39/loop_wrap = true +tracks/39/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 0, +"values": [0.0] +} +tracks/40/type = "value" +tracks/40/imported = false +tracks/40/enabled = true +tracks/40/path = NodePath("Zombie/Butt/Body/Head:visible") +tracks/40/interp = 1 +tracks/40/loop_wrap = true +tracks/40/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 1, +"values": [true] +} +tracks/41/type = "value" +tracks/41/imported = false +tracks/41/enabled = true +tracks/41/path = NodePath("Zombie/Butt/Body/Tie:scale") +tracks/41/interp = 1 +tracks/41/loop_wrap = true +tracks/41/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 0, +"values": [Vector2(1, 1)] +} +tracks/42/type = "value" +tracks/42/imported = false +tracks/42/enabled = true +tracks/42/path = NodePath("Zombie/Butt/Body/LeftUpperArm/LeftLowerArm/LeftHand/Left_Hand:texture") +tracks/42/interp = 1 +tracks/42/loop_wrap = true +tracks/42/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 1, +"values": [SubResource("AtlasTexture_6y4ja")] +} +tracks/43/type = "value" +tracks/43/imported = false +tracks/43/enabled = true +tracks/43/path = NodePath("Zombie/Butt/Body/LeftUpperArm/LeftLowerArm/LeftHand/Left_Hand:offset") +tracks/43/interp = 1 +tracks/43/loop_wrap = true +tracks/43/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 0, +"values": [Vector2(-4, -1)] +} +tracks/44/type = "value" +tracks/44/imported = false +tracks/44/enabled = true +tracks/44/path = NodePath("../../Mover:_speedControlMult") +tracks/44/interp = 1 +tracks/44/loop_wrap = true +tracks/44/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 0, "values": [0.0] } -[sub_resource type="AnimationLibrary" id="AnimationLibrary_sq25x"] -_data = { -&"RESET": SubResource("Animation_qv5y7") +[sub_resource type="Animation" id="Animation_vcc72"] +resource_name = "basic_zombie_walk" +length = 1.7 +loop_mode = 1 +tracks/0/type = "value" +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/path = NodePath("Zombie/Butt:position") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 0, +"values": [Vector2(5, -35)] } +tracks/1/type = "value" +tracks/1/imported = false +tracks/1/enabled = true +tracks/1/path = NodePath("Zombie/Butt:rotation") +tracks/1/interp = 1 +tracks/1/loop_wrap = true +tracks/1/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 0, +"values": [0.0] +} +tracks/2/type = "value" +tracks/2/imported = false +tracks/2/enabled = true +tracks/2/path = NodePath("Zombie/Butt/RightUpperLeg:position") +tracks/2/interp = 1 +tracks/2/loop_wrap = true +tracks/2/keys = { +"times": PackedFloat32Array(0, 0.45, 0.7, 1.1, 1.4), +"transitions": PackedFloat32Array(1, 1, 1, 1, 1), +"update": 0, +"values": [Vector2(-6, 3), Vector2(-6, 3), Vector2(-5, 3), Vector2(-6, 3), Vector2(-6, 4)] +} +tracks/3/type = "value" +tracks/3/imported = false +tracks/3/enabled = true +tracks/3/path = NodePath("Zombie/Butt/RightUpperLeg:rotation") +tracks/3/interp = 1 +tracks/3/loop_wrap = true +tracks/3/keys = { +"times": PackedFloat32Array(0, 0.45, 0.7, 1.1, 1.4), +"transitions": PackedFloat32Array(1, 1, 1, 1, 1), +"update": 0, +"values": [0.0, -0.47976, -0.247472, 0.324581, 0.0887587] +} +tracks/4/type = "value" +tracks/4/imported = false +tracks/4/enabled = true +tracks/4/path = NodePath("Zombie/Butt/RightUpperLeg/RightLowerLeg:position") +tracks/4/interp = 1 +tracks/4/loop_wrap = true +tracks/4/keys = { +"times": PackedFloat32Array(0, 0.45, 0.7), +"transitions": PackedFloat32Array(1, 1, 1), +"update": 0, +"values": [Vector2(-2, 12), Vector2(-1.25072, 12.0201), Vector2(-2.0003, 12.0018)] +} +tracks/5/type = "value" +tracks/5/imported = false +tracks/5/enabled = true +tracks/5/path = NodePath("Zombie/Butt/RightUpperLeg/RightLowerLeg:rotation") +tracks/5/interp = 1 +tracks/5/loop_wrap = true +tracks/5/keys = { +"times": PackedFloat32Array(0, 0.45, 0.7, 1.1, 1.4), +"transitions": PackedFloat32Array(1, 1, 1, 1, 1), +"update": 0, +"values": [0.0, 0.311892, 0.2129, 0.419682, 0.172512] +} +tracks/6/type = "value" +tracks/6/imported = false +tracks/6/enabled = true +tracks/6/path = NodePath("Zombie/Butt/RightUpperLeg/RightLowerLeg/RightFoot:position") +tracks/6/interp = 1 +tracks/6/loop_wrap = true +tracks/6/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 0, +"values": [Vector2(-2, 14)] +} +tracks/7/type = "value" +tracks/7/imported = false +tracks/7/enabled = true +tracks/7/path = NodePath("Zombie/Butt/RightUpperLeg/RightLowerLeg/RightFoot:rotation") +tracks/7/interp = 1 +tracks/7/loop_wrap = true +tracks/7/keys = { +"times": PackedFloat32Array(0, 0.45, 0.7, 1.1, 1.4), +"transitions": PackedFloat32Array(1, 1, 1, 1, 1), +"update": 0, +"values": [0.0, 0.33228, 0.0473635, -0.51797, -0.180295] +} +tracks/8/type = "value" +tracks/8/imported = false +tracks/8/enabled = true +tracks/8/path = NodePath("Zombie/Butt/LeftUpperLeg:position") +tracks/8/interp = 1 +tracks/8/loop_wrap = true +tracks/8/keys = { +"times": PackedFloat32Array(0, 0.45, 0.7), +"transitions": PackedFloat32Array(1, 1, 1), +"update": 0, +"values": [Vector2(6, 4), Vector2(2, 4), Vector2(1, 4)] +} +tracks/9/type = "value" +tracks/9/imported = false +tracks/9/enabled = true +tracks/9/path = NodePath("Zombie/Butt/LeftUpperLeg:rotation") +tracks/9/interp = 1 +tracks/9/loop_wrap = true +tracks/9/keys = { +"times": PackedFloat32Array(0, 0.45, 0.7), +"transitions": PackedFloat32Array(1, 1, 1), +"update": 0, +"values": [0.0, 0.480908, 0.301984] +} +tracks/10/type = "value" +tracks/10/imported = false +tracks/10/enabled = true +tracks/10/path = NodePath("Zombie/Butt/LeftUpperLeg/LeftLowerLeg:position") +tracks/10/interp = 1 +tracks/10/loop_wrap = true +tracks/10/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 0, +"values": [Vector2(-1, 13)] +} +tracks/11/type = "value" +tracks/11/imported = false +tracks/11/enabled = true +tracks/11/path = NodePath("Zombie/Butt/LeftUpperLeg/LeftLowerLeg:rotation") +tracks/11/interp = 1 +tracks/11/loop_wrap = true +tracks/11/keys = { +"times": PackedFloat32Array(0, 0.45, 0.7), +"transitions": PackedFloat32Array(1, 1, 1), +"update": 0, +"values": [0.0, -0.685514, -0.119147] +} +tracks/12/type = "value" +tracks/12/imported = false +tracks/12/enabled = true +tracks/12/path = NodePath("Zombie/Butt/LeftUpperLeg/LeftLowerLeg/LeftFoot:position") +tracks/12/interp = 1 +tracks/12/loop_wrap = true +tracks/12/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 0, +"values": [Vector2(6, 10)] +} +tracks/13/type = "value" +tracks/13/imported = false +tracks/13/enabled = true +tracks/13/path = NodePath("Zombie/Butt/LeftUpperLeg/LeftLowerLeg/LeftFoot:rotation") +tracks/13/interp = 1 +tracks/13/loop_wrap = true +tracks/13/keys = { +"times": PackedFloat32Array(0, 0.45, 0.7), +"transitions": PackedFloat32Array(1, 1, 1), +"update": 0, +"values": [0.0, -0.379644, -0.190368] +} +tracks/14/type = "value" +tracks/14/imported = false +tracks/14/enabled = true +tracks/14/path = NodePath("Zombie/Butt/Body:position") +tracks/14/interp = 1 +tracks/14/loop_wrap = true +tracks/14/keys = { +"times": PackedFloat32Array(0, 1.4), +"transitions": PackedFloat32Array(1, 1), +"update": 0, +"values": [Vector2(1, -2), Vector2(1, -1)] +} +tracks/15/type = "value" +tracks/15/imported = false +tracks/15/enabled = true +tracks/15/path = NodePath("Zombie/Butt/Body:rotation") +tracks/15/interp = 1 +tracks/15/loop_wrap = true +tracks/15/keys = { +"times": PackedFloat32Array(0, 0.45, 0.7, 1.1, 1.4), +"transitions": PackedFloat32Array(1, 1, 1, 1, 1), +"update": 0, +"values": [0.0, 0.131445, -0.0594569, -0.214663, -0.153259] +} +tracks/16/type = "value" +tracks/16/imported = false +tracks/16/enabled = true +tracks/16/path = NodePath("Zombie/Butt/Body/RightUpperArm:position") +tracks/16/interp = 1 +tracks/16/loop_wrap = true +tracks/16/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 0, +"values": [Vector2(-14, -23)] +} +tracks/17/type = "value" +tracks/17/imported = false +tracks/17/enabled = true +tracks/17/path = NodePath("Zombie/Butt/Body/RightUpperArm:rotation") +tracks/17/interp = 1 +tracks/17/loop_wrap = true +tracks/17/keys = { +"times": PackedFloat32Array(0, 0.45, 0.7, 1.1, 1.4), +"transitions": PackedFloat32Array(1, 1, 1, 1, 1), +"update": 0, +"values": [0.0, 0.193101, 0.161051, 0.119452, 0.0341511] +} +tracks/18/type = "value" +tracks/18/imported = false +tracks/18/enabled = true +tracks/18/path = NodePath("Zombie/Butt/Body/RightUpperArm/RightLowerArm:position") +tracks/18/interp = 1 +tracks/18/loop_wrap = true +tracks/18/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 0, +"values": [Vector2(-2, 15)] +} +tracks/19/type = "value" +tracks/19/imported = false +tracks/19/enabled = true +tracks/19/path = NodePath("Zombie/Butt/Body/RightUpperArm/RightLowerArm:rotation") +tracks/19/interp = 1 +tracks/19/loop_wrap = true +tracks/19/keys = { +"times": PackedFloat32Array(0, 0.45, 0.7, 1.1), +"transitions": PackedFloat32Array(1, 1, 1, 1), +"update": 0, +"values": [0.0, 0.237135, -0.0196698, 0.180193] +} +tracks/20/type = "value" +tracks/20/imported = false +tracks/20/enabled = true +tracks/20/path = NodePath("Zombie/Butt/Body/RightUpperArm/RightLowerArm/RightHand:position") +tracks/20/interp = 1 +tracks/20/loop_wrap = true +tracks/20/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 0, +"values": [Vector2(-1, 13)] +} +tracks/21/type = "value" +tracks/21/imported = false +tracks/21/enabled = true +tracks/21/path = NodePath("Zombie/Butt/Body/RightUpperArm/RightLowerArm/RightHand:rotation") +tracks/21/interp = 1 +tracks/21/loop_wrap = true +tracks/21/keys = { +"times": PackedFloat32Array(0, 0.45, 0.7), +"transitions": PackedFloat32Array(1, 1, 1), +"update": 0, +"values": [0.0, 0.17474, 0.0256803] +} +tracks/22/type = "value" +tracks/22/imported = false +tracks/22/enabled = true +tracks/22/path = NodePath("Zombie/Butt/Body/Tie:position") +tracks/22/interp = 1 +tracks/22/loop_wrap = true +tracks/22/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 0, +"values": [Vector2(-9, -21)] +} +tracks/23/type = "value" +tracks/23/imported = false +tracks/23/enabled = true +tracks/23/path = NodePath("Zombie/Butt/Body/Tie:rotation") +tracks/23/interp = 1 +tracks/23/loop_wrap = true +tracks/23/keys = { +"times": PackedFloat32Array(0, 0.45, 1.1), +"transitions": PackedFloat32Array(1, 1, 1), +"update": 0, +"values": [0.0, -0.170849, 0.172666] +} +tracks/24/type = "value" +tracks/24/imported = false +tracks/24/enabled = true +tracks/24/path = NodePath("Zombie/Butt/Body/Head:position") +tracks/24/interp = 1 +tracks/24/loop_wrap = true +tracks/24/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 0, +"values": [Vector2(-10, -25)] +} +tracks/25/type = "value" +tracks/25/imported = false +tracks/25/enabled = true +tracks/25/path = NodePath("Zombie/Butt/Body/Head:rotation") +tracks/25/interp = 1 +tracks/25/loop_wrap = true +tracks/25/keys = { +"times": PackedFloat32Array(0, 1.1), +"transitions": PackedFloat32Array(1, 1), +"update": 0, +"values": [0.0, -0.102364] +} +tracks/26/type = "value" +tracks/26/imported = false +tracks/26/enabled = true +tracks/26/path = NodePath("Zombie/Butt/Body/Head/Jaw:position") +tracks/26/interp = 1 +tracks/26/loop_wrap = true +tracks/26/keys = { +"times": PackedFloat32Array(0, 0.7, 1.1), +"transitions": PackedFloat32Array(1, 1, 1), +"update": 0, +"values": [Vector2(-3, 3), Vector2(-2.66995, 2.20342), Vector2(-3.00212, 2.99641)] +} +tracks/27/type = "value" +tracks/27/imported = false +tracks/27/enabled = true +tracks/27/path = NodePath("Zombie/Butt/Body/Head/Jaw:rotation") +tracks/27/interp = 1 +tracks/27/loop_wrap = true +tracks/27/keys = { +"times": PackedFloat32Array(0, 0.45, 0.7), +"transitions": PackedFloat32Array(1, 1, 1), +"update": 0, +"values": [0.0, -0.119339, 0.0279278] +} +tracks/28/type = "value" +tracks/28/imported = false +tracks/28/enabled = true +tracks/28/path = NodePath("Zombie/Butt/Body/Head/RightEye:position") +tracks/28/interp = 1 +tracks/28/loop_wrap = true +tracks/28/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 0, +"values": [Vector2(-16, -8)] +} +tracks/29/type = "value" +tracks/29/imported = false +tracks/29/enabled = true +tracks/29/path = NodePath("Zombie/Butt/Body/Head/RightEye:rotation") +tracks/29/interp = 1 +tracks/29/loop_wrap = true +tracks/29/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 0, +"values": [0.0] +} +tracks/30/type = "value" +tracks/30/imported = false +tracks/30/enabled = true +tracks/30/path = NodePath("Zombie/Butt/Body/Head/LeftEye:position") +tracks/30/interp = 1 +tracks/30/loop_wrap = true +tracks/30/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 0, +"values": [Vector2(-4, -9)] +} +tracks/31/type = "value" +tracks/31/imported = false +tracks/31/enabled = true +tracks/31/path = NodePath("Zombie/Butt/Body/Head/LeftEye:rotation") +tracks/31/interp = 1 +tracks/31/loop_wrap = true +tracks/31/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 0, +"values": [0.0] +} +tracks/32/type = "value" +tracks/32/imported = false +tracks/32/enabled = true +tracks/32/path = NodePath("Zombie/Butt/Body/LeftUpperArm:position") +tracks/32/interp = 1 +tracks/32/loop_wrap = true +tracks/32/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 0, +"values": [Vector2(-1, -20)] +} +tracks/33/type = "value" +tracks/33/imported = false +tracks/33/enabled = true +tracks/33/path = NodePath("Zombie/Butt/Body/LeftUpperArm:rotation") +tracks/33/interp = 1 +tracks/33/loop_wrap = true +tracks/33/keys = { +"times": PackedFloat32Array(0, 0.45, 1.1, 1.4), +"transitions": PackedFloat32Array(1, 1, 1, 1), +"update": 0, +"values": [0.0, -0.274164, 0.193139, 0.0631989] +} +tracks/34/type = "value" +tracks/34/imported = false +tracks/34/enabled = true +tracks/34/path = NodePath("Zombie/Butt/Body/LeftUpperArm/LeftLowerArm:position") +tracks/34/interp = 1 +tracks/34/loop_wrap = true +tracks/34/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 0, +"values": [Vector2(-2, 14)] +} +tracks/35/type = "value" +tracks/35/imported = false +tracks/35/enabled = true +tracks/35/path = NodePath("Zombie/Butt/Body/LeftUpperArm/LeftLowerArm:rotation") +tracks/35/interp = 1 +tracks/35/loop_wrap = true +tracks/35/keys = { +"times": PackedFloat32Array(0, 0.45, 0.7, 1.1), +"transitions": PackedFloat32Array(1, 1, 1, 1), +"update": 0, +"values": [0.0, -0.181085, 0.105937, 0.162344] +} +tracks/36/type = "value" +tracks/36/imported = false +tracks/36/enabled = true +tracks/36/path = NodePath("Zombie/Butt/Body/LeftUpperArm/LeftLowerArm/LeftHand:position") +tracks/36/interp = 1 +tracks/36/loop_wrap = true +tracks/36/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 0, +"values": [Vector2(-1, 13)] +} +tracks/37/type = "value" +tracks/37/imported = false +tracks/37/enabled = true +tracks/37/path = NodePath("Zombie/Butt/Body/LeftUpperArm/LeftLowerArm/LeftHand:rotation") +tracks/37/interp = 1 +tracks/37/loop_wrap = true +tracks/37/keys = { +"times": PackedFloat32Array(0, 0.45), +"transitions": PackedFloat32Array(1, 1), +"update": 0, +"values": [0.0, -0.149268] +} +tracks/38/type = "value" +tracks/38/imported = false +tracks/38/enabled = true +tracks/38/path = NodePath("../../Mover:_speedControlMult") +tracks/38/interp = 1 +tracks/38/loop_wrap = true +tracks/38/keys = { +"times": PackedFloat32Array(0, 0.450312, 1.7), +"transitions": PackedFloat32Array(1, 1, 1), +"update": 0, +"values": [0.0, 1.0, 0.0] +} + +[sub_resource type="Animation" id="Animation_wn68q"] +resource_name = "dead_lmao" +length = 2.0 +tracks/0/type = "value" +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/path = NodePath("Zombie/Butt:position") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/keys = { +"times": PackedFloat32Array(-0.00833333, 0.85, 1.5, 2), +"transitions": PackedFloat32Array(1.68179, 2, 1, 1), +"update": 0, +"values": [Vector2(5, -35), Vector2(-9, -18), Vector2(-21, -18), Vector2(-22, -9)] +} +tracks/1/type = "value" +tracks/1/imported = false +tracks/1/enabled = true +tracks/1/path = NodePath("Zombie/Butt:rotation") +tracks/1/interp = 1 +tracks/1/loop_wrap = true +tracks/1/keys = { +"times": PackedFloat32Array(-0.00833333, 0.85, 1.5, 2), +"transitions": PackedFloat32Array(1.68179, 2, 1, 1), +"update": 0, +"values": [0.0, 0.0, -0.363399, -1.03478] +} +tracks/2/type = "value" +tracks/2/imported = false +tracks/2/enabled = true +tracks/2/path = NodePath("Zombie/Butt/RightUpperLeg:position") +tracks/2/interp = 1 +tracks/2/loop_wrap = true +tracks/2/keys = { +"times": PackedFloat32Array(-0.00833333), +"transitions": PackedFloat32Array(1), +"update": 0, +"values": [Vector2(-6, 3)] +} +tracks/3/type = "value" +tracks/3/imported = false +tracks/3/enabled = true +tracks/3/path = NodePath("Zombie/Butt/RightUpperLeg:rotation") +tracks/3/interp = 1 +tracks/3/loop_wrap = true +tracks/3/keys = { +"times": PackedFloat32Array(-0.00833333, 1.5, 2), +"transitions": PackedFloat32Array(1, 1, 1), +"update": 0, +"values": [0.0, -0.438888, -0.596673] +} +tracks/4/type = "value" +tracks/4/imported = false +tracks/4/enabled = true +tracks/4/path = NodePath("Zombie/Butt/RightUpperLeg/RightLowerLeg:position") +tracks/4/interp = 1 +tracks/4/loop_wrap = true +tracks/4/keys = { +"times": PackedFloat32Array(-0.00833333), +"transitions": PackedFloat32Array(1), +"update": 0, +"values": [Vector2(-2, 12)] +} +tracks/5/type = "value" +tracks/5/imported = false +tracks/5/enabled = true +tracks/5/path = NodePath("Zombie/Butt/RightUpperLeg/RightLowerLeg:rotation") +tracks/5/interp = 1 +tracks/5/loop_wrap = true +tracks/5/keys = { +"times": PackedFloat32Array(-0.00833333, 0.85, 1.5, 2), +"transitions": PackedFloat32Array(1.68179, 2, 1, 1), +"update": 0, +"values": [0.0, -1.57645, -0.739282, 0.0335003] +} +tracks/6/type = "value" +tracks/6/imported = false +tracks/6/enabled = true +tracks/6/path = NodePath("Zombie/Butt/RightUpperLeg/RightLowerLeg/RightFoot:position") +tracks/6/interp = 1 +tracks/6/loop_wrap = true +tracks/6/keys = { +"times": PackedFloat32Array(-0.00833333), +"transitions": PackedFloat32Array(1), +"update": 0, +"values": [Vector2(-2, 14)] +} +tracks/7/type = "value" +tracks/7/imported = false +tracks/7/enabled = true +tracks/7/path = NodePath("Zombie/Butt/RightUpperLeg/RightLowerLeg/RightFoot:rotation") +tracks/7/interp = 1 +tracks/7/loop_wrap = true +tracks/7/keys = { +"times": PackedFloat32Array(-0.00833333, 1.5), +"transitions": PackedFloat32Array(1, 1), +"update": 0, +"values": [0.0, 0.279912] +} +tracks/8/type = "value" +tracks/8/imported = false +tracks/8/enabled = true +tracks/8/path = NodePath("Zombie/Butt/LeftUpperLeg:position") +tracks/8/interp = 1 +tracks/8/loop_wrap = true +tracks/8/keys = { +"times": PackedFloat32Array(-0.00833333), +"transitions": PackedFloat32Array(1), +"update": 0, +"values": [Vector2(6, 4)] +} +tracks/9/type = "value" +tracks/9/imported = false +tracks/9/enabled = true +tracks/9/path = NodePath("Zombie/Butt/LeftUpperLeg:rotation") +tracks/9/interp = 1 +tracks/9/loop_wrap = true +tracks/9/keys = { +"times": PackedFloat32Array(0, 1.5, 2), +"transitions": PackedFloat32Array(1, 1, 1), +"update": 0, +"values": [0.0, -0.330352, -0.0713271] +} +tracks/10/type = "value" +tracks/10/imported = false +tracks/10/enabled = true +tracks/10/path = NodePath("Zombie/Butt/LeftUpperLeg/LeftLowerLeg:position") +tracks/10/interp = 1 +tracks/10/loop_wrap = true +tracks/10/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 0, +"values": [Vector2(-1, 13)] +} +tracks/11/type = "value" +tracks/11/imported = false +tracks/11/enabled = true +tracks/11/path = NodePath("Zombie/Butt/LeftUpperLeg/LeftLowerLeg:rotation") +tracks/11/interp = 1 +tracks/11/loop_wrap = true +tracks/11/keys = { +"times": PackedFloat32Array(0, 0.85, 1.5, 2), +"transitions": PackedFloat32Array(1.68179, 2, 1, 1), +"update": 0, +"values": [0.0, -1.7825, -0.561999, -0.289205] +} +tracks/12/type = "value" +tracks/12/imported = false +tracks/12/enabled = true +tracks/12/path = NodePath("Zombie/Butt/LeftUpperLeg/LeftLowerLeg/LeftFoot:position") +tracks/12/interp = 1 +tracks/12/loop_wrap = true +tracks/12/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 0, +"values": [Vector2(6, 10)] +} +tracks/13/type = "value" +tracks/13/imported = false +tracks/13/enabled = true +tracks/13/path = NodePath("Zombie/Butt/LeftUpperLeg/LeftLowerLeg/LeftFoot:rotation") +tracks/13/interp = 1 +tracks/13/loop_wrap = true +tracks/13/keys = { +"times": PackedFloat32Array(0, 1.5, 2), +"transitions": PackedFloat32Array(1, 1, 1), +"update": 0, +"values": [0.0, -0.542055, -0.899995] +} +tracks/14/type = "value" +tracks/14/imported = false +tracks/14/enabled = true +tracks/14/path = NodePath("Zombie/Butt/Body:position") +tracks/14/interp = 1 +tracks/14/loop_wrap = true +tracks/14/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 0, +"values": [Vector2(1, -2)] +} +tracks/15/type = "value" +tracks/15/imported = false +tracks/15/enabled = true +tracks/15/path = NodePath("Zombie/Butt/Body:rotation") +tracks/15/interp = 1 +tracks/15/loop_wrap = true +tracks/15/keys = { +"times": PackedFloat32Array(0, 0.85, 1.5, 2), +"transitions": PackedFloat32Array(1.68179, 2, 1, 1), +"update": 0, +"values": [0.0, -0.453494, -0.45522, -0.220732] +} +tracks/16/type = "value" +tracks/16/imported = false +tracks/16/enabled = true +tracks/16/path = NodePath("Zombie/Butt/Body/RightUpperArm:position") +tracks/16/interp = 1 +tracks/16/loop_wrap = true +tracks/16/keys = { +"times": PackedFloat32Array(0, 0.85), +"transitions": PackedFloat32Array(1.68179, 2), +"update": 0, +"values": [Vector2(-14, -23), Vector2(-11.3243, -22.8469)] +} +tracks/17/type = "value" +tracks/17/imported = false +tracks/17/enabled = true +tracks/17/path = NodePath("Zombie/Butt/Body/RightUpperArm:rotation") +tracks/17/interp = 1 +tracks/17/loop_wrap = true +tracks/17/keys = { +"times": PackedFloat32Array(0, 0.85, 2), +"transitions": PackedFloat32Array(1.68179, 2, 1), +"update": 0, +"values": [0.0, 0.204776, -0.10805] +} +tracks/18/type = "value" +tracks/18/imported = false +tracks/18/enabled = true +tracks/18/path = NodePath("Zombie/Butt/Body/RightUpperArm/RightLowerArm:position") +tracks/18/interp = 1 +tracks/18/loop_wrap = true +tracks/18/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 0, +"values": [Vector2(-2, 15)] +} +tracks/19/type = "value" +tracks/19/imported = false +tracks/19/enabled = true +tracks/19/path = NodePath("Zombie/Butt/Body/RightUpperArm/RightLowerArm:rotation") +tracks/19/interp = 1 +tracks/19/loop_wrap = true +tracks/19/keys = { +"times": PackedFloat32Array(0, 0.85, 1.5), +"transitions": PackedFloat32Array(1.68179, 2, 1), +"update": 0, +"values": [0.0, 0.237523, -0.230923] +} +tracks/20/type = "value" +tracks/20/imported = false +tracks/20/enabled = true +tracks/20/path = NodePath("Zombie/Butt/Body/RightUpperArm/RightLowerArm/RightHand:position") +tracks/20/interp = 1 +tracks/20/loop_wrap = true +tracks/20/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 0, +"values": [Vector2(-1, 13)] +} +tracks/21/type = "value" +tracks/21/imported = false +tracks/21/enabled = true +tracks/21/path = NodePath("Zombie/Butt/Body/RightUpperArm/RightLowerArm/RightHand:rotation") +tracks/21/interp = 1 +tracks/21/loop_wrap = true +tracks/21/keys = { +"times": PackedFloat32Array(0, 0.85, 1.5), +"transitions": PackedFloat32Array(1.68179, 2, 1), +"update": 0, +"values": [0.0, 0.270356, 0.0408225] +} +tracks/22/type = "value" +tracks/22/imported = false +tracks/22/enabled = true +tracks/22/path = NodePath("Zombie/Butt/Body/Tie:position") +tracks/22/interp = 1 +tracks/22/loop_wrap = true +tracks/22/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 0, +"values": [Vector2(-9, -21)] +} +tracks/23/type = "value" +tracks/23/imported = false +tracks/23/enabled = true +tracks/23/path = NodePath("Zombie/Butt/Body/Tie:rotation") +tracks/23/interp = 1 +tracks/23/loop_wrap = true +tracks/23/keys = { +"times": PackedFloat32Array(0, 0.5, 0.85, 1.5), +"transitions": PackedFloat32Array(1, 1, 2, 2.07053), +"update": 0, +"values": [0.0, 0.134183, 0.162458, 0.689549] +} +tracks/24/type = "value" +tracks/24/imported = false +tracks/24/enabled = true +tracks/24/path = NodePath("Zombie/Butt/Body/Head/Jaw:position") +tracks/24/interp = 1 +tracks/24/loop_wrap = true +tracks/24/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 0, +"values": [Vector2(-3, 3)] +} +tracks/25/type = "value" +tracks/25/imported = false +tracks/25/enabled = true +tracks/25/path = NodePath("Zombie/Butt/Body/Head/Jaw:rotation") +tracks/25/interp = 1 +tracks/25/loop_wrap = true +tracks/25/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 0, +"values": [0.0] +} +tracks/26/type = "value" +tracks/26/imported = false +tracks/26/enabled = true +tracks/26/path = NodePath("Zombie/Butt/Body/Head/RightEye:position") +tracks/26/interp = 1 +tracks/26/loop_wrap = true +tracks/26/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 0, +"values": [Vector2(-16, -8)] +} +tracks/27/type = "value" +tracks/27/imported = false +tracks/27/enabled = true +tracks/27/path = NodePath("Zombie/Butt/Body/Head/RightEye:rotation") +tracks/27/interp = 1 +tracks/27/loop_wrap = true +tracks/27/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 0, +"values": [0.0] +} +tracks/28/type = "value" +tracks/28/imported = false +tracks/28/enabled = true +tracks/28/path = NodePath("Zombie/Butt/Body/Head/LeftEye:position") +tracks/28/interp = 1 +tracks/28/loop_wrap = true +tracks/28/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 0, +"values": [Vector2(-4, -9)] +} +tracks/29/type = "value" +tracks/29/imported = false +tracks/29/enabled = true +tracks/29/path = NodePath("Zombie/Butt/Body/Head/LeftEye:rotation") +tracks/29/interp = 1 +tracks/29/loop_wrap = true +tracks/29/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 0, +"values": [0.0] +} +tracks/30/type = "value" +tracks/30/imported = false +tracks/30/enabled = true +tracks/30/path = NodePath("Zombie/Butt/Body/LeftUpperArm:position") +tracks/30/interp = 1 +tracks/30/loop_wrap = true +tracks/30/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 0, +"values": [Vector2(-1, -20)] +} +tracks/31/type = "value" +tracks/31/imported = false +tracks/31/enabled = true +tracks/31/path = NodePath("Zombie/Butt/Body/LeftUpperArm:rotation") +tracks/31/interp = 1 +tracks/31/loop_wrap = true +tracks/31/keys = { +"times": PackedFloat32Array(0, 0.85, 1.5, 2), +"transitions": PackedFloat32Array(1.68179, 2, 1, 1), +"update": 0, +"values": [0.0, 0.108056, 0.68476, 1.91294] +} +tracks/32/type = "value" +tracks/32/imported = false +tracks/32/enabled = true +tracks/32/path = NodePath("Zombie/Butt/Body/LeftUpperArm/LeftLowerArm:position") +tracks/32/interp = 1 +tracks/32/loop_wrap = true +tracks/32/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 0, +"values": [Vector2(-2, 14)] +} +tracks/33/type = "value" +tracks/33/imported = false +tracks/33/enabled = true +tracks/33/path = NodePath("Zombie/Butt/Body/LeftUpperArm/LeftLowerArm:rotation") +tracks/33/interp = 1 +tracks/33/loop_wrap = true +tracks/33/keys = { +"times": PackedFloat32Array(0, 0.85, 1.5), +"transitions": PackedFloat32Array(1.68179, 2, 1), +"update": 0, +"values": [0.0, 0.249204, 0.396612] +} +tracks/34/type = "value" +tracks/34/imported = false +tracks/34/enabled = true +tracks/34/path = NodePath("Zombie/Butt/Body/LeftUpperArm/LeftLowerArm/LeftHand:position") +tracks/34/interp = 1 +tracks/34/loop_wrap = true +tracks/34/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 0, +"values": [Vector2(-1, 13)] +} +tracks/35/type = "value" +tracks/35/imported = false +tracks/35/enabled = true +tracks/35/path = NodePath("Zombie/Butt/Body/LeftUpperArm/LeftLowerArm/LeftHand:rotation") +tracks/35/interp = 1 +tracks/35/loop_wrap = true +tracks/35/keys = { +"times": PackedFloat32Array(0, 0.85, 1.5), +"transitions": PackedFloat32Array(1.68179, 2, 1), +"update": 0, +"values": [0.0, 0.228597, 0.28535] +} +tracks/36/type = "value" +tracks/36/imported = false +tracks/36/enabled = true +tracks/36/path = NodePath("Zombie:position") +tracks/36/interp = 1 +tracks/36/loop_wrap = true +tracks/36/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 0, +"values": [Vector2(0, 0)] +} +tracks/37/type = "value" +tracks/37/imported = false +tracks/37/enabled = true +tracks/37/path = NodePath("Zombie:rotation") +tracks/37/interp = 1 +tracks/37/loop_wrap = true +tracks/37/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 0, +"values": [0.0] +} +tracks/38/type = "value" +tracks/38/imported = false +tracks/38/enabled = true +tracks/38/path = NodePath("Zombie/Butt/Body/Head:visible") +tracks/38/interp = 1 +tracks/38/loop_wrap = true +tracks/38/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 1, +"values": [false] +} +tracks/39/type = "value" +tracks/39/imported = false +tracks/39/enabled = true +tracks/39/path = NodePath("Zombie/Butt/Body/Tie:scale") +tracks/39/interp = 1 +tracks/39/loop_wrap = true +tracks/39/keys = { +"times": PackedFloat32Array(1.75, 2), +"transitions": PackedFloat32Array(1, 1.41421), +"update": 0, +"values": [Vector2(0.999825, 0.999825), Vector2(1, 0.5)] +} + +[sub_resource type="AtlasTexture" id="AtlasTexture_wfem3"] +atlas = ExtResource("6_xnora") +region = Rect2(24, 2, 9, 9) + +[sub_resource type="Animation" id="Animation_wfem3"] +resource_name = "basic_zombie_eating" +loop_mode = 1 +tracks/0/type = "value" +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/path = NodePath("Zombie/Butt:position") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 0, +"values": [Vector2(5, -35)] +} +tracks/1/type = "value" +tracks/1/imported = false +tracks/1/enabled = true +tracks/1/path = NodePath("Zombie/Butt:rotation") +tracks/1/interp = 1 +tracks/1/loop_wrap = true +tracks/1/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 0, +"values": [0.0] +} +tracks/2/type = "value" +tracks/2/imported = false +tracks/2/enabled = true +tracks/2/path = NodePath("Zombie/Butt/RightUpperLeg:position") +tracks/2/interp = 1 +tracks/2/loop_wrap = true +tracks/2/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 0, +"values": [Vector2(-6, 3)] +} +tracks/3/type = "value" +tracks/3/imported = false +tracks/3/enabled = true +tracks/3/path = NodePath("Zombie/Butt/RightUpperLeg:rotation") +tracks/3/interp = 1 +tracks/3/loop_wrap = true +tracks/3/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 0, +"values": [0.0] +} +tracks/4/type = "value" +tracks/4/imported = false +tracks/4/enabled = true +tracks/4/path = NodePath("Zombie/Butt/RightUpperLeg/RightLowerLeg:position") +tracks/4/interp = 1 +tracks/4/loop_wrap = true +tracks/4/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 0, +"values": [Vector2(-2, 12)] +} +tracks/5/type = "value" +tracks/5/imported = false +tracks/5/enabled = true +tracks/5/path = NodePath("Zombie/Butt/RightUpperLeg/RightLowerLeg:rotation") +tracks/5/interp = 1 +tracks/5/loop_wrap = true +tracks/5/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 0, +"values": [0.0] +} +tracks/6/type = "value" +tracks/6/imported = false +tracks/6/enabled = true +tracks/6/path = NodePath("Zombie/Butt/RightUpperLeg/RightLowerLeg/RightFoot:position") +tracks/6/interp = 1 +tracks/6/loop_wrap = true +tracks/6/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 0, +"values": [Vector2(-2, 14)] +} +tracks/7/type = "value" +tracks/7/imported = false +tracks/7/enabled = true +tracks/7/path = NodePath("Zombie/Butt/RightUpperLeg/RightLowerLeg/RightFoot:rotation") +tracks/7/interp = 1 +tracks/7/loop_wrap = true +tracks/7/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 0, +"values": [0.0] +} +tracks/8/type = "value" +tracks/8/imported = false +tracks/8/enabled = true +tracks/8/path = NodePath("Zombie/Butt/LeftUpperLeg:position") +tracks/8/interp = 1 +tracks/8/loop_wrap = true +tracks/8/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 0, +"values": [Vector2(6, 4)] +} +tracks/9/type = "value" +tracks/9/imported = false +tracks/9/enabled = true +tracks/9/path = NodePath("Zombie/Butt/LeftUpperLeg:rotation") +tracks/9/interp = 1 +tracks/9/loop_wrap = true +tracks/9/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 0, +"values": [0.0] +} +tracks/10/type = "value" +tracks/10/imported = false +tracks/10/enabled = true +tracks/10/path = NodePath("Zombie/Butt/LeftUpperLeg/LeftLowerLeg:position") +tracks/10/interp = 1 +tracks/10/loop_wrap = true +tracks/10/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 0, +"values": [Vector2(-1, 13)] +} +tracks/11/type = "value" +tracks/11/imported = false +tracks/11/enabled = true +tracks/11/path = NodePath("Zombie/Butt/LeftUpperLeg/LeftLowerLeg:rotation") +tracks/11/interp = 1 +tracks/11/loop_wrap = true +tracks/11/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 0, +"values": [0.0] +} +tracks/12/type = "value" +tracks/12/imported = false +tracks/12/enabled = true +tracks/12/path = NodePath("Zombie/Butt/LeftUpperLeg/LeftLowerLeg/LeftFoot:position") +tracks/12/interp = 1 +tracks/12/loop_wrap = true +tracks/12/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 0, +"values": [Vector2(6, 10)] +} +tracks/13/type = "value" +tracks/13/imported = false +tracks/13/enabled = true +tracks/13/path = NodePath("Zombie/Butt/LeftUpperLeg/LeftLowerLeg/LeftFoot:rotation") +tracks/13/interp = 1 +tracks/13/loop_wrap = true +tracks/13/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 0, +"values": [0.0] +} +tracks/14/type = "value" +tracks/14/imported = false +tracks/14/enabled = true +tracks/14/path = NodePath("Zombie/Butt/Body:position") +tracks/14/interp = 1 +tracks/14/loop_wrap = true +tracks/14/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 0, +"values": [Vector2(1, -2)] +} +tracks/15/type = "value" +tracks/15/imported = false +tracks/15/enabled = true +tracks/15/path = NodePath("Zombie/Butt/Body:rotation") +tracks/15/interp = 1 +tracks/15/loop_wrap = true +tracks/15/keys = { +"times": PackedFloat32Array(0, 0.15, 0.35, 0.5, 0.6, 0.75), +"transitions": PackedFloat32Array(1, 1, 1, 1, 1, 1), +"update": 0, +"values": [0.0, 0.0818632, -0.0349066, 0.0, 0.0698132, -0.0349066] +} +tracks/16/type = "value" +tracks/16/imported = false +tracks/16/enabled = true +tracks/16/path = NodePath("Zombie/Butt/Body/RightUpperArm:position") +tracks/16/interp = 1 +tracks/16/loop_wrap = true +tracks/16/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 0, +"values": [Vector2(-14, -23)] +} +tracks/17/type = "value" +tracks/17/imported = false +tracks/17/enabled = true +tracks/17/path = NodePath("Zombie/Butt/Body/RightUpperArm:rotation") +tracks/17/interp = 1 +tracks/17/loop_wrap = true +tracks/17/keys = { +"times": PackedFloat32Array(0, 0.2, 0.35, 0.6, 0.8), +"transitions": PackedFloat32Array(1, 1, 1, 1, 1), +"update": 0, +"values": [0.0, 0.282039, 0.376119, 0.0520613, -0.227038] +} +tracks/18/type = "value" +tracks/18/imported = false +tracks/18/enabled = true +tracks/18/path = NodePath("Zombie/Butt/Body/RightUpperArm/RightLowerArm:position") +tracks/18/interp = 1 +tracks/18/loop_wrap = true +tracks/18/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 0, +"values": [Vector2(-2, 15)] +} +tracks/19/type = "value" +tracks/19/imported = false +tracks/19/enabled = true +tracks/19/path = NodePath("Zombie/Butt/Body/RightUpperArm/RightLowerArm:rotation") +tracks/19/interp = 1 +tracks/19/loop_wrap = true +tracks/19/keys = { +"times": PackedFloat32Array(0, 0.35, 0.6, 0.8), +"transitions": PackedFloat32Array(1, 1, 1, 1), +"update": 0, +"values": [1.5708, 2.21174, 1.42591, 1.4429] +} +tracks/20/type = "value" +tracks/20/imported = false +tracks/20/enabled = true +tracks/20/path = NodePath("Zombie/Butt/Body/RightUpperArm/RightLowerArm/RightHand:position") +tracks/20/interp = 1 +tracks/20/loop_wrap = true +tracks/20/keys = { +"times": PackedFloat32Array(0, 0.35), +"transitions": PackedFloat32Array(1, 1), +"update": 0, +"values": [Vector2(-1, 13), Vector2(-0.579761, 11.6589)] +} +tracks/21/type = "value" +tracks/21/imported = false +tracks/21/enabled = true +tracks/21/path = NodePath("Zombie/Butt/Body/RightUpperArm/RightLowerArm/RightHand:rotation") +tracks/21/interp = 1 +tracks/21/loop_wrap = true +tracks/21/keys = { +"times": PackedFloat32Array(0, 0.2, 0.35, 0.6, 0.8), +"transitions": PackedFloat32Array(1, 1, 1, 1, 1), +"update": 0, +"values": [0.0, 0.303203, 1.04783, 0.128023, -0.304426] +} +tracks/22/type = "value" +tracks/22/imported = false +tracks/22/enabled = true +tracks/22/path = NodePath("Zombie/Butt/Body/Tie:position") +tracks/22/interp = 1 +tracks/22/loop_wrap = true +tracks/22/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 0, +"values": [Vector2(-9, -21)] +} +tracks/23/type = "value" +tracks/23/imported = false +tracks/23/enabled = true +tracks/23/path = NodePath("Zombie/Butt/Body/Tie:rotation") +tracks/23/interp = 1 +tracks/23/loop_wrap = true +tracks/23/keys = { +"times": PackedFloat32Array(0, 0.15, 0.35, 0.6, 0.75), +"transitions": PackedFloat32Array(1, 1, 1, 1, 1), +"update": 0, +"values": [0.0, -0.104057, 0.106544, -0.0644312, 0.0350192] +} +tracks/24/type = "value" +tracks/24/imported = false +tracks/24/enabled = true +tracks/24/path = NodePath("Zombie/Butt/Body/Head:position") +tracks/24/interp = 1 +tracks/24/loop_wrap = true +tracks/24/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 0, +"values": [Vector2(-10, -25)] +} +tracks/25/type = "value" +tracks/25/imported = false +tracks/25/enabled = true +tracks/25/path = NodePath("Zombie/Butt/Body/Head:rotation") +tracks/25/interp = 1 +tracks/25/loop_wrap = true +tracks/25/keys = { +"times": PackedFloat32Array(0, 0.25, 0.35, 0.45, 0.6, 0.75), +"transitions": PackedFloat32Array(1, 1, 1, 1, 1, 1), +"update": 0, +"values": [0.0, 0.0, -0.113548, 0.0, 0.0, -0.178699] +} +tracks/26/type = "value" +tracks/26/imported = false +tracks/26/enabled = true +tracks/26/path = NodePath("Zombie/Butt/Body/Head/Jaw:position") +tracks/26/interp = 1 +tracks/26/loop_wrap = true +tracks/26/keys = { +"times": PackedFloat32Array(0, 0.2, 0.35, 0.45, 0.6, 0.75), +"transitions": PackedFloat32Array(1, 1, 1, 1, 1, 1), +"update": 0, +"values": [Vector2(-3, 3), Vector2(-3.00274, 2.99674), Vector2(-3.00274, 1.9964), Vector2(-3.00274, 2.99674), Vector2(-3.00274, 2.99674), Vector2(-3.00274, 1.9964)] +} +tracks/27/type = "value" +tracks/27/imported = false +tracks/27/enabled = true +tracks/27/path = NodePath("Zombie/Butt/Body/Head/Jaw:rotation") +tracks/27/interp = 1 +tracks/27/loop_wrap = true +tracks/27/keys = { +"times": PackedFloat32Array(0, 0.2, 0.35, 0.6, 0.75), +"transitions": PackedFloat32Array(1, 1, 1, 1, 1), +"update": 0, +"values": [0.0, -0.109226, 0.0, -0.0926703, 0.0] +} +tracks/28/type = "value" +tracks/28/imported = false +tracks/28/enabled = true +tracks/28/path = NodePath("Zombie/Butt/Body/Head/RightEye:position") +tracks/28/interp = 1 +tracks/28/loop_wrap = true +tracks/28/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 0, +"values": [Vector2(-16.0072, -8.00701)] +} +tracks/29/type = "value" +tracks/29/imported = false +tracks/29/enabled = true +tracks/29/path = NodePath("Zombie/Butt/Body/Head/RightEye:rotation") +tracks/29/interp = 1 +tracks/29/loop_wrap = true +tracks/29/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 0, +"values": [0.0] +} +tracks/30/type = "value" +tracks/30/imported = false +tracks/30/enabled = true +tracks/30/path = NodePath("Zombie/Butt/Body/Head/LeftEye:position") +tracks/30/interp = 1 +tracks/30/loop_wrap = true +tracks/30/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 0, +"values": [Vector2(-5.00342, -9.00735)] +} +tracks/31/type = "value" +tracks/31/imported = false +tracks/31/enabled = true +tracks/31/path = NodePath("Zombie/Butt/Body/Head/LeftEye:rotation") +tracks/31/interp = 1 +tracks/31/loop_wrap = true +tracks/31/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 0, +"values": [0.0] +} +tracks/32/type = "value" +tracks/32/imported = false +tracks/32/enabled = true +tracks/32/path = NodePath("Zombie/Butt/Body/LeftUpperArm:position") +tracks/32/interp = 1 +tracks/32/loop_wrap = true +tracks/32/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 0, +"values": [Vector2(-1, -20)] +} +tracks/33/type = "value" +tracks/33/imported = false +tracks/33/enabled = true +tracks/33/path = NodePath("Zombie/Butt/Body/LeftUpperArm:rotation") +tracks/33/interp = 1 +tracks/33/loop_wrap = true +tracks/33/keys = { +"times": PackedFloat32Array(0, 0.25, 0.5, 0.75), +"transitions": PackedFloat32Array(1, 1, 1, 1), +"update": 0, +"values": [0.0, -0.375388, 0.218228, 0.628399] +} +tracks/34/type = "value" +tracks/34/imported = false +tracks/34/enabled = true +tracks/34/path = NodePath("Zombie/Butt/Body/LeftUpperArm/LeftLowerArm:position") +tracks/34/interp = 1 +tracks/34/loop_wrap = true +tracks/34/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 0, +"values": [Vector2(-2, 14)] +} +tracks/35/type = "value" +tracks/35/imported = false +tracks/35/enabled = true +tracks/35/path = NodePath("Zombie/Butt/Body/LeftUpperArm/LeftLowerArm:rotation") +tracks/35/interp = 1 +tracks/35/loop_wrap = true +tracks/35/keys = { +"times": PackedFloat32Array(0, 0.25, 0.35, 0.5, 0.75), +"transitions": PackedFloat32Array(1, 1, 1, 1, 1), +"update": 0, +"values": [1.5708, 1.73031, 1.36965, 1.19019, 1.43255] +} +tracks/36/type = "value" +tracks/36/imported = false +tracks/36/enabled = true +tracks/36/path = NodePath("Zombie/Butt/Body/LeftUpperArm/LeftLowerArm/LeftHand:position") +tracks/36/interp = 1 +tracks/36/loop_wrap = true +tracks/36/keys = { +"times": PackedFloat32Array(0, 0.75), +"transitions": PackedFloat32Array(1, 1), +"update": 0, +"values": [Vector2(-2.00188, 13.008), Vector2(-1.21141, 12.2038)] +} +tracks/37/type = "value" +tracks/37/imported = false +tracks/37/enabled = true +tracks/37/path = NodePath("Zombie/Butt/Body/LeftUpperArm/LeftLowerArm/LeftHand:rotation") +tracks/37/interp = 1 +tracks/37/loop_wrap = true +tracks/37/keys = { +"times": PackedFloat32Array(0, 0.25, 0.5, 0.75), +"transitions": PackedFloat32Array(1, 1, 1, 1), +"update": 0, +"values": [0.0, -0.025322, -0.077298, 0.803747] +} +tracks/38/type = "value" +tracks/38/imported = false +tracks/38/enabled = true +tracks/38/path = NodePath("Zombie/Butt/Body/LeftUpperArm/LeftLowerArm/LeftHand/Left_Hand:texture") +tracks/38/interp = 1 +tracks/38/loop_wrap = true +tracks/38/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 1, +"values": [SubResource("AtlasTexture_wfem3")] +} +tracks/39/type = "value" +tracks/39/imported = false +tracks/39/enabled = true +tracks/39/path = NodePath("Zombie/Butt/Body/LeftUpperArm/LeftLowerArm/LeftHand/Left_Hand:offset") +tracks/39/interp = 1 +tracks/39/loop_wrap = true +tracks/39/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 0, +"values": [Vector2(-4, 0)] +} +tracks/40/type = "value" +tracks/40/imported = false +tracks/40/enabled = true +tracks/40/path = NodePath("../../Mover:_speedControlMult") +tracks/40/interp = 1 +tracks/40/loop_wrap = true +tracks/40/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 0, +"values": [0.0] +} +tracks/41/type = "method" +tracks/41/imported = false +tracks/41/enabled = true +tracks/41/path = NodePath("../../ChompPlayer") +tracks/41/interp = 1 +tracks/41/loop_wrap = true +tracks/41/keys = { +"times": PackedFloat32Array(0.347597, 0.748081), +"transitions": PackedFloat32Array(1, 1), +"values": [{ +"args": [], +"method": &"Play" +}, { +"args": [], +"method": &"Play" +}] +} +tracks/42/type = "method" +tracks/42/imported = false +tracks/42/enabled = true +tracks/42/path = NodePath("../../Eatbox") +tracks/42/interp = 1 +tracks/42/loop_wrap = true +tracks/42/keys = { +"times": PackedFloat32Array(0.344634, 0.748081), +"transitions": PackedFloat32Array(1, 1), +"values": [{ +"args": [], +"method": &"Bite" +}, { +"args": [], +"method": &"Bite" +}] +} + +[sub_resource type="Animation" id="Animation_amqpj"] +resource_name = "basic_zombie_stand" +length = 0.8 +loop_mode = 1 +tracks/0/type = "value" +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/path = NodePath("Zombie/Butt/Body/LeftUpperArm/LeftLowerArm:position") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 0, +"values": [Vector2(-2, 14)] +} +tracks/1/type = "value" +tracks/1/imported = false +tracks/1/enabled = true +tracks/1/path = NodePath("Zombie/Butt/Body/LeftUpperArm/LeftLowerArm:rotation") +tracks/1/interp = 1 +tracks/1/loop_wrap = true +tracks/1/keys = { +"times": PackedFloat32Array(0, 0.4), +"transitions": PackedFloat32Array(1, 1), +"update": 0, +"values": [0.0, 0.0574338] +} +tracks/2/type = "value" +tracks/2/imported = false +tracks/2/enabled = true +tracks/2/path = NodePath("Zombie/Butt/Body/LeftUpperArm/LeftLowerArm/LeftHand:position") +tracks/2/interp = 1 +tracks/2/loop_wrap = true +tracks/2/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 0, +"values": [Vector2(-1, 13)] +} +tracks/3/type = "value" +tracks/3/imported = false +tracks/3/enabled = true +tracks/3/path = NodePath("Zombie/Butt/Body/LeftUpperArm/LeftLowerArm/LeftHand:rotation") +tracks/3/interp = 1 +tracks/3/loop_wrap = true +tracks/3/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 0, +"values": [0.0] +} +tracks/4/type = "value" +tracks/4/imported = false +tracks/4/enabled = true +tracks/4/path = NodePath("Zombie/Butt/Body/LeftUpperArm:position") +tracks/4/interp = 1 +tracks/4/loop_wrap = true +tracks/4/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 0, +"values": [Vector2(-1, -20)] +} +tracks/5/type = "value" +tracks/5/imported = false +tracks/5/enabled = true +tracks/5/path = NodePath("Zombie/Butt/Body/LeftUpperArm:rotation") +tracks/5/interp = 1 +tracks/5/loop_wrap = true +tracks/5/keys = { +"times": PackedFloat32Array(0, 0.4), +"transitions": PackedFloat32Array(1, 1), +"update": 0, +"values": [0.0, 0.0580294] +} +tracks/6/type = "value" +tracks/6/imported = false +tracks/6/enabled = true +tracks/6/path = NodePath("Zombie/Butt/Body/Head/LeftEye:position") +tracks/6/interp = 1 +tracks/6/loop_wrap = true +tracks/6/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 0, +"values": [Vector2(-4, -9)] +} +tracks/7/type = "value" +tracks/7/imported = false +tracks/7/enabled = true +tracks/7/path = NodePath("Zombie/Butt/Body/Head/LeftEye:rotation") +tracks/7/interp = 1 +tracks/7/loop_wrap = true +tracks/7/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 0, +"values": [0.0] +} +tracks/8/type = "value" +tracks/8/imported = false +tracks/8/enabled = true +tracks/8/path = NodePath("Zombie/Butt/Body/Head/RightEye:position") +tracks/8/interp = 1 +tracks/8/loop_wrap = true +tracks/8/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 0, +"values": [Vector2(-16, -8)] +} +tracks/9/type = "value" +tracks/9/imported = false +tracks/9/enabled = true +tracks/9/path = NodePath("Zombie/Butt/Body/Head/RightEye:rotation") +tracks/9/interp = 1 +tracks/9/loop_wrap = true +tracks/9/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 0, +"values": [0.0] +} +tracks/10/type = "value" +tracks/10/imported = false +tracks/10/enabled = true +tracks/10/path = NodePath("Zombie/Butt/Body/Head/Jaw:position") +tracks/10/interp = 1 +tracks/10/loop_wrap = true +tracks/10/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 0, +"values": [Vector2(-3, 3)] +} +tracks/11/type = "value" +tracks/11/imported = false +tracks/11/enabled = true +tracks/11/path = NodePath("Zombie/Butt/Body/Head/Jaw:rotation") +tracks/11/interp = 1 +tracks/11/loop_wrap = true +tracks/11/keys = { +"times": PackedFloat32Array(0, 0.4), +"transitions": PackedFloat32Array(1, 1), +"update": 0, +"values": [0.0, -0.103552] +} +tracks/12/type = "value" +tracks/12/imported = false +tracks/12/enabled = true +tracks/12/path = NodePath("Zombie/Butt/Body/Tie:position") +tracks/12/interp = 1 +tracks/12/loop_wrap = true +tracks/12/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 0, +"values": [Vector2(-9, -21)] +} +tracks/13/type = "value" +tracks/13/imported = false +tracks/13/enabled = true +tracks/13/path = NodePath("Zombie/Butt/Body/Tie:rotation") +tracks/13/interp = 1 +tracks/13/loop_wrap = true +tracks/13/keys = { +"times": PackedFloat32Array(0, 0.4), +"transitions": PackedFloat32Array(1, 1), +"update": 0, +"values": [0.0, 0.0636681] +} +tracks/14/type = "value" +tracks/14/imported = false +tracks/14/enabled = true +tracks/14/path = NodePath("Zombie/Butt/Body/RightUpperArm/RightLowerArm/RightHand:position") +tracks/14/interp = 1 +tracks/14/loop_wrap = true +tracks/14/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 0, +"values": [Vector2(-1, 13)] +} +tracks/15/type = "value" +tracks/15/imported = false +tracks/15/enabled = true +tracks/15/path = NodePath("Zombie/Butt/Body/RightUpperArm/RightLowerArm/RightHand:rotation") +tracks/15/interp = 1 +tracks/15/loop_wrap = true +tracks/15/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 0, +"values": [0.0] +} +tracks/16/type = "value" +tracks/16/imported = false +tracks/16/enabled = true +tracks/16/path = NodePath("Zombie/Butt/Body/RightUpperArm/RightLowerArm:position") +tracks/16/interp = 1 +tracks/16/loop_wrap = true +tracks/16/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 0, +"values": [Vector2(-2, 15)] +} +tracks/17/type = "value" +tracks/17/imported = false +tracks/17/enabled = true +tracks/17/path = NodePath("Zombie/Butt/Body/RightUpperArm/RightLowerArm:rotation") +tracks/17/interp = 1 +tracks/17/loop_wrap = true +tracks/17/keys = { +"times": PackedFloat32Array(0, 0.4), +"transitions": PackedFloat32Array(1, 1), +"update": 0, +"values": [0.0, 0.0201917] +} +tracks/18/type = "value" +tracks/18/imported = false +tracks/18/enabled = true +tracks/18/path = NodePath("Zombie/Butt/Body/RightUpperArm:position") +tracks/18/interp = 1 +tracks/18/loop_wrap = true +tracks/18/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 0, +"values": [Vector2(-14, -23)] +} +tracks/19/type = "value" +tracks/19/imported = false +tracks/19/enabled = true +tracks/19/path = NodePath("Zombie/Butt/Body/RightUpperArm:rotation") +tracks/19/interp = 1 +tracks/19/loop_wrap = true +tracks/19/keys = { +"times": PackedFloat32Array(0, 0.4), +"transitions": PackedFloat32Array(1, 1), +"update": 0, +"values": [0.0, 0.0681766] +} +tracks/20/type = "value" +tracks/20/imported = false +tracks/20/enabled = true +tracks/20/path = NodePath("Zombie/Butt/LeftUpperLeg/LeftLowerLeg/LeftFoot:position") +tracks/20/interp = 1 +tracks/20/loop_wrap = true +tracks/20/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 0, +"values": [Vector2(6, 10)] +} +tracks/21/type = "value" +tracks/21/imported = false +tracks/21/enabled = true +tracks/21/path = NodePath("Zombie/Butt/LeftUpperLeg/LeftLowerLeg/LeftFoot:rotation") +tracks/21/interp = 1 +tracks/21/loop_wrap = true +tracks/21/keys = { +"times": PackedFloat32Array(0, 0.4), +"transitions": PackedFloat32Array(1, 1), +"update": 0, +"values": [0.0, 0.0314044] +} +tracks/22/type = "value" +tracks/22/imported = false +tracks/22/enabled = true +tracks/22/path = NodePath("Zombie/Butt/LeftUpperLeg/LeftLowerLeg:position") +tracks/22/interp = 1 +tracks/22/loop_wrap = true +tracks/22/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 0, +"values": [Vector2(-1, 13)] +} +tracks/23/type = "value" +tracks/23/imported = false +tracks/23/enabled = true +tracks/23/path = NodePath("Zombie/Butt/LeftUpperLeg/LeftLowerLeg:rotation") +tracks/23/interp = 1 +tracks/23/loop_wrap = true +tracks/23/keys = { +"times": PackedFloat32Array(0, 0.4), +"transitions": PackedFloat32Array(1, 1), +"update": 0, +"values": [0.0, -0.24215] +} +tracks/24/type = "value" +tracks/24/imported = false +tracks/24/enabled = true +tracks/24/path = NodePath("Zombie/Butt/LeftUpperLeg:position") +tracks/24/interp = 1 +tracks/24/loop_wrap = true +tracks/24/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 0, +"values": [Vector2(6, 4)] +} +tracks/25/type = "value" +tracks/25/imported = false +tracks/25/enabled = true +tracks/25/path = NodePath("Zombie/Butt/LeftUpperLeg:rotation") +tracks/25/interp = 1 +tracks/25/loop_wrap = true +tracks/25/keys = { +"times": PackedFloat32Array(0, 0.4), +"transitions": PackedFloat32Array(1, 1), +"update": 0, +"values": [0.0, 0.163163] +} +tracks/26/type = "value" +tracks/26/imported = false +tracks/26/enabled = true +tracks/26/path = NodePath("Zombie/Butt/RightUpperLeg/RightLowerLeg/RightFoot:position") +tracks/26/interp = 1 +tracks/26/loop_wrap = true +tracks/26/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 0, +"values": [Vector2(-2, 14)] +} +tracks/27/type = "value" +tracks/27/imported = false +tracks/27/enabled = true +tracks/27/path = NodePath("Zombie/Butt/RightUpperLeg/RightLowerLeg/RightFoot:rotation") +tracks/27/interp = 1 +tracks/27/loop_wrap = true +tracks/27/keys = { +"times": PackedFloat32Array(0, 0.4), +"transitions": PackedFloat32Array(1, 1), +"update": 0, +"values": [0.0, -0.163247] +} +tracks/28/type = "value" +tracks/28/imported = false +tracks/28/enabled = true +tracks/28/path = NodePath("Zombie/Butt/RightUpperLeg/RightLowerLeg:position") +tracks/28/interp = 1 +tracks/28/loop_wrap = true +tracks/28/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 0, +"values": [Vector2(-2, 12)] +} +tracks/29/type = "value" +tracks/29/imported = false +tracks/29/enabled = true +tracks/29/path = NodePath("Zombie/Butt/RightUpperLeg/RightLowerLeg:rotation") +tracks/29/interp = 1 +tracks/29/loop_wrap = true +tracks/29/keys = { +"times": PackedFloat32Array(0, 0.4), +"transitions": PackedFloat32Array(1, 1), +"update": 0, +"values": [0.0, 0.285349] +} +tracks/30/type = "value" +tracks/30/imported = false +tracks/30/enabled = true +tracks/30/path = NodePath("Zombie/Butt/RightUpperLeg:position") +tracks/30/interp = 1 +tracks/30/loop_wrap = true +tracks/30/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 0, +"values": [Vector2(-6, 3)] +} +tracks/31/type = "value" +tracks/31/imported = false +tracks/31/enabled = true +tracks/31/path = NodePath("Zombie/Butt/RightUpperLeg:rotation") +tracks/31/interp = 1 +tracks/31/loop_wrap = true +tracks/31/keys = { +"times": PackedFloat32Array(0, 0.4), +"transitions": PackedFloat32Array(1, 1), +"update": 0, +"values": [0.0, -0.0646202] +} +tracks/32/type = "value" +tracks/32/imported = false +tracks/32/enabled = true +tracks/32/path = NodePath("Zombie/Butt:position") +tracks/32/interp = 1 +tracks/32/loop_wrap = true +tracks/32/keys = { +"times": PackedFloat32Array(0, 0.4), +"transitions": PackedFloat32Array(1, 1), +"update": 0, +"values": [Vector2(5, -35), Vector2(6, -34)] +} +tracks/33/type = "value" +tracks/33/imported = false +tracks/33/enabled = true +tracks/33/path = NodePath("Zombie/Butt:rotation") +tracks/33/interp = 1 +tracks/33/loop_wrap = true +tracks/33/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 0, +"values": [0.0] +} +tracks/34/type = "value" +tracks/34/imported = false +tracks/34/enabled = true +tracks/34/path = NodePath("Zombie/Butt/Body:position") +tracks/34/interp = 1 +tracks/34/loop_wrap = true +tracks/34/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 0, +"values": [Vector2(1, -2)] +} +tracks/35/type = "value" +tracks/35/imported = false +tracks/35/enabled = true +tracks/35/path = NodePath("Zombie/Butt/Body:rotation") +tracks/35/interp = 1 +tracks/35/loop_wrap = true +tracks/35/keys = { +"times": PackedFloat32Array(0, 0.4), +"transitions": PackedFloat32Array(1, 1), +"update": 0, +"values": [0.0, -0.0504377] +} +tracks/36/type = "value" +tracks/36/imported = false +tracks/36/enabled = true +tracks/36/path = NodePath("Zombie:position") +tracks/36/interp = 1 +tracks/36/loop_wrap = true +tracks/36/keys = { +"times": PackedFloat32Array(0.8), +"transitions": PackedFloat32Array(1), +"update": 0, +"values": [Vector2(0, 0)] +} +tracks/37/type = "value" +tracks/37/imported = false +tracks/37/enabled = true +tracks/37/path = NodePath("Zombie:rotation") +tracks/37/interp = 1 +tracks/37/loop_wrap = true +tracks/37/keys = { +"times": PackedFloat32Array(0.8), +"transitions": PackedFloat32Array(1), +"update": 0, +"values": [0.0] +} +tracks/38/type = "value" +tracks/38/imported = false +tracks/38/enabled = true +tracks/38/path = NodePath("../../Mover:_speedControlMult") +tracks/38/interp = 1 +tracks/38/loop_wrap = true +tracks/38/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 0, +"values": [0.0] +} + +[sub_resource type="AnimationLibrary" id="AnimationLibrary_x5uj2"] +_data = { +&"RESET": SubResource("Animation_x5uj2"), +&"basic_zombie_eating": SubResource("Animation_wfem3"), +&"basic_zombie_stand": SubResource("Animation_amqpj"), +&"basic_zombie_walk": SubResource("Animation_vcc72"), +&"dead_lmao": SubResource("Animation_wn68q") +} + +[sub_resource type="RectangleShape2D" id="RectangleShape2D_hxyad"] +size = Vector2(2, 48) + +[sub_resource type="Resource" id="Resource_ruqsf"] +resource_local_to_scene = true +script = ExtResource("7_b3p4o") +flat_value = 5.0 +percentage_value = 0.0 +mult_value = 1.0 + +[sub_resource type="RectangleShape2D" id="RectangleShape2D_r4ug6"] +size = Vector2(16, 48) [sub_resource type="AnimationNodeTimeScale" id="AnimationNodeTimeScale_2q05d"] [sub_resource type="AnimationNodeBlendTree" id="AnimationNodeBlendTree_ccrjo"] +graph_offset = Vector2(-398, 63) nodes/TimeScale/node = SubResource("AnimationNodeTimeScale_2q05d") nodes/TimeScale/position = Vector2(60, 120) nodes/Tree/node = ExtResource("8_ckb7n") @@ -73,7 +2735,7 @@ node_connections = [&"TimeScale", 0, &"Tree", &"output", 0, &"TimeScale"] [sub_resource type="Resource" id="Resource_ckb7n"] resource_local_to_scene = true script = ExtResource("7_b3p4o") -flat_value = 0.2 +flat_value = 0.235 percentage_value = 0.0 mult_value = 1.0 @@ -82,20 +2744,282 @@ script = ExtResource("21_xnora") restartTreshold = -1.0 metadata/_custom_type_script = "uid://c1x4n4nqyq72f" -[node name="Zombie" type="Node2D"] +[node name="Zombie" type="Node2D" node_paths=PackedStringArray("_player", "_tree")] y_sort_enabled = true script = ExtResource("1_qq3f1") garlicSound = ExtResource("2_hh4qh") freezeSound = ExtResource("3_ltj46") MaxHP = 70.0 +_player = NodePath("CanvasGroup/basic_zombie_walk/AnimationPlayer") +_tree = NodePath("AnimationTree") [node name="CanvasGroup" type="CanvasGroup" parent="."] material = SubResource("ShaderMaterial_63ls2") script = ExtResource("3_rao3m") -[node name="Sprite" type="Sprite2D" parent="CanvasGroup"] -position = Vector2(-4, -55) -texture = ExtResource("2_4pdxh") +[node name="basic_zombie_walk" type="Node2D" parent="CanvasGroup"] + +[node name="Zombie" type="Skeleton2D" parent="CanvasGroup/basic_zombie_walk"] +modification_stack = SubResource("SkeletonModificationStack2D_wn68q") + +[node name="Butt" type="Bone2D" parent="CanvasGroup/basic_zombie_walk/Zombie"] +position = Vector2(5, -35) +scale = Vector2(0.999912, 0.999912) +rest = Transform2D(1, 0, 0, 1, 5, -35) +editor_settings/show_bone_gizmo = false + +[node name="Butt" type="Sprite2D" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt"] +texture = SubResource("AtlasTexture_jvn5w") +centered = false +offset = Vector2(-10, -3) +metadata/_edit_lock_ = true + +[node name="RightUpperLeg" type="Bone2D" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt"] +position = Vector2(-6, 3) +scale = Vector2(0.999831, 0.999831) +rest = Transform2D(1, 0, 0, 1, -6, 3) +editor_settings/show_bone_gizmo = false + +[node name="Right_Upper_Leg" type="Sprite2D" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/RightUpperLeg"] +texture = SubResource("AtlasTexture_vmdbp") +centered = false +offset = Vector2(-6, -2) +metadata/_edit_lock_ = true + +[node name="RightLowerLeg" type="Bone2D" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/RightUpperLeg"] +position = Vector2(-2, 12) +scale = Vector2(0.999831, 0.999831) +rest = Transform2D(1, 0, 0, 1, -2, 12) +editor_settings/show_bone_gizmo = false + +[node name="RightFoot" type="Bone2D" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/RightUpperLeg/RightLowerLeg"] +position = Vector2(-2, 14) +scale = Vector2(0.999833, 0.999833) +rest = Transform2D(1, 0, 0, 1, -2, 14) +auto_calculate_length_and_angle = false +length = 12.0 +bone_angle = 0.0 +editor_settings/show_bone_gizmo = false + +[node name="Right_Foot" type="Sprite2D" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/RightUpperLeg/RightLowerLeg/RightFoot"] +texture = SubResource("AtlasTexture_x1oyw") +centered = false +offset = Vector2(-4, -3) +metadata/_edit_lock_ = true + +[node name="Right_Lower_Leg" type="Sprite2D" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/RightUpperLeg/RightLowerLeg"] +position = Vector2(-18, -2) +texture = SubResource("AtlasTexture_vjx3c") +centered = false +offset = Vector2(12, 1) +metadata/_edit_lock_ = true + +[node name="LeftUpperLeg" type="Bone2D" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt"] +position = Vector2(6, 4) +scale = Vector2(0.99983, 0.99983) +rest = Transform2D(1, 0, 0, 1, 6, 4) +editor_settings/show_bone_gizmo = false + +[node name="Left_Upper_Leg" type="Sprite2D" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/LeftUpperLeg"] +texture = SubResource("AtlasTexture_f31xd") +centered = false +offset = Vector2(-4, -2) +metadata/_edit_lock_ = true + +[node name="LeftLowerLeg" type="Bone2D" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/LeftUpperLeg"] +position = Vector2(-1, 13) +scale = Vector2(0.999836, 0.999836) +rest = Transform2D(1, 0, 0, 1, -1, 13) +editor_settings/show_bone_gizmo = false + +[node name="Left_Lower_Leg" type="Sprite2D" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/LeftUpperLeg/LeftLowerLeg"] +texture = SubResource("AtlasTexture_od8jf") +centered = false +offset = Vector2(-1, 0) +metadata/_edit_lock_ = true + +[node name="LeftFoot" type="Bone2D" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/LeftUpperLeg/LeftLowerLeg"] +position = Vector2(6, 10) +scale = Vector2(0.999828, 0.999828) +rest = Transform2D(1, 0, 0, 1, 6, 10) +auto_calculate_length_and_angle = false +length = 12.0 +bone_angle = 160.0 +editor_settings/show_bone_gizmo = false + +[node name="Left_Foot" type="Sprite2D" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/LeftUpperLeg/LeftLowerLeg/LeftFoot"] +texture = SubResource("AtlasTexture_p4711") +centered = false +offset = Vector2(-14, -3) +metadata/_edit_lock_ = true + +[node name="Body" type="Bone2D" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt"] +position = Vector2(1, -2) +scale = Vector2(0.999829, 0.999829) +rest = Transform2D(1, 0, 0, 1, 1, -2) +editor_settings/show_bone_gizmo = false + +[node name="RightUpperArm" type="Bone2D" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body"] +z_index = -1 +position = Vector2(-14, -23) +scale = Vector2(0.999826, 0.999826) +rest = Transform2D(1, 0, 0, 1, -14, -23) +editor_settings/show_bone_gizmo = false + +[node name="Right_Upper_Arm" type="Sprite2D" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/RightUpperArm"] +texture = SubResource("AtlasTexture_1bk2b") +centered = false +offset = Vector2(-4, -2) +metadata/_edit_lock_ = true + +[node name="RightLowerArm" type="Bone2D" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/RightUpperArm"] +position = Vector2(-2, 15) +scale = Vector2(0.999828, 0.999828) +rest = Transform2D(1, 0, 0, 1, -2, 15) +editor_settings/show_bone_gizmo = false + +[node name="RightHand" type="Bone2D" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/RightUpperArm/RightLowerArm"] +position = Vector2(-1, 13) +scale = Vector2(0.999829, 0.999829) +rest = Transform2D(1, 0, 0, 1, -1, 13) +auto_calculate_length_and_angle = false +length = 8.0 +bone_angle = 90.0 +editor_settings/show_bone_gizmo = false + +[node name="Right_Hand" type="Sprite2D" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/RightUpperArm/RightLowerArm/RightHand"] +texture = SubResource("AtlasTexture_y06yv") +centered = false +offset = Vector2(-4, -2) +metadata/_edit_lock_ = true + +[node name="Right_Lower_Arm" type="Sprite2D" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/RightUpperArm/RightLowerArm"] +texture = SubResource("AtlasTexture_lu8go") +centered = false +offset = Vector2(-5, -1) +metadata/_edit_lock_ = true + +[node name="Body" type="Sprite2D" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body"] +rotation = 0.00163735 +texture = SubResource("AtlasTexture_cdq7v") +centered = false +offset = Vector2(-15, -27) +metadata/_edit_lock_ = true + +[node name="Tie" type="Bone2D" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body"] +position = Vector2(-9, -21) +skew = -7.43866e-05 +rest = Transform2D(1, 0, 0, 1, -9, -21) +auto_calculate_length_and_angle = false +length = 24.0 +bone_angle = 100.0 +editor_settings/show_bone_gizmo = false + +[node name="Tie" type="Sprite2D" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/Tie"] +texture = SubResource("AtlasTexture_e7wc3") +centered = false +offset = Vector2(-10, -1) +metadata/_edit_lock_ = true + +[node name="Head" type="Bone2D" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body"] +position = Vector2(-10, -25) +scale = Vector2(0.999829, 0.999829) +rest = Transform2D(1, 0, 0, 1, -10, -25) +editor_settings/show_bone_gizmo = false + +[node name="Head" type="Sprite2D" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/Head"] +texture = SubResource("AtlasTexture_wn68q") +centered = false +offset = Vector2(-20, -24) +metadata/_edit_lock_ = true + +[node name="Jaw" type="Bone2D" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/Head"] +position = Vector2(-3, 3) +scale = Vector2(0.999828, 0.999828) +rest = Transform2D(1, 0, 0, 1, -3, 3) +auto_calculate_length_and_angle = false +length = 11.0 +bone_angle = 180.0 +editor_settings/show_bone_gizmo = false + +[node name="Jaw" type="Sprite2D" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/Head/Jaw"] +texture = SubResource("AtlasTexture_x5uj2") +centered = false +offset = Vector2(-12, -2) +metadata/_edit_lock_ = true + +[node name="RightEye" type="Bone2D" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/Head"] +position = Vector2(-16, -8) +rest = Transform2D(1, 0, 0, 1, -16, -8) +auto_calculate_length_and_angle = false +length = 2.0 +bone_angle = 180.0 +editor_settings/show_bone_gizmo = false + +[node name="Right_Eye" type="Sprite2D" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/Head/RightEye"] +texture = SubResource("AtlasTexture_vcc72") +centered = false +offset = Vector2(-2, -2) +metadata/_edit_lock_ = true + +[node name="LeftEye" type="Bone2D" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/Head"] +position = Vector2(-4, -9) +rest = Transform2D(1, 0, 0, 1, -4, -9) +auto_calculate_length_and_angle = false +length = 2.0 +bone_angle = 180.0 +editor_settings/show_bone_gizmo = false + +[node name="Left_Eye" type="Sprite2D" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/Head/LeftEye"] +texture = SubResource("AtlasTexture_kto0i") +centered = false +offset = Vector2(-2, -2) +metadata/_edit_lock_ = true + +[node name="LeftUpperArm" type="Bone2D" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body"] +position = Vector2(-1, -20) +scale = Vector2(0.999828, 0.999828) +rest = Transform2D(1, 0, 0, 1, -1, -20) +editor_settings/show_bone_gizmo = false + +[node name="Left_Upper_Arm" type="Sprite2D" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/LeftUpperArm"] +position = Vector2(-37, 10) +texture = SubResource("AtlasTexture_djocr") +centered = false +offset = Vector2(33, -12) +metadata/_edit_lock_ = true + +[node name="LeftLowerArm" type="Bone2D" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/LeftUpperArm"] +position = Vector2(-2, 14) +scale = Vector2(0.999828, 0.999828) +rest = Transform2D(1, 0, 0, 1, -2, 14) +editor_settings/show_bone_gizmo = false + +[node name="LeftHand" type="Bone2D" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/LeftUpperArm/LeftLowerArm"] +position = Vector2(-1, 13) +scale = Vector2(0.999826, 0.999826) +rest = Transform2D(1, 0, 0, 1, -1, 13) +auto_calculate_length_and_angle = false +length = 6.0 +bone_angle = 90.0 +editor_settings/show_bone_gizmo = false + +[node name="Left_Hand" type="Sprite2D" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/LeftUpperArm/LeftLowerArm/LeftHand"] +texture = SubResource("AtlasTexture_6y4ja") +centered = false +offset = Vector2(-4, -1) +metadata/_edit_lock_ = true + +[node name="Left_Lower_Arm" type="Sprite2D" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/LeftUpperArm/LeftLowerArm"] +texture = SubResource("AtlasTexture_auqeq") +centered = false +offset = Vector2(-5, 0) +metadata/_edit_lock_ = true + +[node name="AnimationPlayer" type="AnimationPlayer" parent="CanvasGroup/basic_zombie_walk"] +libraries = { +&"": SubResource("AnimationLibrary_x5uj2") +} [node name="Hitbox" type="Area2D" parent="."] collision_layer = 8 @@ -115,16 +3039,11 @@ _damage = SubResource("Resource_ruqsf") position = Vector2(-10, -24) shape = SubResource("RectangleShape2D_r4ug6") -[node name="AnimationPlayer" type="AnimationPlayer" parent="."] -libraries = { -&"": SubResource("AnimationLibrary_sq25x"), -&"basic_zombie": ExtResource("6_ckb7n") -} - [node name="AnimationTree" type="AnimationTree" parent="." node_paths=PackedStringArray("entity")] +root_node = NodePath("../CanvasGroup/basic_zombie_walk") tree_root = SubResource("AnimationNodeBlendTree_ccrjo") advance_expression_base_node = NodePath("../Eatbox") -anim_player = NodePath("../AnimationPlayer") +anim_player = NodePath("../CanvasGroup/basic_zombie_walk/AnimationPlayer") parameters/TimeScale/scale = 1.0 script = ExtResource("11_ccrjo") entity = NodePath("..") diff --git a/scenes/prototype_survival.tscn b/scenes/prototype_survival.tscn index 24ba82e..96be60b 100644 --- a/scenes/prototype_survival.tscn +++ b/scenes/prototype_survival.tscn @@ -182,7 +182,6 @@ size = Vector2(282, 399) [node name="Data" type="Node" parent="."] script = ExtResource("1_tnxdx") -SunCount = 50 [node name="Camera2D" type="Camera2D" parent="."] position = Vector2(481, 200) diff --git a/scenes/templates/plant_template.tscn b/scenes/templates/plant_template.tscn index 6404adc..68c637d 100644 --- a/scenes/templates/plant_template.tscn +++ b/scenes/templates/plant_template.tscn @@ -3,8 +3,10 @@ [ext_resource type="Script" uid="uid://dli2i6albvugt" path="res://scripts/components/plants/RuntimePlantData.cs" id="1_324sd"] [ext_resource type="Script" uid="uid://dwlwi42smgxkb" path="res://scripts/components/TimeScalableAnimationTree.cs" id="2_e75pf"] -[node name="PlantTemplate" type="Node2D"] +[node name="PlantTemplate" type="Node2D" node_paths=PackedStringArray("_player", "_tree")] script = ExtResource("1_324sd") +_player = NodePath("AnimationPlayer") +_tree = NodePath("AnimationTree") [node name="Sprite2D" type="Sprite2D" parent="."] use_parent_material = true diff --git a/scripts/components/Entity.cs b/scripts/components/Entity.cs index 01e4254..c43cae4 100644 --- a/scripts/components/Entity.cs +++ b/scripts/components/Entity.cs @@ -43,17 +43,19 @@ public partial class Entity : Node2D #endregion #region Brain + [Export] private AnimationPlayer _player; + [Export] private AnimationTree _tree; public virtual void DisableBrain() { - GetNode("AnimationPlayer").ProcessMode = ProcessModeEnum.Always; - GetNode("AnimationTree").ProcessMode = ProcessModeEnum.Always; + _player.ProcessMode = ProcessModeEnum.Always; + _tree.ProcessMode = ProcessModeEnum.Always; ProcessMode = ProcessModeEnum.Disabled; } public virtual void EnableBrain() { - GetNode("AnimationPlayer").ProcessMode = ProcessModeEnum.Inherit; - GetNode("AnimationTree").ProcessMode = ProcessModeEnum.Inherit; + _player.ProcessMode = ProcessModeEnum.Inherit; + _tree.ProcessMode = ProcessModeEnum.Inherit; ProcessMode = ProcessModeEnum.Inherit; } #endregion diff --git a/translations/plants.csv b/translations/plants.csv index f322a3b..6a635ef 100644 --- a/translations/plants.csv +++ b/translations/plants.csv @@ -1,83 +1,83 @@ keys,en,ru aloe,Aloe,Алоэ aloe_desc,"[p]Aloe heals injured plants.[/p] -[p]Health points: [color=DARK_RED]3 bites[/color][/p] +[p]Health points: [color=DARK_RED]6 bites[/color][/p] [p]Reload time: [color=DARK_RED]15 seconds[/color].[/p] [p]Ability recharge time: [color=DARK_RED]20 seconds[/color].[/p] [p]Heals plant when it has [color=DARK_RED]third[/color] of its health.[/p]","Алоэ лечит израненные растения. -Очки здоровья: [color=dark_red]3 укуса[/color]. +Очки здоровья: [color=dark_red]6 укусов[/color]. Время перезарядки: [color=dark_red]15 секунд[/color]. Время перезарядки способности: [color=dark_red]20 секунд[/color]. Лечит растения [color=DARK_RED]с третью[/color] здоровья." garlic,Garlic,Чеснок garlic_desc,"[p]Redirects zombies that bite it.[/p] -[p]Health points: [color=DARK_RED]20 bites[/color][/p] +[p]Health points: [color=DARK_RED]40 bites[/color][/p] [p]Reload time: [color=DARK_RED]15 seconds[/color].[/p]","Перенаправляет зомби, которые его кусают. -Очки здоровья: [color=DARK_RED]20 укусов[/color] +Очки здоровья: [color=DARK_RED]40 укусов[/color] Время перезарядки: [color=DARK_RED]15 секунд[/color]." peashooter,Peashooter,Горохострел peashooter_desc,"[p]Simply shoots peas at zombies on the lane[/p] -[p]Health points: [color=DARK_RED]3 bites[/color].[/p] +[p]Health points: [color=DARK_RED]6 bites[/color].[/p] [p]Reload time: [color=DARK_RED]5 seconds[/color].[/p] [p]Pea damage: [color=DARK_RED]1 pea[/color].[/p] [p]Firerate: [color=DARK_RED]1.5 seconds[/color].[/p]","Просто стреляет в зомби на линии. -Очки здоровья: [color=DARK_RED]3 укуса[/color]. +Очки здоровья: [color=DARK_RED]6 укусов[/color]. Время перезарядки: [color=DARK_RED]5 секунд[/color]. Урон от гороха: [color=DARK_RED]1 горошина[/color]. Задержка стрельбы: [color=DARK_RED]1.5 секунды[/color]." potatomine,Potato mine,Картофельная мина potatomine_desc,"[p]Explodes when stepped on. Needs some time to prime.[/p] -[p]Health points: [color=DARK_RED]2 bites[/color].[/p] +[p]Health points: [color=DARK_RED]4 bites[/color].[/p] [p]Reload time: [color=DARK_RED]25 seconds[/color].[/p] [p]Explosion damage: [color=DARK_RED]600 peas[/color].[/p] [p]Prime time: [color=DARK_RED]15 seconds[/color].[/p]","Взрывается когда на неё наступают. Требует некоторое время для роста. -Очки здоровья: [color=DARK_RED]2 Укуса[/color]. +Очки здоровья: [color=DARK_RED]4 Укуса[/color]. Время перезарядки: [color=DARK_RED]25 seconds[/color]. Урон от взрыва: [color=DARK_RED]600 горошин[/color]. Время роста: [color=DARK_RED]15 seconds[/color]." snowpea,Snowpea,Снежный горох snowpea_desc,"[p]Shoots slowing peas at zombies.[/p] -[p]Health points: [color=DARK_RED]3 bites[/color].[/p] +[p]Health points: [color=DARK_RED]6 bites[/color].[/p] [p]Reload time: [color=DARK_RED]5 seconds[/color].[/p] [p]Pea damage: [color=DARK_RED]1 pea[/color].[/p] [p]Firerate: [color=DARK_RED]1.5 seconds[/color].[/p] [p]Slow percentage: [color=STEEL_BLUE]25%[/color].[/p]","Стреляет замедляющими горошинами в зомби. -Очки здоровья: [color=DARK_RED]3 укуса[/color]. +Очки здоровья: [color=DARK_RED]6 укусов[/color]. Время перезарядки: [color=DARK_RED]5 секунд[/color]. Урон от гороха: [color=DARK_RED]1 горошина[/color]. Задержка стрельбы: [color=DARK_RED]1.5 секунды[/color]. Процент замедления: [color=STEEL_BLUE]25%[/color]." spikeweed,Spikeweed,Колючка spikeweed_desc,"[p]Attacks zombies that step on it.[/p] -[p]Health points: [color=DARK_RED]3 bites[/color].[/p] +[p]Health points: [color=DARK_RED]6 bites[/color].[/p] [p]Reload time: [color=DARK_RED]5 seconds[/color].[/p] [p]Damage per second: [color=DARK_RED]0.9 peas[/color].[/p]","Атакует наступающих на неё зомби. -Очки здоровья: [color=DARK_RED]3 укуса[/color]. +Очки здоровья: [color=DARK_RED]6 укусов[/color]. Время перезарядки: [color=DARK_RED]5 секунд[/color]. Урон в секунду: [color=DARK_RED]0.9 горошин[/color]." sunflower,Sunflower,Подсолнух sunflower_desc,"[p]Produces sun over time.[/p] -[p]Health points: [color=DARK_RED]3 bites[/color][/p] +[p]Health points: [color=DARK_RED]6 bites[/color][/p] [p]Reload time: [color=DARK_RED]5 seconds[/color].[/p] [p]Initial sun production time: [color=DARK_RED]12 seconds[/color].[/p] [p]Sun production time: [color=DARK_RED]24 seconds[/color](After first sun produced).[/p]","Производит солнце время от времени. -Очки здоровья: [color=DARK_RED]3 укуса[/color] +Очки здоровья: [color=DARK_RED]6 укусов[/color] Время перезарядки: [color=DARK_RED]5 секунд[/color]. Изначальная задержка выработки солнца: [color=DARK_RED]12 секунд[/color]. Задержка выработки солнца: [color=DARK_RED]24 секунды[/color](После первого солнца)." threepeater,Threepeater,Тристрел threepeater_desc,"[p]Shoots peas at zombies in three lanes.[/p] -[p]Health points: [color=DARK_RED]3 bites[/color].[/p] +[p]Health points: [color=DARK_RED]6 bites[/color].[/p] [p]Reload time: [color=DARK_RED]5 seconds[/color].[/p] [p]Pea damage: [color=DARK_RED]1 pea[/color] ([color=DARK_RED]3 pea[/color] when in close quarters).[/p] [p]Firerate: [color=DARK_RED]1.6 seconds[/color].[/p]","Стреляет в зомби по трём линиям. -Очки здоровья: [color=DARK_RED]3 укуса[/color]. +Очки здоровья: [color=DARK_RED]6 укусов[/color]. Время перезарядки: [color=DARK_RED]5 секунд[/color]. Урон от гороха: [color=DARK_RED]1 горошина[/color] ([color=DARK_RED]3 горошины[/color] вблизи). Задержка стрельбы: [color=DARK_RED]1.6 секунд[/color]." wallnut,Wallnut,Стенорех wallnut_desc,"[p]Absorbs zombie damage. Does nothing special[/p] -[p]Health points: [color=DARK_RED]60 bites[/color][/p] +[p]Health points: [color=DARK_RED]120 bites[/color][/p] [p]Reload time: [color=DARK_RED]20 seconds[/color].[/p]","Принимает на себя урон от зомби. Ничего интересного. -Очки здоровья: [color=DARK_RED]60 укусов[/color] +Очки здоровья: [color=DARK_RED]120 укусов[/color] Время перезарядки: [color=DARK_RED]20 секунд[/color]." diff --git a/translations/plants.en.translation b/translations/plants.en.translation index 80e6a4e00da9602b4a74c264832f6155fef0d377..d431b30050502477ceb40a06eb9acba004e1ec69 100644 GIT binary patch literal 3102 zcmc&%e`s4(6n;s%EPaX1IyH$dwhhI(6*XzrWjNDnYSSreZAdDHZrST=`qsWRO=4bZ zQ!x`{Vu!AC4hD))n2do=MGG?U4`Ed2hT5W4|M15~ohT?eMG6&p^}8?cC9hqY*5Z!` zANSsK&$;)U@0@#Y5)1|JqvWp)ErA}m5$H&!`9c0MuD3JA#)TN0<`Z#d|=wN9+l%@H@<(!-1Qid?%oVjM&XpT{(t^BEAvy%>|QhVzL60c7W&* z9C_m&=2dk5M1Q?XzW3sD74z`34zjyda+7iR^oLkb*&kEVI`4-kUm^RDHL3u`kK@1X zm^5KbDum$U>7QS(Lm)4r|1zN1v%6a+PQysyMX|46S2=S%l#W981R(C2Ia3RJvKHY( zu|GLhc7qNMT!8EofSi_UU=m8cSb~G0cR>^JS@gyYVXIj@aN=I?;Q$>M_q^v7BlWr2 z`!kkry?V2b7I#8_$WpgJH@5hKyP2TBCF0rV^gx?PH4(K{@Gboh6|>sBjj>=;zrE>; zY8#z16C;av^L1Ty?sB})F~5wl+f~9Cu38bm_>}X4HRo!1VcSZB$)@aCGiTipu9S9$ z-_$NP72~5a8^LCS!>+S_dA!ST(6!HLbS`%AS~^srHNfB>;e&W31~T+Jmo|yAU!hs= zd5o>o&ps{rHm3RLX6;%swUqLusZyo4RHg!%Q)REs=M${5s?TN=q8D@5YH&R1FKQ7N zi)@u6;nHp0cbK&b3;sX67X1P1xv6%oce<*2M11f^n{^^qG5b=tHx*mF-LhSyxCJJYGB_>q#l_KKbuZ%qBAq1V>G#V%?6r#B?)am!PG0klc`6KS_w@SB@ z9GS#ik{{rPIj&dc&ZqmpE)K}&y~*#rIQM^Y*MjQFKF$m^7CR=cxOmsn8j?a9itmpl zhPjj+Qb4e69<|b!Z}}cowWesWYN^|Nm4)y?xziACx}1eO_9I7^DR6g*3q4fY*4?18 zUC>6h_-;SjZ}_^Fmdr+N;#MhmLXp_H(V?CG&ZOKUA=ORFS2~P`pIO_p_g@|vYC*GQ z=>xp2aMzAc@pg-zp~Ocvcbui=*z+f))ZOb*(Wp8p;={@ENrf<9*MzA{IweMO!;Oe7 n`h$n|N9k$1A-uvXq`Cy_-D`Ovi#_@zspR(#`K=SgKZCyjX!${T literal 1205 zcmV;m1WNl-Q$s@n000005C8xm3;+O~1ONaiwJ-f(APb!&0EYC%N`RVm4zgvI6(*i0 zw=rV%v%5?Yn>iY4w@)_jsZb%k%1LN+5Pipc`G{(K?!6yoa${AT@=B;~Re8Q>Eh*mk z=3hcZw@I7f+m-VU9XV`e0-`JR39_u*y|F{2F-z8E~wIymt>HlF*A7v#x z*EF0&DiN!YpJXNS=>HA;e;WG_o#wzPSA&idy~Yj&tf{S6+)tO-KR(XAe|5?K>s0xF zDE~58ff$vQs`3QcBKH5+@&7gcH-Rl284!y4xbl5~t^R+DP5VcSAcI~^H^Ah0q5u2me;@dl zVX0M+!Nk5&^eBVlVM)-mfI+k;{O{dA%t;q3X^zbPpZ}+4t{4S3s;wQLldckvF4}y> z-pGLHQ93zJ7d6sS!k$QNE}I`(i=f1StJ6OhIhBan)0T&i$0=sUvwrfj5$3jiYp@oIva_UgfD9=fl!x#4xXDER6+9~$iOvSljp|o06 zz$urtF+1pXUq?G~99lFVB~?I{+2C%Y+ykg2LecZ{9joaZYYD@q$I_>rpG4G`mXbW!)e}@HmpA z9u)oG)P|F_sv7L)%a~eoII?gS#);+zAaw`*CdGNUs7**9^cob==Y-v^1`S-#t!{b| z8mjG$2aa~p#3=B>S*e~|4NS&R$JqqEw9si?(DGf;{1OuLc|~!5LQWm`1Xd!Bp<*W) zxq!m1_zO`q^cMYoNW!363@DYL*-LFgE`i4rgxMtOr8drTVZkvH>PQRcB#_zE>3Fk% zov0zLB1kDSBQmt0BBP8)w4)f zX6+hUJu16L9DY=@5zRPgnt=aX!Yq&!^&@7x=W4u3x-Ri_3hb)5^=pB{=o+B>`j`QA z;jEh<9cG=WPTkEn^!O{h!r}tNv16^#y@7Mrvst;*UjLkMtt|J8%Y0}PO&18Tu(W@Q zyH$t5d_HLE4|E~zL(4GYi3UOUWsu@m5RMH{@RO*afNDZD(*NTVKz`) z3djfHNpF^x<*+j_@B`T({3O$ye-Q@*!!e+qW0T#OHd delta 456 zcmeyX@KIsIRYu8TCI$v^1_)*Z(jeUO#rJC5(*NTVLDJ; z3djfHNpF^xrLi+G@B`T({3O$ye-;M=!x5mKBa_{j9_|M`AY(4uFi`)E^PnD6;3}}hh T Date: Fri, 11 Jul 2025 03:44:06 +0500 Subject: [PATCH 03/48] polyaudio --- scenes/audio_sequencer.tscn | 2 +- scenes/entities/Zombies/bucket_zombie.tscn | 34 +++++++++++----------- scenes/entities/Zombies/cone_zombie.tscn | 2 +- scenes/entities/Zombies/zombie.tscn | 2 +- scenes/gui/choose_your_seeds.tscn | 9 +++++- scripts/audio/AudioSequencer.cs | 4 ++- 6 files changed, 31 insertions(+), 22 deletions(-) diff --git a/scenes/audio_sequencer.tscn b/scenes/audio_sequencer.tscn index d74e028..671f21b 100644 --- a/scenes/audio_sequencer.tscn +++ b/scenes/audio_sequencer.tscn @@ -5,7 +5,7 @@ [sub_resource type="Resource" id="Resource_iuccj"] script = ExtResource("2_npxdp") -restartTreshold = 0.3 +restartTreshold = 0.0 metadata/_custom_type_script = "uid://c1x4n4nqyq72f" [node name="AudioSequencer" type="Node"] diff --git a/scenes/entities/Zombies/bucket_zombie.tscn b/scenes/entities/Zombies/bucket_zombie.tscn index 66a8c37..9e9e1b9 100644 --- a/scenes/entities/Zombies/bucket_zombie.tscn +++ b/scenes/entities/Zombies/bucket_zombie.tscn @@ -38,31 +38,31 @@ material = SubResource("ShaderMaterial_wdi07") scale = Vector2(0.999912, 0.999912) [node name="RightUpperLeg" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt" index="1"] -scale = Vector2(0.999828, 0.999828) - -[node name="RightLowerLeg" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/RightUpperLeg" index="1"] -scale = Vector2(0.999833, 0.999833) - -[node name="RightFoot" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/RightUpperLeg/RightLowerLeg" index="0"] -scale = Vector2(0.999831, 0.999831) - -[node name="LeftUpperLeg" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt" index="2"] -scale = Vector2(0.999834, 0.999834) - -[node name="LeftLowerLeg" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/LeftUpperLeg" index="1"] scale = Vector2(0.999832, 0.999832) +[node name="RightLowerLeg" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/RightUpperLeg" index="1"] +scale = Vector2(0.999836, 0.999836) + +[node name="RightFoot" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/RightUpperLeg/RightLowerLeg" index="0"] +scale = Vector2(0.999832, 0.999832) + +[node name="LeftUpperLeg" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt" index="2"] +scale = Vector2(0.999836, 0.999836) + +[node name="LeftLowerLeg" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/LeftUpperLeg" index="1"] +scale = Vector2(0.999834, 0.999834) + [node name="LeftFoot" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/LeftUpperLeg/LeftLowerLeg" index="1"] -scale = Vector2(0.999823, 0.999823) +scale = Vector2(0.999833, 0.999833) [node name="Body" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt" index="3"] scale = Vector2(0.999829, 0.999829) [node name="RightUpperArm" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body" index="0"] -scale = Vector2(0.999824, 0.999824) +scale = Vector2(0.999828, 0.999828) [node name="RightLowerArm" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/RightUpperArm" index="1"] -scale = Vector2(0.999821, 0.999821) +scale = Vector2(0.999825, 0.999825) [node name="RightHand" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/RightUpperArm/RightLowerArm" index="0"] scale = Vector2(0.999828, 0.999828) @@ -81,13 +81,13 @@ degradationStages = Array[Texture]([ExtResource("3_0nlp0"), ExtResource("4_xx7fu scale = Vector2(0.999828, 0.999828) [node name="LeftUpperArm" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body" index="4"] -scale = Vector2(0.999826, 0.999826) +scale = Vector2(0.999828, 0.999828) [node name="LeftLowerArm" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/LeftUpperArm" index="1"] scale = Vector2(0.999829, 0.999829) [node name="LeftHand" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/LeftUpperArm/LeftLowerArm" index="0"] -scale = Vector2(0.999828, 0.999828) +scale = Vector2(0.99983, 0.99983) [node name="Eatbox" parent="." index="2"] _damage = SubResource("Resource_2bm8y") diff --git a/scenes/entities/Zombies/cone_zombie.tscn b/scenes/entities/Zombies/cone_zombie.tscn index 118f53e..65a4e3d 100644 --- a/scenes/entities/Zombies/cone_zombie.tscn +++ b/scenes/entities/Zombies/cone_zombie.tscn @@ -113,7 +113,7 @@ scale = Vector2(0.99983, 0.99983) scale = Vector2(0.999828, 0.999828) [node name="LeftHand" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/LeftUpperArm/LeftLowerArm" index="0"] -scale = Vector2(0.999829, 0.999829) +scale = Vector2(0.999828, 0.999828) [node name="Eatbox" parent="." index="2"] _damage = SubResource("Resource_w70im") diff --git a/scenes/entities/Zombies/zombie.tscn b/scenes/entities/Zombies/zombie.tscn index 84b9fac..94940a1 100644 --- a/scenes/entities/Zombies/zombie.tscn +++ b/scenes/entities/Zombies/zombie.tscn @@ -2794,7 +2794,7 @@ editor_settings/show_bone_gizmo = false [node name="RightFoot" type="Bone2D" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/RightUpperLeg/RightLowerLeg"] position = Vector2(-2, 14) -scale = Vector2(0.999833, 0.999833) +scale = Vector2(0.999832, 0.999832) rest = Transform2D(1, 0, 0, 1, -2, 14) auto_calculate_length_and_angle = false length = 12.0 diff --git a/scenes/gui/choose_your_seeds.tscn b/scenes/gui/choose_your_seeds.tscn index 7279861..3f14c76 100644 --- a/scenes/gui/choose_your_seeds.tscn +++ b/scenes/gui/choose_your_seeds.tscn @@ -1,4 +1,4 @@ -[gd_scene load_steps=19 format=3 uid="uid://dpxxjfd5lv5sv"] +[gd_scene load_steps=21 format=3 uid="uid://dpxxjfd5lv5sv"] [ext_resource type="Theme" uid="uid://e8n88g31w7x7" path="res://resources/themes/ChooseYourSeeds.tres" id="1_bfo8i"] [ext_resource type="Texture2D" uid="uid://dr8a0rx42o3qy" path="res://assets/sprites/gui/ChooseYourSeeds/PlantFrame.tres" id="2_so2bw"] @@ -10,6 +10,7 @@ [ext_resource type="Texture2D" uid="uid://drydueofrb448" path="res://assets/sprites/gui/almanach/book.tres" id="8_hmdmm"] [ext_resource type="Script" uid="uid://c36bj8u7jghc7" path="res://scripts/audio/ChannelPlayer.cs" id="8_v7xff"] [ext_resource type="AudioStream" uid="uid://bdx83fokp6kha" path="res://assets/audio/sfx/buttonclick.mp3" id="9_v7xff"] +[ext_resource type="Script" uid="uid://c1x4n4nqyq72f" path="res://scripts/audio/ChannelSettings.cs" id="10_nlh6x"] [ext_resource type="PackedScene" uid="uid://bvpt0q4j6nx18" path="res://scenes/gui/almanach.tscn" id="11_nlh6x"] [sub_resource type="Animation" id="Animation_0rps3"] @@ -118,6 +119,11 @@ func _pressed() -> void: $\"../../ChannelPlayer\".call(\"Play\") " +[sub_resource type="Resource" id="Resource_l66rp"] +script = ExtResource("10_nlh6x") +restartTreshold = -1.0 +metadata/_custom_type_script = "uid://c1x4n4nqyq72f" + [node name="ChooseYourSeeds" type="Control"] process_mode = 3 layout_mode = 3 @@ -248,6 +254,7 @@ metadata/_edit_use_anchors_ = true [node name="ChannelPlayer" type="Node" parent="."] script = ExtResource("8_v7xff") +settings = SubResource("Resource_l66rp") audioStream = ExtResource("9_v7xff") channel = "button" metadata/_custom_type_script = "uid://c36bj8u7jghc7" diff --git a/scripts/audio/AudioSequencer.cs b/scripts/audio/AudioSequencer.cs index 94056aa..e3e4867 100644 --- a/scripts/audio/AudioSequencer.cs +++ b/scripts/audio/AudioSequencer.cs @@ -32,9 +32,10 @@ public partial class AudioSequencer : Node return instance.channelProcess[id] && instance.channels[id].GetPlaybackPosition() < instance.channelSettings[id].restartTreshold / Engine.TimeScale; } - public static void Play(string id, AudioStream what) + public static void Play(string id, AudioStream what, ChannelSettings settings = null) { if (IsChannelPlaying(id)) return; + if (settings != null) ChangeSettings(id, settings); instance.PlayAtChannel(id, what); } @@ -56,6 +57,7 @@ public partial class AudioSequencer : Node channels.Add(id, player); channelProcess.Add(id, false); player.Name = id; + player.MaxPolyphony = 5; player.Finished += () => { MarkChannel(id, false); }; From 60926f0213c5a435d874957793d1e85e7d3e47ae Mon Sep 17 00:00:00 2001 From: CaTronick Date: Fri, 11 Jul 2025 14:34:36 +0300 Subject: [PATCH 04/48] Added hobo zombie jump --- resources/animations/zombies/hobo_zombie.res | Bin 0 -> 10973 bytes .../zombies/hobo_zombie.res1406874708.tmp | Bin 0 -> 9095 bytes 2 files changed, 0 insertions(+), 0 deletions(-) create mode 100644 resources/animations/zombies/hobo_zombie.res create mode 100644 resources/animations/zombies/hobo_zombie.res1406874708.tmp diff --git a/resources/animations/zombies/hobo_zombie.res b/resources/animations/zombies/hobo_zombie.res new file mode 100644 index 0000000000000000000000000000000000000000..6db53e7158e71dc041fab04815f16629cc9f3279 GIT binary patch literal 10973 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 G>;D5MxhT{C literal 0 HcmV?d00001 diff --git a/resources/animations/zombies/hobo_zombie.res1406874708.tmp b/resources/animations/zombies/hobo_zombie.res1406874708.tmp new file mode 100644 index 0000000000000000000000000000000000000000..630fe407bd3424e3cbe42d431eb0852439dde026 GIT binary patch literal 9095 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 literal 0 HcmV?d00001 From 7de3a44b1fa5e22da55f66dbbe49654819c47dd7 Mon Sep 17 00:00:00 2001 From: CaTronick Date: Fri, 11 Jul 2025 14:35:29 +0300 Subject: [PATCH 05/48] Deleted unused sprites of zombies --- assets/sprites/atlases/zombies/basic.png | Bin 3746 -> 0 bytes .../sprites/atlases/zombies/basic/basic.png | Bin 2984 -> 0 bytes .../atlases/zombies/basic/basic.png.import | 34 ------------------ .../sprites/atlases/zombies/basic/body.tres | 7 ---- .../sprites/atlases/zombies/basic/butt.tres | 7 ---- .../sprites/atlases/zombies/basic/head.tres | 7 ---- assets/sprites/atlases/zombies/basic/jaw.tres | 7 ---- .../atlases/zombies/basic/left_foot.tres | 7 ---- .../atlases/zombies/basic/left_hand_eat.tres | 7 ---- .../atlases/zombies/basic/left_hand_norm.tres | 7 ---- .../atlases/zombies/basic/left_lower_arm.tres | 7 ---- .../atlases/zombies/basic/left_lower_leg.tres | 7 ---- .../atlases/zombies/basic/left_upper_arm.tres | 7 ---- .../atlases/zombies/basic/left_upper_leg.tres | 7 ---- .../sprites/atlases/zombies/basic/pupil.tres | 7 ---- .../atlases/zombies/basic/right_foot.tres | 7 ---- .../atlases/zombies/basic/right_hand_eat.tres | 7 ---- .../zombies/basic/right_hand_norm.tres | 7 ---- .../zombies/basic/right_lower_arm.tres | 7 ---- .../zombies/basic/right_lower_leg.tres | 7 ---- .../zombies/basic/right_upper_arm.tres | 7 ---- .../zombies/basic/right_upper_leg.tres | 7 ---- assets/sprites/atlases/zombies/basic/tie.tres | 7 ---- assets/sprites/atlases/zombies/basic_fem.png | Bin 4167 -> 0 bytes assets/sprites/atlases/zombies/hobo.png | Bin 3845 -> 0 bytes .../sprites/atlases/zombies/polevaulter.png | Bin 3330 -> 0 bytes assets/sprites/atlases/zombies/screendoor.png | Bin 4735 -> 0 bytes .../atlases/zombies/screendoor_fem.png | Bin 5057 -> 0 bytes assets/sprites/atlases/zombies/Зондби.png | Bin 2302 -> 0 bytes 29 files changed, 174 deletions(-) delete mode 100644 assets/sprites/atlases/zombies/basic.png delete mode 100644 assets/sprites/atlases/zombies/basic/basic.png delete mode 100644 assets/sprites/atlases/zombies/basic/basic.png.import delete mode 100644 assets/sprites/atlases/zombies/basic/body.tres delete mode 100644 assets/sprites/atlases/zombies/basic/butt.tres delete mode 100644 assets/sprites/atlases/zombies/basic/head.tres delete mode 100644 assets/sprites/atlases/zombies/basic/jaw.tres delete mode 100644 assets/sprites/atlases/zombies/basic/left_foot.tres delete mode 100644 assets/sprites/atlases/zombies/basic/left_hand_eat.tres delete mode 100644 assets/sprites/atlases/zombies/basic/left_hand_norm.tres delete mode 100644 assets/sprites/atlases/zombies/basic/left_lower_arm.tres delete mode 100644 assets/sprites/atlases/zombies/basic/left_lower_leg.tres delete mode 100644 assets/sprites/atlases/zombies/basic/left_upper_arm.tres delete mode 100644 assets/sprites/atlases/zombies/basic/left_upper_leg.tres delete mode 100644 assets/sprites/atlases/zombies/basic/pupil.tres delete mode 100644 assets/sprites/atlases/zombies/basic/right_foot.tres delete mode 100644 assets/sprites/atlases/zombies/basic/right_hand_eat.tres delete mode 100644 assets/sprites/atlases/zombies/basic/right_hand_norm.tres delete mode 100644 assets/sprites/atlases/zombies/basic/right_lower_arm.tres delete mode 100644 assets/sprites/atlases/zombies/basic/right_lower_leg.tres delete mode 100644 assets/sprites/atlases/zombies/basic/right_upper_arm.tres delete mode 100644 assets/sprites/atlases/zombies/basic/right_upper_leg.tres delete mode 100644 assets/sprites/atlases/zombies/basic/tie.tres delete mode 100644 assets/sprites/atlases/zombies/basic_fem.png delete mode 100644 assets/sprites/atlases/zombies/hobo.png delete mode 100644 assets/sprites/atlases/zombies/polevaulter.png delete mode 100644 assets/sprites/atlases/zombies/screendoor.png delete mode 100644 assets/sprites/atlases/zombies/screendoor_fem.png delete mode 100644 assets/sprites/atlases/zombies/Зондби.png diff --git a/assets/sprites/atlases/zombies/basic.png b/assets/sprites/atlases/zombies/basic.png deleted file mode 100644 index 0f96b6dd3926123e9e8e00cc4bd7b5fff54cd5b4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3746 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 N002ovPDHLkV1n`jVOszI diff --git a/assets/sprites/atlases/zombies/screendoor_fem.png b/assets/sprites/atlases/zombies/screendoor_fem.png deleted file mode 100644 index 4a32b3c1c33d667e66493913c010c5dcf443ac3f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5057 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 Date: Fri, 11 Jul 2025 14:38:55 +0300 Subject: [PATCH 06/48] small changes for hobo zombie sprite --- assets/sprites/zombies/hobo.png | Bin 3832 -> 1648 bytes assets/sprites/zombies/Зомби_бочка.png | Bin 0 -> 1058 bytes assets/sprites/zombies/Зомби_бочка.png.import | 34 ++++++++++++++++++ 3 files changed, 34 insertions(+) create mode 100644 assets/sprites/zombies/Зомби_бочка.png create mode 100644 assets/sprites/zombies/Зомби_бочка.png.import diff --git a/assets/sprites/zombies/hobo.png b/assets/sprites/zombies/hobo.png index be8c292f38abd51e5e4bec5f2f01e9609f7abca1..86432ef79950ab60426f23557af4eaf272fe34e5 100644 GIT binary patch literal 1648 zcmV-$29NoPP)VsX;00001b5ch_0Itp) z=>Px#El^BUMJFdVS1C(FLr;Ewk8>wnJ|jn9U~t01(SSB<|NrYUDM#y8ON>8VurOQz z003#yj5z=R01tFhPE-H?|NsC0|NsC0|NsC00My)=p#T5{)=5M`RA_<4+KIN}HVgnz z#l{I_-sJy3cdW&-yg-x(wC0opZAflq%j<)~Q2;?ex0t2PgOXv!_-Q6A$=3PGPGpA4q1#Y@N-W zt}wwyQ+mz(Sab%tS^J>D80AuVT)N+DG>@)X|B_idAxODs@BXw`57kI{u1*~$kg3t^ zYyDj&U`grpC!w~-2NrhPOiAQS%6!o}k1I@|8lyU&k11A}i&d(#Vp7OZ?KLy=%;{qS zMS?R(qM0UzAF8mTo9EHZqo-u0*g(lP2J*9oP%O{!B zdF_NL|Al*W8uWuzF5hO(i-a(jMtSU15Sic0D1^#$WqtnaWYoV3KSzBBFa@qOX+0~huXYt8~bF0kO z>1HmZtK}pkl$natUQS6ObK@FJ0LyHgPUbGiRNl_=cKPA5Pn5XMTmd4^I<4~lHWQfBfSn_~T-IUs z@ZEunj~SjBl}gNAjc4_3nUi@XKoB6;o@G9^?a?xII}bN3o+GhvIMa@!v!hL(Fsa%D zzS?MFo5X1!G8bu_n(c6$Ay>K0emK+Slqrk9zF|ORN;K=H031H#h2mgNf0l7uiKcc* zWykWR^1AU2X12wRn2XlBZmfP(C`{RMz${Vb=~^7Jjib4gXx1cx;|<~L$yiY(nz_oL zY<#b08wh|gMCPK=tbG!_{Vs@syR!aiW&;OkpOJQt@!sZuW_I*}F?oXmX$AXV#6%TKL~}4-EOvHJVA4>J0W6#4s0RZV|o8lzVxZ z?3qL}bbGy-lryKKknD$+|3Py=Gc*@w=HU{S#RQYPBqx)b;X1syeGZq(gLOZ&J(Hnv zFAfJ7KujDiZ2~P9Djjb;8b#Vc4U_6TL4PKLpVpCy9m9ijs4``<-^F~Tl!#85brZZj zlL<2>4LQOboF3+DB}dc*v`r2fyW2w5lN_@TPEc1+<>zqSW@yXr2JC%de zZYJiE=VzzRGP~3i(pijy=~TANZqpN$r%vdZdieOsXg1E&ZXq+XcRp!$pgCTScU&FP zZ=4-7G1LA%LXZ{a%n7oMSC?!K=5Jc3J=yP=Wl32kkE20mgJyB;VS1HoXqe_Kx+s}R zrw4W2Fk$w6rEjowD=pKU>>qOCdy{C!X0}uZ28L+q;{#NZ)MUUoV%IY~C!#I&c1(L;mjQzhJ(Qj+@KE)I>*PI}`aLvrzjo uUX?g!DwED&f35t&nI#n&b(Hy*F_(YX)vfqm5@f&t0000 literal 3832 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 literal 0 HcmV?d00001 diff --git a/assets/sprites/zombies/Зомби_бочка.png.import b/assets/sprites/zombies/Зомби_бочка.png.import new file mode 100644 index 0000000..fcfcabd --- /dev/null +++ b/assets/sprites/zombies/Зомби_бочка.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://diqdrt7crecji" +path="res://.godot/imported/Зомби_бочка.png-4c647d5c6d593289ec88504418492024.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/sprites/zombies/Зомби_бочка.png" +dest_files=["res://.godot/imported/Зомби_бочка.png-4c647d5c6d593289ec88504418492024.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 From 7ef2e055877ffc37e0c9d6f578c10c8a919e0e81 Mon Sep 17 00:00:00 2001 From: CaTronick Date: Fri, 11 Jul 2025 17:41:23 +0300 Subject: [PATCH 07/48] Added hobo eating animation --- assets/sprites/zombies/basic.png | Bin 1320 -> 1320 bytes assets/sprites/zombies/hobo.png | Bin 1648 -> 1655 bytes .../animations/zombies/basic_zombie_anim.res | Bin 12740 -> 12737 bytes resources/animations/zombies/hobo_zombie.res | Bin 10973 -> 12594 bytes 4 files changed, 0 insertions(+), 0 deletions(-) diff --git a/assets/sprites/zombies/basic.png b/assets/sprites/zombies/basic.png index e25856a728630a1463904c7d38d15bc46d818aa9..462c8ca813cedf6ddde193ad2fd8b6cb7366ed20 100644 GIT binary patch delta 1158 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 Y0jl+N%asw`H2?qr07*qoM6N<$g3D53CIA2c diff --git a/assets/sprites/zombies/hobo.png b/assets/sprites/zombies/hobo.png index 86432ef79950ab60426f23557af4eaf272fe34e5..eee9f1138965b76939b94897c73f807aa5cf0907 100644 GIT binary patch delta 1540 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 diff --git a/resources/animations/zombies/basic_zombie_anim.res b/resources/animations/zombies/basic_zombie_anim.res index 8ce4df9b2998f69afab3bb27682fb1a70fed092c..6ea7db3b2bc89bdc3ff47fc85de479e8f1627a76 100644 GIT binary patch delta 2307 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 g=udCp~csrgXvT^m$F{n$i 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 Y?}YmADS^M@LF(_Dx_Y{g|DGoMf5)H4mjD0& delta 8235 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 C*Qn$G From 68be1a50596a5f59d218102d6c06b367b7dfefee Mon Sep 17 00:00:00 2001 From: Rendo Date: Fri, 11 Jul 2025 22:35:36 +0500 Subject: [PATCH 08/48] file refactor --- resources/animations/zombies/hobo_zombie.res | Bin 12594 -> 12589 bytes resources/effects/SnowSlow.tres | 2 +- resources/plants/Aloe.tres | 2 +- scenes/debug_lvl.tscn | 8 +- scenes/entities/Zombies/bucket_zombie.tscn | 36 +- scenes/entities/Zombies/cone_zombie.tscn | 34 +- scenes/entities/Zombies/hobo.tscn | 8 +- scenes/entities/Zombies/zombie.tscn | 1978 ++++++++--------- scenes/entities/plants/aloe.tscn | 4 +- scenes/entities/plants/garlic.tscn | 4 +- scenes/entities/plants/peashooter.tscn | 10 +- scenes/entities/plants/potato_mine.tscn | 6 +- scenes/entities/plants/spikeweed.tscn | 4 +- scenes/entities/plants/sunflower.tscn | 6 +- scenes/entities/plants/threepeater.tscn | 4 +- scenes/entities/plants/wallnut.tscn | 2 +- scenes/gui/almanach.tscn | 4 +- scenes/gui/choose_your_seeds.tscn | 6 +- scenes/gui/fast_forward_button.tscn | 2 +- scenes/gui/pause_button.tscn | 2 +- scenes/gui/pause_menu.tscn | 2 +- scenes/gui/runtime_gui.tscn | 2 +- scenes/gui/seedpacket.tscn | 4 +- scenes/gui/shovel_button.tscn | 2 +- scenes/gui/sun_counter.tscn | 4 +- scenes/level components/field_controller.tscn | 2 +- .../left_boundary_marker.tscn | 2 +- scenes/level components/pools.tscn | 2 +- .../right_boundary_marker.tscn | 2 +- scenes/main_menu.tscn | 6 +- scenes/particles/dirt_explosion.tscn | 2 +- scenes/particles/pea_particles.tscn | 2 +- scenes/projectiles/pea.tscn | 2 +- scenes/projectiles/snowpea_projectile.tscn | 2 +- scenes/prototype_survival.tscn | 20 +- scenes/templates/level_template.tscn | 2 +- scenes/templates/plant_template.tscn | 4 +- scripts/{components => }/Armor.cs | 0 scripts/{components => }/Armor.cs.uid | 0 scripts/{components => }/DegradingSprite.cs | 0 .../{components => }/DegradingSprite.cs.uid | 0 scripts/{components => }/Entity.cs | 0 scripts/{components => }/Entity.cs.uid | 0 scripts/{components => }/FlashComponent.cs | 0 .../{components => }/FlashComponent.cs.uid | 0 scripts/{components => }/IProjectile.cs | 0 scripts/{components => }/IProjectile.cs.uid | 0 scripts/{components => }/LevelGUIElements.cs | 0 .../{components => }/LevelGUIElements.cs.uid | 0 scripts/{components => }/LinearProjectile.cs | 0 .../{components => }/LinearProjectile.cs.uid | 0 .../TimeScalableAnimationTree.cs | 0 .../TimeScalableAnimationTree.cs.uid | 0 scripts/{components => }/TimeScalableTimer.cs | 0 .../{components => }/TimeScalableTimer.cs.uid | 0 scripts/{components => }/gui/ExitButton.cs | 0 .../{components => }/gui/ExitButton.cs.uid | 0 .../{components => }/gui/FastForwardButton.cs | 0 .../gui/FastForwardButton.cs.uid | 0 scripts/{components => }/gui/PauseButton.cs | 0 .../{components => }/gui/PauseButton.cs.uid | 0 scripts/{components => }/gui/PauseMenu.cs | 0 scripts/{components => }/gui/PauseMenu.cs.uid | 0 scripts/{components => }/gui/RestartButton.cs | 0 .../{components => }/gui/RestartButton.cs.uid | 0 scripts/{components => }/gui/ShovelButton.cs | 0 .../{components => }/gui/ShovelButton.cs.uid | 0 scripts/{components => }/gui/SunCounter.cs | 0 .../{components => }/gui/SunCounter.cs.uid | 0 .../{components => }/gui/SunCounterImage.cs | 0 .../gui/SunCounterImage.cs.uid | 0 scripts/{components => }/gui/VeilResizer.cs | 0 .../{components => }/gui/VeilResizer.cs.uid | 0 .../gui/almanach/AlmanachGrid.cs | 0 .../gui/almanach/AlmanachGrid.cs.uid | 0 .../gui/choose_your_seeds/GridLoader.cs | 0 .../gui/choose_your_seeds/GridLoader.cs.uid | 0 .../gui/choose_your_seeds/LevelRunButton.cs | 0 .../choose_your_seeds/LevelRunButton.cs.uid | 0 .../gui/choose_your_seeds/Previewport.cs | 0 .../gui/choose_your_seeds/Previewport.cs.uid | 0 .../gui/main_menu_rich_text.gd | 0 .../gui/main_menu_rich_text.gd.uid | 0 scripts/{components => }/gui/menu_buttons.gd | 0 .../{components => }/gui/menu_buttons.gd.uid | 0 .../{components => }/gui/prototype_window.gd | 0 .../gui/prototype_window.gd.uid | 0 .../gui/seedpackets/AlmanachHandler.cs | 0 .../gui/seedpackets/AlmanachHandler.cs.uid | 0 .../gui/seedpackets/ChoosableHandler.cs | 0 .../gui/seedpackets/ChoosableHandler.cs.uid | 0 .../gui/seedpackets/CustomSeedpacketFrame.cs | 0 .../seedpackets/CustomSeedpacketFrame.cs.uid | 0 .../gui/seedpackets/HotbarHandler.cs | 0 .../gui/seedpackets/HotbarHandler.cs.uid | 0 .../gui/seedpackets/HotbarPregameHandler.cs | 0 .../seedpackets/HotbarPregameHandler.cs.uid | 0 .../gui/seedpackets/ISeedpacketPress.cs | 0 .../gui/seedpackets/ISeedpacketPress.cs.uid | 0 .../gui/seedpackets/ISeedpacketProcess.cs | 0 .../gui/seedpackets/ISeedpacketProcess.cs.uid | 0 .../gui/seedpackets/ISeedpacketUnfocus.cs | 0 .../gui/seedpackets/ISeedpacketUnfocus.cs.uid | 0 .../gui/seedpackets/Seedpacket.cs | 0 .../gui/seedpackets/Seedpacket.cs.uid | 0 .../gui/seedpackets/SeedpacketHandler.cs | 0 .../gui/seedpackets/SeedpacketHandler.cs.uid | 0 .../level/LeftBoundaryMarker.cs | 0 .../level/LeftBoundaryMarker.cs.uid | 0 .../{components => }/level/LoseCheckbox.cs | 0 .../level/LoseCheckbox.cs.uid | 0 scripts/{components => }/level/PlantField.cs | 0 .../{components => }/level/PlantField.cs.uid | 0 .../{components => }/level/PoolContainer.cs | 0 .../level/PoolContainer.cs.uid | 0 .../level/RightBoundaryMarker.cs | 0 .../level/RightBoundaryMarker.cs.uid | 0 .../level/RuntimeLevelData.cs | 0 .../level/RuntimeLevelData.cs.uid | 0 scripts/{components => }/level/SunSpawner.cs | 0 .../{components => }/level/SunSpawner.cs.uid | 0 .../zombe_spawners/SurvivalZombieSpawner.cs | 0 .../SurvivalZombieSpawner.cs.uid | 0 .../level/zombe_spawners/ZombieSequencer.cs | 0 .../zombe_spawners/ZombieSequencer.cs.uid | 0 .../{components => }/particles/FallFloor.cs | 0 .../particles/FallFloor.cs.uid | 0 .../particles/FallParticle.cs | 0 .../particles/FallParticle.cs.uid | 0 .../particles/StandardParticles.cs | 0 .../particles/StandardParticles.cs.uid | 0 scripts/{components => }/plants/AreaAttack.cs | 0 .../{components => }/plants/AreaAttack.cs.uid | 0 .../plants/ExplosionComponent.cs | 0 .../plants/ExplosionComponent.cs.uid | 0 scripts/{components => }/plants/Eyesight.cs | 0 .../{components => }/plants/Eyesight.cs.uid | 0 scripts/{components => }/plants/LoseZone.cs | 0 .../{components => }/plants/LoseZone.cs.uid | 0 .../plants/PlantEyesightLimiter.cs | 0 .../plants/PlantEyesightLimiter.cs.uid | 0 .../plants/PlantSunSpawner.cs | 0 .../plants/PlantSunSpawner.cs.uid | 0 .../{components => }/plants/ReturnEffect.cs | 0 .../plants/ReturnEffect.cs.uid | 0 .../plants/RuntimePlantData.cs | 0 .../plants/RuntimePlantData.cs.uid | 0 scripts/{components => }/plants/Shooter.cs | 0 .../{components => }/plants/Shooter.cs.uid | 0 .../plants/ThreepeaterShooter.cs | 0 .../plants/ThreepeaterShooter.cs.uid | 0 .../plants/behaviours/AloeBehaviour.cs | 0 .../plants/behaviours/AloeBehaviour.cs.uid | 0 .../plants/behaviours/BaseBehaviour.cs | 0 .../plants/behaviours/BaseBehaviour.cs.uid | 0 .../plants/behaviours/HpBasedBehaviour.cs | 0 .../plants/behaviours/HpBasedBehaviour.cs.uid | 0 .../plants/behaviours/PeashooterBehaviour.cs | 0 .../behaviours/PeashooterBehaviour.cs.uid | 0 .../plants/behaviours/PotatomineBehaviour.cs | 0 .../behaviours/PotatomineBehaviour.cs.uid | 0 .../plants/behaviours/SpikeweedBehaviour.cs | 0 .../behaviours/SpikeweedBehaviour.cs.uid | 0 .../plants/behaviours/SunflowerBehaviour.cs | 0 .../behaviours/SunflowerBehaviour.cs.uid | 0 .../{components => }/zombies/AudioDamage.cs | 0 .../zombies/AudioDamage.cs.uid | 0 scripts/{components => }/zombies/EatBox.cs | 0 .../{components => }/zombies/EatBox.cs.uid | 0 .../zombies/RuntimeZombieData.cs | 9 +- .../zombies/RuntimeZombieData.cs.uid | 0 .../{components => }/zombies/ZombieMover.cs | 0 .../zombies/ZombieMover.cs.uid | 0 .../zombies/behaviours/HoboBehaviour.cs | 0 .../zombies/behaviours/HoboBehaviour.cs.uid | 0 175 files changed, 1086 insertions(+), 1107 deletions(-) rename scripts/{components => }/Armor.cs (100%) rename scripts/{components => }/Armor.cs.uid (100%) rename scripts/{components => }/DegradingSprite.cs (100%) rename scripts/{components => }/DegradingSprite.cs.uid (100%) rename scripts/{components => }/Entity.cs (100%) rename scripts/{components => }/Entity.cs.uid (100%) rename scripts/{components => }/FlashComponent.cs (100%) rename scripts/{components => }/FlashComponent.cs.uid (100%) rename scripts/{components => }/IProjectile.cs (100%) rename scripts/{components => }/IProjectile.cs.uid (100%) rename scripts/{components => }/LevelGUIElements.cs (100%) rename scripts/{components => }/LevelGUIElements.cs.uid (100%) rename scripts/{components => }/LinearProjectile.cs (100%) rename scripts/{components => }/LinearProjectile.cs.uid (100%) rename scripts/{components => }/TimeScalableAnimationTree.cs (100%) rename scripts/{components => }/TimeScalableAnimationTree.cs.uid (100%) rename scripts/{components => }/TimeScalableTimer.cs (100%) rename scripts/{components => }/TimeScalableTimer.cs.uid (100%) rename scripts/{components => }/gui/ExitButton.cs (100%) rename scripts/{components => }/gui/ExitButton.cs.uid (100%) rename scripts/{components => }/gui/FastForwardButton.cs (100%) rename scripts/{components => }/gui/FastForwardButton.cs.uid (100%) rename scripts/{components => }/gui/PauseButton.cs (100%) rename scripts/{components => }/gui/PauseButton.cs.uid (100%) rename scripts/{components => }/gui/PauseMenu.cs (100%) rename scripts/{components => }/gui/PauseMenu.cs.uid (100%) rename scripts/{components => }/gui/RestartButton.cs (100%) rename scripts/{components => }/gui/RestartButton.cs.uid (100%) rename scripts/{components => }/gui/ShovelButton.cs (100%) rename scripts/{components => }/gui/ShovelButton.cs.uid (100%) rename scripts/{components => }/gui/SunCounter.cs (100%) rename scripts/{components => }/gui/SunCounter.cs.uid (100%) rename scripts/{components => }/gui/SunCounterImage.cs (100%) rename scripts/{components => }/gui/SunCounterImage.cs.uid (100%) rename scripts/{components => }/gui/VeilResizer.cs (100%) rename scripts/{components => }/gui/VeilResizer.cs.uid (100%) rename scripts/{components => }/gui/almanach/AlmanachGrid.cs (100%) rename scripts/{components => }/gui/almanach/AlmanachGrid.cs.uid (100%) rename scripts/{components => }/gui/choose_your_seeds/GridLoader.cs (100%) rename scripts/{components => }/gui/choose_your_seeds/GridLoader.cs.uid (100%) rename scripts/{components => }/gui/choose_your_seeds/LevelRunButton.cs (100%) rename scripts/{components => }/gui/choose_your_seeds/LevelRunButton.cs.uid (100%) rename scripts/{components => }/gui/choose_your_seeds/Previewport.cs (100%) rename scripts/{components => }/gui/choose_your_seeds/Previewport.cs.uid (100%) rename scripts/{components => }/gui/main_menu_rich_text.gd (100%) rename scripts/{components => }/gui/main_menu_rich_text.gd.uid (100%) rename scripts/{components => }/gui/menu_buttons.gd (100%) rename scripts/{components => }/gui/menu_buttons.gd.uid (100%) rename scripts/{components => }/gui/prototype_window.gd (100%) rename scripts/{components => }/gui/prototype_window.gd.uid (100%) rename scripts/{components => }/gui/seedpackets/AlmanachHandler.cs (100%) rename scripts/{components => }/gui/seedpackets/AlmanachHandler.cs.uid (100%) rename scripts/{components => }/gui/seedpackets/ChoosableHandler.cs (100%) rename scripts/{components => }/gui/seedpackets/ChoosableHandler.cs.uid (100%) rename scripts/{components => }/gui/seedpackets/CustomSeedpacketFrame.cs (100%) rename scripts/{components => }/gui/seedpackets/CustomSeedpacketFrame.cs.uid (100%) rename scripts/{components => }/gui/seedpackets/HotbarHandler.cs (100%) rename scripts/{components => }/gui/seedpackets/HotbarHandler.cs.uid (100%) rename scripts/{components => }/gui/seedpackets/HotbarPregameHandler.cs (100%) rename scripts/{components => }/gui/seedpackets/HotbarPregameHandler.cs.uid (100%) rename scripts/{components => }/gui/seedpackets/ISeedpacketPress.cs (100%) rename scripts/{components => }/gui/seedpackets/ISeedpacketPress.cs.uid (100%) rename scripts/{components => }/gui/seedpackets/ISeedpacketProcess.cs (100%) rename scripts/{components => }/gui/seedpackets/ISeedpacketProcess.cs.uid (100%) rename scripts/{components => }/gui/seedpackets/ISeedpacketUnfocus.cs (100%) rename scripts/{components => }/gui/seedpackets/ISeedpacketUnfocus.cs.uid (100%) rename scripts/{components => }/gui/seedpackets/Seedpacket.cs (100%) rename scripts/{components => }/gui/seedpackets/Seedpacket.cs.uid (100%) rename scripts/{components => }/gui/seedpackets/SeedpacketHandler.cs (100%) rename scripts/{components => }/gui/seedpackets/SeedpacketHandler.cs.uid (100%) rename scripts/{components => }/level/LeftBoundaryMarker.cs (100%) rename scripts/{components => }/level/LeftBoundaryMarker.cs.uid (100%) rename scripts/{components => }/level/LoseCheckbox.cs (100%) rename scripts/{components => }/level/LoseCheckbox.cs.uid (100%) rename scripts/{components => }/level/PlantField.cs (100%) rename scripts/{components => }/level/PlantField.cs.uid (100%) rename scripts/{components => }/level/PoolContainer.cs (100%) rename scripts/{components => }/level/PoolContainer.cs.uid (100%) rename scripts/{components => }/level/RightBoundaryMarker.cs (100%) rename scripts/{components => }/level/RightBoundaryMarker.cs.uid (100%) rename scripts/{components => }/level/RuntimeLevelData.cs (100%) rename scripts/{components => }/level/RuntimeLevelData.cs.uid (100%) rename scripts/{components => }/level/SunSpawner.cs (100%) rename scripts/{components => }/level/SunSpawner.cs.uid (100%) rename scripts/{components => }/level/zombe_spawners/SurvivalZombieSpawner.cs (100%) rename scripts/{components => }/level/zombe_spawners/SurvivalZombieSpawner.cs.uid (100%) rename scripts/{components => }/level/zombe_spawners/ZombieSequencer.cs (100%) rename scripts/{components => }/level/zombe_spawners/ZombieSequencer.cs.uid (100%) rename scripts/{components => }/particles/FallFloor.cs (100%) rename scripts/{components => }/particles/FallFloor.cs.uid (100%) rename scripts/{components => }/particles/FallParticle.cs (100%) rename scripts/{components => }/particles/FallParticle.cs.uid (100%) rename scripts/{components => }/particles/StandardParticles.cs (100%) rename scripts/{components => }/particles/StandardParticles.cs.uid (100%) rename scripts/{components => }/plants/AreaAttack.cs (100%) rename scripts/{components => }/plants/AreaAttack.cs.uid (100%) rename scripts/{components => }/plants/ExplosionComponent.cs (100%) rename scripts/{components => }/plants/ExplosionComponent.cs.uid (100%) rename scripts/{components => }/plants/Eyesight.cs (100%) rename scripts/{components => }/plants/Eyesight.cs.uid (100%) rename scripts/{components => }/plants/LoseZone.cs (100%) rename scripts/{components => }/plants/LoseZone.cs.uid (100%) rename scripts/{components => }/plants/PlantEyesightLimiter.cs (100%) rename scripts/{components => }/plants/PlantEyesightLimiter.cs.uid (100%) rename scripts/{components => }/plants/PlantSunSpawner.cs (100%) rename scripts/{components => }/plants/PlantSunSpawner.cs.uid (100%) rename scripts/{components => }/plants/ReturnEffect.cs (100%) rename scripts/{components => }/plants/ReturnEffect.cs.uid (100%) rename scripts/{components => }/plants/RuntimePlantData.cs (100%) rename scripts/{components => }/plants/RuntimePlantData.cs.uid (100%) rename scripts/{components => }/plants/Shooter.cs (100%) rename scripts/{components => }/plants/Shooter.cs.uid (100%) rename scripts/{components => }/plants/ThreepeaterShooter.cs (100%) rename scripts/{components => }/plants/ThreepeaterShooter.cs.uid (100%) rename scripts/{components => }/plants/behaviours/AloeBehaviour.cs (100%) rename scripts/{components => }/plants/behaviours/AloeBehaviour.cs.uid (100%) rename scripts/{components => }/plants/behaviours/BaseBehaviour.cs (100%) rename scripts/{components => }/plants/behaviours/BaseBehaviour.cs.uid (100%) rename scripts/{components => }/plants/behaviours/HpBasedBehaviour.cs (100%) rename scripts/{components => }/plants/behaviours/HpBasedBehaviour.cs.uid (100%) rename scripts/{components => }/plants/behaviours/PeashooterBehaviour.cs (100%) rename scripts/{components => }/plants/behaviours/PeashooterBehaviour.cs.uid (100%) rename scripts/{components => }/plants/behaviours/PotatomineBehaviour.cs (100%) rename scripts/{components => }/plants/behaviours/PotatomineBehaviour.cs.uid (100%) rename scripts/{components => }/plants/behaviours/SpikeweedBehaviour.cs (100%) rename scripts/{components => }/plants/behaviours/SpikeweedBehaviour.cs.uid (100%) rename scripts/{components => }/plants/behaviours/SunflowerBehaviour.cs (100%) rename scripts/{components => }/plants/behaviours/SunflowerBehaviour.cs.uid (100%) rename scripts/{components => }/zombies/AudioDamage.cs (100%) rename scripts/{components => }/zombies/AudioDamage.cs.uid (100%) rename scripts/{components => }/zombies/EatBox.cs (100%) rename scripts/{components => }/zombies/EatBox.cs.uid (100%) rename scripts/{components => }/zombies/RuntimeZombieData.cs (88%) rename scripts/{components => }/zombies/RuntimeZombieData.cs.uid (100%) rename scripts/{components => }/zombies/ZombieMover.cs (100%) rename scripts/{components => }/zombies/ZombieMover.cs.uid (100%) rename scripts/{components => }/zombies/behaviours/HoboBehaviour.cs (100%) rename scripts/{components => }/zombies/behaviours/HoboBehaviour.cs.uid (100%) diff --git a/resources/animations/zombies/hobo_zombie.res b/resources/animations/zombies/hobo_zombie.res index 8c49096c5254d9014ccacd019fb359c3e7b32580..d09abfab3cfbeff47494972a6746fea807313f4d 100644 GIT binary patch delta 2237 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 L{h&q#lL9d?9z{so delta 2243 zcmV;!2t4<#VzOcpQd2`i0ssI201yBGBLD#aSCJ7nf8YcF09ynA04x9i04TLD{a^qO zZ5jZEMa0?d-1~~d-_@#DId1XZFO9@0fFmr)R zX$9vae+Vd!#K6oF9H(O((4Y~>O0Zw+hCBHPGb`Xrr1x4TF!KOr02fXpK!j)_h~U7? z0r=;`4Dl<_FEDcgW+otjIa5C14WANv|2Wg11GhJt6ut*hJ9&S>F*V?gk5j&%RPum4 z?v&JnGyi#0It4zz9$!U92&=r5>-8g@@4jRGe=_p~f27c}z~69i{72&RAMz;?J$m2c zkUsCBwb1Apa0PmQEv=CJdbtnCBdS2RH?m)`4t=yd&{}SF$jlU6|3;P4r^*LD`}dKP zDIM#O^EUG5x=IasM0Z*!d{9ngq!2S(*c)|sS7~ANsOXFCZVG*n&eL!kpQTsEhh8HH zJACbD1Ya-r!8qrfbFQ`4T5F6k#u!^`t+kd?N-3pMN-3q(-QC@gcJu;@c63Esw4-U7 zrfC|6VHk#Clg|Mj3d>ijTa9Y}&WRYaD*~n^CAB61=53)$&=hsX*z;N~P|13Lm-R~Q zK`Y>rt63LP3xo%tUoVsPCn0~rG&Y3x_>T8`kQ9ypnE-2DiCa5HcB0zZHAZ+oc zZ@^%INI?Pw2Y8%paCBfHRKaT)1F(DWLsh5yT z3u*2XQ=L7xAw?QF4Wb{ms`u8i*%2cq>m_0M#5yB(jrQVf zZI0RE?A$TqiYv_!RfJFE}knsf|bQKNcKN)QrZ;?G_O(mdmAFSS%+DP3JTvhOXJS zIDW)MquwD`Sa<{laO|5cQeFUK0BQg+lJ$S}EAd&U_l&}1D(S5(;ruGOXZF!s$&-7Q z%jNR_NFKTwzkj%y(lGktv-@{Ee~eY{nMcF1`^!QUu>Bbnq_=YQwZ9vi|6zJ7Rs2u& zRt9}Be=`0b!$18u{Q)r%k>0ZlpRlM%?-_>s|IUsSE@ZEVe6{}g9PUpzmH*2wA5KU} z@7aXw{_!s(HYy?^H)dBrccI)5Dh8bBIGfqMR+ zU&d*0)dg#WX2Wf4hpD=Pm}Kw3DI+ezCpv6ZkUNq}`#qm9hakCaG=M+&56WvBH+ zJ$cB~m>Gk?&W`g%BDpqRrIfWoQ<5r$(l}2UtrhCbKu0%8{BNIAvi%?Z_=YeNgT)!+ zOZv~6{C@}VU;SfAI7Q++Jm$PL!J>`K@K`fb%%M3Bao*QRH1hu5>}WP1T52yJYG_zg zNAu9(WSJFbh`E`JZMY&-2?=sYQ8#G7wHYv6Kv6AJxUDc0CP;{IgYbZ*#yDtjB7H#&^+M{v22yo%CBY&=4i!On#s9}90nq=7wF$TtvVpX;Q z5@1vuqA~=HNavBtv>Q!RXBnve>F*hTU|*vt z)Bh$9sG+yeD7gSP|C_o(tEH@KL!M2C_FDor3U3#&F=H127-xJ5S5F@sAzl7Bx19p(Fk88)?jK{0q*i@3W({d5;j*=XKt zMhGp7-_X=^5SsRzT1vBT*|T50*EoN&hNC|@Cz2FC4}Tr+*g8L6VKmIX#`;aE_Y7ow z5wz4fd!_)}qI3(^~nN+B*$JU#gpP<#GuQChSD*do@n-_B@qiFuC@(MnScrC)farzd&0gHoC{|pX zFnURU&#aH@#;&r(cl$C91h*wi*$@KxZHx8Rn9ebJM}3mpZ7r<)^v*f}n=Tp_J|F9& zr#pST^;b_TQqMWlfTKrmpWm|R*<5nh-(@Sk+;#t@a4$SaYuLaUJq?HlVOm#qv^(!@ z|0TmETkkaNb=v1k4$zCW*SJ0o{Y8Wu$yXKiFZ6W_>Mxk@>v_>dF*@Oc=1c8sRKJ7> R5U_v9=Jcki_79W&FfdMkN3#F` diff --git a/resources/effects/SnowSlow.tres b/resources/effects/SnowSlow.tres index 5a62fd5..671e4a5 100644 --- a/resources/effects/SnowSlow.tres +++ b/resources/effects/SnowSlow.tres @@ -5,6 +5,6 @@ [resource] script = ExtResource("1_8md01") ColorOverride = Color(0, 1, 1, 1) -Multiplier = 0.75 +Multiplier = 0.25 Duration = 3.25 Slot = "freeze_slow" diff --git a/resources/plants/Aloe.tres b/resources/plants/Aloe.tres index 9e2b333..55f342e 100644 --- a/resources/plants/Aloe.tres +++ b/resources/plants/Aloe.tres @@ -5,7 +5,7 @@ [ext_resource type="PackedScene" uid="uid://bw1w8jp0yeypy" path="res://scenes/entities/plants/aloe.tscn" id="2_6a4ia"] [ext_resource type="Texture2D" uid="uid://c35dr3hiy66k0" path="res://assets/sprites/gui/ChooseYourSeeds/PremiumFrameField.tres" id="3_2s3af"] [ext_resource type="Texture2D" uid="uid://31jc2e7dijas" path="res://assets/sprites/gui/PremiumPlantCard.tres" id="3_vfv8g"] -[ext_resource type="Script" uid="uid://3m7xks3xq3hl" path="res://scripts/components/gui/seedpackets/CustomSeedpacketFrame.cs" id="4_d5nqg"] +[ext_resource type="Script" uid="uid://3m7xks3xq3hl" path="res://scripts/gui/seedpackets/CustomSeedpacketFrame.cs" id="4_d5nqg"] [sub_resource type="LabelSettings" id="LabelSettings_2s3af"] diff --git a/scenes/debug_lvl.tscn b/scenes/debug_lvl.tscn index b48402c..e216c3e 100644 --- a/scenes/debug_lvl.tscn +++ b/scenes/debug_lvl.tscn @@ -1,14 +1,14 @@ [gd_scene load_steps=12 format=3 uid="uid://crxsvv7drckpw"] -[ext_resource type="Script" uid="uid://bndu1h5kgcde8" path="res://scripts/components/level/RuntimeLevelData.cs" id="1_i3bf5"] +[ext_resource type="Script" uid="uid://bndu1h5kgcde8" path="res://scripts/level/RuntimeLevelData.cs" id="1_i3bf5"] [ext_resource type="Texture2D" uid="uid://b0tb2hjum40aw" path="res://assets/sprites/background_summer.png" id="2_vmxhy"] -[ext_resource type="Script" uid="uid://bso32xkw738sy" path="res://scripts/components/level/PoolContainer.cs" id="3_1y18w"] +[ext_resource type="Script" uid="uid://bso32xkw738sy" path="res://scripts/level/PoolContainer.cs" id="3_1y18w"] [ext_resource type="PackedScene" uid="uid://dpxxjfd5lv5sv" path="res://scenes/gui/choose_your_seeds.tscn" id="5_5e78h"] [ext_resource type="PackedScene" uid="uid://devn21c7luf45" path="res://scenes/level components/field_controller.tscn" id="5_lwpg6"] [ext_resource type="PackedScene" uid="uid://cfnmspei3k4p7" path="res://scenes/gui/runtime_gui.tscn" id="6_0baou"] [ext_resource type="PackedScene" uid="uid://bpekho7leatr5" path="res://scenes/sun.tscn" id="6_ay12k"] -[ext_resource type="Script" uid="uid://cslqjdd5wq4rc" path="res://scripts/components/level/SunSpawner.cs" id="6_lkguy"] -[ext_resource type="Script" uid="uid://blpu7t8tf6277" path="res://scripts/components/particles/FallFloor.cs" id="10_q4fsb"] +[ext_resource type="Script" uid="uid://cslqjdd5wq4rc" path="res://scripts/level/SunSpawner.cs" id="6_lkguy"] +[ext_resource type="Script" uid="uid://blpu7t8tf6277" path="res://scripts/particles/FallFloor.cs" id="10_q4fsb"] [ext_resource type="PackedScene" uid="uid://bgqmwsb6ynm81" path="res://scenes/entities/Zombies/hobo.tscn" id="10_tbxxq"] [sub_resource type="WorldBoundaryShape2D" id="WorldBoundaryShape2D_tbxxq"] diff --git a/scenes/entities/Zombies/bucket_zombie.tscn b/scenes/entities/Zombies/bucket_zombie.tscn index 9e9e1b9..86316c5 100644 --- a/scenes/entities/Zombies/bucket_zombie.tscn +++ b/scenes/entities/Zombies/bucket_zombie.tscn @@ -38,36 +38,34 @@ material = SubResource("ShaderMaterial_wdi07") scale = Vector2(0.999912, 0.999912) [node name="RightUpperLeg" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt" index="1"] -scale = Vector2(0.999832, 0.999832) +scale = Vector2(0.999831, 0.999831) [node name="RightLowerLeg" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/RightUpperLeg" index="1"] -scale = Vector2(0.999836, 0.999836) - -[node name="RightFoot" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/RightUpperLeg/RightLowerLeg" index="0"] scale = Vector2(0.999832, 0.999832) -[node name="LeftUpperLeg" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt" index="2"] -scale = Vector2(0.999836, 0.999836) - -[node name="LeftLowerLeg" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/LeftUpperLeg" index="1"] -scale = Vector2(0.999834, 0.999834) - -[node name="LeftFoot" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/LeftUpperLeg/LeftLowerLeg" index="1"] +[node name="RightFoot" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/RightUpperLeg/RightLowerLeg" index="0"] scale = Vector2(0.999833, 0.999833) -[node name="Body" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt" index="3"] -scale = Vector2(0.999829, 0.999829) +[node name="LeftUpperLeg" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt" index="2"] +scale = Vector2(0.999834, 0.999834) + +[node name="LeftLowerLeg" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/LeftUpperLeg" index="1"] +scale = Vector2(0.999835, 0.999835) + +[node name="LeftFoot" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/LeftUpperLeg/LeftLowerLeg" index="1"] +scale = Vector2(0.999828, 0.999828) [node name="RightUpperArm" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body" index="0"] -scale = Vector2(0.999828, 0.999828) +scale = Vector2(0.999826, 0.999826) [node name="RightLowerArm" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/RightUpperArm" index="1"] scale = Vector2(0.999825, 0.999825) [node name="RightHand" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/RightUpperArm/RightLowerArm" index="0"] -scale = Vector2(0.999828, 0.999828) +scale = Vector2(0.99983, 0.99983) [node name="Head" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body" index="3"] +visible = false scale = Vector2(0.999828, 0.999828) [node name="Hat" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/Head/Head" index="0"] @@ -81,14 +79,14 @@ degradationStages = Array[Texture]([ExtResource("3_0nlp0"), ExtResource("4_xx7fu scale = Vector2(0.999828, 0.999828) [node name="LeftUpperArm" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body" index="4"] -scale = Vector2(0.999828, 0.999828) - -[node name="LeftLowerArm" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/LeftUpperArm" index="1"] scale = Vector2(0.999829, 0.999829) -[node name="LeftHand" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/LeftUpperArm/LeftLowerArm" index="0"] +[node name="LeftLowerArm" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/LeftUpperArm" index="1"] scale = Vector2(0.99983, 0.99983) +[node name="LeftHand" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/LeftUpperArm/LeftLowerArm" index="0"] +scale = Vector2(0.999829, 0.999829) + [node name="Eatbox" parent="." index="2"] _damage = SubResource("Resource_2bm8y") diff --git a/scenes/entities/Zombies/cone_zombie.tscn b/scenes/entities/Zombies/cone_zombie.tscn index 65a4e3d..18655f6 100644 --- a/scenes/entities/Zombies/cone_zombie.tscn +++ b/scenes/entities/Zombies/cone_zombie.tscn @@ -2,11 +2,11 @@ [ext_resource type="PackedScene" uid="uid://co11v3w8hbwgf" path="res://scenes/entities/Zombies/zombie.tscn" id="1_3dq4c"] [ext_resource type="Shader" uid="uid://d0eo5uuj222c4" path="res://assets/shaders/CG_color_blender.gdshader" id="2_2dq8e"] -[ext_resource type="Script" uid="uid://fd4im1fmwc5n" path="res://scripts/components/Armor.cs" id="3_5s7in"] -[ext_resource type="Script" uid="uid://dt5uj25u0g6y3" path="res://scripts/components/particles/FallParticle.cs" id="3_w70im"] +[ext_resource type="Script" uid="uid://fd4im1fmwc5n" path="res://scripts/Armor.cs" id="3_5s7in"] +[ext_resource type="Script" uid="uid://dt5uj25u0g6y3" path="res://scripts/particles/FallParticle.cs" id="3_w70im"] [ext_resource type="Texture2D" uid="uid://ceqvdmude7cgg" path="res://assets/sprites/cone1.tres" id="4_qdhik"] [ext_resource type="Script" uid="uid://c3cfnrmnnuqms" path="res://addons/floatmodifiers/FloatModifiers.cs" id="4_qof5v"] -[ext_resource type="Script" uid="uid://bbw848msxb4re" path="res://scripts/components/DegradingSprite.cs" id="5_ickyd"] +[ext_resource type="Script" uid="uid://bbw848msxb4re" path="res://scripts/DegradingSprite.cs" id="5_ickyd"] [ext_resource type="Texture2D" uid="uid://cl5ekw72wi75c" path="res://assets/sprites/cone2.tres" id="6_b6mal"] [ext_resource type="AudioStream" uid="uid://bmupd3v3gvsca" path="res://assets/audio/sfx/plastichit_generic.tres" id="7_0amn8"] [ext_resource type="Texture2D" uid="uid://cnn81r1y0xwod" path="res://assets/sprites/cone3.tres" id="7_011r0"] @@ -41,40 +41,40 @@ _armor = NodePath("Armor") material = SubResource("ShaderMaterial_sat5k") [node name="RightUpperLeg" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt" index="1"] -scale = Vector2(0.999834, 0.999834) +scale = Vector2(0.999835, 0.999835) [node name="RightLowerLeg" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/RightUpperLeg" index="1"] -scale = Vector2(0.999838, 0.999838) +scale = Vector2(0.999834, 0.999834) [node name="RightFoot" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/RightUpperLeg/RightLowerLeg" index="0"] -scale = Vector2(0.999833, 0.999833) +scale = Vector2(0.999835, 0.999835) [node name="LeftUpperLeg" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt" index="2"] -scale = Vector2(0.999832, 0.999832) +scale = Vector2(0.999829, 0.999829) [node name="LeftLowerLeg" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/LeftUpperLeg" index="1"] -scale = Vector2(0.999833, 0.999833) +scale = Vector2(0.999832, 0.999832) [node name="LeftFoot" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/LeftUpperLeg/LeftLowerLeg" index="1"] -scale = Vector2(0.999828, 0.999828) +scale = Vector2(0.999829, 0.999829) [node name="Body" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt" index="3"] -scale = Vector2(0.999828, 0.999828) +scale = Vector2(0.999832, 0.999832) [node name="RightUpperArm" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body" index="0"] scale = Vector2(0.999828, 0.999828) [node name="RightLowerArm" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/RightUpperArm" index="1"] -scale = Vector2(0.99983, 0.99983) +scale = Vector2(0.999827, 0.999827) [node name="RightHand" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/RightUpperArm/RightLowerArm" index="0"] -scale = Vector2(0.999829, 0.999829) +scale = Vector2(0.999828, 0.999828) [node name="Tie" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body" index="2"] -skew = -8.49962e-05 +skew = -8.66652e-05 [node name="Head" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body" index="3"] -scale = Vector2(0.999828, 0.999828) +scale = Vector2(0.999826, 0.999826) [node name="Hat" type="RigidBody2D" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/Head/Head" index="0" node_paths=PackedStringArray("data")] position = Vector2(-2.5, -13.5) @@ -107,13 +107,13 @@ shape = SubResource("CircleShape2D_67t4t") scale = Vector2(0.999828, 0.999828) [node name="LeftUpperArm" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body" index="4"] -scale = Vector2(0.99983, 0.99983) +scale = Vector2(0.999829, 0.999829) [node name="LeftLowerArm" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/LeftUpperArm" index="1"] -scale = Vector2(0.999828, 0.999828) +scale = Vector2(0.999823, 0.999823) [node name="LeftHand" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/LeftUpperArm/LeftLowerArm" index="0"] -scale = Vector2(0.999828, 0.999828) +scale = Vector2(0.999827, 0.999827) [node name="Eatbox" parent="." index="2"] _damage = SubResource("Resource_w70im") diff --git a/scenes/entities/Zombies/hobo.tscn b/scenes/entities/Zombies/hobo.tscn index e288cef..1b88773 100644 --- a/scenes/entities/Zombies/hobo.tscn +++ b/scenes/entities/Zombies/hobo.tscn @@ -4,11 +4,11 @@ [ext_resource type="Shader" uid="uid://d0eo5uuj222c4" path="res://assets/shaders/CG_color_blender.gdshader" id="2_6qr4h"] [ext_resource type="Texture2D" uid="uid://cse1504ao4g8e" path="res://assets/sprites/atlases/zombies/hobo.png" id="3_6qr4h"] [ext_resource type="Resource" uid="uid://dsg1vjx76ifgu" path="res://resources/effects/GarlicEffect.tres" id="3_b583s"] -[ext_resource type="Script" uid="uid://dt5uj25u0g6y3" path="res://scripts/components/particles/FallParticle.cs" id="3_tu6af"] -[ext_resource type="Script" uid="uid://c5v2og85t7s6j" path="res://scripts/components/zombies/behaviours/HoboBehaviour.cs" id="4_5selg"] +[ext_resource type="Script" uid="uid://dt5uj25u0g6y3" path="res://scripts/particles/FallParticle.cs" id="3_tu6af"] +[ext_resource type="Script" uid="uid://c5v2og85t7s6j" path="res://scripts/zombies/behaviours/HoboBehaviour.cs" id="4_5selg"] [ext_resource type="Script" uid="uid://c3cfnrmnnuqms" path="res://addons/floatmodifiers/FloatModifiers.cs" id="4_c1y3b"] -[ext_resource type="Script" uid="uid://fd4im1fmwc5n" path="res://scripts/components/Armor.cs" id="4_w8pya"] -[ext_resource type="Script" uid="uid://bbw848msxb4re" path="res://scripts/components/DegradingSprite.cs" id="5_ndwp0"] +[ext_resource type="Script" uid="uid://fd4im1fmwc5n" path="res://scripts/Armor.cs" id="4_w8pya"] +[ext_resource type="Script" uid="uid://bbw848msxb4re" path="res://scripts/DegradingSprite.cs" id="5_ndwp0"] [ext_resource type="Texture2D" uid="uid://8h5vg1pk32b2" path="res://assets/sprites/garbage_can1.tres" id="6_i6nje"] [ext_resource type="Texture2D" uid="uid://cogfbn4re3kob" path="res://assets/sprites/garbage_can2.tres" id="7_txjqc"] [ext_resource type="AudioStream" uid="uid://bu1egfsyplpx4" path="res://assets/audio/sfx/metalhit_generic.tres" id="8_4248q"] diff --git a/scenes/entities/Zombies/zombie.tscn b/scenes/entities/Zombies/zombie.tscn index 94940a1..c25a3c0 100644 --- a/scenes/entities/Zombies/zombie.tscn +++ b/scenes/entities/Zombies/zombie.tscn @@ -1,17 +1,17 @@ [gd_scene load_steps=60 format=3 uid="uid://co11v3w8hbwgf"] -[ext_resource type="Script" uid="uid://dildme6epx8l4" path="res://scripts/components/zombies/RuntimeZombieData.cs" id="1_qq3f1"] +[ext_resource type="Script" uid="uid://dildme6epx8l4" path="res://scripts/zombies/RuntimeZombieData.cs" id="1_qq3f1"] [ext_resource type="AudioStream" uid="uid://dt13iugnnx4op" path="res://assets/audio/sfx/yuck_generic.tres" id="2_hh4qh"] [ext_resource type="Shader" uid="uid://d0eo5uuj222c4" path="res://assets/shaders/CG_color_blender.gdshader" id="2_srwwe"] -[ext_resource type="Script" uid="uid://dqyony6jxt2p0" path="res://scripts/components/zombies/EatBox.cs" id="3_2aulo"] +[ext_resource type="Script" uid="uid://dqyony6jxt2p0" path="res://scripts/zombies/EatBox.cs" id="3_2aulo"] [ext_resource type="AudioStream" uid="uid://bjotp63arocci" path="res://assets/audio/sfx/frozen.mp3" id="3_ltj46"] -[ext_resource type="Script" uid="uid://c5vfccegyy01t" path="res://scripts/components/FlashComponent.cs" id="3_rao3m"] -[ext_resource type="Script" uid="uid://7hdj2k14lfe4" path="res://scripts/components/zombies/ZombieMover.cs" id="4_u5syx"] +[ext_resource type="Script" uid="uid://c5vfccegyy01t" path="res://scripts/FlashComponent.cs" id="3_rao3m"] +[ext_resource type="Script" uid="uid://7hdj2k14lfe4" path="res://scripts/zombies/ZombieMover.cs" id="4_u5syx"] [ext_resource type="Texture2D" uid="uid://dacgbwohpmeed" path="res://assets/sprites/zombies/basic.png" id="6_xnora"] [ext_resource type="Script" uid="uid://c3cfnrmnnuqms" path="res://addons/floatmodifiers/FloatModifiers.cs" id="7_b3p4o"] [ext_resource type="AnimationNodeStateMachine" uid="uid://dj0blope85bg7" path="res://resources/animations/zombies/basic_zombie_tree.tres" id="8_ckb7n"] [ext_resource type="Script" uid="uid://c36bj8u7jghc7" path="res://scripts/audio/ChannelPlayer.cs" id="10_ruqsf"] -[ext_resource type="Script" uid="uid://dwlwi42smgxkb" path="res://scripts/components/TimeScalableAnimationTree.cs" id="11_ccrjo"] +[ext_resource type="Script" uid="uid://dwlwi42smgxkb" path="res://scripts/TimeScalableAnimationTree.cs" id="11_ccrjo"] [ext_resource type="AudioStream" uid="uid://dyid55nhflwyn" path="res://assets/audio/sfx/chomp_generic.tres" id="11_vjrlo"] [ext_resource type="AudioStream" uid="uid://bg76miyscfvhu" path="res://assets/audio/sfx/groan.tres" id="12_ad42i"] [ext_resource type="Script" uid="uid://cnn0ymuhypdff" path="res://scripts/audio/ChannelPlaylist.cs" id="12_he8da"] @@ -678,1021 +678,52 @@ tracks/39/keys = { tracks/40/type = "value" tracks/40/imported = false tracks/40/enabled = true -tracks/40/path = NodePath("Zombie/Butt/Body/Head:visible") +tracks/40/path = NodePath("Zombie/Butt/Body/Tie:scale") tracks/40/interp = 1 tracks/40/loop_wrap = true tracks/40/keys = { "times": PackedFloat32Array(0), "transitions": PackedFloat32Array(1), -"update": 1, -"values": [true] +"update": 0, +"values": [Vector2(1, 1)] } tracks/41/type = "value" tracks/41/imported = false tracks/41/enabled = true -tracks/41/path = NodePath("Zombie/Butt/Body/Tie:scale") +tracks/41/path = NodePath("Zombie/Butt/Body/LeftUpperArm/LeftLowerArm/LeftHand/Left_Hand:texture") tracks/41/interp = 1 tracks/41/loop_wrap = true tracks/41/keys = { "times": PackedFloat32Array(0), "transitions": PackedFloat32Array(1), -"update": 0, -"values": [Vector2(1, 1)] +"update": 1, +"values": [SubResource("AtlasTexture_6y4ja")] } tracks/42/type = "value" tracks/42/imported = false tracks/42/enabled = true -tracks/42/path = NodePath("Zombie/Butt/Body/LeftUpperArm/LeftLowerArm/LeftHand/Left_Hand:texture") +tracks/42/path = NodePath("Zombie/Butt/Body/LeftUpperArm/LeftLowerArm/LeftHand/Left_Hand:offset") tracks/42/interp = 1 tracks/42/loop_wrap = true tracks/42/keys = { "times": PackedFloat32Array(0), "transitions": PackedFloat32Array(1), -"update": 1, -"values": [SubResource("AtlasTexture_6y4ja")] +"update": 0, +"values": [Vector2(-4, -1)] } tracks/43/type = "value" tracks/43/imported = false tracks/43/enabled = true -tracks/43/path = NodePath("Zombie/Butt/Body/LeftUpperArm/LeftLowerArm/LeftHand/Left_Hand:offset") +tracks/43/path = NodePath("../../Mover:_speedControlMult") tracks/43/interp = 1 tracks/43/loop_wrap = true tracks/43/keys = { "times": PackedFloat32Array(0), "transitions": PackedFloat32Array(1), "update": 0, -"values": [Vector2(-4, -1)] -} -tracks/44/type = "value" -tracks/44/imported = false -tracks/44/enabled = true -tracks/44/path = NodePath("../../Mover:_speedControlMult") -tracks/44/interp = 1 -tracks/44/loop_wrap = true -tracks/44/keys = { -"times": PackedFloat32Array(0), -"transitions": PackedFloat32Array(1), -"update": 0, "values": [0.0] } -[sub_resource type="Animation" id="Animation_vcc72"] -resource_name = "basic_zombie_walk" -length = 1.7 -loop_mode = 1 -tracks/0/type = "value" -tracks/0/imported = false -tracks/0/enabled = true -tracks/0/path = NodePath("Zombie/Butt:position") -tracks/0/interp = 1 -tracks/0/loop_wrap = true -tracks/0/keys = { -"times": PackedFloat32Array(0), -"transitions": PackedFloat32Array(1), -"update": 0, -"values": [Vector2(5, -35)] -} -tracks/1/type = "value" -tracks/1/imported = false -tracks/1/enabled = true -tracks/1/path = NodePath("Zombie/Butt:rotation") -tracks/1/interp = 1 -tracks/1/loop_wrap = true -tracks/1/keys = { -"times": PackedFloat32Array(0), -"transitions": PackedFloat32Array(1), -"update": 0, -"values": [0.0] -} -tracks/2/type = "value" -tracks/2/imported = false -tracks/2/enabled = true -tracks/2/path = NodePath("Zombie/Butt/RightUpperLeg:position") -tracks/2/interp = 1 -tracks/2/loop_wrap = true -tracks/2/keys = { -"times": PackedFloat32Array(0, 0.45, 0.7, 1.1, 1.4), -"transitions": PackedFloat32Array(1, 1, 1, 1, 1), -"update": 0, -"values": [Vector2(-6, 3), Vector2(-6, 3), Vector2(-5, 3), Vector2(-6, 3), Vector2(-6, 4)] -} -tracks/3/type = "value" -tracks/3/imported = false -tracks/3/enabled = true -tracks/3/path = NodePath("Zombie/Butt/RightUpperLeg:rotation") -tracks/3/interp = 1 -tracks/3/loop_wrap = true -tracks/3/keys = { -"times": PackedFloat32Array(0, 0.45, 0.7, 1.1, 1.4), -"transitions": PackedFloat32Array(1, 1, 1, 1, 1), -"update": 0, -"values": [0.0, -0.47976, -0.247472, 0.324581, 0.0887587] -} -tracks/4/type = "value" -tracks/4/imported = false -tracks/4/enabled = true -tracks/4/path = NodePath("Zombie/Butt/RightUpperLeg/RightLowerLeg:position") -tracks/4/interp = 1 -tracks/4/loop_wrap = true -tracks/4/keys = { -"times": PackedFloat32Array(0, 0.45, 0.7), -"transitions": PackedFloat32Array(1, 1, 1), -"update": 0, -"values": [Vector2(-2, 12), Vector2(-1.25072, 12.0201), Vector2(-2.0003, 12.0018)] -} -tracks/5/type = "value" -tracks/5/imported = false -tracks/5/enabled = true -tracks/5/path = NodePath("Zombie/Butt/RightUpperLeg/RightLowerLeg:rotation") -tracks/5/interp = 1 -tracks/5/loop_wrap = true -tracks/5/keys = { -"times": PackedFloat32Array(0, 0.45, 0.7, 1.1, 1.4), -"transitions": PackedFloat32Array(1, 1, 1, 1, 1), -"update": 0, -"values": [0.0, 0.311892, 0.2129, 0.419682, 0.172512] -} -tracks/6/type = "value" -tracks/6/imported = false -tracks/6/enabled = true -tracks/6/path = NodePath("Zombie/Butt/RightUpperLeg/RightLowerLeg/RightFoot:position") -tracks/6/interp = 1 -tracks/6/loop_wrap = true -tracks/6/keys = { -"times": PackedFloat32Array(0), -"transitions": PackedFloat32Array(1), -"update": 0, -"values": [Vector2(-2, 14)] -} -tracks/7/type = "value" -tracks/7/imported = false -tracks/7/enabled = true -tracks/7/path = NodePath("Zombie/Butt/RightUpperLeg/RightLowerLeg/RightFoot:rotation") -tracks/7/interp = 1 -tracks/7/loop_wrap = true -tracks/7/keys = { -"times": PackedFloat32Array(0, 0.45, 0.7, 1.1, 1.4), -"transitions": PackedFloat32Array(1, 1, 1, 1, 1), -"update": 0, -"values": [0.0, 0.33228, 0.0473635, -0.51797, -0.180295] -} -tracks/8/type = "value" -tracks/8/imported = false -tracks/8/enabled = true -tracks/8/path = NodePath("Zombie/Butt/LeftUpperLeg:position") -tracks/8/interp = 1 -tracks/8/loop_wrap = true -tracks/8/keys = { -"times": PackedFloat32Array(0, 0.45, 0.7), -"transitions": PackedFloat32Array(1, 1, 1), -"update": 0, -"values": [Vector2(6, 4), Vector2(2, 4), Vector2(1, 4)] -} -tracks/9/type = "value" -tracks/9/imported = false -tracks/9/enabled = true -tracks/9/path = NodePath("Zombie/Butt/LeftUpperLeg:rotation") -tracks/9/interp = 1 -tracks/9/loop_wrap = true -tracks/9/keys = { -"times": PackedFloat32Array(0, 0.45, 0.7), -"transitions": PackedFloat32Array(1, 1, 1), -"update": 0, -"values": [0.0, 0.480908, 0.301984] -} -tracks/10/type = "value" -tracks/10/imported = false -tracks/10/enabled = true -tracks/10/path = NodePath("Zombie/Butt/LeftUpperLeg/LeftLowerLeg:position") -tracks/10/interp = 1 -tracks/10/loop_wrap = true -tracks/10/keys = { -"times": PackedFloat32Array(0), -"transitions": PackedFloat32Array(1), -"update": 0, -"values": [Vector2(-1, 13)] -} -tracks/11/type = "value" -tracks/11/imported = false -tracks/11/enabled = true -tracks/11/path = NodePath("Zombie/Butt/LeftUpperLeg/LeftLowerLeg:rotation") -tracks/11/interp = 1 -tracks/11/loop_wrap = true -tracks/11/keys = { -"times": PackedFloat32Array(0, 0.45, 0.7), -"transitions": PackedFloat32Array(1, 1, 1), -"update": 0, -"values": [0.0, -0.685514, -0.119147] -} -tracks/12/type = "value" -tracks/12/imported = false -tracks/12/enabled = true -tracks/12/path = NodePath("Zombie/Butt/LeftUpperLeg/LeftLowerLeg/LeftFoot:position") -tracks/12/interp = 1 -tracks/12/loop_wrap = true -tracks/12/keys = { -"times": PackedFloat32Array(0), -"transitions": PackedFloat32Array(1), -"update": 0, -"values": [Vector2(6, 10)] -} -tracks/13/type = "value" -tracks/13/imported = false -tracks/13/enabled = true -tracks/13/path = NodePath("Zombie/Butt/LeftUpperLeg/LeftLowerLeg/LeftFoot:rotation") -tracks/13/interp = 1 -tracks/13/loop_wrap = true -tracks/13/keys = { -"times": PackedFloat32Array(0, 0.45, 0.7), -"transitions": PackedFloat32Array(1, 1, 1), -"update": 0, -"values": [0.0, -0.379644, -0.190368] -} -tracks/14/type = "value" -tracks/14/imported = false -tracks/14/enabled = true -tracks/14/path = NodePath("Zombie/Butt/Body:position") -tracks/14/interp = 1 -tracks/14/loop_wrap = true -tracks/14/keys = { -"times": PackedFloat32Array(0, 1.4), -"transitions": PackedFloat32Array(1, 1), -"update": 0, -"values": [Vector2(1, -2), Vector2(1, -1)] -} -tracks/15/type = "value" -tracks/15/imported = false -tracks/15/enabled = true -tracks/15/path = NodePath("Zombie/Butt/Body:rotation") -tracks/15/interp = 1 -tracks/15/loop_wrap = true -tracks/15/keys = { -"times": PackedFloat32Array(0, 0.45, 0.7, 1.1, 1.4), -"transitions": PackedFloat32Array(1, 1, 1, 1, 1), -"update": 0, -"values": [0.0, 0.131445, -0.0594569, -0.214663, -0.153259] -} -tracks/16/type = "value" -tracks/16/imported = false -tracks/16/enabled = true -tracks/16/path = NodePath("Zombie/Butt/Body/RightUpperArm:position") -tracks/16/interp = 1 -tracks/16/loop_wrap = true -tracks/16/keys = { -"times": PackedFloat32Array(0), -"transitions": PackedFloat32Array(1), -"update": 0, -"values": [Vector2(-14, -23)] -} -tracks/17/type = "value" -tracks/17/imported = false -tracks/17/enabled = true -tracks/17/path = NodePath("Zombie/Butt/Body/RightUpperArm:rotation") -tracks/17/interp = 1 -tracks/17/loop_wrap = true -tracks/17/keys = { -"times": PackedFloat32Array(0, 0.45, 0.7, 1.1, 1.4), -"transitions": PackedFloat32Array(1, 1, 1, 1, 1), -"update": 0, -"values": [0.0, 0.193101, 0.161051, 0.119452, 0.0341511] -} -tracks/18/type = "value" -tracks/18/imported = false -tracks/18/enabled = true -tracks/18/path = NodePath("Zombie/Butt/Body/RightUpperArm/RightLowerArm:position") -tracks/18/interp = 1 -tracks/18/loop_wrap = true -tracks/18/keys = { -"times": PackedFloat32Array(0), -"transitions": PackedFloat32Array(1), -"update": 0, -"values": [Vector2(-2, 15)] -} -tracks/19/type = "value" -tracks/19/imported = false -tracks/19/enabled = true -tracks/19/path = NodePath("Zombie/Butt/Body/RightUpperArm/RightLowerArm:rotation") -tracks/19/interp = 1 -tracks/19/loop_wrap = true -tracks/19/keys = { -"times": PackedFloat32Array(0, 0.45, 0.7, 1.1), -"transitions": PackedFloat32Array(1, 1, 1, 1), -"update": 0, -"values": [0.0, 0.237135, -0.0196698, 0.180193] -} -tracks/20/type = "value" -tracks/20/imported = false -tracks/20/enabled = true -tracks/20/path = NodePath("Zombie/Butt/Body/RightUpperArm/RightLowerArm/RightHand:position") -tracks/20/interp = 1 -tracks/20/loop_wrap = true -tracks/20/keys = { -"times": PackedFloat32Array(0), -"transitions": PackedFloat32Array(1), -"update": 0, -"values": [Vector2(-1, 13)] -} -tracks/21/type = "value" -tracks/21/imported = false -tracks/21/enabled = true -tracks/21/path = NodePath("Zombie/Butt/Body/RightUpperArm/RightLowerArm/RightHand:rotation") -tracks/21/interp = 1 -tracks/21/loop_wrap = true -tracks/21/keys = { -"times": PackedFloat32Array(0, 0.45, 0.7), -"transitions": PackedFloat32Array(1, 1, 1), -"update": 0, -"values": [0.0, 0.17474, 0.0256803] -} -tracks/22/type = "value" -tracks/22/imported = false -tracks/22/enabled = true -tracks/22/path = NodePath("Zombie/Butt/Body/Tie:position") -tracks/22/interp = 1 -tracks/22/loop_wrap = true -tracks/22/keys = { -"times": PackedFloat32Array(0), -"transitions": PackedFloat32Array(1), -"update": 0, -"values": [Vector2(-9, -21)] -} -tracks/23/type = "value" -tracks/23/imported = false -tracks/23/enabled = true -tracks/23/path = NodePath("Zombie/Butt/Body/Tie:rotation") -tracks/23/interp = 1 -tracks/23/loop_wrap = true -tracks/23/keys = { -"times": PackedFloat32Array(0, 0.45, 1.1), -"transitions": PackedFloat32Array(1, 1, 1), -"update": 0, -"values": [0.0, -0.170849, 0.172666] -} -tracks/24/type = "value" -tracks/24/imported = false -tracks/24/enabled = true -tracks/24/path = NodePath("Zombie/Butt/Body/Head:position") -tracks/24/interp = 1 -tracks/24/loop_wrap = true -tracks/24/keys = { -"times": PackedFloat32Array(0), -"transitions": PackedFloat32Array(1), -"update": 0, -"values": [Vector2(-10, -25)] -} -tracks/25/type = "value" -tracks/25/imported = false -tracks/25/enabled = true -tracks/25/path = NodePath("Zombie/Butt/Body/Head:rotation") -tracks/25/interp = 1 -tracks/25/loop_wrap = true -tracks/25/keys = { -"times": PackedFloat32Array(0, 1.1), -"transitions": PackedFloat32Array(1, 1), -"update": 0, -"values": [0.0, -0.102364] -} -tracks/26/type = "value" -tracks/26/imported = false -tracks/26/enabled = true -tracks/26/path = NodePath("Zombie/Butt/Body/Head/Jaw:position") -tracks/26/interp = 1 -tracks/26/loop_wrap = true -tracks/26/keys = { -"times": PackedFloat32Array(0, 0.7, 1.1), -"transitions": PackedFloat32Array(1, 1, 1), -"update": 0, -"values": [Vector2(-3, 3), Vector2(-2.66995, 2.20342), Vector2(-3.00212, 2.99641)] -} -tracks/27/type = "value" -tracks/27/imported = false -tracks/27/enabled = true -tracks/27/path = NodePath("Zombie/Butt/Body/Head/Jaw:rotation") -tracks/27/interp = 1 -tracks/27/loop_wrap = true -tracks/27/keys = { -"times": PackedFloat32Array(0, 0.45, 0.7), -"transitions": PackedFloat32Array(1, 1, 1), -"update": 0, -"values": [0.0, -0.119339, 0.0279278] -} -tracks/28/type = "value" -tracks/28/imported = false -tracks/28/enabled = true -tracks/28/path = NodePath("Zombie/Butt/Body/Head/RightEye:position") -tracks/28/interp = 1 -tracks/28/loop_wrap = true -tracks/28/keys = { -"times": PackedFloat32Array(0), -"transitions": PackedFloat32Array(1), -"update": 0, -"values": [Vector2(-16, -8)] -} -tracks/29/type = "value" -tracks/29/imported = false -tracks/29/enabled = true -tracks/29/path = NodePath("Zombie/Butt/Body/Head/RightEye:rotation") -tracks/29/interp = 1 -tracks/29/loop_wrap = true -tracks/29/keys = { -"times": PackedFloat32Array(0), -"transitions": PackedFloat32Array(1), -"update": 0, -"values": [0.0] -} -tracks/30/type = "value" -tracks/30/imported = false -tracks/30/enabled = true -tracks/30/path = NodePath("Zombie/Butt/Body/Head/LeftEye:position") -tracks/30/interp = 1 -tracks/30/loop_wrap = true -tracks/30/keys = { -"times": PackedFloat32Array(0), -"transitions": PackedFloat32Array(1), -"update": 0, -"values": [Vector2(-4, -9)] -} -tracks/31/type = "value" -tracks/31/imported = false -tracks/31/enabled = true -tracks/31/path = NodePath("Zombie/Butt/Body/Head/LeftEye:rotation") -tracks/31/interp = 1 -tracks/31/loop_wrap = true -tracks/31/keys = { -"times": PackedFloat32Array(0), -"transitions": PackedFloat32Array(1), -"update": 0, -"values": [0.0] -} -tracks/32/type = "value" -tracks/32/imported = false -tracks/32/enabled = true -tracks/32/path = NodePath("Zombie/Butt/Body/LeftUpperArm:position") -tracks/32/interp = 1 -tracks/32/loop_wrap = true -tracks/32/keys = { -"times": PackedFloat32Array(0), -"transitions": PackedFloat32Array(1), -"update": 0, -"values": [Vector2(-1, -20)] -} -tracks/33/type = "value" -tracks/33/imported = false -tracks/33/enabled = true -tracks/33/path = NodePath("Zombie/Butt/Body/LeftUpperArm:rotation") -tracks/33/interp = 1 -tracks/33/loop_wrap = true -tracks/33/keys = { -"times": PackedFloat32Array(0, 0.45, 1.1, 1.4), -"transitions": PackedFloat32Array(1, 1, 1, 1), -"update": 0, -"values": [0.0, -0.274164, 0.193139, 0.0631989] -} -tracks/34/type = "value" -tracks/34/imported = false -tracks/34/enabled = true -tracks/34/path = NodePath("Zombie/Butt/Body/LeftUpperArm/LeftLowerArm:position") -tracks/34/interp = 1 -tracks/34/loop_wrap = true -tracks/34/keys = { -"times": PackedFloat32Array(0), -"transitions": PackedFloat32Array(1), -"update": 0, -"values": [Vector2(-2, 14)] -} -tracks/35/type = "value" -tracks/35/imported = false -tracks/35/enabled = true -tracks/35/path = NodePath("Zombie/Butt/Body/LeftUpperArm/LeftLowerArm:rotation") -tracks/35/interp = 1 -tracks/35/loop_wrap = true -tracks/35/keys = { -"times": PackedFloat32Array(0, 0.45, 0.7, 1.1), -"transitions": PackedFloat32Array(1, 1, 1, 1), -"update": 0, -"values": [0.0, -0.181085, 0.105937, 0.162344] -} -tracks/36/type = "value" -tracks/36/imported = false -tracks/36/enabled = true -tracks/36/path = NodePath("Zombie/Butt/Body/LeftUpperArm/LeftLowerArm/LeftHand:position") -tracks/36/interp = 1 -tracks/36/loop_wrap = true -tracks/36/keys = { -"times": PackedFloat32Array(0), -"transitions": PackedFloat32Array(1), -"update": 0, -"values": [Vector2(-1, 13)] -} -tracks/37/type = "value" -tracks/37/imported = false -tracks/37/enabled = true -tracks/37/path = NodePath("Zombie/Butt/Body/LeftUpperArm/LeftLowerArm/LeftHand:rotation") -tracks/37/interp = 1 -tracks/37/loop_wrap = true -tracks/37/keys = { -"times": PackedFloat32Array(0, 0.45), -"transitions": PackedFloat32Array(1, 1), -"update": 0, -"values": [0.0, -0.149268] -} -tracks/38/type = "value" -tracks/38/imported = false -tracks/38/enabled = true -tracks/38/path = NodePath("../../Mover:_speedControlMult") -tracks/38/interp = 1 -tracks/38/loop_wrap = true -tracks/38/keys = { -"times": PackedFloat32Array(0, 0.450312, 1.7), -"transitions": PackedFloat32Array(1, 1, 1), -"update": 0, -"values": [0.0, 1.0, 0.0] -} - -[sub_resource type="Animation" id="Animation_wn68q"] -resource_name = "dead_lmao" -length = 2.0 -tracks/0/type = "value" -tracks/0/imported = false -tracks/0/enabled = true -tracks/0/path = NodePath("Zombie/Butt:position") -tracks/0/interp = 1 -tracks/0/loop_wrap = true -tracks/0/keys = { -"times": PackedFloat32Array(-0.00833333, 0.85, 1.5, 2), -"transitions": PackedFloat32Array(1.68179, 2, 1, 1), -"update": 0, -"values": [Vector2(5, -35), Vector2(-9, -18), Vector2(-21, -18), Vector2(-22, -9)] -} -tracks/1/type = "value" -tracks/1/imported = false -tracks/1/enabled = true -tracks/1/path = NodePath("Zombie/Butt:rotation") -tracks/1/interp = 1 -tracks/1/loop_wrap = true -tracks/1/keys = { -"times": PackedFloat32Array(-0.00833333, 0.85, 1.5, 2), -"transitions": PackedFloat32Array(1.68179, 2, 1, 1), -"update": 0, -"values": [0.0, 0.0, -0.363399, -1.03478] -} -tracks/2/type = "value" -tracks/2/imported = false -tracks/2/enabled = true -tracks/2/path = NodePath("Zombie/Butt/RightUpperLeg:position") -tracks/2/interp = 1 -tracks/2/loop_wrap = true -tracks/2/keys = { -"times": PackedFloat32Array(-0.00833333), -"transitions": PackedFloat32Array(1), -"update": 0, -"values": [Vector2(-6, 3)] -} -tracks/3/type = "value" -tracks/3/imported = false -tracks/3/enabled = true -tracks/3/path = NodePath("Zombie/Butt/RightUpperLeg:rotation") -tracks/3/interp = 1 -tracks/3/loop_wrap = true -tracks/3/keys = { -"times": PackedFloat32Array(-0.00833333, 1.5, 2), -"transitions": PackedFloat32Array(1, 1, 1), -"update": 0, -"values": [0.0, -0.438888, -0.596673] -} -tracks/4/type = "value" -tracks/4/imported = false -tracks/4/enabled = true -tracks/4/path = NodePath("Zombie/Butt/RightUpperLeg/RightLowerLeg:position") -tracks/4/interp = 1 -tracks/4/loop_wrap = true -tracks/4/keys = { -"times": PackedFloat32Array(-0.00833333), -"transitions": PackedFloat32Array(1), -"update": 0, -"values": [Vector2(-2, 12)] -} -tracks/5/type = "value" -tracks/5/imported = false -tracks/5/enabled = true -tracks/5/path = NodePath("Zombie/Butt/RightUpperLeg/RightLowerLeg:rotation") -tracks/5/interp = 1 -tracks/5/loop_wrap = true -tracks/5/keys = { -"times": PackedFloat32Array(-0.00833333, 0.85, 1.5, 2), -"transitions": PackedFloat32Array(1.68179, 2, 1, 1), -"update": 0, -"values": [0.0, -1.57645, -0.739282, 0.0335003] -} -tracks/6/type = "value" -tracks/6/imported = false -tracks/6/enabled = true -tracks/6/path = NodePath("Zombie/Butt/RightUpperLeg/RightLowerLeg/RightFoot:position") -tracks/6/interp = 1 -tracks/6/loop_wrap = true -tracks/6/keys = { -"times": PackedFloat32Array(-0.00833333), -"transitions": PackedFloat32Array(1), -"update": 0, -"values": [Vector2(-2, 14)] -} -tracks/7/type = "value" -tracks/7/imported = false -tracks/7/enabled = true -tracks/7/path = NodePath("Zombie/Butt/RightUpperLeg/RightLowerLeg/RightFoot:rotation") -tracks/7/interp = 1 -tracks/7/loop_wrap = true -tracks/7/keys = { -"times": PackedFloat32Array(-0.00833333, 1.5), -"transitions": PackedFloat32Array(1, 1), -"update": 0, -"values": [0.0, 0.279912] -} -tracks/8/type = "value" -tracks/8/imported = false -tracks/8/enabled = true -tracks/8/path = NodePath("Zombie/Butt/LeftUpperLeg:position") -tracks/8/interp = 1 -tracks/8/loop_wrap = true -tracks/8/keys = { -"times": PackedFloat32Array(-0.00833333), -"transitions": PackedFloat32Array(1), -"update": 0, -"values": [Vector2(6, 4)] -} -tracks/9/type = "value" -tracks/9/imported = false -tracks/9/enabled = true -tracks/9/path = NodePath("Zombie/Butt/LeftUpperLeg:rotation") -tracks/9/interp = 1 -tracks/9/loop_wrap = true -tracks/9/keys = { -"times": PackedFloat32Array(0, 1.5, 2), -"transitions": PackedFloat32Array(1, 1, 1), -"update": 0, -"values": [0.0, -0.330352, -0.0713271] -} -tracks/10/type = "value" -tracks/10/imported = false -tracks/10/enabled = true -tracks/10/path = NodePath("Zombie/Butt/LeftUpperLeg/LeftLowerLeg:position") -tracks/10/interp = 1 -tracks/10/loop_wrap = true -tracks/10/keys = { -"times": PackedFloat32Array(0), -"transitions": PackedFloat32Array(1), -"update": 0, -"values": [Vector2(-1, 13)] -} -tracks/11/type = "value" -tracks/11/imported = false -tracks/11/enabled = true -tracks/11/path = NodePath("Zombie/Butt/LeftUpperLeg/LeftLowerLeg:rotation") -tracks/11/interp = 1 -tracks/11/loop_wrap = true -tracks/11/keys = { -"times": PackedFloat32Array(0, 0.85, 1.5, 2), -"transitions": PackedFloat32Array(1.68179, 2, 1, 1), -"update": 0, -"values": [0.0, -1.7825, -0.561999, -0.289205] -} -tracks/12/type = "value" -tracks/12/imported = false -tracks/12/enabled = true -tracks/12/path = NodePath("Zombie/Butt/LeftUpperLeg/LeftLowerLeg/LeftFoot:position") -tracks/12/interp = 1 -tracks/12/loop_wrap = true -tracks/12/keys = { -"times": PackedFloat32Array(0), -"transitions": PackedFloat32Array(1), -"update": 0, -"values": [Vector2(6, 10)] -} -tracks/13/type = "value" -tracks/13/imported = false -tracks/13/enabled = true -tracks/13/path = NodePath("Zombie/Butt/LeftUpperLeg/LeftLowerLeg/LeftFoot:rotation") -tracks/13/interp = 1 -tracks/13/loop_wrap = true -tracks/13/keys = { -"times": PackedFloat32Array(0, 1.5, 2), -"transitions": PackedFloat32Array(1, 1, 1), -"update": 0, -"values": [0.0, -0.542055, -0.899995] -} -tracks/14/type = "value" -tracks/14/imported = false -tracks/14/enabled = true -tracks/14/path = NodePath("Zombie/Butt/Body:position") -tracks/14/interp = 1 -tracks/14/loop_wrap = true -tracks/14/keys = { -"times": PackedFloat32Array(0), -"transitions": PackedFloat32Array(1), -"update": 0, -"values": [Vector2(1, -2)] -} -tracks/15/type = "value" -tracks/15/imported = false -tracks/15/enabled = true -tracks/15/path = NodePath("Zombie/Butt/Body:rotation") -tracks/15/interp = 1 -tracks/15/loop_wrap = true -tracks/15/keys = { -"times": PackedFloat32Array(0, 0.85, 1.5, 2), -"transitions": PackedFloat32Array(1.68179, 2, 1, 1), -"update": 0, -"values": [0.0, -0.453494, -0.45522, -0.220732] -} -tracks/16/type = "value" -tracks/16/imported = false -tracks/16/enabled = true -tracks/16/path = NodePath("Zombie/Butt/Body/RightUpperArm:position") -tracks/16/interp = 1 -tracks/16/loop_wrap = true -tracks/16/keys = { -"times": PackedFloat32Array(0, 0.85), -"transitions": PackedFloat32Array(1.68179, 2), -"update": 0, -"values": [Vector2(-14, -23), Vector2(-11.3243, -22.8469)] -} -tracks/17/type = "value" -tracks/17/imported = false -tracks/17/enabled = true -tracks/17/path = NodePath("Zombie/Butt/Body/RightUpperArm:rotation") -tracks/17/interp = 1 -tracks/17/loop_wrap = true -tracks/17/keys = { -"times": PackedFloat32Array(0, 0.85, 2), -"transitions": PackedFloat32Array(1.68179, 2, 1), -"update": 0, -"values": [0.0, 0.204776, -0.10805] -} -tracks/18/type = "value" -tracks/18/imported = false -tracks/18/enabled = true -tracks/18/path = NodePath("Zombie/Butt/Body/RightUpperArm/RightLowerArm:position") -tracks/18/interp = 1 -tracks/18/loop_wrap = true -tracks/18/keys = { -"times": PackedFloat32Array(0), -"transitions": PackedFloat32Array(1), -"update": 0, -"values": [Vector2(-2, 15)] -} -tracks/19/type = "value" -tracks/19/imported = false -tracks/19/enabled = true -tracks/19/path = NodePath("Zombie/Butt/Body/RightUpperArm/RightLowerArm:rotation") -tracks/19/interp = 1 -tracks/19/loop_wrap = true -tracks/19/keys = { -"times": PackedFloat32Array(0, 0.85, 1.5), -"transitions": PackedFloat32Array(1.68179, 2, 1), -"update": 0, -"values": [0.0, 0.237523, -0.230923] -} -tracks/20/type = "value" -tracks/20/imported = false -tracks/20/enabled = true -tracks/20/path = NodePath("Zombie/Butt/Body/RightUpperArm/RightLowerArm/RightHand:position") -tracks/20/interp = 1 -tracks/20/loop_wrap = true -tracks/20/keys = { -"times": PackedFloat32Array(0), -"transitions": PackedFloat32Array(1), -"update": 0, -"values": [Vector2(-1, 13)] -} -tracks/21/type = "value" -tracks/21/imported = false -tracks/21/enabled = true -tracks/21/path = NodePath("Zombie/Butt/Body/RightUpperArm/RightLowerArm/RightHand:rotation") -tracks/21/interp = 1 -tracks/21/loop_wrap = true -tracks/21/keys = { -"times": PackedFloat32Array(0, 0.85, 1.5), -"transitions": PackedFloat32Array(1.68179, 2, 1), -"update": 0, -"values": [0.0, 0.270356, 0.0408225] -} -tracks/22/type = "value" -tracks/22/imported = false -tracks/22/enabled = true -tracks/22/path = NodePath("Zombie/Butt/Body/Tie:position") -tracks/22/interp = 1 -tracks/22/loop_wrap = true -tracks/22/keys = { -"times": PackedFloat32Array(0), -"transitions": PackedFloat32Array(1), -"update": 0, -"values": [Vector2(-9, -21)] -} -tracks/23/type = "value" -tracks/23/imported = false -tracks/23/enabled = true -tracks/23/path = NodePath("Zombie/Butt/Body/Tie:rotation") -tracks/23/interp = 1 -tracks/23/loop_wrap = true -tracks/23/keys = { -"times": PackedFloat32Array(0, 0.5, 0.85, 1.5), -"transitions": PackedFloat32Array(1, 1, 2, 2.07053), -"update": 0, -"values": [0.0, 0.134183, 0.162458, 0.689549] -} -tracks/24/type = "value" -tracks/24/imported = false -tracks/24/enabled = true -tracks/24/path = NodePath("Zombie/Butt/Body/Head/Jaw:position") -tracks/24/interp = 1 -tracks/24/loop_wrap = true -tracks/24/keys = { -"times": PackedFloat32Array(0), -"transitions": PackedFloat32Array(1), -"update": 0, -"values": [Vector2(-3, 3)] -} -tracks/25/type = "value" -tracks/25/imported = false -tracks/25/enabled = true -tracks/25/path = NodePath("Zombie/Butt/Body/Head/Jaw:rotation") -tracks/25/interp = 1 -tracks/25/loop_wrap = true -tracks/25/keys = { -"times": PackedFloat32Array(0), -"transitions": PackedFloat32Array(1), -"update": 0, -"values": [0.0] -} -tracks/26/type = "value" -tracks/26/imported = false -tracks/26/enabled = true -tracks/26/path = NodePath("Zombie/Butt/Body/Head/RightEye:position") -tracks/26/interp = 1 -tracks/26/loop_wrap = true -tracks/26/keys = { -"times": PackedFloat32Array(0), -"transitions": PackedFloat32Array(1), -"update": 0, -"values": [Vector2(-16, -8)] -} -tracks/27/type = "value" -tracks/27/imported = false -tracks/27/enabled = true -tracks/27/path = NodePath("Zombie/Butt/Body/Head/RightEye:rotation") -tracks/27/interp = 1 -tracks/27/loop_wrap = true -tracks/27/keys = { -"times": PackedFloat32Array(0), -"transitions": PackedFloat32Array(1), -"update": 0, -"values": [0.0] -} -tracks/28/type = "value" -tracks/28/imported = false -tracks/28/enabled = true -tracks/28/path = NodePath("Zombie/Butt/Body/Head/LeftEye:position") -tracks/28/interp = 1 -tracks/28/loop_wrap = true -tracks/28/keys = { -"times": PackedFloat32Array(0), -"transitions": PackedFloat32Array(1), -"update": 0, -"values": [Vector2(-4, -9)] -} -tracks/29/type = "value" -tracks/29/imported = false -tracks/29/enabled = true -tracks/29/path = NodePath("Zombie/Butt/Body/Head/LeftEye:rotation") -tracks/29/interp = 1 -tracks/29/loop_wrap = true -tracks/29/keys = { -"times": PackedFloat32Array(0), -"transitions": PackedFloat32Array(1), -"update": 0, -"values": [0.0] -} -tracks/30/type = "value" -tracks/30/imported = false -tracks/30/enabled = true -tracks/30/path = NodePath("Zombie/Butt/Body/LeftUpperArm:position") -tracks/30/interp = 1 -tracks/30/loop_wrap = true -tracks/30/keys = { -"times": PackedFloat32Array(0), -"transitions": PackedFloat32Array(1), -"update": 0, -"values": [Vector2(-1, -20)] -} -tracks/31/type = "value" -tracks/31/imported = false -tracks/31/enabled = true -tracks/31/path = NodePath("Zombie/Butt/Body/LeftUpperArm:rotation") -tracks/31/interp = 1 -tracks/31/loop_wrap = true -tracks/31/keys = { -"times": PackedFloat32Array(0, 0.85, 1.5, 2), -"transitions": PackedFloat32Array(1.68179, 2, 1, 1), -"update": 0, -"values": [0.0, 0.108056, 0.68476, 1.91294] -} -tracks/32/type = "value" -tracks/32/imported = false -tracks/32/enabled = true -tracks/32/path = NodePath("Zombie/Butt/Body/LeftUpperArm/LeftLowerArm:position") -tracks/32/interp = 1 -tracks/32/loop_wrap = true -tracks/32/keys = { -"times": PackedFloat32Array(0), -"transitions": PackedFloat32Array(1), -"update": 0, -"values": [Vector2(-2, 14)] -} -tracks/33/type = "value" -tracks/33/imported = false -tracks/33/enabled = true -tracks/33/path = NodePath("Zombie/Butt/Body/LeftUpperArm/LeftLowerArm:rotation") -tracks/33/interp = 1 -tracks/33/loop_wrap = true -tracks/33/keys = { -"times": PackedFloat32Array(0, 0.85, 1.5), -"transitions": PackedFloat32Array(1.68179, 2, 1), -"update": 0, -"values": [0.0, 0.249204, 0.396612] -} -tracks/34/type = "value" -tracks/34/imported = false -tracks/34/enabled = true -tracks/34/path = NodePath("Zombie/Butt/Body/LeftUpperArm/LeftLowerArm/LeftHand:position") -tracks/34/interp = 1 -tracks/34/loop_wrap = true -tracks/34/keys = { -"times": PackedFloat32Array(0), -"transitions": PackedFloat32Array(1), -"update": 0, -"values": [Vector2(-1, 13)] -} -tracks/35/type = "value" -tracks/35/imported = false -tracks/35/enabled = true -tracks/35/path = NodePath("Zombie/Butt/Body/LeftUpperArm/LeftLowerArm/LeftHand:rotation") -tracks/35/interp = 1 -tracks/35/loop_wrap = true -tracks/35/keys = { -"times": PackedFloat32Array(0, 0.85, 1.5), -"transitions": PackedFloat32Array(1.68179, 2, 1), -"update": 0, -"values": [0.0, 0.228597, 0.28535] -} -tracks/36/type = "value" -tracks/36/imported = false -tracks/36/enabled = true -tracks/36/path = NodePath("Zombie:position") -tracks/36/interp = 1 -tracks/36/loop_wrap = true -tracks/36/keys = { -"times": PackedFloat32Array(0), -"transitions": PackedFloat32Array(1), -"update": 0, -"values": [Vector2(0, 0)] -} -tracks/37/type = "value" -tracks/37/imported = false -tracks/37/enabled = true -tracks/37/path = NodePath("Zombie:rotation") -tracks/37/interp = 1 -tracks/37/loop_wrap = true -tracks/37/keys = { -"times": PackedFloat32Array(0), -"transitions": PackedFloat32Array(1), -"update": 0, -"values": [0.0] -} -tracks/38/type = "value" -tracks/38/imported = false -tracks/38/enabled = true -tracks/38/path = NodePath("Zombie/Butt/Body/Head:visible") -tracks/38/interp = 1 -tracks/38/loop_wrap = true -tracks/38/keys = { -"times": PackedFloat32Array(0), -"transitions": PackedFloat32Array(1), -"update": 1, -"values": [false] -} -tracks/39/type = "value" -tracks/39/imported = false -tracks/39/enabled = true -tracks/39/path = NodePath("Zombie/Butt/Body/Tie:scale") -tracks/39/interp = 1 -tracks/39/loop_wrap = true -tracks/39/keys = { -"times": PackedFloat32Array(1.75, 2), -"transitions": PackedFloat32Array(1, 1.41421), -"update": 0, -"values": [Vector2(0.999825, 0.999825), Vector2(1, 0.5)] -} - [sub_resource type="AtlasTexture" id="AtlasTexture_wfem3"] atlas = ExtResource("6_xnora") region = Rect2(24, 2, 9, 9) @@ -2700,6 +1731,951 @@ tracks/38/keys = { "values": [0.0] } +[sub_resource type="Animation" id="Animation_vcc72"] +resource_name = "basic_zombie_walk" +length = 1.7 +loop_mode = 1 +tracks/0/type = "value" +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/path = NodePath("Zombie/Butt:position") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 0, +"values": [Vector2(5, -35)] +} +tracks/1/type = "value" +tracks/1/imported = false +tracks/1/enabled = true +tracks/1/path = NodePath("Zombie/Butt:rotation") +tracks/1/interp = 1 +tracks/1/loop_wrap = true +tracks/1/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 0, +"values": [0.0] +} +tracks/2/type = "value" +tracks/2/imported = false +tracks/2/enabled = true +tracks/2/path = NodePath("Zombie/Butt/RightUpperLeg:position") +tracks/2/interp = 1 +tracks/2/loop_wrap = true +tracks/2/keys = { +"times": PackedFloat32Array(0, 0.45, 0.7, 1.1, 1.4), +"transitions": PackedFloat32Array(1, 1, 1, 1, 1), +"update": 0, +"values": [Vector2(-6, 3), Vector2(-6, 3), Vector2(-5, 3), Vector2(-6, 3), Vector2(-6, 4)] +} +tracks/3/type = "value" +tracks/3/imported = false +tracks/3/enabled = true +tracks/3/path = NodePath("Zombie/Butt/RightUpperLeg:rotation") +tracks/3/interp = 1 +tracks/3/loop_wrap = true +tracks/3/keys = { +"times": PackedFloat32Array(0, 0.45, 0.7, 1.1, 1.4), +"transitions": PackedFloat32Array(1, 1, 1, 1, 1), +"update": 0, +"values": [0.0, -0.47976, -0.247472, 0.324581, 0.0887587] +} +tracks/4/type = "value" +tracks/4/imported = false +tracks/4/enabled = true +tracks/4/path = NodePath("Zombie/Butt/RightUpperLeg/RightLowerLeg:position") +tracks/4/interp = 1 +tracks/4/loop_wrap = true +tracks/4/keys = { +"times": PackedFloat32Array(0, 0.45, 0.7), +"transitions": PackedFloat32Array(1, 1, 1), +"update": 0, +"values": [Vector2(-2, 12), Vector2(-1.25072, 12.0201), Vector2(-2.0003, 12.0018)] +} +tracks/5/type = "value" +tracks/5/imported = false +tracks/5/enabled = true +tracks/5/path = NodePath("Zombie/Butt/RightUpperLeg/RightLowerLeg:rotation") +tracks/5/interp = 1 +tracks/5/loop_wrap = true +tracks/5/keys = { +"times": PackedFloat32Array(0, 0.45, 0.7, 1.1, 1.4), +"transitions": PackedFloat32Array(1, 1, 1, 1, 1), +"update": 0, +"values": [0.0, 0.311892, 0.2129, 0.419682, 0.172512] +} +tracks/6/type = "value" +tracks/6/imported = false +tracks/6/enabled = true +tracks/6/path = NodePath("Zombie/Butt/RightUpperLeg/RightLowerLeg/RightFoot:position") +tracks/6/interp = 1 +tracks/6/loop_wrap = true +tracks/6/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 0, +"values": [Vector2(-2, 14)] +} +tracks/7/type = "value" +tracks/7/imported = false +tracks/7/enabled = true +tracks/7/path = NodePath("Zombie/Butt/RightUpperLeg/RightLowerLeg/RightFoot:rotation") +tracks/7/interp = 1 +tracks/7/loop_wrap = true +tracks/7/keys = { +"times": PackedFloat32Array(0, 0.45, 0.7, 1.1, 1.4), +"transitions": PackedFloat32Array(1, 1, 1, 1, 1), +"update": 0, +"values": [0.0, 0.33228, 0.0473635, -0.51797, -0.180295] +} +tracks/8/type = "value" +tracks/8/imported = false +tracks/8/enabled = true +tracks/8/path = NodePath("Zombie/Butt/LeftUpperLeg:position") +tracks/8/interp = 1 +tracks/8/loop_wrap = true +tracks/8/keys = { +"times": PackedFloat32Array(0, 0.45, 0.7), +"transitions": PackedFloat32Array(1, 1, 1), +"update": 0, +"values": [Vector2(6, 4), Vector2(2, 4), Vector2(1, 4)] +} +tracks/9/type = "value" +tracks/9/imported = false +tracks/9/enabled = true +tracks/9/path = NodePath("Zombie/Butt/LeftUpperLeg:rotation") +tracks/9/interp = 1 +tracks/9/loop_wrap = true +tracks/9/keys = { +"times": PackedFloat32Array(0, 0.45, 0.7), +"transitions": PackedFloat32Array(1, 1, 1), +"update": 0, +"values": [0.0, 0.480908, 0.301984] +} +tracks/10/type = "value" +tracks/10/imported = false +tracks/10/enabled = true +tracks/10/path = NodePath("Zombie/Butt/LeftUpperLeg/LeftLowerLeg:position") +tracks/10/interp = 1 +tracks/10/loop_wrap = true +tracks/10/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 0, +"values": [Vector2(-1, 13)] +} +tracks/11/type = "value" +tracks/11/imported = false +tracks/11/enabled = true +tracks/11/path = NodePath("Zombie/Butt/LeftUpperLeg/LeftLowerLeg:rotation") +tracks/11/interp = 1 +tracks/11/loop_wrap = true +tracks/11/keys = { +"times": PackedFloat32Array(0, 0.45, 0.7), +"transitions": PackedFloat32Array(1, 1, 1), +"update": 0, +"values": [0.0, -0.685514, -0.119147] +} +tracks/12/type = "value" +tracks/12/imported = false +tracks/12/enabled = true +tracks/12/path = NodePath("Zombie/Butt/LeftUpperLeg/LeftLowerLeg/LeftFoot:position") +tracks/12/interp = 1 +tracks/12/loop_wrap = true +tracks/12/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 0, +"values": [Vector2(6, 10)] +} +tracks/13/type = "value" +tracks/13/imported = false +tracks/13/enabled = true +tracks/13/path = NodePath("Zombie/Butt/LeftUpperLeg/LeftLowerLeg/LeftFoot:rotation") +tracks/13/interp = 1 +tracks/13/loop_wrap = true +tracks/13/keys = { +"times": PackedFloat32Array(0, 0.45, 0.7), +"transitions": PackedFloat32Array(1, 1, 1), +"update": 0, +"values": [0.0, -0.379644, -0.190368] +} +tracks/14/type = "value" +tracks/14/imported = false +tracks/14/enabled = true +tracks/14/path = NodePath("Zombie/Butt/Body:position") +tracks/14/interp = 1 +tracks/14/loop_wrap = true +tracks/14/keys = { +"times": PackedFloat32Array(0, 1.4), +"transitions": PackedFloat32Array(1, 1), +"update": 0, +"values": [Vector2(1, -2), Vector2(1, -1)] +} +tracks/15/type = "value" +tracks/15/imported = false +tracks/15/enabled = true +tracks/15/path = NodePath("Zombie/Butt/Body:rotation") +tracks/15/interp = 1 +tracks/15/loop_wrap = true +tracks/15/keys = { +"times": PackedFloat32Array(0, 0.45, 0.7, 1.1, 1.4), +"transitions": PackedFloat32Array(1, 1, 1, 1, 1), +"update": 0, +"values": [0.0, 0.131445, -0.0594569, -0.214663, -0.153259] +} +tracks/16/type = "value" +tracks/16/imported = false +tracks/16/enabled = true +tracks/16/path = NodePath("Zombie/Butt/Body/RightUpperArm:position") +tracks/16/interp = 1 +tracks/16/loop_wrap = true +tracks/16/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 0, +"values": [Vector2(-14, -23)] +} +tracks/17/type = "value" +tracks/17/imported = false +tracks/17/enabled = true +tracks/17/path = NodePath("Zombie/Butt/Body/RightUpperArm:rotation") +tracks/17/interp = 1 +tracks/17/loop_wrap = true +tracks/17/keys = { +"times": PackedFloat32Array(0, 0.45, 0.7, 1.1, 1.4), +"transitions": PackedFloat32Array(1, 1, 1, 1, 1), +"update": 0, +"values": [0.0, 0.193101, 0.161051, 0.119452, 0.0341511] +} +tracks/18/type = "value" +tracks/18/imported = false +tracks/18/enabled = true +tracks/18/path = NodePath("Zombie/Butt/Body/RightUpperArm/RightLowerArm:position") +tracks/18/interp = 1 +tracks/18/loop_wrap = true +tracks/18/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 0, +"values": [Vector2(-2, 15)] +} +tracks/19/type = "value" +tracks/19/imported = false +tracks/19/enabled = true +tracks/19/path = NodePath("Zombie/Butt/Body/RightUpperArm/RightLowerArm:rotation") +tracks/19/interp = 1 +tracks/19/loop_wrap = true +tracks/19/keys = { +"times": PackedFloat32Array(0, 0.45, 0.7, 1.1), +"transitions": PackedFloat32Array(1, 1, 1, 1), +"update": 0, +"values": [0.0, 0.237135, -0.0196698, 0.180193] +} +tracks/20/type = "value" +tracks/20/imported = false +tracks/20/enabled = true +tracks/20/path = NodePath("Zombie/Butt/Body/RightUpperArm/RightLowerArm/RightHand:position") +tracks/20/interp = 1 +tracks/20/loop_wrap = true +tracks/20/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 0, +"values": [Vector2(-1, 13)] +} +tracks/21/type = "value" +tracks/21/imported = false +tracks/21/enabled = true +tracks/21/path = NodePath("Zombie/Butt/Body/RightUpperArm/RightLowerArm/RightHand:rotation") +tracks/21/interp = 1 +tracks/21/loop_wrap = true +tracks/21/keys = { +"times": PackedFloat32Array(0, 0.45, 0.7), +"transitions": PackedFloat32Array(1, 1, 1), +"update": 0, +"values": [0.0, 0.17474, 0.0256803] +} +tracks/22/type = "value" +tracks/22/imported = false +tracks/22/enabled = true +tracks/22/path = NodePath("Zombie/Butt/Body/Tie:position") +tracks/22/interp = 1 +tracks/22/loop_wrap = true +tracks/22/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 0, +"values": [Vector2(-9, -21)] +} +tracks/23/type = "value" +tracks/23/imported = false +tracks/23/enabled = true +tracks/23/path = NodePath("Zombie/Butt/Body/Tie:rotation") +tracks/23/interp = 1 +tracks/23/loop_wrap = true +tracks/23/keys = { +"times": PackedFloat32Array(0, 0.45, 1.1), +"transitions": PackedFloat32Array(1, 1, 1), +"update": 0, +"values": [0.0, -0.170849, 0.172666] +} +tracks/24/type = "value" +tracks/24/imported = false +tracks/24/enabled = true +tracks/24/path = NodePath("Zombie/Butt/Body/Head:position") +tracks/24/interp = 1 +tracks/24/loop_wrap = true +tracks/24/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 0, +"values": [Vector2(-10, -25)] +} +tracks/25/type = "value" +tracks/25/imported = false +tracks/25/enabled = true +tracks/25/path = NodePath("Zombie/Butt/Body/Head:rotation") +tracks/25/interp = 1 +tracks/25/loop_wrap = true +tracks/25/keys = { +"times": PackedFloat32Array(0, 1.1), +"transitions": PackedFloat32Array(1, 1), +"update": 0, +"values": [0.0, -0.102364] +} +tracks/26/type = "value" +tracks/26/imported = false +tracks/26/enabled = true +tracks/26/path = NodePath("Zombie/Butt/Body/Head/Jaw:position") +tracks/26/interp = 1 +tracks/26/loop_wrap = true +tracks/26/keys = { +"times": PackedFloat32Array(0, 0.7, 1.1), +"transitions": PackedFloat32Array(1, 1, 1), +"update": 0, +"values": [Vector2(-3, 3), Vector2(-2.66995, 2.20342), Vector2(-3.00212, 2.99641)] +} +tracks/27/type = "value" +tracks/27/imported = false +tracks/27/enabled = true +tracks/27/path = NodePath("Zombie/Butt/Body/Head/Jaw:rotation") +tracks/27/interp = 1 +tracks/27/loop_wrap = true +tracks/27/keys = { +"times": PackedFloat32Array(0, 0.45, 0.7), +"transitions": PackedFloat32Array(1, 1, 1), +"update": 0, +"values": [0.0, -0.119339, 0.0279278] +} +tracks/28/type = "value" +tracks/28/imported = false +tracks/28/enabled = true +tracks/28/path = NodePath("Zombie/Butt/Body/Head/RightEye:position") +tracks/28/interp = 1 +tracks/28/loop_wrap = true +tracks/28/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 0, +"values": [Vector2(-16, -8)] +} +tracks/29/type = "value" +tracks/29/imported = false +tracks/29/enabled = true +tracks/29/path = NodePath("Zombie/Butt/Body/Head/RightEye:rotation") +tracks/29/interp = 1 +tracks/29/loop_wrap = true +tracks/29/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 0, +"values": [0.0] +} +tracks/30/type = "value" +tracks/30/imported = false +tracks/30/enabled = true +tracks/30/path = NodePath("Zombie/Butt/Body/Head/LeftEye:position") +tracks/30/interp = 1 +tracks/30/loop_wrap = true +tracks/30/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 0, +"values": [Vector2(-4, -9)] +} +tracks/31/type = "value" +tracks/31/imported = false +tracks/31/enabled = true +tracks/31/path = NodePath("Zombie/Butt/Body/Head/LeftEye:rotation") +tracks/31/interp = 1 +tracks/31/loop_wrap = true +tracks/31/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 0, +"values": [0.0] +} +tracks/32/type = "value" +tracks/32/imported = false +tracks/32/enabled = true +tracks/32/path = NodePath("Zombie/Butt/Body/LeftUpperArm:position") +tracks/32/interp = 1 +tracks/32/loop_wrap = true +tracks/32/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 0, +"values": [Vector2(-1, -20)] +} +tracks/33/type = "value" +tracks/33/imported = false +tracks/33/enabled = true +tracks/33/path = NodePath("Zombie/Butt/Body/LeftUpperArm:rotation") +tracks/33/interp = 1 +tracks/33/loop_wrap = true +tracks/33/keys = { +"times": PackedFloat32Array(0, 0.45, 1.1, 1.4), +"transitions": PackedFloat32Array(1, 1, 1, 1), +"update": 0, +"values": [0.0, -0.274164, 0.193139, 0.0631989] +} +tracks/34/type = "value" +tracks/34/imported = false +tracks/34/enabled = true +tracks/34/path = NodePath("Zombie/Butt/Body/LeftUpperArm/LeftLowerArm:position") +tracks/34/interp = 1 +tracks/34/loop_wrap = true +tracks/34/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 0, +"values": [Vector2(-2, 14)] +} +tracks/35/type = "value" +tracks/35/imported = false +tracks/35/enabled = true +tracks/35/path = NodePath("Zombie/Butt/Body/LeftUpperArm/LeftLowerArm:rotation") +tracks/35/interp = 1 +tracks/35/loop_wrap = true +tracks/35/keys = { +"times": PackedFloat32Array(0, 0.45, 0.7, 1.1), +"transitions": PackedFloat32Array(1, 1, 1, 1), +"update": 0, +"values": [0.0, -0.181085, 0.105937, 0.162344] +} +tracks/36/type = "value" +tracks/36/imported = false +tracks/36/enabled = true +tracks/36/path = NodePath("Zombie/Butt/Body/LeftUpperArm/LeftLowerArm/LeftHand:position") +tracks/36/interp = 1 +tracks/36/loop_wrap = true +tracks/36/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 0, +"values": [Vector2(-1, 13)] +} +tracks/37/type = "value" +tracks/37/imported = false +tracks/37/enabled = true +tracks/37/path = NodePath("Zombie/Butt/Body/LeftUpperArm/LeftLowerArm/LeftHand:rotation") +tracks/37/interp = 1 +tracks/37/loop_wrap = true +tracks/37/keys = { +"times": PackedFloat32Array(0, 0.45), +"transitions": PackedFloat32Array(1, 1), +"update": 0, +"values": [0.0, -0.149268] +} +tracks/38/type = "value" +tracks/38/imported = false +tracks/38/enabled = true +tracks/38/path = NodePath("../../Mover:_speedControlMult") +tracks/38/interp = 1 +tracks/38/loop_wrap = true +tracks/38/keys = { +"times": PackedFloat32Array(0, 0.450312, 1.7), +"transitions": PackedFloat32Array(1, 1, 1), +"update": 0, +"values": [0.0, 1.0, 0.0] +} + +[sub_resource type="Animation" id="Animation_wn68q"] +resource_name = "dead_lmao" +length = 2.0 +tracks/0/type = "value" +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/path = NodePath("Zombie/Butt:position") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/keys = { +"times": PackedFloat32Array(-0.00833333, 0.85, 1.5, 2), +"transitions": PackedFloat32Array(1.68179, 2, 1, 1), +"update": 0, +"values": [Vector2(5, -35), Vector2(-9, -18), Vector2(-21, -18), Vector2(-22, -9)] +} +tracks/1/type = "value" +tracks/1/imported = false +tracks/1/enabled = true +tracks/1/path = NodePath("Zombie/Butt:rotation") +tracks/1/interp = 1 +tracks/1/loop_wrap = true +tracks/1/keys = { +"times": PackedFloat32Array(-0.00833333, 0.85, 1.5, 2), +"transitions": PackedFloat32Array(1.68179, 2, 1, 1), +"update": 0, +"values": [0.0, 0.0, -0.363399, -1.03478] +} +tracks/2/type = "value" +tracks/2/imported = false +tracks/2/enabled = true +tracks/2/path = NodePath("Zombie/Butt/RightUpperLeg:position") +tracks/2/interp = 1 +tracks/2/loop_wrap = true +tracks/2/keys = { +"times": PackedFloat32Array(-0.00833333), +"transitions": PackedFloat32Array(1), +"update": 0, +"values": [Vector2(-6, 3)] +} +tracks/3/type = "value" +tracks/3/imported = false +tracks/3/enabled = true +tracks/3/path = NodePath("Zombie/Butt/RightUpperLeg:rotation") +tracks/3/interp = 1 +tracks/3/loop_wrap = true +tracks/3/keys = { +"times": PackedFloat32Array(-0.00833333, 1.5, 2), +"transitions": PackedFloat32Array(1, 1, 1), +"update": 0, +"values": [0.0, -0.438888, -0.596673] +} +tracks/4/type = "value" +tracks/4/imported = false +tracks/4/enabled = true +tracks/4/path = NodePath("Zombie/Butt/RightUpperLeg/RightLowerLeg:position") +tracks/4/interp = 1 +tracks/4/loop_wrap = true +tracks/4/keys = { +"times": PackedFloat32Array(-0.00833333), +"transitions": PackedFloat32Array(1), +"update": 0, +"values": [Vector2(-2, 12)] +} +tracks/5/type = "value" +tracks/5/imported = false +tracks/5/enabled = true +tracks/5/path = NodePath("Zombie/Butt/RightUpperLeg/RightLowerLeg:rotation") +tracks/5/interp = 1 +tracks/5/loop_wrap = true +tracks/5/keys = { +"times": PackedFloat32Array(-0.00833333, 0.85, 1.5, 2), +"transitions": PackedFloat32Array(1.68179, 2, 1, 1), +"update": 0, +"values": [0.0, -1.57645, -0.739282, 0.0335003] +} +tracks/6/type = "value" +tracks/6/imported = false +tracks/6/enabled = true +tracks/6/path = NodePath("Zombie/Butt/RightUpperLeg/RightLowerLeg/RightFoot:position") +tracks/6/interp = 1 +tracks/6/loop_wrap = true +tracks/6/keys = { +"times": PackedFloat32Array(-0.00833333), +"transitions": PackedFloat32Array(1), +"update": 0, +"values": [Vector2(-2, 14)] +} +tracks/7/type = "value" +tracks/7/imported = false +tracks/7/enabled = true +tracks/7/path = NodePath("Zombie/Butt/RightUpperLeg/RightLowerLeg/RightFoot:rotation") +tracks/7/interp = 1 +tracks/7/loop_wrap = true +tracks/7/keys = { +"times": PackedFloat32Array(-0.00833333, 1.5), +"transitions": PackedFloat32Array(1, 1), +"update": 0, +"values": [0.0, 0.279912] +} +tracks/8/type = "value" +tracks/8/imported = false +tracks/8/enabled = true +tracks/8/path = NodePath("Zombie/Butt/LeftUpperLeg:position") +tracks/8/interp = 1 +tracks/8/loop_wrap = true +tracks/8/keys = { +"times": PackedFloat32Array(-0.00833333), +"transitions": PackedFloat32Array(1), +"update": 0, +"values": [Vector2(6, 4)] +} +tracks/9/type = "value" +tracks/9/imported = false +tracks/9/enabled = true +tracks/9/path = NodePath("Zombie/Butt/LeftUpperLeg:rotation") +tracks/9/interp = 1 +tracks/9/loop_wrap = true +tracks/9/keys = { +"times": PackedFloat32Array(0, 1.5, 2), +"transitions": PackedFloat32Array(1, 1, 1), +"update": 0, +"values": [0.0, -0.330352, -0.0713271] +} +tracks/10/type = "value" +tracks/10/imported = false +tracks/10/enabled = true +tracks/10/path = NodePath("Zombie/Butt/LeftUpperLeg/LeftLowerLeg:position") +tracks/10/interp = 1 +tracks/10/loop_wrap = true +tracks/10/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 0, +"values": [Vector2(-1, 13)] +} +tracks/11/type = "value" +tracks/11/imported = false +tracks/11/enabled = true +tracks/11/path = NodePath("Zombie/Butt/LeftUpperLeg/LeftLowerLeg:rotation") +tracks/11/interp = 1 +tracks/11/loop_wrap = true +tracks/11/keys = { +"times": PackedFloat32Array(0, 0.85, 1.5, 2), +"transitions": PackedFloat32Array(1.68179, 2, 1, 1), +"update": 0, +"values": [0.0, -1.7825, -0.561999, -0.289205] +} +tracks/12/type = "value" +tracks/12/imported = false +tracks/12/enabled = true +tracks/12/path = NodePath("Zombie/Butt/LeftUpperLeg/LeftLowerLeg/LeftFoot:position") +tracks/12/interp = 1 +tracks/12/loop_wrap = true +tracks/12/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 0, +"values": [Vector2(6, 10)] +} +tracks/13/type = "value" +tracks/13/imported = false +tracks/13/enabled = true +tracks/13/path = NodePath("Zombie/Butt/LeftUpperLeg/LeftLowerLeg/LeftFoot:rotation") +tracks/13/interp = 1 +tracks/13/loop_wrap = true +tracks/13/keys = { +"times": PackedFloat32Array(0, 1.5, 2), +"transitions": PackedFloat32Array(1, 1, 1), +"update": 0, +"values": [0.0, -0.542055, -0.899995] +} +tracks/14/type = "value" +tracks/14/imported = false +tracks/14/enabled = true +tracks/14/path = NodePath("Zombie/Butt/Body:position") +tracks/14/interp = 1 +tracks/14/loop_wrap = true +tracks/14/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 0, +"values": [Vector2(1, -2)] +} +tracks/15/type = "value" +tracks/15/imported = false +tracks/15/enabled = true +tracks/15/path = NodePath("Zombie/Butt/Body:rotation") +tracks/15/interp = 1 +tracks/15/loop_wrap = true +tracks/15/keys = { +"times": PackedFloat32Array(0, 0.85, 1.5, 2), +"transitions": PackedFloat32Array(1.68179, 2, 1, 1), +"update": 0, +"values": [0.0, -0.453494, -0.45522, -0.220732] +} +tracks/16/type = "value" +tracks/16/imported = false +tracks/16/enabled = true +tracks/16/path = NodePath("Zombie/Butt/Body/RightUpperArm:position") +tracks/16/interp = 1 +tracks/16/loop_wrap = true +tracks/16/keys = { +"times": PackedFloat32Array(0, 0.85), +"transitions": PackedFloat32Array(1.68179, 2), +"update": 0, +"values": [Vector2(-14, -23), Vector2(-11.3243, -22.8469)] +} +tracks/17/type = "value" +tracks/17/imported = false +tracks/17/enabled = true +tracks/17/path = NodePath("Zombie/Butt/Body/RightUpperArm:rotation") +tracks/17/interp = 1 +tracks/17/loop_wrap = true +tracks/17/keys = { +"times": PackedFloat32Array(0, 0.85, 2), +"transitions": PackedFloat32Array(1.68179, 2, 1), +"update": 0, +"values": [0.0, 0.204776, -0.10805] +} +tracks/18/type = "value" +tracks/18/imported = false +tracks/18/enabled = true +tracks/18/path = NodePath("Zombie/Butt/Body/RightUpperArm/RightLowerArm:position") +tracks/18/interp = 1 +tracks/18/loop_wrap = true +tracks/18/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 0, +"values": [Vector2(-2, 15)] +} +tracks/19/type = "value" +tracks/19/imported = false +tracks/19/enabled = true +tracks/19/path = NodePath("Zombie/Butt/Body/RightUpperArm/RightLowerArm:rotation") +tracks/19/interp = 1 +tracks/19/loop_wrap = true +tracks/19/keys = { +"times": PackedFloat32Array(0, 0.85, 1.5), +"transitions": PackedFloat32Array(1.68179, 2, 1), +"update": 0, +"values": [0.0, 0.237523, -0.230923] +} +tracks/20/type = "value" +tracks/20/imported = false +tracks/20/enabled = true +tracks/20/path = NodePath("Zombie/Butt/Body/RightUpperArm/RightLowerArm/RightHand:position") +tracks/20/interp = 1 +tracks/20/loop_wrap = true +tracks/20/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 0, +"values": [Vector2(-1, 13)] +} +tracks/21/type = "value" +tracks/21/imported = false +tracks/21/enabled = true +tracks/21/path = NodePath("Zombie/Butt/Body/RightUpperArm/RightLowerArm/RightHand:rotation") +tracks/21/interp = 1 +tracks/21/loop_wrap = true +tracks/21/keys = { +"times": PackedFloat32Array(0, 0.85, 1.5), +"transitions": PackedFloat32Array(1.68179, 2, 1), +"update": 0, +"values": [0.0, 0.270356, 0.0408225] +} +tracks/22/type = "value" +tracks/22/imported = false +tracks/22/enabled = true +tracks/22/path = NodePath("Zombie/Butt/Body/Tie:position") +tracks/22/interp = 1 +tracks/22/loop_wrap = true +tracks/22/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 0, +"values": [Vector2(-9, -21)] +} +tracks/23/type = "value" +tracks/23/imported = false +tracks/23/enabled = true +tracks/23/path = NodePath("Zombie/Butt/Body/Tie:rotation") +tracks/23/interp = 1 +tracks/23/loop_wrap = true +tracks/23/keys = { +"times": PackedFloat32Array(0, 0.5, 0.85, 1.5), +"transitions": PackedFloat32Array(1, 1, 2, 2.07053), +"update": 0, +"values": [0.0, 0.134183, 0.162458, 0.689549] +} +tracks/24/type = "value" +tracks/24/imported = false +tracks/24/enabled = true +tracks/24/path = NodePath("Zombie/Butt/Body/Head/Jaw:position") +tracks/24/interp = 1 +tracks/24/loop_wrap = true +tracks/24/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 0, +"values": [Vector2(-3, 3)] +} +tracks/25/type = "value" +tracks/25/imported = false +tracks/25/enabled = true +tracks/25/path = NodePath("Zombie/Butt/Body/Head/Jaw:rotation") +tracks/25/interp = 1 +tracks/25/loop_wrap = true +tracks/25/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 0, +"values": [0.0] +} +tracks/26/type = "value" +tracks/26/imported = false +tracks/26/enabled = true +tracks/26/path = NodePath("Zombie/Butt/Body/Head/RightEye:position") +tracks/26/interp = 1 +tracks/26/loop_wrap = true +tracks/26/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 0, +"values": [Vector2(-16, -8)] +} +tracks/27/type = "value" +tracks/27/imported = false +tracks/27/enabled = true +tracks/27/path = NodePath("Zombie/Butt/Body/Head/RightEye:rotation") +tracks/27/interp = 1 +tracks/27/loop_wrap = true +tracks/27/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 0, +"values": [0.0] +} +tracks/28/type = "value" +tracks/28/imported = false +tracks/28/enabled = true +tracks/28/path = NodePath("Zombie/Butt/Body/Head/LeftEye:position") +tracks/28/interp = 1 +tracks/28/loop_wrap = true +tracks/28/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 0, +"values": [Vector2(-4, -9)] +} +tracks/29/type = "value" +tracks/29/imported = false +tracks/29/enabled = true +tracks/29/path = NodePath("Zombie/Butt/Body/Head/LeftEye:rotation") +tracks/29/interp = 1 +tracks/29/loop_wrap = true +tracks/29/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 0, +"values": [0.0] +} +tracks/30/type = "value" +tracks/30/imported = false +tracks/30/enabled = true +tracks/30/path = NodePath("Zombie/Butt/Body/LeftUpperArm:position") +tracks/30/interp = 1 +tracks/30/loop_wrap = true +tracks/30/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 0, +"values": [Vector2(-1, -20)] +} +tracks/31/type = "value" +tracks/31/imported = false +tracks/31/enabled = true +tracks/31/path = NodePath("Zombie/Butt/Body/LeftUpperArm:rotation") +tracks/31/interp = 1 +tracks/31/loop_wrap = true +tracks/31/keys = { +"times": PackedFloat32Array(0, 0.85, 1.5, 2), +"transitions": PackedFloat32Array(1.68179, 2, 1, 1), +"update": 0, +"values": [0.0, 0.108056, 0.68476, 1.91294] +} +tracks/32/type = "value" +tracks/32/imported = false +tracks/32/enabled = true +tracks/32/path = NodePath("Zombie/Butt/Body/LeftUpperArm/LeftLowerArm:position") +tracks/32/interp = 1 +tracks/32/loop_wrap = true +tracks/32/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 0, +"values": [Vector2(-2, 14)] +} +tracks/33/type = "value" +tracks/33/imported = false +tracks/33/enabled = true +tracks/33/path = NodePath("Zombie/Butt/Body/LeftUpperArm/LeftLowerArm:rotation") +tracks/33/interp = 1 +tracks/33/loop_wrap = true +tracks/33/keys = { +"times": PackedFloat32Array(0, 0.85, 1.5), +"transitions": PackedFloat32Array(1.68179, 2, 1), +"update": 0, +"values": [0.0, 0.249204, 0.396612] +} +tracks/34/type = "value" +tracks/34/imported = false +tracks/34/enabled = true +tracks/34/path = NodePath("Zombie/Butt/Body/LeftUpperArm/LeftLowerArm/LeftHand:position") +tracks/34/interp = 1 +tracks/34/loop_wrap = true +tracks/34/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 0, +"values": [Vector2(-1, 13)] +} +tracks/35/type = "value" +tracks/35/imported = false +tracks/35/enabled = true +tracks/35/path = NodePath("Zombie/Butt/Body/LeftUpperArm/LeftLowerArm/LeftHand:rotation") +tracks/35/interp = 1 +tracks/35/loop_wrap = true +tracks/35/keys = { +"times": PackedFloat32Array(0, 0.85, 1.5), +"transitions": PackedFloat32Array(1.68179, 2, 1), +"update": 0, +"values": [0.0, 0.228597, 0.28535] +} +tracks/36/type = "value" +tracks/36/imported = false +tracks/36/enabled = true +tracks/36/path = NodePath("Zombie:position") +tracks/36/interp = 1 +tracks/36/loop_wrap = true +tracks/36/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 0, +"values": [Vector2(0, 0)] +} +tracks/37/type = "value" +tracks/37/imported = false +tracks/37/enabled = true +tracks/37/path = NodePath("Zombie:rotation") +tracks/37/interp = 1 +tracks/37/loop_wrap = true +tracks/37/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 0, +"values": [0.0] +} +tracks/38/type = "value" +tracks/38/imported = false +tracks/38/enabled = true +tracks/38/path = NodePath("Zombie/Butt/Body/Tie:scale") +tracks/38/interp = 1 +tracks/38/loop_wrap = true +tracks/38/keys = { +"times": PackedFloat32Array(1.75, 2), +"transitions": PackedFloat32Array(1, 1.41421), +"update": 0, +"values": [Vector2(0.999825, 0.999825), Vector2(1, 0.5)] +} + [sub_resource type="AnimationLibrary" id="AnimationLibrary_x5uj2"] _data = { &"RESET": SubResource("Animation_x5uj2"), @@ -2725,7 +2701,7 @@ size = Vector2(16, 48) [sub_resource type="AnimationNodeTimeScale" id="AnimationNodeTimeScale_2q05d"] [sub_resource type="AnimationNodeBlendTree" id="AnimationNodeBlendTree_ccrjo"] -graph_offset = Vector2(-398, 63) +graph_offset = Vector2(-240, 63) nodes/TimeScale/node = SubResource("AnimationNodeTimeScale_2q05d") nodes/TimeScale/position = Vector2(60, 120) nodes/Tree/node = ExtResource("8_ckb7n") @@ -2735,7 +2711,7 @@ node_connections = [&"TimeScale", 0, &"Tree", &"output", 0, &"TimeScale"] [sub_resource type="Resource" id="Resource_ckb7n"] resource_local_to_scene = true script = ExtResource("7_b3p4o") -flat_value = 0.235 +flat_value = 0.4 percentage_value = 0.0 mult_value = 1.0 @@ -2764,7 +2740,7 @@ modification_stack = SubResource("SkeletonModificationStack2D_wn68q") [node name="Butt" type="Bone2D" parent="CanvasGroup/basic_zombie_walk/Zombie"] position = Vector2(5, -35) -scale = Vector2(0.999912, 0.999912) +scale = Vector2(0.999909, 0.999909) rest = Transform2D(1, 0, 0, 1, 5, -35) editor_settings/show_bone_gizmo = false @@ -2776,7 +2752,7 @@ metadata/_edit_lock_ = true [node name="RightUpperLeg" type="Bone2D" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt"] position = Vector2(-6, 3) -scale = Vector2(0.999831, 0.999831) +scale = Vector2(0.999833, 0.999833) rest = Transform2D(1, 0, 0, 1, -6, 3) editor_settings/show_bone_gizmo = false @@ -2788,13 +2764,13 @@ metadata/_edit_lock_ = true [node name="RightLowerLeg" type="Bone2D" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/RightUpperLeg"] position = Vector2(-2, 12) -scale = Vector2(0.999831, 0.999831) +scale = Vector2(0.999835, 0.999835) rest = Transform2D(1, 0, 0, 1, -2, 12) editor_settings/show_bone_gizmo = false [node name="RightFoot" type="Bone2D" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/RightUpperLeg/RightLowerLeg"] position = Vector2(-2, 14) -scale = Vector2(0.999832, 0.999832) +scale = Vector2(0.999833, 0.999833) rest = Transform2D(1, 0, 0, 1, -2, 14) auto_calculate_length_and_angle = false length = 12.0 @@ -2816,7 +2792,7 @@ metadata/_edit_lock_ = true [node name="LeftUpperLeg" type="Bone2D" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt"] position = Vector2(6, 4) -scale = Vector2(0.99983, 0.99983) +scale = Vector2(0.999833, 0.999833) rest = Transform2D(1, 0, 0, 1, 6, 4) editor_settings/show_bone_gizmo = false @@ -2828,7 +2804,7 @@ metadata/_edit_lock_ = true [node name="LeftLowerLeg" type="Bone2D" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/LeftUpperLeg"] position = Vector2(-1, 13) -scale = Vector2(0.999836, 0.999836) +scale = Vector2(0.999832, 0.999832) rest = Transform2D(1, 0, 0, 1, -1, 13) editor_settings/show_bone_gizmo = false @@ -2840,7 +2816,7 @@ metadata/_edit_lock_ = true [node name="LeftFoot" type="Bone2D" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/LeftUpperLeg/LeftLowerLeg"] position = Vector2(6, 10) -scale = Vector2(0.999828, 0.999828) +scale = Vector2(0.999834, 0.999834) rest = Transform2D(1, 0, 0, 1, 6, 10) auto_calculate_length_and_angle = false length = 12.0 @@ -2855,14 +2831,14 @@ metadata/_edit_lock_ = true [node name="Body" type="Bone2D" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt"] position = Vector2(1, -2) -scale = Vector2(0.999829, 0.999829) +scale = Vector2(0.999834, 0.999834) rest = Transform2D(1, 0, 0, 1, 1, -2) editor_settings/show_bone_gizmo = false [node name="RightUpperArm" type="Bone2D" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body"] z_index = -1 position = Vector2(-14, -23) -scale = Vector2(0.999826, 0.999826) +scale = Vector2(0.999829, 0.999829) rest = Transform2D(1, 0, 0, 1, -14, -23) editor_settings/show_bone_gizmo = false @@ -2874,7 +2850,7 @@ metadata/_edit_lock_ = true [node name="RightLowerArm" type="Bone2D" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/RightUpperArm"] position = Vector2(-2, 15) -scale = Vector2(0.999828, 0.999828) +scale = Vector2(0.999827, 0.999827) rest = Transform2D(1, 0, 0, 1, -2, 15) editor_settings/show_bone_gizmo = false @@ -2908,7 +2884,7 @@ metadata/_edit_lock_ = true [node name="Tie" type="Bone2D" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body"] position = Vector2(-9, -21) -skew = -7.43866e-05 +skew = -0.0001266 rest = Transform2D(1, 0, 0, 1, -9, -21) auto_calculate_length_and_angle = false length = 24.0 @@ -2923,7 +2899,7 @@ metadata/_edit_lock_ = true [node name="Head" type="Bone2D" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body"] position = Vector2(-10, -25) -scale = Vector2(0.999829, 0.999829) +scale = Vector2(0.999826, 0.999826) rest = Transform2D(1, 0, 0, 1, -10, -25) editor_settings/show_bone_gizmo = false @@ -2935,7 +2911,7 @@ metadata/_edit_lock_ = true [node name="Jaw" type="Bone2D" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/Head"] position = Vector2(-3, 3) -scale = Vector2(0.999828, 0.999828) +scale = Vector2(0.99983, 0.99983) rest = Transform2D(1, 0, 0, 1, -3, 3) auto_calculate_length_and_angle = false length = 11.0 @@ -2991,13 +2967,13 @@ metadata/_edit_lock_ = true [node name="LeftLowerArm" type="Bone2D" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/LeftUpperArm"] position = Vector2(-2, 14) -scale = Vector2(0.999828, 0.999828) +scale = Vector2(0.999825, 0.999825) rest = Transform2D(1, 0, 0, 1, -2, 14) editor_settings/show_bone_gizmo = false [node name="LeftHand" type="Bone2D" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/LeftUpperArm/LeftLowerArm"] position = Vector2(-1, 13) -scale = Vector2(0.999826, 0.999826) +scale = Vector2(0.999824, 0.999824) rest = Transform2D(1, 0, 0, 1, -1, 13) auto_calculate_length_and_angle = false length = 6.0 diff --git a/scenes/entities/plants/aloe.tscn b/scenes/entities/plants/aloe.tscn index 4aeb856..af96d9d 100644 --- a/scenes/entities/plants/aloe.tscn +++ b/scenes/entities/plants/aloe.tscn @@ -3,8 +3,8 @@ [ext_resource type="PackedScene" uid="uid://b1hjjbdwf1rtc" path="res://scenes/templates/plant_template.tscn" id="1_n25yi"] [ext_resource type="Texture2D" uid="uid://b6tyoa5htapir" path="res://assets/sprites/atlases/plants/aloe.png" id="2_iup5p"] [ext_resource type="AnimationLibrary" uid="uid://bgutjc3ruq27s" path="res://resources/animations/plants/aloe.res" id="3_3sp3b"] -[ext_resource type="Script" uid="uid://cljytsmqac0w7" path="res://scripts/components/plants/behaviours/AloeBehaviour.cs" id="4_55asm"] -[ext_resource type="Script" uid="uid://c4jy0cnbnx33h" path="res://scripts/components/TimeScalableTimer.cs" id="5_gfy6j"] +[ext_resource type="Script" uid="uid://cljytsmqac0w7" path="res://scripts/plants/behaviours/AloeBehaviour.cs" id="4_55asm"] +[ext_resource type="Script" uid="uid://c4jy0cnbnx33h" path="res://scripts/TimeScalableTimer.cs" id="5_gfy6j"] [sub_resource type="Animation" id="Animation_vknky"] length = 0.001 diff --git a/scenes/entities/plants/garlic.tscn b/scenes/entities/plants/garlic.tscn index 46bea8a..7665461 100644 --- a/scenes/entities/plants/garlic.tscn +++ b/scenes/entities/plants/garlic.tscn @@ -3,8 +3,8 @@ [ext_resource type="PackedScene" uid="uid://b1hjjbdwf1rtc" path="res://scenes/templates/plant_template.tscn" id="1_5i0e6"] [ext_resource type="Texture2D" uid="uid://dff73m8ahamaa" path="res://assets/sprites/atlases/plants/garlic.png" id="2_w2jbi"] [ext_resource type="AnimationLibrary" uid="uid://cjl81f61gdlvi" path="res://resources/animations/plants/garlic.res" id="3_jkb3q"] -[ext_resource type="Script" uid="uid://btkmd86pn828y" path="res://scripts/components/plants/behaviours/HpBasedBehaviour.cs" id="4_bv44h"] -[ext_resource type="Script" uid="uid://bmtukcq10m8wo" path="res://scripts/components/plants/ReturnEffect.cs" id="5_oob20"] +[ext_resource type="Script" uid="uid://btkmd86pn828y" path="res://scripts/plants/behaviours/HpBasedBehaviour.cs" id="4_bv44h"] +[ext_resource type="Script" uid="uid://bmtukcq10m8wo" path="res://scripts/plants/ReturnEffect.cs" id="5_oob20"] [ext_resource type="Resource" uid="uid://dsg1vjx76ifgu" path="res://resources/effects/GarlicEffect.tres" id="6_gho1l"] [sub_resource type="Animation" id="Animation_k0cex"] diff --git a/scenes/entities/plants/peashooter.tscn b/scenes/entities/plants/peashooter.tscn index 853fb21..ef8888c 100644 --- a/scenes/entities/plants/peashooter.tscn +++ b/scenes/entities/plants/peashooter.tscn @@ -3,12 +3,12 @@ [ext_resource type="PackedScene" uid="uid://b1hjjbdwf1rtc" path="res://scenes/templates/plant_template.tscn" id="1_pyk3o"] [ext_resource type="Texture2D" uid="uid://cksryh4w5dbbx" path="res://assets/sprites/atlases/plants/peashooter.png" id="2_14qlx"] [ext_resource type="AnimationLibrary" uid="uid://bv1dl1g4dmbho" path="res://resources/animations/plants/peashooter.res" id="3_8lrhp"] -[ext_resource type="Script" uid="uid://ceprqkraw3v6m" path="res://scripts/components/plants/Shooter.cs" id="3_a4ew1"] +[ext_resource type="Script" uid="uid://ceprqkraw3v6m" path="res://scripts/plants/Shooter.cs" id="3_a4ew1"] [ext_resource type="PackedScene" uid="uid://b2hrv0aqbui7u" path="res://scenes/projectiles/pea.tscn" id="4_saxds"] -[ext_resource type="Script" uid="uid://bdk5iqtw4xbkl" path="res://scripts/components/plants/behaviours/PeashooterBehaviour.cs" id="5_7qiua"] -[ext_resource type="Script" uid="uid://c4jy0cnbnx33h" path="res://scripts/components/TimeScalableTimer.cs" id="6_q58jr"] -[ext_resource type="Script" uid="uid://dn53jvpjyg63l" path="res://scripts/components/plants/Eyesight.cs" id="7_2bki8"] -[ext_resource type="Script" uid="uid://hccb0aee0x0o" path="res://scripts/components/plants/PlantEyesightLimiter.cs" id="8_nl4jc"] +[ext_resource type="Script" uid="uid://bdk5iqtw4xbkl" path="res://scripts/plants/behaviours/PeashooterBehaviour.cs" id="5_7qiua"] +[ext_resource type="Script" uid="uid://c4jy0cnbnx33h" path="res://scripts/TimeScalableTimer.cs" id="6_q58jr"] +[ext_resource type="Script" uid="uid://dn53jvpjyg63l" path="res://scripts/plants/Eyesight.cs" id="7_2bki8"] +[ext_resource type="Script" uid="uid://hccb0aee0x0o" path="res://scripts/plants/PlantEyesightLimiter.cs" id="8_nl4jc"] [ext_resource type="Script" uid="uid://c36bj8u7jghc7" path="res://scripts/audio/ChannelPlayer.cs" id="9_mbbd7"] [ext_resource type="AudioStream" uid="uid://dsv81mvrdg3w3" path="res://assets/audio/sfx/throw_generic.tres" id="10_q58jr"] diff --git a/scenes/entities/plants/potato_mine.tscn b/scenes/entities/plants/potato_mine.tscn index c3cf489..d7d3e1f 100644 --- a/scenes/entities/plants/potato_mine.tscn +++ b/scenes/entities/plants/potato_mine.tscn @@ -2,13 +2,13 @@ [ext_resource type="PackedScene" uid="uid://b1hjjbdwf1rtc" path="res://scenes/templates/plant_template.tscn" id="1_dj7ul"] [ext_resource type="Texture2D" uid="uid://c77o6ba0mw7a3" path="res://assets/sprites/atlases/plants/potato_mine.png" id="2_sneas"] -[ext_resource type="Script" uid="uid://bhl6o2m3fn4xg" path="res://scripts/components/plants/ExplosionComponent.cs" id="3_2hd5y"] +[ext_resource type="Script" uid="uid://bhl6o2m3fn4xg" path="res://scripts/plants/ExplosionComponent.cs" id="3_2hd5y"] [ext_resource type="AnimationLibrary" uid="uid://bjlbdvr6f0r7e" path="res://resources/animations/plants/potato_mine.res" id="3_7tqmj"] -[ext_resource type="Script" uid="uid://c7qfh4py0uulo" path="res://scripts/components/plants/behaviours/PotatomineBehaviour.cs" id="4_twx65"] +[ext_resource type="Script" uid="uid://c7qfh4py0uulo" path="res://scripts/plants/behaviours/PotatomineBehaviour.cs" id="4_twx65"] [ext_resource type="PackedScene" uid="uid://ckanq33rao1ur" path="res://scenes/particles/potato_explosion.tscn" id="5_px4r0"] [ext_resource type="Script" uid="uid://c36bj8u7jghc7" path="res://scripts/audio/ChannelPlayer.cs" id="7_b1j2f"] [ext_resource type="AudioStream" uid="uid://dltjtpyfr1so0" path="res://assets/audio/sfx/potato_mine.mp3" id="8_3vqdc"] -[ext_resource type="Script" uid="uid://c4jy0cnbnx33h" path="res://scripts/components/TimeScalableTimer.cs" id="8_824aq"] +[ext_resource type="Script" uid="uid://c4jy0cnbnx33h" path="res://scripts/TimeScalableTimer.cs" id="8_824aq"] [ext_resource type="AudioStream" uid="uid://b27om1bw1x04e" path="res://assets/audio/sfx/dirt_rise.mp3" id="9_3vqdc"] [sub_resource type="AnimationNodeTimeScale" id="AnimationNodeTimeScale_3vqdc"] diff --git a/scenes/entities/plants/spikeweed.tscn b/scenes/entities/plants/spikeweed.tscn index 6c669a8..76f5221 100644 --- a/scenes/entities/plants/spikeweed.tscn +++ b/scenes/entities/plants/spikeweed.tscn @@ -2,9 +2,9 @@ [ext_resource type="PackedScene" uid="uid://b1hjjbdwf1rtc" path="res://scenes/templates/plant_template.tscn" id="1_vmbvr"] [ext_resource type="Texture2D" uid="uid://coafh3mjharxo" path="res://assets/sprites/atlases/plants/spikeweed.png" id="2_ffrjr"] -[ext_resource type="Script" uid="uid://co7ttejdo2qot" path="res://scripts/components/plants/AreaAttack.cs" id="3_hqtbm"] +[ext_resource type="Script" uid="uid://co7ttejdo2qot" path="res://scripts/plants/AreaAttack.cs" id="3_hqtbm"] [ext_resource type="AnimationLibrary" uid="uid://cen6ku4y01dyg" path="res://resources/animations/plants/spikeweed.res" id="3_nwshn"] -[ext_resource type="Script" uid="uid://dqquodxaijmem" path="res://scripts/components/plants/behaviours/SpikeweedBehaviour.cs" id="3_uhpn7"] +[ext_resource type="Script" uid="uid://dqquodxaijmem" path="res://scripts/plants/behaviours/SpikeweedBehaviour.cs" id="3_uhpn7"] [sub_resource type="AnimationNodeTimeScale" id="AnimationNodeTimeScale_jleqa"] diff --git a/scenes/entities/plants/sunflower.tscn b/scenes/entities/plants/sunflower.tscn index 967f77c..528f936 100644 --- a/scenes/entities/plants/sunflower.tscn +++ b/scenes/entities/plants/sunflower.tscn @@ -3,10 +3,10 @@ [ext_resource type="PackedScene" uid="uid://b1hjjbdwf1rtc" path="res://scenes/templates/plant_template.tscn" id="1_bikjn"] [ext_resource type="Texture2D" uid="uid://b3tuidu8dag8u" path="res://assets/sprites/atlases/plants/sunflower.png" id="2_fwcda"] [ext_resource type="AnimationLibrary" uid="uid://yjytiuj4u7oh" path="res://resources/animations/plants/sunflower.res" id="3_btsik"] -[ext_resource type="Script" uid="uid://b71gebny84s81" path="res://scripts/components/plants/PlantSunSpawner.cs" id="3_te0pl"] +[ext_resource type="Script" uid="uid://b71gebny84s81" path="res://scripts/plants/PlantSunSpawner.cs" id="3_te0pl"] [ext_resource type="PackedScene" uid="uid://bpekho7leatr5" path="res://scenes/sun.tscn" id="4_b8hls"] -[ext_resource type="Script" uid="uid://bth7gah4tn7uj" path="res://scripts/components/plants/behaviours/SunflowerBehaviour.cs" id="5_26je0"] -[ext_resource type="Script" uid="uid://c4jy0cnbnx33h" path="res://scripts/components/TimeScalableTimer.cs" id="7_rlkb7"] +[ext_resource type="Script" uid="uid://bth7gah4tn7uj" path="res://scripts/plants/behaviours/SunflowerBehaviour.cs" id="5_26je0"] +[ext_resource type="Script" uid="uid://c4jy0cnbnx33h" path="res://scripts/TimeScalableTimer.cs" id="7_rlkb7"] [sub_resource type="Animation" id="Animation_bfx6v"] length = 0.001 diff --git a/scenes/entities/plants/threepeater.tscn b/scenes/entities/plants/threepeater.tscn index bae2cac..e297737 100644 --- a/scenes/entities/plants/threepeater.tscn +++ b/scenes/entities/plants/threepeater.tscn @@ -1,9 +1,9 @@ [gd_scene load_steps=20 format=3 uid="uid://eegv1qihfv2q"] [ext_resource type="PackedScene" uid="uid://dy41q1kxray5t" path="res://scenes/entities/plants/peashooter.tscn" id="1_muntu"] -[ext_resource type="Script" uid="uid://djpc0kvagpadv" path="res://scripts/components/plants/ThreepeaterShooter.cs" id="2_ieami"] +[ext_resource type="Script" uid="uid://djpc0kvagpadv" path="res://scripts/plants/ThreepeaterShooter.cs" id="2_ieami"] [ext_resource type="Texture2D" uid="uid://dyfa4462hu3w1" path="res://assets/sprites/atlases/plants/threepeater.png" id="2_j7h7q"] -[ext_resource type="Script" uid="uid://hccb0aee0x0o" path="res://scripts/components/plants/PlantEyesightLimiter.cs" id="3_dqn6w"] +[ext_resource type="Script" uid="uid://hccb0aee0x0o" path="res://scripts/plants/PlantEyesightLimiter.cs" id="3_dqn6w"] [sub_resource type="Animation" id="Animation_a2y0j"] length = 0.001 diff --git a/scenes/entities/plants/wallnut.tscn b/scenes/entities/plants/wallnut.tscn index 76e6f40..ff7daaa 100644 --- a/scenes/entities/plants/wallnut.tscn +++ b/scenes/entities/plants/wallnut.tscn @@ -3,7 +3,7 @@ [ext_resource type="PackedScene" uid="uid://b1hjjbdwf1rtc" path="res://scenes/templates/plant_template.tscn" id="1_fluxn"] [ext_resource type="Texture2D" uid="uid://dstqh1wc5dvmo" path="res://assets/sprites/atlases/plants/wallnut.png" id="2_o5tda"] [ext_resource type="AnimationLibrary" uid="uid://0bdesb8j2mbo" path="res://resources/animations/plants/wallnut.res" id="3_xl65q"] -[ext_resource type="Script" uid="uid://btkmd86pn828y" path="res://scripts/components/plants/behaviours/HpBasedBehaviour.cs" id="4_cjtyy"] +[ext_resource type="Script" uid="uid://btkmd86pn828y" path="res://scripts/plants/behaviours/HpBasedBehaviour.cs" id="4_cjtyy"] [sub_resource type="AnimationNodeTimeScale" id="AnimationNodeTimeScale_y3tlf"] diff --git a/scenes/gui/almanach.tscn b/scenes/gui/almanach.tscn index f0b6f7c..fac81f3 100644 --- a/scenes/gui/almanach.tscn +++ b/scenes/gui/almanach.tscn @@ -2,8 +2,8 @@ [ext_resource type="Texture2D" uid="uid://dr8a0rx42o3qy" path="res://assets/sprites/gui/ChooseYourSeeds/PlantFrame.tres" id="1_1hnxi"] [ext_resource type="Script" uid="uid://bs1qywtqijyd2" path="res://scenes/gui/almanach.gd" id="1_oy57w"] -[ext_resource type="Script" uid="uid://0mvmfvwe1bc7" path="res://scripts/components/gui/almanach/AlmanachGrid.cs" id="1_ru62c"] -[ext_resource type="Script" uid="uid://covbig00p22di" path="res://scripts/components/gui/choose_your_seeds/Previewport.cs" id="2_ru62c"] +[ext_resource type="Script" uid="uid://0mvmfvwe1bc7" path="res://scripts/gui/almanach/AlmanachGrid.cs" id="1_ru62c"] +[ext_resource type="Script" uid="uid://covbig00p22di" path="res://scripts/gui/choose_your_seeds/Previewport.cs" id="2_ru62c"] [ext_resource type="Texture2D" uid="uid://dycdvvgmgmfu6" path="res://assets/sprites/gui/ChooseYourSeeds/FrameField.tres" id="3_oy57w"] [ext_resource type="Script" uid="uid://c36bj8u7jghc7" path="res://scripts/audio/ChannelPlayer.cs" id="6_7vo1l"] [ext_resource type="AudioStream" uid="uid://bdx83fokp6kha" path="res://assets/audio/sfx/buttonclick.mp3" id="7_vvhxq"] diff --git a/scenes/gui/choose_your_seeds.tscn b/scenes/gui/choose_your_seeds.tscn index 3f14c76..58e95d8 100644 --- a/scenes/gui/choose_your_seeds.tscn +++ b/scenes/gui/choose_your_seeds.tscn @@ -2,11 +2,11 @@ [ext_resource type="Theme" uid="uid://e8n88g31w7x7" path="res://resources/themes/ChooseYourSeeds.tres" id="1_bfo8i"] [ext_resource type="Texture2D" uid="uid://dr8a0rx42o3qy" path="res://assets/sprites/gui/ChooseYourSeeds/PlantFrame.tres" id="2_so2bw"] -[ext_resource type="Script" uid="uid://covbig00p22di" path="res://scripts/components/gui/choose_your_seeds/Previewport.cs" id="3_fmc0y"] +[ext_resource type="Script" uid="uid://covbig00p22di" path="res://scripts/gui/choose_your_seeds/Previewport.cs" id="3_fmc0y"] [ext_resource type="Texture2D" uid="uid://dycdvvgmgmfu6" path="res://assets/sprites/gui/ChooseYourSeeds/FrameField.tres" id="3_rn5vx"] -[ext_resource type="Script" uid="uid://eq3ecja30mlj" path="res://scripts/components/gui/choose_your_seeds/GridLoader.cs" id="4_i7sou"] +[ext_resource type="Script" uid="uid://eq3ecja30mlj" path="res://scripts/gui/choose_your_seeds/GridLoader.cs" id="4_i7sou"] [ext_resource type="PackedScene" uid="uid://10b1egek6upx" path="res://scenes/gui/level_run_button.tscn" id="5_n80ic"] -[ext_resource type="Script" uid="uid://d26waisd3v488" path="res://scripts/components/gui/choose_your_seeds/LevelRunButton.cs" id="7_k6b6g"] +[ext_resource type="Script" uid="uid://d26waisd3v488" path="res://scripts/gui/choose_your_seeds/LevelRunButton.cs" id="7_k6b6g"] [ext_resource type="Texture2D" uid="uid://drydueofrb448" path="res://assets/sprites/gui/almanach/book.tres" id="8_hmdmm"] [ext_resource type="Script" uid="uid://c36bj8u7jghc7" path="res://scripts/audio/ChannelPlayer.cs" id="8_v7xff"] [ext_resource type="AudioStream" uid="uid://bdx83fokp6kha" path="res://assets/audio/sfx/buttonclick.mp3" id="9_v7xff"] diff --git a/scenes/gui/fast_forward_button.tscn b/scenes/gui/fast_forward_button.tscn index 1ea4282..3632a2f 100644 --- a/scenes/gui/fast_forward_button.tscn +++ b/scenes/gui/fast_forward_button.tscn @@ -1,7 +1,7 @@ [gd_scene load_steps=5 format=3 uid="uid://cgm7td1hgs0rr"] [ext_resource type="Texture2D" uid="uid://bjsar1x67xk1t" path="res://assets/sprites/gui/FastForward1.tres" id="1_ta3h7"] -[ext_resource type="Script" path="res://scripts/components/gui/FastForwardButton.cs" id="2_wle4k"] +[ext_resource type="Script" uid="uid://cwn3bd2k7mdq6" path="res://scripts/gui/FastForwardButton.cs" id="2_wle4k"] [ext_resource type="Texture2D" uid="uid://dfr5ofieigu5j" path="res://assets/sprites/gui/FastForward2.tres" id="3_fj838"] [ext_resource type="Texture2D" uid="uid://qgmsoocd4p1o" path="res://assets/sprites/gui/FastForward3.tres" id="4_2wmv1"] diff --git a/scenes/gui/pause_button.tscn b/scenes/gui/pause_button.tscn index 3006d62..154291c 100644 --- a/scenes/gui/pause_button.tscn +++ b/scenes/gui/pause_button.tscn @@ -1,7 +1,7 @@ [gd_scene load_steps=3 format=3 uid="uid://u5l3jd00s8vd"] [ext_resource type="Texture2D" uid="uid://dm0hjd67a6mva" path="res://assets/sprites/gui/Pause.tres" id="1_7k3tg"] -[ext_resource type="Script" uid="uid://cmfhiun6yrlr6" path="res://scripts/components/gui/PauseButton.cs" id="2_01o3l"] +[ext_resource type="Script" uid="uid://cmfhiun6yrlr6" path="res://scripts/gui/PauseButton.cs" id="2_01o3l"] [node name="PauseButton" type="Button"] anchors_preset = -1 diff --git a/scenes/gui/pause_menu.tscn b/scenes/gui/pause_menu.tscn index 94787ed..9527214 100644 --- a/scenes/gui/pause_menu.tscn +++ b/scenes/gui/pause_menu.tscn @@ -1,7 +1,7 @@ [gd_scene load_steps=11 format=3 uid="uid://fm471x22n8kr"] [ext_resource type="Texture2D" uid="uid://dvldjlg0nr355" path="res://assets/sprites/atlases/atlas1.png" id="1_loim0"] -[ext_resource type="Script" uid="uid://gvwhpjoame6m" path="res://scripts/components/gui/PauseMenu.cs" id="2_4vp8g"] +[ext_resource type="Script" uid="uid://gvwhpjoame6m" path="res://scripts/gui/PauseMenu.cs" id="2_4vp8g"] [ext_resource type="Script" uid="uid://c36bj8u7jghc7" path="res://scripts/audio/ChannelPlayer.cs" id="3_4vp8g"] [ext_resource type="Script" uid="uid://ciccaxqo70s13" path="res://scripts/audio/AudioSlider.cs" id="3_e3p60"] [ext_resource type="AudioStream" uid="uid://bdx83fokp6kha" path="res://assets/audio/sfx/buttonclick.mp3" id="4_e3p60"] diff --git a/scenes/gui/runtime_gui.tscn b/scenes/gui/runtime_gui.tscn index fe6a0f6..6e7a522 100644 --- a/scenes/gui/runtime_gui.tscn +++ b/scenes/gui/runtime_gui.tscn @@ -2,7 +2,7 @@ [ext_resource type="PackedScene" uid="uid://ky35veswaytr" path="res://scenes/gui/sun_counter.tscn" id="1_le3od"] [ext_resource type="Theme" uid="uid://b8l285cjcgeyi" path="res://resources/themes/GameStyle.tres" id="1_xf6ra"] -[ext_resource type="Script" uid="uid://cwa1eydeiy3y4" path="res://scripts/components/LevelGUIElements.cs" id="2_5fonq"] +[ext_resource type="Script" uid="uid://cwa1eydeiy3y4" path="res://scripts/LevelGUIElements.cs" id="2_5fonq"] [ext_resource type="Texture2D" uid="uid://bbh0uwloi87tn" path="res://assets/sprites/gui/PlantPanel.png" id="2_eg3hk"] [ext_resource type="PackedScene" uid="uid://t0vpmycj6c8j" path="res://scenes/gui/shovel_button.tscn" id="3_bheea"] [ext_resource type="PackedScene" uid="uid://cgm7td1hgs0rr" path="res://scenes/gui/fast_forward_button.tscn" id="4_66uy4"] diff --git a/scenes/gui/seedpacket.tscn b/scenes/gui/seedpacket.tscn index 27e651b..412f5eb 100644 --- a/scenes/gui/seedpacket.tscn +++ b/scenes/gui/seedpacket.tscn @@ -2,10 +2,10 @@ [ext_resource type="Texture2D" uid="uid://dxyf557m4mq1p" path="res://assets/sprites/gui/EmptyPlantCard.png" id="1_77bw1"] [ext_resource type="Texture2D" uid="uid://cabpf23ndlvx0" path="res://assets/sprites/gui/Selection.tres" id="3_q0tvq"] -[ext_resource type="Script" uid="uid://cn6ddajdtf4ep" path="res://scripts/components/gui/seedpackets/Seedpacket.cs" id="4_c6epd"] +[ext_resource type="Script" uid="uid://cn6ddajdtf4ep" path="res://scripts/gui/seedpackets/Seedpacket.cs" id="4_c6epd"] [ext_resource type="Shader" uid="uid://dcp5tqcec2oi3" path="res://assets/shaders/gui_masking.gdshader" id="5_s5861"] [ext_resource type="Texture2D" uid="uid://c1afy0ga6h1ic" path="res://assets/sprites/white_box.png" id="6_lp42h"] -[ext_resource type="Script" uid="uid://ddi84kmmq1qla" path="res://scripts/components/gui/VeilResizer.cs" id="7_tv07f"] +[ext_resource type="Script" uid="uid://ddi84kmmq1qla" path="res://scripts/gui/VeilResizer.cs" id="7_tv07f"] [sub_resource type="LabelSettings" id="LabelSettings_js4li"] resource_local_to_scene = true diff --git a/scenes/gui/shovel_button.tscn b/scenes/gui/shovel_button.tscn index 0592d5f..9f81c76 100644 --- a/scenes/gui/shovel_button.tscn +++ b/scenes/gui/shovel_button.tscn @@ -2,7 +2,7 @@ [ext_resource type="Texture2D" uid="uid://cw73vihkrfenc" path="res://assets/sprites/gui/Shovel.tres" id="1_46afk"] [ext_resource type="Texture2D" uid="uid://fd6drk2su0df" path="res://assets/sprites/gui/EmptyShovel.tres" id="2_pw2pj"] -[ext_resource type="Script" path="res://scripts/components/gui/ShovelButton.cs" id="3_u6gir"] +[ext_resource type="Script" uid="uid://d4dbg0us5ngxy" path="res://scripts/gui/ShovelButton.cs" id="3_u6gir"] [node name="ShovelButton" type="TextureButton"] anchors_preset = -1 diff --git a/scenes/gui/sun_counter.tscn b/scenes/gui/sun_counter.tscn index c22cf10..3a856a7 100644 --- a/scenes/gui/sun_counter.tscn +++ b/scenes/gui/sun_counter.tscn @@ -3,8 +3,8 @@ [ext_resource type="Texture2D" uid="uid://bhp3vuvwf7lak" path="res://assets/sprites/gui/suncounter.tres" id="1_e5x4k"] [ext_resource type="Theme" uid="uid://b8l285cjcgeyi" path="res://resources/themes/GameStyle.tres" id="1_vhhcn"] [ext_resource type="Texture2D" uid="uid://c47rflkf2wap0" path="res://assets/sprites/sun.tres" id="2_gugre"] -[ext_resource type="Script" uid="uid://dwxohya1exdkh" path="res://scripts/components/gui/SunCounter.cs" id="3_qhmb8"] -[ext_resource type="Script" uid="uid://0ekxnoq6cyt4" path="res://scripts/components/gui/SunCounterImage.cs" id="4_c68ge"] +[ext_resource type="Script" uid="uid://dwxohya1exdkh" path="res://scripts/gui/SunCounter.cs" id="3_qhmb8"] +[ext_resource type="Script" uid="uid://0ekxnoq6cyt4" path="res://scripts/gui/SunCounterImage.cs" id="4_c68ge"] [sub_resource type="LabelSettings" id="LabelSettings_lxkq5"] font_size = 10 diff --git a/scenes/level components/field_controller.tscn b/scenes/level components/field_controller.tscn index fb618b5..761ef55 100644 --- a/scenes/level components/field_controller.tscn +++ b/scenes/level components/field_controller.tscn @@ -1,7 +1,7 @@ [gd_scene load_steps=7 format=3 uid="uid://devn21c7luf45"] [ext_resource type="Shader" uid="uid://mt7vheq5modk" path="res://assets/shaders/greyscale.gdshader" id="1_d73yj"] -[ext_resource type="Script" uid="uid://bj7rw2f6qu1lg" path="res://scripts/components/level/PlantField.cs" id="2_84bqh"] +[ext_resource type="Script" uid="uid://bj7rw2f6qu1lg" path="res://scripts/level/PlantField.cs" id="2_84bqh"] [ext_resource type="PackedScene" uid="uid://b4lx8adw6rbqs" path="res://scenes/particles/dirt_explosion.tscn" id="3_ddnu6"] [ext_resource type="Script" uid="uid://c36bj8u7jghc7" path="res://scripts/audio/ChannelPlayer.cs" id="4_w40vd"] [ext_resource type="AudioStream" uid="uid://ciepttpel6dxb" path="res://assets/audio/gui/plant_generic.tres" id="5_2x1ty"] diff --git a/scenes/level components/left_boundary_marker.tscn b/scenes/level components/left_boundary_marker.tscn index 8d32bbd..a422037 100644 --- a/scenes/level components/left_boundary_marker.tscn +++ b/scenes/level components/left_boundary_marker.tscn @@ -1,6 +1,6 @@ [gd_scene load_steps=2 format=3 uid="uid://plc2gus4ppds"] -[ext_resource type="Script" uid="uid://d2dq6f0bk7pfx" path="res://scripts/components/level/LeftBoundaryMarker.cs" id="1_q4xoc"] +[ext_resource type="Script" uid="uid://d2dq6f0bk7pfx" path="res://scripts/level/LeftBoundaryMarker.cs" id="1_q4xoc"] [node name="LeftBoundaryMarker" type="Marker2D"] script = ExtResource("1_q4xoc") diff --git a/scenes/level components/pools.tscn b/scenes/level components/pools.tscn index 8628f2a..2bc2d59 100644 --- a/scenes/level components/pools.tscn +++ b/scenes/level components/pools.tscn @@ -1,6 +1,6 @@ [gd_scene load_steps=2 format=3 uid="uid://cg8713v6c5w15"] -[ext_resource type="Script" uid="uid://bso32xkw738sy" path="res://scripts/components/level/PoolContainer.cs" id="1_31ggc"] +[ext_resource type="Script" uid="uid://bso32xkw738sy" path="res://scripts/level/PoolContainer.cs" id="1_31ggc"] [node name="Pools" type="Node2D" node_paths=PackedStringArray("Zombies", "Plants", "Projectiles", "Structures", "Particles")] script = ExtResource("1_31ggc") diff --git a/scenes/level components/right_boundary_marker.tscn b/scenes/level components/right_boundary_marker.tscn index 72bc133..ed4b5a8 100644 --- a/scenes/level components/right_boundary_marker.tscn +++ b/scenes/level components/right_boundary_marker.tscn @@ -1,6 +1,6 @@ [gd_scene load_steps=2 format=3 uid="uid://jm7wm08d2mi7"] -[ext_resource type="Script" uid="uid://bymylx25skfot" path="res://scripts/components/level/RightBoundaryMarker.cs" id="1_cf1wn"] +[ext_resource type="Script" uid="uid://bymylx25skfot" path="res://scripts/level/RightBoundaryMarker.cs" id="1_cf1wn"] [node name="right_boundary_marker" type="Marker2D"] script = ExtResource("1_cf1wn") diff --git a/scenes/main_menu.tscn b/scenes/main_menu.tscn index 060e4ad..7dde938 100644 --- a/scenes/main_menu.tscn +++ b/scenes/main_menu.tscn @@ -1,11 +1,11 @@ [gd_scene load_steps=16 format=3 uid="uid://bfstrli64u23y"] [ext_resource type="Texture2D" uid="uid://dvldjlg0nr355" path="res://assets/sprites/atlases/atlas1.png" id="1_jk1qb"] -[ext_resource type="Script" uid="uid://drru785m4eep" path="res://scripts/components/gui/main_menu_rich_text.gd" id="2_5dd4i"] -[ext_resource type="Script" uid="uid://dgevhrbucpwrs" path="res://scripts/components/gui/prototype_window.gd" id="2_lgwnu"] +[ext_resource type="Script" uid="uid://drru785m4eep" path="res://scripts/gui/main_menu_rich_text.gd" id="2_5dd4i"] +[ext_resource type="Script" uid="uid://dgevhrbucpwrs" path="res://scripts/gui/prototype_window.gd" id="2_lgwnu"] [ext_resource type="Texture2D" uid="uid://c37pvdhol2x02" path="res://assets/sprites/menu_bg.png" id="3_lgwnu"] [ext_resource type="Theme" uid="uid://btulhvgwclket" path="res://resources/themes/MainMenu.tres" id="4_flqon"] -[ext_resource type="Script" uid="uid://c06k4k3ww48ev" path="res://scripts/components/gui/menu_buttons.gd" id="5_rcqid"] +[ext_resource type="Script" uid="uid://c06k4k3ww48ev" path="res://scripts/gui/menu_buttons.gd" id="5_rcqid"] [ext_resource type="Script" uid="uid://6e8n6kc0y11o" path="res://scripts/sacrifice.gd" id="6_1ajci"] [ext_resource type="Script" uid="uid://c36bj8u7jghc7" path="res://scripts/audio/ChannelPlayer.cs" id="7_7b55j"] [ext_resource type="Texture2D" uid="uid://drydueofrb448" path="res://assets/sprites/gui/almanach/book.tres" id="7_flqon"] diff --git a/scenes/particles/dirt_explosion.tscn b/scenes/particles/dirt_explosion.tscn index 5b23109..15208c7 100644 --- a/scenes/particles/dirt_explosion.tscn +++ b/scenes/particles/dirt_explosion.tscn @@ -1,7 +1,7 @@ [gd_scene load_steps=9 format=3 uid="uid://b4lx8adw6rbqs"] [ext_resource type="Texture2D" uid="uid://d3673b2idj18b" path="res://assets/sprites/particles/dirt1.tres" id="1_nc6dt"] -[ext_resource type="Script" uid="uid://dxcd70o6aa7pr" path="res://scripts/components/particles/StandardParticles.cs" id="1_o2lv2"] +[ext_resource type="Script" uid="uid://dxcd70o6aa7pr" path="res://scripts/particles/StandardParticles.cs" id="1_o2lv2"] [ext_resource type="Material" uid="uid://dmpscw60bfrj" path="res://assets/sprites/particles/dirt_material.tres" id="2_o2lv2"] [ext_resource type="Texture2D" uid="uid://bs8cll4gtgwr1" path="res://assets/sprites/particles/dirt2.tres" id="3_0gemy"] [ext_resource type="Texture2D" uid="uid://0tja7r7yp1ht" path="res://assets/sprites/particles/dirt3.tres" id="4_ihbjc"] diff --git a/scenes/particles/pea_particles.tscn b/scenes/particles/pea_particles.tscn index 9691f8a..456b56d 100644 --- a/scenes/particles/pea_particles.tscn +++ b/scenes/particles/pea_particles.tscn @@ -1,6 +1,6 @@ [gd_scene load_steps=6 format=3 uid="uid://1d33w4ubtury"] -[ext_resource type="Script" uid="uid://dxcd70o6aa7pr" path="res://scripts/components/particles/StandardParticles.cs" id="1_rhijc"] +[ext_resource type="Script" uid="uid://dxcd70o6aa7pr" path="res://scripts/particles/StandardParticles.cs" id="1_rhijc"] [ext_resource type="Texture2D" uid="uid://d1ovwgd03fxx5" path="res://assets/sprites/particles/pea_fragment1.tres" id="1_wg12m"] [ext_resource type="Material" uid="uid://0sf0uy1dkxb6" path="res://assets/sprites/particles/pea_material.tres" id="2_rhijc"] [ext_resource type="Texture2D" uid="uid://bmig582h4s38v" path="res://assets/sprites/particles/pea_fragment2.tres" id="3_yroe6"] diff --git a/scenes/projectiles/pea.tscn b/scenes/projectiles/pea.tscn index 123dd6f..2b2fb92 100644 --- a/scenes/projectiles/pea.tscn +++ b/scenes/projectiles/pea.tscn @@ -1,6 +1,6 @@ [gd_scene load_steps=5 format=3 uid="uid://b2hrv0aqbui7u"] -[ext_resource type="Script" uid="uid://dxlwvwy3hj56x" path="res://scripts/components/LinearProjectile.cs" id="1_3kc4s"] +[ext_resource type="Script" uid="uid://dxlwvwy3hj56x" path="res://scripts/LinearProjectile.cs" id="1_3kc4s"] [ext_resource type="Texture2D" uid="uid://dq0mul65hevtt" path="res://assets/sprites/plants/pea.tres" id="2_26q5x"] [ext_resource type="PackedScene" uid="uid://1d33w4ubtury" path="res://scenes/particles/pea_particles.tscn" id="2_osqrk"] diff --git a/scenes/projectiles/snowpea_projectile.tscn b/scenes/projectiles/snowpea_projectile.tscn index bfde097..e46f67a 100644 --- a/scenes/projectiles/snowpea_projectile.tscn +++ b/scenes/projectiles/snowpea_projectile.tscn @@ -1,6 +1,6 @@ [gd_scene load_steps=9 format=3 uid="uid://domeukw4ucmyr"] -[ext_resource type="Script" uid="uid://dxlwvwy3hj56x" path="res://scripts/components/LinearProjectile.cs" id="1_fkydi"] +[ext_resource type="Script" uid="uid://dxlwvwy3hj56x" path="res://scripts/LinearProjectile.cs" id="1_fkydi"] [ext_resource type="Resource" uid="uid://7uj0oe656jfx" path="res://resources/effects/SnowSlow.tres" id="2_fn62x"] [ext_resource type="Texture2D" uid="uid://dn4l67snkx5mr" path="res://assets/sprites/plants/snowpea_projectile.tres" id="2_xt8td"] [ext_resource type="PackedScene" uid="uid://cijchi3f01q2t" path="res://scenes/particles/snow_pea_particles.tscn" id="3_t6hp0"] diff --git a/scenes/prototype_survival.tscn b/scenes/prototype_survival.tscn index 96be60b..f6fd6c0 100644 --- a/scenes/prototype_survival.tscn +++ b/scenes/prototype_survival.tscn @@ -1,27 +1,27 @@ [gd_scene load_steps=33 format=3 uid="uid://c1335fke4thpm"] -[ext_resource type="Script" uid="uid://bndu1h5kgcde8" path="res://scripts/components/level/RuntimeLevelData.cs" id="1_tnxdx"] +[ext_resource type="Script" uid="uid://bndu1h5kgcde8" path="res://scripts/level/RuntimeLevelData.cs" id="1_tnxdx"] [ext_resource type="Texture2D" uid="uid://b0tb2hjum40aw" path="res://assets/sprites/background_summer.png" id="1_vafkg"] -[ext_resource type="Script" uid="uid://bso32xkw738sy" path="res://scripts/components/level/PoolContainer.cs" id="3_6128b"] +[ext_resource type="Script" uid="uid://bso32xkw738sy" path="res://scripts/level/PoolContainer.cs" id="3_6128b"] [ext_resource type="PackedScene" uid="uid://devn21c7luf45" path="res://scenes/level components/field_controller.tscn" id="4_ibntj"] [ext_resource type="PackedScene" uid="uid://cfnmspei3k4p7" path="res://scenes/gui/runtime_gui.tscn" id="5_iotae"] [ext_resource type="PackedScene" uid="uid://dpxxjfd5lv5sv" path="res://scenes/gui/choose_your_seeds.tscn" id="6_btfw3"] [ext_resource type="PackedScene" uid="uid://fm471x22n8kr" path="res://scenes/gui/pause_menu.tscn" id="7_3ghv7"] -[ext_resource type="Script" uid="uid://cslqjdd5wq4rc" path="res://scripts/components/level/SunSpawner.cs" id="7_gnb05"] +[ext_resource type="Script" uid="uid://cslqjdd5wq4rc" path="res://scripts/level/SunSpawner.cs" id="7_gnb05"] [ext_resource type="PackedScene" uid="uid://bpekho7leatr5" path="res://scenes/sun.tscn" id="8_8nyym"] [ext_resource type="Texture2D" uid="uid://bt0slphfqhhab" path="res://assets/sprites/atlases/brain.tres" id="8_h1ksq"] -[ext_resource type="Script" uid="uid://bsuw5lvnr3kol" path="res://scripts/components/level/zombe_spawners/ZombieSequencer.cs" id="9_8nyym"] +[ext_resource type="Script" uid="uid://bsuw5lvnr3kol" path="res://scripts/level/zombe_spawners/ZombieSequencer.cs" id="9_8nyym"] [ext_resource type="Texture2D" uid="uid://dvldjlg0nr355" path="res://assets/sprites/atlases/atlas1.png" id="9_jmik4"] [ext_resource type="PackedScene" uid="uid://jm7wm08d2mi7" path="res://scenes/level components/right_boundary_marker.tscn" id="9_q2l3d"] -[ext_resource type="Script" uid="uid://nkb6i7lrkl8y" path="res://scripts/components/level/zombe_spawners/SurvivalZombieSpawner.cs" id="10_1kjp6"] -[ext_resource type="Script" uid="uid://btqwxelqxheh3" path="res://scripts/components/gui/RestartButton.cs" id="10_4il7a"] +[ext_resource type="Script" uid="uid://nkb6i7lrkl8y" path="res://scripts/level/zombe_spawners/SurvivalZombieSpawner.cs" id="10_1kjp6"] +[ext_resource type="Script" uid="uid://btqwxelqxheh3" path="res://scripts/gui/RestartButton.cs" id="10_4il7a"] [ext_resource type="PackedScene" uid="uid://plc2gus4ppds" path="res://scenes/level components/left_boundary_marker.tscn" id="10_5h8lk"] -[ext_resource type="Script" uid="uid://dpdpv2oyxdna7" path="res://scripts/components/gui/ExitButton.cs" id="11_q1dn6"] +[ext_resource type="Script" uid="uid://dpdpv2oyxdna7" path="res://scripts/gui/ExitButton.cs" id="11_q1dn6"] [ext_resource type="Script" uid="uid://c36bj8u7jghc7" path="res://scripts/audio/ChannelPlayer.cs" id="12_4il7a"] -[ext_resource type="Script" uid="uid://blpu7t8tf6277" path="res://scripts/components/particles/FallFloor.cs" id="13_5h8lk"] +[ext_resource type="Script" uid="uid://blpu7t8tf6277" path="res://scripts/particles/FallFloor.cs" id="13_5h8lk"] [ext_resource type="AudioStream" uid="uid://bdx83fokp6kha" path="res://assets/audio/sfx/buttonclick.mp3" id="13_q1dn6"] -[ext_resource type="Script" uid="uid://c0ov2bq5er0gh" path="res://scripts/components/plants/LoseZone.cs" id="16_r81g1"] -[ext_resource type="Script" uid="uid://812ldoyxd5n5" path="res://scripts/components/level/LoseCheckbox.cs" id="17_pb02i"] +[ext_resource type="Script" uid="uid://c0ov2bq5er0gh" path="res://scripts/plants/LoseZone.cs" id="16_r81g1"] +[ext_resource type="Script" uid="uid://812ldoyxd5n5" path="res://scripts/level/LoseCheckbox.cs" id="17_pb02i"] [ext_resource type="AudioStream" uid="uid://bxshjvvtv3fmp" path="res://assets/audio/music/playlist.tres" id="23_tsy2s"] [sub_resource type="Animation" id="Animation_r81g1"] diff --git a/scenes/templates/level_template.tscn b/scenes/templates/level_template.tscn index ffd26b6..f8f31e3 100644 --- a/scenes/templates/level_template.tscn +++ b/scenes/templates/level_template.tscn @@ -1,6 +1,6 @@ [gd_scene load_steps=6 format=3 uid="uid://dd3yegl1xo44m"] -[ext_resource type="Script" path="res://scripts/components/level/RuntimeLevelData.cs" id="1_31ltw"] +[ext_resource type="Script" uid="uid://bndu1h5kgcde8" path="res://scripts/level/RuntimeLevelData.cs" id="1_31ltw"] [ext_resource type="PackedScene" uid="uid://devn21c7luf45" path="res://scenes/level components/field_controller.tscn" id="2_w4oj7"] [ext_resource type="PackedScene" uid="uid://cg8713v6c5w15" path="res://scenes/level components/pools.tscn" id="3_r1g7l"] [ext_resource type="PackedScene" uid="uid://dpxxjfd5lv5sv" path="res://scenes/gui/choose_your_seeds.tscn" id="3_xy2c6"] diff --git a/scenes/templates/plant_template.tscn b/scenes/templates/plant_template.tscn index 68c637d..ea600b6 100644 --- a/scenes/templates/plant_template.tscn +++ b/scenes/templates/plant_template.tscn @@ -1,7 +1,7 @@ [gd_scene load_steps=3 format=3 uid="uid://b1hjjbdwf1rtc"] -[ext_resource type="Script" uid="uid://dli2i6albvugt" path="res://scripts/components/plants/RuntimePlantData.cs" id="1_324sd"] -[ext_resource type="Script" uid="uid://dwlwi42smgxkb" path="res://scripts/components/TimeScalableAnimationTree.cs" id="2_e75pf"] +[ext_resource type="Script" uid="uid://dli2i6albvugt" path="res://scripts/plants/RuntimePlantData.cs" id="1_324sd"] +[ext_resource type="Script" uid="uid://dwlwi42smgxkb" path="res://scripts/TimeScalableAnimationTree.cs" id="2_e75pf"] [node name="PlantTemplate" type="Node2D" node_paths=PackedStringArray("_player", "_tree")] script = ExtResource("1_324sd") diff --git a/scripts/components/Armor.cs b/scripts/Armor.cs similarity index 100% rename from scripts/components/Armor.cs rename to scripts/Armor.cs diff --git a/scripts/components/Armor.cs.uid b/scripts/Armor.cs.uid similarity index 100% rename from scripts/components/Armor.cs.uid rename to scripts/Armor.cs.uid diff --git a/scripts/components/DegradingSprite.cs b/scripts/DegradingSprite.cs similarity index 100% rename from scripts/components/DegradingSprite.cs rename to scripts/DegradingSprite.cs diff --git a/scripts/components/DegradingSprite.cs.uid b/scripts/DegradingSprite.cs.uid similarity index 100% rename from scripts/components/DegradingSprite.cs.uid rename to scripts/DegradingSprite.cs.uid diff --git a/scripts/components/Entity.cs b/scripts/Entity.cs similarity index 100% rename from scripts/components/Entity.cs rename to scripts/Entity.cs diff --git a/scripts/components/Entity.cs.uid b/scripts/Entity.cs.uid similarity index 100% rename from scripts/components/Entity.cs.uid rename to scripts/Entity.cs.uid diff --git a/scripts/components/FlashComponent.cs b/scripts/FlashComponent.cs similarity index 100% rename from scripts/components/FlashComponent.cs rename to scripts/FlashComponent.cs diff --git a/scripts/components/FlashComponent.cs.uid b/scripts/FlashComponent.cs.uid similarity index 100% rename from scripts/components/FlashComponent.cs.uid rename to scripts/FlashComponent.cs.uid diff --git a/scripts/components/IProjectile.cs b/scripts/IProjectile.cs similarity index 100% rename from scripts/components/IProjectile.cs rename to scripts/IProjectile.cs diff --git a/scripts/components/IProjectile.cs.uid b/scripts/IProjectile.cs.uid similarity index 100% rename from scripts/components/IProjectile.cs.uid rename to scripts/IProjectile.cs.uid diff --git a/scripts/components/LevelGUIElements.cs b/scripts/LevelGUIElements.cs similarity index 100% rename from scripts/components/LevelGUIElements.cs rename to scripts/LevelGUIElements.cs diff --git a/scripts/components/LevelGUIElements.cs.uid b/scripts/LevelGUIElements.cs.uid similarity index 100% rename from scripts/components/LevelGUIElements.cs.uid rename to scripts/LevelGUIElements.cs.uid diff --git a/scripts/components/LinearProjectile.cs b/scripts/LinearProjectile.cs similarity index 100% rename from scripts/components/LinearProjectile.cs rename to scripts/LinearProjectile.cs diff --git a/scripts/components/LinearProjectile.cs.uid b/scripts/LinearProjectile.cs.uid similarity index 100% rename from scripts/components/LinearProjectile.cs.uid rename to scripts/LinearProjectile.cs.uid diff --git a/scripts/components/TimeScalableAnimationTree.cs b/scripts/TimeScalableAnimationTree.cs similarity index 100% rename from scripts/components/TimeScalableAnimationTree.cs rename to scripts/TimeScalableAnimationTree.cs diff --git a/scripts/components/TimeScalableAnimationTree.cs.uid b/scripts/TimeScalableAnimationTree.cs.uid similarity index 100% rename from scripts/components/TimeScalableAnimationTree.cs.uid rename to scripts/TimeScalableAnimationTree.cs.uid diff --git a/scripts/components/TimeScalableTimer.cs b/scripts/TimeScalableTimer.cs similarity index 100% rename from scripts/components/TimeScalableTimer.cs rename to scripts/TimeScalableTimer.cs diff --git a/scripts/components/TimeScalableTimer.cs.uid b/scripts/TimeScalableTimer.cs.uid similarity index 100% rename from scripts/components/TimeScalableTimer.cs.uid rename to scripts/TimeScalableTimer.cs.uid diff --git a/scripts/components/gui/ExitButton.cs b/scripts/gui/ExitButton.cs similarity index 100% rename from scripts/components/gui/ExitButton.cs rename to scripts/gui/ExitButton.cs diff --git a/scripts/components/gui/ExitButton.cs.uid b/scripts/gui/ExitButton.cs.uid similarity index 100% rename from scripts/components/gui/ExitButton.cs.uid rename to scripts/gui/ExitButton.cs.uid diff --git a/scripts/components/gui/FastForwardButton.cs b/scripts/gui/FastForwardButton.cs similarity index 100% rename from scripts/components/gui/FastForwardButton.cs rename to scripts/gui/FastForwardButton.cs diff --git a/scripts/components/gui/FastForwardButton.cs.uid b/scripts/gui/FastForwardButton.cs.uid similarity index 100% rename from scripts/components/gui/FastForwardButton.cs.uid rename to scripts/gui/FastForwardButton.cs.uid diff --git a/scripts/components/gui/PauseButton.cs b/scripts/gui/PauseButton.cs similarity index 100% rename from scripts/components/gui/PauseButton.cs rename to scripts/gui/PauseButton.cs diff --git a/scripts/components/gui/PauseButton.cs.uid b/scripts/gui/PauseButton.cs.uid similarity index 100% rename from scripts/components/gui/PauseButton.cs.uid rename to scripts/gui/PauseButton.cs.uid diff --git a/scripts/components/gui/PauseMenu.cs b/scripts/gui/PauseMenu.cs similarity index 100% rename from scripts/components/gui/PauseMenu.cs rename to scripts/gui/PauseMenu.cs diff --git a/scripts/components/gui/PauseMenu.cs.uid b/scripts/gui/PauseMenu.cs.uid similarity index 100% rename from scripts/components/gui/PauseMenu.cs.uid rename to scripts/gui/PauseMenu.cs.uid diff --git a/scripts/components/gui/RestartButton.cs b/scripts/gui/RestartButton.cs similarity index 100% rename from scripts/components/gui/RestartButton.cs rename to scripts/gui/RestartButton.cs diff --git a/scripts/components/gui/RestartButton.cs.uid b/scripts/gui/RestartButton.cs.uid similarity index 100% rename from scripts/components/gui/RestartButton.cs.uid rename to scripts/gui/RestartButton.cs.uid diff --git a/scripts/components/gui/ShovelButton.cs b/scripts/gui/ShovelButton.cs similarity index 100% rename from scripts/components/gui/ShovelButton.cs rename to scripts/gui/ShovelButton.cs diff --git a/scripts/components/gui/ShovelButton.cs.uid b/scripts/gui/ShovelButton.cs.uid similarity index 100% rename from scripts/components/gui/ShovelButton.cs.uid rename to scripts/gui/ShovelButton.cs.uid diff --git a/scripts/components/gui/SunCounter.cs b/scripts/gui/SunCounter.cs similarity index 100% rename from scripts/components/gui/SunCounter.cs rename to scripts/gui/SunCounter.cs diff --git a/scripts/components/gui/SunCounter.cs.uid b/scripts/gui/SunCounter.cs.uid similarity index 100% rename from scripts/components/gui/SunCounter.cs.uid rename to scripts/gui/SunCounter.cs.uid diff --git a/scripts/components/gui/SunCounterImage.cs b/scripts/gui/SunCounterImage.cs similarity index 100% rename from scripts/components/gui/SunCounterImage.cs rename to scripts/gui/SunCounterImage.cs diff --git a/scripts/components/gui/SunCounterImage.cs.uid b/scripts/gui/SunCounterImage.cs.uid similarity index 100% rename from scripts/components/gui/SunCounterImage.cs.uid rename to scripts/gui/SunCounterImage.cs.uid diff --git a/scripts/components/gui/VeilResizer.cs b/scripts/gui/VeilResizer.cs similarity index 100% rename from scripts/components/gui/VeilResizer.cs rename to scripts/gui/VeilResizer.cs diff --git a/scripts/components/gui/VeilResizer.cs.uid b/scripts/gui/VeilResizer.cs.uid similarity index 100% rename from scripts/components/gui/VeilResizer.cs.uid rename to scripts/gui/VeilResizer.cs.uid diff --git a/scripts/components/gui/almanach/AlmanachGrid.cs b/scripts/gui/almanach/AlmanachGrid.cs similarity index 100% rename from scripts/components/gui/almanach/AlmanachGrid.cs rename to scripts/gui/almanach/AlmanachGrid.cs diff --git a/scripts/components/gui/almanach/AlmanachGrid.cs.uid b/scripts/gui/almanach/AlmanachGrid.cs.uid similarity index 100% rename from scripts/components/gui/almanach/AlmanachGrid.cs.uid rename to scripts/gui/almanach/AlmanachGrid.cs.uid diff --git a/scripts/components/gui/choose_your_seeds/GridLoader.cs b/scripts/gui/choose_your_seeds/GridLoader.cs similarity index 100% rename from scripts/components/gui/choose_your_seeds/GridLoader.cs rename to scripts/gui/choose_your_seeds/GridLoader.cs diff --git a/scripts/components/gui/choose_your_seeds/GridLoader.cs.uid b/scripts/gui/choose_your_seeds/GridLoader.cs.uid similarity index 100% rename from scripts/components/gui/choose_your_seeds/GridLoader.cs.uid rename to scripts/gui/choose_your_seeds/GridLoader.cs.uid diff --git a/scripts/components/gui/choose_your_seeds/LevelRunButton.cs b/scripts/gui/choose_your_seeds/LevelRunButton.cs similarity index 100% rename from scripts/components/gui/choose_your_seeds/LevelRunButton.cs rename to scripts/gui/choose_your_seeds/LevelRunButton.cs diff --git a/scripts/components/gui/choose_your_seeds/LevelRunButton.cs.uid b/scripts/gui/choose_your_seeds/LevelRunButton.cs.uid similarity index 100% rename from scripts/components/gui/choose_your_seeds/LevelRunButton.cs.uid rename to scripts/gui/choose_your_seeds/LevelRunButton.cs.uid diff --git a/scripts/components/gui/choose_your_seeds/Previewport.cs b/scripts/gui/choose_your_seeds/Previewport.cs similarity index 100% rename from scripts/components/gui/choose_your_seeds/Previewport.cs rename to scripts/gui/choose_your_seeds/Previewport.cs diff --git a/scripts/components/gui/choose_your_seeds/Previewport.cs.uid b/scripts/gui/choose_your_seeds/Previewport.cs.uid similarity index 100% rename from scripts/components/gui/choose_your_seeds/Previewport.cs.uid rename to scripts/gui/choose_your_seeds/Previewport.cs.uid diff --git a/scripts/components/gui/main_menu_rich_text.gd b/scripts/gui/main_menu_rich_text.gd similarity index 100% rename from scripts/components/gui/main_menu_rich_text.gd rename to scripts/gui/main_menu_rich_text.gd diff --git a/scripts/components/gui/main_menu_rich_text.gd.uid b/scripts/gui/main_menu_rich_text.gd.uid similarity index 100% rename from scripts/components/gui/main_menu_rich_text.gd.uid rename to scripts/gui/main_menu_rich_text.gd.uid diff --git a/scripts/components/gui/menu_buttons.gd b/scripts/gui/menu_buttons.gd similarity index 100% rename from scripts/components/gui/menu_buttons.gd rename to scripts/gui/menu_buttons.gd diff --git a/scripts/components/gui/menu_buttons.gd.uid b/scripts/gui/menu_buttons.gd.uid similarity index 100% rename from scripts/components/gui/menu_buttons.gd.uid rename to scripts/gui/menu_buttons.gd.uid diff --git a/scripts/components/gui/prototype_window.gd b/scripts/gui/prototype_window.gd similarity index 100% rename from scripts/components/gui/prototype_window.gd rename to scripts/gui/prototype_window.gd diff --git a/scripts/components/gui/prototype_window.gd.uid b/scripts/gui/prototype_window.gd.uid similarity index 100% rename from scripts/components/gui/prototype_window.gd.uid rename to scripts/gui/prototype_window.gd.uid diff --git a/scripts/components/gui/seedpackets/AlmanachHandler.cs b/scripts/gui/seedpackets/AlmanachHandler.cs similarity index 100% rename from scripts/components/gui/seedpackets/AlmanachHandler.cs rename to scripts/gui/seedpackets/AlmanachHandler.cs diff --git a/scripts/components/gui/seedpackets/AlmanachHandler.cs.uid b/scripts/gui/seedpackets/AlmanachHandler.cs.uid similarity index 100% rename from scripts/components/gui/seedpackets/AlmanachHandler.cs.uid rename to scripts/gui/seedpackets/AlmanachHandler.cs.uid diff --git a/scripts/components/gui/seedpackets/ChoosableHandler.cs b/scripts/gui/seedpackets/ChoosableHandler.cs similarity index 100% rename from scripts/components/gui/seedpackets/ChoosableHandler.cs rename to scripts/gui/seedpackets/ChoosableHandler.cs diff --git a/scripts/components/gui/seedpackets/ChoosableHandler.cs.uid b/scripts/gui/seedpackets/ChoosableHandler.cs.uid similarity index 100% rename from scripts/components/gui/seedpackets/ChoosableHandler.cs.uid rename to scripts/gui/seedpackets/ChoosableHandler.cs.uid diff --git a/scripts/components/gui/seedpackets/CustomSeedpacketFrame.cs b/scripts/gui/seedpackets/CustomSeedpacketFrame.cs similarity index 100% rename from scripts/components/gui/seedpackets/CustomSeedpacketFrame.cs rename to scripts/gui/seedpackets/CustomSeedpacketFrame.cs diff --git a/scripts/components/gui/seedpackets/CustomSeedpacketFrame.cs.uid b/scripts/gui/seedpackets/CustomSeedpacketFrame.cs.uid similarity index 100% rename from scripts/components/gui/seedpackets/CustomSeedpacketFrame.cs.uid rename to scripts/gui/seedpackets/CustomSeedpacketFrame.cs.uid diff --git a/scripts/components/gui/seedpackets/HotbarHandler.cs b/scripts/gui/seedpackets/HotbarHandler.cs similarity index 100% rename from scripts/components/gui/seedpackets/HotbarHandler.cs rename to scripts/gui/seedpackets/HotbarHandler.cs diff --git a/scripts/components/gui/seedpackets/HotbarHandler.cs.uid b/scripts/gui/seedpackets/HotbarHandler.cs.uid similarity index 100% rename from scripts/components/gui/seedpackets/HotbarHandler.cs.uid rename to scripts/gui/seedpackets/HotbarHandler.cs.uid diff --git a/scripts/components/gui/seedpackets/HotbarPregameHandler.cs b/scripts/gui/seedpackets/HotbarPregameHandler.cs similarity index 100% rename from scripts/components/gui/seedpackets/HotbarPregameHandler.cs rename to scripts/gui/seedpackets/HotbarPregameHandler.cs diff --git a/scripts/components/gui/seedpackets/HotbarPregameHandler.cs.uid b/scripts/gui/seedpackets/HotbarPregameHandler.cs.uid similarity index 100% rename from scripts/components/gui/seedpackets/HotbarPregameHandler.cs.uid rename to scripts/gui/seedpackets/HotbarPregameHandler.cs.uid diff --git a/scripts/components/gui/seedpackets/ISeedpacketPress.cs b/scripts/gui/seedpackets/ISeedpacketPress.cs similarity index 100% rename from scripts/components/gui/seedpackets/ISeedpacketPress.cs rename to scripts/gui/seedpackets/ISeedpacketPress.cs diff --git a/scripts/components/gui/seedpackets/ISeedpacketPress.cs.uid b/scripts/gui/seedpackets/ISeedpacketPress.cs.uid similarity index 100% rename from scripts/components/gui/seedpackets/ISeedpacketPress.cs.uid rename to scripts/gui/seedpackets/ISeedpacketPress.cs.uid diff --git a/scripts/components/gui/seedpackets/ISeedpacketProcess.cs b/scripts/gui/seedpackets/ISeedpacketProcess.cs similarity index 100% rename from scripts/components/gui/seedpackets/ISeedpacketProcess.cs rename to scripts/gui/seedpackets/ISeedpacketProcess.cs diff --git a/scripts/components/gui/seedpackets/ISeedpacketProcess.cs.uid b/scripts/gui/seedpackets/ISeedpacketProcess.cs.uid similarity index 100% rename from scripts/components/gui/seedpackets/ISeedpacketProcess.cs.uid rename to scripts/gui/seedpackets/ISeedpacketProcess.cs.uid diff --git a/scripts/components/gui/seedpackets/ISeedpacketUnfocus.cs b/scripts/gui/seedpackets/ISeedpacketUnfocus.cs similarity index 100% rename from scripts/components/gui/seedpackets/ISeedpacketUnfocus.cs rename to scripts/gui/seedpackets/ISeedpacketUnfocus.cs diff --git a/scripts/components/gui/seedpackets/ISeedpacketUnfocus.cs.uid b/scripts/gui/seedpackets/ISeedpacketUnfocus.cs.uid similarity index 100% rename from scripts/components/gui/seedpackets/ISeedpacketUnfocus.cs.uid rename to scripts/gui/seedpackets/ISeedpacketUnfocus.cs.uid diff --git a/scripts/components/gui/seedpackets/Seedpacket.cs b/scripts/gui/seedpackets/Seedpacket.cs similarity index 100% rename from scripts/components/gui/seedpackets/Seedpacket.cs rename to scripts/gui/seedpackets/Seedpacket.cs diff --git a/scripts/components/gui/seedpackets/Seedpacket.cs.uid b/scripts/gui/seedpackets/Seedpacket.cs.uid similarity index 100% rename from scripts/components/gui/seedpackets/Seedpacket.cs.uid rename to scripts/gui/seedpackets/Seedpacket.cs.uid diff --git a/scripts/components/gui/seedpackets/SeedpacketHandler.cs b/scripts/gui/seedpackets/SeedpacketHandler.cs similarity index 100% rename from scripts/components/gui/seedpackets/SeedpacketHandler.cs rename to scripts/gui/seedpackets/SeedpacketHandler.cs diff --git a/scripts/components/gui/seedpackets/SeedpacketHandler.cs.uid b/scripts/gui/seedpackets/SeedpacketHandler.cs.uid similarity index 100% rename from scripts/components/gui/seedpackets/SeedpacketHandler.cs.uid rename to scripts/gui/seedpackets/SeedpacketHandler.cs.uid diff --git a/scripts/components/level/LeftBoundaryMarker.cs b/scripts/level/LeftBoundaryMarker.cs similarity index 100% rename from scripts/components/level/LeftBoundaryMarker.cs rename to scripts/level/LeftBoundaryMarker.cs diff --git a/scripts/components/level/LeftBoundaryMarker.cs.uid b/scripts/level/LeftBoundaryMarker.cs.uid similarity index 100% rename from scripts/components/level/LeftBoundaryMarker.cs.uid rename to scripts/level/LeftBoundaryMarker.cs.uid diff --git a/scripts/components/level/LoseCheckbox.cs b/scripts/level/LoseCheckbox.cs similarity index 100% rename from scripts/components/level/LoseCheckbox.cs rename to scripts/level/LoseCheckbox.cs diff --git a/scripts/components/level/LoseCheckbox.cs.uid b/scripts/level/LoseCheckbox.cs.uid similarity index 100% rename from scripts/components/level/LoseCheckbox.cs.uid rename to scripts/level/LoseCheckbox.cs.uid diff --git a/scripts/components/level/PlantField.cs b/scripts/level/PlantField.cs similarity index 100% rename from scripts/components/level/PlantField.cs rename to scripts/level/PlantField.cs diff --git a/scripts/components/level/PlantField.cs.uid b/scripts/level/PlantField.cs.uid similarity index 100% rename from scripts/components/level/PlantField.cs.uid rename to scripts/level/PlantField.cs.uid diff --git a/scripts/components/level/PoolContainer.cs b/scripts/level/PoolContainer.cs similarity index 100% rename from scripts/components/level/PoolContainer.cs rename to scripts/level/PoolContainer.cs diff --git a/scripts/components/level/PoolContainer.cs.uid b/scripts/level/PoolContainer.cs.uid similarity index 100% rename from scripts/components/level/PoolContainer.cs.uid rename to scripts/level/PoolContainer.cs.uid diff --git a/scripts/components/level/RightBoundaryMarker.cs b/scripts/level/RightBoundaryMarker.cs similarity index 100% rename from scripts/components/level/RightBoundaryMarker.cs rename to scripts/level/RightBoundaryMarker.cs diff --git a/scripts/components/level/RightBoundaryMarker.cs.uid b/scripts/level/RightBoundaryMarker.cs.uid similarity index 100% rename from scripts/components/level/RightBoundaryMarker.cs.uid rename to scripts/level/RightBoundaryMarker.cs.uid diff --git a/scripts/components/level/RuntimeLevelData.cs b/scripts/level/RuntimeLevelData.cs similarity index 100% rename from scripts/components/level/RuntimeLevelData.cs rename to scripts/level/RuntimeLevelData.cs diff --git a/scripts/components/level/RuntimeLevelData.cs.uid b/scripts/level/RuntimeLevelData.cs.uid similarity index 100% rename from scripts/components/level/RuntimeLevelData.cs.uid rename to scripts/level/RuntimeLevelData.cs.uid diff --git a/scripts/components/level/SunSpawner.cs b/scripts/level/SunSpawner.cs similarity index 100% rename from scripts/components/level/SunSpawner.cs rename to scripts/level/SunSpawner.cs diff --git a/scripts/components/level/SunSpawner.cs.uid b/scripts/level/SunSpawner.cs.uid similarity index 100% rename from scripts/components/level/SunSpawner.cs.uid rename to scripts/level/SunSpawner.cs.uid diff --git a/scripts/components/level/zombe_spawners/SurvivalZombieSpawner.cs b/scripts/level/zombe_spawners/SurvivalZombieSpawner.cs similarity index 100% rename from scripts/components/level/zombe_spawners/SurvivalZombieSpawner.cs rename to scripts/level/zombe_spawners/SurvivalZombieSpawner.cs diff --git a/scripts/components/level/zombe_spawners/SurvivalZombieSpawner.cs.uid b/scripts/level/zombe_spawners/SurvivalZombieSpawner.cs.uid similarity index 100% rename from scripts/components/level/zombe_spawners/SurvivalZombieSpawner.cs.uid rename to scripts/level/zombe_spawners/SurvivalZombieSpawner.cs.uid diff --git a/scripts/components/level/zombe_spawners/ZombieSequencer.cs b/scripts/level/zombe_spawners/ZombieSequencer.cs similarity index 100% rename from scripts/components/level/zombe_spawners/ZombieSequencer.cs rename to scripts/level/zombe_spawners/ZombieSequencer.cs diff --git a/scripts/components/level/zombe_spawners/ZombieSequencer.cs.uid b/scripts/level/zombe_spawners/ZombieSequencer.cs.uid similarity index 100% rename from scripts/components/level/zombe_spawners/ZombieSequencer.cs.uid rename to scripts/level/zombe_spawners/ZombieSequencer.cs.uid diff --git a/scripts/components/particles/FallFloor.cs b/scripts/particles/FallFloor.cs similarity index 100% rename from scripts/components/particles/FallFloor.cs rename to scripts/particles/FallFloor.cs diff --git a/scripts/components/particles/FallFloor.cs.uid b/scripts/particles/FallFloor.cs.uid similarity index 100% rename from scripts/components/particles/FallFloor.cs.uid rename to scripts/particles/FallFloor.cs.uid diff --git a/scripts/components/particles/FallParticle.cs b/scripts/particles/FallParticle.cs similarity index 100% rename from scripts/components/particles/FallParticle.cs rename to scripts/particles/FallParticle.cs diff --git a/scripts/components/particles/FallParticle.cs.uid b/scripts/particles/FallParticle.cs.uid similarity index 100% rename from scripts/components/particles/FallParticle.cs.uid rename to scripts/particles/FallParticle.cs.uid diff --git a/scripts/components/particles/StandardParticles.cs b/scripts/particles/StandardParticles.cs similarity index 100% rename from scripts/components/particles/StandardParticles.cs rename to scripts/particles/StandardParticles.cs diff --git a/scripts/components/particles/StandardParticles.cs.uid b/scripts/particles/StandardParticles.cs.uid similarity index 100% rename from scripts/components/particles/StandardParticles.cs.uid rename to scripts/particles/StandardParticles.cs.uid diff --git a/scripts/components/plants/AreaAttack.cs b/scripts/plants/AreaAttack.cs similarity index 100% rename from scripts/components/plants/AreaAttack.cs rename to scripts/plants/AreaAttack.cs diff --git a/scripts/components/plants/AreaAttack.cs.uid b/scripts/plants/AreaAttack.cs.uid similarity index 100% rename from scripts/components/plants/AreaAttack.cs.uid rename to scripts/plants/AreaAttack.cs.uid diff --git a/scripts/components/plants/ExplosionComponent.cs b/scripts/plants/ExplosionComponent.cs similarity index 100% rename from scripts/components/plants/ExplosionComponent.cs rename to scripts/plants/ExplosionComponent.cs diff --git a/scripts/components/plants/ExplosionComponent.cs.uid b/scripts/plants/ExplosionComponent.cs.uid similarity index 100% rename from scripts/components/plants/ExplosionComponent.cs.uid rename to scripts/plants/ExplosionComponent.cs.uid diff --git a/scripts/components/plants/Eyesight.cs b/scripts/plants/Eyesight.cs similarity index 100% rename from scripts/components/plants/Eyesight.cs rename to scripts/plants/Eyesight.cs diff --git a/scripts/components/plants/Eyesight.cs.uid b/scripts/plants/Eyesight.cs.uid similarity index 100% rename from scripts/components/plants/Eyesight.cs.uid rename to scripts/plants/Eyesight.cs.uid diff --git a/scripts/components/plants/LoseZone.cs b/scripts/plants/LoseZone.cs similarity index 100% rename from scripts/components/plants/LoseZone.cs rename to scripts/plants/LoseZone.cs diff --git a/scripts/components/plants/LoseZone.cs.uid b/scripts/plants/LoseZone.cs.uid similarity index 100% rename from scripts/components/plants/LoseZone.cs.uid rename to scripts/plants/LoseZone.cs.uid diff --git a/scripts/components/plants/PlantEyesightLimiter.cs b/scripts/plants/PlantEyesightLimiter.cs similarity index 100% rename from scripts/components/plants/PlantEyesightLimiter.cs rename to scripts/plants/PlantEyesightLimiter.cs diff --git a/scripts/components/plants/PlantEyesightLimiter.cs.uid b/scripts/plants/PlantEyesightLimiter.cs.uid similarity index 100% rename from scripts/components/plants/PlantEyesightLimiter.cs.uid rename to scripts/plants/PlantEyesightLimiter.cs.uid diff --git a/scripts/components/plants/PlantSunSpawner.cs b/scripts/plants/PlantSunSpawner.cs similarity index 100% rename from scripts/components/plants/PlantSunSpawner.cs rename to scripts/plants/PlantSunSpawner.cs diff --git a/scripts/components/plants/PlantSunSpawner.cs.uid b/scripts/plants/PlantSunSpawner.cs.uid similarity index 100% rename from scripts/components/plants/PlantSunSpawner.cs.uid rename to scripts/plants/PlantSunSpawner.cs.uid diff --git a/scripts/components/plants/ReturnEffect.cs b/scripts/plants/ReturnEffect.cs similarity index 100% rename from scripts/components/plants/ReturnEffect.cs rename to scripts/plants/ReturnEffect.cs diff --git a/scripts/components/plants/ReturnEffect.cs.uid b/scripts/plants/ReturnEffect.cs.uid similarity index 100% rename from scripts/components/plants/ReturnEffect.cs.uid rename to scripts/plants/ReturnEffect.cs.uid diff --git a/scripts/components/plants/RuntimePlantData.cs b/scripts/plants/RuntimePlantData.cs similarity index 100% rename from scripts/components/plants/RuntimePlantData.cs rename to scripts/plants/RuntimePlantData.cs diff --git a/scripts/components/plants/RuntimePlantData.cs.uid b/scripts/plants/RuntimePlantData.cs.uid similarity index 100% rename from scripts/components/plants/RuntimePlantData.cs.uid rename to scripts/plants/RuntimePlantData.cs.uid diff --git a/scripts/components/plants/Shooter.cs b/scripts/plants/Shooter.cs similarity index 100% rename from scripts/components/plants/Shooter.cs rename to scripts/plants/Shooter.cs diff --git a/scripts/components/plants/Shooter.cs.uid b/scripts/plants/Shooter.cs.uid similarity index 100% rename from scripts/components/plants/Shooter.cs.uid rename to scripts/plants/Shooter.cs.uid diff --git a/scripts/components/plants/ThreepeaterShooter.cs b/scripts/plants/ThreepeaterShooter.cs similarity index 100% rename from scripts/components/plants/ThreepeaterShooter.cs rename to scripts/plants/ThreepeaterShooter.cs diff --git a/scripts/components/plants/ThreepeaterShooter.cs.uid b/scripts/plants/ThreepeaterShooter.cs.uid similarity index 100% rename from scripts/components/plants/ThreepeaterShooter.cs.uid rename to scripts/plants/ThreepeaterShooter.cs.uid diff --git a/scripts/components/plants/behaviours/AloeBehaviour.cs b/scripts/plants/behaviours/AloeBehaviour.cs similarity index 100% rename from scripts/components/plants/behaviours/AloeBehaviour.cs rename to scripts/plants/behaviours/AloeBehaviour.cs diff --git a/scripts/components/plants/behaviours/AloeBehaviour.cs.uid b/scripts/plants/behaviours/AloeBehaviour.cs.uid similarity index 100% rename from scripts/components/plants/behaviours/AloeBehaviour.cs.uid rename to scripts/plants/behaviours/AloeBehaviour.cs.uid diff --git a/scripts/components/plants/behaviours/BaseBehaviour.cs b/scripts/plants/behaviours/BaseBehaviour.cs similarity index 100% rename from scripts/components/plants/behaviours/BaseBehaviour.cs rename to scripts/plants/behaviours/BaseBehaviour.cs diff --git a/scripts/components/plants/behaviours/BaseBehaviour.cs.uid b/scripts/plants/behaviours/BaseBehaviour.cs.uid similarity index 100% rename from scripts/components/plants/behaviours/BaseBehaviour.cs.uid rename to scripts/plants/behaviours/BaseBehaviour.cs.uid diff --git a/scripts/components/plants/behaviours/HpBasedBehaviour.cs b/scripts/plants/behaviours/HpBasedBehaviour.cs similarity index 100% rename from scripts/components/plants/behaviours/HpBasedBehaviour.cs rename to scripts/plants/behaviours/HpBasedBehaviour.cs diff --git a/scripts/components/plants/behaviours/HpBasedBehaviour.cs.uid b/scripts/plants/behaviours/HpBasedBehaviour.cs.uid similarity index 100% rename from scripts/components/plants/behaviours/HpBasedBehaviour.cs.uid rename to scripts/plants/behaviours/HpBasedBehaviour.cs.uid diff --git a/scripts/components/plants/behaviours/PeashooterBehaviour.cs b/scripts/plants/behaviours/PeashooterBehaviour.cs similarity index 100% rename from scripts/components/plants/behaviours/PeashooterBehaviour.cs rename to scripts/plants/behaviours/PeashooterBehaviour.cs diff --git a/scripts/components/plants/behaviours/PeashooterBehaviour.cs.uid b/scripts/plants/behaviours/PeashooterBehaviour.cs.uid similarity index 100% rename from scripts/components/plants/behaviours/PeashooterBehaviour.cs.uid rename to scripts/plants/behaviours/PeashooterBehaviour.cs.uid diff --git a/scripts/components/plants/behaviours/PotatomineBehaviour.cs b/scripts/plants/behaviours/PotatomineBehaviour.cs similarity index 100% rename from scripts/components/plants/behaviours/PotatomineBehaviour.cs rename to scripts/plants/behaviours/PotatomineBehaviour.cs diff --git a/scripts/components/plants/behaviours/PotatomineBehaviour.cs.uid b/scripts/plants/behaviours/PotatomineBehaviour.cs.uid similarity index 100% rename from scripts/components/plants/behaviours/PotatomineBehaviour.cs.uid rename to scripts/plants/behaviours/PotatomineBehaviour.cs.uid diff --git a/scripts/components/plants/behaviours/SpikeweedBehaviour.cs b/scripts/plants/behaviours/SpikeweedBehaviour.cs similarity index 100% rename from scripts/components/plants/behaviours/SpikeweedBehaviour.cs rename to scripts/plants/behaviours/SpikeweedBehaviour.cs diff --git a/scripts/components/plants/behaviours/SpikeweedBehaviour.cs.uid b/scripts/plants/behaviours/SpikeweedBehaviour.cs.uid similarity index 100% rename from scripts/components/plants/behaviours/SpikeweedBehaviour.cs.uid rename to scripts/plants/behaviours/SpikeweedBehaviour.cs.uid diff --git a/scripts/components/plants/behaviours/SunflowerBehaviour.cs b/scripts/plants/behaviours/SunflowerBehaviour.cs similarity index 100% rename from scripts/components/plants/behaviours/SunflowerBehaviour.cs rename to scripts/plants/behaviours/SunflowerBehaviour.cs diff --git a/scripts/components/plants/behaviours/SunflowerBehaviour.cs.uid b/scripts/plants/behaviours/SunflowerBehaviour.cs.uid similarity index 100% rename from scripts/components/plants/behaviours/SunflowerBehaviour.cs.uid rename to scripts/plants/behaviours/SunflowerBehaviour.cs.uid diff --git a/scripts/components/zombies/AudioDamage.cs b/scripts/zombies/AudioDamage.cs similarity index 100% rename from scripts/components/zombies/AudioDamage.cs rename to scripts/zombies/AudioDamage.cs diff --git a/scripts/components/zombies/AudioDamage.cs.uid b/scripts/zombies/AudioDamage.cs.uid similarity index 100% rename from scripts/components/zombies/AudioDamage.cs.uid rename to scripts/zombies/AudioDamage.cs.uid diff --git a/scripts/components/zombies/EatBox.cs b/scripts/zombies/EatBox.cs similarity index 100% rename from scripts/components/zombies/EatBox.cs rename to scripts/zombies/EatBox.cs diff --git a/scripts/components/zombies/EatBox.cs.uid b/scripts/zombies/EatBox.cs.uid similarity index 100% rename from scripts/components/zombies/EatBox.cs.uid rename to scripts/zombies/EatBox.cs.uid diff --git a/scripts/components/zombies/RuntimeZombieData.cs b/scripts/zombies/RuntimeZombieData.cs similarity index 88% rename from scripts/components/zombies/RuntimeZombieData.cs rename to scripts/zombies/RuntimeZombieData.cs index bf4a64a..781158c 100644 --- a/scripts/components/zombies/RuntimeZombieData.cs +++ b/scripts/zombies/RuntimeZombieData.cs @@ -27,7 +27,6 @@ public partial class RuntimeZombieData : Entity HP = MaxHP; } } - public override void TakeDamage(float amount, Node origin) { if (_armor != null) @@ -44,5 +43,11 @@ public partial class RuntimeZombieData : Entity KillByDamage(); } } - + #region Death sequence + public override void KillByDamage() + { + AbleToEat = false; + } + + #endregion } diff --git a/scripts/components/zombies/RuntimeZombieData.cs.uid b/scripts/zombies/RuntimeZombieData.cs.uid similarity index 100% rename from scripts/components/zombies/RuntimeZombieData.cs.uid rename to scripts/zombies/RuntimeZombieData.cs.uid diff --git a/scripts/components/zombies/ZombieMover.cs b/scripts/zombies/ZombieMover.cs similarity index 100% rename from scripts/components/zombies/ZombieMover.cs rename to scripts/zombies/ZombieMover.cs diff --git a/scripts/components/zombies/ZombieMover.cs.uid b/scripts/zombies/ZombieMover.cs.uid similarity index 100% rename from scripts/components/zombies/ZombieMover.cs.uid rename to scripts/zombies/ZombieMover.cs.uid diff --git a/scripts/components/zombies/behaviours/HoboBehaviour.cs b/scripts/zombies/behaviours/HoboBehaviour.cs similarity index 100% rename from scripts/components/zombies/behaviours/HoboBehaviour.cs rename to scripts/zombies/behaviours/HoboBehaviour.cs diff --git a/scripts/components/zombies/behaviours/HoboBehaviour.cs.uid b/scripts/zombies/behaviours/HoboBehaviour.cs.uid similarity index 100% rename from scripts/components/zombies/behaviours/HoboBehaviour.cs.uid rename to scripts/zombies/behaviours/HoboBehaviour.cs.uid From 1e2e1e8b4ce5022f89223b978c72508cfd5c66b3 Mon Sep 17 00:00:00 2001 From: Rendo Date: Sat, 12 Jul 2025 00:15:17 +0500 Subject: [PATCH 09/48] Zombie death and damage indicators --- .../animations/zombies/basic_zombie_tree.tres | 10 +- resources/animations/zombies/hobo_zombie.res | Bin 12589 -> 12589 bytes resources/effects/SnowSlow.tres | 2 +- scenes/entities/Zombies/bucket_zombie.tscn | 82 ++++++-- scenes/entities/Zombies/cone_zombie.tscn | 73 ++++--- scenes/entities/Zombies/zombie.tscn | 197 +++++++++++++----- scenes/prototype_survival.tscn | 4 +- scripts/Entity.cs | 2 +- scripts/EntityHPObserver.cs | 32 +++ scripts/EntityHPObserver.cs.uid | 1 + scripts/ZombieKillHandler.cs | 24 +++ scripts/ZombieKillHandler.cs.uid | 1 + scripts/particles/FallParticle.cs | 8 +- scripts/zombies/RuntimeZombieData.cs | 5 + 14 files changed, 324 insertions(+), 117 deletions(-) create mode 100644 scripts/EntityHPObserver.cs create mode 100644 scripts/EntityHPObserver.cs.uid create mode 100644 scripts/ZombieKillHandler.cs create mode 100644 scripts/ZombieKillHandler.cs.uid diff --git a/resources/animations/zombies/basic_zombie_tree.tres b/resources/animations/zombies/basic_zombie_tree.tres index 26e010d..2deba5a 100644 --- a/resources/animations/zombies/basic_zombie_tree.tres +++ b/resources/animations/zombies/basic_zombie_tree.tres @@ -1,5 +1,8 @@ [gd_resource type="AnimationNodeStateMachine" load_steps=10 format=3 uid="uid://dj0blope85bg7"] +[sub_resource type="AnimationNodeAnimation" id="AnimationNodeAnimation_w2cv7"] +animation = &"dead_lmao" + [sub_resource type="AnimationNodeAnimation" id="AnimationNodeAnimation_h0rfo"] animation = &"basic_zombie_eating" @@ -9,9 +12,6 @@ animation = &"basic_zombie_stand" [sub_resource type="AnimationNodeAnimation" id="AnimationNodeAnimation_g2uel"] animation = &"basic_zombie_walk" -[sub_resource type="AnimationNodeAnimation" id="AnimationNodeAnimation_w2cv7"] -animation = &"dead_lmao" - [sub_resource type="AnimationNodeStateMachineTransition" id="AnimationNodeStateMachineTransition_vxhht"] advance_mode = 2 @@ -40,6 +40,8 @@ advance_mode = 2 advance_expression = "get(\"isEating\") == false" [resource] +states/Death/node = SubResource("AnimationNodeAnimation_w2cv7") +states/Death/position = Vector2(778, 100) states/End/position = Vector2(977, 90) states/basic_zombie_eat/node = SubResource("AnimationNodeAnimation_h0rfo") states/basic_zombie_eat/position = Vector2(575, 185) @@ -47,7 +49,5 @@ states/basic_zombie_idle/node = SubResource("AnimationNodeAnimation_nog33") states/basic_zombie_idle/position = Vector2(366, 100) states/basic_zombie_walk/node = SubResource("AnimationNodeAnimation_g2uel") states/basic_zombie_walk/position = Vector2(575, 35) -states/dead_lmao/node = SubResource("AnimationNodeAnimation_w2cv7") -states/dead_lmao/position = Vector2(778, 100) transitions = ["Start", "basic_zombie_idle", SubResource("AnimationNodeStateMachineTransition_vxhht"), "basic_zombie_idle", "basic_zombie_walk", SubResource("AnimationNodeStateMachineTransition_r8rju"), "basic_zombie_idle", "basic_zombie_eat", SubResource("AnimationNodeStateMachineTransition_y2ivb"), "basic_zombie_walk", "basic_zombie_eat", SubResource("AnimationNodeStateMachineTransition_7d3k4"), "basic_zombie_eat", "basic_zombie_walk", SubResource("AnimationNodeStateMachineTransition_kk4wi")] graph_offset = Vector2(-7, -20) diff --git a/resources/animations/zombies/hobo_zombie.res b/resources/animations/zombies/hobo_zombie.res index d09abfab3cfbeff47494972a6746fea807313f4d..4bfc0b8ff7b7cbf3fd774adb41e031bfc0902118 100644 GIT binary patch delta 112 zcmV-$0FVEzVy$AZ;3o-L&B2XQC4z-Ov*{-|0RfDYA}P56inH7)@B%p@bdS!itH^X+ z#immZ1>4muk7i`&_dkN&=U_53s{W!yk5^WB(+m9$6z=`VWpHVeXxrB2W7{+Zvjr`O S0SFo$svrS^lLNDqE|~(fh%<@+ delta 112 zcmV-$0FVEzVy$AZ;3o+X4(3yjv4X`xv*{-|0Rf7WA}P56jI-P+@B%pjcaP4ltH^X+ z#imp4W!*Lu=WsT{|9s|R_Bql!n3?;d$15wm>4km=3ip2GGPtx!v~6qiv2B_Hvjr`O S0SE;;Gy#GGCp5E^E|~)8gEP _threshold) + { + EmitSignal(SignalName.ThresholdReached); + _observedEntity.OnHPChanged -= OnHPChanged; + QueueFree(); + } + } +} diff --git a/scripts/EntityHPObserver.cs.uid b/scripts/EntityHPObserver.cs.uid new file mode 100644 index 0000000..11c1d76 --- /dev/null +++ b/scripts/EntityHPObserver.cs.uid @@ -0,0 +1 @@ +uid://dau0tfmlfiqmo diff --git a/scripts/ZombieKillHandler.cs b/scripts/ZombieKillHandler.cs new file mode 100644 index 0000000..a0c2351 --- /dev/null +++ b/scripts/ZombieKillHandler.cs @@ -0,0 +1,24 @@ +using Godot; +using Newlon.Components.Zombies; + +public partial class ZombieKillHandler : Node +{ + [Export] private AnimationTree _tree; + [Export] private CollisionShape2D _collider; + private void OnKilled(RuntimeZombieData who) + { + var tween = CreateTween(); + tween.TweenInterval(4.0); + tween.TweenCallback(Callable.From(() => + { + ((AnimationNodeStateMachinePlayback)_tree.Get("parameters/Tree/playback")).Travel("Death"); + _collider.Disabled = true; + })); + tween.TweenInterval(3.0); + tween.TweenProperty(who, "modulate",new Color(1, 1, 1, 0),1.0); + tween.TweenCallback(Callable.From(() => + { + who.Kill(); + })); + } +} diff --git a/scripts/ZombieKillHandler.cs.uid b/scripts/ZombieKillHandler.cs.uid new file mode 100644 index 0000000..a47f9b0 --- /dev/null +++ b/scripts/ZombieKillHandler.cs.uid @@ -0,0 +1 @@ +uid://dk32ln8c2574d diff --git a/scripts/particles/FallParticle.cs b/scripts/particles/FallParticle.cs index 860afd6..0c71d23 100644 --- a/scripts/particles/FallParticle.cs +++ b/scripts/particles/FallParticle.cs @@ -2,6 +2,9 @@ using Godot; using Newlon.Components.Level; using Newlon.Components.Zombies; +namespace Newlon.Components; + +[GlobalClass] public partial class FallParticle : RigidBody2D { [Export] private RuntimeZombieData data; @@ -19,10 +22,11 @@ public partial class FallParticle : RigidBody2D } Callable.From(() => { - Reparent(PoolContainer.Instance.Zombies); + Reparent(PoolContainer.Instance.Particles); float rng_angle = Mathf.DegToRad((float)GD.RandRange(minAngle, maxAngle)); float rng_torque = Mathf.DegToRad((float)GD.RandRange(minTorque, maxTorque)); - ApplyImpulse(new Vector2(Mathf.Sin(rng_angle) * Impulse, Mathf.Cos(rng_angle) * Impulse)); + if (Impulse != 0) + ApplyImpulse(new Vector2(Mathf.Sin(rng_angle) * Impulse, Mathf.Cos(rng_angle) * Impulse)); ApplyTorqueImpulse(rng_torque); }).CallDeferred(); var tween = CreateTween(); diff --git a/scripts/zombies/RuntimeZombieData.cs b/scripts/zombies/RuntimeZombieData.cs index 781158c..b4fb94b 100644 --- a/scripts/zombies/RuntimeZombieData.cs +++ b/scripts/zombies/RuntimeZombieData.cs @@ -10,6 +10,7 @@ public partial class RuntimeZombieData : Entity private AudioStream garlicSound; [Export] private AudioStream freezeSound; + [Signal] public delegate void HasBeenKilledEventHandler(RuntimeZombieData who); public bool AbleToEat = true; public override void Heal(float amount, Node origin) @@ -44,9 +45,13 @@ public partial class RuntimeZombieData : Entity } } #region Death sequence + private bool _killed = false; public override void KillByDamage() { + if (_killed) return; + _killed = true; AbleToEat = false; + EmitSignal(SignalName.HasBeenKilled,this); } #endregion From 3db23c9a6f2930b26c53ec1e6cab36ce1362f1fb Mon Sep 17 00:00:00 2001 From: Rendo Date: Sat, 12 Jul 2025 00:15:55 +0500 Subject: [PATCH 10/48] 50 sun at start --- scenes/entities/Zombies/cone_zombie.tscn | 2 +- scenes/prototype_survival.tscn | 1 + 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/scenes/entities/Zombies/cone_zombie.tscn b/scenes/entities/Zombies/cone_zombie.tscn index be4006a..e3d0bbd 100644 --- a/scenes/entities/Zombies/cone_zombie.tscn +++ b/scenes/entities/Zombies/cone_zombie.tscn @@ -56,7 +56,7 @@ scale = Vector2(0.999832, 0.999832) scale = Vector2(0.99983, 0.99983) [node name="LeftFoot" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/LeftUpperLeg/LeftLowerLeg" index="1"] -scale = Vector2(0.999829, 0.999829) +scale = Vector2(0.99983, 0.99983) [node name="Body" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt" index="3"] scale = Vector2(0.999829, 0.999829) diff --git a/scenes/prototype_survival.tscn b/scenes/prototype_survival.tscn index 8f9b71a..c0f16aa 100644 --- a/scenes/prototype_survival.tscn +++ b/scenes/prototype_survival.tscn @@ -182,6 +182,7 @@ size = Vector2(282, 399) [node name="Data" type="Node" parent="."] script = ExtResource("1_tnxdx") +SunCount = 50.0 [node name="Camera2D" type="Camera2D" parent="."] position = Vector2(481, 200) From 83f20d463791f0d15a3c68e57bdd442cca5e4c27 Mon Sep 17 00:00:00 2001 From: Rendo Date: Sat, 12 Jul 2025 01:13:27 +0500 Subject: [PATCH 11/48] animation libs --- resources/animations/zombies/basic.res | Bin 0 -> 10893 bytes .../animations/zombies/basic_zombie_tree.tres | 24 +- resources/animations/zombies/hobo.res | Bin 0 -> 4486 bytes resources/animations/zombies/hobo_zombie.res | Bin 12589 -> 5498 bytes scenes/entities/Zombies/zombie.tscn | 2533 +---------------- 5 files changed, 43 insertions(+), 2514 deletions(-) create mode 100644 resources/animations/zombies/basic.res create mode 100644 resources/animations/zombies/hobo.res diff --git a/resources/animations/zombies/basic.res b/resources/animations/zombies/basic.res new file mode 100644 index 0000000000000000000000000000000000000000..1fd70a09913afe02dd1a99508cc5b325f25c95f7 GIT binary patch literal 10893 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 delta 11248 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 literal 0 HcmV?d00001 diff --git a/assets/sprites/atlases/plants/nerdus.png.import b/assets/sprites/atlases/plants/nerdus.png.import new file mode 100644 index 0000000..7c1a08a --- /dev/null +++ b/assets/sprites/atlases/plants/nerdus.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://b06e8xhdy77d1" +path="res://.godot/imported/nerdus.png-ec431205ffd49ae84928c7fa5c535086.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/sprites/atlases/plants/nerdus.png" +dest_files=["res://.godot/imported/nerdus.png-ec431205ffd49ae84928c7fa5c535086.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/sprites/atlases/plants/nerdus_attack.png b/assets/sprites/atlases/plants/nerdus_attack.png new file mode 100644 index 0000000000000000000000000000000000000000..a81d19c70b9d676dc47092d97d269c61b652901b GIT binary patch literal 17148 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 literal 0 HcmV?d00001 diff --git a/assets/sprites/atlases/plants/nerdus_attack.png.import b/assets/sprites/atlases/plants/nerdus_attack.png.import new file mode 100644 index 0000000..1c7f55e --- /dev/null +++ b/assets/sprites/atlases/plants/nerdus_attack.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://pkss10u2g0p" +path="res://.godot/imported/nerdus_attack.png-b5525c75a5c1206ed7ff9828533d4f8d.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/sprites/atlases/plants/nerdus_attack.png" +dest_files=["res://.godot/imported/nerdus_attack.png-b5525c75a5c1206ed7ff9828533d4f8d.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/sprites/atlases/plants/nerdus_idle.png b/assets/sprites/atlases/plants/nerdus_idle.png new file mode 100644 index 0000000000000000000000000000000000000000..b1e7a762ba106f0f447c6e4a12b62c0f4e685e3d GIT binary patch literal 16212 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 K;-~u-!T$^3_gy~# literal 0 HcmV?d00001 diff --git a/assets/sprites/atlases/plants/nerdus_idle.png.import b/assets/sprites/atlases/plants/nerdus_idle.png.import new file mode 100644 index 0000000..6fce0e1 --- /dev/null +++ b/assets/sprites/atlases/plants/nerdus_idle.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://cx3xjcaqqawr5" +path="res://.godot/imported/nerdus_idle.png-460516daa87af0de882346b10c06ae5d.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/sprites/atlases/plants/nerdus_idle.png" +dest_files=["res://.godot/imported/nerdus_idle.png-460516daa87af0de882346b10c06ae5d.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/resources/effects/GarlicEffect.tres b/resources/effects/GarlicEffect.tres index 5c9f170..5696f04 100644 --- a/resources/effects/GarlicEffect.tres +++ b/resources/effects/GarlicEffect.tres @@ -4,5 +4,5 @@ [resource] script = ExtResource("1_rfumy") -Duration = 0.25 +Duration = 1.0 Slot = "garlic" diff --git a/resources/effects/NerdusEffect.tres b/resources/effects/NerdusEffect.tres new file mode 100644 index 0000000..b2bb49f --- /dev/null +++ b/resources/effects/NerdusEffect.tres @@ -0,0 +1,8 @@ +[gd_resource type="Resource" load_steps=2 format=3 uid="uid://dme4nvp28otq6"] + +[ext_resource type="Script" uid="uid://bb6lv1djnqjaw" path="res://scripts/systems/effects/GarlicEffect.cs" id="1_bd12u"] + +[resource] +script = ExtResource("1_bd12u") +Duration = 0.25 +Slot = "garlic" diff --git a/resources/plants/Nerdus.tres b/resources/plants/Nerdus.tres new file mode 100644 index 0000000..90edeb0 --- /dev/null +++ b/resources/plants/Nerdus.tres @@ -0,0 +1,21 @@ +[gd_resource type="Resource" script_class="PlantResource" load_steps=5 format=3 uid="uid://do7m0lfki5ere"] + +[ext_resource type="Texture2D" uid="uid://b06e8xhdy77d1" path="res://assets/sprites/atlases/plants/nerdus.png" id="1_of51r"] +[ext_resource type="PackedScene" uid="uid://k5aj2slxar7w" path="res://scenes/entities/plants/nerdus.tscn" id="2_0i6qf"] +[ext_resource type="Script" uid="uid://cyenlko1knygw" path="res://scripts/resources/PlantResource.cs" id="3_30qd0"] + +[sub_resource type="AtlasTexture" id="AtlasTexture_ivp5w"] +atlas = ExtResource("1_of51r") +region = Rect2(477, 9, 60, 59) + +[resource] +script = ExtResource("3_30qd0") +name_key = "nerdus" +description_key = "nerdus_desc" +Cost = 100.0 +Scene = ExtResource("2_0i6qf") +ReloadTime = 10.0 +ReloadProgress = 0.0 +Preview = SubResource("AtlasTexture_ivp5w") +Layer = 1 +metadata/_custom_type_script = "uid://cyenlko1knygw" diff --git a/scenes/entities/plants/garlic.tscn b/scenes/entities/plants/garlic.tscn index 7665461..db05bc1 100644 --- a/scenes/entities/plants/garlic.tscn +++ b/scenes/entities/plants/garlic.tscn @@ -84,6 +84,7 @@ shape = SubResource("RectangleShape2D_thlvs") [node name="Behaviour" type="Node" parent="." index="4"] script = ExtResource("4_bv44h") +parameters = Array[String](["parameters/Tree/blend_position"]) [node name="ReturnEffect" type="Node" parent="." index="5"] script = ExtResource("5_oob20") diff --git a/scenes/entities/plants/nerdus.tscn b/scenes/entities/plants/nerdus.tscn new file mode 100644 index 0000000..c6a29aa --- /dev/null +++ b/scenes/entities/plants/nerdus.tscn @@ -0,0 +1,293 @@ +[gd_scene load_steps=31 format=3 uid="uid://k5aj2slxar7w"] + +[ext_resource type="PackedScene" uid="uid://b1hjjbdwf1rtc" path="res://scenes/templates/plant_template.tscn" id="1_8ui1h"] +[ext_resource type="Texture2D" uid="uid://b06e8xhdy77d1" path="res://assets/sprites/atlases/plants/nerdus.png" id="2_614v4"] +[ext_resource type="Script" uid="uid://dcokqes5wwo3k" path="res://scripts/plants/NerdusReturnAttack.cs" id="3_614v4"] +[ext_resource type="Resource" uid="uid://dme4nvp28otq6" path="res://resources/effects/NerdusEffect.tres" id="4_ga4vy"] +[ext_resource type="Script" uid="uid://btkmd86pn828y" path="res://scripts/plants/behaviours/HpBasedBehaviour.cs" id="5_o1ggp"] + +[sub_resource type="Animation" id="Animation_ga4vy"] +length = 0.001 +tracks/0/type = "value" +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/path = NodePath("Sprite2D:frame") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 1, +"values": [0] +} + +[sub_resource type="AnimationLibrary" id="AnimationLibrary_o1ggp"] +_data = { +&"RESET": SubResource("Animation_ga4vy") +} + +[sub_resource type="Animation" id="Animation_yxvnw"] +length = 1.16668 +loop_mode = 2 +step = 0.0833333 +tracks/0/type = "value" +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/path = NodePath("Sprite2D:frame") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/keys = { +"times": PackedFloat32Array(0, 0.166667, 0.333333, 0.5, 0.666667, 0.833333), +"transitions": PackedFloat32Array(1, 1, 1, 1, 1, 1), +"update": 1, +"values": [0, 1, 2, 3, 4, 5] +} + +[sub_resource type="Animation" id="Animation_o12iv"] +length = 1.16668 +loop_mode = 2 +step = 0.0833333 +tracks/0/type = "value" +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/path = NodePath("Sprite2D:frame") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/keys = { +"times": PackedFloat32Array(0, 0.166667, 0.333333, 0.5, 0.666667, 0.833333, 1), +"transitions": PackedFloat32Array(1, 1, 1, 1, 1, 1, 1), +"update": 1, +"values": [7, 8, 9, 10, 11, 12, 13] +} + +[sub_resource type="Animation" id="Animation_6e60l"] +length = 1.16668 +loop_mode = 2 +step = 0.0833333 +tracks/0/type = "value" +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/path = NodePath("Sprite2D:frame") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/keys = { +"times": PackedFloat32Array(0, 0.166667, 0.333333, 0.5, 0.666667, 0.833333, 1), +"transitions": PackedFloat32Array(1, 1, 1, 1, 1, 1, 1), +"update": 1, +"values": [14, 15, 16, 17, 18, 19, 20] +} + +[sub_resource type="Animation" id="Animation_v7ffp"] +length = 0.500008 +step = 0.0833333 +tracks/0/type = "value" +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/path = NodePath("Sprite2D:frame") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/keys = { +"times": PackedFloat32Array(0, 0.0833333, 0.166667, 0.25, 0.333333, 0.416667), +"transitions": PackedFloat32Array(1, 1, 1, 1, 1, 1), +"update": 1, +"values": [21, 22, 23, 24, 25, 26] +} +tracks/1/type = "method" +tracks/1/imported = false +tracks/1/enabled = true +tracks/1/path = NodePath("Hurtbox") +tracks/1/interp = 1 +tracks/1/loop_wrap = true +tracks/1/keys = { +"times": PackedFloat32Array(0.416667), +"transitions": PackedFloat32Array(1), +"values": [{ +"args": [], +"method": &"ReturnAllDamage" +}] +} + +[sub_resource type="Animation" id="Animation_rb7ob"] +length = 0.500008 +step = 0.0833333 +tracks/0/type = "value" +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/path = NodePath("Sprite2D:frame") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/keys = { +"times": PackedFloat32Array(0, 0.0833333, 0.166667, 0.25, 0.333333, 0.416667), +"transitions": PackedFloat32Array(1, 1, 1, 1, 1, 1), +"update": 1, +"values": [28, 29, 30, 31, 32, 33] +} +tracks/1/type = "method" +tracks/1/imported = false +tracks/1/enabled = true +tracks/1/path = NodePath("Hurtbox") +tracks/1/interp = 1 +tracks/1/loop_wrap = true +tracks/1/keys = { +"times": PackedFloat32Array(0.416667), +"transitions": PackedFloat32Array(1), +"values": [{ +"args": [], +"method": &"ReturnAllDamage" +}] +} + +[sub_resource type="Animation" id="Animation_6a4q1"] +length = 0.500008 +step = 0.0833333 +tracks/0/type = "value" +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/path = NodePath("Sprite2D:frame") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/keys = { +"times": PackedFloat32Array(0, 0.0833333, 0.166667, 0.25, 0.333333, 0.416667), +"transitions": PackedFloat32Array(1, 1, 1, 1, 1, 1), +"update": 1, +"values": [35, 36, 37, 38, 39, 40] +} +tracks/1/type = "method" +tracks/1/imported = false +tracks/1/enabled = true +tracks/1/path = NodePath("Hurtbox") +tracks/1/interp = 1 +tracks/1/loop_wrap = true +tracks/1/keys = { +"times": PackedFloat32Array(0.416667), +"transitions": PackedFloat32Array(1), +"values": [{ +"args": [], +"method": &"ReturnAllDamage" +}] +} + +[sub_resource type="AnimationLibrary" id="AnimationLibrary_pddnl"] +_data = { +&"attack_full": SubResource("Animation_v7ffp"), +&"attack_hdamage": SubResource("Animation_6a4q1"), +&"attack_ldamage": SubResource("Animation_rb7ob"), +&"idle_full": SubResource("Animation_yxvnw"), +&"idle_hdamage": SubResource("Animation_6e60l"), +&"idle_ldamage": SubResource("Animation_o12iv") +} + +[sub_resource type="AnimationNodeTimeScale" id="AnimationNodeTimeScale_8ui1h"] + +[sub_resource type="AnimationNodeAnimation" id="AnimationNodeAnimation_o12iv"] +animation = &"nerdus/attack_full" + +[sub_resource type="AnimationNodeAnimation" id="AnimationNodeAnimation_6e60l"] +animation = &"nerdus/attack_ldamage" + +[sub_resource type="AnimationNodeAnimation" id="AnimationNodeAnimation_v7ffp"] +animation = &"nerdus/attack_hdamage" + +[sub_resource type="AnimationNodeBlendSpace1D" id="AnimationNodeBlendSpace1D_614v4"] +blend_point_0/node = SubResource("AnimationNodeAnimation_o12iv") +blend_point_0/pos = 1.0 +blend_point_1/node = SubResource("AnimationNodeAnimation_6e60l") +blend_point_1/pos = 0.5 +blend_point_2/node = SubResource("AnimationNodeAnimation_v7ffp") +blend_point_2/pos = 0.0 +min_space = 0.0 + +[sub_resource type="AnimationNodeAnimation" id="AnimationNodeAnimation_ga4vy"] +animation = &"nerdus/idle_full" + +[sub_resource type="AnimationNodeAnimation" id="AnimationNodeAnimation_o1ggp"] +animation = &"nerdus/idle_hdamage" + +[sub_resource type="AnimationNodeAnimation" id="AnimationNodeAnimation_yxvnw"] +animation = &"nerdus/idle_ldamage" + +[sub_resource type="AnimationNodeBlendSpace1D" id="AnimationNodeBlendSpace1D_o12iv"] +blend_point_0/node = SubResource("AnimationNodeAnimation_ga4vy") +blend_point_0/pos = 1.0 +blend_point_1/node = SubResource("AnimationNodeAnimation_o1ggp") +blend_point_1/pos = 0.0 +blend_point_2/node = SubResource("AnimationNodeAnimation_yxvnw") +blend_point_2/pos = 0.5 +min_space = 0.0 +blend_mode = 1 + +[sub_resource type="AnimationNodeStateMachineTransition" id="AnimationNodeStateMachineTransition_6e60l"] +advance_mode = 2 + +[sub_resource type="AnimationNodeStateMachineTransition" id="AnimationNodeStateMachineTransition_v7ffp"] +switch_mode = 2 +advance_mode = 2 + +[sub_resource type="AnimationNodeStateMachineTransition" id="AnimationNodeStateMachineTransition_rb7ob"] +advance_mode = 2 +advance_expression = "get(\"triggered\") +" + +[sub_resource type="AnimationNodeStateMachine" id="AnimationNodeStateMachine_rb7ob"] +states/Attack/node = SubResource("AnimationNodeBlendSpace1D_614v4") +states/Attack/position = Vector2(558, 100) +states/Idle/node = SubResource("AnimationNodeBlendSpace1D_o12iv") +states/Idle/position = Vector2(337, 100) +transitions = ["Start", "Idle", SubResource("AnimationNodeStateMachineTransition_6e60l"), "Attack", "Idle", SubResource("AnimationNodeStateMachineTransition_v7ffp"), "Idle", "Attack", SubResource("AnimationNodeStateMachineTransition_rb7ob")] +graph_offset = Vector2(98, -52) + +[sub_resource type="AnimationNodeBlendTree" id="AnimationNodeBlendTree_6a4q1"] +graph_offset = Vector2(-406, 116) +nodes/TimeScale/node = SubResource("AnimationNodeTimeScale_8ui1h") +nodes/TimeScale/position = Vector2(100, 140) +nodes/Tree/node = SubResource("AnimationNodeStateMachine_rb7ob") +nodes/Tree/position = Vector2(-220, 160) +node_connections = [&"TimeScale", 0, &"Tree", &"output", 0, &"TimeScale"] + +[sub_resource type="CircleShape2D" id="CircleShape2D_8ui1h"] +radius = 24.0 + +[sub_resource type="RectangleShape2D" id="RectangleShape2D_ga4vy"] +size = Vector2(80, 48) + +[node name="Nerdus" instance=ExtResource("1_8ui1h")] +MaxHP = 200.0 + +[node name="Sprite2D" parent="." index="0"] +texture = ExtResource("2_614v4") +hframes = 7 +vframes = 6 + +[node name="AnimationPlayer" parent="." index="1"] +libraries = { +&"": SubResource("AnimationLibrary_o1ggp"), +&"nerdus": SubResource("AnimationLibrary_pddnl") +} + +[node name="AnimationTree" parent="." index="2"] +tree_root = SubResource("AnimationNodeBlendTree_6a4q1") +advance_expression_base_node = NodePath("../Hurtbox") +parameters/TimeScale/scale = 1.0 +parameters/Tree/Attack/blend_position = 1.0 +parameters/Tree/Idle/blend_position = 1.0 + +[node name="CollisionShape2D" type="CollisionShape2D" parent="Hitbox" index="0"] +position = Vector2(0, 3) +shape = SubResource("CircleShape2D_8ui1h") + +[node name="Hurtbox" type="Area2D" parent="." index="4"] +collision_layer = 0 +collision_mask = 8 +script = ExtResource("3_614v4") +returnEffect = ExtResource("4_ga4vy") +bitesToPeas = 1.6 + +[node name="CollisionShape2D" type="CollisionShape2D" parent="Hurtbox" index="0"] +position = Vector2(7, 3) +shape = SubResource("RectangleShape2D_ga4vy") + +[node name="Behaviour" type="Node" parent="." index="5"] +script = ExtResource("5_o1ggp") +parameters = Array[String](["parameters/Tree/Attack/blend_position", "parameters/Tree/Idle/blend_position"]) + +[connection signal="OnHPChanged" from="." to="Hurtbox" method="OnHPChanged"] diff --git a/scenes/entities/plants/wallnut.tscn b/scenes/entities/plants/wallnut.tscn index ff7daaa..fa7859c 100644 --- a/scenes/entities/plants/wallnut.tscn +++ b/scenes/entities/plants/wallnut.tscn @@ -44,6 +44,7 @@ MaxHP = 600.0 texture = ExtResource("2_o5tda") hframes = 12 vframes = 3 +frame = 4 [node name="AnimationPlayer" parent="." index="1"] libraries = { @@ -61,5 +62,6 @@ shape = SubResource("RectangleShape2D_khltr") [node name="Behaviour" type="Node" parent="." index="4"] script = ExtResource("4_cjtyy") +parameters = Array[String](["parameters/Tree/blend_position"]) [connection signal="OnHPChanged" from="." to="Behaviour" method="OnHPChanged"] diff --git a/scripts/plants/NerdusReturnAttack.cs b/scripts/plants/NerdusReturnAttack.cs new file mode 100644 index 0000000..10eb55d --- /dev/null +++ b/scripts/plants/NerdusReturnAttack.cs @@ -0,0 +1,48 @@ +using Godot; +using Newlon.Systems.Effects; +using System.Collections.Generic; +namespace Newlon.Components.Plants; + +public partial class NerdusReturnAttack : Area2D +{ + private float returnAmount; + [Export] private Effect returnEffect; + [Export] private float bitesToPeas = 1; + public bool triggered = false; + private List entities = new(); + public override void _Ready() + { + AreaEntered += OnAreaEntered; + AreaExited += OnAreaExited; + } + private void OnAreaEntered(Area2D area) + { + if (area.GetParent() is Entity entity) + { + entities.Add(entity); + } + } + private void OnAreaExited(Area2D area) + { + if (area.GetParent() is Entity entity && entities.Contains(entity)) + { + entities.Remove(entity); + } + } + private void OnHPChanged(float delta, Node source) + { + if (delta >= 0) return; + returnAmount -= delta; + triggered = true; + } + public void ReturnAllDamage() + { + foreach (var entity in entities) + { + entity.TakeDamage(returnAmount * bitesToPeas, GetParent()); + entity.GiveEffect(returnEffect); + } + returnAmount = 0; + triggered = false; + } +} diff --git a/scripts/plants/NerdusReturnAttack.cs.uid b/scripts/plants/NerdusReturnAttack.cs.uid new file mode 100644 index 0000000..32190f5 --- /dev/null +++ b/scripts/plants/NerdusReturnAttack.cs.uid @@ -0,0 +1 @@ +uid://dcokqes5wwo3k diff --git a/scripts/plants/behaviours/HpBasedBehaviour.cs b/scripts/plants/behaviours/HpBasedBehaviour.cs index 4c7fe1e..95cb94f 100644 --- a/scripts/plants/behaviours/HpBasedBehaviour.cs +++ b/scripts/plants/behaviours/HpBasedBehaviour.cs @@ -1,18 +1,25 @@ using Godot; +using Godot.Collections; namespace Newlon.Components.Plants.Behaviours; public partial class HpBasedBehaviour : BaseBehaviour { private RuntimePlantData _data; + [Export] private Array parameters; + public override void _Ready() { base._Ready(); _data = GetParent(); } - public void OnHPChanged(int amount,Node origin) + public void OnHPChanged(int amount, Node origin) { - _tree.Set("parameters/Tree/blend_position",(float)_data.HP/_data.MaxHP); + var calc = (float)_data.HP / _data.MaxHP; + foreach (var par in parameters) + { + _tree.Set(par, calc); + } } } diff --git a/scripts/systems/effects/GarlicEffect.cs b/scripts/systems/effects/GarlicEffect.cs index 01adecc..0900ff6 100644 --- a/scripts/systems/effects/GarlicEffect.cs +++ b/scripts/systems/effects/GarlicEffect.cs @@ -5,6 +5,7 @@ namespace Newlon.Systems.Effects; public partial class GarlicEffect : Effect { + [Export] private float tilesWalked = 0.2f; RandomNumberGenerator RandomNumberGenerator; public override void Enter(Node target) @@ -43,9 +44,10 @@ public partial class GarlicEffect : Effect mult = -1; } } + zombieData.AbleToEat = false; var tween = zombieData.CreateTween(); - tween.TweenProperty(zombieData,"position:y",zombieData.GlobalPosition.Y + Utility.TileHeight * mult, 1.0); - tween.Parallel().TweenProperty(zombieData, "position:x", zombieData.GlobalPosition.X - Utility.TileWidth / 10.0, 1.0); + tween.TweenProperty(zombieData,"position:y",zombieData.GlobalPosition.Y + Utility.TileHeight * mult, Duration); + tween.Parallel().TweenProperty(zombieData, "position:x", zombieData.GlobalPosition.X - Utility.TileHeight * tilesWalked, Duration); tween.TweenCallback(Callable.From(() => {zombieData.AbleToEat = true;})); } } From 2ce5b368cec74bc8b6464cf9085ca88aa88279ef Mon Sep 17 00:00:00 2001 From: Rendo Date: Sun, 13 Jul 2025 04:55:33 +0500 Subject: [PATCH 42/48] cucumber --- resources/plants/Cucumber.tres | 21 +++ scenes/entities/Zombies/hobo.tscn | 55 +++--- scenes/entities/plants/cucumber.tscn | 171 ++++++++++++++++++ .../plants/cucumber.tscn7041666357.tmp | 171 ++++++++++++++++++ scenes/entities/plants/nerdus.tscn | 6 +- scenes/gui/runtime_gui.tscn | 2 +- scenes/projectiles/cucumber_projectile.tscn | 24 +++ .../cucumber_projectile.tscn7043679061.tmp | 24 +++ .../projectiles/cucumber_projectile_part.tscn | 22 +++ scripts/LinearProjectile.cs | 4 +- scripts/level/PoolContainer.cs | 6 + scripts/plants/behaviours/HpBasedBehaviour.cs | 4 +- 12 files changed, 482 insertions(+), 28 deletions(-) create mode 100644 resources/plants/Cucumber.tres create mode 100644 scenes/entities/plants/cucumber.tscn create mode 100644 scenes/entities/plants/cucumber.tscn7041666357.tmp create mode 100644 scenes/projectiles/cucumber_projectile.tscn create mode 100644 scenes/projectiles/cucumber_projectile.tscn7043679061.tmp create mode 100644 scenes/projectiles/cucumber_projectile_part.tscn diff --git a/resources/plants/Cucumber.tres b/resources/plants/Cucumber.tres new file mode 100644 index 0000000..36790af --- /dev/null +++ b/resources/plants/Cucumber.tres @@ -0,0 +1,21 @@ +[gd_resource type="Resource" script_class="PlantResource" load_steps=5 format=3 uid="uid://cl5bsa2unhcl0"] + +[ext_resource type="Script" uid="uid://cyenlko1knygw" path="res://scripts/resources/PlantResource.cs" id="1_jrx81"] +[ext_resource type="Texture2D" uid="uid://bt76iudw2qgnv" path="res://assets/sprites/atlases/plants/cumbucer.png" id="1_tdg4d"] +[ext_resource type="PackedScene" uid="uid://cjoyh54cpjla7" path="res://scenes/entities/plants/cucumber.tscn" id="2_0mr6r"] + +[sub_resource type="AtlasTexture" id="AtlasTexture_3gogt"] +atlas = ExtResource("1_tdg4d") +region = Rect2(2, 1, 41, 65) + +[resource] +script = ExtResource("1_jrx81") +name_key = "cucumber" +description_key = "cucumber_desc" +Cost = 75.0 +Scene = ExtResource("2_0mr6r") +ReloadTime = 5.0 +ReloadProgress = 0.0 +Preview = SubResource("AtlasTexture_3gogt") +Layer = 1 +metadata/_custom_type_script = "uid://cyenlko1knygw" diff --git a/scenes/entities/Zombies/hobo.tscn b/scenes/entities/Zombies/hobo.tscn index 3af6e50..3eb6cf7 100644 --- a/scenes/entities/Zombies/hobo.tscn +++ b/scenes/entities/Zombies/hobo.tscn @@ -1,7 +1,8 @@ -[gd_scene load_steps=62 format=3 uid="uid://bgqmwsb6ynm81"] +[gd_scene load_steps=64 format=3 uid="uid://bgqmwsb6ynm81"] [ext_resource type="PackedScene" uid="uid://co11v3w8hbwgf" path="res://scenes/entities/Zombies/zombie.tscn" id="1_fnu7s"] [ext_resource type="Shader" uid="uid://d0eo5uuj222c4" path="res://assets/shaders/CG_color_blender.gdshader" id="2_6qr4h"] +[ext_resource type="Script" uid="uid://bcc7skl7ts6sh" path="res://scripts/systems/effects/Effect.cs" id="2_vn3j1"] [ext_resource type="Resource" uid="uid://dsg1vjx76ifgu" path="res://resources/effects/GarlicEffect.tres" id="3_b583s"] [ext_resource type="Script" uid="uid://dt5uj25u0g6y3" path="res://scripts/particles/FallParticle.cs" id="3_tu6af"] [ext_resource type="Script" uid="uid://c5v2og85t7s6j" path="res://scripts/zombies/behaviours/HoboBehaviour.cs" id="4_5selg"] @@ -652,6 +653,13 @@ _data = { &"RESET": SubResource("Animation_vn3j1") } +[sub_resource type="Resource" id="Resource_n380g"] +resource_local_to_scene = true +script = ExtResource("4_c1y3b") +flat_value = 5.0 +percentage_value = 0.0 +mult_value = 1.0 + [sub_resource type="AnimationNodeTimeScale" id="AnimationNodeTimeScale_2q05d"] [sub_resource type="AnimationNodeAnimation" id="AnimationNodeAnimation_vn3j1"] @@ -749,7 +757,7 @@ mult_value = 1.0 [node name="Hobo" node_paths=PackedStringArray("_armor") instance=ExtResource("1_fnu7s")] _armor = NodePath("CanArmor") MaxHP = 130.0 -_effectImmunities = [ExtResource("3_b583s")] +_effectImmunities = Array[ExtResource("2_vn3j1")]([ExtResource("3_b583s")]) [node name="CanvasGroup" parent="." index="0"] material = SubResource("ShaderMaterial_w8pya") @@ -761,16 +769,16 @@ scale = Vector2(0.999902, 0.999902) texture = SubResource("AtlasTexture_txjqc") [node name="RightUpperLeg" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt" index="1"] -scale = Vector2(0.999832, 0.999832) +scale = Vector2(0.99983, 0.99983) [node name="Right_Upper_Leg" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/RightUpperLeg" index="0"] texture = SubResource("AtlasTexture_b583s") [node name="RightLowerLeg" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/RightUpperLeg" index="1"] -scale = Vector2(0.999831, 0.999831) +scale = Vector2(0.999829, 0.999829) [node name="RightFoot" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/RightUpperLeg/RightLowerLeg" index="0"] -scale = Vector2(0.999826, 0.999826) +scale = Vector2(0.999827, 0.999827) [node name="Right_Foot" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/RightUpperLeg/RightLowerLeg/RightFoot" index="0"] texture = SubResource("AtlasTexture_uoit3") @@ -779,34 +787,34 @@ texture = SubResource("AtlasTexture_uoit3") texture = SubResource("AtlasTexture_vn3j1") [node name="LeftUpperLeg" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt" index="2"] -scale = Vector2(0.999826, 0.999826) +scale = Vector2(0.999827, 0.999827) [node name="Left_Upper_Leg" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/LeftUpperLeg" index="0"] texture = SubResource("AtlasTexture_yb81c") [node name="LeftLowerLeg" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/LeftUpperLeg" index="1"] -scale = Vector2(0.999827, 0.999827) +scale = Vector2(0.999831, 0.999831) [node name="Left_Lower_Leg" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/LeftUpperLeg/LeftLowerLeg" index="0"] texture = SubResource("AtlasTexture_nlwsb") [node name="LeftFoot" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/LeftUpperLeg/LeftLowerLeg" index="1"] -scale = Vector2(0.999816, 0.999816) +scale = Vector2(0.999817, 0.999817) [node name="Left_Foot" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/LeftUpperLeg/LeftLowerLeg/LeftFoot" index="0"] texture = SubResource("AtlasTexture_8y6c0") [node name="Body" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt" index="3"] -scale = Vector2(0.999832, 0.999832) +scale = Vector2(0.999826, 0.999826) [node name="RightUpperArm" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body" index="0"] -scale = Vector2(0.99982, 0.99982) +scale = Vector2(0.999828, 0.999828) [node name="Right_Upper_Arm" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/RightUpperArm" index="0"] texture = SubResource("AtlasTexture_nc6p3") [node name="RightLowerArm" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/RightUpperArm" index="1"] -scale = Vector2(0.999819, 0.999819) +scale = Vector2(0.999818, 0.999818) [node name="RightHand" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/RightUpperArm/RightLowerArm" index="0"] scale = Vector2(0.999828, 0.999828) @@ -821,7 +829,7 @@ texture = SubResource("AtlasTexture_op0h6") texture = SubResource("AtlasTexture_0s5wm") [node name="Tie" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body" index="2"] -rotation = 0.0101791 +rotation = 0.00923548 scale = Vector2(1e-05, 1e-05) [node name="Tie" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/Tie" index="0"] @@ -863,15 +871,17 @@ scale = Vector2(0.999827, 0.999827) texture = SubResource("AtlasTexture_pjhfy") [node name="Right_Eye" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/Head/HeadParticle/Head" index="0"] -position = Vector2(-16, -7.99999) +position = Vector2(-16, -8) +scale = Vector2(1, 1) [node name="Left_Eye" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/Head/HeadParticle/Head" index="1"] position = Vector2(-4, -9) +scale = Vector2(1, 1) [node name="Jaw" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/Head/HeadParticle/Head" index="2"] position = Vector2(-3, 3) -rotation = -0.0165557 -scale = Vector2(0.999831, 0.999831) +rotation = -0.0150209 +scale = Vector2(0.999828, 0.999828) texture = SubResource("AtlasTexture_7cvmi") offset = Vector2(-14, -2) @@ -902,7 +912,7 @@ _threshold = 0.333 _observedArmor = NodePath("../../../../../../../../../../CanArmor") [node name="Jaw" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/Head" index="1"] -scale = Vector2(0.999831, 0.999831) +scale = Vector2(0.999828, 0.999828) [node name="TrashcanLid" type="Bone2D" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/Head" index="4"] position = Vector2(-0.0022974, -17.0131) @@ -917,24 +927,24 @@ editor_settings/show_bone_gizmo = false remote_path = NodePath("../../HeadParticle/Head/TrashcanLid/Trashcan_lid") [node name="LeftUpperArm" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body" index="5"] -scale = Vector2(0.999821, 0.999821) +scale = Vector2(0.999826, 0.999826) [node name="Left_Upper_Arm" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/LeftUpperArm" index="0"] texture = SubResource("AtlasTexture_tebih") [node name="Left_Lower_Arm" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/LeftUpperArm/HandProjectile" index="0"] -rotation = 0.00918239 -scale = Vector2(0.999996, 0.999996) +rotation = 0.00833116 +scale = Vector2(0.999997, 0.999997) texture = SubResource("AtlasTexture_auxav") [node name="Left_Hand" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/LeftUpperArm/HandProjectile/Left_Lower_Arm" index="0"] position = Vector2(-0.99983, 12.9978) -rotation = 0.0 +rotation = -9.31647e-10 scale = Vector2(0.999652, 0.999652) texture = SubResource("AtlasTexture_dntsa") [node name="LeftLowerArm" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/LeftUpperArm" index="2"] -scale = Vector2(0.999826, 0.999826) +scale = Vector2(0.999827, 0.999827) [node name="LeftHand" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/LeftUpperArm/LeftLowerArm" index="0"] scale = Vector2(0.999822, 0.999822) @@ -946,6 +956,9 @@ libraries = { &"hobo": ExtResource("8_yb81c") } +[node name="Eatbox" parent="." index="2"] +_damage = SubResource("Resource_n380g") + [node name="AnimationTree" parent="." index="3"] tree_root = SubResource("AnimationNodeBlendTree_txjqc") advance_expression_base_node = NodePath("../Behaviour") diff --git a/scenes/entities/plants/cucumber.tscn b/scenes/entities/plants/cucumber.tscn new file mode 100644 index 0000000..bd8256d --- /dev/null +++ b/scenes/entities/plants/cucumber.tscn @@ -0,0 +1,171 @@ +[gd_scene load_steps=23 format=3 uid="uid://cjoyh54cpjla7"] + +[ext_resource type="PackedScene" uid="uid://b1hjjbdwf1rtc" path="res://scenes/templates/plant_template.tscn" id="1_65f4u"] +[ext_resource type="Texture2D" uid="uid://bt76iudw2qgnv" path="res://assets/sprites/atlases/plants/cumbucer.png" id="2_ig0op"] +[ext_resource type="Script" uid="uid://dn53jvpjyg63l" path="res://scripts/plants/Eyesight.cs" id="3_d45iq"] +[ext_resource type="Script" uid="uid://ceprqkraw3v6m" path="res://scripts/plants/Shooter.cs" id="4_sckvu"] +[ext_resource type="PackedScene" uid="uid://c1ig40gtdcb60" path="res://scenes/projectiles/cucumber_projectile.tscn" id="5_sckvu"] +[ext_resource type="Script" uid="uid://c4jy0cnbnx33h" path="res://scripts/TimeScalableTimer.cs" id="6_xwpd6"] +[ext_resource type="Script" uid="uid://bdk5iqtw4xbkl" path="res://scripts/plants/behaviours/PeashooterBehaviour.cs" id="7_q31qc"] + +[sub_resource type="Animation" id="Animation_n1xkd"] +length = 0.001 +tracks/0/type = "value" +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/path = NodePath("Sprite2D:frame") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 1, +"values": [10] +} + +[sub_resource type="AnimationLibrary" id="AnimationLibrary_gogcg"] +_data = { +&"RESET": SubResource("Animation_n1xkd") +} + +[sub_resource type="Animation" id="Animation_ig0op"] +length = 0.666675 +loop_mode = 2 +step = 0.0833333 +tracks/0/type = "value" +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/path = NodePath("Sprite2D:frame") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/keys = { +"times": PackedFloat32Array(0, 0.166667, 0.333333, 0.5, 0.666667), +"transitions": PackedFloat32Array(1, 1, 1, 1, 1), +"update": 1, +"values": [10, 11, 12, 13, 14] +} + +[sub_resource type="Animation" id="Animation_d45iq"] +length = 0.833342 +step = 0.0833333 +tracks/0/type = "value" +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/path = NodePath("Sprite2D:frame") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/keys = { +"times": PackedFloat32Array(0, 0.0833333, 0.166667, 0.25, 0.333333, 0.416667, 0.5, 0.583333, 0.666667, 0.75), +"transitions": PackedFloat32Array(1, 1, 1, 1, 1, 1, 1, 1, 1, 1), +"update": 1, +"values": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] +} +tracks/1/type = "method" +tracks/1/imported = false +tracks/1/enabled = true +tracks/1/path = NodePath("Shooter") +tracks/1/interp = 1 +tracks/1/loop_wrap = true +tracks/1/keys = { +"times": PackedFloat32Array(0.5), +"transitions": PackedFloat32Array(1), +"values": [{ +"args": [], +"method": &"Shoot" +}] +} + +[sub_resource type="AnimationLibrary" id="AnimationLibrary_n1xkd"] +_data = { +&"attack": SubResource("Animation_d45iq"), +&"idle": SubResource("Animation_ig0op") +} + +[sub_resource type="AnimationNodeTimeScale" id="AnimationNodeTimeScale_ig0op"] + +[sub_resource type="AnimationNodeAnimation" id="AnimationNodeAnimation_d45iq"] +animation = &"cucumber/attack" + +[sub_resource type="AnimationNodeAnimation" id="AnimationNodeAnimation_n1xkd"] +animation = &"cucumber/idle" + +[sub_resource type="AnimationNodeStateMachineTransition" id="AnimationNodeStateMachineTransition_gogcg"] +advance_mode = 2 + +[sub_resource type="AnimationNodeStateMachineTransition" id="AnimationNodeStateMachineTransition_ie74j"] +advance_mode = 2 +advance_condition = &"ready" + +[sub_resource type="AnimationNodeStateMachineTransition" id="AnimationNodeStateMachineTransition_sckvu"] +switch_mode = 2 +advance_mode = 2 + +[sub_resource type="AnimationNodeStateMachine" id="AnimationNodeStateMachine_jbggv"] +states/cucumber_attack/node = SubResource("AnimationNodeAnimation_d45iq") +states/cucumber_attack/position = Vector2(628, 100) +states/cucumber_idle/node = SubResource("AnimationNodeAnimation_n1xkd") +states/cucumber_idle/position = Vector2(374, 100) +transitions = ["Start", "cucumber_idle", SubResource("AnimationNodeStateMachineTransition_gogcg"), "cucumber_idle", "cucumber_attack", SubResource("AnimationNodeStateMachineTransition_ie74j"), "cucumber_attack", "cucumber_idle", SubResource("AnimationNodeStateMachineTransition_sckvu")] +graph_offset = Vector2(137, -3) + +[sub_resource type="AnimationNodeBlendTree" id="AnimationNodeBlendTree_xwpd6"] +graph_offset = Vector2(-370, 72) +nodes/TimeScale/node = SubResource("AnimationNodeTimeScale_ig0op") +nodes/TimeScale/position = Vector2(60, 140) +nodes/Tree/node = SubResource("AnimationNodeStateMachine_jbggv") +nodes/Tree/position = Vector2(-260, 140) +node_connections = [&"TimeScale", 0, &"Tree", &"output", 0, &"TimeScale"] + +[sub_resource type="CapsuleShape2D" id="CapsuleShape2D_ig0op"] +radius = 13.0 +height = 48.0 + +[sub_resource type="RectangleShape2D" id="RectangleShape2D_n1xkd"] +size = Vector2(26, 600) + +[node name="Cucumber" instance=ExtResource("1_65f4u")] +MaxHP = 30.0 + +[node name="Sprite2D" parent="." index="0"] +texture = ExtResource("2_ig0op") +hframes = 10 +vframes = 2 +frame = 10 + +[node name="AnimationPlayer" parent="." index="1"] +libraries = { +&"": SubResource("AnimationLibrary_gogcg"), +&"cucumber": SubResource("AnimationLibrary_n1xkd") +} + +[node name="AnimationTree" parent="." index="2"] +tree_root = SubResource("AnimationNodeBlendTree_xwpd6") +parameters/TimeScale/scale = 1.0 +parameters/Tree/conditions/ready = false + +[node name="CollisionShape2D" type="CollisionShape2D" parent="Hitbox" index="0"] +shape = SubResource("CapsuleShape2D_ig0op") + +[node name="Eysight" type="Area2D" parent="." index="4"] +collision_layer = 4 +collision_mask = 8 +script = ExtResource("3_d45iq") + +[node name="CollisionShape2D" type="CollisionShape2D" parent="Eysight" index="0"] +shape = SubResource("RectangleShape2D_n1xkd") + +[node name="Shooter" type="Marker2D" parent="." index="5" node_paths=PackedStringArray("_timer")] +script = ExtResource("4_sckvu") +_projectile = ExtResource("5_sckvu") +_timer = NodePath("Timer") + +[node name="Timer" type="Timer" parent="Shooter" index="0" node_paths=PackedStringArray("entity")] +wait_time = 5.0 +one_shot = true +script = ExtResource("6_xwpd6") +entity = NodePath("../..") + +[node name="Behaviour" type="Node" parent="." index="6" node_paths=PackedStringArray("_shootTimer", "_sight")] +script = ExtResource("7_q31qc") +_shootTimer = NodePath("../Shooter/Timer") +_sight = NodePath("../Eysight") diff --git a/scenes/entities/plants/cucumber.tscn7041666357.tmp b/scenes/entities/plants/cucumber.tscn7041666357.tmp new file mode 100644 index 0000000..8b5d203 --- /dev/null +++ b/scenes/entities/plants/cucumber.tscn7041666357.tmp @@ -0,0 +1,171 @@ +[gd_scene load_steps=23 format=3 uid="uid://cjoyh54cpjla7"] + +[ext_resource type="PackedScene" uid="uid://b1hjjbdwf1rtc" path="res://scenes/templates/plant_template.tscn" id="1_65f4u"] +[ext_resource type="Texture2D" uid="uid://bt76iudw2qgnv" path="res://assets/sprites/atlases/plants/cumbucer.png" id="2_ig0op"] +[ext_resource type="Script" uid="uid://dn53jvpjyg63l" path="res://scripts/plants/Eyesight.cs" id="3_d45iq"] +[ext_resource type="Script" uid="uid://ceprqkraw3v6m" path="res://scripts/plants/Shooter.cs" id="4_sckvu"] +[ext_resource type="PackedScene" uid="uid://c1ig40gtdcb60" path="res://scenes/projectiles/cucumber_projectile.tscn" id="5_sckvu"] +[ext_resource type="Script" uid="uid://c4jy0cnbnx33h" path="res://scripts/TimeScalableTimer.cs" id="6_xwpd6"] +[ext_resource type="Script" uid="uid://bdk5iqtw4xbkl" path="res://scripts/plants/behaviours/PeashooterBehaviour.cs" id="7_q31qc"] + +[sub_resource type="Animation" id="Animation_n1xkd"] +length = 0.001 +tracks/0/type = "value" +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/path = NodePath("Sprite2D:frame") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 1, +"values": [10] +} + +[sub_resource type="AnimationLibrary" id="AnimationLibrary_gogcg"] +_data = { +&"RESET": SubResource("Animation_n1xkd") +} + +[sub_resource type="Animation" id="Animation_ig0op"] +length = 0.666675 +loop_mode = 2 +step = 0.0833333 +tracks/0/type = "value" +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/path = NodePath("Sprite2D:frame") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/keys = { +"times": PackedFloat32Array(0, 0.166667, 0.333333, 0.5, 0.666667), +"transitions": PackedFloat32Array(1, 1, 1, 1, 1), +"update": 1, +"values": [10, 11, 12, 13, 14] +} + +[sub_resource type="Animation" id="Animation_d45iq"] +length = 0.833342 +step = 0.0833333 +tracks/0/type = "value" +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/path = NodePath("Sprite2D:frame") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/keys = { +"times": PackedFloat32Array(0, 0.0833333, 0.166667, 0.25, 0.333333, 0.416667, 0.5, 0.583333, 0.666667, 0.75), +"transitions": PackedFloat32Array(1, 1, 1, 1, 1, 1, 1, 1, 1, 1), +"update": 1, +"values": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] +} +tracks/1/type = "method" +tracks/1/imported = false +tracks/1/enabled = true +tracks/1/path = NodePath("Shooter") +tracks/1/interp = 1 +tracks/1/loop_wrap = true +tracks/1/keys = { +"times": PackedFloat32Array(0.5), +"transitions": PackedFloat32Array(1), +"values": [{ +"args": [], +"method": &"Shoot" +}] +} + +[sub_resource type="AnimationLibrary" id="AnimationLibrary_n1xkd"] +_data = { +&"attack": SubResource("Animation_d45iq"), +&"idle": SubResource("Animation_ig0op") +} + +[sub_resource type="AnimationNodeTimeScale" id="AnimationNodeTimeScale_ig0op"] + +[sub_resource type="AnimationNodeAnimation" id="AnimationNodeAnimation_d45iq"] +animation = &"cucumber/attack" + +[sub_resource type="AnimationNodeAnimation" id="AnimationNodeAnimation_n1xkd"] +animation = &"cucumber/idle" + +[sub_resource type="AnimationNodeStateMachineTransition" id="AnimationNodeStateMachineTransition_gogcg"] +advance_mode = 2 + +[sub_resource type="AnimationNodeStateMachineTransition" id="AnimationNodeStateMachineTransition_ie74j"] +advance_mode = 2 +advance_condition = &"ready" + +[sub_resource type="AnimationNodeStateMachineTransition" id="AnimationNodeStateMachineTransition_sckvu"] +switch_mode = 2 +advance_mode = 2 + +[sub_resource type="AnimationNodeStateMachine" id="AnimationNodeStateMachine_jbggv"] +states/cucumber_attack/node = SubResource("AnimationNodeAnimation_d45iq") +states/cucumber_attack/position = Vector2(628, 100) +states/cucumber_idle/node = SubResource("AnimationNodeAnimation_n1xkd") +states/cucumber_idle/position = Vector2(374, 100) +transitions = ["Start", "cucumber_idle", SubResource("AnimationNodeStateMachineTransition_gogcg"), "cucumber_idle", "cucumber_attack", SubResource("AnimationNodeStateMachineTransition_ie74j"), "cucumber_attack", "cucumber_idle", SubResource("AnimationNodeStateMachineTransition_sckvu")] +graph_offset = Vector2(137, -3) + +[sub_resource type="AnimationNodeBlendTree" id="AnimationNodeBlendTree_xwpd6"] +graph_offset = Vector2(-370, 72) +nodes/TimeScale/node = SubResource("AnimationNodeTimeScale_ig0op") +nodes/TimeScale/position = Vector2(60, 140) +nodes/Tree/node = SubResource("AnimationNodeStateMachine_jbggv") +nodes/Tree/position = Vector2(-260, 140) +node_connections = [&"TimeScale", 0, &"Tree", &"output", 0, &"TimeScale"] + +[sub_resource type="CapsuleShape2D" id="CapsuleShape2D_ig0op"] +radius = 13.0 +height = 48.0 + +[sub_resource type="RectangleShape2D" id="RectangleShape2D_n1xkd"] +size = Vector2(26, 600) + +[node name="Cucumber" instance=ExtResource("1_65f4u")] +MaxHP = 30.0 + +[node name="Sprite2D" parent="." index="0"] +texture = ExtResource("2_ig0op") +hframes = 10 +vframes = 2 +frame = 10 + +[node name="AnimationPlayer" parent="." index="1"] +libraries = { +&"": SubResource("AnimationLibrary_gogcg"), +&"cucumber": SubResource("AnimationLibrary_n1xkd") +} + +[node name="AnimationTree" parent="." index="2"] +tree_root = SubResource("AnimationNodeBlendTree_xwpd6") +parameters/TimeScale/scale = 1.0 +parameters/Tree/conditions/ready = false + +[node name="CollisionShape2D" type="CollisionShape2D" parent="Hitbox" index="0"] +shape = SubResource("CapsuleShape2D_ig0op") + +[node name="Eysight" type="Area2D" parent="." index="4"] +collision_layer = 4 +collision_mask = 8 +script = ExtResource("3_d45iq") + +[node name="CollisionShape2D" type="CollisionShape2D" parent="Eysight" index="0"] +shape = SubResource("RectangleShape2D_n1xkd") + +[node name="Shooter" type="Marker2D" parent="." index="5" node_paths=PackedStringArray("_timer")] +script = ExtResource("4_sckvu") +_projectile = ExtResource("5_sckvu") +_timer = NodePath("Timer") + +[node name="Timer" type="Timer" parent="Shooter" index="0" node_paths=PackedStringArray("entity")] +wait_time = 1.5 +one_shot = true +script = ExtResource("6_xwpd6") +entity = NodePath("../..") + +[node name="Behaviour" type="Node" parent="." index="6" node_paths=PackedStringArray("_shootTimer", "_sight")] +script = ExtResource("7_q31qc") +_shootTimer = NodePath("../Shooter/Timer") +_sight = NodePath("../Eysight") diff --git a/scenes/entities/plants/nerdus.tscn b/scenes/entities/plants/nerdus.tscn index c6a29aa..2e5e6c4 100644 --- a/scenes/entities/plants/nerdus.tscn +++ b/scenes/entities/plants/nerdus.tscn @@ -196,6 +196,7 @@ blend_point_1/pos = 0.5 blend_point_2/node = SubResource("AnimationNodeAnimation_v7ffp") blend_point_2/pos = 0.0 min_space = 0.0 +blend_mode = 1 [sub_resource type="AnimationNodeAnimation" id="AnimationNodeAnimation_ga4vy"] animation = &"nerdus/idle_full" @@ -248,7 +249,7 @@ node_connections = [&"TimeScale", 0, &"Tree", &"output", 0, &"TimeScale"] radius = 24.0 [sub_resource type="RectangleShape2D" id="RectangleShape2D_ga4vy"] -size = Vector2(80, 48) +size = Vector2(73, 48) [node name="Nerdus" instance=ExtResource("1_8ui1h")] MaxHP = 200.0 @@ -283,7 +284,7 @@ returnEffect = ExtResource("4_ga4vy") bitesToPeas = 1.6 [node name="CollisionShape2D" type="CollisionShape2D" parent="Hurtbox" index="0"] -position = Vector2(7, 3) +position = Vector2(3.5, 3) shape = SubResource("RectangleShape2D_ga4vy") [node name="Behaviour" type="Node" parent="." index="5"] @@ -291,3 +292,4 @@ script = ExtResource("5_o1ggp") parameters = Array[String](["parameters/Tree/Attack/blend_position", "parameters/Tree/Idle/blend_position"]) [connection signal="OnHPChanged" from="." to="Hurtbox" method="OnHPChanged"] +[connection signal="OnHPChanged" from="." to="Behaviour" method="OnHPChanged"] diff --git a/scenes/gui/runtime_gui.tscn b/scenes/gui/runtime_gui.tscn index bcd5ff2..c4b730c 100644 --- a/scenes/gui/runtime_gui.tscn +++ b/scenes/gui/runtime_gui.tscn @@ -27,7 +27,7 @@ script/source = "extends Node @export var where_to_map : Node func _ready() -> void: - while get_tree().paused: + while get_tree() != null and get_tree().paused: await get_tree().process_frame for i in range(where_to_map.get_child_count()): var key = InputEventKey.new() diff --git a/scenes/projectiles/cucumber_projectile.tscn b/scenes/projectiles/cucumber_projectile.tscn new file mode 100644 index 0000000..b314338 --- /dev/null +++ b/scenes/projectiles/cucumber_projectile.tscn @@ -0,0 +1,24 @@ +[gd_scene load_steps=3 format=3 uid="uid://c1ig40gtdcb60"] + +[ext_resource type="PackedScene" uid="uid://pf8sq0bk3epn" path="res://scenes/projectiles/cucumber_projectile_part.tscn" id="1_3auks"] + +[sub_resource type="GDScript" id="GDScript_3auks"] +resource_name = "cucumber" +script/source = "extends Node2D + + +func _ready() -> void: + await get_tree().process_frame + get_child(0).reparent(get_parent()) + get_child(0).reparent(get_parent()) + queue_free() +" + +[node name="CucumberProjectileScene" type="Node2D"] +script = SubResource("GDScript_3auks") + +[node name="CucumberProjectile" parent="." instance=ExtResource("1_3auks")] +rotation = 1.5708 + +[node name="CucumberProjectile2" parent="." instance=ExtResource("1_3auks")] +rotation = 4.71239 diff --git a/scenes/projectiles/cucumber_projectile.tscn7043679061.tmp b/scenes/projectiles/cucumber_projectile.tscn7043679061.tmp new file mode 100644 index 0000000..1e23782 --- /dev/null +++ b/scenes/projectiles/cucumber_projectile.tscn7043679061.tmp @@ -0,0 +1,24 @@ +[gd_scene load_steps=3 format=3 uid="uid://c1ig40gtdcb60"] + +[ext_resource type="PackedScene" uid="uid://pf8sq0bk3epn" path="res://scenes/projectiles/cucumber_projectile_part.tscn" id="1_3auks"] + +[sub_resource type="GDScript" id="GDScript_3auks"] +resource_name = "cucumber" +script/source = "extends Node2D + + +func _ready() -> void: + pass + #get_child(0).reparent(get_parent()) + #get_child(0).reparent(get_parent()) + #queue_free() +" + +[node name="CucumberProjectileScene" type="Node2D"] +script = SubResource("GDScript_3auks") + +[node name="CucumberProjectile" parent="." instance=ExtResource("1_3auks")] +rotation = 1.5708 + +[node name="CucumberProjectile2" parent="." instance=ExtResource("1_3auks")] +rotation = 4.71239 diff --git a/scenes/projectiles/cucumber_projectile_part.tscn b/scenes/projectiles/cucumber_projectile_part.tscn new file mode 100644 index 0000000..82ef8af --- /dev/null +++ b/scenes/projectiles/cucumber_projectile_part.tscn @@ -0,0 +1,22 @@ +[gd_scene load_steps=5 format=3 uid="uid://pf8sq0bk3epn"] + +[ext_resource type="PackedScene" uid="uid://b2hrv0aqbui7u" path="res://scenes/projectiles/pea.tscn" id="1_iyfw1"] +[ext_resource type="Texture2D" uid="uid://c68mrfs4wb81x" path="res://assets/sprites/atlases/atlas2.png" id="2_12o6v"] + +[sub_resource type="AtlasTexture" id="AtlasTexture_h74iy"] +atlas = ExtResource("2_12o6v") +region = Rect2(24, 88, 7, 13) + +[sub_resource type="CapsuleShape2D" id="CapsuleShape2D_iyfw1"] +radius = 6.0 +height = 24.0 + +[node name="CucumberProjectile" instance=ExtResource("1_iyfw1")] +_damage = 40 + +[node name="Sprite" parent="." index="0"] +rotation = -1.5708 +texture = SubResource("AtlasTexture_h74iy") + +[node name="CollisionShape2D" parent="." index="1"] +shape = SubResource("CapsuleShape2D_iyfw1") diff --git a/scripts/LinearProjectile.cs b/scripts/LinearProjectile.cs index f9ad5c0..6aefbf7 100644 --- a/scripts/LinearProjectile.cs +++ b/scripts/LinearProjectile.cs @@ -25,7 +25,7 @@ public partial class LinearProjectile : Area2D, IProjectile public override void _PhysicsProcess(double delta) { - Translate(Vector2.Right * _speed * (float)delta * Utility.TileWidth); + Translate(Transform.X * _speed * (float)delta * Utility.TileWidth); } public void OnAreaEntered(Area2D area) @@ -39,7 +39,7 @@ public partial class LinearProjectile : Area2D, IProjectile if (_impactEffect != null) entity.GiveEffect(_impactEffect); - PoolContainer.Instance.SpawnParticles(particles, GlobalPosition); + PoolContainer.Instance.SpawnParticles(particles, GlobalTransform); QueueFree(); } diff --git a/scripts/level/PoolContainer.cs b/scripts/level/PoolContainer.cs index b5765fd..22a73d1 100644 --- a/scripts/level/PoolContainer.cs +++ b/scripts/level/PoolContainer.cs @@ -63,4 +63,10 @@ public partial class PoolContainer : Node2D Instance.Particles.AddChild(emitter); emitter.GlobalPosition = position; } + public void SpawnParticles(PackedScene particles, Transform2D transform) + { + var emitter = particles.Instantiate(); + Instance.Particles.AddChild(emitter); + emitter.GlobalTransform = transform; + } } diff --git a/scripts/plants/behaviours/HpBasedBehaviour.cs b/scripts/plants/behaviours/HpBasedBehaviour.cs index 95cb94f..c494e6c 100644 --- a/scripts/plants/behaviours/HpBasedBehaviour.cs +++ b/scripts/plants/behaviours/HpBasedBehaviour.cs @@ -14,9 +14,9 @@ public partial class HpBasedBehaviour : BaseBehaviour _data = GetParent(); } - public void OnHPChanged(int amount, Node origin) + public void OnHPChanged(float amount, Node origin) { - var calc = (float)_data.HP / _data.MaxHP; + var calc = _data.HP / _data.MaxHP; foreach (var par in parameters) { _tree.Set(par, calc); From dac6ab607ec2d36c49b0073ebdc7f35a20832ada Mon Sep 17 00:00:00 2001 From: Rendo Date: Sun, 13 Jul 2025 05:54:12 +0500 Subject: [PATCH 43/48] Resource order --- resources/plants/Aloe.tres | 1 + resources/plants/Cucumber.tres | 1 + resources/plants/Garlic.tres | 1 + resources/plants/Nerdus.tres | 1 + resources/plants/PotatoMine.tres | 1 + resources/plants/Snowpea.tres | 1 + resources/plants/Spikeweed.tres | 1 + resources/plants/Sunflower.tres | 1 + resources/plants/Threepeater.tres | 1 + resources/plants/Wallnut.tres | 1 + resources/zombies/basic.tres | 1 + resources/zombies/buckethead.tres | 1 + resources/zombies/conehead.tres | 1 + resources/zombies/hobo.tres | 1 + scripts/gui/almanach/AlmanachGrid.cs | 14 ++++++++++++-- scripts/resources/DisplayResource.cs | 1 + 16 files changed, 27 insertions(+), 2 deletions(-) diff --git a/resources/plants/Aloe.tres b/resources/plants/Aloe.tres index 08652d7..1058daf 100644 --- a/resources/plants/Aloe.tres +++ b/resources/plants/Aloe.tres @@ -14,3 +14,4 @@ ReloadTime = 15.0 ReloadProgress = 0.0 Preview = ExtResource("1_t4137") Layer = 1 +Order = 6 diff --git a/resources/plants/Cucumber.tres b/resources/plants/Cucumber.tres index 36790af..73c491f 100644 --- a/resources/plants/Cucumber.tres +++ b/resources/plants/Cucumber.tres @@ -18,4 +18,5 @@ ReloadTime = 5.0 ReloadProgress = 0.0 Preview = SubResource("AtlasTexture_3gogt") Layer = 1 +Order = 8 metadata/_custom_type_script = "uid://cyenlko1knygw" diff --git a/resources/plants/Garlic.tres b/resources/plants/Garlic.tres index 07baa57..0ad4a9a 100644 --- a/resources/plants/Garlic.tres +++ b/resources/plants/Garlic.tres @@ -14,3 +14,4 @@ ReloadTime = 7.5 ReloadProgress = 0.67 Preview = ExtResource("1_datic") Layer = 1 +Order = 7 diff --git a/resources/plants/Nerdus.tres b/resources/plants/Nerdus.tres index 90edeb0..decda3b 100644 --- a/resources/plants/Nerdus.tres +++ b/resources/plants/Nerdus.tres @@ -18,4 +18,5 @@ ReloadTime = 10.0 ReloadProgress = 0.0 Preview = SubResource("AtlasTexture_ivp5w") Layer = 1 +Order = 11 metadata/_custom_type_script = "uid://cyenlko1knygw" diff --git a/resources/plants/PotatoMine.tres b/resources/plants/PotatoMine.tres index 776ad20..6c6f453 100644 --- a/resources/plants/PotatoMine.tres +++ b/resources/plants/PotatoMine.tres @@ -14,3 +14,4 @@ ReloadTime = 25.0 ReloadProgress = 0.9 Preview = ExtResource("1_xk2pg") Layer = 1 +Order = 3 diff --git a/resources/plants/Snowpea.tres b/resources/plants/Snowpea.tres index 93d6bde..51db90a 100644 --- a/resources/plants/Snowpea.tres +++ b/resources/plants/Snowpea.tres @@ -14,3 +14,4 @@ ReloadTime = 5.0 ReloadProgress = 0.0 Preview = ExtResource("1_7fyy2") Layer = 1 +Order = 5 diff --git a/resources/plants/Spikeweed.tres b/resources/plants/Spikeweed.tres index cfd319b..977223b 100644 --- a/resources/plants/Spikeweed.tres +++ b/resources/plants/Spikeweed.tres @@ -14,3 +14,4 @@ ReloadTime = 5.0 ReloadProgress = 0.0 Preview = ExtResource("1_2ol2i") Layer = 1 +Order = 4 diff --git a/resources/plants/Sunflower.tres b/resources/plants/Sunflower.tres index 7347bf8..5d05e64 100644 --- a/resources/plants/Sunflower.tres +++ b/resources/plants/Sunflower.tres @@ -14,3 +14,4 @@ ReloadTime = 5.0 ReloadProgress = 1.0 Preview = ExtResource("1_8rd5i") Layer = 1 +Order = 1 diff --git a/resources/plants/Threepeater.tres b/resources/plants/Threepeater.tres index 4a62eef..d8f8fcb 100644 --- a/resources/plants/Threepeater.tres +++ b/resources/plants/Threepeater.tres @@ -14,3 +14,4 @@ ReloadTime = 5.0 ReloadProgress = 0.0 Preview = ExtResource("1_hinp6") Layer = 1 +Order = 10 diff --git a/resources/plants/Wallnut.tres b/resources/plants/Wallnut.tres index 63b6271..ea3bcaa 100644 --- a/resources/plants/Wallnut.tres +++ b/resources/plants/Wallnut.tres @@ -14,3 +14,4 @@ ReloadTime = 20.0 ReloadProgress = 0.0 Preview = ExtResource("1_2akap") Layer = 1 +Order = 2 diff --git a/resources/zombies/basic.tres b/resources/zombies/basic.tres index cfa837e..7239564 100644 --- a/resources/zombies/basic.tres +++ b/resources/zombies/basic.tres @@ -18,4 +18,5 @@ ReloadTime = 1.0 ReloadProgress = 0.0 Preview = SubResource("AtlasTexture_wu2q8") Layer = 1 +Order = 0 metadata/_custom_type_script = "uid://cqxj7o8hdm82n" diff --git a/resources/zombies/buckethead.tres b/resources/zombies/buckethead.tres index ef9c339..02c4457 100644 --- a/resources/zombies/buckethead.tres +++ b/resources/zombies/buckethead.tres @@ -18,4 +18,5 @@ ReloadTime = 1.0 ReloadProgress = 0.0 Preview = SubResource("AtlasTexture_drksh") Layer = 1 +Order = 2 metadata/_custom_type_script = "uid://cqxj7o8hdm82n" diff --git a/resources/zombies/conehead.tres b/resources/zombies/conehead.tres index 637299f..bbf134c 100644 --- a/resources/zombies/conehead.tres +++ b/resources/zombies/conehead.tres @@ -18,4 +18,5 @@ ReloadTime = 1.0 ReloadProgress = 0.0 Preview = SubResource("AtlasTexture_q44xp") Layer = 1 +Order = 1 metadata/_custom_type_script = "uid://cqxj7o8hdm82n" diff --git a/resources/zombies/hobo.tres b/resources/zombies/hobo.tres index 693c1a1..38c432e 100644 --- a/resources/zombies/hobo.tres +++ b/resources/zombies/hobo.tres @@ -18,4 +18,5 @@ ReloadTime = 1.0 ReloadProgress = 0.0 Preview = SubResource("AtlasTexture_73ahc") Layer = 1 +Order = 5 metadata/_custom_type_script = "uid://cqxj7o8hdm82n" diff --git a/scripts/gui/almanach/AlmanachGrid.cs b/scripts/gui/almanach/AlmanachGrid.cs index bc6e3ce..f14ad0b 100644 --- a/scripts/gui/almanach/AlmanachGrid.cs +++ b/scripts/gui/almanach/AlmanachGrid.cs @@ -12,7 +12,12 @@ public partial class AlmanachGrid : GridContainer if (_zombies) { - foreach (var resource in GameRegistry.GetZombies()) + var list = GameRegistry.GetZombies(); + list.Sort((a, b) => + { + return a.Order - b.Order; + }); + foreach (var resource in list) { Seedpacket slot = _plantCard.Instantiate(); AddChild(slot); @@ -23,7 +28,12 @@ public partial class AlmanachGrid : GridContainer } else { - foreach (var resource in GameRegistry.GetPlants()) + var list = GameRegistry.GetPlants(); + list.Sort((a, b) => + { + return a.Order - b.Order; + }); + foreach (var resource in list) { Seedpacket slot = _plantCard.Instantiate(); AddChild(slot); diff --git a/scripts/resources/DisplayResource.cs b/scripts/resources/DisplayResource.cs index fb98245..f05cd53 100644 --- a/scripts/resources/DisplayResource.cs +++ b/scripts/resources/DisplayResource.cs @@ -16,5 +16,6 @@ public partial class DisplayResource : Resource public Texture2D Preview; [Export] public CustomSeedpacketFrame customFrame; [Export] public int Layer = 1; + [Export] public int Order = 0; public string internal_id; } From 83eadd2a1d9d87851f786e5a9b88ac7605c59edd Mon Sep 17 00:00:00 2001 From: Rendo Date: Sun, 13 Jul 2025 07:02:43 +0500 Subject: [PATCH 44/48] Fixed grid not being sorted --- scripts/gui/choose_your_seeds/GridLoader.cs | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/scripts/gui/choose_your_seeds/GridLoader.cs b/scripts/gui/choose_your_seeds/GridLoader.cs index f728588..e818477 100644 --- a/scripts/gui/choose_your_seeds/GridLoader.cs +++ b/scripts/gui/choose_your_seeds/GridLoader.cs @@ -12,11 +12,16 @@ public partial class GridLoader : GridContainer { _plantCard = ResourceLoader.Load("res://scenes/gui/seedpacket.tscn"); - foreach(var resource in GameRegistry.GetPlants()) + var list = GameRegistry.GetPlants(); + list.Sort((a, b) => + { + return a.Order - b.Order; + }); + foreach (var resource in list) { Seedpacket slot = _plantCard.Instantiate(); AddChild(slot); - + slot.SetResource(resource); slot.SetHandler(new ChoosableHandler(slot)); } From 0ee8335d18bc6c749d8ea40c6ea9c81fbdd17e1d Mon Sep 17 00:00:00 2001 From: Rendo Date: Sun, 13 Jul 2025 15:36:52 +0500 Subject: [PATCH 45/48] fixed hp based plants --- resources/zombies/door_zombie.tres | 16 ++ scenes/entities/Zombies/cone_zombie.tscn | 59 ++++--- scenes/entities/Zombies/door_zombie.tscn | 189 +++++++++++++++++++++++ scenes/entities/plants/garlic.tscn | 6 +- scenes/entities/plants/wallnut.tscn | 8 +- scenes/prototype_survival.tscn | 4 +- scripts/Entity.cs | 15 +- 7 files changed, 261 insertions(+), 36 deletions(-) create mode 100644 resources/zombies/door_zombie.tres create mode 100644 scenes/entities/Zombies/door_zombie.tscn diff --git a/resources/zombies/door_zombie.tres b/resources/zombies/door_zombie.tres new file mode 100644 index 0000000..dfe80d9 --- /dev/null +++ b/resources/zombies/door_zombie.tres @@ -0,0 +1,16 @@ +[gd_resource type="Resource" script_class="ZombieResource" load_steps=3 format=3 uid="uid://cugwy5bw4wljr"] + +[ext_resource type="PackedScene" uid="uid://p5jhgg2r7e07" path="res://scenes/entities/Zombies/door_zombie.tscn" id="1_3664b"] +[ext_resource type="Script" uid="uid://cqxj7o8hdm82n" path="res://scripts/resources/ZombieResource.cs" id="3_bydiv"] + +[resource] +script = ExtResource("3_bydiv") +name_key = "doorz" +description_key = "doorz_desc" +Cost = 4.5 +Scene = ExtResource("1_3664b") +ReloadTime = 1.0 +ReloadProgress = 0.0 +Layer = 1 +Order = 4 +metadata/_custom_type_script = "uid://cqxj7o8hdm82n" diff --git a/scenes/entities/Zombies/cone_zombie.tscn b/scenes/entities/Zombies/cone_zombie.tscn index 74a74db..0e047e3 100644 --- a/scenes/entities/Zombies/cone_zombie.tscn +++ b/scenes/entities/Zombies/cone_zombie.tscn @@ -1,4 +1,4 @@ -[gd_scene load_steps=15 format=3 uid="uid://hhjbqkjqpt7x"] +[gd_scene load_steps=16 format=3 uid="uid://hhjbqkjqpt7x"] [ext_resource type="PackedScene" uid="uid://co11v3w8hbwgf" path="res://scenes/entities/Zombies/zombie.tscn" id="1_3dq4c"] [ext_resource type="Shader" uid="uid://d0eo5uuj222c4" path="res://assets/shaders/CG_color_blender.gdshader" id="2_2dq8e"] @@ -20,6 +20,13 @@ shader_parameter/amount = 0.0 [sub_resource type="CircleShape2D" id="CircleShape2D_67t4t"] +[sub_resource type="Resource" id="Resource_011r0"] +resource_local_to_scene = true +script = ExtResource("4_qof5v") +flat_value = 5.0 +percentage_value = 0.0 +mult_value = 1.0 + [sub_resource type="Resource" id="Resource_b6mal"] resource_local_to_scene = true script = ExtResource("4_qof5v") @@ -34,48 +41,53 @@ _armor = NodePath("Armor") material = SubResource("ShaderMaterial_sat5k") [node name="RightUpperLeg" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt" index="1"] -scale = Vector2(0.999835, 0.999835) +scale = Vector2(0.999832, 0.999832) [node name="RightLowerLeg" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/RightUpperLeg" index="1"] -scale = Vector2(0.999834, 0.999834) +scale = Vector2(0.999835, 0.999835) [node name="RightFoot" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/RightUpperLeg/RightLowerLeg" index="0"] -scale = Vector2(0.999832, 0.999832) +scale = Vector2(0.999836, 0.999836) [node name="LeftUpperLeg" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt" index="2"] scale = Vector2(0.999834, 0.999834) [node name="LeftLowerLeg" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/LeftUpperLeg" index="1"] -scale = Vector2(0.999835, 0.999835) +scale = Vector2(0.999836, 0.999836) [node name="LeftFoot" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/LeftUpperLeg/LeftLowerLeg" index="1"] -scale = Vector2(0.99983, 0.99983) +scale = Vector2(0.999828, 0.999828) [node name="Body" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt" index="3"] scale = Vector2(0.999829, 0.999829) [node name="RightUpperArm" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body" index="0"] -scale = Vector2(0.999826, 0.999826) +scale = Vector2(0.99983, 0.99983) [node name="RightLowerArm" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/RightUpperArm" index="1"] -scale = Vector2(0.999826, 0.999826) +scale = Vector2(0.99983, 0.99983) [node name="RightHand" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/RightUpperArm/RightLowerArm" index="0"] scale = Vector2(0.99983, 0.99983) [node name="Tie" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body" index="2"] -rotation = 0.16518 -skew = -9.81092e-05 +rotation = -0.146474 +skew = -9.9659e-05 [node name="Head" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body" index="3"] scale = Vector2(0.999827, 0.999827) [node name="Right_Eye" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/Head/HeadParticle/Head" index="0"] -position = Vector2(-16, -8.00001) +position = Vector2(-16, -7.99999) +scale = Vector2(1, 1) + +[node name="Left_Eye" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/Head/HeadParticle/Head" index="1"] +position = Vector2(-4, -9) +scale = Vector2(1, 1) [node name="Jaw" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/Head/HeadParticle/Head" index="2"] -position = Vector2(-2.99036, 2.96833) -rotation = 0.0171523 +position = Vector2(-2.8181, 2.56097) +rotation = -0.102313 scale = Vector2(0.999828, 0.999828) [node name="Jaw" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/Head" index="1"] @@ -109,26 +121,29 @@ position = Vector2(1, -6) shape = SubResource("CircleShape2D_67t4t") [node name="LeftUpperArm" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body" index="4"] -scale = Vector2(0.999829, 0.999829) +scale = Vector2(0.999827, 0.999827) [node name="Left_Lower_Arm" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/LeftUpperArm/HandProjectile" index="0"] -rotation = 0.160346 -scale = Vector2(0.999999, 0.999999) +rotation = -0.15525 +scale = Vector2(1, 1) [node name="Left_Hand" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/LeftUpperArm/HandProjectile/Left_Lower_Arm" index="0"] -position = Vector2(-0.99983, 12.9978) -rotation = -0.0733402 -scale = Vector2(0.999659, 0.999659) +position = Vector2(-0.999828, 12.9978) +rotation = -0.127972 +scale = Vector2(0.999657, 0.999657) [node name="LeftLowerArm" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/LeftUpperArm" index="2"] -scale = Vector2(0.999829, 0.999829) +scale = Vector2(0.99983, 0.99983) [node name="LeftHand" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/LeftUpperArm/LeftLowerArm" index="0"] -scale = Vector2(0.999829, 0.999829) +scale = Vector2(0.999827, 0.999827) + +[node name="Eatbox" parent="." index="2"] +_damage = SubResource("Resource_011r0") [node name="Mover" parent="." index="4"] _speed = SubResource("Resource_b6mal") -_speedControlMult = 1.48524 +_speedControlMult = 0.899509 [node name="Armor" type="Node" parent="." index="6"] script = ExtResource("3_5s7in") diff --git a/scenes/entities/Zombies/door_zombie.tscn b/scenes/entities/Zombies/door_zombie.tscn new file mode 100644 index 0000000..461827d --- /dev/null +++ b/scenes/entities/Zombies/door_zombie.tscn @@ -0,0 +1,189 @@ +[gd_scene load_steps=19 format=3 uid="uid://p5jhgg2r7e07"] + +[ext_resource type="PackedScene" uid="uid://co11v3w8hbwgf" path="res://scenes/entities/Zombies/zombie.tscn" id="1_k7yv2"] +[ext_resource type="Shader" uid="uid://d0eo5uuj222c4" path="res://assets/shaders/CG_color_blender.gdshader" id="2_g7fge"] +[ext_resource type="Script" uid="uid://dildme6epx8l4" path="res://scripts/zombies/RuntimeZombieData.cs" id="2_uhol2"] +[ext_resource type="Script" uid="uid://c3cfnrmnnuqms" path="res://addons/floatmodifiers/FloatModifiers.cs" id="3_uvlkc"] +[ext_resource type="Texture2D" uid="uid://b18blso5pbc6a" path="res://assets/sprites/atlases/zombies/armor.png" id="4_ed67f"] +[ext_resource type="Script" uid="uid://dt5uj25u0g6y3" path="res://scripts/particles/FallParticle.cs" id="4_woxi6"] +[ext_resource type="Script" uid="uid://fd4im1fmwc5n" path="res://scripts/Armor.cs" id="5_ed67f"] +[ext_resource type="Script" uid="uid://bbw848msxb4re" path="res://scripts/DegradingSprite.cs" id="6_woxi6"] +[ext_resource type="Script" uid="uid://c36bj8u7jghc7" path="res://scripts/audio/ChannelPlayer.cs" id="7_tj3uj"] +[ext_resource type="Script" uid="uid://d3l8e8ko5r5i3" path="res://scripts/ArmorHPObserver.cs" id="7_uhol2"] +[ext_resource type="AudioStream" uid="uid://bu1egfsyplpx4" path="res://assets/audio/sfx/metalhit_generic.tres" id="8_uhol2"] + +[sub_resource type="RectangleShape2D" id="RectangleShape2D_ed67f"] +size = Vector2(20, 48) + +[sub_resource type="AtlasTexture" id="AtlasTexture_woxi6"] +atlas = ExtResource("4_ed67f") +region = Rect2(0, 71, 48, 88) + +[sub_resource type="AtlasTexture" id="AtlasTexture_yhtii"] +atlas = ExtResource("4_ed67f") +region = Rect2(48, 71, 48, 88) + +[sub_resource type="AtlasTexture" id="AtlasTexture_tj3uj"] +atlas = ExtResource("4_ed67f") +region = Rect2(96, 71, 47, 88) + +[sub_resource type="ShaderMaterial" id="ShaderMaterial_p0ieu"] +resource_local_to_scene = true +shader = ExtResource("2_g7fge") +shader_parameter/blend_color = Color(0.73, 0.73, 0.73, 1) +shader_parameter/amount = 0.0 + +[sub_resource type="Resource" id="Resource_ed67f"] +resource_local_to_scene = true +script = ExtResource("3_uvlkc") +flat_value = 5.0 +percentage_value = 0.0 +mult_value = 1.0 + +[sub_resource type="Resource" id="Resource_woxi6"] +resource_local_to_scene = true +script = ExtResource("3_uvlkc") +flat_value = 0.2 +percentage_value = 0.0 +mult_value = 1.0 + +[node name="DoorZombie" instance=ExtResource("1_k7yv2")] + +[node name="Shield" type="Node2D" parent="." index="0" node_paths=PackedStringArray("_armor")] +position = Vector2(-29, 0) +script = ExtResource("2_uhol2") +_armor = NodePath("MainHP") +completeInvulnerability = true +metadata/_custom_type_script = "uid://3tw88wj1nrj1" + +[node name="Hitbox" type="Area2D" parent="Shield" index="0"] +collision_layer = 8 +collision_mask = 0 + +[node name="CollisionShape2D" type="CollisionShape2D" parent="Shield/Hitbox" index="0"] +position = Vector2(0, -25) +shape = SubResource("RectangleShape2D_ed67f") + +[node name="MainHP" type="Node" parent="Shield" index="1"] +script = ExtResource("5_ed67f") +MaxHP = 375.0 +metadata/_custom_type_script = "uid://fd4im1fmwc5n" + +[node name="Particle" type="RigidBody2D" parent="Shield" index="2" node_paths=PackedStringArray("data")] +use_parent_material = true +position = Vector2(0, -43) +collision_layer = 128 +collision_mask = 64 +freeze = true +script = ExtResource("4_woxi6") +data = NodePath("..") +minTorque = 100.0 +maxTorque = -100.0 + +[node name="Sprite2D" type="Sprite2D" parent="Shield/Particle" index="0" node_paths=PackedStringArray("armor")] +z_index = 1 +use_parent_material = true +texture = SubResource("AtlasTexture_woxi6") +script = ExtResource("6_woxi6") +armor = NodePath("../../MainHP") +degradationStages = Array[Texture2D]([SubResource("AtlasTexture_woxi6"), SubResource("AtlasTexture_yhtii"), SubResource("AtlasTexture_tj3uj")]) +thresholdPercentage = Array[float]([1.0, 0.667, 0.333]) + +[node name="CollisionShape2D" type="CollisionShape2D" parent="Shield/Particle" index="1"] +position = Vector2(0, 18) +shape = SubResource("RectangleShape2D_ed67f") + +[node name="Observer" type="Node" parent="Shield/Particle" index="2" node_paths=PackedStringArray("_observedArmor")] +script = ExtResource("7_uhol2") +_threshold = 0.0 +_observedArmor = NodePath("../../MainHP") + +[node name="ChannelPlayer" type="Node" parent="Shield" index="3"] +script = ExtResource("7_tj3uj") +audioStream = ExtResource("8_uhol2") +channel = "metalhit" +metadata/_custom_type_script = "uid://c36bj8u7jghc7" + +[node name="CanvasGroup" parent="." index="1"] +material = SubResource("ShaderMaterial_p0ieu") + +[node name="RightUpperLeg" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt" index="1"] +scale = Vector2(0.999818, 0.999818) + +[node name="RightLowerLeg" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/RightUpperLeg" index="1"] +scale = Vector2(0.999838, 0.999838) + +[node name="RightFoot" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/RightUpperLeg/RightLowerLeg" index="0"] +scale = Vector2(0.999833, 0.999833) + +[node name="LeftUpperLeg" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt" index="2"] +scale = Vector2(0.999826, 0.999826) + +[node name="LeftLowerLeg" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/LeftUpperLeg" index="1"] +scale = Vector2(0.999821, 0.999821) + +[node name="LeftFoot" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/LeftUpperLeg/LeftLowerLeg" index="1"] +scale = Vector2(0.999822, 0.999822) + +[node name="Body" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt" index="3"] +scale = Vector2(0.999818, 0.999818) + +[node name="RightUpperArm" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body" index="0"] +scale = Vector2(0.999823, 0.999823) + +[node name="RightLowerArm" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/RightUpperArm" index="1"] +scale = Vector2(0.999823, 0.999823) + +[node name="RightHand" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/RightUpperArm/RightLowerArm" index="0"] +scale = Vector2(0.999834, 0.999834) + +[node name="Tie" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body" index="2"] +rotation = -0.090966 +skew = -0.000511765 + +[node name="Head" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body" index="3"] +scale = Vector2(0.99984, 0.99984) + +[node name="Right_Eye" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/Head/HeadParticle/Head" index="0"] +position = Vector2(-16, -8) +scale = Vector2(1, 1) + +[node name="Left_Eye" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/Head/HeadParticle/Head" index="1"] +position = Vector2(-4, -9) +scale = Vector2(1, 1) + +[node name="Jaw" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/Head/HeadParticle/Head" index="2"] +position = Vector2(-2.88703, 2.72734) +rotation = -0.0635403 +scale = Vector2(0.99984, 0.99984) + +[node name="Jaw" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/Head" index="1"] +scale = Vector2(0.99984, 0.99984) + +[node name="LeftUpperArm" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body" index="4"] +scale = Vector2(0.999834, 0.999834) + +[node name="Left_Lower_Arm" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/LeftUpperArm/HandProjectile" index="0"] +rotation = -0.096416 +scale = Vector2(0.99999, 0.99999) + +[node name="Left_Hand" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/LeftUpperArm/HandProjectile/Left_Lower_Arm" index="0"] +position = Vector2(-0.99983, 12.9978) +rotation = -0.0794755 +scale = Vector2(0.999646, 0.999646) + +[node name="LeftLowerArm" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/LeftUpperArm" index="2"] +scale = Vector2(0.99982, 0.99982) + +[node name="LeftHand" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/LeftUpperArm/LeftLowerArm" index="0"] +scale = Vector2(0.999816, 0.999816) + +[node name="Eatbox" parent="." index="3"] +_damage = SubResource("Resource_ed67f") + +[node name="Mover" parent="." index="5"] +_speed = SubResource("Resource_woxi6") +_speedControlMult = 0.299272 + +[connection signal="OnDamaged" from="Shield" to="Shield/ChannelPlayer" method="Play"] +[connection signal="ThresholdReached" from="Shield/Particle/Observer" to="Shield/Particle" method="FallOff"] diff --git a/scenes/entities/plants/garlic.tscn b/scenes/entities/plants/garlic.tscn index db05bc1..25ac97e 100644 --- a/scenes/entities/plants/garlic.tscn +++ b/scenes/entities/plants/garlic.tscn @@ -42,14 +42,14 @@ animation = &"garlic/low_hp" blend_point_0/node = SubResource("AnimationNodeAnimation_mdv0r") blend_point_0/pos = 1.0 blend_point_1/node = SubResource("AnimationNodeAnimation_j5xqj") -blend_point_1/pos = 0.7 +blend_point_1/pos = 0.5 blend_point_2/node = SubResource("AnimationNodeAnimation_tlgpl") -blend_point_2/pos = 0.3 +blend_point_2/pos = 0.0 min_space = 0.0 blend_mode = 1 [sub_resource type="AnimationNodeBlendTree" id="AnimationNodeBlendTree_2o7sr"] -graph_offset = Vector2(-397, 76) +graph_offset = Vector2(-389, 166) nodes/TimeScale/node = SubResource("AnimationNodeTimeScale_2d3xk") nodes/TimeScale/position = Vector2(100, 160) nodes/Tree/node = SubResource("AnimationNodeBlendSpace1D_8mvpm") diff --git a/scenes/entities/plants/wallnut.tscn b/scenes/entities/plants/wallnut.tscn index fa7859c..9fd5ce4 100644 --- a/scenes/entities/plants/wallnut.tscn +++ b/scenes/entities/plants/wallnut.tscn @@ -20,14 +20,14 @@ animation = &"wallnut/idle_low" blend_point_0/node = SubResource("AnimationNodeAnimation_ds5ry") blend_point_0/pos = 1.0 blend_point_1/node = SubResource("AnimationNodeAnimation_frsxy") -blend_point_1/pos = 0.7 +blend_point_1/pos = 0.5 blend_point_2/node = SubResource("AnimationNodeAnimation_7avgo") -blend_point_2/pos = 0.3 +blend_point_2/pos = 0.0 min_space = 0.0 blend_mode = 1 [sub_resource type="AnimationNodeBlendTree" id="AnimationNodeBlendTree_bi7an"] -graph_offset = Vector2(-498, 95) +graph_offset = Vector2(-338.2, 175.4) nodes/TimeScale/node = SubResource("AnimationNodeTimeScale_y3tlf") nodes/TimeScale/position = Vector2(60, 140) nodes/Tree/node = SubResource("AnimationNodeBlendSpace1D_nij8v") @@ -44,7 +44,7 @@ MaxHP = 600.0 texture = ExtResource("2_o5tda") hframes = 12 vframes = 3 -frame = 4 +frame = 9 [node name="AnimationPlayer" parent="." index="1"] libraries = { diff --git a/scenes/prototype_survival.tscn b/scenes/prototype_survival.tscn index ad1ec4d..da65065 100644 --- a/scenes/prototype_survival.tscn +++ b/scenes/prototype_survival.tscn @@ -365,8 +365,8 @@ autostart = true [node name="SurvivalAI" type="Node" parent="."] script = ExtResource("10_1kjp6") -supportPool = Array[String](["hobo"]) -tankPool = Array[String](["conehead", "buckethead", "hobo"]) +supportPool = Array[String](["hobo", "door_zombie"]) +tankPool = Array[String](["conehead", "buckethead", "hobo", "door_zombie"]) hordePool = Array[String](["basic", "conehead", "buckethead"]) velocity_curve = SubResource("Curve_1kjp6") diff --git a/scripts/Entity.cs b/scripts/Entity.cs index 24032e6..eac10c9 100644 --- a/scripts/Entity.cs +++ b/scripts/Entity.cs @@ -48,20 +48,25 @@ public partial class Entity : Node2D [Export] private AnimationTree _tree; public virtual void DisableBrain() { - _player.ProcessMode = ProcessModeEnum.Always; - _tree.ProcessMode = ProcessModeEnum.Always; + if (_player != null) + _player.ProcessMode = ProcessModeEnum.Always; + if (_tree != null) + _tree.ProcessMode = ProcessModeEnum.Always; ProcessMode = ProcessModeEnum.Disabled; } public virtual void EnableBrain() { - _player.ProcessMode = ProcessModeEnum.Inherit; - _tree.ProcessMode = ProcessModeEnum.Inherit; + if (_player != null) + _player.ProcessMode = ProcessModeEnum.Inherit; + if (_tree != null) + _tree.ProcessMode = ProcessModeEnum.Inherit; ProcessMode = ProcessModeEnum.Inherit; } #endregion #region Effects [Export] private Array _effectImmunities = new(); + [Export] private bool completeInvulnerability = false; private readonly Dictionary _activeEffectSlots = new(); private readonly Dictionary _effectSlotTimers = new(); @@ -72,7 +77,7 @@ public partial class Entity : Node2D public virtual void GiveEffect(Effect what) { - if (_effectImmunities.Contains(what)) + if (_effectImmunities.Contains(what) || completeInvulnerability) { return; } From 5d07af775467556385f3fbad30eb0f0dca5ea74a Mon Sep 17 00:00:00 2001 From: Rendo Date: Sun, 13 Jul 2025 22:36:53 +0500 Subject: [PATCH 46/48] Zombie now eat when can --- project.godot | 10 +++ resources/animations/zombies/basic.res | Bin 9495 -> 9303 bytes resources/plants/Nerdus.tres | 2 +- scenes/entities/Zombies/door_zombie.tscn | 75 +++++++++++------------ scenes/entities/Zombies/zombie.tscn | 63 ++++++++----------- scripts/zombies/EatBox.cs | 3 + scripts/zombies/RuntimeZombieData.cs | 4 -- 7 files changed, 76 insertions(+), 81 deletions(-) diff --git a/project.godot b/project.godot index 54a6139..d9ffcd5 100644 --- a/project.godot +++ b/project.godot @@ -66,6 +66,16 @@ theme/custom_font="res://assets/fonts/pico12.ttf" [input] +ui_focus_next={ +"deadzone": 0.5, +"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":93,"key_label":0,"unicode":1098,"location":0,"echo":false,"script":null) +] +} +ui_focus_prev={ +"deadzone": 0.5, +"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":91,"key_label":0,"unicode":1093,"location":0,"echo":false,"script":null) +] +} cheat_add_sun={ "deadzone": 0.5, "events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":4194333,"key_label":0,"unicode":0,"location":0,"echo":false,"script":null) diff --git a/resources/animations/zombies/basic.res b/resources/animations/zombies/basic.res index 06e0ea2d98003031f8f92a9d8a6caee30e7ccc13..e02f886706a6acc32de96efdb3a6e87b04ffa7e4 100644 GIT binary patch literal 9303 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 literal 9495 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 bv+Af#t9L~^A=q56WZHC+P(yv_U!wjGqogCH diff --git a/resources/plants/Nerdus.tres b/resources/plants/Nerdus.tres index decda3b..beb0d1d 100644 --- a/resources/plants/Nerdus.tres +++ b/resources/plants/Nerdus.tres @@ -12,7 +12,7 @@ region = Rect2(477, 9, 60, 59) script = ExtResource("3_30qd0") name_key = "nerdus" description_key = "nerdus_desc" -Cost = 100.0 +Cost = 125.0 Scene = ExtResource("2_0i6qf") ReloadTime = 10.0 ReloadProgress = 0.0 diff --git a/scenes/entities/Zombies/door_zombie.tscn b/scenes/entities/Zombies/door_zombie.tscn index 461827d..0843da6 100644 --- a/scenes/entities/Zombies/door_zombie.tscn +++ b/scenes/entities/Zombies/door_zombie.tscn @@ -53,7 +53,6 @@ mult_value = 1.0 position = Vector2(-29, 0) script = ExtResource("2_uhol2") _armor = NodePath("MainHP") -completeInvulnerability = true metadata/_custom_type_script = "uid://3tw88wj1nrj1" [node name="Hitbox" type="Area2D" parent="Shield" index="0"] @@ -108,82 +107,80 @@ metadata/_custom_type_script = "uid://c36bj8u7jghc7" material = SubResource("ShaderMaterial_p0ieu") [node name="RightUpperLeg" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt" index="1"] -scale = Vector2(0.999818, 0.999818) +scale = Vector2(0.99983, 0.99983) [node name="RightLowerLeg" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/RightUpperLeg" index="1"] -scale = Vector2(0.999838, 0.999838) +scale = Vector2(0.999832, 0.999832) [node name="RightFoot" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/RightUpperLeg/RightLowerLeg" index="0"] -scale = Vector2(0.999833, 0.999833) +scale = Vector2(0.999831, 0.999831) [node name="LeftUpperLeg" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt" index="2"] -scale = Vector2(0.999826, 0.999826) - -[node name="LeftLowerLeg" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/LeftUpperLeg" index="1"] -scale = Vector2(0.999821, 0.999821) - -[node name="LeftFoot" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/LeftUpperLeg/LeftLowerLeg" index="1"] -scale = Vector2(0.999822, 0.999822) - -[node name="Body" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt" index="3"] -scale = Vector2(0.999818, 0.999818) - -[node name="RightUpperArm" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body" index="0"] -scale = Vector2(0.999823, 0.999823) - -[node name="RightLowerArm" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/RightUpperArm" index="1"] -scale = Vector2(0.999823, 0.999823) - -[node name="RightHand" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/RightUpperArm/RightLowerArm" index="0"] scale = Vector2(0.999834, 0.999834) +[node name="LeftLowerLeg" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/LeftUpperLeg" index="1"] +scale = Vector2(0.999833, 0.999833) + +[node name="LeftFoot" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/LeftUpperLeg/LeftLowerLeg" index="1"] +scale = Vector2(0.999829, 0.999829) + +[node name="Body" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt" index="3"] +scale = Vector2(0.999831, 0.999831) + +[node name="RightUpperArm" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body" index="0"] +scale = Vector2(0.99983, 0.99983) + +[node name="RightLowerArm" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/RightUpperArm" index="1"] +scale = Vector2(0.999828, 0.999828) + +[node name="RightHand" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/RightUpperArm/RightLowerArm" index="0"] +scale = Vector2(0.99983, 0.99983) + [node name="Tie" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body" index="2"] -rotation = -0.090966 -skew = -0.000511765 +rotation = 0.163815 +skew = -0.000518203 [node name="Head" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body" index="3"] -scale = Vector2(0.99984, 0.99984) +scale = Vector2(0.999829, 0.999829) [node name="Right_Eye" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/Head/HeadParticle/Head" index="0"] position = Vector2(-16, -8) -scale = Vector2(1, 1) [node name="Left_Eye" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/Head/HeadParticle/Head" index="1"] position = Vector2(-4, -9) -scale = Vector2(1, 1) [node name="Jaw" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/Head/HeadParticle/Head" index="2"] -position = Vector2(-2.88703, 2.72734) -rotation = -0.0635403 -scale = Vector2(0.99984, 0.99984) +position = Vector2(-3.00201, 2.99659) +rotation = 0.0158977 +scale = Vector2(0.99983, 0.99983) [node name="Jaw" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/Head" index="1"] -scale = Vector2(0.99984, 0.99984) +scale = Vector2(0.99983, 0.99983) [node name="LeftUpperArm" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body" index="4"] -scale = Vector2(0.999834, 0.999834) +scale = Vector2(0.999831, 0.999831) [node name="Left_Lower_Arm" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/LeftUpperArm/HandProjectile" index="0"] -rotation = -0.096416 -scale = Vector2(0.99999, 0.99999) +rotation = 0.154022 +scale = Vector2(0.999998, 0.999998) [node name="Left_Hand" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/LeftUpperArm/HandProjectile/Left_Lower_Arm" index="0"] position = Vector2(-0.99983, 12.9978) -rotation = -0.0794755 -scale = Vector2(0.999646, 0.999646) +rotation = -0.0679757 +scale = Vector2(0.999658, 0.999658) [node name="LeftLowerArm" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/LeftUpperArm" index="2"] -scale = Vector2(0.99982, 0.99982) +scale = Vector2(0.999828, 0.999828) [node name="LeftHand" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/LeftUpperArm/LeftLowerArm" index="0"] -scale = Vector2(0.999816, 0.999816) +scale = Vector2(0.999828, 0.999828) [node name="Eatbox" parent="." index="3"] _damage = SubResource("Resource_ed67f") [node name="Mover" parent="." index="5"] _speed = SubResource("Resource_woxi6") -_speedControlMult = 0.299272 +_speedControlMult = 1.31004 [connection signal="OnDamaged" from="Shield" to="Shield/ChannelPlayer" method="Play"] [connection signal="ThresholdReached" from="Shield/Particle/Observer" to="Shield/Particle" method="FallOff"] diff --git a/scenes/entities/Zombies/zombie.tscn b/scenes/entities/Zombies/zombie.tscn index c7698c8..c34c110 100644 --- a/scenes/entities/Zombies/zombie.tscn +++ b/scenes/entities/Zombies/zombie.tscn @@ -1,4 +1,4 @@ -[gd_scene load_steps=62 format=3 uid="uid://co11v3w8hbwgf"] +[gd_scene load_steps=61 format=3 uid="uid://co11v3w8hbwgf"] [ext_resource type="Script" uid="uid://dildme6epx8l4" path="res://scripts/zombies/RuntimeZombieData.cs" id="1_qq3f1"] [ext_resource type="AudioStream" uid="uid://dt13iugnnx4op" path="res://assets/audio/sfx/yuck_generic.tres" id="2_hh4qh"] @@ -16,7 +16,6 @@ [ext_resource type="AnimationLibrary" uid="uid://ceb3khu7rwgy8" path="res://resources/animations/zombies/basic.res" id="9_y6afe"] [ext_resource type="Script" uid="uid://c36bj8u7jghc7" path="res://scripts/audio/ChannelPlayer.cs" id="10_ruqsf"] [ext_resource type="Script" uid="uid://dwlwi42smgxkb" path="res://scripts/TimeScalableAnimationTree.cs" id="11_ccrjo"] -[ext_resource type="AudioStream" uid="uid://dyid55nhflwyn" path="res://assets/audio/sfx/chomp_generic.tres" id="11_vjrlo"] [ext_resource type="AudioStream" uid="uid://bg76miyscfvhu" path="res://assets/audio/sfx/groan.tres" id="12_ad42i"] [ext_resource type="Script" uid="uid://cnn0ymuhypdff" path="res://scripts/audio/ChannelPlaylist.cs" id="12_he8da"] [ext_resource type="AudioStream" uid="uid://w0qfwds4o3ti" path="res://assets/audio/sfx/hit_generic.tres" id="12_vjrlo"] @@ -790,8 +789,6 @@ metadata/_custom_type_script = "uid://c1x4n4nqyq72f" [node name="Zombie" type="Node2D" node_paths=PackedStringArray("_player", "_tree")] y_sort_enabled = true script = ExtResource("1_qq3f1") -garlicSound = ExtResource("2_hh4qh") -freezeSound = ExtResource("3_ltj46") MaxHP = 70.0 _player = NodePath("CanvasGroup/basic_zombie_walk/AnimationPlayer") _tree = NodePath("AnimationTree") @@ -824,7 +821,7 @@ metadata/_edit_lock_ = true [node name="RightUpperLeg" type="Bone2D" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt"] use_parent_material = true position = Vector2(-6, 3) -scale = Vector2(0.999836, 0.999836) +scale = Vector2(0.999831, 0.999831) rest = Transform2D(1, 0, 0, 1, -6, 3) editor_settings/show_bone_gizmo = false @@ -836,13 +833,13 @@ metadata/_edit_lock_ = true [node name="RightLowerLeg" type="Bone2D" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/RightUpperLeg"] position = Vector2(-2, 12) -scale = Vector2(0.999834, 0.999834) +scale = Vector2(0.999832, 0.999832) rest = Transform2D(1, 0, 0, 1, -2, 12) editor_settings/show_bone_gizmo = false [node name="RightFoot" type="Bone2D" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/RightUpperLeg/RightLowerLeg"] position = Vector2(-2, 14) -scale = Vector2(0.999831, 0.999831) +scale = Vector2(0.999834, 0.999834) rest = Transform2D(1, 0, 0, 1, -2, 14) auto_calculate_length_and_angle = false length = 12.0 @@ -865,7 +862,7 @@ metadata/_edit_lock_ = true [node name="LeftUpperLeg" type="Bone2D" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt"] use_parent_material = true position = Vector2(6, 4) -scale = Vector2(0.999833, 0.999833) +scale = Vector2(0.999832, 0.999832) rest = Transform2D(1, 0, 0, 1, 6, 4) editor_settings/show_bone_gizmo = false @@ -877,7 +874,7 @@ metadata/_edit_lock_ = true [node name="LeftLowerLeg" type="Bone2D" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/LeftUpperLeg"] position = Vector2(-1, 13) -scale = Vector2(0.999832, 0.999832) +scale = Vector2(0.999833, 0.999833) rest = Transform2D(1, 0, 0, 1, -1, 13) editor_settings/show_bone_gizmo = false @@ -889,7 +886,7 @@ metadata/_edit_lock_ = true [node name="LeftFoot" type="Bone2D" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/LeftUpperLeg/LeftLowerLeg"] position = Vector2(6, 10) -scale = Vector2(0.999832, 0.999832) +scale = Vector2(0.999831, 0.999831) rest = Transform2D(1, 0, 0, 1, 6, 10) auto_calculate_length_and_angle = false length = 12.0 @@ -905,7 +902,7 @@ metadata/_edit_lock_ = true [node name="Body" type="Bone2D" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt"] use_parent_material = true position = Vector2(1, -2) -scale = Vector2(0.999826, 0.999826) +scale = Vector2(0.999833, 0.999833) rest = Transform2D(1, 0, 0, 1, 1, -2) editor_settings/show_bone_gizmo = false @@ -913,7 +910,7 @@ editor_settings/show_bone_gizmo = false z_index = -1 use_parent_material = true position = Vector2(-14, -23) -scale = Vector2(0.99983, 0.99983) +scale = Vector2(0.999828, 0.999828) rest = Transform2D(1, 0, 0, 1, -14, -23) editor_settings/show_bone_gizmo = false @@ -925,13 +922,13 @@ metadata/_edit_lock_ = true [node name="RightLowerArm" type="Bone2D" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/RightUpperArm"] position = Vector2(-2, 15) -scale = Vector2(0.999827, 0.999827) +scale = Vector2(0.999828, 0.999828) rest = Transform2D(1, 0, 0, 1, -2, 15) editor_settings/show_bone_gizmo = false [node name="RightHand" type="Bone2D" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/RightUpperArm/RightLowerArm"] position = Vector2(-1, 13) -scale = Vector2(0.999829, 0.999829) +scale = Vector2(0.999828, 0.999828) rest = Transform2D(1, 0, 0, 1, -1, 13) auto_calculate_length_and_angle = false length = 8.0 @@ -960,8 +957,8 @@ metadata/_edit_lock_ = true [node name="Tie" type="Bone2D" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body"] visible = false position = Vector2(-9, -21) -rotation = -0.00889184 -skew = -0.000420451 +rotation = 0.137587 +skew = -0.000422955 rest = Transform2D(1, 0, 0, 1, -9, -21) auto_calculate_length_and_angle = false length = 24.0 @@ -976,7 +973,7 @@ metadata/_edit_lock_ = true [node name="Head" type="Bone2D" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body"] position = Vector2(-10, -25) -scale = Vector2(0.999829, 0.999829) +scale = Vector2(0.999826, 0.999826) rest = Transform2D(1, 0, 0, 1, -10, -25) editor_settings/show_bone_gizmo = false @@ -999,7 +996,6 @@ metadata/_edit_lock_ = true [node name="Right_Eye" type="Sprite2D" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/Head/HeadParticle/Head"] position = Vector2(-16, -8) -scale = Vector2(1, 1) texture = SubResource("AtlasTexture_vcc72") centered = false offset = Vector2(-2, -2) @@ -1007,16 +1003,15 @@ metadata/_edit_lock_ = true [node name="Left_Eye" type="Sprite2D" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/Head/HeadParticle/Head"] position = Vector2(-4, -9) -scale = Vector2(1, 1) texture = SubResource("AtlasTexture_kto0i") centered = false offset = Vector2(-2, -2) metadata/_edit_lock_ = true [node name="Jaw" type="Sprite2D" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/Head/HeadParticle/Head"] -position = Vector2(-2.71683, 2.31534) -rotation = 0.0263511 -scale = Vector2(0.99983, 0.99983) +position = Vector2(-3.00169, 2.99714) +rotation = 0.0133523 +scale = Vector2(0.999828, 0.999828) texture = SubResource("AtlasTexture_x5uj2") centered = false offset = Vector2(-12, -2) @@ -1033,7 +1028,7 @@ _observedEntity = NodePath("../../../../../../../..") [node name="Jaw" type="Bone2D" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/Head"] position = Vector2(-3, 3) -scale = Vector2(0.999829, 0.999829) +scale = Vector2(0.999828, 0.999828) rest = Transform2D(1, 0, 0, 1, -3, 3) auto_calculate_length_and_angle = false length = 11.0 @@ -1067,7 +1062,7 @@ remote_path = NodePath("../../HeadParticle/Head/Left_Eye") [node name="LeftUpperArm" type="Bone2D" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body"] position = Vector2(-1, -20) -scale = Vector2(0.999829, 0.999829) +scale = Vector2(0.999832, 0.999832) rest = Transform2D(1, 0, 0, 1, -1, -20) editor_settings/show_bone_gizmo = false @@ -1089,8 +1084,8 @@ minTorque = -45.0 maxTorque = 45.0 [node name="Left_Lower_Arm" type="Sprite2D" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/LeftUpperArm/HandProjectile"] -rotation = 0.113898 -scale = Vector2(0.999999, 0.999999) +rotation = 0.129362 +scale = Vector2(0.999996, 0.999996) texture = SubResource("AtlasTexture_auqeq") centered = false offset = Vector2(-5, 0) @@ -1099,8 +1094,8 @@ metadata/_edit_lock_ = true [node name="Left_Hand" type="Sprite2D" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/LeftUpperArm/HandProjectile/Left_Lower_Arm"] show_behind_parent = true position = Vector2(-0.99983, 12.9978) -rotation = -0.112673 -scale = Vector2(0.99966, 0.99966) +rotation = -0.0570923 +scale = Vector2(0.999654, 0.999654) texture = SubResource("AtlasTexture_vlvtp") centered = false offset = Vector2(-4, -1) @@ -1116,13 +1111,13 @@ _observedEntity = NodePath("../../../../../../../..") [node name="LeftLowerArm" type="Bone2D" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/LeftUpperArm"] position = Vector2(-2, 14) -scale = Vector2(0.999829, 0.999829) +scale = Vector2(0.999826, 0.999826) rest = Transform2D(1, 0, 0, 1, -2, 14) editor_settings/show_bone_gizmo = false [node name="LeftHand" type="Bone2D" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/LeftUpperArm/LeftLowerArm"] position = Vector2(-1, 13) -scale = Vector2(0.99983, 0.99983) +scale = Vector2(0.999824, 0.999824) rest = Transform2D(1, 0, 0, 1, -1, 13) auto_calculate_length_and_angle = false length = 6.0 @@ -1172,13 +1167,7 @@ entity = NodePath("..") [node name="Mover" type="Node" parent="."] script = ExtResource("4_u5syx") _speed = SubResource("Resource_ckb7n") -_speedControlMult = 2.42123 - -[node name="ChompPlayer" type="Node" parent="."] -script = ExtResource("10_ruqsf") -audioStream = ExtResource("11_vjrlo") -channel = "chomp" -metadata/_custom_type_script = "uid://c36bj8u7jghc7" +_speedControlMult = 0.954599 [node name="HitPlayer" type="Node" parent="."] script = ExtResource("12_he8da") diff --git a/scripts/zombies/EatBox.cs b/scripts/zombies/EatBox.cs index 8493cab..592907d 100644 --- a/scripts/zombies/EatBox.cs +++ b/scripts/zombies/EatBox.cs @@ -9,6 +9,8 @@ public partial class EatBox : Area2D // Rewrite this class completely when field system will be introduced. [Export] public FloatModifiers _damage; + [Export] + private AudioStream biteSound = ResourceLoader.Load("uid://dyid55nhflwyn"); private RuntimePlantData plant; public bool isEating = false; @@ -18,6 +20,7 @@ public partial class EatBox : Area2D if (GetParent().AbleToEat) { plant?.TakeDamage((int)_damage.GetValue(), GetParent()); + AudioSequencer.Play("bite", biteSound); } } diff --git a/scripts/zombies/RuntimeZombieData.cs b/scripts/zombies/RuntimeZombieData.cs index 4c24245..ae73b0b 100644 --- a/scripts/zombies/RuntimeZombieData.cs +++ b/scripts/zombies/RuntimeZombieData.cs @@ -6,10 +6,6 @@ public partial class RuntimeZombieData : Entity { [Export] private Armor _armor; - [Export] - private AudioStream garlicSound; - [Export] - private AudioStream freezeSound; [Signal] public delegate void HasBeenKilledEventHandler(RuntimeZombieData who); public bool AbleToEat = true; From bdf87032390a8b6c0224b94a5ad439e9d924bea8 Mon Sep 17 00:00:00 2001 From: Rendo Date: Sun, 13 Jul 2025 22:38:28 +0500 Subject: [PATCH 47/48] deploy tools --- .gitignore | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/.gitignore b/.gitignore index 89421e0..9b47973 100644 --- a/.gitignore +++ b/.gitignore @@ -13,4 +13,5 @@ data_*/ mono_crash.*.json puki.txt -export \ No newline at end of file +export/build_folder +export/token.txt \ No newline at end of file From fe39e5fceb4fc32ffb20caed7fda23c2a9439b54 Mon Sep 17 00:00:00 2001 From: Rendo Date: Mon, 14 Jul 2025 21:50:04 +0500 Subject: [PATCH 48/48] deploy script --- project.godot | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/project.godot b/project.godot index d9ffcd5..1c46fc3 100644 --- a/project.godot +++ b/project.godot @@ -16,7 +16,7 @@ warnings/check_angle_interpolation_type_conflicting=false [application] config/name="Liberation of the Neighbourville" -config/version="0.2.4" +config/version="0.2.5" run/main_scene="uid://bfstrli64u23y" config/features=PackedStringArray("4.4", "C#", "Forward Plus") config/icon="res://icon.png"

+tnjXV@oNGSOFcYd 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 j< Date: Sat, 12 Jul 2025 01:58:34 +0500 Subject: [PATCH 12/48] hobo zombre --- resources/animations/zombies/basic.res | Bin 10893 -> 9491 bytes resources/animations/zombies/hobo.res | Bin 4486 -> 4735 bytes resources/animations/zombies/hobo_zombie.res | Bin 5498 -> 5564 bytes scenes/entities/Zombies/cone_zombie.tscn | 42 +- scenes/entities/Zombies/hobo.tscn | 872 +++++++++++++++++-- scenes/entities/Zombies/zombie.tscn | 587 ++++++++++++- scenes/prototype_survival.tscn | 6 +- scripts/zombies/behaviours/HoboBehaviour.cs | 2 +- 8 files changed, 1378 insertions(+), 131 deletions(-) diff --git a/resources/animations/zombies/basic.res b/resources/animations/zombies/basic.res index 1fd70a09913afe02dd1a99508cc5b325f25c95f7..fb85e90d35f8e09ddc0c9e92c8ea8ca10dd2b720 100644 GIT binary patch literal 9491 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 O_8Pn(m+;_UPyYpx-A_OO literal 4486 zcmZvg2{=^k-^b6H#lFmpeIJHU3T0nr#u6c0N>Z4}GWO6S%Ge4~2w4l+vsBiKF=XFE zDr74p*&}6pkLP)M-uJ!!|NFYW_kEu^=lt&L%>A9;=Qrn+g^mskfEo$_BrXC#D0EN^ zDIXF64glHEI0UI3x-1-G$OGmr*o4vF4+M81tZEOAPm~8i$ zgc$WJnxpr|9LVJMyq&X-{%fBHk{x*OQIcV1fH`0QM0Y)78$p$x(o=~Q72=uCRCf;N zf9Z1Ig9++sjl<5?5LrJ!6vMdL0bsbiW}hdhlp#mxo_P=ifx$ z^%H(=78#usoYDd|OJI&0HYmX&U}KD7(Ne*YZVkk@Q(0UOFk~@BY#2&=b1YyJEk?eD*TJo%a_E$ybnf8Zo~d+hLjNUsryM?xM}CKLXmR|K{_cHM!KZg8Orqa zWaq8Uo^IK0=bPPutBE0fn3D*(6burZA_j{~=7wQYFihBP3@kP|3Kn|-4Z|99y+wV0 zUd&oiJwOd^!g9?c+R7Zyr|500r`WT`e?0JeAr9+T71Sn9-lOmHSS>>x;CcV%g=~P$ z4X}5b<37zWQr;cy9kUTryK>^t-PCH!DhU=POu&c8icig5EvzK#rXP;Ev}~fYUE&cW zwfMR*7xfp~&GZwN2>xS1E-pYxz)q#_LsfHfuCU&6Gb!N)Z?4+G5c^e6W}xRGqwSedL9-6*`STrPbQ&!pzl2@uNQ+yq8*hB&lPvZ7C9V-?3XJ-1xL^vBSQc@#*{9z2j2Q{;ENS zGTGnm{k=zPGl+&kh8TlZ<>5SV;(Ev)8oN!uyw~8-R-`GoT`yNd^(nc^5V~Pg=tsJC zcFTG9(55VW*N$cpc45RlM4flAqAr7Z&*hbpho)*+Wp@d=qI=H>rs_Q!;XartucODp zo5FL%`q_zdSz^cOni)AHPDG=E8Nrb9Nx|t*`jdA!SQX#$wKI%6tyNd36dpeyXsAR| zxP)!+ZqP=)o|j~1<@=?qb?a~l?2D_r?#R4n*B;#-obsU{i-r?3h#%x@k%OaCJk&5G zd(Jypgi9lq1*BI*X(z0fxx(*(ilZ`)KUz^tGJLU)AquB%6p=o}NQAVq=7gU#JgMj@>E(Ud$JYHP^G^+QC*Wjt*?5{*a%wq;KfUlE$N}&udz1_ zuPj{`)_GW{w^ia8ROclZ^p4$jR^u~V*QKD`&qq^qLRMqjKjiuJu>N$y(?FB)}G^q-W0+QuB$%(d!Zr$Vh_uW_i#{EJ|(4Sw5VK zQlD6y)j3|g%ei1zS`FVVDy#oa7{dk$l+;hlS`faMtt{RDO%6O#!%{i~@V={(aXWh` zGYJG_I*XJlxn?H^u06akNX>baUdnP-Q#MdVP%*htvYWXjC+%&ru63byu1OpQ8TFR^ zv4ZO5LgQo^^LRu%`XM?mSFFS|Tp~_X`+^o_dl@|=A0CygwRu$od%8f!Ox9)6xw&tw z=gxTnrbh!MEx0G~Ps>&Bt_=^5$#{4~$)%@aG5kJRe%x^pXrnf#CQ61>d&$R-{k2X> zv<^$Uc6x`evn>ibEls4Nn}@ro?lTMdzki(0^d4*yQ=2;cF;ESpiD+QC@hA!gLC-UG}I2w(v1Tho#oG4M5R0gy?42KPqN2f4#Jjuke2Q)5^i7C@B ze(I~qB5%NMU#)9?5GK-Hx?r(z0C35S@lIEM-Z{3mF+-s9jWo&QZ&IV$pxW;C6&~UL zs%modR>2R+EAIq~9Dd3Dk#05dc z_T5J+Z3lCK#4jlm>V1AbFFEC#9qduI0L$U7o^u*m@4rf{<%KZv9P?d1Z(!6MMRK4^ zXLxP%`q7x5mcS21LE!^keBa%>f|{={+VR!qc~+%1`@UqIIXB19SWq#uR()B6K_#6h z!>wHJ)0O(<^@2)Kl9X@*NX@Lry^U1FO---Yby2tgP3IE?IUKE-VoSd8>k`uyL# zxnN^!x6hQ1*laxh=X(u2;DrAdA%78MA0P;bAj}n*`k_lP_@7!S)c-;ggA$5nk-SPh zD!{(>4_OdQ0F41oA?(5^^?x9vFM^_eQoNy=WS>{JPZz|0;-#)@SJSZ}ziv370RM+D zp!YsqAh={N9i?@#!**?~E-@v8m9Rnd~V4z(tm0`qQQvUfN z=Z(l*Rm;c2{wj*ppK8lnxliveJ33wKX{)vQwYB40Dxkjw|FPBLc|vN2BsWZ3%s7|N zRBrUkUwkY=d3+}G-83CmdwtA9Zp(%|l>215e4GOrgBQPf$;ZR~Bxf2)+q&f0k!-0g znnk#uu3G`uX0q{hIg8r^aWoZ zeD;q+9l3#~eVf667yGU&hqQl42QWcBGo*csu|k5X5CCE~)c;j)KqKVle=Pa09seyo zAS*&w{HbT=@88G&?fGip5A#82x&P%pgnbjW#=5`A&jpbmAtnYRAZP^WSA&SO|TrgFV9V$mplB@reZ_ zZF1`K7u593EC?-1`8xM)9`$`;5kxF4udJfieyoE`6dLqbcjM>gFZA!N?Va5{1O|kG zaOiWWY|2D{NRSSs2N4X6Ob7%*X()#pT~D>)jKed7EFde$26C{Y&?GGk2PYSjn};{> zegxhsK}l1IXN`|vK#-18NLa*73o9yyqZ5}nKv^sR8*&Ze4bwoVLXK-u#Snd1P)AYY z3~|9QoVa0JW=;sFxMPBvz8QR|3TKXu_`#D=wskCGuh=D}>g}D3`a?EAM6B)wQ{FJO`{Gg_WAJ4SNsvOzfB-uxCDU8leOToK8p z9545xvglTqPxwa;%VY}olOC(vk3>47wI75g8o_sYXzT+gL)#~Za~nn4jBib>ie75P zcSf{J;?i$34`1*^P4cbN@vDKV=;e_R-$-K~xNneED7(0r;1qMgwBJO;D3g%lrJXDG z`3T9Rhd)4_(>pO{f!N=UL?6Z9;~86L1(rxyQJceF*}XeGzcYpE@l6`k8avcMecSHS zQA#VBVQ1I;uX>*%em0P}oU|Mivxwo7d@nbRy%4i`&(-!`;L-1&U5;o-}WeMDS3-zC*Sy^?TJgVl5HM#dC?+v@0x1X7i>J!G757ufEJ8lINCK+u- zw>!AaE;iu{Mp~EYx4*q>xSw*Gk$l9(Ps-h!^ehCI7Hhd3e`O^*QQ&c7dwp^Akfoc4 zG|RCs$|^^zSMP6kieLbLIhc8+5pn|dwZP9#2Imi0X?9??z z@viUu-Z}66_2!(<{hpcm&Yg4bd}cnMdkqYgl&}D>AON7o5dgHI0Pq}ahy)`J7*#+F zVFLg!7lBU%a=I$E3M{!**JrL$e(s9S-_%~GPdhr3?lxn_ z>Df{i+ovt6-MjdAZ_oQi@D9}=j({a#0qCoiD`{*<_R5pd4#&rt%w<_(O5`IgoVYVg zRGT}}Q9e*4^}BQf54jhZwIPBLhHg)pflz`3)LBn(E#3YG`$!E&imiQ?Ei@Zf1e!du z0*#JCi1k2`xGM!DqJ8zK)~*r!tZWSMgVs>dlBj?z;8uEi8QLn9L(ze&f7jo=Tl9`) zLXu%efzdHWc0WBm40-EsD1$B6$z-9TidX$HedjlO-a!ZYTC52cQaaJpHS6JVb${)I z`IwgUUcmBtvfM$@+lg&@kJ%~sa6SDw#9x_m`%LwW|7%fFChnupwZz%}FLstI3@(i> zy6kV|yu`}Tj9yEsH|8dltV!EC1Q8^kV&W;Rf4~Dv_V@V&j;R`zsipB836LQ@%NLk%G%F286lcRRHX{1-Gz9_a z%h$YAY(lz*0?Ow3<)(PbrshBJ1)3?lyoj2)9-_xPK0@TP2n`Hx_0E7I&F)5M%Pj8tX_$QqZHy(&UekeO1!N@txAt!;Jo^ao4j()eIZKPVx`NaZj6E){f-h`qS=}&z0D9Opl$J z`9eFoI1I_+BbN*Dv1Z>VYAi|>k@Db63aBZD!n_hT>(RAh`U4NtT|W5El$7upFKMNJ z#TEa$dXWP8&t}Ra2dI`E?uvL$;h6N%SI-C#H%@vCrmlA9nB^4*8%N|x?%W#Z4E`48wT`IEMYZ$4R&;(%J zJNan(!3+aZroLs~sk*i$2V@X0NT~rl)^J46`BLD)ovmE&I*^jiU?a`n+uIP3k`^v+ z`l-xZME@}qq-;E?BA5;tpE1=s2p4*PB10Kw?sL&N-SCSW zU^uGxDv!(jpvlp(pwyfHmg{NI;Q}Mop1Gjoy3+DqX{5}Y1Kv#apV*S%14RM66dTZJT(?=H}1F}BYjZ|>xde0^`e-=#UfZ$4#}k-hoUM>5@* z$5oBkuLLF^G#Q(pRaP>&hT*5xiW_oE7FS1vreG3FV{h#QWw$Lnn3s!Oh|Y9?#1(-XHvBY64#7D*I7x3@mvV`3+ormG2X^N@0Ju z)jm$PcVB64y_qCk!JX)7EN)CWjzi&5dAPaoebH)4EYq~}d$OH0JU3=4)AKd!o6Kxt zPk44g7v{Z@!>0+)awPkh<%+?L$J^+yhwP`T_;_;9q{-6P4$fOQ+;LxfYAce=hNzoE znQP)ZQ6-(M?iL##ul?yUQx*Eg5|9LKz6?od7ZxdNaSoIWmClf$k2i&f$Ep|x>%+q% zRZ5QT`{^@ruU1uReRjUNZpEcu`Igsbyu#Y3nw#Wu#iq`#TU_agm6U+1GxVAeI+raq{;k&KWMd#+(LC0c~d^A5K_08XFtLA9xy-=j89u zrj)$oV24Z4hn+#{3DLadIpqE^%9QEC4$ot%AR0^oqDAw4I^&)VrGqeT5L&4LRwj5&Q+t^=pZ8NN0L?!eO$zpC`?$064aAENuDh1esAOitNx2t9eC z?j>)N#IF%Pr^I)l{G9MV60k`Ed_mZH1FWD6g8-n{0ti9)cv-o5JNh`fyJ6&U!Md-N z%Tq9k3HH>(#>&SQ0R5RR4xk72fX+v$94PcH7w6*~1(hot#}<-LOf)ZZdZd&o0mjc6)jIJjM3)d*&Yy z7)1U&IHViw#Du;G3y+A5ijIk;h>K4^fr%(oVp4KSYFc_m=F2Rc?3`D*dHDr}Ma3nh zW#!nfD=Gmn$D^vcrnauW;Z0*xGwf|kt0j1^cir#ae`te!Z13po>h8fNAnNVw??M3p zi^9O*(D0|vBbe@r?upcvWLu<18i%$F8DKz2OnS-&QNR)qvC>vf&B!IYcYO8fw9|EN z<6NpqBiOY+kthw9NceEedo9UWcI+@I>L=UF=M(41TDh8E*~ewCaO79s5hk74TtFQe z@v{ayQt92ZLkN^0Bq9QT`ZJ~jf}hqVBsvcZ)kt&SlSVt0tY4Pe9+%q}wr4U{tX{0w zrs7&sq+7Y)&O|Yn;LrN~xtQ#0 zm(wk!W8HN()MLrhDAhfQ4CcYaZJ%3pngkRgn2kh2_w|uc=5GXzb4k3Vap$H*F5MmN2f|LwK4xxZhLZ~2E)HJk(;2eZK zbo302SWL_;tZeKYP);sxj666|7Y{EVKU6?aNLWNv41yGwkd%_X1ChBadrwXt1tV2} zC_3532`SQwHr~@QE57SFW&8yljWOVzcgtLJh55*Jx6xup7S<* z^l0sGFyt3)4XNyNh1NA^eZ$|uwtIC^;j`_o;r8?^4xCA{v!0clD-wBMLDu*S_5FPJQbUfTmlw|qoXu;1hKBG9(On?3$gF|acNb>s#e8ipumQO#I zkyPC0agH|Z%;Hw-qPoFeAGO{11RwvL=}LnKS*B{yA`t3gd`&%?TyzyjWDvc5$R4D1 z@u>N}k&H5#lWHH#W?^FPent%!*TXVG9c zzN!xvS*Q{ZG$F8F^lXq}FXqv?(#_^ku!dE>Kqb-%-r*!=MP1#`2uk+9M=|~0SK?J@ z*sVh>^@2;cnS44F_m$mANZKu@e5m|Jx5{yp%oWL@1?Of_+)e8hEAg!oz1(rsBllM( z&P>hj*d?uA$cA7sDMq^t>&45EV&0tM@-v&(sr?5spBopL_RR0mZy6`9xm44jdA_Y= z)|gq$Ix!z>*`XV+orE=dt&$9IBxdV=lyBmoMZf=^y^x$O5PZFz7WXhK5^dWo9H~z) z3#G+0I(xe%2TL#1-FC``UB5NCgP8Sdc_SqIPP%ngy#BU)+Cw5Nz3B}*qd3PEncbBl z;YfpvsEXHs&1%_e``^cTQwj7)m{)_>_1$7MFVAc%d}Yp?D$lE7irWk) zAqxQ(%SPi7GATL^%UyFuM0vj*0!0YsbH-Xe%+re9d@w_nZtp*eB^Tu47pO>|)ELI^ zFJySShHcjC zSw(V=*K+;_s^UtA8lAer1_?E3)^(SF-5}do?lG+JkjS#6MzE1udVqm4pEvQD&rp6r zO&Qm&slo#3?NOwL)$qIO_(Npxag=h7)t%C_0=2x<0m9F;r8;_gdWdi9?C9jALM_qI z_Z3#!woa<46s3Bm0}9wfJlh;i#AKGnqMr=xd9~phskPU{zV+1cbN=?MwM!_eR$ur% zO=K9o;%r%BVk>j@fr759c&dG`g7ekF2a8U|hUEuY?@q15gmcc=p-g|!$hzEnovhj9fw#Z9kjz++%sg@qPhkB*x=nm))#9(US#l5^e7SNQCSL?wavDbE|Rt6o~_VFIqn1KzCB#ZKJ3OorZC5KV^Q zAp%@(<$AgbyTZ&qq0R^RtA#%8$d93!EtuM|81QhcF89{-zlRsu<9u1@Th*gcZ`b`| z!yQJMY+hNmRg8~D;CNCtv*4#b!M0NyoYt+LDGCw!OU#;79NJH6vyjr|Ku|U0%>z`` zoz~y5rtIc=E~P)^C@=d|aNxB|wrfp#^dgz?uLR&>^k};YE_Mi<5DH+DpO7 zEPY4jE+v;N69xA@Ic9m30)kgjNm+$Y^}ZS%KPbFf^n%(tx^#Sc`gB6L2B7C;5_(`l zCv5ug5sQeKx#;63Y+@D&q@|TLhdA2CmO}z&XU`>x%MAL>yWCRFE?m;CZUDp`?e6Ag zfp&lD<^w=+yxrVwY%M&jd>p)OZ5(~9tX*s^9NoNqtlZGHzP4W8pcjUKk7HnHpoCej zSY7$V!)x=6P%jLo{)mwbV8;_sf-#XI0`kior8LyC*j=8XYoo>S6Y|H%L>Plxl%6)c zj-Kx4m)l^wI9D6tbcM&{_nUWwRTw7>?hs{P*!Dxb#&xfB+|I8!FQ1+1IRP?8?5AY*`ao6Ok-gVriV z&|8fW;|09w^RK5;zk3sewury_MiIN(5D&l}umds}oShWPG`%HHxzf`|Cw3`v$Vuh? zI3AY=7zI0PZeAtVloj)fyea@+<3jM??;wn#St}h`CyLR7HZygmy^q3T@-FQ1OoobJ za)SZM2ujIgV3{)}WtT7tIbPF1?g>qZi20GY@Zuumjnx;a9%Dj?a#LTREwcG^on(fJ z!9LyM@{6fy#+{E%dX#b%c~%!k!xysjBgg9o%+t|5f}*P-XWDD+J2$#Ug}bo=hr+wE ztgOWJJ+NNpCs{-X&M(5br-rm+y z4C&TX%zq;E2@M zTF1W@w5(l9^I0f5`TvvRv6qb<>{8!A9(JSjf8|^m6BWOC=vDs+zPRB$z$b*1NjTiJe;0-_Gqmxsv~aUi?icrP1O1Yt2)(H!37WZ ze#=)$-aD6HKIH7EN@`R>sU#>Hn{07=;A;easB5wY@EJf2MMWI`G#F}0iVFNmDJ|5# z>sWt3PlZ-lvb`F}Olg!89WuRx`EmBxG@e}HuEY8Vb_sm0Q`6DfWnZE#8P0ko`j;I1 zY9urB?Ve0qkz?eUpf)u(V{(^NRm^1Tui>;O-#7N694UDX7YTn8YByy}J+o}&J1dgs zv24G~GrS#Su)h^i(S^u=PgXw-&}?BOVW&4qO5oNREXl5a@&LA8Wiy9T&#y=@Ye+w3 z?`@0!I%z$tSe~WRe^0$cd?UTqUJ$McC;+O!{MhK|XnTA6vzqfbB@$`B7wKry@KNtK z#+U5L>Gwy56(v&{;{+T+5oNum{I$19CzqD}iV)E=oCu3g$$9eW5DyWMQ@ZCEnxCHs zn-%2cU636V%-a!e6#25I%b3ZXQbVhRWrb?V~KygVFNeP~8*x9Q+0B#)f% zPCM&z^9*b1DBT3u6Wn75*mvW<0Q-%DjDFEHO@ZXbB_Jq~Jy1t`J7eZ3?_dmB+eaK< zopNm6gxobxbVYE)Vow6&lis+?>c2Q03!0@qmkQJ=)Ahlzat0ANG!8q~>q{3;qBg*f z)`CV|ln{;Rty1e_prb1@aGgcgXL650Fa#71hKNF$AkBjU8ryHN0ZqYc*w5SJ=G*)Q&yd}r;=UU1Kc3;%kA}LgV;Gy=Or$Gyr)_kK}tp#PL zm%#tPvVZHro4m#3y$UgC!m%07Kj||^cR5>y`ve>820baJ%$m!uY>AiER^yG{5E9jJ zV%f7%>LU_GZB;(=#79Jb)*=5&KJz~YP_Y1SI0ChI>*YLzjaO6lZbz}tC@cyWxwqOi ztL8@?xUgO`Beugjz5GMpBh$+qsRvJTg@0#?$!1!dbj{t3^<8Ma=Uts(?8o@Ehfxvk z1$Y5gfLqGVD^{=b+-7xBOXPVeJzRO?ip0G%ph(@CPI~!f8SynfcP}e3;c$VBl-Ik* z8upd57cbs>YEUg)NfMjQ|NN4_@?5%-|JysSi=Wr#<%<+NFV)eyqemoFNhW0|WEQ*R zE59v1`)=4$9NoMt+_}nNJ;ABx53%yBEWNcb;CShCuLQ?q&FSG7|aO;y*x4uEv zSWR*Du>Ds`lffIpPZc?H9G{x&36fZ zhfR4q3WIqbvA5sg8BZLV6qXM6iU~&?avTTtsuX``tum^bIug3Y!BZIVWknRNF_)A- zIB=z>Jgd{{pr|i3A^~;`Nzs&)!10NTQF{NltVTlJt%B=2!x0C%?hZcQZ#m^B3d!=D zWHt&wD^D?;H8S?!8EL~6^_KI=Qx8g)`{_|(zG$BHe%mSA>@Lo^ftzS8YohdR@(4uW zDV+06`uFaYv3M0M=~+4CZP3J8KULJYEh~4}CFI$o-JJfRc=o@f5#3d{^|&~VGc&k* z113n&B_-8ROtGVIsv6<}0>Pmk9itrq4$#B|ZCtkz8Ge{EJj0O3{cuYOLnE-E7v-Fm z#3kmx*gDFw9HPUD{$OHC))OFxJy$%zO^kkDGHyqj;aysR5J@m@~-7|}>IK`!^6^>ihy z{fYC>n3dn_<2`d~M|5QQi{IMW`HOOA?4typ6TG9^9a{2^?DUKJ6(fSKwl=VMaAsb7 zbId{PO_Uq|Rq4vktRw5w35drtxU|?GHu3$r5NBAj0jYd3lce4=oV<)z_1y^cJ)L`b zr~U;mr^M=h?U-^#B0bWxNk!@|;v)cU54t)0CC%+blYxZB0m%^h~j!_&*##}^Ln48YvJ;}-#T zM0Ml+0|JABLqfyu-hz6B3h>Q|MCfr>TOKs;UptGcxJ2vLEK; z=H-(X6h10?TwL;`w5+_MvI_pR`k8M{?en_&7Y#2Po0?%QuUhTEPOrM#+B;r%b`iRJ zdLv#}b-$;`;LdiZ_KoItkAq_DBoNdbutCiP*bN*8!A#CeG^Tl$xMtj&SEYJm1siq} z6nV$Q0ikSQSW`Jnqv^~w*KK2LTy^>1lwoI?>(y?kxsYYm2$<76%eQEcZrv5 zRgASAnWo*|t=L=&jnQ&Q|D=3IMo&lo$kthDXlnFgo@YHa_ug5;pbz!+&g; z{x~!HY3}pqGRkyw{tC*ePXxE`uA&zh;CB7t4TgCy?AzE2tmcIJFs((et1O>WWBMB>W_@nF zjMN@Be~LH|ca0-DOGgJI2NeS9MXR&g#mCb%x12pJk5(|z<5 z@{c=g0)UH8srGJ$oa6hDTeiWu%hAsomMqL@(5s1ClKa;XL$ztAL5E!(!O2@9D+|u!Nkf zk$57h0lR|l`eJIoXK&`oQtjeep-f@v5^=pN0$A%fP+47TtUu*a;p^48M;(VH>@>3> zB>hi$1sWHZV}oUmhzDOZhW!3YzRL9v>8+V&RF}AWYu-3W4b>OWR6p{DBez;qKeVZO z#!In%r=@Pt;rn)6;M&MMs@Z<~uWd$?PPq6hQ=jQ)f>Rd_FMB$7{JP*#CA+;HKG_n~ zyJ?~SesMu;3XZVY*_=1u=o+#uoOf6iqYV6Wa=o|@j%b-;yJ&M)p<*LD!1VYF;ajww zcc*nVrKlIy_?xIshQ7|v99N`5k(x>QlpDU$-tf~smW=y+X zy!tF(WDVnWEV0=r(AQQ;e4v*xCe=C%MK+qwlWWyUp&=cF8&M;`~X-cfn- z={2Z+hoEqHC9AA19WH|tKsQN_68)DIujKds{luP=;V@!XZ73~`Df63bH#!z8*2(-k zM=A^8Wzu?tSr3{9A}!b5rbzyB`h6=?8#suS_XERmI;@OtKb=_j+*ii*waTG>Z+Io~XU@KkO!a?HeD&Fo;f&`6HKJ|r@v>b9wrG#6Ze-K?s8gKd$gFBCxGou`wuY z_=t3j)`+TUBpGcd)Y-O*M7FIpbC}_6mBQZUG?mnL)?n{LH;S(><#=drwaj#Q)4Z&= zJ)7axWbtXgYhB_o=CD)Ub1^4%Oh!Ziv3>l?Q(F2|&LN8l|82kRVNzeXMuSG!LO9a= zp5`&z#LCZ<>`JQptjVJN*yrKa$ey$@+i}tDedUh1%GG|B9;&5QA*aVB2lB44Hs`i$ zSVIYs+ndY724m*Rk6#G0#awV>-uV$&(=u80p2(*hE_m}`qlseIe)P{-jhc3DB#kX1 z96EfJUfQ3+)v>aQw(b%s&ZiUd8hu&AAbQkCxl#WpzGUZmOT~{o-Z^WprX&VaRj7S{ z`30|GBRT^@1f7S<&~U2M%(cy!j4TCuCRe|BRm-jwgFrXnuHJg|sf0>^s+_cDlX<*SulCFxIO*R524z07n?OVyYx zk85c;to?Iw`BA0RwYJ^E-wV;>NN>)$l4F5el08p;nYqUf%I+im zDur47v*WV544%e)8Xg~cW)k^J>%nf1l1bLm;BR4&X`{P(gfpp0b%@C=}WjU0xnV8BuNXSfOwaV~qs z-4p;_&$&J_f_V}U=XEf3(8x%DMQewIbG;)4r%Ou)YA}K-V+5Fq=wd1+oNMs8Fbji# zu$)V=gT0@-_>=Z0mBo4{S!HHxeJ6B6;c0PU*tbm{p z3MX<=6vc5am>4c8b__Qtnshu^Ie7)e3%p9~bbQK}u&Qb(0d)<{%Ys+5w3&r;bgy1x z5z*7X&MatP$b69u^n<4C7tPE?NkKP=6SJ}wziGoMVT+OkJt4OgXbQQdsa;%oWyr8@ z?za^AWIa52<-EKBc^^j~Z*O0Fyqll1lRMtt!PD8+-P;du@9pRu;C#mqG^Xc%#mLx5 zBl1#}_|W;uPArnlkW@XvG@T8zsDZ4K>|=&>9|-HULlpQJYm90e1PwLQZyc;x#NAx3 zq$zk2g>f$kb*fWryS45@6<969@Kz@NVYK3BkEwUZe%bBJDSy(Me+33PFH>@y?YF%P zs;Lstm%3;T;UzKI0-9?bzy)FzO>^HHPtz3DC*!q1j5J?>;{{SwMVluEZwa+i&@5=y7{> zbBpfzFYh4}r~Eew{SryKW2SuV+2Jx5pQDk|c_nXlKc9Rdm8!sA7&>UnX) zF$RCobMve!*Lh;fzl2&UnZ4Z^?4f^0irI#qT!R;Yu?kGHHpq< zf+lR%^|MY)$2D5qvYKOcw>`df1Y?C_l>hWdtqm39PpbO}J9#nhRC$ Bht2>1 diff --git a/scenes/entities/Zombies/cone_zombie.tscn b/scenes/entities/Zombies/cone_zombie.tscn index e3d0bbd..13881ac 100644 --- a/scenes/entities/Zombies/cone_zombie.tscn +++ b/scenes/entities/Zombies/cone_zombie.tscn @@ -41,7 +41,7 @@ _armor = NodePath("Armor") material = SubResource("ShaderMaterial_sat5k") [node name="RightUpperLeg" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt" index="1"] -scale = Vector2(0.999834, 0.999834) +scale = Vector2(0.999832, 0.999832) [node name="RightLowerLeg" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/RightUpperLeg" index="1"] scale = Vector2(0.999835, 0.999835) @@ -50,42 +50,43 @@ scale = Vector2(0.999835, 0.999835) scale = Vector2(0.999831, 0.999831) [node name="LeftUpperLeg" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt" index="2"] -scale = Vector2(0.999832, 0.999832) +scale = Vector2(0.999831, 0.999831) [node name="LeftLowerLeg" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/LeftUpperLeg" index="1"] -scale = Vector2(0.99983, 0.99983) +scale = Vector2(0.999831, 0.999831) [node name="LeftFoot" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/LeftUpperLeg/LeftLowerLeg" index="1"] -scale = Vector2(0.99983, 0.99983) +scale = Vector2(0.999829, 0.999829) [node name="Body" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt" index="3"] scale = Vector2(0.999829, 0.999829) [node name="RightUpperArm" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body" index="0"] -scale = Vector2(0.999828, 0.999828) +scale = Vector2(0.999827, 0.999827) [node name="RightLowerArm" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/RightUpperArm" index="1"] -scale = Vector2(0.999828, 0.999828) +scale = Vector2(0.999826, 0.999826) [node name="RightHand" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/RightUpperArm/RightLowerArm" index="0"] scale = Vector2(0.999828, 0.999828) [node name="Tie" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body" index="2"] -skew = -8.97646e-05 +rotation = -0.0219556 +skew = -9.19104e-05 [node name="Head" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body" index="3"] -scale = Vector2(0.999829, 0.999829) +scale = Vector2(0.999828, 0.999828) -[node name="Left_Eye" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/Head/HeadParticle/Head" index="1"] -position = Vector2(-4, -8.99999) +[node name="Right_Eye" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/Head/HeadParticle/Head" index="0"] +position = Vector2(-16, -7.99999) [node name="Jaw" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/Head/HeadParticle/Head" index="2"] -position = Vector2(-2.87212, 2.69138) -rotation = -0.0719238 -scale = Vector2(0.999829, 0.999829) +position = Vector2(-2.94667, 2.87129) +rotation = -0.0641243 +scale = Vector2(0.999828, 0.999828) [node name="Jaw" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/Head" index="1"] -scale = Vector2(0.999829, 0.999829) +scale = Vector2(0.999828, 0.999828) [node name="Hat" type="RigidBody2D" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/Head" index="4" node_paths=PackedStringArray("data")] position = Vector2(-2.5, -13.5) @@ -115,19 +116,19 @@ position = Vector2(1, -6) shape = SubResource("CircleShape2D_67t4t") [node name="LeftUpperArm" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body" index="4"] -scale = Vector2(0.999829, 0.999829) +scale = Vector2(0.999828, 0.999828) [node name="Left_Lower_Arm" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/LeftUpperArm/HandProjectile" index="0"] -rotation = -0.109137 -scale = Vector2(0.999998, 0.999998) +rotation = -0.0265831 +scale = Vector2(1, 1) [node name="Left_Hand" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/LeftUpperArm/HandProjectile/Left_Lower_Arm" index="0"] position = Vector2(-0.99983, 12.9978) -rotation = -0.0899616 -scale = Vector2(0.999656, 0.999656) +rotation = -0.0375163 +scale = Vector2(0.999657, 0.999657) [node name="LeftLowerArm" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/LeftUpperArm" index="2"] -scale = Vector2(0.999828, 0.999828) +scale = Vector2(0.99983, 0.99983) [node name="LeftHand" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/LeftUpperArm/LeftLowerArm" index="0"] scale = Vector2(0.999826, 0.999826) @@ -137,6 +138,7 @@ _damage = SubResource("Resource_w70im") [node name="Mover" parent="." index="4"] _speed = SubResource("Resource_qof5v") +_speedControlMult = 0.306946 [node name="Armor" type="Node" parent="." index="6"] script = ExtResource("3_5s7in") diff --git a/scenes/entities/Zombies/hobo.tscn b/scenes/entities/Zombies/hobo.tscn index 1b88773..de969f2 100644 --- a/scenes/entities/Zombies/hobo.tscn +++ b/scenes/entities/Zombies/hobo.tscn @@ -1,4 +1,4 @@ -[gd_scene load_steps=41 format=3 uid="uid://bgqmwsb6ynm81"] +[gd_scene load_steps=63 format=3 uid="uid://bgqmwsb6ynm81"] [ext_resource type="PackedScene" uid="uid://co11v3w8hbwgf" path="res://scenes/entities/Zombies/zombie.tscn" id="1_fnu7s"] [ext_resource type="Shader" uid="uid://d0eo5uuj222c4" path="res://assets/shaders/CG_color_blender.gdshader" id="2_6qr4h"] @@ -8,11 +8,14 @@ [ext_resource type="Script" uid="uid://c5v2og85t7s6j" path="res://scripts/zombies/behaviours/HoboBehaviour.cs" id="4_5selg"] [ext_resource type="Script" uid="uid://c3cfnrmnnuqms" path="res://addons/floatmodifiers/FloatModifiers.cs" id="4_c1y3b"] [ext_resource type="Script" uid="uid://fd4im1fmwc5n" path="res://scripts/Armor.cs" id="4_w8pya"] +[ext_resource type="Texture2D" uid="uid://dri70dxyks7xh" path="res://assets/sprites/zombies/hobo.png" id="5_b583s"] [ext_resource type="Script" uid="uid://bbw848msxb4re" path="res://scripts/DegradingSprite.cs" id="5_ndwp0"] [ext_resource type="Texture2D" uid="uid://8h5vg1pk32b2" path="res://assets/sprites/garbage_can1.tres" id="6_i6nje"] [ext_resource type="Texture2D" uid="uid://cogfbn4re3kob" path="res://assets/sprites/garbage_can2.tres" id="7_txjqc"] +[ext_resource type="AnimationLibrary" uid="uid://ceb3khu7rwgy8" path="res://resources/animations/zombies/basic.res" id="7_vn3j1"] [ext_resource type="AudioStream" uid="uid://bu1egfsyplpx4" path="res://assets/audio/sfx/metalhit_generic.tres" id="8_4248q"] [ext_resource type="Texture2D" uid="uid://n2j2k2aijr7j" path="res://assets/sprites/garbage_can3.tres" id="8_b583s"] +[ext_resource type="AnimationLibrary" uid="uid://c0tlm0ta4dgbk" path="res://resources/animations/zombies/hobo.res" id="8_yb81c"] [ext_resource type="AudioStream" uid="uid://w0qfwds4o3ti" path="res://assets/audio/sfx/hit_generic.tres" id="9_tu6af"] [ext_resource type="Script" uid="uid://c36bj8u7jghc7" path="res://scripts/audio/ChannelPlayer.cs" id="11_7jlle"] [ext_resource type="AudioStream" uid="uid://ch55p7qbaawtp" path="res://assets/audio/sfx/argh.tres" id="12_w1b1s"] @@ -23,6 +26,50 @@ shader = ExtResource("2_6qr4h") shader_parameter/blend_color = Color(1, 1, 1, 1) shader_parameter/amount = 0.0 +[sub_resource type="AtlasTexture" id="AtlasTexture_txjqc"] +atlas = ExtResource("5_b583s") +region = Rect2(115, 52, 17, 9) + +[sub_resource type="AtlasTexture" id="AtlasTexture_b583s"] +atlas = ExtResource("5_b583s") +region = Rect2(86, 50, 10, 16) + +[sub_resource type="AtlasTexture" id="AtlasTexture_uoit3"] +atlas = ExtResource("5_b583s") +region = Rect2(115, 52, 17, 9) + +[sub_resource type="AtlasTexture" id="AtlasTexture_vn3j1"] +atlas = ExtResource("5_b583s") +region = Rect2(101, 50, 10, 16) + +[sub_resource type="AtlasTexture" id="AtlasTexture_yb81c"] +atlas = ExtResource("5_b583s") +region = Rect2(117, 1, 8, 16) + +[sub_resource type="AtlasTexture" id="AtlasTexture_nlwsb"] +atlas = ExtResource("5_b583s") +region = Rect2(129, 4, 7, 10) + +[sub_resource type="AtlasTexture" id="AtlasTexture_8y6c0"] +atlas = ExtResource("5_b583s") +region = Rect2(113, 22, 19, 13) + +[sub_resource type="AtlasTexture" id="AtlasTexture_nc6p3"] +atlas = ExtResource("5_b583s") +region = Rect2(80, 30, 7, 18) + +[sub_resource type="AtlasTexture" id="AtlasTexture_y0p2l"] +atlas = ExtResource("5_b583s") +region = Rect2(101, 37, 9, 11) + +[sub_resource type="AtlasTexture" id="AtlasTexture_op0h6"] +atlas = ExtResource("5_b583s") +region = Rect2(91, 32, 9, 15) + +[sub_resource type="AtlasTexture" id="AtlasTexture_0s5wm"] +atlas = ExtResource("5_b583s") +region = Rect2(137, 19, 29, 39) + [sub_resource type="AtlasTexture" id="AtlasTexture_w8pya"] atlas = ExtResource("3_6qr4h") region = Rect2(0, 15, 40, 49) @@ -35,6 +82,578 @@ region = Rect2(3, 0, 35, 11) radius = 17.0 height = 48.0 +[sub_resource type="AtlasTexture" id="AtlasTexture_pjhfy"] +atlas = ExtResource("5_b583s") +region = Rect2(80, 0, 32, 30) + +[sub_resource type="AtlasTexture" id="AtlasTexture_7cvmi"] +atlas = ExtResource("5_b583s") +region = Rect2(38, 22, 22, 13) + +[sub_resource type="AtlasTexture" id="AtlasTexture_n380g"] +atlas = ExtResource("5_b583s") +region = Rect2(34, 38, 45, 27) + +[sub_resource type="AtlasTexture" id="AtlasTexture_tebih"] +atlas = ExtResource("5_b583s") +region = Rect2(34, 0, 6, 19) + +[sub_resource type="AtlasTexture" id="AtlasTexture_auxav"] +atlas = ExtResource("5_b583s") +region = Rect2(43, 0, 9, 15) + +[sub_resource type="AtlasTexture" id="AtlasTexture_dntsa"] +atlas = ExtResource("5_b583s") +region = Rect2(55, 0, 9, 10) + +[sub_resource type="Animation" id="Animation_vn3j1"] +resource_name = "RESET" +tracks/0/type = "value" +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/path = NodePath("Zombie/Butt/Body/LeftUpperArm/LeftLowerArm:position") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 0, +"values": [Vector2(-2, 14)] +} +tracks/1/type = "value" +tracks/1/imported = false +tracks/1/enabled = true +tracks/1/path = NodePath("Zombie/Butt/Body/LeftUpperArm/LeftLowerArm:rotation") +tracks/1/interp = 1 +tracks/1/loop_wrap = true +tracks/1/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 0, +"values": [0.0] +} +tracks/2/type = "value" +tracks/2/imported = false +tracks/2/enabled = true +tracks/2/path = NodePath("Zombie/Butt/Body/LeftUpperArm/LeftLowerArm/LeftHand:position") +tracks/2/interp = 1 +tracks/2/loop_wrap = true +tracks/2/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 0, +"values": [Vector2(-1, 13)] +} +tracks/3/type = "value" +tracks/3/imported = false +tracks/3/enabled = true +tracks/3/path = NodePath("Zombie/Butt/Body/LeftUpperArm/LeftLowerArm/LeftHand:rotation") +tracks/3/interp = 1 +tracks/3/loop_wrap = true +tracks/3/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 0, +"values": [0.0] +} +tracks/4/type = "value" +tracks/4/imported = false +tracks/4/enabled = true +tracks/4/path = NodePath("Zombie/Butt/Body/LeftUpperArm:position") +tracks/4/interp = 1 +tracks/4/loop_wrap = true +tracks/4/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 0, +"values": [Vector2(-1, -20)] +} +tracks/5/type = "value" +tracks/5/imported = false +tracks/5/enabled = true +tracks/5/path = NodePath("Zombie/Butt/Body/LeftUpperArm:rotation") +tracks/5/interp = 1 +tracks/5/loop_wrap = true +tracks/5/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 0, +"values": [0.0] +} +tracks/6/type = "value" +tracks/6/imported = false +tracks/6/enabled = true +tracks/6/path = NodePath("Zombie/Butt/Body/Head/LeftEye:position") +tracks/6/interp = 1 +tracks/6/loop_wrap = true +tracks/6/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 0, +"values": [Vector2(-4, -9)] +} +tracks/7/type = "value" +tracks/7/imported = false +tracks/7/enabled = true +tracks/7/path = NodePath("Zombie/Butt/Body/Head/LeftEye:rotation") +tracks/7/interp = 1 +tracks/7/loop_wrap = true +tracks/7/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 0, +"values": [0.0] +} +tracks/8/type = "value" +tracks/8/imported = false +tracks/8/enabled = true +tracks/8/path = NodePath("Zombie/Butt/Body/Head/RightEye:position") +tracks/8/interp = 1 +tracks/8/loop_wrap = true +tracks/8/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 0, +"values": [Vector2(-16, -8)] +} +tracks/9/type = "value" +tracks/9/imported = false +tracks/9/enabled = true +tracks/9/path = NodePath("Zombie/Butt/Body/Head/RightEye:rotation") +tracks/9/interp = 1 +tracks/9/loop_wrap = true +tracks/9/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 0, +"values": [0.0] +} +tracks/10/type = "value" +tracks/10/imported = false +tracks/10/enabled = true +tracks/10/path = NodePath("Zombie/Butt/Body/Head/Jaw:position") +tracks/10/interp = 1 +tracks/10/loop_wrap = true +tracks/10/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 0, +"values": [Vector2(-3, 3)] +} +tracks/11/type = "value" +tracks/11/imported = false +tracks/11/enabled = true +tracks/11/path = NodePath("Zombie/Butt/Body/Head/Jaw:rotation") +tracks/11/interp = 1 +tracks/11/loop_wrap = true +tracks/11/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 0, +"values": [0.0] +} +tracks/12/type = "value" +tracks/12/imported = false +tracks/12/enabled = true +tracks/12/path = NodePath("Zombie/Butt/Body/RightUpperArm/RightLowerArm/RightHand:position") +tracks/12/interp = 1 +tracks/12/loop_wrap = true +tracks/12/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 0, +"values": [Vector2(-1, 13)] +} +tracks/13/type = "value" +tracks/13/imported = false +tracks/13/enabled = true +tracks/13/path = NodePath("Zombie/Butt/Body/RightUpperArm/RightLowerArm/RightHand:rotation") +tracks/13/interp = 1 +tracks/13/loop_wrap = true +tracks/13/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 0, +"values": [0.0] +} +tracks/14/type = "value" +tracks/14/imported = false +tracks/14/enabled = true +tracks/14/path = NodePath("Zombie/Butt/Body/RightUpperArm/RightLowerArm:position") +tracks/14/interp = 1 +tracks/14/loop_wrap = true +tracks/14/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 0, +"values": [Vector2(-2, 15)] +} +tracks/15/type = "value" +tracks/15/imported = false +tracks/15/enabled = true +tracks/15/path = NodePath("Zombie/Butt/Body/RightUpperArm/RightLowerArm:rotation") +tracks/15/interp = 1 +tracks/15/loop_wrap = true +tracks/15/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 0, +"values": [0.0] +} +tracks/16/type = "value" +tracks/16/imported = false +tracks/16/enabled = true +tracks/16/path = NodePath("Zombie/Butt/Body/RightUpperArm:position") +tracks/16/interp = 1 +tracks/16/loop_wrap = true +tracks/16/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 0, +"values": [Vector2(-14, -23)] +} +tracks/17/type = "value" +tracks/17/imported = false +tracks/17/enabled = true +tracks/17/path = NodePath("Zombie/Butt/Body/RightUpperArm:rotation") +tracks/17/interp = 1 +tracks/17/loop_wrap = true +tracks/17/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 0, +"values": [0.0] +} +tracks/18/type = "value" +tracks/18/imported = false +tracks/18/enabled = true +tracks/18/path = NodePath("Zombie/Butt/LeftUpperLeg/LeftLowerLeg/LeftFoot:position") +tracks/18/interp = 1 +tracks/18/loop_wrap = true +tracks/18/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 0, +"values": [Vector2(6, 10)] +} +tracks/19/type = "value" +tracks/19/imported = false +tracks/19/enabled = true +tracks/19/path = NodePath("Zombie/Butt/LeftUpperLeg/LeftLowerLeg/LeftFoot:rotation") +tracks/19/interp = 1 +tracks/19/loop_wrap = true +tracks/19/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 0, +"values": [0.0] +} +tracks/20/type = "value" +tracks/20/imported = false +tracks/20/enabled = true +tracks/20/path = NodePath("Zombie/Butt/LeftUpperLeg/LeftLowerLeg:position") +tracks/20/interp = 1 +tracks/20/loop_wrap = true +tracks/20/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 0, +"values": [Vector2(-1, 13)] +} +tracks/21/type = "value" +tracks/21/imported = false +tracks/21/enabled = true +tracks/21/path = NodePath("Zombie/Butt/LeftUpperLeg/LeftLowerLeg:rotation") +tracks/21/interp = 1 +tracks/21/loop_wrap = true +tracks/21/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 0, +"values": [0.0] +} +tracks/22/type = "value" +tracks/22/imported = false +tracks/22/enabled = true +tracks/22/path = NodePath("Zombie/Butt/LeftUpperLeg:position") +tracks/22/interp = 1 +tracks/22/loop_wrap = true +tracks/22/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 0, +"values": [Vector2(6, 4)] +} +tracks/23/type = "value" +tracks/23/imported = false +tracks/23/enabled = true +tracks/23/path = NodePath("Zombie/Butt/LeftUpperLeg:rotation") +tracks/23/interp = 1 +tracks/23/loop_wrap = true +tracks/23/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 0, +"values": [0.0] +} +tracks/24/type = "value" +tracks/24/imported = false +tracks/24/enabled = true +tracks/24/path = NodePath("Zombie/Butt/RightUpperLeg/RightLowerLeg/RightFoot:position") +tracks/24/interp = 1 +tracks/24/loop_wrap = true +tracks/24/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 0, +"values": [Vector2(-2, 14)] +} +tracks/25/type = "value" +tracks/25/imported = false +tracks/25/enabled = true +tracks/25/path = NodePath("Zombie/Butt/RightUpperLeg/RightLowerLeg/RightFoot:rotation") +tracks/25/interp = 1 +tracks/25/loop_wrap = true +tracks/25/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 0, +"values": [0.0] +} +tracks/26/type = "value" +tracks/26/imported = false +tracks/26/enabled = true +tracks/26/path = NodePath("Zombie/Butt/RightUpperLeg/RightLowerLeg:position") +tracks/26/interp = 1 +tracks/26/loop_wrap = true +tracks/26/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 0, +"values": [Vector2(-2, 12)] +} +tracks/27/type = "value" +tracks/27/imported = false +tracks/27/enabled = true +tracks/27/path = NodePath("Zombie/Butt/RightUpperLeg/RightLowerLeg:rotation") +tracks/27/interp = 1 +tracks/27/loop_wrap = true +tracks/27/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 0, +"values": [0.0] +} +tracks/28/type = "value" +tracks/28/imported = false +tracks/28/enabled = true +tracks/28/path = NodePath("Zombie/Butt/RightUpperLeg:position") +tracks/28/interp = 1 +tracks/28/loop_wrap = true +tracks/28/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 0, +"values": [Vector2(-6, 3)] +} +tracks/29/type = "value" +tracks/29/imported = false +tracks/29/enabled = true +tracks/29/path = NodePath("Zombie/Butt/RightUpperLeg:rotation") +tracks/29/interp = 1 +tracks/29/loop_wrap = true +tracks/29/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 0, +"values": [0.0] +} +tracks/30/type = "value" +tracks/30/imported = false +tracks/30/enabled = true +tracks/30/path = NodePath("Zombie/Butt:position") +tracks/30/interp = 1 +tracks/30/loop_wrap = true +tracks/30/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 0, +"values": [Vector2(5, -35)] +} +tracks/31/type = "value" +tracks/31/imported = false +tracks/31/enabled = true +tracks/31/path = NodePath("Zombie/Butt:rotation") +tracks/31/interp = 1 +tracks/31/loop_wrap = true +tracks/31/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 0, +"values": [0.0] +} +tracks/32/type = "value" +tracks/32/imported = false +tracks/32/enabled = true +tracks/32/path = NodePath("Zombie/Butt/Body:position") +tracks/32/interp = 1 +tracks/32/loop_wrap = true +tracks/32/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 0, +"values": [Vector2(1, -2)] +} +tracks/33/type = "value" +tracks/33/imported = false +tracks/33/enabled = true +tracks/33/path = NodePath("Zombie/Butt/Body:rotation") +tracks/33/interp = 1 +tracks/33/loop_wrap = true +tracks/33/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 0, +"values": [0.0] +} +tracks/34/type = "value" +tracks/34/imported = false +tracks/34/enabled = true +tracks/34/path = NodePath("Zombie:position") +tracks/34/interp = 1 +tracks/34/loop_wrap = true +tracks/34/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 0, +"values": [Vector2(0, 0)] +} +tracks/35/type = "value" +tracks/35/imported = false +tracks/35/enabled = true +tracks/35/path = NodePath("Zombie:rotation") +tracks/35/interp = 1 +tracks/35/loop_wrap = true +tracks/35/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 0, +"values": [0.0] +} +tracks/36/type = "value" +tracks/36/imported = false +tracks/36/enabled = true +tracks/36/path = NodePath("Zombie/Butt/Body/Head:position") +tracks/36/interp = 1 +tracks/36/loop_wrap = true +tracks/36/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 0, +"values": [Vector2(-10, -25)] +} +tracks/37/type = "value" +tracks/37/imported = false +tracks/37/enabled = true +tracks/37/path = NodePath("Zombie/Butt/Body/Head:rotation") +tracks/37/interp = 1 +tracks/37/loop_wrap = true +tracks/37/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 0, +"values": [0.0] +} +tracks/38/type = "value" +tracks/38/imported = false +tracks/38/enabled = true +tracks/38/path = NodePath("Zombie/Butt/Body/Head:visible") +tracks/38/interp = 1 +tracks/38/loop_wrap = true +tracks/38/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 1, +"values": [true] +} +tracks/39/type = "value" +tracks/39/imported = false +tracks/39/enabled = true +tracks/39/path = NodePath("Zombie/Butt/Body/Head/TrashcanLid:position") +tracks/39/interp = 1 +tracks/39/loop_wrap = true +tracks/39/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 0, +"values": [Vector2(-0.0022974, -17.0131)] +} +tracks/40/type = "value" +tracks/40/imported = false +tracks/40/enabled = true +tracks/40/path = NodePath("Zombie/Butt/Body/Head/TrashcanLid:rotation") +tracks/40/interp = 1 +tracks/40/loop_wrap = true +tracks/40/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 0, +"values": [0.0] +} +tracks/41/type = "value" +tracks/41/imported = false +tracks/41/enabled = true +tracks/41/path = NodePath("Zombie/Butt/Body/Head/TrashcanLid:visible") +tracks/41/interp = 1 +tracks/41/loop_wrap = true +tracks/41/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 1, +"values": [false] +} +tracks/42/type = "value" +tracks/42/imported = false +tracks/42/enabled = true +tracks/42/path = NodePath("Zombie/Butt/Body/LeftUpperArm/HandProjectile/Left_Lower_Arm/Left_Hand:texture") +tracks/42/interp = 1 +tracks/42/loop_wrap = true +tracks/42/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 1, +"values": [SubResource("AtlasTexture_dntsa")] +} +tracks/43/type = "value" +tracks/43/imported = false +tracks/43/enabled = true +tracks/43/path = NodePath("../../Mover:_speedControlMult") +tracks/43/interp = 1 +tracks/43/loop_wrap = true +tracks/43/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 0, +"values": [0.0] +} +tracks/44/type = "value" +tracks/44/imported = false +tracks/44/enabled = true +tracks/44/path = NodePath("Zombie/Butt/Body/LeftUpperArm/HandProjectile/Left_Lower_Arm/Left_Hand:offset") +tracks/44/interp = 1 +tracks/44/loop_wrap = true +tracks/44/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 0, +"values": [Vector2(-4, -1)] +} + +[sub_resource type="AnimationLibrary" id="AnimationLibrary_x5uj2"] +_data = { +&"RESET": SubResource("Animation_vn3j1") +} + [sub_resource type="Resource" id="Resource_qg8rq"] resource_local_to_scene = true script = ExtResource("4_c1y3b") @@ -44,77 +663,86 @@ mult_value = 1.0 [sub_resource type="AnimationNodeTimeScale" id="AnimationNodeTimeScale_2q05d"] -[sub_resource type="AnimationNodeAnimation" id="AnimationNodeAnimation_h0rfo"] -animation = &"basic_zombie_eating" - -[sub_resource type="AnimationNodeAnimation" id="AnimationNodeAnimation_nog33"] -animation = &"basic_zombie_stand" - -[sub_resource type="AnimationNodeAnimation" id="AnimationNodeAnimation_g2uel"] -animation = &"basic_zombie_walk" +[sub_resource type="AnimationNodeAnimation" id="AnimationNodeAnimation_vn3j1"] +animation = &"basic/death" [sub_resource type="AnimationNodeAnimation" id="AnimationNodeAnimation_02fim"] -animation = &"hobo_zombie/can_destroy" +animation = &"basic/stand" + +[sub_resource type="AnimationNodeAnimation" id="AnimationNodeAnimation_yb81c"] +animation = &"basic/eating" + +[sub_resource type="AnimationNodeAnimation" id="AnimationNodeAnimation_h0rfo"] +animation = &"hobo/eating_without_arms" + +[sub_resource type="AnimationNodeAnimation" id="AnimationNodeAnimation_nog33"] +animation = &"basic/stand" [sub_resource type="AnimationNodeAnimation" id="AnimationNodeAnimation_c1y3b"] -animation = &"basic_zombie_walk" +animation = &"basic/walk" + +[sub_resource type="AnimationNodeAnimation" id="AnimationNodeAnimation_g2uel"] +animation = &"hobo/Jump_walking" [sub_resource type="AnimationNodeStateMachineTransition" id="AnimationNodeStateMachineTransition_vxhht"] advance_mode = 2 -[sub_resource type="AnimationNodeStateMachineTransition" id="AnimationNodeStateMachineTransition_y2ivb"] +[sub_resource type="AnimationNodeStateMachineTransition" id="AnimationNodeStateMachineTransition_n380g"] +xfade_time = 0.5 advance_mode = 2 -advance_expression = "get(\"isEating\") == true" +advance_expression = "get(\"isEating\")" -[sub_resource type="AnimationNodeStateMachineTransition" id="AnimationNodeStateMachineTransition_7d3k4"] +[sub_resource type="AnimationNodeStateMachineTransition" id="AnimationNodeStateMachineTransition_nlwsb"] +xfade_time = 0.5 advance_mode = 2 -advance_expression = "get(\"isEating\") == true" +advance_expression = "get(\"isEating\") == false" -[sub_resource type="AnimationNodeStateMachineTransition" id="AnimationNodeStateMachineTransition_qg8rq"] +[sub_resource type="AnimationNodeStateMachineTransition" id="AnimationNodeStateMachineTransition_8y6c0"] +xfade_time = 0.5 advance_mode = 2 -advance_expression = "get(\"canDestroyed\") == false" +advance_expression = "get(\"isEating\")" -[sub_resource type="AnimationNodeStateMachineTransition" id="AnimationNodeStateMachineTransition_4248q"] +[sub_resource type="AnimationNodeStateMachineTransition" id="AnimationNodeStateMachineTransition_nc6p3"] +xfade_time = 0.5 advance_mode = 2 -advance_expression = "get(\"canDestroyed\") == true" +advance_expression = "get(\"isEating\") == false" -[sub_resource type="AnimationNodeStateMachineTransition" id="AnimationNodeStateMachineTransition_tu6af"] -advance_mode = 2 -advance_expression = "get(\"isEating\") == true" - -[sub_resource type="AnimationNodeStateMachineTransition" id="AnimationNodeStateMachineTransition_yalvk"] -advance_mode = 2 -advance_expression = "get(\"canDestroyed\") == true and get(\"isEating\") == false" - -[sub_resource type="AnimationNodeStateMachineTransition" id="AnimationNodeStateMachineTransition_7jlle"] +[sub_resource type="AnimationNodeStateMachineTransition" id="AnimationNodeStateMachineTransition_y0p2l"] +break_loop_at_end = true switch_mode = 2 advance_mode = 2 -[sub_resource type="AnimationNodeStateMachineTransition" id="AnimationNodeStateMachineTransition_w1b1s"] +[sub_resource type="AnimationNodeStateMachineTransition" id="AnimationNodeStateMachineTransition_uoit3"] +xfade_time = 0.5 advance_mode = 2 -advance_expression = "get(\"canDestroyed\") == false and get(\"isEating\") == false" +advance_expression = "get(\"isEating\") == false and can_process()" -[sub_resource type="AnimationNodeStateMachineTransition" id="AnimationNodeStateMachineTransition_02fim"] +[sub_resource type="AnimationNodeStateMachineTransition" id="AnimationNodeStateMachineTransition_vn3j1"] +xfade_time = 0.5 advance_mode = 2 -advance_expression = "get(\"canDestroyed\") == true" +advance_expression = "get(\"isEating\") and can_process()" [sub_resource type="AnimationNodeStateMachine" id="AnimationNodeStateMachine_xg3p6"] -states/End/position = Vector2(1183, 100) -states/basic_zombie_eat/node = SubResource("AnimationNodeAnimation_h0rfo") -states/basic_zombie_eat/position = Vector2(711, 206) -states/basic_zombie_idle/node = SubResource("AnimationNodeAnimation_nog33") -states/basic_zombie_idle/position = Vector2(368, 100) -states/basic_zombie_walk/node = SubResource("AnimationNodeAnimation_g2uel") -states/basic_zombie_walk/position = Vector2(711, -21) -states/hobo_zombie_can_destroy/node = SubResource("AnimationNodeAnimation_02fim") -states/hobo_zombie_can_destroy/position = Vector2(368, 206) -states/hobo_zombie_run/node = SubResource("AnimationNodeAnimation_c1y3b") -states/hobo_zombie_run/position = Vector2(866, 89) -transitions = ["Start", "basic_zombie_idle", SubResource("AnimationNodeStateMachineTransition_vxhht"), "basic_zombie_idle", "basic_zombie_eat", SubResource("AnimationNodeStateMachineTransition_y2ivb"), "basic_zombie_walk", "basic_zombie_eat", SubResource("AnimationNodeStateMachineTransition_7d3k4"), "basic_zombie_idle", "basic_zombie_walk", SubResource("AnimationNodeStateMachineTransition_qg8rq"), "basic_zombie_idle", "hobo_zombie_run", SubResource("AnimationNodeStateMachineTransition_4248q"), "hobo_zombie_run", "basic_zombie_eat", SubResource("AnimationNodeStateMachineTransition_tu6af"), "basic_zombie_eat", "hobo_zombie_run", SubResource("AnimationNodeStateMachineTransition_yalvk"), "hobo_zombie_can_destroy", "basic_zombie_idle", SubResource("AnimationNodeStateMachineTransition_7jlle"), "basic_zombie_eat", "basic_zombie_walk", SubResource("AnimationNodeStateMachineTransition_w1b1s"), "basic_zombie_walk", "hobo_zombie_run", SubResource("AnimationNodeStateMachineTransition_02fim")] -graph_offset = Vector2(-30, 35) +states/Death/node = SubResource("AnimationNodeAnimation_vn3j1") +states/Death/position = Vector2(745, 220) +states/Destroy/node = SubResource("AnimationNodeAnimation_02fim") +states/Destroy/position = Vector2(773, 67) +states/Eat/node = SubResource("AnimationNodeAnimation_yb81c") +states/Eat/position = Vector2(942, 145) +states/Eat_with_can/node = SubResource("AnimationNodeAnimation_h0rfo") +states/Eat_with_can/position = Vector2(583, 145) +states/End/position = Vector2(1185, 100) +states/Idle/node = SubResource("AnimationNodeAnimation_nog33") +states/Idle/position = Vector2(368, 100) +states/Run/node = SubResource("AnimationNodeAnimation_c1y3b") +states/Run/position = Vector2(942, -3) +states/Walk/node = SubResource("AnimationNodeAnimation_g2uel") +states/Walk/position = Vector2(583, -3) +transitions = ["Start", "Idle", SubResource("AnimationNodeStateMachineTransition_vxhht"), "Walk", "Eat_with_can", SubResource("AnimationNodeStateMachineTransition_n380g"), "Eat_with_can", "Walk", SubResource("AnimationNodeStateMachineTransition_nlwsb"), "Run", "Eat", SubResource("AnimationNodeStateMachineTransition_8y6c0"), "Eat", "Run", SubResource("AnimationNodeStateMachineTransition_nc6p3"), "Destroy", "Run", SubResource("AnimationNodeStateMachineTransition_y0p2l"), "Idle", "Walk", SubResource("AnimationNodeStateMachineTransition_uoit3"), "Idle", "Eat_with_can", SubResource("AnimationNodeStateMachineTransition_vn3j1")] +graph_offset = Vector2(274, -18) [sub_resource type="AnimationNodeBlendTree" id="AnimationNodeBlendTree_txjqc"] -graph_offset = Vector2(-447, 53) +graph_offset = Vector2(-427.399, 70.0005) nodes/TimeScale/node = SubResource("AnimationNodeTimeScale_2q05d") nodes/TimeScale/position = Vector2(60, 120) nodes/Tree/node = SubResource("AnimationNodeStateMachine_xg3p6") @@ -136,79 +764,172 @@ _effectImmunities = [ExtResource("3_b583s")] [node name="CanvasGroup" parent="." index="0"] material = SubResource("ShaderMaterial_w8pya") +[node name="Butt" parent="CanvasGroup/basic_zombie_walk/Zombie" index="0"] +scale = Vector2(0.999902, 0.999902) + +[node name="Butt" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt" index="0"] +texture = SubResource("AtlasTexture_txjqc") + [node name="RightUpperLeg" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt" index="1"] -scale = Vector2(0.999825, 0.999825) +scale = Vector2(0.999826, 0.999826) + +[node name="Right_Upper_Leg" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/RightUpperLeg" index="0"] +texture = SubResource("AtlasTexture_b583s") [node name="RightLowerLeg" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/RightUpperLeg" index="1"] -scale = Vector2(0.999829, 0.999829) +scale = Vector2(0.99983, 0.99983) [node name="RightFoot" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/RightUpperLeg/RightLowerLeg" index="0"] -scale = Vector2(0.999826, 0.999826) +scale = Vector2(0.99983, 0.99983) + +[node name="Right_Foot" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/RightUpperLeg/RightLowerLeg/RightFoot" index="0"] +texture = SubResource("AtlasTexture_uoit3") + +[node name="Right_Lower_Leg" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/RightUpperLeg/RightLowerLeg" index="1"] +texture = SubResource("AtlasTexture_vn3j1") [node name="LeftUpperLeg" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt" index="2"] scale = Vector2(0.999829, 0.999829) +[node name="Left_Upper_Leg" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/LeftUpperLeg" index="0"] +texture = SubResource("AtlasTexture_yb81c") + [node name="LeftLowerLeg" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/LeftUpperLeg" index="1"] -scale = Vector2(0.999829, 0.999829) +scale = Vector2(0.999832, 0.999832) + +[node name="Left_Lower_Leg" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/LeftUpperLeg/LeftLowerLeg" index="0"] +texture = SubResource("AtlasTexture_nlwsb") [node name="LeftFoot" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/LeftUpperLeg/LeftLowerLeg" index="1"] -scale = Vector2(0.999824, 0.999824) +scale = Vector2(0.999822, 0.999822) + +[node name="Left_Foot" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/LeftUpperLeg/LeftLowerLeg/LeftFoot" index="0"] +texture = SubResource("AtlasTexture_8y6c0") [node name="Body" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt" index="3"] -scale = Vector2(0.999829, 0.999829) +scale = Vector2(0.99983, 0.99983) [node name="RightUpperArm" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body" index="0"] -scale = Vector2(0.99983, 0.99983) +scale = Vector2(0.999829, 0.999829) + +[node name="Right_Upper_Arm" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/RightUpperArm" index="0"] +texture = SubResource("AtlasTexture_nc6p3") [node name="RightLowerArm" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/RightUpperArm" index="1"] -scale = Vector2(0.99982, 0.99982) +scale = Vector2(0.999813, 0.999813) [node name="RightHand" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/RightUpperArm/RightLowerArm" index="0"] -scale = Vector2(0.99983, 0.99983) +scale = Vector2(0.999828, 0.999828) -[node name="Head" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body" index="3"] -scale = Vector2(0.999829, 0.999829) +[node name="Right_Hand" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/RightUpperArm/RightLowerArm/RightHand" index="0"] +texture = SubResource("AtlasTexture_y0p2l") -[node name="Jaw" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/Head" index="1"] -scale = Vector2(0.999831, 0.999831) +[node name="Right_Lower_Arm" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/RightUpperArm/RightLowerArm" index="1"] +texture = SubResource("AtlasTexture_op0h6") -[node name="LeftUpperArm" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body" index="4"] -scale = Vector2(0.99983, 0.99983) +[node name="Body" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body" index="1"] +texture = SubResource("AtlasTexture_0s5wm") -[node name="LeftLowerArm" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/LeftUpperArm" index="1"] -scale = Vector2(0.999829, 0.999829) +[node name="Tie" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body" index="2"] +rotation = 0.0256379 -[node name="LeftHand" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/LeftUpperArm/LeftLowerArm" index="0"] -scale = Vector2(0.999829, 0.999829) +[node name="Tie" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/Tie" index="0"] +visible = false -[node name="Can" type="RigidBody2D" parent="CanvasGroup" index="1" node_paths=PackedStringArray("data")] +[node name="Can" type="RigidBody2D" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body" index="3" node_paths=PackedStringArray("data")] +scale = Vector2(1.00027, 1.00027) collision_layer = 128 collision_mask = 64 freeze = true script = ExtResource("3_tu6af") -data = NodePath("../..") +data = NodePath("../../../../../..") maxAngle = 45.0 minTorque = -45.0 maxTorque = 45.0 Impulse = 100.0 -[node name="Sprite2D" type="Sprite2D" parent="CanvasGroup/Can" index="0" node_paths=PackedStringArray("armor")] -position = Vector2(-4, -40) +[node name="Sprite2D" type="Sprite2D" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/Can" index="0" node_paths=PackedStringArray("armor")] +position = Vector2(-5.9999, -4.5002) texture = SubResource("AtlasTexture_w8pya") script = ExtResource("5_ndwp0") -armor = NodePath("../../../CanArmor") +armor = NodePath("../../../../../../../CanArmor") degradationStages = Array[Texture2D]([ExtResource("6_i6nje"), ExtResource("7_txjqc"), ExtResource("8_b583s")]) thresholdPercentage = Array[float]([1.0, 0.667, 0.333]) -[node name="Sprite2D2" type="Sprite2D" parent="CanvasGroup/Can" index="1"] +[node name="Sprite2D2" type="Sprite2D" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/Can" index="1"] z_index = -1 -position = Vector2(-6, -63) +position = Vector2(-7.4999, -27.5002) texture = SubResource("AtlasTexture_5selg") -[node name="CollisionShape2D" type="CollisionShape2D" parent="CanvasGroup/Can" index="2"] -position = Vector2(-3, -40) +[node name="CollisionShape2D" type="CollisionShape2D" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/Can" index="2"] +position = Vector2(-4.9999, -5.0002) shape = SubResource("CapsuleShape2D_4248q") +[node name="Head" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body" index="4"] +scale = Vector2(0.999826, 0.999826) + +[node name="Head" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/Head/HeadParticle" index="0"] +texture = SubResource("AtlasTexture_pjhfy") + +[node name="Right_Eye" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/Head/HeadParticle/Head" index="0"] +position = Vector2(-16, -8) + +[node name="Left_Eye" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/Head/HeadParticle/Head" index="1"] +position = Vector2(-4, -9) + +[node name="Jaw" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/Head/HeadParticle/Head" index="2"] +scale = Vector2(0.999825, 0.999825) +texture = SubResource("AtlasTexture_7cvmi") +offset = Vector2(-14, -2) + +[node name="Jaw" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/Head" index="1"] +scale = Vector2(0.999825, 0.999825) + +[node name="TrashcanLid" type="Bone2D" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/Head" index="4"] +visible = false +position = Vector2(-0.0022974, -17.0131) +scale = Vector2(0.999828, 0.999828) +rest = Transform2D(1, 0, 0, 1, -0.0022974, -17.0131) +auto_calculate_length_and_angle = false +length = 12.0 +bone_angle = 180.0 +editor_settings/show_bone_gizmo = false + +[node name="Trashcan_lid" type="Sprite2D" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/Head/TrashcanLid" index="0"] +z_index = -1 +scale = Vector2(1.00041, 1.00041) +texture = SubResource("AtlasTexture_n380g") +offset = Vector2(-0.5, -0.5) +metadata/_edit_lock_ = true + +[node name="LeftUpperArm" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body" index="5"] +scale = Vector2(0.99983, 0.99983) + +[node name="Left_Upper_Arm" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/LeftUpperArm" index="0"] +texture = SubResource("AtlasTexture_tebih") + +[node name="Left_Lower_Arm" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/LeftUpperArm/HandProjectile" index="0"] +scale = Vector2(0.999998, 0.999998) +texture = SubResource("AtlasTexture_auxav") + +[node name="Left_Hand" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/LeftUpperArm/HandProjectile/Left_Lower_Arm" index="0"] +position = Vector2(-0.99983, 12.9978) +scale = Vector2(0.999654, 0.999654) +texture = SubResource("AtlasTexture_dntsa") + +[node name="LeftLowerArm" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/LeftUpperArm" index="2"] +scale = Vector2(0.999828, 0.999828) + +[node name="LeftHand" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/LeftUpperArm/LeftLowerArm" index="0"] +scale = Vector2(0.999824, 0.999824) + +[node name="AnimationPlayer" parent="CanvasGroup/basic_zombie_walk" index="1"] +libraries = { +&"": SubResource("AnimationLibrary_x5uj2"), +&"basic": ExtResource("7_vn3j1"), +&"hobo": ExtResource("8_yb81c") +} + [node name="Eatbox" parent="." index="2"] _damage = SubResource("Resource_qg8rq") @@ -218,6 +939,7 @@ advance_expression_base_node = NodePath("../Behaviour") [node name="Mover" parent="." index="4"] _speed = SubResource("Resource_4248q") +_speedControlMult = 0.0 [node name="HitPlayer" parent="." index="6"] playlist = Array[AudioStream]([ExtResource("8_4248q"), ExtResource("9_tu6af")]) @@ -240,5 +962,5 @@ channel = "anger" metadata/_custom_type_script = "uid://c36bj8u7jghc7" [connection signal="ArmorLost" from="CanArmor" to="HitPlayer" method="Next"] -[connection signal="ArmorLost" from="CanArmor" to="CanvasGroup/Can" method="FallOff"] +[connection signal="ArmorLost" from="CanArmor" to="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/Can" method="FallOff"] [connection signal="ArmorLost" from="CanArmor" to="Behaviour" method="Trashed"] diff --git a/scenes/entities/Zombies/zombie.tscn b/scenes/entities/Zombies/zombie.tscn index 4247ed2..ce60b89 100644 --- a/scenes/entities/Zombies/zombie.tscn +++ b/scenes/entities/Zombies/zombie.tscn @@ -1,4 +1,4 @@ -[gd_scene load_steps=60 format=3 uid="uid://co11v3w8hbwgf"] +[gd_scene load_steps=62 format=3 uid="uid://co11v3w8hbwgf"] [ext_resource type="Script" uid="uid://dildme6epx8l4" path="res://scripts/zombies/RuntimeZombieData.cs" id="1_qq3f1"] [ext_resource type="AudioStream" uid="uid://dt13iugnnx4op" path="res://assets/audio/sfx/yuck_generic.tres" id="2_hh4qh"] @@ -12,6 +12,7 @@ [ext_resource type="Script" uid="uid://dt5uj25u0g6y3" path="res://scripts/particles/FallParticle.cs" id="7_dn8ha"] [ext_resource type="AnimationNodeStateMachine" uid="uid://dj0blope85bg7" path="res://resources/animations/zombies/basic_zombie_tree.tres" id="8_ckb7n"] [ext_resource type="Script" uid="uid://dau0tfmlfiqmo" path="res://scripts/EntityHPObserver.cs" id="8_mc1kl"] +[ext_resource type="Texture2D" uid="uid://dri70dxyks7xh" path="res://assets/sprites/zombies/hobo.png" id="9_b51fx"] [ext_resource type="AnimationLibrary" uid="uid://ceb3khu7rwgy8" path="res://resources/animations/zombies/basic.res" id="9_y6afe"] [ext_resource type="Script" uid="uid://c36bj8u7jghc7" path="res://scripts/audio/ChannelPlayer.cs" id="10_ruqsf"] [ext_resource type="Script" uid="uid://dwlwi42smgxkb" path="res://scripts/TimeScalableAnimationTree.cs" id="11_ccrjo"] @@ -196,15 +197,549 @@ region = Rect2(2, 7, 6, 19) atlas = ExtResource("6_xnora") region = Rect2(0, 32, 9, 15) -[sub_resource type="AtlasTexture" id="AtlasTexture_6y4ja"] -atlas = ExtResource("6_xnora") -region = Rect2(13, 2, 9, 10) +[sub_resource type="AtlasTexture" id="AtlasTexture_vlvtp"] +atlas = ExtResource("9_b51fx") +region = Rect2(55, 0, 9, 10) [sub_resource type="CapsuleShape2D" id="CapsuleShape2D_ccrjo"] radius = 3.00026 height = 16.007 +[sub_resource type="Animation" id="Animation_vn3j1"] +resource_name = "RESET" +tracks/0/type = "value" +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/path = NodePath("Zombie/Butt/Body/LeftUpperArm/LeftLowerArm:position") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 0, +"values": [Vector2(-2, 14)] +} +tracks/1/type = "value" +tracks/1/imported = false +tracks/1/enabled = true +tracks/1/path = NodePath("Zombie/Butt/Body/LeftUpperArm/LeftLowerArm:rotation") +tracks/1/interp = 1 +tracks/1/loop_wrap = true +tracks/1/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 0, +"values": [0.0] +} +tracks/2/type = "value" +tracks/2/imported = false +tracks/2/enabled = true +tracks/2/path = NodePath("Zombie/Butt/Body/LeftUpperArm/LeftLowerArm/LeftHand:position") +tracks/2/interp = 1 +tracks/2/loop_wrap = true +tracks/2/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 0, +"values": [Vector2(-1, 13)] +} +tracks/3/type = "value" +tracks/3/imported = false +tracks/3/enabled = true +tracks/3/path = NodePath("Zombie/Butt/Body/LeftUpperArm/LeftLowerArm/LeftHand:rotation") +tracks/3/interp = 1 +tracks/3/loop_wrap = true +tracks/3/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 0, +"values": [0.0] +} +tracks/4/type = "value" +tracks/4/imported = false +tracks/4/enabled = true +tracks/4/path = NodePath("Zombie/Butt/Body/LeftUpperArm:position") +tracks/4/interp = 1 +tracks/4/loop_wrap = true +tracks/4/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 0, +"values": [Vector2(-1, -20)] +} +tracks/5/type = "value" +tracks/5/imported = false +tracks/5/enabled = true +tracks/5/path = NodePath("Zombie/Butt/Body/LeftUpperArm:rotation") +tracks/5/interp = 1 +tracks/5/loop_wrap = true +tracks/5/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 0, +"values": [0.0] +} +tracks/6/type = "value" +tracks/6/imported = false +tracks/6/enabled = true +tracks/6/path = NodePath("Zombie/Butt/Body/Head/LeftEye:position") +tracks/6/interp = 1 +tracks/6/loop_wrap = true +tracks/6/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 0, +"values": [Vector2(-4, -9)] +} +tracks/7/type = "value" +tracks/7/imported = false +tracks/7/enabled = true +tracks/7/path = NodePath("Zombie/Butt/Body/Head/LeftEye:rotation") +tracks/7/interp = 1 +tracks/7/loop_wrap = true +tracks/7/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 0, +"values": [0.0] +} +tracks/8/type = "value" +tracks/8/imported = false +tracks/8/enabled = true +tracks/8/path = NodePath("Zombie/Butt/Body/Head/RightEye:position") +tracks/8/interp = 1 +tracks/8/loop_wrap = true +tracks/8/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 0, +"values": [Vector2(-16, -8)] +} +tracks/9/type = "value" +tracks/9/imported = false +tracks/9/enabled = true +tracks/9/path = NodePath("Zombie/Butt/Body/Head/RightEye:rotation") +tracks/9/interp = 1 +tracks/9/loop_wrap = true +tracks/9/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 0, +"values": [0.0] +} +tracks/10/type = "value" +tracks/10/imported = false +tracks/10/enabled = true +tracks/10/path = NodePath("Zombie/Butt/Body/Head/Jaw:position") +tracks/10/interp = 1 +tracks/10/loop_wrap = true +tracks/10/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 0, +"values": [Vector2(-3, 3)] +} +tracks/11/type = "value" +tracks/11/imported = false +tracks/11/enabled = true +tracks/11/path = NodePath("Zombie/Butt/Body/Head/Jaw:rotation") +tracks/11/interp = 1 +tracks/11/loop_wrap = true +tracks/11/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 0, +"values": [0.0] +} +tracks/12/type = "value" +tracks/12/imported = false +tracks/12/enabled = true +tracks/12/path = NodePath("Zombie/Butt/Body/RightUpperArm/RightLowerArm/RightHand:position") +tracks/12/interp = 1 +tracks/12/loop_wrap = true +tracks/12/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 0, +"values": [Vector2(-1, 13)] +} +tracks/13/type = "value" +tracks/13/imported = false +tracks/13/enabled = true +tracks/13/path = NodePath("Zombie/Butt/Body/RightUpperArm/RightLowerArm/RightHand:rotation") +tracks/13/interp = 1 +tracks/13/loop_wrap = true +tracks/13/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 0, +"values": [0.0] +} +tracks/14/type = "value" +tracks/14/imported = false +tracks/14/enabled = true +tracks/14/path = NodePath("Zombie/Butt/Body/RightUpperArm/RightLowerArm:position") +tracks/14/interp = 1 +tracks/14/loop_wrap = true +tracks/14/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 0, +"values": [Vector2(-2, 15)] +} +tracks/15/type = "value" +tracks/15/imported = false +tracks/15/enabled = true +tracks/15/path = NodePath("Zombie/Butt/Body/RightUpperArm/RightLowerArm:rotation") +tracks/15/interp = 1 +tracks/15/loop_wrap = true +tracks/15/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 0, +"values": [0.0] +} +tracks/16/type = "value" +tracks/16/imported = false +tracks/16/enabled = true +tracks/16/path = NodePath("Zombie/Butt/Body/RightUpperArm:position") +tracks/16/interp = 1 +tracks/16/loop_wrap = true +tracks/16/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 0, +"values": [Vector2(-14, -23)] +} +tracks/17/type = "value" +tracks/17/imported = false +tracks/17/enabled = true +tracks/17/path = NodePath("Zombie/Butt/Body/RightUpperArm:rotation") +tracks/17/interp = 1 +tracks/17/loop_wrap = true +tracks/17/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 0, +"values": [0.0] +} +tracks/18/type = "value" +tracks/18/imported = false +tracks/18/enabled = true +tracks/18/path = NodePath("Zombie/Butt/LeftUpperLeg/LeftLowerLeg/LeftFoot:position") +tracks/18/interp = 1 +tracks/18/loop_wrap = true +tracks/18/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 0, +"values": [Vector2(6, 10)] +} +tracks/19/type = "value" +tracks/19/imported = false +tracks/19/enabled = true +tracks/19/path = NodePath("Zombie/Butt/LeftUpperLeg/LeftLowerLeg/LeftFoot:rotation") +tracks/19/interp = 1 +tracks/19/loop_wrap = true +tracks/19/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 0, +"values": [0.0] +} +tracks/20/type = "value" +tracks/20/imported = false +tracks/20/enabled = true +tracks/20/path = NodePath("Zombie/Butt/LeftUpperLeg/LeftLowerLeg:position") +tracks/20/interp = 1 +tracks/20/loop_wrap = true +tracks/20/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 0, +"values": [Vector2(-1, 13)] +} +tracks/21/type = "value" +tracks/21/imported = false +tracks/21/enabled = true +tracks/21/path = NodePath("Zombie/Butt/LeftUpperLeg/LeftLowerLeg:rotation") +tracks/21/interp = 1 +tracks/21/loop_wrap = true +tracks/21/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 0, +"values": [0.0] +} +tracks/22/type = "value" +tracks/22/imported = false +tracks/22/enabled = true +tracks/22/path = NodePath("Zombie/Butt/LeftUpperLeg:position") +tracks/22/interp = 1 +tracks/22/loop_wrap = true +tracks/22/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 0, +"values": [Vector2(6, 4)] +} +tracks/23/type = "value" +tracks/23/imported = false +tracks/23/enabled = true +tracks/23/path = NodePath("Zombie/Butt/LeftUpperLeg:rotation") +tracks/23/interp = 1 +tracks/23/loop_wrap = true +tracks/23/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 0, +"values": [0.0] +} +tracks/24/type = "value" +tracks/24/imported = false +tracks/24/enabled = true +tracks/24/path = NodePath("Zombie/Butt/RightUpperLeg/RightLowerLeg/RightFoot:position") +tracks/24/interp = 1 +tracks/24/loop_wrap = true +tracks/24/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 0, +"values": [Vector2(-2, 14)] +} +tracks/25/type = "value" +tracks/25/imported = false +tracks/25/enabled = true +tracks/25/path = NodePath("Zombie/Butt/RightUpperLeg/RightLowerLeg/RightFoot:rotation") +tracks/25/interp = 1 +tracks/25/loop_wrap = true +tracks/25/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 0, +"values": [0.0] +} +tracks/26/type = "value" +tracks/26/imported = false +tracks/26/enabled = true +tracks/26/path = NodePath("Zombie/Butt/RightUpperLeg/RightLowerLeg:position") +tracks/26/interp = 1 +tracks/26/loop_wrap = true +tracks/26/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 0, +"values": [Vector2(-2, 12)] +} +tracks/27/type = "value" +tracks/27/imported = false +tracks/27/enabled = true +tracks/27/path = NodePath("Zombie/Butt/RightUpperLeg/RightLowerLeg:rotation") +tracks/27/interp = 1 +tracks/27/loop_wrap = true +tracks/27/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 0, +"values": [0.0] +} +tracks/28/type = "value" +tracks/28/imported = false +tracks/28/enabled = true +tracks/28/path = NodePath("Zombie/Butt/RightUpperLeg:position") +tracks/28/interp = 1 +tracks/28/loop_wrap = true +tracks/28/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 0, +"values": [Vector2(-6, 3)] +} +tracks/29/type = "value" +tracks/29/imported = false +tracks/29/enabled = true +tracks/29/path = NodePath("Zombie/Butt/RightUpperLeg:rotation") +tracks/29/interp = 1 +tracks/29/loop_wrap = true +tracks/29/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 0, +"values": [0.0] +} +tracks/30/type = "value" +tracks/30/imported = false +tracks/30/enabled = true +tracks/30/path = NodePath("Zombie/Butt:position") +tracks/30/interp = 1 +tracks/30/loop_wrap = true +tracks/30/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 0, +"values": [Vector2(5, -35)] +} +tracks/31/type = "value" +tracks/31/imported = false +tracks/31/enabled = true +tracks/31/path = NodePath("Zombie/Butt:rotation") +tracks/31/interp = 1 +tracks/31/loop_wrap = true +tracks/31/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 0, +"values": [0.0] +} +tracks/32/type = "value" +tracks/32/imported = false +tracks/32/enabled = true +tracks/32/path = NodePath("Zombie/Butt/Body:position") +tracks/32/interp = 1 +tracks/32/loop_wrap = true +tracks/32/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 0, +"values": [Vector2(1, -2)] +} +tracks/33/type = "value" +tracks/33/imported = false +tracks/33/enabled = true +tracks/33/path = NodePath("Zombie/Butt/Body:rotation") +tracks/33/interp = 1 +tracks/33/loop_wrap = true +tracks/33/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 0, +"values": [0.0] +} +tracks/34/type = "value" +tracks/34/imported = false +tracks/34/enabled = true +tracks/34/path = NodePath("Zombie:position") +tracks/34/interp = 1 +tracks/34/loop_wrap = true +tracks/34/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 0, +"values": [Vector2(0, 0)] +} +tracks/35/type = "value" +tracks/35/imported = false +tracks/35/enabled = true +tracks/35/path = NodePath("Zombie:rotation") +tracks/35/interp = 1 +tracks/35/loop_wrap = true +tracks/35/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 0, +"values": [0.0] +} +tracks/36/type = "value" +tracks/36/imported = false +tracks/36/enabled = true +tracks/36/path = NodePath("Zombie/Butt/Body/Head:position") +tracks/36/interp = 1 +tracks/36/loop_wrap = true +tracks/36/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 0, +"values": [Vector2(-10, -25)] +} +tracks/37/type = "value" +tracks/37/imported = false +tracks/37/enabled = true +tracks/37/path = NodePath("Zombie/Butt/Body/Head:rotation") +tracks/37/interp = 1 +tracks/37/loop_wrap = true +tracks/37/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 0, +"values": [0.0] +} +tracks/38/type = "value" +tracks/38/imported = false +tracks/38/enabled = true +tracks/38/path = NodePath("Zombie/Butt/Body/Head:visible") +tracks/38/interp = 1 +tracks/38/loop_wrap = true +tracks/38/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 1, +"values": [true] +} +tracks/39/type = "value" +tracks/39/imported = false +tracks/39/enabled = true +tracks/39/path = NodePath("Zombie/Butt/Body/Head/TrashcanLid:position") +tracks/39/interp = 1 +tracks/39/loop_wrap = true +tracks/39/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 0, +"values": [Vector2(-0.0022974, -17.0131)] +} +tracks/40/type = "value" +tracks/40/imported = false +tracks/40/enabled = true +tracks/40/path = NodePath("Zombie/Butt/Body/Head/TrashcanLid:rotation") +tracks/40/interp = 1 +tracks/40/loop_wrap = true +tracks/40/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 0, +"values": [0.0] +} +tracks/41/type = "value" +tracks/41/imported = false +tracks/41/enabled = true +tracks/41/path = NodePath("Zombie/Butt/Body/Head/TrashcanLid:visible") +tracks/41/interp = 1 +tracks/41/loop_wrap = true +tracks/41/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 1, +"values": [false] +} +tracks/42/type = "value" +tracks/42/imported = false +tracks/42/enabled = true +tracks/42/path = NodePath("Zombie/Butt/Body/LeftUpperArm/HandProjectile/Left_Lower_Arm/Left_Hand:texture") +tracks/42/interp = 1 +tracks/42/loop_wrap = true +tracks/42/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 1, +"values": [SubResource("AtlasTexture_vlvtp")] +} +tracks/43/type = "value" +tracks/43/imported = false +tracks/43/enabled = true +tracks/43/path = NodePath("Zombie/Butt/Body/LeftUpperArm/HandProjectile/Left_Lower_Arm/Left_Hand:offset") +tracks/43/interp = 1 +tracks/43/loop_wrap = true +tracks/43/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 0, +"values": [Vector2(-4, -1)] +} + [sub_resource type="AnimationLibrary" id="AnimationLibrary_x5uj2"] +_data = { +&"RESET": SubResource("Animation_vn3j1") +} [sub_resource type="RectangleShape2D" id="RectangleShape2D_hxyad"] size = Vector2(2, 48) @@ -261,8 +796,7 @@ script = ExtResource("3_rao3m") modification_stack = SubResource("SkeletonModificationStack2D_wn68q") [node name="Butt" type="Bone2D" parent="CanvasGroup/basic_zombie_walk/Zombie"] -position = Vector2(-22, -9) -rotation = -1.03478 +position = Vector2(5, -35) scale = Vector2(0.999903, 0.999903) rest = Transform2D(1, 0, 0, 1, 5, -35) editor_settings/show_bone_gizmo = false @@ -275,7 +809,6 @@ metadata/_edit_lock_ = true [node name="RightUpperLeg" type="Bone2D" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt"] position = Vector2(-6, 3) -rotation = -0.596673 scale = Vector2(0.999834, 0.999834) rest = Transform2D(1, 0, 0, 1, -6, 3) editor_settings/show_bone_gizmo = false @@ -288,14 +821,12 @@ metadata/_edit_lock_ = true [node name="RightLowerLeg" type="Bone2D" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/RightUpperLeg"] position = Vector2(-2, 12) -rotation = 0.0335003 scale = Vector2(0.999841, 0.999841) rest = Transform2D(1, 0, 0, 1, -2, 12) editor_settings/show_bone_gizmo = false [node name="RightFoot" type="Bone2D" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/RightUpperLeg/RightLowerLeg"] position = Vector2(-2, 14) -rotation = 0.279912 scale = Vector2(0.999831, 0.999831) rest = Transform2D(1, 0, 0, 1, -2, 14) auto_calculate_length_and_angle = false @@ -318,8 +849,7 @@ metadata/_edit_lock_ = true [node name="LeftUpperLeg" type="Bone2D" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt"] position = Vector2(6, 4) -rotation = -0.0713271 -scale = Vector2(0.999834, 0.999834) +scale = Vector2(0.999835, 0.999835) rest = Transform2D(1, 0, 0, 1, 6, 4) editor_settings/show_bone_gizmo = false @@ -331,8 +861,7 @@ metadata/_edit_lock_ = true [node name="LeftLowerLeg" type="Bone2D" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/LeftUpperLeg"] position = Vector2(-1, 13) -rotation = -0.289205 -scale = Vector2(0.999834, 0.999834) +scale = Vector2(0.999835, 0.999835) rest = Transform2D(1, 0, 0, 1, -1, 13) editor_settings/show_bone_gizmo = false @@ -344,7 +873,6 @@ metadata/_edit_lock_ = true [node name="LeftFoot" type="Bone2D" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/LeftUpperLeg/LeftLowerLeg"] position = Vector2(6, 10) -rotation = -0.899995 scale = Vector2(0.999833, 0.999833) rest = Transform2D(1, 0, 0, 1, 6, 10) auto_calculate_length_and_angle = false @@ -360,16 +888,14 @@ metadata/_edit_lock_ = true [node name="Body" type="Bone2D" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt"] position = Vector2(1, -2) -rotation = -0.220732 scale = Vector2(0.999833, 0.999833) rest = Transform2D(1, 0, 0, 1, 1, -2) editor_settings/show_bone_gizmo = false [node name="RightUpperArm" type="Bone2D" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body"] z_index = -1 -position = Vector2(-11.3243, -22.8469) -rotation = -0.10805 -scale = Vector2(0.999828, 0.999828) +position = Vector2(-14, -23) +scale = Vector2(0.999827, 0.999827) rest = Transform2D(1, 0, 0, 1, -14, -23) editor_settings/show_bone_gizmo = false @@ -381,15 +907,13 @@ metadata/_edit_lock_ = true [node name="RightLowerArm" type="Bone2D" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/RightUpperArm"] position = Vector2(-2, 15) -rotation = -0.230923 -scale = Vector2(0.999829, 0.999829) +scale = Vector2(0.999828, 0.999828) rest = Transform2D(1, 0, 0, 1, -2, 15) editor_settings/show_bone_gizmo = false [node name="RightHand" type="Bone2D" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/RightUpperArm/RightLowerArm"] position = Vector2(-1, 13) -rotation = 0.0408225 -scale = Vector2(0.99983, 0.99983) +scale = Vector2(0.999829, 0.999829) rest = Transform2D(1, 0, 0, 1, -1, 13) auto_calculate_length_and_angle = false length = 8.0 @@ -417,9 +941,8 @@ metadata/_edit_lock_ = true [node name="Tie" type="Bone2D" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body"] position = Vector2(-9, -21) -rotation = 0.689549 -scale = Vector2(1, 0.5) -skew = -0.00018692 +scale = Vector2(0.999825, 0.999825) +skew = -0.000187755 rest = Transform2D(1, 0, 0, 1, -9, -21) auto_calculate_length_and_angle = false length = 24.0 @@ -434,7 +957,7 @@ metadata/_edit_lock_ = true [node name="Head" type="Bone2D" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body"] position = Vector2(-10, -25) -scale = Vector2(0.999829, 0.999829) +scale = Vector2(0.999828, 0.999828) rest = Transform2D(1, 0, 0, 1, -10, -25) editor_settings/show_bone_gizmo = false @@ -522,7 +1045,6 @@ remote_path = NodePath("../../HeadParticle/Head/Left_Eye") [node name="LeftUpperArm" type="Bone2D" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body"] position = Vector2(-1, -20) -rotation = 1.91294 scale = Vector2(0.999826, 0.999826) rest = Transform2D(1, 0, 0, 1, -1, -20) editor_settings/show_bone_gizmo = false @@ -545,8 +1067,7 @@ minTorque = -45.0 maxTorque = 45.0 [node name="Left_Lower_Arm" type="Sprite2D" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/LeftUpperArm/HandProjectile"] -rotation = 0.396612 -scale = Vector2(0.999999, 0.999999) +scale = Vector2(1, 1) texture = SubResource("AtlasTexture_auqeq") centered = false offset = Vector2(-5, 0) @@ -555,9 +1076,8 @@ metadata/_edit_lock_ = true [node name="Left_Hand" type="Sprite2D" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/LeftUpperArm/HandProjectile/Left_Lower_Arm"] show_behind_parent = true position = Vector2(-0.99983, 12.9978) -rotation = 0.28535 scale = Vector2(0.999658, 0.999658) -texture = SubResource("AtlasTexture_6y4ja") +texture = SubResource("AtlasTexture_vlvtp") centered = false offset = Vector2(-4, -1) metadata/_edit_lock_ = true @@ -572,14 +1092,12 @@ _observedEntity = NodePath("../../../../../../../..") [node name="LeftLowerArm" type="Bone2D" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/LeftUpperArm"] position = Vector2(-2, 14) -rotation = 0.396612 -scale = Vector2(0.999829, 0.999829) +scale = Vector2(0.99983, 0.99983) rest = Transform2D(1, 0, 0, 1, -2, 14) editor_settings/show_bone_gizmo = false [node name="LeftHand" type="Bone2D" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/LeftUpperArm/LeftLowerArm"] position = Vector2(-1, 13) -rotation = 0.28535 scale = Vector2(0.999828, 0.999828) rest = Transform2D(1, 0, 0, 1, -1, 13) auto_calculate_length_and_angle = false @@ -630,6 +1148,7 @@ entity = NodePath("..") [node name="Mover" type="Node" parent="."] script = ExtResource("4_u5syx") _speed = SubResource("Resource_ckb7n") +_speedControlMult = 0.100826 [node name="ChompPlayer" type="Node" parent="."] script = ExtResource("10_ruqsf") diff --git a/scenes/prototype_survival.tscn b/scenes/prototype_survival.tscn index c0f16aa..aae7f88 100644 --- a/scenes/prototype_survival.tscn +++ b/scenes/prototype_survival.tscn @@ -1,4 +1,4 @@ -[gd_scene load_steps=33 format=3 uid="uid://c1335fke4thpm"] +[gd_scene load_steps=34 format=3 uid="uid://c1335fke4thpm"] [ext_resource type="Script" uid="uid://bndu1h5kgcde8" path="res://scripts/level/RuntimeLevelData.cs" id="1_tnxdx"] [ext_resource type="Texture2D" uid="uid://b0tb2hjum40aw" path="res://assets/sprites/background_summer.png" id="1_vafkg"] @@ -23,6 +23,7 @@ [ext_resource type="Script" uid="uid://c0ov2bq5er0gh" path="res://scripts/plants/LoseZone.cs" id="16_r81g1"] [ext_resource type="Script" uid="uid://812ldoyxd5n5" path="res://scripts/level/LoseCheckbox.cs" id="17_pb02i"] [ext_resource type="AudioStream" uid="uid://bxshjvvtv3fmp" path="res://assets/audio/music/playlist.tres" id="23_tsy2s"] +[ext_resource type="PackedScene" uid="uid://bgqmwsb6ynm81" path="res://scenes/entities/Zombies/hobo.tscn" id="24_63iib"] [sub_resource type="Animation" id="Animation_r81g1"] length = 0.001 @@ -412,6 +413,9 @@ stream = ExtResource("23_tsy2s") autoplay = true bus = &"MusicBus" +[node name="Hobo" parent="." instance=ExtResource("24_63iib")] +position = Vector2(730, 254) + [connection signal="pressed" from="GameOverScreen/VBoxContainer/RestartButton" to="GameOverScreen/VBoxContainer/TapPlayer" method="Play"] [connection signal="pressed" from="GameOverScreen/VBoxContainer/ExitButton" to="GameOverScreen/VBoxContainer/TapPlayer" method="Play"] [connection signal="timeout" from="SunSpawner/Timer" to="SunSpawner" method="Spawn"] diff --git a/scripts/zombies/behaviours/HoboBehaviour.cs b/scripts/zombies/behaviours/HoboBehaviour.cs index dd0dd8d..ca77019 100644 --- a/scripts/zombies/behaviours/HoboBehaviour.cs +++ b/scripts/zombies/behaviours/HoboBehaviour.cs @@ -11,7 +11,7 @@ public partial class HoboBehaviour : Node public void Trashed() { canDestroyed = true; - ((AnimationNodeStateMachinePlayback)_animationTree.Get("parameters/Tree/playback")).Travel("hobo_zombie_can_destroy"); + ((AnimationNodeStateMachinePlayback)_animationTree.Get("parameters/Tree/playback")).Travel("Destroy"); _eatBox._damage.SetMult(3.0f); } } From 28641056b68c4b53a51b140e84ddd5fcbe2044c7 Mon Sep 17 00:00:00 2001 From: Rendo Date: Sat, 12 Jul 2025 02:05:30 +0500 Subject: [PATCH 13/48] hoba --- scenes/entities/Zombies/cone_zombie.tscn | 2 +- scenes/entities/Zombies/hobo.tscn | 55 ++++++++++++--------- scenes/entities/Zombies/zombie.tscn | 2 +- scripts/zombies/behaviours/HoboBehaviour.cs | 2 +- 4 files changed, 35 insertions(+), 26 deletions(-) diff --git a/scenes/entities/Zombies/cone_zombie.tscn b/scenes/entities/Zombies/cone_zombie.tscn index 13881ac..728c91a 100644 --- a/scenes/entities/Zombies/cone_zombie.tscn +++ b/scenes/entities/Zombies/cone_zombie.tscn @@ -68,7 +68,7 @@ scale = Vector2(0.999827, 0.999827) scale = Vector2(0.999826, 0.999826) [node name="RightHand" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/RightUpperArm/RightLowerArm" index="0"] -scale = Vector2(0.999828, 0.999828) +scale = Vector2(0.999829, 0.999829) [node name="Tie" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body" index="2"] rotation = -0.0219556 diff --git a/scenes/entities/Zombies/hobo.tscn b/scenes/entities/Zombies/hobo.tscn index de969f2..2db0a63 100644 --- a/scenes/entities/Zombies/hobo.tscn +++ b/scenes/entities/Zombies/hobo.tscn @@ -610,7 +610,7 @@ tracks/41/keys = { "times": PackedFloat32Array(0), "transitions": PackedFloat32Array(1), "update": 1, -"values": [false] +"values": [true] } tracks/42/type = "value" tracks/42/imported = false @@ -771,16 +771,16 @@ scale = Vector2(0.999902, 0.999902) texture = SubResource("AtlasTexture_txjqc") [node name="RightUpperLeg" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt" index="1"] -scale = Vector2(0.999826, 0.999826) +scale = Vector2(0.999829, 0.999829) [node name="Right_Upper_Leg" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/RightUpperLeg" index="0"] texture = SubResource("AtlasTexture_b583s") [node name="RightLowerLeg" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/RightUpperLeg" index="1"] -scale = Vector2(0.99983, 0.99983) +scale = Vector2(0.999832, 0.999832) [node name="RightFoot" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/RightUpperLeg/RightLowerLeg" index="0"] -scale = Vector2(0.99983, 0.99983) +scale = Vector2(0.999826, 0.999826) [node name="Right_Foot" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/RightUpperLeg/RightLowerLeg/RightFoot" index="0"] texture = SubResource("AtlasTexture_uoit3") @@ -789,25 +789,25 @@ texture = SubResource("AtlasTexture_uoit3") texture = SubResource("AtlasTexture_vn3j1") [node name="LeftUpperLeg" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt" index="2"] -scale = Vector2(0.999829, 0.999829) +scale = Vector2(0.99983, 0.99983) [node name="Left_Upper_Leg" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/LeftUpperLeg" index="0"] texture = SubResource("AtlasTexture_yb81c") [node name="LeftLowerLeg" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/LeftUpperLeg" index="1"] -scale = Vector2(0.999832, 0.999832) +scale = Vector2(0.999828, 0.999828) [node name="Left_Lower_Leg" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/LeftUpperLeg/LeftLowerLeg" index="0"] texture = SubResource("AtlasTexture_nlwsb") [node name="LeftFoot" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/LeftUpperLeg/LeftLowerLeg" index="1"] -scale = Vector2(0.999822, 0.999822) +scale = Vector2(0.999824, 0.999824) [node name="Left_Foot" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/LeftUpperLeg/LeftLowerLeg/LeftFoot" index="0"] texture = SubResource("AtlasTexture_8y6c0") [node name="Body" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt" index="3"] -scale = Vector2(0.99983, 0.99983) +scale = Vector2(0.999827, 0.999827) [node name="RightUpperArm" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body" index="0"] scale = Vector2(0.999829, 0.999829) @@ -816,7 +816,7 @@ scale = Vector2(0.999829, 0.999829) texture = SubResource("AtlasTexture_nc6p3") [node name="RightLowerArm" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/RightUpperArm" index="1"] -scale = Vector2(0.999813, 0.999813) +scale = Vector2(0.999816, 0.999816) [node name="RightHand" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/RightUpperArm/RightLowerArm" index="0"] scale = Vector2(0.999828, 0.999828) @@ -831,7 +831,8 @@ texture = SubResource("AtlasTexture_op0h6") texture = SubResource("AtlasTexture_0s5wm") [node name="Tie" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body" index="2"] -rotation = 0.0256379 +rotation = 0.0289312 +scale = Vector2(1e-05, 1e-05) [node name="Tie" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/Tie" index="0"] visible = false @@ -872,21 +873,31 @@ scale = Vector2(0.999826, 0.999826) texture = SubResource("AtlasTexture_pjhfy") [node name="Right_Eye" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/Head/HeadParticle/Head" index="0"] -position = Vector2(-16, -8) +scale = Vector2(1, 1) [node name="Left_Eye" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/Head/HeadParticle/Head" index="1"] position = Vector2(-4, -9) +scale = Vector2(1, 1) [node name="Jaw" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/Head/HeadParticle/Head" index="2"] -scale = Vector2(0.999825, 0.999825) +position = Vector2(-3, 3) +rotation = -0.0470548 +scale = Vector2(0.99983, 0.99983) texture = SubResource("AtlasTexture_7cvmi") offset = Vector2(-14, -2) +[node name="Trashcan_lid" type="Sprite2D" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/Head/HeadParticle/Head" index="3"] +z_index = -1 +position = Vector2(-0.00229788, -17.0131) +scale = Vector2(0.999828, 0.999828) +texture = SubResource("AtlasTexture_n380g") +offset = Vector2(-0.5, -0.5) +metadata/_edit_lock_ = true + [node name="Jaw" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/Head" index="1"] -scale = Vector2(0.999825, 0.999825) +scale = Vector2(0.99983, 0.99983) [node name="TrashcanLid" type="Bone2D" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/Head" index="4"] -visible = false position = Vector2(-0.0022974, -17.0131) scale = Vector2(0.999828, 0.999828) rest = Transform2D(1, 0, 0, 1, -0.0022974, -17.0131) @@ -895,21 +906,18 @@ length = 12.0 bone_angle = 180.0 editor_settings/show_bone_gizmo = false -[node name="Trashcan_lid" type="Sprite2D" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/Head/TrashcanLid" index="0"] -z_index = -1 -scale = Vector2(1.00041, 1.00041) -texture = SubResource("AtlasTexture_n380g") -offset = Vector2(-0.5, -0.5) -metadata/_edit_lock_ = true +[node name="RemoteTransform2D" type="RemoteTransform2D" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/Head/TrashcanLid" index="0"] +remote_path = NodePath("../../HeadParticle/Head/Trashcan_lid") [node name="LeftUpperArm" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body" index="5"] -scale = Vector2(0.99983, 0.99983) +scale = Vector2(0.999828, 0.999828) [node name="Left_Upper_Arm" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/LeftUpperArm" index="0"] texture = SubResource("AtlasTexture_tebih") [node name="Left_Lower_Arm" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/LeftUpperArm/HandProjectile" index="0"] -scale = Vector2(0.999998, 0.999998) +rotation = 0.0260983 +scale = Vector2(0.999999, 0.999999) texture = SubResource("AtlasTexture_auxav") [node name="Left_Hand" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/LeftUpperArm/HandProjectile/Left_Lower_Arm" index="0"] @@ -918,7 +926,7 @@ scale = Vector2(0.999654, 0.999654) texture = SubResource("AtlasTexture_dntsa") [node name="LeftLowerArm" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/LeftUpperArm" index="2"] -scale = Vector2(0.999828, 0.999828) +scale = Vector2(0.999829, 0.999829) [node name="LeftHand" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/LeftUpperArm/LeftLowerArm" index="0"] scale = Vector2(0.999824, 0.999824) @@ -961,6 +969,7 @@ audioStream = ExtResource("12_w1b1s") channel = "anger" metadata/_custom_type_script = "uid://c36bj8u7jghc7" +[connection signal="ThresholdReached" from="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/Head/HeadParticle/Observer" to="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/Head/TrashcanLid/RemoteTransform2D" method="queue_free"] [connection signal="ArmorLost" from="CanArmor" to="HitPlayer" method="Next"] [connection signal="ArmorLost" from="CanArmor" to="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/Can" method="FallOff"] [connection signal="ArmorLost" from="CanArmor" to="Behaviour" method="Trashed"] diff --git a/scenes/entities/Zombies/zombie.tscn b/scenes/entities/Zombies/zombie.tscn index ce60b89..4ad3f55 100644 --- a/scenes/entities/Zombies/zombie.tscn +++ b/scenes/entities/Zombies/zombie.tscn @@ -767,7 +767,7 @@ node_connections = [&"TimeScale", 0, &"Tree", &"output", 0, &"TimeScale"] [sub_resource type="Resource" id="Resource_ckb7n"] resource_local_to_scene = true script = ExtResource("7_b3p4o") -flat_value = 0.4 +flat_value = 0.2 percentage_value = 0.0 mult_value = 1.0 diff --git a/scripts/zombies/behaviours/HoboBehaviour.cs b/scripts/zombies/behaviours/HoboBehaviour.cs index ca77019..44ca487 100644 --- a/scripts/zombies/behaviours/HoboBehaviour.cs +++ b/scripts/zombies/behaviours/HoboBehaviour.cs @@ -12,6 +12,6 @@ public partial class HoboBehaviour : Node { canDestroyed = true; ((AnimationNodeStateMachinePlayback)_animationTree.Get("parameters/Tree/playback")).Travel("Destroy"); - _eatBox._damage.SetMult(3.0f); + GetParent().LocalTimescale *= 3; } } From 53d650894e8303e915bc6c145d4481c18ac4ff07 Mon Sep 17 00:00:00 2001 From: Rendo Date: Sat, 12 Jul 2025 02:14:19 +0500 Subject: [PATCH 14/48] hobo now jumps using impulse --- resources/animations/zombies/hobo.res | Bin 4735 -> 4724 bytes scenes/entities/Zombies/cone_zombie.tscn | 2 +- scenes/entities/Zombies/hobo.tscn | 41 ++++++++++++----------- scenes/entities/Zombies/zombie.tscn | 2 +- 4 files changed, 23 insertions(+), 22 deletions(-) diff --git a/resources/animations/zombies/hobo.res b/resources/animations/zombies/hobo.res index 2aea0265f1b7afd97fd0d0797a1f14339b2fef8d..7c046ef2cf3d7713ca1b4aa97437a6a756590e2b 100644 GIT binary patch delta 556 zcmV+{0@MBfB=jUHQd2`i0ssI201yBGX=MNavH}1Ao&o>>WdZ;ITmt|Ai2?us`vL#} zudyk-0z#z}0G8WcJRoz@VgL*P41m%gfM6g40s=Add~9(C*@UojRhx7Y0%T@pW=7qu z)#{bq-Q7!@tEx)fEEhD_z5X?`vnT_f4S#6_Ee!xd4>>q6k+TNCz@P;M4AIhvgn_|= zM-28Lv1sFrrFsU)PT;0GwFWzH%N+EFl5Va4VBfy_U3A#LvdI)3t`OHtv?s7S^JHP^ z@ee$j49Du-GG=n^%zKIU)-Sb@GS-pAe$>#4t=}^>I8IL~#kjDTG^Z656RA~YXSmK5tK@OMy?Uuf^Yz4n)Wh6?CU(4Rlx&L8?o@XybjpPs)G zR#6UMs1a>6MUs}ZvIg)15uu^&5`SQ%Bo89UMxqKTkgzDjP}q+H`6ON*Knm9}8X8;u ze`+GIY{kraXJg&}lAaIjEJcAqSFjIqQZGpO2s6kHY1ocAAk72(fG{K^eK8teFu&W! uq8}bXa}dUi5Mg>{?dFDO8Upf*1%DuZ&wZfxgdfsm2?6)(r3O?|Q$s_%XZN}Q delta 567 zcmV-70?7UJB>yBSQd2`i0ssI201yBGZDjxevH}1Ap8@~?WdZ;ITmt|Ai2?us`vL#} zxv?p{0z<770G1nHJuq?7V!*(_z@WGq3L;TZP@pT*pBA^0O$cK%?hwThG7 z#?#{;xU@NzRd!EX$+b8cjkLFhtPPa1mLv9~j+TV|AgTfC*yPMOUUeOg%S(rGVX=RS z-c?Xcuv{@W88S60p+v;$gLrUg0Qs35!-7imr4$lSuN_j$)oKxWt+1qcAdD!2q9}qM zmC8dnFgTe?Q&M;<$?b&Ap5{kwJ^+{_ZT4D|tfj#JNo|Isz5n;#e|kD9=$?uW{Q-ae z(Nlt-hW0!K9iFv%a$=|vZA3(pmb8De2JiwAso^#fV5A&SA_zxO1r=AM$gp1r`6ON* zK#uDe4Nk9rJ2n}#q{Yyv4o9vZCW!%g+XEmYE9PcFn#r5Ji<@xhSjr7KupMxKC@Yj^ZBT^M z0bv+UeHyu7ira@GA0AOt5r&Eo*uR<*<;Gze0`iOZf0+KmeYm%RA8PW4fcdp`0aQ{` FLqo9c`}qI> diff --git a/scenes/entities/Zombies/cone_zombie.tscn b/scenes/entities/Zombies/cone_zombie.tscn index 728c91a..a0e37a3 100644 --- a/scenes/entities/Zombies/cone_zombie.tscn +++ b/scenes/entities/Zombies/cone_zombie.tscn @@ -59,7 +59,7 @@ scale = Vector2(0.999831, 0.999831) scale = Vector2(0.999829, 0.999829) [node name="Body" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt" index="3"] -scale = Vector2(0.999829, 0.999829) +scale = Vector2(0.999828, 0.999828) [node name="RightUpperArm" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body" index="0"] scale = Vector2(0.999827, 0.999827) diff --git a/scenes/entities/Zombies/hobo.tscn b/scenes/entities/Zombies/hobo.tscn index 2db0a63..dbf0ef3 100644 --- a/scenes/entities/Zombies/hobo.tscn +++ b/scenes/entities/Zombies/hobo.tscn @@ -752,7 +752,7 @@ node_connections = [&"TimeScale", 0, &"Tree", &"output", 0, &"TimeScale"] [sub_resource type="Resource" id="Resource_4248q"] resource_local_to_scene = true script = ExtResource("4_c1y3b") -flat_value = 0.2 +flat_value = 0.4 percentage_value = 0.0 mult_value = 1.0 @@ -771,7 +771,7 @@ scale = Vector2(0.999902, 0.999902) texture = SubResource("AtlasTexture_txjqc") [node name="RightUpperLeg" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt" index="1"] -scale = Vector2(0.999829, 0.999829) +scale = Vector2(0.999822, 0.999822) [node name="Right_Upper_Leg" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/RightUpperLeg" index="0"] texture = SubResource("AtlasTexture_b583s") @@ -780,7 +780,7 @@ texture = SubResource("AtlasTexture_b583s") scale = Vector2(0.999832, 0.999832) [node name="RightFoot" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/RightUpperLeg/RightLowerLeg" index="0"] -scale = Vector2(0.999826, 0.999826) +scale = Vector2(0.999827, 0.999827) [node name="Right_Foot" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/RightUpperLeg/RightLowerLeg/RightFoot" index="0"] texture = SubResource("AtlasTexture_uoit3") @@ -789,34 +789,34 @@ texture = SubResource("AtlasTexture_uoit3") texture = SubResource("AtlasTexture_vn3j1") [node name="LeftUpperLeg" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt" index="2"] -scale = Vector2(0.99983, 0.99983) +scale = Vector2(0.999827, 0.999827) [node name="Left_Upper_Leg" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/LeftUpperLeg" index="0"] texture = SubResource("AtlasTexture_yb81c") [node name="LeftLowerLeg" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/LeftUpperLeg" index="1"] -scale = Vector2(0.999828, 0.999828) +scale = Vector2(0.999835, 0.999835) [node name="Left_Lower_Leg" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/LeftUpperLeg/LeftLowerLeg" index="0"] texture = SubResource("AtlasTexture_nlwsb") [node name="LeftFoot" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/LeftUpperLeg/LeftLowerLeg" index="1"] -scale = Vector2(0.999824, 0.999824) +scale = Vector2(0.999823, 0.999823) [node name="Left_Foot" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/LeftUpperLeg/LeftLowerLeg/LeftFoot" index="0"] texture = SubResource("AtlasTexture_8y6c0") [node name="Body" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt" index="3"] -scale = Vector2(0.999827, 0.999827) +scale = Vector2(0.999824, 0.999824) [node name="RightUpperArm" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body" index="0"] -scale = Vector2(0.999829, 0.999829) +scale = Vector2(0.999823, 0.999823) [node name="Right_Upper_Arm" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/RightUpperArm" index="0"] texture = SubResource("AtlasTexture_nc6p3") [node name="RightLowerArm" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/RightUpperArm" index="1"] -scale = Vector2(0.999816, 0.999816) +scale = Vector2(0.999817, 0.999817) [node name="RightHand" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/RightUpperArm/RightLowerArm" index="0"] scale = Vector2(0.999828, 0.999828) @@ -831,7 +831,7 @@ texture = SubResource("AtlasTexture_op0h6") texture = SubResource("AtlasTexture_0s5wm") [node name="Tie" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body" index="2"] -rotation = 0.0289312 +rotation = 0.0126247 scale = Vector2(1e-05, 1e-05) [node name="Tie" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/Tie" index="0"] @@ -867,12 +867,13 @@ position = Vector2(-4.9999, -5.0002) shape = SubResource("CapsuleShape2D_4248q") [node name="Head" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body" index="4"] -scale = Vector2(0.999826, 0.999826) +scale = Vector2(0.999827, 0.999827) [node name="Head" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/Head/HeadParticle" index="0"] texture = SubResource("AtlasTexture_pjhfy") [node name="Right_Eye" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/Head/HeadParticle/Head" index="0"] +position = Vector2(-16, -8) scale = Vector2(1, 1) [node name="Left_Eye" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/Head/HeadParticle/Head" index="1"] @@ -881,8 +882,8 @@ scale = Vector2(1, 1) [node name="Jaw" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/Head/HeadParticle/Head" index="2"] position = Vector2(-3, 3) -rotation = -0.0470548 -scale = Vector2(0.99983, 0.99983) +rotation = -0.0205333 +scale = Vector2(0.999825, 0.999825) texture = SubResource("AtlasTexture_7cvmi") offset = Vector2(-14, -2) @@ -895,7 +896,7 @@ offset = Vector2(-0.5, -0.5) metadata/_edit_lock_ = true [node name="Jaw" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/Head" index="1"] -scale = Vector2(0.99983, 0.99983) +scale = Vector2(0.999825, 0.999825) [node name="TrashcanLid" type="Bone2D" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/Head" index="4"] position = Vector2(-0.0022974, -17.0131) @@ -910,26 +911,26 @@ editor_settings/show_bone_gizmo = false remote_path = NodePath("../../HeadParticle/Head/Trashcan_lid") [node name="LeftUpperArm" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body" index="5"] -scale = Vector2(0.999828, 0.999828) +scale = Vector2(0.999826, 0.999826) [node name="Left_Upper_Arm" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/LeftUpperArm" index="0"] texture = SubResource("AtlasTexture_tebih") [node name="Left_Lower_Arm" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/LeftUpperArm/HandProjectile" index="0"] -rotation = 0.0260983 -scale = Vector2(0.999999, 0.999999) +rotation = 0.0113885 +scale = Vector2(0.999995, 0.999995) texture = SubResource("AtlasTexture_auxav") [node name="Left_Hand" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/LeftUpperArm/HandProjectile/Left_Lower_Arm" index="0"] position = Vector2(-0.99983, 12.9978) -scale = Vector2(0.999654, 0.999654) +scale = Vector2(0.999652, 0.999652) texture = SubResource("AtlasTexture_dntsa") [node name="LeftLowerArm" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/LeftUpperArm" index="2"] -scale = Vector2(0.999829, 0.999829) +scale = Vector2(0.999825, 0.999825) [node name="LeftHand" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/LeftUpperArm/LeftLowerArm" index="0"] -scale = Vector2(0.999824, 0.999824) +scale = Vector2(0.999822, 0.999822) [node name="AnimationPlayer" parent="CanvasGroup/basic_zombie_walk" index="1"] libraries = { diff --git a/scenes/entities/Zombies/zombie.tscn b/scenes/entities/Zombies/zombie.tscn index 4ad3f55..ce60b89 100644 --- a/scenes/entities/Zombies/zombie.tscn +++ b/scenes/entities/Zombies/zombie.tscn @@ -767,7 +767,7 @@ node_connections = [&"TimeScale", 0, &"Tree", &"output", 0, &"TimeScale"] [sub_resource type="Resource" id="Resource_ckb7n"] resource_local_to_scene = true script = ExtResource("7_b3p4o") -flat_value = 0.2 +flat_value = 0.4 percentage_value = 0.0 mult_value = 1.0 From 6794f1331d5680fe8aa8fd5a81bd623f0f67c1b3 Mon Sep 17 00:00:00 2001 From: Rendo Date: Sat, 12 Jul 2025 02:17:37 +0500 Subject: [PATCH 15/48] odd zombie in scene --- scenes/prototype_survival.tscn | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/scenes/prototype_survival.tscn b/scenes/prototype_survival.tscn index aae7f88..c0f16aa 100644 --- a/scenes/prototype_survival.tscn +++ b/scenes/prototype_survival.tscn @@ -1,4 +1,4 @@ -[gd_scene load_steps=34 format=3 uid="uid://c1335fke4thpm"] +[gd_scene load_steps=33 format=3 uid="uid://c1335fke4thpm"] [ext_resource type="Script" uid="uid://bndu1h5kgcde8" path="res://scripts/level/RuntimeLevelData.cs" id="1_tnxdx"] [ext_resource type="Texture2D" uid="uid://b0tb2hjum40aw" path="res://assets/sprites/background_summer.png" id="1_vafkg"] @@ -23,7 +23,6 @@ [ext_resource type="Script" uid="uid://c0ov2bq5er0gh" path="res://scripts/plants/LoseZone.cs" id="16_r81g1"] [ext_resource type="Script" uid="uid://812ldoyxd5n5" path="res://scripts/level/LoseCheckbox.cs" id="17_pb02i"] [ext_resource type="AudioStream" uid="uid://bxshjvvtv3fmp" path="res://assets/audio/music/playlist.tres" id="23_tsy2s"] -[ext_resource type="PackedScene" uid="uid://bgqmwsb6ynm81" path="res://scenes/entities/Zombies/hobo.tscn" id="24_63iib"] [sub_resource type="Animation" id="Animation_r81g1"] length = 0.001 @@ -413,9 +412,6 @@ stream = ExtResource("23_tsy2s") autoplay = true bus = &"MusicBus" -[node name="Hobo" parent="." instance=ExtResource("24_63iib")] -position = Vector2(730, 254) - [connection signal="pressed" from="GameOverScreen/VBoxContainer/RestartButton" to="GameOverScreen/VBoxContainer/TapPlayer" method="Play"] [connection signal="pressed" from="GameOverScreen/VBoxContainer/ExitButton" to="GameOverScreen/VBoxContainer/TapPlayer" method="Play"] [connection signal="timeout" from="SunSpawner/Timer" to="SunSpawner" method="Spawn"] From e40df5ab3a7ac185273389d1dafd9df13bd349f0 Mon Sep 17 00:00:00 2001 From: Rendo Date: Sat, 12 Jul 2025 02:38:02 +0500 Subject: [PATCH 16/48] Fixed errors caused by cache --- assets/sprites/cone1.tres | 4 +- project.godot | 2 +- resources/zombies/basic.tres | 2 +- resources/zombies/buckethead.tres | 2 +- resources/zombies/conehead.tres | 2 +- resources/zombies/hobo.tres | 2 +- scenes/entities/Zombies/bucket_zombie.tscn | 26 +++++++---- scenes/entities/Zombies/cone_zombie.tscn | 54 ++++++++++++---------- scenes/entities/Zombies/hobo.tscn | 52 ++++++++++----------- scenes/entities/Zombies/zombie.tscn | 2 +- 10 files changed, 80 insertions(+), 68 deletions(-) diff --git a/assets/sprites/cone1.tres b/assets/sprites/cone1.tres index b680b8a..418370c 100644 --- a/assets/sprites/cone1.tres +++ b/assets/sprites/cone1.tres @@ -1,7 +1,7 @@ [gd_resource type="AtlasTexture" load_steps=2 format=3 uid="uid://ceqvdmude7cgg"] -[ext_resource type="Texture2D" uid="uid://cmxh4w4gkgdjm" path="res://assets/sprites/atlases/zombies/basic.png" id="1_yijc6"] +[ext_resource type="Texture2D" uid="uid://b18blso5pbc6a" path="res://assets/sprites/atlases/zombies/armor.png" id="1_k5duo"] [resource] -atlas = ExtResource("1_yijc6") +atlas = ExtResource("1_k5duo") region = Rect2(0, 0, 31, 33) diff --git a/project.godot b/project.godot index 6e1d07c..c118599 100644 --- a/project.godot +++ b/project.godot @@ -11,7 +11,7 @@ config_version=5 [application] config/name="Liberation of the Neighbourville" -config/version="0.1.3" +config/version="0.1.4" run/main_scene="uid://bfstrli64u23y" config/features=PackedStringArray("4.4", "C#", "Forward Plus") config/icon="res://icon.png" diff --git a/resources/zombies/basic.tres b/resources/zombies/basic.tres index 2c5675a..e9c1a67 100644 --- a/resources/zombies/basic.tres +++ b/resources/zombies/basic.tres @@ -2,7 +2,7 @@ [ext_resource type="PackedScene" uid="uid://co11v3w8hbwgf" path="res://scenes/entities/Zombies/zombie.tscn" id="1_c2mq3"] [ext_resource type="Script" uid="uid://cqxj7o8hdm82n" path="res://scripts/resources/ZombieResource.cs" id="1_k277m"] -[ext_resource type="Texture2D" uid="uid://bwdqbrnn7ygtr" path="res://assets/sprites/atlases/zombies/Зондби.png" id="1_l6de4"] +[ext_resource type="Texture2D" uid="uid://dunlsp8tx7a4w" path="res://assets/sprites/zombies/Зондби.png" id="1_l6de4"] [resource] script = ExtResource("1_k277m") diff --git a/resources/zombies/buckethead.tres b/resources/zombies/buckethead.tres index b342cd9..ad2983b 100644 --- a/resources/zombies/buckethead.tres +++ b/resources/zombies/buckethead.tres @@ -2,7 +2,7 @@ [ext_resource type="PackedScene" uid="uid://xu4i6tmkv00a" path="res://scenes/entities/Zombies/bucket_zombie.tscn" id="1_lhcag"] [ext_resource type="Script" uid="uid://cqxj7o8hdm82n" path="res://scripts/resources/ZombieResource.cs" id="1_sngfh"] -[ext_resource type="Texture2D" uid="uid://bwdqbrnn7ygtr" path="res://assets/sprites/atlases/zombies/Зондби.png" id="1_ufs7s"] +[ext_resource type="Texture2D" uid="uid://dunlsp8tx7a4w" path="res://assets/sprites/zombies/Зондби.png" id="1_ufs7s"] [resource] script = ExtResource("1_sngfh") diff --git a/resources/zombies/conehead.tres b/resources/zombies/conehead.tres index 36b66d9..a9b8fd8 100644 --- a/resources/zombies/conehead.tres +++ b/resources/zombies/conehead.tres @@ -1,6 +1,6 @@ [gd_resource type="Resource" script_class="ZombieResource" load_steps=4 format=3 uid="uid://nceohd32fkxk"] -[ext_resource type="Texture2D" uid="uid://bwdqbrnn7ygtr" path="res://assets/sprites/atlases/zombies/Зондби.png" id="1_f7g7v"] +[ext_resource type="Texture2D" uid="uid://dunlsp8tx7a4w" path="res://assets/sprites/zombies/Зондби.png" id="1_f7g7v"] [ext_resource type="PackedScene" uid="uid://hhjbqkjqpt7x" path="res://scenes/entities/Zombies/cone_zombie.tscn" id="1_llf5l"] [ext_resource type="Script" uid="uid://cqxj7o8hdm82n" path="res://scripts/resources/ZombieResource.cs" id="1_sw7hj"] diff --git a/resources/zombies/hobo.tres b/resources/zombies/hobo.tres index 6736d4f..96ffa0d 100644 --- a/resources/zombies/hobo.tres +++ b/resources/zombies/hobo.tres @@ -1,7 +1,7 @@ [gd_resource type="Resource" script_class="ZombieResource" load_steps=4 format=3 uid="uid://c38vfdw5b60xw"] [ext_resource type="PackedScene" uid="uid://bgqmwsb6ynm81" path="res://scenes/entities/Zombies/hobo.tscn" id="1_4myt6"] -[ext_resource type="Texture2D" uid="uid://bwdqbrnn7ygtr" path="res://assets/sprites/atlases/zombies/Зондби.png" id="1_nt7w3"] +[ext_resource type="Texture2D" uid="uid://dunlsp8tx7a4w" path="res://assets/sprites/zombies/Зондби.png" id="1_nt7w3"] [ext_resource type="Script" uid="uid://cqxj7o8hdm82n" path="res://scripts/resources/ZombieResource.cs" id="1_u5qpq"] [resource] diff --git a/scenes/entities/Zombies/bucket_zombie.tscn b/scenes/entities/Zombies/bucket_zombie.tscn index 4c63237..c000fff 100644 --- a/scenes/entities/Zombies/bucket_zombie.tscn +++ b/scenes/entities/Zombies/bucket_zombie.tscn @@ -65,22 +65,29 @@ scale = Vector2(0.999836, 0.999836) scale = Vector2(0.99983, 0.99983) [node name="Body" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt" index="3"] -scale = Vector2(0.999829, 0.999829) +scale = Vector2(0.99983, 0.99983) [node name="RightUpperArm" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body" index="0"] scale = Vector2(0.999828, 0.999828) [node name="RightLowerArm" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/RightUpperArm" index="1"] -scale = Vector2(0.99983, 0.99983) +scale = Vector2(0.999829, 0.999829) [node name="RightHand" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/RightUpperArm/RightLowerArm" index="0"] -scale = Vector2(0.99983, 0.99983) +scale = Vector2(0.999829, 0.999829) + +[node name="Tie" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body" index="2"] +rotation = 0.0307433 [node name="Head" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body" index="3"] -scale = Vector2(0.999826, 0.999826) +scale = Vector2(0.999827, 0.999827) -[node name="Jaw" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/Head/HeadParticle/Head" index="0"] -position = Vector2(-3, 3) +[node name="Left_Eye" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/Head/HeadParticle/Head" index="1"] +position = Vector2(-4, -9) + +[node name="Jaw" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/Head/HeadParticle/Head" index="2"] +position = Vector2(-2.77911, 2.46402) +rotation = 0.0242566 scale = Vector2(0.999828, 0.999828) [node name="Jaw" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/Head" index="1"] @@ -95,14 +102,16 @@ texture = ExtResource("3_0nlp0") degradationStages = Array[Texture]([ExtResource("3_0nlp0"), ExtResource("4_xx7fu"), ExtResource("5_v1iwd")]) [node name="LeftUpperArm" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body" index="4"] -scale = Vector2(0.999828, 0.999828) +scale = Vector2(0.999829, 0.999829) [node name="Left_Lower_Arm" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/LeftUpperArm/HandProjectile" index="0"] -scale = Vector2(0.999998, 0.999998) +rotation = 0.124474 +scale = Vector2(0.999997, 0.999997) [node name="Left_Hand" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/LeftUpperArm/HandProjectile/Left_Lower_Arm" index="0"] show_behind_parent = false position = Vector2(-0.99983, 12.9978) +rotation = -0.103717 scale = Vector2(0.999656, 0.999656) [node name="LeftLowerArm" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/LeftUpperArm" index="2"] @@ -128,6 +137,7 @@ _damage = SubResource("Resource_2bm8y") [node name="Mover" parent="." index="4"] _speed = SubResource("Resource_lt6ps") +_speedControlMult = 0.806369 [node name="Armor" parent="." index="6"] MaxHP = 375.0 diff --git a/scenes/entities/Zombies/cone_zombie.tscn b/scenes/entities/Zombies/cone_zombie.tscn index a0e37a3..89536b4 100644 --- a/scenes/entities/Zombies/cone_zombie.tscn +++ b/scenes/entities/Zombies/cone_zombie.tscn @@ -41,48 +41,54 @@ _armor = NodePath("Armor") material = SubResource("ShaderMaterial_sat5k") [node name="RightUpperLeg" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt" index="1"] -scale = Vector2(0.999832, 0.999832) +scale = Vector2(0.999833, 0.999833) [node name="RightLowerLeg" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/RightUpperLeg" index="1"] -scale = Vector2(0.999835, 0.999835) +scale = Vector2(0.999833, 0.999833) [node name="RightFoot" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/RightUpperLeg/RightLowerLeg" index="0"] -scale = Vector2(0.999831, 0.999831) +scale = Vector2(0.99983, 0.99983) [node name="LeftUpperLeg" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt" index="2"] -scale = Vector2(0.999831, 0.999831) +scale = Vector2(0.999834, 0.999834) [node name="LeftLowerLeg" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/LeftUpperLeg" index="1"] -scale = Vector2(0.999831, 0.999831) +scale = Vector2(0.999833, 0.999833) [node name="LeftFoot" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/LeftUpperLeg/LeftLowerLeg" index="1"] scale = Vector2(0.999829, 0.999829) [node name="Body" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt" index="3"] -scale = Vector2(0.999828, 0.999828) - -[node name="RightUpperArm" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body" index="0"] -scale = Vector2(0.999827, 0.999827) - -[node name="RightLowerArm" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/RightUpperArm" index="1"] -scale = Vector2(0.999826, 0.999826) - -[node name="RightHand" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/RightUpperArm/RightLowerArm" index="0"] scale = Vector2(0.999829, 0.999829) +[node name="RightUpperArm" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body" index="0"] +scale = Vector2(0.999828, 0.999828) + +[node name="RightLowerArm" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/RightUpperArm" index="1"] +scale = Vector2(0.999827, 0.999827) + +[node name="RightHand" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/RightUpperArm/RightLowerArm" index="0"] +scale = Vector2(0.999828, 0.999828) + [node name="Tie" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body" index="2"] -rotation = -0.0219556 -skew = -9.19104e-05 +rotation = -0.135116 +scale = Vector2(1e-05, 1e-05) +skew = -9.46522e-05 [node name="Head" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body" index="3"] scale = Vector2(0.999828, 0.999828) [node name="Right_Eye" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/Head/HeadParticle/Head" index="0"] position = Vector2(-16, -7.99999) +scale = Vector2(1, 1) + +[node name="Left_Eye" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/Head/HeadParticle/Head" index="1"] +position = Vector2(-4, -9) +scale = Vector2(1, 1) [node name="Jaw" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/Head/HeadParticle/Head" index="2"] -position = Vector2(-2.94667, 2.87129) -rotation = -0.0641243 +position = Vector2(-2.8322, 2.59502) +rotation = -0.094379 scale = Vector2(0.999828, 0.999828) [node name="Jaw" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/Head" index="1"] @@ -119,16 +125,16 @@ shape = SubResource("CircleShape2D_67t4t") scale = Vector2(0.999828, 0.999828) [node name="Left_Lower_Arm" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/LeftUpperArm/HandProjectile" index="0"] -rotation = -0.0265831 +rotation = -0.143211 scale = Vector2(1, 1) [node name="Left_Hand" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/LeftUpperArm/HandProjectile/Left_Lower_Arm" index="0"] -position = Vector2(-0.99983, 12.9978) -rotation = -0.0375163 -scale = Vector2(0.999657, 0.999657) +position = Vector2(-0.999832, 12.9978) +rotation = -0.118048 +scale = Vector2(0.999656, 0.999656) [node name="LeftLowerArm" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/LeftUpperArm" index="2"] -scale = Vector2(0.99983, 0.99983) +scale = Vector2(0.999831, 0.999831) [node name="LeftHand" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/LeftUpperArm/LeftLowerArm" index="0"] scale = Vector2(0.999826, 0.999826) @@ -138,7 +144,7 @@ _damage = SubResource("Resource_w70im") [node name="Mover" parent="." index="4"] _speed = SubResource("Resource_qof5v") -_speedControlMult = 0.306946 +_speedControlMult = 0.965834 [node name="Armor" type="Node" parent="." index="6"] script = ExtResource("3_5s7in") diff --git a/scenes/entities/Zombies/hobo.tscn b/scenes/entities/Zombies/hobo.tscn index dbf0ef3..283cf4c 100644 --- a/scenes/entities/Zombies/hobo.tscn +++ b/scenes/entities/Zombies/hobo.tscn @@ -1,8 +1,8 @@ -[gd_scene load_steps=63 format=3 uid="uid://bgqmwsb6ynm81"] +[gd_scene load_steps=62 format=3 uid="uid://bgqmwsb6ynm81"] [ext_resource type="PackedScene" uid="uid://co11v3w8hbwgf" path="res://scenes/entities/Zombies/zombie.tscn" id="1_fnu7s"] [ext_resource type="Shader" uid="uid://d0eo5uuj222c4" path="res://assets/shaders/CG_color_blender.gdshader" id="2_6qr4h"] -[ext_resource type="Texture2D" uid="uid://cse1504ao4g8e" path="res://assets/sprites/atlases/zombies/hobo.png" id="3_6qr4h"] +[ext_resource type="Script" uid="uid://bcc7skl7ts6sh" path="res://scripts/systems/effects/Effect.cs" id="2_b583s"] [ext_resource type="Resource" uid="uid://dsg1vjx76ifgu" path="res://resources/effects/GarlicEffect.tres" id="3_b583s"] [ext_resource type="Script" uid="uid://dt5uj25u0g6y3" path="res://scripts/particles/FallParticle.cs" id="3_tu6af"] [ext_resource type="Script" uid="uid://c5v2og85t7s6j" path="res://scripts/zombies/behaviours/HoboBehaviour.cs" id="4_5selg"] @@ -70,13 +70,9 @@ region = Rect2(91, 32, 9, 15) atlas = ExtResource("5_b583s") region = Rect2(137, 19, 29, 39) -[sub_resource type="AtlasTexture" id="AtlasTexture_w8pya"] -atlas = ExtResource("3_6qr4h") -region = Rect2(0, 15, 40, 49) - [sub_resource type="AtlasTexture" id="AtlasTexture_5selg"] -atlas = ExtResource("3_6qr4h") -region = Rect2(3, 0, 35, 11) +atlas = ExtResource("5_b583s") +region = Rect2(0, 29, 35, 11) [sub_resource type="CapsuleShape2D" id="CapsuleShape2D_4248q"] radius = 17.0 @@ -759,7 +755,7 @@ mult_value = 1.0 [node name="Hobo" node_paths=PackedStringArray("_armor") instance=ExtResource("1_fnu7s")] _armor = NodePath("CanArmor") MaxHP = 130.0 -_effectImmunities = [ExtResource("3_b583s")] +_effectImmunities = Array[ExtResource("2_b583s")]([ExtResource("3_b583s")]) [node name="CanvasGroup" parent="." index="0"] material = SubResource("ShaderMaterial_w8pya") @@ -771,16 +767,16 @@ scale = Vector2(0.999902, 0.999902) texture = SubResource("AtlasTexture_txjqc") [node name="RightUpperLeg" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt" index="1"] -scale = Vector2(0.999822, 0.999822) +scale = Vector2(0.999826, 0.999826) [node name="Right_Upper_Leg" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/RightUpperLeg" index="0"] texture = SubResource("AtlasTexture_b583s") [node name="RightLowerLeg" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/RightUpperLeg" index="1"] -scale = Vector2(0.999832, 0.999832) +scale = Vector2(0.999831, 0.999831) [node name="RightFoot" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/RightUpperLeg/RightLowerLeg" index="0"] -scale = Vector2(0.999827, 0.999827) +scale = Vector2(0.999824, 0.999824) [node name="Right_Foot" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/RightUpperLeg/RightLowerLeg/RightFoot" index="0"] texture = SubResource("AtlasTexture_uoit3") @@ -789,28 +785,28 @@ texture = SubResource("AtlasTexture_uoit3") texture = SubResource("AtlasTexture_vn3j1") [node name="LeftUpperLeg" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt" index="2"] -scale = Vector2(0.999827, 0.999827) +scale = Vector2(0.999825, 0.999825) [node name="Left_Upper_Leg" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/LeftUpperLeg" index="0"] texture = SubResource("AtlasTexture_yb81c") [node name="LeftLowerLeg" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/LeftUpperLeg" index="1"] -scale = Vector2(0.999835, 0.999835) +scale = Vector2(0.99983, 0.99983) [node name="Left_Lower_Leg" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/LeftUpperLeg/LeftLowerLeg" index="0"] texture = SubResource("AtlasTexture_nlwsb") [node name="LeftFoot" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/LeftUpperLeg/LeftLowerLeg" index="1"] -scale = Vector2(0.999823, 0.999823) +scale = Vector2(0.999818, 0.999818) [node name="Left_Foot" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/LeftUpperLeg/LeftLowerLeg/LeftFoot" index="0"] texture = SubResource("AtlasTexture_8y6c0") [node name="Body" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt" index="3"] -scale = Vector2(0.999824, 0.999824) +scale = Vector2(0.999829, 0.999829) [node name="RightUpperArm" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body" index="0"] -scale = Vector2(0.999823, 0.999823) +scale = Vector2(0.999829, 0.999829) [node name="Right_Upper_Arm" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/RightUpperArm" index="0"] texture = SubResource("AtlasTexture_nc6p3") @@ -831,7 +827,7 @@ texture = SubResource("AtlasTexture_op0h6") texture = SubResource("AtlasTexture_0s5wm") [node name="Tie" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body" index="2"] -rotation = 0.0126247 +rotation = 0.0277344 scale = Vector2(1e-05, 1e-05) [node name="Tie" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/Tie" index="0"] @@ -851,7 +847,7 @@ Impulse = 100.0 [node name="Sprite2D" type="Sprite2D" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/Can" index="0" node_paths=PackedStringArray("armor")] position = Vector2(-5.9999, -4.5002) -texture = SubResource("AtlasTexture_w8pya") +texture = ExtResource("6_i6nje") script = ExtResource("5_ndwp0") armor = NodePath("../../../../../../../CanArmor") degradationStages = Array[Texture2D]([ExtResource("6_i6nje"), ExtResource("7_txjqc"), ExtResource("8_b583s")]) @@ -877,26 +873,26 @@ position = Vector2(-16, -8) scale = Vector2(1, 1) [node name="Left_Eye" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/Head/HeadParticle/Head" index="1"] -position = Vector2(-4, -9) +position = Vector2(-4, -9.00001) scale = Vector2(1, 1) [node name="Jaw" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/Head/HeadParticle/Head" index="2"] position = Vector2(-3, 3) -rotation = -0.0205333 -scale = Vector2(0.999825, 0.999825) +rotation = -0.0451082 +scale = Vector2(0.999827, 0.999827) texture = SubResource("AtlasTexture_7cvmi") offset = Vector2(-14, -2) [node name="Trashcan_lid" type="Sprite2D" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/Head/HeadParticle/Head" index="3"] z_index = -1 -position = Vector2(-0.00229788, -17.0131) +position = Vector2(-0.00229692, -17.0131) scale = Vector2(0.999828, 0.999828) texture = SubResource("AtlasTexture_n380g") offset = Vector2(-0.5, -0.5) metadata/_edit_lock_ = true [node name="Jaw" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/Head" index="1"] -scale = Vector2(0.999825, 0.999825) +scale = Vector2(0.999827, 0.999827) [node name="TrashcanLid" type="Bone2D" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/Head" index="4"] position = Vector2(-0.0022974, -17.0131) @@ -911,14 +907,14 @@ editor_settings/show_bone_gizmo = false remote_path = NodePath("../../HeadParticle/Head/Trashcan_lid") [node name="LeftUpperArm" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body" index="5"] -scale = Vector2(0.999826, 0.999826) +scale = Vector2(0.999827, 0.999827) [node name="Left_Upper_Arm" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/LeftUpperArm" index="0"] texture = SubResource("AtlasTexture_tebih") [node name="Left_Lower_Arm" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/LeftUpperArm/HandProjectile" index="0"] -rotation = 0.0113885 -scale = Vector2(0.999995, 0.999995) +rotation = 0.0250187 +scale = Vector2(0.999999, 0.999999) texture = SubResource("AtlasTexture_auxav") [node name="Left_Hand" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/LeftUpperArm/HandProjectile/Left_Lower_Arm" index="0"] @@ -927,7 +923,7 @@ scale = Vector2(0.999652, 0.999652) texture = SubResource("AtlasTexture_dntsa") [node name="LeftLowerArm" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/LeftUpperArm" index="2"] -scale = Vector2(0.999825, 0.999825) +scale = Vector2(0.999829, 0.999829) [node name="LeftHand" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/LeftUpperArm/LeftLowerArm" index="0"] scale = Vector2(0.999822, 0.999822) diff --git a/scenes/entities/Zombies/zombie.tscn b/scenes/entities/Zombies/zombie.tscn index ce60b89..d5b6396 100644 --- a/scenes/entities/Zombies/zombie.tscn +++ b/scenes/entities/Zombies/zombie.tscn @@ -821,7 +821,7 @@ metadata/_edit_lock_ = true [node name="RightLowerLeg" type="Bone2D" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/RightUpperLeg"] position = Vector2(-2, 12) -scale = Vector2(0.999841, 0.999841) +scale = Vector2(0.99984, 0.99984) rest = Transform2D(1, 0, 0, 1, -2, 12) editor_settings/show_bone_gizmo = false From 3a97db2285d7c513bdec561cbaca4cab8807309d Mon Sep 17 00:00:00 2001 From: Rendo Date: Sat, 12 Jul 2025 04:15:10 +0500 Subject: [PATCH 17/48] Zombie tie --- project.godot | 5 ++ scenes/entities/Zombies/bucket_zombie.tscn | 64 ++++++++++++++-------- scenes/entities/Zombies/cone_zombie.tscn | 37 ++++++------- scenes/entities/Zombies/zombie.tscn | 55 ++++++++++++------- scripts/zombies/RuntimeZombieData.cs | 8 +++ scripts/zombies/ZombieMover.cs | 2 - 6 files changed, 105 insertions(+), 66 deletions(-) diff --git a/project.godot b/project.godot index c118599..c4737f9 100644 --- a/project.godot +++ b/project.godot @@ -8,6 +8,11 @@ config_version=5 +[animation] + +warnings/check_invalid_track_paths=false +warnings/check_angle_interpolation_type_conflicting=false + [application] config/name="Liberation of the Neighbourville" diff --git a/scenes/entities/Zombies/bucket_zombie.tscn b/scenes/entities/Zombies/bucket_zombie.tscn index c000fff..303fae9 100644 --- a/scenes/entities/Zombies/bucket_zombie.tscn +++ b/scenes/entities/Zombies/bucket_zombie.tscn @@ -43,55 +43,71 @@ mult_value = 1.0 [node name="CanvasGroup" parent="." index="0"] material = SubResource("ShaderMaterial_wdi07") +[node name="Zombie" parent="CanvasGroup/basic_zombie_walk" index="0"] +use_parent_material = false + [node name="Butt" parent="CanvasGroup/basic_zombie_walk/Zombie" index="0"] +use_parent_material = false scale = Vector2(0.999912, 0.999912) +[node name="Butt" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt" index="0"] +use_parent_material = false + [node name="RightUpperLeg" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt" index="1"] -scale = Vector2(0.999831, 0.999831) +use_parent_material = false +scale = Vector2(0.999837, 0.999837) [node name="RightLowerLeg" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/RightUpperLeg" index="1"] -scale = Vector2(0.999833, 0.999833) +scale = Vector2(0.999834, 0.999834) [node name="RightFoot" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/RightUpperLeg/RightLowerLeg" index="0"] scale = Vector2(0.999833, 0.999833) [node name="LeftUpperLeg" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt" index="2"] -scale = Vector2(0.999834, 0.999834) +use_parent_material = false +scale = Vector2(0.999838, 0.999838) [node name="LeftLowerLeg" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/LeftUpperLeg" index="1"] -scale = Vector2(0.999836, 0.999836) +scale = Vector2(0.999831, 0.999831) [node name="LeftFoot" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/LeftUpperLeg/LeftLowerLeg" index="1"] -scale = Vector2(0.99983, 0.99983) +scale = Vector2(0.999831, 0.999831) [node name="Body" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt" index="3"] -scale = Vector2(0.99983, 0.99983) - -[node name="RightUpperArm" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body" index="0"] +use_parent_material = false scale = Vector2(0.999828, 0.999828) +[node name="RightUpperArm" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body" index="0"] +use_parent_material = false +scale = Vector2(0.99982, 0.99982) + [node name="RightLowerArm" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/RightUpperArm" index="1"] -scale = Vector2(0.999829, 0.999829) +scale = Vector2(0.99983, 0.99983) [node name="RightHand" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/RightUpperArm/RightLowerArm" index="0"] -scale = Vector2(0.999829, 0.999829) +scale = Vector2(0.999823, 0.999823) [node name="Tie" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body" index="2"] -rotation = 0.0307433 +rotation = 0.0582635 +scale = Vector2(1, 1) +skew = -0.000132799 [node name="Head" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body" index="3"] -scale = Vector2(0.999827, 0.999827) +scale = Vector2(0.999833, 0.999833) + +[node name="Right_Eye" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/Head/HeadParticle/Head" index="0"] +position = Vector2(-16, -8) [node name="Left_Eye" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/Head/HeadParticle/Head" index="1"] position = Vector2(-4, -9) [node name="Jaw" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/Head/HeadParticle/Head" index="2"] -position = Vector2(-2.77911, 2.46402) -rotation = 0.0242566 -scale = Vector2(0.999828, 0.999828) +position = Vector2(-3.00071, 2.99879) +rotation = 0.00565429 +scale = Vector2(0.999831, 0.999831) [node name="Jaw" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/Head" index="1"] -scale = Vector2(0.999828, 0.999828) +scale = Vector2(0.999831, 0.999831) [node name="Hat" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/Head" index="4"] position = Vector2(-6, -8) @@ -102,23 +118,23 @@ texture = ExtResource("3_0nlp0") degradationStages = Array[Texture]([ExtResource("3_0nlp0"), ExtResource("4_xx7fu"), ExtResource("5_v1iwd")]) [node name="LeftUpperArm" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body" index="4"] -scale = Vector2(0.999829, 0.999829) +scale = Vector2(0.999831, 0.999831) [node name="Left_Lower_Arm" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/LeftUpperArm/HandProjectile" index="0"] -rotation = 0.124474 -scale = Vector2(0.999997, 0.999997) +rotation = 0.0547805 +scale = Vector2(1.00001, 1.00001) [node name="Left_Hand" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/LeftUpperArm/HandProjectile/Left_Lower_Arm" index="0"] show_behind_parent = false position = Vector2(-0.99983, 12.9978) -rotation = -0.103717 -scale = Vector2(0.999656, 0.999656) +rotation = -0.0241767 +scale = Vector2(0.999661, 0.999661) [node name="LeftLowerArm" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/LeftUpperArm" index="2"] -scale = Vector2(0.999828, 0.999828) +scale = Vector2(0.999835, 0.999835) [node name="LeftHand" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/LeftUpperArm/LeftLowerArm" index="0"] -scale = Vector2(0.999826, 0.999826) +scale = Vector2(0.999831, 0.999831) [node name="Left_Hand" type="Sprite2D" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/LeftUpperArm/LeftLowerArm/LeftHand" index="0"] texture = SubResource("AtlasTexture_wfem3") @@ -137,7 +153,7 @@ _damage = SubResource("Resource_2bm8y") [node name="Mover" parent="." index="4"] _speed = SubResource("Resource_lt6ps") -_speedControlMult = 0.806369 +_speedControlMult = 0.187967 [node name="Armor" parent="." index="6"] MaxHP = 375.0 diff --git a/scenes/entities/Zombies/cone_zombie.tscn b/scenes/entities/Zombies/cone_zombie.tscn index 89536b4..b3fc9d0 100644 --- a/scenes/entities/Zombies/cone_zombie.tscn +++ b/scenes/entities/Zombies/cone_zombie.tscn @@ -44,13 +44,13 @@ material = SubResource("ShaderMaterial_sat5k") scale = Vector2(0.999833, 0.999833) [node name="RightLowerLeg" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/RightUpperLeg" index="1"] -scale = Vector2(0.999833, 0.999833) +scale = Vector2(0.999834, 0.999834) [node name="RightFoot" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/RightUpperLeg/RightLowerLeg" index="0"] scale = Vector2(0.99983, 0.99983) [node name="LeftUpperLeg" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt" index="2"] -scale = Vector2(0.999834, 0.999834) +scale = Vector2(0.999835, 0.999835) [node name="LeftLowerLeg" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/LeftUpperLeg" index="1"] scale = Vector2(0.999833, 0.999833) @@ -59,7 +59,7 @@ scale = Vector2(0.999833, 0.999833) scale = Vector2(0.999829, 0.999829) [node name="Body" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt" index="3"] -scale = Vector2(0.999829, 0.999829) +scale = Vector2(0.999828, 0.999828) [node name="RightUpperArm" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body" index="0"] scale = Vector2(0.999828, 0.999828) @@ -71,24 +71,19 @@ scale = Vector2(0.999827, 0.999827) scale = Vector2(0.999828, 0.999828) [node name="Tie" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body" index="2"] -rotation = -0.135116 -scale = Vector2(1e-05, 1e-05) -skew = -9.46522e-05 +rotation = -0.0474381 +scale = Vector2(1, 1) +skew = -9.50098e-05 [node name="Head" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body" index="3"] -scale = Vector2(0.999828, 0.999828) - -[node name="Right_Eye" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/Head/HeadParticle/Head" index="0"] -position = Vector2(-16, -7.99999) -scale = Vector2(1, 1) +scale = Vector2(0.999827, 0.999827) [node name="Left_Eye" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/Head/HeadParticle/Head" index="1"] position = Vector2(-4, -9) -scale = Vector2(1, 1) [node name="Jaw" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/Head/HeadParticle/Head" index="2"] -position = Vector2(-2.8322, 2.59502) -rotation = -0.094379 +position = Vector2(-2.94109, 2.85781) +rotation = -0.0331358 scale = Vector2(0.999828, 0.999828) [node name="Jaw" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/Head" index="1"] @@ -125,26 +120,26 @@ shape = SubResource("CircleShape2D_67t4t") scale = Vector2(0.999828, 0.999828) [node name="Left_Lower_Arm" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/LeftUpperArm/HandProjectile" index="0"] -rotation = -0.143211 +rotation = -0.0502802 scale = Vector2(1, 1) [node name="Left_Hand" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/LeftUpperArm/HandProjectile/Left_Lower_Arm" index="0"] -position = Vector2(-0.999832, 12.9978) -rotation = -0.118048 -scale = Vector2(0.999656, 0.999656) +position = Vector2(-0.99983, 12.9978) +rotation = -0.0414459 +scale = Vector2(0.999655, 0.999655) [node name="LeftLowerArm" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/LeftUpperArm" index="2"] -scale = Vector2(0.999831, 0.999831) +scale = Vector2(0.99983, 0.99983) [node name="LeftHand" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/LeftUpperArm/LeftLowerArm" index="0"] -scale = Vector2(0.999826, 0.999826) +scale = Vector2(0.999825, 0.999825) [node name="Eatbox" parent="." index="2"] _damage = SubResource("Resource_w70im") [node name="Mover" parent="." index="4"] _speed = SubResource("Resource_qof5v") -_speedControlMult = 0.965834 +_speedControlMult = 0.339097 [node name="Armor" type="Node" parent="." index="6"] script = ExtResource("3_5s7in") diff --git a/scenes/entities/Zombies/zombie.tscn b/scenes/entities/Zombies/zombie.tscn index d5b6396..87e4a1f 100644 --- a/scenes/entities/Zombies/zombie.tscn +++ b/scenes/entities/Zombies/zombie.tscn @@ -735,6 +735,18 @@ tracks/43/keys = { "update": 0, "values": [Vector2(-4, -1)] } +tracks/44/type = "value" +tracks/44/imported = false +tracks/44/enabled = true +tracks/44/path = NodePath("Zombie/Butt/Body/Tie:scale") +tracks/44/interp = 1 +tracks/44/loop_wrap = true +tracks/44/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 0, +"values": [Vector2(1, 1)] +} [sub_resource type="AnimationLibrary" id="AnimationLibrary_x5uj2"] _data = { @@ -757,7 +769,7 @@ size = Vector2(16, 48) [sub_resource type="AnimationNodeTimeScale" id="AnimationNodeTimeScale_2q05d"] [sub_resource type="AnimationNodeBlendTree" id="AnimationNodeBlendTree_ccrjo"] -graph_offset = Vector2(-427, 26) +graph_offset = Vector2(-606, 210) nodes/TimeScale/node = SubResource("AnimationNodeTimeScale_2q05d") nodes/TimeScale/position = Vector2(60, 120) nodes/Tree/node = ExtResource("8_ckb7n") @@ -793,23 +805,27 @@ script = ExtResource("3_rao3m") [node name="basic_zombie_walk" type="Node2D" parent="CanvasGroup"] [node name="Zombie" type="Skeleton2D" parent="CanvasGroup/basic_zombie_walk"] +use_parent_material = true modification_stack = SubResource("SkeletonModificationStack2D_wn68q") [node name="Butt" type="Bone2D" parent="CanvasGroup/basic_zombie_walk/Zombie"] +use_parent_material = true position = Vector2(5, -35) scale = Vector2(0.999903, 0.999903) rest = Transform2D(1, 0, 0, 1, 5, -35) editor_settings/show_bone_gizmo = false [node name="Butt" type="Sprite2D" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt"] +use_parent_material = true texture = SubResource("AtlasTexture_jvn5w") centered = false offset = Vector2(-10, -3) metadata/_edit_lock_ = true [node name="RightUpperLeg" type="Bone2D" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt"] +use_parent_material = true position = Vector2(-6, 3) -scale = Vector2(0.999834, 0.999834) +scale = Vector2(0.999831, 0.999831) rest = Transform2D(1, 0, 0, 1, -6, 3) editor_settings/show_bone_gizmo = false @@ -821,13 +837,13 @@ metadata/_edit_lock_ = true [node name="RightLowerLeg" type="Bone2D" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/RightUpperLeg"] position = Vector2(-2, 12) -scale = Vector2(0.99984, 0.99984) +scale = Vector2(0.999834, 0.999834) rest = Transform2D(1, 0, 0, 1, -2, 12) editor_settings/show_bone_gizmo = false [node name="RightFoot" type="Bone2D" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/RightUpperLeg/RightLowerLeg"] position = Vector2(-2, 14) -scale = Vector2(0.999831, 0.999831) +scale = Vector2(0.999834, 0.999834) rest = Transform2D(1, 0, 0, 1, -2, 14) auto_calculate_length_and_angle = false length = 12.0 @@ -848,8 +864,9 @@ offset = Vector2(12, 1) metadata/_edit_lock_ = true [node name="LeftUpperLeg" type="Bone2D" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt"] +use_parent_material = true position = Vector2(6, 4) -scale = Vector2(0.999835, 0.999835) +scale = Vector2(0.999834, 0.999834) rest = Transform2D(1, 0, 0, 1, 6, 4) editor_settings/show_bone_gizmo = false @@ -861,7 +878,7 @@ metadata/_edit_lock_ = true [node name="LeftLowerLeg" type="Bone2D" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/LeftUpperLeg"] position = Vector2(-1, 13) -scale = Vector2(0.999835, 0.999835) +scale = Vector2(0.999833, 0.999833) rest = Transform2D(1, 0, 0, 1, -1, 13) editor_settings/show_bone_gizmo = false @@ -873,7 +890,7 @@ metadata/_edit_lock_ = true [node name="LeftFoot" type="Bone2D" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/LeftUpperLeg/LeftLowerLeg"] position = Vector2(6, 10) -scale = Vector2(0.999833, 0.999833) +scale = Vector2(0.99983, 0.99983) rest = Transform2D(1, 0, 0, 1, 6, 10) auto_calculate_length_and_angle = false length = 12.0 @@ -887,15 +904,17 @@ offset = Vector2(-14, -3) metadata/_edit_lock_ = true [node name="Body" type="Bone2D" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt"] +use_parent_material = true position = Vector2(1, -2) -scale = Vector2(0.999833, 0.999833) +scale = Vector2(0.999827, 0.999827) rest = Transform2D(1, 0, 0, 1, 1, -2) editor_settings/show_bone_gizmo = false [node name="RightUpperArm" type="Bone2D" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body"] z_index = -1 +use_parent_material = true position = Vector2(-14, -23) -scale = Vector2(0.999827, 0.999827) +scale = Vector2(0.999829, 0.999829) rest = Transform2D(1, 0, 0, 1, -14, -23) editor_settings/show_bone_gizmo = false @@ -913,7 +932,7 @@ editor_settings/show_bone_gizmo = false [node name="RightHand" type="Bone2D" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/RightUpperArm/RightLowerArm"] position = Vector2(-1, 13) -scale = Vector2(0.999829, 0.999829) +scale = Vector2(0.999828, 0.999828) rest = Transform2D(1, 0, 0, 1, -1, 13) auto_calculate_length_and_angle = false length = 8.0 @@ -941,8 +960,7 @@ metadata/_edit_lock_ = true [node name="Tie" type="Bone2D" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body"] position = Vector2(-9, -21) -scale = Vector2(0.999825, 0.999825) -skew = -0.000187755 +skew = -0.000388026 rest = Transform2D(1, 0, 0, 1, -9, -21) auto_calculate_length_and_angle = false length = 24.0 @@ -986,7 +1004,7 @@ offset = Vector2(-2, -2) metadata/_edit_lock_ = true [node name="Left_Eye" type="Sprite2D" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/Head/HeadParticle/Head"] -position = Vector2(-4, -9) +position = Vector2(-4, -8.99999) texture = SubResource("AtlasTexture_kto0i") centered = false offset = Vector2(-2, -2) @@ -994,7 +1012,7 @@ metadata/_edit_lock_ = true [node name="Jaw" type="Sprite2D" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/Head/HeadParticle/Head"] position = Vector2(-3, 3) -scale = Vector2(0.999827, 0.999827) +scale = Vector2(0.999828, 0.999828) texture = SubResource("AtlasTexture_x5uj2") centered = false offset = Vector2(-12, -2) @@ -1011,7 +1029,7 @@ _observedEntity = NodePath("../../../../../../../..") [node name="Jaw" type="Bone2D" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/Head"] position = Vector2(-3, 3) -scale = Vector2(0.999827, 0.999827) +scale = Vector2(0.999828, 0.999828) rest = Transform2D(1, 0, 0, 1, -3, 3) auto_calculate_length_and_angle = false length = 11.0 @@ -1045,7 +1063,7 @@ remote_path = NodePath("../../HeadParticle/Head/Left_Eye") [node name="LeftUpperArm" type="Bone2D" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body"] position = Vector2(-1, -20) -scale = Vector2(0.999826, 0.999826) +scale = Vector2(0.999828, 0.999828) rest = Transform2D(1, 0, 0, 1, -1, -20) editor_settings/show_bone_gizmo = false @@ -1067,7 +1085,7 @@ minTorque = -45.0 maxTorque = 45.0 [node name="Left_Lower_Arm" type="Sprite2D" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/LeftUpperArm/HandProjectile"] -scale = Vector2(1, 1) +scale = Vector2(0.999998, 0.999998) texture = SubResource("AtlasTexture_auqeq") centered = false offset = Vector2(-5, 0) @@ -1092,7 +1110,7 @@ _observedEntity = NodePath("../../../../../../../..") [node name="LeftLowerArm" type="Bone2D" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/LeftUpperArm"] position = Vector2(-2, 14) -scale = Vector2(0.99983, 0.99983) +scale = Vector2(0.999828, 0.999828) rest = Transform2D(1, 0, 0, 1, -2, 14) editor_settings/show_bone_gizmo = false @@ -1148,7 +1166,6 @@ entity = NodePath("..") [node name="Mover" type="Node" parent="."] script = ExtResource("4_u5syx") _speed = SubResource("Resource_ckb7n") -_speedControlMult = 0.100826 [node name="ChompPlayer" type="Node" parent="."] script = ExtResource("10_ruqsf") diff --git a/scripts/zombies/RuntimeZombieData.cs b/scripts/zombies/RuntimeZombieData.cs index b4fb94b..4c24245 100644 --- a/scripts/zombies/RuntimeZombieData.cs +++ b/scripts/zombies/RuntimeZombieData.cs @@ -13,6 +13,14 @@ public partial class RuntimeZombieData : Entity [Signal] public delegate void HasBeenKilledEventHandler(RuntimeZombieData who); public bool AbleToEat = true; + public override void _Ready() + { + base._Ready(); + + + LocalTimescale += (float)GD.RandRange(-0.05, 0.05); + } + public override void Heal(float amount, Node origin) { if (_armor != null) diff --git a/scripts/zombies/ZombieMover.cs b/scripts/zombies/ZombieMover.cs index c9b8261..60a81e5 100644 --- a/scripts/zombies/ZombieMover.cs +++ b/scripts/zombies/ZombieMover.cs @@ -13,8 +13,6 @@ public partial class ZombieMover : Node public override void _Ready() { _zombie = GetParent(); - _speed = (FloatModifiers)_speed.Duplicate(); - _speed.ChangePercentage((float)GD.RandRange(-0.05,0.05)); } public override void _PhysicsProcess(double delta) From 09e09ad3409516a7b1347da6edd5a4864a1b4e78 Mon Sep 17 00:00:00 2001 From: Rendo Date: Sat, 12 Jul 2025 04:15:40 +0500 Subject: [PATCH 18/48] Zombie tie --- scenes/entities/Zombies/zombie.tscn | 1 + 1 file changed, 1 insertion(+) diff --git a/scenes/entities/Zombies/zombie.tscn b/scenes/entities/Zombies/zombie.tscn index 87e4a1f..f094adb 100644 --- a/scenes/entities/Zombies/zombie.tscn +++ b/scenes/entities/Zombies/zombie.tscn @@ -959,6 +959,7 @@ offset = Vector2(-15, -27) metadata/_edit_lock_ = true [node name="Tie" type="Bone2D" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body"] +visible = false position = Vector2(-9, -21) skew = -0.000388026 rest = Transform2D(1, 0, 0, 1, -9, -21) From e3b5a70c24730b9a912e6762656ad190d50fa24a Mon Sep 17 00:00:00 2001 From: Rendo Date: Sat, 12 Jul 2025 04:20:57 +0500 Subject: [PATCH 19/48] Aloe --- scenes/entities/Zombies/bucket_zombie.tscn | 12 ------- scenes/entities/Zombies/cone_zombie.tscn | 18 ----------- scenes/entities/Zombies/zombie.tscn | 37 ++++++++++++---------- scripts/Entity.cs | 1 + scripts/plants/behaviours/AloeBehaviour.cs | 2 +- 5 files changed, 23 insertions(+), 47 deletions(-) diff --git a/scenes/entities/Zombies/bucket_zombie.tscn b/scenes/entities/Zombies/bucket_zombie.tscn index 303fae9..e5e6987 100644 --- a/scenes/entities/Zombies/bucket_zombie.tscn +++ b/scenes/entities/Zombies/bucket_zombie.tscn @@ -57,9 +57,6 @@ use_parent_material = false use_parent_material = false scale = Vector2(0.999837, 0.999837) -[node name="RightLowerLeg" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/RightUpperLeg" index="1"] -scale = Vector2(0.999834, 0.999834) - [node name="RightFoot" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/RightUpperLeg/RightLowerLeg" index="0"] scale = Vector2(0.999833, 0.999833) @@ -75,7 +72,6 @@ scale = Vector2(0.999831, 0.999831) [node name="Body" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt" index="3"] use_parent_material = false -scale = Vector2(0.999828, 0.999828) [node name="RightUpperArm" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body" index="0"] use_parent_material = false @@ -89,18 +85,11 @@ scale = Vector2(0.999823, 0.999823) [node name="Tie" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body" index="2"] rotation = 0.0582635 -scale = Vector2(1, 1) skew = -0.000132799 [node name="Head" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body" index="3"] scale = Vector2(0.999833, 0.999833) -[node name="Right_Eye" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/Head/HeadParticle/Head" index="0"] -position = Vector2(-16, -8) - -[node name="Left_Eye" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/Head/HeadParticle/Head" index="1"] -position = Vector2(-4, -9) - [node name="Jaw" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/Head/HeadParticle/Head" index="2"] position = Vector2(-3.00071, 2.99879) rotation = 0.00565429 @@ -126,7 +115,6 @@ scale = Vector2(1.00001, 1.00001) [node name="Left_Hand" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/LeftUpperArm/HandProjectile/Left_Lower_Arm" index="0"] show_behind_parent = false -position = Vector2(-0.99983, 12.9978) rotation = -0.0241767 scale = Vector2(0.999661, 0.999661) diff --git a/scenes/entities/Zombies/cone_zombie.tscn b/scenes/entities/Zombies/cone_zombie.tscn index b3fc9d0..b1d5324 100644 --- a/scenes/entities/Zombies/cone_zombie.tscn +++ b/scenes/entities/Zombies/cone_zombie.tscn @@ -43,18 +43,12 @@ material = SubResource("ShaderMaterial_sat5k") [node name="RightUpperLeg" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt" index="1"] scale = Vector2(0.999833, 0.999833) -[node name="RightLowerLeg" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/RightUpperLeg" index="1"] -scale = Vector2(0.999834, 0.999834) - [node name="RightFoot" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/RightUpperLeg/RightLowerLeg" index="0"] scale = Vector2(0.99983, 0.99983) [node name="LeftUpperLeg" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt" index="2"] scale = Vector2(0.999835, 0.999835) -[node name="LeftLowerLeg" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/LeftUpperLeg" index="1"] -scale = Vector2(0.999833, 0.999833) - [node name="LeftFoot" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/LeftUpperLeg/LeftLowerLeg" index="1"] scale = Vector2(0.999829, 0.999829) @@ -67,12 +61,8 @@ scale = Vector2(0.999828, 0.999828) [node name="RightLowerArm" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/RightUpperArm" index="1"] scale = Vector2(0.999827, 0.999827) -[node name="RightHand" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/RightUpperArm/RightLowerArm" index="0"] -scale = Vector2(0.999828, 0.999828) - [node name="Tie" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body" index="2"] rotation = -0.0474381 -scale = Vector2(1, 1) skew = -9.50098e-05 [node name="Head" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body" index="3"] @@ -84,10 +74,6 @@ position = Vector2(-4, -9) [node name="Jaw" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/Head/HeadParticle/Head" index="2"] position = Vector2(-2.94109, 2.85781) rotation = -0.0331358 -scale = Vector2(0.999828, 0.999828) - -[node name="Jaw" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/Head" index="1"] -scale = Vector2(0.999828, 0.999828) [node name="Hat" type="RigidBody2D" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/Head" index="4" node_paths=PackedStringArray("data")] position = Vector2(-2.5, -13.5) @@ -116,15 +102,11 @@ thresholdPercentage = Array[float]([1.0, 0.667, 0.333]) position = Vector2(1, -6) shape = SubResource("CircleShape2D_67t4t") -[node name="LeftUpperArm" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body" index="4"] -scale = Vector2(0.999828, 0.999828) - [node name="Left_Lower_Arm" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/LeftUpperArm/HandProjectile" index="0"] rotation = -0.0502802 scale = Vector2(1, 1) [node name="Left_Hand" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/LeftUpperArm/HandProjectile/Left_Lower_Arm" index="0"] -position = Vector2(-0.99983, 12.9978) rotation = -0.0414459 scale = Vector2(0.999655, 0.999655) diff --git a/scenes/entities/Zombies/zombie.tscn b/scenes/entities/Zombies/zombie.tscn index f094adb..d9b6498 100644 --- a/scenes/entities/Zombies/zombie.tscn +++ b/scenes/entities/Zombies/zombie.tscn @@ -825,7 +825,7 @@ metadata/_edit_lock_ = true [node name="RightUpperLeg" type="Bone2D" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt"] use_parent_material = true position = Vector2(-6, 3) -scale = Vector2(0.999831, 0.999831) +scale = Vector2(0.999834, 0.999834) rest = Transform2D(1, 0, 0, 1, -6, 3) editor_settings/show_bone_gizmo = false @@ -866,7 +866,7 @@ metadata/_edit_lock_ = true [node name="LeftUpperLeg" type="Bone2D" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt"] use_parent_material = true position = Vector2(6, 4) -scale = Vector2(0.999834, 0.999834) +scale = Vector2(0.999835, 0.999835) rest = Transform2D(1, 0, 0, 1, 6, 4) editor_settings/show_bone_gizmo = false @@ -878,7 +878,7 @@ metadata/_edit_lock_ = true [node name="LeftLowerLeg" type="Bone2D" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/LeftUpperLeg"] position = Vector2(-1, 13) -scale = Vector2(0.999833, 0.999833) +scale = Vector2(0.999835, 0.999835) rest = Transform2D(1, 0, 0, 1, -1, 13) editor_settings/show_bone_gizmo = false @@ -890,7 +890,7 @@ metadata/_edit_lock_ = true [node name="LeftFoot" type="Bone2D" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/LeftUpperLeg/LeftLowerLeg"] position = Vector2(6, 10) -scale = Vector2(0.99983, 0.99983) +scale = Vector2(0.999829, 0.999829) rest = Transform2D(1, 0, 0, 1, 6, 10) auto_calculate_length_and_angle = false length = 12.0 @@ -906,7 +906,7 @@ metadata/_edit_lock_ = true [node name="Body" type="Bone2D" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt"] use_parent_material = true position = Vector2(1, -2) -scale = Vector2(0.999827, 0.999827) +scale = Vector2(0.999828, 0.999828) rest = Transform2D(1, 0, 0, 1, 1, -2) editor_settings/show_bone_gizmo = false @@ -914,7 +914,7 @@ editor_settings/show_bone_gizmo = false z_index = -1 use_parent_material = true position = Vector2(-14, -23) -scale = Vector2(0.999829, 0.999829) +scale = Vector2(0.999828, 0.999828) rest = Transform2D(1, 0, 0, 1, -14, -23) editor_settings/show_bone_gizmo = false @@ -926,13 +926,13 @@ metadata/_edit_lock_ = true [node name="RightLowerArm" type="Bone2D" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/RightUpperArm"] position = Vector2(-2, 15) -scale = Vector2(0.999828, 0.999828) +scale = Vector2(0.999829, 0.999829) rest = Transform2D(1, 0, 0, 1, -2, 15) editor_settings/show_bone_gizmo = false [node name="RightHand" type="Bone2D" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/RightUpperArm/RightLowerArm"] position = Vector2(-1, 13) -scale = Vector2(0.999828, 0.999828) +scale = Vector2(0.999829, 0.999829) rest = Transform2D(1, 0, 0, 1, -1, 13) auto_calculate_length_and_angle = false length = 8.0 @@ -961,7 +961,8 @@ metadata/_edit_lock_ = true [node name="Tie" type="Bone2D" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body"] visible = false position = Vector2(-9, -21) -skew = -0.000388026 +rotation = 0.136025 +skew = -0.000390291 rest = Transform2D(1, 0, 0, 1, -9, -21) auto_calculate_length_and_angle = false length = 24.0 @@ -976,7 +977,7 @@ metadata/_edit_lock_ = true [node name="Head" type="Bone2D" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body"] position = Vector2(-10, -25) -scale = Vector2(0.999828, 0.999828) +scale = Vector2(0.999826, 0.999826) rest = Transform2D(1, 0, 0, 1, -10, -25) editor_settings/show_bone_gizmo = false @@ -1005,14 +1006,15 @@ offset = Vector2(-2, -2) metadata/_edit_lock_ = true [node name="Left_Eye" type="Sprite2D" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/Head/HeadParticle/Head"] -position = Vector2(-4, -8.99999) +position = Vector2(-4, -9) texture = SubResource("AtlasTexture_kto0i") centered = false offset = Vector2(-2, -2) metadata/_edit_lock_ = true [node name="Jaw" type="Sprite2D" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/Head/HeadParticle/Head"] -position = Vector2(-3, 3) +position = Vector2(-2.94454, 2.85896) +rotation = 0.018693 scale = Vector2(0.999828, 0.999828) texture = SubResource("AtlasTexture_x5uj2") centered = false @@ -1086,7 +1088,8 @@ minTorque = -45.0 maxTorque = 45.0 [node name="Left_Lower_Arm" type="Sprite2D" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/LeftUpperArm/HandProjectile"] -scale = Vector2(0.999998, 0.999998) +rotation = 0.152567 +scale = Vector2(0.999999, 0.999999) texture = SubResource("AtlasTexture_auqeq") centered = false offset = Vector2(-5, 0) @@ -1095,7 +1098,8 @@ metadata/_edit_lock_ = true [node name="Left_Hand" type="Sprite2D" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/LeftUpperArm/HandProjectile/Left_Lower_Arm"] show_behind_parent = true position = Vector2(-0.99983, 12.9978) -scale = Vector2(0.999658, 0.999658) +rotation = -0.0799279 +scale = Vector2(0.99966, 0.99966) texture = SubResource("AtlasTexture_vlvtp") centered = false offset = Vector2(-4, -1) @@ -1111,13 +1115,13 @@ _observedEntity = NodePath("../../../../../../../..") [node name="LeftLowerArm" type="Bone2D" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/LeftUpperArm"] position = Vector2(-2, 14) -scale = Vector2(0.999828, 0.999828) +scale = Vector2(0.999829, 0.999829) rest = Transform2D(1, 0, 0, 1, -2, 14) editor_settings/show_bone_gizmo = false [node name="LeftHand" type="Bone2D" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/LeftUpperArm/LeftLowerArm"] position = Vector2(-1, 13) -scale = Vector2(0.999828, 0.999828) +scale = Vector2(0.99983, 0.99983) rest = Transform2D(1, 0, 0, 1, -1, 13) auto_calculate_length_and_angle = false length = 6.0 @@ -1167,6 +1171,7 @@ entity = NodePath("..") [node name="Mover" type="Node" parent="."] script = ExtResource("4_u5syx") _speed = SubResource("Resource_ckb7n") +_speedControlMult = 0.621417 [node name="ChompPlayer" type="Node" parent="."] script = ExtResource("10_ruqsf") diff --git a/scripts/Entity.cs b/scripts/Entity.cs index 8a7ad0e..24032e6 100644 --- a/scripts/Entity.cs +++ b/scripts/Entity.cs @@ -28,6 +28,7 @@ public partial class Entity : Node2D { EmitSignal(SignalName.OnHPChanged, amount, origin); HP += amount; + if (HP > MaxHP) HP = MaxHP; } public virtual void KillByDamage() diff --git a/scripts/plants/behaviours/AloeBehaviour.cs b/scripts/plants/behaviours/AloeBehaviour.cs index 3186709..574a860 100644 --- a/scripts/plants/behaviours/AloeBehaviour.cs +++ b/scripts/plants/behaviours/AloeBehaviour.cs @@ -36,7 +36,7 @@ public partial class AloeBehaviour : BaseBehaviour var checkPos = GetParent().GlobalPosition + Vector2.Right * Utility.TileWidth; if (PoolContainer.Instance.TryGetEntity(checkPos, out RuntimePlantData plantData)) { - plantData.Heal(3000 + 25 * plantData.MaxHP, GetParent()); + plantData.Heal(1200 + 0.5f * plantData.MaxHP, GetParent()); } } From 7a36b8f905f06a3cee79ab1e6396b4c0630ea835 Mon Sep 17 00:00:00 2001 From: Rendo Date: Sat, 12 Jul 2025 06:55:08 +0500 Subject: [PATCH 20/48] Some improvements --- project.godot | 2 +- scenes/entities/Zombies/bucket_zombie.tscn | 60 ++++++++++-------- scenes/entities/Zombies/cone_zombie.tscn | 68 ++++++++++++++------- scenes/entities/Zombies/zombie.tscn | 36 +++++------ translations/zombies.csv | 22 ++++--- translations/zombies.en.translation | Bin 1774 -> 1842 bytes translations/zombies.ru.translation | Bin 2661 -> 2753 bytes 7 files changed, 109 insertions(+), 79 deletions(-) diff --git a/project.godot b/project.godot index c4737f9..9088033 100644 --- a/project.godot +++ b/project.godot @@ -16,7 +16,7 @@ warnings/check_angle_interpolation_type_conflicting=false [application] config/name="Liberation of the Neighbourville" -config/version="0.1.4" +config/version="0.1.5" run/main_scene="uid://bfstrli64u23y" config/features=PackedStringArray("4.4", "C#", "Forward Plus") config/icon="res://icon.png" diff --git a/scenes/entities/Zombies/bucket_zombie.tscn b/scenes/entities/Zombies/bucket_zombie.tscn index e5e6987..2974f19 100644 --- a/scenes/entities/Zombies/bucket_zombie.tscn +++ b/scenes/entities/Zombies/bucket_zombie.tscn @@ -31,7 +31,7 @@ flat_value = 10.0 percentage_value = 0.0 mult_value = 1.0 -[sub_resource type="Resource" id="Resource_lt6ps"] +[sub_resource type="Resource" id="Resource_v1iwd"] resource_local_to_scene = true script = ExtResource("4_1s2fn") flat_value = 0.2 @@ -55,48 +55,59 @@ use_parent_material = false [node name="RightUpperLeg" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt" index="1"] use_parent_material = false -scale = Vector2(0.999837, 0.999837) +scale = Vector2(0.999834, 0.999834) + +[node name="RightLowerLeg" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/RightUpperLeg" index="1"] +scale = Vector2(0.999833, 0.999833) [node name="RightFoot" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/RightUpperLeg/RightLowerLeg" index="0"] -scale = Vector2(0.999833, 0.999833) +scale = Vector2(0.999835, 0.999835) [node name="LeftUpperLeg" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt" index="2"] use_parent_material = false -scale = Vector2(0.999838, 0.999838) +scale = Vector2(0.999834, 0.999834) [node name="LeftLowerLeg" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/LeftUpperLeg" index="1"] -scale = Vector2(0.999831, 0.999831) +scale = Vector2(0.999834, 0.999834) [node name="LeftFoot" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/LeftUpperLeg/LeftLowerLeg" index="1"] scale = Vector2(0.999831, 0.999831) [node name="Body" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt" index="3"] use_parent_material = false +scale = Vector2(0.999829, 0.999829) [node name="RightUpperArm" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body" index="0"] use_parent_material = false -scale = Vector2(0.99982, 0.99982) [node name="RightLowerArm" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/RightUpperArm" index="1"] -scale = Vector2(0.99983, 0.99983) +scale = Vector2(0.999827, 0.999827) [node name="RightHand" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/RightUpperArm/RightLowerArm" index="0"] -scale = Vector2(0.999823, 0.999823) +scale = Vector2(0.999828, 0.999828) [node name="Tie" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body" index="2"] -rotation = 0.0582635 -skew = -0.000132799 +rotation = 0.0815367 +skew = -0.000141144 [node name="Head" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body" index="3"] -scale = Vector2(0.999833, 0.999833) +scale = Vector2(0.999827, 0.999827) + +[node name="Right_Eye" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/Head/HeadParticle/Head" index="0"] +position = Vector2(-16, -8) +scale = Vector2(1, 1) + +[node name="Left_Eye" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/Head/HeadParticle/Head" index="1"] +position = Vector2(-4, -9) +scale = Vector2(1, 1) [node name="Jaw" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/Head/HeadParticle/Head" index="2"] -position = Vector2(-3.00071, 2.99879) -rotation = 0.00565429 -scale = Vector2(0.999831, 0.999831) +position = Vector2(-3.001, 2.9983) +rotation = 0.00791286 +scale = Vector2(0.999827, 0.999827) [node name="Jaw" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/Head" index="1"] -scale = Vector2(0.999831, 0.999831) +scale = Vector2(0.999827, 0.999827) [node name="Hat" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/Head" index="4"] position = Vector2(-6, -8) @@ -107,22 +118,23 @@ texture = ExtResource("3_0nlp0") degradationStages = Array[Texture]([ExtResource("3_0nlp0"), ExtResource("4_xx7fu"), ExtResource("5_v1iwd")]) [node name="LeftUpperArm" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body" index="4"] -scale = Vector2(0.999831, 0.999831) +scale = Vector2(0.999829, 0.999829) [node name="Left_Lower_Arm" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/LeftUpperArm/HandProjectile" index="0"] -rotation = 0.0547805 -scale = Vector2(1.00001, 1.00001) +rotation = 0.0766625 +scale = Vector2(1, 1) [node name="Left_Hand" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/LeftUpperArm/HandProjectile/Left_Lower_Arm" index="0"] show_behind_parent = false -rotation = -0.0241767 -scale = Vector2(0.999661, 0.999661) +position = Vector2(-0.99983, 12.9978) +rotation = -0.0338341 +scale = Vector2(0.999658, 0.999658) [node name="LeftLowerArm" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/LeftUpperArm" index="2"] -scale = Vector2(0.999835, 0.999835) +scale = Vector2(0.99983, 0.99983) [node name="LeftHand" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/LeftUpperArm/LeftLowerArm" index="0"] -scale = Vector2(0.999831, 0.999831) +scale = Vector2(0.999828, 0.999828) [node name="Left_Hand" type="Sprite2D" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/LeftUpperArm/LeftLowerArm/LeftHand" index="0"] texture = SubResource("AtlasTexture_wfem3") @@ -140,8 +152,8 @@ metadata/_edit_lock_ = true _damage = SubResource("Resource_2bm8y") [node name="Mover" parent="." index="4"] -_speed = SubResource("Resource_lt6ps") -_speedControlMult = 0.187967 +_speed = SubResource("Resource_v1iwd") +_speedControlMult = 0.26305 [node name="Armor" parent="." index="6"] MaxHP = 375.0 diff --git a/scenes/entities/Zombies/cone_zombie.tscn b/scenes/entities/Zombies/cone_zombie.tscn index b1d5324..44b1ead 100644 --- a/scenes/entities/Zombies/cone_zombie.tscn +++ b/scenes/entities/Zombies/cone_zombie.tscn @@ -27,7 +27,7 @@ flat_value = 10.0 percentage_value = 0.0 mult_value = 1.0 -[sub_resource type="Resource" id="Resource_qof5v"] +[sub_resource type="Resource" id="Resource_b6mal"] resource_local_to_scene = true script = ExtResource("4_qof5v") flat_value = 0.2 @@ -41,39 +41,57 @@ _armor = NodePath("Armor") material = SubResource("ShaderMaterial_sat5k") [node name="RightUpperLeg" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt" index="1"] -scale = Vector2(0.999833, 0.999833) +scale = Vector2(0.999836, 0.999836) -[node name="RightFoot" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/RightUpperLeg/RightLowerLeg" index="0"] -scale = Vector2(0.99983, 0.99983) - -[node name="LeftUpperLeg" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt" index="2"] +[node name="RightLowerLeg" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/RightUpperLeg" index="1"] scale = Vector2(0.999835, 0.999835) +[node name="RightFoot" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/RightUpperLeg/RightLowerLeg" index="0"] +scale = Vector2(0.999831, 0.999831) + +[node name="LeftUpperLeg" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt" index="2"] +scale = Vector2(0.999834, 0.999834) + +[node name="LeftLowerLeg" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/LeftUpperLeg" index="1"] +scale = Vector2(0.999836, 0.999836) + [node name="LeftFoot" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/LeftUpperLeg/LeftLowerLeg" index="1"] -scale = Vector2(0.999829, 0.999829) +scale = Vector2(0.999832, 0.999832) [node name="Body" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt" index="3"] -scale = Vector2(0.999828, 0.999828) +scale = Vector2(0.999829, 0.999829) [node name="RightUpperArm" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body" index="0"] -scale = Vector2(0.999828, 0.999828) +scale = Vector2(0.999825, 0.999825) [node name="RightLowerArm" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/RightUpperArm" index="1"] -scale = Vector2(0.999827, 0.999827) +scale = Vector2(0.999825, 0.999825) + +[node name="RightHand" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/RightUpperArm/RightLowerArm" index="0"] +scale = Vector2(0.999829, 0.999829) [node name="Tie" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body" index="2"] -rotation = -0.0474381 -skew = -9.50098e-05 +rotation = -0.109484 +skew = -9.78708e-05 [node name="Head" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body" index="3"] -scale = Vector2(0.999827, 0.999827) +scale = Vector2(0.999829, 0.999829) + +[node name="Right_Eye" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/Head/HeadParticle/Head" index="0"] +position = Vector2(-16, -8) +scale = Vector2(1, 1) [node name="Left_Eye" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/Head/HeadParticle/Head" index="1"] position = Vector2(-4, -9) +scale = Vector2(1, 1) [node name="Jaw" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/Head/HeadParticle/Head" index="2"] -position = Vector2(-2.94109, 2.85781) -rotation = -0.0331358 +position = Vector2(-2.73308, 2.35578) +rotation = -0.0509399 +scale = Vector2(0.999827, 0.999827) + +[node name="Jaw" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/Head" index="1"] +scale = Vector2(0.999827, 0.999827) [node name="Hat" type="RigidBody2D" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/Head" index="4" node_paths=PackedStringArray("data")] position = Vector2(-2.5, -13.5) @@ -102,26 +120,30 @@ thresholdPercentage = Array[float]([1.0, 0.667, 0.333]) position = Vector2(1, -6) shape = SubResource("CircleShape2D_67t4t") +[node name="LeftUpperArm" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body" index="4"] +scale = Vector2(0.999829, 0.999829) + [node name="Left_Lower_Arm" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/LeftUpperArm/HandProjectile" index="0"] -rotation = -0.0502802 -scale = Vector2(1, 1) +rotation = -0.0477755 +scale = Vector2(0.999998, 0.999998) [node name="Left_Hand" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/LeftUpperArm/HandProjectile/Left_Lower_Arm" index="0"] -rotation = -0.0414459 -scale = Vector2(0.999655, 0.999655) +position = Vector2(-0.99983, 12.9978) +rotation = -0.135402 +scale = Vector2(0.999661, 0.999661) [node name="LeftLowerArm" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/LeftUpperArm" index="2"] -scale = Vector2(0.99983, 0.99983) +scale = Vector2(0.999828, 0.999828) [node name="LeftHand" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/LeftUpperArm/LeftLowerArm" index="0"] -scale = Vector2(0.999825, 0.999825) +scale = Vector2(0.999831, 0.999831) [node name="Eatbox" parent="." index="2"] _damage = SubResource("Resource_w70im") [node name="Mover" parent="." index="4"] -_speed = SubResource("Resource_qof5v") -_speedControlMult = 0.339097 +_speed = SubResource("Resource_b6mal") +_speedControlMult = 1.05271 [node name="Armor" type="Node" parent="." index="6"] script = ExtResource("3_5s7in") diff --git a/scenes/entities/Zombies/zombie.tscn b/scenes/entities/Zombies/zombie.tscn index d9b6498..f464380 100644 --- a/scenes/entities/Zombies/zombie.tscn +++ b/scenes/entities/Zombies/zombie.tscn @@ -769,7 +769,7 @@ size = Vector2(16, 48) [sub_resource type="AnimationNodeTimeScale" id="AnimationNodeTimeScale_2q05d"] [sub_resource type="AnimationNodeBlendTree" id="AnimationNodeBlendTree_ccrjo"] -graph_offset = Vector2(-606, 210) +graph_offset = Vector2(-437.603, 39.6198) nodes/TimeScale/node = SubResource("AnimationNodeTimeScale_2q05d") nodes/TimeScale/position = Vector2(60, 120) nodes/Tree/node = ExtResource("8_ckb7n") @@ -779,7 +779,7 @@ node_connections = [&"TimeScale", 0, &"Tree", &"output", 0, &"TimeScale"] [sub_resource type="Resource" id="Resource_ckb7n"] resource_local_to_scene = true script = ExtResource("7_b3p4o") -flat_value = 0.4 +flat_value = 0.2 percentage_value = 0.0 mult_value = 1.0 @@ -825,7 +825,7 @@ metadata/_edit_lock_ = true [node name="RightUpperLeg" type="Bone2D" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt"] use_parent_material = true position = Vector2(-6, 3) -scale = Vector2(0.999834, 0.999834) +scale = Vector2(0.999833, 0.999833) rest = Transform2D(1, 0, 0, 1, -6, 3) editor_settings/show_bone_gizmo = false @@ -837,7 +837,7 @@ metadata/_edit_lock_ = true [node name="RightLowerLeg" type="Bone2D" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/RightUpperLeg"] position = Vector2(-2, 12) -scale = Vector2(0.999834, 0.999834) +scale = Vector2(0.999832, 0.999832) rest = Transform2D(1, 0, 0, 1, -2, 12) editor_settings/show_bone_gizmo = false @@ -866,7 +866,7 @@ metadata/_edit_lock_ = true [node name="LeftUpperLeg" type="Bone2D" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt"] use_parent_material = true position = Vector2(6, 4) -scale = Vector2(0.999835, 0.999835) +scale = Vector2(0.999836, 0.999836) rest = Transform2D(1, 0, 0, 1, 6, 4) editor_settings/show_bone_gizmo = false @@ -906,7 +906,7 @@ metadata/_edit_lock_ = true [node name="Body" type="Bone2D" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt"] use_parent_material = true position = Vector2(1, -2) -scale = Vector2(0.999828, 0.999828) +scale = Vector2(0.99983, 0.99983) rest = Transform2D(1, 0, 0, 1, 1, -2) editor_settings/show_bone_gizmo = false @@ -926,7 +926,7 @@ metadata/_edit_lock_ = true [node name="RightLowerArm" type="Bone2D" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/RightUpperArm"] position = Vector2(-2, 15) -scale = Vector2(0.999829, 0.999829) +scale = Vector2(0.999828, 0.999828) rest = Transform2D(1, 0, 0, 1, -2, 15) editor_settings/show_bone_gizmo = false @@ -960,9 +960,7 @@ metadata/_edit_lock_ = true [node name="Tie" type="Bone2D" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body"] visible = false -position = Vector2(-9, -21) -rotation = 0.136025 -skew = -0.000390291 +skew = -0.000391841 rest = Transform2D(1, 0, 0, 1, -9, -21) auto_calculate_length_and_angle = false length = 24.0 @@ -977,7 +975,7 @@ metadata/_edit_lock_ = true [node name="Head" type="Bone2D" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body"] position = Vector2(-10, -25) -scale = Vector2(0.999826, 0.999826) +scale = Vector2(0.999828, 0.999828) rest = Transform2D(1, 0, 0, 1, -10, -25) editor_settings/show_bone_gizmo = false @@ -1013,8 +1011,7 @@ offset = Vector2(-2, -2) metadata/_edit_lock_ = true [node name="Jaw" type="Sprite2D" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/Head/HeadParticle/Head"] -position = Vector2(-2.94454, 2.85896) -rotation = 0.018693 +position = Vector2(-3, 3) scale = Vector2(0.999828, 0.999828) texture = SubResource("AtlasTexture_x5uj2") centered = false @@ -1066,7 +1063,7 @@ remote_path = NodePath("../../HeadParticle/Head/Left_Eye") [node name="LeftUpperArm" type="Bone2D" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body"] position = Vector2(-1, -20) -scale = Vector2(0.999828, 0.999828) +scale = Vector2(0.999826, 0.999826) rest = Transform2D(1, 0, 0, 1, -1, -20) editor_settings/show_bone_gizmo = false @@ -1088,8 +1085,7 @@ minTorque = -45.0 maxTorque = 45.0 [node name="Left_Lower_Arm" type="Sprite2D" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/LeftUpperArm/HandProjectile"] -rotation = 0.152567 -scale = Vector2(0.999999, 0.999999) +scale = Vector2(0.999997, 0.999997) texture = SubResource("AtlasTexture_auqeq") centered = false offset = Vector2(-5, 0) @@ -1098,8 +1094,7 @@ metadata/_edit_lock_ = true [node name="Left_Hand" type="Sprite2D" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/LeftUpperArm/HandProjectile/Left_Lower_Arm"] show_behind_parent = true position = Vector2(-0.99983, 12.9978) -rotation = -0.0799279 -scale = Vector2(0.99966, 0.99966) +scale = Vector2(0.999658, 0.999658) texture = SubResource("AtlasTexture_vlvtp") centered = false offset = Vector2(-4, -1) @@ -1115,13 +1110,13 @@ _observedEntity = NodePath("../../../../../../../..") [node name="LeftLowerArm" type="Bone2D" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/LeftUpperArm"] position = Vector2(-2, 14) -scale = Vector2(0.999829, 0.999829) +scale = Vector2(0.999827, 0.999827) rest = Transform2D(1, 0, 0, 1, -2, 14) editor_settings/show_bone_gizmo = false [node name="LeftHand" type="Bone2D" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/LeftUpperArm/LeftLowerArm"] position = Vector2(-1, 13) -scale = Vector2(0.99983, 0.99983) +scale = Vector2(0.999828, 0.999828) rest = Transform2D(1, 0, 0, 1, -1, 13) auto_calculate_length_and_angle = false length = 6.0 @@ -1171,7 +1166,6 @@ entity = NodePath("..") [node name="Mover" type="Node" parent="."] script = ExtResource("4_u5syx") _speed = SubResource("Resource_ckb7n") -_speedControlMult = 0.621417 [node name="ChompPlayer" type="Node" parent="."] script = ExtResource("10_ruqsf") diff --git a/translations/zombies.csv b/translations/zombies.csv index 0e3d7eb..f2fe452 100644 --- a/translations/zombies.csv +++ b/translations/zombies.csv @@ -3,35 +3,35 @@ basic,Basic zombie,Обычный зомби basic_desc,"The most basic zombie that Zomboss has. Health points: [color=darkred]7 peas[/color]. Walk speed: [color=darkred]0.2 tiles/second[/color]. -Attack speed: [color=darkred]1 Hz[/color]. +Attack speed: [color=darkred]2.67 Hz[/color]. Attack damage: [color=darkred]1 bite[/color]. ","Самый обычный зомби, который есть у Зомбосса. Очки здоровья: [color=darkred]7 горошин[/color]. Скорость ходьбы: [color=darkred]0.2 клеток/сек[/color]. -Скорость атаки: [color=darkred]1 Гц[/color]. +Скорость атаки: [color=darkred]2.67 Гц[/color]. Урон от атаки: [color=darkred]1 укус[/color]." buckethead,Buckethead,Ведроголовый buckethead_desc,"Wears metal to protect his remaining brains. Equivalent of ~7 zombies. Health points: [color=darkred]7 peas[/color]. Armour points: [color=darkred]39 peas[/color]. Walk speed: [color=darkred]0.2 tiles/second[/color]. -Attack speed: [color=darkred]1 Hz[/color]. +Attack speed: [color=darkred]2.67 Hz[/color]. Attack damage: [color=darkred]1 bite[/color]. ","Носит ведро чтобы защитить остатки мозгов. Равен примерно 7 зомби. Очки здоровья: [color=darkred]7 горошин[/color]. Очки брони: [color=darkred]39 горошин[/color]. Скорость ходьбы: [color=darkred]0.2 клеток/сек/color]. -Скорость атаки: [color=darkred]1 Гц[/color]. +Скорость атаки: [color=darkred]2.67 Гц[/color]. Урон от атаки: [color=darkred]1 укус[/color]." conehead,Conehead,Конусоголовый conehead_desc,"Armoured version of basic zombie. Equivalent of ~3 zombies. Health points: [color=darkred]7 peas[/color]. Armour points: [color=darkred]13 peas[/color]. Walk speed: [color=darkred]0.2 tiles/second[/color]. -Attack speed: [color=darkred]1 Hz[/color]. +Attack speed: [color=darkred]2.67 Hz[/color]. Attack damage: [color=darkred]1 bite[/color]. ","Бронированная версия базового зомби. Равен примерно трём зомби. Очки здоровья: [color=darkred]7 горошин[/color]. Очки брони: [color=darkred]13 горошин[/color]. Скорость ходьбы: [color=darkred]0.2 клеток/сек[/color]. -Скорость атаки: [color=darkred]1 Гц[/color]. +Скорость атаки: [color=darkred]2.67 Гц[/color]. Урон от атаки: [color=darkred]1 укус[/color]." hobo,Trash can zombie,Зомби в мусорке hobo_desc,"Some time in the past he met a great conqueror. Hates to live without his can. Equivalent of ~8 zombies. @@ -40,12 +40,14 @@ Health points: [color=darkred]13 peas[/color]. Armour points: [color=darkred]39 peas[/color]. Walk speed: [color=darkred]0.2 tiles/second[/color]. Run speed: [color=darkred]0.6 tiles/second[/color]. -Attack speed: [color=darkred]1 Hz[/color]. +Attack speed when calm: [color=darkred]1 Hz[/color]. +Attack speed when enraged: [color=darkred]8 Hz[/color]. Attack damage: [color=darkred]1 bite[/color]. ","Однажды повстречал великого полководца. Ненавидит жить без своего ведра. Равен примерно 8 зомби. -[color=darkgreen]Имеет иммунитет к эффектам как у чеснока. [/color] +[color=darkgreen]Имеет иммунитет к эффекту чеснока. [/color] Очки здоровья: [color=darkred]13 горошин[/color]. -Armour points: [color=darkred]39 горошин[/color]. +Очки брони: [color=darkred]39 горошин[/color]. Скорость ходьбы: [color=darkred]0.2 клеток/сек[/color]. Скорость бега: [color=darkred]0.6 клеток/сек[/color]. -Скорость атаки: [color=darkred]1 Гц[/color]. +Скорость атаки в покое: [color=darkred]1 Гц[/color]. +Скорость атаки в гневе: [color=darkred]8 Гц[/color]. Урон от атаки: [color=darkred]1 укус[/color]. " diff --git a/translations/zombies.en.translation b/translations/zombies.en.translation index 184a456f6e977008ec1eb78bc7d4b4acbb2cb5de..88a36796965221e00126181332e6dad5e7e30ed7 100644 GIT binary patch delta 221 zcmaFIyNPeZJVr*L$@3ZY1z$2SFbFd;FjxbzlGWeSe3 asG r%f!P7Vod(aq(9k<uJNqZ`N diff --git a/translations/zombies.ru.translation b/translations/zombies.ru.translation index 61893824cd4210f18a32ee78f92dc5b479c5af91..60fd75b0d0868bb4ce2f2bdf655b718faeb7d1f6 100644 GIT binary patch delta 246 zcmaDVa!_=`T1H0e$?F*P1*bAHFdTvY#k|wWVv779`xsy-f!X||a`!DRfunUN{PTt5Y zJeh}!ck(M1p~>$#xfHG3tO!eqLcG;@{4R!5{t5nQd43rCUbK|0RW?f BM_m8_ delta 205 zcmX>o`c!1YT1H00$?F*P1t&2wFdT+rC9A)uLnpsu6b~z4W?(o76a`@*0^`;zIkWs& z85q_vK`@X4i(ik({U8No#{(6D@Y)0qnY#=C(CdNZl240 z8p5b$g)k=1WwzZslbxH9=fZ{ydlWA00#dsaCNJSg;&m*_%`YudD9F#uD=D5V$@ye* O1+yT~6#mJjTs{EOCpNzT From 2e48e53c1e7458d96b505aeb49ffd7c0b623d21c Mon Sep 17 00:00:00 2001 From: Rendo Date: Sat, 12 Jul 2025 07:05:36 +0500 Subject: [PATCH 21/48] Almanach :+1: --- assets/sprites/field.png | Bin 0 -> 8256 bytes assets/sprites/field.png.import | 34 +++++++++++++++ resources/plants/Aloe.tres | 15 +------ scenes/entities/Zombies/bucket_zombie.tscn | 18 -------- scenes/entities/Zombies/cone_zombie.tscn | 12 ------ scenes/entities/Zombies/hobo.tscn | 42 ++++++++----------- scenes/gui/almanach.tscn | 22 ++++++---- scenes/gui/choose_your_seeds.tscn | 3 +- scripts/gui/choose_your_seeds/Previewport.cs | 7 ++-- 9 files changed, 74 insertions(+), 79 deletions(-) create mode 100644 assets/sprites/field.png create mode 100644 assets/sprites/field.png.import diff --git a/assets/sprites/field.png b/assets/sprites/field.png new file mode 100644 index 0000000000000000000000000000000000000000..83a8e0bd5d8ddb9ecfa0a815ea15b8fcb0ca977a GIT binary patch literal 8256 zcmX|HdpuMB|F6g;*HO%Eh*r^LnERBuB_?tyn@dK*6mm%;%Kfq-y13<9n!DweSaPSx zFvG{KPvkb22#dn^_&k1(-yi4U@i;p>d%s_o=kxh`zQtQwnDCttKXK&95kAu^hS!fA zIob+b7q~cpJC=6U^}wH_{?|=VM=HKbE*?1|y=!WyZxfuo@`{oq+4D5UpZ!>>zvg4Q zBJCy~W`7!;!QNgdXTU>kc~S(?hp6;@9Qjw)=lW zECWqZce^oe7c&3OE*yyn$DJ=>|N3KFH0kJYYo@4}SMDg69Iq0JcXBIFz!8hK+UoYR zp78-0zZWbrZr}_z)KK>^na|rk_bT{|-I}zhnF3~6d zfaSWi>?Ly2Z#bo=FpHtg%Y!q+4+Lz)pGAQ<^x5!j*1t}RbzV^SKPznfo~zC{nZsGw z>y;5ws=wNK|7UTSHz5k76j5G9W~*<19WN_tfF4e{ui$#718D&M_w?uq#hU{6Nl#tZ z^c&}l69O-~L?zx*Qc)=S*G%utbG}G$Be(S>I`B)PkrSFV!@Cy@(L`f&JM9}@Vlt79)5_S>OR81p9zK_c^a*g6J=gYm;_S9cR9l5o64n7C- zpjvIK!nR@eAk=_R1EeF^weSx4A234J%Y`l*En=2G1{yqmdU`;kHQn0Ru?%6DWnUA_ z%7dc_)t1-n@4EEHbM0ip;B#Ugs)-_N5H;f~T_5D+T?Y$84@CQJnrpM;3*ab>f4%ao zrLciF%md+$v_^IO(=RT^%aD&5#n3p!U{n1^XI>SG%c;fTy7N2Jg~h&OF&^t*FY6k; zYIp8<4M(vRwSG?VKixIe=AmGNN(|(Zb6}sLp$C>*#FV!=w9ejNMgsY4@c?gTFRYJP zUh5hQkV#v+SMMog3{=4T86Q~O2xs4xK`)G@2Hyr9CPJ}HKG^3qTDU-j?zqfrgCriN zlJaSRt+$B#(HWniNUnx3W8mJg^%`42hsaR(7WJt3ott-Tz%GITGW;cwSq=T62k&5U z+UeXt{U+RfY?Z%sYmZ;I1Y+vD(i}bahfBE0s+$ClC^Jo6LJi4h<)e8b`1=obv#uTN z?(N?I@62b@*RSOt-jA#r zg7sCpZM|m+>9l@3ol*?pyin^gGT<5d1mKpDKnXW3{MEWV z+#b9e%U}BfL#qTqgO?HFa<3C{SeK`iOqquik4B3tj0kZS7mxi0ZG)jDmZb95Dw7>U+CUeiKwW*HF=Os$5NF&L)kILVWd3Kp5fxNcZz-1V!g6_1#u-@k^)kJ%v%t)Q!e7#8EPNAeVExQZDvmH( zQ}vT~*Dg|IQ@na1#Y#-J;k|dXQ78F$gGK}bz7;=5_efQ1EPgL^Q+Q_4szl_B;?nxx z%4XB^Z#K6?re-o16Z^ejPX^Eck+0STISdG=p5Gmm%tYA_XJG#MkG5BVS^iaE{L5@+$& z?016^`MD58{s+98sYHzV0*L)?fd)gr9)Jv4yCx>6O+%BjF6$2fcS0S83qsj!<9#aJ zA1z;ZP8zsI(TypmY^v0)eDM0&_F~pBPolDZw5&!euOT`P-hWx|l@UqjR-Ot9SDn(V zKapV1S<;hsO-`J$75AB|n3S5BARhkdv4eA6OIE_gN+^od7z^BwHX=S0nK>ed+P^Tx ztF@h}TT0flnpp+qUZ@tdGkEQZ8m!fBgNs&62j*)p;jEw_aAY{B?R{hzsweW@CKC0a2lw9`@&tz~bBHFyBW^>KX2Hm8qroKQCtG=)lX67gqeO$3-q3C9VM9l6omO^W z!%0*l@W02vS=rw5>aeTi2C)ZGogd!<{Owvu%U>-6qK)e7^AO(*U08of*26!$V16%P zDX%0S?-EN+HWl5Cy>~VPk}2g9al*ROoY>46sF9urrErFXv3KV-xfuef%u+RP{3Oyo zarmlbkZOLHIG|NNu*r7n@;vmzMKvuHbW)FNU9`>xN)AYJr>@xr3r0jJIzhZ%%sLm~ zopZeKIeW4WN|jD1>_kRPNzabrfpDKJ^5($(m5b9sZB%&j;GJwds4jDd4EM3#!YwXx zgly31z0tA-G@X~pl@86&p6L=7b)Eu>92HER-VeQ zB;VpwGX@(xK*kwpczK}9-Ujw)We@dh}6H2rnl zsm6>C;5RoXg_~d5QCVS(KYI%lYIE+Rij3g%WrO2|Gxc|%Q%%7K!zEpiC%+i&+%gpVgx0o+ejrY)^5Fbk}R)$!5sFxI0bVL zkwxs5?CM;emJzc zE2yX{1X1&k;614{7***m6x&4=WxW~G=?$s%P0CrKcII?+J8IsB+elYtWa77OGUu_X zHN%zIImE7`B5P^}OH7(3HaOqk4^wGnNcX?rIp4C$anPG^cN<~SuOqI6Z3_*ubv`I# zNrrI#T&8H^M3t@SRM%<3G6VnS>hx59UDBV1Ebr~Wx|rFV8Oqt!4Dkxj4z1E3=XaNT z<|}%|C$w-mqes)1Y+2e0y$12$Ne=BQs)m*hvn@3eMHUfL%U! zv@fiF8m2H#q7(h6_8Nr%thX1$Sc7{?v85u6rU)kPgB8^NL6jPAv|CHnhZTK93(Zx^ zeQMR%uwKsmQ)iEkAZ9|&dk37i!hc&D4X^&6Pc8DXGpLOQuKE9R1u5^15-IUVG?mA}Qw+)n#y|@aRYMqR&BA z&fDqNmCe8B7E*#-1`B|;7Auhb=bn+pH>nEK$Xiw)|BelS*iU6z7oKT9Dp{sa|4K+# zd-(U?yH}?#S)AWnnrU`PuQ>K)*0NO z^5UAW03$kBBQS>1?_P%SAXY^&e%3X9U!X1Bc|oSgcof20CuZB-&rW?)WgE8i)^;Nk zEN7-7GDROUwrLZHtAL(Nd?4cGL_d1_&ELE`JoKq^@I}903qO917e;D|ZhlueCE}Q9 z?r~oi%I6iA3ErY*i=%%^93%U&WbjYf*E#V9YM+SfIULVH94%TDL`W6?Y`vM7Xq>j( zYmplfT~iU+$t!7L-8(7F?wED!s?-6lVsO?Zw9Ai6sjVs>U2I6f z7jweTGKs@L$fz*J_X2_GTYTP$sl4#Br6Pwq+aS65_}IiK!m! zlt)3Cf*cSBaex}*TN*_=hlc5)WIrE$MDWa5G$6ZiqnXjXjy$DeLir=td4Q)n^1G%_ z$K3GcFOyc+UlG_K#RCG`Ll~+lGQOC*kX&0eEGk6;8CxBn2ju%~C{ai79mG^HoCFLT zBq8>eOB6n*-KK&r=R=hg$j+2Xut6S*H?9Va?&>-~yDy?~ie>C0z(gWIAPvma-_o@$ zhog2Y5+p--W=i0iG33Iny#8@u!BF3}^b;jfnKwcohX`)=_`lHh0hCpWZjJfz+buz) zvYrom-ZVC%v_=m@HXNo#~+T0_!r=$eV}W>g{Pn#_*R8v|kbqAURU=LQ3oE;H|jo%JH7IM|3`{myt;%vSRt zyLZ5Z#^d(F5FH$y^_?fFGJwd_XYy1bY3T}c=d;>n4!Y$|UIJkL|kb-V9 zp^s_Pm|yHn#N~)XdQAO$A^^}8m_+!ylmeBQ%K5UKyl`_X4x$Aa!nHs9f*jmoZ3sh+ zbJgJ=#_|I>F?&tr(|t{==2qE+GOXVwZuE2bT&?lWkLg;-$gaKAwKX4%cFl&^9;>&R zIWpSjxO;oE{^e5J?nAQ`487JFPh|zyIlUD%sBFgg_0D2OXmS3M2Ug*mIpLd`*j%z| zCYIVY(iMh}>7CG2FI`8djT$`Uz30?)u%x~MroBBmzWk{yQerQ(PAjS4hGBJdb71Jw zyyPNnsEpMJBlO!IJo2GXPGR?0ST>jKoi(peIaob0OmTmTSr;I+SH^M(aXvU_QT&I| zZ(NkA?f-gO>| z`afosxfO46teCfye|iz5M$q{}2Zv!3l6$WGcShzgDq+K7rR^%@)yvale zf0~GDL;oN~GyC1cD}1EuZP=yX%e2q=GLsMUPQo&bFPetINM})hP>;*oQd(3SO=RI5heLvLWD9vV3mlNl1-W( z;beKW+`1cRK~>dY|I-HQ!dPG;_?fYQgmJtRF+_W#bG~Vbi9##cb2k7K0kGUuhIc@X z;06P*P}H_Fdm&}3YB=pP7rK=ui`Q3MgAug`WbvpZYBW$)fM@r_|8&-Gt`Z3Sy-5n5 z2(3ne_g}?m)t`sH&G)Dn~k(MgflMTnPiQ%r!-2=|o~)yZX@Zt4r|4K(Z}fq(JRt8cca1D=CR zSw+MxiGO6Or!J&@Q%#f%0lr*Zs;F25<&H4BOx-r!4}K36mAtc@T19XV8aGrBlP=xR zd^aVe5g-NOn=(tEX;(cc(EKmrU{QGmxz{J$CP1CVOSR{iiUHga(uFE0uSn||2Yz%LjM3LOds1m?@FhW=*5i4IR$d#}RpJLr zINh2DM*_J{p>9XnbnBc|?8IjSU1zyf)u#x6Z=XB|odCGithnbiS777;rZL~NO^cf< zF&g?3%=lf#d0elYjm8(j8%=dU?=L=uF9F7j=~j1?Qdi+Wpi~|Ou8O09zV`jfK=%Wq z>C*Wa`Fr(xF^B zlp*d^c(97_KVPwuH$3a`k_gt$(bg7Fq*T3w~a&n#Z zgz@toPLo({0{bfs!dpSeBA4M19?Z}S-I;V^Qkp%QRcNi+1cf!4Q__E)8dk3DL*0Ipql5k$<1|fgRvaTtJ+|1hLk^_ zW-zC82|Et!z}W|K#L0hU?&C=g*!2a9qzE$AFwHvXiDE$mo^A;Y$0-uyacBVpy%!Co zaFl`7aptYkvsgV2UT7*a!O0o0QBT?mvg`Xk0sw`5el}wny%poYtCgO&cFYWrf`T2u zc}g0jGEe%RB`UeO^M!yI3B-Zd_qk8_i-?(gCd(-dJ(P^Va|SUvJji{K&TMj&2tFU) zDx-O}PAXqk+JHa9KYX;S7M|?|_yqZ;C)om!-3BGmFln~Ki9fBAi?20BqOdbBRyJ0M z@Mvr^FI+s)RDc8$S3dRP=tfFOer|%93a~9CJ!nR=6ZuyosekyJIp#6M(60Uww3c z8Q~JeDXiG~?H@r-FmR4ka4>TDKhrNq{LPZfn@~0l$`siTOYsB(ehbD+!m0dH5yd(A zrS)S*Yq;ce!MiXzl2=Qtw<)G1G0^17aGNo3_y(9*Nr6|a@O@-XTOO~8Lz417iR;bf zDRRH)pFb=K96FTgI4A%|0N2Af+|)WT=^V<`kLDP87rg-B*?XJvcz(dRmGmNNS>;bl zTu!2P91h(+$^7551tli!Y`9AdNLDY|8G!3*8%s15=t}}L?+)RpR;;*nT6*59VH`Y* zvIsCliL%zc@jtH@itZsv9({^js}TU)r}HYiss{1YNafcibti%fA;9nzZ==rMpoJOT zfL~q_z`~yLO_Afja-qMoccG+gJb@o+zUvVb zW#hdjeF2U*@rs5+c4v-SP?&(j#@`@o49GKv?9v_dXOI5MHirL0yPuqWn=b`~n3XP5^%FQHjZkZ)z|hHFup(h-_|AQ700hoA&PsEsaX~Xy5bQ zKKjZ|+LmInPea$o>~6Ljnerj`#j&L0T`o+%=b-Byvf*dU1ePXm)8F689|le!spuA%MZEl!h~aznWeHLqFURK15TAcM;Gg6ON4-b P2{>YEWMNo=x)t$1St`q2 literal 0 HcmV?d00001 diff --git a/assets/sprites/field.png.import b/assets/sprites/field.png.import new file mode 100644 index 0000000..9245ce8 --- /dev/null +++ b/assets/sprites/field.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://ksxucobpgv7n" +path="res://.godot/imported/field.png-8fc12d6ddb4478900fc9b327337caa43.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/sprites/field.png" +dest_files=["res://.godot/imported/field.png-8fc12d6ddb4478900fc9b327337caa43.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/resources/plants/Aloe.tres b/resources/plants/Aloe.tres index 55f342e..08652d7 100644 --- a/resources/plants/Aloe.tres +++ b/resources/plants/Aloe.tres @@ -1,20 +1,8 @@ -[gd_resource type="Resource" script_class="PlantResource" load_steps=9 format=3 uid="uid://bf7vjtufjc8kt"] +[gd_resource type="Resource" script_class="PlantResource" load_steps=4 format=3 uid="uid://bf7vjtufjc8kt"] [ext_resource type="Texture2D" uid="uid://d4btl7vqi4v0q" path="res://assets/sprites/plants/aloe.tres" id="1_t4137"] [ext_resource type="Script" uid="uid://cyenlko1knygw" path="res://scripts/resources/PlantResource.cs" id="1_vw2kg"] [ext_resource type="PackedScene" uid="uid://bw1w8jp0yeypy" path="res://scenes/entities/plants/aloe.tscn" id="2_6a4ia"] -[ext_resource type="Texture2D" uid="uid://c35dr3hiy66k0" path="res://assets/sprites/gui/ChooseYourSeeds/PremiumFrameField.tres" id="3_2s3af"] -[ext_resource type="Texture2D" uid="uid://31jc2e7dijas" path="res://assets/sprites/gui/PremiumPlantCard.tres" id="3_vfv8g"] -[ext_resource type="Script" uid="uid://3m7xks3xq3hl" path="res://scripts/gui/seedpackets/CustomSeedpacketFrame.cs" id="4_d5nqg"] - -[sub_resource type="LabelSettings" id="LabelSettings_2s3af"] - -[sub_resource type="Resource" id="Resource_5me4i"] -script = ExtResource("4_d5nqg") -frame = ExtResource("3_vfv8g") -font = SubResource("LabelSettings_2s3af") -almanachField = ExtResource("3_2s3af") -metadata/_custom_type_script = "uid://3m7xks3xq3hl" [resource] script = ExtResource("1_vw2kg") @@ -25,5 +13,4 @@ Scene = ExtResource("2_6a4ia") ReloadTime = 15.0 ReloadProgress = 0.0 Preview = ExtResource("1_t4137") -customFrame = SubResource("Resource_5me4i") Layer = 1 diff --git a/scenes/entities/Zombies/bucket_zombie.tscn b/scenes/entities/Zombies/bucket_zombie.tscn index 2974f19..753de64 100644 --- a/scenes/entities/Zombies/bucket_zombie.tscn +++ b/scenes/entities/Zombies/bucket_zombie.tscn @@ -65,7 +65,6 @@ scale = Vector2(0.999835, 0.999835) [node name="LeftUpperLeg" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt" index="2"] use_parent_material = false -scale = Vector2(0.999834, 0.999834) [node name="LeftLowerLeg" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/LeftUpperLeg" index="1"] scale = Vector2(0.999834, 0.999834) @@ -75,7 +74,6 @@ scale = Vector2(0.999831, 0.999831) [node name="Body" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt" index="3"] use_parent_material = false -scale = Vector2(0.999829, 0.999829) [node name="RightUpperArm" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body" index="0"] use_parent_material = false @@ -93,21 +91,9 @@ skew = -0.000141144 [node name="Head" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body" index="3"] scale = Vector2(0.999827, 0.999827) -[node name="Right_Eye" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/Head/HeadParticle/Head" index="0"] -position = Vector2(-16, -8) -scale = Vector2(1, 1) - -[node name="Left_Eye" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/Head/HeadParticle/Head" index="1"] -position = Vector2(-4, -9) -scale = Vector2(1, 1) - [node name="Jaw" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/Head/HeadParticle/Head" index="2"] position = Vector2(-3.001, 2.9983) rotation = 0.00791286 -scale = Vector2(0.999827, 0.999827) - -[node name="Jaw" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/Head" index="1"] -scale = Vector2(0.999827, 0.999827) [node name="Hat" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/Head" index="4"] position = Vector2(-6, -8) @@ -117,16 +103,12 @@ position = Vector2(0.994479, -10.0058) texture = ExtResource("3_0nlp0") degradationStages = Array[Texture]([ExtResource("3_0nlp0"), ExtResource("4_xx7fu"), ExtResource("5_v1iwd")]) -[node name="LeftUpperArm" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body" index="4"] -scale = Vector2(0.999829, 0.999829) - [node name="Left_Lower_Arm" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/LeftUpperArm/HandProjectile" index="0"] rotation = 0.0766625 scale = Vector2(1, 1) [node name="Left_Hand" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/LeftUpperArm/HandProjectile/Left_Lower_Arm" index="0"] show_behind_parent = false -position = Vector2(-0.99983, 12.9978) rotation = -0.0338341 scale = Vector2(0.999658, 0.999658) diff --git a/scenes/entities/Zombies/cone_zombie.tscn b/scenes/entities/Zombies/cone_zombie.tscn index 44b1ead..605f830 100644 --- a/scenes/entities/Zombies/cone_zombie.tscn +++ b/scenes/entities/Zombies/cone_zombie.tscn @@ -67,9 +67,6 @@ scale = Vector2(0.999825, 0.999825) [node name="RightLowerArm" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/RightUpperArm" index="1"] scale = Vector2(0.999825, 0.999825) -[node name="RightHand" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/RightUpperArm/RightLowerArm" index="0"] -scale = Vector2(0.999829, 0.999829) - [node name="Tie" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body" index="2"] rotation = -0.109484 skew = -9.78708e-05 @@ -77,14 +74,6 @@ skew = -9.78708e-05 [node name="Head" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body" index="3"] scale = Vector2(0.999829, 0.999829) -[node name="Right_Eye" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/Head/HeadParticle/Head" index="0"] -position = Vector2(-16, -8) -scale = Vector2(1, 1) - -[node name="Left_Eye" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/Head/HeadParticle/Head" index="1"] -position = Vector2(-4, -9) -scale = Vector2(1, 1) - [node name="Jaw" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/Head/HeadParticle/Head" index="2"] position = Vector2(-2.73308, 2.35578) rotation = -0.0509399 @@ -128,7 +117,6 @@ rotation = -0.0477755 scale = Vector2(0.999998, 0.999998) [node name="Left_Hand" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/LeftUpperArm/HandProjectile/Left_Lower_Arm" index="0"] -position = Vector2(-0.99983, 12.9978) rotation = -0.135402 scale = Vector2(0.999661, 0.999661) diff --git a/scenes/entities/Zombies/hobo.tscn b/scenes/entities/Zombies/hobo.tscn index 283cf4c..5b74f13 100644 --- a/scenes/entities/Zombies/hobo.tscn +++ b/scenes/entities/Zombies/hobo.tscn @@ -1,8 +1,7 @@ -[gd_scene load_steps=62 format=3 uid="uid://bgqmwsb6ynm81"] +[gd_scene load_steps=61 format=3 uid="uid://bgqmwsb6ynm81"] [ext_resource type="PackedScene" uid="uid://co11v3w8hbwgf" path="res://scenes/entities/Zombies/zombie.tscn" id="1_fnu7s"] [ext_resource type="Shader" uid="uid://d0eo5uuj222c4" path="res://assets/shaders/CG_color_blender.gdshader" id="2_6qr4h"] -[ext_resource type="Script" uid="uid://bcc7skl7ts6sh" path="res://scripts/systems/effects/Effect.cs" id="2_b583s"] [ext_resource type="Resource" uid="uid://dsg1vjx76ifgu" path="res://resources/effects/GarlicEffect.tres" id="3_b583s"] [ext_resource type="Script" uid="uid://dt5uj25u0g6y3" path="res://scripts/particles/FallParticle.cs" id="3_tu6af"] [ext_resource type="Script" uid="uid://c5v2og85t7s6j" path="res://scripts/zombies/behaviours/HoboBehaviour.cs" id="4_5selg"] @@ -755,7 +754,7 @@ mult_value = 1.0 [node name="Hobo" node_paths=PackedStringArray("_armor") instance=ExtResource("1_fnu7s")] _armor = NodePath("CanArmor") MaxHP = 130.0 -_effectImmunities = Array[ExtResource("2_b583s")]([ExtResource("3_b583s")]) +_effectImmunities = [ExtResource("3_b583s")] [node name="CanvasGroup" parent="." index="0"] material = SubResource("ShaderMaterial_w8pya") @@ -767,16 +766,16 @@ scale = Vector2(0.999902, 0.999902) texture = SubResource("AtlasTexture_txjqc") [node name="RightUpperLeg" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt" index="1"] -scale = Vector2(0.999826, 0.999826) +scale = Vector2(0.999827, 0.999827) [node name="Right_Upper_Leg" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/RightUpperLeg" index="0"] texture = SubResource("AtlasTexture_b583s") [node name="RightLowerLeg" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/RightUpperLeg" index="1"] -scale = Vector2(0.999831, 0.999831) +scale = Vector2(0.99983, 0.99983) [node name="RightFoot" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/RightUpperLeg/RightLowerLeg" index="0"] -scale = Vector2(0.999824, 0.999824) +scale = Vector2(0.999826, 0.999826) [node name="Right_Foot" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/RightUpperLeg/RightLowerLeg/RightFoot" index="0"] texture = SubResource("AtlasTexture_uoit3") @@ -785,34 +784,34 @@ texture = SubResource("AtlasTexture_uoit3") texture = SubResource("AtlasTexture_vn3j1") [node name="LeftUpperLeg" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt" index="2"] -scale = Vector2(0.999825, 0.999825) +scale = Vector2(0.99983, 0.99983) [node name="Left_Upper_Leg" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/LeftUpperLeg" index="0"] texture = SubResource("AtlasTexture_yb81c") [node name="LeftLowerLeg" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/LeftUpperLeg" index="1"] -scale = Vector2(0.99983, 0.99983) +scale = Vector2(0.999828, 0.999828) [node name="Left_Lower_Leg" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/LeftUpperLeg/LeftLowerLeg" index="0"] texture = SubResource("AtlasTexture_nlwsb") [node name="LeftFoot" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/LeftUpperLeg/LeftLowerLeg" index="1"] -scale = Vector2(0.999818, 0.999818) +scale = Vector2(0.999819, 0.999819) [node name="Left_Foot" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/LeftUpperLeg/LeftLowerLeg/LeftFoot" index="0"] texture = SubResource("AtlasTexture_8y6c0") [node name="Body" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt" index="3"] -scale = Vector2(0.999829, 0.999829) +scale = Vector2(0.999827, 0.999827) [node name="RightUpperArm" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body" index="0"] -scale = Vector2(0.999829, 0.999829) +scale = Vector2(0.999828, 0.999828) [node name="Right_Upper_Arm" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/RightUpperArm" index="0"] texture = SubResource("AtlasTexture_nc6p3") [node name="RightLowerArm" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/RightUpperArm" index="1"] -scale = Vector2(0.999817, 0.999817) +scale = Vector2(0.999813, 0.999813) [node name="RightHand" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/RightUpperArm/RightLowerArm" index="0"] scale = Vector2(0.999828, 0.999828) @@ -827,7 +826,8 @@ texture = SubResource("AtlasTexture_op0h6") texture = SubResource("AtlasTexture_0s5wm") [node name="Tie" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body" index="2"] -rotation = 0.0277344 +position = Vector2(-9, -21) +rotation = 0.0584823 scale = Vector2(1e-05, 1e-05) [node name="Tie" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/Tie" index="0"] @@ -869,23 +869,18 @@ scale = Vector2(0.999827, 0.999827) texture = SubResource("AtlasTexture_pjhfy") [node name="Right_Eye" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/Head/HeadParticle/Head" index="0"] -position = Vector2(-16, -8) -scale = Vector2(1, 1) - -[node name="Left_Eye" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/Head/HeadParticle/Head" index="1"] -position = Vector2(-4, -9.00001) -scale = Vector2(1, 1) +position = Vector2(-16, -7.99999) [node name="Jaw" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/Head/HeadParticle/Head" index="2"] position = Vector2(-3, 3) -rotation = -0.0451082 +rotation = -0.0951176 scale = Vector2(0.999827, 0.999827) texture = SubResource("AtlasTexture_7cvmi") offset = Vector2(-14, -2) [node name="Trashcan_lid" type="Sprite2D" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/Head/HeadParticle/Head" index="3"] z_index = -1 -position = Vector2(-0.00229692, -17.0131) +position = Vector2(-0.00229764, -17.0131) scale = Vector2(0.999828, 0.999828) texture = SubResource("AtlasTexture_n380g") offset = Vector2(-0.5, -0.5) @@ -913,7 +908,7 @@ scale = Vector2(0.999827, 0.999827) texture = SubResource("AtlasTexture_tebih") [node name="Left_Lower_Arm" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/LeftUpperArm/HandProjectile" index="0"] -rotation = 0.0250187 +rotation = 0.0527558 scale = Vector2(0.999999, 0.999999) texture = SubResource("AtlasTexture_auxav") @@ -923,7 +918,7 @@ scale = Vector2(0.999652, 0.999652) texture = SubResource("AtlasTexture_dntsa") [node name="LeftLowerArm" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/LeftUpperArm" index="2"] -scale = Vector2(0.999829, 0.999829) +scale = Vector2(0.99983, 0.99983) [node name="LeftHand" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/LeftUpperArm/LeftLowerArm" index="0"] scale = Vector2(0.999822, 0.999822) @@ -944,7 +939,6 @@ advance_expression_base_node = NodePath("../Behaviour") [node name="Mover" parent="." index="4"] _speed = SubResource("Resource_4248q") -_speedControlMult = 0.0 [node name="HitPlayer" parent="." index="6"] playlist = Array[AudioStream]([ExtResource("8_4248q"), ExtResource("9_tu6af")]) diff --git a/scenes/gui/almanach.tscn b/scenes/gui/almanach.tscn index fac81f3..83d1d50 100644 --- a/scenes/gui/almanach.tscn +++ b/scenes/gui/almanach.tscn @@ -1,4 +1,4 @@ -[gd_scene load_steps=10 format=3 uid="uid://bvpt0q4j6nx18"] +[gd_scene load_steps=11 format=3 uid="uid://bvpt0q4j6nx18"] [ext_resource type="Texture2D" uid="uid://dr8a0rx42o3qy" path="res://assets/sprites/gui/ChooseYourSeeds/PlantFrame.tres" id="1_1hnxi"] [ext_resource type="Script" uid="uid://bs1qywtqijyd2" path="res://scenes/gui/almanach.gd" id="1_oy57w"] @@ -6,6 +6,7 @@ [ext_resource type="Script" uid="uid://covbig00p22di" path="res://scripts/gui/choose_your_seeds/Previewport.cs" id="2_ru62c"] [ext_resource type="Texture2D" uid="uid://dycdvvgmgmfu6" path="res://assets/sprites/gui/ChooseYourSeeds/FrameField.tres" id="3_oy57w"] [ext_resource type="Script" uid="uid://c36bj8u7jghc7" path="res://scripts/audio/ChannelPlayer.cs" id="6_7vo1l"] +[ext_resource type="Texture2D" uid="uid://ksxucobpgv7n" path="res://assets/sprites/field.png" id="6_vvhxq"] [ext_resource type="AudioStream" uid="uid://bdx83fokp6kha" path="res://assets/audio/sfx/buttonclick.mp3" id="7_vvhxq"] [sub_resource type="ViewportTexture" id="ViewportTexture_ru62c"] @@ -21,10 +22,11 @@ anchor_bottom = 1.0 grow_horizontal = 2 grow_vertical = 2 tab_alignment = 1 -current_tab = 0 +current_tab = 1 script = ExtResource("1_oy57w") [node name="plants" type="HBoxContainer" parent="."] +visible = false layout_mode = 2 metadata/_tab_index = 0 @@ -54,12 +56,13 @@ size_flags_horizontal = 0 size_flags_vertical = 0 texture = ExtResource("1_1hnxi") -[node name="Previewport" type="SubViewport" parent="plants/Infobox/FrameAndTitle/VboxContainer/Frame" node_paths=PackedStringArray("title", "description")] +[node name="Previewport" type="SubViewport" parent="plants/Infobox/FrameAndTitle/VboxContainer/Frame" node_paths=PackedStringArray("title", "description", "_frameField")] canvas_item_default_texture_filter = 0 size = Vector2i(65, 65) script = ExtResource("2_ru62c") title = NodePath("../../../Label") description = NodePath("../../../../Description/ScrollContainer/RichTextLabel") +_frameField = NodePath("FrameField") [node name="FrameField" type="Sprite2D" parent="plants/Infobox/FrameAndTitle/VboxContainer/Frame/Previewport"] texture = ExtResource("3_oy57w") @@ -106,7 +109,6 @@ theme_override_colors/font_selected_color = Color(0, 0, 0, 1) bbcode_enabled = true [node name="zombies" type="HBoxContainer" parent="."] -visible = false layout_mode = 2 metadata/_tab_index = 1 @@ -137,15 +139,21 @@ size_flags_horizontal = 0 size_flags_vertical = 0 texture = ExtResource("1_1hnxi") -[node name="Previewport" type="SubViewport" parent="zombies/Infobox/FrameAndTitle/VBoxContainer/Frame" node_paths=PackedStringArray("title", "description")] +[node name="Previewport" type="SubViewport" parent="zombies/Infobox/FrameAndTitle/VBoxContainer/Frame" node_paths=PackedStringArray("title", "description", "_frameField")] canvas_item_default_texture_filter = 0 size = Vector2i(130, 130) script = ExtResource("2_ru62c") title = NodePath("../../../Label") description = NodePath("../../../../Description/ScrollContainer/RichTextLabel") +_frameField = NodePath("CanvasLayer/Field") -[node name="FrameField" type="Sprite2D" parent="zombies/Infobox/FrameAndTitle/VBoxContainer/Frame/Previewport"] -texture = ExtResource("3_oy57w") +[node name="CanvasLayer" type="CanvasLayer" parent="zombies/Infobox/FrameAndTitle/VBoxContainer/Frame/Previewport"] +layer = -10 +follow_viewport_enabled = true + +[node name="Field" type="Sprite2D" parent="zombies/Infobox/FrameAndTitle/VBoxContainer/Frame/Previewport/CanvasLayer"] +position = Vector2(0, 30) +texture = ExtResource("6_vvhxq") [node name="Camera2D" type="Camera2D" parent="zombies/Infobox/FrameAndTitle/VBoxContainer/Frame/Previewport"] position = Vector2(0, -45) diff --git a/scenes/gui/choose_your_seeds.tscn b/scenes/gui/choose_your_seeds.tscn index 58e95d8..dac1715 100644 --- a/scenes/gui/choose_your_seeds.tscn +++ b/scenes/gui/choose_your_seeds.tscn @@ -175,12 +175,13 @@ layout_mode = 2 layout_mode = 2 texture = ExtResource("2_so2bw") -[node name="Previewport" type="SubViewport" parent="Panel/MarginContainer/VBoxContainer/HBoxContainer/Frame" node_paths=PackedStringArray("title", "description")] +[node name="Previewport" type="SubViewport" parent="Panel/MarginContainer/VBoxContainer/HBoxContainer/Frame" node_paths=PackedStringArray("title", "description", "_frameField")] canvas_item_default_texture_filter = 0 size = Vector2i(65, 65) script = ExtResource("3_fmc0y") title = NodePath("../../PanelContainer/ScrollContainer/VBoxContainer/Title") description = NodePath("../../PanelContainer/ScrollContainer/VBoxContainer/Description") +_frameField = NodePath("FrameField") [node name="FrameField" type="Sprite2D" parent="Panel/MarginContainer/VBoxContainer/HBoxContainer/Frame/Previewport"] texture = ExtResource("3_rn5vx") diff --git a/scripts/gui/choose_your_seeds/Previewport.cs b/scripts/gui/choose_your_seeds/Previewport.cs index 71a1709..b153a49 100644 --- a/scripts/gui/choose_your_seeds/Previewport.cs +++ b/scripts/gui/choose_your_seeds/Previewport.cs @@ -11,11 +11,12 @@ public partial class Previewport : SubViewport [Export] private Label title; [Export] private RichTextLabel description; + [Export] private Sprite2D _frameField; public override void _Ready() { GetParent().GetViewport().GuiFocusChanged += OnFocusChanged; - start_Field = GetNode("FrameField").Texture; + start_Field = _frameField.Texture; } public void OnFocusChanged(Control node) @@ -36,10 +37,10 @@ public partial class Previewport : SubViewport } if (resource.customFrame != null && resource.customFrame.almanachField != null) { - GetNode("FrameField").Texture = resource.customFrame.almanachField; + _frameField.Texture = resource.customFrame.almanachField; } else - GetNode("FrameField").Texture = start_Field; + _frameField.Texture = start_Field; current_display = resource.Scene.Instantiate(); title.Text = Tr(resource.name_key); description.Text = Tr(resource.description_key); From 2f1a2b38fe066138d9db11fe4282d6dac85fc8f4 Mon Sep 17 00:00:00 2001 From: Rendo Date: Sat, 12 Jul 2025 07:32:31 +0500 Subject: [PATCH 22/48] previews --- assets/sprites/zombies/previews.png | Bin 0 -> 6446 bytes assets/sprites/zombies/previews.png.import | 34 +++++++++++++++++++++ resources/zombies/basic.tres | 10 ++++-- resources/zombies/buckethead.tres | 10 ++++-- resources/zombies/conehead.tres | 10 ++++-- resources/zombies/hobo.tres | 10 ++++-- scenes/entities/Zombies/bucket_zombie.tscn | 3 -- scenes/entities/Zombies/cone_zombie.tscn | 30 +++++++++--------- scenes/entities/Zombies/hobo.tscn | 28 +++++++++-------- scenes/main_menu.tscn | 27 +++++++++++++++- scenes/sacrifice.tscn | 10 ++---- scripts/level/RuntimeLevelData.cs | 1 + 12 files changed, 123 insertions(+), 50 deletions(-) create mode 100644 assets/sprites/zombies/previews.png create mode 100644 assets/sprites/zombies/previews.png.import diff --git a/assets/sprites/zombies/previews.png b/assets/sprites/zombies/previews.png new file mode 100644 index 0000000000000000000000000000000000000000..cdfd0bd8755467633e8ecf65b48ef34532fe7e7b GIT binary patch literal 6446 zcmX9@cQ_nh7havLkZ2pd_fAAj)cq;ZS)!K^B_gYLVMUZpMD((HCm|tN%W5H75GCqj zBUmNs>h;?^-ybt~=9xM7-t*q~%suCw1Y<+(+qYP50RVv8x;k2>gceCSJSoWuXWHJ} zKZJ(J&s19jP&>l50RY@v*VR%t4@PX~y?V{5#UDPmwa}j^|eyxt@Md#^1dBHpW z^(Q+^v-ER5=82|feOlV|a=CK!V7C;zv&PneABm~&QWLyks&sC@7L#(5^Q zIIC-HvXw&*jR!|jWyMod?-T*+8?z9)zO&y?Y1dA19TE5r`o<;yN8s3q$O%J-P@q`=>6xIt>d36in8Op+*FBY==qUKUum`ljZ+(~%W0|G?-($g8|SQ&yu z^g0zMiL=_%1`e%v&yHoX7q!%`|IKTsWm^EysU3G?dl+HMgupH~y^zIvq1nM(6pGVe zi9~9zX7;~3i}0hZ>7v#!$x}uJB_*bWAs!!5FX(x?SD1hV8~rkrL@k2Z_-tC<>F|BX zPYOY2ObaZYwWF|M)i09UD7BY7CO2wqmYe3}{Adf%d5#!3TwWi8Ug7_N1WVGigFxUP zKBPvM%K*KXyQxI(?u@Bk&yoirQd$If*7qpGoU9y@E4aVR*^4zPlO8vK0gKUPw8@fHb8Ny*dk zT_T+#+{NFqVr}Q)1*{?Qiha+*+-DaeL(2l1$@&^y#&C$`^pkl(EKG;&WPSbKf7*Rs z86p1u`nMunU1OWTmUeuY;y%}56P}#}eI84vfoEL-VgUjZ@SUAJFspUPHI?wnw{M!2 zwY6RS{knhD1>)X4@_US#L9#?d6cpFjch_Umn3ppUuOv0ZT6JtO8OB_hRxi`y!+c$~ z0>6$He7=0iKzCQW$(v%QU3v0KFUHkCCfnXc2F>+YLXS)y;2*S`reSYq7xVi!cU8?Y zfjV_`59)hdLeS*Hgln=^ONTrwzmnvw&OFk7bU*C6lPH{#XJzBx`rNfP8mnuSbj3$$Z(io6v(#%4?_5fK_lQ%7+H$Z2o5MuRo{QSsh zCL@3@j`fXgJ}!TJWC~PM^x)&h?D7*Uu0|=MUL|G!}hyUpc;0c~df}NQ5*lnviDLPIP0C>-mL_ zUGF&_rX2u7j7DqI=xuG)3k9kU)}1tW$mN}zu#vYR3{~n9eJa7mcQHIGQrPN#>@C^h zfe4>pyK&pK&|Y>&j)$Q_tIyEv3#svG_8r#=JgU}*9Rn<5^&%bf;+^+}nf0A26nigQ zGOd{;$G)`S5W&aj83j7)b|WWZF->*dJ=@V(}ntU`De#t|}HAvyFp z8Orfw)6uNbD8ZGSc>XU+;{irY913@!l7i{~5#6&-7fh_Dnj}&qZxOj+XIgQ5CudTw zh%Ti@Yt+t%aC@J;hJ^?suTX+OS~jU1&Y;7tGtN(;bt#nJ33MrGWbrroFK_K|vs^*l zP<`&Dr6f53<2P?Go&+pTA(cl54VCuWYG=2jF1$&HljNtm+TB%7CH;t#n(*w|UsJNfM@UA)yvAoe`X1Z?IUggco)c3|bH2@nSIqtVubP zGMgF=St-H^3#8U1u6Vdi1NeLi&1qJSxC?k)(hkjYZ=n0fRaM zpwCDyx;Lnvw+l&^pK4B1JV17dA#)M73?`%_J-IjJ?xYAqD<;>YRA?V}eh ztNoffQsak&u`Y|YNS<3+C#eZ8Ot*K18Vy~a)I z!v%cKQNAr}KHcjcwNvpCQDTHI0>xU$RsZ}_W)5fM*!IW7|6S(qjr{37-=T)2t(>T~ zS5Tu{M=um<_FrA%I_5JJZ+<*(0-WKD+5ta)He6;tTbV9uYu3LU{pmr8ABTI|IJLZw zJf;PZ*pbUqw4zYtQZw+x-3sahuHFzCqyfZ5PaK)Lge*DxV0(5r^u$6I-T$jFKHH(l zTZTM@2vJ>a-M0Td_jCs39JMm<2tXsG-NDbc@i z!pR5=FDQP_+5s=+6az_){OL2;$uRWc$l}Jn5V&lh3Ly^H#`CriIEOv`*$5+RepNs# z#qJBa8($kKI(#;WPxTn-4)-kLM;1|A2~gJ4R`1DwPp+u@}q=QNdS1gS?ibaIE4aJp#NkaSRn}geaICVxkt8fva6z~ zSm5@U>kHPFu-%D6evR!*6`uP2vB*MKYK`s2^F}D%HXoGrmzgmD;X=p}*byT^lA*J_ zm#eZu60@nF8{42dZ1(9ryS;5E5!tOP4^HFv2BSbYA0$pf#P6_#zm}4V8LTG2QTd_g zfcVjpxH0`JeSrb+$${-_`>-`W#h5v8g*k2h| zevFuvpjNU(?^!y*bWcf`D zh1z0{hfGQFpK>)K`TH!-yZ2gCF>pQpisd%(*c0$nr0z(Acwj0mQ>l?>Ej?}ww%hwXTv-ntr{rh zI}TKmMsdQ*v zzO$$aX}y`_K<@86-v#emn{g8traR#Dm1ULDM+%Yw{s$ceTUYO%i|gG}dh;<|gh3qy z{Nm!6s$FAE-~+D0JmICtSwZ&vYD){~DuTE&qWm z4W(WV@^M&#|3j^^?dV=TvMz$e0t0z}F(e2;C`s^@J#U^bTa@4-VboP6-?x!3a+e~={Z6RoAs=)h2+*N-U6@!tYpD67 z)8M|6;Kn22p@PtsRVxKMv|%y5^CqqIZ1|^J3Ni6J3aGlBiyidsH^zz!G>Zo`eg6R#ZWkS>*N7KvtoLMVM zIEZRb2U~rhm4Lt5E^9o0)QHUItoe2Y?O9s>tkSVkX-UoM8JG5JP#~eG3GPC_vjG4VSC+hU|aA%hX*20wgiBc|+!tCs{CH3_@ zf&G7ICNFg$2<`C}{6|8NG@KlPQkjdmt%Jx#7!C%yMEDnDQM82Hq$GdM1$sbJrc>86 zPtdNHz4FY&G!g%m2voCW{wr{!H^_0hW(oAm!`92YbLSAeM-GIY{~5g4H#xQ_1uYe| zDz~pr!z_R3Xz#odeg}4m7+|pzHA2{*IEkHo<8*RXshQ{0uT&09_kRPK;zsZu>NI9j_Qr zg2u9()!p>?bvfH%CF4IteLy&mRw0)GD(f7&OA#s8kpe2+0lGGcdInGhK zpS7z>Nj=rI0v5>`cR&({731~>9^4qL>Y?^Sc z7m^Tt3SN0{OGHM1!+h!Dmmb%{8*KqhpU_#Lq+8x8^egr48Kmfe3R+|Wv7Bdq<~tVv z18ob}6gG@%^71$aa@CGjczJLUP5+s3)r8K>Yawu+v)KYV>YFJr^nk9W&DN#zD zT!8ydDn9g1*%)8V$B65_r7-YmRy962XX51}TYW!NnZa40!69EF;dyZ>BQEw9GSy+Y z3pk%x19Ore+TgZhIn5sM9i}#YAbyR+RP>%M@E&&`U9gEF!-M z+m7f6kilh8M#z3OU|lkm?uL}Pt6Ay5uGGxc>9+1ILVQ{vEQ1~Hzg_4{KLJfk zZf`Xox8B>lyd3COk;5kJb(ts-Ih`*jPsV9Fdw^AQUyZngvKNSx5P61fG%-W@g^lqg zr3^UmwC``O!PJXkQ_^&5i@VNtm9b9`%KnAqnC1&z)n^sp)kpmYqlSsapmecSYjcEP z$mTl;B6Fh`EjYM8GVKsk_f&LS;il~1M3V$#^vwW)#-QJd#oj5*NN~{C=6laK5F=xy zDhZriZ!%0dt1k~T+5hihx>sSOocl#>r9z$K)fEFScDb0eijsQXAbMp#C~|7`eYfnw zY3f(C;hGe41a2NyL#&@S|3?4tj%9lU%Wm#kw)^&q;L>O;pG^k}CBQH(A{?E=nUH}1 z;p8TpR}qQ$V71ZF?I$;e&^7-={9B|@vC+yj44=nIAn2KA>6_3M{RbN-gx&9x-CTx^ z{LAda3p6h2PpWFwtM}JhEJwc%pSFT;Aab@1W`!99ohsUPF5^5k;69aRs^krI>|DUww|@Q9ucxF=5?J=kC?dLnW0%x^g}gbbSjX=>du6uyWN%0`093RF z9Yy6(tQX~2H3clPqFiF^$(6hE?87PCJKr?mI^LFY!8_Y!(SQQCBZ^CI`QpZar;eie zU)98K#X=BnJ+Kl0m&X)Djg*xP3CH1_Zg3F4y`fQom#UXN+5~y$V{Wtld}wO7j^BZD z%(R-pp;IGqW4u`KoiV!~Ly9zMV8yWO$6H4=5WmlC9`B*J%!tZoOi8qM4NdBKT;2Xg zIx<<)!!~b58{F*dgiXpP5K9&I<^rqy6KnG@!o+u{j!vstq2cQ+1RG7i*h|GD5hR$M z6ZNLgav^G3^@8br9g3*q@-J&gYlV3I3>E>Klnp#OpIYAgJRh37e8~RkDaTwXe4*Vz6n6zA+va8$#hd*m$+?PGZLM zbseIpy_B*E`s_V+_7YcLz|Zk7L}52uB!vKl4ruXf<+uM|evn7Y-<1MH&d`dmQViXJ?AP4qwY`V z`sc7CogISqM@>sxR9$Uh%{)U8LOZ{Ud3o8sYi~D#OOV$1ksb)67GYrdD${K+qot2M zkCIAH+1Qx$hWi&8pu~vT>6%(sHK5Z$T;dz9B8Ab#H(N|{uUH6BXWcFlm{jQ!Qh8VpP-Kh%axizPyoxG50OEs}w|VKeev_zmY?6&R7^GYHEp)cXR0*!G5)F}1yBuq>`V z9vd%Z+M5@5ixGNn>oFfhSGEmm{lD)-QDafp^h=`4pA4>r56Di_=t`tW8ci(*I6Ko2 sVC)6eWI3R~bU?@TcL(hq<&7I6?Y!2~iCpVS!VeIDF4$13R>KkYKZG!;p#T5? literal 0 HcmV?d00001 diff --git a/assets/sprites/zombies/previews.png.import b/assets/sprites/zombies/previews.png.import new file mode 100644 index 0000000..4e0ece8 --- /dev/null +++ b/assets/sprites/zombies/previews.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://5gpf2sodhn6e" +path="res://.godot/imported/previews.png-bf5734315ff51e6cede135bafe2c4975.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/sprites/zombies/previews.png" +dest_files=["res://.godot/imported/previews.png-bf5734315ff51e6cede135bafe2c4975.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/resources/zombies/basic.tres b/resources/zombies/basic.tres index e9c1a67..cfa837e 100644 --- a/resources/zombies/basic.tres +++ b/resources/zombies/basic.tres @@ -1,8 +1,12 @@ -[gd_resource type="Resource" script_class="ZombieResource" load_steps=4 format=3 uid="uid://buvacn56kyy2p"] +[gd_resource type="Resource" script_class="ZombieResource" load_steps=5 format=3 uid="uid://buvacn56kyy2p"] [ext_resource type="PackedScene" uid="uid://co11v3w8hbwgf" path="res://scenes/entities/Zombies/zombie.tscn" id="1_c2mq3"] [ext_resource type="Script" uid="uid://cqxj7o8hdm82n" path="res://scripts/resources/ZombieResource.cs" id="1_k277m"] -[ext_resource type="Texture2D" uid="uid://dunlsp8tx7a4w" path="res://assets/sprites/zombies/Зондби.png" id="1_l6de4"] +[ext_resource type="Texture2D" uid="uid://5gpf2sodhn6e" path="res://assets/sprites/zombies/previews.png" id="1_l6de4"] + +[sub_resource type="AtlasTexture" id="AtlasTexture_wu2q8"] +atlas = ExtResource("1_l6de4") +region = Rect2(0, 0, 43, 88) [resource] script = ExtResource("1_k277m") @@ -12,6 +16,6 @@ Cost = 1.0 Scene = ExtResource("1_c2mq3") ReloadTime = 1.0 ReloadProgress = 0.0 -Preview = ExtResource("1_l6de4") +Preview = SubResource("AtlasTexture_wu2q8") Layer = 1 metadata/_custom_type_script = "uid://cqxj7o8hdm82n" diff --git a/resources/zombies/buckethead.tres b/resources/zombies/buckethead.tres index ad2983b..ef9c339 100644 --- a/resources/zombies/buckethead.tres +++ b/resources/zombies/buckethead.tres @@ -1,8 +1,12 @@ -[gd_resource type="Resource" script_class="ZombieResource" load_steps=4 format=3 uid="uid://dkhjlu7u0vny6"] +[gd_resource type="Resource" script_class="ZombieResource" load_steps=5 format=3 uid="uid://dkhjlu7u0vny6"] [ext_resource type="PackedScene" uid="uid://xu4i6tmkv00a" path="res://scenes/entities/Zombies/bucket_zombie.tscn" id="1_lhcag"] [ext_resource type="Script" uid="uid://cqxj7o8hdm82n" path="res://scripts/resources/ZombieResource.cs" id="1_sngfh"] -[ext_resource type="Texture2D" uid="uid://dunlsp8tx7a4w" path="res://assets/sprites/zombies/Зондби.png" id="1_ufs7s"] +[ext_resource type="Texture2D" uid="uid://5gpf2sodhn6e" path="res://assets/sprites/zombies/previews.png" id="1_ufs7s"] + +[sub_resource type="AtlasTexture" id="AtlasTexture_drksh"] +atlas = ExtResource("1_ufs7s") +region = Rect2(137, 0, 47, 101) [resource] script = ExtResource("1_sngfh") @@ -12,6 +16,6 @@ Cost = 5.0 Scene = ExtResource("1_lhcag") ReloadTime = 1.0 ReloadProgress = 0.0 -Preview = ExtResource("1_ufs7s") +Preview = SubResource("AtlasTexture_drksh") Layer = 1 metadata/_custom_type_script = "uid://cqxj7o8hdm82n" diff --git a/resources/zombies/conehead.tres b/resources/zombies/conehead.tres index a9b8fd8..637299f 100644 --- a/resources/zombies/conehead.tres +++ b/resources/zombies/conehead.tres @@ -1,9 +1,13 @@ -[gd_resource type="Resource" script_class="ZombieResource" load_steps=4 format=3 uid="uid://nceohd32fkxk"] +[gd_resource type="Resource" script_class="ZombieResource" load_steps=5 format=3 uid="uid://nceohd32fkxk"] -[ext_resource type="Texture2D" uid="uid://dunlsp8tx7a4w" path="res://assets/sprites/zombies/Зондби.png" id="1_f7g7v"] +[ext_resource type="Texture2D" uid="uid://5gpf2sodhn6e" path="res://assets/sprites/zombies/previews.png" id="1_f7g7v"] [ext_resource type="PackedScene" uid="uid://hhjbqkjqpt7x" path="res://scenes/entities/Zombies/cone_zombie.tscn" id="1_llf5l"] [ext_resource type="Script" uid="uid://cqxj7o8hdm82n" path="res://scripts/resources/ZombieResource.cs" id="1_sw7hj"] +[sub_resource type="AtlasTexture" id="AtlasTexture_q44xp"] +atlas = ExtResource("1_f7g7v") +region = Rect2(92, 0, 45, 106) + [resource] script = ExtResource("1_sw7hj") name_key = "conehead" @@ -12,6 +16,6 @@ Cost = 2.0 Scene = ExtResource("1_llf5l") ReloadTime = 1.0 ReloadProgress = 0.0 -Preview = ExtResource("1_f7g7v") +Preview = SubResource("AtlasTexture_q44xp") Layer = 1 metadata/_custom_type_script = "uid://cqxj7o8hdm82n" diff --git a/resources/zombies/hobo.tres b/resources/zombies/hobo.tres index 96ffa0d..693c1a1 100644 --- a/resources/zombies/hobo.tres +++ b/resources/zombies/hobo.tres @@ -1,9 +1,13 @@ -[gd_resource type="Resource" script_class="ZombieResource" load_steps=4 format=3 uid="uid://c38vfdw5b60xw"] +[gd_resource type="Resource" script_class="ZombieResource" load_steps=5 format=3 uid="uid://c38vfdw5b60xw"] [ext_resource type="PackedScene" uid="uid://bgqmwsb6ynm81" path="res://scenes/entities/Zombies/hobo.tscn" id="1_4myt6"] -[ext_resource type="Texture2D" uid="uid://dunlsp8tx7a4w" path="res://assets/sprites/zombies/Зондби.png" id="1_nt7w3"] +[ext_resource type="Texture2D" uid="uid://5gpf2sodhn6e" path="res://assets/sprites/zombies/previews.png" id="1_nt7w3"] [ext_resource type="Script" uid="uid://cqxj7o8hdm82n" path="res://scripts/resources/ZombieResource.cs" id="1_u5qpq"] +[sub_resource type="AtlasTexture" id="AtlasTexture_73ahc"] +atlas = ExtResource("1_nt7w3") +region = Rect2(43, 0, 49, 95) + [resource] script = ExtResource("1_u5qpq") name_key = "hobo" @@ -12,6 +16,6 @@ Cost = 7.0 Scene = ExtResource("1_4myt6") ReloadTime = 1.0 ReloadProgress = 0.0 -Preview = ExtResource("1_nt7w3") +Preview = SubResource("AtlasTexture_73ahc") Layer = 1 metadata/_custom_type_script = "uid://cqxj7o8hdm82n" diff --git a/scenes/entities/Zombies/bucket_zombie.tscn b/scenes/entities/Zombies/bucket_zombie.tscn index 753de64..2df1937 100644 --- a/scenes/entities/Zombies/bucket_zombie.tscn +++ b/scenes/entities/Zombies/bucket_zombie.tscn @@ -69,9 +69,6 @@ use_parent_material = false [node name="LeftLowerLeg" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/LeftUpperLeg" index="1"] scale = Vector2(0.999834, 0.999834) -[node name="LeftFoot" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/LeftUpperLeg/LeftLowerLeg" index="1"] -scale = Vector2(0.999831, 0.999831) - [node name="Body" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt" index="3"] use_parent_material = false diff --git a/scenes/entities/Zombies/cone_zombie.tscn b/scenes/entities/Zombies/cone_zombie.tscn index 605f830..c0607ce 100644 --- a/scenes/entities/Zombies/cone_zombie.tscn +++ b/scenes/entities/Zombies/cone_zombie.tscn @@ -41,7 +41,7 @@ _armor = NodePath("Armor") material = SubResource("ShaderMaterial_sat5k") [node name="RightUpperLeg" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt" index="1"] -scale = Vector2(0.999836, 0.999836) +scale = Vector2(0.999835, 0.999835) [node name="RightLowerLeg" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/RightUpperLeg" index="1"] scale = Vector2(0.999835, 0.999835) @@ -56,7 +56,7 @@ scale = Vector2(0.999834, 0.999834) scale = Vector2(0.999836, 0.999836) [node name="LeftFoot" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/LeftUpperLeg/LeftLowerLeg" index="1"] -scale = Vector2(0.999832, 0.999832) +scale = Vector2(0.999831, 0.999831) [node name="Body" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt" index="3"] scale = Vector2(0.999829, 0.999829) @@ -68,19 +68,19 @@ scale = Vector2(0.999825, 0.999825) scale = Vector2(0.999825, 0.999825) [node name="Tie" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body" index="2"] -rotation = -0.109484 +position = Vector2(-9, -21) +rotation = 0.0487752 skew = -9.78708e-05 [node name="Head" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body" index="3"] scale = Vector2(0.999829, 0.999829) -[node name="Jaw" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/Head/HeadParticle/Head" index="2"] -position = Vector2(-2.73308, 2.35578) -rotation = -0.0509399 -scale = Vector2(0.999827, 0.999827) +[node name="Left_Eye" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/Head/HeadParticle/Head" index="1"] +position = Vector2(-4, -8.99999) -[node name="Jaw" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/Head" index="1"] -scale = Vector2(0.999827, 0.999827) +[node name="Jaw" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/Head/HeadParticle/Head" index="2"] +position = Vector2(-2.80745, 2.53167) +rotation = 0.0233037 [node name="Hat" type="RigidBody2D" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/Head" index="4" node_paths=PackedStringArray("data")] position = Vector2(-2.5, -13.5) @@ -113,25 +113,25 @@ shape = SubResource("CircleShape2D_67t4t") scale = Vector2(0.999829, 0.999829) [node name="Left_Lower_Arm" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/LeftUpperArm/HandProjectile" index="0"] -rotation = -0.0477755 +rotation = 0.129286 scale = Vector2(0.999998, 0.999998) [node name="Left_Hand" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/LeftUpperArm/HandProjectile/Left_Lower_Arm" index="0"] -rotation = -0.135402 -scale = Vector2(0.999661, 0.999661) +rotation = -0.0996425 +scale = Vector2(0.99966, 0.99966) [node name="LeftLowerArm" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/LeftUpperArm" index="2"] -scale = Vector2(0.999828, 0.999828) +scale = Vector2(0.999829, 0.999829) [node name="LeftHand" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/LeftUpperArm/LeftLowerArm" index="0"] -scale = Vector2(0.999831, 0.999831) +scale = Vector2(0.99983, 0.99983) [node name="Eatbox" parent="." index="2"] _damage = SubResource("Resource_w70im") [node name="Mover" parent="." index="4"] _speed = SubResource("Resource_b6mal") -_speedControlMult = 1.05271 +_speedControlMult = 0.774692 [node name="Armor" type="Node" parent="." index="6"] script = ExtResource("3_5s7in") diff --git a/scenes/entities/Zombies/hobo.tscn b/scenes/entities/Zombies/hobo.tscn index 5b74f13..e967583 100644 --- a/scenes/entities/Zombies/hobo.tscn +++ b/scenes/entities/Zombies/hobo.tscn @@ -1,7 +1,8 @@ -[gd_scene load_steps=61 format=3 uid="uid://bgqmwsb6ynm81"] +[gd_scene load_steps=62 format=3 uid="uid://bgqmwsb6ynm81"] [ext_resource type="PackedScene" uid="uid://co11v3w8hbwgf" path="res://scenes/entities/Zombies/zombie.tscn" id="1_fnu7s"] [ext_resource type="Shader" uid="uid://d0eo5uuj222c4" path="res://assets/shaders/CG_color_blender.gdshader" id="2_6qr4h"] +[ext_resource type="Script" uid="uid://bcc7skl7ts6sh" path="res://scripts/systems/effects/Effect.cs" id="2_b583s"] [ext_resource type="Resource" uid="uid://dsg1vjx76ifgu" path="res://resources/effects/GarlicEffect.tres" id="3_b583s"] [ext_resource type="Script" uid="uid://dt5uj25u0g6y3" path="res://scripts/particles/FallParticle.cs" id="3_tu6af"] [ext_resource type="Script" uid="uid://c5v2og85t7s6j" path="res://scripts/zombies/behaviours/HoboBehaviour.cs" id="4_5selg"] @@ -754,7 +755,7 @@ mult_value = 1.0 [node name="Hobo" node_paths=PackedStringArray("_armor") instance=ExtResource("1_fnu7s")] _armor = NodePath("CanArmor") MaxHP = 130.0 -_effectImmunities = [ExtResource("3_b583s")] +_effectImmunities = Array[ExtResource("2_b583s")]([ExtResource("3_b583s")]) [node name="CanvasGroup" parent="." index="0"] material = SubResource("ShaderMaterial_w8pya") @@ -775,7 +776,7 @@ texture = SubResource("AtlasTexture_b583s") scale = Vector2(0.99983, 0.99983) [node name="RightFoot" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/RightUpperLeg/RightLowerLeg" index="0"] -scale = Vector2(0.999826, 0.999826) +scale = Vector2(0.999825, 0.999825) [node name="Right_Foot" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/RightUpperLeg/RightLowerLeg/RightFoot" index="0"] texture = SubResource("AtlasTexture_uoit3") @@ -784,19 +785,19 @@ texture = SubResource("AtlasTexture_uoit3") texture = SubResource("AtlasTexture_vn3j1") [node name="LeftUpperLeg" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt" index="2"] -scale = Vector2(0.99983, 0.99983) +scale = Vector2(0.999829, 0.999829) [node name="Left_Upper_Leg" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/LeftUpperLeg" index="0"] texture = SubResource("AtlasTexture_yb81c") [node name="LeftLowerLeg" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/LeftUpperLeg" index="1"] -scale = Vector2(0.999828, 0.999828) +scale = Vector2(0.999829, 0.999829) [node name="Left_Lower_Leg" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/LeftUpperLeg/LeftLowerLeg" index="0"] texture = SubResource("AtlasTexture_nlwsb") [node name="LeftFoot" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/LeftUpperLeg/LeftLowerLeg" index="1"] -scale = Vector2(0.999819, 0.999819) +scale = Vector2(0.999818, 0.999818) [node name="Left_Foot" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/LeftUpperLeg/LeftLowerLeg/LeftFoot" index="0"] texture = SubResource("AtlasTexture_8y6c0") @@ -827,7 +828,7 @@ texture = SubResource("AtlasTexture_0s5wm") [node name="Tie" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body" index="2"] position = Vector2(-9, -21) -rotation = 0.0584823 +rotation = 0.042342 scale = Vector2(1e-05, 1e-05) [node name="Tie" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/Tie" index="0"] @@ -869,18 +870,21 @@ scale = Vector2(0.999827, 0.999827) texture = SubResource("AtlasTexture_pjhfy") [node name="Right_Eye" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/Head/HeadParticle/Head" index="0"] -position = Vector2(-16, -7.99999) +position = Vector2(-16, -8) + +[node name="Left_Eye" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/Head/HeadParticle/Head" index="1"] +position = Vector2(-4, -9) [node name="Jaw" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/Head/HeadParticle/Head" index="2"] position = Vector2(-3, 3) -rotation = -0.0951176 +rotation = -0.0688665 scale = Vector2(0.999827, 0.999827) texture = SubResource("AtlasTexture_7cvmi") offset = Vector2(-14, -2) [node name="Trashcan_lid" type="Sprite2D" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/Head/HeadParticle/Head" index="3"] z_index = -1 -position = Vector2(-0.00229764, -17.0131) +position = Vector2(-0.00229669, -17.0131) scale = Vector2(0.999828, 0.999828) texture = SubResource("AtlasTexture_n380g") offset = Vector2(-0.5, -0.5) @@ -908,7 +912,7 @@ scale = Vector2(0.999827, 0.999827) texture = SubResource("AtlasTexture_tebih") [node name="Left_Lower_Arm" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/LeftUpperArm/HandProjectile" index="0"] -rotation = 0.0527558 +rotation = 0.0381959 scale = Vector2(0.999999, 0.999999) texture = SubResource("AtlasTexture_auxav") @@ -918,7 +922,7 @@ scale = Vector2(0.999652, 0.999652) texture = SubResource("AtlasTexture_dntsa") [node name="LeftLowerArm" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/LeftUpperArm" index="2"] -scale = Vector2(0.99983, 0.99983) +scale = Vector2(0.999829, 0.999829) [node name="LeftHand" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/LeftUpperArm/LeftLowerArm" index="0"] scale = Vector2(0.999822, 0.999822) diff --git a/scenes/main_menu.tscn b/scenes/main_menu.tscn index 7dde938..f47d938 100644 --- a/scenes/main_menu.tscn +++ b/scenes/main_menu.tscn @@ -1,4 +1,4 @@ -[gd_scene load_steps=16 format=3 uid="uid://bfstrli64u23y"] +[gd_scene load_steps=17 format=3 uid="uid://bfstrli64u23y"] [ext_resource type="Texture2D" uid="uid://dvldjlg0nr355" path="res://assets/sprites/atlases/atlas1.png" id="1_jk1qb"] [ext_resource type="Script" uid="uid://drru785m4eep" path="res://scripts/gui/main_menu_rich_text.gd" id="2_5dd4i"] @@ -34,6 +34,16 @@ texture_margin_top = 6.0 texture_margin_right = 6.0 texture_margin_bottom = 6.0 +[sub_resource type="GDScript" id="GDScript_flqon"] +resource_name = "version_label" +script/source = "extends Label + + +func _ready() -> void: + text = ProjectSettings.get_setting(\"application/config/version\") + +" + [node name="MainMenu" type="Control"] process_mode = 3 layout_mode = 3 @@ -178,6 +188,21 @@ bus = &"MusicBus" visible = false layout_mode = 1 +[node name="VersionLabel" type="Label" parent="."] +layout_mode = 1 +anchors_preset = -1 +anchor_left = 0.823 +anchor_top = 0.957 +anchor_right = 1.0 +anchor_bottom = 1.0 +offset_left = 0.199982 +offset_top = 0.199982 +grow_horizontal = 0 +grow_vertical = 0 +horizontal_alignment = 2 +vertical_alignment = 1 +script = SubResource("GDScript_flqon") + [connection signal="meta_clicked" from="PrototypeWindow/ScrollContainer/PrototypeNotification" to="PrototypeWindow/ScrollContainer/PrototypeNotification" method="_on_meta_clicked"] [connection signal="pressed" from="Buttons/GameButtons/PlayButton" to="Buttons" method="_on_play_button_pressed"] [connection signal="pressed" from="Buttons/GameButtons/ExitButton" to="Buttons" method="_on_exit_button_pressed"] diff --git a/scenes/sacrifice.tscn b/scenes/sacrifice.tscn index 0a2c43d..652cddc 100644 --- a/scenes/sacrifice.tscn +++ b/scenes/sacrifice.tscn @@ -1,9 +1,9 @@ -[gd_scene load_steps=13 format=3 uid="uid://d2ut237hxscbo"] +[gd_scene load_steps=12 format=3 uid="uid://d2ut237hxscbo"] [ext_resource type="Texture2D" uid="uid://3m6opnieiyr2" path="res://assets/sprites/golden_bg.png" id="1_tsh0d"] [ext_resource type="Shader" uid="uid://d0rylce8i5xtg" path="res://assets/shaders/SACRIFICE.gdshader" id="2_b8skw"] -[ext_resource type="AudioStream" uid="uid://dwr53ucg07nla" path="res://assets/audio/music/Oliver Buckland - Dead God Graveyard .mp3" id="2_bijdt"] [ext_resource type="Texture2D" uid="uid://dfmi4cgn6hmsj" path="res://assets/sprites/gold.png" id="3_1ybnd"] +[ext_resource type="AudioStream" uid="uid://lshrnpdrhh77" path="res://assets/audio/music/Смешарики - 194. Метеоритный дождь.mp3" id="4_b8skw"] [sub_resource type="Gradient" id="Gradient_b8skw"] colors = PackedColorArray(0, 0, 0, 0, 1, 1, 1, 1) @@ -21,10 +21,6 @@ noise = SubResource("FastNoiseLite_1ybnd") shader = ExtResource("2_b8skw") shader_parameter/noise = SubResource("NoiseTexture2D_yu0ma") -[sub_resource type="AudioStreamPlaylist" id="AudioStreamPlaylist_7l6qq"] -stream_count = 1 -stream_0 = ExtResource("2_bijdt") - [sub_resource type="Animation" id="Animation_1ybnd"] length = 0.001 tracks/0/type = "value" @@ -78,7 +74,7 @@ offset_bottom = 40.0 texture = ExtResource("3_1ybnd") [node name="Musicale" type="AudioStreamPlayer" parent="."] -stream = SubResource("AudioStreamPlaylist_7l6qq") +stream = ExtResource("4_b8skw") autoplay = true [node name="AnimationPlayer" type="AnimationPlayer" parent="."] diff --git a/scripts/level/RuntimeLevelData.cs b/scripts/level/RuntimeLevelData.cs index d7fb28c..f26c2e9 100644 --- a/scripts/level/RuntimeLevelData.cs +++ b/scripts/level/RuntimeLevelData.cs @@ -26,6 +26,7 @@ public partial class RuntimeLevelData : Node { Instance = this; GetTree().Paused = true; + Engine.TimeScale = 1.0; } #region Sun From 771fdb97fc525e6f629668ecce7597dc765087dd Mon Sep 17 00:00:00 2001 From: Rendo Date: Sat, 12 Jul 2025 07:46:21 +0500 Subject: [PATCH 23/48] timer --- project.godot | 2 +- scenes/prototype_survival.tscn | 26 +++++++++++++++++++++++++- translations/zombies.csv | 2 +- translations/zombies.ru.translation | Bin 2753 -> 2757 bytes 4 files changed, 27 insertions(+), 3 deletions(-) diff --git a/project.godot b/project.godot index 9088033..3576068 100644 --- a/project.godot +++ b/project.godot @@ -16,7 +16,7 @@ warnings/check_angle_interpolation_type_conflicting=false [application] config/name="Liberation of the Neighbourville" -config/version="0.1.5" +config/version="0.2.0" run/main_scene="uid://bfstrli64u23y" config/features=PackedStringArray("4.4", "C#", "Forward Plus") config/icon="res://icon.png" diff --git a/scenes/prototype_survival.tscn b/scenes/prototype_survival.tscn index c0f16aa..3c4599f 100644 --- a/scenes/prototype_survival.tscn +++ b/scenes/prototype_survival.tscn @@ -1,4 +1,4 @@ -[gd_scene load_steps=33 format=3 uid="uid://c1335fke4thpm"] +[gd_scene load_steps=34 format=3 uid="uid://c1335fke4thpm"] [ext_resource type="Script" uid="uid://bndu1h5kgcde8" path="res://scripts/level/RuntimeLevelData.cs" id="1_tnxdx"] [ext_resource type="Texture2D" uid="uid://b0tb2hjum40aw" path="res://assets/sprites/background_summer.png" id="1_vafkg"] @@ -24,6 +24,18 @@ [ext_resource type="Script" uid="uid://812ldoyxd5n5" path="res://scripts/level/LoseCheckbox.cs" id="17_pb02i"] [ext_resource type="AudioStream" uid="uid://bxshjvvtv3fmp" path="res://assets/audio/music/playlist.tres" id="23_tsy2s"] +[sub_resource type="GDScript" id="GDScript_tsy2s"] +resource_name = "time_label" +script/source = "extends Label + +var time : float = 0 + +func _process(delta: float) -> void: + time += delta + var itime = int(time) + text = \"%02d:%02d:%02d\" % [itime / 3600 ,itime / 60 % 60,itime % 60] +" + [sub_resource type="Animation" id="Animation_r81g1"] length = 0.001 tracks/0/type = "value" @@ -244,6 +256,18 @@ metadata/_edit_lock_ = true [node name="PauseMenu" parent="GUI" instance=ExtResource("7_3ghv7")] visible = false +[node name="TimeLabel" type="Label" parent="GUI"] +anchors_preset = 3 +anchor_left = 1.0 +anchor_top = 1.0 +anchor_right = 1.0 +anchor_bottom = 1.0 +offset_left = -40.0 +offset_top = -17.0 +grow_horizontal = 0 +grow_vertical = 0 +script = SubResource("GDScript_tsy2s") + [node name="GameOverScreen" type="CanvasLayer" parent="."] process_mode = 3 layer = 11 diff --git a/translations/zombies.csv b/translations/zombies.csv index f2fe452..fff8191 100644 --- a/translations/zombies.csv +++ b/translations/zombies.csv @@ -18,7 +18,7 @@ Attack speed: [color=darkred]2.67 Hz[/color]. Attack damage: [color=darkred]1 bite[/color]. ","Носит ведро чтобы защитить остатки мозгов. Равен примерно 7 зомби. Очки здоровья: [color=darkred]7 горошин[/color]. Очки брони: [color=darkred]39 горошин[/color]. -Скорость ходьбы: [color=darkred]0.2 клеток/сек/color]. +Скорость ходьбы: [color=darkred]0.2 клеток/сек[/color]. Скорость атаки: [color=darkred]2.67 Гц[/color]. Урон от атаки: [color=darkred]1 укус[/color]." conehead,Conehead,Конусоголовый diff --git a/translations/zombies.ru.translation b/translations/zombies.ru.translation index 60fd75b0d0868bb4ce2f2bdf655b718faeb7d1f6..8064600dcd2b929ef0d4ee5212c6bf686aa4fd53 100644 GIT binary patch delta 97 zcmX>odQ^17T1G~j$?F)6c~3AhFo3X<)!);xlix9lOI9#5FdPAjfG`k&aqE?wS&@_F ln5-EiH%BquWSZQ~$vHWO*=Tbvs|PDTP!T&+VNh_8GXNmP7n=Y8 delta 86 zcmX>qdQf!3T1H0e$?F)6d5<$PFo3X<)!)-Glix9lOO`V;FdPAjfG`k&aqE?wSrL=v bn5-EiHb*htWZG=P+QiDk4wVfG4sr$n5kD0^ From dba3bc863fb042db4bef9392b05b7f7c1891c5aa Mon Sep 17 00:00:00 2001 From: Rendo Date: Sat, 12 Jul 2025 07:53:02 +0500 Subject: [PATCH 24/48] Lines fixed --- scenes/prototype_survival.tscn | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/scenes/prototype_survival.tscn b/scenes/prototype_survival.tscn index 3c4599f..ad1ec4d 100644 --- a/scenes/prototype_survival.tscn +++ b/scenes/prototype_survival.tscn @@ -415,8 +415,8 @@ shape = SubResource("WorldBoundaryShape2D_3ghv7") [node name="Floor5" type="StaticBody2D" parent="Lines"] position = Vector2(528, 132) -collision_layer = 128 -collision_mask = 64 +collision_layer = 64 +collision_mask = 0 [node name="CollisionShape2D" type="CollisionShape2D" parent="Lines/Floor5"] shape = SubResource("WorldBoundaryShape2D_3ghv7") From 37748dee68b4ab4fc532b9fe6e6c43e36cda4a0a Mon Sep 17 00:00:00 2001 From: Rendo Date: Sat, 12 Jul 2025 07:55:52 +0500 Subject: [PATCH 25/48] New icon --- icon.ico | Bin 138662 -> 1280062 bytes icon.png | Bin 7547 -> 6933 bytes 2 files changed, 0 insertions(+), 0 deletions(-) diff --git a/icon.ico b/icon.ico index 48a7f0a9110c5fb47e349237773d59401cca4cfb..0a367433be01d82a36cf2e0cce2fd0b254f31320 100644 GIT binary patch literal 1280062 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 diff --git a/icon.png b/icon.png index ca346e043afc75d1b4b7c2b7637ea0ae11824dab..bc2a14ee7cae2e53ebb5a2d16a840c0b35cf36ff 100644 GIT binary patch literal 6933 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 literal 7547 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 jme6yjU|wDtChF%O)z|k|_u0qaZ>L Date: Sat, 12 Jul 2025 08:43:56 +0500 Subject: [PATCH 26/48] Saving some parameters --- project.godot | 3 +- scenes/main_menu.tscn | 9 ++++-- scripts/SettingsSerializer.cs | 43 ++++++++++++++++++++++++++++ scripts/SettingsSerializer.cs.uid | 1 + scripts/Utility.cs | 1 + scripts/gui/PrototypeWindow.cs | 12 ++++++++ scripts/gui/PrototypeWindow.cs.uid | 1 + scripts/gui/menu_buttons.gd | 6 +++- scripts/gui/prototype_window.gd | 9 ------ scripts/gui/prototype_window.gd.uid | 1 - translations/gui.csv | 1 + translations/gui.en.translation | Bin 1666 -> 1686 bytes translations/gui.ru.translation | Bin 2729 -> 2757 bytes 13 files changed, 73 insertions(+), 14 deletions(-) create mode 100644 scripts/SettingsSerializer.cs create mode 100644 scripts/SettingsSerializer.cs.uid create mode 100644 scripts/gui/PrototypeWindow.cs create mode 100644 scripts/gui/PrototypeWindow.cs.uid delete mode 100644 scripts/gui/prototype_window.gd delete mode 100644 scripts/gui/prototype_window.gd.uid diff --git a/project.godot b/project.godot index 3576068..eb23521 100644 --- a/project.godot +++ b/project.godot @@ -27,8 +27,9 @@ config/windows_native_icon="res://icon.ico" LevelController="*res://scripts/LevelController.cs" Cursor="*res://scripts/Cursor.cs" GameRegistry="*res://scripts/systems/GameRegistry.cs" -Cheats="*res://scripts/debug/Cheats.cs" +Cheats="res://scripts/debug/Cheats.cs" AudioSequencer="*res://scenes/audio_sequencer.tscn" +SettingsSerializer="*res://scripts/SettingsSerializer.cs" [display] diff --git a/scenes/main_menu.tscn b/scenes/main_menu.tscn index f47d938..437bba9 100644 --- a/scenes/main_menu.tscn +++ b/scenes/main_menu.tscn @@ -2,7 +2,7 @@ [ext_resource type="Texture2D" uid="uid://dvldjlg0nr355" path="res://assets/sprites/atlases/atlas1.png" id="1_jk1qb"] [ext_resource type="Script" uid="uid://drru785m4eep" path="res://scripts/gui/main_menu_rich_text.gd" id="2_5dd4i"] -[ext_resource type="Script" uid="uid://dgevhrbucpwrs" path="res://scripts/gui/prototype_window.gd" id="2_lgwnu"] +[ext_resource type="Script" uid="uid://cghu4i3bnyavg" path="res://scripts/gui/PrototypeWindow.cs" id="2_flqon"] [ext_resource type="Texture2D" uid="uid://c37pvdhol2x02" path="res://assets/sprites/menu_bg.png" id="3_lgwnu"] [ext_resource type="Theme" uid="uid://btulhvgwclket" path="res://resources/themes/MainMenu.tres" id="4_flqon"] [ext_resource type="Script" uid="uid://c06k4k3ww48ev" path="res://scripts/gui/menu_buttons.gd" id="5_rcqid"] @@ -63,7 +63,7 @@ borderless = true theme_override_styles/panel = SubResource("StyleBoxTexture_jl0ue") ok_button_text = "close" dialog_close_on_escape = false -script = ExtResource("2_lgwnu") +script = ExtResource("2_flqon") [node name="ScrollContainer" type="ScrollContainer" parent="PrototypeWindow"] offset_left = 6.0 @@ -151,6 +151,10 @@ offset_bottom = 235.0 layout_mode = 2 text = "about" +[node name="SplashButton" type="Button" parent="Buttons/InfoButtons"] +layout_mode = 2 +text = "splash" + [node name="AlmanachButton" type="Button" parent="Buttons/InfoButtons"] layout_mode = 2 icon = ExtResource("7_flqon") @@ -207,6 +211,7 @@ script = SubResource("GDScript_flqon") [connection signal="pressed" from="Buttons/GameButtons/PlayButton" to="Buttons" method="_on_play_button_pressed"] [connection signal="pressed" from="Buttons/GameButtons/ExitButton" to="Buttons" method="_on_exit_button_pressed"] [connection signal="pressed" from="Buttons/InfoButtons/AboutButton" to="Buttons" method="_on_button_pressed"] +[connection signal="pressed" from="Buttons/InfoButtons/SplashButton" to="Buttons" method="_on_splash_button_pressed"] [connection signal="pressed" from="Buttons/InfoButtons/AlmanachButton" to="Buttons" method="_on_almanach_button_pressed"] [connection signal="close_requested" from="Buttons/SACRIFICE/CONFIRM" to="Buttons/SACRIFICE" method="_on_confirm_close_requested"] [connection signal="confirmed" from="Buttons/SACRIFICE/CONFIRM" to="Buttons/SACRIFICE" method="_on_confirm_confirmed"] diff --git a/scripts/SettingsSerializer.cs b/scripts/SettingsSerializer.cs new file mode 100644 index 0000000..35b7caa --- /dev/null +++ b/scripts/SettingsSerializer.cs @@ -0,0 +1,43 @@ +using Godot; +using Newlon; +using System; + +public partial class SettingsSerializer : Node +{ + const string CFG_PATH = "user://config.cfg"; + public override void _EnterTree() + { + GetTree().AutoAcceptQuit = false; + if (FileAccess.FileExists(CFG_PATH) == false) return; + + var access = FileAccess.Open(CFG_PATH, FileAccess.ModeFlags.Read); + + Utility.SFX = float.Parse(access.GetLine().Split(" ")[1]); + Utility.Music = float.Parse(access.GetLine().Split(" ")[1]); + Utility.Splash = bool.Parse(access.GetLine().Split(" ")[1]); + + AudioServer.SetBusVolumeDb(0, Mathf.LinearToDb((float)Utility.SFX)); + AudioServer.SetBusVolumeDb(1, Mathf.LinearToDb((float)Utility.Music)); + + access.Close(); + } + public override void _ExitTree() + { + var access = FileAccess.Open(CFG_PATH, FileAccess.ModeFlags.Write); + access.Resize(0); + access.StoreString(string.Format("SFX {0}\nMusic {1}\nSplash {2}\n", Utility.SFX,Utility.Music,Utility.Splash)); + + access.Close(); + } + + public override void _Notification(int what) + { + if (what == NotificationWMCloseRequest) + { + _ExitTree(); + GetTree().Quit(); + } + } + + +} diff --git a/scripts/SettingsSerializer.cs.uid b/scripts/SettingsSerializer.cs.uid new file mode 100644 index 0000000..2b68752 --- /dev/null +++ b/scripts/SettingsSerializer.cs.uid @@ -0,0 +1 @@ +uid://bflvotmed7jfy diff --git a/scripts/Utility.cs b/scripts/Utility.cs index ae804ac..50a4eab 100644 --- a/scripts/Utility.cs +++ b/scripts/Utility.cs @@ -31,6 +31,7 @@ public class Utility public static double SFX = 1.0f; public static double Music = 1.0f; + public static bool Splash = false; } diff --git a/scripts/gui/PrototypeWindow.cs b/scripts/gui/PrototypeWindow.cs new file mode 100644 index 0000000..39ba7d9 --- /dev/null +++ b/scripts/gui/PrototypeWindow.cs @@ -0,0 +1,12 @@ +using Godot; +using Newlon; + +public partial class PrototypeWindow : AcceptDialog +{ + public override void _Ready() + { + if (Utility.Splash) return; + Utility.Splash = true; + PopupCentered(); + } +} diff --git a/scripts/gui/PrototypeWindow.cs.uid b/scripts/gui/PrototypeWindow.cs.uid new file mode 100644 index 0000000..3b3182a --- /dev/null +++ b/scripts/gui/PrototypeWindow.cs.uid @@ -0,0 +1 @@ +uid://cghu4i3bnyavg diff --git a/scripts/gui/menu_buttons.gd b/scripts/gui/menu_buttons.gd index 9c89ded..8f62543 100644 --- a/scripts/gui/menu_buttons.gd +++ b/scripts/gui/menu_buttons.gd @@ -7,6 +7,7 @@ func _on_play_button_pressed() -> void: func _on_exit_button_pressed() -> void: + get_tree().root.propagate_notification(NOTIFICATION_WM_CLOSE_REQUEST) get_tree().quit() $ChannelPlayer.call("Play") @@ -15,7 +16,10 @@ func _on_button_pressed() -> void: $"../AboutWindow".popup_centered() $ChannelPlayer.call("Play") - func _on_almanach_button_pressed() -> void: $"../Almanach".visible = true $ChannelPlayer.call("Play") + + +func _on_splash_button_pressed() -> void: + $"../PrototypeWindow".popup_centered() diff --git a/scripts/gui/prototype_window.gd b/scripts/gui/prototype_window.gd deleted file mode 100644 index 24cc614..0000000 --- a/scripts/gui/prototype_window.gd +++ /dev/null @@ -1,9 +0,0 @@ -extends AcceptDialog - -static var seen = false - -func _ready() -> void: - if seen: - return - seen = true - popup_centered() diff --git a/scripts/gui/prototype_window.gd.uid b/scripts/gui/prototype_window.gd.uid deleted file mode 100644 index dece4b3..0000000 --- a/scripts/gui/prototype_window.gd.uid +++ /dev/null @@ -1 +0,0 @@ -uid://dgevhrbucpwrs diff --git a/translations/gui.csv b/translations/gui.csv index c0462a2..11e08c3 100644 --- a/translations/gui.csv +++ b/translations/gui.csv @@ -53,3 +53,4 @@ close,Close,Закрыть sfx,SFX,Звуки music,Music,Музыка paused,Paused,Игра на паузе +splash,Splash,Сплэш diff --git a/translations/gui.en.translation b/translations/gui.en.translation index 0c1052f282bdbcb8854bd9868d36247f55a81a2c..ca9e4a3315627ccb6957822d54a88a8e2f5399a5 100644 GIT binary patch delta 115 zcmZqToyNPNk5N;Pfq~&a60kwyI|13OK&$}79+S5-PL^W=vKWDQxAcv_K#GAKiuafp in9gOM9Klq@xMcHXrUlHx!38;q#Tj4)APqsmLCye>ASOfr delta 95 zcmbQn+r+z}k5N;Lfq~&a60ktx+X30EK&$}7E|a%2PUd3-vOsvZ^o_p^43jgMsu<^P Te$2FhnI9;~4wVcF4sr$n)rld> diff --git a/translations/gui.ru.translation b/translations/gui.ru.translation index ed37c92e7cb796e2a466fb021b993010ea139741..a5d2c9f545333fc7d291db0fb2d769faadc16038 100644 GIT binary patch delta 128 zcmZ1}dQ^17Tt-bj1_p-zNWcb(?*wGC00e9Y7hN0uJ`#&sB delta 100 zcmX>qx>9t*Tt-bT1_p-zNWcP#ZwF+v05s-?Y;2>uJl-(lB From 1dc16dbdf7468a8bb392bd89e688294147c8a99c Mon Sep 17 00:00:00 2001 From: Rendo Date: Sat, 12 Jul 2025 16:56:36 +0500 Subject: [PATCH 27/48] Armor observer --- project.godot | 2 +- scenes/entities/Zombies/hobo.tscn | 66 +++++++++++++++++++++---------- scripts/Armor.cs | 2 +- scripts/ArmorHPObserver.cs | 32 +++++++++++++++ scripts/ArmorHPObserver.cs.uid | 1 + 5 files changed, 80 insertions(+), 23 deletions(-) create mode 100644 scripts/ArmorHPObserver.cs create mode 100644 scripts/ArmorHPObserver.cs.uid diff --git a/project.godot b/project.godot index eb23521..1ec38b8 100644 --- a/project.godot +++ b/project.godot @@ -16,7 +16,7 @@ warnings/check_angle_interpolation_type_conflicting=false [application] config/name="Liberation of the Neighbourville" -config/version="0.2.0" +config/version="0.2.1" run/main_scene="uid://bfstrli64u23y" config/features=PackedStringArray("4.4", "C#", "Forward Plus") config/icon="res://icon.png" diff --git a/scenes/entities/Zombies/hobo.tscn b/scenes/entities/Zombies/hobo.tscn index e967583..835b3b5 100644 --- a/scenes/entities/Zombies/hobo.tscn +++ b/scenes/entities/Zombies/hobo.tscn @@ -1,4 +1,4 @@ -[gd_scene load_steps=62 format=3 uid="uid://bgqmwsb6ynm81"] +[gd_scene load_steps=64 format=3 uid="uid://bgqmwsb6ynm81"] [ext_resource type="PackedScene" uid="uid://co11v3w8hbwgf" path="res://scenes/entities/Zombies/zombie.tscn" id="1_fnu7s"] [ext_resource type="Shader" uid="uid://d0eo5uuj222c4" path="res://assets/shaders/CG_color_blender.gdshader" id="2_6qr4h"] @@ -18,6 +18,7 @@ [ext_resource type="AnimationLibrary" uid="uid://c0tlm0ta4dgbk" path="res://resources/animations/zombies/hobo.res" id="8_yb81c"] [ext_resource type="AudioStream" uid="uid://w0qfwds4o3ti" path="res://assets/audio/sfx/hit_generic.tres" id="9_tu6af"] [ext_resource type="Script" uid="uid://c36bj8u7jghc7" path="res://scripts/audio/ChannelPlayer.cs" id="11_7jlle"] +[ext_resource type="Script" uid="uid://d3l8e8ko5r5i3" path="res://scripts/ArmorHPObserver.cs" id="12_vn3j1"] [ext_resource type="AudioStream" uid="uid://ch55p7qbaawtp" path="res://assets/audio/sfx/argh.tres" id="12_w1b1s"] [sub_resource type="ShaderMaterial" id="ShaderMaterial_w8pya"] @@ -90,6 +91,8 @@ region = Rect2(38, 22, 22, 13) atlas = ExtResource("5_b583s") region = Rect2(34, 38, 45, 27) +[sub_resource type="CircleShape2D" id="CircleShape2D_vn3j1"] + [sub_resource type="AtlasTexture" id="AtlasTexture_tebih"] atlas = ExtResource("5_b583s") region = Rect2(34, 0, 6, 19) @@ -738,7 +741,6 @@ transitions = ["Start", "Idle", SubResource("AnimationNodeStateMachineTransition graph_offset = Vector2(274, -18) [sub_resource type="AnimationNodeBlendTree" id="AnimationNodeBlendTree_txjqc"] -graph_offset = Vector2(-427.399, 70.0005) nodes/TimeScale/node = SubResource("AnimationNodeTimeScale_2q05d") nodes/TimeScale/position = Vector2(60, 120) nodes/Tree/node = SubResource("AnimationNodeStateMachine_xg3p6") @@ -767,16 +769,16 @@ scale = Vector2(0.999902, 0.999902) texture = SubResource("AtlasTexture_txjqc") [node name="RightUpperLeg" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt" index="1"] -scale = Vector2(0.999827, 0.999827) +scale = Vector2(0.999829, 0.999829) [node name="Right_Upper_Leg" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/RightUpperLeg" index="0"] texture = SubResource("AtlasTexture_b583s") [node name="RightLowerLeg" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/RightUpperLeg" index="1"] -scale = Vector2(0.99983, 0.99983) +scale = Vector2(0.999832, 0.999832) [node name="RightFoot" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/RightUpperLeg/RightLowerLeg" index="0"] -scale = Vector2(0.999825, 0.999825) +scale = Vector2(0.999829, 0.999829) [node name="Right_Foot" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/RightUpperLeg/RightLowerLeg/RightFoot" index="0"] texture = SubResource("AtlasTexture_uoit3") @@ -785,19 +787,19 @@ texture = SubResource("AtlasTexture_uoit3") texture = SubResource("AtlasTexture_vn3j1") [node name="LeftUpperLeg" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt" index="2"] -scale = Vector2(0.999829, 0.999829) +scale = Vector2(0.999826, 0.999826) [node name="Left_Upper_Leg" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/LeftUpperLeg" index="0"] texture = SubResource("AtlasTexture_yb81c") [node name="LeftLowerLeg" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/LeftUpperLeg" index="1"] -scale = Vector2(0.999829, 0.999829) +scale = Vector2(0.999827, 0.999827) [node name="Left_Lower_Leg" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/LeftUpperLeg/LeftLowerLeg" index="0"] texture = SubResource("AtlasTexture_nlwsb") [node name="LeftFoot" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/LeftUpperLeg/LeftLowerLeg" index="1"] -scale = Vector2(0.999818, 0.999818) +scale = Vector2(0.999823, 0.999823) [node name="Left_Foot" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/LeftUpperLeg/LeftLowerLeg/LeftFoot" index="0"] texture = SubResource("AtlasTexture_8y6c0") @@ -806,7 +808,7 @@ texture = SubResource("AtlasTexture_8y6c0") scale = Vector2(0.999827, 0.999827) [node name="RightUpperArm" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body" index="0"] -scale = Vector2(0.999828, 0.999828) +scale = Vector2(0.999826, 0.999826) [node name="Right_Upper_Arm" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/RightUpperArm" index="0"] texture = SubResource("AtlasTexture_nc6p3") @@ -828,7 +830,7 @@ texture = SubResource("AtlasTexture_0s5wm") [node name="Tie" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body" index="2"] position = Vector2(-9, -21) -rotation = 0.042342 +rotation = 0.00885234 scale = Vector2(1e-05, 1e-05) [node name="Tie" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/Tie" index="0"] @@ -871,27 +873,48 @@ texture = SubResource("AtlasTexture_pjhfy") [node name="Right_Eye" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/Head/HeadParticle/Head" index="0"] position = Vector2(-16, -8) +scale = Vector2(1, 1) [node name="Left_Eye" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/Head/HeadParticle/Head" index="1"] -position = Vector2(-4, -9) +position = Vector2(-4, -9.00001) +scale = Vector2(1, 1) [node name="Jaw" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/Head/HeadParticle/Head" index="2"] position = Vector2(-3, 3) -rotation = -0.0688665 -scale = Vector2(0.999827, 0.999827) +rotation = -0.0143978 +scale = Vector2(0.999829, 0.999829) texture = SubResource("AtlasTexture_7cvmi") offset = Vector2(-14, -2) -[node name="Trashcan_lid" type="Sprite2D" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/Head/HeadParticle/Head" index="3"] +[node name="TrashcanLid" type="RigidBody2D" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/Head/HeadParticle/Head" index="3" node_paths=PackedStringArray("data")] +position = Vector2(-3, 3) +scale = Vector2(0.999826, 0.999826) +collision_layer = 128 +collision_mask = 64 +freeze = true +script = ExtResource("3_tu6af") +data = NodePath("../../../../../../../../..") + +[node name="Trashcan_lid" type="Sprite2D" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/Head/HeadParticle/Head/TrashcanLid" index="0"] z_index = -1 -position = Vector2(-0.00229669, -17.0131) -scale = Vector2(0.999828, 0.999828) +position = Vector2(2.99822, -20.0166) +scale = Vector2(1, 1) texture = SubResource("AtlasTexture_n380g") offset = Vector2(-0.5, -0.5) metadata/_edit_lock_ = true +[node name="CollisionShape2D" type="CollisionShape2D" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/Head/HeadParticle/Head/TrashcanLid" index="1"] +position = Vector2(2.99791, -20.018) +scale = Vector2(1, 1) +shape = SubResource("CircleShape2D_vn3j1") + +[node name="Observer" type="Node" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/Head/HeadParticle/Head/TrashcanLid" index="2" node_paths=PackedStringArray("_observedArmor")] +script = ExtResource("12_vn3j1") +_threshold = 0.333 +_observedArmor = NodePath("../../../../../../../../../../CanArmor") + [node name="Jaw" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/Head" index="1"] -scale = Vector2(0.999827, 0.999827) +scale = Vector2(0.999828, 0.999828) [node name="TrashcanLid" type="Bone2D" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/Head" index="4"] position = Vector2(-0.0022974, -17.0131) @@ -903,16 +926,16 @@ bone_angle = 180.0 editor_settings/show_bone_gizmo = false [node name="RemoteTransform2D" type="RemoteTransform2D" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/Head/TrashcanLid" index="0"] -remote_path = NodePath("../../HeadParticle/Head/Trashcan_lid") +remote_path = NodePath("../../HeadParticle/Head/TrashcanLid/Trashcan_lid") [node name="LeftUpperArm" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body" index="5"] -scale = Vector2(0.999827, 0.999827) +scale = Vector2(0.999829, 0.999829) [node name="Left_Upper_Arm" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/LeftUpperArm" index="0"] texture = SubResource("AtlasTexture_tebih") [node name="Left_Lower_Arm" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/LeftUpperArm/HandProjectile" index="0"] -rotation = 0.0381959 +rotation = 0.00798553 scale = Vector2(0.999999, 0.999999) texture = SubResource("AtlasTexture_auxav") @@ -964,7 +987,8 @@ audioStream = ExtResource("12_w1b1s") channel = "anger" metadata/_custom_type_script = "uid://c36bj8u7jghc7" -[connection signal="ThresholdReached" from="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/Head/HeadParticle/Observer" to="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/Head/TrashcanLid/RemoteTransform2D" method="queue_free"] +[connection signal="ThresholdReached" from="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/Head/HeadParticle/Head/TrashcanLid/Observer" to="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/Head/TrashcanLid/RemoteTransform2D" method="queue_free"] +[connection signal="ThresholdReached" from="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/Head/HeadParticle/Head/TrashcanLid/Observer" to="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/Head/HeadParticle/Head/TrashcanLid" method="FallOff"] [connection signal="ArmorLost" from="CanArmor" to="HitPlayer" method="Next"] [connection signal="ArmorLost" from="CanArmor" to="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/Can" method="FallOff"] [connection signal="ArmorLost" from="CanArmor" to="Behaviour" method="Trashed"] diff --git a/scripts/Armor.cs b/scripts/Armor.cs index 7e8ba22..7c1d710 100644 --- a/scripts/Armor.cs +++ b/scripts/Armor.cs @@ -12,7 +12,7 @@ public partial class Armor : Node [Export] public float MaxHP { get; private set; } - private float _hp; + public float _hp; private bool _lost = false; public override void _Ready() diff --git a/scripts/ArmorHPObserver.cs b/scripts/ArmorHPObserver.cs new file mode 100644 index 0000000..59d1445 --- /dev/null +++ b/scripts/ArmorHPObserver.cs @@ -0,0 +1,32 @@ +using Godot; + +namespace Newlon.Components; + +public partial class ArmorHPObserver : Node +{ + [Export] private float _threshold = 0.5f; + [Export] private bool _setGreater = false; + [Export] private Armor _observedArmor; + [Signal] public delegate void ThresholdReachedEventHandler(); + + public override void _Ready() + { + _observedArmor.ArmorDamaged += OnHPChanged; + } + + private void OnHPChanged(float delta) + { + if (_setGreater == false && _observedArmor._hp / _observedArmor.MaxHP < _threshold) + { + EmitSignal(SignalName.ThresholdReached); + _observedArmor.ArmorDamaged -= OnHPChanged; + QueueFree(); + } + else if (_setGreater && _observedArmor._hp / _observedArmor.MaxHP > _threshold) + { + EmitSignal(SignalName.ThresholdReached); + _observedArmor.ArmorDamaged -= OnHPChanged; + QueueFree(); + } + } +} diff --git a/scripts/ArmorHPObserver.cs.uid b/scripts/ArmorHPObserver.cs.uid new file mode 100644 index 0000000..c1f6b50 --- /dev/null +++ b/scripts/ArmorHPObserver.cs.uid @@ -0,0 +1 @@ +uid://d3l8e8ko5r5i3 From 738c4da834a9c78e04bf3c09ccc9ae79343f8946 Mon Sep 17 00:00:00 2001 From: Rendo Date: Sat, 12 Jul 2025 20:59:35 +0500 Subject: [PATCH 28/48] Splitted default and music bus --- default_bus_layout.tres | 6 +++++ scenes/entities/Zombies/hobo.tscn | 37 ++++++++++++++----------------- scenes/gui/pause_menu.tscn | 26 +++++++++++++--------- scripts/audio/AudioSequencer.cs | 1 + scripts/audio/AudioSlider.cs | 2 +- 5 files changed, 40 insertions(+), 32 deletions(-) diff --git a/default_bus_layout.tres b/default_bus_layout.tres index 3cde41a..1654afb 100644 --- a/default_bus_layout.tres +++ b/default_bus_layout.tres @@ -8,3 +8,9 @@ bus/1/mute = false bus/1/bypass_fx = false bus/1/volume_db = -0.130497 bus/1/send = &"Master" +bus/2/name = &"SFXBus" +bus/2/solo = false +bus/2/mute = false +bus/2/bypass_fx = false +bus/2/volume_db = 0.0 +bus/2/send = &"Master" diff --git a/scenes/entities/Zombies/hobo.tscn b/scenes/entities/Zombies/hobo.tscn index 835b3b5..a9bc7f3 100644 --- a/scenes/entities/Zombies/hobo.tscn +++ b/scenes/entities/Zombies/hobo.tscn @@ -769,13 +769,13 @@ scale = Vector2(0.999902, 0.999902) texture = SubResource("AtlasTexture_txjqc") [node name="RightUpperLeg" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt" index="1"] -scale = Vector2(0.999829, 0.999829) +scale = Vector2(0.999828, 0.999828) [node name="Right_Upper_Leg" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/RightUpperLeg" index="0"] texture = SubResource("AtlasTexture_b583s") [node name="RightLowerLeg" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/RightUpperLeg" index="1"] -scale = Vector2(0.999832, 0.999832) +scale = Vector2(0.999831, 0.999831) [node name="RightFoot" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/RightUpperLeg/RightLowerLeg" index="0"] scale = Vector2(0.999829, 0.999829) @@ -787,34 +787,34 @@ texture = SubResource("AtlasTexture_uoit3") texture = SubResource("AtlasTexture_vn3j1") [node name="LeftUpperLeg" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt" index="2"] -scale = Vector2(0.999826, 0.999826) +scale = Vector2(0.999828, 0.999828) [node name="Left_Upper_Leg" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/LeftUpperLeg" index="0"] texture = SubResource("AtlasTexture_yb81c") [node name="LeftLowerLeg" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/LeftUpperLeg" index="1"] -scale = Vector2(0.999827, 0.999827) +scale = Vector2(0.999829, 0.999829) [node name="Left_Lower_Leg" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/LeftUpperLeg/LeftLowerLeg" index="0"] texture = SubResource("AtlasTexture_nlwsb") [node name="LeftFoot" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/LeftUpperLeg/LeftLowerLeg" index="1"] -scale = Vector2(0.999823, 0.999823) +scale = Vector2(0.999822, 0.999822) [node name="Left_Foot" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/LeftUpperLeg/LeftLowerLeg/LeftFoot" index="0"] texture = SubResource("AtlasTexture_8y6c0") [node name="Body" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt" index="3"] -scale = Vector2(0.999827, 0.999827) +scale = Vector2(0.999828, 0.999828) [node name="RightUpperArm" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body" index="0"] -scale = Vector2(0.999826, 0.999826) +scale = Vector2(0.999825, 0.999825) [node name="Right_Upper_Arm" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/RightUpperArm" index="0"] texture = SubResource("AtlasTexture_nc6p3") [node name="RightLowerArm" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/RightUpperArm" index="1"] -scale = Vector2(0.999813, 0.999813) +scale = Vector2(0.999814, 0.999814) [node name="RightHand" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/RightUpperArm/RightLowerArm" index="0"] scale = Vector2(0.999828, 0.999828) @@ -830,7 +830,7 @@ texture = SubResource("AtlasTexture_0s5wm") [node name="Tie" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body" index="2"] position = Vector2(-9, -21) -rotation = 0.00885234 +rotation = 0.0163802 scale = Vector2(1e-05, 1e-05) [node name="Tie" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/Tie" index="0"] @@ -873,15 +873,13 @@ texture = SubResource("AtlasTexture_pjhfy") [node name="Right_Eye" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/Head/HeadParticle/Head" index="0"] position = Vector2(-16, -8) -scale = Vector2(1, 1) [node name="Left_Eye" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/Head/HeadParticle/Head" index="1"] -position = Vector2(-4, -9.00001) -scale = Vector2(1, 1) +position = Vector2(-4, -9) [node name="Jaw" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/Head/HeadParticle/Head" index="2"] position = Vector2(-3, 3) -rotation = -0.0143978 +rotation = -0.0266413 scale = Vector2(0.999829, 0.999829) texture = SubResource("AtlasTexture_7cvmi") offset = Vector2(-14, -2) @@ -905,7 +903,6 @@ metadata/_edit_lock_ = true [node name="CollisionShape2D" type="CollisionShape2D" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/Head/HeadParticle/Head/TrashcanLid" index="1"] position = Vector2(2.99791, -20.018) -scale = Vector2(1, 1) shape = SubResource("CircleShape2D_vn3j1") [node name="Observer" type="Node" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/Head/HeadParticle/Head/TrashcanLid" index="2" node_paths=PackedStringArray("_observedArmor")] @@ -914,7 +911,7 @@ _threshold = 0.333 _observedArmor = NodePath("../../../../../../../../../../CanArmor") [node name="Jaw" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/Head" index="1"] -scale = Vector2(0.999828, 0.999828) +scale = Vector2(0.999829, 0.999829) [node name="TrashcanLid" type="Bone2D" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/Head" index="4"] position = Vector2(-0.0022974, -17.0131) @@ -929,14 +926,14 @@ editor_settings/show_bone_gizmo = false remote_path = NodePath("../../HeadParticle/Head/TrashcanLid/Trashcan_lid") [node name="LeftUpperArm" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body" index="5"] -scale = Vector2(0.999829, 0.999829) +scale = Vector2(0.999826, 0.999826) [node name="Left_Upper_Arm" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/LeftUpperArm" index="0"] texture = SubResource("AtlasTexture_tebih") [node name="Left_Lower_Arm" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/LeftUpperArm/HandProjectile" index="0"] -rotation = 0.00798553 -scale = Vector2(0.999999, 0.999999) +rotation = 0.0147763 +scale = Vector2(0.999998, 0.999998) texture = SubResource("AtlasTexture_auxav") [node name="Left_Hand" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/LeftUpperArm/HandProjectile/Left_Lower_Arm" index="0"] @@ -945,7 +942,7 @@ scale = Vector2(0.999652, 0.999652) texture = SubResource("AtlasTexture_dntsa") [node name="LeftLowerArm" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/LeftUpperArm" index="2"] -scale = Vector2(0.999829, 0.999829) +scale = Vector2(0.999828, 0.999828) [node name="LeftHand" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/LeftUpperArm/LeftLowerArm" index="0"] scale = Vector2(0.999822, 0.999822) @@ -987,8 +984,8 @@ audioStream = ExtResource("12_w1b1s") channel = "anger" metadata/_custom_type_script = "uid://c36bj8u7jghc7" -[connection signal="ThresholdReached" from="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/Head/HeadParticle/Head/TrashcanLid/Observer" to="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/Head/TrashcanLid/RemoteTransform2D" method="queue_free"] [connection signal="ThresholdReached" from="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/Head/HeadParticle/Head/TrashcanLid/Observer" to="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/Head/HeadParticle/Head/TrashcanLid" method="FallOff"] +[connection signal="ThresholdReached" from="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/Head/HeadParticle/Head/TrashcanLid/Observer" to="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/Head/TrashcanLid/RemoteTransform2D" method="queue_free"] [connection signal="ArmorLost" from="CanArmor" to="HitPlayer" method="Next"] [connection signal="ArmorLost" from="CanArmor" to="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/Can" method="FallOff"] [connection signal="ArmorLost" from="CanArmor" to="Behaviour" method="Trashed"] diff --git a/scenes/gui/pause_menu.tscn b/scenes/gui/pause_menu.tscn index 9527214..c9d2959 100644 --- a/scenes/gui/pause_menu.tscn +++ b/scenes/gui/pause_menu.tscn @@ -72,14 +72,25 @@ label_settings = SubResource("LabelSettings_or0he") horizontal_alignment = 1 metadata/_edit_use_anchors_ = true -[node name="SFXVolume" type="HBoxContainer" parent="Pause/MarginContainer/Buttons"] +[node name="Volumes" type="HBoxContainer" parent="Pause/MarginContainer/Buttons"] layout_mode = 2 -[node name="Label" type="Label" parent="Pause/MarginContainer/Buttons/SFXVolume"] +[node name="Labels" type="VBoxContainer" parent="Pause/MarginContainer/Buttons/Volumes"] +layout_mode = 2 + +[node name="SFX" type="Label" parent="Pause/MarginContainer/Buttons/Volumes/Labels"] layout_mode = 2 text = "sfx" -[node name="HSlider" type="HSlider" parent="Pause/MarginContainer/Buttons/SFXVolume"] +[node name="Music" type="Label" parent="Pause/MarginContainer/Buttons/Volumes/Labels"] +layout_mode = 2 +text = "music" + +[node name="Sliders" type="VBoxContainer" parent="Pause/MarginContainer/Buttons/Volumes"] +layout_mode = 2 +size_flags_horizontal = 3 + +[node name="SFX" type="HSlider" parent="Pause/MarginContainer/Buttons/Volumes/Sliders"] layout_mode = 2 size_flags_horizontal = 3 max_value = 1.0 @@ -87,14 +98,7 @@ step = 0.01 value = 1.0 script = ExtResource("3_e3p60") -[node name="MusicVolume" type="HBoxContainer" parent="Pause/MarginContainer/Buttons"] -layout_mode = 2 - -[node name="Label" type="Label" parent="Pause/MarginContainer/Buttons/MusicVolume"] -layout_mode = 2 -text = "music" - -[node name="HSlider" type="HSlider" parent="Pause/MarginContainer/Buttons/MusicVolume"] +[node name="Music" type="HSlider" parent="Pause/MarginContainer/Buttons/Volumes/Sliders"] layout_mode = 2 size_flags_horizontal = 3 max_value = 1.0 diff --git a/scripts/audio/AudioSequencer.cs b/scripts/audio/AudioSequencer.cs index e3e4867..eee6960 100644 --- a/scripts/audio/AudioSequencer.cs +++ b/scripts/audio/AudioSequencer.cs @@ -58,6 +58,7 @@ public partial class AudioSequencer : Node channelProcess.Add(id, false); player.Name = id; player.MaxPolyphony = 5; + player.Bus = "SFXBus"; player.Finished += () => { MarkChannel(id, false); }; diff --git a/scripts/audio/AudioSlider.cs b/scripts/audio/AudioSlider.cs index 6bae9b0..f0e04f2 100644 --- a/scripts/audio/AudioSlider.cs +++ b/scripts/audio/AudioSlider.cs @@ -30,7 +30,7 @@ public partial class AudioSlider : HSlider if (affects == TYPE.SFX) { Utility.SFX = Value; - AudioServer.SetBusVolumeDb(0, Mathf.LinearToDb((float)Value)); + AudioServer.SetBusVolumeDb(2, Mathf.LinearToDb((float)Value)); } else { From e116400c00cc3033dfa0f4e5101f79bda7fbdda3 Mon Sep 17 00:00:00 2001 From: Rendo Date: Sat, 12 Jul 2025 21:12:01 +0500 Subject: [PATCH 29/48] Last column fixed and pause in choose your seeds --- scenes/entities/Zombies/hobo.tscn | 10 ++--- scenes/entities/Zombies/zombie.tscn | 42 ++++++++++++-------- scenes/gui/runtime_gui.tscn | 1 + scripts/gui/PauseMenu.cs | 8 ++-- scripts/gui/choose_your_seeds/Previewport.cs | 2 - scripts/plants/PlantEyesightLimiter.cs | 2 +- 6 files changed, 37 insertions(+), 28 deletions(-) diff --git a/scenes/entities/Zombies/hobo.tscn b/scenes/entities/Zombies/hobo.tscn index a9bc7f3..1d709fc 100644 --- a/scenes/entities/Zombies/hobo.tscn +++ b/scenes/entities/Zombies/hobo.tscn @@ -778,7 +778,7 @@ texture = SubResource("AtlasTexture_b583s") scale = Vector2(0.999831, 0.999831) [node name="RightFoot" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/RightUpperLeg/RightLowerLeg" index="0"] -scale = Vector2(0.999829, 0.999829) +scale = Vector2(0.99983, 0.99983) [node name="Right_Foot" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/RightUpperLeg/RightLowerLeg/RightFoot" index="0"] texture = SubResource("AtlasTexture_uoit3") @@ -793,7 +793,7 @@ scale = Vector2(0.999828, 0.999828) texture = SubResource("AtlasTexture_yb81c") [node name="LeftLowerLeg" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/LeftUpperLeg" index="1"] -scale = Vector2(0.999829, 0.999829) +scale = Vector2(0.99983, 0.99983) [node name="Left_Lower_Leg" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/LeftUpperLeg/LeftLowerLeg" index="0"] texture = SubResource("AtlasTexture_nlwsb") @@ -808,13 +808,13 @@ texture = SubResource("AtlasTexture_8y6c0") scale = Vector2(0.999828, 0.999828) [node name="RightUpperArm" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body" index="0"] -scale = Vector2(0.999825, 0.999825) +scale = Vector2(0.999824, 0.999824) [node name="Right_Upper_Arm" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/RightUpperArm" index="0"] texture = SubResource("AtlasTexture_nc6p3") [node name="RightLowerArm" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/RightUpperArm" index="1"] -scale = Vector2(0.999814, 0.999814) +scale = Vector2(0.999815, 0.999815) [node name="RightHand" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/RightUpperArm/RightLowerArm" index="0"] scale = Vector2(0.999828, 0.999828) @@ -942,7 +942,7 @@ scale = Vector2(0.999652, 0.999652) texture = SubResource("AtlasTexture_dntsa") [node name="LeftLowerArm" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/LeftUpperArm" index="2"] -scale = Vector2(0.999828, 0.999828) +scale = Vector2(0.999827, 0.999827) [node name="LeftHand" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/LeftUpperArm/LeftLowerArm" index="0"] scale = Vector2(0.999822, 0.999822) diff --git a/scenes/entities/Zombies/zombie.tscn b/scenes/entities/Zombies/zombie.tscn index f464380..fe490a4 100644 --- a/scenes/entities/Zombies/zombie.tscn +++ b/scenes/entities/Zombies/zombie.tscn @@ -754,7 +754,7 @@ _data = { } [sub_resource type="RectangleShape2D" id="RectangleShape2D_hxyad"] -size = Vector2(2, 48) +size = Vector2(9, 48) [sub_resource type="Resource" id="Resource_ruqsf"] resource_local_to_scene = true @@ -825,7 +825,7 @@ metadata/_edit_lock_ = true [node name="RightUpperLeg" type="Bone2D" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt"] use_parent_material = true position = Vector2(-6, 3) -scale = Vector2(0.999833, 0.999833) +scale = Vector2(0.999834, 0.999834) rest = Transform2D(1, 0, 0, 1, -6, 3) editor_settings/show_bone_gizmo = false @@ -837,13 +837,13 @@ metadata/_edit_lock_ = true [node name="RightLowerLeg" type="Bone2D" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/RightUpperLeg"] position = Vector2(-2, 12) -scale = Vector2(0.999832, 0.999832) +scale = Vector2(0.999831, 0.999831) rest = Transform2D(1, 0, 0, 1, -2, 12) editor_settings/show_bone_gizmo = false [node name="RightFoot" type="Bone2D" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/RightUpperLeg/RightLowerLeg"] position = Vector2(-2, 14) -scale = Vector2(0.999834, 0.999834) +scale = Vector2(0.999835, 0.999835) rest = Transform2D(1, 0, 0, 1, -2, 14) auto_calculate_length_and_angle = false length = 12.0 @@ -866,7 +866,7 @@ metadata/_edit_lock_ = true [node name="LeftUpperLeg" type="Bone2D" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt"] use_parent_material = true position = Vector2(6, 4) -scale = Vector2(0.999836, 0.999836) +scale = Vector2(0.999834, 0.999834) rest = Transform2D(1, 0, 0, 1, 6, 4) editor_settings/show_bone_gizmo = false @@ -890,7 +890,7 @@ metadata/_edit_lock_ = true [node name="LeftFoot" type="Bone2D" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/LeftUpperLeg/LeftLowerLeg"] position = Vector2(6, 10) -scale = Vector2(0.999829, 0.999829) +scale = Vector2(0.999831, 0.999831) rest = Transform2D(1, 0, 0, 1, 6, 10) auto_calculate_length_and_angle = false length = 12.0 @@ -906,7 +906,7 @@ metadata/_edit_lock_ = true [node name="Body" type="Bone2D" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt"] use_parent_material = true position = Vector2(1, -2) -scale = Vector2(0.99983, 0.99983) +scale = Vector2(0.999832, 0.999832) rest = Transform2D(1, 0, 0, 1, 1, -2) editor_settings/show_bone_gizmo = false @@ -932,7 +932,7 @@ editor_settings/show_bone_gizmo = false [node name="RightHand" type="Bone2D" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/RightUpperArm/RightLowerArm"] position = Vector2(-1, 13) -scale = Vector2(0.999829, 0.999829) +scale = Vector2(0.999828, 0.999828) rest = Transform2D(1, 0, 0, 1, -1, 13) auto_calculate_length_and_angle = false length = 8.0 @@ -960,7 +960,9 @@ metadata/_edit_lock_ = true [node name="Tie" type="Bone2D" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body"] visible = false -skew = -0.000391841 +position = Vector2(-9, -21) +rotation = 0.1519 +skew = -0.000392079 rest = Transform2D(1, 0, 0, 1, -9, -21) auto_calculate_length_and_angle = false length = 24.0 @@ -975,7 +977,7 @@ metadata/_edit_lock_ = true [node name="Head" type="Bone2D" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body"] position = Vector2(-10, -25) -scale = Vector2(0.999828, 0.999828) +scale = Vector2(0.999826, 0.999826) rest = Transform2D(1, 0, 0, 1, -10, -25) editor_settings/show_bone_gizmo = false @@ -998,6 +1000,7 @@ metadata/_edit_lock_ = true [node name="Right_Eye" type="Sprite2D" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/Head/HeadParticle/Head"] position = Vector2(-16, -8) +scale = Vector2(1, 1) texture = SubResource("AtlasTexture_vcc72") centered = false offset = Vector2(-2, -2) @@ -1005,14 +1008,16 @@ metadata/_edit_lock_ = true [node name="Left_Eye" type="Sprite2D" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/Head/HeadParticle/Head"] position = Vector2(-4, -9) +scale = Vector2(1, 1) texture = SubResource("AtlasTexture_kto0i") centered = false offset = Vector2(-2, -2) metadata/_edit_lock_ = true [node name="Jaw" type="Sprite2D" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/Head/HeadParticle/Head"] -position = Vector2(-3, 3) -scale = Vector2(0.999828, 0.999828) +position = Vector2(-2.96949, 2.91851) +rotation = 0.017854 +scale = Vector2(0.999827, 0.999827) texture = SubResource("AtlasTexture_x5uj2") centered = false offset = Vector2(-12, -2) @@ -1029,7 +1034,7 @@ _observedEntity = NodePath("../../../../../../../..") [node name="Jaw" type="Bone2D" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/Head"] position = Vector2(-3, 3) -scale = Vector2(0.999828, 0.999828) +scale = Vector2(0.999827, 0.999827) rest = Transform2D(1, 0, 0, 1, -3, 3) auto_calculate_length_and_angle = false length = 11.0 @@ -1063,7 +1068,7 @@ remote_path = NodePath("../../HeadParticle/Head/Left_Eye") [node name="LeftUpperArm" type="Bone2D" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body"] position = Vector2(-1, -20) -scale = Vector2(0.999826, 0.999826) +scale = Vector2(0.999828, 0.999828) rest = Transform2D(1, 0, 0, 1, -1, -20) editor_settings/show_bone_gizmo = false @@ -1085,6 +1090,7 @@ minTorque = -45.0 maxTorque = 45.0 [node name="Left_Lower_Arm" type="Sprite2D" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/LeftUpperArm/HandProjectile"] +rotation = 0.156803 scale = Vector2(0.999997, 0.999997) texture = SubResource("AtlasTexture_auqeq") centered = false @@ -1094,7 +1100,8 @@ metadata/_edit_lock_ = true [node name="Left_Hand" type="Sprite2D" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/LeftUpperArm/HandProjectile/Left_Lower_Arm"] show_behind_parent = true position = Vector2(-0.99983, 12.9978) -scale = Vector2(0.999658, 0.999658) +rotation = -0.0763408 +scale = Vector2(0.999659, 0.999659) texture = SubResource("AtlasTexture_vlvtp") centered = false offset = Vector2(-4, -1) @@ -1116,7 +1123,7 @@ editor_settings/show_bone_gizmo = false [node name="LeftHand" type="Bone2D" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/LeftUpperArm/LeftLowerArm"] position = Vector2(-1, 13) -scale = Vector2(0.999828, 0.999828) +scale = Vector2(0.999829, 0.999829) rest = Transform2D(1, 0, 0, 1, -1, 13) auto_calculate_length_and_angle = false length = 6.0 @@ -1141,7 +1148,7 @@ collision_layer = 8 collision_mask = 0 [node name="CollisionShape2D" type="CollisionShape2D" parent="Hitbox"] -position = Vector2(2, -24) +position = Vector2(-1.5, -24) shape = SubResource("RectangleShape2D_hxyad") [node name="Eatbox" type="Area2D" parent="."] @@ -1166,6 +1173,7 @@ entity = NodePath("..") [node name="Mover" type="Node" parent="."] script = ExtResource("4_u5syx") _speed = SubResource("Resource_ckb7n") +_speedControlMult = 0.593528 [node name="ChompPlayer" type="Node" parent="."] script = ExtResource("10_ruqsf") diff --git a/scenes/gui/runtime_gui.tscn b/scenes/gui/runtime_gui.tscn index 6e7a522..0dc969f 100644 --- a/scenes/gui/runtime_gui.tscn +++ b/scenes/gui/runtime_gui.tscn @@ -134,6 +134,7 @@ channel = "fastfw" metadata/_custom_type_script = "uid://c36bj8u7jghc7" [node name="PauseButton" parent="MarginContainer/Control/Hotbar" instance=ExtResource("5_jyq78")] +process_mode = 3 layout_mode = 2 [node name="ChannelPlayer" type="Node" parent="MarginContainer/Control/Hotbar/PauseButton"] diff --git a/scripts/gui/PauseMenu.cs b/scripts/gui/PauseMenu.cs index ffdd32b..1233132 100644 --- a/scripts/gui/PauseMenu.cs +++ b/scripts/gui/PauseMenu.cs @@ -4,15 +4,16 @@ using System; public partial class PauseMenu : Control { private static PauseMenu Instance; + private bool previousPaused; public override void _Ready() - { + { Instance = this; - } + } public void Continue() { GetParent().Visible = false; - GetTree().Paused = false; + GetTree().Paused = previousPaused; } public void Restart() { @@ -26,6 +27,7 @@ public partial class PauseMenu : Control public static void Pause() { Instance.GetParent().Visible = true; + Instance.previousPaused = Instance.GetTree().Paused; Instance.GetTree().Paused = true; } } diff --git a/scripts/gui/choose_your_seeds/Previewport.cs b/scripts/gui/choose_your_seeds/Previewport.cs index b153a49..9ebdd3a 100644 --- a/scripts/gui/choose_your_seeds/Previewport.cs +++ b/scripts/gui/choose_your_seeds/Previewport.cs @@ -1,8 +1,6 @@ using Godot; -using Newlon; using Newlon.Components; using Newlon.Components.GUI.Seedpackets; -using Newlon.Components.Plants; public partial class Previewport : SubViewport { diff --git a/scripts/plants/PlantEyesightLimiter.cs b/scripts/plants/PlantEyesightLimiter.cs index 0900fc1..bf093f5 100644 --- a/scripts/plants/PlantEyesightLimiter.cs +++ b/scripts/plants/PlantEyesightLimiter.cs @@ -8,7 +8,7 @@ public partial class PlantEyesightLimiter : CollisionShape2D { if (Shape is SegmentShape2D segment) { - segment.B = new Vector2(Utility.RightFieldBoundary.X - GlobalPosition.X, 0); + segment.B = new Vector2(Utility.RightFieldBoundary.X - GlobalPosition.X+Utility.TileWidth/2.0f, 0); } } } \ No newline at end of file From 1a0ce425ee80f3c87492d93649d6902a0a7fe8e8 Mon Sep 17 00:00:00 2001 From: Rendo Date: Sat, 12 Jul 2025 21:21:52 +0500 Subject: [PATCH 30/48] Fixed nullable settings --- scenes/audio_sequencer.tscn | 1 + scenes/entities/Zombies/zombie.tscn | 54 ++++++++++++++--------------- scripts/audio/AudioSequencer.cs | 14 +++++--- 3 files changed, 37 insertions(+), 32 deletions(-) diff --git a/scenes/audio_sequencer.tscn b/scenes/audio_sequencer.tscn index 671f21b..a9df5dc 100644 --- a/scenes/audio_sequencer.tscn +++ b/scenes/audio_sequencer.tscn @@ -4,6 +4,7 @@ [ext_resource type="Script" uid="uid://c1x4n4nqyq72f" path="res://scripts/audio/ChannelSettings.cs" id="2_npxdp"] [sub_resource type="Resource" id="Resource_iuccj"] +resource_local_to_scene = true script = ExtResource("2_npxdp") restartTreshold = 0.0 metadata/_custom_type_script = "uid://c1x4n4nqyq72f" diff --git a/scenes/entities/Zombies/zombie.tscn b/scenes/entities/Zombies/zombie.tscn index fe490a4..c1bcdcb 100644 --- a/scenes/entities/Zombies/zombie.tscn +++ b/scenes/entities/Zombies/zombie.tscn @@ -825,7 +825,7 @@ metadata/_edit_lock_ = true [node name="RightUpperLeg" type="Bone2D" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt"] use_parent_material = true position = Vector2(-6, 3) -scale = Vector2(0.999834, 0.999834) +scale = Vector2(0.999832, 0.999832) rest = Transform2D(1, 0, 0, 1, -6, 3) editor_settings/show_bone_gizmo = false @@ -837,13 +837,13 @@ metadata/_edit_lock_ = true [node name="RightLowerLeg" type="Bone2D" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/RightUpperLeg"] position = Vector2(-2, 12) -scale = Vector2(0.999831, 0.999831) +scale = Vector2(0.999833, 0.999833) rest = Transform2D(1, 0, 0, 1, -2, 12) editor_settings/show_bone_gizmo = false [node name="RightFoot" type="Bone2D" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/RightUpperLeg/RightLowerLeg"] position = Vector2(-2, 14) -scale = Vector2(0.999835, 0.999835) +scale = Vector2(0.999837, 0.999837) rest = Transform2D(1, 0, 0, 1, -2, 14) auto_calculate_length_and_angle = false length = 12.0 @@ -866,7 +866,7 @@ metadata/_edit_lock_ = true [node name="LeftUpperLeg" type="Bone2D" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt"] use_parent_material = true position = Vector2(6, 4) -scale = Vector2(0.999834, 0.999834) +scale = Vector2(0.999833, 0.999833) rest = Transform2D(1, 0, 0, 1, 6, 4) editor_settings/show_bone_gizmo = false @@ -878,7 +878,7 @@ metadata/_edit_lock_ = true [node name="LeftLowerLeg" type="Bone2D" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/LeftUpperLeg"] position = Vector2(-1, 13) -scale = Vector2(0.999835, 0.999835) +scale = Vector2(0.999837, 0.999837) rest = Transform2D(1, 0, 0, 1, -1, 13) editor_settings/show_bone_gizmo = false @@ -890,7 +890,7 @@ metadata/_edit_lock_ = true [node name="LeftFoot" type="Bone2D" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/LeftUpperLeg/LeftLowerLeg"] position = Vector2(6, 10) -scale = Vector2(0.999831, 0.999831) +scale = Vector2(0.999832, 0.999832) rest = Transform2D(1, 0, 0, 1, 6, 10) auto_calculate_length_and_angle = false length = 12.0 @@ -906,7 +906,7 @@ metadata/_edit_lock_ = true [node name="Body" type="Bone2D" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt"] use_parent_material = true position = Vector2(1, -2) -scale = Vector2(0.999832, 0.999832) +scale = Vector2(0.99983, 0.99983) rest = Transform2D(1, 0, 0, 1, 1, -2) editor_settings/show_bone_gizmo = false @@ -914,7 +914,7 @@ editor_settings/show_bone_gizmo = false z_index = -1 use_parent_material = true position = Vector2(-14, -23) -scale = Vector2(0.999828, 0.999828) +scale = Vector2(0.999827, 0.999827) rest = Transform2D(1, 0, 0, 1, -14, -23) editor_settings/show_bone_gizmo = false @@ -926,13 +926,13 @@ metadata/_edit_lock_ = true [node name="RightLowerArm" type="Bone2D" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/RightUpperArm"] position = Vector2(-2, 15) -scale = Vector2(0.999828, 0.999828) +scale = Vector2(0.999827, 0.999827) rest = Transform2D(1, 0, 0, 1, -2, 15) editor_settings/show_bone_gizmo = false [node name="RightHand" type="Bone2D" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/RightUpperArm/RightLowerArm"] position = Vector2(-1, 13) -scale = Vector2(0.999828, 0.999828) +scale = Vector2(0.999829, 0.999829) rest = Transform2D(1, 0, 0, 1, -1, 13) auto_calculate_length_and_angle = false length = 8.0 @@ -961,8 +961,8 @@ metadata/_edit_lock_ = true [node name="Tie" type="Bone2D" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body"] visible = false position = Vector2(-9, -21) -rotation = 0.1519 -skew = -0.000392079 +rotation = -0.125046 +skew = -0.000392795 rest = Transform2D(1, 0, 0, 1, -9, -21) auto_calculate_length_and_angle = false length = 24.0 @@ -1000,24 +1000,22 @@ metadata/_edit_lock_ = true [node name="Right_Eye" type="Sprite2D" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/Head/HeadParticle/Head"] position = Vector2(-16, -8) -scale = Vector2(1, 1) texture = SubResource("AtlasTexture_vcc72") centered = false offset = Vector2(-2, -2) metadata/_edit_lock_ = true [node name="Left_Eye" type="Sprite2D" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/Head/HeadParticle/Head"] -position = Vector2(-4, -9) -scale = Vector2(1, 1) +position = Vector2(-4, -9.00001) texture = SubResource("AtlasTexture_kto0i") centered = false offset = Vector2(-2, -2) metadata/_edit_lock_ = true [node name="Jaw" type="Sprite2D" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/Head/HeadParticle/Head"] -position = Vector2(-2.96949, 2.91851) -rotation = 0.017854 -scale = Vector2(0.999827, 0.999827) +position = Vector2(-2.74696, 2.38929) +rotation = -0.0682854 +scale = Vector2(0.999829, 0.999829) texture = SubResource("AtlasTexture_x5uj2") centered = false offset = Vector2(-12, -2) @@ -1034,7 +1032,7 @@ _observedEntity = NodePath("../../../../../../../..") [node name="Jaw" type="Bone2D" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/Head"] position = Vector2(-3, 3) -scale = Vector2(0.999827, 0.999827) +scale = Vector2(0.999829, 0.999829) rest = Transform2D(1, 0, 0, 1, -3, 3) auto_calculate_length_and_angle = false length = 11.0 @@ -1068,7 +1066,7 @@ remote_path = NodePath("../../HeadParticle/Head/Left_Eye") [node name="LeftUpperArm" type="Bone2D" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body"] position = Vector2(-1, -20) -scale = Vector2(0.999828, 0.999828) +scale = Vector2(0.999827, 0.999827) rest = Transform2D(1, 0, 0, 1, -1, -20) editor_settings/show_bone_gizmo = false @@ -1090,8 +1088,8 @@ minTorque = -45.0 maxTorque = 45.0 [node name="Left_Lower_Arm" type="Sprite2D" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/LeftUpperArm/HandProjectile"] -rotation = 0.156803 -scale = Vector2(0.999997, 0.999997) +rotation = -0.0815818 +scale = Vector2(0.999998, 0.999998) texture = SubResource("AtlasTexture_auqeq") centered = false offset = Vector2(-5, 0) @@ -1099,9 +1097,9 @@ metadata/_edit_lock_ = true [node name="Left_Hand" type="Sprite2D" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/LeftUpperArm/HandProjectile/Left_Lower_Arm"] show_behind_parent = true -position = Vector2(-0.99983, 12.9978) -rotation = -0.0763408 -scale = Vector2(0.999659, 0.999659) +position = Vector2(-0.999829, 12.9978) +rotation = -0.138919 +scale = Vector2(0.999663, 0.999663) texture = SubResource("AtlasTexture_vlvtp") centered = false offset = Vector2(-4, -1) @@ -1117,13 +1115,13 @@ _observedEntity = NodePath("../../../../../../../..") [node name="LeftLowerArm" type="Bone2D" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/LeftUpperArm"] position = Vector2(-2, 14) -scale = Vector2(0.999827, 0.999827) +scale = Vector2(0.999828, 0.999828) rest = Transform2D(1, 0, 0, 1, -2, 14) editor_settings/show_bone_gizmo = false [node name="LeftHand" type="Bone2D" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/LeftUpperArm/LeftLowerArm"] position = Vector2(-1, 13) -scale = Vector2(0.999829, 0.999829) +scale = Vector2(0.999833, 0.999833) rest = Transform2D(1, 0, 0, 1, -1, 13) auto_calculate_length_and_angle = false length = 6.0 @@ -1173,7 +1171,7 @@ entity = NodePath("..") [node name="Mover" type="Node" parent="."] script = ExtResource("4_u5syx") _speed = SubResource("Resource_ckb7n") -_speedControlMult = 0.593528 +_speedControlMult = 1.08005 [node name="ChompPlayer" type="Node" parent="."] script = ExtResource("10_ruqsf") diff --git a/scripts/audio/AudioSequencer.cs b/scripts/audio/AudioSequencer.cs index eee6960..292cda1 100644 --- a/scripts/audio/AudioSequencer.cs +++ b/scripts/audio/AudioSequencer.cs @@ -4,9 +4,9 @@ using Godot.Collections; public partial class AudioSequencer : Node { private static AudioSequencer instance; - private Dictionary channels = []; - private Dictionary channelProcess = []; - private Dictionary channelSettings = []; + [Export]private Dictionary channels = []; + [Export]private Dictionary channelProcess = []; + [Export]private Dictionary channelSettings = []; [Export] private ChannelSettings standardSettings; @@ -41,9 +41,15 @@ public partial class AudioSequencer : Node public static void ChangeSettings(string id, ChannelSettings settings) { + if (instance.channels.ContainsKey(id) == false) + { + instance.InitiateChannel(id, settings); + return; + } + if (settings == null) { - instance.InitiateChannel(id, settings); + instance.channelSettings[id] = instance.standardSettings; return; } instance.channelSettings[id] = settings; From 9dd7ed311c4e02f6e68946c0d78a493ae7eb3505 Mon Sep 17 00:00:00 2001 From: Rendo Date: Sat, 12 Jul 2025 21:39:18 +0500 Subject: [PATCH 31/48] Some shortcuts, cancellable shovel and pause fix --- assets/audio/{sfx => gui}/pause.mp3 | Bin assets/audio/gui/pause.mp3.import | 19 ++++++++++++ assets/audio/sfx/pause.mp3.import | 19 ------------ project.godot | 15 +++++++++ scenes/entities/Zombies/zombie.tscn | 46 ++++++++++++++-------------- scenes/gui/runtime_gui.tscn | 34 ++++++++++++++------ scripts/gui/PauseMenu.cs | 11 +++++++ scripts/gui/ShovelButton.cs | 8 +++-- 8 files changed, 99 insertions(+), 53 deletions(-) rename assets/audio/{sfx => gui}/pause.mp3 (100%) create mode 100644 assets/audio/gui/pause.mp3.import delete mode 100644 assets/audio/sfx/pause.mp3.import diff --git a/assets/audio/sfx/pause.mp3 b/assets/audio/gui/pause.mp3 similarity index 100% rename from assets/audio/sfx/pause.mp3 rename to assets/audio/gui/pause.mp3 diff --git a/assets/audio/gui/pause.mp3.import b/assets/audio/gui/pause.mp3.import new file mode 100644 index 0000000..139093d --- /dev/null +++ b/assets/audio/gui/pause.mp3.import @@ -0,0 +1,19 @@ +[remap] + +importer="mp3" +type="AudioStreamMP3" +uid="uid://ckja8ym50y0d4" +path="res://.godot/imported/pause.mp3-10f7613d15cb333d7efaf86fb9f4755c.mp3str" + +[deps] + +source_file="res://assets/audio/gui/pause.mp3" +dest_files=["res://.godot/imported/pause.mp3-10f7613d15cb333d7efaf86fb9f4755c.mp3str"] + +[params] + +loop=false +loop_offset=0 +bpm=0 +beat_count=0 +bar_beats=4 diff --git a/assets/audio/sfx/pause.mp3.import b/assets/audio/sfx/pause.mp3.import deleted file mode 100644 index 3c76b64..0000000 --- a/assets/audio/sfx/pause.mp3.import +++ /dev/null @@ -1,19 +0,0 @@ -[remap] - -importer="mp3" -type="AudioStreamMP3" -uid="uid://ckja8ym50y0d4" -path="res://.godot/imported/pause.mp3-e9d4dab5bf1cbf6ecf379df2f1abb654.mp3str" - -[deps] - -source_file="res://assets/audio/sfx/pause.mp3" -dest_files=["res://.godot/imported/pause.mp3-e9d4dab5bf1cbf6ecf379df2f1abb654.mp3str"] - -[params] - -loop=false -loop_offset=0 -bpm=0 -beat_count=0 -bar_beats=4 diff --git a/project.godot b/project.godot index 1ec38b8..c6d4000 100644 --- a/project.godot +++ b/project.godot @@ -87,6 +87,21 @@ cheat_zombie_spawn={ "events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":4194332,"key_label":0,"unicode":0,"location":0,"echo":false,"script":null) ] } +short_pause={ +"deadzone": 0.2, +"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":4194305,"key_label":0,"unicode":0,"location":0,"echo":false,"script":null) +] +} +short_ff={ +"deadzone": 0.2, +"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":4194306,"key_label":0,"unicode":0,"location":0,"echo":false,"script":null) +] +} +short_shovel={ +"deadzone": 0.2, +"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":83,"key_label":0,"unicode":115,"location":0,"echo":false,"script":null) +] +} [internationalization] diff --git a/scenes/entities/Zombies/zombie.tscn b/scenes/entities/Zombies/zombie.tscn index c1bcdcb..5244ddd 100644 --- a/scenes/entities/Zombies/zombie.tscn +++ b/scenes/entities/Zombies/zombie.tscn @@ -825,7 +825,7 @@ metadata/_edit_lock_ = true [node name="RightUpperLeg" type="Bone2D" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt"] use_parent_material = true position = Vector2(-6, 3) -scale = Vector2(0.999832, 0.999832) +scale = Vector2(0.999834, 0.999834) rest = Transform2D(1, 0, 0, 1, -6, 3) editor_settings/show_bone_gizmo = false @@ -837,13 +837,13 @@ metadata/_edit_lock_ = true [node name="RightLowerLeg" type="Bone2D" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/RightUpperLeg"] position = Vector2(-2, 12) -scale = Vector2(0.999833, 0.999833) +scale = Vector2(0.999832, 0.999832) rest = Transform2D(1, 0, 0, 1, -2, 12) editor_settings/show_bone_gizmo = false [node name="RightFoot" type="Bone2D" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/RightUpperLeg/RightLowerLeg"] position = Vector2(-2, 14) -scale = Vector2(0.999837, 0.999837) +scale = Vector2(0.999836, 0.999836) rest = Transform2D(1, 0, 0, 1, -2, 14) auto_calculate_length_and_angle = false length = 12.0 @@ -866,7 +866,7 @@ metadata/_edit_lock_ = true [node name="LeftUpperLeg" type="Bone2D" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt"] use_parent_material = true position = Vector2(6, 4) -scale = Vector2(0.999833, 0.999833) +scale = Vector2(0.99983, 0.99983) rest = Transform2D(1, 0, 0, 1, 6, 4) editor_settings/show_bone_gizmo = false @@ -878,7 +878,7 @@ metadata/_edit_lock_ = true [node name="LeftLowerLeg" type="Bone2D" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/LeftUpperLeg"] position = Vector2(-1, 13) -scale = Vector2(0.999837, 0.999837) +scale = Vector2(0.999833, 0.999833) rest = Transform2D(1, 0, 0, 1, -1, 13) editor_settings/show_bone_gizmo = false @@ -890,7 +890,7 @@ metadata/_edit_lock_ = true [node name="LeftFoot" type="Bone2D" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/LeftUpperLeg/LeftLowerLeg"] position = Vector2(6, 10) -scale = Vector2(0.999832, 0.999832) +scale = Vector2(0.999828, 0.999828) rest = Transform2D(1, 0, 0, 1, 6, 10) auto_calculate_length_and_angle = false length = 12.0 @@ -906,7 +906,7 @@ metadata/_edit_lock_ = true [node name="Body" type="Bone2D" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt"] use_parent_material = true position = Vector2(1, -2) -scale = Vector2(0.99983, 0.99983) +scale = Vector2(0.999825, 0.999825) rest = Transform2D(1, 0, 0, 1, 1, -2) editor_settings/show_bone_gizmo = false @@ -932,7 +932,7 @@ editor_settings/show_bone_gizmo = false [node name="RightHand" type="Bone2D" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/RightUpperArm/RightLowerArm"] position = Vector2(-1, 13) -scale = Vector2(0.999829, 0.999829) +scale = Vector2(0.999827, 0.999827) rest = Transform2D(1, 0, 0, 1, -1, 13) auto_calculate_length_and_angle = false length = 8.0 @@ -961,8 +961,8 @@ metadata/_edit_lock_ = true [node name="Tie" type="Bone2D" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body"] visible = false position = Vector2(-9, -21) -rotation = -0.125046 -skew = -0.000392795 +rotation = 0.0770195 +skew = -0.00039506 rest = Transform2D(1, 0, 0, 1, -9, -21) auto_calculate_length_and_angle = false length = 24.0 @@ -977,7 +977,7 @@ metadata/_edit_lock_ = true [node name="Head" type="Bone2D" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body"] position = Vector2(-10, -25) -scale = Vector2(0.999826, 0.999826) +scale = Vector2(0.999822, 0.999822) rest = Transform2D(1, 0, 0, 1, -10, -25) editor_settings/show_bone_gizmo = false @@ -1006,16 +1006,16 @@ offset = Vector2(-2, -2) metadata/_edit_lock_ = true [node name="Left_Eye" type="Sprite2D" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/Head/HeadParticle/Head"] -position = Vector2(-4, -9.00001) +position = Vector2(-4, -9) texture = SubResource("AtlasTexture_kto0i") centered = false offset = Vector2(-2, -2) metadata/_edit_lock_ = true [node name="Jaw" type="Sprite2D" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/Head/HeadParticle/Head"] -position = Vector2(-2.74696, 2.38929) -rotation = -0.0682854 -scale = Vector2(0.999829, 0.999829) +position = Vector2(-3.00095, 2.9984) +rotation = 0.00747448 +scale = Vector2(0.999828, 0.999828) texture = SubResource("AtlasTexture_x5uj2") centered = false offset = Vector2(-12, -2) @@ -1032,7 +1032,7 @@ _observedEntity = NodePath("../../../../../../../..") [node name="Jaw" type="Bone2D" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/Head"] position = Vector2(-3, 3) -scale = Vector2(0.999829, 0.999829) +scale = Vector2(0.999828, 0.999828) rest = Transform2D(1, 0, 0, 1, -3, 3) auto_calculate_length_and_angle = false length = 11.0 @@ -1066,7 +1066,7 @@ remote_path = NodePath("../../HeadParticle/Head/Left_Eye") [node name="LeftUpperArm" type="Bone2D" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body"] position = Vector2(-1, -20) -scale = Vector2(0.999827, 0.999827) +scale = Vector2(0.999829, 0.999829) rest = Transform2D(1, 0, 0, 1, -1, -20) editor_settings/show_bone_gizmo = false @@ -1088,7 +1088,7 @@ minTorque = -45.0 maxTorque = 45.0 [node name="Left_Lower_Arm" type="Sprite2D" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/LeftUpperArm/HandProjectile"] -rotation = -0.0815818 +rotation = 0.0724153 scale = Vector2(0.999998, 0.999998) texture = SubResource("AtlasTexture_auqeq") centered = false @@ -1097,9 +1097,9 @@ metadata/_edit_lock_ = true [node name="Left_Hand" type="Sprite2D" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/LeftUpperArm/HandProjectile/Left_Lower_Arm"] show_behind_parent = true -position = Vector2(-0.999829, 12.9978) -rotation = -0.138919 -scale = Vector2(0.999663, 0.999663) +position = Vector2(-0.99983, 12.9978) +rotation = -0.0319596 +scale = Vector2(0.999659, 0.999659) texture = SubResource("AtlasTexture_vlvtp") centered = false offset = Vector2(-4, -1) @@ -1121,7 +1121,7 @@ editor_settings/show_bone_gizmo = false [node name="LeftHand" type="Bone2D" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/LeftUpperArm/LeftLowerArm"] position = Vector2(-1, 13) -scale = Vector2(0.999833, 0.999833) +scale = Vector2(0.999828, 0.999828) rest = Transform2D(1, 0, 0, 1, -1, 13) auto_calculate_length_and_angle = false length = 6.0 @@ -1171,7 +1171,7 @@ entity = NodePath("..") [node name="Mover" type="Node" parent="."] script = ExtResource("4_u5syx") _speed = SubResource("Resource_ckb7n") -_speedControlMult = 1.08005 +_speedControlMult = 0.248477 [node name="ChompPlayer" type="Node" parent="."] script = ExtResource("10_ruqsf") diff --git a/scenes/gui/runtime_gui.tscn b/scenes/gui/runtime_gui.tscn index 0dc969f..7ea9bbf 100644 --- a/scenes/gui/runtime_gui.tscn +++ b/scenes/gui/runtime_gui.tscn @@ -1,4 +1,4 @@ -[gd_scene load_steps=16 format=3 uid="uid://cfnmspei3k4p7"] +[gd_scene load_steps=21 format=3 uid="uid://cfnmspei3k4p7"] [ext_resource type="PackedScene" uid="uid://ky35veswaytr" path="res://scenes/gui/sun_counter.tscn" id="1_le3od"] [ext_resource type="Theme" uid="uid://b8l285cjcgeyi" path="res://resources/themes/GameStyle.tres" id="1_xf6ra"] @@ -10,7 +10,6 @@ [ext_resource type="PackedScene" uid="uid://b4lx8adw6rbqs" path="res://scenes/particles/dirt_explosion.tscn" id="6_5jtun"] [ext_resource type="Script" uid="uid://c36bj8u7jghc7" path="res://scripts/audio/ChannelPlayer.cs" id="7_5kkbf"] [ext_resource type="AudioStream" uid="uid://dfbg6dxg4actb" path="res://assets/audio/sfx/shovel.mp3" id="8_xq48m"] -[ext_resource type="AudioStream" uid="uid://ckja8ym50y0d4" path="res://assets/audio/sfx/pause.mp3" id="11_cti1a"] [sub_resource type="StyleBoxTexture" id="StyleBoxTexture_ps2iw"] texture = ExtResource("2_eg3hk") @@ -20,6 +19,27 @@ texture_margin_right = 4.0 texture_margin_bottom = 4.0 axis_stretch_horizontal = 1 +[sub_resource type="InputEventAction" id="InputEventAction_xq48m"] +action = &"short_shovel" +pressed = true + +[sub_resource type="Shortcut" id="Shortcut_cti1a"] +events = [SubResource("InputEventAction_xq48m")] + +[sub_resource type="InputEventAction" id="InputEventAction_5kkbf"] +action = &"short_ff" +pressed = true + +[sub_resource type="Shortcut" id="Shortcut_xq48m"] +events = [SubResource("InputEventAction_5kkbf")] + +[sub_resource type="InputEventAction" id="InputEventAction_cti1a"] +action = &"short_pause" +pressed = true + +[sub_resource type="Shortcut" id="Shortcut_s07y0"] +events = [SubResource("InputEventAction_cti1a")] + [sub_resource type="Animation" id="Animation_c8fnk"] length = 0.001 tracks/0/type = "bezier" @@ -116,6 +136,7 @@ size_flags_horizontal = 3 layout_mode = 2 size_flags_horizontal = 1 size_flags_vertical = 4 +shortcut = SubResource("Shortcut_cti1a") particles = ExtResource("6_5jtun") [node name="ChannelPlayer" type="Node" parent="MarginContainer/Control/Hotbar/ShovelButton"] @@ -126,6 +147,7 @@ metadata/_custom_type_script = "uid://c36bj8u7jghc7" [node name="FastForwardButton" parent="MarginContainer/Control/Hotbar" node_paths=PackedStringArray("flashAnimator") instance=ExtResource("4_66uy4")] layout_mode = 2 +shortcut = SubResource("Shortcut_xq48m") flashAnimator = NodePath("../../../../FastForwardEffect/AnimationPlayer") [node name="ChannelPlayer" type="Node" parent="MarginContainer/Control/Hotbar/FastForwardButton"] @@ -136,12 +158,7 @@ metadata/_custom_type_script = "uid://c36bj8u7jghc7" [node name="PauseButton" parent="MarginContainer/Control/Hotbar" instance=ExtResource("5_jyq78")] process_mode = 3 layout_mode = 2 - -[node name="ChannelPlayer" type="Node" parent="MarginContainer/Control/Hotbar/PauseButton"] -script = ExtResource("7_5kkbf") -audioStream = ExtResource("11_cti1a") -channel = "pause" -metadata/_custom_type_script = "uid://c36bj8u7jghc7" +shortcut = SubResource("Shortcut_s07y0") [node name="FastForwardEffect" type="ColorRect" parent="."] z_index = 1 @@ -161,4 +178,3 @@ libraries = { } [connection signal="pressed" from="MarginContainer/Control/Hotbar/ShovelButton" to="MarginContainer/Control/Hotbar/ShovelButton/ChannelPlayer" method="Play"] -[connection signal="pressed" from="MarginContainer/Control/Hotbar/PauseButton" to="MarginContainer/Control/Hotbar/PauseButton/ChannelPlayer" method="Play"] diff --git a/scripts/gui/PauseMenu.cs b/scripts/gui/PauseMenu.cs index 1233132..4c132f9 100644 --- a/scripts/gui/PauseMenu.cs +++ b/scripts/gui/PauseMenu.cs @@ -5,6 +5,8 @@ public partial class PauseMenu : Control { private static PauseMenu Instance; private bool previousPaused; + private bool currently_paused = false; + private AudioStream pauseSound = ResourceLoader.Load("uid://ckja8ym50y0d4"); public override void _Ready() { Instance = this; @@ -14,20 +16,29 @@ public partial class PauseMenu : Control { GetParent().Visible = false; GetTree().Paused = previousPaused; + currently_paused = false; } public void Restart() { GetTree().Paused = false; GetTree().ReloadCurrentScene(); + currently_paused = false; } public void Exit() { GetTree().ChangeSceneToFile("uid://bfstrli64u23y"); + currently_paused = false; } public static void Pause() { + if (Instance.currently_paused) + { + return; + } Instance.GetParent().Visible = true; Instance.previousPaused = Instance.GetTree().Paused; Instance.GetTree().Paused = true; + Instance.currently_paused = true; + AudioSequencer.Play("pause",Instance.pauseSound); } } diff --git a/scripts/gui/ShovelButton.cs b/scripts/gui/ShovelButton.cs index b08008a..de04638 100644 --- a/scripts/gui/ShovelButton.cs +++ b/scripts/gui/ShovelButton.cs @@ -24,18 +24,22 @@ public partial class ShovelButton : TextureButton { var checkedPosition = (PoolContainer.Instance.Plants.GetGlobalMousePosition() / Utility.Tile).Ceil() * Utility.Tile - new Vector2(20, 14); - for (int i = Utility.LayersCount-1; i >= 0; i--) + for (int i = Utility.LayersCount - 1; i >= 0; i--) { if (PoolContainer.Instance.EntityField[i].TryGetValue(checkedPosition, out var entity) && entity is RuntimePlantData plantData) { plantData.Kill(); - PoolContainer.Instance.SpawnParticles(particles, plantData.GlobalPosition + Vector2.Down * Utility.TileHeight/2.0f); + PoolContainer.Instance.SpawnParticles(particles, plantData.GlobalPosition + Vector2.Down * Utility.TileHeight / 2.0f); break; } } ButtonPressed = false; } + if (@event.IsActionPressed("cancel_plant") && ButtonPressed) + { + ButtonPressed = false; + } } } From 86777629de8624d3be5cbed6c7a34efb8f16763c Mon Sep 17 00:00:00 2001 From: Rendo Date: Sat, 12 Jul 2025 21:43:08 +0500 Subject: [PATCH 32/48] logos and atlasses --- assets/sprites/atlases/atlas1.png | Bin 33101 -> 32953 bytes assets/sprites/logo.png | Bin 0 -> 4239 bytes assets/sprites/logo.png.import | 34 ++++++++++++++++++++++++ assets/sprites/vertical_logo.png | Bin 0 -> 4250 bytes assets/sprites/vertical_logo.png.import | 34 ++++++++++++++++++++++++ scenes/main_menu.tscn | 13 ++++++++- 6 files changed, 80 insertions(+), 1 deletion(-) create mode 100644 assets/sprites/logo.png create mode 100644 assets/sprites/logo.png.import create mode 100644 assets/sprites/vertical_logo.png create mode 100644 assets/sprites/vertical_logo.png.import diff --git a/assets/sprites/atlases/atlas1.png b/assets/sprites/atlases/atlas1.png index cfb102aeece4eef911ebeef6381d1f6096081c23..68279ee21738c7375634bcd48ba3ba1a4eaa8d6b 100644 GIT binary patch literal 32953 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%0D8R}T%B4z})*>+L)>Iai_ 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 z zlUljSNQvh6F(9Dhx?qAhX%@WP9)G%D@mDUqA(!r74q+28w>LJ%+kA&$LIZv7W-9#* zSBl9R%8ZBe)GVX-v>yA^1jsa#K5pP3kcl%m-{|q|&}PoK(x4o5I4Pf558?gOK7CqXYs~Wfa#vdI{eNkI@ED7 zzV<77Yd;Bn(#7q<(U7nr6ALDPyc0#}>93*wKXB3~uh;!oM_JfRzastzsbglTNHbGguB9Tc z40YJ)ddfy!qEA`DOX!1^Xi_=Weq@IwpbZ^)y+b zV@JVs<N)t70%dc>1L*%y6gv`GX%)6+zV!voD=psr zCeJ)93a19dsjRN(_BMOWVh@{6{BV!8DAPuNc?~PBW@|YzFQHaKv=E6?v^JAt1MY3J zL)f02gKc+9%*Lx)MLf#r^>h z;@kUUG-A8GJs;P2`GrdLlP=1sZgJK(m8=mO(iXWh2Y1!IjLcAZ2a9F1w!_r^`SXb` z%M}rOCpyQyw_DYO%>57XM5V!f$u@mh1o^Hr4_oPBmB?k~$AckAZsn8hq2d8 zGa*O4O`#V{V-3>XENQm(-O3i3C^ILUbph7a<{rmm78_cmeu(l6L2i2_QQzHewM-I! z{MEB&X+b__-BzfL!y(=z?~%o#V{a3abldG^dyqD*Y@9l)srF-MEdpYUON20%y*YZr zH{c4{YS~e_W1%%Hp|Z>r6?(yan@Lf2{$7N|2w^ub^MOdSzQ%UVp1kS6f3NfXBM~=j zhN*KT#`$S%Bs$gi;K^CcH?PVrjt(`y-hOk}AGjqiHt5g~PnjIF>JedjK|TwLpa0n) zY(_0pKN6Gn*!s6BArsOkqp|j`)MctxJ)^s<)Arx1$#$LA-kF%mHLZfrz z9F-R^$7DNfwAgTV%4H|(ueNR$=0C^w$>(}aI!psenI`K^scyFpZp=4W7yb-kktRmr z@fCH`2NltGjeXVrEpCKmQu9@OMR{BX$RG{Y2h)e9VS3!@^v_NFptQOHd4qDT@;7V~ z-@31a;#uygIzDFz3SZJ-%Y^dE?kz{9Tbn$-YeRkJZ42c|8nZyj_q0mJ{itfD@pHfW zryEHjkf)Bo5VO?^CsTU=f=D4UN7`q~UxFkc2oMGRy2h)EYxKX^y>Ma5wReJzeYTfJ z@3ZGW!7lQ76XtG4#!&pFAz{91qlwEOVn)d)V_gDNU5er->GMj~`efZ-f7}9ka1<|_ z=AVh>z=L-lo|*tGT&N3X!O$~Fe8lcv&DQ5q_TR7&q*D9?^+8BS2-k$(EfvZg^K_-V zsOO=*0ucwrh+2%w+~Tdg>&<^p2%Ipqt$^)k8V&s{BedXYy5**d5HRFl?Im%L0aX@h z7%OYvM-N$wmg}O&?^y&!YNYr9{fodnng&i-I-7wZ8#WHCORas?CjoHH`;jXzrpsB( z7bO=jmt-kmPsjWW)>RY@1=$>Uf0eCM1aEF3MIPM$v~jYC{|lh{W|a?rb751t!`ddj zZ*25t3KI}H-&g^UlWkp!PC&>_6)?VTZT3YHeGlxXdk%gUr{1U)^Jk@5yFPR<;81!^ zK}SszztZK1y9IPh@Mx#@ree2JB|Y}>{b3vFJSp?u25a^CUG2wr4WA-g)|e)cQQU>z$0di_H2X1u}h(Yd7UL zx(PlL9ECm_rjnVJ!BJ3&2UoTh1I-b8P0Vu$n`|u7hQa7f#yn!gp$`A?hG6oIg9wq( zgvaY(Pe`CNRTb!u%i7#wT4SYK3V^Q%(z;!|f4Tu$A&U`j?!NiBw=l(GlYwY9$*rNl zgbZ2x7fd@=et5PZfY4B!+>;-|Znk>6U+@J&k7!u2CR)q_iEV;guvvl#*4~kDKy-Jo zKBiVbp_l9y+B5u*q``gu;{C8GP}XQ`)kdYZ$UJwwuxxAfJI{9K_~8023|~E^uNI%Y zR_&K<2C+fAh>df7RO&(Fb_x7NnNv6#e2Ib+J_BNa5m@A^O!9{Z=0uKB3a5Y_ycTKDjZ}LBoFM7zDTMy$i_J{-kL9 zF-7cVZ3^0Pf<}1jhk$(%9@H4Q#stQZMLlC*_$8r(%+(@noII?L?mD%))pBDC-Pc{T zk!3+Al+9A|%=@}Hx5cxK6Z^kJwux{=e%k*xgz-TW~sDkN$kx_LTIjc-_QRq~Lr}tYlgP$MxIPvPed;F5~ zwN+p>mF*GPl7d_xnpqsj@N$ji+ve}`CE9Ov+w+KNQZHO<$86Wd~QAfx^`L+5qd_rVckH0FPb zT~hC^1jo@RGzm%;s^0MT+AjxsTIire zKV&wtlIfq21%xoU-f8ovPyP~*BGFE}SzF8Gwl;bV()CY=jGQ7l?Fs{zKf^=pQr4tmK{IzR0K zS_DQrUbdvA{!z$tXurHAAhBmQ%Z-pk+4w|6TdM#hCOjT+0o$NXRo2OdLQ~unIGxE2^$La~9AUhx$Q_nOQWMCQKUDQ; z^P~Lj_rPr& zMP@NdG>|qa$;Opv9wRbslE4PDw@kFS@Ho}rbxVHapR|(~P4=scp^~~aV{tBAexH>4 z6t|31rxO2AJ*tA3149IsWaeb??6HXP_;bo%8jTyR@_z*8<nBv}~Sk1DJTeJhP`&w|GpCW^CK&{UvJHnTO|u!GwzGJpd@SFcryLUvFK* z+d9P+X4JlMvftu?aZ6&Z`d&xZvgTFf%V;_)JxE41Mt_y+Lk+XYT^$Dac*V~^p||S- zWM&%iUbmFBp|HUkOun^mn#Fpm`BnD}($*A@40>U#eQXV*Fwp-V^WUd6j-b#O#Z1AN zzl;LGwRIbvg3P1aA1`kO^@2N34j#Hl1$ubTwb#K8@)az2qy2O)zN7pFu#}yM2bc!J zPJIfLEAax(GkW*J`jqqc6IY3E^v{UAa)X36x*J7pVCxWNZFQEIx}FJn(z6VN-!7@q zHF#>?=>?79Gj5SazFpP4z^UWlH`IM!u0m3B)jF&K&*iZ{0=+E#J4<3f3x>5{mk}Us z8JgmTst9wmw`T67>7%*c`u2H^P1G)vOSZ7y`thzegL_zTXv|+qfkHb+Qly$dF_NMR zC?U#S^sfvdv+BiRZ$Vh2mZZoKcglmKIumCB0;7RU8Ad-)Db6%B5EsE)W%6s?YW9jV zWJP6N7vN0C8iOsE!Qc}zC!S-8*mAV9PBnzVTlp$(^; z6Mbg9kL`rUEx8A+?_~B&ax2y@}xjZJ5TfJxyhAfVc)`|YqC*sZ5UWp-zmusl6UqjQ{$kYMqab4 zTi|$HQL7TNy&>F2cFf)Kp}|g;X+*F6BxZxBZ|vTEwJ+V7(V^K*omUl8rSFcv4QC%0 zgQns*iRETd+9gJ!EqPx*(?THgJ6ej&5#oEC`z$4lA9MdRe~g!etM4vo)>n$(>0Fam zdiee&65c?+^_X107UV#&+I#%@gaZtyXK1>35y2DB5N+jnIMA8<^~!#gaglPY!+xAG zEm&=jj`R^@DUC5Hx?6u%Nh?pB^A80g%T^gik%w58Dz}x8liz$4MDottwE)g#6qC#X z3kPpSmGdpI1as33)1a@a=6n}$rrXG(JEF-z65UD0^4=jM#xTnk=#tQx!*{^kY{}U4n+!1!bw7L0kKRDD>uSrfHN9mm5v-6Z1bsqJR?=MmFHF~PX8NxNq5-)m} zc34Sjj*&IpQM!#gj{E0;w;Z|xTqY^n_8KxLCbeC*V#{;Yz|(GA>^2cg(lkU>m!bwf z9IL|oBRBqfoe3I;wfL+o+Z1eBm@4-uYlfKye}rWEE!A7N5xT!8%9M-Y^Ab(-I|&Nt zg{$D$*h2wBhEg%{n;bTS?>YG*Xw+z{i+Jan8aZKCAJa-RetFW1Nq6h3e!7&+FWl(y zlz-t(ojJDEP-%OaL|+{q4%vb;oGBk5!J_!YKUl}qqCP{Z2;*`Wke5SU>X!@=oIkBQ zZ~B%8m&$V>9nH3`F$H^EwPN8;ySubdZ%xiL0PF}g%T?)mu6U7p3bw%^e1DuO_x&tV z1==gPbg1FH<=e}71!mo0NOPCbU8?+!6*8t22SXIyi~q!NWT(GVSzjoL;$j*I#YoRg zd%4=~8i*Bh!EFHk$I1ehR;Z7!!SLrX|F&|hK0Dcm`=&uz*sT*e9nfsB^y?oy0Ri4B zguDzQ-h^)dt^mOu^VDlB0BLqa~0NabWoo93} zs|xO|_No^35g^2jq$GL>-UI>qN$08WPyPZ>%W<>-U2=c?Z4nojR{TSRUwEy~xEHnQN)R$!hMqlr9au!s&8R_zGQJo0aZ{6Nt zUjVfcpXRLb$JFm$L}Ph2J7h>Z{0u1)TKp796->kniQt7qThT(aO)dfW8?T-LCab|? z@E;cp>-1#5^q(?7s!VJP#aNxm*A&A$BEu%jl2kYv(YHTajMbb_werb?;R93Z_UeA2H?owx9+#+SE~HPH?*M)up@QlY^q1y-$FM1Wg0 z8}5XK08Cjq(!rD%k`w`WE?OmPh4JrGO$z~%6^nctG`mN!lfE`}QY#RNxxy?Kr?2^$ z`J3`$_JU4epC~?kYF|^r4EU$lX1>}}T<#Ar<}m3tD{t*622qjUFQUd9?{t6fTBBA{ zOa`0r+J*X30DK09D^wz4ttQ#OzG53pnyGH zuk%qtia@_nl=267?qwEum0$37Dq63!74mM;5z$;7A6u$;%b|+qf8;j%Y5c1Z zUbY#Q^yzIan_jdOO`afI!cQyzmO_jjOZpU+#QIxX!UDjxZEC7mdfJmIme6Z?J1zdo zj!SLRu6rM?gHY|cATNGu3)rck*R}@L1|?S3@C~L`9^@6j!bX`3%mAuHv>C`1d7V@K zn7W>}o*Uw~5zXLd>P&jX`;W=O zoPZAuS3Q-dpxP0dEf9zSqy|yY_sZSv3`~7AIdgC=qL3TJEEHr+5b^{Ado&t+nwS|Y z>_yz87WtXA3r~_n;PYk<8RJThy>@WNYZsW)VtFD@f-(~YZEE@IBtM~8({r+RX;Nls)TGm=)YouwzjDDKKVW;tcY_1eFw!~e z;(J$U`22TpHMzd*`gf0bX`x{zCdtdn2&S50es;6fs~H7O9e>Yv1?#2aG_f6g(C@R$ zcYmYWg3@NbRx@u#5u8&Q-_q?upgB+7+gv6 zifqN>%tCN7TCq}L{TFA4r19lY2L|d`&ca8(&2RSjUNZZzgG#C)30AsAonvLmelwp+ z+jgnR!0~(LPZRb}e{^Jg_u-gdp(Opvv8_iWWITc}!acn0zMA2DJ{K=4aWx^uYSZi# z$Tdof?%%Syt7 zU&%4TWjR7(9KElHvy)5aNmHCeA7*atR^~dazuInQ?d2<<<&ypVVT#_t z*)bSce9RmmOe_`*x|=M(>IOcMtW8)7A#gFkT*#UA6JlJNWZ(J8-?bo0j+ z#y->|e$(3aFP7Kc1-QJ~$lpJnw!7!zmDF4H=<%gT1AP*j$7jcpC(p%75$*P?zN~dk zZzVn--Rb-$j4a-JXA+#-FOQc+R@B9oq&z8Ew7>h9)lRjUbDd$;4gt_5Ql0PIg8yBk z?P{i1xq?-)Vp8VXa;3Zwy;0XrWVB8MhzTm?`D-IS{*g6eTc}6hhSF;HFG^7y`O>xB zp&llbI!rrPsE1@+df)20DT!2j%u)4`t*Vm^{Ebv`k}25O%?AEj%5lu>SsSZbsKGFf zn!%u!62G7Q>EFTQXAKk!*bG|wW9H^8hVh%ISPG~PxrOw%?cI3|KctU_B3T+=Iw5ipKTges;Qs@nA08#!Cu$kZJ^=C;2I|Dlnk69y3@7zS=l=VgCl?KRzhZdTN}A_m^#4P0wpWo?U9Yrh)8 zx)EELjpy6uQntQys&~z{`!ZD{ObrrBe3yu`7jbKM$E#6IGq$(+Q+{XaW~%;gvD#9a zRLz*w!S2emy0XIy>meI&(WrfoNx#=+qHF6jmlFM#X7nIUi{wxxvOXK5w+3){GHkq9 zf}yO%C2>yMXeMngV?G|>3w&)P^KbUazQR`4>&e-dSNE)2I>0KLFTi<=?{qIE?eth$ ztN-pc^MaCpFIgZ5WaXlTr0m8$D=v^G9^RD3J~~nkES-Nw_?Fypxyq317pEF6jcbvS zAE>5d+xtI}si=n-qJqgQ5t0~qbH4P}_$~D6LY8y-iOtL#yCmRmoi_~MGXGM=$u;%= zVbrL1{DCv>W{o-2)59ejLsE5>-#6(b@_aG8!vQqD1{gnM#MfHWb5k2s53mF7gCB_i zb$CKsSoK>`@{W5z9c6(mVP%)o-$|RGnopeWy<-=={PHm?&)KPm94#7A9m91rTdX0E z?nAtXQy9E|23U)88M#P2l{!BQfw(31=f9DC`T63R{qA}>@ex^4QJ1rp&iq_rQF-OG zzKtql=kc}Bu`e7{1#d0g(VNto5AVq3LJ#yQA3|2C=1sp{mZihZMexk~bj5DiNnBLQ@%1`mq0WKd2|!MlZn3yQZ-DXH3;x*YGyJggL4V;JkU=s+xr=*luJi6BfvgKm2;8V|Pwy zsPATCI2DdDY~qhlUuq4%|0icQs4@Jw$EiK)sfWQ{#9UmiICq&K%X_Zbm`y&0SV97! zAdW^tLh>0ncNd#R-Nh{+=Xmp$-yTZW@{g%CUWap6gU@BdT{$AL0Oe|#fPSC*iL5tJ z@J@zEhTzpNeB4EiJr^98vO2bRdpXH@(w9=yUhx?UgI2FIj(&g7>y3CKbdRZn!GVg3 z4?)i|Sk2SvBB7kRu+Z+A?5HXPLa0~&(GLe(9fOr1)=!?O?XI%uQR>?f@D%X03k7b@ ztB{-DEZH5cyh8qg=QQqka1Z3oJg-zDR|5xM2o;ZfxU{Au2^e&Dl)~yw89x~VRE5yHNGc4 z7kFn(Y&qH5{x=umCca}w*!#-kjZ}V#!qj$(!OOVAZ2`*CSifSaNK!EImuWI%x10h0 zT_2ukPLA~!rv-TX*YLE!LM2F}mvh4oavoIy?{JY3Aar(VCB%Flf7ln;KbVp#gcc*u*v zjrHBl)F(f(zD69jI1!wz>N3%wo)Sr%WghwOnKd9w`=Y$mw2yA0UlB}lUkZz?7D~T#|b2zPuSu!m; zI;h+hu0?)qElAPtZmm%fHNljueqWvm@Q*cyk9j1h$?p=6$@XO0z(;9j{mkd{8rN)N z^T5$plCNmuBxf9)4&d%PQxnB%qS)-cu$mpJ9H(15n+;Ny0wZo6x zv0Xx4NQ^)s?gl%D*-)+Y9|Ge$&2$E|Uia__G^Tu`UJ4P2&*X{N!Eery?mG^b=3Rc+ z=DvG0k1a}05WAHDnH9yJ6SH&?7f7`_b&t8Zm^rYG_+8fVsM(^HPnpR4%dF^Hf-)(V zwACC|hK7Qc@rZi_qLYAoG{DR?|0Q;blpZ$sYO5qRPAUg0z-HQQDLhXT(zI9L5H-hJ zhJP4q`}Z6X7P3`DxA8RqUVK~VnqL>uL3iZ+r%SQ%&E8DBWTg93bwz}x)051KAv$=X z`K@WXIVCgza14rR_tK^n=@1%W^!6!EchUyplaj?5ctRZ>%X8ja25v4XHZ7f>Te8k|t0rUSi(u|?4OBzTa~w*A$3%D~oV zG}&u1tD$=5E^l)?%KXfecIg~t`}6BaW7RJP`_myVR>oQe?+=dSD`Lf2`KMK=20uo3 zCW?-O`Li0%(gBIx1l9$Qe@qNVS8-%>m(SXhqyb_ZOYj86MNdSG#c`tt!N~k~Ys#DyVDZ`&P2T6Hl*j4fp?GYQA^=~wHqKOvJyyc z&yLhTiJu9UXH zrMy26_p)qZSLcU!+yWLBN_&67LqBk!UZ(yJl|^|~&KtYQ*#`5HX$`*{6yL^fb|91P zRw&s!38V&gn}J#l*SbRd@m1Wuj~ag)#M^z$oJ;i*AeQLJphVn@F`94Vw6gfz_lM$A z(MxNSRM_t%aXOTF=UE*D;&%El(BhGC`bWZgYvU@>jEypF3+A^t)r7a`!WfcK{Rxaw?&rjN|x*)g!Z{(W6ZxhBCTvFO%Ucl}$~#?*!*aA^0NtVbZs2 zA_=;xsSge+iR*g|v(&NM??sbp?0tGa!@%p4C8FiT16y(T3`{~eT~ZArxH1fXrv!Fr zGUwmP5<0bg(ss~YPMfY8Ud@y8bW}4Ah%4$~{kuh5cJg?fI&lJD-iJa<8tle|Yy4aj z-gx}g$x-;TcN{*?v|-B!mw39I$nGIkg1=qrKI^N?O)}0|<+Jhhtqqx6J*X|h6^A*> z6pLrIwhhD=;6HBeE$_$Fc%`hhJc=kH#MLgYmrqx}arbaHyoScqfywpl2ptc3YrtP$q&gH%aM4!2pJr4qL|o4D_sRK~u^shkehw9X zTr5j($Vv=%32aHQF&PLR%C@rDN{VDji`6;$8mWl-wwbHPYej(88GGO2^BpQo6@Q?G~m-M*GG> z^x2wS?S(G^cVWw(n{If)XUA~YHAwx9yB*<6h}RfAokW5tICF*JmLCoTB0|nTbftQ@ zhxaG#@6?wr|Gq9l9!fH_gNj4+yjIiG%fEU0%phPp@J>EOCM6gK%#(Lkc@t3%6;fQnm- zlE|2mzSc0W$&aTk3unFaz)r^2L0@JEUz{JN89qA zA%+{G>99+8y0rH;h8ZiL;P{|H9HM118*w~uO(DaH#x7W1*~LvY#M@xZyuqj4ibRko z*aA$1*e@?OJe7;t6PK+i%+>HtbU>t!6Hjsw@^tEF`p4lV@30|@qjr;7Ivt-@`PLyT zo^!UtpfCdy%!J;mosRx7^IMCI?j2U7CICS85dx$~(JR@JyzurkrK$eTZ)hnODq-ZK zjHcp`Iu>SmF5w63KXI)%_F6w*ckfqvw4(zz*Iv+9oVqX)#~=y97SYP~$-m2rSfVcs5IW9cEmfZY!p)x73X+#|hbr52{kA_2#$O4CA6WoF>XS zmnWQ`cWbvzex90XwjyMDLRqM1lVKS})@Nwgj|KHvP!<6HaqqM~Z=MUtY(Jf9=Y{&H zW%_HS8X0@66TP)oiPL~aIqJ5N{o}!)+Upu49_0WT$e{^BZuUIlUkHluYQ*5Izza0< z)!wG!$g$+bRH;)A2JZ?P)`?=1{6=> zr^C1igiERGtpV-WJBID(t2semor2B#^*z**&AMIegS8!%qB;Tp>2aC-Pw0YEZhGKZ zq7_KKqxj7OJ5QmMh+Ptk(dbKEn0+12gfzA z>rc01f3vpx>&WGEu(h#1o}o`}0-T1eZTi~}bl$6l^9Hsfh+X4}F6V5$mlD`3?^~8o zDxuxZ*`0ngr&vQN|M?ZkszgpyFRO-Kzqz24A8pDy(I}?3Ib^6IX|*VxD`mu9YFf{U ztp6rdAyj|AsNSZ(GpPzoLs)|0j8q%$M2 zN$ji$S`gD#Y8F_m`ftox=f`~E{Zyt0JfQWc`ona4s-S$I7@LMCN_=g8bSb08jspVK zUm9W^=XYe?U+bRHU9+U02BVnYsw)EW^*mLsmXGoerO&JDGUd_r{>f3M1iCL8|Dzy^ zUh9qFE~G5F#^uT*3<+*HWTfE+O0bqz7AlA$E1?D(%2D5w@A=;Gxfx&e-&uK+%cl2< zFpxZMr&tLFNVm-z>d~w0ZMf%?j}V}WvH%wU0(H8T8*Csql=IDe9^mleYyJa}ZhUI4 zOdm(xAdogzMZiGcM>8I)$UdN2_{KGfX+K_jPc?CI-cBps?bhOyCISl+1Y+#L_rZs? zMXDw2f>v1VISI`&7J0hZLepM=k{RrUb8Kp4jaglm7n+Vb%MEe4Vu8%CT00)Ad?a@a z&k!Hx3}JW$7Ur*vf3ssi!h!@h<%#CcDfQw_;{Nq7HtXkK7<<-E%TbxBF;%j2b(N7h zrOF&(852|&ffH^xgM0#(Kvp%j_?-O@&XaMfzoo+SA75ZC_-^dKNK5?%+hH(%a$s<- z8SX;Own9CLsHA}j9#>t(LLmOHEeaeAg(NSrKRtv$K!NoZTAQ7CrV@Osq7kTdwFifE>o)fR<^GXGYe#^AA<*7-=+)nD}+!b|91U~2xt}{ypV$gOp5@6cn z3VI~p_4eQ?%@sj~3J64280rbU((ZlGr~4ZaIZ7Ok2e z@Ap8csA?szq;X<7p3ca_;MSr4Y=?q6z?C4xeJ~6ZL`@6>fg&j(o~!pIIv6=_#hBvM2YyGPby}jIVcG40sntf6H9;)7_Y>*b-vpX z0u@6LNM8gX6Q-o^-2q5$Atv-5y6QGx?OJ!{&izl(?gKl#6gs1hv8i~y+bv;o-OZ+b zUcG97W3%$hV!GuwN60la^n5i_&;s?Aw#6y1g6C}Ymb;W{(rMGGin)Cvv0qH-;^zfy zzw+(E+nEo&v2ZqdFNL~Z>z_<+j>9fqHSHa+)J6}4~ltBR_cKpKe`51*weWh<{s z6^1$3x-V6ijL3O#=JyIOm^AI&d_5QlJoC?xJs&D)tb*Hq&8Xg+vq0HMu=eRox4nII zFS}n%;ef5(RtThrW##=UA^)x9=gXebqWHi-abI}^848paxa;CC#z-ZhozD|3p%V_} zBe*=HtUaK=SjZu(*ZM9sv`Bd`D6-A+{q^1l--G!)BXfCy0K^uSRu(UmzuOdm{rQ~5J`10H1oUnU_pf3_NS(pM1I(~Jw`y8PMK zk$z*x+c^?n&D9d9-E;lT!8g14fjluoN5S+e+n2=UT>-ms$iUssRE;=n%IS+NVf~Jy zZ~}@1`ZjnsodimBom5n5_xopiTn5h~swEv}%gWiw(|%v_tQg@B8prCv=Ss&F@A}|D zCLj9|loMS?k73fp{jMn$ZF!1ZT%F`Lt!e^LJ`F&U;MF?ngujjD-{&5XZK-~E#x zt*>G>%~#zaliqIu5s6a?2QlC=bbx}Q3ti`YA#TA6L%ZWMZPNi~$&(*P8T^wIVfI_@ z>3j&^t@QNyTjA3c%8ktj$4JIc4B7xq@OL{L$r3C3G%MrFMc0RgUM+<8QXtlb zL4yLsFkSG+lT!2hMZq1%~BIbgX}*Z}?hbYT|M^Kcfea zJ+9Ql`ohtm`MkeFtFo77(;U!@zQl^n%5bUtzXE$)sbmj35ke|!fp3-@1OJ9Hs)kM< zG#G|XkA5LzpvZ8v88g`^=hxFQr@%6>CNUMH~nLaiL#}iHYH;D0fLG%qdMw4LAvf`M>cic_QW0hYSe;ew{)}uz3@P#_R)uosdDB=WZgc^1@%pgiS?z`My9|BNWi4Wg9SM3-mv&7LE zE3<0_Ft?~F`xuXRz?0(Qnru9CWQWu^xV+{1-)lp>RqF+yrh|MSZ{lTavLPUUUuKTY zTRK7K>mUAcf<0#JaEw__@!{KXm1rBcG4m|I2+kzI;*XI^#S>2-iPQ-xWav=Kffox- z!fzY;{etSv_ zfvekk0S=*C@6W#tu6VOWtfNT5u+Cy}d<1uJ{PVG(o6Uy?sh+C6?@D%s0Dh>yKfFf_ zb~dXnqJr@bhSIP>VREF_<=@qu<`Fx#<5-uXs>Z;Uc|n!D7p%#Pgg^xY243_&Ha77Q z5^rW)?ujN;#TG`&pGEnO<4T}Xl{EWjPK7Ta&!wttc#~r~#$SI5hz&rRG$Z{m- zy!k_b@Lym`AcDubkDh|Lm6<&^Is2qE4f)Hq-9c(Hb2P$A;7&o>}>|y6gSP_MiZPma%aY(@#nTPmCyxd_wqk3|_4+ z(q#)&qc~7I?0L(JQXz5UiDCf}(Y-Z3qCXRkRz%ydFt@Nj(E`k(T|0U#2%hFiGRTU< zgD@6hTnkcM*JZw8X$OIv0H`^6x-z)VtKv4M*0S7a&G7DLg7c>ojdI<%ZyI5*-#ISc z*qjzo1{DV#-utfc{^U1wi0Yx~eO%%D*MgEA))@?)pbMOTu(l{?qW0-Zq?K*HkvpFM zkJYbPk5z&a|9CGPd+1bimF7yHpiuMJq-AsDYw8pw3fL^XR3GV!LTp-o8{R2LIQ|_a z*^>EQuOjuFAJhrZU9PIh=CHZ<@vq}NwWG}WVp|U2i9Wp!kQn5X)KdaD<^`AmsE1l2 zEDMv?mv|jp9wU?-L`*?P-tH=3CGbWu;d*3dG%gsaUm|J{-(CjAdZk@7zQfVMIXX(VSi{Q+vtx(kP884p3;vpfehd9iQSkGo zLEkZ#u|Zf*V~)mM zq@jo*+3xrDABV+);C*hZ7w^xehI8B!_?^*#wFR1 z&0H>^()(`0-m;P;n$a^a@6O8pA?=0vnF=q)Iv||-vPIWYx0A|tfZw1zxPCf|(|M}! z33U&^5KBEuw;e@3eh}cqF$jm|`Srx@_eSh?SE)>=K7LY$GWSrjZcCe%)2$Bx$=9(* z;j;B8dt;RA1K2jrh~j*v72cxRaz>o@%tqRe6a;D=JL)fhL@@lJUQc6{K|K(3aaBl0 z2O4F_iYaL%J}Mg*t*ycAt9Vu`ud)E<88h3pO_Yf04*m!)A7^4{XRt$ilSALy5 zTfKqU8oh@W;+D~#w3451OcMr5Izx+LQX6!#(-xvLzK}!^Q~wkjUa!A`B*8EH2duM49$f zqO1*hFK0cfhnn^nn6f|2NFM8t880P3AR@mtvT9b(_V{gN{XglfNpM-}SmhLWuFgcF zbKeULKpz8*ZcU1QcNro2wp*nvi{?>AP^G_{DQx_WZGDyv-FA9M|F=7 zWlu`MI>V-}o=0CqI>XUl%~r%>pr3e9+Y{r4llWLJOZ?NV>Dvg&xAktM3mlePlb_v* zzlbm5p-0Kz*Q1i3v5Midc^64tECJjBRRC5Yidf8mF~v*CTj|NH2IR51t%46QI%rLv zh@Zn32<1khJB;ut#pOS)=t*>)82~`I7oTa8I(8E7T6z35J{A2k49<-`F+}zSG-$CJ zXhUQXTf}|?VslV25wPm-Uw#(d%%TEq-sc-;6EqNvskn-r`wQP~X(qz}LjVvGoQk7c zPf;dusQ($t0CB_JLO(0dCLcuG8TRW9|+Vj0F4*U}0)N z_Fqv*EI*=>SWY!+vDDxn<_t?*tdTiG0>FK|gQiaYx4b&$AVIrWS4Qp$3Do_W1JvZE zROC^5$QpX}86a7a$eEm5&=Y@lMcan~ICCISDp};=J$axt$&eDb`sXq@x*zb|l!~sO zoi8h*&S`09${CuF_g6_4_GJAcU%TD?_4tP!xPXbezyO?mVC9+jsW{(v%IS<&{oYH} zQkL?h@{A^-2?tq|JmB9Xd%|*B^H3eXb$vhD#$@uPsSHv-_@7A#0VO?7!ZH+P43(kI z;X|1wnlD(B49;K!k0S5^izA};%_H1+61WW74F(*aj~|=q^vcA%AfEp`?*I^iJ__If ztm(>At}D5b1D71WiM{wi@&NQpv}00(tg`FIzwnU+@TK!zp_tr+Of|4VJ0 zGf|zF??0Re1-W1V$t?7tJ9e@CfW_k_CWH2OwSRU43a-!>iOXK$`U3cWCsa|!0;Mxd zOh{K>4S2r9reN!Fb;X%Wcc8y}@C;cJ-n z^!1p!A99=$jHqa5R3E53QixVe9eD9ODrEC-9ZgZj-E6`lRi=if2X_rEnwJc76fy6k ziZv;ouOs8*e0>`aSUI_!@ux4k6t~h{7n>|>w@MPn7C90yh8-tA7eOFDj`|spRlai2 zuLA|ivtabQqcE8{UsH+pjpIgVM>v!P$3P zTEz9md#*~E6Jwu~B0uw0Nu0DF@#sl(Wn1yy=g?GQ*#N$lxwsh6i_KbB5z1Q2VNTM+ ziqFp+Q&({kE`u}mqk-mby4FAC)rTjMR3l%fRnpDbP*%GC?Z=6MXvUh@6(#zAN#Fy_6+DYZ^O3A=ItJ*KBI8ck`0M>oKb^7LbMrt&aL1W ztJ`+7Qz0T(AC-W1OTE3qQ9Z+N5%sho>TiHFDxhgPW+_HCTij>r_a1&(Y4L(z07zHZZxt z+!=ub1*VQa?RO^ND*T5V1%A-z^zEr`4o-LhWbCu*Bb7G4pJtkMqfceSG-|2UPM7L8 z8X!;cLbz&{k1#LyEQEdw&vH0@w>sP;S0*O=@;sEe<7-gxNxwG%SH*ub;_{eO&RxM; z7hGytmSeu5*(e=&rydR>M1eNC3udD|ONdA>PE=<#oc_uj9m~LLd zU}O&*xvr`ACg^XMUFg_e1BBJ=C9Sbr1w(tzIW4?%K$a6M*E0HRgCY~+t~AdCY?SjU z>lR@^f&yz3Gn%#fIR0)O`HQVgqagRi;x0j z6E#{MEnlTe8=}%J&=bEM9=D64SwJ*c&o36NlJ2DQXLw)%GX|jwAKK}GC|V-R=@rI! ztCGpY1x3@8*tGv)1Y}EmnYo? z#=**ZYwoQMI)0<}KR*_S?f?a>E#OQ;NL5={TrV58x($5F_DOfH-6u!t!1>)Y@}E62 zrw4rIm}$ZC(Eo^enlmnstu}vA)i56o3Fl#9+q%!S@|f?jdD<>=y%dLxPY!Ahb<>%h zNV&6MZN(Yac>3XEH1}xso2Z8^r>Ry_XjGM7|HaiI36DfoOpzJZ+UWPND!Z!zeLHv= zOXd6II{Q{~+H&5ix1E)YCt<+Z$DglcQBI|2rpnxj**`e}?77>_-w@QfEug-Rm2~Pr z`{Ek$9Yd<=zq5OftL(3>mxUP4zoWH|isiZ+Pk1-PN$_%`G0lRSLcLXgfMNHY75py= zn05)7U(WDJEchfE&W+-u56NODf}_tr-7c{scPK%4Pk`6y9%)nldmpubCvSF+JFJAm zp~~y}JJy^>IkuD;@7mUP5W7C$vUko@m@ze9t5o8pZtn(?Fp0J%qxMrYaOO^{0b^zA zRz*ZtQW>IBflg1HSjLDQNI?JqXxbsRSpUy}d7t1>Kj1QRjVU7_sG&)FO(sL z_Cn2ufgYg&@u=(#8oKm{YnYdtU$a3i2b&(k7%L^cQdKjl+5p?QHO^Zi-1iT{S`#ua zcUpdafIJ^rIGSctyhvLp21}I#4Vq8Ki>c(Hm~i!rFqj`OKSe=Zw2sck!~%K zY@Ucs67a%g=aOfh?|%%tvKH#8$`%sC(+tzlwq$^7q8#&G!)M#t;JeXv`2okorf!`q z8JBMHf9_P|d@^3qQCZ)a^L?58*DS-V^}Hq^X>}T5Td!|Wj`Kb4ememwScZOip^>!} zo2WzEe1Ym{c8I6AP9Nq#DZ|h^g~egE}rpG(jLI%P~$|Qe|N1 zO40&gXPdk`;A<#^1~{6J3?iqFs{hwwbvTnP0%ZW$`0@_==QoSJAEbPuLcuko0ha_m zQIWNs9@;~`!x?o2{GHDp)rQee&90|U;4y8ZAYHYhA6|ndNy%Qxk|wccU_Yte6f#d4 zEyxO7qMb>6xjy^vD^Z@Hd#Blnwwj!s9-^zlK)p(zNm@;1!%OJ?(eo<+zH|YQK#gI@ zUat#BVxfQW?J>2vv-}?0k6MNvY})f|ub(Kw0yck|{zWCilmSxs2!s{O0WX<-L6u=KQYxGR_1$?)#XAKqhP^H&SV)8?Nj@Go>n zs9jlHv1jD#b=&r*(=kWfW=-}>#e9;zk734se`cjpjRM`_rh&%JnM-*(+Y8#PNavKk z|5W>nftPKpw3@fnRX8?t`JaR_+(L9m^<461A9^9uF*2yy0nqKamFMXJ29NDwSc|_| zPA2;p?B@5iv8t6JAYcq-J1e_^I-N$C&9om3#=+Ms?%= z+W{4Nt~HBoymxNeN<(wtg8s zMJIVz?}XaE^>y#?HURGEzQx<+f8<4l&iGM>vraZJHh_45KgQHZ%MnI;p4R5f!N%J6I+hE17(kKS9y~$-uM2XM=N-{HD-1`PU*{ zJ{z~w`uh3Nn7i~#AXye1$#MAZnIjl#fEUD<_n9|aBY87AvNsK!QHn{ige9wA%59DR!kH`)^K!j@-}IMwm6vp- z86OkhHv(ns&`w#Xo<0~V2bD^h9L?7AafMn@I5E(D8hHNN6PqScb@4j#bI zwd``u^D_1Py_SmI@X?J(txmvi5de&dv1N60r+GMqYOTHmFD0SPHiGbe=;^GVb!1M@Y(H6YEqdh*MFYwQIj`j4o%szW`? zH4tUq$HbV%$j(2VSYe@acQ829D55mDUu_g1|18xJ~Iz8I6CXP{Nc~t)PO+ERu{Y>_#LYK-$M~e56T@i zgki#VTi*#M$p-c|Tu5uta5;RPzIsi&dZee|7Bx6>#2aBHPxhZ$eW1X9pCcj!16qjb z97x7mUC3$$t-97CVGWy=9Kbl6#sAFiMe;pTW8A07$$I-elcwF*dGYuS`$Wp$#5M?g5~Xk!Ecwu4pTMN8w^zEQskh3mm8IA3ra+&s??5#1=bNE@DyCg=@I0D^2FW6DDqD7uw7#q$G zx7TnF`BP1wGenOTm?Y%?(NEo&X1M;mBdzP`(C0?0aBh{l<80ckM%xkJ;z)ntO`AE9 zfhTngL>;GX<*pk84e{fcy9R7VGPyfrb-gv3kKDDk|780;KVSdrheMiN8DZL1Jo{0t z?S;elz`UZRgWKtpMM?GP)j)GQ{yLc9@wLd+fx@GFg>JfrKl&#dhJpXA{QEkmaMRz6d(Md5e4ctl&_&*WrKK&z&Q+ZR-vuczz)mxL>$q&Dv z3oVc6Sc;u3Aa|y}D<7dnu4_$$KcCBvHOy)y!9_tA?&iZ8(0_`|gDNje2AM zaKUc^WBp}!hrMd+=Nmow1!;PFMZ`<|n4)CekMzoGi z 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 literal 0 HcmV?d00001 diff --git a/assets/sprites/vertical_logo.png.import b/assets/sprites/vertical_logo.png.import new file mode 100644 index 0000000..1cce508 --- /dev/null +++ b/assets/sprites/vertical_logo.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://cfgkauyw7qful" +path="res://.godot/imported/vertical_logo.png-30a74afc1637ae5d91a97bcaec17648e.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/sprites/vertical_logo.png" +dest_files=["res://.godot/imported/vertical_logo.png-30a74afc1637ae5d91a97bcaec17648e.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/scenes/main_menu.tscn b/scenes/main_menu.tscn index 437bba9..bb3cd30 100644 --- a/scenes/main_menu.tscn +++ b/scenes/main_menu.tscn @@ -1,10 +1,11 @@ -[gd_scene load_steps=17 format=3 uid="uid://bfstrli64u23y"] +[gd_scene load_steps=18 format=3 uid="uid://bfstrli64u23y"] [ext_resource type="Texture2D" uid="uid://dvldjlg0nr355" path="res://assets/sprites/atlases/atlas1.png" id="1_jk1qb"] [ext_resource type="Script" uid="uid://drru785m4eep" path="res://scripts/gui/main_menu_rich_text.gd" id="2_5dd4i"] [ext_resource type="Script" uid="uid://cghu4i3bnyavg" path="res://scripts/gui/PrototypeWindow.cs" id="2_flqon"] [ext_resource type="Texture2D" uid="uid://c37pvdhol2x02" path="res://assets/sprites/menu_bg.png" id="3_lgwnu"] [ext_resource type="Theme" uid="uid://btulhvgwclket" path="res://resources/themes/MainMenu.tres" id="4_flqon"] +[ext_resource type="Texture2D" uid="uid://cfgkauyw7qful" path="res://assets/sprites/vertical_logo.png" id="5_1ajci"] [ext_resource type="Script" uid="uid://c06k4k3ww48ev" path="res://scripts/gui/menu_buttons.gd" id="5_rcqid"] [ext_resource type="Script" uid="uid://6e8n6kc0y11o" path="res://scripts/sacrifice.gd" id="6_1ajci"] [ext_resource type="Script" uid="uid://c36bj8u7jghc7" path="res://scripts/audio/ChannelPlayer.cs" id="7_7b55j"] @@ -114,6 +115,16 @@ offset_bottom = 40.0 texture = ExtResource("3_lgwnu") metadata/_edit_lock_ = true +[node name="TextureRect" type="TextureRect" parent="."] +layout_mode = 0 +offset_left = 197.0 +offset_top = 181.0 +offset_right = 402.0 +offset_bottom = 248.0 +texture = ExtResource("5_1ajci") +expand_mode = 2 +stretch_mode = 5 + [node name="Buttons" type="Control" parent="."] layout_mode = 1 anchors_preset = 15 From 5cd4555af40c5ce7d3810d50883961d623a4e514 Mon Sep 17 00:00:00 2001 From: Rendo Date: Sat, 12 Jul 2025 22:06:56 +0500 Subject: [PATCH 33/48] shorcuts --- scenes/entities/Zombies/zombie.tscn | 2 +- scenes/gui/runtime_gui.tscn | 74 ++++++++++++++++++++++++++- scripts/gui/seedpackets/Seedpacket.cs | 15 ++---- 3 files changed, 79 insertions(+), 12 deletions(-) diff --git a/scenes/entities/Zombies/zombie.tscn b/scenes/entities/Zombies/zombie.tscn index 5244ddd..e34df77 100644 --- a/scenes/entities/Zombies/zombie.tscn +++ b/scenes/entities/Zombies/zombie.tscn @@ -1115,7 +1115,7 @@ _observedEntity = NodePath("../../../../../../../..") [node name="LeftLowerArm" type="Bone2D" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/LeftUpperArm"] position = Vector2(-2, 14) -scale = Vector2(0.999828, 0.999828) +scale = Vector2(0.999829, 0.999829) rest = Transform2D(1, 0, 0, 1, -2, 14) editor_settings/show_bone_gizmo = false diff --git a/scenes/gui/runtime_gui.tscn b/scenes/gui/runtime_gui.tscn index 7ea9bbf..bcd5ff2 100644 --- a/scenes/gui/runtime_gui.tscn +++ b/scenes/gui/runtime_gui.tscn @@ -1,4 +1,4 @@ -[gd_scene load_steps=21 format=3 uid="uid://cfnmspei3k4p7"] +[gd_scene load_steps=32 format=3 uid="uid://cfnmspei3k4p7"] [ext_resource type="PackedScene" uid="uid://ky35veswaytr" path="res://scenes/gui/sun_counter.tscn" id="1_le3od"] [ext_resource type="Theme" uid="uid://b8l285cjcgeyi" path="res://resources/themes/GameStyle.tres" id="1_xf6ra"] @@ -19,6 +19,72 @@ texture_margin_right = 4.0 texture_margin_bottom = 4.0 axis_stretch_horizontal = 1 +[sub_resource type="GDScript" id="GDScript_lxxir"] +resource_name = "shortcutter" +script/source = "extends Node + +@export var keys : Array[InputEventKey] +@export var where_to_map : Node + +func _ready() -> void: + while get_tree().paused: + await get_tree().process_frame + for i in range(where_to_map.get_child_count()): + var key = InputEventKey.new() + where_to_map.get_child(i).shortcut = Shortcut.new() + where_to_map.get_child(i).shortcut.events.append(keys[i]) +" + +[sub_resource type="InputEventKey" id="InputEventKey_lxxir"] +device = -1 +keycode = 49 +unicode = 49 + +[sub_resource type="InputEventKey" id="InputEventKey_5kkbf"] +device = -1 +keycode = 50 +unicode = 50 + +[sub_resource type="InputEventKey" id="InputEventKey_xq48m"] +device = -1 +keycode = 51 +unicode = 51 + +[sub_resource type="InputEventKey" id="InputEventKey_cti1a"] +device = -1 +keycode = 52 +unicode = 52 + +[sub_resource type="InputEventKey" id="InputEventKey_s07y0"] +device = -1 +keycode = 53 +unicode = 53 + +[sub_resource type="InputEventKey" id="InputEventKey_hmpwl"] +device = -1 +keycode = 54 +unicode = 54 + +[sub_resource type="InputEventKey" id="InputEventKey_kqrbi"] +device = -1 +keycode = 55 +unicode = 55 + +[sub_resource type="InputEventKey" id="InputEventKey_s6pj4"] +device = -1 +keycode = 56 +unicode = 56 + +[sub_resource type="InputEventKey" id="InputEventKey_ar74i"] +device = -1 +keycode = 57 +unicode = 57 + +[sub_resource type="InputEventKey" id="InputEventKey_k8sc7"] +device = -1 +keycode = 48 +unicode = 48 + [sub_resource type="InputEventAction" id="InputEventAction_xq48m"] action = &"short_shovel" pressed = true @@ -128,6 +194,12 @@ layout_mode = 2 mouse_filter = 2 theme_override_constants/separation = 0 +[node name="ShortcutSetter" type="Node" parent="MarginContainer/Control/Hotbar/PanelContainer" node_paths=PackedStringArray("where_to_map")] +process_mode = 1 +script = SubResource("GDScript_lxxir") +keys = Array[InputEventKey]([SubResource("InputEventKey_lxxir"), SubResource("InputEventKey_5kkbf"), SubResource("InputEventKey_xq48m"), SubResource("InputEventKey_cti1a"), SubResource("InputEventKey_s07y0"), SubResource("InputEventKey_hmpwl"), SubResource("InputEventKey_kqrbi"), SubResource("InputEventKey_s6pj4"), SubResource("InputEventKey_ar74i"), SubResource("InputEventKey_k8sc7")]) +where_to_map = NodePath("../Seedpackets") + [node name="Space" type="Control" parent="MarginContainer/Control/Hotbar"] layout_mode = 2 size_flags_horizontal = 3 diff --git a/scripts/gui/seedpackets/Seedpacket.cs b/scripts/gui/seedpackets/Seedpacket.cs index 30e3691..41e38c1 100644 --- a/scripts/gui/seedpackets/Seedpacket.cs +++ b/scripts/gui/seedpackets/Seedpacket.cs @@ -4,9 +4,9 @@ namespace Newlon.Components.GUI.Seedpackets; public partial class Seedpacket : TextureButton { - public static AudioStream TapStream; - public static AudioStream UntapStream; - public static AudioStream LiftStream; + public static AudioStream TapStream = ResourceLoader.Load("res://assets/audio/gui/tap.mp3"); + public static AudioStream UntapStream = ResourceLoader.Load("res://assets/audio/gui/tap2.mp3"); + public static AudioStream LiftStream = ResourceLoader.Load("res://assets/audio/gui/seedlift.mp3"); private const string PATH_TO_PACKED_SCENE = "res://scenes/gui/seedpacket.tscn"; private DisplayResource _resource; private Label _cost; @@ -21,12 +21,6 @@ public partial class Seedpacket : TextureButton // Node overrides public override void _Ready() { - if (TapStream == null) - { - TapStream = ResourceLoader.Load("res://assets/audio/gui/tap.mp3"); - UntapStream = ResourceLoader.Load("res://assets/audio/gui/tap2.mp3"); - LiftStream = ResourceLoader.Load("res://assets/audio/gui/seedlift.mp3"); - } if (_resource != null) UpdateContents(); if (Prefab == null) @@ -79,11 +73,12 @@ public partial class Seedpacket : TextureButton _cost.LabelSettings = _resource.customFrame.font; } } - + public override void _Pressed() { if (_handler is ISeedpacketPress pressHandler) pressHandler.Pressed(); + GrabFocus(); } public void Recharge() From b79d66a69d595c3f34ea247eb2cd592353f571f6 Mon Sep 17 00:00:00 2001 From: Rendo Date: Sat, 12 Jul 2025 22:21:41 +0500 Subject: [PATCH 34/48] Costveil --- scenes/entities/Zombies/zombie.tscn | 4 ++-- scenes/gui/seedpacket.tscn | 14 +++++++++++++- scripts/gui/VeilResizer.cs | 5 +---- scripts/gui/seedpackets/CostVeil.cs | 21 +++++++++++++++++++++ scripts/gui/seedpackets/CostVeil.cs.uid | 1 + 5 files changed, 38 insertions(+), 7 deletions(-) create mode 100644 scripts/gui/seedpackets/CostVeil.cs create mode 100644 scripts/gui/seedpackets/CostVeil.cs.uid diff --git a/scenes/entities/Zombies/zombie.tscn b/scenes/entities/Zombies/zombie.tscn index e34df77..e6f3f49 100644 --- a/scenes/entities/Zombies/zombie.tscn +++ b/scenes/entities/Zombies/zombie.tscn @@ -825,7 +825,7 @@ metadata/_edit_lock_ = true [node name="RightUpperLeg" type="Bone2D" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt"] use_parent_material = true position = Vector2(-6, 3) -scale = Vector2(0.999834, 0.999834) +scale = Vector2(0.999835, 0.999835) rest = Transform2D(1, 0, 0, 1, -6, 3) editor_settings/show_bone_gizmo = false @@ -1121,7 +1121,7 @@ editor_settings/show_bone_gizmo = false [node name="LeftHand" type="Bone2D" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/LeftUpperArm/LeftLowerArm"] position = Vector2(-1, 13) -scale = Vector2(0.999828, 0.999828) +scale = Vector2(0.999827, 0.999827) rest = Transform2D(1, 0, 0, 1, -1, 13) auto_calculate_length_and_angle = false length = 6.0 diff --git a/scenes/gui/seedpacket.tscn b/scenes/gui/seedpacket.tscn index 412f5eb..b80164b 100644 --- a/scenes/gui/seedpacket.tscn +++ b/scenes/gui/seedpacket.tscn @@ -1,8 +1,9 @@ -[gd_scene load_steps=9 format=3 uid="uid://e7vutg71l6f2"] +[gd_scene load_steps=10 format=3 uid="uid://e7vutg71l6f2"] [ext_resource type="Texture2D" uid="uid://dxyf557m4mq1p" path="res://assets/sprites/gui/EmptyPlantCard.png" id="1_77bw1"] [ext_resource type="Texture2D" uid="uid://cabpf23ndlvx0" path="res://assets/sprites/gui/Selection.tres" id="3_q0tvq"] [ext_resource type="Script" uid="uid://cn6ddajdtf4ep" path="res://scripts/gui/seedpackets/Seedpacket.cs" id="4_c6epd"] +[ext_resource type="Script" uid="uid://chag6sgjsjb2u" path="res://scripts/gui/seedpackets/CostVeil.cs" id="4_gtmhg"] [ext_resource type="Shader" uid="uid://dcp5tqcec2oi3" path="res://assets/shaders/gui_masking.gdshader" id="5_s5861"] [ext_resource type="Texture2D" uid="uid://c1afy0ga6h1ic" path="res://assets/sprites/white_box.png" id="6_lp42h"] [ext_resource type="Script" uid="uid://ddi84kmmq1qla" path="res://scripts/gui/VeilResizer.cs" id="7_tv07f"] @@ -76,6 +77,17 @@ mouse_default_cursor_shape = 2 expand_mode = 1 stretch_mode = 5 +[node name="CostVeil" type="ColorRect" parent="."] +visible = false +layout_mode = 1 +anchors_preset = 15 +anchor_right = 1.0 +anchor_bottom = 1.0 +grow_horizontal = 2 +grow_vertical = 2 +color = Color(0, 0, 0, 0.415686) +script = ExtResource("4_gtmhg") + [node name="Veil" type="TextureProgressBar" parent="." node_paths=PackedStringArray("_referenceTimer")] material = SubResource("ShaderMaterial_qxf0q") layout_mode = 1 diff --git a/scripts/gui/VeilResizer.cs b/scripts/gui/VeilResizer.cs index 8fa367a..bfad885 100644 --- a/scripts/gui/VeilResizer.cs +++ b/scripts/gui/VeilResizer.cs @@ -15,9 +15,6 @@ public partial class VeilResizer : TextureProgressBar public override void _Process(double delta) { - if (seedpacket.Disabled && _referenceTimer.IsStopped()) - Value = 1.0; - else - Value = _referenceTimer.TimeLeft / _referenceTimer.WaitTime; + Value = _referenceTimer.TimeLeft / _referenceTimer.WaitTime; } } diff --git a/scripts/gui/seedpackets/CostVeil.cs b/scripts/gui/seedpackets/CostVeil.cs new file mode 100644 index 0000000..764adf4 --- /dev/null +++ b/scripts/gui/seedpackets/CostVeil.cs @@ -0,0 +1,21 @@ +using Godot; +using Newlon.Components.GUI.Seedpackets; +using Newlon.Components.Level; +using System; + +public partial class CostVeil : ColorRect +{ + private Seedpacket packet; + public override void _Ready() + { + packet = GetParent(); + } + + // Called every frame. 'delta' is the elapsed time since the previous frame. + public override void _Process(double delta) + { + //Visible = RuntimeLevelData.Instance.SunCount < packet.GetResource().Cost; + + Visible = packet.disablePacket; + } +} diff --git a/scripts/gui/seedpackets/CostVeil.cs.uid b/scripts/gui/seedpackets/CostVeil.cs.uid new file mode 100644 index 0000000..f8f8cb7 --- /dev/null +++ b/scripts/gui/seedpackets/CostVeil.cs.uid @@ -0,0 +1 @@ +uid://chag6sgjsjb2u From ea7e81973e084341e28fdb8fcb2c000c70d2de31 Mon Sep 17 00:00:00 2001 From: Rendo Date: Sat, 12 Jul 2025 22:32:12 +0500 Subject: [PATCH 35/48] translations +1 --- scripts/debug/Cheats.cs | 1 + translations/gui.csv | 6 +----- translations/gui.en.translation | Bin 1686 -> 1578 bytes translations/gui.ru.translation | Bin 2757 -> 2369 bytes translations/plants.csv | 2 +- translations/plants.ru.translation | Bin 4221 -> 4225 bytes translations/zombies.csv | 2 +- translations/zombies.ru.translation | Bin 2757 -> 2753 bytes 8 files changed, 4 insertions(+), 7 deletions(-) diff --git a/scripts/debug/Cheats.cs b/scripts/debug/Cheats.cs index 6aef97a..71c5794 100644 --- a/scripts/debug/Cheats.cs +++ b/scripts/debug/Cheats.cs @@ -8,6 +8,7 @@ public partial class Cheats : Node { public override void _Input(InputEvent @event) { + if (OS.IsDebugBuild() == false) return; if (@event.IsActionPressed("cheat_add_sun")) { RuntimeLevelData.Instance.AddSun(50); diff --git a/translations/gui.csv b/translations/gui.csv index 11e08c3..6a2a060 100644 --- a/translations/gui.csv +++ b/translations/gui.csv @@ -2,12 +2,10 @@ keys,en,ru plants,Plants,Растения zombies,Zombies,Зомби lon_proto,"[center][wave amp=50.0 freq=5.0 connected=1][font_size=24]WELCOME TO LIBERATION OF NEIGHBOURVILLE PROTOTYPE![/font_size][/wave][/center] -Big thanks from me, Rendo, and our team! We appreciate any feedback, so consider reporting bugs to our [color=cyan][url=https://discord.gg/Y5Wk8H8EBY]discord server[/url][/color]. +Thank you very much from me, Rendo, and our team! We appreciate any feedback, so consider reporting bugs to our [color=cyan][url=https://discord.gg/Y5Wk8H8EBY]discord server[/url][/color]. Liberation of Neighbourville is currently in early stages of development. However, we reached point when all essential systems and mechanics are ready. -As for now, you can play survival endless with all currently made plants. Game includes some plants from first Plants versus Zombies, Aloe from sequel, three basic zombies and a hobo zombie. - As for 0.2.X version, current roadmap contains:[ul] Adventure mode New plants and zombies, obviously @@ -18,8 +16,6 @@ More ways to play Liberation of Neighbourville на данный момент на ранних этапах разработки. Тем не менее, мы достигли момента, когда все необходимые системы и механики готовы. -Ну, а сейчас вы можете сыграть в бесконечный режим со всеми сделанными на данный момент растениями. Игра включает в себя некоторые растения из первой части, Алоэ из сиквела, три базовых зомби и бездомного зомби. - На момент версии 0.2.X, дорожная карта содержит:[ul] Режим приключений Новые растения и зомби, очевидно diff --git a/translations/gui.en.translation b/translations/gui.en.translation index ca9e4a3315627ccb6957822d54a88a8e2f5399a5..851aaedf47a0cf34443ae371332dc33ca4b59e90 100644 GIT binary patch delta 223 zcmbQnyNYMSDMq%-j0_C1Op`A#$_X+tF)&B~x&A=B>tB$V%H;oy;+k5_3=HfH5DZkn z0F-37=hJxm6OaKC=Kx~ipc~tyCfhTqTNxs$1~S2_1zY@mo�{I}E5Vx1_4Uo?U zWP>nYPQlBcjFT5IiRmf;^{@biKp12Z2p5;XvU`N29i&Abh%F{RW?IY_lEnEhn;|%w U;kmo6+QG?v%r`gRWZBCI0QL5f5Rf3~ErD{9fxu)gridbzMzU=ek0?%oR0ms*7)piDORsM5l$?=mBQ_B+H zoC6dPPtV}EtNbqj$a>DTgyCP*qdQfP?O-8nD%nS_Mm?z(7loL{6VPLq(2*JDl1&Q&qP3C73(~@ChV31^hU?w09 zRKal1r}6d|piXHZ8-#^}ZfyI?I@zB|&B_$0oEsnJ34=TkJFsp3%=DgVa|(Mf PGY>mZ0Hio5ILH|Qs&^#O delta 562 zcmYjOJxIe~5KU9tK*fp`iz3)>a*)!wIJme;p-{z9>fS*R?AWCKbf{WO7AHqn)1NeH zn?@Ae@7ol?&bkP?i|xbN9v%f@*Dy|El>sxAR3{n(FlsZfW(H&C67n?Jc=iKM;78DYyy(7pGn!fG;luB04<9g}FV6l@>ToM=0E8kpnNjgFF>M>7fZGAZ>KI fpgk=2sl#WoI*?>yopEG099I{8z0Z?2D$Ohp_ZWCjTHaF;KiGI<@7J)`>McR*5X vvL3UzXamqB5uh{(vjJ7f1F`t#DCS<)$$MDEH~-`)XXgPb0hI9+ delta 181 zcmZov{Hw6xEhA&b{8zHc(s&$Ohp_ZuJ;1(oy diff --git a/translations/zombies.csv b/translations/zombies.csv index fff8191..a7e1a25 100644 --- a/translations/zombies.csv +++ b/translations/zombies.csv @@ -19,7 +19,7 @@ Attack damage: [color=darkred]1 bite[/color]. ","Носит ведро чтоб Очки здоровья: [color=darkred]7 горошин[/color]. Очки брони: [color=darkred]39 горошин[/color]. Скорость ходьбы: [color=darkred]0.2 клеток/сек[/color]. -Скорость атаки: [color=darkred]2.67 Гц[/color]. +Скорость атаки: [color=darkred]2.67 Гц[/color]. Урон от атаки: [color=darkred]1 укус[/color]." conehead,Conehead,Конусоголовый conehead_desc,"Armoured version of basic zombie. Equivalent of ~3 zombies. diff --git a/translations/zombies.ru.translation b/translations/zombies.ru.translation index 8064600dcd2b929ef0d4ee5212c6bf686aa4fd53..3598bc45850c50ac5763aa28dd7a383e34a823d6 100644 GIT binary patch delta 90 zcmX>qdQf!3T1H0e$?F)6d5<$PFo3X<)!)-Glix9lOO`V;FdPAjfG`k&aqE?wSrL=v fn5-EiHb*guFi-Ad_Sw9f^*0L-J5)tbaF8odQ^17T1G~j$?F)6c~3AhFo3X<)!);xlix9lOI9#5FdPAjfG`k&aqE?wS&@_F dn5-EiH%BpvFmKLf^6oUW& From 67e92c1394bd8d65696a6f82ef6ea700ff577c55 Mon Sep 17 00:00:00 2001 From: Rendo Date: Sat, 12 Jul 2025 22:51:27 +0500 Subject: [PATCH 36/48] seedpacket shortcut fix --- project.godot | 2 +- scripts/gui/seedpackets/Seedpacket.cs | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/project.godot b/project.godot index c6d4000..bf9f234 100644 --- a/project.godot +++ b/project.godot @@ -16,7 +16,7 @@ warnings/check_angle_interpolation_type_conflicting=false [application] config/name="Liberation of the Neighbourville" -config/version="0.2.1" +config/version="0.2.2" run/main_scene="uid://bfstrli64u23y" config/features=PackedStringArray("4.4", "C#", "Forward Plus") config/icon="res://icon.png" diff --git a/scripts/gui/seedpackets/Seedpacket.cs b/scripts/gui/seedpackets/Seedpacket.cs index 41e38c1..fc6b01c 100644 --- a/scripts/gui/seedpackets/Seedpacket.cs +++ b/scripts/gui/seedpackets/Seedpacket.cs @@ -76,9 +76,9 @@ public partial class Seedpacket : TextureButton public override void _Pressed() { + GrabFocus(); if (_handler is ISeedpacketPress pressHandler) pressHandler.Pressed(); - GrabFocus(); } public void Recharge() From 13371ca8688086c2d4b92a002f23b04973ec4149 Mon Sep 17 00:00:00 2001 From: Rendo Date: Sat, 12 Jul 2025 23:15:55 +0500 Subject: [PATCH 37/48] adjusted basic zombie speed --- resources/animations/zombies/basic.res | Bin 9491 -> 9495 bytes scenes/entities/Zombies/zombie.tscn | 42 +++++++++++-------------- 2 files changed, 18 insertions(+), 24 deletions(-) diff --git a/resources/animations/zombies/basic.res b/resources/animations/zombies/basic.res index fb85e90d35f8e09ddc0c9e92c8ea8ca10dd2b720..06e0ea2d98003031f8f92a9d8a6caee30e7ccc13 100644 GIT binary patch delta 445 zcmV;u0Yd(hN|#EIGy#pVHUAp~9UK5ulQ!7d(Q5e2V(ta=VniO@jDU>)>DMXXXbKBc=m7jWoGs5G~Wtve<_#EEz zrD|&Pf!TlGFh zf6zW`6TQc(1OHqctNxP@KoA?Z6nv1`H(T>OQBlvmamu-_6b6 delta 441 zcmV;q0Y?6pN|Q>EGy#dRHUAp~{Tl!zlQVsz^_yA=AO!ZJsJ@sD5%{|pi6p-VR-+vvfF@$e7VDn`Or9og}M$+mm<@!V;@E(Ys z5gZ^S9it`V!lWKD9s`qE>B2+3V0)L== z*d}_9RmnN8IBG}+mU2Zigc-VBoOw;x~y5K7Bf diff --git a/scenes/entities/Zombies/zombie.tscn b/scenes/entities/Zombies/zombie.tscn index e6f3f49..f921c4c 100644 --- a/scenes/entities/Zombies/zombie.tscn +++ b/scenes/entities/Zombies/zombie.tscn @@ -769,7 +769,6 @@ size = Vector2(16, 48) [sub_resource type="AnimationNodeTimeScale" id="AnimationNodeTimeScale_2q05d"] [sub_resource type="AnimationNodeBlendTree" id="AnimationNodeBlendTree_ccrjo"] -graph_offset = Vector2(-437.603, 39.6198) nodes/TimeScale/node = SubResource("AnimationNodeTimeScale_2q05d") nodes/TimeScale/position = Vector2(60, 120) nodes/Tree/node = ExtResource("8_ckb7n") @@ -837,13 +836,13 @@ metadata/_edit_lock_ = true [node name="RightLowerLeg" type="Bone2D" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/RightUpperLeg"] position = Vector2(-2, 12) -scale = Vector2(0.999832, 0.999832) +scale = Vector2(0.999834, 0.999834) rest = Transform2D(1, 0, 0, 1, -2, 12) editor_settings/show_bone_gizmo = false [node name="RightFoot" type="Bone2D" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/RightUpperLeg/RightLowerLeg"] position = Vector2(-2, 14) -scale = Vector2(0.999836, 0.999836) +scale = Vector2(0.99983, 0.99983) rest = Transform2D(1, 0, 0, 1, -2, 14) auto_calculate_length_and_angle = false length = 12.0 @@ -866,7 +865,7 @@ metadata/_edit_lock_ = true [node name="LeftUpperLeg" type="Bone2D" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt"] use_parent_material = true position = Vector2(6, 4) -scale = Vector2(0.99983, 0.99983) +scale = Vector2(0.999833, 0.999833) rest = Transform2D(1, 0, 0, 1, 6, 4) editor_settings/show_bone_gizmo = false @@ -878,7 +877,7 @@ metadata/_edit_lock_ = true [node name="LeftLowerLeg" type="Bone2D" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/LeftUpperLeg"] position = Vector2(-1, 13) -scale = Vector2(0.999833, 0.999833) +scale = Vector2(0.999835, 0.999835) rest = Transform2D(1, 0, 0, 1, -1, 13) editor_settings/show_bone_gizmo = false @@ -890,7 +889,7 @@ metadata/_edit_lock_ = true [node name="LeftFoot" type="Bone2D" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/LeftUpperLeg/LeftLowerLeg"] position = Vector2(6, 10) -scale = Vector2(0.999828, 0.999828) +scale = Vector2(0.999829, 0.999829) rest = Transform2D(1, 0, 0, 1, 6, 10) auto_calculate_length_and_angle = false length = 12.0 @@ -906,7 +905,7 @@ metadata/_edit_lock_ = true [node name="Body" type="Bone2D" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt"] use_parent_material = true position = Vector2(1, -2) -scale = Vector2(0.999825, 0.999825) +scale = Vector2(0.99983, 0.99983) rest = Transform2D(1, 0, 0, 1, 1, -2) editor_settings/show_bone_gizmo = false @@ -926,7 +925,7 @@ metadata/_edit_lock_ = true [node name="RightLowerArm" type="Bone2D" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/RightUpperArm"] position = Vector2(-2, 15) -scale = Vector2(0.999827, 0.999827) +scale = Vector2(0.99983, 0.99983) rest = Transform2D(1, 0, 0, 1, -2, 15) editor_settings/show_bone_gizmo = false @@ -961,8 +960,7 @@ metadata/_edit_lock_ = true [node name="Tie" type="Bone2D" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body"] visible = false position = Vector2(-9, -21) -rotation = 0.0770195 -skew = -0.00039506 +skew = -0.000400186 rest = Transform2D(1, 0, 0, 1, -9, -21) auto_calculate_length_and_angle = false length = 24.0 @@ -977,7 +975,7 @@ metadata/_edit_lock_ = true [node name="Head" type="Bone2D" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body"] position = Vector2(-10, -25) -scale = Vector2(0.999822, 0.999822) +scale = Vector2(0.999827, 0.999827) rest = Transform2D(1, 0, 0, 1, -10, -25) editor_settings/show_bone_gizmo = false @@ -1006,16 +1004,15 @@ offset = Vector2(-2, -2) metadata/_edit_lock_ = true [node name="Left_Eye" type="Sprite2D" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/Head/HeadParticle/Head"] -position = Vector2(-4, -9) +position = Vector2(-4, -9.00001) texture = SubResource("AtlasTexture_kto0i") centered = false offset = Vector2(-2, -2) metadata/_edit_lock_ = true [node name="Jaw" type="Sprite2D" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/Head/HeadParticle/Head"] -position = Vector2(-3.00095, 2.9984) -rotation = 0.00747448 -scale = Vector2(0.999828, 0.999828) +position = Vector2(-3, 3) +scale = Vector2(0.999829, 0.999829) texture = SubResource("AtlasTexture_x5uj2") centered = false offset = Vector2(-12, -2) @@ -1032,7 +1029,7 @@ _observedEntity = NodePath("../../../../../../../..") [node name="Jaw" type="Bone2D" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/Head"] position = Vector2(-3, 3) -scale = Vector2(0.999828, 0.999828) +scale = Vector2(0.999829, 0.999829) rest = Transform2D(1, 0, 0, 1, -3, 3) auto_calculate_length_and_angle = false length = 11.0 @@ -1066,7 +1063,7 @@ remote_path = NodePath("../../HeadParticle/Head/Left_Eye") [node name="LeftUpperArm" type="Bone2D" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body"] position = Vector2(-1, -20) -scale = Vector2(0.999829, 0.999829) +scale = Vector2(0.999826, 0.999826) rest = Transform2D(1, 0, 0, 1, -1, -20) editor_settings/show_bone_gizmo = false @@ -1088,8 +1085,7 @@ minTorque = -45.0 maxTorque = 45.0 [node name="Left_Lower_Arm" type="Sprite2D" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/LeftUpperArm/HandProjectile"] -rotation = 0.0724153 -scale = Vector2(0.999998, 0.999998) +scale = Vector2(0.999995, 0.999995) texture = SubResource("AtlasTexture_auqeq") centered = false offset = Vector2(-5, 0) @@ -1098,8 +1094,7 @@ metadata/_edit_lock_ = true [node name="Left_Hand" type="Sprite2D" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/LeftUpperArm/HandProjectile/Left_Lower_Arm"] show_behind_parent = true position = Vector2(-0.99983, 12.9978) -rotation = -0.0319596 -scale = Vector2(0.999659, 0.999659) +scale = Vector2(0.999662, 0.999662) texture = SubResource("AtlasTexture_vlvtp") centered = false offset = Vector2(-4, -1) @@ -1115,13 +1110,13 @@ _observedEntity = NodePath("../../../../../../../..") [node name="LeftLowerArm" type="Bone2D" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/LeftUpperArm"] position = Vector2(-2, 14) -scale = Vector2(0.999829, 0.999829) +scale = Vector2(0.999825, 0.999825) rest = Transform2D(1, 0, 0, 1, -2, 14) editor_settings/show_bone_gizmo = false [node name="LeftHand" type="Bone2D" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/LeftUpperArm/LeftLowerArm"] position = Vector2(-1, 13) -scale = Vector2(0.999827, 0.999827) +scale = Vector2(0.999832, 0.999832) rest = Transform2D(1, 0, 0, 1, -1, 13) auto_calculate_length_and_angle = false length = 6.0 @@ -1171,7 +1166,6 @@ entity = NodePath("..") [node name="Mover" type="Node" parent="."] script = ExtResource("4_u5syx") _speed = SubResource("Resource_ckb7n") -_speedControlMult = 0.248477 [node name="ChompPlayer" type="Node" parent="."] script = ExtResource("10_ruqsf") From 1a98935a02597cb38417d23d3be1f76ad0265301 Mon Sep 17 00:00:00 2001 From: Rendo Date: Sun, 13 Jul 2025 00:04:35 +0500 Subject: [PATCH 38/48] Zombieeeee --- project.godot | 2 +- scenes/entities/Zombies/bucket_zombie.tscn | 61 +++++++++++++--------- scenes/entities/Zombies/cone_zombie.tscn | 59 ++++++++++----------- scenes/entities/Zombies/zombie.tscn | 43 ++++++++------- 4 files changed, 89 insertions(+), 76 deletions(-) diff --git a/project.godot b/project.godot index bf9f234..5dd5642 100644 --- a/project.godot +++ b/project.godot @@ -16,7 +16,7 @@ warnings/check_angle_interpolation_type_conflicting=false [application] config/name="Liberation of the Neighbourville" -config/version="0.2.2" +config/version="0.2.3" run/main_scene="uid://bfstrli64u23y" config/features=PackedStringArray("4.4", "C#", "Forward Plus") config/icon="res://icon.png" diff --git a/scenes/entities/Zombies/bucket_zombie.tscn b/scenes/entities/Zombies/bucket_zombie.tscn index 2df1937..b30d9b1 100644 --- a/scenes/entities/Zombies/bucket_zombie.tscn +++ b/scenes/entities/Zombies/bucket_zombie.tscn @@ -1,4 +1,4 @@ -[gd_scene load_steps=15 format=3 uid="uid://xu4i6tmkv00a"] +[gd_scene load_steps=14 format=3 uid="uid://xu4i6tmkv00a"] [ext_resource type="PackedScene" uid="uid://hhjbqkjqpt7x" path="res://scenes/entities/Zombies/cone_zombie.tscn" id="1_mwqpo"] [ext_resource type="Shader" uid="uid://d0eo5uuj222c4" path="res://assets/shaders/CG_color_blender.gdshader" id="2_3mrqj"] @@ -24,13 +24,6 @@ region = Rect2(24, 2, 9, 9) atlas = ExtResource("6_lea3a") region = Rect2(0, 32, 9, 15) -[sub_resource type="Resource" id="Resource_2bm8y"] -resource_local_to_scene = true -script = ExtResource("4_1s2fn") -flat_value = 10.0 -percentage_value = 0.0 -mult_value = 1.0 - [sub_resource type="Resource" id="Resource_v1iwd"] resource_local_to_scene = true script = ExtResource("4_1s2fn") @@ -55,25 +48,31 @@ use_parent_material = false [node name="RightUpperLeg" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt" index="1"] use_parent_material = false -scale = Vector2(0.999834, 0.999834) +scale = Vector2(0.999835, 0.999835) [node name="RightLowerLeg" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/RightUpperLeg" index="1"] scale = Vector2(0.999833, 0.999833) [node name="RightFoot" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/RightUpperLeg/RightLowerLeg" index="0"] -scale = Vector2(0.999835, 0.999835) +scale = Vector2(0.999834, 0.999834) [node name="LeftUpperLeg" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt" index="2"] use_parent_material = false +scale = Vector2(0.999835, 0.999835) [node name="LeftLowerLeg" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/LeftUpperLeg" index="1"] scale = Vector2(0.999834, 0.999834) +[node name="LeftFoot" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/LeftUpperLeg/LeftLowerLeg" index="1"] +scale = Vector2(0.999829, 0.999829) + [node name="Body" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt" index="3"] use_parent_material = false +scale = Vector2(0.999829, 0.999829) [node name="RightUpperArm" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body" index="0"] use_parent_material = false +scale = Vector2(0.999825, 0.999825) [node name="RightLowerArm" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/RightUpperArm" index="1"] scale = Vector2(0.999827, 0.999827) @@ -82,15 +81,24 @@ scale = Vector2(0.999827, 0.999827) scale = Vector2(0.999828, 0.999828) [node name="Tie" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body" index="2"] -rotation = 0.0815367 -skew = -0.000141144 +rotation = 0.140011 +skew = -0.000141382 -[node name="Head" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body" index="3"] -scale = Vector2(0.999827, 0.999827) +[node name="Right_Eye" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/Head/HeadParticle/Head" index="0"] +position = Vector2(-16, -8) +scale = Vector2(1, 1) + +[node name="Left_Eye" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/Head/HeadParticle/Head" index="1"] +position = Vector2(-4, -9) +scale = Vector2(1, 1) [node name="Jaw" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/Head/HeadParticle/Head" index="2"] -position = Vector2(-3.001, 2.9983) -rotation = 0.00791286 +position = Vector2(-3.00172, 2.99709) +rotation = 0.0135876 +scale = Vector2(0.999828, 0.999828) + +[node name="Jaw" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/Head" index="1"] +scale = Vector2(0.999828, 0.999828) [node name="Hat" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/Head" index="4"] position = Vector2(-6, -8) @@ -100,20 +108,24 @@ position = Vector2(0.994479, -10.0058) texture = ExtResource("3_0nlp0") degradationStages = Array[Texture]([ExtResource("3_0nlp0"), ExtResource("4_xx7fu"), ExtResource("5_v1iwd")]) +[node name="LeftUpperArm" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body" index="4"] +scale = Vector2(0.999829, 0.999829) + [node name="Left_Lower_Arm" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/LeftUpperArm/HandProjectile" index="0"] -rotation = 0.0766625 -scale = Vector2(1, 1) +rotation = 0.131641 +scale = Vector2(0.999999, 0.999999) [node name="Left_Hand" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/LeftUpperArm/HandProjectile/Left_Lower_Arm" index="0"] show_behind_parent = false -rotation = -0.0338341 -scale = Vector2(0.999658, 0.999658) +position = Vector2(-0.99983, 12.9978) +rotation = -0.0580983 +scale = Vector2(0.999657, 0.999657) [node name="LeftLowerArm" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/LeftUpperArm" index="2"] -scale = Vector2(0.99983, 0.99983) +scale = Vector2(0.999829, 0.999829) [node name="LeftHand" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/LeftUpperArm/LeftLowerArm" index="0"] -scale = Vector2(0.999828, 0.999828) +scale = Vector2(0.999827, 0.999827) [node name="Left_Hand" type="Sprite2D" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/LeftUpperArm/LeftLowerArm/LeftHand" index="0"] texture = SubResource("AtlasTexture_wfem3") @@ -127,12 +139,9 @@ centered = false offset = Vector2(-5, 0) metadata/_edit_lock_ = true -[node name="Eatbox" parent="." index="2"] -_damage = SubResource("Resource_2bm8y") - [node name="Mover" parent="." index="4"] _speed = SubResource("Resource_v1iwd") -_speedControlMult = 0.26305 +_speedControlMult = 0.987455 [node name="Armor" parent="." index="6"] MaxHP = 375.0 diff --git a/scenes/entities/Zombies/cone_zombie.tscn b/scenes/entities/Zombies/cone_zombie.tscn index c0607ce..74a74db 100644 --- a/scenes/entities/Zombies/cone_zombie.tscn +++ b/scenes/entities/Zombies/cone_zombie.tscn @@ -1,4 +1,4 @@ -[gd_scene load_steps=16 format=3 uid="uid://hhjbqkjqpt7x"] +[gd_scene load_steps=15 format=3 uid="uid://hhjbqkjqpt7x"] [ext_resource type="PackedScene" uid="uid://co11v3w8hbwgf" path="res://scenes/entities/Zombies/zombie.tscn" id="1_3dq4c"] [ext_resource type="Shader" uid="uid://d0eo5uuj222c4" path="res://assets/shaders/CG_color_blender.gdshader" id="2_2dq8e"] @@ -20,13 +20,6 @@ shader_parameter/amount = 0.0 [sub_resource type="CircleShape2D" id="CircleShape2D_67t4t"] -[sub_resource type="Resource" id="Resource_w70im"] -resource_local_to_scene = true -script = ExtResource("4_qof5v") -flat_value = 10.0 -percentage_value = 0.0 -mult_value = 1.0 - [sub_resource type="Resource" id="Resource_b6mal"] resource_local_to_scene = true script = ExtResource("4_qof5v") @@ -44,43 +37,49 @@ material = SubResource("ShaderMaterial_sat5k") scale = Vector2(0.999835, 0.999835) [node name="RightLowerLeg" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/RightUpperLeg" index="1"] -scale = Vector2(0.999835, 0.999835) +scale = Vector2(0.999834, 0.999834) [node name="RightFoot" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/RightUpperLeg/RightLowerLeg" index="0"] -scale = Vector2(0.999831, 0.999831) +scale = Vector2(0.999832, 0.999832) [node name="LeftUpperLeg" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt" index="2"] scale = Vector2(0.999834, 0.999834) [node name="LeftLowerLeg" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/LeftUpperLeg" index="1"] -scale = Vector2(0.999836, 0.999836) +scale = Vector2(0.999835, 0.999835) [node name="LeftFoot" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/LeftUpperLeg/LeftLowerLeg" index="1"] -scale = Vector2(0.999831, 0.999831) +scale = Vector2(0.99983, 0.99983) [node name="Body" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt" index="3"] scale = Vector2(0.999829, 0.999829) [node name="RightUpperArm" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body" index="0"] -scale = Vector2(0.999825, 0.999825) +scale = Vector2(0.999826, 0.999826) [node name="RightLowerArm" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/RightUpperArm" index="1"] -scale = Vector2(0.999825, 0.999825) +scale = Vector2(0.999826, 0.999826) + +[node name="RightHand" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/RightUpperArm/RightLowerArm" index="0"] +scale = Vector2(0.99983, 0.99983) [node name="Tie" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body" index="2"] -position = Vector2(-9, -21) -rotation = 0.0487752 -skew = -9.78708e-05 +rotation = 0.16518 +skew = -9.81092e-05 [node name="Head" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body" index="3"] -scale = Vector2(0.999829, 0.999829) +scale = Vector2(0.999827, 0.999827) -[node name="Left_Eye" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/Head/HeadParticle/Head" index="1"] -position = Vector2(-4, -8.99999) +[node name="Right_Eye" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/Head/HeadParticle/Head" index="0"] +position = Vector2(-16, -8.00001) [node name="Jaw" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/Head/HeadParticle/Head" index="2"] -position = Vector2(-2.80745, 2.53167) -rotation = 0.0233037 +position = Vector2(-2.99036, 2.96833) +rotation = 0.0171523 +scale = Vector2(0.999828, 0.999828) + +[node name="Jaw" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/Head" index="1"] +scale = Vector2(0.999828, 0.999828) [node name="Hat" type="RigidBody2D" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/Head" index="4" node_paths=PackedStringArray("data")] position = Vector2(-2.5, -13.5) @@ -113,25 +112,23 @@ shape = SubResource("CircleShape2D_67t4t") scale = Vector2(0.999829, 0.999829) [node name="Left_Lower_Arm" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/LeftUpperArm/HandProjectile" index="0"] -rotation = 0.129286 -scale = Vector2(0.999998, 0.999998) +rotation = 0.160346 +scale = Vector2(0.999999, 0.999999) [node name="Left_Hand" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/LeftUpperArm/HandProjectile/Left_Lower_Arm" index="0"] -rotation = -0.0996425 -scale = Vector2(0.99966, 0.99966) +position = Vector2(-0.99983, 12.9978) +rotation = -0.0733402 +scale = Vector2(0.999659, 0.999659) [node name="LeftLowerArm" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/LeftUpperArm" index="2"] scale = Vector2(0.999829, 0.999829) [node name="LeftHand" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/LeftUpperArm/LeftLowerArm" index="0"] -scale = Vector2(0.99983, 0.99983) - -[node name="Eatbox" parent="." index="2"] -_damage = SubResource("Resource_w70im") +scale = Vector2(0.999829, 0.999829) [node name="Mover" parent="." index="4"] _speed = SubResource("Resource_b6mal") -_speedControlMult = 0.774692 +_speedControlMult = 1.48524 [node name="Armor" type="Node" parent="." index="6"] script = ExtResource("3_5s7in") diff --git a/scenes/entities/Zombies/zombie.tscn b/scenes/entities/Zombies/zombie.tscn index f921c4c..c7698c8 100644 --- a/scenes/entities/Zombies/zombie.tscn +++ b/scenes/entities/Zombies/zombie.tscn @@ -824,7 +824,7 @@ metadata/_edit_lock_ = true [node name="RightUpperLeg" type="Bone2D" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt"] use_parent_material = true position = Vector2(-6, 3) -scale = Vector2(0.999835, 0.999835) +scale = Vector2(0.999836, 0.999836) rest = Transform2D(1, 0, 0, 1, -6, 3) editor_settings/show_bone_gizmo = false @@ -842,7 +842,7 @@ editor_settings/show_bone_gizmo = false [node name="RightFoot" type="Bone2D" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/RightUpperLeg/RightLowerLeg"] position = Vector2(-2, 14) -scale = Vector2(0.99983, 0.99983) +scale = Vector2(0.999831, 0.999831) rest = Transform2D(1, 0, 0, 1, -2, 14) auto_calculate_length_and_angle = false length = 12.0 @@ -877,7 +877,7 @@ metadata/_edit_lock_ = true [node name="LeftLowerLeg" type="Bone2D" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/LeftUpperLeg"] position = Vector2(-1, 13) -scale = Vector2(0.999835, 0.999835) +scale = Vector2(0.999832, 0.999832) rest = Transform2D(1, 0, 0, 1, -1, 13) editor_settings/show_bone_gizmo = false @@ -889,7 +889,7 @@ metadata/_edit_lock_ = true [node name="LeftFoot" type="Bone2D" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/LeftUpperLeg/LeftLowerLeg"] position = Vector2(6, 10) -scale = Vector2(0.999829, 0.999829) +scale = Vector2(0.999832, 0.999832) rest = Transform2D(1, 0, 0, 1, 6, 10) auto_calculate_length_and_angle = false length = 12.0 @@ -905,7 +905,7 @@ metadata/_edit_lock_ = true [node name="Body" type="Bone2D" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt"] use_parent_material = true position = Vector2(1, -2) -scale = Vector2(0.99983, 0.99983) +scale = Vector2(0.999826, 0.999826) rest = Transform2D(1, 0, 0, 1, 1, -2) editor_settings/show_bone_gizmo = false @@ -913,7 +913,7 @@ editor_settings/show_bone_gizmo = false z_index = -1 use_parent_material = true position = Vector2(-14, -23) -scale = Vector2(0.999827, 0.999827) +scale = Vector2(0.99983, 0.99983) rest = Transform2D(1, 0, 0, 1, -14, -23) editor_settings/show_bone_gizmo = false @@ -925,13 +925,13 @@ metadata/_edit_lock_ = true [node name="RightLowerArm" type="Bone2D" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/RightUpperArm"] position = Vector2(-2, 15) -scale = Vector2(0.99983, 0.99983) +scale = Vector2(0.999827, 0.999827) rest = Transform2D(1, 0, 0, 1, -2, 15) editor_settings/show_bone_gizmo = false [node name="RightHand" type="Bone2D" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/RightUpperArm/RightLowerArm"] position = Vector2(-1, 13) -scale = Vector2(0.999827, 0.999827) +scale = Vector2(0.999829, 0.999829) rest = Transform2D(1, 0, 0, 1, -1, 13) auto_calculate_length_and_angle = false length = 8.0 @@ -960,7 +960,8 @@ metadata/_edit_lock_ = true [node name="Tie" type="Bone2D" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body"] visible = false position = Vector2(-9, -21) -skew = -0.000400186 +rotation = -0.00889184 +skew = -0.000420451 rest = Transform2D(1, 0, 0, 1, -9, -21) auto_calculate_length_and_angle = false length = 24.0 @@ -975,7 +976,7 @@ metadata/_edit_lock_ = true [node name="Head" type="Bone2D" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body"] position = Vector2(-10, -25) -scale = Vector2(0.999827, 0.999827) +scale = Vector2(0.999829, 0.999829) rest = Transform2D(1, 0, 0, 1, -10, -25) editor_settings/show_bone_gizmo = false @@ -998,21 +999,24 @@ metadata/_edit_lock_ = true [node name="Right_Eye" type="Sprite2D" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/Head/HeadParticle/Head"] position = Vector2(-16, -8) +scale = Vector2(1, 1) texture = SubResource("AtlasTexture_vcc72") centered = false offset = Vector2(-2, -2) metadata/_edit_lock_ = true [node name="Left_Eye" type="Sprite2D" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/Head/HeadParticle/Head"] -position = Vector2(-4, -9.00001) +position = Vector2(-4, -9) +scale = Vector2(1, 1) texture = SubResource("AtlasTexture_kto0i") centered = false offset = Vector2(-2, -2) metadata/_edit_lock_ = true [node name="Jaw" type="Sprite2D" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/Head/HeadParticle/Head"] -position = Vector2(-3, 3) -scale = Vector2(0.999829, 0.999829) +position = Vector2(-2.71683, 2.31534) +rotation = 0.0263511 +scale = Vector2(0.99983, 0.99983) texture = SubResource("AtlasTexture_x5uj2") centered = false offset = Vector2(-12, -2) @@ -1063,7 +1067,7 @@ remote_path = NodePath("../../HeadParticle/Head/Left_Eye") [node name="LeftUpperArm" type="Bone2D" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body"] position = Vector2(-1, -20) -scale = Vector2(0.999826, 0.999826) +scale = Vector2(0.999829, 0.999829) rest = Transform2D(1, 0, 0, 1, -1, -20) editor_settings/show_bone_gizmo = false @@ -1085,7 +1089,8 @@ minTorque = -45.0 maxTorque = 45.0 [node name="Left_Lower_Arm" type="Sprite2D" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/LeftUpperArm/HandProjectile"] -scale = Vector2(0.999995, 0.999995) +rotation = 0.113898 +scale = Vector2(0.999999, 0.999999) texture = SubResource("AtlasTexture_auqeq") centered = false offset = Vector2(-5, 0) @@ -1094,7 +1099,8 @@ metadata/_edit_lock_ = true [node name="Left_Hand" type="Sprite2D" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/LeftUpperArm/HandProjectile/Left_Lower_Arm"] show_behind_parent = true position = Vector2(-0.99983, 12.9978) -scale = Vector2(0.999662, 0.999662) +rotation = -0.112673 +scale = Vector2(0.99966, 0.99966) texture = SubResource("AtlasTexture_vlvtp") centered = false offset = Vector2(-4, -1) @@ -1110,13 +1116,13 @@ _observedEntity = NodePath("../../../../../../../..") [node name="LeftLowerArm" type="Bone2D" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/LeftUpperArm"] position = Vector2(-2, 14) -scale = Vector2(0.999825, 0.999825) +scale = Vector2(0.999829, 0.999829) rest = Transform2D(1, 0, 0, 1, -2, 14) editor_settings/show_bone_gizmo = false [node name="LeftHand" type="Bone2D" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/LeftUpperArm/LeftLowerArm"] position = Vector2(-1, 13) -scale = Vector2(0.999832, 0.999832) +scale = Vector2(0.99983, 0.99983) rest = Transform2D(1, 0, 0, 1, -1, 13) auto_calculate_length_and_angle = false length = 6.0 @@ -1166,6 +1172,7 @@ entity = NodePath("..") [node name="Mover" type="Node" parent="."] script = ExtResource("4_u5syx") _speed = SubResource("Resource_ckb7n") +_speedControlMult = 2.42123 [node name="ChompPlayer" type="Node" parent="."] script = ExtResource("10_ruqsf") From 8be2bc2c299f503a51d056c2cdeb9e9efc40058d Mon Sep 17 00:00:00 2001 From: Rendo Date: Sun, 13 Jul 2025 00:06:38 +0500 Subject: [PATCH 39/48] hobo fix --- scenes/entities/Zombies/hobo.tscn | 38 ++++++++++++------------------- 1 file changed, 14 insertions(+), 24 deletions(-) diff --git a/scenes/entities/Zombies/hobo.tscn b/scenes/entities/Zombies/hobo.tscn index 1d709fc..b54783b 100644 --- a/scenes/entities/Zombies/hobo.tscn +++ b/scenes/entities/Zombies/hobo.tscn @@ -1,8 +1,7 @@ -[gd_scene load_steps=64 format=3 uid="uid://bgqmwsb6ynm81"] +[gd_scene load_steps=62 format=3 uid="uid://bgqmwsb6ynm81"] [ext_resource type="PackedScene" uid="uid://co11v3w8hbwgf" path="res://scenes/entities/Zombies/zombie.tscn" id="1_fnu7s"] [ext_resource type="Shader" uid="uid://d0eo5uuj222c4" path="res://assets/shaders/CG_color_blender.gdshader" id="2_6qr4h"] -[ext_resource type="Script" uid="uid://bcc7skl7ts6sh" path="res://scripts/systems/effects/Effect.cs" id="2_b583s"] [ext_resource type="Resource" uid="uid://dsg1vjx76ifgu" path="res://resources/effects/GarlicEffect.tres" id="3_b583s"] [ext_resource type="Script" uid="uid://dt5uj25u0g6y3" path="res://scripts/particles/FallParticle.cs" id="3_tu6af"] [ext_resource type="Script" uid="uid://c5v2og85t7s6j" path="res://scripts/zombies/behaviours/HoboBehaviour.cs" id="4_5selg"] @@ -653,13 +652,6 @@ _data = { &"RESET": SubResource("Animation_vn3j1") } -[sub_resource type="Resource" id="Resource_qg8rq"] -resource_local_to_scene = true -script = ExtResource("4_c1y3b") -flat_value = 10.0 -percentage_value = 0.0 -mult_value = 1.0 - [sub_resource type="AnimationNodeTimeScale" id="AnimationNodeTimeScale_2q05d"] [sub_resource type="AnimationNodeAnimation" id="AnimationNodeAnimation_vn3j1"] @@ -757,7 +749,7 @@ mult_value = 1.0 [node name="Hobo" node_paths=PackedStringArray("_armor") instance=ExtResource("1_fnu7s")] _armor = NodePath("CanArmor") MaxHP = 130.0 -_effectImmunities = Array[ExtResource("2_b583s")]([ExtResource("3_b583s")]) +_effectImmunities = [ExtResource("3_b583s")] [node name="CanvasGroup" parent="." index="0"] material = SubResource("ShaderMaterial_w8pya") @@ -775,10 +767,10 @@ scale = Vector2(0.999828, 0.999828) texture = SubResource("AtlasTexture_b583s") [node name="RightLowerLeg" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/RightUpperLeg" index="1"] -scale = Vector2(0.999831, 0.999831) +scale = Vector2(0.999832, 0.999832) [node name="RightFoot" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/RightUpperLeg/RightLowerLeg" index="0"] -scale = Vector2(0.99983, 0.99983) +scale = Vector2(0.999829, 0.999829) [node name="Right_Foot" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/RightUpperLeg/RightLowerLeg/RightFoot" index="0"] texture = SubResource("AtlasTexture_uoit3") @@ -787,19 +779,19 @@ texture = SubResource("AtlasTexture_uoit3") texture = SubResource("AtlasTexture_vn3j1") [node name="LeftUpperLeg" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt" index="2"] -scale = Vector2(0.999828, 0.999828) +scale = Vector2(0.999829, 0.999829) [node name="Left_Upper_Leg" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/LeftUpperLeg" index="0"] texture = SubResource("AtlasTexture_yb81c") [node name="LeftLowerLeg" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/LeftUpperLeg" index="1"] -scale = Vector2(0.99983, 0.99983) +scale = Vector2(0.999829, 0.999829) [node name="Left_Lower_Leg" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/LeftUpperLeg/LeftLowerLeg" index="0"] texture = SubResource("AtlasTexture_nlwsb") [node name="LeftFoot" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/LeftUpperLeg/LeftLowerLeg" index="1"] -scale = Vector2(0.999822, 0.999822) +scale = Vector2(0.999821, 0.999821) [node name="Left_Foot" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/LeftUpperLeg/LeftLowerLeg/LeftFoot" index="0"] texture = SubResource("AtlasTexture_8y6c0") @@ -808,7 +800,7 @@ texture = SubResource("AtlasTexture_8y6c0") scale = Vector2(0.999828, 0.999828) [node name="RightUpperArm" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body" index="0"] -scale = Vector2(0.999824, 0.999824) +scale = Vector2(0.999823, 0.999823) [node name="Right_Upper_Arm" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/RightUpperArm" index="0"] texture = SubResource("AtlasTexture_nc6p3") @@ -829,8 +821,7 @@ texture = SubResource("AtlasTexture_op0h6") texture = SubResource("AtlasTexture_0s5wm") [node name="Tie" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body" index="2"] -position = Vector2(-9, -21) -rotation = 0.0163802 +rotation = 0.0176863 scale = Vector2(1e-05, 1e-05) [node name="Tie" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/Tie" index="0"] @@ -879,7 +870,7 @@ position = Vector2(-4, -9) [node name="Jaw" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/Head/HeadParticle/Head" index="2"] position = Vector2(-3, 3) -rotation = -0.0266413 +rotation = -0.0287656 scale = Vector2(0.999829, 0.999829) texture = SubResource("AtlasTexture_7cvmi") offset = Vector2(-14, -2) @@ -932,12 +923,13 @@ scale = Vector2(0.999826, 0.999826) texture = SubResource("AtlasTexture_tebih") [node name="Left_Lower_Arm" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/LeftUpperArm/HandProjectile" index="0"] -rotation = 0.0147763 -scale = Vector2(0.999998, 0.999998) +rotation = 0.0159545 +scale = Vector2(0.999997, 0.999997) texture = SubResource("AtlasTexture_auxav") [node name="Left_Hand" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/LeftUpperArm/HandProjectile/Left_Lower_Arm" index="0"] position = Vector2(-0.99983, 12.9978) +rotation = 1.86329e-09 scale = Vector2(0.999652, 0.999652) texture = SubResource("AtlasTexture_dntsa") @@ -954,15 +946,13 @@ libraries = { &"hobo": ExtResource("8_yb81c") } -[node name="Eatbox" parent="." index="2"] -_damage = SubResource("Resource_qg8rq") - [node name="AnimationTree" parent="." index="3"] tree_root = SubResource("AnimationNodeBlendTree_txjqc") advance_expression_base_node = NodePath("../Behaviour") [node name="Mover" parent="." index="4"] _speed = SubResource("Resource_4248q") +_speedControlMult = 0.0 [node name="HitPlayer" parent="." index="6"] playlist = Array[AudioStream]([ExtResource("8_4248q"), ExtResource("9_tu6af")]) From 97826af1aa70dc8e20e48648dc7b1233e7f807f8 Mon Sep 17 00:00:00 2001 From: Rendo Date: Sun, 13 Jul 2025 02:51:35 +0500 Subject: [PATCH 40/48] new version --- project.godot | 2 +- scenes/entities/Zombies/hobo.tscn | 38 +++++++++++++++---------------- 2 files changed, 20 insertions(+), 20 deletions(-) diff --git a/project.godot b/project.godot index 5dd5642..54a6139 100644 --- a/project.godot +++ b/project.godot @@ -16,7 +16,7 @@ warnings/check_angle_interpolation_type_conflicting=false [application] config/name="Liberation of the Neighbourville" -config/version="0.2.3" +config/version="0.2.4" run/main_scene="uid://bfstrli64u23y" config/features=PackedStringArray("4.4", "C#", "Forward Plus") config/icon="res://icon.png" diff --git a/scenes/entities/Zombies/hobo.tscn b/scenes/entities/Zombies/hobo.tscn index b54783b..3af6e50 100644 --- a/scenes/entities/Zombies/hobo.tscn +++ b/scenes/entities/Zombies/hobo.tscn @@ -761,16 +761,16 @@ scale = Vector2(0.999902, 0.999902) texture = SubResource("AtlasTexture_txjqc") [node name="RightUpperLeg" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt" index="1"] -scale = Vector2(0.999828, 0.999828) +scale = Vector2(0.999832, 0.999832) [node name="Right_Upper_Leg" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/RightUpperLeg" index="0"] texture = SubResource("AtlasTexture_b583s") [node name="RightLowerLeg" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/RightUpperLeg" index="1"] -scale = Vector2(0.999832, 0.999832) +scale = Vector2(0.999831, 0.999831) [node name="RightFoot" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/RightUpperLeg/RightLowerLeg" index="0"] -scale = Vector2(0.999829, 0.999829) +scale = Vector2(0.999826, 0.999826) [node name="Right_Foot" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/RightUpperLeg/RightLowerLeg/RightFoot" index="0"] texture = SubResource("AtlasTexture_uoit3") @@ -779,34 +779,34 @@ texture = SubResource("AtlasTexture_uoit3") texture = SubResource("AtlasTexture_vn3j1") [node name="LeftUpperLeg" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt" index="2"] -scale = Vector2(0.999829, 0.999829) +scale = Vector2(0.999826, 0.999826) [node name="Left_Upper_Leg" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/LeftUpperLeg" index="0"] texture = SubResource("AtlasTexture_yb81c") [node name="LeftLowerLeg" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/LeftUpperLeg" index="1"] -scale = Vector2(0.999829, 0.999829) +scale = Vector2(0.999827, 0.999827) [node name="Left_Lower_Leg" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/LeftUpperLeg/LeftLowerLeg" index="0"] texture = SubResource("AtlasTexture_nlwsb") [node name="LeftFoot" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/LeftUpperLeg/LeftLowerLeg" index="1"] -scale = Vector2(0.999821, 0.999821) +scale = Vector2(0.999816, 0.999816) [node name="Left_Foot" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/LeftUpperLeg/LeftLowerLeg/LeftFoot" index="0"] texture = SubResource("AtlasTexture_8y6c0") [node name="Body" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt" index="3"] -scale = Vector2(0.999828, 0.999828) +scale = Vector2(0.999832, 0.999832) [node name="RightUpperArm" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body" index="0"] -scale = Vector2(0.999823, 0.999823) +scale = Vector2(0.99982, 0.99982) [node name="Right_Upper_Arm" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/RightUpperArm" index="0"] texture = SubResource("AtlasTexture_nc6p3") [node name="RightLowerArm" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/RightUpperArm" index="1"] -scale = Vector2(0.999815, 0.999815) +scale = Vector2(0.999819, 0.999819) [node name="RightHand" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/RightUpperArm/RightLowerArm" index="0"] scale = Vector2(0.999828, 0.999828) @@ -821,7 +821,7 @@ texture = SubResource("AtlasTexture_op0h6") texture = SubResource("AtlasTexture_0s5wm") [node name="Tie" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body" index="2"] -rotation = 0.0176863 +rotation = 0.0101791 scale = Vector2(1e-05, 1e-05) [node name="Tie" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/Tie" index="0"] @@ -863,15 +863,15 @@ scale = Vector2(0.999827, 0.999827) texture = SubResource("AtlasTexture_pjhfy") [node name="Right_Eye" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/Head/HeadParticle/Head" index="0"] -position = Vector2(-16, -8) +position = Vector2(-16, -7.99999) [node name="Left_Eye" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/Head/HeadParticle/Head" index="1"] position = Vector2(-4, -9) [node name="Jaw" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/Head/HeadParticle/Head" index="2"] position = Vector2(-3, 3) -rotation = -0.0287656 -scale = Vector2(0.999829, 0.999829) +rotation = -0.0165557 +scale = Vector2(0.999831, 0.999831) texture = SubResource("AtlasTexture_7cvmi") offset = Vector2(-14, -2) @@ -902,7 +902,7 @@ _threshold = 0.333 _observedArmor = NodePath("../../../../../../../../../../CanArmor") [node name="Jaw" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/Head" index="1"] -scale = Vector2(0.999829, 0.999829) +scale = Vector2(0.999831, 0.999831) [node name="TrashcanLid" type="Bone2D" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/Head" index="4"] position = Vector2(-0.0022974, -17.0131) @@ -917,24 +917,24 @@ editor_settings/show_bone_gizmo = false remote_path = NodePath("../../HeadParticle/Head/TrashcanLid/Trashcan_lid") [node name="LeftUpperArm" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body" index="5"] -scale = Vector2(0.999826, 0.999826) +scale = Vector2(0.999821, 0.999821) [node name="Left_Upper_Arm" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/LeftUpperArm" index="0"] texture = SubResource("AtlasTexture_tebih") [node name="Left_Lower_Arm" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/LeftUpperArm/HandProjectile" index="0"] -rotation = 0.0159545 -scale = Vector2(0.999997, 0.999997) +rotation = 0.00918239 +scale = Vector2(0.999996, 0.999996) texture = SubResource("AtlasTexture_auxav") [node name="Left_Hand" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/LeftUpperArm/HandProjectile/Left_Lower_Arm" index="0"] position = Vector2(-0.99983, 12.9978) -rotation = 1.86329e-09 +rotation = 0.0 scale = Vector2(0.999652, 0.999652) texture = SubResource("AtlasTexture_dntsa") [node name="LeftLowerArm" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/LeftUpperArm" index="2"] -scale = Vector2(0.999827, 0.999827) +scale = Vector2(0.999826, 0.999826) [node name="LeftHand" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/LeftUpperArm/LeftLowerArm" index="0"] scale = Vector2(0.999822, 0.999822) From 128df67882991aefdce65c97d4d7c5b7fb06dbdc Mon Sep 17 00:00:00 2001 From: Rendo Date: Sun, 13 Jul 2025 03:59:09 +0500 Subject: [PATCH 41/48] Nerdus --- assets/sprites/atlases/plants/nerdus.png | Bin 0 -> 34278 bytes .../sprites/atlases/plants/nerdus.png.import | 34 ++ .../sprites/atlases/plants/nerdus_attack.png | Bin 0 -> 17148 bytes .../atlases/plants/nerdus_attack.png.import | 34 ++ assets/sprites/atlases/plants/nerdus_idle.png | Bin 0 -> 16212 bytes .../atlases/plants/nerdus_idle.png.import | 34 ++ resources/effects/GarlicEffect.tres | 2 +- resources/effects/NerdusEffect.tres | 8 + resources/plants/Nerdus.tres | 21 ++ scenes/entities/plants/garlic.tscn | 1 + scenes/entities/plants/nerdus.tscn | 293 ++++++++++++++++++ scenes/entities/plants/wallnut.tscn | 2 + scripts/plants/NerdusReturnAttack.cs | 48 +++ scripts/plants/NerdusReturnAttack.cs.uid | 1 + scripts/plants/behaviours/HpBasedBehaviour.cs | 11 +- scripts/systems/effects/GarlicEffect.cs | 6 +- 16 files changed, 490 insertions(+), 5 deletions(-) create mode 100644 assets/sprites/atlases/plants/nerdus.png create mode 100644 assets/sprites/atlases/plants/nerdus.png.import create mode 100644 assets/sprites/atlases/plants/nerdus_attack.png create mode 100644 assets/sprites/atlases/plants/nerdus_attack.png.import create mode 100644 assets/sprites/atlases/plants/nerdus_idle.png create mode 100644 assets/sprites/atlases/plants/nerdus_idle.png.import create mode 100644 resources/effects/NerdusEffect.tres create mode 100644 resources/plants/Nerdus.tres create mode 100644 scenes/entities/plants/nerdus.tscn create mode 100644 scripts/plants/NerdusReturnAttack.cs create mode 100644 scripts/plants/NerdusReturnAttack.cs.uid diff --git a/assets/sprites/atlases/plants/nerdus.png b/assets/sprites/atlases/plants/nerdus.png new file mode 100644 index 0000000000000000000000000000000000000000..c8c7a3cafb862e343d668c937114d98368a2673d GIT binary patch literal 34278 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