#e
#Title[_uNCbNu[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(10,10);
LoadUserShotData(GC~".\shot.txt");
CutIn(KOUMA,"_uNCbNu[v","",0,0,0,0);
SetScore(100000);
SetShotAutoDeleteClip(64,64,64,64);
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));}
CreateItem(ITEM_1UP,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+160,15,8);
loop(60){yield};
pattern(0);
loop
	{
	let pat=2;
	loop(2)
		{
		Tmove(pat);
		loop(30){yield;}
		Tattack1(6.5);
		Tattack1(7);
		loop(32){yield;}
		let speed=5;
		loop(6)
			{
			Tblock(speed,left);
			speed=speed-0.5;
			left=left*-1;
			}
		pat=1;
		}
	SetGraphicAngle(90+90*-left,0,0);
	SetMovePosition03(GetCenterX+left*170,GetCenterY+rand(-200,0),1,7);
	pat=0;
	loop(24)
		{
		pattern(pat+1);
		pat=(pat+1)%4;
		loop(5){yield;}
		}
	SetDamageRate(150,100);
	left=left*-1;
	}
}

task Tmove(base)
{
move=1;
let left=-1;
if(GetX<GetCenterX){left=1;}
let DX=100*base*left/60;
let DY=-6;
if(absolute((GetX+60*DX)-GetCenterX)>170){DX=DX/2;}
SetGraphicAngle(90+90*-left,0,0);
pattern(5);
loop(61)
	{
	SetMovePosition02(GetX+DX,GetY+DY,1);
	DY=DY+0.2;
	yield;
	}
pattern(0);
move=0;
}

task Tattack1(speed)
{
let way=9;
let pitch=10;
let angle=GetAngleToPlayer-pitch*(way-1)/2;
loop(way)
	{
	let dis=((GetX-GetPlayerX)^2+(GetY-GetPlayerY)^2)^0.5;
	CreateShotA(0,GetX,GetY,0);
	SetShotDataA(0,0,speed,angle,0,0,0,2);
	SetShotDataA(0,60,0,angle,0,0,0,2);
	SetShotDirectionType(PLAYER);
	SetShotDataA(0,61,0,0,0,0,0,2);
	SetShotDataA(0,120,6,NULL,0,0,0,2);
	FireShot(0);
	SetShotDirectionType(ABSOLUTE);
	angle=angle+pitch;
	}

}

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

task Tblock(speed,left)
{
let angle=0;
loop(24)
	{
	CreateShotA(0,GetX,GetY,0);
	SetShotDataA(0,0,speed,angle+30,-2.8*left,-0.03,speed-2,2);
	SetShotDataA(0,100+speed,NULL,NULL,0,0.04,speed+1,2);
	FireShot(0);
	angle=angle+15;
	}
}

function GetAngleToCenter(X,Y)
{
let answer=atan2(GetCenterY-Y,GetCenterX-X);
return(answer);
}

}