home *** CD-ROM | disk | FTP | other *** search
/ Fatal Distractions! / fataldistractions.bin / chap01 / adventur / advinit.for < prev    next >
Text File  |  1990-11-21  |  14KB  |  435 lines

  1.       SUBROUTINE INIT
  2.       INCLUDE 'HEAD1.H'
  3.       INCLUDE 'FUNCT.H'      
  4.       INCLUDE 'DATAB.H'
  5. C  READ THE DATABASE IF WE HAVE NOT YET DONE SO
  6.  
  7.       IF(SETUP.NE.0) GOTO 1100
  8.       LINSIZ = 2100
  9.       RTXSIZ = 205
  10.       HNTSIZ = 20
  11.       VRBSIZ = 35
  12.       MAGSIZ = 35
  13.       TRVSIZ = 750
  14.       CLSMAX = 12
  15. C     TYPE 1000
  16.       WRITE(*,1000)
  17.  1000 FORMAT(' HAVE PATIENCE.  IT TAKES A WHILE TO INITIALIZE...')
  18.  
  19. C  CLEAR OUT THE VARIOUS TEXT-POINTER ARRAYS.  ALL TEXT IS STORED ON DISK
  20. C  FILE (RANDOM ACCESS ON UNIT 2).  THE TEXT-POINTER ARRAYS CONTAIN RECORD
  21. C  NUMBERS IN THE FILE.  STEXT(N) IS SHORT DESCRIPTION OF LOCATION N.
  22. C  LTEXT(N) IS LONG DESCRIPTION.  PTEXT(N) POINTS TO MESSAGE FOR PROP(N)=0.
  23. C  SUCCESSIVE PROP MESSAGES ARE FOUND BY CHASING POINTERS.  RTEXT CONTAINS
  24. C  SECTION 6'S STUFF.  CTEXT(N) POINTS TO A PLAYER-CLASS MESSAGE.  MTEXT IS FOR
  25. C  SECTION 12.  WE ALSO CLEAR COND.  SEE DESCRIPTION OF SECTION 9 FOR DETAILS.
  26.  
  27.       DO 1001 I=1,300
  28.       IF(I.LE.100)PTEXT(I)=0
  29.       IF(I.LE.RTXSIZ)RTEXT(I)=0
  30.       IF(I.LE.CLSMAX)CTEXT(I)=0
  31.       IF(I.LE.MAGSIZ)MTEXT(I)=0
  32.       IF(I.GT.LOCSIZ) GOTO 1001
  33.       STEXT(I)=0
  34.       LTEXT(I)=0
  35.       COND(I)=0
  36.  1001 CONTINUE
  37.  
  38. C     CALL ASSIGN(1,'TEXT.TXT')
  39.       OPEN(UNIT=1,FILE='TEXT.TXT',STATUS='OLD',MODE='READ')
  40. C     DEFINE FILE 2(2100,38,U,ASCVAR)
  41.       OPEN(UNIT=2,STATUS='SCRATCH',ACCESS='DIRECT',
  42.      1FORM='UNFORMATTED',RECL=76)
  43.       ASCVAR = 1
  44.       SETUP = 1
  45.       LINUSE = 1
  46.       TRVS = 1
  47.       CLSSES = 1
  48.       
  49. C  START NEW DATA SECTION.  SECTION IS THE SECTION NUMBER.
  50.  
  51.  1002 READ(1,1003)SECT
  52.  1003 FORMAT(I7)
  53. C     TYPE 10030,SECT
  54. C     WRITE(*,10030) SECT
  55. C10030 FORMAT(' NOW LOADING SECTION',I3)
  56.       OLDLOC = -1
  57.       GOTO(1100,1004,1004,1030,1040,1004,1004,1050,1060,1070,1004,
  58.      1     1080,1004) (SECT+1)
  59. C           (0)  (1)  (2)  (3)  (4)  (5)  (6)  (7)  (8)  (9)  (10)
  60. C          (11) (12)
  61.       CALL BUG(9)
  62.       
  63. C  SECTIONS 1, 2, 5, 6, 10, 12.  READ MESSAGES AND SET UP POINTERS.
  64.  
  65.  1004 READ(1,1005) LOC,LINES
  66.  1005 FORMAT(I4,18A4)
  67.       WRITE(2,REC=ASCVAR) LOC,LINES
  68.       ASCVAR=ASCVAR+1
  69.       LINUSE = ASCVAR-1
  70.       IF(LOC .EQ. -1) GOTO 1002
  71.       IF(LOC .EQ. OLDLOC) GOTO 1020
  72.       IF(SECT.EQ.12) GOTO 1013
  73.       IF(SECT.EQ.10) GOTO 1012
  74.       IF(SECT.EQ.6) GOTO 1011
  75.       IF(SECT.EQ.5) GOTO 1010
  76.       IF(SECT.EQ.1) GOTO 1008
  77.       
  78.       STEXT(LOC)=LINUSE
  79.       GOTO 1020
  80.       
  81.  1008 LTEXT(LOC) = LINUSE
  82.       GOTO 1020
  83.       
  84.  1010 IF(LOC.GT.0.AND.LOC.LE.100) PTEXT(LOC)=LINUSE
  85.       GOTO 1020
  86.       
  87.  1011 IF(LOC.GT.RTXSIZ) WRITE(*,*) LOC,RTXSIZ
  88.       IF(LOC.GT.RTXSIZ) CALL BUG(6)
  89.       RTEXT(LOC)=LINUSE
  90.       GOTO 1020
  91.       
  92.  1012 CTEXT(CLSSES)=LINUSE
  93.       CVAL(CLSSES)=LOC
  94.       CLSSES=CLSSES+1
  95.       GOTO 1020
  96.       
  97.  1013 IF(LOC.GT.MAGSIZ) CALL BUG(6)
  98.       MTEXT(LOC)=LINUSE
  99.       
  100.  1020 OLDLOC = LOC
  101.       IF(LINUSE .GE. 2100) CALL BUG(2)
  102.       GOTO 1004
  103.       
  104. C  THE STUFF FOR SECTION 3 IS ENCODED HERE.  EACH "FROM-LOCATION" GETS A
  105. C  CONTIGUOUS SECTION OF THE "TRAVEL" ARRAY.  EACH ENTRY IN TRAVEL IS
  106. C  NEWLOC*1000 + KEYWORD (FROM SECTION 4, MOTION VERBS), AND IS NEGATED IF
  107. C  THIS IS THE LAST ENTRY FOR THIS LOCATION.  KEY(N) IS THE INDEX IN TRAVEL
  108. C  OF THE FIRST OPTION AT LOCATION N.
  109.  
  110.  1030 READ(1,1031)LOC,NEWLOC,TK
  111.  1031 FORMAT(99I10)
  112.       IF(LOC.EQ.0) GOTO 1030
  113. C  ABOVE KLUGE IS TO AVOID AFOREMENTIONED F40 BUG
  114.       IF(LOC.EQ.-1) GOTO 1002
  115.       IF(KEY(LOC).NE.0) GOTO 1033
  116.       KEY(LOC)=TRVS
  117.       GOTO 1035
  118.  1033 TRAVEL(TRVS-1)=-TRAVEL(TRVS-1)
  119.  1035 DO 1037 L=1,20
  120.       IF(TK(L).EQ.0) GOTO 1039
  121.       TRAVEL(TRVS)=NEWLOC*1000+TK(L)
  122.       TRVS=TRVS+1
  123.       IF(TRVS.EQ.TRVSIZ) CALL BUG(3)
  124.  1037 CONTINUE
  125.  1039 TRAVEL(TRVS-1)=-TRAVEL(TRVS-1)
  126.       GOTO 1030
  127.       
  128. C  HERE WE READ IN THE VOCAULARY. KTAB(N) IS THE WORD NUMBER, ATAB(N) IS
  129. C  THE CORRESPONDING WORD.  THE -1 AT THE END OF SECTION 4 IS LEFT IN KTAB
  130. C  AS AN END-MARKER.
  131.  
  132.  1040 DO 1042 TABNDX=1,TABSIZ
  133.  1043 READ(1,1041)KTAB(TABNDX),ATAB(TABNDX)
  134.  1041 FORMAT(I10,A4)
  135.       IF(KTAB(TABNDX).EQ.0) GOTO 1043
  136. C  ABOVE KLUGE IS TO AVOID AFOREMENTIONED F40 BUG
  137.       IF(KTAB(TABNDX).EQ.-1) GOTO 1002
  138.  1042 CONTINUE
  139.       CALL BUG(4)
  140.       
  141. C  READ IN THE INITIAL LOCATIONS FOR EACH OBJECT.  ALSO THE IMMOVABILITY INFO.
  142. C  PLAC CONTAINS INITIAL LOCATIONS OF OBJECTS.  FIXD IS -1 FOR IMMOVABLE
  143. C  OBJECTS (INCLUDING THE SNAKE), OR = SECOND LOC FOR TWO-PLACED OBJECTS.
  144.  
  145.  1050 READ(1,1031)OBJ,J,K
  146.       IF(OBJ.EQ.-1) GOTO 1002
  147.       PLAC(OBJ)=J
  148.       FIXD(OBJ)=K
  149.       GOTO 1050
  150.       
  151. C  READ DEFAULT MESSAGE NUMBERS FOR ACTION VERBS, STORE IN ACTSPK.
  152.  
  153.  1060 READ(1,1031) VERB,J
  154.       IF(VERB.EQ.-1) GOTO 1002
  155.       ACTSPK(VERB)=J
  156.       GOTO 1060
  157.       
  158. C  READ INFO ABOUT AVAILABLE LIQUIDS AND OTHER CONDITIONS, STORE IN COND.
  159.  
  160.  1070 READ(1,1031) K,TK
  161.       IF(K.EQ.-1) GOTO 1002
  162.       DO 1071 I=1,20
  163.       LOC=TK(I)
  164.       IF(LOC.EQ.0) GOTO 1070
  165.       IF(BITSET(LOC,K)) CALL BUG(8)
  166.  1071 COND(LOC)=COND(LOC)+SHIFT(1,K)
  167.       GOTO 1070
  168.       
  169. C  READ DATA FOR HINTS.
  170.  
  171.  1080 HNTMAX=0
  172.  1081 READ(1,1031) K,TK
  173.       IF(K.EQ.-1) GOTO 1002
  174.       IF(K.EQ.0) GOTO 1081
  175.       IF(K.LT.0.OR.K.GT.HNTSIZ) CALL BUG(7)
  176.       DO 1083 I=1,4
  177.  1083 HINTS(K,I)=TK(I)
  178.       HNTMAX=MAX0(HNTMAX,K)
  179.       GOTO 1081
  180.       
  181. C  FINISH CONSTRUCTING INTERNAL DATA FORMAT
  182.  
  183. C  IF SETUP=2 WE DON'T NEED TO DO THIS.  IT'S ONLY NECESSARY IF WE HAVEN'T DONE
  184. C  IT AT ALL OR IF THE PROGRAM HAS BEEN RUN SINCE THEN.
  185.  
  186.  1100 IF(SETUP.EQ.2) GOTO 1
  187.       IF(SETUP.EQ.-1) GOTO 1
  188.       
  189. C  HAVING READ IN THE DATABASE, CERTAIN THINGS ARE NOW CONSTRUCTED.  PROPS ARE
  190. C  SET TO ZERO.  WE FINISH SETTING UP COND BY CHECKING FOR FORCED-MOTION TRAVEL
  191. C  ENTRIES.  THE PLAC AND FIXD ARRAYS ARE USED TO SET UP ATLOC(N) AS THE FIRST
  192. C  OBJECT AT LOCATION N, AND LINK(OBJ) AS THE NEXT OBJECT AT THE SAME LOCATION
  193. C  AS OBJ.  (OBJ>100 INDICATES THAT FIXED(OBJ-100)=LOC; LINK(OBJ) IS STILL THE
  194. C  CORRECT LINK TO USE.)  ABB IS ZEROED; IT CONTROLS WHETHER THE ABBREVIATED
  195. C  DESCRIPTION IS PRINTED.  COUNTS MOD 5 UNLESS "LOOK" IS USED.
  196.  
  197.       DO 1101 I=1,100
  198.       PLACE(I)=0
  199.       PROP(I)=0
  200.       LINK(I)=0
  201.  1101 LINK(I+100)=0
  202.  
  203.       DO 1102 I=1,LOCSIZ
  204.       ABB(I)=0
  205.       IF(LTEXT(I).EQ.0.OR.KEY(I).EQ.0) GOTO 1102
  206.       K=KEY(I)
  207.       IF(MOD(IABS(TRAVEL(K)),1000).EQ.1) COND(I)=2
  208.  1102 ATLOC(I)=0
  209.  
  210. C  SET UP THE ATLOC AND LINK ARRAYS AS DESCRIBED ABOVE.  WE'LL USE THE DROP
  211. C  SUBROUTINE, WHICH PREFACES NEW OBJECTS ON THE LISTS.  SINCE WE WANT THINGS
  212. C  IN THE OTHER ORDER, WE'LL RUN THE LOOP BACKWARDS.  IF THE OBJECT IS IN TWO
  213. C  LOCS, WE DROP IT TWICE.  THIS ALSO SETS UP "PLACE" AND "FIXED" AS COPIES OF
  214. C  "PLAC" AND "FIXD".  ALSO, SINCE TWO-PLACED OBJECTS ARE TYPICALLY BEST
  215. C  DESCRIBED LAST, WE'LL DROP THEM FIRST.
  216.  
  217.       DO 1106 I=1,100
  218.       K=101-I
  219.       IF(FIXD(K).LE.0) GOTO 1106
  220.       CALL DROP(K+100,FIXD(K))
  221.       CALL DROP(K,PLAC(K))
  222.  1106 CONTINUE
  223.  
  224.       DO 1107 I=1,100
  225.       K=101-I
  226.       FIXED(K)=FIXD(K)
  227.  1107 IF(PLAC(K).NE.0.AND.FIXD(K).LE.0) CALL DROP(K,PLAC(K))
  228.  
  229. C  TREASURES, AS NOTED EARLIER, ARE OBJECTS 50 THROUGH MAXTRS (CURRENTLY 79).
  230. C  THEIR PROPS ARE INITIALLY -1, AND ARE SET TO 0 THE FIRST TIME THEY ARE
  231. C  DESCRIBED.  TALLY KEEPS TRACK OF HOW MANY ARE NOT YET FOUND, SO WE KNOW
  232. C  WHEN TO CLOSE THE CAVE.  TALLY2 COUNTS HOW MANY CAN NEVER BE FOUND (E.G., IF
  233. C  LOST BIRD OR BRIDGE).
  234.  
  235.       MAXTRS=79
  236.       TALLY=0
  237.       TALLY2=0
  238.       DO 1200 I=50,MAXTRS
  239.       IF(PTEXT(I).NE.0) PROP(I)=-1
  240.  1200 TALLY=TALLY-PROP(I)
  241.  
  242. C  CLEAR THE HINT STUFF.  HINTLC(I) IS HOW LONG HE'S BEEN AT LOC WITH COND BIT
  243. C  I.  HINTED(I) IS TRUE IFF HINT I HAS BEEN USED.
  244.  
  245.       DO 1300 I=1,HNTMAX
  246.       HINTED(I)=.FALSE.
  247.  1300 HINTLC(I)=0
  248.  
  249. C  DEFINE SOME HANDY MNEMONICS.  THESE CORRESPOND TO OBJECT NUMBERS.
  250.  
  251.       KEYS=VOCAB('KEYS',1)
  252.       LAMP=VOCAB('LAMP',1)
  253.       GRATE=VOCAB('GRAT',1)
  254.       CAGE=VOCAB('CAGE',1)
  255.       ROD=VOCAB('ROD ',1)
  256.       ROD2=ROD+1
  257.       STEPS=VOCAB('STEP',1)
  258.       BIRD=VOCAB('BIRD',1)
  259.       DOOR=VOCAB('DOOR',1)
  260.       PILLOW=VOCAB('PILL',1)
  261.       SNAKE=VOCAB('SNAK',1)
  262.       FISSUR=VOCAB('FISS',1)
  263.       TABLET=VOCAB('TABL',1)
  264.       CLAM=VOCAB('CLAM',1)
  265.       OYSTER=VOCAB('OYST',1)
  266.       MAGZIN=VOCAB('MAGA',1)
  267.       DWARF=VOCAB('DWAR',1)
  268.       KNIFE=VOCAB('KNIF',1)
  269.       FOOD=VOCAB('FOOD',1)
  270.       BOTTLE=VOCAB('BOTT',1)
  271.       WATER=VOCAB('WATE',1)
  272.       OIL=VOCAB('OIL ',1)
  273.       PLANT=VOCAB('PLAN',1)
  274.       PLANT2=PLANT+1
  275.       AXE=VOCAB('AXE ',1)
  276.       MIRROR=VOCAB('MIRR',1)
  277.       DRAGON=VOCAB('DRAG',1)
  278.       CHASM=VOCAB('CHAS',1)
  279.       TROLL=VOCAB('TROL',1)
  280.       TROLL2=TROLL+1
  281.       BEAR=VOCAB('BEAR',1)
  282.       MESSAG=VOCAB('MESS',1)
  283.       VEND=VOCAB('VEND',1)
  284.       BATTER=VOCAB('BATT',1)
  285.       
  286. C OBJECTS FROM 50 THROUGH WHATEVER ARE TREASURES.  HERE ARE A FEW.
  287.  
  288.       NUGGET=VOCAB('GOLD',1)
  289.       COINS=VOCAB('COIN',1)
  290.       CHEST=VOCAB('CHES',1)
  291.       EGGS=VOCAB('EGGS',1)
  292.       TRIDNT=VOCAB('TRID',1)
  293.       VASE=VOCAB('VASE',1)
  294.       EMRALD=VOCAB('EMER',1)
  295.       PYRAM=VOCAB('PYRA',1)
  296.       PEARL=VOCAB('PEAR',1)
  297.       RUG=VOCAB('RUG ',1)
  298.       CHAIN=VOCAB('CHAI',1)
  299.       
  300. C  THESE ARE MOTION-VERB NUMBERS
  301.  
  302.       BACK=VOCAB('BACK',0)
  303.       LOOK=VOCAB('LOOK',0)
  304.       CAVE=VOCAB('CAVE',0)
  305.       NULL=VOCAB('NULL',0)
  306.       ENTRNC=VOCAB('ENTR',0)
  307.       DPRSSN=VOCAB('DEPR',0)
  308.       
  309. C  AND SOME ACTION VERBS.
  310.  
  311.       SAY=VOCAB('SAY ',2)
  312.       LOCK=VOCAB('LOCK',2)
  313.       THROW=VOCAB('THRO',2)
  314.       FIND=VOCAB('FIND',2)
  315.       INVENT=VOCAB('INVE',2)
  316.       
  317. C  INITIALISE THE DWARVES.  DLOC IS LOC OF DWARVES, HARD-WIRED IN.  ODLOC IS
  318. C  PRIOR LOC OF EACH DWARF, INITIALLY GARBAGE.  DALTLC IS ALTERNATE INITIAL LOC
  319. C  FOR DWARF, IN CASE ONE OF THEM STARTS OUT ON TOP OF THE ADVENTURER.  (NO 2
  320. C  OF THE 5 INITIAL LOCS ARE ADJACENT.)  DSEEN IS TRUE IF DWARF HAS SEEN HIM.
  321. C  DFLAG CONTROLS THE LEVEL OF ACTIVATION OF ALL THIS:
  322. C       0       NO DWARF STUFF YET (WAIT UNTIL REACHES HALL OF MISTS)
  323. C       1       REACHED HALL OF MISTS, BUT HASN'T MET FIRST DWARF
  324. C       2       MET FIRST DWARF, OTHERS START MOVING, NO KNIVES THROWN YET
  325. C       3       A KNIFE HAS BEEN THROWN (FIRST SET ALWAYS MISSES)
  326. C       3+      DWARVES ARE MAD (INCREASES THEIR ACCURACY)
  327. C  SIXTH DWARF IS SPECIAL (THE PIRATE).  HE ALWAYS STARTS AT HIS CHEST'S
  328. C  EVENTUAL LOCATION INSIDE THE MAZE.  THIS LOC IS SAVED IN CHLOC FOR REF.
  329. C  THE DEAD END IN THE OTHER MAZE HAS ITS LOC STORED IN CHLOC2.
  330.  
  331.       CHLOC=114
  332.       CHLOC2=140
  333.       DO 1700 I=1,6
  334.  1700 DSEEN(I)=.FALSE.
  335.       DFLAG=0
  336.       DLOC(1)=19
  337.       DLOC(2)=27
  338.       DLOC(3)=33
  339.       DLOC(4)=44
  340.       DLOC(5)=64
  341.       DLOC(6)=CHLOC
  342.       DALTLC=18
  343.       
  344. C  OTHER RANDOM FLAGS AND COUNTERS, AS FOLLOWS:
  345. C       TURNS   TALLIES HOW MANY COMMANDS HE'S GIVEN (IGNORES YES/NO)
  346. C       LIMIT   LIFETIME OF LAMP (NOT SET HERE)
  347. C       IWEST   HOW MANY TIMES HE'S SAID "WEST" INSTEAD OF "W"
  348. C       KNFLOC  0 IF NO KNIFE HERE, LOC IF KNIFE HERE, -1 AFTER CAVEAT
  349. C       DETAIL  HOW OFTEN WE'VE SAID "NOT ALLOWED TO GIVE MORE DETAIL"
  350. C       ABBNUM  HOW OFTEN WE SHOULD PRINT NON-ABBREVIATED DESCRIPTIONS
  351. C       MAXDIE  NUMBER OF REINCARNATION MESSAGES AVAILABLE (UP TO 5)
  352. C       NUMDIE  NUMBER OF TIMES KILLED SO FAR
  353. C       HOLDNG  NUMBER OF OBJECTS BEING CARRIED
  354. C       DKILL   NUMBER OF DWARVES KILLED (UNUSED IN SCORING, NEEDED FOR MSG)
  355. C       FOOBAR  CURRENT PROGRESS IN SAYING "FEE FIE FOE FOO"
  356. C       BONUS   USED TO DETERMINE AMOUNT OF BONUS IF HE REACHES CLOSING
  357. C       CLOCK1  NUMBER OF TURNS FROM FINDING LAST TREASURE TILL CLOSING
  358. C       CLOCK2  NUMBER OF TURNS FROM FIRST WARNING TILL BLINDING FLASH
  359. C       LOGICALS WERE EXPLAINED EARLIER
  360.  
  361.       TURNS=0
  362.       LMWARN=.FALSE.
  363.       IWEST=0
  364.       KNFLOC=0
  365.       DETAIL=0
  366.       ABBNUM=5
  367.       DO 1800 I=0,4
  368.  1800 IF(RTEXT(2*I+81).NE.0) MAXDIE=I+1
  369.       NUMDIE=0
  370.       HOLDNG=0
  371.       DKILL=0
  372.       FOOBAR=0
  373.       BONUS=0
  374.       CLOCK1=30
  375.       CLOCK2=50
  376.       SAVED=0
  377.       CLOSNG=.FALSE.
  378.       PANIC=.FALSE.
  379.       CLOSED=.FALSE.
  380.       GAVEUP=.FALSE.
  381.       SCORNG=.FALSE.
  382.       
  383. C  IF SETUP=1, REPORT ON AMOUNT OF ARRAYS ACTUALLY USED, TO PERMIT REDUCTIONS.
  384.  
  385.       IF(SETUP.NE.1) GOTO 1
  386.       SETUP=2
  387.       
  388.       DO 1998 K=1,LOCSIZ
  389.       KK=LOCSIZ+1-K
  390.       IF(LTEXT(KK).NE.0) GOTO 1997
  391.  1998 CONTINUE
  392.  
  393.       OBJ=0
  394.  1997 DO 1996 K=1,100
  395.  1996 IF(PTEXT(K).NE.0) OBJ=OBJ+1
  396.  
  397.       DO 1995 K=1,TABNDX
  398.  1995 IF(KTAB(K)/1000.EQ.2) VERB=KTAB(K)-2000
  399.  
  400.       DO 1994 K=1,RTXSIZ
  401.       J=RTXSIZ+1-K
  402.       IF(RTEXT(J).NE.0) GOTO 1993
  403.  1994 CONTINUE
  404.  
  405.  1993 DO 1992 K=1,MAGSIZ
  406.       I=MAGSIZ+1-K
  407.       IF(MTEXT(I).NE.0) GOTO 1991
  408.  1992 CONTINUE
  409.  
  410.  1991 K=100
  411. C     TYPE 1999,LINUSE,LINSIZ,TRVS,TRVSIZ,TABNDX,TABSIZ,KK,
  412. C    1          LOCSIZ,OBJ,K,VERB,VRBSIZ,J,RTXSIZ,CLSSES,CLSMAX,
  413. C    2          HNTMAX,HNTSIZ,I,MAGSIZ
  414.  1999 FORMAT (' TABLE SPACE USED:'/
  415.      1        ' ',I6,' OF ',I6, ' WORDS OF MESSAGES'/
  416.      2        ' ',I6,' OF ',I6, ' TRAVEL OPTONS'/
  417.      3        ' ',I6,' OF ',I6, ' VOCABULARY WORDS'/
  418.      4        ' ',I6,' OF ',I6, ' LOCATIONS'/
  419.      5        ' ',I6,' OF ',I6, ' OBJECTS'/
  420.      6        ' ',I6,' OF ',I6, ' ACTION VERBS'/
  421.      7        ' ',I6,' OF ',I6, ' RTEXT MESSAGES'/
  422.      8        ' ',I6,' OF ',I6, ' CLASS MESSAGES'/
  423.      9        ' ',I6,' OF ',I6, ' HINTS'/
  424.      1        ' ',I6,' OF ',I6, ' MAGIC MESSAGES'/
  425.      2        )
  426.      
  427. C  FINALLY, SINCE WE'RE CLEARLY SETTING THINGS UP FOR THE FIRST TIME...
  428.  
  429.       CALL POOF
  430.       LOC=1
  431. C     PAUSE 'INIT DONE'
  432.     1 CLOSE(UNIT=1)
  433.       RETURN
  434.       END
  435.