diff --git a/src/server/game/Loot/LootMgr.cpp b/src/server/game/Loot/LootMgr.cpp index 94d328dfe..68ef554d4 100644 --- a/src/server/game/Loot/LootMgr.cpp +++ b/src/server/game/Loot/LootMgr.cpp @@ -679,6 +679,8 @@ QuestItemList* Loot::FillQuestLoot(Player* player) { LootItem& item = quest_items[i]; + sScriptMgr->OnBeforeFillQuestLootItem(player, item); + // Quest item is not free for all and is already assigned to another player // or player doesn't need it if (item.is_blocked || !item.AllowedForPlayer(player, sourceWorldObjectGUID)) diff --git a/src/server/game/Scripting/ScriptDefines/PlayerScript.cpp b/src/server/game/Scripting/ScriptDefines/PlayerScript.cpp index 6b7be2ca5..a21f15f1d 100644 --- a/src/server/game/Scripting/ScriptDefines/PlayerScript.cpp +++ b/src/server/game/Scripting/ScriptDefines/PlayerScript.cpp @@ -582,6 +582,14 @@ void ScriptMgr::OnLootItem(Player* player, Item* item, uint32 count, ObjectGuid }); } +void ScriptMgr::OnBeforeFillQuestLootItem(Player* player, LootItem& item) +{ + ExecuteScript([&](PlayerScript* script) + { + script->OnBeforeFillQuestLootItem(player, item); + }); +} + void ScriptMgr::OnStoreNewItem(Player* player, Item* item, uint32 count) { ExecuteScript([&](PlayerScript* script) diff --git a/src/server/game/Scripting/ScriptMgr.h b/src/server/game/Scripting/ScriptMgr.h index 241e54991..52575dc6d 100644 --- a/src/server/game/Scripting/ScriptMgr.h +++ b/src/server/game/Scripting/ScriptMgr.h @@ -1181,6 +1181,9 @@ public: //After looting item virtual void OnLootItem(Player* /*player*/, Item* /*item*/, uint32 /*count*/, ObjectGuid /*lootguid*/) { } + //Before looting item + virtual void OnBeforeFillQuestLootItem(Player* /*player*/, LootItem& /*item*/) { } + //After looting item (includes master loot). virtual void OnStoreNewItem(Player* /*player*/, Item* /*item*/, uint32 /*count*/) { } @@ -2290,6 +2293,7 @@ public: /* PlayerScript */ void GetCustomArenaPersonalRating(Player const* player, uint8 slot, uint32& rating) const; void OnGetMaxPersonalArenaRatingRequirement(Player const* player, uint32 minSlot, uint32& maxArenaRating) const; void OnLootItem(Player* player, Item* item, uint32 count, ObjectGuid lootguid); + void OnBeforeFillQuestLootItem(Player* player, LootItem& item); void OnStoreNewItem(Player* player, Item* item, uint32 count); void OnCreateItem(Player* player, Item* item, uint32 count); void OnQuestRewardItem(Player* player, Item* item, uint32 count);