diff options
-rw-r--r-- | src/server/game/Entities/Player/Player.cpp | 13 | ||||
-rw-r--r-- | src/server/game/Entities/Player/Player.h | 2 | ||||
-rw-r--r-- | src/server/game/Entities/Unit/Unit.cpp | 17 | ||||
-rw-r--r-- | src/server/game/Entities/Unit/Unit.h | 3 |
4 files changed, 17 insertions, 18 deletions
diff --git a/src/server/game/Entities/Player/Player.cpp b/src/server/game/Entities/Player/Player.cpp index 580f21843d0..b8d8c1c2ce8 100644 --- a/src/server/game/Entities/Player/Player.cpp +++ b/src/server/game/Entities/Player/Player.cpp @@ -7924,6 +7924,19 @@ void Player::ApplyItemDependentAuras(Item* item, bool apply) RemoveItemDependentAurasAndCasts(item); } +bool Player::CheckAttackFitToAuraRequirement(WeaponAttackType attackType, AuraEffect const* aurEff) const +{ + SpellInfo const* spellInfo = aurEff->GetSpellInfo(); + if (spellInfo->EquippedItemClass == -1) + return true; + + Item* item = GetWeaponForAttack(attackType, true); + if (!item || !item->IsFitToSpellRequirements(spellInfo)) + return false; + + return true; +} + void Player::ApplyItemEquipSpell(Item* item, bool apply, bool formChange /*= false*/) { if (!item) diff --git a/src/server/game/Entities/Player/Player.h b/src/server/game/Entities/Player/Player.h index 554c9090212..6bc50b7dc40 100644 --- a/src/server/game/Entities/Player/Player.h +++ b/src/server/game/Entities/Player/Player.h @@ -2031,6 +2031,8 @@ class TC_GAME_API Player : public Unit, public GridObject<Player> void UpdateWeaponDependentAuras(WeaponAttackType attackType); void ApplyItemDependentAuras(Item* item, bool apply); + bool CheckAttackFitToAuraRequirement(WeaponAttackType attackType, AuraEffect const* aurEff) const override; + void _ApplyItemMods(Item* item, uint8 slot, bool apply, bool updateItemAuras = true); void _RemoveAllItemMods(); void _ApplyAllItemMods(); diff --git a/src/server/game/Entities/Unit/Unit.cpp b/src/server/game/Entities/Unit/Unit.cpp index be6324229d8..8de9a90ac44 100644 --- a/src/server/game/Entities/Unit/Unit.cpp +++ b/src/server/game/Entities/Unit/Unit.cpp @@ -9568,23 +9568,6 @@ void Unit::UpdateUnitMod(UnitMods unitMod) } } -bool Unit::CheckAttackFitToAuraRequirement(WeaponAttackType attackType, AuraEffect const* aurEff) const -{ - // only players have item requirements - if (GetTypeId() != TYPEID_PLAYER) - return true; - - SpellInfo const* spellInfo = aurEff->GetSpellInfo(); - if (spellInfo->EquippedItemClass == -1) - return true; - - Item* item = ToPlayer()->GetWeaponForAttack(attackType, true); - if (!item || !item->IsFitToSpellRequirements(spellInfo)) - return false; - - return true; -} - void Unit::UpdateDamageDoneMods(WeaponAttackType attackType) { UnitMods unitMod; diff --git a/src/server/game/Entities/Unit/Unit.h b/src/server/game/Entities/Unit/Unit.h index 0838d2b226b..32e109a5392 100644 --- a/src/server/game/Entities/Unit/Unit.h +++ b/src/server/game/Entities/Unit/Unit.h @@ -1700,7 +1700,8 @@ class TC_GAME_API Unit : public WorldObject void UpdateUnitMod(UnitMods unitMod); - bool CheckAttackFitToAuraRequirement(WeaponAttackType attackType, AuraEffect const* aurEff) const; + // only players have item requirements + virtual bool CheckAttackFitToAuraRequirement(WeaponAttackType /*attackType*/, AuraEffect const* /*aurEff*/) const { return true; } virtual void UpdateDamageDoneMods(WeaponAttackType attackType); void UpdateAllDamageDoneMods(); |