diff --git a/src/game/SpellAuraDefines.h b/src/game/SpellAuraDefines.h index 1e163bbdb..288645d17 100644 --- a/src/game/SpellAuraDefines.h +++ b/src/game/SpellAuraDefines.h @@ -294,7 +294,7 @@ enum AuraType SPELL_AURA_NO_REAGENT_USE = 256, SPELL_AURA_MOD_TARGET_RESIST_BY_SPELL_CLASS = 257, SPELL_AURA_258 = 258, - SPELL_AURA_259 = 259, + SPELL_AURA_MOD_PERIODIC_HEAL = 259, SPELL_AURA_SCREEN_EFFECT = 260, SPELL_AURA_PHASE = 261, SPELL_AURA_IGNORE_UNIT_STATE = 262, diff --git a/src/game/SpellAuras.cpp b/src/game/SpellAuras.cpp index 1559ba0c9..f21ca737a 100644 --- a/src/game/SpellAuras.cpp +++ b/src/game/SpellAuras.cpp @@ -309,7 +309,7 @@ pAuraHandler AuraHandler[TOTAL_AURAS]= &Aura::HandleNoReagentUseAura, //256 SPELL_AURA_NO_REAGENT_USE Use SpellClassMask for spell select &Aura::HandleNULL, //257 SPELL_AURA_MOD_TARGET_RESIST_BY_SPELL_CLASS Use SpellClassMask for spell select &Aura::HandleNULL, //258 SPELL_AURA_MOD_SPELL_VISUAL - &Aura::HandleNULL, //259 corrupt healing over time spell + &Aura::HandleNoImmediateEffect, //259 SPELL_AURA_MOD_PERIODIC_HEAL implemented in Unit::SpellHealingBonus &Aura::HandleNoImmediateEffect, //260 SPELL_AURA_SCREEN_EFFECT (miscvalue = id in ScreenEffect.dbc) not required any code &Aura::HandlePhase, //261 SPELL_AURA_PHASE undetectable invisibility? implemented in Unit::isVisibleForOrDetect &Aura::HandleNoImmediateEffect, //262 SPELL_AURA_IGNORE_UNIT_STATE implemented in Unit::isIgnoreUnitState & Spell::CheckCast diff --git a/src/game/Unit.cpp b/src/game/Unit.cpp index e0959f836..727567637 100644 --- a/src/game/Unit.cpp +++ b/src/game/Unit.cpp @@ -6949,11 +6949,18 @@ uint32 Unit::SpellHealingBonusTaken(Unit *pCaster, SpellEntry const *spellProto, // Healing taken percent float minval = float(GetMaxNegativeAuraModifier(SPELL_AURA_MOD_HEALING_PCT)); - if(minval) + if (damagetype == DOT) + { + // overwrite max SPELL_AURA_MOD_HEALING_PCT if greater negative effect + float minDotVal = float(GetMaxNegativeAuraModifier(SPELL_AURA_MOD_PERIODIC_HEAL)); + minval = (minDotVal < minval) ? minDotVal : minval; + } + if (minval) TakenTotalMod *= (100.0f + minval) / 100.0f; float maxval = float(GetMaxPositiveAuraModifier(SPELL_AURA_MOD_HEALING_PCT)); - if(maxval) + // no SPELL_AURA_MOD_PERIODIC_HEAL positive cases + if (maxval) TakenTotalMod *= (100.0f + maxval) / 100.0f; // No heal amount for this class spells diff --git a/src/shared/revision_nr.h b/src/shared/revision_nr.h index 9d9db0cbd..54a254606 100644 --- a/src/shared/revision_nr.h +++ b/src/shared/revision_nr.h @@ -1,4 +1,4 @@ #ifndef __REVISION_NR_H__ #define __REVISION_NR_H__ - #define REVISION_NR "10764" + #define REVISION_NR "10765" #endif // __REVISION_NR_H__