Add minimalist creature sections, 50 black-and-white and 50 colored

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
2026-10-23 12:57:10 +00:00
co-authored by Claude Opus 5.5
parent c4dd37f62c
commit 95c6ae7fb4
302 changed files with 2655 additions and 2 deletions
+28
View File
@@ -0,0 +1,28 @@
// moose facing you with big flat antlers, slowly nodding, an ear flick and a blink
const{sin,cos,PI}=Math,T=2*PI
export const frames=24,delay=90
const B='#b07d55',L='#d9b38c',A='#ecd3a5',D='#2b2633'
export default(c,t)=>{
const n=(1-cos(T*t))/2,fl=t>.6&&t<.66?.4:0,bl=t>.82&&t<.88
const fill=(col,f)=>{c.fillStyle=c.strokeStyle=col;c.lineWidth=6;c.beginPath();f();c.fill();c.stroke()}
const line=(col,lw,f)=>{c.strokeStyle=col;c.lineWidth=lw;c.beginPath();f();c.stroke()}
for(const x of[100,156])line(B,13,()=>{c.moveTo(x,170);c.lineTo(x,218)})
fill(B,()=>c.ellipse(128,166,60,34,0,0,T))
for(const x of[108,148])line(B,15,()=>{c.moveTo(x,180);c.lineTo(x,222)})
c.save();c.translate(128,140);c.scale(1,1-.05*n);c.translate(-128,-140+9*n)
for(const d of[-1,1]){
c.save();c.translate(128,0);c.scale(d,1);c.translate(-128,0)
line(A,11,()=>{c.moveTo(146,88);c.quadraticCurveTo(160,86,170,78)})
fill(A,()=>c.ellipse(190,64,32,17,-.45,0,T))
for(const[x,y]of[[170,48],[184,38],[199,32],[214,32],[224,44]])fill(A,()=>c.arc(x,y,6.5,0,T))
c.save();c.translate(156,100);c.rotate(.3+(d>0?fl:0))
fill(B,()=>c.ellipse(14,0,16,7,0,0,T));c.restore();c.restore()
}
fill(B,()=>c.ellipse(128,100,26,24,0,0,T))
fill(L,()=>c.ellipse(128,142,22,25,0,0,T))
c.fillStyle=c.strokeStyle=D
for(const d of[-1,1])if(bl)c.lineWidth=4,c.beginPath(),c.arc(128+d*15,96,4.5,.15*PI,.85*PI),c.stroke()
else c.beginPath(),c.arc(128+d*15,98,4.5,0,T),c.fill()
for(const d of[-1,1])c.beginPath(),c.ellipse(128+d*8,154,3.5,5,d*.3,0,T),c.fill()
c.restore()
}