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));
|
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;
|
return false;
|
||||||
|
|
||||||
player->_ApplyItemMods(item, item->GetSlot(), false);
|
bool equipped = item->IsEquipped();
|
||||||
reforgingDataMap.erase(item->GetGUID().GetCounter());
|
|
||||||
player->_ApplyItemMods(item, item->GetSlot(), true);
|
|
||||||
|
|
||||||
|
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());
|
CharacterDatabase.Execute("DELETE FROM character_reforging WHERE item_guid = {}", item->GetGUID().GetCounter());
|
||||||
|
|
||||||
SendItemPacket(player, item);
|
SendItemPacket(player, item);
|
||||||
|
|||||||
@@ -76,7 +76,7 @@ public:
|
|||||||
std::vector<Item*> GetPlayerItems(const Player* player, bool inBankAlso) const;
|
std::vector<Item*> GetPlayerItems(const Player* player, bool inBankAlso) const;
|
||||||
bool CanRemoveReforge(const Item* item) const;
|
bool CanRemoveReforge(const Item* item) const;
|
||||||
bool RemoveReforge(Player* player, ObjectGuid itemGuid);
|
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 VisualFeedback(Player* player);
|
||||||
void HandleCharacterRemove(uint32 guid);
|
void HandleCharacterRemove(uint32 guid);
|
||||||
|
|
||||||
|
|||||||
@@ -12,7 +12,7 @@ public:
|
|||||||
|
|
||||||
bool CanItemRemove(Player* player, Item* item) override
|
bool CanItemRemove(Player* player, Item* item) override
|
||||||
{
|
{
|
||||||
sItemReforge->RemoveReforge(player, item, true);
|
sItemReforge->RemoveReforge(player, item);
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -39,7 +39,7 @@ public:
|
|||||||
|
|
||||||
void OnPlayerAfterMoveItemFromInventory(Player* player, Item* it, uint8 /*bag*/, uint8 /*slot*/, bool /*update*/) override
|
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
|
void OnPlayerDeleteFromDB(CharacterDatabaseTransaction trans, uint32 guid) override
|
||||||
|
|||||||
Reference in New Issue
Block a user