(shp_sweep): New parameter takemob. Charge mobility only if it's
true. (shp_nav_one_sector): Pass false. This lets minesweepers move at the speed their stats indicate. Closes #1498801. (navi): Pass true. This ensures sweeping without moving still costs mobility.
This commit is contained in:
parent
0252d4a750
commit
f900ac68cb
3 changed files with 9 additions and 7 deletions
|
@ -656,7 +656,7 @@ extern void show_news(int);
|
||||||
/* shpsub.c */
|
/* shpsub.c */
|
||||||
extern void shp_sel(struct nstr_item *, struct emp_qelem *);
|
extern void shp_sel(struct nstr_item *, struct emp_qelem *);
|
||||||
extern void shp_nav(struct emp_qelem *, double *, double *, int *, natid);
|
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 char *shp_path(int, struct shpstr *, char *);
|
||||||
extern void shp_put(struct emp_qelem *, natid);
|
extern void shp_put(struct emp_qelem *, natid);
|
||||||
extern void shp_list(struct emp_qelem *);
|
extern void shp_list(struct emp_qelem *);
|
||||||
|
|
|
@ -156,7 +156,7 @@ navi(void)
|
||||||
} else if (cp[-1] == 'i') {
|
} else if (cp[-1] == 'i') {
|
||||||
shp_list(&ship_list);
|
shp_list(&ship_list);
|
||||||
} else {
|
} else {
|
||||||
stopping |= shp_sweep(&ship_list, 1, player->cnum);
|
stopping |= shp_sweep(&ship_list, 1, 0, player->cnum);
|
||||||
}
|
}
|
||||||
continue;
|
continue;
|
||||||
} else if (*cp == 'r' || *cp == 'l' || *cp == 's') {
|
} else if (*cp == 'r' || *cp == 'l' || *cp == 's') {
|
||||||
|
|
|
@ -210,7 +210,7 @@ shp_put(struct emp_qelem *list, natid actor)
|
||||||
}
|
}
|
||||||
|
|
||||||
int
|
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 *qp;
|
||||||
struct emp_qelem *next;
|
struct emp_qelem *next;
|
||||||
|
@ -229,7 +229,7 @@ shp_sweep(struct emp_qelem *ship_list, int verbose, natid actor)
|
||||||
prship(&mlp->ship));
|
prship(&mlp->ship));
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
if (mlp->mobil <= 0.0) {
|
if (takemob && mlp->mobil <= 0.0) {
|
||||||
if (verbose)
|
if (verbose)
|
||||||
mpr(actor, "%s is out of mobility!\n", prship(&mlp->ship));
|
mpr(actor, "%s is out of mobility!\n", prship(&mlp->ship));
|
||||||
continue;
|
continue;
|
||||||
|
@ -241,8 +241,10 @@ shp_sweep(struct emp_qelem *ship_list, int verbose, natid actor)
|
||||||
prship(&mlp->ship));
|
prship(&mlp->ship));
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
if (takemob) {
|
||||||
mlp->mobil -= shp_mobcost(&mlp->ship);
|
mlp->mobil -= shp_mobcost(&mlp->ship);
|
||||||
mlp->ship.shp_mobil = (int)mlp->mobil;
|
mlp->ship.shp_mobil = (int)mlp->mobil;
|
||||||
|
}
|
||||||
putship(mlp->ship.shp_uid, &mlp->ship);
|
putship(mlp->ship.shp_uid, &mlp->ship);
|
||||||
if (!(mines = sect.sct_mines))
|
if (!(mines = sect.sct_mines))
|
||||||
continue;
|
continue;
|
||||||
|
@ -877,7 +879,7 @@ shp_nav_one_sector(struct emp_qelem *list, int dir, natid actor,
|
||||||
}
|
}
|
||||||
if (QEMPTY(list))
|
if (QEMPTY(list))
|
||||||
return stopping;
|
return stopping;
|
||||||
stopping |= shp_sweep(list, 0, actor);
|
stopping |= shp_sweep(list, 0, 0, actor);
|
||||||
if (QEMPTY(list))
|
if (QEMPTY(list))
|
||||||
return stopping;
|
return stopping;
|
||||||
stopping |= shp_check_mines(list);
|
stopping |= shp_check_mines(list);
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue