diff options
| author | ariel- <ariel-@users.noreply.github.com> | 2017-04-13 03:18:20 -0300 |
|---|---|---|
| committer | funjoker <funjoker109@gmail.com> | 2020-04-27 12:25:52 +0200 |
| commit | f31e380499b9ecceca9e86b1ee55eb29c7f87c88 (patch) | |
| tree | 43df53494683d1b1fbedeb9b200dace09d653dfa /src/server/game/Entities/Unit | |
| parent | 296abf3e1229ea477fa5e266a6375c4a970f6300 (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.cpp | 7 | ||||
| -rw-r--r-- | src/server/game/Entities/Unit/Unit.h | 2 |
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(); |
