Enable Basic Kull preview with Tech Tokens
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
92d5c0ac2e
commit
16f10beecf
11 files changed
+375
-18
No files matched your search
@@ -27,6 +27,16 @@ const choam = new Set(['choam', 'richese']);
|
||||
const ecaz = new Set(['ecaz', 'moritani']);
|
||||
const blocked = (reason: string): KullDefaultEligibility => ({ eligible: false, reason });
|
||||
|
||||
/** Narrow Basic Tech composition: native CHOAM and classic factions only. */
|
||||
export function basicKullTechRoster(game: Pick<KullDefaultProfile, 'advanced' | 'expansions' | 'players' | 'techTokens'>): boolean {
|
||||
return game.advanced === false && !!game.techTokens && Array.isArray(game.expansions) &&
|
||||
game.expansions.length === 2 && game.expansions.includes('ix') && game.expansions.includes('choam') &&
|
||||
Array.isArray(game.players) && game.players.length >= 3 && game.players.length <= 6 &&
|
||||
game.players.some(player => player?.faction === 'choam') &&
|
||||
game.players.every(player => !!player && (player.faction === 'choam' || classic.has(player.faction))) &&
|
||||
new Set(game.players.map(player => player.faction)).size === game.players.length;
|
||||
}
|
||||
|
||||
/** Public profile eligibility is independent of the host's explicit opt-out.
|
||||
* A lone CHOAM seat can see the choice while waiting for others; the native
|
||||
* start still checks readiness, minimum seats and all fresh private inventory.
|
||||
@@ -51,8 +61,9 @@ export function kullDefaultProfile(game: KullDefaultProfile): KullDefaultEligibi
|
||||
if (options?.leaderSkills || projected?.leaderSkills ||
|
||||
projected?.nexusCards || projected?.discoveries || game.leaderSkills || game.ecazTreachery || game.nexusCards ||
|
||||
game.discoveryEnabled || game.discoveries || game.discoveryStash || game.greatMaker ||
|
||||
game.homeworlds || game.techTokens || game.strongholdCards)
|
||||
return blocked('Automatic Kull currently excludes optional modules other than the independent Ecaz Treachery Cards.');
|
||||
game.homeworlds || game.strongholdCards ||
|
||||
(game.techTokens && (!basicKullTechRoster(game) || options?.ecazTreachery || projected?.ecazTreachery)))
|
||||
return blocked('Automatic Kull supports independent Ecaz Treachery Cards, or Tech Tokens with three to six CHOAM/classic factions and the Ix and CHOAM decks.');
|
||||
return { eligible: true, reason: null };
|
||||
}
|
||||
|
||||
|
||||
Reference in new issue
Block a user