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 <armbru@pond.sub.org>
This commit is contained in:
Markus Armbruster 2016-07-23 10:09:46 +02:00
parent 25c96cc3ac
commit 0c6d1e422e

View 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;
}