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

    SpellID=518;

    @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(3,GetCenterX,80,20,9, 170,180);
	SetMovePositionNew(GetCenterX,150,60);
	Wait(60);
	let angle;
	let angle2;

	let colors=[WHITE60,WHITE60,RED60,YELLOW60,ORANGE60];

	MainTask2(RED12,  2, 8, 5, 2.5);
	let step=0;
	loop{
		if(lower(GetLife/2500,GetTimer2/40)<0.7&&step==0){
			MainTask2(WHITE12,2, 8, 5, 2);
			step=1;
		}
		if(lower(GetLife/2500,GetTimer2/40)<0.5&&step==1){
			MainTask2(RED02,  2, 50, 1, 1.5);
			step=2;
		}
		loop(9){
			PatchyFire(GetClipMinX,GetY,0,rand(-2,2),0,(GetClipMaxX-GetClipMinX),rand(5,40), 0,0,12, colors[rand_int(0,4)]);
			yield;
			yield;
		}
	}
}

task MainTask2(graphic,shotdelay,wavedelay,numshots,speed){
	SE("shot0");
	SE("laser2");
	let i=0;
	let i2=0;
	let dir=1;
	loop{
		i=rand_int(-40,40);
		loop(numshots){

			if(speed==2.5){
				SE("shot1");
			}
			i2=0;
			loop(6){
				CreateShot01Delay(GetClipMinX+i+i2*80,GetY,speed,90,graphic,-10, 50,10,10);
				CreateShot01Delay(GetClipMinX+i+i2*80,GetY,speed,-90,graphic,10, 50,10,10);
				i2++;
			}
			i+=dir*speed*shotdelay;
			Wait(shotdelay);
		}
		Wait(wavedelay);
		dir=-dir;

	}

}

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


	PatchyDrawLogic;

	yield;
}

@DrawLoop {
	PatchyDrawLoop;
}

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

}