diff --git a/src/game/Unit.cpp b/src/game/Unit.cpp index 4bd7a60a5..858527566 100644 --- a/src/game/Unit.cpp +++ b/src/game/Unit.cpp @@ -9157,12 +9157,6 @@ uint32 Unit::SpellDamageBonusDone(Unit *pVictim, SpellEntry const *spellProto, u { float LvlPenalty = CalculateLevelPenalty(spellProto); - // Spellmod SpellDamage - float SpellModSpellDamage = 100.0f; - if(Player* modOwner = GetSpellModOwner()) - modOwner->ApplySpellMod(spellProto->Id,SPELLMOD_SPELL_BONUS_DAMAGE,SpellModSpellDamage); - SpellModSpellDamage /= 100.0f; - // Distribute Damage over multiple effects, reduce by AoE float coeff; @@ -9181,7 +9175,15 @@ uint32 Unit::SpellDamageBonusDone(Unit *pVictim, SpellEntry const *spellProto, u else coeff = CalculateDefaultCoefficient(spellProto, damagetype); - DoneTotal += int32(DoneAdvertisedBenefit * coeff * LvlPenalty * SpellModSpellDamage); + // Spellmod SpellDamage + if(Player* modOwner = GetSpellModOwner()) + { + coeff *= 100.0f; + modOwner->ApplySpellMod(spellProto->Id,SPELLMOD_SPELL_BONUS_DAMAGE, coeff); + coeff /= 100.0f; + } + + DoneTotal += int32(DoneAdvertisedBenefit * coeff * LvlPenalty); } float tmpDamage = (int32(pdamage) + DoneTotal * int32(stack)) * DoneTotalMod; @@ -9265,6 +9267,14 @@ uint32 Unit::SpellDamageBonusTaken(Unit *pCaster, SpellEntry const *spellProto, else coeff = CalculateDefaultCoefficient(spellProto, damagetype); + // Spellmod SpellDamage + if(Player* modOwner = pCaster->GetSpellModOwner()) + { + coeff *= 100.0f; + modOwner->ApplySpellMod(spellProto->Id,SPELLMOD_SPELL_BONUS_DAMAGE, coeff); + coeff /= 100.0f; + } + TakenTotal += int32(TakenAdvertisedBenefit * coeff * LvlPenalty); } @@ -9670,12 +9680,6 @@ uint32 Unit::SpellHealingBonusDone(Unit *pVictim, SpellEntry const *spellProto, { float LvlPenalty = CalculateLevelPenalty(spellProto); - // Spellmod SpellDamage - float SpellModSpellDamage = 100.0f; - if(Player* modOwner = GetSpellModOwner()) - modOwner->ApplySpellMod(spellProto->Id, SPELLMOD_SPELL_BONUS_DAMAGE, SpellModSpellDamage); - SpellModSpellDamage /= 100.0f; - // Distribute Damage over multiple effects, reduce by AoE float coeff; @@ -9694,7 +9698,15 @@ uint32 Unit::SpellHealingBonusDone(Unit *pVictim, SpellEntry const *spellProto, else coeff = CalculateDefaultCoefficient(spellProto, damagetype) * 1.88f; - DoneTotal += int32(DoneAdvertisedBenefit * coeff * LvlPenalty * SpellModSpellDamage); + // Spellmod SpellDamage + if(Player* modOwner = GetSpellModOwner()) + { + coeff *= 100.0f; + modOwner->ApplySpellMod(spellProto->Id,SPELLMOD_SPELL_BONUS_DAMAGE, coeff); + coeff /= 100.0f; + } + + DoneTotal += int32(DoneAdvertisedBenefit * coeff * LvlPenalty); } // use float as more appropriate for negative values and percent applying @@ -9754,6 +9766,14 @@ uint32 Unit::SpellHealingBonusTaken(Unit *pCaster, SpellEntry const *spellProto, else coeff = CalculateDefaultCoefficient(spellProto, damagetype) * 1.88f; + // Spellmod SpellDamage + if(Player* modOwner = pCaster->GetSpellModOwner()) + { + coeff *= 100.0f; + modOwner->ApplySpellMod(spellProto->Id,SPELLMOD_SPELL_BONUS_DAMAGE, coeff); + coeff /= 100.0f; + } + TakenTotal += int32(TakenAdvertisedBenefit * coeff * LvlPenalty); } @@ -10156,6 +10176,14 @@ uint32 Unit::MeleeDamageBonusDone(Unit *pVictim, uint32 pdamage,WeaponAttackType else if (DoneFlat) coeff = CalculateDefaultCoefficient(spellProto, damagetype); + // Spellmod SpellDamage + if(Player* modOwner = GetSpellModOwner()) + { + coeff *= 100.0f; + modOwner->ApplySpellMod(spellProto->Id,SPELLMOD_SPELL_BONUS_DAMAGE, coeff); + coeff /= 100.0f; + } + DoneTotal += DoneFlat * coeff * LvlPenalty; } // weapon damage based spells @@ -10300,6 +10328,14 @@ uint32 Unit::MeleeDamageBonusTaken(Unit *pCaster, uint32 pdamage,WeaponAttackTyp else if (TakenFlat) coeff = CalculateDefaultCoefficient(spellProto, damagetype); + // Spellmod SpellDamage + if(Player* modOwner = pCaster->GetSpellModOwner()) + { + coeff *= 100.0f; + modOwner->ApplySpellMod(spellProto->Id,SPELLMOD_SPELL_BONUS_DAMAGE, coeff); + coeff /= 100.0f; + } + TakenFlat *= coeff * LvlPenalty; } } diff --git a/src/shared/revision_nr.h b/src/shared/revision_nr.h index dcfcb3829..0a4b5f893 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 "9899" + #define REVISION_NR "9900" #endif // __REVISION_NR_H__