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

	SpellID=89;

	let i=0;
	let frame=0;

    @Initialize {
	StartFunctions(1,0,0);
	Randomize;
        SetLife(4000);
        SetTimer2(60);
	SetDamageRate(100,100);
	MagicCircle(false);
	SetBG(5);
	YukariInit;
	shotinit;

	CutIn2(5,"Unexpected Cat [Pentagram Flight]");
	LastSpellEffect;
	SpellCircle2(9,2,4,255);
	SetShotAutoDeleteClip(80,80,80,80);

	MainTask;
    }

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

let shotangle=0;

task MainTask{
	SetX(GetClipMaxX+50);
	SetY(GetCenterY+150);

	let x=GetCenterX+rand(-10,10);
	let y=180+rand(-10,10);


	SetMovePositionNew(GetClipMinX+80,y,60);
	Wait(60);
	SetMovePositionNew(GetCenterX+100,y+50,40);
	Wait(60);
	SetMovePositionNew(x,y-100,40);
	Wait(50);
	DelayBombTask;

	let angle;
	let dir=1;
	let time;

	loop{
		shotangle=rand(0,360);
		time=340;
		angle=-90+(360/5)*2*dir;
		loop(5){
			StarMove(x+cos(angle)*110,y+sin(angle)*100,12,-dir,time);
			angle+=(360/5)*2*dir;
			Wait(12);
			time-=12;
		}
		ChenMoveTask(340-5*12+6+114,5,0.7);
		Wait(340-5*12);
		ShakeScreen(4,40);
		loop(3){
			SE("shot1");
			Wait(2);
		}
		dir=-dir;
		x=GetCenterX+rand(-20,20);
		y=180+rand(-20,20);

		Wait(114);
	}
}

task StarMove(x,y,time,dir,shakedelay){
	SE("shot2");
	let colors=[0,0,5];
	let k=0;
	let i=0;
	let angle;
	loop(15){
		i=0;
		loop(5){
			angle=k*24+i*6*dir+shotangle;
			CreateShotA(0,GetX,GetY,0);
			SetShotDataA(0,0,1+i/4,angle,0,-(1+i/4)/120,0,colors[dir+1]+RED11);
			SetShotDataA(0,120,0,NULL,(120*dir+rand_int(-2,2)*180)/30,0,0,NULL);
			SetShotDataA(0,90+60,0,angle+120*dir,0,1.5/120,1.5,NULL);

			SetShotDataA(0,shakedelay,0.5,NULL,0.5*dir,0.5/120,1.5,colors[dir+1]+RED21);
			SetShotDataA(0,shakedelay+400,NULL,NULL,0,0,0,NULL);

			FireShot(0);
			i++;
		}
		k++;
	}


	let obj=Obj_Create(OBJ_LASER);
	Obj_SetPosition(obj,GetX,GetY);
	Obj_SetAngle(obj,atan2(y-GetY,x-GetX));
	let dist=distance(GetX,GetY,x,y)^0.5;

	let colors2=[[255,100,100],[0,0,0],[100,100,255]];
	SetMovePosition02(x,y,time);
	loop(3){
		CreateExplosionEX(0,GetX,GetY,1,colors2[-dir+1],rand(0.05,0.2),rand(30,70));
	}
	CreateExplosionFlatEX(3,GetX,GetY,1,[255,100,255],0.5,20);

	ObjShot_SetGraphic(obj,WHITE21);
	ObjLaser_SetWidth(obj,30);
	ObjLaser_SetSource(obj,false);
	let len=0;
	let lenadd=dist/time;
	loop(time){
		len+=lenadd;
		ObjLaser_SetLength(obj,len);
		yield;
	}
	ObjLaser_SetLength(obj,dist);
	let alpha=255;
	let alphaadd=255/60;
	loop(60){
		Obj_SetAlpha(obj,alpha);
		alpha-=alphaadd;
		yield;
	}

	Obj_Delete(obj);
}
    @MainLoop {
        SetCollisionA(GetX, GetY, 40);

	ChenDrawLogic;
	yield;
}
    @DrawLoop {
	ChenDrawLoop;
}

    @Finalize {
	YukariFinalize;
	PointItems(GetX,GetY,3,2);
	EndingFunc(3);
    }
}