#ScriptVersion[2]

script_enemy_main
{
	#include_function ".\init.txt"

	@Initialize
	{
		SetLife(150);

		SetTexture(img_fairy);

		LoadUserShotData(shot_00);

		InitializeAction();
		SetFairyType(3);

		T_Main();
		T_HitTest(32);
	}

	@Finalize
	{
		if( GetLife() <= 0 ){
			CreateItemCircle(GetX(), GetY(), 5, 8);
		}
	}

	@DrawLoop
	{
		DrawGraphic(GetX(), GetY());
	}

	task T_Main()
	{
		yield;

		T_Move();
		T_Shot();
		Wait(10);

		loop{
			if( IsOutOfClipRange(GetX(), GetY(), 16) ){
				VanishEnemy();
			}
			yield;
		}
	}

	task T_Move()
	{
		let v = GetSpeed();
		let a = -v / 60;
		loop(60){
			v += a;
			SetSpeed(v);
			yield;
		}
		if( GetX() < GetCenterX() ){
			SetAngle(-110);
		}
		else{
			SetAngle(-70);
		}
		a = 0.05;
		loop(60){
			v += a;
			SetSpeed(v);
			yield;
		}
	}

	task T_Shot()
	{
		Wait(20);
		PlaySE(se_shot2);
		let angle = GetAngleToPlayer();
		ascent( let i in 0..36 ){
			CreateShotFromScript("Circle", GetX(), GetY(), 4.0, angle, 0, i * 10);
		}
	}

	#include_function ".\f_base.txt"
	#include_function ".\f_enemy.txt"
	#include_function ".\f_anime_fairy.txt"
}

script_shot Circle
{
	@Initialize
	{
		SetDefault(17);
		T_Main();
	}

	@Finalize
	{
	}

	@DrawLoop
	{
		DrawGraphicDefault();
	}

	@MainLoop
	{
		SetCollisionBDefault();
		yield;
	}

	task T_Main()
	{
		let r = 0;
		let p_angle = GetArgument();
		let cx = GetX();
		let cy = GetY();
		let vcx = GetSpeed() * cos(GetAngle());
		let vcy = GetSpeed() * sin(GetAngle());

		SetSpeed(0);
		loop{
			cx += vcx;
			cy += vcy;
			if( IsOutOfClipRange(cx, cy, r) ){
				End();
			}
			let x = cx + r * cos(p_angle);
			let y = cy + r * sin(p_angle);
			SetX(x);
			SetY(y);
			r += 1.3;
			p_angle -= 2;
			yield;
		}
	}

	#include_function ".\f_base.txt"
}
