diff options
author | Shauren <shauren.trinity@gmail.com> | 2023-06-17 16:29:59 +0200 |
---|---|---|
committer | Shauren <shauren.trinity@gmail.com> | 2023-06-17 16:29:59 +0200 |
commit | 0fb8765a6638fd947b59fce44d5c31251d0cdadd (patch) | |
tree | 0414c93f15f760f755b559edb654be3c9865eb1d /src/server/game/Loot/Loot.cpp | |
parent | a97cdfc8f5dedc4be1998f0b1667b519fb1ce33b (diff) |
Core/Items: Item bonus generation improvements
* Pass ItemContext to item creation wherever possible
* Support scaling item levels with m+ keystone levels (not used currently)
* Fixed item link validation when client sends it as default uninitialized bonus list with context only
* Support scaling items depending on current active season (seasons not implemented)
* Implemented content tuning redirection
Diffstat (limited to 'src/server/game/Loot/Loot.cpp')
-rw-r--r-- | src/server/game/Loot/Loot.cpp | 9 |
1 files changed, 3 insertions, 6 deletions
diff --git a/src/server/game/Loot/Loot.cpp b/src/server/game/Loot/Loot.cpp index 40e185463ec..ac75747d60a 100644 --- a/src/server/game/Loot/Loot.cpp +++ b/src/server/game/Loot/Loot.cpp @@ -22,6 +22,7 @@ #include "GameTime.h" #include "Group.h" #include "Item.h" +#include "ItemBonusMgr.h" #include "ItemTemplate.h" #include "Log.h" #include "LootMgr.h" @@ -835,11 +836,7 @@ void Loot::AddItem(LootStoreItem const& item) generatedLoot.context = _itemContext; generatedLoot.count = std::min(count, proto->GetMaxStackSize()); generatedLoot.LootListId = items.size(); - if (_itemContext != ItemContext::NONE) - { - std::set<uint32> bonusListIDs = sDB2Manager.GetDefaultItemBonusTree(generatedLoot.itemid, _itemContext); - generatedLoot.BonusListIDs.insert(generatedLoot.BonusListIDs.end(), bonusListIDs.begin(), bonusListIDs.end()); - } + generatedLoot.BonusListIDs = ItemBonusMgr::GetBonusListsForItem(generatedLoot.itemid, _itemContext); items.push_back(generatedLoot); count -= proto->GetMaxStackSize(); @@ -888,7 +885,7 @@ bool Loot::AutoStore(Player* player, uint8 bag, uint8 slot, bool broadcast, bool --unlootedCount; - Item* pItem = player->StoreNewItem(dest, lootItem->itemid, true, lootItem->randomBonusListId, GuidSet(), lootItem->context, lootItem->BonusListIDs); + Item* pItem = player->StoreNewItem(dest, lootItem->itemid, true, lootItem->randomBonusListId, GuidSet(), lootItem->context, &lootItem->BonusListIDs); player->SendNewItem(pItem, lootItem->count, false, createdByPlayer, broadcast); player->ApplyItemLootedSpell(pItem, true); } |