//---------------------------------------------------------------
//	All bosses up to Len'en 4 v0.02 are available
//
//	Some bosses have variations
//
//  Rendering by Junky
//
//  Boss and enemy sprites done by the amazing Jinx
//
//  renderBoss(Enemy,Name,Scale,FrameSpeed,Invincible); - For boss sprites
//	renderFairy(Enemy,Type,Vary,Scale,FrameSpeed,Invincible); - For fairy sprites
//
//	---------------------------ECT.------------------------------
//
//	renderBird(Enemy,Scale,FrameSpeed,Invincible);
//	renderOrb(Enemy,Scale,FrameSpeed,Invincible);
//	renderGhost(Enemy,Scale,FrameSpeed,Invincible);
//	renderBug(Enemy,Scale,FrameSpeed,Invincible);
//	renderArrow(Enemy,Scale,FrameSpeed,Invincible);
//
//	Enemy - Object ID 
//	Name - Boss sprite you want to use eg: ("Yabusame")
//	Scale - Size of sprite
//	FrameSpeed - How fast the sprite animates (Len'en FrameSpeed is 30)
//	Invincible - Bool for pitch black sprite
//	Type - Type of fairy eg: (1,2,3)
//	Vary - Different variation of fairy eg: (1,2,3,4)
//  
//------------------------BOSS NAMES-----------------------------
//
//	Yabusame
//	Tsubakura
//	Kuroji
//	Aoji
//	Hooka
//	Kuroji
//	Clause
//	Tsurubami
//	Tsurubami_Disguise
//	Jun
//	Shou
//	Lumen
//	Lumen_Ex
//	Lumen_After
//	Hibaru
//	Sukune
//	Sukune_Clay
//	Sukune_Wing
//	Yaorochi
//	Saragimaru
//	Saragimaru_Dark
//	Sese
//	Sese_Ex
//	Sese_After
//	Tsugumi
//	Iyozane
//	Taira
//	Taira_Red
//	Taira_Black
//	Shion
//	Tenkai
//	Mitsumo
//	Souko
//	Kujiru
//	Medias
//	Kaisen
//	Ooya
//
//---------------------------------------------------------------
//

