script_enemy_main {
	#include_function ".\..\ShotSheet\shot_replace.dnh"
	#include_function ".\..\functions.txt"
	#include_function ".\..\s2\o_functions.txt"

	SpellID=39;

	let i=0;
	let frame=0;

    @Initialize {
	StartFunctions(1,1,0);
	Randomize;
        SetLife(2000);
        SetTimer2(30);
	SetDamageRate(100,100);
//	SetScore(50000);
	MagicCircle(false);
	OverInit;

	shotinit;

	MainTask;
	HandleShots(30);
    }


function Wait(frames){loop(frames){yield;}}

task MainTask{
	SetMovePosition03(GetCenterX,100,10,5);
	DelayBombTask;
	Wait(40);
	MainTask2;
	Wait(100);

	let colors=[YELLOW50,WHITE50];
	let color=0;
	let angle=0;
	loop{
		SE("shot3");
		DoubleLaser(GetX+40,GetY,rand(2,3),angle+90,100,10,colors[color],0);
		DoubleLaser(GetX-40,GetY,rand(2,3),angle-90,100,10,colors[color],0);
		color=1-color;
		angle+=rand(16,19);
		Wait(5);
	}
}
task MainTask2{
	SeekerLaser(GetCenterX-150,GetCenterY,90);
	Wait(20);
	SeekerLaser(GetCenterX+150,GetCenterY,90);
	Wait(20);
	SeekerLaser(GetCenterX-100,GetCenterY,90);
	Wait(20);
	SeekerLaser(GetCenterX+100,GetCenterY,90);
	Wait(100);
	let x=0;
	let y=0;
	let k=0;
	loop{
		SeekerLaser(GetPlayerX,GetPlayerY,90);
		Wait(90);
	}
}
task SeekerLaser(x,y,angle){
	let graphic=BLUE60;
	let graphic2=BLUE21;
	let w1=7;
	let w2=13;
	let len=100;
	let delay=120;
	let time=2;
	let num=15;
	let v=16;

	//SE("shot0");
	let newpos=GetLineBorderPointEX(x,y,x+cos(angle+180),y+sin(angle+180),50);

	let obj=[0,0,0];
	i=0;
	loop(3){
		obj[i]=Obj_Create(OBJ_LASER);
		Obj_SetPosition(obj[i],newpos[1],newpos[2]);
		Obj_SetAngle(obj[i],angle);
		ObjShot_SetGraphic(obj[i],graphic);
		Obj_SetCollisionToPlayer(obj[i],false);
		Obj_SetAutoDelete(obj[i],false);
		ObjLaser_SetLength(obj[i],600);
		ObjLaser_SetSource(obj[i],false);
		i++;
	}
	Obj_SetAlpha(obj[0],220);
	let xv=cos(angle+90);
	let yv=sin(angle+90);
	let percentage=0;
	let frame=0;
	loop(delay){
		if(frame%3==0){
			ObjLaser_SetWidth(obj[0],w1*rand(0.5,1));
			ObjLaser_SetWidth(obj[1],w1*rand(0.25,0.5));
			ObjLaser_SetWidth(obj[2],w1*rand(0.25,0.5));
		}
		percentage+=1/delay;
		Obj_SetAlpha(obj[1],percentage*190);
		Obj_SetAlpha(obj[2],percentage*190);
		Obj_SetPosition(obj[1],newpos[1]+xv*(1-percentage)*40,newpos[2]+yv*(1-percentage)*40);
		Obj_SetPosition(obj[2],newpos[1]-xv*(1-percentage)*40,newpos[2]-yv*(1-percentage)*40);
		frame++;
		yield;
	}
	ObjShot_FadeDelete(obj[0]);
	Obj_Delete(obj[1]);
	Obj_Delete(obj[2]);
	loop(num){
		SE("laser1");
		SeekerLaser2(newpos[1],newpos[2],angle,graphic2,len,w2,rand(0,360),v);
		Wait(time);
	}
}
task SeekerLaser2(x,y,angle,graphic,len,width,xphase,yv){
	let obj=Obj_Create(OBJ_LASER);
	Obj_SetPosition(obj,x,y);
	Obj_SetAngle(obj,angle);
	ObjShot_SetGraphic(obj,graphic);
	Obj_SetAutoDelete(obj,false);
	ObjLaser_SetLength(obj,len);
	ObjLaser_SetWidth(obj,width);
	ObjLaser_SetSource(obj,false);
	let xv1=cos(angle);
	let yv1=sin(angle);
	let xv2=cos(angle+90);
	let yv2=sin(angle+90);
	x-=xv1*len;
	y-=yv1*len;
	loop((len+600)/yv){
		Obj_SetPosition(obj,x+sin(xphase)*5*xv2,y+sin(xphase)*5*yv2);
		xphase+=13;
		if(rand_int(0,6)==0){
			xphase+=rand(30,50);
		}
		x+=yv*xv1;
		y+=yv*yv1;
		yield;
	}
	Obj_Delete(obj);
}


task DoubleLaser(x,y,v,a,l,w,g,d){
	CreateLaser01(x,y,v,a,l,w,g,0);
	CreateShot01Delay(x,y,v,a,g,(-l/v)*0.1,0,0,0);
	CreateShot01Delay(x,y,v,a,g,(-l/v)*0.9,0,0,0);
//	Wait(((l/2)/v)*0.7+d);
//	CreateLaser01(x,y,v,a,l/2,w,g,0);
}

    @MainLoop {
        SetCollisionA(GetX, GetY, 40);
	SetCollisionB(GetX, GetY, 20);

	OverloadDrawLogic;
	yield;
}
    @DrawLoop {
	OverloadDrawLoop;
}

    @Finalize {
	OverFinalize;
	EndingFunc(2);
	PointItems(GetX,GetY,2,0);
    }
}