From 5fed109cbfbdd9350a2928b66b5d89fe1f5e0ed3 Mon Sep 17 00:00:00 2001 From: Shauren Date: Sat, 24 Jan 2015 20:28:42 +0100 Subject: Core/Loot: Implemented automatic assignment of Heroic/Mythic item bonuses when dropped in appropriate instance difficulty --- src/server/game/Loot/LootMgr.cpp | 14 ++++++++++++++ 1 file changed, 14 insertions(+) (limited to 'src/server/game/Loot/LootMgr.cpp') 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 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); -- cgit v1.2.3