Allow group admission with compatible commitments
Verify and publish checkpoint container / container (push) Canceled after 0s

This commit is contained in:
Quintine committed 2026-10-29 00:54:36 +11:00
1 parent 0faa7923b0
commit 6524ed3bf2
14 files changed
+679 -53

No files matched your search

+13 -10
View File
@@ -1321,6 +1321,16 @@ function policyActions(g: GameView): Action[] {
? [{ type: 'decision', event: search.event, card: ordered[0].id }]
: [];
}
const pendingGroup = g.coalitionNexus;
if (pendingGroup?.proposal) {
const proposal = pendingGroup.proposal;
const participants = [...proposal.original.members, proposal.entrant];
return participants.includes(me.id) && !proposal.approvals.includes(me.id)
? [{type: 'coalitionAnswer', event: proposal.event, nexus: proposal.nexus,
turn: proposal.turn, accept: !pendingGroup.acceptBlocked,
expectedRevision: pendingGroup.revision}]
: [];
}
if (g.truthCharityGuide) return [g.truthCharityGuide.action];
if (g.bribePromiseGuide) return [g.bribePromiseGuide.action];
if (g.alliancePromiseGuide) return [g.alliancePromiseGuide.action];
@@ -3184,14 +3194,6 @@ function policyActions(g: GameView): Action[] {
}
if (g.phase === 1) {
const group = g.coalitionNexus;
if (group?.proposal) {
const proposal = group.proposal;
const participants = [...proposal.original.members, proposal.entrant];
return participants.includes(me.id) && !proposal.approvals.includes(me.id)
? [{type: 'coalitionAnswer', event: proposal.event, nexus: proposal.nexus,
turn: proposal.turn, accept: !group.admissionBlocked, expectedRevision: group.revision}]
: [];
}
const thumper = me.hand?.find((c) => c.effect === 'thumper');
const prior = g.spiceDiscardTop[0];
if (
@@ -3226,9 +3228,10 @@ function policyActions(g: GameView): Action[] {
const card = me.hand?.find((c) => c.effect === 'harvester');
if (card) return [{ type: 'card', card: card.id }];
}
if (g.nexus && !g.spiceWindow && !g.ready.includes(me.id) && group?.variant === 'unlimited' && !group.admissionBlocked &&
if (g.nexus && !g.spiceWindow && !g.ready.includes(me.id) && group?.variant === 'unlimited' &&
!group.groups.some(alliance => alliance.members.includes(me.id))) {
const alliance = group.groups.find(candidate => candidate.members.length >= 2 && candidate.members.length < 6);
const alliance = group.groups.find(candidate => candidate.members.length >= 2 && candidate.members.length < 6 &&
!group.blockedInvitations?.some(blocked => blocked.groupId === candidate.id && blocked.entrant === me.id));
if (alliance) return [{type:'coalitionPropose', groupId:alliance.id, entrant:me.id,
expectedRevision:group.revision}];
}