#e
#Title[@Buuʌv]
#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,"@Buuʌv",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 angle=0;
		wait(120);
		loop
		{
			loop(60)
			{
				wait(6);
				loop(8)
				{
					CreateShot02(GetX,GetY,0.5,angle,0.03,3,94,0);
					CreateShot02(GetX,GetY,0.5,360-angle,0.03,3,94,0);
					angle+=45;
				}
				angle+=3.5;
			}
			cameratask;
		}
	}
	task cameratask
	{
		let basex=GetPlayerX;
		let basey=GetPlayerY;
		let r=0;
		Slow(1);
		CreateObjLaser(180,0.5,90,360,152,0,true);
		CreateObjLaser(180,0.5,270,180,152,0,true);
		CreateObjLaser(180,0.5,180,0,152,0,false);
		CreateObjLaser(180,0.5,0,180,152,0,false);
		CreateObjLaser(20,0,270,90,152,0,true);
		CreateObjLaser(30,0,0,180,152,0,false);
		loop(60)
		{
			r=0;
			if(((GetPlayerX - basex) ^ 2 + (GetPlayerY - basey) ^ 2) ^ 0.5 >2)
			{
				r=1;
			}
			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);
					if(count<25)
					{
						angle2-=1.5*r2;
					}
				}
				else
				{
					ObjLaser_SetLength(obj,absolute(Obj_GetX(obj)-basex)*2);
					if(count<25)
					{
						angle2+=1.5*r2;
					}
				}
				r-=r2;
				if(count>60)
				{
					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;
		}
	}
}