Nuclear-tipped missile exploding on launch could not damage base
Commit a269cdd7
(v4.3.23) removed the nuclear damage. But it left the
nuke on the missile, which made pln_damage() oops and return zero
damage.
Fix by destroying the nuke separately.
This commit is contained in:
parent
3a9d27186c
commit
876f3424b0
2 changed files with 7 additions and 1 deletions
|
@ -59,6 +59,7 @@ msl_launch(struct plnstr *pp, int type, char *what, coord x, coord y,
|
||||||
natid victim, int *sublaunchp)
|
natid victim, int *sublaunchp)
|
||||||
{
|
{
|
||||||
struct shpstr ship;
|
struct shpstr ship;
|
||||||
|
struct nukstr nuke;
|
||||||
struct sctstr sect;
|
struct sctstr sect;
|
||||||
int sublaunch = 0;
|
int sublaunch = 0;
|
||||||
char *from;
|
char *from;
|
||||||
|
@ -93,6 +94,11 @@ msl_launch(struct plnstr *pp, int type, char *what, coord x, coord y,
|
||||||
if (chance((0.05 + (100 - pp->pln_effic) / 100.0)
|
if (chance((0.05 + (100 - pp->pln_effic) / 100.0)
|
||||||
* (1 - techfact(pp->pln_tech, 1.0)))) {
|
* (1 - techfact(pp->pln_tech, 1.0)))) {
|
||||||
mpr(pp->pln_own, "KABOOOOM! Missile explodes %s!\n", from);
|
mpr(pp->pln_own, "KABOOOOM! Missile explodes %s!\n", from);
|
||||||
|
if (getnuke(nuk_on_plane(pp), &nuke)) {
|
||||||
|
pr("%s lost!\n", prnuke(&nuke));
|
||||||
|
nuke.nuk_effic = 0;
|
||||||
|
putnuke(nuke.nuk_uid, &nuke);
|
||||||
|
}
|
||||||
if (chance(0.33)) {
|
if (chance(0.33)) {
|
||||||
dam = pln_damage(pp, 'p', 0) / 2;
|
dam = pln_damage(pp, 'p', 0) / 2;
|
||||||
if (pp->pln_ship >= 0) {
|
if (pp->pln_ship >= 0) {
|
||||||
|
|
|
@ -988,7 +988,7 @@ pln_damage(struct plnstr *pp, char type, int noisy)
|
||||||
int effective = 1;
|
int effective = 1;
|
||||||
int pinbomber = 0;
|
int pinbomber = 0;
|
||||||
|
|
||||||
if (CANT_HAPPEN(nuk_on_plane(pp) >= 0)) /* FIXME check uses! */
|
if (CANT_HAPPEN(nuk_on_plane(pp) >= 0))
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
load = pln_load(pp);
|
load = pln_load(pp);
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue