fix: both-wrong draws + double TTS entrance fix

Scoring: both-wrong is now a DRAW — equal scores (3/3), no winner,
symmetric minimal damage. Garbage answers no longer beat reasonable
ones just by being faster. Both-wrong narrations reflect the draw.

Entrance: removed duplicate announceDeepIntro() call from FightViewer
(was already called inside playEntrance). Removed _resetPositions()
after entrance (entrance already places fighters at home positions,
the extra reset caused a visible snap/reset).

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
Dorian
2026-03-12 20:09:11 +00:00
co-authored by Claude Opus 4.6
parent 017d0e3e4c
commit 6f0eb92ebb
2 changed files with 18 additions and 27 deletions
+3 -7
View File
@@ -3,7 +3,7 @@ import { ref, onMounted, onUnmounted, nextTick } from 'vue'
import { createFightScene, type FightSceneController } from '../game/FightScene'
import {
fanfareRound, fanfareFight, announce, announceDeep, announceFast,
announceDeepIntro, announceRandomHype, announceRoundHype,
announceRandomHype, announceRoundHype,
announceFinishHim, announceFlawlessVictory,
sfxCrowdCheer, sfxCrowdGasp, sfxCrowdOoh, sfxApplause, sfxDrumRoll,
setMusicIntensity, stopAllAudio,
@@ -382,8 +382,7 @@ async function _doReplay() {
}
await sleep(300)
// Deep movie trailer intro
announceDeepIntro()
// Arena intro overlay (deep voice intro plays inside playEntrance)
await showOverlay(props.fight.arenaInfo?.name || 'THE RING', '#b83dff', 900)
logItems.value.push(
{ type: 'system', round: 0, text: `ARENA: ${props.fight.arenaInfo?.name || 'THE RING'}`, color: 'neon-purple' },
@@ -393,12 +392,9 @@ async function _doReplay() {
scrollLog()
await sleep(200)
// Entrance animations
// Entrance animations (positions fighters at home, no reset needed after)
if (scene) {
await scene.playEntrance()
// Safety: ensure fighters are visible after entrance (prevents invisible characters if entrance times out)
// Re-check: scene could be destroyed during async playEntrance()
scene?._resetPositions()
if (!scene) return
await sleep(300)
}