|
DataMuseum.dkPresents historical artifacts from the history of: DKUUG/EUUG Conference tapes |
This is an automatic "excavation" of a thematic subset of
See our Wiki for more about DKUUG/EUUG Conference tapes Excavated with: AutoArchaeologist - Free & Open Source Software. |
top - metrics - downloadIndex: T c
Length: 2874 (0xb3a) Types: TextFile Names: »cityph.f«
└─⟦b20c6495f⟧ Bits:30007238 EUUGD18: Wien-båndet, efterår 1987 └─⟦this⟧ »EUUGD18/General/Empire/cityph.f«
SUBROUTINE CITYPH(I) C IMPLICIT INTEGER(A-Z) include 'common.h' C C C NUMBER(1-8): NUMBERS OF UNITS C NUMBER(11-18): NUMBERS OF CITIES WITH EACH PHASE C NUMBER(9): NUMBER OF CITIES C NUMBER(10): NUMBER OF TARGET CITIES C INT=PHASE(I) IF (PHASE(I).NE.-1) GOTO 100 PHASE(I)=1 GOTO 1400 100 EDGE=EDGER(X(I)) C C IF WE HAVE A PHASE OF 0, MAKE SOMETHING comment C IF (PHASE(I).EQ.0) GOTO 600 C C IF CITY IS SURROUNDED BY ARMIES, MAKE SOMETHING ELSE C IF (PHASE(I).NE.1) GOTO 300 DO 200 J=1,8 200 IF (RMAP(X(I)+IARROW(J+1)).EQ.'+') GOTO 300 comment ** GOTO 600 C C IF CRAFT NUMBERS ARE GETTING GROSSLY LARGE, PRODUCE SOMETHING ELSE C 300 IF (NUMBER(OVRPOP(PHASE(I)+1,1)).GT. 1 OVRPOP(PHASE(I)+1,2)) GOTO 600 comment ** C IF (EDGE.NE.8) GOTO 400 IF ((NUMBER(9).GT.1).AND.(PHASE(I).EQ.1)) GOTO 1100 IF (NUMBER(9).GT.1) GOTO 1400 IF (NUMBER(5).LT.1) PHASE(I)=6 IF (NUMBER(5).GT.0) PHASE(I)=1 GOTO 1400 C 400 IF (PHASE(I).NE.1) GOTO 600 N=0 DO 500 J=IAR2+1,IAR2+LIMIT(9) Z=RLMAP(J) IF (Z.EQ.0) GOTO 500 IF (IDIST(X(I),Z).GT.6) GOTO 500 IF (EMAP(Z).EQ.'t') GOTO 500 MOVE=PATH(X(I),Z,1,OKA,FLAG) IF (FLAG.EQ.0) GOTO 500 N=N+1 IF ((N.GT.6).AND.(NUMBER(11).GT.1)) GOTO 800 500 CONTINUE IF ((N.GT.3).AND.(NUMBER(11).GT.1)) GOTO 600 GOTO 1400 C C SELECT A NEW PHASE FOR THE CITY C 600 CONTINUE C C IF THERE ARE ENEMY ARMIES ON THE CONTINENT, PRODUCE ARMIES comment C IF (EDGE.EQ.8) GOTO 1050 DO 700 J=1,10 IF (LOCI(J,2).EQ.0) GOTO 700 MOVE=PATH(X(I),LOCI(J,2),1,OKA,FLAG) IF (FLAG.EQ.0) GOTO 700 PHASE(I)=1 GOTO 1300 700 CONTINUE C 800 PHASE(I)=2 IF (EDGE.GT.0) GOTO 900 comment IF NOT LANDLOCKED IF (NUMBER(1).LE.3*NUMBER(2)) PHASE(I)=1 comment IF SMALL .NE. OF ARMIES GOTO 1300 C 900 PHASE(I)=1 N=0 DO 1000 J=IAR2+1,IAR2+LIMIT(9) Z=RLMAP(J) IF (Z.EQ.0) GOTO 1000 IF (IDIST(X(I),Z).GT.6) GOTO 1000 IF (EMAP(Z).EQ.'t') GOTO 1000 comment IF ON TROOP TRANSPORT MOVE=PATH(X(I),Z,1,OKA,FLAG) IF (FLAG.EQ.0) GOTO 1000 N=N+1 1000 CONTINUE IF (N.LT.3) GOTO 1300 1050 PHASE(I)=2 IF (NUMBER(2)*2.GT.NUMBER(9)) GOTO 1100 IF ((NUMBER(5).LT.3).AND.(NUMBER(15).LT.2)) GOTO 1100 IF (NUMBER(2)*4.LT.NUMBER(9)) GOTO 1300 IF (INT.EQ.2) GOTO 1300 IF (INT.GT.2) GOTO 1100 IF (irand(100).LT.50) GOTO 1300 C C SELECT A SHIP, GUARANTEEING AT LEAST TWO CITIES PRODUCING TROOP TRANSPORTS C 1100 PHASE(I)=PH(8) DO 1200 J=8,4,-1 1200 IF (NUMBER(J+10).GE.NUMBER(J+9)) PHASE(I)=PH(J-1) IF (INT.GT.2) PHASE(I)=INT IF (NUMBER(17).EQ.0) PHASE(I)=12 IF (NUMBER(15).LT.2) PHASE(I)=6 C 1300 IF ((NUMBER(9).GT.1).AND.(NUMBER(15).EQ.0).AND.(EDGE.GT.0)) 1 PHASE(I)=6 1400 FOUND(I)=5*PHASE(I)+MDATE IF (INT.EQ.PHASE(I)) GOTO 1500 FOUND(I)=6*PHASE(I)+MDATE CALL CITYCT IF (CODER.NE.9) GOTO 1500 CALL tpos(2,1) PRINT 999,X(I),INT,PHASE(I),EDGE 999 FORMAT('+CITY:',I4,' FROM:',I2,' TO:',I2,' EDGE:',I1,3X,$) CALL GETCHX(E) 1500 RETURN END