#e
#Title[tui`s[V[Yv]
#Text[]
#BGM[.\..\bgm\bgm.wav]
#BackGround[User]
#Player[FREE]
#ScriptVersion[2]

script_enemy_main{
	
	@Initialize{
		imgBoss = imgBoss_LilyWhite;
		InitializeData();
		InitializeAction();
		
		SetLife(10);
		SetX( CenterX );
		SetY( CenterY );
		SetEnemyMarker(true);
		LastSpell();
		SetDurableSpellCard();
		SetAlpha(128);
		
		SetShotAutoDeleteClip(128,128,128,128);
		
		TMain();
	}
	
	@MainLoop{
		yield;
	}
	
	@DrawLoop{
		DrawBoss(imgBoss);
	}
	
	@Finalize{
		FinalizeData();
		SetShotAutoDeleteClip(64,64,64,64);
	}
	
	task TMain(){
		FWait(60);
		
		DeclareSpell();
		
		Atack();
	}
	
	function DeclareSpell(){
		SetScore(2600000);
		SetTimer(55);
		CutIn(KOUMA,"tui`s[V[Yv",NULL,0,0,0,0);
		SetAction(ACT_SPELL,180);
		FWait(180);
	}
	
	task Atack(){
		let angle = 0;
		let speed = 0;
		let sflag = true;
		let scount = 0;
		let color = [8 + 7,8 + 1,8 + 2,8 + 8];
		
		SetAction(ACT_SHOT_B,21600);
		
		speed = 3;
		angle = GetAngleToPlayer() + 178;
		
		loop(22 * 60 / 3){
			ascent(i in 0..4){
				AimShot(GetX(),GetY(),speed,angle + i * 360 / 4,color[i],0,20,30,1,30,sflag);
			}
			
			angle -= 2.17;
			speed += 0.007;
			scount += 1;
			if(scount % 12 == 0){
				sflag = true;
			}else{
				sflag = false;
			}
			
			FWait(3);
		}
		
		DeleteEnemyShot(ALL);
		ColorConcentration(180,255, 96, 96);
		FWait(180);
		
		angle = GetAngleToPlayer() + 2;
		speed = 4;
		Cherry();
		
		loop(27 * 60 / 3){
			ascent(i in 0..4){
				AimShot(GetX(),GetY(),speed,angle + i * 360 / 4,color[i],0,40,60,1,60,false);
			}
			
			angle += 1.7;
			speed -= 0.0016;
			
			FWait(3);
		}
	}
	
	task AimShot(x,y,speed,angle,graph,delay,wtime,dtime,stime,atime,sflag){
		let dspeed = speed / dtime;
		let aspeed = speed / atime;
		let count = 0;
		
		let obj = CreateObjShot(x,y,speed,angle,graph,delay);
		
		while( !Obj_BeDeleted(obj) ){
			if(count < wtime){
			}else if(count < wtime + dtime){
				speed -= dspeed;
				Obj_SetSpeed(obj,speed);
			}else if(count < wtime + dtime + stime){
				angle = GetGapAngle(Obj_GetX(obj),Obj_GetY(obj),GetX(),GetY());
				Obj_SetAngle(obj,angle);
				if(sflag){
					CreateShot01(Obj_GetX(obj),Obj_GetY(obj),1 + rand(0,0.5),angle + rand(-30,30),graph - 8,30);
				}
			}else if(count < wtime + dtime + stime + atime){
				speed += aspeed;
				Obj_SetSpeed(obj,speed);
			}else{
				break;
			}
			
			count += 1;
			
			yield;
		}
	}
	
	task Cherry(){
		let way = 48;
		let flower = 8;
		let speed = 0;
		let angle = 0;
		let wtime = 170;
		
		FWait(200);
		
		loop{
			angle = rand(0,360);
			
			ascent(i in 0..way){
				speed = 1 + absolute( (i % flower) - (flower / 2) ) * 0.6;
				CreateShot01(GetX(),GetY(),speed * 0.7,angle + i * 360 / way,PURPLE23,0);
			}
			
			wtime -= 7;
			
			FWait(wtime);
		}
	}
	
	#include_function ".\initialize.txt"
	#include_function ".\..\lib\lib_anime_lily.txt"
	
	#include_function ".\..\lib\lib_obj.txt"
	#include_function ".\..\lib\lib_effect.txt"
	#include_function ".\..\lib\lib_value.txt"
}
