Richard Lowe Jr
Richard Lowe Jr Home

College: WIZWAR Program

Prev

Next

I was very proud of this game. I wrote it entirely myself. It was never finished, but the learning experience was very significant.
1	!***************************************************************
	!*      WIZARD WAR                            2-9-79           *
	!*                                                             *
	!*      WRITTEN BY:  RICHARD G. LOWE, JR.                      *
	!*                                                             *
	!*      BASED ON:  WIZARD, COPYRIGHT 1977, BY METAGAMING       *
	!***************************************************************
5	S$=Sys(Chr$(6%)+Chr$(-7%))
9	On Error Goto 30000
10	& Chr$(26%);\
	& Tab(20); "* WIZARD WAR *"\
	Sleep 5\
	& Chr$(26%)\
	& "A GAME OF MAGICAL CONFLICT BETWEEN TWO MIGHTY WIZARDS WHO CAN"\
	& "CREATE REAL AND IMAGINARY BEINGS TO FIGHT FOR THEM, OR ATTACK"\
	& "DIRECTLY WITH AA BOLT OF LIGHTNING!   SUCESSFUL WIZARDS GAIN"\
	& "PRESTIGE AND SKILL...LOSERS DIE!!!!!"\
	Sleep 5\
	& Chr$(26%);
18	Input "WOULD YOU LIKE INSTRUCTIONS (Y OR N)"; B$\
	& Chr$(26%);\
	If B$="N" Then 21
19	OPEN "LP:" AS FILE #1%\
	OPEN "WIZWRI.TXT(2,1)" AS FILE #2%
20	INPUT LINE #2%, B$\
	& #1%, B$;\
	GOTO 20
21	Input "WIZARD #1, WHAT IS YOUR NAME"; F$\
	If F$="" Then 21
23	Input "WIZARD #2, WHAT IS YOUR NAME"; G$\
	If G$="" Then 23
25	Randomize
26	Def FNA(E,F)=Int(E+F*Rnd)
27	& Chr$(26%);\
	& "AND NOW..."\
	Sleep 4\
	& Chr$(26%);
30	Dim A(11,11),A$(10,10),H(100),K(100),T3(100),X(100),Y(100),D$(100)
110	Dim D(10,10),G(10,10)
200	Mat A=Zer(11,11)\
	Mat D=Zer(10,10)\
	Mat G=Zer(10,10)
300	For I=1 to 10\
	  For J=1 to 10\
	    Read A$(I,J)\
	    Restore\
	  Next J\
	Next I
325	O1,O2,O3,O4,O5,O6=0
350	A8=1\
	N=2\
	X9=0\
	T3(1)=0\
	T3(2)=0\
	A(3,3)=1\
	A(8,8)=-1\
	K(1)=1\
	K(2)=5\
	X(1)=3\
	Y(1)=3\
	X(2)=8\
	Y(2)=8\
	D(3,3)=FNA(100,200)\
	D(8,8)=FNA(100,200)\
	G(3,3)=FNA(5,13)\
	G(8,8)=FNA(5,13)
650	& Chr$(26%); "LET THE BATTLE BEGIN!!!!!!"\
	Sleep 4
670	A$(X(1),Y(1))="  "+Left(F$,1%)+Right(F$,Len(F$))\
	A$(X(2),Y(2))="  "+Left(G$,1%)+Right(G$,Len(G$))\
	D$(1)=A$(X(1),Y(1))\
	D$(2)=A$(X(2),Y(2))
675	If A$(X(1),Y(1))=A$(X(2),Y(2)) Then 
	   A$(X(1),Y(1))="   1"\
	   A$(X(2),Y(2))="   2"\
	   F$=F$+" (#1)"\
	   G$=G$+" (#2)"
700	& Chr$(26%); Tab(20); "TURN #"; Num1$(A8)\
	A8=A8+1\
	Sleep 4\
	Gosub 25300
710	For M=1 to N\
	  If D(X(M),Y(M))<1 Then 
	     A$(X(M),Y(M))="   ."\
	     D(X(M),Y(M))=0\
	     G(X(M),Y(M))=0\
	     A(X(M),Y(M))=0
711	Next M
720	N=N-O6
725	O6=0
730	For M=1 to N
750	  If A(X(M),Y(M))=1 Then 
	     Gosub 25503
760	  If A(X(M),Y(M))=-1 Then 
	     Gosub 25552
