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

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

    let frame=0;
    let color=rand_int(0,359);
    let colorfinal=0;

    @Initialize {
	SetInvincibility(60);
	SetLife(50+10000);
	SetDamageRate(100,100);
	shotinit;
	MainTask;
    }
    task MainTask{
	while(GetY<GetClipMaxY-90&&GetArgument==0&&!deleteobjects){
		colorfinal=sin(color)*0.5+0.5;
		SetShotColor(255-colorfinal*150,255-colorfinal*55,255);

		CreateShotA(0,GetX,GetY,0);
		SetShotDataA(0,0,0,GetAngle+70,0,2/60,2,AQUA04);
		FireShot(0);

		CreateShotA(0,GetX,GetY,0);
		SetShotDataA(0,0,0,GetAngle-70,0,2/60,2,AQUA04);
		FireShot(0);

		SetShotColor(255,255,255);

		Wait(10);
	}
	while(GetY<GetClipMaxY-70&&GetArgument==1&&!deleteobjects){
		
		colorfinal=sin(color)*0.5+0.5;
		SetShotColor(255-colorfinal*150,255-colorfinal*55,255);

		CreateShotA(0,GetX,GetY,0);
		SetShotDataA(0,0,0,GetAngle+45,0,1.2/60,1.2,AQUA56);
		FireShot(0);

		CreateShotA(0,GetX,GetY,0);
		SetShotDataA(0,0,0,GetAngle-45,0,1.2/60,1.2,AQUA56);
		FireShot(0);

		SetShotColor(255,255,255);
	
		Wait(10);

	}
	while(GetY<GetClipMaxY-50&&GetArgument==2&&!deleteobjects){

		colorfinal=sin(color)*0.5+0.5;
		SetShotColor(255-colorfinal*150,255-colorfinal*55,255);

		CreateShotA(0,GetX,GetY,0);
		SetShotDataA(0,0,0,GetAngle,0,1.2/60,1.2,AQUA01);
		FireShot(0);

		SetShotColor(255,255,255);
	
		Wait(10);

	}
    }



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

	yield;
	SetAngle(GetAngle+(GetX-GetCenterX)/(200*(3/2.5)));

	frame++;
	color+=3;
	if(GetLife<10000||GetTimer2<0.2||!OnScreen(GetX,GetY,60)||GetCommonDataDefault("KillDoll",false)){VanishEnemy;}
    }
    @DrawLoop{
	DrawDoll(GetX,GetY,frame,1);
    }
    @Finalize{
	DollFinalize;
	let color=RainbowArray(rand(200,260),100,155);
	deleteobjects=true;
	yield;
	deleteobjects=false;
	if(GetLife<10000&&GetLife!=0){

		AddScore(500);

		if(GetCommonDataDefault("NoSpawnPoints",0)==0){
			CreateItems(GetX,GetY,0,1,0,0,0);
		}

		SE("enemyexplode");

		DamageAlice(10);

		CreateExplosion(0,GetX,GetY,1,[color[0]-prand(0,100),color[1]-prand(0,100),color[2]-prand(0,100)],0.2);
		CreateExplosion(0,GetX,GetY,1,[color[0]-prand(0,100),color[1]-prand(0,100),color[2]-prand(0,100)],0.2/2);
		CreateExplosion(0,GetX,GetY,1,[color[0]-prand(0,100),color[1]-prand(0,100),color[2]-prand(0,100)],0.2/4);

	}
	if(GetTimer2<0.5||GetLife==0){
		CreateExplosion(0,GetX,GetY,1,[color[0]-prand(0,100),color[1]-prand(0,100),color[2]-prand(0,100)],0.2);
	}

    }
}

