]> git.pond.sub.org Git - empserver/blobdiff - src/lib/commands/shoo.c
Update copyright notice.
[empserver] / src / lib / commands / shoo.c
index 4c97bb4f85147262cb689aa25ea225b88ff25a65..0ee78620001b20e7fd5d83dc05f633cb878908a4 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
@@ -59,14 +59,14 @@ shoo(void)
     struct lndstr land;
     int targets;
     s_char *p;
-    int vec[I_MAX + 1], mil, nsec;
+    int mil, nsec;
     s_char prompt[128];
     s_char buf[128];
 
     ip = whatitem(player->argp[1], "Shoot what <civ or uw> ");
-    if (ip == 0 || (ip->i_vtype != V_CIVIL && ip->i_vtype != V_UW))
+    if (ip == 0 || (ip->i_vtype != I_CIVIL && ip->i_vtype != I_UW))
        return RET_SYN;
-    item = ip - ichr;
+    item = ip->i_vtype;
     if (!snxtsct(&nstr, player->argp[2]))
        return RET_SYN;
     sprintf(prompt, "number of %s to shoot (max 999)? ", ip->i_name);
@@ -78,9 +78,7 @@ shoo(void)
     while (nxtsct(&nstr, &sect)) {
        if (!player->owner)
            continue;
-       if (getvec(VT_ITEM, vec, (s_char *)&sect, EF_SECTOR) <= 0)
-           continue;
-       mil = vec[I_MILIT];
+       mil = sect.sct_item[I_MILIT];
        nsec = 0;
        snxtitem_xy(&ni, EF_LAND, sect.sct_x, sect.sct_y);
        while (nxtitem(&ni, (s_char *)&land)) {
@@ -92,9 +90,9 @@ shoo(void)
            }
        }
 
-       if (vec[item] == 0 || vec[I_CIVIL] > mil * 10)
+       if (sect.sct_item[item] == 0 || sect.sct_item[I_CIVIL] > mil * 10)
            continue;
-       nshot = vec[item] > targets ? targets : vec[item];
+       nshot = sect.sct_item[item] > targets ? targets : sect.sct_item[item];
        m = ((double)nshot + 4.0) / 5.0;
 
        if (m > sect.sct_mobil) {
@@ -117,18 +115,17 @@ shoo(void)
            m = sect.sct_mobil;
        mob_cost = roundavg(m);
        sect.sct_mobil -= (u_char)mob_cost;
-       vec[item] -= nshot;
+       sect.sct_item[item] -= nshot;
        pr("BANG!! (thump) %d %s shot in %s!\n",
           nshot, ip->i_name, xyas(sect.sct_x, sect.sct_y, player->cnum));
        if (chance(nshot / 100.0))
            nreport(player->cnum, N_SHOOT_CIV, sect.sct_oldown, 1);
-       if (vec[item] <= 0 && ip->i_vtype == V_CIVIL &&
-           (sect.sct_own != sect.sct_oldown)) {
+       if (sect.sct_item[item] <= 0 && item == I_CIVIL
+           && (sect.sct_own != sect.sct_oldown)) {
            sect.sct_oldown = sect.sct_own;
            pr("  %s is now completely yours\n",
               xyas(sect.sct_x, sect.sct_y, player->cnum));
        }
-       putvar(ip->i_vtype, vec[item], (s_char *)&sect, EF_SECTOR);
        putsect(&sect);
     }
     return RET_OK;