Fix issue when deleting non reforged items

This commit is contained in:
silviu20092
2025-04-18 08:38:44 +03:00
parent ce454a37ca
commit acfbb5e0b5
4 changed files with 14 additions and 8 deletions

View File

@@ -429,13 +429,19 @@ bool ItemReforge::RemoveReforge(Player* player, ObjectGuid itemGuid)
return RemoveReforge(player, player->GetItemByGuid(itemGuid));
}
bool ItemReforge::RemoveReforge(Player* player, Item* item, bool force)
bool ItemReforge::RemoveReforge(Player* player, Item* item)
{
if (!force && !CanRemoveReforge(item))
if (!item || !IsAlreadyReforged(item))
return false;
bool equipped = item->IsEquipped();
if (equipped)
player->_ApplyItemMods(item, item->GetSlot(), false);
reforgingDataMap.erase(item->GetGUID().GetCounter());
if (equipped)
player->_ApplyItemMods(item, item->GetSlot(), true);
CharacterDatabase.Execute("DELETE FROM character_reforging WHERE item_guid = {}", item->GetGUID().GetCounter());

View File

@@ -76,7 +76,7 @@ public:
std::vector<Item*> GetPlayerItems(const Player* player, bool inBankAlso) const;
bool CanRemoveReforge(const Item* item) const;
bool RemoveReforge(Player* player, ObjectGuid itemGuid);
bool RemoveReforge(Player* player, Item* item, bool force = false);
bool RemoveReforge(Player* player, Item* item);
void VisualFeedback(Player* player);
void HandleCharacterRemove(uint32 guid);

View File

@@ -12,7 +12,7 @@ public:
bool CanItemRemove(Player* player, Item* item) override
{
sItemReforge->RemoveReforge(player, item, true);
sItemReforge->RemoveReforge(player, item);
return true;
}
};

View File

@@ -39,7 +39,7 @@ public:
void OnPlayerAfterMoveItemFromInventory(Player* player, Item* it, uint8 /*bag*/, uint8 /*slot*/, bool /*update*/) override
{
sItemReforge->RemoveReforge(player, it, true);
sItemReforge->RemoveReforge(player, it);
}
void OnPlayerDeleteFromDB(CharacterDatabaseTransaction trans, uint32 guid) override