RiftMayhem/Assets/Scripts/EntityBroker/DodgeInterceptor.cs

44 lines
1006 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)
{
if (args.currentValue >= 0) return;
if (args.applicationMethod == EffectApplicationMethod.Tick) return;
DodgeArgs dodgeArgs = CObjectPool<DodgeArgs>.Get();
dodgeArgs.user = user;
dodgeArgs.dodgedSuccessfully = false;
if (HasDodged())
{
Debug.Log("Dodged!");
dodgeArgs.dodgedSuccessfully = true;
args.currentValue = 0f;
}
broker.OnDodge.Invoke(dodgeArgs);
CObjectPool<DodgeArgs>.Release(dodgeArgs);
}
protected bool HasDodged()
{
return MathHelpers.RollChancePercent(stats.GetStat("dodgechance").Value);
}
}