task NuclearShot(type,x,y,nangle,speed,maxscale,distance,minscale,color,kill,bomb){
/*
type@1:ʔˌ^@2:GǏ]]^@3:kˌ^
xy@@ݒuWorˍW
nangl ˎpx(type2̏ꍇ͏)
speed x(type2̏ꍇ͉]xB-1Ȃt]ɂȂA_Ȃ猸)
mxsc@ő̑傫
dista Ǐ]]̓G̋(type2ȊȌꍇ0w肷鎖)
misc@ŏ̑傫(type3ȊȌꍇ0w肷鎖)
color Fw(""t鎖)
kill  ȍŏ(}CiXwŏłȂ)
bomb  {ϐ
*/
let nuff2 = Obj_Create(OBJ_EFFECT);
let nuff  = Obj_Create(OBJ_EFFECT);
let shff  = Obj_Create(OBJ_SHOT);
let img   = GetCurrentScriptDirectory~".\enm3img\Nuclear.png";
let uv1   = [0,256,512,768,0,256,512,768];
let uv2   = [0,0,0,0,256,256,256,256];
let uv3   = [256,512,768,1024,256,512,768,1024];
let uv4   = [256,256,256,256,512,512,512,512];
//01234567
let colorC;

let r=255;
let g=255;
let b=255;
let scale = 0;
let scp   = 0;
let killC = 0;
let distanceC = 0;
let grazeF = false;

LoadGraphic(img);

alternative(color)
case("RED"){colorC=0}
case("ORANGE"){colorC=1}
case("YELLOW"){colorC=2}
case("GREEN"){colorC=3}
case("AQUA"){colorC=4}
case("BLUE"){colorC=5}
case("PURPLE"){colorC=6}
case("WHITE"){colorC=7}

Obj_SetPosition(nuff,Obj_GetX(shff),Obj_GetY(shff));
ObjEffect_SetTexture(nuff,img);
ObjEffect_SetRenderState(nuff,ADD);
ObjEffect_SetPrimitiveType(nuff,PRIMITIVE_TRIANGLESTRIP);
ObjEffect_SetScale(nuff,scale,scale);
Obj_SetSpeed(nuff,0);
Obj_SetAngle(nuff,nangle);
ObjEffect_SetAngle(nuff,0,0,nangle);
ObjEffect_SetLayer(nuff,3);
ObjEffect_CreateVertex(nuff,4);
ObjEffect_SetVertexXY(nuff,0,-128,-128);
ObjEffect_SetVertexXY(nuff,1,-128,128);
ObjEffect_SetVertexXY(nuff,2,128,-128);
ObjEffect_SetVertexXY(nuff,3,128,128);
ObjEffect_SetVertexColor(nuff,0,125,r,g,b);
ObjEffect_SetVertexColor(nuff,1,125,r,g,b);
ObjEffect_SetVertexColor(nuff,2,125,r,g,b);
ObjEffect_SetVertexColor(nuff,3,125,r,g,b);
ObjEffect_SetVertexUV(nuff,0,uv1[colorC],uv2[colorC]);
ObjEffect_SetVertexUV(nuff,1,uv1[colorC],uv4[colorC]);
ObjEffect_SetVertexUV(nuff,2,uv3[colorC],uv2[colorC]);
ObjEffect_SetVertexUV(nuff,3,uv3[colorC],uv4[colorC]);

Obj_SetPosition(nuff2,Obj_GetX(shff),Obj_GetY(shff));
ObjEffect_SetTexture(nuff2,img);
ObjEffect_SetRenderState(nuff2,ADD);
ObjEffect_SetPrimitiveType(nuff2,PRIMITIVE_TRIANGLESTRIP);
ObjEffect_SetScale(nuff2,scale,scale);
Obj_SetSpeed(nuff2,0);
Obj_SetAngle(nuff2,nangle);
ObjEffect_SetAngle(nuff2,0,0,nangle);
ObjEffect_SetLayer(nuff2,3);
ObjEffect_CreateVertex(nuff2,4);
ObjEffect_SetVertexXY(nuff2,0,-128,-128);
ObjEffect_SetVertexXY(nuff2,1,-128,128);
ObjEffect_SetVertexXY(nuff2,2,128,-128);
ObjEffect_SetVertexXY(nuff2,3,128,128);
ObjEffect_SetVertexColor(nuff2,0,125,r,g,b);
ObjEffect_SetVertexColor(nuff2,1,125,r,g,b);
ObjEffect_SetVertexColor(nuff2,2,125,r,g,b);
ObjEffect_SetVertexColor(nuff2,3,125,r,g,b);
ObjEffect_SetVertexUV(nuff2,0,uv1[colorC],uv2[colorC]);
ObjEffect_SetVertexUV(nuff2,1,uv1[colorC],uv4[colorC]);
ObjEffect_SetVertexUV(nuff2,2,uv3[colorC],uv2[colorC]);
ObjEffect_SetVertexUV(nuff2,3,uv3[colorC],uv4[colorC]);

Obj_SetPosition(shff,x,y);
Obj_SetSpeed(shff,speed);
Obj_SetAngle(shff,nangle);
Obj_SetAlpha(shff,0);
Obj_SetCollisionToPlayer(shff,false);
Obj_SetAutoDelete(shff,false);
ObjShot_SetBombResist(shff,bomb);
ObjShot_SetGraphic(shff,WHITE01);

loop(15){
Obj_SetPosition(nuff,Obj_GetX(shff),Obj_GetY(shff));
Obj_SetPosition(nuff2,Obj_GetX(shff),Obj_GetY(shff));
if(type!=2){
scale+=(maxscale/15);
ObjEffect_SetScale(nuff,scale,scale);
ObjEffect_SetScale(nuff2,scale,scale)}
if(type==3){
Obj_SetSpeed(shff,speed)}

yield;
}

loop{
let gnx = Obj_GetX(nuff);
let gny = Obj_GetY(nuff);
let gsx = Obj_GetX(shff);
let gsy = Obj_GetY(shff);

Obj_SetPosition(nuff,Obj_GetX(shff),Obj_GetY(shff));
Obj_SetPosition(nuff2,Obj_GetX(shff),Obj_GetY(shff));


if(type==2&&maxscale>scale){
scale+=(maxscale/500);
ObjEffect_SetScale(nuff,scale,scale);
ObjEffect_SetScale(nuff2,scale,scale)}
SetCollisionB(gsx,gsy,scale*120);

scp++;
ObjEffect_SetScale(nuff,scale+0.03*sin(scp*10),scale+0.03*sin(scp*10));

alternative(type)
case(1){
Obj_SetSpeed(shff,speed);
Obj_SetPosition(nuff2,gnx,gny)}
case(2){
if(distance>distanceC){distanceC++}
Obj_SetPosition(shff,GetEnemyX+distanceC*sin((nangle+scp/2)*speed),GetEnemyY+distanceC*cos((nangle+scp/2)*speed));
Obj_SetPosition(nuff,gsx,gsy);
Obj_SetPosition(nuff2,gsx,gsy)}
case(3){
Obj_SetSpeed(shff,speed);
Obj_SetPosition(nuff,gsx,gsy);
Obj_SetPosition(nuff2,gsx,gsy);
if(minscale<scale){scale-=0.005}
ObjEffect_SetScale(nuff,scale,scale);
ObjEffect_SetScale(nuff2,scale,scale)}

killC++;
if(killC>kill&&kill>=0){Obj_Delete(nuff);Obj_Delete(nuff2);Obj_Delete(shff)}

if(scale<=0){Obj_Delete(nuff);Obj_Delete(nuff2);Obj_Delete(shff)}

if(OnBomb==true&&bomb==false){Obj_Delete(nuff);Obj_Delete(nuff2);Obj_Delete(shff)}
if(type!=2){
if(gny>=MaxY+250||gny<=MinY-250||gnx>=MaxX+250||gny<=MinY-250){Obj_Delete(nuff);Obj_Delete(nuff2);Obj_Delete(shff)}}
if(Obj_BeDeleted(nuff)==true){break}

yield;
}
}

