diff --git a/include/land.h b/include/land.h index 261f2f05..4dbc2d03 100644 --- a/include/land.h +++ b/include/land.h @@ -187,7 +187,8 @@ extern void lnd_takemob(struct emp_qelem *, double); extern int lnd_spyval(struct lndstr *); extern void intelligence_report(int, struct lndstr *, int, char *); extern void lnd_mar(struct emp_qelem *, double *, double *, int *, natid); -extern void lnd_put(struct emp_qelem *, natid); +extern void lnd_mar_put(struct emp_qelem *, natid); +extern void lnd_put(struct emp_qelem *); extern int lnd_hardtarget(struct lndstr *); extern int lnd_mar_one_sector(struct emp_qelem *, int, natid, int); extern int lnd_support(natid, natid, coord, coord, int); diff --git a/src/lib/subs/attsub.c b/src/lib/subs/attsub.c index d4405e2c..af3df3a6 100644 --- a/src/lib/subs/attsub.c +++ b/src/lib/subs/attsub.c @@ -1959,7 +1959,7 @@ att_fight(int combat_mode, struct combat *off, struct emp_qelem *olist, send_reacting_units_home(dlist); /* putland the defending land */ - lnd_put(dlist, 0); + lnd_put(dlist); /* putland the attacking land */ put_oland(olist); @@ -2340,7 +2340,7 @@ move_in_land(int combat_mode, struct combat *off, struct emp_qelem *olist, } if (QEMPTY(olist)) return; - lnd_put(olist, 0); + lnd_put(olist); } /* diff --git a/src/lib/subs/lndsub.c b/src/lib/subs/lndsub.c index 66cae1ad..9183d0aa 100644 --- a/src/lib/subs/lndsub.c +++ b/src/lib/subs/lndsub.c @@ -532,7 +532,7 @@ lnd_mar(struct emp_qelem *list, double *minmobp, double *maxmobp, } void -lnd_put(struct emp_qelem *list, natid actor) +lnd_mar_put(struct emp_qelem *list, natid actor) { struct emp_qelem *qp, *next; struct ulist *llp; @@ -542,19 +542,32 @@ lnd_put(struct emp_qelem *list, natid actor) next = qp->q_back; llp = (struct ulist *)qp; lp = &llp->unit.land; - if (actor) { - mpr(actor, "%s stopped at %s\n", - prland(lp), xyas(lp->lnd_x, lp->lnd_y, actor)); - if (llp->mobil < -127) - llp->mobil = -127; - lp->lnd_mobil = llp->mobil; - } + mpr(actor, "%s stopped at %s\n", + prland(lp), xyas(lp->lnd_x, lp->lnd_y, actor)); + if (llp->mobil < -127) + llp->mobil = -127; + lp->lnd_mobil = llp->mobil; putland(lp->lnd_uid, lp); emp_remque(qp); free(qp); } } +void +lnd_put(struct emp_qelem *list) +{ + struct emp_qelem *qp, *next; + struct ulist *llp; + + for (qp = list->q_back; qp != list; qp = next) { + next = qp->q_back; + llp = (struct ulist *)qp; + putland(llp->unit.land.lnd_uid, &llp->unit.land); + emp_remque(qp); + free(qp); + } +} + /* * Sweep landmines with engineers in LAND_LIST for ACTOR. * If EXPLICIT is non-zero, this is for an explicit sweep command from @@ -951,7 +964,7 @@ lnd_mar_one_sector(struct emp_qelem *list, int dir, natid actor, int oldown; if (dir <= DIR_STOP || dir >= DIR_VIEW) { - lnd_put(list, actor); + lnd_mar_put(list, actor); return 1; } dx = diroff[dir][0];