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

	SpellID=76;

	let i=0;
	let frame=0;

    @Initialize {
	StartFunctions(1,1,0);
	Randomize;
        SetLife(2500);
        SetTimer2(35);
	SetDamageRate(100,80);
	MagicCircle(false);
	SetEnemyMarker(true);
	SetShotAutoDeleteClip(150,150,150,50);
	YukariInit;

	shotinit;

	MainTask;
    }

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

let colorshot=[GREEN31,BLUE31,PURPLE31,WHITE31];

task MainTask{
	SetMovePosition03(GetCenterX,120,10,5);
	DelayBombTask;
	loop{
//		ImageCharge(imgYukari1,1,186,65,250,32,200,1200,1,255,155,255,[-2,2],[0,0]);

//		Wait(1200);
		ImageCharge(imgYukari1,1,186,65,250,52,200,30,2,155,255,155,[-2,0],[0,0]);
//		NewCharge(30,3,5,0,255,0);
		Wait(60);
		MainShot(GetX,GetY,90-60,0);
		SetMovePositionNew(center(GetClipMinX+130,GetX+prand(-80,80),GetClipMaxX-130),prand(100,150),160);
		Wait(80);
		ImageCharge(imgYukari1,1,186,65,250,52,200,30,2,255,155,255,[0,2],[0,0]);
//		NewCharge(30,3,5,255,0,255);
		Wait(60);
		MainShot(GetX,GetY,90+60,1);
		SetMovePositionNew(center(GetClipMinX+130+80,GetX,GetClipMaxX-130-80)+prand(-80,80),prand(100,150),160);
		Wait(80);
	}
}
let shottype=[3,6];
task MainShot(x,y,angle,color){
	MainShot2(x,y,(90-angle)/2+90,color);
	SE("laser3");
	let xmove=cos(angle)*10;
	let ymove=sin(angle)*10;
	loop(11){
		//ShotTrail(x,y,color);
		CreateExplosionFlat(0,x,y,1,[64+color*64,128-color*64,64+color*64],0.1);
		x+=xmove;
		y+=ymove;
		yield;
		yield;
	}
	CreateExplosionFlatEX(3,x,y,1,[180,180,180],0.25,64);
	CreateExplosionFlatEX(3,x,y,1,[120,120,120],1,32);
	SE("shot2");
	SE("shot1");
	let k1=20;	//distance
	let k2=rand(0,360);	//angle of spawn
	let k3=0;	//angle of bullet
	loop(3){
		k2+=360/8;
		loop(8){
			k3=0;
			DelayEffect(x+cos(k2)*k1,y+sin(k2)*k1,RED01+shottype[color],25);
			loop(4){
				CreateShot02(x+cos(k2)*k1,y+sin(k2)*k1,0,k3+k2,0.05,prand(1,2),RED52+shottype[color],0);
				k3+=360/4;
			}
			k2+=360/8;
		}
		k1+=30;
		Wait(10);
	}
}
task MainShot2(x,y,angle,color){
	let xmove=cos(angle)*12;
	let ymove=sin(angle)*12;
	loop(11){
		//ShotTrail(x,y,color);
		CreateExplosionFlat(0,x,y,1,[64+color*64,128-color*64,64+color*64],0.1);
		x+=xmove;
		y+=ymove;
		yield;
		yield;
	}
	CreateExplosionFlatEX(3,x,y,1,[180,180,180],0.25,64);
	CreateExplosionFlatEX(3,x,y,1,[120,120,120],1,32);
	let k=prand(0,360);
	let k2=0;
	let count=0;
	loop(10){
		k2=0;
		loop(4){
			YuCreateShot(x,y,3,(1+count%2)*0.6,40,k+k2*90,RED54+shottype[color]-1,count*1);
			k2++;
		}
		count++;
		k2++;
		k+=360/(10*4);
	}
}
task YuCreateShot(x,y,v1,v2,time,angle,graphic,delay){
	let obj=Obj_Create(OBJ_SHOT);
	Obj_SetPosition(obj,x+1000,y);
	Obj_SetSpeed(obj,v1);
	Obj_SetAngle(obj,angle);
	ObjShot_SetGraphic(obj,graphic);
	Obj_SetAutoDelete(obj,false);
	let vchange=(v2-v1)/time;
	let frame=0;
	loop(time){
		if(delay==0){
			Obj_SetX(obj,Obj_GetX(obj)-1000);
			if(frame>0){
				DelayEffect(Obj_GetX(obj),Obj_GetY(obj),graphic,40);
			}
		}
		delay--;
		v1+=vchange;
		Obj_SetSpeed(obj,v1);
		frame++;
		yield;
	}
	if(delay>0){
		loop(delay){yield;}
		Obj_SetX(obj,Obj_GetX(obj)-1000);
		DelayEffect(Obj_GetX(obj),Obj_GetY(obj),graphic,20);
	}
	Obj_SetAutoDelete(obj,true);
}

task ShotTrail(x,y,color){
	let obj = Obj_Create(OBJ_EFFECT);
	let n=0;

	Obj_SetPosition   (obj, x,y);
	Obj_SetSpeed	  (obj, 0);
	Obj_SetAngle(obj, 0);
	ObjEffect_SetTexture(obj,imgWhite);
	ObjEffect_SetPrimitiveType(obj,PRIMITIVE_TRIANGLESTRIP);
	ObjEffect_SetLayer(obj,3);
	ObjEffect_CreateVertex(obj,3);
	ObjEffect_SetRenderState(obj,ALPHA);
	Obj_SetColor(obj,3,200,color*255,255-color*255,color*255);

	let k=0;
	loop(3){
		ObjEffect_SetVertexXY(obj,k/120,cos(k)*10,sin(k)*10);
		ObjEffect_SetVertexUV(obj,k/120,cos(k)*10,sin(k)*10);
		k+=120;
	}

	let size=20;
	let angle=prand(0,360);
	loop(20){
		ObjEffect_SetScale(obj,size/4,size/4);
		ObjEffect_SetAngle(obj,0,0,angle);
		size--;
		angle+=20;
		yield;
	}
	Obj_Delete(obj);
}
    @MainLoop {
        SetCollisionA(GetX, GetY, 40);
	SetCollisionB(GetX, GetY, 20);

	yield;
	YukariDrawLogic;
}


    @DrawLoop {
	YukariDrawLoop;	
}


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

}