Core/Items: implement some helper methods for easier readability

Port From (https://github.com/TrinityCore/TrinityCore/commit/9124fd1f1fafea19b118eb69c6a35f94376fc7e8)
This commit is contained in:
hondacrx
2022-01-06 10:57:06 -05:00
parent 8f8cd4a7d4
commit 6e0becd106
23 changed files with 105 additions and 100 deletions
@@ -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))
+5 -5
View File
@@ -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());
}
+16 -16
View File
@@ -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)
+2 -2
View File
@@ -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)
+3 -3
View File
@@ -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())
{
+1 -1
View File
@@ -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;