
//=======================================================================
//@JbgC̉o\֐WłB
//@̃t@Cinclude_functionŎ荞ނA
//@KvȕRsyĎgpĂB
//=======================================================================

//=======================================================================
//  摜ւ̃pX \Ⴄꍇ͗vύX
//-----------------------------------------------------------------------
let imgspelleffect = GetCurrentScriptDirectory~"../img/SpellEffect.png";
//=======================================================================

//-----------------------------------------------------------------------
//  LG\ [th06`th14]
//-----------------------------------------------------------------------
task Cutin01(type,X,Y,texture,rect01,rect02,rect03,rect04) {

	let cutin	= ObjPrim_Create(OBJ_PRIMITIVE_2D);
	let alpha	= 0;
	let scale	= 1;
	let move01	= 0;
	let move02	= 0;
	let move03	= 0;
	let move04	= 0;
	let rectX	= (rect01+rect03)/2.0;
	let rectY	= (rect02+rect04)/2.0;

	let layer	= 40;

        let cx = GetStgFrameWidth/2;
        let cy = GetStgFrameHeight/2;

	LoadTexture(texture);
	LoadTexture(imgspelleffect);

	/*****************************************************************
		type 0Fg
		type 1FdX@i鏴
		type 2F_^
		type 3Fna@@D@d푈@__@Pj
		type 4FGH 
		type 5F @
	*****************************************************************/

	ObjPrim_SetTexture(cutin,texture);
	ObjRender_SetBlendType(cutin,BLEND_ALPHA);
	ObjPrim_SetPrimitiveType(cutin,PRIMITIVE_TRIANGLESTRIP);
	ObjRender_SetScaleXYZ(cutin,scale,scale,1);
	Obj_SetRenderPriorityI(cutin,layer);
	ObjPrim_SetVertexCount(cutin,4);
	ObjPrim_SetVertexPosition(cutin,0,-(rectX-rect01),-(rectY-rect02),0);
	ObjPrim_SetVertexPosition(cutin,1,-(rectX-rect01), (rect04-rectY),0);
	ObjPrim_SetVertexPosition(cutin,2, (rect03-rectX),-(rectY-rect02),0);
	ObjPrim_SetVertexPosition(cutin,3, (rect03-rectX), (rect04-rectY),0);
	ObjPrim_SetVertexUVT(cutin,0, rect01, rect02);
	ObjPrim_SetVertexUVT(cutin,1, rect01, rect04);
	ObjPrim_SetVertexUVT(cutin,2, rect03, rect02);
	ObjPrim_SetVertexUVT(cutin,3, rect03, rect04);

	alternative(type)
	case(0) {
		loop(30) {
			alpha  += 255/30;
			move01 += 90/60;
			move02  = 200*sin(move01);

			ObjRender_SetPosition(cutin,cx+200-move02+X,cy+Y,0);
			ObjPrim_SetVertexColor(cutin,0,255,255,255);
			ObjPrim_SetVertexColor(cutin,1,255,255,255);
			ObjPrim_SetVertexColor(cutin,2,255,255,255);
			ObjPrim_SetVertexColor(cutin,3,255,255,255);
			ObjPrim_SetVertexAlpha(cutin,0,alpha);
			ObjPrim_SetVertexAlpha(cutin,1,alpha);
			ObjPrim_SetVertexAlpha(cutin,2,alpha);
			ObjPrim_SetVertexAlpha(cutin,3,alpha);
			yield;
		}
		loop(30) {
			move01 += 90/60;
			move02  = 200*sin(move01);

			ObjRender_SetPosition(cutin,cx+200-move02+X,cy+Y,0);
			yield;
		}
		loop(30) { yield; move01 = 0; }
		loop(60) {
			move01 += 90/60;
			alpha  -= 255/30;
			scale   = 1.0+2.0*sin(move01);

			ObjRender_SetScaleXYZ(cutin,scale,scale,1);
			ObjPrim_SetVertexColor(cutin,0,255,255,255);
			ObjPrim_SetVertexColor(cutin,1,255,255,255);
			ObjPrim_SetVertexColor(cutin,2,255,255,255);
			ObjPrim_SetVertexColor(cutin,3,255,255,255);
			ObjPrim_SetVertexAlpha(cutin,0,alpha);
			ObjPrim_SetVertexAlpha(cutin,1,alpha);
			ObjPrim_SetVertexAlpha(cutin,2,alpha);
			ObjPrim_SetVertexAlpha(cutin,3,alpha);
			yield;
		}
	}

	case(1) {
		loop(30) {
			alpha  += 255/30;
			move01 += 200/150;

			ObjRender_SetPosition(cutin,cx+X,cy-200+move01+Y,0);
			ObjPrim_SetVertexColor(cutin,0,255,255,255);
			ObjPrim_SetVertexColor(cutin,1,255,255,255);
			ObjPrim_SetVertexColor(cutin,2,255,255,255);
			ObjPrim_SetVertexColor(cutin,3,255,255,255);
			ObjPrim_SetVertexAlpha(cutin,0,alpha);
			ObjPrim_SetVertexAlpha(cutin,1,alpha);
			ObjPrim_SetVertexAlpha(cutin,2,alpha);
			ObjPrim_SetVertexAlpha(cutin,3,alpha);
			yield;
		}
		loop(60) {
			move01 += 200/150;

			ObjRender_SetPosition(cutin,cx+X,cy-200+move01+Y,0);
			yield;
		}
		loop(60) {
			alpha  -= 255/60;
			move01 += 200/150;

			ObjRender_SetPosition(cutin,cx+X,cy-200+move01+Y,0);
			ObjPrim_SetVertexColor(cutin,0,255,255,255);
			ObjPrim_SetVertexColor(cutin,1,255,255,255);
			ObjPrim_SetVertexColor(cutin,2,255,255,255);
			ObjPrim_SetVertexColor(cutin,3,255,255,255);
			ObjPrim_SetVertexAlpha(cutin,0,alpha);
			ObjPrim_SetVertexAlpha(cutin,1,alpha);
			ObjPrim_SetVertexAlpha(cutin,2,alpha);
			ObjPrim_SetVertexAlpha(cutin,3,alpha);
			yield;
		}
	}

	case(2) {
		move03 = -45;
		loop(60) {
			alpha  += 255/60;
			move01 += 90/60;
			move02  = 200*sin(move01);
			move03 -= 135/150;
			move04  = 200*sin(move03);

			ObjRender_SetPosition(cutin,cx+200-move02+X,cy-100-move04+Y,0);
			ObjPrim_SetVertexColor(cutin,0,255,255,255);
			ObjPrim_SetVertexColor(cutin,1,255,255,255);
			ObjPrim_SetVertexColor(cutin,2,255,255,255);
			ObjPrim_SetVertexColor(cutin,3,255,255,255);
			ObjPrim_SetVertexAlpha(cutin,0,alpha);
			ObjPrim_SetVertexAlpha(cutin,1,alpha);
			ObjPrim_SetVertexAlpha(cutin,2,alpha);
			ObjPrim_SetVertexAlpha(cutin,3,alpha);
			yield;
		}
		loop(60) {
			move03 -= 135/150;
			move04  = 200*sin(move03);

			ObjRender_SetPosition(cutin,cx+200-move02+X,cy-100-move04+Y,0);
			ObjPrim_SetVertexColor(cutin,0,255,255,255);
			ObjPrim_SetVertexColor(cutin,1,255,255,255);
			ObjPrim_SetVertexColor(cutin,2,255,255,255);
			ObjPrim_SetVertexColor(cutin,3,255,255,255);
			ObjPrim_SetVertexAlpha(cutin,0,alpha);
			ObjPrim_SetVertexAlpha(cutin,1,alpha);
			ObjPrim_SetVertexAlpha(cutin,2,alpha);
			ObjPrim_SetVertexAlpha(cutin,3,alpha);
			yield;
		}
		loop(60) {
			alpha  -= 255/60;
			move03 -= 135/150;
			move04  = 200*sin(move03);

			ObjRender_SetPosition(cutin,cx+200-move02+X,cy-100-move04+Y,0);
			ObjPrim_SetVertexColor(cutin,0,255,255,255);
			ObjPrim_SetVertexColor(cutin,1,255,255,255);
			ObjPrim_SetVertexColor(cutin,2,255,255,255);
			ObjPrim_SetVertexColor(cutin,3,255,255,255);
			ObjPrim_SetVertexAlpha(cutin,0,alpha);
			ObjPrim_SetVertexAlpha(cutin,1,alpha);
			ObjPrim_SetVertexAlpha(cutin,2,alpha);
			ObjPrim_SetVertexAlpha(cutin,3,alpha);
			yield;
		}
	}

	case(3) {
		loop(30) {
			alpha  += 255/30;
			move01 += 60/30;
			move02  = 200*sin(move01);

			ObjRender_SetPosition(cutin,cx+200-move02+X,cy-200+move02+Y,0);
			ObjPrim_SetVertexColor(cutin,0,255,255,255);
			ObjPrim_SetVertexColor(cutin,1,255,255,255);
			ObjPrim_SetVertexColor(cutin,2,255,255,255);
			ObjPrim_SetVertexColor(cutin,3,255,255,255);
			ObjPrim_SetVertexAlpha(cutin,0,alpha);
			ObjPrim_SetVertexAlpha(cutin,1,alpha);
			ObjPrim_SetVertexAlpha(cutin,2,alpha);
			ObjPrim_SetVertexAlpha(cutin,3,alpha);
			yield;
		}
		loop(90) {
			move01 += 30/90;
			move02  = 200*sin(move01);

			ObjRender_SetPosition(cutin,cx+200-move02+X,cy-200+move02+Y,0);
			ObjPrim_SetVertexColor(cutin,0,255,255,255);
			ObjPrim_SetVertexColor(cutin,1,255,255,255);
			ObjPrim_SetVertexColor(cutin,2,255,255,255);
			ObjPrim_SetVertexColor(cutin,3,255,255,255);
			ObjPrim_SetVertexAlpha(cutin,0,alpha);
			ObjPrim_SetVertexAlpha(cutin,1,alpha);
			ObjPrim_SetVertexAlpha(cutin,2,alpha);
			ObjPrim_SetVertexAlpha(cutin,3,alpha);
			yield;
		}
		loop(30) {
			alpha  -= 255/30;
			move02 += 10.0;

			ObjRender_SetPosition(cutin,cx+200-move02+X,cy-200+move02+Y,0);
			ObjPrim_SetVertexColor(cutin,0,255,255,255);
			ObjPrim_SetVertexColor(cutin,1,255,255,255);
			ObjPrim_SetVertexColor(cutin,2,255,255,255);
			ObjPrim_SetVertexColor(cutin,3,255,255,255);
			ObjPrim_SetVertexAlpha(cutin,0,alpha);
			ObjPrim_SetVertexAlpha(cutin,1,alpha);
			ObjPrim_SetVertexAlpha(cutin,2,alpha);
			ObjPrim_SetVertexAlpha(cutin,3,alpha);
			yield;
		}
	}

	case(4) {
		loop(30) {
			alpha  += 255/30;
			move01 += 60/30;
			move02  = 200*sin(move01);

			ObjRender_SetPosition(cutin,cx-200+move02+X,cy+Y,0);
			ObjPrim_SetVertexColor(cutin,0,255,255,255);
			ObjPrim_SetVertexColor(cutin,1,255,255,255);
			ObjPrim_SetVertexColor(cutin,2,255,255,255);
			ObjPrim_SetVertexColor(cutin,3,255,255,255);
			ObjPrim_SetVertexAlpha(cutin,0,alpha);
			ObjPrim_SetVertexAlpha(cutin,1,alpha);
			ObjPrim_SetVertexAlpha(cutin,2,alpha);
			ObjPrim_SetVertexAlpha(cutin,3,alpha);
			yield;
		}
		loop(90) {
			move01 += 30/90;
			move02  = 200*sin(move01);

			ObjRender_SetPosition(cutin,cx-200+move02+X,cy+Y,0);
			ObjPrim_SetVertexColor(cutin,0,255,255,255);
			ObjPrim_SetVertexColor(cutin,1,255,255,255);
			ObjPrim_SetVertexColor(cutin,2,255,255,255);
			ObjPrim_SetVertexColor(cutin,3,255,255,255);
			ObjPrim_SetVertexAlpha(cutin,0,alpha);
			ObjPrim_SetVertexAlpha(cutin,1,alpha);
			ObjPrim_SetVertexAlpha(cutin,2,alpha);
			ObjPrim_SetVertexAlpha(cutin,3,alpha);
			yield;
		}
		loop(30) {
			alpha  -= 255/30;
			move02 += 10.0;

			ObjRender_SetPosition(cutin,cx-200+move02+X,cy+Y,0);
			ObjPrim_SetVertexColor(cutin,0,255,255,255);
			ObjPrim_SetVertexColor(cutin,1,255,255,255);
			ObjPrim_SetVertexColor(cutin,2,255,255,255);
			ObjPrim_SetVertexColor(cutin,3,255,255,255);
			ObjPrim_SetVertexAlpha(cutin,0,alpha);
			ObjPrim_SetVertexAlpha(cutin,1,alpha);
			ObjPrim_SetVertexAlpha(cutin,2,alpha);
			ObjPrim_SetVertexAlpha(cutin,3,alpha);
			yield;
		}
	}

	case(5) {
		loop(30) {
			alpha  += 255/30;
			move01 += 60/30;
			move02  = 500*sin(move01);

			ObjRender_SetPosition(cutin,cx+X,cy+400-move02+Y,0);
			ObjPrim_SetVertexColor(cutin,0,255,255,255);
			ObjPrim_SetVertexColor(cutin,1,255,255,255);
			ObjPrim_SetVertexColor(cutin,2,255,255,255);
			ObjPrim_SetVertexColor(cutin,3,255,255,255);
			ObjPrim_SetVertexAlpha(cutin,0,alpha);
			ObjPrim_SetVertexAlpha(cutin,1,alpha);
			ObjPrim_SetVertexAlpha(cutin,2,alpha);
			ObjPrim_SetVertexAlpha(cutin,3,alpha);
			yield;
		}
		loop(90) {
			move01 += 30/90;
			move02  = 500*sin(move01);

			ObjRender_SetPosition(cutin,cx+X,cy+400-move02+Y,0);
			ObjPrim_SetVertexColor(cutin,0,255,255,255);
			ObjPrim_SetVertexColor(cutin,1,255,255,255);
			ObjPrim_SetVertexColor(cutin,2,255,255,255);
			ObjPrim_SetVertexColor(cutin,3,255,255,255);
			ObjPrim_SetVertexAlpha(cutin,0,alpha);
			ObjPrim_SetVertexAlpha(cutin,1,alpha);
			ObjPrim_SetVertexAlpha(cutin,2,alpha);
			ObjPrim_SetVertexAlpha(cutin,3,alpha);
			yield;
		}
		loop(60) {
			move03 += 90/60;
			alpha -= 255/60;
			scale -= 0.1*sin(-move03);

			ObjRender_SetScaleXYZ(cutin,scale,scale,1);
			ObjRender_SetPosition(cutin,cx+X,cy+400-move02+Y,0);
			ObjPrim_SetVertexColor(cutin,0,255,255,255);
			ObjPrim_SetVertexColor(cutin,1,255,255,255);
			ObjPrim_SetVertexColor(cutin,2,255,255,255);
			ObjPrim_SetVertexColor(cutin,3,255,255,255);
			ObjPrim_SetVertexAlpha(cutin,0,alpha);
			ObjPrim_SetVertexAlpha(cutin,1,alpha);
			ObjPrim_SetVertexAlpha(cutin,2,alpha);
			ObjPrim_SetVertexAlpha(cutin,3,alpha);
			yield;
		}
	}
	Obj_Delete(cutin);
}

//-----------------------------------------------------------------------
//  XyJ[h\ [th08`th14]
//-----------------------------------------------------------------------
task Cutin02(type,X,Y,texture,rect01,rect02,rect03,rect04) {

	let spn01	= ObjPrim_Create(OBJ_PRIMITIVE_2D);
	let spn02	= ObjPrim_Create(OBJ_PRIMITIVE_2D);
	let alpha	= 0;
	let scale	= 4;
	let move01	= 0;
	let move02	= 0;
	let rectX	= (rect01+rect03)/2.0;
	let rectY	= (rect02+rect04)/2.0;
	let plU		= 0;

	let layer	= 70;

        let cx = GetStgFrameWidth/2;
        let cy = GetStgFrameHeight/2;
        let enemy = GetEnemyBossObjectID[0];

	SpellTimeRing(enemy);
	SpellBackGround();

	LoadTexture(texture);
	LoadTexture(imgspelleffect);

        let seUSC = GetCurrentScriptDirectory ~ "../se/seUseSpellCard.wav";
        LoadSound(seUSC);
	PlaySE(seUSC);

	/*****************************************************************
		type 0FdX@
		type 1Fi鏴@_^@na@@D@d푈
		type 2F__@Pj
	*****************************************************************/

	if(type==0) { plU = 256; }

	ObjRender_SetX(spn01,cx+80);
	ObjRender_SetY(spn01,368);
	ObjPrim_SetTexture(spn01,imgspelleffect);
	ObjRender_SetBlendType(spn01,BLEND_ALPHA);
	ObjPrim_SetPrimitiveType(spn01,PRIMITIVE_TRIANGLESTRIP);
	ObjRender_SetScaleXYZ(spn01,scale,scale,1);
	Obj_SetRenderPriorityI(spn01,layer);
	ObjPrim_SetVertexCount(spn01,4);
	ObjPrim_SetVertexPosition(spn01,0,-128,-32,0);
	ObjPrim_SetVertexPosition(spn01,1,-128, 32,0);
	ObjPrim_SetVertexPosition(spn01,2, 128,-32,0);
	ObjPrim_SetVertexPosition(spn01,3, 128, 32,0);
	ObjPrim_SetVertexUVT(spn01,0,   0+plU, 0);
	ObjPrim_SetVertexUVT(spn01,1,   0+plU,64);
	ObjPrim_SetVertexUVT(spn01,2, 256+plU, 0);
	ObjPrim_SetVertexUVT(spn01,3, 256+plU,64);

	ObjRender_SetX(spn02,cx+X);
	ObjRender_SetY(spn02,368+Y);
	ObjPrim_SetTexture(spn02,texture);
	ObjRender_SetBlendType(spn02,BLEND_ALPHA);
	ObjPrim_SetPrimitiveType(spn02,PRIMITIVE_TRIANGLESTRIP);
	ObjRender_SetScaleXYZ(spn02,scale,scale,1);
	Obj_SetRenderPriorityI(spn02,layer);
	ObjPrim_SetVertexCount(spn02,4);
	ObjPrim_SetVertexPosition(spn02,0,-(rectX-rect01),-(rectY-rect02),0);
	ObjPrim_SetVertexPosition(spn02,1,-(rectX-rect01), (rect04-rectY),0);
	ObjPrim_SetVertexPosition(spn02,2, (rect03-rectX),-(rectY-rect02),0);
	ObjPrim_SetVertexPosition(spn02,3, (rect03-rectX), (rect04-rectY),0);
	ObjPrim_SetVertexUVT(spn02,0, rect01, rect02);
	ObjPrim_SetVertexUVT(spn02,1, rect01, rect04);
	ObjPrim_SetVertexUVT(spn02,2, rect03, rect02);
	ObjPrim_SetVertexUVT(spn02,3, rect03, rect04);

	loop(30) {
		move01 += 90/30;
		alpha   = 255*sin(move01);
		scale   = 3.0*sin(move01);

		ObjRender_SetScaleXYZ(spn01,4.0-scale,4.0-scale,1);
		ObjRender_SetScaleXYZ(spn02,4.0-scale,4.0-scale,1);
		ObjPrim_SetVertexColor(spn01,0,255,255,255);
		ObjPrim_SetVertexColor(spn01,1,255,255,255);
		ObjPrim_SetVertexColor(spn01,2,255,255,255);
		ObjPrim_SetVertexColor(spn01,3,255,255,255);
		ObjPrim_SetVertexColor(spn02,0,255,255,255);
		ObjPrim_SetVertexColor(spn02,1,255,255,255);
		ObjPrim_SetVertexColor(spn02,2,255,255,255);
		ObjPrim_SetVertexColor(spn02,3,255,255,255);
		ObjPrim_SetVertexAlpha(spn01,0,alpha);
		ObjPrim_SetVertexAlpha(spn01,1,alpha);
		ObjPrim_SetVertexAlpha(spn01,2,alpha);
		ObjPrim_SetVertexAlpha(spn01,3,alpha);
		ObjPrim_SetVertexAlpha(spn02,0,alpha);
		ObjPrim_SetVertexAlpha(spn02,1,alpha);
		ObjPrim_SetVertexAlpha(spn02,2,alpha);
		ObjPrim_SetVertexAlpha(spn02,3,alpha);
		yield;
	}
	loop(45) { yield; }
	alternative(type)
	case(0,1) {
		loop(45) {
			move01 += 90/45;
			move02  = 340*cos(move01);

			ObjRender_SetY(spn01,368+move02);
			ObjRender_SetY(spn02,368+move02+Y);
			yield;
		}
		SpellBonus(0,0);
	}
	case(2) {
		loop(45) {
			move01 += 90/45;
			move02  = 360*cos(move01);

			ObjRender_SetY(spn01,368+move02);
			ObjRender_SetY(spn02,368+move02+Y);
			yield;
		}
		SpellBonus(0,-20);
	}
	while(!Obj_IsDeleted(enemy)) {
		if(alpha<255) { alpha += 10; }
		if(GetPlayerY<=128) { alpha=128; }

		ObjPrim_SetVertexColor(spn01,0,255,255,255);
		ObjPrim_SetVertexColor(spn01,1,255,255,255);
		ObjPrim_SetVertexColor(spn01,2,255,255,255);
		ObjPrim_SetVertexColor(spn01,3,255,255,255);
		ObjPrim_SetVertexColor(spn02,0,255,255,255);
		ObjPrim_SetVertexColor(spn02,1,255,255,255);
		ObjPrim_SetVertexColor(spn02,2,255,255,255);
		ObjPrim_SetVertexColor(spn02,3,255,255,255);
		ObjPrim_SetVertexAlpha(spn01,0,alpha);
		ObjPrim_SetVertexAlpha(spn01,1,alpha);
		ObjPrim_SetVertexAlpha(spn01,2,alpha);
		ObjPrim_SetVertexAlpha(spn01,3,alpha);
		ObjPrim_SetVertexAlpha(spn02,0,alpha);
		ObjPrim_SetVertexAlpha(spn02,1,alpha);
		ObjPrim_SetVertexAlpha(spn02,2,alpha);
		ObjPrim_SetVertexAlpha(spn02,3,alpha);
		yield;
	}
        Obj_Delete(spn02);
        Obj_Delete(spn01);
}

