
	let GCSD=GetCurrentScriptDirectory;

	let imgEnder1=GPSD~"img\ender.png";

	let nameopacity=0;
	let EnderFrame=0;
	let enderyoffset=0;
	let enderwingangle=0;
	let enderwingdir=1;
	let enderopacity=1;

function EnderDrawLogic{
	framecheckmain++;

	EnderFrame++;

	enderyoffset=sin(EnderFrame*4)*3;
//	enderwingangle+=enderwingdir*4;
//	if(enderwingangle>=40){enderwingdir=-1;}
//	if(enderwingangle<=0){enderwingdir=1;}
	enderwingangle=sin(EnderFrame*8)*20+20;

	SetRenderTarget("enderwings");
	ClearRenderTarget("enderwings");

        SetTexture(imgEnder1);
	SetGraphicScale(1,1);
	SetAlpha(255);
	SetGraphicAngle(0,0,75);
	SetGraphicRect(450,EnderFrame*1.5,470,EnderFrame*1.5+50);	//pulse
	DrawGraphic(68,160);
	SetGraphicRect(450,EnderFrame*1.5+128,470,EnderFrame*1.5+50+128);	//pulse
	DrawGraphic(168,160);

	SetGraphicAngle(0,0,99);
	SetGraphicRect(450,EnderFrame*-1.5+128,470,EnderFrame*-1.5+50+128);	//pulse
	DrawGraphic(65,175);
	SetGraphicRect(450,EnderFrame*-1.5+128+64,470,EnderFrame*-1.5+50+128+64);	//pulse
	DrawGraphic(165,175);

	SetGraphicRect(0,120,100,220);	//wing membrane

	SetAlpha((trunc(EnderFrame/3)%2)*40+215);
	SetGraphicAngle(0,0,0);

	SetGraphicScale(1,1);
	DrawGraphic(50,50);

	if(EnderFrame%2==0&&GetPlayerEx==6){
		if(rand_int(0,10)==0){
			enderopacity=rand(0.5,0.9);
		}else{
			enderopacity=1-(EnderFrame/2%2)*0.2;
		}
	}
	
	SetRenderTarget("DEFAULT");

	CyberDrawLogic(30,50);
}
sub EnderDrawLoop{
	CyberDraw;

	SetRenderState(ALPHA);
	SetColor(255,255,255);

        SetTexture(imgEnder1);
	SetAlpha(255*enderopacity);

	SetGraphicRect(300,100,400,240);	//tail
	SetGraphicScale(1,1);
	SetGraphicAngle(0,0,sin(EnderFrame)*5);
	DrawGraphic(GetX,GetY+enderyoffset);

	SetTexture("enderwings");
	SetGraphicAngle(enderwingangle+10,0,0);

	SetGraphicScale(1,1);
	SetGraphicRect(0,0,100,100);	//wing membrane
	DrawGraphic(GetX,GetY+enderyoffset);
	SetGraphicRect(0,100,100,200);	//wing membrane pulse
	DrawGraphic(GetX,GetY+enderyoffset);
	SetGraphicScale(-1,1);
	SetGraphicRect(0,0,100,100);	//wing membrane
	DrawGraphic(GetX,GetY+enderyoffset);
	SetGraphicRect(100,100,200,200);	//wing membrane pulse
	DrawGraphic(GetX,GetY+enderyoffset);

	SetTexture(imgEnder1);
	SetGraphicRect(100,120,200,220);	//wing metal
	SetGraphicScale(1,1);
	DrawGraphic(GetX,GetY+enderyoffset);
	SetGraphicScale(-1,1);
	DrawGraphic(GetX,GetY+enderyoffset);


	SetGraphicRect(trunc(EnderFrame/5%4)*100,0,100+trunc(EnderFrame/5%4)*100,100);	//body
	SetGraphicScale(1,1);
	SetGraphicAngle(0,0,0);
	DrawGraphic(GetX,GetY+enderyoffset);

	SetGraphicRect(200,120,300,220);	//eye
	SetAlpha((trunc(EnderFrame/2)%2)*150+105);
	DrawGraphic(GetX,GetY+enderyoffset);
	

	DrawFunctions;
}
	let bginit=0;

task FlameShot{
	let angleadd=rand(-2,2);
	let obj=Obj_Create(OBJ_LASER);
	Obj_SetPosition(obj,GetX+rand(-10,10),GetY+rand(-10,10));
	Obj_SetAngle(obj,GetAngleToPlayer+rand(-10,10));
	ObjShot_SetGraphic(obj,SP01);
	ObjLaser_SetSource(obj,false);
	ObjLaser_SetWidth(obj,rand(10,40));
	Obj_SetCollisionToPlayer(obj,false);
	let v=rand(1,7);
	let len=0;
	let alpha=255;
	let time=rand(10,30);
	loop(time){
		len+=v;
		ObjLaser_SetLength(obj,len);
		Obj_SetAlpha(obj,alpha);
		alpha-=255/time;
		yield;
	}
	Obj_Delete(obj);
}

task DiscardedShell{
	let obj=Obj_Create(OBJ_SHOT);
	let x=GetX;
	let y=GetY;
	ObjShot_SetGraphic(obj,ORANGE53);
	Obj_SetCollisionToPlayer(obj,false);
	let v=rand(1,7);
	let len=0;
	let alpha=255;
	let time=rand(50,70);
	let angle=rand(0,360);
	let angleadd=rand(-5,5);
	let xv=rand(1,3);
	let yv=rand(-1,-3);
	loop(time){
		Obj_SetPosition(obj,x,y);
		x+=xv;
		y+=yv;
		yv+=0.1;
		Obj_SetAngle(obj,angle);
		angle+=angleadd;
		Obj_SetAlpha(obj,alpha);
		alpha-=255/time;
		yield;
	}
	Obj_Delete(obj);
}


sub EnderInit{
	CreateRenderTarget("enderwings",512,512);
	if(GetPlayerEx==6){
		imgEnder1=GPSD~"img\ender2.png";
	}
}
sub EnderFinalize{
	DeleteGraphic("enderwings");
}
