aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorPolarCookie <sei009@post.uit.no>2018-10-15 13:35:45 +0200
committerKeader <keader.android@gmail.com>2018-10-15 08:35:45 -0300
commitd13bcf36f13f5ea3de5a463a18b51a547f4e1863 (patch)
treeeddec87b07ad93872a9aeec347a8ba0e95a90efe /src
parentda24eb749290b11e801dfb6ffec8164a47b4541a (diff)
[3.3.5] Scripts/Spells: Life Tap (#22638)
Closes #17559
Diffstat (limited to 'src')
-rw-r--r--src/server/scripts/Spells/spell_warlock.cpp50
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;
}