script_enemy_main {
    let time = -700;
    let phase = 2;
    let rate = 0;
    let life = 0;
    let kaku = 40;
    let lv = 0;
    let score = 0;
    let layer = 1;
    let bairitu = 0.7;
    let angle = GetAngle();
    let rank = GetSpeed();
    let arg = GetArgument();
    let ex = GetCommonData("ex");
    let mapx = GetX();
    let mapy = GetY();
    let imgEnemy = GetCurrentScriptDirectory~"img\st3semiboss.png";
    let tama = GetCurrentScriptDirectory~"tama.txt";
    let se1 = GetCurrentScriptDirectory~"wav\se1.wav";
    let se2 = GetCurrentScriptDirectory~"wav\se2.wav";
    let seshot1 = GetCurrentScriptDirectory~"wav\shot1.wav";
    let seshot2 = GetCurrentScriptDirectory~"wav\shot2.wav";
    SetCommonData("haya",0);
    @Initialize(){
        SetLife( 4300 );
        SetInvincibility( 160 );
        LoadGraphic( imgEnemy );
        LoadUserShotData( tama );
        SetX(mapx-GetCommonData("bgx"));
        SetY(GetCommonData("bgy")-mapy);
        Tmove;Tgazou(1,1,320,320);
    }
    @MainLoop {
        rate=life-GetLife;
        life=GetLife;
        if(phase==2&&GetLife<=1700){
           phase-=1;
           score = 100000;
           if(lv==0||GetPoint>0){DeleteEnemyShotImmediatelyInCircle(SHOT, 224, 200, 500);}
           PlaySE(se2);
           Tdeath(14,64,2,0);
           Tshot3;
        }
        if(phase==1&&GetLife<=100){
           phase-=1;
           score = 150000;
           if(lv==0||GetPoint>0){DeleteEnemyShotImmediatelyInCircle(SHOT, 224, 200, 500);}
           PlaySE(se2);
           Tdeath(14,64,2,1);
        }
        if(time>240&&GetY>500){VanishEnemy;}
        if(time>2000){VanishEnemy;}
        if(phase>=1&&time>=0){
           SetCollisionA(GetX(), GetY(), 100);
           SetCollisionA(GetX()+100, GetY(), 40);
           SetCollisionA(GetX()-100, GetY(), 40);
           SetCollisionB(GetX, GetY, 60);
           SetCollisionB(GetX+80, GetY, 32);
           SetCollisionB(GetX-80, GetY, 32);
        }
        if(time<-80){
           SetX(mapx-GetCommonData("bgx"));
           SetY(GetCommonData("bgy")-mapy);
        }
        lv=GetCommonData("rank");


        if(time==0){layer=2;}
        if(time>-80&&time<0){bairitu=1+time/80*0.3;}
        time++;
        yield;
    }
    @Finalize() {
       SetCommonData("haya",1);
    }
    @DrawLoop {
	/*SetTexture( imgEnemy );
        SetGraphicRect( 1, 1, 320, 320 );
        SetGraphicAngle(0,0,0);
        if(time<-80){SetGraphicScale(0.7,0.7);}
        if(time>-80&&time<0){SetGraphicScale(1+time/80*0.3,1+time/80*0.3);}
	DrawGraphic( GetX(), GetY() );*/
    }

    task Tshot1{
        yield;
        loop{
        let a=0;
        while(a<320){
           if(phase==1){return;}
           SetShotDirectionType(ABSOLUTE);
           CreateShotFromScript( "shota",GetX()+130, GetY(), 4.5, 90+rand(3,-3), 0, 01);
           CreateShotFromScript( "shota",GetX()-130, GetY(), 4.5, 90+rand(3,-3), 0, 01);
           PlaySE(seshot1);
           a+=30-lv*5;
           wait(30-lv*5);
        }
        wait(50);

        let a=0;
        while(a<120){
           if(phase==1){return;}
           let p1=atan2( GetPlayerY()-(GetY()+15), GetPlayerX()-(GetX()+60));
           let p2=atan2( GetPlayerY()-(GetY()+15), GetPlayerX()-(GetX()-60));
           SetShotDirectionType(ABSOLUTE);
           let b=-3-ex;
           loop(7+ex*2){
              CreateShotFromScript( "shot1",GetX()+60, GetY()+15, 4+ex, p1+b*3, 0, 05);
              CreateShotFromScript( "shot1",GetX()-60, GetY()+15, 4+ex, p2+b*3, 0, 05);
              b++;
           }
           PlaySE(seshot1);
           a+=40-lv*6;
           wait(40-lv*6);
        }
        wait(30);

        }
    }
    task Tshot3{
        yield;
        wait(30);
        let a=0;
        loop{
           if(phase==0){return;}
           SetShotDirectionType(ABSOLUTE);
           let b=-0.5;
           let p=GetAngleToPlayer;
           loop(1){
              CreateShotFromScript( "shot5",GetX(), GetY()+20, 1.8+ex/2, p-p%12+6+50, 0, 05);
              CreateShotFromScript( "shot5",GetX(), GetY()+20, 1.8+ex/2, p-p%12+6-50, 0, -05);
              b++;
           }
           PlaySE(seshot2);
           wait(70-lv*10);
           a++;
        }
    }
    task Tmove {
        while(time<-80){yield;}
        SetMovePosition02(224, 140, 80);
        wait(80);
        Tshot1;
        loop(14){
           SetMovePosition02(224+rand(40,-40), 140+rand(20,-20), 80);
           wait(80);
        }
        SetMovePosition02(224, -100, 120);
        phase=0;
        wait(120);
        VanishEnemy();
    }
   task setmove(a,t) {
      loop(t) {
         mapx+=cos(a)*0.8;mapy-=sin(a)*0.8;
         yield;
      }
   }


   task Tgazou(x1,y1,x2,y2)
   {
      let system = GetCurrentScriptDirectory~"img\system.png";
      let objenemy = Obj_Create(OBJ_EFFECT);//GtFNgIuWFNg쐬
      ObjEffect_SetTexture(objenemy, imgEnemy);//Ȃ炩̃eNX`ݒ
      ObjEffect_SetPrimitiveType(objenemy, PRIMITIVE_TRIANGLESTRIP);//v~eBu^Cvݒ
      ObjEffect_CreateVertex(objenemy, 4);//_4
      ObjEffect_SetLayer(objenemy,layer);
		
      //lp`Ɋe_̍Wݒ
      ObjEffect_SetVertexXY(objenemy, 0, -(x2-x1)*bairitu/2, -(y2-y1)*bairitu/2);
      ObjEffect_SetVertexXY(objenemy, 1, -(x2-x1)*bairitu/2,  (y2-y1)*bairitu/2);
      ObjEffect_SetVertexXY(objenemy, 2,  (x2-x1)*bairitu/2, -(y2-y1)*bairitu/2);
      ObjEffect_SetVertexXY(objenemy, 3,  (x2-x1)*bairitu/2,  (y2-y1)*bairitu/2);
		
      //lp`Ɋe_UVlݒB(0,0)-(10,10)̕B
      ObjEffect_SetVertexUV(objenemy, 0, x1, y1);
      ObjEffect_SetVertexUV(objenemy, 1, x1, y2);
      ObjEffect_SetVertexUV(objenemy, 2, x2, y1);
      ObjEffect_SetVertexUV(objenemy, 3, x2, y2);

      Obj_SetPosition(objenemy, GetX, GetY);
   
		
      while(time<=0){
         ObjEffect_SetVertexXY(objenemy, 0, -(x2-x1)*bairitu/2, -(y2-y1)*bairitu/2);
         ObjEffect_SetVertexXY(objenemy, 1, -(x2-x1)*bairitu/2,  (y2-y1)*bairitu/2);
         ObjEffect_SetVertexXY(objenemy, 2,  (x2-x1)*bairitu/2, -(y2-y1)*bairitu/2);
         ObjEffect_SetVertexXY(objenemy, 3,  (x2-x1)*bairitu/2,  (y2-y1)*bairitu/2);
         Obj_SetX(objenemy,GetX);
         Obj_SetY(objenemy,GetY);
         yield;
      }
      loop{
         Obj_SetX(objenemy,GetX);
         Obj_SetY(objenemy,GetY);
         yield;
      }
      Obj_Delete(objenemy);
   }

    #include_function".\efanction.txt"
}

   script_shot shota{//o
       let out=false;
       let gr=01;
       let arg=GetArgument;
       let ex = GetCommonData("ex");
       let lv=0;
       let time=0;
       @Initialize{
          SetDefault(gr+lv*20);
       }
       @MainLoop {
          if(GetX<20||GetX>428||GetY<20||GetY>460){
             out=true;
             End;
          }
          if(GetCommonData("kakusei")>0){
             lv=1;
             if(GetPoint==0){lv=2;SetSpeed(GetSpeed+0.04)}
          }
          else{lv=0}
          SetDefault(gr+lv*20);
          if((GetX-GetPlayerX)^2+(GetY-GetPlayerY)^2<=4){SetCommonData("gekitui",1);}
          if(time%25==10){
             let a=rand(50,-50);
             CreateShotFromScript( "shot1",GetX(), GetY(), 1.8+ex, a, 0, 03);
             CreateShotFromScript( "shot1",GetX(), GetY(), 1.8+ex, a+180, 0, 03);
          }
          time++;
       }
       @DrawLoop {
          DrawGraphicDefault();
       }
       @Finalize{
          if(out==false&&OnBomb==false){
             if(GetCommonData("kakusei")>0){
                let a=(200+GetCommonData("kinkaiten")*100);
                CreateShotFromScript( "kinka",GetX(), GetY(), a, 270, 0, 99-GetCommonData("kinkaiten")/20);
             }
             if(OnBomb==false&&GetCommonData("kakusei")==0){
                CreateShotFromScript( "isi",GetX(), GetY(), 0, 270, 0, 0);
             }
          }
       }
    }    
#include_script".\escript.txt"