AzerothCore 3.3.5a
OpenSource WoW Emulator
Loading...
Searching...
No Matches
LootItem Struct Reference

#include "LootMgr.h"

Public Member Functions

 LootItem (LootStoreItem const &li)
 
 LootItem ()=default
 
bool AllowedForPlayer (Player const *player, ObjectGuid source) const
 
void AddAllowedLooter (Player const *player)
 
const AllowedLooterSetGetAllowedLooters () const
 

Public Attributes

uint32 itemid
 
uint32 itemIndex
 
uint32 randomSuffix
 
int32 randomPropertyId
 
ConditionList conditions
 
AllowedLooterSet allowedGUIDs
 
ObjectGuid rollWinnerGUID
 
uint8 count: 8
 
bool is_looted: 1
 
bool is_blocked: 1
 
bool freeforall: 1
 
bool is_underthreshold: 1
 
bool is_counted: 1
 
bool needs_quest: 1
 
bool follow_loot_rules: 1
 
uint8 groupid: 7
 

Detailed Description

Constructor & Destructor Documentation

◆ LootItem() [1/2]

LootItem::LootItem ( LootStoreItem const &  li)
explicit
394{
395 itemid = li.itemid;
396 itemIndex = 0;
397 conditions = li.conditions;
398
399 ItemTemplate const* proto = sObjectMgr->GetItemTemplate(itemid);
400 freeforall = proto && proto->HasFlag(ITEM_FLAG_MULTI_DROP);
402
403 needs_quest = li.needs_quest;
404
407 count = 0;
408 is_looted = 0;
409 is_blocked = 0;
411 is_counted = 0;
413 groupid = li.groupid;
414}
uint32 GenerateEnchSuffixFactor(uint32 item_id)
Definition ItemEnchantmentMgr.cpp:125
@ ITEM_FLAG_MULTI_DROP
Definition ItemTemplate.h:158
@ ITEM_FLAGS_CU_FOLLOW_LOOT_RULES
Definition ItemTemplate.h:221
#define sObjectMgr
Definition ObjectMgr.h:1712
static int32 GenerateItemRandomPropertyId(uint32 item_id)
Definition Item.cpp:622
static ObjectGuid const Empty
Definition ObjectGuid.h:120
Definition ItemTemplate.h:619
bool HasFlagCu(ItemFlagsCustom flag) const
Definition ItemTemplate.h:827
bool HasFlag(ItemFlags flag) const
Definition ItemTemplate.h:825
uint32 itemid
Definition LootMgr.h:155
bool is_blocked
Definition LootMgr.h:164
uint8 groupid
Definition LootMgr.h:170
ObjectGuid rollWinnerGUID
Definition LootMgr.h:161
bool needs_quest
Definition LootMgr.h:168
bool follow_loot_rules
Definition LootMgr.h:169
bool is_underthreshold
Definition LootMgr.h:166
int32 randomPropertyId
Definition LootMgr.h:158
uint32 itemIndex
Definition LootMgr.h:156
uint8 count
Definition LootMgr.h:162
bool is_looted
Definition LootMgr.h:163
ConditionList conditions
Definition LootMgr.h:159
bool freeforall
Definition LootMgr.h:165
uint32 randomSuffix
Definition LootMgr.h:157
bool is_counted
Definition LootMgr.h:167

References LootStoreItem::conditions, conditions, count, ObjectGuid::Empty, follow_loot_rules, freeforall, GenerateEnchSuffixFactor(), Item::GenerateItemRandomPropertyId(), LootStoreItem::groupid, groupid, ItemTemplate::HasFlag(), ItemTemplate::HasFlagCu(), is_blocked, is_counted, is_looted, is_underthreshold, ITEM_FLAG_MULTI_DROP, ITEM_FLAGS_CU_FOLLOW_LOOT_RULES, LootStoreItem::itemid, itemid, itemIndex, LootStoreItem::needs_quest, needs_quest, randomPropertyId, randomSuffix, rollWinnerGUID, and sObjectMgr.

◆ LootItem() [2/2]

LootItem::LootItem ( )
default

Member Function Documentation

◆ AddAllowedLooter()

void LootItem::AddAllowedLooter ( Player const *  player)
454{
455 allowedGUIDs.insert(player->GetGUID());
456}
AllowedLooterSet allowedGUIDs
Definition LootMgr.h:160

References allowedGUIDs, and Object::GetGUID().

Referenced by Loot::FillNonQuestNonFFAConditionalLoot(), and Loot::FillQuestLoot().

◆ AllowedForPlayer()

