script_spell MissAttack //~X̃_[WXNvg
{
	let imgNebura = GetCurrentScriptDirectory~"img\nebura.png";
let imgMarisaShot = GetCurrentScriptDirectory~"img\Marisa_shots.png";
	let imgBorderLine = GetCurrentScriptDirectory~"img\SampleEC01a.png";
let SE=["se\seBomb_ReimuB.wav"];
let BombX;
let BombY;
let BMove=120;
    @Initialize {
	BombX=GetPlayerX;
	BombY=GetPlayerY;

        SetPlayerInvincibility(210);
	TMain;
    }

    @Finalize {
    }

    @MainLoop {
        yield;
    }

   task TMain {
//	PlaySE(SE[0]);
//	StartStar;
	loop(15){yield;}
//	Border;
//	Star;
	Nebura;
        loop(150){yield;}
        End;
    }


task Nebura
{
		let r=0;
		let VertexNum=16;
		let UVX=rand(0,256);
		let UVY=rand(0,256);
  		let obj = Obj_Create(OBJ_SPELL);
		Obj_SetPosition(obj,BombX,BombY);
		ObjEffect_SetTexture(obj, imgNebura);
		ObjEffect_SetPrimitiveType(obj, PRIMITIVE_TRIANGLEFAN);
		ObjEffect_SetRenderState(obj, ADD);
		ObjEffect_CreateVertex(obj, VertexNum);
		ObjEffect_SetScale(obj,2,2);
		ObjEffect_SetLayer(obj,2);

		ascent(let i in 0..VertexNum)
		{
		ObjEffect_SetVertexColor(obj,i,0,196,196,255);
		}

		loop(90)
		{
			r+=6;
			ascent(let i in 0..VertexNum)
			{
			ObjEffect_SetVertexXY(obj, i,r*cos(360/VertexNum*i),r*sin(360/VertexNum*i));
			}
			ascent(let i in 0..VertexNum)
			{
			ObjEffect_SetVertexUV(obj, i,UVX+r*cos(360/VertexNum*i),UVY+r*sin(360/VertexNum*i));
			}
			ObjSpell_SetIntersecrionCircle(obj,BombX,BombY,r*2,3*GetArgument,false);
			UVX+=3;
			UVY+=3;
			yield;
		}
		Obj_Delete(obj);
}


}


script_spell CatfishsGreatEarthquake //i}Y̑nk@@XNvg
{
	let imgNebura = GetCurrentScriptDirectory~"img\Earth.png";
let imgMarisaShot = GetCurrentScriptDirectory~"img\Marisa_shots.png";
	let imgBorderLine = GetCurrentScriptDirectory~"img\SampleEC01a.png";
let SE=["se\seBomb_ReimuB.wav"];
let BombX;
let BombY;
let HiSpeed=GetPlayerInfo(PLAYER_SPEED_HIGH);
let LowSpeed=GetPlayerInfo(PLAYER_SPEED_LOW);
let Damage=3.0*(1+0.25*GetArgument);
    @Initialize {
	BombX=GetPlayerX;
	BombY=GetClipMaxY;
      //  SetPlayerInvincibility(270);
	//SetSpeed(HiSpeed/2,LowSpeed/2);
	TMain;
    }

    @Finalize {
    }

    @MainLoop {
        yield;
    }

   task TMain {
//	PlaySE(SE[0]);
	Border;
	loop(30){yield;}
	let UVX=rand(0,256);
	let UVY=rand(0,256);
	Nebura(UVX,UVY);
	Nebura2(UVX,UVY);
        loop(210){yield;}
	SetSpeed(HiSpeed,LowSpeed);
        End;
    }

task Nebura(UVX,UVY)
{
		let r=0;
		let VertexNum=4;
  		let obj = Obj_Create(OBJ_SPELL);
		Obj_SetPosition(obj,BombX+1,BombY);
		ObjEffect_SetTexture(obj, imgNebura);
		ObjEffect_SetPrimitiveType(obj, PRIMITIVE_TRIANGLEFAN);
		ObjEffect_SetRenderState(obj, ADD);
		ObjEffect_CreateVertex(obj, VertexNum);
		ObjEffect_SetScale(obj,2,2);
		ObjEffect_SetLayer(obj,2);

		ascent(let i in 0..VertexNum)
		{
		ObjEffect_SetVertexColor(obj,i,255,196,196,255);
		}

		ObjEffect_SetAngle(obj,0,0,0);

		loop(120)
		{
		if(r<16)
		{
			r+=0.25;
		}
			ObjEffect_SetVertexXY(obj, 0,-r*0,-224);
			ObjEffect_SetVertexXY(obj, 1,r*1,-224);
			ObjEffect_SetVertexXY(obj, 2,r*1,224);
			ObjEffect_SetVertexXY(obj, 3,-r*0,224);


			ObjEffect_SetVertexUV(obj, 0,UVX-r,UVY-224);
			ObjEffect_SetVertexUV(obj, 1,UVX+r,UVY-224);
			ObjEffect_SetVertexUV(obj, 2,UVX+r,UVY+224);
			ObjEffect_SetVertexUV(obj, 3,UVX-r,UVY+224);

			ObjSpell_SetIntersecrionLine(obj,BombX,GetClipMinY,BombX,GetClipMaxY,r,Damage,false);

			UVX+=3;
			UVY-=3;
			yield;
		}

		loop(60)
		{
		if(r>0)
		{
			r-=0.25;
		}
			ObjEffect_SetVertexXY(obj, 0,-r*0,-224);
			ObjEffect_SetVertexXY(obj, 1,r*1,-224);
			ObjEffect_SetVertexXY(obj, 2,r*1,224);
			ObjEffect_SetVertexXY(obj, 3,-r*0,224);

			ObjEffect_SetVertexUV(obj, 0,UVX-r,UVY-224);
			ObjEffect_SetVertexUV(obj, 1,UVX+r,UVY-224);
			ObjEffect_SetVertexUV(obj, 2,UVX+r,UVY+224);
			ObjEffect_SetVertexUV(obj, 3,UVX-r,UVY+224);

			ObjSpell_SetIntersecrionLine(obj,BombX,GetClipMinY,BombX,GetClipMaxY,r,Damage,false);

			UVX+=3;
			UVY-=3;
			yield;
		}
		Obj_Delete(obj);
}

task Nebura2(UVX,UVY)
{
		let r=0;
		let VertexNum=4;
  		let obj = Obj_Create(OBJ_SPELL);
		Obj_SetPosition(obj,BombX-1,BombY);
		ObjEffect_SetTexture(obj, imgNebura);
		ObjEffect_SetPrimitiveType(obj, PRIMITIVE_TRIANGLEFAN);
		ObjEffect_SetRenderState(obj, ADD);
		ObjEffect_CreateVertex(obj, VertexNum);
		ObjEffect_SetScale(obj,2,2);
		ObjEffect_SetLayer(obj,2);

		ascent(let i in 0..VertexNum)
		{
		ObjEffect_SetVertexColor(obj,i,255,196,196,255);
		}

		ObjEffect_SetAngle(obj,0,180,0);

		loop(120)
		{
		if(r<16)
		{
			r+=0.25;
		}
			ObjEffect_SetVertexXY(obj, 0,-r*0,-224);
			ObjEffect_SetVertexXY(obj, 1,r*1,-224);
			ObjEffect_SetVertexXY(obj, 2,r*1,224);
			ObjEffect_SetVertexXY(obj, 3,-r*0,224);


			ObjEffect_SetVertexUV(obj, 0,UVX-r,UVY-224);
			ObjEffect_SetVertexUV(obj, 1,UVX+r,UVY-224);
			ObjEffect_SetVertexUV(obj, 2,UVX+r,UVY+224);
			ObjEffect_SetVertexUV(obj, 3,UVX-r,UVY+224);

			ObjSpell_SetIntersecrionLine(obj,BombX,GetClipMinY,BombX,GetClipMaxY,r,Damage,false);

			UVX+=3;
			UVY-=3;
			yield;
		}

		loop(60)
		{
		if(r>0)
		{
			r-=0.25;
		}
			ObjEffect_SetVertexXY(obj, 0,-r*0,-224);
			ObjEffect_SetVertexXY(obj, 1,r*1,-224);
			ObjEffect_SetVertexXY(obj, 2,r*1,224);
			ObjEffect_SetVertexXY(obj, 3,-r*0,224);

			ObjEffect_SetVertexUV(obj, 0,UVX-r,UVY-224);
			ObjEffect_SetVertexUV(obj, 1,UVX+r,UVY-224);
			ObjEffect_SetVertexUV(obj, 2,UVX+r,UVY+224);
			ObjEffect_SetVertexUV(obj, 3,UVX-r,UVY+224);

			ObjSpell_SetIntersecrionLine(obj,BombX,GetClipMinY,BombX,GetClipMaxY,r,Damage,false);

			UVX+=3;
			UVY-=3;
			yield;
		}
		Obj_Delete(obj);
}

task Border
{
let x=0;
let y=0;
let r1=-25;
let r2=25;
let angle=0;
let Alpha=100;
let EffectCount=0;
	loop(30)
	{
		if(EffectCount%3==0)
		{
		BorderEffect(x,y,angle,Alpha);
		BorderEffect(-x,y,angle,Alpha);
		}
		angle+=2;
		EffectCount+=1;
		loop(1){yield;};
		
	}
	loop(120)
	{
		if(EffectCount%3==0)
		{
		BorderEffect(x,y,angle,Alpha);
		BorderEffect(-x,y,angle,Alpha);
		}
		if(x<32)
		{
			x+=0.5;
		}
		angle+=2;
		EffectCount+=1;
		loop(1){yield;};
		if(GetPlayerX>BombX-x && GetPlayerX<BombX+x && GetTimeOfPlayerInvincibility==0)
		{
			ShootDownPlayer;
		}
	}
	loop(60)
	{
		if(EffectCount%3==0)
		{
		BorderEffect(x,y,angle,Alpha);
		BorderEffect(-x,y,angle,Alpha);
		}
		x-=0.5;
		angle+=2;
		Alpha-=100/180;
		EffectCount+=1;
		loop(1){yield;};
		if(GetPlayerX>BombX-x && GetPlayerX<BombX+x && GetTimeOfPlayerInvincibility==0)
		{
			ShootDownPlayer;
		}
	}
}

task BorderEffect(x,y,angle,Alpha)
{
		let randvertex=rand_int(0,5);
		let VertexNum=4;
		let obj = Obj_Create(OBJ_EFFECT);
		ObjEffect_SetTexture(obj,imgBorderLine);
		ObjEffect_SetPrimitiveType(obj, PRIMITIVE_TRIANGLEFAN);
		ObjEffect_SetRenderState(obj, ADD); 
		ObjEffect_CreateVertex(obj,VertexNum);


			ObjEffect_SetVertexXY(obj, 0, -128*2, -8*3);
			ObjEffect_SetVertexXY(obj, 1, 128*2, -8*3);
			ObjEffect_SetVertexXY(obj, 2, 128*2, 8*3);
			ObjEffect_SetVertexXY(obj, 3, -128*2, 8*3);

			ObjEffect_SetVertexUV(obj, 0,  0,  0);
			ObjEffect_SetVertexUV(obj, 1,  256, 0);
			ObjEffect_SetVertexUV(obj, 2,  256, 16);
			ObjEffect_SetVertexUV(obj, 3,  0,  16);


		ObjEffect_SetLayer(obj,3);

		let Scale=1;
		let Zangle=0;
		ObjEffect_SetScale(obj,Scale,Scale);
		Obj_SetPosition(obj,BombX+x,GetCenterY+y);
		
		let Dir=-1;
		if(x>0){Dir=1;}
		ObjEffect_SetAngle(obj,0,0,180+Dir*90);

		loop(5)
		{
			ObjEffect_SetVertexUV(obj, 0,  0+angle,  0);
			ObjEffect_SetVertexUV(obj, 1,  256+angle, 0);
			ObjEffect_SetVertexUV(obj, 2,  256+angle, 16);
			ObjEffect_SetVertexUV(obj, 3,  0+angle,  16);
		ascent(let i in 0..VertexNum)
		{			
			ObjEffect_SetVertexColor(obj, i,Alpha,255,255*(i%3),0);
		}
		ObjEffect_SetScale(obj,Scale,Scale);
		angle+=2*Dir;
		Alpha-=20;
		Scale+=0.01;
		yield;
		}
		Obj_Delete(obj);

}

}

script_spell DeepEcologicalBomb // pfB[vGRWJڂޣ
{
	let imgNebura = GetCurrentScriptDirectory~"img\nebura.png";
let imgMarisaShot = GetCurrentScriptDirectory~"img\Marisa_shots.png";
	let imgBorderLine = GetCurrentScriptDirectory~"img\SampleEC01a.png";
let csd=GetCurrentScriptDirectory;
let SE=["se\seBomb_ReimuB.wav"];
let BombX;
let BombY;
let BMove=120;
    @Initialize {
	BombX=GetCenterX;
	BombY=GetCenterY;

	TMain;
    }

    @Finalize {
    }

    @MainLoop {
        yield;
    }

   task TMain {
//	PlaySE(SE[0]);
	StartStar;
	loop(450){yield;}
        End;
    }

task StartStar
{
	StarEfect(9,270);
}

task StarEfect(graphic,angle)
{
		let R;let G;let B;
		if(graphic==9){R=255;G=0;B=0;}
		if(graphic==10){R=255;G=100;B=0;}
		if(graphic==11){R=255;G=255;B=0;}
		if(graphic==12){R=0;G=255;B=0;}
		if(graphic==13){R=0;G=255;B=255;}
		if(graphic==14){R=0;G=0;B=255;}
		if(graphic==15){R=160;G=32;B=240;}

		let Xangle=rand(0,360);
		let Yangle=rand(0,360);
		let Zangle=rand(0,360);

		let XanglePlus=rand(-10,10);
		let YanglePlus=rand(-10,10);
		let ZanglePlus=rand(5,6)*(rand_int(0,1)*2-1);

		let Scale=1.0;

  		let obj = Obj_Create(OBJ_SPELL);
		Obj_SetPosition(obj,GetPlayerX,GetPlayerY-1);
		ObjEffect_SetTexture(obj, imgMarisaShot);
		ObjEffect_SetPrimitiveType(obj, PRIMITIVE_TRIANGLEFAN);
		ObjEffect_SetRenderState(obj, ADD);
		ObjEffect_CreateVertex(obj, 4);
		ObjEffect_SetVertexXY(obj, 0, -64, -64);
		ObjEffect_SetVertexXY(obj, 1,  64, -64);
		ObjEffect_SetVertexXY(obj, 2,  64, 64);
		ObjEffect_SetVertexXY(obj, 3, -64,  64);
		
		ObjEffect_SetVertexUV(obj, 0,  0,  384);
		ObjEffect_SetVertexUV(obj, 1,  128, 384);
		ObjEffect_SetVertexUV(obj, 2, 128,  512);
		ObjEffect_SetVertexUV(obj, 3, 0, 512);

		ascent(let i in 0..4)
		{
		ObjEffect_SetVertexColor(obj,i,200,R,G,B);
		}
		ObjEffect_SetScale(obj,Scale,Scale);

		let speed=6;
		let angle=270;
		Obj_SetSpeed(obj,speed);
		Obj_SetAngle(obj,angle);

		let ShadowCount=0;
		let Dis=0;
		loop(240)
		{
			Dis=((GetPlayerY-Obj_GetY(obj))^2+(GetPlayerX-Obj_GetX(obj))^2)^0.5;
			if(Dis<=48)
			{
				speed=6;
				Obj_SetAngle(obj,180+atan2(GetPlayerY-Obj_GetY(obj),GetPlayerX-Obj_GetX(obj)));
			}
			Obj_SetSpeed(obj,speed);
			if(speed>0){speed-=0.2;}
			if(absolute(speed)<0.2){speed=0;}
			if(GetCommonDataDefault("LightMode_BombEffect",0)==0)
			{
			StarShadowEfect(Obj_GetX(obj),Obj_GetY(obj),speed,angle,Scale,Xangle*0,Yangle*0,Zangle,R,G,B);
			}
			if(Obj_GetX(obj)<GetClipMinX)
			{
				Obj_SetAngle(obj,180-Obj_GetAngle(obj));
			}
			if(Obj_GetX(obj)>GetClipMaxX)
			{
				Obj_SetAngle(obj,180-Obj_GetAngle(obj));
			}
			if(Obj_GetY(obj)<GetClipMinY)
			{
				Obj_SetAngle(obj,-Obj_GetAngle(obj));
			}
			if(Obj_GetY(obj)>GetClipMaxY)
			{
				Obj_SetAngle(obj,-Obj_GetAngle(obj));
			}

			ObjEffect_SetAngle(obj,Xangle*0,Yangle*0,Zangle);
			Zangle+=ZanglePlus;
			ShadowCount++;
			yield;
		}
		DBomb(Obj_GetX(obj),Obj_GetY(obj));
		loop(15)
		{
			ObjEffect_SetScale(obj,Scale,Scale);
			if(speed>0){speed-=0.1;}
			if(GetCommonDataDefault("LightMode_BombEffect",0)==0)
			{
			StarShadowEfect(Obj_GetX(obj),Obj_GetY(obj),speed,angle,Scale,Xangle*0,Yangle*0,Zangle,R,G,B);
			}
			ObjEffect_SetAngle(obj,Xangle*0,Yangle*0,Zangle);
			Zangle+=ZanglePlus;
			ShadowCount++;
			Scale-=1/15;
			yield;
		}
		Obj_Delete(obj);
}


task StarShadowEfect(X,Y,speed,angle,Scale,Xangle,Yangle,Zangle,R,G,B)
{

  		let obj = Obj_Create(OBJ_EFFECT);
		Obj_SetPosition(obj,X,Y);
		ObjEffect_SetTexture(obj, imgMarisaShot);
		ObjEffect_SetPrimitiveType(obj, PRIMITIVE_TRIANGLEFAN);
		ObjEffect_SetRenderState(obj, ADD);
		ObjEffect_CreateVertex(obj, 4);
		ObjEffect_SetVertexXY(obj, 0, -64, -64);
		ObjEffect_SetVertexXY(obj, 1,  64, -64);
		ObjEffect_SetVertexXY(obj, 2,  64, 64);
		ObjEffect_SetVertexXY(obj, 3, -64,  64);
		
		ObjEffect_SetVertexUV(obj, 0,  0,  384);
		ObjEffect_SetVertexUV(obj, 1,  128, 384);
		ObjEffect_SetVertexUV(obj, 2, 128,  512);
		ObjEffect_SetVertexUV(obj, 3, 0, 512);

		let Alpha=100;
		ascent(let i in 0..4)
		{
		ObjEffect_SetVertexColor(obj,i,Alpha,R,G,B);
		}

		ObjEffect_SetAngle(obj,Xangle,Yangle,Zangle);

		loop(3)
		{
			ObjEffect_SetScale(obj,Scale,Scale);
			ascent(let i in 0..4)
			{
				ObjEffect_SetVertexColor(obj,i,Alpha,R,G,B);
			}
			Scale+=0.05;
			Alpha-=20;
			yield;
		}
		Obj_Delete(obj);
}


task DBomb(x,y)
{
let t=0;
	loop(90)
	{
	BombEfect(x,y,9+t%7);
	loop(2){yield;}
	t+=1;
	}
}

task BombEfect(x,y,graphic)
{
		let R;let G;let B;
		if(graphic==9){R=255;G=0;B=0;}
		if(graphic==10){R=255;G=100;B=0;}
		if(graphic==11){R=255;G=255;B=0;}
		if(graphic==12){R=0;G=255;B=0;}
		if(graphic==13){R=0;G=255;B=255;}
		if(graphic==14){R=0;G=0;B=255;}
		if(graphic==15){R=160;G=32;B=240;}

		let Xangle=rand(0,360);
		let Yangle=rand(0,360);
		let Zangle=rand(0,360);

		let XanglePlus=rand(-10,10);
		let YanglePlus=rand(-10,10);
		let ZanglePlus=rand(5,10)*(rand_int(0,1)*2-1);

		let Scale=0;

  		let obj = Obj_Create(OBJ_SPELL);
		Obj_SetPosition(obj,x,y);
		ObjEffect_SetTexture(obj,csd~"img/Explode.png");
		ObjEffect_SetPrimitiveType(obj, PRIMITIVE_TRIANGLEFAN);
		ObjEffect_SetRenderState(obj, ADD);
		ObjEffect_CreateVertex(obj, 4);
		ObjEffect_SetVertexXY(obj, 0, -64, -64);
		ObjEffect_SetVertexXY(obj, 1,  64, -64);
		ObjEffect_SetVertexXY(obj, 2,  64, 64);
		ObjEffect_SetVertexXY(obj, 3, -64,  64);
		
		ObjEffect_SetVertexUV(obj, 0,  0,  0);
		ObjEffect_SetVertexUV(obj, 1, 256, 0);
		ObjEffect_SetVertexUV(obj, 2, 256,  256);
		ObjEffect_SetVertexUV(obj, 3, 0, 256);

		let Alpha=0;
		ascent(let i in 0..4)
		{
		ObjEffect_SetVertexColor(obj,i,Alpha,R,G,B);
		}

		let speed=0;
		let angle=270;
		Obj_SetSpeed(obj,speed);
		Obj_SetAngle(obj,angle);

		let ShadowCount=0;
		loop(15)
		{
			ObjEffect_SetScale(obj,Scale,Scale);
			ObjSpell_SetIntersecrionCircle(obj,Obj_GetX(obj),Obj_GetY(obj),60*Scale,2.0,false);
			ascent(let i in 0..4)
			{
				ObjEffect_SetVertexColor(obj,i,Alpha,R,G,B);
			}
			if(Scale<2.5)
			{
				Scale+=2.5/15;
			}
			Alpha+=60/15;
			yield;
		}
		loop(15)
		{
			ObjEffect_SetScale(obj,Scale,Scale);
			ObjSpell_SetIntersecrionCircle(obj,Obj_GetX(obj),Obj_GetY(obj),60*Scale,2.0,false);
			ascent(let i in 0..4)
			{
				ObjEffect_SetVertexColor(obj,i,Alpha,R,G,B);
			}
			if(Scale>0)
			{
			//	Scale-=1/15;
			}
			Alpha-=60/15;
			yield;
		}
		Obj_Delete(obj);
}

}


script_spell EarthLightLay //uA[XCgCvXNvg
{
	let csd = GetCurrentScriptDirectory();
	let imgNebura = GetCurrentScriptDirectory~"img\nebura.png";
let imgMarisaShot = GetCurrentScriptDirectory~"img\Marisa_shots.png";
	let imgBorderLine = GetCurrentScriptDirectory~"img\SampleEC01a.png";
let SE=["se\seBomb_ReimuB.wav"];
let BombX;
let BombY;
let BMove=120;
    @Initialize {
	BombX=GetCenterX;
	BombY=GetCenterY;

        SetPlayerInvincibility(180);
	TMain;
    }

    @Finalize {
    }

    @MainLoop {
	if(GetCommonDataEx("Hi_Marisa","PlayerMiss")){End;}
        yield;
    }

   task TMain {
//	PlaySE(SE[0]);
	Star;
        loop(345){yield;}
        End;
    }

task Star
{
let time=30;
loop(20)
{
let t=rand_int(0,7);
let x=rand(GetClipMinX,GetClipMaxX);
let Langle=rand(-10,10);
let y=GetClipMaxY+60;
ascent(i in 0..7)
{
	StarEfect(x,y,9+(t+i)%7,i*60,Langle);
}
	loop(time){yield;}
	time-=2;
	if(time<5){time=5;}
}
}

task StarEfect(x,y,graphic,angle,Langle)
{
		function XYR{return(rand(0,0));}
		let R=255;;let G=255;let B=255;
		if(graphic==9){R=255;G=0+50;B=0+50;}
		if(graphic==10){R=255;G=100+50;B=0+50;}
		if(graphic==11){R=255;G=255;B=0+50;}
		if(graphic==12){R=0+50;G=255;B=0+50;}
		if(graphic==13){R=0+50;G=255;B=255;}
		if(graphic==14){R=0+50;G=0+50;B=255;}
		if(graphic==15){R=160+50;G=32+50;B=240;}

		let Xangle=rand(0,360);
		let Yangle=rand(0,360);
		let Zangle=rand(0,360);

		let XanglePlus=rand(-10,10);
		let YanglePlus=rand(-10,10);
		let ZanglePlus=rand(-10,10);

		let Scale=0.1;

  		let obj = Obj_Create(OBJ_SPELL);
		Obj_SetPosition(obj,x,y);
		ObjEffect_SetTexture(obj, csd~"img\Spark.png");
		ObjEffect_SetPrimitiveType(obj, PRIMITIVE_TRIANGLEFAN);
		ObjEffect_SetRenderState(obj, ADD);
		ObjEffect_CreateVertex(obj, 4);
		ObjEffect_SetVertexXY(obj, 0, -128+XYR, -512+XYR);
		ObjEffect_SetVertexXY(obj, 1,  128+XYR, -512+XYR);
		ObjEffect_SetVertexXY(obj, 2,  128+XYR, 0+XYR);
		ObjEffect_SetVertexXY(obj, 3, -128+XYR,  0+XYR);
		
let UVR=(rand_int(0,1)*2-1)+256;
		ObjEffect_SetVertexUV(obj, 0,  0+UVR,  0);
		ObjEffect_SetVertexUV(obj, 1,  256+UVR, 0);
		ObjEffect_SetVertexUV(obj, 2, 256+UVR,  512);
		ObjEffect_SetVertexUV(obj, 3, 0+UVR, 512);

		let Alpha=0;
		ascent(let i in 0..4)
		{
		ObjEffect_SetVertexColor(obj,i,Alpha,R,G,B);
		}

		let speed=0;
	//	let angle=rand(260,280);
		Obj_SetSpeed(obj,speed);
	//	Obj_SetAngle(obj,angle);

		let ShadowCount=0;
		let scx=0;
		let scy=1.2;
		let wide=0;
		let wideangle=0;
let time=0;
if(graphic==16){time=300;}
		loop(60)
		{
		if(Alpha<50){Alpha+=10;}
		ascent(let i in 0..4)
		{
		ObjEffect_SetVertexColor(obj,i,Alpha,R,G,B);
		}
			ObjEffect_SetAngle(obj,0,Yangle,Langle+cos(angle));
			Yangle=rand(-10,10);
			ObjSpell_SetIntersecrionLine(obj,x+500*cos(Langle-90),y+500*sin(Langle-90),x,y,64*scx,0.9,true);
			if(scx<0.2){scx+=0.02;}
			ObjEffect_SetScale(obj,scx,scy);
			yield;
			angle+=6;
		}
		loop(15)
		{
		ascent(let i in 0..4)
		{
		ObjEffect_SetVertexColor(obj,i,Alpha,R,G,B);
		}
		Alpha-=50/15;
			ObjSpell_SetIntersecrionLine(obj,x+500*cos(Langle-90),y+500*sin(Langle-90),x,y,64*scx,0.6,true);
			if(scx>0){scx-=0.02;}
			ObjEffect_SetScale(obj,scx,scy);
			yield;
		}
Obj_Delete(obj);
}

}

script_spell EscapeVelocity //GXP[vxVeBXNvg
{
	let imgNebura = GetCurrentScriptDirectory~"img\nebura.png";
let imgMarisaShot = GetCurrentScriptDirectory~"img\Marisa_shots.png";
	let imgBorderLine = GetCurrentScriptDirectory~"img\SampleEC01a.png";
let SE=["se\seBomb_ReimuB.wav"];
let BombX;
let BombY;
let BMove=120;
let StarShoot=false;
    @Initialize {
	BombX=GetCenterX;
	BombY=GetCenterY;

        SetPlayerInvincibility(390);
	TMain;
    }

    @Finalize {
    }

    @MainLoop {
	if(GetCommonDataEx("Hi_Marisa","PlayerMiss")){End;}
        yield;
    }

   task TMain {
//	PlaySE(SE[0]);
	StartStar;
	loop(390){yield;}
        End;
    }

task StartStar
{
let angle=rand(0,360);
let dir=rand_int(0,1)*2-1;
	ascent(i in 0..12)
	{
	StarEfect(rand_int(9,15),i*30+angle,1);
	}
	loop(30){yield;}
	ascent(i in 0..12)
	{
	StarEfect(rand_int(9,15),i*30+angle,-1);
	}

	loop(240){yield;}
	StarShoot=true;
}

task StarEfect(graphic,angle,dir)
{
		let R;let G;let B;
		if(graphic==9){R=255;G=0;B=0;}
		if(graphic==10){R=255;G=100;B=0;}
		if(graphic==11){R=255;G=255;B=0;}
		if(graphic==12){R=0;G=255;B=0;}
		if(graphic==13){R=0;G=255;B=255;}
		if(graphic==14){R=0;G=0;B=255;}
		if(graphic==15){R=160;G=32;B=240;}

		let Xangle=rand(0,360);
		let Yangle=rand(0,360);
		let Zangle=rand(0,360);

		let XanglePlus=rand(-10,10);
		let YanglePlus=rand(-10,10);
		let ZanglePlus=rand(5,10)*(rand_int(0,1)*2-1);

		let Scale=rand(0.1,0.2);

  		let obj = Obj_Create(OBJ_SPELL);
		Obj_SetPosition(obj,GetPlayerX,GetPlayerY);
		ObjEffect_SetTexture(obj, imgMarisaShot);
		ObjEffect_SetPrimitiveType(obj, PRIMITIVE_TRIANGLEFAN);
		ObjEffect_SetRenderState(obj, ADD);
		ObjEffect_CreateVertex(obj, 4);
		ObjEffect_SetVertexXY(obj, 0, -64, -64);
		ObjEffect_SetVertexXY(obj, 1,  64, -64);
		ObjEffect_SetVertexXY(obj, 2,  64, 64);
		ObjEffect_SetVertexXY(obj, 3, -64,  64);
		
		ObjEffect_SetVertexUV(obj, 0,  0,  384);
		ObjEffect_SetVertexUV(obj, 1,  128, 384);
		ObjEffect_SetVertexUV(obj, 2, 128,  512);
		ObjEffect_SetVertexUV(obj, 3, 0, 512);

		ascent(let i in 0..4)
		{
		ObjEffect_SetVertexColor(obj,i,200,R,G,B);
		}
		let speed=0;
		let ShadowCount=0;
		let R=0;
		let Rmax=rand(50,130);
		let angleplus=5;
		while(!StarShoot)
		{
			Obj_SetPosition(obj,GetPlayerX+R*cos(angle),GetPlayerY+R*sin(angle));
			if(GetCommonDataDefault("LightMode_BombEffect",0)==0)
			{
			StarShadowEfect(Obj_GetX(obj),Obj_GetY(obj),speed,angle,Scale,Xangle*0,Yangle*0,Zangle,R,G,B);
			}
			ObjSpell_SetIntersecrionCircle(obj,Obj_GetX(obj),Obj_GetY(obj),64*Scale,1.3,true);
			ObjEffect_SetScale(obj,Scale,Scale);
			ObjEffect_SetAngle(obj,Xangle*0,Yangle*0,Zangle);
			Xangle+=XanglePlus;
			Yangle+=YanglePlus;
			Zangle+=ZanglePlus;
			angle+=angleplus*dir;
			angleplus+=0.03;
			//Scale+=0.01;
			ShadowCount++;
			if(R<Rmax){R+=Rmax/60;}
			yield;
		}
		Obj_SetSpeed(obj,2*R*3/(360/angleplus));
		Obj_SetAngle(obj,angle+90*dir);
		loop(90)
		{
			if(GetCommonDataDefault("LightMode_BombEffect",0)==0)
			{
			StarShadowEfect(Obj_GetX(obj),Obj_GetY(obj),speed,angle,Scale,Xangle*0,Yangle*0,Zangle,R,G,B);
			}
			ObjSpell_SetIntersecrionCircle(obj,Obj_GetX(obj),Obj_GetY(obj),64*Scale,5.0,true);
			ObjEffect_SetScale(obj,Scale,Scale);
			ObjEffect_SetAngle(obj,Xangle*0,Yangle*0,Zangle);
			Xangle+=XanglePlus;
			Yangle+=YanglePlus;
			Zangle+=ZanglePlus;
			angle+=6*dir;
			//Scale+=0.01;
			ShadowCount++;
			if(R<Rmax){R+=Rmax/60;}
			yield;
		}
}


task StarShadowEfect(X,Y,speed,angle,Scale,Xangle,Yangle,Zangle,R,G,B)
{

  		let obj = Obj_Create(OBJ_EFFECT);
		Obj_SetPosition(obj,X,Y);
		ObjEffect_SetTexture(obj, imgMarisaShot);
		ObjEffect_SetPrimitiveType(obj, PRIMITIVE_TRIANGLEFAN);
		ObjEffect_SetRenderState(obj, ADD);
		ObjEffect_CreateVertex(obj, 4);
		ObjEffect_SetVertexXY(obj, 0, -64, -64);
		ObjEffect_SetVertexXY(obj, 1,  64, -64);
		ObjEffect_SetVertexXY(obj, 2,  64, 64);
		ObjEffect_SetVertexXY(obj, 3, -64,  64);
		
		ObjEffect_SetVertexUV(obj, 0,  0,  384);
		ObjEffect_SetVertexUV(obj, 1,  128, 384);
		ObjEffect_SetVertexUV(obj, 2, 128,  512);
		ObjEffect_SetVertexUV(obj, 3, 0, 512);

		let Alpha=100;
		ascent(let i in 0..4)
		{
		ObjEffect_SetVertexColor(obj,i,Alpha,R,G,B);
		}

		ObjEffect_SetAngle(obj,Xangle,Yangle,Zangle);

		loop(3)
		{
			ObjEffect_SetScale(obj,Scale,Scale);
			ascent(let i in 0..4)
			{
				ObjEffect_SetVertexColor(obj,i,Alpha,R,G,B);
			}
			Scale+=0.05;
			Alpha-=20;
			yield;
		}
		Obj_Delete(obj);
}

}


