#e
#Title[֊uJSJSv]
#ScriptVersion[2]
#Player[FREE]
#Text[]
#BackGround[User(.\back.png,0,0)]

script_enemy_main
{
let GC=GetCurrentScriptDirectory;
@Initialize
{
LoadGraphic(GC~".\main.png");
SetTexture(GC~".\main.png");
SetGraphicRect(0,0,32,40);
PlayMusic("bgm\fran");
LoadUserShotData(GC~".\burret01.txt");
SetDamageRate(10,10);
SetLife(4000);
SetTimer(60);
CutIn(YOUMU,"֊uJSJSv",GC~".\cut_in.png",100,0,480,480);
SetScore(100000);
Tmain;
Twing;
Tbat;
SetShotAutoDeleteClip(32,32,32,32);
}
@MainLoop
{
if(OnBomb==false)
	{
	SetCollisionA(GetX,GetY,24);
	SetCollisionB(GetX,GetY,12);
	}

yield;
}
@DrawLoop
{
if(OnBomb==false){DrawGraphic(GetX,GetY);}
}
@Finalize
{
AddScore(10000);
loop(30){CreateItem(ITEM_SCORE,GetX+rand(-50,50),GetY+rand(-30,30))};
DeleteGraphic(GC~".\main.png");
}

#include_function ".\function.txt"

let SX=[];
let SY=[];
let Sangle=[];
let Sflag=[];

task Tmain
{
//CreateDebugWindow;
ascent(i in 0..1024)
	{
	SX=SX~[0];
	SY=SY~[0];
	Sangle=Sangle~[0];
	Sflag=Sflag~[0];
	i++;
	}
loop(60){yield;}
if(GetX<GetCenterX){pattern(1);}
else{pattern(2);}
SetMovePosition02(GetCenterX,GetClipMinY+80,40);
loop(40){yield;}
pattern(0);
Concentration01(50);
loop(40){yield;}
Tattack;
let left=1;
loop
	{
	Tgreen1(GetClipMinX,GetClipMinY+50,0);
	Tgreen1(GetClipMaxX,GetClipMinY+340,180);
	loop(10){yield;}
	Tgreen1(GetCenterX-130,GetClipMinY,90);
	Tgreen1(GetCenterX+130,GetClipMaxY,270);
	loop(10){yield;}
	Tgreen1(GetClipMinX,GetClipMinY+267,0);
	Tgreen1(GetClipMaxX,GetClipMinY+120,180);
	loop(10){yield;}
	Tgreen1(GetCenterX+70,GetClipMinY,90);
	Tgreen1(GetCenterX-70,GetClipMaxY,270);
	loop(10){yield;}
	Tgreen1(GetClipMinX,GetClipMinY+160,0);
	Tgreen1(GetClipMaxX,GetClipMinY+200,180);
	loop(150){yield;}
	SetDamageRate(100,0);
	loop(100){yield;}
	Tgreen1(GetCenterX,GetClipMinY,90+45*left);
	Tgreen1(GetCenterX,GetClipMaxY,270+45*left);
	loop(20){yield;}
	Tgreen1(GetClipMinX,GetCenterY+100*left,0-45*left);
	Tgreen1(GetClipMaxX,GetCenterY-100*left,180-45*left);
	loop(210){yield;}
	left=left*-1;
	}
}

task Tattack
{
loop(60){yield;}
let count=0;
loop
	{
	loop(160){yield;}
	DeleteSE("se\seShot");
	PlaySE("se\seShot");
	Tyellow(GetAngleToPlayer+rand(-45,45));
	loop(35){yield;}
	if(count==0)	{
			loop(30){yield;}
			Tyellow(GetAngleToPlayer+rand(-45,45));
			}
	else		{
			Tyellow(GetAngleToPlayer-60);
			Tyellow(GetAngleToPlayer);
			Tyellow(GetAngleToPlayer+60);
			}
	DeleteSE("se\seShot");
	PlaySE("se\seShot");
	count=(count+1)%3;
	loop(20){yield;}
	let X=GetCenterX+rand(-80,80);
	let Y=GetClipMinY+rand(60,100);
	if(X>GetX)	{pattern(1);}
	else		{pattern(2);}
	SetMovePosition03(X,Y,15,3.5);
	loop(60){yield;}
	pattern(0);
	}
}

task Tgreen1(X,Y,angle)
{
let pitch=18.5;
while(X>=GetClipMinX&&X<=GetClipMaxX&&Y>=GetClipMinY&&Y<=GetClipMaxY)
	{
	let id=-1;
	loop(500)				//gpido
		{
		id=id+1;
		if(Sflag[id]==0){break;}	//tOOŒEo
		}
	SX[id]=X;				//vfzu
	SY[id]=Y;
	Sangle[id]=0;
	Sflag[id]=1;
	Tgreen2(id);				//̃^XNN

	X=X+pitch*cos(angle);
	Y=Y+pitch*sin(angle);
	loop(4){yield;}	
	}
}

task Tgreen2(id)
{
let shot=Obj_Create(OBJ_SHOT);
Obj_SetPosition(shot,SX[id],SY[id]);
Obj_SetSpeed(shot,0);
Obj_SetAngle(shot,0);
ObjShot_SetGraphic(shot,59);
ObjShot_SetDelay(shot,20);
while(Sflag[id]==1){yield;}			//xO̊ԑҋ@
loop(20){yield;}
Obj_SetAngle(shot,Sangle[id]);
loop(50)					//
	{
	Obj_SetSpeed(shot,Obj_GetSpeed(shot)+0.03);
	yield;
	}
while(Obj_BeDeleted(shot)==false){yield;}	//܂őҋ@
SX[id]=0;					//vf
SY[id]=0;
Sangle[id]=0;
Sflag[id]=0;
}

task Tyellow(angle)
{
let shot=Obj_Create(OBJ_SHOT);
Obj_SetPosition(shot,GetX,GetY);
Obj_SetSpeed(shot,3);
Obj_SetAngle(shot,angle);
ObjShot_SetGraphic(shot,YELLOW03);
ObjShot_SetDelay(shot,20);
let rad=70;
while(Obj_BeDeleted(shot)==false)
	{
	let id=0;
	loop(500)
		{
		if(Sflag[id]==1)
			{
			let X=SX[id];
			let Y=SY[id];
			if(GetDistance(X,Y,Obj_GetX(shot),Obj_GetY(shot))<rad)
				{
				Sangle[id]=atan2(Y-Obj_GetY(shot),X-Obj_GetX(shot));
				Sflag[id]=2;
				}
			}
		id=id+1;
		}
	yield;
	yield;
	}
}

function GetDistance(X1,Y1,X2,Y2)
{
let answer=((X1-X2)^2+(Y1-Y2)^2)^0.5;
return answer;
}

}