18#ifndef TRINITY_LOOTMGR_H
19#define TRINITY_LOOTMGR_H
27#include <unordered_map>
54 : itemid(_itemid), reference(_reference), chance(_chance), lootmode(_lootmode),
55 needs_quest(_needs_quest), groupid(_groupid), mincount(_mincount), maxcount(_maxcount)
58 bool Roll(
bool rate)
const;
70 explicit LootStore(
char const* name,
char const* entryName,
bool ratesAllowed)
71 : m_name(name), m_entryName(entryName), m_ratesAllowed(ratesAllowed) { }
78 void CheckLootRefs(
LootIdSet* ref_set =
nullptr)
const;
79 void ReportUnusedIds(
LootIdSet const& ids_set)
const;
80 void ReportNonExistingId(
uint32 lootId)
const;
81 void ReportNonExistingId(
uint32 lootId,
char const* ownerType,
uint32 ownerId)
const;
83 bool HaveLootFor(
uint32 loot_id)
const {
return m_LootTemplates.find(loot_id) != m_LootTemplates.end(); }
84 bool HaveQuestLootFor(
uint32 loot_id)
const;
85 bool HaveQuestLootForPlayer(
uint32 loot_id,
Player const* player)
const;
90 char const*
GetName()
const {
return m_name; }
116 void ProcessPersonalLoot(std::unordered_map<
Player*, std::unique_ptr<Loot>>& personalLoot,
bool rate,
uint16 lootMode)
const;
117 void CopyConditions(
LootItem* li)
const;
120 bool HasDropForPlayer(
Player const* player,
uint8 groupId = 0,
bool strictUsabilityCheck =
false)
const;
130 bool isReference(
uint32 id);
145 std::vector<Player*>
const& tappers);
TC_GAME_API void LoadLootTemplates_Skinning()
TC_GAME_API LootStore LootTemplates_Reference
TC_GAME_API void LoadLootTemplates_Creature()
TC_GAME_API void LoadLootTemplates_Milling()
TC_GAME_API void LoadLootTemplates_Disenchant()
TC_GAME_API LootStore LootTemplates_Gameobject
TC_GAME_API LootStore LootTemplates_Item
TC_GAME_API LootStore LootTemplates_Prospecting
TC_GAME_API void LoadLootTemplates_Gameobject()
TC_GAME_API LootStore LootTemplates_Skinning
TC_GAME_API void LoadLootTemplates_Pickpocketing()
TC_GAME_API LootStore LootTemplates_Fishing
TC_GAME_API void LoadLootTemplates_Prospecting()
TC_GAME_API LootStore LootTemplates_Disenchant
TC_GAME_API LootStore LootTemplates_Pickpocketing
TC_GAME_API LootStore LootTemplates_Spell
std::unordered_map< uint32, LootTemplate * > LootTemplateMap
TC_GAME_API void LoadLootTemplates_Mail()
TC_GAME_API LootStore LootTemplates_Creature
TC_GAME_API void LoadLootTables()
std::unordered_map< ObjectGuid, std::unique_ptr< Loot > > GenerateDungeonEncounterPersonalLoot(uint32 dungeonEncounterId, uint32 lootId, LootStore const &store, LootType type, WorldObject const *lootOwner, uint32 minMoney, uint32 maxMoney, uint16 lootMode, MapDifficultyEntry const *mapDifficulty, std::vector< Player * > const &tappers)
TC_GAME_API LootStore LootTemplates_Mail
std::set< uint32 > LootIdSet
std::list< LootStoreItem * > LootStoreItemList
TC_GAME_API void LoadLootTemplates_Item()
TC_GAME_API void LoadLootTemplates_Fishing()
TC_GAME_API void LoadLootTemplates_Reference()
TC_GAME_API LootStore LootTemplates_Milling
TC_GAME_API void LoadLootTemplates_Spell()
LootTemplateMap m_LootTemplates
char const * GetEntryName() const
LootStore(char const *name, char const *entryName, bool ratesAllowed)
bool IsRatesAllowed() const
bool HaveLootFor(uint32 loot_id) const
char const * GetName() const
LootStoreItemList Entries
LootTemplate(LootTemplate const &)=delete
std::vector< LootGroup * > LootGroups
LootTemplate & operator=(LootTemplate const &)=delete
LootStoreItem(uint32 _itemid, uint32 _reference, float _chance, bool _needs_quest, uint16 _lootmode, uint8 _groupid, uint8 _mincount, uint8 _maxcount)
ConditionsReference conditions