Connect staged Advanced classic group alliances
Verify and publish checkpoint container / container (push) Successful in 10m53s
Verify and publish checkpoint container / container (push) Successful in 10m53s
This commit is contained in:
1 parent
ef92ddf2b9
commit
3ba9087405
22 files changed
+561
-44
No files matched your search
@@ -3,6 +3,7 @@ import { ecazOccupancyRelation } from './ecaz-occupy';
|
||||
import { presenceAt, type ForcePresence } from './force-presence';
|
||||
import type { OccupancySeat } from './occupancy';
|
||||
import { coalitionAllies, coalitionGroups, type CoalitionState } from './coalition-alliance';
|
||||
import { FACTIONS } from './catalog';
|
||||
|
||||
/** Physical baseline distinguishes this turn's visitors from old co-occupation. */
|
||||
export type BasicAlliedShipment = Readonly<{
|
||||
@@ -40,8 +41,9 @@ function currentShipmentAllies(context: ShipmentContext, player: OccupancySeat):
|
||||
}));
|
||||
const groups = coalitionGroups(seats, context.coalitionState);
|
||||
if (groups.some(group => group.members.length >= 3) &&
|
||||
(context.advanced || context.players.some(seat => seat.faction === 'ecaz')))
|
||||
throw new Error('Three-member shipment rules require Basic play without Ecaz.');
|
||||
(context.players.some(seat => seat.faction === 'ecaz') || context.advanced &&
|
||||
context.players.some(seat => !FACTIONS.some(faction => faction.id === seat.faction && faction.expansion === 'base'))))
|
||||
throw new Error('Larger alliance shipment rules require a supported roster without Ecaz.');
|
||||
return coalitionAllies(seats, context.coalitionState, player.id);
|
||||
}
|
||||
|
||||
|
||||
Reference in new issue
Block a user