protected override IEnumerator <int> ShootBehavior(params float[] parameters)
        {
            switch (Phase)
            {
            case 1:
                yield return(20);

                Patterns.ButterflyCircleShot(1);
                yield return(120);

                Patterns.Shoot3Circles();
                yield return(120);

                yield return(20);

                Patterns.ButterflyCircleShot(-1);
                yield return(120);

                Patterns.Shoot3Circles();
                yield return(120);

                break;

            case 2:
                yield return(120);

                Patterns.PlayerPrison();
                yield return(220);

                StartScript(Patterns.AntiSafeSpotBarrage, 0);
                StartScript(Patterns.AntiSafeSpotBarrage, 5);
                StartScript(Patterns.AntiSafeSpotBarrage, -5);
                StartScript(Patterns.AntiSafeSpotBarrage, -10);
                StartScript(Patterns.AntiSafeSpotBarrage, 10);
                StartScript(Patterns.AntiSafeSpotBarrage, -15);
                StartScript(Patterns.AntiSafeSpotBarrage, 15);
                StartScript(Patterns.AntiSafeSpotBarrage, -20);
                StartScript(Patterns.AntiSafeSpotBarrage, 20);
                yield return(400);

                break;

            case 3:
                Patterns.Phase3Shot();
                yield return(30);

                break;

            case 4:
                if (_frame2 == 120)
                {
                    Patterns.Phase4Frame2120Shot(_angle);
                    _frame2 = 115;
                }

                if (_frame3 == 200)
                {
                    Patterns.Phase4Frame3200Shot();
                    _frame3 = 50;
                }

                break;

            case 5:
                yield return(20);

                Patterns.ButterflyBarrage2(1);
                Patterns.ButterflyBarrage2(-1);
                yield return(120);

                Patterns.ButterflyBarrage();
                yield return(120);

                break;

            case 6:
                StartScript(Patterns.BulletFlower, 1);
                yield return(220);

                StartScript(Patterns.Pentagram, -1);
                yield return(400);

                StartScript(Patterns.BulletFlower, -1);
                yield return(220);

                StartScript(Patterns.Pentagram, 1);
                yield return(400);

                break;

            case 7:
                yield return(10);

                StartScript(Patterns.CircleBarrage, 1);
                StartScript(Patterns.CircleBarrage, 2);
                yield return(50);

                StartScript(Patterns.LineBarrage);
                yield return(70);

                break;

            case 8:
                break;
            }
        }