public void AddBuffDebuff(IEffect effect)
    {
        {
            switch (effect.TimeType)
            {
            case TimeTypeEnum.Instant:
                effect.Action(this);
                break;

            case TimeTypeEnum.Uniform:
                if (effect.Buff)
                {
                    StartCoroutine(TimeCycle(
                                       effect.ActionTime / (effect.Point * effect.ActionTime),
                                       effect.MaxTime,
                                       effect.Action,
                                       effect.EffectTag));
                }
                else
                {
                    if (!uniformDebuffDictionary.ContainsKey(effect.EffectTag))
                    {
                        uniformDebuffDictionary.Add(effect.EffectTag, new UniformDebuffBuffer(this));
                    }
                    uniformDebuffDictionary[effect.EffectTag].AddEffect(effect);
                }
                break;

            case TimeTypeEnum.Stable:
                if (effect.Buff)
                {
                    effect.Action(this);
                    StartCoroutine(TimeCycle(effect.MaxTime, effect.MaxTime, effect.DisableAction, effect.EffectTag));
                }
                else
                {
                    if (!stableDebuffDictionary.ContainsKey(effect.EffectTag))
                    {
                        stableDebuffDictionary.Add(effect.EffectTag, new StableDebuffBuffer(this));
                    }
                    stableDebuffDictionary[effect.EffectTag].AddEffect(effect);
                }
                break;
            }
        }
    }
 public int AddStableEffect(IEffect effect)
 {
     stableEffects.Add(effect);
     effect.Action(this);
     return(stableEffects.Count - 1);
 }