script_enemy_main
{
    let count=0;//nAz
    let HA=0;
    let N17=0;
    let c=0;

function dead {
    SetDamageRate(0,0);

    if (N17==50) {
        if (BeVanished==false) {
            CreateEnemyFromFile(GetCurrentScriptDirectory~"Servant10.txt",GetX,GetY,0,0,1);
            PlaySE(GetCurrentScriptDirectory~"\se\crash16_c.wav");
            ascent(let tt in 0..30) {
                CreateShot02(GetX()+50*cos(tt*12),GetY()+50*sin(12*tt),0,tt*12,0.1,1.2+3*(GetArgument>=2&&GetCommonDataDefault("Mode",0)>=2)+3*(GetArgument>=2&&GetCommonDataDefault("Mode",0)>=3),170-1*(GetArgument>=2),30);
            }
        }
        if (GetArgument<2&&BeVanished==false) {
            ascent(let tt in 0..30) {
                CreateShot02(GetX()+25*cos(tt*12),GetY()+25*sin(12*tt),0,tt*12,0.1,1.2+3*(GetArgument>=2&&GetCommonDataDefault("Mode",0)>=3),170,30);
            }
        }
    }

    if (N17<100) {
        N17+=50;
    }
    if (N17>=100) {
        VanishEnemy;
    }
}

function CreateWayShot02(Way,Gap,PosX,PosY,Dist,Speed,Angle,Accelerate,MaxSpeed,Graphic,Delay) {
    ascent(let i in 0..Way) {
        CreateShot02(PosX+Dist*cos(Angle+Gap*(i+0.5-(Way * 0.5))),PosY+Dist*sin(Angle+Gap*(i+0.5-(Way * 0.5))),Speed,Angle+Gap*(i+0.5-(Way*0.5)),Accelerate,MaxSpeed,Graphic,Delay);
    }
}

@Initialize
{
    SetLife(560);//SetAngle(rand(0,360));
    SetScore(10);
}


@MainLoop
{
    if (GetArgument==0) {
        if (GetLife<400) {
            dead;
        }
        else {
            if (HA>=80) {
                SetCollisionA(GetX(),GetY(),18);
                SetCollisionB(GetX(),GetY(),8);
            }
        }
        if (HA<100) {
            HA+=2;
        }SetSpeed(rand(-2.4,2.4));
        if (GetArgument+rand(0,35)<=count) {
            SetLife(350);
        }
    }

    if (GetArgument==1) {
        if (HA<100) {
            HA+=2;
        }
        if (count==0) {
            PlaySE(GetCurrentScriptDirectory~"\se\Shot04.wav");
        }
        if (count==100) {
            PlaySE(GetCurrentScriptDirectory~"\se\Shot01.wav");
        }
        if (GetLife<400) {
            dead;
        }
        else {
            if (count<=50) {
                SetLife(960);
                SetSpeed(0);
                SetCollisionA(GetX(),GetY(),count*0.2);
                SetAngle(90);
            }
            if (count>50) {
                SetCollisionA(GetX(),GetY(),40);
                SetCollisionB(GetX(),GetY(),13);
            }
            if (count>330) {
                SetCollisionA(GetX(),GetY(),40);
                SetCollisionB(GetX(),GetY(),28);
            }
        }
        if (count==50) {
            SetMovePositionRandom01(0,200,3,GetX,GetPlayerY,GetX,GetPlayerY);
        }
        if (count>=350&&count<400) {
            SetSpeed(1);
            SetAngle(GetAngleToPlayer);
            c+=5;
        }
        if (count>=400) {
            SetSpeed(1+(count-400)*0.2);
            c+=5;
        }
        if (count>=120&&count<=300&&count%6<=0) {
            PlaySE(GetCurrentScriptDirectory~"\se\Shot06.wav");
            if (count%12<=0&&count<=300&&GetCommonDataDefault("Mode",0)>2) {
                CreateWayShot02(4,28,GetX,GetY,2,3,90+20*((280-count)/280)*sin(count*2+90),0,5,89,28);
                CreateWayShot02(4,28,GetX,GetY,2,3,270+20*((280-count)/280)*sin(count*2+90),0,5,89,28);
            }
            ascent(let t in 0..4) {
                CreateWayShot02(6,4*t,GetX,GetY,2,5.8-0.3*t,0+20*sin(count*2),0,5,196,18);
                CreateWayShot02(6,4*t,GetX,GetY,2,5.8-0.3*t,180+20*sin(count*2),0,5,196,18);
            }
        }
        if (count>=300&&count<=330&&count%6<=0) {
            PlaySE(GetCurrentScriptDirectory~"\se\Shot06.wav");
            ascent(let t in 0..4) {
                CreateWayShot02(6,4*t,GetX,GetY,2,4.8-0.1*t-0.12*(count-300),0,0,5,89,28);
                CreateWayShot02(5,6*t,GetX,GetY,2,1.8-0.1*t+0.05*(count-300),90,0,5,89,28);
                CreateWayShot02(6,4*t,GetX,GetY,2,4.8-0.1*t-0.12*(count-300),180,0,5,89,28);
                CreateWayShot02(5,6*t,GetX,GetY,2,1.8-0.1*t+0.05*(count-300),270,0,5,89,28);
            }
        }
        if (GetCommonDataDefault("x",0)==1039) {
            SetLife(350);
        }
        if (count>520) {
            VanishEnemy;
        }
    }

    if (GetArgument>=2&&GetArgument<=17) {
        if (HA<100) {
            HA+=2;
        }
        if (count==0) {
            PlaySE(GetCurrentScriptDirectory~"\se\Shot04.wav");
            SetLife(600);
        }
        if (count<=0) {
            SetLife(470);
            SetCollisionA(GetX(),GetY(),count*0.8);
        }
        if (GetLife<400) {
            dead;
        }
        else {
            if (count>50) {
                SetCollisionA(GetX(),GetY(),30);
                SetCollisionB(GetX(),GetY(),10);
            }
        }
        if (count==110&&GetArgument>58) {
            PlaySE(GetCurrentScriptDirectory~"\se\Laser.wav");
            ascent( let t in 0..4 ) {
                CreateShot01(GetX(),GetY()+2,rand(2.2,6.9),GetAngleToPlayer()+rand(-165,165),196,10);
            }
            ascent( let t in 0..5 ) {
                CreateShot01(GetX(),GetY()+2,rand(2.4,6.9),GetAngleToPlayer()+rand(-165,165),72,rand(10,16));
            }
            ascent( let t in 0..4 ) {
                CreateShot01(GetX(),GetY()+2,rand(2.2,8.9),GetAngleToPlayer()+180+rand(-165,165),196,10);
            }
            ascent( let t in 0..6 ) {
                CreateShot01(GetX(),GetY()+2,rand(2.4,8.9),GetAngleToPlayer()+180+rand(-165,165),72,rand(10,16));
            }
            ascent( let t in 0..1 ) {
                CreateShot01(GetX(),GetY()+2,rand(2.2,5.9),GetAngleToPlayer()+rand(-225,225),72,10);
            }
        }
        if (count==110&&GetArgument>=2&&GetCommonDataDefault("Mode",0)>=1) {
            PlaySE(GetCurrentScriptDirectory~"\se\Laser.wav");
            CreateWayShot02(16,24,GetX,GetY,2,4.2+0.8*(GetCommonDataDefault("Mode",0)>=3),90,0,5,169,18);
            CreateWayShot02(16,24,GetX,GetY,2,3.8+0.8*(GetCommonDataDefault("Mode",0)>=3),90,0,5,169,18);
            if (GetCommonDataDefault("Mode",0)>=3) {
                CreateWayShot02(16,24,GetX,GetY,2,4.2,90,0,5,169,18);
            }
        }
        //if(count%(8+2*(GetCommonDataDefault("Mode",0)<3))==0&&count>=150&&count<=255*(GetCommonDataDefault("Mode",0)<3)&&GetArgument>=8){PlaySE(GetCurrentScriptDirectory~"\se\Shot02.wav");
        //if(GetCommonDataDefault("Mode",0)<3){
        //CreateWayShot02(3,90,GetX,GetY,2,-1.5,270,0.04,2,170,22);}
        //}
        if (count==100) {
            PlaySE(GetCurrentScriptDirectory~"\se\Shot01.wav");
        }
        if (count>130) {
            SetCollisionA(GetX(),GetY(),35);
            SetCollisionB(GetX(),GetY(),16);
        }
        if (count==0&&GetArgument==2) {
            SetMovePositionRandom01(0,200,5,GetCenterX+165,115,GetCenterX+165,115);
        }
        if (count==0&&GetArgument==3) {
            SetMovePositionRandom01(0,200,5,GetCenterX-165,115,GetCenterX-165,115);
        }
        if (count==0&&GetArgument==4) {
            SetMovePositionRandom01(0,200,5,GetCenterX+105,85,GetCenterX+105,85);
        }
        if (count==0&&GetArgument==5) {
            SetMovePositionRandom01(0,200,5,GetCenterX-105,85,GetCenterX-105,85);
        }
        if (count==0&&GetArgument==6) {
            SetMovePositionRandom01(0,200,5,GetCenterX+55,55,GetCenterX+55,55);
        }
        if (count==0&&GetArgument==7) {
            SetMovePositionRandom01(0,200,5,GetCenterX-55,55,GetCenterX-55,55);
        }
        if (count==0&&GetArgument==8) {
            SetMovePositionRandom01(0,200,5,GetCenterX+165,GetCenterY-195,GetCenterX+165,GetCenterY-195);
        }
        if (count==0&&GetArgument==9) {
            SetMovePositionRandom01(0,200,5,GetCenterX+165,GetCenterY-117,GetCenterX+165,GetCenterY-117);
        }
        if (count==0&&GetArgument==10) {
            SetMovePositionRandom01(0,200,5,GetCenterX+165,GetCenterY-40,GetCenterX+165,GetCenterY-40);
        }
        if (count==0&&GetArgument==11) {
            SetMovePositionRandom01(0,200,5,GetCenterX+165,GetCenterY+37,GetCenterX+165,GetCenterY+37);
        }
        if (count==0&&GetArgument==12) {
            SetMovePositionRandom01(0,200,5,GetCenterX+165,GetCenterY+115,GetCenterX+165,GetCenterY+115);
        }
        if (count==0&&GetArgument==13) {
            SetMovePositionRandom01(0,200,5,GetCenterX-165,GetCenterY-195,GetCenterX-165,GetCenterY-195);
        }
        if (count==0&&GetArgument==14) {
            SetMovePositionRandom01(0,200,5,GetCenterX-165,GetCenterY-117,GetCenterX-165,GetCenterY-117);
        }
        if (count==0&&GetArgument==15) {
            SetMovePositionRandom01(0,200,5,GetCenterX-165,GetCenterY-40,GetCenterX-165,GetCenterY-40);
        }
        if (count==0&&GetArgument==16) {
            SetMovePositionRandom01(0,200,5,GetCenterX-165,GetCenterY+37,GetCenterX-165,GetCenterY+37);
        }
        if (count==0&&GetArgument==17) {
            SetMovePositionRandom01(0,200,5,GetCenterX-165,GetCenterY+115,GetCenterX-165,GetCenterY+115);
        }
        if (count>=150&&count<200) {
            SetSpeed(1);
            SetAngle(GetAngleToPlayer);
        }
        if (count>=200) {
            SetSpeed(1+(count-200)*0.08);
            if (count>=235&&GetArgument>=1) {
                SetLife(600);
            }
            if (count%5==0) {
                CreateShot01(GetX()+rand(-33,33),GetY()+rand(-33,33),512,90,194,16);
            }
        }
        if (count>320) {
            VanishEnemy;
        }
        if (GetCommonDataDefault("x",0)==1039) {
            SetLife(350);
        }
        c+=5;
    }

    if (GetArgument>=19) {
        if (count==100) {
            PlaySE(GetCurrentScriptDirectory~"\se\Shot01.wav");
        }
        if (count<50) {
            SetLife(1960);
        }
        if (count==50&&GetY<0) {
            SetSpeed(4.3);
            if (GetY<GetPlayerY) {
                SetAngle(90);
            }else {
                SetAngle(270);
            }
        }
        if (count==50&&GetY>=0) {
            SetSpeed(4.3);
            if (GetY<GetPlayerY) {
                SetAngle(90);
            }else {
                SetAngle(270);
            }
        }
        if (GetLife<400) {
            dead;
        }
        else {
            if (count>50) {
                SetCollisionA(GetX(),GetY(),40);
                SetCollisionB(GetX(),GetY(),24);
                if (count%5==0) {
                    CreateShot01(GetX()+rand(-33,33),GetY()+rand(-33,33),512,90,194,12);
                }
            }
        }
        if (count==2&&HA<2&&GetArgument>=21) {
            SetSpeed(4-0.7*(GetArgument>=20));
            if (GetX<GetPlayerX) {
                SetAngle(0);
            }else {
                SetAngle(180);
            }PlaySE(GetCurrentScriptDirectory~"\se\Shot01.wav");
        }
        if (count>50&&HA<2&&GetAngle==90&&GetY>GetPlayerY) {
            SetSpeed(4-0.7*(GetArgument>=20));
            if (GetX<GetPlayerX) {
                SetAngle(0);
            }else {
                SetAngle(180);
            }HA+=1;
            PlaySE(GetCurrentScriptDirectory~"\se\Shot01.wav");
        }
        if (count>50&&HA<2&&GetAngle==270&&GetY<GetPlayerY) {
            SetSpeed(4-0.7*(GetArgument>=20));
            if (GetX<GetPlayerX) {
                SetAngle(0);
            }else {
                SetAngle(180);
            }HA+=1;
            PlaySE(GetCurrentScriptDirectory~"\se\Shot01.wav");
        }
        //if(GetCommonDataDefault("x",0)==1039){SetLife(350);}
        if (count>550) {
            VanishEnemy;
        }c+=8;
    }

    count++;

    yield;

}

@Finalize
{
}

@DrawLoop
{
    if (GetArgument>=1&&GetArgument<=18) {
        SetTexture(GetCurrentScriptDirectory~"\img\NuclearRing5.png");
        SetGraphicAngle(0,0,-c);
        SetAlpha(255);
        SetRenderState(ADD);
        SetColor(150+100*sin(c/2+30),150+100*sin(c/2+180),150+100*sin(c/2+240));
        if (count<=88) {
            SetGraphicScale(0,0);
        }
        if (count>88) {
            SetGraphicScale(0.004*(count-88)+0.01*(count%4),0.004*(count-88)+0.01*(count%4));
        }
        if (count>=138) {
            SetGraphicScale(0.2+0.01*(count%4),0.2+0.01*(count%4));
        }
        SetGraphicRect(0,0,512,512);
        DrawGraphic(GetX(),GetY());
    }

    if (GetArgument>=19) {
        SetTexture(GetCurrentScriptDirectory~"\img\NuclearRing5.png");
        SetGraphicAngle(0,0,-c);
        SetAlpha(255);
        SetRenderState(ADD);
        SetColor(255,255,255);
        if (count<=50&&GetArgument>=21) {
            SetColor(count*5,count*5,255);
        }
        if (count<=0) {
            SetGraphicScale(0,0);
        }
        if (count>0) {
            SetGraphicScale(0.004*(count),0.0045*(count)+0.02*sin(count*6));
        }
        if (count>=50) {
            SetGraphicScale(0.2,0.225+0.02*sin(count*6));
        }
        SetGraphicRect(0,0,512,512);
        DrawGraphic(GetX(),GetY());
    }

    else {
        SetTexture(GetCurrentScriptDirectory~"\img\dot-kaze-ti.png");
        SetAlpha(255*(HA/100));
        SetGraphicRect(192,0,256,64);
        SetRenderState(ALPHA);
        SetColor(225+count%4*30,225+count%4*30,225+count%4*30);
        if (GetArgument<=1) {
            SetGraphicScale(1.12*HA/100,1.12*HA/100);
        }
        else {
            SetColor((225+count%4*30)*(HA/100),(225+count%4*30)*(HA/100),(225+count%4*30)*(HA/100));
            SetGraphicScale(0.62+0.5*HA/100,0.62+0.5*HA/100);
        }
        if (GetArgument>=2&&GetArgument<=17) {
            if (count>=180) {
                SetAlpha(200-(count-180)*4);
            }
            if (count>=230) {
                SetAlpha(0);
            }
        }
        SetGraphicAngle(0,0,-count*5);
        DrawGraphic(GetX(),GetY());

        SetAlpha(255*(HA/100));
        SetGraphicRect(192,0,256,64);
        SetRenderState(ALPHA);
        SetColor(225+count%4*30,225+count%4*30,225+count%4*30);
        if (GetArgument<=1) {
            SetGraphicScale(0.8*HA/100,0.8*HA/100);
        }
        else {
            SetColor((225+count%4*30)*(HA/100),(225+count%4*30)*(HA/100),(225+count%4*30)*(HA/100));
            SetGraphicScale(0.3+0.5*HA/100,0.3+0.5*HA/100);
        }
        if (GetArgument>=2&&GetArgument<=17) {
            if (count>=180) {
                SetAlpha(200-(count-180)*4);
            }
            if (count>=230) {
                SetAlpha(0);
            }
        }
        SetGraphicAngle(0,0,count*5);
        DrawGraphic(GetX(),GetY());

        SetGraphicRect(128,0,192,64);
        SetAlpha(255*(HA/100));
        SetColor(255,255,255);
        if (GetArgument<=1) {
            SetGraphicScale(0.65*HA/100,0.65*HA/100);
        }
        else {
            SetColor(255*(HA/100),255*(HA/100),255*(HA/100));
            SetGraphicScale(0.15+0.5*HA/100,0.15+0.5*HA/100);
        }
        if (GetArgument>=2&&GetArgument<=17) {
            if (count>=180) {
                SetAlpha(200-(count-180)*4);
            }
            if (count>=230) {
                SetAlpha(0);
            }
        }
        SetGraphicAngle(0,0,90);
        DrawGraphic(GetX(),GetY());
    }

}
}
