Replace laun()'s base checking code by pln_airbase_ok()
This outlaws launch from unowned sectors. Also, non-VTOL missiles require an efficient airfield now, except that such missiles don't exist currently, because init_plchr() makes all missiles VTOL.
This commit is contained in:
parent
9e90aa173a
commit
52b303498e
1 changed files with 9 additions and 35 deletions
|
@ -57,11 +57,9 @@ laun(void)
|
||||||
struct nstr_item nstr;
|
struct nstr_item nstr;
|
||||||
struct plnstr plane;
|
struct plnstr plane;
|
||||||
struct shpstr ship;
|
struct shpstr ship;
|
||||||
struct sctstr sect;
|
|
||||||
int sublaunch;
|
int sublaunch;
|
||||||
struct plchrstr *pcp;
|
struct plchrstr *pcp;
|
||||||
int rel, retval, gone;
|
int retval, gone;
|
||||||
struct natstr *natp;
|
|
||||||
|
|
||||||
if (!snxtitem(&nstr, EF_PLANE, player->argp[1]))
|
if (!snxtitem(&nstr, EF_PLANE, player->argp[1]))
|
||||||
return RET_SYN;
|
return RET_SYN;
|
||||||
|
@ -94,42 +92,18 @@ laun(void)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
sublaunch = 0;
|
|
||||||
if (plane.pln_ship >= 0) {
|
|
||||||
getship(plane.pln_ship, &ship);
|
|
||||||
if (!ship.shp_own) {
|
|
||||||
pr("%s: ship #%d was sunk!\n",
|
|
||||||
prplane(&plane), ship.shp_uid);
|
|
||||||
plane.pln_effic = 0;
|
|
||||||
putplane(plane.pln_uid, &plane);
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
natp = getnatp(ship.shp_own);
|
|
||||||
rel = getrel(natp, player->cnum);
|
|
||||||
if (ship.shp_own != player->cnum && rel != ALLIED) {
|
|
||||||
pr("%s: you or an ally do not own ship #%d\n",
|
|
||||||
prplane(&plane), ship.shp_uid);
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
if (mchr[(int)ship.shp_type].m_flags & M_SUB)
|
|
||||||
sublaunch = 1;
|
|
||||||
} else {
|
|
||||||
sublaunch = 0;
|
|
||||||
getsect(plane.pln_x, plane.pln_y, §);
|
|
||||||
natp = getnatp(sect.sct_own);
|
|
||||||
rel = getrel(natp, player->cnum);
|
|
||||||
if (sect.sct_own && sect.sct_own != player->cnum
|
|
||||||
&& rel != ALLIED) {
|
|
||||||
pr("%s: you or an ally do not own sector %s!\n",
|
|
||||||
prplane(&plane), xyas(plane.pln_x, plane.pln_y,
|
|
||||||
player->cnum));
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if (plane.pln_effic < 60) {
|
if (plane.pln_effic < 60) {
|
||||||
pr("%s is damaged (%d%%)\n", prplane(&plane), plane.pln_effic);
|
pr("%s is damaged (%d%%)\n", prplane(&plane), plane.pln_effic);
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
if (!pln_airbase_ok(&plane, 1, 1))
|
||||||
|
continue;
|
||||||
|
sublaunch = 0;
|
||||||
|
if (plane.pln_ship >= 0) {
|
||||||
|
getship(plane.pln_ship, &ship);
|
||||||
|
if (mchr[(int)ship.shp_type].m_flags & M_SUB)
|
||||||
|
sublaunch = 1;
|
||||||
|
}
|
||||||
pr("%s at %s; range %d, eff %d%%\n", prplane(&plane),
|
pr("%s at %s; range %d, eff %d%%\n", prplane(&plane),
|
||||||
xyas(plane.pln_x, plane.pln_y, player->cnum),
|
xyas(plane.pln_x, plane.pln_y, player->cnum),
|
||||||
plane.pln_range, plane.pln_effic);
|
plane.pln_range, plane.pln_effic);
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue