From 00640dee97affdb3dd911235b24b7bd3c397c71f Mon Sep 17 00:00:00 2001 From: Shauren Date: Fri, 13 May 2016 21:46:06 +0200 Subject: Core/Auras: Implemented aura 481 - SPELL_AURA_CONVERT_CONSUMED_RUNE Used by: Blood Rites, Reaping and Glyph of the Ice Reaper --- src/server/game/Spells/Spell.cpp | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) (limited to 'src/server/game/Spells/Spell.cpp') diff --git a/src/server/game/Spells/Spell.cpp b/src/server/game/Spells/Spell.cpp index 594221099d6..dac9b82549c 100644 --- a/src/server/game/Spells/Spell.cpp +++ b/src/server/game/Spells/Spell.cpp @@ -4612,6 +4612,11 @@ void Spell::TakeRunePower(bool didHit) modOwner->ApplySpellMod(m_spellInfo->Id, SPELLMOD_COST, runeCost[i], this); } + bool convertUsedRunes = false; + for (AuraEffect const* convertConsumedRuneAuras : m_caster->GetAuraEffectsByType(SPELL_AURA_CONVERT_CONSUMED_RUNE)) + if (convertConsumedRuneAuras->IsAffectingSpell(m_spellInfo)) + convertUsedRunes = true; + // Let's say we use a skill that requires a Frost rune. This is the order: // - Frost rune // - Death rune, originally a Frost rune @@ -4624,6 +4629,8 @@ void Spell::TakeRunePower(bool didHit) player->SetRuneCooldown(i, didHit ? player->GetRuneBaseCooldown(i) : uint32(RUNE_MISS_COOLDOWN), true); player->SetLastUsedRune(rune); runeCost[rune]--; + if (convertUsedRunes) + player->ConvertRune(i, RUNE_DEATH); } } @@ -4643,7 +4650,7 @@ void Spell::TakeRunePower(bool didHit) runeCost[rune]--; // keep Death Rune type if missed - if (didHit) + if (didHit && !convertUsedRunes) player->RestoreBaseRune(i); if (runeCost[RUNE_DEATH] == 0) @@ -4665,7 +4672,7 @@ void Spell::TakeRunePower(bool didHit) runeCost[rune]--; // keep Death Rune type if missed - if (didHit) + if (didHit && !convertUsedRunes) player->RestoreBaseRune(i); if (runeCost[RUNE_DEATH] == 0) -- cgit v1.2.3