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