26#include <unordered_map>
63#define MAX_NR_LOOT_ITEMS 18
65#define MAX_NR_QUEST_ITEMS 32
171 LootItem() : itemid(0), itemIndex(0), randomPropertySeed(0), randomPropertyId(0), count(0), is_looted(false), is_blocked(false),
172 freeforall(false), is_underthreshold(false), is_counted(false), needs_quest(false), follow_loot_rules(false)
176 bool AllowedForPlayer(
Player const* player,
bool isGivenByMasterLooter,
ObjectGuid ownerGuid)
const;
177 bool AllowedForPlayer(
Player const* player,
bool isGivenByMasterLooter =
false)
const;
179 void AddAllowedLooter(
Player const* player);
250 i_LootValidatorRefManager.insertFirst(pLootValidatorRef);
255 bool empty()
const {
return items.empty() && gold == 0; }
256 bool isLooted()
const {
return gold == 0 && unlootedCount == 0; }
258 void NotifyItemRemoved(
uint8 lootIndex);
259 void NotifyQuestItemRemoved(
uint8 questIndex);
260 void NotifyMoneyRemoved();
264 void generateMoneyLoot(
uint32 minAmount,
uint32 maxAmount);
272 bool hasItemForAll()
const;
273 bool hasItemFor(
Player const* player)
const;
274 bool hasOverThresholdItem()
const;
280 void FillNotNormalLootFor(
Player* player,
bool presentAtLooting);
std::vector< Condition * > ConditionContainer
@ ROLL_ALL_TYPE_NO_DISENCHANT
@ ROLL_FLAG_TYPE_DISENCHANT
std::vector< LootItem > LootItemList
constexpr LootType GetLootTypeForClient(LootType lootType)
@ LOOT_SLOT_TYPE_ROLL_ONGOING
@ LOOT_SLOT_TYPE_ALLOW_LOOT
std::unordered_map< ObjectGuid, NotNormalLootItemList * > NotNormalLootItemMap
std::vector< NotNormalLootItem > NotNormalLootItemList
@ LOOT_ERROR_MASTER_OTHER
@ LOOT_ERROR_MASTER_INV_FULL
@ LOOT_ERROR_MASTER_UNIQUE_ITEM
@ LOOT_ERROR_PLAY_TIME_EXCEEDED
@ LOOT_ERROR_NOT_WHILE_SHAPESHIFTED
@ LOOT_ERROR_PLAYER_NOT_FOUND
@ LOOT_ERROR_ALREADY_PICKPOCKETED
std::set< ObjectGuid > GuidSet
LinkedListHead::Iterator< LootValidatorRef > iterator
LootValidatorRef * getFirst()
void sourceObjectDestroyLink() override
void targetObjectDestroyLink() override
Reference< TO, FROM > * getFirst()
ObjectGuid rollWinnerGUID
uint32 randomPropertySeed
GuidSet const & GetAllowedLooters() const
ConditionContainer conditions
void AddLooter(ObjectGuid GUID)
NotNormalLootItemMap const & GetPlayerQuestItems() const
NotNormalLootItemMap PlayerFFAItems
ObjectGuid roundRobinPlayer
NotNormalLootItemMap PlayerNonQuestNonFFAConditionalItems
NotNormalLootItemMap const & GetPlayerNonQuestNonFFAConditionalItems() const
std::vector< LootItem > items
void RemoveLooter(ObjectGuid GUID)
NotNormalLootItemMap PlayerQuestItems
NotNormalLootItemMap const & GetPlayerFFAItems() const
void addLootValidatorRef(LootValidatorRef *pLootValidatorRef)
std::vector< LootItem > quest_items
LootValidatorRefManager i_LootValidatorRefManager
NotNormalLootItem(uint8 _index, bool _islooted=false)