aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/server/game/AuctionHouseBot/AuctionHouseBotSeller.cpp2
-rw-r--r--src/server/game/Chat/Hyperlinks.cpp4
-rw-r--r--src/server/game/Entities/Creature/Creature.cpp2
-rw-r--r--src/server/game/Entities/Item/Item.cpp28
-rw-r--r--src/server/game/Entities/Item/Item.h7
-rw-r--r--src/server/game/Entities/Item/ItemTemplate.cpp10
-rw-r--r--src/server/game/Entities/Item/ItemTemplate.h16
-rw-r--r--src/server/game/Entities/Player/CollectionMgr.cpp6
-rw-r--r--src/server/game/Entities/Player/Player.cpp54
-rw-r--r--src/server/game/Entities/Unit/StatSystem.cpp2
-rw-r--r--src/server/game/Globals/ObjectMgr.cpp4
-rw-r--r--src/server/game/Groups/Group.cpp2
-rw-r--r--src/server/game/Handlers/AuctionHouseHandler.cpp4
-rw-r--r--src/server/game/Handlers/ItemHandler.cpp14
-rw-r--r--src/server/game/Handlers/LootHandler.cpp2
-rw-r--r--src/server/game/Handlers/MailHandler.cpp6
-rw-r--r--src/server/game/Handlers/SpellHandler.cpp10
-rw-r--r--src/server/game/Handlers/TradeHandler.cpp8
-rw-r--r--src/server/game/Loot/Loot.cpp16
-rw-r--r--src/server/game/Loot/LootMgr.cpp6
-rw-r--r--src/server/game/Spells/Spell.cpp10
-rw-r--r--src/server/game/Spells/SpellEffects.cpp6
22 files changed, 112 insertions, 107 deletions
diff --git a/src/server/game/AuctionHouseBot/AuctionHouseBotSeller.cpp b/src/server/game/AuctionHouseBot/AuctionHouseBotSeller.cpp
index e8acac1fea1..be9c501923e 100644
--- a/src/server/game/AuctionHouseBot/AuctionHouseBotSeller.cpp
+++ b/src/server/game/AuctionHouseBot/AuctionHouseBotSeller.cpp
@@ -286,7 +286,7 @@ bool AuctionBotSeller::Initialize()
continue;
}
- if (prototype->GetFlags() & ITEM_FIELD_FLAG_UNLOCKED)
+ if (prototype->HasFlag(ITEM_FLAG_HAS_LOOT))
{
// skip any not locked lootable items (mostly quest specific or reward cases)
if (!prototype->GetLockID())
diff --git a/src/server/game/Chat/Hyperlinks.cpp b/src/server/game/Chat/Hyperlinks.cpp
index 8f9f5153328..63346e482ce 100644
--- a/src/server/game/Chat/Hyperlinks.cpp
+++ b/src/server/game/Chat/Hyperlinks.cpp
@@ -353,7 +353,7 @@ struct LinkValidator<LinkTags::item>
static bool IsTextValid(ItemLinkData const& data, char const* pos, size_t len)
{
LocalizedString const* suffixStrings = nullptr;
- if (!(data.Item->GetFlags3() & ITEM_FLAG3_HIDE_NAME_SUFFIX) && data.Suffix)
+ if (!data.Item->HasFlag(ITEM_FLAG3_HIDE_NAME_SUFFIX) && data.Suffix)
suffixStrings = &data.Suffix->Description;
return IsTextValid(data.Item, suffixStrings, pos, len);
@@ -689,7 +689,7 @@ bool Trinity::Hyperlinks::CheckAllLinks(std::string const& str)
return false;
}
}
-
+
// Step 2: Parse all link sequences
// They look like this: |c<color>|H<linktag>:<linkdata>|h[<linktext>]|h|r
// - <color> is 8 hex characters AARRGGBB
diff --git a/src/server/game/Entities/Creature/Creature.cpp b/src/server/game/Entities/Creature/Creature.cpp
index c459a6e0fc2..bc2963bb477 100644
--- a/src/server/game/Entities/Creature/Creature.cpp
+++ b/src/server/game/Entities/Creature/Creature.cpp
@@ -82,7 +82,7 @@ VendorItemCount::VendorItemCount(uint32 _item, uint32 _count)
bool VendorItem::IsGoldRequired(ItemTemplate const* pProto) const
{
- return pProto->GetFlags2() & ITEM_FLAG2_DONT_IGNORE_BUY_PRICE || !ExtendedCost;
+ return pProto->HasFlag(ITEM_FLAG2_DONT_IGNORE_BUY_PRICE) || !ExtendedCost;
}
bool VendorItemData::RemoveItem(uint32 item_id, uint8 type)
diff --git a/src/server/game/Entities/Item/Item.cpp b/src/server/game/Entities/Item/Item.cpp
index 16a041cc118..bd2c688847b 100644
--- a/src/server/game/Entities/Item/Item.cpp
+++ b/src/server/game/Entities/Item/Item.cpp
@@ -591,7 +591,7 @@ void Item::SaveToDB(CharacterDatabaseTransaction& trans)
trans->Append(stmt);
- if ((uState == ITEM_CHANGED) && HasItemFlag(ITEM_FIELD_FLAG_WRAPPED))
+ if ((uState == ITEM_CHANGED) && IsWrapped())
{
stmt = CharacterDatabase.GetPreparedStatement(CHAR_UPD_GIFT_OWNER);
stmt->setUInt64(0, GetOwnerGUID().GetCounter());
@@ -768,7 +768,7 @@ void Item::SaveToDB(CharacterDatabaseTransaction& trans)
stmt->setUInt64(0, GetGUID().GetCounter());
trans->Append(stmt);
- if (HasItemFlag(ITEM_FIELD_FLAG_WRAPPED))
+ if (IsWrapped())
{
stmt = CharacterDatabase.GetPreparedStatement(CHAR_DEL_GIFT);
stmt->setUInt64(0, GetGUID().GetCounter());
@@ -862,7 +862,7 @@ bool Item::LoadFromDB(ObjectGuid::LowType guid, ObjectGuid ownerGuid, Field* fie
SetUpdateFieldValue(m_values.ModifyValue(&Item::m_itemData).ModifyValue(&UF::ItemData::MaxDurability), proto->MaxDurability);
// do not overwrite durability for wrapped items
- if (durability > proto->MaxDurability && !HasItemFlag(ITEM_FIELD_FLAG_WRAPPED))
+ if (durability > proto->MaxDurability && !IsWrapped())
{
SetDurability(proto->MaxDurability);
need_save = true;
@@ -1217,7 +1217,7 @@ bool Item::CanBeTraded(bool mail, bool trade) const
if (m_lootGenerated)
return false;
- if ((!mail || !IsBoundAccountWide()) && (IsSoulBound() && (!HasItemFlag(ITEM_FIELD_FLAG_BOP_TRADEABLE) || !trade)))
+ if ((!mail || !IsBoundAccountWide()) && (IsSoulBound() && (!IsBOPTradeable() || !trade)))
return false;
if (IsBag() && (Player::IsBagPos(GetPos()) || !ToBag()->IsEmpty()))
@@ -1319,7 +1319,7 @@ bool Item::IsFitToSpellRequirements(SpellInfo const* spellInfo) const
bool isEnchantSpell = spellInfo->HasEffect(SPELL_EFFECT_ENCHANT_ITEM) || spellInfo->HasEffect(SPELL_EFFECT_ENCHANT_ITEM_TEMPORARY) || spellInfo->HasEffect(SPELL_EFFECT_ENCHANT_ITEM_PRISMATIC);
if (spellInfo->EquippedItemClass != -1) // -1 == any item class
{
- if (isEnchantSpell && proto->GetFlags3() & ITEM_FLAG3_CAN_STORE_ENCHANTS)
+ if (isEnchantSpell && proto->HasFlag(ITEM_FLAG3_CAN_STORE_ENCHANTS))
return true;
if (spellInfo->EquippedItemClass != int32(proto->GetClass()))
@@ -1596,7 +1596,7 @@ bool Item::IsBindedNotWith(Player const* player) const
if (GetOwnerGUID() == player->GetGUID())
return false;
- if (HasItemFlag(ITEM_FIELD_FLAG_BOP_TRADEABLE))
+ if (IsBOPTradeable())
if (allowedGUIDs.find(player->GetGUID()) != allowedGUIDs.end())
return false;
@@ -1743,7 +1743,7 @@ void Item::DeleteRefundDataFromDB(CharacterDatabaseTransaction* trans)
void Item::SetNotRefundable(Player* owner, bool changestate /*= true*/, CharacterDatabaseTransaction* trans /*= nullptr*/, bool addToCollection /*= true*/)
{
- if (!HasItemFlag(ITEM_FIELD_FLAG_REFUNDABLE))
+ if (!IsRefundable())
return;
WorldPackets::Item::ItemExpirePurchaseRefund itemExpirePurchaseRefund;
@@ -1850,7 +1850,7 @@ bool Item::IsValidTransmogrificationTarget() const
if (proto->GetClass() == ITEM_CLASS_WEAPON && proto->GetSubClass() == ITEM_SUBCLASS_WEAPON_FISHING_POLE)
return false;
- if (proto->GetFlags2() & ITEM_FLAG2_NO_ALTER_ITEM_VISUAL)
+ if (proto->HasFlag(ITEM_FLAG2_NO_ALTER_ITEM_VISUAL))
return false;
if (!HasStats())
@@ -2016,7 +2016,7 @@ uint32 Item::GetBuyPrice(ItemTemplate const* proto, uint32 quality, uint32 itemL
{
standardPrice = false;
- if (proto->GetFlags2() & ITEM_FLAG2_OVERRIDE_GOLD_COST)
+ if (proto->HasFlag(ITEM_FLAG2_OVERRIDE_GOLD_COST))
return proto->GetBuyPrice();
ImportPriceQualityEntry const* qualityPrice = sImportPriceQualityStore.LookupEntry(quality + 1);
@@ -2147,7 +2147,7 @@ uint32 Item::GetSellPrice(Player const* owner) const
uint32 Item::GetSellPrice(ItemTemplate const* proto, uint32 quality, uint32 itemLevel)
{
- if (proto->GetFlags2() & ITEM_FLAG2_OVERRIDE_GOLD_COST)
+ if (proto->HasFlag(ITEM_FLAG2_OVERRIDE_GOLD_COST))
return proto->GetSellPrice();
else
{
@@ -2176,7 +2176,7 @@ uint32 Item::GetItemLevel(Player const* owner) const
ItemTemplate const* itemTemplate = GetTemplate();
uint32 minItemLevel = owner->m_unitData->MinItemLevel;
uint32 minItemLevelCutoff = owner->m_unitData->MinItemLevelCutoff;
- uint32 maxItemLevel = itemTemplate->GetFlags3() & ITEM_FLAG3_IGNORE_ITEM_LEVEL_CAP_IN_PVP ? 0 : owner->m_unitData->MaxItemLevel;
+ uint32 maxItemLevel = itemTemplate->HasFlag(ITEM_FLAG3_IGNORE_ITEM_LEVEL_CAP_IN_PVP) ? 0 : owner->m_unitData->MaxItemLevel;
bool pvpBonus = owner->IsUsingPvpItemLevels();
uint32 azeriteLevel = 0;
if (AzeriteItem const* azeriteItem = ToAzeriteItem())
@@ -2262,7 +2262,7 @@ ItemDisenchantLootEntry const* Item::GetDisenchantLoot(Player const* owner) cons
ItemDisenchantLootEntry const* Item::GetDisenchantLoot(ItemTemplate const* itemTemplate, uint32 quality, uint32 itemLevel)
{
- if (itemTemplate->GetFlags() & (ITEM_FLAG_CONJURED | ITEM_FLAG_NO_DISENCHANT) || itemTemplate->GetBonding() == BIND_QUEST)
+ if (itemTemplate->HasFlag(ITEM_FLAG_CONJURED) || itemTemplate->HasFlag(ITEM_FLAG_NO_DISENCHANT) || itemTemplate->GetBonding() == BIND_QUEST)
return nullptr;
if (itemTemplate->GetArea(0) || itemTemplate->GetArea(1) || itemTemplate->GetMap() || itemTemplate->GetMaxStackSize() > 1)
@@ -2749,8 +2749,8 @@ void BonusData::Initialize(ItemTemplate const* proto)
for (std::size_t i = EffectCount; i < Effects.size(); ++i)
Effects[i] = nullptr;
- CanDisenchant = (proto->GetFlags() & ITEM_FLAG_NO_DISENCHANT) == 0;
- CanScrap = (proto->GetFlags4() & ITEM_FLAG4_SCRAPABLE) != 0;
+ CanDisenchant = !proto->HasFlag(ITEM_FLAG_NO_DISENCHANT);
+ CanScrap = proto->HasFlag(ITEM_FLAG4_SCRAPABLE);
_state.SuffixPriority = std::numeric_limits<int32>::max();
_state.AppearanceModPriority = std::numeric_limits<int32>::max();
diff --git a/src/server/game/Entities/Item/Item.h b/src/server/game/Entities/Item/Item.h
index 5f0e34a0d2d..b9ae082e277 100644
--- a/src/server/game/Entities/Item/Item.h
+++ b/src/server/game/Entities/Item/Item.h
@@ -213,8 +213,8 @@ class TC_GAME_API Item : public Object
void RemoveItemFlag2(ItemFieldFlags2 flags) { RemoveUpdateFieldFlagValue(m_values.ModifyValue(&Item::m_itemData).ModifyValue(&UF::ItemData::DynamicFlags2), flags); }
void SetItemFlags2(ItemFieldFlags2 flags) { SetUpdateFieldValue(m_values.ModifyValue(&Item::m_itemData).ModifyValue(&UF::ItemData::DynamicFlags2), flags); }
bool IsSoulBound() const { return HasItemFlag(ITEM_FIELD_FLAG_SOULBOUND); }
- bool IsBoundAccountWide() const { return (GetTemplate()->GetFlags() & ITEM_FLAG_IS_BOUND_TO_ACCOUNT) != 0; }
- bool IsBattlenetAccountBound() const { return (GetTemplate()->GetFlags2() & ITEM_FLAG2_BNET_ACCOUNT_TRADE_OK) != 0; }
+ bool IsBoundAccountWide() const { return GetTemplate()->HasFlag(ITEM_FLAG_IS_BOUND_TO_ACCOUNT); }
+ bool IsBattlenetAccountBound() const { return GetTemplate()->HasFlag(ITEM_FLAG2_BNET_ACCOUNT_TRADE_OK); }
bool IsBindedNotWith(Player const* player) const;
bool IsBoundByEnchant() const;
virtual void SaveToDB(CharacterDatabaseTransaction& trans);
@@ -241,6 +241,9 @@ class TC_GAME_API Item : public Object
AzeriteEmpoweredItem* ToAzeriteEmpoweredItem() { return IsAzeriteEmpoweredItem() ? reinterpret_cast<AzeriteEmpoweredItem*>(this) : nullptr; }
AzeriteEmpoweredItem const* ToAzeriteEmpoweredItem() const { return IsAzeriteEmpoweredItem() ? reinterpret_cast<AzeriteEmpoweredItem const*>(this) : nullptr; }
+ bool IsRefundable() const { return HasItemFlag(ITEM_FIELD_FLAG_REFUNDABLE); }
+ bool IsBOPTradeable() const { return HasItemFlag(ITEM_FIELD_FLAG_BOP_TRADEABLE); }
+ bool IsWrapped() const { return HasItemFlag(ITEM_FIELD_FLAG_WRAPPED); }
bool IsLocked() const { return !HasItemFlag(ITEM_FIELD_FLAG_UNLOCKED); }
bool IsBag() const { return GetTemplate()->GetInventoryType() == INVTYPE_BAG; }
bool IsAzeriteItem() const { return GetTypeId() == TYPEID_AZERITE_ITEM; }
diff --git a/src/server/game/Entities/Item/ItemTemplate.cpp b/src/server/game/Entities/Item/ItemTemplate.cpp
index ecc7be78f20..d81c1a68dc7 100644
--- a/src/server/game/Entities/Item/ItemTemplate.cpp
+++ b/src/server/game/Entities/Item/ItemTemplate.cpp
@@ -56,7 +56,7 @@ bool ItemTemplate::HasSignature() const
return GetMaxStackSize() == 1 &&
GetClass() != ITEM_CLASS_CONSUMABLE &&
GetClass() != ITEM_CLASS_QUEST &&
- (GetFlags() & ITEM_FLAG_NO_CREATOR) == 0 &&
+ !HasFlag(ITEM_FLAG_NO_CREATOR) &&
GetId() != 6948; /*Hearthstone*/
}
@@ -196,7 +196,7 @@ float ItemTemplate::GetDPS(uint32 itemLevel) const
dps = sItemDamageAmmoStore.AssertEntry(itemLevel)->Quality[quality];
break;
case INVTYPE_2HWEAPON:
- if (GetFlags2() & ITEM_FLAG2_CASTER_WEAPON)
+ if (HasFlag(ITEM_FLAG2_CASTER_WEAPON))
dps = sItemDamageTwoHandCasterStore.AssertEntry(itemLevel)->Quality[quality];
else
dps = sItemDamageTwoHandStore.AssertEntry(itemLevel)->Quality[quality];
@@ -212,7 +212,7 @@ float ItemTemplate::GetDPS(uint32 itemLevel) const
case ITEM_SUBCLASS_WEAPON_BOW:
case ITEM_SUBCLASS_WEAPON_GUN:
case ITEM_SUBCLASS_WEAPON_CROSSBOW:
- if (GetFlags2() & ITEM_FLAG2_CASTER_WEAPON)
+ if (HasFlag(ITEM_FLAG2_CASTER_WEAPON))
dps = sItemDamageTwoHandCasterStore.AssertEntry(itemLevel)->Quality[quality];
else
dps = sItemDamageTwoHandStore.AssertEntry(itemLevel)->Quality[quality];
@@ -224,7 +224,7 @@ float ItemTemplate::GetDPS(uint32 itemLevel) const
case INVTYPE_WEAPON:
case INVTYPE_WEAPONMAINHAND:
case INVTYPE_WEAPONOFFHAND:
- if (GetFlags2() & ITEM_FLAG2_CASTER_WEAPON)
+ if (HasFlag(ITEM_FLAG2_CASTER_WEAPON))
dps = sItemDamageOneHandCasterStore.AssertEntry(itemLevel)->Quality[quality];
else
dps = sItemDamageOneHandStore.AssertEntry(itemLevel)->Quality[quality];
@@ -250,7 +250,7 @@ void ItemTemplate::GetDamage(uint32 itemLevel, float& minDamage, float& maxDamag
bool ItemTemplate::IsUsableByLootSpecialization(Player const* player, bool alwaysAllowBoundToAccount) const
{
- if (GetFlags() & ITEM_FLAG_IS_BOUND_TO_ACCOUNT && alwaysAllowBoundToAccount)
+ if (HasFlag(ITEM_FLAG_IS_BOUND_TO_ACCOUNT) && alwaysAllowBoundToAccount)
return true;
uint32 spec = player->GetLootSpecId();
diff --git a/src/server/game/Entities/Item/ItemTemplate.h b/src/server/game/Entities/Item/ItemTemplate.h
index 559046dce8f..d7fbb685274 100644
--- a/src/server/game/Entities/Item/ItemTemplate.h
+++ b/src/server/game/Entities/Item/ItemTemplate.h
@@ -743,10 +743,6 @@ struct TC_GAME_API ItemTemplate
uint32 GetClass() const { return BasicData->ClassID; }
uint32 GetSubClass() const { return BasicData->SubclassID; }
uint32 GetQuality() const { return ExtendedData->OverallQualityID; }
- uint32 GetFlags() const { return ExtendedData->Flags[0]; }
- uint32 GetFlags2() const { return ExtendedData->Flags[1]; }
- uint32 GetFlags3() const { return ExtendedData->Flags[2]; }
- uint32 GetFlags4() const { return ExtendedData->Flags[3]; }
uint32 GetOtherFactionItemId() const { return ExtendedData->FactionRelated; }
float GetPriceRandomValue() const { return ExtendedData->PriceRandomValue; }
float GetPriceVariance() const { return ExtendedData->PriceVariance; }
@@ -821,9 +817,9 @@ struct TC_GAME_API ItemTemplate
uint32 GetSkill() const;
bool IsPotion() const { return GetClass() == ITEM_CLASS_CONSUMABLE && GetSubClass() == ITEM_SUBCLASS_POTION; }
- bool IsVellum() const { return GetFlags3() & ITEM_FLAG3_CAN_STORE_ENCHANTS; }
- bool IsConjuredConsumable() const { return GetClass() == ITEM_CLASS_CONSUMABLE && (GetFlags() & ITEM_FLAG_CONJURED); }
- bool IsCraftingReagent() const { return (GetFlags2() & ITEM_FLAG2_USED_IN_A_TRADESKILL) != 0; }
+ bool IsVellum() const { return HasFlag(ITEM_FLAG3_CAN_STORE_ENCHANTS); }
+ bool IsConjuredConsumable() const { return GetClass() == ITEM_CLASS_CONSUMABLE && HasFlag(ITEM_FLAG_CONJURED); }
+ bool IsCraftingReagent() const { return HasFlag(ITEM_FLAG2_USED_IN_A_TRADESKILL); }
bool HasSignature() const;
bool IsWeapon() const { return GetClass() == ITEM_CLASS_WEAPON; }
@@ -836,6 +832,12 @@ struct TC_GAME_API ItemTemplate
GetSubClass() == ITEM_SUBCLASS_WEAPON_CROSSBOW;
}
+ inline bool HasFlag(ItemFlags flag) const { return (ExtendedData->Flags[0] & flag) != 0; }
+ inline bool HasFlag(ItemFlags2 flag) const { return (ExtendedData->Flags[1] & flag) != 0; }
+ inline bool HasFlag(ItemFlags3 flag) const { return (ExtendedData->Flags[2] & flag) != 0; }
+ inline bool HasFlag(ItemFlags4 flag) const { return (ExtendedData->Flags[3] & flag) != 0; }
+ inline bool HasFlag(ItemFlagsCustom customFlag) const { return (FlagsCu & customFlag) != 0; }
+
char const* GetDefaultLocaleName() const;
uint32 GetArmor(uint32 itemLevel) const;
float GetDPS(uint32 itemLevel) const;
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;
diff --git a/src/server/game/Entities/Unit/StatSystem.cpp b/src/server/game/Entities/Unit/StatSystem.cpp
index f86e2740df3..8d3420874ca 100644
--- a/src/server/game/Entities/Unit/StatSystem.cpp
+++ b/src/server/game/Entities/Unit/StatSystem.cpp
@@ -394,7 +394,7 @@ void Player::UpdateAttackPowerAndDamage(bool ranged)
{
UpdateDamagePhysical(BASE_ATTACK);
if (Item* offhand = GetWeaponForAttack(OFF_ATTACK, true))
- if (CanDualWield() || offhand->GetTemplate()->GetFlags3() & ITEM_FLAG3_ALWAYS_ALLOW_DUAL_WIELD)
+ if (CanDualWield() || offhand->GetTemplate()->HasFlag(ITEM_FLAG3_ALWAYS_ALLOW_DUAL_WIELD))
UpdateDamagePhysical(OFF_ATTACK);
if (HasAuraType(SPELL_AURA_OVERRIDE_SPELL_POWER_BY_AP_PCT))
diff --git a/src/server/game/Globals/ObjectMgr.cpp b/src/server/game/Globals/ObjectMgr.cpp
index 45cc84a7ed6..032573ed81a 100644
--- a/src/server/game/Globals/ObjectMgr.cpp
+++ b/src/server/game/Globals/ObjectMgr.cpp
@@ -9896,10 +9896,10 @@ void ObjectMgr::LoadFactionChangeItems()
if (!itemPair.second.GetOtherFactionItemId())
continue;
- if (itemPair.second.GetFlags2() & ITEM_FLAG2_FACTION_HORDE)
+ if (itemPair.second.HasFlag(ITEM_FLAG2_FACTION_HORDE))
FactionChangeItemsHordeToAlliance[itemPair.first] = itemPair.second.GetOtherFactionItemId();
- if (itemPair.second.GetFlags2() & ITEM_FLAG2_FACTION_ALLIANCE)
+ if (itemPair.second.HasFlag(ITEM_FLAG2_FACTION_ALLIANCE))
FactionChangeItemsAllianceToHorde[itemPair.first] = itemPair.second.GetOtherFactionItemId();
++count;
diff --git a/src/server/game/Groups/Group.cpp b/src/server/game/Groups/Group.cpp
index e71d99ae246..4b8f97a0cb3 100644
--- a/src/server/game/Groups/Group.cpp
+++ b/src/server/game/Groups/Group.cpp
@@ -1079,7 +1079,7 @@ void Group::GroupLoot(Loot* loot, WorldObject* lootedObject)
{
r->setLoot(loot);
r->itemSlot = itemSlot;
- if (item->GetFlags2() & ITEM_FLAG2_CAN_ONLY_ROLL_GREED)
+ if (item->HasFlag(ITEM_FLAG2_CAN_ONLY_ROLL_GREED))
r->rollVoteMask &= ~ROLL_FLAG_TYPE_NEED;
loot->items[itemSlot].is_blocked = true;
diff --git a/src/server/game/Handlers/AuctionHouseHandler.cpp b/src/server/game/Handlers/AuctionHouseHandler.cpp
index 4d46f52846a..65290c0c718 100644
--- a/src/server/game/Handlers/AuctionHouseHandler.cpp
+++ b/src/server/game/Handlers/AuctionHouseHandler.cpp
@@ -652,7 +652,7 @@ void WorldSession::HandleAuctionSellCommodity(WorldPackets::AuctionHouse::Auctio
}
if (sAuctionMgr->GetAItem(item->GetGUID()) || !item->CanBeTraded() || item->IsNotEmptyBag() ||
- item->GetTemplate()->GetFlags() & ITEM_FLAG_CONJURED || *item->m_itemData->Expiration ||
+ item->GetTemplate()->HasFlag(ITEM_FLAG_CONJURED) || *item->m_itemData->Expiration ||
item->GetCount() < itemForSale.UseCount)
{
SendAuctionCommandResult(0, AuctionCommand::SellItem, AuctionResult::DatabaseError, throttle.DelayUntilNext);
@@ -863,7 +863,7 @@ void WorldSession::HandleAuctionSellItem(WorldPackets::AuctionHouse::AuctionSell
}
if (sAuctionMgr->GetAItem(item->GetGUID()) || !item->CanBeTraded() || item->IsNotEmptyBag() ||
- item->GetTemplate()->GetFlags() & ITEM_FLAG_CONJURED || *item->m_itemData->Expiration ||
+ item->GetTemplate()->HasFlag(ITEM_FLAG_CONJURED) || *item->m_itemData->Expiration ||
item->GetCount() != 1)
{
SendAuctionCommandResult(0, AuctionCommand::SellItem, AuctionResult::DatabaseError, throttle.DelayUntilNext);
diff --git a/src/server/game/Handlers/ItemHandler.cpp b/src/server/game/Handlers/ItemHandler.cpp
index c8f33fab7a3..6dd5fd3b3a7 100644
--- a/src/server/game/Handlers/ItemHandler.cpp
+++ b/src/server/game/Handlers/ItemHandler.cpp
@@ -336,7 +336,7 @@ void WorldSession::HandleDestroyItemOpcode(WorldPackets::Item::DestroyItem& dest
return;
}
- if (item->GetTemplate()->GetFlags() & ITEM_FLAG_NO_USER_DESTROY)
+ if (item->GetTemplate()->HasFlag(ITEM_FLAG_NO_USER_DESTROY))
{
_player->SendEquipError(EQUIP_ERR_DROP_BOUND_ITEM, nullptr, nullptr);
return;
@@ -435,7 +435,7 @@ void WorldSession::HandleSellItemOpcode(WorldPackets::Item::SellItem& packet)
// prevent selling item for sellprice when the item is still refundable
// this probably happens when right clicking a refundable item, the client sends both
// CMSG_SELL_ITEM and CMSG_REFUND_ITEM (unverified)
- if (pItem->HasItemFlag(ITEM_FIELD_FLAG_REFUNDABLE))
+ if (pItem->IsRefundable())
return; // Therefore, no feedback to client
// special case at auto sell (sell all)
@@ -646,8 +646,8 @@ void WorldSession::SendListInventory(ObjectGuid vendorGuid)
continue;
// Only display items in vendor lists for the team the player is on
- if ((itemTemplate->GetFlags2() & ITEM_FLAG2_FACTION_HORDE && _player->GetTeam() == ALLIANCE) ||
- (itemTemplate->GetFlags2() & ITEM_FLAG2_FACTION_ALLIANCE && _player->GetTeam() == HORDE))
+ if ((itemTemplate->HasFlag(ITEM_FLAG2_FACTION_HORDE) && _player->GetTeam() == ALLIANCE) ||
+ (itemTemplate->HasFlag(ITEM_FLAG2_FACTION_ALLIANCE) && _player->GetTeam() == HORDE))
continue;
// Items sold out are not displayed in list
@@ -674,7 +674,7 @@ void WorldSession::SendListInventory(ObjectGuid vendorGuid)
item.StackCount = itemTemplate->GetBuyCount();
item.Price = price;
item.DoNotFilterOnVendor = vendorItem->IgnoreFiltering;
- item.Refundable = itemTemplate->GetFlags() & ITEM_FLAG_ITEM_PURCHASE_RECORD && vendorItem->ExtendedCost && itemTemplate->GetMaxStackSize() == 1;
+ item.Refundable = itemTemplate->HasFlag(ITEM_FLAG_ITEM_PURCHASE_RECORD) && vendorItem->ExtendedCost && itemTemplate->GetMaxStackSize() == 1;
item.Item.ItemID = vendorItem->item;
if (!vendorItem->BonusListIDs.empty())
@@ -815,7 +815,7 @@ void WorldSession::HandleWrapItem(WorldPackets::Item::WrapItem& packet)
return;
}
- if (!(gift->GetTemplate()->GetFlags() & ITEM_FLAG_IS_WRAPPER)) // cheating: non-wrapper wrapper
+ if (!gift->GetTemplate()->HasFlag(ITEM_FLAG_IS_WRAPPER)) // cheating: non-wrapper wrapper
{
_player->SendEquipError(EQUIP_ERR_ITEM_NOT_FOUND, gift, nullptr);
return;
@@ -1005,7 +1005,7 @@ void WorldSession::HandleSocketGems(WorldPackets::Item::SocketGems& socketGems)
ItemTemplate const* iGemProto = gems[i]->GetTemplate();
// unique item (for new and already placed bit removed enchantments
- if (iGemProto->GetFlags() & ITEM_FLAG_UNIQUE_EQUIPPABLE)
+ if (iGemProto->HasFlag(ITEM_FLAG_UNIQUE_EQUIPPABLE))
{
for (uint32 j = 0; j < MAX_GEM_SOCKETS; ++j)
{
diff --git a/src/server/game/Handlers/LootHandler.cpp b/src/server/game/Handlers/LootHandler.cpp
index 72eef168d83..42db7477f10 100644
--- a/src/server/game/Handlers/LootHandler.cpp
+++ b/src/server/game/Handlers/LootHandler.cpp
@@ -402,7 +402,7 @@ void WorldSession::DoLootRelease(ObjectGuid lguid)
else
{
// Only delete item if no loot or money (unlooted loot is saved to db) or if it isn't an openable item
- if (pItem->loot.isLooted() || !(proto->GetFlags() & ITEM_FLAG_HAS_LOOT))
+ if (pItem->loot.isLooted() || !proto->HasFlag(ITEM_FLAG_HAS_LOOT))
player->DestroyItem(pItem->GetBagSlot(), pItem->GetSlot(), true);
}
return; // item can be looted only single player
diff --git a/src/server/game/Handlers/MailHandler.cpp b/src/server/game/Handlers/MailHandler.cpp
index 67c89e153d8..c2d9333b66a 100644
--- a/src/server/game/Handlers/MailHandler.cpp
+++ b/src/server/game/Handlers/MailHandler.cpp
@@ -195,7 +195,7 @@ void WorldSession::HandleSendMail(WorldPackets::Mail::SendMail& packet)
if (Item* item = player->GetItemByGuid(att.ItemGUID))
{
ItemTemplate const* itemProto = item->GetTemplate();
- if (!itemProto || !(itemProto->GetFlags() & ITEM_FLAG_IS_BOUND_TO_ACCOUNT))
+ if (!itemProto || !itemProto->HasFlag(ITEM_FLAG_IS_BOUND_TO_ACCOUNT))
{
accountBound = false;
break;
@@ -249,13 +249,13 @@ void WorldSession::HandleSendMail(WorldPackets::Mail::SendMail& packet)
}
}
- if (item->GetTemplate()->GetFlags() & ITEM_FLAG_CONJURED || *item->m_itemData->Expiration)
+ if (item->GetTemplate()->HasFlag(ITEM_FLAG_CONJURED) || *item->m_itemData->Expiration)
{
player->SendMailResult(0, MAIL_SEND, MAIL_ERR_EQUIP_ERROR, EQUIP_ERR_MAIL_BOUND_ITEM);
return;
}
- if (packet.Info.Cod && item->HasItemFlag(ITEM_FIELD_FLAG_WRAPPED))
+ if (packet.Info.Cod && item->IsWrapped())
{
player->SendMailResult(0, MAIL_SEND, MAIL_ERR_CANT_SEND_WRAPPED_COD);
return;
diff --git a/src/server/game/Handlers/SpellHandler.cpp b/src/server/game/Handlers/SpellHandler.cpp
index 8d62c27d64a..088cd8fbd70 100644
--- a/src/server/game/Handlers/SpellHandler.cpp
+++ b/src/server/game/Handlers/SpellHandler.cpp
@@ -81,14 +81,14 @@ void WorldSession::HandleUseItemOpcode(WorldPackets::Spells::UseItem& packet)
}
// only allow conjured consumable, bandage, poisons (all should have the 2^21 item flag set in DB)
- if (proto->GetClass() == ITEM_CLASS_CONSUMABLE && !(proto->GetFlags() & ITEM_FLAG_IGNORE_DEFAULT_ARENA_RESTRICTIONS) && user->InArena())
+ if (proto->GetClass() == ITEM_CLASS_CONSUMABLE && !proto->HasFlag(ITEM_FLAG_IGNORE_DEFAULT_ARENA_RESTRICTIONS) && user->InArena())
{
user->SendEquipError(EQUIP_ERR_NOT_DURING_ARENA_MATCH, item, nullptr);
return;
}
// don't allow items banned in arena
- if (proto->GetFlags() & ITEM_FLAG_NOT_USEABLE_IN_ARENA && user->InArena())
+ if (proto->HasFlag(ITEM_FLAG_NOT_USEABLE_IN_ARENA) && user->InArena())
{
user->SendEquipError(EQUIP_ERR_NOT_DURING_ARENA_MATCH, item, nullptr);
return;
@@ -163,7 +163,7 @@ void WorldSession::HandleOpenItemOpcode(WorldPackets::Spells::OpenItem& packet)
}
// Verify that the bag is an actual bag or wrapped item that can be used "normally"
- if (!(proto->GetFlags() & ITEM_FLAG_HAS_LOOT) && !item->HasItemFlag(ITEM_FIELD_FLAG_WRAPPED))
+ if (!proto->HasFlag(ITEM_FLAG_HAS_LOOT) && !item->IsWrapped())
{
player->SendEquipError(EQUIP_ERR_CLIENT_LOCKED_OUT, item, nullptr);
TC_LOG_ERROR("entities.player.cheat", "Possible hacking attempt: Player %s [%s] tried to open item [%s, entry: %u] which is not openable!",
@@ -192,7 +192,7 @@ void WorldSession::HandleOpenItemOpcode(WorldPackets::Spells::OpenItem& packet)
}
}
- if (item->HasItemFlag(ITEM_FIELD_FLAG_WRAPPED))// wrapped?
+ if (item->IsWrapped())
{
CharacterDatabasePreparedStatement* stmt = CharacterDatabase.GetPreparedStatement(CHAR_SEL_CHARACTER_GIFT_BY_ITEM);
stmt->setUInt64(0, item->GetGUID().GetCounter());
@@ -212,7 +212,7 @@ void WorldSession::HandleOpenWrappedItemCallback(uint16 pos, ObjectGuid itemGuid
if (!item)
return;
- if (item->GetGUID() != itemGuid || !item->HasItemFlag(ITEM_FIELD_FLAG_WRAPPED)) // during getting result, gift was swapped with another item
+ if (item->GetGUID() != itemGuid || !item->IsWrapped()) // during getting result, gift was swapped with another item
return;
if (!result)
diff --git a/src/server/game/Handlers/TradeHandler.cpp b/src/server/game/Handlers/TradeHandler.cpp
index 294bcca413c..54c41f22e4a 100644
--- a/src/server/game/Handlers/TradeHandler.cpp
+++ b/src/server/game/Handlers/TradeHandler.cpp
@@ -68,7 +68,7 @@ void WorldSession::SendUpdateTrade(bool trader_data /*= true*/)
tradeItem.Item.Initialize(item);
tradeItem.StackCount = item->GetCount();
tradeItem.GiftCreator = item->GetGiftCreator();
- if (!item->HasItemFlag(ITEM_FIELD_FLAG_WRAPPED))
+ if (!item->IsWrapped())
{
tradeItem.Unwrapped = boost::in_place();
@@ -76,7 +76,7 @@ void WorldSession::SendUpdateTrade(bool trader_data /*= true*/)
tradeItem.Unwrapped->OnUseEnchantmentID = item->GetEnchantmentId(USE_ENCHANTMENT_SLOT);
tradeItem.Unwrapped->Creator = item->GetCreator();
tradeItem.Unwrapped->Charges = item->GetSpellCharges();
- tradeItem.Unwrapped->Lock = item->GetTemplate()->GetLockID() && !item->HasItemFlag(ITEM_FIELD_FLAG_UNLOCKED);
+ tradeItem.Unwrapped->Lock = item->GetTemplate()->GetLockID() && item->IsLocked();
tradeItem.Unwrapped->MaxDurability = item->m_itemData->MaxDurability;
tradeItem.Unwrapped->Durability = item->m_itemData->Durability;
@@ -134,7 +134,7 @@ void WorldSession::moveItems(Item* myItems[], Item* hisItems[])
}
// adjust time (depends on /played)
- if (myItems[i]->HasItemFlag(ITEM_FIELD_FLAG_BOP_TRADEABLE))
+ if (myItems[i]->IsBOPTradeable())
myItems[i]->SetCreatePlayedTime(trader->GetTotalPlayedTime() - (_player->GetTotalPlayedTime() - myItems[i]->m_itemData->CreatePlayedTime));
// store
trader->MoveItemToInventory(traderDst, myItems[i], true, true);
@@ -152,7 +152,7 @@ void WorldSession::moveItems(Item* myItems[], Item* hisItems[])
}
// adjust time (depends on /played)
- if (hisItems[i]->HasItemFlag(ITEM_FIELD_FLAG_BOP_TRADEABLE))
+ if (hisItems[i]->IsBOPTradeable())
hisItems[i]->SetCreatePlayedTime(_player->GetTotalPlayedTime() - (trader->GetTotalPlayedTime() - hisItems[i]->m_itemData->CreatePlayedTime));
// store
_player->MoveItemToInventory(playerDst, hisItems[i], true, true);
diff --git a/src/server/game/Loot/Loot.cpp b/src/server/game/Loot/Loot.cpp
index 7fb6c867973..23c094507e5 100644
--- a/src/server/game/Loot/Loot.cpp
+++ b/src/server/game/Loot/Loot.cpp
@@ -41,8 +41,8 @@ LootItem::LootItem(LootStoreItem const& li)
conditions = li.conditions;
ItemTemplate const* proto = sObjectMgr->GetItemTemplate(itemid);
- freeforall = proto && (proto->GetFlags() & ITEM_FLAG_MULTI_DROP);
- follow_loot_rules = proto && (proto->FlagsCu & ITEM_FLAGS_CU_FOLLOW_LOOT_RULES);
+ freeforall = proto && proto->HasFlag(ITEM_FLAG_MULTI_DROP);
+ follow_loot_rules = proto && (proto->HasFlag(ITEM_FLAGS_CU_FOLLOW_LOOT_RULES));
needs_quest = li.needs_quest;
@@ -68,24 +68,24 @@ bool LootItem::AllowedForPlayer(Player const* player, bool isGivenByMasterLooter
return false;
// not show loot for not own team
- if ((pProto->GetFlags2() & ITEM_FLAG2_FACTION_HORDE) && player->GetTeam() != HORDE)
+ if (pProto->HasFlag(ITEM_FLAG2_FACTION_HORDE) && player->GetTeam() != HORDE)
return false;
- if ((pProto->GetFlags2() & ITEM_FLAG2_FACTION_ALLIANCE) && player->GetTeam() != ALLIANCE)
+ if (pProto->HasFlag(ITEM_FLAG2_FACTION_ALLIANCE) && player->GetTeam() != ALLIANCE)
return false;
// Master looter can see certain items even if the character can't loot them
if (!isGivenByMasterLooter && player->GetGroup() && player->GetGroup()->GetMasterLooterGuid() == player->GetGUID())
{
// check quest requirements
- if (!(pProto->FlagsCu & ITEM_FLAGS_CU_IGNORE_QUEST_STATUS) && (needs_quest || pProto->GetStartQuest()))
+ if (!pProto->HasFlag(ITEM_FLAGS_CU_IGNORE_QUEST_STATUS) && (needs_quest || pProto->GetStartQuest()))
return false;
return true;
}
// Don't allow loot for players without profession or those who already know the recipe
- if (pProto->GetFlags() & ITEM_FLAG_HIDE_UNUSABLE_RECIPE)
+ if (pProto->HasFlag(ITEM_FLAG_HIDE_UNUSABLE_RECIPE))
{
if (!player->HasSkill(pProto->GetRequiredSkill()))
return false;
@@ -114,7 +114,7 @@ bool LootItem::AllowedForPlayer(Player const* player, bool isGivenByMasterLooter
}
// check quest requirements
- if (!(pProto->FlagsCu & ITEM_FLAGS_CU_IGNORE_QUEST_STATUS) && ((needs_quest || (pProto->GetStartQuest() && player->GetQuestStatus(pProto->GetStartQuest()) != QUEST_STATUS_NONE)) && !player->HasQuestForItem(itemid)))
+ if (!pProto->HasFlag(ITEM_FLAGS_CU_IGNORE_QUEST_STATUS) && ((needs_quest || (pProto->GetStartQuest() && player->GetQuestStatus(pProto->GetStartQuest()) != QUEST_STATUS_NONE)) && !player->HasQuestForItem(itemid)))
return false;
return true;
@@ -339,7 +339,7 @@ void Loot::AddItem(LootStoreItem const& item)
// non-conditional one-player only items are counted here,
// free for all items are counted in FillFFALoot(),
// non-ffa conditionals are counted in FillNonQuestNonFFAConditionalLoot()
- if (!item.needs_quest && item.conditions.empty() && !(proto->GetFlags() & ITEM_FLAG_MULTI_DROP))
+ if (!item.needs_quest && item.conditions.empty() && !proto->HasFlag(ITEM_FLAG_MULTI_DROP))
++unlootedCount;
}
}
diff --git a/src/server/game/Loot/LootMgr.cpp b/src/server/game/Loot/LootMgr.cpp
index 0ddc35613fb..fb387b170fb 100644
--- a/src/server/game/Loot/LootMgr.cpp
+++ b/src/server/game/Loot/LootMgr.cpp
@@ -917,7 +917,7 @@ void LoadLootTemplates_Item()
// remove real entries and check existence loot
ItemTemplateContainer const& its = sObjectMgr->GetItemTemplateStore();
for (auto const& itemTemplatePair : its)
- if (lootIdSet.count(itemTemplatePair.first) > 0 && (itemTemplatePair.second.GetFlags() & ITEM_FLAG_HAS_LOOT))
+ if (lootIdSet.count(itemTemplatePair.first) > 0 && itemTemplatePair.second.HasFlag(ITEM_FLAG_HAS_LOOT))
lootIdSet.erase(itemTemplatePair.first);
// output error for any still listed (not referenced from appropriate table) ids
@@ -942,7 +942,7 @@ void LoadLootTemplates_Milling()
ItemTemplateContainer const& its = sObjectMgr->GetItemTemplateStore();
for (auto const& itemTemplatePair : its)
{
- if (!(itemTemplatePair.second.GetFlags() & ITEM_FLAG_IS_MILLABLE))
+ if (!itemTemplatePair.second.HasFlag(ITEM_FLAG_IS_MILLABLE))
continue;
if (lootIdSet.count(itemTemplatePair.first) > 0)
@@ -1005,7 +1005,7 @@ void LoadLootTemplates_Prospecting()
ItemTemplateContainer const& its = sObjectMgr->GetItemTemplateStore();
for (auto const& itemTemplatePair : its)
{
- if (!(itemTemplatePair.second.GetFlags() & ITEM_FLAG_IS_PROSPECTABLE))
+ if (!itemTemplatePair.second.HasFlag(ITEM_FLAG_IS_PROSPECTABLE))
continue;
if (lootIdSet.count(itemTemplatePair.first) > 0)
diff --git a/src/server/game/Spells/Spell.cpp b/src/server/game/Spells/Spell.cpp
index 69a8488d2b3..ca325431450 100644
--- a/src/server/game/Spells/Spell.cpp
+++ b/src/server/game/Spells/Spell.cpp
@@ -5003,7 +5003,7 @@ void Spell::TakeReagents()
return;
// do not take reagents for these item casts
- if (m_CastItem && m_CastItem->GetTemplate()->GetFlags() & ITEM_FLAG_NO_REAGENT_COST)
+ if (m_CastItem && m_CastItem->GetTemplate()->HasFlag(ITEM_FLAG_NO_REAGENT_COST))
return;
Player* p_caster = m_caster->ToPlayer();
@@ -6791,7 +6791,7 @@ SpellCastResult Spell::CheckItems(int32* param1 /*= nullptr*/, int32* param2 /*=
}
// do not take reagents for these item casts
- if (!(m_CastItem && m_CastItem->GetTemplate()->GetFlags() & ITEM_FLAG_NO_REAGENT_COST))
+ if (!(m_CastItem && m_CastItem->GetTemplate()->HasFlag(ITEM_FLAG_NO_REAGENT_COST)))
{
bool checkReagents = !(_triggeredCastFlags & TRIGGERED_IGNORE_POWER_AND_REAGENT_COST) && !player->CanNoReagentCast(m_spellInfo);
// Not own traded item (in trader trade slot) requires reagents even if triggered spell
@@ -6956,7 +6956,7 @@ SpellCastResult Spell::CheckItems(int32* param1 /*= nullptr*/, int32* param2 /*=
if (m_targets.GetItemTarget()->GetOwner() != player)
return SPELL_FAILED_NOT_TRADEABLE;
// do not allow to enchant vellum from scroll made by vellum-prevent exploit
- if (m_CastItem && m_CastItem->GetTemplate()->GetFlags() & ITEM_FLAG_NO_REAGENT_COST)
+ if (m_CastItem && m_CastItem->GetTemplate()->HasFlag(ITEM_FLAG_NO_REAGENT_COST))
return SPELL_FAILED_TOTEM_CATEGORY;
ItemPosCountVec dest;
InventoryResult msg = player->CanStoreNewItem(NULL_BAG, NULL_SLOT, dest, spellEffectInfo.ItemType, 1);
@@ -7080,7 +7080,7 @@ SpellCastResult Spell::CheckItems(int32* param1 /*= nullptr*/, int32* param2 /*=
if (!item)
return SPELL_FAILED_CANT_BE_PROSPECTED;
//ensure item is a prospectable ore
- if (!(item->GetTemplate()->GetFlags() & ITEM_FLAG_IS_PROSPECTABLE))
+ if (!item->GetTemplate()->HasFlag(ITEM_FLAG_IS_PROSPECTABLE))
return SPELL_FAILED_CANT_BE_PROSPECTED;
//prevent prospecting in trade slot
if (item->GetOwnerGUID() != player->GetGUID())
@@ -7111,7 +7111,7 @@ SpellCastResult Spell::CheckItems(int32* param1 /*= nullptr*/, int32* param2 /*=
if (!item)
return SPELL_FAILED_CANT_BE_MILLED;
//ensure item is a millable herb
- if (!(item->GetTemplate()->GetFlags() & ITEM_FLAG_IS_MILLABLE))
+ if (!item->GetTemplate()->HasFlag(ITEM_FLAG_IS_MILLABLE))
return SPELL_FAILED_CANT_BE_MILLED;
//prevent milling in trade slot
if (item->GetOwnerGUID() != player->GetGUID())
diff --git a/src/server/game/Spells/SpellEffects.cpp b/src/server/game/Spells/SpellEffects.cpp
index 621e620866a..1c1a56c2bb4 100644
--- a/src/server/game/Spells/SpellEffects.cpp
+++ b/src/server/game/Spells/SpellEffects.cpp
@@ -2337,7 +2337,7 @@ void Spell::EffectEnchantItemPerm()
else
{
// do not increase skill if vellum used
- if (!(m_CastItem && m_CastItem->GetTemplate()->GetFlags() & ITEM_FLAG_NO_REAGENT_COST))
+ if (!(m_CastItem && m_CastItem->GetTemplate()->HasFlag(ITEM_FLAG_NO_REAGENT_COST)))
player->UpdateCraftSkill(m_spellInfo->Id);
uint32 enchant_id = effectInfo->MiscValue;
@@ -4385,7 +4385,7 @@ void Spell::EffectProspecting()
if (!player)
return;
- if (!itemTarget || !(itemTarget->GetTemplate()->GetFlags() & ITEM_FLAG_IS_PROSPECTABLE))
+ if (!itemTarget || !itemTarget->GetTemplate()->HasFlag(ITEM_FLAG_IS_PROSPECTABLE))
return;
if (itemTarget->GetCount() < 5)
@@ -4410,7 +4410,7 @@ void Spell::EffectMilling()
if (!player)
return;
- if (!itemTarget || !(itemTarget->GetTemplate()->GetFlags() & ITEM_FLAG_IS_MILLABLE))
+ if (!itemTarget || !itemTarget->GetTemplate()->HasFlag(ITEM_FLAG_IS_MILLABLE))
return;
if (itemTarget->GetCount() < 5)