public override void DoAction()
        {
            if (this.ActionType == 0)
            {
                if (this.moveCount % shotCount == 0)
                {
                  Shot s = new NormalShotBuilder<RedFairyShot>(this, 0).CreateShot();
                    this.Scene.AddShot(s);

                }
            }
            else if (this.ActionType == 1)
            {
                if (this.moveCount % shotCount == 0)
                {
                   Shot s = new DirectionShotBuilder<RedFairyShot>(this, 0, 70.0D).CreateShot();
                    this.Scene.AddShot(s);

                }
            }
            else if (this.ActionType == 2)
            {
                if (this.moveCount % shotCount == 0)
                {
                   Shot s = new DirectionShotBuilder<RedFairyShot>(this, 0, 110.0D).CreateShot();
                    this.Scene.AddShot(s);

                }
            }
            else if (this.ActionType == 3)
            {
                if (this.moveCount % shotCount == 0)
                {
                Shot s = new AimShotBuilder<RedFairyShot>(this, 0, SSTaskFactory.PlayerUpdateTask.Player.GetPosition()).CreateShot();
                    this.Scene.AddShot(s);
                }
            }
            else if(this.ActionType == 4)
            {
                if (this.moveCount % shotCount == 0)
                {
                    Shot s = new DirectionShotBuilder<RedFairyShot>(this, 0, 110.0D).CreateShot();
                    s.SetMoveSpeed(2);
                    this.Scene.AddShot(s);

                }
            }
            else if (this.ActionType == 5)
            {
                if (this.moveCount % shotCount == 0)
                {
                    Shot s = new AimShotBuilder<RedFairyShot>(this, 0, SSTaskFactory.PlayerUpdateTask.Player.GetPosition()).CreateShot();
                    s.SetMoveSpeed(2);
                    this.Scene.AddShot(s);

                }
            }
        }
        public override void DoAction()
        {
            if (actionCount % 200 >= 0 && this.actionCount % 200 <= 100)
            {
                this.canMove = false;

                if ((this.actionCount % 100) % 13 == 0)
                {
                    for (int i = 30; i < 151; i++)
                    {
                        if (i % 10 == 0)
                        {
                           Shot s = new DirectionShotBuilder<BlackLongShot>(this, 0, (double)i).CreateShot();
                            this.Scene.AddShot(s);
                        }
                    }
                }

            }

            if (!this.canMove && this.actionCount % 200 > 100)
            {
                this.canMove = true;
            }

            if (actionCount % 10 == 0)
            {
                //Shot s = new BlackCircleShot(this, SSTaskFactory.PlayerUpdateTask.Player.GetPosition());
               //     Shot s = new Shot.Builder(typeof(BlackCircleShot)).Position(this.position).Target(SSTaskFactory.PlayerUpdateTask.Player.GetPosition()).Build();
                Shot s = new AimShotBuilder<BlackCircleShot>(this, 0, SSTaskFactory.PlayerUpdateTask.Player.GetPosition()).CreateShot();
                this.Scene.AddShot(s);
            }

            if (actionCount % 90 == 0)
            {
                for (int i = 0; i < 10; i++)
                {
                    //Shot s = new RGBStoneShot(new SSPosition(this.position.PosX - 150 + i * 30, this.position.PosY + 30), RGBStoneShot.ColorType.Red);
             //       Shot s = new Shot.Builder(typeof(RGBStoneShot)).Position(new SSPosition(this.position.PosX - 150 + i * 30, this.position.PosY + 30)). RGBStoneShot.ColorType.Red)
                  //  Shot s = new RGBStoneShot(new Shot.Builder(typeof(RGBStoneShot)).Position(new SSPosition(this.position.PosX - 150 + i * 30, this.position.PosY + 30)));

                    Shot s = new AimShotBuilder<RGBStoneShot>(this, 0, new SSPosition(this.position.PosX - 150 + i * 30, this.position.PosY + 30)).CreateShot();
                    this.Scene.AddShot(s);
                }
            }

            if (actionCount % 90 == 30)
            {
                for (int i = 0; i < 10; i++)
                {
                  //  Shot s = new RGBStoneShot(new SSPosition(this.position.PosX - 150 + i * 30, this.position.PosY + 30), RGBStoneShot.ColorType.Blue);
                  //  Shot s = new RGBStoneShot(new Shot.Builder(typeof(RGBStoneShot)).Position(new SSPosition(this.position.PosX - 150 + i * 30, this.position.PosY + 30)), RGBStoneShot.ColorType.Blue);
                    Shot s = new AimShotBuilder<RGBStoneShot>(this, 1, new SSPosition(this.position.PosX - 150 + i * 30, this.position.PosY + 30)).CreateShot();
                    this.Scene.AddShot(s);
                }
            }

            if (actionCount % 90 == 60)
            {
                for (int i = 0; i < 10; i++)
                {
                //    Shot s = new RGBStoneShot(new SSPosition(this.position.PosX - 150 + i * 30, this.position.PosY + 30), RGBStoneShot.ColorType.Green);
                    //Shot s = new RGBStoneShot(new Shot.Builder(typeof(RGBStoneShot)).Position(new SSPosition(this.position.PosX - 150 + i * 30, this.position.PosY + 30)), RGBStoneShot.ColorType.Green);
                    Shot s = new AimShotBuilder<RGBStoneShot>(this, 2, new SSPosition(this.position.PosX - 150 + i * 30, this.position.PosY + 30)).CreateShot();
                    this.Scene.AddShot(s);
                }
            }

            this.actionCount++;
        }