Fix channelled spells when player has lot of haste AND a buff reducing spell duration. Thanks dr.tenma.
Fixes issue #1052. --HG-- branch : trunk
This commit is contained in:
+4
-2
@@ -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);
|
||||
|
||||
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user