mirror of
https://github.com/mangosfour/server.git
synced 2025-12-12 10:37:03 +00:00
[9900] Fix SPELL_MOD_SPELL_BONUS_DAMAGE applying
Signed-off-by: Laise <fenrisse@gmail.com>
This commit is contained in:
parent
3424dbf1fa
commit
9fb36ed021
2 changed files with 51 additions and 15 deletions
|
|
@ -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;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
#ifndef __REVISION_NR_H__
|
||||
#define __REVISION_NR_H__
|
||||
#define REVISION_NR "9899"
|
||||
#define REVISION_NR "9900"
|
||||
#endif // __REVISION_NR_H__
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue