From 0c6d1e422e33f916e7be764dc9ed4e2f1f81e5fe Mon Sep 17 00:00:00 2001 From: Markus Armbruster Date: Sat, 23 Jul 2016 10:09:46 +0200 Subject: [PATCH] subs: Tighten the check for destroyed defending land unit 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 --- src/lib/subs/attsub.c | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/src/lib/subs/attsub.c b/src/lib/subs/attsub.c index 14a3e616..e0c7498e 100644 --- a/src/lib/subs/attsub.c +++ b/src/lib/subs/attsub.c @@ -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 @@ -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; }