Extend Basic Nexus Kull to Ixian factions
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
95ebd7f976
commit
d4cd03afff
12 files changed
+282
-14
No files matched your search
+7
-4
@@ -12825,7 +12825,8 @@ function ixianNexusBetrayalIntegrity(g: Game): void {
|
||||
const continuation = g.pendingTreacheryDiscard?.continuation;
|
||||
const contexts = [g, g.pendingExchange, g.pendingNullentropy?.resume,
|
||||
g.pendingRicheseGift?.resume, g.pendingRichesePurchaseIncome?.resume,
|
||||
g.summonedWorm?.resume, continuation && 'resume' in continuation ? continuation.resume : null];
|
||||
g.summonedWorm?.resume, g.pendingKull?.resume,
|
||||
continuation && 'resume' in continuation ? continuation.resume : null];
|
||||
const provider = byFaction(g, 'ixians')!.id;
|
||||
const ownsWindow = (kind: 'ixAuction' | 'ixTechnology') => contexts.some(context => {
|
||||
const pending = context && 'pendingKarama' in context ? context.pendingKarama as Game['pendingKarama'] : null;
|
||||
@@ -13724,8 +13725,9 @@ export function initializeNexusKullGameForAudit(state: Game): Game {
|
||||
typeof state.advanced === 'boolean' && state.expansions.length === 2 &&
|
||||
state.expansions.includes('choam') && state.expansions.includes('ix') &&
|
||||
state.players.some(p => p.faction === 'choam') &&
|
||||
state.players.every(p => p.faction === 'choam' || faction(p.faction).expansion === 'base'),
|
||||
'Nexus Kull requires a fresh native CHOAM/classic lobby, CHOAM and Ix decks, and only Nexus Cards.');
|
||||
state.players.every(p => p.faction === 'choam' || faction(p.faction).expansion === 'base' ||
|
||||
!state.advanced && (p.faction === 'ixians' || p.faction === 'tleilaxu')),
|
||||
'Nexus Kull requires a fresh CHOAM lobby with classic or Basic Ixian/Tleilaxu factions, CHOAM and Ix decks, and only Nexus Cards.');
|
||||
requireFreshBaseRuntime(state);
|
||||
const g = initializeSetupGameForAudit(state, false, true, false, false, false, false, true);
|
||||
g.kullPreview = true;
|
||||
@@ -20270,7 +20272,8 @@ function kullIntegrity(g: Game): void {
|
||||
g.kullPreview === true && !!g.nexusCards?.cards &&
|
||||
g.expansions.length === 2 && g.expansions.includes('choam') && g.expansions.includes('ix') &&
|
||||
g.players.some(p => p.faction === 'choam') &&
|
||||
g.players.every(p => p.faction === 'choam' || faction(p.faction).expansion === 'base') &&
|
||||
g.players.every(p => p.faction === 'choam' || faction(p.faction).expansion === 'base' ||
|
||||
!g.advanced && (p.faction === 'ixians' || p.faction === 'tleilaxu')) &&
|
||||
!g.homeworlds && !g.leaderSkills && !g.discoveryEnabled && !g.discoveries &&
|
||||
!g.discoveryStash && !g.greatMaker &&
|
||||
!g.techTokens && !g.strongholdCards && !g.ecazTreachery && !g.semutaPreview &&
|
||||
|
||||
@@ -43,7 +43,8 @@ function nexusKullCore(game: NexusCoreConfiguration): boolean {
|
||||
game.kullPreview === true && game.nexusKullPreview === true && !game.semutaPreview &&
|
||||
game.expansions.length === 2 && game.expansions.includes('ix') && game.expansions.includes('choam') &&
|
||||
!!game.players?.some(player => player.faction === 'choam') &&
|
||||
game.players.every(player => player.faction === 'choam' ||
|
||||
game.players.every(player => player.faction === 'choam' || !game.advanced &&
|
||||
(player.faction === 'ixians' || player.faction === 'tleilaxu') ||
|
||||
FACTIONS.some(faction => faction.id === player.faction && faction.expansion === 'base')) &&
|
||||
!game.homeworlds && !game.leaderSkills && !game.techTokens && !game.strongholdCards &&
|
||||
!game.ecazTreachery && !game.discoveryEnabled && !game.discoveries && !game.discoveryStash &&
|
||||
@@ -108,7 +109,7 @@ function basicNativeNexusCore(game: NexusCoreConfiguration): boolean {
|
||||
if (game.kullPreview !== true || game.nexusKullPreview !== true || game.semutaPreview ||
|
||||
game.expansions.length !== 2 || !game.expansions.includes('ix') || !game.expansions.includes('choam') ||
|
||||
!players.some(player => player.faction === 'choam') ||
|
||||
players.some(player => player.faction !== 'choam' &&
|
||||
players.some(player => player.faction !== 'choam' && player.faction !== 'ixians' && player.faction !== 'tleilaxu' &&
|
||||
!FACTIONS.some(faction => faction.id === player.faction && faction.expansion === 'base'))) return false;
|
||||
}
|
||||
return true;
|
||||
|
||||
@@ -61,12 +61,12 @@ export function kullDefaultProfile(game: KullDefaultProfile): KullDefaultEligibi
|
||||
const options = game.lobbyOptions, projected = game.lobbyModules;
|
||||
if (game.nexusCards || projected?.nexusCards) {
|
||||
if (game.expansions.length !== 2 ||
|
||||
!game.players.every(player => player.faction === 'choam' || classic.has(player.faction)) ||
|
||||
!game.players.every(player => player.faction === 'choam' || classic.has(player.faction) || ix.has(player.faction)) ||
|
||||
options?.leaderSkills || options?.ecazTreachery || projected?.leaderSkills ||
|
||||
projected?.ecazTreachery || projected?.discoveries || game.leaderSkills || game.ecazTreachery ||
|
||||
game.discoveryEnabled || game.discoveries || game.discoveryStash || game.greatMaker ||
|
||||
game.homeworlds || game.techTokens || game.strongholdCards || game.sandtrout)
|
||||
return blocked('Kull with Nexus currently requires Basic CHOAM and classic factions, the Ix and CHOAM decks, and no other optional modules.');
|
||||
return blocked('Kull with Nexus currently requires Basic CHOAM, Ixian/Tleilaxu or classic factions, the Ix and CHOAM decks, and no other optional modules.');
|
||||
return { eligible: true, reason: null };
|
||||
}
|
||||
if (options?.leaderSkills || projected?.leaderSkills ||
|
||||
|
||||
@@ -387,9 +387,9 @@ function nativeBankNexusProfile(g: Game): boolean {
|
||||
* to the caller. */
|
||||
export function emperorNexusBankPurchaseModeSupported(g: Game): boolean {
|
||||
if (nexusCoreProfile(g))
|
||||
return !g.players.some(p => p.faction === 'emperor') && !g.sandtrout;
|
||||
return !g.players.some(p => p.faction === 'emperor');
|
||||
if (!g.nexusCards || g.players.some(p => p.faction === 'emperor') ||
|
||||
g.ecazTreachery || g.sandtrout) return false;
|
||||
g.ecazTreachery) return false;
|
||||
return emperorNexusLegacyRevivalModeSupported(g) || nativeBankNexusProfile(g);
|
||||
}
|
||||
|
||||
|
||||
+2
-1
@@ -5993,7 +5993,8 @@ export const RULE_TOPICS: RuleTopic[] = [
|
||||
developmentStage: 'Verified',
|
||||
summary: 'In the explicit Nexus Kull preview, choose one actual Treachery fuel card at a Karama attempt; the CHOAM Nexus is spent when the declaration is accepted, even if Kull is prevented.',
|
||||
steps: [
|
||||
'Fresh Basic CHOAM/classic public games with the CHOAM and Ix decks and Nexus alone enable this preview by default; the host may turn it off. Original Ix Sandtrout stays in the Spice deck. The separate local Advanced audit remains available. Other optional modules, expansion factions, Semuta and Richese Betrayal stay outside this profile; existing games are not converted.',
|
||||
'Fresh Basic CHOAM games with classic or Ixian/Tleilaxu factions, the CHOAM and Ix decks and Nexus alone enable this preview by default; the host may turn it off. Original Ix Sandtrout stays in the Spice deck. The separate local Advanced audit remains available. Other optional modules, Richese, Semuta and Richese Betrayal stay outside this profile; existing games are not converted.',
|
||||
'The native Ixian Bidding counter remains bound while Kull resolves, then its original Ixian Nexus opportunity and auction proceed. A waiting Sandtrout does not disable an earned Emperor Nexus ordinary bank-auction benefit; other Sandtrout purchase sources retain their separate limits.',
|
||||
'The CHOAM Nexus face says: Discard any Treachery Card to obtain a Worthless Card special effect of your choice. Basic uses the CHOAM phase-wide scope; new Advanced attempts use the supplied specific-effect scope with provisional phase expiry. Cunning changes the fuel identity, not the effect, target or timing. Neither text supplies a nested counter priority: distinct counters and BG-before-conversion custody are the recorded user-selected policy, not a publisher clarification.',
|
||||
'Wait for another player’s validated Karama attempt. There is no proactive Kull choice in the generic Nexus panel. The public event, attempted player and purpose are the same whether CHOAM holds CHOAM Nexus, another Nexus, no eligible fuel or no Nexus at all. Only CHOAM receives its private source-aware plays and blocking reasons; opponents do not see the cost list or reserved original card.',
|
||||
'Choose a cost through the shared selector and inspect that actual card before Use. Printed source requires a held printed Kull Wahad. Nexus source requires unallied native CHOAM holding the actual CHOAM Nexus in this profile and one uniquely held canonical Treachery Card: a weapon, defense, special, Karama or Worthless card can be fuel. Reserved or promise-incompatible fuel is unavailable. The card does not become a manufactured Kull, and Karama used as fuel does not activate its own power.',
|
||||
|
||||
Reference in new issue
Block a user