Connect native Moritani and Harkonnen captive Duke rules

This commit is contained in:
Quintine committed 2026-10-15 16:20:58 +11:00
1 parent 559b42dd78
commit a5a6db7868
40 files changed
+1408 -352

No files matched your search

+4 -4
View File
@@ -197,7 +197,7 @@ export function executeCapturedDuke(
/**
* The caller authorizes the faction power and resolves any applicable Karama.
* Ecaz Nexus Cunning independently revives the set-aside shared disc from Tanks.
* Ecaz Nexus Cunning liberates an actual captive; no foreign-Ghola source is legal.
* Moritani and Ecaz Nexus Cunning liberate a living captive; no foreign-Ghola source is legal.
*/
export function acquireDuke(
state: DukeState,
@@ -217,8 +217,8 @@ export function acquireDuke(
if (state.leader.gholaBy)
throw new Error('Duke Vidal cannot be acquired from foreign Ghola custody.');
if (state.leader.capturedBy) {
if (source !== 'ecazNexus' || state.leader.dead)
throw new Error('Only Ecaz Nexus Cunning can acquire the living captured Duke.');
if ((source !== 'ecazNexus' && source !== 'moritani') || state.leader.dead)
throw new Error('Only Moritani acquisition or Ecaz Nexus Cunning can take the living captured Duke.');
validCaptive(state, turn);
} else if ((state.leader.concealed || state.captureVisibility) &&
!(source === 'ecazNexus' && returnedDukeCapture(state))) {
@@ -230,7 +230,7 @@ export function acquireDuke(
if (source === 'ecazNexus' && !state.leader.dead && state.leader.usedAt)
throw new Error('Duke Vidal has already been used in battle this turn.');
const acquired = cloneDuke(state);
if (source === 'ecazNexus') {
if (source === 'ecazNexus' || source === 'moritani') {
delete acquired.leader.capturedBy;
delete acquired.leader.concealed;
delete acquired.captureVisibility;