aboutsummaryrefslogtreecommitdiff
path: root/src/server/game/Loot/LootMgr.cpp
diff options
context:
space:
mode:
authorShauren <shauren.trinity@gmail.com>2015-01-24 20:28:42 +0100
committerShauren <shauren.trinity@gmail.com>2015-01-24 20:28:42 +0100
commit5fed109cbfbdd9350a2928b66b5d89fe1f5e0ed3 (patch)
tree487471a9d9631e6ab7ae17da905908ac99a8bb42 /src/server/game/Loot/LootMgr.cpp
parent284b807af47fac32278dc1d1b3dce3da792d6d74 (diff)
Core/Loot: Implemented automatic assignment of Heroic/Mythic item bonuses when dropped in appropriate instance difficulty
Diffstat (limited to 'src/server/game/Loot/LootMgr.cpp')
-rw-r--r--src/server/game/Loot/LootMgr.cpp14
1 files changed, 14 insertions, 0 deletions
diff --git a/src/server/game/Loot/LootMgr.cpp b/src/server/game/Loot/LootMgr.cpp
index 487454c6e2f..b6a3cc3dd5e 100644
--- a/src/server/game/Loot/LootMgr.cpp
+++ b/src/server/game/Loot/LootMgr.cpp
@@ -419,6 +419,12 @@ void LootItem::BuildItemInstance(WorldPackets::Item::ItemInstance& instance) con
instance.ItemID = itemid;
instance.RandomPropertiesSeed = randomSuffix;
instance.RandomPropertiesID = randomPropertyId;
+ if (!BonusListIDs.empty())
+ {
+ WorldPackets::Item::ItemBonusInstanceData bonusData;
+ instance.ItemBonus.Value.BonusListIDs = BonusListIDs;
+ instance.ItemBonus.HasValue = true;
+ }
}
//
@@ -442,6 +448,12 @@ void Loot::AddItem(LootStoreItem const& item)
{
LootItem generatedLoot(item);
generatedLoot.count = std::min(count, proto->GetMaxStackSize());
+ if (_difficultyBonusTreeMod)
+ {
+ std::set<uint32> bonusListIDs = sDB2Manager.GetItemBonusTree(generatedLoot.itemid, _difficultyBonusTreeMod);
+ generatedLoot.BonusListIDs.insert(generatedLoot.BonusListIDs.end(), bonusListIDs.begin(), bonusListIDs.end());
+ }
+
lootItems.push_back(generatedLoot);
count -= proto->GetMaxStackSize();
@@ -469,6 +481,8 @@ bool Loot::FillLoot(uint32 lootId, LootStore const& store, Player* lootOwner, bo
return false;
}
+ _difficultyBonusTreeMod = lootOwner->GetMap()->GetDifficultyLootBonusTreeMod();
+
items.reserve(MAX_NR_LOOT_ITEMS);
quest_items.reserve(MAX_NR_QUEST_ITEMS);