|
|
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