aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/game/Spell.cpp6
-rw-r--r--src/game/SpellAuraEffects.cpp8
2 files changed, 8 insertions, 6 deletions
diff --git a/src/game/Spell.cpp b/src/game/Spell.cpp
index 92c7e7bd02b..cea7d10735c 100644
--- a/src/game/Spell.cpp
+++ b/src/game/Spell.cpp
@@ -3027,11 +3027,13 @@ void Spell::handle_immediate()
int32 duration = GetSpellDuration(m_spellInfo);
if (duration)
{
- // Apply haste mods
- m_caster->ModSpellCastTime(m_spellInfo, duration, this);
+ // First mod_duration then haste - see Missile Barrage
// Apply duration mod
if (Player* modOwner = m_caster->GetSpellModOwner())
modOwner->ApplySpellMod(m_spellInfo->Id, SPELLMOD_DURATION, duration);
+ // Apply haste mods
+ m_caster->ModSpellCastTime(m_spellInfo, duration, this);
+
m_spellState = SPELL_STATE_CASTING;
m_caster->AddInterruptMask(m_spellInfo->ChannelInterruptFlags);
SendChannelStart(duration);
diff --git a/src/game/SpellAuraEffects.cpp b/src/game/SpellAuraEffects.cpp
index df9b1b02214..69bda20fd05 100644
--- a/src/game/SpellAuraEffects.cpp
+++ b/src/game/SpellAuraEffects.cpp
@@ -756,9 +756,13 @@ void AuraEffect::CalculatePeriodic(Unit * caster, bool create)
return;
Player* modOwner = caster ? caster->GetSpellModOwner() : NULL;
+
// Apply casting time mods
if (modOwner && m_amplitude)
{
+ // Apply periodic time mod
+ modOwner->ApplySpellMod(GetId(), SPELLMOD_ACTIVATION_TIME, m_amplitude);
+
// For channeled spells
if (IsChanneledSpell(m_spellProto)) {
modOwner->ModSpellCastTime(m_spellProto, m_amplitude);
@@ -780,10 +784,6 @@ void AuraEffect::CalculatePeriodic(Unit * caster, bool create)
}
}
- // Apply periodic time mod
- if (modOwner && m_amplitude)
- modOwner->ApplySpellMod(GetId(), SPELLMOD_ACTIVATION_TIME, m_amplitude);
-
if (create)
{
// Start periodic on next tick or at aura apply