export type CombatFeedbackTargetKind = 'player' | 'companion' | 'hostile'; export interface CombatFeedbackHealthSample { key: string; kind: CombatFeedbackTargetKind; hp: number; } export interface CombatFeedbackEvent { id: string; targetKey: string; kind: CombatFeedbackTargetKind; delta: number; } export function buildCombatFeedbackEvents( previousSamples: Map, currentSamples: CombatFeedbackHealthSample[], sequence: number, ) { let nextSequence = sequence; const events: CombatFeedbackEvent[] = []; currentSamples.forEach(sample => { const previous = previousSamples.get(sample.key); if (!previous) return; const delta = sample.hp - previous.hp; if (delta === 0) return; nextSequence += 1; events.push({ id: `${sample.key}:${nextSequence}`, targetKey: sample.key, kind: sample.kind, delta, }); }); return { events, nextSequence, }; }