aboutsummaryrefslogtreecommitdiff
path: root/src/server/game/Spells
diff options
context:
space:
mode:
authorShauren <shauren.trinity@gmail.com>2016-10-05 23:15:58 +0200
committerShauren <shauren.trinity@gmail.com>2016-10-05 23:15:58 +0200
commita52c50e809d7c0ecb06a4eb81c73069d3c0e6746 (patch)
treec7106fa104f1e47b9c60fe2d9e10707659851a53 /src/server/game/Spells
parent411394ed4f8d5c374b3d048e3ceb7bad81317d31 (diff)
Core/Auras: Add root aura handler to aura type 455
Closes #18030
Diffstat (limited to 'src/server/game/Spells')
-rw-r--r--src/server/game/Spells/Auras/SpellAuraDefines.h2
-rw-r--r--src/server/game/Spells/Auras/SpellAuraEffects.cpp11
-rw-r--r--src/server/game/Spells/SpellEffects.cpp1
-rw-r--r--src/server/game/Spells/SpellInfo.cpp1
4 files changed, 13 insertions, 2 deletions
diff --git a/src/server/game/Spells/Auras/SpellAuraDefines.h b/src/server/game/Spells/Auras/SpellAuraDefines.h
index 0627847b463..9b064574fe2 100644
--- a/src/server/game/Spells/Auras/SpellAuraDefines.h
+++ b/src/server/game/Spells/Auras/SpellAuraDefines.h
@@ -512,7 +512,7 @@ enum AuraType
SPELL_AURA_452 = 452,
SPELL_AURA_CHARGE_RECOVERY_MOD = 453,
SPELL_AURA_CHARGE_RECOVERY_MULTIPLIER = 454,
- SPELL_AURA_455 = 455,
+ SPELL_AURA_MOD_ROOT_2 = 455,
SPELL_AURA_CHARGE_RECOVERY_AFFECTED_BY_HASTE = 456,
SPELL_AURA_CHARGE_RECOVERY_AFFECTED_BY_HASTE_REGEN = 457,
SPELL_AURA_IGNORE_DUAL_WIELD_HIT_PENALTY = 458, // NYI
diff --git a/src/server/game/Spells/Auras/SpellAuraEffects.cpp b/src/server/game/Spells/Auras/SpellAuraEffects.cpp
index 96e2a18a4cc..32071512556 100644
--- a/src/server/game/Spells/Auras/SpellAuraEffects.cpp
+++ b/src/server/game/Spells/Auras/SpellAuraEffects.cpp
@@ -514,7 +514,7 @@ pAuraEffectHandler AuraEffectHandler[TOTAL_AURAS]=
&AuraEffect::HandleNULL, //452
&AuraEffect::HandleNoImmediateEffect, //453 SPELL_AURA_CHARGE_RECOVERY_MOD implemented in SpellHistory::GetChargeRecoveryTime
&AuraEffect::HandleNoImmediateEffect, //454 SPELL_AURA_CHARGE_RECOVERY_MULTIPLIER implemented in SpellHistory::GetChargeRecoveryTime
- &AuraEffect::HandleNULL, //455
+ &AuraEffect::HandleAuraModRoot, //455 SPELL_AURA_MOD_ROOT_2
&AuraEffect::HandleNoImmediateEffect, //456 SPELL_AURA_CHARGE_RECOVERY_AFFECTED_BY_HASTE implemented in SpellHistory::GetChargeRecoveryTime
&AuraEffect::HandleNoImmediateEffect, //457 SPELL_AURA_CHARGE_RECOVERY_AFFECTED_BY_HASTE_REGEN implemented in SpellHistory::GetChargeRecoveryTime
&AuraEffect::HandleNULL, //458 SPELL_AURA_IGNORE_DUAL_WIELD_HIT_PENALTY
@@ -653,6 +653,7 @@ int32 AuraEffect::CalculateAmount(Unit* caster)
case SPELL_AURA_MOD_STUN:
case SPELL_AURA_MOD_ROOT:
case SPELL_AURA_TRANSFORM:
+ case SPELL_AURA_MOD_ROOT_2:
m_canBeRecalculated = false;
if (!m_spellInfo->ProcFlags)
break;
@@ -3216,6 +3217,7 @@ void AuraEffect::HandleModStateImmunityMask(AuraApplication const* aurApp, uint8
aura_immunity_list.push_back(SPELL_AURA_MOD_ROOT);
aura_immunity_list.push_back(SPELL_AURA_MOD_CONFUSE);
aura_immunity_list.push_back(SPELL_AURA_MOD_FEAR);
+ aura_immunity_list.push_back(SPELL_AURA_MOD_ROOT_2);
}
break;
}
@@ -3247,6 +3249,7 @@ void AuraEffect::HandleModStateImmunityMask(AuraApplication const* aurApp, uint8
aura_immunity_list.push_back(SPELL_AURA_MOD_ROOT);
aura_immunity_list.push_back(SPELL_AURA_MOD_CONFUSE);
aura_immunity_list.push_back(SPELL_AURA_MOD_FEAR);
+ aura_immunity_list.push_back(SPELL_AURA_MOD_ROOT_2);
}
break;
}
@@ -3284,6 +3287,7 @@ void AuraEffect::HandleModStateImmunityMask(AuraApplication const* aurApp, uint8
aura_immunity_list.push_back(SPELL_AURA_MOD_ROOT);
aura_immunity_list.push_back(SPELL_AURA_MOD_CONFUSE);
aura_immunity_list.push_back(SPELL_AURA_MOD_FEAR);
+ aura_immunity_list.push_back(SPELL_AURA_MOD_ROOT_2);
}
break;
}
@@ -3327,6 +3331,7 @@ void AuraEffect::HandleModStateImmunityMask(AuraApplication const* aurApp, uint8
aura_immunity_list.push_back(SPELL_AURA_MOD_ROOT);
aura_immunity_list.push_back(SPELL_AURA_MOD_CONFUSE);
aura_immunity_list.push_back(SPELL_AURA_MOD_FEAR);
+ aura_immunity_list.push_back(SPELL_AURA_MOD_ROOT_2);
}
break;
}
@@ -3361,6 +3366,7 @@ void AuraEffect::HandleModStateImmunityMask(AuraApplication const* aurApp, uint8
aura_immunity_list.push_back(SPELL_AURA_MOD_ROOT);
aura_immunity_list.push_back(SPELL_AURA_MOD_CONFUSE);
aura_immunity_list.push_back(SPELL_AURA_MOD_FEAR);
+ aura_immunity_list.push_back(SPELL_AURA_MOD_ROOT_2);
}
break;
}
@@ -3395,7 +3401,10 @@ void AuraEffect::HandleModStateImmunityMask(AuraApplication const* aurApp, uint8
if (miscVal & (1<<6))
aura_immunity_list.push_back(SPELL_AURA_MOD_DECREASE_SPEED);
if (miscVal & (1<<0))
+ {
aura_immunity_list.push_back(SPELL_AURA_MOD_ROOT);
+ aura_immunity_list.push_back(SPELL_AURA_MOD_ROOT_2);
+ }
if (miscVal & (1<<2))
aura_immunity_list.push_back(SPELL_AURA_MOD_CONFUSE);
if (miscVal & (1<<9))
diff --git a/src/server/game/Spells/SpellEffects.cpp b/src/server/game/Spells/SpellEffects.cpp
index 227b26531ae..ade6aa815e6 100644
--- a/src/server/game/Spells/SpellEffects.cpp
+++ b/src/server/game/Spells/SpellEffects.cpp
@@ -3721,6 +3721,7 @@ void Spell::EffectSanctuary(SpellEffIndex /*effIndex*/)
&& (m_spellInfo->SpellFamilyFlags[0] & SPELLFAMILYFLAG0_ROGUE_VANISH))
{
m_caster->ToPlayer()->RemoveAurasByType(SPELL_AURA_MOD_ROOT);
+ m_caster->ToPlayer()->RemoveAurasByType(SPELL_AURA_MOD_ROOT_2);
// Overkill
if (m_caster->ToPlayer()->HasSpell(58426))
m_caster->CastSpell(m_caster, 58427, true);
diff --git a/src/server/game/Spells/SpellInfo.cpp b/src/server/game/Spells/SpellInfo.cpp
index 64f089cf56a..3707aedf45f 100644
--- a/src/server/game/Spells/SpellInfo.cpp
+++ b/src/server/game/Spells/SpellInfo.cpp
@@ -3191,6 +3191,7 @@ bool SpellInfo::_IsPositiveEffect(uint32 effIndex, bool deep) const
return true;
return false;
case SPELL_AURA_MOD_ROOT:
+ case SPELL_AURA_MOD_ROOT_2:
case SPELL_AURA_MOD_SILENCE:
case SPELL_AURA_GHOST:
case SPELL_AURA_PERIODIC_LEECH: