Compose native Homeworld Nexus optional modules

This commit is contained in:
Quintine committed 2026-10-07 08:54:53 +11:00
1 parent 71bc325289
commit 2efa10a9d6
19 files changed
+1961 -62

No files matched your search

+6 -4
View File
@@ -9325,15 +9325,16 @@ export function initializePairedNexusGameForAudit(state: Game): Game {
'The paired Nexus sample requires both selected expansion factions and their deck.');
const discovery = state.discoveryEnabled === true && pairedDiscoveryNexusProfile(state);
requireRule(!!state.nexusCards && state.nexusCards.cards === null && state.nexusCards.phase === null &&
!state.homeworlds && !state.leaderSkills && !state.ecazTreachery &&
(!state.homeworlds || expansion === 'ix' || expansion === 'choam') &&
!state.leaderSkills && !state.ecazTreachery &&
(!state.discoveryEnabled || discovery) &&
((!state.techTokens && !state.strongholdCards) || discovery || pairedNexusModulesProfile(state)),
'Enable Nexus Cards with only supported unused paired E1/E2 Discovery, Tech or Advanced Stronghold components.');
'Enable Nexus Cards with supported original paired E1/E2 Homeworlds, Discovery, Tech or Advanced Stronghold components.');
if (state.discoveryEnabled) {
requireFreshBaseRuntime(state);
requireFreshFactionInventory(state);
}
return initializeSetupGameForAudit(state, false, true, false, discovery, false, false, true);
return initializeSetupGameForAudit(state, !!state.homeworlds, true, false, discovery, false, false, true);
}
/** Genuine opt-in auction source interruption; ordinary/public starts stay gated. */
@@ -9540,7 +9541,7 @@ export function initializeLeaderSkillsGameForAudit(state: Game): Game {
const homeworlds = homeworldLeaderSkillsProfile(state);
if (state.homeworlds) {
requireRule(homeworlds && state.homeworlds.custody === null,
'Homeworld Leader Skills require a fresh supported classic or native lobby with original optional modules; Nexus composition requires classic factions.');
'Homeworld Leader Skills require a fresh supported classic, paired E1/E2 or standalone E3 lobby with original optional modules and undealt native custody.');
requireFreshBaseRuntime(state);
requireFreshFactionInventory(state);
}
@@ -25743,6 +25744,7 @@ const RICHESE_CUNNING_ROSTER: Partial<Record<FactionId, true>> = {
function richeseCunningModeSupported(g: Game) {
const skills = !!g.leaderSkills && pairedNexusLeaderSkillsProfile(g);
return pairedDiscoveryNexusProfile(g) ||
(!!g.homeworlds && (skills || pairedNexusModulesProfile(g))) ||
(!g.homeworlds && (!g.leaderSkills || skills) && (!g.discoveryEnabled || skills) &&
!g.ecazTreachery && !g.sandtrout &&
g.players.every(player => RICHESE_CUNNING_ROSTER[player.faction] === true));