39 lines
817 B
C#
39 lines
817 B
C#
using Kryz.CharacterStats.Examples;
|
|
using UnityEngine;
|
|
|
|
public class DodgeInterceptor : BrokerInterceptor
|
|
{
|
|
protected override void Awake()
|
|
{
|
|
base.Awake();
|
|
|
|
broker.OnIncomingDamage.Subscribe(HandleDodge, GameConstants.BrokerEventPriority.Dodge);
|
|
}
|
|
|
|
private void HandleDodge(DamageArgs args)
|
|
{
|
|
DodgeArgs dodgeArgs = new DodgeArgs()
|
|
{
|
|
user = user,
|
|
dodgedSuccessfully = false
|
|
};
|
|
|
|
if (HasDodged())
|
|
{
|
|
Debug.Log("Dodged!");
|
|
|
|
|
|
dodgeArgs.dodgedSuccessfully = true;
|
|
|
|
args.currentValue = 0f;
|
|
}
|
|
|
|
broker.OnDodge.Invoke(dodgeArgs);
|
|
}
|
|
|
|
protected bool HasDodged()
|
|
{
|
|
return MathHelpers.RollChancePercent(stats.GetStat("dodgechance").Value);
|
|
}
|
|
}
|