e
#Title[uANeBuOpYv]
#Text[]
#BackGround[DEFAULT]
#Player[FREE]
#ScriptVersion[2]

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

	let alpha = 255;

	@Initialize
	{
		SetLife(800);
		StartSetting(72, 800000, "uANeBuOpYv");
		SetInvincibility(120);
		SetExMode();

		InitPosition(GetCenterX(), GetCenterY());

		LoadGraphic(img_range);
		LoadGraphic(img_warn);

		LoadUserShotData(shot_00);
		SetShotAutoDeleteClip(96, 32, 96, 32);
		SetDurableSpellCard();

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

		T_Main();
		T_DamageRate(20, 20, 360, -1);
	}

	@Finalize
	{
		CreateItemCircle(GetX(), GetY(), 20, 50);
		DeleteGraphic(img_range);
		DeleteGraphic(img_warn);
		DeleteSE(se_shot1);
		DeleteSE(se_shot2);
		DeleteSE(se_charge);
		ClearBG();
	}

	@DrawLoop
	{
		SetAlpha(alpha);
		DrawBoss(img_range);
	}

	task T_Main()
	{
		yield;

		SetAction(ACT_SPELL, 60);

		Wait(90);
		Concentration01(150);
		Concentration01(150);
		Wait(120);
		PlaySE(se_charge);
		alpha = 128;
		Wait(90);

		T_Shot0();
	}

	task T_Shot0()
	{
		let r1 = 80;

		ascent( let i in 0..64 ){
			let angle1 = -90 - i * 360 / 64;
			let x = GetCenterX() + r1 * cos(angle1);
			let y = GetCenterY() + r1 * sin(angle1) - 120;
			T_SetBullet(x, y, i * 3, 208);
			Wait(3);
		}
		SetAction(ACT_SHOT_B, 240 - 192);
		Concentration01(240 - 192);
		Wait(300);
		T_Shot1();
	}

	task T_Shot1()
	{
		let r1 = 70;
		let r2 = 70;
		let r3 = 70;

		ascent( let i in 0..64 ){
			let angle1 =  90 - i * 360 / 64;
			let angle2 = -90 - i * 360 / 64;
			let angle3 =  90 - i * 360 / 64;
			let x = GetCenterX() + r1 * cos(angle1) - 150;
			let y = GetCenterY() + r1 * sin(angle1) + 150;
			T_SetBullet(x, y, i * 3, 201);
			let x = GetCenterX() + r2 * cos(angle2);
			let y = GetCenterY() + r2 * sin(angle2) - 150;
			T_SetBullet(x, y, i * 3, 201);
			let x = GetCenterX() + r3 * cos(angle3) + 150;
			let y = GetCenterY() + r3 * sin(angle3) + 150;
			T_SetBullet(x, y, i * 3, 201);
			Wait(3);
		}
		SetAction(ACT_SHOT_B, 240 - 192);
		SetColor(255, 64, 64);
		Concentration01(240 - 192);
		SetColor(255, 255, 255);
		Wait(300);
		T_Shot2();
	}

	task T_Shot2()
	{
		let r1 = 160;
		let r2 = 160;

		ascent( let i in 0..64 ){
			let angle1 = -45 - i * 360 / 64;
			let angle2 = -45 - i * 360 / 64;
			let x = GetCenterX() + r1 * cos(angle1) - 30;
			let y = GetCenterY() + r1 * sin(angle1) - 60;
			T_SetBullet(x, y, i * 3, 202);
			let x = GetCenterX() + r2 * cos(angle2) + 30;
			let y = GetCenterY() + r2 * sin(angle2) + 60;
			T_SetBullet(x, y, i * 3, 202);
			Wait(3);
		}
		SetAction(ACT_SHOT_B, 240 - 192);
		SetColor(255, 128, 64);
		Concentration01(240 - 192);
		SetColor(255, 255, 255);
		Wait(300);
		T_Shot3();
	}

	task T_Shot3()
	{
		let r1 = 220;
		let r2 = 100;

		ascent( let i in 0..64 ){
			let angle1 = -90 + i * 360 / 64;
			let angle2 = -90 - i * 360 / 64;
			let x = GetCenterX() + r1 * cos(angle1);
			let y = GetCenterY() + r1 * sin(angle1);
			T_SetBullet(x, y, i * 3, 203);
			let x = GetCenterX() + r2 * cos(angle2);
			let y = GetCenterY() + r2 * sin(angle2);
			T_SetBullet(x, y, i * 3, 203);
			Wait(3);
		}
		SetAction(ACT_SHOT_B, 240 - 192);
		SetColor(255, 255, 64);
		Concentration01(240 - 192);
		SetColor(255, 255, 255);
		Wait(300);
		T_Shot4();
	}

	task T_Shot4()
	{
		let r1 = 220;
		let r2 = 200;
		let r3 = 180;

		ascent( let i in 0..64 ){
			let angle1 = 150 - i * 360 / 64;
			let angle2 =  30 - i * 360 / 64;
			let angle3 = -90 - i * 360 / 64;
			let x = GetCenterX() + r1 * cos(angle1);
			let y = GetCenterY() + r1 * sin(angle1);
			T_SetBullet(x, y, i * 3, 204);
			let x = GetCenterX() + r2 * cos(angle2);
			let y = GetCenterY() + r2 * sin(angle2);
			T_SetBullet(x, y, i * 3, 204);
			let x = GetCenterX() + r3 * cos(angle3);
			let y = GetCenterY() + r3 * sin(angle3);
			T_SetBullet(x, y, i * 3, 204);
			Wait(3);
		}
		SetAction(ACT_SHOT_B, 240 - 192);
		SetColor(64, 255, 64);
		Concentration01(240 - 192);
		SetColor(255, 255, 255);
		Wait(300);
		T_Shot5();
	}

	task T_Shot5()
	{
		let r1 = 220;
		let r2 = 200;

		ascent( let i in 0..16 ){
			let angle1 = -90 + i * 360 / 16;
			let angle2 = -90 - i * 360 / 16;
			let x = GetCenterX() + r1 * cos(angle1);
			let y = GetCenterY() + r1 * sin(angle1);
			T_SetBullet(x, y, i * 12, 205);
			let x = GetCenterX() + r2 * cos(angle2);
			let y = GetCenterY() + r2 * sin(angle2);
			T_SetBullet(x, y, i * 12, 205);
			Wait(12);
		}
		SetAction(ACT_SHOT_B, 240 - 192);
		SetColor(64, 255, 255);
		Concentration01(240 - 192);
		SetColor(255, 255, 255);
		Wait(360);
		T_Shot6();
	}

	task T_Shot6()
	{
		let cr = 130;
		let r1 = 100;

		ascent( let i in 0..64 ){
			let angle1 = 180 - i * 360 / 64;
			let dx = r1 * cos(angle1);
			let dy = r1 * sin(angle1);
			ascent( let j in 0..6 ){
				let p_angle = j * 360 / 6;
				let x = GetCenterX() + cr * cos(p_angle) + dx;
				let y = GetCenterY() + cr * sin(p_angle) + dy;
				T_SetBullet(x, y, i * 3, 206);
			}
			Wait(3);
		}
		SetAction(ACT_SHOT_B, 240 - 192);
		SetColor(64, 64, 255);
		Concentration01(240 - 192);
		SetColor(255, 255, 255);
		Wait(360);
		T_Shot7();
	}

	task T_Shot7()
	{
		let r1 = 20;
		let angle = rand(0, 360);

		loop{
			let cx = GetCenterX() + 200 * cos(angle);
			let cy = GetCenterY() + 200 * sin(angle);
			ascent( let i in 0..12 ){
				let angle1 = angle + i * 360 / 12;
				let x = cx + r1 * cos(angle1);
				let y = cy + r1 * sin(angle1);
				T_SetBullet2(x, y, 207);
			}
			angle += 67;
			Wait(15);
		}
	}

	task T_SetBullet(x, y, wait, type)
	{
		CreateShotFromScript("Warn", x, y, 0, 0, 0, [type, 240 - wait]);
		Wait(240 - wait);
		PlaySE(se_shot1);
		CreateSnipeShot(x, y, 4.0, 30 + wait, type);
	}

	task T_SetBullet2(x, y, type)
	{
		CreateShotFromScript("Warn", x, y, 0, 0, 0, [type, 30]);
		Wait(30);
		PlaySE(se_shot1);
		CreateSnipeShot(x, y, 3.0, 30, type);
	}

	task CreateSnipeShot(x, y, v, wait, type)
	{
		let obj = Obj_Create(OBJ_SHOT);

		Obj_SetPosition(obj, x, y);
		ObjShot_SetGraphic(obj, type);
		ObjShot_SetDelay(obj, 20);
		Wait(wait);

		if( !Obj_BeDeleted(obj) ){
			PlaySE(se_shot1);
			Obj_SetSpeed(obj, v);
			Obj_SetAngle(obj, GetSnipeAngle(x, y));
		}
	}

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

script_shot Warn
{
	#include_function ".\init.txt"

	let arg;

	@Initialize
	{
		arg = GetArgument();

		T_Main();
	}

	@Finalize
	{
	}

	@DrawLoop
	{
		SetTexture(img_warn);
		SetGraphicRect(0, 0, 10, 10);
		DrawGraphic(GetX(), GetY());
	}

	@MainLoop
	{
		yield;
	}

	task T_Main()
	{
		PlaySE(se_shot1);
		Wait(arg[1]);
		End();
	}

	#include_function ".\f_base.txt"
}
