From: Markus Armbruster Date: Thu, 13 May 2010 18:12:19 +0000 (+0200) Subject: Don't let embarked land units fight a che revolt X-Git-Tag: v4.3.26~7 X-Git-Url: http://git.pond.sub.org/?p=empserver;a=commitdiff_plain;h=93d033cff4e961c2d9abbd991f103ae59682dba7 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. --- 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;