aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/game/SharedDefines.h2
-rw-r--r--src/game/Spell.cpp3
-rw-r--r--src/game/SpellAuras.cpp2
-rw-r--r--src/game/SpellEffects.cpp2
-rw-r--r--src/game/Unit.cpp2
-rw-r--r--src/game/Unit.h2
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