diff --git a/components/richese-no-field.tsx b/components/richese-no-field.tsx index 98a78828..ccc9797b 100644 --- a/components/richese-no-field.tsx +++ b/components/richese-no-field.tsx @@ -7,9 +7,42 @@ import { territory, MOBILE_STRONGHOLD } from '@/game/board'; import { fighterCount } from '@/game/advisors'; import { reserveShipmentCost } from '@/game/shipment-price'; import type { RicheseNoFieldView } from '@/game/richese-no-field'; +import { quoteSmugglerNoField } from '@/game/smuggler-no-field'; import { ShipmentQuote } from './shipment-quote'; import { Button } from './ui/button'; +export function SmugglerNoFieldChoice({ + quote, + use, + busy, + onChange, +}: { + quote: ReturnType; + use: boolean; + busy: boolean; + onChange: (use: boolean) => void; +}) { + if (!quote) return null; + return ( +
+ +

+ The companion force enters the empty territory immediately. The No-Field + token still uses the normal one-force shipment price, and its hidden + forces remain in reserves until revelation. +

+
+ ); +} + /** This renderer receives public player data only, never the private token model. */ export function NoFieldBoardMarkers({ players, @@ -76,6 +109,7 @@ export function RicheseNoFieldControls({ }) { const id = useId(); const [selection, setSelection] = useState(''); + const [useSmuggler, setUseSmuggler] = useState(false); const info = game.richeseNoField; const me = game.players.find((player) => player.id === game.me); if (!info || info.owner !== game.me || !info.private || !me) return null; @@ -97,6 +131,9 @@ export function RicheseNoFieldControls({ game.karamaShipping?.player === me.id, }; const cost = reserveShipmentCost(rate, selectedTerritory.type, 1); + const smuggler = info.canShip + ? quoteSmugglerNoField(game, me.id, destination) + : null; const share = !me.ally || allyPayment === '' ? Math.max(0, cost - (me.spice ?? 0)) @@ -137,8 +174,9 @@ export function RicheseNoFieldControls({

Your token values are private until revealed. A concealed marker - counts as one force, even when its value is zero. Physical forces - remain in reserves until revelation. + counts as one force, even when its value is zero. Its hidden forces + remain in reserves until revelation; a Smuggler companion is a + separate real force that leaves reserves immediately.