#e[Player]	//@XNvgł邱Ƃ܂
#ScriptVersion[2]	//XNvgo[W2K{ł
#Menu[S@Ł@Lunatic]		//@Iʂŕ\郁j[ł
#Text[S̈Ł@
@@@̂LĂ܂B]	//@Iʂŕ\eLXgł
#Image[.\Raiki_darkSelect.png]	//@Iʂŕ\摜t@Cւ̃pXł
#ReplayName[Raiki_dark]	//vCIɕ\镶łB8ȓłB


script_player_main
{@
	let current = GetCurrentScriptDirectory();//JgfBNg擾
	let imgRaiki_dark = current~"Raiki_dark.png";
	let imgRaiki_darkCutIn = current~"Raiki_darkCutIn.png";
	let shotCount = -1;//eAŔ˂邽߂̕ϐ
	let bNextShot = false;//񉟂łeA˂邽߂̕ϐ(Â炢)
	let objShot = NULL;//Ue
	task slowShot()
	{	//ᑬړ̗Ue
		//Gǔă_[W^
		if(!Obj_BeDeleted(objShot)){return;}//1݂Ȃ
		objShot = Obj_Create(OBJ_SHOT);
		Obj_SetX(objShot, GetPlayerX);//xWݒ
		Obj_SetY(objShot, GetPlayerY);//yWݒ;
		Obj_SetSpeed(objShot, 30);//xݒ
		ObjShot_SetGraphic(objShot, 2);//摜ݒ
		ObjShot_SetDamage(objShot, 200);//_[Wݒ
		ObjShot_SetPenetration(objShot, 1000000);//ђʗ͓͂Kɑ傫
		while( !Obj_BeDeleted(objShot) )
		{//폜܂Ń[vs		
			//z[~O
			let toAngle=atan2(GetEnemyY()-Obj_GetY(objShot), GetEnemyX()-Obj_GetX(objShot));		
			Obj_SetAngle(objShot, toAngle);
			yield;
		}

	}
	@Initialize
	{	
		//@̏Ɉ񂾂Ăяo镔ł
		SetPlayerLifeImage(imgRaiki_dark, 1, 5, 49, 60);//c@̉摜
		LoadGraphic(imgRaiki_dark);
		LoadPlayerShotData(current~"Raiki_darkShotData.txt");
                let m_nPlayerSpeedFast = 3000;
                let m_nPlayerSpeedSlow = 100;
                let m_nPlayerIntersectionRadius = 0.00000000000000000000001;
                let m_nPlayerInitialBombCount = 13;
                let m_nPlayerItemCollectLine = 100000;
                let m_nPlayerIntersectionRadius = 1000000000000000000;



	}
	
	@MainLoop
	{	
		//t[s镔ł
		//
		if((GetKeyState(VK_SHOT)==KEY_PUSH || GetKeyState(VK_SHOT)==KEY_HOLD || bNextShot==true) && shotCount==-1)
		{
			shotCount = 0;
			bNextShot = false;
		}
		if(GetKeyState(VK_SHOT)==KEY_HOLD && shotCount>0)
		{
			bNextShot = true;
		}
		if(GetKeyState(VK_SLOWMOVE)==KEY_PUSH || GetKeyState(VK_SLOWMOVE)==KEY_HOLD)
		{	//ᑬړ̎e
			if(shotCount != -1)
			{
				slowShot();
			}
			if(shotCount%5 == 0)
			{
				CreatePlayerShot01(GetPlayerX(), GetPlayerY(), 15, 265, 1.3, 2, 1);
				CreatePlayerShot01(GetPlayerX(), GetPlayerY(), 15, 270, 1.5, 3, 1);
				CreatePlayerShot01(GetPlayerX(), GetPlayerY(), 15, 275, 1.3, 2, 1);
			}
		}
		else
		{	//ړ̎e
			Obj_Delete(objShot);//ړ͒ᑬړ̓e폜
			if(shotCount%5 == 0)
			{
				CreatePlayerShot01(GetPlayerX(), GetPlayerY(), 15, 255, 1.3, 1, 1);
				CreatePlayerShot01(GetPlayerX(), GetPlayerY(), 15, 265, 1.5, 2, 1);
				CreatePlayerShot01(GetPlayerX(), GetPlayerY(), 15, 270, 1.7, 3, 1);
				CreatePlayerShot01(GetPlayerX(), GetPlayerY(), 15, 275, 1.5, 2, 1);
				CreatePlayerShot01(GetPlayerX(), GetPlayerY(), 15, 285, 1.3, 1, 1);
			}		
		}

		if(shotCount >= 0)
		{
			shotCount++;
		}
		if(shotCount == 30)
		{
			shotCount=-1;
		}
		
			
		yield;
	}
	@Missed{}
	@SpellCard
	{
		//XyJ[h𔭓uԂɌĂ΂镔ł
		//GetKeyStateňړԂ𔻒f肵
		//ĂяoXyIт܂	
		if(GetKeyState(VK_SLOWMOVE)==KEY_PUSH || GetKeyState(VK_SLOWMOVE)==KEY_HOLD)
		{	
			//ᑬړ
			UseSpellCard("Demarcation", true);
		}
		else
		{
			//ړ
			UseSpellCard("Demarcation", false);
		}
		
		//JbgC
		CutIn(KOUMA,"_[NlXEg[g", imgRaiki_darkCutIn);
	}
	
	@DrawLoop
	{
		//`惋[vBXLbvȂ1t[1s܂
		SetColor(255, 255, 255);
		SetRenderState(ALPHA);
		SetTexture(imgRaiki_dark);
		if(GetKeyState(VK_LEFT)==KEY_PUSH || GetKeyState(VK_LEFT)==KEY_HOLD)
		{
			SetGraphicRect(1, 133, 49, 188);
		}
		else if(GetKeyState(VK_RIGHT)==KEY_PUSH || GetKeyState(VK_RIGHT)==KEY_HOLD)
		{
			SetGraphicRect(1, 69, 49, 124);
		}
		else 
		{
			SetGraphicRect(1, 5, 49, 60);
		}
		DrawGraphic(GetPlayerX(), GetPlayerY());	
	}
	
	@Finalize
	{
		//XNvgIɈ񂾂Ăяo镔ł
		DeleteGraphic(imgRaiki_dark);
	}
}

