C WRITE OUT MESSAGES FROM THE DRIVER SUBROUTINE DRVMSG(ME, DONE) INTEGER ME LOGICAL*1DONE C COMMON PARAMETER MAXSHP = 8, MAXHOM = 4, MAXTRP = 10 COMMON/TORPE/TLOCS(MAXSHP, MAXTRP, 2), TDIR(MAXSHP, MAXTRP), IT(MA *XSHP) COMMON/TRKDAT/ENERGY(MAXSHP), SHIELD(MAXSHP), XCORD(MAXSHP), YCORD *(MAXSHP), TORPS(MAXSHP), HOLX, HOLY, HOLW, CDRAIN, NDRAIN, TDRAIN, * SCAN(MAXSHP), PHA(MAXSHP), I1, I2, HYPER(MAXSHP), ISENT(MAXSHP, 1 *0), XPOD(MAXSHP), YPOD(MAXSHP), DPOD(MAXSHP), IPODST(MAXSHP), WPOD *(MAXSHP), XHOM(MAXSHP, MAXHOM), YHOM(MAXSHP, MAXHOM), WHOM(MAXSHP, * MAXHOM), NHOM(MAXSHP), TRBEAM(MAXSHP), SCORE(MAXSHP), CREW(MAXSHP *), DIR(MAXSHP), WARP(MAXSHP), LAUNCH(MAXSHP), UNIV(100, 100), MESS *AG(480), THRU, SHPACT(MAXSHP), CLOAK(MAXSHP), NET(MAXSHP), SHPNAM( *10, MAXSHP) REAL LAUNCH, NDRAIN INTEGER*2SCAN, WHOM, CREW, HYPER, TORPS, TRBEAM LOGICAL*1THRU, SHPACT, CLOAK, NET BYTE UNIV, MESSAG BYTE SHPNAM C NOTE: BHOLE AND EMPTY ARE THE CHARACTERS FOR THE BLACK HOLE C AND EMPTY SPACE. C END COMMON INTEGER OLDSHP COMMON/OLDSTF/OLDSCR(MAXSHP), OLDCRS, OLDWRP, OLDEN, OLDSH, OLDX, *OLDY, IOLDT, IOLDH, IOLDP, OLDDIR, OLDSHP BYTE BLUNK(2) BYTE BLUNK2(2) BYTE OBUFF( - 9: + 9, - 9: + 9), NBUFF( - 9: + 9, - 9: + 9) BYTE JUNK LOGICAL*1REFRES COMMON/BNDRY/IXX, IYY, ID, MINID8, JUNK, OBUFF, NBUFF, REFRES EQUIVALENCE(BLUNK(2), NBUFF( - 9, - 9)) EQUIVALENCE(BLUNK2(2), OBUFF( - 9, - 9)) LOGICAL*1DEAD, YES CWAIT DURATION ARGS PARAMETER MSECS = 1, SECS = 2 DEAD = .FALSE. DO 2000 I = 1, 10 IF (.NOT.(ISENT(ME, I) .NE. 0)) GOTO 2020 J = ISENT(ME, I) ISENT(ME, I) = 0 GO TO(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 1 *7, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, * 34, 35, 36), J 1 CONTINUE CALL MESSGE('DOCKED.') GOTO 2000 2 CONTINUE CALL MESSGE('- HIT A STAR!') GOTO 2000 3 CONTINUE DEAD = .TRUE. GOTO 2000 4 CONTINUE CALL MESSGE('- TORPEDO HIT US!') CALL FLASH(1, 50, MSECS) GOTO 2000 5 CONTINUE CALL MESSGE('+ TORPEDO HIT ALIEN!') GOTO 2000 6 CONTINUE CALL MESSGE('+ PHASER HIT ALIEN!') GOTO 2000 7 CONTINUE CALL MESSGE('PHASER HIT TORPEDO') GOTO 2000 8 CONTINUE CALL MESSGE('PHASERS MISSED') GOTO 2000 9 CONTINUE CALL MESSGE('- RAMMED ALIEN!') GOTO 2000 10 CONTINUE CALL MESSGE('- COLLISION!') GOTO 2000 11 CONTINUE CALL MESSGE('PHASER HIT STAR') GOTO 2000 12 CONTINUE CALL MESSGE('- BASE UNDER ATTACK') GOTO 2000 13 CONTINUE CALL MESSGE('TORPEDO HIT STAR') GOTO 2000 14 CONTINUE CALL MESSGE('- PHASER ATTACK!') CALL FLASH(1, 50, MSECS) GOTO 2000 15 CONTINUE CALL TPOS(18, 1) CALL OUTSTR(.FALSE., 'SPOCK HERE CAPTAIN. ', .TRUE.) CALL OUTSTR(.TRUE., 'WE ARE BEING DRAWN INTO SOME SORT OF BLAC *K HOLE,', .TRUE.) CALL OUTSTR(.TRUE., 'IT IS UNLIKE ANYTHING I HAVE EVER ENCOUNT *ERED.', .TRUE.) CALL OUTSTR(.TRUE., 'FASCINATING.', .TRUE.) CALL WAIT(4, SECS) GOTO 2000 16 CONTINUE CALL TPOS(18, 1) CALL OUTSTR(.FALSE., 'SCOTT HERE CAPTAIN. ', .TRUE.) CALL OUTSTR(.TRUE., 'OUR DYLITHIUM CRYSTALS ARE GONE. LIFE SUP *PORT IS', .TRUE.) CALL OUTSTR(.TRUE., 'FAILING ...!', .TRUE.) CALL WAIT(3, SECS) GOTO 2000 17 CONTINUE CALL MESSGE('HYPERSPACE!') GOTO 2000 18 CONTINUE CALL MESSGE('HYPERSPACE BLOCKED!') GOTO 2000 19 CONTINUE CALL MESSGE('RANDOM HYPERSPACE!') GOTO 2000 20 CONTINUE CALL MESSGE('TORPEDO HIT TORPEDO') GOTO 2000 21 CONTINUE CALL MESSGE('HIT GHOST SHIP') GOTO 2000 22 CONTINUE CALL MESSGE('*** ALIEN DESTROYED!') CALL MESSGE('********************') GOTO 2000 23 CONTINUE CALL MESSGE('POD BLOCKED!') GOTO 2000 24 CONTINUE CALL MESSGE('POD DESTROYED!') GOTO 2000 25 CONTINUE CALL MESSGE('PHASER HIT POD') GOTO 2000 26 CONTINUE CALL MESSGE('TORPEDO HIT POD') GOTO 2000 27 CONTINUE CALL MESSGE('- METAL OBJECT NEAR') GOTO 2000 28 CONTINUE CALL MESSGE('POD LAUNCHED') GOTO 2000 29 CONTINUE CALL MESSGE('POD DETONATED!') GOTO 2000 30 CONTINUE CALL MESSGE('- POD EXPLOSION!') CALL FLASH(3, 50, MSECS) GOTO 2000 31 CONTINUE CALL MESSGE('IIEEEEEE!') GOTO 2000 32 CONTINUE CALL MESSGE('+ POD HIT ALIEN!') GOTO 2000 33 CONTINUE CALL MESSGE('- HIT NET!') GOTO 2000 34 CONTINUE CALL MESSGE('TORPEDO HIT NET') GOTO 2000 35 CONTINUE CALL MESSGE('PHASER HIT NET') GOTO 2000 36 CONTINUE CALL MESSGE('NET BLOCKED!') GOTO 2000 2020 CONTINUE 2000 CONTINUE 2010 CONTINUE IF (.NOT.(DEAD)) GOTO 2040 CMAKE SURE WE SEE WHAT KILLED US CALL FLUSH(0) CALL WAIT(1, SECS) CALL CLEAR CALL FLUSH(0) WRITE(5, 1131) 1131 FORMAT(////////////, 25X, '*** BOOM ***') CALL FLASH(4, 250, MSECS) WRITE(5, 1141) 1141 FORMAT('0YOUR SHIP HAS BEEN DESTROYED'/, ' FORTUNATELY YOU ESCAP *ED WITH YOUR LIFE.'/, ' UNFORTUNATELY, YOU HAVE BEEN GIVEN A NEW C *OMMAND.'//, '$ARE YOU READY TO ACCEPT THIS ASSIGNMENT? ') CALL YESNO(0, YES) IF (.NOT.(YES)) GOTO 2060 WRITE(5, 1142) 1142 FORMAT(' GOOD!') CALL STRMOV(BLUNK2, 1, 361, OBUFF, 1) CALL RBUFF CSCRAMBLE SAVED STUFF TO GET A FULL REFRESH CALL CLROLD REFRES = .TRUE. GOTO 2070 2060 CONTINUE DONE = .TRUE. 2070 CONTINUE 2040 CONTINUE RETURN END