Fix Turtle WoW compatibility: NPC spawning, quests, spells, realm display, and music

- Add TurtlePacketParsers with dedicated movement block parser (Classic format + transport timestamp)
- Fix quest giver status: read uint32 and translate vanilla enum values for Classic/Turtle
- Fix quest accept packet: remove trailing uint32 that vanilla servers reject
- Fix quest details parser: auto-detect vanilla vs WotLK format (informUnit field)
- Fix spellbook and action bar icons: fallback to WotLK DBC field indices when expansion layout fails
- Fix spell cast failure messages: translate vanilla SpellCastResult codes (+1 offset)
- Fix realm list: correct type values (6=RP, 8=RP-PvP) and population thresholds
- Fix music: disable looping for zone music, auto-advance to next random track when finished
- Add music anti-repeat: avoid playing the same track back-to-back
- Make TBC update block parsing resilient (keep parsed blocks on failure instead of aborting)
- Add right-click attack on hostile mobs
- Add name query diagnostic logging
This commit is contained in:
Kelsi 2026-02-17 05:27:03 -08:00
parent d850fe6fc0
commit 36fc1df706
12 changed files with 358 additions and 48 deletions

View file

@ -158,7 +158,7 @@ void MusicManager::crossfadeTo(const std::string& mpqPath, float fadeMs) {
fadeDuration = fadeMs / 1000.0f;
AudioEngine::instance().stopMusic();
} else {
playMusic(mpqPath);
playMusic(mpqPath, false);
}
}
@ -173,7 +173,7 @@ void MusicManager::crossfadeToFile(const std::string& filePath, float fadeMs) {
fadeDuration = fadeMs / 1000.0f;
AudioEngine::instance().stopMusic();
} else {
playFilePath(filePath);
playFilePath(filePath, false);
}
}
@ -190,9 +190,9 @@ void MusicManager::update(float deltaTime) {
// Start new track after brief pause
crossfading = false;
if (pendingIsFile) {
playFilePath(pendingTrack);
playFilePath(pendingTrack, false);
} else {
playMusic(pendingTrack);
playMusic(pendingTrack, false);
}
pendingTrack.clear();
pendingIsFile = false;