]> git.pond.sub.org Git - empserver/commitdiff
Fix a bug in attack that could wipe out land unit updates
authorMarkus Armbruster <armbru@pond.sub.org>
Sun, 8 Mar 2009 10:54:04 +0000 (11:54 +0100)
committerMarkus Armbruster <armbru@pond.sub.org>
Sun, 8 Mar 2009 10:54:04 +0000 (11:54 +0100)
A victorious attacker can move attacking land units into the newly
conquered sector or leave them behind.  Normally, the player is asked
what to do, but when the land unit's army has already been told to
stay behind, or the command has been aborted, the land unit stays
behind without asking.  In that case, a copy of the land unit made
right after the victory was written back.  Any updates since the
victory were wiped out, triggering a seqno mismatch oops.

Fix by moving the re-read of the land unit in ask_move_in() out of the
prompt conditional.

src/lib/subs/attsub.c

index ca868011337c89aec0ff5ff32090294d7888ee76..64b462bdca1d0e289dcce613eaa8ef661f51204d 100644 (file)
@@ -2288,9 +2288,9 @@ ask_move_in(struct combat *off, struct emp_qelem *olist,
            *answerp = 'N';
        if (*answerp == 'Y')
            continue;
+       if (!get_land(A_ATTACK, def, llp->unit.land.lnd_uid, llp, 0))
+           continue;
        if (*answerp != 'N') {
-           if (!get_land(A_ATTACK, def, llp->unit.land.lnd_uid, llp, 0))
-               continue;
            sprintf(prompt, "Move in with %s (%c %d%%) [ynYNq?] ",
                    prland(&llp->unit.land),
                    llp->unit.land.lnd_army ? llp->unit.land.lnd_army : '~',