From de235cf95248ea7cbf3397e25de5eb8cacfa8f86 Mon Sep 17 00:00:00 2001 From: NovusEdge Date: Fri, 16 Oct 2026 08:38:58 +0300 Subject: [PATCH 1/3] feat(pets): hand-drawn left walks for the ghost and the robot Mirroring the right walk flipped their top-left light. The left walks keep highlights on the left and shade on the right, lean and look left, and trail the ghost's wisps and the robot's dust and antenna to the right. Same frames, timings and exits as walk, dx -1, head anchors moved to the left-facing body. Signed-off-by: NovusEdge --- art/crt/crt.art | 106 ++++++++++++++++++++++++++ art/ghost/ghost.art | 106 ++++++++++++++++++++++++++ docs/assets/ghost/walk-left/00.png | Bin 0 -> 1622 bytes docs/assets/ghost/walk-left/00.svg | 1 + docs/assets/ghost/walk-left/01.png | Bin 0 -> 1616 bytes docs/assets/ghost/walk-left/01.svg | 1 + docs/assets/ghost/walk-left/02.png | Bin 0 -> 1493 bytes docs/assets/ghost/walk-left/02.svg | 1 + docs/assets/ghost/walk-left/03.png | Bin 0 -> 1598 bytes docs/assets/ghost/walk-left/03.svg | 1 + docs/assets/ghost/walk-left/04.png | Bin 0 -> 1620 bytes docs/assets/ghost/walk-left/04.svg | 1 + docs/assets/ghost/walk-left/05.png | Bin 0 -> 1579 bytes docs/assets/ghost/walk-left/05.svg | 1 + docs/assets/ghost/walk-left/06.png | Bin 0 -> 1534 bytes docs/assets/ghost/walk-left/06.svg | 1 + docs/assets/ghost/walk-left/07.png | Bin 0 -> 1613 bytes docs/assets/ghost/walk-left/07.svg | 1 + docs/assets/ghost/walk-left/clip.gif | Bin 0 -> 47091 bytes docs/assets/ghost/walk-left/clip.mp4 | Bin 0 -> 8609 bytes docs/assets/ghost/walk-left/clip.webm | Bin 0 -> 7351 bytes docs/assets/ghost/walk-left/sheet.png | Bin 0 -> 13398 bytes docs/assets/robot/walk-left/00.png | Bin 0 -> 2720 bytes docs/assets/robot/walk-left/00.svg | 1 + docs/assets/robot/walk-left/01.png | Bin 0 -> 2678 bytes docs/assets/robot/walk-left/01.svg | 1 + docs/assets/robot/walk-left/02.png | Bin 0 -> 2882 bytes docs/assets/robot/walk-left/02.svg | 1 + docs/assets/robot/walk-left/03.png | Bin 0 -> 2876 bytes docs/assets/robot/walk-left/03.svg | 1 + docs/assets/robot/walk-left/04.png | Bin 0 -> 2721 bytes docs/assets/robot/walk-left/04.svg | 1 + docs/assets/robot/walk-left/05.png | Bin 0 -> 2647 bytes docs/assets/robot/walk-left/05.svg | 1 + docs/assets/robot/walk-left/06.png | Bin 0 -> 2883 bytes docs/assets/robot/walk-left/06.svg | 1 + docs/assets/robot/walk-left/07.png | Bin 0 -> 2864 bytes docs/assets/robot/walk-left/07.svg | 1 + docs/assets/robot/walk-left/clip.gif | Bin 0 -> 87895 bytes docs/assets/robot/walk-left/clip.mp4 | Bin 0 -> 10099 bytes docs/assets/robot/walk-left/clip.webm | Bin 0 -> 9258 bytes docs/assets/robot/walk-left/sheet.png | Bin 0 -> 22882 bytes hooks/sprites/crt.ts | 10 +++ hooks/sprites/ghost.ts | 10 +++ test/pets.test.ts | 10 ++- 45 files changed, 254 insertions(+), 4 deletions(-) create mode 100644 docs/assets/ghost/walk-left/00.png create mode 100644 docs/assets/ghost/walk-left/00.svg create mode 100644 docs/assets/ghost/walk-left/01.png create mode 100644 docs/assets/ghost/walk-left/01.svg create mode 100644 docs/assets/ghost/walk-left/02.png create mode 100644 docs/assets/ghost/walk-left/02.svg create mode 100644 docs/assets/ghost/walk-left/03.png create mode 100644 docs/assets/ghost/walk-left/03.svg create mode 100644 docs/assets/ghost/walk-left/04.png create mode 100644 docs/assets/ghost/walk-left/04.svg create mode 100644 docs/assets/ghost/walk-left/05.png create mode 100644 docs/assets/ghost/walk-left/05.svg create mode 100644 docs/assets/ghost/walk-left/06.png create mode 100644 docs/assets/ghost/walk-left/06.svg create mode 100644 docs/assets/ghost/walk-left/07.png create mode 100644 docs/assets/ghost/walk-left/07.svg create mode 100644 docs/assets/ghost/walk-left/clip.gif create mode 100644 docs/assets/ghost/walk-left/clip.mp4 create mode 100644 docs/assets/ghost/walk-left/clip.webm create mode 100644 docs/assets/ghost/walk-left/sheet.png create mode 100644 docs/assets/robot/walk-left/00.png create mode 100644 docs/assets/robot/walk-left/00.svg create mode 100644 docs/assets/robot/walk-left/01.png create mode 100644 docs/assets/robot/walk-left/01.svg create mode 100644 docs/assets/robot/walk-left/02.png create mode 100644 docs/assets/robot/walk-left/02.svg create mode 100644 docs/assets/robot/walk-left/03.png create mode 100644 docs/assets/robot/walk-left/03.svg create mode 100644 docs/assets/robot/walk-left/04.png create mode 100644 docs/assets/robot/walk-left/04.svg create mode 100644 docs/assets/robot/walk-left/05.png create mode 100644 docs/assets/robot/walk-left/05.svg create mode 100644 docs/assets/robot/walk-left/06.png create mode 100644 docs/assets/robot/walk-left/06.svg create mode 100644 docs/assets/robot/walk-left/07.png create mode 100644 docs/assets/robot/walk-left/07.svg create mode 100644 docs/assets/robot/walk-left/clip.gif create mode 100644 docs/assets/robot/walk-left/clip.mp4 create mode 100644 docs/assets/robot/walk-left/clip.webm create mode 100644 docs/assets/robot/walk-left/sheet.png diff --git a/art/crt/crt.art b/art/crt/crt.art index b6437acf..af3404fd 100644 --- a/art/crt/crt.art +++ b/art/crt/crt.art @@ -410,6 +410,112 @@ frame 110 dx=1 head=17,3 fx=8,14,u;6,13,u;2,11,u ............mM...mMMM........... ...........mMMM..xxxx........... +anim walk-left loop exits=0,4 +frame 110 dx=-1 head=15,3 name=lcontact fx=23,15,u;25,15,u;27,14,u +................................ +....................yY.......... +...................M............ +.......oooooooooooooooo......... +......oLLLLLLLLLLLLLLLBo........ +.....oLBBwsssssssssssBBDo....... +.....oLBtgGttttttgGtttBDo....... +.....oLBsGGssssssGGsssBDo....... +.....oLBttttGttGttttttBDo....... +.....oLBBssssGGssssssBBDo....... +.....oBBGBBBBBBBBBMBMBBDo....... +......oooooooooooooooooo........ +.........moBsGsYsRsBDom......... +........MmoDDDDDDDDDDomM........ +............mM....mM............ +...........mMMM..mMMM........... +frame 110 dx=-1 head=15,4 name=ldown fx=24,15,u;26,14,u;28,13,u +................................ +....................yY.......... +....................M........... +...................M............ +.......oooooooooooooooo......... +......oLLLLLLLLLLLLLLLBo........ +.....oLBBwsssssssssssBBDo....... +.....oLBtgGttttttgGtttBDo....... +.....oLBsGGssssssGGsssBDo....... +.....oLBttttGttGttttttBDo....... +.....oLBBssssGGssssssBBDo....... +.....oBBGBBBBBBBBBMBMBBDo....... +......oooooooooooooooooo........ +.........moBsGsYsRsBDom......... +........MmoDDDDDDDDDDomM........ +...........mMMM..mMMM........... +frame 110 dx=-1 head=15,2 fx=23,14,u;27,13,u;29,12,u +................................ +....................yY.......... +.......oooooooooooooooo......... +......oLLLLLLLLLLLLLLLBo........ +.....oLBBwsssssssssssBBDo....... +.....oLBtgGttttttgGtttBDo....... +.....oLBsGGssssssGGsssBDo....... +.....oLBttttGttGttttttBDo....... +.....oLBBssssGGssssssBBDo....... +.....oBBGBBBBBBBBBMBMBBDo....... +......oooooooooooooooooo........ +........MmoBsGsYsRsBDom......... +..........oDDDDDDDDDDomM........ +............mM...mMMM........... +............mM.................. +...........mMMM..xxxx........... +frame 110 dx=-1 head=15,3 fx=22,15,u;24,14,u;28,12,u +................................ +....................yY.......... +...................M............ +.......oooooooooooooooo......... +......oLLLLLLLLLLLLLLLBo........ +.....oLBBwsssssssssssBBDo....... +.....oLBtgGttttttgGtttBDo....... +.....oLBsGGssssssGGsssBDo....... +.....oLBttttGttGttttttBDo....... +.....oLBBssssGGssssssBBDo....... +.....oBBGBBBBBBBBBMBMBBDo....... +......oooooooooooooooooo........ +.........moBsGsYsRsBDom......... +........MmoDDDDDDDDDDomM........ +............mM...mMMM........... +...........mMMM..xxxx........... +frame 110 dx=-1 head=15,3 copy=lcontact fx=22,15,u;24,15,u;26,14,u +frame 110 dx=-1 head=15,4 copy=ldown fx=23,15,u;25,14,u;27,13,u +frame 110 dx=-1 head=15,2 fx=22,15,u;26,13,u;28,12,u +................................ +....................yY.......... +.......oooooooooooooooo......... +......oLLLLLLLLLLLLLLLBo........ +.....oLBBwsssssssssssBBDo....... +.....oLBtgGttttttgGtttBDo....... +.....oLBsGGssssssGGsssBDo....... +.....oLBttttGttGttttttBDo....... +.....oLBBssssGGssssssBBDo....... +.....oBBGBBBBBBBBBMBMBBDo....... +......oooooooooooooooooo........ +.........moBsGsYsRsBDomM........ +........MmoDDDDDDDDDDo.......... +...........mMMM...mM............ +..................mM............ +...........xxxx..mMMM........... +frame 110 dx=-1 head=15,3 fx=23,14,u;25,13,u;29,11,u +................................ +....................yY.......... +...................M............ +.......oooooooooooooooo......... +......oLLLLLLLLLLLLLLLBo........ +.....oLBBwsssssssssssBBDo....... +.....oLBtgGttttttgGtttBDo....... +.....oLBsGGssssssGGsssBDo....... +.....oLBttttGttGttttttBDo....... +.....oLBBssssGGssssssBBDo....... +.....oBBGBBBBBBBBBMBMBBDo....... +......oooooooooooooooooo........ +.........moBsGsYsRsBDom......... +........MmoDDDDDDDDDDomM........ +...........mMMM...mM............ +...........xxxx..mMMM........... + anim hop once frame 130 head=16,4 ................................ diff --git a/art/ghost/ghost.art b/art/ghost/ghost.art index 503e8981..f74a402f 100644 --- a/art/ghost/ghost.art +++ b/art/ghost/ghost.art @@ -326,6 +326,112 @@ frame 120 dx=1 head=13,1 ...g...S..S..S.......... .........oooooo......... +anim walk-left loop exits=0,4 +frame 120 dx=-1 head=11,1 +........................ +........LWWWWS.......... +......LLWWWWWWWS........ +.....LWWWWWWWWWWS....... +.....WEEWWWWEEWWS....... +.....WEEWWWWEEWWS....... +.....WKKWWWWWWKKS....... +....WWWWWWWWWWWWSSSf.... +......WWWWWWWWWWWS...... +........WS.WS.WS.WS.g... +..........S..S..S..g.... +.........oooooo......... +frame 120 dx=-1 head=11,0 +........LWWWWS.......... +......LLWWWWWWWS........ +.....LWWWWWWWWWWS....... +.....WEEWWWWEEWWS....... +.....WEEWWWWEEWWS....... +.....WKKWWWWWWKKS....... +....WWWWWWWWWWWWSSSfg... +......WWWWWWWWWWWS...... +........W.WS.WS.WSS..g.. +...........S..S..S..g... +........................ +..........oooo.......... +frame 120 dx=-1 head=11,0 +........LWWWWS.......... +......LLWWWWWWWS........ +.....LWWWWWWWWWWS....... +.....WEEWWWWEEWWS....... +.....WEEWWWWEEWWS....... +....WWKKWWWWWWKKS....... +......WWWWWWWWWWSSSf.... +......WWWWWWWWWWWS...... +........W.WS.WS.WSSg.... +.....................g.. +........................ +..........oooo.......... +frame 120 dx=-1 head=11,1 +........................ +........LWWWWS.......... +......LLWWWWWWWS........ +.....LWWWWWWWWWWS....... +.....WEEWWWWEEWWS....... +.....WEEWWWWEEWWS....... +.....WKKWWWWWWKKS....... +.....WWWWWWWWWWWSSS..... +......WWWWWWWWWWWS...... +.........WS.WS.WS.S.f... +...........S..S..S.fg... +.........oooooo......... +frame 120 dx=-1 head=11,1 +........................ +........LWWWWS.......... +......LLWWWWWWWS........ +.....LWWWWWWWWWWS....... +.....WEEWWWWEEWWS....... +.....WEEWWWWEEWWS....... +.....WKKWWWWWWKKS....... +....WWWWWWWWWWWWSSSf.... +......WWWWWWWWWWWS...... +........W.WS.WS.WSS..g.. +............S..S..S..g.. +.........oooooo......... +frame 120 dx=-1 head=11,0 +........LWWWWS.......... +......LLWWWWWWWS........ +.....LWWWWWWWWWWS....... +.....WEEWWWWEEWWS....... +.....WEEWWWWEEWWS....... +.....WKKWWWWWWKKS....... +....WWWWWWWWWWWWSSSfg... +......WWWWWWWWWWWS...... +........W.WS.WS.WSSg.... +.........S..S..S...g.... +........................ +..........oooo.......... +frame 120 dx=-1 head=11,0 +........LWWWWS.......... +......LLWWWWWWWS........ +.....LWWWWWWWWWWS....... +.....WEEWWWWEEWWS....... +.....WEEWWWWEEWWS....... +....WWKKWWWWWWKKS....... +......WWWWWWWWWWSSSf.... +......WWWWWWWWWWWS...... +.........WS.WS.WS.S.f... +......................g. +........................ +..........oooo.......... +frame 120 dx=-1 head=11,1 +........................ +........LWWWWS.......... +......LLWWWWWWWS........ +.....LWWWWWWWWWWS....... +.....WEEWWWWEEWWS....... +.....WEEWWWWEEWWS....... +.....WKKWWWWWWKKS....... +.....WWWWWWWWWWWSSS..... +......WWWWWWWWWWWS...... +........WS.WS.WS.WS.g... +..........S..S..S...g... +.........oooooo......... + anim working loop exits=0,3,6 frame 110 head=12,1 ........................ diff --git a/docs/assets/ghost/walk-left/00.png b/docs/assets/ghost/walk-left/00.png new file mode 100644 index 0000000000000000000000000000000000000000..65eff8e80cbc06bec6e3ba438b5c28d18ec7e185 GIT binary patch literal 1622 zcmeAS@N?(olHy`uVBq!ia0y~yU~B-g4{)%7L|$x3XJBBH^>lFzshIQj>c-BnKna!$ zZ&Qs0w{@Led+115PtW$o-W;cGe98y4>bfNof6OROcvN0F-TLzv7N7yxz=8U&9DjfA zp8I|N{>59~%S)s&@GuyhVvt}+n8Ikla6p4OfuSLg?EnMAVx9&@1~*9tW`-Uk1~vwX zRKg0UEMZ-9V0&`I0|RCSHjrLJkkK8CKm#3kK*l72Y!P4vnJob_@d(I5B9vNqF`j-Z zA;2NQuv3Pafst8ZdNPAT0>hIc9tIYkhL}Fah6ct7rwthd3>bR& z@l=9=L`@2{4fE&i54o(jpzPZJ{Xm16cFq0zKc7KiK|@~p-~ZAK92yI5NB;j0w1w-% z2vqWtxn@r-D0seZd4He5;XxJS7VZMux4+F91a`zRyk&~<|NW1bfn}Yz!)}J_m-p2( zGc>+ty`Xnsa40{prHrw|WHO(F_5J!kU6+LBv|NmD@qZGwQ+H z@9d#(*>xrzVQ^URx50H1Fg0(H-{2tx4AgJTVxCD13K!}QD0u>N!7cs>l}^S6hu@6d zD!_b@VV^Kj1(-z1(OhujD^o$;bN`yZ-@bWFs*_)}&OYIJ`M(y%gj-+P-~2f@-+;kq z_rHd@_kRkrHDq3w-|*SG{t$z~+h5FOKwT0H%VO&foO}O=llj1w*Zenr&b3cum{InZ z(R%-9bsmPxlpD5SMJ&U)`rm)JWcYT+Ih?zn%J5*rYt|=!V%ZqzE3n|j=hLs9t1|D~ i8?1?Kcs&60_P@*<+YWNNv+XPfmGz#kelF{r5}E*EfS`&1 literal 0 HcmV?d00001 diff --git a/docs/assets/ghost/walk-left/00.svg b/docs/assets/ghost/walk-left/00.svg new file mode 100644 index 00000000..d302ed94 --- /dev/null +++ b/docs/assets/ghost/walk-left/00.svg @@ -0,0 +1 @@ + diff --git a/docs/assets/ghost/walk-left/01.png b/docs/assets/ghost/walk-left/01.png new file mode 100644 index 0000000000000000000000000000000000000000..fe4dae2a61df653e1926e0154727887c4877e5b9 GIT binary patch literal 1616 zcmeAS@N?(olHy`uVBq!ia0y~yU~B-g4{)%7L|$x3XJB9x_jGX#shIQj?#A9wM-k?L zDn)0H5Jx{zl`T##dw2ydvMl0LQdt#IRl%oIe14+L`!_bdvj5EUE#8`bdH()w&Hs0S*a<$Ueq~2F3|bB^YSJarnh>fA8NA-`x$jcGmr8V_@RSu)hBOK7)e; zWA5``f2A2XG#0##*k7Q_k!4l>zDui0|w=5)(d(EUT4+=1F!KbQ-=71uUqy5gX=&Q;}-4@Rk!W~ zLpfnD!!6bdS{YvuwVT0ZmM8myx$E!Ox&8d}RMl(uevYm33p|Y9GMO`k3?kN?YkCY5 zRWcj5- diff --git a/docs/assets/ghost/walk-left/02.png b/docs/assets/ghost/walk-left/02.png new file mode 100644 index 0000000000000000000000000000000000000000..b3b84e53a1f8e1fe0011cb027c06b4a95c814a43 GIT binary patch literal 1493 zcmeAS@N?(olHy`uVBq!ia0y~yU~B-g4{)%7L|$x3XJBBR2QmH{06zL|g-s@v*YL{d%1etk+!C?xc05d}%n*$Gn3)zDGK?gn+ z@o>mUFjQKyG4Sy;?2%z+U}tlP>tk$SW>(NY&TycSal-Uuh6e{2PMkJmC`e#<@>GJs z!hiv&je%rsJL($jYyPFqDrH<7ynjE?3f3=WufCfz6f9`C=lAy?&;=qFZm+z5A80F6 zmG#%((hL>>4*ARL>Vb~pdhzzk`+SB64vc%}{`$+yAfvHh`!F&j^ELm6$FJ{SUh}`+ z_VxFC29MR^2Y&s(zPau{Tf>$r#z8I2&~}YgRb znXj29lwD)ZWAKO;Z`iU~uYlR%)-Hx6b4weg87^I8Rd~CG`wqi|ZF&ru>9G%hJ}qVR zuzt;C&ah-Hx5KSS@g0l`xzsS~$)xPY_51B-MAaWqnhs3A5%i@iZfs?^wtv5#!uk5@ zf7x|^-@ewo{`=r%o`&bp)mrqEGJ@9(Xdwzq>dJjskeP^E$DgMFg^>5}gYq%@se*Mdsc8zt_oKNofE8 literal 0 HcmV?d00001 diff --git a/docs/assets/ghost/walk-left/02.svg b/docs/assets/ghost/walk-left/02.svg new file mode 100644 index 00000000..2ff874bd --- /dev/null +++ b/docs/assets/ghost/walk-left/02.svg @@ -0,0 +1 @@ + diff --git a/docs/assets/ghost/walk-left/03.png b/docs/assets/ghost/walk-left/03.png new file mode 100644 index 0000000000000000000000000000000000000000..d79da8a65c3de72e06bc54be5e2b8f6e7c4b651d GIT binary patch literal 1598 zcmeAS@N?(olHy`uVBq!ia0y~yU~B-g4{)%7L|$x3XJBAs^>lFzshIQj>c*7;jv_1p z)rP_cwa%N88_gO1rm*5vU&_~63G12z+mjm}7%(faf%F=JjP76r8tA|SGA0RRivTmoYzdHwM?e-5q13{Q@$^#( z0S*a~TXZs9H%B+3`WDkyng zV$4|n_rLMFzs%h#nc_PbA8h%?uQO>$>;txj%eU+|cuXp5lxFbD{(nHp^A>9!gT-1p zD_pjf+d-w1somi>yO?JZgTjS>jjoe`$#_eB!bBBdB6}+zq0-6NKojYMJ}q2j+jdU2zWQ@_}W5P08MdIro7DM#YONM$7%cLgT}QuS`XC zz=Gq!!q==%{s0S)1J2jEPyFOgTe~DWM4fQw4$I literal 0 HcmV?d00001 diff --git a/docs/assets/ghost/walk-left/03.svg b/docs/assets/ghost/walk-left/03.svg new file mode 100644 index 00000000..29591506 --- /dev/null +++ b/docs/assets/ghost/walk-left/03.svg @@ -0,0 +1 @@ + diff --git a/docs/assets/ghost/walk-left/04.png b/docs/assets/ghost/walk-left/04.png new file mode 100644 index 0000000000000000000000000000000000000000..61a0dcc38b04a220d3a9c953e1836da86cb05c83 GIT binary patch literal 1620 zcmeAS@N?(olHy`uVBq!ia0y~yU~B-g4{)%7L|$x3XJBBH_H=O!shIQj>c*9!fg&sc z)rP_cwa%8^~-!kcl0PKnsab8sNp~UChHF zBf*f_$JoHktZ>$lp&)@_i6t8YA5VkHafSnpj1!(oFjyEcT#{jCU}tlfmCW$q0E0&{ z4+Dvs9{ggszxS_*@2-YRk^lbz%@+wMzqWrr&{ozfbHBdNXL#ViSepL#w={!AfWzI9 zr(}oSf$P)bFD~KEuzmU4oT1=C9K%bd82?}Yco}52h&$|JxITGbJunL1vQE%D@O8=i z`wRyhs~MMY7Yq*N2D-5fN+)C373QwLUpH^kJNZMG_ybgCmNZH;EE+_tWlOmoo=nPa zTz+5PWvTpz6RN<3c!@vai4ZVkU$W~Ibuu diff --git a/docs/assets/ghost/walk-left/05.png b/docs/assets/ghost/walk-left/05.png new file mode 100644 index 0000000000000000000000000000000000000000..859954f26393d282e9cb15ee5b602350ce0700e0 GIT binary patch literal 1579 zcmeAS@N?(olHy`uVBq!ia0y~yU~B-g4{)%7L|$x3XJBCcZ+t$%3pq;FT1z@ zf7hjd{|*>1ConVwvK?SxSj^MF$lxZ)z|7EN#K6WNk;=fsU~q~-f+1lFqXEMK4Z;c+ zsOToJ?vrI^X_sU$1nKQy1RCwY12QlPWQ+ha$QB8Z*+)PoDzJepBtmH*SA^d228RO- zC!R_$a7ZxhlwoFIWLB7-%%G6K@T7=`frY0brjN0qfpNlVLk0l@h9XNg1|~KKz2gj| zYI@21=fj_sv&tB^Zm#33yHttN8ubG4wZMw+b*-XV@o9Q~?I>TXvmE zM;IIy{B3ZZ1k4Rv diff --git a/docs/assets/ghost/walk-left/06.png b/docs/assets/ghost/walk-left/06.png new file mode 100644 index 0000000000000000000000000000000000000000..d72cac00de030a58dc9e8a4a2cf8e2548db0e41f GIT binary patch literal 1534 zcmd^Wul(B7Np5}+H}$sJz2Ac@vM-%a=RD_me$W4bbN=Tu z(sw9BmWKd<(vX(A7XV>lPX{Z+$e8^Yfc%9ab<4hz>)ggq#RIF8t=q?ecRfrh9*yS7& z*d!qm4~q@wks5Uej}#NZG6EmGgfK?79zBHXpg2hZ5(OFe5=a`lN7N9khDT9SKvHex z5zv}oxR`+7EV7m1!fdLs-bixySr$kV4ZWT9D?t{~`#%R#XteiLmQHJoZi;+Qa)-Kz);n}TgruT9)^=R)bt~if{@dY)SRYl1hFMV$h?X33t zQ63{7Oy>izo|6 diff --git a/docs/assets/ghost/walk-left/07.png b/docs/assets/ghost/walk-left/07.png new file mode 100644 index 0000000000000000000000000000000000000000..88fde841c3aa824a664a083175d4e6622d9c2634 GIT binary patch literal 1613 zcmeAS@N?(olHy`uVBq!ia0y~yU~B-g4{)%7L|$x3XJB9x@pN$vshIQj>c-5tKndo6 z_mlJ_Y+8T&JXF)JWDLJ~sCWriMVGzv356r&d@Jgvm+!oESs17rE4cqk@YnZJYx(+r zZkhM(3uZ7HFdPVEJHWu;F3G^mAd||#!%#4VT)`nC@*X5Q1N76F!$T<=R3YJi+NtsD_}mb zWe~A4-!ch!E;^uiq3(c^Cl3S5E&d3VPR0g@-;CWVh71B3_6ZYJ*ch1Jvg=Gb!r-vr zZ-eV3V2;=#zrjNY7}g+ diff --git a/docs/assets/ghost/walk-left/clip.gif b/docs/assets/ghost/walk-left/clip.gif new file mode 100644 index 0000000000000000000000000000000000000000..92500eee436ab8edd3ac7e72e18251a05a21ceb5 GIT binary patch literal 47091 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 c$N?h;5q>mivAS~MZqp~unVdE7f}?+(f|Me literal 0 HcmV?d00001 diff --git a/docs/assets/ghost/walk-left/clip.mp4 b/docs/assets/ghost/walk-left/clip.mp4 new file mode 100644 index 0000000000000000000000000000000000000000..44d76b46fe920cc771f4566757d01dcc03f90a44 GIT binary patch literal 8609 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 literal 0 HcmV?d00001 diff --git a/docs/assets/robot/walk-left/00.png b/docs/assets/robot/walk-left/00.png new file mode 100644 index 0000000000000000000000000000000000000000..3c546e7bf3845d6516c8118279786d0b3bc514ab GIT binary patch literal 2720 zcmdT`e@q*76o1E!8`8s)xTVx6bjkuoz(Rx5MB6f1q%1-MOZ+jg1+nax8*#b~vT-NO z>GTg8Bn%w_F~eyVfjAgK-C8k37&u62JkpIHb7QqM?;Ltjs)sFky>81STx~=4+(@k)^uKj9teXy}xalGx;9x zFM3vqr9P~Z>`|tt@3?sK)L@6iF&>#$z2BalqT9qsGvf%`=Fx76GWn0b)u3Yzh3h1Uc&C8~A)3S<#RcAiDx=YQ>3?3M&8$O7gTWoW8cnEP(m?f}Ewv>eKj zN0%8P2As((D~ITk|LxYH1~nVJn9o5wTs`qh8q_X3E-xKtE2-IiDF_vJx*o;DekSZCyf7a*kdm+gk;~tyT>R zRX7>k(l`v`DSywzZRyPt%yz_03q%#Df`~{^!KIx9fx!kjEWh;J=SW9kfKh>B00!dv z2657BpK3-R1JiQRIVL!8hU0LENQ3#0%FO-^R6qF>9 z^qfQqgYE_C*R4{}Sz1Rl4fSe>_pX^y%eaPH z9`o3J!1!Er?&Wg-lH=9(L%D^`eBj=v`7RefGn7xc3L61coBdYZMgxMZ9NgOZCmXaPMCA9d@ zstMui&{hZo>_~%iE;(qEA2ifoMH*+=!}q$a9Q*!LtRKxtX-T4+B`6#l4zCm56am!q zkl+7Eq~I`}D%02dM?OU0g*#za=eZswkiQgYU!T;-Fu2 diff --git a/docs/assets/robot/walk-left/01.png b/docs/assets/robot/walk-left/01.png new file mode 100644 index 0000000000000000000000000000000000000000..31a88eda05d2d9fbf8b8812a378907641eec7365 GIT binary patch literal 2678 zcmds3ZA?>F7=A8SFN|I++ceO9NXeG4L_TU8CtH-3O*cLk#=vZg!de|voJN@2+#t$5 ze#B)<78_)sg1`@rBa6slHw2cox-d}GE`_ZImBN%Xm6aMk#D3g+ciZjH{9$Is%(naI zob#UNecp54bD#5`PxA9#j){IO8bC~T)~W&^Lh4e8Vx*?WbZH|Hy)t`M=9-ThJwGQ- z7-ydBS^unxS-L=!KWd9OOXJ0>5JSnv5+y>E%UV|;MGzA;A(P=*=`*uw(xC4f~)1B?Pt^#LSP zS|O_j45oWS{I`Vb;|2a%8uIx2biJEhml&7+mtx-S_@|W{dAFRa&K^qMDIn8LXBD(f z`{;ScBZ|UPt!6zZ2(=W|!(!8N8v7Km zZ)L!0aP%6Bcq6j96;NG(X}bo7gOt)^gjGfBhAx7vXNb9h!uR*>xWO$8R*|B>b%(yG zYHH%dnsxp_V6?kDPZ3*TKs<(0cwT|nl7DS?FasHU@Km8#&2PK;rK96`n?*m&scC$w zKq?vgR$Rwmp$0|huM|62JY&RZ)J+NH3gllv1(odLoocikq(&m%ycDpMLbsH*&Tns= z<@!N3Fhpi}&MVeYkd7qIx@}lYnRDWyNNdA~<*ydYZ*6us)4bY4|75Va-Gzr98L(*^ zCaNeO-&GPyT}$_EnVFwGx$(a``06%Q;knq|F;JW~vf0gvRc@~hL`f^Ts3Z-($>lf( z^AzyCn0|JMf|`QAbgCm#NN z50AW7?v|xXM;TWCjkJen>b@fb|F7x%U;R{$eZcNYcqKOhHQRHWIaSI|WDTY46wa8Z zDdnb)X;h!6F3t*5%&eCjZSDPwTjo4R9{C|8P+e6MRq=L6V#<{^ zoL(BzrKxEnuEvL|*Wafjz4pkm=WSfTr|%@Y)}|_LoX@9MK$j9{a#@1GlPp^5WPMZm zYT*qA`Tg^6_|mkZl)f*bQx-MI e9MWzH#PlC|_opLeFU5tPec7w?R<*rg*!>$>0v_4` literal 0 HcmV?d00001 diff --git a/docs/assets/robot/walk-left/01.svg b/docs/assets/robot/walk-left/01.svg new file mode 100644 index 00000000..b9455eff --- /dev/null +++ b/docs/assets/robot/walk-left/01.svg @@ -0,0 +1 @@ + diff --git a/docs/assets/robot/walk-left/02.png b/docs/assets/robot/walk-left/02.png new file mode 100644 index 0000000000000000000000000000000000000000..0c588abad3b55e6127a0cc6b78cc84d1b21eae1d GIT binary patch literal 2882 zcmds3Z%kWN6hDtQ-f%o9esHB`@+VpLi3DujK%KNqWHe3`HVRRo9Zn!yhK+(HVEgVS zO132fS&SP)i^1R`Da=4%fk|r!$rNZAwPO( zGoKyYVI==Z8+$tY_)mtDWf4*J&ah8y39&_Ibfwysm|JN0^TSya%*o>6h@mf5oWBfo z-Mm&OdIkHcd8SS#S^d}MlXX*KU?=mPE6YQvq4f}eBSSjNwg(oDn7OOglIBXCRjs*@ zj<#2O=43J7%M!H3>>6Ir;MsWvW&yt8p!wJQ4S?Wo+-Dcp-k6-Uh-^bHu_>txvP~-R zrQn)@^B6QJV3H;wZ48>0%D{1uKvk(YM62N2K?NAkVhQv(pkWf`D+$>4082-h$d7B$ zzTnMdYh!I-$=2J)@xecX-Fp==DF%pzfp>U80WnG-fwoyh5+W2ppe3E1BA}iGTx06= zs&UvuAgpcB#H*nlJ<0u4IGdpt%AmP}R@zDo8l=5Y1Kup+>wR%i`~H zQx}p;yr)|%)EYlZLg5$~u_C8mJql=q1i522B=kJC!+kQ8>Yq8?66bSwc=Z-hiNjVE z6v3B)pi2pc=W$24@kP6s^tcZHu!#HkMs*s!5_Xs0`SZHV5q;FI>8Hd61zbFfT^wAL z-@fOkUb%mRkNWvATHw3O!BI*$miqK<({_=)|2o&{dy!SaRr}W%oKnExwB=Z(C`_r= zePA$6Cr>PT#aaTSAh}Z+3?JZwdg+_}*PHd3VP9QfX>q=e!ET-2zh7`#Qwngr z%ZBSjem@)N?6iv21pLoU+_@FDspbk8R5Y9L{k3Ls7i*T(=J@+9hEA}>p> zjJN!Cb>RaxusLlMDm-#yF(1O5N_bn!J_TwD^^izs#-=>3cwZ9UmalhIKQibJVe@QG VMp3le8@FDF4#`6FG literal 0 HcmV?d00001 diff --git a/docs/assets/robot/walk-left/02.svg b/docs/assets/robot/walk-left/02.svg new file mode 100644 index 00000000..d02acc5e --- /dev/null +++ b/docs/assets/robot/walk-left/02.svg @@ -0,0 +1 @@ + diff --git a/docs/assets/robot/walk-left/03.png b/docs/assets/robot/walk-left/03.png new file mode 100644 index 0000000000000000000000000000000000000000..6133b6e60156e909fec7162709f2234f2d0c4343 GIT binary patch literal 2876 zcmds3eN0L=SVO>&;^fg?hZ^qyf4}P|jkTL@Gvt?j9MbH(=I6NbOb^{OOH?bJ|U7&v; z!Cg+k^JO5e6o7O0zjuw76gw?=$$ft4>69kf`|!;(9S)<4`lIX`hT#N_wHd5l6$Y`m z3C8T6B{R_Vm=qqD`+_nM4Z&`x=nF6ch$(^Xpf6-XJcv#L66~EymV`(i5cI6XND)v= z0xqiTa0qcY_+MVz%b~9d*^+VLNp^?NI&H|dcoU7(ml#~;K>|JOXJkCk-Nc+>{Vfiv zaigjy7O}bC?339RyypHwaM)XnGX5SxM>#)IviStWmq9-yxRz9<8&%z_fSP6hE_L%s z(SR{-HRL+O4EOP(mrBLqIRSj!$AsBKOt)<12d3HH;mwm=1Saf@Q5C@@W9w>m z43o+W5}kp~De5K` z!mqWftuB6xgbxj~5)~ycP=Hups0e+3+K0us%YFU`wKalnH>{gc{G!ds1e*4wnw0E} zIvbVW3xCZwGsQd|)I4#q{^4wkSrrNi*}1zKH|t$sv<`M=fL;92)*c8R`UwqZG<2n} z;6Na1LSk4X?o&GWXFkk1ID<$ZEYt=E+`d zCAXDSe5g zB?`>;whEzvxq58ucA``7o)-Y@Oo9SmcoDK9z;uWZbqvtcx6CLbRYUN;l`FR|_!0Eu z@Srmg*43Pb0Dv diff --git a/docs/assets/robot/walk-left/04.png b/docs/assets/robot/walk-left/04.png new file mode 100644 index 0000000000000000000000000000000000000000..cfc2d67216012392a6ac843e8ec12af3e6122f3b GIT binary patch literal 2721 zcmdT`eM}o=7=Ml%1!=J)Zh@Kzow7h8utI~(MB6f1q%0N!OEhlSj**UiLey-7FzyD+ zbZSC_grOiMW{74A#K9PJqjgGz!3HUf#o{QFk6M~?6DYO4-ko>FzcI#u?*4h-C;2^J z?{mNR_g>CZy&4(ubOZoIDzmfl0Yca<0^vM%8PwfB3J_7E%*s4)uG#(5&LyqqnZd&^ zNO-AFO8F&{^z?n#FJ2n%;#(#o@@r0*bCQ%#-HBZ+i~Mv)cmJ=0UDf1{gak)ax_Tn{yZv(bORTH3EQ`VgQpE1>lJQBtrmrCR?E(4M3yY z5VGC>h@N%j`-w1!mHaJw zmn-u8P*?x_R)I|4dEgI*p`ZJzTaD3lJ%S7h;8+F#iHu09Yzj25yDB9M%N z?u-;PjfmK-1(O6-*zN&-n1^>aA@Kb_b}Vx80~Pooa@MMDsaRS1=DVqD2 zs~ck~c(7dx{U?lyDTek0&-h(y)rA`jODE!tzg`8qYtCXA1cp({TqrII+L6M5K z8rJyT6rmpD#-%vxjxHhX#ufwy1^AL}_xPF-dwG)+*}_ac>`YW=Z{wY9Y{6|tISSPR zJg~EQ6ed&t;>4WrVKL8i#!0Y+icv8Zo*;!A`!S3M+eF}dWzQ!_SD~Mjf_Mmq;_eI! zaJSj6M))FJ;vTZT>qE9>|G6Q zu6mrDi>$)Dx|RkRqj}R0y6%JiK+Q2HsxY5+t_Z(q6N1vvHYRUukU_kA%RsG@a@sfH zGJAmZIEdWa<=!>R>z$>!g?h&S`-cS%2QxoXV0EZ5CT@USuy`24Ln<+b)dCYpK)@*~ zcXjhPo#kwlQ(xA`5l(Pf+Z2>x*46~YIq1gfF=xkcD*bQ5?2VhoDhqRjxC==MF5V^? z#{M0O3YNf@G`Q*zfg*Xc&Ahuv^E_2bPN^BXzn&&96s5E#5g03xKitH>y~Uj3LDX!> z-DSF$t>zwA9RpLJ$QcPnjWG+Wd^reN6 xWxC0Z`9oClxS7;wo!1^ diff --git a/docs/assets/robot/walk-left/05.png b/docs/assets/robot/walk-left/05.png new file mode 100644 index 0000000000000000000000000000000000000000..87c9c117a4336f57f51d1ec2d32a0f1d6d9625d5 GIT binary patch literal 2647 zcmds3ZA@Eb6nK3RUP%;x-UQHAI|`L11idXAsC(k+^}9$s*)%#xF!e&SNhyguU0_TGWthPrEg+vDTyRduI$ z(?_mfZLXtBj|5Qfd(5tP1kSoJajLi_NAMAC9RZGsf#_1eETaHg3dn~6HZu^RI2F(u z@2}#$#ot^g@UBvjL_eVEz38gAsPw<(^IpThM6Tl;5~fBynNZCm(?Mkybgg)(E$1XM z^#zMv5?Pb!JQdmBqAy%OM zh8WR0WDiOqABC|}0c{hJIdw40Db?gvu={DYx0&F_2R1Bmi2Me&$am9P+-g`}{ATYy zug^C#Se_@1)N2uq$wZEmBC_;f%T8n8C{MXjLjxJO26q8Efq!dZ)-1ovh z8ru{o!bp|SC&qI+^rK;!FP9>J6nc_i=WMAs+eD^A-n!;9y$e+eW!~D|vdWBrEumSF z_9d6lKoDq2l(}L`NZfGX$xw6i$K`KmB)7_}wq%#`^grorW3zBl)8k{x=0yYXa08{m z(w!Z=BkJW=&mZ`&3g6x#dgs-_zHv?RbeV$@3=Y>ASQ#Z_!r~S9E|+0wY>~pVJN-22 z)_8pi$c8Z-d+Capby{p~1evsokId8I{YIV_BPktUs=06xWmfd}FhcnNr$Zxp^)RajYeD*d3B1)Er)&;Vu_C8R5*`93FqO+#yO2 zv~vCR&n7?SZuo&6|9@TQ|L!F@mT`+c_VwIY)K%uTG4jM}WKSkm^A~$pi0okBiYIj3 z63VvU*fgbWzROC+pc#nKns`6gndX{m_0GGUoeMUGTN~hU7`Jlg2d)>`}JgZ3Z*i%24YnuK1>F24(f$3?IzBzF`E;jjCPaX9|3KHXn47} zhNmGP**fb-39h#Va{F-^c1ODg{9>*ux}^H#u$(1 gDQpN_|5`-n=O6y`+3g)`!GE24PhM8ntJ>N>0KbR?;s5{u literal 0 HcmV?d00001 diff --git a/docs/assets/robot/walk-left/05.svg b/docs/assets/robot/walk-left/05.svg new file mode 100644 index 00000000..0f2c05c3 --- /dev/null +++ b/docs/assets/robot/walk-left/05.svg @@ -0,0 +1 @@ + diff --git a/docs/assets/robot/walk-left/06.png b/docs/assets/robot/walk-left/06.png new file mode 100644 index 0000000000000000000000000000000000000000..ad73c33412e3aca6205edb1d3231bbb17af602de GIT binary patch literal 2883 zcmds3Z%k8H6hE&o6e15{OD1-6g4uL_Ab?f}+o-Ju1wH_iDX@uabq?%QXdEb_?Rz>L zS#;8nxG`ZAH#VRQaM>cJoxEq%%?+h0R82@}<8ZY_=wf|h-{ZZz2U)UD+XtP0;{9^Z zxw-e;dw=)b-|u|#W==-bjOS+nKvY&{dLDpGGBJpdOWj#>e+fY3jI8wKYbqPZuFUK2 zyz$(}8x|Od>#66T$=ug|iYktXs_vKVUl~IjYB^k3x1i<2w$n?U2b(va>GDPNI!F3{ zvvrMJ*^PLfo-hvYj+UbSXY-Knq7c7jFv;?%6`3IQR{-iG0wDF={Tf%ek*{;Lb*1?h zwWe(u^>T&N8y#bfj?Y@phVW`Xo|#u*6yYcbb%Sdk!4!M|_td)4e7&9)xPgVZY?cyQ z>mMgf;y1f-q^^LQ~Z8{|}Z3Jx>xW9ddV zY?(^)t>8Dk_d5^#{vErQR3lO+l`R*!jP zCmOx#KA_GL5X;<1LvPC=p%_j;qBrDN47x=)6J~hLL4Jn80R<#deY?aT9zy7CaZomV z^2MbprZt$`Mk6#v~}=a5KV?8C)a`; z>OHCtIP`{*?B#AZtY$-)#9y-|hQ?sd6wf|3BVmb3+jgq`Ml(0hysTaW9R06k(!EgkNS2^I?1@J7vHC0X6u?CFM z%c(nQxGn{!1|(tJC1)gUY?Z|D!2`mqhM8s`SUX76&V`&Lsz}s%zUO4^{|w0C&qCwg zK_`vY2$Oyqy^cfWcfA_F-%VOgCW#!r#2_tS8(+Z&)N9o=7ohtA=5{2RZQO*#YS9W4 zTB&}jb;f3{7x-MKqg&*=l|cRCk8J4@g;u|}00~zWz`VzX diff --git a/docs/assets/robot/walk-left/07.png b/docs/assets/robot/walk-left/07.png new file mode 100644 index 0000000000000000000000000000000000000000..684b0d1245db8b42233f87cbbbf48d182c13470f GIT binary patch literal 2864 zcmds3Z%k8H6hE(T6ho_ZO9Z;oQh+6^bj5%6q)`b|FjlY5U-GF5WNq zoV&#I=aRo@|ZsX2Uws5@M|90h~*~4>Onil z$2s~tlAHmr8@8@;f9WC434Xz->Zbw>tG$<5A;4cS(1Xo z0v*_0YAC*dX}mXpyrzV^g>qQ@5L>$##Zfc)2Jf|XE@pr8=DvT32eag=<{3D;J+fZPkpp749aaaX-C8iM!Re^twQk}Z24ARQHQ7@pUQxo{>rjm4^@eTvK))*| z75>Au(kdKcb&v<=!!resA@ooh3}5|Z-9aadlhZ6h7 ze3E$%|Gh#!szcz7={%V{xNXA!5Vh|Jm&+ENSe9tF5m39r`9i zN#;L~@TlsJ7WW@{YPv_`R$Cen7h4gB)9$WFsD!2PUObP8Jv0t`i@6@S66s&lbL+|41*<=6Lo@sRTVng~}dWs9#v_M{A6!s=jsAB?qBw+`t#P0HA10G7+Da86T509W6`mH+?% literal 0 HcmV?d00001 diff --git a/docs/assets/robot/walk-left/07.svg b/docs/assets/robot/walk-left/07.svg new file mode 100644 index 00000000..b383ecaa --- /dev/null +++ b/docs/assets/robot/walk-left/07.svg @@ -0,0 +1 @@ + diff --git a/docs/assets/robot/walk-left/clip.gif b/docs/assets/robot/walk-left/clip.gif new file mode 100644 index 0000000000000000000000000000000000000000..17f9a7ccaefaec16c9ec5e56d6bdf2a021c641d4 GIT binary patch literal 87895 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 gux7d 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 LI3lEeju`WAa5q$A literal 0 HcmV?d00001 diff --git a/docs/assets/robot/walk-left/clip.webm b/docs/assets/robot/walk-left/clip.webm new file mode 100644 index 0000000000000000000000000000000000000000..a8c5ad9d189417083be222f641899b3925490df5 GIT binary patch literal 9258 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 qy-9eJ@W$OOX}$k= { expect(petPose(p, 1000 + 3001)).toBe('idle') }) -test('the ghost follows the user-pet rules: the spec animations plus the dances, walks facing right, headphones and lie-down', () => { +test('the ghost follows the user-pet rules: the spec animations plus the dances, a hand-drawn left walk, headphones and lie-down', () => { const s = BUILTIN_SHEETS.ghost! expect([s.w, s.h]).toEqual([24, 12]) - expect(Object.keys(s.animations).filter(n => !IDLE_VARIANTS.includes(n)).sort()).toEqual([...PET_ANIMS.filter(n => !IDLE_VARIANTS.includes(n)), 'dance', 'work-dance'].sort()) + expect(Object.keys(s.animations).filter(n => !IDLE_VARIANTS.includes(n)).sort()).toEqual([...PET_ANIMS.filter(n => !IDLE_VARIANTS.includes(n)), 'dance', 'work-dance', 'walk-left'].sort()) expect(Object.keys(s.outfits ?? {})).toEqual(['headphones', 'bow', 'witch', 'crown']) expect(Object.keys(s.transitions ?? {})).toEqual(['lie-down']) for (const f of s.animations.walk!.frames) expect(f.dx).toBe(1) + for (const f of s.animations['walk-left']!.frames) expect(f.dx).toBe(-1) expect(isClawd('ghost')).toBe(false) expect(petPalette(s, 'ghost', { body: '#000001' })).toEqual(s.palette) expect(stripRows(s, [])).toBe(6) @@ -337,13 +338,14 @@ test('the built-in sheets are clawd, the robot and the ghost, all playable', () for (const s of Object.values(BUILTIN_SHEETS)) expect(() => validateSheet(s)).not.toThrow() }) -test('the robot follows the user-pet rules: the spec animations plus the dances, mirrored walks, headphones and the level outfits', () => { +test('the robot follows the user-pet rules: the spec animations plus the dances, a hand-drawn left walk, headphones and the level outfits', () => { const s = BUILTIN_SHEETS.robot! expect([s.w, s.h]).toEqual([32, 16]) - expect(Object.keys(s.animations).filter(n => !IDLE_VARIANTS.includes(n)).sort()).toEqual([...PET_ANIMS.filter(n => !IDLE_VARIANTS.includes(n)), 'dance', 'work-dance'].sort()) + expect(Object.keys(s.animations).filter(n => !IDLE_VARIANTS.includes(n)).sort()).toEqual([...PET_ANIMS.filter(n => !IDLE_VARIANTS.includes(n)), 'dance', 'work-dance', 'walk-left'].sort()) expect(Object.keys(s.outfits ?? {})).toEqual(['headphones', 'propeller', 'tophat', 'crown']) expect(s.transitions ?? {}).toEqual({}) for (const f of s.animations.walk!.frames) expect(f.dx).toBe(1) + for (const f of s.animations['walk-left']!.frames) expect(f.dx).toBe(-1) }) test('a pack tint recolors only Clawd', () => { From a0495522a57bc4cb8ce0e2249c1f0d0314572a60 Mon Sep 17 00:00:00 2001 From: NovusEdge Date: Fri, 16 Oct 2026 08:58:32 +0300 Subject: [PATCH 2/3] feat(pets): hand-drawn panting left walks for the ghost and the robot Same frames, timings and exits as pant-walk, dx -1, head anchors moved to the left-facing body. The light stays top-left; the ghost's sweat drop and the robot's drooping antenna lead to the left, and the wisps, steam and sweat trail to the right. Signed-off-by: NovusEdge --- art/crt/crt.art | 90 +++++++++++++++++ art/ghost/ghost.art | 106 +++++++++++++++++++++ docs/assets/ghost/pant-walk-left/00.png | Bin 0 -> 1561 bytes docs/assets/ghost/pant-walk-left/00.svg | 1 + docs/assets/ghost/pant-walk-left/01.png | Bin 0 -> 1747 bytes docs/assets/ghost/pant-walk-left/01.svg | 1 + docs/assets/ghost/pant-walk-left/02.png | Bin 0 -> 1564 bytes docs/assets/ghost/pant-walk-left/02.svg | 1 + docs/assets/ghost/pant-walk-left/03.png | Bin 0 -> 1545 bytes docs/assets/ghost/pant-walk-left/03.svg | 1 + docs/assets/ghost/pant-walk-left/04.png | Bin 0 -> 1553 bytes docs/assets/ghost/pant-walk-left/04.svg | 1 + docs/assets/ghost/pant-walk-left/05.png | Bin 0 -> 1628 bytes docs/assets/ghost/pant-walk-left/05.svg | 1 + docs/assets/ghost/pant-walk-left/06.png | Bin 0 -> 1599 bytes docs/assets/ghost/pant-walk-left/06.svg | 1 + docs/assets/ghost/pant-walk-left/07.png | Bin 0 -> 1553 bytes docs/assets/ghost/pant-walk-left/07.svg | 1 + docs/assets/ghost/pant-walk-left/clip.gif | Bin 0 -> 53715 bytes docs/assets/ghost/pant-walk-left/clip.mp4 | Bin 0 -> 8920 bytes docs/assets/ghost/pant-walk-left/clip.webm | Bin 0 -> 8465 bytes docs/assets/ghost/pant-walk-left/sheet.png | Bin 0 -> 13248 bytes docs/assets/robot/pant-walk-left/00.png | Bin 0 -> 2872 bytes docs/assets/robot/pant-walk-left/00.svg | 1 + docs/assets/robot/pant-walk-left/01.png | Bin 0 -> 2721 bytes docs/assets/robot/pant-walk-left/01.svg | 1 + docs/assets/robot/pant-walk-left/02.png | Bin 0 -> 2932 bytes docs/assets/robot/pant-walk-left/02.svg | 1 + docs/assets/robot/pant-walk-left/03.png | Bin 0 -> 2845 bytes docs/assets/robot/pant-walk-left/03.svg | 1 + docs/assets/robot/pant-walk-left/04.png | Bin 0 -> 2869 bytes docs/assets/robot/pant-walk-left/04.svg | 1 + docs/assets/robot/pant-walk-left/05.png | Bin 0 -> 2682 bytes docs/assets/robot/pant-walk-left/05.svg | 1 + docs/assets/robot/pant-walk-left/06.png | Bin 0 -> 2998 bytes docs/assets/robot/pant-walk-left/06.svg | 1 + docs/assets/robot/pant-walk-left/07.png | Bin 0 -> 2814 bytes docs/assets/robot/pant-walk-left/07.svg | 1 + docs/assets/robot/pant-walk-left/clip.gif | Bin 0 -> 119543 bytes docs/assets/robot/pant-walk-left/clip.mp4 | Bin 0 -> 11112 bytes docs/assets/robot/pant-walk-left/clip.webm | Bin 0 -> 10905 bytes docs/assets/robot/pant-walk-left/sheet.png | Bin 0 -> 22735 bytes hooks/sprites/crt.ts | 10 ++ hooks/sprites/ghost.ts | 10 ++ test/pets.test.ts | 10 +- 45 files changed, 238 insertions(+), 4 deletions(-) create mode 100644 docs/assets/ghost/pant-walk-left/00.png create mode 100644 docs/assets/ghost/pant-walk-left/00.svg create mode 100644 docs/assets/ghost/pant-walk-left/01.png create mode 100644 docs/assets/ghost/pant-walk-left/01.svg create mode 100644 docs/assets/ghost/pant-walk-left/02.png create mode 100644 docs/assets/ghost/pant-walk-left/02.svg create mode 100644 docs/assets/ghost/pant-walk-left/03.png create mode 100644 docs/assets/ghost/pant-walk-left/03.svg create mode 100644 docs/assets/ghost/pant-walk-left/04.png create mode 100644 docs/assets/ghost/pant-walk-left/04.svg create mode 100644 docs/assets/ghost/pant-walk-left/05.png create mode 100644 docs/assets/ghost/pant-walk-left/05.svg create mode 100644 docs/assets/ghost/pant-walk-left/06.png create mode 100644 docs/assets/ghost/pant-walk-left/06.svg create mode 100644 docs/assets/ghost/pant-walk-left/07.png create mode 100644 docs/assets/ghost/pant-walk-left/07.svg create mode 100644 docs/assets/ghost/pant-walk-left/clip.gif create mode 100644 docs/assets/ghost/pant-walk-left/clip.mp4 create mode 100644 docs/assets/ghost/pant-walk-left/clip.webm create mode 100644 docs/assets/ghost/pant-walk-left/sheet.png create mode 100644 docs/assets/robot/pant-walk-left/00.png create mode 100644 docs/assets/robot/pant-walk-left/00.svg create mode 100644 docs/assets/robot/pant-walk-left/01.png create mode 100644 docs/assets/robot/pant-walk-left/01.svg create mode 100644 docs/assets/robot/pant-walk-left/02.png create mode 100644 docs/assets/robot/pant-walk-left/02.svg create mode 100644 docs/assets/robot/pant-walk-left/03.png create mode 100644 docs/assets/robot/pant-walk-left/03.svg create mode 100644 docs/assets/robot/pant-walk-left/04.png create mode 100644 docs/assets/robot/pant-walk-left/04.svg create mode 100644 docs/assets/robot/pant-walk-left/05.png create mode 100644 docs/assets/robot/pant-walk-left/05.svg create mode 100644 docs/assets/robot/pant-walk-left/06.png create mode 100644 docs/assets/robot/pant-walk-left/06.svg create mode 100644 docs/assets/robot/pant-walk-left/07.png create mode 100644 docs/assets/robot/pant-walk-left/07.svg create mode 100644 docs/assets/robot/pant-walk-left/clip.gif create mode 100644 docs/assets/robot/pant-walk-left/clip.mp4 create mode 100644 docs/assets/robot/pant-walk-left/clip.webm create mode 100644 docs/assets/robot/pant-walk-left/sheet.png diff --git a/art/crt/crt.art b/art/crt/crt.art index af3404fd..7053c639 100644 --- a/art/crt/crt.art +++ b/art/crt/crt.art @@ -1652,6 +1652,96 @@ frame 140 dx=1 head=17,3 fx=4,0,n;3,1,u;6,1,u;7,2,n ...........mMMM..xxxx........... frame 140 dx=1 head=17,3 copy=pw3 fx=2,0,n;5,0,u;6,2,n;4,1,u +anim pant-walk-left loop exits=0,4 +frame 140 dx=-1 head=15,3 name=lpw0 fx=24,2,n;25,1,u;26,2,n;26,6,C +................................ +.................MM............. +...............YR..M............ +.......oooooooooooooooo......... +......oLLLLLLLLLLLLLLLBo........ +.....oLBBeeeeeeeeeeeeBBDo....... +.....oLBethhtttttthhteBDo....... +.....oLBesGGssssssGGseBDo....... +.....oLBettttGhhGtttteBDo....... +.....oLBBessssRRsssseBBDo....... +.....oBBGBBBBBBBBBMBMBBDo....... +......oooooooooooooooooo........ +.........moBsGsYsRsBDom......... +.........moDDDDDDDDDDom......... +.........M..mM....mM..M......... +...........mMMM..mMMM........... +frame 140 dx=-1 head=15,4 name=lpw1 fx=25,1,n;26,0,u;27,1,n;23,3,n +................................ +................................ +.................MM............. +...............YR..M............ +.......oooooooooooooooo......... +......oLLLLLLLLLLLLLLLBo........ +.....oLBBeeeeeeeeeeeeBBDo....... +.....oLBethhtttttthhteBDo....... +.....oLBesGGssssssGGseBDo....... +.....oLBettttGhhGtttteBDo....... +.....oLBBessssRRsssseBBDo....... +.....oBBGBBBBBBBBBMBMBBDo....... +......oooooooooooooooooo........ +.........moBsGsYsRsBDom......... +.........moDDDDDDDDDDom......... +.........M.mMMM..mMMM.M......... +frame 140 dx=-1 head=15,3 fx=26,0,n;27,0,u;28,1,u;23,2,n +................................ +.................MM............. +...............YR..M............ +.......oooooooooooooooo......... +......oLLLLLLLLLLLLLLLBo........ +.....oLBBeeeeeeeeeeeeBBDo....... +.....oLBethhtttttthhteBDo....... +.....oLBesGGssssssGGseBDo....... +.....oLBettttGhhGtttteBDo....... +.....oLBBessssRRsssseBBDo....... +.....oBBGBBBBBBBBBMBMBBDo....... +......oooooooooooooooooo........ +.........moBsGsYsRsBDom......... +.........moDDDDDDDDDDom......... +.........M..mM...mMMM.M......... +...........mMMM..xxxx........... +frame 140 dx=-1 head=15,3 name=lpw3 fx=28,0,n;29,1,u;24,1,n;25,2,u +................................ +................................ +..............YRM..M............ +.......oooooooooooooooo......... +......oLLLLLLLLLLLLLLLBo........ +.....oLBBeeeeeeeeeeeeBBDo....... +.....oLBethhtttttthhteBDo....... +.....oLBesGGssssssGGseBDo....... +.....oLBettttGhhGtttteBDo....... +.....oLBBessssRRsssseBBDo....... +.....oBBGBBBBBBBBBMBMBBDo....... +......oooooooooooooooooo........ +.........moBsGsYsRsBDom......... +.........moDDDDDDDDDDom......... +.........M..mM....mM..M......... +...........mMMM..mMMM........... +frame 140 dx=-1 head=15,3 copy=lpw0 fx=25,2,n;26,1,u;29,0,u;27,2,n;26,8,C +frame 140 dx=-1 head=15,4 copy=lpw1 fx=26,1,n;27,0,u;24,3,n;23,3,u +frame 140 dx=-1 head=15,3 fx=27,0,n;28,1,u;25,1,u;24,2,n +................................ +.................MM............. +...............YR..M............ +.......oooooooooooooooo......... +......oLLLLLLLLLLLLLLLBo........ +.....oLBBeeeeeeeeeeeeBBDo....... +.....oLBethhtttttthhteBDo....... +.....oLBesGGssssssGGseBDo....... +.....oLBettttGhhGtttteBDo....... +.....oLBBessssRRsssseBBDo....... +.....oBBGBBBBBBBBBMBMBBDo....... +......oooooooooooooooooo........ +.........moBsGsYsRsBDom......... +.........moDDDDDDDDDDom......... +.........M.mMMM...mM..M......... +...........xxxx..mMMM........... +frame 140 dx=-1 head=15,3 copy=lpw3 fx=29,0,n;26,0,u;25,2,n;27,1,u + anim scrunch once frame 100 head=16,2 ....................yY.......... diff --git a/art/ghost/ghost.art b/art/ghost/ghost.art index f74a402f..5a03e82a 100644 --- a/art/ghost/ghost.art +++ b/art/ghost/ghost.art @@ -1713,6 +1713,112 @@ frame 140 dx=1 head=13,2 ...g.WS.WS.WS.WS........ .........oooooo......... +anim pant-walk-left loop exits=0,4 +frame 140 dx=-1 head=11,2 +........................ +........................ +........LWWWWS.......... +......LLWWWWWWWS........ +.....LWWWWWWWWWWS....... +.....WSSWWWWSSWWS....... +.....WEEWWWWEEWWS....... +.....WKKWEEWWWKKS....... +....WWWWWWRWWWWWSSSf.... +......WWWWWWWWWWWS...... +........WS.WS.WS.WS.g... +.........oooooo......... +frame 140 dx=-1 head=11,1 +........................ +...C....LWWWWS.......... +...CC.LLWWWWWWWS........ +.....LWWWWWWWWWWS....... +.....WSSWWWWSSWWS....... +.....WEEWWWWEEWWS....... +.....WKKWEEWWWKKS....... +....WWWWWWRWWWWWSSSfg... +......WWWWWWWWWWWS...... +........W.WS.WS.WSS..g.. +...........S..S..S..g... +.........oooooo......... +frame 140 dx=-1 head=11,1 +........................ +........LWWWWS.......... +......LLWWWWWWWS........ +...C.LWWWWWWWWWWS....... +...CCWSSWWWWSSWWS....... +.....WEEWWWWEEWWS....... +....WWKKWEEWWWKKS....... +......WWWWRWWWWWSSSf.... +......WWWWWWWWWWWS...... +........W.WS.WS.WSSg.... +.....................g.. +.........oooooo......... +frame 140 dx=-1 head=11,2 +........................ +........................ +........LWWWWS.......... +......LLWWWWWWWS........ +.....LWWWWWWWWWWS....... +.....WSSWWWWSSWWS....... +.....WEEWWWWEEWWS....... +.....WKKWEEWWWKKS....... +.....WWWWWRWWWWWSSS..... +......WWWWWWWWWWWS...... +.........WS.WS.WS.S.f... +.........oooooo......... +frame 140 dx=-1 head=11,2 +........................ +........................ +........LWWWWS.......... +......LLWWWWWWWS........ +.....LWWWWWWWWWWS....... +.....WSSWWWWSSWWS....... +.....WEEWWWWEEWWS....... +.....WKKWEEWWWKKS....... +....WWWWWWRWWWWWSSSf.... +......WWWWWWWWWWWS...... +........W.WS.WS.WSS..g.. +.........oooooo......... +frame 140 dx=-1 head=11,1 +........................ +........LWWWWS.......... +......LLWWWWWWWS........ +.....LWWWWWWWWWWS....... +.....WSSWWWWSSWWS....... +.....WEEWWWWEEWWS....... +.....WKKWEEWWWKKS....... +....WWWWWWRWWWWWSSSfg... +......WWWWWWWWWWWS...... +........W.WS.WS.WSSg.... +.........S..S..S...g.... +.........oooooo......... +frame 140 dx=-1 head=11,1 +........................ +........LWWWWS.......... +......LLWWWWWWWS........ +.....LWWWWWWWWWWS....... +.....WSSWWWWSSWWS....... +.....WEEWWWWEEWWS....... +....WWKKWEEWWWKKS....... +......WWWWRWWWWWSSSf.... +......WWWWWWWWWWWS...... +.........WS.WS.WS.S.f... +......................g. +.........oooooo......... +frame 140 dx=-1 head=11,2 +........................ +........................ +........LWWWWS.......... +......LLWWWWWWWS........ +.....LWWWWWWWWWWS....... +.....WSSWWWWSSWWS....... +.....WEEWWWWEEWWS....... +.....WKKWEEWWWKKS....... +.....WWWWWRWWWWWSSS..... +......WWWWWWWWWWWS...... +........WS.WS.WS.WS.g... +.........oooooo......... + anim scrunch once frame 150 head=12,1 ........................ diff --git a/docs/assets/ghost/pant-walk-left/00.png b/docs/assets/ghost/pant-walk-left/00.png new file mode 100644 index 0000000000000000000000000000000000000000..f08a1116285e994f7347f88982bd709455249f69 GIT binary patch literal 1561 zcmc(ee@IhN6vxlqb5GGH6O&w8&dSI?%x3>cRQe1{_lG*eC56h!OlP2?Vlsccs}dH8 zMFd7>Ei98^+d|Ey*+wSziyW95E7?N|gfWz43a;(-*642$TAjb{J$%pSe9z_FtMcrO z(BPhC&cpFUCKM+C^#y9X0;FW2O!{pi-f zo<$qpo7~dh7W7teRBhbWF>>L6YVlI-{k0G6BA&6O;A-?1J@;&N+LYQm#4*a-NDAh7 zLJ2sRGz0Wf7{SRMKtRVKAVFLL6iDBJ7?ig*7s_vLHwbK;39*(Gvt9V<E&4G((Up%7pVtRKhLGn|Jv)Xn);AN47JNg<=@Fl6e@ik&D^5>ul+c>x;`qli76HF$VyItI zBQX$4U?13pO5hg{x9cJ?zh)%FjQ#_W^7I(Yt*Tw&kK7)+EKt*QOVF|0Q*uR!Y9KnUSL%PRqj+n3tjraU2sQFU4D{l5YXPTS@K4d4d({;y{t-k<{Vp_cb literal 0 HcmV?d00001 diff --git a/docs/assets/ghost/pant-walk-left/00.svg b/docs/assets/ghost/pant-walk-left/00.svg new file mode 100644 index 00000000..789bba9e --- /dev/null +++ b/docs/assets/ghost/pant-walk-left/00.svg @@ -0,0 +1 @@ + diff --git a/docs/assets/ghost/pant-walk-left/01.png b/docs/assets/ghost/pant-walk-left/01.png new file mode 100644 index 0000000000000000000000000000000000000000..3886d3e58a79776325299ebdc060344375ab7c40 GIT binary patch literal 1747 zcmdT_Z%k8H6#us`G;KUme=|y@!P(r}Rq8EH5uB-40Mhu|;*(Lgen*S|F>lytJgM>D!r`r;qR5 zv-;5QfuXJJkEVg_FOQeFv1Y1H9L~?0HsxMf-}lpBv8*GbyK@@NwZD0ryF-oytHAu* z3UQnuC#TLt!aeppIUJmGq^C}e`8-^eo;*wCqIWG`qK&Xr;C+^dvmH0o1pITCMmeeU6 zM)dfPH*p}(+R#PBR#b;sXj!py9c)HSm?^?g?%NvVsmaD|ka(PErlF#(qk0tQqM-|q zR#GOAt1g|TWja^`$tY9j4bI4f-vhBE!R+Vwz)6olk%JM{H3#wS5YkGkfX*$$HIPaz zgVtxTCaKpykmVfY9pl6~=BrzYjdt zkIpfQZ$zkfX;Vxa?3jrC6Ym)FdHt6g;7djaPW8x<_()wKIrL_N+1ZWvIyOr*U-kd6 z#j_F0G2;%XLXXAoqvnQ z<3mW&U{JX4zM;IQyq5cq{I_J^h^pZ`#isXvZY^G_+rYpRF?L=Vm diff --git a/docs/assets/ghost/pant-walk-left/02.png b/docs/assets/ghost/pant-walk-left/02.png new file mode 100644 index 0000000000000000000000000000000000000000..b38ac3084afeba6c0b1e5b0de140d54d90b8f2db GIT binary patch literal 1564 zcmd5+T}V@L6hHUg%{9$U8l{CfAy6Smi3|hXR?N~cZJ{JdyYnH_QWNaMvU&ezMZH8q zl&Lt2KtgQ`#YM1oee$6XrEukzc`ZouZY7K@z1!XG?!A{Z#Pe{@;e7nyaL)PNK3aSz zK6YCy0K^v-=#K$lNc8CqG118U@M!?)w?h5?(xz_T@LZtao|(k_hux36thL&ad_Htew)<@sZXn zECEsvg9L7E0t_BYbbvBe5ISg7+K4YbFj|S5a4`HArRG9*?JHxD3n^?Tdr(6sbeJ_5 zvj@uxUB&4d+!S1vpbrw->z6~H98JxspjZV%A?Mq zgo1uGVAW0vOC4+hNiQFfqG1k8Kx}`GsbX!1H8{9442CMw!Jtc10rM6AImO#pY)-?1$4!Pwk z1W+{R0XsvgQw6~%IDht8D6^aOw}}rbBu3dqAfrSR7SA#RTNI=s*Q`DPNN5L4F9+Q{ ufPXSI6hC{89Pw~GQOOeJGiz@fJrq{*o%wwK&d!Zdt}e_k);~L7y7mWv&VPmg literal 0 HcmV?d00001 diff --git a/docs/assets/ghost/pant-walk-left/02.svg b/docs/assets/ghost/pant-walk-left/02.svg new file mode 100644 index 00000000..2409de07 --- /dev/null +++ b/docs/assets/ghost/pant-walk-left/02.svg @@ -0,0 +1 @@ + diff --git a/docs/assets/ghost/pant-walk-left/03.png b/docs/assets/ghost/pant-walk-left/03.png new file mode 100644 index 0000000000000000000000000000000000000000..9f878cac42b25037bf2ef990600ac3d56b869e88 GIT binary patch literal 1545 zcmeAS@N?(olHy`uVBq!ia0y~yU~B-g4{)%7L|$x3XJBBx;OXKRQZeW4)s1UYLPcCI zo@C`$6lArloN$Dtq1BfuLZz{TnLBe)M$wMr8eUtcg?!83yT1C{bbX)+B!U0M^B33e z&wbx-|KC#g?|=3-&ISgC#VigC4S`Gw3hFmNy!crmarNT@O}G4u#AFfzCi zRMry1zkzw5En`y>Qvwsv!~-lKO`IU@!XSgxKt}q244(nA#()uMAwh)>n(Q}bsVfvH zFkG`?Y+z>G@Qjl|hNHpMpW%T6!3#dhm-u(oGEIp6)xgbg zb%?MpUt&M-#)w^p?-KuwH%5#N&0mJ)99TTC4Eef0FOzpJ{r~^KhA)gU@xT7_^LWc2 g_)2#H|Ly-7p0k}hC(<+77*slYy85}Sb4q9e0IPywivR!s literal 0 HcmV?d00001 diff --git a/docs/assets/ghost/pant-walk-left/03.svg b/docs/assets/ghost/pant-walk-left/03.svg new file mode 100644 index 00000000..6551acec --- /dev/null +++ b/docs/assets/ghost/pant-walk-left/03.svg @@ -0,0 +1 @@ + diff --git a/docs/assets/ghost/pant-walk-left/04.png b/docs/assets/ghost/pant-walk-left/04.png new file mode 100644 index 0000000000000000000000000000000000000000..a757dabba80df3f2efb0a6a771268cbce9dfe4b5 GIT binary patch literal 1553 zcmdUv?@Lo*6vw~M-Cf%howZ1b$Wf#bWkM1{Hg9G>jM_9b5*)4we-*SBmJ4xvun2;n zf+z{opg<8^i>8GuccWL)i>#1|q`MHIv2HHW&2~4}y?=p-CG_yTIOp&^p92ry=iDea zA4yBum;xZJ>}cspfKWN+wQH2hw6`8mkCl}ksC0CSqtE&uR;|BQ5iPlXySKe_$I&mW zI%BPmYI3H0hLfg96G? zkjE8xhcYIg$OD%aR-}8ZU6kYSW0nQO*zV^dBLlu7LMg_+>A`)%#BcOq|&7a>=iwYHke$Yhe^HF&T?y zLR-kac(IsJgGnD*CCPVHd|}pdDZQaZ^!vdHG1*)4bu=fSrLx6}hMbU%$6~X!7_#{o z+;V3t3PO(r^s<72e;m@t3J$`@d6ld%B0RkkOvk7RA!#Ar>W$3!hYKJkeoX}$MCo9) zMBEk(ozJ$DM|}wdaxpQWe~I!@Ck+|s&v8u+dYg**c^%gxs`5}dkS)a6N4^NjMBljH z-o}hrC7OyVQS;J7rrmA4n)XFhHQi_qm;{Ea`uq4sQDwWgbH5-)HS*L8_m0Cj;^gbz z$=~E(r-Ek=-ee*|W~JxB;9|1JDaF5St(KyD%!oUQBNv@HaQgAe0J8!9T1@KDqocvy zm|^K>mY>O_Eezkt2+>r29}x;jSW*iQVSj*y1QRx+@We_m`C?DE>$hie+~u;Jmf(J> iY`Fow5L@-a)L;^O9i!*2ZrWX|?C7#X=2CZwt^E(6NMGgv literal 0 HcmV?d00001 diff --git a/docs/assets/ghost/pant-walk-left/04.svg b/docs/assets/ghost/pant-walk-left/04.svg new file mode 100644 index 00000000..91a453a3 --- /dev/null +++ b/docs/assets/ghost/pant-walk-left/04.svg @@ -0,0 +1 @@ + diff --git a/docs/assets/ghost/pant-walk-left/05.png b/docs/assets/ghost/pant-walk-left/05.png new file mode 100644 index 0000000000000000000000000000000000000000..f88b462e1ba41c83e75af72b1268754618e9ab6a GIT binary patch literal 1628 zcmdUvYe-XJ7{{M?XL>eG&&Ws#=`13<5NSadNZK?lwToIoQrTwF1(O^U-ljWmcZxn3 zbg>Jz$aR6Tbx|u(PnQo;iL@e3QAb6#=9=i#c67(yGwE9pC4K1q^zy#{=l?wC@cX~V z)7GvG37QfF03pdq3F`n5CVO5HD4l$HunQn?dU8VChJs73j=MJ}qe+L;jq}5v%z1VD z>GP<$d}C|i$(;CG&yuVsb}_~yS!Mh5A8LAQ4SF2Z77wPlX*10vN%V$O3 zfh?IC_*qB=`qQ9*m=ush#0-$Z$%%kqg%Sf?m1_Z~|5i4wh3dh%sn}cwWs+kIB1L)` zDd**qky5e@lgy)}HmjwEzZIsvK-Hg>ibw@smuJ!4ehhDF^-lWc14+ zRL)VEdb-Gg+4u>U4 z9Cp#O>IR0Q!B8qfJCj!AbnC#b_MvLl?0MJK0DPQ4hynw@+(i?G7VK9BDWXtAZ`!b=P(i_s z@z}gdVevp+u~588@V4iNXp409Vyx@q_1xuA_s2DW~P$;(d>$=&;B$NdvDgAbDfRz01a4GfWIw|qvzp$V3p#G7LW^M+k-kNYM zw-{mbAoa;xs|0x!t8VUE18Raup}1EDaW1;CKR*l<*&1zm!$r^%i26o4 diff --git a/docs/assets/ghost/pant-walk-left/06.png b/docs/assets/ghost/pant-walk-left/06.png new file mode 100644 index 0000000000000000000000000000000000000000..294e20485d6595c22877857a958e8cc9260328a0 GIT binary patch literal 1599 zcmchXZ)_8F7{|ZAyW6e>mKLgxn1w4ZfW9E38l%Ptcjy=lmW>$_GhpkP7zB!LaYiSk zcR&1#hVX&_n}I+H#w=>*j4jiRu9x^mV$=rBw%oF=zA#R^bBb99E7$V7ExscmB#z&! z%kTF*-{u?AvgaJ2#W@mw@u}x|+?qI?q|-U&bC1 zA9$zf@aku`?b_V%U_+~~+F1Tb#gni4jy+Yi`kN0YHct6#pYJ&F*gu8DXUWiwOp<3R zcRJaw!|!Uv{$#3j^NHOBoBvi&K$|!}i~#XMJp~tn+aX}(8gMwi0tB^g3S7Et*!FAu z6m4sy*&qoLrl@i($q<}$w51_@%oz_2bd}qQ@hr|>&4*Hgi?(D=7t~`)s48f6jM?M^5kHfeRC-UQ_9ZpzhvhAt%NHs z8#%EjIrIAlc=zjc#Iy5A?xzs^=_0<6qWR$qDJW5!w91MVlXXIs0)IuL<{rJs;b>m$ zw2|m9-YNrUdH$YT)B=BqH-5Fd{xtt{+fH9uXs0SVHgAWBlM8+gGO*ClB8LQHHW?bS zdwwM2T8T5_GrS*T(;;+U)*z?_dntY%_D~#3=|nZ>h?iQk8&JPT2G?g7%jkiesNnKM z3c;6cxQu+E5}(8*kkS81EO3zhz}7asHe4#^cJS#;D3sb7)=S6363q+I!8~CF6CULV zmu@LgX4Vv=8_8sE#9-bmK7Agqjcm%YzVc*$BL>1!J5hHR5MPJ!gy(AnV-c7>`j;v0 zMfdO~SZ?JFi?2rg;>hp2dX3K%i_uSQa&`?{lDMpX_2T>t9y(L+%q#ujB-;&B>T7;< zeoP diff --git a/docs/assets/ghost/pant-walk-left/07.png b/docs/assets/ghost/pant-walk-left/07.png new file mode 100644 index 0000000000000000000000000000000000000000..0006379b438b27de71fdbfc5301a193ed99bf789 GIT binary patch literal 1553 zcmeAS@N?(olHy`uVBq!ia0y~yU~B-g4{)%7L|$x3XJBBx;pyTSQZeW4)s1UI0tJ`@ zsuZ0)LLB`>RrYgoEo4;MwSZ4aWmQB~g|Niw=N^6EU#&e>_ni-@ofPoE{=3z$&*j$k zb^q*C|Ndt_%+tWg;3mny%+O=Rz{Vhv%D}^5aEd{KAz=!m0mA_e<^+a@K(+%642y|S zI3b%+`@>ra1&uU@BOtvBY#^fzK?Zg(0*!It0ojrSGFyNdWTFJfLL!td71>~Nyx~A2 zF3qmt>e3*x4LrB{MuYz~E8L!yqHUklDxBz|5?0){vnffnkXy8v`FtgUN9Q zQZ-#-ukhW~a4GWtKcESh*l)x+yj)XX547$jbB_Lkl56|-Gd47TVcaGjVDUg{ z|G*H~BHjQ@T5Jq*S^5mX{(toP z_V??(*X`#Ie9Qjk@4fm&h8frD4%~bHSDdXObKry?Jb1kPy#7gWF?We|$Gk89`FXs> zA5>lXZ*QOz+wj`+|NjFUN*LFvgUUggDJc2Pe)5Mp*T2~pm>7V-)78&qol`;+01 diff --git a/docs/assets/ghost/pant-walk-left/clip.gif b/docs/assets/ghost/pant-walk-left/clip.gif new file mode 100644 index 0000000000000000000000000000000000000000..ae4ef236a672bfa8ea9c5cb84d95b39bd2b6edb5 GIT binary patch literal 53715 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 literal 0 HcmV?d00001 diff --git a/docs/assets/ghost/pant-walk-left/clip.webm b/docs/assets/ghost/pant-walk-left/clip.webm new file mode 100644 index 0000000000000000000000000000000000000000..4492f46658b239b8a582c9ee0424fb7456ef4fbe GIT binary patch literal 8465 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 literal 0 HcmV?d00001 diff --git a/docs/assets/robot/pant-walk-left/00.png b/docs/assets/robot/pant-walk-left/00.png new file mode 100644 index 0000000000000000000000000000000000000000..9cd3518423e17e9c65d3b352b2d6faf5c4918be6 GIT binary patch literal 2872 zcmds2eN0nV6hHU1NDFbTA6eb9*}7~%vOzI3pqrs@jw$$2h}#m!a28nnC_|jOpdfu$ z=3>-+uxWrQjApFCIJWWa$EL5FBWgg&iX%!VWf7GQOO@7Ec)a&^ALzgPV^d~!|2X&e z-aYT!^SkeN&fSx4TrxG{$p`?LnwpZl5`ZEQfno}o+Db311Beh)lV5pbTcx*q?h(zp zS#4Q~rkt$kk`EN!2@Q>#l;zLI&9VQM_j;!DQrH*H?#1U`+NEA(J~w4$ZN<&3cdVz| zx6ht`XRPYB#qIk^MuPtB=sUEXyFQc>$NTa_{xtTf{dUFx(Mr6L0^0!?hyqyp5FT{> zcgKcjd9UAD?_pS6F>1CWcO;Ke#s?ny zv{`>j{3E{Ug1u9#izx={TN^$8aK%zBy|(P_(J@rw3@^1_D@$UqEr8x#dwi1Jc6!h) zH_KQrJB#_@ta%9SQ$ka(5@MpDqc9q56%apI1vr~>)D=*$_W>`qIW>0!U>)k(=j$++ z3mkV>xU!z2rpReQov}NTR`CIm$PNi%dRX^m@!&*6fqr^jzjuR{k71N+D3Qp)@P!K57VyHg| z1E-*l<0A1B$YFluKFTP9g*$@Vnq60uPI!DrB|bzh_fnPwbdL&A&3%eQNB61!SFT=k zYhYympDXmX+R*o39TJ29mzD(hfas;)+=pbk$H0H06xYQR=g!Bet z6!_!}au`NpXt-G=<$q8*6O&I)cy$q@h6fkAC!mTc#=p-F)z}%<+v`d!sL5l5trI0b zz2W3CsZFO%v;+M#*AG&U|6eVe8a!H?_3~wVr{Qo}5_HrRc>Jm(b``uhxO#N#L$gQb z=qM~t5^Wiy5Z}~0xo)`4!h1tGjUE)d)4u!H*-1qUd%W)(dIBS7Zj{%2QqA}an?3$o zw|JE+s97P3M$zJAL{e1aMF0`wDw9Kc%0#)~MMP3WY%r5t%o4JdO3I=EK9WzAV9c{H zj_5h)ABQ;b81|rz3045J5^}$sl<8#gmV)JF0^cRu#<7NPc|Kp{=>~83DlY6mw;&u9 zEw)QRSshO;&1FOvV@Q9GL){i+Z(&6*tBq;pA(zF@9=8~Dt7f_^xMdB!!Ruo`o+9J9kv?CNPW$i{M{l`$zM13mNftX literal 0 HcmV?d00001 diff --git a/docs/assets/robot/pant-walk-left/00.svg b/docs/assets/robot/pant-walk-left/00.svg new file mode 100644 index 00000000..cfb0baeb --- /dev/null +++ b/docs/assets/robot/pant-walk-left/00.svg @@ -0,0 +1 @@ + diff --git a/docs/assets/robot/pant-walk-left/01.png b/docs/assets/robot/pant-walk-left/01.png new file mode 100644 index 0000000000000000000000000000000000000000..c5b0397547aa75c7ee150d0343477db4886fb8a8 GIT binary patch literal 2721 zcmdT`|4$QV7=P|sEv1+?k_KaP6)E%a8p|AIiQ@}ad&&)y8Qt&e#!2K&->)P z_kEuCx%czA=lLu>HDN~R%b@@;BPnt9Isg)x1cXdS!_~vr^8iA(Caqq%q2!qV*M&dV zxru!_ONVQ_FuL`)t?6{yfk<8nDRH(kzix!2%tCF%f_<5CESj0m5efr->!wz5;4_YB4uP zSl5Yg^R9w9$rH`pDmp2k*yPZ{5wEH(UJvu!+CqCgB%jd_@w=dMgNX@Dg7I`Y?R%1q z&iL|2eylZ$X``er*iM43=TPR`pqw~B+%d8>I5CZhdXFWs) z0uFi9=VUOlck<9aHxy}ZP zGL_4NzbKVaIuPgPXEaHo8bZ{xH1o}d3|UgbUZt5*SHFW6lCX+A?%LaR#_ci@@CtFm z@_nw`>u~^m81BX8IJX7ZG%zQ^c*VJ_7M_a*Lk#e1`x>)FAslowpT7Gd4$#Lm$==UT z*e6G~U+AG++bMaO0Uw%~P*?{%7GR9TIT89MxCk&NL%s=GMR6L0g~NcB-cC^jTzN4| zH)`q3g7@`)ad__Fh|AOJa^V}d3dA`-8;3d2R}T4tpuwzY)x&@!VJgsm74ssOHmR7q z7W=}>J*s;h6$L#tlHhYuEAU4|B+&q203|H1!EC@L4Rn1ty7u|l)WO3dOrL4kB%wAH z^8}k_V0tj$UczPwlq|!<3Yr9@#Ucj1i)IM}42?XiAT|z8DSmfX-|Q*7R94+Av1c<) zLnQ1-#(@hxYE&~S5E$UW+xQ%d5GWaYEXsA$JW$fm#v-6Q5a@ubK~PwQ6B}v|M~N;# zV1`>Z1k4r$A+(T+{I)%P=k=!JJXtE2yp=7o-1uyUKvuEN;@;};qt8YYmqw~JkD`@N75p;DObSqpum&t>o-(jGceQ%mjKU5oxLBGvwtiwbaOyH#zC?aXrX8=O6=~vtJsubvCcVu)FoH(yXX$Drc=>7%9++Xw1rvr-KBK4 zB;|R>hy@LCMs0eBM^3iKGg|`F{v@_d3XapyF35nSN|^Os?+2Uj*Z@6AYf@J?ud?p> E8+a}{djJ3c literal 0 HcmV?d00001 diff --git a/docs/assets/robot/pant-walk-left/01.svg b/docs/assets/robot/pant-walk-left/01.svg new file mode 100644 index 00000000..09e7eca0 --- /dev/null +++ b/docs/assets/robot/pant-walk-left/01.svg @@ -0,0 +1 @@ + diff --git a/docs/assets/robot/pant-walk-left/02.png b/docs/assets/robot/pant-walk-left/02.png new file mode 100644 index 0000000000000000000000000000000000000000..4e8327caeeee7bfea5a4b91abab76caaa59616dc GIT binary patch literal 2932 zcmdT`|8Emz7=P~C(w0K5Ziz#K+c3Dr1nm?fn8B{V6bRT6zI1$Vfj9^m1C(rY*xsQ8 zVn|?O0wV*9nW4~btT-K0V0Xc7N`hg zJFd@Ve?IHbTY}cc4XfX~ZY|zC=2-cHEH;&b%mZI@qm{29s`w(a6S zj0RIvw{lcdilBgIZH%H+e$B`NKQpL$p>8~YyB2_+hBh8y1{m`|j_7>OJJ_@AJCVOt zf#cC}7<*0+>50f$h2s2dV0c2;u?{fjBjEA-Z0M)Z#(?kpgY9U&N!-Fqe z-k0!qa=Vk^{pd3kfxdgQi{l(lRl-na6Z(S%kK8mANtb+FNBIZBJ>B-W?$?g*!?y@) zfXJQL=k$^GqeXN_<1&u|UyAU0OT}XgGCBxal~ZI{Wy~wx+u2|?wbemEVD&n6A-24 zPFUDhhS9j-mhe!5w`m0EZijM7vS^fOwZW4NZOsOr60Z+AY=`&sdOqtP;#`bcldfE` zJ`1=VX}kI@?Wofb16w|#%wkRPxe&dnal@iPJ)AzMaZH0W(EBqHnI>q^3Ip$JtTAX1 zhm{VEeHyd_`y4DUj-ZBBBN$$V=xVg9iQbxz%AJx2dK%iQ zv^v&2mF`MW7a(ezx!xC=lvJcgO4jqcE2Y7b`?8($WB&>d*40U(K7-V4d*)P?U|3G7 zThc0Jif{LZvo^`Ym+p%>*PSzi}WzsmDY)TMK`i@}3_)8+>p4l+1~qh!7zW zM@nBHNWm&miQm#qsgy9M%PnwJz)J}Z&Lw|D|58D+aZ95jm4x}`-k22h5d+-`Bf3Mw zPi1kNUdfu*_j!pj)OuQ!bsZVdB;v^TU9i N*>5|Fk56}h{12cnt1 diff --git a/docs/assets/robot/pant-walk-left/03.png b/docs/assets/robot/pant-walk-left/03.png new file mode 100644 index 0000000000000000000000000000000000000000..bf237e5cc05e3a38732fbf405d354a61f041a771 GIT binary patch literal 2845 zcmdT`|4&<06hH5^wFNTU0E#h&7Uj!+C|@Q9akKP+EI=x?S;#CnrEG-FiGs{!PK5V@ zE{Ji4xJjAJl!O(gGKDb)W70M%8KxitvjI9NnM|xpTUZOv@_4VlSN0F68|eGxe%?Lj z-gEA~pU=IgL8H#u7W!x?0Bp<4&E5lmvJe5$18g(Y_|rjv(1pD0%!0Six@Gu9}-C?oD3;931DT*nDPeRVAmk&Njz1Q=nc8vFx z>DrNXvR3*m5Lr00GWPmKpO*(hK0stRfF>6Ji$MTR{H+enkAifsb<8{$uTm<($hUk1 zpo>FNo&eD1!H5W8Z#bl)Kzw?yO!HGNtJQw!*f%-VmB^kFjy=27DI+ zmANodjx#PkSYnWr9@ZQIP|vrFtS&m#0GsV7@!h;;c%#gA#pmbojbd4pisxh7)hEc zk)|R*5({_gy9y6G9R?s|NTc%o(LJgF!v}r{u^v<2RJ2AWfGigl#3en~C(KF&GEo^W zYB4r3bO?yT!T;Qpyw~S>0kFpV6JjPBCV5Na-h?*AApX#-&wqiUI(S)Jyx&dGNl{_2 zJst*<;Wopd@L>qy4zmoH%|Pr&TPd{5?Ma5#=B;scAxlfszmCt{aJRK&n2+K(M*@r# z=w=e-IEX@00!Kg& zVqm$&G4p-|=~KW2vdkXFAG7XPa`X(@p*L9sAdlxVn%af1sW)>u=sfH{aR6mkNw6YC z;o}fsjjL*Qed$~2oR4Ep-omJ>_L9$QcMn!mC6`<{zH>v44O4T*rKSu|8KZFjYd8@^LbJYliBM-bY+7o1FlJ| zf#yQb#GRR1xZ+g4xQn~?SMLfxr-h;IdVSl;05f}g zydB5aXeIuxa>f_%_{dWX&0}AMpboajLJ+YfLr^gg8e|@yt0RKiBC=3Udk9xt1W{|_ zhHBUX;~!6<*$M5!{^?Q_&c{LL@l9z~+^%|isdLc~ZLtUFS6v>Q^74i*OLeX&O%X*o zn02h%CDc-a(>8|bQz|v(6k@AIjJ@W7YfKzzuO)hmvH$ik$te>y;bpEmlvrX^Bk5RY zki%DqZv(%PVvSX>KtFB9iJ~N#$Lyzh*Q=1@fl-gNwJB_vs;CV>?>=k}_fo?1x6nIG e%fFeTz9E1-wR=es(%G*7_RHI?&i*<}SN9jCV{dl= literal 0 HcmV?d00001 diff --git a/docs/assets/robot/pant-walk-left/03.svg b/docs/assets/robot/pant-walk-left/03.svg new file mode 100644 index 00000000..c234816d --- /dev/null +++ b/docs/assets/robot/pant-walk-left/03.svg @@ -0,0 +1 @@ + diff --git a/docs/assets/robot/pant-walk-left/04.png b/docs/assets/robot/pant-walk-left/04.png new file mode 100644 index 0000000000000000000000000000000000000000..50f2dd5510e4ebd396bdc56c739d174d9d9f595a GIT binary patch literal 2869 zcmds3ZBHCk6h3zt%JSx}-NbE;VYk+nszj*z0SfF+D+)AaA(a?OXm@Go8Wd8Bq0j(3 z6D4R9V@Ya+S`bWaP$@4B2(1)$Y=fep)FK7C!qQS`dFw(K7@1*qoV)!6DnjafxzD}# zoO9>NJ?FXSM3ON!(C8KvXB2*hLq5k)Ys{DgTRBJ@pzWnEgd)px38M0VwI4&{2LFHX|ME zUGz>}&7h_H?N(bs`Ow6a%SX}gQ+hhLwpXi5)>4)mb$XgfDuUA~t^5kwvxw3y!)s>r zSVa&>%bcNS=DNstD`VBF?48Km5{cj{$qd~mAwUh5HZ_FpgYsD;uwkpanSFsL4AGR4 z>(khFo;e_L+!*HwN}yPTu4%7W`loCL1X~^v{Ds|XbOBcGxe`BKniLwYSGuisw>y_o zfWnuV^=DgbHek{Svp_V?Izz!+4uc(#DG2_sX*;xpf^1Ac$@-YK1cBDNH2>R(exxQ+ z6k9~m8(+O$!(`DkP6l?#+iZ83a0WCMp}{3igL5L&1nX&<84Y@V<X5c*m}35%YdTrO<-2mf z;~l1k4tBr`>bK*QFXj<4kv`8qa7N7IGfZxD#8-Yr64fB@{t<~}78x>9Fa^OfiKqn3 zEZa%S9BO1c9o(>6@ND=EPdB!xKr=H+_@?nw5ErkcMI^?Mo+*V)&VQ~*@ zO71nVBZ7d9;6eW+L@rbWjaq`$z=j}m_nHjn^Bjd7Zk-a9qjpLBc9Ek6r%%bSm8mmP z|D##g@0z%1CoPCxJvr#O)a}%oKlSetOjZe+QmGN?f#6dk literal 0 HcmV?d00001 diff --git a/docs/assets/robot/pant-walk-left/04.svg b/docs/assets/robot/pant-walk-left/04.svg new file mode 100644 index 00000000..69ec5a1b --- /dev/null +++ b/docs/assets/robot/pant-walk-left/04.svg @@ -0,0 +1 @@ + diff --git a/docs/assets/robot/pant-walk-left/05.png b/docs/assets/robot/pant-walk-left/05.png new file mode 100644 index 0000000000000000000000000000000000000000..adb957d33bf5501caec11924c91436eb14ea4523 GIT binary patch literal 2682 zcmc&$i%(Nm82@ft9;IqKNQT*htqX&YFp9dEMXg=q{j{roN5)c`VhrSDg2LPhBWoK^tq@s4_?+t@-4x*}X zv#aW6T*lXNJMO)I_2;?hKlRjo-%I(YDO$C~)c4!9lOm~>vGkmshoOJ+o(YU&3UFE zTxDQm=aFR-iqOds6?oM%TBT-=Mz*e1W)9JornB%BBp_#}?RDaRz9!pjZ!GTrdn)#lToB zI!svzxFxYIgc-)Xda$JuZ6;!LfsKXKJu4#G=7)->p2s8O8cjnQ#~x-mnQ-4-Y8W%~ zf(M`(nXSu72|i(9MQt;*T5yEXUMOBc(a{rdlIc5OPrHFM{PSboc8UseQz1`fwtohZ zK&ZeqDbZRYWdfBzdY#}T0!4tX#Q?WHS)dA-D-%2^OrRpTtb_UQ+61Zvn_Y0XHw79A z6x5{SuRin8=nu;$`La+DQ<>AfO==etz;~jE z2JYQ2=`T#gKSLx=LO8C~Z}fOQGOIZ_DS=9Soo7c)pXzOXAHD)1Gwi-S+rx-j>MdIc zSWgV=-zj%GVoSM2`-@}|-Ojf3qN(LpZEd&9hXN*94dD&#vqg zdYg4qLEi`WCy51CO|F~iYpUM$4g0*}H@llO2R%i1hAcj&=-Loz;_-WTM91@&&7_}} z{XUH2DR&4`x9fp zmP{D>mt|*Gw-2W>*b}No6sL9*UWG7`-qe#d1~z5ey^p$ ztg-F$6aR@01-PMmLlM?yjV)jM9>v!%0jPFFT#_|Drpb> diff --git a/docs/assets/robot/pant-walk-left/06.png b/docs/assets/robot/pant-walk-left/06.png new file mode 100644 index 0000000000000000000000000000000000000000..334599f313bbb14c3caf6aca488c36f233895512 GIT binary patch literal 2998 zcmd5;`%@EF6h6Bw5)3vGI>vUUB(^Hk=>x=8sfdY|R;U=Nwy5=yXdQf^q+%o( zb=nb}c1CMO?2~Gchge{WB&*cccA)4;B$|?7J0m6#B0^ZRo89f*@E6pv>i%-i-aYs1 zIro0wx!-}e^$RDAe|kIsOvubgUkZRD69d^eG+ZqIb0dJQkkWq0s^e)A9a7+nsI2Q2UQh??!KnV#1(BBgjq)Y)oWfF8W2BzmR z4d`V+ExPXzDlT+Yo7SGUBM^)z^+sH3|JmNBP@Ym~X7=Y)YIQ%(quQ%inFaWoh2)0q z56vk`ub@PpG2|9_1in9eVVu%512ZnW%Y$zyVqR_R5{#MtZUd3@MnWA14j1Ot^A2)5EN9zYMYIepg@mC8l8TFbpCZ_%rVNT zBt+yH;8D8frGZNvX!BI8)u~&#O&eB ztUzVmc?DSn-5Q4qJU$%=3YrUX9ne>ir36MVZNgEh{9YGY1lh<>2Y;nvsOrtgl2OG8 zK)~F^4?K94_5=&TTSJ4J0>jQ8ZqTVdSitpF>cb>H{7Fv>i`Qty55vT?r4P95Dia^9 z8sqY`^-PVG>hIK6gz29+v86B&xtbI_W0XGNXtgBvvcuV9U0~5KgKNxKcO^L|%xuH6 z1%9u*SqNPnYX-6P#mfzJ;9>u|+2K)KZXdXA?^9=46fo1d#w?sa%R*8^&!e5fRGiZ- z22-wkuu;E(oO7dCO`6W;$NLW!u)#8eHRZ-oAIaOV=(XYqFNXeM7N+uI8qasxNYu3u zl5~=s7^BqWsSvi1qzKar#)XkdNID}-Eowe4@eq^5N7yo!-+zcx5xpZYJM~KdbeFF> z{!j)p<5QGg4a(Xjnn3hsJ807t+!q(@G{Fu5s972Icj4da;g8-{Q6}!8_T(c5M9TDC9%Ay zcK4?hEN^#v?~7z-_bA{dSV1Rw5qP3Y;7u_VKZryG5*FgJ;W`Z0{04Pv#r?^qK|6 GkNySu$JmMh literal 0 HcmV?d00001 diff --git a/docs/assets/robot/pant-walk-left/06.svg b/docs/assets/robot/pant-walk-left/06.svg new file mode 100644 index 00000000..c5bb9042 --- /dev/null +++ b/docs/assets/robot/pant-walk-left/06.svg @@ -0,0 +1 @@ + diff --git a/docs/assets/robot/pant-walk-left/07.png b/docs/assets/robot/pant-walk-left/07.png new file mode 100644 index 0000000000000000000000000000000000000000..ce0fa36ba4aeb0a34a4daac2bd506a0824cbf2d6 GIT binary patch literal 2814 zcmdT`|4$QV7=P|)*B0X12^nll*5VjoA~3Q9*c5soMi^2WqZ3e}vaN20FGEo_5bl*| zHkWNS#_&Znkg&p*umz{UGx!_Nl+{D;z0lXrb^!ETBDY4@Ix zQ+IX@UcaUh%`4iA3f{S+NG%O{vuk6uc|v^FYzaSGD&6oLN;omTvG}@y{XXY-``n4$ z-XD(iRhrZuKCp>foGSX(dH`+OV;LTrisVwTA^?=a zm+mhEhztX0Haw0&_w`iU!S1oVfe`!1e0htJqL${Uh2h^E-9MT~<%*X;-=+2*!@+8R z`bo|+B?Gh-*XbE&Nd&;tGSpxnHC+Tq2wPo8)dO3Wn!4G3#O9Pp-%t|z+P!WMR%4bJ z8fI&gNYw1Y-qv3=jw)4=RnU-Ayt-~WT?KfUQA*!cMkSFUnZ#fLKGafeQ}?pq*g?1a|bqz*@RmUIe;nOZ$uquUPrsZ4_DIE8G*h2}B4K z@cwJUQHuqLLv)0|0Ra*)I4h9jSpiDny9)wqd=P`WK%P$7ycJV{^{~LR00D|%pGF{{ z01=>JftgPtNpU57;rBa#7`J-+k3X~DO*Q4Y@nGnv7wXnIgxqi8e9@>skbkAmWq_$* zNyC?$5Dp>)6Px*a>smU;v6xYA*wfuRW*#l+rSCuL9qaP4wiPkITu@mzfPN*(*H<)r zdSb>HV|7tY8lQCYH*}TT0uordZAGzlAKUl4an1j4d&h)J@~-|^k84?S%Pc_+kD{x% zI|*AF(P+NuH@Uv$mSEVSOysWZ}4OwOU)q zV3umk*lF_GN993N)u=O{c+c)28K>V+mr`dB*5)z{#d(NJc1boPKKGyA2C=q)utbN6 zVg1GrV;_1)9Lna}fE!FnwHG?~5i_Kdk$gFeFLI5PnurQE(3FS64qZik-utv%J1oA( m#+yi#8?ADfmj6kJ`ak89tq&7Fdv&rD_$z&zCiR;XUCm$3?suO6 literal 0 HcmV?d00001 diff --git a/docs/assets/robot/pant-walk-left/07.svg b/docs/assets/robot/pant-walk-left/07.svg new file mode 100644 index 00000000..786be96a --- /dev/null +++ b/docs/assets/robot/pant-walk-left/07.svg @@ -0,0 +1 @@ + diff --git a/docs/assets/robot/pant-walk-left/clip.gif b/docs/assets/robot/pant-walk-left/clip.gif new file mode 100644 index 0000000000000000000000000000000000000000..0dcaddd9430bd09cf3b21a78c0f7d642fcf10bb0 GIT binary patch literal 119543 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 literal 0 HcmV?d00001 diff --git a/docs/assets/robot/pant-walk-left/clip.mp4 b/docs/assets/robot/pant-walk-left/clip.mp4 new file mode 100644 index 0000000000000000000000000000000000000000..84adb5f4b526c9cedda58272549ba538ea0c21ed GIT binary patch literal 11112 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 E0RK)>6#xJL literal 0 HcmV?d00001 diff --git a/docs/assets/robot/pant-walk-left/clip.webm b/docs/assets/robot/pant-walk-left/clip.webm new file mode 100644 index 0000000000000000000000000000000000000000..7753f4b58d749b32f9739dd986943f6f8c71ee40 GIT binary patch literal 10905 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 Ok5GU5;|jV#{Qm)CtzCuy literal 0 HcmV?d00001 diff --git a/docs/assets/robot/pant-walk-left/sheet.png b/docs/assets/robot/pant-walk-left/sheet.png new file mode 100644 index 0000000000000000000000000000000000000000..dd72ff4d16fcc5a2fd3271e0121841d9a1d5b33d GIT binary patch literal 22735 zcmeHPe^e89w*Q74NGnTY_w|$>sm8L~c57X6Z7Wt6CaqX)U5k}c+*SxafAsbE15R7T zM#GG?r(k`S+E&q`M%O9=N~o@iB22cvRV$XDf`LVu_$)>fFlZP;CNuMWcP0o}h5Fv> z{`h0goI_@Y@7#O8pZn`O_kNSr(_ft&F=)sjgiyrGQxaw%G#E}*=)N%ccxKT4MF`E@ z@N&WnuP@u&df|7co;&mK-gy(!|2_SQ55LL%X7x*9hwhL3>l2R**)$|~^`>pxi&jTA zJ(ipMO@nIAsyUH0DN{SE=l)*%pXHr6^1$)04t(M<1nfZ9p%DwPiw>Na>SDBrzlb|& z%;06K1vP3|rspBm9lxZ<~pp;TNmqqfG`oml}bJlpl;EK-FKzlDGc{wwtg}YT&QoJqlQ@_i0i4axM~eE+e(bH_OblNpu|M zOd%AZ_AC)D+7~>~uA=Chq6%dv;t=aFk4NR$>h@L$KnL;vR!YN%Sfhi#+25<;LF8rv zSv}VbsNu2@hc3Kl%07hQpA`8m8;OvW@vGsl<$0?HiKhY@)Dawb1>R7276y5C5zLc#baMibUn#@pK!tVz3dgi;|sYoO$e!~ibu>ih`!7-IK!hmZ9}p3f~k_QVA1`k zRsF0>m?(JccrPbRl>DIvs~o=5xKkSgBiA0GEj}m9kXr<`{_AFa9nOxTVwbE0Pjy7; zAfkFU;X^*{mA9z^msr(owv%`XWDNa|W&(x^Off^$fm65eI+ShWGjRL2{4Z*E2LeVi z4GZ>00wuU25(Lj7)v~0>WhN7yA=j6VA8&NLGJM;A&DsF9|ttYj;Z z@b%P65p6LF58h4}ML2Pj6GK>SEp}>U4*J40GB|v@QT0oCxc-<1HR;eeYtEevwe?s#rU` zUv>&i3QUSM{d`V$%oReW>eIXg*5J~U3tdhR$z|X*g$;UrVKb3CB{Bv%N{`TP|BkJ6 z!l^o&*{>VV(S}u%is4+$`Be1S)7On)y@mKvsSyv4PE89K$ccs5Jw|c2GiKcw*8BEt zqaK^9u8sLNI@#s4g`w-kK5g{bmIIiLecvUPI`fR;FP};x$SdU4t2jI2;i4G?$=$}U z!X>QAegA_tQi#~nzf_+^=;`~`yk2A`qELB>G>v?_XlH7R0u@^cmw)Qle-QXhc>4|< zcy8v`uL%6L+xXp^R4)%6iVfUq#*9)D?v& z3Q;^{px~f*$lujNQWBs}6zq8P>9F()1oxZJ(Hk06-fF}!VqJBSnRW}>{8SINvl%Aw zi?)Elqw65v@4%g0Oq0)mkB#b~QReP>h!C_}+yXu#?zNHoOxP`~lF}NJhUW!DHwnw> zvQz~37op}ZHJY`wQW|lxrOw8%Vor6b54*WT@%Xz=0VXVEw4UkY_t0oq((@1`)*4nM zQ}KBx(O899@dZ3_GS0AI;J^~U*sp3Bh2Z{JlmQJj2{#z=!@H2XjriES{vj!w+C!uD zNY6uwc%svY=~B||H7{ha5pR<+;~_f<95@}UG!{lu3mFp1&rk`GaD!a;?(?iSs}f(@ z*FPk%NV`R2Y41aYc>8;m*kGqwf1+d)WG${egPYtma1gY|7NUdUdeC@;H3}N3fE$b$ ze0VeGhdE|8_76$x*&Z4dy$_wkwTJt+DOg80g${4>F=39i&@~0z!0K{my(;jj9#S%w z{vcU;t=BGlAA&W+tp06kbQIMV@>yFTL*0HHTBLv*SY5)X!fdhBM@Z(R+tQ-JFJWi66$Q`}5(GsVq*W;bi#!W;&iC4OJXKZ(06=Z=cma!@W? zP>Jmty&OK5?)70gquriY`UK)PJ(%?x1{mBYky%Sw(LkUL!9-}pQ2UWHLf`P$CtgT{ z@%jM<_r_b)D#@WvA3%=2*+UUp(DseY3es3H4_KNhjtGV9f9;TWJ{GazKa978zD^@j z5LiqOjY16vnz38GOfmHgEPh$g^fa6A9 zK9Bc*axB&@(AnbC^7{h>X^Yb`{t6a{Z3LTmsDq@#+@xTEbAGc_nQB4}@?o_|P^rrP zS8SpG*zhC;hcdm7g3gL)+7blEjw+YBEqLJQ@?VLu-r1vE4GLIrC{n_}ZgC8ajEzvNRtO>3^ef<5%s zP&g;vmMVK=QSfMAAR&TA{v;w_Nfks19Q?fq{n7G;kUVXq{8lAth2@h^@C>8&!du{n zw}!&GdB5svbA*+xClx<5dSwoM2F(+pVD%e95^Gag!Rttnz`f7Xcz#>L(E~oV#VHbfeU?&Xx$> z2cjiJG}fO)#B%MH#W1bVsimqVdhnlF=y+rIDW~>CS*;u2bgdagN~y15IsJ| z$R(QTHWE^Tglp_IDPehDlJdbTas-QojBqRkp7PUP(ur%NY<5wuEUpxVCe%Yloq#i^8)|| zQub*%={R7M0kpLw1xVA9u^dm{VEgWl@ zqeer6S6fG~i*IOjR+2BnB-o(?HBJuE zc=2Y**-!C|n0_%(^VaGQ%d^ z#Kas*f_9KJSlS8jz`BZ}z@aK}fz*2E>W9Ls6k=E-j= za(XzpN7`mql6! zWai@(3DLas)8)P0->z>z>nqboyt6m z&0xyD${SAAIX$pQxXkNdA7Z!M^H^_iDjVO3LBXk1rU3S?_i zRG@f)5{UlZUf?LhBH3jSZ+vbKZDm7UG*q$*559+==Hs-}{k#tAMP^wp@pX^A~Mb$@KMNehYkTh@eKE2tzYrOm|B`p`+lV z*v~(~FS_vG4(y0(T=d)AKQ(rF=gl4Wd1S?wRSo4)ngb7KR!vG)@3}O+#3g27kH`pw z)turZP2w|6JMhY6jv1LJYUcaZ){%JxqLP=~YBZrPuSRGB+n4XeJJ@yv3qxXc1we0Wv+=lwD-YWBDs7t#!0P5bbtt>yavQuP<>? z9Co`kAEz?b^WnP>ZpAFCu2_N6H=NKYtP}thvrzm>i55z@y{9B{vMzK+9)HNI*Y zA8gx3{y=XgtRq8zjazut2v#g2-@HjC5jv zfkK5}NfhQkHQXQL)J`w*B?{+0#|4}prCc+=A*d4K;P=={;1?Q!!pxmASN+arf=!$% zX1JW{S;-7OpX9V))o-rqBnqRas=gziC#hE|Ntby8&(zs8P#XEOOFP_EBvHUElH4PL zT>Hvh%!!A#j)%gD{snweqVUH-Q^ab&`gNC(g#Y{l-jyA1P38)dN%UIc7KuWPB=;NF zWUjZ#UGJmWI=`DlgSg2Oh0`lm49 zU%88`@ZQ2216EJ3C1jOs2>JZSDp@bSQ?Jw4CCL=3CApJ>TyK+`6*2%vPDgzhRO6(`V&9^6bzEwd(O&SZ { expect(petPose(p, 1000 + 3001)).toBe('idle') }) -test('the ghost follows the user-pet rules: the spec animations plus the dances, a hand-drawn left walk, headphones and lie-down', () => { +test('the ghost follows the user-pet rules: the spec animations plus the dances, hand-drawn left walks, headphones and lie-down', () => { const s = BUILTIN_SHEETS.ghost! expect([s.w, s.h]).toEqual([24, 12]) - expect(Object.keys(s.animations).filter(n => !IDLE_VARIANTS.includes(n)).sort()).toEqual([...PET_ANIMS.filter(n => !IDLE_VARIANTS.includes(n)), 'dance', 'work-dance', 'walk-left'].sort()) + expect(Object.keys(s.animations).filter(n => !IDLE_VARIANTS.includes(n)).sort()).toEqual([...PET_ANIMS.filter(n => !IDLE_VARIANTS.includes(n)), 'dance', 'work-dance', 'walk-left', 'pant-walk-left'].sort()) expect(Object.keys(s.outfits ?? {})).toEqual(['headphones', 'bow', 'witch', 'crown']) expect(Object.keys(s.transitions ?? {})).toEqual(['lie-down']) for (const f of s.animations.walk!.frames) expect(f.dx).toBe(1) for (const f of s.animations['walk-left']!.frames) expect(f.dx).toBe(-1) + for (const f of s.animations['pant-walk-left']!.frames) expect(f.dx).toBe(-1) expect(isClawd('ghost')).toBe(false) expect(petPalette(s, 'ghost', { body: '#000001' })).toEqual(s.palette) expect(stripRows(s, [])).toBe(6) @@ -338,14 +339,15 @@ test('the built-in sheets are clawd, the robot and the ghost, all playable', () for (const s of Object.values(BUILTIN_SHEETS)) expect(() => validateSheet(s)).not.toThrow() }) -test('the robot follows the user-pet rules: the spec animations plus the dances, a hand-drawn left walk, headphones and the level outfits', () => { +test('the robot follows the user-pet rules: the spec animations plus the dances, hand-drawn left walks, headphones and the level outfits', () => { const s = BUILTIN_SHEETS.robot! expect([s.w, s.h]).toEqual([32, 16]) - expect(Object.keys(s.animations).filter(n => !IDLE_VARIANTS.includes(n)).sort()).toEqual([...PET_ANIMS.filter(n => !IDLE_VARIANTS.includes(n)), 'dance', 'work-dance', 'walk-left'].sort()) + expect(Object.keys(s.animations).filter(n => !IDLE_VARIANTS.includes(n)).sort()).toEqual([...PET_ANIMS.filter(n => !IDLE_VARIANTS.includes(n)), 'dance', 'work-dance', 'walk-left', 'pant-walk-left'].sort()) expect(Object.keys(s.outfits ?? {})).toEqual(['headphones', 'propeller', 'tophat', 'crown']) expect(s.transitions ?? {}).toEqual({}) for (const f of s.animations.walk!.frames) expect(f.dx).toBe(1) for (const f of s.animations['walk-left']!.frames) expect(f.dx).toBe(-1) + for (const f of s.animations['pant-walk-left']!.frames) expect(f.dx).toBe(-1) }) test('a pack tint recolors only Clawd', () => { From c2bf49dd97260544f804a9c79f52825e0741d2ab Mon Sep 17 00:00:00 2001 From: NovusEdge Date: Fri, 16 Oct 2026 09:03:36 +0300 Subject: [PATCH 3/3] docs(changelog): hand-drawn left walks for the ghost and the robot Signed-off-by: NovusEdge --- CHANGELOG.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index eaf9927a..e9724fa8 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -14,6 +14,10 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - With Spotify connected, the music player lists Up next, Recent, Playlists and Devices (`1` to `4`). Enter skips forward to a queued track, replays a recent one in its playlist or album, starts a playlist, or moves playback to another device. - The Pets page and the landing page show Clawd dancing to music and his two idle variants. +### Changed + +- The ghost and the robot walk left with hand-drawn frames instead of a mirrored right walk, so they stay lit from the top left like Clawd. + ### Fixed - The landing page's hop, fail and scrunch cards replay instead of freezing on their last frame.