From 9b55af2e67d097609f1723aaa7801532a123c722 Mon Sep 17 00:00:00 2001 From: Elrinth Date: Sun, 11 Jan 2026 03:34:14 +0100 Subject: [PATCH] delete files in nickes --- .../sfx/nickes/gate/gate_down_01.wav.mp3 | Bin 50337 -> 0 bytes .../nickes/gate/gate_down_01.wav.mp3.import | 19 - .../audio/sfx/nickes/gate/gate_up_01.wav.mp3 | Bin 73652 -> 0 bytes .../sfx/nickes/gate/gate_up_01.wav.mp3.import | 19 - .../gate/sword-impact-metalgate-01.wav.mp3 | Bin 12680 -> 0 bytes .../sword-impact-metalgate-01.wav.mp3.import | 19 - .../gate/sword-impact-metalgate-02.wav.mp3 | Bin 12320 -> 0 bytes .../sword-impact-metalgate-02.wav.mp3.import | 19 - .../nickes/move_rock/move_rock.mp3.wav.mp3 | Bin 9778 -> 0 bytes .../move_rock/move_rock.mp3.wav.mp3.import | 19 - .../nickes/move_rock/rock_push_loop_01.mp3 | Bin 60877 -> 0 bytes .../move_rock/rock_push_loop_01.mp3.import | 19 - .../nickes/move_rock/rock_push_loop_02.mp3 | Bin 67249 -> 0 bytes .../move_rock/rock_push_loop_02.mp3.import | 19 - .../sfx/nickes/treasure/coin_drop_01.wav.mp3 | Bin 22675 -> 0 bytes .../treasure/coin_drop_01.wav.mp3.import | 19 - .../sfx/nickes/treasure/coin_drop_02.wav.mp3 | Bin 21081 -> 0 bytes .../treasure/coin_drop_02.wav.mp3.import | 19 - .../sfx/nickes/treasure/open_chest_01.wav.mp3 | Bin 47776 -> 0 bytes .../treasure/open_chest_01.wav.mp3.import | 19 - .../sfx/nickes/treasure/open_chest_02.wav.mp3 | Bin 43237 -> 0 bytes .../treasure/open_chest_02.wav.mp3.import | 19 - .../nickes/treasure/open_treasure_01.wav.mp3 | Bin 25403 -> 0 bytes .../treasure/open_treasure_01.wav.mp3.import | 19 - src/scenes/TeleporterIntoClosedRoom.tscn | 10 +- src/scenes/door.tscn | 41 +- src/scenes/interactable_object.tscn | 37 ++ src/scenes/loot.tscn | 12 + src/scenes/player.tscn | 15 + src/scripts/door.gd | 522 +++++++++++++++- src/scripts/dungeon_generator.gd | 564 ++++++++++++------ src/scripts/enemy_base.gd | 88 ++- src/scripts/enemy_bat.gd | 4 +- src/scripts/enemy_humanoid.gd | 418 ++++++++++++- src/scripts/enemy_spawner.gd | 100 +++- src/scripts/floor_switch.gd | 6 +- src/scripts/game_world.gd | 495 ++++++++++++--- src/scripts/interactable_object.gd | 66 +- src/scripts/level_complete_ui.gd | 74 ++- src/scripts/loot.gd | 69 ++- src/scripts/player.gd | 47 ++ src/scripts/room_trigger.gd | 47 +- src/scripts/stairs.gd | 22 +- src/scripts/sword_projectile.gd | 9 +- src/scripts/sword_slash.gd | 7 +- src/scripts/teleporter_into_closed_room.gd | 10 +- 46 files changed, 2237 insertions(+), 654 deletions(-) delete mode 100644 src/assets/audio/sfx/nickes/gate/gate_down_01.wav.mp3 delete mode 100644 src/assets/audio/sfx/nickes/gate/gate_down_01.wav.mp3.import delete mode 100644 src/assets/audio/sfx/nickes/gate/gate_up_01.wav.mp3 delete mode 100644 src/assets/audio/sfx/nickes/gate/gate_up_01.wav.mp3.import delete mode 100644 src/assets/audio/sfx/nickes/gate/sword-impact-metalgate-01.wav.mp3 delete mode 100644 src/assets/audio/sfx/nickes/gate/sword-impact-metalgate-01.wav.mp3.import delete mode 100644 src/assets/audio/sfx/nickes/gate/sword-impact-metalgate-02.wav.mp3 delete mode 100644 src/assets/audio/sfx/nickes/gate/sword-impact-metalgate-02.wav.mp3.import delete mode 100644 src/assets/audio/sfx/nickes/move_rock/move_rock.mp3.wav.mp3 delete mode 100644 src/assets/audio/sfx/nickes/move_rock/move_rock.mp3.wav.mp3.import delete mode 100644 src/assets/audio/sfx/nickes/move_rock/rock_push_loop_01.mp3 delete mode 100644 src/assets/audio/sfx/nickes/move_rock/rock_push_loop_01.mp3.import delete mode 100644 src/assets/audio/sfx/nickes/move_rock/rock_push_loop_02.mp3 delete mode 100644 src/assets/audio/sfx/nickes/move_rock/rock_push_loop_02.mp3.import delete mode 100644 src/assets/audio/sfx/nickes/treasure/coin_drop_01.wav.mp3 delete mode 100644 src/assets/audio/sfx/nickes/treasure/coin_drop_01.wav.mp3.import delete mode 100644 src/assets/audio/sfx/nickes/treasure/coin_drop_02.wav.mp3 delete mode 100644 src/assets/audio/sfx/nickes/treasure/coin_drop_02.wav.mp3.import delete mode 100644 src/assets/audio/sfx/nickes/treasure/open_chest_01.wav.mp3 delete mode 100644 src/assets/audio/sfx/nickes/treasure/open_chest_01.wav.mp3.import delete mode 100644 src/assets/audio/sfx/nickes/treasure/open_chest_02.wav.mp3 delete mode 100644 src/assets/audio/sfx/nickes/treasure/open_chest_02.wav.mp3.import delete mode 100644 src/assets/audio/sfx/nickes/treasure/open_treasure_01.wav.mp3 delete mode 100644 src/assets/audio/sfx/nickes/treasure/open_treasure_01.wav.mp3.import diff --git a/src/assets/audio/sfx/nickes/gate/gate_down_01.wav.mp3 b/src/assets/audio/sfx/nickes/gate/gate_down_01.wav.mp3 deleted file mode 100644 index 3f0b799b13e8cfe5591257f5c7092fb0bcfbc8e0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 50337 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 diff --git a/src/assets/audio/sfx/nickes/gate/gate_down_01.wav.mp3.import b/src/assets/audio/sfx/nickes/gate/gate_down_01.wav.mp3.import deleted file mode 100644 index 56ea9fa..0000000 --- a/src/assets/audio/sfx/nickes/gate/gate_down_01.wav.mp3.import +++ /dev/null @@ -1,19 +0,0 @@ -[remap] - -importer="mp3" -type="AudioStreamMP3" -uid="uid://bpxm3p5gfrgm1" -path="res://.godot/imported/gate_down_01.wav.mp3-06b671985a213cda6f5a35bcc781a782.mp3str" - -[deps] - -source_file="res://assets/audio/sfx/nickes/gate/gate_down_01.wav.mp3" -dest_files=["res://.godot/imported/gate_down_01.wav.mp3-06b671985a213cda6f5a35bcc781a782.mp3str"] - -[params] - -loop=false -loop_offset=0 -bpm=0 -beat_count=0 -bar_beats=4 diff --git a/src/assets/audio/sfx/nickes/gate/gate_up_01.wav.mp3 b/src/assets/audio/sfx/nickes/gate/gate_up_01.wav.mp3 deleted file mode 100644 index ad132f939be1275214bec39101763ad4daa0a628..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 73652 zcmdpd19K+L`}G~$wr$(CZ9Cc6wr$(CH@3C0ooqJQV8i>L=l22L5Ab%?R8Q5+RCiaO z>-3q^SIdaAfdT$2lIm(|65loR_a!f)AVJK=YHH)=O6+0b;%ejMNX*8_!^6lyOl|Gv z_Jfy+$=<}lg3;BI(b2+E%SGO0@Le<=o!9sa-$V7C%_7j4iA>aB{S-sn=?vQHlV< zs{r7Du-!gIe06;8rU0bG2vp@^!`HtDSwdO_ufW=0C)jU;K%gfO2z=+XtTOP^q4CoQ zl#F)|ICbmZw=#$&d-P0NBUx|sr(Qqj1+KAt4U?+PXX;pnbGvxhsLdT*S-_F(OwqDR z$Ri)Cw1Mhl3xnUx{uHtk?*mhYP$@)`;trkz^@hh59{Q=2GC~@+O2pQzK4g}8b5bfN zmI6MFOsa?gom0oL%4#|i4h3Kp3m#cC0XI>mu3FX9DN~2_0>;CDA?Zp4n*^;!5v!ep zln!s?8N-UGwcV3NfZIbS+CmO34b{qJjAB8Q;;z9XuB}rV zaOn%)&TLwbzz5k0+`TB{VO}9Y2w`47`KWf0L9caE&k|1ir~Ls0exYCT)eyp15)cy1 zXDF|e6FD8D;wAm$CT-$M=2MME)a+o;#Ds(cAInvShD7{{cYX9L5*}0#x5O>y$NFnt z#|ejGo@f+{bCQnuXgqDQOK4BUCBsyy=~AhHyzO6C=BE*8fG{BO=knu|%G}DhWMV_oNwmqp{SSvE;CqqzYY>PFKwJSF0HFB^ty}~EQ1oZY zyw;O~;!|07vamuQ*{7i@L+T*2IepFPx|4|dgivbAkMaS5B-s{X;_RBor^cX8Xg>&s=a z!>t~2@FIw`1uK&BYL6C=sne$kF)NXSPtaGo*P0_dC@s`mY}f0Q=SMsmtb{hFAKy-E zaJ>!4b-!LC44S8(8!Ti2lHtj#qzn7;x^9S_7uLra1952{8JkKCB`%5IYi^YMXV( zoD59~$GhF7nt(<~t4k+;oxLX?76avr7`fDvechaff2X%99dRUzHih{@1q=WQ^owAbs!^QKif|RFAOPBM z9TIuSc%{dVrMwod3>rTv7Gw$^neDhH{jl?3^sl=yvtxJdhJmJm9h_u@I~nVy+oo;$ zE8LoQgP`#}2IE>6d1ne_Omt@?W+5RXUv*W)UbP5F5jp++Uq_ihjUiLoXS$cK&+nL` z7F^Wl{XXM zS&+);g}Jqyr`5I>EFfsNOTou#i^mWzKf9vcu(T8LoP~XY9B+E=v~r8snA&+P;xw%E zG;NIBVoQ*)E(Rk?JcU&nKUf2q5_LnF@ksyOqq3b?3bjhYor84)HpAdIonP2`!W8ez zW5ZiAx9Zr&PN(KpC~L2$rGKq(MdWx==KwB=8ZRUZuP`{>o->5VCTJ5d-lQ%AcS?b} zg51kQC-NN_f3l%5?V(#E)VKmH4gBW~_6cl#3Vd8+*N(t3Hw|Xs8#UA`nPUL4fq+Jb znTT*k3Q{)LXbG)mkB6|6-B_z@fiGcb*HT22`IZUhR{-!b9nE)mu|ND)v_NxGCo~EZ zy*iR?;e)(dKdy9ef|Pc@0IAM)XJYs#e-2BltAc`;tvbyycG!`miS`&w-HwJ#;xahR z?%qDv%6Z;hBSDA!X`Yu2n>&GFGSZO5{h|gi&_FRzbJzdTa;9A6c`$OAV)P7Lr~h#w8zNf*?NO|9NL-g4Q4y{RJ>DyxVZ&=q@&TU>wgJB! z?6$M0q~ybs{Uni#a9&})8`Byewy43FbP@`(+?>}--)$z&Pi^m!x*x40UqRB7#B!|es5tNMrq@i)A)R)tQS<(v7PDQ;xOQyn z*>HMKh*#vH?dnb{;+2>{`xKtk!IeAUW}B6#?SG-V0RW%;Z-NwzxzBZX$&ZZCG0Ze> z1Q3SszC$$_lO7;SdOWcUdZH8V#jaLi8_f5P+`x8J&T;MF^%x#7!Sosx%puxw8I|YI6B|U45sC?YvclU2a~%TIpD zFXX%FM?slMYfNtj3hRpW7I-EDdy80GYG zM9-ViY9DcDPbTl`72%(Q<%B8lB37{DfIjO$r(9-t6Nr6M@${zmP7fhHRM&k*wb-)( z%w{t9Wi~$@Kfi>oO4@E=AkkZ3H_9NeR??0|Xn^6>_&)eU)mY0_&5w0uo)e;gYrzW5 zuBkF-k+K_XEHSaO^N5h55)NYnsq(z#R@LbLkZ=otKsH*pLlXO8_Z_M>A(f~OW?FU3 zOCr1kbZw8AiD`Z}vgVi_9;Zr$(NqgKrwv$?z_iG7|PMRnT=$qy>QDH0@|n zWES)hY}yH?){w+RIT>VUyloOZp*S|bcV{ycwS^Jr&192x2ehQZI9mU5aEU|Ey2l)% zy;q6pam`dxRCu^T>Ke(atmC1dZzCG0mO14+$^%v#~fv&>H=+Z?1u9jra-q`L@o0jfR>8sUt z;^qNUBkI+RRy}t}`5lzIqw{}*IscfJDBcXaZ9JB*Tsp{TbQ%^XZ)S|N~O(snOr>(EI#-SZC#I589!w}eKiJ&s`Z8pK?(Qi(rG^P zD4I9ChR=$aEUK+&1!?i=j{rD1KZ4&2BH?c@-N*TkGo=(}r_F9YPL8dtd|y^yv;3aQ zKBd0v9g_vL8~Vfm0QDpQpA=ta$T{Cj!wdoHgqD z>1YJ^Kf6B=gB>{#~GEH}>)yYWn9L1#Uf;gsx=B->J+c!`$R|znve@+Q4q$dwZ`+Jwk6ahO}&c^ zEHKPU$YvQ9ADC_AsD8jM6IH>kJC(%_f`r5tKqpZdSsDC&yB0UG($oI0!#xJ3JJ0e;;4F z+3sD6Chud|d+FgN0h17CV0lt;cC=;h^Ny``#p_bmQ4NXp9U&T)M!@gvp}~IHD!287 z?LfXP*p)n+JbRo>R0-WQJ6f@wOYlm3)&A7!`fJs~tqJw#uXj0do zT=b55{c(?IuAhA`9vTdWi>c!O3x)Wnq%w2?l+amYPQgcyxOZ0&tt_UE}6zT3_^9Fim; z99j+*+msNWbej22$t05~Y={+!z zS{*j#4q_Q^GL?WwW`O0WEt4ihhjc+MA>aC0!#->XDkkJ)d*y-2_Ry)8%!&~VZfvr? zOk8F9gJhN)V=Luqd<^*j*fP$l4y$Q!Y7y5ZtHVGHO20zL0dHSd@ZK@99hX3Uy`MQ_ zsu0hbv6AOJ=EouBJ zC>t~Qq!#WR!?~OAFeFAQafSOAG)qSj0E=BL{C!U2^DfV1t{$mO{?3V^@lUTyto8f+ zU;BS}uW2CKRv~=>)IXUp4kHZHDD`@j;?1~5n-V0gneO7%^b&1trE(|^<|Lh^(mEe$^32uvR z>P-F~a^lxhC)c}alm1Ot7`|KTb3&k(rM%k?$Z0k5y<$Qy4dbrw%dh2xq3ve8nV~dM zo{{m|P(zck($E({e&ityh6A-mBBKw~8YDwzd%KV_nGn={W!+Y66Bw6nTv1tawI0ZS z3rbOz64=RL4p*g5B$QC(q{0~M$2G^Fd|9ac!DF~N4ZAI%e-} z$Vz$E7kib}Kb%Y;5lQJ@g|lBa;c*oL0>UIS%YQA?=a(}XdTT4P@JEw_DJHa85@&EV zmDj?vhw02E3|Ew$88u&JYTM=fFK#Lf=7!O7CtEesl}3#sp`5u^63_|wvaFSDrKv6% z41kJq3$;dsAcp7EMbPyj7V*uz$Fo6Es9^Wdp>TArTGfqdOAv@3f2Qy$2=O7o%rI5w zd+B4Gt{`%0t-})_3`@4eUG;=oMgf?_NCzA$<4bX)>Y`I7krfoHXSe6h5}^t@CZtZW zs8Gh#Ohc=bu;=9{sMR}382MbjjMtu`(ts`}|1n4R&|cxZQv2%A1d#9sCcV48Mk-^P zA)fj>J!09n1OWhm!KGv5VmP&&nx$ekl$J~qzdDrA14RclptuBm$94dwQ_l8J7Nr}v`|-Y>qPHp&>R)}lMld~UukH%1yD3I0^J-O|3@y0|rsPp;kZryGi zE8;=aS5~Zt8AfPbibXPNNFFmsXw|TBO?%12N3{M&a!0`&LWTzKFr2c=P;v_V)C%bF zPVTeKIMiPlw~IqKk7L#Eop&+J%B)u@ujK-l3L#FwJs_|`Bf?8dj2N1@cS5j;{-*5b zA+$V$sRlfARH&GgremkZNBF+Q-0}zfo!}zbpp5014P$Q~?H4w+K)!3>rfZbC1x=a) z?4;khTl$5UeufP)F~u4R>2123`td-3rB&D0J0G^e$$+wYeA+|ou3}*+v&%;)kxQqw zu3>fSG5KF&iz$uP3d}^mnAgTOctKf9QZY8*eIeiZ-jzE$of>;;aSQ-}`A|pTq$PDo zN3RI$l6T*EOkKqgOUC6eCtx;s5kX*}6z zOc)*1^h~ccm@am?oHFRs;D3-W%Arn}wwXgJv}LsfKCd2~MpuN@sgY+^o=R2DQp$rM z2A|^OWfj2#P=Wb<;bk!F_+5NB`fHbp>gg-a-Rxg3E>|yU+B8PeG)PR-&kU60997D` z3xTE?fi-6Z9clT4G~PR$w;OPsoJr<7!C=JIf0F-0!g&z*p_#rf45zRdxm_avm$XwVH4c04JI-a}p6=L|H}>8@$wvWLne| zVc>cymLYu?RCrz-1ZrhT_|J_GY<`-^$KA5@-4k2Ew7vby+p4$nVFp@$i7&K!4If67 zC^-)~2_I2ID|ADT_?uFB%AUdQao!zE+jBL_nbYxAQm6$I%T}MA*Fv`5Z z{Bu=>qE%dtwli6;!-+jS;*!>qE^B-iXr;twr&rlwdG}Fyt@ts|pc{Xx&s9-xWIx|t zt9$e1-?J9hZf!B|@KXP&Hn*t5cmn|R97eqxqp2*~w^UA9#{zua#L`%0>ooZ+9nE+~ zSHE;L|DoR9d=C0m|GSa!aYd+n)3^QKWcB&C`8OYLB67m|EN3 zAEyMY)pk)Y*V0inMh4KujpP1-7E?q2$QxCCqGxeNLBL;uG%-Bskcqv@01L&pvc=TU z>5z%o*iSs0Vl6;q@gG>5fjC}%Sc&u}OKrw|6iRvB?uPv})q6*BAKK;1^oeEAYW;;x zH(@Jaq*B@Hv$)9X^IL(k<%=PZs#n{UsH`r4u>H&fb~t@}8r|gIuR+WC8^3jn>Or>) zz(I)`en2$1tKAtk004Ggk{_?@lsjRH>&G?Xg!R*wGv87aQ-)A*3l&411NAIy?UARA zn8#{f)!*->AD2rJU8AG!ieUN|p}fx_OpfT|9q{kld*ap2kAtHU1-{3C^+uqpNRFW) z`YbXCoJ$qF{1W~U8){I<02wz9@u*x;0)hv77Lw1o>g9~r#6zJDZ<$Od&P{K9mJ_6y zW$yrk-}N;!2GFPO;jN4HLuwrtmu&fV7B0IMl(BN00Vn5HnUjx3UTWY6iKRKiv+f)1 z>Vt9$|6cu|;d{TCE9S<8aEc@V*O2-Zb=KX{35!2#nCx2KPU?S1*bV|e(bj!OGQH5Bz+(`Q@kMu! zx4G$OIZVx?@6X7=|CAX?)|`M1HSRR=oJ>;KU0ZWolSYiV$k$!kv8e0O@ont7-F)e7 zsOt(deshy4Q*{YlLB)GG1|EBMPJ0WL&9bN7T>`030`nWlqb#*e$b|v5Q}UuR=$E3T zUIU^a@!Hd1q9`I5W?;T4?JT)y(q2sgH0}H3T{EF^?lf}qm{sf+C8kiWjm_jNI_Qej zFhDVqPYh$ar#7T}0zYL~2GdXBu{pbg8dJCMY{}#^rt-ey2`rtaAf}jClerr=N z`K>oI=yA+bjQA2M6%u!v6-(kZ7mg4 zK2fOoTs6$X39D;M*lcHyVX>D}4a?GQ8YE&L7TR-LzDNwV&ZfL!gxVt{FNg)UIGHTv zYbY0kPBQF#H8r^40FXWH6q3*rUDSI(!tDGgyl!4;PMPB*=gEAxqHv0VFxsTJUA~~M zwJ_1!hO;X##C2!%EwI&$L{+$zLPB!~X5z!;+psul;P1LBgI>b1U4M|JQj%W1r45Ae!m;(#!qxI_Lc~xpY8l z_qDiTVImpMuWftA`S8F?yU~iaRda9ryVJn7f7p;Ex1d*-9{5C&BmV|?t|$4XW4IBu z=0O4g0H%s^UIj)C(`0(NKvdxryS|vhbrb%kR>o#3+@S~z?v3Vs7KWjsz=yn8(w}+r z<*Mtcq&yJOz&o1wlbBzIbNW`zVn1PxKqBqItOHI%k0I1#per zEYd<1GzdVm3O$LM3@u8n>^#$kq=61PGOcquNf)QJgB1BE7O1wcUe<{$mR8j}suhC-ocmwX5%SoK*)f7{XdI*r0# zBH9!DTToe#5_k7k_llzX9rvd%a)rUL&&PAYO{M{S>OD*{%8mDmosF66z^OH`C`KiJ zO~H&D&#C{JYwBDE|6eoU6D)Ww-rWD`H zTW!icTWf8Ti{8t#c*2__3KZOPN!^`PKWt&Mr^jLGUVrk(1l~`BhP8&WV}0-5O-Cfb zZljTwj|&G!GAk2+t#3(>k~2`mty!1-F7HHmkJ_w;TCeDPnm2N`WqW%ZgI-&#vix6y!?%!a7foEzSO^K}y%NdQAm2!_Obd3%hOBl!= z6VDH&mjv1Q2)uxqBa{D5eHbt;lKHvANF8Tf92ZZoD2G8y2oI88MZ0f9-){^vQiVxm zC`5t;kIyR7gT-S}@Cy=*WJtk8KRd3+&xMNpjccEThN;AVqpBbgOI~VBWcYB61n}5K zl7lGyJL&Nd1B+T&&bmuNkf{tG{uf0G^eGE-s+#h}f7~+*Kz}jZc&F#+@}rV%G&u{z zo=eqhj{wjV;@dG6`~-iZNZEAWq&`V{jb2PpkaypB`m^k~;o-}23vXX9dYgr3o9?rj z=Fe9-qsbTnHR=>~Sh^$}U~A2e^;+IYk*H^fF6G5*c47NcB=a{o&AhAEkrh-Pdl=Uz z8zoqDarl{7Nynvn7a=^`Yg@@zdwc})PsSJ72Gt=k$;EUw6259+n62MkI3)UME3sq?Lt!o^Q#8S}XAT{~Wa1`m1;GLX2Z2D0HodtuBm0qz)5{`F zNnRa-&YS867nW2SFCw)XD_zqx1DcO81chyy4TmF&!HdDvrsc1u%}OV-Y8MmVW`r=u znHz?Q4~e;iHEYpSw{e7Ly?BCxu5!f}XQ3sm>#55?op5Ebt4&3kP-{*PPu=$hH_k3Mdh^J|U1bja*p9esfT535ufd@53^$N{h zB$1tFTfEi-K+A|~JlT=}GxuK>^T6XgT`bzuEj<=FG%gzRZ+RKf^6B*cR%`jy4FtZ< zfsnQtPD{tsMEzbIbpWFg)nOUzE+b}DXPRA$g-d5611yAz1k1pq9>e|^?SoIzMK<|U zgF+id3K@n=Yz2R@?CLWLEn_^A#_Xyz3&Br{&HUp?Bt&+xDE@t*Z?>DABnT1=dM&6r zM64^?wqjbp=UQy)dL!L2T{iq@S*Q^cp%OUjUGIhFlpY(hwIlvZT3b3l^#w*9ZPeD%&A@RQPx)yUjS=lBfkuCn{s^cc6$9?(?gi z&dA+I_FlAX)w$KxbNxF4EJ1X)Qy&awMLWZ=9AH_;ER6}WDfn9&e2W4il?;{sIsu6u zjvCVR0mThnT*s;uQ(~)0c$^C9?O&U!twF-UE0hd8vL75+8N$z#3`6jGy@6%Uk;d5M zX5NQb!MJOc!6&uPmpSC!8)f-{2LB9xiEZtisMt(a$hB-0g_x?Rw#fQ=5YyrL5XjR{ zS0AazIHwOd!P38co^Jh9T3GpY&g8MKo)WM6kO=msR*{w_ztSamE%Q+GsmoULPkLU+xFt-_syb} zbKQ+~CZeAe1eQpD8NN3*qd))vE(}BmReUi9kG;XcKIdWB)(FBe<)rcSEPah^gmHh3qg4;Y@wn)Debz24&UPgL9smBoky%E)Z)TZoSIMlhu4oh^}3pC zRRj*izfMlhgo30~5Gt9l?pibKbF%h^IFqj*SWnw#ryBC8I3Badc=e5b^F!Ln?Kvre z7Zy7xD)T%SsRqyX=V(07q~y&=*J_CEtyH5Sq$p%k9AY0$+vw16_^Y1U3`rotLEj)+ z=viF=q^!L~Nz5H3mt4b!y?-hjudO`5s)EU}=(zDH^C+PjSBhptR!X?@Zd;2u4h9mZ z_ORRl-vh6;Grcs_h+}A#hH@B_gf78hc`M+`MPx?l0ifR*K1t@lAP5iRoj{WVP2b8_#Ywc&0q0nr1gR2Yb0n z<*w{xbgZk*Y_Ifx*#xZX|EtyXMv$P$l_*V3@z@hc!u(JL^hgylprB{y$-g?=z`qVn ztM9TtSktV>W}Z2=F<$X-)XUK`Ok38-@BCVmQk5SP|4Zn;B7wVFwn9fbS<~o_9+{1p zCTk^0h6V}%0WR~CGrKa2;Vn3jPoIk)li(KoG?EYd0^Wn!n<^?r!=u7(2GsuZe7OXE zRlWc}>DG4r7+FXc33RB8evL@vhSW=KKi?tOVZO+nEt9FL^ z1fKT8F&bW3g6RG8n;=Ws)$wed;zNFQxafB(Cn!*L+^s_TKfyQ~1VL}K>kA+DgZtR7 zke|{HBRt;qR>1WTC!66jI6Z9(DpUy+B#YP#O5Vw_1q^k<(@vm=R@T@o@O-6W4sTW} zo;+5!KVV6#Ws76RvFUe=(5JnpCvcfFLz~A085)2Q^`lSbLOGQt!AtE2pNhL{6G%B< z9fW9xE?Wz<*z!u*R@_>&B_9KMdV|jItpSg*ov$P(9}C{Tw1i!O#;iYU-hBvLyk~1G z|1Q!n%X>2L;)z8}#}9^k-!%S$l}CxhRgM^DlPC5l&Q&WXLNaaaFsbyPZXm8v*zt3? zmL0884)m7VIDR(V8Ib{h$HK^EG%Rk`&-f|P!OiXe0Si8W7yga_qSshMtgc-{HQsdU zBW3_N+>SAkS=O)#Ur&Gmorpb_!I(2YPC-C&ukYq;=RAly136SKxf5fD!wF;I=^&6S)sdj46}dK>yx2=bGgx5&tT-Aq z-ib6TmJD9*Uk*HzmTvuqoy^!MZzWMNw?mdFY`r!UQV1;D$y7WcaJLBlo=!d{bgEc` zQMyI~3cI$JJqt3$Zb%uON$ZD{@stpr5Mvp5^$@|d-yM7BNq}F6vmKQe5(GJ#YFcw8 z+2|TF1*VYV9~?awznB-~T_C`G)&$NrJn4M}n40}VS4i=SvHwHD1^|N6NY59E{mpQK zkI4eY2t7U0>85GrQaGEz?-Aj|902jqAj1Z@0RewyC_8QI;4qZ7yw}hCMS;UYfEoCg zt}2aT+LdiylcFpy^Dj3kJ|Z7n4yJGB5hXyaZ_)BxBIlmA5%{6G@NP?&9xcf#J_4AF zr@2K@tK0UIm43L!zJ%XsRX*JBg+j)C+v);zf{@vpTOFoSSuI#CT7=lk#Fss&Y;Z?`FI zC3$9=g3m>TrM!iYp8d1e-m$Ma(>Y(V2zc9y=aeI@&(0}*zd{1OA8|AKUAzY&Vq00DE5im;G{8@Cw@NiA- zqruXl+`nqtHp1?R?E;lHkc{KZoMK$VP2~N^N6B2FcI$2!lQ3u#eMkN`X1;f8r-N-M+uDJ zhc1g_CK)vTo*;O16oM6LJ3=^!FmFX7@w~AslN0a?_vJPM zWQ)>wyNk^u0+3(lA^CuPr zGRSKa^I1#wV#|2X$$CCg2rbC#QCH}6v;|&w@@~bvOt0wns^DWsY2}zPtOphRS@G)`TylCD}uhx#JH})F%zO za?<(MM(L-L4z!D2X{uFkK^6M*TwM@{;N{D?tWPfJEmZz|T}V9gsQq3kE43?VQm=P) zzCv+bS}uzQ@dgUJU{)0H$7!>|PP6uCI@p>Mf24h$z(yLz|9&Eu02Bn@oB+dNYZ}Q% zWIP#&Es}3@BanRQjc?x`itwSHeJ1$4`_6e~`d0gex>vojkV7RN?cbkkSljZj<6anJ z>HXWFMdu4x5rkA#n=nF?)*J;UKT;;!{ULs~8`=)FR>MvzK66Rl!X@H3JGTShB;cFS zQ$1g>Z9hL^bcZw*+yf{5D{8$Cofu>rGF_gJKd0D6uCjfE`$QVrr|MG%c=Nd?J=y7Q z@x7`+EmQvlZv+Jg2g6kqe)vr*&Lr}S0biYR1TvHI_#Qc3Nzc8UCK)f9|F_e)G+I1s z3MmvBuP0ildRY(U$|^l|-Pi;%HyxFi-()%{7#f~SusCfc!tK^|a;%In$zN`3ABo~| zrb7A>M{-cEl}wHE0sHyclk>mKyhv$J_0^TLD~d2&29vTeF0&hQhSKQF#~|ER+!d#g z6=9;^Mm_-M6#|N4haVkQwMa{&>$~BB!gg??>4J7HgQZE$3UzZG|;xQb3Wwzi>U zM#3a8fi2u0SE>SLbikB;Bz?PU{&b}#Q|!?)S+f${-Rk#V_Qx+rH2oJizOZs0xAxsT zIvfJ!rU^79$n3AVT{RQouO7~|55QGlDf{p99czmKww(~-{}6W)ME=j<8*%Jc_La3r zCUl9I7P(e8EG(DNIQ0IZl>E_j6k^EbYY+HQsmR(b?;Q@~wcWQSAuXj@i$?D}M(52I zXJ1(x3ti5)h35vV@=&(qh$&NGu<}#l6>fP66AYYqnO(0X_;A$+c{T@|i%mat6Q!=@ zfR~hhSsEI|-+VNjWl>@;C42&d?rNS2g^&^z0cwo_e;i#LH$w$0@^AdMgx1p`m02_1 zX>(1GZhI~&zH&;t+N$=d&s}JBJ~=89xp->YcoddAtx8>n**;xmO9LLJ-JJ!oRh(5g zXqv(x!YcH!z*`nWV19Fjwly|aG?65B`uVUqC&1z7`=o{x-%gkhZd`^fb%NuWBZ-q~ ztd0VvT)@Y#BWW*}JiIEaPF9iceggWMAr!~ zhTxC_nA^6%k)fHb!IzH|$Ur<9sqNxfiXp6fL!i)~MR}RSepO4AEQ`y^YR6izl)i28 z&*l9&g5NGX@7>(y)^3reDa&=b)D{89p)+ccFs)!vP);F_=7P{P!3Vt=;(kEi5!VL$ z_8UQiN#E?@0frD@7Wb1j5wd0}vC0VS{1O;NybF@ztrsLmdma0+C^b-9Lh9~d_CJ+})|YCd87n;bvqG@_u3#pt zgu^tgCU$48dPypG>Tj=;h~w{^9>ZL3vOUoz$A*^1KmZWeTsV9N=5_4Kl-j;#mXXt`9J>Dp$fTC`Oq9}G`w84rHG7VR~H5WR8Lo1{Z29>@vYB< zM^&|N{;9lGd-gyBi62&ZI2?Icu`b`tIA|SmL~1TbJpvXfn~t_5g$e?#ry6|4Z$%RR zss4#5rg5e2lTTSYGcJ>67oq8So2f+y-;tRB5iIHw-OSBTX(m?~9d6!OUU1HRLVisN zVy~Inmv_RT&ZTyx9vbaJVFywrMiXF-MA?PPF|J5VjNO7;yuRBx#6o%)#jIAhzB5w<@vagO(0%e?|5yu6HY<3 zqh4b9^oeA_N3@`4?(}I7`#Tvh$X{#*|MSGQg*Kfw`gm_C??3KY20)=$Z~MadRT)d^ z2?>D3W2t2O-Uy^#vYd}$x;;Y}4*<2*KM{K`=!@u`UvQY}5bVE>}c z<9r*nbGi{rynVacj<;EHs1syBm9rQ>4%@AvlJCf{F4NYB$0j1Hr-`wo-F_aQeV#w< zuyoDAmZ>@kvHb}O!1}EAU$lWlmmozBa}KTZ5~&$C4B%GO7L{XnljBIXmGGC!=53{& zl+Z$9F^~iyM3@f~4$;UyKnTu>hNCPC{PO%-)3D8Sch?jTCZ_wD1ci>E&+|l#!QFKr zA|Z;1VzM**T$4*3pi}lpa#nL8T6q3BCf=7i_z<3KLiGfi3- z(ltu|h^h|GZL4qvZ|i!e=~d{YRY2}$Byg*_5m!|ZQP|zz3@zUOW11J{uCcM5)w#n5 z{Y)QSqklzCLa_wEVT=$h;h59gU@mF5g&QZ85f#lL3;+mSrlb5h*ab;CmLsfJAh$Oh z;M8=-a*d}!4u7F~c(5-hdsIMCuEDO%J^S4+B>D9|rug_tbQ`cxOxa9dR~05r4CQrQ z1Qj%zq#Z&_2E#E!ueXFuMjNe-Dc3cSlLW1)q3fn5fMq84D-v^^q7gkM$JcP`&FXrC z-=qWA#;j9eiU#xXA>v+V7j>us(3+>EKp+agq@Qu=md@Q8Af7A zYeo>1OI;Yig)kOQ4(&K7xE@^76;Y^+W?$_OOWsse4Qb;F-9v{~I7hVVcv7B;@Ei$f%~dou363>dNXvx(^VMiE**G zi$VOhtppluI|z94@^NtSmhjQXvZ=)O8(NF+hkLBVE`Ok?9$qm=n0S*1ZOQZYKFRQ(c{`(a3TJ=+^ymFvCH5kH z7jci*bUHRVzYh$r_xf>4>RCXpju=g3Nf>FQ5K!sW!S;o5c5*g|7>pD#ivoq%&p{%Rdp$Pvg;$e?X=ZDgt`on0Py)BEb#IS8j|`EHvA#Y{qi3YE`z{-8SeNpi5{3) z=?NK6#$!ySI^8sL6x-x7_&pPsC2B~^eVA0km;$yO&r)^wBa?fQktrp`vrsQcXKK}K zoP{#)7nX+asPU-@sbe{T29dxku4*k!O=V>OR3vs)JeVkn37UAX7;_RDh{#mTcMd#0 zkaNj(nrGRX2wK+OZTIKlGKx%jC@QUjt%Fyna1TRNhCxxplyKEkR`iSp3P-v#GsjEW z*#c;5w!GTDJtdwux=eDIWZ#Q7Zv&g6|bsH?Hziq|0&^FNzr3v2D7 zE^Zy|s+`n1<5F4ZxjT^7ai>5gJU`M^nZ=Zi;bK-NsfZ-i-p*J60lO}!@7DjX*#(lM zZkBCvVEJ9i8~@DHbHTZ4~01h$BOED;B#&8k4VIRxK{$5L~O3)Q-?l5)Yg)j zv|RAJgFt4=fd7&Wsk2O*ci zX0}iH{WrEVh!tU|>mh+hVj-o}E1drV{tAT7b>L4wsO#s)w#T(P+UoBFi<>&;5-CRz z6F7)xW_s(fUk1?7%9N*Skcl)W&jnY15l~jUr%*`juH|TI)L}>FL{R2xDa6iT=4@s% z8S8A(tvB0IyH%?$3`oTlA{JX1w6!1O%gDLX&kmi*zI-JnW#E`zXI+u%#YF06yQcMo z+|x*kW}RAgnW){&E`p~!-KwP9cA2<-H1KFs5O0`9vo0!$#YO&4j|4#oneY6!nQtUT zXJi8Ajou#qy*i*>j^^9T^PX!nRryk8Ny5LvZ8lt1$n1U;m2)9i&N#!P;q;GZM4Z!i}Pu-VV)=xwQ&J{}(Ic6wVL%R7L; zdE3GFM61#AL#1eUp=vE+162#LvjRyEA6;QN?1c?=uT(NGiWXgnr0G|le5Qw{dAV2Y zhsWMZ-I`G8V{p;(OJiMsqZ(U;r|-hj9IAxA#z7LTL|N*B=Jrxe+Bh*NAopr1@k}*Z zd|)bx9DN2t&@mJKuc>^zC@AS-DvMU&`sMRIsX(Asjv-_)JjagZQC6Q~H$WKXJC-(gSJY=xmL=rY>@x4#K$;mpKMvCJeTAhMnR# zc6|kuD_WKN+67(x*Z+}p4i1%mUl+eM)!aDQw!7KZ&9<${w(TZsvTaV2-DG1XO>VNg zZ{Oeh{0-~bXP>=4Yn^&h59P)b_%C9g1*^o-KYfzIgcf86cQdglI=5}x@-780IMLW>WfK@DcN<1V*7$^S5)^Vhl2L}tl&C1B$Q%uH+yaA&*}>4yqW44gOH!~{ zxl8yXSILOLSOl$QbzRog7;+vAb*!^s!ltG$$4(P!l}u>?41 zRFIVm?vx3U%1Yfn+1i?@KKNtm=Au%S5?7>l{X^5aK+XiD%XZY*vwmIs-Ktr2vyQ|d zsVz_K@D9=L;4DnbJ)4&cN3xC3IH(lI`u8$Ic+>_`^9SCX5W<8W^8BT-qin+EskZZp zuNBYDD2lpyRvSjKnO2wIcw z2~y<&gP6!{*;u?w)kGFT;exdqZmBN(Tsys=8n#})r9zBKZ5qtnkx4iU0*)y6I{MgJ zh>H$Q)KbcRon~ffLK03ic7I3+#g1Y-O>*0l^wZrrJH)T*wXhvrcKmvQdOSkfc>kqK zLqH?FuWh;NM2(j@+kj?xHCI{fl{La?ve=d{u@M#l$8S(<0pFjFs7BywI*Qypbb4O??pQN3g;icS}OVV8frP_#f5a?+^S&uoAbw zdK7ZM+bJ!~YSJ5NFY~30;D|vOf#EmP!eX86jJ{JDSn0@QOKTF}a`fQ11&n-&mdRI5 zUpVEObNntQ@2sdj|C+tIE^fSSO?Y;Uv8$_oFv-DGkz#QODq&0*zoAnt;BZ;tDy&iE zSd>wOuW4M{^H=PD1hI6vBqwVJv9-390GZ4rUIf)fu}06_;zqn_*IUBm&*mZvby6=^mN3_k|c;!)FsZmTa1gN_v5kVvK`Fn^6`+}tsE870TBW3 z^ec$`>m=+XKVD%(bgc#WnQ#wO@hPs>$nI1zKe{`pXB`7h24$NDTx9^1=(J#m#Z=Co z&%}l5qzzRjcfpaPcg#8k1BK{ZY_@)l80w-{^Aq@HviXs4og>;22Rex!784s=S1y!R ze$rQX4YF7aYCz*Merg=*igmN5KO-jrWlT0Dwl9}Jyi)uwxwuODGTOPOVhYc;xb$8H+eCv!%Rgy&CMdX^oi2M)HmzHV$WlnbEOk_ z^s}*JX@j|DjHWmPQK*C-NINUsn=v;wHt8~DftfLSJ;dq;V#m4Um6Z{u!2t%qXZ+-& zeo5f?&2|81y%dTiszpX&$_kqU`fTdolAF*UBU&s*EW@RwL49I@mZaZ~kz?qsq%i^^ zGC#Zcv@V@%+2n&Tb`2?B&fplH`js(?J`-mr$QAInibaMX;Dj&V2#55^4$Pjca~wQu z3apu*Gn?m@Vzw-|IeWI+sO`H{{`r{89PG9r$&fjaUYvMP({iXt6*XT`5I#Nt*^1wh z?*$N;Lh)F9z=$7TAC{L#mVCHO9-t+ux28WX^8GYRU>xL*ikouKS3_^kz{ktJdN2+*G^y~GCPtDf8Mm!5=y>y z$z(To@Jo^nYiVG`U1FBaQJ2~0bYU)$^;?SUzKE$|!^ZieqhALrd|jth9eDoo)C0pv zv|~p{Cth1c`GClO*tP=bvTxdTP_?SzEwvKW-M%di11Ac>S z6ZE~g_<_zv(kxB#mY95APcN(~As$lhl%GT&<9)CXU$y*#ciz_DuHN?;WzztuR-TYr zqvtf6oTx}Pwj@}iiPj&Ka$(G&7H^1#Hf15CyJ@{vGDGA86yJ{8({yJNX)Lr3Ddy}v zE>=e$knWC?F5W9EuiF#c5>?;&Wae2kxDuL>&gp0&icFXw$Dw%@s!^jQco>qud4!wd zQ99z^n&?$9Nht5kWvKF{iAimY4!B%K&5-`Bk^5B4lX4>DTIe?C`2I2UiU?a08A9Ek z)0wRQJ=vy@ePKDPt_%dwER7=bL+!G~qtN6*!#!7k;T5PfGycRNKgf&79V44RjgGi; z2f15f-`&JmzNbzg2yfE4<5M}QvvW$xpK@jTfc?fpO=ngQo?)W{g}=YDOEQ@MngP** zATNE6R`-7*kPxkQjW3Js9od;TE4-%!jpuyqdMGa2=pn6?~ z1KWk4g=&HLH~!^Jr9n5K4zHo+eDhQ1#4t@+EqqBj{euHX`h?*PU5`VnR=PzhXR{Sf z%rgYV6g7I(JO0bOogZnAQOHZjh48&hjb+T|J9z?Aei?L8xI}! zthF?Ou*sn#=6Jm8$JXJGb*{bNRjfRO+E>LuoflT72Lh>HdppsH^z?A&_^|R!B>;ky zYLf6s3qETm4~WPsE2EX>r2(>^O|?wQP67IKSa~|p)7RKpR&nX|v0qGE9d&z8kw~<@ zq5Zf?Gx6MzaWL4>WmCvyZe@i{`14KhkeQi^I^D)A2R&&obBQWNg@N<#$o2HCBoA zVc#7ub!FRCuBzb}P>l2`Z|w7RtX8^hc@W3ZNvhM{jorj%*SVpj+nN0F@zQc~5dh)7 z{Bm_@e>dP`+f?PIEyrY!2BkO#3Ny$4R6nilyvS|*OFCEnR>?IIv&B*fHOe?4j*!pX zb(}q*q%K6S<_#hZ(a9C>>LSO6XAYon(fv}|SOYaBLKzV)gn*<%B@)A!XOhK$X2OzG zfeC~Qw@o0!!&6nQQctR&2QT)3J#FY|+b+En_#`$H%4*5lOs9&XujZ^5v`;1u7!L>_ zekOJx!pZ)5O-jSC(rH)UQ~gwh_MGs)S05hV1oo3} z@X~=EZ`YIMc2k#CTeSwRixa88wHgy$_xVzoBT^vmzuuWLUdp0V|5L�Or|P?*)m& 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 z z>Tt~2)U{02D6S7~Z@B;bTU5T&2w#kjdTOoYIPBtaYGF}nwDxEynjU??~YBf4IcLBBP=$%_tnGQ$E zgLXoB4VPh(NHwe7!o#(5%3ttbtAt=(O+V(^2Wc5cQ;(0XzEc(oK!k~snhvYt(hJ_5 zbbSr=u={Zx5kB~b zYOK==i?m8E(2tdLE8V~tlpi%^+^tSjWFNFn=Gz8xR5K_}pW8;ltu4iZ8wn>URyRgN zoy$=@Lqq980qbq&dCjUro7Knb5m!RsNotwzwrU~VV%H_&gP^o6&2!9T>KG?#Fz^ZH zX-j1$`N&^6%+s3fqiyUU&R3{k{qUVCOUd_m=+hHh17=i?p7Ok3=g+39v_d(nXOc7B zS*c*d9em`O7>TrTLX5h;9Uc-;ok}KrfvCKVM6HBs^Ft|OL^ZESNLpuwHTEbzD!KkU z|3=PF)2a#>+78u$k&F0;gr6{Q9a3|CK+-?Eu7bl3Tt9@j%y7lzv6Y`(k%W_oAJI|WP!ymCg4W@#(8 zxU{YNMDfvsc~*>w!X3HfMFWHkI^D|t90bkl9lpNyYH)_pGBq)=F?q@3VUl-y$7@&6 z;QoQ-DzcSE;-pI!FDf*3{t=!L$Jv8>ypdKl18)N*%-=Pp3(DDY@3dE55B0i zxlH+wcd<%F-UErIV=6wKb1GhY9rC~0MJ#6x<+RkG(f;nlK~Cs@I9shX%=`soV7yQQ zhf|Ede!i?R_@%jUKNKsW^A8F80Jvaj^%oQ=YZuwdisI1r-w8XHA0pGK@MW3@b31Kjmu0iO5;S zFfXpl{~inE*j+^f{gMDcC=v>WCzj|^^)Grb>_Yrr#!w}em*3#1j&JIOJf)wiMp!j$ z*Gb~=VF1;zv%>t|7IVs6yQLK_>vI&0Yvf!Fe-}JU&{l{jfpGo(Z_9n51e3|yL3^&2 zY=K@Eqv4Z9AfEX1^k_ZR39R6RXX%pEbc-v7i54a|Cjy@H55-L96(j%MrBo6CkO7kjM;dBdvK+KPgbTY@JjX&kH?MoHbr{9-V=eiT5gCu4 z=KUF|m^vyUDH5IOP5o`!#JW#R>UNWbW%gWZgssGUf+c17#ioK+`Jx{61J9Z5O?)Pv z_U*FhR*$3Oa2OoPL=L=ty-d@z`?Xa%Po$A$m_7}s*t`=0N3=bLnak+KO$;WD!sg$dNlGpja|!<~$>7<9qIZG>lm{Fb<#Li1HyX~bn2E}W*6_}@ z|NFHy7ViGjqbxp-BU3FK6@%}%BiWTJr<1-(Q|!$xFn z1mu^~<0uKe4{nP7|2et~-k2ZH)w$jC`iqJd4E7mLIopesNJzmVhyunZ78-(P((zX% z5yUPW0Twh9MfPNhXZEKbty@ZoKrLyt1L(tEx(W%PFE01FDQZZn`GDeW}_Rnv_uS`{!j5pva6+RU^L)(NA0qVdL1)HMmSojpyFm~DoD z-?<0EtX-S86Z&clgL1|2DKGz0bshp|CZgttsnFrW;PYzAo`>G{B7Px4&sa@%;_)7! zzs|l17rz9C1Gp8sW26Q<%+Hc%^bh2i)|m!pLtz{t`Org~{wP!wt~p&o4imH|SQeip z*Q2I$Rz#U!?~Qwnx+QRPe2(n1LMvK!7) zv`yn`QRiu~WJF)l`2(yn^juWGMT&yU>DPd&7b%wNa=hkrE8}HkTdrPtU-i&6F%8WR z{#D`IjmFY$&?8+*ys(< z=_i$r5hA8uQm${iR2RD)y|FgeTQkDUY&2!VXXE3V&@N&$)T&v|5S8mEnq$!8RbTk2 z*2C2PuU<{{DeH*2_Ga$-8)eJHLDnNt+@!6L5(j(({GSw_=5wR&;Jq75kycg*q;U{= z3|BuBC3X-X%NsL_a+2zE6A8NzC(tHL$$@UombuEVouKw7EpF{3?zzgW#@y7^rBZ^n z9M{>@PjY8I3!mnVnvyUdR-Urx-;C0id=Hh_-`d@fHKlT?RBL&i^sQzUo`HW7SX+_M zLElBRtNjhIxjUM@l(!Z;J*fU6;TQmCC!%VHC_U;fn@w&Sm!RVOBvQ?JTev`0E)v?~ zVF?e=fNUy3W$SoghQ-VbDArg?mZ#v>wCJLKTU z_`}J%-m_BiWiqyb^`;Jj(+_uxDkoLw17|{N9tD4srR()u7jG=7ch2Z`4fg$9yHAFi zzxZ_z*Sz)wxMg*9H6l@fr2uw-%_-IvFsdsaU~ZPxjZzNY;g(GkO2OY&ggjYW##Jo?~<-FT)##KcpCT0tW8emL*k>yT9R0*9IP-5^870}c;LOEP+(c84=p85F`vw4 z=f>#QvD`g}E-){yY0u2w!)YZ5H+9S|H8yASyN=(bbD4sd@)>J7Q^fTroXmz)_kkrM z%pDgPeRJ5Z^sLrIb*j;qdn?Uv8NMaiQtkU=?>~KCsG{AYq3W8HG^$DJJMajf6Wvwi z47tpjizpdgOwf=amVGVe|BCh<1g=f;=Q&D%phKDbr78Lk<%3@$)wK1ebKmGa!bL?~ z+gqn`(!4f*<(AYIODU2Bd&=~))0hOKzE*6NhQ{^*r3J0H%5GleKWH?Fb$tDNL;&GN);8u>Eh8Ud)o*8&3^up$k9WWBH};A zN&G#H{B^fqfIm@~BC~KN3S<8ZNG(MEd^9Hrhy05g&pm%@o@6pS7lR&*Mqi^dpY%zVTCx=U7&299XqbgG(xk3qnC5w`!6$PBpZSjXlsz;k)id zGysc(-uWKwqJ?X_TZ3<=vim~0$igUesB~t_)wd;L^G!fuj|=K=Tcq*`oJ%sC8`GFF zNEk<19_W|5!U%LDw_Ycc{eLORQ5%$TTwr06Avt^UY>|=ZC)XuSJA_^0Jz9xLk; zmP{n^gXA`Ey?ldUyw*jFujQN2iik&fSI!oQiU}+k1P}tiABK;U8|2_u8NIebE!EPV z9-z=cSd0`>i)7*%<)|f;PRVX96ibHhM=b~YzBwL3Psq(Ul#(WVBy&+Wu+$?FDsGMH znLN8ohD=g%17igXBs~(hkA;HITX;#EwW1YM-EdL5U;uck6*DtEqa~AyMby9~yC}*{ z2@QUak~#h*wG%#RoOalMsd@x}V-WoLf+%%j7a_lCdMXPXJr=nTVXCP7aNJx?bI^0I zpK4pxnTJ#WbTI$r<$!AFW^%^az`Z}uLjAk`{JFZUNb#3J+uxV-@U%w3^qyjHQzD-_ zv-E;|G<+>U7{N;89QK8B*q@+=KvgTC3RL83Sa|Zs$h88A`lEpd*nFXOjufE+d?XGF z6Gu|}*FdA5q>IUvNmanmAHML;*&by=kG#K@VOn=^%4<6IzXEAur~HUYM(|hjiC|)4 zqV(ugfELX6h?G!BTPQ&q!4AdYx5y}%C56NJPhwjgjzto9Pt6xV$r0qigE1pGt`fgaMV%m$perzTTfr?gWRmo9oi_M&1t& zAb>lJupM>)_9@38(pSA91v`p9=yR_!?vsrYHv0(dyoOj_N}?S`VGRrL_i_|C^7&<6 z;n^B!zg&Bt6_J|Pa+-|fG+Eo|pPcxbdZ?vRS6b`&UMlq7B9Uhne_gAoj)8~i|s^(Tc-KLTD=)m^?(cbJ9=2_l{)o)NxPFU+x zVVA90c$3cMh7&ilgSle`&DG2Vth}e$t%J{eo`*udX4Q}c<`-SYCq#UR8^H8 zF34eQzDXY!C!%^kH{m|cYS$%&Sut!TPUZw-_huaas%M7yhks;NwOlmT7ciDJJomUW zQMbk>9?n<1F#iyN7FIjheKqYMlu*dt|3e`vjwg}L8HNEi0pkfLd8bl=G{ghd7<3t>_l%XWs!vCv>U;1fiOHO*JSUW$uf z%SoM%zPAYp|L51YS|0~AyHaj6Q!Frmp^eA2z-2fZY_P+hV2~LThFcd>AAAQmAz&x33LV7HzU;VFvZ;m2YD-FJZHkTA45As-+wpO^?*V#Vmt_@$+D`_fJ9EvTFl>>(( zLDG-whXi_x1T*bZ&wr`<9{^5FaM}*j?8M@Sz@{lnp5n~$$7))~e&{2OP?y9qNtnv!gx`V(cY@-9p%zu1Ls}!A)WO>joWy2M8KN zNgRIFx+rD5y5n~Xnn=m;euF;rBt2@HD5r2#GfqKgl;k^sUs$h#amukXedBm>98V;I z37j=T|7`8$5@k{9l z6Hh&>(J|k#_&w)ZwQUSAA zR2GSAYIhccVN@_ya>z?_zIg-$3MLvIH|K7309-Ph*aAxLLi;O5t~%lmGT}Z-BV?&j zoG+rIS|10+#HZ*`5+=@+ZynSeLKAyGUOQq+k-d7coIlZ^xO{)&m zk!+Q} zkhhTGg@%9!1VUYG1}|*~)^qzuv908diS1=uOHAPhO{A*BXBi?Hn2JSjrrLOc6 z_I&uops3RGjClHeEbEReY^h2BcD>dZgcZ*Oi>0#O9d_Qs|M?7T%ihqh2V!=WXxXJ0jsFh^Er;(1U6I1IQon;bRBD^s(#r zQ3~k9rVgU*%gK$HVd-aA-YX<2yfUq~O(OV_%DWSp%mSQM*SAW?8V~raE7W9*&@ktg ziLq&Br>FBHO;#YOi8s3Y(m!gH1%vvgWI0LLY!e1=c+(EVr742A0QiZhMN`N&sp--9 zO%s^~)w3!F#jIgMi@J!o2w_}bb6)9QE(<5gXS1UWi)C z%X;eh>GXIpXfe<6=O8%%yj|c-o8|Q>pv%G!w#c@!9E~azrU?ds9R$)nq5RzL4~q}4 z$jO0}wWL**^zQtgD76NGeR$6x6oY4*GWlN96Gh<4F?%(qQ$=R(QFl0P9@2UAUcwU9 zu|k>vonw%(6`*cq^;DM3g^uW=Y&a*8r9h)SQvB z#^?C6E#T`K%1w#PU@V3Dk<+rjPB3keKt~W)gW@4bLH)-bV~QNW*qjWMtO?<_Yc^is8sO%!8FX}8{3B(r{(Af_#VBc z?Co?w{W8b0*}!vK71EbGsS-ants271Sa3_Abn$c0e{no0L7JK?rK`#scROUe`w7gViv^Ic)K)M zNmWEQPC1s*Jw%cg&CzDM9m2k^#%?Pk99=S8B5bFPDCI#9y=iE1pEbBomziRRl&B?X z+`ObhI;p!vk;t|j%l5vdzi&*{SrTdbP~`Q)TbBD}C2S|)^lDJ>m`5P{O(RN^W>M@u%9-aV4_t9ZUse-K2JmdeS#Bno1@?#08FY9K z|6r3it)El*cXh1UV;Mu>FE#oGYRxVQ@?g$}4C%!W)N~bTO&rh<>v0BMGct$`M^U`l z>3c9aY`y#&I&WxHb=#scEI3~p;TZCiq=9A5wMOaR+&C(Y*>Bra;8gw&5?HK7@kDk4 zNGOsObIrw_mn%s_2*0POam><=O6MiF%;TD*5dwkZ$YV067RCHbGY6xg*WDT4o9f}{ zs@yg`^UrSh6Y5@3tF@RPBgz)zcsxW4mpQFspEd6nLshw`V6oIR0PuLK$M*6FnS`M1 zO3iDqF%6|cxfWYwzDEXln`hG!@H!`J)ba(7y zl_Isr7_Cd21#6T?EP@>9dY89{;N6s&bwqX|)Y-x#Am3LG%d=7?j7poK(GhQCbUMYR z^_0x~i6J1!6aZ)qA7!J9N=j`+VY9Id%+eQ1k`xa^E`p|^^Djg+7P(f zV*a7F3I6VI{cMsxKV0*WGyKcEPBsl=D}gg{tjK=&N0h37)Maaa%iiw~^OywU%2Aog zr(wi7uCfr=lEGOkvik-Mp&;MI>{m|aUKOPlfTQ!ab#sY3n=Zz|mH|V~jRB!;POTjeJ&-E~D6We;w>ujCRMQU*go+#jhfFe#w^H zLtmc{72bT{20yG7HJ>VLDL6Mx%gN_-Qo*F80{9vu7#fEWCKje*odeBNlNa8Zn>nsbk z?e3vv1}soL;r^Dhs*i{!Afa!<54NsyI59h!bSRyn-2t$7fK&wnSq4;@DN;kZ>LBha z?gU)gqRM>m<8YDO;h3LT$NJOpH;s{Z)Prn%0y9!dA~sC2aqVZ)PSx@Y;5LU3TbNvl zW$3|%1xHw&a@29H(pczw#Oj6#w5GaA)+q;gMXTSviGErnLrD*^vjPXH!oZ9kR(#Ex zzT^z#p+HWhPkzT2k?s6^eI~C*KsoG#|2UafnK8={zZFH960N_UVZFw#<7${99$o{) z2%?DkVbu%l$m%(e@cd<0xo;8T5cYH3YFaaF#1kdtaQvwlBHVP2s;wM(VTeX+hXe;H zeIp8+a~RvSi|s>5y%bMsTRFZ6p(c#TGtmr zK8qKc5Lib{J~}Q8bRGTiXs`cNl@=7;4 zrAp$QB^TH4KDMm9O5NGYv~{L(8b=Ld6l-r|A3Zo}DJ}SRIT+b|?8Abj?l^?+A?jES_aZZ~1`4(vMsjdj7Isz3ZNg*hr)qH{@-2dX>C z(rj@5zW|*;U^_U+?SPVf`qEL#rco9OQYq~3D+?Qq3@~pvWg-TJzpIHqHD&rAZ@H?R z%I6KlnLlrFmorF$Q+{qj;RdaT=%`MYb#_+A@pa`Dxo)%Gad;7C2sE@GZ7>yT@Udta zG6B(pLBQ{-qJ%PBIVgNRUu^ zsb+eD+4;yeD#l^n4*SIZpCW%Qb~^+{JxBo-bD~i7qF~{q7OT{WQ+*^Mxm`;}bN;ed%(uU~;`|$O$e>ll3k*EWHAU z4OXK71_*-hpcn(PbV^GISJO1o{-=EEcilZ7qRQd@n^5Q4 z_Y^B*&b<+36BeX~CiCuGlNOkTUg0~K6*(uK2|$MbTg;CJ%!TXO+Y3bMIS96&S>Xl9J+5)Ms%%Q#XaEzP zW}F9&jvHu>-j6XU9+I7!v^QXQnBIsUa5Sr6*6&|5q1|wDrJ7_tXn3rFG=7Q* zDL>P)CZFI_M3~`tu;Db~aA?-8f>6xNOpM|Ydtgj?Q`s&sm?3Yafbr>rm%0w>@tp72 zQ?Kg!shI@2`eQzdu?Y<`1a!#CBd>}MGNk{PZltHLM6uSpXI946!YcUV@8Zkof(^Vz zA0WYW;d9a@-HVVgGIeE|QX+9>QtE&LG!ms_xg zR*r$X9l>2W@xLtA;zHZ{&KpapcMP_a7)^V9D@l+4W{Xwo$vN9oI|GvGJ3BDtvO+p3 zfgmP+>)&BN0ATHy#?FC~9BR^xBBqEX3SX;e-wACfvbZJn5m2K)3#x2seb@{9Xkrp2 zhSDjl(vg__D+a;-4Z|0c{ktf>MOk3f*{5;1c;Ue>ob2paLBVV_4AJ)rWz^nrs5bEj zi(h+R_oPm3(`3Gj4$QzV2$ox5b5l_xms14STA3Rv7M)TD!>F$Q)S;390}`o5;Yh+L z6;Sy0E9axjNfbpYjf;*Z5{iD3UoFvpSVXVLKz07L>M;r?)0KOc<}f=>Irw<9jl3H_ z?~D*>;|0;(2tv;V30qgoEA&w=9MmON|3D~%5TTzz-6D!vd) zJn%g5DJY5Nc{$z%no}hrbdi!0QTd zGr~~KCh0K}Hmv{ppr7aaG-=<)qT?$qL^=kIti43{+ON7)LB^w?&Zx*ts&boU>9drw z1RDdW{~h)p0H}gh-VQ}dLM`;^gXyV-f?)-9EGMg}G!Bh_IBgV4ia3nH**n_|TT-lG zPK;QqN-lHCx~Yi(?$}}!%3;Q=^wv~GtYi)^NuAz(Ev45mvEcCyLio~!nEzggFwJd_(=@w-=r>@tS3Uadb(+C9_mrUR`_VOJ|bxjMe zWPTPtlvj}|mf|6F#@IAw%50+9McL4S` zfF%HH>cyq*V$~}w=93hNI9q`mR^_fbj`nVhV+bhQkug1W`KQ&J(T@F6GO&!ioP0DF zKPK>(<---SpZdF?{VASi&EuJ-x@Q8vQu}|(;b`co=PJwbLd@j0f*#NdG930DVY#Gm zGM0l&>zL`@|~q>dZTM!%NU5riwke8+A+46Sh?{CQG#L8;DYa@W!xMaw{MyTqVG~QOLSBI;GB*Q8sWM5`sQgXEr>I?8$$X8 zVWHv%&U2}YP!{_?Qf01~Qc7^O*q2m8)S_-;nZ42Qg2nn}3(@P?KhF)FtDkZoe-`j4 z$k)ofQb6RUP_Si6Msi>f5;OkgxUpxB!Tfb3ho1bpE1f<%chlVI9F4#2e5pX(f;1d| zdx3*^_LA2^#xBME4vt5mVI{*PIaK44`Jy>S^AqzCj+kWAq&om0m68eYjurQb%-lk9 zWUC{M^S;*A@K{C{7)gy(Hv4XK-4s1np|3BOAE3Oj-^BU&o=t^)@p-fR8+SCzLKu9l ztx^70)xB{T^UMyINlGSN)ub&hA=qUpFOB&#{NkDV*N9`!50@>uu(8?Yt^K{iS@-A0 z%@K@Q23}$2>z+&R-i5_Ys;tD)p0)7yQDtcZuO3LHJR{5AqIu09fRsL0%6cet0Oem_VTQA3@`l9aN%b>|HZX)cAs}5Twd{#nfIwh2CN$G z>dk7FMlrXb`Igv20Pxnf>h>WMSL&M77(JaGURW$|TitXaBQ+7ppK_=kedFc?Y0vOmH860(TR6u528Zn<5my$)lV?+0A0-YUj8X9oEZnrA80oO7Bk=Q?`l&d^ z{j|ez_-1!RTI>QVqnnoU#$+{pw<)XsCSPad7w?_q0FB5ZQ>-LnS0r9hHoT)$j9){F znO5$f#UZIQCpFL)5_19{{UEv})1!?AC2^=Vjd2xv>k0qxq23;2=m75lOMlW(ez?BX zNDqoxPs=bh;Uc`{w&eN~g(@7{D>N}b+yqf`LTPh~B<^c0V2E)>@j#(+Z>nUM#iX@0oqB8Ry<+03l8BqB)S+jJcF<$uUvnn_I&iRPo0lrs0n3HBu#*sJLf@cp{x=)Nvp`S=kXS4FHom zJi4K$!t5#-?M9VNf~t|ojq`nZqE{pZc~ubb+Zp~`A}T3D*DqnU0&RbU1-C|f8TG$L zD3C={`Ud3n?#z016a#+$A{Dq7Ha?%+VebL(Ur+a8o8KG(C ztNcHz^J{9i$-We>dECUqe|&qqaGYY)ebX3qfhhf=py-0SlkXh{ONr&WU&7?AGKH%= zscjbVdto+T_N}+I{&07e5a3IV@9!X41v))ixFe_7&3w-{gtP-eg-G=UtZFb!NO|kj zq(JicbCDn2baFI*wH}Vrr&)g`d$aAuXi4|F3 zu(e#CE4=t8`2LI}+hnhK63sa|j*w4zD=M#Jg|gUq&T%+wVExf}Db*|5++{i|hSw(E z@S5$J;D)h)MgTgPH|_G=gQYAB)_Us1h1?UbG}4jYWf{;o1=Jd;Dg1LtO96YkJlBH` zm4>R%yHjp=pA?qjKKbN)5p0SXG7MMCOqJ^gfX{%wH`yX)zk+s!v-X*zVvCz!(4GE6 zjYL}bjXX)t8Y_x<_N%F4(bN(rg%nir2NA~o>k*n*z@iypj3LRF==dm`H+4O;%B{W( zm~A~V^&hjh$&8*fIYl(Yx$bU`;@Mm_SXS$n>17_t}hU-K54v&d4B8z zgFG1}oH!>cQWfO>zNuIJ6zwKUhf;O*!MBL!;_!IS@EOU%*PR z$JBrTy!i-igQwg;yhRvZ1@d0;&x;v-Xc?LstcbvF)SeZA;?@cNDPlrflgF=iJLxoU zTpW~R*&3*>u}nk|Vl>iBUV>m58I3I!2SopniKXK_I9OnO^hU_IG%E(HFsG?85!air z9D9gO%H7dWz}G`B%R^buG=GSu=yuaov+!iE)D*_G$jd28r^GU@L`dwlreP4KWkeF1lv*&Pei8SGA@wsc_M|>rvM8oVixFW&c1-H7?c=Nvu4o zqx=J_)Ke1ER&CLCMb6mio~A1F8fAu|#FZ{Dd#&ZwK%74}F?+=FlZ)udvsrz+|GCsa zfiT#RaW=qmXY3Us!-ewruEMyrV9ccVi{0jjB)F6l z5y6AwntcL0mDm!NzXDhvynR?D9nb-=c$Q4z&Z8}K?J6OBv0YfZ4Q0RjO$A%lGQ&3v zxH8+fXNI;fXrIXGup|4|N+0(mOor3T@t$fYl||tEL+xg$8*%&VjW?|KstjZ zCJU>W1638vvP;!{(eS0Z(7v?Lqy@9XJasObv`RxciW^gP$RQ?J=R$p07MU+mAXQaG zQY(GFDzS``zdToa@@Ps!@+%dx$NtS~gEyU(N8V_}0tii$kY@_^@tmA?9NULKO$0z& zt4+>lEGMNLkIu;b(qmP27cY8@z-KF1^j|RbR0rg6w*a_{r#Vz#d|(eXz{=Q+A;t>R zi{7g)sG$~6>n7;r^~Vuo6BW!Su=tOR8u*vCLJKMU6-he;I=vJ3#DJ-6m6_z0ne2Z* zl%8Ef0ouYl0H9p@@IZH&B*|FJxKdBl#ryc7nkT6BJ1Q6pCs=S_n+lkz(WS^0f0`-#PcUlk$edROe)bV zPwTbRx~d4fnn}J;VncyoQOwtg)o&R(&9Z^!f4SG-r2T)~@-Do&gs2CDQ=+!78SJOr zxu(Ii`;Q*DQgss`UK!q#_JkXMp=^Qdxc!#8ZUR&0pnbSg6d&WRO$v1>$Sq#haoz7b z5@pPfbqpQeB2ayM#lEc$>|tJ>({J7QLl&If)t^m&?6_OITc96MCt6sPD;){iLFC*C zzJeVQzaudOx~@(kFXScb%S6KM!;wn(AR?N3-v6r_pAn)_RVBTbSe%fPk!EtIzVCreC;&zDl}=FO=_pt1yO@?;q9?}Yaa;n zf55Jwr@@mRJnl4k@3HY?5*;4kbky_##*JPrr)B@a#EC$xAdpI#SpB^m#^jaKEIfB)E+^q_$>|Y ziG!d~(2!Eln+|}LGlN5h42%oD(;axWom`t50^ z)>&}OUfHFa75K)BwY=|=2xSMBSS2y=g~H1uGlbH9Qi|SN$E{_pYqhzt55x41zMQ?K zaprFd~@6a|7+R4gL^#rQCvZV{Hv(`j2~$91qTf)LatQKNzH zRJ^Tpe*iVfo5TJbQnq23c9@6Z--h>art$iuoc(%SDkJ5yVHnaW=&A*S_>S8nZoTLSiZ*jdy7zyvbEsMdOrpeQ}) zAveVVNyu;sZ)bsFG_O?{F(FoIw0tzu3LNa(UOFXB*f-Oe zKjAC9jhh+!6@2$lpa0!5iF+L6zK|>@70&1%1wORMPZfEACqEwm_mzg?KGZYBYuKQ@ z;QU;8RgV1j951%5m&TeRrJ8U!J$bP~<1di{i**%A@|W;i0xX$D2N)fo1Twi&Y z2Q($hdu0IiVtYUEe#Gp+WU0Hbob=s|ioa5HS#AG*dgqhmF|>##TKc!x zfhf5Dx+cJdv)5I!a-3#WqB!K=Qp^{(MCj_u!4n_(%pN`d`0x^!RO7vx;^Fxhhxd-Z z8$8OCvNV{VY5t>rSHC#?&4kc|k72e^oNJoqTtkL+4m#a`QcJ<6IMvG|XzaGg2qot3 z=e78<7}~RU^2}}6O&n|m*O)rY1oH)=5B9h{2ufeH$DCIUZ)Ox3pdafEBcBtfC=G(J z++bjLB%K{bWCi7Z@`jqvtGX5tB|I|D;=8DR5?ge|EIEsAA7C ziV0{*(;6+uJ^)}DcIgvyffC<`6ZH7XWu;J(*)%@NBiq&GO*w_ccdO%q$Aw}2UZsLj6gZ>dVh~zjpfeS@vpN)TA#?7Zf6Hv;S`1->PAlc~8sXqjEAg+< zcawtGgD1vV3&S`Y7Yr^~jO7@7YTcVX=)He;7JPTlEaygcC4f1(bj1{|d)yx=?1V~* zX{|{l{|$t#Cw#v8La#!V=*#PDrJ&4|SqIyvL2#^ohN~YCy4)tDQ;b^LpfU5pP?+pd z9Yh#)>X_oSy2+P>7i8Ea0??`WYI=Y2yhI^a9^bxiV9a`|+RHyL)*-EDoJVofQA~}@ zLb!inNO}gQz^Q)xCVoQBG~BvM;Te25^jAiC1@6~rdW#l$?nWTE|Dx#QuEB5Hizlig zlvkn-Z&Z%4CyyUhs1qR#Rw_{D?9N^ux-sZmhr5#MAWz7UdjPOCf7u@59SJsglL+r! zJk$XxNvCvH*-8(vq)xgR)~|!$_RbX3Ef9RoygMOlOZsy~L#hr|!x99=C1^A-uaU0i z8CiI&%Nyn&gqAI}APlfEuzd~D9d`H0<;RRNp;Lw`>BB9!8`bO_H1Ra7084ew-4 zXW2FSIc>34+no!2sN}y+&;r;x+@%3sb-|AsCB&89$R=^+pAzj&n*Gn^_@iNd6Z81; z7`R@UR7a(8wfB>vb0J0s%RX!S7BZ zf~y{-fI6th(LIOnZ#mO##`U5b!AyuS)twLrBd|SBdHlkxFY0$+=4BiFnX!`U3IGZ1 zO-Nx3PA5R@WU>ma%jQp$0nIGFLj=}?o-2fh($ToRWw-lD6o?@oBEe$&b{qrteM0dy zg~Xy$KJSSvkP&OYd|F(bP|BtH`4#{E&*i8CNzhGFVa$~wB$u&)|N18Y{3&pvpn(p+%_{8?BSJC+1up?Sui)Mb2qj|) zQf-fizlfKhvG#iAgKmloNVN5M`>y8HUDi3&MV4#bjkMm<5BZP|1Z7KYr{+B!RXdIknYMkXevrsn6Dm)F)d zH@|*8JUlr$JG;F6_3Qfj@86r-Z|U9XaVK{Ge&?M)f@%POI2#0aECPVDekVtpHT{_1Wt(vA)24YM_B`GF6oY34F4Ql)IGujD0~c&Fnz)xHDicz~6pJ3$^q~_=o+m_o#^^!%)O-)%~BoonOD) z+`v%k;}Gz_7dP)cZ2L5LVRr!gW#D5F!3XbXIJbLq`|o!JxLK~EX?R{{#w)+S##EA>WonA^1H)RzfEkv>Gaqgd?>m4St5x$kT`I6|>}=-BRs z4UCJ9OovmUq+TEX1RD3%L%>0Kpo3YSOuG`ZxPOziU;KqyW5zx$Ts2 zUu9|9nej@oYmJ~h6gzUu{-}`86dVX@iVR*nvrm6tF=}Kz7+uG#HqHO(0fa0yCW6pi z>Q#O@>E3j$UPbGlR9AJn3Wuzk*h(K4wH>d>=_in~21;=~%MyW7${Z>C7KJAWy5NKfPJKy@v_2a=yP4iF`X$#hNMEN6pfY;LzyN)y90m@Nk1I>g@Emyxz?tYlx!< z@{J$wKT6WK<&XLJP|Gd)2aXmI!}^<^6%LZuv;{LR^hb({(yE|2`UE^GV|prm6hU-% zVo&Sg+X=Byesg3F>hqK~9~EVn=~4Z|@x^*AW}wka*v_kifnGf}0zT*ZJj_|(Qer1> z@Wu*Nn_F{_zW%p61U^##a2gSj<07@7aB-6l0BeT&#z>bK!qIf?83blsG+4IhOY~J3eLikLK67V94W?ai$q;7$>i4isVpG(k zlYkd&hCTy}QL=87&UgO#C~9t$z`|=|19Q#J8&PN%9oKAl&-uFt$!U;aN*^}un{En= zgADKTLVD^e!OP|i8IS!Oj)NZtjT@W+lY(z#dCrURaOOiOFTCHPhXzd#X6Ss^9!2qz zkTkhf2z-u60;KzVLpkLs(&JsqQZ&zHF!l;ikV`=JmBdYKj@`A2e=_p_Dk6yo8{>)w zY4nDFvdbkU;e_iLpZQRTC4cI1Aybp|20cOTSeT4ats1a!>N}X{F|s(s46B6~#$SoTSE$uPMKk1J2ZdQblrGarq| zKFV@70@mt+%R;PP`BsnF{EUk`Ctx;6ujgP)ukzqSj4~ekQxexBvU(BIwkz9Le-ymg zcl?9@#w&=J<2i<;O~vsL7ER_Fv{%=Oa>@uiwoH&`@2iSYPiVkV)I#@KyBxJof74t1 zJe)G5g`)4Rp4pMNNHy9(2J6c~Sw?DKc5Wk|=t+g%Tt^QcBI&$|OuP;O>dD5BvcQE$yo%ER9+oD~rS7J_Gj-MgY-B zBRa0}jQtv=U`T&Zd(7MH*GW<Iwsx_yDu;>e!%94>Zw5*)Sp8XKDeeL^>vG)vlH09xs1L+B-IDTo6i9)VkL1Z=a?(hhX z8&@OKH0-3nmrYfCs?KODq)rHYujMsD-D>WWFc_Tav2P;wCo+|04yH0PWA0J-t`3Je zPQlb6PHa(sikGq9uC_~dCa*tJA+faEFofaUAR3!4$8W!3-Fl?0nR;xkl+i+$g~cKw)= z4Mk#Z4&Sm<3X*R`$%>VU1z`rJN)fOue{bptp~Rx&Dy2G+9CtD+6l+2wCx2ui)H|Y| z>zvNIFka~>rju5T;i*!peI+Nof{qv?_6_YI526!V#cBVWGieLaje?QF*?HUge7Q&h zLyN$hYen$9gDAbHabQ~Q_}_lyv6}4ovC+tLUFMjHf2kr+hJNzzJL=V;-<7o6@dd2v za)&+F0?D%hl(&kMi!Zdd9}In&!)u(j=E$O)L~PojQ_eje*k<3+T5qXLL1ZpC z$nh-K;sI~ju+(;g&aenYCam&q{*UqI_X!NV4*?Eu*$yJQyCX^a&(X@pBW=TU>!##*6X%fgj*d7LaU=t7IYo>rsaVcX32ie< z#EIawIzvu<73(T!<;MGc8#D{(AXLomQdH~BmrJMj3~WS~A9|h0i!ji0GwE%3uL$cC zinyD9Yku}Y5FbJvI+PYpK^wq zP>+zwE2K~2L!(B66y)Dp516bvkpV2d_{*h59J||&W;4?x*%r+&X7w_7LgK|I3|+3m zs&)k06M7tOP%p#}>>{XNHT@NN3vq+;MLht3%r-!ZK=d3cGSVgB*8@HZldE$jc@BC4 zoFFY0M>>^sWG;7JQVk?C9s?Sy-k(*E5G@*1rUBhZg2FNHp(fEMU*S z|4jS>0~g9|*OKb;d();GAd3d4;pKuN0%V5P(xd_8mTz+I;@t_78vn++-hP8Un)SFX zirn5iqT7#wIYCAZFv#POJd2I!jbF}Cwba&UWu%$!{h0=Ft`0*m@$@%kb7vot1krjEOz8W5rss_2&mlF1qt9H_@iUx11Gou(5K#k_XliT1ak!K|HLb-$M$oW4K?r&VZ=}j`nH!ENkOqzBV(Rk?akw-NvpxNAQXwsqi@SCi=VRpf}j^o+4LX&AJ zy2Kq@V&pHXknEb}e*VP-g5X$ZC-|oJCq@}rBB@Afxs#wgco@?Mdwz$y$^-H*WJ5$*AMgoaUC+IpvtcO*VL*Gy0Qz{4EOoIIJD*RN`;kI_s1 zFP{ue^%qJ|lTx0AgSUB9H{*@hV%hkxiI-(}Sr{LoI&iM=1(|MgyJqq$ta#wAx@?ilY+V3IBMe zzpObMr~LGhn9xtougtxG4ODj94u7$1U5KsB|6KkB+A@<%;#8TaJI1PY467Vb1I*!+ zkqE~V^Tf9s2^$*;KAf&_|H<9j1DPf&qBpkKg7eQ8z9jGY^n2a!xvIEV(8af=N)1zT zzP3DTlGNAjwjoy5ua$nBTVzXaRwbhAAKdACi&w$1|B=vSO;X`;P;_o%AM8seW72Bk zN%kwvqhSTdlUImN7A=tKjF2?@1qp{0FGU;y_&d-KBwURk&SyjkF?{zj3A2meL-MJl zG!*nX>(t>+h$eBRbF2sZzduYS#Qxa(CVBR4cKCVXN6sV$%VtbGq*U}B%Qvr79+~^X z)6!|jXMS~soEBC!1jlLGL_AzRgyjiRg5DB1f0~{7-cx&kQBP8UND{zGI#Z2L5&~ zt1q>8{QL_5&0e`<>4WT}ioC^94BnmIid&WSyx#TK8jPPjyS@6;7RMpDsU=*%Kzt}3 zKHC<8h=$wL4&ZxWqA08~v7?^9inE?qNl}C_N-^#`S1l@IvR53;&3@i2_G-_^*XBdv z+u$I3CLUM5%TOdQI;f0v?fvH)6a9&Wl*vdO>VKb zTx_l}(1kTz?v2=o-%BCi!*cBq<|^i_vbio4hHTs47_0yymzW8~iD>S@dx-NZ-xWPJ ze9!~o-}fQyb@ZKec$5@>g#b#F92Qm(5proi@Z%}C0ad`)?&p~P@#p`&`@|Za9`{DUd2D#J)_rkg3oOx!Iu>< zElU+#9Hb4L1io9M7gP}I3h1~eVkuO*hoU7{X)>2gv$Z<5dPs}04B%NwHBhn|`#hVh zCw6f4Bkx^2=iV&oKm+Q(^abtxa6W>3t{$J>Ok|V{sODh#jMa6Sk?V^Xy(-OKgEolX>W;)Ae z(xkwSpK8gv^OEI=Be)|Od!rzh=aj(SiCh>^OByRAX8nvQ*->%Uk2-z9;w4L?Y^~X5 zvQ%VEiTBj8|8W8O<)SY6Il3!_}Ri-SIty;WyoZ$toa%jd|2j_^4gKwZG9RpPzI%#SS{ zc{-Nl0UBe|N09?Qxau)V*88LFDJ`I5Xm!6LWF#*YYScIjUS@`V75z8Y@^)`lE=(4^ z@}{lKm-6xJKi$51yHK1sx|hurtu(cQIv60|c%*Nlq%p1t2^k;dx?C-UMn=`^WQNon zfQ4?6ma{GlS~@2=hdrfkc=LxqWu|Szn+~GSWsf_WYEFch{$>(%yu+paF<#X2jlpvx zsj$4id7GOxWmAE>m=VfDP$qxf`Tw*><|{|E&^S-(ea{ONLn^TVs5;VZIKLN&gSh=u ziRY5Q{Y;iH&vuxL8TEjGn-le`o6Sj6x#{5?6;G2;6190}Pgb;Jv!YCJ=BvFXLh9L` z$v`|85}7X7(o-8Fo33f{BEkMz^cZOCu&bSDeW!buZcTN*aC>1LS(4?+>)f8SKGw3=7as^ z=^b7tNKn`Ht^AYjg~eXC{G6k@*WKN?$(A#@{Yzx060Kj@zxsit)n8vFMGOp-7j@C1 z^%JWI(8DLTnAoGh*i{PwDT!Euv5@5e=~nG+`z;~G3FvXE$W$7yeJGU}z1Ucd9Bz5j zFtL+yy*>CZ4_~;BVRA&U~L+^C}ufe7IrZvk80gAAK(YpsowsyZD~N${!w`bTJnBuispQ z31^^abpa90QGjHypd7NWD7W>WbrY&ljf9+7w;CPu{7W>qp-HX~+k2=*y$z{yb#-y$ zQuArG$6<$^^3UmhF@K{z!JrnhB5H#q8-E|C7KsygLK6C?n2~j@SRis865W(i#BJoi zV_JMr0js2qc)}kjlIyfCF~pE+TD7l3F)%nIeQ7&CyGg6PsW2TrDOvYZ*L!W#D`Qa; z2>@QDW9xvXw6E1OANSSUexPlZ zGrirLTw5&6%f2>H&@>c?3gx_!_?|ysK?R2wuG8T2!>IM4{G>jdBn=6m?J(48$83j$oa2=kKR84>}F0DfEG*_ty4CijW`V9c0KC#6Ljq}3T z_;^rqf4O16(_q6$0X{GE+)nkPx2S>L1;!bJ@5hM?hA5`1FW2X9s}JlK$9Y)6tB5&E zOKSx`q8wA~c9(`+a?0cR?OKnUDsAz>E0%d)9mZgTV>*chF=C+##Y9{}a&DlvolvPB zB@OcgyYk%nBHOOrJIopKnK_tZ<%32WWk|~5B>y zX1KOL1lLgIn*3fp{nG{e_P1)@=&835YYoLSFM_!zS}^XkO;vzxU!Ce8a2CkKr0hhL z61hV}zHi*Vm@ijAmWHw`<)vNwJ#Chd-l>?TZsvYW#zXW=SpZ5&pT`{dBm-!3X3WK$ zai0{!O8k9XkbaZ!&VH`}r4i#P$wmh!;-NN>ZYv&}|ZFH6!*foln+#L&$UUW}O(?M1u zw-TC&-XpB>&HYGiQu?MhVZ@_G`(%35v{Y)r>4hjY&SmF@fM2D{lL7SC+@XfguYSvK ze?(9rURSr8I#92A%_KjJ^L-WX#2X7ZL&L95q;Q-*Qsx&`$;<ei*A&`G0x%F~G{xlbLuvw**A5zN1p=_(8qNu9?EE zDRi1WyGpBqK*qP4KUxgUs3;X*W75~zX9O%51@G0{bqb9fPzM)qzGgA7sKs7xzSFN( z<(+Y$A{MQT!+f*W>z3m>kudnpS1{Gdh??RTV*(ZdbA&HYo0{Z#Wj^otB0}4QT;f&tnzM8r$s~(28!7&&veB(R3j*%e6V^eIoZ%tk?&t1I0UvyLDBaMh)i$rID z*q`L`!ryC)X`2iR)Vb6DO*lUd#au3T%e*a%HTnANG_0sc;?FUbAkf&Dh?0|Q(ooN1$3w zBIsW~Dd0c%w|q{&q&6X15vz-Ns*nC5jSUr-J$`6Tg!!FZK6HrVRIrJ5py9IMp)TP9 zm^&rmP^JlIk$d4;}^3goTo^PoW|)uWB)Kh&~_TnVXi zPfTb#9EiX(MexA|8lNZ!nf;;}RLv`N3fUavvY^3v{Es7ktCNKHEk^+(9U92q0bv_`=_zFQ2OS&Z<{OZ z|FT0`QeCyn*7Fci`EKw+pson_dST;mO~$l$g(9Banf_Kyi;Aj~q|9cNb#-+*wN_`S zs2eNAC?kw(TBc%NeDPkl7_Gx@htcs&m94Eh^Xyq_}XiN;CPnMMRi!tF&ra zIhF{L`8D)8fxJbZH~KNJonv9Rs0fy zwbJ$)yR*li05aKMx>(t9o`_pMM<<;>=;v*6WL%N^!ZY|8paRJT3H=-^RV~FyQwgZ# zZL8GMn#{l@P%MYX<C z$4H}Qxtl2uD8Ydrz}U53jZ+>7v zY%f5|2T~xj1L7&V9*3>k_>!icE<1w@qnt&SWV$19=a?l97trzt4CKRKWDIJ}zgLbhr+ZUZL40F>D(UUP)9Gs;+rLW69bjGY&2UL#LO|CksK&j=H6uzVnD>YyDUc+-51 z2Q^lLMn>;V$weA*Aw-o>dh!~5;Na8IH!ojT64!HASY;ZhRt0YcF?j6LP!)Tp7gN0N;hMM6Izw)@m7t%qpc`f>2>&sq4R&WB6x1y<`Q3bwMsK3g z<47)`hF`0+mmSjfQqsQ+XVQZ$%8;6pjhJkmaKJq09z9cOJsE>F4zQ1wcp@RFQ_^QP zm~&p5=An5B1Duf2!geE&L?RCS^MQ;k3wwl(O(+?QKi=nFyEsMey1`dAX`sR{c>H*wy`IT8ra&aOz7y z=_Xs_lyC&$EMUlXfB55ECC>94EdO7Pu$dGrnp63yd;XIpJc=3YLeKC6qv!!~ zWymNbA4(n}D-3>1#RkS}W(!|;$L zX2Q@6^az(^PHGr9#7M6tK+u_m&3OvlhLWw0n;ETCe%{|H5$<*^@RA`hEHPET-M8tOQXO)g|6(BE7U z%8nV<+t|t`ma0yZ=DHLq{q9Ih9Dx+fM@U7*Oqx#pbyy*Iu0 z>INIOZFdM7`RXYx(Ih$RFN+g>)E!I==f|hB)z%;;z~hf3>iDKqDK&wB*%s9|?Ity+ z&WuTjn&9nVJx}^ybsa}9b3H0@ea&G+rmHFVcz;oXEh>0uVf9;VinyuYi^|XM1wGAn zr>19A{*fLVnI#<~mTDO~C%|b!07WBf!`lSG5NbA(dVS4Ite`tVUBY8 zySOMQqA7sA!|QfET>cA&g?!lPWp!;sLA$-CLDVp=bF73|DH)$}OCFQlV09_qw5Ljg zE}<=fYefM6SNoqnEX5XTKTX0w=`j!h!X3TouF@V6U0gVi!sK8Kmb%wQtK$ zlGtu>EQiE*SI67F_qIXQ6tkofpS!0q?(34j`g~o<*o8K}Uig3dpU^89R(5i~_P(2V zY<-(F*|M;fWy-8Q^~kcNRL0Ka!v)P^8&{{rrGTal4VBhtCgSp!)O>QKpj0t!{qkON zQdaU53QiS~XjN{gdtHuHqyl<1O(+bmJy4jQ(%zJ>+PE?fXm!sDv1+cSItvEr6K#XL4-7XqboF z9^8Z)PCZ~~LIe$F3SFthg-FBW7Hiz1w1mc~;w4YnHQ2ha_4$L6#f7Dvg)?=OM6Xfb zwOtcGzm#^|G;HX2ccf7~eefkfCD!hg%e|08 zyVuY?2QX+R{Z0voVR2fhTsaNl+IOxs#W^ck%-gT7!zq|P=66sYBZl#8?$W)Nvsi5j ziHw+^_YShOn$U#AWU7)E5{wb|Olxo_X-dRvP~P)j1oDh*D%l&8ms}QbwzvMCaj$6H z@*$=a_&2P`0<`D-wk&@zmqT!&#Nr=Jp8TCe#1-yK~B=B=aB&b5K@_DkT-ZQ-; z@E*|aT_z>Yrb>JLd#MEImOmqo%beXCDqxREOEGdBem+oOs|1c2>xshVj_Ngj(o)xS zv%ikCTagg3D*=7Tj|k&G9j2_3tDDIs5;!G4N!#mD7bDjEq50b0t(R@H(Wc;6BDgOq zYN;`XT0%ni?;HVrjuQwIIZBZljOicK(}Ou52PtuIr&y6kY)~X?_@R(ZUwBif9Y;C~ za|0l=K5Fpfm&A_#A{dW?gVj}y`gVcjJG_nnpwRt?XvjzRmEzr?*b3<4YUt|ojKkoD zho5u|iys(?^o>ZeZP)U7TNnx$)#8=#Q`k9I6st|)nj9Ey&roG;4%(;i+P^9B>Zri| ziX%2HdrrnV>rHEAXJpqB7>g(y?5c8A(dNWK2;&xtJnJg-vHBo8{^l!_r>#wOu9nMZ zfw7C}l9-RYgu$5-2`kg$hF*YtkK8r@n^`P@3#t_*kyB!bXUrSFchTPT31Ufci7M()Q<0_9_bEpflPI1^ZiyN zhfDvLzNAN6!f42+eOJa^;V5!}^+c7&B@vo))m@|;atzv|e2;^^{1$gWLANLFyTxTB z7GRvFczh^Oe2gPwh;J4n+hy+cncX?u9GQ6;N)k4CPus#rnOP!#2MyH|oidZm3CCGz z+fL({>92e3QjPWR@I&=EFtRP}1=!oY3h9&cLy71KZhMB=y;@qXi#0UT={~!vwXBW$ z#-x*DP&1zgm|_<;>NDt#8EoM(y1EP=Ir+BmN&3lW7GO@S3x#lbzAq9d;tlX~LLIw! z42M{`6m319K_yEFLxdnDj@eLV6~!BM0q$Xe`8J0C%Ab%%FYuv-#`dH0cc8cV6Qj0k z=MDe*?KmOqCDN#bn9mJOxs7%bLGcBM^U+My_{|h%;@4#r9n@-*T6%xs1&C>wU?8SA zG|)Igelb5o2UxA-0Txw6$FrCl?%e0{_+?MTti9(5e@ZK*^rcG*cj!bumN#uOM9*5a zK8v?ze>b`zuS3kN8Gu)#5mAka+J^U6BlxuB-{{bMG`0@}d#EZ`gaT9Us$fGwf}DD&JA{ic~#y)2_P zZ^k?d;e$mF7Knq2zkbnL9S(QR^KoRM*+0~2to2UXc_o>r4&cvtPsA?`F)-HJR#i#c z<_*PVO{myn4=Fum)1%j=Gmch6_Xj}^ZQzt#-o~l&K?rRhn+N(2M?If}3|7{E6RS$l zl(EuBeB3yt|4Cnw_C{dckcKcQVC1tm0FQ|>zLXU7PW|^dQ3g7G?To*=~3Jiv6F(%N+bC}s-cHA|42;YkD%B4f(W}VFjk7sxdYGa}NssIP ztE}IVSwFOMI#E?q+LLZ3a(78$Q6-xnbWx=p#Q~?78Gnh&QQL9<6N-8$pk0tf7>737 ztrK!|4R!IZKqIMSGp9t5)cVa}`WyuL#GSnyB1s`%plEu3ckf&-ITVBQ?@qy_jnHD} zNG%*I23M9t7$k{GKYECuAc(Toq1|$-77w?zJ(#OX;vjK^c)IKNd{ua{U;T?5yoAGs ziXAea_HjoyfX}7_TQia^BCmIh4^2Z#MQXU^*EnP+sX+vZOvXq0oup-D{O!a~Ws;EG z@PnsPH<|dHB|chl37!18qtvMEVY5vL<-1h-5UM+d7M^!V8dL;$^m?i53ajEVlhLPg zN56W&&|tuz>au7!fIk<#`1_DO%aY`M1tP=3XjnQ<3e~?Vem=kR=*jiN?sP-5tt7*+ zuTuZ<=l_tTp({}A?f#ujmQzp^xwygH`&hm-b4Mot4!*!^4vlm?n2Ae-sr5TqTIHpy zBq`W$eId&Qt`EGuq_d$4eu!;WGb0MV#MPa&>fC(* z9yOWLf!{0R2O~PDtbFPnPBCo7^P6ky^Z# WxIJOV1^|d5Z_m;HUl{klhxi{smP3jF diff --git a/src/assets/audio/sfx/nickes/gate/sword-impact-metalgate-01.wav.mp3.import b/src/assets/audio/sfx/nickes/gate/sword-impact-metalgate-01.wav.mp3.import deleted file mode 100644 index d6dffee..0000000 --- a/src/assets/audio/sfx/nickes/gate/sword-impact-metalgate-01.wav.mp3.import +++ /dev/null @@ -1,19 +0,0 @@ -[remap] - -importer="mp3" -type="AudioStreamMP3" -uid="uid://dvlqqeg7pdfbl" -path="res://.godot/imported/sword-impact-metalgate-01.wav.mp3-d49036fcc047a1cffb123a7e098d3d38.mp3str" - -[deps] - -source_file="res://assets/audio/sfx/nickes/gate/sword-impact-metalgate-01.wav.mp3" -dest_files=["res://.godot/imported/sword-impact-metalgate-01.wav.mp3-d49036fcc047a1cffb123a7e098d3d38.mp3str"] - -[params] - -loop=false -loop_offset=0 -bpm=0 -beat_count=0 -bar_beats=4 diff --git a/src/assets/audio/sfx/nickes/gate/sword-impact-metalgate-02.wav.mp3 b/src/assets/audio/sfx/nickes/gate/sword-impact-metalgate-02.wav.mp3 deleted file mode 100644 index 8ebcee3a21cff01ee1de8253cb23e3e76df1149d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 12320 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 OfEeoEaqj;Y?f4(E_`!Ps diff --git a/src/assets/audio/sfx/nickes/gate/sword-impact-metalgate-02.wav.mp3.import b/src/assets/audio/sfx/nickes/gate/sword-impact-metalgate-02.wav.mp3.import deleted file mode 100644 index ab5b54a..0000000 --- a/src/assets/audio/sfx/nickes/gate/sword-impact-metalgate-02.wav.mp3.import +++ /dev/null @@ -1,19 +0,0 @@ -[remap] - -importer="mp3" -type="AudioStreamMP3" -uid="uid://bmlnb8rxnf1pc" -path="res://.godot/imported/sword-impact-metalgate-02.wav.mp3-93ab283b4523b09e36ff573d44c052fa.mp3str" - -[deps] - -source_file="res://assets/audio/sfx/nickes/gate/sword-impact-metalgate-02.wav.mp3" -dest_files=["res://.godot/imported/sword-impact-metalgate-02.wav.mp3-93ab283b4523b09e36ff573d44c052fa.mp3str"] - -[params] - -loop=false -loop_offset=0 -bpm=0 -beat_count=0 -bar_beats=4 diff --git a/src/assets/audio/sfx/nickes/move_rock/move_rock.mp3.wav.mp3 b/src/assets/audio/sfx/nickes/move_rock/move_rock.mp3.wav.mp3 deleted file mode 100644 index 6a38c25472805adb67d635485531694f297f632c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 9778 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 TJqWlH`~UI~{{P4SPYV1mS)SeI diff --git a/src/assets/audio/sfx/nickes/move_rock/move_rock.mp3.wav.mp3.import b/src/assets/audio/sfx/nickes/move_rock/move_rock.mp3.wav.mp3.import deleted file mode 100644 index 2461b54..0000000 --- a/src/assets/audio/sfx/nickes/move_rock/move_rock.mp3.wav.mp3.import +++ /dev/null @@ -1,19 +0,0 @@ -[remap] - -importer="mp3" -type="AudioStreamMP3" -uid="uid://d35fucpoaeubv" -path="res://.godot/imported/move_rock.mp3.wav.mp3-38dcfc2a649fce8226fd0ad8768af74e.mp3str" - -[deps] - -source_file="res://assets/audio/sfx/nickes/move_rock/move_rock.mp3.wav.mp3" -dest_files=["res://.godot/imported/move_rock.mp3.wav.mp3-38dcfc2a649fce8226fd0ad8768af74e.mp3str"] - -[params] - -loop=false -loop_offset=0 -bpm=0 -beat_count=0 -bar_beats=4 diff --git a/src/assets/audio/sfx/nickes/move_rock/rock_push_loop_01.mp3 b/src/assets/audio/sfx/nickes/move_rock/rock_push_loop_01.mp3 deleted file mode 100644 index 592549cc7e068eced91b7a3cb7b173d52e7b0432..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 60877 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 hbe3v5zZU=iy7#{u;LX3AX#c71{{RSJAa?)& diff --git a/src/assets/audio/sfx/nickes/move_rock/rock_push_loop_01.mp3.import b/src/assets/audio/sfx/nickes/move_rock/rock_push_loop_01.mp3.import deleted file mode 100644 index a2bda3e..0000000 --- a/src/assets/audio/sfx/nickes/move_rock/rock_push_loop_01.mp3.import +++ /dev/null @@ -1,19 +0,0 @@ -[remap] - -importer="mp3" -type="AudioStreamMP3" -uid="uid://c0s6ffsj6i0lq" -path="res://.godot/imported/rock_push_loop_01.mp3-969051a8fa1daf698c0d71cbba84db78.mp3str" - -[deps] - -source_file="res://assets/audio/sfx/nickes/move_rock/rock_push_loop_01.mp3" -dest_files=["res://.godot/imported/rock_push_loop_01.mp3-969051a8fa1daf698c0d71cbba84db78.mp3str"] - -[params] - -loop=false -loop_offset=0 -bpm=0 -beat_count=0 -bar_beats=4 diff --git a/src/assets/audio/sfx/nickes/move_rock/rock_push_loop_02.mp3 b/src/assets/audio/sfx/nickes/move_rock/rock_push_loop_02.mp3 deleted file mode 100644 index 6f23997eb3d9d594d745811415d424497f8f4a80..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 67249 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%0A?zj)t{{@tgaG-Q7%$mWWg_ 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 Zr9}FxN4mck)&HJxe~IJY#s9hl{sT4Xyg2{> diff --git a/src/assets/audio/sfx/nickes/move_rock/rock_push_loop_02.mp3.import b/src/assets/audio/sfx/nickes/move_rock/rock_push_loop_02.mp3.import deleted file mode 100644 index ae031a8..0000000 --- a/src/assets/audio/sfx/nickes/move_rock/rock_push_loop_02.mp3.import +++ /dev/null @@ -1,19 +0,0 @@ -[remap] - -importer="mp3" -type="AudioStreamMP3" -uid="uid://dsokwxmutlwk5" -path="res://.godot/imported/rock_push_loop_02.mp3-adb5a02227fd633528c7173c1e8ad8d5.mp3str" - -[deps] - -source_file="res://assets/audio/sfx/nickes/move_rock/rock_push_loop_02.mp3" -dest_files=["res://.godot/imported/rock_push_loop_02.mp3-adb5a02227fd633528c7173c1e8ad8d5.mp3str"] - -[params] - -loop=false -loop_offset=0 -bpm=0 -beat_count=0 -bar_beats=4 diff --git a/src/assets/audio/sfx/nickes/treasure/coin_drop_01.wav.mp3 b/src/assets/audio/sfx/nickes/treasure/coin_drop_01.wav.mp3 deleted file mode 100644 index 0a079577c5ca3de91e6659ac92d8440ec85f233f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 22675 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 diff --git a/src/assets/audio/sfx/nickes/treasure/coin_drop_01.wav.mp3.import b/src/assets/audio/sfx/nickes/treasure/coin_drop_01.wav.mp3.import deleted file mode 100644 index e22662c..0000000 --- a/src/assets/audio/sfx/nickes/treasure/coin_drop_01.wav.mp3.import +++ /dev/null @@ -1,19 +0,0 @@ -[remap] - -importer="mp3" -type="AudioStreamMP3" -uid="uid://b7ye0jis0bsjt" -path="res://.godot/imported/coin_drop_01.wav.mp3-3c6099bab02543ce9ed512438c65dec2.mp3str" - -[deps] - -source_file="res://assets/audio/sfx/nickes/treasure/coin_drop_01.wav.mp3" -dest_files=["res://.godot/imported/coin_drop_01.wav.mp3-3c6099bab02543ce9ed512438c65dec2.mp3str"] - -[params] - -loop=false -loop_offset=0 -bpm=0 -beat_count=0 -bar_beats=4 diff --git a/src/assets/audio/sfx/nickes/treasure/coin_drop_02.wav.mp3 b/src/assets/audio/sfx/nickes/treasure/coin_drop_02.wav.mp3 deleted file mode 100644 index fc09f2c047800410ab66020bc1f890a7ada3493e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 21081 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 OfG7+zfc$^=nf?dwi&T*S diff --git a/src/assets/audio/sfx/nickes/treasure/open_treasure_01.wav.mp3.import b/src/assets/audio/sfx/nickes/treasure/open_treasure_01.wav.mp3.import deleted file mode 100644 index 7deaf95..0000000 --- a/src/assets/audio/sfx/nickes/treasure/open_treasure_01.wav.mp3.import +++ /dev/null @@ -1,19 +0,0 @@ -[remap] - -importer="mp3" -type="AudioStreamMP3" -uid="uid://le2kwiriyjxo" -path="res://.godot/imported/open_treasure_01.wav.mp3-6ef47f3905258255ed532f3287454f2a.mp3str" - -[deps] - -source_file="res://assets/audio/sfx/nickes/treasure/open_treasure_01.wav.mp3" -dest_files=["res://.godot/imported/open_treasure_01.wav.mp3-6ef47f3905258255ed532f3287454f2a.mp3str"] - -[params] - -loop=false -loop_offset=0 -bpm=0 -beat_count=0 -bar_beats=4 diff --git a/src/scenes/TeleporterIntoClosedRoom.tscn b/src/scenes/TeleporterIntoClosedRoom.tscn index 67923c7..8ae98e1 100644 --- a/src/scenes/TeleporterIntoClosedRoom.tscn +++ b/src/scenes/TeleporterIntoClosedRoom.tscn @@ -1,6 +1,7 @@ [gd_scene format=3 uid="uid://d24xrw86pfg1s"] [ext_resource type="Script" uid="uid://b4wejvn0dfrji" path="res://scripts/teleporter_into_closed_room.gd" id="1_g3s7f"] +[ext_resource type="AudioStream" uid="uid://digavvapakqaw" path="res://assets/audio/sfx/teleport.ogg" id="2_7twcj"] [sub_resource type="Gradient" id="Gradient_skeae"] offsets = PackedFloat32Array(0, 0.9883721) @@ -97,18 +98,23 @@ randomness = 1.0 process_material = SubResource("ParticleProcessMaterial_n1yim") [node name="AreaWhichTeleportsPlayerIntoRoom" type="Area2D" parent="." unique_id=47060921] -collision_mask = 0 +collision_layer = 0 [node name="CollisionShape2D" type="CollisionShape2D" parent="AreaWhichTeleportsPlayerIntoRoom" unique_id=1803123867] shape = SubResource("RectangleShape2D_pp12y") [node name="AreaToStartEmit" type="Area2D" parent="." unique_id=1219098269] -collision_mask = 0 +collision_layer = 0 [node name="CollisionShape2D" type="CollisionShape2D" parent="AreaToStartEmit" unique_id=700191159] shape = SubResource("RectangleShape2D_7twcj") debug_color = Color(0.6530463, 0.21585448, 0.70196074, 0.41960785) +[node name="TeleportSfx" type="AudioStreamPlayer2D" parent="." unique_id=1891023570] +stream = ExtResource("2_7twcj") +attenuation = 7.999997 +panning_strength = 1.15 + [connection signal="body_entered" from="AreaWhichTeleportsPlayerIntoRoom" to="." method="_on_area_which_teleports_player_into_room_body_entered"] [connection signal="body_entered" from="AreaToStartEmit" to="." method="_on_area_to_start_emit_body_entered"] [connection signal="body_exited" from="AreaToStartEmit" to="." method="_on_area_to_start_emit_body_exited"] diff --git a/src/scenes/door.tscn b/src/scenes/door.tscn index d07e9cd..5e30d03 100644 --- a/src/scenes/door.tscn +++ b/src/scenes/door.tscn @@ -5,13 +5,22 @@ [ext_resource type="PackedScene" uid="uid://d24xrw86pfg1s" path="res://scenes/TeleporterIntoClosedRoom.tscn" id="2_q5w8r"] [ext_resource type="AudioStream" uid="uid://dfolu80c534j4" path="res://assets/audio/sfx/environment/keydoor/unlock.mp3" id="3_la1wf"] [ext_resource type="AudioStream" uid="uid://2w73l4k3704x" path="res://assets/audio/sfx/environment/pot/pot_drag1.mp3" id="4_18pbm"] -[ext_resource type="AudioStream" uid="uid://c6bp156a5ggdf" path="res://assets/audio/sfx/environment/keydoor/door_closes.mp3" id="5_18pbm"] +[ext_resource type="AudioStream" uid="uid://b7yj6biew1j26" path="res://assets/audio/sfx/environment/gate/gate_up_01.wav.mp3" id="6_ju5n0"] +[ext_resource type="AudioStream" uid="uid://dsokwxmutlwk5" path="res://assets/audio/sfx/environment/move_rock/rock_push_loop_02.mp3" id="7_kgbum"] +[ext_resource type="AudioStream" uid="uid://c0s6ffsj6i0lq" path="res://assets/audio/sfx/environment/move_rock/rock_push_loop_01.mp3" id="7_pg2b6"] +[ext_resource type="AudioStream" uid="uid://bpxm3p5gfrgm1" path="res://assets/audio/sfx/environment/gate/gate_down_01.wav.mp3" id="8_pg2b6"] [sub_resource type="RectangleShape2D" id="RectangleShape2D_uvdjg"] -size = Vector2(26, 14) +size = Vector2(26, 16) [sub_resource type="RectangleShape2D" id="RectangleShape2D_la1wf"] -size = Vector2(22, 18) +size = Vector2(22, 20) + +[sub_resource type="AudioStreamRandomizer" id="AudioStreamRandomizer_ey00f"] +playback_mode = 1 +streams_count = 2 +stream_0/stream = ExtResource("7_pg2b6") +stream_1/stream = ExtResource("7_kgbum") [node name="Door" type="StaticBody2D" unique_id=371155975] collision_layer = 64 @@ -21,27 +30,45 @@ script = ExtResource("1_uvdjg") position = Vector2(0, -16) [node name="Sprite2D" type="Sprite2D" parent="." unique_id=1520856168] +position = Vector2(0, -1) texture = ExtResource("1_hpvv5") [node name="CollisionShape2D" type="CollisionShape2D" parent="." unique_id=1691515105] shape = SubResource("RectangleShape2D_uvdjg") +metadata/_edit_lock_ = true [node name="SfxOpenKeyDoor" type="AudioStreamPlayer2D" parent="." unique_id=47303726] stream = ExtResource("3_la1wf") +max_distance = 1485.0 +attenuation = 6.276666 +panning_strength = 1.09 [node name="SfxOpenStoneDoor" type="AudioStreamPlayer2D" parent="." unique_id=885417421] stream = ExtResource("4_18pbm") +max_distance = 1204.0 +attenuation = 6.498014 +panning_strength = 1.25 [node name="SfxOpenGateDoor" type="AudioStreamPlayer2D" parent="." unique_id=442358170] -stream = ExtResource("4_18pbm") +stream = ExtResource("6_ju5n0") +volume_db = -4.65 +pitch_scale = 1.1 +max_distance = 1246.0 +attenuation = 7.999997 +panning_strength = 1.3 [node name="KeyInteractionArea" type="Area2D" parent="." unique_id=982067740] +metadata/_edit_lock_ = true [node name="CollisionShape2D" type="CollisionShape2D" parent="KeyInteractionArea" unique_id=1640987231] shape = SubResource("RectangleShape2D_la1wf") debug_color = Color(0.70196074, 0.67558956, 0.17869899, 0.41960785) [node name="SfxDoorCloses" type="AudioStreamPlayer2D" parent="." unique_id=1074871158] -stream = ExtResource("5_18pbm") -max_distance = 1333.0 -attenuation = 5.8563395 +stream = SubResource("AudioStreamRandomizer_ey00f") +volume_db = -1.268 +max_distance = 1289.0 +attenuation = 3.7321312 + +[node name="SfxCloseGateDoor" type="AudioStreamPlayer2D" parent="." unique_id=1825261269] +stream = ExtResource("8_pg2b6") diff --git a/src/scenes/interactable_object.tscn b/src/scenes/interactable_object.tscn index 5fe28ac..6341e7c 100644 --- a/src/scenes/interactable_object.tscn +++ b/src/scenes/interactable_object.tscn @@ -20,6 +20,13 @@ [ext_resource type="AudioStream" uid="uid://cg1ndvx4t7xtd" path="res://assets/audio/sfx/environment/pot/pot_destroy_sound5.mp3" id="9_r4pxp"] [ext_resource type="AudioStream" uid="uid://co7i1f4t8qtqp" path="res://assets/audio/sfx/environment/pot/pot_place_06.mp3" id="9_ylwml"] [ext_resource type="AudioStream" uid="uid://bt5npaenq15h2" path="res://assets/audio/sfx/environment/pot/smaller_pot_crash.mp3" id="10_ygcel"] +[ext_resource type="AudioStream" uid="uid://dw7nvjsfoc4vw" path="res://assets/audio/sfx/environment/treasure/open_chest_01.wav.mp3" id="21_oso25"] +[ext_resource type="AudioStream" uid="uid://cu1eavghp85pg" path="res://assets/audio/sfx/environment/treasure/open_chest_02.wav.mp3" id="22_r4pxp"] +[ext_resource type="AudioStream" uid="uid://le2kwiriyjxo" path="res://assets/audio/sfx/environment/treasure/open_treasure_01.wav.mp3" id="23_ygcel"] +[ext_resource type="AudioStream" uid="uid://c0s6ffsj6i0lq" path="res://assets/audio/sfx/environment/move_rock/rock_push_loop_01.mp3" id="24_ygcel"] +[ext_resource type="AudioStream" uid="uid://dsokwxmutlwk5" path="res://assets/audio/sfx/environment/move_rock/rock_push_loop_02.mp3" id="25_1u1k0"] +[ext_resource type="AudioStream" uid="uid://4ilddgc4lgyq" path="res://assets/audio/sfx/environment/crate/crash_table-04.wav" id="26_vfomk"] +[ext_resource type="AudioStream" uid="uid://c7kc0aw0wevah" path="res://assets/audio/sfx/environment/crate/wood_impact_break.mp3" id="27_2p257"] [sub_resource type="CapsuleShape2D" id="CapsuleShape2D_nyc8x"] radius = 4.0 @@ -54,6 +61,25 @@ stream_0/stream = ExtResource("4_gpwir") stream_1/stream = ExtResource("5_nb01e") stream_2/stream = ExtResource("6_vfa4w") +[sub_resource type="AudioStreamRandomizer" id="AudioStreamRandomizer_vfomk"] +playback_mode = 1 +streams_count = 3 +stream_0/stream = ExtResource("21_oso25") +stream_1/stream = ExtResource("22_r4pxp") +stream_2/stream = ExtResource("23_ygcel") + +[sub_resource type="AudioStreamRandomizer" id="AudioStreamRandomizer_2p257"] +playback_mode = 1 +random_pitch = 1.0059091 +streams_count = 2 +stream_0/stream = ExtResource("24_ygcel") +stream_1/stream = ExtResource("25_1u1k0") + +[sub_resource type="AudioStreamRandomizer" id="AudioStreamRandomizer_ik3co"] +streams_count = 2 +stream_0/stream = ExtResource("26_vfomk") +stream_1/stream = ExtResource("27_2p257") + [node name="InteractableObject" type="CharacterBody2D" unique_id=1472163831] collision_layer = 2 collision_mask = 71 @@ -110,3 +136,14 @@ max_distance = 750.0 attenuation = 10.556063 panning_strength = 1.5 bus = &"Sfx" + +[node name="SfxOpenChest" type="AudioStreamPlayer2D" parent="." unique_id=743332693] +stream = SubResource("AudioStreamRandomizer_vfomk") + +[node name="SfxDragRock" type="AudioStreamPlayer2D" parent="." unique_id=1895903195] +stream = SubResource("AudioStreamRandomizer_2p257") +volume_db = -2.611 + +[node name="SfxBreakCrate" type="AudioStreamPlayer2D" parent="." unique_id=1799447869] +stream = SubResource("AudioStreamRandomizer_ik3co") +volume_db = -6.092 diff --git a/src/scenes/loot.tscn b/src/scenes/loot.tscn index d84d1f5..d8d8a16 100644 --- a/src/scenes/loot.tscn +++ b/src/scenes/loot.tscn @@ -7,6 +7,8 @@ [ext_resource type="AudioStream" uid="uid://umoxmryvbm01" path="res://assets/audio/sfx/cloth/leather_cloth_01.wav.mp3" id="5_vl55g"] [ext_resource type="AudioStream" uid="uid://d1qqsganlqnwh" path="res://assets/audio/sfx/pickups/key.mp3" id="6_gyjv8"] [ext_resource type="AudioStream" uid="uid://b5xbv7s85sy5o" path="res://assets/audio/sfx/pickups/potion.mp3" id="7_eeo7l"] +[ext_resource type="AudioStream" uid="uid://cnb376ah43nqi" path="res://assets/audio/sfx/pickups/bite-food-01.mp3" id="8_0tqa7"] +[ext_resource type="AudioStream" uid="uid://bbnby1sso3f4v" path="res://assets/audio/sfx/pickups/bite-food-02.mp3" id="9_531sv"] [sub_resource type="Gradient" id="Gradient_1"] colors = PackedColorArray(0, 0, 0, 1, 0, 0, 0, 0) @@ -25,6 +27,13 @@ radius = 3.0 [sub_resource type="CircleShape2D" id="CircleShape2D_1"] radius = 8.0 +[sub_resource type="AudioStreamRandomizer" id="AudioStreamRandomizer_37k03"] +playback_mode = 1 +random_pitch = 1.0059091 +streams_count = 2 +stream_0/stream = ExtResource("8_0tqa7") +stream_1/stream = ExtResource("9_531sv") + [node name="Loot" type="CharacterBody2D" unique_id=1373758515] collision_layer = 0 collision_mask = 64 @@ -73,3 +82,6 @@ stream = ExtResource("6_gyjv8") [node name="SfxPotionCollect" type="AudioStreamPlayer2D" parent="." unique_id=1615824668] stream = ExtResource("7_eeo7l") + +[node name="SfxBananaCollect" type="AudioStreamPlayer2D" parent="." unique_id=1763488179] +stream = SubResource("AudioStreamRandomizer_37k03") diff --git a/src/scenes/player.tscn b/src/scenes/player.tscn index 0239187..f48e1aa 100644 --- a/src/scenes/player.tscn +++ b/src/scenes/player.tscn @@ -26,6 +26,8 @@ [ext_resource type="AudioStream" uid="uid://caclaiagfnr2o" path="res://assets/audio/sfx/player/take_damage/player_damaged_05.wav.mp3" id="24_wqfne"] [ext_resource type="AudioStream" uid="uid://dighi525ty7sl" path="res://assets/audio/sfx/player/take_damage/player_damaged_06.wav.mp3" id="25_wnwbv"] [ext_resource type="AudioStream" uid="uid://bdhmel5vyixng" path="res://assets/audio/sfx/player/take_damage/player_damaged_07.wav.mp3" id="26_gl8cc"] +[ext_resource type="AudioStream" uid="uid://4vulahdsj4i2" path="res://assets/audio/sfx/swoosh/throw_01.wav.mp3" id="27_31cv2"] +[ext_resource type="AudioStream" uid="uid://w6yon88kjfml" path="res://assets/audio/sfx/nickes/lift_sfx.ogg" id="28_pf23h"] [sub_resource type="Gradient" id="Gradient_jej6c"] offsets = PackedFloat32Array(0.7710843, 0.77710843) @@ -196,3 +198,16 @@ bus = &"Sfx" stream = SubResource("AudioStreamRandomizer_487ah") attenuation = 7.7274756 bus = &"Sfx" + +[node name="SfxThrow" type="AudioStreamPlayer2D" parent="." unique_id=961008127] +stream = ExtResource("27_31cv2") +pitch_scale = 0.61 +max_distance = 983.0 +attenuation = 8.876549 +panning_strength = 1.04 + +[node name="SfxLift" type="AudioStreamPlayer2D" parent="." unique_id=1261167113] +stream = ExtResource("28_pf23h") +max_distance = 1246.0 +attenuation = 6.964403 +panning_strength = 1.11 diff --git a/src/scripts/door.gd b/src/scripts/door.gd index e79f533..6bcf6ec 100644 --- a/src/scripts/door.gd +++ b/src/scripts/door.gd @@ -9,7 +9,7 @@ extends StaticBody2D @export var is_closed: bool = true var is_closing:bool = false var is_opening:bool = false -var time_to_move:float = 0.5 +var time_to_move:float = 0.2 var move_timer:float = 0.0 var animation_start_position: Vector2 = Vector2.ZERO # Position when animation started @@ -35,6 +35,9 @@ var connected_switches: Array = [] # Array of floor switch nodes var requires_enemies: bool = false # True if door requires defeating enemies to open var requires_switch: bool = false # True if door requires activating switches to open +# Smoke puff scene for StoneDoor effects +var smoke_puff_scene = preload("res://scenes/smoke_puff.tscn") + # Called when the node enters the scene tree for the first time. func _ready() -> void: # Set texture based on door type @@ -209,6 +212,11 @@ func _process(delta: float) -> void: # When moved from closed position (open), collision should be DISABLED set_collision_layer_value(7, false) print("Door: Opening animation complete - moved to open position: ", open_position, " (closed: ", closed_position, ", offset: ", open_offset, ") - collision DISABLED") + + # Spawn smoke puffs when StoneDoor finishes opening (1-2 puffs) + if type == "StoneDoor": + _spawn_smoke_puffs_on_open() + # Animation finished, reset flags is_opening = false is_closing = false @@ -222,6 +230,11 @@ func _process(delta: float) -> void: # When at closed position, collision should be ENABLED set_collision_layer_value(7, true) print("Door: Closing animation complete - moved to closed position: ", closed_position, " - collision ENABLED") + + # Spawn smoke puffs when StoneDoor finishes closing (1-3 puffs) + if type == "StoneDoor": + _spawn_smoke_puffs_on_close() + # Animation finished, reset flags is_opening = false is_closing = false @@ -295,6 +308,10 @@ func _update_collision_based_on_position(): set_collision_layer_value(7, false) func _open(): + # Only open on server/authority in multiplayer, then sync to clients + if multiplayer.has_multiplayer_peer() and not multiplayer.is_server(): + return # Clients wait for RPC + $TeleporterIntoClosedRoom.is_enabled = false # CRITICAL: For KeyDoors, ensure they start from closed position before opening # KeyDoors should ALWAYS start from closed position when opening (never from open position) @@ -338,8 +355,10 @@ func _open(): else: push_error("Door: StoneDoor/GateDoor _open() called but closed_position is zero!") return - - $SfxOpenStoneDoor.play() + if type == "GateDoor": + $SfxOpenGateDoor.play() + else: + $SfxOpenStoneDoor.play() # CRITICAL: Store starting position for animation (should be closed_position) animation_start_position = position @@ -348,7 +367,17 @@ func _open(): is_closing = false move_timer = 0.0 + # Sync door opening to clients in multiplayer + if multiplayer.has_multiplayer_peer() and multiplayer.is_server() and is_inside_tree(): + _sync_door_open.rpc() + # Also sync puzzle_solved state + _sync_puzzle_solved.rpc(puzzle_solved) + func _close(): + # Only close on server/authority in multiplayer, then sync to clients + if multiplayer.has_multiplayer_peer() and not multiplayer.is_server(): + return # Clients wait for RPC + # CRITICAL: KeyDoors should NEVER be closed (they only open with a key and stay open) if type == "KeyDoor": print("Door: ERROR - _close() called on KeyDoor! KeyDoors should never be closed!") @@ -401,11 +430,18 @@ func _close(): animation_start_position = position print("Door: Starting close animation from ", animation_start_position, " to ", closed_position, " (offset: ", open_offset, ")") - $SfxDoorCloses.play() + if type == "GateDoor": + $SfxCloseGateDoor.play() + else: + $SfxDoorCloses.play() is_opening = false is_closing = true move_timer = 0.0 $TeleporterIntoClosedRoom.is_enabled = true + + # Sync door closing to clients in multiplayer + if multiplayer.has_multiplayer_peer() and multiplayer.is_server() and is_inside_tree(): + _sync_door_close.rpc() func _ready_after_setup(): # Called after door is fully set up with room references and positioned @@ -646,27 +682,77 @@ func _on_room_exited(body): # Doors stay in their current state func _check_puzzle_state(): - # Check if room puzzle is solved - # IMPORTANT: Only check puzzle state if we're in the blocking room - if puzzle_solved: - return # Already solved + # Only check puzzle state on server/authority in multiplayer + if multiplayer.has_multiplayer_peer() and not multiplayer.is_server(): + return # Clients wait for server to check and sync via RPC + + # CRITICAL: Don't check puzzle state while door is animating (closing or opening) + # This prevents race conditions where switch triggers before door finishes closing + if is_closing or is_opening: + print("Door: Skipping puzzle check - door is animating (is_closing: ", is_closing, ", is_opening: ", is_opening, ")") + return + + # Check door's actual state (position-based check is more reliable than flags) + var distance_to_closed = position.distance_to(closed_position) if closed_position != Vector2.ZERO else 999.0 + var is_actually_closed = distance_to_closed < 5.0 # Within 5 pixels of closed position + var is_actually_open = distance_to_closed > 5.0 # More than 5 pixels away from closed position + var collision_enabled = get_collision_layer_value(7) # Check if collision layer 7 is enabled + + # CRITICAL: If puzzle_solved is true but door is not actually open (not in open position or collision still enabled), + # allow switch to trigger again to open the door + # This handles race conditions where switch triggers while door is still closing + if puzzle_solved and (not is_actually_open or collision_enabled): + # Door should be open but isn't (position or collision) - reset puzzle_solved to allow switch to trigger again + print("Door: puzzle_solved is true but door is not actually open (position: ", is_actually_open, ", collision: ", collision_enabled, ") - resetting to allow switch to trigger again") + puzzle_solved = false + switches_activated = false # Check if all enemies are defeated (enemies in blocking room) if requires_enemies and _are_all_enemies_defeated(): print("Door: All enemies defeated! Opening door ", name, " (type: ", type, ", room: ", blocking_room.get("x", "?") if blocking_room and not blocking_room.is_empty() else "?", ",", blocking_room.get("y", "?") if blocking_room and not blocking_room.is_empty() else "?", ")") enemies_defeated = true puzzle_solved = true - if is_closed: + if is_actually_closed: _open() return # Check if all required switches are activated (switches in switch_room, before the door) - if _are_all_switches_activated(): + var all_switches_active = _are_all_switches_activated() + + # Check if any connected switches are pillar switches (for special handling) + var has_pillar_switch = false + for switch in connected_switches: + if is_instance_valid(switch) and "switch_type" in switch and switch.switch_type == "pillar": + has_pillar_switch = true + break + + if all_switches_active: + # All switches are active - solve puzzle and open door if closed switches_activated = true puzzle_solved = true - if is_closed: + # Only open if door is actually closed (not just the flag, but actual position) + # This prevents race condition where switch triggers while door is still closing + if is_actually_closed: _open() return + else: + # Not all switches are active + if puzzle_solved and has_pillar_switch: + # Pillar switch became inactive and door was open - close it and reset puzzle + print("Door: Pillar switch deactivated - closing door ", name) + switches_activated = false + puzzle_solved = false + if not is_actually_closed: + _close() + return + elif puzzle_solved and not has_pillar_switch: + # Walk switch puzzle - once solved, stays solved (door stays open) + # Don't reset puzzle_solved for walk switches + return + else: + # Puzzle not solved yet - just reset flags + switches_activated = false + puzzle_solved = false func _are_all_enemies_defeated() -> bool: # Check if all enemies spawned from spawners in the puzzle room are defeated @@ -693,16 +779,16 @@ func _are_all_enemies_defeated() -> bool: # Check if enemy is in this room (use position-based check, more reliable) var enemy_in_room = false - var tile_size = 16 - var enemy_tile_x = int(child.global_position.x / tile_size) - var enemy_tile_y = int(child.global_position.y / tile_size) - var room_min_x = target_room.x + 2 - var room_max_x = target_room.x + target_room.w - 2 - var room_min_y = target_room.y + 2 - var room_max_y = target_room.y + target_room.h - 2 + # Use tile_size and room bounds from parent scope (declared below) + var enemy_tile_x = int(child.global_position.x / 16) + var enemy_tile_y = int(child.global_position.y / 16) + var enemy_room_min_x = target_room.x + 2 + var enemy_room_max_x = target_room.x + target_room.w - 2 + var enemy_room_min_y = target_room.y + 2 + var enemy_room_max_y = target_room.y + target_room.h - 2 - if enemy_tile_x >= room_min_x and enemy_tile_x < room_max_x and \ - enemy_tile_y >= room_min_y and enemy_tile_y < room_max_y: + if enemy_tile_x >= enemy_room_min_x and enemy_tile_x < enemy_room_max_x and \ + enemy_tile_y >= enemy_room_min_y and enemy_tile_y < enemy_room_max_y: enemy_in_room = true # Also check spawner metadata - if enemy has spawner_name matching this room's spawners if child.has_meta("spawner_name"): @@ -718,10 +804,247 @@ func _are_all_enemies_defeated() -> bool: # Check if all spawned enemies are dead print("Door: _are_all_enemies_defeated() - Found ", room_spawned_enemies.size(), " spawned enemies in room (", target_room.get("x", "?") if target_room and not target_room.is_empty() else "?", ",", target_room.get("y", "?") if target_room and not target_room.is_empty() else "?", ")") + # First, check if any enemies in room_spawned_enemies are still alive + # If any are alive, puzzle is not solved + for enemy in room_spawned_enemies: + if is_instance_valid(enemy): + var enemy_is_dead = false + if "is_dead" in enemy: + enemy_is_dead = enemy.is_dead + else: + enemy_is_dead = enemy.is_queued_for_deletion() or not enemy.is_inside_tree() + + if not enemy_is_dead: + print("Door: Enemy ", enemy.name, " is still alive - puzzle not solved yet") + return false # Enemy is still alive, puzzle not solved + + # If we have enemies and all are dead, puzzle is solved + if room_spawned_enemies.size() > 0: + print("Door: All ", room_spawned_enemies.size(), " spawned enemies are dead! Puzzle solved!") + return true # All enemies found are dead + + # No spawned enemies found - check if spawners have actually spawned enemies before + # CRITICAL: Only consider puzzle solved if spawners have spawned enemies and they're all dead + # Don't solve if spawners haven't spawned yet (e.g., spawn_on_ready=false and player hasn't entered room) + + # IMPORTANT: Before checking spawners, verify there are NO ALIVE enemies in the room + # This catches cases where enemies weren't added to room_spawned_enemies due to position check issues + var entities_child = entities_node.get_node_or_null("Entities") if entities_node else null + if not entities_child and entities_node: + var game_world = get_tree().get_first_node_in_group("game_world") + if game_world: + entities_child = game_world.get_node_or_null("Entities") + + var tile_size = 16 + var room_min_x = target_room.x + 2 + var room_max_x = target_room.x + target_room.w - 2 + var room_min_y = target_room.y + 2 + var room_max_y = target_room.y + target_room.h - 2 + + if entities_child: + for child in entities_child.get_children(): + if child.is_in_group("enemy"): + # Only check enemies that were spawned from spawners + if not child.has_meta("spawned_from_spawner") or not child.get_meta("spawned_from_spawner"): + continue + + # Check if enemy is in this room by position + var enemy_tile_x = int(child.global_position.x / tile_size) + var enemy_tile_y = int(child.global_position.y / tile_size) + var enemy_in_room = (enemy_tile_x >= room_min_x and enemy_tile_x < room_max_x and \ + enemy_tile_y >= room_min_y and enemy_tile_y < room_max_y) + + if not enemy_in_room: + continue # Skip enemies not in this room + + # Check if enemy is alive + var enemy_is_alive = false + if "is_dead" in child: + enemy_is_alive = not child.is_dead + else: + enemy_is_alive = not child.is_queued_for_deletion() and child.is_inside_tree() + + if enemy_is_alive: + # Found an ALIVE enemy in this room - puzzle not solved! + print("Door: Found ALIVE enemy ", child.name, " in room - puzzle not solved yet (enemy still alive)") + return false + + # No alive enemies found in room - now check if spawners have spawned if room_spawned_enemies.size() == 0: - # No spawned enemies found - if door requires enemies, puzzle is not solved - # But if there were never any enemies, this might mean they haven't spawned yet or all are already dead/removed - print("Door: No spawned enemies found in room - puzzle not solved yet (enemies may not have spawned or already removed)") + # No spawned enemies found - check if spawners have actually spawned enemies before + # CRITICAL: Only consider puzzle solved if spawners have spawned enemies and they're all dead + # Don't solve if spawners haven't spawned yet (e.g., spawn_on_ready=false and player hasn't entered room) + + var spawners_in_room = [] + var spawners_that_have_spawned = [] + + # First, check ALL spawners in the room (including destroyed ones by checking for enemies with their names) + for spawner in get_tree().get_nodes_in_group("enemy_spawner"): + if is_instance_valid(spawner): + var spawner_tile_x = int(spawner.global_position.x / 16) + var spawner_tile_y = int(spawner.global_position.y / 16) + if spawner_tile_x >= target_room.x + 2 and spawner_tile_x < target_room.x + target_room.w - 2 and \ + spawner_tile_y >= target_room.y + 2 and spawner_tile_y < target_room.y + target_room.h - 2: + spawners_in_room.append(spawner) + + # Check if this spawner has spawned by multiple methods: + # 1. Check if spawner has has_ever_spawned flag (most reliable) + # 2. Check if any enemies in scene were spawned by this spawner + # 3. Check if spawner has spawned_enemies list with valid enemies + var has_spawned = false + + # First, check if spawner has has_ever_spawned flag + if "has_ever_spawned" in spawner and spawner.has_ever_spawned: + has_spawned = true + + # Also check if any enemies in scene were spawned by this spawner (ONLY if they're dead/removed) + # If we find ALIVE enemies, don't mark spawner as spawned - wait until they're dead + if not has_spawned: + var entities_child_for_spawner = entities_node.get_node_or_null("Entities") if entities_node else null + if not entities_child_for_spawner and entities_node: + var game_world = get_tree().get_first_node_in_group("game_world") + if game_world: + entities_child_for_spawner = game_world.get_node_or_null("Entities") + + if entities_child_for_spawner: + for child in entities_child_for_spawner.get_children(): + if child.is_in_group("enemy"): + if child.has_meta("spawner_name") and child.get_meta("spawner_name") == spawner.name: + # Found an enemy spawned by this spawner + # Check if it's alive - if alive, don't mark spawner as spawned yet + var enemy_is_alive = false + if "is_dead" in child: + enemy_is_alive = not child.is_dead + else: + enemy_is_alive = not child.is_queued_for_deletion() and child.is_inside_tree() + + if not enemy_is_alive: + # Enemy is dead - spawner has spawned + has_spawned = true + break + # If enemy is alive, don't mark spawner as spawned - wait until it's dead + + # Also check if spawner currently has enemies in its spawned_enemies list + # Only count if all enemies in the list are dead (puzzle can only be solved when all are dead) + if not has_spawned and "spawned_enemies" in spawner: + var spawned_enemies_list = spawner.spawned_enemies + if spawned_enemies_list and spawned_enemies_list.size() > 0: + # Check if all enemies in list are dead + var all_enemies_dead = true + for enemy in spawned_enemies_list: + if is_instance_valid(enemy): + var enemy_is_dead = false + if "is_dead" in enemy: + enemy_is_dead = enemy.is_dead + else: + enemy_is_dead = enemy.is_queued_for_deletion() or not enemy.is_inside_tree() + + if not enemy_is_dead: + all_enemies_dead = false + break + + # Only mark spawner as spawned if all enemies are dead + if all_enemies_dead: + has_spawned = true + + if has_spawned: + spawners_that_have_spawned.append(spawner) + + # Also check for spawners that may have been destroyed but had enemies spawned + # Look for any dead enemies with spawner name matching this room AND position in this room + var spawner_name_pattern = "EnemySpawner_" + str(target_room.x) + "_" + str(target_room.y) + var found_dead_enemies_with_matching_spawner = [] + if entities_child: + for child in entities_child.get_children(): + if child.is_in_group("enemy"): + # Only check enemies that were spawned from spawners + if not child.has_meta("spawned_from_spawner") or not child.get_meta("spawned_from_spawner"): + continue + + # Check if enemy is in this room by position + var enemy_tile_x = int(child.global_position.x / tile_size) + var enemy_tile_y = int(child.global_position.y / tile_size) + var enemy_in_room = (enemy_tile_x >= room_min_x and enemy_tile_x < room_max_x and \ + enemy_tile_y >= room_min_y and enemy_tile_y < room_max_y) + + if not enemy_in_room: + continue # Skip enemies not in this room + + # Check if enemy is dead + var enemy_is_dead = false + if "is_dead" in child: + enemy_is_dead = child.is_dead + else: + enemy_is_dead = child.is_queued_for_deletion() or not child.is_inside_tree() + + # Only check dead/removed enemies as evidence that spawners spawned + if enemy_is_dead and child.has_meta("spawner_name"): + var enemy_spawner_name = child.get_meta("spawner_name") + if spawner_name_pattern in enemy_spawner_name or enemy_spawner_name == spawner_name_pattern: + found_dead_enemies_with_matching_spawner.append(child) + + # Track unique spawner names that have spawned (only based on dead enemies) + var unique_spawner_names_that_spawned = {} + for enemy in found_dead_enemies_with_matching_spawner: + if enemy.has_meta("spawner_name"): + var spawner_name = enemy.get_meta("spawner_name") + unique_spawner_names_that_spawned[spawner_name] = true + + # Only mark spawners as spawned if we found DEAD enemies (ensures puzzle only solves when all are dead) + if unique_spawner_names_that_spawned.size() > 0: + # Found dead enemies with matching spawner names - spawners definitely spawned and enemies are dead + if spawners_in_room.size() == 0: + for spawner_name in unique_spawner_names_that_spawned.keys(): + spawners_in_room.append(null) # Placeholder for destroyed spawner + spawners_that_have_spawned.append(null) # Count as spawned + print("Door: Spawner ", spawner_name, " was destroyed but spawned enemies that are now all dead - counting as spawned") + else: + # Spawners exist - check if any weren't counted as spawned yet + for spawner_name in unique_spawner_names_that_spawned.keys(): + var spawner_already_counted = false + for spawned_spawner in spawners_that_have_spawned: + if is_instance_valid(spawned_spawner) and spawned_spawner.name == spawner_name: + spawner_already_counted = true + break + + if not spawner_already_counted: + for i in range(spawners_in_room.size()): + var spawner = spawners_in_room[i] + if is_instance_valid(spawner) and spawner.name == spawner_name: + spawners_that_have_spawned.append(spawner) + print("Door: Found dead enemy from spawner ", spawner_name, " - marking as spawned") + break + + + # Only solve if: + # 1. There are spawners in the room (or were spawners that spawned) + # 2. All spawners have spawned enemies + # 3. All those enemies are now dead (since no enemies found in room) + + # Count valid spawners (including null placeholders for destroyed spawners) + var valid_spawners_count = spawners_in_room.size() + var valid_spawned_count = spawners_that_have_spawned.size() + + # If we have spawners (including destroyed ones) and they've all spawned, puzzle is solved + if valid_spawners_count > 0 and valid_spawned_count >= valid_spawners_count: + # All spawners in room have spawned at least once, and no enemies found in room + # This means all spawned enemies are dead - puzzle solved! + print("Door: No spawned enemies found, but all ", valid_spawners_count, " spawners in room have spawned enemies that are all dead - puzzle solved!") + return true + + # Also check: if no spawners found (they were destroyed), but this is a puzzle room (has blocking doors), + # and we previously found enemies with matching spawner names that are now gone, + # consider the puzzle solved + if valid_spawners_count == 0 and valid_spawned_count > 0: + # Spawners were destroyed, but we found evidence they spawned + # Since no enemies found, they must all be dead - puzzle solved! + print("Door: No spawners or enemies found, but found evidence of spawned enemies that are now all dead - puzzle solved!") + return true + + if valid_spawners_count > 0: + print("Door: Spawners in room (", valid_spawners_count, ") but only ", valid_spawned_count, " have spawned - puzzle not solved yet") + else: + print("Door: No spawned enemies found in room - puzzle not solved yet (enemies may not have spawned or already removed)") return false for enemy in room_spawned_enemies: @@ -743,6 +1066,64 @@ func _are_all_enemies_defeated() -> bool: print("Door: All ", room_spawned_enemies.size(), " spawned enemies are dead! Puzzle solved!") return true # All enemies are dead +func _spawn_smoke_puffs_on_close(): + # Spawn 1-3 smoke puffs when StoneDoor finishes closing + if not smoke_puff_scene: + return + + var puff_count = randi_range(1, 3) # Random between 1-3 puffs + + for i in range(puff_count): + var puff = smoke_puff_scene.instantiate() + if puff: + # Spawn at door position with small random offset + var offset_x = randf_range(-8, 8) + var offset_y = randf_range(-8, 8) + puff.global_position = global_position + Vector2(offset_x, offset_y) + puff.z_index = 10 # High z-index to ensure visibility + + # Add to Entities node for proper layering + var entities_node = get_tree().get_first_node_in_group("game_world") + if entities_node: + entities_node = entities_node.get_node_or_null("Entities") + if entities_node: + entities_node.add_child(puff) + else: + # Fallback: add to scene root + get_tree().current_scene.add_child(puff) + else: + # Fallback: add to scene root + get_tree().current_scene.add_child(puff) + +func _spawn_smoke_puffs_on_open(): + # Spawn 1-2 smoke puffs when StoneDoor starts opening + if not smoke_puff_scene: + return + + var puff_count = randi_range(1, 2) # Random between 1-2 puffs + + for i in range(puff_count): + var puff = smoke_puff_scene.instantiate() + if puff: + # Spawn at door position with small random offset + var offset_x = randf_range(-8, 8) + var offset_y = randf_range(-8, 8) + puff.global_position = global_position + Vector2(offset_x, offset_y) + puff.z_index = 10 # High z-index to ensure visibility + + # Add to Entities node for proper layering + var entities_node = get_tree().get_first_node_in_group("game_world") + if entities_node: + entities_node = entities_node.get_node_or_null("Entities") + if entities_node: + entities_node.add_child(puff) + else: + # Fallback: add to scene root + get_tree().current_scene.add_child(puff) + else: + # Fallback: add to scene root + get_tree().current_scene.add_child(puff) + func _are_all_switches_activated() -> bool: # Check if all required switches are activated # CRITICAL: ONLY check connected_switches - switches are explicitly connected when spawned @@ -795,6 +1176,11 @@ func _show_key_indicator(): key_indicator.visible = true func teleportPlayer(body: Node2D): + # Only teleport on server in multiplayer (server is authority for all players) + if multiplayer.has_multiplayer_peer() and not multiplayer.is_server(): + # Client should wait for server to sync position + return + var keydoor_open_offset = Vector2.ZERO match direction: "Up": @@ -805,5 +1191,93 @@ func teleportPlayer(body: Node2D): keydoor_open_offset = Vector2(16, 0) # Open is 16px LEFT from closed "Right": keydoor_open_offset = Vector2(-16, 0) # Open is 16px RIGHT from closed - body.position = self.global_position + keydoor_open_offset + + var new_position = self.global_position + keydoor_open_offset + + if body.is_in_group("player"): + # Player teleportation - set position on server and sync to all clients + if multiplayer.has_multiplayer_peer() and multiplayer.is_server(): + # Server: set position directly and sync to all clients + body.global_position = new_position + # Also reset velocity to prevent player from moving back + if "velocity" in body: + body.velocity = Vector2.ZERO + # Sync position to all clients (including the teleported player's client) + if body.has_method("_sync_teleport_position") and body.can_send_rpcs and body.is_inside_tree(): + body._sync_teleport_position.rpc(new_position) + else: + # Single-player: just set position + body.global_position = new_position + if "velocity" in body: + body.velocity = Vector2.ZERO + else: + # Non-player teleportation (shouldn't happen, but handle it) + body.global_position = new_position pass + +@rpc("authority", "reliable") +func _sync_door_open(): + # Client receives door open RPC - open the door locally + if multiplayer.has_multiplayer_peer() and not multiplayer.is_server(): + # Only open if door is closed (avoid reopening already open doors) + var distance_to_closed = position.distance_to(closed_position) if closed_position != Vector2.ZERO else 999.0 + var is_actually_open = distance_to_closed > 5.0 + + if not is_actually_open and not is_opening: + # Door is closed - open it + if closed_position != Vector2.ZERO: + position = closed_position + global_position = closed_position + is_closed = true + set_collision_layer_value(7, true) + + animation_start_position = position + is_opening = true + is_closing = false + move_timer = 0.0 + + # Play sound effect on client + if type == "KeyDoor": + $SfxOpenKeyDoor.play() + elif type == "GateDoor": + $SfxOpenGateDoor.play() + else: + $SfxOpenStoneDoor.play() + + print("Door: Client received door open RPC for ", name, " - starting open animation") + +@rpc("authority", "reliable") +func _sync_puzzle_solved(is_solved: bool): + # Client receives puzzle solved state sync + if multiplayer.has_multiplayer_peer() and not multiplayer.is_server(): + puzzle_solved = is_solved + if is_solved: + enemies_defeated = true + switches_activated = true + print("Door: Client received puzzle_solved sync for ", name, " - puzzle_solved: ", is_solved) + +@rpc("authority", "reliable") +func _sync_door_close(): + # Client receives door close RPC - close the door locally + if multiplayer.has_multiplayer_peer() and not multiplayer.is_server(): + # Only close if door is open (avoid reclosing already closed doors) + var distance_to_closed = position.distance_to(closed_position) if closed_position != Vector2.ZERO else 999.0 + var is_actually_at_closed = distance_to_closed < 5.0 + + if not is_actually_at_closed and not is_closing: + # Door is open - close it + var expected_open_pos = closed_position + open_offset + var distance_to_open = position.distance_to(expected_open_pos) + + if distance_to_open > 10.0: + animation_start_position = expected_open_pos + position = expected_open_pos + global_position = expected_open_pos + else: + animation_start_position = position + + is_opening = false + is_closing = true + move_timer = 0.0 + + print("Door: Client received door close RPC for ", name, " - starting close animation") diff --git a/src/scripts/dungeon_generator.gd b/src/scripts/dungeon_generator.gd index 98aae91..5df64d7 100644 --- a/src/scripts/dungeon_generator.gd +++ b/src/scripts/dungeon_generator.gd @@ -289,11 +289,14 @@ func generate_dungeon(map_size: Vector2i, seed_value: int = 0, level: int = 1) - # 11. Place blocking doors on existing tile doors (after everything else is created) # IMPORTANT: This must happen BEFORE placing enemies, so we know which rooms have monster spawner puzzles - var blocking_doors = _place_blocking_doors(all_rooms, all_doors, grid, map_size, rng, start_room_index, exit_room_index) + var blocking_doors_result = _place_blocking_doors(all_rooms, all_doors, grid, map_size, rng, start_room_index, exit_room_index) + var blocking_doors = blocking_doors_result.doors if blocking_doors_result.has("doors") else blocking_doors_result + var room_puzzle_data = blocking_doors_result.puzzle_data if blocking_doors_result.has("puzzle_data") else {} # Extract rooms with monster spawner puzzles (these should NOT have pre-spawned enemies) var rooms_with_spawner_puzzles = [] - for door_data in blocking_doors: + var blocking_doors_array = blocking_doors if blocking_doors is Array else blocking_doors.doors + for door_data in blocking_doors_array: if "puzzle_type" in door_data and door_data.puzzle_type == "enemy": if "blocking_room" in door_data and not door_data.blocking_room.is_empty(): var puzzle_room = door_data.blocking_room @@ -333,7 +336,7 @@ func generate_dungeon(map_size: Vector2i, seed_value: int = 0, level: int = 1) - var room = all_rooms[i] # Skip start room and exit room if i != start_room_index and i != exit_room_index: - var room_objects = _place_interactable_objects_in_room(room, grid, map_size, all_doors, all_enemies, rng) + var room_objects = _place_interactable_objects_in_room(room, grid, map_size, all_doors, all_enemies, rng, room_puzzle_data) all_interactable_objects.append_array(room_objects) # NOTE: Stairs placement was moved earlier (step 7.5, before torches) to prevent torch overlap @@ -550,6 +553,11 @@ func _create_corridor_between_rooms(room1: Dictionary, room2: Dictionary, grid: grid[x][y] = 2 # Door area (replaces wall) # Use door tile coordinates (10,2) + offset for 2x3 door tile_grid[x][y] = door_tile_start + Vector2i(door_dx, door_dy) + if door_dx == 0 and door_dy == 1: + grid[x][y] = 1 # Floor + var floor_tile = FLOOR_TILES[rng.randi() % FLOOR_TILES.size()] + tile_grid[x][y] = floor_tile + # Also create door on LEFT wall of right room (if there's a gap) if corridor_length > 0: @@ -564,6 +572,10 @@ func _create_corridor_between_rooms(room1: Dictionary, room2: Dictionary, grid: grid[x][y] = 2 # Door area (replaces wall) # Use door tile coordinates (5,2) + offset for 2x3 door tile_grid[x][y] = right_door_tile_start + Vector2i(door_dx, door_dy) + if door_dx == 1 and door_dy == 1: + grid[x][y] = 1 # Floor + var floor_tile = FLOOR_TILES[rng.randi() % FLOOR_TILES.size()] + tile_grid[x][y] = floor_tile # CRITICAL: room1 = room the door is ON (left room for horizontal doors) # room2 = room the door leads TO (right room for horizontal doors) @@ -633,6 +645,10 @@ func _create_corridor_between_rooms(room1: Dictionary, room2: Dictionary, grid: grid[x][y] = 2 # Door area (replaces wall) # Use door tile coordinates (7,5) + offset for 3x2 door tile_grid[x][y] = door_tile_start + Vector2i(door_dx, door_dy) + if door_dx == 1 and door_dy == 0: + grid[x][y] = 1 # Floor + var floor_tile = FLOOR_TILES[rng.randi() % FLOOR_TILES.size()] + tile_grid[x][y] = floor_tile # Also create door on TOP wall of bottom room (if there's a gap) if corridor_length > 0: @@ -647,6 +663,10 @@ func _create_corridor_between_rooms(room1: Dictionary, room2: Dictionary, grid: grid[x][y] = 2 # Door area (replaces wall) # Use door tile coordinates (7,0) + offset for 3x2 door tile_grid[x][y] = bottom_door_tile_start + Vector2i(door_dx, door_dy) + if door_dx == 1 and door_dy == 1: + grid[x][y] = 1 # Floor + var floor_tile = FLOOR_TILES[rng.randi() % FLOOR_TILES.size()] + tile_grid[x][y] = floor_tile # CRITICAL: room1 = room the door is ON (top room for vertical doors) # room2 = room the door leads TO (bottom room for vertical doors) @@ -744,35 +764,122 @@ func _place_torches_in_room(room: Dictionary, grid: Array, all_doors: Array, _ma # We need to check all valid Y positions on the left/right walls and place at torch_y_from_floor # Left/right walls are valid from room.y + 2 to room.y + room.h - 2 (skipping 2-tile corners) for y in range(room.y + 2, room.y + room.h - 2): - # Check if this is a valid left wall position (use room.x + 1, the right part of the left wall) - if _is_valid_torch_position(room.x + 1, y, grid, all_doors): - # Place at the same distance from floor as top wall torches + # Check if this is a valid left wall position + # Left wall has 2 tiles: room.x and room.x + 1 + # Check both tiles to ensure we're not placing on a door + # Use room.x + 1 (the right part of the left wall) for torch placement + if _is_valid_torch_position(room.x, y, grid, all_doors) and _is_valid_torch_position(room.x + 1, y, grid, all_doors): + # Calculate torch world position # X position is on the left wall: (room.x + 1) * tile_size + tile_size / 2.0 # Move it further to the left (negative X) to position it better on the wall var left_wall_x = (room.x + 1) * tile_size + tile_size / 2.0 - 8 # Move 8 pixels to the left # Y position should be at the same distance from floor: y * tile_size + tile_size / 2.0 + 8 var left_wall_y = y * tile_size + tile_size / 2.0 + torch_y_offset var world_pos = Vector2(left_wall_x, left_wall_y) - valid_wall_positions.append({"pos": world_pos, "wall": "left", "rotation": 270}) - break # Only add one torch per wall + + # CRITICAL: Check if torch's 16x16 pixel bounding box overlaps with any door + # Torch is 16x16 pixels, so it extends 8 pixels in each direction from its center + # Torch bounding box: from (left_wall_x - 8, left_wall_y - 8) to (left_wall_x + 8, left_wall_y + 8) + var torch_bbox_min_x = left_wall_x - 8 + var torch_bbox_max_x = left_wall_x + 8 + var torch_bbox_min_y = left_wall_y - 8 + var torch_bbox_max_y = left_wall_y + 8 + + # Check if torch bounding box overlaps with any door's bounding box + # Only check doors that are on the left wall of this room (dir="W") + var overlaps_door = false + var tile_size_check = 16 + for door in all_doors: + var door_dir = door.dir if "dir" in door else "" + if door_dir != "W": # Only check left doors (dir="W") + continue + + # Check if this door is on the left wall of this room + # Left door is on the left wall, so door.x should be room.x (the left tile of the left wall) + var door_x_match = (door.x == room.x) + if not door_x_match: + continue # This door is not on this room's left wall + + # Left door (dir="W"): 2 tiles wide, 3 tiles tall + # Door position is at door.x, door.y (upper-left tile) + # Door occupies tiles: x from door.x to door.x + 2, y from door.y to door.y + 3 + # Door world bounding box: from (door.x * 16, door.y * 16) to ((door.x + 2) * 16, (door.y + 3) * 16) + var door_min_x = door.x * tile_size_check + var door_max_x = (door.x + 2) * tile_size_check + var door_min_y = door.y * tile_size_check + var door_max_y = (door.y + 3) * tile_size_check + + # Check if torch bounding box overlaps with door bounding box + if not (torch_bbox_max_x < door_min_x or torch_bbox_min_x > door_max_x or \ + torch_bbox_max_y < door_min_y or torch_bbox_min_y > door_max_y): + overlaps_door = true + break + + if not overlaps_door: + valid_wall_positions.append({"pos": world_pos, "wall": "left", "rotation": 270}) + break # Only add one torch per wall # Right wall (2 tiles wide: room.x + room.w - 2 and room.x + room.w - 1) # Place torches at the same distance from floor as top wall torches # Right wall has two parts: room.x + room.w - 2 (left part, actual wall) and room.x + room.w - 1 (right part, also corner) # We should place torches on room.x + room.w - 2 (the left part of the 2-tile wide right wall), not on room.x + room.w - 1 (corner) # Check all valid Y positions on the right wall + # CRITICAL: Check both tiles of the right wall (similar to left wall) to ensure we're not placing on a door for y in range(room.y + 2, room.y + room.h - 2): - # Check if this is a valid right wall position (use room.x + room.w - 2, the left part of the right wall) - if _is_valid_torch_position(room.x + room.w - 2, y, grid, all_doors): - # Place at the same distance from floor as top wall torches + # Check if this is a valid right wall position + # Right wall has 2 tiles: room.x + room.w - 2 (left part) and room.x + room.w - 1 (right part/corner) + # Check both tiles to ensure we're not placing on a door + # Use room.x + room.w - 2 (the left part of the right wall) for torch placement + if _is_valid_torch_position(room.x + room.w - 2, y, grid, all_doors) and _is_valid_torch_position(room.x + room.w - 1, y, grid, all_doors): + # Calculate torch world position # X position is on the right wall: (room.x + room.w - 2) * tile_size + tile_size / 2.0 # Move it further to the right (positive X) to position it better on the wall var right_wall_x = (room.x + room.w - 2) * tile_size + tile_size / 2.0 + 8 # Move 8 pixels to the right # Y position should be at the same distance from floor: y * tile_size + tile_size / 2.0 + 8 var right_wall_y = y * tile_size + tile_size / 2.0 + torch_y_offset var world_pos = Vector2(right_wall_x, right_wall_y) - valid_wall_positions.append({"pos": world_pos, "wall": "right", "rotation": 90}) - break # Only add one torch per wall + + # CRITICAL: Check if torch's 16x16 pixel bounding box overlaps with any door + # Torch is 16x16 pixels, so it extends 8 pixels in each direction from its center + # Torch bounding box: from (right_wall_x - 8, right_wall_y - 8) to (right_wall_x + 8, right_wall_y + 8) + var torch_bbox_min_x = right_wall_x - 8 + var torch_bbox_max_x = right_wall_x + 8 + var torch_bbox_min_y = right_wall_y - 8 + var torch_bbox_max_y = right_wall_y + 8 + + # Check if torch bounding box overlaps with any door's bounding box + # Only check doors that are on the right wall of this room (dir="E") + var overlaps_door = false + var tile_size_check = 16 + for door in all_doors: + var door_dir = door.dir if "dir" in door else "" + if door_dir != "E": # Only check right doors (dir="E") + continue + + # Check if this door is on the right wall of this room + # Right door is on the right wall, so door.x should be room.x + room.w - 2 (the left part of the right wall) + var door_x_match = (door.x == room.x + room.w - 2) + if not door_x_match: + continue # This door is not on this room's right wall + + # Right door (dir="E"): 2 tiles wide, 3 tiles tall + # Door position is at door.x, door.y (upper-left tile) + # Door occupies tiles: x from door.x to door.x + 2, y from door.y to door.y + 3 + # Door world bounding box: from (door.x * 16, door.y * 16) to ((door.x + 2) * 16, (door.y + 3) * 16) + var door_min_x = door.x * tile_size_check + var door_max_x = (door.x + 2) * tile_size_check + var door_min_y = door.y * tile_size_check + var door_max_y = (door.y + 3) * tile_size_check + + # Check if torch bounding box overlaps with door bounding box + if not (torch_bbox_max_x < door_min_x or torch_bbox_min_x > door_max_x or \ + torch_bbox_max_y < door_min_y or torch_bbox_min_y > door_max_y): + overlaps_door = true + break + + if not overlaps_door: + valid_wall_positions.append({"pos": world_pos, "wall": "right", "rotation": 90}) + break # Only add one torch per wall # Randomly select torch positions if valid_wall_positions.size() == 0: @@ -813,13 +920,25 @@ func _is_valid_torch_position(x: int, y: int, grid: Array, all_doors: Array) -> for door in all_doors: var door_x = door.x var door_y = door.y - var door_w = door.w if "w" in door else 2 # Default door width (2 or 3) - var door_h = door.h if "h" in door else 3 # Default door height (2 or 3) + var door_dir = door.dir if "dir" in door else "" + + # Calculate actual door dimensions based on direction + # Horizontal doors (E/W): actually 2-3 tiles wide and 3 tiles tall in grid + # Vertical doors (N/S): actually 3 tiles wide and 2-3 tiles tall in grid + var door_w = door.w if "w" in door else 2 + var door_h = door.h if "h" in door else 3 + var actual_w = door_w + var actual_h = door_h + + if door_dir == "E" or door_dir == "W": + # Horizontal door: w is correct (2 or 3), but h is actually 3 in grid (not 1) + actual_h = 3 + elif door_dir == "N" or door_dir == "S": + # Vertical door: h is correct (2 or 3), but w is actually 3 in grid (not 1) + actual_w = 3 # Check if (x, y) is within door area - # For horizontal doors: door.w is width (2 or 3), door.h is 1 - # For vertical doors: door.w is 1, door.h is height (2 or 3) - if x >= door_x and x < door_x + door_w and y >= door_y and y < door_y + door_h: + if x >= door_x and x < door_x + actual_w and y >= door_y and y < door_y + actual_h: return false return true @@ -1161,14 +1280,34 @@ func _place_enemies_in_room(room: Dictionary, grid: Array, map_size: Vector2i, r else: move_speed = rng.randf_range(50.0, 80.0) # Other enemies (humanoids): faster - enemies.append({ + var enemy_data = { "type": enemy_type, "position": position, "room": room, # Store reference to room for AI "max_health": max_health, "move_speed": move_speed, "damage": damage - }) + } + + # If it's a humanoid enemy, randomize the humanoid_type + if enemy_type.ends_with("enemy_humanoid.tscn"): + # Random humanoid type: 0=CYCLOPS, 1=DEMON, 2=HUMANOID, 3=NIGHTELF, 4=GOBLIN, 5=ORC, 6=SKELETON + # Weight towards common types (goblins, humans, orcs) - 40% goblin, 30% humanoid, 20% orc, 10% other + var rand_val = rng.randf() + var humanoid_type = 2 # Default to HUMANOID + if rand_val < 0.4: + humanoid_type = 4 # GOBLIN (40%) + elif rand_val < 0.7: + humanoid_type = 2 # HUMANOID (30%) + elif rand_val < 0.9: + humanoid_type = 5 # ORC (20%) + else: + # 10% for other types (distributed evenly) + var other_types = [0, 1, 3, 6] # CYCLOPS, DEMON, NIGHTELF, SKELETON + humanoid_type = other_types[rng.randi() % other_types.size()] + enemy_data["humanoid_type"] = humanoid_type + + enemies.append(enemy_data) return enemies @@ -1671,22 +1810,39 @@ func _force_place_stairs(exit_room: Dictionary, grid: Array, tile_grid: Array, m print("DungeonGenerator: Force placed ", stairs_dir, " stairs at tile (", stairs_data.x, ",", stairs_data.y, ") world pos: ", stairs_data.world_pos) return stairs_data -func _place_interactable_objects_in_room(room: Dictionary, grid: Array, map_size: Vector2i, all_doors: Array, all_enemies: Array, rng: RandomNumberGenerator) -> Array: +func _place_interactable_objects_in_room(room: Dictionary, grid: Array, map_size: Vector2i, all_doors: Array, all_enemies: Array, rng: RandomNumberGenerator, room_puzzle_data: Dictionary = {}) -> Array: # Place interactable objects in a room # Small rooms (7-8 tiles): 0-1 objects # Medium rooms (9-10 tiles): 0-3 objects # Large rooms (11-12 tiles): 0-8 objects # Returns array of interactable object data dictionaries + # CRITICAL: If room has "switch_pillar" puzzle, MUST spawn at least 1 Pillar (regardless of room size) var objects = [] var tile_size = 16 + # Check if room has a "switch_pillar" puzzle - if so, we MUST spawn at least 1 pillar + var has_pillar_switch_puzzle = false + if room_puzzle_data.size() > 0: + for puzzle_room in room_puzzle_data.keys(): + # Compare rooms by values (x, y, w, h) + if puzzle_room.x == room.x and puzzle_room.y == room.y and \ + puzzle_room.w == room.w and puzzle_room.h == room.h: + var puzzle_info = room_puzzle_data[puzzle_room] + print("DungeonGenerator: Checking room (", room.x, ",", room.y, ") - puzzle_room (", puzzle_room.x, ",", puzzle_room.y, ") puzzle_type: ", puzzle_info.type) + if puzzle_info.type == "switch_pillar": + has_pillar_switch_puzzle = true + print("DungeonGenerator: Room (", room.x, ",", room.y, ") has pillar switch puzzle - will spawn at least 1 pillar") + break + else: + print("DungeonGenerator: room_puzzle_data is empty for room (", room.x, ",", room.y, ")") + # Calculate room floor area (excluding walls) var floor_w = room.w - 4 # Excluding 2-tile walls on each side var floor_h = room.h - 4 var floor_area = floor_w * floor_h # Determine max objects based on room size - var max_objects: int + var max_objects: int = 0 if floor_area <= 16: # Small rooms (4x4 or smaller floor) max_objects = 1 elif floor_area <= 36: # Medium rooms (up to 6x6 floor) @@ -1696,6 +1852,14 @@ func _place_interactable_objects_in_room(room: Dictionary, grid: Array, map_size var num_objects = rng.randi_range(0, max_objects) + # CRITICAL: If room has pillar switch puzzle, ensure we spawn at least 1 pillar + # This MUST happen regardless of room size + if has_pillar_switch_puzzle: + # Set minimum to 1 if num_objects is 0 + if num_objects == 0: + num_objects = 1 + # The pillar will be placed FIRST in the objects list (before any other objects) + # Available object types and their setup functions var object_types = [ {"type": "Pot", "setup": "setup_pot"}, @@ -1737,23 +1901,57 @@ func _place_interactable_objects_in_room(room: Dictionary, grid: Array, map_size if _is_valid_interactable_position(world_pos, all_doors, all_enemies, room): valid_positions.append(world_pos) + # Early return if no valid positions (unless pillar is required, but that's handled below) if valid_positions.size() == 0: + if has_pillar_switch_puzzle: + push_warning("DungeonGenerator: Room (", room.x, ",", room.y, ") has pillar switch puzzle but NO valid positions! Cannot place pillar.") return objects # Shuffle positions to randomize placement valid_positions.shuffle() - # Place objects - for i in range(min(num_objects, valid_positions.size())): - var object_type_data = object_types[rng.randi() % object_types.size()] - var position = valid_positions[i] - + # CRITICAL: If room has pillar switch puzzle, the FIRST object MUST be a Pillar + if has_pillar_switch_puzzle: + # Place pillar as the first object + var pillar_type_data = {"type": "Pillar", "setup": "setup_pillar"} objects.append({ - "type": object_type_data.type, - "setup_function": object_type_data.setup, - "position": position, + "type": pillar_type_data.type, + "setup_function": pillar_type_data.setup, + "position": valid_positions[0], "room": room }) + + # Place remaining objects (skip first position since it's used by the pillar) + # We need to place num_objects - 1 more objects (since pillar counts as 1) + var remaining_objects = num_objects - 1 + var positions_index = 1 # Start from second position + for i in range(min(remaining_objects, valid_positions.size() - 1)): + if positions_index >= valid_positions.size(): + break # No more valid positions + var object_type_data = object_types[rng.randi() % object_types.size()] + # Skip Pillar type for remaining objects (already placed one) + while object_type_data.type == "Pillar": + object_type_data = object_types[rng.randi() % object_types.size()] + + objects.append({ + "type": object_type_data.type, + "setup_function": object_type_data.setup, + "position": valid_positions[positions_index], + "room": room + }) + positions_index += 1 + else: + # Normal placement: no pillar requirement + for i in range(min(num_objects, valid_positions.size())): + var object_type_data = object_types[rng.randi() % object_types.size()] + var position = valid_positions[i] + + objects.append({ + "type": object_type_data.type, + "setup_function": object_type_data.setup, + "position": position, + "room": room + }) return objects @@ -1872,7 +2070,7 @@ func _find_rooms_before_door(door: Dictionary, start_room: Dictionary, _all_room return rooms_before_door -func _place_blocking_doors(all_rooms: Array, all_doors: Array, grid: Array, map_size: Vector2i, rng: RandomNumberGenerator, start_room_index: int, exit_room_index: int) -> Array: +func _place_blocking_doors(all_rooms: Array, all_doors: Array, grid: Array, map_size: Vector2i, rng: RandomNumberGenerator, start_room_index: int, exit_room_index: int) -> Dictionary: # Place blocking doors on existing tile doors # Returns array of blocking door data dictionaries var blocking_doors = [] @@ -1892,6 +2090,7 @@ func _place_blocking_doors(all_rooms: Array, all_doors: Array, grid: Array, map_ # STEP 1: For each room (except start/exit), randomly decide if it has a door-puzzle var puzzle_room_chance = 0.4 # 40% chance per room + print("DungeonGenerator: Assigning puzzles to rooms (", all_rooms.size(), " total rooms, excluding start/exit)") for i in range(all_rooms.size()): if i == start_room_index or i == exit_room_index: continue # Skip start and exit rooms @@ -1899,47 +2098,40 @@ func _place_blocking_doors(all_rooms: Array, all_doors: Array, grid: Array, map_ var room = all_rooms[i] if rng.randf() < puzzle_room_chance: + print("DungeonGenerator: Room (", room.x, ", ", room.y, ") selected for puzzle assignment") # This room has a puzzle! # CRITICAL SAFETY CHECK: Never assign puzzles to start or exit rooms # Double-check even though we skip them in the loop if i == start_room_index or i == exit_room_index: continue - # Find all doors that lead OUT OF this room (doors IN this room that exit to other rooms) - # These are doors where room1 == this room (doors that start FROM this puzzle room) - var doors_out_of_room = [] + # Find all doors that are connected to this puzzle room + var doors_in_room = [] for door in all_doors: - # CRITICAL: Find doors where room1 == this room (doors that lead OUT OF this room) - if not "room1" in door or not door.room1 or door.room1.is_empty(): - continue + var door_room1 = door.room1 if ("room1" in door and door.room1 and not door.room1.is_empty()) else null + var door_room2 = door.room2 if ("room2" in door and door.room2 and not door.room2.is_empty()) else null - var door_room1 = door.room1 - # Compare rooms by position and size (value comparison, not reference) - var door_leads_out_of_this_room = (door_room1.x == room.x and door_room1.y == room.y and \ - door_room1.w == room.w and door_room1.h == room.h) + var room_matches = false - if door_leads_out_of_this_room: - # CRITICAL: Also check that this door doesn't lead into start or exit room - if not "room2" in door or not door.room2 or door.room2.is_empty(): - continue - - var door_room2 = door.room2 - var door_room2_index = -1 - for j in range(all_rooms.size()): - var check_room = all_rooms[j] - if check_room.x == door_room2.x and check_room.y == door_room2.y and \ - check_room.w == door_room2.w and check_room.h == door_room2.h: - door_room2_index = j - break - - # Skip if door leads into start or exit room - if door_room2_index == start_room_index or door_room2_index == exit_room_index: - continue - - doors_out_of_room.append(door) + # Check if room1 matches puzzle room + if door_room1: + room_matches = (door_room1.x == room.x and door_room1.y == room.y and \ + door_room1.w == room.w and door_room1.h == room.h) + + # Check if room2 matches puzzle room + if not room_matches and door_room2: + room_matches = (door_room2.x == room.x and door_room2.y == room.y and \ + door_room2.w == room.w and door_room2.h == room.h) + + # Door is connected to puzzle room + if room_matches: + doors_in_room.append(door) - if doors_out_of_room.size() == 0: - continue # No doors leading out of this room, skip + if doors_in_room.size() == 0: + print("DungeonGenerator: Room (", room.x, ", ", room.y, ") has no doors connected - skipping puzzle assignment") + continue # No doors connected to this room, skip + + print("DungeonGenerator: Room (", room.x, ", ", room.y, ") has ", doors_in_room.size(), " doors - assigning puzzle") # Decide puzzle type: 33% walk switch, 33% pillar switch, 33% enemy spawner (if room is large enough) var can_have_enemies = false @@ -1959,13 +2151,16 @@ func _place_blocking_doors(all_rooms: Array, all_doors: Array, grid: Array, map_ # Store puzzle data for this room room_puzzle_data[room] = { "type": puzzle_type, - "doors": doors_out_of_room + "doors": doors_in_room } + print("DungeonGenerator: Stored puzzle data for room (", room.x, ", ", room.y, ") - type: ", puzzle_type, ", doors: ", doors_in_room.size()) # Mark these doors as assigned - for door in doors_out_of_room: + for door in doors_in_room: assigned_doors.append(door) + print("DungeonGenerator: Assigned puzzles to ", room_puzzle_data.size(), " rooms") + # STEP 2: Create blocking doors for rooms with puzzles # CRITICAL: Blocking doors should ONLY be placed ON THE DOORS IN THE PUZZLE ROOM # NEVER create blocking doors for rooms that are NOT in room_puzzle_data! @@ -2073,95 +2268,71 @@ func _place_blocking_doors(all_rooms: Array, all_doors: Array, grid: Array, map_ # For now, create blocking doors for ALL doors in the puzzle room print("DungeonGenerator: Creating blocking doors for room (", room.x, ", ", room.y, ") with ", doors_in_room.size(), " doors, puzzle type: ", puzzle_type, ", puzzle_element type: ", puzzle_element_data.type) for door in doors_in_room: - # CRITICAL: Verify this door is in the puzzle room (already checked above, but double-check) - if not "room1" in door or not door.room1 or door.room1.is_empty(): - push_error("DungeonGenerator: ERROR - Door in puzzle room (", room.x, ", ", room.y, ") has no room1! Skipping door.") - continue + # Determine direction based on which WALL of the PUZZLE ROOM the door is on + var direction = _determine_door_direction_for_puzzle_room(door, room, all_rooms) - var door_room1 = door.room1 - # CRITICAL: Verify door.room1 matches the puzzle room EXACTLY (value comparison, not reference) - var door_in_puzzle_room = (door_room1.x == room.x and door_room1.y == room.y and \ - door_room1.w == room.w and door_room1.h == room.h) + # CRITICAL: door.x and door.y are the position in room1, not necessarily in puzzle room + # Need to calculate the correct position on the puzzle room's wall + var door_room2 = door.room2 if ("room2" in door and door.room2 and not door.room2.is_empty()) else null - if not door_in_puzzle_room: - push_error("DungeonGenerator: ERROR - Door room1 (", door_room1.x, ", ", door_room1.y, ") does NOT match puzzle room (", room.x, ", ", room.y, ")! Skipping door.") - continue # This door is not in the puzzle room, skip - DO NOT CREATE DOOR + # Determine if puzzle room is room2 (if so, door position needs adjustment) + var puzzle_is_room2 = false + if door_room2: + puzzle_is_room2 = (door_room2.x == room.x and door_room2.y == room.y and \ + door_room2.w == room.w and door_room2.h == room.h) - # CRITICAL: Verify this door is not already assigned to another puzzle room - # (This should never happen, but safety check) - if door in assigned_doors: - # Check if this door was assigned to a different room - var already_in_different_room = false - for other_room in room_puzzle_data.keys(): - if other_room.x != room.x or other_room.y != room.y: - # This is a different puzzle room - check if door belongs to it - var other_puzzle_info = room_puzzle_data[other_room] - if door in other_puzzle_info.doors: - already_in_different_room = true - break - - if already_in_different_room: - push_error("DungeonGenerator: ERROR - Door already assigned to a different puzzle room! Skipping door.") - continue # Door is already in another puzzle room - DO NOT CREATE DOOR HERE - - # CRITICAL: Check that this door doesn't lead into start/exit room - if "room2" in door and door.room2 and not door.room2.is_empty(): - var door_room2 = door.room2 - var door_room2_index = -1 - for j in range(all_rooms.size()): - var check_room = all_rooms[j] - if check_room.x == door_room2.x and check_room.y == door_room2.y and \ - check_room.w == door_room2.w and check_room.h == door_room2.h: - door_room2_index = j - break - - if door_room2_index == start_room_index or door_room2_index == exit_room_index: - print("DungeonGenerator: ERROR - Door leads into start/exit room! Skipping blocking door creation.") - continue - - # Determine direction based on door's dir field (E/W/N/S) or calculate from room positions - var direction = "" - if "dir" in door: - # Map door direction to our direction enum - match door.dir: - "E": direction = "Right" - "W": direction = "Left" - "N": direction = "Up" - "S": direction = "Down" - _: direction = _determine_door_direction(door, all_rooms) - else: - direction = _determine_door_direction(door, all_rooms) - - # Calculate door position based on new rules: - # Open state positions: - # - UP: tile 2 (row 0, col 2) = door_x+2, door_y+0 - # - RIGHT: tile 4 (col 1, row 1) = door_x+1, door_y+1 - # - DOWN: tile 5 (row 1, col 1) = door_x+1, door_y+1 (middle column, not rightmost) - # - LEFT: tile 3 (col 1, row 0) = door_x+1, door_y+0 + # Calculate door position on the puzzle room's wall var door_tile_x = door.x var door_tile_y = door.y var open_tile_x = door_tile_x var open_tile_y = door_tile_y + # If puzzle room is room2, the door position needs to be moved to the puzzle room's wall + if puzzle_is_room2: + # Door is connecting from room1 to puzzle room (room2) + # We need to calculate the position on puzzle room's wall based on door direction + match direction: + "Up": + # Door on top wall of puzzle room - door.y should be at puzzle_room.y + open_tile_x = door_tile_x # Keep same X (horizontal position) + open_tile_y = room.y # Top wall of puzzle room + "Down": + # Door on bottom wall of puzzle room - door.y should be at puzzle_room.y + room.h - 1 + open_tile_x = door_tile_x # Keep same X (horizontal position) + open_tile_y = room.y + room.h - 1 # Bottom wall of puzzle room + "Left": + # Door on left wall of puzzle room - door.x should be at puzzle_room.x + open_tile_x = room.x # Left wall of puzzle room + open_tile_y = door_tile_y # Keep same Y (vertical position) + "Right": + # Door on right wall of puzzle room - door.x should be at puzzle_room.x + room.w - 1 + open_tile_x = room.x + room.w - 1 # Right wall of puzzle room + open_tile_y = door_tile_y # Keep same Y (vertical position) + # else: Puzzle room is room1 - door position is already in puzzle room, use as-is + + # Adjust position based on door direction and offset from wall + # These offsets are relative to the door's position on the wall match direction: "Up": - # Door Up (3x2): Open at tile 2 (row 0, col 2) = door_x+2, door_y+0 - open_tile_x = door_tile_x + 1 # col 2 (middle column, not rightmost) - open_tile_y = door_tile_y + 0 # row 0 (top row) + # Door Up (3x2): Open at middle column, top row + # open_tile_x is already on the wall, adjust to middle column + open_tile_x = open_tile_x + 1 # Middle column (3 tiles wide, so +1 from left edge) + open_tile_y = open_tile_y + 0 # Already at top wall (row 0) "Right": - # Door Right (2x3): Open at tile 4 (col 1, row 1) = door_x+1, door_y+1 - open_tile_x = door_tile_x + 1 # col 1 (right column) - open_tile_y = door_tile_y + 1 # row 1 (middle row) + # Door Right (2x3): Open at right column, middle row + # open_tile_x is already on the wall, adjust to right column + open_tile_x = open_tile_x + 1 # Right column (already at wall) + open_tile_y = open_tile_y + 1 # Middle row (3 tiles tall, so +1 from top) "Down": - # Door Down (3x2): StoneDoor/GateDoor start OPEN at (col 1, row 1) = door_x+1, door_y+1 - # When entering room, they CLOSE to (col 1, row 0) = door_x+1, door_y+0 (16px up from open) - # When solving puzzle, they OPEN back to (col 1, row 1) = door_x+1, door_y+1 - open_tile_x = door_tile_x + 1 # col 1 (middle column, not rightmost) - open_tile_y = door_tile_y + 1 # row 1 (bottom row - OPEN state, closer to wall) + # Door Down (3x2): Open at middle column, bottom row + # open_tile_x is already on the wall, adjust to middle column + open_tile_x = open_tile_x + 1 # Middle column (3 tiles wide, so +1 from left edge) + open_tile_y = open_tile_y + 1 # Bottom row (2 tiles tall, so +1 from top edge) "Left": - # Door Left (2x3): Open at tile 3 (col 1, row 0) = door_x+1, door_y+0 - open_tile_x = door_tile_x + 0 # col 0 (left column) - open_tile_y = door_tile_y + 1 # row 1 (middle row) + # Door Left (2x3): Open at left column, middle row + # open_tile_x is already on the wall, adjust to left column + open_tile_x = open_tile_x + 0 # Left column (already at wall) + open_tile_y = open_tile_y + 1 # Middle row (3 tiles tall, so +1 from top) # Calculate world position from open tile (center of tile) # This is the OPEN position - door will start here and move to CLOSED position when entering room @@ -2190,18 +2361,10 @@ func _place_blocking_doors(all_rooms: Array, all_doors: Array, grid: Array, map_ "puzzle_type": puzzle_type # "switch_walk", "switch_pillar", or "enemy" } - # CRITICAL: Store room1 and room2 from original door for verification - # Ensure room1 matches blocking_room (puzzle room) - if "room1" in door and door.room1: - door_data.original_room1 = door.room1 - # CRITICAL: Verify room1 matches puzzle room - if not (door.room1.x == room.x and door.room1.y == room.y and door.room1.w == room.w and door.room1.h == room.h): - push_error("DungeonGenerator: ERROR - door.room1 doesn't match puzzle room! room1: (", door.room1.x, ",", door.room1.y, "), puzzle: (", room.x, ",", room.y, ")") - if "room2" in door and door.room2: - door_data.original_room2 = door.room2 + # Store puzzle room as room1 for blocking doors + door_data.original_room1 = room # Puzzle room is always room1 for blocking doors - var door_room2_str = "(" + str(door.room2.x) + "," + str(door.room2.y) + ")" if "room2" in door and door.room2 else "(?,?)" - print("DungeonGenerator: Creating blocking door for puzzle room (", room.x, ", ", room.y, ") - door.room1: (", door_room1.x, ",", door_room1.y, "), door.room2: ", door_room2_str, ", direction: ", direction, ", open_tile: (", open_tile_x, ",", open_tile_y, ")") + print("DungeonGenerator: Creating blocking door for puzzle room (", room.x, ", ", room.y, ") - direction: ", direction, ", open_tile: (", open_tile_x, ",", open_tile_y, ")") # CRITICAL: Add puzzle-specific data from the puzzle_element_data created above (shared across all doors in room) # Only add door if puzzle element data is valid @@ -2251,21 +2414,9 @@ func _place_blocking_doors(all_rooms: Array, all_doors: Array, grid: Array, map_ push_error("DungeonGenerator: ERROR - Door blocking_room (", door_data.blocking_room.x, ",", door_data.blocking_room.y, ") doesn't match puzzle room (", room.x, ",", room.y, ")! This door is for wrong room! SKIPPING DOOR") continue # Skip this door - it's for the wrong room - # FINAL CRITICAL SAFETY CHECK: Verify door.room1 matches puzzle room (door should be IN puzzle room) - if not "room1" in door or not door.room1 or door.room1.is_empty(): - push_error("DungeonGenerator: ERROR - Door has no room1! Cannot verify it's in puzzle room! SKIPPING DOOR") - continue - - var final_room1_check = (door.room1.x == room.x and door.room1.y == room.y and \ - door.room1.w == room.w and door.room1.h == room.h) - - if not final_room1_check: - push_error("DungeonGenerator: ERROR - Door room1 (", door.room1.x, ",", door.room1.y, ") doesn't match puzzle room (", room.x, ",", room.y, ")! This door is NOT in the puzzle room! SKIPPING DOOR") - continue # Skip this door - it's not in the puzzle room - - # Add door to blocking doors list ONLY if it has valid puzzle element AND is in correct room + # Add door to blocking doors list ONLY if it has valid puzzle element blocking_doors.append(door_data) - print("DungeonGenerator: Created blocking door for puzzle room (", room.x, ", ", room.y, ") - direction: ", direction, ", open tile: (", open_tile_x, ", ", open_tile_y, "), puzzle_type: ", puzzle_type, ", has_switch: ", door_data.get("requires_switch", false), ", has_enemies: ", door_data.get("requires_enemies", false), ", door.room1: (", door.room1.x, ",", door.room1.y, "), door.room2: (", door.room2.x if "room2" in door and door.room2 else 0, ",", door.room2.y if "room2" in door and door.room2 else 0, ")") + print("DungeonGenerator: Created blocking door for puzzle room (", room.x, ", ", room.y, ") - direction: ", direction, ", open tile: (", open_tile_x, ", ", open_tile_y, "), puzzle_type: ", puzzle_type, ", has_switch: ", door_data.get("requires_switch", false), ", has_enemies: ", door_data.get("requires_enemies", false)) # STEP 3: Randomly assign some doors as KeyDoors (except start/exit room doors and already assigned doors) var key_door_chance = 0.2 # 20% chance per door @@ -2385,7 +2536,10 @@ func _place_blocking_doors(all_rooms: Array, all_doors: Array, grid: Array, map_ blocking_doors.append(door_data) - return blocking_doors + return { + "doors": blocking_doors, + "puzzle_data": room_puzzle_data + } func _find_floor_switch_position(room: Dictionary, grid: Array, map_size: Vector2i, rng: RandomNumberGenerator, exclude_door_x: int = -1, exclude_door_y: int = -1) -> Dictionary: # Find a valid floor position for a floor switch in the room @@ -2429,6 +2583,7 @@ func _find_floor_switch_position(room: Dictionary, grid: Array, map_size: Vector func _determine_door_direction(door: Dictionary, _all_rooms: Array) -> String: # Determine door direction based on door position and connected rooms # Door on upper wall = "Up", left wall = "Left", etc. + # This returns direction relative to room1 if not "room1" in door or not "room2" in door: return "Up" # Default @@ -2436,10 +2591,10 @@ func _determine_door_direction(door: Dictionary, _all_rooms: Array) -> String: var room2 = door.room2 # Determine which wall the door is on by comparing room positions - # If room2 is above room1, door is on top wall (Up) - # If room2 is below room1, door is on bottom wall (Down) - # If room2 is left of room1, door is on left wall (Left) - # If room2 is right of room1, door is on right wall (Right) + # If room2 is above room1, door is on top wall of room1 (Up) + # If room2 is below room1, door is on bottom wall of room1 (Down) + # If room2 is left of room1, door is on left wall of room1 (Left) + # If room2 is right of room1, door is on right wall of room1 (Right) var dx = room2.x - room1.x var dy = room2.y - room1.y @@ -2448,12 +2603,73 @@ func _determine_door_direction(door: Dictionary, _all_rooms: Array) -> String: if abs(dy) > abs(dx): # Vertical alignment if dy < 0: - return "Up" # room2 is above room1 + return "Up" # room2 is above room1 - door on top wall of room1 else: - return "Down" # room2 is below room1 + return "Down" # room2 is below room1 - door on bottom wall of room1 else: # Horizontal alignment if dx < 0: - return "Left" # room2 is left of room1 + return "Left" # room2 is left of room1 - door on left wall of room1 else: - return "Right" # room2 is right of room1 + return "Right" # room2 is right of room1 - door on right wall of room1 + +func _determine_door_direction_for_puzzle_room(door: Dictionary, puzzle_room: Dictionary, _all_rooms: Array) -> String: + # Determine which WALL of the PUZZLE ROOM the door is on + # CRITICAL: door.x and door.y are the position in room1, not necessarily in the puzzle room + # Need to check which room is the puzzle room and determine the wall based on door direction + var door_room1 = door.room1 if ("room1" in door and door.room1 and not door.room1.is_empty()) else null + var door_room2 = door.room2 if ("room2" in door and door.room2 and not door.room2.is_empty()) else null + + # Check which room is the puzzle room + var puzzle_is_room1 = false + var puzzle_is_room2 = false + + if door_room1: + puzzle_is_room1 = (door_room1.x == puzzle_room.x and door_room1.y == puzzle_room.y and \ + door_room1.w == puzzle_room.w and door_room1.h == puzzle_room.h) + + if door_room2: + puzzle_is_room2 = (door_room2.x == puzzle_room.x and door_room2.y == puzzle_room.y and \ + door_room2.w == puzzle_room.w and door_room2.h == puzzle_room.h) + + # Get door direction from door.dir + if "dir" in door: + var door_dir = door.dir + + if puzzle_is_room1: + # Puzzle room is room1 - door.dir represents the wall of puzzle room directly + match door_dir: + "E": return "Right" # Door on right wall of puzzle room + "W": return "Left" # Door on left wall of puzzle room + "N": return "Up" # Door on top wall of puzzle room + "S": return "Down" # Door on bottom wall of puzzle room + elif puzzle_is_room2: + # Puzzle room is room2 - door.dir is FROM room1, so flip it + match door_dir: + "E": return "Left" # Door on left wall of puzzle room (room2 is to the right of room1) + "W": return "Right" # Door on right wall of puzzle room (room2 is to the left of room1) + "N": return "Down" # Door on bottom wall of puzzle room (room2 is below room1) + "S": return "Up" # Door on top wall of puzzle room (room2 is above room1) + + # Fallback: calculate based on door position relative to puzzle room center + var door_x = door.x + var door_y = door.y + var puzzle_center_x = puzzle_room.x + puzzle_room.w / 2.0 + var puzzle_center_y = puzzle_room.y + puzzle_room.h / 2.0 + + var dx = door_x - puzzle_center_x + var dy = door_y - puzzle_center_y + + # Determine which wall based on which direction from center + if abs(dy) > abs(dx): + # Vertical - door is more above/below than left/right + if dy < 0: + return "Up" # Door is above puzzle room center - door is on top wall + else: + return "Down" # Door is below puzzle room center - door is on bottom wall + else: + # Horizontal - door is more left/right than above/below + if dx < 0: + return "Left" # Door is left of puzzle room center - door is on left wall + else: + return "Right" # Door is right of puzzle room center - door is on right wall diff --git a/src/scripts/enemy_base.gd b/src/scripts/enemy_base.gd index d7f0ead..399380e 100644 --- a/src/scripts/enemy_base.gd +++ b/src/scripts/enemy_base.gd @@ -11,6 +11,7 @@ var current_health: float = 50.0 var is_dead: bool = false var target_player: Node = null var attack_timer: float = 0.0 +var killer_player: Node = null # Track who killed this enemy (for kill credit) # Knockback var is_knocked_back: bool = false @@ -48,7 +49,7 @@ func _ready(): # CRITICAL: Set collision mask to include interactable objects (layer 2) and walls (layer 7) # This allows enemies to collide with interactable objects so they can path around them # Walls are on layer 7 (bit 6 = 64), not layer 4! - collision_mask = 1 | 2 | 64 # Collide with players (layer 1), objects (layer 2), and walls (layer 7 = bit 6 = 64) + collision_mask = 1 | 2 | 64 # Collide with players (layer 1), objects (layer 2), and walls (layer 7 = bit 6 = 64) func _physics_process(delta): if is_dead: @@ -162,18 +163,18 @@ func _check_interactable_object_collision(): # Try to path around the object by moving perpendicular to collision normal # This creates a side-stepping behavior to go around obstacles - var perpendicular = Vector2(-collision_normal.y, collision_normal.x) # Rotate 90 degrees + var perpendicular = Vector2(-collision_normal.y, collision_normal.x) # Rotate 90 degrees # Choose perpendicular direction that moves toward target (if we have one) if target_player and is_instance_valid(target_player): var to_target = (target_player.global_position - global_position).normalized() # If perpendicular dot product with target direction is negative, flip it if perpendicular.dot(to_target) < 0: - perpendicular = -perpendicular + perpendicular = - perpendicular # Apply perpendicular movement (side-step around object) - var side_step_velocity = perpendicular * move_speed * 0.7 # 70% of move speed for side-step - velocity = velocity.lerp(side_step_velocity, 0.3) # Smoothly blend with existing velocity + var side_step_velocity = perpendicular * move_speed * 0.7 # 70% of move speed for side-step + velocity = velocity.lerp(side_step_velocity, 0.3) # Smoothly blend with existing velocity # Also add some push-away from object to create clearance var push_away = collision_normal * move_speed * 0.3 @@ -184,7 +185,7 @@ func _check_interactable_object_collision(): velocity = velocity.normalized() * move_speed # For humanoid enemies, sometimes try to destroy the object - if has_method("_try_attack_object") and randf() < 0.1: # 10% chance per frame when blocked + if has_method("_try_attack_object") and randf() < 0.1: # 10% chance per frame when blocked call("_try_attack_object", blocked_objects[0].object) func _attack_player(player): @@ -239,6 +240,25 @@ func _find_nearest_player_in_range(max_range: float) -> Node: return nearest +func _find_nearest_player_to_position(pos: Vector2, max_range: float = 100.0) -> Node: + # Find the nearest player to a specific position (used to find attacker) + var players = get_tree().get_nodes_in_group("player") + if players.is_empty(): + return null + + var nearest: Node = null + var nearest_dist = max_range + + for player in players: + if not is_instance_valid(player): + continue + var dist = pos.distance_to(player.global_position) + if dist <= max_range and dist < nearest_dist: + nearest_dist = dist + nearest = player + + return nearest + func take_damage(amount: float, from_position: Vector2): # Only process damage on server/authority if not is_multiplayer_authority(): @@ -247,6 +267,12 @@ func take_damage(amount: float, from_position: Vector2): if is_dead: return + # Find the nearest player to the attack position (likely the attacker) + # This allows us to credit kills correctly + var nearest_player = _find_nearest_player_to_position(from_position) + if nearest_player: + killer_player = nearest_player # Update killer to the most recent attacker + current_health -= amount print(name, " took ", amount, " damage! Health: ", current_health) @@ -279,8 +305,20 @@ func take_damage(amount: float, from_position: Vector2): _sync_damage_visual.rpc() if current_health <= 0: + # Prevent multiple death triggers + if is_dead: + return # Already dying + + # Don't set is_dead here - let _die() set it to avoid early return bug + # Mark as dead in _die() function instead of here + # Delay death slightly so knockback is visible call_deferred("_die") + + # Notify doors that an enemy has died (if spawned from spawner) + # This needs to happen after _die() sets is_dead, so defer it + if has_meta("spawned_from_spawner") and get_meta("spawned_from_spawner"): + call_deferred("_notify_doors_enemy_died") @rpc("any_peer", "reliable") func rpc_take_damage(amount: float, from_position: Vector2): @@ -318,7 +356,7 @@ func _show_damage_number(amount: float, from_position: Vector2): var entities_node = game_world.get_node_or_null("Entities") if entities_node: entities_node.add_child(damage_label) - damage_label.global_position = global_position + Vector2(0, -16) # Above enemy head + damage_label.global_position = global_position + Vector2(0, -16) # Above enemy head else: get_tree().current_scene.add_child(damage_label) damage_label.global_position = global_position + Vector2(0, -16) @@ -347,6 +385,27 @@ func _on_take_damage(): # Override in subclasses for custom damage reactions pass +func _notify_doors_enemy_died(): + # Notify all doors that require enemies to check puzzle state + # This ensures doors open immediately when the last enemy dies + if not has_meta("spawned_from_spawner") or not get_meta("spawned_from_spawner"): + return # Only notify if this enemy was spawned from a spawner + + # Find all doors in the scene that require enemies + for door in get_tree().get_nodes_in_group("blocking_door"): + if not is_instance_valid(door): + continue + + if not door.has_method("_check_puzzle_state"): + continue + + # Check if this door requires enemies (requires_enemies is a property defined in door.gd) + # Access property directly - it's always defined in door.gd class + if door.requires_enemies: + # Trigger puzzle state check immediately (doors will verify if all enemies are dead) + door.call_deferred("_check_puzzle_state") + print("Enemy: Notified door ", door.name, " to check puzzle state after enemy death") + func _set_animation(_anim_name: String): # Virtual function - override in subclasses that use animation state system # (e.g., enemy_humanoid.gd uses player-like animation system) @@ -359,6 +418,11 @@ func _die(): is_dead = true print(name, " died!") + # Credit kill to the player who dealt the fatal damage + if killer_player and is_instance_valid(killer_player) and killer_player.character_stats: + killer_player.character_stats.kills += 1 + print(name, " kill credited to ", killer_player.name, " (total kills: ", killer_player.character_stats.kills, ")") + # Spawn loot immediately (before death animation) _spawn_loot() @@ -465,7 +529,7 @@ func _sync_position(pos: Vector2, vel: Vector2, z_pos: float = 0.0, dir: int = 0 # Clients receive position and animation updates from server # Only process if we're not the authority (i.e., we're a client) if is_multiplayer_authority(): - return # Server ignores its own updates + return # Server ignores its own updates # Debug: Log when client receives position update (first few times) if not has_meta("position_sync_count"): @@ -474,7 +538,7 @@ func _sync_position(pos: Vector2, vel: Vector2, z_pos: float = 0.0, dir: int = 0 var sync_count = get_meta("position_sync_count") + 1 set_meta("position_sync_count", sync_count) - if sync_count <= 3: # Log first 3 syncs + if sync_count <= 3: # Log first 3 syncs print("Enemy ", name, " (client) received position sync #", sync_count, ": pos=", pos) # Update position and state @@ -504,7 +568,7 @@ func _sync_damage_visual(): # Clients receive damage visual sync # Only process if we're not the authority (i.e., we're a client) if is_multiplayer_authority(): - return # Server ignores its own updates + return # Server ignores its own updates _flash_damage() @@ -513,7 +577,7 @@ func _sync_death(): # Clients receive death sync and play death animation locally # Only process if we're not the authority (i.e., we're a client) if is_multiplayer_authority(): - return # Server ignores its own updates + return # Server ignores its own updates if not is_dead: is_dead = true @@ -521,7 +585,7 @@ func _sync_death(): # Remove collision layer so they don't collide with players, but still collide with walls # This matches what happens on the server when rats/slimes die - set_collision_layer_value(2, false) # Remove from enemy collision layer (layer 2) + set_collision_layer_value(2, false) # Remove from enemy collision layer (layer 2) # Immediately mark as dead and stop AI/physics # This prevents "inactive" enemies that are already dead diff --git a/src/scripts/enemy_bat.gd b/src/scripts/enemy_bat.gd index 1ed1f9a..e047b05 100644 --- a/src/scripts/enemy_bat.gd +++ b/src/scripts/enemy_bat.gd @@ -128,10 +128,10 @@ func _update_z_position(_delta): if sprite: sprite.position.y = -position_z * 0.5 - # Update shadow based on height + # Update shadow based on height (use same logic as base class _update_client_visuals for consistency) if shadow: var shadow_scale = 1.0 - (position_z / 50.0) * 0.5 - shadow.scale = Vector2.ONE * max(0.3, shadow_scale) * Vector2(0.8, 0.4) + shadow.scale = Vector2.ONE * max(0.3, shadow_scale) shadow.modulate.a = 0.5 - (position_z / 50.0) * 0.2 func _update_client_visuals(): diff --git a/src/scripts/enemy_humanoid.gd b/src/scripts/enemy_humanoid.gd index 406c61c..6f44b5b 100644 --- a/src/scripts/enemy_humanoid.gd +++ b/src/scripts/enemy_humanoid.gd @@ -157,13 +157,243 @@ func _setup_appearance(): # Load random equipment/appearance _load_random_equipment() - # Load type-specific addons + # Randomize appearance (skin, hair, facial hair, eyes, eyelashes, ears) + _randomize_appearance() + + # Load type-specific addons (may override ears from randomization) _load_type_addons() - # Load random beastkin addons (low chance) + # Load random beastkin addons (low chance, can override type addon) if appearance_rng.randf() < 0.1: # 10% chance _load_beastkin_addon() +func _randomize_appearance(): + # Randomize skin (for humanoids only - other types already have specific skins) + if humanoid_type == HumanoidType.HUMANOID: + var skin_value = appearance_rng.randi_range(0, 6) # 0-6 for Human1-Human7 + _set_skin(skin_value) + + # Randomize hair (0-12, 0 = no hair) + var hair_type = appearance_rng.randi_range(0, 12) + _set_hair(hair_type) + + # Randomize facial hair (0-3, 0 = no facial hair) + var facial_hair_type = appearance_rng.randi_range(0, 3) + _set_facial_hair(facial_hair_type) + + # Randomize eyes (1-14, 1-14 are eye colors) + var eye_type = appearance_rng.randi_range(1, 14) + _set_eyes(eye_type) + + # Randomize eyelashes (0-8, 0 = no eyelashes) + var eyelash_type = appearance_rng.randi_range(0, 8) + _set_eye_lashes(eyelash_type) + + # Randomize ears (0-7, 0 = no ears, 1-7 are elf ears) + # Note: Type-specific addons may override this + if humanoid_type == HumanoidType.HUMANOID: + # Only randomize ears for regular humanoids (other types have type-specific ears) + var ear_type = appearance_rng.randi_range(0, 7) + _set_ears(ear_type) + + # Randomize hair color (bright colors for enemies) + var hair_colors = [ + Color.WHITE, Color(0.9, 0.9, 0.9), Color(0.7, 0.7, 0.7), # White/Gray + Color(0.5, 0.3, 0.2), Color(0.3, 0.2, 0.1), # Brown/Black + Color(0.9, 0.7, 0.4), Color(0.8, 0.6, 0.3) # Blonde + ] + var hair_color = hair_colors[appearance_rng.randi() % hair_colors.size()] + _set_hair_color(hair_color) + + # Set facial hair color to match hair color or slightly different + var facial_hair_color = hair_color + if appearance_rng.randf() < 0.3: # 30% chance for slightly different color + facial_hair_color = hair_colors[appearance_rng.randi() % hair_colors.size()] + _set_facial_hair_color(facial_hair_color) + +func _set_skin(i_value: int): + if i_value < 0 or i_value > 6: + return + if sprite_body: + var skin_path = "res://assets/gfx/Puny-Characters/Layer 0 - Skins/Human" + str(i_value + 1) + ".png" + var skin_texture = load(skin_path) + if skin_texture: + sprite_body.texture = skin_texture + sprite_body.hframes = 35 + sprite_body.vframes = 8 + +func _set_facial_hair(i_type: int): + if i_type < 0 or i_type > 3: + return + + if not sprite_facial_hair: + return + + if i_type == 0: + sprite_facial_hair.texture = null + return + + var facial_hair_path = "" + match i_type: + 1: + facial_hair_path = "res://assets/gfx/Puny-Characters/Layer 4 - Hairstyle/Facial Hairstyles/Beardstyle1White.png" + 2: + facial_hair_path = "res://assets/gfx/Puny-Characters/Layer 4 - Hairstyle/Facial Hairstyles/Beardstyle2White.png" + 3: + facial_hair_path = "res://assets/gfx/Puny-Characters/Layer 4 - Hairstyle/Facial Hairstyles/Mustache1White.png" + + if facial_hair_path != "": + var facial_hair_texture = load(facial_hair_path) + if facial_hair_texture: + sprite_facial_hair.texture = facial_hair_texture + sprite_facial_hair.hframes = 35 + sprite_facial_hair.vframes = 8 + +func _set_hair(i_type: int): + if i_type < 0 or i_type > 12: + return + + if not sprite_hair: + return + + if i_type == 0: + sprite_hair.texture = null + return + + var hairstyle_path = "" + if i_type >= 1 and i_type <= 4: + # Female hairstyles + hairstyle_path = "res://assets/gfx/Puny-Characters/Layer 4 - Hairstyle/Hairstyles/FHairstyle" + str(i_type) + "White.png" + elif i_type >= 5: + # Male hairstyles (5-12 maps to MHairstyle1-8) + var male_hairstyle = i_type - 4 + hairstyle_path = "res://assets/gfx/Puny-Characters/Layer 4 - Hairstyle/Hairstyles/MHairstyle" + str(male_hairstyle) + "White.png" + + if hairstyle_path != "": + var hair_texture = load(hairstyle_path) + if hair_texture: + sprite_hair.texture = hair_texture + sprite_hair.hframes = 35 + sprite_hair.vframes = 8 + +func _set_eye_lashes(i_eyelashes: int): + if i_eyelashes < 0 or i_eyelashes > 8: + return + + if not sprite_eyelashes: + return + + if i_eyelashes == 0: + sprite_eyelashes.texture = null + return + + var eyelash_path = "" + match i_eyelashes: + 1: + eyelash_path = "res://assets/gfx/Puny-Characters/Layer 5 - Eyes/Eyelashes/FEyelash1.png" + 2: + eyelash_path = "res://assets/gfx/Puny-Characters/Layer 5 - Eyes/Eyelashes/FEyelash2.png" + 3: + eyelash_path = "res://assets/gfx/Puny-Characters/Layer 5 - Eyes/Eyelashes/FEyelash3.png" + 4: + eyelash_path = "res://assets/gfx/Puny-Characters/Layer 5 - Eyes/Eyelashes/MEyelash1.png" + 5: + eyelash_path = "res://assets/gfx/Puny-Characters/Layer 5 - Eyes/Eyelashes/MEyelash2.png" + 6: + eyelash_path = "res://assets/gfx/Puny-Characters/Layer 5 - Eyes/Eyelashes/NEyelash1.png" + 7: + eyelash_path = "res://assets/gfx/Puny-Characters/Layer 5 - Eyes/Eyelashes/NEyelash2.png" + 8: + eyelash_path = "res://assets/gfx/Puny-Characters/Layer 5 - Eyes/Eyelashes/NEyelash3.png" + + if eyelash_path != "": + var eyelash_texture = load(eyelash_path) + if eyelash_texture: + sprite_eyelashes.texture = eyelash_texture + sprite_eyelashes.hframes = 35 + sprite_eyelashes.vframes = 8 + +func _set_eyes(i_eyes: int): + if i_eyes < 0 or i_eyes > 14: + return + + if not sprite_eyes: + return + + if i_eyes == 0: + sprite_eyes.texture = null + return + + var eye_path = "" + match i_eyes: + 1: + eye_path = "res://assets/gfx/Puny-Characters/Layer 5 - Eyes/Eye Color/EyecolorBlack.png" + 2: + eye_path = "res://assets/gfx/Puny-Characters/Layer 5 - Eyes/Eye Color/EyecolorBlue.png" + 3: + eye_path = "res://assets/gfx/Puny-Characters/Layer 5 - Eyes/Eye Color/EyecolorCyan.png" + 4: + eye_path = "res://assets/gfx/Puny-Characters/Layer 5 - Eyes/Eye Color/EyecolorDarkBlue.png" + 5: + eye_path = "res://assets/gfx/Puny-Characters/Layer 5 - Eyes/Eye Color/EyecolorDarkCyan.png" + 6: + eye_path = "res://assets/gfx/Puny-Characters/Layer 5 - Eyes/Eye Color/EyecolorDarkLime.png" + 7: + eye_path = "res://assets/gfx/Puny-Characters/Layer 5 - Eyes/Eye Color/EyecolorDarkRed.png" + 8: + eye_path = "res://assets/gfx/Puny-Characters/Layer 5 - Eyes/Eye Color/EyecolorFullBlack.png" + 9: + eye_path = "res://assets/gfx/Puny-Characters/Layer 5 - Eyes/Eye Color/EyecolorFullWhite.png" + 10: + eye_path = "res://assets/gfx/Puny-Characters/Layer 5 - Eyes/Eye Color/EyecolorGray.png" + 11: + eye_path = "res://assets/gfx/Puny-Characters/Layer 5 - Eyes/Eye Color/EyecolorLightLime.png" + 12: + eye_path = "res://assets/gfx/Puny-Characters/Layer 5 - Eyes/Eye Color/EyecolorOrange.png" + 13: + eye_path = "res://assets/gfx/Puny-Characters/Layer 5 - Eyes/Eye Color/EyecolorRed.png" + 14: + eye_path = "res://assets/gfx/Puny-Characters/Layer 5 - Eyes/Eye Color/EyecolorYellow.png" + + if eye_path != "": + var eye_texture = load(eye_path) + if eye_texture: + sprite_eyes.texture = eye_texture + sprite_eyes.hframes = 35 + sprite_eyes.vframes = 8 + +func _set_ears(i_ears: int): + if i_ears < 0 or i_ears > 7: + return + + if not sprite_addons: + return + + if i_ears == 0: + # Don't clear addons if we're not a humanoid (other types need their addons) + # For humanoids, clear only if no type-specific addon is needed + if humanoid_type == HumanoidType.HUMANOID: + # Will be set by _load_type_addons if needed, otherwise stays null + pass + return + + # Only set elf ears if we're a humanoid (other types have type-specific addons) + if humanoid_type == HumanoidType.HUMANOID: + var ear_path = "res://assets/gfx/Puny-Characters/Layer 7 - Add-ons/Elf Add-ons/ElfEars" + str(i_ears) + ".png" + var ear_texture = load(ear_path) + if ear_texture: + sprite_addons.texture = ear_texture + sprite_addons.hframes = 35 + sprite_addons.vframes = 8 + +func _set_facial_hair_color(i_color: Color): + if sprite_facial_hair: + sprite_facial_hair.modulate = i_color + +func _set_hair_color(i_color: Color): + if sprite_hair: + sprite_hair.modulate = i_color + func _get_body_texture_for_type(type: HumanoidType) -> String: match type: HumanoidType.CYCLOPS: @@ -188,9 +418,175 @@ func _get_body_texture_for_type(type: HumanoidType) -> String: return "" func _load_random_equipment(): - # Load random shoes, armour, etc. (can be empty) - # For now, just load basic stuff - can be expanded later - pass + # Load random equipment (shoes, clothes, gloves, headgear) + # Equipment is optional - chance to have each piece + + # Random shoes (Layer 1 - Shoes) + if appearance_rng.randf() < 0.8: # 80% chance to have shoes + _load_random_shoes() + + # Random clothes/armour (Layer 2 - Clothes) + if appearance_rng.randf() < 0.7: # 70% chance to have clothes + _load_random_clothes() + + # Random gloves (Layer 3 - Gloves) + if appearance_rng.randf() < 0.6: # 60% chance to have gloves + _load_random_gloves() + + # Random headgear (Layer 6 - Headgears) + if appearance_rng.randf() < 0.5: # 50% chance to have headgear + _load_random_headgear() + +func _load_random_shoes(): + if not sprite_boots: + return + + # Available shoes + var shoes = [ + "ShoesBrown.png", + "ShoesMaple.png", + "IronBoots.png" + ] + + var shoe_file = shoes[appearance_rng.randi() % shoes.size()] + var shoe_path = "res://assets/gfx/Puny-Characters/Layer 1 - Shoes/" + shoe_file + var shoe_texture = load(shoe_path) + if shoe_texture: + sprite_boots.texture = shoe_texture + sprite_boots.hframes = 35 + sprite_boots.vframes = 8 + +func _load_random_clothes(): + if not sprite_armour: + return + + # Available clothes from different categories (using actual files found) + var clothes_categories = { + "Basic Body": [ + "BasicRed.png", "BasicBlue.png", "BasicGreen.png", + "BasicYellow.png", "BasicBlack.png", "BasicCyan.png", + "BasicPurple.png" + ], + "Tunic Body": [ + "BrownTunic.png", "LeatherTunic.png", "LimeTunic.png", + "LinenTunic.png", "WoolTunic.png" + ], + "Armour Body": [ + "BronzeArmour.png", "GoldArmour.png", "IronArmour.png", + "SteelArmour.png" + ], + "Viking Body": [ + "JarlBody.png", "KarlBody.png", "WarriorBody.png" + ], + "Mongol Body": [ + "Cherbi.png", "Khaan.png", "Kheshig.png", "Noyon.png" + ], + "French Body": [ + "HunterIndigo.png", "MusketeerPurple.png", "MusketeerRed.png" + ], + "Japanese Body": [ + "NinjaBlack.png", "RoninBlue.png", "RoninRed.png", + "SamuraiLime.png", "SamuraiPurple.png", "TravellerCyan.png", + "YabusameBlue.png", "YabusameRed.png" + ] + } + + # Choose a random category + var category_keys = clothes_categories.keys() + var selected_category = category_keys[appearance_rng.randi() % category_keys.size()] + var clothes_in_category = clothes_categories[selected_category] + var selected_cloth = clothes_in_category[appearance_rng.randi() % clothes_in_category.size()] + + var cloth_path = "res://assets/gfx/Puny-Characters/Layer 2 - Clothes/" + selected_category + "/" + selected_cloth + var cloth_texture = load(cloth_path) + if cloth_texture: + sprite_armour.texture = cloth_texture + sprite_armour.hframes = 35 + sprite_armour.vframes = 8 + +func _load_random_gloves(): + # Note: Gloves are in Layer 3, but we only have sprite_armour for clothes + # Since gloves are typically overlaid on clothes, we could: + # 1. Load gloves as a separate layer if we add one + # 2. Skip gloves if we already have clothes (gloves are optional) + # 3. Combine gloves with clothes (would require composition) + # For now, we'll skip gloves if clothes are already loaded + # TODO: Consider adding a separate sprite layer for gloves if needed + if not sprite_armour: + return + + # Only load gloves if we don't already have clothes + # This prevents gloves from overriding clothes + if sprite_armour.texture: + return # Already have clothes, skip gloves + + # Available gloves + var gloves = [ + "GlovesBrown.png", + "GlovesLightBrown.png", + "GlovesMaple.png", + "IronGloves.png" + ] + + var glove_file = gloves[appearance_rng.randi() % gloves.size()] + var glove_path = "res://assets/gfx/Puny-Characters/Layer 3 - Gloves/" + glove_file + var glove_texture = load(glove_path) + if glove_texture: + sprite_armour.texture = glove_texture + sprite_armour.hframes = 35 + sprite_armour.vframes = 8 + +func _load_random_headgear(): + if not sprite_headgear: + return + + # Available headgears organized by category (using actual files found) + var headgear_categories = { + "": ["Headband.png"], # Direct files in Layer 6 - Headgears + "Basic Assasin": [ + "AssasinBandanaBlack.png", "StalkerHoodBlack.png", "ThiefBandanaGreen.png" + ], + "Basic Mage": [ + "EsperHatBlue.png", "HighMageHatCyan.png", "MageHatRed.png", "SorcererHoodCyan.png" + ], + "Basic Melee": [ + "DarkKnightHelm.png", "DragonKnightHelm.png", "GruntHelm.png", "KnightHelm.png", + "NoviceHelm.png", "PaladinHelmCyan.png", "ScoutHelmGreen.png", + "SoldierBronzeHelmBlue.png", "SoldierBronzeHelmRed.png", "SoldierGoldHelmBlue.png", + "SoldierIronHelmBlue.png", "SoldierSteelHelmBlue.png" + ], + "Basic Range": [ + "ArcherHatCyan.png", "HunterHatRed.png", "RangerHatGreen.png", "RogueHatGreen.png" + ], + "French": ["MusketeerHatPurple.png"], + "Japanese": [ + "DaimyoHelm.png", "NinjaBandanaBlue.png", "RoninStrawhatBlue.png", + "SamuraiHelm.png", "ShogunHelmPurple.png", "TravellerStrawhat.png", + "TravellerStrawhatCyan.png", "VillagerStrawhat.png", "YabusameStrawhatBlue.png" + ], + "Mongol": [ + "CherbiHelm.png", "KhaanHelm.png", "KheshigHelm.png", "NoyonHelm.png" + ], + "Viking": ["JarlHelm.png", "KarlHelm.png"] + } + + # Choose a random category + var category_keys = headgear_categories.keys() + var selected_category = category_keys[appearance_rng.randi() % category_keys.size()] + var headgears_in_category = headgear_categories[selected_category] + var selected_headgear = headgears_in_category[appearance_rng.randi() % headgears_in_category.size()] + + # Build path - add subdirectory if category is not empty + var headgear_path = "res://assets/gfx/Puny-Characters/Layer 6 - Headgears/" + if selected_category != "": + headgear_path += selected_category + "/" + headgear_path += selected_headgear + + var headgear_texture = load(headgear_path) + if headgear_texture: + sprite_headgear.texture = headgear_texture + sprite_headgear.hframes = 35 + sprite_headgear.vframes = 8 func _load_type_addons(): # Load type-specific addons based on requirements @@ -224,15 +620,9 @@ func _load_type_addons(): print(name, " loaded skeleton horns: ", addon_path) HumanoidType.HUMANOID: - # Can have (but not must) ElfEars - if appearance_rng.randf() < 0.3 and sprite_addons: - var addon_path = "res://assets/gfx/Puny-Characters/Layer 7 - Add-ons/Elf Add-ons/ElfEars1.png" - var texture = load(addon_path) - if texture: - sprite_addons.texture = texture - sprite_addons.hframes = 35 - sprite_addons.vframes = 8 - print(name, " loaded elf ears") + # Ears are already set by _randomize_appearance, so skip here + # Type-specific addons would override if needed + pass HumanoidType.NIGHTELF: # Must have NightElfEars7 diff --git a/src/scripts/enemy_spawner.gd b/src/scripts/enemy_spawner.gd index 2602e43..e9988db 100644 --- a/src/scripts/enemy_spawner.gd +++ b/src/scripts/enemy_spawner.gd @@ -10,13 +10,14 @@ extends Node2D var spawned_enemies: Array = [] var respawn_timer: float = 0.0 var smoke_puff_scene = preload("res://scenes/smoke_puff.tscn") +var has_ever_spawned: bool = false # Track if this spawner has ever spawned an enemy func _ready(): print("========== EnemySpawner READY ==========") print(" Position: ", global_position) print(" Is server: ", multiplayer.is_server()) print(" Has multiplayer peer: ", multiplayer.has_multiplayer_peer()) - print(" Is authority: ", is_multiplayer_authority() if multiplayer.has_multiplayer_peer() else "N/A") + print(" Is authority: ", str(is_multiplayer_authority()) if multiplayer.has_multiplayer_peer() else "N/A") print(" spawn_on_ready: ", spawn_on_ready) print(" max_enemies: ", max_enemies) print(" enemy_scenes.size(): ", enemy_scenes.size()) @@ -45,8 +46,9 @@ func _process(delta): # Clean up dead enemies from list spawned_enemies = spawned_enemies.filter(func(e): return is_instance_valid(e) and not e.is_dead) - # Check if we need to respawn - if spawned_enemies.size() < max_enemies: + # Check if we need to respawn (only if respawn_time > 0) + # Puzzle spawners have respawn_time = 0.0, so they won't respawn + if respawn_time > 0.0 and spawned_enemies.size() < max_enemies: respawn_timer += delta if respawn_timer >= respawn_time: spawn_enemy() @@ -95,19 +97,40 @@ func spawn_enemy(): # Spawn multiple smoke puffs at slightly different positions var smoke_puffs = [] var puff_spawn_radius = 8.0 # Pixels - spawn puffs in a small area around spawner + var puff_positions = [] # Store positions for syncing to clients + # Calculate puff positions first for i in range(num_puffs): var puff_offset = Vector2( randf_range(-puff_spawn_radius, puff_spawn_radius), randf_range(-puff_spawn_radius, puff_spawn_radius) ) - var puff = _spawn_smoke_puff_at_position(global_position + puff_offset) + puff_positions.append(global_position + puff_offset) + + # Spawn smoke puffs on server + for puff_pos in puff_positions: + var puff = _spawn_smoke_puff_at_position(puff_pos) if puff: smoke_puffs.append(puff) + # Sync smoke puffs to all clients + if multiplayer.has_multiplayer_peer() and multiplayer.is_server(): + var game_world = get_tree().get_first_node_in_group("game_world") + if not game_world: + # Fallback: traverse up the tree to find GameWorld + var node = get_parent() + while node: + if node.has_method("_sync_smoke_puffs"): + game_world = node + break + node = node.get_parent() + + if game_world and game_world.has_method("_sync_smoke_puffs"): + game_world._sync_smoke_puffs.rpc(name, puff_positions) + # Wait for smoke puffs to finish animating before spawning enemy - # Smoke puff animation: 4 frames * (1/10.0) seconds per frame = 0.4s, plus move_duration 1.5s, plus fade_duration 0.5s = ~2.4s total - var smoke_animation_duration = (4.0 / 10.0) + 1.5 + 0.5 # Total animation time + # Reduced duration for faster spawning: 4 frames * (1/10.0) seconds per frame = 0.4s, plus move_duration 1.0s, plus fade_duration 0.3s = ~1.7s total + var smoke_animation_duration = (4.0 / 10.0) + 1.0 + 0.3 # Reduced from 2.4s to 1.7s await get_tree().create_timer(smoke_animation_duration).timeout print(" Smoke puffs finished - now spawning enemy...") @@ -126,6 +149,27 @@ func spawn_enemy(): enemy.spawn_position = global_position print(" Set enemy position to: ", global_position) + # If it's a humanoid enemy, randomize the humanoid_type + var humanoid_type = null + if scene_to_spawn.resource_path.ends_with("enemy_humanoid.tscn"): + # Random humanoid type: 0=CYCLOPS, 1=DEMON, 2=HUMANOID, 3=NIGHTELF, 4=GOBLIN, 5=ORC, 6=SKELETON + # Weight towards common types (goblins, humans, orcs) - 40% goblin, 30% humanoid, 20% orc, 10% other + var rand_val = randf() + var type_value = 2 # Default to HUMANOID + if rand_val < 0.4: + type_value = 4 # GOBLIN (40%) + elif rand_val < 0.7: + type_value = 2 # HUMANOID (30%) + elif rand_val < 0.9: + type_value = 5 # ORC (20%) + else: + # 10% for other types (distributed evenly) + var other_types = [0, 1, 3, 6] # CYCLOPS, DEMON, NIGHTELF, SKELETON + type_value = other_types[randi() % other_types.size()] + enemy.humanoid_type = type_value + humanoid_type = type_value + print(" Randomized humanoid_type: ", type_value) + # CRITICAL: Mark this enemy as spawned from a spawner (for door puzzle tracking) enemy.set_meta("spawned_from_spawner", true) enemy.set_meta("spawner_name", name) @@ -167,6 +211,7 @@ func spawn_enemy(): enemy.set_meta("spawn_scene_index", scene_index) spawned_enemies.append(enemy) + has_ever_spawned = true # Mark that this spawner has spawned at least once print(" ✓ Successfully spawned enemy: ", enemy.name, " at ", global_position, " scene_index: ", scene_index) print(" Total spawned enemies: ", spawned_enemies.size()) @@ -191,16 +236,19 @@ func spawn_enemy(): if game_world and game_world.has_method("_sync_enemy_spawn"): # Use spawner name for identification - print(" DEBUG: Calling _sync_enemy_spawn.rpc with name=", name, " pos=", global_position, " scene_index=", scene_index) - game_world._sync_enemy_spawn.rpc(name, global_position, scene_index) - print(" Sent RPC to sync enemy spawn to clients: spawner=", name, " pos=", global_position, " scene_index=", scene_index) + # Pass humanoid_type if it's a humanoid enemy (for syncing to clients) + var sync_humanoid_type = humanoid_type if humanoid_type != null else -1 + print(" DEBUG: Calling _sync_enemy_spawn.rpc with name=", name, " pos=", global_position, " scene_index=", scene_index, " humanoid_type=", sync_humanoid_type) + game_world._sync_enemy_spawn.rpc(name, global_position, scene_index, sync_humanoid_type) + print(" Sent RPC to sync enemy spawn to clients: spawner=", name, " pos=", global_position, " scene_index=", scene_index, " humanoid_type=", sync_humanoid_type) else: var has_method_str = str(game_world.has_method("_sync_enemy_spawn")) if game_world else "N/A" push_error("ERROR: Could not find GameWorld or _sync_enemy_spawn method! game_world=", game_world, " has_method=", has_method_str) -func spawn_enemy_at_position(spawn_pos: Vector2, scene_index: int = -1): +func spawn_enemy_at_position(spawn_pos: Vector2, scene_index: int = -1, humanoid_type: int = -1): # This method is called by GameWorld RPC to spawn enemies on clients # scene_index tells us which scene from enemy_scenes array was used on the server + # humanoid_type tells us the humanoid type if it's a humanoid enemy (for syncing from server) var scene_to_spawn: PackedScene = null if scene_index >= 0 and scene_index < enemy_scenes.size(): # Use the scene index that was synced from server @@ -215,10 +263,10 @@ func spawn_enemy_at_position(spawn_pos: Vector2, scene_index: int = -1): push_error("ERROR: Spawner has no enemy scenes set! Add scenes to enemy_scenes array.") return - print("Client: spawn_enemy_at_position called at ", spawn_pos) + print("Client: spawn_enemy_at_position called at ", spawn_pos, " humanoid_type: ", humanoid_type) - # Spawn smoke puff effect - _spawn_smoke_puff() + # NOTE: Smoke puffs are synced via RPC (_sync_smoke_puffs) from server + # so we don't spawn them here - they're already spawned by the RPC handler # Instantiate and add enemy var enemy = scene_to_spawn.instantiate() @@ -231,6 +279,11 @@ func spawn_enemy_at_position(spawn_pos: Vector2, scene_index: int = -1): if "spawn_position" in enemy: enemy.spawn_position = spawn_pos + # If it's a humanoid enemy, set the humanoid_type from server + if humanoid_type >= 0 and scene_to_spawn.resource_path.ends_with("enemy_humanoid.tscn"): + enemy.humanoid_type = humanoid_type + print("Client: Set humanoid_type to ", humanoid_type) + # CRITICAL: Set collision mask BEFORE adding to scene to ensure enemies collide with walls (layer 7 = bit 6 = 64) # This overrides any collision_mask set in the scene file enemy.collision_mask = 1 | 2 | 64 # Collide with players (layer 1), objects (layer 2), and walls (layer 7 = bit 6 = 64) @@ -255,14 +308,20 @@ func spawn_enemy_at_position(spawn_pos: Vector2, scene_index: int = -1): print(" ✓ Client spawned enemy: ", enemy.name, " at ", spawn_pos) func get_spawned_enemy_positions() -> Array: - # Return array of dictionaries with position and scene_index for all currently spawned enemies + # Return array of dictionaries with position, scene_index, and humanoid_type for all currently spawned enemies var enemy_data = [] for enemy in spawned_enemies: if is_instance_valid(enemy) and not enemy.is_dead: var scene_index = -1 if enemy.has_meta("spawn_scene_index"): scene_index = enemy.get_meta("spawn_scene_index") - enemy_data.append({"position": enemy.global_position, "scene_index": scene_index}) + var data = {"position": enemy.global_position, "scene_index": scene_index} + # Include humanoid_type if it's a humanoid enemy + if "humanoid_type" in enemy: + data["humanoid_type"] = enemy.humanoid_type + else: + data["humanoid_type"] = -1 + enemy_data.append(data) return enemy_data func _verify_enemy_collision_mask(enemy: Node): @@ -297,10 +356,17 @@ func _spawn_smoke_puff_at_position(puff_position: Vector2) -> Node: var puff = smoke_puff_scene.instantiate() if puff: puff.global_position = puff_position - var parent = get_parent() + # Ensure smoke puff is visible - set high z_index so it appears above ground + puff.z_index = 10 # High z-index to ensure visibility + if puff.has_node("Sprite2D"): + puff.get_node("Sprite2D").z_index = 10 + + # Add to Entities node (same as enemies) for proper layering + var entities_node = get_parent().get_node_or_null("Entities") + var parent = entities_node if entities_node else get_parent() if parent: parent.add_child(puff) - print(" ✓ Smoke puff spawned at ", puff_position) + print(" ✓ Smoke puff spawned at ", puff_position, " z_index: ", puff.z_index) return puff else: print(" ERROR: No parent node for smoke puff!") diff --git a/src/scripts/floor_switch.gd b/src/scripts/floor_switch.gd index 5adddc2..5391f3b 100644 --- a/src/scripts/floor_switch.gd +++ b/src/scripts/floor_switch.gd @@ -68,6 +68,7 @@ func _on_body_entered(body): if object_type == "Pillar" and not is_being_held: var weight = _get_object_weight(body) if weight >= required_weight: # Pillar must have weight >= 5.0 + $PressSwitch.play() objects_on_switch.append(body) current_weight += weight print("FloorSwitch: Pillar entered switch (not held), weight: ", weight, ", total: ", current_weight) @@ -81,6 +82,7 @@ func _on_body_entered(body): if body.is_in_group("player") or (body.has_method("can_be_grabbed") and body.can_be_grabbed()): var weight = _get_object_weight(body) if weight > 0: + $PressSwitch.play() objects_on_switch.append(body) current_weight += weight _check_activation() @@ -91,12 +93,13 @@ func _on_body_exited(body): # For pillar switches, verify the object is still valid (not being held now) if switch_type == "pillar": var object_type = body.get("object_type") if "object_type" in body else "" - var is_being_held = body.get("is_being_held") if "is_being_held" in body else false + var _is_being_held = body.get("is_being_held") if "is_being_held" in body else false # Only remove if it was a pillar (and might now be held) if object_type == "Pillar": var weight = _get_object_weight(body) if weight > 0: + $ReleaseSwitch.play() objects_on_switch.erase(body) current_weight -= weight print("FloorSwitch: Pillar left switch, weight: ", weight, ", total: ", current_weight) @@ -105,6 +108,7 @@ func _on_body_exited(body): # Walk switch: Remove any object var weight = _get_object_weight(body) if weight > 0: + $ReleaseSwitch.play() objects_on_switch.erase(body) current_weight -= weight _check_activation() diff --git a/src/scripts/game_world.gd b/src/scripts/game_world.gd index 2ca97a3..05ff7a9 100644 --- a/src/scripts/game_world.gd +++ b/src/scripts/game_world.gd @@ -86,7 +86,12 @@ func _on_player_connected(peer_id: int, player_info: Dictionary): _sync_spawn_player.rpc(peer_id, player_info.local_player_count) # Sync existing enemies (from spawners) to the new client - _sync_existing_enemies_to_client(peer_id) + # Wait a bit after dungeon sync to ensure spawners are spawned first + call_deferred("_sync_existing_enemies_to_client", peer_id) + + # Sync existing chest open states to the new client + # Wait a bit after dungeon sync to ensure objects are spawned first + call_deferred("_sync_existing_chest_states_to_client", peer_id) # Note: Dungeon-spawned enemies are already synced via _sync_dungeon RPC # which includes dungeon_data.enemies and calls _spawn_enemies() on the client. @@ -94,12 +99,10 @@ func _on_player_connected(peer_id: int, player_info: Dictionary): # Note: Interactable objects are also synced via _sync_dungeon RPC # which includes dungeon_data.interactable_objects and calls _spawn_interactable_objects() on the client. - - # Note: Interactable objects are also synced via _sync_dungeon RPC - # which includes dungeon_data.interactable_objects and calls _spawn_interactable_objects() on the client. + # However, chest open states need to be synced separately since they change during gameplay. # Sync existing torches to the new client - _sync_existing_torches_to_client(peer_id) + call_deferred("_sync_existing_torches_to_client", peer_id) else: # Clients spawn directly when they receive this signal print("GameWorld: Client spawning players for peer ", peer_id) @@ -107,21 +110,31 @@ func _on_player_connected(peer_id: int, player_info: Dictionary): func _sync_existing_enemies_to_client(client_peer_id: int): # Find all enemy spawners and sync their spawned enemies to the new client + # Spawners are children of the Entities node, not GameWorld directly var spawners = [] - for child in get_children(): - if child.has_method("get_spawned_enemy_positions") and child.has_method("spawn_enemy_at_position"): - spawners.append(child) + var entities_node = get_node_or_null("Entities") + if entities_node: + # Find spawners in Entities node + for child in entities_node.get_children(): + if child.is_in_group("enemy_spawner") or (child.has_method("get_spawned_enemy_positions") and child.has_method("spawn_enemy_at_position")): + spawners.append(child) + else: + # Fallback: search all children (shouldn't happen, but just in case) + for child in get_children(): + if child.is_in_group("enemy_spawner") or (child.has_method("get_spawned_enemy_positions") and child.has_method("spawn_enemy_at_position")): + spawners.append(child) print("GameWorld: Syncing existing enemies to client ", client_peer_id, " from ", spawners.size(), " spawners") for spawner in spawners: var enemy_data = spawner.get_spawned_enemy_positions() for data in enemy_data: - # Use the stored scene_index for each enemy + # Use the stored scene_index and humanoid_type for each enemy var pos = data.position var scene_index = data.scene_index if "scene_index" in data else -1 - _sync_enemy_spawn.rpc_id(client_peer_id, spawner.name, pos, scene_index) - print("GameWorld: Sent enemy spawn sync to client ", client_peer_id, ": spawner=", spawner.name, " pos=", pos, " scene_index=", scene_index) + var humanoid_type = data.humanoid_type if "humanoid_type" in data else -1 + _sync_enemy_spawn.rpc_id(client_peer_id, spawner.name, pos, scene_index, humanoid_type) + print("GameWorld: Sent enemy spawn sync to client ", client_peer_id, ": spawner=", spawner.name, " pos=", pos, " scene_index=", scene_index, " humanoid_type=", humanoid_type) func _on_player_disconnected(peer_id: int): print("GameWorld: Player disconnected - ", peer_id) @@ -169,23 +182,53 @@ func _reset_server_players_ready_flag(): print("GameWorld: Reset all_clients_ready for server player ", child.name) @rpc("authority", "reliable") -func _sync_enemy_spawn(spawner_name: String, spawn_position: Vector2, scene_index: int = -1): +func _sync_smoke_puffs(_spawner_name: String, puff_positions: Array): + # Clients spawn smoke puffs when server tells them to + if not multiplayer.is_server(): + var smoke_puff_scene = preload("res://scenes/smoke_puff.tscn") + if not smoke_puff_scene: + return + + var entities_node = get_node_or_null("Entities") + if not entities_node: + return + + for pos in puff_positions: + if pos is Vector2: + var puff = smoke_puff_scene.instantiate() + if puff: + puff.global_position = pos + puff.z_index = 10 + if puff.has_node("Sprite2D"): + puff.get_node("Sprite2D").z_index = 10 + entities_node.add_child(puff) + +@rpc("authority", "reliable") +func _sync_enemy_spawn(spawner_name: String, spawn_position: Vector2, scene_index: int = -1, humanoid_type: int = -1): # Clients spawn enemy when server tells them to if not multiplayer.is_server(): - print("GameWorld: Client received RPC to spawn enemy at spawner: ", spawner_name, " position: ", spawn_position, " scene_index: ", scene_index) + print("GameWorld: Client received RPC to spawn enemy at spawner: ", spawner_name, " position: ", spawn_position, " scene_index: ", scene_index, " humanoid_type: ", humanoid_type) - # Find the spawner node by name (it's a direct child of GameWorld) - var spawner = get_node_or_null(spawner_name) + # Find the spawner node by name (spawners are children of Entities node, not GameWorld) + var spawner = null + var entities_node = get_node_or_null("Entities") + if entities_node: + spawner = entities_node.get_node_or_null(spawner_name) + + # Fallback: try as direct child of GameWorld (for backwards compatibility) if not spawner: - push_error("ERROR: Could not find spawner with name: ", spawner_name) + spawner = get_node_or_null(spawner_name) + + if not spawner: + push_error("ERROR: Could not find spawner with name: ", spawner_name, " in Entities node or GameWorld") return if not spawner.has_method("spawn_enemy_at_position"): push_error("ERROR: Spawner does not have spawn_enemy_at_position method!") return - # Call spawn method on the spawner with scene index - spawner.spawn_enemy_at_position(spawn_position, scene_index) + # Call spawn method on the spawner with scene index and humanoid_type + spawner.spawn_enemy_at_position(spawn_position, scene_index, humanoid_type) # Loot ID counter (server only) var loot_id_counter: int = 0 @@ -334,19 +377,18 @@ func _request_loot_pickup(loot_id: int, loot_position: Vector2, player_peer_id: print("GameWorld: Could not find loot for pickup request: id=", loot_id, " pos=", loot_position) @rpc("authority", "reliable") -func _sync_show_level_complete(enemies_defeated: int, times_downed: int, exp_collected: float, coins_collected: int): +func _sync_show_level_complete(level_time: float): # Clients receive level complete UI sync from server if multiplayer.is_server(): return # Server ignores this (it's the sender) - # Update stats before showing - level_enemies_defeated = enemies_defeated - level_times_downed = times_downed - level_exp_collected = exp_collected - level_coins_collected = coins_collected + # Stop HUD timer when level completes (on clients too) + var hud = get_node_or_null("IngameHUD") + if hud and hud.has_method("stop_timer"): + hud.stop_timer() - # Show level complete UI - _show_level_complete_ui() + # Show level complete UI (each client will show their own local player's stats) + _show_level_complete_ui(level_time) @rpc("authority", "reliable") func _sync_hide_level_complete(): @@ -501,6 +543,9 @@ func _generate_dungeon(): if multiplayer.has_multiplayer_peer(): _sync_show_level_number.rpc(current_level) + # Load HUD after dungeon generation completes (non-blocking) + call_deferred("_load_hud") + # Sync dungeon to all clients if multiplayer.has_multiplayer_peer(): # Get host's current room for spawning new players near host @@ -513,6 +558,8 @@ func _generate_dungeon(): print("GameWorld: WARNING: Server dungeon_data has NO 'enemies' key before sync!") _sync_dungeon.rpc(dungeon_data, dungeon_seed, current_level, host_room) + + print("GameWorld: Dungeon generation completed successfully") func _render_dungeon(): if dungeon_data.is_empty(): @@ -1083,6 +1130,10 @@ func _spawn_enemies(): if "damage" in enemy_data: enemy.damage = enemy_data.damage + # If it's a humanoid enemy, set the humanoid_type + if enemy_type.ends_with("enemy_humanoid.tscn") and "humanoid_type" in enemy_data: + enemy.humanoid_type = enemy_data.humanoid_type + # CRITICAL: Set collision mask BEFORE adding to scene to ensure enemies collide with walls (layer 7 = bit 6 = 64) # This overrides any collision_mask set in the scene file enemy.collision_mask = 1 | 2 | 64 # Collide with players (layer 1), objects (layer 2), and walls (layer 7 = bit 6 = 64) @@ -1156,7 +1207,7 @@ func _spawn_interactable_objects(): print("GameWorld: Spawning ", objects.size(), " interactable objects (is_server: ", is_server, ")") - var interactable_object_scene = preload("res://scenes/interactable_object.tscn") + var interactable_object_scene = load("res://scenes/interactable_object.tscn") if not interactable_object_scene: push_error("ERROR: Could not load interactable_object scene!") return @@ -1290,7 +1341,10 @@ func _sync_dungeon_enemy_spawn(enemy_data: Dictionary): # Set enemy stats BEFORE adding to scene if "max_health" in enemy_data: enemy.max_health = enemy_data.max_health - enemy.current_health = enemy_data.max_health + + # If it's a humanoid enemy, set the humanoid_type + if enemy_type.ends_with("enemy_humanoid.tscn") and "humanoid_type" in enemy_data: + enemy.humanoid_type = enemy_data.humanoid_type if "move_speed" in enemy_data: enemy.move_speed = enemy_data.move_speed if "damage" in enemy_data: @@ -1319,6 +1373,42 @@ func _sync_dungeon_enemy_spawn(enemy_data: Dictionary): print("GameWorld: Client spawned dungeon enemy via RPC: ", enemy.name, " at ", enemy_data.position, " (type: ", enemy_type, ") authority: ", enemy.get_multiplayer_authority()) +func _sync_existing_chest_states_to_client(client_peer_id: int): + # Sync chest open states to new client + var entities_node = get_node_or_null("Entities") + if not entities_node: + return + + var opened_chest_count = 0 + for child in entities_node.get_children(): + if child.is_in_group("interactable_object"): + if "object_type" in child and child.object_type == "Chest": + if "is_chest_opened" in child and child.is_chest_opened: + # Found an opened chest - sync it to the client + var obj_name = child.name + _sync_chest_state.rpc_id(client_peer_id, obj_name, true) + opened_chest_count += 1 + print("GameWorld: Syncing opened chest ", obj_name, " to client ", client_peer_id) + + print("GameWorld: Synced ", opened_chest_count, " opened chests to client ", client_peer_id) + +@rpc("authority", "reliable") +func _sync_chest_state(obj_name: String, is_opened: bool): + # Client receives chest state sync + if not multiplayer.is_server(): + var entities_node = get_node_or_null("Entities") + if entities_node: + var chest = entities_node.get_node_or_null(obj_name) + if chest and "is_chest_opened" in chest: + chest.is_chest_opened = is_opened + if chest.has_method("_sync_chest_open"): + # Call the sync function to update visuals (loot type doesn't matter for visual sync) + chest._sync_chest_open("coin") + elif "sprite" in chest and "chest_opened_frame" in chest: + if chest.sprite and chest.chest_opened_frame >= 0: + chest.sprite.frame = chest.chest_opened_frame + print("GameWorld: Client received chest state sync for ", obj_name, " - opened: ", is_opened) + func _sync_existing_torches_to_client(client_peer_id: int): # Sync existing torches to newly connected client if dungeon_data.is_empty() or not dungeon_data.has("torches"): @@ -1461,17 +1551,23 @@ func _on_player_reached_stairs(player: Node): if child.is_in_group("player") and child.has_method("_force_drop_held_object"): child._force_drop_held_object() - # Collect stats from all players - _collect_level_stats() + # Stop HUD timer when level completes + var hud = get_node_or_null("IngameHUD") + var level_time: float = 0.0 + if hud and hud.has_method("stop_timer"): + hud.stop_timer() + # Get the level time before stopping + if hud.has_method("get_level_time"): + level_time = hud.get_level_time() # Fade out player _fade_out_player(player) - # Show level complete UI (server and clients) - _show_level_complete_ui() - # Sync to all clients + # Show level complete UI (server and clients) with per-player stats + _show_level_complete_ui(level_time) + # Sync to all clients (each client will show their own local player's stats) if multiplayer.has_multiplayer_peer(): - _sync_show_level_complete.rpc(level_enemies_defeated, level_times_downed, level_exp_collected, level_coins_collected) + _sync_show_level_complete.rpc(level_time) # After delay, hide UI and generate new level await get_tree().create_timer(5.0).timeout # Show stats for 5 seconds @@ -1515,6 +1611,11 @@ func _on_player_reached_stairs(player: Node): print("GameWorld: Syncing level number ", current_level, " to all clients") _sync_show_level_number.rpc(current_level) + # Restart HUD timer for new level + hud = get_node_or_null("IngameHUD") + if hud and hud.has_method("start_timer"): + hud.start_timer() + # Move all players to start room (server side) _move_all_players_to_start_room() @@ -1537,32 +1638,40 @@ func _on_player_reached_stairs(player: Node): _sync_dungeon.rpc(dungeon_data, dungeon_seed, current_level, start_room) -func _collect_level_stats(): - # Reset stats - level_enemies_defeated = 0 - level_times_downed = 0 - level_exp_collected = 0.0 - level_coins_collected = 0 +func _get_local_player_stats() -> Dictionary: + # Get stats for the local player (for level complete screen) + # Returns a dictionary with: enemies_defeated, coins_collected + var stats = { + "enemies_defeated": 0, + "coins_collected": 0 + } - # Collect from all players + # Find local player(s) - in multiplayer, find player with authority matching this client + # In single-player, just use the first player var players = get_tree().get_nodes_in_group("player") - for player in players: - if player.character_stats: - # Count enemies defeated (kills) - if "kills" in player.character_stats: - level_enemies_defeated += player.character_stats.kills - - # Count times downed (deaths) - if "deaths" in player.character_stats: - level_times_downed += player.character_stats.deaths - - # Collect exp - if "xp" in player.character_stats: - level_exp_collected += player.character_stats.xp - - # Collect coins - if "coin" in player.character_stats: - level_coins_collected += player.character_stats.coin + var local_player = null + + if multiplayer.has_multiplayer_peer(): + # Multiplayer: find player with matching authority + for player in players: + if player.has_method("is_multiplayer_authority") and player.is_multiplayer_authority(): + local_player = player + break + else: + # Single-player: use first player + if players.size() > 0: + local_player = players[0] + + if local_player and local_player.character_stats: + # Get enemies defeated (kills) + if "kills" in local_player.character_stats: + stats.enemies_defeated = local_player.character_stats.kills + + # Get coins collected + if "coin" in local_player.character_stats: + stats.coins_collected = local_player.character_stats.coin + + return stats func _fade_out_player(player: Node): # Fade out all sprite layers @@ -1637,7 +1746,7 @@ func _fade_in_player(player: Node): sprite_layer.modulate.a = 0.0 # Start invisible fade_tween.tween_property(sprite_layer, "modulate:a", 1.0, 1.0) -func _show_level_complete_ui(): +func _show_level_complete_ui(level_time: float = 0.0): # Create or show level complete UI var level_complete_ui = get_node_or_null("LevelCompleteUI") if not level_complete_ui: @@ -1659,11 +1768,17 @@ func _show_level_complete_ui(): if level_complete_ui: if level_complete_ui.has_method("show_stats"): + # Get stats for local player + var local_stats = _get_local_player_stats() + # Use current_level directly (matches what HUD shows) + # current_level hasn't been incremented yet when this is called level_complete_ui.show_stats( - level_enemies_defeated, - level_times_downed, - level_exp_collected, - level_coins_collected + local_stats.enemies_defeated, + 0, # times_downed - not shown per user request + 0.0, # exp_collected - not shown per user request + local_stats.coins_collected, + level_time, + current_level ) func _show_level_number(): @@ -1699,47 +1814,167 @@ func _show_level_number(): else: print("GameWorld: ERROR - Could not create or find LevelTextUI!") +func _load_hud(): + # Check if HUD already exists - only load it once + var existing_hud = get_node_or_null("IngameHUD") + if existing_hud and is_instance_valid(existing_hud): + print("GameWorld: HUD already exists, skipping load (will just reset timer)") + # Reset timer for new level if method exists + if existing_hud.has_method("reset_level_timer"): + existing_hud.reset_level_timer() + return + + # Load HUD dynamically to avoid scene loading errors + # This is optional - don't crash if HUD scene doesn't exist or fails to load + # Use a try-catch-like approach by checking for errors + var hud_scene_path = "res://scenes/ingame_hud.tscn" + + # Check if scene exists + if not ResourceLoader.exists(hud_scene_path): + print("GameWorld: HUD scene not found at ", hud_scene_path, " - HUD disabled") + return + + # Try to load the scene + var hud_scene = load(hud_scene_path) + if not hud_scene: + print("GameWorld: Warning - Failed to load HUD scene from ", hud_scene_path) + return + + # Try to instantiate + var hud = null + if hud_scene.has_method("instantiate"): + hud = hud_scene.instantiate() + else: + print("GameWorld: Warning - HUD scene is not a PackedScene") + return + + if not hud: + print("GameWorld: Warning - Failed to instantiate HUD scene") + return + + # Add to scene tree + hud.name = "IngameHUD" + + # Ensure HUD is visible and on top layer + hud.visible = true + hud.layer = 100 # High layer to ensure HUD is on top of everything + + add_child(hud) + + # Reset timer if method exists + if hud.has_method("reset_level_timer"): + hud.reset_level_timer() + + print("GameWorld: HUD loaded successfully and added to scene tree") + print("GameWorld: HUD visible: ", hud.visible, ", layer: ", hud.layer) + +func _initialize_hud(): + # Find or get the HUD and reset its level timer + # This is optional - don't crash if HUD doesn't exist + var hud = get_node_or_null("IngameHUD") + if hud and is_instance_valid(hud) and hud.has_method("reset_level_timer"): + hud.reset_level_timer() + else: + print("GameWorld: HUD not found or not ready - this is OK if HUD scene is missing") + func _create_level_complete_ui_programmatically() -> Node: # Create level complete UI programmatically var canvas_layer = CanvasLayer.new() canvas_layer.name = "LevelCompleteUI" add_child(canvas_layer) + # Load standard font (as FontFile) + var standard_font = load("res://assets/fonts/standard_font.png") as FontFile + if not standard_font: + print("GameWorld: Warning - Could not load standard_font.png as FontFile") + + # Create theme with standard font + var theme = Theme.new() + if standard_font: + theme.default_font = standard_font + theme.default_font_size = 10 + var vbox = VBoxContainer.new() - vbox.set_anchors_preset(Control.PRESET_CENTER) - vbox.offset_top = -200 # Position a bit up from center + vbox.theme = theme canvas_layer.add_child(vbox) - # Title + # Center the VBoxContainer properly + # Use PRESET_CENTER to anchor at center, then set offsets to center horizontally + var screen_size = get_viewport().get_visible_rect().size + vbox.set_anchors_preset(Control.PRESET_CENTER) + # Set offsets so container is centered horizontally (equal left/right offsets) + # and positioned vertically (offset from center) + vbox.offset_left = - screen_size.x / 2 + vbox.offset_right = screen_size.x / 2 + vbox.offset_top = -200 # Position a bit up from center + vbox.offset_bottom = screen_size.y / 2 - 200 # Balance to maintain vertical position + vbox.size_flags_horizontal = Control.SIZE_EXPAND_FILL # Expand to fill available width + + # Title - "LEVEL COMPLETE!" in large size var title = Label.new() + title.name = "TitleLabel" title.text = "LEVEL COMPLETE!" - title.add_theme_font_size_override("font_size", 48) + title.theme = theme + title.add_theme_font_size_override("font_size", 72) # Large size title.horizontal_alignment = HORIZONTAL_ALIGNMENT_CENTER + title.size_flags_horizontal = Control.SIZE_EXPAND_FILL # Expand to fill available width vbox.add_child(title) + # Stats header - "stats" in smaller size + var stats_header = Label.new() + stats_header.name = "StatsHeaderLabel" + stats_header.text = "stats" + stats_header.theme = theme + stats_header.add_theme_font_size_override("font_size", 32) # Smaller than title + stats_header.horizontal_alignment = HORIZONTAL_ALIGNMENT_CENTER + stats_header.size_flags_horizontal = Control.SIZE_EXPAND_FILL # Expand to fill available width + vbox.add_child(stats_header) + # Stats container var stats_container = VBoxContainer.new() + stats_container.theme = theme + stats_container.size_flags_horizontal = Control.SIZE_EXPAND_FILL # Expand to fill available width vbox.add_child(stats_container) - # Stats labels + # Stats labels - enemies defeated and level time var enemies_label = Label.new() enemies_label.name = "EnemiesLabel" + enemies_label.theme = theme enemies_label.add_theme_font_size_override("font_size", 24) + enemies_label.horizontal_alignment = HORIZONTAL_ALIGNMENT_CENTER + enemies_label.size_flags_horizontal = Control.SIZE_EXPAND_FILL # Expand to fill available width stats_container.add_child(enemies_label) + var time_label = Label.new() + time_label.name = "TimeLabel" + time_label.theme = theme + time_label.add_theme_font_size_override("font_size", 24) + time_label.horizontal_alignment = HORIZONTAL_ALIGNMENT_CENTER + time_label.size_flags_horizontal = Control.SIZE_EXPAND_FILL # Expand to fill available width + stats_container.add_child(time_label) + var downed_label = Label.new() downed_label.name = "DownedLabel" + downed_label.theme = theme downed_label.add_theme_font_size_override("font_size", 24) + downed_label.horizontal_alignment = HORIZONTAL_ALIGNMENT_CENTER + downed_label.size_flags_horizontal = Control.SIZE_EXPAND_FILL # Expand to fill available width stats_container.add_child(downed_label) var exp_label = Label.new() exp_label.name = "ExpLabel" + exp_label.theme = theme exp_label.add_theme_font_size_override("font_size", 24) + exp_label.horizontal_alignment = HORIZONTAL_ALIGNMENT_CENTER + exp_label.size_flags_horizontal = Control.SIZE_EXPAND_FILL # Expand to fill available width stats_container.add_child(exp_label) var coins_label = Label.new() coins_label.name = "CoinsLabel" + coins_label.theme = theme coins_label.add_theme_font_size_override("font_size", 24) + coins_label.horizontal_alignment = HORIZONTAL_ALIGNMENT_CENTER + coins_label.size_flags_horizontal = Control.SIZE_EXPAND_FILL # Expand to fill available width stats_container.add_child(coins_label) # Add script @@ -1810,7 +2045,7 @@ func _spawn_blocking_doors(): if blocking_doors == null or not blocking_doors is Array: return - var door_scene = preload("res://scenes/door.tscn") + var door_scene = load("res://scenes/door.tscn") if not door_scene: push_error("ERROR: Could not load door scene!") return @@ -1822,6 +2057,9 @@ func _spawn_blocking_doors(): print("GameWorld: Spawning ", blocking_doors.size(), " blocking doors") + # Track pillar placement per room to avoid duplicates + var rooms_with_pillars: Dictionary = {} # Key: room string "x,y", Value: true if pillar exists + for i in range(blocking_doors.size()): var door_data = blocking_doors[i] if not door_data is Dictionary: @@ -1864,14 +2102,24 @@ func _spawn_blocking_doors(): print("GameWorld: Creating blocking door ", door.name, " (", door_data.type, ") for puzzle room (", door_data.blocking_room.x, ", ", door_data.blocking_room.y, "), puzzle_type: ", door_data.puzzle_type) - # CRITICAL: Store original door connection info from door_data.door + # CRITICAL: Store original door connection info from door_data # For blocking doors: room1 = puzzle room (where door is IN / leads FROM) # room2 = other room (where door leads TO) # blocking_room = puzzle room (same as room1, where puzzle is) - if "door" in door_data and door_data.door is Dictionary: + # Use original_room1 and original_room2 from door_data (which may have been swapped) + if "original_room1" in door_data and door_data.original_room1: + door.room1 = door_data.original_room1 # This is always the puzzle room + elif "door" in door_data and door_data.door is Dictionary: + # Fallback to original door if original_room1 not set var original_door = door_data.door if "room1" in original_door and original_door.room1: door.room1 = original_door.room1 + + if "original_room2" in door_data and door_data.original_room2: + door.room2 = door_data.original_room2 # This is always the other room + elif "door" in door_data and door_data.door is Dictionary: + # Fallback to original door if original_room2 not set + var original_door = door_data.door if "room2" in original_door and original_door.room2: door.room2 = original_door.room2 @@ -1990,6 +2238,42 @@ func _spawn_blocking_doors(): door.connected_switches.append(existing_switch) has_puzzle_element = true print("GameWorld: Connected door ", door.name, " (room: ", door_blocking_room.get("x", "?"), ",", door_blocking_room.get("y", "?"), ") to existing switch ", existing_switch.name, " in SAME room") + + # If this is a pillar switch, ensure a pillar exists in the room + # Check if switch is a pillar switch (check both door_data and existing switch) + var is_pillar_switch = (switch_type == "pillar") + if not is_pillar_switch and "switch_type" in existing_switch: + is_pillar_switch = (existing_switch.switch_type == "pillar") + + if is_pillar_switch: + # Check if we've already verified/placed a pillar for this room + var room_key = str(door_blocking_room.x) + "," + str(door_blocking_room.y) + if not rooms_with_pillars.has(room_key): + # First time checking this room - check if pillar exists + var pillar_exists_in_room = false + for obj in get_tree().get_nodes_in_group("interactable_object"): + if is_instance_valid(obj): + var obj_type = obj.object_type if "object_type" in obj else "" + if obj_type == "Pillar": + if obj.has_meta("room"): + var obj_room = obj.get_meta("room") + if obj_room and not obj_room.is_empty(): + if obj_room.x == door_blocking_room.x and obj_room.y == door_blocking_room.y and \ + obj_room.w == door_blocking_room.w and obj_room.h == door_blocking_room.h: + pillar_exists_in_room = true + print("GameWorld: Found existing pillar in room (", door_blocking_room.x, ",", door_blocking_room.y, ")") + break + + # If no pillar exists, place one + if not pillar_exists_in_room: + print("GameWorld: Pillar switch found but no pillar in room (", door_blocking_room.x, ",", door_blocking_room.y, ") - placing pillar now") + _place_pillar_in_room(door_blocking_room, existing_switch.global_position) + # Mark room as checked after attempting to place pillar + # Note: Even if placement fails, mark as checked to avoid repeated attempts + rooms_with_pillars[room_key] = true + else: + # Pillar exists - mark room as checked + rooms_with_pillars[room_key] = true else: push_error("GameWorld: ERROR - Attempted to connect door ", door.name, " to switch ", existing_switch.name, " but rooms don't match! Door room: (", door_blocking_room.get("x", "?"), ",", door_blocking_room.get("y", "?"), "), Switch room: (", existing_switch_room_final.get("x", "?") if existing_switch_room_final else "?", ",", existing_switch_room_final.get("y", "?") if existing_switch_room_final else "?", ")") # Don't connect - spawn a new switch instead @@ -2038,7 +2322,16 @@ func _spawn_blocking_doors(): # If this is a pillar switch, place a pillar in the same room if switch_type == "pillar": - _place_pillar_in_room(door_blocking_room, switch_pos) + # Check if we've already placed a pillar for this room + var room_key = str(door_blocking_room.x) + "," + str(door_blocking_room.y) + if not rooms_with_pillars.has(room_key): + print("GameWorld: Placing pillar for new pillar switch in room (", door_blocking_room.x, ",", door_blocking_room.y, ")") + _place_pillar_in_room(door_blocking_room, switch_pos) + # Mark room as checked after attempting to place pillar + # Note: Even if placement fails, mark as checked to avoid repeated attempts + rooms_with_pillars[room_key] = true + else: + print("GameWorld: Pillar already exists/placed for room (", door_blocking_room.x, ",", door_blocking_room.y, ") - skipping placement") else: push_error("GameWorld: ERROR - Switch ", switch.name, " room (", switch_room_check.x, ",", switch_room_check.y, ") doesn't match door blocking_room (", door_blocking_room.x, ",", door_blocking_room.y, ")! NOT connecting! Removing switch.") switch.queue_free() # Remove the switch since it's in wrong room @@ -2119,15 +2412,18 @@ func _spawn_blocking_doors(): print("GameWorld: Spawned ", blocking_doors.size(), " blocking doors") func _spawn_floor_switch(i_position: Vector2, required_weight: float, tile_x: int, tile_y: int, switch_type: String = "walk", switch_room: Dictionary = {}) -> Node: - # Spawn a floor switch + # Spawn a floor switch using the scene file # switch_type: "walk" for walk-on switch (weight 1), "pillar" for pillar switch (weight 5) - var switch_script = load("res://scripts/floor_switch.gd") - if not switch_script: - push_error("ERROR: Could not load floor_switch script!") + var switch_scene = preload("res://scenes/floor_switch.tscn") + if not switch_scene: + push_error("ERROR: Could not load floor_switch scene!") + return null + + var switch = switch_scene.instantiate() + if not switch: + push_error("ERROR: Could not instantiate floor_switch scene!") return null - var switch = Area2D.new() - switch.set_script(switch_script) switch.name = "FloorSwitch_%d_%d" % [tile_x, tile_y] switch.add_to_group("floor_switch") @@ -2136,13 +2432,6 @@ func _spawn_floor_switch(i_position: Vector2, required_weight: float, tile_x: in switch.required_weight = required_weight # Will be overridden in _ready() based on switch_type, but set it here too switch.switch_tile_position = Vector2i(tile_x, tile_y) - # Create collision shape - var collision_shape = CollisionShape2D.new() - var circle_shape = CircleShape2D.new() - circle_shape.radius = 8.0 # 16 pixel diameter - collision_shape.shape = circle_shape - switch.add_child(collision_shape) - # Set multiplayer authority if multiplayer.has_multiplayer_peer(): switch.set_multiplayer_authority(1) @@ -2259,9 +2548,11 @@ func _spawn_room_triggers(): print("GameWorld: Spawning ", rooms.size(), " room triggers") + var triggers_spawned = 0 for i in range(rooms.size()): var room = rooms[i] if not room is Dictionary: + print("GameWorld: WARNING - Room at index ", i, " is not a Dictionary, skipping") continue var trigger = Area2D.new() @@ -2298,8 +2589,10 @@ func _spawn_room_triggers(): # Add to scene entities_node.add_child(trigger) + triggers_spawned += 1 + print("GameWorld: Added room trigger ", trigger.name, " for room (", room.x, ", ", room.y, ") - ", triggers_spawned, "/", rooms.size()) - print("GameWorld: Spawned ", rooms.size(), " room triggers") + print("GameWorld: Spawned ", triggers_spawned, " room triggers (out of ", rooms.size(), " rooms)") func _place_key_in_room(room: Dictionary): # Place a key in the specified room (as loot) @@ -2352,7 +2645,7 @@ func _place_pillar_in_room(room: Dictionary, switch_position: Vector2): if room.is_empty(): return - var interactable_object_scene = preload("res://scenes/interactable_object.tscn") + var interactable_object_scene = load("res://scenes/interactable_object.tscn") if not interactable_object_scene: push_error("ERROR: Could not load interactable_object scene for pillar!") return @@ -2366,15 +2659,22 @@ func _place_pillar_in_room(room: Dictionary, switch_position: Vector2): var tile_size = 16 var valid_positions = [] - # Room interior is from room.x + 2 to room.x + room.w - 2 (excluding 2-tile walls) + # Room interior floor tiles: from room.x + 2 to room.x + room.w - 3 (excluding 2-tile walls on each side) + # Floor tiles are at: room.x+2, room.x+3, ..., room.x+room.w-3 (last floor tile before right wall) # CRITICAL: Also exclude last row/column of floor tiles to prevent objects from spawning in walls # Objects are 16x16, so we need at least 1 tile buffer from walls # Floor tiles are at: room.x+2, room.x+3, ..., room.x+room.w-3 (last floor tile before wall) # To exclude last tile, we want: room.x+2, room.x+3, ..., room.x+room.w-4 var min_x = room.x + 2 - var max_x = room.x + room.w - 4 # Exclude last 2 floor tiles (room.w-3 is last floor, room.w-4 is second-to-last) + var max_x = room.x + room.w - 4 # Exclude last 2 floor tiles (room.w-3 is last floor, room.w-4 is second-to-last) var min_y = room.y + 2 - var max_y = room.y + room.h - 4 # Exclude last 2 floor tiles (room.h-3 is last floor, room.h-4 is second-to-last) + var max_y = room.y + room.h - 4 # Exclude last 2 floor tiles (room.h-3 is last floor, room.h-4 is second-to-last) + + var interior_width = room.w - 4 # Exclude 2-tile walls on each side + var interior_height = room.h - 4 # Exclude 2-tile walls on each side + print("GameWorld: _place_pillar_in_room - Searching for valid positions in room (", room.x, ",", room.y, ",", room.w, "x", room.h, ")") + print("GameWorld: Interior size: ", interior_width, "x", interior_height, ", Checking tiles: x[", min_x, " to ", max_x, "], y[", min_y, " to ", max_y, "]") + print("GameWorld: Switch position: ", switch_position) for x in range(min_x, max_x + 1): # +1 because range is exclusive at end for y in range(min_y, max_y + 1): @@ -2388,15 +2688,22 @@ func _place_pillar_in_room(room: Dictionary, switch_position: Vector2): var world_y = y * tile_size + 8 var world_pos = Vector2(world_x, world_y) - # Ensure pillar is at least 2 tiles away from the switch + # Ensure pillar is at least 1 tile away from the switch var distance_to_switch = world_pos.distance_to(switch_position) - if distance_to_switch >= tile_size * 2: # At least 2 tiles away + if distance_to_switch >= tile_size * 1: # At least 1 tiles away valid_positions.append(world_pos) + print("GameWorld: Valid position found at (", x, ",", y, ") -> world (", world_x, ",", world_y, "), distance to switch: ", distance_to_switch) + else: + print("GameWorld: Position at (", x, ",", y, ") -> world (", world_x, ",", world_y, ") too close to switch (distance: ", distance_to_switch, " < ", tile_size, ")") + print("GameWorld: Found ", valid_positions.size(), " valid positions for pillar") if valid_positions.size() > 0: - # Pick a random position + # Pick a deterministic random position using dungeon seed + # This ensures server and clients place pillars in the same positions var rng = RandomNumberGenerator.new() - rng.randomize() + # Use dungeon seed + room position + switch position as seed for deterministic randomness + var pillar_seed = dungeon_seed + (room.x * 1000) + (room.y * 100) + int(switch_position.x) + int(switch_position.y) + rng.seed = pillar_seed var pillar_pos = valid_positions[rng.randi() % valid_positions.size()] # Spawn pillar interactable object diff --git a/src/scripts/interactable_object.gd b/src/scripts/interactable_object.gd index 3f9387f..032244f 100644 --- a/src/scripts/interactable_object.gd +++ b/src/scripts/interactable_object.gd @@ -270,7 +270,14 @@ func _break_into_pieces(): tp.angular_velocity = randf_range(-7, 7) get_parent().call_deferred("add_child", tp) - + + play_destroy_sound() + self.set_deferred("collision_layer", 0) + self.visible = false + if ($SfxShatter.playing): + await $SfxShatter.finished + if ($SfxBreakCrate.playing): + await $SfxShatter.finished # Remove self queue_free() @@ -294,13 +301,14 @@ func on_grabbed(by_player): # In multiplayer, send RPC to server if client is opening if multiplayer.has_multiplayer_peer() and not is_multiplayer_authority(): # Client - send request to server - if by_player and by_player.is_multiplayer_authority(): + if by_player: var player_peer_id = by_player.get_multiplayer_authority() + print("Chest: Client sending RPC to open chest, player_peer_id: ", player_peer_id) _request_chest_open.rpc_id(1, player_peer_id) else: # Server or single player - open directly _open_chest(by_player) - return + return # CRITICAL: Return early to prevent normal grab behavior is_being_held = true held_by_player = by_player @@ -434,7 +442,20 @@ func setup_chest(): var chest_frames = [12, 31] var opened_frames = [13, 32] - var index = randi() % chest_frames.size() + + # Use deterministic randomness based on dungeon seed and position + # This ensures host and clients get the same chest variant + var chest_seed = 0 + var game_world = get_tree().get_first_node_in_group("game_world") + if game_world and "dungeon_seed" in game_world: + chest_seed = game_world.dungeon_seed + # Add position to seed to make each chest unique but deterministic + chest_seed += int(global_position.x) * 1000 + int(global_position.y) + + var rng = RandomNumberGenerator.new() + rng.seed = chest_seed + var index = rng.randi() % chest_frames.size() + chest_closed_frame = chest_frames[index] chest_opened_frame = opened_frames[index] @@ -478,7 +499,7 @@ func _open_chest(by_player: Node = null): # Only process on server (authority) if multiplayer.has_multiplayer_peer() and not is_multiplayer_authority(): return - + $SfxOpenChest.play() is_chest_opened = true if sprite and chest_opened_frame >= 0: sprite.frame = chest_opened_frame @@ -502,34 +523,34 @@ func _open_chest(by_player: Node = null): by_player.add_coins(1) # Show pickup notification with coin graphic var coin_texture = load("res://assets/gfx/pickups/gold_coin.png") - _show_item_pickup_notification(by_player, "+1 coin", selected_loot.color, coin_texture, 6, 1, 0) + _show_item_pickup_notification(by_player, "+1 COIN", selected_loot.color, coin_texture, 6, 1, 0) "apple": var heal_amount = 20.0 if by_player.has_method("heal"): by_player.heal(heal_amount) # Show pickup notification with apple graphic var items_texture = load("res://assets/gfx/pickups/items_n_shit.png") - _show_item_pickup_notification(by_player, "+" + str(int(heal_amount)) + " hp", selected_loot.color, items_texture, 20, 14, (8 * 20) + 11) + _show_item_pickup_notification(by_player, "+" + str(int(heal_amount)) + " HP", selected_loot.color, items_texture, 20, 14, (8 * 20) + 11) "banana": var heal_amount = 20.0 if by_player.has_method("heal"): by_player.heal(heal_amount) # Show pickup notification with banana graphic var items_texture = load("res://assets/gfx/pickups/items_n_shit.png") - _show_item_pickup_notification(by_player, "+" + str(int(heal_amount)) + " hp", selected_loot.color, items_texture, 20, 14, (8 * 20) + 12) + _show_item_pickup_notification(by_player, "+" + str(int(heal_amount)) + " HP", selected_loot.color, items_texture, 20, 14, (8 * 20) + 12) "cherry": var heal_amount = 20.0 if by_player.has_method("heal"): by_player.heal(heal_amount) # Show pickup notification with cherry graphic var items_texture = load("res://assets/gfx/pickups/items_n_shit.png") - _show_item_pickup_notification(by_player, "+" + str(int(heal_amount)) + " hp", selected_loot.color, items_texture, 20, 14, (8 * 20) + 13) + _show_item_pickup_notification(by_player, "+" + str(int(heal_amount)) + " HP", selected_loot.color, items_texture, 20, 14, (8 * 20) + 13) "key": if by_player.has_method("add_key"): by_player.add_key(1) # Show pickup notification with key graphic var items_texture = load("res://assets/gfx/pickups/items_n_shit.png") - _show_item_pickup_notification(by_player, "+1 key", selected_loot.color, items_texture, 20, 14, (13 * 20) + 10) + _show_item_pickup_notification(by_player, "+1 KEY", selected_loot.color, items_texture, 20, 14, (13 * 20) + 10) # Play chest open sound if has_node("SfxChestOpen"): @@ -549,7 +570,10 @@ func _request_chest_open(player_peer_id: int): if not multiplayer.is_server(): return + print("Chest: Server received RPC to open chest, player_peer_id: ", player_peer_id) + if is_chest_opened: + print("Chest: Chest already opened, ignoring request") return # Find the player by peer ID @@ -564,6 +588,7 @@ func _request_chest_open(player_peer_id: int): push_error("Chest: ERROR - Could not find player with peer_id ", player_peer_id, " for chest opening!") return + print("Chest: Found player ", player.name, " for peer_id ", player_peer_id, ", opening chest") # Open chest on server (this will give item to player) _open_chest(player) @@ -588,3 +613,24 @@ func _show_item_pickup_notification(player: Node, text: String, text_color: Colo parent.add_child(floating_text) floating_text.global_position = player.global_position + Vector2(0, -20) floating_text.setup(text, text_color, 0.5, 0.5, item_texture, sprite_hframes, sprite_vframes, sprite_frame) # Show for 0.5s, fade over 0.5s + +func play_destroy_sound(): + if object_type == "Pot": + $SfxShatter.play() + else: + $SfxBreakCrate.play() + pass + +func play_drag_sound(): + if object_type == "Pot": + if !$SfxDrag.playing: + $SfxDrag.play() + else: + if !$SfxDragRock.playing: + $SfxDragRock.play() + pass + +func stop_drag_sound(): + $SfxDrag.stop() + $SfxDragRock.stop() + pass diff --git a/src/scripts/level_complete_ui.gd b/src/scripts/level_complete_ui.gd index 485c171..463487b 100644 --- a/src/scripts/level_complete_ui.gd +++ b/src/scripts/level_complete_ui.gd @@ -3,32 +3,46 @@ extends CanvasLayer # Level Complete UI - Shows stats when level is completed var title_label: Label = null +var stats_header_label: Label = null var enemies_label: Label = null +var time_label: Label = null var downed_label: Label = null var exp_label: Label = null var coins_label: Label = null func _ready(): visible = false + _find_labels() + +func _find_labels(): # Find labels (works for both scene-based and programmatically created UI) var vbox = get_child(0) if get_child_count() > 0 else null if vbox: for child in vbox.get_children(): - if child is Label and child.text == "LEVEL COMPLETE!": - title_label = child - elif child.name == "EnemiesLabel": - enemies_label = child - elif child.name == "DownedLabel": - downed_label = child - elif child.name == "ExpLabel": - exp_label = child - elif child.name == "CoinsLabel": - coins_label = child + if child is Label: + # Check by name first (more reliable) + if child.name == "TitleLabel" or (title_label == null and (child.text == "LEVEL COMPLETE!" or child.text.begins_with("LEVEL"))): + title_label = child + elif child.name == "StatsHeaderLabel" or (stats_header_label == null and child.text == "stats"): + stats_header_label = child + # Check by name for other labels + elif child.name == "EnemiesLabel": + enemies_label = child + elif child.name == "TimeLabel": + time_label = child + elif child.name == "DownedLabel": + downed_label = child + elif child.name == "ExpLabel": + exp_label = child + elif child.name == "CoinsLabel": + coins_label = child elif child is VBoxContainer: # Stats container for stat_child in child.get_children(): if stat_child.name == "EnemiesLabel": enemies_label = stat_child + elif stat_child.name == "TimeLabel": + time_label = stat_child elif stat_child.name == "DownedLabel": downed_label = stat_child elif stat_child.name == "ExpLabel": @@ -36,22 +50,48 @@ func _ready(): elif stat_child.name == "CoinsLabel": coins_label = stat_child -func show_stats(enemies_defeated: int, times_downed: int, exp_collected: float, coins_collected: int): +func show_stats(enemies_defeated: int, times_downed: int, exp_collected: float, coins_collected: int, level_time: float, level_number: int = 1): + # Ensure labels are found (in case _ready() hasn't run yet) + _find_labels() + # Update labels if title_label: - title_label.text = "LEVEL COMPLETE!" + title_label.text = "LEVEL " + str(level_number) + " COMPLETE!" + else: + print("LevelCompleteUI: WARNING - title_label not found!") + + if stats_header_label: + stats_header_label.text = "stats" if enemies_label: - enemies_label.text = "Enemies Defeated: " + str(enemies_defeated) + enemies_label.text = "Enemies defeated: " + str(enemies_defeated) + enemies_label.visible = true + else: + print("LevelCompleteUI: WARNING - enemies_label not found!") + # Format level time as MM:SS + if time_label: + var minutes = int(level_time) / 60 + var seconds = int(level_time) % 60 + time_label.text = "Finish time: %02d:%02d" % [minutes, seconds] + time_label.visible = true + else: + print("LevelCompleteUI: WARNING - time_label not found!") + + # Hide labels that are not needed (per user request: only show enemies, coins, and time) if downed_label: + downed_label.visible = false downed_label.text = "Times Downed: " + str(times_downed) if exp_label: + exp_label.visible = false exp_label.text = "EXP Collected: " + str(int(exp_collected)) if coins_label: - coins_label.text = "Coins Collected: " + str(coins_collected) + coins_label.text = "Coins collected: " + str(coins_collected) + coins_label.visible = true + else: + print("LevelCompleteUI: WARNING - coins_label not found!") # Show UI visible = true @@ -68,9 +108,15 @@ func show_stats(enemies_defeated: int, times_downed: int, exp_collected: float, if title_label: title_label.modulate.a = 0.0 fade_in.tween_property(title_label, "modulate:a", 1.0, 0.5) + if stats_header_label: + stats_header_label.modulate.a = 0.0 + fade_in.tween_property(stats_header_label, "modulate:a", 1.0, 0.5) if enemies_label: enemies_label.modulate.a = 0.0 fade_in.tween_property(enemies_label, "modulate:a", 1.0, 0.5) + if time_label: + time_label.modulate.a = 0.0 + fade_in.tween_property(time_label, "modulate:a", 1.0, 0.5) if downed_label: downed_label.modulate.a = 0.0 fade_in.tween_property(downed_label, "modulate:a", 1.0, 0.5) diff --git a/src/scripts/loot.gd b/src/scripts/loot.gd index 7aeeeeb..b02fc51 100644 --- a/src/scripts/loot.gd +++ b/src/scripts/loot.gd @@ -38,6 +38,7 @@ var collected: bool = false @onready var sfx_coin_collect = $SfxCoinCollect @onready var sfx_loot_collect = $SfxLootCollect @onready var sfx_potion_collect = $SfxPotionCollect +@onready var sfx_banana_collect = $SfxBananaCollect @onready var sfx_key_collect = $SfxKeyCollect func _ready(): @@ -102,21 +103,21 @@ func _setup_sprite(): sprite.texture = items_texture sprite.hframes = 20 sprite.vframes = 14 - sprite.frame = (8 * 20) + 11 + sprite.frame = (8 * 20) + 10 LootType.BANANA: var items_texture = load("res://assets/gfx/pickups/items_n_shit.png") if items_texture: sprite.texture = items_texture sprite.hframes = 20 sprite.vframes = 14 - sprite.frame = (8 * 20) + 12 + sprite.frame = (8 * 20) + 11 LootType.CHERRY: var items_texture = load("res://assets/gfx/pickups/items_n_shit.png") if items_texture: sprite.texture = items_texture sprite.hframes = 20 sprite.vframes = 14 - sprite.frame = (8 * 20) + 13 + sprite.frame = (8 * 20) + 12 LootType.KEY: var items_texture = load("res://assets/gfx/pickups/items_n_shit.png") if items_texture: @@ -165,6 +166,14 @@ func _physics_process(delta): # Apply gravity to Z-axis acceleration_z = -300.0 # Gravity velocity_z += acceleration_z * delta + + # CRITICAL: Apply damping to velocity_z to lerp it towards 0 (prevents infinite bouncing) + # Dampen more when velocity is small (closer to ground) but allow normal bounces first + var damping_factor = 8.0 # How quickly velocity_z approaches 0 (allow more visible bounces) + if abs(velocity_z) < 25.0: # More aggressive damping for very small velocities only + damping_factor = 20.0 + velocity_z = lerpf(velocity_z, 0.0, 1.0 - exp(-damping_factor * delta)) + position_z += velocity_z * delta # Apply air resistance to slow down horizontal movement while airborne @@ -177,24 +186,38 @@ func _physics_process(delta): # Apply friction when on ground (dampen X/Y momentum faster) velocity = velocity.lerp(Vector2.ZERO, 1.0 - exp(-friction * delta)) - # Check if we should bounce (only if not collected) + # Check if we should bounce (only if not collected and velocity is significant) + # Allow bouncing but ensure it eventually stops if not collected and abs(velocity_z) > min_bounce_velocity: # Bounce on floor - if loot_type == LootType.COIN and bounce_timer == 0.0: - # Play bounce sound for coins + # Only play bounce sound if bounce is significant enough and timer has elapsed + # CRITICAL: Only play sound if velocity is large enough and coin is actually falling (downward) + if loot_type == LootType.COIN and bounce_timer == 0.0 and abs(velocity_z) > 50.0 and velocity_z < 0.0: + # Play bounce sound for coins (only for significant downward velocities) if sfx_coin_bounce: - # Adjust volume based on bounce velocity - sfx_coin_bounce.volume_db = -1.0 + (-10.0 - (velocity_z * 0.1)) + # Adjust volume based on bounce velocity (softer for smaller bounces) + var volume_multiplier = clamp(abs(velocity_z) / 100.0, 0.3, 1.0) + sfx_coin_bounce.volume_db = -3.0 + (-12.0 * (1.0 - volume_multiplier)) sfx_coin_bounce.play() - bounce_timer = 0.08 # Prevent rapid bounce sounds + bounce_timer = 0.12 # Prevent rapid bounce sounds but allow reasonable bounce rate velocity_z = - velocity_z * bounce_restitution - is_airborne = true # Still bouncing + + # CRITICAL: Force stop bouncing if velocity is too small after bounce (prevent micro-bounces) + # Use a lower threshold to allow a few more bounces before stopping + if abs(velocity_z) < min_bounce_velocity * 0.5: + velocity_z = 0.0 + is_airborne = false + else: + is_airborne = true # Still bouncing else: + # Velocity too small or collected - stop bouncing velocity_z = 0.0 is_airborne = false else: is_airborne = false + # Ensure velocity_z is zero when on ground + velocity_z = 0.0 # Apply friction even when not airborne (on ground) velocity = velocity.lerp(Vector2.ZERO, 1.0 - exp(-friction * delta)) @@ -340,7 +363,7 @@ func _process_pickup_on_server(player: Node): player.add_coins(coin_value) # Show floating text with item graphic and text var coin_texture = load("res://assets/gfx/pickups/gold_coin.png") - _show_floating_text(player, "+" + str(coin_value) + " coin", Color(1.0, 0.84, 0.0), 0.5, 0.5, coin_texture, 6, 1, 0) + _show_floating_text(player, "+" + str(coin_value) + " COIN", Color(1.0, 0.84, 0.0), 0.5, 0.5, coin_texture, 6, 1, 0) self.visible = false @@ -358,7 +381,7 @@ func _process_pickup_on_server(player: Node): player.heal(heal_amount) # Show floating text with item graphic and heal amount var items_texture = load("res://assets/gfx/pickups/items_n_shit.png") - _show_floating_text(player, "+" + str(int(actual_heal)) + " hp", Color.GREEN, 0.5, 0.5, items_texture, 20, 14, (8 * 20) + 11) + _show_floating_text(player, "+" + str(int(actual_heal)) + " HP", Color.GREEN, 0.5, 0.5, items_texture, 20, 14, (8 * 20) + 11) self.visible = false @@ -367,8 +390,8 @@ func _process_pickup_on_server(player: Node): await sfx_potion_collect.finished queue_free() LootType.BANANA: - if sfx_potion_collect: - sfx_potion_collect.play() + if sfx_banana_collect: + sfx_banana_collect.play() # Heal player var actual_heal = 0.0 if player.has_method("heal"): @@ -376,17 +399,17 @@ func _process_pickup_on_server(player: Node): player.heal(heal_amount) # Show floating text with item graphic and heal amount var items_texture = load("res://assets/gfx/pickups/items_n_shit.png") - _show_floating_text(player, "+" + str(int(actual_heal)) + " hp", Color.GREEN, 0.5, 0.5, items_texture, 20, 14, (8 * 20) + 12) + _show_floating_text(player, "+" + str(int(actual_heal)) + " HP", Color.GREEN, 0.5, 0.5, items_texture, 20, 14, (8 * 20) + 12) self.visible = false # Wait for sound to finish before removing - if sfx_potion_collect and sfx_potion_collect.playing: - await sfx_potion_collect.finished + if sfx_banana_collect and sfx_banana_collect.playing: + await sfx_banana_collect.finished queue_free() LootType.CHERRY: - if sfx_potion_collect: - sfx_potion_collect.play() + if sfx_banana_collect: + sfx_banana_collect.play() # Heal player var actual_heal = 0.0 if player.has_method("heal"): @@ -394,13 +417,13 @@ func _process_pickup_on_server(player: Node): player.heal(heal_amount) # Show floating text with item graphic and heal amount var items_texture = load("res://assets/gfx/pickups/items_n_shit.png") - _show_floating_text(player, "+" + str(int(actual_heal)) + " hp", Color.GREEN, 0.5, 0.5, items_texture, 20, 14, (8 * 20) + 13) + _show_floating_text(player, "+" + str(int(actual_heal)) + " HP", Color.GREEN, 0.5, 0.5, items_texture, 20, 14, (8 * 20) + 13) self.visible = false # Wait for sound to finish before removing - if sfx_potion_collect and sfx_potion_collect.playing: - await sfx_potion_collect.finished + if sfx_banana_collect and sfx_banana_collect.playing: + await sfx_banana_collect.finished queue_free() LootType.KEY: if sfx_key_collect: @@ -410,7 +433,7 @@ func _process_pickup_on_server(player: Node): player.add_key(1) # Show floating text with item graphic and text var items_texture = load("res://assets/gfx/pickups/items_n_shit.png") - _show_floating_text(player, "+1 key", Color.YELLOW, 0.5, 0.5, items_texture, 20, 14, (13 * 20) + 10) + _show_floating_text(player, "+1 KEY", Color.YELLOW, 0.5, 0.5, items_texture, 20, 14, (13 * 20) + 10) self.visible = false diff --git a/src/scripts/player.gd b/src/scripts/player.gd index ae6d173..651a5a4 100644 --- a/src/scripts/player.gd +++ b/src/scripts/player.gd @@ -17,6 +17,7 @@ var is_local_player: bool = false var can_send_rpcs: bool = false # Flag to prevent RPCs until player is fully initialized var all_clients_ready: bool = false # Server only: true when all clients have notified they're ready var all_clients_ready_time: float = 0.0 # Server only: time when all_clients_ready was set to true +var teleported_this_frame: bool = false # Flag to prevent position sync from overriding teleportation # Input device (for local multiplayer) var input_device: int = -1 # -1 for keyboard, 0+ for gamepad index @@ -37,6 +38,7 @@ var push_direction_locked: int = Direction.DOWN # Locked facing direction when p var initial_grab_position = Vector2.ZERO # Position of grabbed object when first grabbed var initial_player_position = Vector2.ZERO # Position of player when first grabbed var object_blocked_by_wall = false # True if pushed object is blocked by a wall +var was_dragging_last_frame = false # Track if we were dragging last frame to detect start/stop # Being held state var being_held_by: Node = null @@ -720,6 +722,9 @@ func _update_z_physics(delta): shadow.modulate.a = 0.5 func _physics_process(delta): + # Reset teleport flag at start of frame + teleported_this_frame = false + # Update animations _update_animation(delta) @@ -963,6 +968,27 @@ func _handle_input(): if current_animation != "THROW" and current_animation != "DAMAGE" and current_animation != "SWORD": _set_animation("IDLE") + # Handle drag sound for interactable objects + var is_dragging_now = false + if held_object and is_pushing and not is_lifting: + # Player is pushing (not lifting) - check if moving + if input_vector.length() > 0.1 and not object_blocked_by_wall: + # Player is moving while pushing - this is dragging + is_dragging_now = true + + # Continuously play drag sound while dragging (method checks if already playing) + if held_object.has_method("play_drag_sound"): + held_object.play_drag_sound() + + # Stop drag sound when stopping or not dragging + if not is_dragging_now and was_dragging_last_frame: + # Stopped dragging - stop drag sound + if held_object and held_object.has_method("stop_drag_sound"): + held_object.stop_drag_sound() + + # Update drag state for next frame + was_dragging_last_frame = is_dragging_now + # Reduce speed by half when pushing/pulling var current_speed = move_speed * (0.5 if is_pushing else 1.0) velocity = input_vector * current_speed @@ -1263,6 +1289,7 @@ func _lift_object(): _sync_grab.rpc(held_object.get_path(), true, push_axis) print("Lifted: ", held_object.name) + $SfxLift.play() func _start_pushing(): if not held_object: @@ -1321,6 +1348,11 @@ func _stop_pushing(): is_pushing = false push_axis = Vector2.ZERO + # Stop drag sound when releasing object + if held_object and held_object.has_method("stop_drag_sound"): + held_object.stop_drag_sound() + was_dragging_last_frame = false # Reset drag state + # Store reference and CURRENT position - don't change it! var released_obj = held_object var released_obj_position = released_obj.global_position # Store exact position @@ -1443,6 +1475,7 @@ func _throw_object(): # Play throw animation _set_animation("THROW") + $SfxThrow.play() # Sync throw over network if multiplayer.has_multiplayer_peer() and is_multiplayer_authority() and can_send_rpcs and is_inside_tree(): @@ -1887,6 +1920,19 @@ func _sync_place_down(obj_path: NodePath, place_pos: Vector2): if obj.has_method("set_being_held"): obj.set_being_held(false) +@rpc("any_peer", "reliable") +func _sync_teleport_position(new_pos: Vector2): + # Sync teleport position from server to clients + # Server calls this to teleport any player (even if client has authority over their own player) + # Only update if we're not on the server (server already set position directly) + if not multiplayer.is_server(): + global_position = new_pos + # Reset velocity to prevent player from moving back to old position + velocity = Vector2.ZERO + # Set flag to prevent position sync from overriding teleportation this frame + teleported_this_frame = true + print(name, " teleported to ", new_pos, " (synced from server, is_authority: ", is_multiplayer_authority(), ")") + @rpc("any_peer", "unreliable") func _sync_held_object_pos(obj_path: NodePath, pos: Vector2): # Sync held object position to other clients @@ -2410,6 +2456,7 @@ func _show_damage_number(amount: float, from_position: Vector2): get_tree().current_scene.add_child(damage_label) damage_label.global_position = global_position + Vector2(0, -16) +@rpc("any_peer", "reliable") func _sync_damage(_amount: float, attacker_position: Vector2): # This RPC only syncs visual effects, not damage application # (damage is already applied via rpc_take_damage) diff --git a/src/scripts/room_trigger.gd b/src/scripts/room_trigger.gd index e966377..9dac26b 100644 --- a/src/scripts/room_trigger.gd +++ b/src/scripts/room_trigger.gd @@ -21,12 +21,12 @@ func _ready(): body_entered.connect(_on_body_entered) body_exited.connect(_on_body_exited) - # Create debug label to show puzzle type and trigger status - _create_debug_label() - # Find doors, enemies, and switches in this room (deferred to ensure doors are fully initialized) # This ensures doors have their blocking_room set before we try to find them call_deferred("_find_room_entities") + + # Create debug label (deferred to avoid blocking on font load during startup) + call_deferred("_create_debug_label") func _on_body_entered(body): # Player entered the room @@ -209,7 +209,7 @@ func _find_room_entities(): print("RoomTrigger: Found ", doors_in_room.size(), " doors for room (", room.x, ", ", room.y, ")") - # Find enemies + # Find enemies (only if room has enemies - skip for empty rooms to avoid unnecessary work) for child in entities_node.get_children(): if child.is_in_group("enemy"): # Check if enemy is in this room @@ -231,9 +231,10 @@ func _find_room_entities(): enemy_tile_y >= room_min_y and enemy_tile_y < room_max_y: enemies_in_room.append(child) - # Find floor switches - for child in get_tree().get_nodes_in_group("floor_switch"): - if is_instance_valid(child): + # Find floor switches (search in Entities node, not all nodes in scene) + # This is more efficient and avoids searching the entire scene tree + for child in entities_node.get_children(): + if child.is_in_group("floor_switch") and is_instance_valid(child): # Check if switch is in this room var tile_size = 16 var switch_tile_x = int(child.global_position.x / tile_size) @@ -247,8 +248,11 @@ func _find_room_entities(): switch_tile_y >= room_min_y and switch_tile_y < room_max_y: floor_switches_in_room.append(child) - # Update debug label after finding all entities - call_deferred("_update_debug_label") + print("RoomTrigger: Found ", enemies_in_room.size(), " enemies and ", floor_switches_in_room.size(), " switches for room (", room.x, ", ", room.y, ")") + + # Update debug label after finding all entities (skip if label not created yet) + if debug_label: + call_deferred("_update_debug_label") func _spawn_room_enemies(): print("RoomTrigger: ===== _spawn_room_enemies() CALLED for room (", room.x, ", ", room.y, ") =====") @@ -422,6 +426,10 @@ func _find_room_spawners(): func _create_debug_label(): # Create a debug label to show puzzle type and trigger status above the room + # Skip if label already exists + if debug_label and is_instance_valid(debug_label): + return + var label = Label.new() label.name = "DebugLabel" @@ -440,17 +448,16 @@ func _create_debug_label(): label.autowrap_mode = TextServer.AUTOWRAP_WORD_SMART # Load standard_font.png as bitmap font (it's imported as FontFile resource) - # The PNG is automatically imported as a FontFile when using font_data_image importer - # Use ResourceLoader.load() to ensure we get the FontFile resource - var standard_font_resource = ResourceLoader.load("res://assets/fonts/standard_font.png", "FontFile") - if standard_font_resource and standard_font_resource is FontFile: - label.add_theme_font_override("font", standard_font_resource) - label.add_theme_font_size_override("font_size", 8) - else: - # Fallback: just set smaller font size if font can't be loaded - label.add_theme_font_size_override("font_size", 8) - if not standard_font_resource: - print("RoomTrigger: WARNING - Could not load standard_font.png font resource!") + # Use try-catch-like approach - if font loading fails, just skip it + # This prevents blocking the game if font resource has issues + var standard_font_resource = null + if ResourceLoader.exists("res://assets/fonts/standard_font.png"): + standard_font_resource = load("res://assets/fonts/standard_font.png") + if standard_font_resource: + label.add_theme_font_override("font", standard_font_resource) + + # Always set font size + label.add_theme_font_size_override("font_size", 8) # Style the label label.add_theme_color_override("font_color", Color.YELLOW) diff --git a/src/scripts/stairs.gd b/src/scripts/stairs.gd index f75148b..6c42a79 100644 --- a/src/scripts/stairs.gd +++ b/src/scripts/stairs.gd @@ -2,6 +2,8 @@ extends Area2D # Stairs that trigger level completion when player enters +@onready var sfx_stairs = null + func _ready(): # Connect body entered signal body_entered.connect(_on_body_entered) @@ -9,11 +11,30 @@ func _ready(): # Set collision layer/mask to detect players collision_layer = 0 collision_mask = 1 # Detect players (layer 1) + + # Load stairs sound effect + if not sfx_stairs: + # Try to create AudioStreamPlayer2D if it doesn't exist + sfx_stairs = AudioStreamPlayer2D.new() + sfx_stairs.name = "SfxStairs" + add_child(sfx_stairs) + + # Load go_down_stairs.mp3 sound + var stairs_sound = load("res://assets/audio/sfx/walk/go_down_stairs.mp3") + if stairs_sound: + sfx_stairs.stream = stairs_sound + else: + print("Stairs: Warning - Could not load go_down_stairs.mp3") func _on_body_entered(body: Node2D): print("Stairs: Body entered: ", body, " is_player: ", body.is_in_group("player") if body else false, " is_dead: ", body.is_dead if body and "is_dead" in body else false) if body and body.is_in_group("player") and not body.is_dead: print("Stairs: Player entered stairs! Player: ", body.name) + + # Play stairs sound effect + if sfx_stairs and sfx_stairs.stream: + sfx_stairs.play() + # Only trigger on server/authority if multiplayer.is_server() or not multiplayer.has_multiplayer_peer(): print("Stairs: Server detected, calling game_world") @@ -25,4 +46,3 @@ func _on_body_entered(body: Node2D): print("Stairs: ERROR - Game world not found!") else: print("Stairs: Not server, ignoring") - diff --git a/src/scripts/sword_projectile.gd b/src/scripts/sword_projectile.gd index 7269fbd..51c92ad 100644 --- a/src/scripts/sword_projectile.gd +++ b/src/scripts/sword_projectile.gd @@ -14,7 +14,7 @@ var travel_direction: Vector2 = Vector2.RIGHT var elapsed_time: float = 0.0 var distance_traveled: float = 0.0 var player_owner: Node = null -var hit_targets = [] # Track what we've already hit +var hit_targets = {} # Track what we've already hit (Dictionary for O(1) lookup) @onready var sprite = $Sprite2D @onready var hit_area = $Area2D @@ -66,7 +66,7 @@ func _on_body_entered(body): if body == player_owner: return - # Don't hit the same target twice + # Don't hit the same target twice - use Dictionary for O(1) lookup to prevent race conditions if body in hit_targets: return @@ -77,7 +77,8 @@ func _on_body_entered(body): if player_owner and not player_owner.is_multiplayer_authority(): return # Only server players can damage other players - hit_targets.append(body) + # Add to hit_targets IMMEDIATELY to prevent multiple hits (mark as hit before processing) + hit_targets[body] = true # Deal damage to players - call RPC to let victim apply damage on their client # Pass the attacker's position (not projectile position) for accurate direction @@ -125,7 +126,7 @@ func _on_body_entered(body): # Deal damage to boxes or other damageable objects elif "health" in body: - $SfxImpact.play() + #$SfxImpact.play() # Boxes have health property body.health -= damage if body.health <= 0: diff --git a/src/scripts/sword_slash.gd b/src/scripts/sword_slash.gd index d36d0a9..ca3fe62 100644 --- a/src/scripts/sword_slash.gd +++ b/src/scripts/sword_slash.gd @@ -12,7 +12,7 @@ var swing_start_angle: float = 0.0 # Starting angle var swing_arc: float = 180.0 # Total arc to swing (180 degrees) var elapsed_time: float = 0.0 var player_owner: Node = null -var hit_targets = [] # Track what we've already hit +var hit_targets = {} # Track what we've already hit (Dictionary for O(1) lookup) @onready var sprite = $Sprite2D @onready var hit_area = $Area2D @@ -57,11 +57,12 @@ func _on_body_entered(body): if body == player_owner: return - # Don't hit the same target twice + # Don't hit the same target twice - use Dictionary for O(1) lookup to prevent race conditions if body in hit_targets: return - hit_targets.append(body) + # Add to hit_targets IMMEDIATELY to prevent multiple hits (mark as hit before processing) + hit_targets[body] = true # Deal damage to players if body.is_in_group("player") and body.has_method("take_damage"): diff --git a/src/scripts/teleporter_into_closed_room.gd b/src/scripts/teleporter_into_closed_room.gd index 057a4de..b5ad5de 100644 --- a/src/scripts/teleporter_into_closed_room.gd +++ b/src/scripts/teleporter_into_closed_room.gd @@ -8,26 +8,28 @@ func _ready() -> void: # Called every frame. 'delta' is the elapsed time since the previous frame. -func _process(delta: float) -> void: +func _process(_delta: float) -> void: pass func _on_area_which_teleports_player_into_room_body_entered(body: Node2D) -> void: if !is_enabled: return - # TODO: teleport player passed the door... + # TODO: add some kind of animation + if (!$TeleportSfx.playing): + $TeleportSfx.play() get_parent().teleportPlayer(body) pass # Replace with function body. -func _on_area_to_start_emit_body_entered(body: Node2D) -> void: +func _on_area_to_start_emit_body_entered(_body: Node2D) -> void: if !is_enabled: return $GPUParticles2D.emitting = true pass # Replace with function body. -func _on_area_to_start_emit_body_exited(body: Node2D) -> void: +func _on_area_to_start_emit_body_exited(_body: Node2D) -> void: if !is_enabled: return $GPUParticles2D.emitting = false