diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/game/Spell.cpp | 8 | ||||
-rw-r--r-- | src/game/SpellEffects.cpp | 5 |
2 files changed, 8 insertions, 5 deletions
diff --git a/src/game/Spell.cpp b/src/game/Spell.cpp index 2f0225e67ab..656eb106152 100644 --- a/src/game/Spell.cpp +++ b/src/game/Spell.cpp @@ -825,7 +825,7 @@ void Spell::prepareDataForTriggerSystem(AuraEffect * triggeredByAura) Effects which are result of aura proc from triggered spell cannot proc to prevent chain proc of these spells */ - if ((triggeredByAura && !triggeredByAura->GetParentAura()->GetTarget()->CanProc()) || !m_caster->CanProc()) + if ((triggeredByAura && !triggeredByAura->GetParentAura()->GetTarget()->CanProc())) { m_canTrigger=false; } @@ -833,6 +833,8 @@ void Spell::prepareDataForTriggerSystem(AuraEffect * triggeredByAura) if (m_IsTriggeredSpell && (m_spellInfo->AttributesEx2 & SPELL_ATTR_EX2_TRIGGERED_CAN_TRIGGER || m_spellInfo->AttributesEx3 & SPELL_ATTR_EX3_TRIGGERED_CAN_TRIGGER_2)) + m_procEx |= PROC_EX_INTERNAL_CANT_PROC; + else if (m_IsTriggeredSpell) m_procEx |= PROC_EX_INTERNAL_TRIGGERED; // Totem casts require spellfamilymask defined in spell_proc_event to proc @@ -850,8 +852,6 @@ void Spell::prepareDataForTriggerSystem(AuraEffect * triggeredByAura) m_canTrigger=false; } } - if (m_IsTriggeredSpell || triggeredByAura) - m_procEx |= PROC_EX_INTERNAL_CANT_PROC; } void Spell::CleanupTargetList() @@ -1401,7 +1401,7 @@ void Spell::DoTriggersOnSpellHit(Unit *unit) if(roll_chance_i(i->second)) { m_caster->CastSpell(unit, i->first, true); - sLog.outDebug("Spell %d triggered spell %d by SPELL_AURA_ADD_TARGET_TRIGGER aura", m_spellInfo->Id, i->first); + sLog.outDebug("Spell %d triggered spell %d by SPELL_AURA_ADD_TARGET_TRIGGER aura", m_spellInfo->Id, i->first->Id); } if (GetSpellDuration(i->first)==-1) { diff --git a/src/game/SpellEffects.cpp b/src/game/SpellEffects.cpp index 6c261c586c3..38752a68371 100644 --- a/src/game/SpellEffects.cpp +++ b/src/game/SpellEffects.cpp @@ -315,6 +315,8 @@ void Spell::EffectSchoolDMG(uint32 effect_idx) void Spell::SpellDamageSchoolDmg(uint32 effect_idx) { + bool apply_direct_bonus=true; + if( unitTarget && unitTarget->isAlive()) { switch(m_spellInfo->SpellFamilyName) @@ -486,6 +488,7 @@ void Spell::SpellDamageSchoolDmg(uint32 effect_idx) uint32 pdamage = (*i)->GetAmount() > 0 ? (*i)->GetAmount() : 0; pdamage = m_caster->SpellDamageBonus(unitTarget, (*i)->GetSpellProto(), pdamage, DOT, (*i)->GetParentAura()->GetStackAmount()); damage += pdamage * 4; // 4 ticks of 3 seconds = 12 secs + apply_direct_bonus = false; // Glyph of Conflagrate if (!m_caster->HasAura(56235)) unitTarget->RemoveAurasDueToSpell((*i)->GetId(), m_caster->GetGUID()); @@ -679,7 +682,7 @@ void Spell::SpellDamageSchoolDmg(uint32 effect_idx) } } - if(m_originalCaster && damage > 0) + if(m_originalCaster && damage > 0 && apply_direct_bonus) damage = m_originalCaster->SpellDamageBonus(unitTarget, m_spellInfo, (uint32)damage, SPELL_DIRECT_DAMAGE); m_damage += damage; |