770	  If D(X(M),Y(M))<1 Then 
	     Let A$(X(M),Y(M))="   ."\
	     Goto 800
780	  If Abs(A(X(M),Y(M)))<>1 Then 
	     Gosub 25700
800	Next M
5000	Goto 700
20000	!CHANGE FACING SUBROUTINE
20005	Input "WHICH DIRECTION DO YOU WANT TO FACE <CR>"; K(M)
20006	If K(M)=0 Then 
	   Gosub 28132
20007	If K(M)<>Int(K(M)) or K(M)<1 or K(M)>8 Then 20005
20010	Return
20015	!MOVE SUBROUTINE
20020	X=X(M)\
	Y=Y(M)\
	Gosub 25085
20042	If Z=11 or Z=0 or W=11 or W=0 Then 
	   Print "YOU CAN'T MOVE OUT OF THE ";\
	   Print "ARENA, STUPID."\
	   Sleep 2\
	   Return
20043	If A(W,Z)<>0 Then 
	   Print "SOMEBODY IS ALREADY IN THAT SPACE."\
	   Sleep 2\
	   Return
20044	If A$(W,Z)="  WL" Then 
	   Print "SORRY, THERE'S A WALL IN FRONT OF YOU."\
	   Sleep 2\
	   Return
20090	A(W,Z)=A(X,Y)\
	A$(W,Z)=A$(X,Y)\
	D(W,Z)=D(X,Y)\
	G(W,Z)=G(X,Y)\
	A(X,Y)=0\
	A$(X,Y)="   ."\
	D(X,Y)=0\
	G(X,Y)=0\
	X(M)=W\
	Y(M)=Z\
	Return
20150	!CAST A SPELL SUBROUTINE
20155	Wait 25
20165	Input "WHAT SPELL DO YOU WANT TO CAST <CR>"; S
20166	If S=0 Then 
	   Gosub 28000
20167	If S=0 Then 20165
20168	If S<>Int(S) or S<1 or S>8 Then 
	   Print "H'MM.  SO YOU DIDN'T WANT TO ";\
	   Print "CAST A SPELL AFTER ALL."\
	   Let D(X(M),Y(M))=D(X(M),Y(M))-5\
	   Sleep 2\
	   Return
20169	A9=FNA(1,18)\
	If A9>G(X(M),Y(M)) Then 
	   Print "SORRY, YOUR SPELL DIDN'T WORK."\
	   D(X(M),Y(M))=D(X(M),Y(M))-5\
	   Sleep 2\
	   Return
20170	On S Goto 20175,20250,20325,20400,20475,20550,20625,20700
20174	!LIGHTNING SUBROUTINE
20175	Input "WHAT IS YOUR TARGET SPACE (ROW#, COLUMN#)"; S1,S2
20176	If S1<1 or S1>10 or S2<1 or S2>10 Then 
	   Return
20177	Input "HOW MUCH POWER WILL BE IN THE SPELL"; S3
20178	If S3>50 Then 
	   Print "THAT'S TOO MUCH POWER, TURKEY!  NOW YOU LOSE ";\
	   Print S3; " POINTS FROM YOUR OWN 'ST'."\
	   Let D(X(M),Y(M))=D(X(M),Y(M))-S3\
	   Sleep 2\
	   Return
20180	If A(S1,S2)=0 Then 
	   Print "IDIOT, THERE'S NOBODY IN THAT SPACE!!!"\
	   Let D(X(M),Y(M))=D(X(M),Y(M))-5\
	   Sleep 2\
	   Return
20185	Q=S1-X(M)\
	R=S2-X(M)\
	M1=Int(Sqr(Q*Q+R*R))\
	If M1>5 Then 
	   Print "YOU'RE MORE THAN 5 SPACES AWAY, STUPID."\
	   D(X(M),Y(M))=D(X(M),Y(M))-5\
	   Sleep 2\
	   Return
20205	D(S1,S2)=D(S1,S2)-Int(S3-M1)\
	D(X(M),Y(M))=D(X(M),Y(M))-(M1+S3)\
	Return
20249	!CLUMSINESS SUBROUTINE
20250	Input "TARGET SPACE (ROW#, COLUMN#)"; S1,S2
20251	If S1<1 or S1>10 or S2<1 or S2>10 Then 
	   Return
20255	If A(S1,S2)=0 Then 
	   Print "THERE'S NOBODY THERE, STUPID!"\
	   Let D(X(M),Y(M))=D(X(M),Y(M))-5\
	   Sleep 2\
	   Return
20260	G(S1,S2)=G(S1,S2)-1\
	D(X(M),Y(M))=D(X(M),Y(M))-5\
	Return
20324	!AID SUBROUTINE
20325	Input "TARGET SPACE (ROW#, COLUMN#)"; S1,S2
20326	If S1<1 or S1>10 or S2<1 or S2>10 Then 
	   Return
20330	If A(S1,S2)=0 Then 
	   Print "THERE'S NOBODY THERE, YOU IMBECILE!"\
	   Let D(X(M),Y(M))=D(X(M),Y(M))-5\
	   Sleep 2\
	   Return
20335	G(S1,S2)=G(S1,S2)+1\
	D(X(M),Y(M))=D(X(M),Y(M))-5\
	Return
20399	!CONTROL ANIMAL SUBROUTINE
20400	Input "TARGET SPACE (ROW#, COLUMN#)"; S1,S2
20401	If S1<1 or S1>10 or S2<1 or S2>10 Then 
	   Return
20405	If Abs(A(S1,S2))=1 Then 
	   Print "HEY, YOU CAN'T USE THIS SPELL AGAINST ";\
	   Print "A WIZARD!"\
	   Let D(X(M),Y(M))=D(X(M),Y(M))-5\
	   Sleep 2\
	   Return
20410	If A(S1,S2)=0 Then 
	   Print "ARE YOU TOTALLY STUPID.  THERE'S NOBODY IN ";\
	   Print "THAT SPACE."\
	   Let D(X(M),Y(M))=D(X(M),Y(M))-5\
	   Sleep 2\
	   Return
20415	Let A(S1,S2)=A(S1,S2)*-1
20420	Let D(X(M),Y(M))=D(X(M),Y(M))-5
20430	Return
20475	!INVISIBILITY SUBROUTINE
20478	A9=FNA(1,18)\
	If A9>G(X(M),Y(M)) Then 
	   Print "SORRY, YOU FAILED TO BECOME INVISIBLE."\
	   D(X(M),Y(M))=D(X(M),Y(M))-7\
	   Sleep 2\
	   Return
20481	If T3(M)=1 Then 
	   Let T3(M)=0\
	   Goto 20483
20482	If T3(M)=0 Then 
	   Let T3(M)=1
20483	Let D(X(M),Y(M))=D(X(M),Y(M))-7
20484	If T3(M)=0 Then 20490
20485	Let A$(X(M),Y(M))="   ."
20487	If T3(M)=1 Then 
	   Return
20490	Let A$(X(M),Y(M))=D$(M)
20545	Return
20550	!CAST ILLUSION SUBROUTINE
20552	A9=FNA(1,18)\
	If A9>G(X(M),Y(M)) Then 
	   Print "SORRY, YOU FAILED IN YOUR ATTEMPT ";\
	   Print "CAST AN ILLUSION."\
	   D(X(M),Y(M))=D(X(M),Y(M))-2\
	   Sleep 2\
	   Return
20555	Gosub 23650
20590	Let D(X(M),Y(M))=D(X(M),Y(M))-(S4+5)
20600	Return
20625	!CAST IMAGE SUBROUTINE
20638	A9=FNA(1,18)\
	If A9>G(X(M),Y(M)) Then 
	   Print "SORRY, YOU FAILED IN YOUR ATTEMPT ";\
	   Print "TO CAST AN IMAGE."\
	   D(X(M),Y(M))=D(X(M),Y(M))-2\
	   Sleep 2\
	   Return
20645	Gosub 23650
20652	D(S1,S2)=1\
	D(X(M),Y(M))=D(X(M),Y(M))-S4\
	Return
20699	!CREATE WALL SUBROUTINE
20700	Gosub 25085
20702	If W=11 or W=0 or Z=11 or Z=0 Then 
	   Print "YOU DUMMY, YOU CAN'T PUT A ";\
	   Print "WALL OUTSIDE THE ARENA!!!"\
	   Let D(X(M),Y(M))=D(X(M),Y(M))-10\
	   Sleep 2\
	   Return
20704	If A(W,Z)<>0 Then 
	   Print "YOU SLY DEVIL.  YOU KNOW DARN WELL THERE'S ";\
	   Print "ALREADY SOMEONE IN THAT SPACE."\
	   Let D(X(M),Y(M))=D(X(M),Y(M))-10\
	   Sleep 2\
	   Return
20708	A9=FNA(1,18)\
	If A9>G(X(M),Y(M)) Then 
	   Print "SORRY, YOU FAILED TO CREATE A WALL."\
	   D(X(M),Y(M))=D(X(M),Y(M))-10\
	   Sleep 2\
	   Return
20710	D(X(M),Y(M))=D(X(M),Y(M))-10\
	A$(W,Z)="  WL"\
	Return
21000	!SUMMON A CREATURE SUBROUTINE
21015	A9=FNA(1,18)\
	If A9>G(X(M),Y(M)) Then 
	   Print "SORRY, YOUR SUMMONING DIDN'T WORK."\
	   D(X(M),Y(M))=D(X(M),Y(M))-5\
	   Sleep 2\
	   Return
21040	Gosub 23650
21050	If A(X(M),Y(M))=1 Then 
	   A(S1,S2)=A(S1,S2)-10
	Else
	   A(S1,S2)=A(S1,S2)+10
21070	If O6=0 Then 
	   D(X(M),Y(M))=D(X(M),Y(M))-(S4+10)
21100	Return
21500	!DISBELIEVE SUBROUTINE
21505	Input "WHICH SPACE DO YOU WANT TO DISBELIEVE (ROW#, COLUMN#)"; S1,S2
21506	If S1>10 or S1<1 or S2>10 or S2<1 Then 
	   Return
21510	If Abs(A(S1,S2))<10 Then 
	   Print "SORRY, THIS CREATURE IS FLESH AND ";\
	   Print "BLOOD: NOT AN ILLUSION OR IMAGE."\
	   Let D(X(M),Y(M))=D(X(M),Y(M))-5\
	   Sleep 2\
	   Return
21511	If A(S1,S2)=0 Then 
	   Print "THERE'S NOBODY IN THAT SPACE!"\
	   Let D(X(M),Y(M))=D(X(M),Y(M))-5\
	   Sleep 2\
	   Return
21512	If A$(S1,S2)="  WL" Then 
	   Print "SORRY CHUMP, YOU CAN'T DO THAT TO A ";\
	   Print "WALL."\
	   Sleep 2\
	   Return
21515	A(S1,S2)=0\
	D(S1,S2)=0\
	G(S1,S2)=0\
	A$(S1,S2)="   ."\
	O6=O6+1
22000	!EMERGANCY TELEPORT SUBROUTINE
22005	Let S1=FNA(1,9)
22010	Let S2=FNA(1,9)
22012	If A(S1,S2)=0 Then 22020
22013	Print "SORRY, ";
22014	If A(X(M),Y(M))=1 Then 
	   Print F$;
	Else
	   Print G$;
22015	Print "YOU,VE TELEPORTED FOR THE LAST TIME."\
	Goto 30020
22020	V$=A$(X(M),Y(M))\
	V1=A(X(M),Y(M))\
	V2=D(X(M),Y(M))\
	V3=G(X(M),Y(M))\
	A$(X(M),Y(M))="   ."\
	A(X(M),Y(M))=0\
	D(X(M),Y(M))=0\
	G(X(M),Y(M))=0\
	X(M)=S1\
	Y(M)=S2\
	A$(X(M),Y(M))=V$\
	A(X(M),Y(M))=V1\
	D(X(M),Y(M))=V2\
	G(X(M),Y(M))=V3\
	D(X(M),Y(M))=D(X(M),Y(M))-10\
	Return
22500	!DESTROY CREATION SUBROUTINE
22504	A9=FNA(1,18)\
	If A9>G(X(M),Y(M)) Then 
	   Print "SORRY, YOU FAILED TO DESTROY THAT ";\
	   Print "CREATURE."\
	   D(X(M),Y(M))=D(X(M),Y(M))-5\
	   Sleep 2\
	   Return
22505	Input "WHICH SPACE DO YOU WANT TO DESTROY (ROW#, COLUMN#)"; S1,S2
22508	If S1>10 or S1<1 or S2>10 or S2<1 Then 
	   Return
22509	If A$(S1,S2)="  WL" Then 
	   Print "THERE'S A WALL IN THAT SPACE."\
	   Sleep 2\
	   Return
