-+-+-+-+-+-+-+-+ START OF PART 7 -+-+-+-+-+-+-+-+ X`09IF (CODEFU(ITT2-1500+I).LE.3) GOTO 820 X810`09TM=TM+1 X`09IF (CODEFU(ITT2-1500+I).EQ.9) CODEFU(ITT2-1500+I)=0 X`09TTTC(TM,0)=I X820`09CONTINUE X`09CM=0 X`09DO 840 I=1,NUMBER(10) X`09IF (TARGET(I).EQ.0) GOTO 840 X`09ILA=TARGET(I) X`09IF (EDGER(ILA).EQ.0) GOTO 840 X`09CM=CM+1 X`09TTTC(0,CM)=ILA X`09TTTC(-1,CM)=-1 X`09IF (RMAP(ILA).EQ.'O') TTTC(-1,CM)=1 X840`09CONTINUE X`09DO 850 I=1,TM X`09DO 850 J=1,CM X`09TTTC(I,J)=IDIST(RLMAP(ITT2+TTTC(I,0)),TTTC(0,J)) X850`09CONTINUE X X`09AC='*' X860`09MIN=1000 X`09DO 880 I=1,TM X`09IF (TTTC(I,0).EQ.0) GOTO 880 X`09DO 880 J=1,CM X`09IF (EMAP(TTTC(0,J)).NE.AC) GOTO 880 X`09IF (TTTC(I,J).GE.MIN) GOTO 880 X`09IF (TTTC(-1,J).EQ.0) THEN X`09 DO 870 K=1,CM X`09 IF (TTTC(-1,K).EQ.-1) GOTO 880 X870`09 CONTINUE X`09ENDIF X`09MOVE=PATH(RLMAP(ITT2+TTTC(I,0)),TTTC(0,J),1,OKC,FLAG) X`09IF (FLAG.EQ.0) THEN X`09 TTTC(I,J)=1000 X`09 GOTO 880 X`09ENDIF X`09MIN=TTTC(I,J) X`09IR=I X`09IC=J X880`09CONTINUE X`09IF (MIN.NE.1000) THEN !DON'T CHANGE FUNCTION IF DEST IS <3 FROM OLD? X`09 CODEFU(ITT2-1500+TTTC(IR,0))=9 X`09 CODELA(ITT2-1500+TTTC(IR,0))=TTTC(0,IC) X`09 CALL DIST(RLMAP(ITT2+TTTC(IR,0)),TTTC(0,IC)) X`09 TTTC(IR,0)=0 X`09 TTTC(IR,IC)=1001 X`09 TTTC(-1,IC)=0 X`09 GOTO 860 X`09ENDIF X`09IFO=CODEFU(ITT2-1500+Y) X`09ILA=CODELA(ITT2-1500+Y) X`09IF (NUMBER(9)+NUMBER(10).LE.37) THEN X`09 IF (IFO.EQ.9) GOTO 1500 X`09 GOTO 1000 X`09ENDIF X`09IF (AC.EQ.'*') THEN X`09 AC='O' X`09 GOTO 860 X`09ENDIF X`09IF (IFO.EQ.9) GOTO 1500 XC`20 XC MOVE TOWARDS UNKNOWN TERRITORY XC X1000`09IFO=10 X`09ILA=EXPL() X`09IF (ILA.EQ.0) GOTO 1100 X`09CALL DIST(Z6,ILA) X`09GOTO 1300 XC`20 XC MOVE IN SPECIFIED DIRECTION (ILA SPECIFIES WHICH) XC X1100`09IFO=7 X`09ILA=RND(8)+1`09`09`09`09!** X`09GOTO 1400 XC`20 XC NOW PICK A MOVE ACCORDING TO IFO AND ILA XC X1200`09MOVE=0 X`09IF (IDIST(Z6,RLMAP(IAR2+ILA)).EQ.1) GOTO 1600 X`09MOVE=MOV(Z6,RLMAP(IAR2+ILA)) X`09GOTO 1500 X1300`09MOVE=PATH(Z6,ILA,DIR,OKC,FLAG) X`09IF (FLAG.EQ.0) GOTO 1100 X`09GOTO 1500 X1350`09IF (NUMBER(10).EQ.0) GOTO 1400 X`09IF (RND(100).LT.40) GOTO 800 X1400`09MOVE=ILA X1500`09AGGR=-NUMARM X`09IF ((NUMBER(5).GT.10).AND.(NUMARM.EQ.0)) AGGR=AGGR+2 X`09EXPLOR=0 X`09IF (IFO.GT.6.AND.IFO.NE.8) EXPLOR=1 X`09MOVE=MOVE*DIR X`09DEST=-1 X`09IF ((IFO.EQ.9).OR.(IFO.EQ.10)) DEST=ILA X`09MOVE=MOVCOR(IFO,ITURN,Z6,MOVE,H1,AGGR,'t',EXPLOR,DIR,DEST,ORIG,3) X`09MOVE=IABS(MOVE) X`09IF (IFO.EQ.7) ILA=MOVE X1600`09CODEFU(ITT2-1500+Y)=IFO X`09CODELA(ITT2-1500+Y)=ILA X`09Z6=Z6+IARROW(MOVE+1)`09`09`09!** X`09IF (CODER.EQ.5) TYPE 997, IFO,ILA X997`09FORMAT(1X,I) XC`20 X`09IF (OMAP(Z7).NE.'*') RMAP(Z7)=OMAP(Z7) X`09IF (RMAP(Z6).EQ.'.') GOTO 1700 X`09IF (RMAP(Z6).EQ.'X') GOTO 1800 X`09IF ((RMAP(Z6).EQ.'+').OR.(OMAP(Z6).EQ.'*')) GOTO 1900 X`09AB=RMAP(Z6) X`09IF (CODER.EQ.5) TYPE 996,AB`09`09!FIX THIS CONDITIONAL, KLUDGED X996`09FORMAT(' ATTACKING ',A1) X`09IF (AB.EQ.'.') GOTO 1700 X`09P=1 X`09H2=30 X`09OWN1='t' X`09OWN2=RMAP(Z6) X`09CALL FIND(OWN2,Z6,Z8,H2) X`09CALL FGHT(Z6,H1,H2,OWN1,OWN2) X`09CALL FIND(OWN2,Z6,Z8,H2) X`09IF (H1.LE.0) GOTO 1900 X`09IF (OMAP(Z6).EQ.'+') GOTO 1900 X`09J1TS(ITT2H+Y)=H1 X1700`09RMAP(Z6)='t' X1800`09RLMAP(ITT2+Y)=Z6 X`09J1TS(ITT2H+Y)=H1 X`09IF (ITURN.EQ.1) NUMBER(5)=NUMBER(5)+1 X`09GOTO 2000 X1900`09RLMAP(ITT2+Y)=0 X`09J1TS(ITT2H+Y)=0 X2000`09N=0 X`09IF (P.EQ.1) CALL SENSOR(Z6) X`09DO 2100 U=IAR2+1,IAR2+LIMIT(9) X`09IF (RLMAP(U).NE.Z7) GOTO 2100 X`09IF (N+1.GT.H1*2) THEN X`09 IF (RMAP(Z7).NE.'X') RLMAP(U)=0 X`09 GOTO 2100 X`09ENDIF X`09N=N+1 X`09RLMAP(U)=Z6 X2100`09CONTINUE X`09IF (NUMARM.GT.2*H1) NUMARM=2*H1 X`09CALL SONAR(Z6) X2200`09CONTINUE X2300`09CONTINUE X`09LIMIT(13)=MONKEY X`09RETURN X`09END X`0C X`09SUBROUTINE ENEMYM(OWN1,HITMAX,ACRAHIT,ACRALOC,NUM) XC XC THIS SUBROUTINE HANDLES ENEMY SHIP MOVES OTHER THAN T'S AND C'S XC X`09INCLUDE 'EMPIRE.INC/NOLIST' XC`20 XC NSHPRF IS AN ARRAY WHICH IS REFERENCED TO DETERMINE XC WHETHER A CERTAIN SHIP (D=1,S=2,R=3,B=4) WANTS TO ATTACK XC ANOTHER CERTAIN TYPE OF SHIP. 1 MEANS YES, 0 MEANS NO. XC SECOND VARIABLE: 1=D,2=S,3=T,4=R,5=C,6=B XC X`09DATA NSHPRF/1,1,1,0,0,0,1,1,1,0,0,0,1,1,1,1,1,0,1,1,1,1,1,1/ XC`20 XCTHE FOLLOWING NUMBERS ARE IFO VARIABLES RELATING TO XC CERTAIN TYPES OF MOVEMENT (CODES) XC 7: RANDOM DIRECTION XC 3: CITY TARGET LOC. XC 4: TT NUMBER ESCORT XC 5: TARGET XC 8: DAMAGED XC 10: LOOK AT UNEXPLORED TERRITORY XC X`09IF (NUM.EQ.3) NUMSHP=1 X`09IF (NUM.EQ.4) NUMSHP=2 X`09IF (NUM.EQ.6) NUMSHP=3 X`09IF (NUM.EQ.8) NUMSHP=4 XC`20 X`09NUMBER(NUM)=0 X`09IF (CODER.EQ.NUM) TYPE 999,OWN1 X999`09FORMAT(1X,A1,' CODES') X`09MONKEY=0 XC`20 X`09DO 2400 Y=1,LIMIT(NUM+8) X`09Z6=RLMAP(Y+ACRALOC) X`09IF (Z6.EQ.0) GOTO 2400 X`09DIR=MOD(Y,2)*2-1 X`09H1=J1TS(Y+ACRAHIT) X`09AB=RMAP(Z6) X`09IF (AB.EQ.'X') H1=H1+1 X`09IF (H1.GT.HITMAX) H1=HITMAX XC`20 X`09ORIG=Z6 X`09DO 2300 ITURN=1,2 X`09P='NS' X`09IF ((ITURN.EQ.2).AND.(H1.LE.HITMAX/2)) GOTO 2400 X`09Z7=Z6 XC`20 XC MOVE SELECTION XC X`09IFO=CODEFU(Y+ACRALOC-1500) X`09ILA=CODELA(Y+ACRALOC-1500) XC XC DOES A NEW CODE NEED TO BE SELECTED? 800:YES, 1600:NO XC X`09IF ((IFO.EQ.8).AND.(H1.EQ.HITMAX)) IFO=0 X`09IF ((IFO.EQ.8).AND.(RMAP(ILA).EQ.'X')) GOTO 1600 X`09IF (H1.EQ.HITMAX) GOTO 100 X`09IFO=8 X`09ILA=IPORT(Z6) X`09GOTO 1600 X100`09GOTO (800,200,300,400,500,800,800,800,800,700) IFO X`09GOTO 800 XC`20 X200`09GOTO 800 XC`20 X300`09IF (RMAP(ILA).EQ.'X') GOTO 800 X`09IF (IDIST(Z6,ILA).EQ.1) GOTO 800 X`09GOTO 1600 XC`20 X400`09IF (RLMAP(2600+ILA).EQ.0) GOTO 800 X`09IF (CODEFU(1100+ILA).LT.7) GOTO 800 X`09GOTO 1600 XC`20 X500`09IF (ILA.NE.Z6) GOTO 1600 X`09DO 600 I1=1,6 X`09DO 600 I2=1,5 X`09IF (TROOPT(I1,I2).NE.ILA) GOTO 600 X`09TROOPT(I1,I2)=0 X600`09CONTINUE X`09GOTO 800 XC`20 X700`09IF (EMAP(ILA).NE.' ') GOTO 800 X`09GOTO 1600 XC`20 XC NEW CODE SELECTION XC 5:TARGET XC X800`09ID=500 X`09DO 900 N=1,6 X`09IF (NSHPRF(NUMSHP,N).EQ.0) GOTO 900 X`09DO 900 N2=1,5 X`09IF (TROOPT(N,N2).EQ.0) GOTO 900 X`09IF (IDIST(Z6,TROOPT(N,N2)).GE.ID) GOTO 900 X`09ID=IDIST(Z6,TROOPT(N,N2)) X`09ILA=TROOPT(N,N2) X`09IFO=5 X900`09CONTINUE X`09IF (ID.NE.500) GOTO 1600 X`09IF (RND(100).GT.40) GOTO 1200`09`09!** XC XC 3:CITY TARGET LOC. XC X`09IA=RND(20)+1`09`09`09`09!** X`09IB=IA+70 X`09DO 1100 IC=IA,IB X`09I=IC X`09IF (I.GT.70) I=IC-70 X`09IF (TARGET(I).EQ.0) GOTO 1100 X`09IF (RMAP(TARGET(I)).NE.'O') GOTO 1100 X`09IF (EDGER(TARGET(I)).EQ.0) GOTO 1100 X`09IFO=3 X`09ILA=TARGET(I) X`09GOTO 1600 X1100`09CONTINUE XC XC 4:TT NUMBER ESCORT XC X1200`09IA=RND(LIMIT(13))+1`09`09`09!** X`09IB=IA+LIMIT(13) X`09DO 1300 IC=IA,IB X`09I=IC X`09IF (I.GT.LIMIT(13)) I=IC-LIMIT(13) X`09IF (RLMAP(2600+I).EQ.0) GOTO 1300 X`09IF (CODEFU(1100+I).LT.9) GOTO 1300 X`09IFO=4 X`09ILA=I X`09GOTO 1600 X1300`09CONTINUE XC`20 XC 10: EXPLORE XC X1400`09I1=EXPL() X`09IF (I1.EQ.0) GOTO 1500 X`09ILA=I1 X`09IFO=10 X`09GOTO 1600 XC`20 XC 1: RANDOM DIRECTION XC X1500`09IF (IFO.EQ.7) GOTO 1600 X`09ILA=RND(8)+1`09`09`09`09!** X`09IFO=7 XC`20 XC MOVE CORRECTION XC X1600`09IF (IFO.EQ.7) MOOV=ILA X`09FLAG=1 X`09IF ((IFO.EQ.8).OR.(IFO.EQ.3).OR.(IFO.EQ.5)) X`091`09 MOOV=PATH(Z6,ILA,DIR,OKC,FLAG) X`09IF (IFO.EQ.4) MOOV=PATH(Z6,RLMAP(ITT2+ILA),DIR,OKC,FLAG) X`09IF (FLAG.EQ.0) GOTO 1400 X`09IF (IFO.EQ.10) MOOV=PATH(Z6,ILA,DIR,OKC,FLAG) X`09IF (FLAG.EQ.0) GOTO 1500 X`09IF (IFO.NE.2) GOTO 1700 X`09MOOV=0 X`09IF (IDIST(Z6,ILA).GT.4) MOOV=MOV(Z6,ILA) X`09IF (IDIST(Z6,ILA).LT.4) MOOV=ICORR(MOV(Z6,ILA)-4) X1700`09AGGR=0 X`09MOOV=MOOV*DIR X`09EXPLOR=1 X`09IF (OWN1.EQ.'d') GOTO 1750 X`09IF (H1.LE.HITMAX/2) EXPLOR=0 X1750`09MOOV= X`091 MOVCOR(IFO,ITURN,Z6,MOOV,H1,AGGR,OWN1,EXPLOR,DIR,-1,ORIG,HITMAX) X`09IF (IFO.EQ.7) ILA=IABS(MOOV) X`09CODEFU(Y+ACRALOC-1500)=IFO X`09CODELA(Y+ACRALOC-1500)=ILA X`09MOOV=IABS(MOOV) X`09IF (CODER.EQ.NUM) TYPE 998,IFO,ILA X998`09FORMAT(I) XC`20 XC MOVE EVALUATION XC X`09Z6=Z6+IARROW(MOOV+1)`09`09`09!** X`09IF (OMAP(Z7).NE.'*') RMAP(Z7)=OMAP(Z7) X`09AD=RMAP(Z6) X`09IF (AD.EQ.'.') GOTO 1900 X`09IF (AD.EQ.'X') GOTO 2000 X`09IF ((AD.GE.'A').AND.(AD.LE.'T')) GOTO 1800 X`09TYPE 997,OWN1,Z6,AD X997`09FORMAT(' ENEMY ',A1,' AT ',I4,' RAN AGROUND ON ',A1) X`09GOTO 2100 X1800`09H2=30 X`09P='SE' X`09OWN2=AD X`09CALL FIND(OWN2,Z6,Z8,H2) X`09CALL FGHT(Z6,H1,H2,OWN1,OWN2) X`09CALL FIND(OWN2,Z6,Z8,H2) X`09IF (H1.LE.0) GOTO 2100 X1900`09RMAP(Z6)=OWN1 X2000`09RLMAP(Y+ACRALOC)=Z6 X`09J1TS(Y+ACRAHIT)=H1 X`09IF (ITURN.EQ.1) NUMBER(NUM)=NUMBER(NUM)+1 X`09MONKEY=Y X`09GOTO 2200 X2100`09RLMAP(Y+ACRALOC)=0 X`09CODEFU(Y+ACRALOC-1500)=0 X`09CODELA(Y+ACRALOC-1500)=0 X`09J1TS(Y+ACRAHIT)=0 X2200`09CALL SONAR(Z6) X`09IF (P.EQ.'SE') CALL SENSOR(Z6) X2300`09CONTINUE X2400`09CONTINUE X`09LIMIT(NUM+8)=MONKEY X`09RETURN X`09END X`0C X`09SUBROUTINE CARIER XC XC THIS SUBROUTINE HANDLES ENEMY CARRIER MOVES XC`20 X`09INCLUDE 'EMPIRE.INC/NOLIST' XC`20 X`09NUMBER(7)=0 X`09IF (CODER.EQ.7) TYPE 999 X999`09FORMAT(' CARRIER CODES') X`09OWN1='c' X`09MONKEY=0 XC`20 XC BEGIN LOOP XC X`09DO 2700 Y=1,LIMIT(15) X`09Z6=RLMAP(ICA2+Y) X`09IF (Z6.EQ.0) GOTO 2700 X`09DIR=MOD(Y,2)*2-1 X`09H1=J1TS(ICA2H+Y) X`09IF (RMAP(Z6).EQ.'X') H1=H1+1 X`09IF (H1.GT.8) H1=8 XC`20 X`09ORIG=Z6 X`09DO 2600 TURN=1,2 X`09IF ((TURN.EQ.2).AND.(H1.LE.4)) GOTO 2700`09!MOVE AT 1/2 SPEED X`09P='NS' X`09N=0 X`09Z7=Z6 X`09AB=RMAP(Z6) X`09IF ((AB.NE.'c').AND.(AB.NE.'X')) GOTO 1800 XC`20 XC MOVE SELECTION XC X`09IFO=CODEFU(Y+ICA2-1500) X`09ILA=CODELA(Y+ICA2-1500) X`09IF (H1.EQ.8) GOTO 100 X`09IF ((IFO.EQ.8).AND.(RMAP(ILA).EQ.'X')) GOTO 1300 X`09IFO=8 X`09ILA=IPORT(Z6) X`09GOTO 1300 XC`20 XC IFO=7: RANDOM DIRECTION XC IFO=6: HEADING TOWARDS STATION XC IFO=8: DAMAGED XC IFO=9: STATIONED XC`20 XC DOES A NEW CODE NEED TO BE SELETED? 800:YES, 1300:NO XC X100`09GOTO (200,300,400,500) IFO-5 X`09GOTO 800 XC`20 X200`09GOTO 1300 XC`20 X300`09GOTO 800 XC X400`09GOTO 800 XC`20 X500`09DO 600 I=1,70 X`09IF (TARGET(I).EQ.0) GOTO 600 X`09IF ((EMAP(TARGET(I)).EQ.'O').AND.(IDIST(Z6,TARGET(I)).LE.10)) X`091`09 GOTO 1300 X600`09CONTINUE X`09DO 700 I=1,10 X700`09IF (IDIST(Z6,LOCI(I,2)).LE.10) GOTO 1300 X`09GOTO 800 XC`20 XC NEW CODE SELECTION XC`20 X800`09DO 1200 J=1,10 X`09IF (LOCI(J,2).EQ.0) GOTO 1200 X`09LOC=LOCI(J,2) X`09KDORK=0 X`09ID=500 X`09DO 900 K=1,70 X`09IF (OWNER(K).NE.2) GOTO 900 X`09IF (IDIST(X(K),LOC).GE.ID) GOTO 900 X`09ID=IDIST(X(K),LOC) X`09IF (ID.LT.10) GOTO 1200 X`09KDORK=X(K) X900`09CONTINUE X`09DO 1000 K=ICA2+1,ICA2+LIMIT(15) X`09IS=RLMAP(K) X`09IF (IS.EQ.0) GOTO 1000 X`09IF (IDIST(IS,LOC).GE.ID) GOTO 1000 X`09IF (CODEFU(K-1500).NE.9) GOTO 1000 X`09ID=IDIST(IS,LOC) X`09IF (ID.LT.10) GOTO 1200 X`09KDORK=IS X1000`09CONTINUE X`09IF (KDORK.EQ.0) GOTO 1200 X1100`09IF (IDIST(KDORK,LOC).LT.1) GOTO 1200 X`09LOC=LOC+IARROW(MOV(LOC,KDORK)+1)`09!** X`09IF (IDIST(KDORK,LOC).GT.19) GOTO 1100 X`09AD=EMAP(LOC) X`09IF ((AD.NE.' ').AND.(AD.NE.'.')) GOTO 1100 X`09IFO=6 X`09ILA=LOC X`09GOTO 1300 X1200`09CONTINUE XC`20 XC RANDOM DIRECTION SELECTION XC X`09IF (IFO.EQ.7) GOTO 1300 X`09IFO=7 X`09KDORK=0 X`09ILA=RND(8)+1`09`09`09`09!** XC`20 XC NOW PICK THE MOVE SPECIFIED BY IFO AND ILA XC X1300`09IF (IFO.EQ.8) GOTO 1500 X`09IF (IFO.NE.7) GOTO 1400 X`09MOVE=ILA X`09 GOTO 1700 X1400`09IF (IFO.NE.6) GOTO 1600 X`09IF (ILA.NE.Z6) GOTO 1500 X`09IFO=9 X`09GOTO 1600 X1500`09MOVE=PATH(Z6,ILA,DIR,OKC,FLAG) X`09GOTO 1700 X1600`09IF (Z6.NE.ILA) MOVE=MOV(Z6,ILA) X`09IF (Z6.EQ.ILA) MOVE=RND(8)+1`09`09!** XC`20 XC MOVE CORRECTION XC X1700`09AGGR=0 X`09IF ((NUMBER(7).GT.3).AND.(IFO.NE.9)) AGGR=5 X`09EXPLOR=1 X`09IF (H1.LT.6) EXPLOR=0 X`09MOVE=MOVCOR(IFO,TURN,Z6,MOVE,H1,AGGR,'c',EXPLOR,DIR,-1,ORIG,8) X`09IF (IFO.EQ.7) ILA=IABS(MOVE) X`09CODEFU(Y+ICA2-1500)=IFO X`09CODELA(Y+ICA2-1500)=ILA X`09IF (CODER.EQ.7) TYPE 998,IFO,ILA X998`09FORMAT(1X,I) XC`20 XC MOVE EVALUATION XC X`09Z6=Z6+IARROW(IABS(MOVE)+1) X`09IF (OMAP(Z7).NE.'*') RMAP(Z7)=OMAP(Z7) X`09AB=RMAP(Z6) X`09IF (AB.EQ.'.') GOTO 2000 X`09IF (AB.EQ.'X') GOTO 2100 X`09IF ((AB.GE.'A').AND.(AB.LE.'T')) GOTO 1900 X`09TYPE 997,OWN1,Z6,AB X997`09FORMAT(' ENEMY ',A1,' AT ',I4,' RAN AGROUND ON ',A1) X1800`09H1=0 X`09GOTO 2200 X1900`09H2=30 X`09P='SE' X`09OWN2=AB X`09CALL FIND(OWN2,Z6,Z8,H2) X`09CALL FGHT(Z6,H1,H2,'c',OWN2) X`09CALL FIND(OWN2,Z6,Z8,H2) X`09IF (H1.LE.0) GOTO 2200 X2000`09RMAP(Z6)=OWN1 X2100`09RLMAP(Y+ICA2)=Z6 X`09J1TS(Y+ICA2H)=H1 X`09IF (TURN.EQ.1) NUMBER(7)=NUMBER(7)+1 X2200`09N=0 X`09IF (P.EQ.'SE') CALL SENSOR(Z6) X`09DO 2300 I=1,LIMIT(10) X`09IF (Z7.NE.RLMAP(I+2000)) GOTO 2300 X`09IF (N+1.GT.H1) THEN X`09 IF (RMAP(Z7).NE.'X') RLMAP(I+2000)=0 X`09 GOTO 2300 X`09ENDIF X`09N=N+1 X`09RLMAP(I+2000)=Z6 X2300`09CONTINUE X`09IF (H1.LE.0) GOTO 2400 X`09MONKEY=Y X`09GOTO 2500 X2400`09RLMAP(Y+ICA2)=0 X`09CODEFU(Y+ICA2-1500)=0 X`09CODELA(Y+ICA2-1500)=0 X`09J1TS(ICA2H+Y)=0 X2500`09CALL SONAR(Z6) X2600`09CONTINUE X2700`09CONTINUE X`09LIMIT(15)=MONKEY X`09RETURN X`09END X`0C X`09FUNCTION MOVCOR X`091`09(IFO,ITURN,Z6,MOVE,IH1,AGGR,OWN1,EXPLOR,DIR,DEST,ORIG,HMAX) XC X`09INCLUDE 'EMPIRE.INC/NOLIST' XC`20 XC CHECK FOR IMPOSSIBLE CONDITION FOR MOVE XC X`09IF ((.NOT.PASS).OR.(IABS(MOVE).LE.8)) GOTO 100 X`09CALL ERASE_PAGE(1,1) X`09TYPE 999,OWN1,Z6,MOVE,IFO X999`09FORMAT(1X,A1,' @ ',I4,' ATTEMPTED ',I,' WITH IFO ',I4) XC`20 X100`09MOVE=IABS(MOVE) XC`20 X`09IF (ITURN.EQ.1) BLAH=0`09`09`09!** X`09IF (BLAH.LT.0) MOVE=ICORR(I2+RND(3)-1)`09!** XC`20 XC CHECK FOR SOMETHING TO ATTACK, OR, SOMETHING TO RUN FROM XC BLAH.LT.0: RUN XC BLAH.GE.0: ATTACK XC X`09DO 200 IX=1,8 X`09I1=IX X`09LOC=Z6+IARROW(I1+1)`09`09`09!** X`09AB=RMAP(LOC) X`09IF (OMAP(LOC).NE.'.') GOTO 200 X`09IF ((AB.LT.'B').OR.(AB.GT.'T')) GOTO 200`09!IF SH/PL, LOOK X`09BLAH=ATTACK(OWN1,AB,IH1,AGGR) X`09IF (BLAH.GE.0) GOTO 1200`09`09`09!** ATTACK IT X`09GOTO 300`09`09`09`09!RUN FROM IT X200`09CONTINUE X`09I1=0`09`09`09`09!NOTHING OF INTEREST HERE X`09GOTO 800 XC`20 XC SELECT AN APPROPRIATE ESCAPE MOVE XC X300`09IS=RND(3) X`09DO 600 IN=1,8 X`09I2=IN X`09IF ((IS.EQ.0).OR.(IN.GT.3)) GOTO 500 X`09IF (IS.NE.1) GOTO 400 X`09IF (IN.EQ.1) I2=2 X`09IF (IN.EQ.2) I2=3 X`09IF (IN.EQ.3) I2=1 X`09GOTO 500 X400`09IF (IN.EQ.1) I2=3 X`09IF (IN.EQ.2) I2=1 X`09IF (IN.EQ.3) I2=2 X500`09I=IARROW(ISCAPE(I2,I1)+1)+Z6`09`09!** X`09IF ((RMAP(I).EQ.'.').AND.(ORDER(I).EQ.0)) GOTO 700 X600`09CONTINUE +-+-+-+-+-+-+-+- END OF PART 7 +-+-+-+-+-+-+-+-