diff --git a/sql/updates/2687_world.sql b/sql/updates/2687_world.sql new file mode 100644 index 0000000000..a36a0ddf11 --- /dev/null +++ b/sql/updates/2687_world.sql @@ -0,0 +1,4 @@ +DELETE FROM `spell_proc_event` WHERE `entry` IN (44545, 44543); +INSERT INTO `spell_proc_event` VALUES +(44545, 0x00, 3, 1049120, 4096, 0, 65536, 0x0000000, 0.000000, 15.000000, 0), +(44543, 0x00, 3, 1049120, 4096, 0, 65536, 0x0000000, 0.000000, 7.000000, 0), diff --git a/src/game/SpellAuras.cpp b/src/game/SpellAuras.cpp index 3c427706d1..5479ea7f7c 100644 --- a/src/game/SpellAuras.cpp +++ b/src/game/SpellAuras.cpp @@ -426,24 +426,22 @@ m_auraSlot(MAX_AURAS), m_auraLevel(1), m_procCharges(0), m_stackAmount(1),m_aura // Aura is positive when it is casted by friend and at least one aura is positive // or when it is casted by enemy and at least one aura is negative bool swap=false; - if (!caster || caster==target) - m_positive=IsPositiveSpell(m_spellProto->Id); + if (!caster || caster==target) // caster == target - 1 negative effect is enough for aura to be negative + m_positive = false; else - { m_positive = !caster->IsHostileTo(m_target); - for (uint8 i=0;i positive) if(spellproto->CalculateSimpleValue(effIndex) > 0) - return false; + { + if (!deep) + { + bool negative = true; + for (uint8 i=0;i