task CreateLifebar(HP, full, spell, percent)
{
	if(full==true)
	{
		_effectlifebar01(HP, 100);
	}
	else
	{
		if(spell==false)
		{
			_effectlifebar01(HP, percent);
		}
		else
		{
			_effectlifebar02(HP, percent);
		}
	}
}
task SetMarker(percent)
{
	let obj = ObjPrim_Create(OBJ_SPRITE_2D);
	let angle;
	ObjPrim_SetTexture(obj, GetCurrentScriptDirectory~"lifebar.png");
	ObjSprite2D_SetSourceRect(obj, 56, 0, 64, 8);
	ObjSprite2D_SetDestCenter(obj);
	while(!Obj_IsDeleted(objEnemy))
	{
		angle=(360*(percent*0.01))-90;
		let ex = ObjMove_GetX(objEnemy);
		let ey = ObjMove_GetY(objEnemy);		
		ObjRender_SetPosition(obj, ex+53*cos(angle), ey+53*sin(angle), 0);
		ObjRender_SetAngleZ(obj, atan2(ey- ObjMove_GetY(obj), ex- ObjMove_GetX(obj)));
		yield;
	}
	Obj_Delete(obj);
}
task _effectlifebar01(hp, percent)
{
	//percent p[Zg
	let obj = ObjPrim_Create(OBJ_SPRITE_2D);
	let angle = -90;
	let x1;
	let y1;
	let x2;
	let y2;
	let ex = ObjMove_GetX(objEnemy);
	let ey = ObjMove_GetY(objEnemy);
	ObjPrim_SetPrimitiveType(obj, PRIMITIVE_TRIANGLESTRIP);
	ObjPrim_SetVertexCount(obj, 256);
	ObjPrim_SetTexture(obj, GetCurrentScriptDirectory~"lifebar.png");
	let y=128;
	loop(40)
	{
		angle = -90;
		ex = ObjMove_GetX(objEnemy);
		ey = ObjMove_GetY(objEnemy);
		ObjMove_SetPosition(obj, ey, ey);
		y -= 128/40;
		y = max(y, (1-(ObjEnemy_GetInfo(objEnemy, INFO_LIFE)/hp))*128*(percent*0.01));
		ascent(i in 0..128)
		{
			x1 = 56*cos(angle);
			y1 = 56*sin(angle);
			ObjPrim_SetVertexUVT(obj, 2*i,    0, y+i);
			ObjPrim_SetVertexUVT(obj, 2*i+1, 56, y+i);
			ObjPrim_SetVertexPosition(obj, i*2,   ex+ 0, ey+ 0, 0);
			ObjPrim_SetVertexPosition(obj, i*2+1, ex+x1, ey+y1, 0);
			angle-=360/127;
		}
		yield;
	}
	y=0;
	while(!Obj_IsDeleted(objEnemy))
	{
		angle = -90;
		ex = ObjMove_GetX(objEnemy);
		ey = ObjMove_GetY(objEnemy);
		ObjMove_SetPosition(obj, ey, ey);
		let y = (1-(ObjEnemy_GetInfo(objEnemy, INFO_LIFE)/hp))*128*(percent*0.01);
		ascent(i in 0..128)
		{
			x1 = 56*cos(angle);
			y1 = 56*sin(angle);
			ObjPrim_SetVertexUVT(obj, 2*i,    0, y+i);
			ObjPrim_SetVertexUVT(obj, 2*i+1, 56, y+i);
			ObjPrim_SetVertexPosition(obj, i*2,   ex+ 0, ey+ 0, 0);
			ObjPrim_SetVertexPosition(obj, i*2+1, ex+x1, ey+y1, 0);
			angle-=360/127;
		}
		yield;
	}
	Obj_Delete(obj);
}
task _effectlifebar02(hp, percent)
{
	//percent p[Zg
	let obj = ObjPrim_Create(OBJ_SPRITE_2D);
	let angle = -90;
	let x1;
	let y1;
	let x2;
	let y2;
	let top = 256;
	let ex = ObjMove_GetX(objEnemy);
	let ey = ObjMove_GetY(objEnemy);
	ObjPrim_SetPrimitiveType(obj, PRIMITIVE_TRIANGLESTRIP);
	ObjPrim_SetVertexCount(obj, top);
	ObjPrim_SetTexture(obj, GetCurrentScriptDirectory~"lifebar.png");
	let y=128;
	while(!Obj_IsDeleted(objEnemy))
	{
		angle = -90;
		ex = ObjMove_GetX(objEnemy);
		ey = ObjMove_GetY(objEnemy);
		ObjMove_SetPosition(obj, ey, ey);
		let y = (128*0.01*(100-percent))+(1-(ObjEnemy_GetInfo(objEnemy, INFO_LIFE)/hp))*128*(percent*0.01);
		ascent(i in 0..top)
		{
			x1 = 56*cos(angle);
			y1 = 56*sin(angle);
			ObjPrim_SetVertexUVT(obj, 2*i,    0, y+i);
			ObjPrim_SetVertexUVT(obj, 2*i+1, 56, y+i);
			ObjPrim_SetVertexPosition(obj, i*2,   ex+ 0, ey+ 0, 0);
			ObjPrim_SetVertexPosition(obj, i*2+1, ex+x1, ey+y1, 0);
			angle-=360/(top-1);
		}
		yield;
	}
	Obj_Delete(obj);
}