mirror of
https://github.com/Kelsidavis/WoWee.git
synced 2026-03-23 07:40:14 +00:00
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:
parent
d850fe6fc0
commit
36fc1df706
12 changed files with 358 additions and 48 deletions
|
|
@ -430,14 +430,26 @@ const ZoneInfo* ZoneManager::getZoneInfo(uint32_t zoneId) const {
|
|||
return nullptr;
|
||||
}
|
||||
|
||||
std::string ZoneManager::getRandomMusic(uint32_t zoneId) const {
|
||||
std::string ZoneManager::getRandomMusic(uint32_t zoneId) {
|
||||
auto it = zones.find(zoneId);
|
||||
if (it == zones.end() || it->second.musicPaths.empty()) {
|
||||
return "";
|
||||
}
|
||||
|
||||
const auto& paths = it->second.musicPaths;
|
||||
return paths[std::rand() % paths.size()];
|
||||
if (paths.size() == 1) {
|
||||
lastPlayedMusic_ = paths[0];
|
||||
return paths[0];
|
||||
}
|
||||
|
||||
// Avoid playing the same track back-to-back
|
||||
std::string pick;
|
||||
for (int attempts = 0; attempts < 5; ++attempts) {
|
||||
pick = paths[std::rand() % paths.size()];
|
||||
if (pick != lastPlayedMusic_) break;
|
||||
}
|
||||
lastPlayedMusic_ = pick;
|
||||
return pick;
|
||||
}
|
||||
|
||||
std::vector<std::string> ZoneManager::getAllMusicPaths() const {
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue