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~".\enm7img\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;}
		
		if(Obj_BeDeleted(shff)==true){
			Obj_Delete(nuff2);
			Obj_Delete(nuff);
			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~".\enm7img\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;}
		
		if(Obj_BeDeleted(shff)==true){
			Obj_Delete(nuff2);
			Obj_Delete(nuff);
			break;
		}
		
		yield;
	}
}

task CompressionLaser(x,y,angle,pla,length,width,r,g,b,delay,kill,source){
	let se       = GetCurrentScriptDirectory~".\enm7se\CLaser.wav";
	let img      = GetCurrentScriptDirectory~".\enm7eff\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);
		
		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~".\enm7se\CLaser.wav";
	let img      = GetCurrentScriptDirectory~".\enm7eff\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);
		
		if(Obj_BeDeleted(las)==true){
			Obj_Delete(ef1);
			Obj_Delete(ef2);
			break;
		}
		yield;
	}
}

task LightSource(x,y,angle,r,g,b){
	let img      = GetCurrentScriptDirectory~".\enm7eff\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);
			break;
		}
		
		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);
			break;
		}
		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);
			break;
		}
		
		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);
			break;
		}
		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{
		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);
			break;
		}
		
		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);
			break;
		}
		yield;
	}
}

task HomingRoot(x,y,speed,shote,long,fr,w,delay,kill){
	let ost			= Obj_Create(OBJ_SHOT);
	let ang			= 0;
	let frame		= 0;
	let count		= 0;
	let move1		= 0;
	let moveA		= 0;
	
	Obj_SetPosition(ost,x,y);
	Obj_SetSpeed(ost,speed);
	ObjShot_SetBombResist(ost,true);
	ObjShot_SetDelay(ost,delay);
	ObjShot_SetGraphic(ost,shote);
	Obj_SetAutoDelete(ost,false);
	
	loop{
		let ea  = atan2(GetPlayerY-Obj_GetY(ost),GetPlayerX-Obj_GetX(ost));
		let sgx = Obj_GetX(ost);
		let sgy = Obj_GetY(ost);
		
		count++;
		if(long<count&&long>0){
			if(move1<180){moveA+=1;}
			move1=180*sin(moveA);
		}
		ang++;
		if(fr=="+"){
			Obj_SetAngle(ost,ea+w*sin(ang*10)+move1);
		}
		else{
			Obj_SetAngle(ost,ea-w*sin(ang*10)+move1);
		}
		frame++;
		if(frame==1){
			CreateShotA(0,sgx,sgy,0);
			SetShotDataA(0,0,0,Obj_GetAngle(ost),0,0,10,shote);
			//SetShotKillTime(0,30);
			FireShot(0);
			ang+=0.1;
			frame=-9;
		}
		if(Obj_BeDeleted(ost)==true||GetEnemyLife<=10||count>kill&&kill>0){
			Obj_Delete(ost);
			break;
		}
		
		yield;
	}
}

task FalseLaser(x,y,angle,speed,shote,fr,w,delay){
	let ost = Obj_Create(OBJ_SHOT);
	let ang = 0;
	let frame = 0;
	
	Obj_SetPosition(ost,x,y);
	Obj_SetAngle(ost,angle);
	Obj_SetSpeed(ost,speed);
	ObjShot_SetBombResist(ost,true);
	ObjShot_SetDelay(ost,delay);
	ObjShot_SetGraphic(ost,shote);
	Obj_SetAutoDelete(ost,true);
	
	loop{
		let sgx = Obj_GetX(ost);
		let sgy = Obj_GetY(ost);
		
		ang++;
		if(fr=="+"){
			Obj_SetAngle(ost,angle+w*sin(ang*10));
		}
		else{
			Obj_SetAngle(ost,angle-w*sin(ang*10));
		}
		frame++;
		if(frame==1){
			CreateShotA(0,sgx,sgy,0);
			SetShotDataA(0,0,0,Obj_GetAngle(ost),0,0,10,shote);
			SetShotKillTime(0,30);
			FireShot(0);
			ang+=0.1;
			frame=0;
		}
		if(sgx<MinX-20||sgx>MaxX+20||sgy<MinY-20||sgy>MaxY+20){
			Obj_Delete(ost);
			break;
		}
		if(Obj_BeDeleted(ost)==true){
			Obj_Delete(ost);
			break;
		}
		yield;
	}
}