script_spell BlazingStar //auuCWOX^[vXNvg
{
	let imgNebura = GetCurrentScriptDirectory~"img\nebura.png";
let imgMarisaShot = GetCurrentScriptDirectory~"img\Marisa_shots.png";
	let imgBorderLine = GetCurrentScriptDirectory~"img\SampleEC01a.png";
	let csd = GetCurrentScriptDirectory();
let SE=["se\seBomb_ReimuB.wav"];
let BombX;
let BombY;
let BMove=120;
let MoveAngle=0;
    @Initialize {
	BombX=GetCenterX;
	BombY=GetCenterY;

        SetPlayerInvincibility(540);
	TMain;
    }

    @Finalize {
    }

    @MainLoop {
	if(GetCommonDataEx("Hi_Marisa","PlayerMiss")){End;}
        yield;
    }

   task TMain {
//	PlaySE(SE[0]);
Move;
	Dark;
	Blazing;
        loop(480){yield;}
        End;
    }

task Move
{
if(GetKeyState(VK_LEFT)==KEY_PUSH || GetKeyState(VK_LEFT)==KEY_HOLD)
{
	if(GetKeyState(VK_UP)==KEY_PUSH || GetKeyState(VK_UP)==KEY_HOLD)
	{
		MoveAngle=225;
	}
	else if(GetKeyState(VK_DOWN)==KEY_PUSH || GetKeyState(VK_DOWN)==KEY_HOLD)
	{
		MoveAngle=135;
	}
	else
	{
	MoveAngle=180;
	}
}
else if(GetKeyState(VK_RIGHT)==KEY_PUSH || GetKeyState(VK_RIGHT)==KEY_HOLD)
{
	if(GetKeyState(VK_UP)==KEY_PUSH || GetKeyState(VK_UP)==KEY_HOLD)
	{
		MoveAngle=315;
	}
	else if(GetKeyState(VK_DOWN)==KEY_PUSH || GetKeyState(VK_DOWN)==KEY_HOLD)
	{
		MoveAngle=45;
	}
	else
	{
	MoveAngle=0;
	}
}
else if(GetKeyState(VK_DOWN)==KEY_PUSH || GetKeyState(VK_DOWN)==KEY_HOLD)
{
	MoveAngle=90;
}
else
{
	MoveAngle=270;
}

AngleSet;

let speed=25;
loop(420)
{
//speed+=0.1;
	SetPlayerX(GetPlayerX+speed*cos(MoveAngle));
	SetPlayerY(GetPlayerY+speed*sin(MoveAngle));
	if(GetPlayerX<44){SetPlayerX(404);}
	if(GetPlayerX>404){SetPlayerX(44);}
	if(GetPlayerY<32){SetPlayerY(448);}
	if(GetPlayerY>448){SetPlayerY(32);}
yield;
}
}

task AngleSet
{
let ChangeAngle=0.5;
loop
{

if(GetKeyState(VK_LEFT)==KEY_PUSH || GetKeyState(VK_LEFT)==KEY_HOLD)
{
	if(GetKeyState(VK_UP)==KEY_PUSH || GetKeyState(VK_UP)==KEY_HOLD)
	{
		if(sin(225-MoveAngle)>0)
		{
		MoveAngle+=ChangeAngle;
		}
		else
		{
		MoveAngle-=ChangeAngle;
		}
	}
	else if(GetKeyState(VK_DOWN)==KEY_PUSH || GetKeyState(VK_DOWN)==KEY_HOLD)
	{
		if(sin(135-MoveAngle)>0)
		{
		MoveAngle+=ChangeAngle;
		}
		else
		{
		MoveAngle-=ChangeAngle;
		}
	}
	else
	{
		if(sin(180-MoveAngle)>0)
		{
		MoveAngle+=ChangeAngle;
		}
		else
		{
		MoveAngle-=ChangeAngle;
		}
	}
}
else if(GetKeyState(VK_RIGHT)==KEY_PUSH || GetKeyState(VK_RIGHT)==KEY_HOLD)
{
	if(GetKeyState(VK_UP)==KEY_PUSH || GetKeyState(VK_UP)==KEY_HOLD)
	{
		if(sin(315-MoveAngle)>0)
		{
		MoveAngle+=ChangeAngle;
		}
		else
		{
		MoveAngle-=ChangeAngle;
		}
	}
	else if(GetKeyState(VK_DOWN)==KEY_PUSH || GetKeyState(VK_DOWN)==KEY_HOLD)
	{
		if(sin(45-MoveAngle)>0)
		{
		MoveAngle+=ChangeAngle;
		}
		else
		{
		MoveAngle-=ChangeAngle;
		}
	}
	else
	{
		if(sin(0-MoveAngle)>0)
		{
		MoveAngle+=ChangeAngle;
		}
		else
		{
		MoveAngle-=ChangeAngle;
		}
	}
}
else if(GetKeyState(VK_DOWN)==KEY_PUSH || GetKeyState(VK_DOWN)==KEY_HOLD)
{
		if(sin(90-MoveAngle)>0)
		{
		MoveAngle+=ChangeAngle;
		}
		else
		{
		MoveAngle-=ChangeAngle;
		}
}
else if(GetKeyState(VK_UP)==KEY_PUSH || GetKeyState(VK_UP)==KEY_HOLD)
{
		if(sin(270-MoveAngle)>0)
		{
		MoveAngle+=ChangeAngle;
		}
		else
		{
		MoveAngle-=ChangeAngle;
		}
}

MoveAngle+=rand(-5,5);
yield;
}

}

task Blazing
{
	let X=GetPlayerX;
	let Y=GetPlayerY;
	Meteor(X,Y);
loop(84)
{
let t=rand_int(0,7);
ascent(i in 0..7)
{
	SparkEfect(9+(t+i)%7,i*60);
}

let ang=rand(0,360);
ascent(i in 0..1)
{
	StarEfect(rand_int(9,15),ang+i*90);
}

loop(5){yield;}
}

}


task StarEfect(graphic,angle)
{
		let R;let G;let B;
		if(graphic==9){R=255;G=0;B=0;}
		if(graphic==10){R=255;G=100;B=0;}
		if(graphic==11){R=255;G=255;B=0;}
		if(graphic==12){R=0;G=255;B=0;}
		if(graphic==13){R=0;G=255;B=255;}
		if(graphic==14){R=0;G=0;B=255;}
		if(graphic==15){R=160;G=32;B=240;}

		let Xangle=rand(0,360);
		let Yangle=rand(0,360);
		let Zangle=rand(0,360);

		let XanglePlus=rand(-10,10);
		let YanglePlus=rand(-10,10);
		let ZanglePlus=rand(5,10)*(rand_int(0,1)*2-1);

		let Scale=rand(0.3,0.5);

  		let obj = Obj_Create(OBJ_SPELL);
		Obj_SetPosition(obj,GetPlayerX,GetPlayerY);
		ObjEffect_SetTexture(obj, imgMarisaShot);
		ObjEffect_SetPrimitiveType(obj, PRIMITIVE_TRIANGLEFAN);
		ObjEffect_SetRenderState(obj, ADD);
		ObjEffect_CreateVertex(obj, 4);
		ObjEffect_SetVertexXY(obj, 0, -64, -64);
		ObjEffect_SetVertexXY(obj, 1,  64, -64);
		ObjEffect_SetVertexXY(obj, 2,  64, 64);
		ObjEffect_SetVertexXY(obj, 3, -64,  64);
		
		ObjEffect_SetVertexUV(obj, 0,  0,  384);
		ObjEffect_SetVertexUV(obj, 1,  128, 384);
		ObjEffect_SetVertexUV(obj, 2, 128,  512);
		ObjEffect_SetVertexUV(obj, 3, 0, 512);

		ascent(let i in 0..4)
		{
		ObjEffect_SetVertexColor(obj,i,200,R,G,B);
		}
		let Minspeed=rand(2.5,3.5);
		let speed=rand(6,8);
		//let angle=rand(250,290);
		Obj_SetSpeed(obj,speed);
		Obj_SetAngle(obj,angle);

		let ShadowCount=0;
		while(!Obj_BeDeleted(obj))
		{

			if(ShadowCount%3==0 && GetCommonDataDefault("LightMode_BombEffect",0)==0)
			{
			StarShadowEfect(Obj_GetX(obj),Obj_GetY(obj),speed,angle,Scale,Xangle*0,Yangle*0,Zangle,R,G,B);
			}
			ObjSpell_SetIntersecrionCircle(obj,Obj_GetX(obj),Obj_GetY(obj),64*Scale,3,true);
			ObjEffect_SetScale(obj,Scale,Scale);
			ObjEffect_SetAngle(obj,Xangle*0,Yangle*0,Zangle);
			Xangle+=XanglePlus;
			Yangle+=YanglePlus;
			Zangle+=ZanglePlus;
			//Scale+=0.01;
			ShadowCount++;
			yield;
		}
}


task StarShadowEfect(X,Y,speed,angle,Scale,Xangle,Yangle,Zangle,R,G,B)
{

  		let obj = Obj_Create(OBJ_EFFECT);
		Obj_SetPosition(obj,X,Y);
		ObjEffect_SetTexture(obj, imgMarisaShot);
		ObjEffect_SetPrimitiveType(obj, PRIMITIVE_TRIANGLEFAN);
		ObjEffect_SetRenderState(obj, ADD);
		ObjEffect_CreateVertex(obj, 4);
		ObjEffect_SetVertexXY(obj, 0, -64, -64);
		ObjEffect_SetVertexXY(obj, 1,  64, -64);
		ObjEffect_SetVertexXY(obj, 2,  64, 64);
		ObjEffect_SetVertexXY(obj, 3, -64,  64);
		
		ObjEffect_SetVertexUV(obj, 0,  0,  384);
		ObjEffect_SetVertexUV(obj, 1,  128, 384);
		ObjEffect_SetVertexUV(obj, 2, 128,  512);
		ObjEffect_SetVertexUV(obj, 3, 0, 512);

		let Alpha=100;
		ascent(let i in 0..4)
		{
		ObjEffect_SetVertexColor(obj,i,Alpha,R,G,B);
		}

		ObjEffect_SetAngle(obj,Xangle,Yangle,Zangle);

		loop(3)
		{
			ObjEffect_SetScale(obj,Scale,Scale);
			ascent(let i in 0..4)
			{
				ObjEffect_SetVertexColor(obj,i,Alpha,R,G,B);
			}
			Scale+=0.05;
			Alpha-=20;
			yield;
		}
		Obj_Delete(obj);
}

task SparkEfect(graphic,angle)
{
		function XYR{return(rand(0,0));}
		let R=255;;let G=255;let B=255;
		if(graphic==9){R=255;G=0+50;B=0+50;}
		if(graphic==10){R=255;G=100+50;B=0+50;}
		if(graphic==11){R=255;G=255;B=0+50;}
		if(graphic==12){R=0+50;G=255;B=0+50;}
		if(graphic==13){R=0+50;G=255;B=255;}
		if(graphic==14){R=0+50;G=0+50;B=255;}
		if(graphic==15){R=160+50;G=32+50;B=240;}

		let Xangle=rand(0,360);
		let Yangle=rand(0,360);
		let Zangle=rand(0,360);

		let XanglePlus=rand(-10,10);
		let YanglePlus=rand(-10,10);
		let ZanglePlus=rand(-10,10);

		let Scale=0.1;

  		let obj = Obj_Create(OBJ_SPELL);
		Obj_SetPosition(obj,GetPlayerX-50*cos(MoveAngle),GetPlayerY-50*sin(MoveAngle));
		ObjEffect_SetTexture(obj, csd~"img\Spark.png");
		ObjEffect_SetPrimitiveType(obj, PRIMITIVE_TRIANGLEFAN);
		ObjEffect_SetRenderState(obj, ADD);
		ObjEffect_CreateVertex(obj, 4);
		ObjEffect_SetVertexXY(obj, 0, -128+XYR, -512+XYR);
		ObjEffect_SetVertexXY(obj, 1,  128+XYR, -512+XYR);
		ObjEffect_SetVertexXY(obj, 2,  128+XYR, 0+XYR);
		ObjEffect_SetVertexXY(obj, 3, -128+XYR,  0+XYR);
		
let UVR=(rand_int(0,1)*2-1)+256;
		ObjEffect_SetVertexUV(obj, 0,  0+UVR,  0);
		ObjEffect_SetVertexUV(obj, 1,  256+UVR, 0);
		ObjEffect_SetVertexUV(obj, 2, 256+UVR,  512);
		ObjEffect_SetVertexUV(obj, 3, 0+UVR, 512);

		let Alpha=0;
		ascent(let i in 0..4)
		{
		ObjEffect_SetVertexColor(obj,i,Alpha,R,G,B);
		}

		let speed=2;
	//	let angle=rand(260,280);
		Obj_SetSpeed(obj,20);
		Obj_SetAngle(obj,MoveAngle);

		let ShadowCount=0;
		let scx=1;
		let scy=2.0;
		let wide=0;
		let wideangle=0;
		Obj_SetPosition(obj,GetPlayerX+120*cos(MoveAngle),GetPlayerY+120*sin(MoveAngle));
		ObjEffect_SetAngle(obj,0,Yangle*0,MoveAngle-90+0*cos(angle));
		let Langle=MoveAngle-90;
		loop(15)
		{
		if(Alpha<50){Alpha+=10;}
		ascent(let i in 0..4)
		{
		ObjEffect_SetVertexColor(obj,i,Alpha,R,G,B);
		}
			Yangle=rand(-60,60);
			ObjSpell_SetIntersecrionLine(obj,Obj_GetX(obj)+500*cos(Langle-90),Obj_GetY(obj)+500*sin(Langle-90),Obj_GetX(obj),Obj_GetY(obj),120*scx,0.45,true);

			if(scx<1){scx+=0.1;}
			ObjEffect_SetScale(obj,scx,scy);
			yield;
			angle+=6;
		}

		loop(15)
		{
		ascent(let i in 0..4)
		{
		ObjEffect_SetVertexColor(obj,i,Alpha,R,G,B);
		}
		Alpha-=50/15;
			ObjSpell_SetIntersecrionLine(obj,Obj_GetX(obj)+500*cos(Langle-90),Obj_GetY(obj)+500*sin(Langle-90),Obj_GetX(obj),Obj_GetY(obj),120*scx,0.45,true);

			if(scx>0){scx-=0.1;}
			ObjEffect_SetScale(obj,scx,scy);
			yield;
		}

Obj_Delete(obj);
}

task Meteor(x,y)
{
let t=0;
	loop(420)
	{
	let x=GetPlayerX;
	let y=GetPlayerY;
	MeteorEfect(x,y,9+t%7);
	loop(1){yield;}
	t+=1;
	}
}

task MeteorEfect(x,y,graphic)
{
		let R;let G;let B;
		if(graphic==9){R=255;G=0;B=0;}
		if(graphic==10){R=255;G=100;B=0;}
		if(graphic==11){R=255;G=255;B=0;}
		if(graphic==12){R=0;G=255;B=0;}
		if(graphic==13){R=0;G=255;B=255;}
		if(graphic==14){R=0;G=0;B=255;}
		if(graphic==15){R=160;G=32;B=240;}

		let Xangle=rand(0,360);
		let Yangle=rand(0,360);
		let Zangle=rand(0,360);

		let XanglePlus=rand(-10,10);
		let YanglePlus=rand(-10,10);
		let ZanglePlus=rand(5,10)*(rand_int(0,1)*2-1);

		let Scale=1;

  		let obj = Obj_Create(OBJ_SPELL);
		Obj_SetPosition(obj,x,y);
		ObjEffect_SetTexture(obj,csd~"img/Explode.png");
		ObjEffect_SetPrimitiveType(obj, PRIMITIVE_TRIANGLEFAN);
		ObjEffect_SetRenderState(obj, ADD);
		ObjEffect_CreateVertex(obj, 4);
		ObjEffect_SetVertexXY(obj, 0, -64, -64);
		ObjEffect_SetVertexXY(obj, 1,  64, -64);
		ObjEffect_SetVertexXY(obj, 2,  64, 64);
		ObjEffect_SetVertexXY(obj, 3, -64,  64);
		
		ObjEffect_SetVertexUV(obj, 0,  0,  0);
		ObjEffect_SetVertexUV(obj, 1, 256, 0);
		ObjEffect_SetVertexUV(obj, 2, 256,  256);
		ObjEffect_SetVertexUV(obj, 3, 0, 256);

		let Alpha=0;
		ascent(let i in 0..4)
		{
		ObjEffect_SetVertexColor(obj,i,Alpha,R,G,B);
		}

		let speed=0;
		let angle=270;
		Obj_SetSpeed(obj,speed);
		Obj_SetAngle(obj,angle);

		let ShadowCount=0;
		loop(15)
		{
			ObjEffect_SetScale(obj,Scale,Scale);
			ObjSpell_SetIntersecrionCircle(obj,Obj_GetX(obj),Obj_GetY(obj),64*Scale,1.0,true);
			ascent(let i in 0..4)
			{
				ObjEffect_SetVertexColor(obj,i,Alpha,R,G,B);
			}
			if(Scale<1)
			{
				Scale+=1.25/15;
			}
			Alpha+=100/15;
			yield;
		}
		loop(15)
		{
			ObjEffect_SetScale(obj,Scale,Scale);
			ObjSpell_SetIntersecrionCircle(obj,Obj_GetX(obj),Obj_GetY(obj),64*Scale,1.0,true);
			ascent(let i in 0..4)
			{
				ObjEffect_SetVertexColor(obj,i,Alpha,R,G,B);
			}
			if(Scale>0)
			{
				Scale-=1/15;
			}
			Alpha-=100/15;
			yield;
		}
		Obj_Delete(obj);
}

task Dark
{
		let X=GetPlayerX;
		let Y=GetPlayerY;
  		let obj = Obj_Create(OBJ_EFFECT);
		Obj_SetPosition(obj,X,Y);
		ObjEffect_SetTexture(obj, csd ~ "img/CircleEffect.png");
		ObjEffect_SetPrimitiveType(obj, PRIMITIVE_TRIANGLEFAN);
		ObjEffect_SetRenderState(obj, SUBTRACT);
		ObjEffect_CreateVertex(obj, 4);
		ObjEffect_SetVertexXY(obj, 0, -24, -24);
		ObjEffect_SetVertexXY(obj, 1,  24, -24);
		ObjEffect_SetVertexXY(obj, 2,  24, 24);
		ObjEffect_SetVertexXY(obj, 3, -24,  24);
		
		ObjEffect_SetVertexUV(obj, 0,  0,  0);
		ObjEffect_SetVertexUV(obj, 1,  48, 0);
		ObjEffect_SetVertexUV(obj, 2, 48,  48);
		ObjEffect_SetVertexUV(obj, 3, 0, 48);

		let Alpha=0;
		let Scale=0;
		ascent(let i in 0..4)
		{
		ObjEffect_SetVertexColor(obj,i,Alpha,255,255,255);
		}

		//ObjEffect_SetAngle(obj,Xangle,Yangle,Zangle);

		loop(60)
		{
			ObjEffect_SetScale(obj,Scale,Scale);
			ascent(let i in 0..4)
			{
				ObjEffect_SetVertexColor(obj,i,Alpha,255,255,255);
			}
			Scale+=1;
			Alpha+=100/60;
			yield;
		}
		loop(420){yield;}
		loop(15)
		{
			ascent(let i in 0..4)
			{
				ObjEffect_SetVertexColor(obj,i,Alpha,255,255,255);
			}
			Alpha-=100/15;
			yield;
		}
		Obj_Delete(obj);
}

}

script_spell StardustReverie //X^[_Xg@GXNvg
{
	let imgNebura = GetCurrentScriptDirectory~"img\nebura.png";
let imgMarisaShot = GetCurrentScriptDirectory~"img\Marisa_shots.png";
	let imgBorderLine = GetCurrentScriptDirectory~"img\SampleEC01a.png";
let SE=["se\seBomb_ReimuB.wav"];
let BombX;
let BombY;
let BMove=120;
    @Initialize {
	BombX=GetCenterX;
	BombY=GetCenterY;

        SetPlayerInvincibility(330);
	TMain;
    }

    @Finalize {
    }

    @MainLoop {
	if(GetCommonDataEx("Hi_Marisa","PlayerMiss")){End;}
        yield;
    }

   task TMain {
//	PlaySE(SE[0]);
	StartStar;
	loop(300){yield;}
        End;
    }

task StartStar
{
let angle=rand(0,360);
	ascent(i in 0..8)
	{
	StartStarEfect(rand_int(9,15),i*45+angle,1);
	StartStarEfect(rand_int(9,15),i*45+angle+22.5,2);
	}
}

task StartStarEfect(graphic,angle,type)
{
		let R;let G;let B;
		if(graphic==9){R=255;G=0;B=0;}
		if(graphic==10){R=255;G=100;B=0;}
		if(graphic==11){R=255;G=255;B=0;}
		if(graphic==12){R=0;G=255;B=0;}
		if(graphic==13){R=0;G=255;B=255;}
		if(graphic==14){R=0;G=0;B=255;}
		if(graphic==15){R=160;G=32;B=240;}

		let Xangle=rand(0,360);
		let Yangle=rand(0,360);
		let Zangle=rand(0,360);

		let XanglePlus=rand(-10,10);
		let YanglePlus=rand(-10,10);
		let ZanglePlus=rand(5,10)*(rand_int(0,1)*2-1);

		let Scale=rand(0.5,1.5);

  		let obj = Obj_Create(OBJ_SPELL);
		Obj_SetPosition(obj,GetPlayerX,GetPlayerY);
		ObjEffect_SetTexture(obj, imgMarisaShot);
		ObjEffect_SetPrimitiveType(obj, PRIMITIVE_TRIANGLEFAN);
		ObjEffect_SetRenderState(obj, ADD);
		ObjEffect_CreateVertex(obj, 4);
		ObjEffect_SetVertexXY(obj, 0, -64, -64);
		ObjEffect_SetVertexXY(obj, 1,  64, -64);
		ObjEffect_SetVertexXY(obj, 2,  64, 64);
		ObjEffect_SetVertexXY(obj, 3, -64,  64);
		
		ObjEffect_SetVertexUV(obj, 0,  0,  384);
		ObjEffect_SetVertexUV(obj, 1,  128, 384);
		ObjEffect_SetVertexUV(obj, 2, 128,  512);
		ObjEffect_SetVertexUV(obj, 3, 0, 512);

		ascent(let i in 0..4)
		{
		ObjEffect_SetVertexColor(obj,i,200,R,G,B);
		}
		let Minspeed=rand(1.25,1.75)*type;
		let speed=6;
		//let angle=rand(250,290);
		Obj_SetSpeed(obj,speed);
		Obj_SetAngle(obj,angle);

		let ShadowCount=0;
		while(!Obj_BeDeleted(obj))
		{
			Obj_SetSpeed(obj,speed);
			if(speed>Minspeed){speed-=0.1;}
			if(GetCommonDataDefault("LightMode_BombEffect",0)==0)
			{
			StarShadowEfect(Obj_GetX(obj),Obj_GetY(obj),speed,angle,Scale,Xangle*0,Yangle*0,Zangle,R,G,B);
			}
			ObjSpell_SetIntersecrionCircle(obj,Obj_GetX(obj),Obj_GetY(obj),64*Scale,3.5,true);
			ObjEffect_SetScale(obj,Scale,Scale);
			ObjEffect_SetAngle(obj,Xangle*0,Yangle*0,Zangle);
			Xangle+=XanglePlus;
			Yangle+=YanglePlus;
			Zangle+=ZanglePlus;
			//Scale+=0.01;
			ShadowCount++;
			yield;
		}
}


task StarShadowEfect(X,Y,speed,angle,Scale,Xangle,Yangle,Zangle,R,G,B)
{

  		let obj = Obj_Create(OBJ_EFFECT);
		Obj_SetPosition(obj,X,Y);
		ObjEffect_SetTexture(obj, imgMarisaShot);
		ObjEffect_SetPrimitiveType(obj, PRIMITIVE_TRIANGLEFAN);
		ObjEffect_SetRenderState(obj, ADD);
		ObjEffect_CreateVertex(obj, 4);
		ObjEffect_SetVertexXY(obj, 0, -64, -64);
		ObjEffect_SetVertexXY(obj, 1,  64, -64);
		ObjEffect_SetVertexXY(obj, 2,  64, 64);
		ObjEffect_SetVertexXY(obj, 3, -64,  64);
		
		ObjEffect_SetVertexUV(obj, 0,  0,  384);
		ObjEffect_SetVertexUV(obj, 1,  128, 384);
		ObjEffect_SetVertexUV(obj, 2, 128,  512);
		ObjEffect_SetVertexUV(obj, 3, 0, 512);

		let Alpha=100;
		ascent(let i in 0..4)
		{
		ObjEffect_SetVertexColor(obj,i,Alpha,R,G,B);
		}

		ObjEffect_SetAngle(obj,Xangle,Yangle,Zangle);

		loop(3)
		{
			ObjEffect_SetScale(obj,Scale,Scale);
			ascent(let i in 0..4)
			{
				ObjEffect_SetVertexColor(obj,i,Alpha,R,G,B);
			}
			Scale+=0.05;
			Alpha-=20;
			yield;
		}
		Obj_Delete(obj);
}

}


script_spell SureFireMasterSpark //ח₷}X^[Xp[NXNvg
{
	let csd = GetCurrentScriptDirectory();
	let imgNebura = GetCurrentScriptDirectory~"img\nebura.png";
let imgMarisaShot = GetCurrentScriptDirectory~"img\Marisa_shots.png";
	let imgBorderLine = GetCurrentScriptDirectory~"img\SampleEC01a.png";
let SE=["se\seBomb_ReimuB.wav"];
let BombX;
let BombY;
let BMove=120;
let EndFrag=false;
let SparkAngle=0;
    @Initialize {
	BombX=GetCenterX;
	BombY=GetCenterY;

        SetPlayerInvincibility(120);
	TMain;
    }

    @Finalize {
    }

    @MainLoop {
	if(GetCommonDataEx("Hi_Marisa","PlayerMiss")){End;}
        yield;
    }

   task TMain {
//	PlaySE(SE[0]);
	PreSpark;
	Dark;
	loop(120){yield;}
	Star;
        loop(390){yield;}
        End;
    }

task PreSpark
{

let t=rand_int(0,7);
ascent(i in 0..7)
{
	PreStarEfect(9+(t+i)%7,i*60);
}

}

task PreStarEfect(graphic,angle)
{
		function XYR{return(rand(0,0));}
		let R=255;;let G=255;let B=255;
		if(graphic==9){R=255;G=0+50;B=0+50;}
		if(graphic==10){R=255;G=100+50;B=0+50;}
		if(graphic==11){R=255;G=255;B=0+50;}
		if(graphic==12){R=0+50;G=255;B=0+50;}
		if(graphic==13){R=0+50;G=255;B=255;}
		if(graphic==14){R=0+50;G=0+50;B=255;}
		if(graphic==15){R=160+50;G=32+50;B=240;}

		let Xangle=rand(0,360);
		let Yangle=rand(0,360);
		let Zangle=rand(0,360);

		let XanglePlus=rand(-10,10);
		let YanglePlus=rand(-10,10);
		let ZanglePlus=rand(-10,10);

		let Scale=0.1;

  		let obj = Obj_Create(OBJ_SPELL);
		Obj_SetPosition(obj,GetPlayerX,GetPlayerY);
		ObjEffect_SetTexture(obj, csd~"img\Spark.png");
		ObjEffect_SetPrimitiveType(obj, PRIMITIVE_TRIANGLEFAN);
		ObjEffect_SetRenderState(obj, ADD);
		ObjEffect_CreateVertex(obj, 4);
		ObjEffect_SetVertexXY(obj, 0, -128+XYR, -512+XYR);
		ObjEffect_SetVertexXY(obj, 1,  128+XYR, -512+XYR);
		ObjEffect_SetVertexXY(obj, 2,  128+XYR, 0+XYR);
		ObjEffect_SetVertexXY(obj, 3, -128+XYR,  0+XYR);
		
let UVR=(rand_int(0,1)*2-1)+256;
		ObjEffect_SetVertexUV(obj, 0,  0+UVR,  0);
		ObjEffect_SetVertexUV(obj, 1,  256+UVR, 0);
		ObjEffect_SetVertexUV(obj, 2, 256+UVR,  512);
		ObjEffect_SetVertexUV(obj, 3, 0+UVR, 512);

		let Alpha=0;
		ascent(let i in 0..4)
		{
		ObjEffect_SetVertexColor(obj,i,Alpha,R,G,B);
		}

		let speed=2;
	//	let angle=rand(260,280);
		Obj_SetSpeed(obj,speed);
	//	Obj_SetAngle(obj,angle);

		let ShadowCount=0;
		let scx=0;
		let scy=1.2;
		let wide=0;
		let wideangle=0;

		loop(120)
		{
		if(Alpha<50){Alpha+=10;}
		ascent(let i in 0..4)
		{
		ObjEffect_SetVertexColor(obj,i,Alpha,R,G,B);
		}
			ObjEffect_SetAngle(obj,0,Yangle,SparkAngle+0.2*cos(angle));
			Yangle=rand(-5,5);
			ObjSpell_SetIntersecrionLine(obj,GetPlayerX+500*cos(SparkAngle-90),GetPlayerY+500*sin(SparkAngle-90),GetPlayerX,GetPlayerY,64*scx,1.5,true);
			if(scx<0.1){scx+=0.1/15;}
			ObjEffect_SetScale(obj,scx,scy);
			Obj_SetPosition(obj,GetPlayerX+0*cos(SparkAngle+90),GetPlayerY+0*sin(SparkAngle+90));
			yield;
			angle+=6;
			if(GetKeyState(VK_LEFT)==KEY_PUSH ||GetKeyState(VK_LEFT)==KEY_HOLD)
			{
				SparkAngle-=0.05;
			}
			if(GetKeyState(VK_RIGHT)==KEY_PUSH ||GetKeyState(VK_RIGHT)==KEY_HOLD)
			{
				SparkAngle+=0.05;
			}
		}
		Obj_Delete(obj);
}


task Star
{
let t=rand_int(0,7);
ascent(i in 0..7)
{
	StarEfect(9+(t+i)%7,i*60);
}
	//StarEfect(16,0);

loop(72)
{
BorderEffect(GetPlayerX,GetPlayerY);
loop(5){yield;}
}

}

task StarEfect(graphic,angle)
{
		function XYR{return(rand(0,0));}
		let R=255;;let G=255;let B=255;
		if(graphic==9){R=255;G=0+50;B=0+50;}
		if(graphic==10){R=255;G=100+50;B=0+50;}
		if(graphic==11){R=255;G=255;B=0+50;}
		if(graphic==12){R=0+50;G=255;B=0+50;}
		if(graphic==13){R=0+50;G=255;B=255;}
		if(graphic==14){R=0+50;G=0+50;B=255;}
		if(graphic==15){R=160+50;G=32+50;B=240;}

		let Xangle=rand(0,360);
		let Yangle=rand(0,360);
		let Zangle=rand(0,360);

		let XanglePlus=rand(-10,10);
		let YanglePlus=rand(-10,10);
		let ZanglePlus=rand(-10,10);

		let Scale=0.1;

  		let obj = Obj_Create(OBJ_SPELL);
		Obj_SetPosition(obj,GetPlayerX,GetPlayerY);
		ObjEffect_SetTexture(obj, csd~"img\Spark.png");
		ObjEffect_SetPrimitiveType(obj, PRIMITIVE_TRIANGLEFAN);
		ObjEffect_SetRenderState(obj, ADD);
		ObjEffect_CreateVertex(obj, 4);
		ObjEffect_SetVertexXY(obj, 0, -128+XYR, -512+XYR);
		ObjEffect_SetVertexXY(obj, 1,  128+XYR, -512+XYR);
		ObjEffect_SetVertexXY(obj, 2,  128+XYR, 0+XYR);
		ObjEffect_SetVertexXY(obj, 3, -128+XYR,  0+XYR);
		
let UVR=(rand_int(0,1)*2-1)+256;
		ObjEffect_SetVertexUV(obj, 0,  0+UVR,  0);
		ObjEffect_SetVertexUV(obj, 1,  256+UVR, 0);
		ObjEffect_SetVertexUV(obj, 2, 256+UVR,  512);
		ObjEffect_SetVertexUV(obj, 3, 0+UVR, 512);

		let Alpha=0;
		ascent(let i in 0..4)
		{
		ObjEffect_SetVertexColor(obj,i,Alpha,R,G,B);
		}

		let speed=2;
	//	let angle=rand(260,280);
		Obj_SetSpeed(obj,speed);
	//	Obj_SetAngle(obj,angle);

		let ShadowCount=0;
		let scx=0;
		let scy=1.25;
		let wide=0;
		let wideangle=0;
let time=0;
if(graphic==16){time=300;}
		loop(360)
		{
		if(Alpha<50){Alpha+=10;}
		ascent(let i in 0..4)
		{
		ObjEffect_SetVertexColor(obj,i,Alpha,R,G,B);
		}
			ObjEffect_SetAngle(obj,0,Yangle,SparkAngle+cos(angle));
			Yangle=rand(-10,10);
			ObjSpell_SetIntersecrionLine(obj,GetPlayerX+500*cos(SparkAngle-90),GetPlayerY+500*sin(SparkAngle-90),GetPlayerX,GetPlayerY,64*scx,2.2,true);
			if(scx<2.5){scx+=2.5/15;}
			ObjEffect_SetScale(obj,scx,scy);
			Obj_SetPosition(obj,GetPlayerX+40*cos(SparkAngle+90),GetPlayerY+40*sin(SparkAngle+90));
			yield;
			angle+=6;
		}
		EndFrag=true;
		loop(15)
		{
		ascent(let i in 0..4)
		{
		ObjEffect_SetVertexColor(obj,i,Alpha,R,G,B);
		}
		Alpha-=50/15;
			ObjSpell_SetIntersecrionLine(obj,GetPlayerX+500*cos(SparkAngle-90),GetPlayerY+500*sin(SparkAngle-90),GetPlayerX,GetPlayerY,64*scx,2.0,true);
			if(scx>0){scx-=2.5/15;}
			ObjEffect_SetScale(obj,scx,scy);
			Obj_SetPosition(obj,GetPlayerX,GetPlayerY+40);
			yield;
		}
Obj_Delete(obj);
}


task Dark
{
		let X=GetPlayerX;
		let Y=GetPlayerY;
  		let obj = Obj_Create(OBJ_EFFECT);
		Obj_SetPosition(obj,X,Y);
		ObjEffect_SetTexture(obj, csd ~ "img/CircleEffect.png");
		ObjEffect_SetPrimitiveType(obj, PRIMITIVE_TRIANGLEFAN);
		ObjEffect_SetRenderState(obj, SUBTRACT);
		ObjEffect_CreateVertex(obj, 4);
		ObjEffect_SetVertexXY(obj, 0, -24, -24);
		ObjEffect_SetVertexXY(obj, 1,  24, -24);
		ObjEffect_SetVertexXY(obj, 2,  24, 24);
		ObjEffect_SetVertexXY(obj, 3, -24,  24);
		
		ObjEffect_SetVertexUV(obj, 0,  0,  0);
		ObjEffect_SetVertexUV(obj, 1,  48, 0);
		ObjEffect_SetVertexUV(obj, 2, 48,  48);
		ObjEffect_SetVertexUV(obj, 3, 0, 48);

		let Alpha=0;
		let Scale=0;
		ascent(let i in 0..4)
		{
		ObjEffect_SetVertexColor(obj,i,Alpha,255,255,255);
		}

		//ObjEffect_SetAngle(obj,Xangle,Yangle,Zangle);

		loop(60)
		{
			ObjEffect_SetScale(obj,Scale,Scale);
			ascent(let i in 0..4)
			{
				ObjEffect_SetVertexColor(obj,i,Alpha,255,255,255);
			}
			Scale+=1;
			Alpha+=100/60;
			yield;
		}
		loop{yield;if(EndFrag){break;}}
		loop(15)
		{
			ascent(let i in 0..4)
			{
				ObjEffect_SetVertexColor(obj,i,Alpha,255,255,255);
			}
			Alpha-=100/15;
			yield;
		}
		Obj_Delete(obj);
}

task StarShadowEfect(X,Y,speed,angle,Scale,Xangle,Yangle,Zangle,R,G,B)
{

  		let obj = Obj_Create(OBJ_EFFECT);
		Obj_SetPosition(obj,X,Y);
		ObjEffect_SetTexture(obj, imgMarisaShot);
		ObjEffect_SetPrimitiveType(obj, PRIMITIVE_TRIANGLEFAN);
		ObjEffect_SetRenderState(obj, ADD);
		ObjEffect_CreateVertex(obj, 4);
		ObjEffect_SetVertexXY(obj, 0, -64, -64);
		ObjEffect_SetVertexXY(obj, 1,  64, -64);
		ObjEffect_SetVertexXY(obj, 2,  64, 64);
		ObjEffect_SetVertexXY(obj, 3, -64,  64);
		
		ObjEffect_SetVertexUV(obj, 0,  0,  384);
		ObjEffect_SetVertexUV(obj, 1,  128, 384);
		ObjEffect_SetVertexUV(obj, 2, 128,  512);
		ObjEffect_SetVertexUV(obj, 3, 0, 512);

		let Alpha=100;
		ascent(let i in 0..4)
		{
		ObjEffect_SetVertexColor(obj,i,Alpha,R,G,B);
		}

		ObjEffect_SetAngle(obj,Xangle,Yangle,Zangle);

		loop(3)
		{
			ObjEffect_SetScale(obj,Scale,Scale);
			ascent(let i in 0..4)
			{
				ObjEffect_SetVertexColor(obj,i,Alpha,R,G,B);
			}
			Scale+=0.05;
			Alpha-=20;
			yield;
		}
		Obj_Delete(obj);
}

task BorderEffect(x,y)
{
		let r1=0;
		let r2=50;
		let randvertex=rand_int(0,5);
		let VertexNum=16;
		let Radius=[r1,r2];
		let obj = Obj_Create(OBJ_EFFECT);
		ObjEffect_SetTexture(obj,imgBorderLine);
		ObjEffect_SetPrimitiveType(obj, PRIMITIVE_TRIANGLESTRIP);
		ObjEffect_SetRenderState(obj, ADD); 
		ObjEffect_CreateVertex(obj,VertexNum);
		ascent(let i in 0+randvertex..VertexNum+randvertex)
		{
			ObjEffect_SetVertexXY(obj, i-randvertex, Radius[i%2]*cos(360/(VertexNum-2)*i), Radius[i%2]*sin(360/(VertexNum-2)*i));
		}
		ascent(let i in 0+randvertex..VertexNum+randvertex)
		{	
			ObjEffect_SetVertexUV(obj, i-randvertex,  256/(VertexNum)*i,  16*(i%2));
		}


		ObjEffect_SetLayer(obj,3);

		let Scale=1;
		let Zangle=0;
		ObjEffect_SetScale(obj,Scale,Scale);
		Obj_SetPosition(obj,x,y);
		let Alpha=100;
		let angle=0;

		let StandardX=GetCenterX;
		let StandardY=GetCenterY+32;

		let Xangle=rand(0,360);
		let Yangle=rand(0,360);
		let Zangle=rand(0,360);

		ObjEffect_SetAngle(obj,Xangle*0+60,Yangle*0,Zangle);

		Obj_SetSpeed(obj,12);
		Obj_SetAngle(obj,SparkAngle-90);

		ObjEffect_SetAngle(obj,60,SparkAngle,Zangle);

		loop(60)
		{
			if(r1<150)
			{
			r1+=15;
			r2+=15;
			Radius=[r1,r2];
			}
		//Obj_SetX(obj,GetPlayerX);
		ascent(let i in 0..VertexNum)
		{
			ObjEffect_SetVertexXY(obj, i, Radius[i%2]*cos(360/(VertexNum-2)*i+angle), Radius[i%2]*sin(360/(VertexNum-2)*i+angle));
		}
		ascent(let i in 0..VertexNum)
		{			
			ObjEffect_SetVertexColor(obj, i,Alpha,255,255*(i%3),0);
		}
		ObjEffect_SetScale(obj,Scale,Scale);
		angle+=2;
		//Alpha-=10;
		
		//Scale+=0.01;
		yield;
		if(EndFrag){break;}
		}
		if(EndFrag)
		{
			loop(15)
			{
			r1-=150/15;
			r2-=150/15;
			Radius=[r1,r2];
		//Obj_SetX(obj,GetPlayerX);
		ascent(let i in 0..VertexNum)
		{
			ObjEffect_SetVertexXY(obj, i, Radius[i%2]*cos(360/(VertexNum-2)*i+angle), Radius[i%2]*sin(360/(VertexNum-2)*i+angle));
		}
		ascent(let i in 0..VertexNum)
		{			
			ObjEffect_SetVertexColor(obj, i,Alpha,255,255*(i%3),0);
		}
		ObjEffect_SetScale(obj,Scale,Scale);
		angle+=2;
		//Alpha-=10;
		
		//Scale+=0.01;
		yield;
			}
		}
		Obj_Delete(obj);
}

task BorderEffect2(x,y)
{
		let r1=-25;
		let r2=25;
		let randvertex=rand_int(0,5);
		let VertexNum=16;
		let Radius=[r1,r2];
		let obj = Obj_Create(OBJ_EFFECT);
		ObjEffect_SetTexture(obj,imgBorderLine);
		ObjEffect_SetPrimitiveType(obj, PRIMITIVE_TRIANGLESTRIP);
		ObjEffect_SetRenderState(obj, ADD); 
		ObjEffect_CreateVertex(obj,VertexNum);
		ascent(let i in 0+randvertex..VertexNum+randvertex)
		{
			ObjEffect_SetVertexXY(obj, i-randvertex, Radius[i%2]*cos(360/(VertexNum-2)*i), Radius[i%2]*sin(360/(VertexNum-2)*i));
		}
		ascent(let i in 0+randvertex..VertexNum+randvertex)
		{	
			ObjEffect_SetVertexUV(obj, i-randvertex,  256/(VertexNum)*i,  16*(i%2));
		}


		ObjEffect_SetLayer(obj,3);

		let Scale=0;
		let Zangle=0;
		ObjEffect_SetScale(obj,Scale,Scale);
		Obj_SetPosition(obj,x,y);
		let Alpha=200;
		let angle=0;

		let StandardX=GetCenterX;
		let StandardY=GetCenterY+32;

		let Xangle=rand(0,360);
		let Yangle=rand(0,360);
		let Zangle=rand(0,360);

		ObjEffect_SetAngle(obj,Xangle*0,Yangle*0,Zangle);


		loop(20)
		{
			r1+=5;
			r2+=5;
			Radius=[r1,r2];
		ascent(let i in 0..VertexNum)
		{
			ObjEffect_SetVertexXY(obj, i, Radius[i%2]*cos(360/(VertexNum-2)*i+angle), Radius[i%2]*sin(360/(VertexNum-2)*i+angle));
		}
		ascent(let i in 0..VertexNum)
		{			
			ObjEffect_SetVertexColor(obj, i,Alpha,255,255*(i%3),0);
		}
		ObjEffect_SetScale(obj,Scale,Scale);
		angle+=2;
		Alpha-=10;
		//Scale+=0.1;
		yield;
		}
		Obj_Delete(obj);
}

}


