script_enemy_main {
	#include_function ".\..\ShotSheet\shot_replace.dnh"
	#include_function ".\..\functions.txt"
	#include_function ".\..\s3\y_functions.txt"

	SpellID=61;

	let i=0;
	let frame=0;
	let endtrack=false;

    @Initialize {
	StartFunctions(1,0,0);
	Randomize;
        SetLife(3000);
        SetTimer2(45);
	SetDamageRate(100,100);
	MagicCircle(false);
	SetEnemyMarker(true);
	YumemiInit;

	shotinit;

	CutIn2(4,"Strawberry Science [Dimensional Dream]");
	SpellCircle2(4,1,4,250);
	SetShotAutoDeleteClip(10,10,10,10);

	MainTask;
    }


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

task MainTask{
	SetBG(4);
	MoveTaskY(100,60);
	DelayBombTask;
	Wait(120);
	MainTask2;
	LaserTrackFixed(4*12);
	let x=-1;
	loop(3){
		MainCross(GetCenterX+x*150,GetCenterY,180,50);
		Wait(24);
		x++;
	}
	Wait(140);
	loop{
		LaserTrack;
		loop(3){
			while(OnPlayerMissed){yield;}
			Wait(24);
			MainCross(GetPlayerX,GetPlayerY,180,50);
		}
		endtrack=true;
		Wait(140);
	}
}
task LaserTrack{
	endtrack=false;
	while(!endtrack){
		YumemiAttack(2);
		Line(GetYuHandX,GetYuHandY,GetPlayerX,GetPlayerY,2,128,20,2,ADD,[0,255,0]);
		yield;
		yield;
	}
	YumemiAttack(10);
}
task LaserTrackFixed(time){
	let x=-1;
	YumemiAttack(time+10);
	loop(time){
		Line(GetYuHandX,GetYuHandY,GetCenterX+x*150,GetCenterY,2,128,20,2,ADD,[0,255,0]);
		x+=2/(time);
		yield;
	}
}
task MainTask2{
	let angle=0;
	let k=0;
	let dist=0;
	loop{
		angle=prand(0,360);
		loop(10){
			k=0;
			dist=1;
			loop(7){
				CreateShot01B(GetX,GetY,2,angle+k*3,BLUE58,prand(0,20),dist*6);
				dist=1-dist;
				k++;
			}
			angle+=360/10;
		}
		angle=prand(0,360);
		loop(10){
			k=0;
			dist=1;
			loop(7){
				CreateShot01B(GetX,GetY,1.4,angle+k*3,BLUE58,prand(0,20),dist*6);
				dist=1-dist;
				k++;
			}
			angle+=360/10;
		}
		SE("shot2");
		CreateExplosionFlatEX(0,GetX,GetY,0.1,[50,50,150],0.3,60);
		CreateExplosionFlatEX(0,GetX,GetY,0.1,[50,50,150],0.5,60);
		Wait(70);
	}
}

task CreateShot01B(x,y,v,a,g,animoffset,d){
	Wait(d);
	animoffset=trunc(animoffset);
	Wait(animoffset);
	CreateShot01(x+cos(a)*v*animoffset,y+sin(a)*v*animoffset,v,a,g,0);
}



task MainCross(x,y,time,delay){
	Cross(x,y,time,delay);
	let angle=prand(0,360);
	let radius=130;
	let radiusadd=radius/delay;
	loop(delay){
		ImageCircle(imgWhite,0,0,5,5,x,y,radius,3,3,angle,2,255,ALPHA,100,255,100);
		radius-=radiusadd;
		angle+=7;
		yield;
	}
	Wait(20);
	let angle=prand(0,360);
	loop(17){
		CreateShot01(x,y,2,angle,WHITE56,0);
		angle+=360/17;
	}
	angle+=360/34;
	loop(17){
		CreateShot01(x,y,1.5,angle,WHITE56,0);
		angle+=360/17;
	}
}
task DelayLine(x,y,width,alpha,time,layer,renderstate,color,delay){
	Wait(delay);
	Line(GetX,GetY,x,y,width,alpha,time,layer,renderstate,color);
}
task MoveTaskY(y,time){
	let cury=GetY;
	y=y-cury; //difference
	let frame=1;
	loop(time){
		SetY(cury+sin(frame*(90/time))*y);
		frame++;
		yield;
	}
}

    let yumemix=GetX;
    @MainLoop {
        SetCollisionA(GetX, GetY, 70);
	SetCollisionB(GetX, GetY, 20);

	yumemix+=(GetPlayerX-yumemix)/300;
	SetX(yumemix);

	YumemiDrawLogic;
	yield;
}
    @DrawLoop {
	YumemiDrawLoop;
}


    @Finalize {
	SetShotAutoDeleteClip(64,64,64,64);
	YumemiFinalize;
	PointItems(GetX,GetY,3,1);
	EndingFunc(3);
    }
}