diff --git a/include/retreat.h b/include/retreat.h index f5c86ba2..29adaaab 100644 --- a/include/retreat.h +++ b/include/retreat.h @@ -50,7 +50,5 @@ extern void retreat_ship(struct shpstr *, char); extern void retreat_land(struct lndstr *, char); -extern int check_retreat_and_do_shipdamage(struct shpstr *, int); -extern int check_retreat_and_do_landdamage(struct lndstr *, int); #endif diff --git a/src/lib/commands/bomb.c b/src/lib/commands/bomb.c index 9764e96d..b90f3acf 100644 --- a/src/lib/commands/bomb.c +++ b/src/lib/commands/bomb.c @@ -30,7 +30,7 @@ * Dave Pare, 1986 * Ken Stevens, 1995 * Steve McClure, 1998-2000 - * Markus Armbruster, 2004-2012 + * Markus Armbruster, 2004-2015 */ #include @@ -476,17 +476,16 @@ ship_bomb(struct emp_qelem *list, struct sctstr *target) xyas(target->sct_x, target->sct_y, ship.shp_own)); } pr("\n"); - check_retreat_and_do_shipdamage(&ship, dam); - if (ship.shp_rflags & RET_BOMBED) - if (((ship.shp_rflags & RET_INJURED) == 0) || !dam) - retreat_ship(&ship, 'b'); - putship(ship.shp_uid, &ship); - getship(ship.shp_uid, &ship); - if (!ship.shp_own) { + shipdamage(&ship, dam); + if (ship.shp_effic < SHIP_MINEFF) pr("%s at %s sunk!\n", prship(&ship), xyas(target->sct_x, target->sct_y, player->cnum)); - } + if (dam && (ship.shp_rflags & RET_INJURED)) + retreat_ship(&ship, 'i'); + else if (ship.shp_rflags & RET_BOMBED) + retreat_ship(&ship, 'b'); + putship(ship.shp_uid, &ship); collateral_damage(target->sct_x, target->sct_y, dam / 2); } out: @@ -678,11 +677,11 @@ land_bomb(struct emp_qelem *list, struct sctstr *target) own = land.lnd_own; mpr(own, "%s pinpoint bombing raid did %d damage to %s\n", cname(player->cnum), dam, prland(&land)); - check_retreat_and_do_landdamage(&land, dam); - - if (land.lnd_rflags & RET_BOMBED) - if (((land.lnd_rflags & RET_INJURED) == 0) || !dam) - retreat_land(&land, 'b'); + landdamage(&land, dam); + if (dam && (land.lnd_rflags & RET_INJURED)) + retreat_land(&land, 'i'); + else if (land.lnd_rflags & RET_BOMBED) + retreat_land(&land, '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 840a2905..4f1f1f8a 100644 --- a/src/lib/commands/laun.c +++ b/src/lib/commands/laun.c @@ -30,7 +30,7 @@ * Dave Pare, 1986 * Ken Stevens, 1995 * Steve McClure, 1998-2000 - * Markus Armbruster, 2005-2012 + * Markus Armbruster, 2005-2015 */ #include @@ -273,11 +273,12 @@ launch_missile(struct plnstr *pp) return RET_OK; } dam = pln_damage(pp, 'p', 1); - check_retreat_and_do_shipdamage(&target_ship, dam); - putship(target_ship.shp_uid, &target_ship); - getship(target_ship.shp_uid, &target_ship); - if (!target_ship.shp_own) + shipdamage(&target_ship, dam); + if (target_ship.shp_effic < SHIP_MINEFF) pr("%s sunk!\n", prship(&target_ship)); + if (dam && (target_ship.shp_rflags & RET_INJURED)) + retreat_ship(&target_ship, '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 e3bc0057..c997e7dd 100644 --- a/src/lib/commands/mfir.c +++ b/src/lib/commands/mfir.c @@ -28,7 +28,7 @@ * * Known contributors to this file: * Steve McClure, 2000 - * Markus Armbruster, 2004-2014 + * Markus Armbruster, 2004-2015 */ #include @@ -423,16 +423,14 @@ multifire(void) break; default: getship(vshipno, &vship); - check_retreat_and_do_shipdamage(&vship, dam); + shipdamage(&vship, dam); if (vship.shp_effic < SHIP_MINEFF) pr("%s sunk!\n", prsub(&vship)); - else if (target == targ_sub - && (vship.shp_rflags & RET_DCHRGED) - && !(vship.shp_rflags & RET_INJURED)) + if (dam && (vship.shp_rflags & RET_INJURED)) + retreat_ship(&vship, 'i'); + else if (target == targ_sub && (vship.shp_rflags & RET_DCHRGED)) retreat_ship(&vship, 'd'); - else if (totaldefdam == 0 - && (vship.shp_rflags & RET_HELPLESS) - && !(vship.shp_rflags & RET_INJURED)) + else if (totaldefdam == 0 && (vship.shp_rflags & RET_HELPLESS)) retreat_ship(&vship, 'h'); putship(vship.shp_uid, &vship); break; diff --git a/src/lib/commands/torp.c b/src/lib/commands/torp.c index b09faaf2..d49dda55 100644 --- a/src/lib/commands/torp.c +++ b/src/lib/commands/torp.c @@ -178,13 +178,12 @@ torp(void) wu(0, vshipown, "%s in %s torpedoed %s for %d damage.\n", prsub(&sub), xyas(sub.shp_x, sub.shp_y, vshipown), prship(&vship), dam); - shipdamage(&vship, dam); - if (vship.shp_rflags & RET_TORPED) - retreat_ship(&vship, 't'); pr("Torpedo hit %s for %d damage.\n", prship(&vship), dam); - + shipdamage(&vship, dam); if (vship.shp_effic < SHIP_MINEFF) pr("%s sunk!\n", prship(&vship)); + if (vship.shp_rflags & RET_TORPED) + retreat_ship(&vship, 't'); putship(vship.shp_uid, &vship); if (mchr[(int)sub.shp_type].m_flags & M_SUB) nreport(vshipown, N_TORP_SHIP, 0, 1); diff --git a/src/lib/subs/retreat.c b/src/lib/subs/retreat.c index f51137ba..98b9a8e0 100644 --- a/src/lib/subs/retreat.c +++ b/src/lib/subs/retreat.c @@ -78,19 +78,6 @@ static struct ccode conditions[] = { { 0, { "panicked", "panicked"} } }; -int -check_retreat_and_do_shipdamage(struct shpstr *sp, int dam) -{ - if (dam <= 0) - return 0; - - shipdamage(sp, dam); - if (sp->shp_rflags & RET_INJURED) - retreat_ship(sp, 'i'); - - return 1; -} - void retreat_ship(struct shpstr *sp, char code) { @@ -281,19 +268,6 @@ findcondition(char code) return i; } -int -check_retreat_and_do_landdamage(struct lndstr *lp, int dam) -{ - if (dam <= 0) - return 0; - - landdamage(lp, dam); - if (lp->lnd_rflags & RET_INJURED) - retreat_land(lp, 'i'); - - return 1; -} - void retreat_land(struct lndstr *lp, char code) {