//-----------------------------------------------------------------------
//  XyJ[hړ [th08`th14]
//-----------------------------------------------------------------------
task SpellCardEnd(type,X,Y,texture,rect01,rect02,rect03,rect04) {

	let spn01	= ObjPrim_Create(OBJ_PRIMITIVE_2D);
	let spn02	= ObjPrim_Create(OBJ_PRIMITIVE_2D);
	let alpha	= 255;
	let rectX	= (rect01+rect03)/2.0;
	let rectY	= (rect02+rect04)/2.0;
	let plU		= 0;
	let pX		= 0;

        let cx = GetStgFrameWidth/2;
        let cy = GetStgFrameHeight/2;
        let enemy       = GetEnemyBossObjectID[0];

	let layer	= 70;

	LoadTexture(texture);
	LoadTexture(imgspelleffect);

	/*****************************************************************
		type 0FdX@
		type 1Fi鏴@_^@na@@D@d푈
		type 2F__@Pj
	*****************************************************************/

	if(type==0) { plU = 256; }

//	Obj_SetSpeed(spn01,0);
//	Obj_SetAngle(spn01,0);
	ObjPrim_SetTexture(spn01,imgspelleffect);
	ObjRender_SetBlendType(spn01,BLEND_ALPHA);
	ObjPrim_SetPrimitiveType(spn01,PRIMITIVE_TRIANGLESTRIP);
	ObjRender_SetScaleXYZ(spn01,1,1,1);
	Obj_SetRenderPriorityI(spn01,layer);
	ObjPrim_SetVertexCount(spn01,4);
	ObjPrim_SetVertexPosition(spn01,0,-128,-32,0);
	ObjPrim_SetVertexPosition(spn01,1,-128, 32,0);
	ObjPrim_SetVertexPosition(spn01,2, 128,-32,0);
	ObjPrim_SetVertexPosition(spn01,3, 128, 32,0);
	ObjPrim_SetVertexUVT(spn01,0,   0+plU, 0);
	ObjPrim_SetVertexUVT(spn01,1,   0+plU,64);
	ObjPrim_SetVertexUVT(spn01,2, 256+plU, 0);
	ObjPrim_SetVertexUVT(spn01,3, 256+plU,64);
	ObjPrim_SetVertexColor(spn01,0,255,255,255);
	ObjPrim_SetVertexColor(spn01,1,255,255,255);
	ObjPrim_SetVertexColor(spn01,2,255,255,255);
	ObjPrim_SetVertexColor(spn01,3,255,255,255);
	ObjPrim_SetVertexAlpha(spn01,0,255);
	ObjPrim_SetVertexAlpha(spn01,1,255);
	ObjPrim_SetVertexAlpha(spn01,2,255);
	ObjPrim_SetVertexAlpha(spn01,3,255);

//	Obj_SetSpeed(spn02,0);
//	Obj_SetAngle(spn02,0);
	ObjPrim_SetTexture(spn02,texture);
	ObjRender_SetBlendType(spn02,BLEND_ALPHA);
	ObjPrim_SetPrimitiveType(spn02,PRIMITIVE_TRIANGLESTRIP);
	ObjRender_SetScaleXYZ(spn02,1,1,1);
	Obj_SetRenderPriorityI(spn02,layer);
	ObjPrim_SetVertexCount(spn02,4);
	ObjPrim_SetVertexPosition(spn02,0,-(rectX-rect01),-(rectY-rect02),0);
	ObjPrim_SetVertexPosition(spn02,1,-(rectX-rect01), (rect04-rectY),0);
	ObjPrim_SetVertexPosition(spn02,2, (rect03-rectX),-(rectY-rect02),0);
	ObjPrim_SetVertexPosition(spn02,3, (rect03-rectX), (rect04-rectY),0);
	ObjPrim_SetVertexUVT(spn02,0, rect01, rect02);
	ObjPrim_SetVertexUVT(spn02,1, rect01, rect04);
	ObjPrim_SetVertexUVT(spn02,2, rect03, rect02);
	ObjPrim_SetVertexUVT(spn02,3, rect03, rect04);
	ObjPrim_SetVertexColor(spn02,0,255,255,255);
	ObjPrim_SetVertexColor(spn02,1,255,255,255);
	ObjPrim_SetVertexColor(spn02,2,255,255,255);
	ObjPrim_SetVertexColor(spn02,3,255,255,255);
	ObjPrim_SetVertexAlpha(spn02,0,255);
	ObjPrim_SetVertexAlpha(spn02,1,255);
	ObjPrim_SetVertexAlpha(spn02,2,255);
	ObjPrim_SetVertexAlpha(spn02,3,255);

	alternative(type)
	case(0,1) {
		ObjRender_SetY(spn01,368+340*cos(180));
		ObjRender_SetY(spn02,368+340*cos(180)+Y);
	}
	case(2) {
		ObjRender_SetY(spn01,368+360*cos(180));
		ObjRender_SetY(spn02,368+360*cos(180)+Y);
	}
	while(ObjRender_GetX(spn02)<=592 && !Obj_IsDeleted(enemy)) {
		pX += 10.00;

		if(alpha<255) { alpha += 10; }
		if(GetPlayerY<=128) { alpha=128; }

		ObjRender_SetX(spn01,pX+cx+80);
		ObjRender_SetX(spn02,pX+cx);
		ObjPrim_SetVertexColor(spn01,0,255,255,255);
		ObjPrim_SetVertexColor(spn01,1,255,255,255);
		ObjPrim_SetVertexColor(spn01,2,255,255,255);
		ObjPrim_SetVertexColor(spn01,3,255,255,255);
		ObjPrim_SetVertexColor(spn02,0,255,255,255);
		ObjPrim_SetVertexColor(spn02,1,255,255,255);
		ObjPrim_SetVertexColor(spn02,2,255,255,255);
		ObjPrim_SetVertexColor(spn02,3,255,255,255);
		ObjPrim_SetVertexAlpha(spn01,0,alpha);
		ObjPrim_SetVertexAlpha(spn01,1,alpha);
		ObjPrim_SetVertexAlpha(spn01,2,alpha);
		ObjPrim_SetVertexAlpha(spn01,3,alpha);
		ObjPrim_SetVertexAlpha(spn02,0,alpha);
		ObjPrim_SetVertexAlpha(spn02,1,alpha);
		ObjPrim_SetVertexAlpha(spn02,2,alpha);
		ObjPrim_SetVertexAlpha(spn02,3,alpha);
		yield;
	}
	Obj_Delete(spn01);
	Obj_Delete(spn02);
}

//-----------------------------------------------------------------------
//  @w\ [th10`th14]
//-----------------------------------------------------------------------
task SpellTimeRing(enemy) {

	let ring01	= ObjPrim_Create(OBJ_PRIMITIVE_2D);
	let ring02	= ObjPrim_Create(OBJ_PRIMITIVE_2D);
	let alpha01	= 160;
	let alpha02	= 160;
	let scale01	= 0;
	let scale02	= 0;
	let angle01	= 0;
	let angle02	= 0;
	let width01	= 6;
	let width02	= 12;
//        let enemy       = GetEnemyBossObjectID[0];
	let scene       = GetEnemyBossSceneObjectID();
	let maxtime	= ObjEnemyBossScene_GetInfo(scene,INFO_TIMER)*60;
	let i1		= 0;
	let i2		= 0;
	let i3		= 0;
	let i4		= 0;

	let layer	= 25;
	let vertex	= 722;

	LoadTexture(imgspelleffect);

	ObjPrim_SetTexture(ring01,imgspelleffect);
	ObjRender_SetBlendType(ring01,BLEND_ADD_RGB);
	ObjPrim_SetPrimitiveType(ring01,PRIMITIVE_TRIANGLESTRIP);
	Obj_SetRenderPriorityI(ring01,layer);
	ObjRender_SetScaleXYZ(ring01,0,0,1);
	ObjPrim_SetVertexCount(ring01,vertex);

	ObjPrim_SetTexture(ring02,imgspelleffect);
	ObjRender_SetBlendType(ring02,BLEND_ADD_RGB);
	ObjPrim_SetPrimitiveType(ring02,PRIMITIVE_TRIANGLESTRIP);
	Obj_SetRenderPriorityI(ring02,layer);
	ObjRender_SetScaleXYZ(ring02,0,0,1);
	ObjPrim_SetVertexCount(ring02,vertex);

	loop(vertex) {
		ObjPrim_SetVertexPosition(ring01,i1+0,-(138+width01)*sin(i2+0),-(138+width01)*cos(i2+0),0);
		ObjPrim_SetVertexPosition(ring01,i1+1,-(138-width01)*sin(i2+2),-(138-width01)*cos(i2+2),0);
		ObjPrim_SetVertexUVT(ring01,i1+0, i4+0, 96);
		ObjPrim_SetVertexUVT(ring01,i1+1, i4+2,128);
		ObjPrim_SetVertexUVT(ring02,i1+0, i4+0,128);
		ObjPrim_SetVertexUVT(ring02,i1+1, i4+2,160);
		ObjPrim_SetVertexColor(ring01,i1+0,255*alpha01/255,255*alpha01/255,255*alpha01/255);
		ObjPrim_SetVertexColor(ring01,i1+1,255*alpha01/255,255*alpha01/255,255*alpha01/255);
		ObjPrim_SetVertexColor(ring02,i1+0,255*alpha02/255,255*alpha02/255,255*alpha02/255);
		ObjPrim_SetVertexColor(ring02,i1+1,255*alpha02/255,255*alpha02/255,255*alpha02/255);
		ObjPrim_SetVertexAlpha(ring01,i1+0,alpha01);
		ObjPrim_SetVertexAlpha(ring01,i1+1,alpha01);
		ObjPrim_SetVertexAlpha(ring02,i1+0,alpha02);
		ObjPrim_SetVertexAlpha(ring02,i1+1,alpha02);
		i1+=2;
		i2+=1;
		i4+=2;
	}
	loop(45) {
		i1  = 0;
		i2  = 0;
		i3 += 90/45;
		angle01 += 3.0;
		angle02 -= 3.0;
		scale01  = 2.0*sin(i3);
		scale02  = 1.0*sin(i3/2);
		width02  = 9.0+4.5*sin(i3*2-90);

		ObjRender_SetPosition(ring01,ObjMove_GetX(enemy),ObjMove_GetY(enemy),0);
		ObjRender_SetPosition(ring02,ObjMove_GetX(enemy),ObjMove_GetY(enemy),0);
		ObjRender_SetScaleXYZ(ring01,scale01+0.20,scale01+0.20,1);
		ObjRender_SetScaleXYZ(ring02,scale02+0.28,scale02+0.28,1);
		ObjRender_SetAngleXYZ(ring01,0,0,angle01);
		ObjRender_SetAngleXYZ(ring02,0,0,angle02);

		loop(vertex) {
			ObjPrim_SetVertexPosition(ring02,i1+0,-(122+width02)*sin(i2+0),-(122+width02)*cos(i2+0),0);
			ObjPrim_SetVertexPosition(ring02,i1+1,-(122-width02)*sin(i2+2),-(122-width02)*cos(i2+2),0);
			i1+=2;
			i2+=1;
		}
		yield;
	}
	while(scale01>=1.0) {
		i1  = 0;
		i2  = 0;
		i3 += 90/45;
		angle01 += 3.0;
		angle02 -= 3.0;
		scale01  = 2.0*sin(i3);
		scale02  = 1.0*sin(i3/2);
		width02  = 9.0+4.5*sin(i3*2-90);

		ObjRender_SetPosition(ring01,ObjMove_GetX(enemy),ObjMove_GetY(enemy),0);
		ObjRender_SetPosition(ring02,ObjMove_GetX(enemy),ObjMove_GetY(enemy),0);
		ObjRender_SetScaleXYZ(ring01,scale01+0.20,scale01+0.20,1);
		ObjRender_SetScaleXYZ(ring02,scale02+0.28,scale02+0.28,1);
		ObjRender_SetAngleXYZ(ring01,0,0,angle01);
		ObjRender_SetAngleXYZ(ring02,0,0,angle02);

		loop(vertex) {
			ObjPrim_SetVertexPosition(ring02,i1+0,-(122+width02)*sin(i2+0),-(122+width02)*cos(i2+0),0);
			ObjPrim_SetVertexPosition(ring02,i1+1,-(122-width02)*sin(i2+2),-(122-width02)*cos(i2+2),0);
			i1+=2;
			i2+=1;
		}
		yield;
	}
	while(!Obj_IsDeleted(enemy)) {
		angle01 += 3.0;
		angle02 -= 3.0;
		scale01 -= 1.0/maxtime;
		scale02 -= 1.0/maxtime;

		ObjRender_SetPosition(ring01,ObjMove_GetX(enemy),ObjMove_GetY(enemy),0);
		ObjRender_SetPosition(ring02,ObjMove_GetX(enemy),ObjMove_GetY(enemy),0);
		ObjRender_SetScaleXYZ(ring01,scale01+0.20,scale01+0.20,1);
		ObjRender_SetScaleXYZ(ring02,scale02+0.28,scale02+0.28,1);
		ObjRender_SetAngleXYZ(ring01,0,0,angle01);
		ObjRender_SetAngleXYZ(ring02,0,0,angle02);
		yield;
	}
        Obj_Delete(ring01);
        Obj_Delete(ring02);
}

