aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorShauren <shauren.trinity@gmail.com>2016-05-30 18:31:30 +0200
committerShauren <shauren.trinity@gmail.com>2016-05-30 18:31:30 +0200
commitfde9e8985f203048f07909bf0d3b0865cda55c42 (patch)
tree53a594d7929712028a7b9a8dfd7a8bcabc09fa5c
parentfc8641b76325110130ce8c0d953f4d1811c4fecc (diff)
Core/Spells: Implemented auras 394 and 469 SPELL_AURA_SHOW_CONFIRMATION_PROMPT (WITH_DIFFICULTY)
-rw-r--r--src/server/game/Spells/Auras/SpellAuraDefines.h5
-rw-r--r--src/server/game/Spells/Auras/SpellAuraEffects.cpp24
-rw-r--r--src/server/game/Spells/Auras/SpellAuraEffects.h1
-rw-r--r--src/server/game/Spells/Auras/SpellAuras.cpp4
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))
{