buy: Fix bogus error when lot gets reused at the last prompt
authorMarkus Armbruster <armbru@pond.sub.org>
Tue, 12 Jan 2021 20:42:42 +0000 (21:42 +0100)
committerMarkus Armbruster <armbru@pond.sub.org>
Sun, 17 Jan 2021 20:24:29 +0000 (21:24 +0100)
When the lot being bid for goes away and gets reused while the player
is at the prompt for the destination sector, comm.com_amount gets
stale.  We use it before we detect the change and fail the command
This can lead to a misleading ""You don't have that much to spend!"
error.  Messed up when the code was fixed to deal with lot changes in
4.0.2.

Fix by checking for lot change earlier.

Signed-off-by: Markus Armbruster <armbru@pond.sub.org>
src/lib/commands/buy.c

index 83b85d56d9a337ae750d97beb09be56edd6e749d..2ba7f3e53b01e4d130cc85853dbe4868fdbdea53 100644 (file)
@@ -141,6 +141,8 @@ buy(void)
        pr("Could not access sector");
        return RET_FAIL;
     }
+    if (!check_comm_ok(&comm))
+       return RET_FAIL;
     if ((sect.sct_type != SCT_WAREH && sect.sct_type != SCT_HARBR) ||
        sect.sct_own != player->cnum) {
        pr("The destination sector is not one of your warehouses.\n");
@@ -161,8 +163,6 @@ buy(void)
        pr("You don't have that much to spend!\n");
        return RET_FAIL;
     }
-    if (!check_comm_ok(&comm))
-       return RET_FAIL;
     if (bid > 0.04 + comm.com_price) {
        comm.com_price = bid;
        time(&now);