script_spell Demarcation
{
	//ᑬړ́AG̍Wɒɏo
	//ړ́A@̎͂ɏo
	let bSlowMove = GetArgument();//ᑬړtO
	let current = GetCurrentScriptDirectory();
	let imgEffect = current~"Raiki_darkSpell.png";

	@Initialize
	{
		LoadGraphic(imgEffect);
		SetPlayerInvincibility(30000000);//GԂݒ
		run();
	}
	@MainLoop
	{
		yield;
	}
	@Finalize
	{
		DeleteGraphic(imgEffect);
	}
	task run()
	{
		loop(48){yield;}//gݍ݂̃JbgCI܂őҋ@
		effect(0);
		effect(1);
		loop(220){;yield;}
		End();
	}

	task effect(num)
	{	//GtFNgp^XN
		let tv=0;
		let angle=0;
		let alpha=0;	
		task alphaState
		{	//lύX邽߂̃^XN
			alpha=0;
			loop(256/3){alpha+=3; yield;}
			loop(90){yield;}
			loop{alpha-=8; yield;}
		}
		task lineEffect
		{
			loop(120){concentrationLine();loop(1){yield;}}
		}
		alphaState;
		if(bSlowMove==true){lineEffect;}
		
		let obj = Obj_Create(OBJ_SPELL);//XyIuWFNg쐬
		ObjEffect_SetTexture(obj, imgEffect);//eNX`ݒ
		ObjEffect_SetRenderState(obj, ADD);//`@ݒ
		ObjEffect_SetPrimitiveType(obj, PRIMITIVE_TRIANGLESTRIP);//v~eBu^Cvݒ
		ObjEffect_CreateVertex(obj, 10);//_10
		
		ascent(i in 0..5)
		{
			let angle = -45+i*90;
			let x;
			let y;
			if(bSlowMove)
			{
				//ᑬړ͔͈͂
				x = 192*cos(angle);
				y = 192*sin(angle);
			}
			else
			{
				//ړ͍L͈
				x = 512*cos(angle);
				y = 512*sin(angle);
			}
			ObjEffect_SetVertexXY(obj, i*2, x, y);//_̍Wݒ
			ObjEffect_SetVertexXY(obj, i*2+1, 0, 0);
			ObjEffect_SetVertexColor(obj, i*2, 0, 255, 255, 255);//_J[ݒ
		}
		
		while(!Obj_BeDeleted(obj))
		{
			tv-=1;
			if(num == 0){angle+=1;}
			else if(num == 1){angle-=1;}
			ObjEffect_SetAngle(obj, 0, 0, angle);//`pxݒ
			if(bSlowMove)
			{	//ᑬړ
				Obj_SetPosition(obj, GetEnemyX, GetEnemyY);
				SetIntersectionCircle(GetEnemyX, GetEnemyY, 81, 5, true);//蔻o^				
			}
			else 
			{	//ړ
				Obj_SetPosition(obj, GetPlayerX, GetPlayerY);//Wݒ
				SetIntersectionCircle(GetPlayerX, GetPlayerY, 256, 2, true);//蔻o^
			}
			ascent(i in 0..5)
			{
				ObjEffect_SetVertexUV(obj, i*2,   16*i,tv);//eNX`̍Wݒ
				ObjEffect_SetVertexUV(obj, i*2+1 ,32,  64+tv);
				
				ObjEffect_SetVertexUV(obj, i*2,   16*i, tv);	
				ObjEffect_SetVertexUV(obj, i*2+1, 32,   64+tv);
				
				ObjEffect_SetVertexColor(obj, i*2+1, alpha, 255, 255, 255);		
			}
			yield;
		}
		
	}
	
	task concentrationLine()
	{	//W܂銴̃GtFNg
		let angle=rand(0, 360);
		let alpha=0;	
		let scale=3;
		
		let obj = Obj_Create(OBJ_SPELL);//XyIuWFNg쐬
		ObjEffect_SetTexture(obj, imgEffect);//eNX`ݒ
		ObjEffect_SetRenderState(obj, ADD);//`@ݒ
		ObjEffect_SetPrimitiveType(obj, PRIMITIVE_TRIANGLELIST);//v~eBu^Cvݒ
		ObjEffect_CreateVertex(obj, 3);//_3
		ObjEffect_SetAngle(obj, 0, 0, angle);//`pxݒ
		
		//_Wݒ
		ObjEffect_SetVertexXY(obj, 0,  0,  10);
		ObjEffect_SetVertexXY(obj, 1, -10, 50);
		ObjEffect_SetVertexXY(obj, 2, 10,  50);
		
		//_UVlݒ
		ObjEffect_SetVertexXY(obj, 0, 10,  10);
		ObjEffect_SetVertexXY(obj, 1,  0,  50);
		ObjEffect_SetVertexXY(obj, 2, 20,  50);
		
		//Fݒ
		ObjEffect_SetVertexColor(obj, 0, alpha, 255, 0, 255);
		ObjEffect_SetVertexColor(obj, 1, 0, 255, 0, 255);
		ObjEffect_SetVertexColor(obj, 2, 0, 255, 0, 255);
		
		loop(60)
		{
			scale-=3/60;
			alpha+=5;
			ObjEffect_SetVertexColor(obj, 0, alpha, 255, 0, 255);
			ObjEffect_SetScale(obj, scale, scale*3);	
			Obj_SetPosition(obj, GetEnemyX, GetEnemyY);	
			yield;	
		}
		Obj_Delete(obj);
	}


}

