diff options
author | Shauren <shauren.trinity@gmail.com> | 2016-05-30 18:31:30 +0200 |
---|---|---|
committer | Shauren <shauren.trinity@gmail.com> | 2016-05-30 18:31:30 +0200 |
commit | fde9e8985f203048f07909bf0d3b0865cda55c42 (patch) | |
tree | 53a594d7929712028a7b9a8dfd7a8bcabc09fa5c | |
parent | fc8641b76325110130ce8c0d953f4d1811c4fecc (diff) |
Core/Spells: Implemented auras 394 and 469 SPELL_AURA_SHOW_CONFIRMATION_PROMPT (WITH_DIFFICULTY)
-rw-r--r-- | src/server/game/Spells/Auras/SpellAuraDefines.h | 5 | ||||
-rw-r--r-- | src/server/game/Spells/Auras/SpellAuraEffects.cpp | 24 | ||||
-rw-r--r-- | src/server/game/Spells/Auras/SpellAuraEffects.h | 1 | ||||
-rw-r--r-- | src/server/game/Spells/Auras/SpellAuras.cpp | 4 |
4 files changed, 30 insertions, 4 deletions
diff --git a/src/server/game/Spells/Auras/SpellAuraDefines.h b/src/server/game/Spells/Auras/SpellAuraDefines.h index 3663843868a..1d1de78b18b 100644 --- a/src/server/game/Spells/Auras/SpellAuraDefines.h +++ b/src/server/game/Spells/Auras/SpellAuraDefines.h @@ -451,7 +451,7 @@ enum AuraType SPELL_AURA_391 = 391, SPELL_AURA_392 = 392, SPELL_AURA_393 = 393, - SPELL_AURA_394 = 394, + SPELL_AURA_SHOW_CONFIRMATION_PROMPT = 394, SPELL_AURA_AREA_TRIGGER = 395, // NYI SPELL_AURA_396 = 396, SPELL_AURA_397 = 397, @@ -526,7 +526,8 @@ enum AuraType SPELL_AURA_MOD_BONUS_ARMOR_PCT = 466, // Affects bonus armor gain from all sources except base stats SPELL_AURA_MOD_STAT_BONUS_PCT = 467, // Affects stat gain from all sources except base stats SPELL_AURA_468 = 468, - SPELL_AURA_469 = 469, + SPELL_AURA_SHOW_CONFIRMATION_PROMPT_WITH_DIFFICULTY = 469, + SPELL_AURA_470 = 470, SPELL_AURA_471 = 471, SPELL_AURA_472 = 472, SPELL_AURA_PREVENT_DURABILITY_LOSS_FROM_COMBAT = 473, // Prevents durability loss from dealing/taking damage diff --git a/src/server/game/Spells/Auras/SpellAuraEffects.cpp b/src/server/game/Spells/Auras/SpellAuraEffects.cpp index a5926e8f85c..d3fc6c5e592 100644 --- a/src/server/game/Spells/Auras/SpellAuraEffects.cpp +++ b/src/server/game/Spells/Auras/SpellAuraEffects.cpp @@ -453,7 +453,7 @@ pAuraEffectHandler AuraEffectHandler[TOTAL_AURAS]= &AuraEffect::HandleNULL, //391 &AuraEffect::HandleNULL, //392 &AuraEffect::HandleNULL, //393 - &AuraEffect::HandleNULL, //394 + &AuraEffect::HandleShowConfirmationPrompt, //394 SPELL_AURA_SHOW_CONFIRMATION_PROMPT &AuraEffect::HandleNULL, //395 SPELL_AURA_AREA_TRIGGER &AuraEffect::HandleNULL, //396 &AuraEffect::HandleNULL, //397 @@ -528,7 +528,7 @@ pAuraEffectHandler AuraEffectHandler[TOTAL_AURAS]= &AuraEffect::HandleNULL, //466 SPELL_AURA_MOD_BONUS_ARMOR_PCT &AuraEffect::HandleModStatBonusPercent, //467 SPELL_AURA_MOD_STAT_BONUS_PCT &AuraEffect::HandleNULL, //468 - &AuraEffect::HandleNULL, //469 + &AuraEffect::HandleShowConfirmationPrompt, //469 SPELL_AURA_SHOW_CONFIRMATION_PROMPT_WITH_DIFFICULTY &AuraEffect::HandleNULL, //470 &AuraEffect::HandleNULL, //471 &AuraEffect::HandleNULL, //472 @@ -706,6 +706,11 @@ int32 AuraEffect::CalculateAmount(Unit* caster) break; } } + case SPELL_AURA_SHOW_CONFIRMATION_PROMPT_WITH_DIFFICULTY: + if (caster) + amount = caster->GetMap()->GetDifficultyID(); + m_canBeRecalculated = false; + break; default: break; } @@ -6652,6 +6657,21 @@ void AuraEffect::HandleModSpellCategoryCooldown(AuraApplication const* aurApp, u player->SendSpellCategoryCooldowns(); } +void AuraEffect::HandleShowConfirmationPrompt(AuraApplication const* aurApp, uint8 mode, bool apply) const +{ + if (!(mode & AURA_EFFECT_HANDLE_REAL)) + return; + + Player* player = aurApp->GetTarget()->ToPlayer(); + if (!player) + return; + + if (apply) + player->AddTemporarySpell(_effectInfo->TriggerSpell); + else + player->RemoveTemporarySpell(_effectInfo->TriggerSpell); +} + void AuraEffect::HandleOverridePetSpecs(AuraApplication const* aurApp, uint8 mode, bool apply) const { if (!(mode & AURA_EFFECT_HANDLE_REAL)) diff --git a/src/server/game/Spells/Auras/SpellAuraEffects.h b/src/server/game/Spells/Auras/SpellAuraEffects.h index 39b1cdf3eb8..7d1df37eb42 100644 --- a/src/server/game/Spells/Auras/SpellAuraEffects.h +++ b/src/server/game/Spells/Auras/SpellAuraEffects.h @@ -304,6 +304,7 @@ class TC_GAME_API AuraEffect void HandleAuraForceWeather(AuraApplication const* aurApp, uint8 mode, bool apply) const; void HandleEnableAltPower(AuraApplication const* aurApp, uint8 mode, bool apply) const; void HandleModSpellCategoryCooldown(AuraApplication const* aurApp, uint8 mode, bool apply) const; + void HandleShowConfirmationPrompt(AuraApplication const* aurApp, uint8 mode, bool apply) const; void HandleOverridePetSpecs(AuraApplication const* aurApp, uint8 mode, bool apply) const; void HandleAllowUsingGameobjectsWhileMounted(AuraApplication const* aurApp, uint8 mode, bool apply) const; diff --git a/src/server/game/Spells/Auras/SpellAuras.cpp b/src/server/game/Spells/Auras/SpellAuras.cpp index 521abd26e7b..790e4abd3f0 100644 --- a/src/server/game/Spells/Auras/SpellAuras.cpp +++ b/src/server/game/Spells/Auras/SpellAuras.cpp @@ -1774,6 +1774,10 @@ bool Aura::CanStackWith(Aura const* existingAura) const return true; // Empty seat available (skip rest) } + if (HasEffectType(SPELL_AURA_SHOW_CONFIRMATION_PROMPT) || HasEffectType(SPELL_AURA_SHOW_CONFIRMATION_PROMPT_WITH_DIFFICULTY)) + if (existingAura->HasEffectType(SPELL_AURA_SHOW_CONFIRMATION_PROMPT_WITH_DIFFICULTY) || existingAura->HasEffectType(SPELL_AURA_SHOW_CONFIRMATION_PROMPT_WITH_DIFFICULTY)) + return false; + // spell of same spell rank chain if (m_spellInfo->IsRankOf(existingSpellInfo)) { |