script_enemy FUJI1{
	let imgeff   = GetCurrentScriptDirectory ~ "img\effect2.png";
	let seShot4  = GetCurrentScriptDirectory ~ "se\shot02.wav";
	let angle=GetAngle;

	@Initialize{
	SetLife(500);
	LoadGraphic(imgeff);
	LoadSE(seShot4);
	Main;
	}

	@DrawLoop{
	BardEffect;
	}

	task BardEffect{
		let x=GetX;let y=GetY;
		let Obj=Obj_Create(OBJ_EFFECT);
		ObjEffect_SetTexture(Obj,imgeff);
		ObjEffect_SetLayer(Obj,1);
		ObjEffect_SetRenderState(Obj,ADD);
		ObjEffect_SetPrimitiveType(Obj,PRIMITIVE_TRIANGLESTRIP);
		ObjEffect_CreateVertex(Obj,4);
		ObjEffect_SetAngle(Obj,0,0,angle+90);

		ObjEffect_SetVertexXY(Obj, 0, -20, -20);
		ObjEffect_SetVertexXY(Obj, 1, -20,  20);
		ObjEffect_SetVertexXY(Obj, 2,  20, -20);
		ObjEffect_SetVertexXY(Obj, 3,  20, 20);

		ObjEffect_SetVertexUV(Obj, 0, 0, 40);
		ObjEffect_SetVertexUV(Obj, 1, 0, 80);
		ObjEffect_SetVertexUV(Obj, 2, 40, 40);
		ObjEffect_SetVertexUV(Obj, 3, 40, 80);

		let scale=1;let alpha=128;
		while(alpha>10)
		{
			Obj_SetPosition(Obj,x,y);
			ObjEffect_SetScale(Obj,scale,scale);
			ascent(a in 0..4)
			{
				ObjEffect_SetVertexColor(Obj,a,alpha,255,255,255);
			}
			alpha-=20;
			scale+=0.01;
			yield;
		}
		Obj_Delete(Obj);
	}

	@MainLoop{
		yield;
	}

	task Main{
		yield;
		shotA;
		shotB;
	}

	task shotA{
		loop{
			if(GetY>GetClipMinY&&GetY<GetClipMaxY&&GetX>GetClipMinX&&GetX<GetClipMaxX){
			downshot(GetX, GetY, 225, angle+90);
			PlaySE(seShot4);
			wait(rand(10,30));
			}
			yield;
		}
	}

	task shotB{
		loop{
			if(GetY>GetClipMinY&&GetY<GetClipMaxY&&GetX>GetClipMinX&&GetX<GetClipMaxX){
			downshot(GetX, GetY, 225, angle-90);
			PlaySE(seShot4);
			wait(rand(10,30));
			}
			yield;
		}
	}

	task downshot(x, y, color, angleA) {
		CreateShotA(1,x,y,0);
		SetShotDataA(1,0,rand(2,3),angleA,0,-0.05,rand(-0.5,-1.5),color);
		FireShot(1);
	}

	@Finalize{
	}

	function wait(let n){loop(n){yield;}}
}

