//-----------------------
//̉̒eXNvg
//-----------------------

//CommonData"INVADER","Beams.Status"
//CommonData"INVADER","Beams.PositionX"
//CommonData"INVADER","Beams.PositionY"

//CommonData"INVADER","Beam.Count"
//CommonData"INVADER","Beam.SpeicalSting"
//CommonData"INVADER","Beam.SpeicalErase"
//CommonData"INVADER","Beam.Speical"

//r[
//GetArgumentID擾̂ňœnƁB
script_shot Beam
{
let m_BeamID;
let m_Color;
let img_System = GetCurrentScriptDirectory() ~ "system\img\system2.png";

@Initialize
{
	//r[ID擾
	m_BeamID = GetArgument();

	if(m_BeamID == 0){ m_Color = [240, 240, 240]; }
	else if(m_BeamID < 5){ m_Color = [50, 250, 100]; }
	else{ m_Color = [50, 250, 250]; }

	//ђʒȅꍇ̓Zbg
	//SetBombResist();

	//tOZbg
	REMY_CommonDataArrayEx_Set("INVADER","Beams.Status", m_BeamID, 1);

	//Ctݒ
	REMY_CommonDataArrayEx_Set("INVADER","Beams.Life", m_BeamID, 1);



	//C[`N
	 main_MainRoutine();
}
@MainLoop
{
	yield;
}
@DrawLoop
{
	SetTexture(img_System);
	
	SetColor(m_Color[0], m_Color[1], m_Color[2]);
	SetGraphicRect(4, 3, 11, 44);
	DrawGraphic(GetX(), GetY());

	
}
@Finalize
{
	if(	REMY_CommonDataArrayEx_Get("INVADER","Beams.Status", m_BeamID) == -1){ return; }
	//ŃtOZbg
	REMY_CommonDataArrayEx_Set("INVADER","Beams.Status", m_BeamID, 0);
}

task main_MainRoutine()
{
	loop(2){
		CreateShotFromScript("Dummy", GetX(), GetY()-5, 9, -90, 0, m_BeamID);
	}

	loop{

		//ŊmF
		local{
			let state = REMY_CommonDataArrayEx_Get("INVADER","Beams.Status", m_BeamID);
			if(state == 0 || state == -1){ End(); return; }
		}
		local
		{
			if(GetY() < -10)
			{
				SetCommonDataEx("INVADER","ScoreBonus.HitComboCount", 0);//R{Oɂ
				End();
				return;
			}
		}
		local{
			let life = REMY_CommonDataArrayEx_Get("INVADER","Beams.Life", m_BeamID);
			if(life <= 0){ End(); return; }
		}

		//Wo^
		local{
			REMY_CommonDataArrayEx_Set("INVADER","Beams.PositionX", m_BeamID, GetX());
			REMY_CommonDataArrayEx_Set("INVADER","Beams.PositionY", m_BeamID, GetY());
		}	
		
		yield;
	}

}//end task


#include_function".\lib_REMY\include_tool.txt"

}//end script



//ɏd˂_~[VbgB
script_shot Dummy
{

let m_BeamID;

@Initialize
{
	//er[ID擾
	m_BeamID = GetArgument();

	//ђʒȅꍇ̓Zbg
	//SetBombResist();

	//C[`N
	 main_MainRoutine();
}
@MainLoop
{
	yield;
}
@DrawLoop
{
	
}
@Finalize
{
}

task main_MainRoutine()
{
	loop{

		//ŊmF
		local{
			let state = REMY_CommonDataArrayEx_Get("INVADER","Beams.Status", m_BeamID);
			if(state == 0 || state == -1){ End(); return; }
		}
		yield;
	}

}//end task

#include_function".\lib_REMY\include_tool.txt"

}//end script



//r[uCsAv
//GetArgumentID擾̂ňœnƁB
script_shot BeamRapier
{
let m_BeamID;
let m_BeamLevel;
let m_Color;
let m_Hit = false;
let m_DefaultLife;
let img_System = GetCurrentScriptDirectory() ~ "system\img\system2.png";

@Initialize
{
	//r[ID擾
	let args = GetArgument();
	m_BeamID = args[0];
	m_BeamLevel = args[1];

	m_Color = [250, 50, 100];

	//ђʒȅꍇ̓Zbg
	SetBombResist();

	//tOZbg
	REMY_CommonDataArrayEx_Set("INVADER","Beams.Status", m_BeamID, 1);

	//Ctݒ
	m_DefaultLife = [3, 3, 4, 5][m_BeamLevel];
	REMY_CommonDataArrayEx_Set("INVADER","Beams.Life", m_BeamID, m_DefaultLife);

	//ː̒ǉ
	let shots = GetCommonDataEx("INVADER","Beam.Count");
	SetCommonDataEx("INVADER","Beam.Count",shots + 1);

	//C[`N
	 main_MainRoutine();
}
@MainLoop
{
	yield;
}
@DrawLoop
{
	SetTexture(img_System);
	SetGraphicScale(0.8, 1.4);
	SetColor(m_Color[0], m_Color[1], m_Color[2]);
	SetGraphicRect(4, 3, 11, 44);
	DrawGraphic(GetX(), GetY());

	
}
@Finalize
{
	if(	REMY_CommonDataArrayEx_Get("INVADER","Beams.Status", m_BeamID) == -1){ return; }
	//ŃtOZbg
	REMY_CommonDataArrayEx_Set("INVADER","Beams.Status", m_BeamID, 0);
}

task main_MainRoutine()
{
	loop(2){
		CreateShotFromScript("Dummy", GetX(), GetY()-5, 9, -90, 0, m_BeamID);
	}

	loop{

		//ŊmF
		local{
			let state = REMY_CommonDataArrayEx_Get("INVADER","Beams.Status", m_BeamID);
			if(state == 0 || state == -1){ End(); return; }
		}
		local
		{
			if(GetY() < -10){
				if(!m_Hit){
					SetCommonDataEx("INVADER","ScoreBonus.HitComboCount", 0);//ĂȂƃR{Oɂ
				}
				End();
				return; 
			}
		}
		local{
			let life = REMY_CommonDataArrayEx_Get("INVADER","Beams.Life", m_BeamID);
			if(!m_Hit){ m_Hit = (life != m_DefaultLife); }
			if(life <= 0){ End(); return; }
		}

		//Wo^
		local{
			REMY_CommonDataArrayEx_Set("INVADER","Beams.PositionX", m_BeamID, GetX());
			REMY_CommonDataArrayEx_Set("INVADER","Beams.PositionY", m_BeamID, GetY());
		}	
		
		yield;
	}

}//end task


#include_function".\lib_REMY\include_tool.txt"

}//end script
