
#Title[enm2 spell01 l]
#Text[REV[bg@ŕulVlv]
#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 fog       = GetCurrentScriptDirectory~".\enm2eff\Fog_3-01.png";
    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 a         = 0;
    let S_count   = 0;
    let w         = 0;
    let lp        = 0;
    let endc	  = 0;

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

        SetLife(1000);
	SetDamageRate(0,0);

	SetInvincibility(120);

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

	LoadUserShotData(shotdir);
	SetMovePosition03(CenX,GetClipMinY+160,10,5);
        LoadGraphic(imgEffect);
	LoadGraphic(fog);
	Aura(8,255,32,32);
	MagicCircle(false);
	SetRateScoreSystemEnable(false);
	hpb(1,0,0);
	Timer(1,1);
	VSname(0);
	EnemyTexture2(true);
	RedMagicCircle(1,0);
	Shot_Main;
	SetEffectForZeroLife(0,0,0);
	SpellPracticeSave("lunatic",3);
    }

    @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==30){
	CutinSP("TIREI",50,-50,4000000,60,GetCurrentScriptDirectory~".\enm2img\corin00000.png",0,0,384,512);
	CutinSP2(-280,-10,GetCurrentScriptDirectory~".\enm2spell\sn_014.png",0,0,384,32,255,255,255);
	BackGroundEffect;
	}
	if(S_count==50){
	Concentration(50,powerla);
	SetCommonData("Charge",true);
	}
	if(S_count>=30) {
		SetMovePosition03(GetPlayerX,GetPlayerY,3,5);
		}

	a++;	
	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 a	= 0;
		loop(120){yield;}
		SetCommonData("Charge",true);
		loop {
			ascent(a in 0..9) loop{
				PlaySE(tan);
				BatShot(GetX+(50)*cos(a*40),GetY+(50)*sin(a*40),a*40);
				BatShot(GetX+(100)*cos(a*40+18),GetY+(100)*sin(a*40+18),a*40+18);
			}
			wait(30);
		}
	}
	
	task BatShot(x,y,a) {
		let obj = Obj_Create(OBJ_SHOT);
		let s = 3;
		Obj_SetPosition(obj,x,y);
		Obj_SetAngle(obj,a);
		Obj_SetSpeed(obj,s);
		ObjShot_SetGraphic(obj,9);
		ObjShot_SetDelay(obj,10);
		loop(10){yield;}
		loop(60){s-=0.06;Obj_SetSpeed(obj,s);yield;}
		Obj_SetAlpha(obj,0);
		if(!Obj_BeDeleted(obj)){BulletBreak(Obj_GetX(obj),Obj_GetY(obj),255,128,128);}
		Obj_SetSpeed(obj,0);
		loop(20){yield;}
		Obj_SetAlpha(obj,255);
		ObjShot_SetGraphic(obj,201);
		loop(61){Obj_SetAngle(obj,a);a+=3;yield;}
		Obj_SetSpeed(obj,0.9);
		}
		
	task FogEffect(x,y,a) {
		let weff      = Obj_Create(OBJ_EFFECT);
		let speed     = rand(1,2);
		let r         = 0;
		let alpha     = 1;
		let angleP    = rand(-0.4,0.4);
		let RX        = [0,256,512,768][rand_int(0,3)];
		let RY        = [0,256,512,768][rand_int(0,3)];

		LoadGraphic(fog);
		ObjEffect_SetTexture(weff,fog);
		ObjEffect_SetRenderState(weff,ALPHA);
		ObjEffect_SetPrimitiveType(weff,PRIMITIVE_TRIANGLESTRIP);
		ObjEffect_SetLayer(weff,5);
		ObjEffect_CreateVertex(weff,4);
		ObjEffect_SetVertexXY(weff,0,-64,-64);
		ObjEffect_SetVertexXY(weff,1,-64, 64);
		ObjEffect_SetVertexXY(weff,2, 64,-64);
		ObjEffect_SetVertexXY(weff,3, 64, 64);
		ObjEffect_SetVertexUV(weff,0,RX    ,RY    );
		ObjEffect_SetVertexUV(weff,1,RX    ,RY+256);
		ObjEffect_SetVertexUV(weff,2,RX+256,RY    );
		ObjEffect_SetVertexUV(weff,3,RX+256,RY+256);

		loop(120){
			Obj_SetPosition(weff,x+cos(a)*r,y+sin(a)*r);
			ObjEffect_SetVertexColor(weff,0,255*alpha,0,0,0);
			ObjEffect_SetVertexColor(weff,1,255*alpha,0,0,0);
			ObjEffect_SetVertexColor(weff,2,255*alpha,0,0,0);
			ObjEffect_SetVertexColor(weff,3,255*alpha,0,0,0);
			ObjEffect_SetAngle(weff,0,0,angle);
			alpha-=1/120;
			angle+=angleP;
			r+=speed;
			yield;
		}
		Obj_Delete(weff);
	}

	#include_function".\Obj_Control.txt"
	#include_function".\lib_kshot.txt"
}