Implement attribute flag SPELL_ATTR_EX2_TRIGGERED_CAN_TRIGGER, fix improved fire nova totem.
--HG-- branch : trunk
This commit is contained in:
@@ -0,0 +1,4 @@
|
||||
DELETE FROM `spell_proc_event` WHERE `entry` IN (16544, 16086);
|
||||
INSERT INTO `spell_proc_event` VALUES
|
||||
(16544, 0x00, 11, 0x00000000, 0x00040000, 0x00000000, 0x00000000, 0x0000000, 0.000000, 0.000000, 0),
|
||||
(16086, 0x00, 11, 0x00000000, 0x00040000, 0x00000000, 0x00000000, 0x0000000, 0.000000, 0.000000, 0);
|
||||
@@ -316,7 +316,7 @@ enum SpellCategory
|
||||
#define SPELL_ATTR_EX2_UNK27 0x08000000 // 27
|
||||
#define SPELL_ATTR_EX2_UNK28 0x10000000 // 28 no breaks stealth if it fails??
|
||||
#define SPELL_ATTR_EX2_CANT_CRIT 0x20000000 // 29 Spell can't crit
|
||||
#define SPELL_ATTR_EX2_UNK30 0x40000000 // 30
|
||||
#define SPELL_ATTR_EX2_TRIGGERED_CAN_TRIGGER 0x40000000 // 30 spell can trigger even if triggered
|
||||
#define SPELL_ATTR_EX2_FOOD 0x80000000 // 31 food, well-fed, and a few others
|
||||
|
||||
#define SPELL_ATTR_EX3_UNK0 0x00000001 // 0
|
||||
|
||||
+2
-1
@@ -908,7 +908,8 @@ void Spell::DoAllEffectOnTarget(TargetInfo *target)
|
||||
// Fill base trigger info
|
||||
uint32 procAttacker = m_procAttacker;
|
||||
uint32 procVictim = m_procVictim;
|
||||
uint32 procEx = m_triggeredByAuraSpell? PROC_EX_INTERNAL_TRIGGERED : PROC_EX_NONE;
|
||||
uint32 procEx = m_triggeredByAuraSpell && !(m_spellInfo->AttributesEx2 & SPELL_ATTR_EX2_TRIGGERED_CAN_TRIGGER) ? PROC_EX_INTERNAL_TRIGGERED : PROC_EX_NONE;
|
||||
sLog.outError("%d, %d, %d",m_procAttacker, m_procVictim, procEx);
|
||||
m_spellAura = NULL; // Set aura to null for every target-make sure that pointer is not used for unit without aura applied
|
||||
|
||||
if (missInfo==SPELL_MISS_NONE) // In case spell hit target, do all effect on that target
|
||||
|
||||
@@ -1131,7 +1131,7 @@ void Aura::_RemoveAura()
|
||||
if(*itr < 0)
|
||||
m_target->RemoveAurasDueToSpell(-(*itr));
|
||||
else if(Unit* caster = GetCaster())
|
||||
if (m_removeMode!=AURA_REMOVE_BY_DEFAULT)
|
||||
if (m_removeMode!=AURA_REMOVE_BY_DEFAULT && m_removeMode!=AURA_REMOVE_BY_DEATH)
|
||||
m_target->CastSpell(m_target, *itr, true, 0, 0, caster->GetGUID());
|
||||
}
|
||||
}
|
||||
|
||||
@@ -2571,9 +2571,9 @@ void Spell::SpellDamageHeal(uint32 /*i*/)
|
||||
// Riptide - increase healing done by Chain Heal
|
||||
else if (m_spellInfo->SpellFamilyName==SPELLFAMILY_SHAMAN && m_spellInfo->SpellFamilyFlags[0] & 0x100)
|
||||
{
|
||||
addhealth = caster->SpellHealingBonus(unitTarget, m_spellInfo, addhealth, HEAL);
|
||||
if (AuraEffect * aurEff = unitTarget->GetAura(SPELL_AURA_PERIODIC_HEAL, SPELLFAMILY_SHAMAN, 0, 0, 0x10, m_originalCasterGUID))
|
||||
{
|
||||
addhealth = caster->SpellHealingBonus(unitTarget, m_spellInfo, addhealth, HEAL);
|
||||
addhealth *= 1.25f;
|
||||
// consume aura
|
||||
unitTarget->RemoveAura(aurEff->GetParentAura());
|
||||
|
||||
+1
-1
@@ -6097,7 +6097,7 @@ bool Unit::HandleDummyAuraProc(Unit *pVictim, uint32 damage, AuraEffect* trigger
|
||||
// Improved fire nova totem
|
||||
case 16544:
|
||||
{
|
||||
triggered_spell_id = 16086;
|
||||
triggered_spell_id = 51880;
|
||||
break;
|
||||
}
|
||||
// Tidal Force
|
||||
|
||||
+1
-1
@@ -347,7 +347,7 @@ enum DamageTypeToSchool
|
||||
|
||||
enum AuraRemoveMode
|
||||
{
|
||||
AURA_REMOVE_BY_DEFAULT,
|
||||
AURA_REMOVE_BY_DEFAULT=0,
|
||||
AURA_REMOVE_BY_STACK, // change stack, single aura remove,
|
||||
AURA_REMOVE_BY_CANCEL,
|
||||
AURA_REMOVE_BY_ENEMY_SPELL, // dispel and absorb aura destroy
|
||||
|
||||
Reference in New Issue
Block a user