public void RemoveStatusEffect(StatusEffect timedEffect)
 {
     RemoveStatusEffect(timedEffect.ID);
 }
        public void AddStatusEffect(StatusEffect statusEffect)
        {
            //todo: if in status reductions we have this status, reduce status.duration by amt if status has duration
            StatusEffects.Add(statusEffect);
            CustomVariableHandler.HandleCvarSetters(statusEffect.Effect.CustomVariableSetters);


            DestroyHelper destroyCondition;

            AddEffectPrefabs(statusEffect.Effect, out destroyCondition);
            if (destroyCondition != null)
            {
                destroyCondition.Init(DestroyCondition.StatusEffectNotActive, CharacterMono.Controller, statusEffect.ID);
            }

            if (statusEffect.Effect.RemoveStatusEffect)
            {
                RemoveStatusEffect(statusEffect.Effect.RemoveStatusEffectID);
            }

            for (int index = 0; index < StatusEffects.Count; index++)
            {
                var statusEff = StatusEffects[index];
                if (statusEff.Effect.CanBeCancelled)
                {
                    if (statusEff.Effect.CancellingStatusEffectID == statusEffect.ID)
                    {
                        RemoveStatusEffect(statusEff);
                        index--;
                    }
                }
            }

            for (int index = 0; index < AuraEffects.Count; index++)
            {
                var auraEffect = AuraEffects[index];
                if (auraEffect.PassiveEffect.CanBeCancelled)
                {
                    if (auraEffect.PassiveEffect.CancellingStatusEffectID == statusEffect.ID)
                    {
                        RemoveAuraEffect(auraEffect);
                        index--;
                    }
                }
            }

            for (int index = 0; index < TimedPassiveEffects.Count; index++)
            {
                var timedPassiveEffect = TimedPassiveEffects[index];
                if (timedPassiveEffect.CanBeCancelled)
                {
                    if (timedPassiveEffect.CancellingStatusEffectID == statusEffect.ID)
                    {
                        RemoveTimedPassiveEffect(timedPassiveEffect);
                        index--;
                    }
                }
            }

            FullUpdateStats();
        }