home *** CD-ROM | disk | FTP | other *** search
/ Source Code 1994 March / Source_Code_CD-ROM_Walnut_Creek_March_1994.iso / compsrcs / games / vmsnet / dungeon / part22 < prev    next >
Encoding:
Internet Message Format  |  1992-02-23  |  47.5 KB

  1. Path: uunet!haven.umd.edu!darwin.sura.net!gatech!nntp.msstate.edu!emory!dragon.com!cts
  2. From: cts@dragon.com
  3. Newsgroups: vmsnet.sources.games
  4. Subject: Dungeon Part 22/30
  5. Message-ID: <1992Feb24.013339.815@dragon.com>
  6. Date: 24 Feb 92 06:33:39 GMT
  7. Organization: Computer Projects Unlimited
  8. Lines: 1401
  9.  
  10. -+-+-+-+-+-+-+-+ START OF PART 22 -+-+-+-+-+-+-+-+
  11. Xtranslated from MDL.  See the file "dungeon.doc" for the complete
  12. Xoriginal documentation.  See the file "PDP.doc" for notes on the
  13. XUnix/pdp implementation.
  14. X
  15. X
  16. XIII. DEC FORTRAN to f77 Conversion (17-nov-81)
  17. X
  18. XThe conversion from DEC FORTRAN to Unix f77 was done by Randy Dietrich,
  19. XLynn Cochran and Sig Peterson.  Much hacking was done to get it to fit
  20. Xin the limited address space of a PDP-11/44 (split I/D).  See the
  21. Xfile "PDP.doc" for all the gory details.  Suffice it to say that by
  22. Xleaving out the debugging package and not linking in the f77 i/o
  23. Xlibrary they managed to get it to run.
  24. X
  25. XIV. PDP to VAX (dec-85)
  26. X
  27. XBased on the work of Randy, Lynn and Sig, Bill Randle folded in the
  28. Xfull save/restore functions and the game debugging package (gdt) into
  29. Xthe pdp version to create a Vax/Unix version.  This version also uses
  30. Xf77 i/o, thus eliminating the extra speak and listen processes needed
  31. Xon the pdp.
  32. X
  33. XV. Cleanup I (11-dec-86)
  34. X
  35. XJohn Gilmore (hoptoad!gnu) cleaned up the source files by moving
  36. Xmost of the common declarations into include files and added
  37. Xcomments from the original (FORTRAN or MDL?) source.  His efforts
  38. Xare greatly appreciated.
  39. X
  40. XVI. Cleanup II (9-feb-87)
  41. X
  42. XBill Randle (billr@tekred.tek.com) added the pdp dependencies back
  43. Xinto the Vax source files with #ifdefs in order to have just one
  44. Xset of sources.  Previously, there were two sets of source: one for
  45. Xthe pdp and one for the Vax.  In addition, a shell escape of the
  46. Xform !cmd was added and the wizard can enter the gdt without having
  47. Xto recompile the source.  Finally, a man page was generated, based
  48. Xon the dungeon.doc file.
  49. X
  50. XVII.  VMS Port (24-Feb-1992)
  51. X
  52. XCharles Smith (cts@dragon.com) reported the code to VMS, incorporating
  53. Xthe fixes from the Unix world and performing some source cleanup.
  54. X
  55. $ CALL UNPACK [.DOC]HISTORY.TXT;1 1829701053
  56. $ create 'f'
  57. XThis is a source file distribution for the game dungeon as implemented
  58. Xin f77 for Unix(R) systems.  It is based on the game dungeon as
  59. Xdistributed on a DECUS tape, circa 1980.  It has been converted from
  60. Xthe original DEC FORTRAN into something that is palatable to Unix f77.
  61. XSee the file "History" for some revision history and credit to those
  62. Xwhose efforts have made this possible.
  63. X
  64. XCheckout the Makefile and adjust it to fit your system.  The only
  65. Xthings that should really need tweaking are the directory definitions
  66. Xand the "-D" defines.  There is an example for both large address
  67. Xmachines (e.g. Vax) that get the complete game and small address
  68. Xmachines (e.g. Pdp-11) that get a modified game with minor functionality
  69. Xmissing (to get it to fit).  Also edit the include file "files.h" if
  70. Xnecessary.
  71. X
  72. XAll of the f77 files end in a '.F' extension to force f77 to invoke the
  73. XC preprocessor for the #include files and #ifdefs.  Most of the #ifdefs
  74. Xare for the PDP version (default non-pdp) and for debug (default off).
  75. X
  76. XExcept for DTEXT.DAT, all files in the distribution kit are ASCII.
  77. XDTEXT.DAT is a binary file consisting of 76-byte fixed length records.
  78. X
  79. XThis has been compiled and tested on a PDP-11/44 Version 7, PDP-11/70
  80. X2.9bsd Vax-11/785 4.3bsd and Sun-3 before the pdp and Vax sources were
  81. Xmerged (see the file "History").  After the merge it was again tested on
  82. Xthe Vax 11-785 4.3bsd.
  83. X
  84. XI/we consider my/our changes to be in the public domain.  The original
  85. Xsource, however, is copyright.
  86. X
  87. X`09John Gilmore, Nebula Consultants
  88. X`09hoptoad!gnu
  89. X`0911 December 1986
  90. X
  91. X`09Bill Randle
  92. X`09Tektronix, Inc.
  93. X`09billr@tekred.TEK.COM
  94. X`099 February 1987
  95. X
  96. XDungeon consists of the following files:
  97. X
  98. X`09dmain.F`09`09`09-program root
  99. X`09dgame.F`09`09`09-main routine
  100. X`09dsub.F`09`09`09-resident subroutines
  101. X`09dinit.F`09`09`09-initialization routine
  102. X`09np.F`09`09`09-parser, part 0
  103. X`09np1.F`09`09`09-parser, part 1
  104. X`09np2.F`09`09`09-parser, part 2
  105. X`09np3.F`09`09`09-parser, part 3
  106. X`09gdt.F`09`09`09-game debugging tool
  107. X`09verbs.F`09`09`09-principal verbs
  108. X`09objcts.F`09`09-principal objects
  109. X`09sverbs.F`09`09-simple verbs
  110. X`09dverb1.F`09`09-auxiliary verbs, part 1
  111. X`09dverb2.F`09`09-auxiliary verbs, part 2
  112. X`09actors.F`09`09-character processors
  113. X`09demons.F`09`09-demon processors
  114. X`09clockr.F`09`09-clock event processors
  115. X`09rooms.F`09`09`09-room processors
  116. X`09nrooms.F`09`09-new room processors
  117. X`09sobjs.F`09`09`09-simple objects
  118. X`09nobjs.F`09`09`09-new objects
  119. X`09ballop.F`09`09-balloon processor
  120. X`09lightp.F`09`09-light processors
  121. X`09villns.F`09`09-villain processors
  122. X`09dso1.F`09`09`09-overlaid subroutines, part 1
  123. X`09dso2.F`09`09`09-overlaid subroutines, part 2
  124. X`09dso3.F`09`09`09-overlaid subroutines, part 3
  125. X`09dso4.F`09`09`09-overlaid subroutines, part 4
  126. X`09dso5.F`09`09`09-overlaid subroutines, part 5
  127. X`09dso6.F`09`09`09-overlaid subroutines, part 6
  128. X`09dso7.F`09`09`09-overlaid subroutines, part 7
  129. X`09advers.h`09`09-header file
  130. X`09clock.h`09`09`09-header file
  131. X`09curxt.h`09`09`09-header file
  132. X`09debug.h`09`09`09-header file
  133. X`09exits.h`09`09`09-header file
  134. X`09files.h`09`09`09-header file for directory paths
  135. X`09flags.h`09`09`09-header file
  136. X`09gamestate.h`09`09-header file
  137. X`09io.h`09`09`09-header file
  138. X`09objects.h`09`09-header file
  139. X`09oflags.h`09`09-header file
  140. X`09oindex.h`09`09-header file
  141. X`09parser.h`09`09-header file
  142. X`09puzzle.h`09`09-header file
  143. X`09rflag.h`09`09`09-header file
  144. X`09rindex.h`09`09-header file
  145. X`09rooms.h`09`09`09-header file
  146. X`09screen.h`09`09-header file
  147. X`09state.h`09`09`09-header file
  148. X`09verbs.h`09`09`09-header file
  149. X`09villians.h`09`09-header file
  150. X`09vocab.h`09`09`09-header file
  151. X`09xpars.h`09`09`09-header file
  152. X`09xsrch.h`09`09`09-header file
  153. X`09cinit.c`09`09`09-C routine to initialize game `5Bpdp ver`5D
  154. X`09cio.c`09`09`09-C routine for misc i/o `5Bpdp version`5D
  155. X`09rtim.c`09`09`09-C routines for system dependent functions
  156. X`09listen.c`09`09-C co-process for reading keyboard `5Bpdp`5D
  157. X`09cspeak.c`09`09-C co-process for displaying messages `5Bpdp`5D
  158. X`09speak.F`09`09`09-lookup messages for speak process `5Bpdp`5D
  159. X`09decode.c`09`09-C routine to decode binary text file `5Bdebug`5D
  160. X`09dindx.dat`09`09-initialization data base
  161. X`09dtext.dat`09`09-main data base `5Bbinary file`5D
  162. X`09rtext.dat`09`09-message index file `5Bpdp version`5D
  163. X`09dungeon.sh`09`09-shell script to invoke pdp version
  164. X`09dungeon.doc`09`09-original documentation file
  165. X`09dungeon.6`09`09-man page abstracted from dungeon.doc
  166. X`09Makefile`09`09-Makefile for making pdp or vax versions
  167. X`09History`09`09`09-Some revision history notes
  168. X`09PDP.doc`09`09`09-Notes on the PDP-11/Unix conversion
  169. X`09README`09`09`09-This file
  170. $ CALL UNPACK [.DOC]README.UNIX;1 776113410
  171. $ create 'f'
  172. X$`09@$compile
  173. X$`09@$link
  174. $ CALL UNPACK [.SRC]$BUILD.COM;2 453183433
  175. $ create 'f'
  176. X$`09fortran -
  177. X`09`09dmain,actors,ballop,clockr,demons,dgame,dinit,dso1, -
  178. X`09`09dso2,dso3,dso4,dso5,dso6,dso7,dsub,dverb1, -
  179. X`09`09dverb2,gdt,image_dir,lightp,nobjs,np,np1,np2,np3, -
  180. X`09`09nrooms,objcts,rooms,sobjs,sverbs,verbs,villns, -
  181. X`09`09vmssubs,wizard
  182. X$`09macro xor
  183. X$`09link/exe=dungeon -
  184. X`09`09dmain,actors,ballop,clockr,demons,dgame,dinit,dso1, -
  185. X`09`09dso2,dso3,dso4,dso5,dso6,dso7,dsub,dverb1, -
  186. X`09`09dverb2,gdt,lightp,nobjs,np,np1,np2,np3, -
  187. X`09`09nrooms,objcts,rooms,sobjs,sverbs,verbs,villns, -
  188. X`09`09vmssubs,wizard,xor
  189. X$
  190. $ CALL UNPACK [.SRC]$COMPILE.COM;2 1817072403
  191. $ create 'f'
  192. X$`09link/exe=dungeon -
  193. X`09`09dmain,actors,ballop,clockr,demons,dgame,dinit,dso1, -
  194. X`09`09dso2,dso3,dso4,dso5,dso6,dso7,dsub,dverb1, -
  195. X`09`09dverb2,gdt,image_dir,lightp,nobjs,np,np1,np2,np3, -
  196. X`09`09nrooms,objcts,rooms,sobjs,sverbs,verbs,villns, -
  197. X`09`09vmssubs,wizard,xor
  198. X$
  199. $ CALL UNPACK [.SRC]$LINK.COM;2 989930685
  200. $ create 'f'
  201. XC AAPPLI- APPLICABLES FOR ADVENTURERS
  202. XC
  203. XC COPYRIGHT 1980, INFOCOM COMPUTERS AND COMMUNICATIONS, CAMBRIDGE MA. 02142
  204. XC ALL RIGHTS RESERVED, COMMERCIAL USAGE STRICTLY PROHIBITED
  205. XC WRITTEN BY R. M. SUPNIK
  206. XC
  207. XC DECLARATIONS
  208. XC
  209. X      LOGICAL FUNCTION AAPPLI(RI)
  210. X      IMPLICIT INTEGER (A-Z)
  211. X      LOGICAL F,MOVETO
  212. X
  213. X      INCLUDE 'PARSER.LIB'
  214. X      INCLUDE 'GAMESTATE.LIB'
  215. X      INCLUDE 'ROOMS.LIB'
  216. X      INCLUDE 'RFLAG.LIB'
  217. X      INCLUDE 'RINDEX.LIB'
  218. X      INCLUDE 'XSRCH.LIB'
  219. X      INCLUDE 'OBJECTS.LIB'
  220. X      INCLUDE 'OFLAGS.LIB'
  221. X      INCLUDE 'OINDEX.LIB'
  222. X      INCLUDE 'CLOCK.LIB'
  223. X      INCLUDE 'ADVERS.LIB'
  224. X      INCLUDE 'VERBS.LIB'
  225. X      INCLUDE 'FLAGS.LIB'
  226. X
  227. X`0C
  228. XC AAPPLI, PAGE 2
  229. XC
  230. X      IF(RI.EQ.0) GO TO 10
  231. XC                                               !IF ZERO, NO APP.
  232. X      AAPPLI=.TRUE.
  233. XC                                               !ASSUME WINS.
  234. X      GO TO (1000,2000),RI
  235. XC                                               !BRANCH ON ADV.
  236. X      CALL BUG(11,RI)
  237. XC
  238. XC COMMON FALSE RETURN.
  239. XC
  240. X10    AAPPLI=.FALSE.
  241. X      RETURN
  242. XC
  243. XC A1--  ROBOT.  PROCESS MOST COMMANDS GIVEN TO ROBOT.
  244. XC
  245. X1000  IF((PRSA.NE.RAISEW).OR.(PRSO.NE.RCAGE)) GO TO 1200
  246. X      CFLAG(CEVSPH)=.FALSE.
  247. XC                                               !ROBOT RAISED CAGE.
  248. X      WINNER=PLAYER
  249. XC                                               !RESET FOR PLAYER.
  250. X      F=MOVETO(CAGER,WINNER)
  251. XC                                               !MOVE TO NEW ROOM.
  252. X      CALL NEWSTA(CAGE,567,CAGER,0,0)
  253. XC                                               !INSTALL CAGE IN ROOM.
  254. X      CALL NEWSTA(ROBOT,0,CAGER,0,0)
  255. XC                                               !INSTALL ROBOT IN ROOM.
  256. X      AROOM(AROBOT)=CAGER
  257. XC                                               !ALSO MOVE ROBOT/ADV.
  258. X      CAGESF=.TRUE.
  259. XC                                               !CAGE SOLVED.
  260. X      OFLAG1(ROBOT)=and(OFLAG1(ROBOT),not(NDSCBT))
  261. X      OFLAG1(SPHER)=or(OFLAG1(SPHER),TAKEBT)
  262. X      RETURN
  263. XC
  264. X1200  IF((PRSA.NE.DRINKW).AND.(PRSA.NE.EATW)) GO TO 1300
  265. X      CALL RSPEAK(568)
  266. XC                                               !EAT OR DRINK, JOKE.
  267. X      RETURN
  268. XC
  269. X1300  IF(PRSA.NE.READW) GO TO 1400
  270. XC                                               !READ,
  271. X      CALL RSPEAK(569)
  272. XC                                               !JOKE.
  273. X      RETURN
  274. XC
  275. X1400  IF((PRSA.EQ.WALKW).OR.(PRSA.EQ.TAKEW).OR.(PRSA.EQ.DROPW)
  276. X     &.OR.(PRSA.EQ.PUTW).OR.(PRSA.EQ.PUSHW).OR.(PRSA.EQ.THROWW)
  277. X     &.OR.(PRSA.EQ.TURNW).OR.(PRSA.EQ.LEAPW)) GO TO 10
  278. X      CALL RSPEAK(570)
  279. XC                                               !JOKE.
  280. X      RETURN
  281. X`0C
  282. XC AAPPLI, PAGE 3
  283. XC
  284. XC A2--  MASTER.  PROCESS MOST COMMANDS GIVEN TO MASTER.
  285. XC
  286. X2000  IF(and(OFLAG2(QDOOR),OPENBT).NE.0) GO TO 2100
  287. X      CALL RSPEAK(783)
  288. XC                                               !NO MASTER YET.
  289. X      RETURN
  290. XC
  291. X2100  IF(PRSA.NE.WALKW) GO TO 2200
  292. XC                                               !WALK?
  293. X      I=784
  294. XC                                               !ASSUME WONT.
  295. X      IF(((HERE.EQ.SCORR).AND.
  296. X     &   ((PRSO.EQ.XNORTH).OR.(PRSO.EQ.XENTER))).OR.
  297. X     &   ((HERE.EQ.NCORR).AND.
  298. X     &   ((PRSO.EQ.XSOUTH).OR.(PRSO.EQ.XENTER))))
  299. X     &I=785
  300. X      CALL RSPEAK(I)
  301. X      RETURN
  302. XC
  303. X2200  IF((PRSA.EQ.TAKEW).OR.(PRSA.EQ.DROPW).OR.(PRSA.EQ.PUTW).OR.
  304. X     &   (PRSA.EQ.THROWW).OR.(PRSA.EQ.PUSHW).OR.(PRSA.EQ.TURNW).OR.
  305. X     &   (PRSA.EQ.SPINW).OR.(PRSA.EQ.TRNTOW).OR.(PRSA.EQ.FOLLOW).OR.
  306. X     &   (PRSA.EQ.STAYW).OR.(PRSA.EQ.OPENW).OR.(PRSA.EQ.CLOSEW).OR.
  307. X     &   (PRSA.EQ.KILLW)) GO TO 10
  308. X      CALL RSPEAK(786)
  309. XC                                               !MASTER CANT DO IT.
  310. X      RETURN
  311. XC
  312. X      END
  313. X`0C
  314. XC THIEFD-       INTERMOVE THIEF DEMON
  315. XC
  316. XC DECLARATIONS
  317. XC
  318. X      SUBROUTINE THIEFD
  319. X      IMPLICIT INTEGER (A-Z)
  320. X      LOGICAL ONCE,PROB,QHERE,QSTILL,LIT,WINNIN
  321. X      INCLUDE 'GAMESTATE.LIB'
  322. XC
  323. X      INCLUDE 'DEBUG.LIB'
  324. X      INCLUDE 'ROOMS.LIB'
  325. X      INCLUDE 'RFLAG.LIB'
  326. X      INCLUDE 'RINDEX.LIB'
  327. X      INCLUDE 'OBJECTS.LIB'
  328. X      INCLUDE 'OFLAGS.LIB'
  329. X      INCLUDE 'OINDEX.LIB'
  330. X      INCLUDE 'VILLIANS.LIB'
  331. X      INCLUDE 'FLAGS.LIB'
  332. XC
  333. XC FUNCTIONS AND DATA
  334. XC
  335. X      QSTILL(R)=(QHERE(STILL,R).OR.(OADV(STILL).EQ.-THIEF))
  336. X`0C
  337. XC THIEFD, PAGE 2
  338. XC
  339. X      DFLAG=and(PRSFLG, 32768).NE.0
  340. XC                                               !SET UP DETAIL FLAG.
  341. X      ONCE=.FALSE.
  342. XC                                               !INIT FLAG.
  343. X1025  RHERE=OROOM(THIEF)
  344. XC                                               !VISIBLE POS.
  345. X      IF(RHERE.NE.0) THFPOS=RHERE
  346. XC
  347. X      IF(THFPOS.EQ.HERE) GO TO 1100
  348. XC                                               !THIEF IN WIN RM?
  349. X      IF(THFPOS.NE.TREAS) GO TO 1400
  350. XC                                               !THIEF NOT IN TREAS?
  351. XC
  352. XC THIEF IS IN TREASURE ROOM, AND WINNER IS NOT.
  353. XC
  354. X      IF(DFLAG) PRINT 10
  355. X10    FORMAT(' THIEFD-- IN TREASURE ROOM')
  356. X      IF(RHERE.EQ.0) GO TO 1050
  357. XC                                               !VISIBLE?
  358. X      CALL NEWSTA(THIEF,0,0,0,0)
  359. XC                                               !YES, VANISH.
  360. X      RHERE=0
  361. X      IF(QSTILL(TREAS)) CALL NEWSTA(STILL,0,0,THIEF,0)
  362. X1050  I=ROBADV(-THIEF,THFPOS,0,0)
  363. XC                                               !DROP VALUABLES.
  364. X      IF(QHERE(EGG,THFPOS)) OFLAG2(EGG)=or(OFLAG2(EGG),OPENBT)
  365. X      GO TO 1700
  366. XC
  367. XC THIEF AND WINNER IN SAME ROOM.
  368. XC
  369. X1100    IF(THFPOS.EQ.TREAS) GO TO 1700
  370. XC                                               !IF TREAS ROOM, NOTHING.
  371. X      IF(and(RFLAG(THFPOS),RLIGHT).NE.0) GO TO 1400
  372. X      IF(DFLAG) PRINT 20
  373. X20    FORMAT(' THIEFD-- IN ADV ROOM')
  374. X      IF(THFFLG) GO TO 1300
  375. XC                                               !THIEF ANNOUNCED?
  376. X      IF((RHERE.NE.0).OR.PROB(70,70)) GO TO 1150
  377. XC                                               !IF INVIS AND 30%.
  378. X      IF(OCAN(STILL).NE.THIEF) GO TO 1700
  379. XC                                               !ABORT IF NO STILLETTO.
  380. X      CALL NEWSTA(THIEF,583,THFPOS,0,0)
  381. XC                                               !INSERT THIEF INTO ROOM.
  382. X      THFFLG=.TRUE.
  383. XC                                               !THIEF IS ANNOUNCED.
  384. X      RETURN
  385. XC
  386. X1150  IF((RHERE.EQ.0).OR.(and(OFLAG2(THIEF),FITEBT).EQ.0))
  387. X     &          GO TO 1200
  388. X      IF(WINNIN(THIEF,WINNER)) GO TO 1175
  389. XC                                               !WINNING?
  390. X      CALL NEWSTA(THIEF,584,0,0,0)
  391. XC                                               !NO, VANISH THIEF.
  392. X      OFLAG2(THIEF)=and(OFLAG2(THIEF), not(FITEBT))
  393. X      IF(QSTILL(THFPOS)) CALL NEWSTA(STILL,0,0,THIEF,0)
  394. X      RETURN
  395. XC
  396. X1175  IF(PROB(90,90)) GO TO 1700
  397. XC                                               !90% CHANCE TO STAY.
  398. XC
  399. X1200  IF((RHERE.EQ.0).OR.PROB(70,70)) GO TO 1250
  400. XC                                               !IF VISIBLE AND 30%
  401. X      CALL NEWSTA(THIEF,585,0,0,0)
  402. XC                                               !VANISH THIEF.
  403. X      IF(QSTILL(THFPOS)) CALL NEWSTA(STILL,0,0,THIEF,0)
  404. X      RETURN
  405. XC
  406. X1300  IF(RHERE.EQ.0) GO TO 1700
  407. XC                                               !ANNOUNCED.  VISIBLE?
  408. X1250  IF(PROB(70,70)) RETURN
  409. XC                                               !70% CHANCE TO DO NOTHING.
  410. X      THFFLG=.TRUE.
  411. X      NR=ROBRM(THFPOS,100,0,0,-THIEF)+ROBADV(WINNER,0,0,-THIEF)
  412. X      I=586
  413. XC                                               !ROBBED EM.
  414. X      IF(RHERE.NE.0) I=588
  415. XC                                               !WAS HE VISIBLE?
  416. X      IF(NR.NE.0) I=I+1
  417. XC                                               !DID HE GET ANYTHING?
  418. X      CALL NEWSTA(THIEF,I,0,0,0)
  419. XC                                               !VANISH THIEF.
  420. X      IF(QSTILL(THFPOS))
  421. X     &          CALL NEWSTA(STILL,0,0,THIEF,0)
  422. X      IF((NR.NE.0).AND..NOT.LIT(THFPOS)) CALL RSPEAK(406)
  423. X      RHERE=0
  424. X      GO TO 1700
  425. XC                                               !ONWARD.
  426. XC
  427. XC NOT IN ADVENTURERS ROOM.
  428. XC
  429. X1400  CALL NEWSTA(THIEF,0,0,0,0)
  430. XC                                               !VANISH.
  431. X      RHERE=0
  432. X      IF(DFLAG) PRINT 30,THFPOS
  433. X30    FORMAT(' THIEFD-- IN ROOM ',I4)
  434. X      IF(QSTILL(THFPOS))
  435. X     &          CALL NEWSTA(STILL,0,0,THIEF,0)
  436. X      IF(and(RFLAG(THFPOS),RSEEN).EQ.0) GO TO 1700
  437. X      I=ROBRM(THFPOS,75,0,0,-THIEF)
  438. XC                                               !ROB ROOM 75%.
  439. X      IF((THFPOS.LT.MAZE1).OR.(THFPOS.GT.MAZ15).OR.
  440. X     &          (HERE.LT.MAZE1).OR.(HERE.GT.MAZ15)) GO TO 1500
  441. X      DO 1450 I=1,OLNT
  442. XC                                               !BOTH IN MAZE.
  443. X      IF(.NOT.QHERE(I,THFPOS).OR.PROB(60,60).OR.
  444. X     &   (and(OFLAG1(I),(VISIBT+TAKEBT)).NE.(VISIBT+TAKEBT)))
  445. X     &GO TO 1450
  446. X      CALL RSPSUB(590,ODESC2(I))
  447. XC                                               !TAKE OBJECT.
  448. X      IF(PROB(40,20)) GO TO 1700
  449. X      CALL NEWSTA(I,0,0,0,-THIEF)
  450. XC                                               !MOST OF THE TIME.
  451. X      OFLAG2(I)=or(OFLAG2(I),TCHBT)
  452. X      GO TO 1700
  453. X1450  CONTINUE
  454. X      GO TO 1700
  455. XC
  456. X1500  DO 1550 I=1,OLNT
  457. XC                                               !NOT IN MAZE.
  458. X        IF(.NOT.QHERE(I,THFPOS).OR.(OTVAL(I).NE.0).OR.PROB(80,60).OR.
  459. X     &    (and(OFLAG1(I),(VISIBT+TAKEBT)).NE.(VISIBT+TAKEBT)))
  460. X     &  GO TO 1550
  461. X        CALL NEWSTA(I,0,0,0,-THIEF)
  462. X        OFLAG2(I)=or(OFLAG2(I),TCHBT)
  463. X        GO TO 1700
  464. X1550  CONTINUE
  465. XC
  466. XC NOW MOVE TO NEW ROOM.
  467. XC
  468. X1700  IF(OADV(ROPE).EQ.-THIEF) DOMEF=.FALSE.
  469. X      IF(ONCE) GO TO 1800
  470. X      ONCE=.NOT.ONCE
  471. X1750  THFPOS=THFPOS-1
  472. XC                                               !NEXT ROOM.
  473. X      IF(THFPOS.LE.0) THFPOS=RLNT
  474. X      IF(and(RFLAG(THFPOS),(RLAND+RSACRD+REND)).NE.RLAND)
  475. X     &          GO TO 1750
  476. X      THFFLG=.FALSE.
  477. XC                                               !NOT ANNOUNCED.
  478. X      GO TO 1025
  479. XC                                               !ONCE MORE.
  480. XC
  481. XC ALL DONE.
  482. XC
  483. X1800  IF(THFPOS.EQ.TREAS) RETURN
  484. XC                                               !IN TREASURE ROOM?
  485. X      J=591
  486. XC                                               !NO, DROP STUFF.
  487. X      IF(THFPOS.NE.HERE) J=0
  488. X      DO 1850 I=1,OLNT
  489. X        IF((OADV(I).NE.-THIEF).OR.PROB(70,70).OR.
  490. X     &     (OTVAL(I).GT.0)) GO TO 1850
  491. X        CALL NEWSTA(I,J,THFPOS,0,0)
  492. X        J=0
  493. X1850  CONTINUE
  494. X      RETURN
  495. XC
  496. X      END
  497. $ CALL UNPACK [.SRC]ACTORS.FOR;1 1595292988
  498. $ create 'f'
  499. XC
  500. XC ADVENTURERS
  501. XC
  502. X      COMMON /ADVS/ ALNT,AROOM(4),ASCORE(4),AVEHIC(4),
  503. X     &              AOBJ(4),AACTIO(4),ASTREN(4),AFLAG(4)
  504. X      INTEGER EQA(4,7)
  505. X      EQUIVALENCE (AROOM, EQA)
  506. XC
  507. X      COMMON /AFLAGS/ ASTAG
  508. XC
  509. X      COMMON /AINDEX/ PLAYER,AROBOT,AMASTR
  510. $ CALL UNPACK [.SRC]ADVERS.LIB;1 269444062
  511. $ create 'f'
  512. XC BALLOP-       BALLOON FUNCTION
  513. XC
  514. XC COPYRIGHT 1980, INFOCOM COMPUTERS AND COMMUNICATIONS, CAMBRIDGE MA. 02142
  515. XC ALL RIGHTS RESERVED, COMMERCIAL USAGE STRICTLY PROHIBITED
  516. XC WRITTEN BY R. M. SUPNIK
  517. XC
  518. XC DECLARATIONS
  519. XC
  520. X      LOGICAL FUNCTION BALLOP(ARG)
  521. X      IMPLICIT INTEGER (A-Z)
  522. X      LOGICAL FINDXT,QEMPTY
  523. X
  524. X      INCLUDE 'PARSER.LIB'
  525. X      INCLUDE 'GAMESTATE.LIB'
  526. X      INCLUDE 'STATE.LIB'
  527. X      INCLUDE 'ROOMS.LIB'
  528. X      INCLUDE 'RFLAG.LIB'
  529. X      INCLUDE 'CURXT.LIB'
  530. X      INCLUDE 'XPARS.LIB'
  531. X      INCLUDE 'OBJECTS.LIB'
  532. X      INCLUDE 'OFLAGS.LIB'
  533. X      INCLUDE 'OINDEX.LIB'
  534. X      INCLUDE 'CLOCK.LIB'
  535. X
  536. X      INCLUDE 'VERBS.LIB'
  537. X      INCLUDE 'FLAGS.LIB'
  538. X`0C
  539. XC BALLOP, PAGE 2
  540. XC
  541. X      BALLOP=.TRUE.
  542. XC                                               !ASSUME WINS.
  543. X      IF(ARG.NE.2) GO TO 200
  544. XC                                               !READOUT?
  545. X      IF(PRSA.NE.LOOKW) GO TO 10
  546. XC                                               !ONLY PROCESS LOOK.
  547. X      IF(BINFF.NE.0) GO TO 50
  548. XC                                               !INFLATED?
  549. X      CALL RSPEAK(543)
  550. XC                                               !NO.
  551. X      GO TO 100
  552. X50    CALL RSPSUB(544,ODESC2(BINFF))
  553. XC                                               !YES.
  554. X100   IF(BTIEF.NE.0) CALL RSPEAK(545)
  555. XC                                               !HOOKED?
  556. X      RETURN
  557. XC
  558. X200   IF(ARG.NE.1) GO TO 500
  559. XC                                               !READIN?
  560. X      IF(PRSA.NE.WALKW) GO TO 300
  561. XC                                               !WALK?
  562. X      IF(FINDXT(PRSO,HERE)) GO TO 250
  563. XC                                               !VALID EXIT?
  564. X      CALL RSPEAK(546)
  565. XC                                               !NO, JOKE.
  566. X      RETURN
  567. XC
  568. X250   IF(BTIEF.EQ.0) GO TO 275
  569. XC                                               !TIED UP?
  570. X      CALL RSPEAK(547)
  571. XC                                               !YES, JOKE.
  572. X      RETURN
  573. XC
  574. X275   IF(XTYPE.NE.XNORM) GO TO 10
  575. XC                                               !NORMAL EXIT?
  576. X      IF(and(RFLAG(XROOM1),RMUNG).EQ.0) BLOC=XROOM1
  577. X10    BALLOP=.FALSE.
  578. X      RETURN
  579. XC
  580. X300   IF((PRSA.NE.TAKEW).OR.(PRSO.NE.BINFF)) GO TO 350
  581. X      CALL RSPSUB(548,ODESC2(BINFF))
  582. XC                                               !RECEP CONT TOO HOT.
  583. X      RETURN
  584. XC
  585. X350   IF((PRSA.NE.PUTW).OR.(PRSI.NE.RECEP).OR.QEMPTY(RECEP))
  586. X     &          GO TO 10
  587. X      CALL RSPEAK(549)
  588. X      RETURN
  589. XC
  590. X500   IF((PRSA.NE.UNBOAW).OR.(and(RFLAG(HERE),RLAND).EQ.0))
  591. X     &          GO TO 600
  592. X      IF(BINFF.NE.0) CTICK(CEVBAL)=3
  593. XC                                               !HE GOT OUT, START BALLOON.
  594. X      GO TO 10
  595. XC
  596. X600   IF((PRSA.NE.BURNW).OR.(OCAN(PRSO).NE.RECEP)) GO TO 700
  597. X      CALL RSPSUB(550,ODESC2(PRSO))
  598. XC                                               !LIGHT FIRE IN RECEP.
  599. X      CTICK(CEVBRN)=OSIZE(PRSO)*20
  600. X      OFLAG1(PRSO)=or(OFLAG1(PRSO),
  601. X     &          and((ONBT+FLAMBT+LITEBT), not(TAKEBT+READBT)))
  602. X      IF(BINFF.NE.0) RETURN
  603. X      IF(.NOT.BLABF) CALL NEWSTA(BLABE,0,0,BALLO,0)
  604. X      BLABF=.TRUE.
  605. X      BINFF=PRSO
  606. X      CTICK(CEVBAL)=3
  607. X      CALL RSPEAK(551)
  608. X      RETURN
  609. XC
  610. X700   IF((PRSA.EQ.UNBOAW).AND.(BINFF.NE.0).AND.
  611. X     &   (and(RFLAG(HERE),RLAND).NE.0))
  612. X     &CTICK(CEVBAL)=3
  613. X      GO TO 10
  614. XC
  615. X      END
  616. $ CALL UNPACK [.SRC]BALLOP.FOR;1 608267734
  617. $ create 'f'
  618. XC
  619. XC CLOCK INTERRUPTS
  620. XC
  621. X      LOGICAL CFLAG
  622. X      COMMON /CEVENT/ CLNT,CTICK(25),CACTIO(25),CFLAG(25)
  623. XC
  624. X      COMMON /CINDEX/ CEVCUR,CEVMNT,CEVLNT,CEVMAT,CEVCND,
  625. X     &`09`09CEVBAL,CEVBRN,CEVFUS,CEVLED,CEVSAF,CEVVLG,
  626. X     &`09`09CEVGNO,CEVBUC,CEVSPH,CEVEGH,
  627. X     &`09`09CEVFOR,CEVSCL,CEVZGI,CEVZGO,CEVSTE,
  628. X     &`09`09CEVMRS,CEVPIN,CEVINQ,CEVFOL
  629. X      INTEGER EQC(25,2)
  630. X      EQUIVALENCE (CTICK, EQC)
  631. $ CALL UNPACK [.SRC]CLOCK.LIB;1 724545577
  632. $ create 'f'
  633. XC CEVAPP- CLOCK EVENT APPLICABLES
  634. XC
  635. XC COPYRIGHT 1980, INFOCOM COMPUTERS AND COMMUNICATIONS, CAMBRIDGE MA. 02142
  636. XC ALL RIGHTS RESERVED, COMMERCIAL USAGE STRICTLY PROHIBITED
  637. XC WRITTEN BY R. M. SUPNIK
  638. XC
  639. XC DECLARATIONS
  640. XC
  641. X      SUBROUTINE CEVAPP(RI)
  642. X      IMPLICIT INTEGER (A-Z)
  643. X      INTEGER CNDTCK(10),LMPTCK(12)
  644. X      LOGICAL FINDXT,LIT,RMDESC,QOPEN,MOVETO
  645. X      LOGICAL F,QLEDGE,QVAIR,QHERE,PROB
  646. X
  647. X      INCLUDE 'GAMESTATE.LIB'
  648. X      INCLUDE 'STATE.LIB'
  649. X      INCLUDE 'ROOMS.LIB'
  650. X      INCLUDE 'RFLAG.LIB'
  651. X      INCLUDE 'RINDEX.LIB'
  652. X      INCLUDE 'OBJECTS.LIB'
  653. X      INCLUDE 'OFLAGS.LIB'
  654. X      INCLUDE 'OINDEX.LIB'
  655. X      INCLUDE 'CLOCK.LIB'
  656. X      INCLUDE 'CURXT.LIB'
  657. X      INCLUDE 'XSRCH.LIB'
  658. X      INCLUDE 'VILLIANS.LIB'
  659. X      INCLUDE 'ADVERS.LIB'
  660. X      INCLUDE 'FLAGS.LIB'
  661. XC
  662. XC FUNCTIONS AND DATA
  663. XC
  664. X      QOPEN(R)=(and(OFLAG2(R),OPENBT)).NE.0
  665. X      QLEDGE(R)=(R.EQ.LEDG2).OR.(R.EQ.LEDG3).OR.(R.EQ.LEDG4).OR.
  666. X     &          (R.EQ.VLBOT)
  667. X      QVAIR(R)=(R.EQ.VAIR1).OR.(R.EQ.VAIR2).OR.(R.EQ.VAIR3).OR.
  668. X     &         (R.EQ.VAIR4)
  669. X      DATA CNDTCK/50,20,10,5,0,156,156,156,157,0/
  670. X      DATA LMPTCK/50,30,20,10,4,0,154,154,154,154,155,0/
  671. X`0C
  672. XC CEVAPP, PAGE 2
  673. XC
  674. X      IF(RI.EQ.0) RETURN
  675. XC                                               !IGNORE DISABLED.
  676. X      GO TO (1000,2000,3000,4000,5000,6000,7000,8000,9000,10000,
  677. X     &       11000,12000,13000,14000,15000,16000,17000,18000,19000,
  678. X     &       20000,21000,22000,23000,24000),RI
  679. X      CALL BUG(3,RI)
  680. XC
  681. XC CEV1--        CURE CLOCK.  LET PLAYER SLOWLY RECOVER.
  682. XC
  683. X1000  ASTREN(PLAYER)=MIN0(0,ASTREN(PLAYER)+1)
  684. XC                                               !RECOVER.
  685. X      IF(ASTREN(PLAYER).GE.0) RETURN
  686. XC                                               !FULLY RECOVERED?
  687. X      CTICK(CEVCUR)=30
  688. XC                                               !NO, WAIT SOME MORE.
  689. X      RETURN
  690. XC
  691. XC CEV2--        MAINT-ROOM WITH LEAK.  RAISE THE WATER LEVEL.
  692. XC
  693. X2000  IF(HERE.EQ.MAINT) CALL RSPEAK(71+(RVMNT/2))
  694. XC                                               !DESCRIBE.
  695. X      RVMNT=RVMNT+1
  696. XC                                               !RAISE WATER LEVEL.
  697. X      IF(RVMNT.LE.16) RETURN
  698. XC                                               !IF NOT FULL, EXIT.
  699. X      CTICK(CEVMNT)=0
  700. XC                                               !FULL, DISABLE CLOCK.
  701. X      RFLAG(MAINT)=or(RFLAG(MAINT),RMUNG)
  702. X      RRAND(MAINT)=80
  703. XC                                               !SAY IT IS FULL OF WATER.
  704. X      IF(HERE.EQ.MAINT) CALL JIGSUP(81)
  705. XC                                               !DROWN HIM IF PRESENT.
  706. X      RETURN
  707. XC
  708. XC CEV3--        LANTERN.  DESCRIBE GROWING DIMNESS.
  709. XC
  710. X3000  CALL LITINT(LAMP,ORLAMP,CEVLNT,LMPTCK,12)
  711. XC                                               !DO LIGHT INTERRUPT.
  712. X      RETURN
  713. XC
  714. XC CEV4--        MATCH.  OUT IT GOES.
  715. XC
  716. X4000  CALL RSPEAK(153)
  717. XC                                               !MATCH IS OUT.
  718. X      OFLAG1(MATCH)=and(OFLAG1(MATCH), not(ONBT))
  719. X      RETURN
  720. XC
  721. XC CEV5--        CANDLE.  DESCRIBE GROWING DIMNESS.
  722. XC
  723. X5000  CALL LITINT(CANDL,ORCAND,CEVCND,CNDTCK,10)
  724. XC                                               !DO CANDLE INTERRUPT.
  725. X      RETURN
  726. X`0C
  727. XC CEVAPP, PAGE 3
  728. XC
  729. XC CEV6--        BALLOON
  730. XC
  731. X6000  CTICK(CEVBAL)=3
  732. XC                                               !RESCHEDULE INTERRUPT.
  733. X      F=AVEHIC(WINNER).EQ.BALLO
  734. XC                                               !SEE IF IN BALLOON.
  735. X      IF(BLOC.EQ.VLBOT) GO TO 6800
  736. XC                                               !AT BOTTOM?
  737. X      IF(QLEDGE(BLOC)) GO TO 6700
  738. XC                                               !ON LEDGE?
  739. X      IF(QOPEN(RECEP).AND.(BINFF.NE.0))
  740. X     &          GO TO 6500
  741. XC
  742. XC BALLOON IS IN MIDAIR AND IS DEFLATED (OR HAS RECEPTACLE CLOSED).
  743. XC FALL TO NEXT ROOM.
  744. XC
  745. X      IF(BLOC.NE.VAIR1) GO TO 6300
  746. XC                                               !IN VAIR1?
  747. X      BLOC=VLBOT
  748. XC                                               !YES, NOW AT VLBOT.
  749. X      CALL NEWSTA(BALLO,0,BLOC,0,0)
  750. X      IF(F) GO TO 6200
  751. XC                                               !IN BALLOON?
  752. X      IF(QLEDGE(HERE)) CALL RSPEAK(530)
  753. XC                                               !ON LEDGE, DESCRIBE.
  754. X      RETURN
  755. XC
  756. X6200  F=MOVETO(BLOC,WINNER)
  757. XC                                               !MOVE HIM.
  758. X      IF(BINFF.EQ.0) GO TO 6250
  759. XC                                               !IN BALLOON.  INFLATED?
  760. X      CALL RSPEAK(531)
  761. XC                                               !YES, LANDED.
  762. X      F=RMDESC(0)
  763. XC                                               !DESCRIBE.
  764. X      RETURN
  765. XC
  766. X6250  CALL NEWSTA(BALLO,532,0,0,0)
  767. XC                                               !NO, BALLOON & CONTENTS DIE.
  768. X      CALL NEWSTA(DBALL,0,BLOC,0,0)
  769. XC                                               !INSERT DEAD BALLOON.
  770. X      AVEHIC(WINNER)=0
  771. XC                                               !NOT IN VEHICLE.
  772. X      CFLAG(CEVBAL)=.FALSE.
  773. XC                                               !DISABLE INTERRUPTS.
  774. X      CFLAG(CEVBRN)=.FALSE.
  775. X      BINFF=0
  776. X      BTIEF=0
  777. X      RETURN
  778. XC
  779. X6300  BLOC=BLOC-1
  780. XC                                               !NOT IN VAIR1, DESCEND.
  781. X      CALL NEWSTA(BALLO,0,BLOC,0,0)
  782. X      IF(F) GO TO 6400
  783. XC                                               !IS HE IN BALLOON?
  784. X      IF(QLEDGE(HERE)) CALL RSPEAK(533)
  785. XC                                               !IF ON LEDGE, DESCRIBE.
  786. X      RETURN
  787. XC
  788. X6400  F=MOVETO(BLOC,WINNER)
  789. XC                                               !IN BALLOON, MOVE HIM.
  790. X      CALL RSPEAK(534)
  791. XC                                               !DESCRIBE.
  792. X      F=RMDESC(0)
  793. X      RETURN
  794. XC
  795. XC BALLOON IS IN MIDAIR AND IS INFLATED, UP-UP-AND-AWAY
  796. XC                                               !
  797. XC
  798. X6500  IF(BLOC.NE.VAIR4) GO TO 6600
  799. XC                                               !AT VAIR4?
  800. X      CTICK(CEVBRN)=0
  801. X      CTICK(CEVBAL)=0
  802. X      BINFF=0
  803. X      BTIEF=0
  804. X      BLOC=VLBOT
  805. XC                                               !FALL TO BOTTOM.
  806. X      CALL NEWSTA(BALLO,0,0,0,0)
  807. XC                                               !BALLOON & CONTENTS DIE.
  808. X      CALL NEWSTA(DBALL,0,BLOC,0,0)
  809. XC                                               !SUBSTITUTE DEAD BALLOON.
  810. X      IF(F) GO TO 6550
  811. XC                                               !WAS HE IN IT?
  812. X      IF(QLEDGE(HERE)) CALL RSPEAK(535)
  813. XC                                               !IF HE CAN SEE, DESCRIBE.
  814. X      RETURN
  815. XC
  816. X6550  CALL JIGSUP(536)
  817. XC                                               !IN BALLOON AT CRASH, DIE.
  818. X      RETURN
  819. XC
  820. X6600  BLOC=BLOC+1
  821. XC                                               !NOT AT VAIR4, GO UP.
  822. X      CALL NEWSTA(BALLO,0,BLOC,0,0)
  823. X      IF(F) GO TO 6650
  824. XC                                               !IN BALLOON?
  825. X      IF(QLEDGE(HERE)) CALL RSPEAK(537)
  826. XC                                               !CAN HE SEE IT?
  827. X      RETURN
  828. XC
  829. X6650  F=MOVETO(BLOC,WINNER)
  830. XC                                               !MOVE PLAYER.
  831. X      CALL RSPEAK(538)
  832. XC                                               !DESCRIBE.
  833. X      F=RMDESC(0)
  834. X      RETURN
  835. XC
  836. XC ON LEDGE, GOES TO MIDAIR ROOM WHETHER INFLATED OR NOT.
  837. XC
  838. X6700  BLOC=BLOC+(VAIR2-LEDG2)
  839. XC                                               !MOVE TO MIDAIR.
  840. X      CALL NEWSTA(BALLO,0,BLOC,0,0)
  841. X      IF(F) GO TO 6750
  842. XC                                               !IN BALLOON?
  843. X      IF(QLEDGE(HERE)) CALL RSPEAK(539)
  844. XC                                               !NO, STRANDED.
  845. X      CTICK(CEVVLG)=10
  846. XC                                               !MATERIALIZE GNOME.
  847. X      RETURN
  848. XC
  849. X6750  F=MOVETO(BLOC,WINNER)
  850. XC                                               !MOVE TO NEW ROOM.
  851. X      CALL RSPEAK(540)
  852. XC                                               !DESCRIBE.
  853. X      F=RMDESC(0)
  854. X      RETURN
  855. XC
  856. XC AT BOTTOM, GO UP IF INFLATED, DO NOTHING IF DEFLATED.
  857. XC
  858. X6800  IF((BINFF.EQ.0).OR..NOT.QOPEN(RECEP)) RETURN
  859. X      BLOC=VAIR1
  860. XC                                               !INFLATED AND OPEN,
  861. X      CALL NEWSTA(BALLO,0,BLOC,0,0)
  862. XC                                               !GO UP TO VAIR1.
  863. X      IF(F) GO TO 6850
  864. XC                                               !IN BALLOON?
  865. X      IF(QLEDGE(HERE)) CALL RSPEAK(541)
  866. XC                                               !IF CAN SEE, DESCRIBE.
  867. X      RETURN
  868. XC
  869. X6850  F=MOVETO(BLOC,WINNER)
  870. XC                                               !MOVE PLAYER.
  871. X      CALL RSPEAK(542)
  872. X      F=RMDESC(0)
  873. X      RETURN
  874. X`0C
  875. XC CEVAPP, PAGE 4
  876. XC
  877. XC CEV7--        BALLOON BURNUP
  878. XC
  879. X7000  DO 7100 I=1,OLNT
  880. XC                                               !FIND BURNING OBJECT
  881. X        IF((RECEP.EQ.OCAN(I)).AND.((and(OFLAG1(I),FLAMBT)).NE.0))
  882. X     &          GO TO 7200
  883. X7100  CONTINUE
  884. X      CALL BUG(4,0)
  885. XC
  886. X7200  CALL NEWSTA(I,0,0,0,0)
  887. XC                                               !VANISH OBJECT.
  888. X      BINFF=0
  889. XC                                               !UNINFLATED.
  890. X      IF(HERE.EQ.BLOC) CALL RSPSUB(292,ODESC2(I))
  891. XC                                               !DESCRIBE.
  892. X      RETURN
  893. XC
  894. XC CEV8--        FUSE FUNCTION
  895. XC
  896. X8000  IF(OCAN(FUSE).NE.BRICK) GO TO 8500
  897. XC                                               !IGNITED BRICK?
  898. X      BR=OROOM(BRICK)
  899. XC                                               !GET BRICK ROOM.
  900. X      BC=OCAN(BRICK)
  901. XC                                               !GET CONTAINER.
  902. X      IF((BR.EQ.0).AND.(BC.NE.0)) BR=OROOM(BC)
  903. X      CALL NEWSTA(FUSE,0,0,0,0)
  904. XC                                               !KILL FUSE.
  905. X      CALL NEWSTA(BRICK,0,0,0,0)
  906. XC                                               !KILL BRICK.
  907. X      IF((BR.NE.0).AND.(BR.NE.HERE)) GO TO 8100
  908. XC                                               !BRICK ELSEWHERE?
  909. XC
  910. X      RFLAG(HERE)=or(RFLAG(HERE),RMUNG)
  911. X      RRAND(HERE)=114
  912. XC                                               !MUNG ROOM.
  913. X      CALL JIGSUP(150)
  914. XC                                               !DEAD.
  915. X      RETURN
  916. XC
  917. X8100  CALL RSPEAK(151)
  918. XC                                               !BOOM.
  919. X      MUNGRM=BR
  920. XC                                               !SAVE ROOM THAT BLEW.
  921. X      CTICK(CEVSAF)=5
  922. XC                                               !SET SAFE INTERRUPT.
  923. X      IF(BR.NE.MSAFE) GO TO 8200
  924. XC                                               !BLEW SAFE ROOM?
  925. X      IF(BC.NE.SSLOT) RETURN
  926. XC                                               !WAS BRICK IN SAFE?
  927. X      CALL NEWSTA(SSLOT,0,0,0,0)
  928. XC                                               !KILL SLOT.
  929. X      OFLAG2(SAFE)=or(OFLAG2(SAFE),OPENBT)
  930. X      SAFEF=.TRUE.
  931. XC                                               !INDICATE SAFE BLOWN.
  932. X      RETURN
  933. XC
  934. X8200  DO 8250 I=1,OLNT
  935. XC                                               !BLEW WRONG ROOM.
  936. X        IF(QHERE(I,BR) .AND. ((and(OFLAG1(I),TAKEBT)).NE.0))
  937. X     &          CALL NEWSTA(I,0,0,0,0)
  938. X8250  CONTINUE
  939. X      IF(BR.NE.LROOM) RETURN
  940. XC                                               !BLEW LIVING ROOM?
  941. X      DO 8300 I=1,OLNT
  942. X        IF(OCAN(I).EQ.TCASE) CALL NEWSTA(I,0,0,0,0)
  943. XC                                               !KILL TROPHY CASE.
  944. X8300  CONTINUE
  945. X      RETURN
  946. XC
  947. X8500  IF(QHERE(FUSE,HERE).OR.(OADV(FUSE).EQ.WINNER))
  948. X     &          CALL RSPEAK(152)
  949. X      CALL NEWSTA(FUSE,0,0,0,0)
  950. XC                                               !KILL FUSE.
  951. X      RETURN
  952. X`0C
  953. XC CEVAPP, PAGE 5
  954. XC
  955. XC CEV9--        LEDGE MUNGE.
  956. XC
  957. X9000  RFLAG(LEDG4)=or(RFLAG(LEDG4),RMUNG)
  958. X      RRAND(LEDG4)=109
  959. X      IF(HERE.EQ.LEDG4) GO TO 9100
  960. XC                                               !WAS HE THERE?
  961. X      CALL RSPEAK(110)
  962. XC                                               !NO, NARROW ESCAPE.
  963. X      RETURN
  964. XC
  965. X9100  IF(AVEHIC(WINNER).NE.0) GO TO 9200
  966. XC                                               !IN VEHICLE?
  967. X      CALL JIGSUP(111)
  968. XC                                               !NO, DEAD.
  969. X      RETURN
  970. XC
  971. X9200  IF(BTIEF.NE.0) GO TO 9300
  972. XC                                               !TIED TO LEDGE?
  973. X      CALL RSPEAK(112)
  974. XC                                               !NO, NO PLACE TO LAND.
  975. X      RETURN
  976. XC
  977. X9300  BLOC=VLBOT
  978. XC                                               !YES, CRASH BALLOON.
  979. X      CALL NEWSTA(BALLO,0,0,0,0)
  980. XC                                               !BALLOON & CONTENTS DIE.
  981. X      CALL NEWSTA(DBALL,0,BLOC,0,0)
  982. XC                                               !INSERT DEAD BALLOON.
  983. X      BTIEF=0
  984. X      BINFF=0
  985. X      CFLAG(CEVBAL)=.FALSE.
  986. X      CFLAG(CEVBRN)=.FALSE.
  987. X      CALL JIGSUP(113)
  988. XC                                               !DEAD
  989. X      RETURN
  990. XC
  991. XC CEV10--       SAFE MUNG.
  992. XC
  993. X10000 RFLAG(MUNGRM)=or(RFLAG(MUNGRM),RMUNG)
  994. X      RRAND(MUNGRM)=114
  995. X      IF(HERE.EQ.MUNGRM) GO TO 10100
  996. XC                                               !IS HE PRESENT?
  997. X      CALL RSPEAK(115)
  998. XC                                               !LET HIM KNOW.
  999. X      IF(MUNGRM.EQ.MSAFE) CTICK(CEVLED)=8
  1000. XC                                               !START LEDGE CLOCK.
  1001. X      RETURN
  1002. XC
  1003. X10100 I=116
  1004. XC                                               !HE'S DEAD,
  1005. X      IF((and(RFLAG(HERE),RHOUSE)).NE.0) I=117
  1006. X      CALL JIGSUP(I)
  1007. XC                                               !LET HIM KNOW.
  1008. X      RETURN
  1009. X`0C
  1010. XC CEVAPP, PAGE 6
  1011. XC
  1012. XC CEV11--       VOLCANO GNOME
  1013. XC
  1014. X11000 IF(QLEDGE(HERE)) GO TO 11100
  1015. XC                                               !IS HE ON LEDGE?
  1016. X      CTICK(CEVVLG)=1
  1017. XC                                               !NO, WAIT A WHILE.
  1018. X      RETURN
  1019. XC
  1020. X11100 CALL NEWSTA(GNOME,118,HERE,0,0)
  1021. XC                                               !YES, MATERIALIZE GNOME.
  1022. X      RETURN
  1023. XC
  1024. XC CEV12--       VOLCANO GNOME DISAPPEARS
  1025. XC
  1026. X12000 CALL NEWSTA(GNOME,149,0,0,0)
  1027. XC                                               !DISAPPEAR THE GNOME.
  1028. X      RETURN
  1029. XC
  1030. XC CEV13--       BUCKET.
  1031. XC
  1032. X13000 IF(OCAN(WATER).EQ.BUCKE)
  1033. X     &          CALL NEWSTA(WATER,0,0,0,0)
  1034. X      RETURN
  1035. XC
  1036. XC CEV14--       SPHERE.  IF EXPIRES, HE'S TRAPPED.
  1037. XC
  1038. X14000 RFLAG(CAGER)=or(RFLAG(CAGER),RMUNG)
  1039. X      RRAND(CAGER)=147
  1040. X      CALL JIGSUP(148)
  1041. XC                                               !MUNG PLAYER.
  1042. X      RETURN
  1043. XC
  1044. XC CEV15--       END GAME HERALD.
  1045. XC
  1046. X15000 ENDGMF=.TRUE.
  1047. XC                                               !WE'RE IN ENDGAME.
  1048. X      CALL RSPEAK(119)
  1049. XC                                               !INFORM OF ENDGAME.
  1050. X      RETURN
  1051. X`0C
  1052. XC CEVAPP, PAGE 7
  1053. XC
  1054. XC CEV16--       FOREST MURMURS
  1055. XC
  1056. X16000 CFLAG(CEVFOR)=(HERE.EQ.MTREE).OR.
  1057. X     &          ((HERE.GE.FORE1).AND.(HERE.LT.CLEAR))
  1058. X      IF(CFLAG(CEVFOR).AND.PROB(10,10)) CALL RSPEAK(635)
  1059. X      RETURN
  1060. XC
  1061. XC CEV17--       SCOL ALARM
  1062. XC
  1063. X17000 IF(HERE.EQ.BKTWI) CFLAG(CEVZGI)=.TRUE.
  1064. XC                                               !IF IN TWI, GNOME.
  1065. X      IF(HERE.EQ.BKVAU) CALL JIGSUP(636)
  1066. XC                                               !IF IN VAU, DEAD.
  1067. X      RETURN
  1068. XC
  1069. XC CEV18--       ENTER GNOME OF ZURICH
  1070. XC
  1071. X18000 CFLAG(CEVZGO)=.TRUE.
  1072. XC                                               !EXITS, TOO.
  1073. X      CALL NEWSTA(ZGNOM,0,BKTWI,0,0)
  1074. XC                                               !PLACE IN TWI.
  1075. X      IF(HERE.EQ.BKTWI) CALL RSPEAK(637)
  1076. XC                                               !ANNOUNCE.
  1077. X      RETURN
  1078. XC
  1079. XC CEV19--       EXIT GNOME
  1080. XC
  1081. X19000 CALL NEWSTA(ZGNOM,0,0,0,0)
  1082. XC                                               !VANISH.
  1083. X      IF(HERE.EQ.BKTWI) CALL RSPEAK(638)
  1084. XC                                               !ANNOUNCE.
  1085. X      RETURN
  1086. X`0C
  1087. XC CEVAPP, PAGE 8
  1088. XC
  1089. XC CEV20--       START OF ENDGAME
  1090. XC
  1091. X20000 IF(SPELLF) GO TO 20200
  1092. XC                                               !SPELL HIS WAY IN?
  1093. X      IF(HERE.NE.CRYPT) RETURN
  1094. XC                                               !NO, STILL IN TOMB?
  1095. X      IF(.NOT.LIT(HERE)) GO TO 20100
  1096. XC                                               !LIGHTS OFF?
  1097. X      CTICK(CEVSTE)=3
  1098. XC                                               !RESCHEDULE.
  1099. X      RETURN
  1100. XC
  1101. X20100 CALL RSPEAK(727)
  1102. XC                                               !ANNOUNCE.
  1103. X20200 DO 20300 I=1,OLNT
  1104. XC                                               !STRIP HIM OF OBJS.
  1105. X        CALL NEWSTA(I,0,OROOM(I),OCAN(I),0)
  1106. X20300 CONTINUE
  1107. X      CALL NEWSTA(LAMP,0,0,0,PLAYER)
  1108. XC                                               !GIVE HIM LAMP.
  1109. X      CALL NEWSTA(SWORD,0,0,0,PLAYER)
  1110. XC                                               !GIVE HIM SWORD.
  1111. XC
  1112. X      OFLAG1(LAMP)=and((or(OFLAG1(LAMP),LITEBT)), not(ONBT))
  1113. X      OFLAG2(LAMP)=or(OFLAG2(LAMP),TCHBT)
  1114. X      CFLAG(CEVLNT)=.FALSE.
  1115. XC                                               !LAMP IS GOOD AS NEW.
  1116. X      CTICK(CEVLNT)=350
  1117. X      ORLAMP=0
  1118. X      OFLAG2(SWORD)=or(OFLAG2(SWORD),TCHBT)
  1119. X      SWDACT=.TRUE.
  1120. X      SWDSTA=0
  1121. XC
  1122. X      THFACT=.FALSE.
  1123. XC                                               !THIEF GONE.
  1124. X      ENDGMF=.TRUE.
  1125. XC                                               !ENDGAME RUNNING.
  1126. X      CFLAG(CEVMAT)=.FALSE.
  1127. XC                                               !MATCHES GONE,
  1128. X      CFLAG(CEVCND)=.FALSE.
  1129. XC                                               !CANDLES GONE.
  1130. XC
  1131. X      CALL SCRUPD(RVAL(CRYPT))
  1132. XC                                               !SCORE CRYPT,
  1133. X      RVAL(CRYPT)=0
  1134. XC                                               !BUT ONLY ONCE.
  1135. X      F=MOVETO(TSTRS,WINNER)
  1136. XC                                               !TO TOP OF STAIRS,
  1137. X      F=RMDESC(3)
  1138. XC                                               !AND DESCRIBE.
  1139. X      RETURN
  1140. XC                                               !BAM
  1141. XC                                               !
  1142. XC
  1143. XC CEV21--       MIRROR CLOSES.
  1144. XC
  1145. X21000 MRPSHF=.FALSE.
  1146. XC                                               !BUTTON IS OUT.
  1147. X      MROPNF=.FALSE.
  1148. XC                                               !MIRROR IS CLOSED.
  1149. X      IF(HERE.EQ.MRANT) CALL RSPEAK(728)
  1150. XC                                               !DESCRIBE BUTTON.
  1151. X      IF((HERE.EQ.INMIR).OR.(MRHERE(HERE).EQ.1))
  1152. X     &          CALL RSPEAK(729)
  1153. X      RETURN
  1154. X`0C
  1155. XC CEVAPP, PAGE 9
  1156. XC
  1157. XC CEV22--       DOOR CLOSES.
  1158. XC
  1159. X22000 IF(WDOPNF) CALL RSPEAK(730)
  1160. XC                                               !DESCRIBE.
  1161. X      WDOPNF=.FALSE.
  1162. XC                                               !CLOSED.
  1163. X      RETURN
  1164. XC
  1165. XC CEV23--       INQUISITOR'S QUESTION
  1166. XC
  1167. X23000 IF(AROOM(PLAYER).NE.FDOOR) RETURN
  1168. XC                                               !IF PLAYER LEFT, DIE.
  1169. X      CALL RSPEAK(769)
  1170. X      CALL RSPEAK(770+QUESNO)
  1171. X      CTICK(CEVINQ)=2
  1172. X      RETURN
  1173. XC
  1174. XC CEV24--       MASTER FOLLOWS
  1175. XC
  1176. X24000 IF(AROOM(AMASTR).EQ.HERE) RETURN
  1177. XC                                               !NO MOVEMENT, DONE.
  1178. X      IF((HERE.NE.CELL).AND.(HERE.NE.PCELL)) GO TO 24100
  1179. X      IF(FOLLWF) CALL RSPEAK(811)
  1180. XC                                               !WONT GO TO CELLS.
  1181. X      FOLLWF=.FALSE.
  1182. X      RETURN
  1183. XC
  1184. X24100 FOLLWF=.TRUE.
  1185. XC                                               !FOLLOWING.
  1186. X      I=812
  1187. XC                                               !ASSUME CATCHES UP.
  1188. X      DO 24200 J=XMIN,XMAX,XMIN
  1189. X        IF(FINDXT(J,AROOM(AMASTR)).AND.(XROOM1.EQ.HERE))
  1190. X     &          I=813
  1191. X24200 CONTINUE
  1192. X      CALL RSPEAK(I)
  1193. X      CALL NEWSTA(MASTER,0,HERE,0,0)
  1194. XC                                               !MOVE MASTER OBJECT.
  1195. X      AROOM(AMASTR)=HERE
  1196. XC                                               !MOVE MASTER PLAYER.
  1197. X      RETURN
  1198. XC
  1199. X      END
  1200. XC LITINT-       LIGHT INTERRUPT PROCESSOR
  1201. XC
  1202. XC DECLARATIONS
  1203. XC
  1204. X      SUBROUTINE LITINT(OBJ,CTR,CEV,TICKS,TICKLN)
  1205. X      IMPLICIT INTEGER (A-Z)
  1206. X      INTEGER TICKS(TICKLN)
  1207. X
  1208. X      INCLUDE 'GAMESTATE.LIB'
  1209. X      INCLUDE 'OBJECTS.LIB'
  1210. X      INCLUDE 'OFLAGS.LIB'
  1211. X      INCLUDE 'CLOCK.LIB'
  1212. XC
  1213. X      CTR=CTR+1
  1214. XC                                               !ADVANCE STATE CNTR.
  1215. X      CTICK(CEV)=TICKS(CTR)
  1216. XC                                               !RESET INTERRUPT.
  1217. X      IF(CTICK(CEV).NE.0) GO TO 100
  1218. XC                                               !EXPIRED?
  1219. X      OFLAG1(OBJ)=and(OFLAG1(OBJ), not(LITEBT+FLAMBT+ONBT))
  1220. X      IF((OROOM(OBJ).EQ.HERE).OR.(OADV(OBJ).EQ.WINNER))
  1221. X     &          CALL RSPSUB(293,ODESC2(OBJ))
  1222. X      RETURN
  1223. XC
  1224. X100   IF((OROOM(OBJ).EQ.HERE).OR.(OADV(OBJ).EQ.WINNER))
  1225. X     &          CALL RSPEAK(TICKS(CTR+(TICKLN/2)))
  1226. X      RETURN
  1227. XC
  1228. X      END
  1229. $ CALL UNPACK [.SRC]CLOCKR.FOR;1 1380514894
  1230. $ create 'f'
  1231. XC
  1232. XC CURRENT EXITS
  1233. XC
  1234. X      COMMON /CURXT/ XTYPE,XROOM1,XSTRNG,XACTIO,XOBJ
  1235. X      EQUIVALENCE (XFLAG,XOBJ)
  1236. $ CALL UNPACK [.SRC]CURXT.LIB;1 1263412170
  1237. $ create 'f'
  1238. XC
  1239. X      COMMON /DEBUG/ DBGFLG,PRSFLG,GDTFLG
  1240. X      LOGICAL DFLAG
  1241. $ CALL UNPACK [.SRC]DEBUG.LIB;1 91756646
  1242. $ create 'f'
  1243. XC FIGHTD- INTERMOVE FIGHT DEMON
  1244. XC
  1245. XC COPYRIGHT 1980, INFOCOM COMPUTERS AND COMMUNICATIONS, CAMBRIDGE MA. 02142
  1246. XC ALL RIGHTS RESERVED, COMMERCIAL USAGE STRICTLY PROHIBITED
  1247. XC WRITTEN BY R. M. SUPNIK
  1248. XC
  1249. XC DECLARATIONS
  1250. XC
  1251. X      SUBROUTINE FIGHTD
  1252. X      IMPLICIT INTEGER (A-Z)
  1253. X      LOGICAL PROB,OAPPLI
  1254. X
  1255. X      INCLUDE 'PARSER.LIB'
  1256. X      INCLUDE 'GAMESTATE.LIB'
  1257. X      INCLUDE 'OBJECTS.LIB'
  1258. X      INCLUDE 'OFLAGS.LIB'
  1259. X      INCLUDE 'OINDEX.LIB'
  1260. X      INCLUDE 'VILLIANS.LIB'
  1261. X      INCLUDE 'ADVERS.LIB'
  1262. X      INCLUDE 'VERBS.LIB'
  1263. X      INCLUDE 'FLAGS.LIB'
  1264. XC
  1265. X      LOGICAL F
  1266. XC
  1267. XC FUNCTIONS AND DATA
  1268. XC
  1269. X      DATA ROUT/1/
  1270. X`0C
  1271. XC FIGHTD, PAGE 2
  1272. XC
  1273. X      DO 2400 I=1,VLNT
  1274. XC                                               !LOOP THRU VILLAINS.
  1275. X        VOPPS(I)=0
  1276. XC                                               !CLEAR OPPONENT SLOT.
  1277. X        OBJ=VILLNS(I)
  1278. XC                                               !GET OBJECT NO.
  1279. X        RA=OACTIO(OBJ)
  1280. XC                                               !GET HIS ACTION.
  1281. X        IF(HERE.NE.OROOM(OBJ)) GO TO 2200
  1282. XC                                               !ADVENTURER STILL HERE?
  1283. X        IF((OBJ.EQ.THIEF).AND.THFENF) GO TO 2400
  1284. XC                                               !THIEF ENGROSSED?
  1285. X        IF(OCAPAC(OBJ).GE.0) GO TO 2050
  1286. XC                                               !YES, VILL AWAKE?
  1287. X        IF((VPROB(I).EQ.0).OR..NOT.PROB(VPROB(I),VPROB(I)))
  1288. X     &          GO TO 2025
  1289. X        OCAPAC(OBJ)=IABS(OCAPAC(OBJ))
  1290. X        VPROB(I)=0
  1291. X        IF(RA.EQ.0) GO TO 2400
  1292. XC                                               !ANYTHING TO DO?
  1293. X        PRSA=INXW
  1294. XC                                               !YES, WAKE HIM UP.
  1295. X        F=OAPPLI(RA,0)
  1296. X        GO TO 2400
  1297. XC                                               !NOTHING ELSE HAPPENS.
  1298. XC
  1299. X2025    VPROB(I)=VPROB(I)+10
  1300. XC                                               !INCREASE WAKEUP PROB.
  1301. X        GO TO 2400
  1302. XC                                               !NOTHING ELSE.
  1303. XC
  1304. X2050    IF((and(OFLAG2(OBJ),FITEBT)).EQ.0) GO TO 2100
  1305. X        VOPPS(I)=OBJ
  1306. XC                                               !FIGHTING, SET UP OPP.
  1307. X        GO TO 2400
  1308. XC
  1309. X2100    IF(RA.EQ.0) GO TO 2400
  1310. XC                                               !NOT FIGHTING,
  1311. X        PRSA=FRSTQW
  1312. XC                                               !SET UP PROBABILITY
  1313. X        IF(.NOT.OAPPLI(RA,0)) GO TO 2400
  1314. XC                                               !OF FIGHTING.
  1315. X        OFLAG2(OBJ)=or(OFLAG2(OBJ),FITEBT)
  1316. X        VOPPS(I)=OBJ
  1317. XC                                               !SET UP OPP.
  1318. X        GO TO 2400
  1319. XC
  1320. X2200    IF((and(OFLAG2(OBJ),FITEBT).EQ.0).OR.(RA.EQ.0))
  1321. X     &          GO TO 2300
  1322. X        PRSA=FIGHTW
  1323. XC                                               !HAVE A FIGHT.
  1324. X        F=OAPPLI(RA,0)
  1325. X2300    IF(OBJ.EQ.THIEF) THFENF=.FALSE.
  1326. XC                                               !TURN OFF ENGROSSED.
  1327. X        AFLAG(PLAYER)=and(AFLAG(PLAYER), not(ASTAG))
  1328. X        OFLAG2(OBJ)=and(OFLAG2(OBJ), not(STAGBT+FITEBT))
  1329. X        IF((OCAPAC(OBJ).GE.0).OR.(RA.EQ.0))
  1330. X     &          GO TO 2400
  1331. X        PRSA=INXW
  1332. XC                                               !WAKE HIM UP.
  1333. X        F=OAPPLI(RA,0)
  1334. X        OCAPAC(OBJ)=IABS(OCAPAC(OBJ))
  1335. X2400  CONTINUE
  1336. X`0C
  1337. XC FIGHTD, PAGE 3
  1338. XC
  1339. XC NOW DO ACTUAL COUNTERBLOWS.
  1340. XC
  1341. X      OUT=0
  1342. XC                                               !ASSUME HERO OK.
  1343. X2600  DO 2700 I=1,VLNT
  1344. XC                                               !LOOP THRU OPPS.
  1345. X        J=VOPPS(I)
  1346. X        IF(J.EQ.0) GO TO 2700
  1347. XC                                               !SLOT EMPTY?
  1348. X        PRSCON=1
  1349. XC                                               !STOP CMD STREAM.
  1350. X        RA=OACTIO(J)
  1351. X        IF(RA.EQ.0) GO TO 2650
  1352. XC                                               !VILLAIN ACTION?
  1353. X        PRSA=FIGHTW
  1354. XC                                               !SEE IF
  1355. X        IF(OAPPLI(RA,0)) GO TO 2700
  1356. XC                                               !SPECIAL ACTION.
  1357. X2650    RES=BLOW(PLAYER,J,VMELEE(I),.FALSE.,OUT)
  1358. XC                                               !STRIKE BLOW.
  1359. X        IF(RES.LT.0) RETURN
  1360. XC                                               !IF HERO DEAD, EXIT.
  1361. X        IF(RES.EQ.ROUT) OUT=2+RND(3)
  1362. XC                                               !IF HERO OUT, SET FLG.
  1363. X2700  CONTINUE
  1364. X      OUT=OUT-1
  1365. XC                                               !DECREMENT OUT COUNT.
  1366. X      IF(OUT.GT.0) GO TO 2600
  1367. XC                                               !IF STILL OUT, GO AGAIN.
  1368. X      RETURN
  1369. XC
  1370. X      END
  1371. X`0C
  1372. XC BLOW- STRIKE BLOW
  1373. XC
  1374. XC DECLARATIONS
  1375. XC
  1376. X      INTEGER FUNCTION BLOW(H,V,RMK,HFLG,OUT)
  1377. X      IMPLICIT INTEGER (A-Z)
  1378. X      LOGICAL HFLG,OAPPLI,PROB
  1379. X      INTEGER DEF1R(3),DEF2R(4),DEF3R(5)
  1380. X      INTEGER RVECTR(66),RSTATE(45)
  1381. X      INCLUDE 'GAMESTATE.LIB'
  1382. X      INCLUDE 'DEBUG.LIB'
  1383. XC
  1384. XC PARSE VECTOR
  1385. XC
  1386. XC     LOGICAL PRSWON
  1387. X      INCLUDE 'PARSER.LIB'
  1388. XC
  1389. XC MISCELLANEOUS VARIABLES
  1390. XC
  1391. X      COMMON /STAR/ MBASE,STRBIT
  1392. X      INCLUDE 'OBJECTS.LIB'
  1393. X      INCLUDE 'OFLAGS.LIB'
  1394. XC
  1395. X      INCLUDE 'CLOCK.LIB'
  1396. X
  1397. X      INCLUDE 'ADVERS.LIB'
  1398. X      INCLUDE 'VERBS.LIB'
  1399. XC
  1400. X      LOGICAL F
  1401. XC
  1402. XC FUNCTIONS AND DATA
  1403. XC
  1404. X      DATA RMISS/0/,ROUT/1/,RKILL/2/,RLIGHT/3/
  1405. X      DATA RSER/4/,RSTAG/5/,RLOSE/6/,RHES/7/,RSIT/8/
  1406. X      DATA DEF1R/1,2,3/
  1407. X      DATA DEF2R/13,23,24,25/
  1408. X      DATA DEF3R/35,36,46,47,57/
  1409. XC
  1410. +-+-+-+-+-+-+-+-  END  OF PART 22 +-+-+-+-+-+-+-+-
  1411.