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.
This commit is contained in:
parent
10f5000aa1
commit
93d033cff4
1 changed files with 12 additions and 0 deletions
|
@ -164,6 +164,8 @@ guerrilla(struct sctstr *sp)
|
||||||
while (NULL != (lp = nxtitemp(&ni))) {
|
while (NULL != (lp = nxtitemp(&ni))) {
|
||||||
if (lp->lnd_own != sp->sct_own)
|
if (lp->lnd_own != sp->sct_own)
|
||||||
continue;
|
continue;
|
||||||
|
if (lp->lnd_ship >= 0 || lp->lnd_land >= 0)
|
||||||
|
continue;
|
||||||
|
|
||||||
mil += lp->lnd_item[I_MILIT];
|
mil += lp->lnd_item[I_MILIT];
|
||||||
|
|
||||||
|
@ -441,6 +443,8 @@ take_casualties(struct sctstr *sp, int mc)
|
||||||
while (NULL != (lp = nxtitemp(&ni))) {
|
while (NULL != (lp = nxtitemp(&ni))) {
|
||||||
if (lp->lnd_own != sp->sct_own)
|
if (lp->lnd_own != sp->sct_own)
|
||||||
continue;
|
continue;
|
||||||
|
if (lp->lnd_ship >= 0 || lp->lnd_land >= 0)
|
||||||
|
continue;
|
||||||
nunits++;
|
nunits++;
|
||||||
if (lchr[(int)lp->lnd_type].l_flags & L_SECURITY)
|
if (lchr[(int)lp->lnd_type].l_flags & L_SECURITY)
|
||||||
nunits++;
|
nunits++;
|
||||||
|
@ -456,6 +460,8 @@ take_casualties(struct sctstr *sp, int mc)
|
||||||
while (NULL != (lp = nxtitemp(&ni))) {
|
while (NULL != (lp = nxtitemp(&ni))) {
|
||||||
if (lp->lnd_own != sp->sct_own)
|
if (lp->lnd_own != sp->sct_own)
|
||||||
continue;
|
continue;
|
||||||
|
if (lp->lnd_ship >= 0 || lp->lnd_land >= 0)
|
||||||
|
continue;
|
||||||
if (!(lchr[(int)lp->lnd_type].l_flags & L_SECURITY))
|
if (!(lchr[(int)lp->lnd_type].l_flags & L_SECURITY))
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
|
@ -483,6 +489,8 @@ take_casualties(struct sctstr *sp, int mc)
|
||||||
while (NULL != (lp = nxtitemp(&ni))) {
|
while (NULL != (lp = nxtitemp(&ni))) {
|
||||||
if (lp->lnd_own != sp->sct_own)
|
if (lp->lnd_own != sp->sct_own)
|
||||||
continue;
|
continue;
|
||||||
|
if (lp->lnd_ship >= 0 || lp->lnd_land >= 0)
|
||||||
|
continue;
|
||||||
if (lchr[(int)lp->lnd_type].l_flags & L_SECURITY)
|
if (lchr[(int)lp->lnd_type].l_flags & L_SECURITY)
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
|
@ -511,6 +519,8 @@ take_casualties(struct sctstr *sp, int mc)
|
||||||
while (NULL != (lp = nxtitemp(&ni))) {
|
while (NULL != (lp = nxtitemp(&ni))) {
|
||||||
if (lp->lnd_own != sp->sct_own)
|
if (lp->lnd_own != sp->sct_own)
|
||||||
continue;
|
continue;
|
||||||
|
if (lp->lnd_ship >= 0 || lp->lnd_land >= 0)
|
||||||
|
continue;
|
||||||
if (lchr[(int)lp->lnd_type].l_flags & L_SECURITY)
|
if (lchr[(int)lp->lnd_type].l_flags & L_SECURITY)
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
|
@ -531,6 +541,8 @@ take_casualties(struct sctstr *sp, int mc)
|
||||||
while (NULL != (lp = nxtitemp(&ni))) {
|
while (NULL != (lp = nxtitemp(&ni))) {
|
||||||
if (lp->lnd_own != sp->sct_own)
|
if (lp->lnd_own != sp->sct_own)
|
||||||
continue;
|
continue;
|
||||||
|
if (lp->lnd_ship >= 0 || lp->lnd_land >= 0)
|
||||||
|
continue;
|
||||||
if (!(lchr[(int)lp->lnd_type].l_flags & L_SECURITY))
|
if (!(lchr[(int)lp->lnd_type].l_flags & L_SECURITY))
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue