Revert "commands: Always put ship or land unit before retreating it"
This reverts commit f4d8d64bb3
.
Breaks retreat after ship got sunk by bombs or missile.
ship_bomb() and launch_missile() pass .shp_own to retreat_ship().
Wrong after putship(), because putship() resets the owner when the
ship got sunk. retreat_ship() then oopses and fails to retreat the
surviving members of the group.
Other callers save the owner before putting the ship, and pass that.
We could change these two to do the same. But since we're trying to
get a release out, simply revert the broken commit instead.
This commit is contained in:
parent
1c9fb831ed
commit
fff177be2f
4 changed files with 5 additions and 5 deletions
|
@ -480,11 +480,11 @@ ship_bomb(struct emp_qelem *list, struct sctstr *target)
|
|||
pr("%s at %s sunk!\n",
|
||||
prship(&ship),
|
||||
xyas(target->sct_x, target->sct_y, player->cnum));
|
||||
putship(ship.shp_uid, &ship);
|
||||
if (dam && (ship.shp_rflags & RET_INJURED))
|
||||
retreat_ship(&ship, ship.shp_own, 'i');
|
||||
else if (ship.shp_rflags & RET_BOMBED)
|
||||
retreat_ship(&ship, ship.shp_own, 'b');
|
||||
putship(ship.shp_uid, &ship);
|
||||
collateral_damage(target->sct_x, target->sct_y, dam / 2);
|
||||
}
|
||||
out:
|
||||
|
@ -670,12 +670,12 @@ land_bomb(struct emp_qelem *list, struct sctstr *target)
|
|||
cname(player->cnum), dam, prland(&land),
|
||||
xyas(target->sct_x, target->sct_y, own));
|
||||
landdamage(&land, dam);
|
||||
putland(land.lnd_uid, &land);
|
||||
if (dam && (land.lnd_rflags & RET_INJURED))
|
||||
retreat_land(&land, own, 'i');
|
||||
else if (land.lnd_rflags & RET_BOMBED)
|
||||
retreat_land(&land, own, 'b');
|
||||
nreport(player->cnum, N_UNIT_BOMB, own, 1);
|
||||
putland(land.lnd_uid, &land);
|
||||
collateral_damage(target->sct_x, target->sct_y, dam);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -276,9 +276,9 @@ launch_missile(struct plnstr *pp)
|
|||
shipdamage(&target_ship, dam);
|
||||
if (target_ship.shp_effic < SHIP_MINEFF)
|
||||
pr("%s sunk!\n", prship(&target_ship));
|
||||
putship(target_ship.shp_uid, &target_ship);
|
||||
if (dam && (target_ship.shp_rflags & RET_INJURED))
|
||||
retreat_ship(&target_ship, target_ship.shp_own, 'i');
|
||||
putship(target_ship.shp_uid, &target_ship);
|
||||
}
|
||||
return RET_OK;
|
||||
}
|
||||
|
|
|
@ -397,13 +397,13 @@ multifire(void)
|
|||
shipdamage(&vship, dam);
|
||||
if (vship.shp_effic < SHIP_MINEFF)
|
||||
pr("%s sunk!\n", prsub(&vship));
|
||||
putship(vship.shp_uid, &vship);
|
||||
if (dam && (vship.shp_rflags & RET_INJURED))
|
||||
retreat_ship(&vship, vict, 'i');
|
||||
else if (target == targ_sub && (vship.shp_rflags & RET_DCHRGED))
|
||||
retreat_ship(&vship, vict, 'd');
|
||||
else if (totaldefdam == 0 && (vship.shp_rflags & RET_HELPLESS))
|
||||
retreat_ship(&vship, vict, 'h');
|
||||
putship(vship.shp_uid, &vship);
|
||||
break;
|
||||
}
|
||||
switch (attgp->ef_type) {
|
||||
|
|
|
@ -190,9 +190,9 @@ torp(void)
|
|||
shipdamage(&vship, dam);
|
||||
if (vship.shp_effic < SHIP_MINEFF)
|
||||
pr("%s sunk!\n", prsub(&vship));
|
||||
putship(vship.shp_uid, &vship);
|
||||
if (vship.shp_rflags & RET_TORPED)
|
||||
retreat_ship(&vship, vshipown, 't');
|
||||
putship(vship.shp_uid, &vship);
|
||||
} else {
|
||||
pr("Missed\n");
|
||||
if (vshipown != 0 && vshipown != player->cnum)
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue