aboutsummaryrefslogtreecommitdiff
path: root/src/server/game/Entities/Player
diff options
context:
space:
mode:
authorForesterDev <11771800+ForesterDev@users.noreply.github.com>2020-02-01 17:45:58 +0400
committerShauren <shauren.trinity@gmail.com>2021-12-21 00:46:13 +0100
commit9124fd1f1fafea19b118eb69c6a35f94376fc7e8 (patch)
tree821bf6fd1fed9f1157e4f7beb7393a2b1b88f184 /src/server/game/Entities/Player
parente882635774fa49b0ffe86ee5b76b5b321c23bb9c (diff)
Core/Items: implement some helper methods for easier readability (#24113)
(cherry picked from commit 573ddf4d22564d022e30807c5ba2c6eb1a2c8b2e)
Diffstat (limited to 'src/server/game/Entities/Player')
-rw-r--r--src/server/game/Entities/Player/CollectionMgr.cpp6
-rw-r--r--src/server/game/Entities/Player/Player.cpp54
2 files changed, 30 insertions, 30 deletions
diff --git a/src/server/game/Entities/Player/CollectionMgr.cpp b/src/server/game/Entities/Player/CollectionMgr.cpp
index 7d9660cc4fc..e8b13bbefdc 100644
--- a/src/server/game/Entities/Player/CollectionMgr.cpp
+++ b/src/server/game/Entities/Player/CollectionMgr.cpp
@@ -624,7 +624,7 @@ void CollectionMgr::AddItemAppearance(Item* item)
if (!CanAddAppearance(itemModifiedAppearance))
return;
- if (item->HasItemFlag(ItemFieldFlags(ITEM_FIELD_FLAG_BOP_TRADEABLE | ITEM_FIELD_FLAG_REFUNDABLE)))
+ if (item->IsBOPTradeable() || item->IsRefundable())
{
AddTemporaryAppearance(item->GetGUID(), itemModifiedAppearance);
return;
@@ -710,7 +710,7 @@ bool CollectionMgr::CanAddAppearance(ItemModifiedAppearanceEntry const* itemModi
if (_owner->GetPlayer()->CanUseItem(itemTemplate) != EQUIP_ERR_OK)
return false;
- if (itemTemplate->GetFlags2() & ITEM_FLAG2_NO_SOURCE_FOR_ITEM_VISUAL || itemTemplate->GetQuality() == ITEM_QUALITY_ARTIFACT)
+ if (itemTemplate->HasFlag(ITEM_FLAG2_NO_SOURCE_FOR_ITEM_VISUAL) || itemTemplate->GetQuality() == ITEM_QUALITY_ARTIFACT)
return false;
switch (itemTemplate->GetClass())
@@ -763,7 +763,7 @@ bool CollectionMgr::CanAddAppearance(ItemModifiedAppearanceEntry const* itemModi
}
if (itemTemplate->GetQuality() < ITEM_QUALITY_UNCOMMON)
- if (!(itemTemplate->GetFlags2() & ITEM_FLAG2_IGNORE_QUALITY_FOR_ITEM_VISUAL_SOURCE) || !(itemTemplate->GetFlags3() & ITEM_FLAG3_ACTS_AS_TRANSMOG_HIDDEN_VISUAL_OPTION))
+ if (!itemTemplate->HasFlag(ITEM_FLAG2_IGNORE_QUALITY_FOR_ITEM_VISUAL_SOURCE) || !itemTemplate->HasFlag(ITEM_FLAG3_ACTS_AS_TRANSMOG_HIDDEN_VISUAL_OPTION))
return false;
if (itemModifiedAppearance->ID < _appearances->size() && _appearances->test(itemModifiedAppearance->ID))
diff --git a/src/server/game/Entities/Player/Player.cpp b/src/server/game/Entities/Player/Player.cpp
index db6cfdb97e8..49a087f09aa 100644
--- a/src/server/game/Entities/Player/Player.cpp
+++ b/src/server/game/Entities/Player/Player.cpp
@@ -7907,7 +7907,7 @@ void Player::CastAllObtainSpells()
void Player::ApplyItemObtainSpells(Item* item, bool apply)
{
- if (item->GetTemplate()->GetFlags() & ITEM_FLAG_LEGACY)
+ if (item->GetTemplate()->HasFlag(ITEM_FLAG_LEGACY))
return;
for (ItemEffectEntry const* effect : item->GetEffects())
@@ -8009,7 +8009,7 @@ bool Player::CheckAttackFitToAuraRequirement(WeaponAttackType attackType, AuraEf
void Player::ApplyItemEquipSpell(Item* item, bool apply, bool formChange /*= false*/)
{
- if (!item || item->GetTemplate()->GetFlags() & ITEM_FLAG_LEGACY)
+ if (!item || item->GetTemplate()->HasFlag(ITEM_FLAG_LEGACY))
return;
for (ItemEffectEntry const* effectData : item->GetEffects())
@@ -8356,7 +8356,7 @@ void Player::CastItemCombatSpell(DamageInfo const& damageInfo, Item* item, ItemT
bool canTrigger = (damageInfo.GetHitMask() & (PROC_HIT_NORMAL | PROC_HIT_CRITICAL | PROC_HIT_ABSORB)) != 0;
if (canTrigger)
{
- if (!(item->GetTemplate()->GetFlags() & ITEM_FLAG_LEGACY))
+ if (!item->GetTemplate()->HasFlag(ITEM_FLAG_LEGACY))
{
for (ItemEffectEntry const* effectData : item->GetEffects())
{
@@ -8482,7 +8482,7 @@ void Player::CastItemCombatSpell(DamageInfo const& damageInfo, Item* item, ItemT
void Player::CastItemUseSpell(Item* item, SpellCastTargets const& targets, ObjectGuid castCount, int32* misc)
{
- if (!(item->GetTemplate()->GetFlags() & ITEM_FLAG_LEGACY))
+ if (!item->GetTemplate()->HasFlag(ITEM_FLAG_LEGACY))
{
// item spells cast at use
for (ItemEffectEntry const* effectData : item->GetEffects())
@@ -11580,7 +11580,7 @@ InventoryResult Player::CanEquipItem(uint8 slot, uint16 &dest, Item* pItem, bool
}
else if (type == INVTYPE_WEAPONOFFHAND)
{
- if (!CanDualWield() && !(pProto->GetFlags3() & ITEM_FLAG3_ALWAYS_ALLOW_DUAL_WIELD))
+ if (!CanDualWield() && !pProto->HasFlag(ITEM_FLAG3_ALWAYS_ALLOW_DUAL_WIELD))
return EQUIP_ERR_2HSKILLNOTFOUND;
}
else if (type == INVTYPE_2HWEAPON)
@@ -11961,13 +11961,13 @@ InventoryResult Player::CanUseItem(ItemTemplate const* proto, bool skipRequiredL
if (!proto)
return EQUIP_ERR_ITEM_NOT_FOUND;
- if (proto->GetFlags2() & ITEM_FLAG2_INTERNAL_ITEM)
+ if (proto->HasFlag(ITEM_FLAG2_INTERNAL_ITEM))
return EQUIP_ERR_CANT_EQUIP_EVER;
- if ((proto->GetFlags2() & ITEM_FLAG2_FACTION_HORDE) && GetTeam() != HORDE)
+ if (proto->HasFlag(ITEM_FLAG2_FACTION_HORDE) && GetTeam() != HORDE)
return EQUIP_ERR_CANT_EQUIP_EVER;
- if ((proto->GetFlags2() & ITEM_FLAG2_FACTION_ALLIANCE) && GetTeam() != ALLIANCE)
+ if (proto->HasFlag(ITEM_FLAG2_FACTION_ALLIANCE) && GetTeam() != ALLIANCE)
return EQUIP_ERR_CANT_EQUIP_EVER;
if ((proto->GetAllowableClass() & GetClassMask()) == 0 || !proto->GetAllowableRace().HasRace(GetRace()))
@@ -12692,7 +12692,7 @@ void Player::MoveItemToInventory(ItemPosCountVec const& dest, Item* pItem, bool
// in case trade we already have item in other player inventory
pLastItem->SetState(in_characterInventoryDB ? ITEM_CHANGED : ITEM_NEW, this);
- if (pLastItem->HasItemFlag(ITEM_FIELD_FLAG_BOP_TRADEABLE))
+ if (pLastItem->IsBOPTradeable())
AddTradeableItem(pLastItem);
}
}
@@ -12710,7 +12710,7 @@ void Player::DestroyItem(uint8 bag, uint8 slot, bool update)
for (uint8 i = 0; i < MAX_BAG_SIZE; ++i)
DestroyItem(slot, i, update);
- if (pItem->HasItemFlag(ITEM_FIELD_FLAG_WRAPPED))
+ if (pItem->IsWrapped())
{
CharacterDatabasePreparedStatement* stmt = CharacterDatabase.GetPreparedStatement(CHAR_DEL_GIFT);
@@ -12774,7 +12774,7 @@ void Player::DestroyItem(uint8 bag, uint8 slot, bool update)
// Delete rolled money / loot from db.
// MUST be done before RemoveFromWorld() or GetTemplate() fails
- if (pProto->GetFlags() & ITEM_FLAG_HAS_LOOT)
+ if (pProto->HasFlag(ITEM_FLAG_HAS_LOOT))
sLootItemStorage->RemoveStoredLootForContainer(pItem->GetGUID().GetCounter());
if (IsInWorld() && update)
@@ -13741,7 +13741,7 @@ void Player::RemoveItemFromBuyBackSlot(uint32 slot, bool del)
if (del)
{
if (ItemTemplate const* itemTemplate = pItem->GetTemplate())
- if (itemTemplate->GetFlags() & ITEM_FLAG_HAS_LOOT)
+ if (itemTemplate->HasFlag(ITEM_FLAG_HAS_LOOT))
sLootItemStorage->RemoveStoredLootForContainer(pItem->GetGUID().GetCounter());
pItem->SetState(ITEM_REMOVED, this);
@@ -13939,7 +13939,7 @@ void Player::UpdateItemDuration(uint32 time, bool realtimeonly)
Item* item = *itr;
++itr; // current element can be erased in UpdateDuration
- if (!realtimeonly || item->GetTemplate()->GetFlags() & ITEM_FLAG_REAL_DURATION)
+ if (!realtimeonly || item->GetTemplate()->HasFlag(ITEM_FLAG_REAL_DURATION))
item->UpdateDuration(this, time);
}
}
@@ -15555,8 +15555,8 @@ bool Player::CanSelectQuestPackageItem(QuestPackageItemEntry const* questPackage
if (!rewardProto)
return false;
- if ((rewardProto->GetFlags2() & ITEM_FLAG2_FACTION_ALLIANCE && GetTeam() != ALLIANCE) ||
- (rewardProto->GetFlags2() & ITEM_FLAG2_FACTION_HORDE && GetTeam() != HORDE))
+ if ((rewardProto->HasFlag(ITEM_FLAG2_FACTION_ALLIANCE) && GetTeam() != ALLIANCE) ||
+ (rewardProto->HasFlag(ITEM_FLAG2_FACTION_HORDE) && GetTeam() != HORDE))
return false;
switch (questPackageItem->DisplayType)
@@ -19217,13 +19217,13 @@ Item* Player::_LoadItem(CharacterDatabaseTransaction& trans, uint32 zoneId, uint
remove = true;
}
// "Conjured items disappear if you are logged out for more than 15 minutes"
- else if (timeDiff > 15 * MINUTE && proto->GetFlags() & ITEM_FLAG_CONJURED)
+ else if (timeDiff > 15 * MINUTE && proto->HasFlag(ITEM_FLAG_CONJURED))
{
TC_LOG_DEBUG("entities.player.loading", "Player::_LoadInventory: player (%s, name: '%s', diff: %u) has conjured item (%s, entry: %u) with expired lifetime (15 minutes). Deleting item.",
GetGUID().ToString().c_str(), GetName().c_str(), timeDiff, item->GetGUID().ToString().c_str(), item->GetEntry());
remove = true;
}
- else if (item->HasItemFlag(ITEM_FIELD_FLAG_REFUNDABLE))
+ else if (item->IsRefundable())
{
if (item->GetPlayedTime() > (2 * HOUR))
{
@@ -19256,7 +19256,7 @@ Item* Player::_LoadItem(CharacterDatabaseTransaction& trans, uint32 zoneId, uint
}
}
}
- else if (item->HasItemFlag(ITEM_FIELD_FLAG_BOP_TRADEABLE))
+ else if (item->IsBOPTradeable())
{
stmt = CharacterDatabase.GetPreparedStatement(CHAR_SEL_ITEM_BOP_TRADE);
stmt->setUInt64(0, item->GetGUID().GetCounter());
@@ -20990,7 +20990,7 @@ void Player::_SaveInventory(CharacterDatabaseTransaction& trans)
if (item->GetState() == ITEM_NEW)
{
if (ItemTemplate const* itemTemplate = item->GetTemplate())
- if (itemTemplate->GetFlags() & ITEM_FLAG_HAS_LOOT)
+ if (itemTemplate->HasFlag(ITEM_FLAG_HAS_LOOT))
sLootItemStorage->RemoveStoredLootForContainer(item->GetGUID().GetCounter());
continue;
@@ -21001,7 +21001,7 @@ void Player::_SaveInventory(CharacterDatabaseTransaction& trans)
m_items[i]->FSetState(ITEM_NEW);
if (ItemTemplate const* itemTemplate = item->GetTemplate())
- if (itemTemplate->GetFlags() & ITEM_FLAG_HAS_LOOT)
+ if (itemTemplate->HasFlag(ITEM_FLAG_HAS_LOOT))
sLootItemStorage->RemoveStoredLootForContainer(item->GetGUID().GetCounter());
}
@@ -23178,7 +23178,7 @@ inline bool Player::_StoreOrEquipNewItem(uint32 vendorslot, uint32 item, uint8 c
if (!bStore)
AutoUnequipOffhandIfNeed();
- if (pProto->GetFlags() & ITEM_FLAG_ITEM_PURCHASE_RECORD && crItem->ExtendedCost && pProto->GetMaxStackSize() == 1)
+ if (pProto->HasFlag(ITEM_FLAG_ITEM_PURCHASE_RECORD) && crItem->ExtendedCost && pProto->GetMaxStackSize() == 1)
{
it->AddItemFlag(ITEM_FIELD_FLAG_REFUNDABLE);
it->SetRefundRecipient(GetGUID());
@@ -23373,7 +23373,7 @@ bool Player::BuyItemFromVendorSlot(ObjectGuid vendorguid, uint32 vendorslot, uin
return false;
}
- if (!IsGameMaster() && ((pProto->GetFlags2() & ITEM_FLAG2_FACTION_HORDE && GetTeam() == ALLIANCE) || (pProto->GetFlags2() & ITEM_FLAG2_FACTION_ALLIANCE && GetTeam() == HORDE)))
+ if (!IsGameMaster() && ((pProto->HasFlag(ITEM_FLAG2_FACTION_HORDE) && GetTeam() == ALLIANCE) || (pProto->HasFlag(ITEM_FLAG2_FACTION_ALLIANCE) && GetTeam() == HORDE)))
return false;
Creature* creature = GetNPCIfCanInteractWith(vendorguid, UNIT_NPC_FLAG_VENDOR, UNIT_NPC_FLAG_2_NONE);
@@ -24664,7 +24664,7 @@ void Player::SendInstanceResetWarning(uint32 mapid, Difficulty difficulty, uint3
void Player::ApplyEquipCooldown(Item* pItem)
{
- if (pItem->GetTemplate()->GetFlags() & ITEM_FLAG_NO_EQUIP_COOLDOWN)
+ if (pItem->GetTemplate()->HasFlag(ITEM_FLAG_NO_EQUIP_COOLDOWN))
return;
std::chrono::steady_clock::time_point now = GameTime::GetGameTimeSteadyPoint();
@@ -25472,7 +25472,7 @@ void Player::AutoUnequipOffhandIfNeed(bool force /*= false*/)
// unequip offhand weapon if player doesn't have dual wield anymore
if (!CanDualWield()
- && ((offItem->GetTemplate()->GetInventoryType() == INVTYPE_WEAPONOFFHAND && !(offItem->GetTemplate()->GetFlags3() & ITEM_FLAG3_ALWAYS_ALLOW_DUAL_WIELD))
+ && ((offItem->GetTemplate()->GetInventoryType() == INVTYPE_WEAPONOFFHAND && !offItem->GetTemplate()->HasFlag(ITEM_FLAG3_ALWAYS_ALLOW_DUAL_WIELD))
|| offItem->GetTemplate()->GetInventoryType() == INVTYPE_WEAPON))
force = true;
@@ -26733,7 +26733,7 @@ InventoryResult Player::CanEquipUniqueItem(Item* pItem, uint8 eslot, uint32 limi
InventoryResult Player::CanEquipUniqueItem(ItemTemplate const* itemProto, uint8 except_slot, uint32 limit_count) const
{
// check unique-equipped on item
- if (itemProto->GetFlags() & ITEM_FLAG_UNIQUE_EQUIPPABLE)
+ if (itemProto->HasFlag(ITEM_FLAG_UNIQUE_EQUIPPABLE))
{
// there is an equip limit on this item
if (HasItemOrGemWithIdEquipped(itemProto->GetId(), 1, except_slot))
@@ -27928,7 +27928,7 @@ void Player::SendRefundInfo(Item* item)
// This function call unsets ITEM_FIELD_FLAG_REFUNDABLE if played time is over 2 hours.
item->UpdatePlayedTime(this);
- if (!item->HasItemFlag(ITEM_FIELD_FLAG_REFUNDABLE))
+ if (!item->IsRefundable())
{
TC_LOG_DEBUG("entities.player.items", "Item refund: item not refundable!");
return;
@@ -28024,7 +28024,7 @@ void Player::SendItemRefundResult(Item* item, ItemExtendedCostEntry const* iece,
void Player::RefundItem(Item* item)
{
- if (!item->HasItemFlag(ITEM_FIELD_FLAG_REFUNDABLE))
+ if (!item->IsRefundable())
{
TC_LOG_DEBUG("entities.player.items", "Item refund: item not refundable!");
return;