aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorkaelima <kaelima@live.se>2012-04-08 03:12:40 +0200
committerkaelima <kaelima@live.se>2012-04-08 03:12:40 +0200
commita5a123197baca33de9f0bc17c124575ed496ccdb (patch)
tree91d15860e1b8c9f1ba1cc9a6e940231cf8dd6d1d
parent443adaff07523e7638e19119f3bde4fb5d1aa381 (diff)
Core/Item: Fix possible exploit stacking critical strike when switching weapons during disarm. Closes #3532
-rwxr-xr-xsrc/server/game/Entities/Player/Player.cpp8
1 files changed, 6 insertions, 2 deletions
diff --git a/src/server/game/Entities/Player/Player.cpp b/src/server/game/Entities/Player/Player.cpp
index b8db2fd0052..9bfdfa18f93 100755
--- a/src/server/game/Entities/Player/Player.cpp
+++ b/src/server/game/Entities/Player/Player.cpp
@@ -8196,6 +8196,10 @@ void Player::_ApplyWeaponDependentAuraMods(Item* item, WeaponAttackType attackTy
void Player::_ApplyWeaponDependentAuraCritMod(Item* item, WeaponAttackType attackType, AuraEffect const* aura, bool apply)
{
+ // don't apply mod if item is broken or cannot be used
+ if (item->IsBroken() || !CanUseAttackType(attackType))
+ return;
+
// generic not weapon specific case processes in aura code
if (aura->GetSpellInfo()->EquippedItemClass == -1)
return;
@@ -8209,13 +8213,13 @@ void Player::_ApplyWeaponDependentAuraCritMod(Item* item, WeaponAttackType attac
default: return;
}
- if (!item->IsBroken()&&item->IsFitToSpellRequirements(aura->GetSpellInfo()))
+ if (item->IsFitToSpellRequirements(aura->GetSpellInfo()))
HandleBaseModValue(mod, FLAT_MOD, float (aura->GetAmount()), apply);
}
void Player::_ApplyWeaponDependentAuraDamageMod(Item* item, WeaponAttackType attackType, AuraEffect const* aura, bool apply)
{
- //don't apply mod if item is broken
+ // don't apply mod if item is broken or cannot be used
if (item->IsBroken() || !CanUseAttackType(attackType))
return;