Prototype modifier-aware Smuggler battle collection

This commit is contained in:
Quintine committed 2026-10-17 11:33:07 +11:00
1 parent d6d71c7c02
commit 63298be1e1
22 files changed
+836 -84

No files matched your search

+3 -3
View File
@@ -78,7 +78,7 @@ import { Distrans } from './distrans';
import { JuiceOfSapho } from './juice-of-sapho';
import { LeaderSkillsPanel } from './leader-skills';
import { LeaderSkillBattleGuide } from './leader-skill-battle-guide';
import { smugglerBattleModeSupported, smugglerBattlePlanBlock } from '@/game/smuggler-battle';
import { smugglerBattlePlanBlock } from '@/game/smuggler-battle';
import { SmugglerBattleCollection } from './smuggler-battle-collection';
import { SandmasterVictorySpice } from './sandmaster-victory-spice';
import { RihaniChoice, RihaniHistory } from './rihani-decipherer';
@@ -574,7 +574,7 @@ export function GameTable({
assignments: g.leaderSkills?.assignments.filter(a => a.controller === me.id) ?? [],
leader: me.leaders.find(l => l.id === selectedBattleLeader), weapon: selectedBattleWeapon,
defense: selectedBattleDefense, kwisatz: selectedBattleKwisatz,
}, smugglerBattleModeSupported(g), { territory: g.battle.territory, spice: g.spice }) : null;
}, g.battle.smugglerCollectionSupported, { territory: g.battle.territory, spice: g.spice }) : null;
const occupyControl = ecazOccupyPlanControl(g,
committed.dial ? Number(committed.dial.value) : battleDial,
battleFreeSupport ? 0 : battleSupport);
@@ -5156,7 +5156,7 @@ export function GameTable({
<>
{g.battle.smugglerCollection && <p className="notice">
{g.players.find(p => p.id === g.battle!.smugglerCollection!.player)?.name}’s Smuggler has {g.battle.smugglerCollection.amount} spice pending from the reveal-time piles.
If the leader survives, collection resolves before battle settlement, even after defeat. A partial collection across several piles requires its owner’s sector choice. That spice is not yet spendable.
A surviving leader collects unless an actual zero-strength weapon effect resolves. Collection settles before other battle cleanup, even after defeat; a partial collection across several piles requires its owner’s sector choice. This reveal-time cap is not yet spendable.
</p>}
{!g.battle.traitorVoters.includes(me.id) && (
<p className="notice">
+1 -1
View File
@@ -20,7 +20,7 @@ export function LeaderSkillBattleGuide({ game, leader }: { game: GameView; leade
{sandmaster && <p>If this Sandmaster survives and wins, add 3 spice to an existing pile in the territory. One pile resolves automatically; with several, provisionally choose its sector. No existing spice means no addition.</p>}
{rihani && <p>If this Rihani Decipherer survives and wins, you may draw two Traitors and exchange an unused old card for one of them. A native Rihani also privately inspects two deck cards first.</p>}
{smuggler && <p>{game.battle!.smugglerCollectionEnabled
? 'Smuggler records the territory’s positive piles when both plans reveal, capped in total by this leader’s unmodified strength. A surviving leader collects even if you lose or have no forces left. A partial collection across several piles provisionally asks you for sector amounts; single-pile and all/none collections stay automatic. Pending spice cannot fund this plan. Strength modifiers and other combined modules remain under review.'
? 'Smuggler records the territory’s positive piles when both plans reveal. Provisional strength policy: the cap includes the copied or printed disc value, declared leader bonuses and Kwisatz. A surviving leader collects even if you lose or have no forces left, unless an actual zero-strength weapon effect resolves. A partial collection across several piles asks you for sector amounts; single-pile and all/none collections stay automatic. Pending spice cannot fund this plan. This modifier policy is not a publisher ruling; other combined modules remain under review.'
: 'This saved battle predates automatic Smuggler collection. Its original battle behavior is preserved; new battles use the current collection flow.'}</p>}
{(mentat || bureaucrat) && <p className="fine">These score effects resolve automatically. They do not change the leader’s printed value or spice bounty.</p>}
</div>;
+1 -1
View File
@@ -115,7 +115,7 @@ export function LeaderSkillsPanel({
Special-card battle use, Suk Graduate force rescue, Mentat’s private
weapon question and battle bonus, Bureaucrat payment redirection and battle scores, Sandmaster ground-route collection and
victory spice, Rihani inspections and exchanges, optional Smuggler
reserve shipping, Spice Banker battle spending, and Diplomat copying
reserve shipping and provisional modifier-inclusive battle collection, Spice Banker battle spending, and Diplomat copying
an opposing canonical printed defensive role with a committed Worthless card
after plans are revealed. Source-specific timing and combinations remain
guarded; complete mode acceptance is unfinished.