aboutsummaryrefslogtreecommitdiff
path: root/src/server/game/Entities/Unit
diff options
context:
space:
mode:
authorariel- <ariel-@users.noreply.github.com>2017-04-13 03:18:20 -0300
committerfunjoker <funjoker109@gmail.com>2020-04-27 12:25:52 +0200
commitf31e380499b9ecceca9e86b1ee55eb29c7f87c88 (patch)
tree43df53494683d1b1fbedeb9b200dace09d653dfa /src/server/game/Entities/Unit
parent296abf3e1229ea477fa5e266a6375c4a970f6300 (diff)
Core/Spell: check aura positivity per effect on spell hit
- Fixes applying DR to positive effects, and changing duration of whole aura Closes #19447 (cherry picked from commit 232e631390a504b51d82a7b678b7cf26d49d182a)
Diffstat (limited to 'src/server/game/Entities/Unit')
-rw-r--r--src/server/game/Entities/Unit/Unit.cpp7
-rw-r--r--src/server/game/Entities/Unit/Unit.h2
2 files changed, 4 insertions, 5 deletions
diff --git a/src/server/game/Entities/Unit/Unit.cpp b/src/server/game/Entities/Unit/Unit.cpp
index 93ea45dc476..bb739265c0d 100644
--- a/src/server/game/Entities/Unit/Unit.cpp
+++ b/src/server/game/Entities/Unit/Unit.cpp
@@ -9208,11 +9208,11 @@ void Unit::IncrDiminishing(SpellInfo const* auraSpellInfo)
++diminish.hitCount;
}
-float Unit::ApplyDiminishingToDuration(SpellInfo const* auraSpellInfo, int32& duration, Unit* caster, DiminishingLevels previousLevel)
+bool Unit::ApplyDiminishingToDuration(SpellInfo const* auraSpellInfo, int32& duration, Unit* caster, DiminishingLevels previousLevel) const
{
DiminishingGroup const group = auraSpellInfo->GetDiminishingReturnsGroupForSpell();
if (duration == -1 || group == DIMINISHING_NONE)
- return 1.0f;
+ return true;
int32 const limitDuration = auraSpellInfo->GetDiminishingReturnsLimitDuration();
@@ -9232,7 +9232,6 @@ float Unit::ApplyDiminishingToDuration(SpellInfo const* auraSpellInfo, int32& du
}
float mod = 1.0f;
-
switch (group)
{
case DIMINISHING_TAUNT:
@@ -9289,7 +9288,7 @@ float Unit::ApplyDiminishingToDuration(SpellInfo const* auraSpellInfo, int32& du
}
duration = int32(duration * mod);
- return mod;
+ return (duration != 0);
}
void Unit::ApplyDiminishingAura(DiminishingGroup group, bool apply)
diff --git a/src/server/game/Entities/Unit/Unit.h b/src/server/game/Entities/Unit/Unit.h
index 70271f3023b..d0a246d6b90 100644
--- a/src/server/game/Entities/Unit/Unit.h
+++ b/src/server/game/Entities/Unit/Unit.h
@@ -948,7 +948,7 @@ class TC_GAME_API Unit : public WorldObject
DiminishingLevels GetDiminishing(DiminishingGroup group);
void IncrDiminishing(SpellInfo const* auraSpellInfo);
- float ApplyDiminishingToDuration(SpellInfo const* auraSpellInfo, int32& duration, Unit* caster, DiminishingLevels previousLevel);
+ bool ApplyDiminishingToDuration(SpellInfo const* auraSpellInfo, int32& duration, Unit* caster, DiminishingLevels previousLevel) const;
void ApplyDiminishingAura(DiminishingGroup group, bool apply);
void ClearDiminishings();