Core/Creature: Implemented sparring with max health percent thresholds

Port From (https://github.com/TrinityCore/TrinityCore/commit/0750b7f8455df39a64462636ca296c6f2aa2b048)
This commit is contained in:
hondacrx
2023-04-25 08:38:55 -04:00
parent 9d4be0003b
commit bd2eb5baab
9 changed files with 138 additions and 3 deletions
+13
View File
@@ -2489,6 +2489,11 @@ namespace Game.Entities
{
uint tmpDamage = damageTaken;
// sparring
Creature victimCreature = victim.ToCreature();
if (victimCreature != null)
tmpDamage = victimCreature.CalculateDamageForSparring(attacker, tmpDamage);
victim.GetAI()?.DamageTaken(attacker, ref tmpDamage, damagetype, spellProto);
attacker?.GetAI()?.DamageDealt(victim, ref tmpDamage, damagetype);
@@ -3652,6 +3657,14 @@ namespace Game.Entities
uint split_absorb = 0;
DealDamageMods(damageInfo.GetAttacker(), caster, ref splitDamage, ref split_absorb);
// sparring
Creature victimCreature = damageInfo.GetVictim().ToCreature();
if (victimCreature != null)
{
if (victimCreature.ShouldFakeDamageFrom(damageInfo.GetAttacker()))
damageInfo.ModifyDamage((int)(damageInfo.GetDamage() * -1));
}
SpellNonMeleeDamage log = new(damageInfo.GetAttacker(), caster, itr.GetSpellInfo(), itr.GetBase().GetSpellVisual(), damageInfo.GetSchoolMask(), itr.GetBase().GetCastId());
CleanDamage cleanDamage = new(splitDamage, 0, WeaponAttackType.BaseAttack, MeleeHitOutcome.Normal);
DealDamage(damageInfo.GetAttacker(), caster, splitDamage, cleanDamage, DamageEffectType.Direct, damageInfo.GetSchoolMask(), itr.GetSpellInfo(), false);