SUBROUTINE WARP CALL WARPNT(1) RETURN END SUBROUTINE WARPX CALL WARPNT(2) RETURN END SUBROUTINE WARPNT(IZ) INCLUDE 'TREK.COM/-LI' INCLUDE 'TREK2.COM/-LI' INTEGER BLOOEY,TWARP GOTO (1001,1002),IZ 1001 IDIDIT=0 IF(DAMAGE(6) .GT. 10.0) GO TO 90 IF(DAMAGE(6) .EQ. 0.0 .OR. WRPFAC .LE. 4.0) GO TO 3 CALL PROUT(52HENGINEER SCOTT: "SORRY, CAPTAIN. UNTIL THIS DAMAGE +,52) CALL PROUT(43H IS REPAIRED, I CAN ONLY GIVE YOU WARP 4.",43) RETURN C--------READ IN COURSE AND DISTANCE 3 CALL GETCD IF(DIREC .LT. 0) RETURN C--------MAKE SURE STARSHIP HAS ENOUGH ENERGY TO MAKE THE TRIP POWER=(DIST+0.05)*WRPFAC*WRPFAC*WRPFAC*(SHLDUP+1) IF(POWER .LT. ENERGY) GO TO 10 CALL SKIP(1) CALL PROUT(24H"ENGINEERING TO BRIDGE--,24) IF(SHLDUP.EQ.0 .OR. 0.5*POWER.GT.ENERGY) GO TO 5 CALL PROUT( +61H WE HAVEN'T THE ENERGY TO GO THAT FAR WITH THE SHIELDS UP." + ,61) RETURN 5 IWARP=(ENERGY/(DIST+0.05))**0.3333333333 IF(IWARP .LE. 0) GO TO 8 CALL CRAM( + 53H WE HAVEN'T THE ENERGY. BUT WE COULD DO IT AT WARP ) CALL CRAMI(IWARP,0) IF(SHLDUP.NE.0) GO TO 6 CALL CRMDMP(2H.") RETURN 6 CALL CRMDMP(1H,) CALL PROUT(31H IF YOU'LL LOWER THE SHIELDS.",31) RETURN 8 CALL PROUT( + 51H WE CAN'T DO IT, CAPTAIN. WE HAVEN'T THE ENERGY.",51) RETURN C--------MAKE SURE ENOUGH TIME IS LEFT FOR TRIP 10 TIME=10.0*DIST/WFACSQ IF(TIME .LT. 0.80*RMTIME) GO TO 20 CALL SKIP(1) CALL PROUT( + 51HFIRST OFFICER SPOCK: "CAPTAIN, I COMPUTE THAT SUCH,41) CALL CRAM(37H A TRIP WOULD REQUIRE APPROXIMATELY ) CALL CRAMF(100.0*TIME/RMTIME,0,2) CALL CRMDMP(9H % OF OUR) CALL PROMPT( + 48H REMAINING TIME. ARE YOU SURE THIS IS WISE?" ,48) IF(JA(DUMMY)) GO TO 20 RETURN C* C ENTRY WARPX C* 1002 CONTINUE 20 BLOOEY=0 TWARP=0 IF(WRPFAC .LE. 6.0) GO TO 50 C--------DECIDE IF ENGINE DAMAGE WILL OCCUR PROB=DIST*(6.0-WRPFAC)**2/66.666666666 IF(PROB .GT. RANF(0)) BLOOEY=1 IF(BLOOEY.NE.0) DIST=RANF(0)*DIST C----------DECIDE IF TIME WARP WILL OCCUR TWARP=0 IF(WRPFAC .LT. 10.0) GO TO 40 IF(0.5*DIST .GT. RANF(0)) TWARP=1 40 IF(BLOOEY .EQ. 0 .AND. TWARP .EQ. 0) GO TO 50 C--------IF ENGINE DAMAGE OR TIME WARP SHOULD OCCUR, CHECK PATH ANGLE=((15.0-DIREC)*0.5235998) DELTAX=-SIN(ANGLE) DELTAY=COS(ANGLE) BIGGER=AMAX1(ABS(DELTAX),ABS(DELTAY)) DELTAX=DELTAX/BIGGER DELTAY=DELTAY/BIGGER N=10.0*DIST*BIGGER+0.5 X=SECTX Y=SECTY IF(N .EQ. 0) GO TO 50 DO 45 L=1,N X=X+DELTAX IX=X+0.5 IF(IX .LT. 1 .OR. IX .GT. 10) GO TO 50 Y=Y+DELTAY IY=Y+0.5 IF(IY .LT. 1 .OR. IY .GT. 10) GO TO 50 IF(QUAD(IX,IY) .EQ. IHDOT) GO TO 45 BLOOEY=0 TWARP=0 45 CONTINUE C--------ACTIVATE WARP ENGINES AND PAY THE COST 50 KSTUF(4)=0 CALL MOVE IF(ALLDON.NE.0) RETURN ENERGY=ENERGY - DIST*WRPFAC*WRPFAC*WRPFAC*(SHLDUP+1) IF(ENERGY .GT. 0) GO TO 55 CALL FINISH(4) RETURN 55 IF(KSTUF(4).EQ.0) TIME=10.0*DIST/WFACSQ C--------ENTER TIME WARP IF(TWARP.NE.0) CALL TIMWRP C--------DAMAGE WARP ENGINES IF(BLOOEY .EQ. 0) GO TO 60 DAMAGE(6)=DAMFAC*(3.0*RANF(0)+1.0) CALL SKIP(1) CALL PROUT(24H"ENGINEERING TO BRIDGE--,24) CALL PROUT(44H SCOTT HERE. THE WARP ENGINES ARE DAMAGED.,44) CALL PROUT(41H WE'LL HAVE TO REDUCE SPEED TO WARP 4." ,41) 60 IDIDIT=1 RETURN C--------NO WARP ENGINES 90 CALL SKIP(1) CALL PROUT(25HWARP ENGINES INOPERATIVE.,25) RETURN END