From d353eb35a683e861d64f8ad72079406da3b7fef1 Mon Sep 17 00:00:00 2001 From: Ovahlord Date: Fri, 20 Dec 2024 17:16:32 +0100 Subject: Core/Spells: corrected SPELL_EFFECT_ACTIVATE_RUNE behavior for Classic * this fixes blood rune activation --- src/server/game/Spells/SpellEffects.cpp | 9 +++------ 1 file changed, 3 insertions(+), 6 deletions(-) (limited to 'src/server') diff --git a/src/server/game/Spells/SpellEffects.cpp b/src/server/game/Spells/SpellEffects.cpp index d74013183bf..2512ff80dd1 100644 --- a/src/server/game/Spells/SpellEffects.cpp +++ b/src/server/game/Spells/SpellEffects.cpp @@ -5941,15 +5941,12 @@ void Spell::EffectActivateRune() m_runesState = player->GetRunesState(); uint32 count = damage; - int32 miscValue = (1 << effectInfo->MiscValue); - - // Death Runes may also activate Blood Runes (Blood Tap) - if (miscValue & (1 << AsUnderlyingType(RuneType::Death))) - miscValue |= (1 << AsUnderlyingType(RuneType::Blood)); + RuneType runeType = static_cast(effectInfo->MiscValue); for (uint32 i = 0; i < MAX_RUNES && count > 0; ++i) { - if ((1 << AsUnderlyingType(player->GetCurrentRune(i))) & miscValue && G3D::fuzzyNe(player->GetRuneCooldown(i), 0.0f)) + // We will check for base and current rune because some spell effects also activate Death Runes while specifying Blood Runes in their misc value + if ((player->GetBaseRune(i) == runeType || player->GetCurrentRune(i) == runeType) && G3D::fuzzyNe(player->GetRuneCooldown(i), 0.0f)) { player->SetRuneCooldown(i, 0.0f); --count; -- cgit v1.2.3