aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/game/Spell.cpp2
-rw-r--r--src/game/SpellAuras.cpp2
-rw-r--r--src/game/Unit.cpp4
3 files changed, 6 insertions, 2 deletions
diff --git a/src/game/Spell.cpp b/src/game/Spell.cpp
index 108453d0b27..fcacdccbe18 100644
--- a/src/game/Spell.cpp
+++ b/src/game/Spell.cpp
@@ -781,7 +781,7 @@ void Spell::prepareDataForTriggerSystem(AuraEffect * triggeredByAura)
break;
default:
if (m_spellInfo->EquippedItemClass == ITEM_CLASS_WEAPON &&
- m_spellInfo->EquippedItemSubClassMask & ITEM_SUBCLASS_WEAPON_WAND
+ m_spellInfo->EquippedItemSubClassMask & (1<<ITEM_SUBCLASS_WEAPON_WAND)
&& m_spellInfo->AttributesEx2 & SPELL_ATTR_EX2_AUTOREPEAT_FLAG) // Wands auto attack
{
m_procAttacker = PROC_FLAG_SUCCESSFUL_RANGED_HIT;
diff --git a/src/game/SpellAuras.cpp b/src/game/SpellAuras.cpp
index 32b12cf76e2..4f84364c303 100644
--- a/src/game/SpellAuras.cpp
+++ b/src/game/SpellAuras.cpp
@@ -7433,7 +7433,7 @@ void AuraEffect::HandleReflectSpells( bool Apply, bool Real , bool /*changeAmoun
if (Unit * caster = GetCaster())
{
// Improved Spell Reflection
- if (caster->GetDummyAura(SPELLFAMILY_WARRIOR,1935, 0))
+ if (caster->GetDummyAura(SPELLFAMILY_WARRIOR,1935, 1))
{
// aura remove - remove auras from all party members
std::list<Unit*> PartyMembers;
diff --git a/src/game/Unit.cpp b/src/game/Unit.cpp
index 696c17fba86..e55b54996f0 100644
--- a/src/game/Unit.cpp
+++ b/src/game/Unit.cpp
@@ -12819,6 +12819,10 @@ void Unit::ProcDamageAndSpellFor( bool isVictim, Unit * pTarget, uint32 procFlag
case SPELL_AURA_MOD_ROOT:
if (isVictim && damage)
{
+ // Damage is dealt after proc system - lets ignore auras which wasn't updated yet
+ // to make spell not remove its own aura
+ if (i->aura->GetAuraDuration() == i->aura->GetAuraMaxDuration())
+ break;
int32 damageLeft = triggeredByAura->GetAmount();
// No damage left
if (damageLeft < damage )