;disabled because of memory shortage››;Pe stands for people!››PROC ShowPe()›;;BYTE POINTER psc›;;IF md=1 THEN›;; i=31›;; DO›;; IF Pe(i) THEN›;; psc=sc+Pe(i+32)+Pe(i+64)*32›;; UnPe(i)=psc^›;; CasBuf(i)=psc›;; ELSE›;; EXIT›;; FI›;; i==-1›;; UNTIL i=255 OD›;; FOR i=i+1 TO 31 DO›;; psc=CasBuf(i)›;; psc^=Pe(i)›;; OD›;;ELSEIF md=4 THEN›;; i=15›;; DO›;; IF Pe(i+16)#0 THEN›;; psc=sc+Pe(i+32)+Pe(i+48)*32›;; UnPe(i)=psc^›;; CasBuf(i)=psc›;; FI›;; i==-1›;; UNTIL i=255 OD›;; FOR i=0 TO 15 DO›;; IF Pe(i+16)#0 THEN›;; psc=CasBuf(i)›;; psc^=Pe(i+16)›;; FI›;; OD›;;FI›RETURN››PROC HidePe()›;;BYTE POINTER psc›;;IF md=1 THEN›;; i=31›;; DO›;; IF Pe(i) THEN›;; psc=sc+Pe(i+32)+Pe(i+64)*32›;; psc^=UnPe(i)›;; ELSE›;; EXIT›;; FI›;; i==-1›;; UNTIL i=255 OD›;;ELSEIF md=4 THEN›;; FOR i=0 TO 15 DO›;; IF Pe(i+16)#0 THEN›;; psc=sc+Pe(i+32)+Pe(i+48)*32›;; psc^=UnPe(i)›;; FI›;; OD›;;FI›RETURN››;;BYTE FUNC Form(BYTE in)›;;IF in<32 THEN RETURN(in)›;;ELSEIF in<48 THEN RETURN(in&254)›;;ELSEIF in<80 THEN RETURN(in)›;;ELSEIF in<96 THEN RETURN(in&254)›;;ELSEIF in<128 THEN RETURN(in)›;;ELSEIF in<144 THEN RETURN(in&254)›;;ELSE RETURN(in&252) FI››;mobility›PROC WrMob()›;;i=Pe(per+192)›;;IF i=255 THEN›;; WriteL("Aggr ")›;;ELSEIF i=128 THEN›;; WriteL("Attr ")›;;ELSEIF i=1 THEN›;; WriteL("Yes ")›;;ELSEIF i#0 THEN›;; WriteLB(i) gsc==+2›;;ELSE›;; WriteL("No ")›;;FI›RETURN››;modify people›PROC ModPe(BYTE am)›;;IF sk=0 THEN›;; icn==+am Pe(per+96)=icn›;; gsc=L2+11 WriteLB(icn)›;;ELSEIF sk=1 THEN›;; IF (am&128)=128 THEN›;; am=Pe(per+192)›;; IF am=0 THEN am=1›;; ELSEIF am=1 THEN am=128›;; ELSEIF am=128 THEN am=255›;; ELSEIF am=255 THEN am=0›;; FI›;; ELSE›;; am=Pe(per+192)›;; IF am=255 THEN am=128›;; ELSEIF am=128 THEN am=1›;; ELSEIF am=1 THEN am=0›;; ELSEIF am=0 THEN am=255›;; FI›;; FI›;; Pe(per+192)=am›;; gsc=L2+19 WrMob()›;;ELSE;sk=2›;; Pe(per+224)==+am›;; IF Pe(per+224)>16 THEN›;; IF Pe(per+224)<230 THEN›;; Pe(per+224)=0›;; ELSE›;; Pe(per+224)=16›;; FI›;; FI›;; gsc=L2+29 WriteLB(Pe(per+224))›;;FI›RETURN››;show a person's statistics›PROC ShowPer()›;;IF md=1 THEN›;; WriteL2("#")›;; WriteLB(per) gsc==+1›;; WriteL("RepIc:")›;; WriteLB(Pe(per+96)) gsc==+1›;; Pe(per)=icn›;; pp=Sc+(yy+ry)*32+rx+xx›;; UnPe(per)=pp^›;; Pe(per+32)=rx+xx›;; Pe(per+64)=ry+yy›;; Pe(per+128)=rx+xx›;; Pe(per+160)=ry+yy›;; WriteL("Mob:")›;; WrMob()›;; WriteL("Spch#")›;; WriteLB(Pe(per+224))›;;ELSEIF md=3 THEN›;; IF Ptyp THEN›;; WriteL2("Monster #")›;; Pe(per+64)=rx›;; Pe(per+80)=ry›;; ELSE›;; WriteL2("Player #")›;; Pe(per+96)=rx›;; Pe(per+104)=ry›;; FI›;; WriteLB(per)›;;ELSEIF md=4 THEN›;; IF Ptyp=0 THEN›;; WriteL2("Player ")›;; pp=gsc pp^=SDir(s_dir) pp==+1 pp^='#-32›;; gsc==+2›;; Pe(per+s_dir LSH 4+64)=rx›;; Pe(per+s_dir LSH 4+72)=ry›;; ELSEIF Ptyp=1 THEN›;; WriteL2("Monster #")›;; Pe(per+16)=icn›;; Pe(per+32)=rx›;; Pe(per+48)=ry›;; pp=Sc+(yy+ry)*32+rx+xx›;; UnPe(per)=pp^›;; ELSEIF Ptyp=2 THEN›;; Pe(per LSH 2)=icn›;; IF Ttyp=0 THEN›;; WriteL2("Trigger #")›;; Pe(per LSH 2+1)=rx LSH 4+ry›;; ELSEIF Ttyp=1 THEN›;; WriteL2("Overlay1#")›;; Pe(per LSH 2+2)=rx LSH 4+ry›;; ELSEIF Ttyp=2 THEN›;; WriteL2("Overlay2#")›;; Pe(per LSH 2+3)=rx LSH 4+ry›;; FI›;; FI›;; WriteLB(per)›;;FI›RETURN››;select a person›PROC SelPer()›;;IF md=1 THEN›;; rx=Pe(per+32)›;; ry=Pe(per+64)›;; pp=Sc+ry*32+rx›;; IF Pe(per)<>0 THEN›;; pp^=UnPe(per)›;; FI›;; icn=Pe(per)›;; IF icn=0 THEN›;; IF per THEN›;; Pe(per-1)=0›;; FI›;; FI›;; IF ry<6 THEN›;; yy=0›;; ELSEIF ry<26 THEN›;; yy=ry-5 ry=5›;; ELSE›;; yy=21 ry==-yy›;; FI›;; IF rx<6 THEN›;; xx=0›;; ELSEIF rx<26 THEN›;; xx=rx-5 rx=5›;; ELSE›;; xx=21 rx==-xx›;; FI›;;ELSEIF md=3 THEN›;; IF Ptyp THEN›;; rx=Pe(per+64)›;; ry=Pe(Per+80)›;; ELSE›;; rx=Pe(per+96)›;; ry=Pe(per+104)›;; FI›;;ELSEIF md=4 THEN›;; IF Ptyp=0 THEN›;; rx=Pe(per+s_dir LSH 4+64)›;; ry=Pe(per+s_dir LSH 4+72)›;; ELSEIF Ptyp=1 THEN›;; rx=Pe(per+32)›;; ry=Pe(per+48)›;; pp=Sc+ry*32+rx›;; IF Pe(per+16)#0 THEN›;; pp^=UnPe(per)›;; FI›;; icn=Pe(per+16)›;; ELSEIF Ptyp=2 THEN›;; icn=Pe(per LSH 2)›;; ry=Pe(per LSH 2+1+Ttyp)›;; rx=ry RSH 4›;; ry==&15›;; FI›;;FI›RETURN››;draw player-missle 1:selection marker›PROC Drawp1()›;;BYTE ARRAY tps1=[3 1 3],›;;tp1x=[90 122 162],›;;tv1=[240 255 240]›;;ps1=tps1(sk)›;;p1x=tp1x(sk)›;;SetBlock(1664+108,4,tv1(sk))›RETURN››PROC EditPe()›;;BYTE acc,k›;;UnPe(per)=pp^›;;pp^=icn›;;Zero(1664,128)›;;sk=0 pc1=16›;;Drawp1()›;;icn=Pe(per+96)›;;DO UNTIL Strig0 OD›;;DO›;; Display(xx,yy)›;; DO›;; acc==+1›;; IF acc=0 THEN›;; Display(xx,yy)›;; IF pc1=16 THEN›;; pc1=240›;; ELSE›;; pc1==-16›;; FI›;; FI›;; UNTIL ((keyp#255) OR (Stick0#15)) OR (Strig0=0) OD›;; IF keyp#255 THEN›;; k=keyp&63›;; IF (k#60) AND (k#39) THEN›;; k=GetD(7)›;; IF k='- THEN›;; ModPe(1)›;; ELSEIF k='= THEN›;; ModPe(255)›;; ELSEIF k='| THEN›;; ModPe(246)›;; ELSEIF k='_ THEN›;; ModPe(10)›;; ELSEIF (k=' ) OR (k=') THEN›;; EXIT›;; ELSEIF k='* THEN›;; sk==+1 IF sk=3 THEN sk=0 FI›;; Drawp1()›;; ELSEIF k='- THEN›;; sk==-1 IF sk=255 THEN sk=2 FI›;; Drawp1()›;; ELSEIF k='f THEN›;; IF sk=0 THEN›;; icn=Form(Pe(per))›;; Pe(per+96)=icn›;; gsc=L2+11 WriteLB(icn)›;; FI›;; ELSEIF k='œ THEN›;; HidePe()›;; IF per#0 THEN›;; i=per›;; DO›;; Pe(i)=Pe(i-1)›;; Pe(i+32)=Pe(i-1+32)›;; Pe(i+64)=Pe(i-1+64)›;; Pe(i+96)=Pe(i-1+96)›;; Pe(i+128)=Pe(i-1+128)›;; Pe(i+160)=Pe(i-1+160)›;; Pe(i+192)=Pe(i-1+192)›;; Pe(i+224)=Pe(i-1+224)›;; i==-1›;; UNTIL i=0 OD›;; FI›;; i=0›;; DO›;; Pe(i)=0 i==+32›;; UNTIL i=0 OD›;; ShowPe()›;; EXIT›;; FI›;; ELSE›;; keyp=255›;; FI›;; ELSEIF Stick0#15 THEN›;; k=Stick0›;; IF k=13 THEN›;; ModPe(246+9*Strig0)›;; ELSEIF k=14 THEN›;; ModPE(10-9*Strig0)›;; ELSEIF k=7 THEN›;; sk==+1 IF sk=3 THEN sk=0 FI›;; Drawp1()›;; ELSEIF k=11 THEN›;; sk==-1 IF sk=255 THEN sk=2 FI›;; Drawp1()›;; FI›;; ELSEIF Strig0=0 THEN›;; EXIT›;; FI›;;OD›;;p1x=0›;;SelPer()›RETURN››MODULE; Dungeon stuff›;;BYTE ARRAY db;484 byte buf›;;BYTE ix,iy,ax,ay›;;CARD dnga››PROC DInd_=*()›;;[57344 up_+$FFF8 dn_+$FFF8 ud_+$FFF8›;;57376 $FF80 58112;'`›;;58016 57760 57648 57840 alt_+$FFF8›;;er_+$FFF8 er_+$FFF8 sd_+$FFF8 wa_+$FFF8]››PROC APlot(BYTE x,y,v)›;;BYTE i›;;BYTE POINTER f,t›;;CARD POINTER ff›;;IF v=0 THEN RETURN FI›;;v==&240;when  not needed›;;v==RSH 3;RSH 4 LSH 1›;;ff=DInd_+v›;;f=ff^›;;t=y*320+x+scadr›;;FOR i=0 TO 7 DO›;; t(i*40)=f(i)›;;OD›RETURN››;;BYTE FUNC PPlot()›;;BYTE xp,yp,mx,my,amx,amy,cnt,t›;;BYTE POINTER p,q›;;BYTE ARRAY dr3=[$FF 0 1]›;;cnt=0›;;q=db+ax+ay*22›;;t=q^›;;IF t#2 THEN›;; FOR yp=0 TO 2 DO›;; FOR xp=0 TO 2 DO›;; IF (xp=1) AND (yp=1) THEN;›;; ELSE›;; amx=ax+dr3(xp)›;; amy=ay+dr3(yp)›;; IF (amx<22) AND (amy<22) THEN›;; q=db+amx+amy*22›;; IF t=0 THEN›;; mx=(amx-3+rx)&7›;; my=(amy-3+ry)&7›;; p=dnga+mx+my*8›;; IF q^=0 THEN›;; APlot(amx,amy,p^)›;; FI›;; IF p^=240 THEN›;; q^=2›;; FI›;; FI›;; IF (yp#xp) AND ((xp=1) OR (yp=1)) THEN›;; IF q^=0 THEN›;; cnt==+1›;; FI›;; FI›;; FI›;; FI›;; OD›;; OD›;;FI›;;q=db+ax+ay*22›;;IF cnt>1 THEN q^=1›;;ELSE q^=2 FI›;;RETURN(cnt)››PROC DPeer()›;;BYTE n,amx,amy›;;BYTE POINTER p›;;BYTE ARRAY dx=[0 $FF 1 0],dy=[$FF 0 0 1]›;;CARD c›;;db=Sc+512;Dng mode only!-›;;Zero(db,484)›;;pc0=0›;;ClDisplay()›;;dnga=Sc+xx*64›;;ax=11 ay=11›;;DO›;; IF PPlot() THEN›;; FOR n=0 TO 3 DO›;; amx=ax+dx(n)›;; amy=ay+dy(n)›;; IF (amx>21) OR (amy>21) THEN;›;; ELSE›;; p=db+amx+amy*22›;; IF p^=0 THEN EXIT FI›;; FI›;; OD›;; ax=amx›;; ay=amy›;; ELSE›;; p=db›;; FOR c=0 TO 483 DO›;; IF p^=1 THEN›;; ay=c/22 ax=c MOD 22 EXIT›;; FI›;; p==+1›;; OD›;; IF c=484 THEN EXIT FI›;; FI›;;OD›;;APlot(11,11,96)›;;DO UNTIL keyp#255 OD keyp=255›;;ClDisplay()›;;pc0=16›RETURN››