task NuclearShot2(type,x,y,nangle,speed,maxscale,distance,minscale,color,kill,bomb){
/*
type@1:ʔˌ^@2:GǏ]]^@3:kˌ^
xy@@ݒuWorˍW
nangl ˎpx(type2̏ꍇ͏)
speed x(type2̏ꍇ͉]xB-1Ȃt]ɂȂA_Ȃ猸)
mxsc@ő̑傫
dista Ǐ]]̓G̋(type2ȊȌꍇ0w肷鎖)
misc@ŏ̑傫(type3ȊȌꍇ0w肷鎖)
color Fw(""t鎖)
kill  ȍŏ(}CiXwŏłȂ)
bomb  {ϐ
*/
let nuff  = Obj_Create(OBJ_EFFECT);
let nuff2 = Obj_Create(OBJ_EFFECT);
let shff  = Obj_Create(OBJ_SHOT);
let img   = GetCurrentScriptDirectory~".\enm3img\Nuclear2.png";
let uv1   = [0,256,512,768,0,256,512,768];
let uv2   = [0,0,0,0,256,256,256,256];
let uv3   = [256,512,768,1024,256,512,768,1024];
let uv4   = [256,256,256,256,512,512,512,512];
//01234567
let colorC;

let r=0;
let g=0;
let b=0;
let scale = 0;
let scp   = 0;
let killC = 0;
let distanceC = 0;
let grazeF = false;

LoadGraphic(img);

alternative(color)
case("RED"){colorC=0}
case("ORANGE"){colorC=1}
case("YELLOW"){colorC=2}
case("GREEN"){colorC=3}
case("AQUA"){colorC=4}
case("BLUE"){colorC=5}
case("PURPLE"){colorC=6}
case("WHITE"){colorC=7}

Obj_SetPosition(nuff,Obj_GetX(shff),Obj_GetY(shff));
ObjEffect_SetTexture(nuff,img);
ObjEffect_SetRenderState(nuff,ALPHA);
ObjEffect_SetPrimitiveType(nuff,PRIMITIVE_TRIANGLESTRIP);
ObjEffect_SetScale(nuff,scale,scale);
Obj_SetSpeed(nuff,0);
Obj_SetAngle(nuff,nangle);
ObjEffect_SetAngle(nuff,0,0,nangle);
ObjEffect_SetLayer(nuff,3);
ObjEffect_CreateVertex(nuff,4);
ObjEffect_SetVertexXY(nuff,0,-128,-128);
ObjEffect_SetVertexXY(nuff,1,-128,128);
ObjEffect_SetVertexXY(nuff,2,128,-128);
ObjEffect_SetVertexXY(nuff,3,128,128);
ObjEffect_SetVertexColor(nuff,0,150,255,255,255);
ObjEffect_SetVertexColor(nuff,1,150,255,255,255);
ObjEffect_SetVertexColor(nuff,2,150,255,255,255);
ObjEffect_SetVertexColor(nuff,3,150,255,255,255);
ObjEffect_SetVertexUV(nuff,0,uv1[colorC],uv2[colorC]);
ObjEffect_SetVertexUV(nuff,1,uv1[colorC],uv4[colorC]);
ObjEffect_SetVertexUV(nuff,2,uv3[colorC],uv2[colorC]);
ObjEffect_SetVertexUV(nuff,3,uv3[colorC],uv4[colorC]);

Obj_SetPosition(nuff2,Obj_GetX(shff),Obj_GetY(shff));
ObjEffect_SetTexture(nuff2,img);
ObjEffect_SetRenderState(nuff2,ALPHA);
ObjEffect_SetPrimitiveType(nuff2,PRIMITIVE_TRIANGLESTRIP);
ObjEffect_SetScale(nuff2,scale,scale);
Obj_SetSpeed(nuff2,0);
Obj_SetAngle(nuff2,nangle);
ObjEffect_SetLayer(nuff2,3);
ObjEffect_CreateVertex(nuff2,4);
ObjEffect_SetVertexXY(nuff2,0,-128,-128);
ObjEffect_SetVertexXY(nuff2,1,-128,128);
ObjEffect_SetVertexXY(nuff2,2,128,-128);
ObjEffect_SetVertexXY(nuff2,3,128,128);
ObjEffect_SetVertexColor(nuff2,0,255,r,g,b);
ObjEffect_SetVertexColor(nuff2,1,255,r,g,b);
ObjEffect_SetVertexColor(nuff2,2,255,r,g,b);
ObjEffect_SetVertexColor(nuff2,3,255,r,g,b);
ObjEffect_SetVertexUV(nuff2,0,uv1[7],uv2[7]);
ObjEffect_SetVertexUV(nuff2,1,uv1[7],uv4[7]);
ObjEffect_SetVertexUV(nuff2,2,uv3[7],uv2[7]);
ObjEffect_SetVertexUV(nuff2,3,uv3[7],uv4[7]);

Obj_SetPosition(shff,x,y);
Obj_SetSpeed(shff,speed);
Obj_SetAngle(shff,nangle);
Obj_SetAlpha(shff,0);
Obj_SetCollisionToPlayer(shff,false);
Obj_SetAutoDelete(shff,false);
ObjShot_SetBombResist(shff,bomb);
ObjShot_SetGraphic(shff,WHITE01);

loop(15){
Obj_SetPosition(nuff,Obj_GetX(shff),Obj_GetY(shff));
Obj_SetPosition(nuff2,Obj_GetX(shff),Obj_GetY(shff));
if(type!=2){
scale+=(maxscale/15);
ObjEffect_SetScale(nuff,scale,scale);
ObjEffect_SetScale(nuff2,scale,scale)}
if(type==3){
Obj_SetSpeed(shff,speed)}

yield;
}

loop{
let gnx = Obj_GetX(nuff);
let gny = Obj_GetY(nuff);
let gsx = Obj_GetX(shff);
let gsy = Obj_GetY(shff);

Obj_SetPosition(nuff,Obj_GetX(shff),Obj_GetY(shff));
Obj_SetPosition(nuff2,Obj_GetX(shff),Obj_GetY(shff));


if(type==2&&maxscale>scale){
scale+=(maxscale/500);
ObjEffect_SetScale(nuff,scale,scale);
ObjEffect_SetScale(nuff2,scale,scale)}
SetCollisionB(gsx,gsy,scale*120);

scp++;
ObjEffect_SetScale(nuff,scale+0.02*sin(scp*10),scale+0.02*sin(scp*10));
ObjEffect_SetAngle(nuff,0,0,scp*-100);
ObjEffect_SetAngle(nuff2,0,0,scp*100);

alternative(type)
case(1){
Obj_SetSpeed(shff,speed);
Obj_SetPosition(nuff2,gnx,gny)}
case(2){
if(distance>distanceC){distanceC++}
Obj_SetPosition(shff,GetEnemyX+distanceC*sin((nangle+scp/2)*speed),GetEnemyY+distanceC*cos((nangle+scp/2)*speed));
Obj_SetPosition(nuff,gsx,gsy);
Obj_SetPosition(nuff2,gsx,gsy)}
case(3){
Obj_SetSpeed(shff,speed);
Obj_SetPosition(nuff,gsx,gsy);
Obj_SetPosition(nuff2,gsx,gsy);
if(minscale<scale){scale-=0.005}
ObjEffect_SetScale(nuff,scale,scale);
ObjEffect_SetScale(nuff2,scale,scale)}

killC++;
if(killC>kill&&kill>=0){Obj_Delete(nuff);Obj_Delete(nuff2);Obj_Delete(shff)}

if(scale<=0){Obj_Delete(nuff);Obj_Delete(nuff2);Obj_Delete(shff)}

if(OnBomb==true&&bomb==false){Obj_Delete(nuff);Obj_Delete(nuff2);Obj_Delete(shff)}
if(type!=2){
if(gny>=MaxY+250||gny<=MinY-250||gnx>=MaxX+250||gny<=MinY-250){Obj_Delete(nuff);Obj_Delete(nuff2);Obj_Delete(shff)}}
if(Obj_BeDeleted(nuff)==true){break}

yield;
}
}

