Fix interdiction not to wipe out target ship updates
Ships can expend shells to defend against missiles, in
shp_missile_defense(). Any shell use by the target ship got wiped out
when shp_missile_interdiction() wrote back the target ship, triggering
a seqno mismatch oops.
Ships get updated when they launch planes to intercept interdicting
planes, in mission_pln_equip(). Any petrol use by the target ship got
wiped out when shp_mission_interdiction() wrote back the target ship,
triggering a seqno mismatch oops.
Fix by re-reading the target ship in shp_damage_one(). This also
affects shp_fort_interdiction(), where it is not necessary. A bit
inefficient, but let's keep this fix simple.
(cherry picked from commit 1d4fea32b8
)
This commit is contained in:
parent
03a9ab2cf6
commit
e0b21266ce
1 changed files with 2 additions and 0 deletions
|
@ -354,6 +354,8 @@ shp_count(struct emp_qelem *list, int wantflags, int nowantflags,
|
|||
static void
|
||||
shp_damage_one(struct ulist *mlp, int dam)
|
||||
{
|
||||
/* ship might have changed (launched interceptors, missile defense) */
|
||||
getship(mlp->unit.ship.shp_uid, &mlp->unit.ship);
|
||||
shipdamage(&mlp->unit.ship, dam);
|
||||
putship(mlp->unit.ship.shp_uid, &mlp->unit.ship);
|
||||
if (!mlp->unit.ship.shp_own) {
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue