1 REM Halite v1.20 by Paul Panks - QBasic/PB version 2 E=7:C=11:B=1:R=12:W=15:YL=14:Y=14:P=13:CT=0:LT=0 3 EX=0:HP=100:L=1:GR=10:GD=100:I=1:Z=0:A=0:V=0:N=0:X=0:HM=100 4 DIM U$(80),M(50,6),D$(80),F$(50,2),O(80,1),VB$(25),PE(80),K$(10) 5 COLOR W,B:CLS:FOR X=31 TO 78:O(X,1)=998:NEXT:GOSUB 162:O(79,1)=33 6 COLOR E,B:PRINT"Halite v1.20":COLOR C,B:PRINT"By: Paul Panks":PRINT 7 COLOR W,B:PRINT"A vampire is said to be ravaging the countryside with":PRINT"legions of the undead. The townsfolk have "; 8 PRINT"scattered to the":PRINT"hills, and it is up to you (a noted vampire hunter)":PRINT"to track down this hideously evil being "; 9 PRINT"and slay":PRINT"him with your sword.":PRINT:COLOR Y,B:PRINT"Press ENTER to begin!":COLOR E,B 10 A$=INKEY$:IF A$<>CHR$(13) THEN GOTO 10 11 CLS 12 COLOR E,B:FOR X=1 TO 2:PRINT F$(L,X):NEXT:COLOR W,B:PRINT"Obvious exits: ";:COLOR 6,B:PRINT"< ";:Y=14 13 COLOR Y,B:FOR X=1 TO 6:IF M(L,X)>0 THEN PRINT U$(X)" "; 14 NEXT:COLOR 6,B:PRINT">":COLOR R,B:FOR X=7 TO 79:IF O(X,1)=L THEN PRINT U$(X) 15 NEXT:COLOR W,B:GOSUB 153:IF I=16 THEN I=0:GOSUB 159:COLOR Y,B:PRINT K$(I) 16 GOSUB 160:COLOR 6,B:PRINT">";:A$="":V=0:N=0:V$="":N$="":COLOR GR,B:INPUT "",A$:COLOR W,B:IF LEFT$(A$,4)="rest" AND L<>3 THEN PRINT"You can't rest here.":GOTO 16 17 IF A$="n" OR A$="go north" OR A$="north" THEN N=1:GOTO 50 18 IF A$="s" OR A$="go south" OR A$="south" THEN N=2:GOTO 50 19 IF A$="e" OR A$="go east" OR A$="east" THEN N=3:GOTO 50 20 IF A$="w" OR A$="go west" OR A$="west" THEN N=4:GOTO 50 21 IF A$="u" OR A$="go up" OR A$="up" THEN N=5:GOTO 50 22 IF A$="d" OR A$="go down" OR A$="down" THEN N=6:GOTO 50 23 IF A$="l" OR A$="look" THEN GOTO 12 24 IF A$="q" OR A$="quit" OR A$="bye" OR A$="exit" THEN COLOR W,B:CLS:PRINT"Thanks for playing! :)":END 25 IF A$="i" OR A$="inv" OR A$="inventory" THEN GOTO 40 26 IF A$="?" OR A$="sc" OR A$="score" THEN GOTO 47 27 IF A$="help" THEN GOTO 58:ELSE IF A$="examine hut" THEN IF L=33 THEN COLOR E,B:PRINT"hut: this hut is fairly simple. Nothing special.":GOTO 16 28 S=1: Z=0:IF A$="list" AND L=5 THEN GOTO 108 29 XL$=A$:FOR A=1 TO LEN(XL$) 30 IF MID$(XL$,A,1)=" " THEN A$=MID$(XL$,S,A-S):S=A+1:Z=Z+1:WD$(Z)=A$ 31 NEXT:Z=Z+1:A$=MID$(XL$,S,A-S): WD$(Z)=A$:IF Z>5 THEN COLOR W,B:PRINT"Command is too complex. Please try again.":GOTO 16 32 V$=WD$(1):N$=WD$(2):IF WD$(3)="and" OR WD$(3)="then" THEN COLOR W,B:PRINT"No 'and' with 'then' allowed.":GOTO 16 33 BG=0:IF WD$(3)="in" OR WD$(3)="from" OR WD$(3)="to" THEN V$=WD$(1):N$=WD$(2):BG=1 34 IF LEFT$(XL$,4)="rest" AND L=3 THEN HP=HM:COLOR W,B:PRINT"You rest for awhile and feel refreshed!":GOTO 16 35 V=0:N=0:FOR X=1 TO 16:IF WD$(1)=VB$(X) OR WD$(3)=VB$(X) THEN V=X:X=16 36 NEXT:FOR X=1 TO 80:IF WD$(2)=U$(X) OR WD$(4)=U$(X) THEN N=X:X=80 37 NEXT:IF V=0 THEN IF V<>11 AND V<>13 AND V<>15 AND V<>16 THEN COLOR W,B:PRINT"What?":GOTO 16 38 ON V GOTO 64,65,69,71,73,75,77,79,90,94,97,103,104,105,105,105 39 COLOR W,B:PRINT"What?":GOTO 16 40 COLOR W,B:PRINT"You are carrying:":S=0:FOR X=1 TO 25 41 IF O(X,1)=0 AND X=7 THEN IF LT=1 THEN COLOR E,B:PRINT U$(X)" ";:COLOR YL,B:PRINT"(lit)";:COLOR E,B:PRINT".":S=1:X=8 42 IF O(X,1)=0 THEN COLOR E,B:PRINT U$(X)".":S=1 43 IF O(X,1)=105 THEN COLOR C,B:PRINT U$(X);" ";:COLOR R,B:PRINT"(wielded)";:COLOR C,B:PRINT".":S=1 44 IF O(X,1)=205 THEN COLOR GR,B:PRINT U$(X);" ";:COLOR P,B:PRINT"(worn)";:COLOR GR,B:PRINT".":S=1 45 NEXT:IF S=0 THEN COLOR R,B:PRINT"Nothing!" 46 GOTO 16 47 COLOR C,B:PRINT"You are carrying";:COLOR E,B:PRINT GD;:COLOR C,B:PRINT"gold coins and " 48 COLOR C,B:PRINT"have";:COLOR E,B:PRINT EX;:COLOR C,B:PRINT"experience points.":PRINT"You have";:COLOR E,B:PRINT HP; 49 COLOR C,B:PRINT"of";:COLOR E,B:PRINT HM;:COLOR C,B:PRINT"hit points.":GOTO 16 50 IF M(L,N)=0 THEN COLOR W,B:PRINT"You can't go that way!":GOTO 16 51 IF O(21,1)=L AND N=2 THEN COLOR R,B:PRINT"The goblin hisses,'You may not pass!'":GOTO 16 52 IF O(24,1)=L AND N=3 THEN COLOR R,B:PRINT"The werewolf growls,'No one shall enter here!'":GOTO 16 53 IF N=3 AND L=31 AND LK=0 THEN COLOR W,B:PRINT"The door is locked.":GOTO 16 54 IF N=3 AND L=31 AND LK=1 THEN COLOR E,B:PRINT"The pass through the doorway..." 55 IF N=2 AND L=11 THEN IF LT=0 OR O(7,1)<>0 OR LT=1 AND O(7,1)<>0 THEN COLOR R,B:PRINT"It's much too dark!":GOTO 16 56 IF N=2 AND L=11 AND LT=0 THEN COLOR R,B:PRINT"It's much too dark!":GOTO 16 57 L=M(L,N):GOTO 12 58 COLOR W,B:PRINT:PRINT"Help Commands":PRINT:COLOR E,B:PRINT"This game is a text adventure. You play by entering" 59 PRINT"in one or two word commands as follows:":PRINT:COLOR GR,B 60 PRINT"go west":PRINT"wield sword":PRINT"unwield sword":PRINT"wear armor":PRINT"remove armor" 61 PRINT"buy cloak":PRINT"sell cloak":PRINT"examine ring":PRINT"use rope":PRINT"kill goblin":PRINT"climb tree" 62 PRINT"light lantern":PRINT"enter cave":PRINT"inventory (or 'i')":PRINT"score":PRINT"quit":PRINT 63 GOTO 16 64 COLOR W,B:PRINT"What?":GOTO 16 65 IF N<>0 AND N>6 AND N<21 THEN GOTO 67 66 COLOR W,B:PRINT"You can't take that.":GOTO 16 67 IF O(N,1)=L THEN O(N,1)=0:COLOR W,B:PRINT U$(N)":taken.":GOTO 16 68 GOTO 66 69 IF O(N,1)=0 THEN O(N,1)=L:COLOR W,B:PRINT U$(N)":dropped.":GOTO 16 70 COLOR W,B:PRINT"You can't drop that.":GOTO 16 71 IF O(N,1)=0 AND WD=0 AND N>10 AND N<15 THEN O(N,1)=105:WD=1:DM=N:COLOR W,B:PRINT"Wielded.":GOTO 16 72 COLOR W,B:PRINT"You can't wield that.":GOTO 16 73 IF O(N,1)=105 AND WD=1 AND N>10 AND N<15 THEN O(N,1)=0:WD=0:DM=1:COLOR W,B:PRINT"Unwielded.":GOTO 16 74 COLOR W,B:PRINT"You can't unwield that.":GOTO 16 75 IF O(N,1)=0 AND N>14 AND N<21 THEN O(N,1)=205:AC=AC+N:COLOR W,B:PRINT"Worn.":GOTO 16 76 COLOR W,B:PRINT"You can't wear that.":GOTO 16 77 IF O(N,1)=205 AND N>14 AND N<21 THEN O(N,1)=0:AC=AC-N:COLOR W,B:PRINT"Removed.":GOTO 16 78 COLOR W,B:PRINT"You can't remove that.":GOTO 16 79 IF O(N,1)=0 OR N>30 THEN GOTO 81 80 COLOR W,B:PRINT"That isn't useful here.":GOTO 16 81 IF V=13 THEN IF O(7,1)=0 THEN IF N=31 OR N=53 OR A$="light tree" THEN COLOR W,B:PRINT"The ";N$;" bursts into flames.":D$(N)="the "+N$+" is on fire.":GOTO 16 82 IF N=9 THEN IF L=13 THEN COLOR C,B:PRINT"You use the rope and climb up...":L=33:GOTO 12 83 IF N=7 THEN IF O(10,1)=0 AND LT=0 THEN LT=1:COLOR W,B:PRINT"The lantern is now on.":D$(7)="the brass lantern is glowing.":GOTO 16 84 IF N=7 THEN IF O(10,1)<>0 THEN COLOR W,B:PRINT"The lantern requires a source of fuel.":GOTO 16 85 IF N=10 THEN COLOR W,B:PRINT"The oil cannot be used by itself.":GOTO 16 86 IF N=8 THEN IF L=31 AND LK=0 THEN LK=1:COLOR W,B:PRINT"Click! The door is now unlocked.":GOTO 16 87 IF N=8 THEN IF L=31 AND LK=1 THEN COLOR W,B:PRINT"The door is already unlocked.":GOTO 16 88 IF N=7 THEN COLOR W,B:PRINT "The lantern is already on.":GOTO 16 89 GOTO 80 90 IF O(23,1)<>L THEN COLOR W,B:PRINT"The clerk isn't here.":GOTO 16 91 IF O(N,1)<>999 THEN COLOR C,B:PRINT"The clerk says,'I don't have that in stock.'":GOTO 16 92 IF GD20 OR N<7 THEN COLOR C,B:PRINT"The clerk says,'You don't have enough gold.'":GOTO 16 93 O(N,1)=0:GD=GD-PE(N):COLOR C,B:PRINT"The clerk hands you the "U$(N)".":PRINT"He says,'Thank you.'":GOTO 16 94 IF O(23,1)<>L THEN COLOR W,B:PRINT"The clerk isn't here.":GOTO 16 95 IF O(N,1)<>0 THEN COLOR C,B:PRINT"The clerk says,'You must be carrying that first.'":GOTO 16 96 GD=GD+PE(N)/2:O(N,1)=999:COLOR C,B:PRINT"The clerk says,'Thank you.'":GOTO 16 97 IF N<>0 AND N<31 OR N=79 THEN GOTO 101 98 S=0:FOR X=1 TO 80:IF MID$(F$(L,1),X,3)=LEFT$(U$(N),3) OR MID$(F$(L,2),X,3)=LEFT$(U$(N),3) THEN S=X:X=80 99 NEXT:IF S=0 OR N=0 THEN COLOR W,B:PRINT"What?":GOTO 16 100 COLOR E,B:PRINT U$(N);": ";D$(N):GOTO 16 101 IF O(N,1)<>L AND O(N,1)<>0 AND O(N,1)<>105 AND O(N,1)<>205 THEN COLOR W,B:PRINT"That isn't here.":GOTO 16 102 COLOR E,B:PRINT U$(N);": ";D$(N):GOTO 16 103 GOTO 113 104 GOTO 79 105 IF L=13 THEN IF A$="climb trees" OR A$="climb tree" THEN IF O(9,1)<>0 THEN COLOR W,B:PRINT"You need the rope first.":GOTO 16 106 IF L=13 THEN IF A$="climb trees" OR A$="climb tree" THEN GOTO 82 107 COLOR W,B:PRINT"You don't see a way to ";V$;" ";N$;".":GOTO 16 108 IF L<>5 THEN COLOR W,B:PRINT"The clerk isn't here.":GOTO 16 109 S=0:FOR X=7 TO 30:IF O(X,1)=999 THEN COLOR E,B:PRINT PE(X)": ";U$(X):S=1 110 NEXT:IF S=0 THEN COLOR C,B:PRINT"The clerk says,'I am out of stock.'":GOTO 16 111 COLOR GR,B:PRINT "Gold: ";:COLOR YL,B:PRINT GD 112 COLOR C,B:PRINT"The clerk says,'Take your time.'":GOTO 16 113 COLOR W,B:IF O(N,1)<>L THEN PRINT"That isn't here.":GOTO 16 114 IF N<21 OR N>30 AND N<>79 THEN PRINT"You can't kill that.":GOTO 16 115 GOSUB 156 116 GOSUB 153:COLOR W,B:PRINT">":COLOR E,B:PRINT"You attack:":COLOR W,B:IF I<6 THEN PRINT"Alas, you missed the ";U$(N)"..." 117 IF I>5 AND I<10 THEN PRINT"You hit ";U$(N);" hard.":DT=DM+1:M=M-DT 118 IF I>9 AND I<15 THEN COLOR C,B:PRINT"AMAZING BLOW!":PRINT"You destroyed ";U$(N);"!":DT=DM*3:M=M-DT 119 IF I>14 AND I<20 THEN COLOR GR,B:PRINT"A THOR-LIKE BLOW!":PRINT"You crushed ";U$(N);" into atoms!":DT=DM*5:M=M-DT 120 IF I>19 AND I<25 THEN COLOR YL,B:PRINT"The ";U$(N);" deflected your blow." 121 IF I>24 AND I<29 THEN COLOR W,B:PRINT"The ";U$(N);" dodged your attack." 122 IF O(15,1)=205 THEN IF I>8 AND I<15 THEN COLOR YL,B:PRINT"Your RING pulsates!":COLOR E,B:PRINT"The ";U$(N);" is weakened somewhat.":DT=DM*2:M=M-DT 123 IF O(13,1)=105 THEN IF I>28 AND I<32 THEN COLOR GR,B:PRINT"Your LONGSWORD glows!":COLOR C,B:PRINT"A bolt of lightning hits ";U$(N);"!":DT=DM*4:M=M-DT 124 IF O(17,1)=205 THEN IF I>30 AND I<33 THEN COLOR E,B:PRINT "Your ARMOR feels warm!":COLOR YL,B:PRINT"You regained a few hit points.":HP=HP+I 125 IF I>28 THEN COLOR W,B:PRINT"You grazed the skin of ";U$(N);"...":DT=DM+5:M=M-DT 126 PRINT:COLOR YL,B:PRINT"< Press any key >" 127 A$=INKEY$:IF A$="" THEN GOTO 127 128 GOSUB 153:COLOR W,B:PRINT">":COLOR E,B:PRINT"The ";U$(N);" attacks:":COLOR W,B:IF I<6 THEN PRINT"It missed you..." 129 IF I>5 AND I<10 THEN PRINT"The ";U$(N);" hit you very hard.":DT=I*1:DT=DT-AC:HP=HP-ABS(DT) 130 IF I>9 AND I<15 THEN COLOR C,B:PRINT"AMAZING BLOW!":PRINT"The ";U$(N);" destroyed you!":DT=I*3:DT=DT-AC:HP=HP-ABS(DT) 131 IF I>14 AND I<20 THEN COLOR GR,B:PRINT"A THOR-LIKE BLOW!":PRINT"The ";U$(N);" crushed you into atoms!":DT=I*5:DT=DT-AC:HP=HP-ABS(DT) 132 IF I>19 AND I<25 THEN COLOR YL,B:PRINT"You deflected the ";U$(N);"'s blow." 133 IF I>24 AND I<29 THEN COLOR W,B:PRINT"You dodged the attack." 134 IF I>28 THEN COLOR W,B:PRINT"It grazed you slightly...":DT=5:HP=HP-DT 135 IF HP<1 THEN HP=0:M=1 136 IF M<1 THEN M=0 137 PRINT:COLOR W,B:PRINT"Your HP:";:COLOR E,B:PRINT HP:COLOR W,B:PRINT"Their HP:";:COLOR R,B:PRINT M:PRINT:COLOR W,B 138 IF HP<1 THEN COLOR R,B:PRINT"Alas, you have died...":PRINT:COLOR W,B:GOTO 146 139 IF M<1 THEN COLOR R,B:PRINT"You killed ";U$(N);".":COLOR C,B:PRINT"You gained";I+N;"experience points":PRINT"and";I;"gold coins.":GOTO 142 140 IF HP>HM THEN HP=HM 141 GOTO 116 142 EX=EX+I+N:GD=GD+I:O(N,1)=998:FOR X=7 TO 30:IF O(X,1)=1000+N THEN COLOR E,B:PRINT"You found ";U$(X);" on it.":O(X,1)=L 143 NEXT:IF N=25 THEN PRINT:GOTO 149 144 HP=HP+I:HM=HM+25:IF HP>HM THEN HP=HM 145 GOTO 16 146 PRINT"The ";U$(N);" has defeated you in battle.":COLOR E,B:PRINT"The game is over...":COLOR YL,B:PRINT"< Press ENTER key >" 147 A$=INKEY$:IF A$<>CHR$(13) AND A$<>CHR$(32) THEN GOTO 147 148 COLOR W,B:CLS:PRINT"Thanks for playing! :)":END 149 COLOR E,B:PRINT"The dead vampire lay at your feet. You have succeeded in slaying" 150 PRINT"the evil vampire. Now the village can rest easily knowing that the vampire is" 151 PRINT"no more. No longer shall the curses of evil inhabit these walls.":PRINT:COLOR C,B:PRINT"The End":PRINT 152 COLOR YL,B:PRINT"< Press any key >":GOTO 147 153 RANDOMIZE TIMER:I=INT(RND*35)+1 154 IF AC=0 THEN AC=1 155 RETURN 156 RANDOMIZE TIMER:M=INT(RND*250)+1 157 IF DM=0 THEN DM=1 158 RETURN 159 RANDOMIZE TIMER:I=INT(RND*8)+1:RETURN 160 CT=CT+1:IF CT>100 THEN CT=0:COLOR R,B:PRINT"The monsters have been revived.":RESTORE 270:GOSUB 270 161 RETURN 162 OPEN "halite.dat" FOR INPUT AS #2:FOR X=1 TO 80:LINE INPUT#2,D$(X):NEXT 201 FOR X=1 TO 33:FOR Y=1 TO 2:LINE INPUT#2,F$(X,Y):NEXT:NEXT 235 FOR X=1 TO 33:FOR Y=1 TO 6:INPUT#2,M(X,Y):NEXT:NEXT 245 FOR X=1 TO 80:INPUT#2,U$(X):NEXT:FOR X=1 TO 20:INPUT#2,O(X,1):NEXT 260 FOR X=1 TO 16:INPUT#2,VB$(X):NEXT:FOR X=1 TO 20:INPUT#2,PE(X):NEXT 265 FOR X=1 TO 8:INPUT#2,K$(X):NEXT:CLOSE 2 270 FOR X=21 TO 30:READ O(X,1):NEXT 271 DATA 22,4,5,31,32,24,20,18,31,11:RETURN