Vanilla/Turtle WoW compatibility: fix UPDATE_OBJECT, chat, equipment, creatures

- Route SMSG_UPDATE_OBJECT through polymorphic parsers for correct
  vanilla format (uint8 updateFlags, 6 speeds vs WotLK uint16/9)
- Fix SMSG_DESTROY_OBJECT for vanilla (8 bytes, no isDeath field)
- Add MSG_MOVE_* handlers for other player movement relay
- Add ClassicPacketParsers::parseMessageChat with targetGuid read
  and monster-type name handling
- Resolve chat sender names from player name cache before display
- Fix CSV DBC field 0 always treated as numeric ID (fixes 16+ garbled
  Turtle CSVs including Map, AreaTable, Spell, CreatureDisplayInfo)
- Add CSV DBC validation: reject garbled CSVs (>80% zero IDs) and
  fall back to binary DBC files
- Fix ItemDisplayInfo texture component field index (14+ not 15+)
  for binary DBC with gender-aware suffix resolution
- Spawn other players as visible M2 models via creature callback
- Map name cache dedup prevents overwrites from duplicate CSV records
This commit is contained in:
Kelsi 2026-02-13 18:59:09 -08:00
parent 430c2bdcfa
commit fb0ae26fe6
13 changed files with 689 additions and 106 deletions

View file

@ -474,7 +474,7 @@ bool CharacterPreview::applyEquipment(const std::vector<game::EquipmentItem>& eq
if (recIdx < 0) continue;
for (int region = 0; region < 8; region++) {
uint32_t fieldIdx = 15 + region; // texture_1..texture_8
uint32_t fieldIdx = 14 + region; // texture_1..texture_8
std::string texName = displayInfoDbc->getString(static_cast<uint32_t>(recIdx), fieldIdx);
if (texName.empty()) continue;