task FalseLaser2(x,y,angle,speed,shote,fr,w,delay){
	let ost		= Obj_Create(OBJ_SHOT);
	let ang		= 0;
	let frame	= 0;
	let count	= 3;
	
	Obj_SetPosition(ost,x,y);
	Obj_SetAngle(ost,angle);
	Obj_SetSpeed(ost,speed);
	ObjShot_SetBombResist(ost,true);
	ObjShot_SetDelay(ost,delay);
	ObjShot_SetGraphic(ost,shote);
	Obj_SetAutoDelete(ost,true);
	
	loop{
		let sgx = Obj_GetX(ost);
		let sgy = Obj_GetY(ost);
		
		frame++;
		if(frame==1){
			CreateShotA(0,sgx+rand(-10,10),sgy+rand(-10,10),0);
			SetShotDataA(0,0,0.1,Obj_GetAngle(ost),0,0,10,kGREEN62);
			SetShotKillTime(0,26);
			FireShot(0);
			ang+=0.1;
			frame=0;
		}
		
		if(count>0){
			//[
			if(sgx<GetClipMinX-10){
				Obj_SetX(ost, (GetClipMinX-10)*2 - sgx);
				Obj_SetAngle(ost, 180 - Obj_GetAngle(ost));
				count--;
				PlaySE(kira);
			}
			//E[
			if(sgx>GetClipMaxX+10){
				Obj_SetX(ost, (GetClipMaxX+10)*2 - sgx);
				Obj_SetAngle(ost, 180 - Obj_GetAngle(ost));
				count--;
				PlaySE(kira);
			}
		}
		
		if(sgx<MinX-20||sgx>MaxX+20||sgy<MinY-20||sgy>MaxY+20){
			Obj_Delete(ost);
			break;
		}
		if(Obj_BeDeleted(ost)==true){
			Obj_Delete(ost);
			break;
		}
		yield;
	}
}

task BombSeed(x,y,speed,angle,shote,delay){
	let ost		= Obj_Create(OBJ_SHOT);
	let ang		= 0;
	let frame	= 0;
	let count	= 0;
	let sp1		= 0;
	let spA		= 0;
	let cc		= 0;
	let color	= "WHITE";
	let shote2	= trunc(rand(212,219));
	
	alternative(shote2)
	case(212){
		color="RED";
	}case(213){
		color="GREEN";
	}case(214){
		color="BLUE";
	}case(215){
		color="YELLOW";
	}case(216){
		color="PURPLE";
	}case(217){
		color="AQUA";
	}case(218){
		color="ORANGE";
	}case(219){
		color="WHITE";
	}
	
	Obj_SetPosition(ost,x,y);
	Obj_SetAngle(ost,angle);
	Obj_SetSpeed(ost,speed);
	ObjShot_SetBombResist(ost,true);
	ObjShot_SetDelay(ost,delay);
	ObjShot_SetGraphic(ost,shote);
	Obj_SetAutoDelete(ost,false);
	Obj_SetAlpha(ost,128);
	Obj_SetCollisionToPlayer(ost,false);
	
	loop{
		let sgx = Obj_GetX(ost);
		let sgy = Obj_GetY(ost);

		if(sp1<speed){spA+=1;}
		sp1=speed*sin(spA);
		Obj_SetSpeed(ost,speed-sp1);
		if(sp1>=speed){cc++;}

		if(sgx<MinX||sgx>MaxX||sgy<MinY||sgy>MaxY||cc>60){
			NuclearShot(3,sgx,sgy,angle,0,0.5,0,0,"GREEN",-1,false);
			let ang = 0;
			loop(5){
				CreateShotA(0,sgx,sgy,0);
				SetShotDataA(0,0,1.8,ang,0,-0.1,0,shote2);
				SetShotDataA(0,60,NULL,NULL,0,0.01,1,shote2);
				FireShot(0);
				ang+=72;
			}
			ObjShot_FadeDelete(ost);
			if(cc>60){PlaySE(kaku);}
			PlaySE(kira);
			break;
		}

		yield;
	}
}

