From f4d8d64bb34dee75cb2485c130e125fdd3980c18 Mon Sep 17 00:00:00 2001 From: Markus Armbruster Date: Mon, 12 Jan 2015 22:19:32 +0100 Subject: [PATCH] commands: Always put ship or land unit before retreating it boar() puts before retreating, the other callers afterwards. Subtle difference, because putting resets the owner of the dead to POGO. Until the commit before previous, retreat didn't fully work after put. Now it does. The subtle difference between boar() and the other callers still exists. It's better to do it the same everywhere, as subtle differences invite bugs. Since changing boar() is not practical, change the others. Signed-off-by: Markus Armbruster --- src/lib/commands/bomb.c | 4 ++-- src/lib/commands/laun.c | 2 +- src/lib/commands/mfir.c | 2 +- src/lib/commands/torp.c | 2 +- 4 files changed, 5 insertions(+), 5 deletions(-) diff --git a/src/lib/commands/bomb.c b/src/lib/commands/bomb.c index 5e4888cd..38487f50 100644 --- a/src/lib/commands/bomb.c +++ b/src/lib/commands/bomb.c @@ -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); } } diff --git a/src/lib/commands/laun.c b/src/lib/commands/laun.c index 04900bac..21f4c244 100644 --- a/src/lib/commands/laun.c +++ b/src/lib/commands/laun.c @@ -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; } diff --git a/src/lib/commands/mfir.c b/src/lib/commands/mfir.c index a7e02db9..788ad2eb 100644 --- a/src/lib/commands/mfir.c +++ b/src/lib/commands/mfir.c @@ -426,13 +426,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) { diff --git a/src/lib/commands/torp.c b/src/lib/commands/torp.c index d945d180..79ca3eb4 100644 --- a/src/lib/commands/torp.c +++ b/src/lib/commands/torp.c @@ -188,9 +188,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)