aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKeader <keader.android@gmail.com>2019-08-15 10:46:23 -0300
committerKeader <keader.android@gmail.com>2019-08-15 10:46:23 -0300
commit43c08b176115505b76c027667047f9a5bfcc4e11 (patch)
tree89107b9a396ced67230e18dc972ebcae86baf32e
parentf7793e78000389315d53b22fb4e117d512c5a4d6 (diff)
Core/Spells: Fixed some issues with Drain Soul
Issue 1: Drain soul was always negative, but effect2 need be positive. Issue 2: Drain soul was interrupted if someone in your group die. Caused by negative effects proccing in creature. Issue 3: Since effect2 is positive, it was down-ranking in low level targets and should never happens (fixed before by ariel, transforming everything in negative in 2c8a6fb771a42169a1817149ab0a2a19912ebea7 but it's wrong) #MakeWarlockAfflictionGreatAgain
-rw-r--r--sql/updates/world/3.3.5/2019_08_15_00_world.sql3
-rw-r--r--src/server/game/Spells/SpellInfo.cpp4
2 files changed, 5 insertions, 2 deletions
diff --git a/sql/updates/world/3.3.5/2019_08_15_00_world.sql b/sql/updates/world/3.3.5/2019_08_15_00_world.sql
new file mode 100644
index 00000000000..a15c00b4e93
--- /dev/null
+++ b/sql/updates/world/3.3.5/2019_08_15_00_world.sql
@@ -0,0 +1,3 @@
+-- Drain Soul
+-- Disable Proc of Effect0 and Effect1
+UPDATE `spell_proc` SET `AttributesMask`=`AttributesMask`|48 WHERE `SpellId`=-1120;
diff --git a/src/server/game/Spells/SpellInfo.cpp b/src/server/game/Spells/SpellInfo.cpp
index 9a3e8bc445b..f5c6f1d9f25 100644
--- a/src/server/game/Spells/SpellInfo.cpp
+++ b/src/server/game/Spells/SpellInfo.cpp
@@ -3278,7 +3278,7 @@ SpellInfo const* SpellInfo::GetAuraRankForLevel(uint8 level) const
return this;
// Client ignores spell with these attributes (sub_53D9D0)
- if (HasAttribute(SPELL_ATTR0_NEGATIVE_1) || HasAttribute(SPELL_ATTR2_UNK3))
+ if (HasAttribute(SPELL_ATTR0_NEGATIVE_1) || HasAttribute(SPELL_ATTR2_UNK3) || HasAttribute(SPELL_ATTR3_DRAIN_SOUL))
return this;
bool needRankSelection = false;
@@ -3511,7 +3511,6 @@ bool _isPositiveEffectImpl(SpellInfo const* spellInfo, uint8 effIndex, std::unor
case SPELL_AURA_MOD_UNATTACKABLE:
return true;
case SPELL_AURA_SCHOOL_HEAL_ABSORB:
- case SPELL_AURA_CHANNEL_DEATH_ITEM:
case SPELL_AURA_EMPATHY:
case SPELL_AURA_MOD_DAMAGE_FROM_CASTER:
case SPELL_AURA_PREVENTS_FLEEING:
@@ -3715,6 +3714,7 @@ bool _isPositiveEffectImpl(SpellInfo const* spellInfo, uint8 effIndex, std::unor
return false;
break;
case SPELL_AURA_MOD_CONFUSE:
+ case SPELL_AURA_CHANNEL_DEATH_ITEM:
case SPELL_AURA_MOD_ROOT:
case SPELL_AURA_MOD_SILENCE:
case SPELL_AURA_MOD_DETAUNT: