diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/server/scripts/Spells/spell_warlock.cpp | 50 |
1 files changed, 25 insertions, 25 deletions
diff --git a/src/server/scripts/Spells/spell_warlock.cpp b/src/server/scripts/Spells/spell_warlock.cpp index 635556dbed2..1999e29192a 100644 --- a/src/server/scripts/Spells/spell_warlock.cpp +++ b/src/server/scripts/Spells/spell_warlock.cpp @@ -818,41 +818,41 @@ class spell_warl_life_tap : public SpellScriptLoader void HandleDummy(SpellEffIndex /*effIndex*/) { - Player* caster = GetCaster()->ToPlayer(); - if (Unit* target = GetHitUnit()) - { - int32 damage = GetEffectValue(); - int32 mana = int32(damage + (caster->GetUInt32Value(PLAYER_FIELD_MOD_DAMAGE_DONE_POS+SPELL_SCHOOL_SHADOW) * 0.5f)); + Unit* caster = GetCaster(); + int32 base = GetEffectValue(); - // Shouldn't Appear in Combat Log - target->ModifyHealth(-damage); + float penalty = caster->CalculateSpellpowerCoefficientLevelPenalty(GetSpellInfo()); + float fmana = (float)base + caster->GetUInt32Value(PLAYER_FIELD_MOD_DAMAGE_DONE_POS + SPELL_SCHOOL_SHADOW) * 0.5f * penalty; - // Improved Life Tap mod - if (AuraEffect const* aurEff = caster->GetDummyAuraEffect(SPELLFAMILY_WARLOCK, WARLOCK_ICON_ID_IMPROVED_LIFE_TAP, 0)) - AddPct(mana, aurEff->GetAmount()); + // Improved Life Tap mod + if (AuraEffect const* aurEff = caster->GetDummyAuraEffect(SPELLFAMILY_WARLOCK, WARLOCK_ICON_ID_IMPROVED_LIFE_TAP, 0)) + AddPct(fmana, aurEff->GetAmount()); + int32 mana = round(fmana); - CastSpellExtraArgs args; - args.AddSpellBP0(mana); - caster->CastSpell(target, SPELL_WARLOCK_LIFE_TAP_ENERGIZE, args); + // Shouldn't Appear in Combat Log + caster->ModifyHealth(-base); - // Mana Feed - int32 manaFeedVal = 0; - if (AuraEffect const* aurEff = caster->GetAuraEffect(SPELL_AURA_ADD_FLAT_MODIFIER, SPELLFAMILY_WARLOCK, WARLOCK_ICON_ID_MANA_FEED, 0)) - manaFeedVal = aurEff->GetAmount(); + CastSpellExtraArgs args; + args.AddSpellBP0(mana); + caster->CastSpell(caster, SPELL_WARLOCK_LIFE_TAP_ENERGIZE, args); - if (manaFeedVal > 0) - { - ApplyPct(manaFeedVal, mana); - CastSpellExtraArgs manaFeedArgs(TRIGGERED_FULL_MASK); - manaFeedArgs.AddSpellBP0(manaFeedVal); - caster->CastSpell(caster, SPELL_WARLOCK_LIFE_TAP_ENERGIZE_2, manaFeedArgs); - } + // Mana Feed + int32 manaFeedVal = 0; + if (AuraEffect const* aurEff = caster->GetAuraEffect(SPELL_AURA_ADD_FLAT_MODIFIER, SPELLFAMILY_WARLOCK, WARLOCK_ICON_ID_MANA_FEED, 0)) + manaFeedVal = aurEff->GetAmount(); + + if (manaFeedVal > 0) + { + ApplyPct(manaFeedVal, mana); + CastSpellExtraArgs manaFeedArgs(TRIGGERED_FULL_MASK); + manaFeedArgs.AddSpellBP0(manaFeedVal); + caster->CastSpell(caster, SPELL_WARLOCK_LIFE_TAP_ENERGIZE_2, manaFeedArgs); } } SpellCastResult CheckCast() { - if ((int32(GetCaster()->GetHealth()) > int32(GetSpellInfo()->Effects[EFFECT_0].CalcValue() + (6.3875 * GetSpellInfo()->BaseLevel)))) + if (int32(GetCaster()->GetHealth()) > int32(GetSpellInfo()->Effects[EFFECT_0].CalcValue())) return SPELL_CAST_OK; return SPELL_FAILED_FIZZLE; } |