diff options
author | Gildor <gildor55@gmail.com> | 2020-07-04 15:56:48 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2020-07-04 15:56:48 +0200 |
commit | 26ba4ecd5140fa13953ca7c3e1ab3f269a85ce71 (patch) | |
tree | 70f98135d3bda518345639aadcab71a6c99005ea | |
parent | 488fbb20fc94bca593d0764da00eb802271a7849 (diff) |
Core/Spells: Check a few aura effects for determining if should be negative (#24930)
* Core/Spells: Check a few aura effects for determining if should be negative
* Rename 9999_99_99_99_world_auras.sql to 2020_07_04_00_world.sql
Co-authored-by: Giacomo Pozzoni <giacomopoz@gmail.com>
-rw-r--r-- | sql/updates/world/3.3.5/2020_07_04_00_world.sql | 8 | ||||
-rw-r--r-- | src/server/game/Spells/SpellInfo.cpp | 22 |
2 files changed, 27 insertions, 3 deletions
diff --git a/sql/updates/world/3.3.5/2020_07_04_00_world.sql b/sql/updates/world/3.3.5/2020_07_04_00_world.sql new file mode 100644 index 00000000000..22e80936fa5 --- /dev/null +++ b/sql/updates/world/3.3.5/2020_07_04_00_world.sql @@ -0,0 +1,8 @@ +-- +-- Baron Geddon: Ignite Mana isn't needed +DELETE FROM `spell_custom_attr` WHERE `entry`=19659; + +-- Mana-Tombs: Death Coil must be negative +DELETE FROM `spell_custom_attr` WHERE `entry`=38065; +INSERT INTO `spell_custom_attr` (`entry`,`attributes`) VALUES +(38065,8192); diff --git a/src/server/game/Spells/SpellInfo.cpp b/src/server/game/Spells/SpellInfo.cpp index a489ff9b60b..5e227bca7cc 100644 --- a/src/server/game/Spells/SpellInfo.cpp +++ b/src/server/game/Spells/SpellInfo.cpp @@ -3607,8 +3607,7 @@ bool _isPositiveEffectImpl(SpellInfo const* spellInfo, uint8 effIndex, std::unor // non-positive aura use switch (spellInfo->Effects[effIndex].ApplyAuraName) { - case SPELL_AURA_MOD_DAMAGE_DONE: // dependent from basepoint sign (negative -> negative) - case SPELL_AURA_MOD_STAT: + case SPELL_AURA_MOD_STAT: // dependent from basepoint sign (negative -> negative) case SPELL_AURA_MOD_SKILL: case SPELL_AURA_MOD_DODGE_PERCENT: case SPELL_AURA_MOD_HEALING_PCT: @@ -3624,18 +3623,22 @@ bool _isPositiveEffectImpl(SpellInfo const* spellInfo, uint8 effIndex, std::unor case SPELL_AURA_MOD_MELEE_RANGED_HASTE: case SPELL_AURA_MOD_CASTING_SPEED_NOT_STACK: case SPELL_AURA_HASTE_SPELLS: - case SPELL_AURA_MOD_RESISTANCE: case SPELL_AURA_MOD_RESISTANCE_EXCLUSIVE: case SPELL_AURA_MOD_DETECT_RANGE: case SPELL_AURA_MOD_INCREASE_HEALTH_PERCENT: case SPELL_AURA_MOD_TOTAL_STAT_PERCENTAGE: case SPELL_AURA_MOD_INCREASE_SWIM_SPEED: + case SPELL_AURA_MOD_PERCENT_STAT: + case SPELL_AURA_MOD_INCREASE_HEALTH: + case SPELL_AURA_MOD_SPEED_ALWAYS: if (bp < 0 || bpScalePerLevel < 0) //TODO: What if both are 0? Should it be a buff or debuff? return false; break; case SPELL_AURA_MOD_ATTACKSPEED: // some buffs have negative bp, check both target and bp case SPELL_AURA_MOD_MELEE_HASTE: case SPELL_AURA_HASTE_RANGED: + case SPELL_AURA_MOD_DAMAGE_DONE: + case SPELL_AURA_MOD_RESISTANCE: case SPELL_AURA_MOD_RESISTANCE_PCT: case SPELL_AURA_MOD_RATING: case SPELL_AURA_MOD_ATTACK_POWER: @@ -3644,6 +3647,7 @@ bool _isPositiveEffectImpl(SpellInfo const* spellInfo, uint8 effIndex, std::unor case SPELL_AURA_MOD_SPEED_SLOW_ALL: case SPELL_AURA_MELEE_SLOW: case SPELL_AURA_MOD_ATTACK_POWER_PCT: + case SPELL_AURA_MOD_HEALING_DONE_PERCENT: if (!_isPositiveTarget(spellInfo, effIndex) || bp < 0) return false; break; @@ -3722,6 +3726,18 @@ bool _isPositiveEffectImpl(SpellInfo const* spellInfo, uint8 effIndex, std::unor case SPELL_AURA_DUMMY: case SPELL_AURA_PERIODIC_DUMMY: case SPELL_AURA_MOD_HEALING: + case SPELL_AURA_MOD_WEAPON_CRIT_PERCENT: + case SPELL_AURA_POWER_BURN: + case SPELL_AURA_MOD_COOLDOWN: + case SPELL_AURA_MOD_INCREASE_SPEED: + case SPELL_AURA_MOD_PARRY_PERCENT: + case SPELL_AURA_SET_VEHICLE_ID: + case SPELL_AURA_PERIODIC_ENERGIZE: + case SPELL_AURA_EFFECT_IMMUNITY: + case SPELL_AURA_OVERRIDE_CLASS_SCRIPTS: + case SPELL_AURA_MOD_SHAPESHIFT: + case SPELL_AURA_MOD_THREAT: + case SPELL_AURA_PROC_TRIGGER_SPELL_WITH_VALUE: // check target for positive and negative spells if (!_isPositiveTarget(spellInfo, effIndex)) return false; |