let imgBIGCIRCLE = GetCurrentScriptDirectory~ "img\Circle_Hex.png";

let imgDSCutIn_1     = GetCurrentScriptDirectory ~ "img\DSCutIn_Effect.png";
	let imgDSCutIn_2     = GetCurrentScriptDirectory ~ "img\DSCutIn_Text.png";
        
	LoadGraphic(imgDSCutIn_1);
	LoadGraphic(imgDSCutIn_2);

function SetDSCutin(Texture1) {
		Effect1;
		Effect2;

		task Effect1 {
			let Obj = Obj_Create(OBJ_EFFECT);

			let alpha  = 0;
			let scaleX = 3;
			let scaleY = 0;

			Obj_SetPosition(Obj, GetCenterX + 256*cos(157.5), GetCenterY + 256*sin(157.5));
			ObjEffect_SetTexture(Obj, imgDSCutIn_1);
			ObjEffect_SetRenderState(Obj, ALPHA);
			ObjEffect_SetPrimitiveType(Obj, PRIMITIVE_TRIANGLESTRIP);
			ObjEffect_SetAngle(Obj, 0, 0, -22.5);
			ObjEffect_SetScale(Obj, scaleX, scaleY);
			ObjEffect_SetLayer(Obj, 4);

			ObjEffect_CreateVertex(Obj, 4);
			ObjEffect_SetVertexXY(Obj, 0,    0, - 40);
			ObjEffect_SetVertexXY(Obj, 1,    0,   40);
			ObjEffect_SetVertexXY(Obj, 2,  512, - 40);
			ObjEffect_SetVertexXY(Obj, 3,  512,   40);

			ObjEffect_SetVertexUV(Obj, 0,   0,   0);
			ObjEffect_SetVertexUV(Obj, 1,   0,  80);
			ObjEffect_SetVertexUV(Obj, 2, 512,   0);
			ObjEffect_SetVertexUV(Obj, 3, 512,  80);

			ObjEffect_SetVertexColor(Obj, 0, alpha, 255, 255, 255);
			ObjEffect_SetVertexColor(Obj, 1, alpha, 255, 255, 255);
			ObjEffect_SetVertexColor(Obj, 2, alpha, 255, 255, 255);
			ObjEffect_SetVertexColor(Obj, 3, alpha, 255, 255, 255);

			loop(10) {
				scaleX -= 2/10;
				scaleY += 1/10;
				alpha  += 255/10;

				ObjEffect_SetScale(Obj, scaleX, scaleY);
				ObjEffect_SetVertexColor(Obj, 0, alpha, 255, 255, 255);
				ObjEffect_SetVertexColor(Obj, 1, alpha, 255, 255, 255);
				ObjEffect_SetVertexColor(Obj, 2, alpha, 255, 255, 255);
				ObjEffect_SetVertexColor(Obj, 3, alpha, 255, 255, 255);
				yield;
			}

			Obj_SetPosition(Obj, GetCenterX + 256*cos(-22.5), GetCenterY + 256*sin(-22.5));
			ObjEffect_SetVertexXY(Obj, 0, -512, - 40);
			ObjEffect_SetVertexXY(Obj, 1, -512,   40);
			ObjEffect_SetVertexXY(Obj, 2,    0, - 40);
			ObjEffect_SetVertexXY(Obj, 3,    0,   40);
			wait(35);

			loop(10) {
				scaleX += 2/10;
				scaleY -= 1/10;
				alpha  -= 255/10;

				ObjEffect_SetScale(Obj, scaleX, scaleY);
				ObjEffect_SetVertexColor(Obj, 0, alpha, 255, 255, 255);
				ObjEffect_SetVertexColor(Obj, 1, alpha, 255, 255, 255);
				ObjEffect_SetVertexColor(Obj, 2, alpha, 255, 255, 255);
				ObjEffect_SetVertexColor(Obj, 3, alpha, 255, 255, 255);
				yield;
			}

			Obj_Delete(Obj);
		}

		task Effect2 {
			let Obj = Obj_Create(OBJ_EFFECT);

			let scaleX = 3;
			let scaleY = 0;

			Obj_SetPosition(Obj, GetCenterX-192, GetCenterY);
			ObjEffect_SetTexture(Obj, Texture1);
			ObjEffect_SetRenderState(Obj, ALPHA);
			ObjEffect_SetPrimitiveType(Obj, PRIMITIVE_TRIANGLESTRIP);
			ObjEffect_SetAngle(Obj, 0, 0, 0);
			ObjEffect_SetScale(Obj, scaleX, scaleY);
			ObjEffect_SetLayer(Obj, 5);

			ObjEffect_CreateVertex(Obj, 4);
			ObjEffect_SetVertexXY(Obj, 0,    0, - 32);
			ObjEffect_SetVertexXY(Obj, 1,    0,   32);
			ObjEffect_SetVertexXY(Obj, 2,  384, - 32);
			ObjEffect_SetVertexXY(Obj, 3,  384,   32);

			ObjEffect_SetVertexUV(Obj, 0,   0,   0);
			ObjEffect_SetVertexUV(Obj, 1,   0,  64);
			ObjEffect_SetVertexUV(Obj, 2, 384,   0);
			ObjEffect_SetVertexUV(Obj, 3, 384,  64);

			loop(10) {
				scaleX -= 2/10;
				scaleY += 1/10;

				ObjEffect_SetScale(Obj, scaleX, scaleY);
				yield;
			}

			Obj_SetPosition(Obj, GetCenterX+192, GetCenterY);
			ObjEffect_SetVertexXY(Obj, 0, -384, - 40);
			ObjEffect_SetVertexXY(Obj, 1, -384,   40);
			ObjEffect_SetVertexXY(Obj, 2,    0, - 40);
			ObjEffect_SetVertexXY(Obj, 3,    0,   40);
			wait(35);

			loop(10) {
				scaleX += 2/10;
				scaleY -= 1/10;

				ObjEffect_SetScale(Obj, scaleX, scaleY);
				yield;
			}

			Obj_Delete(Obj);
		}
	}

