mirror of
https://github.com/silviu20092/mod-reforging
synced 2025-11-29 16:38:15 +08:00
Fix issue when deleting non reforged items
This commit is contained in:
@@ -429,15 +429,21 @@ 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;
|
||||
|
||||
player->_ApplyItemMods(item, item->GetSlot(), false);
|
||||
reforgingDataMap.erase(item->GetGUID().GetCounter());
|
||||
player->_ApplyItemMods(item, item->GetSlot(), true);
|
||||
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());
|
||||
|
||||
SendItemPacket(player, item);
|
||||
|
||||
@@ -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);
|
||||
|
||||
|
||||
@@ -12,7 +12,7 @@ public:
|
||||
|
||||
bool CanItemRemove(Player* player, Item* item) override
|
||||
{
|
||||
sItemReforge->RemoveReforge(player, item, true);
|
||||
sItemReforge->RemoveReforge(player, item);
|
||||
return true;
|
||||
}
|
||||
};
|
||||
|
||||
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user