]> git.pond.sub.org Git - empserver/blobdiff - src/lib/commands/spy.c
Update copyright notice.
[empserver] / src / lib / commands / spy.c
index 15ae8a1d04cb87bfdc200cee11f3882fa544690a..a0f298318a98646715f456ab0d8f33df9faec1f2 100644 (file)
@@ -1,6 +1,6 @@
 /*
  *  Empire - A multi-player, client/server Internet based war game.
- *  Copyright (C) 1986-2000, Dave Pare, Jeff Bailey, Thomas Ruschak,
+ *  Copyright (C) 1986-2004, Dave Pare, Jeff Bailey, Thomas Ruschak,
  *                           Ken Stevens, Steve McClure
  *
  *  This program is free software; you can redistribute it and/or modify
@@ -74,8 +74,6 @@ spy(void)
     int i;
     coord *table;              /* sectors already seen */
     int t_len = 0;
-    int vec[I_MAX + 1];
-    int dvec[I_MAX + 1];
     int nrecon;
     int nunits;
     struct nstr_sect nstr;
@@ -112,7 +110,6 @@ spy(void)
     while (nxtsct(&nstr, &from)) {
        if (!player->owner && !player->god)
            continue;
-       getvec(VT_ITEM, vec, (s_char *)&from, EF_SECTOR);
        nrecon = 0;
        nunits = 0;
        snxtitem_xy(&ni, EF_LAND, from.sct_x, from.sct_y);
@@ -121,7 +118,7 @@ spy(void)
            if (lchr[(int)land.lnd_type].l_flags & L_RECON)
                nrecon++;
        }
-       if ((military = vec[I_MILIT]) == 0 && (nunits == 0))
+       if ((military = from.sct_item[I_MILIT]) == 0 && (nunits == 0))
            continue;
        x = from.sct_x;
        y = from.sct_y;
@@ -146,16 +143,16 @@ spy(void)
                continue;
            }
            getsect(nx, ny, &dsect);
-           getvec(VT_ITEM, dvec, (s_char *)&dsect, EF_SECTOR);
-           if (player->owner || (dsect.sct_type == SCT_WATER) ||
-               (!dvec[I_MILIT] && !dvec[I_CIVIL] &&
-                (num_units(nx, ny) == 0))) {
+           if (player->owner
+               || (dsect.sct_type == SCT_WATER)
+               || (!dsect.sct_item[I_MILIT] && !dsect.sct_item[I_CIVIL]
+                   && num_units(nx, ny) == 0)) {
                /* mark sector as seen */
                insert(table, &t_len, nx, ny);
                continue;
            }
            /* catch spy N/200 chance, N = # military */
-           caught = chance((double)dvec[I_MILIT] / 200.0);
+           caught = chance((double)dsect.sct_item[I_MILIT] / 200.0);
            own = dsect.sct_own;
            /* determine spyee relations with spyer */
            relat = getrel(getnatp(own), player->cnum);
@@ -206,8 +203,7 @@ spy(void)
        if ((savemil != military) && (savemil > 0)) {
            if ((military < 0) || (military > savemil))
                military = 0;
-           vec[I_MILIT] = military;
-           putvec(VT_ITEM, vec, (s_char *)&from, EF_SECTOR);
+           from.sct_item[I_MILIT] = military;
            putsect(&from);
        }
     }
@@ -225,11 +221,25 @@ spy(void)
 static void
 spyline(struct sctstr *sp)
 {
-    int vec[I_MAX + 1];
-
-    getvec(VT_ITEM, vec, (s_char *)sp, EF_SECTOR);
     prxy("%4d,%-4d", sp->sct_x, sp->sct_y, player->cnum);
-    pr(" %c%c %3d %3d %3d %3d %3d %3d %4d %4d %4d %3d %4d %4d %4d %3d %3d\n", dchr[sp->sct_type].d_mnem, (sp->sct_newtype == sp->sct_type) ? ' ' : dchr[sp->sct_newtype].d_mnem, sp->sct_own, sp->sct_oldown, roundintby((int)sp->sct_effic, 10), roundintby((int)sp->sct_road, 10), roundintby((int)sp->sct_rail, 10), roundintby((int)sp->sct_defense, 10), roundintby(vec[I_CIVIL], 10), roundintby(vec[I_MILIT], 10), roundintby(vec[I_SHELL], 10), roundintby(vec[I_GUN], 10), roundintby(vec[I_PETROL], 10), roundintby(vec[I_FOOD], 10), roundintby(vec[I_BAR], 10), count_sect_units(sp), count_sect_planes(sp));
+    pr(" %c%c %3d %3d %3d %3d %3d %3d %4d %4d %4d %3d %4d %4d %4d %3d %3d\n",
+       dchr[sp->sct_type].d_mnem,
+       (sp->sct_newtype == sp->sct_type) ? ' ' : dchr[sp->sct_newtype].d_mnem,
+       sp->sct_own,
+       sp->sct_oldown,
+       roundintby((int)sp->sct_effic, 10),
+       roundintby((int)sp->sct_road, 10),
+       roundintby((int)sp->sct_rail, 10),
+       roundintby((int)sp->sct_defense, 10),
+       roundintby(sp->sct_item[I_CIVIL], 10),
+       roundintby(sp->sct_item[I_MILIT], 10),
+       roundintby(sp->sct_item[I_SHELL], 10),
+       roundintby(sp->sct_item[I_GUN], 10),
+       roundintby(sp->sct_item[I_PETROL], 10),
+       roundintby(sp->sct_item[I_FOOD], 10),
+       roundintby(sp->sct_item[I_BAR], 10),
+       count_sect_units(sp),
+       count_sect_planes(sp));
 }