'use client'; import type { GameView } from '@/game/engine'; import type { NativeReserveSelections } from '@/game/homeworld-native-reserves'; import { homeworldName } from '@/game/homeworld-shipment-options'; export function reinforcementsSourceLabel(game: GameView, sources: NativeReserveSelections): string { return Object.entries(sources).map(([world, forces]) => `${homeworldName(game, world)}: ${forces.normal} normal + ${forces.elite} special`).join('; '); } export function ReinforcementsSources({ game, choices, selected, onChange, busy }: { game: GameView; choices: readonly NativeReserveSelections[]; selected: number; onChange: (index: number) => void; busy: boolean; }) { if (!choices.length) return null; return
Reinforcements reserve sources

Three original native reserves go to the Tanks, normal first. These are not the invading army or future Harass returns.

{choices.length > 1 ? :

{reinforcementsSourceLabel(game, choices[0])}

} {choices.length > 1 &&

Selected fee: {reinforcementsSourceLabel(game, choices[selected])}.

}

Provisional own-World composition: counters paying the fee cannot also fund your physical dial. Ordinary counters without a temporary Sardaukar role pay first; if needed, paying converted counters reduces that role. The original printed face and support traits stay fixed; the bonus adds no physical counters.

; }