From: Markus Armbruster Date: Sun, 22 May 2011 10:40:07 +0000 (+0200) Subject: Fix scuttle_it()'s "is a trade ship" sanity check X-Git-Tag: v4.3.28~49 X-Git-Url: http://git.pond.sub.org/?p=empserver;a=commitdiff_plain;h=c4254764bf1563c4177c2fdef870de637baf6993 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. --- 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));