#ScriptVersion[2]

script_enemy_main
{
	#include_function ".\init.txt"

	let sub_id = GetArgument();
	let f_shot = 1;

	@Initialize
	{
		SetLife(9999);
		T_Main();
	}

	@Finalize
	{
		DeleteSubEnemy(sub_id);
	}

	@DrawLoop
	{
	}

	task T_Main()
	{
		yield;

		T_Shot();

		loop{
			let label = ToString(sub_id);
			SetX(GetCommonData("sub_x" ~ label));
			SetY(GetCommonData("sub_y" ~ label));
			if( GetCommonData("sub_state" ~ label) == 3 ){
				f_shot = 0;
				break;
			}
			yield;
		}
		Wait(300);
		VanishEnemy();
	}

	task T_Shot()
	{
		let k = 1;
		loop{
			let angle = rand(0, 360);
			loop(8){
				PlaySE(se_shot1);
				ascent( let i in 0..8 ){
					CreateRotateShot(GetX(), GetY(), angle + i * 45, k)
				}
				angle -= 6.7 * k;
				Wait(5);
				if( !f_shot ){
					break;
				}
			}
			k = -k;
			if( !f_shot ){
				break;
			}
		}
	}

	task CreateRotateShot(x, y, angle, k)
	{
		let obj = Obj_Create(OBJ_SHOT);
		let v = 1.0;
		let a = 0.04;
		let v_angle = 1.0 * k;
		let a_angle = -v_angle / 120;
		let count = 0;

		Obj_SetPosition(obj, x, y);
		ObjShot_SetGraphic(obj, 67);
		ObjShot_SetDelay(obj, 5);
		Wait(5);

		while( !Obj_BeDeleted(obj) ){
			v += a;
			if( count < 120 ){
				angle += v_angle;
				v_angle += a_angle;
			}
			Obj_SetSpeed(obj, v);
			Obj_SetAngle(obj, angle);
			count ++;
			yield;
		}
	}

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