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:
@@ -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);
|
||||||
@@ -19111,33 +19111,6 @@ 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;
|
||||||
|
|||||||
@@ -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;
|
||||||
|
|||||||
@@ -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)
|
||||||
|
|||||||
Reference in New Issue
Block a user