#e
#Title[uRY~bNE}Chv]
#Text[Њ̖VOɂǂ]
#BGM[.\..\bgm\bgm.wav]
#BackGround[User]
#Player[FREE]
#ScriptVersion[2]

script_enemy_main{
	
	@Initialize{
		imgBoss = imgBoss_Byakuren;
		InitializeData();
		InitializeAction();
		
		SetLife(1000);
		SetMovePosition03(CenterX,MinY + 130,20,4);
		SetDamageRate(32,15);
		SetCollisionEx(32,16,false,360);
		SetEnemyMarker(true);
		
		SetShotAutoDeleteClip(16,16,16,16);
		
		TMain();
	}
	
	@MainLoop{
		yield;
	}
	
	@DrawLoop{
		DrawBoss(imgBoss);
	}
	
	@Finalize{
		SetShotAutoDeleteClip(64,64,64,64);
		FinalizeData();
	}
	
	task TMain(){
		FWait(60);
		
		DeclareSpell();
		
		Atack();
	}
	
	function DeclareSpell(){
		SetScore(2600000);
		SetTimer(63);
		CutIn(KOUMA,"uRY~bNE}Chv",NULL,0,0,0,0);
		SetAction(ACT_SPELL,180);
		FWait(180);
	}
	
	task Atack(){
		let angle = 0;
		
		loop{
			loop(2){
				angle = rand(0,360);
				ascent(i in 0..7){
					Roll(i,angle + i * 360 / 7);
				}
				
				FWait(200);
			}
			
			angle = GetAngleToPlayer();
			ascent(i in 0..16){
				Laser( i * 360 / 8, truncate(i / 8) * 2 - 1 );
			}
			
			FWait(200);
		}
	}
	
	task Roll(color,angle){
		let wid = 30;
		let rangle = 0;
		let x = GetX();
		let y = GetY();
		let mspeed = 5.5;
		let mx = mspeed * cos(angle);
		let my = mspeed * sin(angle);
		let count = 0;
		
		loop(240){
			let sx1 = x + cos(angle + 90) * wid * sin(rangle);
			let sy1 = y + sin(angle + 90) * wid * sin(rangle);
			let sx2 = x + cos(angle - 90) * wid * sin(rangle);
			let sy2 = y + sin(angle - 90) * wid * sin(rangle);
			
			if(count % 2 == 0){
				MoveShot(sx1,sy1,1.3,angle + count * 5.777,StarS[color],40,220 - count);
				MoveShot(sx2,sy2,1.3,angle - count * 5.777,StarS[color],40,220 - count);
			}
			
			rangle += 7;
			
			x += mx;
			y += my;
			
			count += 1;
			
			yield;
		}
	}
	
	task MoveShot(x,y,speed,angle,graph,delay,stime){
		let obj = CreateObjShot(x,y,0,angle,graph,delay);
		let vspeed = 0;
		let vacc = 0.016;
		
		FWait(stime);
		
		while( !Obj_BeDeleted(obj) && vspeed < speed ){
			vspeed += vacc;
			Obj_SetSpeed(obj,vspeed);
			yield;
		}
	}
	
	task Laser(angle,roll){
		let obj = CreateObjSinuateLaser(GetX(),GetY(),5,angle,100,8,YELLOW01,0);
		
		loop(120){
			angle += 4 * roll;
			Obj_SetAngle(obj,angle);
			yield;
		}
		
		loop(60){
			angle += 1.4 * roll;
			Obj_SetAngle(obj,angle);
			yield;
		}
	}
	
	#include_function ".\initialize.txt"
	#include_function ".\..\lib\lib_anime_etc.txt"
	
	#include_function ".\..\lib\lib_obj.txt"
	#include_function ".\..\lib\lib_value.txt"
	#include_function ".\..\lib\lib_shot.txt"
	#include_function ".\..\lib\lib_effect.txt"
}