#東方弾幕風
#Title[座天使「ソロネの火輪」]
#Text[回る輪が燃え盛る車輪っぽかったので・・・。いろいろとやっちまった感がある弾幕ですが、ある避け方をするとかなり安定します。]

#BackGround[Default]
#BGM[.\BGM\thA07]
#Player[FREE]
#ScriptVersion[2]

script_enemy_main
{
	let count=210;
        let interbal=181;
        let flame=0;
	let cx=GetCenterX();//STGシーンの中心x座標を取得;
	let imgExRumia=GetCurrentScriptDirectory~"img\ExRumia.png";
	let imgback04_06=GetCurrentScriptDirectory~"img\back04_06.png";
        let speed=0;	
        let power0=GetCurrentScriptDirectory~"SE\power0.wave";
	let imgLittle=GetCurrentScriptDirectory~"img\RumiaCutIn.png";
        SetShotAutoDeleteClip(100,100,100,100);



        @Initialize
	{
		SetScore(30000);//スペルカードボーナスを30000に設定
		SetLife(450);//ライフを300に設定
		SetDamageRate(10,3);//披ダメージを10%に設定
		SetTimer(60);//時間制限を60秒に設定
                SetDurableSpellCard();//耐久スペカにします
		SetGraphicRect(1,1,64,64);//描画元矩形を設定
		SetInvincibility(540);//敵を30フレーム無敵にする
		LoadGraphic(imgback04_06);		
		LoadGraphic(imgExRumia);//画像「img\ExRumia.png」を読みこむ		

                LoadSE(power0);

		SetMovePosition02(GetCenterX,60,120);//座標(cx,60)へ60フレームかけて移動する
                Concentration02(150);
		CutIn(YOUMU,"座天使「ソロネの火輪」",imgLittle,1,1,350,525);//スペルカード名表示


	}
	
	@MainLoop
	{       
          
          let radius =150;
          let angle =count-90;
          let x = GetPlayerX() + offsetX(radius, angle);
          let y = GetPlayerY() + offsetY(radius, angle);

          if(flame>179)
            {
             if(flame<540&&flame%30==1)
                {

                 CreateEnemyFromScript("Shito01",GetCenterX,GetClipMinY,0,0,0);

                 }

            }

          if(flame==60){ 
                          Concentration02(120);
                          PlaySE(power0);
                         }  

          if(flame==640){ 
                         PlaySE(power0);
                         Concentration02(80);
                         }

          if(flame==800)
               {
                CreateEnemyFromScript("bunnsinn01",GetX,GetY(),0,0,0);
                count=210;
                interbal=181;
               }

          if(flame>800)
            {


                SetMovePosition03(x,y,30,5);



                if(interbal==110){ 
                               PlaySE(power0);
                               }


                 if(interbal>440&&interbal%20==2)		
                         {
                         let ang=GetAngleToPlayer;
 
                
                             loop(4) {
                                      CreateShot02(GetX, GetY,0.5, ang,0.1, 10, PURPLE21, 0);
                                      ang += 90;
                                     }
                          
                         }

                if(interbal<181&&interbal%30==0)
		{
			let ang=GetAngleToPlayer();//敵から自機方向への角度を取得
			let i=0;
                        while(i<360)
			{
				CreateShot02(GetX(),GetY(),7,ang+i,-0.4,1.5,PURPLE04,190);//弾を発射
				CreateShot02(GetX(),GetY(),6,ang+i,-0.5,1.2,PURPLE01,190);   
				i+=30;
			}

		}
		
           }
		if(count==360){count=0;};
                if(interbal==630){interbal=0;}
		SetCollisionA(GetX(),GetY(),32);//当たり判定(自弾)登録
		SetCollisionB(GetX(),GetY(),12);//当たり判定(体当たり)登録
		count++;
                interbal++;
                flame++;
	}
	
	@Finalize
	{//読みこんだファイルを削除
		DeleteGraphic(imgExRumia);	
		DeleteGraphic(imgback04_06);
		CreateItem(ITEM_1UP,GetX,GetY+60);
		loop(20)
		{
			CreateItem(ITEM_SCORE,GetX+rand(-100,100),GetY+rand(20,100));
		}
	}
	
	@DrawLoop
	{
		//Exルーミア描画
		
                if(GetSpeedX()==0){SetGraphicRect(64,1,127,64);}
		else if(GetSpeedX()>0){SetGraphicRect(192,1,255,64);}
	        else if(GetSpeedX()<0){SetGraphicRect(128,1,191,64);}
                             
                              
                             
		SetAlpha(255);
		SetTexture(imgExRumia);
		DrawGraphic(GetX(),GetY());
	}

	@BackGround
	{
	//スペルカード時の背景部分
	//無くてもよい


		SetTexture(imgback04_06);
		SetGraphicRect(1,1,512,512);
		SetAlpha(100);
		SetGraphicAngle(0,0,0);
		DrawGraphic(GetCenterX,GetCenterY);
		
	}


    function offsetX(radius, angle) {
        return radius * cos(angle);
    }

    function offsetY(radius, angle) {
        return radius * sin(angle);
    }

}


