script_enemy_main
{
        let csd     = GetCurrentScriptDirectory;
	let imgEnemy=csd~"\lib\fairy_blue.png";
    let imgFam  = csd ~ "img\familiar.png";


    @Initialize {
        SetLife(1300);
        SetScore(10);
        SetDamageRate(100,100);
	SetInvincibility(120);
	LoadGraphic(imgEnemy);
        LoadGraphic(imgFam);
	Initialize_Fairy(7);
	Tmain;
	}

    @MainLoop {
	ascent(let i in -2..3)
	{
	SetCollisionA(GetX()+i*65,GetY(),32);
        SetCollisionB(GetX()+i*65,GetY(),16);
	}
	yield;
    }

        @DrawLoop {
		DrawFairy(imgEnemy );
	}

        @Finalize
        {
        } 

task Tmain
{
yield;
shot;
summon;
eraze;
}


task shot
{
wait(60);
loop
{
ascent(let i in -3..4)
{
CreateShot01(GetX,GetY,2.5,90+i*12,BLUE01,0);
}

wait(15);
}
}


task summon
{
        CreateEnemyFromScript("Familiar", GetX, GetY,
                              GetSpeed, GetAngle, 1);
        CreateEnemyFromScript("Familiar", GetX, GetY,
                              GetSpeed, GetAngle, -1);
        CreateEnemyFromScript("Familiar", GetX, GetY,
                              GetSpeed, GetAngle, 2);
        CreateEnemyFromScript("Familiar", GetX, GetY,
                              GetSpeed, GetAngle, -2);
}

task eraze
{
while(!BeVanished)
{
        	if(GetX<GetClipMinX-128||GetX>GetClipMaxX+128||GetY<GetClipMinY-32||GetY>GetClipMaxY+32)
        	{
        		VanishEnemy();
        	}
yield;
}
}

#include_function ".\data.txt"
#include_function ".\lib\lib_anime_fairy.txt"
}

script_enemy Familiar {
    let csd     = GetCurrentScriptDirectory;
    let imgFam  = csd ~ "img\familiar.png";
	let num = GetArgument;
    @Initialize {
	let num = GetArgument;
        SetLife(4000);
        SetScore(10000);
SetX(GetX+65*num);
SetY(GetY);
if(num==2||num==-2)
{
        SetDamageRateEx(150,100,150,100);
}
if(num==1||num==-1)
{
        SetDamageRateEx(100,100,100,100);
}
	SetSpeed(0.75);
	SetAngle(GetAngle);
        SetTexture(imgFam);
        setGraphic;
	TMain;
    }

    @MainLoop {
        yield;
    }

    @DrawLoop {
        DrawGraphic(GetX, GetY);
    }

    task TMain {
        yield;
if(num==2||num==-2)
{
	subshot1;
}
if(num==1||num==-1)
{
	subshot2;
}
	eraze;
    }

task shot
{
loop
{
let angle=atan2(GetPlayerY-GetY,GetPlayerX-GetX+30*num);
loop(5)
{
CreateShot01(GetX,GetY,5,angle,BLUE32,0);
wait(3);
}
wait(60);
}
}


task subshot1
{
let angle=rand(0,360);
loop
{
ascent(let i in 0..5)
{
CreateShot01(GetX,GetY,2+i*0.2,angle+i*3,RED01,0);
CreateShot01(GetX,GetY,2+i*0.2,180+angle+i*3,RED01,0);
}
angle-=10*num;
wait(10);
}
}



task subshot2
{
loop
{
loop(3)
{
CreateShot01(GetX,GetY,3.2,65,RED02,0);
CreateShot01(GetX,GetY,3.2,90,RED02,0);
CreateShot01(GetX,GetY,3.2,125,RED02,0);
CreateShot01(GetX,GetY,3.2,105,RED02,0);
CreateShot01(GetX,GetY,3.2,75,RED02,0);
wait(5);
}
wait(60);
}
}


task eraze
{
while(!BeVanished)
{
        	if(GetX<GetClipMinX-328||GetX>GetClipMaxX+328||GetY<GetClipMinY-32||GetY>GetClipMaxY+32)
        	{
        		VanishEnemy();
        	}
yield;
}
}

    // OtBbN̐ݒ
sub setGraphic{ SetGraphicRect( 0, 48, 48, 96); }
#include_function ".\data.txt"
}