aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorthenecromancer <none@none>2010-01-24 15:43:58 +0100
committerthenecromancer <none@none>2010-01-24 15:43:58 +0100
commit81321b390a828ce5f25f9f70502d831f49595e66 (patch)
treef7089d901f94bb8da1660557f0d937104b2a9f72 /src
parent372bef8a553afb50e41bad446363b4aad5cb9f38 (diff)
Add support for Maelstrom Weapon to prevent melee attack interruption when affecting spells
--HG-- branch : trunk
Diffstat (limited to 'src')
-rw-r--r--src/game/Spell.cpp23
-rw-r--r--src/game/SpellAuraDefines.h2
-rw-r--r--src/game/SpellAuraEffects.cpp2
3 files changed, 20 insertions, 7 deletions
diff --git a/src/game/Spell.cpp b/src/game/Spell.cpp
index f48a808225d..daa9f71289e 100644
--- a/src/game/Spell.cpp
+++ b/src/game/Spell.cpp
@@ -3369,11 +3369,24 @@ void Spell::finish(bool ok)
if (IsMeleeAttackResetSpell())
{
- m_caster->resetAttackTimer(BASE_ATTACK);
- if(m_caster->haveOffhandWeapon())
- m_caster->resetAttackTimer(OFF_ATTACK);
- if(!(m_spellInfo->AttributesEx2 & SPELL_ATTR_EX2_NOT_RESET_AUTOSHOT))
- m_caster->resetAttackTimer(RANGED_ATTACK);
+ bool found = false;
+ Unit::AuraEffectList const& vIgnoreReset = m_caster->GetAuraEffectsByType(SPELL_AURA_IGNORE_MELEE_RESET);
+ for (Unit::AuraEffectList::const_iterator i = vIgnoreReset.begin(); i != vIgnoreReset.end(); ++i)
+ {
+ if ((*i)->IsAffectedOnSpell(m_spellInfo))
+ {
+ found = true;
+ break;
+ }
+ }
+ if (!found)
+ {
+ m_caster->resetAttackTimer(BASE_ATTACK);
+ if(m_caster->haveOffhandWeapon())
+ m_caster->resetAttackTimer(OFF_ATTACK);
+ if(!(m_spellInfo->AttributesEx2 & SPELL_ATTR_EX2_NOT_RESET_AUTOSHOT))
+ m_caster->resetAttackTimer(RANGED_ATTACK);
+ }
}
// potions disabled by client, send event "not in combat" if need
diff --git a/src/game/SpellAuraDefines.h b/src/game/SpellAuraDefines.h
index 606824f8be8..77736e21cc9 100644
--- a/src/game/SpellAuraDefines.h
+++ b/src/game/SpellAuraDefines.h
@@ -316,7 +316,7 @@ enum AuraType
SPELL_AURA_MOD_IGNORE_TARGET_RESIST = 269,
SPELL_AURA_MOD_ABILITY_IGNORE_TARGET_RESIST = 270, // Possibly need swap vs 195 aura used only in 1 spell Chaos Bolt Passive
SPELL_AURA_MOD_DAMAGE_FROM_CASTER = 271,
- SPELL_AURA_272 = 272,
+ SPELL_AURA_IGNORE_MELEE_RESET = 272,
SPELL_AURA_X_RAY = 273,
SPELL_AURA_ABILITY_CONSUME_NO_AMMO = 274,
SPELL_AURA_MOD_IGNORE_SHAPESHIFT = 275,
diff --git a/src/game/SpellAuraEffects.cpp b/src/game/SpellAuraEffects.cpp
index 562088e2095..0d640a6fa78 100644
--- a/src/game/SpellAuraEffects.cpp
+++ b/src/game/SpellAuraEffects.cpp
@@ -328,7 +328,7 @@ pAuraEffectHandler AuraEffectHandler[TOTAL_AURAS]=
&AuraEffect::HandleNoImmediateEffect, //269 SPELL_AURA_MOD_IGNORE_TARGET_RESIST implemented in Unit::CalcAbsorbResist and CalcArmorReducedDamage
&AuraEffect::HandleNoImmediateEffect, //270 SPELL_AURA_MOD_ABILITY_IGNORE_TARGET_RESIST implemented in Unit::CalcAbsorbResist and CalcArmorReducedDamage
&AuraEffect::HandleNoImmediateEffect, //271 SPELL_AURA_MOD_DAMAGE_FROM_CASTER implemented in Unit::SpellDamageBonus
- &AuraEffect::HandleUnused, //272 unknown use for this aura
+ &AuraEffect::HandleNoImmediateEffect, //272 SPELL_AURA_IGNORE_MELEE_RESET
&AuraEffect::HandleUnused, //273 clientside
&AuraEffect::HandleNoImmediateEffect, //274 SPELL_AURA_CONSUME_NO_AMMO implemented in spell::CalculateDamageDoneForAllTargets
&AuraEffect::HandleNoImmediateEffect, //275 SPELL_AURA_MOD_IGNORE_SHAPESHIFT Use SpellClassMask for spell select