Compose native Richese No-Field and Stone with Advanced Occupy

This commit is contained in:
Quintine committed 2026-10-03 08:48:26 +10:00
1 parent 03c77604de
commit 113667da55
23 files changed
+985 -246

No files matched your search

+6 -3
View File
@@ -2,12 +2,13 @@ import type { FactionId } from './catalog';
const supported = new Set<FactionId>([
'atreides', 'harkonnen', 'emperor', 'guild', 'beneGesserit', 'fremen',
'choam', 'richese',
'choam', 'richese', 'ecaz', 'moritani',
]);
/** 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;
@@ -15,9 +16,11 @@ export function mirrorWeaponModeBlock(g: {
discoveries?: unknown;
sandtrout?: boolean;
}): string | null {
if (g.expansions.length !== 1 || g.expansions[0] !== 'choam' ||
if (!g.expansions.includes('choam') ||
g.expansions.some(id => id !== 'choam' && id !== 'ecaz') ||
(g.expansions.includes('ecaz') && g.advanced !== true) ||
g.players.some((p) => !supported.has(p.faction)))
return 'Mirror Weapon currently needs the CHOAM/Richese expansion with classic or CHOAM/Richese factions.';
return 'Mirror Weapon currently needs CHOAM/Richese with classic or native Ecaz/Moritani factions; Ix timing remains unresolved.';
if (g.homeworlds || g.nexusCards || g.leaderSkills || g.discoveries || g.sandtrout)
return 'Mirror Weapon with combined optional modules is still being integrated.';
return null;