1 CLS:GOSUB50000 2 PRINT@10,"Toasted Terra" 3 PRINT"(C) 1993 by Tony Garton" 4 PRINT"victim@eskimo.com":PRINT"apologies to Wendell Hicken":PRINT"I couldn't resist the temptation" 5 A=RND(-VAL(LEFT$(TIME$,2)+MID$(TIME$,4,2)+RIGHT$(TIME$,2))) 6 MW=50 7 PRINT:DIMPN$(5),PS%(5,67),LA%(143),ID%(5,29),BR%(5),WN$(60),WS%(60,5),SK%(5),SK$(6),FO%(5),WA$(9),FU$(4),MO(5) 8 DIMBP%(6,20,1),GU$(5),LR%(5,3),NA%(143) 10 INPUT"Number of HUMAN players(0-5):";PL 20 IF(5-PL)>0THENPRINT"Number of COMPUTER players(0-";5-PL;")";:INPUTCP 25 IFPL+CP<1THENPRINT"there has to be SOMEONE playing!":GOTO10 30 IFPL>0THENGOSUB2000 40 IFCP>0THENGOSUB4000 50 INPUT"Rounds to play(1-999):";RP:IFRP<1OR RP>999THENGOTO50 51 PRINT"Walls:" 52 PRINT"1-Open 2-Wraparound 3-Solid 4-padded" 53 PRINT"5-Rubber 6-Springy 7-Mutable 8-Erratic" 54 INPUT"9-Spastic ";WA 55 RP=INT(RP) 100 READBR%(0),ID%(0,0),ID%(0,1) 110 READBR%(1),ID%(1,0),ID%(1,1),ID%(1,2) 120 READBR%(2),ID%(2,0),ID%(2,1),ID%(2,2),ID%(2,3),ID%(2,4) 130 READBR%(3):FORX=0TO9:READID%(3,X):NEXTX 140 READBR%(4):FORX=0TO19:READID%(4,X):NEXTX 150 READBR%(5):FORX=0TO29:READID%(5,X):NEXTX 160 FORX=0TOMW:READWN$(X):FORZ=0TO5:READWS%(X,Z):NEXTZ:NEXTX:TP=PL+CP 165 FORX=1TOTP:FO%(X)=X:NEXTX 170 FORX=1TO6:READSK$(X):NEXTX 175 IFCP>0THENZ=1:FORX=PL+1TOTP:PN$(X)=SK$(SK%(X)):NEXTX 180 FORX=1TO9:READWA$(X):NEXTX 190 FORX=0TO4:READFU$(X):NEXTX:FORX=0TO5:READGU$(X):NEXTX 191 FORX=1TO6:FORY=1TO20:READBP%(X,Y,0),BP%(X,Y,1):NEXTY:NEXTX 200 FORX=1TOTP:MO(X)=1000:NEXTX 210 FORX=1TOTP:LR%(X,0)=45:LR%(X,1)=0:LR%(X,2)=200:LR%(X,3)=1:NEXTX 300 FORRO=1TORP:IFWA=7THENWT=INT(RND(1)*6) 301 CLS:PRINT@130,"Round";RO:FORX=1TO1000:NEXTX 303 IFWA<7THENWT=WA 304 IFWA=9THENWT=9 305 WI=INT(RND(1)*200)-100 310 IFPL>0THENGOSUB9000 320 IFCP>0THENGOSUB11000 325 FORX=1TO50:WS%(X,0)=WS%(X,0)*.95:NEXTX 327 FORP=1TOTP:FORX=1TO50:MO(P)=MO(P)+INT(PS%(P,6+X)*WS%(X,0)*.01):NEXTX:NEXTP 330 FORX=1TOTP:PS%(X,4)=100:PS%(X,3)=0:NEXTX 340 FORP=1TOTP:GOSUB29000:NEXTP 1000 CLS 1005 Y=50:D=-1:HI=10:SL=10:PP=1 1010 FORX=0TO143 1015 Y=Y+D:LA%(X)=Y:IF((Y>57)OR(Y0ANDPS%(PK,66)>0THENGOSUB40000 1094 NEXTPK 1100 AL=0:FORX=1TOTP:IFPS%(X,4)>0THENAL=AL+1 1105 NEXTX:A$=INKEY$ 1110 IF(AL>1)ANDA$<>"K"THENGOTO1060 1115 IFA$="K"THENFORX=1TOTP:PS%(X,4)=0:NEXTX 1120 GOSUB20000 1999 NEXTRO:END 2000 FORX=1TOPL 2010 PRINT"Name of player";X;":";:INPUTPN$(X):NEXTX:RETURN 3000 FORP=1TOTP:CL=1:IFPS%(P,2)>LA%(PS%(P,1))THENCL=0:PS%(P,66)=0 3010 X=PS%(P,1):Y=PS%(P,2) 3020 ONPGOSUB3100,3200,3300,3400,3500 3065 FORZ=-2TO2:LA%(PS%(P,1)+Z)=Y+1:NEXTZ 3070 NEXTP:RETURN 3100 LINE(X,Y)-(X,Y-4),CL:LINE(X-1,Y)-(X+1,Y),CL:LINE(X-1,Y-4)-(X-1,Y-4),CL:RETURN 3200 LINE(X-1,Y)-(X+1,Y),CL:LINE(X-1,Y-1)-(X+1,Y-3),CL:LINE(X-1,Y-4)-(X+1,Y-4),CL:RETURN 3300 LINE(X-1,Y)-(X+1,Y),CL:LINE-(X+1,Y-4),CL:LINE-(X-1,Y-4),CL:LINE(X,Y-2)-(X,Y-2),CL:RETURN 3400 LINE(X+1,Y)-(X+1,Y-4),CL:LINE(X-1,Y-4)-(X-1,Y-2),CL:LINE(X,Y-2)-(X,Y-2),CL:RETURN 3500 LINE(X-1,Y)-(X+1,Y),CL:LINE-(X+1,Y-2),CL:LINE-(X-1,Y-2),CL:LINE-(X-1,Y-4),CL:LINE-(X+1,Y-4),CL:RETURN 4000 FORP=(PL+1)TO(PL+CP):CLS:PRINT"Computer skill level, player";P 4010 PRINT"1-Moron 2-Idiot 3-Novice 4-Good" 4020 PRINT"5-Excellent";:INPUTSK%(P) 4030 PN$(P)=SK$(SK%(P)) 4999 NEXTP:RETURN 5000 FORP=1TOTP 5010 RP=(INT(RND(1)*26)+1)*5:ER=0 5020 FORZ=1TOP 5030 IFPS%(Z,1)=RPTHENLETER=1 5040 NEXTZ:IFER=1THENGOTO5010 5050 PS%(P,1)=RP:PS%(P,2)=LA%(RP)-1 5060 NEXTP:RETURN 6000 BR=BR%(BT):X=BX:Y=BY:IFEP=1THENCL=1ELSECL=0 6005 FORBL=0TOBR-1:ID=ID%(BT,BL) 6010 LX=X-BL:IFLX<0THENLETLX=0 6015 IFLX>143THENLX=143 6020 RX=X+BL:IFRX>143THENRX=143 6025 IFRX<0THENRX=0 6030 UY=Y+ID-BR:IFUY<0THENUY=0 6040 LY=Y-ID+BR:IFLY>62THENLY=62 6050 LINE(LX,LY)-(LX,UY):LINE(RX,LY)-(RX,UY) 6060 IFEP=0THENGOSUB7000ELSEGOSUB7500 6100 NEXTBL 6110 FORBL=0TOBR-1:ID=ID%(BT,BL) 6120 LX=X-BL:IFLX<0THENLETLX=0 6125 IFLX>143THENLX=143 6130 RX=X+BL:IFRX>143THENRX=143 6135 IFRX<0THENRX=0 6140 UY=Y+ID-BR:IFUY<0THENUY=0 6150 LY=Y-ID+BR:IFLY>62THENLY=62 6160 LINE(LX,LY)-(LX,UY),CL:LINE(RX,LY)-(RX,UY),CL 6170 NEXTBL 6180 GOSUB 8000 6190 FORP=1TOTP:IFPS%(P,4)<1THENGOTO6220 6200 D=SQR((BX-PS%(P,1))^2+(BY-PS%(P,2))^2) 6210 IF(BR-D)>0THENDR=0:GOSUB18000:DR=((1-(D*(WS%(WN,4)*.01)))*WS%(WN,2)):PRINT@24,"Player";P;"takes":PRINT@64,INT(DR);"damage!":FORX=1TO1000:NEXTX:PS%(P,3)=PS%(P,3)+INT(DR) 6220 NEXTP 6230 RETURN 7000 IFUY>LA%(LX)THENLETLA%(LX)=LY+LA%(LX)-UYELSEIFLA%(LX)LA%(RX)AND(RX<>BX)THENLETLA%(RX)=LY+LA%(RX)-UYELSEIF(RX<>BX)THENIFLA%(RX)BX)ANDLY143THENX1=143 8010 X2=X+BR:IFX2>143THENLETX2=143 8015 IFX2<0THENX2=0 8020 FORX3=X1TOX2 8030 LINE(X3,0)-(X3,LA%(X3)),0 8040 LINE(X3,LA%(X3))-(X3,63),1 8050 NEXTX3:RETURN 9000 CLS 9010 FORP=1TOPL 9020 CLS 9030 PRINT"Welcome, ";PN$(P);" to Hasim's" 9040 PRINT"House of Unholy Carnage!" 9050 PRINT"you have $";INT(MO(P)) 9060 PRINT"(B)rowse our stock" 9070 PRINT"(E)xit to next player" 9080 A$=INKEY$:IFA$=""THENGOTO9080 9090 IFA$="B"THENGOSUB10000 9120 IFA$="E"THENNEXTP:RETURN 9130 BEEP:GOTO9080 10000 CLS:SF=1.1 10010 PRINT@0,"Cash:$";INT(MO(P)); 10020 PRINT@13,"(U)p (D)own (B)uy (E)xit"; 10030 PRINT@57,"# in Today's # you"; 10040 PRINT@80,"Item:";:PRINT@97,"pack Price have"; 10060 WN=WN+1:GOSUB10200 10100 PRINT@120,WN$(WN);:PRINT@137,WS%(WN,1);:PRINT@142,WS%(WN,0);:PRINT@142,"$";:PRINT@150,PS%(P,WN+6); 10140 A$=INKEY$:IFA$=""THENGOTO10140 10150 IFA$="E"THENRETURN 10160 IFA$="U"THENGOSUB10200:GOSUB10500:GOTO10100 10170 IFA$="D"THENGOSUB10300:GOSUB10500:GOTO10100 10180 IFA$="B"THENGOSUB10400:GOTO10000 10190 BEEP:GOTO10140 10200 WN=WN-1:IFWN<0THENLETWN=MW 10210 IFWS%(WN,0)<=MO(P)THENRETURN 10220 IFWN=0THENRETURN 10230 GOTO10200 10300 WN=WN+1:IFWN>MWTHENLETWN=0 10310 IFWS%(WN,0)<=MO(P)THENRETURN 10320 IFWN=0THENRETURN 10330 GOTO10300 10400 MO(P)=MO(P)-WS%(WN,0) 10410 PS%(P,WN+6)=PS%(P,WN+6)+WS%(WN,1) 10420 IFWS%(WN,0)<29500THENWS%(WN,0)=INT(WS%(WN,0)*1.1) 10430 GOSUB10500 10440 PRINT@200,"Thank you!";:PRINT@240,""; 10465 FORX=1TO250:NEXTX 10470 RETURN 10500 PRINT@120," ";:RETURN 11000 FORP=(PL+1)TOTP 11001 CLS 11010 FORB=1TO20:WN=BP%(SK%(P),B,0) 11020 IF(MO(P)>=WS%(WN,0))AND(PS%(P,WN+6)PLTHENGOSUB14000:GOTO16000 13096 WN$=WN$(WN) 13100 PRESET(PS%(P,1),PS%(P,2)):A$=INKEY$:FORX=1TO25:NEXTX:PSET(PS%(P,1),PS%(P,2)):IFA$=""THENGOTO13100 13110 IFA$="W"THENGOSUB15000:GOTO13100 13120 IFA$="U"ORA$="D"THENGOSUB15100:GOTO13100 13130 IFA$="L"ORA$="R"THENGOSUB15200:GOTO13100 13140 IFA$="P"ORA$=";"ORA$="["ORA$="'"THENGOSUB15300:GOTO13100 13150 IFA$=" "THENLR%(P,0)=AN:LR%(P,1)=WN:LR%(P,2)=PO:LR%(P,3)=DI:GOTO16000 13152 IFA$="F"THENGOSUB15400:GOTO13100 13154 IFA$="G"THENGOSUB15500:GOTO13100 13999 BEEP:GOTO13100 14000 PF=P:ONSK%(P)GOSUB14200,14300,14300,14300,14300,14400 14010 GOSUB15020 14015 FORX=1TO250:NEXTX:GOSUB15120 14020 FORX=1TO250:NEXTX 14030 GOSUB15214:FORX=1TO250:NEXTX 14040 GOSUB15340:FORX=1TO250:NEXTX 14050 RETURN 14200 GOSUB14900:IFPK=0THENGOTO14100 14210 X=PS%(PK,1):DI=-1:IFX>PS%(PF,1)THENDI=1 14220 WN=17:GOSUB15000 14230 AN=INT(RND(1)*50)+20:PO=INT(RND(1)*400)+200 14240 RETURN 14300 GOSUB14900 14302 IFNE>1THENWN=6:GOSUB15000:GOTO14310 14304 IFME>0THENWN=5:GOSUB15000:GOTO14310 14306 WN=4:GOSUB15000 14310 AF=((5-SK%(PF))*.10)+.05 14320 GOSUB36100 14355 PO=PO+INT(RND(1)*INT(PO*AF*2))-INT(PO*AF) 14360 AN=AN+INT(RND(1)*INT(AN*AF))-INT(AN*AF*.5) 14370 AN=INT(AN):PO=INT(PO) 14380 IFPO<0THENPO=25 14399 RETURN 14900 PK=0:FORX=1TOTP:IFPS%(FO%(X),4)>0ANDFO%(X)<>PFTHENPK=FO%(X) 14910 NEXTX 14920 ME=0:NE=0:FORX=1TOTP:IF(X=PF)OR(X=PK)OR(PS%(X,4)<1)THENGOTO14990 14930 D=SQR((PS%(PK,1)-PS%(X,1))^2+(PS%(PK,2)-PS%(X,2))^2) 14940 IFD<20THENME=ME+1 14950 IFD<30THENNE=NE+1 14990 NEXTX:RETURN 15000 WN=WN-1:IFWN<0THENWN=30 15010 IFPS%(P,6+WN)<1THENGOTO15000 15020 PRINT@144," "; 15030 PRINT@144,WN$(WN):RETURN 15100 IFA$="U"THENAN=AN+1:IFAN>90THENAN=1 15110 IFA$="D"THENAN=AN-1:IFAN<0THENAN=90 15120 PRINT@186," ";:PRINT@186,INT(AN);:RETURN 15200 IFA$="L"THENDI=-1 15210 IFA$="R"THENDI=1 15214 IFDI=-1THENDI$="LEFT" 15215 IFDI=1THENDI$="RIGHT" 15220 PRINT@314," ";:PRINT@314,DI$;:RETURN 15300 IFA$="P"THENPO=PO+10:IFPO>999THENPO=999 15310 IFA$=";"THENPO=PO-10:IFPO<1THENPO=1 15320 IFA$="["THENPO=PO+1:IFPO>999THENPO=999 15330 IFA$="'"THENPO=PO-1:IFPO<1THENPO=1 15340 PRINT@192," ";:PRINT@192,PO;:RETURN 15400 FU=FU+1:IFPS%(PF,42+FU+6)<1THENFU=FU+1:IFFU>4THENFU=0:GOTO15450 15405 IFPS%(PF,42+FU+6)>0THENGOTO15450 15410 GOTO15400 15450 PRINT@269," ";:PRINT@269,FU$(FU);:RETURN 15500 GU=GU+1:IFPS%(PF,37+GU+6)<1THENGU=GU+1 15503 IFGU>5THENGU=0:GOTO15550 15505 IFPS%(PF,37+GU+6)>0THENGOTO15550 15510 GOTO15500 15550 PRINT@233," ";:PRINT@233,GU$(GU);:RETURN 16000 MY=63:EX=0:BX=PS%(P,1):BY=PS%(P,2):PSET(BX,BY):PS%(PF,6+WN)=PS%(PF,6+WN)-1 16003 IFWN=17THENGOSUB25500:GOTO16100 16005 IFFU=0THENGOTO16009ELSEPS%(PF,6+FU+42)=PS%(PF,6+FU+42)-1 16006 IFFU=2THENGOSUB27000 16008 IFFU=3ORFU=4THENGOSUB27500 16009 IFGU>0THENGOSUB35000:PS%(PF,6+GU+37)=PS%(PF,6+GU+37)-1:IFGU=1THENGOSUB36100 16010 XF=3*COS(AN*3.1416/180)*DI 16020 YF=3*SIN(AN*3.1416/180) 16022 PSET(BX,BY) 16023 GF=(1/(PO/5))*9 16024 WF=WI*.0009 16025 XF=XF+(XF*MS*.10)+((MS*.03)*3) 16027 XF=XF+WF 16030 BX=BX+XF:BY=BY-YF:YF=YF-GF 16031 IFBX<0ORBX>143ORBY<0THENGOSUB16200:IFEX=1THENGOTO16100 16032 IFBY>62THENBY=62:BT=WS%(WN,3):GOSUB21000:GOTO16100 16040 IFFU<>0THENEX=0:GOSUB26000:IFEX=1THENGOTO16100 16045 IFGU>1THENGOSUB36000 16048 IF(BX>-1)AND(BX<144)AND(BY>-1)AND(BY<64)THENPSET(BX,BY) 16049 IF(BX>0)AND(BX<144)THENZ=0:IFBY>=LA%(BX)THENBT=WS%(WN,3):GOSUB21000:GOTO16100 16050 GOTO16027 16100 IFMI=1THENRETURN 16103 FORP=1TOTP:IFPS%(P,4)<1THENGOTO16130 16105 FA=0:FA=LA%(PS%(P,1))-PS%(P,2)-1 16106 IFPS%(P,37)>1AND(PS%(P,4)>0)AND(FA>5)THENGOSUB28000:GOTO16112 16110 IFFA>0THENGOSUB18000:PRINT@24,"Player";P;:PRINT@64,"Falls for";:PRINT@104,FA^2;"damage!":FORX=1TO1000:NEXTX:PS%(P,2)=LA%(PS%(P,1))-1 16111 IFFA>0THENPS%(P,3)=PS%(P,3)+(FA^2) 16112 IF(PS%(P,64)>0)AND(PS%(P,3)>1)THENGOSUB30000 16120 PS%(P,4)=PS%(P,4)-PS%(P,3):PS%(P,3)=0 16125 IFPS%(P,4)<1THENGOSUB18000:PRINT@24,"Player";P;:PRINT@64,"dies!";:FORX=1TO1000:NEXTX:IFP<>PFTHENPS%(PF,61)=PS%(PF,61)+1:IFP=PFTHENMO(PF)=MO(PF)-1500 16130 NEXTP 16140 FORX=0TO143:LINE(X,0)-(X,LA%(X)-1),0:LINE(X,63)-(X,LA%(X)),1:NEXTX 16150 FORP=1TOTP:IFPS%(P,4)<1THENGOTO16170 16155 X=PS%(P,1):Y=PS%(P,2) 16157 IFY>LA%(X)THENCL=0ELSECL=1 16160 ONPGOSUB3100,3200,3300,3400,3500 16170 NEXTP:RETURN 16200 IFWA=9THENWT=INT(RND(1)*6)+1 16205 IFWT=1THENRETURN 16210 IFWT=2THENGOTO16300 16220 IFWT=3THENGOTO16400 16230 IFWT>3ANDWT<7THENGOTO16500 16240 RETURN 16300 IFBX<0THENBX=143 16310 IFBX>143THENBX=0 16320 RETURN 16400 IFBX<0THENBX=0 16410 IFBX>143THENBX=143 16420 BT=WS%(WN,3):GOSUB21000:EX=1:RETURN 16500 IFWT=4THENBF=-.5 16510 IFWT=5THENBF=-1 16520 IFWT=6THENBF=-1.5 16530 IFBX<0THENBX=0:XF=XF*BF 16540 IFBX>143THENBX=143:XF=XF*BF 16550 IFBY<0THENBY=0:YF=YF*BF 16560 RETURN 17000 GOTO18000 18000 FORX=0TO7:PRINT@(24+(X*40))," ";:NEXTX:RETURN 20000 CLS 20010 IFAL=0THENPRINT@90,"Nobody won this round.":FORX=1TO1000:NEXTX:GOTO20100 20020 FORX=1TOTP:IFPS%(X,4)>0THENRW=X 20030 NEXTX 20040 PRINT@40,"player";RW;",";PN$(RW); 20050 PRINT@80,"won the round!";:PS%(RW,63)=PS%(RW,63)+1 20060 BO=TP*500:PRINT@120,PN$(RW);" gets $";BO;"bonus!":FORX=1TO1000:NEXTX 20070 MO(RW)=MO(RW)+BO 20100 CLS 20110 PRINT@0,"Current standings KILLS"; 20120 PRINT@40,"for round";RO;:PRINT@60,"THIS TOTAL ROUNDS"; 20130 PRINT@80,"PLAYER";:PRINT@100,"ROUND KILLS WON"; 20140 FORX=1TOTP:PS%(X,62)=PS%(X,62)+PS%(X,61):NEXTX 20150 FORX=1TOTP:MO(X)=INT(MO(X)*1.3)+(100*TP):PS%(X,66)=0:PS%(X,67)=0 20160 PRINT@(80+(40*X)),X;:PRINT@(83+(40*X)),PN$(X); 20170 PRINT@(101+(40*X)),PS%(X,61); 20180 PRINT@(107+(40*X)),PS%(X,62); 20190 PRINT@(112+(40*X)),PS%(X,63); 20191 IFPS%(X,61)>0THENFORZ=1TOPS%(X,61):MO(X)=MO(X)+(Z*1000):NEXTZ 20195 NEXTX 20200 FORX=1TO2000:NEXTX 20205 HK=0:FORX=1TOTP:IFPS%(X,62)>HKTHENHK=PS%(X,62) 20207 NEXTX 20210 FORX=1TO5:FO%(X)=0:NEXTX:CO=1 20220 FORX=0TOHK 20230 FORY=1TOTP 20240 TA=0:FORZ=1TOTP:IFFO%(Z)=YTHENTA=1 20250 NEXTZ 20260 IFTA=1THENGOTO20290 20270 IFPS%(Y,62)=XTHENFO%(CO)=Y:CO=CO+1 20290 NEXTY:NEXTX 20300 FORX=1TO5:PS%(X,61)=0:NEXTX:RETURN 21000 EP=0:IFWN<9THENGOTO6000 21010 IFWN>8ANDWN<12THENGOTO22000 21020 IFWN>11ANDWN<15THENGOTO23000 21030 IFWN=15THENGOTO24000 21040 IFWN=16THENGOTO25000 21050 IFWN>17ANDWN<21THENSH=0:GOTO37000 21060 IFWN>20ANDWN<24THENGOTO38000 21070 IFWN>23ANDWN<26THENGOTO39000 21080 IFWN>25ANDWN<29THENEP=1 21090 IFWN=29THENEP=1:GOTO39000 21999 GOTO6000 22000 IFBX=143THENBX=142 22001 IFBX=0THENBX=1 22005 IF(LA%(BX-1)>LA%(BX))AND(LA%(BX+1)>LA%(BX))THENRD=DI:GOTO22100 22010 IFLA%(BX-1)>LA%(BX)THENRD=-1:GOTO22100 22020 IFLA%(BX+1)>LA%(BX)THENRD=1:GOTO22100 22030 GOTO6000 22100 LY=BY:PSET(BX,BY) 22110 BX=BX+RD:IFBX<1ORBX>142THENGOTO22190 22120 BY=LA%(BX):IF(BY<=LY)AND(LA%(BX+RD*2)<=LY)THENGOTO22190 22125 LY=BY:FORX=1TO10:NEXTX 22130 LINE-(BX,BY-1),1:GOTO22110 22190 GOTO6000 23000 SZ=WN-11 23100 AX=BX:AY=BY:FX=XF:FY=YF 23110 FORMS=-(SZ*3)TO(SZ*3)STEPSZ 23120 MI=1:FU=0:WN=SZ:BX=AX:BY=AY:XF=FX:YF=FY 23130 GOSUB16025 23140 NEXTMS:EX=1:MI=0:MS=0:RETURN 24000 FORLF=0TO2 24020 YF=.707:XF=.707*DI 24030 PO=100 24040 FU=0:WN=3:MI=1:GOSUB16025:NEXTLF:EX=1:MI=0:RETURN 25000 WN=3:BT=3:GOSUB6000:AX=BX:AY=BY:FORFB=1TO5 25005 BX=AX:BY=AY 25007 DI=INT(RND(1)*3)-1:IFDI=0THENGOTO25007 25010 WN=INT(RND(1)*3)+2 25020 AN=INT(RND(1)*50)+21 25030 PO=INT(RND(1)*150)+50 25040 MI=1:FU=0:GOSUB16010:NEXTFB:EX=1:MI=0:RETURN 25500 GOSUB18000:AT=0 25510 PRINT@24,"Batteries:"; 25520 PRINT@64,"# to use:"; 25530 PRINT@104,"(U)p (D)own"; 25540 PRINT@144,"space to fire" 25545 PRINT@34," ";:PRINT@34,PS%(PF,38); 25547 PRINT@74," ";:PRINT@74,AT; 25550 A$=INKEY$:IFA$=""THENGOTO25550 25560 IFA$="U"AND(PS%(PF,38)>AT)AND(AT<10)THENLETAT=AT+1:GOTO25545 25570 IFA$="D"THENAT=AT-1:IFAT<0THENAT=0 25580 IFA$=" "THENGOTO25600 25590 GOTO25545 25600 PS%(PF,38)=PS%(PF,38)-AT:FORP=1TOTP 25610 IFP=PFTHENGOTO25699 25620 BR=10+(AT*2):DR=100+(AT*50) 25630 TX=PS%(P,1):TY=PS%(P,2) 25640 D=INT(SQR((PS%(PF,1)-TX)^2+(PS%(PF,2)-TY)^2)) 25650 IFD<=BRTHENGOSUB18000:PRINT@24,"Player";P;:PRINT@64,"takes";DR;:PRINT@104,"damage!";:PS%(P,3)=PS%(P,3)+DR 25699 NEXTP:RETURN 26000 ONFUGOSUB26100,26200,26300,26400 26010 RETURN 26100 IFBY>MYTHENEX=1:GOSUB16400:RETURN 26110 MY=BY:RETURN 26200 IFBYMYANDBY>=ALTHENEX=1:GOSUB16400:RETURN 26220 RETURN 26300 D=INT(SQR((BX-PS%(PK,1))^2+(BY-PS%(PK,2))^2)) 26310 IFD<=ALTHENEX=1:GOSUB16400:RETURN 26320 RETURN 26400 D=INT(SQR((BX-PS%(PK,1))^2+(BY-PS%(PK,2))^2)) 26410 IFD>ALTHENRETURN 26420 IFD>OPTHENEX=1:GOSUB16400:RETURN 26430 OP=D:RETURN 27000 GOSUB18000 27010 PRINT@24,"(U)p (D)own"; 27020 PRINT@64,"space to fire"; 27030 PRINT@104,"Altitude:"; 27040 A$=INKEY$:IFA$=""THENGOTO27040 27050 IFA$="U"THENAL=AL-1:IFAL<0THENAL=63 27060 IFA$="D"THENAL=AL+1:IFAL>63THENAL=0 27065 IFA$=" "THENGOTO27190 27067 GOTO27100 27070 GOTO27040 27100 PRINT@113," ";:PRINT@113,AL;:GOTO27040 27190 RETURN 27500 GOSUB18000 27510 PRINT@24,"(U)p (D)own"; 27515 PRINT@64,"(T)arget:"; 27520 PRINT@104,"space to fire"; 27530 PRINT@144,"Proximity:"; 27535 PK=0:GOTO27700 27540 A$=INKEY$:IFA$=""THENGOTO27540 27550 IFA$="U"THENAL=AL-1:IFAL<1THENAL=30 27560 IFA$="D"THENAL=AL+1:IFAL>63THENAL=1 27565 IFA$=" "THENGOTO27690 27566 IFA$="T"THENGOTO27700 27567 GOTO27600 27570 GOTO27540 27600 PRINT@153," ";:PRINT@153,AL;:GOTO27540 27690 OP=150:RETURN 27700 PK=PK+1:IFPK>TPTHENPK=0:GOTO27700 27710 IFPK=PFTHENGOTO27700 27720 IFPS%(PK,4)<1THENGOTO27700 27730 PRINT@73," ";:PRINT@73,PK; 27740 GOTO27540 28000 GOSUB18000 28010 PRINT@24,"Player";P 28020 PRINT@64,"deploys a"; 28030 PRINT@104,"parachute."; 28040 FORX=1TO250:NEXTX:PS%(P,2)=LA%(PS%(P,1))-1 28045 PS%(P,37)=PS%(P,37)-1 28050 RETURN 29000 CLS:PRINT"Player";P;"Shield control";:SH=0:FORX=33TO37 29010 IFPS%(P,X+6)>0THENLETSH=1 29020 NEXTX:IFPS%(P,64)>0THENLETSH=1 29030 IFSH=0THENRETURN 29040 IFP>PLTHENGOTO29500 29050 GOSUB18000 29060 PRINT@24,"Shield:"; 29070 PRINT@104,"Batteries:"; 29080 PRINT@144,"Charge:"; 29090 PRINT@184,"(S)hield change"; 29100 PRINT@224,"(C)harge shield"; 29110 PRINT@264,"space when done"; 29120 IFPS%(P,64)=0THENPRINT@31," ";:PRINT@31,"Select"; 29130 IFPS%(P,64)>0THENPRINT@31," ";:PRINT@31,"ACTIVE"; 29140 IFPS%(P,65)>0THENPRINT@64," ";:PRINT@64,WN$(32+PS%(P,65));:GOTO29160 29150 PRINT@64," ";:PRINT@64,"No shield"; 29160 PRINT@114," ";:PRINT@114,PS%(P,38); 29170 PRINT@151," ";:PRINT@151,PS%(P,64):IFPS%(P,64)=WS%(PS%(P,65)+32,2)THENPRINT@156,"MAX"; 29180 A$=INKEY$:IFA$=""THENGOTO29180 29190 IFA$="S"THENLETPS%(P,64)=0:GOSUB29250:GOTO29120 29200 IFA$="C"ANDPS%(P,64)5THENPS%(P,65)=0:RETURN 29260 IFPS%(P,PS%(P,65)+38)<1THENGOTO29250 29270 RETURN 29300 IFPS%(P,38)<1THENBEEP:RETURN 29310 PS%(P,38)=PS%(P,38)-1:PS%(P,64)=PS%(P,64)+100 29320 IFPS%(P,64)>WS%(PS%(P,65)+32,2)THENPS%(P,64)=WS%(PS%(P,65)+32,2) 29330 RETURN 29400 IFPS%(P,65)=0THENRETURN 29405 IFPS%(P,64)=0THENPS%(P,64)=WS%(PS%(P,65)+32,2):PS%(P,PS%(P,65)+38)=PS%(P,PS%(P,65)+38)-1:GOTO29120 29410 RETURN 29500 GOSUB18000:IFPS%(P,64)>0THENGOTO29700 29510 SH=5 29520 IFPS%(P,38+SH)<1THENSH=SH-1:IFSH=0THENRETURN 29530 PS%(P,65)=SH 29540 PRINT@64,PN$(P); 29550 PRINT@104,"Activates a"; 29560 PRINT@144,WN$(SH+32); 29570 FORX=1TO250:NEXTX:PS%(P,SH+38)=PS%(P,SH+38)-1:PS%(P,64)=WS%(SH+32,2):RETURN 29700 IFPS%(P,64)=WS%(PS%(P,65)+32,2)THENRETURN 29710 BA=PS%(P,38) 29715 IFBA=0THENRETURN 29720 PS%(P,64)=PS%(P,64)+100:BA=BA-1:PS%(P,38)=BA 29730 IFPS%(P,64)>=WS%(PS%(P,65)+32,2)THENPS%(P,64)=WS%(PS%(P,65)+32,2):GOTO29750 29740 GOTO29715 29750 PRINT@24,"Player";P; 29760 PRINT@64,PN$(P); 29770 PRINT@104,"charges shields"; 29780 FORX=1TO250:NEXTX:RETURN 30000 GOSUB18000 30010 PS%(P,64)=PS%(P,64)-PS%(P,3):PS%(P,3)=0 30020 IFPS%(P,64)<1THENPS%(P,3)=PS%(P,64)*-1:PS%(P,64)=0:GOSUB18000:PRINT@24,"Player";P;:PRINT@64,"shield fails!":FORX=1TO250:NEXTX:PS%(P,65)=0:RETURN 30030 GOSUB18000:PRINT@24,"Player";P;:PRINT@64,"shield holds!":FORX=1TO250:NEXTX:RETURN 35000 GOSUB18000 35010 PRINT@24,GU$; 35020 PRINT@64,"(T)arget:"; 35025 GOTO35050 35030 A$=INKEY$:IFA$=""THENGOTO35030 35035 IFA$=" "THENRETURN 35040 IFA$<>"T"THENBEEP:GOTO35030 35050 PK=PK+1:IFPK>TPTHENPK=0:GOTO35050 35060 IFPS%(PK,4)<1THENGOTO35050 35070 IFPK=PFTHENGOTO35050 35080 PRINT@73," ";:PRINT@73,PK;:GOTO35030 36000 ONGUGOTO36100,36200,36300,36400,36500 36010 STOP 36100 X=PS%(PK,1):Y=PS%(PK,2):X2=PS%(PF,1):Y2=PS%(PF,2):DI=1:IFPS%(PF,1)>XTHENDI=-1 36130 D=INT(SQR((X-X2)^2+(Y-Y2)^2)) 36135 AD=ABS(X-X2):OP=ABS(Y-Y2) 36140 OP=OP+AD:AD=AD/2:HY=SQR(OP^2+AD^2) 36145 XF=AD/HY:YF=OP/HY:TA=OP/AD:AN=INT(ATN(TA)/(3.1416/180)) 36150 PO=(HY*5.135)-INT((Y-Y2)*AD*.07):GU=0 36199 RETURN 36200 D=SQR((BX-PS%(PK,1))^2+(BY-PS%(PK,2))^2):IFD>31THENRETURN 36210 BX=INT(BX):BY=INT(BY) 36220 IFBXPS%(PK,1)THENBX=BX-1 36240 IFBYPS%(PK,2)THENBY=BY-1 36260 IFBX>0ANDBX<144ANDBY>-1THENPSET(BX,BY) 36270 IFBX=PS%(PK,1)ANDBY=PS%(PK,2)THENGOTO36525 36280 GOTO36220 36300 IFABS(INT(BX)-PS%(PK,1))<4THENGOTO36210ELSERETURN 36400 IFABS(INT(BY)-PS%(PK,2))>3THENRETURN 36410 IFINT(BX)>PS%(PK,1)THENDR=-1ELSEDR=1 36420 NH=0:FORX=INT(BX)TOPS%(PK,1)STEPDR 36430 IFLA%(X)<=INT(BY)THENX=PS%(PK,1):NH=1 36440 NEXTX:IFNH=0THENGOTO36210ELSERETURN 36500 IFPS%(PF,1)>PS%(PK,1)THENDR=-1ELSEDR=1 36510 FORBX=PS%(PF,1)TOPS%(PK,1)STEPDR 36515 FORY=1TO10:NEXTY 36520 IFBX>0ANDBX<144ANDBY>-1THENPSET(BX,LA%(BX)-2) 36523 NEXTBX 36525 BX=PS%(PK,1):BY=PS%(PK,2):XF=0:YF=-1:GU=0 36530 RETURN 37000 EX=0:LX=INT(BX):LY=INT(BY):BX=BX+XF:BY=BY-YF:IF(LY=INT(BY))AND(LX=INT(LX))AND(LY<>63)THENGOTO37000 37001 IFMI=0THENGOTO37015 37002 IFBX<0ORBX>143THENXF=-XF:GOTO37000 37005 IFBY>62THENYF=-YF:GOTO37000 37015 IFBX<0ORBX>143ORBY>63THENWN=WN-16:BT=WS%(WN,3):GOTO6000 37020 IFBY=NA%(BX)THENRD=-1 39020 IFNA%(BX+1)>=NA%(BX)THENRD=1 39100 BY=NA%(BX)-1:PSET(BX,BY):NA%(BX)=BY 39110 BX=BX+RD:IFBX<1THENBX=1:RD=-RD 39120 IFBX>142THENBX=142:RD=-RD 39200 FORPK=1TOTP:IFEP=0ANDBX=PS%(PK,1)THENPS%(PK,66)=PS%(PK,66)+NP:PS%(PK,67)=PF 39210 NEXTPK 39300 NEXTNA 39310 IFEP=0THENRETURN 39320 FORX=0TO143:LA%(X)=NA%(X):NEXTX 39999 EP=0:RETURN 40000 P=PK:PF=PS%(PK,67):GOSUB18000 40010 ND=PS%(PK,66)*100:PRINT@24,"Player";PK; 40020 PRINT@64,"takes";ND; 40030 PRINT@104,"damage from"; 40040 PRINT@144,"burning napalm!"; 40050 FORX=1TO250:NEXTX:PS%(PK,3)=PS%(PK,3)+ND 40112 IF(PS%(P,64)>0)AND(PS%(P,3)>1)THENGOSUB30000 40120 PS%(P,4)=PS%(P,4)-PS%(P,3):PS%(P,3)=0 40125 IFPS%(P,4)<1THENGOSUB18000:PRINT@24,"Player";P;:PRINT@64,"dies!";:FORX=1TO1000:NEXTX:IFP<>PFTHENPS%(PF,61)=PS%(PF,61)+1:IFP=PFTHENMO(PF)=MO(PF)-1500 40130 RETURN 41000 MA=-1:FORPF=1TOTP:IFPS%(PF,4)<1THENGOTO41990 41002 IFPF>PLTHENGOTO41990 41005 IF(PS%(PF,47+6)=0)AND(PS%(PF,48+6)=0)AND(PS%(PF,49+6)=0)THENGOTO41990 41006 GOSUB18000 41007 IFPS%(PF,49+6)=1THENMA=30ELSEIFPS%(PF,48+6)=1THENMA=20ELSEMA=10 41010 PRINT@24,"Player";PF; 41020 PRINT@64,"Movement"; 41030 PRINT@104,"Allowance:";MA; 41040 PRINT@144,"(L)eft (R)ight"; 41050 PRINT@184,"Space when done"; 41100 PSET(PS%(PF,1),PS%(PF,2)):A$=INKEY$:FORX=1TO25:NEXTX:PRESET(PS%(PF,1),PS%(PF,2)):IFA$=""THENGOTO41100 41110 IFA$="L"THENGOTO41200 41120 IFA$="R"THENGOTO41300 41130 IFA$=" "THENGOTO41990 41140 BEEP:GOTO41100 41200 D=ABS(LA%(PS%(PF,1)-1)-LA%(PS%(PF,1))):IFD>5THENGOTO41140 41210 IFD+1>MATHENGOTO41140 41220 MA=MA-D-1:PS%(PF,1)=PS%(PF,1)-1:PS%(PF,2)=LA%(PS%(PF,1))-1:GOTO41400 41300 D=ABS(LA%(PS%(PF,1)+1)-LA%(PS%(PF,1))):IFD>5THENGOTO41140 41310 IFD+1>MATHENGOTO41140 41320 MA=MA-D-1:PS%(PF,1)=PS%(PF,1)+1:PS%(PF,2)=LA%(PS%(PF,1))-1:GOTO41400 41400 PRINT@114," ";:PRINT@114,MA;:GOTO41100 41990 IFPS%(PF,4)>0THENX=PS%(PF,1):Y=PS%(PF,2):CL=(Y>LA%(X))+1:ONPFGOSUB3100,3200,3300,3400,3500 41999 NEXTPF:IFMA<>-1THENGOTO16140ELSERETURN 42000 FORP=1TOPL 42005 IFPS%(P,56)<1ORPS%(P,4)=100ORPS%(P,4)<1THENGOTO42015 42010 IFP>PLTHENGOSUB42500ELSEGOSUB42020 42015 NEXTP:RETURN 42020 GOSUB18000 42040 PRINT@24,"PLAYER";P; 42050 PRINT@64,"Armor =";PS%(P,4); 42060 PRINT@104,"Activate Repair"; 42070 PRINT@144,"(Y/N)?"; 42080 A$=INKEY$:IFA$=""THENGOTO42080 42090 IFA$="N"THENGOTO42400 42100 PS%(P,4)=100:PS%(P,56)=PS%(P,56)-1 42400 RETURN 42500 GOSUB18000 42510 IFPS%(P,4)>75THENRETURN 42520 PRINT@24,"Player";P; 42530 PRINT@64,PN$(P); 42540 PRINT@104,"Repairs Himself"; 42550 FORX=1TO300:NEXTX:GOTO42100 50000 PRINT"This program is being distributed as" 50010 PRINT"SHAREWARE. Registration alone is $5" 50020 PRINT"$10 will get you a tape or 200k format" 50030 PRINT"disk, plus FREE upgrades & M100 goodies" 50040 PRINT"Send registation fees & inquiries to:" 50050 PRINT"Anthony Garton":PRINT"4700 176th St SW #A-315" 50060 PRINT"Lynnwood, WA 98037 Voice:206-742-3622"; 50070 FORX=1TO5000:NEXTX 50999 CLS:RETURN 59000 DATA 2,0,1 59010 DATA 3,0,1,1 59020 DATA 5,0,1,1,2,3 59030 DATA 10,0,1,1,1,2,2,3,4,5,7 59040 DATA 20,0,1,1,1,1,1,2,2,2,3,3,4,5,6,6,8,9,10,12,15 59050 DATA 30,0,1,1,1,1,1,1,2,2,2,3,3,3,4,4,5,5,6,7,8,8,9,10,12,13,14,16,18,21,24 59100 DATA"Shell",0,99,100,0,25,0 59110 DATA"Mini Missile",500,10,200,1,25,1 59120 DATA"Missile",1000,5,400,2,20,2 59130 DATA"Mega Missile",2500,3,500,3,10,6 59140 DATA"Mini Nuke",7000,2,1000,4,5,0 59150 DATA"Nuke",10000,1,2000,5,3,9 59160 DATA"Mini riot bomb",2500,5,0,3,10,1 59170 DATA"riot bomb",5000,3,0,4,5,1 59180 DATA"Mega riot bomb",7000,2,0,5,3,2 59190 DATA"Mini roller",2000,5,400,2,20,1 59200 DATA"Roller",4000,3,500,3,10,1 59210 DATA"Mega roller",9000,2,1000,4,5,2 59220 DATA"Beehive",6000,5,200,1,25,2 59230 DATA"MIRV",7000,3,400,2,20,3 59240 DATA"Mega MIRV",8000,2,500,3,10,3 59250 DATA"Leapfrog",9000,2,500,3,10,3 59260 DATA"Funky Bomb",10000,1,1000,4,5,3 59270 DATA"Plasma Blast",7000,5,100,0,0,3 59280 DATA"Mini Digger",3500,3,0,1,0,2 59290 DATA"Digger",5000,2,0,2,0,2 59300 DATA"Mega Digger",7000,1,0,3,0,2 59310 DATA"Mini Sandhog",5000,3,200,2,0,3 59320 DATA"Sandhog",7000,2,400,3,0,3 59330 DATA"Mega Sandhog",9000,1,1000,4,0,3 59340 DATA"Napalm",7000,10,100,0,0,1 59350 DATA"Hot Napalm",9000,5,200,0,0,2 59351 DATA"Dirt Clod",3000,5,0,3,0,3 59352 DATA"Dirt Ball",6000,3,0,4,0,3 59353 DATA"Ton of Dirt",8000,2,0,5,0,3 59354 DATA"Liquid Dirt",5000,10,0,0,0,3 59355 DATA"Inferno",5000,3,2000,1,0,3 59360 DATA"Parachute",5000,8,0,0,0,0 59370 DATA"Battery",7000,25,100,0,0,1 59380 DATA"Shield I",10000,5,100,0,0,2 59390 DATA"Shield II",12000,4,300,0,0,3 59400 DATA"Shield III",15000,3,500,0,0,3 59410 DATA"Shield IV",20000,2,750,0,0,2 59420 DATA"Shield V",25000,1,1500,0,0,3 59430 DATA"Bal. Guidance",10000,2,0,0,0,1 59440 DATA"Heat Guidance",15000,2,20,0,0,2 59450 DATA"Vert Guidance",17000,2,0,0,0,3 59460 DATA"Horz Guidance",17000,2,0,0,0,3 59470 DATA"Auto Guidance",20000,2,0,0,0,3 59480 DATA"Apogee fuse",1000,10,0,0,0,0 59490 DATA"Alt. fuse",1000,10,0,0,0,0 59500 DATA"Proximity fuse",2000,10,30,0,0,3 59510 DATA"Opt Prox fuse",2500,10,30,0,0,3 59520 DATA"Mobility I",3500,1,10,0,0,0 59530 DATA"Mobility II",10000,1,20,0,0,1 59540 DATA"Mobility III",25000,1,30,0,0,3 59550 DATA"Auto Repair",10000,5,100,0,0,3 60000 DATA"Moron CPU","Idiot CPU","Novice CPU","Good CPU","Excellent CPU","Uncanny CPU" 60010 DATA"Open","Wrap","Solid","Padded","Rubber","Springy","Mutable","Erratic","Spastic" 60020 DATA"Impact","Apogee","Altitude","Proximity","Opt. Prox" 60025 DATA"None","Bal.","Heat","Vert","Horiz","Auto" 60030 DATA0,99,16,2,15,2,5,1,4,2,8,2,7,2,3,3,2,5,1,10,35,1,32,5,0,99,0,99,0,99,0,99,0,99,0,99,0,99,0,99 60040 DATA0,99,5,1,4,1,3,2,2,5,1,10,31,5,32,10,36,1,37,1,0,99,16,1,15,1,0,99,0,99,0,99,0,99,00,99,0,99,0,99 60050 DATA0,99,1,10,2,5,3,2,0,99,31,5,32,10,36,1,37,1,32,5,4,1,5,1,0,99,0,99,0,99,0,99,0,99,0,99,0,99,0,99 60060 DATA0,99,1,10,2,5,3,2,0,99,31,5,32,10,36,1,37,1,32,5,4,1,5,1,0,99,0,99,0,99,0,99,0,99,0,99,0,99,0,99 60070 DATA0,99,1,10,2,5,3,2,0,99,31,5,32,10,36,1,37,1,32,5,4,1,5,1,0,99,0,99,0,99,0,99,0,99,0,99,0,99,0,99 60080 DATA0,99,1,10,2,5,3,2,0,99,31,5,32,10,36,1,37,1,32,5,4,1,5,1,0,99,0,99,0,99,0,99,0,99,0,99,0,99,0,99