Connect source-ordered Advanced Ecaz new-ally Duke grant

This commit is contained in:
Quintine committed 2026-10-08 10:14:08 +11:00
1 parent 5e293f567a
commit 59a406830c
9 files changed
+95 -22

No files matched your search

+12 -5
View File
@@ -16449,7 +16449,8 @@ function ecazAllianceQuote(g: Game, owner: string, entrant: string) {
}
}
function ecazAmbassadorLoanBlock(g: Game, owner: Player, entrant: Player) {
if (g.advanced) return 'This first-version Duke loan is available in Basic.';
if (g.advanced && byFaction(g, 'harkonnen'))
return 'Advanced Duke loans with Harkonnen capture remain guarded.';
if (owner.ally !== entrant.id || entrant.ally !== owner.id)
return 'The new Ecaz alliance is no longer current.';
const duke = g.dukeVidal;
@@ -16555,10 +16556,16 @@ function decideAmbassador(g: Game, p: Player, action: Action) {
{ faction: 'ecaz', name: 'Ambassador alliance' },
);
if (!ecazAmbassadorLoanBlock(g, owner, entrant)) {
entry.stage = 'loan';
entry.beneficiary = owner.id;
g.decision = { kind: 'ecazAmbassador', player: owner.id };
return;
if (g.advanced) {
g.dukeVidal = acquireDuke(g.dukeVidal!, entrant.id, g.turn, 'ally');
log(g, `${entrant.name} received the available Duke Vidal as part of accepting the Ecaz Ambassador alliance. No separate loan acknowledgement is required. The first version uses one-battle tenure; an unused living Duke is set aside at turn end.`,
{ faction: 'ecaz', name: 'Ambassador Duke grant' });
} else {
entry.stage = 'loan';
entry.beneficiary = owner.id;
g.decision = { kind: 'ecazAmbassador', player: owner.id };
return;
}
}
} else
log(
+6 -6
View File
@@ -1319,9 +1319,9 @@ export const RULE_TOPICS: RuleTopic[] = [
'The current closing order is CHOAM market, deferred technology income, then Ecaz placement. Income received at that point can fund placement. This combined order is an implementation choice, not a priority established by a combined official FAQ.',
'The first placement costs one spice, the second two, and so on that turn. A declaration opens a Karama response before spice is paid or the token moves. Canceling stops the remaining placement opportunity for that turn; previous placements and payments remain.',
'Finish Ambassador placement advances the phase. On a later turn the price begins at one again and the earlier placement block expires. Pending declarations survive reload without charging twice.',
'Destroyed tokens return to supply; triggered regular tokens are set aside, Bene Gesserit is permanently removed, and replenishment waits for all five random tokens. Storm crossings and resolved explosions use destruction rather than trigger accounting. The reusable Ecaz token returns to supply after Duke acquisition or an alliance proposal. Basic now also offers a provisional new-ally Duke loan after consent.',
'When an eligible entrant reaches the reusable Ecaz token, Ecaz may acquire the available shared Duke. The token returns to supply and its five companions are unchanged. Unused Ecaz control persists until battle use or Moritani acquisition. Basic also connects the separate optional new-ally loan after an accepted Ambassador alliance; standing ally assignment and exceptional capture remain unfinished.',
'Unallied Ecaz can instead propose an alliance to an unallied entrant. The entrant accepts or refuses; the token returns to supply either way. Acceptance activates alliance abilities immediately. In Basic, Ecaz may then lend an available Duke to this newly allied faction or continue without a loan. The first-version loan allows one battle and sets an unused living Duke aside at turn end; those return/tenure details are provisional, not a resolved publisher ruling. An unavailable Duke never prevents alliance consent.',
'Destroyed tokens return to supply; triggered regular tokens are set aside, Bene Gesserit is permanently removed, and replenishment waits for all five random tokens. Storm/explosion destruction remains separate. The reusable Ecaz token returns to supply after acquisition or alliance proposal. Basic has an optional new-ally Duke loan; the supplied Advanced p30 automatically grants an available Duke after accepted consent.',
'When an eligible entrant reaches the reusable Ecaz token, Ecaz may acquire the available shared Duke. The token returns to supply and its companions are unchanged. Unused Ecaz control persists until battle use or Moritani acquisition. Basic optional and Advanced automatic new-ally grants are connected; standing ally assignment and exceptional capture remain unfinished.',
'Unallied Ecaz may propose an alliance to an unallied entrant. Acceptance activates alliance abilities immediately. Basic then offers an optional Duke loan; Advanced automatically adds an available Duke under supplied PDF p30, without another acknowledgement. The first version releases a surviving loan after one battle, provisionally; an unused living loan is set aside at turn end. Unavailable Duke never prevents consent.',
'When another eligible faction enters a marked stronghold, Ecaz may trigger its Ambassador for itself or its current ally, or leave the token in place. Ecaz itself, its ally, advisors and the faction matching the physical Ambassador do not trigger it. Entries with competing arrival reactions remain blocked until their ordering is implemented; a rejected entry does not spend or move its pieces.',
'Emperor grants five bank spice. Atreides records the entrant’s current Treachery hand privately for the beneficiary; Harkonnen records one randomly selected held Traitor identity, or Face Dancer identity for a Tleilaxu entrant. These snapshots remain in the recipient’s private inspection history, identify when they were taken, and do not become a live view of later changes. Opening, enlarging or closing them needs no game acknowledgement.',
'CHOAM lets the beneficiary choose any available hand cards, including none, for three spice each. Ixians require one available card to discard before drawing its replacement. Card controls respect projected reservations. After committing an Ixian exchange, a voluntary interruption must leave a card available for its required discard; a queued Truthtrance counts as already committed. A Bene Gesserit trigger permanently removes its token, then the beneficiary chooses an available effect outside the original supply for this group; unsupported copies remain visibly blocked.',
@@ -1357,7 +1357,7 @@ export const RULE_TOPICS: RuleTopic[] = [
area: 'Documentation',
status: 'Partial',
detail:
'Placement, entry choices, private inspections, token inventory and all eleven effect guides are available. The Basic new-ally Duke loan and its provisional tenure policy are distinguished from Advanced and exceptional-custody work. Complete timing and interaction refinement remains open.',
'Placement, entry choices, private inspections and all eleven guides are available. Basic optional new-ally loan and source-ordered Advanced automatic Duke grant are distinguished from exceptional custody and provisional one-battle tenure. Complete timing/interaction refinement remains open.',
},
{
area: 'Verification',
@@ -2841,9 +2841,9 @@ export const RULE_TOPICS: RuleTopic[] = [
'Duke Vidal is separate from both factions’ five ordinary leaders. His Ecaz identity does not mean Ecaz currently controls him. Inspect the shared disc to see its current controller, whether it is set aside, or whether it is in the Tanks.',
'At the end of Shipping and Movement, Moritani gains Vidal if it faces battles in at least two strongholds, excluding battles involving Ecaz, and Vidal is not in the Tanks. The printed rule takes him from the current controller. Moritani has him for one battle; it may acquire him again on a later turn by meeting the condition again. At turn end, set him aside unless he is in the Tanks or captured.',
'Karama can prevent Moritani from acquiring Vidal. That cancellation does not remove him once Moritani already controls him.',
'Ecaz gains Vidal through its Ecaz Ambassador if he is neither in the Tanks, captured nor a ghola. Ecaz keeps him until battle use or Moritani takes him. The Ambassador can instead form a consensual alliance when both factions are unallied; Ecaz may then lend Vidal to that new ally for the turn.',
'Ecaz acquires Vidal through its Ambassador outside Tanks/captured/ghola custody. The alternative forms a consensual alliance while both factions are unallied. Basic can then lend Duke optionally; the supplied Advanced physical p30 adds an available Duke to the new ally automatically and sets an unused disc aside at turn end.',
'Only Ecaz may revive Vidal, including with Ghola Treachery. Ecaz may revive him for five spice regardless of how many of its leaders are in the Tanks. Five spice is his special revival cost; his printed battle strength is six. Ecaz may begin ordinary leader revival when five leaders are in the Tanks, counting Vidal, even if it still holds another leader.',
'Current development support includes Moritani acquisition, Ecaz Ambassador self-acquisition, consensual alliances, a Basic optional new-ally loan, one-battle use, and Ecaz-only revival to living set-aside custody. The new loan uses provisional one-battle and unused-living turn-end set-aside policies. Native ordinary-disc skills coexist with Duke without assigning him a skill. Advanced loans, shared skill assignment and captured-leader interactions remain for later work; this does not certify complete modes.',
'Development support includes Moritani acquisition, Ecaz self-acquisition, consensual alliances, Basic optional loan, Advanced automatic new-ally grant, one-battle use and Ecaz-only revival to living set-aside custody. Loan one-battle release is provisional. Native ordinary-disc skills coexist without assigning Duke a skill. Shared skills, capture and wider interactions remain for refinement; complete modes are not certified.',
],
related: [
'faction-ecaz',