script_spell NonDirectionalLaser //umfBNVi[U[vXNvg
{
	let csd = GetCurrentScriptDirectory();
	let imgNebura = GetCurrentScriptDirectory~"img\nebura.png";
let imgMarisaShot = GetCurrentScriptDirectory~"img\Marisa_shots.png";
	let imgBorderLine = GetCurrentScriptDirectory~"img\SampleEC01a.png";
let SE=["se\seBomb_ReimuB.wav"];
let BombX;
let BombY;
let BMove=120;
    @Initialize {
	BombX=GetCenterX;
	BombY=GetCenterY;

        SetPlayerInvincibility(390);
	TMain;
    }

    @Finalize {
    }

    @MainLoop {
	if(GetCommonDataEx("Hi_Marisa","PlayerMiss")){End;}
        yield;
    }

   task TMain {
//	PlaySE(SE[0]);
	Star;
        loop(330){yield;}
        End;
    }

task Star
{
let t=rand_int(0,7);
ascent(i in 0..7)
{
	StarEfect(9+(t+i)%7,i*60,0);
StarEfect(9+(t+i)%7,i*60,120);
StarEfect(9+(t+i)%7,i*60,240);
}
	//StarEfect(16,0);

}

task StarEfect(graphic,angle,Langle)
{
		function XYR{return(rand(0,0));}
		let R=255;;let G=255;let B=255;
		if(graphic==9){R=255;G=0+50;B=0+50;}
		if(graphic==10){R=255;G=100+50;B=0+50;}
		if(graphic==11){R=255;G=255;B=0+50;}
		if(graphic==12){R=0+50;G=255;B=0+50;}
		if(graphic==13){R=0+50;G=255;B=255;}
		if(graphic==14){R=0+50;G=0+50;B=255;}
		if(graphic==15){R=160+50;G=32+50;B=240;}

		let Xangle=rand(0,360);
		let Yangle=rand(0,360);
		let Zangle=rand(0,360);

		let XanglePlus=rand(-10,10);
		let YanglePlus=rand(-10,10);
		let ZanglePlus=rand(-10,10);

		let Scale=0.1;

  		let obj = Obj_Create(OBJ_SPELL);
		Obj_SetPosition(obj,GetPlayerX,GetPlayerY);
		ObjEffect_SetTexture(obj, csd~"img\Spark.png");
		ObjEffect_SetPrimitiveType(obj, PRIMITIVE_TRIANGLEFAN);
		ObjEffect_SetRenderState(obj, ADD);
		ObjEffect_CreateVertex(obj, 4);
		ObjEffect_SetVertexXY(obj, 0, -128+XYR, -512+XYR);
		ObjEffect_SetVertexXY(obj, 1,  128+XYR, -512+XYR);
		ObjEffect_SetVertexXY(obj, 2,  128+XYR, 0+XYR);
		ObjEffect_SetVertexXY(obj, 3, -128+XYR,  0+XYR);
		
let UVR=(rand_int(0,1)*2-1)+256;
		ObjEffect_SetVertexUV(obj, 0,  0+UVR,  0);
		ObjEffect_SetVertexUV(obj, 1,  256+UVR, 0);
		ObjEffect_SetVertexUV(obj, 2, 256+UVR,  512);
		ObjEffect_SetVertexUV(obj, 3, 0+UVR, 512);

		let Alpha=0;
		ascent(let i in 0..4)
		{
		ObjEffect_SetVertexColor(obj,i,Alpha,R,G,B);
		}

		let speed=2;
	//	let angle=rand(260,280);
		Obj_SetSpeed(obj,speed);
	//	Obj_SetAngle(obj,angle);

		let ShadowCount=0;
		let scx=0;
		let scy=1.0;
		let wide=0;
		let wideangle=0;
let time=0;
if(graphic==16){time=300;}
let LangleSpeed=1;
		loop(300)
		{
		if(Alpha<50){Alpha+=10;}
		ascent(let i in 0..4)
		{
		ObjEffect_SetVertexColor(obj,i,Alpha,R,G,B);
		}
			ObjEffect_SetAngle(obj,0,Yangle,Langle+cos(angle));
			Yangle=rand(-60,60);
			ObjSpell_SetIntersecrionLine(obj,GetPlayerX+500*cos(Langle-90),GetPlayerY+500*sin(Langle-90),GetPlayerX,GetPlayerY,64*scx,1.35,true);
			if(scx<0.45){scx+=0.045;}
			ObjEffect_SetScale(obj,scx,scy);
			Obj_SetPosition(obj,GetPlayerX+20*cos(Langle+90),GetPlayerY+20*sin(Langle+90));
			yield;
			Langle+=LangleSpeed;
			if(LangleSpeed<6){LangleSpeed+=0.03;}
			angle+=6;
		}
		loop(15)
		{
		ascent(let i in 0..4)
		{
		ObjEffect_SetVertexColor(obj,i,Alpha,R,G,B);
		}
			ObjEffect_SetAngle(obj,0,Yangle,Langle+cos(angle));
		Alpha-=50/15;
	ObjSpell_SetIntersecrionLine(obj,GetPlayerX+500*cos(Langle+90),GetPlayerY+500*sin(Langle+90),GetPlayerX,GetPlayerY,64*scx,1.35,true);
			if(scx>0){scx-=0.045;}
			ObjEffect_SetScale(obj,scx,scy);
			Obj_SetPosition(obj,GetPlayerX+20*cos(Langle+90),GetPlayerY+20*sin(Langle+90));
			Langle+=3;
			angle+=6;
			yield;
		}
Obj_Delete(obj);
}


task StarShadowEfect(X,Y,speed,angle,Scale,Xangle,Yangle,Zangle,R,G,B)
{

  		let obj = Obj_Create(OBJ_EFFECT);
		Obj_SetPosition(obj,X,Y);
		ObjEffect_SetTexture(obj, imgMarisaShot);
		ObjEffect_SetPrimitiveType(obj, PRIMITIVE_TRIANGLEFAN);
		ObjEffect_SetRenderState(obj, ADD);
		ObjEffect_CreateVertex(obj, 4);
		ObjEffect_SetVertexXY(obj, 0, -64, -64);
		ObjEffect_SetVertexXY(obj, 1,  64, -64);
		ObjEffect_SetVertexXY(obj, 2,  64, 64);
		ObjEffect_SetVertexXY(obj, 3, -64,  64);
		
		ObjEffect_SetVertexUV(obj, 0,  0,  384);
		ObjEffect_SetVertexUV(obj, 1,  128, 384);
		ObjEffect_SetVertexUV(obj, 2, 128,  512);
		ObjEffect_SetVertexUV(obj, 3, 0, 512);

		let Alpha=100;
		ascent(let i in 0..4)
		{
		ObjEffect_SetVertexColor(obj,i,Alpha,R,G,B);
		}

		ObjEffect_SetAngle(obj,Xangle,Yangle,Zangle);

		loop(3)
		{
			ObjEffect_SetScale(obj,Scale,Scale);
			ascent(let i in 0..4)
			{
				ObjEffect_SetVertexColor(obj,i,Alpha,R,G,B);
			}
			Scale+=0.05;
			Alpha-=20;
			yield;
		}
		Obj_Delete(obj);
}

}


script_spell DragonMeteor //uhSeIvXNvg
{
	let imgNebura = GetCurrentScriptDirectory~"img\nebura.png";
let imgMarisaShot = GetCurrentScriptDirectory~"img\Marisa_shots.png";
	let imgBorderLine = GetCurrentScriptDirectory~"img\SampleEC01a.png";
	let csd = GetCurrentScriptDirectory();
let SE=["se\seBomb_ReimuB.wav"];
let BombX;
let BombY;
let BMove=120;
    @Initialize {
	BombX=GetCenterX;
	BombY=GetCenterY;

        SetPlayerInvincibility(540);
	TMain;
    }

    @Finalize {
    }

    @MainLoop {
	if(GetCommonDataEx("Hi_Marisa","PlayerMiss")){End;}
        yield;
    }

   task TMain {
//	PlaySE(SE[0]);
	Dark;
	Meteor;
	BigMeteor;
        loop(510){yield;}
        End;
    }

task Meteor
{
loop(120)
{
	let X=rand(GetClipMinX,GetClipMaxX);
	let Y=rand(GetClipMinY,GetClipMaxY);
	Star(X,Y);
	loop(4){yield;}
}

}


task BigMeteor
{

loop(330){yield;}

	let X=GetCenterX;
	let Y=GetCenterY;
	if(GetEnemyNum!=0)
	{
		let enemy=rand_int(EnumEnemyBegin,EnumEnemyEnd);
		let enemyID = EnumEnemyGetID(enemy);
		X=GetEnemyInfo(enemyID,ENEMY_X);
		Y=GetEnemyInfo(enemyID,ENEMY_Y);
	}
	BigStar(X,Y);
}

task BigStar(x,y)
{
let t=0;
	loop(60)
	{
	BigStarEfect(x,y,9+t%7);
	loop(2){yield;}
	t+=1;
	}
}

task BigStarEfect(x,y,graphic)
{
		let R;let G;let B;
		if(graphic==9){R=255;G=0;B=0;}
		if(graphic==10){R=255;G=100;B=0;}
		if(graphic==11){R=255;G=255;B=0;}
		if(graphic==12){R=0;G=255;B=0;}
		if(graphic==13){R=0;G=255;B=255;}
		if(graphic==14){R=0;G=0;B=255;}
		if(graphic==15){R=160;G=32;B=240;}

		let Xangle=rand(0,360);
		let Yangle=rand(0,360);
		let Zangle=rand(0,360);

		let XanglePlus=rand(-10,10);
		let YanglePlus=rand(-10,10);
		let ZanglePlus=rand(5,10)*(rand_int(0,1)*2-1);

		let Scale=0;

  		let obj = Obj_Create(OBJ_SPELL);
		Obj_SetPosition(obj,x,y);
		ObjEffect_SetTexture(obj,csd~"img/Explode.png");
		ObjEffect_SetPrimitiveType(obj, PRIMITIVE_TRIANGLEFAN);
		ObjEffect_SetRenderState(obj, ADD);
		ObjEffect_CreateVertex(obj, 4);
		ObjEffect_SetVertexXY(obj, 0, -64, -64);
		ObjEffect_SetVertexXY(obj, 1,  64, -64);
		ObjEffect_SetVertexXY(obj, 2,  64, 64);
		ObjEffect_SetVertexXY(obj, 3, -64,  64);
		
		ObjEffect_SetVertexUV(obj, 0,  0,  0);
		ObjEffect_SetVertexUV(obj, 1, 256, 0);
		ObjEffect_SetVertexUV(obj, 2, 256,  256);
		ObjEffect_SetVertexUV(obj, 3, 0, 256);

		let Alpha=0;
		ascent(let i in 0..4)
		{
		ObjEffect_SetVertexColor(obj,i,Alpha,R,G,B);
		}

		let speed=0;
		let angle=270;
		Obj_SetSpeed(obj,speed);
		Obj_SetAngle(obj,angle);

		let ShadowCount=0;
		loop(15)
		{
			ObjEffect_SetScale(obj,Scale,Scale);
			ObjSpell_SetIntersecrionCircle(obj,Obj_GetX(obj),Obj_GetY(obj),64*Scale,1.5,true);
			ascent(let i in 0..4)
			{
				ObjEffect_SetVertexColor(obj,i,Alpha,R,G,B);
			}
			if(Scale<2)
			{
				Scale+=2/15;
			}
			Alpha+=100/15;
			yield;
		}
		loop(15)
		{
			ObjEffect_SetScale(obj,Scale,Scale);
			ObjSpell_SetIntersecrionCircle(obj,Obj_GetX(obj),Obj_GetY(obj),64*Scale,1.5,true);
			ascent(let i in 0..4)
			{
				ObjEffect_SetVertexColor(obj,i,Alpha,R,G,B);
			}
			if(Scale>0)
			{
			//	Scale-=1/15;
			}
			Alpha-=100/15;
			yield;
		}
		Obj_Delete(obj);
}

task Star(x,y)
{
let t=0;
	loop(10)
	{
	StarEfect(x,y,9+t%7);
	loop(2){yield;}
	t+=1;
	}
}

task StarEfect(x,y,graphic)
{
		let R;let G;let B;
		if(graphic==9){R=255;G=0;B=0;}
		if(graphic==10){R=255;G=100;B=0;}
		if(graphic==11){R=255;G=255;B=0;}
		if(graphic==12){R=0;G=255;B=0;}
		if(graphic==13){R=0;G=255;B=255;}
		if(graphic==14){R=0;G=0;B=255;}
		if(graphic==15){R=160;G=32;B=240;}

		let Xangle=rand(0,360);
		let Yangle=rand(0,360);
		let Zangle=rand(0,360);

		let XanglePlus=rand(-10,10);
		let YanglePlus=rand(-10,10);
		let ZanglePlus=rand(5,10)*(rand_int(0,1)*2-1);

		let Scale=0;

  		let obj = Obj_Create(OBJ_SPELL);
		Obj_SetPosition(obj,x,y);
		ObjEffect_SetTexture(obj,csd~"img/Explode.png");
		ObjEffect_SetPrimitiveType(obj, PRIMITIVE_TRIANGLEFAN);
		ObjEffect_SetRenderState(obj, ADD);
		ObjEffect_CreateVertex(obj, 4);
		ObjEffect_SetVertexXY(obj, 0, -64, -64);
		ObjEffect_SetVertexXY(obj, 1,  64, -64);
		ObjEffect_SetVertexXY(obj, 2,  64, 64);
		ObjEffect_SetVertexXY(obj, 3, -64,  64);
		
		ObjEffect_SetVertexUV(obj, 0,  0,  0);
		ObjEffect_SetVertexUV(obj, 1, 256, 0);
		ObjEffect_SetVertexUV(obj, 2, 256,  256);
		ObjEffect_SetVertexUV(obj, 3, 0, 256);

		let Alpha=0;
		ascent(let i in 0..4)
		{
		ObjEffect_SetVertexColor(obj,i,Alpha,R,G,B);
		}

		let speed=0;
		let angle=270;
		Obj_SetSpeed(obj,speed);
		Obj_SetAngle(obj,angle);

		let ShadowCount=0;
		loop(15)
		{
			ObjEffect_SetScale(obj,Scale,Scale);
			ObjSpell_SetIntersecrionCircle(obj,Obj_GetX(obj),Obj_GetY(obj),64*Scale,0.35,true);
			ascent(let i in 0..4)
			{
				ObjEffect_SetVertexColor(obj,i,Alpha,R,G,B);
			}
			if(Scale<1)
			{
				Scale+=1.25/15;
			}
			Alpha+=100/15;
			yield;
		}
		loop(15)
		{
			ObjEffect_SetScale(obj,Scale,Scale);
			ObjSpell_SetIntersecrionCircle(obj,Obj_GetX(obj),Obj_GetY(obj),64*Scale,0.35,true);
			ascent(let i in 0..4)
			{
				ObjEffect_SetVertexColor(obj,i,Alpha,R,G,B);
			}
			if(Scale>0)
			{
			//	Scale-=1/15;
			}
			Alpha-=100/15;
			yield;
		}
		Obj_Delete(obj);
}

task Dark
{
		let X=GetPlayerX;
		let Y=GetPlayerY;
  		let obj = Obj_Create(OBJ_EFFECT);
		Obj_SetPosition(obj,X,Y);
		ObjEffect_SetTexture(obj, csd ~ "img/CircleEffect.png");
		ObjEffect_SetPrimitiveType(obj, PRIMITIVE_TRIANGLEFAN);
		ObjEffect_SetRenderState(obj, SUBTRACT);
		ObjEffect_CreateVertex(obj, 4);
		ObjEffect_SetVertexXY(obj, 0, -24, -24);
		ObjEffect_SetVertexXY(obj, 1,  24, -24);
		ObjEffect_SetVertexXY(obj, 2,  24, 24);
		ObjEffect_SetVertexXY(obj, 3, -24,  24);
		
		ObjEffect_SetVertexUV(obj, 0,  0,  0);
		ObjEffect_SetVertexUV(obj, 1,  48, 0);
		ObjEffect_SetVertexUV(obj, 2, 48,  48);
		ObjEffect_SetVertexUV(obj, 3, 0, 48);

		let Alpha=0;
		let Scale=0;
		ascent(let i in 0..4)
		{
		ObjEffect_SetVertexColor(obj,i,Alpha,255,255,255);
		}

		//ObjEffect_SetAngle(obj,Xangle,Yangle,Zangle);

		loop(60)
		{
			ObjEffect_SetScale(obj,Scale,Scale);
			ascent(let i in 0..4)
			{
				ObjEffect_SetVertexColor(obj,i,Alpha,255,255,255);
			}
			Scale+=1;
			Alpha+=100/60;
			yield;
		}
		loop(420){yield;}
		loop(15)
		{
			ascent(let i in 0..4)
			{
				ObjEffect_SetVertexColor(obj,i,Alpha,255,255,255);
			}
			Alpha-=100/15;
			yield;
		}
		Obj_Delete(obj);
}

}