task CompressionLaser(x,y,angle,pla,length,width,r,g,b,delay,kill,source){
let se       = GetCurrentScriptDirectory~".\enm3se\CLaser.wav";
let img      = GetCurrentScriptDirectory~".\enm3eff\laser_eff_add.png";
let las      = Obj_Create(OBJ_LASER);
let ef1      = Obj_Create(OBJ_EFFECT);
let ef2      = Obj_Create(OBJ_EFFECT);
let delete   = false;
let killf    = 0;
let alpha    = 255;
let length_l = 0;
let length_e = 0;
let scax     = 0.15;
let delay_e  = 0;
let cc       = 0;
let pap      = 0;

LoadGraphic(img);

Obj_SetPosition(las,x,y);
Obj_SetAngle(las,angle);
Obj_SetAutoDelete(las,false);
Obj_SetAlpha(las,0);
ObjShot_SetDelay(las,delay);
ObjShot_SetBombResist(las,true);
ObjShot_SetGraphic(las,kRED41);
ObjLaser_SetWidth(las,width);
ObjLaser_SetSource(las,false);

Obj_SetPosition(ef1,x,y);
ObjEffect_SetTexture(ef1,img);
ObjEffect_SetRenderState(ef1,ADD);
ObjEffect_SetPrimitiveType(ef1,PRIMITIVE_TRIANGLESTRIP);
ObjEffect_SetAngle(ef1,0,0,angle-90);
ObjEffect_SetLayer(ef1,3);
ObjEffect_CreateVertex(ef1,4);
ObjEffect_SetVertexUV(ef1,0,0,0);
ObjEffect_SetVertexUV(ef1,1,0,20);
ObjEffect_SetVertexUV(ef1,2,20,0);
ObjEffect_SetVertexUV(ef1,3,20,20);
Obj_SetPosition(ef2,x,y);
ObjEffect_SetTexture(ef2,img);
ObjEffect_SetRenderState(ef2,ADD);
ObjEffect_SetPrimitiveType(ef2,PRIMITIVE_TRIANGLESTRIP);
ObjEffect_SetAngle(ef2,0,0,angle-90);
ObjEffect_SetLayer(ef2,3);
ObjEffect_CreateVertex(ef2,4);
ObjEffect_SetVertexUV(ef2,0,0,0);
ObjEffect_SetVertexUV(ef2,1,0,20);
ObjEffect_SetVertexUV(ef2,2,20,0);
ObjEffect_SetVertexUV(ef2,3,20,20);

PlaySE(laser);

loop{
pap+=pla;
Obj_SetAngle(las,(angle)+pap);
ObjEffect_SetAngle(ef1,0,0,(angle-90)+pap);
ObjEffect_SetAngle(ef2,0,0,(angle-90)+pap);

cc++;
if(cc==5){
if(source==true){LightSource(x,y,angle,255,255,255)}//͐؂ւ\
cc=0;
}

killf++;
if(killf>kill&&kill>0){delete=true}
if(delete==true&&alpha<=0){Obj_Delete(ef1);Obj_Delete(ef2);break}

delay_e++;
if(delay_e>delay&&scax<(width/100)*2&&delete==false){scax+=0.1}
if(scax<(width/100)*2&&delete==false){
ObjEffect_SetScale(ef1,scax,1);
ObjEffect_SetScale(ef2,scax-0.1,1);
}
if(scax>=(width/100)*2&&delete==false){ObjEffect_SetScale(ef1,scax+0.05*sin(delay_e*50),1);}
if(scax>0&&delete==true){scax-=0.1}
if(delete==true){
Obj_Delete(las);
ObjEffect_SetScale(ef1,scax,1);
ObjEffect_SetScale(ef2,scax,1);
}


if(length_l<length){length_l+=length/20}
ObjLaser_SetLength(las,length_l);

if(length_e<length){length_e+=length/20}
ObjEffect_SetVertexXY(ef1,0,-20,-20);
ObjEffect_SetVertexXY(ef1,1,-20,length_e);
ObjEffect_SetVertexXY(ef1,2,20,-20);
ObjEffect_SetVertexXY(ef1,3,20,length_e);
ObjEffect_SetVertexXY(ef2,0,-20,-20);
ObjEffect_SetVertexXY(ef2,1,-20,length_e);
ObjEffect_SetVertexXY(ef2,2,20,-20);
ObjEffect_SetVertexXY(ef2,3,20,length_e);

if(delete==true&&alpha>0){alpha-=15}
if(r==0&&g==0&&b==0){ObjEffect_SetRenderState(ef1,ALPHA)}
ObjEffect_SetVertexColor(ef1,0,alpha,r,g,b);
ObjEffect_SetVertexColor(ef1,1,alpha,r,g,b);
ObjEffect_SetVertexColor(ef1,2,alpha,r,g,b);
ObjEffect_SetVertexColor(ef1,3,alpha,r,g,b);
ObjEffect_SetVertexColor(ef2,0,alpha,255,255,255);
ObjEffect_SetVertexColor(ef2,1,alpha,255,255,255);
ObjEffect_SetVertexColor(ef2,2,alpha,255,255,255);
ObjEffect_SetVertexColor(ef2,3,alpha,255,255,255);

yield;
}
}

task CompressionLaserS(x,y,angle,pla,length,width,r,g,b,delay,kill,source){
let se       = GetCurrentScriptDirectory~".\enm3se\CLaser.wav";
let img      = GetCurrentScriptDirectory~".\enm3eff\laser_eff_add.png";
let img2     = GetCurrentScriptDirectory~".\enm3eff\laser_eff_add.png";
let las      = Obj_Create(OBJ_LASER);
let ef1      = Obj_Create(OBJ_EFFECT);
let ef2      = Obj_Create(OBJ_EFFECT);
let delete   = false;
let killf    = 0;
let alpha    = 255;
let length_l = 0;
let length_e = 0;
let scax     = 0.15;
let delay_e  = 0;
let cc       = 0;
let pap      = 0;

LoadGraphic(img);
LoadGraphic(img2);

Obj_SetPosition(las,x,y);
Obj_SetAngle(las,angle);
Obj_SetAutoDelete(las,false);
Obj_SetAlpha(las,0);
ObjShot_SetDelay(las,delay);
ObjShot_SetBombResist(las,true);
ObjShot_SetGraphic(las,kRED41);
ObjLaser_SetWidth(las,width);
ObjLaser_SetSource(las,false);

Obj_SetPosition(ef1,x,y);
ObjEffect_SetTexture(ef1,img2);
ObjEffect_SetRenderState(ef1,ADD);
ObjEffect_SetPrimitiveType(ef1,PRIMITIVE_TRIANGLESTRIP);
ObjEffect_SetAngle(ef1,0,0,angle-90);
ObjEffect_SetLayer(ef1,3);
ObjEffect_CreateVertex(ef1,4);
ObjEffect_SetVertexUV(ef1,0,0,0);
ObjEffect_SetVertexUV(ef1,1,0,20);
ObjEffect_SetVertexUV(ef1,2,20,0);
ObjEffect_SetVertexUV(ef1,3,20,20);
Obj_SetPosition(ef2,x,y);
ObjEffect_SetTexture(ef2,img);
ObjEffect_SetRenderState(ef2,ADD);
ObjEffect_SetPrimitiveType(ef2,PRIMITIVE_TRIANGLESTRIP);
ObjEffect_SetAngle(ef2,0,0,angle-90);
ObjEffect_SetLayer(ef2,3);
ObjEffect_CreateVertex(ef2,4);
ObjEffect_SetVertexUV(ef2,0,0,0);
ObjEffect_SetVertexUV(ef2,1,0,20);
ObjEffect_SetVertexUV(ef2,2,20,0);
ObjEffect_SetVertexUV(ef2,3,20,20);

PlaySE(laser);

loop{
pap+=pla;
Obj_SetAngle(las,(angle)+pap);
ObjEffect_SetAngle(ef1,0,0,(angle-90)+pap);
ObjEffect_SetAngle(ef2,0,0,(angle-90)+pap);

cc++;
if(cc==5){
if(source==true){LightSource(x,y,angle,255,255,255)}//͐؂ւ\
cc=0;
}

killf++;
if(killf>kill&&kill>0){delete=true}
if(delete==true&&alpha<=0){Obj_Delete(ef1);Obj_Delete(ef2);break}

delay_e++;
if(delay_e>delay&&scax<(width/100)*2&&delete==false){scax+=0.1}
if(scax<(width/100)*2&&delete==false){
ObjEffect_SetScale(ef1,scax,1);
ObjEffect_SetScale(ef2,scax-0.1,1);
}
if(scax>=(width/100)*2&&delete==false){ObjEffect_SetScale(ef1,scax+0.05*sin(delay_e*50),1);}
if(scax>0&&delete==true){scax-=0.1}
if(delete==true){
Obj_Delete(las);
ObjEffect_SetScale(ef1,scax,1);
ObjEffect_SetScale(ef2,scax,1);
}

if(length_l<length){length_l+=length/10}
ObjLaser_SetLength(las,length_l);

if(length_e<length){length_e+=length/10}
ObjEffect_SetVertexXY(ef1,0,-20,-20);
ObjEffect_SetVertexXY(ef1,1,-5,length_e);
ObjEffect_SetVertexXY(ef1,2,20,-20);
ObjEffect_SetVertexXY(ef1,3,5,length_e);
ObjEffect_SetVertexXY(ef2,0,-20,-20);
ObjEffect_SetVertexXY(ef2,1,-5,length_e);
ObjEffect_SetVertexXY(ef2,2,20,-20);
ObjEffect_SetVertexXY(ef2,3,5,length_e);

if(delete==true&&alpha>0){alpha-=15}
if(r==0&&g==0&&b==0){ObjEffect_SetRenderState(ef1,ALPHA)}
ObjEffect_SetVertexColor(ef1,0,alpha,r,g,b);
ObjEffect_SetVertexColor(ef1,1,alpha,r,g,b);
ObjEffect_SetVertexColor(ef1,2,alpha,r,g,b);
ObjEffect_SetVertexColor(ef1,3,alpha,r,g,b);
ObjEffect_SetVertexColor(ef2,0,alpha,255,255,255);
ObjEffect_SetVertexColor(ef2,1,alpha,255,255,255);
ObjEffect_SetVertexColor(ef2,2,alpha,255,255,255);
ObjEffect_SetVertexColor(ef2,3,alpha,255,255,255);

if(Obj_BeDeleted(las)==true){
Obj_Delete(ef1);
Obj_Delete(ef2);
break;
}

yield;
}
}

task CompressionLaser2(x,y,angle,pla,length,width,r,g,b,delay,kill,source){
let se       = GetCurrentScriptDirectory~".\enm3se\CLaser.wav";
let img      = GetCurrentScriptDirectory~".\enm3eff\laser_eff_alpha.png";
let las      = Obj_Create(OBJ_LASER);
let ef1      = Obj_Create(OBJ_EFFECT);
let ef2      = Obj_Create(OBJ_EFFECT);
let delete   = false;
let killf    = 0;
let alpha    = 255;
let length_l = 0;
let length_e = 0;
let scax     = 0.15;
let delay_e  = 0;
let cc       = 0;
let pap      = 0;

LoadGraphic(img);

Obj_SetPosition(las,x,y);
Obj_SetAngle(las,angle);
Obj_SetAutoDelete(las,false);
Obj_SetAlpha(las,0);
ObjShot_SetDelay(las,delay);
ObjShot_SetBombResist(las,true);
ObjShot_SetGraphic(las,kRED41);
ObjLaser_SetWidth(las,width);
ObjLaser_SetSource(las,false);

Obj_SetPosition(ef1,x,y);
ObjEffect_SetTexture(ef1,img);
ObjEffect_SetRenderState(ef1,ALPHA);
ObjEffect_SetPrimitiveType(ef1,PRIMITIVE_TRIANGLESTRIP);
ObjEffect_SetAngle(ef1,0,0,angle-90);
ObjEffect_SetLayer(ef1,3);
ObjEffect_CreateVertex(ef1,4);
ObjEffect_SetVertexUV(ef1,0,0,0);
ObjEffect_SetVertexUV(ef1,1,0,20);
ObjEffect_SetVertexUV(ef1,2,20,0);
ObjEffect_SetVertexUV(ef1,3,20,20);
Obj_SetPosition(ef2,x,y);
ObjEffect_SetTexture(ef2,img);
ObjEffect_SetRenderState(ef2,ALPHA);
ObjEffect_SetPrimitiveType(ef2,PRIMITIVE_TRIANGLESTRIP);
ObjEffect_SetAngle(ef2,0,0,angle-90);
ObjEffect_SetLayer(ef2,3);
ObjEffect_CreateVertex(ef2,4);
ObjEffect_SetVertexUV(ef2,0,0,0);
ObjEffect_SetVertexUV(ef2,1,0,20);
ObjEffect_SetVertexUV(ef2,2,20,0);
ObjEffect_SetVertexUV(ef2,3,20,20);

PlaySE(laser);

loop{
pap+=pla;
Obj_SetAngle(las,(angle)+pap);
ObjEffect_SetAngle(ef1,0,0,(angle-90)+pap);
ObjEffect_SetAngle(ef2,0,0,(angle-90)+pap);

cc++;
if(cc==5){
if(source==true){LightSource(x,y,angle,255,255,255)}//͐؂ւ\
cc=0;
}

killf++;
if(killf>kill&&kill>0){delete=true}
if(delete==true&&alpha<=0){Obj_Delete(ef1);Obj_Delete(ef2);break}

delay_e++;
if(delay_e>delay&&scax<(width/100)*2&&delete==false){scax+=0.1}
if(scax<(width/100)*2&&delete==false){
ObjEffect_SetScale(ef1,scax,1);
ObjEffect_SetScale(ef2,scax-0.1,1);
}
if(scax>=(width/100)*2&&delete==false){ObjEffect_SetScale(ef1,scax+0.05*sin(delay_e*50),1);}
if(scax>0&&delete==true){scax-=0.1}
if(delete==true){
Obj_Delete(las);
ObjEffect_SetScale(ef1,scax,1);
ObjEffect_SetScale(ef2,scax,1);
}


if(length_l<length){length_l+=length/20}
ObjLaser_SetLength(las,length_l);

if(length_e<length){length_e+=length/20}
ObjEffect_SetVertexXY(ef1,0,-20,-20);
ObjEffect_SetVertexXY(ef1,1,-20,length_e);
ObjEffect_SetVertexXY(ef1,2,20,-20);
ObjEffect_SetVertexXY(ef1,3,20,length_e);
ObjEffect_SetVertexXY(ef2,0,-20,-20);
ObjEffect_SetVertexXY(ef2,1,-20,length_e);
ObjEffect_SetVertexXY(ef2,2,20,-20);
ObjEffect_SetVertexXY(ef2,3,20,length_e);

if(delete==true&&alpha>0){alpha-=15}
if(r==0&&g==0&&b==0){ObjEffect_SetRenderState(ef1,ALPHA)}
ObjEffect_SetVertexColor(ef1,0,alpha,r,g,b);
ObjEffect_SetVertexColor(ef1,1,alpha,r,g,b);
ObjEffect_SetVertexColor(ef1,2,alpha,r,g,b);
ObjEffect_SetVertexColor(ef1,3,alpha,r,g,b);
ObjEffect_SetVertexColor(ef2,0,alpha,0,0,0);
ObjEffect_SetVertexColor(ef2,1,alpha,0,0,0);
ObjEffect_SetVertexColor(ef2,2,alpha,0,0,0);
ObjEffect_SetVertexColor(ef2,3,alpha,0,0,0);

yield;
}
}

task LightSource(x,y,angle,r,g,b){
let img      = GetCurrentScriptDirectory~".\enm3eff\bossEfect.png";
let cor      = Obj_Create(OBJ_EFFECT);
let alpha    = 0;
let sca      = rand(1,1.5);

LoadGraphic(img);

Obj_SetPosition(cor,x,y);
ObjEffect_SetTexture(cor,img);
ObjEffect_SetRenderState(cor,ADD);
ObjEffect_SetPrimitiveType(cor,PRIMITIVE_TRIANGLESTRIP);
ObjEffect_SetAngle(cor,0,0,rand(0,360));
ObjEffect_SetLayer(cor,5);
Obj_SetAngle(cor,angle);
Obj_SetSpeed(cor,rand(1,2));
ObjEffect_CreateVertex(cor,4);
ObjEffect_SetVertexXY(cor,0,-18,-17);
ObjEffect_SetVertexXY(cor,1,-18,17);
ObjEffect_SetVertexXY(cor,2,18,-17);
ObjEffect_SetVertexXY(cor,3,18,17);
ObjEffect_SetVertexUV(cor,0,53,136);
ObjEffect_SetVertexUV(cor,1,53,170);
ObjEffect_SetVertexUV(cor,2,89,136);
ObjEffect_SetVertexUV(cor,3,89,170);

loop{
if(sca<=0){Obj_Delete(cor);break}

if(alpha<255){alpha+=15}
if(alpha>=255&&sca>0){sca-=0.1}
ObjEffect_SetScale(cor,sca,sca);
ObjEffect_SetVertexColor(cor,0,alpha,r,g,b);
ObjEffect_SetVertexColor(cor,1,alpha,r,g,b);
ObjEffect_SetVertexColor(cor,2,alpha,r,g,b);
ObjEffect_SetVertexColor(cor,3,alpha,r,g,b);

yield;
}
}

