home *** CD-ROM | disk | FTP | other *** search
- Path: uunet!decwrl!concert!lester.appstate.edu!pembvax1.pembroke.edu!rennie
- From: rennie@pembvax1.pembroke.edu
- Newsgroups: vmsnet.sources.games
- Subject: Star Trek - Part [17/18]
- Date: 7 Apr 93 11:09:57 EDT
- Organization: Pembroke State University
- Lines: 436
- Message-ID: <1993Apr7.110957.1@pembvax1.pembroke.edu>
- NNTP-Posting-Host: papa.pembroke.edu
- Xref: uunet vmsnet.sources.games:659
-
- -+-+-+-+-+-+-+-+ START OF PART 17 -+-+-+-+-+-+-+-+
- X221`09CALL CRAM(11HSTARBASE IN )
- X`09CALL CRAMLOC(1,BATX,BATY)
- X`09CALL CRAMDMP(27H IS CURRENTLY UNDER ATTACK.)
- X`09CALL CRAM(31HIT CAN HOLD OUT UNTIL STARDATE )
- X`09CALL CRAMF(FUTURE(5),0,1)
- X`09CALL CRAMDMP(1H.)
- XC*--IS THE SUPER COMMANDER ATTACKING?
- X240`09IF(ISSOS.EQ.0)GO TO 245
- X`09IF(ISATB.NE.1) GOTO 245
- X`09CALL CRAM(11HSTARBASE IN )
- X`09CALL CRAMLOC(1,ISX,ISY)
- X`09CALL CRAMDMP(33H IS UNDER SUPER-COMMANDER ATTACK. )
- X`09CALL CRAM(31HIT CAN HOLD OUT UNTIL STARDATE )
- X`09CALL CRAMF(FUTURE(7),0,1)
- X`09CALL CRAMDMP(1H.)
- XC*--ISSUE CAVEAT IF THE SUBSPACE RADIO HAS BEEN BROKEN
- X245`09IF(ISUBDAM.EQ.0)GO TO 249
- X`09CALL CRAM('THE SUBSPACE RADIO ')
- X`09IF(DAMAGE(9).NE.0)CALL CRAM('IS')
- X`09IF(DAMAGE(9).EQ.0)CALL CRAM('WAS')
- X`09CALL CRAMDMP(' DAMAGED. THUS YOU MAY NOT HAVE COMPLETE')
- X`09CALL CRAMDMP('INFORMATION ON SUPERNOVAS AND ATTACKS ON BASES.')
- XC*--HOW MANY CASUALTIES?
- X249`09IF(CASUAL.EQ.0) GOTO 250
- X`09CALL CRAMSPI(CASUAL,'CASUALT','Y','IES')
- X`09CALL CRAMDMP(' SUFFERED SO FAR.')
- X250`09IF(NHELP.EQ.0) GOTO 260
- X`09CALL CRAMSP(NHELP,'CALL')
- X`09CALL CRAMDMP(' FOR HELP.')
- X260`09CALL SKIP(1)
- XC*--AND LET HIM PLAY IT
- X`09RETURN
- XC*--THAT WAS A BAD FREEZE OR FILE NOT OPENED
- X800`09CALL PROUT(17H GAME NOT FROZEN. ,17)
- XC*--TELL CHOOSE THAT WE DIDN'T GET ANYTHING
- X`09PASSWD=0.D0
- X`09RETURN
- X`09END
- $ CALL UNPACK TRTHAW.FOR;1 1667292104
- $ create 'f'
- X SUBROUTINE TIMEWRP
- X`09INCLUDE 'TREKCOM/NOLIST'
- X DIMENSION PICTURE(226)
- X EQUIVALENCE (PICTURE,DATE)
- X CALL PROUT(21H***TIME WARP ENTERED.,21)
- X IF(SNAP.NE.0 .AND. RANF(0).LT.0.5) GO TO 10`20
- XC--------TRAVEL FORWARD IN TIME`20
- X TIME=-0.5*INTIME*ALOG(RANF(0))
- X CALL CRAM(35HYOU ARE TRAVELLING FORWARD IN TIME )`20
- X CALL CRAMF(TIME,0,2)
- X CALL CRAMDMP(11H STARDATES.)
- XC--------CHEAT TO MAKE SURE NO TRACTOR BEAMS OCCUR DURING TIME WARP`20
- X FUTURE(2)=FUTURE(2)+TIME
- X GO TO 40
- XC--------TRAVEL BACKWARD IN TIME
- X 10 XDATE=DATE
- X DATE=SNAPSHT(1)`20
- X CALL CRAM(36HYOU ARE TRAVELLING BACKWARD IN TIME )
- X CALL CRAMF(XDATE-DATE,0,2)
- X CALL CRAMDMP(11H STARDATES.)
- X SNAP=0
- X DO 20 L=2,226`20
- X 20 PICTURE(L)=SNAPSHT(L)`20
- X IF(REMCOM .EQ. 0) GO TO 25
- X FUTURE(2)=DATE+EXPRAN(INTIME/REMCOM)
- X FUTURE(4)=DATE+EXPRAN(0.3*INTIME)`20
- X 25 FUTURE(1)=DATE+EXPRAN(0.5*INTIME)`20
- X FUTURE(3)=DATE+EXPRAN(0.5*INTIME)`20
- X IF(NSCREM.NE.0) FUTURE(6)=0.2777
- X ISATB=0`20
- X FUTURE(5)=1E38`20
- X`09FUTURE(7)=1E38
- X`09BATX=0
- X`09BATY=0
- XC--------REVERT STAR CHART TO EARLIER ERA.
- X DO 30 L=1,8`20
- X DO 30 LL=1,8
- X 30 STARCH(L,LL)=MIN0(1,STARCH(L,LL))`20
- X CALL PROUT(`20
- X + 57HSPOCK HAS RECONSTRUCTED A CORRECT STAR CHART FROM MEMORY.
- X`091 ,57)
- XC--------MODIFY DESTINATION QUADRANT TO CORRESPOND TO NEW TIME
- X 40 CALL NEWQUAD
- X RETURN
- X END`20
- $ CALL UNPACK TRTIMEWRP.FOR;1 1768519900
- $ create 'f'
- X`09PROGRAM STARTRK
- XC*********************************************************************
- XC* *
- XC* THE STAR TREK GAME *
- XC* BY *
- XC* DAVID MATUSZEK AND PAUL REYNOLDS *
- XC* *
- XC* WITH MODIFICATIONS AND ADDITIONS BY *
- XC* DON SMITH *
- XC* *
- XC* *
- XC* PERMISSION IS HEREBY GRANTED FOR THE COPYING, *
- XC* DISTRIBUTION, MODIFICATION AND USE OF THIS PROGRAM AND *
- XC* ASSOCIATED DOCUMENTATION FOR RECREATIONAL PURPOSES, *
- XC* PROVIDED THAT ALL REFERENCES TO THE AUTHORS ARE RETAINED. *
- XC* HOWEVER, PERMISSION IS NOT AND WILL NOT BE GRANTED FOR *
- XC* THE SALE OR PROMOTIONAL USE OF THIS PROGRAM OR PROGRAM *
- XC* DOCUMENTATION, OR FOR USE IN ANY SITUATION IN WHICH *
- XC* PROFIT MAY BE CONSIDERED AN OBJECTIVE, SINCE IT IS THE *
- XC* DESIRE OF THE AUTHORS TO RESPECT THE COPYRIGHTS OF THE *
- XC* ORIGINATORS OF STAR TREK. *
- XC* *
- XC*********************************************************************
- XC
- XC`094-APR-79
- XC`09MAKE COMMAND INPUT REPROMPT AFTER A BLANK LINE WITHOUT
- XC`09TYPING OUT A BUNCH OF GARBAGE.
- XC`09ALSO GET RID OF THE CRAP ABOUT TYPING SOMETHING TO GET
- XC`09YOUR CITATION.
- XC`0913-APR-79
- XC`09ADD EMERGENCY EXIT COMMAND.
- XC`0925-APR-79
- XC`09GET RID OF COMMON /RAN/, WHICH IS NOT REFERENCED.
- XC`091-MAY-79
- XC`09REDO ALL MODULES TO GET THEIR COMMON FROM AN INCLUDE STATEMENT.
- XC`09THIS SHOULD GREATLY SIMPLIFY MAINTENANCE AND EXTENSION OF THE
- XC`09GAME.
- XC`09ALSO ADD 'GAME' COMMAND TO MAKE LIFE EASIER FOR THE PLAYER ON
- XC`09A SOFT COPY TERMINAL.
- XC`0931-MAY-79
- XC`09CLOSE PRINT FILE AND RESET LUN TO 1 AFTER OUTPUTTING SCORE
- XC`09AND/OR CITATION.
- XC
- X`09PARAMETER NCOMMDS=23
- X`09INCLUDE 'TREKCOM/LIST'
- X`09INTEGER CROP
- X`09LOGICAL FROZEN
- X`09REAL*8 ITEM,HELPX,TERM,ABAN,DEST,FREE,DEATH,AITEM
- X`09REAL*8 COMMAND(NCOMMDS)
- X`09COMMON/PRLUN/LUN
- X`09COMMON/SCANBF/KEY,AITEM
- X`09EQUIVALENCE (AITEM,ITEM)
- X`09EQUIVALENCE (CRACKS(6),KDIDIT)
- XC
- XC`09MASTER COMMAND LIST - INCLUDES ALL ABBREVIATABLE COMMANDS
- XC
- X DATA COMMAND/6HSRSCAN,6HLRSCAN,7HPHASERS,7HPHOTONS,4HMOVE,
- X + 7HSHIELDS,4HDOCK,7HDAMAGES,5HCHART,7HIMPULSE,4HREST,4HWARP,
- X + 6HSTATUS,7HSENSORS,5HORBIT,8HTRANSPOR,4HMINE,8HCRYSTALS,
- X + 7HSHUTTLE,7HPLANETS,7HREQUEST,6HEMEXIT,4HGAME/`20
- XC
- XC`09ALPHANUMERIC DATA
- XC
- X DATA IHEOL,IHREAL,IHALPHA,IHS,IHR,IHC,IHK,IHGREEN,IHRED,IHYELLO,
- X +IHDOCKD,IHE,IHF,IHBLANK,IHDOT,IHQUEST,IHP,IHSTAR,IHB/2HEO,2HRE,
- X +2HAL,1HS,1HR,1HC,1HK,2HGR,2HRE,2HYE,2HDO,1HE,1HF,
- X +1H ,1H.,1H?,1HP,1H*,1HB/
- X DATA IHT,IHNUM/1HT,1H#/`20
- XC
- XC`09DEVICE LIST
- XC
- XC`09DEVICES ARE:
- XC`091. S. R. SENSORS
- XC`092. L. R. SENSORS
- XC`093. PHASERS
- XC`094. PHOTON TUBES
- XC`095. LIFE SUPPORT
- XC`096. WARP ENGINES
- XC`097. IMPULSE ENGINES
- XC`098. SHIELDS
- XC`099. SUBSPACE RADIO
- XC`0910. SHUTTLE CRAFT
- XC`0911. COMPUTER
- XC`0912. TRANSPORTER
- XC`0913. SHIELD CONTROL
- XC`0914. DEATHRAY
- XC
- X`09DATA DEVICE/8HS. R. SE,5HNSORS,8HL. R. SE,5HNSORS,
- X`091 7HPHASERS,1H ,8HPHOTON T,4HUBES,8HLIFE SUP,4HPORT,
- X`092 8HWARP ENG,4HINES,8HIMPULSE ,7HENGINES,7HSHIELDS,1H ,
- X`093 8HSUBSPACE,6H RADIO,8HSHUTTLE ,5HCRAFT,8HCOMPUTER,1H ,
- X`094 8HTRANSPOR,3HTER,8HSHIELD C,6HONTROL,8HDEATHRAY,
- X`095 1H /
- XC
- XC`09NON-ABBREVIATABLE COMMAND LIST
- XC
- X`09DATA HELPX,TERM,ABAN,DEST,FREE,DEATH/'HELP','TERMINAT',
- X`091 'ABANDON','DESTRUCT','FREEZE','DEATHRAY'/
- XC
- X`09NDEVICE=14
- X`09ICITE=0
- XC--------PRINT OUT PRELIMINARY MESSAGES`20
- X CALL PRELIM`20
- XC--------INITIALIZE AND START NEW GAME
- X10`09CALL CHOOSE(FROZEN)
- X`09IF(FROZEN) GOTO 15
- X`09CALL SETUP
- XC--------REQUEST NEW COMMAND AND BRANCH TO CODE FOR THAT COMMAND
- X 15 MOVED=0`20
- X 20 IF(ALLDONE.NE.0) GO TO 9999`20
- X`09JUSTIN=0
- X`09TIME=0.
- X KDIDIT=0
- X CALL PROMPT(10HCOMMAND: ,10)`20
- X CALL SCAN`20
- X DO 30 L=1,NCOMMDS
- X`09IF(CROP(ITEM,COMMAND(L)))
- X + GO TO (100,200,300,400,500,600,700,800,900,1000,`20
- X + 1100,1200,1300,1400,1450,1500,1550,1600,1650,1670,
- X + 1680,1685,1690),L
- X 30 CONTINUE
- X IF(ITEM .EQ. HELPX ) GO TO 1700
- X IF(ITEM .EQ. TERM) GO TO 9000
- X IF(ITEM .EQ. ABAN ) GO TO 1900
- X IF(ITEM .EQ. DEST ) GO TO 2000
- X IF(ITEM .EQ. FREE ) GO TO 2100
- X IF(ITEM .EQ. DEATH ) GO TO 2200
- X IF(KEY .NE. IHEOL) GO TO 40`20
- XC CALL PROUT(18HBLANK LINE IGNORED,18)`20
- X GO TO 20
- X 40 CALL PROUT(`20
- X + 42HUNRECOGNIZED COMMAND. LEGAL COMMANDS ARE:,42)`20
- X CALL PROUT(`20
- X + 37H SRSCAN MOVE PHASERS HELP,37)
- X CALL PROUT(`20
- X + 40H STATUS IMPULSE PHOTONS ABANDON,40) `20
- X CALL PROUT(`20
- X + 41H LRSCAN WARP SHIELDS DESTRUCT,41)
- X CALL PROUT(`20
- X + 42H CHART REST DOCK TERMINATE,42)`20
- X CALL PROUT(`20
- X + 38H DAMAGES FREEZE SENSORS ORBIT,38)`20
- X CALL PROUT(`20
- X + 40H TRANSPORT MINE CRYSTALS SHUTTLE,40) `20
- X CALL PROUT(`20
- X + 39H PLANETS REQUEST DEATHRAY EMEXIT,39)
- X CALL PROUT(
- X + 7H GAME,7)
- X GO TO 20
- XC--------SHORT RANGE SCAN`20
- X 100 CALL SRSCAN`20
- X GO TO 20
- XC--------LONG RANGE SCAN
- X 200 CALL LRSCAN`20
- X GO TO 20
- XC--------FIRE PHASERS`20
- X 300 CALL PHASERS
- X 305 IF(IDIDIT .EQ. 0) GO TO 20
- X 310 CALL ATTACK`20
- X 320 IF(KDIDIT.NE.0) GO TO 2500`20
- X`09GO TO 15
- XC--------FIRE PHOTON TORPEDOS`20
- X 400 CALL PHOTONS
- X 410 IF(IDIDIT .EQ. 0) GO TO 20
- X MOVED=0`20
- X GO TO 2500
- XC--------MOVE UNDER WARP DRIVE
- X 500 IF(MOVED .EQ. 0) GO TO 510
- X505 MOVED=2 `20
- X 510 CALL WARP`20
- X520 IF((IDIDIT.EQ.0).AND.(MOVED.EQ.2)) MOVED=1 `20
- X IF(IDIDIT.EQ.0) GO TO 20
- X IF((MOVED.EQ.2).AND.(JUSTIN.EQ.0)) CALL ATTACK
- X`09MOVED=1
- X`09GO TO 2500
- XC--------RAISE OR LOWER DEFLECTOR SHIELDS`20
- X 600 CALL SHIELDS
- X IF(IDIDIT .EQ. 0) GO TO 20
- X CALL ATTACK`20
- X SHLDCHG=0`20
- X GO TO 320`20
- XC--------DOCK AT STARBASE`20
- X 700 CALL DOCK`20
- X IF(IDIDIT.NE.0) GO TO 310
- X`09GO TO 20
- XC--------LOOK AT DAMAGE REPORT
- X 800 CALL DREPORT
- X GO TO 20
- XC--------LOOK AT STAR CHART`20
- X 900 CALL CHART
- X GO TO 20
- XC--------MOVE UNDER IMPULSE POWER`20
- X 1000 IF(MOVED.NE.0) GO TO 505
- X CALL IMPULSE
- X GO TO 520`20
- XC--------REST AND REPAIR
- X 1100 CALL WAIT`20
- X GO TO 410`20
- XC--------CHANGE WARP FACTOR`20
- X 1200 CALL SETWARP
- X GO TO 20
- XC--------ASK FOR STATUS INFORMATION`20
- X 1300 CALL STATUS`20
- X GO TO 20
- XC--------GET A SENSOR SCAN OF QUADRANT.`20
- X 1400 CALL SENSOR`20
- X GO TO 20
- XC--------ENTER STANDARD ORBIT.
- X 1450 CALL ORBIT
- X GO TO 410`20
- XC--------TRANSPORT SOMEBODY SOMEWHERE.
- X 1500 CALL BEAM`20
- X GO TO 20
- XC--------DO A LITTLE DIGGING.`20
- X 1550 CALL MINE`20
- X GO TO 410`20
- XC--------LOAD SOME CRYSTALS (AND HOPE FOR THE BEST.)
- X 1600 CALL CRYSTAL
- X GO TO 20
- XC--------GO FOR A SPIN IN GALILEO.
- X 1650 CALL GALILEO
- X GO TO 410`20
- XC--------GET A PLANET LIST
- X 1670 CALL PLANET`20
- X GO TO 20
- XC--------INDIVIDUAL PIECE OF INFORMATION FROM STATUS REQUESTED.`20
- X 1680 CALL REQUEST
- X GO TO 20
- XC--------EMERGENCY EXIT - FREEZE ON EMSAVE.TRK AND BUG OUT
- X 1685 CALL EMEXIT
- X GO TO 20
- XC--------GAME - TYPE OUT INFORMATION ON CURRENT GAME
- X 1690 CALL GAME
- X GO TO 20
- XC--------CALL STARBASE FOR HELP`20
- X 1700 CALL HELP`20
- X GO TO 20
- XC--------ABANDON SHIP`20
- X 1900 CALL ABANDON
- X GO TO 20
- XC--------SELF-DESTRUCT
- X 2000 CALL DESTRCT
- X GO TO 20
- XC--------FREEZE THE CURRENT GAME
- X 2100 CALL FREEZE`20
- X IF(IDIDIT.EQ.1) GO TO 9999`20
- X`09GO TO 20
- XC--------TRY A DESPERATION MEASURE
- X 2200 CALL DEATHRA
- X GO TO 305`20
- XC--------AFTER COMMANDS WHICH MAY USE TIME, DO CHECKING`20
- X 2500 IF(ALLDONE.NE.0) GO TO 9999`20
- X IF(TIME .NE. 0.) CALL EVENTS`20
- X IF(ALLDONE.NE.0) GO TO 9999`20
- X IF(GALAXY(QUADX,QUADY) .NE. 1000) GO TO 2510
- X CALL AUTOVER
- X`09KDIDIT=0
- X`09MOVED=0
- X GO TO 2500
- XC--------CHECK FOR MOVE AND FIRE OPTION`20
- X2510 IF(NENHERE.EQ.0) CALL MOVETHO `20
- X IF(KDIDIT .EQ. 1 .OR. NENHERE .EQ. 0) GO TO 15 `20
- X IF(MOVED .EQ. 0 .OR. JUSTIN .EQ. 1) GO TO 310`20
- X`09GO TO 20
- XC--------GAME HAS ENDED. START NEW GAME OR FINALIZE.`20
- X9000`09CALL SCORE
- X9999`09IF(LUN.EQ.2)CALL CLOSE(2)
- X`09LUN=1
- X CALL SKIP(2)
- X CALL STARS
- X CALL SKIP(1)
- X CALL PROMPT(30HDO YOU WANT TO PLAY AGAIN? ,30)`20
- X IF(JA(DUMMY)) GO TO 10
- X CALL SKIP(1)
- X CALL PROUT(`20
- X + 48HMAY THE GREAT BIRD OF THE GALAXY ROOST UPON YOUR,48)`20
- X CALL PROUT(12HHOME PLANET.,12)`20
- X CALL SKIP(1)
- XC IF(ICITE .EQ. 0) GO TO 99999
- XC CALL PROUT(52HDON'T FORGET TO TYPE <RSF> TO RECEIVE YOUR CITATION.
- V `20
- XC C,52)
- X99999`09CALL EXIT
- X`09END
- $ CALL UNPACK TRTREK.FOR;1 1064939805
- $ create 'f'
- X SUBROUTINE WAIT`20
- X`09INCLUDE 'TREKCOM/NOLIST'
- X`09REAL*8 AITEM
- X`09COMMON/SCANBF/KEY,AITEM
- X`09EQUIVALENCE(AITEM,FNUM)
- XC--------DO COMMAND SCANNING
- X IDIDIT=0
- X 10 CALL SCAN
- X`09ANUM=FNUM`09`09!SAVE SCAN BUFFER
- X IF(KEY .NE. IHEOL) GO TO 20`20
- X CALL PROMPT(10HHOW LONG? ,10)`20
- X GO TO 10
- X20`09IF(KEY .NE. IHREAL) GO TO 60
- X IF(ANUM .LE. 0.) RETURN`20
- X IF(ANUM.LT.REMTIME .AND.NENHERE.EQ.0) GO TO 30`20
- X CALL PROMPT(13HARE YOU SURE?,13)
- X IF(JA(DUMMY) .EQ. 0) RETURN`20
- XC--------ALTERNATE REST PERIODS (EVENTS) WITH ATTACKS`20
- X 30 RESTING=1`20
- X AITEM2=ANUM
- X 40 IF(ANUM .LE. 0.) RESTING=0
- X IF(RESTING .EQ. 0) GO TO 50`20
- X`09TEMP=ANUM
- X IF(NENHERE.NE. 0) TEMP=AMIN1(ANUM,1.0+RANF(0))
- X`09TIME=TEMP
- X IF(TIME .LT. ANUM) CALL ATTACK`20
- X IF(NENHERE.EQ.0) CALL MOVETHO `20
- X IF(ALLDONE.NE.0) RETURN`20
- X CALL EVENTS`20
- X IDIDIT=1
- X IF(ALLDONE.NE.0) RETURN`20
- X ANUM=ANUM-TEMP
- X IF(GALAXY(QUADX,QUADY) .NE. 1000) GO TO 40
- X`09RESTING=0
- X`09TIME=0
- X GOTO 55 `20
- X 50 CALL CRAMF(REMTIME,0,2)`20
- X CALL CRAMDMP(16H STARDATES LEFT.)`20
- X55 IF(CONDIT.NE.IHDOCKD) RETURN `20
- X IF((AITEM2-ANUM).GE.9.99) DAMAGE(14)=0 `20
- XC*--------HANDLE SPECIAL CASE OF DEATHRAY REPAIRS.`20
- X RETURN
- X 60 CALL BEGPARD
- X RETURN
- X END`20
- $ CALL UNPACK TRWAIT.FOR;1 1578988330
- $ create 'f'
- X SUBROUTINE WARP`20
- X`09INCLUDE 'TREKCOM/NOLIST'
- X INTEGER BLOOEY,TWARP
- X IDIDIT=0
- X IF(DAMAGE(6) .GT. 10.0) GO TO 90
- X IF(DAMAGE(6) .EQ. 0.0 .OR. WARPFAC .LE. 4.0) GO TO 3
- X CALL PROUT(52HENGINEER SCOTT: "SORRY, CAPTAIN. UNTIL THIS DAMAGE
- X +,52)`20
- X CALL PROUT(43H IS REPAIRED, I CAN ONLY GIVE YOU WARP 4.",43)
- X RETURN
- XC--------READ IN COURSE AND DISTANCE
- X 3 CALL GETCD
- X IF(DIREC .LT. 0) RETURN`20
- XC--------MAKE SURE STARSHIP HAS ENOUGH ENERGY TO MAKE THE TRIP
- +-+-+-+-+-+-+-+- END OF PART 17 +-+-+-+-+-+-+-+-
-