Connect normal Spice Banker deferred bank income

Fresh classic banker-income profile preserves actual bank legs, physical once-phase use and original-faction atomic Mentat collection. Provisional earned custody stays explicit; public/old/combined modes unchanged. Final check: types/lint and 6487 offline cases; focused 140; guide 10; build; native18/four legal budgets; two original six-seat CLI/human390px rooms and82 saved seats25rooms. Final two reviews no findings. Local HTTP49/55 six known upstream503 failures, not green. No reset or deployed claim.
This commit is contained in:
Quintine committed 2026-10-02 06:45:21 +10:00
1 parent 13c46450a9
commit 6785e622a7
18 files changed
+2767 -13

No files matched your search

+2
View File
@@ -190,6 +190,7 @@ import { HarassWithdrawGuide, harassWithdrawControlState } from './harass-withdr
import { HarassWithdrawChoice } from './harass-withdraw-choice';
import { PrivateBattlePlan } from './private-battle-plan';
import { SpiceBankerControl, spiceBankerControlState } from './spice-banker';
import { SpiceBankerIncome } from './spice-banker-income';
import { canUsePlanetologistBattleSpecial } from '../game/leader-skill-combat';
import type { Card } from '../game/cards';
import { RevealedBattle } from './revealed-battle';
@@ -1409,6 +1410,7 @@ export function GameTable({
</div>
</aside>
<section className="board-column">
<SpiceBankerIncome game={g} />
<DrawPiles piles={g.drawPiles} />
<div className="board-toolbar">
<span>
+23
View File
@@ -0,0 +1,23 @@
import type { GameView } from '@/game/engine';
/** Only the projected physical front-shield piles are public, not their payment receipts. */
export function SpiceBankerIncome({ game }: { game: GameView }) {
const state = game.spiceBankerIncome;
if (!state || state.deferred.length === 0) return null;
const name = (owner: string) => game.players.find(player => player.id === owner)?.name ?? owner;
return (
<section className="notice block min-w-0 space-y-2 break-words" aria-label="Spice Banker front-shield income">
<h3>Spice Banker · deferred income</h3>
<ul className="m-0 list-none p-0">
{state.deferred.map(pile => (
<li key={pile.owner}>{name(pile.owner)}: {pile.amount} spice in front of the shield.</li>
))}
</ul>
<p className="fine m-0">
This earned spice is not spendable yet. The original gaining faction collects it automatically
at the current Mentat opening; it cannot fund a bid, shipment, revival or Battle Plan beforehand.
</p>
<a href="/rules?topic=spice-banker-income#spice-banker-income">Income timing and preview limits</a>
</section>
);
}