#e
#Title[Mu^CXgbp[v]
#ScriptVersion[2]
#Player[FREE]
#Text[]
#BackGround[User]

script_enemy_main
{
let GC=GetCurrentScriptDirectory;
@Initialize
{
LoadGraphic(GC~".\main.png");
SetTexture(GC~".\main.png");
SetGraphicRect(0,0,32,32);
SetLife(4000);
SetTimer(80);
SetDamageRate(100,100);
CutIn(KOUMA,"Mu^CXgbp[v","",0,0,0,0);
SetScore(100000);
Tmain;
//CreateDebugWindow;
}
@MainLoop
{
SetCollisionA(GetX,GetY,24);
SetCollisionB(GetX,GetY,12);
OutputDebugString(0,"enemy",GetEnemyNum);
yield;
}
@DrawLoop
{DrawGraphic(GetX,GetY);}
@Finalize
{
AddScore(10000);
loop(30){CreateItem(ITEM_SCORE,GetX+rand(-40,40),GetY+rand(-30,30));}
}

let move=0;

task Tmain
{
let left=1;
Concentration01(60);
loop(60){yield};
CollectItems;
pattern(5);
SetMovePosition03(GetCenterX,GetClipMinY+100,15,8);
loop(60){yield};
pattern(0);
loop
	{
	let count=0;
	let mcount=20;
	let pat=0;
	while((count<300&&absolute(GetX-GetCenterX)<150)||count<30)
		{
		if(move==0){SetMovePosition02(GetX+left,GetY+0.5*sin(GetAngleToPlayer),1);}
		if(absolute(GetX-GetPlayerX)<16&&mcount>=40){Tmove;mcount=0;}
		else{mcount=mcount+1;}
		if(count%10==0)
			{
			pat=(pat+1)%4;
			if(move==0)
				{
				SetGraphicAngle(90-90*left,0,0);
				pattern(1+pat);
				}
			}
		count=count+1;
		yield;
		}
	while(move==1){yield;}
	SetGraphicAngle(90+90*left,0,0);
	pattern(0);
	Concentration01(60);
	loop(60){yield;}
	SetX(GetX-left);
	TimeStop(300,1,0,0);
	loop(40){yield;SetTimer(GetTimer+1);}
	let wait=40;
	loop(24)
		{
		let speed=2;
		let angle1=GetAngleToPlayer+rand(10,45)*(trunc(rand(0,1.99))*2-1);
		let angle2=rand(0,360);
		let time=trunc(rand(5,30));
		loop(12)
			{
			CreateShotA(0,GetX,GetY,0);
			SetShotDataA(0,0,10,angle1,0,0,0,YELLOW02);
			SetShotDataA(0,time,0,angle2,0,0,0,YELLOW02);
			SetShotDataA(0,time+1,speed,angle2,0,0,0,YELLOW02);
			SetShotDataA(0,time+3,0,angle2,0,0,0,YELLOW02);			
			SetShotDataA(0,300-wait,2,angle2,0,speed/40,speed,YELLOW02);			
			FireShot(0);
			speed=speed+0.5;
			}
		wait=wait+5;
		loop(5){yield;SetTimer(GetTimer+1);}
		}
	loop(140){yield;SetTimer(GetTimer+1);}	
	if(GetX>GetCenterX){left=-1;}
	else{left=1;}
	}
}

task Tmove
{
move=1;
let left=1;
if(GetX<GetPlayerX){left=-1;}
if(absolute(GetX+50*left-GetCenterX)>150){left=left*-1;}
CreateShot01(GetX,GetY,5,GetAngleToPlayer-5,YELLOW05,0);
CreateShot01(GetX,GetY,5,GetAngleToPlayer+5,YELLOW05,0);
let DX=50*left/30;
let DY=-3-10/30;
SetGraphicAngle(90+90*left,0,0);
pattern(5);
loop(31)
	{
	SetMovePosition02(GetX+DX,GetY+DY,1);
	DY=DY+0.2;
	yield;
	}
pattern(0);
move=0;
}

function pattern(let rec)
{
let round=3;
SetGraphicRect(32*rec,32*round,32+32*rec,32+32*round);
}

}