'use client'; import type { GameView } from '@/game/engine'; import { HelpTip } from './help-tip'; import { faction } from '@/game/catalog'; import { leaderStrengthLabel } from '@/game/cards'; import { BattleComponentInspection } from './battle-component-inspection'; import { reinforcementsSourceLabel } from './reinforcements-sources'; export function PrivateBattlePlan({ game }: { game: GameView }) { const insight = game.battle?.fullPlanInsight; if ( !insight || game.battle?.revealed || game.battle?.fullPlan?.owner !== game.me ) return null; const leader = game.allLeaders.find((l) => l.id === insight.plan.leader); const name = (id: string | null) => id ? (insight.cards.find((c) => c.id === id)?.name ?? game.allLeaders.find((l) => l.id === id)?.name ?? id) : 'None'; return (
Atreides · private inspection

{game.players.find((p) => p.id === insight.target)?.name}’s committed plan

Only you receive this inspection, including when you are helping an ally. It stays available until both plans are publicly revealed. The other combatant can prepare and seal their plan without an inspection confirmation.

{game.battle?.noFieldPlayers.includes(insight.target) && (

Provisional special-power interpretation: this is the actual committed dial and support, not the concealed token inventory. Ordinary dial Prescience remains prohibited. The original marker materializes only at the public two-plan reveal; this private inspection is not a voluntary token reveal.

)}
Dial
{insight.plan.dial}
Spice support
{insight.plan.support}
Spice Banker commitment
{insight.plan.bankerSpice ?? 0}
Leader
{name(insight.plan.leader)}
Weapon
{name(insight.plan.weapon)}
Defense
{name(insight.plan.defense)}
Kwisatz Haderach
{insight.plan.kwisatz ? 'Included' : 'Not included'}
{insight.plan.planetologistSpecial && (
Planetologist alternate Special
+2 if the leader survives; the normal card effect is not used.
)} {insight.plan.reinforcementsSources && (
Native Reinforcements fee
{reinforcementsSourceLabel(game, insight.plan.reinforcementsSources)}
)}
p.id === insight.target)?.name ?? 'Player' } cards={insight.cards} kwisatz={insight.plan.kwisatz} leader={ leader ? { name: leader.name, factionName: faction(leader.faction).name, strength: leaderStrengthLabel(leader), } : undefined } />
); }