script_spell FinalSpark //Cut@CiXp[NvXNvg
{
	let csd = GetCurrentScriptDirectory();
	let imgNebura = GetCurrentScriptDirectory~"img\nebura.png";
let imgMarisaShot = GetCurrentScriptDirectory~"img\Marisa_shots.png";
	let imgBorderLine = GetCurrentScriptDirectory~"img\SampleEC01a.png";
let SE=["se\seBomb_ReimuB.wav"];
let BombX;
let BombY;
let BMove=120;
let EndFrag=false;
    @Initialize {
	BombX=GetCenterX;
	BombY=GetCenterY;

        SetPlayerInvincibility(240);
	TMain;
    }

    @Finalize {
    }

    @MainLoop {
	if(GetCommonDataEx("Hi_Marisa","PlayerMiss")){End;}
        yield;
    }

   task TMain {
//	PlaySE(SE[0]);
	Dark;
	loop(60){yield;}
	Star;
        loop(390){yield;}
        End;
    }

task Star
{
let t=rand_int(0,7);
ascent(i in 0..7)
{
	StarEfect(9+(t+i)%7,i*60);
}
	//StarEfect(16,0);

loop(72)
{
BorderEffect(GetPlayerX,GetPlayerY);
loop(5){yield;}
}

}

task StarEfect(graphic,angle)
{
		function XYR{return(rand(0,0));}
		let R=255;;let G=255;let B=255;
		if(graphic==9){R=255;G=0+50;B=0+50;}
		if(graphic==10){R=255;G=100+50;B=0+50;}
		if(graphic==11){R=255;G=255;B=0+50;}
		if(graphic==12){R=0+50;G=255;B=0+50;}
		if(graphic==13){R=0+50;G=255;B=255;}
		if(graphic==14){R=0+50;G=0+50;B=255;}
		if(graphic==15){R=160+50;G=32+50;B=240;}

		let Xangle=rand(0,360);
		let Yangle=rand(0,360);
		let Zangle=rand(0,360);

		let XanglePlus=rand(-10,10);
		let YanglePlus=rand(-10,10);
		let ZanglePlus=rand(-10,10);

		let Scale=0.1;

  		let obj = Obj_Create(OBJ_SPELL);
		Obj_SetPosition(obj,GetPlayerX,GetPlayerY);
		ObjEffect_SetTexture(obj, csd~"img\Spark.png");
		ObjEffect_SetPrimitiveType(obj, PRIMITIVE_TRIANGLEFAN);
		ObjEffect_SetRenderState(obj, ADD);
		ObjEffect_CreateVertex(obj, 4);
		ObjEffect_SetVertexXY(obj, 0, -128+XYR, -512+XYR);
		ObjEffect_SetVertexXY(obj, 1,  128+XYR, -512+XYR);
		ObjEffect_SetVertexXY(obj, 2,  128+XYR, 0+XYR);
		ObjEffect_SetVertexXY(obj, 3, -128+XYR,  0+XYR);
		
let UVR=(rand_int(0,1)*2-1)+256;
		ObjEffect_SetVertexUV(obj, 0,  0+UVR,  0);
		ObjEffect_SetVertexUV(obj, 1,  256+UVR, 0);
		ObjEffect_SetVertexUV(obj, 2, 256+UVR,  512);
		ObjEffect_SetVertexUV(obj, 3, 0+UVR, 512);

		let Alpha=0;
		ascent(let i in 0..4)
		{
		ObjEffect_SetVertexColor(obj,i,Alpha,R,G,B);
		}

		let speed=2;
	//	let angle=rand(260,280);
		Obj_SetSpeed(obj,speed);
	//	Obj_SetAngle(obj,angle);

		let ShadowCount=0;
		let scx=0;
		let scy=1.0;
		let wide=0;
		let wideangle=0;
let time=0;
if(graphic==16){time=300;}
		loop(360)
		{
		if(Alpha<50){Alpha+=10;}
		ascent(let i in 0..4)
		{
		ObjEffect_SetVertexColor(obj,i,Alpha,R,G,B);
		}
			ObjEffect_SetAngle(obj,0,Yangle,cos(angle));
			Yangle=rand(-60,60);
			ObjSpell_SetIntersecrionLine(obj,GetPlayerX,GetClipMinY,GetPlayerX,GetPlayerY,64*scx,2.3,true);
			if(scx<1.5){scx+=0.1;}
			ObjEffect_SetScale(obj,scx,scy);
			Obj_SetPosition(obj,GetPlayerX,GetPlayerY+40);
			yield;
			angle+=6;
		}
		EndFrag=true;
		loop(15)
		{
		ascent(let i in 0..4)
		{
		ObjEffect_SetVertexColor(obj,i,Alpha,R,G,B);
		}
		Alpha-=50/15;
			ObjSpell_SetIntersecrionLine(obj,GetPlayerX,GetClipMinY,GetPlayerX,GetPlayerY,64*scx,2.0,true);
			if(scx>0){scx-=0.1;}
			ObjEffect_SetScale(obj,scx,scy);
			Obj_SetPosition(obj,GetPlayerX,GetPlayerY+40);
			yield;
		}
Obj_Delete(obj);
}


task Dark
{
		let X=GetPlayerX;
		let Y=GetPlayerY;
  		let obj = Obj_Create(OBJ_EFFECT);
		Obj_SetPosition(obj,X,Y);
		ObjEffect_SetTexture(obj, csd ~ "img/CircleEffect.png");
		ObjEffect_SetPrimitiveType(obj, PRIMITIVE_TRIANGLEFAN);
		ObjEffect_SetRenderState(obj, SUBTRACT);
		ObjEffect_CreateVertex(obj, 4);
		ObjEffect_SetVertexXY(obj, 0, -24, -24);
		ObjEffect_SetVertexXY(obj, 1,  24, -24);
		ObjEffect_SetVertexXY(obj, 2,  24, 24);
		ObjEffect_SetVertexXY(obj, 3, -24,  24);
		
		ObjEffect_SetVertexUV(obj, 0,  0,  0);
		ObjEffect_SetVertexUV(obj, 1,  48, 0);
		ObjEffect_SetVertexUV(obj, 2, 48,  48);
		ObjEffect_SetVertexUV(obj, 3, 0, 48);

		let Alpha=0;
		let Scale=0;
		ascent(let i in 0..4)
		{
		ObjEffect_SetVertexColor(obj,i,Alpha,255,255,255);
		}

		//ObjEffect_SetAngle(obj,Xangle,Yangle,Zangle);

		loop(60)
		{
			ObjEffect_SetScale(obj,Scale,Scale);
			ascent(let i in 0..4)
			{
				ObjEffect_SetVertexColor(obj,i,Alpha,255,255,255);
			}
			Scale+=1;
			Alpha+=100/60;
			yield;
		}
		loop{yield;if(EndFrag){break;}}
		loop(15)
		{
			ascent(let i in 0..4)
			{
				ObjEffect_SetVertexColor(obj,i,Alpha,255,255,255);
			}
			Alpha-=100/15;
			yield;
		}
		Obj_Delete(obj);
}

task StarShadowEfect(X,Y,speed,angle,Scale,Xangle,Yangle,Zangle,R,G,B)
{

  		let obj = Obj_Create(OBJ_EFFECT);
		Obj_SetPosition(obj,X,Y);
		ObjEffect_SetTexture(obj, imgMarisaShot);
		ObjEffect_SetPrimitiveType(obj, PRIMITIVE_TRIANGLEFAN);
		ObjEffect_SetRenderState(obj, ADD);
		ObjEffect_CreateVertex(obj, 4);
		ObjEffect_SetVertexXY(obj, 0, -64, -64);
		ObjEffect_SetVertexXY(obj, 1,  64, -64);
		ObjEffect_SetVertexXY(obj, 2,  64, 64);
		ObjEffect_SetVertexXY(obj, 3, -64,  64);
		
		ObjEffect_SetVertexUV(obj, 0,  0,  384);
		ObjEffect_SetVertexUV(obj, 1,  128, 384);
		ObjEffect_SetVertexUV(obj, 2, 128,  512);
		ObjEffect_SetVertexUV(obj, 3, 0, 512);

		let Alpha=100;
		ascent(let i in 0..4)
		{
		ObjEffect_SetVertexColor(obj,i,Alpha,R,G,B);
		}

		ObjEffect_SetAngle(obj,Xangle,Yangle,Zangle);

		loop(3)
		{
			ObjEffect_SetScale(obj,Scale,Scale);
			ascent(let i in 0..4)
			{
				ObjEffect_SetVertexColor(obj,i,Alpha,R,G,B);
			}
			Scale+=0.05;
			Alpha-=20;
			yield;
		}
		Obj_Delete(obj);
}

task BorderEffect(x,y)
{
		let r1=0;
		let r2=50;
		let randvertex=rand_int(0,5);
		let VertexNum=16;
		let Radius=[r1,r2];
		let obj = Obj_Create(OBJ_EFFECT);
		ObjEffect_SetTexture(obj,imgBorderLine);
		ObjEffect_SetPrimitiveType(obj, PRIMITIVE_TRIANGLESTRIP);
		ObjEffect_SetRenderState(obj, ADD); 
		ObjEffect_CreateVertex(obj,VertexNum);
		ascent(let i in 0+randvertex..VertexNum+randvertex)
		{
			ObjEffect_SetVertexXY(obj, i-randvertex, Radius[i%2]*cos(360/(VertexNum-2)*i), Radius[i%2]*sin(360/(VertexNum-2)*i));
		}
		ascent(let i in 0+randvertex..VertexNum+randvertex)
		{	
			ObjEffect_SetVertexUV(obj, i-randvertex,  256/(VertexNum)*i,  16*(i%2));
		}


		ObjEffect_SetLayer(obj,3);

		let Scale=1;
		let Zangle=0;
		ObjEffect_SetScale(obj,Scale,Scale);
		Obj_SetPosition(obj,x,y);
		let Alpha=100;
		let angle=0;

		let StandardX=GetCenterX;
		let StandardY=GetCenterY+32;

		let Xangle=rand(0,360);
		let Yangle=rand(0,360);
		let Zangle=rand(0,360);

		ObjEffect_SetAngle(obj,Xangle*0+60,Yangle*0,Zangle);

		Obj_SetSpeed(obj,12);
		Obj_SetAngle(obj,270);

		loop(60)
		{
			if(r1<100)
			{
			r1+=10;
			r2+=10;
			Radius=[r1,r2];
			}
		Obj_SetX(obj,GetPlayerX);
		ascent(let i in 0..VertexNum)
		{
			ObjEffect_SetVertexXY(obj, i, Radius[i%2]*cos(360/(VertexNum-2)*i+angle), Radius[i%2]*sin(360/(VertexNum-2)*i+angle));
		}
		ascent(let i in 0..VertexNum)
		{			
			ObjEffect_SetVertexColor(obj, i,Alpha,255,255*(i%3),0);
		}
		ObjEffect_SetScale(obj,Scale,Scale);
		angle+=2;
		//Alpha-=10;
		
		//Scale+=0.01;
		yield;
		if(EndFrag){break;}
		}
		if(EndFrag)
		{
			loop(15)
			{
			r1-=100/15;
			r2-=100/15;
			Radius=[r1,r2];
		Obj_SetX(obj,GetPlayerX);
		ascent(let i in 0..VertexNum)
		{
			ObjEffect_SetVertexXY(obj, i, Radius[i%2]*cos(360/(VertexNum-2)*i+angle), Radius[i%2]*sin(360/(VertexNum-2)*i+angle));
		}
		ascent(let i in 0..VertexNum)
		{			
			ObjEffect_SetVertexColor(obj, i,Alpha,255,255*(i%3),0);
		}
		ObjEffect_SetScale(obj,Scale,Scale);
		angle+=2;
		//Alpha-=10;
		
		//Scale+=0.01;
		yield;
			}
		}
		Obj_Delete(obj);
}

task BorderEffect2(x,y)
{
		let r1=-25;
		let r2=25;
		let randvertex=rand_int(0,5);
		let VertexNum=16;
		let Radius=[r1,r2];
		let obj = Obj_Create(OBJ_EFFECT);
		ObjEffect_SetTexture(obj,imgBorderLine);
		ObjEffect_SetPrimitiveType(obj, PRIMITIVE_TRIANGLESTRIP);
		ObjEffect_SetRenderState(obj, ADD); 
		ObjEffect_CreateVertex(obj,VertexNum);
		ascent(let i in 0+randvertex..VertexNum+randvertex)
		{
			ObjEffect_SetVertexXY(obj, i-randvertex, Radius[i%2]*cos(360/(VertexNum-2)*i), Radius[i%2]*sin(360/(VertexNum-2)*i));
		}
		ascent(let i in 0+randvertex..VertexNum+randvertex)
		{	
			ObjEffect_SetVertexUV(obj, i-randvertex,  256/(VertexNum)*i,  16*(i%2));
		}


		ObjEffect_SetLayer(obj,3);

		let Scale=0;
		let Zangle=0;
		ObjEffect_SetScale(obj,Scale,Scale);
		Obj_SetPosition(obj,x,y);
		let Alpha=200;
		let angle=0;

		let StandardX=GetCenterX;
		let StandardY=GetCenterY+32;

		let Xangle=rand(0,360);
		let Yangle=rand(0,360);
		let Zangle=rand(0,360);

		ObjEffect_SetAngle(obj,Xangle*0,Yangle*0,Zangle);


		loop(20)
		{
			r1+=5;
			r2+=5;
			Radius=[r1,r2];
		ascent(let i in 0..VertexNum)
		{
			ObjEffect_SetVertexXY(obj, i, Radius[i%2]*cos(360/(VertexNum-2)*i+angle), Radius[i%2]*sin(360/(VertexNum-2)*i+angle));
		}
		ascent(let i in 0..VertexNum)
		{			
			ObjEffect_SetVertexColor(obj, i,Alpha,255,255*(i%3),0);
		}
		ObjEffect_SetScale(obj,Scale,Scale);
		angle+=2;
		Alpha-=10;
		//Scale+=0.1;
		yield;
		}
		Obj_Delete(obj);
}

}

script_spell MasterSpark //u}X^[Xp[NvXNvg
{
	let csd = GetCurrentScriptDirectory();
	let imgNebura = GetCurrentScriptDirectory~"img\nebura.png";
let imgMarisaShot = GetCurrentScriptDirectory~"img\Marisa_shots.png";
	let imgBorderLine = GetCurrentScriptDirectory~"img\SampleEC01a.png";
let SE=["se\seBomb_ReimuB.wav"];
let BombX;
let BombY;
let BMove=120;
    @Initialize {
	BombX=GetCenterX;
	BombY=GetCenterY;

        SetPlayerInvincibility(60);
	TMain;
    }

    @Finalize {
    }

    @MainLoop {
	if(GetCommonDataEx("Hi_Marisa","PlayerMiss")){End;}
        yield;
    }

   task TMain {
//	PlaySE(SE[0]);
	Star;
        loop(330){yield;}
        End;
    }

task Star
{
let t=rand_int(0,7);
ascent(i in 0..7)
{
	StarEfect(9+(t+i)%7,i*60);
}

}

task StarEfect(graphic,angle)
{
		function XYR{return(rand(0,0));}
		let R=255;;let G=255;let B=255;
		if(graphic==9){R=255;G=0+50;B=0+50;}
		if(graphic==10){R=255;G=100+50;B=0+50;}
		if(graphic==11){R=255;G=255;B=0+50;}
		if(graphic==12){R=0+50;G=255;B=0+50;}
		if(graphic==13){R=0+50;G=255;B=255;}
		if(graphic==14){R=0+50;G=0+50;B=255;}
		if(graphic==15){R=160+50;G=32+50;B=240;}

		let Xangle=rand(0,360);
		let Yangle=rand(0,360);
		let Zangle=rand(0,360);

		let XanglePlus=rand(-10,10);
		let YanglePlus=rand(-10,10);
		let ZanglePlus=rand(-10,10);

		let Scale=0.1;

  		let obj = Obj_Create(OBJ_SPELL);
		Obj_SetPosition(obj,GetPlayerX,GetPlayerY);
		ObjEffect_SetTexture(obj, csd~"img\Spark.png");
		ObjEffect_SetPrimitiveType(obj, PRIMITIVE_TRIANGLEFAN);
		ObjEffect_SetRenderState(obj, ADD);
		ObjEffect_CreateVertex(obj, 4);
		ObjEffect_SetVertexXY(obj, 0, -128+XYR, -512+XYR);
		ObjEffect_SetVertexXY(obj, 1,  128+XYR, -512+XYR);
		ObjEffect_SetVertexXY(obj, 2,  128+XYR, 0+XYR);
		ObjEffect_SetVertexXY(obj, 3, -128+XYR,  0+XYR);
		
let UVR=(rand_int(0,1)*2-1)+256;
		ObjEffect_SetVertexUV(obj, 0,  0+UVR,  0);
		ObjEffect_SetVertexUV(obj, 1,  256+UVR, 0);
		ObjEffect_SetVertexUV(obj, 2, 256+UVR,  512);
		ObjEffect_SetVertexUV(obj, 3, 0+UVR, 512);

		let Alpha=0;
		ascent(let i in 0..4)
		{
		ObjEffect_SetVertexColor(obj,i,Alpha,R,G,B);
		}

		let speed=2;
	//	let angle=rand(260,280);
		Obj_SetSpeed(obj,speed);
	//	Obj_SetAngle(obj,angle);

		let ShadowCount=0;
		let scx=0;
		let scy=1.0;
		let wide=0;
		let wideangle=0;
let time=0;
if(graphic==16){time=300;}
		loop(300)
		{
		if(Alpha<50){Alpha+=10;}
		ascent(let i in 0..4)
		{
		ObjEffect_SetVertexColor(obj,i,Alpha,R,G,B);
		}
			ObjEffect_SetAngle(obj,0,Yangle,cos(angle));
			Yangle=rand(-60,60);
			ObjSpell_SetIntersecrionLine(obj,GetPlayerX,GetClipMinY,GetPlayerX,GetPlayerY,64*scx,1.2,true);
			if(scx<1){scx+=0.1;}
			ObjEffect_SetScale(obj,scx,scy);
			Obj_SetPosition(obj,GetPlayerX,GetPlayerY+40);
			yield;
			angle+=6;
		}
		loop(15)
		{
		ascent(let i in 0..4)
		{
		ObjEffect_SetVertexColor(obj,i,Alpha,R,G,B);
		}
		Alpha-=50/15;
			ObjSpell_SetIntersecrionLine(obj,GetPlayerX,GetClipMinY,GetPlayerX,GetPlayerY,64*scx,1.2,true);
			if(scx>0){scx-=0.1;}
			ObjEffect_SetScale(obj,scx,scy);
			Obj_SetPosition(obj,GetPlayerX,GetPlayerY+40);
			yield;
		}
Obj_Delete(obj);
}

}