task Tlaser(x,y,speed,angle,move,hex,shot,length,width,kill){
let Leff     = Obj_Create(OBJ_SHOT);
let Leff2    = Obj_Create(OBJ_SINUATE_LASER);
let la=0;
let lap=1;
let die=0;

SetShotColor(255,255,255);

Obj_SetPosition(Leff,x,y);
Obj_SetAlpha(Leff,0);
Obj_SetAngle(Leff,angle);
ObjShot_SetBombResist(Leff,false);
Obj_SetAutoDelete(Leff,false);
ObjShot_SetGraphic(Leff,WHITE05);

Obj_SetPosition(Leff2,Obj_GetX(Leff2),Obj_GetY(Leff2));
Obj_SetCollisionToObject(Leff2,true);
ObjShot_SetBombResist(Leff2,false);
Obj_SetAutoDelete(Leff2,false);
ObjShot_SetGraphic(Leff2,shot);
Obj_SetAlpha(Leff2,255);

loop{
if(Obj_BeDeleted(Leff)==true){break}

if(kill>0){die++;}
if(die>kill){
Obj_Delete(Leff);
Obj_Delete(Leff2)}

la+=lap;

Obj_SetCollisionToObject(Leff,false);
Obj_SetSpeed(Leff,speed);
Obj_SetAngle(Leff,Obj_GetAngle(Leff)+move*sin(la*hex));

Obj_SetPosition(Leff2,Obj_GetX(Leff),Obj_GetY(Leff));
ObjSinuateLaser_SetLength(Leff2,length);
ObjSinuateLaser_SetWidth(Leff2,width);
Obj_SetAngle(Leff2,Obj_GetAngle(Leff));

if(Obj_GetX(Leff)>MaxX+300||Obj_GetX(Leff)<MinX-300
   ||Obj_GetY(Leff)>MaxY+300||Obj_GetY(Leff)<MinY-300){
Obj_Delete(Leff);
Obj_Delete(Leff2)}

yield;
}
}

task Tlaser2(x,y,speed,move,hex,shot,length,width,kill){
let Leff     = Obj_Create(OBJ_SHOT);
let Leff2    = Obj_Create(OBJ_SINUATE_LASER);
let la=0;
let lap=1;
let die=0;

SetShotColor(255,255,255);

Obj_SetPosition(Leff,x,y);
Obj_SetAlpha(Leff,0);
ObjShot_SetBombResist(Leff,false);
Obj_SetAutoDelete(Leff,false);
ObjShot_SetGraphic(Leff,WHITE05);

Obj_SetPosition(Leff2,Obj_GetX(Leff2),Obj_GetY(Leff2));
Obj_SetCollisionToObject(Leff2,true);
ObjShot_SetBombResist(Leff2,false);
Obj_SetAutoDelete(Leff2,false);
ObjShot_SetGraphic(Leff2,shot);
Obj_SetAlpha(Leff2,255);

loop{
if(Obj_BeDeleted(Leff)==true){break}

let ea = atan2(GetEnemyY-Obj_GetY(Leff),GetEnemyX-Obj_GetX(Leff));

if(kill>0){die++;}
if(die>kill){
Obj_Delete(Leff);
Obj_Delete(Leff2)}

la+=lap;

Obj_SetCollisionToObject(Leff,false);
Obj_SetSpeed(Leff,speed);
Obj_SetAngle(Leff,ea+move*sin(la*hex));

Obj_SetPosition(Leff2,Obj_GetX(Leff),Obj_GetY(Leff));
ObjSinuateLaser_SetLength(Leff2,length);
ObjSinuateLaser_SetWidth(Leff2,width);
Obj_SetAngle(Leff2,Obj_GetAngle(Leff));

if(Obj_GetX(Leff)>MaxX+300||Obj_GetX(Leff)<MinX-300
   ||Obj_GetY(Leff)>MaxY+300||Obj_GetY(Leff)<MinY-300){
Obj_Delete(Leff);
Obj_Delete(Leff2)}

yield;
}
}

task Tlaser3(x,y,speed,move,hex,shot,length,width,kill,long){
let Leff     = Obj_Create(OBJ_SHOT);
let Leff2    = Obj_Create(OBJ_SINUATE_LASER);
let la=0;
let lap=1;
let die=0;
let frame=0;
let move1=0;
let moveA=0;

SetShotColor(255,255,255);

Obj_SetPosition(Leff,x,y);
Obj_SetAlpha(Leff,0);
ObjShot_SetBombResist(Leff,false);
Obj_SetAutoDelete(Leff,false);
ObjShot_SetGraphic(Leff,WHITE05);

Obj_SetPosition(Leff2,Obj_GetX(Leff2),Obj_GetY(Leff2));
Obj_SetCollisionToObject(Leff2,true);
ObjShot_SetBombResist(Leff2,false);
Obj_SetAutoDelete(Leff2,false);
ObjShot_SetGraphic(Leff2,shot);
Obj_SetAlpha(Leff2,255);

loop{
if(Obj_BeDeleted(Leff)==true){break}

let ea = atan2(GetEnemyY-Obj_GetY(Leff),GetEnemyX-Obj_GetX(Leff));

frame++;
if(long<frame){
if(move1<180){moveA+=1;}
move1=180*sin(moveA);
}

if(kill>0){die++;}
if(die>kill){
Obj_Delete(Leff);
Obj_Delete(Leff2)}

la+=lap;

Obj_SetCollisionToObject(Leff,false);
Obj_SetSpeed(Leff,speed);
Obj_SetAngle(Leff,ea+move*sin(la*hex)+move1);

Obj_SetPosition(Leff2,Obj_GetX(Leff),Obj_GetY(Leff));
ObjSinuateLaser_SetLength(Leff2,length);
ObjSinuateLaser_SetWidth(Leff2,width);
Obj_SetAngle(Leff2,Obj_GetAngle(Leff));

if(Obj_GetX(Leff)>MaxX+300||Obj_GetX(Leff)<MinX-300
   ||Obj_GetY(Leff)>MaxY+300||Obj_GetY(Leff)<MinY-300){
Obj_Delete(Leff);
Obj_Delete(Leff2)}

yield;
}
}

task BulletBreak(ex,ey,r,g,b){
let gcsd       = GetCurrentScriptDirectory;
let effimg     = gcsd ~ ".\enm3eff\bulletbreak.png";
let Anime      = 0;
let id         = Obj_Create(OBJ_EFFECT);

LoadGraphic(effimg);

ObjEffect_SetTexture(id,effimg);
ObjEffect_SetRenderState(id,ADD);
ObjEffect_SetPrimitiveType(id,PRIMITIVE_TRIANGLESTRIP);
ObjEffect_SetLayer(id,7);
ObjEffect_CreateVertex(id,4);
ObjEffect_SetVertexXY(id,0,32/-2,32/-2);
ObjEffect_SetVertexXY(id,1,32/-2,32/2);
ObjEffect_SetVertexXY(id,2,32/2,32/-2);
ObjEffect_SetVertexXY(id,3,32/2,32/2);
ObjEffect_SetVertexColor(id,0,255,r,g,b);
ObjEffect_SetVertexColor(id,1,255,r,g,b);
ObjEffect_SetVertexColor(id,2,255,r,g,b);
ObjEffect_SetVertexColor(id,3,255,r,g,b);

ObjEffect_SetAngle(id,0,0,rand(0,360));

loop{
Anime++;
if(Anime>=0&&Anime<=5){
ObjEffect_SetVertexUV(id,0,0,0);
ObjEffect_SetVertexUV(id,1,0,32);
ObjEffect_SetVertexUV(id,2,32,0);
ObjEffect_SetVertexUV(id,3,32,32);}
if(Anime>=5&&Anime<=10){
ObjEffect_SetVertexUV(id,0,32,0);
ObjEffect_SetVertexUV(id,1,32,32);
ObjEffect_SetVertexUV(id,2,64,0);
ObjEffect_SetVertexUV(id,3,64,32);}
if(Anime>=10&&Anime<=15){
ObjEffect_SetVertexUV(id,0,64,0);
ObjEffect_SetVertexUV(id,1,64,32);
ObjEffect_SetVertexUV(id,2,96,0);
ObjEffect_SetVertexUV(id,3,96,32);}
if(Anime>=15&&Anime<=20){
ObjEffect_SetVertexUV(id,0,96,0);
ObjEffect_SetVertexUV(id,1,96,32);
ObjEffect_SetVertexUV(id,2,128,0);
ObjEffect_SetVertexUV(id,3,128,32);}
if(Anime>=20&&Anime<=25){
ObjEffect_SetVertexUV(id,0,128,0);
ObjEffect_SetVertexUV(id,1,128,32);
ObjEffect_SetVertexUV(id,2,160,0);
ObjEffect_SetVertexUV(id,3,160,32);}
if(Anime>=25&&Anime<=30){
ObjEffect_SetVertexUV(id,0,160,0);
ObjEffect_SetVertexUV(id,1,160,32);
ObjEffect_SetVertexUV(id,2,192,0);
ObjEffect_SetVertexUV(id,3,192,32);}
if(Anime>=30&&Anime<=35){
ObjEffect_SetVertexUV(id,0,192,0);
ObjEffect_SetVertexUV(id,1,192,32);
ObjEffect_SetVertexUV(id,2,224,0);
ObjEffect_SetVertexUV(id,3,224,32);}
if(Anime>=35&&Anime<=40){
ObjEffect_SetVertexUV(id,0,224,0);
ObjEffect_SetVertexUV(id,1,224,32);
ObjEffect_SetVertexUV(id,2,256,0);
ObjEffect_SetVertexUV(id,3,256,32);}
if(Anime>=40){
Obj_Delete(id);
break;
}

Obj_SetPosition(id,ex,ey);

yield;
}
}

