script_enemy_main {
    let GCSD=GetCurrentScriptDirectory;
    #include_function ".\..\ShotSheet\shot_replace.dnh"
    #include_function ".\..\functions.txt"
    #include_function ".\patchy_functions.txt"

    SpellID=512;

    @Initialize {
        SetLife(2500);
        SetTimer2(40);
	SetDamageRate(80,40);
	MagicCircle(false);
	SetEnemyMarker(true);
	PatchyInit;
	MainTask;
	shotinit;
    }


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

task MainTask{
	DelayBombTask;
	yield;
	PatchyElement(1,GetCenterX,100,20,9, 170,180);
	SetMovePositionNew(GetCenterX,170,60);
	Wait(60);
	let angle;
	let frame=0;
	let angle2=GetAngleToPlayer;
	MainTask2;
	MoveTask;
	loop{
		angle=cos(frame*5)*40+50;
		CreateLaser01(GetX,GetY,4,angle2+angle,100,30,SP04,0);
		CreateLaser01(GetX,GetY,4,angle2-angle,100,30,SP04,0);

		if(angle/2>=25&&frame>30){
			CreateLaser01(GetX,GetY,4,angle2+(angle/2-25),100,30,SP04,0);
			CreateLaser01(GetX,GetY,4,angle2-(angle/2-25),100,30,SP04,0);
		}


		angle2+=AngularDistance(angle2,GetAngleToPlayer)/5;

		Wait(3);
		frame++;
	}
}
task MainTask2{
	let angle=-90;
	let color=2;
	let mindistance=160;
	let colorarray=[[100,255,100],[100,255,255],[100,100,255]];
	loop{
		CreateExplosionFlatEX(2,GetX,GetY,1,colorarray[color%3],1,60);
		SE("shot1");
		loop(30){
			if(absolute(AngularDistance(angle,GetAngleToPlayer))>mindistance){
				CreateShot01(GetX,GetY,2,angle,GREEN01+color%3,0);
			}
			angle+=360/30;
		}
		color++;
		Wait(18);
		mindistance-=10;
		angle+=360/60;
	}
}
task MoveTask{
	loop{
		Wait(140);
		MoveRandom(40,0,GetClipMinX+100,0,GetClipMaxX-100,500,200,80);
	}
}

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


	PatchyDrawLogic;

	yield;
}

@DrawLoop {
	PatchyDrawLoop;
}

@Finalize {
	EndingFunc(6);
	PatchyFinalize;
	PointItems(GetX,GetY,7,0);
}

}