diff --git a/include/prototypes.h b/include/prototypes.h index e241f6de..30679173 100644 --- a/include/prototypes.h +++ b/include/prototypes.h @@ -656,7 +656,7 @@ extern void show_news(int); /* shpsub.c */ extern void shp_sel(struct nstr_item *, struct emp_qelem *); extern void shp_nav(struct emp_qelem *, double *, double *, int *, natid); -extern int shp_sweep(struct emp_qelem *, int, natid); +extern int shp_sweep(struct emp_qelem *, int, int, natid); extern char *shp_path(int, struct shpstr *, char *); extern void shp_put(struct emp_qelem *, natid); extern void shp_list(struct emp_qelem *); diff --git a/src/lib/commands/navi.c b/src/lib/commands/navi.c index 266f9733..793c3bd6 100644 --- a/src/lib/commands/navi.c +++ b/src/lib/commands/navi.c @@ -156,7 +156,7 @@ navi(void) } else if (cp[-1] == 'i') { shp_list(&ship_list); } else { - stopping |= shp_sweep(&ship_list, 1, player->cnum); + stopping |= shp_sweep(&ship_list, 1, 0, player->cnum); } continue; } else if (*cp == 'r' || *cp == 'l' || *cp == 's') { diff --git a/src/lib/subs/shpsub.c b/src/lib/subs/shpsub.c index 77f33d73..8cb234a4 100644 --- a/src/lib/subs/shpsub.c +++ b/src/lib/subs/shpsub.c @@ -210,7 +210,7 @@ shp_put(struct emp_qelem *list, natid actor) } int -shp_sweep(struct emp_qelem *ship_list, int verbose, natid actor) +shp_sweep(struct emp_qelem *ship_list, int verbose, int takemob, natid actor) { struct emp_qelem *qp; struct emp_qelem *next; @@ -229,7 +229,7 @@ shp_sweep(struct emp_qelem *ship_list, int verbose, natid actor) prship(&mlp->ship)); continue; } - if (mlp->mobil <= 0.0) { + if (takemob && mlp->mobil <= 0.0) { if (verbose) mpr(actor, "%s is out of mobility!\n", prship(&mlp->ship)); continue; @@ -241,8 +241,10 @@ shp_sweep(struct emp_qelem *ship_list, int verbose, natid actor) prship(&mlp->ship)); continue; } - mlp->mobil -= shp_mobcost(&mlp->ship); - mlp->ship.shp_mobil = (int)mlp->mobil; + if (takemob) { + mlp->mobil -= shp_mobcost(&mlp->ship); + mlp->ship.shp_mobil = (int)mlp->mobil; + } putship(mlp->ship.shp_uid, &mlp->ship); if (!(mines = sect.sct_mines)) continue; @@ -877,7 +879,7 @@ shp_nav_one_sector(struct emp_qelem *list, int dir, natid actor, } if (QEMPTY(list)) return stopping; - stopping |= shp_sweep(list, 0, actor); + stopping |= shp_sweep(list, 0, 0, actor); if (QEMPTY(list)) return stopping; stopping |= shp_check_mines(list);