Core/Misc: Fixed resistance calculate for Mutated Transformation and Twilight Bloodbolt

Port From (https://github.com/TrinityCore/TrinityCore/commit/4110a06e8193329c31cb9d59d346294835fd51a5)
This commit is contained in:
hondacrx
2022-02-22 20:11:11 -05:00
parent bc52ff717a
commit 19abbbf0b5
6 changed files with 59 additions and 14 deletions
+2 -2
View File
@@ -1925,7 +1925,7 @@ namespace Game.Entities
}
}
public void CalculateSpellDamageTaken(SpellNonMeleeDamage damageInfo, int damage, SpellInfo spellInfo, WeaponAttackType attackType = WeaponAttackType.BaseAttack, bool crit = false)
public void CalculateSpellDamageTaken(SpellNonMeleeDamage damageInfo, int damage, SpellInfo spellInfo, WeaponAttackType attackType = WeaponAttackType.BaseAttack, bool crit = false, Spell spell = null)
{
if (damage < 0)
return;
@@ -2032,7 +2032,7 @@ namespace Game.Entities
damageInfo.damage = (uint)damage;
damageInfo.originalDamage = (uint)damage;
DamageInfo dmgInfo = new(damageInfo, DamageEffectType.SpellDirect, WeaponAttackType.BaseAttack, ProcFlagsHit.None);
CalcAbsorbResist(dmgInfo);
CalcAbsorbResist(dmgInfo, spell);
damageInfo.absorb = dmgInfo.GetAbsorb();
damageInfo.resist = dmgInfo.GetResist();
+6 -3
View File
@@ -1982,7 +1982,7 @@ namespace Game.Entities
else
{
var raceEntry = CliDB.ChrRacesStorage.LookupByKey(GetRace());
return raceEntry.CreatureType;
return (CreatureType)raceEntry.CreatureType;
}
}
else
@@ -3282,13 +3282,12 @@ namespace Game.Entities
return victimResistance / (victimResistance + resistanceConstant);
}
public static void CalcAbsorbResist(DamageInfo damageInfo)
public static void CalcAbsorbResist(DamageInfo damageInfo, Spell spell = null)
{
if (!damageInfo.GetVictim() || !damageInfo.GetVictim().IsAlive() || damageInfo.GetDamage() == 0)
return;
uint resistedDamage = CalcSpellResistedDamage(damageInfo.GetAttacker(), damageInfo.GetVictim(), damageInfo.GetDamage(), damageInfo.GetSchoolMask(), damageInfo.GetSpellInfo());
damageInfo.ResistDamage(resistedDamage);
// Ignore Absorption Auras
float auraAbsorbMod = 0f;
@@ -3300,6 +3299,10 @@ namespace Game.Entities
MathFunctions.RoundToInterval(ref auraAbsorbMod, 0.0f, 100.0f);
int absorbIgnoringDamage = (int)MathFunctions.CalculatePct(damageInfo.GetDamage(), auraAbsorbMod);
if (spell != null)
spell.CallScriptOnResistAbsorbCalculateHandlers(damageInfo, ref resistedDamage, ref absorbIgnoringDamage);
damageInfo.ResistDamage(resistedDamage);
damageInfo.ModifyDamage(-absorbIgnoringDamage);
// We're going to call functions which can modify content of the list during iteration over it's elements