mirror of
https://github.com/TrinityCore/TrinityCore.git
synced 2026-02-06 17:08:23 +01:00
Core/Spells: Blood Shield will now only use effective healing for its shield calculation
This commit is contained in:
3
sql/updates/world/4.3.4/2021_08_28_03_world.sql
Normal file
3
sql/updates/world/4.3.4/2021_08_28_03_world.sql
Normal file
@@ -0,0 +1,3 @@
|
||||
DELETE FROM `spell_script_names` WHERE `ScriptName`= 'spell_dk_death_strike_heal';
|
||||
INSERT INTO `spell_script_names` (`spell_id`, `ScriptName`) VALUES
|
||||
(45470, 'spell_dk_death_strike_heal');
|
||||
@@ -41,7 +41,6 @@ enum DeathKnightSpells
|
||||
SPELL_DK_BLOOD_PLAGUE = 55078,
|
||||
SPELL_DK_BLOOD_PRESENCE = 48263,
|
||||
SPELL_DK_BLOOD_PRESENCE_TRIGGERED = 61261,
|
||||
SPELL_DK_BLOOD_SHIELD_MASTERY = 77513,
|
||||
SPELL_DK_BLOOD_SHIELD_ABSORB = 77535,
|
||||
SPELL_DK_BLOOD_STRIKE = 45902,
|
||||
SPELL_DK_BLOOD_STRIKE_OFFHAND = 66215,
|
||||
@@ -106,7 +105,8 @@ enum DKSpellIcons
|
||||
DK_ICON_ID_RUNIC_CORRUPTION = 4068,
|
||||
DK_ICON_ID_RESILIENT_INFECTION = 1910,
|
||||
DK_ICON_ID_IMPROVED_UNHOLY_PRESENCE = 2633,
|
||||
DK_ICON_ID_IMPROVED_FROST_PRESENCE = 2632
|
||||
DK_ICON_ID_IMPROVED_FROST_PRESENCE = 2632,
|
||||
DK_ICON_ID_BLOOD_SHIELD_MASTERY = 2624
|
||||
};
|
||||
|
||||
// 48707 - Anti-Magic Shell (on self)
|
||||
@@ -437,7 +437,6 @@ class spell_dk_death_strike : public SpellScript
|
||||
{
|
||||
SPELL_DK_DEATH_STRIKE_ENABLER,
|
||||
SPELL_DK_DEATH_STRIKE_HEAL,
|
||||
SPELL_DK_BLOOD_SHIELD_MASTERY,
|
||||
SPELL_DK_BLOOD_SHIELD_ABSORB
|
||||
});
|
||||
}
|
||||
@@ -457,19 +456,6 @@ class spell_dk_death_strike : public SpellScript
|
||||
heal = std::max(heal, int32(GetCaster()->CountPctFromMaxHealth(GetEffectValue())));
|
||||
GetCaster()->CastSpell(GetCaster(), SPELL_DK_DEATH_STRIKE_HEAL, CastSpellExtraArgs(true).AddSpellBP0(heal));
|
||||
}
|
||||
|
||||
if (!GetCaster()->HasAura(SPELL_DK_BLOOD_PRESENCE))
|
||||
return;
|
||||
|
||||
if (AuraEffect const* aurEff = GetCaster()->GetAuraEffect(SPELL_DK_BLOOD_SHIELD_MASTERY, EFFECT_0))
|
||||
{
|
||||
int32 bp = CalculatePct(heal, aurEff->GetAmount());
|
||||
|
||||
if (AuraEffect const* bloodShieldEffect = GetCaster()->GetAuraEffect(SPELL_DK_BLOOD_SHIELD_ABSORB, EFFECT_0))
|
||||
bp += std::min(bp + bloodShieldEffect->GetAmount(), int32(GetCaster()->GetMaxHealth()));
|
||||
|
||||
GetCaster()->CastSpell(GetCaster(), SPELL_DK_BLOOD_SHIELD_ABSORB, CastSpellExtraArgs(true).AddSpellBP0(bp));
|
||||
}
|
||||
}
|
||||
|
||||
void Register() override
|
||||
@@ -541,6 +527,38 @@ private:
|
||||
uint32 _damagePerSecond[5];
|
||||
};
|
||||
|
||||
// 45470 - Death Strike
|
||||
class spell_dk_death_strike_heal : public SpellScript
|
||||
{
|
||||
bool Validate(SpellInfo const* /*spellInfo*/) override
|
||||
{
|
||||
return ValidateSpellInfo(
|
||||
{
|
||||
SPELL_DK_BLOOD_PRESENCE,
|
||||
SPELL_DK_BLOOD_SHIELD_ABSORB
|
||||
});
|
||||
}
|
||||
|
||||
void HandleBloodShield()
|
||||
{
|
||||
Unit* target = GetHitUnit();
|
||||
if (!target)
|
||||
return;
|
||||
|
||||
AuraEffect const* bloodShieldAurEff = target->GetDummyAuraEffect(SPELLFAMILY_DEATHKNIGHT, DK_ICON_ID_BLOOD_SHIELD_MASTERY, EFFECT_0);
|
||||
if (!bloodShieldAurEff || !target->HasAura(SPELL_DK_BLOOD_PRESENCE))
|
||||
return;
|
||||
|
||||
if (int32 bp = CalculatePct(GetHitHeal(), bloodShieldAurEff->GetAmount()))
|
||||
target->CastSpell(target, SPELL_DK_BLOOD_SHIELD_ABSORB, CastSpellExtraArgs(true).AddSpellBP0(bp));
|
||||
}
|
||||
|
||||
void Register() override
|
||||
{
|
||||
AfterHit.Register(&spell_dk_death_strike_heal::HandleBloodShield);
|
||||
}
|
||||
};
|
||||
|
||||
// 47496 - Explode, Ghoul spell for Corpse Explosion
|
||||
class spell_dk_ghoul_explode : public SpellScript
|
||||
{
|
||||
@@ -1730,6 +1748,7 @@ void AddSC_deathknight_spell_scripts()
|
||||
RegisterSpellScript(spell_dk_death_pact);
|
||||
RegisterSpellScript(spell_dk_death_strike);
|
||||
RegisterSpellScript(spell_dk_death_strike_enabler);
|
||||
RegisterSpellScript(spell_dk_death_strike_heal);
|
||||
RegisterSpellScript(spell_dk_deaths_advance);
|
||||
RegisterSpellScript(spell_dk_deaths_advance_aura);
|
||||
RegisterSpellScript(spell_dk_desecration);
|
||||
|
||||
Reference in New Issue
Block a user