Support selected Nexus decks with leader skills
Verify and publish checkpoint container / container (push) Successful in 11m54s
Verify and publish checkpoint container / container (push) Successful in 11m54s
This commit is contained in:
1 parent
91d45d1dec
commit
00e01a7cd2
13 files changed
+314
-23
No files matched your search
@@ -1,5 +1,5 @@
|
||||
import { FACTIONS } from './catalog';
|
||||
import { independentDiscoveryProfile, independentNexusProfile, classicNexusCoreProfile, nexusCoreProfile, mixedE3NexusRosterProfile } from './faction-module-profile';
|
||||
import { independentDiscoveryProfile, independentNexusProfile, classicNexusCoreProfile, nexusCoreProfile, mixedE3NexusRosterProfile, selectedNexusWithoutCardsProfile } from './faction-module-profile';
|
||||
import { classicDiscoveryLeaderSkillsProfile } from './discovery-module-profile';
|
||||
|
||||
/** Public configuration only; never gate a skill on a hidden card or random deal. */
|
||||
@@ -204,6 +204,13 @@ export function mixedE3NexusLeaderSkillsProfile(game: LeaderSkillProfile): boole
|
||||
mixedE3NexusRosterProfile(game, true);
|
||||
}
|
||||
|
||||
/** Original selected decks with Nexus and Skills do not require a seat from
|
||||
* every selected family. Keep independent cards and other previews on their
|
||||
* own paths, including the Advanced hidden E3/Harkonnen capture boundary. */
|
||||
export function selectedNexusLeaderSkillsProfile(game: LeaderSkillProfile): boolean {
|
||||
return selectedNexusWithoutCardsProfile(game);
|
||||
}
|
||||
|
||||
/** Discovery keeps original native roster predicates; only this module envelope
|
||||
* differs. Live token/entry/Great Maker frames are original consumers. */
|
||||
function discoveryLeaderSkillModulesSupported(game: LeaderSkillProfile): boolean {
|
||||
@@ -298,7 +305,7 @@ export function classicTechLeaderSkillsProfile(game: LeaderSkillProfile): boolea
|
||||
export function strongholdLeaderSkillsProfile(game: LeaderSkillProfile): boolean {
|
||||
if (!game.strongholdCards || game.advanced !== true) return false;
|
||||
if (independentTreacheryLeaderSkillsProfile(game)) return true;
|
||||
if (game.expansions.length) return selectedDeckLeaderSkillsProfile(game) ||
|
||||
if (game.expansions.length) return selectedNexusLeaderSkillsProfile(game) || selectedDeckLeaderSkillsProfile(game) ||
|
||||
advancedMoritaniLeaderSkillsProfile(game) || nativeEcazLeaderSkillsProfile(game);
|
||||
const players = game.players;
|
||||
if (!players || players.length < (game.techTokens ? 3 : 2) || players.length > 6 ||
|
||||
@@ -321,7 +328,7 @@ export function strongholdLeaderSkillsProfile(game: LeaderSkillProfile): boolean
|
||||
/** Bounded integration of the ordinary Moritani roster, not Advanced assassination. */
|
||||
export function basicMoritaniLeaderSkillsProfile(game: LeaderSkillProfile): boolean {
|
||||
if (game.advanced === false && game.players?.some(player => player.faction === 'moritani') &&
|
||||
selectedDeckLeaderSkillsProfile(game)) return true;
|
||||
(selectedNexusLeaderSkillsProfile(game) || selectedDeckLeaderSkillsProfile(game))) return true;
|
||||
return game.advanced === false && game.expansions.length === 1 &&
|
||||
game.expansions[0] === 'ecaz' && e3LeaderSkillModulesSupported(game) &&
|
||||
!!game.players?.some(player => player.faction === 'moritani') &&
|
||||
@@ -332,7 +339,7 @@ export function basicMoritaniLeaderSkillsProfile(game: LeaderSkillProfile): bool
|
||||
/** Existing bounded Advanced assassination roster, composed with native skills. */
|
||||
export function advancedMoritaniLeaderSkillsProfile(game: LeaderSkillProfile): boolean {
|
||||
if (game.advanced === true && game.players?.some(player => player.faction === 'moritani') &&
|
||||
selectedDeckLeaderSkillsProfile(game)) return true;
|
||||
(selectedNexusLeaderSkillsProfile(game) || selectedDeckLeaderSkillsProfile(game))) return true;
|
||||
const players = game.players;
|
||||
if (game.advanced !== true || game.expansions.length !== 1 ||
|
||||
game.expansions[0] !== 'ecaz' || !players || players.length < 2 || players.length > 6 ||
|
||||
@@ -358,7 +365,8 @@ export function advancedMoritaniLeaderSkillsProfile(game: LeaderSkillProfile): b
|
||||
|
||||
/** Ecaz's five native discs; the separate temporarily controlled Duke is not an assignment disc. */
|
||||
export function nativeEcazLeaderSkillsProfile(game: LeaderSkillProfile): boolean {
|
||||
if (game.players?.some(player => player.faction === 'ecaz') && selectedDeckLeaderSkillsProfile(game)) return true;
|
||||
if (game.players?.some(player => player.faction === 'ecaz') &&
|
||||
(selectedNexusLeaderSkillsProfile(game) || selectedDeckLeaderSkillsProfile(game))) return true;
|
||||
const players = game.players;
|
||||
if (typeof game.advanced !== 'boolean' || game.expansions.length !== 1 ||
|
||||
game.expansions[0] !== 'ecaz' || !players || players.length < 2 || players.length > 6 ||
|
||||
@@ -434,7 +442,7 @@ export function selectedDeckLeaderSkillsProfile(game: LeaderSkillProfile): boole
|
||||
|
||||
export function nativeExpansionLeaderSkillsProfile(game: LeaderSkillProfile): boolean {
|
||||
return (game.expansions.length > 0 && independentTreacheryLeaderSkillsProfile(game)) ||
|
||||
mixedE3NexusLeaderSkillsProfile(game) || mixedE1E2NexusLeaderSkillsProfile(game) || pairedE3NexusLeaderSkillsProfile(game) ||
|
||||
selectedNexusLeaderSkillsProfile(game) || mixedE3NexusLeaderSkillsProfile(game) || mixedE1E2NexusLeaderSkillsProfile(game) || pairedE3NexusLeaderSkillsProfile(game) ||
|
||||
basicMoritaniLeaderSkillsProfile(game) || selectedDeckLeaderSkillsProfile(game) ||
|
||||
advancedMoritaniLeaderSkillsProfile(game) || nativeEcazLeaderSkillsProfile(game);
|
||||
}
|
||||
@@ -529,7 +537,7 @@ export function ordinaryLeaderSkillModeSupported(game: LeaderSkillProfile): bool
|
||||
(!game.expansions.length || nativeExpansionLeaderSkillsProfile(game) ||
|
||||
(game.expansions.length === 1 && game.expansions[0] === 'choam'))) ||
|
||||
classicTechLeaderSkillsProfile(game) || nativeTechLeaderSkillsProfile(game) ||
|
||||
strongholdLeaderSkillsProfile(game) || classicNexusLeaderSkillsProfile(game) ||
|
||||
strongholdLeaderSkillsProfile(game) || classicNexusLeaderSkillsProfile(game) || selectedNexusLeaderSkillsProfile(game) ||
|
||||
guildBetrayalNexusLeaderSkillsProfile(game) ||
|
||||
singleE1E2NexusLeaderSkillsProfile(game) ||
|
||||
mixedE3NexusLeaderSkillsProfile(game) || mixedE1E2NexusLeaderSkillsProfile(game) || pairedE3NexusLeaderSkillsProfile(game) ||
|
||||
|
||||
Reference in new issue
Block a user