diff options
-rw-r--r-- | sql/updates/2794_world_spell_proc_event.sql | 3 | ||||
-rw-r--r-- | src/game/SpellAuras.cpp | 20 | ||||
-rw-r--r-- | src/game/SpellMgr.cpp | 5 |
3 files changed, 27 insertions, 1 deletions
diff --git a/sql/updates/2794_world_spell_proc_event.sql b/sql/updates/2794_world_spell_proc_event.sql new file mode 100644 index 00000000000..ac52b418d85 --- /dev/null +++ b/sql/updates/2794_world_spell_proc_event.sql @@ -0,0 +1,3 @@ +DELETE FROM `spell_proc_event` WHERE `entry` IN (54754); +INSERT INTO `spell_proc_event` VALUES +(54754, 0x00, 7, 0x00000010, 0x00000000, 0x00000000, 0x00000000, 0x0000000, 0.000000, 0.000000, 0); diff --git a/src/game/SpellAuras.cpp b/src/game/SpellAuras.cpp index 5e0da2f9e35..37c4600feaf 100644 --- a/src/game/SpellAuras.cpp +++ b/src/game/SpellAuras.cpp @@ -3073,6 +3073,20 @@ void AuraEffect::HandleAuraModShapeshift(bool apply, bool Real) if(m_target->GetTypeId()==TYPEID_PLAYER) ((Player*)m_target)->InitDataForForm(); + + if(m_target->getClass() == CLASS_DRUID) + { + if(form == FORM_CAT && apply) // add dash if in cat-from + { + if(AuraEffect * aurEff =m_target->GetAura(SPELL_AURA_MOD_INCREASE_SPEED, SPELLFAMILY_DRUID, 0, 0, 0x8)) + m_target->HandleAuraEffect(aurEff, true); + } + else // remove dash effect(not buff) if out of cat-from + { + if(AuraEffect * aurEff =m_target->GetAura(SPELL_AURA_MOD_INCREASE_SPEED, SPELLFAMILY_DRUID, 0, 0, 0x8)) + m_target->HandleAuraEffect(aurEff, false); + } + } } void AuraEffect::HandleAuraTransform(bool apply, bool Real) @@ -3950,12 +3964,16 @@ void AuraEffect::HandleModTaunt(bool apply, bool Real) /*********************************************************/ /*** MODIFY SPEED ***/ /*********************************************************/ -void AuraEffect::HandleAuraModIncreaseSpeed(bool /*apply*/, bool Real) +void AuraEffect::HandleAuraModIncreaseSpeed(bool apply, bool Real) { // all applied/removed only at real aura add/remove if(!Real) return; + if(apply) // Dash wont work if you are not in cat form + if(m_spellProto->SpellFamilyName==SPELLFAMILY_DRUID && m_spellProto->SpellFamilyFlags[2] & 0x8 && m_target->m_form != FORM_CAT ) + return; + m_target->UpdateSpeed(MOVE_RUN, true); } diff --git a/src/game/SpellMgr.cpp b/src/game/SpellMgr.cpp index c3467ad7e1a..d130d58f9fd 100644 --- a/src/game/SpellMgr.cpp +++ b/src/game/SpellMgr.cpp @@ -2423,6 +2423,11 @@ void SpellMgr::LoadSpellCustomAttr() if(spellInfo->SpellFamilyFlags[2] & 0x100) spellInfo->MaxAffectedTargets = 2; break; + // circle of healing + case SPELLFAMILY_PRIEST: + if(spellInfo->SpellFamilyFlags[0] & 0x10000000) + spellInfo->MaxAffectedTargets = 5; + break; } } |