'use client'; import type { GameView } from '@/game/engine'; import { truthQuestionText } from '@/game/truthtrance'; import { CHEAP_HERO_TRAITOR } from '@/game/traitors'; /** Keep only the own original question and whole answer visible. The native * battle controls own declaration choices; no residual belongs in this panel. */ export function MixedTraitorPromises({ game }: { game: GameView }) { const own = game.mixedTraitorPromises.filter(promise => promise.player === game.me); if (!own.length) return null; const leaderName = (id: string) => id === CHEAP_HERO_TRAITOR ? 'Cheap Hero / Heroine' : game.allLeaders.find(leader => leader.id === id)?.name ?? id; return

Your mixed Traitor promises

Current facts are snapshotted at the answer. They create no promise to keep cards, spice or forces afterward. Only the aggregate answer is shared. Individual fact answers and any reduced declaration commitment remain private. AND requires every condition; OR requires at least one. No negates the whole expression, not each condition separately.

A constant whole answer is complete immediately without a declaration commitment. A remaining commitment completes at your original native Reveal or decline declaration. This concerns the declaration: a later Karama or betrayal response can still prevent its effect. Use the ordinary battle controls for the currently legal declaration choices. {' '}Mixed Traitor rules.

; }