-+-+-+-+-+-+-+-+ START OF PART 8 -+-+-+-+-+-+-+-+ X`09I1=0 X`09GOTO 800 X700`09I1=ISCAPE(I2,I1) X`09IF (OMAP(I).NE.'.') CALL STROUT('ISCAPE ERROR',1) X`09GOTO 1200 XC`20 X800`09IF (EXPLOR.EQ.0) GOTO 1000`09`09!** X`09EXPMAX=0 X`09DO 900 IX=MOVE,MOVE+7 X`09I1=ICORR(IX) X`09LOC1=Z6+IARROW(I1+1)`09`09`09!** X`09IF (ORDER(LOC1).NE.0) GOTO 900 X`09IF (RMAP(LOC1).NE.'.') GOTO 900 X`09IF (DEST.GT.0) THEN X`09 IF (IDIST(Z6,DEST).LT.IDIST(LOC1,DEST)) GOTO 900 X`09ENDIF X`09NEXP=0 X`09IF (EMAP(LOC1+IARROW(I1+1)).EQ.' ') NEXP=1`09`09!** X`09IF (EMAP(LOC1+IARROW(ICORR(I1-1)+1)).EQ.' ') NEXP=NEXP+1`09!** X`09IF (EMAP(LOC1+IARROW(ICORR(I1+1)+1)).EQ.' ') NEXP=NEXP+1`09!** X`09IF (EMAP(LOC1+IARROW(ICORR(I1+2)+1)).EQ.' ') NEXP=NEXP+1`09!** X`09IF (EMAP(LOC1+IARROW(ICORR(I1-2)+1)).EQ.' ') NEXP=NEXP+1`09!** X`09IF (NEXP.EQ.5) GOTO 1200 X`09IF (NEXP.LE.EXPMAX) GOTO 900 X`09EXPMAX=NEXP X`09I11=I1 X900`09CONTINUE X`09I1=0 X`09IF (EXPMAX.EQ.0) GOTO 1000 X`09I1=I11 X`09GOTO 1200 X1000`09I2=MOVE X`09LOC1=Z6+IARROW(MOVE+1)`09`09`09!** X`09AB=RMAP(LOC1) X`09IF (LOC1.NE.ORIG) THEN X`09 IF (((AB.EQ.'.').OR.(AB.EQ.'X')).AND.(ORDER(LOC1).EQ.0)) GOTO 1200 X`09ENDIF X`09M=MOVE X`09IA=ICORR(M-DIR*3) X`09IF (RMAP(Z6+IARROW(IA+1)).NE.'.') M=IA`09!** X`09DO 1100 I=0,7*DIR,DIR X`09I2=ICORR(M+I) X`09I3=Z6+IARROW(I2+1)`09`09`09!** X`09IF ((RMAP(I3).EQ.'.').AND.(ORDER(I3).EQ.0).AND.(I3.NE.ORIG)) GOTO 1200 X1100`09CONTINUE X`09I2=0 X1200`09IF (I1.NE.0) I2=I1 X`09IF (RMAP(Z6+IARROW(MOVE+1)).NE.'X') MOVE=I2`09!** X`09IF ((RMAP(Z6).EQ.'X').AND.(IH1.LT.HMAX)) MOVE=0 X`09MOVCOR=MOVE X`09RETURN X`09END X`0C X`09SUBROUTINE FIGHTR XC XC THIS SUBROUTINE HANDLES ENEMY FIGHTER MOVES XC X`09INCLUDE 'EMPIRE.INC/NOLIST' XC`20 XC IFO=7: CITY LOCATION XC IFO=6: CARRIER NUMBER XC IFO=5: TARGET LOCATION XC IFO=4: TARGET LOCATION, KAMIKAZE MISSION XC IFO=3: DIRECTIONAL XC IFO=2: DIRECTIONAL, KAMIKAZE MISSION XC X`09MONKEY=0 X`09NUMBER(2)=0 X`09DO 3600 Y=1,LIMIT(10) X`09DO 3500 I1=1,4 X`09Z6=RLMAP(2000+Y) X`09IF (Z6.EQ.0) GOTO 3600 X`09MONKEY=Y X`09STOPF=1 X`09P=0 X`09Z7=Z6 X`09AB=RMAP(Z6) X`09DO 100 IA=1,6 X`09DO 100 IB=1,5 X100`09IF (TROOPT(IA,IB).EQ.Z6) TROOPT(IA,IB)=0 X`09IF ((AB.NE.'f').AND.(AB.NE.'X').AND.(AB.NE.'c')) GOTO 3400 X`09IF ((AB.EQ.'X').OR.(AB.EQ.'c')) RANG(Y)=20 X`09IF (RANG(Y).NE.0) GOTO 200 X`09OUTOFGAS=OUTOFGAS+1 X`09IF (CODER.EQ.12) TYPE 999,OUTOFGAS,CODEFU(Y+IFI2-1500), X`091 CODELA(Y+IFI2-1500) X999`09FORMAT(' LOST FIGHTERS= ',I4,'FIGHTER CODE WAS',2I4) X`09RMAP(Z6)=OMAP(Z6) X`09GOTO 3400 XC`20 XC MOVE SELECTION XC X200`09IF (CODELA(Y+IFI2-1500).EQ.Z6) GOTO 1100 X`09IFO=CODEFU(Y+IFI2-1500) X`09ILA=CODELA(Y+IFI2-1500) XC`20 XC DOES A NEW CODE NEED TO BE SELECTED? 1100:YES, 2600:NO XC X`09GOTO (1100,300,600,700,800,900,1000) IFO X`09GOTO 1100 XC`20 X300`09IF (RND(100).LT.5) ILA=ICORR(ILA+1)`09!** X`09IF (RANG(Y).GT.10) GOTO 2600 X`09DO 400 I=1,70 X`09IF (X(I).EQ.0.OR.OWNER(I).NE.2) GOTO 400 X`09IF (IDIST(Z6,X(I)).GT.RANG(Y)) GOTO 400 X`09IFO=7 X`09ILA=X(I) X`09GOTO 2600 X400`09CONTINUE XC`20 X600`09IF (RND(100).LT.10) ILA=ICORR(ILA+1)`09!** X`09IF (RANG(Y).LE.11) GOTO 1100 X`09GOTO 2600 XC`20 X700`09IF (ILA.EQ.Z6) GOTO 1100 X`09IF (IDIST(Z6,ILA).EQ.1) GOTO 1100 X`09GOTO 2600 XC`20 X800`09IF ((ILA.EQ.Z6).OR.(RANG(Y).LE.11)) GOTO 1100 X`09IF (IDIST(Z6,ILA).EQ.1) GOTO 1100 X`09GOTO 2600 XC`20 X900`09IF (Z6.EQ.RLMAP(ILA+2800)) GOTO 1100`09!IF LANDED X`09IF (RLMAP(ILA+2800).EQ.0) GOTO 1100`09!IF CARRIER DOESN'T EXIST X`09IF (IDIST(Z6,RLMAP(ILA+2800)).GT.RANG(Y)) GOTO 1100`09!IF OUT OF RANG X`09GOTO 2600 XC`20 X1000`09IF (Z6.EQ.ILA) GOTO 1100`09`09`09!IF LANDED X`09IF (IDIST(Z6,ILA).GT.RANG(Y)) GOTO 1100`09!IF OUT OF RANG X`09GOTO 2600 XC`20 XC NEW CODE SELECTION XC X1100`09ID=0 X`09FUEL=RANG(Y)/2`09!DO THIS SO CRAFT CAN RETURN TO REFUEL X`09GOTO 1400`09!NO KAMIKAZE ON FIRST TRY X1200`09FUEL=RANG(Y)`09!BE KAMIKAZE XC XC CURRENTLY THIS PATH IS EXECUTED TWICE. XC XC LOOK FOR ENEMY TROOP TRANSPORTS, THEN SUBMARINES XC X1400`09DO 1700 ISHIPT=3,2,-1`09!ENEMY TROOP TRANSPORTS, THEN SUBS X`09DO 1600 I=1,5 X`09IF (TROOPT(ISHIPT,I).EQ.0) GOTO 1600 X`09IF (IDIST(Z6,TROOPT(ISHIPT,I)).GT.FUEL) GOTO 1600`09!OUT OF RANG X`09IFO=5 X`09IF (FUEL.EQ.RANG(Y)) IFO=4 X`09ILA=TROOPT(ISHIPT,I) X`09GOTO 2600`09!PROCEED TO MOVE CORRECTION X1600`09CONTINUE X1700`09CONTINUE XC XC MOVE TOWARD AN ENEMY CONCENTRATION WITHIN RANG IN SUPPORT OF OUR ARMIES, XC INCLUDING OUR TROOP TRANSPORTS XC X`09TRY=0 X`09IF (RND(100).LT.25) GOTO 1950 X1900`09IK=RND(LIMIT(9))+1 X`09DO 2000 IK=IK,IK+LIMIT(9)-1`09!FIRST SUPPORT LAND ARMIES X`09K=IK X`09IF (K.GT.LIMIT(9)) K=K-LIMIT(9) X`09IF (RLMAP(K+IAR2).EQ.0) GOTO 2000 X`09IF (CODEFU(K).EQ.2) GOTO 1920 X`09IF (CODEFU(K).NE.1) GOTO 2000 X`09IF (EMAP(CODELA(K)).NE.'O') GOTO 2000 X1920`09IF (IDIST(RLMAP(K+IAR2),CODELA(K)).GT.7) GOTO 2000 !DON'T BE TO SOON X`09DIST=IDIST(Z6,CODELA(K)) X`09IF (DIST.LT.2) GOTO 2000`09!IF WE ARE THERE ALREADY, DO SOMETHING X`09IF (DIST.GT.FUEL) GOTO 2000`09!IF OUT OF RANG X`09IFO=5 X`09IF (FUEL.EQ.RANG(Y)) IFO=4`09!KAMIKAZE X`09ILA=CODELA(K) X`09GOTO 2600`09`09`09!PROCEED TO MOVE CORRECTION X2000`09CONTINUE X`09TRY=TRY+1 X`09IF (TRY.GT.1) GOTO 2075 XC XC SUPPORT A TROOP TRANSPORT LANDING XC X1950`09DO 2050 K=1,LIMIT(13)`09`09!NOW TRY TO SUPPORT ATTACKS BY TT'S X`09IF (RLMAP(K+ITT2).EQ.0) GOTO 2050 X`09IF (CODEFU(K+ITT2-1500).NE.9) GOTO 2050 X`09IF (EMAP(CODELA(K+ITT2-1500)).EQ.'*') GOTO 2050 X`09IF (IDIST(RLMAP(K+ITT2),CODELA(K+ITT2-1500)).GT.15) GOTO 2050 X`09DIST=IDIST(Z6,CODELA(K+ITT2-1500)) X`09IF (DIST.LT.2) GOTO 2050`09!DO SOMETHING ELSE IF THERE X`09IF (DIST.GT.FUEL) GOTO 2050`09!IF OUT OF RANG X`09IFO=5 X`09IF (FUEL.EQ.RANG(Y)) IFO=4`09!KAMIKAZE X`09ILA=CODELA(K+ITT2-1500) X`09GOTO 2600`09`09`09!PROCEED TO MOVE CORRECTION X2050`09CONTINUE X`09TRY=TRY+1 X`09IF (TRY.LE.1) GOTO 1900 X2075`09IF (ID.EQ.1000) GOTO 1800`09!USE FIGHTER FOR EXPLORATION XC XC NOW MOVE TOWARDS A CITY OR CARRIER CLOSER TO OUR FRONT LINE ARMIES XC X2100`09IK=RND(LIMIT(9))+1 X`09DO 2150 IK=IK,IK+LIMIT(9)-1`09!FIRST SUPPORT LAND ARMIES X`09K=IK X`09IF (K.GT.LIMIT(9)) K=K-LIMIT(9) X`09IF (RLMAP(K+IAR2).EQ.0) GOTO 2150 X`09IF ((CODEFU(K).NE.1).AND.(CODEFU(K).NE.2)) GOTO 2150 X`09CALL FTRCTY(Z6,RANG(Y),CODELA(K),IFO,ILA,ID,6) X`09IF (ID.NE.1000) GOTO 2600`09!FOUND A CLOSER CITY OR CARRIER X2150`09CONTINUE XC XC NOW TRY A CITY CLOSER TO AN ATTACKING TROOP TRANSPORT XC X`09DO 2200 K=1,LIMIT(13)`09`09!NOW TRY TO SUPPORT ATTACKS BY TT'S X`09IF (RLMAP(K+ITT2).EQ.0) GOTO 2200 X`09IF (CODEFU(K+ITT2-1500).NE.9) GOTO 2200 X`09CALL FTRCTY(Z6,RANG(Y),CODELA(K+ITT2-1500),IFO,ILA,ID,4) X`09IF (ID.NE.1000) GOTO 2600`09!FOUND A CLOSER CITY OR CARRIER X2200`09CONTINUE XC X`09IF (RANG(Y).NE.FUEL) GOTO 1200`09!NOW SEARCH AS KAMIKAZE X`09`09`09`09`09!SINCE NO CITY CLOSER TO ENEMY XC XC FIGHTER IS NOT USEFUL IN SUPPORT OF ANYTHING, USE IT TO EXPLORE XC X1800`09IF ((RND(100).LT.50).AND.(RANG(Y).GT.11)) GOTO 1850 X`09LOC=EXPL() X`09IF (RANG(Y).LE.11) LOC=Z6 X`09CALL FTRCTY(Z6,RANG(Y),LOC,IFO,ILA,ID,2) X`09IF (ID.NE.1000) GOTO 2600`09!FOUND A CLOSER CITY OR CARRIER X1850`09IFO=3 X`09ILA=RND(8)+1 X`09IF (RND(100).LT.5) IFO=2`09!** ONE OUT OF 20 WILL BE KAMIKAZE X`09IF (NUMBER(2).LE.2) IFO=3 XC XC MOVE CORRECTION XC X2600`09IZOT=0 X`09MOOV=0 X`09IF (ILA.GT.100) IZOT=MOV(Z6,ILA) X`09IF (ILA.LT.10) IZOT=ILA X`09IF (IFO.EQ.6) IZOT=MOV(Z6,RLMAP(2800+ILA)) X`09IF ((IFO.LT.4).AND.(RND(100).LT.5)) IZOT=ICORR(IZOT+1)`09!** X`09DO 2700 I=1,8 X`09AC=RMAP(Z6+IARROW(I+1))`09`09!** X`09IF ((AC.NE.'C').AND.(AC.NE.'S').AND.(AC.NE.'T').AND.(AC.NE.'A') X`091`09.AND.(AC.NE.'F')) GOTO 2700 X`09MOOV=I X`09GOTO 3100 X2700`09CONTINUE XC`20 XC LOOK FOR TERRITORY TO EXPLOR IN FRONT XC X`09IF (RANG(Y).LE.10) GOTO 2900`09`09!IF LOW ON FUEL X`09IZOT2=IZOT`09`09`09`09!STORE IZOT A MOMENT X`09J=-1 X`09IF (RND(100).LT.50) J=1 X`09DO 2800 J=J,-J,-2*J`09`09`09!TRY BOTH SIDES OF DIRECTION X`09DIR=IARROW(ICORR(IZOT2+J)+1) X`09Z62=Z6 X`09DO 2750 I=1,7`09`09`09`09!TRY SEVERAL MOVES AWAY X`09Z62=Z62+DIR X`09IF (ORDER(Z62).NE.0) GOTO 2760`09`09!IF ON THE EDGE OF THE MAP X`09IF (EMAP(Z62).EQ.' ') IZOT=ICORR(IZOT2+J)`09!IF Z62 IS UNEXPLORED X2750`09CONTINUE X2760`09IF (IZOT.NE.IZOT2) GOTO 2900 X2800`09CONTINUE XC`20 X2900`09DESTIN=ILA X`09IF (IFO.EQ.6) DESTIN=RLMAP(2800+ILA) X`09ID=IZOT X`09DO 3000 I=0,7 X`09IZOT=ICORR(ID+I) X`09NEWLOC=Z6+IARROW(IZOT+1)`09`09!** X`09IF (IFO.GT.3) THEN X`09 IF (IDIST(Z6,DESTIN).LE.IDIST(NEWLOC,DESTIN)) GOTO 3000 X`09ENDIF X`09AC=RMAP(NEWLOC) X`09IF ((`09(AC.EQ.'.').OR.(AC.EQ.'+').OR. X`091`09(AC.EQ.'A').OR.(AC.EQ.'T').OR. X`091`09(AC.EQ.'C').OR.(AC.EQ.'S').OR. X`091`09(AC.EQ.'F').OR. X`091`09(AC.EQ.'X').OR.(AC.EQ.'c') ).AND.(ORDER(NEWLOC).EQ.0)) X`091`09GOTO 3100 X3000`09CONTINUE X`09IZOT=0 X3100`09CODEFU(IFI2-1500+Y)=IFO X`09CODELA(IFI2-1500+Y)=ILA X`09IF (IFO.LT.4) CODELA(IFI2-1500+Y)=IZOT X`09IF (CODER.EQ.2) TYPE 998,IFO,CODELA(IFI2-1500+Y) X998`09FORMAT(I) X`09IF (MOOV.NE.0) IZOT=MOOV X`09Z6=Z6+IARROW(IZOT+1)`09`09`09!** XC`20 XC MOVE EVALUATION XC X`09IF (AB.EQ.'f') RMAP(Z7)=OMAP(Z7) X`09AB=RMAP(Z6) X`09IF ((AB.EQ.'.').OR.(AB.EQ.'+')) GOTO 3200 X`09IF ((AB.EQ.'X').OR.(AB.EQ.'c')) GOTO 3300 X`09IF (OMAP(Z6).EQ.'*') GOTO 3400 X`09H2=30 X`09P=1 X`09H1=1 X`09OWN1='f' X`09OWN2=AB 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 3400 X3200`09RMAP(Z6)='f' X`09STOPF=0 X3300`09RANG(Y)=RANG(Y)-1 X`09IF (I1.EQ.1) NUMBER(2)=NUMBER(2)+1 X`09RLMAP(2000+Y)=Z6 X`09CALL SONAR(Z6) X`09IF (P.EQ.1) CALL SENSOR(Z6) X`09IF (STOPF.EQ.1) GOTO 3600 X3500`09CONTINUE X`09GOTO 3600 X3400`09RLMAP(2000+Y)=0 X`09CALL SONAR(Z6) X`09IF (P.EQ.1) CALL SENSOR(Z6) X3600`09CONTINUE X`09RETURN X`09END X X`09SUBROUTINE FTRCTY(Z6,MRANGE,LOC,IFO,ILA,ID,FLIM) X`09INCLUDE 'EMPIRE.INC/NOLIST' X X`09ID=1000 X`09IGARBG=RND(70+LIMIT(15))+1`09`09!** X`09DO 2500 ILOOP=IGARBG,IGARBG+70+LIMIT(15) X`09IA=ILOOP X`09IF (IA.GT.70+LIMIT(15)) IA=IA-70-LIMIT(15) X`09IF (IA.GT.70) GOTO 2400 X`09IF (OWNER(IA).NE.2) GOTO 2500 X`09IF (IDIST(Z6,X(IA)).GT.MRANGE) GOTO 2500 X`09IF (IDIST(X(IA),LOC).GE.ID) GOTO 2500 X`09IFO=7 X`09ILA=X(IA) X`09ID=IDIST(X(IA),LOC) X`09GOTO 2500 X2400`09IB=IA-70 X`09IF (RLMAP(2800+IB).EQ.0) GOTO 2500 X`09IF (IDIST(Z6,RLMAP(2800+IB)).GT.MRANGE) GOTO 2500 X`09IF (IDIST(RLMAP(2800+IB),LOC).GE.ID) GOTO 2500 X`09IF ((IDIST(Z6,RLMAP(2800+IB)).GT.MRANGE-MRANGE/2) X`091 .AND.(CODEFU(1300+IB).NE.9)) GOTO 2500 X`09IFO=6 X`09ILA=IB X`09ID=IDIST(RLMAP(2800+IB),LOC) X2500`09CONTINUE X`09K=0 X`09DO 100 I=1,LIMIT(10) X`09IF (RLMAP(I+2000).EQ.0) GOTO 100 X`09IF (CODEFU(I+IFI2-1500).NE.IFO) GOTO 100 X`09IF (CODELA(I+IFI2-1500).NE.ILA) GOTO 100 X`09K=K+1 X`09IF (K.LE.FLIM) GOTO 100 X`09ID=1000 X`09GOTO 2600 X100`09CONTINUE X2600`09RETURN X`09END X`0C X`09SUBROUTINE CITYCT XC X`09INCLUDE 'EMPIRE.INC/NOLIST' XC X`09NUMBER(9)=0 X`09DO 100 I=11,18 X100`09NUMBER(I)=0 X`09DO 200 I=1,70 X`09IF (OWNER(I).NE.2) GOTO 200 X`09NUMBER(9)=NUMBER(9)+1 X`09IF (PHASE(I).LE.0) GOTO 200`09`09!HANDLES JUST CAPTURED CITY X`09INDEXX=INDEX(PHASE(I)) X`09NUMBER(INDEXX)=NUMBER(INDEXX)+1 X200`09CONTINUE XC`20 XC NOW LET NUMBER(10)=LAST FILLED SLOT IN TARGET XC X`09DO 300 I=70,1,-1 X`09IF (TARGET(I).EQ.0) GOTO 300 X`09NUMBER(10)=I X`09GOTO 400 X300`09CONTINUE X`09NUMBER(10)=0 X400`09RETURN X`09END XC`20 X`09SUBROUTINE CITYPH(I) XC X`09INCLUDE 'EMPIRE.INC/NOLIST' XC`20 XC NUMBER(1-8): NUMBERS OF UNITS XC NUMBER(11-18): NUMBERS OF CITIES WITH EACH PHASE XC NUMBER(9): NUMBER OF CITIES XC NUMBER(10): NUMBER OF TARGET CITIES XC`20 X`09INT=PHASE(I) X`09IF (PHASE(I).NE.-1) GOTO 100 X`09PHASE(I)=1 X`09GOTO 1400 X100`09EDGE=EDGER(X(I)) XC`20 XC IF WE HAVE A PHASE OF 0, MAKE SOMETHING! XC X`09IF (PHASE(I).EQ.0) GOTO 600 XC`20 XC IF CITY IS SURROUNDED BY ARMIES, MAKE SOMETHING ELSE XC X`09IF (PHASE(I).NE.1) GOTO 300 X`09DO 200 J=1,8 X200`09IF (RMAP(X(I)+IARROW(J+1)).EQ.'+') GOTO 300`09!** X`09GOTO 600 XC`20 XC IF CRAFT NUMBERS ARE GETTING GROSSLY LARGE, PRODUCE SOMETHING ELSE XC X300`09IF (NUMBER(OVRPOP(PHASE(I)+1,1)).GT. X`091`09OVRPOP(PHASE(I)+1,2)) GOTO 600`09`09!** XC`20 X`09IF (EDGE.NE.8) GOTO 400 X`09IF ((NUMBER(9).GT.1).AND.(PHASE(I).EQ.1)) GOTO 1100 X`09IF (NUMBER(9).GT.1) GOTO 1400 X`09IF (NUMBER(5).LT.1) PHASE(I)=6 X`09IF (NUMBER(5).GT.0) PHASE(I)=1 X`09GOTO 1400 XC`20 X400`09IF (PHASE(I).NE.1) GOTO 600 X`09N=0 X`09DO 500 J=IAR2+1,IAR2+LIMIT(9) X`09Z=RLMAP(J) X`09IF (Z.EQ.0) GOTO 500 X`09IF (IDIST(X(I),Z).GT.6) GOTO 500 X`09IF (EMAP(Z).EQ.'t') GOTO 500 X`09MOVE=PATH(X(I),Z,1,OKA,FLAG) X`09IF (FLAG.EQ.0) GOTO 500 X`09N=N+1 X`09IF ((N.GT.6).AND.(NUMBER(11).GT.1)) GOTO 800 X500`09CONTINUE X`09IF ((N.GT.3).AND.(NUMBER(11).GT.1)) GOTO 600 X`09GOTO 1400 XC`20 XC SELECT A NEW PHASE FOR THE CITY XC X600`09CONTINUE XC XC IF THERE ARE ENEMY ARMIES ON THE CONTINENT, PRODUCE ARMIES! XC X`09IF (EDGE.EQ.8) GOTO 1050 X`09DO 700 J=1,10 X`09IF (LOCI(J,2).EQ.0) GOTO 700 X`09MOVE=PATH(X(I),LOCI(J,2),1,OKA,FLAG) X`09IF (FLAG.EQ.0) GOTO 700 X`09PHASE(I)=1 X`09GOTO 1300 X700`09CONTINUE XC`20 X800`09PHASE(I)=2 X`09IF (EDGE.GT.0) GOTO 900`09`09`09!IF NOT LANDLOCKED X`09IF (NUMBER(1).LE.4*NUMBER(2)) PHASE(I)=1!4 TO 1 IN FAVOR OF ARMIES X`09GOTO 1300 XC`20 X900`09PHASE(I)=1 X`09N=0 X`09DO 1000 J=IAR2+1,IAR2+LIMIT(9) X`09Z=RLMAP(J) X`09IF (Z.EQ.0) GOTO 1000 X`09IF (IDIST(X(I),Z).GT.6) GOTO 1000 X`09IF (EMAP(Z).EQ.'t') GOTO 1000`09`09!IF ON TROOP TRANSPORT X`09MOVE=PATH(X(I),Z,1,OKA,FLAG) X`09IF (FLAG.EQ.0) GOTO 1000 X`09N=N+1 X1000`09CONTINUE X`09IF (N.LT.3) GOTO 1300 X1050`09PHASE(I)=2 X`09IF (NUMBER(2)*2.GT.NUMBER(9)) GOTO 1100 X`09IF ((NUMBER(5).LT.3).AND.(NUMBER(15).LT.2)) GOTO 1100 X`09IF (NUMBER(2)*4.LT.NUMBER(9)) GOTO 1300 X`09IF (INT.EQ.2) GOTO 1300 X`09IF (INT.GT.2) GOTO 1100 X`09IF (RND(100).LT.50) GOTO 1300 XC`20 XC SELECT A SHIP, GUARANTEEING AT LEAST TWO CITIES PRODUCING TROOP TRANSPORTS XC X1100`09PHASE(I)=PH(8) X`09DO 1200 J=8,4,-1 X1200`09IF (NUMBER(J+10).GE.NUMBER(J+9)) PHASE(I)=PH(J-1) X`09IF (NUMBER(9).GT.(4*NUMBER(15)+2*NUMBER(5))) PHASE(I)=6 X`09IF (INT.GT.2) PHASE(I)=INT X`09IF (NUMBER(17).EQ.0) PHASE(I)=12 X`09IF (NUMBER(15).LT.2) PHASE(I)=6 XC`20 X1300`09IF ((NUMBER(9).GT.1).AND.(NUMBER(15).EQ.0).AND.(EDGE.GT.0)) X`091`09PHASE(I)=6 X1400`09FOUND(I)=5*PHASE(I)+MDATE X`09IF (INT.EQ.PHASE(I)) GOTO 1500 X`09FOUND(I)=6*PHASE(I)+MDATE X`09CALL CITYCT +-+-+-+-+-+-+-+- END OF PART 8 +-+-+-+-+-+-+-+-