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 [18/18]
- Date: 7 Apr 93 11:10:38 EDT
- Organization: Pembroke State University
- Lines: 165
- Message-ID: <1993Apr7.111038.1@pembvax1.pembroke.edu>
- NNTP-Posting-Host: papa.pembroke.edu
- Xref: uunet vmsnet.sources.games:660
-
- -+-+-+-+-+-+-+-+ START OF PART 18 -+-+-+-+-+-+-+-+
- X POWER=(DIST+0.05)*WARPFAC*WARPFAC*WARPFAC*(SHLDUP+1)
- X IF(POWER .LT. ENERGY) GO TO 10
- X CALL SKIP(1)
- X CALL PROUT(24H"ENGINEERING TO BRIDGE--,24)`20
- X IF(SHLDUP.EQ.0 .OR. 0.5*POWER.GT.ENERGY) GO TO 5
- X CALL PROUT(`20
- X +61H WE HAVEN'T THE ENERGY TO GO THAT FAR WITH THE SHIELDS UP."`20
- X + ,61)
- X RETURN
- X 5 IWARP=(ENERGY/(DIST+0.05))**0.3333333333
- X IF(IWARP .LE. 0) GO TO 8
- X CALL CRAM(
- X + 53H WE HAVEN'T THE ENERGY. BUT WE COULD DO IT AT WARP ) `20
- X CALL CRAMI(IWARP,0)`20
- X IF(SHLDUP.NE.0) GO TO 6`20
- X CALL CRAMDMP(2H.")
- X RETURN
- X 6 CALL CRAMDMP(1H,)`20
- X CALL PROUT(31H IF YOU'LL LOWER THE SHIELDS.",31) `20
- X RETURN
- X 8 CALL PROUT(`20
- X + 51H WE CAN'T DO IT, CAPTAIN. WE HAVEN'T THE ENERGY.",51) `20
- X RETURN
- XC--------MAKE SURE ENOUGH TIME IS LEFT FOR TRIP`20
- X 10 TIME=10.0*DIST/WFACSQ`20
- X IF(TIME .LT. 0.80*REMTIME) GO TO 20`20
- X CALL SKIP(1)
- X CALL PROUT(`20
- X + 51HFIRST OFFICER SPOCK: "CAPTAIN, I COMPUTE THAT SUCH,41)
- X CALL CRAM(37H A TRIP WOULD REQUIRE APPROXIMATELY )`20
- X CALL CRAMF(100.0*TIME/REMTIME,0,2)
- X`09CALL CRAMDMP(9H % OF OUR)
- X CALL PROMPT(`20
- X + 48H REMAINING TIME. ARE YOU SURE THIS IS WISE?" ,48)`20
- X IF(JA(DUMMY)) GO TO 20
- X RETURN
- XC*`20
- X ENTRY WARPX`20
- XC*`20
- X20`09BLOOEY=0
- X`09TWARP=0
- X IF(WARPFAC .LE. 6.0) GO TO 50`20
- XC--------DECIDE IF ENGINE DAMAGE WILL OCCUR`20
- X PROB=DIST*(6.0-WARPFAC)**2/66.666666666`20
- X IF(PROB .GT. RANF(0)) BLOOEY=1
- X IF(BLOOEY.NE.0) DIST=RANF(0)*DIST`20
- XC----------DECIDE IF TIME WARP WILL OCCUR`20
- X TWARP=0`20
- X IF(WARPFAC .LT. 10.0) GO TO 40
- X IF(0.5*DIST .GT. RANF(0)) TWARP=1`20
- X 40 IF(BLOOEY .EQ. 0 .AND. TWARP .EQ. 0) GO TO 50`20
- XC--------IF ENGINE DAMAGE OR TIME WARP SHOULD OCCUR, CHECK PATH`20
- X ANGLE=((15.0-DIREC)*0.5235998)
- X DELTAX=-SIN(ANGLE)
- X DELTAY=COS(ANGLE)`20
- X BIGGER=AMAX1(ABS(DELTAX),ABS(DELTAY))`20
- X DELTAX=DELTAX/BIGGER
- X DELTAY=DELTAY/BIGGER
- X N=10.0*DIST*BIGGER+0.5
- X X=SECTX`20
- X Y=SECTY`20
- X IF(N .EQ. 0) GO TO 50`20
- X DO 45 L=1,N`20
- X X=X+DELTAX
- X IX=X+0.5
- X IF(IX .LT. 1 .OR. IX .GT. 10) GO TO 50
- X Y=Y+DELTAY
- X IY=Y+0.5
- X IF(IY .LT. 1 .OR. IY .GT. 10) GO TO 50
- X IF(QUAD(IX,IY) .EQ. IHDOT) GO TO 45
- X`09BLOOEY=0
- X`09TWARP=0
- X 45 CONTINUE
- XC--------ACTIVATE WARP ENGINES AND PAY THE COST`20
- X50 KSTUF(4)=0 `20
- X CALL MOVE `20
- X IF(ALLDONE.NE.0) RETURN`20
- X ENERGY=ENERGY - DIST*WARPFAC*WARPFAC*WARPFAC*(SHLDUP+1)`20
- X IF(ENERGY .GT. 0) GO TO 55
- X CALL FINISH(4)
- X RETURN
- X55 IF(KSTUF(4).EQ.0) TIME=10.0*DIST/WFACSQ `20
- XC--------ENTER TIME WARP
- X IF(TWARP.NE.0) CALL TIMEWRP`20
- XC--------DAMAGE WARP ENGINES
- X IF(BLOOEY .EQ. 0) GO TO 60
- X DAMAGE(6)=DAMFAC*(3.0*RANF(0)+1.0)
- X CALL SKIP(1)
- X CALL PROUT(24H"ENGINEERING TO BRIDGE--,24)`20
- X CALL PROUT(44H SCOTT HERE. THE WARP ENGINES ARE DAMAGED.,44)`20
- X CALL PROUT(41H WE'LL HAVE TO REDUCE SPEED TO WARP 4." ,41) `20
- X 60 IDIDIT=1
- X RETURN
- XC--------NO WARP ENGINES
- X 90 CALL SKIP(1)
- X CALL PROUT(25HWARP ENGINES INOPERATIVE.,25)
- X RETURN
- X END`20
- $ CALL UNPACK TRWARP.FOR;1 1632833976
- $ create 'f'
- X SUBROUTINE ZAP
- X`09INCLUDE 'TREKCOM/NOLIST'
- X INTEGER CDAM(5)`20
- X EQUIVALENCE (CRACKS(1),HIT),(CRACKS(3),IHURT),(CRACKS(4),L)`20
- X PFAC=1.0/INSHLD`20
- X CHGFAC=1.0
- X IF(SHLDCHG .EQ. 1) CHGFAC=0.25+0.50*RANF(0)`20
- X IF(SHLDUP .EQ. 0 .AND. SHLDCHG .EQ. 0) GO TO 10`20
- X PROPOR=AMAX1(PFAC*SHLD,0.10)
- X HITSH=PROPOR*CHGFAC*HIT+1.0`20
- X ABSORB=0.8*HITSH
- X IF(ABSORB .GT. SHLD) ABSORB=SHLD
- X SHLD=SHLD-ABSORB
- X IF(SHLD .LE. 0.0) SHLDUP=0
- X HIT=HIT-HITSH`20
- X IF(PROPOR .GT. 0.1 .AND. HIT .LT. (0.005*ENERGY)) RETURN
- XC--------IT'S A HIT! PRINT OUT HIT SIZE
- X 10 IHURT=1`20
- X CALL CRAMF(HIT,8,2)`20
- X CALL CRAM(9H UNIT HIT)
- X IF(L .EQ. 0) GO TO 15`20
- X CALL CRAM(6H FROM )`20
- X JX=KX(L)
- X JY=KY(L)
- X CALL CRAMENA(QUAD(JX,JY),0,JX,JY)`20
- X 15 CALL CREND
- XC--------DECIDE IF HIT IS CRITICAL
- X IF(HIT .LT. (275.0-25.0*SKILL)*(1.0+0.5*RANF(0))) GO TO 60
- X NCRIT=1.0 + HIT/(500.0+100.0*RANF(0))`20
- X CALL CRAM(17H***CRITICAL HIT--)`20
- XC--------SELECT DEVICE(S) AND CAUSE DAMAGE
- X KTR=1`20
- X DO 50 LL=1,NCRIT
- X 20 J=NDEVICE*RANF(0)+1.0`20
- X IF(DAMAGE(J) .LT. 0) GO TO 20`20
- XC*--------CHEAT TO PREVENT DEATHRAY FROM BEING DAMAGED. `20
- X IF(J.EQ.14) GOTO 20 `20
- XC--------CHEAT TO PREVENT SHUTTLE DAMAGE UNLESS ON SHIP.
- X IF((J .EQ. 10) .AND. (ISCRAFT .NE. 1)) GO TO 20`20
- X CDAM(LL)=J
- X EXTRADM=(HIT*DAMFAC)/(NCRIT*(75.0+25.0*RANF(0)))
- X DAMAGE(J)=DAMAGE(J)+EXTRADM`20
- X IF(LL .EQ. 1) GO TO 40
- X DO 30 LLL=2,LL
- X IF(J .EQ. CDAM(LLL-1)) GO TO 50`20
- X 30 CONTINUE
- X KTR=KTR+1`20
- X IF(KTR .EQ. 3) CALL CREND`20
- X CALL CRAM(5H AND )
- X 40 CALL CRAMS(DEVICE(1,J),16)
- X 50 CONTINUE
- X CALL CRAMDMP(9H DAMAGED.)`20
- XC--------PRINT MESSAGE IF SHIELDS WERE UP AND GOT KNOCKED DOWN
- X IF(DAMAGE(8) .EQ. 0) GO TO 60`20
- X IF(SHLDUP.NE.0) CALL PROUT(24H***SHIELDS KNOCKED DOWN.,24)`20
- X SHLDUP=0
- XC--------IF SUBSPACE RADIO GOT DAMAGED, REMEMBER THE FACT.
- X 60`09IF(DAMAGE(9).GT.0)ISUBDAM=1
- X ENERGY=ENERGY-HIT`20
- X RETURN `20
- X END`20
- $ CALL UNPACK TRZAP.FOR;1 1115636691
- $ v=f$verify(v)
- $ EXIT
-