Allow group admission with compatible commitments
Verify and publish checkpoint container / container (push) Canceled after 0s
Verify and publish checkpoint container / container (push) Canceled after 0s
This commit is contained in:
1 parent
0faa7923b0
commit
6524ed3bf2
14 files changed
+679
-53
No files matched your search
+13
-10
@@ -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}];
|
||||
}
|
||||
|
||||
Reference in new issue
Block a user