task OrrerysSun(SET_KEY)
{
	if(OnSpellCard==true){return;}
	if(IsPermitPlayerSpell==false){return;}
	if(OrreryNum>=OrreryNumMax){return;}
	let objManage = GetSpellManageObject();
	let ExRange=1;
	let ShotNum=101;
	let RadiusPlus=50;
	if(SpellPoint>=20*SpellReduce)
	{
		SpellPoint-=20*SpellReduce;
	}
	else
	{
		SpellPointLack;
		return;
	}
	Obj_PlaySE(GetCurrentScriptDirectory~"../se/se_maoudamashii_element_fire09.wav");
	OrreryBit(0);
	OrreryBit(90);
	OrreryBit(180);
	OrreryBit(270);

	ShotForbitTime(30);

	task OrreryBit(angle)
	{

	OrreryNum+=0.5;

	let Radius=0;
	let damage=Status_MagicPower*0.35;
	let Bdamage=Status_MagicPower*0.35;
	let obj = ObjShot_Create(OBJ_SHOT);
	ObjMove_SetX(obj,  GetPlayerX);//xWݒ
	ObjMove_SetY(obj,  GetPlayerY);//yWݒ;
//	ObjMove_SetSpeed(obj, speed);//xWݒ
//	ObjMove_SetAngle(obj, angle);//yWݒ;
	ObjShot_SetGraphic(obj, ShotNum);//摜ݒ
	ObjShot_SetDamage(obj, damage);//_[Wݒ
	ObjShot_SetPenetration(obj, 1000);//ђʗ͓͂Kɑ傫
	ObjShot_Regist(obj);
	ObjRender_SetColor(obj,255,128,128);
	ObjRender_SetAlpha(obj,255);
	ObjRender_SetScaleXYZ(obj,1.5,1.5,1.5);
	ObjShot_SetAutoDelete(obj,false);

	let S_count=0;
	loop(30)
	{
		if(S_count%5==0){damage=Bdamage;}
		else{damage=0;}
		ObjShot_SetDamage(obj, damage);
		ShotEffect(ObjMove_GetX(obj),ObjMove_GetY(obj));
		ObjMove_SetX(obj, GetPlayerX+Radius*cos(angle));//xWݒ
		ObjMove_SetY(obj, GetPlayerY+Radius*sin(angle));//yWݒ;
		Radius+=RadiusPlus/30;
		angle+=6;
		S_count+=1;
		yield;
	}
	loop(300)
	{
		if(S_count>=360){break;}
		if(S_count%5==0){damage=Bdamage;}
		else{damage=0;}
		ObjShot_SetDamage(obj, damage);
		ShotEffect(ObjMove_GetX(obj),ObjMove_GetY(obj));
		ObjMove_SetX(obj, GetPlayerX+Radius*cos(angle));//xWݒ
		ObjMove_SetY(obj, GetPlayerY+Radius*sin(angle));//yWݒ;
		angle+=6;
		S_count+=1;
		if(GetVirtualKeyState(SET_KEY) == KEY_PUSH)
		{
				BitShoot(GetPlayerX,GetPlayerY);
		}
		yield;
	}
	loop(30)
	{
		if(S_count%5==0){damage=Bdamage;}
		else{damage=0;}
		ObjShot_SetDamage(obj, damage);
		ShotEffect(ObjMove_GetX(obj),ObjMove_GetY(obj));
		ObjMove_SetX(obj, GetPlayerX+Radius*cos(angle));//xWݒ
		ObjMove_SetY(obj, GetPlayerY+Radius*sin(angle));//yWݒ;
		Radius-=RadiusPlus/30;
		angle+=6;
		S_count+=1;
		yield;
	}

	Obj_Delete(obj);
	OnSpellCard=false;
	Obj_Delete(objManage);
	OrreryNum-=0.5;

	function BitShoot(cx,cy)
	{
		let ShootAngle=CharaDirection*45-90;
		let ShootSpeed=3;
		loop(120)
		{
			let sr=Obj_GetValue(GetPlayerObjectID,"Move_Right");
			let sl=Obj_GetValue(GetPlayerObjectID,"Move_Left");
			let su=Obj_GetValue(GetPlayerObjectID,"Move_Up");
			let sd=Obj_GetValue(GetPlayerObjectID,"Move_Down");
			if(sr!=0)
			{
				cx-=sr;
			}
			if(sl!=0)
			{
				cx-=sl;
			}
			if(su!=0)
			{
				cy-=su;
			}
			if(sd!=0)
			{
				cy-=sd;
			}

			if(S_count%5==0){damage=Bdamage;}
			else{damage=0;}
			ObjShot_SetDamage(obj, damage);
			ShotEffect(ObjMove_GetX(obj),ObjMove_GetY(obj));
			ShootSpeed-=6/240;
			cx+=ShootSpeed*cos(ShootAngle);
			cy+=ShootSpeed*sin(ShootAngle);
			ObjMove_SetX(obj, cx+Radius*cos(angle));//xWݒ
			ObjMove_SetY(obj, cy+Radius*sin(angle));//yWݒ;
			angle+=6;
			S_count+=1;
			yield;
		}

		while(((GetPlayerY-cy)^2+(GetPlayerX-cx)^2)^0.5>=10)
		{
			let sr=Obj_GetValue(GetPlayerObjectID,"Move_Right");
			let sl=Obj_GetValue(GetPlayerObjectID,"Move_Left");
			let su=Obj_GetValue(GetPlayerObjectID,"Move_Up");
			let sd=Obj_GetValue(GetPlayerObjectID,"Move_Down");
			if(sr!=0)
			{
				cx-=sr;
			}
			if(sl!=0)
			{
				cx-=sl;
			}
			if(su!=0)
			{
				cy-=su;
			}
			if(sd!=0)
			{
				cy-=sd;
			}
			ShootAngle=atan2(GetPlayerY-cy,GetPlayerX-cx)+180;
			if(S_count%5==0){damage=Bdamage;}
			else{damage=0;}
			ObjShot_SetDamage(obj, damage);
			ShotEffect(ObjMove_GetX(obj),ObjMove_GetY(obj));
			ShootSpeed-=6/240;
			cx+=ShootSpeed*cos(ShootAngle);
			cy+=ShootSpeed*sin(ShootAngle);
			ObjMove_SetX(obj, cx+Radius*cos(angle));//xWݒ
			ObjMove_SetY(obj, cy+Radius*sin(angle));//yWݒ;
			angle+=6;
			S_count+=1;
			yield;
		}
	}

	task ShotEffect(x,y)
	{
		let imgWhite = GetCurrentScriptDirectory() ~ "../img/effects.png";
		let obje = ObjPrim_Create(OBJ_PRIMITIVE_2D);
		ObjPrim_SetTexture(obje, imgWhite);
		ObjPrim_SetPrimitiveType(obje, PRIMITIVE_TRIANGLEFAN);
		ObjPrim_SetVertexCount(obje, 4);
		ObjRender_SetBlendType(obje, BLEND_ADD_RGB);
		Obj_SetRenderPriorityI(obje,20);
		ObjRender_SetAngleZ(obje,0);

		ObjPrim_SetVertexPosition(obje, 0, -64, -64, 0);
		ObjPrim_SetVertexPosition(obje, 1, 64, -64, 0);
		ObjPrim_SetVertexPosition(obje, 2, 64, 64, 0);
		ObjPrim_SetVertexPosition(obje, 3,-64, 64, 0);

		ObjPrim_SetVertexUVT(obje, 0, 0, 0);
		ObjPrim_SetVertexUVT(obje, 1, 128, 0);
		ObjPrim_SetVertexUVT(obje, 2, 128, 128);
		ObjPrim_SetVertexUVT(obje, 3, 0, 128);

		let ox=GetPlayerX;
		let oy=GetPlayerY;
		let Speed=rand(2,10);
		let Angle=rand(0,360);

		let Scale=0.25*ExRange;

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

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

		ObjRender_SetPosition(obje,ox,oy,0);

		let Alpha=1;
		ObjRender_SetColor(obje,128,64,64*Alpha);

		ObjRender_SetPosition(obje,x,y,0);

		loop(30)
		{
			let sr=Obj_GetValue(GetPlayerObjectID,"Move_Right");
			let sl=Obj_GetValue(GetPlayerObjectID,"Move_Left");
			let su=Obj_GetValue(GetPlayerObjectID,"Move_Up");
			let sd=Obj_GetValue(GetPlayerObjectID,"Move_Down");
			if(sr!=0)
			{
				ObjRender_SetX(obje, ObjRender_GetX(obje)-sr);
			}
			if(sl!=0)
			{
				ObjRender_SetX(obje, ObjRender_GetX(obje)-sl);
			}
			if(su!=0)
			{
				ObjRender_SetY(obje, ObjRender_GetY(obje)-su);
			}
			if(sd!=0)
			{
				ObjRender_SetY(obje, ObjRender_GetY(obje)-sd);
			}
			ObjRender_SetAngleXYZ(obje,Xangle,Yangle,Zangle);
			ObjRender_SetScaleXYZ(obje,Scale,Scale,Scale);
			ObjRender_SetColor(obje,255*Alpha,64*Alpha,64*Alpha);
			Alpha-=1/30;
		//	Scale-=1/30;
			Xangle+=XanglePlus;
			Yangle+=YanglePlus;
			Zangle+=ZanglePlus;
			yield;
		}

		Obj_Delete(obje);
	
	}

	}


}