diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/game/SpellAuras.cpp | 41 | ||||
-rw-r--r-- | src/game/SpellEffects.cpp | 10 |
2 files changed, 35 insertions, 16 deletions
diff --git a/src/game/SpellAuras.cpp b/src/game/SpellAuras.cpp index 50e26349ef9..e28e3c1b656 100644 --- a/src/game/SpellAuras.cpp +++ b/src/game/SpellAuras.cpp @@ -1398,6 +1398,7 @@ void AuraEffect::HandleShapeshiftBoosts(bool apply) { uint32 spellId = 0; uint32 spellId2 = 0; + uint32 spellId3 = 0; uint32 HotWSpellId = 0; switch(GetMiscValue()) @@ -1465,7 +1466,6 @@ void AuraEffect::HandleShapeshiftBoosts(bool apply) case FORM_STEALTH: case FORM_CREATURECAT: case FORM_CREATUREBEAR: - spellId = 0; break; } @@ -1474,13 +1474,19 @@ void AuraEffect::HandleShapeshiftBoosts(bool apply) if(apply) { // Remove cooldown of spells triggered on stance change - they may share cooldown with stance spell - if(m_target->GetTypeId() == TYPEID_PLAYER) - ((Player *)m_target)->RemoveSpellCooldown(spellId); - if (spellId) m_target->CastSpell(m_target, spellId, true, NULL, this ); + if (spellId) + { + if(m_target->GetTypeId() == TYPEID_PLAYER) + ((Player *)m_target)->RemoveSpellCooldown(spellId); + m_target->CastSpell(m_target, spellId, true, NULL, this ); + } - if(m_target->GetTypeId() == TYPEID_PLAYER) - ((Player *)m_target)->RemoveSpellCooldown(spellId2); - if (spellId2) m_target->CastSpell(m_target, spellId2, true, NULL, this); + if (spellId2) + { + if(m_target->GetTypeId() == TYPEID_PLAYER) + ((Player *)m_target)->RemoveSpellCooldown(spellId2); + m_target->CastSpell(m_target, spellId2, true, NULL, this); + } if(m_target->GetTypeId() == TYPEID_PLAYER) { @@ -1549,8 +1555,10 @@ void AuraEffect::HandleShapeshiftBoosts(bool apply) } else { - m_target->RemoveAurasDueToSpell(spellId); - m_target->RemoveAurasDueToSpell(spellId2); + if (spellId) + m_target->RemoveAurasDueToSpell(spellId); + if (spellId2) + m_target->RemoveAurasDueToSpell(spellId2); Unit::AuraMap& tAuras = m_target->GetAuras(); for (Unit::AuraMap::iterator itr = tAuras.begin(); itr != tAuras.end();) @@ -2821,6 +2829,14 @@ void AuraEffect::HandleAuraDummy(bool apply, bool Real, bool changeAmount) return; } } + // Predatory Strikes + if(m_target->GetTypeId()==TYPEID_PLAYER && GetSpellProto()->SpellIconID == 1563) + { + ((Player*)m_target)->UpdateAttackPowerAndDamage(); + return; + } + if (!Real) + break; // Lifebloom if ( GetSpellProto()->SpellFamilyFlags[1] & 0x10 ) { @@ -2850,13 +2866,6 @@ void AuraEffect::HandleAuraDummy(bool apply, bool Real, bool changeAmount) } return; } - - // Predatory Strikes - if(m_target->GetTypeId()==TYPEID_PLAYER && GetSpellProto()->SpellIconID == 1563) - { - ((Player*)m_target)->UpdateAttackPowerAndDamage(); - return; - } break; } case SPELLFAMILY_HUNTER: diff --git a/src/game/SpellEffects.cpp b/src/game/SpellEffects.cpp index 6aeb5f90869..67b87d7c93e 100644 --- a/src/game/SpellEffects.cpp +++ b/src/game/SpellEffects.cpp @@ -680,6 +680,16 @@ void Spell::SpellDamageSchoolDmg(uint32 effect_idx) } break; } + case SPELLFAMILY_DEATHKNIGHT: + { + // Blood Boil - bonus for diseased targets + if (m_spellInfo->SpellFamilyFlags[0] & 0x00040000 && unitTarget->GetAura(SPELL_AURA_PERIODIC_DAMAGE, SPELLFAMILY_DEATHKNIGHT, 0, 0, 0x00000002, m_caster->GetGUID())) + { + damage += m_damage / 2; + damage += int32(m_caster->GetTotalAttackPowerValue(RANGED_ATTACK)* 0.035f); + } + break; + } } if(m_originalCaster && damage > 0 && apply_direct_bonus) |