sub boss_magic_circle
{
	effect_circle(imgBIGCIRCLE, 255, 255, 0, 0);
}

task effect_circle(graphic, c_alpha, c_red, c_green, c_blue)
{
	//ݒ
	let obj = Obj_Create(OBJ_EFFECT);
	ObjEffect_SetTexture(obj, graphic);
	ObjEffect_SetRenderState(obj, ADD);
	ObjEffect_SetLayer(obj, 2);
	ObjEffect_SetPrimitiveType(obj, PRIMITIVE_TRIANGLEFAN);
	ObjEffect_CreateVertex(obj, 4);
	ObjEffect_SetVertexUV(obj, 0,   0,   0);
	ObjEffect_SetVertexUV(obj, 1, 256,   0);
	ObjEffect_SetVertexUV(obj, 2, 256, 256);
	ObjEffect_SetVertexUV(obj, 3,   0, 256);
	ObjEffect_SetVertexXY(obj, 0,-75,-75);
	ObjEffect_SetVertexXY(obj, 1, 75,-75);
	ObjEffect_SetVertexXY(obj, 2, 75, 75);
	ObjEffect_SetVertexXY(obj, 3,-75, 75);
	ascent (let n in 0 .. 4)
	{
		ObjEffect_SetVertexColor(obj, n, c_alpha, c_red, c_green, c_blue);
	}

	
	//ƃ[ṽ^[
	let t = 0;
	let angle = 0; let scale = 0;
	
	loop(20)
	{
		scale += 0.05;
		ObjEffect_SetScale(obj, scale, scale);
		Obj_SetPosition(obj, GetX, GetY);
		
		yield;
	}
	loop
	{
		ObjEffect_SetScale(obj, scale, scale);
		ObjEffect_SetAngle(obj, 0, 0, angle);
		Obj_SetPosition(obj, GetX, GetY);
		
		scale += sin(t)/60;
		angle -= 5;
		
		t+=3; angle %= 360;
		yield;
	}
	Obj_Delete(obj);
}

function wait(w){
		loop(w){ yield; }
	}