bool LootItem::AllowedForPlayer ( Player const *  player,
ObjectGuid  source 
) const
418{
419 ItemTemplate const* pProto = sObjectMgr->GetItemTemplate(itemid);
420 if (!pProto)
421 return false;
422
423 if (sDisableMgr->IsDisabledFor(DISABLE_TYPE_LOOT, itemid, nullptr))
424 return false;
425
426 if (!sConditionMgr->IsObjectMeetToConditions(const_cast<Player*>(player), conditions))
427 return false;
428
429 // not show loot for not own team
430 if (pProto->HasFlag2(ITEM_FLAG2_FACTION_HORDE) && player->GetTeamId(true) != TEAM_HORDE)
431 return false;
432
433 if (pProto->HasFlag2(ITEM_FLAG2_FACTION_ALLIANCE) && player->GetTeamId(true) != TEAM_ALLIANCE)
434 return false;
435
436 // profession / recipe checks
437 if (pProto->HasFlag(ITEM_FLAG_HIDE_UNUSABLE_RECIPE) && (!player->HasSkill(pProto->RequiredSkill) || player->HasSpell(pProto->Spells[1].SpellId)))
438 return false;
439
440 if (pProto->Class == ITEM_CLASS_RECIPE && pProto->Bonding == BIND_WHEN_PICKED_UP && pProto->Spells[1].SpellId != 0 && player->HasSpell(pProto->Spells[1].SpellId))
441 return false;
442
443 // check quest requirements
444 if (needs_quest && !pProto->HasFlagCu(ITEM_FLAGS_CU_IGNORE_QUEST_STATUS) && !player->HasQuestForItem(itemid))
445 return false;
446
447 if (!sScriptMgr->OnAllowedForPlayerLootCheck(player, source))
448 return false;
449
450 return true;
451}
#define sConditionMgr
Definition ConditionMgr.h:292
#define sDisableMgr
Definition DisableMgr.h:88
@ DISABLE_TYPE_LOOT
Definition DisableMgr.h:38
@ ITEM_FLAG2_FACTION_HORDE
Definition ItemTemplate.h:183
@ ITEM_FLAG2_FACTION_ALLIANCE
Definition ItemTemplate.h:184
@ ITEM_FLAG_HIDE_UNUSABLE_RECIPE
Definition ItemTemplate.h:172
@ BIND_WHEN_PICKED_UP
Definition ItemTemplate.h:96
@ ITEM_FLAGS_CU_IGNORE_QUEST_STATUS
Definition ItemTemplate.h:220
@ ITEM_CLASS_RECIPE
Definition ItemTemplate.h:300
#define sScriptMgr
Definition ScriptMgr.h:734
@ TEAM_ALLIANCE
Definition SharedDefines.h:748
@ TEAM_HORDE
Definition SharedDefines.h:749
Definition Player.h:1084
uint32 RequiredSkill
Definition ItemTemplate.h:637
_Spell Spells[MAX_ITEM_PROTO_SPELLS]
Definition ItemTemplate.h:662
bool HasFlag2(ItemFlags2 flag) const
Definition ItemTemplate.h:826
uint32 Class
Definition ItemTemplate.h:621
uint32 Bonding
Definition ItemTemplate.h:663
int32 SpellId
Definition ItemTemplate.h:591

References BIND_WHEN_PICKED_UP, ItemTemplate::Bonding, ItemTemplate::Class, conditions, DISABLE_TYPE_LOOT, Player::GetTeamId(), ItemTemplate::HasFlag(), ItemTemplate::HasFlag2(), ItemTemplate::HasFlagCu(), Player::HasQuestForItem(), Player::HasSkill(), Player::HasSpell(), ITEM_CLASS_RECIPE, ITEM_FLAG2_FACTION_ALLIANCE, ITEM_FLAG2_FACTION_HORDE, ITEM_FLAG_HIDE_UNUSABLE_RECIPE, ITEM_FLAGS_CU_IGNORE_QUEST_STATUS, itemid, needs_quest, ItemTemplate::RequiredSkill, sConditionMgr, sDisableMgr, sObjectMgr, _Spell::SpellId, ItemTemplate::Spells, sScriptMgr, TEAM_ALLIANCE, and TEAM_HORDE.

Referenced by Loot::AddItem(), CanRollOnItem(), Loot::FillFFALoot(), Loot::FillNonQuestNonFFAConditionalLoot(), Loot::FillNotNormalLootFor(), Loot::FillQuestLoot(), WorldSession::HandleLootMasterGiveOpcode(), Loot::LootItemInSlot(), and Player::StoreLootItem().

◆ GetAllowedLooters()

const AllowedLooterSet & LootItem::GetAllowedLooters ( ) const
inline

Member Data Documentation

◆ allowedGUIDs

AllowedLooterSet LootItem::allowedGUIDs

◆ conditions

◆ count

◆ follow_loot_rules

bool LootItem::follow_loot_rules

◆ freeforall

◆ groupid

uint8 LootItem::groupid

◆ is_blocked

◆ is_counted

◆ is_looted

◆ is_underthreshold

bool LootItem::is_underthreshold

◆ itemid

◆ itemIndex

◆ needs_quest

bool LootItem::needs_quest

◆ randomPropertyId

◆ randomSuffix

uint32 LootItem::randomSuffix

◆ rollWinnerGUID


The documentation for this struct was generated from the following files: