diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/server/game/Spells/Auras/SpellAuraEffects.cpp | 10 | ||||
-rwxr-xr-x | src/server/game/Spells/Spell.cpp | 3 |
2 files changed, 5 insertions, 8 deletions
diff --git a/src/server/game/Spells/Auras/SpellAuraEffects.cpp b/src/server/game/Spells/Auras/SpellAuraEffects.cpp index c50c883dead..783b1609958 100644 --- a/src/server/game/Spells/Auras/SpellAuraEffects.cpp +++ b/src/server/game/Spells/Auras/SpellAuraEffects.cpp @@ -881,14 +881,8 @@ void AuraEffect::CalculatePeriodic(Unit* caster, bool create, bool load) caster->ModSpellCastTime(m_spellInfo, m_amplitude); } // and periodic time of auras affected by SPELL_AURA_PERIODIC_HASTE on player who have haste - else if ((caster->HasAuraTypeWithAffectMask(SPELL_AURA_PERIODIC_HASTE, m_spellInfo) || m_spellInfo->AttributesEx5 & SPELL_ATTR5_HASTE_AFFECT_DURATION) && caster->GetFloatValue(UNIT_MOD_CAST_SPEED) != 1.0f) - { - // Calculate number of ticks we must have - float ticks = GetBase()->GetDuration() / (m_amplitude / (1.0f + (1.0f - caster->GetFloatValue(UNIT_MOD_CAST_SPEED)))); - ticks = 0.5f + (float)(int)ticks; // round - - m_amplitude = GetBase()->GetDuration() / int32(ticks); - } + else if (caster->HasAuraTypeWithAffectMask(SPELL_AURA_PERIODIC_HASTE, m_spellInfo) || m_spellInfo->AttributesEx5 & SPELL_ATTR5_HASTE_AFFECT_DURATION) + m_amplitude = int32(m_amplitude * caster->GetFloatValue(UNIT_MOD_CAST_SPEED)); } } diff --git a/src/server/game/Spells/Spell.cpp b/src/server/game/Spells/Spell.cpp index 534102cdf46..d62e969a43c 100755 --- a/src/server/game/Spells/Spell.cpp +++ b/src/server/game/Spells/Spell.cpp @@ -2719,6 +2719,9 @@ SpellMissInfo Spell::DoSpellHitOnUnit(Unit* unit, uint32 effectMask, bool scaleA if (m_spellInfo->AttributesEx5 & SPELL_ATTR5_HASTE_AFFECT_DURATION) m_originalCaster->ModSpellCastTime(aurSpellInfo, duration, this); } + // and duration of auras affected by SPELL_AURA_PERIODIC_HASTE + else if (m_originalCaster->HasAuraTypeWithAffectMask(SPELL_AURA_PERIODIC_HASTE, aurSpellInfo) || m_spellInfo->AttributesEx5 & SPELL_ATTR5_HASTE_AFFECT_DURATION) + duration = int32(duration * m_originalCaster->GetFloatValue(UNIT_MOD_CAST_SPEED)); if (duration != m_spellAura->GetMaxDuration()) { |