#東方弾幕風[Player]
#ScriptVersion[2] 
#Menu[霧雨魔理沙B]
#Text[シューティングスター

	魔符「スターストリーム」
	星符「スターバースト」

	特性　アイテム回収ラインが低め]
#ReplayName[魔理沙B]
script_player_main
{
	let count=0;
	let Power=2000;		//Power管理変数
	let drawangle=0;	//オプションの回転角度
	let opX=[0,1,2,3,4,5];	//オプションのX座標
	let opY=[0,1,2,3,4,5];	//オプションのY座標
	let csd = GetCurrentScriptDirectory();
	let img = csd~"..\img\STG_Player11.png";
	let imgSpell = csd~"..\img\HoshiShot.png";
	let imgKekkai = csd~"..\img\circle.png";
	let imgBorder = csd~"..\img\border.png";
	let imgShot = csd~"..\img\shot_all.png";
	let shotCount = -1;
	let KekkaiOn=0;	//結界が発動中かどうかの変数
	let Kekkaicount=0;//結界が張れるようになるまでの時間
	let bonus=1;	//結界収縮用変数
	let bonuspoint=0;
	let BombBonus=0;
	let HmspOn=0;//実りマスパ発動中かを判定する値
	let miss=0;
	SetCommonData("STARTPOWER",0);
	@Initialize
	{
	//	SetAutoEffect(false);
		SetPlayerLifeImage(img, 0, 0, 48, 48);
		LoadGraphic(img);
		LoadGraphic(imgSpell);
		LoadGraphic(imgKekkai);
		LoadGraphic(imgBorder);
		LoadGraphic(csd~"..\img\SpiritualBorder.png");
		LoadGraphic(imgShot);
		LoadGraphic(csd~"..\img\burstshot.png");

		SetSpeed(5.0, 2.0);//自機の移動速度
		LoadPlayerShotData(csd~"..\txt\ShotData.txt");
		SetItemCollectLine(176);//アイテム回収されるy座標
		SetGrazeCircle(50);//自機のかすり判定
		SetRebirthFrame(8);//食らいボムの有効フレーム
		Tmain;
	}

	task Tmain
	{
		yield;
		Hmspflag;
		Cdraw;
		Pdraw;
		optionmove;
		Powor;
		GetPowerItem;
		GetBonusItem;
		Shot;
		SubShot;
		Graze;
		Bdraw;

	}

	@MainLoop
	{
		SetIntersectionCircle(GetPlayerX, GetPlayerY, 0);//自機の当たり判定
		if(GetKeyState(VK_BOMB)==KEY_PUSH &&  GetPlayerBomb==0 && BombBonus>=2 && !OnMissed)
		{
			BombBonus-=2;
			SetCommonData("BombBonus",BombBonus);
			AddBomb(1);
		}
		if(GetKeyState(VK_SHOT)==KEY_PUSH || GetKeyState(VK_SHOT)==KEY_HOLD || GetKeyState(VK_SLOWMOVE)==KEY_PUSH || GetKeyState(VK_SLOWMOVE)==KEY_HOLD)
		{
			SetGrazeCircle(50);
		}
		else
		{
			SetGrazeCircle(60);
		}
		yield;
	}

	@Missed{
MainLoop;
if(OnBorderOfLife && KekkaiOn==1)//バリア中はオートボム
{
	KekkaiOn=0;
	bonus=0;
	if(GetPlayerBomb>=1)
	{
	CallSpellCard;
	}

}
else if(GetCommonDataDefault("SELECTEDDIFFICULT","None")=="Extra")//Exはオートボム
{
	if(GetPlayerBomb>=1)
	{
	heat+=2000;
	CallSpellCard;
	}
}
}

	@SpellCard//バリアの有無によってボム変化
	{		
			if(KekkaiOn==0)
			{
			UseSpellCard("StarStream", 0);
			}
			else
			{
			UseSpellCard("StarBurst", 0);
			HmspOn=1;
			}
		KekkaiOn=0;
		bonus=0;
	}

	@DrawLoop
	{
		if(GetTimeOfPlayerInvincibility>0)
		{
			SetColor(100, 100, 255);
		}
		else
		{
			SetColor(255, 255, 255);
		}
		SetGraphicAngle(0,0,0);
		SetRenderState(ALPHA);

		SetTexture(img);
		if(GetKeyState(VK_LEFT)==KEY_PUSH || GetKeyState(VK_LEFT)==KEY_HOLD)
		{
			if(GetCommonDataDefault("MoveReverse",false)==true && OnEnemySpell)
			{
				SetGraphicRect(10, 101, 38, 142);
			}
			else
			{
				SetGraphicRect(10, 53, 38, 94);
			}

		}
		else if(GetKeyState(VK_RIGHT)==KEY_PUSH || GetKeyState(VK_RIGHT)==KEY_HOLD)
		{
			if(GetCommonDataDefault("MoveReverse",false)==true && OnEnemySpell)
			{
				SetGraphicRect(10, 53, 38, 94);
			}
			else
			{
				SetGraphicRect(10, 101, 38, 142);
			}
		}
		else
		{

			SetGraphicRect(10, 2, 38, 48);


		}
		DrawGraphic(GetPlayerX(), GetPlayerY());//自機の描画


		if(Power>=5000)
		{
		SetGraphicRect(3,162,17,176);
		SetGraphicAngle(0,0,drawangle+180);
		SetAlpha(150);
		SetGraphicScale(1.4,1.4);
        	DrawGraphic(opX[0], opY[0]);
        	DrawGraphic(opX[1], opY[1]);
        	DrawGraphic(opX[2], opY[2]);
        	DrawGraphic(opX[3], opY[3]);
		}


		if(Power>=0)
		{
		SetGraphicRect(3,162,17,176);
		SetGraphicAngle(0,0,drawangle);
		SetAlpha(255);
		SetGraphicScale(1.0,1.0);
        	DrawGraphic(opX[0], opY[0]);
		}

		if(Power>=0)
		{
		SetGraphicRect(3,162,17,176);
		SetGraphicAngle(0,0,drawangle);
		SetAlpha(255);
		SetGraphicScale(1.0,1.0);
        	DrawGraphic(opX[1], opY[1]);
		}

		if(Power>=0)
		{
		SetGraphicRect(3,162,17,176);
		SetGraphicAngle(0,0,drawangle);
		SetAlpha(255);
		SetGraphicScale(1.0,1.0);
        	DrawGraphic(opX[2], opY[2]);
		}

		if(Power>=0)
		{
		SetGraphicRect(3,162,17,176);
		SetGraphicAngle(0,0,drawangle);
		SetAlpha(255);
		SetGraphicScale(1.0,1.0);
        	DrawGraphic(opX[3], opY[3]);
		}
		drawangle+=6;//オプションの描画


	/*	if(GetKeyState(VK_SLOWMOVE)==KEY_PUSH || GetKeyState(VK_SLOWMOVE)==KEY_HOLD)
		{
		SetTexture(imgBorder);
		SetGraphicRect(27,27,37,37);
		SetGraphicAngle(0,0,drawangle/4);
		SetAlpha(255);
		SetGraphicScale(1.0,1.0);
        	DrawGraphic(GetPlayerX(), GetPlayerY());
		}
	*/	atari;
	}

	@Finalize
	{
		DeleteGraphic(img);
		DeleteGraphic(imgSpell);
		DeleteGraphic(imgKekkai);
		DeleteGraphic(imgBorder);
	}

task Hmspflag//実りマスパ発動かどうかを判定するタスク
{
loop
{
	while(OnBomb)
	{
		yield;
	}
HmspOn=0;
yield;	
}

}



#include_script".\..\txt\Pdraw.txt"
#include_script".\..\txt\Bdraw.txt"
#include_script".\..\txt\Cdraw.txt"
#include_script".\..\txt\Power.txt"
#include_script".\..\txt\Graze.txt"
#include_script".\MarisaMainShot.txt"
#include_script".\MarisaSubShot.txt"
#include_script".\MarisaOptionMove.txt"

#include_script".\..\txt\data.txt"
}

#include_script".\..\txt\Spell001.txt"