task TarotBullet01(x,y,angle,speed,shot,delay,r,g,b){
let id     = Obj_Create(OBJ_SHOT);
let sp     = 0;

Obj_SetPosition(id,x,y);
Obj_SetAlpha(id,255);
Obj_SetSpeed(id,0);
Obj_SetAngle(id,angle);
ObjShot_SetBombResist(id,false);
Obj_SetAutoDelete(id,false);
ObjShot_SetGraphic(id,shot);
ObjShot_SetDelay(id,delay);

loop{
if(sp<speed){
sp+=0.05;
Obj_SetSpeed(id,sp);}

if(Obj_GetX(id)>MaxX||Obj_GetX(id)<MinX
   ||Obj_GetY(id)>MaxY||Obj_GetY(id)<MinY){
Obj_SetSpeed(id,0);
BulletBreak(Obj_GetX(id),Obj_GetY(id),r,g,b);
ThunderBullet(Obj_GetX(id),Obj_GetY(id),Obj_GetAngle(id));
Obj_Delete(id);
break;
}

yield;
}
}

task TarotBullet02(x,y,angle,speed,shot,delay,r,g,b){
let id     = Obj_Create(OBJ_SHOT);
let sp     = 0;
let ang    = 0;

Obj_SetPosition(id,x,y);
Obj_SetAlpha(id,255);
Obj_SetSpeed(id,0);
Obj_SetAngle(id,angle);
ObjShot_SetBombResist(id,false);
Obj_SetAutoDelete(id,false);
ObjShot_SetGraphic(id,shot);
ObjShot_SetDelay(id,delay);

loop{
if(sp<speed){
sp+=0.05;
Obj_SetSpeed(id,sp);}

if(Obj_GetX(id)>MaxX||Obj_GetX(id)<MinX
   ||Obj_GetY(id)>MaxY||Obj_GetY(id)<MinY){
Obj_SetSpeed(id,0);
BulletBreak(Obj_GetX(id),Obj_GetY(id),r,g,b);
loop(10){
CreateShotA(0,Obj_GetX(id),Obj_GetY(id),0);
SetShotDataA(0,0,5,ang,0,0,10,kGREEN51);
SetShotDataA(0,10,0,Obj_GetAngle(id)+180,0,0.05,2,kGREEN02a);
FireShot(0);
ang+=36;
}
PlaySE(kira);
Obj_Delete(id);
break;
}

yield;
}
}

task TarotBullet03(x,y,angle,angle2,speed,shot,delay,r,g,b){
let id     = Obj_Create(OBJ_SHOT);
let sp     = 0;

Obj_SetPosition(id,x,y);
Obj_SetAlpha(id,255);
Obj_SetSpeed(id,0);
Obj_SetAngle(id,angle);
ObjShot_SetBombResist(id,false);
Obj_SetAutoDelete(id,false);
ObjShot_SetGraphic(id,shot);
ObjShot_SetDelay(id,delay);

loop{
if(sp<speed){
sp+=0.05;
Obj_SetSpeed(id,sp);}

if(Obj_GetX(id)>MaxX||Obj_GetX(id)<MinX
   ||Obj_GetY(id)>MaxY||Obj_GetY(id)<MinY){
Obj_SetSpeed(id,0);
BulletBreak(Obj_GetX(id),Obj_GetY(id),r,g,b);
CreateShotA(0,Obj_GetX(id),Obj_GetY(id),0);
SetShotDataA(0,0,3,Obj_GetAngle(id)+180,0,-0.05,0,kYELLOW51);
SetShotDataA(0,10,0,NULL,0,0.05,2,kYELLOW02a);
FireShot(0);
PlaySE(kira);
Obj_Delete(id);
break;
}

yield;
}
}

task TarotBullet04(x,y,angle,angle2,speed,shot,delay,r,g,b){
let id     = Obj_Create(OBJ_SHOT);
let sp     = 0;

Obj_SetPosition(id,x,y);
Obj_SetAlpha(id,255);
Obj_SetSpeed(id,0);
Obj_SetAngle(id,angle);
ObjShot_SetBombResist(id,false);
Obj_SetAutoDelete(id,false);
ObjShot_SetGraphic(id,shot);
ObjShot_SetDelay(id,delay);

loop{
if(sp<speed){
sp+=0.05;
Obj_SetSpeed(id,sp);}

if(Obj_GetX(id)>MaxX||Obj_GetX(id)<MinX
   ||Obj_GetY(id)>MaxY||Obj_GetY(id)<MinY){
Obj_SetSpeed(id,0);
BulletBreak(Obj_GetX(id),Obj_GetY(id),r,g,b);
CreateShotA(0,Obj_GetX(id),Obj_GetY(id),0);
SetShotDataA(0,0,3,angle2,0,-0.05,0,kRED51);
SetShotDataA(0,10,0,NULL,0,0.05,2,kRED02a);
FireShot(0);
PlaySE(kira);
Obj_Delete(id);
break;
}

yield;
}
}

task ThunderBullet(x,y,angle){
let frame=0;
let count=0;

loop{
frame++;
count++;
if(frame==1){
ThunderShot(x,y,90,45,30,5,kYELLOW02a,10);
PlaySE(kira);
frame=-6;
}

if(count==60){break;}

yield;
}
}

task ThunderShot(x,y,angle,ca,cs,speed,shot,delay){
let id     = Obj_Create(OBJ_SHOT);
let change = false;

Obj_SetPosition(id,x,y);
Obj_SetAlpha(id,255);
ObjShot_SetBombResist(id,false);
Obj_SetAutoDelete(id,false);
ObjShot_SetGraphic(id,shot);
ObjShot_SetDelay(id,delay);

loop{
if(change==true){
if(Obj_GetSpeed(id)>0){Obj_SetSpeed(id,Obj_GetSpeed(id)-(speed/cs));}
Obj_SetAngle(id,angle-ca);
if(Obj_GetSpeed(id)<=0){change=false;Obj_SetSpeed(id,speed);}
}
if(change==false){
if(Obj_GetSpeed(id)>0){Obj_SetSpeed(id,Obj_GetSpeed(id)-(speed/cs));}
Obj_SetAngle(id,angle+ca);
if(Obj_GetSpeed(id)<=0){change=true;Obj_SetSpeed(id,speed);}
}

if(Obj_GetX(id)>MaxX+100||Obj_GetX(id)<MinX-100
   ||Obj_GetY(id)>MaxY+100||Obj_GetY(id)<MinY-100){
Obj_Delete(id);
break;
}

yield;
}
}

task ArmillarySphereOfIkarugaDera(distance,angle,shot,delay,long,spin,sp){
let ost    = Obj_Create(OBJ_SHOT);
let frag   = false;
let frame  = 0;
let count  = 0;
let base   = 0;
let kill   = 0;
let alpha  = 0;

Obj_SetPosition(ost,GetEnemyX-distance*sin(angle),GetEnemyY+distance*cos(angle));
Obj_SetAngle(ost,angle);
ObjShot_SetBombResist(ost,true);
Obj_SetAlpha(ost,alpha);
Obj_SetCollisionToPlayer(ost,false);
ObjShot_SetGraphic(ost,shot);
Obj_SetAutoDelete(ost,false);

loop{
let sgx = Obj_GetX(ost);
let sgy = Obj_GetY(ost);

if(frame<=delay&&frame<=long&&alpha<100){alpha+=15}

Obj_SetPosition(ost,GetEnemyX-distance*sin(angle),GetEnemyY+distance*cos(angle));
Obj_SetAlpha(ost,alpha);

Obj_SetAngle(ost,angle);

if(spin=="LEFT"){angle+=sp;}
if(spin=="RIGHT"){angle-=sp;}

frame++;
if(frame>=delay&&frame<=long){
if(alpha<255){alpha+=15}
Obj_SetCollisionToPlayer(ost,true);
ObjShot_SetBombResist(ost,false);
}

if(frame>=long){
if(alpha>0){alpha-=15}}
if(frame>=long&&alpha<=0){Obj_Delete(ost);break;}

yield;
}
}

task CreateReflectShot01(x,y,speed,angle,count){
let obj = Obj_Create(OBJ_SHOT);
let id         = Obj_Create(OBJ_EFFECT);
let gcsd       = GetCurrentScriptDirectory;
let effimg     = gcsd ~ ".\enm3img\david.png";
let alpha      = 0;
let alphaA     = 0;
let sca        = 0;
let scaA       = 0;
let cc         = 0;
let pe         = 0;

LoadGraphic(effimg);

ObjEffect_SetTexture(id,effimg);
ObjEffect_SetRenderState(id,ALPHA);
ObjEffect_SetPrimitiveType(id,PRIMITIVE_TRIANGLESTRIP);
ObjEffect_SetLayer(id,5);
ObjEffect_CreateVertex(id,4);
ObjEffect_SetVertexXY(id,0,56/-2,62/-2);
ObjEffect_SetVertexXY(id,1,56/-2,62/2);
ObjEffect_SetVertexXY(id,2,56/2,62/-2);
ObjEffect_SetVertexXY(id,3,56/2,62/2);
ObjEffect_SetVertexUV(id,0,0,0);
ObjEffect_SetVertexUV(id,1,0,62);
ObjEffect_SetVertexUV(id,2,56,0);
ObjEffect_SetVertexUV(id,3,56,62);

Obj_SetPosition(obj, x, y);
ObjShot_SetGraphic(obj, kRED03);
Obj_SetAlpha(obj,0);
Obj_SetCollisionToPlayer(obj,false);
ObjShot_SetBombResist(obj,true);
    
loop{
	cc++;
	ObjEffect_SetAngle(id,0,0,cc);
	ObjEffect_SetScale(id,2-sca,2-sca);
	Obj_SetPosition(id,Obj_GetX(obj),Obj_GetY(obj));
	ObjEffect_SetVertexColor(id,0,alpha,255,255,255);
	ObjEffect_SetVertexColor(id,1,alpha,255,255,255);
	ObjEffect_SetVertexColor(id,2,alpha,255,255,255);
	ObjEffect_SetVertexColor(id,3,alpha,255,255,255);

	if(alpha<255){alphaA+=3;}
	alpha=255*sin(alphaA);
	if(sca<1){scaA+=3;}
	sca=1*sin(scaA);
	if(alpha>=255){pe++;}
	if(pe==1){
	Obj_SetCollisionToPlayer(obj,true);
	Obj_SetSpeed(obj, speed);
	Obj_SetAngle(obj, angle);
	}

	if(count!=0){
        //[
        if(Obj_GetX(obj)<GetClipMinX){
            Obj_SetX(obj, GetClipMinX*2 - Obj_GetX(obj));
            Obj_SetAngle(obj, 180 - Obj_GetAngle(obj));
            count--;
	    PlaySE(kira);
        }
        //E[
        if(Obj_GetX(obj)>GetClipMaxX){
            Obj_SetX(obj, GetClipMaxX*2 - Obj_GetX(obj));
            Obj_SetAngle(obj, 180 - Obj_GetAngle(obj));
            count--;
	    PlaySE(kira);
        }
        //[
        if(Obj_GetY(obj)<GetClipMinY){
            Obj_SetY(obj, GetClipMinY*2 - Obj_GetY(obj));
            Obj_SetAngle(obj, 360 - Obj_GetAngle(obj));
            count--;
	    PlaySE(kira);
        }
        //[
        if(Obj_GetY(obj)>GetClipMaxY){
            Obj_SetY(obj, GetClipMaxY*2 - Obj_GetY(obj));
            Obj_SetAngle(obj, 360 - Obj_GetAngle(obj));
            count--;
	    PlaySE(kira);
        }
	}
	if(Obj_BeDeleted(obj)==true){
	Obj_Delete(id);
	break;
	}
    
        yield;
    }
}               

task SpellCard03_Shot01{
let id		= [Obj_Create(OBJ_SHOT),
		Obj_Create(OBJ_SHOT),
		Obj_Create(OBJ_SHOT),
		Obj_Create(OBJ_SHOT)];
let alpha 	= 0;
let dis1	= 0;
let disA	= 0;
let cc		= 0;
let i		= 0;
let ang		= 0;
let frame1	= 0;
let frame2	= 0;
let frame3	= 0;
let frame4	= 0;
let angle1	= 0;

loop(4){
Obj_SetAlpha(id[i],255);
Obj_SetSpeed(id[i],0);
ObjShot_SetBombResist(id[i],true);
Obj_SetAutoDelete(id[i],false);
ObjShot_SetDelay(id[i],0);
i++;
}
i=0;

/*
ԁAA΁A
΁AA؁Ay*/
ObjShot_SetGraphic(id[0],kRED41);
ObjShot_SetGraphic(id[1],kBLUE41);
ObjShot_SetGraphic(id[2],kGREEN41);
ObjShot_SetGraphic(id[3],kYELLOW41);

loop{
if(dis1<70){disA+=1;}
dis1=70*sin(disA);
ang+=5;
Obj_SetPosition(id[0],GetEnemyX+dis1*sin(ang),GetEnemyY+dis1*cos(ang));
Obj_SetPosition(id[1],GetEnemyX+dis1*sin(90+ang),GetEnemyY+dis1*cos(90+ang));
Obj_SetPosition(id[2],GetEnemyX+dis1*sin(180+ang),GetEnemyY+dis1*cos(180+ang));
Obj_SetPosition(id[3],GetEnemyX+dis1*sin(270+ang),GetEnemyY+dis1*cos(270+ang));

Obj_SetAngle(id[0],0-ang);
Obj_SetAngle(id[1],90-ang);
Obj_SetAngle(id[2],180-ang);
Obj_SetAngle(id[3],270-ang);

if(dis1>=70){
frame1++;
frame2++;
frame3++;
frame4++;}
if(frame1==10){
loop(10){
CreateShotA(0,Obj_GetX(id[0]),Obj_GetY(id[0]),0);
SetShotDataA(0,0,-4,angle1,0,0,-10,kRED_F);
FireShot(0);
CreateShotA(1,Obj_GetX(id[0]),Obj_GetY(id[0]),0);
SetShotDataA(1,0,-3,angle1,0,0,-10,kRED_F);
FireShot(1);
CreateShotA(2,Obj_GetX(id[0]),Obj_GetY(id[0]),0);
SetShotDataA(2,0,-2,angle1,0,0,-10,kRED_F);
FireShot(2);
CreateShotA(3,Obj_GetX(id[0]),Obj_GetY(id[0]),0);
SetShotDataA(3,0,-1,angle1,0,0,-10,kRED_F);
FireShot(3);
angle1+=36;
}
frame1=-100;
PlaySE(tan);
}
if(frame2==10){
loop(10){
CreateShotA(0,Obj_GetX(id[1]),Obj_GetY(id[1]),0);
SetShotDataA(0,0,-1,angle1,0,0,-10,kBLUE_F);
FireShot(0);
CreateShotA(1,Obj_GetX(id[1]),Obj_GetY(id[1]),0);
SetShotDataA(1,0,-2,angle1+18,0,0,-10,kBLUE_F);
FireShot(1);
angle1+=36;
}
frame2=-30;
PlaySE(tan);
}
if(frame3==10){
CreateShotA(0,Obj_GetX(id[2]),Obj_GetY(id[2]),10);
SetShotDataA(0,0,0,rand(135,45),0,0.01,rand(1,5),kGREEN13);
FireShot(0);
frame3=0;
PlaySE(kira);
}
if(frame4==60){
loop(10){
CreateShotA(0,Obj_GetX(id[3]),Obj_GetY(id[3]),10);
SetShotDataA(0,0,4,angle1,0,-0.05,0,kYELLOW32);
SetShotDataA(0,60,1,GetAngleToPlayer,0,0,5,kYELLOW32);
FireShot(0);
angle1+=36;
}
frame4=0;
PlaySE(kira);
}

yield;
}
}

