Core/Spells: * Removed special handling of SPELL_AURA_ABILITY_IGNORE_AURASTATE, now handled by the proc system (again).
* Fixed Fingers of Frost buff display. Closes issue #3324. --HG-- branch : trunk
This commit is contained in:
@@ -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;
|
||||
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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)
|
||||
|
||||
Reference in New Issue
Block a user