mirror of
https://github.com/Kelsidavis/WoWee.git
synced 2026-03-23 15:50:20 +00:00
feat: implement item durability tracking and vendor repair
- Add ITEM_FIELD_DURABILITY (60) and ITEM_FIELD_MAXDURABILITY (61) to update_field_table.hpp enum and wotlk/update_fields.json - Add curDurability/maxDurability to OnlineItemInfo and ItemDef structs - Parse durability fields in OBJECT_CREATE and OBJECT_VALUES handlers; preserve existing values on partial updates (fixes stale durability being reset to 0 on stack-count-only updates) - Propagate durability to ItemDef in all 5 rebuildOnlineInventory() paths - Implement GameHandler::repairItem() and repairAll() via CMSG_REPAIR_ITEM (itemGuid=0 repairs all equipped items per WotLK protocol) - Add canRepair flag to ListInventoryData; set it when player selects GOSSIP_OPTION_ARMORER in gossip window - Show "Repair All" button in vendor window header when canRepair=true - Display color-coded durability in item tooltip (green >50%, yellow >25%, red <=25%)
This commit is contained in:
parent
094ef88e57
commit
0afa41e908
9 changed files with 96 additions and 10 deletions
|
|
@ -6538,6 +6538,9 @@ void GameScreen::renderGossipWindow(game::GameHandler& gameHandler) {
|
|||
std::string processedText = replaceGenderPlaceholders(displayText, gameHandler);
|
||||
std::string label = std::string(icon) + " " + processedText;
|
||||
if (ImGui::Selectable(label.c_str())) {
|
||||
if (opt.text == "GOSSIP_OPTION_ARMORER") {
|
||||
gameHandler.setVendorCanRepair(true);
|
||||
}
|
||||
gameHandler.selectGossipOption(opt.id);
|
||||
}
|
||||
ImGui::PopID();
|
||||
|
|
@ -6936,6 +6939,17 @@ void GameScreen::renderVendorWindow(game::GameHandler& gameHandler) {
|
|||
uint32_t ms = static_cast<uint32_t>((money / 100) % 100);
|
||||
uint32_t mc = static_cast<uint32_t>(money % 100);
|
||||
ImGui::Text("Your money: %ug %us %uc", mg, ms, mc);
|
||||
|
||||
if (vendor.canRepair) {
|
||||
ImGui::SameLine();
|
||||
ImGui::SetCursorPosX(ImGui::GetCursorPosX() + 8.0f);
|
||||
if (ImGui::SmallButton("Repair All")) {
|
||||
gameHandler.repairAll(vendor.vendorGuid, false);
|
||||
}
|
||||
if (ImGui::IsItemHovered()) {
|
||||
ImGui::SetTooltip("Repair all equipped items");
|
||||
}
|
||||
}
|
||||
ImGui::Separator();
|
||||
|
||||
ImGui::TextColored(ImVec4(0.7f, 0.7f, 0.7f, 1.0f), "Right-click bag items to sell");
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue