
script_shot BurstReturnShot{//CreateShot01と同等の弾
       let out=false;
	let Speed=rand(3,6);
	let StandradSpeed=Speed;
	let TimeCounter=0;
       @Initialize{
	SetDefault(5);
	SetBombResist;
	SetSpeed(Speed);
	SetAngle(GetAngleToPlayer-180+rand(-45,45));
	Tmain;
       }
       @MainLoop {
	SetCollisionB(GetX,GetY,1);
		yield;
          }
       @DrawLoop {
          DrawGraphicDefault();
       }
       @Finalize{

	}

task Tmain
{
	BulletToItem;
	Move;
	Eraze;
}

task Move
{
loop(30)
{
SetSpeed(Speed);
Speed-=StandradSpeed/30;
yield;
}

let mo=2.5;
loop
{       
SetSpeed(Speed);
if(Speed<1.5)
{
Speed+=1/60;
}
if(Speed<3.75)
{
Speed+=1/60;
}
if(TimeCounter>=120 && TimeCounter<300)
{
	SetDefault(2);
}
else if(TimeCounter>=300)
{
	SetDefault(1);
}
	//SetAngle(GetAngleToPlayer);

	loop(4)
	{
        if(sin(GetAngleToPlayer-GetAngle)>0){
            SetAngle(GetAngle+mo);
        }
        else{
            SetAngle(GetAngle-mo);
        }
	}

	TimeCounter+=1;
	if(GetDistanceToPlayer<60)
	{
		TimeCounter+=1;
	}
	if(GetDistanceToPlayer<150)
	{
		TimeCounter+=1;
	}
yield;
}

}

task BulletToItem
{
loop
{
	if(GetKeyState(VK_USER)==KEY_PUSH)
	{
		if(TimeCounter<120)
		{
			ItemSet(GetX,GetY,6);
			ItemSet(GetX,GetY,6);
			ItemSet(GetX,GetY,6);
		}
		else if(TimeCounter>=120 && TimeCounter<300)
		{
			ItemSet(GetX,GetY,61);
			ItemSet(GetX,GetY,61);
			ItemSet(GetX,GetY,61);
		}
		else if(TimeCounter>=300)
		{
			ItemSet(GetX,GetY,62);
			ItemSet(GetX,GetY,62);
			ItemSet(GetX,GetY,62);
		}
		End;
		break;
	}
	if(GetCommonData("BURSTLEVEL")==0)
	{
		if(TimeCounter<120)
		{
			ItemSet(GetX,GetY,4);
			ItemSet(GetX,GetY,4);
			ItemSet(GetX,GetY,4);
		}
		else if(TimeCounter>=120 && TimeCounter<300)
		{
			ItemSet(GetX,GetY,41);
			ItemSet(GetX,GetY,41);
			ItemSet(GetX,GetY,41);
		}
		else if(TimeCounter>=300)
		{
			ItemSet(GetX,GetY,42);
			ItemSet(GetX,GetY,42);
			ItemSet(GetX,GetY,42);
		}
		End;
		break;
	}
	yield;
}
}

task Eraze
{
loop
{
	if(GetX<GetClipMinX-64||GetX>GetClipMaxX+64||GetY<GetClipMinY-64||GetY>GetClipMaxY+64)
	{
		End;
	}
	if(OnBomb)
	{
		if(TimeCounter<120)
		{
			ItemSet(GetX,GetY,4);
			ItemSet(GetX,GetY,4);
			ItemSet(GetX,GetY,4);
		}
		else if(TimeCounter>=120 && TimeCounter<300)
		{
			ItemSet(GetX,GetY,41);
			ItemSet(GetX,GetY,41);
			ItemSet(GetX,GetY,41);
		}
		else if(TimeCounter>=300)
		{
			ItemSet(GetX,GetY,42);
			ItemSet(GetX,GetY,42);
			ItemSet(GetX,GetY,42);
		}
		End;
	}
	if(GetCommonData("Playermissed"))
	{
		End;
	}
	if(TimeCounter>=750)
	{
		CreateShotA(0,GetX,GetY,15);
		SetShotKillTime(0,0);
		FireShot(0);
		End;
	}
yield;
}
}

function GetDistanceToPlayer
{
	let dis=((GetX-GetPlayerX)^2+(GetY-GetPlayerY)^2)^0.5;
	return(dis);
}

function ItemSet(x,y,type)//アイテム生成関数
{
	let XY=GetCommonDataDefault("ItemXY",[]);//共通データ内容を変数に渡す
	XY=XY~[x,y,type];//
	SetCommonData("ItemXY",XY);//共通データに変更後の配列を渡す
}

}
//////////////////////////////////////////////////////////////////////////////

script_shot PowerReturnShot{//CreateShot01と同等の弾
       let out=false;
	let Speed=rand(0.25,0.5);
	let StandradSpeed=Speed;
	let TimeCounter=0;
       @Initialize{
	SetDefault(38);
	SetBombResist;
	SetSpeed(Speed);
	SetAngle(GetAngleToPlayer+rand(-30,30));
	Tmain;
       }
       @MainLoop {
	SetCollisionB(GetX,GetY,2);
		yield;
          }
       @DrawLoop {
          DrawGraphicDefault();
       }
       @Finalize{

	}

task Tmain
{
	BulletToItem;
	//Move;
	Eraze;
}

task Move
{
loop
{       
SetSpeed(Speed);

if(TimeCounter>=180)
{
	SetDefault(36);
}
	TimeCounter+=1;
	if(GetDistanceToPlayer<60)
	{
		SetSpeed(Speed/4);
		TimeCounter+=1;
	}
	else if(GetDistanceToPlayer<150)
	{
		SetSpeed(Speed/2);
		TimeCounter+=1;
	}
yield;
}

}

task BulletToItem
{
let count=0;
loop
{
	if(GetKeyState(VK_SLOWMOVE)!=KEY_FREE)
	{
		count+=1;
	}
	else
	{
		count=0;
	}

	if(GetCommonData("BURSTLEVEL")==3)
	{
		ItemSet(GetX,GetY,66);
		ItemSet(GetX,GetY,66);
		ItemSet(GetX,GetY,66);
		End;
	}

	if(count>=15)
	{
		ItemSet(GetX,GetY,7);
		ItemSet(GetX,GetY,7);
		ItemSet(GetX,GetY,7);

		End;
	}
	yield;
}
}

task Eraze
{
loop
{
	if(GetX<GetClipMinX-64||GetX>GetClipMaxX+64||GetY<GetClipMinY-64||GetY>GetClipMaxY+64)
	{
		End;
	}
	if(OnBomb)
	{
		End;
	}
	if(GetCommonData("Playermissed"))
	{
		End;
	}
yield;
}
}

function GetDistanceToPlayer
{
	let dis=((GetX-GetPlayerX)^2+(GetY-GetPlayerY)^2)^0.5;
	return(dis);
}

function ItemSet(x,y,type)//アイテム生成関数
{
	let XY=GetCommonDataDefault("ItemXY",[]);//共通データ内容を変数に渡す
	XY=XY~[x,y,type];//
	SetCommonData("ItemXY",XY);//共通データに変更後の配列を渡す
}

}