#e
#Title[uG^[iEBbVv]
#Text[t̖悹ċM̖T

ߋĩAW肵܂B]
#BGM[.\bgm\bgm.wav]
#BackGround[User]
#Player[FREE]
#ScriptVersion[2]

script_enemy_main{
	
	let WhiteX = 0;
	let WhiteY = 0;
	let BlackX = 0;
	let BlackY = 0;
	
	@Initialize{
		InitializeData();
		InitializeAction();
		LoadUserShotData(shot_cherry);
		
		SetLife(1000);
		SetMovePosition03(GetCenterX() + 40,GetClipMinY() + 130,20,4);
		SetDamageRate(8,10);
		SetCollisionEx2(32,16,false,390);
		SetEnemyMarker(true);
		
		SetEffectForZeroLife(100,164,2);
		
		TMain();
	}
	
	@MainLoop{
		yield;
	}
	
	@DrawLoop{
		DrawBoss(imgBoss_LilyBlack);
	}
	
	@Finalize{
		FinalizeData();
	}
	
	task TMain(){
		yield;
		
		PositionLink();
		CreateEnemyFromFile(GetCsdEx("spell05_white.txt"),0,0,0,0,0);
		
		Wait(149);
		
		DeclareSpell();
		
		Atack();
	}
	
	function DeclareSpell(){
		SetAction(ACT_SPELL,180);
		
		CutIn(KOUMA,"uG^[iEBbVv",NULL,0,0,0,0);
		
		SpellCard(CUT_TIREI,imgCutin_LilyBlack,0,0,696,279,210,1);
		SpellCard(CUT_TIREI,imgCutin_LilyWhite,0,0,256,320,-30,1);
		
		SetScore(2600000);
		SetTimer(110);
		Wait(180);
	}
	
	task Atack(){
		let angle = 0;
		let way = 6;
		let waitspan = 120;
		let speed = 1.3;
		let accspeed = 0.003;
		let rollangle = 0.9;
		
		loop{
			angle = rand(0,360);
			
			if(GetTimer() < 30){
				way = 10;
				waitspan = 50;
				speed = 3.2;
				accspeed = 0.0055;
				rollangle = 2.2;
			}else{
				way = 10 - truncate( (GetEnemyLife() + 249) / 250 );
				waitspan = 70 + ( GetEnemyLife() / 1000 ) * 60;
				speed = 2.8 - ( GetEnemyLife() / 1000 ) * 1.7;
				accspeed = 0.005 - ( GetEnemyLife() / 1000 ) * 0.002;
				rollangle = 2 - ( GetEnemyLife() / 1000 ) * 1.1;
			}
			
			ascent(i in 0..way){
				CreateCherryShot(GetX(),GetY(),speed,angle + (360 * i / way),1,20,1,rollangle,accspeed, 1);
				CreateCherryShot(WhiteX,WhiteY,speed,angle + (360 * i / way),1,20,1,rollangle,accspeed,-1);
			}
			
			Wait(waitspan);
		}
	}
	
	task CreateCherryShot(x,y,speed,angle,graph,delay,slife,ang,vspeed,turn){
		let sangle = angle;
		
		let obj = CreateObjShot(x,y,speed,angle,graph,delay);
		Obj_SetAutoDelete(obj,false);
		
		while( !Obj_BeDeleted(obj) ){
			Obj_SetSpeed(obj,speed);
			Obj_SetAngle(obj,sangle);
			
			sangle += ang * turn;
			speed += vspeed;
			
			if( absolute(sangle - angle) >= 180 ){
				if(slife == 1){
					ascent(i in 0..3){
						CreateCherryShot(Obj_GetX(obj),Obj_GetY(obj),speed,Obj_GetAngle(obj) + (2 * (i - 1) * turn),graph,0,0,ang,vspeed,turn);
					}
				}else{
					ascent(i in 0..5){
						CreateShot01(Obj_GetX(obj),Obj_GetY(obj),speed * (15 - i) / 15,Obj_GetAngle(obj) + 14 * ( (i - 2) * turn),graph,0);
					}
				}
				
				if( !Obj_BeDeleted(obj) ){
					Obj_Delete(obj);
				}
			}
			
			yield;
		}
	}
	
	task PositionLink(){
		loop{
			WhiteX = GetCommonDataDefault("WhiteX",GetX() );
			WhiteY = GetCommonDataDefault("WhiteY",GetY() );
			BlackX = GetX();
			BlackY = GetY();
			
			SetCommonData("BlackX",BlackX);
			SetCommonData("BlackY",BlackY);
			
			yield;
		}
	}
	
	task SetCollisionEx2(HitA,HitB,BombBarrier,HitWait){
		loop(HitWait){
			yield;
		}
		loop{
			if( !(OnBomb() && BombBarrier) ){
				SetCollisionA(WhiteX,WhiteY,HitA);
				SetCollisionB(WhiteX,WhiteY,HitB);
				
				SetCollisionA(BlackX,BlackY,HitA);
				SetCollisionB(BlackX,BlackY,HitB);
			}
			yield;
		}
	}
	
	#include_function ".\initialize_boss.txt"
	#include_function ".\lib\lib_anime_lily.txt"
	
	#include_function ".\lib\lib_cutin.txt"
	
	#include_function ".\lib\lib_obj.txt"
	#include_function ".\lib\lib_value.txt"
}