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

    SpellID=514;

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


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

task MainTask{
	DelayBombTask;
	yield;
	PatchyElement(4,GetCenterX,200,20,9, 170,180);
	SetMovePositionNew(GetCenterX,100,60);
	Wait(50);
	let k=0;
	MainTask2;
	loop{
		SE("shot2");
		k=-2;
		loop(10){
			CreateShot01(GetX,GetY,3,GetAngleToPlayer+k*36,ORANGE03,0);
			k++;
		}
		Wait(40);
	}
}
task MainTask2{
	loop{
		SE("shot1");
		MainShot(0);
		MainShot(1);
		Wait(4);
	}
}

task MainShot(num){
	let k=0;
	let angle=0;
	let v;
	let x;let y;
	let graphic=[0,1,7][rand_int(0,2)];

	if(num==0){
		angle=GetAngleToPlayer+rand(-90,90);
		x=GetX+cos(angle)*50;
		y=GetY+sin(angle)*50;

		DelayNew(x,y,angle,50,20,RED04+graphic,30,30);
		Wait(30);
		
		CreateShotA(0,x,y,0);
		v=rand(2,4);
		SetShotDataA(0,0,v,angle,0,-v/80,0,RED04+graphic);
		angle=GetAngleToPlayer+rand(-40,40);
		v=rand(1.5,3);
		SetShotDataA(0,40,0,angle,0,v/140,v,NULL);
		FireShot(0);
	}else{

		angle=GetAngleToPlayer+rand(-90,90);
		x=GetX+cos(angle)*50;
		y=GetY+sin(angle)*50;

		DelayNew(x,y,angle,50,20,RED23+graphic,30,30);
		Wait(30);

		angle=GetAngleToPlayer+rand(-90,90);
		CreateShotA(0,x,y,0);
		v=rand(2,4);
		SetShotDataA(0,0,v,angle,0,-v/80,0,RED23+graphic);
		angle=GetAngleToPlayer;
		v=rand(1.5,3);
		SetShotDataA(0,40,0,angle,0,v/140,v,NULL);
		FireShot(0);
	}
}

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


	PatchyDrawLogic;

	yield;
}

@DrawLoop {
	PatchyDrawLoop;
}

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

}