Implement attribute flag SPELL_ATTR_EX2_TRIGGERED_CAN_TRIGGER, fix improved fire nova totem.

--HG--
branch : trunk
This commit is contained in:
QAston
2009-04-20 12:38:35 +02:00
parent 8ad26e0db6
commit 9ddd7cf660
7 changed files with 11 additions and 6 deletions
@@ -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);
+1 -1
View File
@@ -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
View File
@@ -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
+1 -1
View File
@@ -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());
}
}
+1 -1
View File
@@ -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
View File
@@ -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
View File
@@ -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