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

	SpellID=84;

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

	shotinit;

	MainTask;
    }
let shapex=[];
let shapey=[];
let shapec=[];

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

task MainTask{
	SetMovePosition03(GetCenterX,120,10,5);
	DelayBombTask;
	Wait(60);
	let angle=0;
	let i=0;
	let k=0;
	let numshots=8;
	numshots*=4;
	let random;
	let pattern=[0,0];
	loop{
		random=rand(5,15);
		pattern=[rand_int(0,2)*90,RandDir];
		angle=0;
		i=0;
		loop(numshots){
			MainShot(GetX,GetY,5,angle,absolute(i%(numshots/4)-(numshots/8)),[WHITE59,RED58,PURPLE21],[AQUA21,GREEN21],2,random,1,pattern,[0,1] );
			angle-=360/numshots;
			i++;
		}
		SE("laser4");
		SE("shot2");
		SE("shot3");
		MoveRandom(100,15, GetClipMinX+70,80,GetClipMaxX-70,150, 150, 130);
		Wait(130);

		random=rand(-5,-15);
		pattern=[rand_int(0,2)*90,RandDir];
		angle=0;
		i=0;
		loop(numshots){
			MainShot(GetX,GetY,5,angle,absolute(i%(numshots/4)-(numshots/8)),[WHITE59,BLUE58,GREEN21],[YELLOW21,PURPLE21],2,random,-1,pattern,[2,3] );
			angle+=360/numshots;
			i++;
		}
		SE("laser4");
		SE("shot2");
		SE("shot3");
		MoveRandom(100,15, GetClipMinX+70,80,GetClipMaxX-70,150, 150, 130);
		Wait(130);

	}
}
task MainShot(x,y,maxv,a,time,graphic,delaygraphic,splits,angleadd,dir,pattern,linecolor){
	let obj=Obj_Create(OBJ_SHOT);
	Obj_SetPosition(obj,x,y);
	Obj_SetAngle(obj,a);
	ObjShot_SetGraphic(obj,graphic[0]);
	if(splits>0){
		Obj_SetAutoDelete(obj,false);
	}
//	Obj_SetSpeed(obj,v);
//	Wait(time*5+19);
	let v=maxv;
	let vadd=v/(time*8+15);
	if(splits==0){
		v=0;
	}
	loop(time*8+15){
		if(splits>0){
			v-=vadd;
		}else{
			v+=vadd;
		}
		Obj_SetSpeed(obj,v);
		yield;
	}
	let kadd=[-90,-180,90,0];
	if(splits>0){
		DelayEffect(Obj_GetX(obj),Obj_GetY(obj),delaygraphic[0],10);
		ShapeAdd(Obj_GetX(obj),Obj_GetY(obj),linecolor[0]);
		let k=angleadd+pattern[0]*dir;
		let loops=0;
		loop(4){
			MainShot(Obj_GetX(obj),Obj_GetY(obj),maxv*0.6,a+k,time,erase(graphic,0),erase(delaygraphic,0),splits-1,angleadd,dir,pattern,erase(linecolor,0));
			k+=kadd[loops]*dir*pattern[1];
			loops++;
		}
		Obj_Delete(obj);
	}
}
function ShapeAdd(x,y,c){
	shapex=shapex~[x];
	shapey=shapey~[y];
	shapec=shapec~[c];
}

let linecolors=[[50,255,255],[50,255,50],[255,255,50],[255,50,255]];

let i=0;

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

	yield;
	i=0;
	loop(length(shapex)-1){
		Line(shapex[i],shapey[i],shapex[i+1],shapey[i+1],1.3,255,30,4,ADD,linecolors[shapec[i]]);
		i++;
	}
	if(i>0){
		Line(shapex[0],shapey[0],shapex[i],shapey[i],1.3,255,30,4,ADD,linecolors[shapec[0]]);
	}
	shapex=[];
	shapey=[];
	shapec=[];
	YukariDrawLogic;
}

    @DrawLoop {
	YukariDrawLoop;	
}


    @Finalize {
	YukariFinalize;
	EndingFunc(3);
	PointItems(GetX,GetY,3,0);
	SetShotAutoDeleteClip(64,64,64,64);
    }

}