e
#Title[́uˌXg[gCuv]
#Text[]
#BackGround[DEFAULT]
#Player[FREE]
#ScriptVersion[2]

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

	@Initialize
	{
		StartPlural();

		SetLife(550);
		StartSetting(30, 1000000, "́uˌXg[gCuv");
		SetInvincibility(120);

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

		LoadGraphic(img_mystia);

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

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

		T_Main();
		T_DamageRate(20, 20, 240, -1);
		T_HitTest(48);
	}

	@Finalize
	{
		if( GotSpellCardBonus() ){
			SetCommonData("mid_item", 1);
		}
		CreateItemCircle(GetX(), GetY(), 20, 50);
		DeleteGraphic(img_mystia);
		DeleteSE(se_shot1);
		DeleteSE(se_shot2);
		ClearBG();
	}

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

	task T_Main()
	{
		yield;

		SetAction(ACT_SPELL, 60);

		Wait(90);

		T_SongA();
		T_SongB();
		T_SongC();
	}

	task T_SongA()
	{
		loop{
			let angle = rand(0, 360);
			let p_angle = rand(0, 360);
			loop(15){
				PlaySE(se_shot1);
				ascent( let i in 0..36 ){
					CreateWaveShot(GetX(), GetY(), angle + i * 360 / 36, p_angle);
				}
				Wait(5);
			}
			Wait(200 - 15 * 5);
		}
	}

	task T_SongB()
	{
		let k = 1;
		loop{
			Wait(16);
			let angle = -90 - 90 * k + rand(-360 / 90, 360 / 90);
			ascent( let i in 0..30 ){
				PlaySE(se_shot1);
				CreateStopShot(GetX(), GetY(), angle - i * k * 360 / 30, -k);
				Wait(2);
			}
			k = -k;
			Wait(200 - 30 * 2 - 16);
		}
	}

	task T_SongC()
	{
		loop{
			Wait(110);
			let angle = rand(0, 360);
			ascent( let i in 0..32 ){
				PlaySE(se_shot1);
				CreateShot02(GetX(), GetY(), 0.5, angle + i * 360 / 32,         0.03, 3.5, 194, 0);
				CreateShot02(GetX(), GetY(), 0.5, angle + (i + 0.5) * 360 / 32, 0.03, 2.5, 44, 0);
			}
			Wait(200 - 110);
		}
	}

	task CreateStopShot(x, y, angle, k)
	{
		let v1_base = 5.0;
		let v2_base = 1.0;
		let dv1 = v1_base / 8;
		let dv2 = v2_base / 3;
		ascent( let i in 0..8 ){
			let v1 = v1_base - i * dv1;
			let v2 = v2_base + i * dv2;
			let a1 = -v1 / 60;
			let a2 = v2 / 30;
			CreateShotA(0, x, y, 0);
			SetShotDataA(0,   0, v1, angle, 0, a1, 0.0, 14);
			SetShotDataA(0,  80, 0.0, angle - i * 2.5 * k, 0, 0.1, 4.5, 14);
			//SetShotDataA(0, 110, NULL, NULL, 0, -a2, 1.0, 14);
			FireShot(0);
		}
	}

	task CreateWaveShot(x, y, angle, p_angle)
	{
		let obj = Obj_Create(OBJ_SHOT);

		Obj_SetPosition(obj, x, y);
		Obj_SetSpeed(obj, 4.0);
		ObjShot_SetGraphic(obj, 104);

		while( !Obj_BeDeleted(obj) ){
			p_angle += 9;
			Obj_SetAngle(obj, angle + 30 * sin(p_angle));
			yield;
		}
	}

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