diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/game/SpellAuraDefines.h | 2 | ||||
-rw-r--r-- | src/game/SpellAuras.cpp | 2 | ||||
-rw-r--r-- | src/game/StatSystem.cpp | 3 | ||||
-rw-r--r-- | src/game/Unit.cpp | 12 |
4 files changed, 16 insertions, 3 deletions
diff --git a/src/game/SpellAuraDefines.h b/src/game/SpellAuraDefines.h index 80cf5dcbcdf..604a634953d 100644 --- a/src/game/SpellAuraDefines.h +++ b/src/game/SpellAuraDefines.h @@ -303,7 +303,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_HOT_PCT = 259, SPELL_AURA_SCREEN_EFFECT = 260, SPELL_AURA_PHASE = 261, SPELL_AURA_ABILITY_IGNORE_AURASTATE = 262, diff --git a/src/game/SpellAuras.cpp b/src/game/SpellAuras.cpp index d44101cf68e..41a1e9f5cfb 100644 --- a/src/game/SpellAuras.cpp +++ b/src/game/SpellAuras.cpp @@ -313,7 +313,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_HOT_PCT 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 undetactable invisibility? implemented in Unit::isVisibleForOrDetect &Aura::HandleNoImmediateEffect, //262 SPELL_AURA_ABILITY_IGNORE_AURASTATE implemented in spell::cancast diff --git a/src/game/StatSystem.cpp b/src/game/StatSystem.cpp index 798bf3299d0..df0e677f0c2 100644 --- a/src/game/StatSystem.cpp +++ b/src/game/StatSystem.cpp @@ -72,8 +72,9 @@ bool Player::UpdateStats(Stats stat) break; } + // Need update (exist AP from stat auras) - if (HasAuraTypeWithMiscvalue(SPELL_AURA_MOD_MEELE_ATTACK_POWER_OF_STAT_PERCENT, stat)) + if (HasAuraTypeWithMiscvalue(SPELL_AURA_MOD_ATTACK_POWER_OF_STAT_PERCENT, stat)) UpdateAttackPowerAndDamage(false); if (HasAuraTypeWithMiscvalue(SPELL_AURA_MOD_RANGED_ATTACK_POWER_OF_STAT_PERCENT, stat)) UpdateAttackPowerAndDamage(true); diff --git a/src/game/Unit.cpp b/src/game/Unit.cpp index 4cc5c532fc0..dad619bab86 100644 --- a/src/game/Unit.cpp +++ b/src/game/Unit.cpp @@ -8656,6 +8656,18 @@ uint32 Unit::SpellHealingBonus(Unit *pVictim, SpellEntry const *spellProto, uint if(maxval) TakenTotalMod *= (100.0f + maxval) / 100.0f; + if(damagetype==DOT) + { + // Healing over time taken percent + float minval_hot = GetMaxNegativeAuraModifier(SPELL_AURA_MOD_HOT_PCT); + if(minval_hot) + TakenTotalMod *= (100.0f + minval_hot) / 100.0f; + + float maxval_hot = GetMaxPositiveAuraModifier(SPELL_AURA_MOD_HOT_PCT); + if(maxval_hot) + TakenTotalMod *= (100.0f + maxval_hot) / 100.0f; + } + AuraList const& mHealingGet= pVictim->GetAurasByType(SPELL_AURA_MOD_HEALING_RECEIVED); for(AuraList::const_iterator i = mHealingGet.begin(); i != mHealingGet.end(); ++i) if (GetGUID()==(*i)->GetCasterGUID() && (*i)->isAffectedOnSpell(spellProto) ) |