aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorMeji <alvaro.megias@outlook.com>2022-09-19 13:27:58 +0200
committerGitHub <noreply@github.com>2022-09-19 13:27:58 +0200
commitb4d2166f0c7a61f5a9b159da80e478c5ae7aaa16 (patch)
tree90ba0712d7851da747be0fdbf4d3261aeb9bf5f2 /src
parent301572212fc54d4972b0e2989f57299f6351f495 (diff)
Core/Items: Added correct context and bonus calculation for character loadout items (#28242)
Diffstat (limited to 'src')
-rw-r--r--src/server/game/Entities/Player/Player.cpp10
1 files changed, 8 insertions, 2 deletions
diff --git a/src/server/game/Entities/Player/Player.cpp b/src/server/game/Entities/Player/Player.cpp
index 0bd26e72847..18b42194733 100644
--- a/src/server/game/Entities/Player/Player.cpp
+++ b/src/server/game/Entities/Player/Player.cpp
@@ -587,6 +587,11 @@ bool Player::StoreNewItemInBestSlots(uint32 titem_id, uint32 titem_amount)
TC_LOG_DEBUG("entities.player.items", "Player::StoreNewItemInBestSlots: Player '%s' (%s) creates initial item (ItemID: %u, Count: %u)",
GetName().c_str(), GetGUID().ToString().c_str(), titem_id, titem_amount);
+ ItemContext itemContext = ItemContext::New_Character;
+ std::vector<int32> bonusListIDs;
+ std::set<uint32> contextBonuses = sDB2Manager.GetDefaultItemBonusTree(titem_id, itemContext);
+ bonusListIDs.insert(bonusListIDs.begin(), contextBonuses.begin(), contextBonuses.end());
+
// attempt equip by one
while (titem_amount > 0)
{
@@ -595,7 +600,8 @@ bool Player::StoreNewItemInBestSlots(uint32 titem_id, uint32 titem_amount)
if (msg != EQUIP_ERR_OK)
break;
- EquipNewItem(eDest, titem_id, ItemContext::NONE, true);
+ Item* item = EquipNewItem(eDest, titem_id, itemContext, true);
+ item->SetBonuses(bonusListIDs);
AutoUnequipOffhandIfNeed();
--titem_amount;
}
@@ -609,7 +615,7 @@ bool Player::StoreNewItemInBestSlots(uint32 titem_id, uint32 titem_amount)
InventoryResult msg = CanStoreNewItem(INVENTORY_SLOT_BAG_0, NULL_SLOT, sDest, titem_id, titem_amount);
if (msg == EQUIP_ERR_OK)
{
- StoreNewItem(sDest, titem_id, true, GenerateItemRandomBonusListId(titem_id));
+ StoreNewItem(sDest, titem_id, true, GenerateItemRandomBonusListId(titem_id), GuidSet(), itemContext, bonusListIDs);
return true; // stored
}