#e
#Title[@uUfCv]
#Text[]
#ScriptVersion[2]

script_enemy_main {
	let name	= "@uUfCv";

	// shot_all.png
	#include_function ".\lib_usershot.txt"
	// @񏉊ݒ
	#include_function ".\lib\setting_byakuren.txt"

	imgBlankCircle = GetCurrentScriptDirectory() ~ "\img\zamu.png";

	// ʒu
	let xIni	= GetCenterX;
	let yIni	= GetClipMinY + 64+32;

	let D_RATE = 38;
	let D_WAIT = 210;

	@Initialize {
		CutIn(YOUMU, name, "", 0, 0, 0, 0);

		SetLife(1250);
		SetTimer(50);
		SetScore(1500000);
		SetDamageRate(5, 5);

		Ini_Graphic;
		LoadGraphic(imgEffect);
		LoadGraphic(imgBlankCircle);

		TMain;
	}

	@MainLoop {
		SetCollisionA(GetX, GetY, 32);
		SetCollisionB(GetX, GetY, 16);

		yield;
	}

	@DrawLoop {
		Draw_Byakuren;
	}

	@Finalize {
		if (!IsTimeOut()) { makeTokutenItem(20); }
//		DeleteGraphic(imgBoss);
	}

	// C^XN
	task TMain {
		yield;

		sub_effects;

		TRate;
		standBy;
		powerSave;
		effect_guruguru_circle(255,255,128);

		//e
		wait(20);
		TShot;
	}

	//eˏo^XN
	task TShot()
	{
		let t = 0;
		let WAY = 20;
		
		let WT = 12;

		ATTACK_FLAG = 1;

		shot_circle_plus(2.5, 0,-2.5, 10, US_STAR_S_YELLOW, WT, 30);
		shot_circle_plus(2.5, 0, 2.5, 10, US_STAR_S_YELLOW, WT, 30);
		shot_circle_plus(2.5, rand(0,360), 360/64, 32, US_STAR_S_RED, WT*15, 30+WT*5);
		shot_circle_plus(2.5, rand(0,360), 360/64, 32, US_STAR_S_BLUE, WT*15, 30+WT*13);

		wait(120);
		Thenyori;
	}

	task Thenyori()
	{
		let byaku_optionX = [-90,90,-45,45];
		let byaku_optionY = [30,30,-60,-60];
		let byaku_optionR = [1,-1,1,-1];
		let t = 0;
		
		loop
		{
			StopSE(SE_SHOT);
			PlaySE(SE_SHOT);

			shot_henyolazer_jiki(GetX+byaku_optionX[t%4],GetY+byaku_optionY[t%4], 400, 5, 10, 30, YELLOW01, 0, 600, byaku_optionR[t%4]);
			t++;
			loop(28) {yield;}
		}

	}

	//C_[
	task shot_circle_plus(speed, angle, a_speed, way, graphic, wt, start_wt)
	{
		let base_angle = angle;
		wait(start_wt);

		loop
		{
			ascent (let n in 0 .. way)
			{
				CreateShot01(GetX, GetY, speed, base_angle+n*360/way, graphic, 5);
			}
			base_angle += a_speed;
			wait(wt);
		}
	}

	// @_ւɂ背[U[@ˊpxwver@肭Ȃ̂Ł~
	// 덷̊֌WAȂꍇ
	// ˈʒu߂px̏ꍇAOAꍇACɒe
	// memo:]e̔a=(speed*180)/(PI*achange)
	function shot_henyolazer_jiki_botu(x, y, angle, speed, width, leng, graphic, delay, killtime)
	{
		let PI = 3.1415926535;	//

		let ca = GetAngleToPlayer - angle;	//ւɂ背[U[̌ʂ̊px1/2
		let r = (((x-GetPlayerX)^2+(y-GetPlayerY)^2)^0.5)/(2*sin(ca));	//ւɂ背[U[̔a

		let ac = (speed*180)/(PI*r);	//framëړpx
		let timer = ceil(absolute(ca*2/ac));	//@܂ł̓B

		CreateLaserC(0, x, y, width, leng, graphic, delay);
		SetLaserDataC(0, 0, speed, angle, ac, 0, speed);
		SetLaserDataC(0, timer, speed, NULL, ac/2, 0, speed);	//~ړɈڍŝh߁Aւɂキ
		SetLaserDataC(0, timer+12, speed, NULL, ac/4, 0, speed);
		SetLaserDataC(0, timer+24, speed, NULL, 0, 0, speed);
		SetShotKillTime(0, killtime);
		FireShot(0);
	}

	// @_î͂@Ojւɂ背[U[@ƂȂ~̔awver
	// r=ڂz~̔a
	// muki=1 ... v  muki=-1 ... v
	function shot_henyolazer_jiki(x, y, r, speed, width, leng, graphic, delay, killtime, muki)
	{
		let PI = 3.1415926535;	//
		let gen = ((x-GetPlayerX)^2+(y-GetPlayerY)^2)^0.5;	//vC[Ƃ̋̒
		let c_rad = gen/r;	//`̊px(PʁFrad)
		let b = 2*r*sin(c_rad/2 *180/PI);	//ʂ̒
		
		let timer = b/speed;		//vC[ɐڐG鎞
		let ac = muki * c_rad/timer *180/PI;	//framȇpx
		let angle = atan2(GetPlayerY-y,GetPlayerX-x) - muki*(c_rad*180/PI)/2;
		
		CreateLaserC(0, x, y, width, leng, graphic, delay);
		SetLaserDataC(0, 0, speed, angle, ac, 0, speed);
//		SetLaserDataC(0, timer, speed, NULL, -ac/2, 0, speed);	//~ړɈڍŝh߁Aւɂキ
		SetShotKillTime(0, killtime);
		FireShot(0);
	}
}
