Thanks! Like I wrote it would be possible to reduce the size of the code and make the card more readable. I made a simpler version at first with a bigger font size and even a qr code that linked to the page on itch.io. But I think the final version is a lot more fun.
Just in case you want to test it, this is the smaller earlier version:
<html><boby><textarea id="a" rows="24" cols="64" readonly> </textarea><br><input id="i" type="number" ></body><script type="text/x">$i=%E('i');$a=%E('a'); i.focus();$P=(t)=>{a. value+=t+'\n'}; $C=()=>{a.value=''}; $S=(a)=>{ a.sort(()=> Math.random()-0.5);->a};$L=(a)=>a.length;$T=(a)=>a[L(a)-1] i.addEventListener('keyup',(e)=>{if(e.keyCode===13){e['p'+ 'reventDefault']();SO(i.value-1);i.value='';UP()}});$io={} $o=[];$RO=()=>{o=[]}; $or=[]; $on=['north','east','south', 'west'];$CR=(p,dn=0,e=0)=>{$r={d:S([0,1,2,3]),o:[],AO(op){ op.t=4;op.on=1;if(!r.o)r.o=[];if(op.id){io[op.id]=op}r.o<- (op);->r},BK(){cr=p},dn:dn};if(p){$d=p.d.pop();r.d.splice( r.d.indexOf((d+2)%4),1);p.o<-({t:d,on:1,f(){cr=r},});r.o<- ({t:(d+2)%4,on:1,f(){cr=p}});if(!L(p.d))or=or.filter((v,i, a)=>v!=p)}if(!e)or<-(r); S(or);->r};$GR=()=>T(S(or));$HO=( )=>{$l=[];$oi=1;if(cr){cr.o.sort((a,b)=>a.t-b.t);$s='';$d= ''; cr.o.forEach((o,i)=>{if((o.on==1)&&(!(cr.dn)||o.t>3)){ l<-(o);if('DE' in o)d=o.DE(); s+='\n ['+oi+'] : '+(o.t<4? 'go '+on[o.t]:o.TS());oi++}});d=d?d:'The room is empty.';P (d);P('\noptions:');P(s)}->l}; $SO=(i)=>{C();if(i<0||i>=L( ol))->;ol[i].f()};$DM=(d)=>{lp-=d-_s;if(lp<=0){lp=0;cr=re} };$re;$N=()=>{io={};mx=5;lp=mx;it=[]; _d=0;_k=0;_s=0;_w=0; _g1=0;_o=0;re=CR(null,0,1~ON();~N'GAME OVER'~S'new game'}} );$r1=CR(null,0,1);$r2=CR(null);(r1~Ocr=r2;~N'#Y dungeon'+ ' entrance.'~S'enter'}});CR(r2~O_d=1;@on=0;it<-('dagger'); ~N'#Y dagger.'~S'#tdagger'}});$r4=CR(r2,1~Oif(_k){_k--;@l= 0;cr.dn=0;@on=0}else{cr.BK()}~N'#Tlocked door.'~S_k?'ope'+ 'n door':'go back'},dn:1,l:1}); CR(r2,1~O@eh-=_w?2:_d;if(@ eh)DM(1);if(!@eh){_g1=1;cr.dn=0;@on=0;io[1].on=0;io[2].on= 1; }~N'#Tgoblin (\u2665 '+@eh+'/3).'~S'attack'},eh:3}~Ocr. BK();~S'flee'},id:1}~O_k++;@on=0;~N'The goblin#dkey.'~S''+ '#tkey'},id:2});io[2].on=0; CR(r4~Omx+=2;lp=mx;@on=0;~N''+ '#Y #P.'~S'drink#P'}});$r7=CR(T(or));CR(r7,1~O@eh-=_w?2:_d if(@eh)DM(2);if(!@eh){_g1=1; cr.dn=0;@on=0;io[3].on=0;io[4 ].on=1}~N'There is an orc (\u2665 '+@eh+'/4).'~S'attack'}, eh:4}~Ocr.BK(); ~S'flee'},id:3}~O_d=1;@on=0;it<-('sword'); ~N'The orc#dsword.'~S'#tsword'},id:4});io[4].on=0;for($t=0 ;t<2;t++){CR(T(or)~Omx+=2;lp=mx;@on=0;~N'#Y#P.'~S'drink#P' }})} CR(T(or)~O_s=1; @on=0; it<-('shield'); ~N'#Y shield.' ~S'#tshield'}});CR(T(or),1~O@eh-=_w?2:_d;if(@eh)DM(3);if(! @eh){_g1=1;cr.dn=1;@on=0;io[5].on=0;io[6].on=1}~N'#Tdrag'+ 'on (\u2665 '+@eh+'/7).'~S'attack'},eh:7}~Ocr.BK();~S'fl'+ 'ee'},id:5}~ON();~N'Congratulations! You killed the drag'+ 'on!'~S'new game'},id:6});io[6].on=0;cr=r1}; N();$ol;$UP=( )=>{P('\u2665 '+lp+'/'+mx);P('keys: '+_k); P('items: '+(L( it)?it.join(', ') : '-')); P(''); ol=HO()}; UP();</script> <script>var A=(t,s,r)=>{return t.split(s).join(r)},K={'%E' :'document.getElementById','$':'var ','->':'return ','%?': '.includes', '@':'this.','\r':'','#P' : ' healing potion', '#Y':'You see a','#T':'There is a ','#t':'take ','~O':')'+ '.AO({f(){','~S':'},TS(){return ','~N' : '},DE(){return ', '#d':' dropped a ','<-':'.push'},R=(x)=>{for(var k in K)x= A(x,k,K[k]);eval(x)},C=document.querySelectorAll('script'+ '[type="text/x"]'); for( var i=0; i<C.length; i++ )R(C[i]. innerHTML);/* * * HAVE FUN! * * */</script></html>
(EDIT: The code didn’t fit in properly – so I did some formatting …)