aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rwxr-xr-xsrc/server/game/Entities/Unit/Unit.cpp23
-rwxr-xr-xsrc/server/game/Entities/Unit/Unit.h2
2 files changed, 10 insertions, 15 deletions
diff --git a/src/server/game/Entities/Unit/Unit.cpp b/src/server/game/Entities/Unit/Unit.cpp
index 508246439f7..7e1b2df4937 100755
--- a/src/server/game/Entities/Unit/Unit.cpp
+++ b/src/server/game/Entities/Unit/Unit.cpp
@@ -4320,25 +4320,20 @@ bool Unit::HasNegativeAuraWithAttribute(uint32 flag, uint64 guid)
return false;
}
-bool Unit::HasAurasWithMechanic(uint32 mechanic_mask)
+bool Unit::HasAuraWithMechanic(uint32 mechanicMask)
{
for (AuraApplicationMap::iterator iter = m_appliedAuras.begin(); iter != m_appliedAuras.end(); ++iter)
{
SpellEntry const* spellInfo = iter->second->GetBase()->GetSpellProto();
-
- if (IsImmunedToSpell(spellInfo))
- continue;
-
- uint32 mask = 0;
- if (spellInfo->Mechanic)
- mask |= 1<<spellInfo->Mechanic;
- for (int i = 0; i < MAX_SPELL_EFFECTS; ++i)
- if (spellInfo->Effect[i] && spellInfo->EffectMechanic[i] && !IsImmunedToSpellEffect(spellInfo, i))
- mask |= 1<<spellInfo->EffectMechanic[i];
-
- if (mask & mechanic_mask)
+ if (spellInfo->Mechanic && (mechanicMask & (1 << spellInfo->Mechanic)))
return true;
+
+ for (uint8 i = 0; i < MAX_SPELL_EFFECTS; ++i)
+ if (iter->second->HasEffect(i) && spellInfo->Effect[i] && spellInfo->EffectMechanic[i])
+ if (mechanicMask & (1 << spellInfo->EffectMechanic[i]))
+ return true;
}
+
return false;
}
@@ -10444,7 +10439,7 @@ uint32 Unit::SpellDamageBonus(Unit *pVictim, SpellEntry const *spellProto, uint3
// Torment the weak
if (spellProto->SpellFamilyFlags[0] & 0x20600021 || spellProto->SpellFamilyFlags[1] & 0x9000)
- if (pVictim->HasAurasWithMechanic((1<<MECHANIC_SNARE)|(1<<MECHANIC_SLOW_ATTACK)))
+ if (pVictim->HasAuraWithMechanic((1<<MECHANIC_SNARE)|(1<<MECHANIC_SLOW_ATTACK)))
{
AuraEffectList const& mDumyAuras = GetAuraEffectsByType(SPELL_AURA_DUMMY);
for (AuraEffectList::const_iterator i = mDumyAuras.begin(); i != mDumyAuras.end(); ++i)
diff --git a/src/server/game/Entities/Unit/Unit.h b/src/server/game/Entities/Unit/Unit.h
index d077666ed2e..20a5120f24b 100755
--- a/src/server/game/Entities/Unit/Unit.h
+++ b/src/server/game/Entities/Unit/Unit.h
@@ -1697,7 +1697,7 @@ class Unit : public WorldObject
bool HasAuraTypeWithValue(AuraType auratype, int32 value) const;
bool HasNegativeAuraWithInterruptFlag(uint32 flag, uint64 guid = 0);
bool HasNegativeAuraWithAttribute(uint32 flag, uint64 guid = 0);
- bool HasAurasWithMechanic(uint32 mechanic_mask);
+ bool HasAuraWithMechanic(uint32 mechanicMask);
AuraEffect * IsScriptOverriden(SpellEntry const * spell, int32 script) const;
uint32 GetDiseasesByCaster(uint64 casterGUID, bool remove = false);