diff options
Diffstat (limited to 'src')
| -rwxr-xr-x | src/server/game/Entities/Unit/Unit.cpp | 23 | ||||
| -rwxr-xr-x | src/server/game/Entities/Unit/Unit.h | 2 |
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); |
