diff options
author | Meji <alvaro.megias@outlook.com> | 2022-09-19 13:27:58 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2022-09-19 13:27:58 +0200 |
commit | b4d2166f0c7a61f5a9b159da80e478c5ae7aaa16 (patch) | |
tree | 90ba0712d7851da747be0fdbf4d3261aeb9bf5f2 /src | |
parent | 301572212fc54d4972b0e2989f57299f6351f495 (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.cpp | 10 |
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 } |