IEnumerator StartShotgunReload(int Bullets)
    {
        if (m_AnimationType == AnimationType.Animation)
        {
            Anim.CrossFade(StartReloadAnim.name, 0.2f);
            ParentGun.PlayReloadAudio(0);
            yield return(new WaitForSeconds(StartReloadAnim.length));

            for (int i = 0; i < Bullets; i++)
            {
                Anim[InsertAnim.name].wrapMode = WrapMode.Loop;
                float speed = Anim[InsertAnim.name].length / InsertSpeed;
                Anim[InsertAnim.name].speed = speed;
                Anim.CrossFade(InsertAnim.name);
                GunManager.HeadAnimation(3, speed);
                ParentGun.PlayReloadAudio(1);
                yield return(new WaitForSeconds(InsertAnim.length / speed));

                ParentGun.AddBullet(1);
                if (cancelReload)
                {
                    Anim.CrossFade(AfterReloadAnim.name, 0.2f);
                    GunManager.HeadAnimation(0, AfterReloadAnim.length);
                    yield return(new WaitForSeconds(AfterReloadAnim.length));

                    ParentGun.FinishReload();
                    cancelReload = false;
                    yield break;
                }
            }
            Anim.CrossFade(AfterReloadAnim.name, 0.2f);
            GunManager.HeadAnimation(0, AfterReloadAnim.length);
            ParentGun.PlayReloadAudio(2);
            yield return(new WaitForSeconds(AfterReloadAnim.length));

            ParentGun.FinishReload();
        }
        else
        {
            animator.speed = 1;
            animator.Play("StartReload", 0, 0);
            ParentGun.PlayReloadAudio(0);
            yield return(new WaitForSeconds(StartReloadAnim.length));

            for (int i = 0; i < Bullets; i++)
            {
                float speed = InsertAnim.length / InsertSpeed;
                animator.speed = speed;
                animator.Play("Insert", 0, 0);
                GunManager.HeadAnimation(3, speed);
                ParentGun.PlayReloadAudio(1);
                yield return(new WaitForSeconds(InsertAnim.length / speed));

                ParentGun.AddBullet(1);
                if (cancelReload)
                {
                    animator.CrossFade("AfterReload", 0.32f, 0);
                    GunManager.HeadAnimation(0, AfterReloadAnim.length);
                    yield return(new WaitForSeconds(AfterReloadAnim.length));

                    ParentGun.FinishReload();
                    cancelReload = false;
                    yield break;
                }
            }
            animator.Play("EndReload", 0, 0);
            GunManager.HeadAnimation(0, AfterReloadAnim.length);
            ParentGun.PlayReloadAudio(2);
            yield return(new WaitForSeconds(AfterReloadAnim.length));

            ParentGun.FinishReload();
        }
    }