script_enemy FUJI2{
	let imgeff   = GetCurrentScriptDirectory ~ "img\effect2.png";
	let angle=GetAngle;
	let count=0;

	@Initialize{
	SetLife(500);
	LoadGraphic(imgeff);
	Main;
	}

	@DrawLoop{
	if(count==0){AuraEffect;}
	}

	task AuraEffect{
		let x=GetX;let y=GetY;
		let Obj=Obj_Create(OBJ_EFFECT);
		ObjEffect_SetTexture(Obj,imgeff);
		ObjEffect_SetLayer(Obj,1);
		ObjEffect_SetRenderState(Obj,ADD);
		ObjEffect_SetPrimitiveType(Obj,PRIMITIVE_TRIANGLESTRIP);
		ObjEffect_CreateVertex(Obj,4);
		ObjEffect_SetAngle(Obj,0,0,angle+90);

		ObjEffect_SetVertexXY(Obj, 0, -20, -20);
		ObjEffect_SetVertexXY(Obj, 1, -20,  20);
		ObjEffect_SetVertexXY(Obj, 2,  20, -20);
		ObjEffect_SetVertexXY(Obj, 3,  20, 20);

		ObjEffect_SetVertexUV(Obj, 0, 0, 0);
		ObjEffect_SetVertexUV(Obj, 1, 0, 40);
		ObjEffect_SetVertexUV(Obj, 2, 40, 0);
		ObjEffect_SetVertexUV(Obj, 3, 40, 40);

		let scale=1.3;let alpha=128;
		while(alpha>10)
		{
			Obj_SetPosition(Obj,x,y);
			ObjEffect_SetScale(Obj,scale,scale);
			ascent(a in 0..4)
			{
				ObjEffect_SetVertexColor(Obj,a,alpha,255,255,255);
			}
			alpha-=10;
			scale+=0.01;
			yield;
		}
		Obj_Delete(Obj);
	}

	@MainLoop{
		yield;
	}

	task Main{
		yield;
		let x=GetPlayerX;
		let y=GetPlayerY;
		SetMovePosition03(x,y,9,6);
		wait(1);
		loop{
			if(GetSpeed<=0){break;}
			yield;
		}
		shotA;
		count++;
		wait(60);
		VanishEnemy;
	}

	task shotA{
		let angle=0;
		while(angle<360){
		CreateFuji1Shot(GetX,GetY,1,angle,25,0);
		angle+=45;
		}
	}

	task CreateFuji1Shot(let x,let y,let speed,let angle,let graphic,let delay){
    		let obj = Obj_Create(OBJ_SHOT);
    
    		Obj_SetPosition(obj, x, y);
    		Obj_SetSpeed(obj, speed);
    		Obj_SetAngle(obj, angle);
    		ObjShot_SetGraphic(obj, graphic);
    		ObjShot_SetDelay(obj, delay);
    
		wait(5);
		loop(4){
			let an=rand(-10,10);
			CreateFuji2Shot(Obj_GetX(obj),Obj_GetY(obj),rand(1,3),angle+an,25,0);
		}
		Obj_Delete(obj);
		DelayEff(Obj_GetX(obj), Obj_GetY(obj), 25, 8, 5);
	}

	task CreateFuji2Shot(let x,let y,let speed,let angle,let graphic,let delay) { 
    		let obj = Obj_Create(OBJ_SHOT);
    
    		Obj_SetPosition(obj, x, y);
    		Obj_SetSpeed(obj, speed);
    		Obj_SetAngle(obj, angle);
    		ObjShot_SetGraphic(obj, graphic);
    		ObjShot_SetDelay(obj, delay);
    
		wait(10);
		loop(6){
			let a=rand(-60,60);
			CreateFuji3Shot(Obj_GetX(obj),Obj_GetY(obj),rand(3,6),angle+a,9,0);
		}
		Obj_Delete(obj);
		DelayEff(Obj_GetX(obj), Obj_GetY(obj), 25, 8, 5);
	}

	task CreateFuji3Shot(let x,let y,let speed,let angle,let graphic,let delay) {
    		let obj = Obj_Create(OBJ_SHOT);
    
    		Obj_SetPosition(obj, x, y);
    		Obj_SetSpeed(obj, speed);
    		Obj_SetAngle(obj, angle);
    		ObjShot_SetGraphic(obj, graphic);
    		ObjShot_SetDelay(obj, delay);
    
		wait(10);
		Obj_Delete(obj);
		DelayEff(Obj_GetX(obj), Obj_GetY(obj), 9, 8, 7);
	}

	task DelayEff(x, y, color, scale, deltime) {
		let Obj  = Obj_Create(OBJ_SHOT);
		if(scale < 3){scale = 3;}
		if(scale <= deltime){deltime = scale-1;}

		Obj_SetPosition(Obj, x, y);
		ObjShot_SetGraphic(Obj, color);
		ObjShot_SetDelay(Obj, scale);
		ObjShot_SetBombResist(Obj, true);
		ObjShot_ToItem(Obj, false);
		Obj_SetCollisionToPlayer(Obj, false);

		wait(deltime);
		Obj_Delete(Obj);
	}

	@Finalize{
	}

	function wait(let n){loop(n){yield;}}
}
