Files
Dune/game/fremen-nexus-profile.ts
Quintine b4157aaa9b Connect native Fremen Nexus effects across selected modules
Retain actual Cunning appearances, paid Karama and typed remote riding with optional Sandmaster collection and source-parent HMS entry. Preserve Betrayal movement sources and apply its declared worm restriction to Great Maker reserve riding without suppressing votes or casualties. Completed Maker history no longer blocks a later ordinary offer.

Validation: frozen 14-file86/86, types/lint/build, nine finite original-action/rendered-control programmes, four minimal legal policies. Discovery destination proof remains focused quotes pending actual arrival; full combinations, assurance and deployed acceptance remain required. No saved-game, restart or deployment operation.
2026-10-18 11:35:59 +11:00

19 lines
1.1 KiB
TypeScript

import { FACTIONS } from './catalog';
import type { Game } from './engine';
/** Native Nexus effects use the original initialized module and registered
* roster. Their own occurrence, card, timing and arrival checks remain separate;
* selecting another module does not remove the printed Fremen card effect. */
export function fremenNexusModeSupported(game: Game): boolean {
return !!game.nexusCards?.cards && typeof game.advanced === 'boolean' &&
game.players.length >= (game.techTokens ? 3 : 2) && game.players.length <= 6 &&
game.players.some(player => player.faction === 'fremen') &&
new Set(game.players.map(player => player.faction)).size === game.players.length &&
game.expansions.length <= 3 &&
game.expansions.every((family, index) => ['ix', 'choam', 'ecaz'].includes(family) &&
game.expansions.indexOf(family) === index) &&
(!game.strongholdCards || game.advanced) &&
game.players.every(player => FACTIONS.some(faction => faction.id === player.faction &&
(faction.expansion === 'base' || game.expansions.includes(faction.expansion))));
}