task StarLaser(x,y,angle,speed,scale,shote,delay){
	let id		= [Obj_Create(OBJ_SHOT),
				Obj_Create(OBJ_LASER),
				Obj_Create(OBJ_LASER),
				Obj_Create(OBJ_LASER),
				Obj_Create(OBJ_LASER),
				Obj_Create(OBJ_LASER)];
	let i		= 0;
	let spin	= 0;
	let rd		= trunc(rand(0,100));
	let spp		= 0;
	
	Obj_SetPosition(id[0],x,y);
	Obj_SetAngle(id[0],angle);
	ObjShot_SetGraphic(id[0],WHITE01);
	ObjShot_SetBombResist(id[0],true);
	Obj_SetAlpha(id[0],0);
	Obj_SetAutoDelete(id[0],false);
	Obj_SetCollisionToPlayer(id[0],false);
	
	loop(5){
		Obj_SetPosition(id[1+i],x,y);
		Obj_SetAngle(id[1+i],angle);
		Obj_SetAutoDelete(id[1+i],true);
		ObjShot_SetDelay(id[1+i],delay);
		ObjShot_SetBombResist(id[1+i],false);
		ObjShot_SetGraphic(id[1+i],shote);
		ObjLaser_SetLength(id[1+i],scale);
		ObjLaser_SetWidth(id[1+i],scale/10);
		ObjLaser_SetSource(id[1+i],false);
		i++;
	}i=0;
	
	loop{
		let gox	= Obj_GetX(id[0]);
		let goy	= Obj_GetY(id[0]);
		
		if(spp<speed){
			spp+=0.05;
			Obj_SetSpeed(id[0],spp);
		}
		
		if(rd>=0&&rd<50){
			spin++;
		}else{
			spin--;
		}
		
		Obj_SetPosition(id[1],gox+(scale/2)*sin(spin+72*1),goy+(scale/2)*cos(spin+72*1));
		Obj_SetPosition(id[2],gox+(scale/2)*sin(spin+72*2),goy+(scale/2)*cos(spin+72*2));
		Obj_SetPosition(id[3],gox+(scale/2)*sin(spin+72*3),goy+(scale/2)*cos(spin+72*3));
		Obj_SetPosition(id[4],gox+(scale/2)*sin(spin+72*4),goy+(scale/2)*cos(spin+72*4));
		Obj_SetPosition(id[5],gox+(scale/2)*sin(spin+72*5),goy+(scale/2)*cos(spin+72*5));
		
		Obj_SetAngle(id[1],72*-1-72-spin);
		Obj_SetAngle(id[2],72*-2-72-spin);
		Obj_SetAngle(id[3],72*-3-72-spin);
		Obj_SetAngle(id[4],72*-4-72-spin);
		Obj_SetAngle(id[5],72*-5-72-spin);
		
		//폜
		if(gox<MinX-300){
			loop(6){
				ObjShot_FadeDelete(id[i]);
				i++;
			}
			i=0;
			break;
		}
		if(gox>MaxX+300){
			loop(6){
				ObjShot_FadeDelete(id[i]);
				i++;
			}
			i=0;
			break;
		}
		if(goy<MinY-300){
			loop(6){
				ObjShot_FadeDelete(id[i]);
				i++;
			}
			i=0;
			break;
		}
		if(goy>MaxY+300){
			loop(6){
				ObjShot_FadeDelete(id[i]);
				i++;
			}
			i=0;
			break;
		}
		yield;
	}
}

task StarBullet(x,y,speed,shote){
	let id		= Obj_Create(OBJ_SHOT);
	let angle1	= 0;
	let angle2	= 0;
	let dis		= 0;
	let count	= 1;
	let frame	= 0;
	
	Obj_SetPosition(id,GetX,GetY-50);
	ObjShot_SetGraphic(id,WHITE05);
	ObjShot_SetBombResist(id,true);
	Obj_SetAlpha(id,0);
	Obj_SetAutoDelete(id,false);
	Obj_SetCollisionToPlayer(id,false);
	
	loop{
		let gox = Obj_GetX(id);
		let goy = Obj_GetY(id);
		
		frame++;
		if(dis<30){dis++;}
		if(dis==30){dis=0;count++;}
		
		alternative(count)
		case(1){angle1=109;}
		case(2){angle1=-36}
		case(3){angle1=180;}
		case(4){angle1=36;}
		case(5){angle1=252;}
		
		Obj_SetAngle(id,angle1);
		Obj_SetSpeed(id,8);
		
		CreateShotA(0,gox,goy,0);
		SetShotDataA(0,0,0,angle1+dis*12,0,0,0,shote);
		SetShotDataA(0,180-dis-count,0,NULL,rand(-0.1,0.1),0.01,speed,shote);
		FireShot(0);
		PlaySE(kira);
		
		if(count==6){
			Obj_Delete(id);
			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(Obj_BeDeleted(ost)==true){
			Obj_Delete(ost);
			break;
		}
		yield;
	}
}

task Reverie(x,y,angle,speed,shote,delay){
	let ost		= Obj_Create(OBJ_SHOT);
	let sgx		= Obj_GetX(ost);
	let sgy		= Obj_GetY(ost);
	let ang		= atan2(GetEnemyY-sgy,GetEnemyX-sgx);
	let frame	= 0;
	let count	= 0;
	let shot2	= [111,112,113,114,115,116,117,118,119,120];
	let i		= 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{
		sgx		= Obj_GetX(ost);
		sgy		= Obj_GetY(ost);
		ang		= atan2(GetEnemyY-sgy,GetEnemyX-sgx);
		
		Obj_SetAngle(ost,Obj_GetAngle(ost)+1);
		
		frame++;
		if(frame==1&&count<4){
			CreateShotA(0,sgx,sgy,10);
			SetShotDataA(0,0,0,ang-180,0,0,10,shot2[i]);
			SetShotDataA(0,60,NULL,NULL,0,0.01,10,shot2[i]);
			FireShot(0);
			ang+=0.1;
			count++;
			i++;
			if(i==10){i=0;}
			PlaySE(kira);
			frame=-4;
		}
		if(count==4){
			frame=-9;
			count=0;
		}
		if(sgx<MinX-32||sgx>MaxX+32||sgy<MinY-32||sgy>MaxY+32){
			Obj_Delete(ost);
			break;
		}
		yield;
	}
}

task SinShot(x,y,angle,w,b,speed,shote,delay){
	let ost		= Obj_Create(OBJ_SHOT);
	let b0		= 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);
		
		b0++;
		Obj_SetAngle(ost,angle+w*sin(b0*b));

		if(sgx<MinX-32||sgx>MaxX+32||sgy<MinY-32||sgy>MaxY+32){
			Obj_Delete(ost);
			break;
		}
		yield;
	}
}