6#ifndef SKYFIRE_LOOTMGR_H
7#define SKYFIRE_LOOTMGR_H
41#define MAX_NR_LOOT_ITEMS 16
43#define MAX_NR_QUEST_ITEMS 32
111 bool Roll(
bool rate)
const;
178 explicit LootStore(
char const* name,
char const* entryName,
bool ratesAllowed)
std::list< Condition * > ConditionList
LootStore LootTemplates_Spell("spell_loot_template", "spell id (random item creating)", false)
LootStore LootTemplates_Skinning("skinning_loot_template", "creature skinning id", true)
LootStore LootTemplates_Gameobject("gameobject_loot_template", "gameobject entry", true)
LootStore LootTemplates_Item("item_loot_template", "item entry", true)
LootStore LootTemplates_Milling("milling_loot_template", "item entry (herb)", true)
LootStore LootTemplates_Reference("reference_loot_template", "reference id", false)
LootStore LootTemplates_Disenchant("disenchant_loot_template", "item disenchant id", true)
LootStore LootTemplates_Prospecting("prospecting_loot_template", "item entry (ore)", true)
LootStore LootTemplates_Creature("creature_loot_template", "creature entry", true)
LootStore LootTemplates_Pickpocketing("pickpocketing_loot_template", "creature pickpocket lootid", true)
LootStore LootTemplates_Mail("mail_loot_template", "mail template id", false)
LootStore LootTemplates_Fishing("fishing_loot_template", "area id", true)
void LoadLootTemplates_Pickpocketing()
void LoadLootTemplates_Spell()
void LoadLootTemplates_Milling()
void LoadLootTemplates_Gameobject()
@ ROLL_ALL_TYPE_NO_DISENCHANT
@ ROLL_FLAG_TYPE_DISENCHANT
void LoadLootTemplates_Creature()
std::set< uint32 > AllowedLooterSet
std::vector< LootItem > LootItemList
std::map< uint32, QuestItemList * > QuestItemMap
void LoadLootTemplates_Fishing()
@ LOOT_SLOT_TYPE_ROLL_ONGOING
@ LOOT_SLOT_TYPE_ALLOW_LOOT
void LoadLootTemplates_Reference()
void LoadLootTemplates_Prospecting()
void LoadLootTemplates_Mail()
void LoadLootTemplates_Disenchant()
void LoadLootTemplates_Item()
std::set< uint32 > LootIdSet
UNORDERED_MAP< uint32, LootTemplate * > LootTemplateMap
std::list< LootStoreItem * > LootStoreItemList
void LoadLootTemplates_Skinning()
std::vector< QuestItem > QuestItemList
uint32 LoadAndCollectLootIds(LootIdSet &ids_set)
LootTemplate const * GetLootFor(uint32 loot_id) const
LootTemplateMap m_LootTemplates
char const * GetEntryName() const
bool HaveQuestLootForPlayer(uint32 loot_id, Player *player) const
void CheckLootRefs(LootIdSet *ref_set=NULL) const
bool HaveQuestLootFor(uint32 loot_id) const
LootTemplate * GetLootForConditionFill(uint32 loot_id)
LootStore(char const *name, char const *entryName, bool ratesAllowed)
bool IsRatesAllowed() const
bool HaveLootFor(uint32 loot_id) const
char const * GetName() const
void ReportNotExistedId(uint32 id) const
void ReportUnusedIds(LootIdSet const &ids_set) const
void Process(Loot &loot, bool rate, uint16 lootMode, uint8 groupId=0) const
void CopyConditions(const ConditionList &conditions)
void CheckLootRefs(LootTemplateMap const &store, LootIdSet *ref_set) const
bool isReference(uint32 id)
void AddEntry(LootStoreItem *item)
LootTemplate(LootTemplate const &)
LootTemplate & operator=(LootTemplate const &)
bool HasQuestDropForPlayer(LootTemplateMap const &store, Player const *player, uint8 groupId=0) const
LootStoreItemList Entries
void Verify(LootStore const &store, uint32 Id) const
std::vector< LootGroup * > LootGroups
bool HasQuestDrop(LootTemplateMap const &store, uint8 groupId=0) const
bool addConditionItem(Condition *cond)
void targetObjectDestroyLink()
void sourceObjectDestroyLink()
LinkedListHead::Iterator< LootValidatorRef > iterator
LootValidatorRef * getFirst()
LootValidatorRef * getLast()
Reference< TO, FROM > * getFirst()
Reference< TO, FROM > * getLast()
QuestItemList * FillQuestLoot(Player *player)
uint32 GetMaxSlotInLootFor(Player *player) const
QuestItemMap PlayerNonQuestNonFFAConditionalItems
std::set< uint64 > PlayersLooting
bool hasItemFor(Player *player) const
bool hasOverThresholdItem() const
bool FillLoot(uint32 lootId, LootStore const &store, Player *lootOwner, bool personal, bool noEmptyError=false, uint16 lootMode=LOOT_MODE_DEFAULT)
void NotifyQuestItemRemoved(uint8 questIndex, ObjectGuid lootGuid=0)
bool HasLooter(uint64 GUID)
QuestItemMap PlayerQuestItems
void AddItem(LootStoreItem const &item)
void NotifyMoneyRemoved(ObjectGuid lootGuid=0)
void NotifyItemRemoved(uint8 lootIndex, ObjectGuid lootGuid=0)
QuestItemList * FillNonQuestNonFFAConditionalLoot(Player *player, bool presentAtLooting)
void AddLooter(uint64 GUID)
void generateMoneyLoot(uint32 minAmount, uint32 maxAmount)
QuestItemMap PlayerFFAItems
LootItem * LootItemInSlot(uint32 lootslot, Player *player, QuestItem **qitem=NULL, QuestItem **ffaitem=NULL, QuestItem **conditem=NULL)
void RemoveLooter(uint64 GUID)
QuestItemMap const & GetPlayerQuestItems() const
void DeleteLootItemFromContainerItemDB(uint32 itemID)
std::vector< LootItem > items
QuestItemMap const & GetPlayerFFAItems() const
QuestItemList * FillFFALoot(Player *player)
QuestItemMap const & GetPlayerNonQuestNonFFAConditionalItems() const
void addLootValidatorRef(LootValidatorRef *pLootValidatorRef)
void DeleteLootMoneyFromContainerItemDB()
void FillNotNormalLootFor(Player *player, bool presentAtLooting)
std::vector< LootItem > quest_items
LootValidatorRefManager i_LootValidatorRefManager
AllowedLooterSet allowedGUIDs
void AddAllowedLooter(Player const *player)
LootItem(LootStoreItem const &li)
void WriteBitDataPart(PermissionTypes permission, LootSlotType hasSlotType, ByteBuffer *buff)
bool AllowedForPlayer(Player const *player) const
void WriteBasicDataPart(LootSlotType slotType, uint8 slot, ByteBuffer *buff)
const AllowedLooterSet & GetAllowedLooters() const
LootStoreItem(uint32 _itemid, float _chanceOrQuestChance, uint16 _lootmode, uint8 _group, int32 _mincountOrRef, uint8 _maxcount)
bool Roll(bool rate) const
bool IsValid(LootStore const &store, uint32 entry) const
void WriteData(ObjectGuid guid, LootType lootType, WorldPacket *data, bool isAoE=false)
PermissionTypes permission
LootView(Loot &_loot, Player *_viewer, PermissionTypes _permission=PermissionTypes::ALL_PERMISSION)
QuestItem(uint8 _index, bool _islooted=false)