#e
#Title[MůCv]
#Text[]
#ScriptVersion[2]

script_enemy_main {
	let name	   = "MůCv";

	// ʒu
	let xIni	   = GetCenterX;
	let yIni	   = GetClipMinY + 120;
	
	// Tݒ
	#include_function ".\lib\setting_murasa.txt"
	// shot_all.png
	#include_function ".\lib_usershot.txt"

	let D_RATE = 37;
	let D_WAIT = 240;

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

		SetLife(1250);
		SetScore(1000000);
		SetTimer(45);
		SetDamageRate(5, 5);

		Ini_Graphic;

		TMain;
	}

	@MainLoop {
		//ʒuL^
		SetCommonData("MurasaX", GetX);
		SetCommonData("MurasaY", GetY);

		SetCollisionA(GetX, GetY, 32);
		SetCollisionB(GetX, GetY, 16);

		yield;
	}

	@DrawLoop {
		Draw_Murasa;
	}

	@Finalize {
		if (!IsTimeOut()) { makeTokutenItem(15); }

		ClearCommonDataEx("MurasaX");
		ClearCommonDataEx("MurasaY");

//		DeleteGraphic(imgBoss);
	}

	// C^XN
	task TMain {
		yield;

		TRate;
		standBy;

		//e
		TShot;
	}

	//eˏo^XN
	task TShot()
	{
		shot_uzumaki;
		
		wait(120);
		TShot_Ikari;
	}

	task shot_uzumaki()
	{
		let PI = 3.1415926535;
		let t = 0;
		let speed = 2.5;
		loop
		{
			let angle = rand(0,360);
			let r = rand(100, 150);
			let r2 = r/2 - 32;
			let a = (180*speed)/(PI*(r-r2));
			let timer = ceil(2*PI*(r-r2)/speed);
			CreateShotA(0, GetPlayerX+r*cos(angle), GetPlayerY+r*sin(angle), 3);
			SetShotDataA(0,     0, speed, angle+90, a, 0, 0, SHOT_WATER_BLUE);
			SetShotDataA(0, timer,  NULL,     NULL, 0, 0, 0, SHOT_WATER_BLUE);
			FireShot(0);
			
			t++;
			yield;
		}
	}

	//CJ
	task TShot_Ikari()
	{
		loop
		{
			splash_hishaku(1);
			CreateShotFromScript("Ikari",GetX(),GetY(),7,GetAngleToPlayer(),120,0);
			loop(120) { yield; }
			splash_hishaku(2);
			loop(60) { yield; }
			splash_hishaku(0);

			moveBoss(40, 90, 15, 40, 30, 2, 64, 60, 150);

			loop(75) { yield; }
		}
	}
}

//CJe
script_shot Ikari
{
	let SPEED_MAX = GetSpeed();	//Xs[hől
	let SPEED_REVERCE = -3;		//߂葬x
	let STOPPER = 90;		//~
	let SPEED_GAIN = SPEED_MAX/100;	//x
	let CHILD_TIMER = 9;		//eYފԊu
	let DELAY = GetDelayTime();
	let SIZE = 50;
	let reverse_flag = 0;		//isǗp

	let sx = GetX(); let sy = GetY();
	let speed = 0;
	let scale = 0;
	let ct = CHILD_TIMER;
	let t = 0;
	let SOUND_FLAG = 0;

	let imgShot	= GetCurrentScriptDirectory() ~ "\img\ikari.png";

	//}u
	let US_BALL_M_A_BLUE	= 46;

	#include_function ".\lib\lib_se.txt"

	@Initialize
	{
		LoadGraphic(imgShot);
		SetTexture(imgShot);
		SetGraphicRect(  0,   0, 128, 111);
	}
	
	@MainLoop
	{
		if(OnDelay()){
			scale += 2/DELAY; if (scale > 1) { scale = 1; }
			SetSpeed(0);

			if (SOUND_FLAG <= 0)
			{
				PlaySE(SE_KITEKI);
				SOUND_FLAG = 1;
			}
		}
		else
		{
			SetCollisionB(GetX, GetY, 50);	//蔻
			
			//obNI[C
			if (reverse_flag == 1)
			{
				SetAngle(atan2(GetY-GetCommonDataDefault("MurasaY", 0), GetX-GetCommonDataDefault("MurasaX", 0)));
				SetSpeed(SPEED_REVERCE);
				//ˈʒuɋ߂Â
				if (absolute(GetX()-GetCommonDataDefault("MurasaX", 0)) <= 12 && absolute(GetY()-GetCommonDataDefault("MurasaY", 0)) <= 12) { End(); }
			}
			//ʒ[Œ~
			else if (GetX() >= GetClipMaxX-SIZE || GetY() >= GetClipMaxY-SIZE || GetX() <= GetClipMinX+SIZE || GetY() <= GetClipMinY+SIZE)
			{
				if (SOUND_FLAG <= 1)
				{
					PlaySE(SE_WATER2);
					PlaySE(SE_DON19);
					SOUND_FLAG = 2;
				}

				SetSpeed(0);
				STOPPER--;
				if (STOPPER <= 0) {
					reverse_flag = 1;
				}
			}
			//̂܂
			else
			{
				speed += SPEED_GAIN; if (speed > SPEED_MAX) { speed = SPEED_MAX; }
				SetSpeed(speed);

				//~܂Œe
				if (ct <= 0)
				{
					let tmp_s = -180+GetSpeed()/SPEED_MAX*150;
					CreateShot02(GetX, GetY, 0, GetAngle+tmp_s, 1/120, 2, US_BALL_M_A_BLUE, 15);
					CreateShot02(GetX, GetY, 0, GetAngle-tmp_s, 1/120, 2, US_BALL_M_A_BLUE, 15);
					CreateShot02(GetX, GetY, 0, GetAngle+tmp_s, 2/120, 2, US_BALL_M_A_BLUE, 15);
					CreateShot02(GetX, GetY, 0, GetAngle-tmp_s, 2/120, 2, US_BALL_M_A_BLUE, 15);
					ct = CHILD_TIMER;
				}
				ct--;
			}
		}
	}
	@DrawLoop
	{
		if(OnDelay()){ SetGraphicScale(scale, scale); }
		SetRenderState(ADD);
		SetGraphicAngle(0, 0, 270+GetAngle);
		DrawGraphic(GetX, GetY);
	}
	@Finalize
	{
	}
}