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~".\enm2img\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~".\enm2img\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~"..\..\se\CLaser.wav";
let img      = GetCurrentScriptDirectory~".\enm2eff\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,5);
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,5);
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 SpineLaser(x,y,angle,r,g,b){
CompressionLaser2(x-5,y-70,angle-10,0,100,20,r,g,b,0,120,false);
CompressionLaser2(x+5,y-50,angle+10,0,150,20,r,g,b,0,120,false);
CompressionLaser2(x,y,angle-20,0,150,30,r,g,b,0,120,false);
CompressionLaser2(x,y,angle,0,300,30,r,g,b,0,120,false);
}


task CompressionLaser2(x,y,angle,pla,length,width,r,g,b,delay,kill,source){
let se       = GetCurrentScriptDirectory~"..\..\se\CLaser.wav";
let img      = GetCurrentScriptDirectory~".\enm2eff\laser_eff_alpha.png";
let img2     = GetCurrentScriptDirectory~".\enm2eff\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,5);
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,5);
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,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~".\enm2eff\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 ~ ".\enm2eff\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;
}
}