]> git.pond.sub.org Git - empserver/commitdiff
(use_supply): Fix the trickery designed to avoid resupply from itself.
authorMarkus Armbruster <armbru@pond.sub.org>
Fri, 5 Mar 2004 19:28:05 +0000 (19:28 +0000)
committerMarkus Armbruster <armbru@pond.sub.org>
Fri, 5 Mar 2004 19:28:05 +0000 (19:28 +0000)
Currently, use_supply() is only called for artillery, where the
trickery is not needed, so this fix isn't observable.  Not sure whether
it would be needed if use_supply() were called for supply units.

src/lib/subs/supply.c

index accba8a3aed36d410a8c890a2c4f824b282012e4..ef01471fc964bfa523c59e067e050e63eb4339f2 100644 (file)
@@ -603,6 +603,7 @@ use_supply(struct lndstr *lp)
     if (shells < shells_needed) {
        vec[I_SHELL] = 0;
        putvec(VT_ITEM, vec, (s_char *)lp, EF_LAND);
+       putland(lp->lnd_uid, lp);
        shells += supply_commod(lp->lnd_own, lp->lnd_x, lp->lnd_y, I_SHELL,
                                (shells_needed - shells));
        vec[I_SHELL] = shells;
@@ -611,7 +612,7 @@ use_supply(struct lndstr *lp)
     vec[I_SHELL] = max(vec[I_SHELL] - shells_needed, 0);
 
     if (lp->lnd_frg)           /* artillery */
-       goto artillery;
+       goto done;
 
     food_needed = get_minimum(lp, I_FOOD);
     food = vec[I_SHELL];
@@ -619,6 +620,7 @@ use_supply(struct lndstr *lp)
     if (food < food_needed) {
        vec[I_FOOD] = 0;
        putvec(VT_ITEM, vec, (s_char *)lp, EF_LAND);
+       putland(lp->lnd_uid, lp);
        food += supply_commod(lp->lnd_own, lp->lnd_x, lp->lnd_y, I_FOOD,
                              (food_needed - food));
        vec[I_FOOD] = food;
@@ -641,6 +643,7 @@ use_supply(struct lndstr *lp)
        if (petrol < petrol_needed) {
            vec[I_PETROL] = 0;
            putvec(VT_ITEM, vec, (s_char *)lp, EF_LAND);
+           putland(lp->lnd_uid, lp);
            petrol += supply_commod(lp->lnd_own,
                                    lp->lnd_x, lp->lnd_y,
                                    I_PETROL, (petrol_needed - petrol));
@@ -660,7 +663,7 @@ use_supply(struct lndstr *lp)
        lp->lnd_fuel = max(lp->lnd_fuel - fuel_needed, 0);
     }
     /* end opt_FUEL */
-  artillery:
+  done:
     putvec(VT_ITEM, vec, (s_char *)lp, EF_LAND);
     putland(lp->lnd_uid, lp);
     return 1;