script_enemy_main{
	#include_function ".\lib\lib_files.txt"
	#include_function ".\lib\lib_item.txt"
	let imgEmeny = emnFAILY1;
	let INVISIBLE = 1;
	let DROP_ITEM = GetArgument();
	
	if (DROP_ITEM) { imgEmeny = emnFAILY2; }

	@Initialize(){
		SetDamageRate(100, 100);
		SetLife(200);
		SetScore(1000);

		SetTexture(imgEmeny);
		SetGraphicRect(  0, 224, 64, 288);
		Tmain;
	}

	@MainLoop(){
		if (!INVISIBLE)
		{
			SetCollisionA(GetX(), GetY(),24);
			SetCollisionB(GetX(), GetY(),6);
		}
		yield;
	}

	@DrawLoop(){
		if (!INVISIBLE)
		{
			DrawGraphic(GetX, GetY);
		}
	}

	@Finalize()
	{
		if (!BeVanished())
		{
			if (DROP_ITEM != 0) { MY_CreateItem(GetX, GetY, DROP_ITEM); }
			MY_CreateItemEx(GetX, GetY, 32, 10);
		}
	}

	task Tmain(){
		yield;

		TMove;
		
		while (GetY < GetClipMinY) { yield; }
		INVISIBLE = 0;
	}

	task TShot {
		let angle = rand(0, 360);
		CreateShotFromScript("shot_maker", GetX, GetY, 0, 90, 0, angle);
		if (DIFFICULTLY == d_NORM) { wait(60); }
		if (DIFFICULTLY >= d_NORM) { CreateShotFromScript("shot_maker", GetX, GetY-8, 0, 90, 0, angle+90); }
	}
	
	task TMove
	{
		SetMovePosition03(GetX, GetY+150, 10, 2);
		wait(90);
		TShot;
		wait(10);
		SetSpeed(1);
		
		let base_angle; let add_angle;
		if (GetX > GetCenterX)
			{ base_angle = 135; add_angle = 5; }
		else
			{ base_angle = 45; add_angle = -5; }

		loop(10)
		{
			SetAngle(base_angle);
			base_angle += add_angle;
			wait(8);
		}

		//ʊOɏo܂őҋ@
		while (GetClipMinX-32 <= GetX && GetClipMaxX+32 >= GetX
			&& GetClipMinY-32 <= GetY && GetClipMaxY+32 >= GetY) { yield; }
		VanishEnemy();
	}
}

// ezu
script_shot shot_maker
{
	#include_function ".\lib\lib_files.txt"

	//ݒuXs[h
	let WT = [12, 8, 5, 4] [DIFFICULTLY];

	let ADD_ANGLE = 55;	//Zpx
	let r = 16;		//zua
	let GRAPHIC = PURPLE11;
	let START_ANGLE = GetArgument();

	@Initialize
	{
		SetAngle(90);
		SetSpeed(0);
		SetBombResist();
		TMain;
	}

	@MainLoop
	{
		yield;
	}
	
	task TMain {
		yield;
		TShot;
		
		let speed = 0;
		loop(40)
		{
			speed += 0.05;
			SetSpeed(speed);
			yield;
		}
		loop(80) { yield; }
		loop(35)
		{
			speed -= 0.06;
			SetSpeed(speed);
			yield;
		}
		End;
	}

	task TShot {
		let angle = START_ANGLE;

		loop
		{
			ascent (let i in 0 .. 3)
			{
				TShot_sub(angle+i*2, 180);
			}
			angle += ADD_ANGLE;
			wait(WT);
		}
	}

	function TShot_sub(angle, offset_angle)
	{
		CreateShotA(0, GetX+r*cos(angle+offset_angle), GetY+r*sin(angle+offset_angle), 10);
		SetShotDataA(0,   0, 0, angle, 0, 0.001, 1.5, GRAPHIC);
		SetShotDataA(0, 120, 0, angle, 0,   0.1, 1.5, GRAPHIC);
		FireShot(0);
		
		StopSE(sndSHOT); PlaySE(sndSHOT);
	}

	@DrawLoop
	{}
	@Finalize
	{}
}