22510	If Abs(A(S1,S2))=1 Then 
	   Print "YOU CAN'T DESTROY A WIZARD THAT WAY, ";\
	   Print "STUPID!!!"\
	   Let D(X(M),Y(M))=D(X(M),Y(M))-10\
	   Sleep 2\
	   Return
22511	If A(S1,S2)>10 Then 
	   Print "THAT'S NOT A CREATION, IT'S AN IMAGE OR ";\
	   Print "ILLUSION."\
	   Let D(X(M),Y(M))=D(X(M),Y(M))-10\
	   Sleep 2\
	   Return
22512	If A(S1,S2)=0 Then 
	   Print "THERE'S NOBODY IN THAT SPACE."\
	   Let D(X(M),Y(M))=D(X(M),Y(M))-10

22515	Let A(S1,S2)=0
22520	Let D(S1,S2)=0
22525	Let G(S1,S2)=0
22530	Let A$(S1,S2)="   ."
22540	Let D(X(M),Y(M))=D(X(M),Y(M))-3
22545	Let O6=O6+1
22550	Return
23000	!COMBAT SUBROUTINE
23003	Gosub 25085
23004	If W=0 or W=11 or Z=0 or Z=11 Then 
	   Print "FORGIVE ME, MASTER, ";\
	   Print "I'M NOT ENGAGED."\
	   Sleep 2\
	   Return
23005	If A(W,Z)=0 Then 
	   Print "I'M SORRY, MASTER, I'M NOT ENGAGED."\
	   Sleep 2\
	   Return
23025	Let T1=FNA(1,9)
23030	On T1 Gosub 23035,23040,23045,23050,23055,23060,23065,23070,23075
23032	Return
23035	& "SWISH!  I MISSED COMPLETELY!"\
	Sleep 2\
	Return
23040	& "SPANG!  HIS ARMOUR TOOK IT!"\
	Sleep 2\
	Return
23045	& "SKRANG!  HE PARRIED IT!"\
	Sleep 2\
	Return
23050	& "SWISH!  A CLEAN MISS!"\
	Sleep 2\
	Return
23055	& "WOW!  I HURT HIM CLEAR THROUGH HIS ARMOUR!"\
	Sleep 2\
	Goto 23080
23060	& "SLIP!  I FOUND THAT CHINK IN HIS ARMOUR!"\
	Sleep 2\
	Goto 23080
23065	& "I REALLY HURT HIM THAT TIME!  HE'S BLEADING BAD!"\
	Sleep 2\
	Goto 23080
23070	& "WOW!  THAT MUST'VE HURT!  I TAGGED HIS SWORD ARM!"\
	Sleep 2\
	Goto 23080
23075	& "HE MUST REALLY BE IN PAIN!  HIS BLOOD IS DRIPPING ON THE GROUND!"\
	Sleep 2\
	Goto 23080
23080	Let D(W,Z)=D(W,Z)-H(M)
23100	If D(W,Z)<1 Then 
	   & "HE'S DEAD, MASTER."\
	   A(W,Z)= 0\
	   A$(W,Z)="   ."\
	   D(W,Z)=0\
	   G(W,Z)=0\
	   O6=O6+1
23104	Sleep 2
23105	Return
23649	!CREATE A CREATURE SUBROUTINE
23650	Input "WHAT CREATURE DO YOU WANT <CR>"; S
23651	If S=0 Then 
	   Gosub 28104
23652	If S=0 Then 23650
23653	If S<0 or S>5 or S<>Int(S) Then 
	   Let S=FNA(1,5)
23665	S1=FNA(1,9)\
	S2=FNA(1,9)\
	If A(S1,S2)<>0 Then 23665
23670	N=N+1
23675	On S Gosub 24050,24100,24150,24200,24250
23680	X(N)=S1\
	Y(N)=S2\
	If A(X(M),Y(M))=1 Then 
	   K(N)=1
	Else
	   K(N)=5
23685	Return
23750	!DELIVER KILLING BLOW TO WIZARD
23755	Gosub 25085
23756	If W=0 or W=11 or Z=0 or Z=11 Then 
	   Return
23765	If Abs(A(W,Z))<>1 Then 
	   Print "YOU IDIOT, THERE'S NOT A WIZARD IN ";\
	   Print "SIGHT."\
	   Sleep 2\
	   Return
23770	Print "SORRY, ";
23775	If A(W,Z)=-1 Then 
	   Print G$;
	Else
	   Print F$;
23776	Print ", YOU LOSE.  WE'LL NOTIFY YOUR FAMILY."
23778	&\
	&\
	&
23780	Goto 30020
24050	A$(S1,S2)="  W"+Num1$(O1+1)
24055	If A(X(M),Y(M))=1 Then 
	   A(S1,S2)=12
	Else
	   A(S1,S2)=-12
24060	D(S1,S2)=FNA(5,7)\
	G(S1,S2)=FNA(15,15)\
	H(N)=12\
	S4=3\
	O1=O1+1\
	D$(N)="WOLF #"+Num1$(O1)\
	Return
24100	A$(S1,S2)="  M"+Num1$(O2+1)
24105	If A(X(M),Y(M))=1 Then 
	   A(S1,S2)=13
	Else
	   A(S1,S2)=-13
24110	D(S1,S2)=FNA(5,15)\
	G(S1,S2)=FNA(5,15)\
	H(N)=15\
	S4=4\
	O2=O2+1\
	D$(N)="MYRMIDON #"+Num1$(O2)\
	Return
24150	A$(S1,S2)="  B"+Num1$(O3+1)
24155	If A(X(M),Y(M))=1 Then 
	   A(S1,S2)=14
	Else
	   A(S1,S2)=-14
24160	D(S1,S2)=FNA(10,20)\
	G(S1,S2)=FNA(10,20)\
	H(N)=16\
	S4=10\
	O3=O3+1\
	D$(N)="BEAR #"+Num1$(O3)\
	Return
24200	A$(S1,S2)="  G"+Num1$(O4+1)
24205	If A(X(M),Y(M))=1 Then 
	   A(S1,S2)=15
	Else
	   A(S1,S2)=-15
24210	D(S1,S2)=FNA(30,30)\
	G(S1,S2)=FNA(5,15)\
	H(N)=20\
	S4=35\
	O4=O4+1\
	D$(N)="GIANT #"+Num1$(O4)\
	Return
24250	A$(S1,S2)="  S"+Num1$(O5+1)
24255	If A(X(M),Y(M))=1 Then 
	   A(S1,S2)=16
	Else
	   A(S1,S2)=-16
24260	D(S1,S2)=FNA(10,10)\
	G(S1,S2)=FNA(20,25)\
	H(N)=14\
	S4=10\
	O5=O5+1\
	D$(N)="SNAKE #"+Num1$(O5)\
	Return
25085	!MOVE SUBROUTINE
25090	Let X=X(M)
25095	Let Y=Y(M)
25100	On K(M) Goto 25110,25115,25120,25125,25130,25135,25140,25145
25110	Let W=X+1\
	Z=Y+1\
	Goto 25150
25115	Let W=X\
	Z=Y+1\
	Goto 25150
25120	Let W=X-1\
	Z=Y+1\
	Goto 25150
25125	Let W=X-1\
	Z=Y\
	Goto 25150
25130	Let W=X-1\
	Z=Y-1\
	Goto 25150
25135	Let W=X\
	Z=Y-1\
	Goto 25150
25140	Let W=X+1\
	Z=Y-1\
	Goto 25150
25145	Let W=X+1\
	Z=Y
25150	Return
25200	!MAT PRINT SUBROUTINE
25205	Print "       1   2   3   4   5   6   7   8   9  10"
25210	For I=1 to 10
25215	  If I<10 Then 
	     Print " "; I;
	  Else
	     Print I;
25220	  For J=1 to 10
25225	    Print A$(I,J);
25230	  Next J
25235	  Print\
	  Print
25240	Next I
25245	Return
25300	!SORTING SUBROUTINE
25305	Let R8=0
25310	For M=1 to N
25315	  If G(X(M),Y(M))>=G(X(M+1),Y(M+1)) Then 25415
25320	U1=X(M+1)\
	U2=Y(M+1)\
	U3=H(M+1)\
	U4=K(M+1)\
	U5=T3(M+1)\
	M$=D$(M+1)\
	X(M+1)=X(M)\
	Y(M+1)=Y(M)\
	H(M+1)=H(M)\
	K(M+1)=K(M)\
	T3(M+1)=T3(M)\
	D$(M+1)=D$(M)\
	X(M)=U1\
	Y(M)=U2\
	H(M)=U3\
	K(M)=U4\
	T3(M)=U5\
	D$(M)=M$\
	R8=R8+1
