diff options
-rw-r--r-- | src/server/game/Spells/SpellInfo.cpp | 25 |
1 files changed, 20 insertions, 5 deletions
diff --git a/src/server/game/Spells/SpellInfo.cpp b/src/server/game/Spells/SpellInfo.cpp index 2be70977ad9..65d5349c6fb 100644 --- a/src/server/game/Spells/SpellInfo.cpp +++ b/src/server/game/Spells/SpellInfo.cpp @@ -4561,8 +4561,7 @@ bool _isPositiveEffectImpl(SpellInfo const* spellInfo, SpellEffectInfo const& ef // non-positive aura use switch (effect.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_SKILL_2: case SPELL_AURA_MOD_DODGE_PERCENT: @@ -4579,17 +4578,21 @@ bool _isPositiveEffectImpl(SpellInfo const* spellInfo, SpellEffectInfo const& ef 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_RECOVERY_RATE_BY_SPELL_LABEL: 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_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: @@ -4598,14 +4601,13 @@ bool _isPositiveEffectImpl(SpellInfo const* spellInfo, SpellEffectInfo const& ef 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(effect) || bp < 0) return false; break; case SPELL_AURA_MOD_DAMAGE_TAKEN: // dependent from basepoint sign (positive -> negative) case SPELL_AURA_MOD_MELEE_DAMAGE_TAKEN: case SPELL_AURA_MOD_MELEE_DAMAGE_TAKEN_PCT: - case SPELL_AURA_MOD_COOLDOWN: - case SPELL_AURA_MOD_CHARGE_COOLDOWN: case SPELL_AURA_MOD_POWER_COST_SCHOOL: case SPELL_AURA_MOD_POWER_COST_SCHOOL_PCT: case SPELL_AURA_MOD_MECHANIC_DAMAGE_TAKEN_PERCENT: @@ -4674,6 +4676,19 @@ bool _isPositiveEffectImpl(SpellInfo const* spellInfo, SpellEffectInfo const& ef 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_CHARGE_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(effect)) return false; |