#e
#Title[@BuV[gEUEgD[Xv]
#Text[]
#ScriptVersion[2]
script_enemy_main
{
	let count=0;
	let cx=GetCenterX();//STGV[̒SxW擾
	let cy=GetCenterY();//STGV[̒SyW擾
	let doll=0;
	let imgExRumia=GetCurrentScriptDirectory~"img\ExRumia.png";
	let imgExRumiaBack=GetCurrentScriptDirectory~"img\ExRumiaBack.png";
	LoadUserShotData(GetCurrentScriptDirectory~"shot.txt");
	@Initialize
	{
		SetScore(30000);
		SetLife(600);
		SetDamageRate(10,10);
		SetMovePosition02(cx,cy-120,60);
		SetTimer(70);
		SetGraphicRect(1,1,64,64);
		SetInvincibility(180);
		LoadGraphic(imgExRumia);
		SetTexture(imgExRumia);	
		shottask;
		CutIn(YOUMU,"@BuV[gEUEgD[Xv",0,0,0,0,0);//XyJ[h\
	}
	@MainLoop
	{
		yield;
		SetCollisionA(GetX(),GetY(),24);//蔻(e)o^
		SetCollisionB(GetX(),GetY(),24);//蔻(̓)o^
	}
	@Finalize
	{
		loop(8)
		{
			CreateItem(ITEM_SCORE,cx+rand(-100,100),rand(20,100));
		}
	}
	@DrawLoop
	{
		SetGraphicRect(1,1,64,64);
		SetAlpha(255);
		DrawGraphic(GetX(),GetY());
	}
	task shottask
	{
		let s=0;
		let angle=0;
		wait(120);
		loop
		{
			loop(20)
			{
				wait(5);
				loop(10)
				{
					CreateShotA(s,GetX,GetY,10);
					SetShotDataA(s,0,2,360-angle,-1,0.02,30,89);
					FireShot(s);
					angle+=36;
				}
				wait(5);
				loop(10)
				{
					CreateShotA(s,GetX,GetY,10);
					SetShotDataA(s,0,2,angle,1,0.02,30,89);
					FireShot(s);
					angle+=36;
				}
				angle+=2;
			}
			cameratask;
		}
	}
	task cameratask
	{
		let basex=GetX;
		let basey=GetY;
		let r=0;
		Slow(1);
		CreateObjLaser(180,1.5,90,330,152,0,true);
		CreateObjLaser(180,1.5,270,150,152,0,true);
		CreateObjLaser(180,1.5,180,30,152,0,false);
		CreateObjLaser(180,1.5,0,210,152,0,false);
		CreateObjLaser(20,0,270,90,152,0,true);
		CreateObjLaser(30,0,0,180,152,0,false);
		loop(74)
		{
			r=0;
			if(((GetPlayerX - basex) ^ 2 + (GetPlayerY - basey) ^ 2) ^ 0.5 >4.1)
			{
				r=4;
			}
			basex=basex+r*cos(atan2(GetPlayerY-basey,GetPlayerX-basex));
			basey=basey+r*sin(atan2(GetPlayerY-basey,GetPlayerX-basex));
			yield;
		}
		Slow(0);
		wait(20);

		task CreateObjLaser(let r, let r2, let angle,let angle2, let graphic, let delay, let side)
		{
			let count =0;
			let obj = Obj_Create(OBJ_LASER);
			Obj_SetPosition(obj, basex+r*cos(angle2),basey+r*sin(angle2));
			Obj_SetSpeed(obj, 0);
			Obj_SetAngle(obj, angle);
			ObjShot_SetGraphic(obj, graphic);
			ObjShot_SetDelay(obj, delay);
			Obj_SetAutoDelete(obj,false);
			Obj_SetCollisionToPlayer(obj,false);
			if(side)
			{
				ObjLaser_SetLength(obj,absolute(Obj_GetY(obj)-basey)*2);
			}
			else
			{
				ObjLaser_SetLength(obj,absolute(Obj_GetX(obj)-basex)*2);
			}
			ObjLaser_SetWidth(obj,2);
			ObjLaser_SetSource(obj, false);
		        loop(delay){ yield; }
			while(!Obj_BeDeleted(obj))
			{
				Obj_SetPosition(obj, basex+r*cos(angle2),basey+r*sin(angle2));
				if(side)
				{
					ObjLaser_SetLength(obj,absolute(Obj_GetY(obj)-basey)*2);
				}
				else
				{
					ObjLaser_SetLength(obj,absolute(Obj_GetX(obj)-basex)*2);
				}
				r-=r2;
				if(count>74)
				{
					break;
				}
				count++;
				yield;
			}
			if(absolute(basex-GetPlayerX)<=absolute(Obj_GetX(obj)-basex)&&absolute(basey-GetPlayerY)<=absolute(Obj_GetY(obj)-basey))
			{
				let s=0;
				CreateShotA(s,GetPlayerX,GetPlayerY,0);	
				SetShotDataA(s,0,0,0,0,0,0,255);
				SetShotKillTime(s,10);
				FireShot(s);
			}
			Obj_Delete(obj);
		}
	}
	function wait(w) 
	{
		loop(w)
		{
			yield;
		}
	}
}