diff --git a/src/game/world_packets.cpp b/src/game/world_packets.cpp index 63c72300..1fa34986 100644 --- a/src/game/world_packets.cpp +++ b/src/game/world_packets.cpp @@ -2086,6 +2086,7 @@ bool ItemQueryResponseParser::parse(network::Packet& packet, ItemQueryResponseDa packet.readUInt32(); // Flags packet.readUInt32(); // Flags2 + packet.readUInt32(); // BuyCount (WotLK: separate from BuyPrice) packet.readUInt32(); // BuyPrice data.sellPrice = packet.readUInt32(); // SellPrice diff --git a/src/ui/inventory_screen.cpp b/src/ui/inventory_screen.cpp index 02d98d15..45536ca1 100644 --- a/src/ui/inventory_screen.cpp +++ b/src/ui/inventory_screen.cpp @@ -1620,6 +1620,12 @@ void InventoryScreen::renderItemTooltip(const game::ItemDef& item, const game::I float dps = ((item.damageMin + item.damageMax) * 0.5f) / speed; ImGui::Text("%.1f DPS", dps); } + + // Armor appears before stat bonuses — matches WoW tooltip order + if (item.armor > 0) { + ImGui::Text("%d Armor", item.armor); + } + auto appendBonus = [](std::string& out, int32_t val, const char* shortName) { if (val <= 0) return; if (!out.empty()) out += " "; @@ -1635,10 +1641,6 @@ void InventoryScreen::renderItemTooltip(const game::ItemDef& item, const game::I if (!bonusLine.empty()) { ImGui::TextColored(green, "%s", bonusLine.c_str()); } - - if (item.armor > 0) { - ImGui::Text("%d Armor", item.armor); - } if (item.sellPrice > 0) { uint32_t g = item.sellPrice / 10000; uint32_t s = (item.sellPrice / 100) % 100;