Advertisement
Guest User

Untitled

a guest
Dec 27th, 2016
450
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Basic4GL 23.10 KB | None | 0 0
  1.  
  2. 100  rem ///     STAR WARS
  3. 110  rem ///
  4. 120  rem ///A ROLE-PLAYING GAME
  5. 130  rem /// (C) COPYRIGHT 1979
  6. 140  rem ///  BY DONALD BROWN
  7. 150  goto 170
  8. 160  for CN = 1 to CF : for TA = AB to AE : poke 0 , TA : poke 1 , DN : call 770 : next TA , CN : return
  9. 170  restore
  10. 180  dim R ( 42 , 9 ) , P ( 4 , 7 ) , D ( 3 ) , S ( 10 , 2 ) , R$ ( 2 ) , B$ ( 3 ) , E$ ( 4 ) , C$ ( 8 ) , O$ ( 5 ) , P$ ( 4 ) , N$ ( 5 ) , W$ ( 3 ) , D$ ( 3 )
  11. 185  dim CM$ ( 14 )
  12. 190  for I = 1 to 42 : for J = 1 to 9 : R ( I , J ) = 0 : next : next
  13. 200  for I = 1 to 4 : for J = 1 to 7 : P ( I , J ) = 0 : next : next
  14. 210  home : vtab 5 : print TAB( 15 ) ; "WELCOME  TO" : print : htab 16 : inverse : print "STAR WARS" : normal : print
  15. 220  for X = 1 to 100 : vtab 13 : htab 1 : print MID$( "                                        <==A SCIENCE FICTION ROLE-PLAYING GAME BY DONALD BROWN==>                                        " , X , 40 )
  16. 230  for A = 1 to 10 : if PEEK( - 16384 ) = 155 then poke - 16368 , 0 : vtab 13 : call - 868 : for X = 1 to 1 : for A = 1 to 1
  17. 240  next : next
  18. 250  vtab 13 : input "WHAT IS YOUR NAME?" ; N$ ( 1 )
  19. 260  for R1 = 1 to 42 : for X = 1 to 5 : read R ( R1 , X ) : next : next
  20. 270  data 30,2,0,0,4,3,4,1,0,102,0,0,0,2,221,0,5,2,0,202,10,6,4,8,103,0,7,5,0,302,0,0,6,0,311,5,0,0,9,412,8,0,0,0,111,11,0,0,5,212
  21. 280  data 14,12,0,10,123,0,13,11,0,222,0,0,12,0,121,15,0,0,11,512,0,0,16,14,133,0,15,17,0,232,18,16,0,0,433,19,0,0,17,242,20,0,26,18,321,21,42,37,19,462,22,41,38,20,262,0,40,39,21,562,0,34,33,24,572,23,35,32,25,272,24,36,31,26,472
  22. 290  data 25,19,0,27,421,26,0,28,29,552,0,27,0,0,211,27,0,0,-30,252,-29,0,0,1,452,0,25,0,0,14,0,24,0,0,24,0,23,0,0,34,0,0,23,0,44,0,0,24,0,54,0,0,25,0,64,0,20,0,0,74,0,21,0,0,84,0,22,0,0,94,0,0,22,0,104,0,0,21,0,114,0,0,20,0,124
  23. 300  P ( 1 , 1 ) = 1 : for P1 = 2 to 3 : R1 = INT( RND( 1 ) * 12 + 31 ) : P ( P1 , 1 ) = - R1 : next : if P ( 2 , 1 ) = P ( 3 , 1 ) then 300
  24. 310  R1 = INT( 29 * RND( 1 ) + 2 ) : P ( 4 , 1 ) = R1 : for P1 = 1 to 4 : for X = 2 to 3 : P ( P1 , X ) = INT( 10 * RND( 1 ) + 11 ) : next : next
  25. 320  P ( 3 , 2 ) = P ( 3 , 2 ) * 2 : P ( 1 , 4 ) = 1 : P ( 1 , 6 ) = 1 : P ( 4 , 4 ) = 1 : P ( 4 , 6 ) = 1
  26. 330  R ( 19 , 7 ) = 3 : R ( 26 , 7 ) = 3
  27. 340  for S = 1 to INT( 20 * RND( 1 ) + 5 )
  28. 350  R1 = INT( RND( 1 ) * 30 + 1 ) : if R ( R1 , 7 ) = 10 then 350
  29. 360  R ( R1 , 7 ) = R ( R1 , 7 ) + 1 : next S : for D = 1 to 3 : D ( D ) = 0 : next : S8 = 0
  30. 370  home : vtab 3 : print "REBEL " ; N$ ( 1 ) ; "--" : print : print "YOU ARE ABOARD THE MILLENIUM FALCON" : print "WHICH HAS JUST BEEN DRAGGED ABOARD THE  INFAMOUS " ; : flash : print "DEATH STAR" : normal : print
  31. 380  print "THIS OF COURSE MEANS YOU ARE IN TROUBLE.BUT YOU ARE ALSO IN A POSITION TO DO    GOOD THINGS FOR THE REBELLION, SUCH AS  DAMAGING THE DEATH STAR, ELIMINATING    IMPERIAL SOLDIERS, KILLING DARTH VADER, OR RESCUING PRINCESS LEIA"
  32. 390  print
  33. 400  print "YOU MIGHT EVEN BE ABLE TO SABOTAGE THE  POWER MACHINERY ROOM IN SUCH A WAY AS TOMAKE THE DEATH STAR SELF-DESTRUCT!"
  34. 410  vtab 20 : print "(HIT ANY KEY FOR FURTHER ORDERS)" ; : get A$
  35. 420  home : print "YOU ARE EQUIPPED WITH A LIGHT SABRE AND A BLASTER SHIELD.  YOU MAY USE ANY" : print "BLASTERS YOU STRIP FROM DEAD SOLDIERS ORYOU MAY GIVE THEM TO PRISONERS YOU" : print "RELEASE." : print
  36. 430  print "TO ESCAPE, YOU MUST RENDER THE TRACTOR  BEAM INOPERABLE BY EITHER SABOTAGING THEPOWER MACHINERY ROOM OR THE TRACTOR BEAMROOM.  YOU MUST THEN RETURN TO THE" : print "HANGER DECK AND TAKE OFF IN THE"
  37. 440  print "MILLENIUM FALCON." : print
  38. 450  print "AS WITH ANY JEDI HOPEFUL, YOU WILL ACT  THROUGH THE FORCE.  YOU WILL DO SO BY   GIVING COMMANDS FOR YOUR ACTIONS. SIMPLYHITTING 'RETURN' LISTS ALL OF THE LEGAL COMMANDS" : print
  39. 460  print "YOU HAVE A LIMITED AMOUNT OF TIME." : print "MAY THE FORCE BE WITH YOU!" : print
  40. 470  print "(HIT ANY KEY TO BEGIN YOUR MISSION)" ; : get A$ : print
  41. 480  for A = 1 to 2 : read R$ ( A ) : next : for A = 1 to 3 : read B$ ( A ) : next : for A = 1 to 4 : read E$ ( A ) : next : for A = 1 to 8 : read C$ ( A ) : next
  42. 490  for A = 1 to 5 : read O$ ( A ) : next : for A = 1 to 4 : read P$ ( A ) : next : for A = 2 to 5 : read N$ ( A ) : next : for A = 1 to 3 : read W$ ( A ) : next : for A = 1 to 3 : read D$ ( A ) : next
  43. 500  data MACHINERY,CONTROL,TRACTOR BEAM,POWER,WEAPONRY,COMMAND,HANGER,EAST DETENTION,WEST DETENTION,BROWN,GREEN,BLUE,YELLOW,RED,ORANGE,BLACK,WHITE
  44. 510  data WEST END,MIDDLE,EAST END,SOUTH END,NORTH END,NORTH,EAST,WEST,SOUTH,PRINCESS LEIA,THE WOOKIE,DARTH VADER,IMPERIAL SOLDIER,SHIELD,BLASTER,LIGHT SABRE
  45. 520  data UNDAMAGED,DAMAGED BUT CAN BE REPAIRED,IRREPAIRABLY DAMAGED
  46. 530  for P = 770 to 788 : read A : poke P , A : next
  47. 540  data 173,48,192,136,208,4,198,1,240,8,202,208,246,166,0,76,2,3,96
  48. 542  for I = 1 to 14 : read CM$ ( I ) : next
  49. 543  data GE,D,M,SABR,A,O,GI,L,F,TO,SW,TA,SAB,C
  50. 550  R1 = 1 : home
  51. 560  gosub 1750 : for T8 = INT( 50 * RND( 1 ) + 76 ) to 1 step - 1
  52. 570  if P ( 4 , 1 ) = P ( 1 , 1 ) then 610
  53. 580  if P ( 4 , 1 ) = 0 then 610
  54. 590  X = INT( 4 * RND( 1 ) + 1 ) : R1 = P ( 4 , 1 ) : if R ( R1 , X ) < 1 then 590
  55. 600  R1 = R ( R1 , X ) : P ( 4 , 1 ) = R1 : if R1 = P ( 1 , 1 ) then flash : print "***DARTH VADER HAS ARRIVED***" : normal : gosub 2800 : gosub 2710
  56. 610  if C9 = 9 then 620
  57. 620  if T8 = INT( 10 * RND( 1 ) ) then inverse : print "TIME IS ALMOST OUT" : normal
  58. 630  gosub 820 : if P ( 1 , 1 ) <> P ( 4 , 1 ) then 680
  59. 640  if P ( 4 , 6 ) < 1 then 670
  60. 650  print "DARTH VADER SWINGS AT YOU WITH HIS LIGHT  SABRE!" : gosub 2800 : A1 = P ( 4 , 2 ) : D1 = P ( 1 , 2 ) : P1 = 1 : gosub 840 : if P ( 1 , 1 ) = 0 then 810
  61. 660  goto 680
  62. 670  print "DARTH VADER SWINGS AT YOU WITH HIS FIST!" ; : A1 = P ( 4 , 2 ) / 2 : D1 = P ( 1 , 2 ) : P1 = 1 : gosub 840 : if P ( 1 , 1 ) = 0 then 810
  63. 680  if S9 = 0 then 750
  64. 690  for S = 1 to S9 : if RND( 1 ) < .1 then 740
  65. 700  P1 = INT( 5 * RND( 1 ) + 1 ) : if P1 <> 5 then if P ( 1 , 1 ) <> ABS( P ( P1 , 1 ) ) then 700
  66. 710  print "A SOLDIER FIRES AT " ; N$ ( P1 ) : A1 = S ( S , 2 ) : D1 = S ( S9 , 1 ) : J = 5 / 4 : if P1 <> 5 then D1 = P ( P1 , 2 ) : if P ( P1 , 4 ) = 0 then J = 1
  67. 720  D1 = D1 * J : gosub 2750
  68. 730  gosub 840 : if P ( 1 , 1 ) = 0 then 810
  69. 740  next S
  70. 750  for P1 = 2 to 3 : if P ( 1 , 1 ) <> P ( 4 , 1 ) and P ( P1 , 1 ) = - P ( 4 , 1 ) and P ( 4 , 1 ) <> 0 then R1 = P ( 4 , 1 ) : R1 = 31 + INT( RND( 1 ) * 12 ) : P ( P1 , 1 ) = - R1
  71. 760  next P1
  72. 770  R1 = INT( 30 * RND( 0 ) + 1 ) : if R ( R1 , 6 ) = 1 then R ( R1 , 6 ) = 0
  73. 780  next T8 : if D ( 1 ) = 1 then 800
  74. 790  inverse : print "THE FORCE FINALLY GAVE UP ON YOU." : normal : goto 810
  75. 800  inverse : print "THE DEATH STAR JUST EXPLODED." : print "UNFORTUNATELY, YOU WERE STILL ABOARD" : normal
  76. 810  print "YOU ARE DEAD." : P ( 1 , 1 ) = 0 : goto 2280
  77. 820  print : input "WHAT IS YOUR COMMAND?" ; A$ : print : for C9 = 1 to 14 : if LEFT$( A$ , LEN( CM$ ( C9 ) ) ) = CM$ ( C9 ) then 830
  78. 825  next C9 : goto 1640
  79. 830  on C9 goto 1020 , 1110 , 1680 , 1420 , 1830 , 2130 , 1490 , 1580 , 1550 , 1160 , 1230 , 1430 , 1330 , 2200
  80. 840  A1 = A1 - D1 + ( INT( RND( 1 ) * 7 ) - 3 ) : if A1 < 0 then print "   A MISS!" : D1 = 0 : return
  81. 850  if P1 <> 5 then 890
  82. 860  print "   SOLDIER--HIT AND KILLED!" : S8 = S8 + 1 : S9 = S9 - 1 : R ( P ( 1 , 1 ) , 9 ) = R ( P ( 1 , 1 ) , 9 ) + 1 : R ( P ( 1 , 1 ) , 8 ) = R ( P ( 1 , 1 ) , 8 ) + 1 : R ( P ( 1 , 1 ) , 7 ) = R ( P ( 1 , 1 ) , 7 ) - 1
  83. 870  if R ( P ( 1 , 1 ) , 7 ) < 0 then S9 = 0 : R ( P ( 1 , 1 ) , 7 ) = 0
  84. 880  gosub 2780 : goto 2710
  85. 890  D1 = INT( 4 * RND( 1 ) ) : P ( P1 , 2 ) = P ( P1 , 2 ) - D1 : print "   A HIT!" : if P ( P1 , 2 ) <= 0 then print "   A KILLING BLOW!" : P ( P1 , 1 ) = 0 : gosub 2780 : goto 2710
  86. 900  gosub 2790
  87. 910  if D1 = 0 or P ( P1 , 3 + D1 ) = 0 then return
  88. 920  print "   A " ; W$ ( D1 ) ; " WAS DESTROYED" : P ( P1 , 3 + D1 ) = P ( P1 , 3 + D1 ) - 1 : goto 2710
  89. 930  rem GET S$
  90. 940  R2 = INT( R ( R1 , 5 ) / 100 ) : R3 = INT( R ( R1 , 5 ) / 10 ) - R2 * 10 : R4 = R ( R1 , 5 ) - ( 100 * R2 + 10 * R3 ) : on R4 goto 950 , 980 , 990 , 1000
  91. 950  if R3 = 2 then S$ = E$ ( R2 ) : goto 970
  92. 960  S$ = B$ ( R2 )
  93. 970  S$ = S$ + " " + R$ ( R3 ) + " ROOM" : return
  94. 980  S$ = O$ ( R2 ) + " OF THE " + C$ ( R3 + 1 ) + " CORRIDOR" : return
  95. 990  S$ = "JUNCTION OF " + C$ ( R2 + 1 ) + " AND " + C$ ( R3 + 1 ) + " CORRIDORS" : return
  96. 1000  if R1 = 1 then S$ = "HANGER DECK" : return
  97. 1010  S$ = "DETENTION CELL #" + STR$( INT( R ( R1 , 5 ) / 10 ) ) : return
  98. 1020  if R ( P ( 1 , 1 ) , 7 ) = 0 and P ( 1 , 1 ) <> P ( 4 , 1 ) then 1040
  99. 1030  print "YOU CAN'T DO THAT WHILE ENEMIES ARE IN     THE ROOM!" : goto 820
  100. 1040  gosub 3000 : if A > 0 then A$ = MID$( A$ , A + 1 ) : goto 1045
  101. 1042  print "WHAT DO YOU WANT TO GET, A SHIELD, A" : input "  BLASTER, OR ALL (S,B,OR A)?" ; A$
  102. 1045  C = 1 : if LEFT$( A$ , 1 ) = "B" then C = 2
  103. 1050  if LEFT$( A$ , 1 ) = "A" then 1090
  104. 1060  if R ( P ( 1 , 1 ) , 7 + C ) = 0 then print "THERE AREN'T ANY " ; W$ ( C ) ; "S" : print "   TO PICK UP" : goto 820
  105. 1070  print "OK." : gosub 2820 : R ( P ( 1 , 1 ) , 7 + C ) = R ( P ( 1 , 1 ) , 7 + C ) - 1 : P ( 1 , 3 + C ) = P ( 1 , 3 + C ) + 1 : gosub 2820 : gosub 2710
  106. 1080  goto 820
  107. 1090  print "OK." : D = P ( 1 , 1 ) : for C = 1 to 2 : B = 7 + C : if R ( D , B ) > 0 then for A = 1 to R ( D , B ) : R ( D , B ) = R ( D , B ) - 1 : P ( 1 , 3 + C ) = P ( 1 , 3 + C ) + 1 : gosub 2820 : next A
  108. 1100  next C : gosub 2710 : goto 820
  109. 1110  if R ( P ( 1 , 1 ) , 7 ) <> 0 or P ( 1 , 1 ) = P ( 4 , 1 ) then 1030
  110. 1115  gosub 3000 : if A > 0 then A$ = MID$( A$ , A + 1 ) : goto 1125
  111. 1120  print "WHAT DO YOU WANT TO DROP, A SHIELD OR" : input "   BLASTER (S OR B)?" ; A$
  112. 1125  C = 1 : if LEFT$( A$ , 1 ) = "B" then C = 2
  113. 1130  if P ( 1 , 3 + C ) = 0 then print "YOU AREN'T CARRYING A " ; W$ ( C ) : goto 820
  114. 1140  print "OK." : R ( P ( 1 , 1 ) , 7 + C ) = R ( P ( 1 , 1 ) , 7 + C ) + 1 : P ( 1 , 3 + C ) = P ( 1 , 3 + C ) - 1 : gosub 2820 : gosub 2710
  115. 1150  goto 820
  116. 1160  if R ( P ( 1 , 1 ) , 7 ) <> 0 or P ( 1 , 1 ) = P ( 4 , 1 ) then 1030
  117. 1170  if D ( 2 ) <> 0 then print "THE ROPE'S ALREADY UP!" : goto 820
  118. 1180  if P ( 1 , 1 ) <> 29 and P ( 1 , 1 ) <> 30 then print "HOW DO YOU EXPECT TO CONNECT THE ROPE      FROM THE " ; S$ ; "?" : goto 820
  119. 1190  SPEED= 150 : print "THE ROPE SWINGS--FLIES--AND " ; : SPEED= 255 : if RND( 1 ) < .5 then print "MISSES." : print "BETTER LUCK NEXT TIME." : return
  120. 1200  print "CATCHES." : print "GOOD SHOT!" : D ( 2 ) = 1
  121. 1210  Y = PEEK( 37 ) : vtab 6
  122. 1220  gosub 2650 : vtab Y + 1 : return
  123. 1230  if R ( P ( 1 , 1 ) , 7 ) <> 0 or P ( 1 , 1 ) = P ( 4 , 1 ) then 1030
  124. 1240  if D ( 2 ) = 0 then print "THE ROPE ISN'T UP!" : goto 820
  125. 1250  if P ( 1 , 1 ) <> 29 and P ( 1 , 1 ) <> 30 then print "HOW DO YOU EXPECT TO SWING ON THE ROPE     FROM THE " ; S$ ; "?" : goto 820
  126. 1260  J = 1 : print "THE PEOPLE SWINGING ARE--" : print "   YOU" : for X = 1 to 2 : if P ( 1 , 1 ) = P ( X + 1 , 1 ) then print TAB( 4 ) ; N$ ( X + 1 ) : J = J + X
  127. 1270  next X : print "OKAY, NOW" : SPEED= 150 : print ". . . UP, UP, AND AWAY--" : SPEED= 255 : if J > INT( 4 * RND( 1 ) + 1 ) then inverse : print "EGAD, THE ROPE BROKE" : normal : goto 810
  128. 1280  print "THE ROPE HELD, LUCKY YOU" : if P ( 1 , 1 ) = 30 then M = 29 : goto 1300
  129. 1290  M = 30
  130. 1300  gosub 2720
  131. 1310  for X = 3 to 1 step - 1 : if P ( X , 1 ) = P ( 1 , 1 ) then P ( X , 1 ) = M
  132. 1320  next X : goto 1750
  133. 1330  if R ( P ( 1 , 1 ) , 7 ) <> 0 or P ( 1 , 1 ) = P ( 4 , 1 ) then 1030
  134. 1340  if R ( P ( 1 , 1 ) , 5 ) - 10 * INT( R ( P ( 1 , 1 ) , 5 ) / 10 ) <> 1 then print "THERE'S NOTHING TO SABOTAGE HERE" : goto 820
  135. 1350  if R ( P ( 1 , 1 ) , 6 ) = 2 and P ( 1 , 1 ) <> 28 then print "WHY?  THE ROOM'S ALREADY IRREPAIRABLY   DESTROYED." : goto 820
  136. 1360  gosub 2760
  137. 1370  R ( P ( 1 , 1 ) , 6 ) = R ( P ( 1 , 1 ) , 6 ) + INT( 3 * RND( 1 ) ) : if R ( P ( 1 , 1 ) , 6 ) > 2 then R ( P ( 1 , 1 ) , 6 ) = 2
  138. 1380  Y = PEEK( 37 ) : vtab 6
  139. 1390  gosub 2640 : vtab Y + 1
  140. 1400  if R ( P ( 1 , 1 ) , 6 ) = 2 and P ( 1 , 1 ) = 28 and RND( 1 ) < .25 then gosub 2770 : print "CONGRATULATIONS.   YOU JUST STARTED THE DEATH STAR'S SELF-DESTRUCT DEVICE." : T8 = INT( 10 * RND( 1 ) + 3 ) : print "UH--YOU'D BETTER GET OUT OF HERE." : D ( 1 ) = 1
  141. 1410  return
  142. 1420  D ( 3 ) = not D ( 3 ) : gosub 2800 : goto 2710
  143. 1430  if P ( 1 , 1 ) <> 1 then print "HOW CAN YOU TAKE OFF FROM THE" : print TAB( 4 ) ; S$ ; "?" : goto 820
  144. 1440  gosub 2740
  145. 1450  SPEED= 150 : print "THE MILLENIUM FALCON IS TAKING OFF." : print "LEAVING HANGER NOW." : print "APPROACHING TRACTOR BEAM."
  146. 1460  SPEED= 255
  147. 1470  if R ( 9 , 6 ) = 0 and R ( 28 , 6 ) = 0 then inverse : print "THE TRACTOR BEAM LATCHES ON." : print "STRESSES TEAR THE MILLENIUM FALCON INTO ITSY-BITSY PIECES." : normal : goto 810
  148. 1480  print "TRACTOR BEAM IS INOPERABLE." : print "CONGRATULATIONS ON A REMARKABLE ESCAPE." : goto 2280
  149. 1490  gosub 3000 : if A > 0 then A$ = MID$( A$ , A + 1 ) : goto 1499
  150. 1498  print "DO YOU WANT TO GIVE TO THE PRINCESS OR" : input "  THE WOOKIE (P OR W)?" ; A$
  151. 1499  C = 1 : if LEFT$( A$ , 1 ) = "W" then C = 2
  152. 1500  if P ( 1 , 1 ) <> P ( C + 1 , 1 ) then print : print N$ ( C + 1 ) ; " ISN'T HERE!" : goto 820
  153. 1505  gosub 3000 : if A > 1 then A$ = MID$( A$ , A + 1 ) : goto 1515
  154. 1510  print "DO YOU WANT TO GIVE A SHIELD OR A" : input "   BLASTER (S OR B)?" ; A$
  155. 1515  if LEFT$( A$ , 4 ) = "LEIA" then gosub 3000 : A$ = MID$( A$ , A + 1 ) : if A = 0 then 1510
  156. 1517  C1 = 1 : if LEFT$( A$ , 1 ) = "B" then C1 = 2
  157. 1520  if P ( 1 , 3 + C1 ) = 0 then print "YOU DON'T HAVE ONE TO GIVE" : goto 820
  158. 1530  if P ( C + 1 , 3 + C1 ) > 0 then print "SORRY, BUT A FOLLOWER CAN ONLY CARRY ONE   OF EACH WEAPON." : goto 820
  159. 1540  print "OK." : P ( 1 , 3 + C1 ) = P ( 1 , 3 + C1 ) - 1 : P ( C + 1 , 3 + C1 ) = 1 : goto 2710
  160. 1550  print "OK, SCATTER" : for X = 3 to 1 step - 1 : Y = INT( 4 * RND( 1 ) + 1 ) : if R ( P ( 1 , 1 ) , Y ) > 0 and P ( X , 1 ) = P ( 1 , 1 ) then P ( X , 1 ) = R ( P ( 1 , 1 ) , Y )
  161. 1560  next : for X = 2 to 3 : if P ( X , 1 ) <> P ( 1 , 1 ) and P ( X , 1 ) > 0 then P ( X , 1 ) = - P ( X , 1 )
  162. 1570  next : R1 = P ( 1 , 1 ) : goto 1750
  163. 1580  A$ = S$ : for X = 1 to 4 : if R ( P ( 1 , 1 ) , X ) = 0 then 1620
  164. 1590  if R ( P ( 1 , 1 ) , X ) < 0 then print "ACROSS A WIDE CHASM" : R1 = - R ( P ( 1 , 1 ) , X ) : goto 1610
  165. 1600  R1 = R ( P ( 1 , 1 ) , X )
  166. 1610  gosub 930 : print "TO THE " ; P$ ( X ) ; " IS THE" : print S$
  167. 1620  next X : S$ = A$
  168. 1630  return
  169. 1640  print "I AM THE FORCE. I WILL DO THESE THINGS--" : print "   GET AN OBJECT" : print "   DROP AN OBJECT" : print "   MOVE NORTH, EAST, WEST, OR SOUTH" : print "   SABRE ON OR OFF"
  170. 1650  print "   ATTACK WITH SABRE, BLASTER, OR HANDS" : print "   ORDER PRINCESS OR WOOKIE" : print "   GIVE TO PRINCESS OR WOOKIE" : print "   LOOK AROUND" : print "   FLEE (EVERYBODY RUNS AWAY)"
  171. 1660  print "   TOSS ROPE TO CROSS THE CHASM" : print "   SWING ON THE ROPE ACROSS THE CHASM" : print "   TAKE-OFF IN THE MILLENIUM FALCON" : print "   SABOTAGE THE EQUIPMENT IN THE ROOM"
  172. 1670  print "   CHARGE!  ALL GOOD GUYS ATTACK"
  173. 1675  SPEED= 255 : goto 820
  174. 1680  if R ( P ( 1 , 1 ) , 7 ) <> 0 or P ( 1 , 1 ) = P ( 4 , 1 ) then 1030
  175. 1685  gosub 3000 : if A > 0 then A$ = MID$( A$ , A + 1 ) : goto 1695
  176. 1690  print "DO YOU WANT TO MOVE NORTH, EAST, WEST," : input "  OR SOUTH (N,E,W,S)?" ; A$
  177. 1695  for C = 1 to 4 : if LEFT$( A$ , 1 ) = MID$( "NEWS" , C , 1 ) then 1710
  178. 1700  next C : goto 1690
  179. 1710  R1 = R ( P ( 1 , 1 ) , C ) : if R1 <= 0 then print "YOU CAN'T GO THAT WAY." : goto 820
  180. 1720  print "OK"
  181. 1730  for C = 3 to 1 step - 1 : if P ( C , 1 ) = P ( 1 , 1 ) then P ( C , 1 ) = R1
  182. 1740  next C
  183. 1750  if P ( 1 , 1 ) = - P ( 2 , 1 ) then print "YOU FOUND THE PRINCESS." : print "SHE THANKS YOU AND FOLLOWS YOU." : P ( 2 , 1 ) = P ( 1 , 1 ) : gosub 2720
  184. 1760  if P ( 1 , 1 ) <> - P ( 3 , 1 ) then 1800
  185. 1770  if P ( 3 , 7 ) then P ( 3 , 1 ) = P ( 1 , 1 ) : goto 1800
  186. 1780  print "YOU ARE GREETED BY A LARGE, EXTREMELY   DANGEROUS-LOOKING WOOKIE." : if RND( 1 ) < .25 then inverse : print "HE CHARGES AND RIPS YOUR ARMS OUT." : normal : goto 810
  187. 1790  print "FORTUNATLEY, HE DECIDES TO JOIN UP WITH YOU." : P ( 3 , 1 ) = P ( 1 , 1 ) : P ( 3 , 7 ) = 1 : gosub 2720
  188. 1800  R1 = P ( 1 , 1 ) : gosub 930 : S9 = R ( P ( 1 , 1 ) , 7 )
  189. 1810  for S = 1 to S9 : S ( S , 1 ) = INT( 16 * RND( 1 ) ) : S ( S , 2 ) = INT( 16 * RND( 1 ) ) : next S
  190. 1820  for X = 1 to 100 : next : goto 2510
  191. 1830  F1 = 0
  192. 1840  P = 1
  193. 1845  gosub 3000 : if A = 0 then 1850
  194. 1846  A$ = MID$( A$ , A + 1 ) : if LEFT$( A$ , 1 ) = "W" then 1845
  195. 1847  goto 1855
  196. 1850  print "WANT TO ATTACK WITH BLASTER, SABRE, OR" : input "  HAND-TO-HAND (B,S, OR H)?" ; A$
  197. 1855  for C = 1 to 3 : if LEFT$( A$ , 1 ) = MID$( "BSH" , C , 1 ) then on C goto 1860 , 1860 , 1890
  198. 1857  next C : goto 1850
  199. 1860  if P ( 1 , 4 + C ) > 0 then 1890
  200. 1870  print "YOU DON'T HAVE A " ; W$ ( C + 1 ) : if F1 then 1850
  201. 1880  goto 820
  202. 1890  if P ( 1 , 1 ) <> P ( 4 , 1 ) then 1910
  203. 1900  print "ATTACKING DARTH VADER" : P1 = 4 : D1 = P ( 4 , 2 ) : goto 1950
  204. 1910  if S9 > 0 then 1940
  205. 1920  print "NOBODY TO ATTACK" : if F1 then return
  206. 1930  goto 820
  207. 1940  print "ATTACKING AN IMPERIAL SOLDIER" : P1 = 5 : D1 = S ( S9 , 1 )
  208. 1950  on C goto 1960 , 2040 , 2120
  209. 1960  if P ( P , 5 ) > 0 then 1990
  210. 1970  print "YOU DON'T HAVE A BLASTER!" : if F1 then 1850
  211. 1980  goto 820
  212. 1990  gosub 2750
  213. 2000  if P ( 1 , 1 ) <> P ( 4 , 1 ) then 2020
  214. 2010  if P ( 4 , 4 ) = 0 then 2030
  215. 2020  D1 = D1 * 5 / 4
  216. 2030  A1 = P ( P , 3 ) : goto 840
  217. 2040  if P ( 1 , 6 ) > 0 then 2070
  218. 2050  print "YOU DON'T HAVE A LIGHT-SABRE!" : if F1 then 1850
  219. 2060  goto 820
  220. 2070  if D ( 3 ) <> 0 then 2100
  221. 2080  print "YOU KNOW, IT HELPS IF YOU TURN ON YOUR     LIGHT-SABRE" : if F1 then 1850
  222. 2090  goto 820
  223. 2100  gosub 2800
  224. 2110  A1 = P ( P , 2 ) : goto 840
  225. 2120  A1 = P ( P , 2 ) / 2 : goto 840
  226. 2130  gosub 3000 : if A > 0 then A$ = MID$( A$ , A + 1 ) : goto 2137
  227. 2135  print "WHO ARE YOU ORDERING, PRINCESS LEIA" : input "   OR THE WOOKIE (P OR W)?" ; A$
  228. 2137  C = 1 : if LEFT$( A$ , 1 ) = "W" then C = 2
  229. 2140  if P ( 1 , 1 ) <> P ( C + 1 , 1 ) then print "YOU CAN'T GIVE ORDERS TO" : print N$ ( C + 1 ) ; " RIGHT NOW." : goto 820
  230. 2143  gosub 3000 : if A > 0 then A$ = MID$( A$ , A + 1 ) : goto 2155
  231. 2150  print "IS THE ORDER TO SHOOT, ATTACK, OR WAIT" : input "   (S,A, OR W)?" ; A$
  232. 2155  if LEFT$( A$ , 4 ) = "LEIA" then gosub 3000 : A$ = MID$( A$ , A + 1 ) : if A = 0 then 2150
  233. 2157  if LEFT$( A$ , 2 ) = "TO" then gosub 3000 : A$ = MID$( A$ , A + 1 ) : if A = 0 then 2150
  234. 2158  for C1 = 1 to 3 : if LEFT$( A$ , 1 ) = MID$( "SAW" , C1 , 1 ) then on C1 goto 2160 , 2180 , 2190
  235. 2159  next C1 : goto 2150
  236. 2160  if P ( C + 1 , 5 ) <> 1 then print N$ ( C + 1 ) ; " HAS NO BLASTER" : goto 820
  237. 2170  P = C + 1 : C = 1 : goto 1890
  238. 2180  P = C + 1 : C = 3 : goto 1890
  239. 2190  print "OK." : P ( C + 1 , 1 ) = - P ( C + 1 , 1 ) : return
  240. 2200  F1 = 1 : gosub 1840 : for P = 2 to 3 : if P ( 1 , 1 ) <> ABS( P ( P , 1 ) ) then 2270
  241. 2210  if S9 <> 0 then 2230
  242. 2220  if P ( 1 , 1 ) <> P ( 4 , 1 ) then print "NO ENEMIES" : goto 2270
  243. 2230  print "DO YOU WANT " ; N$ ( P ) : print "   TO SHOOT, ATTACK OR DO NOTHING" : input "   (S,A, OR N)?" ; A$ : for C = 1 to 3 : if LEFT$( A$ , 1 ) = MID$( "SAN" , C , 1 ) then on C goto 2240 , 2260 , 2270
  244. 2235  next : goto 2230
  245. 2240  if P ( P , 5 ) = 0 then print N$ ( P ) ; " HAS NO BLASTER" : goto 2230
  246. 2250  C = 1 : gosub 1890 : goto 2270
  247. 2260  C = 3 : gosub 1890
  248. 2270  next P : return
  249. 2280  print "LET'S SEE HOW YOU DID." : print "YOU KILLED " ; S8 ; " IMPERIAL SOLDIERS."
  250. 2290  if P ( 1 , 1 ) <> 1 then print "YOU DIDN'T MAKE IT OUT ALIVE." : S8 = S8 - 10 : goto 2320
  251. 2300  print "YOU ESCAPED " ; : S8 = S8 + 10 : if P ( 2 , 1 ) = 1 then print "WITH THE PRINCESS!" ; : S8 = S8 + 25
  252. 2310  if P ( 3 , 1 ) < 0 and P ( 3 , 7 ) then print : print "YOU ABANDONED THE WOOKIE, YOU CAD!" ; : S8 = S8 - 25
  253. 2320  print
  254. 2330  if P ( 4 , 1 ) = 0 then print "YOU KILLED DARTH VADER." : S8 = S8 + 25
  255. 2340  if D ( 1 ) = 1 then print "YOU DESTROYED THE DEATH STAR!" : S8 = S8 + 100 : goto 2400
  256. 2350  P ( 1 , 1 ) = 0 : P ( 2 , 1 ) = 0 : P ( 3 , 1 ) = 0 : for X = 1 to 30 : S9 = R ( X , 6 ) + 1 : P ( S9 , 1 ) = P ( S9 , 1 ) + 1 : next X
  257. 2360  print P ( 2 , 1 ) + P ( 3 , 1 ) ; " ROOMS WERE DAMAGED, HOWEVER," : print P ( 2 , 1 ) ; " OF THEM COULD BE REPAIRED." : S8 = S8 + 3 * P ( 2 , 1 ) + 5 * P ( 3 , 1 )
  258. 2370  for R = 1 to 3 : read R1 , A$ : data 7,WEAPONRY MACHINERY ROOM,13,COMMAND CONTROL ROOM,28,POWER MACHINERY ROOM
  259. 2380  if R ( R1 , 6 ) > 0 then print "THE " ; A$ ; " WAS DAMAGED" : S8 = S8 + 10
  260. 2390  next R
  261. 2400  print : print "YOUR FINAL SCORE WAS " ; S8 : on INT( ABS( S8 ) / 25 ) + 1 goto 2420 , 2430 , 2440 , 2450 , 2460 , 2470 , 2480
  262. 2410  goto 2480
  263. 2420  A$ = "TERRIBLE" : goto 2490
  264. 2430  A$ = "BAD" : goto 2490
  265. 2440  A$ = "FAIR" : goto 2490
  266. 2450  A$ = "GOOD" : goto 2490
  267. 2460  A$ = "VERY GOOD" : goto 2490
  268. 2470  A$ = "INCREDIBLY GOOD" : goto 2490
  269. 2480  A$ = "ABSOLUTELY UNBELIEVABLE"
  270. 2490  print "ALL IN ALL," : print "YOU WERE " ; A$
  271. 2500  text : vtab 23 : for X = 1 to 2000 : next X : print : print CHR$( 4 ) ; "RUN ADVENTURE HELLO"
  272. 2510  text : home
  273. 2520  vtab 1 : X = INT( ( 40 - LEN( S$ ) ) / 2 ) : if X < 1 then X = 1
  274. 2530  htab X : inverse : print S$ : normal
  275. 2540  print "DOORS OPEN TO" ; : for X = 1 to 4 : if R ( P ( 1 , 1 ) , X ) > 0 then print "  " ; P$ ( X ) ;
  276. 2550  next : print : T$ = "OFF" : if D ( 3 ) then T$ = "ON"
  277. 2560  print "CARRYING--" ; : if P ( 1 , 6 ) > 0 then print "SABRE " ; : inverse : print T$ ; : normal : print " " ;
  278. 2570  print P ( 1 , 4 ) ; " SLD.  " ; P ( 1 , 5 ) ; " BLST." ; : call - 868 : print
  279. 2580  for P = 2 to 4 : if P ( 1 , 1 ) = ABS( P ( P , 1 ) ) then print "P:" ; : for P = 2 to 4 : if P ( 1 , 1 ) = ABS( P ( P , 1 ) ) then print " " ; : inverse : print N$ ( P ) ; : normal
  280. 2590  next : call - 868 : print
  281. 2600  print "IN ROOM--" ; : if S9 then print S9 ; " SOLDIERS  " ;
  282. 2610  if R ( P ( 1 , 1 ) , 8 ) or R ( P ( 1 , 1 ) , 9 ) then print R ( P ( 1 , 1 ) , 8 ) ; " SLD.  " ; R ( P ( 1 , 1 ) , 9 ) ; " BLST." ;
  283. 2620  if not S9 and not R ( P ( 1 , 1 ) , 8 ) and not R ( P ( 1 , 1 ) , 9 ) then print "NOTHING" ;
  284. 2630  call - 868 : print
  285. 2640  if R ( P ( 1 , 1 ) , 5 ) - 10 * INT( R ( P ( 1 , 1 ) , 5 ) / 10 ) = 1 then print "EQUIPMENT--" ; D$ ( R ( P ( 1 , 1 ) , 6 ) + 1 ) ; : call - 868 : print
  286. 2650  if P ( 1 , 1 ) = 29 then print "CHASM TO SOUTH--" ;
  287. 2660  if P ( 1 , 1 ) = 30 then print "CHASM TO NORTH--" ;
  288. 2670  if P ( 1 , 1 ) = 29 or P ( 1 , 1 ) = 30 then if D ( 2 ) then print "ROPE IS UP" ; : call - 868 : print
  289. 2680  if P ( 1 , 1 ) = 29 or P ( 1 , 1 ) = 30 then if not D ( 2 ) then print "ROPE IS NOT UP"
  290. 2690  print "----------------------------------------" ; : poke 34 , PEEK( 37 )
  291. 2700  return
  292. 2710  Y = PEEK( 37 ) : P9 = P : gosub 2520 : vtab Y + 1 : P = P9 : return
  293. 2720  for CN = 1 to 250 : if PEEK( - 16384 ) > 127 then poke - 16368 , 0 : return
  294. 2730  next : return
  295. 2740  CF = 4 : AB = 1 : AE = 10 : DN = 5 : goto 160
  296. 2750  CF = 1 : AB = 5 : AE = 20 : DN = 3 : goto 160
  297. 2760  CF = 1 : AB = 25 : AE = 30 : DN = 5 : goto 160
  298. 2770  CF = 6 : AB = 20 : AE = 20 : DN = 50 : goto 160
  299. 2780  CF = 1 : AB = 75 : AE = 75 : DN = 30 : gosub 160
  300. 2790  CF = 4 : AB = 11 : AE = 15 : DN = 2 : goto 160
  301. 2800  CF = 1 : AB = 100 : AE = 115 : DN = 3 : goto 160
  302. 2810  CF = 5 : AB = 5 : AE = 5 : DN = 3 : goto 160
  303. 2820  CF = PEEK( - 16336 ) - PEEK( - 16336 ) + PEEK( - 16336 ) - PEEK( - 16336 ) : return
  304. 3000  for A = 1 to LEN( A$ ) : if MID$( A$ , A , 1 ) = " " then return
  305. 3010  next A : A = 0 : return
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement