Compose same-plan Harass and Reinforcements with original reserve costs

This commit is contained in:
Quintine committed 2026-10-16 06:48:04 +11:00
1 parent feb2b03251
commit be0644c0e9
15 files changed
+288 -30

No files matched your search

+11 -4
View File
@@ -551,10 +551,8 @@ export function GameTable({
const reinforcementsPlanReason = !reinforcementsSelected ? null :
!g.battle?.reinforcements ? 'Reinforcements is unavailable in this battle.' :
g.battle.reinforcements.blocked ??
((selectedBattleWeapon?.id === 'ecaz-harass-withdraw' ||
selectedBattleDefense?.id === 'ecaz-harass-withdraw' ||
(!!selectedBattleWeapon && isStoneBurner(selectedBattleWeapon)))
? 'Reinforcements cannot share this plan with Harass & Withdraw or Stone Burner.' : null);
((!!selectedBattleWeapon && isStoneBurner(selectedBattleWeapon))
? 'Reinforcements cannot share this plan with Stone Burner.' : null);
const selectedBattleKwisatz = kwisatz && !!me.kwisatz?.active &&
!me.kwisatz.dead && !g.battle?.kwisatzBlocked &&
(!me.kwisatz.usedAt || me.kwisatz.usedAt === g.battle?.territory);
@@ -5347,6 +5345,15 @@ export function GameTable({
{g.battle.reinforcements.blocked && ` ${g.battle.reinforcements.blocked}`}
</p>
)}
{reinforcementsSelected &&
(selectedWeaponId === 'ecaz-harass-withdraw' || selectedDefenseId === 'ecaz-harass-withdraw') && (
<p className="fine">
Provisional combined timing: pay the original three-reserve
Reinforcements cost before Harass &amp; Withdraw returns any
undialed forces. Returned reserves cannot fund or change that
cost. Both physical cards are discarded after use.
</p>
)}
{reinforcementsPlanReason && <p role="status" className="notice">{reinforcementsPlanReason}</p>}
{!battlePairValid && <p role="status" className="notice">Choose two compatible battle cards. A single physical card cannot fill both slots.</p>}
{selectedBattleWeapon && planetologistSpecial(selectedBattleWeapon) && (