diff options
Diffstat (limited to 'src/server')
| -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))      { | 
