]> git.pond.sub.org Git - empserver/commitdiff
subs: Tighten the check for destroyed defending land unit
authorMarkus Armbruster <armbru@pond.sub.org>
Sat, 23 Jul 2016 08:09:46 +0000 (10:09 +0200)
committerMarkus Armbruster <armbru@pond.sub.org>
Sun, 6 Aug 2017 18:09:18 +0000 (20:09 +0200)
get_dland() tests efficiency to find out whether the defending land
unit is gone.  Doesn't work when somebody else has since built a new
one with the same UID.  Not sure that can happen.  Check for a change
of owner instead.  Matches get_oland().

Signed-off-by: Markus Armbruster <armbru@pond.sub.org>
src/lib/subs/attsub.c

index 14a3e616aac12191d4ea79cee22d760c45410e6f..e0c7498e55b0086ed79e03e2a30783974076175b 100644 (file)
@@ -29,7 +29,7 @@
  *  Known contributors to this file:
  *     Ken Stevens, 1995
  *     Steve McClure, 1996-2000
- *     Markus Armbruster, 2006-2015
+ *     Markus Armbruster, 2006-2016
  */
 
 #include <config.h>
@@ -1341,13 +1341,12 @@ static int
 get_dland(struct combat *def, struct ulist *llp)
 {
     struct lndstr *lp = &llp->unit.land;
-    char buf[512];
 
     getland(llp->unit.land.lnd_uid, lp);
 
-    if (lp->lnd_effic < LAND_MINEFF) {
-       sprintf(buf, "was destroyed and is no longer a part of the defense");
-       lnd_print(llp->unit.land.lnd_own, llp, buf);
+    if (lp->lnd_own != def->own) {
+       lnd_print(llp->unit.land.lnd_own, llp,
+                 "was destroyed and is no longer a part of the defense");
        lnd_put_one(llp);
        return 0;
     }