script_enemy bunnsinn01
{//分身を定義
	let count=210;
        let interbal=181;
        let flame=0;
	let ExRumiabunnsinn01=GetCurrentScriptDirectory~"img\ExRumiabunnsinn01.png";




        @Initialize
	{

		SetLife(300);//ライフを300に設定

		SetDamageRateEx(10,3,100,0);


		SetGraphicRect(1,1,64,64);//描画元矩形を設定
		SetInvincibility(100);//敵を30フレーム無敵にする
		
		LoadGraphic(ExRumiabunnsinn01);//画像「img\ExRumiabunnsinn01.png」を読みこむ		
		




	}
	
	@MainLoop
	{       

               let radius =150;
               let angle =count+90;
               let x = GetPlayerX() + offsetX(radius, angle);
               let y = GetPlayerY() + offsetY(radius, angle);

                SetMovePosition03(x,y,30,5);
                
                


                if(count==120){ 
                               Concentration02(120);
                               }  



                 if(interbal>440&&interbal%20==2)		
                         {
                         let ang=GetAngleToPlayer;
 
                
                             loop(4) {
                                      CreateShot02(GetX, GetY,0.5, ang,0.1, 10, BLUE21, 0);
                                      ang += 90;
                                     }
                          
                         }

                if(interbal<181&&interbal%30==0)
		{
			let ang=GetAngleToPlayer();//敵から自機方向への角度を取得
			let i=0;
                        while(i<360)
			{
				CreateShot02(GetX(),GetY(),7,ang+i,-0.4,1.5,BLUE04,190);//弾を発射
				CreateShot02(GetX(),GetY(),6,ang+i,-0.5,1.2,BLUE01,190); 
				i+=30;
			}

		}
		

		if(count==360){count=0;};
                if(interbal==630){interbal=0;}
		SetCollisionA(GetX(),GetY(),32);//当たり判定(自弾)登録
		SetCollisionB(GetX(),GetY(),12);//当たり判定(体当たり)登録
		count++;
                interbal++;
                flame++;
	}
	
	@Finalize
	{//読みこんだファイルを削除
		DeleteGraphic(ExRumiabunnsinn01);	

		loop(20)
		{
			CreateItem(ITEM_SCORE,GetX+rand(-100,100),GetY+rand(20,100));
		}
	}
	
	@DrawLoop
	{
		//Exルーミア描画
		
                if(GetSpeedX()==0){SetGraphicRect(64,1,127,64);}
		else if(GetSpeedX()>0){SetGraphicRect(192,1,255,64);}
	        else if(GetSpeedX()<0){SetGraphicRect(128,1,191,64);}
                             
                              
                             
		SetAlpha(255);
		SetTexture(ExRumiabunnsinn01);
		DrawGraphic(GetX(),GetY());
	}

    function offsetX(radius, angle) {
        return radius * cos(angle);
    }

    function offsetY(radius, angle) {
        return radius * sin(angle);
    }


}

script_enemy Shito01
{//火炎輪を定義

	let count=0;
        let interbal=0;
        let flame=0;

        @Initialize
	{

		SetLife(300);//ライフを300に設定
		SetDamageRate(10,10);//披ダメージを10%に設定
		SetDamageRateEx(10,3,20,0);

		SetInvincibility(100);//敵を30フレーム無敵にする

	}
	
	@MainLoop
        {
          let radius =220;
          let angle =count-90;
          let x = GetCenterX() + offsetX(radius, angle);
          let y = GetCenterY() + offsetY(radius, angle);

          SetMovePosition03(x,y,30,5);

          if(count<360&&count%6==1)
             {
		CreateShot01(GetX(),GetY(),2,GetAngle-150,RED11,40);

             }
         	 if(count==360){count=0}
          	SetCollisionB(GetX(),GetY(),24);
          	count++;
		SetCollisionA(GetX(),GetY(),24);//当たり判定(自弾)登録
        }

	@Finalize
	{

		loop(5)
		{
			CreateItem(ITEM_SCORE,GetX+rand(-100,100),GetY+rand(20,100));
		}
	}
	
	@DrawLoop
	{

	}



    function offsetX(radius, angle) {
        return radius * cos(angle);
    }

    function offsetY(radius, angle) {
        return radius * sin(angle);
    }
		
}