From 9ee915e42c4e0bc547fdbef7991b0a44f9395a72 Mon Sep 17 00:00:00 2001 From: Jage9 Date: Sat, 21 Feb 2026 00:55:19 -0500 Subject: [PATCH] Add wheel item type and random step/wall movement audio --- client/public/sounds/spin.ogg | Bin 0 -> 40490 bytes client/public/sounds/step-1.ogg | Bin 0 -> 7100 bytes client/public/sounds/step-10.ogg | Bin 0 -> 7133 bytes client/public/sounds/step-11.ogg | Bin 0 -> 6309 bytes client/public/sounds/step-2.ogg | Bin 0 -> 7427 bytes client/public/sounds/step-3.ogg | Bin 0 -> 6427 bytes client/public/sounds/step-4.ogg | Bin 0 -> 6478 bytes client/public/sounds/step-5.ogg | Bin 0 -> 6219 bytes client/public/sounds/step-6.ogg | Bin 0 -> 6999 bytes client/public/sounds/step-7.ogg | Bin 0 -> 6444 bytes client/public/sounds/step-8.ogg | Bin 0 -> 6190 bytes client/public/sounds/step-9.ogg | Bin 0 -> 6444 bytes client/public/sounds/wall.ogg | Bin 0 -> 6990 bytes client/public/version.js | 2 +- client/src/audio/audioEngine.ts | 9 ---- client/src/main.ts | 46 ++++++++++++++++-- client/src/network/protocol.ts | 4 +- client/src/render/canvasRenderer.ts | 4 +- client/src/state/gameState.ts | 4 +- server/app/item_catalog.py | 9 +++- server/app/item_service.py | 2 +- server/app/models.py | 6 +-- server/app/server.py | 71 +++++++++++++++++++++++----- 23 files changed, 118 insertions(+), 39 deletions(-) create mode 100644 client/public/sounds/spin.ogg create mode 100644 client/public/sounds/step-1.ogg create mode 100644 client/public/sounds/step-10.ogg create mode 100644 client/public/sounds/step-11.ogg create mode 100644 client/public/sounds/step-2.ogg create mode 100644 client/public/sounds/step-3.ogg create mode 100644 client/public/sounds/step-4.ogg create mode 100644 client/public/sounds/step-5.ogg create mode 100644 client/public/sounds/step-6.ogg create mode 100644 client/public/sounds/step-7.ogg create mode 100644 client/public/sounds/step-8.ogg create mode 100644 client/public/sounds/step-9.ogg create mode 100644 client/public/sounds/wall.ogg diff --git a/client/public/sounds/spin.ogg b/client/public/sounds/spin.ogg new file mode 100644 index 0000000000000000000000000000000000000000..887141a6b43632bb98ab9ecb171a7cbf9a5b6b73 GIT binary patch literal 40490 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 literal 0 HcmV?d00001 diff --git a/client/public/sounds/step-1.ogg b/client/public/sounds/step-1.ogg new file mode 100644 index 0000000000000000000000000000000000000000..acf357548707beaf67efd2f49e0ecd290409e6fa GIT binary patch literal 7100 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 literal 0 HcmV?d00001 diff --git a/client/public/sounds/step-11.ogg b/client/public/sounds/step-11.ogg new file mode 100644 index 0000000000000000000000000000000000000000..2b343baaee578ffed25b098e9bafb8b2ed84e5df GIT binary patch literal 6309 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 literal 0 HcmV?d00001 diff --git a/client/public/sounds/step-2.ogg b/client/public/sounds/step-2.ogg new file mode 100644 index 0000000000000000000000000000000000000000..f9fd5c79b3ba92c2c6d531a674005c782618dfa9 GIT binary patch literal 7427 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 literal 0 HcmV?d00001 diff --git a/client/public/sounds/step-4.ogg b/client/public/sounds/step-4.ogg new file mode 100644 index 0000000000000000000000000000000000000000..796fffaf105182a5e9f1d908c5c0a48568c12cba GIT binary patch literal 6478 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 W%VtSKx2cc6iI!Q3{u41%f&K?>80t#^ literal 0 HcmV?d00001 diff --git a/client/public/sounds/step-5.ogg b/client/public/sounds/step-5.ogg new file mode 100644 index 0000000000000000000000000000000000000000..f531099d0a02d4eb890173fb47ff619605b6e4d6 GIT binary patch literal 6219 zcmai22Ut_fvp)d@LNh|ZAW;JnAra6Z#h@rvO&}tH009xDs8pqTEhy3ir3n!upwxhr zpdd|bD27fbLICL^O;o&K!E&!}6TJ8O?t9<=f4;&(9cIz zUsy1X-IP=STL%j{9^mR3$fv=~N`5Xm2@?!zU{?H{e?R=4e9E+z*FJ>$kN@>F3okPg z1$3&p@qTkEf29ogneQ{TGBc+d{+wO0ybfn#Y6pYF0i9rp;e>T2(I5x`L5EavGATz$ zI2I#Y{S=e2mp|fciDfckIViU{Lc?DjM#o(qf<&M&b$CMV6v>NAJc?3F2*@IO?%P&? z5xZnPMub28xY5lozarn;kBh^KOVd|Czz9Zrm7|bUe&-sa9E}3qMRY)uazRFb1pZc5 zxP*2SCc;vCHZNtL!R)Qv1cTS=6`dxMnibt-OG2-mTj@hl=d*!a;&jH(4ld9G1I}V1 zs_2d|5$Cgy!R0dp0IOxSFi;p!6WVhHNh(9OmZ96bRIL^?tmSmOwwl}6QfS}_cD4`k z=nDz%3kjt&qnv6&=`~SK{ZY=JqYk5@f3~I2(a-!QP#ptHJ=CQ+6Nl;1ycHeDfkxo&(8$`UVtLXH;$xwg^6!XIxH|t7+{Oa z7B`hzmIM~WWWU0sb*3%06J^pSvkH;v&!5EFrmNj6WTp!|=)+Z<0KUYvT<2t6?@SBi zlBCjD%cE1W>0<1{ZZM}fogvepco?kn>`oIa9B=@8>78j)x9%aqD3+0~R(a2Mncq)X z6dugrJ|T{S9kDOcz3;)D!RU*7#=CYnf9~J#F#>)&+>dIw5snE>5OqZ==PReI3rdtp z$s#o2^47&C>?RjR?58TKv4X+{nqwd+5+OkGU!4HT%P7uEzJza4zuTtWs=@C{>bVAU zcj^(QQUriv4PAiZ_{yo9fu+Q~-mFTV<0ck^O2)C4BMLYbE zua0}K+OcYF*DtN(ceJ%E7PKyHO`ENTG+UZ|h%fzG@L+Y6bARw?U+8FGyvyq7e*^39 z$bmr6L<(Y(;TlJ1%!t@$0$+CUUy&I{$x=^v zxh-J>DOr`Cyzx}((b%-Y>o;c$b0q#1Ima#)FfSFvT$+waP>)UZj7=-Lm*dk?I#>H& z+uxD1CqNZ65IN=ns=q`|9RY0$qN!Yivbe0HVHYrHkooFg9RNXfNm3SqJYr4N?4|1V zQZ;F|hW|NY0JT?#@>~ZP_9_G^LeK`_Q&9Ek!STD6WMpc(Lvy6zx>L*~NpXMJRO>PqhX-@>QhM+J)6X6*ufJal-D25b6C?(HlG&X}@-QPL1i4C4 zC2&y;Di=4EL~S8VqN!wJL52;ND84qbg&=w(0)bR{k! zqORj^4k6T_u@kBtDLNKNtc9F;2hyWYj?#Bkr(H+a+LqQTN9(nv4JuG*RalA~h4R6c zCTC8Qr#(-l&?&|)!J}I#bnwap)Zo6$eIOo(C zHU24d9L49{*BcC|hj|`{tAj_?J<~kBa&8r+sTUO$7FGEcm9m|3W{Pr(TFQ?Wm6o)W z-!3lonFG|)TSes>MMWCL87= z=NkOyYPX!t$F=4czpgE;t@WF$^>3^4Mdud1euQs*dZ(p)ey(~AfALH81|<2d>r*ml=X3CuMtZrXKtTLSB78aQbYJH4oQuH0`^ zeaW1OH7(Tns>i6lGkvw+sD6S|Uwlr{>soy4BOr({)NmYqe+$}qP!AApl(Qv6-I_kb zJG=)Q{J$AYd=i?+92>8Ob~+l8k1*B5LFJ` zN9Ldz`^jF)j2?Ug#x{Y}l#wD!K89m-Q^m4b`^nzf3?9|HEWgL~EhbNa?5WAvNoi`O2CShr(i)Q zR3V-G2s|{{ktgd!!Zjdmd^H==HZ))Wt7g7%fs9Ee1F*UtkxVADuO?I5GE(@gA`-|X zTvamJ5}b-mE{mc%`Ve>-R3BY%D!?k4?4#M>=ww+LjBu0`oQhp(=k3LA0K%~>lm)r0 zQo-AgFtvv4$>s|$;3d%=}-PyLxFh z@Lbt^;rOzv$w2tj3&%JjquUj*N~Xqv9Zo*?@>9J4A&q*ua_U8(kM5@)#}d8_3-E;q zOuYBe4rHA$VaO;9?vce$A^fm4j-hf%o``@pA|7tiMpP>dur$HpXl=&g*h(%DhvV>w z;#ih~1zwY5=Z(VwEi^&hAqZPhN-PH^Ax(!vW*~|iFd*-UDzZ=!ov1vd8$yMJ0)Am3 z-GFUTfifm|MK`XoIxccQ8IOxXkV#k;s9+_~pq}&TWH_L~ftK^gAt_fWLNq4GRvW)6 z(vqxJcmY_H9Soqr;u`BwG#Mx0iZ3`@b!V&f}rsF0EdIJvhMvzCaP?8vAgvteS ziANExZNwS04#LB`F^&+8biG8F&M+0nahRaS$w%=^5Ac!Y*B^0!0A3pafjEukcNu{R{}d+wjNt!| z5{017T4e{m)(t2n@#U&~x2)jR&F5#4&Rl-|rDp%9djC%&CvP@@+^-#E^jJa+`XQ!d zw`Ut}jid%&M+CT8pz4|6#G-2>qj58Nk-$CKrevZz7N7)&1MmS6&2S`N52RA@SXL@O zb@VurH34riEQ?3=0#XdbSrt8eQT@hyaV(zWWla!rWbo=5ryETLOE~?mC4{_gDu_>% zTL}mtM{jU+Z%te!&o!6X_e38XRi?SIRpo)(XLucyGLOBA98@oZ zz(U$ky=O99V`jznRfRf6PHgGA#h(lWt%3CiO!H}pXAShA<2W8!< z>m(cy5qTx6Eg>b*7#Y~@DGVVZo20J9I7rFL6Rro5mAoez>rB{5psUNy_B}9c>*^uXUQzzc45#u2uha5sHmh76J!!sCLyk@N|sHL zV*vO<&=@RiB^0K*A|@v0NJ4J?gs`fadt~0TS0Y#encs%x;?(nYq*dhF{Usi zxLq^tEkG_=-oZKm2-s~0MrCbI=O(m@)X8NPVh#{~|n^)mdR=m3qqeakG^eq*On8Oq1#OYECH^bj(v z#wKd0U(yd-I?}^I887C3eDW$IJ|gzo#rYkS&@A7bw|akHZ4kG|u*+-W%#=g?ZH1a^ zmQ!nZA%5Gx9BSL$8nNAXU5l1yvxRZQw1kX^gVVzuPqIX@%%@*{B-0#M=YA!v<&G*2 zmao2Fyh~9<+B4N}HRIfR$sKJ$?c8-s_Fu)e&o!RNr^Rf1Eiy#XovqTXPU(;Gps4rM zw;+6#)UFm}Je-Kqjo>M^=j{yMi4SeT#tT6s3Txg-N$z)(b+#d_k<2=P*zNM=xB0!D z@cr9QkCbOJ-j5`1?C@K-R-kuP#v1?lz-#mGxC8J>%Hhm;WVGeoC*{@;V`@`qftSC% z?q1b?YGK1-TtQcxWPWw~Y>*B&Y~ka(oZ{2s#`&MZcUA7Z`Lz0~)!eY|c?Y#k^cyv1 zx829X;*XT$k1qu%l}}DigzqiWh6d(>#(_^HFx$>>|n z^qJ^y*k?Mc`=N8h1C5nv{2gsbUmxyzMiiozU3H^jqlLbe^DeaCzQ1c}ypA`2Z>8_e zvtNQ+IQIJAvQ1+@PD+Q$j{K?QR>_{b)*Vj!a{-ZfKk0|X%eQ@~%!>Nl7XQ;PuYTd} z?8A4=>cdBNsxp7SKKo#n8#18M<8r!P`{dE`^%cZhlCZU_Z?3U1AMlPN-4}36z@4CaRVQSr*cah=#A<@~B@5DUFkbw>!%NV8~$&p{FH>S76 z^O1s4yu2H&*>OK6kgHk{a`(vKj-}a+@*`^>eR|#VL8^EYJ(1+xUOY3KpPO5vH83XI z`{|losGacHXMS66Po!ns<%NG`D2TUQGWBflVi>mfwqoZsbRxf6zmaD);Ir?c{`~D~ zu#MDK1)YiFu>1Ed-@YR)pvBj(WIT?;!#pqSJ#BrS;1m$2xz7ha4!@hvxs|-D9J}?V zY9%wJT%U4rDuw2zv`(#8Pc6ktavG&7=@mo^NPJ&|&n-NimZA%*IvNIp9vyqIGc#LO zByQ}h*>Aq#W#mufJq6c=I!0x7oOtj5J}0&KG4~O#y4O4N^SX>c?5W?WqrcCEkGJ%x zo)3Rzyfql(kmCQbtx*4D4>uXRqE_83#hg>18(zEvV-H_-CQ-#fWxSKCy4Ig^+C;`g zG3AkoG&_7+<{KvbCO&&uSR-ygH7ej*>N9nT?io`vmjypWWAEa#AmuVqPQ3EvfJAno zu<>sj-PR^#_BSSnoOdkhPnn|(zF-`EXlryUJbuz~(_*3r6s#CX{^3X8U0(Apa-Z)L9kJR~;UiV`!2QHLcFb@h)Si-} zq-i3#J!Krjq(9OP(KytVs36>9yXLZm6}A1Ex8sT*ru9K~Pg_5P&jsYw5uzq^AEb3X zzPPPXrEO;Pl2P>V7;k2arJ53Q-*eNQHFN7NtqwISDi4_5OD8p%QWB>gf6_`AmS|C* z4$B#iJifJSNE-X9D7wJT&iIPkrn&)>qI3EwS|=Byot+!BGc!q zudJL4|8q*{k=Eelq3c!cL-b6n$vb~Lt(+=flSw&3x#mDPJJ#SuQHC^O^uB)BKniuG zmc2tqSVx9FM>>8B{h%ICZ?5l_$l?9dpQ0|N7p#Yl()Tj>XeR?r1FN==^XBQFer-YO9Nf6E{^98j9F+(b-g>j1g{L=hGhL7f8zd@4WGS= zHHz5{J2u}NQ1`4CTJWMTu)7A^4))Hd4SDbLN#5?Ox|t-jBsqKvf{l2bb@{yA8K$%i z3e!VhzkVGCDP{&PzBCG`3W?Xw;E`tLU~a9P-;4^cRVNi{wXC(!dMu)+9I>uO$6fRf z`@IsF?9UNC4|iH5b1U43Y@iwfOJ_ndpqd7tw+*Vf7uNO4R>7%d@c#W4zx92Jr(r&I;KTGn_$!AW;bNL}5g-j#yx5 z)MBMmxm0uZs7oy|mzvlm<&%Qz{<}kJ`bt0$Hx#2JkXHKIB5)AzFQu49F2V=c=u{y2 zlI)-31@5ox@(C?(C=Uu9#Gv^%yYfK52!`hJad0BL^G=YDmjc}d1i4qfqJS)@Tv>Ep zP`wu!Yo)$WmSv;6P+6L$`$nl@*jNbLFiNn(jXU|&-sSZ;9X^PkEBM_BaP&Zevl#PA z`-&R#v)LzL%5%wp)rML~C2 z6&1;figwM7b8n7zZH{w)9Otnb=Oq>YyM2v*w#sfC)sZl$NCBVo3RALErsO5Qgo_ei zvkCHLn*=G4xf7FFYEgb9ur?sS>FBklkb!!YfqG%i5(oyCu%DuUyz>9ij=1Ld{ol>- zXs+xFq+3#HQ@sGx(?^Pu55vWQ6e>8v9ZN*gWqph zR2?c9yoY}Qb|g;b2ek-zfYCSKf_D!E*mM60A4A|bug6l|SI#4&(|En%^5ybb+auCN zvWjrMn6mAuX$J^Zv35jhMOwspj^;=RqKI-({CCHJ@&<~_GLw}1m2NWB2UOTyP3NHQ z;`L6^{lYkaVihfb;?&01h2gb$^B`Iy(``46N+e)t8xaMZiuBDe;+5tENqjE3A5#IM z;-8NDfEwB=H}a1*^buh%h6Zg!9qXW>PjVzVM}@dvik!L?=kYl587ul3EA{ZU`2Pgf zzaj?$K||rhB-J|w*HaK{V=S=Y;J+g$4Bm4Q(RUGLS&yNMBLO~)7nA8 zV?-kIk))r)UXMpweve3g<57MSO@8jTqFtMQ2h2v;JYz-vBXZawvJ;>7$~=?%-;qn%0jrfnl>DNE(6^fRibrN#qRUP<hffS`eR6`iQ zd1pk1k)nQcCcaa6`8iQZ!o(^z6|J3y+1zs!DnieXqlU6HE#YWOanm8VA4}Ytm96_ctqR zIEU3<601qeK7wRV@^f`0xkmZ9u9BRY(UySfU_Bv0A~lgFRzgTQ(JvxM9?pIft0Y&+ zGw!Uo7hj@ZNU=Gy#v=jMi|OZeEAp9AKwdy#No94OQgwAzbyG-nE#19jzPhBkzuv#P zwx++n?pkf|BB0h*R@bXkSF2pBuUV^BS!}ATZl(9vU(c_-w%GJus8eOJ^>}q{?X~*1 zY-%fgu{&(BRqb>+W}y7qo7Sq<*3iY)Fh)}dqO|%=oASW@>;3ib7hCrD_*ZKj2(XaTSV~7^8?PjPfnCo8NZQ!MoM)S`DC#|OES6^GK z58d5avuJEjiuTC%d#3H-x-ImXcA7gYwWRt@tMWh_5QKZueGGA14dF4h7Z9%0(}kja zdRGO8f~LB|)^uNei7c%X7U)R_*nqLIA>MCTEWdkGj1COqm7jwBSeXBkY$cI zUiokvLKlK+M+lUsjwyE|9n&m&3$nxrM={hSGJ%$e7Kg0#=t}GYJHGb|#Tgki}*d zn?|s}G-VR3z^Mp?8*xOpU>vi67_0?O1z2Sgg0bCh?pBSFqHaQ*Q_&lpf&%H?KscHv zWl6ZvC>a!rdo4o@%3bQu-2C`w;Hw# zOYnyXPj6Xq0$C@93o?um@GD}c5O&xaB@hQK0z}CSyt05X1Fu*`wlcbmJf% zgXv=8`O!2V7Nti5DA2kXZh`cM$A_jz%426NrQb zB$&g{BG?2fQ4oTZkAsTny1j4s`HMv$XKsQ{v2!K?&sR)6fayk3Gl@VPP^pS63~bls z#3oSP-XZ}sg0-SV0j#>+_7mt`E6kI&qI|(;eu%92(l?!T|aw&G{0e-UV`XdDpz-Kog;O7wRt{^<^ z--XG)M*{zg5>=qi+Uf-U*4}Pw?*|J$K{tA2s{GtM~slau1>d$o;c} z4BG|ypmjc3Co>(4jF1XjM^SLIkm}3@C+3x-#AD{mD8N0%`w4g@G(ZUk1KKD+GZ{gLM! zU(17H+n8f*_Qik*d{M+ki@XT|po)zVc?xjD#vCQ%Uvr|ma~seCfSTJ_N3}ENK#RW^ z%wgmJ$douEG#CkN6mT3cQp7+hM+KZW=BQ#o2B*BE64{6ZrePB}Q00sSaDt!n1naG z;b$)0B{fdP(climp!ovt6non%J_KB64b_RDbn*Nsxu!9S0WO6|en?GJUgMl03@+6R z1W~v#P|@{{VcbD(?in$4L1DojO89617bHsQ6~36@A}l6eeXhh?7jil1*~=FroSNE@ zEHtm)!Q=5H5=lXF%O`Zf;2ANo;-M#BZnkZ{C!lLe6WO@!!l3OCl(`wXb7vktO(cCw zhUmqunPOSuQ~+NHdJc=(0>z+s5)u-Qq?LBQ;zF7DQpz68aHBb7cE``ZaaG~wj5)Vq z?nAf@GW#~n7IUG~P!_dyuL4R@Z4dTk?+a!0E{u{Q8oL*#q^hZ=rH;dC%rGC`Z!4Zb z9Gfr|j>k3gKp))7x$I!0em~x;945eId#mAGfRj$(+3oBr)rd?C-CfgBlBk~*d#sjR zpENJnHsB|~`@vZQ3zPkU7@yA0UjCR<_a~IL$u{V^N^x1pkjnDt9$^a;@3M+#vAhj( z>3qGxcg-vE^wDZc2o|?YzM7`)xPIc2PAB!n;fkCohR6@;McFA*-OUS84a@3~F6`R_ zishRRBX44dn=IE*)L)^oQF0OvFslRalc$@j!omVstJScw?X@D3i(XhCgZ6^^U!(iC zUe&cq{uQOLZjf%aCYF-I1^EUp8)@d8|G*IO-28S&$F?_FIlCV`9z948n$lkJUx-^@ zIIbzIRlRgc*CVRVfR}M(YExOQ!O1TbT-SNizN;Rlr4r814+JKj$c}pdYDrG8p=B>Z zjy2C{O?wAxO_K8qX+rUKd?rU68Jd%~xht?1$5$TGH(On;$ulUjqjMmwx$WZ3rurOa zs=?-8AJ*RgeDL~i@YAtOp>m(lfg(K4N;~=2_M~@u76`Ie8YR&^q1Q>>)SOj4_=}FVyydl1`lDPlb+mx-V zs3-Wi_ZfEC;Op(Gwz=2qrG@P}XP4|Id%j0>^}3#Km`r%Nbopr=5{ZH2S5yXiQWfXu zmmc`u8hlyt^wboVpY`Qz)ZI;`!zJ>eOQ~JmeCzv0j*NFqNnq_lFE6!5uQyC9ifYFa zD!CWiq~qP~;QM~a-8L7>_59XqWJRABl^;R%4t%UoSV}sp--*JweA8%dCVFYWVhcNagB)YHi;5GIV~;D zymO??zwmC;`bQQ$rF$^yjKRvl9lY|1!uR)<=YQ^~Iqoo5CYO#9GALKWT76cCnp;q9#!4UH-Ido%ypy=`2WM?4ll&p>>9WtyqdW1Q-gMP_pU0I#_hqmu zhI$9N)%wcD;Fn7j^=&a8Qs?B8T&zVhx7hfHw*PgYBRx51w=W9ef2{p^liY035`^%?!Gaw0dH#zz?)vzi3$MtKOX-06Gh z(oD9THl*-Ero*2;=O#G982^D!a`HElIOAQ|PY{u%oRvWchOhKp{es7p=O0#vVY~*E z==H-VM-QM*Ib;3v4%O&SNm zA>mCS8ly+Gj;Godo*P>ZRh!pb$P3;RIB=l&-8-i4Y!rq*!P?vk+rB0GBOCu~| z<#V6NNvERo(@@HcUB{!Re<};^xh$r~f;)7Xsg}I2^P5ik(d;7kpo;_%79H<|gdqCn#oR zKq%s7Y0013>TtT_3iA_K)-V9N-}~9VEQ(blGFag_bVcvS8Sp2n(8(s zr-jZHBhQmpf2|ix>%WWT+wz@9%zf^y8_{aJ^q^-LMC+M&V3}E44db8gPxClF`%hI99_l zXg?iba}Unn7RdeG;_BzU`8RoGzGcf9WJSH^e#_$;Q7DYli12>~8zt+UJ8Y(_O)sF{ z42=5a;$skTK~mz2(oh4H@9JH+gHHHe@00nEn^{D3-6ds6t$l8`jin|$@hPe1gs7U6 zbW62zqVSVvA4LLNG~PX?$W1VQEY+2MYi}(H*c+d(x<#8Y9)H)_L_4b8M?7}&L(0=1 z2|L?WAN$ql6^6E~QX_2+s-TKmvxk>FoBC|;cC(16Yi$vd4=$Jm-ON5wDSBk$&)1p{ z|Csc=vENapH{e{k>zy&V!dmMXYr${2=RDLkCVQky`<3=t2?k1*ij7F}R+J%yld_)p zkF-8dn>fAmYj08B@{(@!l&(Z%|CHyw&g5Sjx&>i7GSVmE6PZ%y%;F7{v}c~R%om^A z+-7FAjNLEI1r5zZLECnDS`9dU9&i@mda@=bOeyI5IWlhN&}sT?j*q;$qfIaR$FCO) zKNrT1I=*Wd`4v1R$#)#SiBzgJ8xg9zYxLBI=R#ZEZaE-myYB3ubsey{{J8w{c(Zuj zeZ|l=%X_HX-@l~RDWA{b-tmWs?z95DYFloLdS~hsO5C}o6T#K+?G}D|^_)*K{65dC z;XriUs{ew>EH$}2wX%7}TsWqlD1xav|C zzkQN}&fpZu5GwT7?D=a(-v~On-w);K0L?F=51HcQDYT9e;|IH#vAI&}8t?jgUoW&T zbo!7#2CARQn)hV8yI3+>Wux|zOH}dpcYiL+r13O6+?Ky_Mp{P@HD3G~xjlAo`-!dYe;hb% zz3GR>d4~+!ZRvWqAMOs{m%LwbO+o7A+oP1Ds{3oGKADRrZl_n-Ir5q4UC8&o5L;}1 zb~>&zpFjC<)f;HLKO+6F9SUfv79q>K7rb&NXsIAwPMY^tPjdODtJveWLs>%fpi9cLP1lByQ!i45W%Kx; zLq}59N@Yf`s6vPCKn>i6IwOSIzyd#Lx)j?k=Je<0V z8HL|pj=2)!>n7XHWtGHowFkqKKXg5@M0jg~sW!ex9hH;}=QRuaHg0h>pjhFA1N7AI;Gw!KObkqg6%&x1 zqkuEffu4Wa-Bfq5KdGmyIcV?1Iw^VX-HkKN2b*+Oo6p>xbn(g!-zpZbzspAbsn7Dy z8y}><-+n9h6Rn5kRaV0u*$pj)2Ei}cRwNB{iQ8PeS~l#k91d1VzSt^cgSKCCSyuF&vQLyzMj4qI=H$IvE^9}wP?!s_7S`hRQW_xk_< literal 0 HcmV?d00001 diff --git a/client/public/sounds/step-7.ogg b/client/public/sounds/step-7.ogg new file mode 100644 index 0000000000000000000000000000000000000000..dcec170644e249e47f3f9eb5d8f5954368006cab GIT binary patch literal 6444 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 D+nDNA literal 0 HcmV?d00001 diff --git a/client/public/sounds/step-8.ogg b/client/public/sounds/step-8.ogg new file mode 100644 index 0000000000000000000000000000000000000000..a997e11503ad9daa8ede34904ff63027e97abca3 GIT binary patch literal 6190 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 NbQhPBhTiIm{0~Qw11A6g literal 0 HcmV?d00001 diff --git a/client/public/sounds/wall.ogg b/client/public/sounds/wall.ogg new file mode 100644 index 0000000000000000000000000000000000000000..b70e6e5d4caf5a89290638bbab5d2b4c695d2403 GIT binary patch literal 6990 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 literal 0 HcmV?d00001 diff --git a/client/public/version.js b/client/public/version.js index c449489..0ed4090 100644 --- a/client/public/version.js +++ b/client/public/version.js @@ -1,3 +1,3 @@ // Maintainer-controlled web client version. // Format: YYYY.MM.DD Rn (example: 2026.02.20 R2) -window.CHGRID_WEB_VERSION = "2026.02.20 R69"; +window.CHGRID_WEB_VERSION = "2026.02.21 R70"; diff --git a/client/src/audio/audioEngine.ts b/client/src/audio/audioEngine.ts index 07ded1d..ff647a1 100644 --- a/client/src/audio/audioEngine.ts +++ b/client/src/audio/audioEngine.ts @@ -226,15 +226,6 @@ export class AudioEngine { } } - sfxMove(player: { x: number; y: number }): void { - void player; - this.playSound({ freq: 165, duration: 0.05, type: 'triangle', gain: 0.13 }); - } - - sfxPeerMove(peer: { x: number; y: number }): void { - this.playSound({ freq: 330, duration: 0.05, type: 'triangle', gain: 0.12, sourcePosition: peer }); - } - sfxLocate(peer: { x: number; y: number }): void { this.playSound({ freq: 880, duration: 0.2, type: 'sine', gain: 0.5, sourcePosition: peer }); } diff --git a/client/src/main.ts b/client/src/main.ts index 391c9e7..7c82e35 100644 --- a/client/src/main.ts +++ b/client/src/main.ts @@ -83,10 +83,11 @@ const APP_VERSION = String(window.CHGRID_WEB_VERSION ?? '').trim(); dom.appVersion.textContent = APP_VERSION ? `Another AI experiment with Jage. Version ${APP_VERSION}` : 'Another AI experiment with Jage. Version unknown'; -const ITEM_TYPE_SEQUENCE: ItemType[] = ['radio_station', 'dice']; +const ITEM_TYPE_SEQUENCE: ItemType[] = ['radio_station', 'dice', 'wheel']; const ITEM_TYPE_GLOBAL_PROPERTIES: Record> = { radio_station: { useCooldownMs: 1000 }, dice: { useCooldownMs: 1000 }, + wheel: { useCooldownMs: 4000 }, }; const EDITABLE_ITEM_PROPERTY_KEYS = new Set([ 'title', @@ -95,6 +96,7 @@ const EDITABLE_ITEM_PROPERTY_KEYS = new Set([ 'volume', 'effect', 'effectValue', + 'spaces', 'sides', 'number', ]); @@ -111,6 +113,8 @@ const SYSTEM_SOUND_URLS = { logout: withBase('sounds/logout.ogg'), notify: withBase('sounds/notify.ogg'), } as const; +const FOOTSTEP_SOUND_URLS = Array.from({ length: 11 }, (_, index) => withBase(`sounds/step-${index + 1}.ogg`)); +const WALL_SOUND_URL = withBase('sounds/wall.ogg'); const state = createInitialState(); const renderer = new CanvasRenderer(dom.canvas); @@ -312,7 +316,8 @@ function getPeerNamesAtPosition(x: number, y: number): string[] { } function itemTypeLabel(type: ItemType): string { - return type === 'radio_station' ? 'radio' : type; + if (type === 'radio_station') return 'radio'; + return type; } function itemLabel(item: WorldItem): string { @@ -348,6 +353,8 @@ function getEditableItemPropertyKeys(item: WorldItem): string[] { keys.push('streamUrl', 'enabled', 'volume', 'effect', 'effectValue'); } else if (item.type === 'dice') { keys.push('sides', 'number'); + } else if (item.type === 'wheel') { + keys.push('spaces'); } return keys; } @@ -758,6 +765,10 @@ function persistPlayerPosition(): void { } } +function randomFootstepUrl(): string { + return FOOTSTEP_SOUND_URLS[Math.floor(Math.random() * FOOTSTEP_SOUND_URLS.length)]; +} + function gameLoop(): void { if (!state.running) return; handleMovement(); @@ -784,13 +795,17 @@ function handleMovement(): void { const nextX = state.player.x + dx; const nextY = state.player.y + dy; - if (nextX < 0 || nextY < 0 || nextX >= GRID_SIZE || nextY >= GRID_SIZE) return; + if (nextX < 0 || nextY < 0 || nextX >= GRID_SIZE || nextY >= GRID_SIZE) { + state.player.lastMoveTime = now; + void audio.playSample(WALL_SOUND_URL, 1); + return; + } state.player.x = nextX; state.player.y = nextY; persistPlayerPosition(); state.player.lastMoveTime = now; - audio.sfxMove(state.player); + void audio.playSample(randomFootstepUrl(), 1); signaling.send({ type: 'update_position', x: nextX, y: nextY }); const namesOnTile = getPeerNamesAtPosition(nextX, nextY); @@ -1034,7 +1049,7 @@ async function onMessage(message: IncomingMessage): Promise { } peerManager.setPeerPosition(message.id, message.x, message.y); if (peer) { - audio.sfxPeerMove({ x: peer.x - state.player.x, y: peer.y - state.player.y }); + void audio.playSpatialSample(randomFootstepUrl(), { x: peer.x - state.player.x, y: peer.y - state.player.y }, 1); } break; } @@ -1773,6 +1788,27 @@ function handleItemPropertyEditModeInput(code: string, key: string): void { return; } signaling.send({ type: 'item_update', itemId, params: { effectValue: clampEffectLevel(parsed) } }); + } else if (propertyKey === 'spaces') { + const spaces = value + .split(',') + .map((token) => token.trim()) + .filter((token) => token.length > 0); + if (spaces.length === 0) { + updateStatus('spaces must include at least one comma-delimited value.'); + audio.sfxUiCancel(); + return; + } + if (spaces.length > 100) { + updateStatus('spaces supports up to 100 values.'); + audio.sfxUiCancel(); + return; + } + if (spaces.some((token) => token.length > 80)) { + updateStatus('each space must be 80 chars or less.'); + audio.sfxUiCancel(); + return; + } + signaling.send({ type: 'item_update', itemId, params: { spaces: spaces.join(', ') } }); } else if (propertyKey === 'sides' || propertyKey === 'number') { const parsed = Number(value); if (!Number.isInteger(parsed) || parsed < 1 || parsed > 100) { diff --git a/client/src/network/protocol.ts b/client/src/network/protocol.ts index 7563507..22eaea7 100644 --- a/client/src/network/protocol.ts +++ b/client/src/network/protocol.ts @@ -2,7 +2,7 @@ import { z } from 'zod'; export const itemSchema = z.object({ id: z.string(), - type: z.enum(['radio_station', 'dice']), + type: z.enum(['radio_station', 'dice', 'wheel']), title: z.string(), x: z.number().int(), y: z.number().int(), @@ -129,7 +129,7 @@ export type OutgoingMessage = | { type: 'update_nickname'; nickname: string } | { type: 'chat_message'; message: string } | { type: 'ping'; clientSentAt: number } - | { type: 'item_add'; itemType: 'radio_station' | 'dice' } + | { type: 'item_add'; itemType: 'radio_station' | 'dice' | 'wheel' } | { type: 'item_pickup'; itemId: string } | { type: 'item_drop'; itemId: string; x: number; y: number } | { type: 'item_delete'; itemId: string } diff --git a/client/src/render/canvasRenderer.ts b/client/src/render/canvasRenderer.ts index 99dc2ed..88c9c99 100644 --- a/client/src/render/canvasRenderer.ts +++ b/client/src/render/canvasRenderer.ts @@ -76,11 +76,11 @@ export class CanvasRenderer { private drawItem(item: WorldItem): void { const drawX = item.x * this.squarePixelSize; const drawY = this.canvas.height - (item.y * this.squarePixelSize) - this.squarePixelSize; - this.ctx.fillStyle = item.type === 'radio_station' ? '#fbbf24' : '#60a5fa'; + this.ctx.fillStyle = item.type === 'radio_station' ? '#fbbf24' : item.type === 'wheel' ? '#f97316' : '#60a5fa'; this.ctx.fillRect(drawX, drawY, this.squarePixelSize, this.squarePixelSize); this.ctx.fillStyle = '#111827'; this.ctx.font = 'bold 12px Courier New'; this.ctx.textAlign = 'center'; - this.ctx.fillText(item.type === 'radio_station' ? 'R' : 'D', drawX + this.squarePixelSize / 2, drawY + 13); + this.ctx.fillText(item.type === 'radio_station' ? 'R' : item.type === 'wheel' ? 'W' : 'D', drawX + this.squarePixelSize / 2, drawY + 13); } } diff --git a/client/src/state/gameState.ts b/client/src/state/gameState.ts index 5a4cf6e..e6ea903 100644 --- a/client/src/state/gameState.ts +++ b/client/src/state/gameState.ts @@ -1,8 +1,8 @@ export const GRID_SIZE = 40; export const HEARING_RADIUS = 15; -export const MOVE_COOLDOWN_MS = 100; +export const MOVE_COOLDOWN_MS = 200; -export type ItemType = 'radio_station' | 'dice'; +export type ItemType = 'radio_station' | 'dice' | 'wheel'; export type WorldItem = { id: string; diff --git a/server/app/item_catalog.py b/server/app/item_catalog.py index 2ed28c8..1849aaa 100644 --- a/server/app/item_catalog.py +++ b/server/app/item_catalog.py @@ -3,7 +3,7 @@ from __future__ import annotations from dataclasses import dataclass from typing import Literal -ItemType = Literal["radio_station", "dice"] +ItemType = Literal["radio_station", "dice", "wheel"] @dataclass(frozen=True) @@ -28,6 +28,13 @@ ITEM_DEFINITIONS: dict[ItemType, ItemDefinition] = { use_sound="sounds/roll.ogg", default_params={"sides": 6, "number": 2}, ), + "wheel": ItemDefinition( + default_title="wheel", + capabilities=("editable", "carryable", "deletable", "usable"), + use_sound="sounds/spin.ogg", + default_params={"spaces": "yes, no"}, + use_cooldown_ms=4000, + ), } diff --git a/server/app/item_service.py b/server/app/item_service.py index a4c3b62..bac0377 100644 --- a/server/app/item_service.py +++ b/server/app/item_service.py @@ -25,7 +25,7 @@ class ItemService: def now_ms() -> int: return int(time.time() * 1000) - def default_item(self, client: ClientConnection, item_type: Literal["radio_station", "dice"]) -> WorldItem: + def default_item(self, client: ClientConnection, item_type: Literal["radio_station", "dice", "wheel"]) -> WorldItem: item_def = get_item_definition(item_type) now = self.now_ms() return WorldItem( diff --git a/server/app/models.py b/server/app/models.py index b42cf0f..0affb97 100644 --- a/server/app/models.py +++ b/server/app/models.py @@ -40,7 +40,7 @@ class PingPacket(BasePacket): class ItemAddPacket(BasePacket): type: Literal["item_add"] - itemType: Literal["radio_station", "dice"] + itemType: Literal["radio_station", "dice", "wheel"] class ItemPickupPacket(BasePacket): @@ -152,7 +152,7 @@ class NicknameResultPacket(BasePacket): class WorldItem(BaseModel): id: str - type: Literal["radio_station", "dice"] + type: Literal["radio_station", "dice", "wheel"] title: str x: int y: int @@ -169,7 +169,7 @@ class WorldItem(BaseModel): class PersistedWorldItem(BaseModel): model_config = ConfigDict(extra="ignore") id: str - type: Literal["radio_station", "dice"] + type: Literal["radio_station", "dice", "wheel"] title: str x: int y: int diff --git a/server/app/server.py b/server/app/server.py index 23aff5d..a6aaca6 100644 --- a/server/app/server.py +++ b/server/app/server.py @@ -388,7 +388,7 @@ class SignalingServer: if item.carrierId is None and (item.x != client.x or item.y != client.y): await self._send_item_result(client, False, "use", "Item is not on your square.", item.id) return - if item.type != "dice": + if item.type not in {"dice", "wheel"}: await self._send_item_result(client, False, "use", "This item cannot be used yet.", item.id) return now_ms = self.item_service.now_ms() @@ -405,18 +405,39 @@ class SignalingServer: ) return self.item_last_use_ms[item.id] = now_ms - try: - sides = max(1, min(100, int(item.params.get("sides", 6)))) - number = max(1, min(100, int(item.params.get("number", 2)))) - except (TypeError, ValueError): - sides = 6 - number = 2 - rolls = [random.randint(1, sides) for _ in range(number)] - total = sum(rolls) - others_message = ( - f"{client.nickname} rolled {item.title}: {', '.join(str(value) for value in rolls)} (total {total})." - ) - self_message = f"You rolled {item.title}: {', '.join(str(value) for value in rolls)} (total {total})." + if item.type == "dice": + try: + sides = max(1, min(100, int(item.params.get("sides", 6)))) + number = max(1, min(100, int(item.params.get("number", 2)))) + except (TypeError, ValueError): + sides = 6 + number = 2 + rolls = [random.randint(1, sides) for _ in range(number)] + total = sum(rolls) + others_message = ( + f"{client.nickname} rolled {item.title}: {', '.join(str(value) for value in rolls)} (total {total})." + ) + self_message = f"You rolled {item.title}: {', '.join(str(value) for value in rolls)} (total {total})." + else: + spaces_raw = item.params.get("spaces", "") + if isinstance(spaces_raw, str): + spaces = [token.strip() for token in spaces_raw.split(",") if token.strip()] + elif isinstance(spaces_raw, list): + spaces = [str(token).strip() for token in spaces_raw if str(token).strip()] + else: + spaces = [] + if not spaces: + await self._send_item_result( + client, + False, + "use", + "wheel spaces must contain at least one comma-delimited value.", + item.id, + ) + return + landed = random.choice(spaces) + others_message = f"{client.nickname} spins {item.title} and it lands on {landed}." + self_message = others_message await self._broadcast( BroadcastChatMessagePacket(type="chat_message", message=others_message, system=True), exclude=client.websocket, @@ -467,6 +488,30 @@ class SignalingServer: return next_params["sides"] = sides next_params["number"] = number + if item.type == "wheel": + spaces_raw = next_params.get("spaces", "") + if not isinstance(spaces_raw, str): + await self._send_item_result( + client, False, "update", "spaces must be a comma-delimited string.", item.id + ) + return + spaces = [token.strip() for token in spaces_raw.split(",") if token.strip()] + if not spaces: + await self._send_item_result( + client, + False, + "update", + "spaces must include at least one value, separated by commas.", + item.id, + ) + return + if len(spaces) > 100: + await self._send_item_result(client, False, "update", "spaces supports up to 100 values.", item.id) + return + if any(len(token) > 80 for token in spaces): + await self._send_item_result(client, False, "update", "each space must be 80 chars or less.", item.id) + return + next_params["spaces"] = ", ".join(spaces) if item.type == "radio_station": stream_url = str(next_params.get("streamUrl", "")).strip() previous_stream_url = str(item.params.get("streamUrl", "")).strip()