*Fix Shattered Barrier

--HG--
branch : trunk
This commit is contained in:
QAston
2009-03-15 02:06:59 +01:00
parent 47b39981a1
commit 8b96182b1c
6 changed files with 36 additions and 15 deletions
+10 -3
View File
@@ -1043,7 +1043,13 @@ void Aura::_RemoveAura()
ProcCaster = PROC_FLAG_SUCCESSFUL_NEGATIVE_SPELL_HIT;
ProcVictim = PROC_FLAG_TAKEN_NEGATIVE_SPELL_HIT;
}
caster->ProcDamageAndSpell(m_target,ProcCaster, ProcVictim, PROC_EX_AURA_REMOVE, 0, BASE_ATTACK, m_spellProto);
uint32 procEx=0;
if (m_removeMode == AURA_REMOVE_BY_DISPEL)
procEx = PROC_EX_AURA_REMOVE_DISPEL;
else if (m_removeMode == AURA_REMOVE_BY_DEFAULT)
procEx = PROC_EX_AURA_REMOVE_EXPIRE;
caster->ProcDamageAndSpell(m_target,ProcCaster, ProcVictim, procEx, m_modifier.m_amount, BASE_ATTACK, m_spellProto);
}
}
}
@@ -2051,9 +2057,10 @@ void Aura::HandleAuraDummy(bool apply, bool Real)
// Living Bomb
if (m_spellProto->SpellFamilyFlags[1] & 0x20000)
{
if(!m_target || !caster || !(m_removeMode == AURA_REMOVE_BY_DISPEL || m_removeMode == AURA_REMOVE_BY_DEFAULT))
if(!m_target || !(m_removeMode == AURA_REMOVE_BY_DISPEL || m_removeMode == AURA_REMOVE_BY_DEFAULT))
return;
caster->CastSpell(m_target, GetModifier()->m_amount, true, NULL, NULL, GetCasterGUID());
Unit* target=NULL;
m_target->CastSpell(m_target, GetModifier()->m_amount, true, NULL, NULL, GetCasterGUID());
return;
}
break;
+2 -3
View File
@@ -603,9 +603,8 @@ enum ProcFlagsEx
PROC_EX_ABSORB = 0x0000400,
PROC_EX_REFLECT = 0x0000800,
PROC_EX_INTERRUPT = 0x0001000, // Melee hit result can be Interrupt (not used)
PROC_EX_AURA_REMOVE = 0x0002000,
PROC_EX_RESERVED2 = 0x0004000,
PROC_EX_RESERVED3 = 0x0008000,
PROC_EX_AURA_REMOVE_DISPEL = 0x0002000,
PROC_EX_AURA_REMOVE_EXPIRE = 0x0004000,
PROC_EX_EX_TRIGGER_ALWAYS = 0x0010000, // If set trigger always ( no matter another flags) used for drop charges
PROC_EX_EX_ONE_TIME_TRIGGER = 0x0020000 // If set trigger always but only one time (not used)
};
+12 -1
View File
@@ -2181,7 +2181,7 @@ void Unit::CalcAbsorbResist(Unit *pVictim,SpellSchoolMask schoolMask, DamageEffe
{
if ((*i)->GetModifier()->m_amount<=0)
{
pVictim->RemoveAurasDueToSpell((*i)->GetId());
pVictim->RemoveAurasByCasterSpell((*i)->GetId(), (*i)->GetCasterGUID());
i = vSchoolAbsorb.begin();
}
else
@@ -5376,6 +5376,17 @@ bool Unit::HandleDummyAuraProc(Unit *pVictim, uint32 damage, Aura* triggeredByAu
triggered_spell_id = 29077;
break;
}
// Shattered Barrier
if (dummySpell->SpellIconID == 2945)
{
// only on dispel/remove aura by sestroy
if (procEx & PROC_EX_AURA_REMOVE_EXPIRE && damage)
return false;
target = NULL;
triggered_spell_id = 55080;
CastSpell(target, triggered_spell_id, true);
return true;
}
// Hot Streak
if (dummySpell->SpellIconID == 2999)
{