Enable Semuta in public Richese Skills games
Verify and publish checkpoint container / container (push) Canceled after 0s

This commit is contained in:
Quintine committed 2026-10-29 09:27:53 +11:00
1 parent 1972622c11
commit b2b9a024bd
9 files changed
+285 -3

No files matched your search

+14 -1
View File
@@ -11013,6 +11013,18 @@ function lobbyModulesSelected(g: Game): boolean {
return !!g.lobbyOptions?.leaderSkills || !!g.lobbyOptions?.ecazTreachery || !!g.lobbyOptions?.kullPreview ||
!!g.nexusCards || g.discoveryEnabled === true || !!g.homeworlds;
}
/** Fresh public Richese + Skills entry, using the already connected Semuta
* continuation. Other family/module compositions retain their own entry. */
function publicSemutaSkillsProfile(g: Game): boolean {
return g.status === 'lobby' && typeof g.advanced === 'boolean' &&
g.players.length >= 2 && g.players.length <= 6 &&
g.expansions.length === 1 && g.expansions[0] === 'choam' && !!byFaction(g, 'richese') &&
g.players.every(p => p.faction === 'richese' || p.faction === 'choam' || CLASSIC_FACTIONS[p.faction] === true) &&
(!g.techTokens || g.players.length >= 3) && (!g.strongholdCards || g.advanced) &&
!g.twoPlayerControllers && !g.shortAllianceVictory && !g.coalitionPreview &&
!g.homeworlds && !g.nexusCards && !g.discoveryEnabled && !g.ecazTreachery &&
!g.leaderSkills && !g.kullPreview && !g.nexusKullPreview;
}
/** Route a normal start through the existing genuine setup for the selected modules. */
function startModules(state: Game): Game {
const options = state.lobbyOptions ?? {};
@@ -11038,7 +11050,8 @@ function startModules(state: Game): Game {
return initializeKullGameForAudit(g);
}
if (options.ecazTreachery && options.leaderSkills) g.ecazTreachery = true;
if (options.leaderSkills) return initializeLeaderSkillsGameForAudit(g);
if (options.leaderSkills) return publicSemutaSkillsProfile(g)
? initializeSemutaGameForAudit(g, true) : initializeLeaderSkillsGameForAudit(g);
// Keep this selection visible to its initializer even when another module was
// also selected; unsupported combinations must reject, not silently omit cards.
if (options.ecazTreachery) return initializeEcazTreacheryGameForAudit(g);