SUBROUTINE FRGHT(WHO,L) C C HANDLES LOADING AND LAUNCHING FREIGHTERS FOR PLAYER C INCLUDE 'TRKCOMMON.FTN' REAL LAUNCH INTEGER SCAN,WHOM,CREW,HYPER,TORPS,WHO LOGICAL*1 THRU,XSHIP,CLOAK,CLON,OK,FBASE BYTE MESSAG,INITLS,CLRIT(2) DATA CLRIT/"33,'K'/ C C CALL CPOS(L) IF (FLOAD(IUNIV(WHO),WHO).NE.0) GOTO 15000 IOFFST=(IUNIV(WHO)-1)*20 C C GOING TO... C WRITE (5,10001) CLRIT 10001 FORMAT ('$Enter destination base : ',2A1) CALL GETINT(IDEST,OK,0,ICNTRL(1)) IF (IDEST.EQ.0) GOTO 20000 IF (IBASE(WHO,IOFFST+(IDEST*2)).NE.0) GOTO 10005 C CALL CPOS(L) WRITE (5,10002) CLRIT 10002 FORMAT (' ** Base selected is not functional ** ',2A1) GOTO 20000 C 10005 FXDEST(IUNIV(WHO),WHO)=IBASE(WHO,IOFFST+((IDEST*2)-1)) FYDEST(IUNIV(WHO),WHO)=IBASE(WHO,IOFFST+(IDEST*2)) FDBASE(IUNIV(WHO),WHO)=IDEST C C STARTING FROM... C WRITE (5,10006) CLRIT 10006 FORMAT ('$Enter starting base : ',2A1) CALL GETINT (IDEST,OK,0,10) IF (IDEST.EQ.0) GOTO 20000 IF (IBASE(WHO,IOFFST+(IDEST*2)).NE.0) GOTO 10008 WRITE (5,10002) CLRIT GOTO 20000 C 10008 FXCORD(IUNIV(WHO),WHO)=IBASE(WHO,IOFFST+((IDEST*2)-1)) FYCORD(IUNIV(WHO),WHO)=IBASE(WHO,IOFFST+(IDEST*2)) C C DETERMINE THE 'ENERGY LOAD' FOR THE FREIGHTER C WRITE (5,10000) CLRIT 10000 FORMAT ('$Enter load for freighter : ',2A1) CALL GETINT(FLOAD(IUNIV(WHO),WHO),OK,0,10000) IF (FLOAD(IUNIV(WHO),WHO).EQ.0) GOTO 20000 IF (FLOAD(IUNIV(WHO),WHO).GT.BASEN(WHO,IOFFST/2+IDEST)) GOTO 28000 BASEN(WHO,IOFFST/2+IDEST)=BASEN(WHO,IOFFST/2+IDEST)- 1 FLOAD(IUNIV(WHO),WHO) GOTO 28500 C C TOO MUCH ENERGY SPECIFIED C 28000 CALL CPOS(L) WRITE (5,20001) CLRIT 20001 FORMAT (' Insufficient energy to transfer, sir ',2A1) FLOAD(IUNIV(WHO),WHO)=0 GOTO 20000 C C NOW CALCULATE THE COURSE FOR THE FREIGHTER AND START IT ON ITS WAY C 28500 FLOAD(IUNIV(WHO),WHO)=FLOAD(IUNIV(WHO),WHO)*-1 BCRS(IUNIV(WHO),WHO)=.FALSE. GOTO 20000 C C 15000 WRITE (5,15001) CLRIT 15001 FORMAT (' ** Freighter already active, sir **',2A1) C C 20000 RETURN END