|
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 s
Length: 4670 (0x123e) Types: TextFile Names: »spy.c«
└─⟦b20c6495f⟧ Bits:30007238 EUUGD18: Wien-båndet, efterår 1987 └─⟦this⟧ »EUUGD18/General/Empire.V/V1.1/COMMANDS/spy.c«
#define D_ICHRSTR #define D_NEWSVERBS #define D_TRTYCLAUSE #define D_NATSTAT #define D_SECTDES #define D_DCHRSTR #define D_UPDATE #define D_SCTSTR #define D_NSCSTR #define D_FILES #include "empdef.h" spy() { register i, j; char chart[36][36], *cname(), *xytoa(); int slx, shx, sly, shy, spies, k, vnum; int nsects, pkgs, xoff, yoff; struct nstr nsct; if( snxtsct(&nsct, argp[1]) == -1 ) return(SYN_RETURN); slx = nsct.n_lx - nsct.n_ix; shx = nsct.n_hx + nsct.n_ix; sly = nsct.n_ly - nsct.n_iy; shy = nsct.n_hy + nsct.n_iy; if( (shx - slx) * nsct.n_ix >= 36 ) goto X204; if( (shy - sly) * nsct.n_iy < 36 ) goto X214; X204: printf("Too large an area (max range is 32)"); return(SYN_RETURN); X214: xoff = (slx < shx) ? slx : shx; yoff = (sly < shy) ? sly : shy; j = sly; goto X370; X276: i = slx; goto X344; X304: chart[i-xoff][j-yoff] = 0; i += nsct.n_ix; X344: if( i != shx ) goto X304; j += nsct.n_iy; X370: if( j != shy ) goto X276; goto X646; X410: if( owner == 0 ) goto X646; chart[nsct.n_x-xoff][nsct.n_y-yoff] = -128; chart[nsct.n_x-xoff][nsct.n_y-yoff-1]++; chart[nsct.n_x-xoff][nsct.n_y-yoff+1]++; chart[nsct.n_x-xoff-1][nsct.n_y-yoff]++; chart[nsct.n_x-xoff+1][nsct.n_y-yoff]++; X646: if( nxtsct(&nsct, UP_NONE) > 0 ) goto X410; nsects = 0; j = sly; goto X2722; X704: i = slx; goto X2702; X714: spies = chart[i-xoff][j-yoff]; if( spies > 0 ) goto X760; goto X2674; X760: getsect(i, j, UP_NONE); if( owner == 0 ) goto X1006; goto X2674; X1006: if( sect.sct_owned != 0 ) goto X1030; if( sect.sct_desig > S_RURAL ) goto X1030; goto X2674; X1030: vnum = sect.sct_owned; if( vnum == 0 ) goto X1076; if( trechk(cnum, vnum, TRTSPY) != -1 ) goto X1076; goto X2674; X1076: if( sect.sct_milit > rand()%((spies * 100) + 100) ) goto X1144; goto X1644; X1144: if( nstat != STAT_GOD ) goto X1160; goto X1644; X1160: k = getrel(vnum, cnum); if( k != ALLIED ) goto X1214; goto X1644; X1214: if( k == AT_WAR ) goto X1350; printf("Spy deported from %d,%d.\n", i, j); if( vnum != 0 ) goto X1260; goto X2674; X1260: sprintf(fmtbuf,"%s spy deported from %s\n", cname(cnum), xytoa(i, j, vnum)); wu(0, vnum, fmtbuf); goto X2674; X1350: neigh(i, j, cnum, 0); getsect(nbrx, nbry, UP_ALL); if( sect.sct_milit == 0 ) goto X1430; sect.sct_milit--; goto X1434; X1430: sect.sct_civil--; X1434: putsect(nbrx, nbry); printf("BANG!! a spy from %d,%d was shot in %d,%d!\n", nbrx, nbry, i, j); if( vnum != 0 ) goto X1522; goto X2674; X1522: nreport(cnum, N_SPY_SHOT, vnum); sprintf(fmtbuf,"%s spy from %s shot in %s\n", cname(cnum), xytoa(nbrx, nbry, vnum), xytoa(i, j, vnum)); wu(0, vnum, fmtbuf); goto X2674; X1644: if( nsects++ != 0 ) goto X1670; printf(" sect # eff civ mil shl gun ore pln\n"); X1670: if( curup - sect.sct_lstup <= 3 ) goto X1724; update(i, j, UP_ALL); X1724: printf("%3d,%-3d%3d ", i, j, sect.sct_owned); if( wethr(i, j, 0) >= 700 ) goto X2026; if( nstat == STAT_GOD ) goto X2026; printf(" No report due to bad weather.\n"); goto X2674; X2026: pkgs = dchr[sect.sct_desig].d_pkg; k = 12; printf("%c %3d%% %4d", dchr[sect.sct_desig].d_mnem, round(sect.sct_effic, 10), round(sect.sct_civil, 10) * ichr[k].i_pkg[pkgs]); k = 13; printf(" %3d", round(sect.sct_milit, 10) * ichr[k].i_pkg[pkgs]); k = 14; printf(" %4d", round(sect.sct_shell, 10) * ichr[k].i_pkg[pkgs]); k = 15; printf(" %4d", round(sect.sct_guns, 5) * ichr[k].i_pkg[pkgs]); k = 17; printf(" %4d", round(sect.sct_ore, 10) * ichr[k].i_pkg[pkgs]); k = 16; printf(" %3d\n", round(sect.sct_plane, 3) * ichr[k].i_pkg[pkgs]); X2674: i += nsct.n_ix; X2702: if( i == shx ) goto X2714; goto X714; X2714: j += nsct.n_iy; X2722: if( j == shy ) goto X2734; goto X704; X2734: ntused = ntused + (nsects * .25) + .5; return(NORM_RETURN); }