script_spell GravityBeat //uOreBr[gvXNvg
{
	let imgNebura = GetCurrentScriptDirectory~"img\nebura.png";
let imgMarisaShot = GetCurrentScriptDirectory~"img\Marisa_shots.png";
	let imgBorderLine = GetCurrentScriptDirectory~"img\SampleEC01a.png";
let SE=["se\seBomb_ReimuB.wav"];
let BombX;
let BombY;
let BMove=120;
    @Initialize {
	BombX=GetCenterX;
	BombY=GetCenterY;

      //  SetPlayerInvincibility(150);
	TMain;
    }

    @Finalize {
    }

    @MainLoop {
        yield;
    }

   task TMain {
//	PlaySE(SE[0]);
	StartStar;
	loop(75){yield;}
	EndStar;
        loop(180){yield;}
        End;
    }

task EndStar
{	
	let enemyX=GetEnemyInfo(EnumEnemyGetID(EnumEnemyBegin),ENEMY_X);
	let enemyY=GetEnemyInfo(EnumEnemyGetID(EnumEnemyBegin),ENEMY_Y);
	ascent(i in 0..12)
	{
	EndStarEfect(enemyX,enemyY,rand_int(9,15),i*30,0);
	EndStarEfect(enemyX,enemyY,rand_int(9,15),i*30+15,1);
	}
}

task EndStarEfect(ex,ey,graphic,angle,type)
{
		let R;let G;let B;
		if(graphic==9){R=255;G=0;B=0;}
		if(graphic==10){R=255;G=100;B=0;}
		if(graphic==11){R=255;G=255;B=0;}
		if(graphic==12){R=0;G=255;B=0;}
		if(graphic==13){R=0;G=255;B=255;}
		if(graphic==14){R=0;G=0;B=255;}
		if(graphic==15){R=160;G=32;B=240;}

		let Xangle=rand(0,360);
		let Yangle=rand(0,360);
		let Zangle=rand(0,360);

		let XanglePlus=rand(-10,10);
		let YanglePlus=rand(-10,10);
		let ZanglePlus=rand(-10,10)*0+5;

		let Scale=0.5;
		if(type==1){Scale=0.25;}
		let Radius=600;
  		let obj = Obj_Create(OBJ_SPELL);
		Obj_SetPosition(obj,ex+Radius*cos(angle),ey+Radius*sin(angle));
		ObjEffect_SetTexture(obj, imgMarisaShot);
		ObjEffect_SetPrimitiveType(obj, PRIMITIVE_TRIANGLEFAN);
		ObjEffect_SetRenderState(obj, ADD);
		ObjEffect_CreateVertex(obj, 4);
		ObjEffect_SetVertexXY(obj, 0, -64, -64);
		ObjEffect_SetVertexXY(obj, 1,  64, -64);
		ObjEffect_SetVertexXY(obj, 2,  64, 64);
		ObjEffect_SetVertexXY(obj, 3, -64,  64);
		
		ObjEffect_SetVertexUV(obj, 0,  0,  384);
		ObjEffect_SetVertexUV(obj, 1,  128, 384);
		ObjEffect_SetVertexUV(obj, 2, 128,  512);
		ObjEffect_SetVertexUV(obj, 3, 0, 512);
		
		let Alpha=200;
		ascent(let i in 0..4)
		{
		ObjEffect_SetVertexColor(obj,i,Alpha,R,G,B);
		}

		let speed=20;
		//let angle=rand(250,290);
		Obj_SetSpeed(obj,speed);
		Obj_SetAngle(obj,angle+180);

		let ShadowCount=0;
		loop(30)
		{
			if(GetCommonDataDefault("LightMode_BombEffect",0)==0)
			{
			StarShadowEfect(Obj_GetX(obj),Obj_GetY(obj),speed,angle,Scale,Xangle*0,Yangle*0,Zangle,R,G,B);
			}
			ObjEffect_SetScale(obj,Scale,Scale);
			ObjEffect_SetAngle(obj,Xangle*0,Yangle*0,Zangle);
			Xangle+=XanglePlus;
			Yangle+=YanglePlus;
			Zangle+=ZanglePlus;
			//Scale+=0.01;
			ShadowCount++;
			yield;
		}
		speed=1.6;
		if(type==1){speed=2.0;}
		Obj_SetSpeed(obj,speed);

		loop(60)
		{
			ObjSpell_SetIntersecrionCircle(obj,Obj_GetX(obj),Obj_GetY(obj),64*Scale,4*Scale,true);
			Obj_SetSpeed(obj,speed);
			speed-=1.5/60;
			if(GetCommonDataDefault("LightMode_BombEffect",0)==0)
			{
			StarShadowEfect(Obj_GetX(obj),Obj_GetY(obj),speed,angle,Scale,Xangle*0,Yangle*0,Zangle,R,G,B);
			}
			ObjEffect_SetScale(obj,Scale,Scale);
			ObjEffect_SetAngle(obj,Xangle*0,Yangle*0,Zangle);
			Xangle+=XanglePlus;
			Yangle+=YanglePlus;
			Zangle+=ZanglePlus;
			//Scale+=0.01;
			ShadowCount++;
			yield;
		}
		loop(60)
		{
			ObjSpell_SetIntersecrionCircle(obj,Obj_GetX(obj),Obj_GetY(obj),64*Scale,3.5*Scale,true);
			if(GetCommonDataDefault("LightMode_BombEffect",0)==0)
			{
			EndStarShadowEfect(Obj_GetX(obj),Obj_GetY(obj),speed,angle,Scale,Xangle*0,Yangle*0,Zangle,R,G,B,Alpha);
			}
			ObjEffect_SetScale(obj,Scale,Scale);
			ObjEffect_SetAngle(obj,Xangle*0,Yangle*0,Zangle);
			ascent(let i in 0..4)
			{
			ObjEffect_SetVertexColor(obj,i,Alpha,R,G,B);
			}
			Alpha-=200/60;
			Xangle+=XanglePlus;
			Yangle+=YanglePlus;
			Zangle+=ZanglePlus;
			//Scale+=0.01;
			ShadowCount++;
			yield;
		}
		//Obj_Delete(obj);
}

task StartStar
{
	ascent(i in 0..12)
	{
	StartStarEfect(rand_int(9,15),i*30);
	}
}

task StartStarEfect(graphic,angle)
{
		let R;let G;let B;
		if(graphic==9){R=255;G=0;B=0;}
		if(graphic==10){R=255;G=100;B=0;}
		if(graphic==11){R=255;G=255;B=0;}
		if(graphic==12){R=0;G=255;B=0;}
		if(graphic==13){R=0;G=255;B=255;}
		if(graphic==14){R=0;G=0;B=255;}
		if(graphic==15){R=160;G=32;B=240;}

		let Xangle=rand(0,360);
		let Yangle=rand(0,360);
		let Zangle=rand(0,360);

		let XanglePlus=rand(-10,10);
		let YanglePlus=rand(-10,10);
		let ZanglePlus=rand(-10,10);

		let Scale=0.5;

  		let obj = Obj_Create(OBJ_SPELL);
		Obj_SetPosition(obj,GetPlayerX,GetPlayerY);
		ObjEffect_SetTexture(obj, imgMarisaShot);
		ObjEffect_SetPrimitiveType(obj, PRIMITIVE_TRIANGLEFAN);
		ObjEffect_SetRenderState(obj, ADD);
		ObjEffect_CreateVertex(obj, 4);
		ObjEffect_SetVertexXY(obj, 0, -64, -64);
		ObjEffect_SetVertexXY(obj, 1,  64, -64);
		ObjEffect_SetVertexXY(obj, 2,  64, 64);
		ObjEffect_SetVertexXY(obj, 3, -64,  64);
		
		ObjEffect_SetVertexUV(obj, 0,  0,  384);
		ObjEffect_SetVertexUV(obj, 1,  128, 384);
		ObjEffect_SetVertexUV(obj, 2, 128,  512);
		ObjEffect_SetVertexUV(obj, 3, 0, 512);

		ascent(let i in 0..4)
		{
		ObjEffect_SetVertexColor(obj,i,200,R,G,B);
		}

		let speed=rand(10,15);
		//let angle=rand(250,290);
		Obj_SetSpeed(obj,speed);
		Obj_SetAngle(obj,angle);

		let ShadowCount=0;
		while(!Obj_BeDeleted(obj))
		{
			if(ShadowCount%3==0 && GetCommonDataDefault("LightMode_BombEffect",0)==0)
			{
			StarShadowEfect(Obj_GetX(obj),Obj_GetY(obj),speed,angle,Scale,Xangle*0,Yangle*0,Zangle,R,G,B);
			}
			//ObjSpell_SetIntersecrionCircle(obj,Obj_GetX(obj),Obj_GetY(obj),64*Scale,0.5,true);
			ObjEffect_SetScale(obj,Scale,Scale);
			ObjEffect_SetAngle(obj,Xangle*0,Yangle*0,Zangle);
			Xangle+=XanglePlus;
			Yangle+=YanglePlus;
			Zangle+=ZanglePlus;
			//Scale+=0.01;
			ShadowCount++;
			yield;
		}
}


task StarShadowEfect(X,Y,speed,angle,Scale,Xangle,Yangle,Zangle,R,G,B)
{

  		let obj = Obj_Create(OBJ_EFFECT);
		Obj_SetPosition(obj,X,Y);
		ObjEffect_SetTexture(obj, imgMarisaShot);
		ObjEffect_SetPrimitiveType(obj, PRIMITIVE_TRIANGLEFAN);
		ObjEffect_SetRenderState(obj, ADD);
		ObjEffect_CreateVertex(obj, 4);
		ObjEffect_SetVertexXY(obj, 0, -64, -64);
		ObjEffect_SetVertexXY(obj, 1,  64, -64);
		ObjEffect_SetVertexXY(obj, 2,  64, 64);
		ObjEffect_SetVertexXY(obj, 3, -64,  64);
		
		ObjEffect_SetVertexUV(obj, 0,  0,  384);
		ObjEffect_SetVertexUV(obj, 1,  128, 384);
		ObjEffect_SetVertexUV(obj, 2, 128,  512);
		ObjEffect_SetVertexUV(obj, 3, 0, 512);

		let Alpha=100;
		ascent(let i in 0..4)
		{
		ObjEffect_SetVertexColor(obj,i,Alpha,R,G,B);
		}

		ObjEffect_SetAngle(obj,Xangle,Yangle,Zangle);

		loop(3)
		{
			ObjEffect_SetScale(obj,Scale,Scale);
			ascent(let i in 0..4)
			{
				ObjEffect_SetVertexColor(obj,i,Alpha,R,G,B);
			}
			Scale+=0.05;
			Alpha-=30;
			yield;
		}
		Obj_Delete(obj);
}

task EndStarShadowEfect(X,Y,speed,angle,Scale,Xangle,Yangle,Zangle,R,G,B,Alpha)
{

  		let obj = Obj_Create(OBJ_EFFECT);
		Obj_SetPosition(obj,X,Y);
		ObjEffect_SetTexture(obj, imgMarisaShot);
		ObjEffect_SetPrimitiveType(obj, PRIMITIVE_TRIANGLEFAN);
		ObjEffect_SetRenderState(obj, ADD);
		ObjEffect_CreateVertex(obj, 4);
		ObjEffect_SetVertexXY(obj, 0, -64, -64);
		ObjEffect_SetVertexXY(obj, 1,  64, -64);
		ObjEffect_SetVertexXY(obj, 2,  64, 64);
		ObjEffect_SetVertexXY(obj, 3, -64,  64);
		
		ObjEffect_SetVertexUV(obj, 0,  0,  384);
		ObjEffect_SetVertexUV(obj, 1,  128, 384);
		ObjEffect_SetVertexUV(obj, 2, 128,  512);
		ObjEffect_SetVertexUV(obj, 3, 0, 512);

		let Alphamax=Alpha;
		ascent(let i in 0..4)
		{
		ObjEffect_SetVertexColor(obj,i,Alpha,R,G,B);
		}

		ObjEffect_SetAngle(obj,Xangle,Yangle,Zangle);

		loop(3)
		{
			ObjEffect_SetScale(obj,Scale,Scale);
			ascent(let i in 0..4)
			{
				ObjEffect_SetVertexColor(obj,i,Alpha,R,G,B);
			}
			Scale+=0.05;
			Alpha-=Alphamax/3;
			yield;
		}
		Obj_Delete(obj);
}


}


script_spell LuminousStrike //u~lXXgCNvXNvg
{
	let imgNebura = GetCurrentScriptDirectory~"img\nebura.png";
let imgMarisaShot = GetCurrentScriptDirectory~"img\Marisa_shots.png";
	let imgBorderLine = GetCurrentScriptDirectory~"img\SampleEC01a.png";
let SE=["se\seBomb_ReimuB.wav"];
let BombX;
let BombY;
let BMove=120;
    @Initialize {
	BombX=GetCenterX;
	BombY=GetCenterY;

      //  SetPlayerInvincibility(0);
	TMain;
    }

    @Finalize {
    }

    @MainLoop {
        yield;
    }

   task TMain {
//	PlaySE(SE[0]);
	Star;
        loop(120){yield;}
        End;
    }

task Star
{
	StarEfect(11);
}

task StarEfect(graphic)
{
		let R;let G;let B;
		if(graphic==9){R=255;G=0;B=0;}
		if(graphic==10){R=255;G=100;B=0;}
		if(graphic==11){R=255;G=255;B=0;}
		if(graphic==12){R=0;G=255;B=0;}
		if(graphic==13){R=0;G=255;B=255;}
		if(graphic==14){R=0;G=0;B=255;}
		if(graphic==15){R=160;G=32;B=240;}

		let Xangle=rand(0,360);
		let Yangle=rand(0,360);
		let Zangle=rand(0,360);

		let XanglePlus=rand(-10,10);
		let YanglePlus=rand(-10,10);
		let ZanglePlus=rand(5,10)*(rand_int(0,1)*2-1);

		let Scale=1.2;

  		let obj = Obj_Create(OBJ_SPELL);
		Obj_SetPosition(obj,GetPlayerX,GetPlayerY);
		ObjEffect_SetTexture(obj, imgMarisaShot);
		ObjEffect_SetPrimitiveType(obj, PRIMITIVE_TRIANGLEFAN);
		ObjEffect_SetRenderState(obj, ADD);
		ObjEffect_CreateVertex(obj, 4);
		ObjEffect_SetVertexXY(obj, 0, -64, -64);
		ObjEffect_SetVertexXY(obj, 1,  64, -64);
		ObjEffect_SetVertexXY(obj, 2,  64, 64);
		ObjEffect_SetVertexXY(obj, 3, -64,  64);
		
		ObjEffect_SetVertexUV(obj, 0,  0,  384);
		ObjEffect_SetVertexUV(obj, 1,  128, 384);
		ObjEffect_SetVertexUV(obj, 2, 128,  512);
		ObjEffect_SetVertexUV(obj, 3, 0, 512);

		ascent(let i in 0..4)
		{
		ObjEffect_SetVertexColor(obj,i,200,R,G,B);
		}

		let speed=9;
		let angle=270;
		Obj_SetSpeed(obj,speed);
		Obj_SetAngle(obj,angle);

		let ShadowCount=0;
		while(!Obj_BeDeleted(obj))
		{
			if(GetCommonDataDefault("LightMode_BombEffect",0)==0)
			{
			BorderEffect(Obj_GetX(obj),Obj_GetY(obj)-30);
			StarShadowEfect(Obj_GetX(obj),Obj_GetY(obj),speed,angle,Scale,Xangle*0,Yangle*0,Zangle,R,G,B);
			}
			ObjSpell_SetIntersecrionCircle(obj,Obj_GetX(obj),Obj_GetY(obj),64*Scale,70,true);
			ObjEffect_SetScale(obj,Scale,Scale);
			ObjEffect_SetAngle(obj,Xangle*0,Yangle*0,Zangle);
			Xangle+=XanglePlus;
			Yangle+=YanglePlus;
			Zangle+=ZanglePlus;
		//	Scale+=0.01;
			ShadowCount++;
			yield;
		}
}


task StarShadowEfect(X,Y,speed,angle,Scale,Xangle,Yangle,Zangle,R,G,B)
{

  		let obj = Obj_Create(OBJ_EFFECT);
		Obj_SetPosition(obj,X,Y);
		ObjEffect_SetTexture(obj, imgMarisaShot);
		ObjEffect_SetPrimitiveType(obj, PRIMITIVE_TRIANGLEFAN);
		ObjEffect_SetRenderState(obj, ADD);
		ObjEffect_CreateVertex(obj, 4);
		ObjEffect_SetVertexXY(obj, 0, -64, -64);
		ObjEffect_SetVertexXY(obj, 1,  64, -64);
		ObjEffect_SetVertexXY(obj, 2,  64, 64);
		ObjEffect_SetVertexXY(obj, 3, -64,  64);
		
		ObjEffect_SetVertexUV(obj, 0,  0,  384);
		ObjEffect_SetVertexUV(obj, 1,  128, 384);
		ObjEffect_SetVertexUV(obj, 2, 128,  512);
		ObjEffect_SetVertexUV(obj, 3, 0, 512);

		let Alpha=100;
		ascent(let i in 0..4)
		{
		ObjEffect_SetVertexColor(obj,i,Alpha,R,G,B);
		}

		ObjEffect_SetAngle(obj,Xangle,Yangle,Zangle);

		loop(3)
		{
			ObjEffect_SetScale(obj,Scale,Scale);
			ascent(let i in 0..4)
			{
				ObjEffect_SetVertexColor(obj,i,Alpha,R,G,B);
			}
			Scale+=0.05;
			Alpha-=20;
			yield;
		}
		Obj_Delete(obj);
}

task BorderEffect(x,y)
{
		let r1=-25;
		let r2=25;
		let randvertex=rand_int(0,5);
		let VertexNum=16;
		let Radius=[r1,r2];
		let obj = Obj_Create(OBJ_EFFECT);
		ObjEffect_SetTexture(obj,imgBorderLine);
		ObjEffect_SetPrimitiveType(obj, PRIMITIVE_TRIANGLESTRIP);
		ObjEffect_SetRenderState(obj, ADD); 
		ObjEffect_CreateVertex(obj,VertexNum);
		ascent(let i in 0+randvertex..VertexNum+randvertex)
		{
			ObjEffect_SetVertexXY(obj, i-randvertex, Radius[i%2]*cos(360/(VertexNum-2)*i), Radius[i%2]*sin(360/(VertexNum-2)*i));
		}
		ascent(let i in 0+randvertex..VertexNum+randvertex)
		{	
			ObjEffect_SetVertexUV(obj, i-randvertex,  256/(VertexNum)*i,  16*(i%2));
		}


		ObjEffect_SetLayer(obj,3);

		let Scale=0;
		let Zangle=0;
		ObjEffect_SetScale(obj,Scale,Scale);
		Obj_SetPosition(obj,x,y);
		let Alpha=200;
		let angle=0;

		let StandardX=GetCenterX;
		let StandardY=GetCenterY+32;

		let Xangle=rand(0,360);
		let Yangle=rand(0,360);
		let Zangle=rand(0,360);

		ObjEffect_SetAngle(obj,Xangle,Yangle,Zangle);


		loop(20)
		{
			r1+=5;
			r2+=5;
			Radius=[r1,r2];
		ascent(let i in 0..VertexNum)
		{
			ObjEffect_SetVertexXY(obj, i, Radius[i%2]*cos(360/(VertexNum-2)*i+angle), Radius[i%2]*sin(360/(VertexNum-2)*i+angle));
		}
		ascent(let i in 0..VertexNum)
		{			
			ObjEffect_SetVertexColor(obj, i,Alpha,255,255*(i%3),0);
		}
		ObjEffect_SetScale(obj,Scale,Scale);
		angle+=2;
		Alpha-=10;
		Scale+=0.1;
		yield;
		}
		Obj_Delete(obj);
}

}