//-----------------------------------------------------------------------
//  XyJ[h錾̔wi\ [th10`th14]
//-----------------------------------------------------------------------
task SpellBackGround {

	let background01	= [ObjPrim_Create(OBJ_PRIMITIVE_2D),ObjPrim_Create(OBJ_PRIMITIVE_2D),ObjPrim_Create(OBJ_PRIMITIVE_2D),ObjPrim_Create(OBJ_PRIMITIVE_2D),ObjPrim_Create(OBJ_PRIMITIVE_2D),ObjPrim_Create(OBJ_PRIMITIVE_2D),ObjPrim_Create(OBJ_PRIMITIVE_2D),ObjPrim_Create(OBJ_PRIMITIVE_2D),ObjPrim_Create(OBJ_PRIMITIVE_2D),ObjPrim_Create(OBJ_PRIMITIVE_2D),ObjPrim_Create(OBJ_PRIMITIVE_2D)];
	let background02	= [ObjPrim_Create(OBJ_PRIMITIVE_2D),ObjPrim_Create(OBJ_PRIMITIVE_2D),ObjPrim_Create(OBJ_PRIMITIVE_2D),ObjPrim_Create(OBJ_PRIMITIVE_2D)];
	let alpha01		= 0;
	let alpha02		= 0;
	let angle01		= 0;
	let angle02		= 0;
	let i			= 0;
	let i1			= 0;
	let i2			= 0;
	let pXY			= 0;
	let R			= 144;
	let G			= 144;
	let B			= 144;

	let layer	= 25;

        let cx = GetStgFrameWidth/2;
        let cy = GetStgFrameHeight/2;

	loop(11) {
//		Obj_SetSpeed(background01[i],0);
//		Obj_SetAngle(background01[i],0);
		ObjPrim_SetTexture(background01[i],imgspelleffect);
		ObjRender_SetBlendType(background01[i],BLEND_ADD_RGB);
		ObjPrim_SetPrimitiveType(background01[i],PRIMITIVE_TRIANGLESTRIP);
		Obj_SetRenderPriorityI(background01[i],layer);
		ObjRender_SetScaleXYZ(background01[i],1,1,1);
		ObjRender_SetAngleXYZ(background01[i],0,0,-30);
		ObjPrim_SetVertexCount(background01[i],4);
		ObjPrim_SetVertexPosition(background01[i],0,-512,-16,0);
		ObjPrim_SetVertexPosition(background01[i],1,-512, 16,0);
		ObjPrim_SetVertexPosition(background01[i],2, 512,-16,0);
		ObjPrim_SetVertexPosition(background01[i],3, 512, 16,0);
		ObjPrim_SetVertexUVT(background01[i],0,   0, 64);
		ObjPrim_SetVertexUVT(background01[i],1,   0, 96);
		ObjPrim_SetVertexUVT(background01[i],2,1024, 64);
		ObjPrim_SetVertexUVT(background01[i],3,1024, 96);
		i++;
	}
	i=0;
	ObjRender_SetPosition(background02[0],cx-112,cy-160,0);
	ObjRender_SetPosition(background02[1],cx+112,cy+160,0);
	ObjRender_SetPosition(background02[2],cx+112,cy+160,0);
	ObjRender_SetPosition(background02[3],cx+112,cy+160,0);
	loop(4) {
//		Obj_SetSpeed(background02[i],0);
//		Obj_SetAngle(background02[i],0);
		ObjPrim_SetTexture(background02[i],imgspelleffect);
		ObjRender_SetBlendType(background02[i],BLEND_ADD_RGB);
		ObjPrim_SetPrimitiveType(background02[i],PRIMITIVE_TRIANGLESTRIP);
		Obj_SetRenderPriorityI(background02[i],layer);
		ObjRender_SetScaleXYZ(background02[i],1,1,1);
		ObjRender_SetAngleXYZ(background02[i],0,0,0);
		ObjPrim_SetVertexCount(background02[i],18);
		ObjPrim_SetVertexUVT(background02[i], 0,  0, 64);
		ObjPrim_SetVertexUVT(background02[i], 1,  0, 96);
		ObjPrim_SetVertexUVT(background02[i], 2,256, 64);
		ObjPrim_SetVertexUVT(background02[i], 3,256, 96);
		ObjPrim_SetVertexUVT(background02[i], 4,  0, 64);
		ObjPrim_SetVertexUVT(background02[i], 5,  0, 96);
		ObjPrim_SetVertexUVT(background02[i], 6,256, 64);
		ObjPrim_SetVertexUVT(background02[i], 7,256, 96);
		ObjPrim_SetVertexUVT(background02[i], 8,  0, 64);
		ObjPrim_SetVertexUVT(background02[i], 9,  0, 96);
		ObjPrim_SetVertexUVT(background02[i],10,256, 64);
		ObjPrim_SetVertexUVT(background02[i],11,256, 96);
		ObjPrim_SetVertexUVT(background02[i],12,  0, 64);
		ObjPrim_SetVertexUVT(background02[i],13,  0, 96);
		ObjPrim_SetVertexUVT(background02[i],14,256, 64);
		ObjPrim_SetVertexUVT(background02[i],15,256, 96);
		ObjPrim_SetVertexUVT(background02[i],16,  0, 64);
		ObjPrim_SetVertexUVT(background02[i],17,  0, 96);
		ObjPrim_SetVertexUVT(background02[i],18,256, 64);
		i++;
	}
	loop(18) {
		ObjPrim_SetVertexPosition(background02[0],i1  ,128*sin(i2)  ,128*cos(i2),0);
		ObjPrim_SetVertexPosition(background02[0],i1+1, 96*sin(i2+1), 96*cos(i2+1),0);
		ObjPrim_SetVertexPosition(background02[1],i1  ,128*sin(i2)  ,128*cos(i2),0);
		ObjPrim_SetVertexPosition(background02[1],i1+1, 96*sin(i2+1), 96*cos(i2+1),0);
		ObjPrim_SetVertexPosition(background02[2],i1  ,160*sin(i2)  ,160*cos(i2),0);
		ObjPrim_SetVertexPosition(background02[2],i1+1,128*sin(i2+1),128*cos(i2+1),0);
		ObjPrim_SetVertexPosition(background02[3],i1  ,192*sin(i2)  ,192*cos(i2),0);
		ObjPrim_SetVertexPosition(background02[3],i1+1,160*sin(i2+1),160*cos(i2+1),0);
		i1 += 2;
		i2 += 360/8;
	}
	loop(75) {
		i=0;
		pXY++;
		alpha02 += 90/60;
		alpha01  = 240*sin(alpha02);
		angle01 += 1.2;
		angle02 -= 1.2;

		ObjRender_SetPosition(background01[0] ,cx+pXY*cos(-30),cy-160+pXY*sin(-30),0);
		ObjRender_SetPosition(background01[1] ,cx-pXY*cos(-30),cy-128-pXY*sin(-30),0);
		ObjRender_SetPosition(background01[2] ,cx+pXY*cos(-30),cy-96 +pXY*sin(-30),0);
		ObjRender_SetPosition(background01[3] ,cx-pXY*cos(-30),cy-64 -pXY*sin(-30),0);
		ObjRender_SetPosition(background01[4] ,cx+pXY*cos(-30),cy-32 +pXY*sin(-30),0);
		ObjRender_SetPosition(background01[5] ,cx-pXY*cos(-30),cy+0  -pXY*sin(-30),0);
		ObjRender_SetPosition(background01[6] ,cx+pXY*cos(-30),cy+32 +pXY*sin(-30),0);
		ObjRender_SetPosition(background01[7] ,cx-pXY*cos(-30),cy+64 -pXY*sin(-30),0);
		ObjRender_SetPosition(background01[8] ,cx+pXY*cos(-30),cy+96 +pXY*sin(-30),0);
		ObjRender_SetPosition(background01[9] ,cx-pXY*cos(-30),cy+128-pXY*sin(-30),0);
		ObjRender_SetPosition(background01[10],cx+pXY*cos(-30),cy+160+pXY*sin(-30),0);
		ObjRender_SetAngleXYZ(background02[0],0,0,angle01);
		ObjRender_SetAngleXYZ(background02[1],0,0,angle02);
		ObjRender_SetAngleXYZ(background02[2],0,0,angle01);
		ObjRender_SetAngleXYZ(background02[3],0,0,angle01);
		loop(11) {
			ObjPrim_SetVertexColor(background01[i],0,R*alpha01/255,G*alpha01/255,B*alpha01/255);
			ObjPrim_SetVertexColor(background01[i],1,R*alpha01/255,G*alpha01/255,B*alpha01/255);
			ObjPrim_SetVertexColor(background01[i],2,R*alpha01/255,G*alpha01/255,B*alpha01/255);
			ObjPrim_SetVertexColor(background01[i],3,R*alpha01/255,G*alpha01/255,B*alpha01/255);
			ObjPrim_SetVertexAlpha(background01[i],0,alpha01);
			ObjPrim_SetVertexAlpha(background01[i],1,alpha01);
			ObjPrim_SetVertexAlpha(background01[i],2,alpha01);
			ObjPrim_SetVertexAlpha(background01[i],3,alpha01);
			i++;
		}
		i=0;
		loop(4) {
			ObjPrim_SetVertexColor(background02[i], 0,R*alpha01/255,G*alpha01/255,B*alpha01/255);
			ObjPrim_SetVertexColor(background02[i], 1,R*alpha01/255,G*alpha01/255,B*alpha01/255);
			ObjPrim_SetVertexColor(background02[i], 2,R*alpha01/255,G*alpha01/255,B*alpha01/255);
			ObjPrim_SetVertexColor(background02[i], 3,R*alpha01/255,G*alpha01/255,B*alpha01/255);
			ObjPrim_SetVertexColor(background02[i], 4,R*alpha01/255,G*alpha01/255,B*alpha01/255);
			ObjPrim_SetVertexColor(background02[i], 5,R*alpha01/255,G*alpha01/255,B*alpha01/255);
			ObjPrim_SetVertexColor(background02[i], 6,R*alpha01/255,G*alpha01/255,B*alpha01/255);
			ObjPrim_SetVertexColor(background02[i], 7,R*alpha01/255,G*alpha01/255,B*alpha01/255);
			ObjPrim_SetVertexColor(background02[i], 8,R*alpha01/255,G*alpha01/255,B*alpha01/255);
			ObjPrim_SetVertexColor(background02[i], 9,R*alpha01/255,G*alpha01/255,B*alpha01/255);
			ObjPrim_SetVertexColor(background02[i],10,R*alpha01/255,G*alpha01/255,B*alpha01/255);
			ObjPrim_SetVertexColor(background02[i],11,R*alpha01/255,G*alpha01/255,B*alpha01/255);
			ObjPrim_SetVertexColor(background02[i],12,R*alpha01/255,G*alpha01/255,B*alpha01/255);
			ObjPrim_SetVertexColor(background02[i],13,R*alpha01/255,G*alpha01/255,B*alpha01/255);
			ObjPrim_SetVertexColor(background02[i],14,R*alpha01/255,G*alpha01/255,B*alpha01/255);
			ObjPrim_SetVertexColor(background02[i],15,R*alpha01/255,G*alpha01/255,B*alpha01/255);
			ObjPrim_SetVertexColor(background02[i],16,R*alpha01/255,G*alpha01/255,B*alpha01/255);
			ObjPrim_SetVertexColor(background02[i],17,R*alpha01/255,G*alpha01/255,B*alpha01/255);
			ObjPrim_SetVertexColor(background02[i],18,R*alpha01/255,G*alpha01/255,B*alpha01/255);
			ObjPrim_SetVertexAlpha(background02[i], 0,alpha01);
			ObjPrim_SetVertexAlpha(background02[i], 1,alpha01);
			ObjPrim_SetVertexAlpha(background02[i], 2,alpha01);
			ObjPrim_SetVertexAlpha(background02[i], 3,alpha01);
			ObjPrim_SetVertexAlpha(background02[i], 4,alpha01);
			ObjPrim_SetVertexAlpha(background02[i], 5,alpha01);
			ObjPrim_SetVertexAlpha(background02[i], 6,alpha01);
			ObjPrim_SetVertexAlpha(background02[i], 7,alpha01);
			ObjPrim_SetVertexAlpha(background02[i], 8,alpha01);
			ObjPrim_SetVertexAlpha(background02[i], 9,alpha01);
			ObjPrim_SetVertexAlpha(background02[i],10,alpha01);
			ObjPrim_SetVertexAlpha(background02[i],11,alpha01);
			ObjPrim_SetVertexAlpha(background02[i],12,alpha01);
			ObjPrim_SetVertexAlpha(background02[i],13,alpha01);
			ObjPrim_SetVertexAlpha(background02[i],14,alpha01);
			ObjPrim_SetVertexAlpha(background02[i],15,alpha01);
			ObjPrim_SetVertexAlpha(background02[i],16,alpha01);
			ObjPrim_SetVertexAlpha(background02[i],17,alpha01);
			ObjPrim_SetVertexAlpha(background02[i],18,alpha01);
			i++;
		}
		yield;
	}
	loop(30) {
		pXY++;
		angle01 += 1.2;
		angle02 -= 1.2;

		ObjRender_SetPosition(background01[0] ,cx+pXY*cos(-30),cy-160+pXY*sin(-30),0);
		ObjRender_SetPosition(background01[1] ,cx-pXY*cos(-30),cy-128-pXY*sin(-30),0);
		ObjRender_SetPosition(background01[2] ,cx+pXY*cos(-30),cy-96 +pXY*sin(-30),0);
		ObjRender_SetPosition(background01[3] ,cx-pXY*cos(-30),cy-64 -pXY*sin(-30),0);
		ObjRender_SetPosition(background01[4] ,cx+pXY*cos(-30),cy-32 +pXY*sin(-30),0);
		ObjRender_SetPosition(background01[5] ,cx-pXY*cos(-30),cy+0  -pXY*sin(-30),0);
		ObjRender_SetPosition(background01[6] ,cx+pXY*cos(-30),cy+32 +pXY*sin(-30),0);
		ObjRender_SetPosition(background01[7] ,cx-pXY*cos(-30),cy+64 -pXY*sin(-30),0);
		ObjRender_SetPosition(background01[8] ,cx+pXY*cos(-30),cy+96 +pXY*sin(-30),0);
		ObjRender_SetPosition(background01[9] ,cx-pXY*cos(-30),cy+128-pXY*sin(-30),0);
		ObjRender_SetPosition(background01[10],cx+pXY*cos(-30),cy+160+pXY*sin(-30),0);
		ObjRender_SetAngleXYZ(background02[0],0,0,angle01);
		ObjRender_SetAngleXYZ(background02[1],0,0,angle02);
		ObjRender_SetAngleXYZ(background02[2],0,0,angle01);
		ObjRender_SetAngleXYZ(background02[3],0,0,angle01);
		yield;
	}
	loop(75) {
		i=0;
		pXY++;
		alpha02 += 90/60;
		alpha01  = 240*sin(alpha02);
		angle01 += 1.2;
		angle02 -= 1.2;

		ObjRender_SetPosition(background01[0] ,cx+pXY*cos(-30),cy-160+pXY*sin(-30),0);
		ObjRender_SetPosition(background01[1] ,cx-pXY*cos(-30),cy-128-pXY*sin(-30),0);
		ObjRender_SetPosition(background01[2] ,cx+pXY*cos(-30),cy-96 +pXY*sin(-30),0);
		ObjRender_SetPosition(background01[3] ,cx-pXY*cos(-30),cy-64 -pXY*sin(-30),0);
		ObjRender_SetPosition(background01[4] ,cx+pXY*cos(-30),cy-32 +pXY*sin(-30),0);
		ObjRender_SetPosition(background01[5] ,cx-pXY*cos(-30),cy+0  -pXY*sin(-30),0);
		ObjRender_SetPosition(background01[6] ,cx+pXY*cos(-30),cy+32 +pXY*sin(-30),0);
		ObjRender_SetPosition(background01[7] ,cx-pXY*cos(-30),cy+64 -pXY*sin(-30),0);
		ObjRender_SetPosition(background01[8] ,cx+pXY*cos(-30),cy+96 +pXY*sin(-30),0);
		ObjRender_SetPosition(background01[9] ,cx-pXY*cos(-30),cy+128-pXY*sin(-30),0);
		ObjRender_SetPosition(background01[10],cx+pXY*cos(-30),cy+160+pXY*sin(-30),0);
		ObjRender_SetAngleXYZ(background02[0],0,0,angle01);
		ObjRender_SetAngleXYZ(background02[1],0,0,angle02);
		ObjRender_SetAngleXYZ(background02[2],0,0,angle01);
		ObjRender_SetAngleXYZ(background02[3],0,0,angle01);
		loop(11) {
			ObjPrim_SetVertexColor(background01[i],0,R*alpha01/255,G*alpha01/255,B*alpha01/255);
			ObjPrim_SetVertexColor(background01[i],1,R*alpha01/255,G*alpha01/255,B*alpha01/255);
			ObjPrim_SetVertexColor(background01[i],2,R*alpha01/255,G*alpha01/255,B*alpha01/255);
			ObjPrim_SetVertexColor(background01[i],3,R*alpha01/255,G*alpha01/255,B*alpha01/255);
			ObjPrim_SetVertexAlpha(background01[i],0,alpha01);
			ObjPrim_SetVertexAlpha(background01[i],1,alpha01);
			ObjPrim_SetVertexAlpha(background01[i],2,alpha01);
			ObjPrim_SetVertexAlpha(background01[i],3,alpha01);
			i++;
		}
		i=0;
		loop(4) {
			ObjPrim_SetVertexColor(background02[i], 0,R*alpha01/255,G*alpha01/255,B*alpha01/255);
			ObjPrim_SetVertexColor(background02[i], 1,R*alpha01/255,G*alpha01/255,B*alpha01/255);
			ObjPrim_SetVertexColor(background02[i], 2,R*alpha01/255,G*alpha01/255,B*alpha01/255);
			ObjPrim_SetVertexColor(background02[i], 3,R*alpha01/255,G*alpha01/255,B*alpha01/255);
			ObjPrim_SetVertexColor(background02[i], 4,R*alpha01/255,G*alpha01/255,B*alpha01/255);
			ObjPrim_SetVertexColor(background02[i], 5,R*alpha01/255,G*alpha01/255,B*alpha01/255);
			ObjPrim_SetVertexColor(background02[i], 6,R*alpha01/255,G*alpha01/255,B*alpha01/255);
			ObjPrim_SetVertexColor(background02[i], 7,R*alpha01/255,G*alpha01/255,B*alpha01/255);
			ObjPrim_SetVertexColor(background02[i], 8,R*alpha01/255,G*alpha01/255,B*alpha01/255);
			ObjPrim_SetVertexColor(background02[i], 9,R*alpha01/255,G*alpha01/255,B*alpha01/255);
			ObjPrim_SetVertexColor(background02[i],10,R*alpha01/255,G*alpha01/255,B*alpha01/255);
			ObjPrim_SetVertexColor(background02[i],11,R*alpha01/255,G*alpha01/255,B*alpha01/255);
			ObjPrim_SetVertexColor(background02[i],12,R*alpha01/255,G*alpha01/255,B*alpha01/255);
			ObjPrim_SetVertexColor(background02[i],13,R*alpha01/255,G*alpha01/255,B*alpha01/255);
			ObjPrim_SetVertexColor(background02[i],14,R*alpha01/255,G*alpha01/255,B*alpha01/255);
			ObjPrim_SetVertexColor(background02[i],15,R*alpha01/255,G*alpha01/255,B*alpha01/255);
			ObjPrim_SetVertexColor(background02[i],16,R*alpha01/255,G*alpha01/255,B*alpha01/255);
			ObjPrim_SetVertexColor(background02[i],17,R*alpha01/255,G*alpha01/255,B*alpha01/255);
			ObjPrim_SetVertexColor(background02[i],18,R*alpha01/255,G*alpha01/255,B*alpha01/255);
			ObjPrim_SetVertexAlpha(background02[i], 0,alpha01);
			ObjPrim_SetVertexAlpha(background02[i], 1,alpha01);
			ObjPrim_SetVertexAlpha(background02[i], 2,alpha01);
			ObjPrim_SetVertexAlpha(background02[i], 3,alpha01);
			ObjPrim_SetVertexAlpha(background02[i], 4,alpha01);
			ObjPrim_SetVertexAlpha(background02[i], 5,alpha01);
			ObjPrim_SetVertexAlpha(background02[i], 6,alpha01);
			ObjPrim_SetVertexAlpha(background02[i], 7,alpha01);
			ObjPrim_SetVertexAlpha(background02[i], 8,alpha01);
			ObjPrim_SetVertexAlpha(background02[i], 9,alpha01);
			ObjPrim_SetVertexAlpha(background02[i],10,alpha01);
			ObjPrim_SetVertexAlpha(background02[i],11,alpha01);
			ObjPrim_SetVertexAlpha(background02[i],12,alpha01);
			ObjPrim_SetVertexAlpha(background02[i],13,alpha01);
			ObjPrim_SetVertexAlpha(background02[i],14,alpha01);
			ObjPrim_SetVertexAlpha(background02[i],15,alpha01);
			ObjPrim_SetVertexAlpha(background02[i],16,alpha01);
			ObjPrim_SetVertexAlpha(background02[i],17,alpha01);
			ObjPrim_SetVertexAlpha(background02[i],18,alpha01);
			i++;
		}
		yield;
	}
	i=0;
	loop(11) {
		Obj_Delete(background01[i]);
		i++;
	}
	i=0;
	loop(4) {
		Obj_Delete(background02[i]);
		i++;
	}
}

