mirror of
https://github.com/tym1116/BH3.git
synced 2025-12-16 16:34:41 +01:00
61 lines
1.3 KiB
C#
61 lines
1.3 KiB
C#
using MoleMole.Config;
|
|
|
|
namespace MoleMole
|
|
{
|
|
public class AbilityIntervalModifierMixin : BaseAbilityMixin
|
|
{
|
|
private IntervalModifierMixin config;
|
|
|
|
private EntityTimer _intervalTimer;
|
|
|
|
public AbilityIntervalModifierMixin(ActorAbility instancedAbility, ActorModifier instancedModifier, ConfigAbilityMixin config)
|
|
: base(instancedAbility, instancedModifier, config)
|
|
{
|
|
this.config = (IntervalModifierMixin)config;
|
|
_intervalTimer = new EntityTimer(instancedAbility.Evaluate(this.config.Interval));
|
|
}
|
|
|
|
public override void OnAdded()
|
|
{
|
|
_intervalTimer.Reset(true);
|
|
}
|
|
|
|
public override void OnRemoved()
|
|
{
|
|
_intervalTimer.Reset(false);
|
|
actor.abilityPlugin.TryRemoveModifier(instancedAbility, config.ModifierName);
|
|
}
|
|
|
|
public override void Core()
|
|
{
|
|
if (_intervalTimer.isActive)
|
|
{
|
|
if (!GetPredicateResult())
|
|
{
|
|
_intervalTimer.Core(1f);
|
|
}
|
|
if (_intervalTimer.isTimeUp)
|
|
{
|
|
AddModifier();
|
|
_intervalTimer.Reset(true);
|
|
}
|
|
}
|
|
}
|
|
|
|
private bool GetPredicateResult()
|
|
{
|
|
bool result = false;
|
|
if (config.Predicates.Length > 0)
|
|
{
|
|
result = actor.abilityPlugin.EvaluateAbilityPredicate(config.Predicates, instancedAbility, instancedModifier, actor, null);
|
|
}
|
|
return result;
|
|
}
|
|
|
|
private void AddModifier()
|
|
{
|
|
actor.abilityPlugin.ApplyModifier(instancedAbility, config.ModifierName);
|
|
}
|
|
}
|
|
}
|