/// <summary>
 /// Update the StatusEffectInstance's Active status.
 /// </summary>
 public virtual void CheckActive(StatusEffectInstance instance)
 {
     if (active != null)
     {
         // ReSharper disable once CompareOfFloatsByEqualityOperator
         instance.Active = active.Value != 0;
     }
 }
Exemple #2
0
        public override void Tick(StatusEffectInstance instance)
        {
            base.Tick(instance);

            if (instance.TimeActive >= duration)
            {
                instance.MarkForRemoval();
            }
        }
Exemple #3
0
        public override void Tick(StatusEffectInstance instance)
        {
            if (instance.Holder.TryGetComponent <PlayerProperties>(out var playerProperties))
            {
                playerProperties.Damage(damage);
            }

            base.Tick(instance);
        }
Exemple #4
0
        public override void OnInactive(StatusEffectInstance instance)
        {
            base.OnInactive(instance);

            var attributeHolders = instance.Holder.GetComponents <AttributeHolder>();

            foreach (var statModifier in modifiers)
            {
                statModifier.RemoveModifier(instance, attributeHolders);
            }
        }
Exemple #5
0
        /// <summary>
        /// Add a new StatusEffect to this StatusEffectHolder.
        /// </summary>
        /// <param name="effect">new StatusEffect</param>
        /// <param name="active">optional active flag, per default a new StatusEffect is activated immediately</param>
        /// <returns>added StatusEffectInstance</returns>
        public StatusEffectInstance AddEffect(StatusEffect effect, bool active = true)
        {
            if (effect == null)
            {
                throw new ArgumentException("effect must not be null.");
            }

            var instance = new StatusEffectInstance(effect, this);

            _effects.Add(instance);
            instance.OnAdd();
            instance.Active = active;

            if (effectHUD != null && effect.showInHUD)
            {
                effectHUD.AddEffect(instance);
            }

            return(instance);
        }
Exemple #6
0
 public override string ToString(StatusEffectInstance instance)
 {
     return(base.ToString(instance) + $": {GetTimeRemainingSeconds(instance):0.##} s");
 }
Exemple #7
0
 public override string GetHUDText(StatusEffectInstance instance)
 {
     return($"{GetTimeRemainingSeconds(instance):F1} s");
 }
Exemple #8
0
 public float GetTimeRemainingSeconds(StatusEffectInstance instance)
 {
     return(Time.fixedDeltaTime * GetTimeRemaining(instance));
 }
Exemple #9
0
 public int GetTimeRemaining(StatusEffectInstance instance)
 {
     return(duration - instance.TimeActive);
 }
 public virtual string ToString(StatusEffectInstance instance)
 {
     return($"{name}");
 }
 public virtual string GetHUDText(StatusEffectInstance instance)
 {
     return("");
 }
 /// <summary>
 /// Event Handler for update logic. Gets called every FixedUpdate.
 /// </summary>
 public virtual void Tick(StatusEffectInstance instance)
 {
 }
 /// <summary>
 /// Event Handler for becoming inactive.
 /// </summary>
 public virtual void OnInactive(StatusEffectInstance instance)
 {
 }
 /// <summary>
 /// Event Handler for removing from a StatusEffectHolder.
 /// </summary>
 public virtual void OnRemove(StatusEffectInstance instance)
 {
 }
 /// <summary>
 /// Event Handler for adding to a StatusEffectHolder.
 /// </summary>
 public virtual void OnAdd(StatusEffectInstance instance)
 {
 }