#e[Player]
#ScriptVersion[2]
#Menu[@З͑(tp[)]
#Text[
VbgFu}WbN~TCv
{FVuI[[YTeCgv
VbgЗ́F
Vbǵ͈F
{З́F@@
ړxF@@]
#ReplayName[marisa1]	
script_player_main
{
	let current =GetCurrentScriptDirectory();
	let player= current~"dot_marisa.png";
	let slow= current~"slow_effect.png";
	let angle=0;
	let alpha=0;
	let shotCount = -1;
	let bNextShot = false;
	let op=0;
	let opx=[0];
	let opy=[0];
	let opangle=0;
	let rmax=0;
	let ppower=100;
	let misscount=0;
	@Initialize
	{
		SetPlayerLifeImage(player,1,150,25,175);
		LoadGraphic(player);
		LoadGraphic(slow);
		SetSpeed(6, 1.6);
		LoadPlayerShotData(current~"marisaShotData.txt");
		SetItemCollectLine(160);
		SetAutoEffect(false);
		shottask;
		optask;
	}
	
	@MainLoop
	{
		SetIntersectionCircle(GetPlayerX,GetPlayerY,0);
		if(OnBomb)
		{
			rmax=180;
		}
		else
		{
			rmax=0;
		}
		yield;
	}
	@Missed
	{
		misscount++;
		if(misscount==74)
		{
			ppower-=100;
			misscount=-1;
		}
		yield;
	}
	@SpellCard
	{
		UseSpellCard("aureryes",[op,opangle]);
	}
	
	@DrawLoop
	{
		let i=0;
		SetColor(255, 255, 255);
		SetRenderState(ALPHA);
		SetTexture(player);
		if(GetKeyState(VK_LEFT)==KEY_PUSH || GetKeyState(VK_LEFT)==KEY_HOLD)
		{
			SetGraphicRect(1,101,50,150);
		}
		else if(GetKeyState(VK_RIGHT)==KEY_PUSH || GetKeyState(VK_RIGHT)==KEY_HOLD)
		{
			SetGraphicRect(1,51,50,100);
		}
		else 
		{
			SetGraphicRect(1,1,50,50);
		}
		SetGraphicAngle(0,0,0);
		if(GetTimeOfPlayerInvincibility>0)
		{
			SetAlpha(96);
		}
		else
		{
			SetAlpha(255);
		}
		DrawGraphic(GetPlayerX,GetPlayerY);
		loop(op)
		{
			SetTexture(player);
			SetGraphicRect(1,151,25,175);
			SetGraphicAngle(0,0,angle);
				SetAlpha(255);
			DrawGraphic(opx[i],opy[i]);
			i++;
		}
		SetTexture(slow);
		SetGraphicRect(0,0,61,61);
		SetGraphicAngle(0,0,angle);
		if(GetTimeOfPlayerInvincibility>0)
		{
			SetAlpha(alpha/3);
		}
		else
		{
			SetAlpha(alpha);
		}
		DrawGraphic(GetPlayerX,GetPlayerY);
		angle+=2;
		SetFontColor(255,255,255,255,255,128);
		DrawText(NumToString(ppower/100)~"/4.00",GetClipMinX,GetClipMaxY-64,18,255);
		DrawText("",GetClipMinX,GetClipMaxY-83,18,255);
		SetFontColor(255,255,255,255,255,255);
	}
	@Finalize
	{
		DeleteGraphic(player);
		DeleteGraphic(slow);
	}
	task shottask
	{
		loop(2)
		{
			yield;
		}
		loop
		{
			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(shotCount%5==0)
			{
				CreatePlayerShot01(GetPlayerX-10,GetPlayerY,15,270,4,1,1);
				CreatePlayerShot01(GetPlayerX+10,GetPlayerY,15,270,4,1,1);
			}
			if(shotCount%15==0)
			{
				let i=0;
				loop(op)
				{
						NaparmShot(opx[i],opy[i]);
					i++;
				}
			}
			if(shotCount >= 0)
			{
				shotCount++;
			}
			if(shotCount == 30)
			{
				shotCount=-1;
			}
			yield;
		}
	}
	task optask
	{
		let gp=0;
		let r=50;
		loop
		{
			ppower+=(GetPoint-gp)*5;
			op=trunc(ppower/100);
			if(op>4)
			{
				op=4;
			}
			if(op<1)
			{
				op=1;
			}
			if(ppower>400)
			{
				ppower=400;
			}
			if(ppower<100)
			{
				ppower=100;
			}
			if(op==1)
			{
				opx=[GetPlayerX+r*cos(opangle)];
				opy=[GetPlayerY+r*sin(opangle)];
			}
			if(op==2)
			{
				opx=[GetPlayerX+r*cos(opangle),GetPlayerX+r*cos(opangle+180)];
				opy=[GetPlayerY+r*sin(opangle),GetPlayerY+r*sin(opangle+180)];
			}
			if(op==3)
			{
				opx=[GetPlayerX+r*cos(opangle),GetPlayerX+r*cos(opangle+120),GetPlayerX+r*cos(opangle+240)];
				opy=[GetPlayerY+r*sin(opangle),GetPlayerY+r*sin(opangle+120),GetPlayerY+r*sin(opangle+240)];
			}
			if(op==4)
			{
				opx=[GetPlayerX+r*cos(opangle),GetPlayerX+r*cos(opangle+90),GetPlayerX+r*cos(opangle+180),GetPlayerX+r*cos(opangle+270)];
				opy=[GetPlayerY+r*sin(opangle),GetPlayerY+r*sin(opangle+90),GetPlayerY+r*sin(opangle+180),GetPlayerY+r*sin(opangle+270)];
			}
			opangle+=3;
			if(GetKeyState(VK_SLOWMOVE)==KEY_PUSH || GetKeyState(VK_SLOWMOVE)==KEY_HOLD)
			{
				if(r>30)
				{
					r-=2;
				}
				if(alpha<255)
				{
					alpha+=15;
				}
			}
			else
			{
				if(r<50)
				{
					r+=2;
				}
				if(!OnBomb&&r>50)
				{
					r-=4;
				}
				if(alpha>0)
				{
					alpha-=15;
				}
			}
			if(r<rmax)
			{
				r+=4;
			}
			gp=GetPoint;
			yield;
		}
	}
	task NaparmShot(x,y)
	{
		let angle=270;
		let speed=1;
		let obj = Obj_Create(OBJ_SHOT);
		Obj_SetPosition(obj,x,y);
		Obj_SetSpeed(obj,speed);
		Obj_SetAngle(obj,270);
		ObjShot_SetGraphic(obj, 2);
		ObjShot_SetDamage(obj, 3);
		ObjShot_SetPenetration(obj, 1);
		while(!Obj_BeDeleted(obj))
		{
			if(Obj_IsIntersected(obj))
			{
				Obj_Delete(obj);
				Exp(Obj_GetX(obj)+rand(-30,30),Obj_GetY(obj)+rand(-30,30));
			}
			if(speed<8)
			{
				speed+=0.3;
			}
			Obj_SetSpeed(obj,speed);
			yield;
		}
	}
	task Exp(x,y)
	{
		let count = 0;
		let alpha =255;
		let obj = Obj_Create(OBJ_SHOT);
		Obj_SetPosition(obj,x,y);
		Obj_SetSpeed(obj,0);
		Obj_SetAngle(obj,270);
		ObjShot_SetGraphic(obj, 3);
		ObjShot_SetDamage(obj, 0.9);
		ObjShot_SetPenetration(obj, 100000);
		while(!Obj_BeDeleted(obj))
		{
			if(count>5)
			{
				ObjShot_SetGraphic(obj, 4);
			}
			if(count>10)
			{
				ObjShot_SetGraphic(obj, 5);
			}
			if(count>20)
			{
				alpha-=12;
			}
			if(count>30)
			{
				Obj_Delete(obj);
			}
			Obj_SetAlpha(obj,alpha);
			count++;
			yield;
		}
	}
	function NumToString(let num)
	{
		let leng = trunc(log10(num))+1;
		if(num==0){leng = 0}
		let string = ToString(num);
		let str = " ";
		let zero =ToString(0);
		times(1-leng)
		{
			string = str ~ string;
		}
		if(num==0)
		{
				string = zero~ string;
			loop(3)
			{
				string = str ~ string;
			}
		}
		return string[0..4];
	}
}
script_spell aureryes
{
	let current=GetCurrentScriptDirectory();
	let bomb=current~"marisa_bomb.png";

	let opangle=[0];
	@Initialize
	{
		LoadGraphic(bomb);
		SetPlayerInvincibility(420);
		run();
	}
	@MainLoop
	{
		yield;
	}
	@Finalize
	{
		DeleteGraphic(bomb);
	}
	task run()
	{
		let i=0;
		if(GetArgument[0]==1)
		{
			opangle=[GetArgument[1]+0];
		}
		if(GetArgument[0]==2)
		{
			opangle=[GetArgument[1]+0,GetArgument[1]+180];
		}
		if(GetArgument[0]==3)
		{
			opangle=[GetArgument[1]+0,GetArgument[1]+120,GetArgument[1]+240];
		}
		if(GetArgument[0]==4)
		{
			opangle=[GetArgument[1]+0,GetArgument[1]+90,GetArgument[1]+180,GetArgument[1]+270];
		}
		loop(GetArgument[0])
		{
			aurerye(opangle[i]);
			i++;
		}
		loop(300){;yield;}
		End();
	}
	task aurerye(angle)
	{
		let r=180;
		if(GetKeyState(VK_SLOWMOVE)==KEY_PUSH || GetKeyState(VK_SLOWMOVE)==KEY_HOLD)
		{
			r=30;
		}
		else
		{
			r=50;
		}
		let count=0;
		let alpha=0;
		let obj = Obj_Create(OBJ_SPELL);
		Obj_SetPosition(obj,GetPlayerX,GetPlayerY);
		Obj_SetSpeed(obj,0);
		ObjEffect_SetTexture(obj,bomb);
		ObjEffect_SetPrimitiveType(obj,PRIMITIVE_TRIANGLESTRIP);
		ObjEffect_SetRenderState(obj,ALPHA);
		ObjEffect_SetScale(obj,3,3);
		ObjEffect_CreateVertex(obj,4);
		ObjEffect_SetVertexXY(obj,0,-15,-15);
		ObjEffect_SetVertexXY(obj,1,-15,15);
		ObjEffect_SetVertexXY(obj,2,15,-15);
		ObjEffect_SetVertexXY(obj,3,15,15);
		ObjEffect_SetVertexUV(obj,0,0,0);
		ObjEffect_SetVertexUV(obj,1,0,50);
		ObjEffect_SetVertexUV(obj,2,50,0);
		ObjEffect_SetVertexUV(obj,3,50,50);
		while(!Obj_BeDeleted(obj))
		{
			SetIntersectionCircle(Obj_GetX(obj),Obj_GetY(obj),75,20/GetArgument[0],true);
			Obj_SetPosition(obj,GetPlayerX+r*cos(angle),GetPlayerY+r*sin(angle));
			ObjEffect_SetVertexColor(obj,0,alpha,255,255,255);
			ObjEffect_SetVertexColor(obj,1,alpha,255,255,255);
			ObjEffect_SetVertexColor(obj,2,alpha,255,255,255);
			ObjEffect_SetVertexColor(obj,3,alpha,255,255,255);
			angle+=3;
			if(r<180)
			{
				r+=3;
			}
			if(count<30)
			{
				alpha+=8.2;
			}
			if(count>195)
			{
				alpha-=4;
			}
			if(count<240&&count%2==0)
			{
				star(Obj_GetX(obj),Obj_GetY(obj),angle);
			}
			count++;
			yield;
		}
	}
	task star(x,y,angle)
	{
		let obj = Obj_Create(OBJ_SPELL);
		Obj_SetPosition(obj,x,y);
		Obj_SetAngle(obj,angle);
		Obj_SetSpeed(obj,5);
		ObjEffect_SetTexture(obj,current~"dot_marisa.png");
		ObjEffect_SetPrimitiveType(obj,PRIMITIVE_TRIANGLESTRIP);
		ObjEffect_SetRenderState(obj,ADD);
		ObjEffect_SetScale(obj,1,1);
		ObjEffect_CreateVertex(obj,4);
		ObjEffect_SetVertexXY(obj,0,-15,-15);
		ObjEffect_SetVertexXY(obj,1,-15,15);
		ObjEffect_SetVertexXY(obj,2,15,-15);
		ObjEffect_SetVertexXY(obj,3,15,15);
		ObjEffect_SetVertexUV(obj,0,25,213);
		ObjEffect_SetVertexUV(obj,1,25,237);
		ObjEffect_SetVertexUV(obj,2,51,213);
		ObjEffect_SetVertexUV(obj,3,51,237);
		while(!Obj_BeDeleted(obj))
		{
			ObjEffect_SetAngle(obj,0,0,angle);
			SetIntersectionCircle(Obj_GetX(obj),Obj_GetY(obj),25,2,true);
			ObjEffect_SetVertexColor(obj,0,255,255,255,255);
			ObjEffect_SetVertexColor(obj,1,255,255,255,255);
			ObjEffect_SetVertexColor(obj,2,255,255,255,255);
			ObjEffect_SetVertexColor(obj,3,255,255,255,255);
			angle+=3;
			yield;
		}
	}
}
