home *** CD-ROM | disk | FTP | other *** search
- Path: uunet!zaphod.mps.ohio-state.edu!sdd.hp.com!decwrl!decwrl!concert!lester.appstate.edu!pembvax1.pembroke.edu!rennie
- From: rennie@pembvax1.pembroke.edu
- Newsgroups: vmsnet.sources.games
- Subject: Star Trek - Part [14/18]
- Date: 7 Apr 93 11:03:08 EDT
- Organization: Pembroke State University
- Lines: 447
- Message-ID: <1993Apr7.110308.1@pembvax1.pembroke.edu>
- NNTP-Posting-Host: papa.pembroke.edu
- Xref: uunet vmsnet.sources.games:656
-
- -+-+-+-+-+-+-+-+ START OF PART 14 -+-+-+-+-+-+-+-+
- X97`09CALL PROUT(14HTRIP COMPLETE.,14)
- X`09RETURN
- XC--------LANDING PARTY BOARDS GALILEO FOR TRIP BACK TO SHIP.
- X 98 CALL PROUT(35HYOU AND YOUR MINING PARTY BOARD THE ,35)`20
- X CALL PROUT(`20
- X +51HSHUTTLE CRAFT FOR THE TRIP BACK TO THE ENTERPRISE. ,51)`20
- X CALL SKIP(1)
- X CALL PROUT(26HTHE SHORT HOP BEGINS . . . ,26)
- X`09ICRAFT=1
- X`09LANDED=-1
- X`09ASSIGN 99 TO IWHERE
- X`09GO TO 96
- X99`09ICRAFT=0
- X`09ISCRAFT=1
- X`09IF(IMINE.NE.0) ICRYSTL=1
- X`09IMINE=0
- X`09GO TO 97
- XC--------LANDING PARTY HEADS DOWN TO PLANET.
- X 100 CALL PROUT(36HMINING PARTY ASSEMBLES IN THE HANGAR ,36)`20
- X CALL PROUT(`20
- X +51HDECK, READY TO BOARD THE SHUTTLE CRAFT "GALILEO." ,51) `20
- X CALL SKIP(1)
- X CALL PROUT(41HTHE HANGAR DOORS OPEN; THE TRIP BEGINS. ,41) `20
- X`09ICRAFT=1
- X`09ISCRAFT=0
- X`09ASSIGN 110 TO IWHERE
- X`09GO TO 96
- X110`09LANDED=1
- X`09ICRAFT=0
- X`09GO TO 97
- XC*`20
- X ENTRY DEATHRA`20
- XC*`20
- X`09IDIDIT=0
- X`09CALL SKIP(1)
- X IF(SHIP .EQ. IHE) GO TO 113`20
- X CALL PROUT(34HYE FAERIE QUEENE HAS NO DEATH RAY.,34)`20
- X RETURN
- X 113 IF(NENHERE .GE. 1) GO TO 115
- X CALL PROUT(56HSULU: "BUT SIR, THERE ARE NO ENEMIES IN THIS QUADRA
- X +NT.",56)
- X`09RETURN
- X115 IF(DAMAGE(14).LE.0) GOTO 116 `20
- X CALL PROUT(17HDEATHRAY DAMAGED.,17)
- X RETURN `20
- X116 IDIDIT=1 `20
- X CALL PROUT(44HKIRK: "PREPARE FOR ACTIVATION OF DEATHRAY!",44)`20
- X CALL SKIP(1)
- X CALL PROUT(37HSPOCK: "PREPARATIONS COMPLETE, SIR.",37)
- X CALL PROUT(16HKIRK: "ENGAGE!",16) `20
- X`09CALL SKIP(1)
- X CALL PROUT(45HWHIRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRR,45)
- X R=RANF(0)`20
- X IF(R .GT. 0.30) GO TO 130`20
- XC--------BANG! `20
- X CALL PROUT(32HSULU: "CAPTAIN! IT'S WORKING!",32) `20
- X CALL REDALRT
- X CALL PROUT(41H***MATTER-ANTIMATTER IMPLOSION IMMINENT! ,41) `20
- X GO TO 5610
- XC--------SUCCESS!`20
- X130 CALL PROUT(32HSULU: "CAPTAIN! IT'S WORKING!",32) `20
- X`09CALL SKIP(1)
- X NENHER2=NENHERE`20
- X DO 135 I=1,NENHER2
- X`09II=KX(1)
- X`09JJ=KY(1)
- X 135 CALL DEADKL(II,JJ,QUAD(II,JJ),II,JJ)
- X CALL SKIP(1)
- X CALL PROUT(42HENSIGN CHEKOV: "CONGRATULATIONS CAPTAIN!",42) `20
- X IF(REMKL .EQ. 0) CALL FINISH(1)`20
- X IF(REMKL .EQ. 0) RETURN`20
- X CALL SKIP(1)
- X CALL PROUT(`20
- X +56HSPOCK: "CAPTAIN, I BELIEVE THE "EXPERIMENTAL DEATH RAY",56)
- X IF(RANF(0).GT..05) GOTO 140 `20
- X CALL PROUT(22HIS STILL OPERATIONAL.",22) `20
- X RETURN `20
- X140 CALL PROUT(33HHAS BEEN RENDERED DISFUNCTIONAL.",33) `20
- X DAMAGE(14)=39.95 `20
- X RETURN `20
- X END`20
- $ CALL UNPACK TRPLANET.FOR;1 946500293
- $ create 'f'
- X SUBROUTINE PLAQUE`20
- XC
- XC`0930-MAY-79
- XC`09OUTPUT DATE WITH LOWER-CASE CHARACTERS
- XC`0931-MAY-79
- XC`09DON'T RE-OPEN OUTPUT IF LUN=2 ON ENTRY
- XC
- X`09INCLUDE 'TREKCOM/NOLIST'
- X COMMON/PLAQ/ISCORE,PERDATE,ISKILL`20
- X`09LOGICAL*1 NAME(30)
- X`09COMMON/SCANBF/KEY,AITEM
- X`09COMMON/PRLUN/LUN
- X`09LUNSAV=LUN
- X`09LUN=1
- X11`09CALL PROMPT('ENTER NAME (UP TO 30 CHARACTERS): ',34)
- X`09LUN=LUNSAV
- X`09READ(1,20,ERR=11,END=11) ICHAR,NAME
- X20`09FORMAT(Q,30A1)
- X`09NSKIP=65-ICHAR/2
- X`09IF(LUN.EQ.2)GO TO 25
- X`09LUN=2
- X`09CALL CLOSE(2)
- X`09CALL ASSIGN(2,'LP:')
- X25`09WRITE(2,30)
- X30`09FORMAT('1')
- X`09CALL SKIP(4)
- XC--------DRAW ENTERPRISE PICTURE.`20
- X`09CALL PROUT(114H `20
- X + EEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEE,`20
- X +114)`20
- X CALL PROUT (114H EEE `20
- X + E : : : E,`20
- X +114)`20
- X CALL PROUT (114H EE EEE `20
- X + E : : NCC-1701 : E,`20
- X +114)`20
- X CALL PROUT (113H EEEEEEEEEEEEEEEE EEEEEE`20
- X +EEEEEEEEE E : : : E,
- X +114)`20
- X CALL PROUT (112H E `20
- X + E EEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEE
- X`091 ,114)
- X CALL PROUT (81H EEEEEEEEE EEEEE
- X +EEEEEEEE E E ,81)`20
- X CALL PROUT (81H EEEEEEE EEEEE E
- X + E E E ,81)`20
- X CALL PROUT (81H EEE `20
- X + E E E E ,81)`20
- X CALL PROUT (81H `20
- X + E E E E ,81)`20
- X CALL PROUT (81H `20
- X + EEEEEEEEEEEEE E E ,81)`20
- X CALL PROUT (87H `20
- X + EEE : EEEEEEE EEEEEEEE,87)`20
- X CALL PROUT (88H `20
- X + :E : EEEE E,88)
- X CALL PROUT (88H `20
- X +.-E -:----- E,88)
- X CALL PROUT (88H `20
- X + :E : E,88)
- X CALL PROUT (87H `20
- X + EE : EEEEEEEE,87)`20
- X CALL PROUT (81H `20
- X + EEEEEEEEEEEEEEEEEEEEEEE ,81)
- X CALL SKIP(3)
- X CALL PROUT(74H `20
- X + U. S. S. ENTERPRISE,74)`20
- X 5 CALL SKIP(1)
- X CALL SKIP(3)
- X CALL PROUT(93H For demonstrating`20
- X +outstanding ability as a starship captain,93)`20
- X CALL SKIP(1)
- X CALL PROUT(81H Star
- V `20
- X +fleet Command bestows to you ,81)
- X CALL SKIP(1)
- X DO 8 I=1,NSKIP
- X 8 CALL CRAM(1H )
- X`09CALL CRAMS(NAME,ICHAR)
- X CALL CREND
- X CALL SKIP(1)
- X CALL PROUT(71H `20
- X + the rank of ,71) `20
- X`09CALL SKIP(1)
- X CALL PROUT(75H `20
- X + "Commodore Emeritus",75)`20
- X`09CALL SKIP(1)
- X CALL CRAM(58H `20
- X + )
- X IF(ISKILL .EQ. 4) CALL CRAM(8H Expert )`20
- X IF(ISKILL .EQ. 5) CALL CRAM(9HEmeritus )
- X CALL CRAMDMP(5Hlevel)
- X`09CALL SKIP(1)
- X CALL CRAM(66H `20
- X`091 This day of )
- X`09CALL FOR$DATE(NAME)
- X`09NAME(5)=NAME(5)+32
- X`09NAME(6)=NAME(6)+32
- X`09CALL CRAMS(NAME,9)
- X`09CALL CREND
- X CALL SKIP(1)
- X CALL CRAM(69H `20
- X`091 Your score: )
- X`09CALL CRAMI(ISCORE,0)
- X`09CALL CREND
- X CALL SKIP(1)
- X CALL CRAM(76H `20
- X`091Klingons per stardate: )
- X`09CALL CRAMF(PERDATE,0,2)
- X`09CALL CREND
- X RETURN `20
- X END`20
- $ CALL UNPACK TRPLAQUE.FOR;1 339143108
- $ create 'f'
- X SUBROUTINE PRELIM`20
- XC
- XC`095-APR-79
- XC`09UPDATE THE GREETING MESSAGE.
- XC
- XC--------PRINT A BUNCH OF GARBAGE WHEN GAME IS FIRST ENTERED
- X`09CALL ASSIGN(1,'TT:')
- X`09CALL PROUT(28H** U.T. "SUPER" STAR TREK **,28)
- X`09CALL PROUT(25HADAPTED FOR VAX/VMS BY MK,25)
- X`09CALL SKIP(1)
- X`09CALL PROUT(26HLIST THE FILE STARTREK.DOC,26)
- X`09CALL PROUT(25HFOR PLAYING INSTRUCTIONS.,25)
- X`09CALL SKIP(1)
- XC`09CALL PROUT(
- XC`091 44HFOR LATEST ON UPDATES, TYPE "TRKNEWS" AS ,44)
- XC CALL PROUT(`20
- XC $52HYOUR GAME. FOR PLAYING INSTRUCTIONS ENTER "TRKINST" ,52) `20
- X RETURN
- X END`20
- $ CALL UNPACK TRPRELIM.FOR;1 1211258963
- $ create 'f'
- X SUBROUTINE PROUT(LINE,KOUNT)
- X`09COMMON/PRLUN/LUN
- X`09BYTE LINE(120)
- X`09DATA LUN/1/
- X`09CALL CHEW
- X`09WRITE (LUN,100,ERR=900) (LINE(I),I=1,KOUNT)
- X100`09FORMAT (1X120A1)
- X RETURN
- X`09ENTRY PROMPT(LINE,KOUNT)
- X`09CALL CHEW
- X`09WRITE (LUN,101,ERR=900) (LINE(I),I=1,KOUNT)
- X101`09FORMAT ('$',120A1)
- X900`09CONTINUE
- X`09RETURN
- X END`20
- $ CALL UNPACK TRPROUT.FOR;1 422139800
- $ create 'f'
- X SUBROUTINE RAM(IBUMPD,IENM,IX,IY)`20
- X`09INCLUDE 'TREKCOM/NOLIST'
- X`09LOGICAL*1 IENM
- X CALL REDALRT
- X CALL PROUT(22H***COLLISION IMMINENT.,22)`20
- X CALL SKIP(2)
- X CALL CRAM3AS
- X CALL CRAMSHP
- X TYPE=1.0 `20
- X IF(IENM .EQ. IHT) TYPE=0.5 `20
- X IF(IENM .EQ. IHR) TYPE=1.5
- X IF(IENM .EQ. IHC) TYPE=2.0
- X IF(IENM .EQ. IHS) TYPE=2.5
- X IF(IBUMPD .EQ. 0) CALL CRAM(6H RAMS )`20
- X IF(IBUMPD .EQ. 1) CALL CRAM(11H RAMMED BY )`20
- X CALL CRAMENA(IENM,2,IX,IY)
- X CALL CREND
- X CALL DEADKL(IX,IY,IENM,SECTX,SECTY)`20
- X CALL CRAM3AS
- X CALL CRAMSHP
- X CALL CRAMDMP(17H HEAVILY DAMAGED.)
- X ICAS=10.0+20.0*RANF(0)
- X CALL CRAM(19H***SICKBAY REPORTS )`20
- X CALL CRAMI(ICAS,0)
- X CALL CRAMDMP(12H CASUALTIES.)`20
- X CASUAL=CASUAL+ICAS
- X DO 10 L=1,NDEVICE`20
- X IF(DAMAGE(L) .LT. 0) GO TO 10`20
- X IF(L.EQ.14) GOTO 10 `20
- X EXTRADM=(10.0*TYPE*RANF(0)+1.0)*DAMFAC
- X DAMAGE(L)=DAMAGE(L)+TIME+EXTRADM
- X 10 CONTINUE
- X`09ISUBDAM=1
- X SHLDUP=0
- X IF(REMKL.NE.0) CALL DREPORT `20
- X IF(REMKL .EQ. 0) CALL FINISH(1)`20
- X RETURN
- X END`20
- $ CALL UNPACK TRRAM.FOR;1 723538988
- $ create 'f'
- X`09 REAL FUNCTION RANF(DUMMY)
- XC
- XC`0925-APR-79
- XC`09CHANGED TO USE THE ONE-ARGUMENT VERSION OF THE RAN FUNCTION,
- XC`09AND TO USE AN INTEGER*4 SEED.
- XC
- X`09INTEGER*4 IRAN,ISEED
- XC*
- X`09RANF=RAN(IRAN)
- X`09RETURN
- XC*
- X`09ENTRY RANSET(ISEED)
- XC*
- X`09IRAN=ISEED
- X`09RETURN
- X`09END
- $ CALL UNPACK TRRANF.FOR;1 152251633
- $ create 'f'
- X SUBROUTINE SCAN`20
- XC
- XC`095-APR-79
- XC`09ACCEPT LOWER CASE ALPHA INPUT AND CONVERT TO UPPER CASE.
- XC`09CALL GETOUT WHEN A CTRL/Z IS TYPED TO ERASE THE SCREEN
- XC`09AND EXIT.
- XC
- X`09INCLUDE 'TREKCOM/NOLIST'
- X`09REAL*8 AITEM,TITEM
- X`09COMMON/SCANBF/KEY,AITEM
- X`09EQUIVALENCE (FNUM,AITEM)
- X`09BYTE LINE(80),KHAR,ITEM(8)
- X`09EQUIVALENCE (TITEM,ITEM)
- X DATA ICH,KHAR,ITEM/80,1H ,0,0,0,0,0,0,0,0/
- XC--------READ IN NEW LINE IF NEEDED.
- X4 IF(ICH.LT.80) GO TO 5
- X`09READ (1,100,ERR=700,END=900) ICHAR,LINE
- X100`09FORMAT (Q,80A1)
- X`09LINE(ICHAR+1)=0
- X 5 AITEM=0
- X ASSIGN 10 TO IRET
- X 10 IF(KHAR .EQ. 1H ) GO TO 500
- XC--------IF END-OF LINE IS HIT, RETURN WITH AITEM=0.
- X`09IF(ICHAR.EQ.0) GOTO 15
- X`09IF(KHAR.NE.0) GOTO 20
- X 15 KEY=IHEOL
- X GO TO 600
- XC--------IF INPUT IS NOT NUMERIC, PACK ALL CHARACTERS TOGETHER UP TO
- XC A BLANK OR END-OF-LINE, AND RETURN IN 10H FORMAT.
- X 20 IF(KHAR.EQ.1H+ .OR. KHAR.EQ.1H- .OR. KHAR.EQ.1H.) GO TO 40
- X IF(KHAR.GE.1H0 .AND. KHAR.LE.1H9) GO TO 40
- X IF(KHAR .LT. 1HA .OR. KHAR .GT. 1HZ) GO TO 500
- X KEY=IHALPHA
- X ASSIGN 25 TO IRET
- X ICHX=1
- X GO TO 26
- X25`09ICHX=ICHX+1
- X IF(KHAR .EQ. 0 .OR. KHAR .EQ. 1H ) GOTO 30`20
- X26 IF(ICHX .LE. 8) ITEM(ICHX)=KHAR
- X`09GOTO 500
- X30`09IF(ICHX.GT.8) GOTO 35
- X`09DO 34 IT=ICHX,8
- X34`09ITEM(IT)=1H`20
- X35`09AITEM=TITEM
- X`09RETURN
- XC--------INPUT IS NUMERIC. RETURN AS A REAL NUMBER.
- X 40 KEY=IHREAL
- X SIGN=1.0
- X KEXPON=0
- X`09KFRACT=0
- X ASSIGN 50 TO IRET
- X IF(KHAR .EQ. 1H+) GO TO 500
- X IF(KHAR .NE. 1H-) GO TO 50
- X SIGN=-1.0
- X GO TO 500
- X 50 IF(KHAR.LT.1H0 .OR. KHAR.GT.1H9) GO TO 60
- X`09IT=KHAR
- X FNUM=10.0*FNUM+FLOAT(IT-"60)
- X KEXPON=KEXPON-KFRACT
- X GO TO 500
- X 60 IF(KHAR .NE. 1H.) GO TO 70
- X IF(KFRACT .NE. 0) GO TO 15
- X KFRACT=1
- X GO TO 500
- X 70 AITEM=SIGN*AITEM*10.0**KEXPON
- X RETURN
- XC--------ROUTINE TO RETURN NEXT CHARACTER IN 1H FORMAT
- XC--------LOWER CASE IS CONVERTED TO UPPER CASE
- X 500 ICH=ICH+1
- X IF(ICH .LE. 80) GO TO 510
- X ICH=1
- X 510 KHAR=LINE(ICH)
- X IF(KHAR .GE. "140) KHAR=KHAR-"40
- X GO TO IRET
- XC*
- X ENTRY CHEW
- XC--------DISCARD REMAINDER OF LAST LINE READ IN.
- X600 ICH=80
- X KHAR=1H`20
- X RETURN
- X700`09CALL PROUT(15HTTY READ ERROR.,15)
- X`09GO TO 4
- X900`09CONTINUE
- X`09CALL GETOUT
- X END`20
- $ CALL UNPACK TRSCAN.FOR;1 1316950373
- $ create 'f'
- X SUBROUTINE SCOM`20
- X`09INCLUDE 'TREKCOM/NOLIST'
- X`09LOGICAL*1 LOC
- X DIMENSION BDIST(5)
- X EQUIVALENCE (CRACKS(5),LOCSUP),(LOC,LOCSUP)
- XC--------COMPUTE DISTANCES TO STARBASES.
- X IF(REMBASE .LE. 0) GO TO 60`20
- X`09BDMAX=0.
- X`09SX=ISX
- X`09SY=ISY
- X DO 1 I=1,REMBASE
- X`09BQX=BASEQX(I)
- X`09BQY=BASEQY(I)
- X 1 BDIST(I) = SQRT((BQX-SX)**2 +(BQY-SY)**2)`20
- XC--------SORT INTO NEAREST FIRST ORDER.`20
- X IF(REMBASE.LE.1) GO TO 4
- X MINUS1 = REMBASE -1`20
- X 2 ISWITCH = 0`20
- X DO 3 I=1, MINUS1
- X IF(BDIST(I) .LE. BDIST(I+1)) GO TO 3
- X`09T=BDIST(I)
- X`09BDIST(I)=BDIST(I+1)
- X`09BDIST(I+1)=T
- X ISWITCH = 1`20
- X 3 CONTINUE
- X IF(ISWITCH.NE.0) GO TO 2
- XC--------LOOK FOR NEAREST BASE WITHOUT A COMMANDER, NO ENTERPRISE, AND
- XC--------WITHOUT TOO MANY KLINGONS, AND NOT ALREADY UNDER ATTACK.`20
- X4`09IFINDIT=0
- X`09IWHICHB=0
- X DO 8 I=1, REMBASE`20
- X`09IBQX=BASEQX(I)
- X`09IBQY=BASEQY(I)
- X IF((IBQX .EQ. QUADX) .AND. (IBQY .EQ. QUADY)) GO TO 8`20
- X IF((IBQX .EQ. BATX) .AND. (IBQY .EQ. BATY)) GO TO 8`20
- X NUM=GALAXY(IBQX,IBQY)`20
- X IF(NUM .GT. 899) GO TO 8
- X IF(REMCOM .LE. 0) GO TO 6`20
- X DO 5 J=1, REMCOM
- X 5 IF((IBQX .EQ. CX(J)) .AND. (IBQY .EQ. CY(J))) GO TO 7`20
- X6`09IFINDIT=1
- X`09IWHICHB=I
- X`09GO TO 10
- X 7 IF (IFINDIT .EQ. 2) GO TO 8`20
- X`09IFINDIT=2
- X`09IWHICHB=I
- X 8 CONTINUE
- X IF(IFINDIT .EQ. 0) RETURN
- X`09IBQX=BASEQX(IWHICHB)
- X`09IBQY=BASEQY(IWHICHB)
- XC--------DECIDE HOW TO MOVE TOWARD BASE.
- X 10 IDELTX = IBQX -ISX
- X IF(IDELTX .GT. 1) IDELTX = 1
- X IF(IDELTX .LT. -1) IDELTX=-1
- X IDELTY=IBQY-ISY`20
- X IF(IDELTY .GT. 1) IDELTY = 1
- X IF(IDELTY .LT. -1) IDELTY=-1
- XC--------ATTEMPT FIRST TO MOVE IN BOTH X AND Y DIRECTION.`20
- X`09IQX=ISX+IDELTX
- X`09IQY=ISY+IDELTY
- X ASSIGN 23 TO IWHERE`20
- XC--------MAKE CHECKS ON POSSIBLE DESTINATION QUADRANT.
- X 15 IF((IQX .EQ. QUADX) .AND. (IQY .EQ. QUADY)) GO TO IWHERE
- X IF((IQX.LT.1).OR.(IQX.GT.8).OR.(IQY.LT.1).OR.(IQY.GT.8))
- X + GO TO IWHERE
- +-+-+-+-+-+-+-+- END OF PART 14 +-+-+-+-+-+-+-+-
-