From 3092d406fa8e099f9033f942bf328672acf1e3cf Mon Sep 17 00:00:00 2001 From: Kelsi Date: Wed, 11 Mar 2026 07:24:01 -0700 Subject: [PATCH] fix: enable NPC tabard geosets for proper equipment rendering Enable tabard mesh rendering for NPCs by reading geoset variant from ItemDisplayInfo.dbc (slot 9). Tabards now render like other equipment instead of being disabled due to the previous flickering issue. --- src/core/application.cpp | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/src/core/application.cpp b/src/core/application.cpp index b04a5269..3b8e9cbe 100644 --- a/src/core/application.cpp +++ b/src/core/application.cpp @@ -5973,7 +5973,7 @@ void Application::spawnOnlineCreature(uint64_t guid, uint32_t displayId, float x uint16_t geosetSleeves = pickGeoset(801, 8); // Bare wrists (group 8, controlled by chest) uint16_t geosetPants = pickGeoset(1301, 13); // Bare legs (group 13) uint16_t geosetCape = 0; // Group 15 disabled unless cape is equipped - uint16_t geosetTabard = 0; // TODO: NPC tabard geosets currently flicker/apron; keep hidden for now + uint16_t geosetTabard = pickGeoset(1201, 12); // Group 12 (tabard), default variant 1201 rendering::VkTexture* npcCapeTextureId = nullptr; // Load equipment geosets from ItemDisplayInfo.dbc @@ -6022,7 +6022,11 @@ void Application::spawnOnlineCreature(uint64_t guid, uint32_t displayId, float x if (gg > 0) geosetGloves = pickGeoset(static_cast(301 + gg), 3); } - // Tabard (slot 9) intentionally disabled for now (see geosetTabard TODO above). + // Tabard (slot 9) → group 12 (tabard/robe mesh) + { + uint32_t gg = readGeosetGroup(9, "tabard"); + if (gg > 0) geosetTabard = pickGeoset(static_cast(1200 + gg), 12); + } // Cape (slot 10) → group 15 if (extra.equipDisplayId[10] != 0) {