diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/game/SpellAuras.cpp | 19 | ||||
-rw-r--r-- | src/game/SpellEffects.cpp | 21 | ||||
-rw-r--r-- | src/game/Unit.cpp | 25 |
3 files changed, 58 insertions, 7 deletions
diff --git a/src/game/SpellAuras.cpp b/src/game/SpellAuras.cpp index 94ecf0b198d..c922927a1fe 100644 --- a/src/game/SpellAuras.cpp +++ b/src/game/SpellAuras.cpp @@ -2072,6 +2072,14 @@ void Aura::HandleAuraDummy(bool apply, bool Real) } case SPELLFAMILY_MAGE: { + // Living Bomb + if (m_spellProto->SpellFamilyFlags[1] & 0x20000) + { + if(!m_target || !caster || m_removeMode == AURA_REMOVE_BY_DISPEL || m_removeMode == AURA_REMOVE_BY_DEFAULT) + return; + caster->CastSpell(m_target, GetModifier()->m_amount, true, NULL, NULL, GetCasterGUID()); + return; + } break; } case SPELLFAMILY_PRIEST: @@ -3689,6 +3697,17 @@ void Aura::HandleModMechanicImmunity(bool apply, bool Real) m_target->RemoveAurasDueToSpell(26592); } } + + // Heroic Fury (remove Intercept cooldown) + if( apply && GetId() == 60970 && m_target->GetTypeId() == TYPEID_PLAYER ) + { + ((Player*)m_target)->RemoveSpellCooldown(20252); + + WorldPacket data(SMSG_CLEAR_COOLDOWN, (4+8)); + data << uint32(20252); + data << uint64(m_target->GetGUID()); + ((Player*)m_target)->GetSession()->SendPacket(&data); + } } void Aura::HandleAuraModEffectImmunity(bool apply, bool Real) diff --git a/src/game/SpellEffects.cpp b/src/game/SpellEffects.cpp index d9eefb362c1..ba063c20da4 100644 --- a/src/game/SpellEffects.cpp +++ b/src/game/SpellEffects.cpp @@ -584,7 +584,7 @@ void Spell::SpellDamageSchoolDmg(uint32 effect_idx) else if(m_spellInfo->SpellFamilyFlags[1] & 0x1) { int32 base = irand((int32)m_caster->GetWeaponDamageRange(RANGED_ATTACK, MINDAMAGE),(int32)m_caster->GetWeaponDamageRange(RANGED_ATTACK, MAXDAMAGE)); - damage += int32(float(base)/m_caster->GetAttackTime(RANGED_ATTACK)*2800 + m_caster->GetTotalAttackPowerValue(RANGED_ATTACK)*0.2f); + damage += int32(float(base)/m_caster->GetAttackTime(RANGED_ATTACK)*2800 + m_caster->GetTotalAttackPowerValue(RANGED_ATTACK)*0.1f); bool found = false; @@ -1830,6 +1830,16 @@ void Spell::EffectDummy(uint32 i) return; } break; + case SPELLFAMILY_DEATHKNIGHT: + // Death strike dummy aura apply + // Used to proc healing later + if (m_spellInfo->SpellFamilyFlags[0] & 0x00000010) + { + spell_id=45469; + m_caster->CastSpell(m_caster,spell_id,true); + return; + } + } //spells triggered by dummy effect should not miss @@ -2839,6 +2849,15 @@ void Spell::EffectEnergize(uint32 i) if (level_diff > 0) damage -= multiplier * level_diff; + //Judgement of wisdom energize effect + if(m_spellInfo->Id == 20268) + { + if(unitTarget->GetTypeId() == TYPEID_PLAYER) + { + damage = unitTarget->GetCreateMana() * damage / 100; + } + } + if(damage < 0) return; diff --git a/src/game/Unit.cpp b/src/game/Unit.cpp index cc7d9841d41..6771dfdaa80 100644 --- a/src/game/Unit.cpp +++ b/src/game/Unit.cpp @@ -5796,12 +5796,7 @@ bool Unit::HandleDummyAuraProc(Unit *pVictim, uint32 damage, Aura* triggeredByAu // Judgement of Wisdom case 20186: { - if (pVictim->getPowerType() == POWER_MANA) - { - int32 gainMana = pVictim->GetCreateMana() * triggeredByAura->GetBasePoints() / 100; - pVictim->CastCustomSpell(pVictim, 20268, &gainMana, 0, 0, true, 0, triggeredByAura); - } - return true; + pVictim->CastSpell(pVictim, 20268, true, NULL, triggeredByAura); } // Holy Power (Redemption Armor set) case 28789: @@ -6338,6 +6333,24 @@ bool Unit::HandleDummyAuraProc(Unit *pVictim, uint32 damage, Aura* triggeredByAu triggered_spell_id = 50526; break; } + // Death Strike healing effect + if (dummySpell->Id == 45469) + { + uint8 n=0; + Unit::AuraList const& decSpeedList = pVictim->GetAurasByType(SPELL_AURA_PERIODIC_DAMAGE); + for(Unit::AuraList::const_iterator iter = decSpeedList.begin(); iter != decSpeedList.end(); ++iter) + { + if((*iter)->GetSpellProto()->SpellFamilyName==SPELLFAMILY_DEATHKNIGHT + && (*iter)->GetCasterGUID() == GetGUID() + && (*iter)->GetSpellProto()->Dispel == DISPEL_DISEASE) + { + n++; + } + } + int32 heal=0.5f*n*damage+damage; + CastCustomSpell(this,45470,&heal,NULL,NULL,true); + return true; + } break; } case SPELLFAMILY_POTION: |