From 93d033cff4e961c2d9abbd991f103ae59682dba7 Mon Sep 17 00:00:00 2001 From: Markus Armbruster Date: Thu, 13 May 2010 20:12:19 +0200 Subject: [PATCH] Don't let embarked land units fight a che revolt When take_casualties() kills a land unit, it neglects to take it off its carrier. This triggers an oops in unit_cargo_init(). Instead of fixing this, just don't let them fight. They can't defend against other attacks, either. --- src/lib/update/revolt.c | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/src/lib/update/revolt.c b/src/lib/update/revolt.c index f8aef8dc0..dfc9029e1 100644 --- a/src/lib/update/revolt.c +++ b/src/lib/update/revolt.c @@ -164,6 +164,8 @@ guerrilla(struct sctstr *sp) while (NULL != (lp = nxtitemp(&ni))) { if (lp->lnd_own != sp->sct_own) continue; + if (lp->lnd_ship >= 0 || lp->lnd_land >= 0) + continue; mil += lp->lnd_item[I_MILIT]; @@ -441,6 +443,8 @@ take_casualties(struct sctstr *sp, int mc) while (NULL != (lp = nxtitemp(&ni))) { if (lp->lnd_own != sp->sct_own) continue; + if (lp->lnd_ship >= 0 || lp->lnd_land >= 0) + continue; nunits++; if (lchr[(int)lp->lnd_type].l_flags & L_SECURITY) nunits++; @@ -456,6 +460,8 @@ take_casualties(struct sctstr *sp, int mc) while (NULL != (lp = nxtitemp(&ni))) { if (lp->lnd_own != sp->sct_own) continue; + if (lp->lnd_ship >= 0 || lp->lnd_land >= 0) + continue; if (!(lchr[(int)lp->lnd_type].l_flags & L_SECURITY)) continue; @@ -483,6 +489,8 @@ take_casualties(struct sctstr *sp, int mc) while (NULL != (lp = nxtitemp(&ni))) { if (lp->lnd_own != sp->sct_own) continue; + if (lp->lnd_ship >= 0 || lp->lnd_land >= 0) + continue; if (lchr[(int)lp->lnd_type].l_flags & L_SECURITY) continue; @@ -511,6 +519,8 @@ take_casualties(struct sctstr *sp, int mc) while (NULL != (lp = nxtitemp(&ni))) { if (lp->lnd_own != sp->sct_own) continue; + if (lp->lnd_ship >= 0 || lp->lnd_land >= 0) + continue; if (lchr[(int)lp->lnd_type].l_flags & L_SECURITY) continue; @@ -531,6 +541,8 @@ take_casualties(struct sctstr *sp, int mc) while (NULL != (lp = nxtitemp(&ni))) { if (lp->lnd_own != sp->sct_own) continue; + if (lp->lnd_ship >= 0 || lp->lnd_land >= 0) + continue; if (!(lchr[(int)lp->lnd_type].l_flags & L_SECURITY)) continue; -- 2.43.0