diff --git a/src/lib/common/cargo.c b/src/lib/common/cargo.c index 59ccf84b..d0c84d72 100644 --- a/src/lib/common/cargo.c +++ b/src/lib/common/cargo.c @@ -241,24 +241,33 @@ unit_cargo_init(void) unit_onresize(i); for (i = 0; (pp = getplanep(i)); i++) { - if (!pp->pln_own) + if (!pp->pln_own) { + if (CANT_HAPPEN(pp->pln_ship >= 0 || pp->pln_land >= 0)) + pp->pln_ship = pp->pln_land = -1; continue; + } if (CANT_HAPPEN(pp->pln_ship >= 0 && pp->pln_land >= 0)) pp->pln_land = -1; pln_carrier_change(pp, EF_SHIP, -1, pp->pln_ship); pln_carrier_change(pp, EF_LAND, -1, pp->pln_land); } for (i = 0; (lp = getlandp(i)); i++) { - if (!lp->lnd_own) + if (!lp->lnd_own) { + if (CANT_HAPPEN(lp->lnd_ship >= 0 || lp->lnd_land >= 0)) + lp->lnd_ship = lp->lnd_land = -1; continue; + } if (CANT_HAPPEN(lp->lnd_ship >= 0 && lp->lnd_land >= 0)) lp->lnd_land = -1; lnd_carrier_change(lp, EF_SHIP, -1, lp->lnd_ship); lnd_carrier_change(lp, EF_LAND, -1, lp->lnd_land); } for (i = 0; (np = getnukep(i)); i++) { - if (!np->nuk_own) + if (!np->nuk_own) { + if (CANT_HAPPEN(np->nuk_plane >= 0)) + np->nuk_plane = -1; continue; + } nuk_carrier_change(np, EF_PLANE, -1, np->nuk_plane); } } diff --git a/src/lib/update/land.c b/src/lib/update/land.c index 81ca77d3..41cc5682 100644 --- a/src/lib/update/land.c +++ b/src/lib/update/land.c @@ -125,6 +125,7 @@ upd_land(struct lndstr *lp, int etus, makelost(EF_LAND, lp->lnd_own, lp->lnd_uid, lp->lnd_x, lp->lnd_y); lp->lnd_own = 0; + lp->lnd_ship = lp->lnd_land = -1; return; } wu(0, lp->lnd_own, diff --git a/src/lib/update/plane.c b/src/lib/update/plane.c index f764f17c..dea614c0 100644 --- a/src/lib/update/plane.c +++ b/src/lib/update/plane.c @@ -110,6 +110,7 @@ upd_plane(struct plnstr *pp, int etus, makelost(EF_PLANE, pp->pln_own, pp->pln_uid, pp->pln_x, pp->pln_y); pp->pln_own = 0; + pp->pln_ship = pp->pln_land = -1; return; } wu(0, pp->pln_own,