task FireworksLaser(x,y,speed,angle,length,width,type,time,delay){
let obj=Obj_Create(OBJ_SINUATE_LASER);
let i=0;
let j=0;
let p=0;
let q=0;
Obj_SetX(obj,x);
Obj_SetY(obj,y);
Obj_SetSpeed(obj,speed);
Obj_SetAngle(obj,angle);
ObjShot_SetDelay(obj,delay);
ObjShot_SetBombResist(obj,true);
ObjShot_SetGraphic(obj,type);
ObjSinuateLaser_SetLength(obj,length);
ObjSinuateLaser_SetWidth(obj,width);
loop(time){
loop(6){
p+=5;
Obj_SetAngle(obj,angle+p);
wait(1);
}
loop(6){
Obj_SetAngle(obj,angle-q);
q+=5;
wait(1);
}
p=0;
q=0;
wait(1);
}
Obj_SetAngle(obj,angle);
loop(80){
Obj_SetSpeed(obj,speed-i);
ObjSinuateLaser_SetLength(obj,length-j);
i+=0.05;
j+=0.1;
wait(1);
}
Obj_Delete(obj);
}

task FireWorksShot(x,y,speed,speed2,angle,angle2,type,delay,time,time2){
let obj1 = Obj_Create(OBJ_SHOT);
let i=0;
let j=0;
Obj_SetX(obj1, x);
Obj_SetY(obj1, y);
Obj_SetSpeed(obj1, speed);
Obj_SetAngle(obj1, angle);
ObjShot_SetDelay(obj1, delay);
ObjShot_SetGraphic(obj1, type);
wait(time);
Obj_SetSpeed(obj1, 0);
wait(time2);
PlaySE(suzuSE);
Obj_SetSpeed(obj1, speed2);
Obj_SetAngle(obj1, angle2);
}

task FireWorksShot2(x,y,speed,speed2,angle,angle2,type,delay,time,time2,time3){
let obj1 = Obj_Create(OBJ_SHOT);
let i=0;
let j=0;
let p=0;
let q=0;
Obj_SetX(obj1, x);
Obj_SetY(obj1, y);
Obj_SetSpeed(obj1, speed);
Obj_SetAngle(obj1, angle);
ObjShot_SetDelay(obj1, delay);
ObjShot_SetGraphic(obj1, type);
wait(time);
Obj_SetSpeed(obj1, 0);
wait(time2);
PlaySE(suzuSE);
Obj_SetSpeed(obj1, speed2);
Obj_SetAngle(obj1, angle2);
wait(time3);
PlaySE(suzuSE);
p=Obj_GetX(obj1);
q=Obj_GetY(obj1);
Obj_Delete(obj1);
loop(8){
Childshot(p,q,rand(0,0.5),rand(0,360),132,30);
}
}

task Childshot(x,y,speed,angle,type,delay){
let obj2 = Obj_Create(OBJ_SHOT);
let i=0;
let j=0;
Obj_SetX(obj2, x);
Obj_SetY(obj2, y);
Obj_SetSpeed(obj2, speed);
Obj_SetAngle(obj2, angle);
ObjShot_SetDelay(obj2, delay);
ObjShot_SetGraphic(obj2, type);
loop{
Obj_SetSpeed(obj2, speed+i);
i+=0.005;
wait(1);
}
}

task FireWorksShot3(x,y,speed,speed2,angle,angle2,type,delay,time,time2,time3){
let obj1 = Obj_Create(OBJ_SHOT);
let i=0;
let j=0;
let p=0;
let q=0;
Obj_SetX(obj1, x);
Obj_SetY(obj1, y);
Obj_SetSpeed(obj1, speed);
Obj_SetAngle(obj1, angle);
ObjShot_SetDelay(obj1, delay);
ObjShot_SetGraphic(obj1, type);
wait(time);
Obj_SetSpeed(obj1, 0);
wait(time2);
PlaySE(suzuSE);
Obj_SetSpeed(obj1, speed2);
Obj_SetAngle(obj1, angle2);
wait(time3);
PlaySE(suzuSE);
p=Obj_GetX(obj1);
q=Obj_GetY(obj1);
Obj_Delete(obj1);
loop(4){
Childshot(p,q,0,rand(0,360),132,30);
}
}
#include_function ".\ϐW.txt"