script_enemy_main {
	let csd		=GetCurrentScriptDirectory;
	let shotData	=csd ~ "shot.txt";
	let imgEy	=csd ~ "img\yosei3.png";
	let imgmh	=csd ~ "img\mh.png";
	let tama	=csd ~ "img\tama.wav";
	let po		=GetArgument[0];
	let free1	=GetArgument[1];
	let free2	=GetArgument[2];
	let free3	=GetArgument[3];
	let dr		=0;
	let drsign	=1;

    @Initialize {
        SetLife(240);
	SetDamageRate(100,100);
	SetScore(1000);
	LoadGraphic(imgEy);
	LoadGraphic(imgmh);
	LoadUserShotData(shotData);
	SetTexture(imgEy);
	LoadSE(tama);
	TMain;
	}

    @MainLoop {
	if(GetX<=-94 || GetX>=448){VanishEnemy;}
	if(GetY<=-94 || GetY>=496){VanishEnemy;}
	SetCollisionA(GetX,GetY,16);
	SetCollisionB(GetX,GetY,8);
	SetCollisionA(GetX+32,GetY,16);
	SetCollisionB(GetX+32,GetY,8);
	SetCollisionA(GetX-32,GetY,16);
	SetCollisionB(GetX-32,GetY,8);
	SetCollisionA(GetX,GetY+32,16);
	SetCollisionB(GetX,GetY+32,8);
	yield;
	}

	@DrawLoop
	{
	SetGraphicRect(0,0,64,64);
	SetGraphicAngle(0,0,0);
	SetColor(255,255,255);
	SetTexture(imgmh);
	DrawGraphic(GetX,GetY);
	DrawGraphic(GetX+32,GetY);
	DrawGraphic(GetX-32,GetY);
	DrawGraphic(GetX,GetY+32);
	dr+=drsign;
	if(dr>=0 && dr<=3){SetGraphicRect(0,0,31,31);}
	else if(dr>=4 && dr<=10){SetGraphicRect(32,0,63,31);}
	else {SetGraphicRect(64,0,95,31);}
	if(dr>=10){drsign=-drsign;}
	if(dr<=0){drsign=-drsign;}
	SetGraphicAngle(0,0,0);
	SetColor(255,255,255);
	SetTexture(imgEy);
	DrawGraphic(GetX,GetY);
	}
	@Finalize{
	attributeB();
	}

    task TMain {
        yield;
standBy;
wait(free3);
shotA;
wait(80);
loop(2){
shotB;
wait(60);
}
IDOU;
}

task shotA{
let GATP1=GetGapAngle(GetX,GetY+32,GetPlayerX,GetPlayerY);
let S=4;
loop(8){
wait(5);
let angleB=-120;
while(angleB<121){
CreateShot01(GetX,GetY+32,S,angleB+GATP1,22,0);
CreateShot01(GetX,GetY+32,S+0.2,angleB+GATP1,22,0);
angleB+=20;
}
S-=0.2;
wait(5);
let angleB=-110;
while(angleB<111){
CreateShot01(GetX,GetY+32,S,angleB+GATP1,22,0);
CreateShot01(GetX,GetY+32,S+0.2,angleB+GATP1,22,0);
angleB+=20;
}
S-=0.2;
}
}

sub shotB{
let GATP1=GetGapAngle(GetX+32,GetY,GetPlayerX,GetPlayerY);
let GATP2=GetGapAngle(GetX-32,GetY,GetPlayerX,GetPlayerY);
let angleA=-60;
while(angleA<61){
let angleB=-6;
while(angleB<7){
CreateShot01(GetX+32,GetY,2,angleA+angleB+GATP1,46,0);
CreateShot01(GetX-32,GetY,2,angleA+angleB+GATP2,46,0);
angleB+=1;
}
angleA+=20;
}
}


task IDOU{
loop{
yield;
SetAngle(90);
SetSpeed(2);
}
}

function GetGapAngle(
	let x1,
	let y1,
	let x2,
	let y2
){
	return atan2(y2-y1,x2-x1);
}

    task standBy {
	SetMovePosition02(free1,free2,free3);
        SetInvincibility(free3);
}


function wait(w) {
    loop(w) { yield; }
}
#include_function ".\zako.txt"
}