25415	Next M
25420	If R8>0 Then 25305
25430	Return
25503	If D(X(M),Y(M))<1 Then 
	   & "SORRY, "; F$; " YOU LOSE."+
	   " WE'LL INFORM YOUR FAMILY."\
	   Goto 30020
25525	Goto 25603
25552	If D(X(M),Y(M))<1 Then 
	   Print "SORRY, "; G$; ", YOU LOSE.";\
	   Print " WE'LL INFORM YOUR FAMILY."\
	   Goto 30020
25603	Gosub 25670
25604	Wait 25
25605	Input "DO YOU WANT TO CHANGE YOUR FACING <CR>"; B$
25606	If B$="" Then 
	   Gosub 28132
25607	If B$="" Then 25605
25610	If Left(B$,1%)="Y" Then 
	   Gosub 20000
25611	Gosub 25670
25614	Wait 25
25615	Input "DO YOU WANT TO MOVE"; B$
25620	If Left(B$,1%)="Y" Then 
	   Gosub 20015
25621	Gosub 25670
25634	Wait 25
25635	Input "YOUR COMMAND <CR>"; T
25637	If T=0 Then 
	   Gosub 28040
25638	If T=0 Then 25634
25640	If T<>Int(T) or T<1 or T>6 Then 
	   Return
25650	On T Gosub 20150,21000,21500,22000,20015,22500
25651	If D$(M)="  "+Left(F$,1%)+Right(F$,Len(F$)) and D(X(M),Y(M))<1
	Then 
	   & "SORRY "; F$; ", YOU LOSE.  WE'LL INFORM YOUR FAMILY."\
	   & For X9=1 to 9\
	   Goto 30020
25652	If D$(M)="  "+Left(G$,1%)+Right(G$,Len(G$)) and D(X(M),Y(M))<1
	Then 
	   & "SORRY "; G$; ", YOU LOSE. WE'LL INFORM YOUR FAMILY."\
	   & For X9=1 to 9\
	   Goto 30020
25655	Return
25670	!WIZARD'S TURN SUBROUTINE PART 2
25672	& Chr$(26%);
25673	Gosub 25200
25674	If Abs(A(X(M),Y(M)))<>1 Then 
	   Print "I AM "; D$(M); Space$(5%);\
	   Print "I BELONG TO ";
25675	If A(X(M),Y(M))>=1 Then 
	   Print F$;
	Else
	   Print G$;
25676	If Abs(A(X(M),Y(M)))<>1 Then 
	   Print
25680	If Abs(A(X(M),Y(M)))=1 Then 
	   Print Space$(5%);
25681	Print "FACING:"; K(M); Space$(5%);\
	Print "DX:"; G(X(M),Y(M)); Space$(5%);\
	Print "ST:"; D(X(M),Y(M))
25690	Return
25700	!CHARACTERS TURN SUBROUTINE
25715	Gosub 25670
25719	Wait 25
25720	Input "MASTER, AM I TO CHANGE MY FACING"; B$
25722	If B$="" Then 
	   Gosub 28132
25723	If B$="" Then 25719
25725	If Left(B$,1%)="Y" Then 
	   Gosub 20000
25726	Gosub 25670
25729	Wait 25
25730	Input "MASTER, AM I TO MOVE"; B$
25735	If Left(B$,1%)="Y" Then 
	   Gosub 20015
25740	Gosub 25670
25749	Wait 25
25750	Input "MASTER, YOUR COMMAND <CR>"; T
25752	If T=0 Then 
	   Gosub 28072
25753	If T=0 Then 25749
25755	If T<0 or T>6 or T<>Int(T) Then 
	   Return
25760	On T Gosub 20015,23000,23000,23000,21500,23750
25767	Print For X9=1 to 15
25770	Return
28000	& Chr$(26%);
	!LIST OF SPELLS SUBROUTINE
28001	& Tab(10); "0)  PRINT THIS LIST"\
	& Tab(10); "1)  LIGHTNING"\
	& Tab(10); "2)  CLUMSINESS"\
	& Tab(10); "3)  AID"\
	& Tab(10); "4)  CONTROL ANIMAL"\
	& Tab(10); "5)  INVISIBILITY"\
	& Tab(10); "6)  CAST ILLUSION"\
	& Tab(10); "7)  CAST IMAGE"\
	& Tab(10); "8)  CREATE WALL"\
	& For X9=1 to 15\
	Sleep 5\
	Goto 25670
