From a31111ebbb317d22f80b0f5a6c81e95172355ea3 Mon Sep 17 00:00:00 2001 From: Ovahlord Date: Thu, 23 Jul 2020 22:52:55 +0200 Subject: [PATCH] Core/Spells: allow Rune Strike to be permanently used while in Blood Presence --- src/server/game/Entities/Unit/Unit.cpp | 5 +++++ src/server/scripts/Spells/spell_dk.cpp | 6 ++++++ 2 files changed, 11 insertions(+) diff --git a/src/server/game/Entities/Unit/Unit.cpp b/src/server/game/Entities/Unit/Unit.cpp index f0dd5173286..a5eb978ede0 100644 --- a/src/server/game/Entities/Unit/Unit.cpp +++ b/src/server/game/Entities/Unit/Unit.cpp @@ -10689,6 +10689,11 @@ void Unit::ProcSkillsAndReactives(bool isVictim, Unit* procTarget, uint32 typeMa // for victim if (isVictim) { + // Skip checks for Death Knights when in Blood Presence (Rune Strike) + if (getClass() == CLASS_DEATH_KNIGHT && hitMask & (PROC_HIT_DODGE | PROC_HIT_PARRY | PROC_HIT_BLOCK)) + if (GetAuraEffect(SPELL_AURA_MOD_BASE_RESISTANCE_PCT, SPELLFAMILY_DEATHKNIGHT, 0x800000, 0, 0, GetGUID())) + return; + // if victim and dodge attack if (hitMask & PROC_HIT_DODGE) { diff --git a/src/server/scripts/Spells/spell_dk.cpp b/src/server/scripts/Spells/spell_dk.cpp index fe0bbda0b12..b174578bddd 100644 --- a/src/server/scripts/Spells/spell_dk.cpp +++ b/src/server/scripts/Spells/spell_dk.cpp @@ -794,6 +794,9 @@ class spell_dk_presence : public AuraScript // Improved Blood Presence and Blood Presence triggered effect if (spellId == SPELL_DK_BLOOD_PRESENCE) { + // Apply defense state to permanently enable Rune Strike + target->ModifyAuraState(AURA_STATE_DEFENSE, true); + if (Aura const* improvedBloodPresenceAura = target->GetAuraOfRankedSpell(SPELL_DK_IMPROVED_BLOOD_PRESENCE_R1, target->GetGUID())) { // Rune Regeneration bonus effect @@ -823,6 +826,9 @@ class spell_dk_presence : public AuraScript target->RemoveAura(SPELL_DK_IMPROVED_FROST_PRESENCE); target->RemoveAura(SPELL_DK_IMPROVED_UNHOLY_PRESENCE); target->RemoveAura(SPELL_DK_IMPROVED_BLOOD_PRESENCE); + + if (GetId() == SPELL_DK_BLOOD_PRESENCE) + target->ModifyAuraState(AURA_STATE_DEFENSE, false); } void Register() override