Enable mixed selected-deck Discovery previews
Verify and publish checkpoint container / container (push) Failing after 11m29s

This commit is contained in:
Quintine committed 2026-10-29 20:14:11 +11:00
1 parent 26d45ecf25
commit c8dbd44975
9 files changed
+195 -11

No files matched your search

+10 -5
View File
@@ -1,5 +1,5 @@
import { FACTIONS } from './catalog';
import { independentDiscoveryProfile, mixedE3NexusRosterProfile, type FactionModuleProfile } from './faction-module-profile';
import { independentDiscoveryProfile, mixedE3NexusRosterProfile, selectedPhaseModuleRoster, type FactionModuleProfile } from './faction-module-profile';
import type { LeaderSkillProfile } from './leader-skill-profile';
/** Public unused-lobby admission only. The original initializer owns physical
@@ -21,7 +21,7 @@ export function discoveryModeSupported(game: FactionModuleProfile): boolean {
mixedE3DiscoveryNexusProfile(game) || mixedE1E2DiscoveryNexusProfile(game) || pairedE3DiscoveryNexusProfile(game);
if (typeof game.advanced !== 'boolean' || game.discoveryEnabled !== true ||
game.players.length < 2 || game.players.length > 6 ||
(game.techTokens && game.players.length < 3) || game.expansions.length > 2 ||
(game.techTokens && game.players.length < 3) || game.expansions.length > 3 ||
(game.strongholdCards && !game.advanced) || game.leaderSkills || game.nexusCards ||
game.ecazTreachery ||
game.advancedPreview || game.kullPreview || game.nexusKullPreview ||
@@ -30,6 +30,11 @@ export function discoveryModeSupported(game: FactionModuleProfile): boolean {
return false;
if (game.semutaPreview && (game.homeworlds || !game.expansions.includes('choam') ||
!game.players.some(player => player.faction === 'richese'))) return false;
if (game.expansions.includes('ecaz') && game.expansions.length > 1) {
return !game.semutaPreview && selectedPhaseModuleRoster(game) &&
!(game.advanced && game.players.some(player => player.faction === 'moritani') &&
game.players.some(player => player.faction === 'harkonnen'));
}
const e3 = game.expansions.length === 1 && game.expansions[0] === 'ecaz';
for (let i = 0; i < game.expansions.length; i++) {
const expansion = game.expansions[i];
@@ -55,10 +60,10 @@ export function discoveryModeSupported(game: FactionModuleProfile): boolean {
return (!e3 || native >= 1 && native <= 2) && !(game.advanced && moritani && harkonnen);
}
/** The original E3 pair can use Discovery without choosing a Nexus or card variant. */
export function pairedE3DiscoveryOnlyProfile(game: FactionModuleProfile): boolean {
/** The original E3 pair can use selected decks with Discovery without Nexus or cards. */
export function e3DiscoveryOnlyOverlapProfile(game: FactionModuleProfile): boolean {
return !game.nexusCards && !game.ecazTreachery && !game.leaderSkills &&
game.expansions.length === 1 && game.expansions[0] === 'ecaz' &&
game.expansions.includes('ecaz') &&
game.players.some(player => player.faction === 'ecaz') &&
game.players.some(player => player.faction === 'moritani') && discoveryModeSupported(game);
}