script_enemy_main
{
    let count=0;//nAz
    let MT=0;
    let mm=0;
    let N15=0;
    let HA=GetAngleToPlayer();
    let HA2=0;
    let HA3=0;
    let x0=0;
    let x1=0;
    let y0=0;
    let y1=0;
    let N17=0;
    let Level=0;

    @Initialize
{
    SetLife(64);
    SetScore(50000);
    Level+=GetPlayerLife();
}


@MainLoop
{
    if (GetArgument==0) {
        HA=GetAngleToPlayer();
        if (count==0) {
            SetLife(560);
            SetAngle(90);
        }
        if (count>440) {
            VanishEnemy;
        }
        if (count>0&&count<=80) {
            SetSpeed(7-count*0.09);
            SetAngle(90);
        }
        if (count>80&&count<=300) {
            SetSpeed(0);
            SetAngle(-90);
            if (OnPlayerMissed==true) {
                VanishEnemy;
            }
        }
        if (count>60&&count<=120) {
            HA3+=16;
        }
        if (count>300&&count<=450) {
            SetSpeed((count-300)*0.1);
            SetAngle(-90);
        }
        if (count==60) {
            PlaySE(GetCurrentScriptDirectory~"\se\Laser.wav");
        }
        if (count>60&&count<=420) {
            HA=GetAngleToPlayer();
            ascent(let t in 0..4) {
                CreateLaserA(N15,GetX()+32*cos(HA+90*t+45),GetY()+32*sin(HA+90*t+45),0,24+HA2,191,0);
                SetLaserDataA(N15,0,HA+90*t+45,0,HA3,0,0);
                SetShotKillTime(N15,1);
                FireShot(N15);
            }
        }
        if (count>110&&count<=130&&HA2<128) {
            HA2+=20;
        }
        if (count>120&&count<=420&&count%3==0) {
            PlaySE(GetCurrentScriptDirectory~"\se\Shot00.wav");
            ascent(let t in 0..4) {
                ascent(let tt in 0..2) {
                    CreateShot01(GetX()+(94+t*36)*cos(HA+90*tt-45),GetY()+(94+t*36)*sin(HA+90*tt-45),8,HA,PURPLE21,0);
                }
            }
            ascent(let t in 0..4) {
                ascent(let tt in 0..2) {
                    CreateShot01(GetX()+(94+t*36)*cos(HA+90*tt-45+180),GetY()+(94+t*36)*sin(HA+90*tt-45+180),8,HA-180,PURPLE21,0);
                }
            }
        }
        if (count>0&&count<=80&&count%4==0) {
            PlaySE(GetCurrentScriptDirectory~"\se\Shot02.wav");
            ascent(let t in 0..4) {
                CreateShot02(GetX()+32*cos(HA+90*t+45),GetY()+32*sin(HA+90*t+45),-3,rand(220,330),-0.2,2,BLUE04,15);
            }
            ascent(let t in 0..2) {
                CreateShot02(GetX()+48*cos(HA+180*t+90),GetY()+48*sin(HA+180*t+90),-3,rand(220,330),-0.3,3,BLUE04,5);
            }
            ascent(let t in 0..4) {
                CreateShot02(GetX()+32*cos(HA+90*t+45),GetY()+32*sin(HA+90*t+45),6,GetAngleToPlayer()+rand(-38,38),-0.1,3,BLUE21,0);
            }
        }
        if (count>=10) {
            SetCollisionA(GetX(),GetY()-8,32);
            SetCollisionB(GetX(),GetY(),18);
        }
    }



    if (GetArgument==1||GetArgument==3) {//BLUE 1R 3L

        if (count==0) {
            SetLife(240);
            SetAngle(90);
        }
        if (GetX()<-20||GetX()>456) {
            VanishEnemy;
        }
        if (count>0&&count<=40) {
            SetSpeed(6-count*0.15);
            SetAngle(90);
        }

        if (count>120) {
            if (count%3==0) {
                x0=GetPlayerX();
                y0=GetPlayerY();
            }
            if (count%3==1) {
                x1=GetPlayerX();
                y1=GetPlayerY();
            }
            if (count%3==2) {
                if (x0==x1&&y0==y1) {
                    if (HA2<100) {
                        HA2+=28;
                    }
                }else {
                    if (HA2>0) {
                        HA2-=28;
                    }
                }
            }
            if (GetArgument==1) {
                SetSpeed(1.6);
            }if (GetArgument==3) {
                SetSpeed(-1.6);
            }SetAngle(0);
        }

        if (count>60&&count<=120) {
            HA3+=16;
        }
        if (count==40) {
            PlaySE(GetCurrentScriptDirectory~"\se\Laser.wav");
        }

        if (count>60&&HA2>3) {
            CreateLaserA(N15,GetX(),GetY()+28,0,24+HA2,185,0);
            SetLaserDataA(N15,0,90,0,HA3,0,0);
            SetShotKillTime(N15,1);
            FireShot(N15);
        }

        if (count>60&&HA2<=3) {
            CreateLaserA(N15,GetX(),GetY()+28,0,22,185,5);
            SetLaserDataA(N15,0,90,0,HA3,0,0);
            SetShotKillTime(N15,1);
            FireShot(N15);
        }

        if (count>0&&count%6==0) {
            PlaySE(GetCurrentScriptDirectory~"\se\Shot02.wav");
            CreateShot01(GetX()+rand(-40,40),GetY()+rand(-40,40),2,270,BLUE04,21);
        }

        if (count>=10) {
            SetCollisionA(GetX(),GetY()-8,24);
            SetCollisionB(GetX(),GetY(),16);
        }
        if (count>=120&&GetY+20<GetPlayerY()&&HA2>85) {
            SetCollisionB(GetX(),GetPlayerY(),HA2*0.05);
        }
    }

    if (GetArgument==2||GetArgument==4) {//RED 2R 4L

        if (count==0) {
            SetLife(240);
            SetAngle(90);
        }
        if (GetX()<-20||GetX()>456) {
            VanishEnemy;
        }
        if (count>0&&count<=40) {
            SetSpeed(6-count*0.15);
            SetAngle(90);
        }

        if (count>120) {
            if (count%3==0) {
                x0=GetPlayerX();
                y0=GetPlayerY();
            }
            if (count%3==1) {
                x1=GetPlayerX();
                y1=GetPlayerY();
            }
            if (count%3==2) {
                if (x0==x1&&y0==y1) {
                    if (HA2>0) {
                        HA2-=28;
                    }
                }else {
                    if (HA2<100) {
                        HA2+=28;
                    }
                }
            }
            if (GetArgument==2) {
                SetSpeed(1.6);
            }if (GetArgument==4) {
                SetSpeed(-1.6);
            }SetAngle(0);
        }

        if (count>60&&count<=120) {
            HA3+=16;
        }
        if (count==40) {
            PlaySE(GetCurrentScriptDirectory~"\se\Laser.wav");
        }

        if (count>60&&HA2>3) {
            CreateLaserA(N15,GetX(),GetY()+28,0,24+HA2,190,0);
            SetLaserDataA(N15,0,90,0,HA3,0,0);
            SetShotKillTime(N15,1);
            FireShot(N15);
        }

        if (count>60&&HA2<=3) {
            CreateLaserA(N15,GetX(),GetY()+28,0,22,190,5);
            SetLaserDataA(N15,0,90,0,HA3,0,0);
            SetShotKillTime(N15,1);
            FireShot(N15);
        }

        if (count>0&&count%6==0) {
            PlaySE(GetCurrentScriptDirectory~"\se\Shot02.wav");
            CreateShot01(GetX()+rand(-40,40),GetY()+rand(-40,40),2,270,RED04,0);
        }

        if (count>=10) {
            SetCollisionA(GetX(),GetY()-8,24);
            SetCollisionB(GetX(),GetY(),16);
        }
        if (count>=120&&GetY+20<GetPlayerY()&&HA2>85) {
            SetCollisionB(GetX(),GetPlayerY(),HA2*0.05);
        }
    }



    if (GetLife<5) {
        SetDamageRate(0,0);
        AddLife(300);
    }

    count++;

}

@Finalize
{
    if (BeVanished==false) {
        CreateEnemyFromFile(GetCurrentScriptDirectory~"Servant10.txt",GetX,GetY,0,0,1);
        SetCommonData("ii1",GetCommonDataDefault("ii1",0)+GetCommonDataDefault("ii2",0));
        SetCommonData("ii3",1);
        DeleteEnemyShotToItem(CHILD);
        CollectItems();
        loop(15) {
            CreateItem(ITEM_SCORE,GetX()+rand(-66,66),GetY()+rand(-25,85));    //CreateItem(ITEM_BOMB,GetX(),GetY()+45);
        }
    }
}

@DrawLoop
{
    SetTexture(GetCurrentScriptDirectory~"\img\familiar.png");
    SetColor(211,211,211);
    SetGraphicAngle(0,0,0);
    SetGraphicScale(1,1);
    SetAlpha(255);
    SetRenderState(ADD);

    if (GetArgument==0) {
        SetGraphicRect(48,48,96,96);
        ascent( let t in 0..2 ) {
            DrawGraphic(GetX()-20+t*40,GetY()+20);
        }
        SetGraphicRect(0,48,48,96);
        ascent( let t in 0..2 ) {
            DrawGraphic(GetX()+46*cos(HA+180*t+90),GetY()+46*sin(HA+180*t+90));
        }
        ascent( let t in 0..4 ) {
            DrawGraphic(GetX()+32*cos(HA+90*t+45),GetY()+32*sin(HA+90*t+45));
        }
        if (count<80) {
            SetColor(5*(count-40),5*(count-40),5*(count-40));
        }if (count<40) {
            SetColor(0,0,0);
        }
        ascent( let t in 0..4 ) {
            ascent(let tt in 0..2) {
                DrawGraphic(GetX()+(94+t*36)*cos(HA+90*tt-45),GetY()+(94+t*36)*sin(HA+90*tt-45));
            }
        }
        ascent( let t in 0..4 ) {
            ascent(let tt in 0..2) {
                DrawGraphic(GetX()+(94+t*36)*cos(HA+90*tt-45+180),GetY()+(94+t*36)*sin(HA+90*tt-45+180));
            }
        }
    }

    SetTexture(GetCurrentScriptDirectory~"\img\dot-kaze-ti.png");
    SetAlpha(255);
    SetGraphicRect(192,0,256,64);
    if (GetArgument==2||GetArgument==4) {
        SetGraphicRect(64,0,128,64);
    }
    SetRenderState(ALPHA);
    SetColor(225+count%4*30,225+count%4*30,225+count%4*30);
    SetGraphicScale(1.12,1.12);
    SetGraphicAngle(0,0,-count*5);
    DrawGraphic(GetX(),GetY());

    SetAlpha(255);
    SetGraphicRect(192,0,256,64);
    if (GetArgument==2||GetArgument==4) {
        SetGraphicRect(64,0,128,64);
    }
    SetRenderState(ALPHA);
    SetColor(225+count%4*30,225+count%4*30,225+count%4*30);
    SetGraphicScale(0.8,0.8);
    SetGraphicAngle(0,0,count*5);
    DrawGraphic(GetX(),GetY());

    SetGraphicRect(128,0,192,64);
    if (GetArgument==2||GetArgument==4) {
        SetGraphicRect(0,0,64,64);
    }
    SetColor(255,255,255);
    SetGraphicScale(0.65,0.65);
    SetGraphicAngle(0,0,90);
    DrawGraphic(GetX(),GetY());

}
}
