ModernUO/Projects/UOContent/Mobiles/Abilities/MonsterAbilitySingleTarget.cs

24 lines
839 B
C#

namespace Server.Mobiles;
public abstract class MonsterAbilitySingleTarget : MonsterAbility
{
public override void Trigger(MonsterAbilityTrigger trigger, BaseCreature source, Mobile target)
{
if (CanEffectTarget(trigger, source, target))
{
OnBeforeTarget(trigger, source, target);
OnTarget(trigger, source, target);
}
base.Trigger(trigger, source, target);
}
protected virtual void OnBeforeTarget(MonsterAbilityTrigger trigger, BaseCreature source, Mobile defender)
{
}
protected abstract void OnTarget(MonsterAbilityTrigger trigger, BaseCreature source, Mobile defender);
protected virtual bool CanEffectTarget(MonsterAbilityTrigger trigger, BaseCreature source, Mobile defender) =>
defender.Alive && source.CanBeHarmful(defender);
}