diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/server/game/Entities/Player/Player.cpp | 29 | ||||
-rw-r--r-- | src/server/game/Entities/Unit/Unit.cpp | 1 | ||||
-rw-r--r-- | src/server/game/Spells/Auras/SpellAuras.cpp | 20 | ||||
-rw-r--r-- | src/server/game/Spells/SpellMgr.cpp | 7 |
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) |