public void Konckback_Remove()
    {
        curKnockback = null;

        curKnockbackMode        = KnockbackMode.Weak;
        ResetGravityOnKnockback = false;
        KnockbackDir            = Vector2.zero;
        KnockbackCurve          = null;

        PlayerActionEventManager.Trigger(PlayerActions.KnockbackEnd);
    }
    public void Konckback_Add(PlayerStatus_Knockback status, KnockbackMode mode, bool resetGravity, Vector2 knockbackDir, AnimationCurve speedCurve)
    {
        if (curKnockbackMode == KnockbackMode.Unstoppable || curKnockbackMode > mode)
        {
            return;
        }

        RemoveEffect(curKnockback);
        curKnockback = status;

        curKnockbackMode        = mode;
        ResetGravityOnKnockback = resetGravity;
        KnockbackDir            = knockbackDir;
        KnockbackCurve          = speedCurve;

        PlayerActionEventManager.Trigger(PlayerActions.Knockbacked);
    }
    protected override void Awake()
    {
        base.Awake();

        if (statusEffects != null)
        {
            RemoveAllEffect();
        }

        statusEffects = new Dictionary <StatusID, List <PlayerStatusEffect> >();

        AbsorbDamage = new BoolCount();
        IgnoreDamage = new BoolCount();

        slowList         = new List <PlayerStatus_Slow>();
        curKnockback     = null;
        curKnockbackMode = KnockbackMode.Weak;
        IsStunned        = new BoolCount();
    }