script_spell MeteornikShower //ueIjbNV[vXNvg
{
	let imgNebura = GetCurrentScriptDirectory~"img\nebura.png";
let imgMarisaShot = GetCurrentScriptDirectory~"img\Marisa_shots.png";
	let imgBorderLine = GetCurrentScriptDirectory~"img\SampleEC01a.png";
let SE=["se\seBomb_ReimuB.wav"];
let BombX;
let BombY;
let BMove=120;
    @Initialize {
	BombX=GetCenterX;
	BombY=GetCenterY;

      //  SetPlayerInvincibility(150);
	TMain;
    }

    @Finalize {
    }

    @MainLoop {
	if(GetCommonDataEx("Hi_Marisa","PlayerMiss")){End;}
        yield;
    }

   task TMain {
//	PlaySE(SE[0]);
	Star;
        loop(180){yield;}
        End;
    }

task Star
{
let t=0;
loop(30)
{
	StarEfect(9+t%7);
	loop(3){yield;};
	t+=1;
}
}

task StarEfect(graphic)
{
		let R;let G;let B;
		if(graphic==9){R=255;G=0;B=0;}
		if(graphic==10){R=255;G=100;B=0;}
		if(graphic==11){R=255;G=255;B=0;}
		if(graphic==12){R=0;G=255;B=0;}
		if(graphic==13){R=0;G=255;B=255;}
		if(graphic==14){R=0;G=0;B=255;}
		if(graphic==15){R=160;G=32;B=240;}

		let Xangle=rand(0,360);
		let Yangle=rand(0,360);
		let Zangle=rand(0,360);

		let XanglePlus=rand(-10,10);
		let YanglePlus=rand(-10,10);
		let ZanglePlus=rand(-10,10);

		let Scale=0.1;

  		let obj = Obj_Create(OBJ_SPELL);
		Obj_SetPosition(obj,GetPlayerX,GetPlayerY);
		ObjEffect_SetTexture(obj, imgMarisaShot);
		ObjEffect_SetPrimitiveType(obj, PRIMITIVE_TRIANGLEFAN);
		ObjEffect_SetRenderState(obj, ADD);
		ObjEffect_CreateVertex(obj, 4);
		ObjEffect_SetVertexXY(obj, 0, -64, -64);
		ObjEffect_SetVertexXY(obj, 1,  64, -64);
		ObjEffect_SetVertexXY(obj, 2,  64, 64);
		ObjEffect_SetVertexXY(obj, 3, -64,  64);
		
		ObjEffect_SetVertexUV(obj, 0,  0,  384);
		ObjEffect_SetVertexUV(obj, 1,  128, 384);
		ObjEffect_SetVertexUV(obj, 2, 128,  512);
		ObjEffect_SetVertexUV(obj, 3, 0, 512);

		ascent(let i in 0..4)
		{
		ObjEffect_SetVertexColor(obj,i,200,R,G,B);
		}

		let speed=rand(6,10);
		let angle=rand(250,290);
		Obj_SetSpeed(obj,speed);
		Obj_SetAngle(obj,angle);

		let ShadowCount=0;
		while(!Obj_BeDeleted(obj))
		{
			if(ShadowCount%3==0 && GetCommonDataDefault("LightMode_BombEffect",0)==0)
			{
			StarShadowEfect(Obj_GetX(obj),Obj_GetY(obj),speed,angle,Scale,Xangle*0,Yangle*0,Zangle,R,G,B);
			}
			ObjSpell_SetIntersecrionCircle(obj,Obj_GetX(obj),Obj_GetY(obj),64*Scale,1.0,true);
			ObjEffect_SetScale(obj,Scale,Scale);
			ObjEffect_SetAngle(obj,Xangle*0,Yangle*0,Zangle);
			Xangle+=XanglePlus;
			Yangle+=YanglePlus;
			Zangle+=ZanglePlus;
			Scale+=0.01;
			ShadowCount++;
			yield;
		}
}


task StarShadowEfect(X,Y,speed,angle,Scale,Xangle,Yangle,Zangle,R,G,B)
{

  		let obj = Obj_Create(OBJ_EFFECT);
		Obj_SetPosition(obj,X,Y);
		ObjEffect_SetTexture(obj, imgMarisaShot);
		ObjEffect_SetPrimitiveType(obj, PRIMITIVE_TRIANGLEFAN);
		ObjEffect_SetRenderState(obj, ADD);
		ObjEffect_CreateVertex(obj, 4);
		ObjEffect_SetVertexXY(obj, 0, -64, -64);
		ObjEffect_SetVertexXY(obj, 1,  64, -64);
		ObjEffect_SetVertexXY(obj, 2,  64, 64);
		ObjEffect_SetVertexXY(obj, 3, -64,  64);
		
		ObjEffect_SetVertexUV(obj, 0,  0,  384);
		ObjEffect_SetVertexUV(obj, 1,  128, 384);
		ObjEffect_SetVertexUV(obj, 2, 128,  512);
		ObjEffect_SetVertexUV(obj, 3, 0, 512);

		let Alpha=100;
		ascent(let i in 0..4)
		{
		ObjEffect_SetVertexColor(obj,i,Alpha,R,G,B);
		}

		ObjEffect_SetAngle(obj,Xangle,Yangle,Zangle);

		loop(3)
		{
			ObjEffect_SetScale(obj,Scale,Scale);
			ascent(let i in 0..4)
			{
				ObjEffect_SetVertexColor(obj,i,Alpha,R,G,B);
			}
			Scale+=0.05;
			Alpha-=20;
			yield;
		}
		Obj_Delete(obj);
}

}

script_spell NeburaReverie //ulr@GvXNvg
{
	let imgNebura = GetCurrentScriptDirectory~"img\nebura.png";
let imgMarisaShot = GetCurrentScriptDirectory~"img\Marisa_shots.png";
	let imgBorderLine = GetCurrentScriptDirectory~"img\SampleEC01a.png";
let SE=["se\seBomb_ReimuB.wav"];
let BombX;
let BombY;
let BMove=120;
    @Initialize {
	BombX=GetCenterX;
	BombY=GetCenterY;

        SetPlayerInvincibility(300);
	TMain;
    }

    @Finalize {
    }

    @MainLoop {
	CollectItems;
        yield;
    }

   task TMain {
//	PlaySE(SE[0]);
	StartStar;
	loop(30){yield;}
	Border;
	Star;
	Nebura;
        loop(210){yield;}
        End;
    }

task StartStar
{
	let X=GetPlayerX;
	let Y=GetPlayerY;
	let i=0;
	let r=240;
	let angle=rand(0,360);
	loop(30)
	{
		ascent(let k in 0..7)
		{
			StartStarEffect(X-((X-BombX)/30)*i,Y-((Y-BombY)/30)*i,r,angle+360/7*k,9+k);
		}
	yield;
	i+=1;
	r-=240/30;
	angle+=4.5;
	}
}
task StartStarEffect(X,Y,Radius,Angle,graphic)
{
		let R;let G;let B;
		if(graphic==9){R=255;G=0;B=0;}
		if(graphic==10){R=255;G=100;B=0;}
		if(graphic==11){R=255;G=255;B=0;}
		if(graphic==12){R=0;G=255;B=0;}
		if(graphic==13){R=0;G=255;B=255;}
		if(graphic==14){R=0;G=0;B=255;}
		if(graphic==15){R=160;G=32;B=240;}

		let Scale=0.6;

  		let obj = Obj_Create(OBJ_EFFECT);
		Obj_SetPosition(obj,X+Radius*cos(Angle),Y+Radius*sin(Angle));
		ObjEffect_SetTexture(obj, imgMarisaShot);
		ObjEffect_SetPrimitiveType(obj, PRIMITIVE_TRIANGLEFAN);
		ObjEffect_SetRenderState(obj, ADD);
		ObjEffect_CreateVertex(obj, 4);
		ObjEffect_SetVertexXY(obj, 0, -64, -64);
		ObjEffect_SetVertexXY(obj, 1,  64, -64);
		ObjEffect_SetVertexXY(obj, 2,  64, 64);
		ObjEffect_SetVertexXY(obj, 3, -64,  64);
		
		ObjEffect_SetVertexUV(obj, 0,  0,  384);
		ObjEffect_SetVertexUV(obj, 1,  128, 384);
		ObjEffect_SetVertexUV(obj, 2, 128,  512);
		ObjEffect_SetVertexUV(obj, 3, 0, 512);

		ascent(let i in 0..4)
		{
		ObjEffect_SetVertexColor(obj,i,200,R,G,B);
		}
		if(GetCommonDataDefault("LightMode_BombEffect",0)==0)
		{
		loop(30)
		{
			ObjEffect_SetScale(obj,Scale,Scale);
			Scale-=0.02;
			yield;
		}
		}
		else
		{
		loop(10)
		{
			ObjEffect_SetScale(obj,Scale,Scale);
			Scale-=0.06;
			yield;
		}
		}
		Obj_Delete(obj);
}

task Nebura
{
		let r=0;
		let VertexNum=16;
		let UVX=rand(0,256);
		let UVY=rand(0,256);
  		let obj = Obj_Create(OBJ_SPELL);
		Obj_SetPosition(obj,BombX,BombY);
		ObjEffect_SetTexture(obj, imgNebura);
		ObjEffect_SetPrimitiveType(obj, PRIMITIVE_TRIANGLEFAN);
		ObjEffect_SetRenderState(obj, ADD);
		ObjEffect_CreateVertex(obj, VertexNum);
		ObjEffect_SetScale(obj,2,2);
		ObjEffect_SetLayer(obj,2);

		ascent(let i in 0..VertexNum)
		{
		ObjEffect_SetVertexColor(obj,i,100,196,196,255);
		}

		loop(180)
		{
		if(r<120)
		{
			r+=4;
		}
			ascent(let i in 0..VertexNum)
			{
			ObjEffect_SetVertexXY(obj, i,r*cos(360/VertexNum*i),r*sin(360/VertexNum*i));
			}
			ascent(let i in 0..VertexNum)
			{
			ObjEffect_SetVertexUV(obj, i,UVX+r*cos(360/VertexNum*i),UVY+r*sin(360/VertexNum*i));
			}
			ObjSpell_SetIntersecrionCircle(obj,BombX,BombY,r*2,10,true);
			UVX+=3;
			UVY+=3;
			yield;
		}

		loop(30)
		{
		if(r>0)
		{
			r-=4;
		}
			ascent(let i in 0..VertexNum)
			{
			ObjEffect_SetVertexXY(obj, i,r*cos(360/VertexNum*i),r*sin(360/VertexNum*i));
			}
			ascent(let i in 0..VertexNum)
			{
			ObjEffect_SetVertexUV(obj, i,UVX+r*cos(360/VertexNum*i),UVY+r*sin(360/VertexNum*i));
			}
			ObjSpell_SetIntersecrionCircle(obj,BombX,BombY,r*2,10,true);
			UVX+=3;
			UVY+=3;
			yield;
		}
		Obj_Delete(obj);
}

task Star
{
let t=0;
loop(90)
{
	StarEfect(9+t%7);
	loop(2){yield;};
	t+=1;
}
}

task StarEfect(graphic)
{
		let R;let G;let B;
		if(graphic==9){R=255;G=0;B=0;}
		if(graphic==10){R=255;G=100;B=0;}
		if(graphic==11){R=255;G=255;B=0;}
		if(graphic==12){R=0;G=255;B=0;}
		if(graphic==13){R=0;G=255;B=255;}
		if(graphic==14){R=0;G=0;B=255;}
		if(graphic==15){R=160;G=32;B=240;}

		let Xangle=rand(0,360);
		let Yangle=rand(0,360);
		let Zangle=rand(0,360);

		let XanglePlus=rand(-10,10);
		let YanglePlus=rand(-10,10);
		let ZanglePlus=rand(-10,10);

		let Scale=0.1;

  		let obj = Obj_Create(OBJ_EFFECT);
		Obj_SetPosition(obj,BombX,BombY);
		ObjEffect_SetTexture(obj, imgMarisaShot);
		ObjEffect_SetPrimitiveType(obj, PRIMITIVE_TRIANGLEFAN);
		ObjEffect_SetRenderState(obj, ADD);
		ObjEffect_CreateVertex(obj, 4);
		ObjEffect_SetVertexXY(obj, 0, -64, -64);
		ObjEffect_SetVertexXY(obj, 1,  64, -64);
		ObjEffect_SetVertexXY(obj, 2,  64, 64);
		ObjEffect_SetVertexXY(obj, 3, -64,  64);
		
		ObjEffect_SetVertexUV(obj, 0,  0,  384);
		ObjEffect_SetVertexUV(obj, 1,  128, 384);
		ObjEffect_SetVertexUV(obj, 2, 128,  512);
		ObjEffect_SetVertexUV(obj, 3, 0, 512);

		ascent(let i in 0..4)
		{
		ObjEffect_SetVertexColor(obj,i,200,R,G,B);
		}

		let speed=rand(6,10);
		let angle=rand(0,360);
		Obj_SetSpeed(obj,speed);
		Obj_SetAngle(obj,angle);

		let ShadowCount=0;
		while(!Obj_BeDeleted(obj))
		{
			if(ShadowCount%3==0 && GetCommonDataDefault("LightMode_BombEffect",0)==0)
			{
			StarShadowEfect(Obj_GetX(obj),Obj_GetY(obj),speed,angle,Scale,Xangle,Yangle,Zangle,R,G,B);
			}
			ObjEffect_SetScale(obj,Scale,Scale);
			ObjEffect_SetAngle(obj,Xangle,Yangle,Zangle);
			Xangle+=XanglePlus;
			Yangle+=YanglePlus;
			Zangle+=ZanglePlus;
			Scale+=0.05;
			ShadowCount++;
			yield;
		}
}


task StarShadowEfect(X,Y,speed,angle,Scale,Xangle,Yangle,Zangle,R,G,B)
{

  		let obj = Obj_Create(OBJ_EFFECT);
		Obj_SetPosition(obj,X,Y);
		ObjEffect_SetTexture(obj, imgMarisaShot);
		ObjEffect_SetPrimitiveType(obj, PRIMITIVE_TRIANGLEFAN);
		ObjEffect_SetRenderState(obj, ADD);
		ObjEffect_CreateVertex(obj, 4);
		ObjEffect_SetVertexXY(obj, 0, -64, -64);
		ObjEffect_SetVertexXY(obj, 1,  64, -64);
		ObjEffect_SetVertexXY(obj, 2,  64, 64);
		ObjEffect_SetVertexXY(obj, 3, -64,  64);
		
		ObjEffect_SetVertexUV(obj, 0,  0,  384);
		ObjEffect_SetVertexUV(obj, 1,  128, 384);
		ObjEffect_SetVertexUV(obj, 2, 128,  512);
		ObjEffect_SetVertexUV(obj, 3, 0, 512);

		let Alpha=100;
		ascent(let i in 0..4)
		{
		ObjEffect_SetVertexColor(obj,i,Alpha,R,G,B);
		}

		ObjEffect_SetAngle(obj,Xangle,Yangle,Zangle);

		loop(3)
		{
			ObjEffect_SetScale(obj,Scale,Scale);
			ascent(let i in 0..4)
			{
				ObjEffect_SetVertexColor(obj,i,Alpha,R,G,B);
			}
			Scale+=0.05;
			Alpha-=20;
			yield;
		}
		Obj_Delete(obj);
}

task Border
{
let r1=-25;
let r2=25;
let angle=0;
let Alpha=100;
	loop(60)
	{
		BorderEffect(r1,r2,angle,Alpha);
		if(r1<200)
		{
			r1+=24;
			r2+=24;
		}
		angle+=6;
		loop(3){yield;};
	}
	loop(10)
	{
		BorderEffect(r1,r2,angle,Alpha);
		r1-=24;
		r2-=24;
		angle+=6;
		Alpha-=100/60;
		loop(3){yield;};
	}
}

task BorderEffect(r1,r2,angle,Alpha)
{
		let randvertex=rand_int(0,5);
		let VertexNum=16;
		let Radius=[r1,r2];
		let obj = Obj_Create(OBJ_EFFECT);
		ObjEffect_SetTexture(obj,imgBorderLine);
		ObjEffect_SetPrimitiveType(obj, PRIMITIVE_TRIANGLESTRIP);
		ObjEffect_SetRenderState(obj, ADD); 
		ObjEffect_CreateVertex(obj,VertexNum);
		ascent(let i in 0+randvertex..VertexNum+randvertex)
		{
			ObjEffect_SetVertexXY(obj, i-randvertex, Radius[i%2]*cos(360/(VertexNum-2)*i), Radius[i%2]*sin(360/(VertexNum-2)*i));
		}
		ascent(let i in 0+randvertex..VertexNum+randvertex)
		{	
			ObjEffect_SetVertexUV(obj, i-randvertex,  256/(VertexNum)*i,  16*(i%2));
		}


		ObjEffect_SetLayer(obj,3);

		let Scale=1;
		let Zangle=0;
		ObjEffect_SetScale(obj,Scale,Scale);
		Obj_SetPosition(obj,BombX,BombY);

		loop(5)
		{
		if(r1<250)
		{
			r1+=10;
			r2+=10;
			Radius=[r1,r2];
		}
		ascent(let i in 0..VertexNum)
		{
			ObjEffect_SetVertexXY(obj, i, Radius[i%2]*cos(360/(VertexNum-2)*i+angle), Radius[i%2]*sin(360/(VertexNum-2)*i+angle));
		}
		ascent(let i in 0..VertexNum)
		{			
			ObjEffect_SetVertexColor(obj, i,Alpha,255,0,255*(i%3));
		}
		ObjEffect_SetScale(obj,Scale,Scale);
		angle+=2;
		Alpha-=20;
		Scale+=0.01;
		yield;
		}
		Obj_Delete(obj);
}

}