feat: speech overflow fix, 60+ voice profiles, post-fight audio cleanup

- Change speak() default to cancelPrevious=true so voices don't queue endlessly
- Add stopAllAudio() export and wire into FightViewer unmount + post-fight
- Flush speech queue at fight end with delayed cancel for clean cutoff
- Expand from 30 to 60+ voice profiles (robots, accents, game, characters)
- Add speech bubbles showing bot responses during rounds
- Wire announceFinishHim/Fatality/FlawlessVictory/Devastating to not cancel

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
Dorian
2026-03-07 11:42:32 +00:00
co-authored by Claude Opus 4.6
parent d7e2ed8b9d
commit c87bff01a8
6 changed files with 819 additions and 202 deletions
+3 -3
View File
@@ -281,14 +281,14 @@ const tierClass = (t: number) => `tier-${t}`
<template v-else>
<!-- Header with human + bot character -->
<div class="text-center mb-5">
<div class="flex items-end justify-center gap-2 mb-3">
<div class="flex items-end justify-between mb-3">
<HumanPreview
:seed="stats.avatarSeed || stats.name"
:archetype="stats.archetype || 'standard'"
:size="200"
:win-rate="(stats.winRate || 0) / 100"
anim="idle"
class="drop-shadow-[0_0_12px_rgba(0,0,0,0.6)]"
class="drop-shadow-[0_0_12px_rgba(0,0,0,0.6)] shrink-0"
/>
<SpritePreview
:seed="stats.avatarSeed || stats.name"
@@ -296,7 +296,7 @@ const tierClass = (t: number) => `tier-${t}`
:tier="stats.tier"
:size="160"
:customization="stats.customization || undefined"
class="drop-shadow-[0_0_20px_var(--glow)]"
class="drop-shadow-[0_0_20px_var(--glow)] mx-auto"
:style="{ '--glow': stats.tierColor + '80' } as any"
/>
</div>