//-----------------------------------------------------------------------
//  XyJ[h{[iX̕\ [th10`th14]
//-----------------------------------------------------------------------
task SpellBonus(X,Y) {

	let bonus		= ObjPrim_Create(OBJ_PRIMITIVE_2D);
	let score		= [ObjPrim_Create(OBJ_PRIMITIVE_2D),ObjPrim_Create(OBJ_PRIMITIVE_2D),ObjPrim_Create(OBJ_PRIMITIVE_2D),ObjPrim_Create(OBJ_PRIMITIVE_2D),ObjPrim_Create(OBJ_PRIMITIVE_2D),ObjPrim_Create(OBJ_PRIMITIVE_2D),ObjPrim_Create(OBJ_PRIMITIVE_2D),ObjPrim_Create(OBJ_PRIMITIVE_2D)];
	let rect01		= [ 7,15,23,31,39,47,55,63,71,79];
	let rect02		= [15,23,31,39,47,55,63,71,79,87];
	let alpha		= 0;
	let i			= 0;
	
        let cx = GetStgFrameWidth/2;
        let cy = GetStgFrameHeight/2;
        let enemy       = GetEnemyBossObjectID[0];
	let scene       = GetEnemyBossSceneObjectID();

	LoadTexture(imgspelleffect);

	ObjRender_SetPosition(bonus,cx,cy,0);
//	Obj_SetSpeed(bonus,0);
//	Obj_SetAngle(bonus,0);
	ObjPrim_SetTexture(bonus,imgspelleffect);
	ObjRender_SetBlendType(bonus,BLEND_ALPHA);
	ObjPrim_SetPrimitiveType(bonus,PRIMITIVE_TRIANGLESTRIP);
	ObjRender_SetScaleXYZ(bonus,1,1,1);
	Obj_SetRenderPriorityI(bonus,70);
	ObjPrim_SetVertexCount(bonus,4);
	ObjPrim_SetVertexPosition(bonus,0,-24, -8,0);
	ObjPrim_SetVertexPosition(bonus,1,-24,  8,0);
	ObjPrim_SetVertexPosition(bonus,2, 24, -8,0);
	ObjPrim_SetVertexPosition(bonus,3, 24,  8,0);
	ObjPrim_SetVertexUVT(bonus,0,  0,160);
	ObjPrim_SetVertexUVT(bonus,1,  0,176);
	ObjPrim_SetVertexUVT(bonus,2, 48,160);
	ObjPrim_SetVertexUVT(bonus,3, 48,176);
	ObjPrim_SetVertexColor(bonus,0,255,255,255);
	ObjPrim_SetVertexColor(bonus,1,255,255,255);
	ObjPrim_SetVertexColor(bonus,2,255,255,255);
	ObjPrim_SetVertexColor(bonus,3,255,255,255);
	ObjPrim_SetVertexAlpha(bonus,0,alpha);
	ObjPrim_SetVertexAlpha(bonus,1,alpha);
	ObjPrim_SetVertexAlpha(bonus,2,alpha);
	ObjPrim_SetVertexAlpha(bonus,3,alpha);

	loop(8){
		ObjRender_SetPosition(score[i],cx,cy,0);
		ObjPrim_SetTexture(score[i],imgspelleffect);
		ObjRender_SetBlendType(score[i],BLEND_ALPHA);
		ObjPrim_SetPrimitiveType(score[i],PRIMITIVE_TRIANGLESTRIP);
		ObjRender_SetScaleXYZ(score[i],1,1,1);
		Obj_SetRenderPriorityI(score[i],70);
		ObjPrim_SetVertexCount(score[i],4);
		ObjPrim_SetVertexPosition(score[i],0,-4,-8,0);
		ObjPrim_SetVertexPosition(score[i],1,-4, 8,0);
		ObjPrim_SetVertexPosition(score[i],2, 4,-8,0);
		ObjPrim_SetVertexPosition(score[i],3, 4, 8,0);
		ObjPrim_SetVertexColor(score[i],0,255,255,255);
		ObjPrim_SetVertexColor(score[i],1,255,255,255);
		ObjPrim_SetVertexColor(score[i],2,255,255,255);
		ObjPrim_SetVertexColor(score[i],3,255,255,255);
		ObjPrim_SetVertexAlpha(score[i],0,alpha);
		ObjPrim_SetVertexAlpha(score[i],1,alpha);
		ObjPrim_SetVertexAlpha(score[i],2,alpha);
		ObjPrim_SetVertexAlpha(score[i],3,alpha);
		i++;
	}

	let ox = 238+X;
	let oy = 2*cy-398+Y;

	ObjRender_SetPosition(bonus   ,ox-22,oy,0);
	ObjRender_SetPosition(score[7],ox   ,oy,0);
	ObjRender_SetPosition(score[6],ox+ 7,oy,0);
	ObjRender_SetPosition(score[5],ox+14,oy,0);
	ObjRender_SetPosition(score[4],ox+21,oy,0);
	ObjRender_SetPosition(score[3],ox+28,oy,0);
	ObjRender_SetPosition(score[2],ox+35,oy,0);
	ObjRender_SetPosition(score[1],ox+42,oy,0);
	ObjRender_SetPosition(score[0],ox+49,oy,0);

	while(ObjEnemyBossScene_GetInfo(scene,INFO_PLAYER_SPELL_COUNT)==0&&ObjEnemyBossScene_GetInfo(scene,INFO_PLAYER_SHOOTDOWN_COUNT)==0 && !Obj_IsDeleted(enemy)){
		i=0;
		let score1  = truncate((ObjEnemyBossScene_GetInfo(scene,INFO_SPELL_SCORE)%10));
		let score2  = truncate((ObjEnemyBossScene_GetInfo(scene,INFO_SPELL_SCORE)%100)/10);
		let score3  = truncate((ObjEnemyBossScene_GetInfo(scene,INFO_SPELL_SCORE)%1000)/100);
		let score4  = truncate((ObjEnemyBossScene_GetInfo(scene,INFO_SPELL_SCORE)%10000)/1000);
		let score5  = truncate((ObjEnemyBossScene_GetInfo(scene,INFO_SPELL_SCORE)%100000)/10000);
		let score6  = truncate((ObjEnemyBossScene_GetInfo(scene,INFO_SPELL_SCORE)%1000000)/100000);
		let score7  = truncate((ObjEnemyBossScene_GetInfo(scene,INFO_SPELL_SCORE)%10000000)/1000000);
		let score8  = truncate((ObjEnemyBossScene_GetInfo(scene,INFO_SPELL_SCORE)%100000000)/10000000);

                if(ObjEnemyBossScene_GetInfo(scene,INFO_SPELL_SCORE) >= 100000000){
                score1 = 9;
                score2 = 9;
                score3 = 9;
                score4 = 9;
                score5 = 9;
                score6 = 9;
                score7 = 9;
                score8 = 9;
                }

		if(score8<=0) {
			ObjRender_SetPosition(score[7],-128,-128,0);
			if(score7<=0) {
				ObjRender_SetPosition(score[6],-128,-128,0);
				if(score6<=0) {
					ObjRender_SetPosition(score[5],-128,-128,0);
					if(score5<=0) {
						ObjRender_SetPosition(score[4],-128,-128,0);
						if(score4<=0) {
							ObjRender_SetPosition(score[3],-128,-128,0);
							if(score3<=0) {
								ObjRender_SetPosition(score[2],-128,-128,0);
								if(score2<=0) {
									ObjRender_SetPosition(score[1],-128,-128,0);
								}
							}
						}
					}
				}
			}
		}
		if(alpha<255) { alpha += 10; }
		if(GetPlayerY<=128) { alpha=128; }

	        ObjPrim_SetVertexColor(bonus,0,255,255,255);
	        ObjPrim_SetVertexColor(bonus,1,255,255,255);
	        ObjPrim_SetVertexColor(bonus,2,255,255,255);
	        ObjPrim_SetVertexColor(bonus,3,255,255,255);
	        ObjPrim_SetVertexAlpha(bonus,0,alpha);
	        ObjPrim_SetVertexAlpha(bonus,1,alpha);
	        ObjPrim_SetVertexAlpha(bonus,2,alpha);
	        ObjPrim_SetVertexAlpha(bonus,3,alpha);
		loop(8){
		        ObjPrim_SetVertexColor(score[i],0,255,255,255);
		        ObjPrim_SetVertexColor(score[i],1,255,255,255);
		        ObjPrim_SetVertexColor(score[i],2,255,255,255);
		        ObjPrim_SetVertexColor(score[i],3,255,255,255);
		        ObjPrim_SetVertexAlpha(score[i],0,alpha);
		        ObjPrim_SetVertexAlpha(score[i],1,alpha);
		        ObjPrim_SetVertexAlpha(score[i],2,alpha);
		        ObjPrim_SetVertexAlpha(score[i],3,alpha);
			i++;
		}
		ObjPrim_SetVertexUVT(score[0],0,rect01[score1],192);
		ObjPrim_SetVertexUVT(score[0],1,rect01[score1],208);
		ObjPrim_SetVertexUVT(score[0],2,rect02[score1],192);
		ObjPrim_SetVertexUVT(score[0],3,rect02[score1],208);
		ObjPrim_SetVertexUVT(score[1],0,rect01[score2],192);
		ObjPrim_SetVertexUVT(score[1],1,rect01[score2],208);
		ObjPrim_SetVertexUVT(score[1],2,rect02[score2],192);
		ObjPrim_SetVertexUVT(score[1],3,rect02[score2],208);
		ObjPrim_SetVertexUVT(score[2],0,rect01[score3],192);
		ObjPrim_SetVertexUVT(score[2],1,rect01[score3],208);
		ObjPrim_SetVertexUVT(score[2],2,rect02[score3],192);
		ObjPrim_SetVertexUVT(score[2],3,rect02[score3],208);
		ObjPrim_SetVertexUVT(score[3],0,rect01[score4],192);
		ObjPrim_SetVertexUVT(score[3],1,rect01[score4],208);
		ObjPrim_SetVertexUVT(score[3],2,rect02[score4],192);
		ObjPrim_SetVertexUVT(score[3],3,rect02[score4],208);
		ObjPrim_SetVertexUVT(score[4],0,rect01[score5],192);
		ObjPrim_SetVertexUVT(score[4],1,rect01[score5],208);
		ObjPrim_SetVertexUVT(score[4],2,rect02[score5],192);
		ObjPrim_SetVertexUVT(score[4],3,rect02[score5],208);
		ObjPrim_SetVertexUVT(score[5],0,rect01[score6],192);
		ObjPrim_SetVertexUVT(score[5],1,rect01[score6],208);
		ObjPrim_SetVertexUVT(score[5],2,rect02[score6],192);
		ObjPrim_SetVertexUVT(score[5],3,rect02[score6],208);
		ObjPrim_SetVertexUVT(score[6],0,rect01[score7],192);
		ObjPrim_SetVertexUVT(score[6],1,rect01[score7],208);
		ObjPrim_SetVertexUVT(score[6],2,rect02[score7],192);
		ObjPrim_SetVertexUVT(score[6],3,rect02[score7],208);
		ObjPrim_SetVertexUVT(score[7],0,rect01[score8],192);
		ObjPrim_SetVertexUVT(score[7],1,rect01[score8],208);
		ObjPrim_SetVertexUVT(score[7],2,rect02[score8],192);
		ObjPrim_SetVertexUVT(score[7],3,rect02[score8],208);
		yield;
	}
	Obj_Delete(score[0]);
	Obj_Delete(score[1]);
	Obj_Delete(score[2]);
	Obj_Delete(score[3]);
	Obj_Delete(score[4]);
	Obj_Delete(score[5]);
	Obj_Delete(score[6]);
	ObjRender_SetPosition(score[7],ObjRender_GetX(bonus)+50,ObjRender_GetY(bonus),0);
	ObjPrim_SetVertexPosition(score[7],0,-24, -8,0);
	ObjPrim_SetVertexPosition(score[7],1,-24,  8,0);
	ObjPrim_SetVertexPosition(score[7],2, 24, -8,0);
	ObjPrim_SetVertexPosition(score[7],3, 24,  8,0);
	ObjPrim_SetVertexUVT(score[7],0,  0,176);
	ObjPrim_SetVertexUVT(score[7],1,  0,192);
	ObjPrim_SetVertexUVT(score[7],2, 48,176);
	ObjPrim_SetVertexUVT(score[7],3, 48,192);
	while(!Obj_IsDeleted(enemy)) {
		if(alpha<255) { alpha += 10; }
		if(GetPlayerY<=128) { alpha=128; }

	        ObjPrim_SetVertexColor(bonus,0,255,255,255);
	        ObjPrim_SetVertexColor(bonus,1,255,255,255);
	        ObjPrim_SetVertexColor(bonus,2,255,255,255);
	        ObjPrim_SetVertexColor(bonus,3,255,255,255);
	        ObjPrim_SetVertexAlpha(bonus,0,alpha);
	        ObjPrim_SetVertexAlpha(bonus,1,alpha);
	        ObjPrim_SetVertexAlpha(bonus,2,alpha);
	        ObjPrim_SetVertexAlpha(bonus,3,alpha);
	        ObjPrim_SetVertexColor(score[7],0,255,255,255);
	        ObjPrim_SetVertexColor(score[7],1,255,255,255);
	        ObjPrim_SetVertexColor(score[7],2,255,255,255);
	        ObjPrim_SetVertexColor(score[7],3,255,255,255);
	        ObjPrim_SetVertexAlpha(score[7],0,alpha);
	        ObjPrim_SetVertexAlpha(score[7],1,alpha);
	        ObjPrim_SetVertexAlpha(score[7],2,alpha);
	        ObjPrim_SetVertexAlpha(score[7],3,alpha);
		yield;
	}
        Obj_Delete(bonus);
        ascent(k in 0..8){Obj_Delete(score[k]);}
}