task AlphaCBullet(type,x,y,speed,angle,shote,delay){
	let ost		= Obj_Create(OBJ_SHOT);
	let ang		= 0;
	let frame	= 0;
	let count	= 0;
	let sp1		= 0;
	let spA		= 0;
	
	Obj_SetPosition(ost,x,y);
	Obj_SetAngle(ost,angle);
	Obj_SetSpeed(ost,speed);
	ObjShot_SetBombResist(ost,true);
	ObjShot_SetDelay(ost,delay);
	ObjShot_SetGraphic(ost,shote);
	Obj_SetAutoDelete(ost,true);
	Obj_SetAlpha(ost,100);
	Obj_SetCollisionToPlayer(ost,false);
	
	loop{
		let gac	= GetCommonDataEx("anime","alpha_change");
		let sgx = Obj_GetX(ost);
		let sgy = Obj_GetY(ost);

		if(type==0){
			if(gac==false){
				Obj_SetAlpha(ost,100);
				Obj_SetCollisionToPlayer(ost,false);
			}else{
				Obj_SetAlpha(ost,255);
				Obj_SetCollisionToPlayer(ost,true);
			}
		}
		if(type==1){
			if(gac==false){
				Obj_SetAlpha(ost,255);
				Obj_SetCollisionToPlayer(ost,true);
			}else{
				Obj_SetAlpha(ost,100);
				Obj_SetCollisionToPlayer(ost,false);
			}
		}
		
		if(sgx<MinX-20||sgx>MaxX+20||sgy<MinY-20||sgy>MaxY+20){
			Obj_Delete(ost);
			break;
		}

		yield;
	}
}

