|
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 m
Length: 4814 (0x12ce) Types: TextFile Names: »mve.f«
└─⟦b20c6495f⟧ Bits:30007238 EUUGD18: Wien-båndet, efterår 1987 └─⟦this⟧ »EUUGD18/General/Empire/mve.f«
ccc mve - handle player move mode subroutine mve(own1,xxxmdate,relnum,num,n2,z6,z7,disas,jursor) c c inputs: c own1 = char of piece (ie: 'a' for army) c xxxmdate = round number c relnum = relative piece number to type c num = piece index to rlmap c n2 = piece index to hits c z6 = location, return new location c z7 = old location c disas = 0:ok, -2:stasis c jursor = current cursor c IMPLICIT INTEGER(A-Z) include 'common.h' C disas=0 c c Get command character with no echo c 100 call sector ( pmap ( 1 )) ib = j1ts ( n2 ) call head ( own1, relnum, num, z6, ib ) comment display header call cursor ( jursor ) 200 e = char(getchx()) call topmsg ( 2, 0 ) comment clear line call topmsg ( 3, 0 ) comment clear line call cflush c c Look at the command c z7 = z6 do 300 i = 1, 9 ind = i 300 if ( e .eq. kbtbl ( ind )) goto 400 goto 500 comment command is not a direction 400 z6 = z6 + kbfudg ( ind ) goto 4200 500 end = 15 if ( pass ) end = 20 do 600 i = 1, end 600 if ( e .eq. comman ( i )) goto 700 i = 0 c c s, r, i, k, o, l, f, g, p, h, y, t, v, j, ?, 0, 0, u, n, + c 700 goto ( 900, 1000, 1100, 1500, 1900, 2000, 2300, 2400, 2500, 2600, * 2700, 2800, 2900, 3200, 3300, 800, 800, 3800, 3900, 2600 ) i 800 goto 100 c c s: put to sleep c 900 if ( rmap ( z6 ) .eq. 'O' ) return mycode ( num ) = 50 return c c r: random movement c 1000 if ( own1 .ne. 'A' ) goto 100 comment only for armies mycode ( num ) = 100 z6 = z6 + iarrow ( jiggle ( z6, num ) + 1 ) return c c i: put in directional stasis c 1100 call cursor(jursor) comment cuz of clear lines above e=char(getchx()) do 1200 i=1,9 if (e .eq. kbtbl(i)) goto 1300 1200 continue goto 1400 1300 mycode(num)=cmytbl(i) 1400 if (mycode(num).eq.0) goto 100 disas=-2 return c c k: kill stasis number on piece c 1500 mycode(num)=0 comment zero function code for anything if (own1.ne.'T') goto 1700 comment if transport, wake armies aboard do 1600 j=1,500 1600 if (rlmap(j).eq.z6) mycode(j)=0 goto 100 1700 if (own1.ne.'C') goto 100 comment if carrier, wake fighters aboard do 1800 j=501,700 1800 if (rlmap(j).eq.z6) mycode(j)=0 goto 100 c c o: cancel auto move mode c 1900 continue if ( .not. automv ) goto 1913 automv = .false. call topmsg ( 3, 'Auto move mode canceled' ) goto 100 1913 continue call topmsg ( 3, 'Not in auto mode!' ) goto 100 C C L: SET UP CITY STASIS NUMBERS C 2000 IF (OMAP(Z6).NE.'*') GOTO 2300 comment BETTER BE A CITY E=char(GETCHX()) DO 2100 I=1,9 IF (E .EQ. KBTBL(I)) GOTO 2200 2100 CONTINUE GOTO 4100 2200 FIPATH(CITFND(Z6))=CMYTBL(I) comment SET STASIS NUMBER DISAS=-2 RETURN C C F: C 2300 CALL DIREC GOTO 4100 C C G: PUT T/C TO SLEEP C 2400 IF ((OWN1.NE.'T').AND.(OWN1.NE.'C')) GOTO 100 MYCODE(NUM)=9997 DISAS=-2 RETURN C C P: SECTOR PRINTOUT C 2500 ISEC=-1 CALL SECTOR(PMAP(1)) GOTO 4100 c c h: get help c 2600 call help e = char(getchx()) isec = -1 goto 4100 C C Y: CHANGE PHASE OF A CITY C 2700 CALL DIREC GOTO 4100 C C T: BLOCK PRINTOUT C C2800 CALL CLEAR C CALL BLOCK(PMAP(1)) C ISEC=-1 C GOTO 4100 C C V: SAVE GAME C C2900 CALL GAME(1,NUM) comment NOT SURE THIS WILL WORK AS PLAYERS EXPECT 2800 CONTINUE 2900 CALL DIREC GOTO 100 C C J: PUT IN EDIT MODE C 3200 CALL EDIT(Z6) IF (MYCODE(NUM).EQ.0) GOTO 100 DISAS=-2 RETURN c c ?: how many hits? loaded? c 3300 if ((own1.eq.'A').or.(own1.eq.'F')) goto 100 ib=j1ts(n2) comment display hits left ptr = 0 C CALL sstrout ( ' Hits left:',10) n = 0 comment count armies if ( own1 .ne. 'T' ) goto 3500 do 3400 i = 1, 500 3400 if ( rlmap ( i ) .eq. z6 ) n = n + 1 if ( n .eq. 0 ) goto 3700 cc if (mode.eq.1) call tpos(3,1) call addint ( n, jnkbuf, ptr ) if ( n .eq. 1 ) call addstr ( ' army', jnkbuf, ptr ) if ( n .gt. 1 ) call addstr ( ' armies', jnkbuf, ptr ) goto 1313 3500 if ( own1 .ne. 'C' ) goto 4100 do 3600 i = 1, 200 comment count fighters 3600 if ( rlmap ( i + 500 ) .eq. z6 ) n = n + 1 if ( n .eq. 0 ) goto 3700 cc if (mode.eq.1) call tpos(3,1) call addstr ( ' fighter', jnkbuf, ptr ) if ( n .gt. 1 ) call addstr ( 's', jnkbuf, ptr ) 1313 continue call addstr ( ' aboard', jnkbuf, ptr ) jnkbuf(ptr + 1) = '\0' call topmsg ( 3, jnkbuf ) call cflush goto 4100 3700 continue comment nothing aboard cc if (mode.eq.1) call tpos(3,1) call topmsg ( 3, 'Nothing aboard' ) call cflush GOTO 4100 C C U: CALL REFERENCE MAP C 3800 ISEC=-1 CALL SECTOR(RMAP(1)) GOTO 4100 C C N: CALL ENEMY MAP C 3900 ISEC=-1 CALL SECTOR(EMAP(1)) GOTO 4100 C C +: BLOCK PRINT REF. MAP C 4000 call clear call topini ISEC=-1 CALL BLOCK(RMAP(1)) E=char(GETCHX()) GOTO 4100 C 4100 call ltr(z6,2) call cflush goto 100 4200 if (order(z6).eq.0) goto 4300 cc if (mode.eq.1) call tpos(3,1) call topmsg ( 3, 'You cannot move onto the edge of the world' ) z6 = z7 goto 4100 4300 return end