DataMuseum.dk

Presents historical artifacts from the history of:

DKUUG/EUUG Conference tapes

This is an automatic "excavation" of a thematic subset of
artifacts from Datamuseum.dk's BitArchive.

See our Wiki for more about DKUUG/EUUG Conference tapes

Excavated with: AutoArchaeologist - Free & Open Source Software.


top - metrics - download
Index: T c

⟦79b584453⟧ TextFile

    Length: 2874 (0xb3a)
    Types: TextFile
    Names: »cityph.f«

Derivation

└─⟦b20c6495f⟧ Bits:30007238 EUUGD18: Wien-båndet, efterår 1987
    └─⟦this⟧ »EUUGD18/General/Empire/cityph.f« 

TextFile

	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