Allow Distrans between completed auction bids
Verify and publish checkpoint container / container (push) Successful in 10m44s

This commit is contained in:
Quintine committed 2026-10-29 10:34:00 +11:00
1 parent ab7a947833
commit ccc4c7bb40
16 files changed
+250 -80

No files matched your search

+13 -1
View File
@@ -5476,6 +5476,18 @@ function distransBlock(g: Game, owner: Player, card: Card): string | null {
if (promised) return promised;
const reserved = transferCardBlock(g, owner, card);
if (reserved) return reserved;
// A started lot is only open between complete actions, not while a bid or
// its resulting interaction is still waiting for a decision.
const special = g.richeseAuction;
const started = !g.currentAuctionSale && (g.auction
? g.auction.bid > 0 || g.auction.passed.length > 0
: !!special && (special.bid > 0 || special.passed.length > 0 ||
special.acted.length > 0 || Object.keys(special.sealed).length > 0));
if (started && (g.response || g.decision || g.pendingKarama || g.phaseOpening || g.pendingTreacheryDiscard))
return 'Finish the pending auction interaction before playing Distrans.';
// A special-lot Semuta continuation still needs an auction-bound resume.
if (started && special && (g.semutaPreview || g.semutaAdvancedOrdinaryPreview || g.semutaRecruitsPreview))
return 'Distrans between special-auction bids is unavailable with the Semuta preview.';
return distransAuctionBlock(g);
}
function validateDistrans(
@@ -9681,7 +9693,7 @@ function semutaOfferSupported(
entries[0].card.id === continuation.card;
// These completed public costs retain the original ordinary lot through the
// existing signed continuation. Semuta itself has no during-bid exception;
// native Distrans still cannot produce a transfer after that bid starts.
// Distrans can also produce this discard between completed ordinary bids.
const ordinaryAuctionDiscard = g.phase === 3 && !!g.auction && !g.richeseAuction && !g.currentAuctionSale &&
(continuation.kind === 'truthtranceDiscard' || continuation.kind === 'distransDiscard' ||
continuation.kind === 'saphoTruthOrderDiscard' ||