From c4254764bf1563c4177c2fdef870de637baf6993 Mon Sep 17 00:00:00 2001 From: Markus Armbruster Date: Sun, 22 May 2011 12:40:07 +0200 Subject: [PATCH] Fix scuttle_it()'s "is a trade ship" sanity check Only trade ships can be auto-scuttled. orde() rejects scuttle orders for other ships. scuttle_it() double-checks, but gets the test wrong: it rejects only when opt_TRADESHIPS is enabled. Fix that. While there, make it oops on inadmissible ships. --- src/lib/update/nav_ship.c | 9 +++------ 1 file changed, 3 insertions(+), 6 deletions(-) diff --git a/src/lib/update/nav_ship.c b/src/lib/update/nav_ship.c index 9c1a7d520..20b8ba0bf 100644 --- a/src/lib/update/nav_ship.c +++ b/src/lib/update/nav_ship.c @@ -53,12 +53,9 @@ scuttle_it(struct shpstr *sp) sp->shp_x, sp->shp_y, sp->shp_uid); return; } - if (opt_TRADESHIPS) { - if (!(mchr[(int)sp->shp_type].m_flags & M_TRADE)) { - wu(0, sp->shp_own, "You can only autoscuttle trade ships!\n"); - return; - } - } + if (CANT_HAPPEN(!opt_TRADESHIPS + || !(mchr[sp->shp_type].m_flags & M_TRADE))) + return; if (!scuttle_tradeship(sp, 0)) { wu(0, sp->shp_own, "%s doesn't pay here! Not scuttled.\n", prship(sp)); -- 2.43.0