]> git.pond.sub.org Git - empserver/commitdiff
(sd, shp_missile_defense): Replace getvec() by direct, read-only item
authorMarkus Armbruster <armbru@pond.sub.org>
Wed, 10 Mar 2004 13:16:46 +0000 (13:16 +0000)
committerMarkus Armbruster <armbru@pond.sub.org>
Wed, 10 Mar 2004 13:16:46 +0000 (13:16 +0000)
access.  This is correct, because the old code doesn't use the copy
after it changes the original in the unit structure.
(dd): Remove call of getvec() that has no effect.

src/lib/subs/fortdef.c
src/lib/subs/shpsub.c

index 6f33653de02a2af02757d269b5555459b3caf2fd..e029f1794bd1b782082512289160af73cbf86c51 100644 (file)
@@ -73,7 +73,7 @@ sd(natid att, natid own, coord x, coord y, int noisy, int defending,
     double eff;
     struct shpstr ship;
     struct nstr_item ni;
-    int vec[I_MAX + 1];
+    int shell;
     int dam, rel, rel2;
 
     if (own == 0)
@@ -102,17 +102,15 @@ sd(natid att, natid own, coord x, coord y, int noisy, int defending,
        if (range < ni.curdist)
            continue;
        /* must have gun, shell, and milit to fire */
-       if (getvec(VT_ITEM, vec, (caddr_t)&ship, EF_SHIP) < 3)
-           continue;
-       if (vec[I_SHELL] < ship.shp_glim)
-           vec[I_SHELL] += supply_commod(ship.shp_own, ship.shp_x,
-                                         ship.shp_y, I_SHELL,
-                                         vec[I_SHELL] - ship.shp_glim);
-       nshot = min(min(vec[I_GUN], vec[I_SHELL]), vec[I_MILIT]);
+       shell = ship.shp_item[I_SHELL];
+       if (shell < ship.shp_glim)
+           shell += supply_commod(ship.shp_own, ship.shp_x, ship.shp_y,
+                                  I_SHELL, shell - ship.shp_glim);
+       nshot = min(min(ship.shp_item[I_GUN], shell), ship.shp_item[I_MILIT]);
        nshot = min(nshot, ship.shp_glim);
        if (nshot <= 0)
            continue;
-       ship.shp_item[I_SHELL] = vec[I_SHELL] - nshot;
+       ship.shp_item[I_SHELL] = shell - nshot;
        putship(ship.shp_uid, &ship);
        if (defending)
            nreport(ship.shp_own, N_FIRE_BACK, att, 1);
@@ -177,7 +175,6 @@ dd(natid att, natid def_own, coord ax, coord ay, int noisy, int defending)
     double range;
     struct sctstr firing;
     struct nstr_sect ns;
-    int vec[I_MAX + 1];
 
     if (opt_NO_FORT_FIRE)      /* Forts can't fire! */
        return 0;
@@ -200,8 +197,6 @@ dd(natid att, natid def_own, coord ax, coord ay, int noisy, int defending)
        if ((firing.sct_own != def_own) &&
            ((rel != ALLIED) || (rel2 != AT_WAR)))
            continue;
-       if (getvec(VT_ITEM, vec, (caddr_t)&firing, EF_SECTOR) < 0)
-           continue;
 
        range = tfactfire(def_own, 7.0);
        if (firing.sct_effic > 59)
index b0b3b681430697bd490df5e521efdce9c77e1076..d9030cba76cf73eec60f3bbf5e2eff181d0193c0 100644 (file)
@@ -927,7 +927,7 @@ shp_missile_defense(coord dx, coord dy, natid bombown, int hardtarget)
     struct nstr_item ni;
     struct shpstr ship;
     int hitchance;
-    int vec[I_MAX + 1];
+    int shell;
     double gun, eff, teff;
 
     snxtitem_dist(&ni, EF_SHIP, dx, dy, 1);
@@ -945,22 +945,20 @@ shp_missile_defense(coord dx, coord dy, natid bombown, int hardtarget)
        if (ship.shp_effic < 60)
            continue;
 
-       if (getvec(VT_ITEM, vec, (caddr_t)&ship, EF_SHIP) < 0)
+       shell = ship.shp_item[I_SHELL];
+       if (ship.shp_item[I_MILIT] < 1) /* do we have mil? */
            continue;
-       if (vec[I_MILIT] < 1)   /* do we have mil? */
-           continue;
-       if (vec[I_SHELL] < 2) { /* do we need shells */
-           vec[I_SHELL] += supply_commod(ship.shp_own,
-                                         ship.shp_x, ship.shp_y,
-                                         I_SHELL, 2);
-           if (vec[I_SHELL] < 2)
+       if (shell < 2) {        /* do we need shells */
+           shell += supply_commod(ship.shp_own, ship.shp_x, ship.shp_y,
+                                  I_SHELL, 2);
+           if (shell < 2)
                continue;
        }
-       if (vec[I_GUN] < 1)     /* we need at least 1 gun */
+       if (ship.shp_item[I_GUN] < 1)   /* we need at least 1 gun */
            continue;
 
        /* now calculate the odds */
-       gun = ((double)min(vec[I_GUN], ship.shp_glim));
+       gun = min(ship.shp_item[I_GUN], ship.shp_glim);
        eff = (double)ship.shp_effic / 100.0;
        teff =
            (((double)ship.shp_tech) / (((double)ship.shp_tech) + 200.0));
@@ -977,7 +975,7 @@ shp_missile_defense(coord dx, coord dy, natid bombown, int hardtarget)
            ship.shp_uid);
        mpr(ship.shp_own, "%d%% hitchance...", hitchance);
        /* use ammo */
-       ship.shp_item[I_SHELL] = vec[I_SHELL] - 2;
+       ship.shp_item[I_SHELL] = shell - 2;
        putship(ship.shp_uid, &ship);
 
        if (roll(100) <= hitchance) {