diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/game/SharedDefines.h | 2 | ||||
-rw-r--r-- | src/game/Spell.cpp | 3 | ||||
-rw-r--r-- | src/game/SpellAuras.cpp | 2 | ||||
-rw-r--r-- | src/game/SpellEffects.cpp | 2 | ||||
-rw-r--r-- | src/game/Unit.cpp | 2 | ||||
-rw-r--r-- | src/game/Unit.h | 2 |
6 files changed, 7 insertions, 6 deletions
diff --git a/src/game/SharedDefines.h b/src/game/SharedDefines.h index 68a4288003b..78c61dd061c 100644 --- a/src/game/SharedDefines.h +++ b/src/game/SharedDefines.h @@ -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 diff --git a/src/game/Spell.cpp b/src/game/Spell.cpp index a461d49a554..70d152b9e5b 100644 --- a/src/game/Spell.cpp +++ b/src/game/Spell.cpp @@ -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 diff --git a/src/game/SpellAuras.cpp b/src/game/SpellAuras.cpp index 39508a6c382..5d0e03818d6 100644 --- a/src/game/SpellAuras.cpp +++ b/src/game/SpellAuras.cpp @@ -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()); } } diff --git a/src/game/SpellEffects.cpp b/src/game/SpellEffects.cpp index 2fbd4a3ade1..fe7a3b3a68c 100644 --- a/src/game/SpellEffects.cpp +++ b/src/game/SpellEffects.cpp @@ -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()); diff --git a/src/game/Unit.cpp b/src/game/Unit.cpp index e381f41ef13..efdff7d7540 100644 --- a/src/game/Unit.cpp +++ b/src/game/Unit.cpp @@ -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 diff --git a/src/game/Unit.h b/src/game/Unit.h index 64aeafaeed4..3db7573a8b2 100644 --- a/src/game/Unit.h +++ b/src/game/Unit.h @@ -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 |