#e
#Title[eL]
#Text[@DExtraRs[]
#PlayLevel[Extra]
#Player[FREE]
#ScriptVersion[2]

script_enemy_main
{
	let imgBoss="script\img\ExRumia.png";

	@Initialize
	{
		MagicCircle(false);
		SetX(GetCenterX);
		SetY(GetClipMinY+120);
		SetLife(4000);
		SetTimer(66);
		SetInvincibility(60);

		LoadGraphic(imgBoss);
		LoadGraphic(GetCurrentScriptDirectory~"img\circle.png");
		SetTexture(imgBoss);
		SetGraphicRect(0,0,63,63);
		LoadUserShotData(GetCurrentScriptDirectory~"img\e.txt");

		CutIn(YOUMU,"eL",0,0,0,0,0);
		PlaySE(GetCurrentScriptDirectory~"se\don19.wav");
		SetMovePosition02(GetCenterX,GetClipMinY+192,60);

		Tmain;
	}

	@MainLoop
	{
		if(OnBomb){SetAlpha(192);}
		else
		{
			SetCollisionA(GetX,GetY,32);
			SetAlpha(255);
		}		SetCollisionB(GetX,GetY,24);
		yield;
	}

	@DrawLoop
	{
		DrawGraphic(GetX,GetY);
	}

	@Finalize
	{
		DeleteGraphic(imgBoss);
	}

	task Tmain
	{
		yield;
		Tcircle(GetX,GetY,66*60,192,true);
		wait(90);
		loop
		{
			Tattack(GetX,GetY,GetX,GetY);
			PlaySE(GetCurrentScriptDirectory~"se\byoro07.wav");
			wait(40);
			PlaySE(GetCurrentScriptDirectory~"se\arrow01.wav");
			wait(120);
			Tmove;
			wait(60);
		}
	}

	task Tattack(x,y,Gx,Gy)
	{
		let angle=11.25;
		loop(16)
		{
			Tlaser(x,y,angle);
			angle+=22.5;
		}
		Tsource;
		wait(40);
		loop(16)
		{
			let s=90;
			loop(9)
			{
				Tshot(x,y,sin(s),Gx,Gy);
				x+=14*cos(angle);
				y+=14*sin(angle);
				s+=180;
			}
			x-=14*9*cos(angle);
			y-=14*9*sin(angle);
			angle+=22.5;
		}
		wait(220);
		loop(16)
		{
			let s=90;
			loop(10)
			{
				Tshot(x+123*cos(angle+11.25),y+123*sin(angle+11.25),sin(s),Gx,Gy);
				x+=14*cos(angle+11.25);
				y+=14*sin(angle+11.25);
				s+=180;
			}
			x-=14*10*cos(angle+11.25);
			y-=14*10*sin(angle+11.25);
			angle+=22.5;
		}
		wait(220);
		loop(16)
		{
			let s=90;
			loop(10)
			{
				Tshot(x+246*cos(angle),y+246*sin(angle),sin(s),Gx,Gy);
				x+=14*cos(angle);
				y+=14*sin(angle);
				s+=180;
			}
			x-=14*10*cos(angle);
			y-=14*10*sin(angle);
			angle+=22.5;
		}
	}

	task Tlaser(x,y,angle)
	{
		let obj=Obj_Create(OBJ_LASER);
		Obj_SetPosition(obj,x,y);
		Obj_SetAngle(obj,angle);
		ObjShot_SetGraphic(obj,BLUE01);
		let length=20;
		ObjLaser_SetLength(obj,length);
		ObjLaser_SetWidth(obj,6);
		ObjLaser_SetSource(obj,false);
		loop(40)
		{
			ObjLaser_SetLength(obj,length);
			length+=3;
			yield;
		}
		Obj_Delete(obj);
		wait(180);
		Tlaser2(x,y,angle+11.25);
	}

	task Tlaser2(x,y,angle)
	{
		let obj=Obj_Create(OBJ_LASER);
		Obj_SetAngle(obj,angle);
		ObjShot_SetGraphic(obj,BLUE01);
		ObjLaser_SetLength(obj,160);
		ObjLaser_SetWidth(obj,6);
		ObjLaser_SetSource(obj,false);
		loop(40)
		{
			Obj_SetPosition(obj,x,y);
			x+=2.8*cos(angle);
			y+=2.8*sin(angle);
			yield;
		}
		Obj_Delete(obj);
		wait(180);
		Tlaser3(x+40*2.8*(-cos(angle)+cos(angle+11.25)),y+40*2.8*(-sin(angle)+sin(angle+11.25)),angle+11.25);
	}

	task Tlaser3(x,y,angle)
	{
		let obj=Obj_Create(OBJ_LASER);
		Obj_SetAngle(obj,angle);
		ObjShot_SetGraphic(obj,BLUE01);
		ObjLaser_SetLength(obj,160);
		ObjLaser_SetWidth(obj,6);
		ObjLaser_SetSource(obj,false);
		loop(40)
		{
			Obj_SetPosition(obj,x,y);
			x+=2.8*cos(angle);
			y+=2.8*sin(angle);
			yield;
		}
		Obj_Delete(obj);
		wait(180);
		Tlaser4(x+80*2.8*(-cos(angle)+cos(angle+11.25)),y+80*2.8*(-sin(angle)+sin(angle+11.25)),angle+11.25);
	}

	task Tlaser4(x,y,angle)
	{
		let obj=Obj_Create(OBJ_LASER);
		Obj_SetPosition(obj,x,y);
		Obj_SetAngle(obj,angle);
		ObjShot_SetGraphic(obj,BLUE01);
		ObjLaser_SetLength(obj,160);
		ObjLaser_SetWidth(obj,6);
		ObjLaser_SetSource(obj,false);
		loop(40)
		{
			Obj_SetPosition(obj,x,y);
			x+=2.8*cos(angle);
			y+=2.8*sin(angle);
			yield;
		}
		Obj_Delete(obj);
	}

	task Tshot(x,y,dir,Gx,Gy)
	{
		let obj=Obj_Create(OBJ_SHOT);
		Obj_SetPosition(obj,x,y);
		ObjShot_SetGraphic(obj,1);
		Obj_SetAutoDelete(obj,false);
		ObjShot_SetBombResist(obj,true);
		let s=0;
		loop(180)
		{
			Obj_SetSpeed(obj,2*pi*((Obj_GetX(obj)-Gx)^2+(Obj_GetY(obj)-Gy)^2)^0.5*0.09375*pi/2/180*sin(s));
			Obj_SetAngle(obj,-90*dir+atan2(Obj_GetY(obj)-Gy,Obj_GetX(obj)-Gx));
			s+=1;
			yield;
		}
		Obj_Delete(obj);
	}

	task Tmove
	{
		let miny=GetClipMinY+182;
		let maxy=GetClipMinY+202;
		if(GetX<GetCenterX-50){SetMovePosition02(GetX+rand(10,20),rand(miny,maxy),40);}
		else if(GetX>GetCenterX+50){SetMovePosition02(GetX-rand(10,20),rand(miny,maxy),40);}
		else if(rand_int(0,1)==0){SetMovePosition02(GetX-rand(10,20),rand(miny,maxy),40);}
		else{SetMovePosition02(GetX+rand(10,20),rand(miny,maxy),40);}
	}

	task Tsource
	{
		let obj=Obj_Create(OBJ_LASER);
		Obj_SetPosition(obj,GetX,GetY);
		ObjLaser_SetLength(obj,0);
		ObjLaser_SetWidth(obj,0);
		ObjShot_SetGraphic(obj,BLUE01);
		wait(40);
		Obj_Delete(obj);
	}
	#include_function ".\lib.txt"
}
