26#include <unordered_map>
55#define MAX_NR_LOOT_ITEMS 18
57#define MAX_NR_QUEST_ITEMS 32
148 LootItem() : itemid(0), itemIndex(0), randomSuffix(0), randomPropertyId(0), count(0), is_looted(false), is_blocked(false),
149 freeforall(false), is_underthreshold(false), is_counted(false), needs_quest(false), follow_loot_rules(false)
153 bool AllowedForPlayer(
Player const* player,
bool isGivenByMasterLooter,
ObjectGuid ownerGuid)
const;
154 bool AllowedForPlayer(
Player const* player,
bool isGivenByMasterLooter =
false)
const;
156 void AddAllowedLooter(
Player const* player);
233 i_LootValidatorRefManager.insertFirst(pLootValidatorRef);
238 bool empty()
const {
return items.empty() && gold == 0; }
239 bool isLooted()
const {
return gold == 0 && unlootedCount == 0; }
241 void NotifyItemRemoved(
uint8 lootIndex);
242 void NotifyQuestItemRemoved(
uint8 questIndex);
243 void NotifyMoneyRemoved();
247 void generateMoneyLoot(
uint32 minAmount,
uint32 maxAmount);
255 bool hasItemForAll()
const;
256 bool hasItemFor(
Player const* player)
const;
257 bool hasOverThresholdItem()
const;
260 void FillNotNormalLootFor(
Player* player,
bool presentAtLooting);
std::vector< Condition * > ConditionContainer
@ ROLL_ALL_TYPE_NO_DISENCHANT
@ ROLL_FLAG_TYPE_DISENCHANT
std::vector< LootItem > LootItemList
@ 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
ByteBuffer & operator<<(ByteBuffer &b, LootItem const &li)
ByteBuffer & operator<<(ByteBuffer &buf, ObjectGuid const &guid)
std::set< ObjectGuid > GuidSet
LinkedListHead::Iterator< LootValidatorRef > iterator
LootValidatorRef * getFirst()
void sourceObjectDestroyLink() override
void targetObjectDestroyLink() override
Reference< TO, FROM > * getFirst()
ObjectGuid rollWinnerGUID
GuidSet const & GetAllowedLooters() const
ConditionContainer conditions
PermissionTypes permission
LootView(Loot &_loot, Player *_viewer, PermissionTypes _permission=ALL_PERMISSION)
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)