aboutsummaryrefslogtreecommitdiff
path: root/src/server/game/Spells
diff options
context:
space:
mode:
authorQAston <none@none>2010-08-18 19:26:07 +0200
committerQAston <none@none>2010-08-18 19:26:07 +0200
commit2ffe785765e3812e442d246f9561cebd83a008cb (patch)
treec3d4cbc87d0ea143752cf9f212b96f3f6498c2fa /src/server/game/Spells
parentb8a613647f8d204186fa30f35a8b4e2cb9337a73 (diff)
Core/Spells: add SPELL_ATTR_CU_IGNORE_ARMOR to the avalible custom attribute list, make some spells use the attribute. Research made with JohnHoliver and Shauren
--HG-- branch : trunk
Diffstat (limited to 'src/server/game/Spells')
-rw-r--r--src/server/game/Spells/Auras/SpellAuraEffects.cpp10
-rw-r--r--src/server/game/Spells/SpellMgr.cpp14
-rw-r--r--src/server/game/Spells/SpellMgr.h1
3 files changed, 19 insertions, 6 deletions
diff --git a/src/server/game/Spells/Auras/SpellAuraEffects.cpp b/src/server/game/Spells/Auras/SpellAuraEffects.cpp
index fcde15bb9fa..43ffabb1a20 100644
--- a/src/server/game/Spells/Auras/SpellAuraEffects.cpp
+++ b/src/server/game/Spells/Auras/SpellAuraEffects.cpp
@@ -1271,10 +1271,8 @@ void AuraEffect::PeriodicTick(Unit * target, Unit * caster) const
{
damage = caster->SpellDamageBonus(target, GetSpellProto(), damage, DOT, GetBase()->GetStackAmount());
- // Calculate armor mitigation if it is a physical spell
- // But not for bleed mechanic spells
- if (GetSpellSchoolMask(GetSpellProto()) & SPELL_SCHOOL_MASK_NORMAL &&
- GetEffectMechanic(GetSpellProto(), m_effIndex) != MECHANIC_BLEED)
+ // Calculate armor mitigation
+ if (Unit::IsDamageReducedByArmor(GetSpellSchoolMask(GetSpellProto()), GetSpellProto(), m_effIndex))
{
uint32 damageReductedArmor = caster->CalcArmorReducedDamage(target, damage, GetSpellProto());
cleanDamage.mitigated_damage += damage - damageReductedArmor;
@@ -1384,8 +1382,8 @@ void AuraEffect::PeriodicTick(Unit * target, Unit * caster) const
if (crit)
damage = caster->SpellCriticalDamageBonus(m_spellProto, damage, target);
- //Calculate armor mitigation if it is a physical spell
- if (GetSpellSchoolMask(GetSpellProto()) & SPELL_SCHOOL_MASK_NORMAL)
+ // Calculate armor mitigation
+ if (Unit::IsDamageReducedByArmor(GetSpellSchoolMask(GetSpellProto()), GetSpellProto(), m_effIndex))
{
uint32 damageReductedArmor = caster->CalcArmorReducedDamage(target, damage, GetSpellProto());
cleanDamage.mitigated_damage += damage - damageReductedArmor;
diff --git a/src/server/game/Spells/SpellMgr.cpp b/src/server/game/Spells/SpellMgr.cpp
index 31926eb5ced..5dc28c3e571 100644
--- a/src/server/game/Spells/SpellMgr.cpp
+++ b/src/server/game/Spells/SpellMgr.cpp
@@ -3853,6 +3853,20 @@ void SpellMgr::LoadSpellCustomAttr()
spellInfo->EffectRadiusIndex[0] = 12;
count++;
break;
+ case 18500: // Wing Buffet
+ case 33086: // Wild Bite
+ case 49749: // Piercing Blow
+ case 53454: // Impale
+ case 59446: // Impale
+ case 62383: // Shatter
+ case 64777: // Machine Gun
+ case 65239: // Machine Gun
+ case 65919: // Pursuing Spikes
+ case 69293: // Wing Buffet
+ case 74439: // Machine Gun
+ mSpellCustomAttr[i] |= SPELL_ATTR_CU_IGNORE_ARMOR;
+ count++;
+ break;
default:
break;
}
diff --git a/src/server/game/Spells/SpellMgr.h b/src/server/game/Spells/SpellMgr.h
index 40601cde80e..e7dd1c8baf1 100644
--- a/src/server/game/Spells/SpellMgr.h
+++ b/src/server/game/Spells/SpellMgr.h
@@ -880,6 +880,7 @@ inline bool IsProfessionSkill(uint32 skill)
#define SPELL_ATTR_CU_NEGATIVE_EFF1 0x00020000
#define SPELL_ATTR_CU_NEGATIVE_EFF2 0x00040000
#define SPELL_ATTR_CU_NEGATIVE 0x00070000
+#define SPELL_ATTR_CU_IGNORE_ARMOR 0x00080000
typedef std::vector<uint32> SpellCustomAttribute;
typedef std::vector<bool> EnchantCustomAttribute;