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:
Xanadu
2010-09-27 20:30:47 +02:00
parent e20c7f0e4d
commit 781592d63a
6 changed files with 38 additions and 30 deletions
+4
View File
@@ -18815,6 +18815,7 @@ INSERT INTO `spell_proc_event` (`entry`,`SchoolMask`,`SpellFamilyName`,`SpellFam
( 44472, 0x00, 3, 0x20E21277, 0x00019048, 0x00000000, 0x00000000, 0x00000002, 0, 0, 0), -- Burnout (Rank 5) ( 44472, 0x00, 3, 0x20E21277, 0x00019048, 0x00000000, 0x00000000, 0x00000002, 0, 0, 0), -- Burnout (Rank 5)
( 44543, 0x00, 3, 0x00100220, 0x00001000, 0x00000000, 0x00010000, 0x00000000, 0, 7, 0), -- Fingers of Frost (Rank 1) ( 44543, 0x00, 3, 0x00100220, 0x00001000, 0x00000000, 0x00010000, 0x00000000, 0, 7, 0), -- Fingers of Frost (Rank 1)
( 44545, 0x00, 3, 0x00100220, 0x00001000, 0x00000000, 0x00010000, 0x00000000, 0, 15, 0), -- Fingers of Frost (Rank 2) ( 44545, 0x00, 3, 0x00100220, 0x00001000, 0x00000000, 0x00010000, 0x00000000, 0, 15, 0), -- Fingers of Frost (Rank 2)
( 74396, 0x10, 3, 0x00000000, 0x00000000, 0x00000000, 0x00010000, 0x00000003, 0, 0, 0), -- Fingers of Frost (buff)
( 44546, 0x00, 3, 0x00100220, 0x00001000, 0x00000000, 0x00000000, 0x00000000, 0, 0, 0), -- Brain Freeze (Rank 1) ( 44546, 0x00, 3, 0x00100220, 0x00001000, 0x00000000, 0x00000000, 0x00000000, 0, 0, 0), -- Brain Freeze (Rank 1)
( 44548, 0x00, 3, 0x00100220, 0x00001000, 0x00000000, 0x00000000, 0x00000000, 0, 0, 0), -- Brain Freeze (Rank 2) ( 44548, 0x00, 3, 0x00100220, 0x00001000, 0x00000000, 0x00000000, 0x00000000, 0, 0, 0), -- Brain Freeze (Rank 2)
( 44549, 0x00, 3, 0x00100220, 0x00001000, 0x00000000, 0x00000000, 0x00000000, 0, 0, 0), -- Brain Freeze (Rank 3) ( 44549, 0x00, 3, 0x00100220, 0x00001000, 0x00000000, 0x00000000, 0x00000000, 0, 0, 0), -- Brain Freeze (Rank 3)
@@ -19269,6 +19270,9 @@ INSERT INTO `spell_proc_event` (`entry`,`SchoolMask`,`SpellFamilyName`,`SpellFam
( 56636, 0x00, 4, 0x00000020, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0, 0, 6), -- Taste for Blood (Rank 1) ( 56636, 0x00, 4, 0x00000020, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0, 0, 6), -- Taste for Blood (Rank 1)
( 56637, 0x00, 4, 0x00000020, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0, 0, 6), -- Taste for Blood (Rank 2) ( 56637, 0x00, 4, 0x00000020, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0, 0, 6), -- Taste for Blood (Rank 2)
( 56638, 0x00, 4, 0x00000020, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0, 0, 6), -- Taste for Blood (Rank 3) ( 56638, 0x00, 4, 0x00000020, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0, 0, 6), -- Taste for Blood (Rank 3)
( 60503, 0x01, 4, 0x00000004, 0x00000000, 0x00000000, 0x00000010, 0x00000000, 0, 0, 0), -- Taste for Blood (proc)
( 68051, 0x01, 4, 0x00000004, 0x00000000, 0x00000000, 0x00000010, 0x00000000, 0, 0, 0), -- Overpower Ready! (proc)
( 52437, 0x01, 4, 0x20000000, 0x00000000, 0x00000000, 0x00000010, 0x00000000, 0, 0, 0), -- Sudden Death (proc)
( 50421, 0x00, 0, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0, 0, 0), -- Scent of Blood ( 50421, 0x00, 0, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0, 0, 0), -- Scent of Blood
( 53386, 0x30, 0, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0, 0, 0), -- Rune of Cinderglacier ( 53386, 0x30, 0, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0, 0, 0), -- Rune of Cinderglacier
( 56375, 0x00, 3, 0x01000000, 0x00000000, 0x00000000, 0x00010000, 0x00000000, 0, 0, 0), -- Glyphs of Polymorph ( 56375, 0x00, 3, 0x01000000, 0x00000000, 0x00000000, 0x00010000, 0x00000000, 0, 0, 0), -- Glyphs of Polymorph
@@ -0,0 +1,7 @@
-- Taste for Blood, Overpower Ready!, Sudden Death and Fingers of Frost proc data.
DELETE FROM `spell_proc_event` WHERE `entry` IN (60503, 68051, 52437, 74396);
INSERT INTO `spell_proc_event` (`entry`, `SchoolMask`, `SpellFamilyName`, `SpellFamilyMask0`, `SpellFamilyMask1`, `SpellFamilyMask2`, `procFlags`, `procEx`, `ppmRate`, `CustomChance`, `Cooldown`) VALUES
(60503, 0x01, 4, 0x00000004, 0x00000000, 0x00000000, 0x00000010, 0x00000000, 0, 0, 0),
(68051, 0x01, 4, 0x00000004, 0x00000000, 0x00000000, 0x00000010, 0x00000000, 0, 0, 0),
(52437, 0x01, 4, 0x20000000, 0x00000000, 0x00000000, 0x00000010, 0x00000000, 0, 0, 0),
(74396, 0x10, 3, 0x00000000, 0x00000000, 0x00000000, 0x00010000, 0x00000003, 0, 0, 0);
+1 -28
View File
@@ -19111,34 +19111,7 @@ void Player::RemoveSpellMods(Spell * spell)
{ {
if (!spell) if (!spell)
return; 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()) if (spell->m_appliedMods.empty())
return; return;
+1
View File
@@ -13790,6 +13790,7 @@ bool InitTriggerAuraData()
isTriggerAura[SPELL_AURA_PROC_TRIGGER_SPELL_WITH_VALUE] = true; isTriggerAura[SPELL_AURA_PROC_TRIGGER_SPELL_WITH_VALUE] = true;
isTriggerAura[SPELL_AURA_MOD_DAMAGE_FROM_CASTER] = true; isTriggerAura[SPELL_AURA_MOD_DAMAGE_FROM_CASTER] = true;
isTriggerAura[SPELL_AURA_MOD_SPELL_CRIT_CHANCE] = 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_MOD_POWER_REGEN]=true;
isNonTriggerAura[SPELL_AURA_REDUCE_PUSHBACK]=true; isNonTriggerAura[SPELL_AURA_REDUCE_PUSHBACK]=true;
@@ -959,6 +959,20 @@ void Aura::HandleAuraSpecificMods(AuraApplication const * aurApp, Unit * caster,
caster->CastSpell(caster, spellId, true); caster->CastSpell(caster, spellId, true);
} }
break; 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; break;
case SPELLFAMILY_WARLOCK: case SPELLFAMILY_WARLOCK:
@@ -1125,6 +1139,10 @@ void Aura::HandleAuraSpecificMods(AuraApplication const * aurApp, Unit * caster,
break; break;
target->CastSpell(target, 32612, true, NULL, GetEffect(1)); target->CastSpell(target, 32612, true, NULL, GetEffect(1));
break; break;
case 74396: // Fingers of Frost
// Remove the IGNORE_AURASTATE aura
target->RemoveAurasDueToSpell(44544);
break;
case 44401: //Missile Barrage case 44401: //Missile Barrage
case 48108: //Hot Streak case 48108: //Hot Streak
case 57761: //Fireball! case 57761: //Fireball!
@@ -1133,6 +1151,8 @@ void Aura::HandleAuraSpecificMods(AuraApplication const * aurApp, Unit * caster,
if (target->HasAura(70752)) //Item - Mage T10 2P Bonus if (target->HasAura(70752)) //Item - Mage T10 2P Bonus
target->CastSpell(target, 70753, true); target->CastSpell(target, 70753, true);
break; break;
default:
break;
} }
if (!caster) if (!caster)
break; break;
+5 -2
View File
@@ -3721,7 +3721,6 @@ void SpellMgr::LoadSpellCustomAttr()
case 54741: // Firestarter case 54741: // Firestarter
case 57761: // Fireball! case 57761: // Fireball!
case 39805: // Lightning Overload case 39805: // Lightning Overload
case 52437: // Sudden Death
case 64823: // Item - Druid T8 Balance 4P Bonus case 64823: // Item - Druid T8 Balance 4P Bonus
case 44401: case 44401:
spellInfo->procCharges = 1; spellInfo->procCharges = 1;
@@ -3732,8 +3731,12 @@ void SpellMgr::LoadSpellCustomAttr()
count++; count++;
break; break;
case 44544: // Fingers of Frost 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->procCharges = 2;
spellInfo->EffectSpellClassMask[0] = flag96(685904631,1151048,0); spellInfo->StackAmount = 0;
count++; count++;
break; break;
case 28200: // Ascendance (Talisman of Ascendance trinket) case 28200: // Ascendance (Talisman of Ascendance trinket)