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 = false;
409 is_blocked = false;
410 is_underthreshold = false;
411 is_counted = false;
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:1723
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)
472{
473 allowedGUIDs.insert(player->GetGUID());
474}
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
445 {
446 if (needs_quest && !player->HasQuestForItem(itemid))
447 return false;
448
449 // Hide quest starter items when quest is already started/rewarded,
450 // when unique count is already reached, or when prerequisite is missing.
451 if (pProto->StartQuest)
452 {
453 uint32 prevQuestId = 0;
454 if (Quest const* startQuest = sObjectMgr->GetQuestTemplate(pProto->StartQuest))
455 prevQuestId = startQuest->GetPrevQuestId();
456
457 if (player->GetQuestStatus(pProto->StartQuest) != QUEST_STATUS_NONE ||
458 player->GetQuestRewardStatus(pProto->StartQuest) ||
459 (pProto->MaxCount && player->HasItemCount(itemid, pProto->MaxCount, true)) ||
460 (prevQuestId && !player->GetQuestRewardStatus(prevQuestId)))
461 return false;
462 }
463 }
464
465 if (!sScriptMgr->OnAllowedForPlayerLootCheck(player, source))
466 return false;
467
468 return true;
469}
#define sConditionMgr
Definition ConditionMgr.h:296
std::uint32_t uint32
Definition Define.h:107
#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
@ QUEST_STATUS_NONE
Definition QuestDef.h:100
#define sScriptMgr
Definition ScriptMgr.h:737
@ TEAM_ALLIANCE
Definition SharedDefines.h:748
@ TEAM_HORDE
Definition SharedDefines.h:749
Definition Player.h:1084
Definition QuestDef.h:210
uint32 RequiredSkill
Definition ItemTemplate.h:637
int32 MaxCount
Definition ItemTemplate.h:644
_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 StartQuest
Definition ItemTemplate.h:668
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::GetQuestRewardStatus(), Player::GetQuestStatus(), Player::GetTeamId(), ItemTemplate::HasFlag(), ItemTemplate::HasFlag2(), ItemTemplate::HasFlagCu(), Player::HasItemCount(), 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, ItemTemplate::MaxCount, needs_quest, QUEST_STATUS_NONE, ItemTemplate::RequiredSkill, sConditionMgr, sDisableMgr, sObjectMgr, _Spell::SpellId, ItemTemplate::Spells, sScriptMgr, ItemTemplate::StartQuest, 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: