TrinityCore
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Modules Pages
LootMgr.h
Go to the documentation of this file.
1 /*
2  * Copyright (C) 2008-2016 TrinityCore <http://www.trinitycore.org/>
3  * Copyright (C) 2005-2009 MaNGOS <http://getmangos.com/>
4  *
5  * This program is free software; you can redistribute it and/or modify it
6  * under the terms of the GNU General Public License as published by the
7  * Free Software Foundation; either version 2 of the License, or (at your
8  * option) any later version.
9  *
10  * This program is distributed in the hope that it will be useful, but WITHOUT
11  * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
12  * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
13  * more details.
14  *
15  * You should have received a copy of the GNU General Public License along
16  * with this program. If not, see <http://www.gnu.org/licenses/>.
17  */
18 
19 #ifndef TRINITY_LOOTMGR_H
20 #define TRINITY_LOOTMGR_H
21 
22 #include "ItemEnchantmentMgr.h"
23 #include "ByteBuffer.h"
24 #include "RefManager.h"
25 #include "SharedDefines.h"
26 #include "ConditionMgr.h"
27 #include "ObjectGuid.h"
28 #include <map>
29 #include <vector>
30 #include <list>
31 
32 namespace WorldPackets
33 {
34  namespace Loot
35  {
36  class LootResponse;
37  }
38 }
39 
41 {
42  ROLL_PASS = 0,
43  ROLL_NEED = 1,
47 };
48 
50 {
55 
58 };
59 
60 #define MAX_NR_LOOT_ITEMS 16
61 // note: the client cannot show more than 16 items total
62 #define MAX_NR_QUEST_ITEMS 32
63 // unrelated to the number of quest items shown, just for reserve
64 
66 {
73 };
74 
76 {
84 };
85 
87 {
88  LOOT_NONE = 0,
89 
94  // ignored always by client
98 
99  LOOT_FISHINGHOLE = 20, // unsupported by client, sending LOOT_FISHING instead
100  LOOT_INSIGNIA = 21, // unsupported by client, sending LOOT_CORPSE instead
101  LOOT_FISHING_JUNK = 22 // unsupported by client, sending LOOT_FISHING instead
102 };
103 
105 {
106  LOOT_ERROR_DIDNT_KILL = 0, // You don't have permission to loot that corpse.
107  LOOT_ERROR_TOO_FAR = 4, // You are too far away to loot that corpse.
108  LOOT_ERROR_BAD_FACING = 5, // You must be facing the corpse to loot it.
109  LOOT_ERROR_LOCKED = 6, // Someone is already looting that corpse.
110  LOOT_ERROR_NOTSTANDING = 8, // You need to be standing up to loot something!
111  LOOT_ERROR_STUNNED = 9, // You can't loot anything while stunned!
112  LOOT_ERROR_PLAYER_NOT_FOUND = 10, // Player not found
113  LOOT_ERROR_PLAY_TIME_EXCEEDED = 11, // Maximum play time exceeded
114  LOOT_ERROR_MASTER_INV_FULL = 12, // That player's inventory is full
115  LOOT_ERROR_MASTER_UNIQUE_ITEM = 13, // Player has too many of that item already
116  LOOT_ERROR_MASTER_OTHER = 14, // Can't assign item to that player
117  LOOT_ERROR_ALREADY_PICKPOCKETED = 15, // Your target has already had its pockets picked
118  LOOT_ERROR_NOT_WHILE_SHAPESHIFTED = 16 // You can't do that while shapeshifted.
119 };
120 
121 // type of Loot Item in Loot View
123 {
124  LOOT_SLOT_TYPE_ALLOW_LOOT = 0, // player can loot the item.
125  LOOT_SLOT_TYPE_ROLL_ONGOING = 1, // roll is ongoing. player cannot loot.
126  LOOT_SLOT_TYPE_MASTER = 3, // item can only be distributed by group loot master.
127  LOOT_SLOT_TYPE_LOCKED = 2, // item is shown in red. player cannot loot.
128  LOOT_SLOT_TYPE_OWNER = 4 // ignore binding confirmation and etc, for single player looting
129 };
130 
131 class Player;
132 class LootStore;
133 
135 {
136  uint32 itemid; // id of the item
137  uint32 reference; // referenced TemplateleId
138  float chance; // chance to drop for both quest and non-quest items, chance to be used for refs
140  bool needs_quest : 1; // quest drop (quest is required for item to drop)
141  uint8 groupid : 7;
142  uint8 mincount; // mincount for drop items
143  uint8 maxcount; // max drop count for the item mincount or Ref multiplicator
144  ConditionContainer conditions; // additional loot condition
145 
146  // Constructor
147  // displayid is filled in IsValid() which must be called after
148  LootStoreItem(uint32 _itemid, uint32 _reference, float _chance, bool _needs_quest, uint16 _lootmode, uint8 _groupid, uint8 _mincount, uint8 _maxcount)
149  : itemid(_itemid), reference(_reference), chance(_chance), lootmode(_lootmode),
150  needs_quest(_needs_quest), groupid(_groupid), mincount(_mincount), maxcount(_maxcount)
151  { }
152 
153  bool Roll(bool rate) const; // Checks if the entry takes it's chance (at loot generation)
154  bool IsValid(LootStore const& store, uint32 entry) const; // Checks correctness of values
155 };
156 
158 {
162  std::vector<int32> BonusListIDs;
163  ConditionContainer conditions; // additional loot condition
165  uint8 count : 8;
166  bool is_looted : 1;
167  bool is_blocked : 1;
168  bool freeforall : 1; // free for all
169  bool is_underthreshold : 1;
170  bool is_counted : 1;
171  bool needs_quest : 1; // quest drop
172  bool follow_loot_rules : 1;
173  bool canSave;
174 
175  // Constructor, copies most fields from LootStoreItem, generates random count and random suffixes/properties
176  // Should be called for non-reference LootStoreItem entries only (reference = 0)
177  explicit LootItem(LootStoreItem const& li);
178 
179  // Empty constructor for creating an empty LootItem to be filled in with DB data
180  LootItem() : itemid(0), randomSuffix(0), randomPropertyId(0), count(0), is_looted(false), is_blocked(false),
181  freeforall(false), is_underthreshold(false), is_counted(false), needs_quest(false), follow_loot_rules(false),
182  canSave(true){ };
183 
184  // Basic checks for player/item compatibility - if false no chance to see the item in the loot
185  bool AllowedForPlayer(Player const* player) const;
186  void AddAllowedLooter(Player const* player);
187  GuidSet const& GetAllowedLooters() const { return allowedGUIDs; }
188 };
189 
190 struct QuestItem
191 {
192  uint8 index; // position in quest_items;
193  bool is_looted;
194 
196  : index(0), is_looted(false) { }
197 
198  QuestItem(uint8 _index, bool _islooted = false)
199  : index(_index), is_looted(_islooted) { }
200 };
201 
202 struct Loot;
204 
205 typedef std::vector<QuestItem> QuestItemList;
206 typedef std::vector<LootItem> LootItemList;
207 typedef std::map<ObjectGuid::LowType, QuestItemList*> QuestItemMap;
208 typedef std::list<LootStoreItem*> LootStoreItemList;
209 typedef std::unordered_map<uint32, LootTemplate*> LootTemplateMap;
210 
211 typedef std::set<uint32> LootIdSet;
212 
214 {
215  public:
216  explicit LootStore(char const* name, char const* entryName, bool ratesAllowed)
217  : m_name(name), m_entryName(entryName), m_ratesAllowed(ratesAllowed) { }
218 
219  virtual ~LootStore() { Clear(); }
220 
221  void Verify() const;
222 
223  uint32 LoadAndCollectLootIds(LootIdSet& ids_set);
224  void CheckLootRefs(LootIdSet* ref_set = NULL) const; // check existence reference and remove it from ref_set
225  void ReportUnusedIds(LootIdSet const& ids_set) const;
226  void ReportNonExistingId(uint32 lootId) const;
227  void ReportNonExistingId(uint32 lootId, const char* ownerType, uint32 ownerId) const;
228 
229  bool HaveLootFor(uint32 loot_id) const { return m_LootTemplates.find(loot_id) != m_LootTemplates.end(); }
230  bool HaveQuestLootFor(uint32 loot_id) const;
231  bool HaveQuestLootForPlayer(uint32 loot_id, Player* player) const;
232 
233  LootTemplate const* GetLootFor(uint32 loot_id) const;
234  void ResetConditions();
235  LootTemplate* GetLootForConditionFill(uint32 loot_id);
236 
237  char const* GetName() const { return m_name; }
238  char const* GetEntryName() const { return m_entryName; }
239  bool IsRatesAllowed() const { return m_ratesAllowed; }
240  protected:
241  uint32 LoadLootTable();
242  void Clear();
243  private:
245  char const* m_name;
246  char const* m_entryName;
248 };
249 
251 {
252  class LootGroup; // A set of loot definitions for items (refs are not allowed inside)
253  typedef std::vector<LootGroup*> LootGroups;
254 
255  public:
257  ~LootTemplate();
258 
259  // Adds an entry to the group (at loading stage)
260  void AddEntry(LootStoreItem* item);
261  // Rolls for every item in the template and adds the rolled items the the loot
262  void Process(Loot& loot, bool rate, uint16 lootMode, uint8 groupId = 0) const;
263  void CopyConditions(const ConditionContainer& conditions);
264  void CopyConditions(LootItem* li) const;
265 
266  // True if template includes at least 1 quest drop entry
267  bool HasQuestDrop(LootTemplateMap const& store, uint8 groupId = 0) const;
268  // True if template includes at least 1 quest drop for an active quest of the player
269  bool HasQuestDropForPlayer(LootTemplateMap const& store, Player const* player, uint8 groupId = 0) const;
270 
271  // Checks integrity of the template
272  void Verify(LootStore const& store, uint32 Id) const;
273  void CheckLootRefs(LootTemplateMap const& store, LootIdSet* ref_set) const;
274  bool addConditionItem(Condition* cond);
275  bool isReference(uint32 id);
276 
277  private:
278  LootStoreItemList Entries; // not grouped only
279  LootGroups Groups; // groups have own (optimised) processing, grouped entries go there
280 
281  // Objects of this class must never be copied, we are storing pointers in container
282  LootTemplate(LootTemplate const&);
284 };
285 
286 //=====================================================
287 
288 class LootValidatorRef : public Reference<Loot, LootValidatorRef>
289 {
290  public:
292  void targetObjectDestroyLink() override { }
293  void sourceObjectDestroyLink() override { }
294 };
295 
296 //=====================================================
297 
298 class LootValidatorRefManager : public RefManager<Loot, LootValidatorRef>
299 {
300  public:
302 
305 
306  iterator begin() { return iterator(getFirst()); }
307  iterator end() { return iterator(NULL); }
308  iterator rbegin() { return iterator(getLast()); }
309  iterator rend() { return iterator(NULL); }
310 };
311 
312 //=====================================================
313 
315 {
316  QuestItemMap const& GetPlayerQuestItems() const { return PlayerQuestItems; }
317  QuestItemMap const& GetPlayerFFAItems() const { return PlayerFFAItems; }
318  QuestItemMap const& GetPlayerNonQuestNonFFAConditionalItems() const { return PlayerNonQuestNonFFAConditionalItems; }
319 
320  std::vector<LootItem> items;
321  std::vector<LootItem> quest_items;
324  ObjectGuid roundRobinPlayer; // GUID of the player having the Round-Robin ownership for the loot. If 0, round robin owner has released.
325  LootType loot_type; // required for achievement system
326  uint8 maxDuplicates; // Max amount of items with the same entry that can drop (default is 1; on 25 man raid mode 3)
327 
328  // GUID of container that holds this loot (item_instance.entry)
329  // Only set for inventory items that can be right-click looted
331 
332  Loot(uint32 _gold = 0) : gold(_gold), unlootedCount(0), roundRobinPlayer(), loot_type(LOOT_CORPSE), maxDuplicates(1), _difficultyBonusTreeMod(0){ }
333  ~Loot() { clear(); }
334 
335  ObjectGuid const& GetGUID() const { return _GUID; }
336  void SetGUID(ObjectGuid const& guid) { _GUID = guid; }
337 
338  // For deleting items at loot removal since there is no backward interface to the Item()
339  void DeleteLootItemFromContainerItemDB(uint32 itemID);
340  void DeleteLootMoneyFromContainerItemDB();
341 
342  // if loot becomes invalid this reference is used to inform the listener
343  void addLootValidatorRef(LootValidatorRef* pLootValidatorRef)
344  {
345  i_LootValidatorRefManager.insertFirst(pLootValidatorRef);
346  }
347 
348  // void clear();
349  void clear()
350  {
351  for (QuestItemMap::const_iterator itr = PlayerQuestItems.begin(); itr != PlayerQuestItems.end(); ++itr)
352  delete itr->second;
353  PlayerQuestItems.clear();
354 
355  for (QuestItemMap::const_iterator itr = PlayerFFAItems.begin(); itr != PlayerFFAItems.end(); ++itr)
356  delete itr->second;
357  PlayerFFAItems.clear();
358 
359  for (QuestItemMap::const_iterator itr = PlayerNonQuestNonFFAConditionalItems.begin(); itr != PlayerNonQuestNonFFAConditionalItems.end(); ++itr)
360  delete itr->second;
361  PlayerNonQuestNonFFAConditionalItems.clear();
362 
363  PlayersLooting.clear();
364  items.clear();
365  quest_items.clear();
366  gold = 0;
367  unlootedCount = 0;
368  roundRobinPlayer.Clear();
369  loot_type = LOOT_NONE;
370  i_LootValidatorRefManager.clearReferences();
371  _difficultyBonusTreeMod = 0;
372  }
373 
374  bool empty() const { return items.empty() && gold == 0; }
375  bool isLooted() const { return gold == 0 && unlootedCount == 0; }
376 
377  void NotifyItemRemoved(uint8 lootIndex);
378  void NotifyQuestItemRemoved(uint8 questIndex);
379  void NotifyMoneyRemoved();
380  void AddLooter(ObjectGuid GUID) { PlayersLooting.insert(GUID); }
381  void RemoveLooter(ObjectGuid GUID) { PlayersLooting.erase(GUID); }
382 
383  void generateMoneyLoot(uint32 minAmount, uint32 maxAmount);
384  bool FillLoot(uint32 lootId, LootStore const& store, Player* lootOwner, bool personal, bool noEmptyError = false, uint16 lootMode = LOOT_MODE_DEFAULT);
385 
386  // Inserts the item into the loot (called by LootTemplate processors)
387  void AddItem(LootStoreItem const & item);
388 
389  LootItem* LootItemInSlot(uint32 lootslot, Player* player, QuestItem** qitem = NULL, QuestItem** ffaitem = NULL, QuestItem** conditem = NULL);
390  uint32 GetMaxSlotInLootFor(Player* player) const;
391  bool hasItemFor(Player* player) const;
392  bool hasOverThresholdItem() const;
393 
394  // Builds data for SMSG_LOOT_RESPONSE
395  void BuildLootResponse(WorldPackets::Loot::LootResponse& packet, Player* viewer, PermissionTypes permission = ALL_PERMISSION) const;
396 
397 private:
398 
399  void FillNotNormalLootFor(Player* player, bool presentAtLooting);
400  QuestItemList* FillFFALoot(Player* player);
401  QuestItemList* FillQuestLoot(Player* player);
402  QuestItemList* FillNonQuestNonFFAConditionalLoot(Player* player, bool presentAtLooting);
403 
408 
409  // All rolls are registered here. They need to know, when the loot is not valid anymore
411 
412  // Loot GUID
415 };
416 
429 
440 
443 
445 
446 #endif
PermissionTypes
Definition: LootMgr.h:75
Definition: LootMgr.h:78
Definition: LootMgr.h:95
RollType
Definition: LootMgr.h:40
Definition: LootMgr.h:112
TC_GAME_API void LoadLootTemplates_Fishing()
Definition: LootMgr.cpp:1579
Definition: LootMgr.h:70
char const * m_entryName
Definition: LootMgr.h:246
TC_GAME_API LootStore LootTemplates_Item
uint8 maxcount
Definition: LootMgr.h:143
uint32 _difficultyBonusTreeMod
Definition: LootMgr.h:414
TC_GAME_API LootStore LootTemplates_Reference
Definition: LootMgr.h:114
Definition: LootMgr.h:288
TC_GAME_API void LoadLootTemplates_Item()
Definition: LootMgr.cpp:1637
bool m_ratesAllowed
Definition: LootMgr.h:247
void addLootValidatorRef(LootValidatorRef *pLootValidatorRef)
Definition: LootMgr.h:343
Definition: LootMgr.h:190
TC_GAME_API LootStore LootTemplates_Milling
Definition: LootMgr.h:54
QuestItemMap PlayerFFAItems
Definition: LootMgr.h:406
Definition: ConditionMgr.h:194
Definition: LootMgr.h:77
bool is_looted
Definition: LootMgr.h:193
TC_GAME_API void LoadLootTemplates_Disenchant()
Definition: LootMgr.cpp:1545
iterator begin()
Definition: LootMgr.h:306
LootItem()
Definition: LootMgr.h:180
Definition: LootMgr.h:83
Definition: LootMgr.h:99
TC_GAME_API void LoadLootTemplates_Reference()
Definition: LootMgr.cpp:1853
Definition: LootMgr.h:134
TC_GAME_API LootStore LootTemplates_Creature
TC_GAME_API void LoadLootTemplates_Milling()
Definition: LootMgr.cpp:1661
std::list< LootStoreItem * > LootStoreItemList
Definition: LootMgr.h:208
std::vector< LootGroup * > LootGroups
Definition: LootMgr.h:252
Definition: LootMgr.h:115
Definition: LootMgr.h:108
Definition: LootMgr.h:96
Definition: LootMgr.h:46
LootTemplate()
Definition: LootMgr.h:256
float chance
Definition: LootMgr.h:138
TC_GAME_API void LoadLootTables()
Definition: LootMgr.cpp:1881
std::vector< LootItem > LootItemList
Definition: LootMgr.h:206
LootStore(char const *name, char const *entryName, bool ratesAllowed)
Definition: LootMgr.h:216
LootStoreItemList Entries
Definition: LootMgr.h:278
uint16 lootmode
Definition: LootMgr.h:139
LootGroups Groups
Definition: LootMgr.h:279
Definition: LootMgr.h:101
Definition: LootMgr.h:88
Definition: LootMgr.h:113
uint32 randomSuffix
Definition: LootMgr.h:160
arena_t NULL
Definition: jemalloc_internal.h:624
Definition: LootMgr.h:67
#define false
Definition: CascPort.h:18
TC_GAME_API LootStore LootTemplates_Spell
TC_GAME_API LootStore LootTemplates_Disenchant
uint32 itemid
Definition: LootMgr.h:136
char const * GetEntryName() const
Definition: LootMgr.h:238
Definition: LootMgr.h:109
Definition: LootMgr.h:68
ConditionContainer conditions
Definition: LootMgr.h:163
iterator end()
Definition: LootMgr.h:307
TC_GAME_API LootStore LootTemplates_Fishing
Definition: LootMgr.h:52
Definition: LootMgr.h:71
void sourceObjectDestroyLink() override
Definition: LootMgr.h:293
Definition: RefManager.h:26
void clear()
Definition: LootMgr.h:349
Definition: LootMgr.h:124
TC_GAME_API LootStore LootTemplates_Gameobject
Definition: LootMgr.h:117
Definition: LootMgr.h:72
Definition: LootMgr.h:82
Definition: Group.h:144
Definition: SharedDefines.h:69
void RemoveLooter(ObjectGuid GUID)
Definition: LootMgr.h:381
LootSlotType
Definition: LootMgr.h:122
LootValidatorRef * getLast()
Definition: LootMgr.h:304
Definition: LootMgr.h:79
#define true
Definition: CascPort.h:17
int32 randomPropertyId
Definition: LootMgr.h:161
QuestItemMap const & GetPlayerNonQuestNonFFAConditionalItems() const
Definition: LootMgr.h:318
Definition: LootMgr.h:298
RollMask
Definition: LootMgr.h:49
TC_GAME_API LootStore LootTemplates_Pickpocketing
QuestItemMap const & GetPlayerQuestItems() const
Definition: LootMgr.h:316
Definition: LootMgr.h:51
TC_GAME_API void LoadLootTemplates_Mail()
Definition: LootMgr.cpp:1753
Reference< TO, FROM > * getLast()
Definition: RefManager.h:35
GuidSet allowedGUIDs
Definition: LootMgr.h:164
uint8 unlootedCount
Definition: LootMgr.h:323
LootStoreItem(uint32 _itemid, uint32 _reference, float _chance, bool _needs_quest, uint16 _lootmode, uint8 _groupid, uint8 _mincount, uint8 _maxcount)
Definition: LootMgr.h:148
GuidSet const & GetAllowedLooters() const
Definition: LootMgr.h:187
void targetObjectDestroyLink() override
Definition: LootMgr.h:292
char const * m_name
Definition: LootMgr.h:245
LootType
Definition: LootMgr.h:86
TC_GAME_API void LoadLootTemplates_Gameobject()
Definition: LootMgr.cpp:1603
Definition: LootMgr.h:314
bool canSave
Definition: LootMgr.h:173
uint8 index
Definition: LootMgr.h:192
ObjectGuid const & GetGUID() const
Definition: LootMgr.h:335
TC_GAME_API LootStore LootTemplates_Prospecting
Definition: LootMgr.h:107
LootTemplateMap m_LootTemplates
Definition: LootMgr.h:244
Definition: LootMgr.h:42
Vector2int16 & operator=(const Any &a)
QuestItem(uint8 _index, bool _islooted=false)
Definition: LootMgr.h:198
int32_t int32
Definition: Define.h:146
Definition: Reference.h:27
uint32_t uint32
Definition: Define.h:150
Definition: LootMgr.h:125
uint16_t uint16
Definition: Define.h:151
Definition: LinkedList.h:141
Definition: LootMgr.h:128
Definition: LootMgr.cpp:80
std::set< uint32 > LootIdSet
Definition: LootMgr.h:211
ObjectGuid _GUID
Definition: LootMgr.h:413
Definition: LootMgr.h:90
ConditionContainer conditions
Definition: LootMgr.h:144
Definition: LootMgr.h:93
TC_GAME_API LootStore LootTemplates_Skinning
bool empty() const
Definition: LootMgr.h:374
uint8 mincount
Definition: LootMgr.h:142
bool HaveLootFor(uint32 loot_id) const
Definition: LootMgr.h:229
char const * GetName() const
Definition: LootMgr.h:237
ObjectGuid roundRobinPlayer
Definition: LootMgr.h:324
uint32 gold
Definition: LootMgr.h:322
Definition: BattlegroundMgr.h:57
virtual ~LootStore()
Definition: LootMgr.h:219
Definition: LootMgr.h:157
Loot(uint32 _gold=0)
Definition: LootMgr.h:332
void Clear()
Definition: ObjectGuid.h:215
Definition: LootMgr.h:116
iterator rend()
Definition: LootMgr.h:309
uint8 maxDuplicates
Definition: LootMgr.h:326
Definition: LootMgr.h:250
Definition: LootMgr.h:97
TC_GAME_API void LoadLootTemplates_Pickpocketing()
Definition: LootMgr.cpp:1690
QuestItem()
Definition: LootMgr.h:195
Reference< TO, FROM > * getFirst()
Definition: RefManager.h:33
Definition: LootMgr.h:53
iterator rbegin()
Definition: LootMgr.h:308
std::vector< LootItem > items
Definition: LootMgr.h:320
bool isLooted() const
Definition: LootMgr.h:375
Definition: LootMgr.h:100
Definition: LootMgr.h:213
Definition: LootMgr.h:111
LootType loot_type
Definition: LootMgr.h:325
std::vector< QuestItem > QuestItemList
Definition: LootMgr.h:203
std::set< ObjectGuid > GuidSet
Definition: ObjectGuid.h:332
LootValidatorRefManager i_LootValidatorRefManager
Definition: LootMgr.h:410
Definition: LootPackets.h:58
#define TC_GAME_API
Definition: Define.h:134
Definition: LootMgr.h:91
TC_GAME_API void LoadLootTemplates_Creature()
Definition: LootMgr.cpp:1511
LootMethod
Definition: LootMgr.h:65
Definition: LootMgr.h:118
LinkedListHead::Iterator< LootValidatorRef > iterator
Definition: LootMgr.h:301
uint8_t uint8
Definition: Define.h:152
QuestItemMap PlayerQuestItems
Definition: LootMgr.h:405
Definition: LootMgr.h:56
QuestItemMap const & GetPlayerFFAItems() const
Definition: LootMgr.h:317
Definition: LootMgr.h:57
Definition: LootMgr.h:106
Definition: LootMgr.h:43
Definition: LootMgr.h:126
void AddLooter(ObjectGuid GUID)
Definition: LootMgr.h:380
ObjectGuid containerID
Definition: LootMgr.h:330
std::unordered_map< uint32, LootTemplate * > LootTemplateMap
Definition: LootMgr.h:209
Definition: LootMgr.h:80
TC_GAME_API void LoadLootTemplates_Prospecting()
Definition: LootMgr.cpp:1724
Definition: LootMgr.h:127
Definition: ObjectGuid.h:189
std::map< ObjectGuid::LowType, QuestItemList * > QuestItemMap
Definition: LootMgr.h:207
bool IsRatesAllowed() const
Definition: LootMgr.h:239
std::vector< int32 > BonusListIDs
Definition: LootMgr.h:162
Definition: LootMgr.h:92
~Loot()
Definition: LootMgr.h:333
std::vector< Condition * > ConditionContainer
Definition: ConditionMgr.h:239
Definition: LootMgr.h:44
LootValidatorRef()
Definition: LootMgr.h:291
QuestItemMap PlayerNonQuestNonFFAConditionalItems
Definition: LootMgr.h:407
Definition: LootMgr.h:81
TC_GAME_API LootStore LootTemplates_Mail
Definition: LootMgr.h:110
uint32 itemid
Definition: LootMgr.h:159
std::vector< LootItem > quest_items
Definition: LootMgr.h:321
uint32 reference
Definition: LootMgr.h:137
TC_GAME_API void LoadLootTemplates_Skinning()
Definition: LootMgr.cpp:1777
Definition: LootMgr.h:45
LootValidatorRef * getFirst()
Definition: LootMgr.h:303
LootError
Definition: LootMgr.h:104
Definition: LootMgr.h:69
void SetGUID(ObjectGuid const &guid)
Definition: LootMgr.h:336
GuidSet PlayersLooting
Definition: LootMgr.h:404
TC_GAME_API void LoadLootTemplates_Spell()
Definition: LootMgr.cpp:1811