
#Title[enm2 spell04 hard]
#Text[REV[bg@u֗I_v]
#Player[FREE]
#BackGround[Default]
#ScriptVersion[2]

script_enemy_main {
    let imgEffect = GetCurrentScriptDirectory~".\enm2eff\bossEfect.png";
    let t5        = GetCurrentScriptDirectory~"..\..\se\timer1.wav";
    let t10       = GetCurrentScriptDirectory~"..\..\se\timer2.wav";
    let tan       = GetCurrentScriptDirectory~"..\..\se\shot1.wav";
    let kira      = GetCurrentScriptDirectory~"..\..\se\shot2.wav";
    let Gspel     = GetCurrentScriptDirectory~"..\..\se\echo5.wav";
    let laser     = GetCurrentScriptDirectory~"..\..\se\Laser2.wav";
    let power     = GetCurrentScriptDirectory~"..\..\se\enemy_powereffect.wav";
    let powerl    = GetCurrentScriptDirectory~"..\..\se\power_logo.wav";
    let gekiha    = GetCurrentScriptDirectory~"..\..\se\BossEnd.wav";
    let powerla   = GetCurrentScriptDirectory~"..\..\se\power_logo.wav";
    let kaku      = GetCurrentScriptDirectory~"..\..\se\j.wav";
    let enep      = GetCurrentScriptDirectory~"..\..\se\enep.wav";
    let frame     = 0;
    let GetAngle  = 0;
    let angle     = 0;
    let angle2    = 0;
    let angleBase = 0;
    let count     = 0;
    let timer     = 0;
    let shotdir   = GetCurrentScriptDirectory ~ "data_usershot.txt";
    let MinX	  = GetClipMinX;
    let MaxX	  = GetClipMaxX;
    let CenX	  = GetCenterX;
    let MinY	  = GetClipMinY;
    let MaxY	  = GetClipMaxY;
    let CenY	  = GetCenterY;
    let T_count   = 0;
    let Damage    = 0;
    let S_count   = 0;
    let endc	  = 0;
    let sheepX;
    let sheepY;
    let subf      = false;
    let taskf     = false;
    let AddAngle  = 2.2;

    @Initialize {
	//SetX(MaxX+100);
	//SetY(MinY-100);

	SetLife(1200);
	SetDamageRate(0,0);

	SetInvincibility(120);

	/*e폜@(l64)*/
	SetShotAutoDeleteClip(30,30,30,30);

	LoadUserShotData(shotdir);
	loop(120){yield;}
	SetMovePosition03(CenX,CenY-150,10,5);
	LoadGraphic(imgEffect);
	Aura(8,255,32,32);
	MagicCircle(false);
	SetRateScoreSystemEnable(false);
	hpb(1,0,0);
	Timer(1,1);
	VSname(0);
	EnemyTexture(true);
	RedMagicCircle(1,0);
	Shot_Main;
	SetEffectForZeroLife(0,0,0);
	SpellPracticeSave("hard",6);
    }

    @MainLoop {
	yield;
        SetCollisionA(GetX, GetY, 30);
        SetCollisionB(GetX, GetY, 16);

	/*ԏ*/
	if(GetTimer<=10 && GetTimer>=0){T_count++;}
	alternative(T_count)
	case(1,60,120,180,240){PlaySE(t10);}
	case(300,360,420,480,540){PlaySE(t5);}

	/*{Agp莞ԃ_[W*/
	if(OnBomb==true){SetDamageRate(30,50);Damage=0;}
	if(OnBomb==false){Damage++;}
	if(Damage>=100){SetDamageRate(30,50);}

	/*XyJ[hؐ錾*/
	if(S_count==60){
	SetMovePosition03(CenX,CenY,10,3);
	CutinSP("TIREI",50,-50,4000000,60,GetCurrentScriptDirectory~".\enm2img\corin00000.png",0,0,384,512);
	CutinSP2(-280,-10,GetCurrentScriptDirectory~".\enm2spell\enm2_sn04_hard.png",0,0,384,32,255,255,255);
	BackGroundEffect;
	}
	if(S_count==50){
//	Concentration(50,powerla);
	}
	
	if(GetLife<=600 && !subf){Shot_Sub;subf=true;}
	
	if(GetLife<30 && !taskf){taskf=true;}
	

	frame++;
	count++;
	S_count++;
	timer++;

	let tact = GetCommonDataEx("title","act");
	let tsst = GetCommonDataEx("title","start_stage");
	if(tact==11){
	if(OnPlayerMissed==true){
	SetCommonDataEx("title","start_stage",false);
	VanishEnemy;
	}
	}
	if(GetEnemyLife<=10){
	SetMovePosition03(CenX-30,CenY-120,10,5);
	SetDamageRate(0,0);
	endc++;
	}
	if(endc==1){
	DeleteAllEnemyWithoutBoss;
	DefeatExplosion(GetEnemyX,GetEnemyY);
	}

}//MainLoop")"łB

    @DrawLoop {}

    @Finalize {
	let tact = GetCommonDataEx("title","act");
	if(tact==11){
	SetCommonDataEx("title","start_stage",false);
	}
	}
	
	task Shot_Main {
	let angle = 0;
	let a = 0;
	let speed;
	let switch = 0.5;
	let r = 0;
		loop(120){yield;}
		Concentration(50,powerla);
		loop(60){yield;}
		ascent(angle in 0..4) {
			CreateMagicCircle(angle*90   ,-1,255);
			CreateMagicCircle(angle*90   , 1,255);
			CreateMagicCircle(angle*90- 2,-1,128);
			CreateMagicCircle(angle*90- 2, 1,128);
			CreateMagicCircle(angle*90- 4,-1, 64);
			CreateMagicCircle(angle*90- 4, 1, 64);
			CreateMagicCircle(angle*90- 6,-1, 32);
			CreateMagicCircle(angle*90- 6, 1, 32);
			CreateMagicCircle(angle*90- 8,-1, 16);
			CreateMagicCircle(angle*90- 8, 1, 16);
			CreateMagicCircle(angle*90-10,-1,  8);
			CreateMagicCircle(angle*90-10, 1,  8);
			CreateMagicCircle(angle*90-12,-1,  4);
			CreateMagicCircle(angle*90-12, 1,  4);
			}
		loop {
			loop(30) {
				ascent(angle in 0..4) {
					CreateFireShot(GetX+cos(angle*90+a)*r,GetY+sin(angle*90+a)*r,2,angle*90+a-180,r);
					}
				PlaySE(kira);
				loop(1){yield;}
				if(r<=300){r++;}
				a+=AddAngle;
			}
			loop(40){
				if(r<=300){r++;}
				a+=AddAngle;
				yield;
				}
		}
	}
	
	task Shot_Sub {
	let angle = 0;
	let a = 0;
	let speed;
	let switch = 0.5;
		Concentration(50,powerla);
		loop(60){yield;}
		loop {
			a = rand(0,360);
			ascent(angle in 0..12) {
				CreateShot02(GetX,GetY,3,angle*30+a,-0.07,1,17,30);
				}
			PlaySE(tan);
			loop(120){yield;}
		}
	}
	
	task CreateFireShot(x,y,s,a,r) {
		let obj = Obj_Create(OBJ_SHOT);
		let count = (r-40)/s;
		let alpha = 255;
		Obj_SetPosition(obj,x,y);
		Obj_SetAutoDelete(obj,false);
		Obj_SetAngle(obj,a);
		Obj_SetSpeed(obj,s);
		ObjShot_SetGraphic(obj,rand_int(241,242));
		ObjShot_SetDelay(obj,0);
		loop(0){yield;}
		while(count>0){count--;yield;}
		loop(17) {
			alpha-=255/17;
			Obj_SetAlpha(obj,alpha);
			yield;
			}
		Obj_Delete(obj);
		}
		
	task CreateMagicCircle(angle,type,maxalpha) {
		let imgSpellEfect;
		if(maxalpha==255){	imgSpellEfect = GetCurrentScriptDirectory~".\enm2eff\Circle_Hex_S.png";}
		else{				imgSpellEfect = GetCurrentScriptDirectory~".\enm2eff\Circle_Hex_S_add.png";}
		let weff      = Obj_Create(OBJ_EFFECT);
		let alpha = 0;
		let scale = 3;
		let r = 0;
		LoadGraphic(imgSpellEfect);

		Obj_SetPosition(weff,GetX,GetY);
		ObjEffect_SetTexture(weff,imgSpellEfect);
		if(maxalpha==255){ObjEffect_SetRenderState(weff,ALPHA);}
		else{ObjEffect_SetRenderState(weff,ADD);}
		ObjEffect_SetPrimitiveType(weff,PRIMITIVE_TRIANGLESTRIP);
		if(maxalpha==255){ObjEffect_SetLayer(weff,4);}
		else{ObjEffect_SetLayer(weff,4);}
		ObjEffect_CreateVertex(weff,4);
		ObjEffect_SetVertexXY(weff,0,-32,-32);//-16,-16
		ObjEffect_SetVertexXY(weff,1,-32,32);
		ObjEffect_SetVertexXY(weff,2,32,-32);
		ObjEffect_SetVertexXY(weff,3,32,32);
		ObjEffect_SetVertexUV(weff,0, 0, 0);//160,80
		ObjEffect_SetVertexUV(weff,1,64, 0);
		ObjEffect_SetVertexUV(weff,2, 0,64);
		ObjEffect_SetVertexUV(weff,3,64,64);//190,112
		loop(20) {
			scale-=2.2/20;
			alpha+=maxalpha/20;
			ObjEffect_SetVertexColor(weff,0,alpha,255,255,255);
			ObjEffect_SetVertexColor(weff,1,alpha,255,255,255);
			ObjEffect_SetVertexColor(weff,2,alpha,255,255,255);
			ObjEffect_SetVertexColor(weff,3,alpha,255,255,255);
			ObjEffect_SetScale(weff,scale,scale);
			ObjEffect_SetAngle(weff,0,0,angle*type);
			angle+=AddAngle;
			Obj_SetPosition(weff,GetX+cos(angle)*r,GetY+sin(angle)*r);
			r+=1;
			yield;
			}
		loop {
			ObjEffect_SetAngle(weff,0,0,angle*type);
			angle+=AddAngle;
			Obj_SetPosition(weff,GetX+cos(angle)*r,GetY+sin(angle)*r);
			r+=1;
			yield;
			}
		}
		
	task BreakEnemy{
		SetDamageRate(0,0);
		loop(12){
			CherryFainal(GetX,GetY,255,255,255);
			PlaySE(enep);
			loop(10){SetLife(30);yield;}
			}
		loop(12){
			CherryFainal(GetX,GetY,255,255,255);
			PlaySE(enep);
			loop(5){SetLife(30);yield;}
			}
		PlaySE(gekiha);
		AddLife(-1000);
		}
	
	#include_function".\Obj_Control.txt"
	#include_function".\lib_kshot.txt"
}