Core/Items: Check required level to use items including any bonuses that modify it
Port From (https://github.com/TrinityCore/TrinityCore/commit/b702401978928781249798dd607b6c6fbd10f122)
This commit is contained in:
@@ -1447,7 +1447,7 @@ namespace Game.Entities
|
||||
}
|
||||
return InventoryResult.ItemNotFound;
|
||||
}
|
||||
public InventoryResult CanUseItem(ItemTemplate proto)
|
||||
public InventoryResult CanUseItem(ItemTemplate proto, bool skipRequiredLevelCheck = false)
|
||||
{
|
||||
// Used by group, function GroupLoot, to know if a prototype can be used by a player
|
||||
|
||||
@@ -1477,7 +1477,7 @@ namespace Game.Entities
|
||||
if (proto.GetRequiredSpell() != 0 && !HasSpell(proto.GetRequiredSpell()))
|
||||
return InventoryResult.ProficiencyNeeded;
|
||||
|
||||
if (GetLevel() < proto.GetBaseRequiredLevel())
|
||||
if (!skipRequiredLevelCheck && GetLevel() < proto.GetBaseRequiredLevel())
|
||||
return InventoryResult.CantEquipLevelI;
|
||||
|
||||
// If World Event is not active, prevent using event dependant items
|
||||
|
||||
@@ -6046,7 +6046,7 @@ namespace Game.Spells
|
||||
return SpellCastResult.ItemNotFound;
|
||||
|
||||
// required level has to be checked also! Exploit fix
|
||||
if (targetItem.GetTemplate().GetBaseItemLevel() < m_spellInfo.BaseLevel || (targetItem.GetTemplate().GetBaseRequiredLevel() != 0 && (uint)targetItem.GetTemplate().GetBaseRequiredLevel() < m_spellInfo.BaseLevel))
|
||||
if (targetItem.GetItemLevel(targetItem.GetOwner()) < m_spellInfo.BaseLevel || (targetItem.GetRequiredLevel() != 0 && targetItem.GetRequiredLevel() < m_spellInfo.BaseLevel))
|
||||
return SpellCastResult.Lowlevel;
|
||||
|
||||
bool isItemUsable = false;
|
||||
|
||||
Reference in New Issue
Block a user