Random dragon poetry, clouds, music and effects. No interaction, just enjoy the entertainment.
for(_='p[2]z/zGarkinjt(K"+JonZ12Y),Xe3Xe6&(*b(),1000|3+at=Mh.AAAEA,c0,.globalAlphapx s".width32+64,t>>;for(ight,h=a.he]+" Jv[,g=a ).fZt="".spliK0).fill=De.now()00*d(q/pkticleIndexStyle="TexKv[lmn],functiZ w(){q-s,r=q>>Y=.01+.7*(q%1024)/1024#J"1480654[r%2]RecKg,h99=.5,1&~r&l=0|4,m=4,n=0==r%3?10:7=.1)#fff"5h-50420/=9-500+55h-60)r j B)p=B[r],z-=200>z&z=2e4+1e4)=2e3G.drawImage(e,p[0]G+g/2-43p[1]G+h/2-119G,6G);70>B.length&B[++]=[4e7-2e7,-2-4]XrequestAnimiZFrame(w)}vk brandom,dsj,e=document.creeElemenK"canvas"Xf=e.getCZtexK"2d") =1e3=40B=[],l,m,n,q,r=A==t=0 ,s,u,v="Love0Fjd0Hail0Fek0a0the0your0n0l0f0dragZ!u="RIFF_oO_WAVEfmt Job("EAAAQBAHwAAQB8CAA")+"da";1>++t;)u+=Strjg.fromChkCode(1|255121Y^14))*8?3:4))new Audio("da:audio/wav;bas4,Jbtoa(u)).play(Xs,w(Xe.he=e=Y8;200>r++;)f.begjPh(Xfhsla(0%,J(Y7&75+25)+"%,.1)",f.kc(Y,7Xf()';g=/[-X-ZJKjkGz]/.exec(_);)with(_.split(g))_=join(shift());eval(_)
Zm9yKF89J3BbMl16L3pHYXJraW5qdChLIitKb25aMTJZKSxYZTNYH2U2HiYoHSpiKCkcHCwxMDAbMHwzHCsaYXQZPU0ZaC4YQUFBRUEXLGMWMCwVFi5nbG9iYWxBbHBoYRRweCBzIhQTLndpZHRoEjMyKzY0HCwRdD4+EDtmb3IoD2lnaHQOLGg9YS5oZQ4MXSsiIEp2WwssZz1hEgkpFi5mWnQ9IggiLnNwbGlLMCkHLmZpbGwGPUQZZS5ub3coKQUwMCpkKHEvBHBrdGljbGVJbmRleAMGU3R5bGU9IgIWBlRleEt2W2wLbQtuXSwBZnVuY3RpWiB3KCl7cQUtcyxyPXE+PlkUPS4wMSsuNyoocSUxMDI0KS8xMDI0FgIjSiIxNDgwNjU0B1tyJTJdFgZSZWNLFRVnLGgIOTkTPS41LDEmfnImHWw9MHw0HCxtPRo0LG49MD09ciUzPzEwOho3FD0uMSkWAiNmZmYiATUVaC01MAg0MjATLz05AS01MDArNQQ1H2gtNjApD3IgaiBCKXA9QltyXSx6LT0yMBUwPnomHXo9MmU0KzFlNBwpFD0yZTNHFi5kcmF3SW1hZ2UoZSxwWzBdRytnLzItNAQzH3BbMV1HK2gvMi0xBDEfOR5HLDYeRyk7NzA+Qi5sZW5ndGgmHUJbAysrXT1bNGU3HC0yZTcsLTIeLTQeGxscXVhyZXF1ZXN0QW5pbRlpWkZyYW1lKHcpfXZrIGIYcmFuZG9tLGQYc2osZT1kb2N1bWVudC5jcmUZZUVsZW1lbksiY2FudmFzIlhmPWUuZ2V0Q1p0ZXhLIjJkIikJPTFlMww9NDAVQj1bXSxsLG0sbixxLHI9QT0DPXQ9MAkMLHMsdSx2PSJMb3ZlMEZqZDBIYWlsMEZlazBhMHRoZTB5b3VyMG4OMGwOMGYOMGRyYWdaIQcPdT0iUklGRl9vT19XQVZFZm10IEoZb2IoIkVBQRdBUUJBSHdBQVFCOBdDQUEiKSsiZBlhIjsxHj4rK3Q7KXUrPVN0cmpnLmZyb21DaGtDb2RlKDF8MjU1HTEdMjEdEFleEDE0KSkqEDg/EDM6EDQpKQ9uZXcgQXVkaW8oImQZYTphdWRpby93YXY7YmFzHjQsSmJ0b2EodSkpLnBsYXkoWHMFLHcoWGUuaGUOPWUSPVk4OzIwMD5yKys7KWYuYmVnalAZaChYZgJoc2xhKBUwJSxKKFk3Jjc1KzI1HCkrIiUsLjEpIixmLmtjKBERWRwsFTdYZgYoKSc7Zz0vWwEtH1gtWkpLamtHel0vLmV4ZWMoXyk7KXdpdGgoXy5zcGxpdChnKSlfPWpvaW4oc2hpZnQoKSk7ZXZhbChfKQ==
var rnd = Math.random,
sin = Math.sin,
canvas = document.createElement('canvas'),
context = canvas.getContext('2d'),
w = a.width = 1000,
h = a.height = 400,
particles = [],
poem1,poem2,poem3,iTimeDelta,
i=j=particleIndex=t=0,
space = ' ',
w = a.width,
h = a.height,
iTimeStart, S,
poem = 'Love0Find0Hail0Fear0a0the0your0night0light0fight0dragon!'.split(0),
step = function () {
iTimeDelta = Date.now() - iTimeStart;
i=iTimeDelta>>12;
// background clear
c.globalAlpha = .01 + .7*(iTimeDelta%1024)/1024;
c.fillStyle = '#'+'1480654'.split(0)[i%2];
c.fillRect(0,0,w,h);
// draw poem
c.font = "99px s";
c.globalAlpha = .5;
if (~i&1) {
poem1 = 0|rnd()*4;
poem2 = 0|rnd()*3 + 4;
poem3 = (i%3==0) ? 10 : 0|rnd()*3 + 7;
c.globalAlpha = .1;
}
c.fillStyle = '#fff';
c.fillText(
poem[poem1]+space+poem[poem2]+space+poem[poem3],
50,
h-50
);
c.font = "420px s";
c.globalAlpha /= 9;
c.fillText(
poem[poem1]+space+poem[poem2]+space+poem[poem3],
-500 + 500 * sin(iTimeDelta/5e3),
h-60
);
// draw clouds
for (i in particles) {
p = particles[i];
// animate particles
p[2]-=200;
if (p[2] < 0) p[2] = 2e4 + rnd()*1e4;
c.globalAlpha = 2e3/p[2];
c.drawImage(
canvas,
p[0]/p[2]+ w/2 - sin(iTimeDelta/3e3)*400,
p[1]/p[2]+ h/2 - sin(iTimeDelta/1e3)*100,
9e6/p[2],
6e6/p[2]
);
}
if (particles.length < 70)
particles[particleIndex++]=[rnd()*4e7-2e7,-2e6-rnd()*4e6, rnd()*1e2, rnd()*1e2];
requestAnimationFrame(step);
}
;
for(S='RIFF_oO_WAVEfmt '+atob('EAAAAAEAAQBAHwAAQB8AAAEACAA')+'data';++t<2e6;) {
S+=String.fromCharCode(1|255&(1&(21&(t>>12^t>>14))*t>>8?t>>3:t>>4));
}
new Audio( 'data:audio/wav;base64,'+btoa( S ) ).play();
iTimeStart = Date.now();
step();
// generate cloud sprite
canvas.height = canvas.width = 128;
for (;i++<200;) {
context.beginPath();
context.fillStyle = 'hsla(0,0%,'+((75 + rnd() * 25)&127)+'%,.1)';
context.arc(32+64* rnd(), 32 + 64* rnd(), rnd() * 12, 0, 7);
context.fill();
}