28040	& Chr$(26%);
	!LIST OF WIZARDS COMMANDS SUBROUTINE
28041	& Tab(10); "0)  PRINT THIS LIST"\
	& Tab(10); "1)  CAST A SPELL"\
	& Tab(10); "2)  SUMMON A CREATURE"\
	& Tab(10); "3)  DISBELIEVE"\
	& Tab(10); "4)  EMERGANCY TELEPORT"\
	& Tab(10); "5)  MOVE AGAIN"\
	& Tab(10); "6)  DESTROY CREATION"\
	& For X9=1 to 15\
	Sleep 5\
	Goto 25670
28072	& Chr$(26%);
	!LIST OF CREATURE COMMANDS SUBROUTINE
28073	& Tab(10); "0)  PRINT THIS LIST"\
	& Tab(10); "1)  MOVE AGAIN"\
	& Tab(10); "2)  STRIKE HIGH"\
	& Tab(10); "3)  STRIKE MID"\
	& Tab(10); "4)  STRIKE LOW"\
	& Tab(10); "5)  DISBELIEVE"\
	& Tab(10); "6)  DELIVER KILLING BLOW TO WIZARD"\
	& For X9=1 to 15\
	Sleep 5\
	Goto 25670
28104	& Chr$(26%);
	!LIST OF CREATURES SUBROUTINE
28108	& Tab(10); "0)  PRINT THIS LIST"\
	& Tab(10); "1)  WOLF        (COST: +3)"\
	& Tab(10); "2)  MYRMIDON    (COST: +4)"\
	& Tab(10); "3)  BEAR        (COST: +10)"\
	& Tab(10); "4)  GIANT       (COST: +35)"\
	& Tab(10); "5)  SNAKE       (COST: +10)"\
	& For X9=1 to 15\
	Sleep 5\
	Goto 25670
28132	& Chr$(26%);
	!FACING INSTRUCTIONS SUBROUTINE
28134	&\
	& Tab(22); " 5   4   3"\
	&\
	& Tab(22); " 6"; A$(X(M),Y(M)); "   2"\
	&\
	& Tab(22); " 7   8   1"\
	&\
	& "MOVEMENT WILL BE ONE SPACE IN THE DIRECTION YOU FACE."\
	& For X9=1 to 15\
	Sleep 5\
	Goto 25670
30000	If ERR=28 Then 
	   Input "DO YOU REALLY WANT OUT"; B$\
	   S$=Sys(Chr$(6%)+Chr$(-7))\
	   If Left(B$,1%)="N" Then 
	      Resume
	   Else 30020
30001	IF ERR<>15 THEN 30004
30002	Print "SORRY TURKEY, YOU TOOK TOO LONG!!!!!!"\
	Sleep 2
30003	If ERL=25605 Then 
	   Resume 25611
	Else
	   If ERL=25615 Then 
	      Resume 25621
	   Else
	      If ERL=25635 Then 
	         Resume 25655
	      Else
	         If ERL=25720 Then 
	            Resume 25726
	         Else
	            If ERL=25730 Then 
	               Resume 25740
	            Else
	               If ERL=25750 Then 
	                  Resume 25767
	               Else
	                  If ERL=20165 Then 
	                     Resume 25655
30004	IF ERR=11 AND ERL=20 THEN RESUME 21 ELSE IF ERR=11 THEN RESUME 30020
30005	IF ERR=50 THEN & CHR$(13%)+CHR$(11%)\
	  RESUME
30006	IF ERR=14 OR ERR=8 THEN & "DEVICE IS HUNG OR WRITE LOCKED."\
	  & "PLEASE PUT ON LINE AND HIT THE CARRIAGE RETURN TO CONTINUE"\
	  INPUT B$\
	  IF B$="" THEN RESUME ELSE 30030
30020	Input "DO YOU WANT A REMATCH"; B$\
	If Left(B$,1%)="Y" Then 200
30030	& Chr$(26%);
30040	Print "WELL, IT WAS NICE PLAYING.  COME AGAIN SOON."
30050	Sleep 4
30060	& Chr$(26%);
32000	Data
	    "   ."
32767	End

Unless otherwise noted, all photos and text is Copyright © Richard G Lowe, Jr.