From 2881dcaa8d0d42ee578ec0e887611837202c752a Mon Sep 17 00:00:00 2001 From: Shauren Date: Tue, 18 Mar 2025 18:01:09 +0100 Subject: Core/Auras: Implemented SPELL_AURA_IGNORE_SPELL_CHARGE_COOLDOWN (cherry picked from commit e0d3781989c3e9339bfc14981a57683d3010f4e0) --- src/server/game/Spells/Auras/SpellAuraDefines.h | 2 +- src/server/game/Spells/Auras/SpellAuraEffects.cpp | 2 +- src/server/game/Spells/SpellHistory.cpp | 3 +++ 3 files changed, 5 insertions(+), 2 deletions(-) (limited to 'src/server') diff --git a/src/server/game/Spells/Auras/SpellAuraDefines.h b/src/server/game/Spells/Auras/SpellAuraDefines.h index 41b1a81b5bf..3080ef14aba 100644 --- a/src/server/game/Spells/Auras/SpellAuraDefines.h +++ b/src/server/game/Spells/Auras/SpellAuraDefines.h @@ -592,7 +592,7 @@ enum AuraType : uint32 SPELL_AURA_MOD_ANIMA_GAIN = 497, // NYI SPELL_AURA_CURRENCY_LOSS_PCT_ON_DEATH = 498, // NYI SPELL_AURA_MOD_RESTED_XP_CONSUMPTION = 499, - SPELL_AURA_IGNORE_SPELL_CHARGE_COOLDOWN = 500, // NYI + SPELL_AURA_IGNORE_SPELL_CHARGE_COOLDOWN = 500, SPELL_AURA_MOD_CRITICAL_DAMAGE_TAKEN_FROM_CASTER = 501, SPELL_AURA_MOD_VERSATILITY_DAMAGE_DONE_BENEFIT = 502, // NYI SPELL_AURA_MOD_VERSATILITY_HEALING_DONE_BENEFIT = 503, // NYI diff --git a/src/server/game/Spells/Auras/SpellAuraEffects.cpp b/src/server/game/Spells/Auras/SpellAuraEffects.cpp index a7bf58c3974..7ad154c93a9 100644 --- a/src/server/game/Spells/Auras/SpellAuraEffects.cpp +++ b/src/server/game/Spells/Auras/SpellAuraEffects.cpp @@ -569,7 +569,7 @@ NonDefaultConstructible AuraEffectHandler[TOTAL_AURAS]= &AuraEffect::HandleNULL, //497 SPELL_AURA_MOD_ANIMA_GAIN &AuraEffect::HandleNULL, //498 SPELL_AURA_CURRENCY_LOSS_PCT_ON_DEATH &AuraEffect::HandleNULL, //499 SPELL_AURA_MOD_RESTED_XP_CONSUMPTION - &AuraEffect::HandleNULL, //500 SPELL_AURA_IGNORE_SPELL_CHARGE_COOLDOWN + &AuraEffect::HandleNoImmediateEffect, //500 SPELL_AURA_IGNORE_SPELL_CHARGE_COOLDOWN implemented in SpellHistory::ConsumeCharge &AuraEffect::HandleNULL, //501 SPELL_AURA_MOD_CRITICAL_DAMAGE_TAKEN_FROM_CASTER &AuraEffect::HandleNULL, //502 SPELL_AURA_MOD_VERSATILITY_DAMAGE_DONE_BENEFIT &AuraEffect::HandleNULL, //503 SPELL_AURA_MOD_VERSATILITY_HEALING_DONE_BENEFIT diff --git a/src/server/game/Spells/SpellHistory.cpp b/src/server/game/Spells/SpellHistory.cpp index 707018891c1..b6e7160ebaa 100644 --- a/src/server/game/Spells/SpellHistory.cpp +++ b/src/server/game/Spells/SpellHistory.cpp @@ -859,6 +859,9 @@ bool SpellHistory::ConsumeCharge(uint32 chargeCategoryId) int32 chargeRecovery = GetChargeRecoveryTime(chargeCategoryId); if (chargeRecovery > 0 && GetMaxCharges(chargeCategoryId) > 0) { + if (_owner->HasAuraTypeWithMiscvalue(SPELL_AURA_IGNORE_SPELL_CHARGE_COOLDOWN, chargeCategoryId)) + return true; + TimePoint recoveryStart; std::deque& charges = _categoryCharges[chargeCategoryId]; if (charges.empty()) -- cgit v1.2.3