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

	SpellID=59;

	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(90);
	LaserTrackFixed(40);
	let x=-1;
	loop(2){
		MainCross(GetCenterX+x*100,GetCenterY,180,90);
		Wait(40);
		x+=2;
	}
	Wait(80);
	loop{
		LaserTrack;
		loop(4){
			while(OnPlayerMissed){yield;}
			Wait(40);
			MainCross(GetPlayerX,GetPlayerY,180,90);
		}
		endtrack=true;
		Wait(100);
	}
}
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*100,GetCenterY,2,128,20,2,ADD,[0,255,0]);
		x+=2/(time);
		yield;
	}
}

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(15){
		CreateShot01(x,y,1.5,angle,GREEN56,0);
		angle+=360/15;
	}
	angle+=360/(15*2);
	loop(15){
		CreateShot01(x,y,1,angle,YELLOW56,0);
		angle+=360/15;
	}
}
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);
    }
}