Prototype unlimited alliance variant
Verify and publish checkpoint container / container (push) Canceled after 0s

This commit is contained in:
Quintine committed 2026-10-29 00:33:42 +11:00
1 parent 37acaeb9d2
commit 9cb65a21f5
23 files changed
+677 -52

No files matched your search

+2 -2
View File
@@ -51,7 +51,7 @@ function threatened(g: Game, owner: string, territory: string): string[] | null
if (error instanceof CoalitionAllianceError) throw new CoalitionWormProtectionError(error.message);
throw error;
}
if (!group || group.members.length !== 3) return null;
if (!group || group.members.length < 3) return null;
requireProtection(Array.isArray(g.order) && g.order.length === g.players.length &&
new Set(g.order).size === g.order.length && g.order.every(seat => g.players.some(player => player.id === seat)),
'Group worm protection requires the current complete storm order.');
@@ -75,7 +75,7 @@ export function validateCoalitionWormProtection(g: Game, frame: CoalitionWormPro
requireProtection(object(frame) && Object.keys(frame).sort().join(',') === 'event,order,outcomes,owner,stage,territory,turn' &&
id(frame.event) && id(frame.owner) && id(frame.territory) && validTerritory(frame.territory) &&
Number.isSafeInteger(frame.turn) && frame.turn === g.turn && Array.isArray(frame.order) &&
frame.order.length > 0 && frame.order.length <= 2 && frame.order.every(id) &&
frame.order.length > 0 && frame.order.length <= 5 && frame.order.every(id) &&
new Set(frame.order).size === frame.order.length && Array.isArray(frame.outcomes) &&
['decision', 'response', 'complete'].includes(frame.stage),
'The group worm protection has lost its original occurrence.');