aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/server/game/Entities/Player/Player.cpp29
-rw-r--r--src/server/game/Entities/Unit/Unit.cpp1
-rw-r--r--src/server/game/Spells/Auras/SpellAuras.cpp20
-rw-r--r--src/server/game/Spells/SpellMgr.cpp7
4 files changed, 27 insertions, 30 deletions
diff --git a/src/server/game/Entities/Player/Player.cpp b/src/server/game/Entities/Player/Player.cpp
index 6a36c3b5338..bc0b67f2089 100644
--- a/src/server/game/Entities/Player/Player.cpp
+++ b/src/server/game/Entities/Player/Player.cpp
@@ -19111,34 +19111,7 @@ void Player::RemoveSpellMods(Spell * spell)
{
if (!spell)
return;
- std::set <Aura *> checkedSpells;
-
- AuraEffectList const & auraList = GetAuraEffectsByType(SPELL_AURA_ABILITY_IGNORE_AURASTATE);
- for (AuraEffectList::const_iterator itr = auraList.begin(); itr != auraList.end();)
- {
- AuraEffect * aurEff = *itr;
- Aura * aura = aurEff->GetBase();
- ++itr;
- if (!aura->GetCharges())
- continue;
-
- SpellEntry const * spellInfo = aura->GetSpellProto();
-
- if (spellInfo->SpellFamilyName != spell->m_spellInfo->SpellFamilyName ||
- checkedSpells.find(aura) != checkedSpells.end())
- continue;
-
- if (spell->m_spellInfo->SpellFamilyFlags & spellInfo->EffectSpellClassMask[aurEff->GetEffIndex()]
- // this is for fingers of frost, look at spell::finish part, a charge will be taken by the triggering spell
- && aura->GetDuration() != aura->GetMaxDuration())
- {
- checkedSpells.insert(aura);
- spell->m_appliedMods.erase(aura);
- if (aura->DropCharge())
- itr = auraList.begin();
- }
- }
-
+
if (spell->m_appliedMods.empty())
return;
diff --git a/src/server/game/Entities/Unit/Unit.cpp b/src/server/game/Entities/Unit/Unit.cpp
index e5984f5cd38..c13aa68b825 100644
--- a/src/server/game/Entities/Unit/Unit.cpp
+++ b/src/server/game/Entities/Unit/Unit.cpp
@@ -13790,6 +13790,7 @@ bool InitTriggerAuraData()
isTriggerAura[SPELL_AURA_PROC_TRIGGER_SPELL_WITH_VALUE] = true;
isTriggerAura[SPELL_AURA_MOD_DAMAGE_FROM_CASTER] = true;
isTriggerAura[SPELL_AURA_MOD_SPELL_CRIT_CHANCE] = true;
+ isTriggerAura[SPELL_AURA_ABILITY_IGNORE_AURASTATE] = true;
isNonTriggerAura[SPELL_AURA_MOD_POWER_REGEN]=true;
isNonTriggerAura[SPELL_AURA_REDUCE_PUSHBACK]=true;
diff --git a/src/server/game/Spells/Auras/SpellAuras.cpp b/src/server/game/Spells/Auras/SpellAuras.cpp
index 4d0e43fd678..5228d099f8c 100644
--- a/src/server/game/Spells/Auras/SpellAuras.cpp
+++ b/src/server/game/Spells/Auras/SpellAuras.cpp
@@ -959,6 +959,20 @@ void Aura::HandleAuraSpecificMods(AuraApplication const * aurApp, Unit * caster,
caster->CastSpell(caster, spellId, true);
}
break;
+ case 44544: // Fingers of Frost
+ {
+ // See if we already have the indicator aura. If not, create one.
+ if (Aura *aur = target->GetAura(74396))
+ {
+ // Aura already there. Refresh duration and set original charges
+ aur->SetCharges(2);
+ aur->RefreshDuration();
+ }
+ else
+ target->AddAura(74396, target);
+ }
+ default:
+ break;
}
break;
case SPELLFAMILY_WARLOCK:
@@ -1125,6 +1139,10 @@ void Aura::HandleAuraSpecificMods(AuraApplication const * aurApp, Unit * caster,
break;
target->CastSpell(target, 32612, true, NULL, GetEffect(1));
break;
+ case 74396: // Fingers of Frost
+ // Remove the IGNORE_AURASTATE aura
+ target->RemoveAurasDueToSpell(44544);
+ break;
case 44401: //Missile Barrage
case 48108: //Hot Streak
case 57761: //Fireball!
@@ -1133,6 +1151,8 @@ void Aura::HandleAuraSpecificMods(AuraApplication const * aurApp, Unit * caster,
if (target->HasAura(70752)) //Item - Mage T10 2P Bonus
target->CastSpell(target, 70753, true);
break;
+ default:
+ break;
}
if (!caster)
break;
diff --git a/src/server/game/Spells/SpellMgr.cpp b/src/server/game/Spells/SpellMgr.cpp
index a8087363aa3..eb9f0bd6dd4 100644
--- a/src/server/game/Spells/SpellMgr.cpp
+++ b/src/server/game/Spells/SpellMgr.cpp
@@ -3721,7 +3721,6 @@ void SpellMgr::LoadSpellCustomAttr()
case 54741: // Firestarter
case 57761: // Fireball!
case 39805: // Lightning Overload
- case 52437: // Sudden Death
case 64823: // Item - Druid T8 Balance 4P Bonus
case 44401:
spellInfo->procCharges = 1;
@@ -3732,8 +3731,12 @@ void SpellMgr::LoadSpellCustomAttr()
count++;
break;
case 44544: // Fingers of Frost
+ spellInfo->EffectSpellClassMask[0] = flag96(685904631, 1151048, 0);
+ count++;
+ break;
+ case 74396: // Fingers of Frost visual buff
spellInfo->procCharges = 2;
- spellInfo->EffectSpellClassMask[0] = flag96(685904631,1151048,0);
+ spellInfo->StackAmount = 0;
count++;
break;
case 28200: // Ascendance (Talisman of Ascendance trinket)