import type { FactionId } from './catalog'; const supported = new Set([ 'atreides', 'harkonnen', 'emperor', 'guild', 'beneGesserit', 'fremen', 'choam', 'richese', 'ecaz', 'moritani', 'ixians', 'tleilaxu', ]); /** Public configuration only: never inspect an opponent's hand or sealed plan. */ export function mirrorWeaponModeBlock(g: { expansions: readonly string[]; advanced?: boolean; players: readonly { faction: FactionId }[]; homeworlds?: unknown; nexusCards?: unknown; leaderSkills?: unknown; discoveries?: unknown; sandtrout?: boolean; techTokens?: unknown; strongholdCards?: unknown; }): string | null { if (!g.expansions.includes('choam') || g.expansions.some(id => id !== 'choam' && id !== 'ecaz' && id !== 'ix') || g.players.some((p) => !supported.has(p.faction))) return 'Mirror Weapon needs selected CHOAM/Richese with supported native factions.'; if (g.expansions.includes('ecaz') && (!g.advanced || g.expansions.includes('ix')) && (g.techTokens || g.strongholdCards)) return 'This E3 Stone/Mirror combination with Tech Tokens or Stronghold Cards remains outside this profile.'; if (g.homeworlds || g.nexusCards || g.leaderSkills || g.discoveries || g.sandtrout) return 'Mirror Weapon with combined optional modules is still being integrated.'; return null; }