Support Richese Kull current-lot bid answers
Verify and publish checkpoint container / container (push) Canceled after 0s

This commit is contained in:
Quintine committed 2026-10-29 00:25:37 +11:00
1 parent bf73c41ae0
commit 8b577f2487
11 files changed
+225 -13

No files matched your search

+6 -3
View File
@@ -94,7 +94,7 @@ import { independentDiscoveryProfile, independentNexusProfile, nexusCoreProfile,
import { homeworldOccupationLeaderSkillsProfile, homeworldOccupationModulesProfile, homeworldPhaseModulesProfile } from './homeworld-module-profile';
import { RevivalPromiseError, revivalPromiseModeSupported, liveRevivalPromises, recordPromisedRevival,
revivalPromisesSatisfied, validateRevivalPromises, type RevivalClaim, type RevivalPromise } from './revival-promises';
import { BidPromiseError, bidPromiseModeSupported, bidPromiseRange, bidRequired, liveBidPromises,
import { BidPromiseError, bidPromiseModeSupported, currentBidPromiseModeSupported, bidPromiseRange, bidRequired, liveBidPromises,
recordPromisedBid, validateBidPromises, type BidClaim, type BidOpportunity, type BidPromise } from './bid-promises';
import { PhaseBidPromiseError, phaseBidPromiseModeSupported, livePhaseBidPromises,
phaseBidCompletionRange, recordPhaseBid, reconcilePhaseBidPromises,
@@ -16950,6 +16950,9 @@ function phaseBidCurrentWindow(g: Game): boolean {
!g.ixAuction && !g.pendingKarama && !g.pendingTreacheryDiscard && !g.pendingKull;
}
function bidQuestionWindow(g: Game): boolean {
return currentBidPromiseModeSupported(g) && phaseBidCurrentWindow(g);
}
function mixedBidQuestionWindow(g: Game): boolean {
return bidPromiseModeSupported(g) && phaseBidCurrentWindow(g);
}
/** A future lot is a witness only after a real funded bid has committed the
@@ -17536,7 +17539,7 @@ function compileMixedBid(g: Game, p: Player, claim: MixedBidClaim, answer: boole
}
function mixedBidTruthAnswers(g: Game, p: Player, claim: MixedBidClaim): TruthAnswer[] {
const opportunity = bidOpportunity(g);
if (!opportunity || !bidQuestionWindow(g) || claim.turn !== opportunity.turn || claim.lot !== opportunity.lot ||
if (!opportunity || !mixedBidQuestionWindow(g) || claim.turn !== opportunity.turn || claim.lot !== opportunity.lot ||
!opportunity.eligible.includes(p.id) || opportunity.passed.includes(p.id) || opportunity.bidder === p.id) return [];
const answers: TruthAnswer[] = [];
for (const answer of [true, false]) {
@@ -46354,7 +46357,7 @@ export function viewGame(state: Game, id: string, now?: number) {
g.truthtrance.question.kind === 'mixedRevival' ? mixedRevivalTruthAnswers(g, me, g.truthtrance.question) : null,
mixedRevivalPromises: projectedMixedRevivalPromises(g, id),
revivalExpressionPromiseGuide: projectedRevivalExpressionPromiseGuide(g, id),
truthMixedBidTargets: bidQuestionWindow(g) ? g.players.filter(player => {
truthMixedBidTargets: mixedBidQuestionWindow(g) ? g.players.filter(player => {
const lot = bidOpportunity(g)!;
return lot.eligible.includes(player.id) && !lot.passed.includes(player.id) && lot.bidder !== player.id;
}).map(player => player.id) : [],