
task SetFamilier(let sx,let sy,let angle)
{
	let speed=5;
	let alpha=255;
	let time=100;
	let rot=0;
	let vx=0;let vy=0;
	
	let obj=SetObject;
	ObjEffect_SetRenderState(obj,ALPHA);
	SetRect(obj,48,0,64,16);
	while(!Obj_BeDeleted(obj))
	{
		sx=GetPlayerX+vx;
		sy=GetPlayerY+vy;
		Obj_SetPosition(obj,sx,sy);
		ObjEffect_SetAngle(obj,0,0,rot);
		ascent(a in 0..4){ObjEffect_SetVertexColor(obj,a,alpha,255,255,255);}
		
		if(speed>0.05)
		{
			vx+=speed*cos(angle);
			vy+=speed*sin(angle);
		}
		else
		{
			let atk=7;
			let shotangle=atan2(lockon_pos[1]-sy,lockon_pos[0]-sx);
			let shotspeed=15;
			CreatePlayerShot01(sx,sy,shotspeed,shotangle,atk,1,1);
			time--;
			if(time<0){Obj_Delete(obj);}
		}
		rot+=5;
		speed/=1.05;
		yield;
	}
	
	function SetObject
	{
		let obj=Obj_Create(OBJ_EFFECT);
		ObjEffect_SetTexture(obj,tex[TEX_SHOT]);
		ObjEffect_SetLayer(obj,3);
		Obj_SetPosition(obj,sx,sy);
		ObjEffect_SetPrimitiveType(obj,PRIMITIVE_TRIANGLESTRIP);
		ObjEffect_CreateVertex(obj,4);
		return obj;
	}
	
	function SetRect(let obj,let reft,let up,let right,let down)
	{
		let texture_rect=[reft+1,up+1,right-1,down-1];
		let leng_h=texture_rect[2]-texture_rect[0];
		let leng_v=texture_rect[3]-texture_rect[1];
		
		ObjEffect_SetVertexXY(obj,0,-leng_h/2,-leng_v/2);
		ObjEffect_SetVertexXY(obj,1,-leng_h/2, leng_v/2);
		ObjEffect_SetVertexXY(obj,2, leng_h/2,-leng_v/2);
		ObjEffect_SetVertexXY(obj,3, leng_h/2, leng_v/2);
		
		ObjEffect_SetVertexUV(obj,0,texture_rect[0],texture_rect[1]);
		ObjEffect_SetVertexUV(obj,1,texture_rect[0],texture_rect[3]);
		ObjEffect_SetVertexUV(obj,2,texture_rect[2],texture_rect[1]);
		ObjEffect_SetVertexUV(obj,3,texture_rect[2],texture_rect[3]);
	}
}