task SpellCard03_Shot01E{
let id		= [Obj_Create(OBJ_SHOT),
		Obj_Create(OBJ_SHOT),
		Obj_Create(OBJ_SHOT),
		Obj_Create(OBJ_SHOT)];
let alpha 	= 0;
let dis1	= 0;
let disA	= 0;
let cc		= 0;
let i		= 0;
let ang		= 0;
let frame1	= 0;
let frame2	= 0;
let frame3	= 0;
let frame4	= 0;
let angle1	= 0;

loop(4){
Obj_SetAlpha(id[i],255);
Obj_SetSpeed(id[i],0);
ObjShot_SetBombResist(id[i],true);
Obj_SetAutoDelete(id[i],false);
ObjShot_SetDelay(id[i],0);
i++;
}
i=0;

/*
ԁAA΁A
΁AA؁Ay*/
ObjShot_SetGraphic(id[0],kRED41);
ObjShot_SetGraphic(id[1],kBLUE41);
ObjShot_SetGraphic(id[2],kGREEN41);
ObjShot_SetGraphic(id[3],kYELLOW41);

loop{
if(dis1<70){disA+=1;}
dis1=70*sin(disA);
ang+=5;
Obj_SetPosition(id[0],GetEnemyX+dis1*sin(ang),GetEnemyY+dis1*cos(ang));
Obj_SetPosition(id[1],GetEnemyX+dis1*sin(90+ang),GetEnemyY+dis1*cos(90+ang));
Obj_SetPosition(id[2],GetEnemyX+dis1*sin(180+ang),GetEnemyY+dis1*cos(180+ang));
Obj_SetPosition(id[3],GetEnemyX+dis1*sin(270+ang),GetEnemyY+dis1*cos(270+ang));

Obj_SetAngle(id[0],0-ang);
Obj_SetAngle(id[1],90-ang);
Obj_SetAngle(id[2],180-ang);
Obj_SetAngle(id[3],270-ang);

if(dis1>=70){
frame1++;
frame2++;
frame3++;
frame4++;}
if(frame1==10){
loop(5){
CreateShotA(1,Obj_GetX(id[0]),Obj_GetY(id[0]),0);
SetShotDataA(1,0,-3,angle1,0,0,-10,kRED_F);
FireShot(1);
CreateShotA(2,Obj_GetX(id[0]),Obj_GetY(id[0]),0);
SetShotDataA(2,0,-2,angle1,0,0,-10,kRED_F);
FireShot(2);
CreateShotA(3,Obj_GetX(id[0]),Obj_GetY(id[0]),0);
SetShotDataA(3,0,-1,angle1,0,0,-10,kRED_F);
FireShot(3);
angle1+=72;
}
frame1=-100;
PlaySE(tan);
}
if(frame2==10){
loop(5){
CreateShotA(0,Obj_GetX(id[1]),Obj_GetY(id[1]),0);
SetShotDataA(0,0,-1,angle1,0,0,-10,kBLUE_F);
FireShot(0);
CreateShotA(1,Obj_GetX(id[1]),Obj_GetY(id[1]),0);
SetShotDataA(1,0,-2,angle1+18,0,0,-10,kBLUE_F);
FireShot(1);
angle1+=72;
}
frame2=-30;
PlaySE(tan);
}
if(frame3==10){
CreateShotA(0,Obj_GetX(id[2]),Obj_GetY(id[2]),10);
SetShotDataA(0,0,0,rand(135,45),0,0.01,rand(1,5),kGREEN13);
FireShot(0);
frame3=-5;
PlaySE(kira);
}
if(frame4==60){
loop(10){
CreateShotA(0,Obj_GetX(id[3]),Obj_GetY(id[3]),10);
SetShotDataA(0,0,4,angle1,0,-0.05,0,kYELLOW32);
SetShotDataA(0,60,1,GetAngleToPlayer,0,0,5,kYELLOW32);
FireShot(0);
angle1+=360/10;
}
frame4=0;
PlaySE(kira);
}

yield;
}
}

task SpellCard03_Shot01HL{
let id		= [Obj_Create(OBJ_SHOT),
		Obj_Create(OBJ_SHOT),
		Obj_Create(OBJ_SHOT),
		Obj_Create(OBJ_SHOT)];
let alpha 	= 0;
let dis1	= 0;
let disA	= 0;
let cc		= 0;
let i		= 0;
let ang		= 0;
let frame1	= 0;
let frame2	= 0;
let frame3	= 0;
let frame4	= 0;
let angle1	= 0;

loop(4){
Obj_SetAlpha(id[i],255);
Obj_SetSpeed(id[i],0);
ObjShot_SetBombResist(id[i],true);
Obj_SetAutoDelete(id[i],false);
ObjShot_SetDelay(id[i],0);
i++;
}
i=0;

/*
ԁAA΁A
΁AA؁Ay*/
ObjShot_SetGraphic(id[0],kRED41);
ObjShot_SetGraphic(id[1],kBLUE41);
ObjShot_SetGraphic(id[2],kGREEN41);
ObjShot_SetGraphic(id[3],kYELLOW41);

loop{
if(dis1<70){disA+=1;}
dis1=70*sin(disA);
ang+=5;
Obj_SetPosition(id[0],GetEnemyX+dis1*sin(ang),GetEnemyY+dis1*cos(ang));
Obj_SetPosition(id[1],GetEnemyX+dis1*sin(90+ang),GetEnemyY+dis1*cos(90+ang));
Obj_SetPosition(id[2],GetEnemyX+dis1*sin(180+ang),GetEnemyY+dis1*cos(180+ang));
Obj_SetPosition(id[3],GetEnemyX+dis1*sin(270+ang),GetEnemyY+dis1*cos(270+ang));

Obj_SetAngle(id[0],0-ang);
Obj_SetAngle(id[1],90-ang);
Obj_SetAngle(id[2],180-ang);
Obj_SetAngle(id[3],270-ang);

if(dis1>=70){
frame1++;
frame2++;
frame3++;
frame4++;}
if(frame1==10){
loop(10){
CreateShotA(0,Obj_GetX(id[0]),Obj_GetY(id[0]),0);
SetShotDataA(0,0,-5,angle1,0,0,-10,kRED_F);
FireShot(0);
CreateShotA(1,Obj_GetX(id[0]),Obj_GetY(id[0]),0);
SetShotDataA(1,0,-4,angle1,0,0,-10,kORANGE_F);
FireShot(1);
CreateShotA(2,Obj_GetX(id[0]),Obj_GetY(id[0]),0);
SetShotDataA(2,0,-3,angle1,0,0,-10,kRED_F);
FireShot(2);
CreateShotA(3,Obj_GetX(id[0]),Obj_GetY(id[0]),0);
SetShotDataA(3,0,-2,angle1,0,0,-10,kORANGE_F);
FireShot(3);
angle1+=36;
}
frame1=-100;
PlaySE(tan);
}
if(frame2==10){
loop(10){
CreateShotA(0,Obj_GetX(id[1]),Obj_GetY(id[1]),0);
SetShotDataA(0,0,-2,angle1,0,0,-10,kBLUE_F);
FireShot(0);
CreateShotA(1,Obj_GetX(id[1]),Obj_GetY(id[1]),0);
SetShotDataA(1,0,-3,angle1+18,0,0,-10,kPURPLE_F);
FireShot(1);
angle1+=36;
}
frame2=-30;
PlaySE(tan);
}
if(frame3==10){
CreateShotA(0,Obj_GetX(id[2]),Obj_GetY(id[2]),10);
SetShotDataA(0,0,0,rand(135,45),0,0.01,rand(1,5),kGREEN13);
FireShot(0);
frame3=0;
PlaySE(kira);
}
if(frame4==60){
loop(10){
CreateShotA(0,Obj_GetX(id[3]),Obj_GetY(id[3]),10);
SetShotDataA(0,0,4,angle1,0,-0.05,0,kYELLOW32);
SetShotDataA(0,60,2,GetAngleToPlayer,0,0,5,kYELLOW32);
FireShot(0);
angle1+=36;
}
frame4=30;
PlaySE(kira);
}

yield;
}
}

task ManaLaser(x,y,angle,kill,type){
	let id		= Obj_Create(OBJ_SHOT);
	let frame	= 0;
	let ang		= rand(10,170);
	
	Obj_SetPosition(id,x,y);
	Obj_SetAlpha(id,0);
	Obj_SetAngle(id,angle);
	Obj_SetSpeed(id,5);
	ObjShot_SetBombResist(id,true);
	Obj_SetAutoDelete(id,true);
	ObjShot_SetDelay(id,0);
	ObjShot_SetGraphic(id,WHITE01);
	
	CompressionLaser(x,y,angle,0,500,15,0,255,255,100,100+kill,false);
	
	while(Obj_BeDeleted(id)==false){
		let gx	= Obj_GetX(id);
		let gy	= Obj_GetY(id);
		
		frame++;
		if(frame==5){
			CompressionLaserS(gx,gy,angle-90,0,rand(50,100),15,0,255,100,40,100+kill,false);
			CompressionLaserS(gx,gy,angle+90,0,rand(50,100),15,0,255,100,40,100+kill,false);
		}
		if(frame==10){
			CompressionLaserS(gx,gy,angle-90,0,rand(50,100),15,0,255,100,60,100+kill,false);
			CompressionLaserS(gx,gy,angle+90,0,rand(50,100),15,0,255,100,60,100+kill,false);
			if(type=="H"){frame=0;}
			if(type=="L"){frame=0;}
		}
		yield;
	}
}