#e
#Title[u[YhIvVY[U[v]
#Text[]
#ScriptVersion[2]
script_enemy_main
{
	let count=0;
	let cx=GetCenterX();//STGV[̒SxW擾
	let cy=GetCenterY();//STGV[̒SyW擾
	let wall=0;
	let imgExRumia=GetCurrentScriptDirectory~"img\ExRumia.png";
	let imgExRumiaBack=GetCurrentScriptDirectory~"img\ExRumiaBack.png";
	LoadUserShotData(GetCurrentScriptDirectory~"shot.txt");
	@Initialize
	{
		SetScore(30000);
		SetLife(300);
		SetDamageRate(8,0);
		SetMovePosition02(cx,cy-120,60);
		SetTimer(70);
		SetGraphicRect(1,1,64,64);
		SetInvincibility(180);
		LoadGraphic(imgExRumia);
		LoadGraphic(GetCurrentScriptDirectory~".\img\ma.png");
		SetTexture(imgExRumia);	
		shottask;
		movetask;
		CutIn(YOUMU,"u[YhIvVY[U[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 a=0;
		wait(120);
		loop
		{
			CreateEnemyFromScript("Fam",GetX,GetY,0,0,a);
			a++;
			if(a==9)
			{
				a=0;
			}
			wait(111);
		}
	}
	task movetask
	{
		let angle=90;
		wait(120);
		loop
		{
			SetMovePosition02(cx+208*cos(angle),(cy-150)+60*sin(angle),60);
			angle+=1;
			yield;
		}
	}
	function wait(w) 
	{
		loop(w)
		{
			yield;
		}
	}
}
script_enemy Fam
{
	let ga=GetArgument;
	let angle=0;
	let alpha=255;
	LoadUserShotData(GetCurrentScriptDirectory~"shot.txt");
	@Initialize
	{
		SetLife(500);
		SetDamageRate(0,0);
		SetInvincibility(60);
		SetTexture(GetCurrentScriptDirectory~".\img\ma.png");
		shottask;
		movetask;
	}
	@MainLoop
	{
		yield;
		if(angle>600)
		{
			VanishEnemy;
		}
	}
	@Finalize
	{
	}
	@DrawLoop
	{
		SetGraphicAngle(0,0,angle);
		SetGraphicScale(0.5,0.5);
		SetGraphicRect(0,0,64,64);
		SetAlpha(alpha);
		DrawGraphic(GetX(),GetY());
		if(angle>480)
		{
			alpha-=2;
		}
		angle++;
	}
	task shottask
	{
		SetShotAutoDeleteClip(128,128,128,128);
		wait(120);
		if(ga==0)
		{
			loop
			{
				CreateShot01(GetX-10,GetY,3,90,73,0);
				CreateShot01(GetX+10,GetY,3,90,73,0);
				wait(20);
				if(angle>420)
				{
					break;
				}
			}
		}
		if(ga==1)
		{
			loop
			{
				BombShot(1.5,90,84,);
				wait(60);
				if(angle>420)
				{
					break;
				}
			}
		}
		if(ga==2)
		{
			loop
			{
				HomingShot(2,90,104,);
				wait(30);
				if(angle>420)
				{
					break;
				}
			}
		}
		if(ga==3)
		{
			loop
			{
				CreateShot01(GetX+20*cos(GetAngleToPlayer),GetY+20*sin(GetAngleToPlayer),3,GetAngleToPlayer,BLUE32,0);
				CreateShot01(GetX+20*cos(GetAngleToPlayer+90),GetY+20*sin(GetAngleToPlayer+90),3,GetAngleToPlayer,BLUE32,0);
				CreateShot01(GetX+20*cos(GetAngleToPlayer+180),GetY+20*sin(GetAngleToPlayer+180),3,GetAngleToPlayer,BLUE32,0);
				CreateShot01(GetX+20*cos(GetAngleToPlayer-90),GetY+20*sin(GetAngleToPlayer-90),3,GetAngleToPlayer,BLUE32,0);
				wait(30);
				if(angle>420)
				{
					break;
				}
			}
		}
		if(ga==4)
		{
			loop
			{
				CreateShot01(GetX,GetY,4,65,103,0);
				CreateShot01(GetX,GetY,4,90,103,0);
				CreateShot01(GetX,GetY,4,115,103,0);
				wait(30);
				if(angle>420)
				{
					break;
				}
			}
		}
		if(ga==5)
		{
			let s=0;
			loop
			{
				CreateShotA(s,rand(GetX-3,GetX+3),rand(GetY-3,GetY+3),20);	
				SetShotDataA(s,0,3,rand(85,95),0,0,0,46);
				SetShotKillTime(s,120);
				FireShot(s);
				wait(5);
				if(angle>420)
				{
					break;
				}
			}
		}
		if(ga==6)
		{
			loop
			{
				CreateShot01(GetX-10,GetY,3,90,79,0);
				CreateShot01(GetX+10,GetY,3,90,79,0);
				wait(10);
				if(angle>420)
				{
					break;
				}
			}
		}
		if(ga==7)
		{
			loop
			{
				SnakeShot(2,90,20,84);
				wait(120);
				if(angle>420)
				{
					break;
				}
			}
		}
		if(ga==8)
		{
			loop
			{
				BombShot(2.5,120,84,);
				BombShot(2.5,60,84,);
				wait(120);
				if(angle>420)
				{
					break;
				}
			}
		}
	}
	task movetask
	{
		let r=0;
		let angle=0;
		let a=0;
		loop
		{
			if(ga==0)
			{
				angle=180;
				a=60
			}
			if(ga==1)
			{
				angle=0;
				a=60
			}
			if(ga==2)
			{
				angle=240;
				a=60
			}
			if(ga==3)
			{
				angle=60;
				a=60
			}
			if(ga==4)
			{
				angle=90;
				a=60
			}
			if(ga==5)
			{
				break; 
			}
			if(ga==7)
			{
				angle=300;
				a=60
			}
			if(ga==8)
			{
				angle=120;
				a=60
			}
			SetX(GetEnemyX+r*cos(angle));
			SetY(GetEnemyY+r*sin(angle));
			if(ga==6)
			{
				angle+=2;
				a=120;
				if(GetX<GetClipMinX)
				{
					SetX(GetX+384);
				}
				if(GetX>GetClipMaxX)
				{
					SetX(GetX-384);
				}
			}
			if(r<a)
			{
				r+=2
			}
			yield;
		}
	}
	task BombShot(let speed,let angle, let graphic,)
	{
		let obj = Obj_Create(OBJ_SHOT);
		Obj_SetPosition(obj,GetX, GetY);
		Obj_SetSpeed(obj, speed);
		Obj_SetAngle(obj, angle);
		ObjShot_SetGraphic(obj, graphic);
		ObjShot_SetDelay(obj, 0);
		while(!Obj_BeDeleted(obj))
		{
			if(Obj_GetSpeed(obj)<3)
			{
				Obj_SetSpeed(obj,Obj_GetSpeed(obj)+0.03)
			}
			if(Obj_GetX(obj)<GetClipMinX)
			{
				loop(10)
				{
					CreateShot01(Obj_GetX(obj),Obj_GetY(obj),rand(0.5,1.5),rand(0,360),12,0);
				}
				break; 
			}
			if(Obj_GetX(obj)>GetClipMaxX)
			{
				loop(10)
				{
					CreateShot01(Obj_GetX(obj),Obj_GetY(obj),rand(0.5,1.5),rand(0,360),12,0);
				}
				break; 
			}
			if(Obj_GetY(obj)<GetClipMinY)
			{
				loop(10)
				{
					CreateShot01(Obj_GetX(obj),Obj_GetY(obj),rand(0.5,1.5),rand(0,360),12,0);
				}
				break; 
			}
			if(Obj_GetY(obj)>GetClipMaxY)
			{
				loop(10)
				{
					CreateShot01(Obj_GetX(obj),Obj_GetY(obj),rand(0.5,1.5),rand(0,360),12,0);
				}
				break; 
			}
			yield;
		}
	}
	task SnakeShot(let speed,let angle,let length,let graphic,)
	{
		let obj = Obj_Create(OBJ_SINUATE_LASER);
		Obj_SetPosition(obj,GetX, GetY);
		Obj_SetSpeed(obj, speed);
		Obj_SetAngle(obj, angle);
		ObjShot_SetGraphic(obj, graphic);
		ObjShot_SetDelay(obj, 0);
		ObjSinuateLaser_SetLength(obj, length);
		ObjSinuateLaser_SetWidth(obj, 7);
		while(!Obj_BeDeleted(obj))
		{
			if( Obj_GetY(obj)>GetPlayerY-3&&Obj_GetY(obj)<GetPlayerY+3 )
			{
				Obj_SetSpeed(obj,speed*2);
				if(Obj_GetX(obj)>GetPlayerX)
				{
					Obj_SetAngle(obj, 180);
				}
				else
				{
					Obj_SetAngle(obj, 0);
				}
				break; 
			}
			yield;
		}
	}
	task HomingShot(let speed,let angle, let graphic,)
	{
		let obj = Obj_Create(OBJ_SHOT);
		Obj_SetPosition(obj,GetX, GetY);
		Obj_SetSpeed(obj, speed);
		Obj_SetAngle(obj, angle);
		ObjShot_SetGraphic(obj, graphic);
		ObjShot_SetDelay(obj, 0);
		loop(180)
		{
			let angleToPlayer = atan2(GetPlayerY-Obj_GetY(obj), GetPlayerX-Obj_GetX(obj));
			if(Obj_BeDeleted(obj))
			{
				break;
			}
			if(sin(angleToPlayer - Obj_GetAngle(obj))>0)
			{
				Obj_SetAngle(obj, Obj_GetAngle(obj) + 1);
			}
			else
			{
				Obj_SetAngle(obj, Obj_GetAngle(obj) - 1);
			}
			yield;
		}
	}
	function wait(w) 
	{
		loop(w)
		{
			yield;
		}
	}
}