task EnemyMarker(Enemy,count)
{ 
	let obj = ObjPrim_Create(OBJ_SPRITE_2D);
	Obj_SetRenderPriorityI(obj,25);
	ObjPrim_SetTexture(obj,GetCurrentScriptDirectory ~"enemy_board.png");
	ObjSprite2D_SetSourceRect(obj,0,0,50,4);
	ObjSprite2D_SetDestRect(obj,0,0,50,4);
	ObjRender_SetScaleY(obj,1);
	ObjSprite2D_SetDestCenter(obj);
	ObjRender_SetAlpha(obj,(256-64)+32*cos(count));
	//ObjRender_SetBlendType(obj,BLEND_ADD_ARGB);
	ObjRender_SetPosition(obj,ObjMove_GetX(Enemy),GetStgFrameHeight-2,0);
	yield;
	
	Obj_Delete(obj);
}
let BossAlpha = 255;
task renderBoss(Enemy,Name,Scale,FrameSpeed,Invincible)
{
    let dir = 0;
    let speed = 0;
    let f = 0;
    let f2 = 0;
    let f3 = 0;
	let count = 0;
    let Movement = false;
    let EnemyImage = ObjPrim_Create(OBJ_SPRITE_2D);
	let path = GetCurrentScriptDirectory ~ "imgBoss/" ~ Name ~".png" ;
    while(!Obj_IsDeleted(Enemy))
    {
        ObjPrim_SetTexture(EnemyImage,path);
        ObjSprite2D_SetDestCenter(EnemyImage);
        ObjRender_SetScaleXYZ(EnemyImage,Scale,Scale,0);
        ObjRender_SetAngleZ(EnemyImage,0);
        Obj_SetRenderPriority(EnemyImage,0.3);
        ObjRender_SetAlpha(EnemyImage,BossAlpha);
		let XX = GetTextureWidth(path)/4;
		let YY = GetTextureHeight(path)/3;
        ObjRender_SetPosition(EnemyImage,ObjMove_GetX(Enemy),ObjMove_GetY(Enemy),0);
        dir = ObjMove_GetAngle(Enemy);
        speed = ObjMove_GetSpeed(Enemy);
		EnemyMarker(Enemy,count);
		count+=3;
        if(speed==0 && Movement==false)
        {
            f++;
            if(f<1*FrameSpeed)
            {
                ObjSprite2D_SetSourceRect(EnemyImage,XX*0,YY*0,XX*1,YY*1);
            }
            if(f>=1*FrameSpeed && f<2*FrameSpeed)
            {
                ObjSprite2D_SetSourceRect(EnemyImage,XX*1,YY*0,XX*2,YY*1);
            }
            if(f>=2*FrameSpeed && f<3*FrameSpeed)
            {
                ObjSprite2D_SetSourceRect(EnemyImage,XX*2,YY*0,XX*3,YY*1);
            }
            if(f>=3*FrameSpeed && f<4*FrameSpeed)
            {
                ObjSprite2D_SetSourceRect(EnemyImage,XX*3,YY*0,XX*4,YY*1);
            }
            if(f>=4*FrameSpeed)
            {
                f=0;
            }
            f2=0;
        }
        else if(cos(dir)>0)
        {
            if(f2<1*FrameSpeed)
            {
                ObjSprite2D_SetSourceRect(EnemyImage,XX*0,YY*1,XX*1,YY*2);
            }
            if(f2>=1*FrameSpeed && f2<2*FrameSpeed)
            {
                ObjSprite2D_SetSourceRect(EnemyImage,XX*1,YY*1,XX*2,YY*2);
            }
            if(f2>=2*FrameSpeed && f2<3*FrameSpeed)
            {
                ObjSprite2D_SetSourceRect(EnemyImage,XX*2,YY*1,XX*3,YY*2);
            }
            if(f2>=3*FrameSpeed && f2<4*FrameSpeed)
            {
                ObjSprite2D_SetSourceRect(EnemyImage,XX*3,YY*1,XX*4,YY*2);
            }
            if(f2>=4*FrameSpeed)
            {
                Movement=true;
            }
            if(speed!=0 && f2<4*FrameSpeed+1)
            {
                f2++;
            }
			if(f2>=4*FrameSpeed)
			{
				f2=0;
			}
            if(speed==0 && Movement==true && f2>0)
            {
                f2=0;
            }
            if(speed==0 && f2==0)
            {
                Movement=false;
            }
            f=0;
        }
        else if(cos(dir)<0)
        {
            if(f2<1*FrameSpeed)
            {
                ObjSprite2D_SetSourceRect(EnemyImage,XX*0,YY*2,XX*1,YY*3);
            }
            if(f2>=1*FrameSpeed && f2<2*FrameSpeed)
            {
                ObjSprite2D_SetSourceRect(EnemyImage,XX*1,YY*2,XX*2,YY*3);
            }
            if(f2>=2*FrameSpeed && f2<3*FrameSpeed)
            {
                ObjSprite2D_SetSourceRect(EnemyImage,XX*2,YY*2,XX*3,YY*3);
            }
            if(f2>=3*FrameSpeed && f2<4*FrameSpeed)
            {
                ObjSprite2D_SetSourceRect(EnemyImage,XX*3,YY*2,XX*4,YY*3);
            }
            if(f2>=4*FrameSpeed)
            {
                Movement=true;
            }
            if(speed!=0 && f2<4*FrameSpeed+1)
            {
                f2++;
            }
			if(f2>=4*FrameSpeed)
			{
				f2=0;
			}
            if(speed==0 && Movement==true && f2>0)
            {
                f2=0;
            }
            if(speed==0 && f2==0)
            {
                Movement=false;
            }
            f=0;
        }
		if(Invincible==true)
		{
			ObjRender_SetColor(EnemyImage,0,0,0);
		}
        yield;
    }
    if(ObjEnemy_GetInfo(Enemy, INFO_LIFE) <= 0)
    {
        Obj_Delete(EnemyImage);
    }
}
let TsugumiAngle = 0;
task renderTsugumi(Enemy,Scale,FrameSpeed,Invincible)
{
    let dir = 0;
    let speed = 0;
    let f = 0;
    let f2 = 0;
    let f3 = 0;
    let Movement = false;
	let count = 0;
    let EnemyImage = ObjPrim_Create(OBJ_SPRITE_2D);
	let path = GetCurrentScriptDirectory ~ "imgBoss/Tsugumi_Spin.png";
    while(!Obj_IsDeleted(Enemy))
    {
        ObjPrim_SetTexture(EnemyImage,path);
        ObjSprite2D_SetDestCenter(EnemyImage);
        ObjRender_SetScaleXYZ(EnemyImage,Scale,Scale,0);
        ObjRender_SetAngleZ(EnemyImage,TsugumiAngle);
        Obj_SetRenderPriority(EnemyImage,0.3);
        ObjRender_SetAlpha(EnemyImage,255);
		let XX = GetTextureWidth(path)/8;
		let YY = GetTextureHeight(path);
        ObjRender_SetPosition(EnemyImage,ObjMove_GetX(Enemy),ObjMove_GetY(Enemy),0);
        dir = ObjMove_GetAngle(Enemy);
        speed = ObjMove_GetSpeed(Enemy);
		EnemyMarker(Enemy,count);
		count+=3;
            f++;
            if(f<1*FrameSpeed)
            {
                ObjSprite2D_SetSourceRect(EnemyImage,XX*0,YY*0,XX*1,YY*1);
            }
            if(f>=1*FrameSpeed && f<2*FrameSpeed)
            {
                ObjSprite2D_SetSourceRect(EnemyImage,XX*1,YY*0,XX*2,YY*1);
            }
            if(f>=2*FrameSpeed && f<3*FrameSpeed)
            {
                ObjSprite2D_SetSourceRect(EnemyImage,XX*2,YY*0,XX*3,YY*1);
            }
            if(f>=3*FrameSpeed && f<4*FrameSpeed)
            {
                ObjSprite2D_SetSourceRect(EnemyImage,XX*3,YY*0,XX*4,YY*1);
            }
            if(f>=4*FrameSpeed && f<5*FrameSpeed)
            {
                ObjSprite2D_SetSourceRect(EnemyImage,XX*4,YY*0,XX*5,YY*1);
            }
            if(f>=5*FrameSpeed && f<6*FrameSpeed)
            {
                ObjSprite2D_SetSourceRect(EnemyImage,XX*5,YY*0,XX*6,YY*1);
            }
            if(f>=6*FrameSpeed && f<7*FrameSpeed)
            {
                ObjSprite2D_SetSourceRect(EnemyImage,XX*6,YY*0,XX*7,YY*1);
            }
            if(f>=7*FrameSpeed && f<8*FrameSpeed)
            {
                ObjSprite2D_SetSourceRect(EnemyImage,XX*7,YY*0,XX*8,YY*1);
            }
            if(f>=8*FrameSpeed)
            {
                f=0;
            }       
		if(Invincible==true)
		{
			ObjRender_SetColor(EnemyImage,0,0,0);
		}
        yield;
    }
    if(ObjEnemy_GetInfo(Enemy, INFO_LIFE) <= 0)
    {
        Obj_Delete(EnemyImage);
    }
}
task renderFairy(Enemy,Type,Vary,Scale,FrameSpeed,Invincible)
{
    let dir = 0;
    let speed = 0;
    let f = 0;
    let f2 = 0;
    let f3 = 0;
    let Movement = false;
    let EnemyImage = ObjPrim_Create(OBJ_SPRITE_2D);
	let path;
	if(Type==1)
	{
		if(Vary==1)
		{
			path = GetCurrentScriptDirectory ~ "imgEnemy/Fairy_1_1.png";
		}
		if(Vary==2)
		{
			path = GetCurrentScriptDirectory ~ "imgEnemy/Fairy_1_2.png";
		}
		if(Vary==3)
		{
			path = GetCurrentScriptDirectory ~ "imgEnemy/Fairy_1_3.png";
		}
		if(Vary==4)
		{
			path = GetCurrentScriptDirectory ~ "imgEnemy/Fairy_1_4.png";
		}
	}
	if(Type==2)
	{
		if(Vary==1)
		{
			path = GetCurrentScriptDirectory ~ "imgEnemy/Fairy_2_1.png";
		}
		if(Vary==2)
		{
			path = GetCurrentScriptDirectory ~ "imgEnemy/Fairy_2_2.png";
		}
		if(Vary==3)
		{
			path = GetCurrentScriptDirectory ~ "imgEnemy/Fairy_2_3.png";
		}
		if(Vary==4)
		{
			path = GetCurrentScriptDirectory ~ "imgEnemy/Fairy_2_4.png";
		}
	}
	if(Type==3)
	{
		if(Vary==1)
		{
			path = GetCurrentScriptDirectory ~ "imgEnemy/Fairy_3_1.png";
		}
		if(Vary==2)
		{
			path = GetCurrentScriptDirectory ~ "imgEnemy/Fairy_3_2.png";
		}
		if(Vary==3)
		{
			path = GetCurrentScriptDirectory ~ "imgEnemy/Fairy_3_3.png";
		}
		if(Vary==4)
		{
			path = GetCurrentScriptDirectory ~ "imgEnemy/Fairy_3_4.png";
		}
	}
    while(!Obj_IsDeleted(Enemy))
    {
        ObjPrim_SetTexture(EnemyImage,path);
        ObjSprite2D_SetDestCenter(EnemyImage);
        ObjRender_SetScaleXYZ(EnemyImage,Scale,Scale,0);
        ObjRender_SetAngleZ(EnemyImage,0);
        Obj_SetRenderPriority(EnemyImage,0.3);
        ObjRender_SetAlpha(EnemyImage,255);
		let XX = GetTextureWidth(path)/4;
		let YY = GetTextureHeight(path)/3;
        ObjRender_SetPosition(EnemyImage,ObjMove_GetX(Enemy),ObjMove_GetY(Enemy),0);
        dir = ObjMove_GetAngle(Enemy);
        speed = ObjMove_GetSpeed(Enemy);
        if(speed==0 && Movement==false)
        {
            f++;
            if(f<1*FrameSpeed)
            {
                ObjSprite2D_SetSourceRect(EnemyImage,XX*0,YY*1,XX*1,YY*2);
            }
            if(f>=1*FrameSpeed && f<2*FrameSpeed)
            {
                ObjSprite2D_SetSourceRect(EnemyImage,XX*1,YY*1,XX*2,YY*2);
            }
            if(f>=2*FrameSpeed && f<3*FrameSpeed)
            {
                ObjSprite2D_SetSourceRect(EnemyImage,XX*2,YY*1,XX*3,YY*2);
            }
            if(f>=3*FrameSpeed && f<4*FrameSpeed)
            {
                ObjSprite2D_SetSourceRect(EnemyImage,XX*3,YY*1,XX*4,YY*2);
            }
            if(f>=4*FrameSpeed)
            {
                f=0;
            }
            f2=0;
        }
        else if(cos(dir)>0)
        {
            if(f2<1*FrameSpeed)
            {
                ObjSprite2D_SetSourceRect(EnemyImage,XX*0,YY*2,XX*1,YY*3);
            }
            if(f2>=1*FrameSpeed && f2<2*FrameSpeed)
            {
                ObjSprite2D_SetSourceRect(EnemyImage,XX*1,YY*2,XX*2,YY*3);
            }
            if(f2>=2*FrameSpeed && f2<3*FrameSpeed)
            {
                ObjSprite2D_SetSourceRect(EnemyImage,XX*2,YY*2,XX*3,YY*3);
            }
            if(f2>=3*FrameSpeed && f2<4*FrameSpeed)
            {
                ObjSprite2D_SetSourceRect(EnemyImage,XX*3,YY*2,XX*4,YY*3);
            }
            if(f2>=4*FrameSpeed)
            {
                Movement=true;
            }
            if(speed!=0 && f2<4*FrameSpeed+1)
            {
                f2++;
            }
			if(f2>=4*FrameSpeed)
			{
				f2=0;
			}
            if(speed==0 && Movement==true && f2>0)
            {
                f2=0;
            }
            if(speed==0 && f2==0)
            {
                Movement=false;
            }
            f=0;
        }
        else if(cos(dir)<0)
        {
            if(f2<1*FrameSpeed)
            {
                ObjSprite2D_SetSourceRect(EnemyImage,XX*0,YY*0,XX*1,YY*1);
            }
            if(f2>=1*FrameSpeed && f2<2*FrameSpeed)
            {
                ObjSprite2D_SetSourceRect(EnemyImage,XX*1,YY*0,XX*2,YY*1);
            }
            if(f2>=2*FrameSpeed && f2<3*FrameSpeed)
            {
                ObjSprite2D_SetSourceRect(EnemyImage,XX*2,YY*0,XX*3,YY*1);
            }
            if(f2>=3*FrameSpeed && f2<4*FrameSpeed)
            {
                ObjSprite2D_SetSourceRect(EnemyImage,XX*3,YY*0,XX*4,YY*1);
            }
            if(f2>=4*FrameSpeed)
            {
                Movement=true;
            }
            if(speed!=0 && f2<4*FrameSpeed+1)
            {
                f2++;
            }
			if(f2>=4*FrameSpeed)
			{
				f2=0;
			}
            if(speed==0 && Movement==true && f2>0)
            {
                f2=0;
            }
            if(speed==0 && f2==0)
            {
                Movement=false;
            }
            f=0;
        }
		if(Invincible==true)
		{
			ObjRender_SetColor(EnemyImage,0,0,0);
		}
        yield;
    }
    if(ObjEnemy_GetInfo(Enemy, INFO_LIFE) <= 0)
    {
        Obj_Delete(EnemyImage);
    }
}
task renderBird(Enemy,Scale,FrameSpeed,Invincible)
{
    let dir = 0;
    let speed = 0;
    let f = 0;
    let f2 = 0;
    let f3 = 0;
    let Movement = false;
    let EnemyImage = ObjPrim_Create(OBJ_SPRITE_2D);
	let path = GetCurrentScriptDirectory ~ "imgEnemy/Bird.png";
    while(!Obj_IsDeleted(Enemy))
    {
        ObjPrim_SetTexture(EnemyImage,path);
        ObjSprite2D_SetDestCenter(EnemyImage);
        ObjRender_SetScaleXYZ(EnemyImage,Scale,Scale,0);
        ObjRender_SetAngleZ(EnemyImage,0);
        Obj_SetRenderPriority(EnemyImage,0.3);
        ObjRender_SetAlpha(EnemyImage,255);
		let XX = GetTextureWidth(path)/4;
		let YY = GetTextureHeight(path)/3;
        ObjRender_SetPosition(EnemyImage,ObjMove_GetX(Enemy),ObjMove_GetY(Enemy),0);
        dir = ObjMove_GetAngle(Enemy);
        speed = ObjMove_GetSpeed(Enemy);
        if(speed==0 && Movement==false)
        {
            f++;
            if(f<1*FrameSpeed)
            {
                ObjSprite2D_SetSourceRect(EnemyImage,XX*0,YY*1,XX*1,YY*2);
            }
            if(f>=1*FrameSpeed && f<2*FrameSpeed)
            {
                ObjSprite2D_SetSourceRect(EnemyImage,XX*1,YY*1,XX*2,YY*2);
            }
            if(f>=2*FrameSpeed && f<3*FrameSpeed)
            {
                ObjSprite2D_SetSourceRect(EnemyImage,XX*2,YY*1,XX*3,YY*2);
            }
            if(f>=3*FrameSpeed && f<4*FrameSpeed)
            {
                ObjSprite2D_SetSourceRect(EnemyImage,XX*3,YY*1,XX*4,YY*2);
            }
            if(f>=4*FrameSpeed)
            {
                f=0;
            }
            f2=0;
        }
        else if(cos(dir)>0)
        {
            if(f2<1*FrameSpeed)
            {
                ObjSprite2D_SetSourceRect(EnemyImage,XX*0,YY*2,XX*1,YY*3);
            }
            if(f2>=1*FrameSpeed && f2<2*FrameSpeed)
            {
                ObjSprite2D_SetSourceRect(EnemyImage,XX*1,YY*2,XX*2,YY*3);
            }
            if(f2>=2*FrameSpeed && f2<3*FrameSpeed)
            {
                ObjSprite2D_SetSourceRect(EnemyImage,XX*2,YY*2,XX*3,YY*3);
            }
            if(f2>=3*FrameSpeed && f2<4*FrameSpeed)
            {
                ObjSprite2D_SetSourceRect(EnemyImage,XX*3,YY*2,XX*4,YY*3);
            }
            if(f2>=4*FrameSpeed)
            {
                Movement=true;
            }
            if(speed!=0 && f2<4*FrameSpeed+1)
            {
                f2++;
            }
			if(f2>=4*FrameSpeed)
			{
				f2=0;
			}
            if(speed==0 && Movement==true && f2>0)
            {
                f2=0;
            }
            if(speed==0 && f2==0)
            {
                Movement=false;
            }
            f=0;
        }
        else if(cos(dir)<0)
        {
            if(f2<1*FrameSpeed)
            {
                ObjSprite2D_SetSourceRect(EnemyImage,XX*0,YY*0,XX*1,YY*1);
            }
            if(f2>=1*FrameSpeed && f2<2*FrameSpeed)
            {
                ObjSprite2D_SetSourceRect(EnemyImage,XX*1,YY*0,XX*2,YY*1);
            }
            if(f2>=2*FrameSpeed && f2<3*FrameSpeed)
            {
                ObjSprite2D_SetSourceRect(EnemyImage,XX*2,YY*0,XX*3,YY*1);
            }
            if(f2>=3*FrameSpeed && f2<4*FrameSpeed)
            {
                ObjSprite2D_SetSourceRect(EnemyImage,XX*3,YY*0,XX*4,YY*1);
            }
            if(f2>=4*FrameSpeed)
            {
                Movement=true;
            }
            if(speed!=0 && f2<4*FrameSpeed+1)
            {
                f2++;
            }
			if(f2>=4*FrameSpeed)
			{
				f2=0;
			}
            if(speed==0 && Movement==true && f2>0)
            {
                f2=0;
            }
            if(speed==0 && f2==0)
            {
                Movement=false;
            }
            f=0;
        }
		if(Invincible==true)
		{
			ObjRender_SetColor(EnemyImage,0,0,0);
		}
        yield;
    }
    if(ObjEnemy_GetInfo(Enemy, INFO_LIFE) <= 0)
    {
        Obj_Delete(EnemyImage);
    }
}
task renderOrb(Enemy,Scale,FrameSpeed,Invincible)
{
    let dir = 0;
    let speed = 0;
    let f = 0;
    let f2 = 0;
    let f3 = 0;
    let Movement = false;
    let EnemyImage = ObjPrim_Create(OBJ_SPRITE_2D);
	let path = GetCurrentScriptDirectory ~ "imgEnemy/Orb.png";
    while(!Obj_IsDeleted(Enemy))
    {
        ObjPrim_SetTexture(EnemyImage,path);
        ObjSprite2D_SetDestCenter(EnemyImage);
        ObjRender_SetScaleXYZ(EnemyImage,Scale,Scale,0);
        ObjRender_SetAngleZ(EnemyImage,0);
        Obj_SetRenderPriority(EnemyImage,0.3);
        ObjRender_SetAlpha(EnemyImage,255);
		let XX = GetTextureWidth(path)/9;
		let YY = GetTextureHeight(path);
        ObjRender_SetPosition(EnemyImage,ObjMove_GetX(Enemy),ObjMove_GetY(Enemy),0);
        dir = ObjMove_GetAngle(Enemy);
        speed = ObjMove_GetSpeed(Enemy);

            f++;
            if(f<1*FrameSpeed)
            {
                ObjSprite2D_SetSourceRect(EnemyImage,XX*0,YY*0,XX*1,YY*1);
            }
            if(f>=1*FrameSpeed && f<2*FrameSpeed)
            {
                ObjSprite2D_SetSourceRect(EnemyImage,XX*1,YY*0,XX*2,YY*1);
            }
            if(f>=2*FrameSpeed && f<3*FrameSpeed)
            {
                ObjSprite2D_SetSourceRect(EnemyImage,XX*2,YY*0,XX*3,YY*1);
            }
            if(f>=3*FrameSpeed && f<4*FrameSpeed)
            {
                ObjSprite2D_SetSourceRect(EnemyImage,XX*3,YY*0,XX*4,YY*1);
            }
            if(f>=4*FrameSpeed && f<5*FrameSpeed)
            {
                ObjSprite2D_SetSourceRect(EnemyImage,XX*4,YY*0,XX*5,YY*1);
            }
            if(f>=5*FrameSpeed && f<6*FrameSpeed)
            {
                ObjSprite2D_SetSourceRect(EnemyImage,XX*5,YY*0,XX*6,YY*1);
            }
            if(f>=6*FrameSpeed && f<7*FrameSpeed)
            {
                ObjSprite2D_SetSourceRect(EnemyImage,XX*6,YY*0,XX*7,YY*1);
            }
            if(f>=7*FrameSpeed && f<8*FrameSpeed)
            {
                ObjSprite2D_SetSourceRect(EnemyImage,XX*7,YY*0,XX*8,YY*1);
            }
            if(f>=8*FrameSpeed && f<9*FrameSpeed)
            {
                ObjSprite2D_SetSourceRect(EnemyImage,XX*8,YY*0,XX*9,YY*1);
            }
            if(f>=9*FrameSpeed)
            {
                f=0;
            }       
		if(Invincible==true)
		{
			ObjRender_SetColor(EnemyImage,0,0,0);
		}
        yield;
    }
    if(ObjEnemy_GetInfo(Enemy, INFO_LIFE) <= 0)
    {
        Obj_Delete(EnemyImage);
    }
}
task renderGhost(Enemy,Scale,FrameSpeed,Invincible)
{
    let dir = 0;
    let speed = 0;
    let f = 0;
    let f2 = 0;
    let f3 = 0;
    let Movement = false;
    let EnemyImage = ObjPrim_Create(OBJ_SPRITE_2D);
	let path = GetCurrentScriptDirectory ~ "imgEnemy/Ghost.png";
    while(!Obj_IsDeleted(Enemy))
    {
        ObjPrim_SetTexture(EnemyImage,path);
        ObjSprite2D_SetDestCenter(EnemyImage);
        ObjRender_SetScaleXYZ(EnemyImage,Scale,Scale,0);
        ObjRender_SetAngleZ(EnemyImage,0);
        Obj_SetRenderPriority(EnemyImage,0.3);
        ObjRender_SetAlpha(EnemyImage,255);
		let XX = GetTextureWidth(path)/4;
		let YY = GetTextureHeight(path);
        ObjRender_SetPosition(EnemyImage,ObjMove_GetX(Enemy),ObjMove_GetY(Enemy),0);
        dir = ObjMove_GetAngle(Enemy);
        speed = ObjMove_GetSpeed(Enemy);

            f++;
            if(f<1*FrameSpeed)
            {
                ObjSprite2D_SetSourceRect(EnemyImage,XX*0,YY*0,XX*1,YY*1);
            }
            if(f>=1*FrameSpeed && f<2*FrameSpeed)
            {
                ObjSprite2D_SetSourceRect(EnemyImage,XX*1,YY*0,XX*2,YY*1);
            }
            if(f>=2*FrameSpeed && f<3*FrameSpeed)
            {
                ObjSprite2D_SetSourceRect(EnemyImage,XX*2,YY*0,XX*3,YY*1);
            }
            if(f>=3*FrameSpeed && f<4*FrameSpeed)
            {
                ObjSprite2D_SetSourceRect(EnemyImage,XX*3,YY*0,XX*4,YY*1);
            }
            if(f>=4*FrameSpeed)
            {
                f=0;
            }
        
		if(Invincible==true)
		{
			ObjRender_SetColor(EnemyImage,0,0,0);
		}
        yield;
    }
    if(ObjEnemy_GetInfo(Enemy, INFO_LIFE) <= 0)
    {
        Obj_Delete(EnemyImage);
    }
}
task renderBug(Enemy,Scale,FrameSpeed,Invincible)
{
    let dir = 0;
    let speed = 0;
    let f = 0;
    let f2 = 0;
    let f3 = 0;
    let Movement = false;
    let EnemyImage = ObjPrim_Create(OBJ_SPRITE_2D);
	let path = GetCurrentScriptDirectory ~ "imgEnemy/Bug.png";
    while(!Obj_IsDeleted(Enemy))
    {
        ObjPrim_SetTexture(EnemyImage,path);
        ObjSprite2D_SetDestCenter(EnemyImage);
        ObjRender_SetScaleXYZ(EnemyImage,Scale,Scale,0);
        ObjRender_SetAngleZ(EnemyImage,0);
        Obj_SetRenderPriority(EnemyImage,0.3);
        ObjRender_SetAlpha(EnemyImage,255);
		let XX = GetTextureWidth(path)/4;
		let YY = GetTextureHeight(path);
        ObjRender_SetPosition(EnemyImage,ObjMove_GetX(Enemy),ObjMove_GetY(Enemy),0);
        dir = ObjMove_GetAngle(Enemy);
        speed = ObjMove_GetSpeed(Enemy);

            f++;
            if(f<1*FrameSpeed)
            {
                ObjSprite2D_SetSourceRect(EnemyImage,XX*0,YY*0,XX*1,YY*1);
            }
            if(f>=1*FrameSpeed && f<2*FrameSpeed)
            {
                ObjSprite2D_SetSourceRect(EnemyImage,XX*1,YY*0,XX*2,YY*1);
            }
            if(f>=2*FrameSpeed && f<3*FrameSpeed)
            {
                ObjSprite2D_SetSourceRect(EnemyImage,XX*2,YY*0,XX*3,YY*1);
            }
            if(f>=3*FrameSpeed && f<4*FrameSpeed)
            {
                ObjSprite2D_SetSourceRect(EnemyImage,XX*3,YY*0,XX*4,YY*1);
            }
            if(f>=4*FrameSpeed)
            {
                f=0;
            }
        
		if(Invincible==true)
		{
			ObjRender_SetColor(EnemyImage,0,0,0);
		}
        yield;
    }
    if(ObjEnemy_GetInfo(Enemy, INFO_LIFE) <= 0)
    {
        Obj_Delete(EnemyImage);
    }
}
task renderArrow(Enemy,Scale,FrameSpeed,Invincible)
{
    let dir = 0;
    let speed = 0;
    let f = 0;
    let f2 = 0;
    let f3 = 0;
    let Movement = false;
    let EnemyImage = ObjPrim_Create(OBJ_SPRITE_2D);
	let path = GetCurrentScriptDirectory ~ "imgEnemy/Arrow.png";
    while(!Obj_IsDeleted(Enemy))
    {
        ObjPrim_SetTexture(EnemyImage,path);
        ObjSprite2D_SetDestCenter(EnemyImage);
        ObjRender_SetScaleXYZ(EnemyImage,Scale,Scale,0);
        ObjRender_SetAngleZ(EnemyImage,0);
        Obj_SetRenderPriority(EnemyImage,0.3);
        ObjRender_SetAlpha(EnemyImage,255);
		let XX = GetTextureWidth(path)/8;
		let YY = GetTextureHeight(path);
        ObjRender_SetPosition(EnemyImage,ObjMove_GetX(Enemy),ObjMove_GetY(Enemy),0);
        dir = ObjMove_GetAngle(Enemy);
        speed = ObjMove_GetSpeed(Enemy);

            f++;
            if(f<1*FrameSpeed)
            {
                ObjSprite2D_SetSourceRect(EnemyImage,XX*0,YY*0,XX*1,YY*1);
            }
            if(f>=1*FrameSpeed && f<2*FrameSpeed)
            {
                ObjSprite2D_SetSourceRect(EnemyImage,XX*1,YY*0,XX*2,YY*1);
            }
            if(f>=2*FrameSpeed && f<3*FrameSpeed)
            {
                ObjSprite2D_SetSourceRect(EnemyImage,XX*2,YY*0,XX*3,YY*1);
            }
            if(f>=3*FrameSpeed && f<4*FrameSpeed)
            {
                ObjSprite2D_SetSourceRect(EnemyImage,XX*3,YY*0,XX*4,YY*1);
            }
            if(f>=4*FrameSpeed && f<5*FrameSpeed)
            {
                ObjSprite2D_SetSourceRect(EnemyImage,XX*4,YY*0,XX*5,YY*1);
            }
            if(f>=5*FrameSpeed && f<6*FrameSpeed)
            {
                ObjSprite2D_SetSourceRect(EnemyImage,XX*5,YY*0,XX*6,YY*1);
            }
            if(f>=6*FrameSpeed && f<7*FrameSpeed)
            {
                ObjSprite2D_SetSourceRect(EnemyImage,XX*6,YY*0,XX*7,YY*1);
            }
            if(f>=7*FrameSpeed && f<8*FrameSpeed)
            {
                ObjSprite2D_SetSourceRect(EnemyImage,XX*7,YY*0,XX*8,YY*1);
            }
            if(f>=8*FrameSpeed)
            {
                f=0;
            }
        
		if(Invincible==true)
		{
			ObjRender_SetColor(EnemyImage,0,0,0);
		}
        yield;
    }
    if(ObjEnemy_GetInfo(Enemy, INFO_LIFE) <= 0)
    {
        Obj_Delete(EnemyImage);
    }
}