task BulletBreak(ex,ey,r,g,b){
	let Anime		= 0;
	let id			= Obj_Create(OBJ_EFFECT);
	let csd			= GetCurrentScriptDirectory;
	let imgeff		= csd~".\enm7eff\bulletbreak.png";
		
	ObjEffect_SetTexture(id,imgeff);
	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 GaugeShot(type,x,y,shote,delay){
	let ost		= Obj_Create(OBJ_SHOT);
	let ang		= 0;
	let frame	= 0;
	let count	= 0;
	let sp1		= 0;
	let spA		= 0;
	let sp2		= 0;
	let spB		= 0;
	let angle	= 0;
	let per		= trunc(rand(0,99));
	
	alternative(type)
	case(0){
		if(per<50){
			angle=0;
		}else{
			angle=180;
		}
	}case(1){
		if(per<50){
			angle=90;
		}else{
			angle=270;
		}
	}
	
	Obj_SetPosition(ost,x,y);
	Obj_SetAngle(ost,angle);
	Obj_SetSpeed(ost,0);
	ObjShot_SetBombResist(ost,true);
	ObjShot_SetDelay(ost,delay);
	ObjShot_SetGraphic(ost,kGREEN01);
	Obj_SetAutoDelete(ost,true);
	Obj_SetAlpha(ost,150);
	Obj_SetCollisionToPlayer(ost,false);
	
	loop{
		let gac	= GetCommonDataEx("anime","delete");
		let sgx = Obj_GetX(ost);
		let sgy = Obj_GetY(ost);
		
		if(gac==true){
			BulletBreak(sgx,sgy,180,255,210);
			Obj_Delete(ost);
			break;
		}
		
		frame++;
		if(frame==120){
			PlaySE(kira);
			ObjShot_SetGraphic(ost,shote);
		}
		if(frame>=120&&gac==false){
			if(type==0){
				if(sp1<2){spA+=2;}
				sp1=2*sin(spA);
				Obj_SetSpeed(ost,2-sp1);
			}
			if(type==1){
				if(sp1<2){spA+=2;}
				sp1=2*sin(spA);
				Obj_SetSpeed(ost,2-sp1);
			}
		}
		
		if(sp1>=2){
			Obj_SetAlpha(ost,255);
			Obj_SetCollisionToPlayer(ost,true);
		}
		
		if(sgx<MinX-20||sgx>MaxX+20||sgy<MinY-20||sgy>MaxY+20){
			Obj_Delete(ost);
			break;
		}

		yield;
	}
}

task ComeOnButterfly(x,y,speed,shote,delay,ax,ay){
	let ost		= Obj_Create(OBJ_SHOT);
	let sp1		= 0;
	let spA		= 0;
	let ang;
	
	Obj_SetPosition(ost,x,y);
	ang = atan2(ay-Obj_GetY(ost),ax-Obj_GetX(ost));
	Obj_SetAngle(ost,ang);
	Obj_SetSpeed(ost,sp1);
	ObjShot_SetBombResist(ost,true);
	ObjShot_SetDelay(ost,delay);
	ObjShot_SetGraphic(ost,shote);
	Obj_SetAutoDelete(ost,false);
	Obj_SetAlpha(ost,200);
	Obj_SetCollisionToPlayer(ost,true);
	
	loop(30){yield;}
	
	loop{
		let sgx		= Obj_GetX(ost);
		let sgy		= Obj_GetY(ost);
		
		if(sp1<speed){spA+=0.2;}
		sp1=speed*sin(spA);
		Obj_SetSpeed(ost,sp1);
		
		if(sgx<MinX-128||sgx>MaxX+128||sgy<MinY-128||sgy>MaxY+128){
			Obj_Delete(ost);
			break;
		}
		yield;
	}
}

task GreeningMeteorite(x,y,angle){
	let ost		= Obj_Create(OBJ_SHOT);
	let frame	= 0;
	let ss		= trunc(rand(20,60));
	
	Obj_SetPosition(ost,x,y);
	Obj_SetAngle(ost,angle);
	Obj_SetSpeed(ost,rand(3,6));
	ObjShot_SetBombResist(ost,true);
	ObjShot_SetDelay(ost,0);
	ObjShot_SetGraphic(ost,kPURPLE60);
	Obj_SetAutoDelete(ost,true);
	Obj_SetAlpha(ost,255);
	
	loop{
		let sgx = Obj_GetX(ost);
		let sgy = Obj_GetY(ost);
		
		frame++;
		if(frame==ss){
			GreeningMeteorite2(sgx,sgy);
			PlaySE(kira);
			frame=ss/2;
		}
		
		if(sgx<MinX-16||sgx>MaxX+16||sgy<MinY-32||sgy>MaxY+32){
			Obj_Delete(ost);
			break;
		}
		yield;
	}
}

task GreeningMeteorite2(x,y){
	let ost		= Obj_Create(OBJ_SHOT);
	let sp1		= 0;
	let spA		= 0;
	let ra		= trunc(rand(0,99));
	let das		= trunc(rand(0,1500));
	
	Obj_SetPosition(ost,x,y);
	Obj_SetAngle(ost,90);
	Obj_SetSpeed(ost,sp1);
	ObjShot_SetBombResist(ost,true);
	ObjShot_SetDelay(ost,0);
	ObjShot_SetGraphic(ost,kPURPLE61);
	Obj_SetAutoDelete(ost,true);
	Obj_SetAlpha(ost,255);
	
	loop{
		let sgx = Obj_GetX(ost);
		let sgy = Obj_GetY(ost);
		
		if(sp1<3){spA+=0.5;}
		sp1=3*sin(spA);
		Obj_SetSpeed(ost,sp1);
		
		if(sgx<MinX-10||sgx>MaxX+10){
			Obj_Delete(ost);
			break;
		}
		if(sgy>MaxY+6){
			if(das>=GetEnemyLife||GetTimer<20){//̗͂قǁA藦㏸
				if(ra<50){
					GreeningMeteorite3(sgx,sgy);
				}else{
					GreeningMeteorite4(sgx,sgy);
				}
			}
			Obj_Delete(ost);
			break;
		}
		yield;
	}
}

task GreeningMeteorite3(x,y){
	let ost		= Obj_Create(OBJ_SHOT);
	let frame	= 0;
	let frame2	= 0;
	let ang		= [250,290];
	let xp		= [-2,2];
	let i		= 0;
	let kill	= 0;
	
	Obj_SetPosition(ost,x,y);
	Obj_SetAngle(ost,270);
	Obj_SetSpeed(ost,1);
	ObjShot_SetBombResist(ost,true);
	ObjShot_SetDelay(ost,0);
	ObjShot_SetGraphic(ost,kPURPLE61);
	Obj_SetAutoDelete(ost,true);
	Obj_SetAlpha(ost,0);
	
	loop{
		let sgx = Obj_GetX(ost);
		let sgy = Obj_GetY(ost);
		
		frame++;
		frame2++;
		kill++;
		if(frame==1&&frame2<25){
			if(GetEnemyLife>=400&&GetTimer>=20){
				CreateShotA(0,sgx,sgy,10);
				SetShotDataA(0,0,0,270,0,-0.1,0,kGREEN62);
				SetShotDataA(0,120,NULL,NULL,0,0.01,1,kGREEN62);
				FireShot(0);
			}
			if(GetEnemyLife<400||GetTimer<20){
				CreateShotA(0,sgx,sgy,10);
				SetShotDataA(0,0,0,270,0,-0.1,0,kRED62);
				SetShotDataA(0,120,NULL,NULL,0,0.01,1,kRED62);
				FireShot(0);
			}
			i++;
			if(i==2){i=0;}
			PlaySE(kira);
			frame=-4;
		}
		if(frame2==30){
			CreateShotA(0,sgx+xp[i],sgy,10);
			SetShotDataA(0,0,0,ang[i],0,-0.1,0,kPURPLE62);
			SetShotDataA(0,120,NULL,NULL,0,0.01,1,kPURPLE62);
			FireShot(0);
			i++;
			if(i==2){i=0;}
			PlaySE(kira);
			frame2=25;
		}
		if(kill==70){
			Obj_Delete(ost);
			break;
		}
		
		yield;
	}
}

task GreeningMeteorite4(x,y){
	let ost		= Obj_Create(OBJ_SHOT);
	let frame	= 0;
	let frame2	= 0;
	let ang		= [250,290,240,300,230,310,220,320,210,330];
	let xp		= [-2,2,-4,4,-6,6,-8,8,-10,10];
	let i		= 0;
	let kill	= 0;
	
	Obj_SetPosition(ost,x,y);
	Obj_SetAngle(ost,270);
	Obj_SetSpeed(ost,1);
	ObjShot_SetBombResist(ost,true);
	ObjShot_SetDelay(ost,0);
	ObjShot_SetGraphic(ost,kPURPLE61);
	Obj_SetAutoDelete(ost,true);
	Obj_SetAlpha(ost,0);
	
	loop{
		let sgx = Obj_GetX(ost);
		let sgy = Obj_GetY(ost);
		
		frame++;
		frame2++;
		kill++;
		if(frame==1&&frame2<15){
			if(GetEnemyLife>=400&&GetTimer>=20){
				CreateShotA(0,sgx,sgy,10);
				SetShotDataA(0,0,0,270,0,-0.1,0,kGREEN62);
				SetShotDataA(0,120,NULL,NULL,0,0.01,1,kGREEN62);
				FireShot(0);
			}
			if(GetEnemyLife<400||GetTimer<20){
				CreateShotA(0,sgx,sgy,10);
				SetShotDataA(0,0,0,270,0,-0.1,0,kRED62);
				SetShotDataA(0,120,NULL,NULL,0,0.01,1,kRED62);
				FireShot(0);
			}
			i++;
			if(i==2){i=0;}
			PlaySE(kira);
			frame=-4;
		}
		if(frame2==20){
			if(GetEnemyLife>=400&&GetTimer>=20){
				CreateShotA(0,sgx+xp[i],sgy,10);
				SetShotDataA(0,0,0,ang[i],0,-0.1,0,kGREEN62);
				SetShotDataA(0,120,NULL,NULL,0,0.01,1,kGREEN62);
				FireShot(0);
			}
			if(GetEnemyLife<400||GetTimer<20){
				CreateShotA(0,sgx+xp[i],sgy,10);
				SetShotDataA(0,0,0,ang[i],0,-0.1,0,kRED62);
				SetShotDataA(0,120,NULL,NULL,0,0.01,1,kRED62);
				FireShot(0);
			}
			i++;
			if(i==9){i=0;}
			PlaySE(kira);
			frame2=15;
		}
		if(kill==70){
			Obj_Delete(ost);
			break;
		}
		
		yield;
	}
}