'use client'; import { useState } from 'react'; import type { Action, GameView } from '@/game/engine'; import { choamPowerKey } from '@/game/choam-power-options'; import { ChoamPowerCost } from './choam-power-cost'; import { NexusCardFace } from './nexus-cards'; import { Button } from './ui/button'; export function ChoamKull({ game, act, busy, }: { game: GameView; act: (action: Action) => void; busy: boolean; }) { const [selected, select] = useState(''); const reaction = game.kullReaction; if (!reaction) return null; const reactor = game.players.find((player) => player.id === reaction.player); const target = game.players.find((player) => player.id === reaction.target); const ownsOffer = game.me === reaction.player && reaction.canDecline; const disabled = busy || game.status !== 'playing'; // Foreign projections never authorize private cost controls or inspectors. const plays = ownsOffer ? reaction.plays : []; const play = plays.find((candidate) => choamPowerKey(candidate) === selected) ?? plays.find((candidate) => !candidate.blocked) ?? plays[0]; const canUse = !disabled && !reaction.blocked && !!play && !play.blocked; return (

Kull Wahad · attempted Karama play

{target?.name ?? 'The activating player'} is attempting {reaction.intent}. The attempted card remains unplayed while {reactor?.name ?? 'CHOAM'} responds.

{!ownsOffer ? (

Waiting for {reactor?.name ?? 'CHOAM'} to respond.

) : ( <>

Decline to continue the original play, or choose a listed physical cost for Kull Wahad. Printed Kull uses its own Worthless Card; CHOAM Nexus Cunning can use any eligible Treachery Card. Successful Kull retains the attempted card and prevents {reaction.scope === 'effect' ? <>that player from using {reaction.effect} again this phase; other Karama effects remain available. : <>that player’s Karama activations for this phase.} A different eligible Karama can prevent Kull before that restriction takes effect.

{reaction.blocked &&

{reaction.blocked}

} {!reaction.blocked && play && (
{play.source === 'nexus' && game.nexusCards?.card === 'choam' && ( )}

Physical Treachery cost: {play.card.id}

)} )}
); }