#e
#Title[tuXvO[hv]
#Text[]
#BGM[.\..\bgm\bgm.wav]
#BackGround[User]
#Player[FREE]
#ScriptVersion[2]

script_enemy_main{
	
	@Initialize{
		imgBoss = imgBoss_LilyWhite;
		InitializeData();
		InitializeAction();
		
		SetLife(1000);
		Warp(CenterX,MinY + 190,40);
		SetDamageRate(20,15);
		SetCollisionEx(32,16,false,240);
		SetEnemyMarker(true);
		
		TMain();
	}
	
	@MainLoop{
		yield;
	}
	
	@DrawLoop{
		DrawBoss(imgBoss);
	}
	
	@Finalize{
		FinalizeData();
	}
	
	task TMain(){
		FWait(60);
		
		DeclareSpell();
		
		Atack();
	}
	
	function DeclareSpell(){
		SetScore(2600000);
		SetTimer(63);
		CutIn(KOUMA,"tuXvO[hv",NULL,0,0,0,0);
		SetAction(ACT_SPELL,180);
		FWait(180);
	}
	
	task Atack(){
		loop{
			Atack1();
			FWait(380);
		}
	}
	
	task Atack1(){
		let way = 42;
		let flower = 6;
		let speed = 0;
		let angle = rand(0,360);
		
		ascent(i in 0..way){
			speed = 1 + absolute( (i % flower) - (flower / 2) ) * 0.4;
			CherryShot(GetX(),GetY(),speed,angle + i * 360 / way,39,PURPLE23,0,50);
		}
	}
	
	task CherryShot(x,y,speed,angle,graph1,graph2,delay1,delay2){
		let obj = CreateObjShot(x,y,speed,angle,graph1,delay1);
		let ref = -1;
		
		while( !Obj_BeDeleted(obj) ){
			if( Obj_GetY(obj) <= MinY ){
				ref = 1;
			}else if( Obj_GetY(obj) >= MaxY ){
				ref = 3;
			}else if( Obj_GetX(obj) <= MinX ){
				ref = 0;
			}else if( Obj_GetX(obj) >= MaxX ){
				ref = 2;
			}
			
			if(ref != -1){
				let x = Obj_GetX(obj);
				let y = Obj_GetY(obj);
				let angle = ref * 90;
				
				CreateLaserA(1,x,y,600,20,192,60);
				SetLaserDataA(1,0,angle,0,0,0,0);
				SetShotKillTime(1,59);
				FireShot(1);
				
				ascent(i in 0..16){
					CreateShot01(x,y,1.2 + i * 0.3,ref * 90,graph2,delay2);
				}
				
				Obj_Delete(obj);
			}
			
			yield;
		}
	}
	
	#include_function ".\initialize.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"
}