feat: Adds reflect damage ability. Fixes magical barrier (#1184)
This commit is contained in:
parent
3c5e9eaec9
commit
2806e5d4b7
5 changed files with 86 additions and 64 deletions
|
|
@ -194,24 +194,35 @@ namespace Server
|
|||
totalDamage = m.Hits;
|
||||
}
|
||||
|
||||
var bcFrom = from as BaseCreature;
|
||||
|
||||
if (from is { Deleted: false, Alive: true })
|
||||
{
|
||||
var reflectPhys = AosAttributes.GetValue(m, AosAttribute.ReflectPhysical);
|
||||
var reflectPhysAbility = bcFrom?.GetAbility(MonsterAbilityType.ReflectPhysicalDamage) as ReflectPhysicalDamage;
|
||||
|
||||
if (reflectPhys != 0 && from is BaseCreature bcFrom)
|
||||
if (reflectPhysAbility
|
||||
?.CanTrigger(bcFrom, MonsterAbilityTrigger.CombatAction) == true)
|
||||
{
|
||||
var magicalBarrier = bcFrom.GetAbility(MonsterAbilityType.MagicalBarrier);
|
||||
magicalBarrier.AlterMeleeDamageFrom(bcFrom, m, ref reflectPhys);
|
||||
reflectPhys += reflectPhysAbility.PercentReflected;
|
||||
m.SendLocalizedMessage(1070844); // The creature repels the attack back at you.
|
||||
}
|
||||
|
||||
if (reflectPhys != 0)
|
||||
if (reflectPhys > 0)
|
||||
{
|
||||
var reflectDamage = Scale(
|
||||
damage * phys * (100 - (ignoreArmor ? 0 : m.PhysicalResistance)) / 10000,
|
||||
reflectPhys
|
||||
);
|
||||
|
||||
from.Damage(reflectDamage, m);
|
||||
bcFrom
|
||||
?.GetAbility(MonsterAbilityType.MagicalBarrier)
|
||||
?.AlterMeleeDamageFrom(bcFrom, m, ref reflectDamage);
|
||||
|
||||
if (reflectDamage > 0)
|
||||
{
|
||||
from.Damage(reflectDamage, m);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue