script_enemy_main {
	#include_function ".\..\ShotSheet\shot_replace.dnh"
	#include_function ".\..\functions.txt"
	#include_function ".\..\s2\o_functions.txt"

	SpellID=37;

	let i=0;
	let frame=0;
	let position=-1;
	let moving=0;

    @Initialize {
	StartFunctions(1,0,0);
	Randomize;
        SetLife(3000);
        SetTimer2(40);
	SetDamageRate(100,100);
	SetBG(3);
	MagicCircle(false);
	SetEnemyMarker(true);
	OverInit;
	SetInvincibility(100);
	SpellCircle2(3,1,10,200);

	shotinit;

	CutIn2(2,"Magnet [Phalanx Projection]");

	MainTask;
	HandleShots(10);
    }


function Wait(frames){loop(frames){yield;}}
let colors=[RED50,WHITE50,ORANGE50,WHITE50];
//let colors=[RED50,WHITE50,ORANGE50];
//let colors=[YELLOW03,WHITE03,BLUE03,WHITE03];

	let armangle=0;
	let armspeed=8;

task MainTask{
	SetMovePosition03(GetCenterX,GetCenterY-150,10,5);
	DelayBombTask;
	let i=0;
	let angle=0;
	PrepareArms;
	Wait(100);
	moving=0;
	RotateArms;
	Lazorz;
	loop{
		angle=GetAngleToPlayer;
		Move(1);
		FireShots(90);
		switchdir(120,-1);
		Waiting;
		Move(-1);
		FireShots(90);
		switchdir(120,1);
		Waiting;
	}
}
function Waiting{
	Wait(50);
	MagnetShot(GetX,GetY,2,GetAngleToPlayer,200, 250,0.3);


	CreateLaser01(GetX+cos(armangle)*50,GetY+sin(armangle)*50,3-(i/5),GetAngleToPlayer,270,10,WHITE22,i*1);
	CreateLaser01(GetX-cos(armangle)*50,GetY-sin(armangle)*50,3-(i/5),GetAngleToPlayer,270,10,WHITE22,i*1);

	CreateLaser01(GetX+cos(armangle)*50,GetY+sin(armangle)*50,3-(i/5),GetAngleToPlayer+40,270,10,WHITE22,i*1);
	CreateLaser01(GetX-cos(armangle)*50,GetY-sin(armangle)*50,3-(i/5),GetAngleToPlayer+40,270,10,WHITE22,i*1);
	CreateLaser01(GetX+cos(armangle)*50,GetY+sin(armangle)*50,3-(i/5),GetAngleToPlayer-40,270,10,WHITE22,i*1);
	CreateLaser01(GetX-cos(armangle)*50,GetY-sin(armangle)*50,3-(i/5),GetAngleToPlayer-40,270,10,WHITE22,i*1);


	Wait(100);
}
task Move(dir){
	SetMovePositionHermite(GetCenterX+160*dir,GetCenterY-50, 200,90+50*dir, 200,90-90*dir, 60);
	Wait(15);
	moving=1;
	Wait(45);
	SetMovePositionHermite(GetCenterX,GetCenterY-150, 400,90-90*dir, 0,90, 120);
	Wait(30);
	moving=0;
}
function FireShots(time){
	loop(time/2){
		SE("shot1");
		NormalShot(GetX+cos(armangle)*60,GetY+sin(armangle)*60,0,0,colors[prand_int(0,3)],false);
		NormalShot(GetX+cos(armangle+180)*60,GetY+sin(armangle+180)*60,0,0,colors[prand_int(0,3)],false);
		Wait(2);
	}
}
task switchdir(time,dir){
	loop(time){
		armspeed+=(16/time)*dir;
		yield;
	}
}
task PrepareArms{
	let angle=-45*8;
	let aadd=0;
	loop(10){
		SetArmPosition(0,GetX-cos(angle)*60,GetY-sin(angle)*60);
		SetArmPosition(1,GetX+cos(angle)*60,GetY+sin(angle)*60);		
		yield;
	}
	loop(90){
		SetArmPosition(0,GetX-cos(angle)*60,GetY-sin(angle)*60);
		SetArmPosition(1,GetX+cos(angle)*60,GetY+sin(angle)*60);
		angle+=aadd;
		aadd+=8/90;
		yield;
	}
}
task RotateArms{
	loop{
		armangle+=armspeed;
		SetArmPosition(0,GetX-cos(armangle)*60,GetY-sin(armangle)*60);
		SetArmPosition(1,GetX+cos(armangle)*60,GetY+sin(armangle)*60);
		yield;
	}
}
let lazorcolor=[WHITE12,YELLOW12,ORANGE12];
task Lazorz{
	let angle=0;
	loop{
		if(moving==0){
			angle=prand_int(-50,30);
			CreateLaser01(GetX,GetY,3,angle,200,10,lazorcolor[(angle+80)%3],0);
			CreateLaser01(GetX,GetY,3,180-angle,200,10,lazorcolor[(angle+80)%3],0);
		}
		Wait(10);
	}
}
    let speed=1.8;
    let framef=0;

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

	OverloadDrawLogic;
	yield;
}
    @DrawLoop {
	OverloadDrawLoop;
}

    @Finalize {
	OverFinalize;
	EndingFunc(2);
	PointItems(GetX,GetY,2,1);
    }

task NormalShotDelay(x,y,v,a,g,d,d2,vulnerability){
	DelayEffect(x,y,g,d);
	Wait(d-d2);
	NormalShot(x,y,v,a,g,vulnerability);
}
}