Connect auction knowledge and group transport quotes
Verify and publish checkpoint container / container (push) Successful in 11m12s

This commit is contained in:
Quintine committed 2026-10-29 02:52:33 +11:00
1 parent 599af2475d
commit 4feb418488
8 files changed
+254 -9

No files matched your search

+11 -2
View File
@@ -96,7 +96,7 @@ export function parseKnowledgeFact(value: unknown): KnowledgeFact {
}
export function truthKnowledgeOf(
g: Pick<Game, 'phase' | 'turn' | 'advanced' | 'stormDials' | 'stormDialers' | 'stormCard' | 'stormCardKnown' | 'spicePeekKnown' | 'spiceDeck' | 'auction' | 'richeseAuction' | 'richeseCache' | 'ixAuction' | 'ixAuctionKnown' | 'homeworldOccupationPreview' | 'battle' | 'players' | 'dukeVidal'>,
g: Pick<Game, 'phase' | 'turn' | 'advanced' | 'stormDials' | 'stormDialers' | 'stormCard' | 'stormCardKnown' | 'spicePeekKnown' | 'spiceDeck' | 'auction' | 'richeseAuction' | 'richeseCache' | 'richesePeekKnown' | 'richeseOfferedCard' | 'ixAuction' | 'ixAuctionKnown' | 'homeworldOccupationPreview' | 'battle' | 'players' | 'dukeVidal'>,
p: Pick<Player, 'id' | 'faction' | 'prediction'>,
): TruthKnowledge {
const dial = g.stormDials[p.id];
@@ -105,7 +105,16 @@ export function truthKnowledgeOf(
const lot = g.phase === 3 && p.faction === 'atreides' && !g.richeseAuction && !g.ixAuction ? g.auction : null;
// The private lot is read only after the same inspection entitlement used by
// the ordinary auction view has resolved successfully for this faction.
const lotName = lot?.peekKnown ? lot.cards[lot.index]?.name : undefined;
const richeseLot = g.phase === 3 && g.advanced && p.faction === 'atreides' &&
g.richeseAuction?.source === 'blackMarket' && !g.richeseAuction.outcome && g.richesePeekKnown
? g.richeseAuction : null;
// The offered copy is only valid for this actual lot. Older frames can
// recover the still-reserved physical card from the seller's hand.
const offered = richeseLot && g.richeseOfferedCard?.id === richeseLot.cardId
? g.richeseOfferedCard : richeseLot
? g.players.find(seat => seat.id === richeseLot.owner)?.hand.find(card => card.id === richeseLot.cardId)
: undefined;
const lotName = lot?.peekKnown ? lot.cards[lot.index]?.name : offered?.name;
// A Basic Richese cache lot is shown to every seat. It is not the owner's
// private cache inventory or an Advanced Black Market card.
const cacheLot = g.phase === 3 && !g.advanced && g.players.some(seat => seat.id === p.id) &&