fix(Core/Loot): (#7452)
- Players that did not participate in killing dungeon boss are not eligible to get loot. - Players that are too far away from the looted object are not eligible to get loot. - Players that released spirit and were outside the dungeon when the loot has been released are eligible to get loot. - Players that have pending bind are not eligible to get loot. - Properly get loot recipient for some chests in dungeons. - All above fixes should work in any loot mode (group loot, master loot, etc.) - Closes #2104.
This commit is contained in:
@@ -362,7 +362,7 @@ struct Loot
|
||||
void RemoveLooter(ObjectGuid GUID) { PlayersLooting.erase(GUID); }
|
||||
|
||||
void generateMoneyLoot(uint32 minAmount, uint32 maxAmount);
|
||||
bool FillLoot(uint32 lootId, LootStore const& store, Player* lootOwner, bool personal, bool noEmptyError = false, uint16 lootMode = LOOT_MODE_DEFAULT);
|
||||
bool FillLoot(uint32 lootId, LootStore const& store, Player* lootOwner, bool personal, bool noEmptyError = false, uint16 lootMode = LOOT_MODE_DEFAULT, WorldObject* lootSource = nullptr);
|
||||
|
||||
// Inserts the item into the loot (called by LootTemplate processors)
|
||||
void AddItem(LootStoreItem const& item);
|
||||
@@ -372,12 +372,12 @@ struct Loot
|
||||
bool hasItemForAll() const;
|
||||
bool hasItemFor(Player* player) const;
|
||||
[[nodiscard]] bool hasOverThresholdItem() const;
|
||||
void FillNotNormalLootFor(Player* player, bool presentAtLooting);
|
||||
void FillNotNormalLootFor(Player* player);
|
||||
|
||||
private:
|
||||
QuestItemList* FillFFALoot(Player* player);
|
||||
QuestItemList* FillQuestLoot(Player* player);
|
||||
QuestItemList* FillNonQuestNonFFAConditionalLoot(Player* player, bool presentAtLooting);
|
||||
QuestItemList* FillNonQuestNonFFAConditionalLoot(Player* player);
|
||||
|
||||
typedef GuidSet PlayersLootingSet;
|
||||
PlayersLootingSet PlayersLooting;
|
||||
|
||||
Reference in New Issue
Block a user