//-----------------------------------------------------------------------
//  XyJ[h񐔂̕\ [th10`th14]
//-----------------------------------------------------------------------
task History(type,Take,Try) {

	let history		= ObjPrim_Create(OBJ_PRIMITIVE_2D);
	let slash		= ObjPrim_Create(OBJ_PRIMITIVE_2D);
	let nam			= [ObjPrim_Create(OBJ_PRIMITIVE_2D),ObjPrim_Create(OBJ_PRIMITIVE_2D),ObjPrim_Create(OBJ_PRIMITIVE_2D),ObjPrim_Create(OBJ_PRIMITIVE_2D)];
	let rect01		= [ 7,15,23,31,39,47,55,63,71,79];
	let rect02		= [15,23,31,39,47,55,63,71,79,87];
	let alpha		= 0;
	let i			= 0;

        let cx = GetStgFrameWidth/2;
        let cy = GetStgFrameHeight/2;
        let enemy       = GetEnemyBossObjectID[0];
	let scene       = GetEnemyBossSceneObjectID();
	
	LoadTexture(imgspelleffect);

	/*****************************************************************
		type 0FdX@
		type 1Fi鏴@_^@na@@D@d푈
		type 2F__@Pj
	*****************************************************************/

	ObjRender_SetPosition(history,cx,cy,0);
//	Obj_SetSpeed(history,0);
//	Obj_SetAngle(history,0);
	ObjPrim_SetTexture(history,imgspelleffect);
	ObjRender_SetBlendType(history,BLEND_ALPHA);
	ObjPrim_SetPrimitiveType(history,PRIMITIVE_TRIANGLESTRIP);
	ObjRender_SetScaleXYZ(history,1,1,1);
	Obj_SetRenderPriorityI(history,70);
	ObjPrim_SetVertexCount(history,4);
	ObjPrim_SetVertexPosition(history,0,-24, -8,0);
	ObjPrim_SetVertexPosition(history,1,-24,  8,0);
	ObjPrim_SetVertexPosition(history,2, 24, -8,0);
	ObjPrim_SetVertexPosition(history,3, 24,  8,0);
	ObjPrim_SetVertexUVT(history,0, 48,160);
	ObjPrim_SetVertexUVT(history,1, 48,176);
	ObjPrim_SetVertexUVT(history,2, 96,160);
	ObjPrim_SetVertexUVT(history,3, 96,176);
	ObjPrim_SetVertexColor(history,0,255,255,255);
	ObjPrim_SetVertexColor(history,1,255,255,255);
	ObjPrim_SetVertexColor(history,2,255,255,255);
	ObjPrim_SetVertexColor(history,3,255,255,255);
	ObjPrim_SetVertexAlpha(history,0,alpha);
	ObjPrim_SetVertexAlpha(history,1,alpha);
	ObjPrim_SetVertexAlpha(history,2,alpha);
	ObjPrim_SetVertexAlpha(history,3,alpha);

	ObjRender_SetPosition(slash,cx,cy,0);
//	Obj_SetSpeed(slash,0);
//	Obj_SetAngle(slash,0);
	ObjPrim_SetTexture(slash,imgspelleffect);
	ObjRender_SetBlendType(slash,BLEND_ALPHA);
	ObjPrim_SetPrimitiveType(slash,PRIMITIVE_TRIANGLESTRIP);
	ObjRender_SetScaleXYZ(slash,1,1,1);
	Obj_SetRenderPriorityI(slash,70);
	ObjPrim_SetVertexCount(slash,4);
	ObjPrim_SetVertexPosition(slash,0,-4, -8,0);
	ObjPrim_SetVertexPosition(slash,1,-4,  8,0);
	ObjPrim_SetVertexPosition(slash,2, 4, -8,0);
	ObjPrim_SetVertexPosition(slash,3, 4,  8,0);
	ObjPrim_SetVertexUVT(slash,0, 87,192);
	ObjPrim_SetVertexUVT(slash,1, 87,208);
	ObjPrim_SetVertexUVT(slash,2, 95,192);
	ObjPrim_SetVertexUVT(slash,3, 95,208);
	ObjPrim_SetVertexColor(slash,0,255,255,255);
	ObjPrim_SetVertexColor(slash,1,255,255,255);
	ObjPrim_SetVertexColor(slash,2,255,255,255);
	ObjPrim_SetVertexColor(slash,3,255,255,255);
	ObjPrim_SetVertexAlpha(slash,0,alpha);
	ObjPrim_SetVertexAlpha(slash,1,alpha);
	ObjPrim_SetVertexAlpha(slash,2,alpha);
	ObjPrim_SetVertexAlpha(slash,3,alpha);

	loop(4){
		ObjRender_SetPosition(nam[i],cx,cy,0);
		ObjPrim_SetTexture(nam[i],imgspelleffect);
		ObjRender_SetBlendType(nam[i],BLEND_ALPHA);
		ObjPrim_SetPrimitiveType(nam[i],PRIMITIVE_TRIANGLESTRIP);
		ObjRender_SetScaleXYZ(nam[i],1,1,1);
		Obj_SetRenderPriorityI(nam[i],70);
		ObjPrim_SetVertexCount(nam[i],4);
		ObjPrim_SetVertexPosition(nam[i],0,-4, -8,0);
		ObjPrim_SetVertexPosition(nam[i],1,-4,  8,0);
		ObjPrim_SetVertexPosition(nam[i],2, 4, -8,0);
		ObjPrim_SetVertexPosition(nam[i],3, 4,  8,0);
		ObjPrim_SetVertexColor(nam[i],0,255,255,255);
		ObjPrim_SetVertexColor(nam[i],1,255,255,255);
		ObjPrim_SetVertexColor(nam[i],2,255,255,255);
		ObjPrim_SetVertexColor(nam[i],3,255,255,255);
		ObjPrim_SetVertexAlpha(nam[i],0,alpha);
		ObjPrim_SetVertexAlpha(nam[i],1,alpha);
		ObjPrim_SetVertexAlpha(nam[i],2,alpha);
		ObjPrim_SetVertexAlpha(nam[i],3,alpha);
		i++;
	}

	let ox = 336;
	let oy = 2*cy-398;

	if(type==2) { oy -= 20; }

	ObjRender_SetPosition(history,ox-22,oy,0);
	ObjRender_SetPosition(slash  ,ox+14,oy,0);
	ObjRender_SetPosition(nam[3] ,ox+21,oy,0);
	ObjRender_SetPosition(nam[2] ,ox+28,oy,0);
	ObjRender_SetPosition(nam[1] ,ox   ,oy,0);
	ObjRender_SetPosition(nam[0] ,ox+ 7,oy,0);

	loop(120) { yield; }
	while(Try<100 && !Obj_IsDeleted(enemy)) {
		i=0;
		let nam1  = truncate((Take%10));
		let nam2  = truncate((Take%100)/10);
		let nam3  = truncate((Try%10));
		let nam4  = truncate((Try%100)/10);

		if(alpha<255) { alpha += 10; }
		if(GetPlayerY<=128) { alpha=128; }

		ObjPrim_SetVertexColor(history,0,255,255,255);
		ObjPrim_SetVertexColor(history,1,255,255,255);
		ObjPrim_SetVertexColor(history,2,255,255,255);
		ObjPrim_SetVertexColor(history,3,255,255,255);
		ObjPrim_SetVertexAlpha(history,0,alpha);
		ObjPrim_SetVertexAlpha(history,1,alpha);
		ObjPrim_SetVertexAlpha(history,2,alpha);
		ObjPrim_SetVertexAlpha(history,3,alpha);
		ObjPrim_SetVertexColor(slash,0,255,255,255);
		ObjPrim_SetVertexColor(slash,1,255,255,255);
		ObjPrim_SetVertexColor(slash,2,255,255,255);
		ObjPrim_SetVertexColor(slash,3,255,255,255);
		ObjPrim_SetVertexAlpha(slash,0,alpha);
		ObjPrim_SetVertexAlpha(slash,1,alpha);
		ObjPrim_SetVertexAlpha(slash,2,alpha);
		ObjPrim_SetVertexAlpha(slash,3,alpha);
		loop(4){
		       ObjPrim_SetVertexColor(nam[i],0,255,255,255);
		       ObjPrim_SetVertexColor(nam[i],1,255,255,255);
		       ObjPrim_SetVertexColor(nam[i],2,255,255,255);
		       ObjPrim_SetVertexColor(nam[i],3,255,255,255);
		       ObjPrim_SetVertexAlpha(nam[i],0,alpha);
		       ObjPrim_SetVertexAlpha(nam[i],1,alpha);
		       ObjPrim_SetVertexAlpha(nam[i],2,alpha);
		       ObjPrim_SetVertexAlpha(nam[i],3,alpha);
			i++;
		}
		ObjPrim_SetVertexUVT(nam[0],0,rect01[nam1],192);
		ObjPrim_SetVertexUVT(nam[0],1,rect01[nam1],208);
		ObjPrim_SetVertexUVT(nam[0],2,rect02[nam1],192);
		ObjPrim_SetVertexUVT(nam[0],3,rect02[nam1],208);
		ObjPrim_SetVertexUVT(nam[1],0,rect01[nam2],192);
		ObjPrim_SetVertexUVT(nam[1],1,rect01[nam2],208);
		ObjPrim_SetVertexUVT(nam[1],2,rect02[nam2],192);
		ObjPrim_SetVertexUVT(nam[1],3,rect02[nam2],208);
		ObjPrim_SetVertexUVT(nam[2],0,rect01[nam3],192);
		ObjPrim_SetVertexUVT(nam[2],1,rect01[nam3],208);
		ObjPrim_SetVertexUVT(nam[2],2,rect02[nam3],192);
		ObjPrim_SetVertexUVT(nam[2],3,rect02[nam3],208);
		ObjPrim_SetVertexUVT(nam[3],0,rect01[nam4],192);
		ObjPrim_SetVertexUVT(nam[3],1,rect01[nam4],208);
		ObjPrim_SetVertexUVT(nam[3],2,rect02[nam4],192);
		ObjPrim_SetVertexUVT(nam[3],3,rect02[nam4],208);
		yield;
	}
	Obj_Delete(nam[3]);
	while(Take<100 && !Obj_IsDeleted(enemy)) {
		i=0;
		let nam1  = truncate((Take%10));
		let nam2  = truncate((Take%100)/10);

		if(alpha<255) { alpha += 10; }
		if(GetPlayerY<=128) { alpha=128; }

		ObjPrim_SetVertexColor(history,0,255,255,255);
		ObjPrim_SetVertexColor(history,1,255,255,255);
		ObjPrim_SetVertexColor(history,2,255,255,255);
		ObjPrim_SetVertexColor(history,3,255,255,255);
		ObjPrim_SetVertexAlpha(history,0,alpha);
		ObjPrim_SetVertexAlpha(history,1,alpha);
		ObjPrim_SetVertexAlpha(history,2,alpha);
		ObjPrim_SetVertexAlpha(history,3,alpha);
		ObjPrim_SetVertexColor(slash,0,255,255,255);
		ObjPrim_SetVertexColor(slash,1,255,255,255);
		ObjPrim_SetVertexColor(slash,2,255,255,255);
		ObjPrim_SetVertexColor(slash,3,255,255,255);
		ObjPrim_SetVertexAlpha(slash,0,alpha);
		ObjPrim_SetVertexAlpha(slash,1,alpha);
		ObjPrim_SetVertexAlpha(slash,2,alpha);
		ObjPrim_SetVertexAlpha(slash,3,alpha);
		loop(3){
		       ObjPrim_SetVertexColor(nam[i],0,255,255,255);
		       ObjPrim_SetVertexColor(nam[i],1,255,255,255);
		       ObjPrim_SetVertexColor(nam[i],2,255,255,255);
		       ObjPrim_SetVertexColor(nam[i],3,255,255,255);
		       ObjPrim_SetVertexAlpha(nam[i],0,alpha);
		       ObjPrim_SetVertexAlpha(nam[i],1,alpha);
		       ObjPrim_SetVertexAlpha(nam[i],2,alpha);
		       ObjPrim_SetVertexAlpha(nam[i],3,alpha);
			i++;
		}
		ObjPrim_SetVertexUVT(nam[0],0,rect01[nam1],192);
		ObjPrim_SetVertexUVT(nam[0],1,rect01[nam1],208);
		ObjPrim_SetVertexUVT(nam[0],2,rect02[nam1],192);
		ObjPrim_SetVertexUVT(nam[0],3,rect02[nam1],208);
		ObjPrim_SetVertexUVT(nam[1],0,rect01[nam2],192);
		ObjPrim_SetVertexUVT(nam[1],1,rect01[nam2],208);
		ObjPrim_SetVertexUVT(nam[1],2,rect02[nam2],192);
		ObjPrim_SetVertexUVT(nam[1],3,rect02[nam2],208);

		ObjRender_SetPosition(nam[2] ,ox+29,oy,0);
		ObjPrim_SetVertexPosition(nam[2],0,-24, -8,0);
		ObjPrim_SetVertexPosition(nam[2],1,-24,  8,0);
		ObjPrim_SetVertexPosition(nam[2],2, 24, -8,0);
		ObjPrim_SetVertexPosition(nam[2],3, 24,  8,0);
		ObjPrim_SetVertexUVT(nam[2],0, 96,176);
		ObjPrim_SetVertexUVT(nam[2],1, 96,192);
		ObjPrim_SetVertexUVT(nam[2],2,144,176);
		ObjPrim_SetVertexUVT(nam[2],3,144,192);
		yield;
	}
	Obj_Delete(nam[0]);
	Obj_Delete(nam[1]);
	Obj_Delete(nam[2]);
	ObjPrim_SetVertexPosition(slash,0,-24, -8,0);
	ObjPrim_SetVertexPosition(slash,1,-24,  8,0);
	ObjPrim_SetVertexPosition(slash,2, 24, -8,0);
	ObjPrim_SetVertexPosition(slash,3, 24,  8,0);
	ObjPrim_SetVertexUVT(slash,0, 48,176);
	ObjPrim_SetVertexUVT(slash,1, 48,192);
	ObjPrim_SetVertexUVT(slash,2, 96,176);
	ObjPrim_SetVertexUVT(slash,3, 96,192);
	while(!Obj_IsDeleted(enemy)) {
		if(alpha<255) { alpha += 10; }
		if(GetPlayerY<=128) { alpha=128; }

		ObjRender_SetPosition(slash,ox+20,oy,0);
		ObjPrim_SetVertexColor(history,0,255,255,255);
		ObjPrim_SetVertexColor(history,1,255,255,255);
		ObjPrim_SetVertexColor(history,2,255,255,255);
		ObjPrim_SetVertexColor(history,3,255,255,255);
		ObjPrim_SetVertexAlpha(history,0,alpha);
		ObjPrim_SetVertexAlpha(history,1,alpha);
		ObjPrim_SetVertexAlpha(history,2,alpha);
		ObjPrim_SetVertexAlpha(history,3,alpha);
		ObjPrim_SetVertexColor(slash,0,255,255,255);
		ObjPrim_SetVertexColor(slash,1,255,255,255);
		ObjPrim_SetVertexColor(slash,2,255,255,255);
		ObjPrim_SetVertexColor(slash,3,255,255,255);
		ObjPrim_SetVertexAlpha(slash,0,alpha);
		ObjPrim_SetVertexAlpha(slash,1,alpha);
		ObjPrim_SetVertexAlpha(slash,2,alpha);
		ObjPrim_SetVertexAlpha(slash,3,alpha);
		yield;
	}	
        Obj_Delete(history);
        Obj_Delete(slash);
        Obj_Delete(nam[0]);
	Obj_Delete(nam[1]);
	Obj_Delete(nam[2]);
        Obj_Delete(nam[3]);
}
