diff --git a/Source/Game/Entities/Creature/CreatureData.cs b/Source/Game/Entities/Creature/CreatureData.cs index 60cd7c7dd..491717f61 100644 --- a/Source/Game/Entities/Creature/CreatureData.cs +++ b/Source/Game/Entities/Creature/CreatureData.cs @@ -440,7 +440,7 @@ namespace Game.Entities public bool IgnoreFiltering; //helpers - public bool IsGoldRequired(ItemTemplate pProto) { return Convert.ToBoolean(pProto.GetFlags2() & ItemFlags2.DontIgnoreBuyPrice) || ExtendedCost == 0; } + public bool IsGoldRequired(ItemTemplate pProto) { return pProto.HasFlag(ItemFlags2.DontIgnoreBuyPrice) || ExtendedCost == 0; } } public class VendorItemData diff --git a/Source/Game/Entities/Item/Item.cs b/Source/Game/Entities/Item/Item.cs index 9e28bdba6..b17825c45 100644 --- a/Source/Game/Entities/Item/Item.cs +++ b/Source/Game/Entities/Item/Item.cs @@ -191,7 +191,7 @@ namespace Game.Entities DB.Characters.Execute(stmt); - if ((uState == ItemUpdateState.Changed) && HasItemFlag(ItemFieldFlags.Wrapped)) + if ((uState == ItemUpdateState.Changed) && IsWrapped()) { stmt = DB.Characters.GetPreparedStatement(CharStatements.UPD_GIFT_OWNER); stmt.AddValue(0, GetOwnerGUID().GetCounter()); @@ -372,7 +372,7 @@ namespace Game.Entities stmt.AddValue(0, GetGUID().GetCounter()); trans.Append(stmt); - if (HasItemFlag(ItemFieldFlags.Wrapped)) + if (IsWrapped()) { stmt = DB.Characters.GetPreparedStatement(CharStatements.DEL_GIFT); stmt.AddValue(0, GetGUID().GetCounter()); @@ -446,7 +446,7 @@ namespace Game.Entities SetUpdateFieldValue(m_values.ModifyValue(m_itemData).ModifyValue(m_itemData.MaxDurability), proto.MaxDurability); // do not overwrite durability for wrapped items - if (durability > proto.MaxDurability && !HasItemFlag(ItemFieldFlags.Wrapped)) + if (durability > proto.MaxDurability && !IsWrapped()) { SetDurability(proto.MaxDurability); need_save = true; @@ -805,7 +805,7 @@ namespace Game.Entities if (m_lootGenerated) return false; - if ((!mail || !IsBoundAccountWide()) && (IsSoulBound() && (!HasItemFlag(ItemFieldFlags.BopTradeable) || !trade))) + if ((!mail || !IsBoundAccountWide()) && (IsSoulBound() && (!IsBOPTradeable() || !trade))) return false; if (IsBag() && (Player.IsBagPos(GetPos()) || !ToBag().IsEmpty())) @@ -924,7 +924,7 @@ namespace Game.Entities bool isEnchantSpell = spellInfo.HasEffect(SpellEffectName.EnchantItem) || spellInfo.HasEffect(SpellEffectName.EnchantItemTemporary) || spellInfo.HasEffect(SpellEffectName.EnchantItemPrismatic); if ((int)spellInfo.EquippedItemClass != -1) // -1 == any item class { - if (isEnchantSpell && proto.GetFlags3().HasAnyFlag(ItemFlags3.CanStoreEnchants)) + if (isEnchantSpell && proto.HasFlag(ItemFlags3.CanStoreEnchants)) return true; if (spellInfo.EquippedItemClass != proto.GetClass()) @@ -1209,7 +1209,7 @@ namespace Game.Entities if (GetOwnerGUID() == player.GetGUID()) return false; - if (HasItemFlag(ItemFieldFlags.BopTradeable)) + if (IsBOPTradeable()) if (allowedGUIDs.Contains(player.GetGUID())) return false; @@ -1355,7 +1355,7 @@ namespace Game.Entities public void SetNotRefundable(Player owner, bool changestate = true, SQLTransaction trans = null, bool addToCollection = true) { - if (!HasItemFlag(ItemFieldFlags.Refundable)) + if (!IsRefundable()) return; ItemExpirePurchaseRefund itemExpirePurchaseRefund = new(); @@ -1458,7 +1458,7 @@ namespace Game.Entities if (proto.GetClass() == ItemClass.Weapon && proto.GetSubClass() == (uint)ItemSubClassWeapon.FishingPole) return false; - if (proto.GetFlags2().HasAnyFlag(ItemFlags2.NoAlterItemVisual)) + if (proto.HasFlag(ItemFlags2.NoAlterItemVisual)) return false; if (!HasStats()) @@ -1614,7 +1614,7 @@ namespace Game.Entities { standardPrice = true; - if (proto.GetFlags2().HasAnyFlag(ItemFlags2.OverrideGoldCost)) + if (proto.HasFlag(ItemFlags2.OverrideGoldCost)) return proto.GetBuyPrice(); var qualityPrice = CliDB.ImportPriceQualityStorage.LookupByKey(quality + 1); @@ -1746,7 +1746,7 @@ namespace Game.Entities public static uint GetSellPrice(ItemTemplate proto, uint quality, uint itemLevel) { - if (proto.GetFlags2().HasAnyFlag(ItemFlags2.OverrideGoldCost)) + if (proto.HasFlag(ItemFlags2.OverrideGoldCost)) return proto.GetSellPrice(); bool standardPrice; @@ -1772,7 +1772,7 @@ namespace Game.Entities ItemTemplate itemTemplate = GetTemplate(); uint minItemLevel = owner.m_unitData.MinItemLevel; uint minItemLevelCutoff = owner.m_unitData.MinItemLevelCutoff; - uint maxItemLevel = itemTemplate.GetFlags3().HasAnyFlag(ItemFlags3.IgnoreItemLevelCapInPvp) ? 0u : owner.m_unitData.MaxItemLevel; + uint maxItemLevel = itemTemplate.HasFlag(ItemFlags3.IgnoreItemLevelCapInPvp) ? 0u : owner.m_unitData.MaxItemLevel; bool pvpBonus = owner.IsUsingPvpItemLevels(); uint azeriteLevel = 0; @@ -1867,7 +1867,7 @@ namespace Game.Entities public static ItemDisenchantLootRecord GetDisenchantLoot(ItemTemplate itemTemplate, uint quality, uint itemLevel) { - if (itemTemplate.GetFlags().HasAnyFlag(ItemFlags.Conjured | ItemFlags.NoDisenchant) || itemTemplate.GetBonding() == ItemBondingType.Quest) + if (itemTemplate.HasFlag(ItemFlags.Conjured) || itemTemplate.HasFlag(ItemFlags.NoDisenchant) || itemTemplate.GetBonding() == ItemBondingType.Quest) return null; if (itemTemplate.GetArea(0) != 0 || itemTemplate.GetArea(1) != 0 || itemTemplate.GetMap() != 0 || itemTemplate.GetMaxStackSize() > 1) @@ -2501,8 +2501,8 @@ namespace Game.Entities } public bool IsSoulBound() { return HasItemFlag(ItemFieldFlags.Soulbound); } - public bool IsBoundAccountWide() { return GetTemplate().GetFlags().HasAnyFlag(ItemFlags.IsBoundToAccount); } - public bool IsBattlenetAccountBound() { return GetTemplate().GetFlags2().HasAnyFlag(ItemFlags2.BnetAccountTradeOk); } + public bool IsBoundAccountWide() { return GetTemplate().HasFlag(ItemFlags.IsBoundToAccount); } + public bool IsBattlenetAccountBound() { return GetTemplate().HasFlag(ItemFlags2.BnetAccountTradeOk); } public bool HasItemFlag(ItemFieldFlags flag) { return (m_itemData.DynamicFlags & (uint)flag) != 0; } public void AddItemFlag(ItemFieldFlags flags) { SetUpdateFieldFlagValue(m_values.ModifyValue(m_itemData).ModifyValue(m_itemData.DynamicFlags), (uint)flags); } @@ -2517,6 +2517,9 @@ namespace Game.Entities public AzeriteItem ToAzeriteItem() { return IsAzeriteItem() ? this as AzeriteItem : null; } public AzeriteEmpoweredItem ToAzeriteEmpoweredItem() { return IsAzeriteEmpoweredItem() ? this as AzeriteEmpoweredItem : null; } + public bool IsRefundable() { return HasItemFlag(ItemFieldFlags.Refundable); } + public bool IsBOPTradeable() { return HasItemFlag(ItemFieldFlags.BopTradeable); } + public bool IsWrapped() { return HasItemFlag(ItemFieldFlags.Wrapped); } public bool IsLocked() { return !HasItemFlag(ItemFieldFlags.Unlocked); } public bool IsBag() { return GetTemplate().GetInventoryType() == InventoryType.Bag; } public bool IsAzeriteItem() { return GetTypeId() == TypeId.AzeriteItem; } @@ -2784,8 +2787,8 @@ namespace Game.Entities for (int i = EffectCount; i < Effects.Length; ++i) Effects[i] = null; - CanDisenchant = !proto.GetFlags().HasAnyFlag(ItemFlags.NoDisenchant); - CanScrap = proto.GetFlags4().HasAnyFlag(ItemFlags4.Scrapable); + CanDisenchant = !proto.HasFlag(ItemFlags.NoDisenchant); + CanScrap = proto.HasFlag(ItemFlags4.Scrapable); _state.SuffixPriority = int.MaxValue; _state.AppearanceModPriority = int.MaxValue; diff --git a/Source/Game/Entities/Item/ItemTemplate.cs b/Source/Game/Entities/Item/ItemTemplate.cs index 36d632779..7cf4337dd 100644 --- a/Source/Game/Entities/Item/ItemTemplate.cs +++ b/Source/Game/Entities/Item/ItemTemplate.cs @@ -45,9 +45,15 @@ namespace Game.Entities return GetMaxStackSize() == 1 && GetClass() != ItemClass.Consumable && GetClass() != ItemClass.Quest && - !GetFlags().HasFlag(ItemFlags.NoCreator) && + !HasFlag(ItemFlags.NoCreator) && GetId() != 6948; /*Hearthstone*/ } + + public bool HasFlag(ItemFlags flag) { return (ExtendedData.Flags[0] & (int)flag) != 0; } + public bool HasFlag(ItemFlags2 flag) { return (ExtendedData.Flags[1] & (int)flag) != 0; } + public bool HasFlag(ItemFlags3 flag) { return (ExtendedData.Flags[2] & (int)flag) != 0; } + public bool HasFlag(ItemFlags4 flag) { return (ExtendedData.Flags[3] & (int)flag) != 0; } + public bool HasFlag(ItemFlagsCustom customFlag) { return (FlagsCu & customFlag) != 0; } public bool CanChangeEquipStateInCombat() { @@ -180,7 +186,7 @@ namespace Game.Entities dps = CliDB.ItemDamageAmmoStorage.LookupByKey(itemLevel).Quality[(int)quality]; break; case InventoryType.Weapon2Hand: - if (GetFlags2().HasAnyFlag(ItemFlags2.CasterWeapon)) + if (HasFlag(ItemFlags2.CasterWeapon)) dps = CliDB.ItemDamageTwoHandCasterStorage.LookupByKey(itemLevel).Quality[(int)quality]; else dps = CliDB.ItemDamageTwoHandStorage.LookupByKey(itemLevel).Quality[(int)quality]; @@ -196,7 +202,7 @@ namespace Game.Entities case ItemSubClassWeapon.Bow: case ItemSubClassWeapon.Gun: case ItemSubClassWeapon.Crossbow: - if (GetFlags2().HasAnyFlag(ItemFlags2.CasterWeapon)) + if (HasFlag(ItemFlags2.CasterWeapon)) dps = CliDB.ItemDamageTwoHandCasterStorage.LookupByKey(itemLevel).Quality[(int)quality]; else dps = CliDB.ItemDamageTwoHandStorage.LookupByKey(itemLevel).Quality[(int)quality]; @@ -208,7 +214,7 @@ namespace Game.Entities case InventoryType.Weapon: case InventoryType.WeaponMainhand: case InventoryType.WeaponOffhand: - if (GetFlags2().HasAnyFlag(ItemFlags2.CasterWeapon)) + if (HasFlag(ItemFlags2.CasterWeapon)) dps = CliDB.ItemDamageOneHandCasterStorage.LookupByKey(itemLevel).Quality[(int)quality]; else dps = CliDB.ItemDamageOneHandStorage.LookupByKey(itemLevel).Quality[(int)quality]; @@ -234,7 +240,7 @@ namespace Game.Entities public bool IsUsableByLootSpecialization(Player player, bool alwaysAllowBoundToAccount) { - if (GetFlags().HasAnyFlag(ItemFlags.IsBoundToAccount) && alwaysAllowBoundToAccount) + if (HasFlag(ItemFlags.IsBoundToAccount) && alwaysAllowBoundToAccount) return true; uint spec = player.GetLootSpecId(); @@ -265,10 +271,6 @@ namespace Game.Entities public ItemClass GetClass() { return (ItemClass)BasicData.ClassID; } public uint GetSubClass() { return BasicData.SubclassID; } public ItemQuality GetQuality() { return (ItemQuality)ExtendedData.OverallQualityID; } - public ItemFlags GetFlags() { return (ItemFlags)ExtendedData.Flags[0]; } - public ItemFlags2 GetFlags2() { return (ItemFlags2)ExtendedData.Flags[1]; } - public ItemFlags3 GetFlags3() { return (ItemFlags3)ExtendedData.Flags[2]; } - public ItemFlags4 GetFlags4() { return (ItemFlags4)ExtendedData.Flags[3]; } public uint GetOtherFactionItemId() { return ExtendedData.FactionRelated; } public float GetPriceRandomValue() { return ExtendedData.PriceRandomValue; } public float GetPriceVariance() { return ExtendedData.PriceVariance; } @@ -327,9 +329,9 @@ namespace Game.Entities } public bool IsPotion() { return GetClass() == ItemClass.Consumable && GetSubClass() == (uint)ItemSubClassConsumable.Potion; } - public bool IsVellum() { return GetFlags3().HasAnyFlag(ItemFlags3.CanStoreEnchants); } - public bool IsConjuredConsumable() { return GetClass() == ItemClass.Consumable && GetFlags().HasAnyFlag(ItemFlags.Conjured); } - public bool IsCraftingReagent() { return GetFlags2().HasAnyFlag(ItemFlags2.UsedInATradeskill); } + public bool IsVellum() { return HasFlag(ItemFlags3.CanStoreEnchants); } + public bool IsConjuredConsumable() { return GetClass() == ItemClass.Consumable && HasFlag(ItemFlags.Conjured); } + public bool IsCraftingReagent() { return HasFlag(ItemFlags2.UsedInATradeskill); } public bool IsWeapon() { return GetClass() == ItemClass.Weapon; } diff --git a/Source/Game/Entities/Player/CollectionManager.cs b/Source/Game/Entities/Player/CollectionManager.cs index 3eab83fa7..4830b7694 100644 --- a/Source/Game/Entities/Player/CollectionManager.cs +++ b/Source/Game/Entities/Player/CollectionManager.cs @@ -599,7 +599,7 @@ namespace Game.Entities if (!CanAddAppearance(itemModifiedAppearance)) return; - if (item.HasItemFlag(ItemFieldFlags.BopTradeable | ItemFieldFlags.Refundable)) + if (item.IsBOPTradeable() || item.IsRefundable()) { AddTemporaryAppearance(item.GetGUID(), itemModifiedAppearance); return; @@ -638,7 +638,7 @@ namespace Game.Entities if (_owner.GetPlayer().CanUseItem(itemTemplate) != InventoryResult.Ok) return false; - if (itemTemplate.GetFlags2().HasAnyFlag(ItemFlags2.NoSourceForItemVisual) || itemTemplate.GetQuality() == ItemQuality.Artifact) + if (itemTemplate.HasFlag(ItemFlags2.NoSourceForItemVisual) || itemTemplate.GetQuality() == ItemQuality.Artifact) return false; switch (itemTemplate.GetClass()) @@ -691,7 +691,7 @@ namespace Game.Entities } if (itemTemplate.GetQuality() < ItemQuality.Uncommon) - if (!itemTemplate.GetFlags2().HasAnyFlag(ItemFlags2.IgnoreQualityForItemVisualSource) || !itemTemplate.GetFlags3().HasAnyFlag(ItemFlags3.ActsAsTransmogHiddenVisualOption)) + if (!itemTemplate.HasFlag(ItemFlags2.IgnoreQualityForItemVisualSource) || !itemTemplate.HasFlag(ItemFlags3.ActsAsTransmogHiddenVisualOption)) return false; if (itemModifiedAppearance.Id < _appearances.Count && _appearances.Get((int)itemModifiedAppearance.Id)) diff --git a/Source/Game/Entities/Player/Player.DB.cs b/Source/Game/Entities/Player/Player.DB.cs index a50f1cab7..09324827b 100644 --- a/Source/Game/Entities/Player/Player.DB.cs +++ b/Source/Game/Entities/Player/Player.DB.cs @@ -232,13 +232,13 @@ namespace Game.Entities remove = true; } // "Conjured items disappear if you are logged out for more than 15 minutes" - else if (timeDiff > 15 * Time.Minute && proto.GetFlags().HasAnyFlag(ItemFlags.Conjured)) + else if (timeDiff > 15 * Time.Minute && proto.HasFlag(ItemFlags.Conjured)) { Log.outDebug(LogFilter.Player, "LoadInventory: player (GUID: {0}, name: {1}, diff: {2}) has conjured item (GUID: {3}, entry: {4}) with expired lifetime (15 minutes). Deleting item.", GetGUID().ToString(), GetName(), timeDiff, item.GetGUID().ToString(), item.GetEntry()); remove = true; } - if (item.HasItemFlag(ItemFieldFlags.Refundable)) + if (item.IsRefundable()) { if (item.GetPlayedTime() > (2 * Time.Hour)) { @@ -272,7 +272,7 @@ namespace Game.Entities } } } - else if (item.HasItemFlag(ItemFieldFlags.BopTradeable)) + else if (item.IsBOPTradeable()) { stmt = DB.Characters.GetPreparedStatement(CharStatements.SEL_ITEM_BOP_TRADE); stmt.AddValue(0, item.GetGUID().ToString()); @@ -1590,7 +1590,7 @@ namespace Game.Entities if (item.GetState() == ItemUpdateState.New) { if (itemTemplate != null) - if (itemTemplate.GetFlags().HasAnyFlag(ItemFlags.HasLoot)) + if (itemTemplate.HasFlag(ItemFlags.HasLoot)) Global.LootItemStorage.RemoveStoredLootForContainer(item.GetGUID().GetCounter()); continue; @@ -1601,7 +1601,7 @@ namespace Game.Entities m_items[i].FSetState(ItemUpdateState.New); if (itemTemplate != null) - if (itemTemplate.GetFlags().HasAnyFlag(ItemFlags.HasLoot)) + if (itemTemplate.HasFlag(ItemFlags.HasLoot)) Global.LootItemStorage.RemoveStoredLootForContainer(item.GetGUID().GetCounter()); } diff --git a/Source/Game/Entities/Player/Player.Items.cs b/Source/Game/Entities/Player/Player.Items.cs index d848a0169..fdb10a5b4 100644 --- a/Source/Game/Entities/Player/Player.Items.cs +++ b/Source/Game/Entities/Player/Player.Items.cs @@ -47,7 +47,7 @@ namespace Game.Entities } public void RefundItem(Item item) { - if (!item.HasItemFlag(ItemFieldFlags.Refundable)) + if (!item.IsRefundable()) { Log.outDebug(LogFilter.Player, "Item refund: item not refundable!"); return; @@ -152,7 +152,7 @@ namespace Game.Entities // This function call unsets ITEM_FLAGS_REFUNDABLE if played time is over 2 hours. item.UpdatePlayedTime(this); - if (!item.HasItemFlag(ItemFieldFlags.Refundable)) + if (!item.IsRefundable()) { Log.outDebug(LogFilter.Player, "Item refund: item not refundable!"); return; @@ -1453,13 +1453,13 @@ namespace Game.Entities if (proto == null) return InventoryResult.ItemNotFound; - if (proto.GetFlags2().HasAnyFlag(ItemFlags2.InternalItem)) + if (proto.HasFlag(ItemFlags2.InternalItem)) return InventoryResult.CantEquipEver; - if (Convert.ToBoolean(proto.GetFlags2() & ItemFlags2.FactionHorde) && GetTeam() != Team.Horde) + if (proto.HasFlag(ItemFlags2.FactionHorde) && GetTeam() != Team.Horde) return InventoryResult.CantEquipEver; - if (Convert.ToBoolean(proto.GetFlags2() & ItemFlags2.FactionAlliance) && GetTeam() != Team.Alliance) + if (proto.HasFlag(ItemFlags2.FactionAlliance) && GetTeam() != Team.Alliance) return InventoryResult.CantEquipEver; if ((proto.GetAllowableClass() & GetClassMask()) == 0 || (proto.GetAllowableRace() & (long)SharedConst.GetMaskForRace(GetRace())) == 0) @@ -2469,7 +2469,7 @@ namespace Game.Entities if (!bStore) AutoUnequipOffhandIfNeed(); - if (pProto.GetFlags().HasAnyFlag(ItemFlags.ItemPurchaseRecord) && crItem.ExtendedCost != 0 && pProto.GetMaxStackSize() == 1) + if (pProto.HasFlag(ItemFlags.ItemPurchaseRecord) && crItem.ExtendedCost != 0 && pProto.GetMaxStackSize() == 1) { it.AddItemFlag(ItemFieldFlags.Refundable); it.SetRefundRecipient(GetGUID()); @@ -2542,7 +2542,7 @@ namespace Game.Entities foreach (var item in m_itemDuration) { - if (!realtimeonly || item.GetTemplate().GetFlags().HasAnyFlag(ItemFlags.RealDuration)) + if (!realtimeonly || item.GetTemplate().HasFlag(ItemFlags.RealDuration)) item.UpdateDuration(this, time); } } @@ -3220,7 +3220,7 @@ namespace Game.Entities return false; } - if (!IsGameMaster() && ((pProto.GetFlags2().HasAnyFlag(ItemFlags2.FactionHorde) && GetTeam() == Team.Alliance) || (pProto.GetFlags2().HasAnyFlag(ItemFlags2.FactionAlliance) && GetTeam() == Team.Horde))) + if (!IsGameMaster() && ((pProto.HasFlag(ItemFlags2.FactionHorde) && GetTeam() == Team.Alliance) || (pProto.HasFlag(ItemFlags2.FactionAlliance) && GetTeam() == Team.Horde))) return false; Creature creature = GetNPCIfCanInteractWith(vendorguid, NPCFlags.Vendor, NPCFlags2.None); @@ -3478,7 +3478,7 @@ namespace Game.Entities { ItemTemplate itemTemplate = pItem.GetTemplate(); if (itemTemplate != null) - if (itemTemplate.GetFlags().HasAnyFlag(ItemFlags.HasLoot)) + if (itemTemplate.HasFlag(ItemFlags.HasLoot)) Global.LootItemStorage.RemoveStoredLootForContainer(pItem.GetGUID().GetCounter()); pItem.SetState(ItemUpdateState.Removed, this); @@ -3812,7 +3812,7 @@ namespace Game.Entities void ApplyItemEquipSpell(Item item, bool apply, bool formChange = false) { - if (item == null || item.GetTemplate().GetFlags().HasFlag(ItemFlags.Legacy)) + if (item == null || item.GetTemplate().HasFlag(ItemFlags.Legacy)) return; foreach (ItemEffectRecord effectData in item.GetEffects()) @@ -3880,7 +3880,7 @@ namespace Game.Entities void ApplyEquipCooldown(Item pItem) { - if (pItem.GetTemplate().GetFlags().HasAnyFlag(ItemFlags.NoEquipCooldown)) + if (pItem.GetTemplate().HasFlag(ItemFlags.NoEquipCooldown)) return; DateTime now = GameTime.GetGameTimeSteadyPoint(); @@ -4252,7 +4252,7 @@ namespace Game.Entities // in case trade we already have item in other player inventory pLastItem.SetState(in_characterInventoryDB ? ItemUpdateState.Changed : ItemUpdateState.New, this); - if (pLastItem.HasItemFlag(ItemFieldFlags.BopTradeable)) + if (pLastItem.IsBOPTradeable()) AddTradeableItem(pLastItem); } } @@ -4917,7 +4917,7 @@ namespace Game.Entities } else if (type == InventoryType.WeaponOffhand) { - if (!CanDualWield() && !pProto.GetFlags3().HasAnyFlag(ItemFlags3.AlwaysAllowDualWield)) + if (!CanDualWield() && !pProto.HasFlag(ItemFlags3.AlwaysAllowDualWield)) return InventoryResult.TwoHandSkillNotFound; } else if (type == InventoryType.Weapon2Hand) @@ -5025,7 +5025,7 @@ namespace Game.Entities public InventoryResult CanEquipUniqueItem(ItemTemplate itemProto, byte except_slot = ItemConst.NullSlot, uint limit_count = 1) { // check unique-equipped on item - if (Convert.ToBoolean(itemProto.GetFlags() & ItemFlags.UniqueEquippable)) + if (itemProto.HasFlag(ItemFlags.UniqueEquippable)) { // there is an equip limit on this item if (HasItemOrGemWithIdEquipped(itemProto.GetId(), 1, except_slot)) @@ -5429,7 +5429,7 @@ namespace Game.Entities for (byte i = 0; i < ItemConst.MaxBagSize; ++i) DestroyItem(slot, i, update); - if (pItem.HasItemFlag(ItemFieldFlags.Wrapped)) + if (pItem.IsWrapped()) { PreparedStatement stmt = DB.Characters.GetPreparedStatement(CharStatements.DEL_GIFT); stmt.AddValue(0, pItem.GetGUID().GetCounter()); @@ -5493,7 +5493,7 @@ namespace Game.Entities // Delete rolled money / loot from db. // MUST be done before RemoveFromWorld() or GetTemplate() fails - if (pProto.GetFlags().HasAnyFlag(ItemFlags.HasLoot)) + if (pProto.HasFlag(ItemFlags.HasLoot)) Global.LootItemStorage.RemoveStoredLootForContainer(pItem.GetGUID().GetCounter()); if (IsInWorld && update) diff --git a/Source/Game/Entities/Player/Player.Quest.cs b/Source/Game/Entities/Player/Player.Quest.cs index 1284626f6..f37d1f8d9 100644 --- a/Source/Game/Entities/Player/Player.Quest.cs +++ b/Source/Game/Entities/Player/Player.Quest.cs @@ -882,8 +882,8 @@ namespace Game.Entities if (rewardProto == null) return false; - if ((rewardProto.GetFlags2().HasAnyFlag(ItemFlags2.FactionAlliance) && GetTeam() != Team.Alliance) || - (rewardProto.GetFlags2().HasAnyFlag(ItemFlags2.FactionHorde) && GetTeam() != Team.Horde)) + if ((rewardProto.HasFlag(ItemFlags2.FactionAlliance) && GetTeam() != Team.Alliance) || + (rewardProto.HasFlag(ItemFlags2.FactionHorde) && GetTeam() != Team.Horde)) return false; switch (questPackageItem.DisplayType) diff --git a/Source/Game/Entities/Player/Player.Spells.cs b/Source/Game/Entities/Player/Player.Spells.cs index ae3dd98ff..289557976 100644 --- a/Source/Game/Entities/Player/Player.Spells.cs +++ b/Source/Game/Entities/Player/Player.Spells.cs @@ -1491,7 +1491,7 @@ namespace Game.Entities public void CastItemUseSpell(Item item, SpellCastTargets targets, ObjectGuid castCount, uint[] misc) { - if (!item.GetTemplate().GetFlags().HasFlag(ItemFlags.Legacy)) + if (!item.GetTemplate().HasFlag(ItemFlags.Legacy)) { // item spells casted at use foreach (ItemEffectRecord effectData in item.GetEffects()) @@ -1779,7 +1779,7 @@ namespace Game.Entities void ApplyItemObtainSpells(Item item, bool apply) { - if (item.GetTemplate().GetFlags().HasFlag(ItemFlags.Legacy)) + if (item.GetTemplate().HasFlag(ItemFlags.Legacy)) return; foreach (ItemEffectRecord effect in item.GetEffects()) @@ -3260,7 +3260,7 @@ namespace Game.Entities bool canTrigger = damageInfo.GetHitMask().HasAnyFlag(ProcFlagsHit.Normal | ProcFlagsHit.Critical | ProcFlagsHit.Absorb); if (canTrigger) { - if (!item.GetTemplate().GetFlags().HasFlag(ItemFlags.Legacy)) + if (!item.GetTemplate().HasFlag(ItemFlags.Legacy)) { foreach (ItemEffectRecord effectData in item.GetEffects()) { diff --git a/Source/Game/Entities/Player/Player.cs b/Source/Game/Entities/Player/Player.cs index 9a0deb0e0..a0c5b6b39 100644 --- a/Source/Game/Entities/Player/Player.cs +++ b/Source/Game/Entities/Player/Player.cs @@ -7342,7 +7342,7 @@ namespace Game.Entities ItemTemplate offtemplate = offItem.GetTemplate(); // unequip offhand weapon if player doesn't have dual wield anymore - if (!CanDualWield() && ((offItem.GetTemplate().GetInventoryType() == InventoryType.WeaponOffhand && !offItem.GetTemplate().GetFlags3().HasAnyFlag(ItemFlags3.AlwaysAllowDualWield)) + if (!CanDualWield() && ((offItem.GetTemplate().GetInventoryType() == InventoryType.WeaponOffhand && !offItem.GetTemplate().HasFlag(ItemFlags3.AlwaysAllowDualWield)) || offItem.GetTemplate().GetInventoryType() == InventoryType.Weapon)) force = true; diff --git a/Source/Game/Entities/StatSystem.cs b/Source/Game/Entities/StatSystem.cs index 9dcf67b2c..6d87369da 100644 --- a/Source/Game/Entities/StatSystem.cs +++ b/Source/Game/Entities/StatSystem.cs @@ -1321,7 +1321,7 @@ namespace Game.Entities UpdateDamagePhysical(WeaponAttackType.BaseAttack); Item offhand = GetWeaponForAttack(WeaponAttackType.OffAttack, true); if (offhand) - if (CanDualWield() || offhand.GetTemplate().GetFlags3().HasAnyFlag(ItemFlags3.AlwaysAllowDualWield)) + if (CanDualWield() || offhand.GetTemplate().HasFlag(ItemFlags3.AlwaysAllowDualWield)) UpdateDamagePhysical(WeaponAttackType.OffAttack); if (HasAuraType(AuraType.OverrideSpellPowerByApPct)) diff --git a/Source/Game/Globals/ObjectManager.cs b/Source/Game/Globals/ObjectManager.cs index 3db69cc8e..98a58b380 100644 --- a/Source/Game/Globals/ObjectManager.cs +++ b/Source/Game/Globals/ObjectManager.cs @@ -6660,10 +6660,10 @@ namespace Game if (itemPair.Value.GetOtherFactionItemId() == 0) continue; - if (itemPair.Value.GetFlags2().HasFlag(ItemFlags2.FactionHorde)) + if (itemPair.Value.HasFlag(ItemFlags2.FactionHorde)) FactionChangeItemsHordeToAlliance[itemPair.Key] = itemPair.Value.GetOtherFactionItemId(); - if (itemPair.Value.GetFlags2().HasFlag(ItemFlags2.FactionAlliance)) + if (itemPair.Value.HasFlag(ItemFlags2.FactionAlliance)) FactionChangeItemsAllianceToHorde[itemPair.Key] = itemPair.Value.GetOtherFactionItemId(); ++count; diff --git a/Source/Game/Groups/Group.cs b/Source/Game/Groups/Group.cs index a3fa62397..02b69b2cb 100644 --- a/Source/Game/Groups/Group.cs +++ b/Source/Game/Groups/Group.cs @@ -1025,7 +1025,7 @@ namespace Game.Groups r.SetLoot(loot); r.itemSlot = itemSlot; - if (item.GetFlags2().HasAnyFlag(ItemFlags2.CanOnlyRollGreed)) + if (item.HasFlag(ItemFlags2.CanOnlyRollGreed)) r.rollTypeMask &= ~RollMask.Need; loot.items[itemSlot].is_blocked = true; diff --git a/Source/Game/Handlers/AuctionHandler.cs b/Source/Game/Handlers/AuctionHandler.cs index 4dc834c2d..08b0be730 100644 --- a/Source/Game/Handlers/AuctionHandler.cs +++ b/Source/Game/Handlers/AuctionHandler.cs @@ -614,7 +614,7 @@ namespace Game } if (Global.AuctionHouseMgr.GetAItem(item.GetGUID()) || !item.CanBeTraded() || item.IsNotEmptyBag() || - item.GetTemplate().GetFlags().HasAnyFlag(ItemFlags.Conjured) || item.m_itemData.Expiration != 0 || + item.GetTemplate().HasFlag(ItemFlags.Conjured) || item.m_itemData.Expiration != 0 || item.GetCount() < itemForSale.UseCount) { SendAuctionCommandResult(0, AuctionCommand.SellItem, AuctionResult.DatabaseError, throttle.DelayUntilNext); @@ -826,7 +826,7 @@ namespace Game } if (Global.AuctionHouseMgr.GetAItem(item.GetGUID()) || !item.CanBeTraded() || item.IsNotEmptyBag() || - item.GetTemplate().GetFlags().HasAnyFlag(ItemFlags.Conjured) || item.m_itemData.Expiration != 0 || + item.GetTemplate().HasFlag(ItemFlags.Conjured) || item.m_itemData.Expiration != 0 || item.GetCount() != 1) { SendAuctionCommandResult(0, AuctionCommand.SellItem, AuctionResult.DatabaseError, throttle.DelayUntilNext); diff --git a/Source/Game/Handlers/ItemHandler.cs b/Source/Game/Handlers/ItemHandler.cs index 28624a063..56f64fca2 100644 --- a/Source/Game/Handlers/ItemHandler.cs +++ b/Source/Game/Handlers/ItemHandler.cs @@ -329,7 +329,7 @@ namespace Game return; } - if (pItem.GetTemplate().GetFlags().HasAnyFlag(ItemFlags.NoUserDestroy)) + if (pItem.GetTemplate().HasFlag(ItemFlags.NoUserDestroy)) { _player.SendEquipError(InventoryResult.DropBoundItem); return; @@ -427,7 +427,7 @@ namespace Game // 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(ItemFieldFlags.Refundable)) + if (pItem.IsRefundable()) return; // Therefore, no feedback to client // special case at auto sell (sell all) @@ -667,7 +667,7 @@ namespace Game return; } - if (!gift.GetTemplate().GetFlags().HasAnyFlag(ItemFlags.IsWrapper)) // cheating: non-wrapper wrapper + if (!gift.GetTemplate().HasFlag(ItemFlags.IsWrapper)) // cheating: non-wrapper wrapper { GetPlayer().SendEquipError(InventoryResult.ItemNotFound, gift); return; @@ -857,7 +857,7 @@ namespace Game ItemTemplate iGemProto = gems[i].GetTemplate(); // unique item (for new and already placed bit removed enchantments - if (iGemProto.GetFlags().HasAnyFlag(ItemFlags.UniqueEquippable)) + if (iGemProto.HasFlag(ItemFlags.UniqueEquippable)) { for (int j = 0; j < ItemConst.MaxGemSockets; ++j) { diff --git a/Source/Game/Handlers/LootHandler.cs b/Source/Game/Handlers/LootHandler.cs index f121a3076..94d02cdfb 100644 --- a/Source/Game/Handlers/LootHandler.cs +++ b/Source/Game/Handlers/LootHandler.cs @@ -404,7 +404,7 @@ namespace Game } else { - if (pItem.loot.IsLooted() || !proto.GetFlags().HasAnyFlag(ItemFlags.HasLoot)) // Only delete item if no loot or money (unlooted loot is saved to db) + if (pItem.loot.IsLooted() || !proto.HasFlag(ItemFlags.HasLoot)) // Only delete item if no loot or money (unlooted loot is saved to db) player.DestroyItem(pItem.GetBagSlot(), pItem.GetSlot(), true); } return; // item can be looted only single player diff --git a/Source/Game/Handlers/MailHandler.cs b/Source/Game/Handlers/MailHandler.cs index bbbdab2f9..e7e4bef85 100644 --- a/Source/Game/Handlers/MailHandler.cs +++ b/Source/Game/Handlers/MailHandler.cs @@ -189,7 +189,7 @@ namespace Game if (item) { ItemTemplate itemProto = item.GetTemplate(); - if (itemProto == null || !itemProto.GetFlags().HasAnyFlag(ItemFlags.IsBoundToAccount)) + if (itemProto == null || !itemProto.HasFlag(ItemFlags.IsBoundToAccount)) { accountBound = false; break; @@ -242,13 +242,13 @@ namespace Game } } - if (item.GetTemplate().GetFlags().HasAnyFlag(ItemFlags.Conjured) || item.m_itemData.Expiration != 0) + if (item.GetTemplate().HasFlag(ItemFlags.Conjured) || item.m_itemData.Expiration != 0) { player.SendMailResult(0, MailResponseType.Send, MailResponseResult.EquipError, InventoryResult.MailBoundItem); return; } - if (packet.Info.Cod != 0 && item.HasItemFlag(ItemFieldFlags.Wrapped)) + if (packet.Info.Cod != 0 && item.IsWrapped()) { player.SendMailResult(0, MailResponseType.Send, MailResponseResult.CantSendWrappedCod); return; diff --git a/Source/Game/Handlers/NPCHandler.cs b/Source/Game/Handlers/NPCHandler.cs index d154674c7..af2e2c5df 100644 --- a/Source/Game/Handlers/NPCHandler.cs +++ b/Source/Game/Handlers/NPCHandler.cs @@ -500,8 +500,8 @@ namespace Game if (!Convert.ToBoolean(itemTemplate.GetAllowableClass() & GetPlayer().GetClassMask()) && itemTemplate.GetBonding() == ItemBondingType.OnAcquire) continue; - if ((itemTemplate.GetFlags2().HasAnyFlag(ItemFlags2.FactionHorde) && GetPlayer().GetTeam() == Team.Alliance) || - (itemTemplate.GetFlags2().HasAnyFlag(ItemFlags2.FactionAlliance) && GetPlayer().GetTeam() == Team.Horde)) + if ((itemTemplate.HasFlag(ItemFlags2.FactionHorde) && GetPlayer().GetTeam() == Team.Alliance) || + (itemTemplate.HasFlag(ItemFlags2.FactionAlliance) && GetPlayer().GetTeam() == Team.Horde)) continue; if (leftInStock == 0) @@ -528,7 +528,7 @@ namespace Game item.StackCount = (int)itemTemplate.GetBuyCount(); item.Price = (ulong)price; item.DoNotFilterOnVendor = vendorItem.IgnoreFiltering; - item.Refundable = (itemTemplate.GetFlags() & ItemFlags.ItemPurchaseRecord) != 0 && vendorItem.ExtendedCost != 0 && itemTemplate.GetMaxStackSize() == 1; + item.Refundable = itemTemplate.HasFlag(ItemFlags.ItemPurchaseRecord) && vendorItem.ExtendedCost != 0 && itemTemplate.GetMaxStackSize() == 1; item.Item.ItemID = vendorItem.item; if (!vendorItem.BonusListIDs.Empty()) diff --git a/Source/Game/Handlers/SpellHandler.cs b/Source/Game/Handlers/SpellHandler.cs index e7bccd532..afec967e2 100644 --- a/Source/Game/Handlers/SpellHandler.cs +++ b/Source/Game/Handlers/SpellHandler.cs @@ -75,14 +75,14 @@ namespace Game } // only allow conjured consumable, bandage, poisons (all should have the 2^21 item flag set in DB) - if (proto.GetClass() == ItemClass.Consumable && !proto.GetFlags().HasAnyFlag(ItemFlags.IgnoreDefaultArenaRestrictions) && user.InArena()) + if (proto.GetClass() == ItemClass.Consumable && !proto.HasFlag(ItemFlags.IgnoreDefaultArenaRestrictions) && user.InArena()) { user.SendEquipError(InventoryResult.NotDuringArenaMatch, item); return; } // don't allow items banned in arena - if (proto.GetFlags().HasAnyFlag(ItemFlags.NotUseableInArena) && user.InArena()) + if (proto.HasFlag(ItemFlags.NotUseableInArena) && user.InArena()) { user.SendEquipError(InventoryResult.NotDuringArenaMatch, item); return; @@ -158,7 +158,7 @@ namespace Game } // Verify that the bag is an actual bag or wrapped item that can be used "normally" - if (!proto.GetFlags().HasAnyFlag(ItemFlags.HasLoot) && !item.HasItemFlag(ItemFieldFlags.Wrapped)) + if (!proto.HasFlag(ItemFlags.HasLoot) && !item.IsWrapped()) { player.SendEquipError(InventoryResult.ClientLockedOut, item); Log.outError(LogFilter.Network, "Possible hacking attempt: Player {0} [guid: {1}] tried to open item [guid: {2}, entry: {3}] which is not openable!", @@ -186,7 +186,7 @@ namespace Game } } - if (item.HasItemFlag(ItemFieldFlags.Wrapped))// wrapped? + if (item.IsWrapped())// wrapped? { PreparedStatement stmt = DB.Characters.GetPreparedStatement(CharStatements.SEL_CHARACTER_GIFT_BY_ITEM); stmt.AddValue(0, item.GetGUID().GetCounter()); @@ -206,7 +206,7 @@ namespace Game if (!item) return; - if (item.GetGUID() != itemGuid || !item.HasItemFlag(ItemFieldFlags.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.IsEmpty()) diff --git a/Source/Game/Handlers/TradeHandler.cs b/Source/Game/Handlers/TradeHandler.cs index e957b2e0c..2d2bf1375 100644 --- a/Source/Game/Handlers/TradeHandler.cs +++ b/Source/Game/Handlers/TradeHandler.cs @@ -62,7 +62,7 @@ namespace Game tradeItem.Item = new ItemInstance(item); tradeItem.StackCount = (int)item.GetCount(); tradeItem.GiftCreator = item.GetGiftCreator(); - if (!item.HasItemFlag(ItemFieldFlags.Wrapped)) + if (!item.IsWrapped()) { tradeItem.Unwrapped.HasValue = true; TradeUpdated.UnwrappedTradeItem unwrappedItem = tradeItem.Unwrapped.Value; @@ -124,7 +124,7 @@ namespace Game } // adjust time (depends on /played) - if (myItems[i].HasItemFlag(ItemFieldFlags.BopTradeable)) + if (myItems[i].IsBOPTradeable()) myItems[i].SetCreatePlayedTime(trader.GetTotalPlayedTime() - (GetPlayer().GetTotalPlayedTime() - myItems[i].m_itemData.CreatePlayedTime)); // store trader.MoveItemToInventory(traderDst, myItems[i], true, true); @@ -143,7 +143,7 @@ namespace Game // adjust time (depends on /played) - if (hisItems[i].HasItemFlag(ItemFieldFlags.BopTradeable)) + if (hisItems[i].IsBOPTradeable()) hisItems[i].SetCreatePlayedTime(GetPlayer().GetTotalPlayedTime() - (trader.GetTotalPlayedTime() - hisItems[i].m_itemData.CreatePlayedTime)); // store GetPlayer().MoveItemToInventory(playerDst, hisItems[i], true, true); diff --git a/Source/Game/Loot/Loot.cs b/Source/Game/Loot/Loot.cs index 4b6ad1df9..9fd7cc998 100644 --- a/Source/Game/Loot/Loot.cs +++ b/Source/Game/Loot/Loot.cs @@ -35,7 +35,7 @@ namespace Game.Loots conditions = li.conditions; ItemTemplate proto = Global.ObjectMgr.GetItemTemplate(itemid); - freeforall = proto != null && proto.GetFlags().HasAnyFlag(ItemFlags.MultiDrop); + freeforall = proto != null && proto.HasFlag(ItemFlags.MultiDrop); follow_loot_rules = proto != null && proto.FlagsCu.HasAnyFlag(ItemFlagsCustom.FollowLootRules); needs_quest = li.needs_quest; @@ -54,10 +54,10 @@ namespace Game.Loots return false; // not show loot for not own team - if (pProto.GetFlags2().HasAnyFlag(ItemFlags2.FactionHorde) && player.GetTeam() != Team.Horde) + if (pProto.HasFlag(ItemFlags2.FactionHorde) && player.GetTeam() != Team.Horde) return false; - if (pProto.GetFlags2().HasAnyFlag(ItemFlags2.FactionAlliance) && player.GetTeam() != Team.Alliance) + if (pProto.HasFlag(ItemFlags2.FactionAlliance) && player.GetTeam() != Team.Alliance) return false; // Master looter can see certain items even if the character can't loot them @@ -71,7 +71,7 @@ namespace Game.Loots } // Don't allow loot for players without profession or those who already know the recipe - if (pProto.GetFlags().HasFlag(ItemFlags.HideUnusableRecipe)) + if (pProto.HasFlag(ItemFlags.HideUnusableRecipe)) { if (!player.HasSkill((SkillType)pProto.GetRequiredSkill())) return false; @@ -231,7 +231,7 @@ namespace Game.Loots // 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().HasAnyFlag(ItemFlags.MultiDrop)) + if (!item.needs_quest && item.conditions.Empty() && !proto.HasFlag(ItemFlags.MultiDrop)) ++unlootedCount; } } diff --git a/Source/Game/Loot/LootManager.cs b/Source/Game/Loot/LootManager.cs index 0f516579d..f5302199b 100644 --- a/Source/Game/Loot/LootManager.cs +++ b/Source/Game/Loot/LootManager.cs @@ -203,7 +203,7 @@ namespace Game.Loots // remove real entries and check existence loot var its = Global.ObjectMgr.GetItemTemplates(); foreach (var pair in its) - if (lootIdSet.Contains(pair.Value.GetId()) && pair.Value.GetFlags().HasAnyFlag(ItemFlags.HasLoot)) + if (lootIdSet.Contains(pair.Value.GetId()) && pair.Value.HasFlag(ItemFlags.HasLoot)) lootIdSet.Remove(pair.Value.GetId()); // output error for any still listed (not referenced from appropriate table) ids @@ -228,7 +228,7 @@ namespace Game.Loots var its = Global.ObjectMgr.GetItemTemplates(); foreach (var pair in its) { - if (!pair.Value.GetFlags().HasAnyFlag(ItemFlags.IsMillable)) + if (!pair.Value.HasFlag(ItemFlags.IsMillable)) continue; if (lootIdSet.Contains(pair.Value.GetId())) @@ -293,7 +293,7 @@ namespace Game.Loots var its = Global.ObjectMgr.GetItemTemplates(); foreach (var pair in its) { - if (!pair.Value.GetFlags().HasAnyFlag(ItemFlags.IsProspectable)) + if (!pair.Value.HasFlag(ItemFlags.IsProspectable)) continue; if (lootIdSet.Contains(pair.Value.GetId())) diff --git a/Source/Game/Spells/Spell.cs b/Source/Game/Spells/Spell.cs index 8c1fdc61a..21047d221 100644 --- a/Source/Game/Spells/Spell.cs +++ b/Source/Game/Spells/Spell.cs @@ -4219,7 +4219,7 @@ namespace Game.Spells return; // do not take reagents for these item casts - if (m_CastItem != null && m_CastItem.GetTemplate().GetFlags().HasAnyFlag(ItemFlags.NoReagentCost)) + if (m_CastItem != null && m_CastItem.GetTemplate().HasFlag(ItemFlags.NoReagentCost)) return; Player p_caster = m_caster.ToPlayer(); @@ -6037,7 +6037,7 @@ namespace Game.Spells } // do not take reagents for these item casts - if (!(m_CastItem != null && Convert.ToBoolean(m_CastItem.GetTemplate().GetFlags() & ItemFlags.NoReagentCost))) + if (!(m_CastItem != null && m_CastItem.GetTemplate().HasFlag(ItemFlags.NoReagentCost))) { bool checkReagents = !Convert.ToBoolean(_triggeredCastFlags & TriggerCastFlags.IgnorePowerAndReagentCost) && !player.CanNoReagentCast(m_spellInfo); // Not own traded item (in trader trade slot) requires reagents even if triggered spell @@ -6202,7 +6202,7 @@ namespace Game.Spells if (m_targets.GetItemTarget().GetOwner() != player) return SpellCastResult.NotTradeable; // do not allow to enchant vellum from scroll made by vellum-prevent exploit - if (m_CastItem != null && Convert.ToBoolean(m_CastItem.GetTemplate().GetFlags() & ItemFlags.NoReagentCost)) + if (m_CastItem != null && m_CastItem.GetTemplate().HasFlag(ItemFlags.NoReagentCost)) return SpellCastResult.TotemCategory; List dest = new(); InventoryResult msg = player.CanStoreNewItem(ItemConst.NullBag, ItemConst.NullSlot, dest, spellEffectInfo.ItemType, 1); @@ -6326,7 +6326,7 @@ namespace Game.Spells if (!item) return SpellCastResult.CantBeProspected; //ensure item is a prospectable ore - if (!Convert.ToBoolean(item.GetTemplate().GetFlags() & ItemFlags.IsProspectable)) + if (!item.GetTemplate().HasFlag(ItemFlags.IsProspectable)) return SpellCastResult.CantBeProspected; //prevent prospecting in trade slot if (item.GetOwnerGUID() != player.GetGUID()) @@ -6354,7 +6354,7 @@ namespace Game.Spells if (!item) return SpellCastResult.CantBeMilled; //ensure item is a millable herb - if (!(item.GetTemplate().GetFlags().HasAnyFlag(ItemFlags.IsMillable))) + if (!item.GetTemplate().HasFlag(ItemFlags.IsMillable)) return SpellCastResult.CantBeMilled; //prevent milling in trade slot if (item.GetOwnerGUID() != player.GetGUID()) diff --git a/Source/Game/Spells/SpellEffects.cs b/Source/Game/Spells/SpellEffects.cs index 8a23f4e4d..0c780fee4 100644 --- a/Source/Game/Spells/SpellEffects.cs +++ b/Source/Game/Spells/SpellEffects.cs @@ -2020,7 +2020,7 @@ namespace Game.Spells else { // do not increase skill if vellum used - if (!(m_CastItem && m_CastItem.GetTemplate().GetFlags().HasAnyFlag(ItemFlags.NoReagentCost))) + if (!(m_CastItem && m_CastItem.GetTemplate().HasFlag(ItemFlags.NoReagentCost))) player.UpdateCraftSkill(m_spellInfo.Id); uint enchant_id = (uint)effectInfo.MiscValue; @@ -4125,7 +4125,7 @@ namespace Game.Spells if (player == null) return; - if (itemTarget == null || !itemTarget.GetTemplate().GetFlags().HasAnyFlag(ItemFlags.IsProspectable)) + if (itemTarget == null || !itemTarget.GetTemplate().HasFlag(ItemFlags.IsProspectable)) return; if (itemTarget.GetCount() < 5) @@ -4151,7 +4151,7 @@ namespace Game.Spells if (player == null) return; - if (itemTarget == null || !itemTarget.GetTemplate().GetFlags().HasAnyFlag(ItemFlags.IsMillable)) + if (itemTarget == null || !itemTarget.GetTemplate().HasFlag(ItemFlags.IsMillable)) return; if (itemTarget.GetCount() < 5)