C C C *********************************************************** C * * C * SUBROUTINE TO CHECK IF THERE IS AN INTRUDER ABOARD * C * * C *********************************************************** C SUBROUTINE CHKINT COMMON QUAD(8,8),SECT(10,10),NGAL(8,8),K(7,5),STATUS(13),R1,C1,R,C &,H1,POW,SHLD(5),NTORP,A,B,H(7),N1,N2,N3,N4,N5,N6,II,JJ,RANK,ITR(4) COMMON/MISC1/ICAPV(5),M1,M2,DATE,DLN,BEARNG,NCAS(2),CMD,IG2,NPRIS, &IBELL COMMON/WRDS/COND,KL,RM,GRN,RED,DCKD,DEST(2),DISAB(2),SHIP(16) COMMON/OBJCTS/D9,S9,E9,K9,B9,R9,M9 COMMON/SHIPS/SHIPSN(16,30),DECKS(24) COMMON/TESTS1/TROM1,TROM2,TDISAB,TDEST,TWON,TLOST,TRESC,TALTOW, &TBOFF,TALERT,TLOOS,TBALEN,TALSD,TINTRD INTEGER SECT,QUAD,R1,C1,R,C,H1,POW,SHLD,A,B,H,CMD,DLN INTEGER D9,S9,E9,B9,R9 REAL*8 COND,KL,RM,GRN,RED,DCKD,DEST,DISAB,ALIEN LOGICAL TROM1,TROM2,TDISAB,TDEST,TWON,TLOST,TRESC,TALTOW,TBOFF, &TALERT,TLOOS,TBALEN,TALSD,TINTRD,TKBEAM,TEST LOGICAL*1 SHIPSN,SHIP C DIST(IA,IB,IR,IC)=SQRT(FLOAT((IA-IR)**2+(IB-IC)**2)) C IF(COND.EQ.DCKD .OR. RANK.LT.3.)RETURN TKBEAM=.FALSE. IF(INT(RANK).LT.5)GOTO 4 DO 3 I=1,7 IF(K(I,1).LE.0 .OR. K(I,4).EQ.1)GOTO 3 KR=K(I,1) KC=K(I,2) IF(DIST(A,B,KR,KC).GT.2.)GOTO 3 CALL FDSHLD(NS,TEST,KR,KC,A,B) IF(TEST .OR. SHLD(NS).GT.0)GOTO 3 IF(.NOT.TROM2 .AND. SECT(KR,KC).EQ.R9)GOTO 5 IF(RAN(II,JJ)*25. .LT. RANK)GOTO 5 3 CONTINUE IF(.NOT.TALTOW .OR. ICAPV(5).EQ.1)GOTO 4 KR=ICAPV(1) KC=ICAPV(2) CALL FDSHLD(NS,TEST,KR,KC,A,B) IF(NS.EQ.0)GOTO 4 IF(ICAPV(3).GT.10 .AND. RAN(II,JJ)*50. .LT. RANK)GOTO 5 4 IF(NPRIS.EQ.0 .AND. AMOD(DATE,100.).LT.15.)RETURN PROB=0.008*SQRT(1.+(RANK*FLOAT(NPRIS))) IF(RAN(II,JJ).GT.PROB)RETURN GOTO 6 5 TKBEAM=.TRUE. IF(SECT(KR,KC).EQ.R9)GOTO 7 ALIEN='Klingon' ITR(3)=ITR(3)+10 GOTO 80 7 ALIEN='Romulan' ITR(3)=ITR(3)+20 80 TYPE 81,NS,ALIEN 81 FORMAT(/1X,'***** REPORT FROM SCIENCE OFFICER:'/1X, &'Sensors indicate a transporter beam penetrated the area'/1X, &'normally protected by Defensive Shield',I2,'. It is likely'/1X, &'that a ',A7,' agent has beamed aboard.') WRITE(3,81)NS,ALIEN CALL PAUSE(2) 6 N=0 1 ITR(1)=RAN(II,JJ)*23. N=N+1 ISYS=DECKS(ITR(1)+1)/100. IF(N.LT.1000 .AND. (ISYS.EQ.0 .OR. STATUS(ISYS).LT.0.))GOTO 1 IF(N.EQ.1000)RETURN TINTRD=.TRUE. ITR(2)=ITR(1) 10 TYPE 11 11 FORMAT(/1X,'*** GENERAL QUARTERS - SECURITY ALERT GQ-4 ***'/1X) WRITE(3,11) DO 2 I=1,3 20 TYPE 21,IBELL 21 FORMAT(1H+,A1,12('*'),' INTRUDER ABOARD ',12('*')) CALL PAUSE(1) TYPE 71 71 FORMAT(1H+,43X) CALL PAUSE(1) C IF(I.LT.10)CALL BACKSP(43) 2 CONTINUE CALL PAUSE(3) TYPE 21,IBELL WRITE(3,21)"0 30 TYPE 31,ITR(1) 31 FORMAT(1X//1X,'SABOTAGE DETECTED ON DECK',I3,'.') WRITE(3,31)ITR(1) IC=98 CALL DAMCON(ISYS,IC,.FALSE.) IF(TKBEAM)RETURN 40 TYPE 41 41 FORMAT(/1X,'** REPORT FROM SECURITY:') WRITE(3,41) IF(ITR(3).EQ.0)GOTO 60 NPRIS=NPRIS-1 ALIEN='Klingon' IF(ITR(3).EQ.2)ALIEN='Romulan' 50 TYPE 51,ALIEN 51 FORMAT(1X,'One of the ',A8,'prisoners is missing,'/1X,'and is pres &umed to be the intruder.') WRITE(3,51)ALIEN RETURN 60 TYPE 61 61 FORMAT(1X,'The intruder is probably a Klingon agent.') WRITE(3,61) ITR(3)=10 RETURN END C C C ***************************************************** C * * C * SUBROUTINE TO SEE WHAT THE INTRUDER IS UP TO * C * AND HOW THE SEARCH FOR HIM IS COMING ALONG * C * * C ***************************************************** C SUBROUTINE INTRUD(TINTCP) COMMON QUAD(8,8),SECT(10,10),NGAL(8,8),K(7,5),STATUS(13),R1,C1,R,C &,H1,POW,SHLD(5),NTORP,A,B,H(7),N1,N2,N3,N4,N5,N6,II,JJ,RANK,ITR(4) COMMON/MISC1/ICAPV(5),M1,M2,DATE,DLN,BEARNG,NCAS(2),CMD,IG2,NPRIS, &IBELL COMMON/SHIPS/SHIPSN(16,30),DECKS(24) DIMENSION ISYS(3) INTEGER SECT,QUAD,R1,C1,R,C,H1,POW,SHLD,A,B,H,CMD,DLN LOGICAL TINTCP LOGICAL*1 SHIPSN C IDECK=MOD(ITR(2),100) MDECK=ITR(2)/100-1 1 IDIFF=RAN(II,JJ)*2.*(-1)**INT(RAN(II,JJ)*10.) IDECK=IDECK+IDIFF IF(IDECK.LT.0 .OR. IDECK.GT.23)GOTO 1 ITR(2)=IDECK+(MDECK+1)*100 IF(IDECK.EQ.MDECK .AND. RAN(II,JJ).LE.0.9)GOTO 3 ISYS(1)=DECKS(IDECK+1)/100. ISYS(2)=AMOD(DECKS(IDECK+1),100.)+0.0001 ISYS(3)=100.*(AMOD(DECKS(IDECK+1),1.)+0.0001) IF(ISYS(1).EQ.0 .OR. RAN(II,JJ).GT.0.1)GOTO 3 DO 4 I=1,3 IF(ISYS(I).EQ.0)GOTO 4 IF(STATUS(ISYS(I)).LT.0.)ISYS(I)=0 4 CONTINUE IX=RAN(II,JJ) N=0 IF(ISYS(1).NE.0)N=1 IF(ISYS(2).EQ.0)GOTO 5 IF(N.EQ.0 .OR. IX.LT.0.5)N=2 5 IF(ISYS(3).EQ.0)GOTO 6 IF(N.EQ.0 .OR. IX.LT.0.2)N=3 6 IF(N.EQ.0)RETURN 10 TYPE 11 11 FORMAT(/1X) WRITE(3,11) DO 2 I=1,5 20 TYPE 21,IBELL 21 FORMAT(1H+,A1,'*** SECURITY REPORT ***') CALL PAUSE(1) IF(I.LT.5)CALL BACKSP(23) 2 CONTINUE WRITE(3,21)"0 30 TYPE 31,IDECK 31 FORMAT(1X/1X,'SABOTAGE BY INTRUDER DETECTED ON DECK',I3) WRITE(3,31)IDECK ITR(1)=MOD(ITR(2),100) IZ=ISYS(N) IC=98 CALL DAMCON(IZ,IC,.FALSE.) RETURN 3 TINTCP=.FALSE. IF(MDECK.GE.0 .AND. IDECK.EQ.MDECK)GOTO 7 PROB=0.04 IF(ITR(4).NE.0)PROB=1./(FLOAT(ITR(4))*4.) IF(MDECK.GE.0)PROB=PROB/2. GOTO 8 7 PROB=0.5 IF(ITR(4).NE.0)PROB=1.05-FLOAT(ITR(4))*0.1 8 IF(RAN(II,JJ).GE.PROB)RETURN 40 TYPE 41 41 FORMAT(/1X,'** REPORT FROM SECURITY:') WRITE(3,41) GOTO(50,60,60,50),ITR(4)+1 50 TYPE 51 51 FORMAT(1X,'The intruder has just been seen',$) WRITE(3,51) GOTO 70 60 TYPE 61 61 FORMAT(1X,'Computer scan of the ship has detected an alien presenc &e',$) WRITE(3,61) 70 TYPE 71,IDECK 71 FORMAT(1H+,' on Deck',I3,'.'/1X,'That deck has been sealed off and & security personnel are closing in.'/) WRITE(3,71)IDECK CALL PAUSE(6) TINTCP=.TRUE. RETURN END