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

    SpellID=521;

    @Initialize {
	SetCommonData("AliceBGColor1",[0.5,0,0]);
	SetCommonData("AliceBGColor2",[1,0,0]);

	Randomize;
        SetLife(1800);
        SetTimer2(40);
	SetDamageRate(80,40);
	MagicCircle(false);
	AliceInit;
	MainTask;
	shotinit;

	SetBG(22);
	SpellCircle2(5,1,4,200);

	StartFunctions(1,0,0);
    }


let v=3;
let globaltimer=0;


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

task MainTask{
	DelayBombTask;
	SetX(GetClipMaxX+50);
	SetY(GetCenterY+80);
	CutIn2(3,"Youkai Magic [Puppet's Curse]");
	SetMovePositionNew(GetCenterX,GetCenterY-100,60);
	Wait(60);
	let angle=0;
	MainTask2;
	loop{
		SE("exattack");
		//CreateExplosionFlatEX(0,GetX+cos(angle)*50,GetY+sin(angle)*50,1,[255*0.5,200*0.5,100*0.5],0.4,30);
		loop(8){
			MainShot(GetX,GetY,2,angle);
			angle+=45;
		}
		angle-=356;
		Wait(16);
	}
}
task MainTask2{
	let dir=1;
	loop{
		CreateEnemyFromFile(GPSD~"lw\as1ld.txt",GetCenterX+150*dir,GetClipMinY-50,2,90,dir);
		Wait(Percentage*10+25);
		loop(2){
			CreateEnemyFromFile(GPSD~"lw\as1ld.txt",GetCenterX+150*dir+rand(-50,50),GetClipMinY-50,rand(2.5,3),90+rand(-5,5),dir);
			dir=-dir;
			Wait(Percentage*10+25);
		}
	}
}
function Percentage{
	return upper(lower(GetLife/1800,GetTimer2/40)*1.3-0.3,0);
}

task MainShot(x,y,v,a){
//	DelayNew(x,y,a,90,20,ORANGE11+rand_int(0,1)*6,30,20);
//	Wait(30);
	let obj=Obj_Create(OBJ_SHOT);
	Obj_SetPosition(obj,x,y);
	ObjShot_SetGraphic(obj,WHITE11);
	Obj_SetAngle(obj,a);
	Obj_SetSpeed(obj,v);
	let bounces=1;
	FadeInObj(obj,255,60);
	while(!Obj_BeDeleted(obj)&&bounces>0){
		if(Obj_GetX(obj)<GetClipMinX){
			Obj_SetX(obj,GetClipMinX-Obj_GetX(obj)+GetClipMinX);
			Obj_SetAngle(obj,180-a);
			bounces--;
		}
		if(Obj_GetX(obj)>GetClipMaxX){
			Obj_SetX(obj,GetClipMaxX-Obj_GetX(obj)+GetClipMaxX);
			Obj_SetAngle(obj,180-a);
			bounces--;
		}
		if(Obj_GetY(obj)<GetClipMinY){
			Obj_SetY(obj,GetClipMinY-Obj_GetY(obj)+GetClipMinY);
			Obj_SetAngle(obj,-a);
			bounces--;
		}
		yield;
	}
	if(bounces==0){
		ObjShot_SetGraphic(obj,ORANGE11);
	}
}


@MainLoop {
	if(globaltimer>100){
	        SetCollisionA(GetX, GetY, 40);
		SetCollisionB(GetX, GetY, 20);
	}

	AliceDrawLogic;
	HandleAliceDamage;

	globaltimer++;

	yield;
}

@DrawLoop {
	AliceDrawLoop;
}

@Finalize {
	EndingFunc(6);
	AliceFinalize;
	PointItems(GetX,GetY,7,1);
}

}


