e
#Title[WʏT]
#Text[]
#BackGround[DEFAULT]
#Player[FREE]
#ScriptVersion[2]

script_enemy_main
{
	#include_function ".\init.txt"
	#include_function ".\lib\lib_anime_Range.txt"

	@Initialize
	{
		SetLife(1700);
		StartSetting(35, 0, "");
		SetInvincibility(270);

		InitPosition(GetCenterX(), GetClipMinY() + 140);

		LoadGraphic(img_range);

		LoadUserShotData(shot_00);
		SetShotAutoDeleteClip(64, 16, 64, 16);

		InitializeAction();
		DeleteEnemyShot(ALL);
		LoadSE(se_shot1);

		T_Main();
		T_DamageRate(100, 100, 0, -1);
		T_HitTest(48);
	}

	@Finalize
	{
		DeleteGraphic(img_range);
		DeleteSE(se_shot1);
		ClearBG();
	}

	@DrawLoop
	{
		SetAlpha([255, 128][IsExMode() && OnBomb()]);
		DrawBoss(img_range);
	}

	task T_Main()
	{
		yield;

		Wait(180);
		SetColor(0, 255, 0);
		Concentration01(30);
		SetColor(255, 255, 255);
		Wait(30);

		T_Move();
		T_Circle();
	}

	task T_Move()
	{
		Wait(120);
		loop{
			SetAction(ACT_MOVE, 30);
			MoveActA(GetY(), GetY());
			Wait(120);
		}
	}

	task T_Circle()
	{
		let p_angle = -90;
		let r = 100;
		let count = 0;

		loop{
			PlaySE(se_shot1);
			CreateCircle(GetX() + r * cos(p_angle), GetY() + r * sin(p_angle), [0, -45, 45][count % 3]);
			p_angle -= 35;
			count ++;
			Wait(6);
		}
	}

	task CreateCircle(cx, cy, d_angle)
	{
		let p_angle = rand(0, 360);
		loop(14){
			CreateCircleShot(cx, cy, p_angle, d_angle);
			p_angle += 360 / 14;
		}
	}

	task CreateCircleShot(cx, cy, p_angle, d_angle)
	{
		let obj = Obj_Create(OBJ_SHOT);
		let v = 0.0;
		let a = 5.0 / 60;
		let r = 50;
		let dr = 0;
		let ddr = 0.4 / 60;

		Obj_SetPosition(obj, cx + r * cos(p_angle), cy + r * sin(p_angle));
		Obj_SetAngle(obj, p_angle - 90);
		ObjShot_SetGraphic(obj, 24);
		Obj_SetAutoDelete(obj, false);
		ObjShot_SetDelay(obj, 10);
		Wait(40);

		let angle = GetSnipeAngle(cx, cy) + d_angle;

		while( !Obj_BeDeleted(obj) ){
			v += a;
			dr += ddr;
			cx += v * cos(angle);
			cy += v * sin(angle);
			r = max(5, r - dr);
			if( IsOutOfClipRange(cx, cy, r + 16) ){
				Obj_Delete(obj);
				break;
			}
			Obj_SetPosition(obj, cx + r * cos(p_angle), cy + r * sin(p_angle));
			Obj_SetAngle(obj, p_angle - 90);
			yield;
		}
	}

	#include_function ".\f_base.txt"
	#include_function ".\f_enemy.txt"
	#include_function ".\f_boss.txt"
	#include_function ".\f_bg_mystia.txt"
}
